ms-data-grid 0.0.68 → 0.0.70

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.
@@ -1,9 +1,9 @@
1
- import { Injectable } from '@angular/core';
1
+ import { DatePipe } from '@angular/common';
2
+ import { inject, Injectable } from '@angular/core';
2
3
  import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
4
  export class CommonService {
5
- constructor(datePipe) {
6
- this.datePipe = datePipe;
5
+ constructor() {
6
+ this.datePipe = inject(DatePipe);
7
7
  this.activeFilteredColumns = [];
8
8
  }
9
9
  gethasVisibleColumns(columns) {
@@ -317,13 +317,13 @@ export class CommonService {
317
317
  ? date
318
318
  : null;
319
319
  }
320
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CommonService, deps: [{ token: i1.DatePipe }], target: i0.ɵɵFactoryTarget.Injectable }); }
320
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CommonService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
321
321
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CommonService, providedIn: 'root' }); }
322
322
  }
323
323
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CommonService, decorators: [{
324
324
  type: Injectable,
325
325
  args: [{
326
- providedIn: 'root'
326
+ providedIn: 'root',
327
327
  }]
328
- }], ctorParameters: function () { return [{ type: i1.DatePipe }]; } });
329
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhLWdyaWQvc3JjL2xpYi9zZXJ2aWNlcy9jb21tb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFLM0MsTUFBTSxPQUFPLGFBQWE7SUFFeEIsWUFBb0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQTRNdEMsMEJBQXFCLEdBQVUsRUFBRSxDQUFDO0lBNU1RLENBQUM7SUFDM0Msb0JBQW9CLENBQUMsT0FBYztRQUNqQyxNQUFNLFlBQVksR0FBRyxDQUFDLE9BQWMsRUFBVyxFQUFFO1lBQy9DLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUMxQixJQUFJLEdBQUcsRUFBRSxVQUFVO29CQUFFLE9BQU8sSUFBSSxDQUFDO2dCQUNqQyxJQUFJLEdBQUcsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFO29CQUN6QixPQUFPLFlBQVksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQ25DO2dCQUNELE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7UUFDRixPQUFPLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsc0JBQXNCLENBQUMsT0FBYztRQUNuQyxNQUFNLFlBQVksR0FBRyxDQUFDLE9BQWMsRUFBVyxFQUFFO1lBQy9DLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUMxQixJQUFJLENBQUMsR0FBRyxFQUFFLFVBQVU7b0JBQUUsT0FBTyxJQUFJLENBQUM7Z0JBQ2xDLElBQUksR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUU7b0JBQ3pCLE9BQU8sWUFBWSxDQUFD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RyxDQUFDO1lBQ3ZCLENBQUMsQ0FBQyxJQUFJO1lBQ04sQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNYLENBQUM7K0dBMVhVLGFBQWE7bUhBQWIsYUFBYSxjQUZaLE1BQU07OzRGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb21tb25TZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkYXRlUGlwZTogRGF0ZVBpcGUpIHsgfVxyXG4gIGdldGhhc1Zpc2libGVDb2x1bW5zKGNvbHVtbnM6IGFueVtdKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBjaGVja1Zpc2libGUgPSAoY29sdW1uczogYW55W10pOiBib29sZWFuID0+IHtcclxuICAgICAgcmV0dXJuIGNvbHVtbnMuc29tZSgoY29sKSA9PiB7XHJcbiAgICAgICAgaWYgKGNvbD8uaXNfdmlzaWJsZSkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgaWYgKGNvbD8uY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgcmV0dXJuIGNoZWNrVmlzaWJsZShjb2wuY2hpbGRyZW4pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBjaGVja1Zpc2libGUoY29sdW1ucyk7XHJcbiAgfVxyXG5cclxuICBnZXRoYXNJblZpc2libGVDb2x1bW5zKGNvbHVtbnM6IGFueVtdKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBjaGVja1Zpc2libGUgPSAoY29sdW1uczogYW55W10pOiBib29sZWFuID0+IHtcclxuICAgICAgcmV0dXJuIGNvbHVtbnMuc29tZSgoY29sKSA9PiB7XHJcbiAgICAgICAgaWYgKCFjb2w/LmlzX3Zpc2libGUpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIGlmIChjb2w/LmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgICAgIHJldHVybiBjaGVja1Zpc2libGUoY29sLmNoaWxkcmVuKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gY2hlY2tWaXNpYmxlKGNvbHVtbnMpO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldFRvdGFsQ29sdW1uc0xlbmd0aChjb2x1bW5zOiBhbnlbXSk6IG51bWJlciB7XHJcbiAgICBsZXQgY291bnQgPSAwO1xyXG5cclxuICAgIGNvbHVtbnMuZm9yRWFjaChjb2wgPT4ge1xyXG4gICAgICBpZiAoY29sLmNoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoY29sLmNoaWxkcmVuKSAmJiBjb2wuY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgY291bnQgKz0gY29sLmNoaWxkcmVuLmxlbmd0aDsgLy8gY291bnQgY2hpbGRyZW4gaW5zdGVhZCBvZiBwYXJlbnRcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb3VudCArPSAxOyAvLyBjb3VudCBwYXJlbnQgZGlyZWN0bHlcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGNvdW50O1xyXG4gIH1cclxuXHJcbiAgZ2V0aGFzUmlnaHRQaW5uZWRDb2x1bW5zKGNvbHVtbnM6IGFueVtdKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBjaGVja1Bpbm5lZFJpZ2h0ID0gKGNvbHVtbnM6IGFueVtdKTogYm9vbGVhbiA9PiB7XHJcbiAgICAgIHJldHVybiBjb2x1bW5zLnNvbWUoKGNvbCkgPT4ge1xyXG4gICAgICAgIGlmIChjb2w/LnBpbm5lZCA9PT0gJ3JpZ2h0JyAmJiBjb2w/LmlzX3Zpc2libGUpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIGlmIChjb2w/LmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgICAgIHJldHVybiBjaGVja1Bpbm5lZFJpZ2h0KGNvbC5jaGlsZHJlbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGNoZWNrUGlubmVkUmlnaHQoY29sdW1ucyk7XHJcbiAgfVxyXG5cclxuICBnZXRoYXNMZWZ0UGlubmVkQ29sdW1ucyhjb2x1bW5zOiBhbnlbXSk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgY2hlY2tQaW5uZWRSaWdodCA9IChjb2x1bW5zOiBhbnlbXSk6IGJvb2xlYW4gPT4ge1xyXG4gICAgICByZXR1cm4gY29sdW1ucy5zb21lKChjb2wpID0+IHtcclxuICAgICAgICBpZiAoY29sPy5waW5uZWQgPT09ICdsZWZ0JyAmJiBjb2w/LmlzX3Zpc2libGUpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIGlmIChjb2w/LmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgICAgIHJldHVybiBjaGVja1Bpbm5lZFJpZ2h0KGNvbC5jaGlsZHJlbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGNoZWNrUGlubmVkUmlnaHQoY29sdW1ucyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0RXhwYW5kZWRSb3dDb3VudChkYXRhOiBhbnlbXSk6IG51bWJlciB7XHJcbiAgICBsZXQgZ3JvdXBDb3VudCA9IDA7XHJcbiAgICBsZXQgcm93Q291bnQgPSAwO1xyXG5cclxuICAgIGRhdGEuZm9yRWFjaChncm91cCA9PiB7XHJcbiAgICAgIGlmIChncm91cD8uaXNHcm91cCkge1xyXG4gICAgICAgIGdyb3VwQ291bnQrKztcclxuXHJcbiAgICAgICAgaWYgKGdyb3VwPy5pc0V4cGFuZCAmJiBBcnJheS5pc0FycmF5KGdyb3VwPy5jaGlsZHJlbikpIHtcclxuICAgICAgICAgIGdyb3VwLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKGNoaWxkLmlzR3JvdXApIHtcclxuICAgICAgICAgICAgICBpZiAoY2hpbGQuaXNFeHBhbmQgJiYgQXJyYXkuaXNBcnJheShjaGlsZC5jaGlsZHJlbikpIHtcclxuICAgICAgICAgICAgICAgIHJvd0NvdW50ICs9IGNoaWxkLmNoaWxkcmVuLmxlbmd0aDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcm93Q291bnQrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoZ3JvdXBDb3VudCA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gZGF0YS5sZW5ndGg7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGdyb3VwQ291bnQgKyByb3dDb3VudDtcclxuICB9XHJcblxyXG5cclxuICBnZXRGaWx0ZXJzRnJvbUNvbHVtbnMoY29sdW1uczogYW55W10sIGZpbHRlcnNDb25maWc6IGFueVtdKTogYW55W10ge1xyXG4gICAgY29uc3QgcmVzdWx0OiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0IGNoZWNrQ29sdW1uID0gKGNvbDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChjb2wucXVlcnk/LmNvbmRpdGlvbiA9PT0gJ25vbmUnKSB7XHJcbiAgICAgICAgY29sLnF1ZXJ5LnNlY29uZF92YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgY29sLnF1ZXJ5LnNlY29uZF9jb25kaXRpb24gPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGhhc0ZpcnN0VmFsdWUgPSBjb2wucXVlcnk/LmZpcnN0X3ZhbHVlICE9IG51bGwgJiYgY29sLnF1ZXJ5Py5maXJzdF92YWx1ZSAhPT0gXCJcIiAmJiBmaWx0ZXJzQ29uZmlnLnNvbWUoKGVsZSkgPT4gZWxlLmZpZWxkID09IGNvbC5maWVsZCk7XHJcbiAgICAgIGNvbnN0IGhhc0lkcyA9IEFycmF5LmlzQXJyYXkoY29sLnF1ZXJ5Py5faWRzKSAmJiBjb2wucXVlcnkuX2lkcy5sZW5ndGggPiAwICYmIGZpbHRlcnNDb25maWcuc29tZSgoZWxlKSA9PiBlbGUuZmllbGQgPT0gY29sLmZpZWxkKTtcclxuICAgICAgaWYgKGhhc0ZpcnN0VmFsdWUgfHwgaGFzSWRzKSB7XHJcbiAgICAgICAgcmVzdWx0LnB1c2goe1xyXG4gICAgICAgICAgc2VhcmNoOiBjb2wuc2VhcmNoID8/IFwiXCIsXHJcbiAgICAgICAgICBmaWVsZDogY29sLmZpZWxkLFxyXG4gICAgICAgICAgdHlwZTogY29sLnR5cGUsXHJcbiAgICAgICAgICBfaWRzOiBjb2wudHlwZSA9PSAnZHJvcGRvd24nID8gY29sLnF1ZXJ5Py5faWRzIDogW10sXHJcbiAgICAgICAgICBxdWVyeTogY29sLnR5cGUgPT0gJ2Ryb3Bkb3duJyA/IG51bGwgOiAoY29sPy5xdWVyeT8uZmlyc3RfdmFsdWUgPyBjb2w/LnF1ZXJ5IDogbnVsbClcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29sLmNoaWxkcmVuKSAmJiBjb2wuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGNvbC5jaGlsZHJlbi5mb3JFYWNoKGNoZWNrQ29sdW1uKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbHVtbnMuZm9yRWFjaChjaGVja0NvbHVtbik7XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIGFzeW5jIGFwcGx5RmlsdGVyc1RvQ29sdW1ucyhjb2x1bW5zOiBhbnlbXSwgZmlsdGVyczogYW55W10pOiBQcm9taXNlPGFueVtdPiB7XHJcbiAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2x1bW5zKSB7XHJcbiAgICAgIGlmICghY29sLnF1ZXJ5KSB7XHJcbiAgICAgICAgY29sLnF1ZXJ5ID0ge1xyXG4gICAgICAgICAgZmlyc3RfdmFsdWU6IG51bGwsXHJcbiAgICAgICAgICBzZWNvbmRfdmFsdWU6IG51bGwsXHJcbiAgICAgICAgICBmaXJzdF9jb25kaXRpb246IGNvbC50eXBlICE9PSAnZGF0ZScgPyAnY29udGFpbicgOiAnZXF1YWwnLFxyXG4gICAgICAgICAgc2Vjb25kX2NvbmRpdGlvbjogbnVsbCxcclxuICAgICAgICAgIGNvbmRpdGlvbjogJ25vbmUnLFxyXG4gICAgICAgICAgX2lkczogW11cclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBmaWx0ZXIgPSBmaWx0ZXJzLmZpbmQoZiA9PiBmLmZpZWxkID09PSBjb2wuZmllbGQpO1xyXG5cclxuICAgICAgaWYgKGZpbHRlcikge1xyXG4gICAgICAgIGlmIChjb2wudHlwZSA9PT0gJ2Ryb3Bkb3duJykge1xyXG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJZHMgPSBmaWx0ZXIuX2lkcyA/PyBbXTtcclxuICAgICAgICAgIGNvbnN0IGRyb3Bkb3duVmFsdWVzID0gY29sLmNvbHVtbl9kcm9wZG93bl92YWx1ZSA/PyBbXTtcclxuXHJcbiAgICAgICAgICAvLyDinIUgTWFwIGRlcGVuZGluZyBvbiBkcm9wZG93biB2YWx1ZSBzdHJ1Y3R1cmVcclxuICAgICAgICAgIGxldCBzZWxlY3RlZExhYmVsczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkcm9wZG93blZhbHVlcykgJiYgZHJvcGRvd25WYWx1ZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGRyb3Bkb3duVmFsdWVzWzBdID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgICAgIC8vIG9iamVjdC1iYXNlZCBkcm9wZG93bnM6IHsgaWQsIG5hbWUvbGFiZWwvdmFsdWUvdGV4dCB9XHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRMYWJlbHMgPSBkcm9wZG93blZhbHVlc1xyXG4gICAgICAgICAgICAgICAgLmZpbHRlcihvcHQgPT4gc2VsZWN0ZWRJZHMuaW5jbHVkZXMob3B0LmlkKSlcclxuICAgICAgICAgICAgICAgIC5tYXAob3B0ID0+IG9wdC5uYW1lID8/IG9wdC5sYWJlbCA/PyBvcHQudmFsdWUgPz8gb3B0LnRleHQgPz8gJycpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIC8vIHN0cmluZy1iYXNlZCBkcm9wZG93bnNcclxuICAgICAgICAgICAgICBzZWxlY3RlZExhYmVscyA9IGRyb3Bkb3duVmFsdWVzLmZpbHRlcihvcHQgPT4gc2VsZWN0ZWRJZHMuaW5jbHVkZXMob3B0KSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyDinIUgU3RvcmUgcmVhZGFibGUgdGV4dCBpbiBmaWx0ZXJWYWx1ZSAoY29tbWEtc2VwYXJhdGVkKVxyXG4gICAgICAgICAgY29sLmZpbHRlclZhbHVlID0gc2VsZWN0ZWRMYWJlbHMuam9pbignLCAnKTtcclxuXHJcbiAgICAgICAgICAvLyBtYWludGFpbiBxdWVyeSBzdGF0ZVxyXG4gICAgICAgICAgY29sLnF1ZXJ5Ll9pZHMgPSBzZWxlY3RlZElkcztcclxuICAgICAgICAgIGNvbC5zZWFyY2ggPSBmaWx0ZXIuc2VhcmNoID8/ICcnO1xyXG5cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8g4pyFIE5vbi1kcm9wZG93biBmaWx0ZXJzICh0ZXh0L2RhdGUvbnVtYmVyKVxyXG4gICAgICAgICAgY29sLmZpbHRlclZhbHVlID0gZmlsdGVyLnNlYXJjaCB8fCBmaWx0ZXIucXVlcnk/LmZpcnN0X3ZhbHVlIHx8ICcnO1xyXG4gICAgICAgICAgY29sLnNlYXJjaCA9IGZpbHRlci5zZWFyY2ggPz8gJyc7XHJcbiAgICAgICAgICBjb2wucXVlcnkuZmlyc3RfdmFsdWUgPSBmaWx0ZXIucXVlcnk/LmZpcnN0X3ZhbHVlID8/IG51bGw7XHJcbiAgICAgICAgICBjb2wucXVlcnkuc2Vjb25kX3ZhbHVlID0gZmlsdGVyLnF1ZXJ5Py5zZWNvbmRfdmFsdWUgPz8gbnVsbDtcclxuICAgICAgICAgIGNvbC5xdWVyeS5maXJzdF9jb25kaXRpb24gPVxyXG4gICAgICAgICAgICBmaWx0ZXIucXVlcnk/LmZpcnN0X2NvbmRpdGlvbiA/P1xyXG4gICAgICAgICAgICAoY29sLnR5cGUgIT09ICdkYXRlJyA/ICdjb250YWluJyA6ICdlcXVhbCcpO1xyXG4gICAgICAgICAgY29sLnF1ZXJ5LnNlY29uZF9jb25kaXRpb24gPSBmaWx0ZXIucXVlcnk/LnNlY29uZF9jb25kaXRpb24gPz8gbnVsbDtcclxuICAgICAgICAgIGNvbC5xdWVyeS5jb25kaXRpb24gPSBmaWx0ZXIucXVlcnk/LmNvbmRpdGlvbiA/PyAnbm9uZSc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIENsZWFyIGZpbHRlciBpZiBub3QgcHJlc2VudFxyXG4gICAgICAgIGNvbC5maWx0ZXJWYWx1ZSA9IG51bGw7XHJcbiAgICAgICAgY29sLnNlYXJjaCA9ICcnO1xyXG4gICAgICAgIGNvbC5xdWVyeS5faWRzID0gW107XHJcbiAgICAgICAgY29sLnF1ZXJ5LmZpcnN0X3ZhbHVlID0gbnVsbDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8g4pyFIFJlY3Vyc2l2ZWx5IGFwcGx5IGZvciBjaGlsZHJlblxyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pICYmIGNvbC5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgY29sLmNoaWxkcmVuID0gYXdhaXQgdGhpcy5hcHBseUZpbHRlcnNUb0NvbHVtbnMoY29sLmNoaWxkcmVuLCBmaWx0ZXJzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjb2x1bW5zO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuICBhY3RpdmVGaWx0ZXJlZENvbHVtbnM6IGFueVtdID0gW107XHJcbiAgdXBkYXRlQWN0aXZlRmlsdGVyZWRDb2x1bW5zKGNvbHVtbnM6IGFueVtdKTogYW55W10ge1xyXG4gICAgY29uc3QgY29sbGVjdEZpbHRlcmVkID0gKGNvbHM6IGFueVtdKTogYW55W10gPT4ge1xyXG4gICAgICBsZXQgcmVzdWx0OiBhbnlbXSA9IFtdO1xyXG5cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2xzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgY29sID0gY29sc1tpXTtcclxuICAgICAgICBpZiAoY29sLmNoaWxkcmVuICYmIGNvbC5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KGNvbGxlY3RGaWx0ZXJlZChjb2wuY2hpbGRyZW4pKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjb2wucXVlcnkpIHtcclxuICAgICAgICAgIGNvbnN0IGhhc0Ryb3Bkb3duRmlsdGVyID1cclxuICAgICAgICAgICAgQXJyYXkuaXNBcnJheShjb2wucXVlcnkuX2lkcykgJiYgY29sLnF1ZXJ5Ll9pZHMubGVuZ3RoID4gMDtcclxuXHJcbiAgICAgICAgICBjb25zdCBoYXNWYWx1ZUZpbHRlciA9XHJcbiAgICAgICAgICAgIChjb2wucXVlcnkuZmlyc3RfdmFsdWUgJiYgY29sLnF1ZXJ5LmZpcnN0X3ZhbHVlICE9PSAnJykgfHxcclxuICAgICAgICAgICAgKGNvbC5xdWVyeS5zZWNvbmRfdmFsdWUgJiYgY29sLnF1ZXJ5LnNlY29uZF92YWx1ZSAhPT0gJycpO1xyXG5cclxuICAgICAgICAgIGlmIChoYXNEcm9wZG93bkZpbHRlciB8fCBoYXNWYWx1ZUZpbHRlcikge1xyXG4gICAgICAgICAgICByZXN1bHQucHVzaChjb2wpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfTtcclxuICAgIHRoaXMuYWN0aXZlRmlsdGVyZWRDb2x1bW5zID0gWy4uLmNvbGxlY3RGaWx0ZXJlZChjb2x1bW5zKV07XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVGaWx0ZXJlZENvbHVtbnM7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGhhc0ZpZWxkQ2hhbmdlZChjdXJyZW50OiBhbnksIG9yaWdpbmFsOiBhbnksIHR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgJ251bWJlcic6XHJcbiAgICAgICAgcmV0dXJuIE51bWJlcihjdXJyZW50KSAhPT0gTnVtYmVyKG9yaWdpbmFsKTtcclxuXHJcbiAgICAgIGNhc2UgJ3N0cmluZyc6XHJcbiAgICAgICAgcmV0dXJuIFN0cmluZyhjdXJyZW50IHx8ICcnKSAhPT0gU3RyaW5nKG9yaWdpbmFsIHx8ICcnKTtcclxuXHJcbiAgICAgIGNhc2UgJ2Ryb3Bkb3duJzpcclxuICAgICAgICBpZiAodHlwZW9mIGN1cnJlbnQgPT09ICdvYmplY3QnICYmIHR5cGVvZiBvcmlnaW5hbCA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgIHJldHVybiBjdXJyZW50Py5pZCAhPT0gb3JpZ2luYWw/LmlkIHx8IGN1cnJlbnQ/LnZhbHVlICE9PSBvcmlnaW5hbD8udmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjdXJyZW50ICE9PSBvcmlnaW5hbDtcclxuXHJcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxyXG4gICAgICAgIHJldHVybiBCb29sZWFuKGN1cnJlbnQpICE9PSBCb29sZWFuKG9yaWdpbmFsKTtcclxuXHJcbiAgICAgIGNhc2UgJ2RhdGUnOlxyXG4gICAgICAgIGNvbnN0IGN1cnJlbnREYXRlID0gbmV3IERhdGUoY3VycmVudCkuZ2V0VGltZSgpO1xyXG4gICAgICAgIGNvbnN0IG9yaWdpbmFsRGF0ZSA9IG5ldyBEYXRlKG9yaWdpbmFsKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgcmV0dXJuIGlzTmFOKGN1cnJlbnREYXRlKSB8fCBpc05hTihvcmlnaW5hbERhdGUpXHJcbiAgICAgICAgICA/IGN1cnJlbnQgIT09IG9yaWdpbmFsXHJcbiAgICAgICAgICA6IGN1cnJlbnREYXRlICE9PSBvcmlnaW5hbERhdGU7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShjdXJyZW50KSAhPT0gSlNPTi5zdHJpbmdpZnkob3JpZ2luYWwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8vIENvcHkgY29sdW1uIGRhdGEgdG8gY29sdW1uIGRyb3Bkb3duIHZhbHVlcyBpbiBjYXNlIG9mIGFic2VuY2VcclxuICBhc3luYyBjb3B5RHJvcGRvd25EYXRhUmVjdXJzaXZlbHkoY29sdW1uczogYW55W10pOiBQcm9taXNlPGFueVtdPiB7XHJcbiAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2x1bW5zKSB7XHJcbiAgICAgIGlmIChjb2wudHlwZSA9PT0gJ2Ryb3Bkb3duJykge1xyXG4gICAgICAgIGNvbnN0IGRyb3Bkb3duVmFsdWVzID0gY29sLmNvbHVtbl9kcm9wZG93bl92YWx1ZTtcclxuICAgICAgICBjb25zdCBkYXRhVmFsdWVzID0gY29sLmNvbHVtbl9kYXRhO1xyXG5cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAoIUFycmF5LmlzQXJyYXkoZHJvcGRvd25WYWx1ZXMpIHx8IGRyb3Bkb3duVmFsdWVzLmxlbmd0aCA9PT0gMCkgJiZcclxuICAgICAgICAgIEFycmF5LmlzQXJyYXkoZGF0YVZhbHVlcykgJiZcclxuICAgICAgICAgIGRhdGFWYWx1ZXMubGVuZ3RoID4gMFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgY29sLmNvbHVtbl9kcm9wZG93bl92YWx1ZSA9IGRhdGFWYWx1ZXMubWFwKGl0ZW0gPT5cclxuICAgICAgICAgICAgdHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnXHJcbiAgICAgICAgICAgICAgPyBpdGVtXHJcbiAgICAgICAgICAgICAgOiB7IGlkOiBpdGVtLCBuYW1lOiBpdGVtLCB2YWx1ZTogaXRlbSB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29sLmNoaWxkcmVuKSAmJiBjb2wuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGNvbC5jaGlsZHJlbiA9IGF3YWl0IHRoaXMuY29weURyb3Bkb3duRGF0YVJlY3Vyc2l2ZWx5KGNvbC5jaGlsZHJlbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY29sdW1ucztcclxuICB9XHJcblxyXG5cclxuICBmb3JtYXREYXRlVmFsdWUodmFsdWU6IGFueSwgbW9tZW50Rm9ybWF0Pzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHRyeUZvcm1hdCA9IChkYXRlOiBEYXRlKSA9PiB7XHJcbiAgICAgIGNvbnN0IGFuZ3VsYXJGb3JtYXQgPSBtb21lbnRGb3JtYXRcclxuICAgICAgICA/IHRoaXMuY29udmVydE1vbWVudFRvQW5ndWxhckRhdGVGb3JtYXQobW9tZW50Rm9ybWF0KVxyXG4gICAgICAgIDogJ2RkL01NL3l5eXknO1xyXG4gICAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZGF0ZSwgYW5ndWxhckZvcm1hdCkgPz8gJy0nO1xyXG4gICAgfTtcclxuXHJcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlICYmICFpc05hTih2YWx1ZS5nZXRUaW1lKCkpKSB7XHJcbiAgICAgIHJldHVybiB0cnlGb3JtYXQodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIGxldCBjbGVhbmVkVmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9eREQvLCAnMDEnKTtcclxuXHJcbiAgICAgIGNvbnN0IHBhcnNlZERETU0gPSB0aGlzLnBhcnNlRERNTVlZWVkoY2xlYW5lZFZhbHVlKTtcclxuICAgICAgaWYgKHBhcnNlZERETU0pIHJldHVybiB0cnlGb3JtYXQocGFyc2VkRERNTSk7XHJcblxyXG4gICAgICBpZiAoIWlzTmFOKERhdGUucGFyc2UoY2xlYW5lZFZhbHVlKSkpIHtcclxuICAgICAgICByZXR1cm4gdHJ5Rm9ybWF0KG5ldyBEYXRlKGNsZWFuZWRWYWx1ZSkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmICFpc05hTihEYXRlLnBhcnNlKHZhbHVlKSkpIHtcclxuICAgICAgcmV0dXJuIHRyeUZvcm1hdChuZXcgRGF0ZSh2YWx1ZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh2YWx1ZT8ubmFtZSB8fCB2YWx1ZT8udmFsdWUpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlLnZhbHVlID8/IHZhbHVlLm5hbWUgPz8gJy0nO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh2YWx1ZSAhPSBudWxsKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcclxuXHJcbiAgICByZXR1cm4gJy0nO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcbiAgcHJpdmF0ZSBjb252ZXJ0TW9tZW50VG9Bbmd1bGFyRGF0ZUZvcm1hdChtb21lbnRGb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoIW1vbWVudEZvcm1hdCkgcmV0dXJuICdtZWRpdW1EYXRlJztcclxuXHJcbiAgICByZXR1cm4gbW9tZW50Rm9ybWF0XHJcbiAgICAgIC5yZXBsYWNlKC9ERC9nLCAnZGQnKVxyXG4gICAgICAucmVwbGFjZSgvRC9nLCAnZCcpXHJcbiAgICAgIC5yZXBsYWNlKC9ZWVlZL2csICd5eXl5JylcclxuICAgICAgLnJlcGxhY2UoL1lZL2csICd5eScpXHJcbiAgICAgIC5yZXBsYWNlKC9NTU1NL2csICdNTU1NJylcclxuICAgICAgLnJlcGxhY2UoL01NTS9nLCAnTU1NJylcclxuICAgICAgLnJlcGxhY2UoL01NL2csICdNTScpXHJcbiAgICAgIC5yZXBsYWNlKC9NL2csICdNJylcclxuICAgICAgLnJlcGxhY2UoL2RkZGQvZywgJ0VFRUUnKVxyXG4gICAgICAucmVwbGFjZSgvZGRkL2csICdFRUUnKVxyXG4gICAgICAucmVwbGFjZSgvSEgvZywgJ0hIJylcclxuICAgICAgLnJlcGxhY2UoL0gvZywgJ0gnKVxyXG4gICAgICAucmVwbGFjZSgvaGgvZywgJ2hoJylcclxuICAgICAgLnJlcGxhY2UoL2gvZywgJ2gnKVxyXG4gICAgICAucmVwbGFjZSgvbW0vZywgJ21tJylcclxuICAgICAgLnJlcGxhY2UoL20vZywgJ20nKVxyXG4gICAgICAucmVwbGFjZSgvc3MvZywgJ3NzJylcclxuICAgICAgLnJlcGxhY2UoL3MvZywgJ3MnKVxyXG4gICAgICAucmVwbGFjZSgvQS9nLCAnYScpXHJcbiAgICAgIC5yZXBsYWNlKC9hL2csICdhJyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBhcnNlRERNTVlZWVkodmFsdWU6IHN0cmluZyk6IERhdGUgfCBudWxsIHtcclxuICAgIGNvbnN0IG1hdGNoID0gdmFsdWUubWF0Y2goL14oXFxkezJ9KVxcLyhcXGR7Mn0pXFwvKFxcZHs0fSkkLyk7XHJcbiAgICBpZiAoIW1hdGNoKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBjb25zdCBkYXkgPSArbWF0Y2hbMV07XHJcbiAgICBjb25zdCBtb250aCA9ICttYXRjaFsyXSAtIDE7XHJcbiAgICBjb25zdCB5ZWFyID0gK21hdGNoWzNdO1xyXG5cclxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZGF5KTtcclxuXHJcbiAgICByZXR1cm4gKGRhdGUuZ2V0RnVsbFllYXIoKSA9PT0geWVhciAmJlxyXG4gICAgICBkYXRlLmdldE1vbnRoKCkgPT09IG1vbnRoICYmXHJcbiAgICAgIGRhdGUuZ2V0RGF0ZSgpID09PSBkYXkpXHJcbiAgICAgID8gZGF0ZVxyXG4gICAgICA6IG51bGw7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuXHJcblxyXG5cclxuIl19
328
+ }], ctorParameters: function () { return []; } });
329
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhLWdyaWQvc3JjL2xpYi9zZXJ2aWNlcy9jb21tb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBS25ELE1BQU0sT0FBTyxhQUFhO0lBR3hCO1FBRFEsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQTZNcEMsMEJBQXFCLEdBQVUsRUFBRSxDQUFDO0lBNU1sQixDQUFDO0lBQ2pCLG9CQUFvQixDQUFDLE9BQWM7UUFDakMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxPQUFjLEVBQVcsRUFBRTtZQUMvQyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDMUIsSUFBSSxHQUFHLEVBQUUsVUFBVTtvQkFBRSxPQUFPLElBQUksQ0FBQztnQkFDakMsSUFBSSxHQUFHLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRTtvQkFDekIsT0FBTyxZQUFZLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUNuQztnQkFDRCxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDO1FBQ0YsT0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELHNCQUFzQixDQUFDLE9BQWM7UUFDbkMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxPQUFjLEVBQVcsRUFBRTtZQUMvQyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDMUIsSUFBSSxDQUFDLEdBQUcsRUFBRSxVQUFVO29CQUFFLE9BQU8sSUFBSSxDQUFDO2dCQUNsQyxJ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LFFBQVEsRUFBRSxLQUFLLEtBQUs7WUFDekIsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEdBQUcsQ0FBQztZQUN2QixDQUFDLENBQUMsSUFBSTtZQUNOLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDWCxDQUFDOytHQTNYVSxhQUFhO21IQUFiLGFBQWEsY0FGWixNQUFNOzs0RkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29tbW9uU2VydmljZSB7XHJcblxyXG4gIHByaXZhdGUgZGF0ZVBpcGUgPSBpbmplY3QoRGF0ZVBpcGUpOyBcclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG4gIGdldGhhc1Zpc2libGVDb2x1bW5zKGNvbHVtbnM6IGFueVtdKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBjaGVja1Zpc2libGUgPSAoY29sdW1uczogYW55W10pOiBib29sZWFuID0+IHtcclxuICAgICAgcmV0dXJuIGNvbHVtbnMuc29tZSgoY29sKSA9PiB7XHJcbiAgICAgICAgaWYgKGNvbD8uaXNfdmlzaWJsZSkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgaWYgKGNvbD8uY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgcmV0dXJuIGNoZWNrVmlzaWJsZShjb2wuY2hpbGRyZW4pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBjaGVja1Zpc2libGUoY29sdW1ucyk7XHJcbiAgfVxyXG5cclxuICBnZXRoYXNJblZpc2libGVDb2x1bW5zKGNvbHVtbnM6IGFueVtdKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBjaGVja1Zpc2libGUgPSAoY29sdW1uczogYW55W10pOiBib29sZWFuID0+IHtcclxuICAgICAgcmV0dXJuIGNvbHVtbnMuc29tZSgoY29sKSA9PiB7XHJcbiAgICAgICAgaWYgKCFjb2w/LmlzX3Zpc2libGUpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIGlmIChjb2w/LmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgICAgIHJldHVybiBjaGVja1Zpc2libGUoY29sLmNoaWxkcmVuKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gY2hlY2tWaXNpYmxlKGNvbHVtbnMpO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldFRvdGFsQ29sdW1uc0xlbmd0aChjb2x1bW5zOiBhbnlbXSk6IG51bWJlciB7XHJcbiAgICBsZXQgY291bnQgPSAwO1xyXG5cclxuICAgIGNvbHVtbnMuZm9yRWFjaChjb2wgPT4ge1xyXG4gICAgICBpZiAoY29sLmNoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoY29sLmNoaWxkcmVuKSAmJiBjb2wuY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgY291bnQgKz0gY29sLmNoaWxkcmVuLmxlbmd0aDsgLy8gY291bnQgY2hpbGRyZW4gaW5zdGVhZCBvZiBwYXJlbnRcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb3VudCArPSAxOyAvLyBjb3VudCBwYXJlbnQgZGlyZWN0bHlcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGNvdW50O1xyXG4gIH1cclxuXHJcbiAgZ2V0aGFzUmlnaHRQaW5uZWRDb2x1bW5zKGNvbHVtbnM6IGFueVtdKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBjaGVja1Bpbm5lZFJpZ2h0ID0gKGNvbHVtbnM6IGFueVtdKTogYm9vbGVhbiA9PiB7XHJcbiAgICAgIHJldHVybiBjb2x1bW5zLnNvbWUoKGNvbCkgPT4ge1xyXG4gICAgICAgIGlmIChjb2w/LnBpbm5lZCA9PT0gJ3JpZ2h0JyAmJiBjb2w/LmlzX3Zpc2libGUpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIGlmIChjb2w/LmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgICAgIHJldHVybiBjaGVja1Bpbm5lZFJpZ2h0KGNvbC5jaGlsZHJlbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGNoZWNrUGlubmVkUmlnaHQoY29sdW1ucyk7XHJcbiAgfVxyXG5cclxuICBnZXRoYXNMZWZ0UGlubmVkQ29sdW1ucyhjb2x1bW5zOiBhbnlbXSk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgY2hlY2tQaW5uZWRSaWdodCA9IChjb2x1bW5zOiBhbnlbXSk6IGJvb2xlYW4gPT4ge1xyXG4gICAgICByZXR1cm4gY29sdW1ucy5zb21lKChjb2wpID0+IHtcclxuICAgICAgICBpZiAoY29sPy5waW5uZWQgPT09ICdsZWZ0JyAmJiBjb2w/LmlzX3Zpc2libGUpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIGlmIChjb2w/LmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgICAgIHJldHVybiBjaGVja1Bpbm5lZFJpZ2h0KGNvbC5jaGlsZHJlbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGNoZWNrUGlubmVkUmlnaHQoY29sdW1ucyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0RXhwYW5kZWRSb3dDb3VudChkYXRhOiBhbnlbXSk6IG51bWJlciB7XHJcbiAgICBsZXQgZ3JvdXBDb3VudCA9IDA7XHJcbiAgICBsZXQgcm93Q291bnQgPSAwO1xyXG5cclxuICAgIGRhdGEuZm9yRWFjaChncm91cCA9PiB7XHJcbiAgICAgIGlmIChncm91cD8uaXNHcm91cCkge1xyXG4gICAgICAgIGdyb3VwQ291bnQrKztcclxuXHJcbiAgICAgICAgaWYgKGdyb3VwPy5pc0V4cGFuZCAmJiBBcnJheS5pc0FycmF5KGdyb3VwPy5jaGlsZHJlbikpIHtcclxuICAgICAgICAgIGdyb3VwLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKGNoaWxkLmlzR3JvdXApIHtcclxuICAgICAgICAgICAgICBpZiAoY2hpbGQuaXNFeHBhbmQgJiYgQXJyYXkuaXNBcnJheShjaGlsZC5jaGlsZHJlbikpIHtcclxuICAgICAgICAgICAgICAgIHJvd0NvdW50ICs9IGNoaWxkLmNoaWxkcmVuLmxlbmd0aDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcm93Q291bnQrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoZ3JvdXBDb3VudCA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gZGF0YS5sZW5ndGg7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGdyb3VwQ291bnQgKyByb3dDb3VudDtcclxuICB9XHJcblxyXG5cclxuICBnZXRGaWx0ZXJzRnJvbUNvbHVtbnMoY29sdW1uczogYW55W10sIGZpbHRlcnNDb25maWc6IGFueVtdKTogYW55W10ge1xyXG4gICAgY29uc3QgcmVzdWx0OiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0IGNoZWNrQ29sdW1uID0gKGNvbDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChjb2wucXVlcnk/LmNvbmRpdGlvbiA9PT0gJ25vbmUnKSB7XHJcbiAgICAgICAgY29sLnF1ZXJ5LnNlY29uZF92YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgY29sLnF1ZXJ5LnNlY29uZF9jb25kaXRpb24gPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGhhc0ZpcnN0VmFsdWUgPSBjb2wucXVlcnk/LmZpcnN0X3ZhbHVlICE9IG51bGwgJiYgY29sLnF1ZXJ5Py5maXJzdF92YWx1ZSAhPT0gXCJcIiAmJiBmaWx0ZXJzQ29uZmlnLnNvbWUoKGVsZSkgPT4gZWxlLmZpZWxkID09IGNvbC5maWVsZCk7XHJcbiAgICAgIGNvbnN0IGhhc0lkcyA9IEFycmF5LmlzQXJyYXkoY29sLnF1ZXJ5Py5faWRzKSAmJiBjb2wucXVlcnkuX2lkcy5sZW5ndGggPiAwICYmIGZpbHRlcnNDb25maWcuc29tZSgoZWxlKSA9PiBlbGUuZmllbGQgPT0gY29sLmZpZWxkKTtcclxuICAgICAgaWYgKGhhc0ZpcnN0VmFsdWUgfHwgaGFzSWRzKSB7XHJcbiAgICAgICAgcmVzdWx0LnB1c2goe1xyXG4gICAgICAgICAgc2VhcmNoOiBjb2wuc2VhcmNoID8/IFwiXCIsXHJcbiAgICAgICAgICBmaWVsZDogY29sLmZpZWxkLFxyXG4gICAgICAgICAgdHlwZTogY29sLnR5cGUsXHJcbiAgICAgICAgICBfaWRzOiBjb2wudHlwZSA9PSAnZHJvcGRvd24nID8gY29sLnF1ZXJ5Py5faWRzIDogW10sXHJcbiAgICAgICAgICBxdWVyeTogY29sLnR5cGUgPT0gJ2Ryb3Bkb3duJyA/IG51bGwgOiAoY29sPy5xdWVyeT8uZmlyc3RfdmFsdWUgPyBjb2w/LnF1ZXJ5IDogbnVsbClcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29sLmNoaWxkcmVuKSAmJiBjb2wuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGNvbC5jaGlsZHJlbi5mb3JFYWNoKGNoZWNrQ29sdW1uKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbHVtbnMuZm9yRWFjaChjaGVja0NvbHVtbik7XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIGFzeW5jIGFwcGx5RmlsdGVyc1RvQ29sdW1ucyhjb2x1bW5zOiBhbnlbXSwgZmlsdGVyczogYW55W10pOiBQcm9taXNlPGFueVtdPiB7XHJcbiAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2x1bW5zKSB7XHJcbiAgICAgIGlmICghY29sLnF1ZXJ5KSB7XHJcbiAgICAgICAgY29sLnF1ZXJ5ID0ge1xyXG4gICAgICAgICAgZmlyc3RfdmFsdWU6IG51bGwsXHJcbiAgICAgICAgICBzZWNvbmRfdmFsdWU6IG51bGwsXHJcbiAgICAgICAgICBmaXJzdF9jb25kaXRpb246IGNvbC50eXBlICE9PSAnZGF0ZScgPyAnY29udGFpbicgOiAnZXF1YWwnLFxyXG4gICAgICAgICAgc2Vjb25kX2NvbmRpdGlvbjogbnVsbCxcclxuICAgICAgICAgIGNvbmRpdGlvbjogJ25vbmUnLFxyXG4gICAgICAgICAgX2lkczogW11cclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBmaWx0ZXIgPSBmaWx0ZXJzLmZpbmQoZiA9PiBmLmZpZWxkID09PSBjb2wuZmllbGQpO1xyXG5cclxuICAgICAgaWYgKGZpbHRlcikge1xyXG4gICAgICAgIGlmIChjb2wudHlwZSA9PT0gJ2Ryb3Bkb3duJykge1xyXG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJZHMgPSBmaWx0ZXIuX2lkcyA/PyBbXTtcclxuICAgICAgICAgIGNvbnN0IGRyb3Bkb3duVmFsdWVzID0gY29sLmNvbHVtbl9kcm9wZG93bl92YWx1ZSA/PyBbXTtcclxuXHJcbiAgICAgICAgICAvLyDinIUgTWFwIGRlcGVuZGluZyBvbiBkcm9wZG93biB2YWx1ZSBzdHJ1Y3R1cmVcclxuICAgICAgICAgIGxldCBzZWxlY3RlZExhYmVsczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkcm9wZG93blZhbHVlcykgJiYgZHJvcGRvd25WYWx1ZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGRyb3Bkb3duVmFsdWVzWzBdID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgICAgIC8vIG9iamVjdC1iYXNlZCBkcm9wZG93bnM6IHsgaWQsIG5hbWUvbGFiZWwvdmFsdWUvdGV4dCB9XHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRMYWJlbHMgPSBkcm9wZG93blZhbHVlc1xyXG4gICAgICAgICAgICAgICAgLmZpbHRlcihvcHQgPT4gc2VsZWN0ZWRJZHMuaW5jbHVkZXMob3B0LmlkKSlcclxuICAgICAgICAgICAgICAgIC5tYXAob3B0ID0+IG9wdC5uYW1lID8/IG9wdC5sYWJlbCA/PyBvcHQudmFsdWUgPz8gb3B0LnRleHQgPz8gJycpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIC8vIHN0cmluZy1iYXNlZCBkcm9wZG93bnNcclxuICAgICAgICAgICAgICBzZWxlY3RlZExhYmVscyA9IGRyb3Bkb3duVmFsdWVzLmZpbHRlcihvcHQgPT4gc2VsZWN0ZWRJZHMuaW5jbHVkZXMob3B0KSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyDinIUgU3RvcmUgcmVhZGFibGUgdGV4dCBpbiBmaWx0ZXJWYWx1ZSAoY29tbWEtc2VwYXJhdGVkKVxyXG4gICAgICAgICAgY29sLmZpbHRlclZhbHVlID0gc2VsZWN0ZWRMYWJlbHMuam9pbignLCAnKTtcclxuXHJcbiAgICAgICAgICAvLyBtYWludGFpbiBxdWVyeSBzdGF0ZVxyXG4gICAgICAgICAgY29sLnF1ZXJ5Ll9pZHMgPSBzZWxlY3RlZElkcztcclxuICAgICAgICAgIGNvbC5zZWFyY2ggPSBmaWx0ZXIuc2VhcmNoID8/ICcnO1xyXG5cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8g4pyFIE5vbi1kcm9wZG93biBmaWx0ZXJzICh0ZXh0L2RhdGUvbnVtYmVyKVxyXG4gICAgICAgICAgY29sLmZpbHRlclZhbHVlID0gZmlsdGVyLnNlYXJjaCB8fCBmaWx0ZXIucXVlcnk/LmZpcnN0X3ZhbHVlIHx8ICcnO1xyXG4gICAgICAgICAgY29sLnNlYXJjaCA9IGZpbHRlci5zZWFyY2ggPz8gJyc7XHJcbiAgICAgICAgICBjb2wucXVlcnkuZmlyc3RfdmFsdWUgPSBmaWx0ZXIucXVlcnk/LmZpcnN0X3ZhbHVlID8/IG51bGw7XHJcbiAgICAgICAgICBjb2wucXVlcnkuc2Vjb25kX3ZhbHVlID0gZmlsdGVyLnF1ZXJ5Py5zZWNvbmRfdmFsdWUgPz8gbnVsbDtcclxuICAgICAgICAgIGNvbC5xdWVyeS5maXJzdF9jb25kaXRpb24gPVxyXG4gICAgICAgICAgICBmaWx0ZXIucXVlcnk/LmZpcnN0X2NvbmRpdGlvbiA/P1xyXG4gICAgICAgICAgICAoY29sLnR5cGUgIT09ICdkYXRlJyA/ICdjb250YWluJyA6ICdlcXVhbCcpO1xyXG4gICAgICAgICAgY29sLnF1ZXJ5LnNlY29uZF9jb25kaXRpb24gPSBmaWx0ZXIucXVlcnk/LnNlY29uZF9jb25kaXRpb24gPz8gbnVsbDtcclxuICAgICAgICAgIGNvbC5xdWVyeS5jb25kaXRpb24gPSBmaWx0ZXIucXVlcnk/LmNvbmRpdGlvbiA/PyAnbm9uZSc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIENsZWFyIGZpbHRlciBpZiBub3QgcHJlc2VudFxyXG4gICAgICAgIGNvbC5maWx0ZXJWYWx1ZSA9IG51bGw7XHJcbiAgICAgICAgY29sLnNlYXJjaCA9ICcnO1xyXG4gICAgICAgIGNvbC5xdWVyeS5faWRzID0gW107XHJcbiAgICAgICAgY29sLnF1ZXJ5LmZpcnN0X3ZhbHVlID0gbnVsbDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8g4pyFIFJlY3Vyc2l2ZWx5IGFwcGx5IGZvciBjaGlsZHJlblxyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pICYmIGNvbC5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgY29sLmNoaWxkcmVuID0gYXdhaXQgdGhpcy5hcHBseUZpbHRlcnNUb0NvbHVtbnMoY29sLmNoaWxkcmVuLCBmaWx0ZXJzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjb2x1bW5zO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuICBhY3RpdmVGaWx0ZXJlZENvbHVtbnM6IGFueVtdID0gW107XHJcbiAgdXBkYXRlQWN0aXZlRmlsdGVyZWRDb2x1bW5zKGNvbHVtbnM6IGFueVtdKTogYW55W10ge1xyXG4gICAgY29uc3QgY29sbGVjdEZpbHRlcmVkID0gKGNvbHM6IGFueVtdKTogYW55W10gPT4ge1xyXG4gICAgICBsZXQgcmVzdWx0OiBhbnlbXSA9IFtdO1xyXG5cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2xzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgY29sID0gY29sc1tpXTtcclxuICAgICAgICBpZiAoY29sLmNoaWxkcmVuICYmIGNvbC5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KGNvbGxlY3RGaWx0ZXJlZChjb2wuY2hpbGRyZW4pKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjb2wucXVlcnkpIHtcclxuICAgICAgICAgIGNvbnN0IGhhc0Ryb3Bkb3duRmlsdGVyID1cclxuICAgICAgICAgICAgQXJyYXkuaXNBcnJheShjb2wucXVlcnkuX2lkcykgJiYgY29sLnF1ZXJ5Ll9pZHMubGVuZ3RoID4gMDtcclxuXHJcbiAgICAgICAgICBjb25zdCBoYXNWYWx1ZUZpbHRlciA9XHJcbiAgICAgICAgICAgIChjb2wucXVlcnkuZmlyc3RfdmFsdWUgJiYgY29sLnF1ZXJ5LmZpcnN0X3ZhbHVlICE9PSAnJykgfHxcclxuICAgICAgICAgICAgKGNvbC5xdWVyeS5zZWNvbmRfdmFsdWUgJiYgY29sLnF1ZXJ5LnNlY29uZF92YWx1ZSAhPT0gJycpO1xyXG5cclxuICAgICAgICAgIGlmIChoYXNEcm9wZG93bkZpbHRlciB8fCBoYXNWYWx1ZUZpbHRlcikge1xyXG4gICAgICAgICAgICByZXN1bHQucHVzaChjb2wpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfTtcclxuICAgIHRoaXMuYWN0aXZlRmlsdGVyZWRDb2x1bW5zID0gWy4uLmNvbGxlY3RGaWx0ZXJlZChjb2x1bW5zKV07XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVGaWx0ZXJlZENvbHVtbnM7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGhhc0ZpZWxkQ2hhbmdlZChjdXJyZW50OiBhbnksIG9yaWdpbmFsOiBhbnksIHR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgJ251bWJlcic6XHJcbiAgICAgICAgcmV0dXJuIE51bWJlcihjdXJyZW50KSAhPT0gTnVtYmVyKG9yaWdpbmFsKTtcclxuXHJcbiAgICAgIGNhc2UgJ3N0cmluZyc6XHJcbiAgICAgICAgcmV0dXJuIFN0cmluZyhjdXJyZW50IHx8ICcnKSAhPT0gU3RyaW5nKG9yaWdpbmFsIHx8ICcnKTtcclxuXHJcbiAgICAgIGNhc2UgJ2Ryb3Bkb3duJzpcclxuICAgICAgICBpZiAodHlwZW9mIGN1cnJlbnQgPT09ICdvYmplY3QnICYmIHR5cGVvZiBvcmlnaW5hbCA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgIHJldHVybiBjdXJyZW50Py5pZCAhPT0gb3JpZ2luYWw/LmlkIHx8IGN1cnJlbnQ/LnZhbHVlICE9PSBvcmlnaW5hbD8udmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjdXJyZW50ICE9PSBvcmlnaW5hbDtcclxuXHJcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxyXG4gICAgICAgIHJldHVybiBCb29sZWFuKGN1cnJlbnQpICE9PSBCb29sZWFuKG9yaWdpbmFsKTtcclxuXHJcbiAgICAgIGNhc2UgJ2RhdGUnOlxyXG4gICAgICAgIGNvbnN0IGN1cnJlbnREYXRlID0gbmV3IERhdGUoY3VycmVudCkuZ2V0VGltZSgpO1xyXG4gICAgICAgIGNvbnN0IG9yaWdpbmFsRGF0ZSA9IG5ldyBEYXRlKG9yaWdpbmFsKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgcmV0dXJuIGlzTmFOKGN1cnJlbnREYXRlKSB8fCBpc05hTihvcmlnaW5hbERhdGUpXHJcbiAgICAgICAgICA/IGN1cnJlbnQgIT09IG9yaWdpbmFsXHJcbiAgICAgICAgICA6IGN1cnJlbnREYXRlICE9PSBvcmlnaW5hbERhdGU7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShjdXJyZW50KSAhPT0gSlNPTi5zdHJpbmdpZnkob3JpZ2luYWwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8vIENvcHkgY29sdW1uIGRhdGEgdG8gY29sdW1uIGRyb3Bkb3duIHZhbHVlcyBpbiBjYXNlIG9mIGFic2VuY2VcclxuICBhc3luYyBjb3B5RHJvcGRvd25EYXRhUmVjdXJzaXZlbHkoY29sdW1uczogYW55W10pOiBQcm9taXNlPGFueVtdPiB7XHJcbiAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2x1bW5zKSB7XHJcbiAgICAgIGlmIChjb2wudHlwZSA9PT0gJ2Ryb3Bkb3duJykge1xyXG4gICAgICAgIGNvbnN0IGRyb3Bkb3duVmFsdWVzID0gY29sLmNvbHVtbl9kcm9wZG93bl92YWx1ZTtcclxuICAgICAgICBjb25zdCBkYXRhVmFsdWVzID0gY29sLmNvbHVtbl9kYXRhO1xyXG5cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAoIUFycmF5LmlzQXJyYXkoZHJvcGRvd25WYWx1ZXMpIHx8IGRyb3Bkb3duVmFsdWVzLmxlbmd0aCA9PT0gMCkgJiZcclxuICAgICAgICAgIEFycmF5LmlzQXJyYXkoZGF0YVZhbHVlcykgJiZcclxuICAgICAgICAgIGRhdGFWYWx1ZXMubGVuZ3RoID4gMFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgY29sLmNvbHVtbl9kcm9wZG93bl92YWx1ZSA9IGRhdGFWYWx1ZXMubWFwKGl0ZW0gPT5cclxuICAgICAgICAgICAgdHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnXHJcbiAgICAgICAgICAgICAgPyBpdGVtXHJcbiAgICAgICAgICAgICAgOiB7IGlkOiBpdGVtLCBuYW1lOiBpdGVtLCB2YWx1ZTogaXRlbSB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29sLmNoaWxkcmVuKSAmJiBjb2wuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGNvbC5jaGlsZHJlbiA9IGF3YWl0IHRoaXMuY29weURyb3Bkb3duRGF0YVJlY3Vyc2l2ZWx5KGNvbC5jaGlsZHJlbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY29sdW1ucztcclxuICB9XHJcblxyXG5cclxuICBmb3JtYXREYXRlVmFsdWUodmFsdWU6IGFueSwgbW9tZW50Rm9ybWF0Pzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHRyeUZvcm1hdCA9IChkYXRlOiBEYXRlKSA9PiB7XHJcbiAgICAgIGNvbnN0IGFuZ3VsYXJGb3JtYXQgPSBtb21lbnRGb3JtYXRcclxuICAgICAgICA/IHRoaXMuY29udmVydE1vbWVudFRvQW5ndWxhckRhdGVGb3JtYXQobW9tZW50Rm9ybWF0KVxyXG4gICAgICAgIDogJ2RkL01NL3l5eXknO1xyXG4gICAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZGF0ZSwgYW5ndWxhckZvcm1hdCkgPz8gJy0nO1xyXG4gICAgfTtcclxuXHJcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlICYmICFpc05hTih2YWx1ZS5nZXRUaW1lKCkpKSB7XHJcbiAgICAgIHJldHVybiB0cnlGb3JtYXQodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIGxldCBjbGVhbmVkVmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9eREQvLCAnMDEnKTtcclxuXHJcbiAgICAgIGNvbnN0IHBhcnNlZERETU0gPSB0aGlzLnBhcnNlRERNTVlZWVkoY2xlYW5lZFZhbHVlKTtcclxuICAgICAgaWYgKHBhcnNlZERETU0pIHJldHVybiB0cnlGb3JtYXQocGFyc2VkRERNTSk7XHJcblxyXG4gICAgICBpZiAoIWlzTmFOKERhdGUucGFyc2UoY2xlYW5lZFZhbHVlKSkpIHtcclxuICAgICAgICByZXR1cm4gdHJ5Rm9ybWF0KG5ldyBEYXRlKGNsZWFuZWRWYWx1ZSkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmICFpc05hTihEYXRlLnBhcnNlKHZhbHVlKSkpIHtcclxuICAgICAgcmV0dXJuIHRyeUZvcm1hdChuZXcgRGF0ZSh2YWx1ZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh2YWx1ZT8ubmFtZSB8fCB2YWx1ZT8udmFsdWUpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlLnZhbHVlID8/IHZhbHVlLm5hbWUgPz8gJy0nO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh2YWx1ZSAhPSBudWxsKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcclxuXHJcbiAgICByZXR1cm4gJy0nO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcbiAgcHJpdmF0ZSBjb252ZXJ0TW9tZW50VG9Bbmd1bGFyRGF0ZUZvcm1hdChtb21lbnRGb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoIW1vbWVudEZvcm1hdCkgcmV0dXJuICdtZWRpdW1EYXRlJztcclxuXHJcbiAgICByZXR1cm4gbW9tZW50Rm9ybWF0XHJcbiAgICAgIC5yZXBsYWNlKC9ERC9nLCAnZGQnKVxyXG4gICAgICAucmVwbGFjZSgvRC9nLCAnZCcpXHJcbiAgICAgIC5yZXBsYWNlKC9ZWVlZL2csICd5eXl5JylcclxuICAgICAgLnJlcGxhY2UoL1lZL2csICd5eScpXHJcbiAgICAgIC5yZXBsYWNlKC9NTU1NL2csICdNTU1NJylcclxuICAgICAgLnJlcGxhY2UoL01NTS9nLCAnTU1NJylcclxuICAgICAgLnJlcGxhY2UoL01NL2csICdNTScpXHJcbiAgICAgIC5yZXBsYWNlKC9NL2csICdNJylcclxuICAgICAgLnJlcGxhY2UoL2RkZGQvZywgJ0VFRUUnKVxyXG4gICAgICAucmVwbGFjZSgvZGRkL2csICdFRUUnKVxyXG4gICAgICAucmVwbGFjZSgvSEgvZywgJ0hIJylcclxuICAgICAgLnJlcGxhY2UoL0gvZywgJ0gnKVxyXG4gICAgICAucmVwbGFjZSgvaGgvZywgJ2hoJylcclxuICAgICAgLnJlcGxhY2UoL2gvZywgJ2gnKVxyXG4gICAgICAucmVwbGFjZSgvbW0vZywgJ21tJylcclxuICAgICAgLnJlcGxhY2UoL20vZywgJ20nKVxyXG4gICAgICAucmVwbGFjZSgvc3MvZywgJ3NzJylcclxuICAgICAgLnJlcGxhY2UoL3MvZywgJ3MnKVxyXG4gICAgICAucmVwbGFjZSgvQS9nLCAnYScpXHJcbiAgICAgIC5yZXBsYWNlKC9hL2csICdhJyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBhcnNlRERNTVlZWVkodmFsdWU6IHN0cmluZyk6IERhdGUgfCBudWxsIHtcclxuICAgIGNvbnN0IG1hdGNoID0gdmFsdWUubWF0Y2goL14oXFxkezJ9KVxcLyhcXGR7Mn0pXFwvKFxcZHs0fSkkLyk7XHJcbiAgICBpZiAoIW1hdGNoKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBjb25zdCBkYXkgPSArbWF0Y2hbMV07XHJcbiAgICBjb25zdCBtb250aCA9ICttYXRjaFsyXSAtIDE7XHJcbiAgICBjb25zdCB5ZWFyID0gK21hdGNoWzNdO1xyXG5cclxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZGF5KTtcclxuXHJcbiAgICByZXR1cm4gKGRhdGUuZ2V0RnVsbFllYXIoKSA9PT0geWVhciAmJlxyXG4gICAgICBkYXRlLmdldE1vbnRoKCkgPT09IG1vbnRoICYmXHJcbiAgICAgIGRhdGUuZ2V0RGF0ZSgpID09PSBkYXkpXHJcbiAgICAgID8gZGF0ZVxyXG4gICAgICA6IG51bGw7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuXHJcblxyXG5cclxuIl19