@cleavelandprice/ngx-lib 3.4.0 → 3.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -33,8 +33,6 @@ export class EditorComponent {
33
33
  this.onChange = (_) => { }; // Invoked when the model has been changed
34
34
  this.onTouched = () => { }; // Invoked when the model has been touched
35
35
  //#endregion
36
- this.config = new Config();
37
- //#endregion
38
36
  //#endregion
39
37
  this.fullscreenChanged = new EventEmitter();
40
38
  //#region Passthrough events
@@ -228,14 +226,14 @@ EditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versio
228
226
  provide: NG_VALUE_ACCESSOR,
229
227
  useExisting: forwardRef(() => EditorComponent),
230
228
  multi: true
231
- }], viewQueries: [{ propertyName: "editor", first: true, predicate: QuillEditorComponent, descendants: true }], ngImport: i0, template: "<ng-container>\r\n <form>\r\n <quill-editor name=\"editor\"\r\n [(ngModel)]=\"value\"\r\n (ngModelChange)=\"updateChanges()\"\r\n\r\n [placeholder]=\"placeholder\"\r\n [format]=\"format\"\r\n [style.height]=\"fullscreen ? fullscreenHeight : height\"\r\n [style.width]=\"fullscreen ? fullscreenWidth : width\"\r\n [readOnly]=\"readonly\"\r\n [class.readonly]=\"readonly && applyReadonlyStyle\"\r\n [class.no-toolbar]=\"!showToolbar\"\r\n [class.no-border]=\"!showBorder\"\r\n [modules]=\"modules\"\r\n \r\n (onBlur)=\"onBlur.emit($event)\"\r\n (onContentChanged)=\"onContentChanged.emit($event)\"\r\n (onEditorChanged)=\"onEditorChanged.emit($event)\"\r\n (onEditorCreated)=\"onEditorCreated.emit()\"\r\n (onFocus)=\"onFocus.emit($event)\"\r\n (onSelectionChanged)=\"onSelectionChanged.emit($event)\">\r\n \r\n <div quill-editor-toolbar *ngIf=\"showToolbar\">\r\n <ng-container [ngTemplateOutlet]=\"toolbar\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"editorSize\"></ng-container>\r\n </div>\r\n </quill-editor>\r\n </form>\r\n</ng-container>\r\n\r\n<ng-template #toolbar>\r\n <div>\r\n <ng-container [ngTemplateOutlet]=\"fontStyle\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"blockStyle\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"headingStyle\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"listStyle\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"scriptStyle\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"indentStyle\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"rtl\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"fontSize\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"heading\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"color\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"font\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"align\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"clean\"></ng-container>\r\n <nt-container [ngTemplateOutlet]=\"formula\"></nt-container>\r\n <ng-container [ngTemplateOutlet]=\"media\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #fontStyle>\r\n <span class=\"ql-formats\" *ngIf=\"config.showFontStyle\">\r\n <button class=\"ql-bold\" *ngIf=\"config.buttons.bold\" [matTooltip]=\"tooltip(config.tooltips.bold)\"></button>\r\n <button class=\"ql-italic\" *ngIf=\"config.buttons.italic\" [matTooltip]=\"tooltip(config.tooltips.italic)\"></button>\r\n <button class=\"ql-underline\" *ngIf=\"config.buttons.underline\" [matTooltip]=\"tooltip(config.tooltips.underline)\"></button>\r\n <button class=\"ql-strike\" *ngIf=\"config.buttons.strike\" [matTooltip]=\"tooltip(config.tooltips.strike)\"></button>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #blockStyle>\r\n <span class=\"ql-formats\" *ngIf=\"config.showBlockStyle\">\r\n <button class=\"ql-blockquote\" *ngIf=\"config.buttons.blockquote\" [matTooltip]=\"tooltip(config.tooltips.blockquote)\"></button>\r\n <button class=\"ql-code-block\" *ngIf=\"config.buttons.codeblock\" [matTooltip]=\"tooltip(config.tooltips.codeblock)\"></button>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #headingStyle>\r\n <span class=\"ql-formats\" *ngIf=\"config.showQuickHeadingStyle\">\r\n <button class=\"ql-header\" value=\"1\" *ngIf=\"config.buttons.h1\" [matTooltip]=\"tooltip(config.tooltips.h1)\"></button>\r\n <button class=\"ql-header\" value=\"2\" *ngIf=\"config.buttons.h2\" [matTooltip]=\"tooltip(config.tooltips.h2)\"></button>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #listStyle>\r\n <span class=\"ql-formats\" *ngIf=\"config.showListStyle\">\r\n <button class=\"ql-list\" value=\"ordered\" *ngIf=\"config.buttons.ordered\" [matTooltip]=\"tooltip(config.tooltips.ordered)\"></button>\r\n <button class=\"ql-list\" value=\"bullet\" *ngIf=\"config.buttons.bulleted\" [matTooltip]=\"tooltip(config.tooltips.bulleted)\"></button>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #scriptStyle>\r\n <span class=\"ql-formats\" *ngIf=\"config.showScriptStyle\">\r\n <button class=\"ql-script\" value=\"sub\" *ngIf=\"config.buttons.subScript\" [matTooltip]=\"tooltip(config.tooltips.subScript)\"></button>\r\n <button class=\"ql-script\" value=\"super\" *ngIf=\"config.buttons.superScript\" [matTooltip]=\"tooltip(config.tooltips.superScript)\"></button>\r\n </span>\r\n</ng-template>\r\n \r\n<ng-template #indentStyle>\r\n <span class=\"ql-formats\" *ngIf=\"config.showIndentStyle\">\r\n <button class=\"ql-indent\" value=\"-1\" *ngIf=\"config.buttons.decreaseIndent\" [matTooltip]=\"tooltip(config.tooltips.decreaseIndent)\"></button>\r\n <button class=\"ql-indent\" value=\"+1\" *ngIf=\"config.buttons.increaseIndent\" [matTooltip]=\"tooltip(config.tooltips.increaseIndent)\"></button>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #rtl>\r\n <span class=\"ql-formats\" *ngIf=\"config.buttons.rtl\">\r\n <button class=\"ql-direction\" value=\"rtl\" [matTooltip]=\"tooltip(config.tooltips.rtl)\"></button>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #fontSize>\r\n <span class=\"ql-formats\" *ngIf=\"config.buttons.fontSize\" [matTooltip]=\"tooltip(config.tooltips.fontSize)\">\r\n <select class=\"ql-size\">\r\n <option value=\"small\"></option>\r\n <option selected></option>\r\n <option value=\"large\"></option>\r\n <option value=\"huge\"></option>\r\n </select>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #heading>\r\n <span class=\"ql-formats\" *ngIf=\"config.buttons.headingStyle\" [matTooltip]=\"tooltip(config.tooltips.headingStyle)\">\r\n <select class=\"ql-header\">\r\n <option value=\"1\"></option>\r\n <option value=\"2\"></option>\r\n <option value=\"3\"></option>\r\n <option value=\"4\"></option>\r\n <option value=\"5\"></option>\r\n <option value=\"6\"></option>\r\n <option selected=\"selected\"></option>\r\n </select>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #color>\r\n <span class=\"ql-formats\" *ngIf=\"config.buttons.color\" [matTooltip]=\"tooltip(config.tooltips.color)\">\r\n <select class=\"ql-color\"></select>\r\n <select class=\"ql-background\"></select>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #font>\r\n <span class=\"ql-formats\" *ngIf=\"config.buttons.font\" [matTooltip]=\"tooltip(config.tooltips.font)\">\r\n <select class=\"ql-font\">\r\n <option selected></option>\r\n <option value=\"serif\"></option>\r\n <option value=\"monospace\"></option>\r\n </select>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #align>\r\n <span class=\"ql-formats\" *ngIf=\"config.buttons.align\" [matTooltip]=\"tooltip(config.tooltips.align)\">\r\n <select class=\"ql-align\">\r\n <option selected></option>\r\n <option value=\"center\"></option>\r\n <option value=\"right\"></option>\r\n <option value=\"justify\"></option>\r\n </select>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #clean>\r\n <span class=\"ql-formats\" *ngIf=\"config.buttons.clean\" [matTooltip]=\"tooltip(config.tooltips.clean)\">\r\n <button class=\"ql-clean\"></button>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #media>\r\n <span class=\"ql-formats\" *ngIf=\"config.showMedia\">\r\n <button class=\"ql-link\" *ngIf=\"config.buttons.link\" [matTooltip]=\"tooltip(config.tooltips.link)\"></button>\r\n <button class=\"ql-image\" *ngIf=\"config.buttons.image\" [matTooltip]=\"tooltip(config.tooltips.image)\"></button>\r\n <button class=\"ql-video\" *ngIf=\"config.buttons.video\" [matTooltip]=\"tooltip(config.tooltips.video)\"></button>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #editorSize>\r\n <div>\r\n <span class=\"ql-formats\" *ngIf=\"config.buttons.rawEditor\">\r\n <button id=\"rawdog\"\r\n [matTooltip]=\"tooltip(config.tooltips.rawEditor)\">\r\n\r\n <mat-icon (click)=\"rawEdit()\">\r\n code\r\n </mat-icon>\r\n </button>\r\n </span>\r\n\r\n <span class=\"ql-formats\" *ngIf=\"config.buttons.editorSize\">\r\n <button id=\"fullscreen\"\r\n [matTooltip]=\"tooltip(fullscreen ?\r\n (fullscreenMode === 'expand' ? config.tooltips.minimize : config.tooltips.popin) :\r\n (fullscreenMode === 'expand' ? config.tooltips.maximize : config.tooltips.popout))\">\r\n\r\n <mat-icon (click)=\"toggleFullscreen()\">\r\n {{ fullscreen ?\r\n (fullscreenMode === 'expand' ? config.icons.minimize : config.icons.popin) :\r\n (fullscreenMode === 'expand' ? config.icons.maximize : config.icons.popout)\r\n }}\r\n </mat-icon>\r\n </button>\r\n </span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #formula>\r\n <span class=\"ql-formats\" *ngIf=\"config.buttons.formula\" [matTooltip]=\"tooltip(config.tooltips.formula)\">\r\n <button class=\"ql-formula\"></button>\r\n </span>\r\n</ng-template>", styles: [".ql-toolbar{display:grid;grid-template-columns:1fr auto}mat-icon{color:#ff4500}quill-editor.readonly .ql-toolbar{opacity:.5}::ng-deep quill-editor.no-toolbar .ql-toolbar{height:0;padding:0;visibility:hidden}::ng-deep quill-editor.no-border .ql-container{border:none}::ng-deep quill-editor.readonly .ql-container{background-color:#f5f5f5!important}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i6.QuillEditorComponent, selector: "quill-editor" }] });
229
+ }], viewQueries: [{ propertyName: "editor", first: true, predicate: QuillEditorComponent, descendants: true }], ngImport: i0, template: "<ng-container>\r\n <form>\r\n <quill-editor name=\"editor\"\r\n [(ngModel)]=\"value\"\r\n (ngModelChange)=\"updateChanges()\"\r\n\r\n [placeholder]=\"placeholder\"\r\n [format]=\"format\"\r\n [style.height]=\"fullscreen ? fullscreenHeight : height\"\r\n [style.width]=\"fullscreen ? fullscreenWidth : width\"\r\n [readOnly]=\"readonly\"\r\n [class.readonly]=\"readonly && applyReadonlyStyle\"\r\n [class.no-toolbar]=\"!showToolbar\"\r\n [class.no-border]=\"!showBorder\"\r\n [modules]=\"modules\"\r\n \r\n (onBlur)=\"onBlur.emit($event)\"\r\n (onContentChanged)=\"onContentChanged.emit($event)\"\r\n (onEditorChanged)=\"onEditorChanged.emit($event)\"\r\n (onEditorCreated)=\"onEditorCreated.emit()\"\r\n (onFocus)=\"onFocus.emit($event)\"\r\n (onSelectionChanged)=\"onSelectionChanged.emit($event)\">\r\n \r\n <div quill-editor-toolbar *ngIf=\"showToolbar\">\r\n <ng-container [ngTemplateOutlet]=\"toolbar\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"editorSize\"></ng-container>\r\n </div>\r\n </quill-editor>\r\n </form>\r\n</ng-container>\r\n\r\n<ng-template #toolbar>\r\n <div>\r\n <ng-container [ngTemplateOutlet]=\"fontStyle\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"blockStyle\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"headingStyle\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"listStyle\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"scriptStyle\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"indentStyle\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"rtl\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"fontSize\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"heading\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"color\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"font\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"align\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"clean\"></ng-container>\r\n <nt-container [ngTemplateOutlet]=\"formula\"></nt-container>\r\n <ng-container [ngTemplateOutlet]=\"media\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #fontStyle>\r\n <span class=\"ql-formats\" *ngIf=\"config!.showFontStyle\">\r\n <button class=\"ql-bold\" *ngIf=\"config!.buttons.bold\" [matTooltip]=\"tooltip(config!.tooltips.bold)\"></button>\r\n <button class=\"ql-italic\" *ngIf=\"config!.buttons.italic\" [matTooltip]=\"tooltip(config!.tooltips.italic)\"></button>\r\n <button class=\"ql-underline\" *ngIf=\"config!.buttons.underline\" [matTooltip]=\"tooltip(config!.tooltips.underline)\"></button>\r\n <button class=\"ql-strike\" *ngIf=\"config!.buttons.strike\" [matTooltip]=\"tooltip(config!.tooltips.strike)\"></button>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #blockStyle>\r\n <span class=\"ql-formats\" *ngIf=\"config!.showBlockStyle\">\r\n <button class=\"ql-blockquote\" *ngIf=\"config!.buttons.blockquote\" [matTooltip]=\"tooltip(config!.tooltips.blockquote)\"></button>\r\n <button class=\"ql-code-block\" *ngIf=\"config!.buttons.codeblock\" [matTooltip]=\"tooltip(config!.tooltips.codeblock)\"></button>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #headingStyle>\r\n <span class=\"ql-formats\" *ngIf=\"config!.showQuickHeadingStyle\">\r\n <button class=\"ql-header\" value=\"1\" *ngIf=\"config!.buttons.h1\" [matTooltip]=\"tooltip(config!.tooltips.h1)\"></button>\r\n <button class=\"ql-header\" value=\"2\" *ngIf=\"config!.buttons.h2\" [matTooltip]=\"tooltip(config!.tooltips.h2)\"></button>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #listStyle>\r\n <span class=\"ql-formats\" *ngIf=\"config!.showListStyle\">\r\n <button class=\"ql-list\" value=\"ordered\" *ngIf=\"config!.buttons.ordered\" [matTooltip]=\"tooltip(config!.tooltips.ordered)\"></button>\r\n <button class=\"ql-list\" value=\"bullet\" *ngIf=\"config!.buttons.bulleted\" [matTooltip]=\"tooltip(config!.tooltips.bulleted)\"></button>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #scriptStyle>\r\n <span class=\"ql-formats\" *ngIf=\"config!.showScriptStyle\">\r\n <button class=\"ql-script\" value=\"sub\" *ngIf=\"config!.buttons.subScript\" [matTooltip]=\"tooltip(config!.tooltips.subScript)\"></button>\r\n <button class=\"ql-script\" value=\"super\" *ngIf=\"config!.buttons.superScript\" [matTooltip]=\"tooltip(config!.tooltips.superScript)\"></button>\r\n </span>\r\n</ng-template>\r\n \r\n<ng-template #indentStyle>\r\n <span class=\"ql-formats\" *ngIf=\"config!.showIndentStyle\">\r\n <button class=\"ql-indent\" value=\"-1\" *ngIf=\"config!.buttons.decreaseIndent\" [matTooltip]=\"tooltip(config!.tooltips.decreaseIndent)\"></button>\r\n <button class=\"ql-indent\" value=\"+1\" *ngIf=\"config!.buttons.increaseIndent\" [matTooltip]=\"tooltip(config!.tooltips.increaseIndent)\"></button>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #rtl>\r\n <span class=\"ql-formats\" *ngIf=\"config!.buttons.rtl\">\r\n <button class=\"ql-direction\" value=\"rtl\" [matTooltip]=\"tooltip(config!.tooltips.rtl)\"></button>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #fontSize>\r\n <span class=\"ql-formats\" *ngIf=\"config!.buttons.fontSize\" [matTooltip]=\"tooltip(config!.tooltips.fontSize)\">\r\n <select class=\"ql-size\">\r\n <option value=\"small\"></option>\r\n <option selected></option>\r\n <option value=\"large\"></option>\r\n <option value=\"huge\"></option>\r\n </select>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #heading>\r\n <span class=\"ql-formats\" *ngIf=\"config!.buttons.headingStyle\" [matTooltip]=\"tooltip(config!.tooltips.headingStyle)\">\r\n <select class=\"ql-header\">\r\n <option value=\"1\"></option>\r\n <option value=\"2\"></option>\r\n <option value=\"3\"></option>\r\n <option value=\"4\"></option>\r\n <option value=\"5\"></option>\r\n <option value=\"6\"></option>\r\n <option selected=\"selected\"></option>\r\n </select>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #color>\r\n <span class=\"ql-formats\" *ngIf=\"config!.buttons.color\" [matTooltip]=\"tooltip(config!.tooltips.color)\">\r\n <select class=\"ql-color\"></select>\r\n <select class=\"ql-background\"></select>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #font>\r\n <span class=\"ql-formats\" *ngIf=\"config!.buttons.font\" [matTooltip]=\"tooltip(config!.tooltips.font)\">\r\n <select class=\"ql-font\">\r\n <option selected></option>\r\n <option value=\"serif\"></option>\r\n <option value=\"monospace\"></option>\r\n </select>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #align>\r\n <span class=\"ql-formats\" *ngIf=\"config!.buttons.align\" [matTooltip]=\"tooltip(config!.tooltips.align)\">\r\n <select class=\"ql-align\">\r\n <option selected></option>\r\n <option value=\"center\"></option>\r\n <option value=\"right\"></option>\r\n <option value=\"justify\"></option>\r\n </select>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #clean>\r\n <span class=\"ql-formats\" *ngIf=\"config!.buttons.clean\" [matTooltip]=\"tooltip(config!.tooltips.clean)\">\r\n <button class=\"ql-clean\"></button>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #media>\r\n <span class=\"ql-formats\" *ngIf=\"config!.showMedia\">\r\n <button class=\"ql-link\" *ngIf=\"config!.buttons.link\" [matTooltip]=\"tooltip(config!.tooltips.link)\"></button>\r\n <button class=\"ql-image\" *ngIf=\"config!.buttons.image\" [matTooltip]=\"tooltip(config!.tooltips.image)\"></button>\r\n <button class=\"ql-video\" *ngIf=\"config!.buttons.video\" [matTooltip]=\"tooltip(config!.tooltips.video)\"></button>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #editorSize>\r\n <div>\r\n <span class=\"ql-formats\" *ngIf=\"config!.buttons.rawEditor\">\r\n <button id=\"rawdog\"\r\n [matTooltip]=\"tooltip(config!.tooltips.rawEditor)\">\r\n\r\n <mat-icon (click)=\"rawEdit()\">\r\n code\r\n </mat-icon>\r\n </button>\r\n </span>\r\n\r\n <span class=\"ql-formats\" *ngIf=\"config!.buttons.editorSize\">\r\n <button id=\"fullscreen\"\r\n [matTooltip]=\"tooltip(fullscreen ?\r\n (fullscreenMode === 'expand' ? config!.tooltips.minimize : config!.tooltips.popin) :\r\n (fullscreenMode === 'expand' ? config!.tooltips.maximize : config!.tooltips.popout))\">\r\n\r\n <mat-icon (click)=\"toggleFullscreen()\">\r\n {{ fullscreen ?\r\n (fullscreenMode === 'expand' ? config!.icons.minimize : config!.icons.popin) :\r\n (fullscreenMode === 'expand' ? config!.icons.maximize : config!.icons.popout)\r\n }}\r\n </mat-icon>\r\n </button>\r\n </span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #formula>\r\n <span class=\"ql-formats\" *ngIf=\"config!.buttons.formula\" [matTooltip]=\"tooltip(config!.tooltips.formula)\">\r\n <button class=\"ql-formula\"></button>\r\n </span>\r\n</ng-template>", styles: [".ql-toolbar{display:grid;grid-template-columns:1fr auto}mat-icon{color:#ff4500}quill-editor.readonly .ql-toolbar{opacity:.5}::ng-deep quill-editor.no-toolbar .ql-toolbar{height:0;padding:0;visibility:hidden}::ng-deep quill-editor.no-border .ql-container{border:none}::ng-deep quill-editor.readonly .ql-container{background-color:#f5f5f5!important}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i6.QuillEditorComponent, selector: "quill-editor" }] });
232
230
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: EditorComponent, decorators: [{
233
231
  type: Component,
234
232
  args: [{ selector: 'cpquill-editor', providers: [{
235
233
  provide: NG_VALUE_ACCESSOR,
236
234
  useExisting: forwardRef(() => EditorComponent),
237
235
  multi: true
238
- }], template: "<ng-container>\r\n <form>\r\n <quill-editor name=\"editor\"\r\n [(ngModel)]=\"value\"\r\n (ngModelChange)=\"updateChanges()\"\r\n\r\n [placeholder]=\"placeholder\"\r\n [format]=\"format\"\r\n [style.height]=\"fullscreen ? fullscreenHeight : height\"\r\n [style.width]=\"fullscreen ? fullscreenWidth : width\"\r\n [readOnly]=\"readonly\"\r\n [class.readonly]=\"readonly && applyReadonlyStyle\"\r\n [class.no-toolbar]=\"!showToolbar\"\r\n [class.no-border]=\"!showBorder\"\r\n [modules]=\"modules\"\r\n \r\n (onBlur)=\"onBlur.emit($event)\"\r\n (onContentChanged)=\"onContentChanged.emit($event)\"\r\n (onEditorChanged)=\"onEditorChanged.emit($event)\"\r\n (onEditorCreated)=\"onEditorCreated.emit()\"\r\n (onFocus)=\"onFocus.emit($event)\"\r\n (onSelectionChanged)=\"onSelectionChanged.emit($event)\">\r\n \r\n <div quill-editor-toolbar *ngIf=\"showToolbar\">\r\n <ng-container [ngTemplateOutlet]=\"toolbar\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"editorSize\"></ng-container>\r\n </div>\r\n </quill-editor>\r\n </form>\r\n</ng-container>\r\n\r\n<ng-template #toolbar>\r\n <div>\r\n <ng-container [ngTemplateOutlet]=\"fontStyle\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"blockStyle\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"headingStyle\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"listStyle\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"scriptStyle\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"indentStyle\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"rtl\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"fontSize\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"heading\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"color\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"font\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"align\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"clean\"></ng-container>\r\n <nt-container [ngTemplateOutlet]=\"formula\"></nt-container>\r\n <ng-container [ngTemplateOutlet]=\"media\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #fontStyle>\r\n <span class=\"ql-formats\" *ngIf=\"config.showFontStyle\">\r\n <button class=\"ql-bold\" *ngIf=\"config.buttons.bold\" [matTooltip]=\"tooltip(config.tooltips.bold)\"></button>\r\n <button class=\"ql-italic\" *ngIf=\"config.buttons.italic\" [matTooltip]=\"tooltip(config.tooltips.italic)\"></button>\r\n <button class=\"ql-underline\" *ngIf=\"config.buttons.underline\" [matTooltip]=\"tooltip(config.tooltips.underline)\"></button>\r\n <button class=\"ql-strike\" *ngIf=\"config.buttons.strike\" [matTooltip]=\"tooltip(config.tooltips.strike)\"></button>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #blockStyle>\r\n <span class=\"ql-formats\" *ngIf=\"config.showBlockStyle\">\r\n <button class=\"ql-blockquote\" *ngIf=\"config.buttons.blockquote\" [matTooltip]=\"tooltip(config.tooltips.blockquote)\"></button>\r\n <button class=\"ql-code-block\" *ngIf=\"config.buttons.codeblock\" [matTooltip]=\"tooltip(config.tooltips.codeblock)\"></button>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #headingStyle>\r\n <span class=\"ql-formats\" *ngIf=\"config.showQuickHeadingStyle\">\r\n <button class=\"ql-header\" value=\"1\" *ngIf=\"config.buttons.h1\" [matTooltip]=\"tooltip(config.tooltips.h1)\"></button>\r\n <button class=\"ql-header\" value=\"2\" *ngIf=\"config.buttons.h2\" [matTooltip]=\"tooltip(config.tooltips.h2)\"></button>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #listStyle>\r\n <span class=\"ql-formats\" *ngIf=\"config.showListStyle\">\r\n <button class=\"ql-list\" value=\"ordered\" *ngIf=\"config.buttons.ordered\" [matTooltip]=\"tooltip(config.tooltips.ordered)\"></button>\r\n <button class=\"ql-list\" value=\"bullet\" *ngIf=\"config.buttons.bulleted\" [matTooltip]=\"tooltip(config.tooltips.bulleted)\"></button>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #scriptStyle>\r\n <span class=\"ql-formats\" *ngIf=\"config.showScriptStyle\">\r\n <button class=\"ql-script\" value=\"sub\" *ngIf=\"config.buttons.subScript\" [matTooltip]=\"tooltip(config.tooltips.subScript)\"></button>\r\n <button class=\"ql-script\" value=\"super\" *ngIf=\"config.buttons.superScript\" [matTooltip]=\"tooltip(config.tooltips.superScript)\"></button>\r\n </span>\r\n</ng-template>\r\n \r\n<ng-template #indentStyle>\r\n <span class=\"ql-formats\" *ngIf=\"config.showIndentStyle\">\r\n <button class=\"ql-indent\" value=\"-1\" *ngIf=\"config.buttons.decreaseIndent\" [matTooltip]=\"tooltip(config.tooltips.decreaseIndent)\"></button>\r\n <button class=\"ql-indent\" value=\"+1\" *ngIf=\"config.buttons.increaseIndent\" [matTooltip]=\"tooltip(config.tooltips.increaseIndent)\"></button>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #rtl>\r\n <span class=\"ql-formats\" *ngIf=\"config.buttons.rtl\">\r\n <button class=\"ql-direction\" value=\"rtl\" [matTooltip]=\"tooltip(config.tooltips.rtl)\"></button>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #fontSize>\r\n <span class=\"ql-formats\" *ngIf=\"config.buttons.fontSize\" [matTooltip]=\"tooltip(config.tooltips.fontSize)\">\r\n <select class=\"ql-size\">\r\n <option value=\"small\"></option>\r\n <option selected></option>\r\n <option value=\"large\"></option>\r\n <option value=\"huge\"></option>\r\n </select>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #heading>\r\n <span class=\"ql-formats\" *ngIf=\"config.buttons.headingStyle\" [matTooltip]=\"tooltip(config.tooltips.headingStyle)\">\r\n <select class=\"ql-header\">\r\n <option value=\"1\"></option>\r\n <option value=\"2\"></option>\r\n <option value=\"3\"></option>\r\n <option value=\"4\"></option>\r\n <option value=\"5\"></option>\r\n <option value=\"6\"></option>\r\n <option selected=\"selected\"></option>\r\n </select>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #color>\r\n <span class=\"ql-formats\" *ngIf=\"config.buttons.color\" [matTooltip]=\"tooltip(config.tooltips.color)\">\r\n <select class=\"ql-color\"></select>\r\n <select class=\"ql-background\"></select>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #font>\r\n <span class=\"ql-formats\" *ngIf=\"config.buttons.font\" [matTooltip]=\"tooltip(config.tooltips.font)\">\r\n <select class=\"ql-font\">\r\n <option selected></option>\r\n <option value=\"serif\"></option>\r\n <option value=\"monospace\"></option>\r\n </select>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #align>\r\n <span class=\"ql-formats\" *ngIf=\"config.buttons.align\" [matTooltip]=\"tooltip(config.tooltips.align)\">\r\n <select class=\"ql-align\">\r\n <option selected></option>\r\n <option value=\"center\"></option>\r\n <option value=\"right\"></option>\r\n <option value=\"justify\"></option>\r\n </select>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #clean>\r\n <span class=\"ql-formats\" *ngIf=\"config.buttons.clean\" [matTooltip]=\"tooltip(config.tooltips.clean)\">\r\n <button class=\"ql-clean\"></button>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #media>\r\n <span class=\"ql-formats\" *ngIf=\"config.showMedia\">\r\n <button class=\"ql-link\" *ngIf=\"config.buttons.link\" [matTooltip]=\"tooltip(config.tooltips.link)\"></button>\r\n <button class=\"ql-image\" *ngIf=\"config.buttons.image\" [matTooltip]=\"tooltip(config.tooltips.image)\"></button>\r\n <button class=\"ql-video\" *ngIf=\"config.buttons.video\" [matTooltip]=\"tooltip(config.tooltips.video)\"></button>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #editorSize>\r\n <div>\r\n <span class=\"ql-formats\" *ngIf=\"config.buttons.rawEditor\">\r\n <button id=\"rawdog\"\r\n [matTooltip]=\"tooltip(config.tooltips.rawEditor)\">\r\n\r\n <mat-icon (click)=\"rawEdit()\">\r\n code\r\n </mat-icon>\r\n </button>\r\n </span>\r\n\r\n <span class=\"ql-formats\" *ngIf=\"config.buttons.editorSize\">\r\n <button id=\"fullscreen\"\r\n [matTooltip]=\"tooltip(fullscreen ?\r\n (fullscreenMode === 'expand' ? config.tooltips.minimize : config.tooltips.popin) :\r\n (fullscreenMode === 'expand' ? config.tooltips.maximize : config.tooltips.popout))\">\r\n\r\n <mat-icon (click)=\"toggleFullscreen()\">\r\n {{ fullscreen ?\r\n (fullscreenMode === 'expand' ? config.icons.minimize : config.icons.popin) :\r\n (fullscreenMode === 'expand' ? config.icons.maximize : config.icons.popout)\r\n }}\r\n </mat-icon>\r\n </button>\r\n </span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #formula>\r\n <span class=\"ql-formats\" *ngIf=\"config.buttons.formula\" [matTooltip]=\"tooltip(config.tooltips.formula)\">\r\n <button class=\"ql-formula\"></button>\r\n </span>\r\n</ng-template>", styles: [".ql-toolbar{display:grid;grid-template-columns:1fr auto}mat-icon{color:#ff4500}quill-editor.readonly .ql-toolbar{opacity:.5}::ng-deep quill-editor.no-toolbar .ql-toolbar{height:0;padding:0;visibility:hidden}::ng-deep quill-editor.no-border .ql-container{border:none}::ng-deep quill-editor.readonly .ql-container{background-color:#f5f5f5!important}\n"] }]
236
+ }], template: "<ng-container>\r\n <form>\r\n <quill-editor name=\"editor\"\r\n [(ngModel)]=\"value\"\r\n (ngModelChange)=\"updateChanges()\"\r\n\r\n [placeholder]=\"placeholder\"\r\n [format]=\"format\"\r\n [style.height]=\"fullscreen ? fullscreenHeight : height\"\r\n [style.width]=\"fullscreen ? fullscreenWidth : width\"\r\n [readOnly]=\"readonly\"\r\n [class.readonly]=\"readonly && applyReadonlyStyle\"\r\n [class.no-toolbar]=\"!showToolbar\"\r\n [class.no-border]=\"!showBorder\"\r\n [modules]=\"modules\"\r\n \r\n (onBlur)=\"onBlur.emit($event)\"\r\n (onContentChanged)=\"onContentChanged.emit($event)\"\r\n (onEditorChanged)=\"onEditorChanged.emit($event)\"\r\n (onEditorCreated)=\"onEditorCreated.emit()\"\r\n (onFocus)=\"onFocus.emit($event)\"\r\n (onSelectionChanged)=\"onSelectionChanged.emit($event)\">\r\n \r\n <div quill-editor-toolbar *ngIf=\"showToolbar\">\r\n <ng-container [ngTemplateOutlet]=\"toolbar\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"editorSize\"></ng-container>\r\n </div>\r\n </quill-editor>\r\n </form>\r\n</ng-container>\r\n\r\n<ng-template #toolbar>\r\n <div>\r\n <ng-container [ngTemplateOutlet]=\"fontStyle\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"blockStyle\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"headingStyle\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"listStyle\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"scriptStyle\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"indentStyle\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"rtl\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"fontSize\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"heading\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"color\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"font\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"align\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"clean\"></ng-container>\r\n <nt-container [ngTemplateOutlet]=\"formula\"></nt-container>\r\n <ng-container [ngTemplateOutlet]=\"media\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #fontStyle>\r\n <span class=\"ql-formats\" *ngIf=\"config!.showFontStyle\">\r\n <button class=\"ql-bold\" *ngIf=\"config!.buttons.bold\" [matTooltip]=\"tooltip(config!.tooltips.bold)\"></button>\r\n <button class=\"ql-italic\" *ngIf=\"config!.buttons.italic\" [matTooltip]=\"tooltip(config!.tooltips.italic)\"></button>\r\n <button class=\"ql-underline\" *ngIf=\"config!.buttons.underline\" [matTooltip]=\"tooltip(config!.tooltips.underline)\"></button>\r\n <button class=\"ql-strike\" *ngIf=\"config!.buttons.strike\" [matTooltip]=\"tooltip(config!.tooltips.strike)\"></button>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #blockStyle>\r\n <span class=\"ql-formats\" *ngIf=\"config!.showBlockStyle\">\r\n <button class=\"ql-blockquote\" *ngIf=\"config!.buttons.blockquote\" [matTooltip]=\"tooltip(config!.tooltips.blockquote)\"></button>\r\n <button class=\"ql-code-block\" *ngIf=\"config!.buttons.codeblock\" [matTooltip]=\"tooltip(config!.tooltips.codeblock)\"></button>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #headingStyle>\r\n <span class=\"ql-formats\" *ngIf=\"config!.showQuickHeadingStyle\">\r\n <button class=\"ql-header\" value=\"1\" *ngIf=\"config!.buttons.h1\" [matTooltip]=\"tooltip(config!.tooltips.h1)\"></button>\r\n <button class=\"ql-header\" value=\"2\" *ngIf=\"config!.buttons.h2\" [matTooltip]=\"tooltip(config!.tooltips.h2)\"></button>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #listStyle>\r\n <span class=\"ql-formats\" *ngIf=\"config!.showListStyle\">\r\n <button class=\"ql-list\" value=\"ordered\" *ngIf=\"config!.buttons.ordered\" [matTooltip]=\"tooltip(config!.tooltips.ordered)\"></button>\r\n <button class=\"ql-list\" value=\"bullet\" *ngIf=\"config!.buttons.bulleted\" [matTooltip]=\"tooltip(config!.tooltips.bulleted)\"></button>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #scriptStyle>\r\n <span class=\"ql-formats\" *ngIf=\"config!.showScriptStyle\">\r\n <button class=\"ql-script\" value=\"sub\" *ngIf=\"config!.buttons.subScript\" [matTooltip]=\"tooltip(config!.tooltips.subScript)\"></button>\r\n <button class=\"ql-script\" value=\"super\" *ngIf=\"config!.buttons.superScript\" [matTooltip]=\"tooltip(config!.tooltips.superScript)\"></button>\r\n </span>\r\n</ng-template>\r\n \r\n<ng-template #indentStyle>\r\n <span class=\"ql-formats\" *ngIf=\"config!.showIndentStyle\">\r\n <button class=\"ql-indent\" value=\"-1\" *ngIf=\"config!.buttons.decreaseIndent\" [matTooltip]=\"tooltip(config!.tooltips.decreaseIndent)\"></button>\r\n <button class=\"ql-indent\" value=\"+1\" *ngIf=\"config!.buttons.increaseIndent\" [matTooltip]=\"tooltip(config!.tooltips.increaseIndent)\"></button>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #rtl>\r\n <span class=\"ql-formats\" *ngIf=\"config!.buttons.rtl\">\r\n <button class=\"ql-direction\" value=\"rtl\" [matTooltip]=\"tooltip(config!.tooltips.rtl)\"></button>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #fontSize>\r\n <span class=\"ql-formats\" *ngIf=\"config!.buttons.fontSize\" [matTooltip]=\"tooltip(config!.tooltips.fontSize)\">\r\n <select class=\"ql-size\">\r\n <option value=\"small\"></option>\r\n <option selected></option>\r\n <option value=\"large\"></option>\r\n <option value=\"huge\"></option>\r\n </select>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #heading>\r\n <span class=\"ql-formats\" *ngIf=\"config!.buttons.headingStyle\" [matTooltip]=\"tooltip(config!.tooltips.headingStyle)\">\r\n <select class=\"ql-header\">\r\n <option value=\"1\"></option>\r\n <option value=\"2\"></option>\r\n <option value=\"3\"></option>\r\n <option value=\"4\"></option>\r\n <option value=\"5\"></option>\r\n <option value=\"6\"></option>\r\n <option selected=\"selected\"></option>\r\n </select>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #color>\r\n <span class=\"ql-formats\" *ngIf=\"config!.buttons.color\" [matTooltip]=\"tooltip(config!.tooltips.color)\">\r\n <select class=\"ql-color\"></select>\r\n <select class=\"ql-background\"></select>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #font>\r\n <span class=\"ql-formats\" *ngIf=\"config!.buttons.font\" [matTooltip]=\"tooltip(config!.tooltips.font)\">\r\n <select class=\"ql-font\">\r\n <option selected></option>\r\n <option value=\"serif\"></option>\r\n <option value=\"monospace\"></option>\r\n </select>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #align>\r\n <span class=\"ql-formats\" *ngIf=\"config!.buttons.align\" [matTooltip]=\"tooltip(config!.tooltips.align)\">\r\n <select class=\"ql-align\">\r\n <option selected></option>\r\n <option value=\"center\"></option>\r\n <option value=\"right\"></option>\r\n <option value=\"justify\"></option>\r\n </select>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #clean>\r\n <span class=\"ql-formats\" *ngIf=\"config!.buttons.clean\" [matTooltip]=\"tooltip(config!.tooltips.clean)\">\r\n <button class=\"ql-clean\"></button>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #media>\r\n <span class=\"ql-formats\" *ngIf=\"config!.showMedia\">\r\n <button class=\"ql-link\" *ngIf=\"config!.buttons.link\" [matTooltip]=\"tooltip(config!.tooltips.link)\"></button>\r\n <button class=\"ql-image\" *ngIf=\"config!.buttons.image\" [matTooltip]=\"tooltip(config!.tooltips.image)\"></button>\r\n <button class=\"ql-video\" *ngIf=\"config!.buttons.video\" [matTooltip]=\"tooltip(config!.tooltips.video)\"></button>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #editorSize>\r\n <div>\r\n <span class=\"ql-formats\" *ngIf=\"config!.buttons.rawEditor\">\r\n <button id=\"rawdog\"\r\n [matTooltip]=\"tooltip(config!.tooltips.rawEditor)\">\r\n\r\n <mat-icon (click)=\"rawEdit()\">\r\n code\r\n </mat-icon>\r\n </button>\r\n </span>\r\n\r\n <span class=\"ql-formats\" *ngIf=\"config!.buttons.editorSize\">\r\n <button id=\"fullscreen\"\r\n [matTooltip]=\"tooltip(fullscreen ?\r\n (fullscreenMode === 'expand' ? config!.tooltips.minimize : config!.tooltips.popin) :\r\n (fullscreenMode === 'expand' ? config!.tooltips.maximize : config!.tooltips.popout))\">\r\n\r\n <mat-icon (click)=\"toggleFullscreen()\">\r\n {{ fullscreen ?\r\n (fullscreenMode === 'expand' ? config!.icons.minimize : config!.icons.popin) :\r\n (fullscreenMode === 'expand' ? config!.icons.maximize : config!.icons.popout)\r\n }}\r\n </mat-icon>\r\n </button>\r\n </span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #formula>\r\n <span class=\"ql-formats\" *ngIf=\"config!.buttons.formula\" [matTooltip]=\"tooltip(config!.tooltips.formula)\">\r\n <button class=\"ql-formula\"></button>\r\n </span>\r\n</ng-template>", styles: [".ql-toolbar{display:grid;grid-template-columns:1fr auto}mat-icon{color:#ff4500}quill-editor.readonly .ql-toolbar{opacity:.5}::ng-deep quill-editor.no-toolbar .ql-toolbar{height:0;padding:0;visibility:hidden}::ng-deep quill-editor.no-border .ql-container{border:none}::ng-deep quill-editor.readonly .ql-container{background-color:#f5f5f5!important}\n"] }]
239
237
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
240
238
  type: Optional
