@asi-ngtools/lib
Version:
This project is a little components library, simple to use, which will help you to simplify your project.
253 lines (252 loc) • 19.5 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { DefaultControlValueAccessor } from './../common/default-control-value-accessor';
import { Component, forwardRef, Input, Inject, PLATFORM_ID, Injector, Renderer2, ElementRef } from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
import * as dmyConstants from './asi-dmypicker-constants';
import * as nh from '../../native-helper';
import { isPlatformBrowser } from '@angular/common';
var AsiDmyPickerComponent = /** @class */ (function (_super) {
tslib_1.__extends(AsiDmyPickerComponent, _super);
function AsiDmyPickerComponent(platformId, injector, renderer, elementRef) {
var _this = _super.call(this) || this;
_this.platformId = platformId;
_this.injector = injector;
_this.renderer = renderer;
_this.elementRef = elementRef;
/**
* Label position
*/
_this.labelPosition = 'top';
/**
* hide day list
*/
_this.dayHidden = false;
_this.days = [];
_this.months = [];
_this.years = [];
return _this;
}
/**
* @return {?}
*/
AsiDmyPickerComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
this.renderer.addClass(this.elementRef.nativeElement, 'label-' + this.labelPosition);
if (this.isFr()) {
this.months = dmyConstants.months_fr;
this.dayLabel = 'Jour';
this.monthLabel = 'Mois';
this.yearLabel = 'Annee';
}
else {
this.months = dmyConstants.months_en;
this.dayLabel = 'Day';
this.monthLabel = 'Month';
this.yearLabel = 'Year';
}
this.initDays();
this.initYears();
};
/**
* @return {?}
*/
AsiDmyPickerComponent.prototype.isFr = /**
* @return {?}
*/
function () {
if (isPlatformBrowser(this.platformId)) {
return navigator.language === 'fr' || navigator.language === 'fr-FR';
}
else {
/** @type {?} */
var request = this.injector.get('request');
if (request && request.asiNgtools) {
/** @type {?} */
var language = request.asiNgtools.language;
if (language) {
return language.substring(0, 2) === 'fr';
}
}
return false;
}
};
/**
* @return {?}
*/
AsiDmyPickerComponent.prototype.initDays = /**
* @return {?}
*/
function () {
var _this = this;
nh.times(31, function (time) {
_this.days.push(time + 1);
});
};
/**
* @return {?}
*/
AsiDmyPickerComponent.prototype.initYears = /**
* @return {?}
*/
function () {
/** @type {?} */
var results = new Array();
/** @type {?} */
var currentYear = new Date().getFullYear();
for (var year = currentYear; year >= 1900; year--) {
results.push(year);
}
this.years = results;
};
/**
* @param {?} month
* @return {?}
*/
AsiDmyPickerComponent.prototype.onMonthChange = /**
* @param {?} month
* @return {?}
*/
function (month) {
this.value = { day: this.day, month: month != null ? month.num : null, year: this.year };
};
/**
* @param {?} year
* @return {?}
*/
AsiDmyPickerComponent.prototype.onYearChange = /**
* @param {?} year
* @return {?}
*/
function (year) {
this.value = { day: this.day, month: this.month != null ? this.month.num : null, year: year };
};
/**
* @param {?} day
* @return {?}
*/
AsiDmyPickerComponent.prototype.onDayChange = /**
* @param {?} day
* @return {?}
*/
function (day) {
this.value = { day: day, month: this.month != null ? this.month.num : null, year: this.year };
};
// Controle value accessor
/**
* @param {?} value
* @return {?}
*/
AsiDmyPickerComponent.prototype.writeValue = /**
* @param {?} value
* @return {?}
*/
function (value) {
if (value != null) {
this.day = value.day;
this.month = this.getMontFromNum(value.month);
this.year = value.year;
}
else {
this.day = null;
this.month = null;
this.year = null;
}
this._value = { day: this.day, month: this.month, year: this.year };
};
/**
* @param {?} monthNum
* @return {?}
*/
AsiDmyPickerComponent.prototype.getMontFromNum = /**
* @param {?} monthNum
* @return {?}
*/
function (monthNum) {
if (monthNum == null) {
return null;
}
return nh.find(this.months, function (month) {
return month.num === monthNum;
});
};
AsiDmyPickerComponent.decorators = [
{ type: Component, args: [{
selector: 'asi-dmypicker',
host: { 'class': 'asi-component asi-dmypicker' },
template: "<label class=\"input-label\" [translate]=\"label\"></label>\r\n<div class=\"asi-dmypicker-container\">\r\n <asi-select class=\"asi-dmy-days\" [disabled]=\"disabled\" [withEmptyValue]=\"true\" [hidden]=\"dayHidden\" [data]=\"days\" [(ngModel)]=\"day\"\r\n (ngModelChange)=\"onDayChange($event)\">\r\n <asi-empty *asiEmptyDef>{{dayLabel}}</asi-empty>\r\n <asi-selected *asiSelectedDef=\"let data\">{{data}}</asi-selected>\r\n <asi-option *asiOptionDef=\"let data\">{{data}}</asi-option>\r\n </asi-select>\r\n <asi-select class=\"asi-dmy-months\" [disabled]=\"disabled\" [withEmptyValue]=\"true\" [data]=\"months\" [(ngModel)]=\"month\" (ngModelChange)=\"onMonthChange($event)\">\r\n <asi-empty *asiEmptyDef>{{monthLabel}}</asi-empty>\r\n <asi-selected *asiSelectedDef=\"let data\">{{data.num + \" - \" + data.libelle}}</asi-selected>\r\n <asi-option *asiOptionDef=\"let data\">{{data.num + \" - \" + data.libelle}}</asi-option>\r\n </asi-select>\r\n <asi-select class=\"asi-dmy-years\" [disabled]=\"disabled\" [withEmptyValue]=\"true\" [data]=\"years\" [(ngModel)]=\"year\" (ngModelChange)=\"onYearChange($event)\">\r\n <asi-empty *asiEmptyDef>{{yearLabel}}</asi-empty>\r\n <asi-selected *asiSelectedDef=\"let data\">{{data}}</asi-selected>\r\n <asi-option *asiOptionDef=\"let data\">{{data}}</asi-option>\r\n </asi-select>\r\n</div>",
providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(function () { return AsiDmyPickerComponent; }),
multi: true
}
]
}] }
];
/** @nocollapse */
AsiDmyPickerComponent.ctorParameters = function () { return [
{ type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },
{ type: Injector },
{ type: Renderer2 },
{ type: ElementRef }
]; };
AsiDmyPickerComponent.propDecorators = {
label: [{ type: Input }],
labelPosition: [{ type: Input }],
dayHidden: [{ type: Input }]
};
return AsiDmyPickerComponent;
}(DefaultControlValueAccessor));
export { AsiDmyPickerComponent };
if (false) {
/**
* Label to display (is translated)
* @type {?}
*/
AsiDmyPickerComponent.prototype.label;
/**
* Label position
* @type {?}
*/
AsiDmyPickerComponent.prototype.labelPosition;
/**
* hide day list
* @type {?}
*/
AsiDmyPickerComponent.prototype.dayHidden;
/** @type {?} */
AsiDmyPickerComponent.prototype.day;
/** @type {?} */
AsiDmyPickerComponent.prototype.month;
/** @type {?} */
AsiDmyPickerComponent.prototype.year;
/** @type {?} */
AsiDmyPickerComponent.prototype.dayLabel;
/** @type {?} */
AsiDmyPickerComponent.prototype.monthLabel;
/** @type {?} */
AsiDmyPickerComponent.prototype.yearLabel;
/** @type {?} */
AsiDmyPickerComponent.prototype.days;
/** @type {?} */
AsiDmyPickerComponent.prototype.months;
/** @type {?} */
AsiDmyPickerComponent.prototype.years;
/** @type {?} */
AsiDmyPickerComponent.prototype.language;
/** @type {?} */
AsiDmyPickerComponent.prototype.platformId;
/** @type {?} */
AsiDmyPickerComponent.prototype.injector;
/** @type {?} */
AsiDmyPickerComponent.prototype.renderer;
/** @type {?} */
AsiDmyPickerComponent.prototype.elementRef;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNpLWRteXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYXNpLW5ndG9vbHMvbGliLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvYXNpLWRteXBpY2tlci9hc2ktZG15cGlja2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBVSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELE9BQU8sS0FBSyxZQUFZLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUxQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7SUFjVCxpREFBMkI7SUF5QnBFLCtCQUF5QyxVQUFlLEVBQVUsUUFBa0IsRUFDMUUsVUFBNkIsVUFBc0I7UUFEN0QsWUFFRSxpQkFBTyxTQUNSO1FBSHdDLGdCQUFVLEdBQVYsVUFBVSxDQUFLO1FBQVUsY0FBUSxHQUFSLFFBQVEsQ0FBVTtRQUMxRSxjQUFRLEdBQVIsUUFBUTtRQUFxQixnQkFBVSxHQUFWLFVBQVUsQ0FBWTs7Ozs4QkFwQmtDLEtBQUs7Ozs7MEJBRy9FLEtBQUs7cUJBVUosRUFBRTt1QkFDWSxFQUFFO3NCQUNmLEVBQUU7O0tBT3hCOzs7O0lBRUQsd0NBQVE7OztJQUFSO1FBQ0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNyRixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2hCLElBQUksQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQztZQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQztZQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztZQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQztTQUMxQjtRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ04sSUFBSSxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDO1lBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDO1NBQ3pCO1FBQ0QsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztLQUNsQjs7OztJQUVPLG9DQUFJOzs7O1FBQ1YsRUFBRSxDQUFDLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsS0FBSyxJQUFJLElBQUksU0FBUyxDQUFDLFFBQVEsS0FBSyxPQUFPLENBQUM7U0FDdEU7UUFBQyxJQUFJLENBQUMsQ0FBQzs7WUFFTixJQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM3QyxFQUFFLENBQUMsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7O2dCQUNsQyxJQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztnQkFDN0MsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztvQkFDYixNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDO2lCQUMxQzthQUNGO1lBQ0QsTUFBTSxDQUFDLEtBQUssQ0FBQztTQUNkOzs7OztJQUdILHdDQUFROzs7SUFBUjtRQUFBLGlCQUlDO1FBSEMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsVUFBQyxJQUFJO1lBQ2hCLEtBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztTQUMxQixDQUFDLENBQUM7S0FDSjs7OztJQUVELHlDQUFTOzs7SUFBVDs7UUFDRSxJQUFJLE9BQU8sR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDOztRQUNsQyxJQUFJLFdBQVcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzNDLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxHQUFHLFdBQVcsRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7WUFDbEQsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNwQjtRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDO0tBQ3RCOzs7OztJQUVNLDZDQUFhOzs7O2NBQUMsS0FBWTtRQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDOzs7Ozs7SUFHcEYsNENBQVk7Ozs7Y0FBQyxJQUFZO1FBQzlCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDOzs7Ozs7SUFHekYsMkNBQVc7Ozs7Y0FBQyxHQUFXO1FBQzVCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDOztJQUdoRywwQkFBMEI7Ozs7O0lBQzFCLDBDQUFVOzs7O0lBQVYsVUFBVyxLQUFVO1FBQ25CLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ2xCLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQztZQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztTQUN4QjtRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ04sSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUM7WUFDaEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDbEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7U0FDbEI7UUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztLQUNyRTs7Ozs7SUFFTyw4Q0FBYzs7OztjQUFDLFFBQWdCO1FBQ3JDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3JCLE1BQU0sQ0FBQyxJQUFJLENBQUM7U0FDYjtRQUNELE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBQyxLQUFLO1lBQ2hDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLFFBQVEsQ0FBQztTQUMvQixDQUFDLENBQUM7OztnQkExSE4sU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO29CQUN6QixJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUU7b0JBQ2hELG0yQ0FBNkM7b0JBQzdDLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLGNBQU0sT0FBQSxxQkFBcUIsRUFBckIsQ0FBcUIsQ0FBQzs0QkFDcEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUJBQ0Y7Ozs7Z0RBMEJjLE1BQU0sU0FBQyxXQUFXO2dCQTdDMkIsUUFBUTtnQkFBVSxTQUFTO2dCQUFFLFVBQVU7Ozt3QkF1QmhHLEtBQUs7Z0NBR0wsS0FBSzs0QkFHTCxLQUFLOztnQ0EvQlI7RUFzQjJDLDJCQUEyQjtTQUF6RCxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb250aCB9IGZyb20gJy4vYXNpLWRteXBpY2tlci1jb25zdGFudHMnO1xuaW1wb3J0IHsgRGVmYXVsdENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnLi8uLi9jb21tb24vZGVmYXVsdC1jb250cm9sLXZhbHVlLWFjY2Vzc29yJztcbmltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXQsIEluamVjdCwgUExBVEZPUk1fSUQsIEluamVjdG9yLCBPbkluaXQsIFJlbmRlcmVyMiwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCAqIGFzIGRteUNvbnN0YW50cyBmcm9tICcuL2FzaS1kbXlwaWNrZXItY29uc3RhbnRzJztcbmltcG9ydCAqIGFzIG5oIGZyb20gJy4uLy4uL25hdGl2ZS1oZWxwZXInO1xuXG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FzaS1kbXlwaWNrZXInLFxuICBob3N0OiB7ICdjbGFzcyc6ICdhc2ktY29tcG9uZW50IGFzaS1kbXlwaWNrZXInIH0sXG4gIHRlbXBsYXRlVXJsOiAnLi9hc2ktZG15cGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBc2lEbXlQaWNrZXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQXNpRG15UGlja2VyQ29tcG9uZW50IGV4dGVuZHMgRGVmYXVsdENvbnRyb2xWYWx1ZUFjY2Vzc29yIGltcGxlbWVudHMgT25Jbml0IHtcblxuICAvKiogTGFiZWwgdG8gZGlzcGxheSAoaXMgdHJhbnNsYXRlZCkgKi9cbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcblxuICAvKiogTGFiZWwgcG9zaXRpb24gKi9cbiAgQElucHV0KCkgbGFiZWxQb3NpdGlvbjogJ3RvcCcgfCAnbGVmdCcgfCAncmlnaHQnIHwgJ2JvdHRvbScgfCAnYm90dG9tLWNlbnRlcicgfCAndG9wLWNlbnRlcicgPSAndG9wJztcblxuICAvKiogaGlkZSBkYXkgbGlzdCAqL1xuICBASW5wdXQoKSBkYXlIaWRkZW4gPSBmYWxzZTtcblxuICBkYXk6IG51bWJlcjtcbiAgbW9udGg6IE1vbnRoO1xuICB5ZWFyOiBudW1iZXI7XG5cbiAgZGF5TGFiZWw6IHN0cmluZztcbiAgbW9udGhMYWJlbDogc3RyaW5nO1xuICB5ZWFyTGFiZWw6IHN0cmluZztcblxuICBkYXlzOiBBcnJheTxOdW1iZXI+ID0gW107XG4gIG1vbnRoczogQXJyYXk8ZG15Q29uc3RhbnRzLk1vbnRoPiA9IFtdO1xuICB5ZWFyczogQXJyYXk8TnVtYmVyPiA9IFtdO1xuXG4gIGxhbmd1YWdlOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnksIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdsYWJlbC0nICsgdGhpcy5sYWJlbFBvc2l0aW9uKTtcbiAgICBpZiAodGhpcy5pc0ZyKCkpIHtcbiAgICAgIHRoaXMubW9udGhzID0gZG15Q29uc3RhbnRzLm1vbnRoc19mcjtcbiAgICAgIHRoaXMuZGF5TGFiZWwgPSAnSm91cic7XG4gICAgICB0aGlzLm1vbnRoTGFiZWwgPSAnTW9pcyc7XG4gICAgICB0aGlzLnllYXJMYWJlbCA9ICdBbm5lZSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubW9udGhzID0gZG15Q29uc3RhbnRzLm1vbnRoc19lbjtcbiAgICAgIHRoaXMuZGF5TGFiZWwgPSAnRGF5JztcbiAgICAgIHRoaXMubW9udGhMYWJlbCA9ICdNb250aCc7XG4gICAgICB0aGlzLnllYXJMYWJlbCA9ICdZZWFyJztcbiAgICB9XG4gICAgdGhpcy5pbml0RGF5cygpO1xuICAgIHRoaXMuaW5pdFllYXJzKCk7XG4gIH1cblxuICBwcml2YXRlIGlzRnIoKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIHJldHVybiBuYXZpZ2F0b3IubGFuZ3VhZ2UgPT09ICdmcicgfHwgbmF2aWdhdG9yLmxhbmd1YWdlID09PSAnZnItRlInO1xuICAgIH0gZWxzZSB7XG5cbiAgICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLmluamVjdG9yLmdldCgncmVxdWVzdCcpO1xuICAgICAgaWYgKHJlcXVlc3QgJiYgcmVxdWVzdC5hc2lOZ3Rvb2xzKSB7XG4gICAgICAgIGNvbnN0IGxhbmd1YWdlID0gcmVxdWVzdC5hc2lOZ3Rvb2xzLmxhbmd1YWdlO1xuICAgICAgICBpZiAobGFuZ3VhZ2UpIHtcbiAgICAgICAgICByZXR1cm4gbGFuZ3VhZ2Uuc3Vic3RyaW5nKDAsIDIpID09PSAnZnInO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgaW5pdERheXMoKSB7XG4gICAgbmgudGltZXMoMzEsICh0aW1lKSA9PiB7XG4gICAgICB0aGlzLmRheXMucHVzaCh0aW1lICsgMSk7XG4gICAgfSk7XG4gIH1cblxuICBpbml0WWVhcnMoKSB7XG4gICAgbGV0IHJlc3VsdHMgPSBuZXcgQXJyYXk8bnVtYmVyPigpO1xuICAgIGxldCBjdXJyZW50WWVhciA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTtcbiAgICBmb3IgKGxldCB5ZWFyID0gY3VycmVudFllYXI7IHllYXIgPj0gMTkwMDsgeWVhci0tKSB7XG4gICAgICByZXN1bHRzLnB1c2goeWVhcik7XG4gICAgfVxuICAgIHRoaXMueWVhcnMgPSByZXN1bHRzO1xuICB9XG5cbiAgcHVibGljIG9uTW9udGhDaGFuZ2UobW9udGg6IE1vbnRoKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHsgZGF5OiB0aGlzLmRheSwgbW9udGg6IG1vbnRoICE9IG51bGwgPyBtb250aC5udW0gOiBudWxsLCB5ZWFyOiB0aGlzLnllYXIgfTtcbiAgfVxuXG4gIHB1YmxpYyBvblllYXJDaGFuZ2UoeWVhcjogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHsgZGF5OiB0aGlzLmRheSwgbW9udGg6IHRoaXMubW9udGggIT0gbnVsbCA/IHRoaXMubW9udGgubnVtIDogbnVsbCwgeWVhcjogeWVhciB9O1xuICB9XG5cbiAgcHVibGljIG9uRGF5Q2hhbmdlKGRheTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHsgZGF5OiBkYXksIG1vbnRoOiB0aGlzLm1vbnRoICE9IG51bGwgPyB0aGlzLm1vbnRoLm51bSA6IG51bGwsIHllYXI6IHRoaXMueWVhciB9O1xuICB9XG5cbiAgLy8gQ29udHJvbGUgdmFsdWUgYWNjZXNzb3JcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIHRoaXMuZGF5ID0gdmFsdWUuZGF5O1xuICAgICAgdGhpcy5tb250aCA9IHRoaXMuZ2V0TW9udEZyb21OdW0odmFsdWUubW9udGgpO1xuICAgICAgdGhpcy55ZWFyID0gdmFsdWUueWVhcjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kYXkgPSBudWxsO1xuICAgICAgdGhpcy5tb250aCA9IG51bGw7XG4gICAgICB0aGlzLnllYXIgPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLl92YWx1ZSA9IHsgZGF5OiB0aGlzLmRheSwgbW9udGg6IHRoaXMubW9udGgsIHllYXI6IHRoaXMueWVhciB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNb250RnJvbU51bShtb250aE51bTogbnVtYmVyKTogTW9udGgge1xuICAgIGlmIChtb250aE51bSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIG5oLmZpbmQodGhpcy5tb250aHMsIChtb250aCkgPT4ge1xuICAgICAgcmV0dXJuIG1vbnRoLm51bSA9PT0gbW9udGhOdW07XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==