ctt-babylon 0.13.24 → 0.13.25

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.
@@ -59,9 +59,8 @@ export class LisC2TxtImgComponent {
59
59
  /** ✅ util: sacar label humano para habitaciones */
60
60
  getRoomLabelFromImage(item) {
61
61
  // 1) si viene img.name (como en tu screenshot del back), lo usamos
62
- const n1 = item.img?.name;
63
- if (typeof n1 === 'string' && n1.trim())
64
- return n1.trim();
62
+ /* const n1 = (item.img as any)?.name;
63
+ if (typeof n1 === 'string' && n1.trim()) return n1.trim(); */
65
64
  // 2) si viene title, lo usamos
66
65
  if (item.title?.trim())
67
66
  return item.title.trim();
@@ -78,7 +77,6 @@ export class LisC2TxtImgComponent {
78
77
  return 'Habitación';
79
78
  }
80
79
  }
81
- /** ✅ opciones del modal habitaciones (dinámicas) */
82
80
  get roomOptions() {
83
81
  const rid = this.roomsFilterId;
84
82
  if (rid == null)
@@ -230,4 +228,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
230
228
  type: ViewChild,
231
229
  args: ['roomsModal']
232
230
  }] } });
233
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzLWMyLXR4dC1pbWcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFieWxvbi9zcmMvbGliL2NvbXBvbmVudHMvZXh0ZXJuYWwvY29yZS9saXMtYzItdHh0LWltZy9saXMtYzItdHh0LWltZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9leHRlcm5hbC9jb3JlL2xpcy1jMi10eHQtaW1nL2xpcy1jMi10eHQtaW1nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBRUgsU0FBUyxFQUVULEtBQUssRUFJTCxTQUFTLEVBQ1QsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHekMsT0FBTyxjQUFjLE1BQU0sZ0JBQWdCLENBQUM7OztBQTJCNUMsTUFBTSxlQUFlLEdBQ2pCLGNBQW9DLENBQUM7QUFVekMsTUFBTSxPQUFPLG9CQUFvQjtJQW9CN0IsWUFBb0IsSUFBNkI7UUFBN0IsU0FBSSxHQUFKLElBQUksQ0FBeUI7UUFqQnhDLFlBQU8sR0FBdUIsZUFBZSxDQUFDO1FBU3ZELG9CQUFvQjtRQUNwQixxQkFBZ0IsR0FBa0IsSUFBSSxDQUFDO1FBRXZDLDZEQUE2RDtRQUM3RCxvQkFBZSxHQUFrQixJQUFJLENBQUM7UUFFOUIsaUJBQVksR0FBRyxLQUFLLENBQUM7SUFFdUIsQ0FBQztJQUVyRCxlQUFlO1FBQ1gsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxP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LEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUV3QixlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQjtnQkFDSCxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmFuY3lib3ggfSBmcm9tICdAZmFuY3lhcHBzL3VpJztcbmltcG9ydCB7IEJhYnlsb25JbWFnZUksIEJhYnlsb25UZXh0SW5mb0kgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEJhYnlsb25TdHlsZUdsb2JhbEl0ZW0gfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzL2JhYnlsb24tc3R5bGUuaW50ZXJmYWNlJztcbmltcG9ydCBkZWZhdWx0Q29udGVudCBmcm9tICcuL2NvbnRlbnQuanNvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2FsbGVyeUZpbHRlckl0ZW0ge1xuICAgIGlkOiBudW1iZXI7XG4gICAgdGV4dDogc3RyaW5nOyAvLyDinIUgdmllbmUgYXPDrSBkZWwgYmFja1xuICAgIGFsbD86IGJvb2xlYW47XG4gICAgcm9vbT86IGJvb2xlYW47XG4gICAgcm9vbXM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdhbGxlcnlJbWFnZUl0ZW0ge1xuICAgIGZpbHRlcjogbnVtYmVyOyAvLyDinIUgaWQgZGVsIGZpbHRyb1xuICAgIGltZzogQmFieWxvbkltYWdlSSAmIHsgbmFtZT86IHN0cmluZyB9OyAvLyBhIHZlY2VzIGltZyB0cmFlIG5hbWVcbiAgICB0aXRsZT86IHN0cmluZzsgLy8gb3BjaW9uYWwgKHZlbyBxdWUgZW4gZ2FzdHJvbm9tw61hL3NwYSB2aWVuZSlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCYWJ5bG9uR2xvYWJsc0dhbGxlcnlGaWx0ZXIge1xuICAgIGxlZnRTaWRlPzogYm9vbGVhbjtcbiAgICByaWdodFNpZGU/OiBib29sZWFuO1xuICAgIGZpbHRlcnM6IEdhbGxlcnlGaWx0ZXJJdGVtW107XG4gICAgaW1hZ2VzOiBHYWxsZXJ5SW1hZ2VJdGVtW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzQzJUeHRJbWdDb250ZW50IHtcbiAgICBsZW5zSWNvbjogc3RyaW5nO1xufVxuXG5jb25zdCBERUZBVUxUX0NPTlRFTlQ6IExpc0MyVHh0SW1nQ29udGVudCA9XG4gICAgZGVmYXVsdENvbnRlbnQgYXMgTGlzQzJUeHRJbWdDb250ZW50O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xpcy1jMi10eHQtaW1nJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2xpcy1jMi10eHQtaW1nLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vbGlzLWMyLXR4dC1pbWcuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBMaXNDMlR4dEltZ0NvbXBvbmVudFxuICAgIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3lcbntcbiAgICBASW5wdXQoKSBjb250ZW50OiBMaXNDMlR4dEltZ0NvbnRlbnQgPSBERUZBVUxUX0NPTlRFTlQ7XG5cbiAgICBASW5wdXQoKSBmaWx0ZXJzPzogQmFieWxvbkdsb2FibHNHYWxsZXJ5RmlsdGVyO1xuICAgIEBJbnB1dCgpIHRleHRzPzogQmFieWxvblRleHRJbmZvSTtcbiAgICBASW5wdXQoKSBzdHlsZXM/OiBCYWJ5bG9uU3R5bGVHbG9iYWxJdGVtO1xuXG4gICAgQFZpZXdDaGlsZCgnY2F0ZWdvcmllc01vZGFsJykgY2F0ZWdvcmllc01vZGFsPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gICAgQFZpZXdDaGlsZCgncm9vbXNNb2RhbCcpIHJvb21zTW9kYWw/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKiBudWxsID0+IFRvZGFzICovXG4gICAgc2VsZWN0ZWRGaWx0ZXJJZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKiogRGVudHJvIGRlIGhhYml0YWNpb25lczogJ19fYWxsX18nIG8gdW5hIGNsYXZlIGNvbmNyZXRhICovXG4gICAgc2VsZWN0ZWRSb29tS2V5OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIHByaXZhdGUgZ2FsbGVyeUJvdW5kID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGhvc3Q6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7fVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmJpbmRHYWxsZXJ5KCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlc1snZmlsdGVycyddICYmICFjaGFuZ2VzWydmaWx0ZXJzJ10uZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIC8vIHNpIGxsZWdhIGRhdGEgbnVldmEsIHJlc2V0ZW8gc2VsZWNjacOzbiBhIOKAnFRvZGFz4oCdIHNpIGV4aXN0ZVxuICAgICAgICAgICAgdGhpcy5zZXREZWZhdWx0U2VsZWN0aW9uKCk7XG4gICAgICAgICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB0aGlzLmJpbmRHYWxsZXJ5KCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMudW5iaW5kR2FsbGVyeSgpO1xuICAgICAgICB0aGlzLmNsb3NlTW9kYWxzKCk7XG4gICAgfVxuXG4gICAgLyoqIOKchSBmaWx0cm8g4oCcSGFiaXRhY2lvbmVz4oCdICovXG4gICAgZ2V0IHJvb21zRmlsdGVySWQoKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGYgPSB0aGlzLmZpbHRlcnM/LmZpbHRlcnM/LmZpbmQoKHgpID0+ICEheC5yb29tcyk7XG4gICAgICAgIHJldHVybiB0eXBlb2YgZj8uaWQgPT09ICdudW1iZXInID8gZi5pZCA6IG51bGw7XG4gICAgfVxuXG4gICAgLyoqIOKchSBleGlzdGUgZmlsdHJvIGhhYml0YWNpb25lcyAqL1xuICAgIGdldCBoYXNSb29tc0ZpbHRlcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucm9vbXNGaWx0ZXJJZCAhPSBudWxsO1xuICAgIH1cblxuICAgIC8qKiDinIUgcGFyYSBtYXJjYXIg4oCcVG9kYXPigJ0gKHNpIGV4aXN0ZSkgKi9cbiAgICBwcml2YXRlIGdldCBhbGxGaWx0ZXJJZCgpOiBudW1iZXIgfCBudWxsIHtcbiAgICAgICAgY29uc3QgZiA9IHRoaXMuZmlsdGVycz8uZmlsdGVycz8uZmluZCgoeCkgPT4gISF4LmFsbCk7XG4gICAgICAgIHJldHVybiB0eXBlb2YgZj8uaWQgPT09ICdudW1iZXInID8gZi5pZCA6IG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXREZWZhdWx0U2VsZWN0aW9uKCk6IHZvaWQge1xuICAgICAgICAvLyBQb3IgZGVmZWN0bzogc2kgZXhpc3RlIFwiVG9kYXNcIiBsbyBkZWphbW9zIGVuIG51bGwgKG1vc3RyYXIgdG9kbyksXG4gICAgICAgIC8vIHNpIG5vLCBwb25lbW9zIGVsIHByaW1lciBmaWx0cm8uXG4gICAgICAgIGNvbnN0IGFsbElkID0gdGhpcy5hbGxGaWx0ZXJJZDtcbiAgICAgICAgaWYgKGFsbElkICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJJZCA9IG51bGw7IC8vIG51bGwgc2lnbmlmaWNhIOKAnG1vc3RyYXIgdG9kb+KAnVxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJvb21LZXkgPSBudWxsO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlyc3QgPSB0aGlzLmZpbHRlcnM/LmZpbHRlcnM/LlswXT8uaWQgPz8gbnVsbDtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlcklkID0gZmlyc3Q7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb29tS2V5ID0gbnVsbDtcbiAgICB9XG5cbiAgICAvKiog4pyFIHV0aWw6IHNhY2FyIGxhYmVsIGh1bWFubyBwYXJhIGhhYml0YWNpb25lcyAqL1xuICAgIHByaXZhdGUgZ2V0Um9vbUxhYmVsRnJvbUltYWdlKGl0ZW06IEdhbGxlcnlJbWFnZUl0ZW0pOiBzdHJpbmcge1xuICAgICAgICAvLyAxKSBzaSB2aWVuZSBpbWcubmFtZSAoY29tbyBlbiB0dSBzY3JlZW5zaG90IGRlbCBiYWNrKSwgbG8gdXNhbW9zXG4gICAgICAgIGNvbnN0IG4xID0gKGl0ZW0uaW1nIGFzIGFueSk/Lm5hbWU7XG4gICAgICAgIGlmICh0eXBlb2YgbjEgPT09ICdzdHJpbmcnICYmIG4xLnRyaW0oKSkgcmV0dXJuIG4xLnRyaW0oKTtcblxuICAgICAgICAvLyAyKSBzaSB2aWVuZSB0aXRsZSwgbG8gdXNhbW9zXG4gICAgICAgIGlmIChpdGVtLnRpdGxlPy50cmltKCkpIHJldHVybiBpdGVtLnRpdGxlLnRyaW0oKTtcblxuICAgICAgICAvLyAzKSBmYWxsYmFjazogZmlsZW5hbWUgZGUgbGEgdXJsXG4gICAgICAgIGNvbnN0IHNyYyA9IGl0ZW0uaW1nPy5zcmMgPz8gJyc7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBsYXN0ID0gc3JjLnNwbGl0KCcvJykucG9wKCkgPz8gJyc7XG4gICAgICAgICAgICBjb25zdCBub1F1ZXJ5ID0gbGFzdC5zcGxpdCgnPycpWzBdO1xuICAgICAgICAgICAgY29uc3Qgbm9FeHQgPSBub1F1ZXJ5LnJlcGxhY2UoL1xcLlthLXowLTldKyQvaSwgJycpO1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICBkZWNvZGVVUklDb21wb25lbnQobm9FeHQpLnJlcGxhY2UoL1tfLV0rL2csICcgJykudHJpbSgpIHx8XG4gICAgICAgICAgICAgICAgJ0hhYml0YWNpw7NuJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICByZXR1cm4gJ0hhYml0YWNpw7NuJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiDinIUgb3BjaW9uZXMgZGVsIG1vZGFsIGhhYml0YWNpb25lcyAoZGluw6FtaWNhcykgKi9cbiAgICBnZXQgcm9vbU9wdGlvbnMoKTogeyBpZDogc3RyaW5nOyBsYWJlbDogc3RyaW5nIH1bXSB7XG4gICAgICAgIGNvbnN0IHJpZCA9IHRoaXMucm9vbXNGaWx0ZXJJZDtcbiAgICAgICAgaWYgKHJpZCA9PSBudWxsKSByZXR1cm4gW107XG5cbiAgICAgICAgY29uc3QgaW1ncyA9ICh0aGlzLmZpbHRlcnM/LmltYWdlcyA/PyBbXSkuZmlsdGVyKFxuICAgICAgICAgICAgKGkpID0+IE51bWJlcihpLmZpbHRlcikgPT09IE51bWJlcihyaWQpXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgbGFiZWxzID0gaW1nc1xuICAgICAgICAgICAgLm1hcCgoaSkgPT4gdGhpcy5nZXRSb29tTGFiZWxGcm9tSW1hZ2UoaSkpXG4gICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICAgICAgICBjb25zdCB1bmlxdWUgPSBBcnJheS5mcm9tKG5ldyBTZXQobGFiZWxzKSk7XG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgaWQ6ICdfX2FsbF9fJywgbGFiZWw6ICdUb2RhcycgfSxcbiAgICAgICAgICAgIC4uLnVuaXF1ZS5tYXAoKHQpID0+ICh7IGlkOiB0LCBsYWJlbDogdCB9KSksXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgLyoqIOKchSBsaXN0YSBmaWx0cmFkYSByZWFsICovXG4gICAgZ2V0IGZpbHRlcmVkSW1hZ2VzKCk6IEdhbGxlcnlJbWFnZUl0ZW1bXSB7XG4gICAgICAgIGNvbnN0IGltZ3MgPSB0aGlzLmZpbHRlcnM/LmltYWdlcyA/PyBbXTtcbiAgICAgICAgY29uc3QgcmlkID0gdGhpcy5yb29tc0ZpbHRlcklkO1xuXG4gICAgICAgIC8vIG51bGwgPT4gVG9kYXNcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRGaWx0ZXJJZCA9PSBudWxsKSByZXR1cm4gaW1ncztcblxuICAgICAgICAvLyBIYWJpdGFjaW9uZXNcbiAgICAgICAgaWYgKHJpZCAhPSBudWxsICYmIE51bWJlcih0aGlzLnNlbGVjdGVkRmlsdGVySWQpID09PSBOdW1iZXIocmlkKSkge1xuICAgICAgICAgICAgY29uc3QgaW5Sb29tcyA9IGltZ3MuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChpKSA9PiBOdW1iZXIoaS5maWx0ZXIpID09PSBOdW1iZXIocmlkKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkUm9vbUtleSB8fCB0aGlzLnNlbGVjdGVkUm9vbUtleSA9PT0gJ19fYWxsX18nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGluUm9vbXM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBpblJvb21zLmZpbHRlcihcbiAgICAgICAgICAgICAgICAoaSkgPT4gdGhpcy5nZXRSb29tTGFiZWxGcm9tSW1hZ2UoaSkgPT09IHRoaXMuc2VsZWN0ZWRSb29tS2V5XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmVzdG9cbiAgICAgICAgcmV0dXJuIGltZ3MuZmlsdGVyKFxuICAgICAgICAgICAgKGkpID0+IE51bWJlcihpLmZpbHRlcikgPT09IE51bWJlcih0aGlzLnNlbGVjdGVkRmlsdGVySWQpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIOKchSBjbGljayBmaWx0cm8gKGRlc2t0b3ApICovXG4gICAgZmlsdGVyQnkoZmlsdGVyOiBHYWxsZXJ5RmlsdGVySXRlbSk6IHZvaWQge1xuICAgICAgICAvLyBUb2Rhc1xuICAgICAgICBpZiAoZmlsdGVyLmFsbCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlcklkID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb29tS2V5ID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VNb2RhbHMoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEhhYml0YWNpb25lcyAtPiBtb2RhbFxuICAgICAgICBpZiAoZmlsdGVyLnJvb21zKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRmlsdGVySWQgPSBmaWx0ZXIuaWQ7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUm9vbUtleSA9ICdfX2FsbF9fJztcbiAgICAgICAgICAgIHRoaXMub3BlblJvb21zTW9kYWwoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIG5vcm1hbFxuICAgICAgICB0aGlzLnNlbGVjdGVkRmlsdGVySWQgPSBmaWx0ZXIuaWQ7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb29tS2V5ID0gbnVsbDtcbiAgICAgICAgdGhpcy5jbG9zZU1vZGFscygpO1xuICAgIH1cblxuICAgIC8qKiDinIUgY2xpY2sgZmlsdHJvIChtb2RhbCBjYXRlZ29yw61hcykgKi9cbiAgICBmaWx0ZXJGcm9tTW9kYWwoZmlsdGVyOiBHYWxsZXJ5RmlsdGVySXRlbSk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsb3NlTW9kYWxzKCk7XG4gICAgICAgIHRoaXMuZmlsdGVyQnkoZmlsdGVyKTtcbiAgICB9XG5cbiAgICAvKiog4pyFIHNlbGVjY2lvbmFyIGhhYml0YWNpw7NuIChtb2RhbCByb29tcykgKi9cbiAgICBzZWxlY3RSb29tKHJvb21LZXk6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCByaWQgPSB0aGlzLnJvb21zRmlsdGVySWQ7XG4gICAgICAgIGlmIChyaWQgPT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJJZCA9IHJpZDtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvb21LZXkgPSByb29tS2V5O1xuICAgICAgICB0aGlzLmNsb3NlTW9kYWxzKCk7XG4gICAgfVxuXG4gICAgb3BlbkNhdGVnb3JpZXNNb2RhbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuSW5saW5lTW9kYWwodGhpcy5jYXRlZ29yaWVzTW9kYWw/Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIG9wZW5Sb29tc01vZGFsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW5JbmxpbmVNb2RhbCh0aGlzLnJvb21zTW9kYWw/Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIGNsb3NlTW9kYWxzKCk6IHZvaWQge1xuICAgICAgICBGYW5jeWJveC5jbG9zZSgpO1xuICAgIH1cblxuICAgIGlzRmlsdGVyQWN0aXZlKGZpbHRlcjogR2FsbGVyeUZpbHRlckl0ZW0pOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGZpbHRlci5hbGwpIHJldHVybiB0aGlzLnNlbGVjdGVkRmlsdGVySWQgPT0gbnVsbDtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRGaWx0ZXJJZCA9PT0gZmlsdGVyLmlkO1xuICAgIH1cblxuICAgIGdldEZhbmN5Ym94R3JvdXAoKTogc3RyaW5nIHtcbiAgICAgICAgLy8gYWdydXBhciBwb3Igc2VsZWNjacOzbiBhY3R1YWwgKGFzw60gbm8gbWV6Y2xhIGdhbGxlcmllcyByYXJhcylcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRGaWx0ZXJJZCA9PSBudWxsKSByZXR1cm4gJ2dhbGxlcnktYWxsJztcblxuICAgICAgICBjb25zdCByaWQgPSB0aGlzLnJvb21zRmlsdGVySWQ7XG4gICAgICAgIGlmIChyaWQgIT0gbnVsbCAmJiBOdW1iZXIodGhpcy5zZWxlY3RlZEZpbHRlcklkKSA9PT0gTnVtYmVyKHJpZCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkUm9vbUtleSAmJiB0aGlzLnNlbGVjdGVkUm9vbUtleSAhPT0gJ19fYWxsX18nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGByb29tcy0ke3RoaXMuc2VsZWN0ZWRSb29tS2V5fWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gJ3Jvb21zLWFsbCc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYGdhbGxlcnktJHt0aGlzLnNlbGVjdGVkRmlsdGVySWR9YDtcbiAgICB9XG5cbiAgICB0cmFja0J5SW5kZXgoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICAvKiogRmFuY3lib3ggKi9cbiAgICBwcml2YXRlIGJpbmRHYWxsZXJ5KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVuYmluZEdhbGxlcnkoKTtcblxuICAgICAgICBjb25zdCBob3N0RWxlbWVudCA9IHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50O1xuICAgICAgICBpZiAoIWhvc3RFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWZhbmN5Ym94XScpKSByZXR1cm47XG5cbiAgICAgICAgRmFuY3lib3guYmluZChob3N0RWxlbWVudCwgJ1tkYXRhLWZhbmN5Ym94XScsIHtcbiAgICAgICAgICAgIGRyYWdUb0Nsb3NlOiBmYWxzZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5nYWxsZXJ5Qm91bmQgPSB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgdW5iaW5kR2FsbGVyeSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmdhbGxlcnlCb3VuZCkgcmV0dXJuO1xuXG4gICAgICAgIEZhbmN5Ym94LnVuYmluZCh0aGlzLmhvc3QubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIHRoaXMuZ2FsbGVyeUJvdW5kID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvcGVuSW5saW5lTW9kYWwoY29udGVudD86IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghY29udGVudCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHNlbGVjdG9yID0gY29udGVudC5pZCA/IGAjJHtjb250ZW50LmlkfWAgOiBudWxsO1xuICAgICAgICBpZiAoIXNlbGVjdG9yKSByZXR1cm47XG5cbiAgICAgICAgY29udGVudC5yZW1vdmVBdHRyaWJ1dGUoJ2hpZGRlbicpO1xuXG4gICAgICAgIEZhbmN5Ym94LmNsb3NlKCk7XG4gICAgICAgIEZhbmN5Ym94LnNob3coW3sgc3JjOiBzZWxlY3RvciwgdHlwZTogJ2lubGluZScgfV0sIHtcbiAgICAgICAgICAgIGRyYWdUb0Nsb3NlOiBmYWxzZSxcbiAgICAgICAgICAgIGhpZGVTY3JvbGxiYXI6IHRydWUsXG4gICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgIGRlc3Ryb3k6ICgpID0+IGNvbnRlbnQuc2V0QXR0cmlidXRlKCdoaWRkZW4nLCAnJyksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCJAaWYgKGZpbHRlcnM/LmZpbHRlcnM/Lmxlbmd0aCkge1xuICAgIDxzZWN0aW9uIGNsYXNzPVwibWRsLW1kaDAwMmdhbGVyaWFcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZpbHRlcnNcIj5cbiAgICAgICAgICAgICAgICA8IS0tIERFU0tUT1AgLS0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZGVza3RvcC1maWx0ZXJzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS1maWx0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGYgb2YgZmlsdGVycz8uZmlsdGVyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZmlsdGVyQnkoZilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJpc0ZpbHRlckFjdGl2ZShmKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGYudGV4dCB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwhLS0gTU9CSUxFIC0tPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLW1vYmlsZS1maWx0ZXJzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLXNlbGVjdFwiIChjbGljayk9XCJvcGVuQ2F0ZWdvcmllc01vZGFsKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAodGV4dHM/LmNhdGVnb3JpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7IHRleHRzPy5jYXRlZ29yaWVzIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxN1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTcgMTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBvcGFjaXR5PVwiMC41XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjAxOTMgMEgwVjAuODA0NDc1SDE2LjAxOTNWMFpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM1MTUwNTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi4wMTkzIDQuNjc5NjlIMFY1LjQ4NDZIMTYuMDE5M1Y0LjY3OTY5WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzUxNTA1MFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjAxOTMgOS4zNjMyOEgwVjEwLjE2NzhIMTYuMDE5M1Y5LjM2MzI4WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzUxNTA1MFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoaGFzUm9vbXNGaWx0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLXNlbGVjdFwiIChjbGljayk9XCJvcGVuUm9vbXNNb2RhbCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICh0ZXh0cz8ucm9vbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj57eyB0ZXh0cz8ucm9vbXMgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE3IDExXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIG9wYWNpdHk9XCIwLjVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi4wMTkzIDBIMFYwLjgwNDQ3NUgxNi4wMTkzVjBaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzUxNTA1MFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjAxOTMgNC42Nzk2OUgwVjUuNDg0NkgxNi4wMTkzVjQuNjc5NjlaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzUxNTA1MFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjAxOTMgOS4zNjMyOEgwVjEwLjE2NzhIMTYuMDE5M1Y5LjM2MzI4WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM1MTUwNTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIEdSSUQgLS0+XG4gICAgICAgICAgICBAaWYgKGZpbHRlcmVkSW1hZ2VzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1nYWwtZ3JpZFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm0tZ2FsLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW0gb2YgZmlsdGVyZWRJbWFnZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS1tZWRpYVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwiaXRlbS5pbWc/LnNyY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1mYW5jeWJveF09XCJnZXRGYW5jeWJveEdyb3VwKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtY2FwdGlvbl09XCJpdGVtLnRpdGxlID8/ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaXRlbS5pbWc/LnNyY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthbHRdPVwiaXRlbS5pbWc/LmFsdCB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0taXRlbS1mb290ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBpdGVtLnRpdGxlIHx8ICcnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8aW1nIFtzcmNdPVwiY29udGVudC5sZW5zSWNvblwiIGFsdD1cIm5hbWVcIiAvPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCI1MFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCI1MFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDQwIDQwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiNTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjUwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5maWxsXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZXM/LnByaW1hcnkgPz8gJyNGRjQzMzgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjkuMTc5MiAyNy45NzczTDIzLjcyMTkgMjIuNTE3NkwyMy41ODY4IDIyLjQyNDNDMjMuNTU2NyAyMi40MDE1IDIzLjUzNjcgMjIuMzY3NyAyMy41MzE0IDIyLjMzMDNDMjMuNTI2IDIyLjI5MjkgMjMuNTM1NiAyMi4yNTQ5IDIzLjU1ODIgMjIuMjI0NkMyNC42MDg4IDIwLjgzNjQgMjUuMDkzNyAxOS4xMDE0IDI0LjkxNTEgMTcuMzY5N0MyNC43MzY1IDE1LjYzOCAyMy45MDc3IDE0LjAzODUgMjIuNTk1OSAxMi44OTRDMjEuMjg0MSAxMS43NDk1IDE5LjU4NyAxMS4xNDUyIDE3Ljg0NyAxMS4yMDNDMTYuMTA3MSAxMS4yNjA5IDE0LjQ1MzkgMTEuOTc2NiAxMy4yMjEgMTMuMjA1N0MxMS45ODgxIDE0LjQzNDkgMTEuMjY3NCAxNi4wODU5IDExLjIwNDIgMTcuODI1N0MxMS4xNDExIDE5LjU2NTQgMTEuNzQwMiAyMS4yNjQ0IDEyLjg4MDcgMjIuNTc5NkMxNC4wMjEzIDIzLjg5NDkgMTUuNjE4MiAyNC43Mjg2IDE3LjM0OTQgMjQuOTEyNUMxOS4wODA2IDI1LjA5NjMgMjAuODE3IDI0LjYxNjcgMjIuMjA4NCAyMy41NzAzQzIyLjI0MjMgMjMuNTQ3MSAyMi4yODI3IDIzLjUzNTMgMjIuMzIzOCAyMy41MzY3QzIyLjM0MzggMjMuNTM5NiAyMi4zNjMgMjMuNTQ2NyAyMi4zODAxIDIzLjU1NzVDMjIuMzk3MiAyMy41Njg0IDIyLjQxMTggMjMuNTgyOCAyMi40MjI4IDIzLjU5OTdMMjcuOTY4NSAyOS4xODg4QzI4LjEyODcgMjkuMzQ2NSAyOC4zNDQ2IDI5LjQzNDcgMjguNTY5NCAyOS40MzQ0SDI4LjY4NzJMMjguNjk4NyAyOS40MjQ2QzI4Ljg4MDggMjkuMzk3MiAyOS4wNDkgMjkuMzExIDI5LjE3NzUgMjkuMTc5QzI5LjMzNTUgMjkuMDE5IDI5LjQyNDMgMjguODAzMyAyOS40MjQ2IDI4LjU3ODVDMjkuNDI0OSAyOC4zNTM3IDI5LjMzNjcgMjguMTM3NyAyOS4xNzkyIDI3Ljk3NzNaTTE4LjEwNzQgMTIuOTg4QzE5LjEyMTQgMTIuOTg4IDIwLjExMjUgMTMuMjg4NyAyMC45NTU2IDEzLjg1MkMyMS43OTg3IDE0LjQxNTMgMjIuNDU1OCAxNS4yMTYgMjIuODQzOCAxNi4xNTI3QzIzLjIzMTggMTcuMDg5NSAyMy4zMzMzIDE4LjEyMDMgMjMuMTM1NSAxOS4xMTQ3QzIyLjkzNzcgMjAuMTA5MiAyMi40NDk0IDIxLjAyMjcgMjEuNzMyNSAyMS43Mzk3QzIxLjAxNTUgMjIuNDU2NiAyMC4xMDIgMjIuOTQ0OSAxOS4xMDc2IDIzLjE0MjdDMTguMTEzMSAyMy4zNDA1IDE3LjA4MjMgMjMuMjM5IDE2LjE0NTYgMjIuODUxQzE1LjIwODggMjIuNDYyOSAxNC40MDgxIDIxLjgwNTkgMTMuODQ0OCAyMC45NjI4QzEzLjI4MTUgMjAuMTE5NyAxMi45ODA4IDE5LjEyODUgMTIuOTgwOCAxOC4xMTQ2QzEyLjk4NDcgMTYuNzU2MSAxMy41MjYxIDE1LjQ1NDQgMTQuNDg2NyAxNC40OTM4QzE1LjQ0NzIgMTMuNTMzMyAxNi43NDkgMTIuOTkxOSAxOC4xMDc0IDEyLjk4OFpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIEBpZiAodGV4dHM/Lm5vdEZvdW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWVtcHR5XCIgW2lubmVySFRNTF09XCJ0ZXh0cz8ubm90Rm91bmRcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpZiAodGV4dHM/LnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9vdGVyXCIgW2lubmVySFRNTF09XCJ0ZXh0cz8udGl0bGVcIj48L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBNT0RBTCBjYXRlZ29yw61hcyAobW9iaWxlKSAtLT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgI2NhdGVnb3JpZXNNb2RhbFxuICAgICAgICAgICAgY2xhc3M9XCJtLW1vZGFsLWNvbnRlbnRcIlxuICAgICAgICAgICAgaWQ9XCJjYXRlZ29yaWVzLWZpbHRlci1tb2RhbFwiXG4gICAgICAgICAgICByb2xlPVwiZGlhbG9nXCJcbiAgICAgICAgICAgIGFyaWEtbW9kYWw9XCJ0cnVlXCJcbiAgICAgICAgICAgIGhpZGRlblxuICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtLWNsb3NlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VNb2RhbHMoKVwiXG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNlcnJhclwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLi0tY2wtY29sb3JdPVwic3R5bGVzPy5wcmltYXJ5XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICDDl1xuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAodGV4dHM/LmNhdGVnb3JpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyB0ZXh0cz8uY2F0ZWdvcmllcyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZiBvZiBmaWx0ZXJzPy5maWx0ZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZmlsdGVyRnJvbU1vZGFsKGYpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImlzRmlsdGVyQWN0aXZlKGYpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmLnRleHQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIE1PREFMIGhhYml0YWNpb25lcyAtLT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgI3Jvb21zTW9kYWxcbiAgICAgICAgICAgIGNsYXNzPVwibS1tb2RhbC1jb250ZW50XCJcbiAgICAgICAgICAgIGlkPVwicm9vbXMtZmlsdGVyLW1vZGFsXCJcbiAgICAgICAgICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgICAgICAgICAgYXJpYS1tb2RhbD1cInRydWVcIlxuICAgICAgICAgICAgaGlkZGVuXG4gICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm0tY2xvc2VcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZU1vZGFscygpXCJcbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2VycmFyXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuLS1jbC1jb2xvcl09XCJzdHlsZXM/LnByaW1hcnlcIlxuICAgICAgICAgICAgICAgIG0taWNvblxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIMOXXG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tbGVmdFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHRleHRzPy5yb29tcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHRleHRzPy5yb29tcyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1yaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHJvb21PcHRpb25zPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcm9vbSBvZiByb29tT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RSb29tKHJvb20uaWQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJzZWxlY3RlZFJvb21LZXkgPT09IHJvb20uaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcm9vbS5sYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L3NlY3Rpb24+XG59XG4iXX0=
231
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzLWMyLXR4dC1pbWcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFieWxvbi9zcmMvbGliL2NvbXBvbmVudHMvZXh0ZXJuYWwvY29yZS9saXMtYzItdHh0LWltZy9saXMtYzItdHh0LWltZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9leHRlcm5hbC9jb3JlL2xpcy1jMi10eHQtaW1nL2xpcy1jMi10eHQtaW1nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBRUgsU0FBUyxFQUVULEtBQUssRUFJTCxTQUFTLEVBQ1QsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHekMsT0FBTyxjQUFjLE1BQU0sZ0JBQWdCLENBQUM7OztBQTJCNUMsTUFBTSxlQUFlLEdBQ2pCLGNBQW9DLENBQUM7QUFVekMsTUFBTSxPQUFPLG9CQUFvQjtJQW9CN0IsWUFBb0IsSUFBNkI7UUFBN0IsU0FBSSxHQUFKLElBQUksQ0FBeUI7UUFqQnhDLFlBQU8sR0FBdUIsZUFBZSxDQUFDO1FBU3ZELG9CQUFvQjtRQUNwQixxQkFBZ0IsR0FBa0IsSUFBSSxDQUFDO1FBRXZDLDZEQUE2RDtRQUM3RCxvQkFBZSxHQUFrQixJQUFJLENBQUM7UUFFOUIsaUJBQVksR0FBRyxLQUFLLENBQUM7SUFFdUIsQ0FBQztJQUVyRCxlQUFlO1FBQ1gsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxP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IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGYW5jeWJveCB9IGZyb20gJ0BmYW5jeWFwcHMvdWknO1xuaW1wb3J0IHsgQmFieWxvbkltYWdlSSwgQmFieWxvblRleHRJbmZvSSB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQmFieWxvblN0eWxlR2xvYmFsSXRlbSB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvYmFieWxvbi1zdHlsZS5pbnRlcmZhY2UnO1xuaW1wb3J0IGRlZmF1bHRDb250ZW50IGZyb20gJy4vY29udGVudC5qc29uJztcblxuZXhwb3J0IGludGVyZmFjZSBHYWxsZXJ5RmlsdGVySXRlbSB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICB0ZXh0OiBzdHJpbmc7XG4gICAgYWxsPzogYm9vbGVhbjtcbiAgICByb29tPzogYm9vbGVhbjtcbiAgICByb29tcz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2FsbGVyeUltYWdlSXRlbSB7XG4gICAgZmlsdGVyOiBudW1iZXI7XG4gICAgaW1nOiBCYWJ5bG9uSW1hZ2VJICYgeyBuYW1lPzogc3RyaW5nIH07XG4gICAgdGl0bGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFieWxvbkdsb2FibHNHYWxsZXJ5RmlsdGVyIHtcbiAgICBsZWZ0U2lkZT86IGJvb2xlYW47XG4gICAgcmlnaHRTaWRlPzogYm9vbGVhbjtcbiAgICBmaWx0ZXJzOiBHYWxsZXJ5RmlsdGVySXRlbVtdO1xuICAgIGltYWdlczogR2FsbGVyeUltYWdlSXRlbVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc0MyVHh0SW1nQ29udGVudCB7XG4gICAgbGVuc0ljb246IHN0cmluZztcbn1cblxuY29uc3QgREVGQVVMVF9DT05URU5UOiBMaXNDMlR4dEltZ0NvbnRlbnQgPVxuICAgIGRlZmF1bHRDb250ZW50IGFzIExpc0MyVHh0SW1nQ29udGVudDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaXMtYzItdHh0LWltZycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9saXMtYzItdHh0LWltZy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2xpcy1jMi10eHQtaW1nLmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgTGlzQzJUeHRJbWdDb21wb25lbnRcbiAgICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95XG57XG4gICAgQElucHV0KCkgY29udGVudDogTGlzQzJUeHRJbWdDb250ZW50ID0gREVGQVVMVF9DT05URU5UO1xuXG4gICAgQElucHV0KCkgZmlsdGVycz86IEJhYnlsb25HbG9hYmxzR2FsbGVyeUZpbHRlcjtcbiAgICBASW5wdXQoKSB0ZXh0cz86IEJhYnlsb25UZXh0SW5mb0k7XG4gICAgQElucHV0KCkgc3R5bGVzPzogQmFieWxvblN0eWxlR2xvYmFsSXRlbTtcblxuICAgIEBWaWV3Q2hpbGQoJ2NhdGVnb3JpZXNNb2RhbCcpIGNhdGVnb3JpZXNNb2RhbD86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICAgIEBWaWV3Q2hpbGQoJ3Jvb21zTW9kYWwnKSByb29tc01vZGFsPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKiogbnVsbCA9PiBUb2RhcyAqL1xuICAgIHNlbGVjdGVkRmlsdGVySWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqIERlbnRybyBkZSBoYWJpdGFjaW9uZXM6ICdfX2FsbF9fJyBvIHVuYSBjbGF2ZSBjb25jcmV0YSAqL1xuICAgIHNlbGVjdGVkUm9vbUtleTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICBwcml2YXRlIGdhbGxlcnlCb3VuZCA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBob3N0OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge31cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5iaW5kR2FsbGVyeSgpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXNbJ2ZpbHRlcnMnXSAmJiAhY2hhbmdlc1snZmlsdGVycyddLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICAvLyBzaSBsbGVnYSBkYXRhIG51ZXZhLCByZXNldGVvIHNlbGVjY2nDs24gYSDigJxUb2Rhc+KAnSBzaSBleGlzdGVcbiAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdFNlbGVjdGlvbigpO1xuICAgICAgICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4gdGhpcy5iaW5kR2FsbGVyeSgpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVuYmluZEdhbGxlcnkoKTtcbiAgICAgICAgdGhpcy5jbG9zZU1vZGFscygpO1xuICAgIH1cblxuICAgIC8qKiDinIUgZmlsdHJvIOKAnEhhYml0YWNpb25lc+KAnSAqL1xuICAgIGdldCByb29tc0ZpbHRlcklkKCk6IG51bWJlciB8IG51bGwge1xuICAgICAgICBjb25zdCBmID0gdGhpcy5maWx0ZXJzPy5maWx0ZXJzPy5maW5kKCh4KSA9PiAhIXgucm9vbXMpO1xuICAgICAgICByZXR1cm4gdHlwZW9mIGY/LmlkID09PSAnbnVtYmVyJyA/IGYuaWQgOiBudWxsO1xuICAgIH1cblxuICAgIC8qKiDinIUgZXhpc3RlIGZpbHRybyBoYWJpdGFjaW9uZXMgKi9cbiAgICBnZXQgaGFzUm9vbXNGaWx0ZXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJvb21zRmlsdGVySWQgIT0gbnVsbDtcbiAgICB9XG5cbiAgICAvKiog4pyFIHBhcmEgbWFyY2FyIOKAnFRvZGFz4oCdIChzaSBleGlzdGUpICovXG4gICAgcHJpdmF0ZSBnZXQgYWxsRmlsdGVySWQoKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGYgPSB0aGlzLmZpbHRlcnM/LmZpbHRlcnM/LmZpbmQoKHgpID0+ICEheC5hbGwpO1xuICAgICAgICByZXR1cm4gdHlwZW9mIGY/LmlkID09PSAnbnVtYmVyJyA/IGYuaWQgOiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0RGVmYXVsdFNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICAgICAgLy8gUG9yIGRlZmVjdG86IHNpIGV4aXN0ZSBcIlRvZGFzXCIgbG8gZGVqYW1vcyBlbiBudWxsIChtb3N0cmFyIHRvZG8pLFxuICAgICAgICAvLyBzaSBubywgcG9uZW1vcyBlbCBwcmltZXIgZmlsdHJvLlxuICAgICAgICBjb25zdCBhbGxJZCA9IHRoaXMuYWxsRmlsdGVySWQ7XG4gICAgICAgIGlmIChhbGxJZCAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRmlsdGVySWQgPSBudWxsOyAvLyBudWxsIHNpZ25pZmljYSDigJxtb3N0cmFyIHRvZG/igJ1cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb29tS2V5ID0gbnVsbDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpcnN0ID0gdGhpcy5maWx0ZXJzPy5maWx0ZXJzPy5bMF0/LmlkID8/IG51bGw7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJJZCA9IGZpcnN0O1xuICAgICAgICB0aGlzLnNlbGVjdGVkUm9vbUtleSA9IG51bGw7XG4gICAgfVxuXG4gICAgLyoqIOKchSB1dGlsOiBzYWNhciBsYWJlbCBodW1hbm8gcGFyYSBoYWJpdGFjaW9uZXMgKi9cbiAgICBwcml2YXRlIGdldFJvb21MYWJlbEZyb21JbWFnZShpdGVtOiBHYWxsZXJ5SW1hZ2VJdGVtKTogc3RyaW5nIHtcbiAgICAgICAgLy8gMSkgc2kgdmllbmUgaW1nLm5hbWUgKGNvbW8gZW4gdHUgc2NyZWVuc2hvdCBkZWwgYmFjayksIGxvIHVzYW1vc1xuICAgICAgICAvKiAgICAgY29uc3QgbjEgPSAoaXRlbS5pbWcgYXMgYW55KT8ubmFtZTtcbiAgICAgICAgaWYgKHR5cGVvZiBuMSA9PT0gJ3N0cmluZycgJiYgbjEudHJpbSgpKSByZXR1cm4gbjEudHJpbSgpOyAqL1xuXG4gICAgICAgIC8vIDIpIHNpIHZpZW5lIHRpdGxlLCBsbyB1c2Ftb3NcbiAgICAgICAgaWYgKGl0ZW0udGl0bGU/LnRyaW0oKSkgcmV0dXJuIGl0ZW0udGl0bGUudHJpbSgpO1xuXG4gICAgICAgIC8vIDMpIGZhbGxiYWNrOiBmaWxlbmFtZSBkZSBsYSB1cmxcbiAgICAgICAgY29uc3Qgc3JjID0gaXRlbS5pbWc/LnNyYyA/PyAnJztcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGxhc3QgPSBzcmMuc3BsaXQoJy8nKS5wb3AoKSA/PyAnJztcbiAgICAgICAgICAgIGNvbnN0IG5vUXVlcnkgPSBsYXN0LnNwbGl0KCc/JylbMF07XG4gICAgICAgICAgICBjb25zdCBub0V4dCA9IG5vUXVlcnkucmVwbGFjZSgvXFwuW2EtejAtOV0rJC9pLCAnJyk7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIGRlY29kZVVSSUNvbXBvbmVudChub0V4dCkucmVwbGFjZSgvW18tXSsvZywgJyAnKS50cmltKCkgfHxcbiAgICAgICAgICAgICAgICAnSGFiaXRhY2nDs24nXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHJldHVybiAnSGFiaXRhY2nDs24nO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IHJvb21PcHRpb25zKCk6IHsgaWQ6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9W10ge1xuICAgICAgICBjb25zdCByaWQgPSB0aGlzLnJvb21zRmlsdGVySWQ7XG4gICAgICAgIGlmIChyaWQgPT0gbnVsbCkgcmV0dXJuIFtdO1xuXG4gICAgICAgIGNvbnN0IGltZ3MgPSAodGhpcy5maWx0ZXJzPy5pbWFnZXMgPz8gW10pLmZpbHRlcihcbiAgICAgICAgICAgIChpKSA9PiBOdW1iZXIoaS5maWx0ZXIpID09PSBOdW1iZXIocmlkKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGxhYmVscyA9IGltZ3NcbiAgICAgICAgICAgIC5tYXAoKGkpID0+IHRoaXMuZ2V0Um9vbUxhYmVsRnJvbUltYWdlKGkpKVxuICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKTtcbiAgICAgICAgY29uc3QgdW5pcXVlID0gQXJyYXkuZnJvbShuZXcgU2V0KGxhYmVscykpO1xuXG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IGlkOiAnX19hbGxfXycsIGxhYmVsOiAnVG9kYXMnIH0sXG4gICAgICAgICAgICAuLi51bmlxdWUubWFwKCh0KSA9PiAoeyBpZDogdCwgbGFiZWw6IHQgfSkpLFxuICAgICAgICBdO1xuICAgIH1cblxuICAgIC8qKiDinIUgbGlzdGEgZmlsdHJhZGEgcmVhbCAqL1xuICAgIGdldCBmaWx0ZXJlZEltYWdlcygpOiBHYWxsZXJ5SW1hZ2VJdGVtW10ge1xuICAgICAgICBjb25zdCBpbWdzID0gdGhpcy5maWx0ZXJzPy5pbWFnZXMgPz8gW107XG4gICAgICAgIGNvbnN0IHJpZCA9IHRoaXMucm9vbXNGaWx0ZXJJZDtcblxuICAgICAgICAvLyBudWxsID0+IFRvZGFzXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRmlsdGVySWQgPT0gbnVsbCkgcmV0dXJuIGltZ3M7XG5cbiAgICAgICAgLy8gSGFiaXRhY2lvbmVzXG4gICAgICAgIGlmIChyaWQgIT0gbnVsbCAmJiBOdW1iZXIodGhpcy5zZWxlY3RlZEZpbHRlcklkKSA9PT0gTnVtYmVyKHJpZCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGluUm9vbXMgPSBpbWdzLmZpbHRlcihcbiAgICAgICAgICAgICAgICAoaSkgPT4gTnVtYmVyKGkuZmlsdGVyKSA9PT0gTnVtYmVyKHJpZClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5zZWxlY3RlZFJvb21LZXkgfHwgdGhpcy5zZWxlY3RlZFJvb21LZXkgPT09ICdfX2FsbF9fJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBpblJvb21zO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gaW5Sb29tcy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGkpID0+IHRoaXMuZ2V0Um9vbUxhYmVsRnJvbUltYWdlKGkpID09PSB0aGlzLnNlbGVjdGVkUm9vbUtleVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlc3RvXG4gICAgICAgIHJldHVybiBpbWdzLmZpbHRlcihcbiAgICAgICAgICAgIChpKSA9PiBOdW1iZXIoaS5maWx0ZXIpID09PSBOdW1iZXIodGhpcy5zZWxlY3RlZEZpbHRlcklkKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiDinIUgY2xpY2sgZmlsdHJvIChkZXNrdG9wKSAqL1xuICAgIGZpbHRlckJ5KGZpbHRlcjogR2FsbGVyeUZpbHRlckl0ZW0pOiB2b2lkIHtcbiAgICAgICAgLy8gVG9kYXNcbiAgICAgICAgaWYgKGZpbHRlci5hbGwpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJJZCA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUm9vbUtleSA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmNsb3NlTW9kYWxzKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBIYWJpdGFjaW9uZXMgLT4gbW9kYWxcbiAgICAgICAgaWYgKGZpbHRlci5yb29tcykge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlcklkID0gZmlsdGVyLmlkO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJvb21LZXkgPSAnX19hbGxfXyc7XG4gICAgICAgICAgICB0aGlzLm9wZW5Sb29tc01vZGFsKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBub3JtYWxcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlcklkID0gZmlsdGVyLmlkO1xuICAgICAgICB0aGlzLnNlbGVjdGVkUm9vbUtleSA9IG51bGw7XG4gICAgICAgIHRoaXMuY2xvc2VNb2RhbHMoKTtcbiAgICB9XG5cbiAgICAvKiog4pyFIGNsaWNrIGZpbHRybyAobW9kYWwgY2F0ZWdvcsOtYXMpICovXG4gICAgZmlsdGVyRnJvbU1vZGFsKGZpbHRlcjogR2FsbGVyeUZpbHRlckl0ZW0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbG9zZU1vZGFscygpO1xuICAgICAgICB0aGlzLmZpbHRlckJ5KGZpbHRlcik7XG4gICAgfVxuXG4gICAgLyoqIOKchSBzZWxlY2Npb25hciBoYWJpdGFjacOzbiAobW9kYWwgcm9vbXMpICovXG4gICAgc2VsZWN0Um9vbShyb29tS2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmlkID0gdGhpcy5yb29tc0ZpbHRlcklkO1xuICAgICAgICBpZiAocmlkID09IG51bGwpIHJldHVybjtcblxuICAgICAgICB0aGlzLnNlbGVjdGVkRmlsdGVySWQgPSByaWQ7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb29tS2V5ID0gcm9vbUtleTtcbiAgICAgICAgdGhpcy5jbG9zZU1vZGFscygpO1xuICAgIH1cblxuICAgIG9wZW5DYXRlZ29yaWVzTW9kYWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3BlbklubGluZU1vZGFsKHRoaXMuY2F0ZWdvcmllc01vZGFsPy5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBvcGVuUm9vbXNNb2RhbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuSW5saW5lTW9kYWwodGhpcy5yb29tc01vZGFsPy5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBjbG9zZU1vZGFscygpOiB2b2lkIHtcbiAgICAgICAgRmFuY3lib3guY2xvc2UoKTtcbiAgICB9XG5cbiAgICBpc0ZpbHRlckFjdGl2ZShmaWx0ZXI6IEdhbGxlcnlGaWx0ZXJJdGVtKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChmaWx0ZXIuYWxsKSByZXR1cm4gdGhpcy5zZWxlY3RlZEZpbHRlcklkID09IG51bGw7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRmlsdGVySWQgPT09IGZpbHRlci5pZDtcbiAgICB9XG5cbiAgICBnZXRGYW5jeWJveEdyb3VwKCk6IHN0cmluZyB7XG4gICAgICAgIC8vIGFncnVwYXIgcG9yIHNlbGVjY2nDs24gYWN0dWFsIChhc8OtIG5vIG1lemNsYSBnYWxsZXJpZXMgcmFyYXMpXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRmlsdGVySWQgPT0gbnVsbCkgcmV0dXJuICdnYWxsZXJ5LWFsbCc7XG5cbiAgICAgICAgY29uc3QgcmlkID0gdGhpcy5yb29tc0ZpbHRlcklkO1xuICAgICAgICBpZiAocmlkICE9IG51bGwgJiYgTnVtYmVyKHRoaXMuc2VsZWN0ZWRGaWx0ZXJJZCkgPT09IE51bWJlcihyaWQpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFJvb21LZXkgJiYgdGhpcy5zZWxlY3RlZFJvb21LZXkgIT09ICdfX2FsbF9fJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBgcm9vbXMtJHt0aGlzLnNlbGVjdGVkUm9vbUtleX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICdyb29tcy1hbGwnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGBnYWxsZXJ5LSR7dGhpcy5zZWxlY3RlZEZpbHRlcklkfWA7XG4gICAgfVxuXG4gICAgdHJhY2tCeUluZGV4KGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgLyoqIEZhbmN5Ym94ICovXG4gICAgcHJpdmF0ZSBiaW5kR2FsbGVyeSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51bmJpbmRHYWxsZXJ5KCk7XG5cbiAgICAgICAgY29uc3QgaG9zdEVsZW1lbnQgPSB0aGlzLmhvc3QubmF0aXZlRWxlbWVudDtcbiAgICAgICAgaWYgKCFob3N0RWxlbWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1mYW5jeWJveF0nKSkgcmV0dXJuO1xuXG4gICAgICAgIEZhbmN5Ym94LmJpbmQoaG9zdEVsZW1lbnQsICdbZGF0YS1mYW5jeWJveF0nLCB7XG4gICAgICAgICAgICBkcmFnVG9DbG9zZTogZmFsc2UsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZ2FsbGVyeUJvdW5kID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVuYmluZEdhbGxlcnkoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5nYWxsZXJ5Qm91bmQpIHJldHVybjtcblxuICAgICAgICBGYW5jeWJveC51bmJpbmQodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB0aGlzLmdhbGxlcnlCb3VuZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgb3BlbklubGluZU1vZGFsKGNvbnRlbnQ/OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIWNvbnRlbnQpIHJldHVybjtcblxuICAgICAgICBjb25zdCBzZWxlY3RvciA9IGNvbnRlbnQuaWQgPyBgIyR7Y29udGVudC5pZH1gIDogbnVsbDtcbiAgICAgICAgaWYgKCFzZWxlY3RvcikgcmV0dXJuO1xuXG4gICAgICAgIGNvbnRlbnQucmVtb3ZlQXR0cmlidXRlKCdoaWRkZW4nKTtcblxuICAgICAgICBGYW5jeWJveC5jbG9zZSgpO1xuICAgICAgICBGYW5jeWJveC5zaG93KFt7IHNyYzogc2VsZWN0b3IsIHR5cGU6ICdpbmxpbmUnIH1dLCB7XG4gICAgICAgICAgICBkcmFnVG9DbG9zZTogZmFsc2UsXG4gICAgICAgICAgICBoaWRlU2Nyb2xsYmFyOiB0cnVlLFxuICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICBkZXN0cm95OiAoKSA9PiBjb250ZW50LnNldEF0dHJpYnV0ZSgnaGlkZGVuJywgJycpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiQGlmIChmaWx0ZXJzPy5maWx0ZXJzPy5sZW5ndGgpIHtcbiAgICA8c2VjdGlvbiBjbGFzcz1cIm1kbC1tZGgwMDJnYWxlcmlhXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1maWx0ZXJzXCI+XG4gICAgICAgICAgICAgICAgPCEtLSBERVNLVE9QIC0tPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWRlc2t0b3AtZmlsdGVyc1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm0tZmlsdGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBmIG9mIGZpbHRlcnM/LmZpbHRlcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImZpbHRlckJ5KGYpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiaXNGaWx0ZXJBY3RpdmUoZilcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBmLnRleHQgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8IS0tIE1PQklMRSAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1tb2JpbGUtZmlsdGVyc1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1zZWxlY3RcIiAoY2xpY2spPVwib3BlbkNhdGVnb3JpZXNNb2RhbCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHRleHRzPy5jYXRlZ29yaWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj57eyB0ZXh0cz8uY2F0ZWdvcmllcyB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjExXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE3IDExXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgb3BhY2l0eT1cIjAuNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi4wMTkzIDBIMFYwLjgwNDQ3NUgxNi4wMTkzVjBaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNTE1MDUwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYuMDE5MyA0LjY3OTY5SDBWNS40ODQ2SDE2LjAxOTNWNC42Nzk2OVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM1MTUwNTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi4wMTkzIDkuMzYzMjhIMFYxMC4xNjc4SDE2LjAxOTNWOS4zNjMyOFpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM1MTUwNTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICBAaWYgKGhhc1Jvb21zRmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1zZWxlY3RcIiAoY2xpY2spPVwib3BlblJvb21zTW9kYWwoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAodGV4dHM/LnJvb21zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3sgdGV4dHM/LnJvb21zIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxN1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjExXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNyAxMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBvcGFjaXR5PVwiMC41XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYuMDE5MyAwSDBWMC44MDQ0NzVIMTYuMDE5M1YwWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM1MTUwNTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi4wMTkzIDQuNjc5NjlIMFY1LjQ4NDZIMTYuMDE5M1Y0LjY3OTY5WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM1MTUwNTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi4wMTkzIDkuMzYzMjhIMFYxMC4xNjc4SDE2LjAxOTNWOS4zNjMyOFpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNTE1MDUwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBHUklEIC0tPlxuICAgICAgICAgICAgQGlmIChmaWx0ZXJlZEltYWdlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZ2FsLWdyaWRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLWdhbC1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpdGVtIG9mIGZpbHRlcmVkSW1hZ2VzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm0tbWVkaWFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cIml0ZW0uaW1nPy5zcmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtZmFuY3lib3hdPVwiZ2V0RmFuY3lib3hHcm91cCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWNhcHRpb25dPVwiaXRlbS50aXRsZSA/PyAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIml0ZW0uaW1nPy5zcmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cIml0ZW0uaW1nPy5hbHQgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWl0ZW0tZm9vdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgaXRlbS50aXRsZSB8fCAnJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGltZyBbc3JjXT1cImNvbnRlbnQubGVuc0ljb25cIiBhbHQ9XCJuYW1lXCIgLz4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiNTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiNTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCA0MCA0MFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjUwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCI1MFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZmlsbF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVzPy5wcmltYXJ5ID8/ICcjRkY0MzM4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTI5LjE3OTIgMjcuOTc3M0wyMy43MjE5IDIyLjUxNzZMMjMuNTg2OCAyMi40MjQzQzIzLjU1NjcgMjIuNDAxNSAyMy41MzY3IDIyLjM2NzcgMjMuNTMxNCAyMi4zMzAzQzIzLjUyNiAyMi4yOTI5IDIzLjUzNTYgMjIuMjU0OSAyMy41NTgyIDIyLjIyNDZDMjQuNjA4OCAyMC44MzY0IDI1LjA5MzcgMTkuMTAxNCAyNC45MTUxIDE3LjM2OTdDMjQuNzM2NSAxNS42MzggMjMuOTA3NyAxNC4wMzg1IDIyLjU5NTkgMTIuODk0QzIxLjI4NDEgMTEuNzQ5NSAxOS41ODcgMTEuMTQ1MiAxNy44NDcgMTEuMjAzQzE2LjEwNzEgMTEuMjYwOSAxNC40NTM5IDExLjk3NjYgMTMuMjIxIDEzLjIwNTdDMTEuOTg4MSAxNC40MzQ5IDExLjI2NzQgMTYuMDg1OSAxMS4yMDQyIDE3LjgyNTdDMTEuMTQxMSAxOS41NjU0IDExLjc0MDIgMjEuMjY0NCAxMi44ODA3IDIyLjU3OTZDMTQuMDIxMyAyMy44OTQ5IDE1LjYxODIgMjQuNzI4NiAxNy4zNDk0IDI0LjkxMjVDMTkuMDgwNiAyNS4wOTYzIDIwLjgxNyAyNC42MTY3IDIyLjIwODQgMjMuNTcwM0MyMi4yNDIzIDIzLjU0NzEgMjIuMjgyNyAyMy41MzUzIDIyLjMyMzggMjMuNTM2N0MyMi4zNDM4IDIzLjUzOTYgMjIuMzYzIDIzLjU0NjcgMjIuMzgwMSAyMy41NTc1QzIyLjM5NzIgMjMuNTY4NCAyMi40MTE4IDIzLjU4MjggMjIuNDIyOCAyMy41OTk3TDI3Ljk2ODUgMjkuMTg4OEMyOC4xMjg3IDI5LjM0NjUgMjguMzQ0NiAyOS40MzQ3IDI4LjU2OTQgMjkuNDM0NEgyOC42ODcyTDI4LjY5ODcgMjkuNDI0NkMyOC44ODA4IDI5LjM5NzIgMjkuMDQ5IDI5LjMxMSAyOS4xNzc1IDI5LjE3OUMyOS4zMzU1IDI5LjAxOSAyOS40MjQzIDI4LjgwMzMgMjkuNDI0NiAyOC41Nzg1QzI5LjQyNDkgMjguMzUzNyAyOS4zMzY3IDI4LjEzNzcgMjkuMTc5MiAyNy45NzczWk0xOC4xMDc0IDEyLjk4OEMxOS4xMjE0IDEyLjk4OCAyMC4xMTI1IDEzLjI4ODcgMjAuOTU1NiAxMy44NTJDMjEuNzk4NyAxNC40MTUzIDIyLjQ1NTggMTUuMjE2IDIyLjg0MzggMTYuMTUyN0MyMy4yMzE4IDE3LjA4OTUgMjMuMzMzMyAxOC4xMjAzIDIzLjEzNTUgMTkuMTE0N0MyMi45Mzc3IDIwLjEwOTIgMjIuNDQ5NCAyMS4wMjI3IDIxLjczMjUgMjEuNzM5N0MyMS4wMTU1IDIyLjQ1NjYgMjAuMTAyIDIyLjk0NDkgMTkuMTA3NiAyMy4xNDI3QzE4LjExMzEgMjMuMzQwNSAxNy4wODIzIDIzLjIzOSAxNi4xNDU2IDIyLjg1MUMxNS4yMDg4IDIyLjQ2MjkgMTQuNDA4MSAyMS44MDU5IDEzLjg0NDggMjAuOTYyOEMxMy4yODE1IDIwLjExOTcgMTIuOTgwOCAxOS4xMjg1IDEyLjk4MDggMTguMTE0NkMxMi45ODQ3IDE2Ljc1NjEgMTMuNTI2MSAxNS40NTQ0IDE0LjQ4NjcgMTQuNDkzOEMxNS40NDcyIDEzLjUzMzMgMTYuNzQ5IDEyLjk5MTkgMTguMTA3NCAxMi45ODhaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICBAaWYgKHRleHRzPy5ub3RGb3VuZCkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1lbXB0eVwiIFtpbm5lckhUTUxdPVwidGV4dHM/Lm5vdEZvdW5kXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaWYgKHRleHRzPy50aXRsZSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvb3RlclwiIFtpbm5lckhUTUxdPVwidGV4dHM/LnRpdGxlXCI+PC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gTU9EQUwgY2F0ZWdvcsOtYXMgKG1vYmlsZSkgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICNjYXRlZ29yaWVzTW9kYWxcbiAgICAgICAgICAgIGNsYXNzPVwibS1tb2RhbC1jb250ZW50XCJcbiAgICAgICAgICAgIGlkPVwiY2F0ZWdvcmllcy1maWx0ZXItbW9kYWxcIlxuICAgICAgICAgICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgICAgICAgICBhcmlhLW1vZGFsPVwidHJ1ZVwiXG4gICAgICAgICAgICBoaWRkZW5cbiAgICAgICAgPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibS1jbG9zZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlTW9kYWxzKClcIlxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDZXJyYXJcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS4tLWNsLWNvbG9yXT1cInN0eWxlcz8ucHJpbWFyeVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgw5dcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1yaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHRleHRzPy5jYXRlZ29yaWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgdGV4dHM/LmNhdGVnb3JpZXMgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGYgb2YgZmlsdGVycz8uZmlsdGVyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImZpbHRlckZyb21Nb2RhbChmKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJpc0ZpbHRlckFjdGl2ZShmKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZi50ZXh0IH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBNT0RBTCBoYWJpdGFjaW9uZXMgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICNyb29tc01vZGFsXG4gICAgICAgICAgICBjbGFzcz1cIm0tbW9kYWwtY29udGVudFwiXG4gICAgICAgICAgICBpZD1cInJvb21zLWZpbHRlci1tb2RhbFwiXG4gICAgICAgICAgICByb2xlPVwiZGlhbG9nXCJcbiAgICAgICAgICAgIGFyaWEtbW9kYWw9XCJ0cnVlXCJcbiAgICAgICAgICAgIGhpZGRlblxuICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtLWNsb3NlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VNb2RhbHMoKVwiXG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNlcnJhclwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLi0tY2wtY29sb3JdPVwic3R5bGVzPy5wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICBtLWljb25cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICDDl1xuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmICh0ZXh0cz8ucm9vbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyB0ZXh0cz8ucm9vbXMgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tcmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChyb29tT3B0aW9ucz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHJvb20gb2Ygcm9vbU9wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0Um9vbShyb29tLmlkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwic2VsZWN0ZWRSb29tS2V5ID09PSByb29tLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJvb20ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxufVxuIl19