ngx-rs-ant 1.6.3 → 1.6.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/camunda-bpmn-editor/camunda-bpmn-editor.component.d.ts +7 -2
  2. package/camunda-bpmn-editor/custom/hide-other/HideOtherContextPadProvider.d.ts +9 -5
  3. package/esm2020/box-container/plugin-active/plugin-active.component.mjs +3 -3
  4. package/esm2020/box-container/plugin-hover/plugin-hover.component.mjs +3 -3
  5. package/esm2020/camunda-bpmn-editor/camunda-bpmn-editor.component.mjs +29 -7
  6. package/esm2020/camunda-bpmn-editor/custom/hide-other/HideOtherContextPadProvider.mjs +11 -12
  7. package/esm2020/camunda-bpmn-editor/custom/hide-other/HideOtherPaletteProvider.mjs +2 -3
  8. package/esm2020/camunda-bpmn-editor/custom/service-task/ServiceTaskContextPadProvider.mjs +2 -2
  9. package/esm2020/camunda-bpmn-editor/custom/service-task/ServiceTaskPaletteProvider.mjs +2 -2
  10. package/esm2020/camunda-bpmn-editor/custom/translate/translations.mjs +21 -293
  11. package/esm2020/camunda-bpmn-editor/custom/user-task/UserTaskContextPadProvider.mjs +2 -2
  12. package/esm2020/camunda-bpmn-editor/custom/user-task/UserTaskPaletteProvider.mjs +2 -2
  13. package/esm2020/code-editor/code-editor.component.mjs +3 -3
  14. package/esm2020/icon-selector/icon-selector.component.mjs +3 -3
  15. package/esm2020/modal/modal.component.mjs +3 -3
  16. package/fesm2015/ngx-rs-ant.mjs +72 -467
  17. package/fesm2015/ngx-rs-ant.mjs.map +1 -1
  18. package/fesm2020/ngx-rs-ant.mjs +72 -467
  19. package/fesm2020/ngx-rs-ant.mjs.map +1 -1
  20. package/package.json +2 -2
  21. package/camunda-bpmn-editor/custom/config/CustomPropertiesProvider.d.ts +0 -5
  22. package/camunda-bpmn-editor/custom/config/index.d.ts +0 -6
  23. package/camunda-bpmn-editor/custom/config/properties/user-task/TaskDescriptionProps.d.ts +0 -6
  24. package/camunda-bpmn-editor/custom/config/properties/user-task/user-assignment/UserAssignmentProps.d.ts +0 -2
  25. package/camunda-bpmn-editor/custom/config/properties/user-task/user-assignment/UserAssignmentStaticOrDynamicProps.d.ts +0 -6
  26. package/camunda-bpmn-editor/custom/config/util/ElementUtils.d.ts +0 -3
  27. package/esm2020/camunda-bpmn-editor/custom/config/CustomPropertiesProvider.mjs +0 -33
  28. package/esm2020/camunda-bpmn-editor/custom/config/index.mjs +0 -6
  29. package/esm2020/camunda-bpmn-editor/custom/config/properties/user-task/TaskDescriptionProps.mjs +0 -26
  30. package/esm2020/camunda-bpmn-editor/custom/config/properties/user-task/user-assignment/UserAssignmentProps.mjs +0 -5
  31. package/esm2020/camunda-bpmn-editor/custom/config/properties/user-task/user-assignment/UserAssignmentStaticOrDynamicProps.mjs +0 -32
  32. package/esm2020/camunda-bpmn-editor/custom/config/util/ElementUtils.mjs +0 -52
@@ -125,10 +125,10 @@ export class ModalComponent {
125
125
  }
126
126
  }
127
127
  ModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ModalComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
