lucide-angular 0.412.0 → 0.413.0

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.
Files changed (33) hide show
  1. package/aliases.d.ts +2 -0
  2. package/esm2020/aliases.mjs +4 -1
  3. package/esm2020/icons/dam.mjs +28 -0
  4. package/esm2020/icons/dog.mjs +8 -15
  5. package/esm2020/icons/key-square.mjs +11 -5
  6. package/esm2020/icons/lucide-icons.mjs +2 -1
  7. package/esm2020/lib/lucide-angular.component.mjs +21 -18
  8. package/esm2020/src/icons/aliases.mjs +4 -1
  9. package/esm2020/src/icons/icons/dam.mjs +28 -0
  10. package/esm2020/src/icons/icons/dog.mjs +8 -15
  11. package/esm2020/src/icons/icons/key-square.mjs +11 -5
  12. package/esm2020/src/icons/icons/lucide-icons.mjs +2 -1
  13. package/esm2020/src/icons/lib/lucide-angular.component.mjs +21 -18
  14. package/fesm2015/lucide-angular-src-icons.mjs +67 -37
  15. package/fesm2015/lucide-angular-src-icons.mjs.map +1 -1
  16. package/fesm2015/lucide-angular.mjs +67 -37
  17. package/fesm2015/lucide-angular.mjs.map +1 -1
  18. package/fesm2020/lucide-angular-src-icons.mjs +66 -36
  19. package/fesm2020/lucide-angular-src-icons.mjs.map +1 -1
  20. package/fesm2020/lucide-angular.mjs +66 -36
  21. package/fesm2020/lucide-angular.mjs.map +1 -1
  22. package/icons/dam.d.ts +14 -0
  23. package/icons/dog.d.ts +1 -1
  24. package/icons/key-square.d.ts +1 -1
  25. package/icons/lucide-icons.d.ts +1 -0
  26. package/lib/lucide-angular.component.d.ts +3 -2
  27. package/package.json +1 -1
  28. package/src/icons/aliases.d.ts +2 -0
  29. package/src/icons/icons/dam.d.ts +14 -0
  30. package/src/icons/icons/dog.d.ts +1 -1
  31. package/src/icons/icons/key-square.d.ts +1 -1
  32. package/src/icons/icons/lucide-icons.d.ts +1 -0
  33. package/src/icons/lib/lucide-angular.component.d.ts +3 -2
@@ -17,9 +17,6 @@ export class LucideAngularComponent {
17
17
  this.absoluteStrokeWidth = false;
18
18
  this.defaultSize = defaultAttributes.height;
19
19
  }
20
- set img(img) {
21
- this.name = img;
22
- }
23
20
  get size() {
24
21
  return this._size ?? this.iconConfig.size;
25
22
  }
@@ -43,23 +40,29 @@ export class LucideAngularComponent {
43
40
  }
44
41
  }