241
239
  }, {
@@ -295,4 +293,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
295
293
  }], onSelectionChanged: [{
296
294
  type: Output
297
295
  }] } });
298
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsZWF2ZWxhbmRwcmljZS9uZ3gtbGliL3F1aWxsL3NyYy9jb21wb25lbnRzL2VkaXRvci9lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xlYXZlbGFuZHByaWNlL25neC1saWIvcXVpbGwvc3JjL2NvbXBvbmVudHMvZWRpdG9yL2VkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SCxPQUFPLEVBQXVCLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkUsNkNBQTZDO0FBQzdDLE9BQU8sRUFBMkIsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEYsMkZBQTJGO0FBRTNGLE9BQU8sRUFBMkYsb0JBQW9CLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFMUkseUJBQXlCO0FBRXpCLHdDQUF3QztBQUN4Qyw0QkFBNEI7QUFFNUIscUZBQXFGO0FBQ3JGLHNEQUFzRDtBQUN0RCxxREFBcUQ7QUFFckQsK0dBQStHO0FBQy9HLHNEQUFzRDtBQUV0RCxZQUFZO0FBRVosT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTVDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7QUFZcEQsTUFBTSxPQUFPLGVBQWU7SUE4QzFCLFlBQVk7SUFFWixZQUF5RCxJQUFnQixFQUN6QyxTQUF3QztJQUM1RCx5REFBeUQ7SUFDakQsTUFBaUI7UUFIb0IsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUN6Qyxj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O3NCQUF4QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCwgT3B0aW9uYWwsIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG4vL2ltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbi8vaW1wb3J0IHsgQWN0aXZlRGlyZWN0b3J5U2VydmljZSwgVXNlciB9IGZyb20gJ0BjbGVhdmVsYW5kcHJpY2Uvbmd4LWxpYi9hY3RpdmUtZGlyZWN0b3J5JztcclxuXHJcbmltcG9ydCB7IENvbnRlbnRDaGFuZ2UsIEJsdXIsIEZvY3VzLCBFZGl0b3JDaGFuZ2VDb250ZW50LCBFZGl0b3JDaGFuZ2VTZWxlY3Rpb24sIFNlbGVjdGlvbkNoYW5nZSwgUXVpbGxFZGl0b3JDb21wb25lbnQgfSBmcm9tICduZ3gtcXVpbGwnO1xyXG5cclxuLy9pbXBvcnQgJ3F1aWxsLW1lbnRpb24nO1xyXG5cclxuLy8jcmVnaW9uIE1vdmVkIHRvIGNsaWVudCByZXNwb25zaWJpbGl0eVxyXG4vL2ltcG9ydCBRdWlsbCBmcm9tICdxdWlsbCc7XHJcblxyXG4vLyBUaGlzIGRvZXNuJ3Qgd29yayB3aGVuIGRvbmUgZnJvbSB0aGUgbGlicmFyeSAtIGl0IG11c3QgYmUgZG9uZSBmcm9tIHRoZSBjbGllbnQgYXBwXHJcbi8vaW1wb3J0IEltYWdlUmVzaXplIGZyb20gJ3F1aWxsLWltYWdlLXJlc2l6ZS1tb2R1bGUnO1xyXG4vL1F1aWxsLnJlZ2lzdGVyKCdtb2R1bGVzL2ltYWdlUmVzaXplJywgSW1hZ2VSZXNpemUpO1xyXG5cclxuLy8gVHJlYXRpbmcgSW1hZ2VEcm9wIHRoZSBzYW1lIHdheSBhcyBJbWFnZVJlc2l6ZSwgZXZlbiB0aG91Z2ggaXQgZG9lc24ndCBoYXZlIHRoZSBzYW1lIHByb2JsZW0gZGVzY3JpYmVkIGFib3ZlXHJcbi8vaW1wb3J0IHsgSW1hZ2VEcm9wIH0gZnJvbSAncXVpbGwtaW1hZ2UtZHJvcC1tb2R1bGUnO1xyXG5cclxuLy8jZW5kcmVnaW9uXHJcblxyXG5pbXBvcnQgeyBDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbC9jb25maWcnO1xyXG5pbXBvcnQgeyBEaWFsb2dEYXRhIH0gZnJvbSAnLi4vLi4vbW9kZWwvZGlhbG9nLWRhdGEnO1xyXG5pbXBvcnQgeyBSYXdDb21wb25lbnQgfSBmcm9tICcuLi9yYXcvcmF3LmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NwcXVpbGwtZWRpdG9yJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9lZGl0b3IuY29tcG9uZW50LmNzcyddLFxyXG4gIHByb3ZpZGVyczogW3tcclxuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRWRpdG9yQ29tcG9uZW50KSxcclxuICAgIG11bHRpOiB0cnVlXHJcbiAgfV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gIEBWaWV3Q2hpbGQoUXVpbGxFZGl0b3JDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KSBlZGl0b3I6IFF1aWxsRWRpdG9yQ29tcG9uZW50IHwgdW5kZWZpbmVkO1xyXG5cclxuICAvLyNyZWdpb24gQ29udHJvbFZhbHVlQWNjZXNzb3Igc3R1ZmZcclxuICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy81MDYxODA1MC9ob3ctdG8tY3JlYXRlLWN1c3RvbS1pbnB1dC1jb21wb25lbnQtd2l0aC1uZ21vZGVsLXdvcmtpbmctaW4tYW5ndWxhci02XHJcbiAgdmFsdWU6IGFueTsgLy8gc3RyaW5nXHJcbiAgb25DaGFuZ2U6IChfOiBhbnkpID0+IHZvaWQgPSAoXzogYW55KSA9PiB7fTsgLy8gSW52b2tlZCB3aGVuIHRoZSBtb2RlbCBoYXMgYmVlbiBjaGFuZ2VkXHJcbiAgb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4ge307IC8vIEludm9rZWQgd2hlbiB0aGUgbW9kZWwgaGFzIGJlZW4gdG91Y2hlZFxyXG4gIC8vI2VuZHJlZ2lvblxyXG4gIFxyXG4gIEBJbnB1dCgpIGNvbmZpZzogQ29uZmlnID0gbmV3IENvbmZpZygpO1xyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgLy9ASW5wdXQoKSB1c2VyczogVXNlcltdIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvLyNyZWdpb24gVGhlc2UgY2FuIGJlIHBhc3NlZCBpbiBhcyBASW5wdXQoKSwgb3IgdXNlIHZhbHVlcyBmcm9tIGNvbmZpZ1xyXG4gIEBJbnB1dCgpIGZvcm1hdCE6ICdvYmplY3QnIHwgJ2h0bWwnIHwgJ3RleHQnIHwgJ2pzb24nO1xyXG4gIEBJbnB1dCgpIGhlaWdodCE6IHN0cmluZztcclxuICBASW5wdXQoKSB3aWR0aCE6IHN0cmluZztcclxuICBASW5wdXQoKSBmdWxsc2NyZWVuSGVpZ2h0ITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGZ1bGxzY3JlZW5XaWR0aCE6IHN0cmluZztcclxuICBASW5wdXQoKSBmdWxsc2NyZWVuTW9kZSE6ICdleHBhbmQnIHwgJ3BvcG91dCc7XHJcblxyXG4gIEBJbnB1dCgpIGVuYWJsZVRvb2x0aXBzOiBib29sZWFuIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIGZ1bGxzY3JlZW46IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgYXBwbHlSZWFkb25seVN0eWxlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIHNob3dUb29sYmFyOiBib29sZWFuIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIHNob3dCb3JkZXI6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8vI3JlZ2lvbiBPcHRpb25hbCBRdWlsbCBtb2R1bGVzXHJcbiAgQElucHV0KCkgaW1hZ2VSZXNpemVNb2R1bGU6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgaW1hZ2VEcm9wTW9kdWxlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xyXG4gIC8vQElucHV0KCkgbWVudGlvbk1vZHVsZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBzeW50YXhNb2R1bGU6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcbiAgLy8jZW5kcmVnaW9uXHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIEBPdXRwdXQoKSBmdWxsc2NyZWVuQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgLy8jcmVnaW9uIFBhc3N0aHJvdWdoIGV2ZW50c1xyXG4gIEBPdXRwdXQoKSBvbkJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPEJsdXI+KCk7XHJcbiAgQE91dHB1dCgpIG9uQ29udGVudENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPENvbnRlbnRDaGFuZ2U+KCk7XHJcbiAgQE91dHB1dCgpIG9uRWRpdG9yQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RWRpdG9yQ2hhbmdlQ29udGVudCB8IEVkaXRvckNoYW5nZVNlbGVjdGlvbj4oKTtcclxuICBAT3V0cHV0KCkgb25FZGl0b3JDcmVhdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbkZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjxGb2N1cz4oKTtcclxuICBAT3V0cHV0KCkgb25TZWxlY3Rpb25DaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3Rpb25DaGFuZ2U+KCk7XHJcbiAgLy8jZW5kcmVnaW9uXHJcbiAgXHJcbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHByaXZhdGUgZGF0YTogRGlhbG9nRGF0YSxcclxuICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPEVkaXRvckNvbXBvbmVudD4sXHJcbiAgICAgICAgICAgICAgLy9wcml2YXRlIGFjdGl2ZURpcmVjdG9yeVNlcnZpY2U6IEFjdGl2ZURpcmVjdG9yeVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZykgeyAgXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xyXG4gICAgXHJcbiAgICAvKmlmICghdGhpcy51c2Vycykge1xyXG4gICAgICB0aGlzLmFjdGl2ZURpcmVjdG9yeVNlcnZpY2UuZ2V0VXNlcnMoKS5zdWJzY3JpYmUodXNlcnMgPT5cclxuICAgICAgICB0aGlzLnVzZXJzID0gdXNlcnNcclxuICAgICAgKTtcclxuICAgIH0qL1xyXG4gIH1cclxuXHJcbiAgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY29uZmlnID0gdGhpcy5jb25maWcgPz8gdGhpcy5kYXRhPy5jb25maWcgPz8gbmV3IENvbmZpZygpO1xyXG5cclxuICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlID8/IHRoaXMuZGF0YT8udmFsdWU7XHJcblxyXG4gICAgLy8gTW92ZWQgdG8gY2xpZW50IHJlc3BvbnNpYmlsaXR5XHJcbiAgICAvKmlmICh0aGlzLmltYWdlRHJvcE1vZHVsZSkge1xyXG4gICAgICBRdWlsbC5yZWdpc3RlcignbW9kdWxlcy9pbWFnZURyb3AnLCBJbWFnZURyb3ApO1xyXG4gICAgfSovXHJcblxyXG4gICAgdGhpcy5wbGFjZWhvbGRlciA9IHRoaXMucGxhY2Vob2xkZXIgPz8gdGhpcy5kYXRhPy5wbGFjZWhvbGRlcjtcclxuICAgIC8vdGhpcy51c2VycyA9IHRoaXMudXNlcnMgPz8gdGhpcy5kYXRhPy51c2VycztcclxuXHJcbiAgICB0aGlzLmltYWdlRHJvcE1vZHVsZSA9IHRoaXMuaW1hZ2VEcm9wTW9kdWxlID8/IHRoaXMuZGF0YT8uaW1hZ2VEcm9wTW9kdWxlID8/IHRoaXMuY29uZmlnLmltYWdlRHJvcE1vZHVsZTtcclxuICAgIHRoaXMuaW1hZ2VSZXNpemVNb2R1bGUgPSB0aGlzLmltYWdlUmVzaXplTW9kdWxlID8/IHRoaXMuZGF0YT8uaW1hZ2VSZXNpemVNb2R1bGUgPz8gdGhpcy5jb25maWcuaW1hZ2VSZXNpemVNb2R1bGU7XHJcbiAgICB0aGlzLnN5bnRheE1vZHVsZSA9IHRoaXMuc3ludGF4TW9kdWxlID8/IHRoaXMuZGF0YT8uc3ludGF4TW9kdWxlID8/IHRoaXMuY29uZmlnLnN5bnRheE1vZHVsZTtcclxuXHJcbiAgICB0aGlzLmZvcm1hdCA9IHRoaXMuZm9ybWF0ID8/IHRoaXMuZGF0YT8uZm9ybWF0ID8/IHRoaXMuY29uZmlnLmZvcm1hdDtcclxuICAgIHRoaXMuaGVpZ2h0ID0gdGhpcy5oZWlnaHQgPz8gdGhpcy5kYXRhPy5oZWlnaHQgPz8gdGhpcy5jb25maWcuaGVpZ2h0O1xyXG4gICAgdGhpcy53aWR0aCA9IHRoaXMud2lkdGggPz8gdGhpcy5kYXRhPy53aWR0aCA/PyB0aGlzLmNvbmZpZy53aWR0aDtcclxuICAgIHRoaXMuZnVsbHNjcmVlbkhlaWdodCA9IHRoaXMuZnVsbHNjcmVlbkhlaWdodCA/PyB0aGlzLmRhdGE/Lm1heEhlaWdodCA/PyB0aGlzLmNvbmZpZy5mdWxsc2NyZWVuSGVpZ2h0O1xyXG4gICAgdGhpcy5mdWxsc2NyZWVuV2lkdGggPSB0aGlzLmZ1bGxzY3JlZW5XaWR0aCA/PyB0aGlzLmRhdGE/Lm1heFdpZHRoID8/IHRoaXMuY29uZmlnLmZ1bGxzY3JlZW5XaWR0aDtcclxuICAgIHRoaXMuZnVsbHNjcmVlbk1vZGUgPSB0aGlzLmZ1bGxzY3JlZW5Nb2RlID8/IHRoaXMuZGF0YT8uZnVsbHNjcmVlbk1vZGUgPz8gdGhpcy5jb25maWcuZnVsbHNjcmVlbk1vZGU7XHJcblxyXG4gICAgdGhpcy5lbmFibGVUb29sdGlwcyA9IHRoaXMuZW5hYmxlVG9vbHRpcHMgIT09IHVuZGVmaW5lZCA/XHJcbiAgICAgIHRoaXMuZW5hYmxlVG9vbHRpcHMgOlxyXG4gICAgICB0aGlzLmRhdGE/LmVuYWJsZVRvb2x0aXBzID8/IHRoaXMuY29uZmlnLmVuYWJsZVRvb2x0aXBzO1xyXG5cclxuICAgIHRoaXMuZnVsbHNjcmVlbiA9IHRoaXMuZnVsbHNjcmVlbiAhPT0gdW5kZWZpbmVkID9cclxuICAgICAgdGhpcy5mdWxsc2NyZWVuIDpcclxuICAgICAgdGhpcy5kYXRhPy5mdWxsc2NyZWVuID8/IHRoaXMuY29uZmlnLmZ1bGxzY3JlZW47XHJcblxyXG4gICAgdGhpcy5yZWFkb25seSA9IHRoaXMucmVhZG9ubHkgIT09IHVuZGVmaW5lZCA/XHJcbiAgICAgIHRoaXMucmVhZG9ubHkgOlxyXG4gICAgICB0aGlzLmRhdGE/LnJlYWRvbmx5ID8/IHRoaXMuY29uZmlnLnJlYWRvbmx5O1xyXG5cclxuICAgIHRoaXMuYXBwbHlSZWFkb25seVN0eWxlID0gdGhpcy5hcHBseVJlYWRvbmx5U3R5bGUgIT09IHVuZGVmaW5lZCA/XHJcbiAgICAgIHRoaXMuYXBwbHlSZWFkb25seVN0eWxlIDpcclxuICAgICAgdGhpcy5kYXRhPy5hcHBseVJlYWRvbmx5U3R5bGUgPz8gdGhpcy5jb25maWcuYXBwbHlSZWFkb25seVN0eWxlO1xyXG5cclxuICAgIHRoaXMuc2hvd1Rvb2xiYXIgPSB0aGlzLnNob3dUb29sYmFyICE9PSB1bmRlZmluZWQgP1xyXG4gICAgICB0aGlzLnNob3dUb29sYmFyIDpcclxuICAgICAgdGhpcy5kYXRhPy5zaG93VG9vbGJhciA/PyB0aGlzLmNvbmZpZy5zaG93VG9vbGJhcjtcclxuXHJcbiAgICB0aGlzLnNob3dCb3JkZXIgPSB0aGlzLnNob3dCb3JkZXIgIT09IHVuZGVmaW5lZCA/XHJcbiAgICAgIHRoaXMuc2hvd0JvcmRlciA6XHJcbiAgICAgIHRoaXMuZGF0YT8uc2hvd0JvcmRlciA/PyB0aGlzLmNvbmZpZy5zaG93Qm9yZGVyO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlRnVsbHNjcmVlbigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmZ1bGxzY3JlZW5Nb2RlID09PSAnZXhwYW5kJykge1xyXG4gICAgICAgIHRoaXMuZnVsbHNjcmVlbiA9ICF0aGlzLmZ1bGxzY3JlZW47XHJcbiAgICAgICAgdGhpcy5mdWxsc2NyZWVuQ2hhbmdlZC5lbWl0KHRoaXMuZnVsbHNjcmVlbik7XHJcbiAgICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5mdWxsc2NyZWVuKSB7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodGhpcy52YWx1ZSk7XHJcbiAgICAgICAgICB0aGlzLmZ1bGxzY3JlZW5DaGFuZ2VkLmVtaXQoZmFsc2UpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGRhdGE6IERpYWxvZ0RhdGEgPSB7XHJcblxyXG4gICAgICAgICAgdmFsdWU6IHRoaXMudmFsdWUsXHJcbiAgICAgICAgICBjb25maWc6IHRoaXMuY29uZmlnLFxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMucGxhY2Vob2xkZXIsXHJcbiAgICAgICAgICBmb3JtYXQ6IHRoaXMuZm9ybWF0LFxyXG4gICAgICAgICAgaGVpZ2h0OiB0aGlzLmZ1bGxzY3JlZW5IZWlnaHQsXHJcbiAgICAgICAgICB3aWR0aDogJzEwMCUnLFxyXG4gICAgICAgICAgbWF4SGVpZ2h0OiB0aGlzLmZ1bGxzY3JlZW5IZWlnaHQsXHJcbiAgICAgICAgICBtYXhXaWR0aDogJzEwMCUnLFxyXG4gICAgICAgICAgZW5hYmxlVG9vbHRpcHM6IHRoaXMuZW5hYmxlVG9vbHRpcHMhLFxyXG4gICAgICAgICAgZnVsbHNjcmVlbjogdHJ1ZSxcclxuICAgICAgICAgIGZ1bGxzY3JlZW5Nb2RlOiB0aGlzLmZ1bGxzY3JlZW5Nb2RlLFxyXG4gICAgICAgICAgcmVhZG9ubHk6IHRoaXMucmVhZG9ubHkhLFxyXG4gICAgICAgICAgYXBwbHlSZWFkb25seVN0eWxlOiB0aGlzLmFwcGx5UmVhZG9ubHlTdHlsZSEsXHJcbiAgICAgICAgICBzaG93VG9vbGJhcjogdGhpcy5zaG93VG9vbGJhciEsXHJcbiAgICAgICAgICBzaG93Qm9yZGVyOiB0aGlzLnNob3dCb3JkZXIhLFxyXG4gICAgICAgICAgaW1hZ2VSZXNpemVNb2R1bGU6IHRoaXMuaW1hZ2VSZXNpemVNb2R1bGUhLFxyXG4gICAgICAgICAgaW1hZ2VEcm9wTW9kdWxlOiB0aGlzLmltYWdlRHJvcE1vZHVsZSEsXHJcbiAgICAgICAgICBzeW50YXhNb2R1bGU6IHRoaXMuc3ludGF4TW9kdWxlIVxyXG4gICAgICAgICAgLy91c2VyczogdGhpcy51c2Vyc1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuZGlhbG9nLm9wZW4oRWRpdG9yQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgICAgICB3aWR0aDogdGhpcy5mdWxsc2NyZWVuV2lkdGgsXHJcbiAgICAgICAgICBoZWlnaHQ6IHRoaXMuZnVsbHNjcmVlbkhlaWdodCxcclxuICAgICAgICAgIGRhdGFcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgICAgLnN1YnNjcmliZSh2YWx1ZSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNoYW5nZXMoKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5mdWxsc2NyZWVuQ2hhbmdlZC5lbWl0KHRydWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByYXdFZGl0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaWFsb2cub3BlbihSYXdDb21wb25lbnQsIHtcclxuICAgICAgZGF0YTogdGhpcy52YWx1ZSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICBoZWlnaHQ6ICc5MCUnLFxyXG4gICAgICB3aWR0aDogJzEwMCUnXHJcbiAgICB9KVxyXG4gICAgLmFmdGVyQ2xvc2VkKClcclxuICAgIC5zdWJzY3JpYmUodmFsdWUgPT4ge1xyXG4gICAgICBpZiAodmFsdWUgPT09ICdfX0RPISFOT1QhIVVQREFURV9fJykge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB0b29sdGlwKHZhbDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmVuYWJsZVRvb2x0aXBzID8gdmFsIDogJyc7XHJcbiAgfVxyXG5cclxuICBnZXQgbW9kdWxlcygpIHtcclxuICAgIC8vaWYgKCF0aGlzLnVzZXJzKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cclxuXHJcbiAgICBjb25zdCBtb2R1bGVzID0geyB9O1xyXG5cclxuICAgIGlmICghdGhpcy5zaG93VG9vbGJhcikge1xyXG4gICAgICBtb2R1bGVzWyd0b29sYmFyJ10gPSBbXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pbWFnZVJlc2l6ZU1vZHVsZSkge1xyXG4gICAgICBtb2R1bGVzWydpbWFnZVJlc2l6ZSddID0ge307XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaW1hZ2VEcm9wTW9kdWxlKSB7XHJcbiAgICAgIG1vZHVsZXNbJ2ltYWdlRHJvcCddID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zeW50YXhNb2R1bGUpIHtcclxuICAgICAgbW9kdWxlc1snc3ludGF4J10gPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qaWYgKHRoaXMubWVudGlvbk1vZHVsZSkge1xyXG4gICAgICBtb2R1bGVzWydtZW50aW9uJ10gPSB7XHJcbiAgICAgICAgYWxsb3dlZENoYXJzOiAvXltBLVphLXpcXHPDhcOEw5bDpcOkw7ZdKiQvLFxyXG5cclxuICAgICAgICBvblNlbGVjdDogKGl0ZW06IERPTVN0cmluZ01hcCwgaW5zZXJ0SXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvciEucXVpbGxFZGl0b3JcclxuICAgICAgICAgIGluc2VydEl0ZW0oaXRlbSlcclxuICAgICAgICAgIC8vIG5lY2Vzc2FyeSBiZWNhdXNlIHF1aWxsLW1lbnRpb24gdHJpZ2dlcnMgY2hhbmdlcyBhcyAnYXBpJyBpbnN0ZWFkIG9mICd1c2VyJ1xyXG4gICAgICAgICAgZWRpdG9yLmluc2VydFRleHQoZWRpdG9yLmdldExlbmd0aCgpIC0gMSwgJycsICd1c2VyJylcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBzb3VyY2U6IChzZWFyY2hUZXJtOiBzdHJpbmcsIHJlbmRlckxpc3Q6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHNlYXJjaFRlcm0ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJlbmRlckxpc3QodGhpcy51c2Vycz8ubWFwKHUgPT4gKHsgdmFsdWU6IGAke3UuZGlzcGxheU5hbWV9ICgke3Uuc0FNQWNjb3VudE5hbWUudG9Mb3dlckNhc2UoKX0pYCB9KSksIHNlYXJjaFRlcm0pXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBtYXRjaGVzOiBhbnlbXSA9IFtdXHJcblxyXG4gICAgICAgICAgICB0aGlzLnVzZXJzIS5mb3JFYWNoKChlbnRyeSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgIGVudHJ5LmRpc3BsYXlOYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihzZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCkpICE9PSAtMSB8fFxyXG4gICAgICAgICAgICAgICAgZW50cnkuc0FNQWNjb3VudE5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaFRlcm0udG9Mb3dlckNhc2UoKSkgIT09IC0xXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIG1hdGNoZXMucHVzaCh7IHZhbHVlOiBgJHtlbnRyeS5kaXNwbGF5TmFtZX0gKCR7ZW50cnkuc0FNQWNjb3VudE5hbWUudG9Mb3dlckNhc2UoKX0pYCB9KVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICAgIHJlbmRlckxpc3QobWF0Y2hlcywgc2VhcmNoVGVybSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICB9Ki9cclxuXHJcbiAgICByZXR1cm4gbW9kdWxlcztcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBDb250cm9sVmFsdWVBY2Nlc3NvciBtZXRob2RzXHJcbiAgLy8gTWV0aG9kIHRoYXQgaXMgaW52b2tlZCBvbiBhbiB1cGRhdGUgb2YgYSBtb2RlbC5cclxuICB1cGRhdGVDaGFuZ2VzKCkge1xyXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBDb250cm9sVmFsdWVBY2Nlc3NvciBPdmVycmlkZXNcclxuXHJcbiAgLy8gV3JpdGVzIGEgbmV3IGl0ZW0gdG8gdGhlIGVsZW1lbnQuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgdGhpcy51cGRhdGVDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICAvLyBSZWdpc3RlcnMgYSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IHNob3VsZCBiZSBjYWxsZWQgd2hlbiB0aGUgY29udHJvbCdzIHZhbHVlIGNoYW5nZXMgaW4gdGhlIFVJLlxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICAvLyBSZWdpc3RlcnMgYSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IHNob3VsZCBiZSBjYWxsZWQgd2hlbiB0aGUgY29udHJvbCByZWNlaXZlcyBhIGJsdXIgZXZlbnQuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG59IiwiPG5nLWNvbnRhaW5lcj5cclxuICAgIDxmb3JtPlxyXG4gICAgICAgIDxxdWlsbC1lZGl0b3IgbmFtZT1cImVkaXRvclwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVDaGFuZ2VzKClcIlxyXG5cclxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgW2Zvcm1hdF09XCJmb3JtYXRcIlxyXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cImZ1bGxzY3JlZW4gPyBmdWxsc2NyZWVuSGVpZ2h0IDogaGVpZ2h0XCJcclxuICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImZ1bGxzY3JlZW4gPyBmdWxsc2NyZWVuV2lkdGggOiB3aWR0aFwiXHJcbiAgICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkb25seVwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5yZWFkb25seV09XCJyZWFkb25seSAmJiBhcHBseVJlYWRvbmx5U3R5bGVcIlxyXG4gICAgICAgICAgICBbY2xhc3Mubm8tdG9vbGJhcl09XCIhc2hvd1Rvb2xiYXJcIlxyXG4gICAgICAgICAgICBbY2xhc3Mubm8tYm9yZGVyXT1cIiFzaG93Qm9yZGVyXCJcclxuICAgICAgICAgICAgW21vZHVsZXNdPVwibW9kdWxlc1wiXHJcbiAgICBcclxuICAgICAgICAgICAgKG9uQmx1cik9XCJvbkJsdXIuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgKG9uQ29udGVudENoYW5nZWQpPVwib25Db250ZW50Q2hhbmdlZC5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgICAob25FZGl0b3JDaGFuZ2VkKT1cIm9uRWRpdG9yQ2hhbmdlZC5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgICAob25FZGl0b3JDcmVhdGVkKT1cIm9uRWRpdG9yQ3JlYXRlZC5lbWl0KClcIlxyXG4gICAgICAgICAgICAob25Gb2N1cyk9XCJvbkZvY3VzLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChvblNlbGVjdGlvbkNoYW5nZWQpPVwib25TZWxlY3Rpb25DaGFuZ2VkLmVtaXQoJGV2ZW50KVwiPlxyXG4gICAgXHJcbiAgICAgICAgICAgIDxkaXYgcXVpbGwtZWRpdG9yLXRvb2xiYXIgKm5nSWY9XCJzaG93VG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0b29sYmFyXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImVkaXRvclNpemVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9xdWlsbC1lZGl0b3I+XHJcbiAgICA8L2Zvcm0+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLXRlbXBsYXRlICN0b29sYmFyPlxyXG4gICAgPGRpdj5cclxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZvbnRTdHlsZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYmxvY2tTdHlsZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGluZ1N0eWxlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJsaXN0U3R5bGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNjcmlwdFN0eWxlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJpbmRlbnRTdHlsZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwicnRsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJmb250U2l6ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGluZ1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29sb3JcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZvbnRcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImFsaWduXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjbGVhblwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxudC1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZm9ybXVsYVwiPjwvbnQtY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwibWVkaWFcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNmb250U3R5bGU+XHJcbiAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIiAqbmdJZj1cImNvbmZpZy5zaG93Rm9udFN0eWxlXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWJvbGRcIiAgICAgICpuZ0lmPVwiY29uZmlnLmJ1dHRvbnMuYm9sZFwiICAgICAgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWcudG9vbHRpcHMuYm9sZClcIj48L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicWwtaXRhbGljXCIgICAgKm5nSWY9XCJjb25maWcuYnV0dG9ucy5pdGFsaWNcIiAgICBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZy50b29sdGlwcy5pdGFsaWMpXCI+PC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLXVuZGVybGluZVwiICpuZ0lmPVwiY29uZmlnLmJ1dHRvbnMudW5kZXJsaW5lXCIgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWcudG9vbHRpcHMudW5kZXJsaW5lKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1zdHJpa2VcIiAgICAqbmdJZj1cImNvbmZpZy5idXR0b25zLnN0cmlrZVwiICAgIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnLnRvb2x0aXBzLnN0cmlrZSlcIj48L2J1dHRvbj5cclxuICAgIDwvc3Bhbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjYmxvY2tTdHlsZT5cclxuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiICpuZ0lmPVwiY29uZmlnLnNob3dCbG9ja1N0eWxlXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWJsb2NrcXVvdGVcIiAqbmdJZj1cImNvbmZpZy5idXR0b25zLmJsb2NrcXVvdGVcIiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZy50b29sdGlwcy5ibG9ja3F1b3RlKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1jb2RlLWJsb2NrXCIgKm5nSWY9XCJjb25maWcuYnV0dG9ucy5jb2RlYmxvY2tcIiAgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWcudG9vbHRpcHMuY29kZWJsb2NrKVwiPjwvYnV0dG9uPlxyXG4gICAgPC9zcGFuPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNoZWFkaW5nU3R5bGU+XHJcbiAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIiAqbmdJZj1cImNvbmZpZy5zaG93UXVpY2tIZWFkaW5nU3R5bGVcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicWwtaGVhZGVyXCIgdmFsdWU9XCIxXCIgKm5nSWY9XCJjb25maWcuYnV0dG9ucy5oMVwiIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnLnRvb2x0aXBzLmgxKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1oZWFkZXJcIiB2YWx1ZT1cIjJcIiAqbmdJZj1cImNvbmZpZy5idXR0b25zLmgyXCIgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWcudG9vbHRpcHMuaDIpXCI+PC9idXR0b24+XHJcbiAgICA8L3NwYW4+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2xpc3RTdHlsZT5cclxuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiICpuZ0lmPVwiY29uZmlnLnNob3dMaXN0U3R5bGVcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicWwtbGlzdFwiIHZhbHVlPVwib3JkZXJlZFwiICpuZ0lmPVwiY29uZmlnLmJ1dHRvbnMub3JkZXJlZFwiICBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZy50b29sdGlwcy5vcmRlcmVkKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1saXN0XCIgdmFsdWU9XCJidWxsZXRcIiAgKm5nSWY9XCJjb25maWcuYnV0dG9ucy5idWxsZXRlZFwiIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnLnRvb2x0aXBzLmJ1bGxldGVkKVwiPjwvYnV0dG9uPlxyXG4gICAgPC9zcGFuPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNzY3JpcHRTdHlsZT5cclxuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiICpuZ0lmPVwiY29uZmlnLnNob3dTY3JpcHRTdHlsZVwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1zY3JpcHRcIiB2YWx1ZT1cInN1YlwiICAgKm5nSWY9XCJjb25maWcuYnV0dG9ucy5zdWJTY3JpcHRcIiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZy50b29sdGlwcy5zdWJTY3JpcHQpXCI+PC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLXNjcmlwdFwiIHZhbHVlPVwic3VwZXJcIiAqbmdJZj1cImNvbmZpZy5idXR0b25zLnN1cGVyU2NyaXB0XCIgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWcudG9vbHRpcHMuc3VwZXJTY3JpcHQpXCI+PC9idXR0b24+XHJcbiAgICA8L3NwYW4+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiAgICBcclxuPG5nLXRlbXBsYXRlICNpbmRlbnRTdHlsZT5cclxuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiICpuZ0lmPVwiY29uZmlnLnNob3dJbmRlbnRTdHlsZVwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1pbmRlbnRcIiB2YWx1ZT1cIi0xXCIgKm5nSWY9XCJjb25maWcuYnV0dG9ucy5kZWNyZWFzZUluZGVudFwiIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnLnRvb2x0aXBzLmRlY3JlYXNlSW5kZW50KVwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1pbmRlbnRcIiB2YWx1ZT1cIisxXCIgKm5nSWY9XCJjb25maWcuYnV0dG9ucy5pbmNyZWFzZUluZGVudFwiIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnLnRvb2x0aXBzLmluY3JlYXNlSW5kZW50KVwiPjwvYnV0dG9uPlxyXG4gICAgPC9zcGFuPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNydGw+XHJcbiAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIiAqbmdJZj1cImNvbmZpZy5idXR0b25zLnJ0bFwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1kaXJlY3Rpb25cIiB2YWx1ZT1cInJ0bFwiIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnLnRvb2x0aXBzLnJ0bClcIj48L2J1dHRvbj5cclxuICAgIDwvc3Bhbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZm9udFNpemU+XHJcbiAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIiAqbmdJZj1cImNvbmZpZy5idXR0b25zLmZvbnRTaXplXCIgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWcudG9vbHRpcHMuZm9udFNpemUpXCI+XHJcbiAgICAgICAgPHNlbGVjdCBjbGFzcz1cInFsLXNpemVcIj5cclxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInNtYWxsXCI+PC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gc2VsZWN0ZWQ+PC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJsYXJnZVwiPjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiaHVnZVwiPjwvb3B0aW9uPlxyXG4gICAgICAgIDwvc2VsZWN0PlxyXG4gICAgPC9zcGFuPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNoZWFkaW5nPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCIgKm5nSWY9XCJjb25maWcuYnV0dG9ucy5oZWFkaW5nU3R5bGVcIiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZy50b29sdGlwcy5oZWFkaW5nU3R5bGUpXCI+XHJcbiAgICAgICAgPHNlbGVjdCBjbGFzcz1cInFsLWhlYWRlclwiPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiMVwiPjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiMlwiPjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiM1wiPjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiNFwiPjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiNVwiPjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiNlwiPjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHNlbGVjdGVkPVwic2VsZWN0ZWRcIj48L29wdGlvbj5cclxuICAgICAgICA8L3NlbGVjdD5cclxuICAgIDwvc3Bhbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY29sb3I+XHJcbiAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIiAqbmdJZj1cImNvbmZpZy5idXR0b25zLmNvbG9yXCIgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWcudG9vbHRpcHMuY29sb3IpXCI+XHJcbiAgICAgICAgPHNlbGVjdCBjbGFzcz1cInFsLWNvbG9yXCI+PC9zZWxlY3Q+XHJcbiAgICAgICAgPHNlbGVjdCBjbGFzcz1cInFsLWJhY2tncm91bmRcIj48L3NlbGVjdD5cclxuICAgIDwvc3Bhbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZm9udD5cclxuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiICpuZ0lmPVwiY29uZmlnLmJ1dHRvbnMuZm9udFwiIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnLnRvb2x0aXBzLmZvbnQpXCI+XHJcbiAgICAgICAgPHNlbGVjdCBjbGFzcz1cInFsLWZvbnRcIj5cclxuICAgICAgICAgICAgPG9wdGlvbiBzZWxlY3RlZD48L29wdGlvbj5cclxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInNlcmlmXCI+PC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJtb25vc3BhY2VcIj48L29wdGlvbj5cclxuICAgICAgICA8L3NlbGVjdD5cclxuICAgIDwvc3Bhbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjYWxpZ24+XHJcbiAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIiAqbmdJZj1cImNvbmZpZy5idXR0b25zLmFsaWduXCIgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWcudG9vbHRpcHMuYWxpZ24pXCI+XHJcbiAgICAgICAgPHNlbGVjdCBjbGFzcz1cInFsLWFsaWduXCI+XHJcbiAgICAgICAgICAgIDxvcHRpb24gc2VsZWN0ZWQ+PC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJjZW50ZXJcIj48L29wdGlvbj5cclxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInJpZ2h0XCI+PC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJqdXN0aWZ5XCI+PC9vcHRpb24+XHJcbiAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICA8L3NwYW4+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2NsZWFuPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCIgKm5nSWY9XCJjb25maWcuYnV0dG9ucy5jbGVhblwiIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnLnRvb2x0aXBzLmNsZWFuKVwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1jbGVhblwiPjwvYnV0dG9uPlxyXG4gICAgPC9zcGFuPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNtZWRpYT5cclxuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiICpuZ0lmPVwiY29uZmlnLnNob3dNZWRpYVwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1saW5rXCIgICpuZ0lmPVwiY29uZmlnLmJ1dHRvbnMubGlua1wiIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnLnRvb2x0aXBzLmxpbmspXCI+PC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWltYWdlXCIgKm5nSWY9XCJjb25maWcuYnV0dG9ucy5pbWFnZVwiIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnLnRvb2x0aXBzLmltYWdlKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC12aWRlb1wiICpuZ0lmPVwiY29uZmlnLmJ1dHRvbnMudmlkZW9cIiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZy50b29sdGlwcy52aWRlbylcIj48L2J1dHRvbj5cclxuICAgIDwvc3Bhbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZWRpdG9yU2l6ZT5cclxuICAgIDxkaXY+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCIgKm5nSWY9XCJjb25maWcuYnV0dG9ucy5yYXdFZGl0b3JcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBpZD1cInJhd2RvZ1wiXHJcbiAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZy50b29sdGlwcy5yYXdFZGl0b3IpXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIChjbGljayk9XCJyYXdFZGl0KClcIj5cclxuICAgICAgICAgICAgICAgICAgICBjb2RlXHJcbiAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiICpuZ0lmPVwiY29uZmlnLmJ1dHRvbnMuZWRpdG9yU2l6ZVwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGlkPVwiZnVsbHNjcmVlblwiXHJcbiAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGZ1bGxzY3JlZW4gP1xyXG4gICAgICAgICAgICAgICAgICAgIChmdWxsc2NyZWVuTW9kZSA9PT0gJ2V4cGFuZCcgPyBjb25maWcudG9vbHRpcHMubWluaW1pemUgOiBjb25maWcudG9vbHRpcHMucG9waW4pIDpcclxuICAgICAgICAgICAgICAgICAgICAoZnVsbHNjcmVlbk1vZGUgPT09ICdleHBhbmQnID8gY29uZmlnLnRvb2x0aXBzLm1heGltaXplIDogY29uZmlnLnRvb2x0aXBzLnBvcG91dCkpXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIChjbGljayk9XCJ0b2dnbGVGdWxsc2NyZWVuKClcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBmdWxsc2NyZWVuID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bGxzY3JlZW5Nb2RlID09PSAnZXhwYW5kJyA/IGNvbmZpZy5pY29ucy5taW5pbWl6ZSA6IGNvbmZpZy5pY29ucy5wb3BpbikgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVsbHNjcmVlbk1vZGUgPT09ICdleHBhbmQnID8gY29uZmlnLmljb25zLm1heGltaXplIDogY29uZmlnLmljb25zLnBvcG91dClcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2Zvcm11bGE+XHJcbiAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIiAqbmdJZj1cImNvbmZpZy5idXR0b25zLmZvcm11bGFcIiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZy50b29sdGlwcy5mb3JtdWxhKVwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1mb3JtdWxhXCI+PC9idXR0b24+XHJcbiAgICA8L3NwYW4+XHJcbjwvbmctdGVtcGxhdGU+Il19
296
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsZWF2ZWxhbmRwcmljZS9uZ3gtbGliL3F1aWxsL3NyYy9jb21wb25lbnRzL2VkaXRvci9lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xlYXZlbGFuZHByaWNlL25neC1saWIvcXVpbGwvc3JjL2NvbXBvbmVudHMvZWRpdG9yL2VkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SCxPQUFPLEVBQXVCLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkUsNkNBQTZDO0FBQzdDLE9BQU8sRUFBMkIsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEYsMkZBQTJGO0FBRTNGLE9BQU8sRUFBMkYsb0JBQW9CLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFMUkseUJBQXlCO0FBRXpCLHdDQUF3QztBQUN4Qyw0QkFBNEI7QUFFNUIscUZBQXFGO0FBQ3JGLHNEQUFzRDtBQUN0RCxxREFBcUQ7QUFFckQsK0dBQStHO0FBQy9HLHNEQUFzRDtBQUV0RCxZQUFZO0FBRVosT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTVDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7QUFZcEQsTUFBTSxPQUFPLGVBQWU7SUE4QzFCLFlBQVk7SUFFWixZQUF5RCxJQUFnQixFQUN6QyxTQUF3QztJQUM1RCx5REFBeUQ7SUFDakQsTUFBaUI7UUFIb0IsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUN6QyxjQUFTLEdBQVQsU0FBUyxDQUErQjtRQUVwRCxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBN0NyQyxhQUFRLEdBQXFCLENBQUMsQ0FBTSxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQywwQ0FBMEM7UUFDdkYsY0FBUyxHQUFlLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDLDBDQUEwQztRQTJCNUUsWUFBWTtRQUNaLFlBQVk7UUFFRixzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBRTFELDRCQUE0QjtRQUNsQixXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNsQyxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUNyRCxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUErQyxDQUFDO1FBQ2xGLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNyQyxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVMsQ0FBQztRQUNwQyx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztJQU9uRSxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVsQjs7OztXQUlHO0lBQ0wsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLElBQUksSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUUvRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7UUFFNUMsaUNBQWlDO1FBQ2pDOztXQUVHO1FBRUgsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDO1FBQzlELDhDQUE4QztRQUU5QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxlQUFlLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUM7UUFDekcsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLGlCQUFpQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUM7UUFDakgsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsWUFBWSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO1FBRTdGLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUNyRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDckUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxTQUFTLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztRQUN0RyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUM7UUFDbEcsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsY0FBYyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDO1FBRXJHLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsS0FBSyxTQUFTLENBQUMsQ0FBQztZQUN2RCxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxjQUFjLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUM7UUFFMUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxLQUFLLFNBQVMsQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNqQixJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUVsRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2YsSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFFOUMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxTQUFTLENBQUMsQ0FBQztZQUMvRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUN6QixJQUFJLENBQUMsSUFBSSxFQUFFLGtCQUFrQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUM7UUFFbEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxLQUFLLFNBQVMsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNsQixJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztRQUVwRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLEtBQUssU0FBUyxDQUFDLENBQUM7WUFDL0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2pCLElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO0lBQ3BELENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssUUFBUSxFQUFFO1lBQ2xDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ25DLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQzlDO2FBQ0U7WUFDSCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN0QztpQkFBTTtnQkFDTCxNQUFNLElBQUksR0FBZTtvQkFFdkIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO29CQUNqQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07b0JBQ25CLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztvQkFDN0IsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO29CQUNuQixNQUFNLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtvQkFDN0IsS0FBSyxFQUFFLE1BQU07b0JBQ2IsU0FBUyxFQUFFLElBQUksQ0FBQyxnQkFBZ0I7b0JBQ2hDLFFBQVEsRUFBRSxNQUFNO29CQUNoQixjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWU7b0JBQ3BDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7b0JBQ25DLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUztvQkFDeEIsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGtCQUFtQjtvQkFDNUMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFZO29CQUM5QixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVc7b0JBQzVCLGlCQUFpQixFQUFFLElBQUksQ0FBQyxpQkFBa0I7b0JBQzFDLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZ0I7b0JBQ3RDLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBYTtvQkFDaEMsbUJBQW1CO2lCQUNwQixDQUFDO2dCQUVGLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtvQkFDaEMsWUFBWSxFQUFFLElBQUk7b0JBQ2xCLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZTtvQkFDM0IsTUFBTSxFQUFFLElBQUksQ0FBQyxnQkFBZ0I7b0JBQzdCLElBQUk7aUJBQ0wsQ0FBQztxQkFDRCxXQUFXLEVBQUU7cUJBQ2IsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztvQkFDbkIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUN2QixDQUFDLENBQUMsQ0FBQztnQkFFSCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ25DO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUM3QixJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDaEIsWUFBWSxFQUFFLElBQUk7WUFDbEIsTUFBTSxFQUFFLEtBQUs7WUFDYixLQUFLLEVBQUUsTUFBTTtTQUNkLENBQUM7YUFDRCxXQUFXLEVBQUU7YUFDYixTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDakIsSUFBSSxLQUFLLEtBQUsscUJBQXFCLEVBQUU7Z0JBQ25DLE9BQU87YUFDUjtZQUVELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFXO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUksT0FBTztRQUNULHdDQUF3QztRQUV4QyxNQUFNLE9BQU8sR0FBRyxFQUFHLENBQUM7UUFFcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDckIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUN6QjtRQUVELElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzFCLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLENBQUM7U0FDN0I7UUFFRCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDeEIsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQztTQUM3QjtRQUVELElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDO1NBQzFCO1FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztXQThCRztRQUVILE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxzQ0FBc0M7SUFDdEMsa0RBQWtEO0lBQ2xELGFBQWE7UUFDWCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsd0NBQXdDO0lBRXhDLG9DQUFvQztJQUNwQyxVQUFVLENBQUMsS0FBVTtRQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELGtHQUFrRztJQUNsRyxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCw4RkFBOEY7SUFDOUYsaUJBQWlCLENBQUMsRUFBTztRQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN4QixDQUFDOzs0R0F0UVUsZUFBZSxrQkFnRE0sZUFBZTtnR0FoRHBDLGVBQWUsa3hCQU5mLENBQUM7WUFDVixPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDO1lBQzlDLEtBQUssRUFBRSxJQUFJO1NBQ1osQ0FBQyxrRUFHUyxvQkFBb0IsZ0RDckNqQyx3cFRBeU1jOzJGRHJLRCxlQUFlO2tCQVYzQixTQUFTOytCQUNFLGdCQUFnQixhQUdmLENBQUM7NEJBQ1YsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCLENBQUM7NEJBQzlDLEtBQUssRUFBRSxJQUFJO3lCQUNaLENBQUM7OzBCQWtEVyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGVBQWU7OzBCQUNsQyxRQUFRO29FQWhEK0IsTUFBTTtzQkFBekQsU0FBUzt1QkFBQyxvQkFBb0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBU3pDLE1BQU07c0JBQWQsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUlHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFHRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUlJLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFHRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkLCBPcHRpb25hbCwgZm9yd2FyZFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbi8vaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuLy9pbXBvcnQgeyBBY3RpdmVEaXJlY3RvcnlTZXJ2aWNlLCBVc2VyIH0gZnJvbSAnQGNsZWF2ZWxhbmRwcmljZS9uZ3gtbGliL2FjdGl2ZS1kaXJlY3RvcnknO1xyXG5cclxuaW1wb3J0IHsgQ29udGVudENoYW5nZSwgQmx1ciwgRm9jdXMsIEVkaXRvckNoYW5nZUNvbnRlbnQsIEVkaXRvckNoYW5nZVNlbGVjdGlvbiwgU2VsZWN0aW9uQ2hhbmdlLCBRdWlsbEVkaXRvckNvbXBvbmVudCB9IGZyb20gJ25neC1xdWlsbCc7XHJcblxyXG4vL2ltcG9ydCAncXVpbGwtbWVudGlvbic7XHJcblxyXG4vLyNyZWdpb24gTW92ZWQgdG8gY2xpZW50IHJlc3BvbnNpYmlsaXR5XHJcbi8vaW1wb3J0IFF1aWxsIGZyb20gJ3F1aWxsJztcclxuXHJcbi8vIFRoaXMgZG9lc24ndCB3b3JrIHdoZW4gZG9uZSBmcm9tIHRoZSBsaWJyYXJ5IC0gaXQgbXVzdCBiZSBkb25lIGZyb20gdGhlIGNsaWVudCBhcHBcclxuLy9pbXBvcnQgSW1hZ2VSZXNpemUgZnJvbSAncXVpbGwtaW1hZ2UtcmVzaXplLW1vZHVsZSc7XHJcbi8vUXVpbGwucmVnaXN0ZXIoJ21vZHVsZXMvaW1hZ2VSZXNpemUnLCBJbWFnZVJlc2l6ZSk7XHJcblxyXG4vLyBUcmVhdGluZyBJbWFnZURyb3AgdGhlIHNhbWUgd2F5IGFzIEltYWdlUmVzaXplLCBldmVuIHRob3VnaCBpdCBkb2Vzbid0IGhhdmUgdGhlIHNhbWUgcHJvYmxlbSBkZXNjcmliZWQgYWJvdmVcclxuLy9pbXBvcnQgeyBJbWFnZURyb3AgfSBmcm9tICdxdWlsbC1pbWFnZS1kcm9wLW1vZHVsZSc7XHJcblxyXG4vLyNlbmRyZWdpb25cclxuXHJcbmltcG9ydCB7IENvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVsL2NvbmZpZyc7XHJcbmltcG9ydCB7IERpYWxvZ0RhdGEgfSBmcm9tICcuLi8uLi9tb2RlbC9kaWFsb2ctZGF0YSc7XHJcbmltcG9ydCB7IFJhd0NvbXBvbmVudCB9IGZyb20gJy4uL3Jhdy9yYXcuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY3BxdWlsbC1lZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2VkaXRvci5jb21wb25lbnQuY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbe1xyXG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBFZGl0b3JDb21wb25lbnQpLFxyXG4gICAgbXVsdGk6IHRydWVcclxuICB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgQFZpZXdDaGlsZChRdWlsbEVkaXRvckNvbXBvbmVudCwgeyBzdGF0aWM6IGZhbHNlIH0pIGVkaXRvcjogUXVpbGxFZGl0b3JDb21wb25lbnQgfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8vI3JlZ2lvbiBDb250cm9sVmFsdWVBY2Nlc3NvciBzdHVmZlxyXG4gIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzUwNjE4MDUwL2hvdy10by1jcmVhdGUtY3VzdG9tLWlucHV0LWNvbXBvbmVudC13aXRoLW5nbW9kZWwtd29ya2luZy1pbi1hbmd1bGFyLTZcclxuICB2YWx1ZTogYW55OyAvLyBzdHJpbmdcclxuICBvbkNoYW5nZTogKF86IGFueSkgPT4gdm9pZCA9IChfOiBhbnkpID0+IHt9OyAvLyBJbnZva2VkIHdoZW4gdGhlIG1vZGVsIGhhcyBiZWVuIGNoYW5nZWRcclxuICBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTsgLy8gSW52b2tlZCB3aGVuIHRoZSBtb2RlbCBoYXMgYmVlbiB0b3VjaGVkXHJcbiAgLy8jZW5kcmVnaW9uXHJcbiAgXHJcbiAgQElucHV0KCkgY29uZmlnOiBDb25maWcgfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICAvL0BJbnB1dCgpIHVzZXJzOiBVc2VyW10gfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8vI3JlZ2lvbiBUaGVzZSBjYW4gYmUgcGFzc2VkIGluIGFzIEBJbnB1dCgpLCBvciB1c2UgdmFsdWVzIGZyb20gY29uZmlnXHJcbiAgQElucHV0KCkgZm9ybWF0ITogJ29iamVjdCcgfCAnaHRtbCcgfCAndGV4dCcgfCAnanNvbic7XHJcbiAgQElucHV0KCkgaGVpZ2h0ITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHdpZHRoITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGZ1bGxzY3JlZW5IZWlnaHQhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZnVsbHNjcmVlbldpZHRoITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGZ1bGxzY3JlZW5Nb2RlITogJ2V4cGFuZCcgfCAncG9wb3V0JztcclxuXHJcbiAgQElucHV0KCkgZW5hYmxlVG9vbHRpcHM6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgZnVsbHNjcmVlbjogYm9vbGVhbiB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBhcHBseVJlYWRvbmx5U3R5bGU6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgc2hvd1Rvb2xiYXI6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgc2hvd0JvcmRlcjogYm9vbGVhbiB8IHVuZGVmaW5lZDtcclxuXHJcbiAgLy8jcmVnaW9uIE9wdGlvbmFsIFF1aWxsIG1vZHVsZXNcclxuICBASW5wdXQoKSBpbWFnZVJlc2l6ZU1vZHVsZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBpbWFnZURyb3BNb2R1bGU6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcbiAgLy9ASW5wdXQoKSBtZW50aW9uTW9kdWxlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIHN5bnRheE1vZHVsZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcclxuICAvLyNlbmRyZWdpb25cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgQE91dHB1dCgpIGZ1bGxzY3JlZW5DaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICAvLyNyZWdpb24gUGFzc3Rocm91Z2ggZXZlbnRzXHJcbiAgQE91dHB1dCgpIG9uQmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8Qmx1cj4oKTtcclxuICBAT3V0cHV0KCkgb25Db250ZW50Q2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q29udGVudENoYW5nZT4oKTtcclxuICBAT3V0cHV0KCkgb25FZGl0b3JDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxFZGl0b3JDaGFuZ2VDb250ZW50IHwgRWRpdG9yQ2hhbmdlU2VsZWN0aW9uPigpO1xyXG4gIEBPdXRwdXQoKSBvbkVkaXRvckNyZWF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uRm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyPEZvY3VzPigpO1xyXG4gIEBPdXRwdXQoKSBvblNlbGVjdGlvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdGlvbkNoYW5nZT4oKTtcclxuICAvLyNlbmRyZWdpb25cclxuICBcclxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHJpdmF0ZSBkYXRhOiBEaWFsb2dEYXRhLFxyXG4gICAgICAgICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8RWRpdG9yQ29tcG9uZW50PixcclxuICAgICAgICAgICAgICAvL3ByaXZhdGUgYWN0aXZlRGlyZWN0b3J5U2VydmljZTogQWN0aXZlRGlyZWN0b3J5U2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nKSB7ICBcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbml0aWFsaXplKCk7XHJcbiAgICBcclxuICAgIC8qaWYgKCF0aGlzLnVzZXJzKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlRGlyZWN0b3J5U2VydmljZS5nZXRVc2VycygpLnN1YnNjcmliZSh1c2VycyA9PlxyXG4gICAgICAgIHRoaXMudXNlcnMgPSB1c2Vyc1xyXG4gICAgICApO1xyXG4gICAgfSovXHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb25maWcgPSB0aGlzLmNvbmZpZyA/PyB0aGlzLmRhdGE/LmNvbmZpZyA/PyBuZXcgQ29uZmlnKCk7XHJcblxyXG4gICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUgPz8gdGhpcy5kYXRhPy52YWx1ZTtcclxuXHJcbiAgICAvLyBNb3ZlZCB0byBjbGllbnQgcmVzcG9uc2liaWxpdHlcclxuICAgIC8qaWYgKHRoaXMuaW1hZ2VEcm9wTW9kdWxlKSB7XHJcbiAgICAgIFF1aWxsLnJlZ2lzdGVyKCdtb2R1bGVzL2ltYWdlRHJvcCcsIEltYWdlRHJvcCk7XHJcbiAgICB9Ki9cclxuXHJcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5wbGFjZWhvbGRlciA/PyB0aGlzLmRhdGE/LnBsYWNlaG9sZGVyO1xyXG4gICAgLy90aGlzLnVzZXJzID0gdGhpcy51c2VycyA/PyB0aGlzLmRhdGE/LnVzZXJzO1xyXG5cclxuICAgIHRoaXMuaW1hZ2VEcm9wTW9kdWxlID0gdGhpcy5pbWFnZURyb3BNb2R1bGUgPz8gdGhpcy5kYXRhPy5pbWFnZURyb3BNb2R1bGUgPz8gdGhpcy5jb25maWcuaW1hZ2VEcm9wTW9kdWxlO1xyXG4gICAgdGhpcy5pbWFnZVJlc2l6ZU1vZHVsZSA9IHRoaXMuaW1hZ2VSZXNpemVNb2R1bGUgPz8gdGhpcy5kYXRhPy5pbWFnZVJlc2l6ZU1vZHVsZSA/PyB0aGlzLmNvbmZpZy5pbWFnZVJlc2l6ZU1vZHVsZTtcclxuICAgIHRoaXMuc3ludGF4TW9kdWxlID0gdGhpcy5zeW50YXhNb2R1bGUgPz8gdGhpcy5kYXRhPy5zeW50YXhNb2R1bGUgPz8gdGhpcy5jb25maWcuc3ludGF4TW9kdWxlO1xyXG5cclxuICAgIHRoaXMuZm9ybWF0ID0gdGhpcy5mb3JtYXQgPz8gdGhpcy5kYXRhPy5mb3JtYXQgPz8gdGhpcy5jb25maWcuZm9ybWF0O1xyXG4gICAgdGhpcy5oZWlnaHQgPSB0aGlzLmhlaWdodCA/PyB0aGlzLmRhdGE/LmhlaWdodCA/PyB0aGlzLmNvbmZpZy5oZWlnaHQ7XHJcbiAgICB0aGlzLndpZHRoID0gdGhpcy53aWR0aCA/PyB0aGlzLmRhdGE/LndpZHRoID8/IHRoaXMuY29uZmlnLndpZHRoO1xyXG4gICAgdGhpcy5mdWxsc2NyZWVuSGVpZ2h0ID0gdGhpcy5mdWxsc2NyZWVuSGVpZ2h0ID8/IHRoaXMuZGF0YT8ubWF4SGVpZ2h0ID8/IHRoaXMuY29uZmlnLmZ1bGxzY3JlZW5IZWlnaHQ7XHJcbiAgICB0aGlzLmZ1bGxzY3JlZW5XaWR0aCA9IHRoaXMuZnVsbHNjcmVlbldpZHRoID8/IHRoaXMuZGF0YT8ubWF4V2lkdGggPz8gdGhpcy5jb25maWcuZnVsbHNjcmVlbldpZHRoO1xyXG4gICAgdGhpcy5mdWxsc2NyZWVuTW9kZSA9IHRoaXMuZnVsbHNjcmVlbk1vZGUgPz8gdGhpcy5kYXRhPy5mdWxsc2NyZWVuTW9kZSA/PyB0aGlzLmNvbmZpZy5mdWxsc2NyZWVuTW9kZTtcclxuXHJcbiAgICB0aGlzLmVuYWJsZVRvb2x0aXBzID0gdGhpcy5lbmFibGVUb29sdGlwcyAhPT0gdW5kZWZpbmVkID9cclxuICAgICAgdGhpcy5lbmFibGVUb29sdGlwcyA6XHJcbiAgICAgIHRoaXMuZGF0YT8uZW5hYmxlVG9vbHRpcHMgPz8gdGhpcy5jb25maWcuZW5hYmxlVG9vbHRpcHM7XHJcblxyXG4gICAgdGhpcy5mdWxsc2NyZWVuID0gdGhpcy5mdWxsc2NyZWVuICE9PSB1bmRlZmluZWQgP1xyXG4gICAgICB0aGlzLmZ1bGxzY3JlZW4gOlxyXG4gICAgICB0aGlzLmRhdGE/LmZ1bGxzY3JlZW4gPz8gdGhpcy5jb25maWcuZnVsbHNjcmVlbjtcclxuXHJcbiAgICB0aGlzLnJlYWRvbmx5ID0gdGhpcy5yZWFkb25seSAhPT0gdW5kZWZpbmVkID9cclxuICAgICAgdGhpcy5yZWFkb25seSA6XHJcbiAgICAgIHRoaXMuZGF0YT8ucmVhZG9ubHkgPz8gdGhpcy5jb25maWcucmVhZG9ubHk7XHJcblxyXG4gICAgdGhpcy5hcHBseVJlYWRvbmx5U3R5bGUgPSB0aGlzLmFwcGx5UmVhZG9ubHlTdHlsZSAhPT0gdW5kZWZpbmVkID9cclxuICAgICAgdGhpcy5hcHBseVJlYWRvbmx5U3R5bGUgOlxyXG4gICAgICB0aGlzLmRhdGE/LmFwcGx5UmVhZG9ubHlTdHlsZSA/PyB0aGlzLmNvbmZpZy5hcHBseVJlYWRvbmx5U3R5bGU7XHJcblxyXG4gICAgdGhpcy5zaG93VG9vbGJhciA9IHRoaXMuc2hvd1Rvb2xiYXIgIT09IHVuZGVmaW5lZCA/XHJcbiAgICAgIHRoaXMuc2hvd1Rvb2xiYXIgOlxyXG4gICAgICB0aGlzLmRhdGE/LnNob3dUb29sYmFyID8/IHRoaXMuY29uZmlnLnNob3dUb29sYmFyO1xyXG5cclxuICAgIHRoaXMuc2hvd0JvcmRlciA9IHRoaXMuc2hvd0JvcmRlciAhPT0gdW5kZWZpbmVkID9cclxuICAgICAgdGhpcy5zaG93Qm9yZGVyIDpcclxuICAgICAgdGhpcy5kYXRhPy5zaG93Qm9yZGVyID8/IHRoaXMuY29uZmlnLnNob3dCb3JkZXI7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVGdWxsc2NyZWVuKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZnVsbHNjcmVlbk1vZGUgPT09ICdleHBhbmQnKSB7XHJcbiAgICAgICAgdGhpcy5mdWxsc2NyZWVuID0gIXRoaXMuZnVsbHNjcmVlbjtcclxuICAgICAgICB0aGlzLmZ1bGxzY3JlZW5DaGFuZ2VkLmVtaXQodGhpcy5mdWxsc2NyZWVuKTtcclxuICAgICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmZ1bGxzY3JlZW4pIHtcclxuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh0aGlzLnZhbHVlKTtcclxuICAgICAgICAgIHRoaXMuZnVsbHNjcmVlbkNoYW5nZWQuZW1pdChmYWxzZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgZGF0YTogRGlhbG9nRGF0YSA9IHtcclxuXHJcbiAgICAgICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcclxuICAgICAgICAgIGNvbmZpZzogdGhpcy5jb25maWcsXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy5wbGFjZWhvbGRlcixcclxuICAgICAgICAgIGZvcm1hdDogdGhpcy5mb3JtYXQsXHJcbiAgICAgICAgICBoZWlnaHQ6IHRoaXMuZnVsbHNjcmVlbkhlaWdodCxcclxuICAgICAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICAgICAgICBtYXhIZWlnaHQ6IHRoaXMuZnVsbHNjcmVlbkhlaWdodCxcclxuICAgICAgICAgIG1heFdpZHRoOiAnMTAwJScsXHJcbiAgICAgICAgICBlbmFibGVUb29sdGlwczogdGhpcy5lbmFibGVUb29sdGlwcyEsXHJcbiAgICAgICAgICBmdWxsc2NyZWVuOiB0cnVlLFxyXG4gICAgICAgICAgZnVsbHNjcmVlbk1vZGU6IHRoaXMuZnVsbHNjcmVlbk1vZGUsXHJcbiAgICAgICAgICByZWFkb25seTogdGhpcy5yZWFkb25seSEsXHJcbiAgICAgICAgICBhcHBseVJlYWRvbmx5U3R5bGU6IHRoaXMuYXBwbHlSZWFkb25seVN0eWxlISxcclxuICAgICAgICAgIHNob3dUb29sYmFyOiB0aGlzLnNob3dUb29sYmFyISxcclxuICAgICAgICAgIHNob3dCb3JkZXI6IHRoaXMuc2hvd0JvcmRlciEsXHJcbiAgICAgICAgICBpbWFnZVJlc2l6ZU1vZHVsZTogdGhpcy5pbWFnZVJlc2l6ZU1vZHVsZSEsXHJcbiAgICAgICAgICBpbWFnZURyb3BNb2R1bGU6IHRoaXMuaW1hZ2VEcm9wTW9kdWxlISxcclxuICAgICAgICAgIHN5bnRheE1vZHVsZTogdGhpcy5zeW50YXhNb2R1bGUhXHJcbiAgICAgICAgICAvL3VzZXJzOiB0aGlzLnVzZXJzXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5kaWFsb2cub3BlbihFZGl0b3JDb21wb25lbnQsIHtcclxuICAgICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgICAgIHdpZHRoOiB0aGlzLmZ1bGxzY3JlZW5XaWR0aCxcclxuICAgICAgICAgIGhlaWdodDogdGhpcy5mdWxsc2NyZWVuSGVpZ2h0LFxyXG4gICAgICAgICAgZGF0YVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgICAuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMudXBkYXRlQ2hhbmdlcygpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmZ1bGxzY3JlZW5DaGFuZ2VkLmVtaXQodHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJhd0VkaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpYWxvZy5vcGVuKFJhd0NvbXBvbmVudCwge1xyXG4gICAgICBkYXRhOiB0aGlzLnZhbHVlLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgIGhlaWdodDogJzkwJScsXHJcbiAgICAgIHdpZHRoOiAnMTAwJSdcclxuICAgIH0pXHJcbiAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgLnN1YnNjcmliZSh2YWx1ZSA9PiB7XHJcbiAgICAgIGlmICh2YWx1ZSA9PT0gJ19fRE8hIU5PVCEhVVBEQVRFX18nKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHRvb2x0aXAodmFsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuZW5hYmxlVG9vbHRpcHMgPyB2YWwgOiAnJztcclxuICB9XHJcblxyXG4gIGdldCBtb2R1bGVzKCkge1xyXG4gICAgLy9pZiAoIXRoaXMudXNlcnMpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxyXG5cclxuICAgIGNvbnN0IG1vZHVsZXMgPSB7IH07XHJcblxyXG4gICAgaWYgKCF0aGlzLnNob3dUb29sYmFyKSB7XHJcbiAgICAgIG1vZHVsZXNbJ3Rvb2xiYXInXSA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmltYWdlUmVzaXplTW9kdWxlKSB7XHJcbiAgICAgIG1vZHVsZXNbJ2ltYWdlUmVzaXplJ10gPSB7fTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pbWFnZURyb3BNb2R1bGUpIHtcclxuICAgICAgbW9kdWxlc1snaW1hZ2VEcm9wJ10gPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnN5bnRheE1vZHVsZSkge1xyXG4gICAgICBtb2R1bGVzWydzeW50YXgnXSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyppZiAodGhpcy5tZW50aW9uTW9kdWxlKSB7XHJcbiAgICAgIG1vZHVsZXNbJ21lbnRpb24nXSA9IHtcclxuICAgICAgICBhbGxvd2VkQ2hhcnM6IC9eW0EtWmEtelxcc8OFw4TDlsOlw6TDtl0qJC8sXHJcblxyXG4gICAgICAgIG9uU2VsZWN0OiAoaXRlbTogRE9NU3RyaW5nTWFwLCBpbnNlcnRJdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yIS5xdWlsbEVkaXRvclxyXG4gICAgICAgICAgaW5zZXJ0SXRlbShpdGVtKVxyXG4gICAgICAgICAgLy8gbmVjZXNzYXJ5IGJlY2F1c2UgcXVpbGwtbWVudGlvbiB0cmlnZ2VycyBjaGFuZ2VzIGFzICdhcGknIGluc3RlYWQgb2YgJ3VzZXInXHJcbiAgICAgICAgICBlZGl0b3IuaW5zZXJ0VGV4dChlZGl0b3IuZ2V0TGVuZ3RoKCkgLSAxLCAnJywgJ3VzZXInKVxyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHNvdXJjZTogKHNlYXJjaFRlcm06IHN0cmluZywgcmVuZGVyTGlzdDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoc2VhcmNoVGVybS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgcmVuZGVyTGlzdCh0aGlzLnVzZXJzPy5tYXAodSA9PiAoeyB2YWx1ZTogYCR7dS5kaXNwbGF5TmFtZX0gKCR7dS5zQU1BY2NvdW50TmFtZS50b0xvd2VyQ2FzZSgpfSlgIH0pKSwgc2VhcmNoVGVybSlcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoZXM6IGFueVtdID0gW11cclxuXHJcbiAgICAgICAgICAgIHRoaXMudXNlcnMhLmZvckVhY2goKGVudHJ5KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgZW50cnkuZGlzcGxheU5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaFRlcm0udG9Mb3dlckNhc2UoKSkgIT09IC0xIHx8XHJcbiAgICAgICAgICAgICAgICBlbnRyeS5zQU1BY2NvdW50TmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2Yoc2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpKSAhPT0gLTFcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgbWF0Y2hlcy5wdXNoKHsgdmFsdWU6IGAke2VudHJ5LmRpc3BsYXlOYW1lfSAoJHtlbnRyeS5zQU1BY2NvdW50TmFtZS50b0xvd2VyQ2FzZSgpfSlgIH0pXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgICAgcmVuZGVyTGlzdChtYXRjaGVzLCBzZWFyY2hUZXJtKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH0qL1xyXG5cclxuICAgIHJldHVybiBtb2R1bGVzO1xyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIENvbnRyb2xWYWx1ZUFjY2Vzc29yIG1ldGhvZHNcclxuICAvLyBNZXRob2QgdGhhdCBpcyBpbnZva2VkIG9uIGFuIHVwZGF0ZSBvZiBhIG1vZGVsLlxyXG4gIHVwZGF0ZUNoYW5nZXMoKSB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIENvbnRyb2xWYWx1ZUFjY2Vzc29yIE92ZXJyaWRlc1xyXG5cclxuICAvLyBXcml0ZXMgYSBuZXcgaXRlbSB0byB0aGUgZWxlbWVudC5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICB0aGlzLnVwZGF0ZUNoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIC8vIFJlZ2lzdGVycyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCB3aGVuIHRoZSBjb250cm9sJ3MgdmFsdWUgY2hhbmdlcyBpbiB0aGUgVUkuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIC8vIFJlZ2lzdGVycyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCB3aGVuIHRoZSBjb250cm9sIHJlY2VpdmVzIGEgYmx1ciBldmVudC5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcbn0iLCI8bmctY29udGFpbmVyPlxyXG4gICAgPGZvcm0+XHJcbiAgICAgICAgPHF1aWxsLWVkaXRvciBuYW1lPVwiZWRpdG9yXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZUNoYW5nZXMoKVwiXHJcblxyXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICBbZm9ybWF0XT1cImZvcm1hdFwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiZnVsbHNjcmVlbiA/IGZ1bGxzY3JlZW5IZWlnaHQgOiBoZWlnaHRcIlxyXG4gICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiZnVsbHNjcmVlbiA/IGZ1bGxzY3JlZW5XaWR0aCA6IHdpZHRoXCJcclxuICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgW2NsYXNzLnJlYWRvbmx5XT1cInJlYWRvbmx5ICYmIGFwcGx5UmVhZG9ubHlTdHlsZVwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5uby10b29sYmFyXT1cIiFzaG93VG9vbGJhclwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5uby1ib3JkZXJdPVwiIXNob3dCb3JkZXJcIlxyXG4gICAgICAgICAgICBbbW9kdWxlc109XCJtb2R1bGVzXCJcclxuICAgIFxyXG4gICAgICAgICAgICAob25CbHVyKT1cIm9uQmx1ci5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgICAob25Db250ZW50Q2hhbmdlZCk9XCJvbkNvbnRlbnRDaGFuZ2VkLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChvbkVkaXRvckNoYW5nZWQpPVwib25FZGl0b3JDaGFuZ2VkLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChvbkVkaXRvckNyZWF0ZWQpPVwib25FZGl0b3JDcmVhdGVkLmVtaXQoKVwiXHJcbiAgICAgICAgICAgIChvbkZvY3VzKT1cIm9uRm9jdXMuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgKG9uU2VsZWN0aW9uQ2hhbmdlZCk9XCJvblNlbGVjdGlvbkNoYW5nZWQuZW1pdCgkZXZlbnQpXCI+XHJcbiAgICBcclxuICAgICAgICAgICAgPGRpdiBxdWlsbC1lZGl0b3ItdG9vbGJhciAqbmdJZj1cInNob3dUb29sYmFyXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRvb2xiYXJcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZWRpdG9yU2l6ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3F1aWxsLWVkaXRvcj5cclxuICAgIDwvZm9ybT5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48bmctdGVtcGxhdGUgI3Rvb2xiYXI+XHJcbiAgICA8ZGl2PlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZm9udFN0eWxlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJibG9ja1N0eWxlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkaW5nU3R5bGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxpc3RTdHlsZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic2NyaXB0U3R5bGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImluZGVudFN0eWxlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJydGxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZvbnRTaXplXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkaW5nXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2xvclwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZm9udFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYWxpZ25cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNsZWFuXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG50LWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJmb3JtdWxhXCI+PC9udC1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJtZWRpYVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2ZvbnRTdHlsZT5cclxuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiICpuZ0lmPVwiY29uZmlnIS5zaG93Rm9udFN0eWxlXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWJvbGRcIiAgICAgICpuZ0lmPVwiY29uZmlnIS5idXR0b25zLmJvbGRcIiAgICAgIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnIS50b29sdGlwcy5ib2xkKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1pdGFsaWNcIiAgICAqbmdJZj1cImNvbmZpZyEuYnV0dG9ucy5pdGFsaWNcIiAgICBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZyEudG9vbHRpcHMuaXRhbGljKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC11bmRlcmxpbmVcIiAqbmdJZj1cImNvbmZpZyEuYnV0dG9ucy51bmRlcmxpbmVcIiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZyEudG9vbHRpcHMudW5kZXJsaW5lKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1zdHJpa2VcIiAgICAqbmdJZj1cImNvbmZpZyEuYnV0dG9ucy5zdHJpa2VcIiAgICBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZyEudG9vbHRpcHMuc3RyaWtlKVwiPjwvYnV0dG9uPlxyXG4gICAgPC9zcGFuPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNibG9ja1N0eWxlPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCIgKm5nSWY9XCJjb25maWchLnNob3dCbG9ja1N0eWxlXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWJsb2NrcXVvdGVcIiAqbmdJZj1cImNvbmZpZyEuYnV0dG9ucy5ibG9ja3F1b3RlXCIgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWchLnRvb2x0aXBzLmJsb2NrcXVvdGUpXCI+PC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWNvZGUtYmxvY2tcIiAqbmdJZj1cImNvbmZpZyEuYnV0dG9ucy5jb2RlYmxvY2tcIiAgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWchLnRvb2x0aXBzLmNvZGVibG9jaylcIj48L2J1dHRvbj5cclxuICAgIDwvc3Bhbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjaGVhZGluZ1N0eWxlPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCIgKm5nSWY9XCJjb25maWchLnNob3dRdWlja0hlYWRpbmdTdHlsZVwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1oZWFkZXJcIiB2YWx1ZT1cIjFcIiAqbmdJZj1cImNvbmZpZyEuYnV0dG9ucy5oMVwiIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnIS50b29sdGlwcy5oMSlcIj48L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicWwtaGVhZGVyXCIgdmFsdWU9XCIyXCIgKm5nSWY9XCJjb25maWchLmJ1dHRvbnMuaDJcIiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZyEudG9vbHRpcHMuaDIpXCI+PC9idXR0b24+XHJcbiAgICA8L3NwYW4+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2xpc3RTdHlsZT5cclxuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiICpuZ0lmPVwiY29uZmlnIS5zaG93TGlzdFN0eWxlXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWxpc3RcIiB2YWx1ZT1cIm9yZGVyZWRcIiAqbmdJZj1cImNvbmZpZyEuYnV0dG9ucy5vcmRlcmVkXCIgIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnIS50b29sdGlwcy5vcmRlcmVkKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1saXN0XCIgdmFsdWU9XCJidWxsZXRcIiAgKm5nSWY9XCJjb25maWchLmJ1dHRvbnMuYnVsbGV0ZWRcIiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZyEudG9vbHRpcHMuYnVsbGV0ZWQpXCI+PC9idXR0b24+XHJcbiAgICA8L3NwYW4+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3NjcmlwdFN0eWxlPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCIgKm5nSWY9XCJjb25maWchLnNob3dTY3JpcHRTdHlsZVwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1zY3JpcHRcIiB2YWx1ZT1cInN1YlwiICAgKm5nSWY9XCJjb25maWchLmJ1dHRvbnMuc3ViU2NyaXB0XCIgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWchLnRvb2x0aXBzLnN1YlNjcmlwdClcIj48L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicWwtc2NyaXB0XCIgdmFsdWU9XCJzdXBlclwiICpuZ0lmPVwiY29uZmlnIS5idXR0b25zLnN1cGVyU2NyaXB0XCIgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWchLnRvb2x0aXBzLnN1cGVyU2NyaXB0KVwiPjwvYnV0dG9uPlxyXG4gICAgPC9zcGFuPlxyXG48L25nLXRlbXBsYXRlPlxyXG4gICAgXHJcbjxuZy10ZW1wbGF0ZSAjaW5kZW50U3R5bGU+XHJcbiAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIiAqbmdJZj1cImNvbmZpZyEuc2hvd0luZGVudFN0eWxlXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWluZGVudFwiIHZhbHVlPVwiLTFcIiAqbmdJZj1cImNvbmZpZyEuYnV0dG9ucy5kZWNyZWFzZUluZGVudFwiIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnIS50b29sdGlwcy5kZWNyZWFzZUluZGVudClcIj48L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicWwtaW5kZW50XCIgdmFsdWU9XCIrMVwiICpuZ0lmPVwiY29uZmlnIS5idXR0b25zLmluY3JlYXNlSW5kZW50XCIgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWchLnRvb2x0aXBzLmluY3JlYXNlSW5kZW50KVwiPjwvYnV0dG9uPlxyXG4gICAgPC9zcGFuPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNydGw+XHJcbiAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIiAqbmdJZj1cImNvbmZpZyEuYnV0dG9ucy5ydGxcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicWwtZGlyZWN0aW9uXCIgdmFsdWU9XCJydGxcIiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZyEudG9vbHRpcHMucnRsKVwiPjwvYnV0dG9uPlxyXG4gICAgPC9zcGFuPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNmb250U2l6ZT5cclxuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiICpuZ0lmPVwiY29uZmlnIS5idXR0b25zLmZvbnRTaXplXCIgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWchLnRvb2x0aXBzLmZvbnRTaXplKVwiPlxyXG4gICAgICAgIDxzZWxlY3QgY2xhc3M9XCJxbC1zaXplXCI+XHJcbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJzbWFsbFwiPjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHNlbGVjdGVkPjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibGFyZ2VcIj48L29wdGlvbj5cclxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImh1Z2VcIj48L29wdGlvbj5cclxuICAgICAgICA8L3NlbGVjdD5cclxuICAgIDwvc3Bhbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjaGVhZGluZz5cclxuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiICpuZ0lmPVwiY29uZmlnIS5idXR0b25zLmhlYWRpbmdTdHlsZVwiIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnIS50b29sdGlwcy5oZWFkaW5nU3R5bGUpXCI+XHJcbiAgICAgICAgPHNlbGVjdCBjbGFzcz1cInFsLWhlYWRlclwiPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiMVwiPjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiMlwiPjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiM1wiPjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiNFwiPjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiNVwiPjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiNlwiPjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHNlbGVjdGVkPVwic2VsZWN0ZWRcIj48L29wdGlvbj5cclxuICAgICAgICA8L3NlbGVjdD5cclxuICAgIDwvc3Bhbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY29sb3I+XHJcbiAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIiAqbmdJZj1cImNvbmZpZyEuYnV0dG9ucy5jb2xvclwiIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnIS50b29sdGlwcy5jb2xvcilcIj5cclxuICAgICAgICA8c2VsZWN0IGNsYXNzPVwicWwtY29sb3JcIj48L3NlbGVjdD5cclxuICAgICAgICA8c2VsZWN0IGNsYXNzPVwicWwtYmFja2dyb3VuZFwiPjwvc2VsZWN0PlxyXG4gICAgPC9zcGFuPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNmb250PlxyXG4gICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCIgKm5nSWY9XCJjb25maWchLmJ1dHRvbnMuZm9udFwiIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnIS50b29sdGlwcy5mb250KVwiPlxyXG4gICAgICAgIDxzZWxlY3QgY2xhc3M9XCJxbC1mb250XCI+XHJcbiAgICAgICAgICAgIDxvcHRpb24gc2VsZWN0ZWQ+PC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJzZXJpZlwiPjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibW9ub3NwYWNlXCI+PC9vcHRpb24+XHJcbiAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICA8L3NwYW4+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2FsaWduPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCIgKm5nSWY9XCJjb25maWchLmJ1dHRvbnMuYWxpZ25cIiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZyEudG9vbHRpcHMuYWxpZ24pXCI+XHJcbiAgICAgICAgPHNlbGVjdCBjbGFzcz1cInFsLWFsaWduXCI+XHJcbiAgICAgICAgICAgIDxvcHRpb24gc2VsZWN0ZWQ+PC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJjZW50ZXJcIj48L29wdGlvbj5cclxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInJpZ2h0XCI+PC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJqdXN0aWZ5XCI+PC9vcHRpb24+XHJcbiAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICA8L3NwYW4+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2NsZWFuPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCIgKm5nSWY9XCJjb25maWchLmJ1dHRvbnMuY2xlYW5cIiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZyEudG9vbHRpcHMuY2xlYW4pXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWNsZWFuXCI+PC9idXR0b24+XHJcbiAgICA8L3NwYW4+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI21lZGlhPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCIgKm5nSWY9XCJjb25maWchLnNob3dNZWRpYVwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1saW5rXCIgICpuZ0lmPVwiY29uZmlnIS5idXR0b25zLmxpbmtcIiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZyEudG9vbHRpcHMubGluaylcIj48L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicWwtaW1hZ2VcIiAqbmdJZj1cImNvbmZpZyEuYnV0dG9ucy5pbWFnZVwiIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnIS50b29sdGlwcy5pbWFnZSlcIj48L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicWwtdmlkZW9cIiAqbmdJZj1cImNvbmZpZyEuYnV0dG9ucy52aWRlb1wiIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnIS50b29sdGlwcy52aWRlbylcIj48L2J1dHRvbj5cclxuICAgIDwvc3Bhbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZWRpdG9yU2l6ZT5cclxuICAgIDxkaXY+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCIgKm5nSWY9XCJjb25maWchLmJ1dHRvbnMucmF3RWRpdG9yXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gaWQ9XCJyYXdkb2dcIlxyXG4gICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWchLnRvb2x0aXBzLnJhd0VkaXRvcilcIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24gKGNsaWNrKT1cInJhd0VkaXQoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIGNvZGVcclxuICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCIgKm5nSWY9XCJjb25maWchLmJ1dHRvbnMuZWRpdG9yU2l6ZVwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGlkPVwiZnVsbHNjcmVlblwiXHJcbiAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGZ1bGxzY3JlZW4gP1xyXG4gICAgICAgICAgICAgICAgICAgIChmdWxsc2NyZWVuTW9kZSA9PT0gJ2V4cGFuZCcgPyBjb25maWchLnRvb2x0aXBzLm1pbmltaXplIDogY29uZmlnIS50b29sdGlwcy5wb3BpbikgOlxyXG4gICAgICAgICAgICAgICAgICAgIChmdWxsc2NyZWVuTW9kZSA9PT0gJ2V4cGFuZCcgPyBjb25maWchLnRvb2x0aXBzLm1heGltaXplIDogY29uZmlnIS50b29sdGlwcy5wb3BvdXQpKVwiPlxyXG5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAoY2xpY2spPVwidG9nZ2xlRnVsbHNjcmVlbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgZnVsbHNjcmVlbiA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdWxsc2NyZWVuTW9kZSA9PT0gJ2V4cGFuZCcgPyBjb25maWchLmljb25zLm1pbmltaXplIDogY29uZmlnIS5pY29ucy5wb3BpbikgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVsbHNjcmVlbk1vZGUgPT09ICdleHBhbmQnID8gY29uZmlnIS5pY29ucy5tYXhpbWl6ZSA6IGNvbmZpZyEuaWNvbnMucG9wb3V0KVxyXG4gICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZm9ybXVsYT5cclxuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiICpuZ0lmPVwiY29uZmlnIS5idXR0b25zLmZvcm11bGFcIiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZyEudG9vbHRpcHMuZm9ybXVsYSlcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicWwtZm9ybXVsYVwiPjwvYnV0dG9uPlxyXG4gICAgPC9zcGFuPlxyXG48L25nLXRlbXBsYXRlPiJdfQ==