UNPKG

ng-devui

Version:

DevUI components based on Angular

100 lines 24.2 kB
import { __decorate, __metadata } from "tslib"; import { Component, ElementRef, forwardRef, Input, ViewChild } from '@angular/core'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; import { DevConfigService, WithConfig } from 'ng-devui/utils'; import { TextareaDirective } from './textarea.directive'; import * as i0 from "@angular/core"; import * as i1 from "ng-devui/utils"; import * as i2 from "@angular/forms"; import * as i3 from "./textarea.directive"; export class TextareaMaxLengthComponent { constructor(el, devConfigService) { this.el = el; this.devConfigService = devConfigService; this.disabled = false; this.error = false; this.maxLengthBlocker = false; this.rows = 3; this.resize = 'none'; this.styleType = 'default'; this.showGlowStyle = true; this.onChange = (_) => null; this.onTouch = () => null; } ngAfterViewInit() { this.textareaElement = this.el.nativeElement.querySelector('textarea'); } registerOnChange(fn) { this.onChange = fn; } registerOnTouched(fn) { this.onTouch = fn; } setDisabledState(isDisabled) { this.disabled = isDisabled; } writeValue(val) { this.value = val; } valueChanges(val) { this.value = val; this.onChange(val); this.onTouch(); } blurEvent() { const event = new Event('blur', { bubbles: false, cancelable: true }); this.el.nativeElement.dispatchEvent(event); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextareaMaxLengthComponent, deps: [{ token: i0.ElementRef }, { token: i1.DevConfigService }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TextareaMaxLengthComponent, selector: "d-textarea-max-length", inputs: { disabled: "disabled", error: "error", maxLength: "maxLength", maxLengthBlocker: "maxLengthBlocker", placeholder: "placeholder", rows: "rows", maxWidth: "maxWidth", maxHeight: "maxHeight", resize: "resize", styleType: "styleType", showGlowStyle: "showGlowStyle" }, providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TextareaMaxLengthComponent), multi: true, }, ], viewQueries: [{ propertyName: "textareaInstance", first: true, predicate: TextareaDirective, descendants: true }], ngImport: i0, template: "<div\r\n class=\"devui-textarea-container\"\r\n [class.devui-glow-style]=\"showGlowStyle\"\r\n [class.devui-gray-style]=\"styleType === 'gray'\"\r\n [class.error]=\"error\"\r\n [style.resize]=\"disabled ? 'none' : resize\"\r\n [style.max-width]=\"maxWidth\"\r\n [style.max-height]=\"maxHeight\"\r\n>\r\n <textarea\r\n dTextarea\r\n [disabled]=\"disabled\"\r\n [error]=\"error\"\r\n [maxLength]=\"maxLength\"\r\n [maxLengthBlocker]=\"maxLengthBlocker\"\r\n [maxLengthCounter]=\"true\"\r\n [placeholder]=\"placeholder\"\r\n [rows]=\"rows\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"valueChanges($event)\"\r\n (blur)=\"blurEvent()\"\r\n ></textarea>\r\n</div>\r\n", styles: [".devui-font-size-base{font-size:var(--devui-font-size, 12px)}.devui-font-base{font-size:var(--devui-font-size, 12px);font-weight:var(--devui-font-content-weight, normal);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-modal-title{font-size:var(--devui-font-size-modal-title, 18px)}.devui-font-modal-title{font-size:var(--devui-font-size-modal-title, 18px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-page-title{font-size:var(--devui-font-size-page-title, 16px)}.devui-font-page-title{font-size:var(--devui-font-size-page-title, 16px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-secondary-title{font-size:var(--devui-font-size-card-title, 14px)}.devui-font-secondary-title{font-size:var(--devui-font-size-card-title, 14px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}:host{display:block}:host ::ng-deep .devui-textarea-container{overflow:hidden;position:relative;width:100%;height:fit-content;min-width:160px;min-height:64px;border:1px solid var(--devui-form-control-line, #dbdbdb);border-radius:var(--devui-border-radius, 2px);color:var(--devui-text, #191919);outline:none;background-color:var(--devui-form-control-bg, #ffffff);box-shadow:0 0 0 0 var(--devui-form-control-interactive-outline, rgba(94, 124, 224, .08));transition:border-color .3s var(--devui-animation-ease-in-out-smooth, cubic-bezier(.645, .045, .355, 1)),box-shadow var(--devui-animation-duration-base, .2s) var(--devui-animation-ease-in, cubic-bezier(.5, 0, .84, .25))}:host ::ng-deep .devui-textarea-container.devui-glow-style:not([disabled]):not(.disabled):not(.devui-disabled):not(.error):not(.devui-error):not(.inner-input):hover{box-shadow:0 0 0 4px var(--devui-form-control-interactive-outline, rgba(94, 124, 224, .08))}:host ::ng-deep .devui-textarea-container.devui-glow-style:not([disabled]):not(.disabled):not(.devui-disabled):not(.error):not(.devui-error):not(.inner-input):focus-within{border-color:var(--devui-form-control-line-active, #0a59f7);box-shadow:0 0 0 4px var(--devui-form-control-interactive-outline, rgba(94, 124, 224, .08))}:host ::ng-deep .devui-textarea-container.devui-glow-style:not([disabled]):not(.disabled):not(.devui-disabled):not(.error):not(.devui-error):not(.inner-input):active{box-shadow:none}:host ::ng-deep .devui-textarea-container.devui-gray-style:not([disabled]){transition:all var(--devui-animation-duration-slow, .3s) var(--devui-animation-ease-in-out-smooth, cubic-bezier(.645, .045, .355, 1))}:host ::ng-deep .devui-textarea-container.devui-gray-style:not([disabled]):not(:focus-within){background:var(--devui-gray-form-control-bg, #f5f5f5)!important;border-color:var(--devui-gray-form-control-bg, #f5f5f5)!important}:host ::ng-deep .devui-textarea-container.devui-gray-style:not([disabled]):not(:focus-within):hover{background-color:var(--devui-gray-form-control-hover-bg, #dfdfdf)!important;border-color:var(--devui-gray-form-control-hover-bg, #dfdfdf)!important}:host ::ng-deep .devui-textarea-container.devui-gray-style[disabled]{background-color:var(--devui-disabled-bg, #f3f3f3)!important;border-color:transparent!important}:host ::ng-deep .devui-textarea-container:not(.devui-glow-style):not([disabled]):not(.disabled):not(.devui-disabled):not(.error):not(.devui-error):hover{border-color:var(--devui-form-control-line-hover, #808080)}:host ::ng-deep .devui-textarea-container:not(.devui-glow-style):not([disabled]):not(.disabled):not(.devui-disabled):not(.error):not(.devui-error):focus-within{border-color:var(--devui-form-control-line-active, #0a59f7)}:host ::ng-deep .devui-textarea-container::placeholder{color:var(--devui-placeholder, #808080)}:host ::ng-deep .devui-textarea-container:focus-within:placeholder-shown::placeholder{color:transparent;transition:all var(--devui-animation-duration-slow, .3s) var(--devui-animation-ease-in-out-smooth, cubic-bezier(.645, .045, .355, 1))}:host ::ng-deep .devui-textarea-container:not(.disabled):not(.devui-disabled).error,:host ::ng-deep .devui-textarea-container:not(.disabled):not(.devui-disabled).devui-error{border-color:var(--devui-danger-line, #e02128);background-color:var(--devui-danger-bg, #fabdc1)}:host ::ng-deep .devui-textarea-container textarea{box-sizing:border-box;padding:4px 8px;vertical-align:middle;border:none;border-bottom:solid 32px transparent!important;min-width:160px;min-height:64px;width:100%;height:100%}:host ::ng-deep .devui-textarea-container.disabled,:host ::ng-deep .devui-textarea-container.disabled:hover,:host ::ng-deep .devui-textarea-container.devui-disabled,:host ::ng-deep .devui-textarea-container.devui-disabled:hover{cursor:not-allowed;background-color:var(--devui-disabled-bg, #f3f3f3);border-color:var(--devui-disabled-line, #e6e6e6)}:host ::ng-deep .devui-textarea-container.disabled textarea[dTextarea],:host ::ng-deep .devui-textarea-container.disabled textarea[dTextarea]:hover,:host ::ng-deep .devui-textarea-container.devui-disabled textarea[dTextarea],:host ::ng-deep .devui-textarea-container.devui-disabled textarea[dTextarea]:hover{color:var(--devui-disabled-text, #c2c2c2)}:host ::ng-deep .devui-textarea-container .devui-textarea-counter{float:none;position:absolute}\n"], dependencies: [{ kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.TextareaDirective, selector: "[dTextarea]", inputs: ["maxLengthBlocker", "maxLengthCounter", "resize", "error", "rows", "styleType", "showGlowStyle"], exportAs: ["dTextarea"] }] }); } } __decorate([ WithConfig(), __metadata("design:type", Object) ], TextareaMaxLengthComponent.prototype, "styleType", void 0); __decorate([ WithConfig(), __metadata("design:type", Object) ], TextareaMaxLengthComponent.prototype, "showGlowStyle", void 0); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextareaMaxLengthComponent, decorators: [{ type: Component, args: [{ selector: 'd-textarea-max-length', providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TextareaMaxLengthComponent), multi: true, }, ], preserveWhitespaces: false, template: "<div\r\n class=\"devui-textarea-container\"\r\n [class.devui-glow-style]=\"showGlowStyle\"\r\n [class.devui-gray-style]=\"styleType === 'gray'\"\r\n [class.error]=\"error\"\r\n [style.resize]=\"disabled ? 'none' : resize\"\r\n [style.max-width]=\"maxWidth\"\r\n [style.max-height]=\"maxHeight\"\r\n>\r\n <textarea\r\n dTextarea\r\n [disabled]=\"disabled\"\r\n [error]=\"error\"\r\n [maxLength]=\"maxLength\"\r\n [maxLengthBlocker]=\"maxLengthBlocker\"\r\n [maxLengthCounter]=\"true\"\r\n [placeholder]=\"placeholder\"\r\n [rows]=\"rows\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"valueChanges($event)\"\r\n (blur)=\"blurEvent()\"\r\n ></textarea>\r\n</div>\r\n", styles: [".devui-font-size-base{font-size:var(--devui-font-size, 12px)}.devui-font-base{font-size:var(--devui-font-size, 12px);font-weight:var(--devui-font-content-weight, normal);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-modal-title{font-size:var(--devui-font-size-modal-title, 18px)}.devui-font-modal-title{font-size:var(--devui-font-size-modal-title, 18px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-page-title{font-size:var(--devui-font-size-page-title, 16px)}.devui-font-page-title{font-size:var(--devui-font-size-page-title, 16px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-secondary-title{font-size:var(--devui-font-size-card-title, 14px)}.devui-font-secondary-title{font-size:var(--devui-font-size-card-title, 14px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}:host{display:block}:host ::ng-deep .devui-textarea-container{overflow:hidden;position:relative;width:100%;height:fit-content;min-width:160px;min-height:64px;border:1px solid var(--devui-form-control-line, #dbdbdb);border-radius:var(--devui-border-radius, 2px);color:var(--devui-text, #191919);outline:none;background-color:var(--devui-form-control-bg, #ffffff);box-shadow:0 0 0 0 var(--devui-form-control-interactive-outline, rgba(94, 124, 224, .08));transition:border-color .3s var(--devui-animation-ease-in-out-smooth, cubic-bezier(.645, .045, .355, 1)),box-shadow var(--devui-animation-duration-base, .2s) var(--devui-animation-ease-in, cubic-bezier(.5, 0, .84, .25))}:host ::ng-deep .devui-textarea-container.devui-glow-style:not([disabled]):not(.disabled):not(.devui-disabled):not(.error):not(.devui-error):not(.inner-input):hover{box-shadow:0 0 0 4px var(--devui-form-control-interactive-outline, rgba(94, 124, 224, .08))}:host ::ng-deep .devui-textarea-container.devui-glow-style:not([disabled]):not(.disabled):not(.devui-disabled):not(.error):not(.devui-error):not(.inner-input):focus-within{border-color:var(--devui-form-control-line-active, #0a59f7);box-shadow:0 0 0 4px var(--devui-form-control-interactive-outline, rgba(94, 124, 224, .08))}:host ::ng-deep .devui-textarea-container.devui-glow-style:not([disabled]):not(.disabled):not(.devui-disabled):not(.error):not(.devui-error):not(.inner-input):active{box-shadow:none}:host ::ng-deep .devui-textarea-container.devui-gray-style:not([disabled]){transition:all var(--devui-animation-duration-slow, .3s) var(--devui-animation-ease-in-out-smooth, cubic-bezier(.645, .045, .355, 1))}:host ::ng-deep .devui-textarea-container.devui-gray-style:not([disabled]):not(:focus-within){background:var(--devui-gray-form-control-bg, #f5f5f5)!important;border-color:var(--devui-gray-form-control-bg, #f5f5f5)!important}:host ::ng-deep .devui-textarea-container.devui-gray-style:not([disabled]):not(:focus-within):hover{background-color:var(--devui-gray-form-control-hover-bg, #dfdfdf)!important;border-color:var(--devui-gray-form-control-hover-bg, #dfdfdf)!important}:host ::ng-deep .devui-textarea-container.devui-gray-style[disabled]{background-color:var(--devui-disabled-bg, #f3f3f3)!important;border-color:transparent!important}:host ::ng-deep .devui-textarea-container:not(.devui-glow-style):not([disabled]):not(.disabled):not(.devui-disabled):not(.error):not(.devui-error):hover{border-color:var(--devui-form-control-line-hover, #808080)}:host ::ng-deep .devui-textarea-container:not(.devui-glow-style):not([disabled]):not(.disabled):not(.devui-disabled):not(.error):not(.devui-error):focus-within{border-color:var(--devui-form-control-line-active, #0a59f7)}:host ::ng-deep .devui-textarea-container::placeholder{color:var(--devui-placeholder, #808080)}:host ::ng-deep .devui-textarea-container:focus-within:placeholder-shown::placeholder{color:transparent;transition:all var(--devui-animation-duration-slow, .3s) var(--devui-animation-ease-in-out-smooth, cubic-bezier(.645, .045, .355, 1))}:host ::ng-deep .devui-textarea-container:not(.disabled):not(.devui-disabled).error,:host ::ng-deep .devui-textarea-container:not(.disabled):not(.devui-disabled).devui-error{border-color:var(--devui-danger-line, #e02128);background-color:var(--devui-danger-bg, #fabdc1)}:host ::ng-deep .devui-textarea-container textarea{box-sizing:border-box;padding:4px 8px;vertical-align:middle;border:none;border-bottom:solid 32px transparent!important;min-width:160px;min-height:64px;width:100%;height:100%}:host ::ng-deep .devui-textarea-container.disabled,:host ::ng-deep .devui-textarea-container.disabled:hover,:host ::ng-deep .devui-textarea-container.devui-disabled,:host ::ng-deep .devui-textarea-container.devui-disabled:hover{cursor:not-allowed;background-color:var(--devui-disabled-bg, #f3f3f3);border-color:var(--devui-disabled-line, #e6e6e6)}:host ::ng-deep .devui-textarea-container.disabled textarea[dTextarea],:host ::ng-deep .devui-textarea-container.disabled textarea[dTextarea]:hover,:host ::ng-deep .devui-textarea-container.devui-disabled textarea[dTextarea],:host ::ng-deep .devui-textarea-container.devui-disabled textarea[dTextarea]:hover{color:var(--devui-disabled-text, #c2c2c2)}:host ::ng-deep .devui-textarea-container .devui-textarea-counter{float:none;position:absolute}\n"] }] }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.DevConfigService }], propDecorators: { textareaInstance: [{ type: ViewChild, args: [TextareaDirective] }], disabled: [{ type: Input }], error: [{ type: Input }], maxLength: [{ type: Input }], maxLengthBlocker: [{ type: Input }], placeholder: [{ type: Input }], rows: [{ type: Input }], maxWidth: [{ type: Input }], maxHeight: [{ type: Input }], resize: [{ type: Input }], styleType: [{ type: Input }], showGlowStyle: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEtbWF4LWxlbmd0aC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9kZXZ1aS90ZXh0YXJlYS90ZXh0YXJlYS1tYXgtbGVuZ3RoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2RldnVpL3RleHRhcmVhL3RleHRhcmVhLW1heC1sZW5ndGguY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7OztBQWV6RCxNQUFNLE9BQU8sMEJBQTBCO0lBb0JyQyxZQUFvQixFQUFjLEVBQVUsZ0JBQWtDO1FBQTFELE9BQUUsR0FBRixFQUFFLENBQVk7UUFBVSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBbEJyRSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLFVBQUssR0FBRyxLQUFLLENBQUM7UUFFZCxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFFekIsU0FBSSxHQUFHLENBQUMsQ0FBQztRQUdULFdBQU0sR0FBNEQsTUFBTSxDQUFDO1FBQzNELGNBQVMsR0FBRyxTQUFTLENBQUM7UUFDdEIsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFLcEMsYUFBUSxHQUFHLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFDNUIsWUFBTyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztJQUVvRCxDQUFDO0lBRWxGLGVBQWU7UUFDYixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsRUFBTztRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBTztRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsVUFBbUI7UUFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDN0IsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFXO1FBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO0lBQ25CLENBQUM7SUFFRCxZQUFZLENBQUMsR0FBVztRQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztRQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsU0FBUztRQUNQLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7K0dBbkRVLDBCQUEwQjttR0FBMUIsMEJBQTBCLGtVQVQxQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsMEJBQTBCLENBQUM7Z0JBQ3pELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRiw0RUFJVSxpQkFBaUIsZ0RDbkI5Qixvc0JBdUJBOztBRE15QjtJQUFiLFVBQVUsRUFBRTs7NkRBQXVCO0FBQ3RCO0lBQWIsVUFBVSxFQUFFOztpRUFBc0I7NEZBWmpDLDBCQUEwQjtrQkFidEMsU0FBUzsrQkFDRSx1QkFBdUIsYUFHdEI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsMkJBQTJCLENBQUM7NEJBQ3pELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGLHVCQUNvQixLQUFLOzhHQUdJLGdCQUFnQjtzQkFBN0MsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBQ25CLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ2lCLFNBQVM7c0JBQS9CLEtBQUs7Z0JBQ2lCLGFBQWE7c0JBQW5DLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGZvcndhcmRSZWYsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBEZXZDb25maWdTZXJ2aWNlLCBXaXRoQ29uZmlnIH0gZnJvbSAnbmctZGV2dWkvdXRpbHMnO1xyXG5pbXBvcnQgeyBUZXh0YXJlYURpcmVjdGl2ZSB9IGZyb20gJy4vdGV4dGFyZWEuZGlyZWN0aXZlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZC10ZXh0YXJlYS1tYXgtbGVuZ3RoJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGV4dGFyZWEtbWF4LWxlbmd0aC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGV4dGFyZWEtbWF4LWxlbmd0aC5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGV4dGFyZWFNYXhMZW5ndGhDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXSxcclxuICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRleHRhcmVhTWF4TGVuZ3RoQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyVmlld0luaXQge1xyXG4gIEBWaWV3Q2hpbGQoVGV4dGFyZWFEaXJlY3RpdmUpIHRleHRhcmVhSW5zdGFuY2U6IFRleHRhcmVhRGlyZWN0aXZlO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZXJyb3IgPSBmYWxzZTtcclxuICBASW5wdXQoKSBtYXhMZW5ndGg6IG51bWJlcjtcclxuICBASW5wdXQoKSBtYXhMZW5ndGhCbG9ja2VyID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcclxuICBASW5wdXQoKSByb3dzID0gMztcclxuICBASW5wdXQoKSBtYXhXaWR0aDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG1heEhlaWdodDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHJlc2l6ZTogJ25vbmUnIHwgJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJyB8ICdib3RoJyB8ICdpbmhlcml0JyA9ICdub25lJztcclxuICBASW5wdXQoKSBAV2l0aENvbmZpZygpIHN0eWxlVHlwZSA9ICdkZWZhdWx0JztcclxuICBASW5wdXQoKSBAV2l0aENvbmZpZygpIHNob3dHbG93U3R5bGUgPSB0cnVlO1xyXG5cclxuICB0ZXh0YXJlYUVsZW1lbnQ6IEhUTUxUZXh0QXJlYUVsZW1lbnQ7XHJcbiAgdmFsdWU6IHN0cmluZztcclxuXHJcbiAgcHJpdmF0ZSBvbkNoYW5nZSA9IChfOiBhbnkpID0+IG51bGw7XHJcbiAgcHJpdmF0ZSBvblRvdWNoID0gKCkgPT4gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZiwgcHJpdmF0ZSBkZXZDb25maWdTZXJ2aWNlOiBEZXZDb25maWdTZXJ2aWNlKSB7fVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRleHRhcmVhRWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCd0ZXh0YXJlYScpO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2ggPSBmbjtcclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHZhbDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlID0gdmFsO1xyXG4gIH1cclxuXHJcbiAgdmFsdWVDaGFuZ2VzKHZhbDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlID0gdmFsO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh2YWwpO1xyXG4gICAgdGhpcy5vblRvdWNoKCk7XHJcbiAgfVxyXG5cclxuICBibHVyRXZlbnQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBldmVudCA9IG5ldyBFdmVudCgnYmx1cicsIHsgYnViYmxlczogZmFsc2UsIGNhbmNlbGFibGU6IHRydWUgfSk7XHJcbiAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChldmVudCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICBjbGFzcz1cImRldnVpLXRleHRhcmVhLWNvbnRhaW5lclwiXHJcbiAgW2NsYXNzLmRldnVpLWdsb3ctc3R5bGVdPVwic2hvd0dsb3dTdHlsZVwiXHJcbiAgW2NsYXNzLmRldnVpLWdyYXktc3R5bGVdPVwic3R5bGVUeXBlID09PSAnZ3JheSdcIlxyXG4gIFtjbGFzcy5lcnJvcl09XCJlcnJvclwiXHJcbiAgW3N0eWxlLnJlc2l6ZV09XCJkaXNhYmxlZCA/ICdub25lJyA6IHJlc2l6ZVwiXHJcbiAgW3N0eWxlLm1heC13aWR0aF09XCJtYXhXaWR0aFwiXHJcbiAgW3N0eWxlLm1heC1oZWlnaHRdPVwibWF4SGVpZ2h0XCJcclxuPlxyXG4gIDx0ZXh0YXJlYVxyXG4gICAgZFRleHRhcmVhXHJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgW2Vycm9yXT1cImVycm9yXCJcclxuICAgIFttYXhMZW5ndGhdPVwibWF4TGVuZ3RoXCJcclxuICAgIFttYXhMZW5ndGhCbG9ja2VyXT1cIm1heExlbmd0aEJsb2NrZXJcIlxyXG4gICAgW21heExlbmd0aENvdW50ZXJdPVwidHJ1ZVwiXHJcbiAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgW3Jvd3NdPVwicm93c1wiXHJcbiAgICBbbmdNb2RlbF09XCJ2YWx1ZVwiXHJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZUNoYW5nZXMoJGV2ZW50KVwiXHJcbiAgICAoYmx1cik9XCJibHVyRXZlbnQoKVwiXHJcbiAgPjwvdGV4dGFyZWE+XHJcbjwvZGl2PlxyXG4iXX0=