@progressio_resources/gravity-design-system 3.2.0 → 3.2.2

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.
@@ -51,25 +51,33 @@ export class GravityDropdownListComponent {
51
51
  if (changes['customValues']) {
52
52
  const changeItem = changes['customValues'];
53
53
  const currentValue = changeItem?.currentValue;
54
+ const findOptionRecursively = (items, value) => {
55
+ for (const item of items) {
56
+ const itemValue = this.config ? item[this.config.value] : item;
57
+ if (itemValue == value) {
58
+ return item;
59
+ }
60
+ if (item.children) {
61
+ const foundChild = findOptionRecursively(item.children, value);
62
+ if (foundChild)
63
+ return foundChild;
64
+ }
65
+ }
66
+ return null;
67
+ };
68
+ this.selectedItems = [];
54
69
  if (Array.isArray(currentValue)) {
55
- this.selectedItems = [];
56
- currentValue.forEach((item) => {
57
- if (item) {
58
- const option = this.config
59
- ? this.availableOptions.find((availableOption) => availableOption[this.config.value] == item)
60
- : this.availableOptions.find((availableOption) => availableOption == item);
61
- if (option && !this.selectedItems.includes(option)) {
62
- this.selectedItems.push(option);
63
- }
70
+ currentValue.forEach((val) => {
71
+ const found = findOptionRecursively(this.items, val);
72
+ if (found && !this.selectedItems.includes(found)) {
73
+ this.selectedItems.push(found);
64
74
  }
65
75
  });
66
76
  }
67
77
  else if (currentValue != null && currentValue !== '') {
68
- const option = this.config
69
- ? this.availableOptions.find((availableOption) => availableOption[this.config.value] == currentValue)
70
- : this.availableOptions.find((availableOption) => availableOption == currentValue);
71
- if (option) {
72
- this.selectedItems = [option];
78
+ const found = findOptionRecursively(this.items, currentValue);
79
+ if (found) {
80
+ this.selectedItems = [found];
73
81
  }
74
82
  }
75
83
  else if (!currentValue && !changeItem.firstChange) {
@@ -128,7 +136,8 @@ export class GravityDropdownListComponent {
128
136
  if (this.multiple) {
129
137
  const isSelected = this.checkIfSelected(itemToAdd);
130
138
  if (isSelected) {
131
- this.selectedItems = this.selectedItems.filter(i => i !== itemToAdd);
139
+ this.selectedItems = this.selectedItems.filter(i => (this.config ? i[this.config.value] : i) !==
140
+ (this.config ? itemToAdd[this.config.value] : itemToAdd));
132
141
  if (isParent) {
133
142
  itemToAdd.children.forEach(child => {
134
143
  this.selectedItems = this.selectedItems.filter(i => i !== child);
@@ -182,7 +191,8 @@ export class GravityDropdownListComponent {
182
191
  return selectedChildren.length > 0 && selectedChildren.length < item.children.length;
183
192
  }
184
193
  checkIfSelected(itemToFind) {
185
- return !!this.selectedItems.find((item) => itemToFind == item);
194
+ return this.selectedItems.some(item => (this.config ? item[this.config.value] : item) ===
195
+ (this.config ? itemToFind[this.config.value] : itemToFind));
186
196
  }
187
197
  clearSelection() {
188
198
  this.selectedItems = [];
@@ -341,4 +351,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
341
351
  type: HostListener,
342
352
  args: ['document:click', ['$event']]
343
353
  }] } });
344
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3Jhdml0eS1kcm9wZG93bi1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyYXZpdHktZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvZ3Jhdml0eS1kcm9wZG93bi1saXN0L2dyYXZpdHktZHJvcGRvd24tbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktZHJvcGRvd24tbGlzdC9ncmF2aXR5LWRyb3Bkb3duLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBYyxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQStCLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNsSixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7Ozs7Ozs7Ozs7QUFROUMsTUFBTSxPQUFPLDRCQUE0QjtJQUN2QyxJQUNJLGFBQWEsS0FBYyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBQzVELElBQUksYUFBYSxDQUFDLEtBQWMsSUFBSSxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7SUE4QmxFLElBQ0ksS0FBSyxDQUFDLFdBQXlDO1FBQ2pELElBQUksV0FBVyxFQUFFO1lBQ2YsV0FBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNuQztJQUNILENBQUM7SUFBQSxDQUFDO0lBUUYsWUFBNkIsWUFBMEIsRUFBVSxLQUFpQjtRQUFyRCxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUFVLFVBQUssR0FBTCxLQUFLLENBQVk7UUF6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QUExQixLQUFLO2dCQUdVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ1UsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLEtBQUs7c0JBQXBCLEtBQUs7Z0JBSUYsS0FBSztzQkFEUixTQUFTO3VCQUFDLGFBQWE7Z0JBOExvQixlQUFlO3NCQUExRCxZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZSwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7R3Jhdml0eUljb25Db21wb25lbnR9IGZyb20gXCIuLi9ncmF2aXR5LWljb24vZ3Jhdml0eS1pY29uLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtGaWx0ZXJCeVBpcGV9IGZyb20gXCIuL2ZpbHRlci1ieS5waXBlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dyYXZpdHktZHJvcGRvd24tbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9ncmF2aXR5LWRyb3Bkb3duLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ncmF2aXR5LWRyb3Bkb3duLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbRmlsdGVyQnlQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBHcmF2aXR5RHJvcGRvd25MaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KClcbiAgZ2V0IGRyb3Bkb3duU3RhdGUoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmRyb3Bkb3duT3BlbmVkOyB9XG4gIHNldCBkcm9wZG93blN0YXRlKHZhbHVlOiBib29sZWFuKSB7IHRoaXMuZHJvcGRvd25PcGVuZWQgPSB2YWx1ZTsgfVxuXG4gIEBPdXRwdXQoKSBkcm9wZG93blN0YXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCdyZXNwb25zZScpIHB1YmxpYyBzZWxlY3RlZEl0ZW1zUmVzcG9uc2U6IEV2ZW50RW1pdHRlcjxhbnlbXSB8IGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLy8gQ29tcG9uZW50IGZlYXR1cmVzXG4gIEBJbnB1dCgpIHB1YmxpYyBjbGVhcmFibGU6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgY29uZmlnPzogeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nOyB9O1xuICBASW5wdXQoKSBwdWJsaWMgY3VycmVudExhbmc6IHN0cmluZyA9ICdlbic7XG4gIEBJbnB1dCgpIHB1YmxpYyBjdXN0b21WYWx1ZXM6IEFycmF5PGFueT4gfCBhbnk7XG4gIEBJbnB1dCgpIHB1YmxpYyBjeXByZXNzVGFnOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBoYXNFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgaWNvbkxlZnQ6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIGlzQ3VycmVuY3k6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGlzRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGlzUmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGl0ZW1zOiBBcnJheTxhbnk+O1xuICBASW5wdXQoKSBwdWJsaWMgbGFiZWw6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIG11bHRpcGxlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIHN1cHBvcnRUZXh0OiBzdHJpbmc7XG5cbiAgLy8gQXBwZWFyYW5jZSBzZXR0aW5nc1xuICBASW5wdXQoKSBwdWJsaWMgbGFiZWxTaXplOiAnc20nIHwgJ21kJyB8ICdsZycgPSAnc20nO1xuICBASW5wdXQoKSBwdWJsaWMgc2l6ZTogJ3NtJyB8ICdtZCcgfCAnbGcnIHwgJ3hsJyA9ICdtZCc7XG4gIEBJbnB1dCgpIHB1YmxpYyBpbnB1dFR5cGU6ICdmaWVsZCcgfCAnbGFiZWwnID0gJ2ZpZWxkJztcbiAgQElucHV0KCkgcHVibGljIHdpZHRoOiAnc2hvcnQnIHwgJ21lZGl1bScgfCAnZnVsbCcgfCAnZml0JyA9ICdzaG9ydCc7XG5cblxuICBAVmlld0NoaWxkKCdzZWFyY2hJbnB1dCcpXG4gIHNldCB3YXRjaChzZWFyY2hJbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pikge1xuICAgIGlmIChzZWFyY2hJbnB1dCkge1xuICAgICAgc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfTtcblxuICBwdWJsaWMgYXZhaWxhYmxlT3B0aW9uczogYW55W10gPSBbXTtcbiAgcHVibGljIGRyb3Bkb3duT3BlbmVkOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBzZWFyY2hUZXh0OiBzdHJpbmcgPSAnJztcbiAgcHVibGljIHNlbGVjdGVkSXRlbXM6IGFueVtdID0gW107XG4gIHB1YmxpYyBvcGVuQ2hpbGRyZW5NYXAgPSBuZXcgTWFwPGFueSwgYm9vbGVhbj4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZpbHRlckJ5UGlwZTogRmlsdGVyQnlQaXBlLCBwcml2YXRlIF9lcmVmOiBFbGVtZW50UmVmKSB7IH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ2l0ZW1zJ10/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5hdmFpbGFibGVPcHRpb25zID0gdGhpcy5pdGVtcztcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1snY3VzdG9tVmFsdWVzJ10pIHtcbiAgICAgIGNvbnN0IGNoYW5nZUl0ZW06IFNpbXBsZUNoYW5nZSA9IGNoYW5nZXNbJ2N1c3RvbVZhbHVlcyddO1xuICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gY2hhbmdlSXRlbT8uY3VycmVudFZhbHVlO1xuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShjdXJyZW50VmFsdWUpKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xuXG4gICAgICAgIGN1cnJlbnRWYWx1ZS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgICAgY29uc3Qgb3B0aW9uID0gdGhpcy5jb25maWdcbiAgICAgICAgICAgICAgPyB0aGlzLmF2YWlsYWJsZU9wdGlvbnMuZmluZCgoYXZhaWxhYmxlT3B0aW9uOiBhbnkpID0+IGF2YWlsYWJsZU9wdGlvblt0aGlzLmNvbmZpZy52YWx1ZV0gPT0gaXRlbSlcbiAgICAgICAgICAgICAgOiB0aGlzLmF2YWlsYWJsZU9wdGlvbnMuZmluZCgoYXZhaWxhYmxlT3B0aW9uOiBhbnkpID0+IGF2YWlsYWJsZU9wdGlvbiA9PSBpdGVtKTtcblxuICAgICAgICAgICAgaWYgKG9wdGlvbiAmJiAhdGhpcy5zZWxlY3RlZEl0ZW1zLmluY2x1ZGVzKG9wdGlvbikpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2gob3B0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChjdXJyZW50VmFsdWUgIT0gbnVsbCAmJiBjdXJyZW50VmFsdWUgIT09ICcnKSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbiA9IHRoaXMuY29uZmlnXG4gICAgICAgICAgPyB0aGlzLmF2YWlsYWJsZU9wdGlvbnMuZmluZCgoYXZhaWxhYmxlT3B0aW9uOiBhbnkpID0+IGF2YWlsYWJsZU9wdGlvblt0aGlzLmNvbmZpZy52YWx1ZV0gPT0gY3VycmVudFZhbHVlKVxuICAgICAgICAgIDogdGhpcy5hdmFpbGFibGVPcHRpb25zLmZpbmQoKGF2YWlsYWJsZU9wdGlvbjogYW55KSA9PiBhdmFpbGFibGVPcHRpb24gPT0gY3VycmVudFZhbHVlKTtcblxuICAgICAgICBpZiAob3B0aW9uKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW29wdGlvbl07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoIWN1cnJlbnRWYWx1ZSAmJiAhY2hhbmdlSXRlbS5maXJzdENoYW5nZSkge1xuICAgICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFN0YXR1cygpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmlzRGlzYWJsZWQpIHtyZXR1cm4gJ2Rpc2FibGVkJzt9XG4gICAgZWxzZSBpZiAodGhpcy5pc1JlYWRvbmx5KSB7cmV0dXJuICdyZWFkb25seSc7fVxuICAgIGVsc2UgaWYgKHRoaXMuaGFzRXJyb3IpIHtyZXR1cm4gJ2Vycm9yJzt9XG4gICAgZWxzZSBpZiAodGhpcy5kcm9wZG93bk9wZW5lZCkge3JldHVybiAnb3Blbic7fVxuICAgIGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwKSB7cmV0dXJuICdzZWxlY3RlZCc7fVxuICAgIGVsc2Uge3JldHVybiAnYWN0aXZlJzt9XG4gIH1cblxuICBwdWJsaWMgaXNJY29uTGVmdE5ldygpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5pY29uTGVmdCkge1xuICAgICAgcmV0dXJuIEdyYXZpdHlJY29uQ29tcG9uZW50LmlzTmV3SWNvbih0aGlzLmljb25MZWZ0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlRHJvcGRvd24oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzRGlzYWJsZWQgJiYgIXRoaXMuaXNSZWFkb25seSkge1xuICAgICAgdGhpcy5kcm9wZG93bk9wZW5lZCA9ICF0aGlzLmRyb3Bkb3duT3BlbmVkO1xuICAgICAgdGhpcy5kcm9wZG93blN0YXRlQ2hhbmdlLmVtaXQodGhpcy5kcm9wZG93bk9wZW5lZCk7XG5cbiAgICAgIGlmICghdGhpcy5kcm9wZG93bk9wZW5lZCkge1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1Jlc3BvbnNlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtc1swXSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zUmVzcG9uc2UuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXNbMF0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgICAgICB0aGlzLmF2YWlsYWJsZU9wdGlvbnMgPSB0aGlzLml0ZW1zO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RJdGVtKGl0ZW1Ub0FkZDogYW55KTogdm9pZCB7XG4gICAgY29uc3QgaXNQYXJlbnQgPSAhIWl0ZW1Ub0FkZC5jaGlsZHJlbjtcblxuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICBjb25zdCBpc1NlbGVjdGVkID0gdGhpcy5jaGVja0lmU2VsZWN0ZWQoaXRlbVRvQWRkKTtcblxuICAgICAgaWYgKGlzU2VsZWN0ZWQpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcihpID0+IGkgIT09IGl0ZW1Ub0FkZCk7XG5cbiAgICAgICAgaWYgKGlzUGFyZW50KSB7XG4gICAgICAgICAgaXRlbVRvQWRkLmNoaWxkcmVuLmZvckVhY2goY2hpbGQgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcihpID0+IGkgIT09IGNoaWxkKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLml0ZW1zLmZvckVhY2gocGFyZW50ID0+IHtcbiAgICAgICAgICAgIGlmIChwYXJlbnQuY2hpbGRyZW4/LmluY2x1ZGVzKGl0ZW1Ub0FkZCkpIHtcbiAgICAgICAgICAgICAgY29uc3QgYW55U2VsZWN0ZWQgPSBwYXJlbnQuY2hpbGRyZW4uc29tZShjaGlsZCA9PiB0aGlzLmNoZWNrSWZTZWxlY3RlZChjaGlsZCkpO1xuICAgICAgICAgICAgICBjb25zdCBhbGxTZWxlY3RlZCA9IHBhcmVudC5jaGlsZHJlbi5ldmVyeShjaGlsZCA9PiB0aGlzLmNoZWNrSWZTZWxlY3RlZChjaGlsZCkpO1xuICAgICAgICAgICAgICBpZiAoIWFueVNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcihpID0+IGkgIT09IHBhcmVudCk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoYWxsU2VsZWN0ZWQgJiYgIXRoaXMuY2hlY2tJZlNlbGVjdGVkKHBhcmVudCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChwYXJlbnQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbVRvQWRkKTtcblxuICAgICAgICBpZiAoaXNQYXJlbnQpIHtcbiAgICAgICAgICBpdGVtVG9BZGQuY2hpbGRyZW4uZm9yRWFjaChjaGlsZCA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuY2hlY2tJZlNlbGVjdGVkKGNoaWxkKSkge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChjaGlsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKHBhcmVudCA9PiB7XG4gICAgICAgICAgICBpZiAocGFyZW50LmNoaWxkcmVuPy5pbmNsdWRlcyhpdGVtVG9BZGQpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGFsbFNlbGVjdGVkID0gcGFyZW50LmNoaWxkcmVuLmV2ZXJ5KGNoaWxkID0+IHRoaXMuY2hlY2tJZlNlbGVjdGVkKGNoaWxkKSk7XG4gICAgICAgICAgICAgIGlmIChhbGxTZWxlY3RlZCAmJiAhdGhpcy5jaGVja0lmU2VsZWN0ZWQocGFyZW50KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKHBhcmVudCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbaXRlbVRvQWRkXTtcbiAgICAgIHRoaXMudG9nZ2xlRHJvcGRvd24oKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNQYXJ0aWFsbHlTZWxlY3RlZChpdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAoIWl0ZW0uY2hpbGRyZW4/Lmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRDaGlsZHJlbiA9IGl0ZW0uY2hpbGRyZW4uZmlsdGVyKGNoaWxkID0+IHRoaXMuY2hlY2tJZlNlbGVjdGVkKGNoaWxkKSk7XG4gICAgcmV0dXJuIHNlbGVjdGVkQ2hpbGRyZW4ubGVuZ3RoID4gMCAmJiBzZWxlY3RlZENoaWxkcmVuLmxlbmd0aCA8IGl0ZW0uY2hpbGRyZW4ubGVuZ3RoO1xuICB9XG5cbiAgcHVibGljIGNoZWNrSWZTZWxlY3RlZChpdGVtVG9GaW5kOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnNlbGVjdGVkSXRlbXMuZmluZCgoaXRlbTogYW55KSA9PiBpdGVtVG9GaW5kID09IGl0ZW0pO1xuICB9XG5cbiAgcHVibGljIGNsZWFyU2VsZWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xuXG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1Jlc3BvbnNlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zUmVzcG9uc2UuZW1pdChudWxsKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZmlsdGVySXRlbXMoKTogdm9pZCB7XG4gICAgY29uc3Qgc2VhcmNoID0gdGhpcy5zZWFyY2hUZXh0Py50b0xvd2VyQ2FzZSgpO1xuXG4gICAgY29uc3QgZmlsdGVyUmVjdXJzaXZlID0gKGl0ZW1zOiBhbnlbXSk6IGFueVtdID0+IHtcbiAgICAgIHJldHVybiBpdGVtc1xuICAgICAgICAubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5jb25maWcgPyBpdGVtW3RoaXMuY29uZmlnLmxhYmVsXSA6IGl0ZW07XG4gICAgICAgICAgY29uc3QgbWF0Y2hlcyA9IGxhYmVsPy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoKTtcbiAgICAgICAgICBjb25zdCBmaWx0ZXJlZENoaWxkcmVuID0gaXRlbS5jaGlsZHJlbiA/IGZpbHRlclJlY3Vyc2l2ZShpdGVtLmNoaWxkcmVuKSA6IFtdO1xuXG4gICAgICAgICAgaWYgKG1hdGNoZXMgfHwgZmlsdGVyZWRDaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICBjaGlsZHJlbjogZmlsdGVyZWRDaGlsZHJlblxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSlcbiAgICAgICAgLmZpbHRlcihpdGVtID0+IGl0ZW0gIT09IG51bGwpO1xuICAgIH07XG5cbiAgICB0aGlzLmF2YWlsYWJsZU9wdGlvbnMgPSBmaWx0ZXJSZWN1cnNpdmUodGhpcy5pdGVtcyk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pIG9uRG9jdW1lbnRDbGljaygkZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fZXJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKCRldmVudC50YXJnZXQpICYmIHRoaXMuZHJvcGRvd25PcGVuZWQpIHtcbiAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXNSZXNwb25zZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbXNbMF0pIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXNSZXNwb25zZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtc1swXSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XG4gICAgICB0aGlzLmRyb3Bkb3duT3BlbmVkID0gZmFsc2U7XG4gICAgICB0aGlzLmF2YWlsYWJsZU9wdGlvbnMgPSB0aGlzLml0ZW1zO1xuICAgICAgdGhpcy5kcm9wZG93blN0YXRlQ2hhbmdlLmVtaXQodGhpcy5kcm9wZG93bk9wZW5lZCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldEN1cnJlbmN5SWNvblNpemUoc2l6ZTogc3RyaW5nKSB7XG4gICAgc3dpdGNoIChzaXplKSB7XG4gICAgICBjYXNlICdzbSc6XG4gICAgICAgIHJldHVybiAnc20tMTYnO1xuICAgICAgY2FzZSAnbGcnOlxuICAgICAgICByZXR1cm4gJ2xnLTMyJztcbiAgICAgIGNhc2UgJ3hsJzpcbiAgICAgICAgcmV0dXJuICd4bC00MCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ21kLTI0JztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0U3BhY2luZ0NsYXNzKHNpemU6IHN0cmluZykge1xuICAgIHN3aXRjaCAoc2l6ZSkge1xuICAgICAgY2FzZSAnc20nOiByZXR1cm4gJ2dyYXZpdHktbWFyZ2luLXJpZ2h0LXh4cyc7XG4gICAgICBjYXNlICdtZCc6IHJldHVybiAnZ3Jhdml0eS1tYXJnaW4tcmlnaHQteHMnO1xuICAgICAgY2FzZSAnbGcnOiByZXR1cm4gJ2dyYXZpdHktbWFyZ2luLXJpZ2h0LXNtJztcbiAgICAgIGNhc2UgJ3hsJzogcmV0dXJuICdncmF2aXR5LW1hcmdpbi1yaWdodC1tZCc7XG4gICAgICBkZWZhdWx0OiByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldE11bHRpbGV2ZWxTcGFjaW5nQ2xhc3Moc2l6ZTogc3RyaW5nKSB7XG4gICAgc3dpdGNoIChzaXplKSB7XG4gICAgICBjYXNlICdzbSc6IHJldHVybiAnZ3Jhdml0eS1tYXJnaW4tcmlnaHQtbWQnO1xuICAgICAgY2FzZSAnbWQnOiByZXR1cm4gJ2dyYXZpdHktbWFyZ2luLXJpZ2h0LWxnJztcbiAgICAgIGRlZmF1bHQ6IHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0TGFiZWxUZXh0KCk6IHN0cmluZyB7XG4gICAgbGV0IHJlc3VsdDogc3RyaW5nID0gJyc7XG4gICAgaWYodGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PT0gMCl7XG4gICAgICAgcmVzdWx0ID0gdGhpcy5sYWJlbDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcbiAgICAgICAgbGV0IGRpc3BsYXlWYWx1ZSA9IHRoaXMuY29uZmlnID8gaXRlbVt0aGlzLmNvbmZpZy5sYWJlbF0gOiBpdGVtO1xuICAgICAgICBsZXQgc2VwYXJhdG9yID0gaSAhPT0gdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCAtIDEgPyAnLCcgOiAnJztcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgZGlzcGxheVZhbHVlICsgc2VwYXJhdG9yO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgaXNDaGlsZHJlbk9wZW4oaXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMub3BlbkNoaWxkcmVuTWFwLmdldChpdGVtKSA9PT0gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVDaGlsZHJlbihpdGVtOiBhbnksIGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMub3BlbkNoaWxkcmVuTWFwLmdldChpdGVtKSB8fCBmYWxzZTtcbiAgICB0aGlzLm9wZW5DaGlsZHJlbk1hcC5zZXQoaXRlbSwgIWN1cnJlbnQpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiaW5wdXRUeXBlID09PSAnZmllbGQnXCI+XG4gIDxsYWJlbCBjbGFzcz1cImhyLWxhYmVsIHNtLWJvbGQge3tnZXRTdGF0dXMoKX19XCIgKm5nSWY9XCJsYWJlbFwiPlxuICAgIHt7IGxhYmVsIH19IDxzcGFuICpuZ0lmPVwicmVxdWlyZWQgfHwgaGFzRXJyb3JcIj4qPC9zcGFuPlxuICA8L2xhYmVsPlxuPC9uZy1jb250YWluZXI+XG5cbjxkaXYgY2xhc3M9XCJncmF2aXR5LWlucHV0LWZpZWxkIHt7aW5wdXRUeXBlfX0te3tsYWJlbFNpemV9fSB7e3NpemV9fSB7e3dpZHRofX0td2lkdGgge3tnZXRTdGF0dXMoKX19XCJcbiAgICAgW2F0dHIuZGF0YS1jeV09XCJjeXByZXNzVGFnXCIgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duKClcIj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW5wdXRUeXBlID09PSAnZmllbGQnXCI+XG4gICAgPGdyYXZpdHktaWNvbiBjbGFzcz1cImxlZnRcIiBbaWNvbk5hbWVdPVwiaWNvbkxlZnRcIiBbaWNvblNpemVdPVwiaXNJY29uTGVmdE5ldygpID8gJ21kLTE2JyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpY29uTGVmdFwiPjwvZ3Jhdml0eS1pY29uPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQ3VycmVuY3kgJiYgc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwXCI+XG4gICAgICA8Z3Jhdml0eS1jdXJyZW5jeVxuICAgICAgICAgIFtuZ0NsYXNzXT1cImdldFNwYWNpbmdDbGFzcyhzaXplKVwiXG4gICAgICAgICAgW3NpemVdPVwiZ2V0Q3VycmVuY3lJY29uU2l6ZShzaXplKVwiXG4gICAgICAgICAgW2N1cnJlbmN5XT1cIntjdXJyZW5jeV9pZDogc2VsZWN0ZWRJdGVtc1swXT8uY3VycmVuY3lfaWR9XCI+XG4gICAgICA8L2dyYXZpdHktY3VycmVuY3k+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8cCBjbGFzcz1cImhyLWxhYmVsIHt7c2l6ZX19LXJlZ3VsYXIgdmFsdWVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwXCI+XG4gICAgICAgIHt7IHBsYWNlaG9sZGVyID8gcGxhY2Vob2xkZXIgOiBsYWJlbCB9fVxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VsZWN0ZWRJdGVtczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgIHt7IGNvbmZpZyA/IGl0ZW1bY29uZmlnLmxhYmVsXSA6IGl0ZW0gfX17eyBpICE9IHNlbGVjdGVkSXRlbXMubGVuZ3RoIC0gMSA/ICcsJyA6ICcnIH19XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9wPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQ3VycmVuY3kgJiYgc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwXCI+XG4gICAgICA8Z3Jhdml0eS1uZXR3b3JrLXBpbGxcbiAgICAgICAgICBbbmV0d29ya109XCJ7IGlzbzogc2VsZWN0ZWRJdGVtc1swXT8ubmV0d29yaz8uY29kZSwgaWQ6IHNlbGVjdGVkSXRlbXNbMF0/Lm5ldHdvcms/LmlkIH1cIj5cbiAgICAgIDwvZ3Jhdml0eS1uZXR3b3JrLXBpbGw+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8Z3Jhdml0eS1pY29uIGNsYXNzPVwicmlnaHRcIiBbaWNvbk5hbWVdPVwiZHJvcGRvd25PcGVuZWQgPyAnYXJyb3ctdXAnOiAnYXJyb3ctZG93bidcIlxuICAgICAgICAgICAgICAgICAgW2ljb25TaXplXT1cIidtZC0xNidcIiAqbmdJZj1cIiFpc1JlYWRvbmx5XCI+PC9ncmF2aXR5LWljb24+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbnB1dFR5cGUgPT09ICdsYWJlbCdcIj5cbiAgICA8Z3Jhdml0eS1kcm9wZG93bi1sYWJlbCAob25DbGlja0xhYmVsKT1cInRvZ2dsZURyb3Bkb3duKClcIiBbbGFiZWxdPVwiZ2V0TGFiZWxUZXh0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaXplXT1cImxhYmVsU2l6ZVwiIFtpc09wZW5dPVwiZHJvcGRvd25PcGVuZWRcIj5cbiAgICA8L2dyYXZpdHktZHJvcGRvd24tbGFiZWw+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1wYW5lbFwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiAqbmdJZj1cIml0ZW1zICYmIGRyb3Bkb3duT3BlbmVkXCJcbiAgICAgICBbYXR0ci5kYXRhLWN5XT1cImN5cHJlc3NUYWcgKyAnX3BhbmVsJ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtaW5wdXRcIj5cbiAgICAgIDxncmF2aXR5LWljb24gY2xhc3M9XCJzZWFyY2gtaWNvblwiIFtpY29uTmFtZV09XCInc2VhcmNoJ1wiIFtpY29uU2l6ZV09XCInc20tMTInXCI+PC9ncmF2aXR5LWljb24+XG4gICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJoci1sYWJlbCB7e3NpemV9fS1yZWd1bGFyXCIgKGlucHV0KT1cImZpbHRlckl0ZW1zKClcIlxuICAgICAgICAgICAgIFthdHRyLmRhdGEtY3ldPVwiY3lwcmVzc1RhZyArICdfc2VhcmNoX2lucHV0J1wiICNzZWFyY2hJbnB1dFxuICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dFwiIHBsYWNlaG9sZGVyPVwie3tjdXJyZW50TGFuZyA9PSAnZXMnID8gJ0J1c2NhcicgOiAnU2VhcmNoIGlucHV0J319XCI+XG4gICAgICA8Z3Jhdml0eS1pY29uIGNsYXNzPVwicG9pbnRlciByZXNldC1pY29uXCIgKGNsaWNrKT1cInNlYXJjaFRleHQgPSAnJzsgZmlsdGVySXRlbXMoKVwiIFtpY29uTmFtZV09XCIndW5zdWNjZXNzJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtpY29uU2l6ZV09XCInc20tMTInXCIgKm5nSWY9XCJzZWFyY2hUZXh0Py5sZW5ndGggPiAwXCI+PC9ncmF2aXR5LWljb24+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiaXRlbXMtY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaXRlbXNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tY29udGFpbmVyXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgYXZhaWxhYmxlT3B0aW9uc1wiIFthdHRyLmRhdGEtY3ldPVwiaXNDdXJyZW5jeSA/ICdjdXJyZW5jeV9vcHRpb25fJyArIGl0ZW0uY3VycmVuY3lfaWQgOiAnJ1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJoci1sYWJlbCBpdGVtIHt7c2l6ZX19LXJlZ3VsYXIgcG9pbnRlclwiXG4gICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiY2hlY2tJZlNlbGVjdGVkKGl0ZW0pXCJcbiAgICAgICAgICAgICAgIFtjbGFzcy5wYXJ0aWFsXT1cImlzUGFydGlhbGx5U2VsZWN0ZWQoaXRlbSlcIlxuICAgICAgICAgICAgICAgKGNsaWNrKT1cIml0ZW0uY2hpbGRyZW4/Lmxlbmd0aCAgPyBtdWx0aXBsZSA/c2VsZWN0SXRlbShpdGVtKSA6IHRvZ2dsZUNoaWxkcmVuKGl0ZW0sICRldmVudCkgOiBzZWxlY3RJdGVtKGl0ZW0pXCI+XG4gICAgICAgICAgICA8Z3Jhdml0eS1jaGVja2JveCAqbmdJZj1cIm11bHRpcGxlXCIgW25nQ2xhc3NdPVwiZ2V0U3BhY2luZ0NsYXNzKHNpemUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc1BhcnRpYWxdPVwiaXNQYXJ0aWFsbHlTZWxlY3RlZChpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJjaGVja0lmU2VsZWN0ZWQoaXRlbSlcIj48L2dyYXZpdHktY2hlY2tib3g+XG4gICAgICAgICAgICA8Z3Jhdml0eS1jdXJyZW5jeSAqbmdJZj1cImlzQ3VycmVuY3lcIiBbbmdDbGFzc109XCJnZXRTcGFjaW5nQ2xhc3Moc2l6ZSlcIiBbc2l6ZV09XCJnZXRDdXJyZW5jeUljb25TaXplKHNpemUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjdXJyZW5jeV09XCJ7Y3VycmVuY3lfaWQ6IGl0ZW0uY3VycmVuY3lfaWR9XCI+PC9ncmF2aXR5LWN1cnJlbmN5PlxuICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJnZXRTcGFjaW5nQ2xhc3Moc2l6ZSlcIj57eyBjb25maWcgPyBpdGVtW2NvbmZpZy5sYWJlbF0gOiBpdGVtIH19PC9kaXY+XG4gICAgICAgICAgICA8Z3Jhdml0eS1uZXR3b3JrLXBpbGwgKm5nSWY9XCJpc0N1cnJlbmN5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmV0d29ya109XCJ7IGlzbzogaXRlbS5uZXR3b3JrLmNvZGUsIGlkOiBpdGVtLm5ldHdvcmsuaWQgfVwiPjwvZ3Jhdml0eS1uZXR3b3JrLXBpbGw+XG4gICAgICAgICAgICA8Z3Jhdml0eS1pY29uIHN0eWxlPVwibWFyZ2luLWxlZnQ6IGF1dG9cIiAoY2xpY2spPVwidG9nZ2xlQ2hpbGRyZW4oaXRlbSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uTmFtZV09XCJpc0NoaWxkcmVuT3BlbihpdGVtKSA/ICdhcnJvdy11cCcgOiAnYXJyb3ctZG93bidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvblNpemVdPVwiJ21kLTE2J1wiICpuZ0lmPVwiaXRlbS5jaGlsZHJlbj8ubGVuZ3RoXCI+PC9ncmF2aXR5LWljb24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1jaGlsZHJlblwiICpuZ0lmPVwiaXRlbS5jaGlsZHJlbj8ubGVuZ3RoICYmIGlzQ2hpbGRyZW5PcGVuKGl0ZW0pXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjaGlsZCBvZiBpdGVtLmNoaWxkcmVuXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoci1sYWJlbCBpdGVtIHt7c2l6ZX19LXJlZ3VsYXIgcG9pbnRlclwiIFtuZ0NsYXNzXT1cInsnbXVsdGlwbGUnIDogbXVsdGlwbGV9XCJcbiAgICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiY2hlY2tJZlNlbGVjdGVkKGNoaWxkKVwiXG4gICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEl0ZW0oY2hpbGQpXCI+XG4gICAgICAgICAgICAgICAgPGdyYXZpdHktY2hlY2tib3ggKm5nSWY9XCJtdWx0aXBsZVwiIFtuZ0NsYXNzXT1cImdldE11bHRpbGV2ZWxTcGFjaW5nQ2xhc3Moc2l6ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImNoZWNrSWZTZWxlY3RlZChjaGlsZClcIj48L2dyYXZpdHktY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgPGdyYXZpdHktY3VycmVuY3kgKm5nSWY9XCJpc0N1cnJlbmN5XCIgW25nQ2xhc3NdPVwiZ2V0U3BhY2luZ0NsYXNzKHNpemUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2l6ZV09XCJnZXRDdXJyZW5jeUljb25TaXplKHNpemUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VycmVuY3ldPVwie2N1cnJlbmN5X2lkOiBjaGlsZC5jdXJyZW5jeV9pZH1cIj48L2dyYXZpdHktY3VycmVuY3k+XG4gICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJnZXRTcGFjaW5nQ2xhc3Moc2l6ZSlcIj57eyBjb25maWcgPyBjaGlsZFtjb25maWcubGFiZWxdIDogY2hpbGQgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8Z3Jhdml0eS1uZXR3b3JrLXBpbGwgKm5nSWY9XCJpc0N1cnJlbmN5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25ldHdvcmtdPVwieyBpc286IGNoaWxkLm5ldHdvcmsuY29kZSwgaWQ6IGNoaWxkLm5ldHdvcmsuaWQgfVwiPjwvZ3Jhdml0eS1uZXR3b3JrLXBpbGw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaHItbGFiZWwgaXRlbSB7e3NpemV9fS1ib2xkIG5vLXJlc3VsdHNcIiAqbmdJZj1cImF2YWlsYWJsZU9wdGlvbnMubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAge3sgY3VycmVudExhbmcgPT0gJ2VzJyA/ICdTaW4gcmVzdWx0YWRvcycgOiAnTm8gcmVzdWx0cycgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1mb290ZXJcIiAqbmdJZj1cInNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMFwiIFtjbGFzcy5ub3QtY2xlYXJhYmxlXT1cIiFjbGVhcmFibGVcIj5cbiAgICAgIDxwIGNsYXNzPVwiaHItbGFiZWwgcG9pbnRlciBzbS1yZWd1bGFyXCIgKGNsaWNrKT1cImNsZWFyU2VsZWN0aW9uKClcIiAqbmdJZj1cImNsZWFyYWJsZVwiXG4gICAgICAgICBbYXR0ci5kYXRhLWN5XT1cImN5cHJlc3NUYWcgKyAnX2NsZWFyJ1wiPlxuICAgICAgICB7eyBjdXJyZW50TGFuZyA9PSAnZXMnID8gJ0xpbXBpYXInIDogJ0NsZWFyIHNlbGVjdGlvbicgfX1cbiAgICAgIDwvcD5cbiAgICAgIDxwIGNsYXNzPVwiaHItbGFiZWwgcG9pbnRlciBzbS1ib2xkXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgdG9nZ2xlRHJvcGRvd24oKVwiXG4gICAgICAgICAqbmdJZj1cImF2YWlsYWJsZU9wdGlvbnMubGVuZ3RoICE9IDBcIiBbYXR0ci5kYXRhLWN5XT1cImN5cHJlc3NUYWcgKyAnX2FwcGx5J1wiPlxuICAgICAgICB7eyBjdXJyZW50TGFuZyA9PSAnZXMnID8gJ0FwbGljYXInIDogJ0FwcGx5JyB9fVxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8c2VjdGlvbiBjbGFzcz1cImV4dGVybmFsLWNvbnRlbnRcIiAqbmdJZj1cIiFpdGVtcyAmJiBkcm9wZG93bk9wZW5lZFwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvc2VjdGlvbj5cbjwvZGl2PlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiaW5wdXRUeXBlID09PSAnZmllbGQnXCI+XG4gIDxwIGNsYXNzPVwiaHItbGFiZWwgc20tcmVndWxhciBzdXBwb3J0aW5nLXRleHQge3tnZXRTdGF0dXMoKX19IHt7c2l6ZX19XCIgKm5nSWY9XCJzdXBwb3J0VGV4dFwiPlxuICAgIDxncmF2aXR5LWljb24gW2ljb25OYW1lXT1cIidxdWVzdGlvbi1jaXJjbGUnXCIgKm5nSWY9XCJoYXNFcnJvclwiIFtpY29uU2l6ZV09XCInbWQtMTYnXCI+PC9ncmF2aXR5LWljb24+XG4gICAge3sgc3VwcG9ydFRleHQgfX1cbiAgPC9wPlxuICA8cCBjbGFzcz1cImhyLWxhYmVsIHNtLXJlZ3VsYXIgc3VwcG9ydGluZy10ZXh0IHt7Z2V0U3RhdHVzKCl9fSB7e3NpemV9fVwiXG4gICAgICpuZ0lmPVwiIXN1cHBvcnRUZXh0ICYmIGdldFN0YXR1cygpID09ICdhY3RpdmUnICYmIHNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDAgJiYgcmVxdWlyZWRcIj5cbiAgICB7eyBjdXJyZW50TGFuZyA9PSAnZXMnID8gJ1JlcXVlcmlkbycgOiAnUmVxdWlyZWQnIH19XG4gIDwvcD5cbjwvbmctY29udGFpbmVyPiJdfQ==
354
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3Jhdml0eS1kcm9wZG93bi1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyYXZpdHktZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvZ3Jhdml0eS1kcm9wZG93bi1saXN0L2dyYXZpdHktZHJvcGRvd24tbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktZHJvcGRvd24tbGlzdC9ncmF2aXR5LWRyb3Bkb3duLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBYyxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQStCLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNsSixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7Ozs7Ozs7Ozs7QUFROUMsTUFBTSxPQUFPLDRCQUE0QjtJQUN2QyxJQUNJLGFBQWEsS0FBYyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBQzVELElBQUksYUFBYSxDQUFDLEtBQWMsSUFBSSxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7SUE4QmxFLElBQ0ksS0FBSyxDQUFDLFdBQXlDO1FBQ2pELElBQUksV0FBVyxFQUFFO1lBQ2YsV0FBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNuQztJQUNILENBQUM7SUFBQSxDQUFDO0lBUUYsWUFBNkIsWUFBMEIsRUFBVSxLQUFpQjtRQUFyRCxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUFVLFVBQUssR0FBTCxLQUFLLENBQVk7UUF6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QUFNO2dCQUNvQixxQkFBcUI7c0JBQS9DLE1BQU07dUJBQUMsVUFBVTtnQkFHRixTQUFTO3NCQUF4QixLQUFLO2dCQUNVLE1BQU07c0JBQXJCLEtBQUs7Z0JBQ1UsV0FBVztzQkFBMUIsS0FBSztnQkFDVSxZQUFZO3NCQUEzQixLQUFLO2dCQUNVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUNVLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsS0FBSztzQkFBcEIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUdVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ1UsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLEtBQUs7c0JBQXBCLEtBQUs7Z0JBSUYsS0FBSztzQkFEUixTQUFTO3VCQUFDLGFBQWE7Z0JBMk1vQixlQUFlO3NCQUExRCxZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZSwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7R3Jhdml0eUljb25Db21wb25lbnR9IGZyb20gXCIuLi9ncmF2aXR5LWljb24vZ3Jhdml0eS1pY29uLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtGaWx0ZXJCeVBpcGV9IGZyb20gXCIuL2ZpbHRlci1ieS5waXBlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dyYXZpdHktZHJvcGRvd24tbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9ncmF2aXR5LWRyb3Bkb3duLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ncmF2aXR5LWRyb3Bkb3duLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbRmlsdGVyQnlQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBHcmF2aXR5RHJvcGRvd25MaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KClcbiAgZ2V0IGRyb3Bkb3duU3RhdGUoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmRyb3Bkb3duT3BlbmVkOyB9XG4gIHNldCBkcm9wZG93blN0YXRlKHZhbHVlOiBib29sZWFuKSB7IHRoaXMuZHJvcGRvd25PcGVuZWQgPSB2YWx1ZTsgfVxuXG4gIEBPdXRwdXQoKSBkcm9wZG93blN0YXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCdyZXNwb25zZScpIHB1YmxpYyBzZWxlY3RlZEl0ZW1zUmVzcG9uc2U6IEV2ZW50RW1pdHRlcjxhbnlbXSB8IGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLy8gQ29tcG9uZW50IGZlYXR1cmVzXG4gIEBJbnB1dCgpIHB1YmxpYyBjbGVhcmFibGU6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgY29uZmlnPzogeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nOyB9O1xuICBASW5wdXQoKSBwdWJsaWMgY3VycmVudExhbmc6IHN0cmluZyA9ICdlbic7XG4gIEBJbnB1dCgpIHB1YmxpYyBjdXN0b21WYWx1ZXM6IEFycmF5PGFueT4gfCBhbnk7XG4gIEBJbnB1dCgpIHB1YmxpYyBjeXByZXNzVGFnOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBoYXNFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgaWNvbkxlZnQ6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIGlzQ3VycmVuY3k6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGlzRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGlzUmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGl0ZW1zOiBBcnJheTxhbnk+O1xuICBASW5wdXQoKSBwdWJsaWMgbGFiZWw6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIG11bHRpcGxlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIHN1cHBvcnRUZXh0OiBzdHJpbmc7XG5cbiAgLy8gQXBwZWFyYW5jZSBzZXR0aW5nc1xuICBASW5wdXQoKSBwdWJsaWMgbGFiZWxTaXplOiAnc20nIHwgJ21kJyB8ICdsZycgPSAnc20nO1xuICBASW5wdXQoKSBwdWJsaWMgc2l6ZTogJ3NtJyB8ICdtZCcgfCAnbGcnIHwgJ3hsJyA9ICdtZCc7XG4gIEBJbnB1dCgpIHB1YmxpYyBpbnB1dFR5cGU6ICdmaWVsZCcgfCAnbGFiZWwnID0gJ2ZpZWxkJztcbiAgQElucHV0KCkgcHVibGljIHdpZHRoOiAnc2hvcnQnIHwgJ21lZGl1bScgfCAnZnVsbCcgfCAnZml0JyA9ICdzaG9ydCc7XG5cblxuICBAVmlld0NoaWxkKCdzZWFyY2hJbnB1dCcpXG4gIHNldCB3YXRjaChzZWFyY2hJbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pikge1xuICAgIGlmIChzZWFyY2hJbnB1dCkge1xuICAgICAgc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfTtcblxuICBwdWJsaWMgYXZhaWxhYmxlT3B0aW9uczogYW55W10gPSBbXTtcbiAgcHVibGljIGRyb3Bkb3duT3BlbmVkOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBzZWFyY2hUZXh0OiBzdHJpbmcgPSAnJztcbiAgcHVibGljIHNlbGVjdGVkSXRlbXM6IGFueVtdID0gW107XG4gIHB1YmxpYyBvcGVuQ2hpbGRyZW5NYXAgPSBuZXcgTWFwPGFueSwgYm9vbGVhbj4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZpbHRlckJ5UGlwZTogRmlsdGVyQnlQaXBlLCBwcml2YXRlIF9lcmVmOiBFbGVtZW50UmVmKSB7IH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ2l0ZW1zJ10/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5hdmFpbGFibGVPcHRpb25zID0gdGhpcy5pdGVtcztcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1snY3VzdG9tVmFsdWVzJ10pIHtcbiAgICAgIGNvbnN0IGNoYW5nZUl0ZW06IFNpbXBsZUNoYW5nZSA9IGNoYW5nZXNbJ2N1c3RvbVZhbHVlcyddO1xuICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gY2hhbmdlSXRlbT8uY3VycmVudFZhbHVlO1xuXG4gICAgICBjb25zdCBmaW5kT3B0aW9uUmVjdXJzaXZlbHkgPSAoaXRlbXM6IGFueVtdLCB2YWx1ZTogYW55KTogYW55IHwgbnVsbCA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgICAgIGNvbnN0IGl0ZW1WYWx1ZSA9IHRoaXMuY29uZmlnID8gaXRlbVt0aGlzLmNvbmZpZy52YWx1ZV0gOiBpdGVtO1xuICAgICAgICAgIGlmIChpdGVtVmFsdWUgPT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpdGVtLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICBjb25zdCBmb3VuZENoaWxkID0gZmluZE9wdGlvblJlY3Vyc2l2ZWx5KGl0ZW0uY2hpbGRyZW4sIHZhbHVlKTtcbiAgICAgICAgICAgIGlmIChmb3VuZENoaWxkKSByZXR1cm4gZm91bmRDaGlsZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9O1xuXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY3VycmVudFZhbHVlKSkge1xuICAgICAgICBjdXJyZW50VmFsdWUuZm9yRWFjaCgodmFsOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBmb3VuZCA9IGZpbmRPcHRpb25SZWN1cnNpdmVseSh0aGlzLml0ZW1zLCB2YWwpO1xuICAgICAgICAgIGlmIChmb3VuZCAmJiAhdGhpcy5zZWxlY3RlZEl0ZW1zLmluY2x1ZGVzKGZvdW5kKSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goZm91bmQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGN1cnJlbnRWYWx1ZSAhPSBudWxsICYmIGN1cnJlbnRWYWx1ZSAhPT0gJycpIHtcbiAgICAgICAgY29uc3QgZm91bmQgPSBmaW5kT3B0aW9uUmVjdXJzaXZlbHkodGhpcy5pdGVtcywgY3VycmVudFZhbHVlKTtcbiAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW2ZvdW5kXTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghY3VycmVudFZhbHVlICYmICFjaGFuZ2VJdGVtLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgIHRoaXMuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0U3RhdHVzKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCkge3JldHVybiAnZGlzYWJsZWQnO31cbiAgICBlbHNlIGlmICh0aGlzLmlzUmVhZG9ubHkpIHtyZXR1cm4gJ3JlYWRvbmx5Jzt9XG4gICAgZWxzZSBpZiAodGhpcy5oYXNFcnJvcikge3JldHVybiAnZXJyb3InO31cbiAgICBlbHNlIGlmICh0aGlzLmRyb3Bkb3duT3BlbmVkKSB7cmV0dXJuICdvcGVuJzt9XG4gICAgZWxzZSBpZiAodGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDApIHtyZXR1cm4gJ3NlbGVjdGVkJzt9XG4gICAgZWxzZSB7cmV0dXJuICdhY3RpdmUnO31cbiAgfVxuXG4gIHB1YmxpYyBpc0ljb25MZWZ0TmV3KCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmljb25MZWZ0KSB7XG4gICAgICByZXR1cm4gR3Jhdml0eUljb25Db21wb25lbnQuaXNOZXdJY29uKHRoaXMuaWNvbkxlZnQpO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVEcm9wZG93bigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNEaXNhYmxlZCAmJiAhdGhpcy5pc1JlYWRvbmx5KSB7XG4gICAgICB0aGlzLmRyb3Bkb3duT3BlbmVkID0gIXRoaXMuZHJvcGRvd25PcGVuZWQ7XG4gICAgICB0aGlzLmRyb3Bkb3duU3RhdGVDaGFuZ2UuZW1pdCh0aGlzLmRyb3Bkb3duT3BlbmVkKTtcblxuICAgICAgaWYgKCF0aGlzLmRyb3Bkb3duT3BlbmVkKSB7XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zUmVzcG9uc2UuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW1zWzBdKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXNSZXNwb25zZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtc1swXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XG4gICAgICAgIHRoaXMuYXZhaWxhYmxlT3B0aW9ucyA9IHRoaXMuaXRlbXM7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNlbGVjdEl0ZW0oaXRlbVRvQWRkOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBpc1BhcmVudCA9ICEhaXRlbVRvQWRkLmNoaWxkcmVuO1xuXG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSB0aGlzLmNoZWNrSWZTZWxlY3RlZChpdGVtVG9BZGQpO1xuXG4gICAgICBpZiAoaXNTZWxlY3RlZCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGVkSXRlbXMuZmlsdGVyKGkgPT5cbiAgICAgICAgICAodGhpcy5jb25maWcgPyBpW3RoaXMuY29uZmlnLnZhbHVlXSA6IGkpICE9PVxuICAgICAgICAgICh0aGlzLmNvbmZpZyA/IGl0ZW1Ub0FkZFt0aGlzLmNvbmZpZy52YWx1ZV0gOiBpdGVtVG9BZGQpXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGlzUGFyZW50KSB7XG4gICAgICAgICAgaXRlbVRvQWRkLmNoaWxkcmVuLmZvckVhY2goY2hpbGQgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcihpID0+IGkgIT09IGNoaWxkKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLml0ZW1zLmZvckVhY2gocGFyZW50ID0+IHtcbiAgICAgICAgICAgIGlmIChwYXJlbnQuY2hpbGRyZW4/LmluY2x1ZGVzKGl0ZW1Ub0FkZCkpIHtcbiAgICAgICAgICAgICAgY29uc3QgYW55U2VsZWN0ZWQgPSBwYXJlbnQuY2hpbGRyZW4uc29tZShjaGlsZCA9PiB0aGlzLmNoZWNrSWZTZWxlY3RlZChjaGlsZCkpO1xuICAgICAgICAgICAgICBjb25zdCBhbGxTZWxlY3RlZCA9IHBhcmVudC5jaGlsZHJlbi5ldmVyeShjaGlsZCA9PiB0aGlzLmNoZWNrSWZTZWxlY3RlZChjaGlsZCkpO1xuICAgICAgICAgICAgICBpZiAoIWFueVNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcihpID0+IGkgIT09IHBhcmVudCk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoYWxsU2VsZWN0ZWQgJiYgIXRoaXMuY2hlY2tJZlNlbGVjdGVkKHBhcmVudCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChwYXJlbnQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbVRvQWRkKTtcblxuICAgICAgICBpZiAoaXNQYXJlbnQpIHtcbiAgICAgICAgICBpdGVtVG9BZGQuY2hpbGRyZW4uZm9yRWFjaChjaGlsZCA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuY2hlY2tJZlNlbGVjdGVkKGNoaWxkKSkge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChjaGlsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKHBhcmVudCA9PiB7XG4gICAgICAgICAgICBpZiAocGFyZW50LmNoaWxkcmVuPy5pbmNsdWRlcyhpdGVtVG9BZGQpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGFsbFNlbGVjdGVkID0gcGFyZW50LmNoaWxkcmVuLmV2ZXJ5KGNoaWxkID0+IHRoaXMuY2hlY2tJZlNlbGVjdGVkKGNoaWxkKSk7XG4gICAgICAgICAgICAgIGlmIChhbGxTZWxlY3RlZCAmJiAhdGhpcy5jaGVja0lmU2VsZWN0ZWQocGFyZW50KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKHBhcmVudCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbaXRlbVRvQWRkXTtcbiAgICAgIHRoaXMudG9nZ2xlRHJvcGRvd24oKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNQYXJ0aWFsbHlTZWxlY3RlZChpdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAoIWl0ZW0uY2hpbGRyZW4/Lmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRDaGlsZHJlbiA9IGl0ZW0uY2hpbGRyZW4uZmlsdGVyKGNoaWxkID0+IHRoaXMuY2hlY2tJZlNlbGVjdGVkKGNoaWxkKSk7XG4gICAgcmV0dXJuIHNlbGVjdGVkQ2hpbGRyZW4ubGVuZ3RoID4gMCAmJiBzZWxlY3RlZENoaWxkcmVuLmxlbmd0aCA8IGl0ZW0uY2hpbGRyZW4ubGVuZ3RoO1xuICB9XG5cbiAgcHVibGljIGNoZWNrSWZTZWxlY3RlZChpdGVtVG9GaW5kOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW1zLnNvbWUoaXRlbSA9PlxuICAgICAgKHRoaXMuY29uZmlnID8gaXRlbVt0aGlzLmNvbmZpZy52YWx1ZV0gOiBpdGVtKSA9PT1cbiAgICAgICh0aGlzLmNvbmZpZyA/IGl0ZW1Ub0ZpbmRbdGhpcy5jb25maWcudmFsdWVdIDogaXRlbVRvRmluZClcbiAgICApOyAgfVxuXG5cbiAgcHVibGljIGNsZWFyU2VsZWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xuXG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1Jlc3BvbnNlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zUmVzcG9uc2UuZW1pdChudWxsKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZmlsdGVySXRlbXMoKTogdm9pZCB7XG4gICAgY29uc3Qgc2VhcmNoID0gdGhpcy5zZWFyY2hUZXh0Py50b0xvd2VyQ2FzZSgpO1xuXG4gICAgY29uc3QgZmlsdGVyUmVjdXJzaXZlID0gKGl0ZW1zOiBhbnlbXSk6IGFueVtdID0+IHtcbiAgICAgIHJldHVybiBpdGVtc1xuICAgICAgICAubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5jb25maWcgPyBpdGVtW3RoaXMuY29uZmlnLmxhYmVsXSA6IGl0ZW07XG4gICAgICAgICAgY29uc3QgbWF0Y2hlcyA9IGxhYmVsPy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoKTtcbiAgICAgICAgICBjb25zdCBmaWx0ZXJlZENoaWxkcmVuID0gaXRlbS5jaGlsZHJlbiA/IGZpbHRlclJlY3Vyc2l2ZShpdGVtLmNoaWxkcmVuKSA6IFtdO1xuXG4gICAgICAgICAgaWYgKG1hdGNoZXMgfHwgZmlsdGVyZWRDaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICBjaGlsZHJlbjogZmlsdGVyZWRDaGlsZHJlblxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSlcbiAgICAgICAgLmZpbHRlcihpdGVtID0+IGl0ZW0gIT09IG51bGwpO1xuICAgIH07XG5cbiAgICB0aGlzLmF2YWlsYWJsZU9wdGlvbnMgPSBmaWx0ZXJSZWN1cnNpdmUodGhpcy5pdGVtcyk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pIG9uRG9jdW1lbnRDbGljaygkZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fZXJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKCRldmVudC50YXJnZXQpICYmIHRoaXMuZHJvcGRvd25PcGVuZWQpIHtcbiAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXNSZXNwb25zZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbXNbMF0pIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXNSZXNwb25zZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtc1swXSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XG4gICAgICB0aGlzLmRyb3Bkb3duT3BlbmVkID0gZmFsc2U7XG4gICAgICB0aGlzLmF2YWlsYWJsZU9wdGlvbnMgPSB0aGlzLml0ZW1zO1xuICAgICAgdGhpcy5kcm9wZG93blN0YXRlQ2hhbmdlLmVtaXQodGhpcy5kcm9wZG93bk9wZW5lZCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldEN1cnJlbmN5SWNvblNpemUoc2l6ZTogc3RyaW5nKSB7XG4gICAgc3dpdGNoIChzaXplKSB7XG4gICAgICBjYXNlICdzbSc6XG4gICAgICAgIHJldHVybiAnc20tMTYnO1xuICAgICAgY2FzZSAnbGcnOlxuICAgICAgICByZXR1cm4gJ2xnLTMyJztcbiAgICAgIGNhc2UgJ3hsJzpcbiAgICAgICAgcmV0dXJuICd4bC00MCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ21kLTI0JztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0U3BhY2luZ0NsYXNzKHNpemU6IHN0cmluZykge1xuICAgIHN3aXRjaCAoc2l6ZSkge1xuICAgICAgY2FzZSAnc20nOiByZXR1cm4gJ2dyYXZpdHktbWFyZ2luLXJpZ2h0LXh4cyc7XG4gICAgICBjYXNlICdtZCc6IHJldHVybiAnZ3Jhdml0eS1tYXJnaW4tcmlnaHQteHMnO1xuICAgICAgY2FzZSAnbGcnOiByZXR1cm4gJ2dyYXZpdHktbWFyZ2luLXJpZ2h0LXNtJztcbiAgICAgIGNhc2UgJ3hsJzogcmV0dXJuICdncmF2aXR5LW1hcmdpbi1yaWdodC1tZCc7XG4gICAgICBkZWZhdWx0OiByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldE11bHRpbGV2ZWxTcGFjaW5nQ2xhc3Moc2l6ZTogc3RyaW5nKSB7XG4gICAgc3dpdGNoIChzaXplKSB7XG4gICAgICBjYXNlICdzbSc6IHJldHVybiAnZ3Jhdml0eS1tYXJnaW4tcmlnaHQtbWQnO1xuICAgICAgY2FzZSAnbWQnOiByZXR1cm4gJ2dyYXZpdHktbWFyZ2luLXJpZ2h0LWxnJztcbiAgICAgIGRlZmF1bHQ6IHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0TGFiZWxUZXh0KCk6IHN0cmluZyB7XG4gICAgbGV0IHJlc3VsdDogc3RyaW5nID0gJyc7XG4gICAgaWYodGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PT0gMCl7XG4gICAgICAgcmVzdWx0ID0gdGhpcy5sYWJlbDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcbiAgICAgICAgbGV0IGRpc3BsYXlWYWx1ZSA9IHRoaXMuY29uZmlnID8gaXRlbVt0aGlzLmNvbmZpZy5sYWJlbF0gOiBpdGVtO1xuICAgICAgICBsZXQgc2VwYXJhdG9yID0gaSAhPT0gdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCAtIDEgPyAnLCcgOiAnJztcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgZGlzcGxheVZhbHVlICsgc2VwYXJhdG9yO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgaXNDaGlsZHJlbk9wZW4oaXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMub3BlbkNoaWxkcmVuTWFwLmdldChpdGVtKSA9PT0gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVDaGlsZHJlbihpdGVtOiBhbnksIGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMub3BlbkNoaWxkcmVuTWFwLmdldChpdGVtKSB8fCBmYWxzZTtcbiAgICB0aGlzLm9wZW5DaGlsZHJlbk1hcC5zZXQoaXRlbSwgIWN1cnJlbnQpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiaW5wdXRUeXBlID09PSAnZmllbGQnXCI+XG4gIDxsYWJlbCBjbGFzcz1cImhyLWxhYmVsIHNtLWJvbGQge3tnZXRTdGF0dXMoKX19XCIgKm5nSWY9XCJsYWJlbFwiPlxuICAgIHt7IGxhYmVsIH19IDxzcGFuICpuZ0lmPVwicmVxdWlyZWQgfHwgaGFzRXJyb3JcIj4qPC9zcGFuPlxuICA8L2xhYmVsPlxuPC9uZy1jb250YWluZXI+XG5cbjxkaXYgY2xhc3M9XCJncmF2aXR5LWlucHV0LWZpZWxkIHt7aW5wdXRUeXBlfX0te3tsYWJlbFNpemV9fSB7e3NpemV9fSB7e3dpZHRofX0td2lkdGgge3tnZXRTdGF0dXMoKX19XCJcbiAgICAgW2F0dHIuZGF0YS1jeV09XCJjeXByZXNzVGFnXCIgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duKClcIj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW5wdXRUeXBlID09PSAnZmllbGQnXCI+XG4gICAgPGdyYXZpdHktaWNvbiBjbGFzcz1cImxlZnRcIiBbaWNvbk5hbWVdPVwiaWNvbkxlZnRcIiBbaWNvblNpemVdPVwiaXNJY29uTGVmdE5ldygpID8gJ21kLTE2JyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpY29uTGVmdFwiPjwvZ3Jhdml0eS1pY29uPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQ3VycmVuY3kgJiYgc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwXCI+XG4gICAgICA8Z3Jhdml0eS1jdXJyZW5jeVxuICAgICAgICAgIFtuZ0NsYXNzXT1cImdldFNwYWNpbmdDbGFzcyhzaXplKVwiXG4gICAgICAgICAgW3NpemVdPVwiZ2V0Q3VycmVuY3lJY29uU2l6ZShzaXplKVwiXG4gICAgICAgICAgW2N1cnJlbmN5XT1cIntjdXJyZW5jeV9pZDogc2VsZWN0ZWRJdGVtc1swXT8uY3VycmVuY3lfaWR9XCI+XG4gICAgICA8L2dyYXZpdHktY3VycmVuY3k+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8cCBjbGFzcz1cImhyLWxhYmVsIHt7c2l6ZX19LXJlZ3VsYXIgdmFsdWVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwXCI+XG4gICAgICAgIHt7IHBsYWNlaG9sZGVyID8gcGxhY2Vob2xkZXIgOiBsYWJlbCB9fVxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VsZWN0ZWRJdGVtczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgIHt7IGNvbmZpZyA/IGl0ZW1bY29uZmlnLmxhYmVsXSA6IGl0ZW0gfX17eyBpICE9IHNlbGVjdGVkSXRlbXMubGVuZ3RoIC0gMSA/ICcsJyA6ICcnIH19XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9wPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQ3VycmVuY3kgJiYgc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwXCI+XG4gICAgICA8Z3Jhdml0eS1uZXR3b3JrLXBpbGxcbiAgICAgICAgICBbbmV0d29ya109XCJ7IGlzbzogc2VsZWN0ZWRJdGVtc1swXT8ubmV0d29yaz8uY29kZSwgaWQ6IHNlbGVjdGVkSXRlbXNbMF0/Lm5ldHdvcms/LmlkIH1cIj5cbiAgICAgIDwvZ3Jhdml0eS1uZXR3b3JrLXBpbGw+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8Z3Jhdml0eS1pY29uIGNsYXNzPVwicmlnaHRcIiBbaWNvbk5hbWVdPVwiZHJvcGRvd25PcGVuZWQgPyAnYXJyb3ctdXAnOiAnYXJyb3ctZG93bidcIlxuICAgICAgICAgICAgICAgICAgW2ljb25TaXplXT1cIidtZC0xNidcIiAqbmdJZj1cIiFpc1JlYWRvbmx5XCI+PC9ncmF2aXR5LWljb24+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbnB1dFR5cGUgPT09ICdsYWJlbCdcIj5cbiAgICA8Z3Jhdml0eS1kcm9wZG93bi1sYWJlbCAob25DbGlja0xhYmVsKT1cInRvZ2dsZURyb3Bkb3duKClcIiBbbGFiZWxdPVwiZ2V0TGFiZWxUZXh0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaXplXT1cImxhYmVsU2l6ZVwiIFtpc09wZW5dPVwiZHJvcGRvd25PcGVuZWRcIj5cbiAgICA8L2dyYXZpdHktZHJvcGRvd24tbGFiZWw+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1wYW5lbFwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiAqbmdJZj1cIml0ZW1zICYmIGRyb3Bkb3duT3BlbmVkXCJcbiAgICAgICBbYXR0ci5kYXRhLWN5XT1cImN5cHJlc3NUYWcgKyAnX3BhbmVsJ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtaW5wdXRcIj5cbiAgICAgIDxncmF2aXR5LWljb24gY2xhc3M9XCJzZWFyY2gtaWNvblwiIFtpY29uTmFtZV09XCInc2VhcmNoJ1wiIFtpY29uU2l6ZV09XCInc20tMTInXCI+PC9ncmF2aXR5LWljb24+XG4gICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJoci1sYWJlbCB7e3NpemV9fS1yZWd1bGFyXCIgKGlucHV0KT1cImZpbHRlckl0ZW1zKClcIlxuICAgICAgICAgICAgIFthdHRyLmRhdGEtY3ldPVwiY3lwcmVzc1RhZyArICdfc2VhcmNoX2lucHV0J1wiICNzZWFyY2hJbnB1dFxuICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dFwiIHBsYWNlaG9sZGVyPVwie3tjdXJyZW50TGFuZyA9PSAnZXMnID8gJ0J1c2NhcicgOiAnU2VhcmNoIGlucHV0J319XCI+XG4gICAgICA8Z3Jhdml0eS1pY29uIGNsYXNzPVwicG9pbnRlciByZXNldC1pY29uXCIgKGNsaWNrKT1cInNlYXJjaFRleHQgPSAnJzsgZmlsdGVySXRlbXMoKVwiIFtpY29uTmFtZV09XCIndW5zdWNjZXNzJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtpY29uU2l6ZV09XCInc20tMTInXCIgKm5nSWY9XCJzZWFyY2hUZXh0Py5sZW5ndGggPiAwXCI+PC9ncmF2aXR5LWljb24+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiaXRlbXMtY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaXRlbXNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tY29udGFpbmVyXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgYXZhaWxhYmxlT3B0aW9uc1wiIFthdHRyLmRhdGEtY3ldPVwiaXNDdXJyZW5jeSA/ICdjdXJyZW5jeV9vcHRpb25fJyArIGl0ZW0uY3VycmVuY3lfaWQgOiAnJ1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJoci1sYWJlbCBpdGVtIHt7c2l6ZX19LXJlZ3VsYXIgcG9pbnRlclwiXG4gICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiY2hlY2tJZlNlbGVjdGVkKGl0ZW0pXCJcbiAgICAgICAgICAgICAgIFtjbGFzcy5wYXJ0aWFsXT1cImlzUGFydGlhbGx5U2VsZWN0ZWQoaXRlbSlcIlxuICAgICAgICAgICAgICAgKGNsaWNrKT1cIml0ZW0uY2hpbGRyZW4/Lmxlbmd0aCAgPyBtdWx0aXBsZSA/c2VsZWN0SXRlbShpdGVtKSA6IHRvZ2dsZUNoaWxkcmVuKGl0ZW0sICRldmVudCkgOiBzZWxlY3RJdGVtKGl0ZW0pXCI+XG4gICAgICAgICAgICA8Z3Jhdml0eS1jaGVja2JveCAqbmdJZj1cIm11bHRpcGxlXCIgW25nQ2xhc3NdPVwiZ2V0U3BhY2luZ0NsYXNzKHNpemUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc1BhcnRpYWxdPVwiaXNQYXJ0aWFsbHlTZWxlY3RlZChpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJjaGVja0lmU2VsZWN0ZWQoaXRlbSlcIj48L2dyYXZpdHktY2hlY2tib3g+XG4gICAgICAgICAgICA8Z3Jhdml0eS1jdXJyZW5jeSAqbmdJZj1cImlzQ3VycmVuY3lcIiBbbmdDbGFzc109XCJnZXRTcGFjaW5nQ2xhc3Moc2l6ZSlcIiBbc2l6ZV09XCJnZXRDdXJyZW5jeUljb25TaXplKHNpemUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjdXJyZW5jeV09XCJ7Y3VycmVuY3lfaWQ6IGl0ZW0uY3VycmVuY3lfaWR9XCI+PC9ncmF2aXR5LWN1cnJlbmN5PlxuICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJnZXRTcGFjaW5nQ2xhc3Moc2l6ZSlcIj57eyBjb25maWcgPyBpdGVtW2NvbmZpZy5sYWJlbF0gOiBpdGVtIH19PC9kaXY+XG4gICAgICAgICAgICA8Z3Jhdml0eS1uZXR3b3JrLXBpbGwgKm5nSWY9XCJpc0N1cnJlbmN5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmV0d29ya109XCJ7IGlzbzogaXRlbS5uZXR3b3JrLmNvZGUsIGlkOiBpdGVtLm5ldHdvcmsuaWQgfVwiPjwvZ3Jhdml0eS1uZXR3b3JrLXBpbGw+XG4gICAgICAgICAgICA8Z3Jhdml0eS1pY29uIHN0eWxlPVwibWFyZ2luLWxlZnQ6IGF1dG9cIiAoY2xpY2spPVwidG9nZ2xlQ2hpbGRyZW4oaXRlbSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uTmFtZV09XCJpc0NoaWxkcmVuT3BlbihpdGVtKSA/ICdhcnJvdy11cCcgOiAnYXJyb3ctZG93bidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvblNpemVdPVwiJ21kLTE2J1wiICpuZ0lmPVwiaXRlbS5jaGlsZHJlbj8ubGVuZ3RoXCI+PC9ncmF2aXR5LWljb24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1jaGlsZHJlblwiICpuZ0lmPVwiaXRlbS5jaGlsZHJlbj8ubGVuZ3RoICYmIGlzQ2hpbGRyZW5PcGVuKGl0ZW0pXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjaGlsZCBvZiBpdGVtLmNoaWxkcmVuXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoci1sYWJlbCBpdGVtIHt7c2l6ZX19LXJlZ3VsYXIgcG9pbnRlclwiIFtuZ0NsYXNzXT1cInsnbXVsdGlwbGUnIDogbXVsdGlwbGV9XCJcbiAgICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiY2hlY2tJZlNlbGVjdGVkKGNoaWxkKVwiXG4gICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEl0ZW0oY2hpbGQpXCI+XG4gICAgICAgICAgICAgICAgPGdyYXZpdHktY2hlY2tib3ggKm5nSWY9XCJtdWx0aXBsZVwiIFtuZ0NsYXNzXT1cImdldE11bHRpbGV2ZWxTcGFjaW5nQ2xhc3Moc2l6ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImNoZWNrSWZTZWxlY3RlZChjaGlsZClcIj48L2dyYXZpdHktY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgPGdyYXZpdHktY3VycmVuY3kgKm5nSWY9XCJpc0N1cnJlbmN5XCIgW25nQ2xhc3NdPVwiZ2V0U3BhY2luZ0NsYXNzKHNpemUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2l6ZV09XCJnZXRDdXJyZW5jeUljb25TaXplKHNpemUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VycmVuY3ldPVwie2N1cnJlbmN5X2lkOiBjaGlsZC5jdXJyZW5jeV9pZH1cIj48L2dyYXZpdHktY3VycmVuY3k+XG4gICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJnZXRTcGFjaW5nQ2xhc3Moc2l6ZSlcIj57eyBjb25maWcgPyBjaGlsZFtjb25maWcubGFiZWxdIDogY2hpbGQgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8Z3Jhdml0eS1uZXR3b3JrLXBpbGwgKm5nSWY9XCJpc0N1cnJlbmN5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25ldHdvcmtdPVwieyBpc286IGNoaWxkLm5ldHdvcmsuY29kZSwgaWQ6IGNoaWxkLm5ldHdvcmsuaWQgfVwiPjwvZ3Jhdml0eS1uZXR3b3JrLXBpbGw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaHItbGFiZWwgaXRlbSB7e3NpemV9fS1ib2xkIG5vLXJlc3VsdHNcIiAqbmdJZj1cImF2YWlsYWJsZU9wdGlvbnMubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAge3sgY3VycmVudExhbmcgPT0gJ2VzJyA/ICdTaW4gcmVzdWx0YWRvcycgOiAnTm8gcmVzdWx0cycgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1mb290ZXJcIiAqbmdJZj1cInNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMFwiIFtjbGFzcy5ub3QtY2xlYXJhYmxlXT1cIiFjbGVhcmFibGVcIj5cbiAgICAgIDxwIGNsYXNzPVwiaHItbGFiZWwgcG9pbnRlciBzbS1yZWd1bGFyXCIgKGNsaWNrKT1cImNsZWFyU2VsZWN0aW9uKClcIiAqbmdJZj1cImNsZWFyYWJsZVwiXG4gICAgICAgICBbYXR0ci5kYXRhLWN5XT1cImN5cHJlc3NUYWcgKyAnX2NsZWFyJ1wiPlxuICAgICAgICB7eyBjdXJyZW50TGFuZyA9PSAnZXMnID8gJ0xpbXBpYXInIDogJ0NsZWFyIHNlbGVjdGlvbicgfX1cbiAgICAgIDwvcD5cbiAgICAgIDxwIGNsYXNzPVwiaHItbGFiZWwgcG9pbnRlciBzbS1ib2xkXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgdG9nZ2xlRHJvcGRvd24oKVwiXG4gICAgICAgICAqbmdJZj1cImF2YWlsYWJsZU9wdGlvbnMubGVuZ3RoICE9IDBcIiBbYXR0ci5kYXRhLWN5XT1cImN5cHJlc3NUYWcgKyAnX2FwcGx5J1wiPlxuICAgICAgICB7eyBjdXJyZW50TGFuZyA9PSAnZXMnID8gJ0FwbGljYXInIDogJ0FwcGx5JyB9fVxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8c2VjdGlvbiBjbGFzcz1cImV4dGVybmFsLWNvbnRlbnRcIiAqbmdJZj1cIiFpdGVtcyAmJiBkcm9wZG93bk9wZW5lZFwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvc2VjdGlvbj5cbjwvZGl2PlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiaW5wdXRUeXBlID09PSAnZmllbGQnXCI+XG4gIDxwIGNsYXNzPVwiaHItbGFiZWwgc20tcmVndWxhciBzdXBwb3J0aW5nLXRleHQge3tnZXRTdGF0dXMoKX19IHt7c2l6ZX19XCIgKm5nSWY9XCJzdXBwb3J0VGV4dFwiPlxuICAgIDxncmF2aXR5LWljb24gW2ljb25OYW1lXT1cIidxdWVzdGlvbi1jaXJjbGUnXCIgKm5nSWY9XCJoYXNFcnJvclwiIFtpY29uU2l6ZV09XCInbWQtMTYnXCI+PC9ncmF2aXR5LWljb24+XG4gICAge3sgc3VwcG9ydFRleHQgfX1cbiAgPC9wPlxuICA8cCBjbGFzcz1cImhyLWxhYmVsIHNtLXJlZ3VsYXIgc3VwcG9ydGluZy10ZXh0IHt7Z2V0U3RhdHVzKCl9fSB7e3NpemV9fVwiXG4gICAgICpuZ0lmPVwiIXN1cHBvcnRUZXh0ICYmIGdldFN0YXR1cygpID09ICdhY3RpdmUnICYmIHNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDAgJiYgcmVxdWlyZWRcIj5cbiAgICB7eyBjdXJyZW50TGFuZyA9PSAnZXMnID8gJ1JlcXVlcmlkbycgOiAnUmVxdWlyZWQnIH19XG4gIDwvcD5cbjwvbmctY29udGFpbmVyPiJdfQ==
@@ -1,6 +1,10 @@
1
1
  import { Component, Input } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
3
4
  export class GravityGenericAvatarComponent {
5
+ constructor() {
6
+ this.size = 'sm';
7
+ }
4
8
  getStatus() {
5
9
  if (this.isDisabled) {
6
10
  return 'disabled';
@@ -10,16 +14,18 @@ export class GravityGenericAvatarComponent {
10
14
  }
11
15
  }
12
16
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityGenericAvatarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GravityGenericAvatarComponent, selector: "gravity-generic-avatar", inputs: { label: "label", initials: "initials", isDisabled: "isDisabled" }, ngImport: i0, template: "<div class=\"gravity-generic-avatar {{getStatus()}}\">\n <div class=\"gravity-margin-right-xxs\">\n <span class=\"hr-body sm-regular\">{{initials}}</span>\n </div>\n <label class=\"hr-body sm-regular\">{{label}}</label>\n</div>", styles: [":host{display:block}.gravity-generic-avatar{display:flex;align-items:center}.gravity-generic-avatar div{width:24px;height:24px;display:flex;border-radius:50px;align-items:center;justify-content:center;color:var(--avatar-initials-text-color);background-color:var(--avatar-initials-backgroud-color)}.gravity-generic-avatar div span{margin-top:2px}.gravity-generic-avatar label{margin-top:2px;color:var(--avatar-label-color)}.gravity-generic-avatar.active{--avatar-label-color: var(--cl-generic-avatar-label-primary);--avatar-initials-text-color: var(--cl-generic-avatar-initial-text-primary);--avatar-initials-backgroud-color: var(--on-bg-generic-avatar-initials-primary)}.gravity-generic-avatar.disabled{--avatar-label-color: var(--cl-generic-avatar-label-disabled);--avatar-initials-text-color: var(--cl-generic-avatar-initial-text-disabled);--avatar-initials-backgroud-color: var(--on-bg-generic-avatar-initials-disabled)}\n"] }); }
17
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GravityGenericAvatarComponent, selector: "gravity-generic-avatar", inputs: { label: "label", initials: "initials", isDisabled: "isDisabled", size: "size" }, ngImport: i0, template: "<div class=\"gravity-generic-avatar {{getStatus()}} {{size}}\">\n <div class=\"gravity-margin-right-xxs\">\n <span class=\"hr-body sm-bold\">{{initials}}</span>\n </div>\n <label class=\"hr-body\" [ngClass]=\"size === 'sm' ? 'sm-regular' : 'md-bold'\">{{label}}</label>\n</div>", styles: [":host{display:block}.gravity-generic-avatar{display:flex;align-items:center}.gravity-generic-avatar div{width:24px;height:24px;display:flex;border-radius:50px;align-items:center;justify-content:center;color:var(--avatar-initials-text-color);background-color:var(--avatar-initials-backgroud-color)}.gravity-generic-avatar div span{margin-top:2px}.gravity-generic-avatar label{margin-top:2px;color:var(--avatar-label-color)}.gravity-generic-avatar.md div{width:32px;height:32px}.gravity-generic-avatar.active{--avatar-label-color: var(--cl-generic-avatar-label-primary);--avatar-initials-text-color: var(--cl-generic-avatar-initial-text-primary);--avatar-initials-backgroud-color: var(--on-bg-generic-avatar-initials-primary)}.gravity-generic-avatar.disabled{--avatar-label-color: var(--cl-generic-avatar-label-disabled);--avatar-initials-text-color: var(--cl-generic-avatar-initial-text-disabled);--avatar-initials-backgroud-color: var(--on-bg-generic-avatar-initials-disabled)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
14
18
  }
15
19
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityGenericAvatarComponent, decorators: [{
16
20
  type: Component,
17
- args: [{ selector: 'gravity-generic-avatar', template: "<div class=\"gravity-generic-avatar {{getStatus()}}\">\n <div class=\"gravity-margin-right-xxs\">\n <span class=\"hr-body sm-regular\">{{initials}}</span>\n </div>\n <label class=\"hr-body sm-regular\">{{label}}</label>\n</div>", styles: [":host{display:block}.gravity-generic-avatar{display:flex;align-items:center}.gravity-generic-avatar div{width:24px;height:24px;display:flex;border-radius:50px;align-items:center;justify-content:center;color:var(--avatar-initials-text-color);background-color:var(--avatar-initials-backgroud-color)}.gravity-generic-avatar div span{margin-top:2px}.gravity-generic-avatar label{margin-top:2px;color:var(--avatar-label-color)}.gravity-generic-avatar.active{--avatar-label-color: var(--cl-generic-avatar-label-primary);--avatar-initials-text-color: var(--cl-generic-avatar-initial-text-primary);--avatar-initials-backgroud-color: var(--on-bg-generic-avatar-initials-primary)}.gravity-generic-avatar.disabled{--avatar-label-color: var(--cl-generic-avatar-label-disabled);--avatar-initials-text-color: var(--cl-generic-avatar-initial-text-disabled);--avatar-initials-backgroud-color: var(--on-bg-generic-avatar-initials-disabled)}\n"] }]
21
+ args: [{ selector: 'gravity-generic-avatar', template: "<div class=\"gravity-generic-avatar {{getStatus()}} {{size}}\">\n <div class=\"gravity-margin-right-xxs\">\n <span class=\"hr-body sm-bold\">{{initials}}</span>\n </div>\n <label class=\"hr-body\" [ngClass]=\"size === 'sm' ? 'sm-regular' : 'md-bold'\">{{label}}</label>\n</div>", styles: [":host{display:block}.gravity-generic-avatar{display:flex;align-items:center}.gravity-generic-avatar div{width:24px;height:24px;display:flex;border-radius:50px;align-items:center;justify-content:center;color:var(--avatar-initials-text-color);background-color:var(--avatar-initials-backgroud-color)}.gravity-generic-avatar div span{margin-top:2px}.gravity-generic-avatar label{margin-top:2px;color:var(--avatar-label-color)}.gravity-generic-avatar.md div{width:32px;height:32px}.gravity-generic-avatar.active{--avatar-label-color: var(--cl-generic-avatar-label-primary);--avatar-initials-text-color: var(--cl-generic-avatar-initial-text-primary);--avatar-initials-backgroud-color: var(--on-bg-generic-avatar-initials-primary)}.gravity-generic-avatar.disabled{--avatar-label-color: var(--cl-generic-avatar-label-disabled);--avatar-initials-text-color: var(--cl-generic-avatar-initial-text-disabled);--avatar-initials-backgroud-color: var(--on-bg-generic-avatar-initials-disabled)}\n"] }]
18
22
  }], propDecorators: { label: [{
19
23
  type: Input
20
24
  }], initials: [{
21
25
  type: Input
22
26
  }], isDisabled: [{
23
27
  type: Input
28
+ }], size: [{
29
+ type: Input
24
30
  }] } });
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3Jhdml0eS1nZW5lcmljLWF2YXRhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktZ2VuZXJpYy1hdmF0YXIvZ3Jhdml0eS1nZW5lcmljLWF2YXRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktZ2VuZXJpYy1hdmF0YXIvZ3Jhdml0eS1nZW5lcmljLWF2YXRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFPL0MsTUFBTSxPQUFPLDZCQUE2QjtJQUtqQyxTQUFTO1FBQ2QsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLE9BQU8sVUFBVSxDQUFDO1NBQ3BCO2FBQU07WUFDSixPQUFPLFFBQVEsQ0FBQztTQUNqQjtJQUNILENBQUM7K0dBWFUsNkJBQTZCO21HQUE3Qiw2QkFBNkIsMElDUDFDLHFQQUtNOzs0RkRFTyw2QkFBNkI7a0JBTHpDLFNBQVM7K0JBQ0Usd0JBQXdCOzhCQUtsQixLQUFLO3NCQUFwQixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dyYXZpdHktZ2VuZXJpYy1hdmF0YXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZ3Jhdml0eS1nZW5lcmljLWF2YXRhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dyYXZpdHktZ2VuZXJpYy1hdmF0YXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBHcmF2aXR5R2VuZXJpY0F2YXRhckNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHB1YmxpYyBsYWJlbDogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgaW5pdGlhbHM6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIGlzRGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgcHVibGljIGdldFN0YXR1cygpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmlzRGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiAnZGlzYWJsZWQnO1xuICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnYWN0aXZlJztcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJncmF2aXR5LWdlbmVyaWMtYXZhdGFyIHt7Z2V0U3RhdHVzKCl9fVwiPlxuICAgIDxkaXYgY2xhc3M9XCJncmF2aXR5LW1hcmdpbi1yaWdodC14eHNcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJoci1ib2R5IHNtLXJlZ3VsYXJcIj57e2luaXRpYWxzfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGxhYmVsIGNsYXNzPVwiaHItYm9keSBzbS1yZWd1bGFyXCI+e3tsYWJlbH19PC9sYWJlbD5cbjwvZGl2PiJdfQ==
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3Jhdml0eS1nZW5lcmljLWF2YXRhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktZ2VuZXJpYy1hdmF0YXIvZ3Jhdml0eS1nZW5lcmljLWF2YXRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktZ2VuZXJpYy1hdmF0YXIvZ3Jhdml0eS1nZW5lcmljLWF2YXRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQzs7O0FBTy9DLE1BQU0sT0FBTyw2QkFBNkI7SUFMMUM7UUFTa0IsU0FBSSxHQUFnQixJQUFJLENBQUM7S0FTMUM7SUFQUSxTQUFTO1FBQ2QsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLE9BQU8sVUFBVSxDQUFDO1NBQ3BCO2FBQU07WUFDSixPQUFPLFFBQVEsQ0FBQztTQUNqQjtJQUNILENBQUM7K0dBWlUsNkJBQTZCO21HQUE3Qiw2QkFBNkIsd0pDUDFDLHVTQUtNOzs0RkRFTyw2QkFBNkI7a0JBTHpDLFNBQVM7K0JBQ0Usd0JBQXdCOzhCQUtsQixLQUFLO3NCQUFwQixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxJQUFJO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ3Jhdml0eS1nZW5lcmljLWF2YXRhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9ncmF2aXR5LWdlbmVyaWMtYXZhdGFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ3Jhdml0eS1nZW5lcmljLWF2YXRhci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEdyYXZpdHlHZW5lcmljQXZhdGFyQ29tcG9uZW50IHtcbiAgQElucHV0KCkgcHVibGljIGxhYmVsOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBpbml0aWFsczogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgaXNEaXNhYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KCkgcHVibGljIHNpemU6ICdzbScgfCAnbWQnID0gJ3NtJztcblxuICBwdWJsaWMgZ2V0U3RhdHVzKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCkge1xuICAgICAgcmV0dXJuICdkaXNhYmxlZCc7XG4gICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICdhY3RpdmUnO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImdyYXZpdHktZ2VuZXJpYy1hdmF0YXIge3tnZXRTdGF0dXMoKX19IHt7c2l6ZX19XCI+XG4gICAgPGRpdiBjbGFzcz1cImdyYXZpdHktbWFyZ2luLXJpZ2h0LXh4c1wiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImhyLWJvZHkgc20tYm9sZFwiPnt7aW5pdGlhbHN9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8bGFiZWwgY2xhc3M9XCJoci1ib2R5XCIgW25nQ2xhc3NdPVwic2l6ZSA9PT0gJ3NtJyA/ICdzbS1yZWd1bGFyJyA6ICdtZC1ib2xkJ1wiPnt7bGFiZWx9fTwvbGFiZWw+XG48L2Rpdj4iXX0=
@@ -407,25 +407,33 @@ class GravityDropdownListComponent {
407
407
  if (changes['customValues']) {
408
408
  const changeItem = changes['customValues'];
409
409
  const currentValue = changeItem?.currentValue;
410
+ const findOptionRecursively = (items, value) => {
411
+ for (const item of items) {
412
+ const itemValue = this.config ? item[this.config.value] : item;
413
+ if (itemValue == value) {
414
+ return item;
415
+ }
416
+ if (item.children) {
417
+ const foundChild = findOptionRecursively(item.children, value);
418
+ if (foundChild)
419
+ return foundChild;
420
+ }
421
+ }
422
+ return null;
423
+ };
424
+ this.selectedItems = [];
410
425
  if (Array.isArray(currentValue)) {
411
- this.selectedItems = [];
412
- currentValue.forEach((item) => {
413
- if (item) {
414
- const option = this.config
415
- ? this.availableOptions.find((availableOption) => availableOption[this.config.value] == item)
416
- : this.availableOptions.find((availableOption) => availableOption == item);
417
- if (option && !this.selectedItems.includes(option)) {
418
- this.selectedItems.push(option);
419
- }
426
+ currentValue.forEach((val) => {
427
+ const found = findOptionRecursively(this.items, val);
428
+ if (found && !this.selectedItems.includes(found)) {
429
+ this.selectedItems.push(found);
420
430
  }
421
431
  });
422
432
  }
423
433
  else if (currentValue != null && currentValue !== '') {
424
- const option = this.config
425
- ? this.availableOptions.find((availableOption) => availableOption[this.config.value] == currentValue)
426
- : this.availableOptions.find((availableOption) => availableOption == currentValue);
427
- if (option) {
428
- this.selectedItems = [option];
434
+ const found = findOptionRecursively(this.items, currentValue);
435
+ if (found) {
436
+ this.selectedItems = [found];
429
437
  }
430
438
  }
431
439
  else if (!currentValue && !changeItem.firstChange) {
@@ -484,7 +492,8 @@ class GravityDropdownListComponent {
484
492
  if (this.multiple) {
485
493
  const isSelected = this.checkIfSelected(itemToAdd);
486
494
  if (isSelected) {
487
- this.selectedItems = this.selectedItems.filter(i => i !== itemToAdd);
495
+ this.selectedItems = this.selectedItems.filter(i => (this.config ? i[this.config.value] : i) !==
496
+ (this.config ? itemToAdd[this.config.value] : itemToAdd));
488
497
  if (isParent) {
489
498
  itemToAdd.children.forEach(child => {
490
499
  this.selectedItems = this.selectedItems.filter(i => i !== child);
@@ -538,7 +547,8 @@ class GravityDropdownListComponent {
538
547
  return selectedChildren.length > 0 && selectedChildren.length < item.children.length;
539
548
  }
540
549
  checkIfSelected(itemToFind) {
541
- return !!this.selectedItems.find((item) => itemToFind == item);
550
+ return this.selectedItems.some(item => (this.config ? item[this.config.value] : item) ===
551
+ (this.config ? itemToFind[this.config.value] : itemToFind));
542
552
  }
543
553
  clearSelection() {
544
554
  this.selectedItems = [];
@@ -5601,6 +5611,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
5601
5611
  }] } });
5602
5612
 
5603
5613
  class GravityGenericAvatarComponent {
5614
+ constructor() {
5615
+ this.size = 'sm';
5616
+ }
5604
5617
  getStatus() {
5605
5618
  if (this.isDisabled) {
5606
5619
  return 'disabled';
@@ -5610,17 +5623,19 @@ class GravityGenericAvatarComponent {
5610
5623
  }
5611
5624
  }
5612
5625
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityGenericAvatarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5613
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GravityGenericAvatarComponent, selector: "gravity-generic-avatar", inputs: { label: "label", initials: "initials", isDisabled: "isDisabled" }, ngImport: i0, template: "<div class=\"gravity-generic-avatar {{getStatus()}}\">\n <div class=\"gravity-margin-right-xxs\">\n <span class=\"hr-body sm-regular\">{{initials}}</span>\n </div>\n <label class=\"hr-body sm-regular\">{{label}}</label>\n</div>", styles: [":host{display:block}.gravity-generic-avatar{display:flex;align-items:center}.gravity-generic-avatar div{width:24px;height:24px;display:flex;border-radius:50px;align-items:center;justify-content:center;color:var(--avatar-initials-text-color);background-color:var(--avatar-initials-backgroud-color)}.gravity-generic-avatar div span{margin-top:2px}.gravity-generic-avatar label{margin-top:2px;color:var(--avatar-label-color)}.gravity-generic-avatar.active{--avatar-label-color: var(--cl-generic-avatar-label-primary);--avatar-initials-text-color: var(--cl-generic-avatar-initial-text-primary);--avatar-initials-backgroud-color: var(--on-bg-generic-avatar-initials-primary)}.gravity-generic-avatar.disabled{--avatar-label-color: var(--cl-generic-avatar-label-disabled);--avatar-initials-text-color: var(--cl-generic-avatar-initial-text-disabled);--avatar-initials-backgroud-color: var(--on-bg-generic-avatar-initials-disabled)}\n"] }); }
5626
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GravityGenericAvatarComponent, selector: "gravity-generic-avatar", inputs: { label: "label", initials: "initials", isDisabled: "isDisabled", size: "size" }, ngImport: i0, template: "<div class=\"gravity-generic-avatar {{getStatus()}} {{size}}\">\n <div class=\"gravity-margin-right-xxs\">\n <span class=\"hr-body sm-bold\">{{initials}}</span>\n </div>\n <label class=\"hr-body\" [ngClass]=\"size === 'sm' ? 'sm-regular' : 'md-bold'\">{{label}}</label>\n</div>", styles: [":host{display:block}.gravity-generic-avatar{display:flex;align-items:center}.gravity-generic-avatar div{width:24px;height:24px;display:flex;border-radius:50px;align-items:center;justify-content:center;color:var(--avatar-initials-text-color);background-color:var(--avatar-initials-backgroud-color)}.gravity-generic-avatar div span{margin-top:2px}.gravity-generic-avatar label{margin-top:2px;color:var(--avatar-label-color)}.gravity-generic-avatar.md div{width:32px;height:32px}.gravity-generic-avatar.active{--avatar-label-color: var(--cl-generic-avatar-label-primary);--avatar-initials-text-color: var(--cl-generic-avatar-initial-text-primary);--avatar-initials-backgroud-color: var(--on-bg-generic-avatar-initials-primary)}.gravity-generic-avatar.disabled{--avatar-label-color: var(--cl-generic-avatar-label-disabled);--avatar-initials-text-color: var(--cl-generic-avatar-initial-text-disabled);--avatar-initials-backgroud-color: var(--on-bg-generic-avatar-initials-disabled)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
5614
5627
  }
5615
5628
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityGenericAvatarComponent, decorators: [{
5616
5629
  type: Component,
5617
- args: [{ selector: 'gravity-generic-avatar', template: "<div class=\"gravity-generic-avatar {{getStatus()}}\">\n <div class=\"gravity-margin-right-xxs\">\n <span class=\"hr-body sm-regular\">{{initials}}</span>\n </div>\n <label class=\"hr-body sm-regular\">{{label}}</label>\n</div>", styles: [":host{display:block}.gravity-generic-avatar{display:flex;align-items:center}.gravity-generic-avatar div{width:24px;height:24px;display:flex;border-radius:50px;align-items:center;justify-content:center;color:var(--avatar-initials-text-color);background-color:var(--avatar-initials-backgroud-color)}.gravity-generic-avatar div span{margin-top:2px}.gravity-generic-avatar label{margin-top:2px;color:var(--avatar-label-color)}.gravity-generic-avatar.active{--avatar-label-color: var(--cl-generic-avatar-label-primary);--avatar-initials-text-color: var(--cl-generic-avatar-initial-text-primary);--avatar-initials-backgroud-color: var(--on-bg-generic-avatar-initials-primary)}.gravity-generic-avatar.disabled{--avatar-label-color: var(--cl-generic-avatar-label-disabled);--avatar-initials-text-color: var(--cl-generic-avatar-initial-text-disabled);--avatar-initials-backgroud-color: var(--on-bg-generic-avatar-initials-disabled)}\n"] }]
5630
+ args: [{ selector: 'gravity-generic-avatar', template: "<div class=\"gravity-generic-avatar {{getStatus()}} {{size}}\">\n <div class=\"gravity-margin-right-xxs\">\n <span class=\"hr-body sm-bold\">{{initials}}</span>\n </div>\n <label class=\"hr-body\" [ngClass]=\"size === 'sm' ? 'sm-regular' : 'md-bold'\">{{label}}</label>\n</div>", styles: [":host{display:block}.gravity-generic-avatar{display:flex;align-items:center}.gravity-generic-avatar div{width:24px;height:24px;display:flex;border-radius:50px;align-items:center;justify-content:center;color:var(--avatar-initials-text-color);background-color:var(--avatar-initials-backgroud-color)}.gravity-generic-avatar div span{margin-top:2px}.gravity-generic-avatar label{margin-top:2px;color:var(--avatar-label-color)}.gravity-generic-avatar.md div{width:32px;height:32px}.gravity-generic-avatar.active{--avatar-label-color: var(--cl-generic-avatar-label-primary);--avatar-initials-text-color: var(--cl-generic-avatar-initial-text-primary);--avatar-initials-backgroud-color: var(--on-bg-generic-avatar-initials-primary)}.gravity-generic-avatar.disabled{--avatar-label-color: var(--cl-generic-avatar-label-disabled);--avatar-initials-text-color: var(--cl-generic-avatar-initial-text-disabled);--avatar-initials-backgroud-color: var(--on-bg-generic-avatar-initials-disabled)}\n"] }]
5618
5631
  }], propDecorators: { label: [{
5619
5632
  type: Input
5620
5633
  }], initials: [{
5621
5634
  type: Input
5622
5635
  }], isDisabled: [{
5623
5636
  type: Input
5637
+ }], size: [{
5638
+ type: Input
5624
5639
  }] } });
5625
5640
 
5626
5641
  class GravityMultiLanguageComponent {