UNPKG

ng-devui

Version:

DevUI components based on Angular

82 lines 19.2 kB
import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, HostBinding, Input, Output, } from '@angular/core'; import { fromEvent, of } from 'rxjs'; import { debounceTime, filter, map } from 'rxjs/operators'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common"; export class ToggleMenuSearchComponent { get width() { return this.inputWidth || 'inherit'; } constructor(el) { this.el = el; this.isShowSearchIcon = true; this.disabled = false; this.spellcheck = false; this.options = []; this.delay = 300; this.searchInputValueChange = new EventEmitter(); this.formatter = (item) => { const str = String(item) ? item.toString() : ''; return typeof item === 'object' ? item[this.filterKey] || '' : str; }; } ngOnInit() { if (!this.searchFn) { this.searchFn = (term) => { return of((this.options ? this.options : []) .map((option, index) => ({ id: index, option })) .filter((item) => this.formatter(item.option).toLowerCase().indexOf(term.toLowerCase()) !== -1)); }; } } ngAfterViewInit() { this.el.nativeElement.focus(); if (!this.filterSubscription) { // 避免重复订阅 this.filterSubscription = fromEvent(this.el.nativeElement, 'input') .pipe(map((e) => e.target.value), filter((term) => !this.disabled && this.searchFn && term.length >= 0), debounceTime(this.delay)) .subscribe((term) => this.searchInputValueChange.emit(term)); } } ngOnDestroy() { if (this.filterSubscription) { this.filterSubscription.unsubscribe(); } } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ToggleMenuSearchComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ToggleMenuSearchComponent, selector: "d-toggle-menu-search", inputs: { searchPlaceholder: "searchPlaceholder", isShowSearchIcon: "isShowSearchIcon", inputValue: "inputValue", inputWidth: "inputWidth", filterKey: "filterKey", maxLength: "maxLength", disabled: "disabled", spellcheck: "spellcheck", options: "options", delay: "delay", formatter: "formatter", searchFn: "searchFn" }, outputs: { searchInputValueChange: "searchInputValueChange" }, host: { properties: { "style.width": "this.width" } }, ngImport: i0, template: "<div class=\"devui-toggle-menu-search\">\r\n <input\r\n name=\"search\"\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n class=\"devui-form-control devui-select-search devui-select-input\"\r\n [value]=\"inputValue || ''\"\r\n [disabled]=\"disabled\"\r\n [spellcheck]=\"spellcheck\"\r\n [maxLength]=\"maxLength\"\r\n [placeholder]=\"searchPlaceholder\"\r\n (trim)=\"(false)\"\r\n />\r\n <span class=\"devui-toggle-menu-search-icon\">\r\n <svg\r\n *ngIf=\"isShowSearchIcon\"\r\n width=\"14px\"\r\n height=\"14px\"\r\n viewBox=\"0 0 14 14\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n class=\"svg-icon-search\"\r\n style=\"vertical-align: middle; margin-top: -4px\"\r\n >\r\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <g transform=\"translate(-1.000000, -1.000000)\">\r\n <path\r\n d=\"M7.30811922,1 C10.7919973,1 13.6162384,3.82424117 13.6162384,7.30811922 C13.6162384,8.72507634 13.149053,10.0329164 12.3603151,11.0860065 L14.7360564,13.4616238 C15.0879812,13.8135487 15.0879812,14.3841316 14.7360564,14.7360564 C14.3841316,15.0879812 13.8135487,15.0879812 13.4616238,14.7360564 L11.0860065,12.3603151 C10.0329164,13.149053 8.72507634,13.6162384 7.30811922,13.6162384 C3.82424117,13.6162384 1,10.7919973 1,7.30811922 C1,3.82424117 3.82424117,1 7.30811922,1 Z M7.31,2.51 C4.6590332,2.51 2.51,4.6590332 2.51,7.31 C2.51,9.9609668 4.6590332,12.11 7.31,12.11 C9.9609668,12.11 12.11,9.9609668 12.11,7.31 C12.11,4.6590332 9.9609668,2.51 7.31,2.51 Z\"\r\n fill-rule=\"nonzero\"\r\n ></path>\r\n </g>\r\n </g>\r\n </svg>\r\n </span>\r\n <ng-content></ng-content>\r\n</div>\r\n", styles: [":host .devui-toggle-menu-search{position:relative;background:transparent}:host .devui-toggle-menu-search input{cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;border:none!important;outline:0}:host .devui-toggle-menu-search-icon{position:absolute;top:0;right:0;z-index:2;display:block;width:28px;height:28px;line-height:28px;text-align:center;pointer-events:none}:host .devui-toggle-menu-search-icon path{fill:var(--devui-icon-text, #808080)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ToggleMenuSearchComponent, decorators: [{ type: Component, args: [{ selector: 'd-toggle-menu-search', changeDetection: ChangeDetectionStrategy.OnPush, preserveWhitespaces: false, template: "<div class=\"devui-toggle-menu-search\">\r\n <input\r\n name=\"search\"\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n class=\"devui-form-control devui-select-search devui-select-input\"\r\n [value]=\"inputValue || ''\"\r\n [disabled]=\"disabled\"\r\n [spellcheck]=\"spellcheck\"\r\n [maxLength]=\"maxLength\"\r\n [placeholder]=\"searchPlaceholder\"\r\n (trim)=\"(false)\"\r\n />\r\n <span class=\"devui-toggle-menu-search-icon\">\r\n <svg\r\n *ngIf=\"isShowSearchIcon\"\r\n width=\"14px\"\r\n height=\"14px\"\r\n viewBox=\"0 0 14 14\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n class=\"svg-icon-search\"\r\n style=\"vertical-align: middle; margin-top: -4px\"\r\n >\r\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <g transform=\"translate(-1.000000, -1.000000)\">\r\n <path\r\n d=\"M7.30811922,1 C10.7919973,1 13.6162384,3.82424117 13.6162384,7.30811922 C13.6162384,8.72507634 13.149053,10.0329164 12.3603151,11.0860065 L14.7360564,13.4616238 C15.0879812,13.8135487 15.0879812,14.3841316 14.7360564,14.7360564 C14.3841316,15.0879812 13.8135487,15.0879812 13.4616238,14.7360564 L11.0860065,12.3603151 C10.0329164,13.149053 8.72507634,13.6162384 7.30811922,13.6162384 C3.82424117,13.6162384 1,10.7919973 1,7.30811922 C1,3.82424117 3.82424117,1 7.30811922,1 Z M7.31,2.51 C4.6590332,2.51 2.51,4.6590332 2.51,7.31 C2.51,9.9609668 4.6590332,12.11 7.31,12.11 C9.9609668,12.11 12.11,9.9609668 12.11,7.31 C12.11,4.6590332 9.9609668,2.51 7.31,2.51 Z\"\r\n fill-rule=\"nonzero\"\r\n ></path>\r\n </g>\r\n </g>\r\n </svg>\r\n </span>\r\n <ng-content></ng-content>\r\n</div>\r\n", styles: [":host .devui-toggle-menu-search{position:relative;background:transparent}:host .devui-toggle-menu-search input{cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;border:none!important;outline:0}:host .devui-toggle-menu-search-icon{position:absolute;top:0;right:0;z-index:2;display:block;width:28px;height:28px;line-height:28px;text-align:center;pointer-events:none}:host .devui-toggle-menu-search-icon path{fill:var(--devui-icon-text, #808080)}\n"] }] }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { searchPlaceholder: [{ type: Input }], isShowSearchIcon: [{ type: Input }], inputValue: [{ type: Input }], inputWidth: [{ type: Input }], filterKey: [{ type: Input }], maxLength: [{ type: Input }], disabled: [{ type: Input }], spellcheck: [{ type: Input }], options: [{ type: Input }], delay: [{ type: Input }], formatter: [{ type: Input }], searchFn: [{ type: Input }], searchInputValueChange: [{ type: Output }], width: [{ type: HostBinding, args: ['style.width'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLW1lbnUtc2VhcmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2RldnVpL3RvZ2dsZS1tZW51L3RvZ2dsZS1tZW51LXNlYXJjaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9kZXZ1aS90b2dnbGUtbWVudS90b2dnbGUtbWVudS1zZWFyY2guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUdMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTRCLFNBQVMsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQVMzRCxNQUFNLE9BQU8seUJBQXlCO0lBOEJwQyxJQUNJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxVQUFVLElBQUksU0FBUyxDQUFDO0lBQ3RDLENBQUM7SUFJRCxZQUFtQixFQUFjO1FBQWQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQW5DeEIscUJBQWdCLEdBQUcsSUFBSSxDQUFDO1FBS3hCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsVUFBSyxHQUFHLEdBQUcsQ0FBQztRQW1CWCwyQkFBc0IsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBU3pELElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN4QixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lB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YW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0QmluZGluZyxcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBmcm9tRXZlbnQsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2QtdG9nZ2xlLW1lbnUtc2VhcmNoJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdG9nZ2xlLW1lbnUtc2VhcmNoLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFtgLi90b2dnbGUtbWVudS1zZWFyY2guY29tcG9uZW50LnNjc3NgXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRvZ2dsZU1lbnVTZWFyY2hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgc2VhcmNoUGxhY2Vob2xkZXI6IHN0cmluZztcclxuICBASW5wdXQoKSBpc1Nob3dTZWFyY2hJY29uID0gdHJ1ZTtcclxuICBASW5wdXQoKSBpbnB1dFZhbHVlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaW5wdXRXaWR0aDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGZpbHRlcktleTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG1heExlbmd0aDogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc3BlbGxjaGVjayA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIG9wdGlvbnMgPSBbXTtcclxuICBASW5wdXQoKSBkZWxheSA9IDMwMDtcclxuICAvKipcclxuICAgKiDjgJDlj6/pgInjgJHlhrPlrprkuIvmi4nmoYbmsqHpobnmloflrZflpoLkvZXmmL7npLrvvIzpu5jorqTmmL7npLpmaWx0ZXJLZXnlrZfmrrXmiJbogIXmnKzouqvnmoTlgLxcclxuICAgKi9cclxuICAvLyBAZGVwcmVjYXRlZFxyXG4gIEBJbnB1dCgpIGZvcm1hdHRlcjogKGl0ZW06IGFueSkgPT4gc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIOOAkOWPr+mAieOAkeaQnOe0ouWHveaVsO+8jOW9k+mcgOimgeiHquWumuS5ieS4i+aLiemAieaLqei/h+a7pOinhOWImeaXtuWPr+S7peS9v+eUqFxyXG4gICAqICDor7fkv53or4Hov5Tlm57lgLzmnIlpZOWSjG9wdGlvbuWtl+aute+8jGlk5piv56Gu5L+d5bCk5YW25aSa6YCJ55qE5pe25YCZ6IO95q2j56Gu57Si5byV5a+55bqU6YCJ6aG5XHJcbiAgICogIOeugOWNleWunueOsOWPguiAg++8mlxyXG4gICAqICBzZWFyY2ggPSAodGVybSkgPT4ge1xyXG4gICAqICAgIHJldHVybiBvZihcclxuICAgKiAgICAgW0xpbHksIE1heSwgSm9yc2gsIFNoaXdhLCBOYW50aF1cclxuICAgKiAgICAgLm1hcCgob3B0aW9uLCBpbmRleCkgPT4gKHtpZDogaW5kZXgsIG9wdGlvbjogb3B0aW9ufSkpXHJcbiAgICogICAgIC5maWx0ZXIoaXRlbSA9PiBpdGVtLm9wdGlvbi5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0ZXJtLnRvTG93ZXJDYXNlKCkpICE9PSAtMSlcclxuICAgKiAgICk7XHJcbiAgICogIH1cclxuICAgKi9cclxuICBASW5wdXQoKSBzZWFyY2hGbjogKHRlcm06IHN0cmluZykgPT4gT2JzZXJ2YWJsZTxBcnJheTx7IGlkOiBzdHJpbmcgfCBudW1iZXI7IG9wdGlvbjogYW55IH0+PjtcclxuICBAT3V0cHV0KCkgc2VhcmNoSW5wdXRWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBIb3N0QmluZGluZygnc3R5bGUud2lkdGgnKVxyXG4gIGdldCB3aWR0aCgpIHtcclxuICAgIHJldHVybiB0aGlzLmlucHV0V2lkdGggfHwgJ2luaGVyaXQnO1xyXG4gIH1cclxuXHJcbiAgZmlsdGVyU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbDogRWxlbWVudFJlZikge1xyXG4gICAgdGhpcy5mb3JtYXR0ZXIgPSAoaXRlbSkgPT4ge1xyXG4gICAgICBjb25zdCBzdHIgPSBTdHJpbmcoaXRlbSkgPyBpdGVtLnRvU3RyaW5nKCkgOiAnJztcclxuICAgICAgcmV0dXJuIHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyA/IGl0ZW1bdGhpcy5maWx0ZXJLZXldIHx8ICcnIDogc3RyO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKCF0aGlzLnNlYXJjaEZuKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoRm4gPSAodGVybTogYW55KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG9mKFxyXG4gICAgICAgICAgKHRoaXMub3B0aW9ucyA/IHRoaXMub3B0aW9ucyA6IFtdKVxyXG4gICAgICAgICAgICAubWFwKChvcHRpb24sIGluZGV4KSA9PiAoeyBpZDogaW5kZXgsIG9wdGlvbiB9KSlcclxuICAgICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gdGhpcy5mb3JtYXR0ZXIoaXRlbS5vcHRpb24pLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0ZXJtLnRvTG93ZXJDYXNlKCkpICE9PSAtMSlcclxuICAgICAgICApO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICBpZiAoIXRoaXMuZmlsdGVyU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIC8vIOmBv+WFjemHjeWkjeiuoumYhVxyXG4gICAgICB0aGlzLmZpbHRlclN1YnNjcmlwdGlvbiA9IGZyb21FdmVudCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdpbnB1dCcpXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICBtYXAoKGU6IGFueSkgPT4gZS50YXJnZXQudmFsdWUpLFxyXG4gICAgICAgICAgZmlsdGVyKCh0ZXJtKSA9PiAhdGhpcy5kaXNhYmxlZCAmJiB0aGlzLnNlYXJjaEZuICYmIHRlcm0ubGVuZ3RoID49IDApLFxyXG4gICAgICAgICAgZGVib3VuY2VUaW1lKHRoaXMuZGVsYXkpXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHRlcm0pID0+IHRoaXMuc2VhcmNoSW5wdXRWYWx1ZUNoYW5nZS5lbWl0KHRlcm0pKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMuZmlsdGVyU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJkZXZ1aS10b2dnbGUtbWVudS1zZWFyY2hcIj5cclxuICA8aW5wdXRcclxuICAgIG5hbWU9XCJzZWFyY2hcIlxyXG4gICAgdHlwZT1cInRleHRcIlxyXG4gICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgIGNsYXNzPVwiZGV2dWktZm9ybS1jb250cm9sIGRldnVpLXNlbGVjdC1zZWFyY2ggZGV2dWktc2VsZWN0LWlucHV0XCJcclxuICAgIFt2YWx1ZV09XCJpbnB1dFZhbHVlIHx8ICcnXCJcclxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICBbc3BlbGxjaGVja109XCJzcGVsbGNoZWNrXCJcclxuICAgIFttYXhMZW5ndGhdPVwibWF4TGVuZ3RoXCJcclxuICAgIFtwbGFjZWhvbGRlcl09XCJzZWFyY2hQbGFjZWhvbGRlclwiXHJcbiAgICAodHJpbSk9XCIoZmFsc2UpXCJcclxuICAvPlxyXG4gIDxzcGFuIGNsYXNzPVwiZGV2dWktdG9nZ2xlLW1lbnUtc2VhcmNoLWljb25cIj5cclxuICAgIDxzdmdcclxuICAgICAgKm5nSWY9XCJpc1Nob3dTZWFyY2hJY29uXCJcclxuICAgICAgd2lkdGg9XCIxNHB4XCJcclxuICAgICAgaGVpZ2h0PVwiMTRweFwiXHJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMTQgMTRcIlxyXG4gICAgICB2ZXJzaW9uPVwiMS4xXCJcclxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiXHJcbiAgICAgIGNsYXNzPVwic3ZnLWljb24tc2VhcmNoXCJcclxuICAgICAgc3R5bGU9XCJ2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyBtYXJnaW4tdG9wOiAtNHB4XCJcclxuICAgID5cclxuICAgICAgPGcgc3Ryb2tlPVwibm9uZVwiIHN0cm9rZS13aWR0aD1cIjFcIiBmaWxsPVwibm9uZVwiIGZpbGwtcnVsZT1cImV2ZW5vZGRcIj5cclxuICAgICAgICA8ZyB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTEuMDAwMDAwLCAtMS4wMDAwMDApXCI+XHJcbiAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICBkPVwiTTcuMzA4MTE5MjIsMSBDMTAuNzkxOTk3MywxIDEzLjYxNjIzODQsMy44MjQyNDExNyAxMy42MTYyMzg0LDcuMzA4MTE5MjIgQzEzLjYxNjIzODQsOC43MjUwNzYzNCAxMy4xNDkwNTMsMTAuMDMyOTE2NCAxMi4zNjAzMTUxLDExLjA4NjAwNjUgTDE0LjczNjA1NjQsMTMuNDYxNjIzOCBDMTUuMDg3OTgxMiwxMy44MTM1NDg3IDE1LjA4Nzk4MTIsMTQuMzg0MTMxNiAxNC43MzYwNTY0LDE0LjczNjA1NjQgQzE0LjM4NDEzMTYsMTUuMDg3OTgxMiAxMy44MTM1NDg3LDE1LjA4Nzk4MTIgMTMuNDYxNjIzOCwxNC43MzYwNTY0IEwxMS4wODYwMDY1LDEyLjM2MDMxNTEgQzEwLjAzMjkxNjQsMTMuMTQ5MDUzIDguNzI1MDc2MzQsMTMuNjE2MjM4NCA3LjMwODExOTIyLDEzLjYxNjIzODQgQzMuODI0MjQxMTcsMTMuNjE2MjM4NCAxLDEwLjc5MTk5NzMgMSw3LjMwODExOTIyIEMxLDMuODI0MjQxMTcgMy44MjQyNDExNywxIDcuMzA4MTE5MjIsMSBaIE03LjMxLDIuNTEgQzQuNjU5MDMzMiwyLjUxIDIuNTEsNC42NTkwMzMyIDIuNTEsNy4zMSBDMi41MSw5Ljk2MDk2NjggNC42NTkwMzMyLDEyLjExIDcuMzEsMTIuMTEgQzkuOTYwOTY2OCwxMi4xMSAxMi4xMSw5Ljk2MDk2NjggMTIuMTEsNy4zMSBDMTIuMTEsNC42NTkwMzMyIDkuOTYwOTY2OCwyLjUxIDcuMzEsMi41MSBaXCJcclxuICAgICAgICAgICAgZmlsbC1ydWxlPVwibm9uemVyb1wiXHJcbiAgICAgICAgICA+PC9wYXRoPlxyXG4gICAgICAgIDwvZz5cclxuICAgICAgPC9nPlxyXG4gICAgPC9zdmc+XHJcbiAgPC9zcGFuPlxyXG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuPC9kaXY+XHJcbiJdfQ==