@sumaris-net/ngx-components 2.8.1-beta3 → 2.8.1-beta4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -18,7 +18,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
18
18
  type: Pipe,
19
19
  args: [{ name: 'propertyGet' }]
20
20
  }] });
21
- export class PropertyFormatPipe {
21
+ class AbstractValuePipe {
22
22
  dateFormat;
23
23
  translate;
24
24
  _i18nYes;
@@ -27,17 +27,19 @@ export class PropertyFormatPipe {
27
27
  this.dateFormat = dateFormat;
28
28
  this.translate = translate;
29
29
  }
30
- transform(obj, keyOrDefinition) {
31
- if (!obj)
32
- return '';
33
- const definition = keyOrDefinition && typeof keyOrDefinition === 'object' && keyOrDefinition;
34
- const key = definition?.key || keyOrDefinition;
35
- if (!key) {
36
- // Should never occur
37
- console.warn("Invalid use of pipe 'formatProperty': missing key or definition");
38
- return '';
30
+ get i18nYes() {
31
+ if (!this._i18nYes) {
32
+ this._i18nYes = this.translate.instant('COMMON.YES');
39
33
  }
40
- const value = obj[key];
34
+ return this._i18nYes;
35
+ }
36
+ get i18nNo() {
37
+ if (!this._i18nNo) {
38
+ this._i18nNo = this.translate.instant('COMMON.NO');
39
+ }
40
+ return this._i18nNo;
41
+ }
42
+ valueToString(value, definition) {
41
43
  if (isNil(value))
42
44
  return value;
43
45
  const type = definition?.type || typeof value;
@@ -49,17 +51,17 @@ export class PropertyFormatPipe {
49
51
  case 'enum': {
50
52
  // DEBUG
51
53
  // console.debug('formatProperty by definition (type='enum', key=' +definition.key+ '):', value );
52
- const item = (definition.values || [value]).find((item) => (isNotNil(item.key) ? item.key : item) === value);
54
+ const item = (definition?.values || [value]).find((item) => (isNotNil(item.key) ? item.key : item) === value);
53
55
  return item.value || item;
54
56
  }
55
57
  case 'entity': {
56
- if (definition.autocomplete?.displayWith) {
57
- return definition.autocomplete.displayWith(value);
58
+ if (definition?.autocomplete?.displayWith) {
59
+ return definition?.autocomplete.displayWith(value);
58
60
  }
59
- return joinPropertiesPath(value, definition.autocomplete?.attributes || ['label', 'name']) || undefined;
61
+ return joinPropertiesPath(value, definition?.autocomplete?.attributes || ['label', 'name']) || undefined;
60
62
  }
61
63
  case 'boolean':
62
- return obj === 1 || obj === true || obj === 'true' ? this.i18nYes : this.i18nNo;
64
+ return value === 1 || value === true || value === 'true' ? this.i18nYes : this.i18nNo;
63
65
  case 'integer':
64
66
  case 'double':
65
67
  case 'string':
@@ -67,17 +69,23 @@ export class PropertyFormatPipe {
67
69
  return value;
68
70
  }
69
71
  }
70
- get i18nYes() {
71
- if (!this._i18nYes) {
72
- this._i18nYes = this.translate.instant('COMMON.YES');
73
- }
74
- return this._i18nYes;
72
+ }
73
+ export class PropertyFormatPipe extends AbstractValuePipe {
74
+ constructor(dateFormat, translate) {
75
+ super(dateFormat, translate);
75
76
  }
76
- get i18nNo() {
77
- if (!this._i18nNo) {
78
- this._i18nNo = this.translate.instant('COMMON.NO');
77
+ transform(obj, keyOrDefinition) {
78
+ if (!obj)
79
+ return '';
80
+ const definition = keyOrDefinition && typeof keyOrDefinition === 'object' && keyOrDefinition;
81
+ const key = definition?.key || keyOrDefinition;
82
+ if (!key) {
83
+ // Should never occur
84
+ console.warn("Invalid use of pipe 'formatProperty': missing key or definition");
85
+ return '';
79
86
  }
80
- return this._i18nNo;
87
+ const value = obj[key];
88
+ return this.valueToString(value, definition);
81
89
  }
82
90
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: PropertyFormatPipe, deps: [{ token: i1.DateFormatService }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe });
83
91
  static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.4", ngImport: i0, type: PropertyFormatPipe, name: "propertyFormat" });
@@ -92,4 +100,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
92
100
  type: Injectable,
93
101
  args: [{ providedIn: 'root' }]
94
102
  }], ctorParameters: () => [{ type: i1.DateFormatService }, { type: i2.TranslateService }] });
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHkucGlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9waXBlcy9wcm9wZXJ0eS5waXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7QUFNdEYsTUFBTSxPQUFPLGVBQWU7SUFDMUIsU0FBUyxDQUFDLEdBQVEsRUFBRSxJQUEyRTtRQUM3RixPQUFPLGlCQUFpQixDQUN0QixHQUFHO1FBQ0gsT0FBTztRQUNQLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDM0UsZ0JBQWdCO1FBQ2hCLElBQUksSUFBSyxJQUFZLEVBQUUsWUFBWSxDQUNwQyxDQUFDO0lBQ0osQ0FBQzt1R0FUVSxlQUFlO3FHQUFmLGVBQWU7OzJGQUFmLGVBQWU7a0JBRDNCLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFOztBQWlCN0IsTUFBTSxPQUFPLGtCQUFrQjtJQUtuQjtJQUNBO0lBTEYsUUFBUSxDQUFTO0lBQ2pCLE9BQU8sQ0FBUztJQUV4QixZQUNVLFVBQTZCLEVBQzdCLFNBQTJCO1FBRDNCLGVBQVUsR0FBVixVQUFVLENBQW1CO1FBQzdCLGNBQVMsR0FBVCxTQUFTLENBQWtCO0lBQ2xDLENBQUM7SUFFSixTQUFTLENBQUMsR0FBUSxFQUFFLGVBQTZDO1FBQy9ELElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDcEIsTUFBTSxVQUFVLEdBQUcsZUFB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QWtCLGNBREwsTUFBTTs7MkZBQ25CLGtCQUFrQjtrQkFKOUIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsZ0JBQWdCO2lCQUN2Qjs7a0JBQ0EsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXRQcm9wZXJ0eUJ5UGF0aCwgaXNOaWwsIGlzTm90TmlsLCBqb2luUHJvcGVydGllc1BhdGggfSBmcm9tICcuLi9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgRGF0ZUZvcm1hdFNlcnZpY2UgfSBmcm9tICcuL2RhdGUtZm9ybWF0LnBpcGUnO1xuaW1wb3J0IHsgRm9ybUZpZWxkRGVmaW5pdGlvbiB9IGZyb20gJy4uL2Zvcm0vZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5AUGlwZSh7IG5hbWU6ICdwcm9wZXJ0eUdldCcgfSlcbmV4cG9ydCBjbGFzcyBQcm9wZXJ0eUdldFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKG9iajogYW55LCBhcmdzOiBzdHJpbmcgfCBBcnJheTxzdHJpbmcgfCBudW1iZXI+IHwgeyBrZXk6IHN0cmluZzsgZGVmYXVsdFZhbHVlPzogYW55IH0pOiBhbnkge1xuICAgIHJldHVybiBnZXRQcm9wZXJ0eUJ5UGF0aChcbiAgICAgIG9iaixcbiAgICAgIC8vIFBhdGhcbiAgICAgIGFyZ3MgJiYgKHR5cGVvZiBhcmdzID09PSAnc3RyaW5nJyB8fCBBcnJheS5pc0FycmF5KGFyZ3MpID8gYXJncyA6IGFyZ3Mua2V5KSxcbiAgICAgIC8vIERlZmF1bHQgdmFsdWVcbiAgICAgIGFyZ3MgJiYgKGFyZ3MgYXMgYW55KT8uZGVmYXVsdFZhbHVlXG4gICAgKTtcbiAgfVxufVxuXG5AUGlwZSh7XG4gIG5hbWU6ICdwcm9wZXJ0eUZvcm1hdCcsXG59KVxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBQcm9wZXJ0eUZvcm1hdFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgcHJpdmF0ZSBfaTE4blllczogc3RyaW5nO1xuICBwcml2YXRlIF9pMThuTm86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGRhdGVGb3JtYXQ6IERhdGVGb3JtYXRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge31cblxuICB0cmFuc2Zvcm0ob2JqOiBhbnksIGtleU9yRGVmaW5pdGlvbjogc3RyaW5nIHwgRm9ybUZpZWxkRGVmaW5pdGlvbik6IHN0cmluZyB8IFByb21pc2U8c3RyaW5nPiB7XG4gICAgaWYgKCFvYmopIHJldHVybiAnJztcbiAgICBjb25zdCBkZWZpbml0aW9uID0ga2V5T3JEZWZpbml0aW9uICYmIHR5cGVvZiBrZXlPckRlZmluaXRpb24gPT09ICdvYmplY3QnICYmIGtleU9yRGVmaW5pdGlvbjtcbiAgICBjb25zdCBrZXkgPSBkZWZpbml0aW9uPy5rZXkgfHwgKGtleU9yRGVmaW5pdGlvbiBhcyBzdHJpbmcpO1xuICAgIGlmICgha2V5KSB7XG4gICAgICAvLyBTaG91bGQgbmV2ZXIgb2NjdXJcbiAgICAgIGNvbnNvbGUud2FybihcIkludmFsaWQgdXNlIG9mIHBpcGUgJ2Zvcm1hdFByb3BlcnR5JzogbWlzc2luZyBrZXkgb3IgZGVmaW5pdGlvblwiKTtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgY29uc3QgdmFsdWUgPSBvYmpba2V5XTtcbiAgICBpZiAoaXNOaWwodmFsdWUpKSByZXR1cm4gdmFsdWU7XG4gICAgY29uc3QgdHlwZSA9IGRlZmluaXRpb24/LnR5cGUgfHwgdHlwZW9mIHZhbHVlO1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGVGb3JtYXQudHJhbnNmb3JtKHZhbHVlKSBhcyBzdHJpbmc7XG4gICAgICBjYXNlICdkYXRlVGltZSc6XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGVGb3JtYXQudHJhbnNmb3JtKHZhbHVlLCB7IHRpbWU6IHRydWUgfSkgYXMgc3RyaW5nO1xuICAgICAgY2FzZSAnZW51bSc6IHtcbiAgICAgICAgLy8gREVCVUdcbiAgICAgICAgLy8gY29uc29sZS5kZWJ1ZygnZm9ybWF0UHJvcGVydHkgYnkgZGVmaW5pdGlvbiAodHlwZT0nZW51bScsIGtleT0nICtkZWZpbml0aW9uLmtleSsgJyk6JywgdmFsdWUgKTtcbiAgICAgICAgY29uc3QgaXRlbSA9ICgoZGVmaW5pdGlvbi52YWx1ZXMgYXMgYW55W10pIHx8IFt2YWx1ZV0pLmZpbmQoKGl0ZW0pID0+IChpc05vdE5pbChpdGVtLmtleSkgPyBpdGVtLmtleSA6IGl0ZW0pID09PSB2YWx1ZSk7XG4gICAgICAgIHJldHVybiBpdGVtLnZhbHVlIHx8IGl0ZW07XG4gICAgICB9XG4gICAgICBjYXNlICdlbnRpdHknOiB7XG4gICAgICAgIGlmIChkZWZpbml0aW9uLmF1dG9jb21wbGV0ZT8uZGlzcGxheVdpdGgpIHtcbiAgICAgICAgICByZXR1cm4gZGVmaW5pdGlvbi5hdXRvY29tcGxldGUuZGlzcGxheVdpdGgodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBqb2luUHJvcGVydGllc1BhdGgodmFsdWUsIGRlZmluaXRpb24uYXV0b2NvbXBsZXRlPy5hdHRyaWJ1dGVzIHx8IFsnbGFiZWwnLCAnbmFtZSddKSB8fCB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgcmV0dXJuIG9iaiA9PT0gMSB8fCBvYmogPT09IHRydWUgfHwgb2JqID09PSAndHJ1ZScgPyB0aGlzLmkxOG5ZZXMgOiB0aGlzLmkxOG5ObztcbiAgICAgIGNhc2UgJ2ludGVnZXInOlxuICAgICAgY2FzZSAnZG91YmxlJzpcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGkxOG5ZZXMoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuX2kxOG5ZZXMpIHtcbiAgICAgIHRoaXMuX2kxOG5ZZXMgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdDT01NT04uWUVTJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9pMThuWWVzO1xuICB9XG5cbiAgZ2V0IGkxOG5ObygpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5faTE4bk5vKSB7XG4gICAgICB0aGlzLl9pMThuTm8gPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdDT01NT04uTk8nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2kxOG5ObztcbiAgfVxufVxuIl19
103
+ export class ValueFormatPipe extends AbstractValuePipe {
104
+ constructor(dateFormat, translate) {
105
+ super(dateFormat, translate);
106
+ }
107
+ transform(value, definition) {
108
+ return this.valueToString(value, definition);
109
+ }
110
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ValueFormatPipe, deps: [{ token: i1.DateFormatService }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe });
111
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.4", ngImport: i0, type: ValueFormatPipe, name: "valueFormat" });
112
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ValueFormatPipe, providedIn: 'root' });
113
+ }
114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ValueFormatPipe, decorators: [{
115
+ type: Pipe,
116
+ args: [{
117
+ name: 'valueFormat',
118
+ }]
119
+ }, {
120
+ type: Injectable,
121
+ args: [{ providedIn: 'root' }]
122
+ }], ctorParameters: () => [{ type: i1.DateFormatService }, { type: i2.TranslateService }] });
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHkucGlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9waXBlcy9wcm9wZXJ0eS5waXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7QUFNdEYsTUFBTSxPQUFPLGVBQWU7SUFDMUIsU0FBUyxDQUFDLEdBQVEsRUFBRSxJQUEyRTtRQUM3RixPQUFPLGlCQUFpQixDQUN0QixHQUFHO1FBQ0gsT0FBTztRQUNQLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDM0UsZ0JBQWdCO1FBQ2hCLElBQUksSUFBSyxJQUFZLEVBQUUsWUFBWSxDQUNwQyxDQUFDO0lBQ0osQ0FBQzt1R0FUVSxlQUFlO3FHQUFmLGVBQWU7OzJGQUFmLGVBQWU7a0JBRDNCLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFOztBQWE3QixNQUFlLGlCQUFpQjtJQUtwQjtJQUNBO0lBTEYsUUFBUSxDQUFTO0lBQ2pCLE9BQU8sQ0FBUztJQUV4QixZQUNVLFVBQTZCLEVBQzdCLFNBQTJCO1FBRDNCLGVBQVUsR0FBVixVQUFVLENBQW1CO1FBQzdCLGNBQVMsR0FBVCxTQUFTLENBQWtCO0lBQ2xDLENBQUM7SUFFSixJQUFJLE9BQU87UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxP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QUMsSUFBSSxDQUFDLGlFQUFpRSxDQUFDLENBQUM7WUFDaEYsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBQ0QsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDL0MsQ0FBQzt1R0FoQlUsa0JBQWtCO3FHQUFsQixrQkFBa0I7MkdBQWxCLGtCQUFrQixjQURMLE1BQU07OzJGQUNuQixrQkFBa0I7a0JBSjlCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGdCQUFnQjtpQkFDdkI7O2tCQUNBLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztBQXdCbEMsTUFBTSxPQUFPLGVBQWdCLFNBQVEsaUJBQWlCO0lBQ3BELFlBQVksVUFBNkIsRUFBRSxTQUEyQjtRQUNwRSxLQUFLLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBVSxFQUFFLFVBQStCO1FBQ25ELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDL0MsQ0FBQzt1R0FQVSxlQUFlO3FHQUFmLGVBQWU7MkdBQWYsZUFBZSxjQURGLE1BQU07OzJGQUNuQixlQUFlO2tCQUozQixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxhQUFhO2lCQUNwQjs7a0JBQ0EsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXRQcm9wZXJ0eUJ5UGF0aCwgaXNOaWwsIGlzTm90TmlsLCBqb2luUHJvcGVydGllc1BhdGggfSBmcm9tICcuLi9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgRGF0ZUZvcm1hdFNlcnZpY2UgfSBmcm9tICcuL2RhdGUtZm9ybWF0LnBpcGUnO1xuaW1wb3J0IHsgRm9ybUZpZWxkRGVmaW5pdGlvbiB9IGZyb20gJy4uL2Zvcm0vZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5AUGlwZSh7IG5hbWU6ICdwcm9wZXJ0eUdldCcgfSlcbmV4cG9ydCBjbGFzcyBQcm9wZXJ0eUdldFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKG9iajogYW55LCBhcmdzOiBzdHJpbmcgfCBBcnJheTxzdHJpbmcgfCBudW1iZXI+IHwgeyBrZXk6IHN0cmluZzsgZGVmYXVsdFZhbHVlPzogYW55IH0pOiBhbnkge1xuICAgIHJldHVybiBnZXRQcm9wZXJ0eUJ5UGF0aChcbiAgICAgIG9iaixcbiAgICAgIC8vIFBhdGhcbiAgICAgIGFyZ3MgJiYgKHR5cGVvZiBhcmdzID09PSAnc3RyaW5nJyB8fCBBcnJheS5pc0FycmF5KGFyZ3MpID8gYXJncyA6IGFyZ3Mua2V5KSxcbiAgICAgIC8vIERlZmF1bHQgdmFsdWVcbiAgICAgIGFyZ3MgJiYgKGFyZ3MgYXMgYW55KT8uZGVmYXVsdFZhbHVlXG4gICAgKTtcbiAgfVxufVxuXG5hYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFZhbHVlUGlwZSB7XG4gIHByaXZhdGUgX2kxOG5ZZXM6IHN0cmluZztcbiAgcHJpdmF0ZSBfaTE4bk5vOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkYXRlRm9ybWF0OiBEYXRlRm9ybWF0U2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZVxuICApIHt9XG5cbiAgZ2V0IGkxOG5ZZXMoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuX2kxOG5ZZXMpIHtcbiAgICAgIHRoaXMuX2kxOG5ZZXMgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdDT01NT04uWUVTJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9pMThuWWVzO1xuICB9XG5cbiAgZ2V0IGkxOG5ObygpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5faTE4bk5vKSB7XG4gICAgICB0aGlzLl9pMThuTm8gPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdDT01NT04uTk8nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2kxOG5ObztcbiAgfVxuXG4gIHByb3RlY3RlZCB2YWx1ZVRvU3RyaW5nKHZhbHVlOiBhbnksIGRlZmluaXRpb24/OiBGb3JtRmllbGREZWZpbml0aW9uKTogc3RyaW5nIHtcbiAgICBpZiAoaXNOaWwodmFsdWUpKSByZXR1cm4gdmFsdWU7XG4gICAgY29uc3QgdHlwZSA9IGRlZmluaXRpb24/LnR5cGUgfHwgdHlwZW9mIHZhbHVlO1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGVGb3JtYXQudHJhbnNmb3JtKHZhbHVlKSBhcyBzdHJpbmc7XG4gICAgICBjYXNlICdkYXRlVGltZSc6XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGVGb3JtYXQudHJhbnNmb3JtKHZhbHVlLCB7IHRpbWU6IHRydWUgfSkgYXMgc3RyaW5nO1xuICAgICAgY2FzZSAnZW51bSc6IHtcbiAgICAgICAgLy8gREVCVUdcbiAgICAgICAgLy8gY29uc29sZS5kZWJ1ZygnZm9ybWF0UHJvcGVydHkgYnkgZGVmaW5pdGlvbiAodHlwZT0nZW51bScsIGtleT0nICtkZWZpbml0aW9uLmtleSsgJyk6JywgdmFsdWUgKTtcbiAgICAgICAgY29uc3QgaXRlbSA9ICgoZGVmaW5pdGlvbj8udmFsdWVzIGFzIGFueVtdKSB8fCBbdmFsdWVdKS5maW5kKChpdGVtKSA9PiAoaXNOb3ROaWwoaXRlbS5rZXkpID8gaXRlbS5rZXkgOiBpdGVtKSA9PT0gdmFsdWUpO1xuICAgICAgICByZXR1cm4gaXRlbS52YWx1ZSB8fCBpdGVtO1xuICAgICAgfVxuICAgICAgY2FzZSAnZW50aXR5Jzoge1xuICAgICAgICBpZiAoZGVmaW5pdGlvbj8uYXV0b2NvbXBsZXRlPy5kaXNwbGF5V2l0aCkge1xuICAgICAgICAgIHJldHVybiBkZWZpbml0aW9uPy5hdXRvY29tcGxldGUuZGlzcGxheVdpdGgodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBqb2luUHJvcGVydGllc1BhdGgodmFsdWUsIGRlZmluaXRpb24/LmF1dG9jb21wbGV0ZT8uYXR0cmlidXRlcyB8fCBbJ2xhYmVsJywgJ25hbWUnXSkgfHwgdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gMSB8fCB2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gJ3RydWUnID8gdGhpcy5pMThuWWVzIDogdGhpcy5pMThuTm87XG4gICAgICBjYXNlICdpbnRlZ2VyJzpcbiAgICAgIGNhc2UgJ2RvdWJsZSc6XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfVxufVxuXG5AUGlwZSh7XG4gIG5hbWU6ICdwcm9wZXJ0eUZvcm1hdCcsXG59KVxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBQcm9wZXJ0eUZvcm1hdFBpcGUgZXh0ZW5kcyBBYnN0cmFjdFZhbHVlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBjb25zdHJ1Y3RvcihkYXRlRm9ybWF0OiBEYXRlRm9ybWF0U2VydmljZSwgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7XG4gICAgc3VwZXIoZGF0ZUZvcm1hdCwgdHJhbnNsYXRlKTtcbiAgfVxuXG4gIHRyYW5zZm9ybShvYmo6IGFueSwga2V5T3JEZWZpbml0aW9uOiBzdHJpbmcgfCBGb3JtRmllbGREZWZpbml0aW9uKTogc3RyaW5nIHwgUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBpZiAoIW9iaikgcmV0dXJuICcnO1xuICAgIGNvbnN0IGRlZmluaXRpb24gPSBrZXlPckRlZmluaXRpb24gJiYgdHlwZW9mIGtleU9yRGVmaW5pdGlvbiA9PT0gJ29iamVjdCcgJiYga2V5T3JEZWZpbml0aW9uO1xuICAgIGNvbnN0IGtleSA9IGRlZmluaXRpb24/LmtleSB8fCAoa2V5T3JEZWZpbml0aW9uIGFzIHN0cmluZyk7XG4gICAgaWYgKCFrZXkpIHtcbiAgICAgIC8vIFNob3VsZCBuZXZlciBvY2N1clxuICAgICAgY29uc29sZS53YXJuKFwiSW52YWxpZCB1c2Ugb2YgcGlwZSAnZm9ybWF0UHJvcGVydHknOiBtaXNzaW5nIGtleSBvciBkZWZpbml0aW9uXCIpO1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZSA9IG9ialtrZXldO1xuICAgIHJldHVybiB0aGlzLnZhbHVlVG9TdHJpbmcodmFsdWUsIGRlZmluaXRpb24pO1xuICB9XG59XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3ZhbHVlRm9ybWF0Jyxcbn0pXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFZhbHVlRm9ybWF0UGlwZSBleHRlbmRzIEFic3RyYWN0VmFsdWVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIGNvbnN0cnVjdG9yKGRhdGVGb3JtYXQ6IERhdGVGb3JtYXRTZXJ2aWNlLCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgICBzdXBlcihkYXRlRm9ybWF0LCB0cmFuc2xhdGUpO1xuICB9XG5cbiAgdHJhbnNmb3JtKHZhbHVlOiBhbnksIGRlZmluaXRpb246IEZvcm1GaWVsZERlZmluaXRpb24pOiBzdHJpbmcgfCBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlVG9TdHJpbmcodmFsdWUsIGRlZmluaXRpb24pO1xuICB9XG59XG4iXX0=