UNPKG

systelab-components

Version:

systelab-components is a set of components that use wide accepted and adopted standard technologies like Angular and Bootstrap, as well as other popular libraries. Please read the ATTRIBUTION.md file for a complete list of dependencies.

69 lines 17.2 kB
import { Component, Input } from '@angular/core'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common"; export class NavbarItem { constructor(id, text, image, floatImage, isSelected, isEnabled, action, target, url, backgroundColor, fontColor) { this.id = id; this.text = text; this.image = image; this.floatImage = floatImage; this.isSelected = isSelected; this.isEnabled = isEnabled; this.action = action; this.target = target; this.url = url; this.backgroundColor = backgroundColor; this.fontColor = fontColor; } } export class NavbarComponent { constructor() { this.items = []; this.isVertical = false; this.activeColor = 'white'; this.activeFontColor = 'black'; this.fontColor = 'white'; this.align = 'left'; } noop() { } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: NavbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.9", type: NavbarComponent, selector: "systelab-navbar", inputs: { items: "items", isVertical: "isVertical", backgroundColor: "backgroundColor", backgroundHoverColor: "backgroundHoverColor", borderColor: "borderColor", activeColor: "activeColor", activeFontColor: "activeFontColor", fontHoverColor: "fontHoverColor", fontColor: "fontColor", align: "align", id: "id", hideBottomBorder: "hideBottomBorder", hideTopBorder: "hideTopBorder", hideRightBorder: "hideRightBorder", hideLeftBorder: "hideLeftBorder", padding: "padding" }, ngImport: i0, template: "<div class=\"slab-navbar navbar-expand-md navbar-light\" [style.background-color]=\"backgroundColor\">\n <button class=\"navbar-toggler\" type=\"button\" data-toggle=\"collapse\" [attr.data-target]=\"'#' + id\"\n [attr.aria-controls]=\"id\"\n aria-expanded=\"false\" aria-label=\"Toggle navigation\"\n [style.background-color]=\"hovered == -2 ? backgroundHoverColor : backgroundColor\"\n (mouseover)=\"hovered = -2\" (mouseout)=\"hovered = -1\">\n <i class=\"slab-icon mt-2 mb-2 icon-list\" [style.color]=\"fontColor\"></i>\n </button>\n\n <div class=\"collapse navbar-collapse\" [id]=\"id\" [class.justify-content-center]=\"align === 'center'\"\n [class.justify-content-end]=\"align === 'right'\">\n <ul [class.flex-row]=\"!isVertical\" [class.flex-column]=\"isVertical\"\n class=\"nav nav-pills slab-navbar-elements align-items-center d-flex\">\n\n @for (nav of items; track nav.id; let last= $last) {\n <li [style.border-right]=\"hideRightBorder?'none':(!isVertical && !last ?'none': borderColor ? '1px solid '+borderColor:'none')\"\n [style.border-bottom]=\"hideBottomBorder?'none':(isVertical && !last ?'none': borderColor ? '1px solid '+borderColor:'none')\"\n [style.border-left]=\"borderColor && !hideLeftBorder? '1px solid '+borderColor:'none'\"\n [style.border-top]=\"borderColor && !hideTopBorder? '1px solid '+borderColor:'none'\"\n [style.padding]=\"padding\"\n class=\"nav-item\"\n [class.disabled]=\"!nav.isEnabled\"\n (click)=\"nav.isEnabled&&nav.action?nav.action():noop()\"\n [style.background-color]=\"nav.isSelected? activeColor : (hovered == nav.id && nav.isEnabled ? backgroundHoverColor : !nav.isEnabled ? '#cccccc': (nav.backgroundColor)?nav.backgroundColor:backgroundColor)\"\n (mouseover)=\"hovered = nav.id\" (mouseout)=\"hovered = -1\" [class.active]=\"nav.isSelected\">\n <a [id]=\"'nav-'+nav.id\"\n class=\"nav-link text-center align-self-stretch d-flex align-items-center justify-content-center\"\n [attr.href]=\"nav.url ? nav.isEnabled ? nav.url : '' : null \"\n [attr.target]=\"nav.url ? nav.isEnabled ? nav.target : '' : null \"\n [style.color]=\"nav.fontColor ? nav.fontColor: (hovered == nav.id && nav.isEnabled ? fontHoverColor : (nav.isSelected?activeFontColor:fontColor))\"\n [class.disabled]=\"!nav.isEnabled\" [class.active]=\"nav.isSelected\">\n <i *ngIf=\"nav.image\" [class]=\"nav.image\" [class.slab-icon-float-image]=\"nav.floatImage\"\n [class.slab-icon-vertical-image]=\"!nav.floatImage\"></i>\n <span *ngIf=\"nav.text\" [ngClass]=\"{'ml-2': nav.image}\">{{nav.text}}</span>\n </a>\n </li>\n }\n </ul>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: NavbarComponent, decorators: [{ type: Component, args: [{ selector: 'systelab-navbar', template: "<div class=\"slab-navbar navbar-expand-md navbar-light\" [style.background-color]=\"backgroundColor\">\n <button class=\"navbar-toggler\" type=\"button\" data-toggle=\"collapse\" [attr.data-target]=\"'#' + id\"\n [attr.aria-controls]=\"id\"\n aria-expanded=\"false\" aria-label=\"Toggle navigation\"\n [style.background-color]=\"hovered == -2 ? backgroundHoverColor : backgroundColor\"\n (mouseover)=\"hovered = -2\" (mouseout)=\"hovered = -1\">\n <i class=\"slab-icon mt-2 mb-2 icon-list\" [style.color]=\"fontColor\"></i>\n </button>\n\n <div class=\"collapse navbar-collapse\" [id]=\"id\" [class.justify-content-center]=\"align === 'center'\"\n [class.justify-content-end]=\"align === 'right'\">\n <ul [class.flex-row]=\"!isVertical\" [class.flex-column]=\"isVertical\"\n class=\"nav nav-pills slab-navbar-elements align-items-center d-flex\">\n\n @for (nav of items; track nav.id; let last= $last) {\n <li [style.border-right]=\"hideRightBorder?'none':(!isVertical && !last ?'none': borderColor ? '1px solid '+borderColor:'none')\"\n [style.border-bottom]=\"hideBottomBorder?'none':(isVertical && !last ?'none': borderColor ? '1px solid '+borderColor:'none')\"\n [style.border-left]=\"borderColor && !hideLeftBorder? '1px solid '+borderColor:'none'\"\n [style.border-top]=\"borderColor && !hideTopBorder? '1px solid '+borderColor:'none'\"\n [style.padding]=\"padding\"\n class=\"nav-item\"\n [class.disabled]=\"!nav.isEnabled\"\n (click)=\"nav.isEnabled&&nav.action?nav.action():noop()\"\n [style.background-color]=\"nav.isSelected? activeColor : (hovered == nav.id && nav.isEnabled ? backgroundHoverColor : !nav.isEnabled ? '#cccccc': (nav.backgroundColor)?nav.backgroundColor:backgroundColor)\"\n (mouseover)=\"hovered = nav.id\" (mouseout)=\"hovered = -1\" [class.active]=\"nav.isSelected\">\n <a [id]=\"'nav-'+nav.id\"\n class=\"nav-link text-center align-self-stretch d-flex align-items-center justify-content-center\"\n [attr.href]=\"nav.url ? nav.isEnabled ? nav.url : '' : null \"\n [attr.target]=\"nav.url ? nav.isEnabled ? nav.target : '' : null \"\n [style.color]=\"nav.fontColor ? nav.fontColor: (hovered == nav.id && nav.isEnabled ? fontHoverColor : (nav.isSelected?activeFontColor:fontColor))\"\n [class.disabled]=\"!nav.isEnabled\" [class.active]=\"nav.isSelected\">\n <i *ngIf=\"nav.image\" [class]=\"nav.image\" [class.slab-icon-float-image]=\"nav.floatImage\"\n [class.slab-icon-vertical-image]=\"!nav.floatImage\"></i>\n <span *ngIf=\"nav.text\" [ngClass]=\"{'ml-2': nav.image}\">{{nav.text}}</span>\n </a>\n </li>\n }\n </ul>\n </div>\n</div>\n" }] }], ctorParameters: () => [], propDecorators: { items: [{ type: Input }], isVertical: [{ type: Input }], backgroundColor: [{ type: Input }], backgroundHoverColor: [{ type: Input }], borderColor: [{ type: Input }], activeColor: [{ type: Input }], activeFontColor: [{ type: Input }], fontHoverColor: [{ type: Input }], fontColor: [{ type: Input }], align: [{ type: Input }], id: [{ type: Input }], hideBottomBorder: [{ type: Input }], hideTopBorder: [{ type: Input }], hideRightBorder: [{ type: Input }], hideLeftBorder: [{ type: Input }], padding: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2YmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N5c3RlbGFiLWNvbXBvbmVudHMvc3JjL2xpYi9uYXZiYXIvbmF2YmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N5c3RlbGFiLWNvbXBvbmVudHMvc3JjL2xpYi9uYXZiYXIvbmF2YmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7QUFFL0MsTUFBTSxPQUFPLFVBQVU7SUFDdEIsWUFBbUIsRUFBVSxFQUFTLElBQVksRUFBUyxLQUFhLEVBQVMsVUFBbUIsRUFBUyxVQUFtQixFQUM3RyxTQUFrQixFQUFTLE1BQVcsRUFBUyxNQUFlLEVBQVMsR0FBWSxFQUFTLGVBQXdCLEVBQVMsU0FBa0I7UUFEL0ksT0FBRSxHQUFGLEVBQUUsQ0FBUTtRQUFTLFNBQUksR0FBSixJQUFJLENBQVE7UUFBUyxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQVMsZUFBVSxHQUFWLFVBQVUsQ0FBUztRQUFTLGVBQVUsR0FBVixVQUFVLENBQVM7UUFDN0csY0FBUyxHQUFULFNBQVMsQ0FBUztRQUFTLFdBQU0sR0FBTixNQUFNLENBQUs7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFTO1FBQVMsUUFBRyxHQUFILEdBQUcsQ0FBUztRQUFTLG9CQUFlLEdBQWYsZUFBZSxDQUFTO1FBQVMsY0FBUyxHQUFULFNBQVMsQ0FBUztJQUNsSyxDQUFDO0NBQ0Q7QUFNRCxNQUFNLE9BQU8sZUFBZTtJQXFCM0I7UUFuQmdCLFVBQUssR0FBaUIsRUFBRSxDQUFDO1FBQ3pCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFJbkIsZ0JBQVcsR0FBRyxPQUFPLENBQUM7UUFDdEIsb0JBQWUsR0FBRyxPQUFPLENBQUM7UUFFMUIsY0FBUyxHQUFHLE9BQU8sQ0FBQztRQUNwQixVQUFLLEdBQUcsTUFBTSxDQUFDO0lBVy9CLENBQUM7SUFFTSxJQUFJO0lBQ1gsQ0FBQzs4R0F6QlcsZUFBZTtrR0FBZixlQUFlLCtnQkNaNUIsMGlHQXdDQTs7MkZENUJhLGVBQWU7a0JBSjNCLFNBQVM7K0JBQ0MsaUJBQWlCO3dEQUtYLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxlQUFlO3NCQUE5QixLQUFLO2dCQUNVLG9CQUFvQjtzQkFBbkMsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUNVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBQ1UsZUFBZTtzQkFBOUIsS0FBSztnQkFDVSxjQUFjO3NCQUE3QixLQUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ1UsS0FBSztzQkFBcEIsS0FBSztnQkFDVSxFQUFFO3NCQUFqQixLQUFLO2dCQUNVLGdCQUFnQjtzQkFBL0IsS0FBSztnQkFDVSxhQUFhO3NCQUE1QixLQUFLO2dCQUNVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBQ1UsY0FBYztzQkFBN0IsS0FBSztnQkFDVSxPQUFPO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNsYXNzIE5hdmJhckl0ZW0ge1xuXHRjb25zdHJ1Y3RvcihwdWJsaWMgaWQ6IG51bWJlciwgcHVibGljIHRleHQ6IHN0cmluZywgcHVibGljIGltYWdlOiBzdHJpbmcsIHB1YmxpYyBmbG9hdEltYWdlOiBib29sZWFuLCBwdWJsaWMgaXNTZWxlY3RlZDogYm9vbGVhbixcblx0ICAgICAgICAgICAgcHVibGljIGlzRW5hYmxlZDogYm9vbGVhbiwgcHVibGljIGFjdGlvbjogYW55LCBwdWJsaWMgdGFyZ2V0Pzogc3RyaW5nLCBwdWJsaWMgdXJsPzogc3RyaW5nLCBwdWJsaWMgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nLCBwdWJsaWMgZm9udENvbG9yPzogc3RyaW5nKSB7XG5cdH1cbn1cblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnc3lzdGVsYWItbmF2YmFyJyxcblx0dGVtcGxhdGVVcmw6ICduYXZiYXIuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBOYXZiYXJDb21wb25lbnQge1xuXG5cdEBJbnB1dCgpIHB1YmxpYyBpdGVtczogTmF2YmFySXRlbVtdID0gW107XG5cdEBJbnB1dCgpIHB1YmxpYyBpc1ZlcnRpY2FsID0gZmFsc2U7XG5cdEBJbnB1dCgpIHB1YmxpYyBiYWNrZ3JvdW5kQ29sb3I7XG5cdEBJbnB1dCgpIHB1YmxpYyBiYWNrZ3JvdW5kSG92ZXJDb2xvcjogc3RyaW5nO1xuXHRASW5wdXQoKSBwdWJsaWMgYm9yZGVyQ29sb3I6IHN0cmluZztcblx0QElucHV0KCkgcHVibGljIGFjdGl2ZUNvbG9yID0gJ3doaXRlJztcblx0QElucHV0KCkgcHVibGljIGFjdGl2ZUZvbnRDb2xvciA9ICdibGFjayc7XG5cdEBJbnB1dCgpIHB1YmxpYyBmb250SG92ZXJDb2xvcjpzdHJpbmc7XG5cdEBJbnB1dCgpIHB1YmxpYyBmb250Q29sb3IgPSAnd2hpdGUnO1xuXHRASW5wdXQoKSBwdWJsaWMgYWxpZ24gPSAnbGVmdCc7XG5cdEBJbnB1dCgpIHB1YmxpYyBpZDogc3RyaW5nO1xuXHRASW5wdXQoKSBwdWJsaWMgaGlkZUJvdHRvbUJvcmRlcjogYm9vbGVhbjtcblx0QElucHV0KCkgcHVibGljIGhpZGVUb3BCb3JkZXI6IGJvb2xlYW47XG5cdEBJbnB1dCgpIHB1YmxpYyBoaWRlUmlnaHRCb3JkZXI6IGJvb2xlYW47XG5cdEBJbnB1dCgpIHB1YmxpYyBoaWRlTGVmdEJvcmRlcjogYm9vbGVhbjtcblx0QElucHV0KCkgcHVibGljIHBhZGRpbmc6IHN0cmluZztcblxuXHRwdWJsaWMgaG92ZXJlZDogbnVtYmVyO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHR9XG5cblx0cHVibGljIG5vb3AoKSB7XG5cdH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzbGFiLW5hdmJhciBuYXZiYXItZXhwYW5kLW1kIG5hdmJhci1saWdodFwiIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImJhY2tncm91bmRDb2xvclwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJuYXZiYXItdG9nZ2xlclwiIHR5cGU9XCJidXR0b25cIiBkYXRhLXRvZ2dsZT1cImNvbGxhcHNlXCIgW2F0dHIuZGF0YS10YXJnZXRdPVwiJyMnICsgaWRcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJpZFwiXG4gICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIiBhcmlhLWxhYmVsPVwiVG9nZ2xlIG5hdmlnYXRpb25cIlxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiaG92ZXJlZCA9PSAtMiAgPyBiYWNrZ3JvdW5kSG92ZXJDb2xvciA6ICBiYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgKG1vdXNlb3Zlcik9XCJob3ZlcmVkID0gLTJcIiAobW91c2VvdXQpPVwiaG92ZXJlZCA9IC0xXCI+XG4gICAgICAgIDxpIGNsYXNzPVwic2xhYi1pY29uIG10LTIgbWItMiBpY29uLWxpc3RcIiBbc3R5bGUuY29sb3JdPVwiZm9udENvbG9yXCI+PC9pPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGRpdiBjbGFzcz1cImNvbGxhcHNlIG5hdmJhci1jb2xsYXBzZVwiIFtpZF09XCJpZFwiIFtjbGFzcy5qdXN0aWZ5LWNvbnRlbnQtY2VudGVyXT1cImFsaWduID09PSAnY2VudGVyJ1wiXG4gICAgICAgICBbY2xhc3MuanVzdGlmeS1jb250ZW50LWVuZF09XCJhbGlnbiA9PT0gJ3JpZ2h0J1wiPlxuICAgICAgICA8dWwgW2NsYXNzLmZsZXgtcm93XT1cIiFpc1ZlcnRpY2FsXCIgW2NsYXNzLmZsZXgtY29sdW1uXT1cImlzVmVydGljYWxcIlxuICAgICAgICAgICAgY2xhc3M9XCJuYXYgbmF2LXBpbGxzIHNsYWItbmF2YmFyLWVsZW1lbnRzIGFsaWduLWl0ZW1zLWNlbnRlciBkLWZsZXhcIj5cblxuICAgICAgICAgICAgQGZvciAobmF2IG9mIGl0ZW1zOyB0cmFjayBuYXYuaWQ7IGxldCBsYXN0PSAkbGFzdCkge1xuICAgICAgICAgICAgICAgIDxsaSBbc3R5bGUuYm9yZGVyLXJpZ2h0XT1cImhpZGVSaWdodEJvcmRlcj8nbm9uZSc6KCFpc1ZlcnRpY2FsICYmICFsYXN0ID8nbm9uZSc6IGJvcmRlckNvbG9yICA/ICcxcHggc29saWQgJytib3JkZXJDb2xvcjonbm9uZScpXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlci1ib3R0b21dPVwiaGlkZUJvdHRvbUJvcmRlcj8nbm9uZSc6KGlzVmVydGljYWwgJiYgIWxhc3QgPydub25lJzogYm9yZGVyQ29sb3IgPyAnMXB4IHNvbGlkICcrYm9yZGVyQ29sb3I6J25vbmUnKVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXItbGVmdF09XCJib3JkZXJDb2xvciAmJiAhaGlkZUxlZnRCb3JkZXI/ICcxcHggc29saWQgJytib3JkZXJDb2xvcjonbm9uZSdcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyLXRvcF09XCJib3JkZXJDb2xvciAmJiAhaGlkZVRvcEJvcmRlcj8gJzFweCBzb2xpZCAnK2JvcmRlckNvbG9yOidub25lJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5wYWRkaW5nXT1cInBhZGRpbmdcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5hdi1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiFuYXYuaXNFbmFibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm5hdi5pc0VuYWJsZWQmJm5hdi5hY3Rpb24/bmF2LmFjdGlvbigpOm5vb3AoKVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIm5hdi5pc1NlbGVjdGVkPyBhY3RpdmVDb2xvciA6IChob3ZlcmVkID09IG5hdi5pZCAmJiBuYXYuaXNFbmFibGVkID8gYmFja2dyb3VuZEhvdmVyQ29sb3IgOiAhbmF2LmlzRW5hYmxlZCA/ICcjY2NjY2NjJzogKG5hdi5iYWNrZ3JvdW5kQ29sb3IpP25hdi5iYWNrZ3JvdW5kQ29sb3I6YmFja2dyb3VuZENvbG9yKVwiXG4gICAgICAgICAgICAgICAgICAgIChtb3VzZW92ZXIpPVwiaG92ZXJlZCA9IG5hdi5pZFwiIChtb3VzZW91dCk9XCJob3ZlcmVkID0gLTFcIiBbY2xhc3MuYWN0aXZlXT1cIm5hdi5pc1NlbGVjdGVkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhIFtpZF09XCInbmF2LScrbmF2LmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuYXYtbGluayB0ZXh0LWNlbnRlciBhbGlnbi1zZWxmLXN0cmV0Y2ggZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuaHJlZl09XCJuYXYudXJsID8gbmF2LmlzRW5hYmxlZCA/ICBuYXYudXJsIDogJycgOiBudWxsIFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRhcmdldF09XCJuYXYudXJsID8gbmF2LmlzRW5hYmxlZCA/ICBuYXYudGFyZ2V0IDogJycgOiBudWxsIFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJuYXYuZm9udENvbG9yID8gbmF2LmZvbnRDb2xvcjogKGhvdmVyZWQgPT0gbmF2LmlkICYmIG5hdi5pc0VuYWJsZWQgPyBmb250SG92ZXJDb2xvciA6IChuYXYuaXNTZWxlY3RlZD9hY3RpdmVGb250Q29sb3I6Zm9udENvbG9yKSlcIlxuICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIW5hdi5pc0VuYWJsZWRcIiBbY2xhc3MuYWN0aXZlXT1cIm5hdi5pc1NlbGVjdGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIm5hdi5pbWFnZVwiIFtjbGFzc109XCJuYXYuaW1hZ2VcIiBbY2xhc3Muc2xhYi1pY29uLWZsb2F0LWltYWdlXT1cIm5hdi5mbG9hdEltYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zbGFiLWljb24tdmVydGljYWwtaW1hZ2VdPVwiIW5hdi5mbG9hdEltYWdlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJuYXYudGV4dFwiIFtuZ0NsYXNzXT1cInsnbWwtMic6IG5hdi5pbWFnZX1cIj57e25hdi50ZXh0fX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L3VsPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=