ngx-sumax-erp-components 1.1.5 → 1.1.7

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,11 +51,12 @@ export class ScMenuPanelComponent extends ScCellRenderBase {
51
51
  this.idScMenuPanel = `sc-menu-panel-${++scMenuPanelNextId}`;
52
52
  this.subMenus = [];
53
53
  }
54
- onButtonActionEmit(action) {
54
+ onButtonActionEmit(action, isRightClick = false) {
55
55
  const index = this.params?.node.rowIndex ?? -1;
56
56
  this._scCellRenderButtonService.buttonAction({
57
57
  index,
58
58
  action,
59
+ isRightClick
59
60
  });
60
61
  }
61
62
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ScMenuPanelComponent, deps: [{ token: ScCellRenderButtonService }], target: i0.ɵɵFactoryTarget.Component }); }
@@ -205,9 +206,9 @@ export class ScCellRendererButtonComponent extends ScCellRenderBase {
205
206
  this.configButtons =
206
207
  params.context.componentParent._configButtonsDefaultAgGrid;
207
208
  }
208
- onButtonAction(typeButton) {
209
+ onButtonAction(typeButton, isRightClick = false) {
209
210
  if (typeButton)
210
- this.params?.context.componentParent.onButtonActionAgGridEmit(this.params.node.rowIndex, typeButton);
211
+ this.params?.context.componentParent.onButtonActionAgGridEmit(this.params.node.rowIndex, typeButton, isRightClick);
211
212
  }
212
213
  refresh(_) {
213
214
  return true;
@@ -230,13 +231,13 @@ export class ScCellRendererButtonComponent extends ScCellRenderBase {
230
231
  return configButtons?.tooltipOption;
231
232
  }
232
233
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ScCellRendererButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
233
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ScCellRendererButtonComponent, selector: "ng-component", host: { properties: { "id": "idScCellRenderButton" }, classAttribute: "d-flex justify-content-center sc-cell-render-button" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngFor=\"let option of configButtons\">\r\n <ng-container *ngIf=\"option?.submenu?.length ?? 0 > 0; else buttonPrincipal\">\r\n <ng-container *ngIf=\"!hideSubMenu(option?.submenu ?? [])\">\r\n <button\r\n matRipple\r\n class=\"btn sc-cell-render-button-action\"\r\n [ngClass]=\"option?.buttonOption?.classList ? $any(option?.buttonOption?.classList) : ''\"\r\n *ngIf=\"!isFunctionHide(option?.hide ?? false)\"\r\n [disabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [matMenuTriggerFor]=\"panel.menu\"\r\n [matTooltip]=\"getTooltipOption(option).label\"\r\n [matTooltipClass]=\"getTooltipOption(option).classList ?? ''\"\r\n [matTooltipDisabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [attr.aria-label]=\"getTooltipOption(option).label\">\r\n <em\r\n class=\"p-0\"\r\n [class]=\"\r\n (option?.iconOption?.icon ?? '') +\r\n ' ' +\r\n (isFunctionDisabled(option?.disabled) ? 'text-muted' : option?.iconOption?.classList ?? '')\r\n \"></em>\r\n </button>\r\n\r\n <sc-menu-panel #panel [params]=\"params\" [subMenus]=\"option.submenu ?? []\"></sc-menu-panel>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #buttonPrincipal>\r\n <button\r\n *ngIf=\"!isFunctionHide(option?.hide ?? false)\"\r\n [disabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [ngClass]=\"option?.buttonOption?.classList ? $any(option?.buttonOption?.classList) : ''\"\r\n class=\"btn sc-cell-render-button-action\"\r\n matRipple\r\n (click)=\"onButtonAction(option?.actionCode ?? '')\"\r\n type=\"button\"\r\n [matTooltip]=\"getTooltipOption(option).label\"\r\n [matTooltipClass]=\"getTooltipOption(option).classList ?? ''\"\r\n [matTooltipDisabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [attr.aria-label]=\"getTooltipOption(option).label\">\r\n <em\r\n class=\"pt-0\"\r\n [class]=\"\r\n (option?.iconOption?.icon ?? '') +\r\n ' ' +\r\n (isFunctionDisabled(option?.disabled) ? 'text-muted' : option?.iconOption?.classList ?? '')\r\n \"></em>\r\n </button>\r\n </ng-template>\r\n</ng-container>\r\n", styles: [".sc-cell-render-button{padding:.1em 1em}.sc-cell-render-button-action{border:none;border-radius:50%;padding:0 .5em;text-align:center;margin:.1em;background-color:transparent}.sc-cell-render-button-action i{display:block;width:1.7em;height:1.7em;line-height:1.7em;padding-right:0}button:disabled{cursor:no-drop}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: ScMenuPanelComponent, selector: "sc-menu-panel", inputs: ["subMenus", "params"] }], encapsulation: i0.ViewEncapsulation.None }); }
234
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ScCellRendererButtonComponent, selector: "ng-component", host: { properties: { "id": "idScCellRenderButton" }, classAttribute: "d-flex justify-content-center sc-cell-render-button" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngFor=\"let option of configButtons\">\r\n <ng-container *ngIf=\"option?.submenu?.length ?? 0 > 0; else buttonPrincipal\">\r\n <ng-container *ngIf=\"!hideSubMenu(option?.submenu ?? [])\">\r\n <button\r\n matRipple\r\n class=\"btn sc-cell-render-button-action\"\r\n [ngClass]=\"option?.buttonOption?.classList ? $any(option?.buttonOption?.classList) : ''\"\r\n *ngIf=\"!isFunctionHide(option?.hide ?? false)\"\r\n [disabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [matMenuTriggerFor]=\"panel.menu\"\r\n [matTooltip]=\"getTooltipOption(option).label\"\r\n [matTooltipClass]=\"getTooltipOption(option).classList ?? ''\"\r\n [matTooltipDisabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [attr.aria-label]=\"getTooltipOption(option).label\">\r\n <em\r\n class=\"p-0\"\r\n [class]=\"\r\n (option?.iconOption?.icon ?? '') +\r\n ' ' +\r\n (isFunctionDisabled(option?.disabled) ? 'text-muted' : option?.iconOption?.classList ?? '')\r\n \"></em>\r\n </button>\r\n\r\n <sc-menu-panel #panel [params]=\"params\" [subMenus]=\"option.submenu ?? []\"></sc-menu-panel>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #buttonPrincipal>\r\n <button\r\n *ngIf=\"!isFunctionHide(option?.hide ?? false)\"\r\n [disabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [ngClass]=\"option?.buttonOption?.classList ? $any(option?.buttonOption?.classList) : ''\"\r\n class=\"btn sc-cell-render-button-action\"\r\n matRipple\r\n (click)=\"onButtonAction(option?.actionCode ?? '')\"\r\n (auxclick)=\"onButtonAction(option?.actionCode ?? '', true)\"\r\n type=\"button\"\r\n [matTooltip]=\"getTooltipOption(option).label\"\r\n [matTooltipClass]=\"getTooltipOption(option).classList ?? ''\"\r\n [matTooltipDisabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [attr.aria-label]=\"getTooltipOption(option).label\">\r\n <em\r\n class=\"pt-0\"\r\n [class]=\"\r\n (option?.iconOption?.icon ?? '') +\r\n ' ' +\r\n (isFunctionDisabled(option?.disabled) ? 'text-muted' : option?.iconOption?.classList ?? '')\r\n \"></em>\r\n </button>\r\n </ng-template>\r\n</ng-container>\r\n", styles: [".sc-cell-render-button{padding:.1em 1em}.sc-cell-render-button-action{border:none;border-radius:50%;padding:0 .5em;text-align:center;margin:.1em;background-color:transparent}.sc-cell-render-button-action i{display:block;width:1.7em;height:1.7em;line-height:1.7em;padding-right:0}button:disabled{cursor:no-drop}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: ScMenuPanelComponent, selector: "sc-menu-panel", inputs: ["subMenus", "params"] }], encapsulation: i0.ViewEncapsulation.None }); }
234
235
  }
235
236
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ScCellRendererButtonComponent, decorators: [{
236
237
  type: Component,
237
238
  args: [{ host: {
238
239
  '[id]': 'idScCellRenderButton',
239
240
  class: 'd-flex justify-content-center sc-cell-render-button',
240
- }, encapsulation: ViewEncapsulation.None, template: "<ng-container *ngFor=\"let option of configButtons\">\r\n <ng-container *ngIf=\"option?.submenu?.length ?? 0 > 0; else buttonPrincipal\">\r\n <ng-container *ngIf=\"!hideSubMenu(option?.submenu ?? [])\">\r\n <button\r\n matRipple\r\n class=\"btn sc-cell-render-button-action\"\r\n [ngClass]=\"option?.buttonOption?.classList ? $any(option?.buttonOption?.classList) : ''\"\r\n *ngIf=\"!isFunctionHide(option?.hide ?? false)\"\r\n [disabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [matMenuTriggerFor]=\"panel.menu\"\r\n [matTooltip]=\"getTooltipOption(option).label\"\r\n [matTooltipClass]=\"getTooltipOption(option).classList ?? ''\"\r\n [matTooltipDisabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [attr.aria-label]=\"getTooltipOption(option).label\">\r\n <em\r\n class=\"p-0\"\r\n [class]=\"\r\n (option?.iconOption?.icon ?? '') +\r\n ' ' +\r\n (isFunctionDisabled(option?.disabled) ? 'text-muted' : option?.iconOption?.classList ?? '')\r\n \"></em>\r\n </button>\r\n\r\n <sc-menu-panel #panel [params]=\"params\" [subMenus]=\"option.submenu ?? []\"></sc-menu-panel>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #buttonPrincipal>\r\n <button\r\n *ngIf=\"!isFunctionHide(option?.hide ?? false)\"\r\n [disabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [ngClass]=\"option?.buttonOption?.classList ? $any(option?.buttonOption?.classList) : ''\"\r\n class=\"btn sc-cell-render-button-action\"\r\n matRipple\r\n (click)=\"onButtonAction(option?.actionCode ?? '')\"\r\n type=\"button\"\r\n [matTooltip]=\"getTooltipOption(option).label\"\r\n [matTooltipClass]=\"getTooltipOption(option).classList ?? ''\"\r\n [matTooltipDisabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [attr.aria-label]=\"getTooltipOption(option).label\">\r\n <em\r\n class=\"pt-0\"\r\n [class]=\"\r\n (option?.iconOption?.icon ?? '') +\r\n ' ' +\r\n (isFunctionDisabled(option?.disabled) ? 'text-muted' : option?.iconOption?.classList ?? '')\r\n \"></em>\r\n </button>\r\n </ng-template>\r\n</ng-container>\r\n", styles: [".sc-cell-render-button{padding:.1em 1em}.sc-cell-render-button-action{border:none;border-radius:50%;padding:0 .5em;text-align:center;margin:.1em;background-color:transparent}.sc-cell-render-button-action i{display:block;width:1.7em;height:1.7em;line-height:1.7em;padding-right:0}button:disabled{cursor:no-drop}\n"] }]
241
+ }, encapsulation: ViewEncapsulation.None, template: "<ng-container *ngFor=\"let option of configButtons\">\r\n <ng-container *ngIf=\"option?.submenu?.length ?? 0 > 0; else buttonPrincipal\">\r\n <ng-container *ngIf=\"!hideSubMenu(option?.submenu ?? [])\">\r\n <button\r\n matRipple\r\n class=\"btn sc-cell-render-button-action\"\r\n [ngClass]=\"option?.buttonOption?.classList ? $any(option?.buttonOption?.classList) : ''\"\r\n *ngIf=\"!isFunctionHide(option?.hide ?? false)\"\r\n [disabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [matMenuTriggerFor]=\"panel.menu\"\r\n [matTooltip]=\"getTooltipOption(option).label\"\r\n [matTooltipClass]=\"getTooltipOption(option).classList ?? ''\"\r\n [matTooltipDisabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [attr.aria-label]=\"getTooltipOption(option).label\">\r\n <em\r\n class=\"p-0\"\r\n [class]=\"\r\n (option?.iconOption?.icon ?? '') +\r\n ' ' +\r\n (isFunctionDisabled(option?.disabled) ? 'text-muted' : option?.iconOption?.classList ?? '')\r\n \"></em>\r\n </button>\r\n\r\n <sc-menu-panel #panel [params]=\"params\" [subMenus]=\"option.submenu ?? []\"></sc-menu-panel>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #buttonPrincipal>\r\n <button\r\n *ngIf=\"!isFunctionHide(option?.hide ?? false)\"\r\n [disabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [ngClass]=\"option?.buttonOption?.classList ? $any(option?.buttonOption?.classList) : ''\"\r\n class=\"btn sc-cell-render-button-action\"\r\n matRipple\r\n (click)=\"onButtonAction(option?.actionCode ?? '')\"\r\n (auxclick)=\"onButtonAction(option?.actionCode ?? '', true)\"\r\n type=\"button\"\r\n [matTooltip]=\"getTooltipOption(option).label\"\r\n [matTooltipClass]=\"getTooltipOption(option).classList ?? ''\"\r\n [matTooltipDisabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [attr.aria-label]=\"getTooltipOption(option).label\">\r\n <em\r\n class=\"pt-0\"\r\n [class]=\"\r\n (option?.iconOption?.icon ?? '') +\r\n ' ' +\r\n (isFunctionDisabled(option?.disabled) ? 'text-muted' : option?.iconOption?.classList ?? '')\r\n \"></em>\r\n </button>\r\n </ng-template>\r\n</ng-container>\r\n", styles: [".sc-cell-render-button{padding:.1em 1em}.sc-cell-render-button-action{border:none;border-radius:50%;padding:0 .5em;text-align:center;margin:.1em;background-color:transparent}.sc-cell-render-button-action i{display:block;width:1.7em;height:1.7em;line-height:1.7em;padding-right:0}button:disabled{cursor:no-drop}\n"] }]
241
242
  }] });