45
42
  ngOnChanges(changes) {
46
- this.color = this.color ?? this.iconConfig.color;
47
- this.size = this.parseNumber(this.size ?? this.iconConfig.size);
48
- this.strokeWidth = this.parseNumber(this.strokeWidth ?? this.iconConfig.strokeWidth);
49
- this.absoluteStrokeWidth = this.absoluteStrokeWidth ?? this.iconConfig.absoluteStrokeWidth;
50
- if (changes.name || changes.img) {
51
- const name = changes.img?.currentValue ?? changes.name?.currentValue;
52
- if (typeof name === 'string') {
53
- const icoOfName = this.getIcon(this.toPascalCase(name));
43
+ if (changes.name ||
44
+ changes.img ||
45
+ changes.color ||
46
+ changes.size ||
47
+ changes.absoluteStrokeWidth ||
48
+ changes.strokeWidth ||
49
+ changes.class) {
50
+ this.color = this.color ?? this.iconConfig.color;
51
+ this.size = this.parseNumber(this.size ?? this.iconConfig.size);
52
+ this.strokeWidth = this.parseNumber(this.strokeWidth ?? this.iconConfig.strokeWidth);
53
+ this.absoluteStrokeWidth = this.absoluteStrokeWidth ?? this.iconConfig.absoluteStrokeWidth;
54
+ const nameOrIcon = this.img ?? this.name;
55
+ if (typeof nameOrIcon === 'string') {
56
+ const icoOfName = this.getIcon(this.toPascalCase(nameOrIcon));
54
57
  if (icoOfName) {
55
58
  this.replaceElement(icoOfName);
56
59
  }
57
60
  else {
58
- throw new Error(`The "${name}" icon has not been provided by any available icon providers.`);
61
+ throw new Error(`The "${nameOrIcon}" icon has not been provided by any available icon providers.`);
59
62
  }
60
63
  }
61
- else if (Array.isArray(name)) {
62
- this.replaceElement(name);
64
+ else if (Array.isArray(nameOrIcon)) {
65
+ this.replaceElement(nameOrIcon);
63
66
  }
64
67
  else {
65
68
  throw new Error(`No icon name or image has been provided.`);
@@ -133,7 +136,7 @@ export class LucideAngularComponent {
133
136
  }
134
137
  }
135
138
  LucideAngularComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: LucideAngularComponent, deps: [{ token: ElementRef }, { token: Renderer2 }, { token: ChangeDetectorRef }, { token: LUCIDE_ICONS }, { token: LucideIconConfig }], target: i0.ɵɵFactoryTarget.Component });
136
- LucideAngularComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: LucideAngularComponent, selector: "lucide-angular, lucide-icon, i-lucide, span-lucide", inputs: { class: "class", name: "name", color: "color", absoluteStrokeWidth: "absoluteStrokeWidth", img: "img", size: "size", strokeWidth: "strokeWidth" }, usesOnChanges: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
139
+ LucideAngularComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: LucideAngularComponent, selector: "lucide-angular, lucide-icon, i-lucide, span-lucide", inputs: { class: "class", name: "name", img: "img", color: "color", absoluteStrokeWidth: "absoluteStrokeWidth", size: "size", strokeWidth: "strokeWidth" }, usesOnChanges: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
137
140
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: LucideAngularComponent, decorators: [{
138
141
  type: Component,
139
142
  args: [{
@@ -159,15 +162,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
159
162
  type: Input
160
163
  }], name: [{
161
164
  type: Input
165
+ }], img: [{
166
+ type: Input
162
167
  }], color: [{
163
168
  type: Input
164
169
  }], absoluteStrokeWidth: [{
165
170
  type: Input
166
- }], img: [{
167
- type: Input
168
171
  }], size: [{
169
172
  type: Input
170
173
  }], strokeWidth: [{
171
174
  type: Input
172
175
  }] } });
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHVjaWRlLWFuZ3VsYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9sdWNpZGUtYW5ndWxhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBRUwsU0FBUyxHQUVWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8saUJBQWlCLE1BQU0sdUNBQXVDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFlBQVksRUFBK0IsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBa0J4RCxNQUFNLFVBQVUsV0FBVyxDQUFDLE1BQWMsRUFBRSxRQUFRLEdBQUcsQ0FBQztJQUN0RCxPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFNRCxNQUFNLE9BQU8sc0JBQXNCO0lBT2pDLFlBQzhCLElBQWdCLEVBQ2pCLFFBQW1CLEVBQ1gsY0FBaUMsRUFDdEMsYUFBNEMsRUFDeEMsVUFBNEI7UUFKbEMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNqQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ1gsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ3RDLGtCQUFhLEdBQWIsYUFBYSxDQUErQjtRQUN4QyxlQUFVLEdBQVYsVUFBVSxDQUFrQjtRQVJ2RCx3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFVbkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQWEsR0FBRyxDQUFDLEdBQW1CO1FBQ2xDLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0lBQ2xCLENB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LEtBQUs7c0JBQWIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBYU8sR0FBRztzQkFBZixLQUFLO2dCQVVPLElBQUk7c0JBQWhCLEtBQUs7Z0JBY08sV0FBVztzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgUmVuZGVyZXIyLFxuICBTaW1wbGVDaGFuZ2UsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTHVjaWRlSWNvbkRhdGEgfSBmcm9tICcuLi9pY29ucy90eXBlcyc7XG5pbXBvcnQgZGVmYXVsdEF0dHJpYnV0ZXMgZnJvbSAnLi4vaWNvbnMvY29uc3RhbnRzL2RlZmF1bHQtYXR0cmlidXRlcyc7XG5pbXBvcnQgeyBMVUNJREVfSUNPTlMsIEx1Y2lkZUljb25Qcm92aWRlckludGVyZmFjZSB9IGZyb20gJy4vbHVjaWRlLWljb24ucHJvdmlkZXInO1xuaW1wb3J0IHsgTHVjaWRlSWNvbkNvbmZpZyB9IGZyb20gJy4vbHVjaWRlLWljb24uY29uZmlnJztcblxuaW50ZXJmYWNlIFR5cGVkQ2hhbmdlPFQ+IGV4dGVuZHMgU2ltcGxlQ2hhbmdlIHtcbiAgcHJldmlvdXNWYWx1ZTogVDtcbiAgY3VycmVudFZhbHVlOiBUO1xufVxuXG50eXBlIFN2Z0F0dHJpYnV0ZXMgPSB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB9O1xuXG50eXBlIEx1Y2lkZUFuZ3VsYXJDb21wb25lbnRDaGFuZ2VzID0ge1xuICBuYW1lPzogVHlwZWRDaGFuZ2U8c3RyaW5nIHwgTHVjaWRlSWNvbkRhdGE+O1xuICBpbWc/OiBUeXBlZENoYW5nZTxMdWNpZGVJY29uRGF0YSB8IHVuZGVmaW5lZD47XG4gIGNvbG9yPzogVHlwZWRDaGFuZ2U8c3RyaW5nPjtcbiAgc2l6ZT86IFR5cGVkQ2hhbmdlPG51bWJlcj47XG4gIHN0cm9rZVdpZHRoPzogVHlwZWRDaGFuZ2U8bnVtYmVyPjtcbiAgYWJzb2x1dGVTdHJva2VXaWR0aD86IFR5cGVkQ2hhbmdlPGJvb2xlYW4+O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEZpeGVkKG51bWJlcjogbnVtYmVyLCBkZWNpbWFscyA9IDMpOiBzdHJpbmcge1xuICByZXR1cm4gcGFyc2VGbG9hdChudW1iZXIudG9GaXhlZChkZWNpbWFscykpLnRvU3RyaW5nKDEwKTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbHVjaWRlLWFuZ3VsYXIsIGx1Y2lkZS1pY29uLCBpLWx1Y2lkZSwgc3Bhbi1sdWNpZGUnLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxufSlcbmV4cG9ydCBjbGFzcyBMdWNpZGVBbmd1bGFyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgY2xhc3M/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIG5hbWU/OiBzdHJpbmcgfCBMdWNpZGVJY29uRGF0YTtcbiAgQElucHV0KCkgY29sb3I/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGFic29sdXRlU3Ryb2tlV2lkdGggPSBmYWxzZTtcbiAgZGVmYXVsdFNpemU6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KEVsZW1lbnRSZWYpIHByaXZhdGUgZWxlbTogRWxlbWVudFJlZixcbiAgICBASW5qZWN0KFJlbmRlcmVyMikgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIEBJbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBJbmplY3QoTFVDSURFX0lDT05TKSBwcml2YXRlIGljb25Qcm92aWRlcnM6IEx1Y2lkZUljb25Qcm92aWRlckludGVyZmFjZVtdLFxuICAgIEBJbmplY3QoTHVjaWRlSWNvbkNvbmZpZykgcHJpdmF0ZSBpY29uQ29uZmlnOiBMdWNpZGVJY29uQ29uZmlnLFxuICApIHtcbiAgICB0aGlzLmRlZmF1bHRTaXplID0gZGVmYXVsdEF0dHJpYnV0ZXMuaGVpZ2h0O1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGltZyhpbWc6IEx1Y2lkZUljb25EYXRhKSB7XG4gICAgdGhpcy5uYW1lID0gaW1nO1xuICB9XG5cbiAgX3NpemU/OiBudW1iZXI7XG5cbiAgZ2V0IHNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fc2l6ZSA/PyB0aGlzLmljb25Db25maWcuc2l6ZTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBzaXplKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuX3NpemUgPSB0aGlzLnBhcnNlTnVtYmVyKHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVsZXRlIHRoaXMuX3NpemU7XG4gICAgfVxuICB9XG5cbiAgX3N0cm9rZVdpZHRoPzogbnVtYmVyO1xuXG4gIGdldCBzdHJva2VXaWR0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9zdHJva2VXaWR0aCA/PyB0aGlzLmljb25Db25maWcuc3Ryb2tlV2lkdGg7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgc3Ryb2tlV2lkdGgodmFsdWU6IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5fc3Ryb2tlV2lkdGggPSB0aGlzLnBhcnNlTnVtYmVyKHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVsZXRlIHRoaXMuX3N0cm9rZVdpZHRoO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IEx1Y2lkZUFuZ3VsYXJDb21wb25lbnRDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy5jb2xvciA9IHRoaXMuY29sb3IgPz8gdGhpcy5pY29uQ29uZmlnLmNvbG9yO1xuICAgIHRoaXMuc2l6ZSA9IHRoaXMucGFyc2VOdW1iZXIodGhpcy5zaXplID8/IHRoaXMuaWNvbkNvbmZpZy5zaXplKTtcbiAgICB0aGlzLnN0cm9rZVdpZHRoID0gdGhpcy5wYXJzZU51bWJlcih0aGlzLnN0cm9rZVdpZHRoID8/IHRoaXMuaWNvbkNvbmZpZy5zdHJva2VXaWR0aCk7XG4gICAgdGhpcy5hYnNvbHV0ZVN0cm9rZVdpZHRoID0gdGhpcy5hYnNvbHV0ZVN0cm9rZVdpZHRoID8/IHRoaXMuaWNvbkNvbmZpZy5hYnNvbHV0ZVN0cm9rZVdpZHRoO1xuICAgIGlmIChjaGFuZ2VzLm5hbWUgfHwgY2hhbmdlcy5pbWcpIHtcbiAgICAgIGNvbnN0IG5hbWUgPSBjaGFuZ2VzLmltZz8uY3VycmVudFZhbHVlID8/IGNoYW5nZXMubmFtZT8uY3VycmVudFZhbHVlO1xuICAgICAgaWYgKHR5cGVvZiBuYW1lID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb25zdCBpY29PZk5hbWUgPSB0aGlzLmdldEljb24odGhpcy50b1Bhc2NhbENhc2UobmFtZSkpO1xuICAgICAgICBpZiAoaWNvT2ZOYW1lKSB7XG4gICAgICAgICAgdGhpcy5yZXBsYWNlRWxlbWVudChpY29PZk5hbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBUaGUgXCIke25hbWV9XCIgaWNvbiBoYXMgbm90IGJlZW4gcHJvdmlkZWQgYnkgYW55IGF2YWlsYWJsZSBpY29uIHByb3ZpZGVycy5gLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShuYW1lKSkge1xuICAgICAgICB0aGlzLnJlcGxhY2VFbGVtZW50KG5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBpY29uIG5hbWUgb3IgaW1hZ2UgaGFzIGJlZW4gcHJvdmlkZWQuYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHJlcGxhY2VFbGVtZW50KGltZzogTHVjaWRlSWNvbkRhdGEpOiB2b2lkIHtcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0ge1xuICAgICAgLi4uZGVmYXVsdEF0dHJpYnV0ZXMsXG4gICAgICB3aWR0aDogdGhpcy5zaXplLFxuICAgICAgaGVpZ2h0OiB0aGlzLnNpemUsXG4gICAgICBzdHJva2U6IHRoaXMuY29sb3IgPz8gdGhpcy5pY29uQ29uZmlnLmNvbG9yLFxuICAgICAgJ3N0cm9rZS13aWR0aCc6IHRoaXMuYWJzb2x1dGVTdHJva2VXaWR0aFxuICAgICAgICA/IGZvcm1hdEZpeGVkKHRoaXMuc3Ryb2tlV2lkdGggLyAodGhpcy5zaXplIC8gdGhpcy5kZWZhdWx0U2l6ZSkpXG4gICAgICAgIDogdGhpcy5zdHJva2VXaWR0aC50b1N0cmluZygxMCksXG4gICAgfTtcbiAgICBjb25zdCBpY29FbGVtZW50ID0gdGhpcy5jcmVhdGVFbGVtZW50KFsnc3ZnJywgYXR0cmlidXRlcywgaW1nXSk7XG4gICAgaWNvRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdsdWNpZGUnKTtcbiAgICBpZiAodHlwZW9mIHRoaXMubmFtZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGljb0VsZW1lbnQuY2xhc3NMaXN0LmFkZChgbHVjaWRlLSR7dGhpcy5uYW1lLnJlcGxhY2UoJ18nLCAnLScpfWApO1xuICAgIH1cbiAgICBpZiAodGhpcy5jbGFzcykge1xuICAgICAgaWNvRWxlbWVudC5jbGFzc0xpc3QuYWRkKFxuICAgICAgICAuLi50aGlzLmNsYXNzXG4gICAgICAgICAgLnNwbGl0KC8gLylcbiAgICAgICAgICAubWFwKChhKSA9PiBhLnRyaW0oKSlcbiAgICAgICAgICAuZmlsdGVyKChhKSA9PiBhLmxlbmd0aCA+IDApLFxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgY2hpbGRFbGVtZW50cyA9IHRoaXMuZWxlbS5uYXRpdmVFbGVtZW50LmNoaWxkTm9kZXM7XG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZEVsZW1lbnRzKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNoaWxkKHRoaXMuZWxlbS5uYXRpdmVFbGVtZW50LCBjaGlsZCk7XG4gICAgfVxuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5lbGVtLm5hdGl2ZUVsZW1lbnQsIGljb0VsZW1lbnQpO1xuICB9XG5cbiAgdG9QYXNjYWxDYXNlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoXG4gICAgICAvKFxcdykoW2EtejAtOV0qKShffC18XFxzKikvZyxcbiAgICAgIChnMCwgZzEsIGcyKSA9PiBnMS50b1VwcGVyQ2FzZSgpICsgZzIudG9Mb3dlckNhc2UoKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZU51bWJlcih2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogbnVtYmVyIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgcGFyc2VkVmFsdWUgPSBwYXJzZUludCh2YWx1ZSwgMTApO1xuICAgICAgaWYgKGlzTmFOKHBhcnNlZFZhbHVlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dmFsdWV9IGlzIG5vdCBudW1lcmljLmApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHBhcnNlZFZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGdldEljb24obmFtZTogc3RyaW5nKTogTHVjaWRlSWNvbkRhdGEgfCBudWxsIHtcbiAgICBmb3IgKGNvbnN0IGljb25Qcm92aWRlciBvZiBBcnJheS5pc0FycmF5KHRoaXMuaWNvblByb3ZpZGVycylcbiAgICAgID8gdGhpcy5pY29uUHJvdmlkZXJzXG4gICAgICA6IFt0aGlzLmljb25Qcm92aWRlcnNdKSB7XG4gICAgICBpZiAoaWNvblByb3ZpZGVyLmhhc0ljb24obmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIGljb25Qcm92aWRlci5nZXRJY29uKG5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRWxlbWVudChbdGFnLCBhdHRycywgY2hpbGRyZW4gPSBbXV06IHJlYWRvbmx5IFtcbiAgICBzdHJpbmcsXG4gICAgU3ZnQXR0cmlidXRlcyxcbiAgICBMdWNpZGVJY29uRGF0YT8sXG4gIF0pIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KHRhZywgJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyk7XG5cbiAgICBPYmplY3Qua2V5cyhhdHRycykuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgY29uc3QgYXR0clZhbHVlOiBzdHJpbmcgPVxuICAgICAgICB0eXBlb2YgYXR0cnNbbmFtZV0gPT09ICdzdHJpbmcnID8gKGF0dHJzW25hbWVdIGFzIHN0cmluZykgOiBhdHRyc1tuYW1lXS50b1N0cmluZygxMCk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCBhdHRyVmFsdWUpO1xuICAgIH0pO1xuXG4gICAgaWYgKGNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgY29uc3QgY2hpbGRFbGVtZW50ID0gdGhpcy5jcmVhdGVFbGVtZW50KGNoaWxkKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChlbGVtZW50LCBjaGlsZEVsZW1lbnQpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH1cbn1cbiJdfQ==
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHVjaWRlLWFuZ3VsYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9sdWNpZGUtYW5ndWxhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBRUwsU0FBUyxHQUVWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8saUJBQWlCLE1BQU0sdUNBQXVDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFlBQVksRUFBK0IsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBbUJ4RCxNQUFNLFVBQVUsV0FBVyxDQUFDLE1BQWMsRUFBRSxRQUFRLEdBQUcsQ0FBQztJQUN0RCxPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFNRCxNQUFNLE9BQU8sc0JBQXNCO0lBUWpDLFlBQzhCLElBQWdCLEVBQ2pCLFFBQW1CLEVBQ1gsY0FBaUMsRUFDdEMsYUFBNEMsRUFDeEMsVUFBNEI7UUFKbEMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNqQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ1gsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ3RDLGtCQUFhLEdBQWIsYUFBYSxDQUErQjtRQUN4QyxlQUFVLEdBQVYsVUFBVSxDQUFrQjtRQVJ2RCx3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFVbkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUM7SUFDOUMsQ0FBQztJQUlELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUks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S0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFtQk8sSUFBSTtzQkFBaEIsS0FBSztnQkFjTyxXQUFXO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBSZW5kZXJlcjIsXG4gIFNpbXBsZUNoYW5nZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMdWNpZGVJY29uRGF0YSB9IGZyb20gJy4uL2ljb25zL3R5cGVzJztcbmltcG9ydCBkZWZhdWx0QXR0cmlidXRlcyBmcm9tICcuLi9pY29ucy9jb25zdGFudHMvZGVmYXVsdC1hdHRyaWJ1dGVzJztcbmltcG9ydCB7IExVQ0lERV9JQ09OUywgTHVjaWRlSWNvblByb3ZpZGVySW50ZXJmYWNlIH0gZnJvbSAnLi9sdWNpZGUtaWNvbi5wcm92aWRlcic7XG5pbXBvcnQgeyBMdWNpZGVJY29uQ29uZmlnIH0gZnJvbSAnLi9sdWNpZGUtaWNvbi5jb25maWcnO1xuXG5pbnRlcmZhY2UgVHlwZWRDaGFuZ2U8VD4gZXh0ZW5kcyBTaW1wbGVDaGFuZ2Uge1xuICBwcmV2aW91c1ZhbHVlOiBUO1xuICBjdXJyZW50VmFsdWU6IFQ7XG59XG5cbnR5cGUgU3ZnQXR0cmlidXRlcyA9IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIH07XG5cbnR5cGUgTHVjaWRlQW5ndWxhckNvbXBvbmVudENoYW5nZXMgPSB7XG4gIG5hbWU/OiBUeXBlZENoYW5nZTxzdHJpbmcgfCBMdWNpZGVJY29uRGF0YT47XG4gIGltZz86IFR5cGVkQ2hhbmdlPEx1Y2lkZUljb25EYXRhIHwgdW5kZWZpbmVkPjtcbiAgY29sb3I/OiBUeXBlZENoYW5nZTxzdHJpbmc+O1xuICBzaXplPzogVHlwZWRDaGFuZ2U8bnVtYmVyPjtcbiAgc3Ryb2tlV2lkdGg/OiBUeXBlZENoYW5nZTxudW1iZXI+O1xuICBhYnNvbHV0ZVN0cm9rZVdpZHRoPzogVHlwZWRDaGFuZ2U8Ym9vbGVhbj47XG4gIGNsYXNzOiBUeXBlZENoYW5nZTxzdHJpbmc+O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEZpeGVkKG51bWJlcjogbnVtYmVyLCBkZWNpbWFscyA9IDMpOiBzdHJpbmcge1xuICByZXR1cm4gcGFyc2VGbG9hdChudW1iZXIudG9GaXhlZChkZWNpbWFscykpLnRvU3RyaW5nKDEwKTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbHVjaWRlLWFuZ3VsYXIsIGx1Y2lkZS1pY29uLCBpLWx1Y2lkZSwgc3Bhbi1sdWNpZGUnLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxufSlcbmV4cG9ydCBjbGFzcyBMdWNpZGVBbmd1bGFyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgY2xhc3M/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIG5hbWU/OiBzdHJpbmcgfCBMdWNpZGVJY29uRGF0YTtcbiAgQElucHV0KCkgaW1nPzogTHVjaWRlSWNvbkRhdGE7XG4gIEBJbnB1dCgpIGNvbG9yPzogc3RyaW5nO1xuICBASW5wdXQoKSBhYnNvbHV0ZVN0cm9rZVdpZHRoID0gZmFsc2U7XG4gIGRlZmF1bHRTaXplOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChFbGVtZW50UmVmKSBwcml2YXRlIGVsZW06IEVsZW1lbnRSZWYsXG4gICAgQEluamVjdChSZW5kZXJlcjIpIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBASW5qZWN0KENoYW5nZURldGVjdG9yUmVmKSBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBASW5qZWN0KExVQ0lERV9JQ09OUykgcHJpdmF0ZSBpY29uUHJvdmlkZXJzOiBMdWNpZGVJY29uUHJvdmlkZXJJbnRlcmZhY2VbXSxcbiAgICBASW5qZWN0KEx1Y2lkZUljb25Db25maWcpIHByaXZhdGUgaWNvbkNvbmZpZzogTHVjaWRlSWNvbkNvbmZpZyxcbiAgKSB7XG4gICAgdGhpcy5kZWZhdWx0U2l6ZSA9IGRlZmF1bHRBdHRyaWJ1dGVzLmhlaWdodDtcbiAgfVxuXG4gIF9zaXplPzogbnVtYmVyO1xuXG4gIGdldCBzaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3NpemUgPz8gdGhpcy5pY29uQ29uZmlnLnNpemU7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgc2l6ZSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLl9zaXplID0gdGhpcy5wYXJzZU51bWJlcih2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlbGV0ZSB0aGlzLl9zaXplO1xuICAgIH1cbiAgfVxuXG4gIF9zdHJva2VXaWR0aD86IG51bWJlcjtcblxuICBnZXQgc3Ryb2tlV2lkdGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fc3Ryb2tlV2lkdGggPz8gdGhpcy5pY29uQ29uZmlnLnN0cm9rZVdpZHRoO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHN0cm9rZVdpZHRoKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuX3N0cm9rZVdpZHRoID0gdGhpcy5wYXJzZU51bWJlcih2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlbGV0ZSB0aGlzLl9zdHJva2VXaWR0aDtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBMdWNpZGVBbmd1bGFyQ29tcG9uZW50Q2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIGNoYW5nZXMubmFtZSB8fFxuICAgICAgY2hhbmdlcy5pbWcgfHxcbiAgICAgIGNoYW5nZXMuY29sb3IgfHxcbiAgICAgIGNoYW5nZXMuc2l6ZSB8fFxuICAgICAgY2hhbmdlcy5hYnNvbHV0ZVN0cm9rZVdpZHRoIHx8XG4gICAgICBjaGFuZ2VzLnN0cm9rZVdpZHRoIHx8XG4gICAgICBjaGFuZ2VzLmNsYXNzXG4gICAgKSB7XG4gICAgICB0aGlzLmNvbG9yID0gdGhpcy5jb2xvciA/PyB0aGlzLmljb25Db25maWcuY29sb3I7XG4gICAgICB0aGlzLnNpemUgPSB0aGlzLnBhcnNlTnVtYmVyKHRoaXMuc2l6ZSA/PyB0aGlzLmljb25Db25maWcuc2l6ZSk7XG4gICAgICB0aGlzLnN0cm9rZVdpZHRoID0gdGhpcy5wYXJzZU51bWJlcih0aGlzLnN0cm9rZVdpZHRoID8/IHRoaXMuaWNvbkNvbmZpZy5zdHJva2VXaWR0aCk7XG4gICAgICB0aGlzLmFic29sdXRlU3Ryb2tlV2lkdGggPSB0aGlzLmFic29sdXRlU3Ryb2tlV2lkdGggPz8gdGhpcy5pY29uQ29uZmlnLmFic29sdXRlU3Ryb2tlV2lkdGg7XG4gICAgICBjb25zdCBuYW1lT3JJY29uID0gdGhpcy5pbWcgPz8gdGhpcy5uYW1lO1xuICAgICAgaWYgKHR5cGVvZiBuYW1lT3JJY29uID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb25zdCBpY29PZk5hbWUgPSB0aGlzLmdldEljb24odGhpcy50b1Bhc2NhbENhc2UobmFtZU9ySWNvbikpO1xuICAgICAgICBpZiAoaWNvT2ZOYW1lKSB7XG4gICAgICAgICAgdGhpcy5yZXBsYWNlRWxlbWVudChpY29PZk5hbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBUaGUgXCIke25hbWVPckljb259XCIgaWNvbiBoYXMgbm90IGJlZW4gcHJvdmlkZWQgYnkgYW55IGF2YWlsYWJsZSBpY29uIHByb3ZpZGVycy5gLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShuYW1lT3JJY29uKSkge1xuICAgICAgICB0aGlzLnJlcGxhY2VFbGVtZW50KG5hbWVPckljb24pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBpY29uIG5hbWUgb3IgaW1hZ2UgaGFzIGJlZW4gcHJvdmlkZWQuYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHJlcGxhY2VFbGVtZW50KGltZzogTHVjaWRlSWNvbkRhdGEpOiB2b2lkIHtcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0ge1xuICAgICAgLi4uZGVmYXVsdEF0dHJpYnV0ZXMsXG4gICAgICB3aWR0aDogdGhpcy5zaXplLFxuICAgICAgaGVpZ2h0OiB0aGlzLnNpemUsXG4gICAgICBzdHJva2U6IHRoaXMuY29sb3IgPz8gdGhpcy5pY29uQ29uZmlnLmNvbG9yLFxuICAgICAgJ3N0cm9rZS13aWR0aCc6IHRoaXMuYWJzb2x1dGVTdHJva2VXaWR0aFxuICAgICAgICA/IGZvcm1hdEZpeGVkKHRoaXMuc3Ryb2tlV2lkdGggLyAodGhpcy5zaXplIC8gdGhpcy5kZWZhdWx0U2l6ZSkpXG4gICAgICAgIDogdGhpcy5zdHJva2VXaWR0aC50b1N0cmluZygxMCksXG4gICAgfTtcbiAgICBjb25zdCBpY29FbGVtZW50ID0gdGhpcy5jcmVhdGVFbGVtZW50KFsnc3ZnJywgYXR0cmlidXRlcywgaW1nXSk7XG4gICAgaWNvRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdsdWNpZGUnKTtcbiAgICBpZiAodHlwZW9mIHRoaXMubmFtZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGljb0VsZW1lbnQuY2xhc3NMaXN0LmFkZChgbHVjaWRlLSR7dGhpcy5uYW1lLnJlcGxhY2UoJ18nLCAnLScpfWApO1xuICAgIH1cbiAgICBpZiAodGhpcy5jbGFzcykge1xuICAgICAgaWNvRWxlbWVudC5jbGFzc0xpc3QuYWRkKFxuICAgICAgICAuLi50aGlzLmNsYXNzXG4gICAgICAgICAgLnNwbGl0KC8gLylcbiAgICAgICAgICAubWFwKChhKSA9PiBhLnRyaW0oKSlcbiAgICAgICAgICAuZmlsdGVyKChhKSA9PiBhLmxlbmd0aCA+IDApLFxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgY2hpbGRFbGVtZW50cyA9IHRoaXMuZWxlbS5uYXRpdmVFbGVtZW50LmNoaWxkTm9kZXM7XG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZEVsZW1lbnRzKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNoaWxkKHRoaXMuZWxlbS5uYXRpdmVFbGVtZW50LCBjaGlsZCk7XG4gICAgfVxuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5lbGVtLm5hdGl2ZUVsZW1lbnQsIGljb0VsZW1lbnQpO1xuICB9XG5cbiAgdG9QYXNjYWxDYXNlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoXG4gICAgICAvKFxcdykoW2EtejAtOV0qKShffC18XFxzKikvZyxcbiAgICAgIChnMCwgZzEsIGcyKSA9PiBnMS50b1VwcGVyQ2FzZSgpICsgZzIudG9Mb3dlckNhc2UoKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZU51bWJlcih2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogbnVtYmVyIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgcGFyc2VkVmFsdWUgPSBwYXJzZUludCh2YWx1ZSwgMTApO1xuICAgICAgaWYgKGlzTmFOKHBhcnNlZFZhbHVlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dmFsdWV9IGlzIG5vdCBudW1lcmljLmApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHBhcnNlZFZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGdldEljb24obmFtZTogc3RyaW5nKTogTHVjaWRlSWNvbkRhdGEgfCBudWxsIHtcbiAgICBmb3IgKGNvbnN0IGljb25Qcm92aWRlciBvZiBBcnJheS5pc0FycmF5KHRoaXMuaWNvblByb3ZpZGVycylcbiAgICAgID8gdGhpcy5pY29uUHJvdmlkZXJzXG4gICAgICA6IFt0aGlzLmljb25Qcm92aWRlcnNdKSB7XG4gICAgICBpZiAoaWNvblByb3ZpZGVyLmhhc0ljb24obmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIGljb25Qcm92aWRlci5nZXRJY29uKG5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRWxlbWVudChbdGFnLCBhdHRycywgY2hpbGRyZW4gPSBbXV06IHJlYWRvbmx5IFtcbiAgICBzdHJpbmcsXG4gICAgU3ZnQXR0cmlidXRlcyxcbiAgICBMdWNpZGVJY29uRGF0YT8sXG4gIF0pIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KHRhZywgJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyk7XG5cbiAgICBPYmplY3Qua2V5cyhhdHRycykuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgY29uc3QgYXR0clZhbHVlOiBzdHJpbmcgPVxuICAgICAgICB0eXBlb2YgYXR0cnNbbmFtZV0gPT09ICdzdHJpbmcnID8gKGF0dHJzW25hbWVdIGFzIHN0cmluZykgOiBhdHRyc1tuYW1lXS50b1N0cmluZygxMCk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCBhdHRyVmFsdWUpO1xuICAgIH0pO1xuXG4gICAgaWYgKGNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgY29uc3QgY2hpbGRFbGVtZW50ID0gdGhpcy5jcmVhdGVFbGVtZW50KGNoaWxkKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChlbGVtZW50LCBjaGlsZEVsZW1lbnQpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH1cbn1cbiJdfQ==