128
- ModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: ModalComponent, selector: "rs-modal", host: { listeners: { "document:mouseup": "onMouseup($event)", "document:mousemove": "onMousemove($event)", "window:resize": "onWindowResize($event)" } }, viewQueries: [{ propertyName: "modalElementRef", first: true, predicate: ["modal"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"modal-backdrop\">\r\n <div #modal class=\"modal\" [ngStyle]=\"resolveModalPosition()\">\r\n <div class=\"modal-header\" (mousedown)=\"onMousedown($event)\">\r\n <div class=\"modal-title\">{{title}}</div>\r\n <i class=\"icon-close\" (click)=\"hide()\"></i>\r\n </div>\r\n <div class=\"modal-content\">\r\n <ng-template [ngTemplateOutlet]=\"contentTemplate\"\r\n [ngTemplateOutletContext]=\"{$implicit: contentTemplateContext}\"></ng-template>\r\n </div>\r\n <div *ngIf=\"footerTemplate\" class=\"modal-footer\">\r\n <ng-template [ngTemplateOutlet]=\"footerTemplate\"\r\n [ngTemplateOutletContext]=\"{$implicit: footerTemplateContext}\"></ng-template>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host .modal-backdrop{position:absolute;inset:0;z-index:calc(var(--coast-z-index-modal, 1050) - 1)}:host .modal-backdrop .modal{position:absolute;z-index:var(--coast-z-index-modal, 1050);background-color:var(--coast-base-bg-color, #fff);border-radius:4px;box-shadow:0 10px 24px #252b3a3d;display:flex;flex-flow:column nowrap}:host .modal-backdrop .modal .modal-header{flex:0 0 36px;border-bottom:1px solid var(--coast-border-color, #dddddd)}:host .modal-backdrop .modal .modal-header .modal-title{padding:12px 24px;font-size:14px;font-weight:700}:host .modal-backdrop .modal .modal-header i{position:absolute;top:12px;right:12px;padding:4px;font-size:14px}:host .modal-backdrop .modal .modal-header i:hover{cursor:pointer;color:var(--coast-danger-color, #d9534f);background-color:var(--coast-global-bg-color, #f6f6f8)}:host .modal-backdrop .modal .modal-content{flex:1;overflow:auto;display:flex;flex-flow:column nowrap}:host .modal-backdrop .modal .modal-footer{flex:none;padding-top:12px;border-top:1px solid var(--coast-border-color, #dddddd)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
128
+ ModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: ModalComponent, selector: "rs-modal", host: { listeners: { "document:mouseup": "onMouseup($event)", "document:mousemove": "onMousemove($event)", "window:resize": "onWindowResize($event)" } }, viewQueries: [{ propertyName: "modalElementRef", first: true, predicate: ["modal"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"modal-backdrop\">\r\n <div #modal class=\"modal\" [ngStyle]=\"resolveModalPosition()\">\r\n <div class=\"modal-header\" (mousedown)=\"onMousedown($event)\">\r\n <div class=\"modal-title\">{{ title }}</div>\r\n <i class=\"icon-close\" (click)=\"hide()\"></i>\r\n </div>\r\n <div class=\"modal-content\">\r\n <ng-template [ngTemplateOutlet]=\"contentTemplate\"\r\n [ngTemplateOutletContext]=\"{$implicit: contentTemplateContext}\"></ng-template>\r\n </div>\r\n <div *ngIf=\"footerTemplate\" class=\"modal-footer\">\r\n <ng-template [ngTemplateOutlet]=\"footerTemplate\"\r\n [ngTemplateOutletContext]=\"{$implicit: footerTemplateContext}\"></ng-template>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host .modal-backdrop{position:absolute;inset:0;z-index:calc(var(--coast-z-index-modal, 1050) - 1)}:host .modal-backdrop .modal{position:absolute;z-index:var(--coast-z-index-modal, 1050);background-color:var(--coast-base-bg-color, #fff);border-radius:4px;box-shadow:0 10px 24px #252b3a3d;display:flex;flex-flow:column nowrap}:host .modal-backdrop .modal .modal-header{flex:0 0 36px;border-bottom:1px solid var(--coast-border-color, #dddddd)}:host .modal-backdrop .modal .modal-header .modal-title{padding:12px 24px;font-size:14px;font-weight:700}:host .modal-backdrop .modal .modal-header i{position:absolute;top:12px;right:12px;padding:4px;font-size:14px}:host .modal-backdrop .modal .modal-header i:hover{cursor:pointer;color:var(--coast-danger-color, #d9534f);background-color:var(--coast-global-bg-color, #f6f6f8)}:host .modal-backdrop .modal .modal-content{flex:1;overflow:auto;display:flex;flex-flow:column nowrap}:host .modal-backdrop .modal .modal-footer{flex:none;padding-top:12px;border-top:1px solid var(--coast-border-color, #dddddd)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
129
129
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ModalComponent, decorators: [{
130
130
  type: Component,
131
- args: [{ selector: 'rs-modal', template: "<div class=\"modal-backdrop\">\r\n <div #modal class=\"modal\" [ngStyle]=\"resolveModalPosition()\">\r\n <div class=\"modal-header\" (mousedown)=\"onMousedown($event)\">\r\n <div class=\"modal-title\">{{title}}</div>\r\n <i class=\"icon-close\" (click)=\"hide()\"></i>\r\n </div>\r\n <div class=\"modal-content\">\r\n <ng-template [ngTemplateOutlet]=\"contentTemplate\"\r\n [ngTemplateOutletContext]=\"{$implicit: contentTemplateContext}\"></ng-template>\r\n </div>\r\n <div *ngIf=\"footerTemplate\" class=\"modal-footer\">\r\n <ng-template [ngTemplateOutlet]=\"footerTemplate\"\r\n [ngTemplateOutletContext]=\"{$implicit: footerTemplateContext}\"></ng-template>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host .modal-backdrop{position:absolute;inset:0;z-index:calc(var(--coast-z-index-modal, 1050) - 1)}:host .modal-backdrop .modal{position:absolute;z-index:var(--coast-z-index-modal, 1050);background-color:var(--coast-base-bg-color, #fff);border-radius:4px;box-shadow:0 10px 24px #252b3a3d;display:flex;flex-flow:column nowrap}:host .modal-backdrop .modal .modal-header{flex:0 0 36px;border-bottom:1px solid var(--coast-border-color, #dddddd)}:host .modal-backdrop .modal .modal-header .modal-title{padding:12px 24px;font-size:14px;font-weight:700}:host .modal-backdrop .modal .modal-header i{position:absolute;top:12px;right:12px;padding:4px;font-size:14px}:host .modal-backdrop .modal .modal-header i:hover{cursor:pointer;color:var(--coast-danger-color, #d9534f);background-color:var(--coast-global-bg-color, #f6f6f8)}:host .modal-backdrop .modal .modal-content{flex:1;overflow:auto;display:flex;flex-flow:column nowrap}:host .modal-backdrop .modal .modal-footer{flex:none;padding-top:12px;border-top:1px solid var(--coast-border-color, #dddddd)}\n"] }]
131
+ args: [{ selector: 'rs-modal', template: "<div class=\"modal-backdrop\">\r\n <div #modal class=\"modal\" [ngStyle]=\"resolveModalPosition()\">\r\n <div class=\"modal-header\" (mousedown)=\"onMousedown($event)\">\r\n <div class=\"modal-title\">{{ title }}</div>\r\n <i class=\"icon-close\" (click)=\"hide()\"></i>\r\n </div>\r\n <div class=\"modal-content\">\r\n <ng-template [ngTemplateOutlet]=\"contentTemplate\"\r\n [ngTemplateOutletContext]=\"{$implicit: contentTemplateContext}\"></ng-template>\r\n </div>\r\n <div *ngIf=\"footerTemplate\" class=\"modal-footer\">\r\n <ng-template [ngTemplateOutlet]=\"footerTemplate\"\r\n [ngTemplateOutletContext]=\"{$implicit: footerTemplateContext}\"></ng-template>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host .modal-backdrop{position:absolute;inset:0;z-index:calc(var(--coast-z-index-modal, 1050) - 1)}:host .modal-backdrop .modal{position:absolute;z-index:var(--coast-z-index-modal, 1050);background-color:var(--coast-base-bg-color, #fff);border-radius:4px;box-shadow:0 10px 24px #252b3a3d;display:flex;flex-flow:column nowrap}:host .modal-backdrop .modal .modal-header{flex:0 0 36px;border-bottom:1px solid var(--coast-border-color, #dddddd)}:host .modal-backdrop .modal .modal-header .modal-title{padding:12px 24px;font-size:14px;font-weight:700}:host .modal-backdrop .modal .modal-header i{position:absolute;top:12px;right:12px;padding:4px;font-size:14px}:host .modal-backdrop .modal .modal-header i:hover{cursor:pointer;color:var(--coast-danger-color, #d9534f);background-color:var(--coast-global-bg-color, #f6f6f8)}:host .modal-backdrop .modal .modal-content{flex:1;overflow:auto;display:flex;flex-flow:column nowrap}:host .modal-backdrop .modal .modal-footer{flex:none;padding-top:12px;border-top:1px solid var(--coast-border-color, #dddddd)}\n"] }]
132
132
  }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { modalElementRef: [{
133
133
  type: ViewChild,
134
134
  args: ['modal', { static: true }]
@@ -142,4 +142,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
142
142
  type: HostListener,
143
143
  args: ['window:resize', ['$event']]
144
144
  }] } });
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJzLWFudC9zcmMvbW9kYWwvbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJzLWFudC9zcmMvbW9kYWwvbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBYyxZQUFZLEVBQWtDLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7O0FBTzdHLE1BQU0sT0FBTyxjQUFjO0lBZXpCLFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFiMUMsU0FBSSxHQUEwQyxTQUFTLENBQUM7UUFDeEQsV0FBTSxHQUFXLE9BQU8sQ0FBQztRQUd6QixZQUFPLEdBQVksS0FBSyxDQUFDO1FBQ3pCLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFDYixjQUFTLEdBQUcsQ0FBQyxDQUFDO0lBUWQsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDO1lBQ3JELElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ3ZELElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ3hELElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1lBQ3RELElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO1lBQ3RELElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxD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bkRlc3Ryb3ksIE9uSW5pdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3JzLW1vZGFsJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL21vZGFsLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIE1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHRpdGxlITogc3RyaW5nO1xyXG4gIHNpemU6ICdkZWZhdWx0JyB8ICdsYXJnZScgfCAnZnVsbCcgfCBzdHJpbmcgPSAnZGVmYXVsdCc7XHJcbiAgX3dpZHRoOiBzdHJpbmcgPSAnNDgwcHgnO1xyXG4gIEBWaWV3Q2hpbGQoJ21vZGFsJywge3N0YXRpYzogdHJ1ZX0pIG1vZGFsRWxlbWVudFJlZiE6IEVsZW1lbnRSZWY7XHJcbiAgbW92ZUhhbmRsZUVsITogSFRNTEVsZW1lbnQ7XHJcbiAgbW92YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHRvcFN0YXJ0ID0gMDtcclxuICBsZWZ0U3RhcnQgPSAwO1xyXG4gIGNvbnRlbnRUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgY29udGVudFRlbXBsYXRlQ29udGV4dDogYW55O1xyXG4gIGZvb3RlclRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcclxuICBmb290ZXJUZW1wbGF0ZUNvbnRleHQ6IGFueTtcclxuICBfcGFyZW50Vmlld0NvbnRhaW5lclJlZjogYW55O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMuc2l6ZSA9PT0gJ2Z1bGwnKSB7XHJcbiAgICAgIHRoaXMubW9kYWxFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUudG9wID0gJzFweCc7XHJcbiAgICAgIHRoaXMubW9kYWxFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUucmlnaHQgPSAnMXB4JztcclxuICAgICAgdGhpcy5tb2RhbEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5ib3R0b20gPSAnMXB4JztcclxuICAgICAgdGhpcy5tb2RhbEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5sZWZ0ID0gJzFweCc7XHJcbiAgICAgIHRoaXMubW9kYWxFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUubWFyZ2luID0gJzAnO1xyXG4gICAgICB0aGlzLm1vZGFsRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmJveFNoYWRvdyA9ICdub25lJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLnNpemUgPT09ICdkZWZhdWx0Jykge1xyXG4gICAgICAgIHRoaXMuX3dpZHRoID0gJzQ4MHB4JztcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNpemUgPT09ICdsYXJnZScpIHtcclxuICAgICAgICB0aGlzLl93aWR0aCA9ICc5NjBweCc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5fd2lkdGggPSB0aGlzLnNpemU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5tb2RhbEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS53aWR0aCA9IHRoaXMuX3dpZHRoO1xyXG4gICAgICB0aGlzLm1vZGFsRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnRvcCA9ICcyNHB4JztcclxuICAgICAgdGhpcy5tb2RhbEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5sZWZ0ID1cclxuICAgICAgICAodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudC5vZmZzZXRXaWR0aCAtIHRoaXMubW9kYWxFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpIC8gMiArICdweCc7XHJcbiAgICAgIHRoaXMubW92ZUhhbmRsZUVsID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLm1vZGFsLWhlYWRlcicpO1xyXG4gICAgICB0aGlzLm1vdmVIYW5kbGVFbC5zdHlsZS5jdXJzb3IgPSAnbW92ZSc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaG93KCkge1xyXG4gICAgLy8g6Iul5a2Y5Zyo5aSa5bGC5qih5oCB5qGG77yM5LuF5L+d55WZ5pyA5LiK5bGC6YGu572p6aKc6Imy77yM5LiL5bGC6YGu572p6K6+572u5Li66YCP5piOXHJcbiAgICBjb25zdCBub2RlTmFtZSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm5vZGVOYW1lO1xyXG4gICAgY29uc3QgbW9kYWxzID0gdGhpcy5fcGFyZW50Vmlld0NvbnRhaW5lclJlZi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKG5vZGVOYW1lKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbW9kYWxzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmIChpID09PSBtb2RhbHMubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgIG1vZGFsc1tpXS5xdWVyeVNlbGVjdG9yKCcubW9kYWwtYmFja2Ryb3AnKS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAncmdiYSgzNywgNDMsIDU4LCAwLjA1KSc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbW9kYWxzW2ldLnF1ZXJ5U2VsZWN0b3IoJy5tb2RhbC1iYWNrZHJvcCcpLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICdyZ2JhKDM3LCA0MywgNTgsIDApJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGlkZSgpIHtcclxuICAgIC8vIOWcqHNlcnZpY2XkuK3ph43lhplcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgLy8g6Iul5a2Y5Zyo5aSa5bGC5qih5oCB5qGG77yM5LiL5LiA5bGC6YGu572p6K6+572u5Li65LiN6YCP5piOXHJcbiAgICBjb25zdCBub2RlTmFtZSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm5vZGVOYW1lO1xyXG4gICAgY29uc3QgbmV4dE1vZGFsID0gdGhpcy5fcGFyZW50Vmlld0NvbnRhaW5lclJlZi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yKG5vZGVOYW1lICsgJzpudGgtbGFzdC1jaGlsZCgyKScpO1xyXG4gICAgaWYgKG5leHRNb2RhbCkge1xyXG4gICAgICBuZXh0TW9kYWwucXVlcnlTZWxlY3RvcignLm1vZGFsLWJhY2tkcm9wJykuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJ3JnYmEoMzcsIDQzLCA1OCwgMC4wNSknO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzb2x2ZU1vZGFsUG9zaXRpb24oKSB7XHJcbiAgICBpZiAodGhpcy5zaXplID09PSAnZnVsbCcpIHtcclxuICAgICAgcmV0dXJuIHt9O1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubW9kYWxFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0ID49IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQub2Zmc2V0SGVpZ2h0IC0gNDgpIHtcclxuICAgICAgdGhpcy5tb2RhbEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50Lm9mZnNldEhlaWdodCAtIDQ4ICsgJ3B4JztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubW9kYWxFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gJ2F1dG8nO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHt9O1xyXG4gIH1cclxuXHJcbiAgb25Nb3VzZWRvd24oJGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAoJGV2ZW50LmJ1dHRvbiA9PT0gMiB8fCAhdGhpcy5jaGVja0hhbmRsZVRhcmdldCgkZXZlbnQudGFyZ2V0LCB0aGlzLm1vdmVIYW5kbGVFbCkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5tb3ZhYmxlID0gdHJ1ZTtcclxuICAgIHRoaXMudG9wU3RhcnQgPSAkZXZlbnQuY2xpZW50WSAtIHRoaXMubW9kYWxFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUudG9wLnJlcGxhY2UoJ3B4JywgJycpO1xyXG4gICAgdGhpcy5sZWZ0U3RhcnQgPSAkZXZlbnQuY2xpZW50WCAtIHRoaXMubW9kYWxFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUubGVmdC5yZXBsYWNlKCdweCcsICcnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tIYW5kbGVUYXJnZXQodGFyZ2V0OiBhbnksIGVsZW1lbnQ6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCFlbGVtZW50KSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmICh0YXJnZXQgPT09IGVsZW1lbnQpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBjaGlsZCBpbiBlbGVtZW50LmNoaWxkcmVuKSB7XHJcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZWxlbWVudC5jaGlsZHJlbiwgY2hpbGQpKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2hlY2tIYW5kbGVUYXJnZXQodGFyZ2V0LCBlbGVtZW50LmNoaWxkcmVuW2NoaWxkXSkpIHtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2V1cCcsIFsnJGV2ZW50J10pXHJcbiAgb25Nb3VzZXVwKCkge1xyXG4gICAgdGhpcy5tb3ZhYmxlID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZW1vdmUnLCBbJyRldmVudCddKVxyXG4gIG9uTW91c2Vtb3ZlKCRldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKCF0aGlzLm1vdmFibGUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5tb2RhbEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcclxuICAgIGxldCBjdXJyZW50VG9wID0gJGV2ZW50LmNsaWVudFkgLSB0aGlzLnRvcFN0YXJ0O1xyXG4gICAgbGV0IGN1cnJlbnRMZWZ0ID0gJGV2ZW50LmNsaWVudFggLSB0aGlzLmxlZnRTdGFydDtcclxuICAgIGN1cnJlbnRUb3AgPSBjdXJyZW50VG9wIDwgMCA/IDAgOiBjdXJyZW50VG9wO1xyXG4gICAgY29uc3QgbWF4VG9wID0gZWxlbWVudC5wYXJlbnRFbGVtZW50Lm9mZnNldEhlaWdodCAtIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC0gMTtcclxuICAgIGN1cnJlbnRUb3AgPSBjdXJyZW50VG9wID4gbWF4VG9wID8gbWF4VG9wIDogY3VycmVudFRvcDtcclxuICAgIGN1cnJlbnRMZWZ0ID0gY3VycmVudExlZnQgPCAwID8gMCA6IGN1cnJlbnRMZWZ0O1xyXG4gICAgY29uc3QgbWF4TGVmdCA9IGVsZW1lbnQucGFyZW50RWxlbWVudC5vZmZzZXRXaWR0aCAtIGVsZW1lbnQub2Zmc2V0V2lkdGggLSAxO1xyXG4gICAgY3VycmVudExlZnQgPSBjdXJyZW50TGVmdCA+IG1heExlZnQgPyBtYXhMZWZ0IDogY3VycmVudExlZnQ7XHJcbiAgICBlbGVtZW50LnN0eWxlLnRvcCA9IGN1cnJlbnRUb3AgKyAncHgnO1xyXG4gICAgZWxlbWVudC5zdHlsZS5sZWZ0ID0gY3VycmVudExlZnQgKyAncHgnO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXHJcbiAgb25XaW5kb3dSZXNpemUoKSB7XHJcbiAgICB0aGlzLm1vZGFsRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnRvcCA9ICcyNHB4JztcclxuICAgIHRoaXMubW9kYWxFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUubGVmdCA9XHJcbiAgICAgICh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50Lm9mZnNldFdpZHRoIC0gdGhpcy5tb2RhbEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCkgLyAyICsgJ3B4JztcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm1vZGFsLWJhY2tkcm9wXCI+XHJcbiAgPGRpdiAjbW9kYWwgY2xhc3M9XCJtb2RhbFwiIFtuZ1N0eWxlXT1cInJlc29sdmVNb2RhbFBvc2l0aW9uKClcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIiAobW91c2Vkb3duKT1cIm9uTW91c2Vkb3duKCRldmVudClcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+e3t0aXRsZX19PC9kaXY+XHJcbiAgICAgIDxpIGNsYXNzPVwiaWNvbi1jbG9zZVwiIChjbGljayk9XCJoaWRlKClcIj48L2k+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250ZW50VGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInskaW1wbGljaXQ6IGNvbnRlbnRUZW1wbGF0ZUNvbnRleHR9XCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImZvb3RlclRlbXBsYXRlXCIgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZvb3RlclRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0OiBmb290ZXJUZW1wbGF0ZUNvbnRleHR9XCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJzLWFudC9zcmMvbW9kYWwvbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJzLWFudC9zcmMvbW9kYWwvbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBYyxZQUFZLEVBQWtDLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7O0FBTzdHLE1BQU0sT0FBTyxjQUFjO0lBZXpCLFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFiMUMsU0FBSSxHQUEwQyxTQUFTLENBQUM7UUFDeEQsV0FBTSxHQUFXLE9BQU8sQ0FBQztRQUd6QixZQUFPLEdBQVksS0FBSyxDQUFDO1FBQ3pCLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFDYixjQUFTLEdBQUcsQ0FBQyxDQUFDO0lBUWQsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDO1lBQ3JELElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ3ZELElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ3hELElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1lBQ3RELElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO1lBQ3RELElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDO1NBQzdEO2FBQU07WUFDTCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO2dCQUMzQixJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQzthQUN2QjtpQkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFO2dCQUNoQyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQzthQUN2QjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7YUFDekI7WUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDN0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUM7WUFDdEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUk7Z0JBQzNDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ3hILElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ2pGLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7U0FDekM7SUFDSCxDQUFDO0lBRUQsSUFBSTtRQUNGLGdDQUFnQztRQUNoQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7UUFDeEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3RDLElBQUksQ0FBQyxLQUFLLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUMzQixNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyx3QkFBd0IsQ0FBQzthQUM3RjtpQkFBTTtnQkFDTCxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxxQkFBcUIsQ0FBQzthQUMxRjtTQUNGO0lBQ0gsQ0FBQztJQUVELElBQUk7UUFDRixjQUFjO0lBQ2hCLENBQUM7SUFFRCxXQUFXO1FBQ1QsdUJBQXVCO1FBQ3ZCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQztRQUN4RCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ2xJLElBQUksU0FBUyxFQUFFO1lBQ2IsU0FBUyxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsd0JBQXdCLENBQUM7U0FDN0Y7SUFDSCxDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7WUFDeEIsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUNELElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEdBQUcsRUFBRSxFQUFFO1lBQ3BILElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFlBQVksR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO1NBQ3hIO2FBQU07WUFDTCxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztTQUMxRDtRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFrQjtRQUM1QixJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ3BGLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDaEcsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNwRyxDQUFDO0lBRU8saUJBQWlCLENBQUMsTUFBVyxFQUFFLE9BQVk7UUFDakQsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxJQUFJLE1BQU0sS0FBSyxPQUFPLEVBQUU7WUFDdEIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELEtBQUssSUFBSSxLQUFLLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUNsQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNqRSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO29CQUMzRCxPQUFPLElBQUksQ0FBQztpQkFDYjthQUNGO1NBQ0Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFHRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUdELFdBQVcsQ0FBQyxNQUFrQjtRQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNqQixPQUFPO1NBQ1I7UUFDRCxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDekIsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDO1FBQ25ELElBQUksVUFBVSxHQUFHLE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNoRCxJQUFJLFdBQVcsR0FBRyxNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDbEQsVUFBVSxHQUFHLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1FBQzdDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQzdFLFVBQVUsR0FBRyxVQUFVLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztRQUN2RCxXQUFXLEdBQUcsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7UUFDaEQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDNUUsV0FBVyxHQUFHLFdBQVcsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO1FBQzVELE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMxQyxDQUFDO0lBR0QsY0FBYztRQUNaLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDO1FBQ3RELElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJO1lBQzNDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQzFILENBQUM7OzJHQXpJVSxjQUFjOytGQUFkLGNBQWMsa1VDUDNCLDB3QkFnQkE7MkZEVGEsY0FBYztrQkFMMUIsU0FBUzsrQkFDRSxVQUFVO2lHQVFnQixlQUFlO3NCQUFsRCxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBd0dsQyxTQUFTO3NCQURSLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTTVDLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxvQkFBb0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFxQjlDLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3JzLW1vZGFsJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL21vZGFsLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIE1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHRpdGxlITogc3RyaW5nO1xyXG4gIHNpemU6ICdkZWZhdWx0JyB8ICdsYXJnZScgfCAnZnVsbCcgfCBzdHJpbmcgPSAnZGVmYXVsdCc7XHJcbiAgX3dpZHRoOiBzdHJpbmcgPSAnNDgwcHgnO1xyXG4gIEBWaWV3Q2hpbGQoJ21vZGFsJywge3N0YXRpYzogdHJ1ZX0pIG1vZGFsRWxlbWVudFJlZiE6IEVsZW1lbnRSZWY7XHJcbiAgbW92ZUhhbmRsZUVsITogSFRNTEVsZW1lbnQ7XHJcbiAgbW92YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHRvcFN0YXJ0ID0gMDtcclxuICBsZWZ0U3RhcnQgPSAwO1xyXG4gIGNvbnRlbnRUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgY29udGVudFRlbXBsYXRlQ29udGV4dDogYW55O1xyXG4gIGZvb3RlclRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcclxuICBmb290ZXJUZW1wbGF0ZUNvbnRleHQ6IGFueTtcclxuICBfcGFyZW50Vmlld0NvbnRhaW5lclJlZjogYW55O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMuc2l6ZSA9PT0gJ2Z1bGwnKSB7XHJcbiAgICAgIHRoaXMubW9kYWxFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUudG9wID0gJzFweCc7XHJcbiAgICAgIHRoaXMubW9kYWxFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUucmlnaHQgPSAnMXB4JztcclxuICAgICAgdGhpcy5tb2RhbEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5ib3R0b20gPSAnMXB4JztcclxuICAgICAgdGhpcy5tb2RhbEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5sZWZ0ID0gJzFweCc7XHJcbiAgICAgIHRoaXMubW9kYWxFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUubWFyZ2luID0gJzAnO1xyXG4gICAgICB0aGlzLm1vZGFsRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmJveFNoYWRvdyA9ICdub25lJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLnNpemUgPT09ICdkZWZhdWx0Jykge1xyXG4gICAgICAgIHRoaXMuX3dpZHRoID0gJzQ4MHB4JztcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNpemUgPT09ICdsYXJnZScpIHtcclxuICAgICAgICB0aGlzLl93aWR0aCA9ICc5NjBweCc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5fd2lkdGggPSB0aGlzLnNpemU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5tb2RhbEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS53aWR0aCA9IHRoaXMuX3dpZHRoO1xyXG4gICAgICB0aGlzLm1vZGFsRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnRvcCA9ICcyNHB4JztcclxuICAgICAgdGhpcy5tb2RhbEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5sZWZ0ID1cclxuICAgICAgICAodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudC5vZmZzZXRXaWR0aCAtIHRoaXMubW9kYWxFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpIC8gMiArICdweCc7XHJcbiAgICAgIHRoaXMubW92ZUhhbmRsZUVsID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLm1vZGFsLWhlYWRlcicpO1xyXG4gICAgICB0aGlzLm1vdmVIYW5kbGVFbC5zdHlsZS5jdXJzb3IgPSAnbW92ZSc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaG93KCkge1xyXG4gICAgLy8g6Iul5a2Y5Zyo5aSa5bGC5qih5oCB5qGG77yM5LuF5L+d55WZ5pyA5LiK5bGC6YGu572p6aKc6Imy77yM5LiL5bGC6YGu572p6K6+572u5Li66YCP5piOXHJcbiAgICBjb25zdCBub2RlTmFtZSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm5vZGVOYW1lO1xyXG4gICAgY29uc3QgbW9kYWxzID0gdGhpcy5fcGFyZW50Vmlld0NvbnRhaW5lclJlZi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKG5vZGVOYW1lKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbW9kYWxzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmIChpID09PSBtb2RhbHMubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgIG1vZGFsc1tpXS5xdWVyeVNlbGVjdG9yKCcubW9kYWwtYmFja2Ryb3AnKS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAncmdiYSgzNywgNDMsIDU4LCAwLjA1KSc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbW9kYWxzW2ldLnF1ZXJ5U2VsZWN0b3IoJy5tb2RhbC1iYWNrZHJvcCcpLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICdyZ2JhKDM3LCA0MywgNTgsIDApJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGlkZSgpIHtcclxuICAgIC8vIOWcqHNlcnZpY2XkuK3ph43lhplcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgLy8g6Iul5a2Y5Zyo5aSa5bGC5qih5oCB5qGG77yM5LiL5LiA5bGC6YGu572p6K6+572u5Li65LiN6YCP5piOXHJcbiAgICBjb25zdCBub2RlTmFtZSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm5vZGVOYW1lO1xyXG4gICAgY29uc3QgbmV4dE1vZGFsID0gdGhpcy5fcGFyZW50Vmlld0NvbnRhaW5lclJlZi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yKG5vZGVOYW1lICsgJzpudGgtbGFzdC1jaGlsZCgyKScpO1xyXG4gICAgaWYgKG5leHRNb2RhbCkge1xyXG4gICAgICBuZXh0TW9kYWwucXVlcnlTZWxlY3RvcignLm1vZGFsLWJhY2tkcm9wJykuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJ3JnYmEoMzcsIDQzLCA1OCwgMC4wNSknO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzb2x2ZU1vZGFsUG9zaXRpb24oKSB7XHJcbiAgICBpZiAodGhpcy5zaXplID09PSAnZnVsbCcpIHtcclxuICAgICAgcmV0dXJuIHt9O1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubW9kYWxFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0ID49IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQub2Zmc2V0SGVpZ2h0IC0gNDgpIHtcclxuICAgICAgdGhpcy5tb2RhbEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50Lm9mZnNldEhlaWdodCAtIDQ4ICsgJ3B4JztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubW9kYWxFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gJ2F1dG8nO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHt9O1xyXG4gIH1cclxuXHJcbiAgb25Nb3VzZWRvd24oJGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAoJGV2ZW50LmJ1dHRvbiA9PT0gMiB8fCAhdGhpcy5jaGVja0hhbmRsZVRhcmdldCgkZXZlbnQudGFyZ2V0LCB0aGlzLm1vdmVIYW5kbGVFbCkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5tb3ZhYmxlID0gdHJ1ZTtcclxuICAgIHRoaXMudG9wU3RhcnQgPSAkZXZlbnQuY2xpZW50WSAtIHRoaXMubW9kYWxFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUudG9wLnJlcGxhY2UoJ3B4JywgJycpO1xyXG4gICAgdGhpcy5sZWZ0U3RhcnQgPSAkZXZlbnQuY2xpZW50WCAtIHRoaXMubW9kYWxFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUubGVmdC5yZXBsYWNlKCdweCcsICcnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tIYW5kbGVUYXJnZXQodGFyZ2V0OiBhbnksIGVsZW1lbnQ6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCFlbGVtZW50KSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmICh0YXJnZXQgPT09IGVsZW1lbnQpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBjaGlsZCBpbiBlbGVtZW50LmNoaWxkcmVuKSB7XHJcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZWxlbWVudC5jaGlsZHJlbiwgY2hpbGQpKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2hlY2tIYW5kbGVUYXJnZXQodGFyZ2V0LCBlbGVtZW50LmNoaWxkcmVuW2NoaWxkXSkpIHtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2V1cCcsIFsnJGV2ZW50J10pXHJcbiAgb25Nb3VzZXVwKCkge1xyXG4gICAgdGhpcy5tb3ZhYmxlID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZW1vdmUnLCBbJyRldmVudCddKVxyXG4gIG9uTW91c2Vtb3ZlKCRldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKCF0aGlzLm1vdmFibGUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5tb2RhbEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcclxuICAgIGxldCBjdXJyZW50VG9wID0gJGV2ZW50LmNsaWVudFkgLSB0aGlzLnRvcFN0YXJ0O1xyXG4gICAgbGV0IGN1cnJlbnRMZWZ0ID0gJGV2ZW50LmNsaWVudFggLSB0aGlzLmxlZnRTdGFydDtcclxuICAgIGN1cnJlbnRUb3AgPSBjdXJyZW50VG9wIDwgMCA/IDAgOiBjdXJyZW50VG9wO1xyXG4gICAgY29uc3QgbWF4VG9wID0gZWxlbWVudC5wYXJlbnRFbGVtZW50Lm9mZnNldEhlaWdodCAtIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC0gMTtcclxuICAgIGN1cnJlbnRUb3AgPSBjdXJyZW50VG9wID4gbWF4VG9wID8gbWF4VG9wIDogY3VycmVudFRvcDtcclxuICAgIGN1cnJlbnRMZWZ0ID0gY3VycmVudExlZnQgPCAwID8gMCA6IGN1cnJlbnRMZWZ0O1xyXG4gICAgY29uc3QgbWF4TGVmdCA9IGVsZW1lbnQucGFyZW50RWxlbWVudC5vZmZzZXRXaWR0aCAtIGVsZW1lbnQub2Zmc2V0V2lkdGggLSAxO1xyXG4gICAgY3VycmVudExlZnQgPSBjdXJyZW50TGVmdCA+IG1heExlZnQgPyBtYXhMZWZ0IDogY3VycmVudExlZnQ7XHJcbiAgICBlbGVtZW50LnN0eWxlLnRvcCA9IGN1cnJlbnRUb3AgKyAncHgnO1xyXG4gICAgZWxlbWVudC5zdHlsZS5sZWZ0ID0gY3VycmVudExlZnQgKyAncHgnO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXHJcbiAgb25XaW5kb3dSZXNpemUoKSB7XHJcbiAgICB0aGlzLm1vZGFsRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnRvcCA9ICcyNHB4JztcclxuICAgIHRoaXMubW9kYWxFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUubGVmdCA9XHJcbiAgICAgICh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50Lm9mZnNldFdpZHRoIC0gdGhpcy5tb2RhbEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCkgLyAyICsgJ3B4JztcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm1vZGFsLWJhY2tkcm9wXCI+XHJcbiAgPGRpdiAjbW9kYWwgY2xhc3M9XCJtb2RhbFwiIFtuZ1N0eWxlXT1cInJlc29sdmVNb2RhbFBvc2l0aW9uKClcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIiAobW91c2Vkb3duKT1cIm9uTW91c2Vkb3duKCRldmVudClcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+e3sgdGl0bGUgfX08L2Rpdj5cclxuICAgICAgPGkgY2xhc3M9XCJpY29uLWNsb3NlXCIgKGNsaWNrKT1cImhpZGUoKVwiPjwvaT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRlbnRUZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyRpbXBsaWNpdDogY29udGVudFRlbXBsYXRlQ29udGV4dH1cIj48L25nLXRlbXBsYXRlPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZm9vdGVyVGVtcGxhdGVcIiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZm9vdGVyVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInskaW1wbGljaXQ6IGZvb3RlclRlbXBsYXRlQ29udGV4dH1cIj48L25nLXRlbXBsYXRlPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=