242
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2VsbC1yZW5kZXItYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zdW1heC1lcnAtY29tcG9uZW50L3NyYy9saWIvc2MtYWctZ3JpZC9jZWxsLXJlbmRlci9zYy1jZWxsLXJlbmRlci1idXR0b24vc2MtY2VsbC1yZW5kZXItYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zdW1heC1lcnAtY29tcG9uZW50L3NyYy9saWIvc2MtYWctZ3JpZC9jZWxsLXJlbmRlci9zYy1jZWxsLXJlbmRlci1idXR0b24vc2MtY2VsbC1yZW5kZXItYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBQ0wsU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQUcvQixJQUFJLHdCQUF3QixHQUFHLENBQUMsQ0FBQztBQUNqQyxJQUFJLGlCQUFpQixHQUFHLENBQUMsQ0FBQztBQUcxQixNQUFNLE9BQU8seUJBQXlCO0lBRHRDO1FBRVUsMEJBQXFCLEdBQUcsSUFBSSxPQUFPLEVBR3ZDLENBQUM7UUFDTCx5QkFBb0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxFQUFFLENBQUM7S0FLbEU7SUFIQyxZQUFZLENBQUMsTUFBeUM7UUFDcEQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxQyxDQUFDOytHQVRVLHlCQUF5QjttSEFBekIseUJBQXlCLGNBRGIsTUFBTTs7NEZBQ2xCLHlCQUF5QjtrQkFEckMsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxN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LENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO1lBQ2hDLElBQUksSUFBSSxJQUFJLElBQUk7Z0JBQUUsT0FBTyxLQUFLLENBQUM7WUFDL0IsSUFBSSxPQUFPLElBQUksSUFBSSxVQUFVO2dCQUFFLE9BQU8sSUFBSSxFQUFFLENBQUM7WUFDN0MsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxhQUFpQztRQUNoRCxJQUFHLE9BQU8sYUFBYSxFQUFFLGFBQWEsS0FBSyxVQUFVO1lBQ25ELE9BQU8sYUFBYSxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7O1lBRWhELE9BQU8sYUFBYSxFQUFFLGFBQWEsQ0FBQztJQUN4QyxDQUFDOytHQTNDVSw2QkFBNkI7bUdBQTdCLDZCQUE2QiwwTUN4TTFDLCt1RUFrREEscXdDRDhGYSxvQkFBb0I7OzRGQXdEcEIsNkJBQTZCO2tCQWpDekMsU0FBUzsyQkEyQkY7d0JBQ0osTUFBTSxFQUFFLHNCQUFzQjt3QkFDOUIsS0FBSyxFQUFFLHFEQUFxRDtxQkFDN0QsaUJBQ2MsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIERpcmVjdGl2ZSxcclxuICBJbmplY3RhYmxlLFxyXG4gIElucHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0TWVudSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xyXG5pbXBvcnQgeyBJQ2VsbFJlbmRlcmVyQW5ndWxhckNvbXAgfSBmcm9tICdhZy1ncmlkLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBJQ2VsbFJlbmRlcmVyUGFyYW1zIH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbmZpZ0J1dHRvbkFnR3JpZCwgRGlzYWJsZWRGdWMsIEVudW1CdXR0b25UeXBlLCBIaWRlRnVjLCBTdWJNZW51LCBUb29sdGlwT3B0aW9uIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvSVNjQWdHcmlkJztcclxuXHJcbmxldCBzY0NlbGxSZW5kZXJCdXR0b25OZXh0SWQgPSAwO1xyXG5sZXQgc2NNZW51UGFuZWxOZXh0SWQgPSAwO1xyXG5cclxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXHJcbmV4cG9ydCBjbGFzcyBTY0NlbGxSZW5kZXJCdXR0b25TZXJ2aWNlIHtcclxuICBwcml2YXRlIF9oYW5kbGVyQnV0dG9uQWN0aW9uJCA9IG5ldyBTdWJqZWN0PHtcclxuICAgIGluZGV4OiBudW1iZXI7XHJcbiAgICBhY3Rpb246IHN0cmluZztcclxuICB9PigpO1xyXG4gIGhhbmRsZXJCdXR0b25BY3Rpb24kID0gdGhpcy5faGFuZGxlckJ1dHRvbkFjdGlvbiQuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIGJ1dHRvbkFjdGlvbihvcHRpb246IHsgaW5kZXg6IG51bWJlcjsgYWN0aW9uOiBzdHJpbmcgfSk6IHZvaWQge1xyXG4gICAgdGhpcy5faGFuZGxlckJ1dHRvbkFjdGlvbiQubmV4dChvcHRpb24pO1xyXG4gIH1cclxufVxyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmFic3RyYWN0IGNsYXNzIFNjQ2VsbFJlbmRlckJhc2Uge1xyXG4gIHBhcmFtcyE6IElDZWxsUmVuZGVyZXJQYXJhbXM7XHJcblxyXG4gIGlzRnVuY3Rpb25EaXNhYmxlZCh2YWx1ZTogYm9vbGVhbiB8IERpc2FibGVkRnVjIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlKHRoaXMucGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBpc0Z1bmN0aW9uSGlkZSh2YWx1ZTogYm9vbGVhbiB8IEhpZGVGdWMpOiBib29sZWFuIHtcclxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICByZXR1cm4gdmFsdWUodGhpcy5wYXJhbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2MtbWVudS1wYW5lbCcsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxtYXQtbWVudSAjbWVudT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3ViTWVudSBvZiBzdWJNZW51c1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNGdW5jdGlvbkhpZGUoc3ViTWVudS5oaWRlID8/IGZhbHNlKVwiPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAqbmdJZj1cIiFzdWJNZW51LnN1Ym1lbnU7IGVsc2UgYnJhbmNoXCJcclxuICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNGdW5jdGlvbkRpc2FibGVkKHN1Yk1lbnU/LmRpc2FibGVkKVwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5zYy1tZW51LXBhbmVsLWJvdHRvbV09XCJzdWJNZW51Py5pY29uICE9PSB1bmRlZmluZWRcIlxyXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInN1Yk1lbnU/LmxhYmVsID8/ICcnXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQnV0dG9uQWN0aW9uRW1pdChzdWJNZW51Py5hY3Rpb25Db2RlID8/ICcnKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJzdWJNZW51Py5pY29uXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZhLWxnXCJcclxuICAgICAgICAgICAgICBbY2xhc3NdPVwiXHJcbiAgICAgICAgICAgICAgICAnc2MtbWVudS1wYW5lbC1pY29uICcgK1xyXG4gICAgICAgICAgICAgICAgc3ViTWVudS5pY29uICtcclxuICAgICAgICAgICAgICAgICcgJyArXHJcbiAgICAgICAgICAgICAgICAoaXNGdW5jdGlvbkRpc2FibGVkKHN1Yk1lbnU/LmRpc2FibGVkKVxyXG4gICAgICAgICAgICAgICAgICA/ICd0ZXh0LW11dGVkJ1xyXG4gICAgICAgICAgICAgICAgICA6IHN1Yk1lbnU/Lmljb25DbGFzcyA/PyAnJylcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+PC9pPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1bWF4LWxhYmVsXCI+e3sgc3ViTWVudT8ubGFiZWwgPz8gJycgfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2JyYW5jaD5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cclxuICAgICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwiaW5uZXJQYW5lbC5tZW51XCJcclxuICAgICAgICAgICAgICBbY2xhc3Muc2MtbWVudS1wYW5lbC1ib3R0b21dPVwic3ViTWVudT8uaWNvbiAhPT0gdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNGdW5jdGlvbkRpc2FibGVkKHN1Yk1lbnU/LmRpc2FibGVkKVwiXHJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJzdWJNZW51Py5sYWJlbCA/PyAnJ1wiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJzdWJNZW51Py5pY29uXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEtbGdcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cIlxyXG4gICAgICAgICAgICAgICAgICAnc2MtbWVudS1wYW5lbC1pY29uICcgK1xyXG4gICAgICAgICAgICAgICAgICBzdWJNZW51Lmljb24gK1xyXG4gICAgICAgICAgICAgICAgICAnICcgK1xyXG4gICAgICAgICAgICAgICAgICAoaXNGdW5jdGlvbkRpc2FibGVkKHN1Yk1lbnU/LmRpc2FibGVkKVxyXG4gICAgICAgICAgICAgICAgICAgID8gJ3RleHQtbXV0ZWQnXHJcbiAgICAgICAgICAgICAgICAgICAgOiBzdWJNZW51Py5pY29uQ2xhc3MgPz8gJycpXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID48L2k+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdW1heC1sYWJlbFwiPnt7IHN1Yk1lbnU/LmxhYmVsID8/ICcnIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgIDxzYy1tZW51LXBhbmVsXHJcbiAgICAgICAgICAgICAgI2lubmVyUGFuZWxcclxuICAgICAgICAgICAgICBbcGFyYW1zXT1cInBhcmFtc1wiXHJcbiAgICAgICAgICAgICAgKG9uQnV0dG9uQWN0aW9uKT1cIm9uQnV0dG9uQWN0aW9uRW1pdChzdWJNZW51Py5hY3Rpb25Db2RlID8/ICcnKVwiXHJcbiAgICAgICAgICAgICAgW3N1Yk1lbnVzXT1cInN1Yk1lbnUuc3VibWVudSA/PyBbXVwiXHJcbiAgICAgICAgICAgID48L3NjLW1lbnUtcGFuZWw+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbWF0LW1lbnU+XHJcbiAgYCxcclxuICBzdHlsZXM6IFtcclxuICAgIGBcclxuICAgICAgLnNjLW1lbnUtcGFuZWwtYm90dG9tIHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5zYy1tZW51LXBhbmVsLWljb24ge1xyXG4gICAgICAgIHdpZHRoOiAxLjZyZW07XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwLjNlbTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRdIHtcclxuICAgICAgICBwb2ludGVyLWV2ZW50czogYXV0byAhaW1wb3J0YW50O1xyXG4gICAgICAgIGN1cnNvcjogbm8tZHJvcCAhaW1wb3J0YW50O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBidXR0b246ZGlzYWJsZWQge1xyXG4gICAgICAgIGN1cnNvcjogbm8tZHJvcDtcclxuICAgICAgfVxyXG4gICAgYCxcclxuICBdLFxyXG4gIGhvc3Q6IHtcclxuICAgICdbaWRdJzogJ2lkU2NNZW51UGFuZWwnLFxyXG4gIH0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTY01lbnVQYW5lbENvbXBvbmVudCBleHRlbmRzIFNjQ2VsbFJlbmRlckJhc2Uge1xyXG4gIGlkU2NNZW51UGFuZWwgPSBgc2MtbWVudS1wYW5lbC0keysrc2NNZW51UGFuZWxOZXh0SWR9YDtcclxuXHJcbiAgQFZpZXdDaGlsZCgnbWVudScsIHsgc3RhdGljOiB0cnVlIH0pIG1lbnUhOiBNYXRNZW51O1xyXG5cclxuICBASW5wdXQoKSBzdWJNZW51czogU3ViTWVudVtdID0gW107XHJcbiAgQElucHV0KCkgb3ZlcnJpZGUgcGFyYW1zITogSUNlbGxSZW5kZXJlclBhcmFtcztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9zY0NlbGxSZW5kZXJCdXR0b25TZXJ2aWNlOiBTY0NlbGxSZW5kZXJCdXR0b25TZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgb25CdXR0b25BY3Rpb25FbWl0KGFjdGlvbjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMucGFyYW1zPy5ub2RlLnJvd0luZGV4ID8/IC0xO1xyXG4gICAgdGhpcy5fc2NDZWxsUmVuZGVyQnV0dG9uU2VydmljZS5idXR0b25BY3Rpb24oe1xyXG4gICAgICBpbmRleCxcclxuICAgICAgYWN0aW9uLFxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZVVybDogJy4vc2MtY2VsbC1yZW5kZXItYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZXM6IFtcclxuICAgIGBcclxuICAgICAgLnNjLWNlbGwtcmVuZGVyLWJ1dHRvbiB7XHJcbiAgICAgICAgcGFkZGluZzogMC4xZW0gMWVtO1xyXG4gICAgICB9XHJcbiAgICAgIC5zYy1jZWxsLXJlbmRlci1idXR0b24tYWN0aW9uIHtcclxuICAgICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgICAgIHBhZGRpbmc6IDAgMC41ZW07XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgIG1hcmdpbjogMC4xZW07XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICAgIH1cclxuICAgICAgLnNjLWNlbGwtcmVuZGVyLWJ1dHRvbi1hY3Rpb24gaSB7XHJcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgd2lkdGg6IDEuN2VtO1xyXG4gICAgICAgIGhlaWdodDogMS43ZW07XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuN2VtO1xyXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XHJcbiAgICAgIH1cclxuICAgICAgYnV0dG9uOmRpc2FibGVkIHtcclxuICAgICAgICBjdXJzb3I6IG5vLWRyb3A7XHJcbiAgICAgIH1cclxuICAgIGAsXHJcbiAgXSxcclxuICBob3N0OiB7XHJcbiAgICAnW2lkXSc6ICdpZFNjQ2VsbFJlbmRlckJ1dHRvbicsXHJcbiAgICBjbGFzczogJ2QtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHNjLWNlbGwtcmVuZGVyLWJ1dHRvbicsXHJcbiAgfSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2NDZWxsUmVuZGVyZXJCdXR0b25Db21wb25lbnRcclxuICBleHRlbmRzIFNjQ2VsbFJlbmRlckJhc2VcclxuICBpbXBsZW1lbnRzIElDZWxsUmVuZGVyZXJBbmd1bGFyQ29tcFxyXG57XHJcbiAgaWRTY0NlbGxSZW5kZXJCdXR0b24gPSBgc2MtY2VsbC1yZW5kZXItYnV0dG9uLSR7KytzY0NlbGxSZW5kZXJCdXR0b25OZXh0SWR9YDtcclxuXHJcbiAgb3ZlcnJpZGUgcGFyYW1zITogSUNlbGxSZW5kZXJlclBhcmFtcztcclxuXHJcbiAgY29uZmlnQnV0dG9uczogQ29uZmlnQnV0dG9uQWdHcmlkW10gPSBbXTtcclxuXHJcbiAgYWdJbml0KHBhcmFtczogSUNlbGxSZW5kZXJlclBhcmFtcyk6IHZvaWQge1xyXG4gICAgdGhpcy5wYXJhbXMgPSBwYXJhbXM7XHJcbiAgICB0aGlzLmNvbmZpZ0J1dHRvbnMgPVxyXG4gICAgICBwYXJhbXMuY29udGV4dC5jb21wb25lbnRQYXJlbnQuX2NvbmZpZ0J1dHRvbnNEZWZhdWx0QWdHcmlkO1xyXG4gIH1cclxuXHJcbiAgb25CdXR0b25BY3Rpb24odHlwZUJ1dHRvbjogRW51bUJ1dHRvblR5cGUgfCBzdHJpbmcpIHtcclxuICAgIGlmICh0eXBlQnV0dG9uKVxyXG4gICAgICB0aGlzLnBhcmFtcz8uY29udGV4dC5jb21wb25lbnRQYXJlbnQub25CdXR0b25BY3Rpb25BZ0dyaWRFbWl0KFxyXG4gICAgICAgIHRoaXMucGFyYW1zLm5vZGUucm93SW5kZXgsXHJcbiAgICAgICAgdHlwZUJ1dHRvblxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaChfOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgaGlkZVN1Yk1lbnUoc3ViTWVudTogU3ViTWVudVtdKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoc3ViTWVudS5sZW5ndGggPT09IDApIHJldHVybiB0cnVlO1xyXG5cclxuICAgIHJldHVybiBzdWJNZW51LmV2ZXJ5KCh7IGhpZGUgfSkgPT4ge1xyXG4gICAgICBpZiAoaGlkZSA9PSBudWxsKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgIGlmICh0eXBlb2YgaGlkZSA9PSAnZnVuY3Rpb24nKSByZXR1cm4gaGlkZSgpO1xyXG4gICAgICByZXR1cm4gaGlkZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0VG9vbHRpcE9wdGlvbihjb25maWdCdXR0b25zOiBDb25maWdCdXR0b25BZ0dyaWQpOiBUb29sdGlwT3B0aW9uIHtcclxuICAgIGlmKHR5cGVvZiBjb25maWdCdXR0b25zPy50b29sdGlwT3B0aW9uID09PSAnZnVuY3Rpb24nKVxyXG4gICAgICByZXR1cm4gY29uZmlnQnV0dG9ucz8udG9vbHRpcE9wdGlvbih0aGlzLnBhcmFtcylcclxuICAgIGVsc2UgXHJcbiAgICAgIHJldHVybiBjb25maWdCdXR0b25zPy50b29sdGlwT3B0aW9uO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgY29uZmlnQnV0dG9uc1wiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb24/LnN1Ym1lbnU/Lmxlbmd0aCA/PyAwID4gMDsgZWxzZSBidXR0b25QcmluY2lwYWxcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaGlkZVN1Yk1lbnUob3B0aW9uPy5zdWJtZW51ID8/IFtdKVwiPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgbWF0UmlwcGxlXHJcbiAgICAgICAgY2xhc3M9XCJidG4gc2MtY2VsbC1yZW5kZXItYnV0dG9uLWFjdGlvblwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwib3B0aW9uPy5idXR0b25PcHRpb24/LmNsYXNzTGlzdCA/ICRhbnkob3B0aW9uPy5idXR0b25PcHRpb24/LmNsYXNzTGlzdCkgOiAnJ1wiXHJcbiAgICAgICAgKm5nSWY9XCIhaXNGdW5jdGlvbkhpZGUob3B0aW9uPy5oaWRlID8/IGZhbHNlKVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzRnVuY3Rpb25EaXNhYmxlZChvcHRpb24/LmRpc2FibGVkKVwiXHJcbiAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cInBhbmVsLm1lbnVcIlxyXG4gICAgICAgIFttYXRUb29sdGlwXT1cImdldFRvb2x0aXBPcHRpb24ob3B0aW9uKS5sYWJlbFwiXHJcbiAgICAgICAgW21hdFRvb2x0aXBDbGFzc109XCJnZXRUb29sdGlwT3B0aW9uKG9wdGlvbikuY2xhc3NMaXN0ID8/ICcnXCJcclxuICAgICAgICBbbWF0VG9vbHRpcERpc2FibGVkXT1cImlzRnVuY3Rpb25EaXNhYmxlZChvcHRpb24/LmRpc2FibGVkKVwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJnZXRUb29sdGlwT3B0aW9uKG9wdGlvbikubGFiZWxcIj5cclxuICAgICAgICA8ZW1cclxuICAgICAgICAgIGNsYXNzPVwicC0wXCJcclxuICAgICAgICAgIFtjbGFzc109XCJcclxuICAgICAgICAgICAgKG9wdGlvbj8uaWNvbk9wdGlvbj8uaWNvbiA/PyAnJykgK1xyXG4gICAgICAgICAgICAnICcgK1xyXG4gICAgICAgICAgICAoaXNGdW5jdGlvbkRpc2FibGVkKG9wdGlvbj8uZGlzYWJsZWQpID8gJ3RleHQtbXV0ZWQnIDogb3B0aW9uPy5pY29uT3B0aW9uPy5jbGFzc0xpc3QgPz8gJycpXHJcbiAgICAgICAgICBcIj48L2VtPlxyXG4gICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgIDxzYy1tZW51LXBhbmVsICNwYW5lbCBbcGFyYW1zXT1cInBhcmFtc1wiIFtzdWJNZW51c109XCJvcHRpb24uc3VibWVudSA/PyBbXVwiPjwvc2MtbWVudS1wYW5lbD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2J1dHRvblByaW5jaXBhbD5cclxuICAgIDxidXR0b25cclxuICAgICAgKm5nSWY9XCIhaXNGdW5jdGlvbkhpZGUob3B0aW9uPy5oaWRlID8/IGZhbHNlKVwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJpc0Z1bmN0aW9uRGlzYWJsZWQob3B0aW9uPy5kaXNhYmxlZClcIlxyXG4gICAgICBbbmdDbGFzc109XCJvcHRpb24/LmJ1dHRvbk9wdGlvbj8uY2xhc3NMaXN0ID8gJGFueShvcHRpb24/LmJ1dHRvbk9wdGlvbj8uY2xhc3NMaXN0KSA6ICcnXCJcclxuICAgICAgY2xhc3M9XCJidG4gc2MtY2VsbC1yZW5kZXItYnV0dG9uLWFjdGlvblwiXHJcbiAgICAgIG1hdFJpcHBsZVxyXG4gICAgICAoY2xpY2spPVwib25CdXR0b25BY3Rpb24ob3B0aW9uPy5hY3Rpb25Db2RlID8/ICcnKVwiXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICBbbWF0VG9vbHRpcF09XCJnZXRUb29sdGlwT3B0aW9uKG9wdGlvbikubGFiZWxcIlxyXG4gICAgICBbbWF0VG9vbHRpcENsYXNzXT1cImdldFRvb2x0aXBPcHRpb24ob3B0aW9uKS5jbGFzc0xpc3QgPz8gJydcIlxyXG4gICAgICBbbWF0VG9vbHRpcERpc2FibGVkXT1cImlzRnVuY3Rpb25EaXNhYmxlZChvcHRpb24/LmRpc2FibGVkKVwiXHJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZ2V0VG9vbHRpcE9wdGlvbihvcHRpb24pLmxhYmVsXCI+XHJcbiAgICAgIDxlbVxyXG4gICAgICAgIGNsYXNzPVwicHQtMFwiXHJcbiAgICAgICAgW2NsYXNzXT1cIlxyXG4gICAgICAgICAgKG9wdGlvbj8uaWNvbk9wdGlvbj8uaWNvbiA/PyAnJykgK1xyXG4gICAgICAgICAgJyAnICtcclxuICAgICAgICAgIChpc0Z1bmN0aW9uRGlzYWJsZWQob3B0aW9uPy5kaXNhYmxlZCkgPyAndGV4dC1tdXRlZCcgOiBvcHRpb24/Lmljb25PcHRpb24/LmNsYXNzTGlzdCA/PyAnJylcclxuICAgICAgICBcIj48L2VtPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9uZy1jb250YWluZXI+XHJcbiJdfQ==
243
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2VsbC1yZW5kZXItYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zdW1heC1lcnAtY29tcG9uZW50L3NyYy9saWIvc2MtYWctZ3JpZC9jZWxsLXJlbmRlci9zYy1jZWxsLXJlbmRlci1idXR0b24vc2MtY2VsbC1yZW5kZXItYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zdW1heC1lcnAtY29tcG9uZW50L3NyYy9saWIvc2MtYWctZ3JpZC9jZWxsLXJlbmRlci9zYy1jZWxsLXJlbmRlci1idXR0b24vc2MtY2VsbC1yZW5kZXItYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBQ0wsU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQUcvQixJQUFJLHdCQUF3QixHQUFHLENBQUMsQ0FBQztBQUNqQyxJQUFJLGlCQUFpQixHQUFHLENBQUMsQ0FBQztBQUcxQixNQUFNLE9BQU8seUJBQXlCO0lBRHRDO1FBRVUsMEJBQXFCLEdBQUcsSUFBSSxPQUFPLEVBSXZDLENBQUM7UUFDTCx5QkFBb0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxFQUFFLENBQUM7S0FLbEU7SUFIQyxZQUFZLENBQUMsTUFBZ0U7UUFDM0UsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxQyxDQUFDOytHQVZVLHlCQUF5QjttSEFBekIseUJBQXlCLGNBRGIsTUFBTTs7NEZBQ2xCLHlCQUF5QjtrQkFEckMsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxN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QztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRXRDLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtZQUNoQyxJQUFJLElBQUksSUFBSSxJQUFJO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1lBQy9CLElBQUksT0FBTyxJQUFJLElBQUksVUFBVTtnQkFBRSxPQUFPLElBQUksRUFBRSxDQUFDO1lBQzdDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsYUFBaUM7UUFDaEQsSUFBRyxPQUFPLGFBQWEsRUFBRSxhQUFhLEtBQUssVUFBVTtZQUNuRCxPQUFPLGFBQWEsRUFBRSxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBOztZQUVoRCxPQUFPLGFBQWEsRUFBRSxhQUFhLENBQUM7SUFDeEMsQ0FBQzsrR0E1Q1UsNkJBQTZCO21HQUE3Qiw2QkFBNkIsME1DMU0xQyxzekVBbURBLHF3Q0Q4RmEsb0JBQW9COzs0RkF5RHBCLDZCQUE2QjtrQkFqQ3pDLFNBQVM7MkJBMkJGO3dCQUNKLE1BQU0sRUFBRSxzQkFBc0I7d0JBQzlCLEtBQUssRUFBRSxxREFBcUQ7cUJBQzdELGlCQUNjLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBEaXJlY3RpdmUsXHJcbiAgSW5qZWN0YWJsZSxcclxuICBJbnB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdE1lbnUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcclxuaW1wb3J0IHsgSUNlbGxSZW5kZXJlckFuZ3VsYXJDb21wIH0gZnJvbSAnYWctZ3JpZC1hbmd1bGFyJztcclxuaW1wb3J0IHsgSUNlbGxSZW5kZXJlclBhcmFtcyB9IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb25maWdCdXR0b25BZ0dyaWQsIERpc2FibGVkRnVjLCBFbnVtQnV0dG9uVHlwZSwgSGlkZUZ1YywgU3ViTWVudSwgVG9vbHRpcE9wdGlvbiB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL0lTY0FnR3JpZCc7XHJcblxyXG5sZXQgc2NDZWxsUmVuZGVyQnV0dG9uTmV4dElkID0gMDtcclxubGV0IHNjTWVudVBhbmVsTmV4dElkID0gMDtcclxuXHJcbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxyXG5leHBvcnQgY2xhc3MgU2NDZWxsUmVuZGVyQnV0dG9uU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBfaGFuZGxlckJ1dHRvbkFjdGlvbiQgPSBuZXcgU3ViamVjdDx7XHJcbiAgICBpbmRleDogbnVtYmVyO1xyXG4gICAgYWN0aW9uOiBzdHJpbmc7XHJcbiAgICBpc1JpZ2h0Q2xpY2s6IGJvb2xlYW47XHJcbiAgfT4oKTtcclxuICBoYW5kbGVyQnV0dG9uQWN0aW9uJCA9IHRoaXMuX2hhbmRsZXJCdXR0b25BY3Rpb24kLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBidXR0b25BY3Rpb24ob3B0aW9uOiB7IGluZGV4OiBudW1iZXI7IGFjdGlvbjogc3RyaW5nOyBpc1JpZ2h0Q2xpY2s6IGJvb2xlYW4gfSk6IHZvaWQge1xyXG4gICAgdGhpcy5faGFuZGxlckJ1dHRvbkFjdGlvbiQubmV4dChvcHRpb24pO1xyXG4gIH1cclxufVxyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmFic3RyYWN0IGNsYXNzIFNjQ2VsbFJlbmRlckJhc2Uge1xyXG4gIHBhcmFtcyE6IElDZWxsUmVuZGVyZXJQYXJhbXM7XHJcblxyXG4gIGlzRnVuY3Rpb25EaXNhYmxlZCh2YWx1ZTogYm9vbGVhbiB8IERpc2FibGVkRnVjIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlKHRoaXMucGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBpc0Z1bmN0aW9uSGlkZSh2YWx1ZTogYm9vbGVhbiB8IEhpZGVGdWMpOiBib29sZWFuIHtcclxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICByZXR1cm4gdmFsdWUodGhpcy5wYXJhbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2MtbWVudS1wYW5lbCcsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxtYXQtbWVudSAjbWVudT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3ViTWVudSBvZiBzdWJNZW51c1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNGdW5jdGlvbkhpZGUoc3ViTWVudS5oaWRlID8/IGZhbHNlKVwiPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAqbmdJZj1cIiFzdWJNZW51LnN1Ym1lbnU7IGVsc2UgYnJhbmNoXCJcclxuICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNGdW5jdGlvbkRpc2FibGVkKHN1Yk1lbnU/LmRpc2FibGVkKVwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5zYy1tZW51LXBhbmVsLWJvdHRvbV09XCJzdWJNZW51Py5pY29uICE9PSB1bmRlZmluZWRcIlxyXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInN1Yk1lbnU/LmxhYmVsID8/ICcnXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQnV0dG9uQWN0aW9uRW1pdChzdWJNZW51Py5hY3Rpb25Db2RlID8/ICcnKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJzdWJNZW51Py5pY29uXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZhLWxnXCJcclxuICAgICAgICAgICAgICBbY2xhc3NdPVwiXHJcbiAgICAgICAgICAgICAgICAnc2MtbWVudS1wYW5lbC1pY29uICcgK1xyXG4gICAgICAgICAgICAgICAgc3ViTWVudS5pY29uICtcclxuICAgICAgICAgICAgICAgICcgJyArXHJcbiAgICAgICAgICAgICAgICAoaXNGdW5jdGlvbkRpc2FibGVkKHN1Yk1lbnU/LmRpc2FibGVkKVxyXG4gICAgICAgICAgICAgICAgICA/ICd0ZXh0LW11dGVkJ1xyXG4gICAgICAgICAgICAgICAgICA6IHN1Yk1lbnU/Lmljb25DbGFzcyA/PyAnJylcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+PC9pPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1bWF4LWxhYmVsXCI+e3sgc3ViTWVudT8ubGFiZWwgPz8gJycgfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2JyYW5jaD5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cclxuICAgICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwiaW5uZXJQYW5lbC5tZW51XCJcclxuICAgICAgICAgICAgICBbY2xhc3Muc2MtbWVudS1wYW5lbC1ib3R0b21dPVwic3ViTWVudT8uaWNvbiAhPT0gdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNGdW5jdGlvbkRpc2FibGVkKHN1Yk1lbnU/LmRpc2FibGVkKVwiXHJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJzdWJNZW51Py5sYWJlbCA/PyAnJ1wiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJzdWJNZW51Py5pY29uXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEtbGdcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cIlxyXG4gICAgICAgICAgICAgICAgICAnc2MtbWVudS1wYW5lbC1pY29uICcgK1xyXG4gICAgICAgICAgICAgICAgICBzdWJNZW51Lmljb24gK1xyXG4gICAgICAgICAgICAgICAgICAnICcgK1xyXG4gICAgICAgICAgICAgICAgICAoaXNGdW5jdGlvbkRpc2FibGVkKHN1Yk1lbnU/LmRpc2FibGVkKVxyXG4gICAgICAgICAgICAgICAgICAgID8gJ3RleHQtbXV0ZWQnXHJcbiAgICAgICAgICAgICAgICAgICAgOiBzdWJNZW51Py5pY29uQ2xhc3MgPz8gJycpXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID48L2k+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdW1heC1sYWJlbFwiPnt7IHN1Yk1lbnU/LmxhYmVsID8/ICcnIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgIDxzYy1tZW51LXBhbmVsXHJcbiAgICAgICAgICAgICAgI2lubmVyUGFuZWxcclxuICAgICAgICAgICAgICBbcGFyYW1zXT1cInBhcmFtc1wiXHJcbiAgICAgICAgICAgICAgKG9uQnV0dG9uQWN0aW9uKT1cIm9uQnV0dG9uQWN0aW9uRW1pdChzdWJNZW51Py5hY3Rpb25Db2RlID8/ICcnKVwiXHJcbiAgICAgICAgICAgICAgW3N1Yk1lbnVzXT1cInN1Yk1lbnUuc3VibWVudSA/PyBbXVwiXHJcbiAgICAgICAgICAgID48L3NjLW1lbnUtcGFuZWw+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbWF0LW1lbnU+XHJcbiAgYCxcclxuICBzdHlsZXM6IFtcclxuICAgIGBcclxuICAgICAgLnNjLW1lbnUtcGFuZWwtYm90dG9tIHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5zYy1tZW51LXBhbmVsLWljb24ge1xyXG4gICAgICAgIHdpZHRoOiAxLjZyZW07XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwLjNlbTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRdIHtcclxuICAgICAgICBwb2ludGVyLWV2ZW50czogYXV0byAhaW1wb3J0YW50O1xyXG4gICAgICAgIGN1cnNvcjogbm8tZHJvcCAhaW1wb3J0YW50O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBidXR0b246ZGlzYWJsZWQge1xyXG4gICAgICAgIGN1cnNvcjogbm8tZHJvcDtcclxuICAgICAgfVxyXG4gICAgYCxcclxuICBdLFxyXG4gIGhvc3Q6IHtcclxuICAgICdbaWRdJzogJ2lkU2NNZW51UGFuZWwnLFxyXG4gIH0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTY01lbnVQYW5lbENvbXBvbmVudCBleHRlbmRzIFNjQ2VsbFJlbmRlckJhc2Uge1xyXG4gIGlkU2NNZW51UGFuZWwgPSBgc2MtbWVudS1wYW5lbC0keysrc2NNZW51UGFuZWxOZXh0SWR9YDtcclxuXHJcbiAgQFZpZXdDaGlsZCgnbWVudScsIHsgc3RhdGljOiB0cnVlIH0pIG1lbnUhOiBNYXRNZW51O1xyXG5cclxuICBASW5wdXQoKSBzdWJNZW51czogU3ViTWVudVtdID0gW107XHJcbiAgQElucHV0KCkgb3ZlcnJpZGUgcGFyYW1zITogSUNlbGxSZW5kZXJlclBhcmFtcztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9zY0NlbGxSZW5kZXJCdXR0b25TZXJ2aWNlOiBTY0NlbGxSZW5kZXJCdXR0b25TZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgb25CdXR0b25BY3Rpb25FbWl0KGFjdGlvbjogc3RyaW5nLCBpc1JpZ2h0Q2xpY2s6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnBhcmFtcz8ubm9kZS5yb3dJbmRleCA/PyAtMTtcclxuICAgIHRoaXMuX3NjQ2VsbFJlbmRlckJ1dHRvblNlcnZpY2UuYnV0dG9uQWN0aW9uKHtcclxuICAgICAgaW5kZXgsXHJcbiAgICAgIGFjdGlvbixcclxuICAgICAgaXNSaWdodENsaWNrXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlVXJsOiAnLi9zYy1jZWxsLXJlbmRlci1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlczogW1xyXG4gICAgYFxyXG4gICAgICAuc2MtY2VsbC1yZW5kZXItYnV0dG9uIHtcclxuICAgICAgICBwYWRkaW5nOiAwLjFlbSAxZW07XHJcbiAgICAgIH1cclxuICAgICAgLnNjLWNlbGwtcmVuZGVyLWJ1dHRvbi1hY3Rpb24ge1xyXG4gICAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgICAgICAgcGFkZGluZzogMCAwLjVlbTtcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgbWFyZ2luOiAwLjFlbTtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgICAgfVxyXG4gICAgICAuc2MtY2VsbC1yZW5kZXItYnV0dG9uLWFjdGlvbiBpIHtcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICB3aWR0aDogMS43ZW07XHJcbiAgICAgICAgaGVpZ2h0OiAxLjdlbTtcclxuICAgICAgICBsaW5lLWhlaWdodDogMS43ZW07XHJcbiAgICAgICAgcGFkZGluZy1yaWdodDogMDtcclxuICAgICAgfVxyXG4gICAgICBidXR0b246ZGlzYWJsZWQge1xyXG4gICAgICAgIGN1cnNvcjogbm8tZHJvcDtcclxuICAgICAgfVxyXG4gICAgYCxcclxuICBdLFxyXG4gIGhvc3Q6IHtcclxuICAgICdbaWRdJzogJ2lkU2NDZWxsUmVuZGVyQnV0dG9uJyxcclxuICAgIGNsYXNzOiAnZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgc2MtY2VsbC1yZW5kZXItYnV0dG9uJyxcclxuICB9LFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTY0NlbGxSZW5kZXJlckJ1dHRvbkNvbXBvbmVudFxyXG4gIGV4dGVuZHMgU2NDZWxsUmVuZGVyQmFzZVxyXG4gIGltcGxlbWVudHMgSUNlbGxSZW5kZXJlckFuZ3VsYXJDb21wXHJcbntcclxuICBpZFNjQ2VsbFJlbmRlckJ1dHRvbiA9IGBzYy1jZWxsLXJlbmRlci1idXR0b24tJHsrK3NjQ2VsbFJlbmRlckJ1dHRvbk5leHRJZH1gO1xyXG5cclxuICBvdmVycmlkZSBwYXJhbXMhOiBJQ2VsbFJlbmRlcmVyUGFyYW1zO1xyXG5cclxuICBjb25maWdCdXR0b25zOiBDb25maWdCdXR0b25BZ0dyaWRbXSA9IFtdO1xyXG5cclxuICBhZ0luaXQocGFyYW1zOiBJQ2VsbFJlbmRlcmVyUGFyYW1zKTogdm9pZCB7XHJcbiAgICB0aGlzLnBhcmFtcyA9IHBhcmFtcztcclxuICAgIHRoaXMuY29uZmlnQnV0dG9ucyA9XHJcbiAgICAgIHBhcmFtcy5jb250ZXh0LmNvbXBvbmVudFBhcmVudC5fY29uZmlnQnV0dG9uc0RlZmF1bHRBZ0dyaWQ7XHJcbiAgfVxyXG5cclxuICBvbkJ1dHRvbkFjdGlvbih0eXBlQnV0dG9uOiBFbnVtQnV0dG9uVHlwZSB8IHN0cmluZywgaXNSaWdodENsaWNrOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIGlmICh0eXBlQnV0dG9uKVxyXG4gICAgICB0aGlzLnBhcmFtcz8uY29udGV4dC5jb21wb25lbnRQYXJlbnQub25CdXR0b25BY3Rpb25BZ0dyaWRFbWl0KFxyXG4gICAgICAgIHRoaXMucGFyYW1zLm5vZGUucm93SW5kZXgsXHJcbiAgICAgICAgdHlwZUJ1dHRvbixcclxuICAgICAgICBpc1JpZ2h0Q2xpY2tcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHJlZnJlc2goXzogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGhpZGVTdWJNZW51KHN1Yk1lbnU6IFN1Yk1lbnVbXSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHN1Yk1lbnUubGVuZ3RoID09PSAwKSByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICByZXR1cm4gc3ViTWVudS5ldmVyeSgoeyBoaWRlIH0pID0+IHtcclxuICAgICAgaWYgKGhpZGUgPT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICBpZiAodHlwZW9mIGhpZGUgPT0gJ2Z1bmN0aW9uJykgcmV0dXJuIGhpZGUoKTtcclxuICAgICAgcmV0dXJuIGhpZGU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFRvb2x0aXBPcHRpb24oY29uZmlnQnV0dG9uczogQ29uZmlnQnV0dG9uQWdHcmlkKTogVG9vbHRpcE9wdGlvbiB7XHJcbiAgICBpZih0eXBlb2YgY29uZmlnQnV0dG9ucz8udG9vbHRpcE9wdGlvbiA9PT0gJ2Z1bmN0aW9uJylcclxuICAgICAgcmV0dXJuIGNvbmZpZ0J1dHRvbnM/LnRvb2x0aXBPcHRpb24odGhpcy5wYXJhbXMpXHJcbiAgICBlbHNlIFxyXG4gICAgICByZXR1cm4gY29uZmlnQnV0dG9ucz8udG9vbHRpcE9wdGlvbjtcclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGNvbmZpZ0J1dHRvbnNcIj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwib3B0aW9uPy5zdWJtZW51Py5sZW5ndGggPz8gMCA+IDA7IGVsc2UgYnV0dG9uUHJpbmNpcGFsXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWhpZGVTdWJNZW51KG9wdGlvbj8uc3VibWVudSA/PyBbXSlcIj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIG1hdFJpcHBsZVxyXG4gICAgICAgIGNsYXNzPVwiYnRuIHNjLWNlbGwtcmVuZGVyLWJ1dHRvbi1hY3Rpb25cIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cIm9wdGlvbj8uYnV0dG9uT3B0aW9uPy5jbGFzc0xpc3QgPyAkYW55KG9wdGlvbj8uYnV0dG9uT3B0aW9uPy5jbGFzc0xpc3QpIDogJydcIlxyXG4gICAgICAgICpuZ0lmPVwiIWlzRnVuY3Rpb25IaWRlKG9wdGlvbj8uaGlkZSA/PyBmYWxzZSlcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc0Z1bmN0aW9uRGlzYWJsZWQob3B0aW9uPy5kaXNhYmxlZClcIlxyXG4gICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJwYW5lbC5tZW51XCJcclxuICAgICAgICBbbWF0VG9vbHRpcF09XCJnZXRUb29sdGlwT3B0aW9uKG9wdGlvbikubGFiZWxcIlxyXG4gICAgICAgIFttYXRUb29sdGlwQ2xhc3NdPVwiZ2V0VG9vbHRpcE9wdGlvbihvcHRpb24pLmNsYXNzTGlzdCA/PyAnJ1wiXHJcbiAgICAgICAgW21hdFRvb2x0aXBEaXNhYmxlZF09XCJpc0Z1bmN0aW9uRGlzYWJsZWQob3B0aW9uPy5kaXNhYmxlZClcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZ2V0VG9vbHRpcE9wdGlvbihvcHRpb24pLmxhYmVsXCI+XHJcbiAgICAgICAgPGVtXHJcbiAgICAgICAgICBjbGFzcz1cInAtMFwiXHJcbiAgICAgICAgICBbY2xhc3NdPVwiXHJcbiAgICAgICAgICAgIChvcHRpb24/Lmljb25PcHRpb24/Lmljb24gPz8gJycpICtcclxuICAgICAgICAgICAgJyAnICtcclxuICAgICAgICAgICAgKGlzRnVuY3Rpb25EaXNhYmxlZChvcHRpb24/LmRpc2FibGVkKSA/ICd0ZXh0LW11dGVkJyA6IG9wdGlvbj8uaWNvbk9wdGlvbj8uY2xhc3NMaXN0ID8/ICcnKVxyXG4gICAgICAgICAgXCI+PC9lbT5cclxuICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICA8c2MtbWVudS1wYW5lbCAjcGFuZWwgW3BhcmFtc109XCJwYXJhbXNcIiBbc3ViTWVudXNdPVwib3B0aW9uLnN1Ym1lbnUgPz8gW11cIj48L3NjLW1lbnUtcGFuZWw+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNidXR0b25QcmluY2lwYWw+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgICpuZ0lmPVwiIWlzRnVuY3Rpb25IaWRlKG9wdGlvbj8uaGlkZSA/PyBmYWxzZSlcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiaXNGdW5jdGlvbkRpc2FibGVkKG9wdGlvbj8uZGlzYWJsZWQpXCJcclxuICAgICAgW25nQ2xhc3NdPVwib3B0aW9uPy5idXR0b25PcHRpb24/LmNsYXNzTGlzdCA/ICRhbnkob3B0aW9uPy5idXR0b25PcHRpb24/LmNsYXNzTGlzdCkgOiAnJ1wiXHJcbiAgICAgIGNsYXNzPVwiYnRuIHNjLWNlbGwtcmVuZGVyLWJ1dHRvbi1hY3Rpb25cIlxyXG4gICAgICBtYXRSaXBwbGVcclxuICAgICAgKGNsaWNrKT1cIm9uQnV0dG9uQWN0aW9uKG9wdGlvbj8uYWN0aW9uQ29kZSA/PyAnJylcIlxyXG4gICAgICAoYXV4Y2xpY2spPVwib25CdXR0b25BY3Rpb24ob3B0aW9uPy5hY3Rpb25Db2RlID8/ICcnLCB0cnVlKVwiXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICBbbWF0VG9vbHRpcF09XCJnZXRUb29sdGlwT3B0aW9uKG9wdGlvbikubGFiZWxcIlxyXG4gICAgICBbbWF0VG9vbHRpcENsYXNzXT1cImdldFRvb2x0aXBPcHRpb24ob3B0aW9uKS5jbGFzc0xpc3QgPz8gJydcIlxyXG4gICAgICBbbWF0VG9vbHRpcERpc2FibGVkXT1cImlzRnVuY3Rpb25EaXNhYmxlZChvcHRpb24/LmRpc2FibGVkKVwiXHJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZ2V0VG9vbHRpcE9wdGlvbihvcHRpb24pLmxhYmVsXCI+XHJcbiAgICAgIDxlbVxyXG4gICAgICAgIGNsYXNzPVwicHQtMFwiXHJcbiAgICAgICAgW2NsYXNzXT1cIlxyXG4gICAgICAgICAgKG9wdGlvbj8uaWNvbk9wdGlvbj8uaWNvbiA/PyAnJykgK1xyXG4gICAgICAgICAgJyAnICtcclxuICAgICAgICAgIChpc0Z1bmN0aW9uRGlzYWJsZWQob3B0aW9uPy5kaXNhYmxlZCkgPyAndGV4dC1tdXRlZCcgOiBvcHRpb24/Lmljb25PcHRpb24/LmNsYXNzTGlzdCA/PyAnJylcclxuICAgICAgICBcIj48L2VtPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9uZy1jb250YWluZXI+XHJcbiJdfQ==