UNPKG

@fullcalendar/angular

Version:

The official Angular component for FullCalendar

78 lines 16.4 kB
import { Component, Input, ViewEncapsulation, ViewChild } from '@angular/core'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common"; const dummyContainer = document.createDocumentFragment(); export class TransportContainerComponent { ngAfterViewInit() { const rootEl = this.rootElRef?.nativeElement; // assumed defined replaceEl(rootEl, this.inPlaceOf); applyElAttrs(rootEl, undefined, this.elAttrs); this.reportEl(rootEl); } ngOnChanges(changes) { const rootEl = this.rootElRef?.nativeElement; // ngOnChanges is called before ngAfterViewInit (and before DOM initializes) // so make sure rootEl is defined before doing anything if (rootEl) { // If the ContentContainer's tagName changed, it will create a new DOM element in its // original place. Detect this and re-replace. if (this.inPlaceOf.parentNode !== dummyContainer) { replaceEl(rootEl, this.inPlaceOf); applyElAttrs(rootEl, undefined, this.elAttrs); this.reportEl(rootEl); } else { const elAttrsChange = changes['elAttrs']; if (elAttrsChange) { applyElAttrs(rootEl, elAttrsChange.previousValue, elAttrsChange.currentValue); } } } } // invoked BEFORE component removed from DOM ngOnDestroy() { dummyContainer.removeChild(this.inPlaceOf); this.reportEl(null); } } TransportContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TransportContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); TransportContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TransportContainerComponent, selector: "transport-container", inputs: { inPlaceOf: "inPlaceOf", reportEl: "reportEl", elTag: "elTag", elClasses: "elClasses", elStyle: "elStyle", elAttrs: "elAttrs", template: "template", renderProps: "renderProps" }, viewQueries: [{ propertyName: "rootElRef", first: true, predicate: ["rootEl"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template [ngIf]=\"elTag == 'div'\">\n <div #rootEl [ngClass]=\"elClasses || ''\" [ngStyle]=\"elStyle || null\">\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ $implicit: renderProps }\"\n ></ng-container>\n </div>\n</ng-template>\n<ng-template [ngIf]=\"elTag == 'span'\">\n <span #rootEl [ngClass]=\"elClasses || ''\" [ngStyle]=\"elStyle || null\">\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ $implicit: renderProps }\"\n ></ng-container>\n </span>\n</ng-template>\n<ng-template [ngIf]=\"elTag == 'a'\">\n <a #rootEl [ngClass]=\"elClasses || ''\" [ngStyle]=\"elStyle || null\">\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ $implicit: renderProps }\"\n ></ng-container>\n </a>\n</ng-template>\n<ng-template [ngIf]=\"elTag == 'tr'\">\n <tr #rootEl [ngClass]=\"elClasses || ''\" [ngStyle]=\"elStyle || null\">\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ $implicit: renderProps }\"\n ></ng-container>\n </tr>\n</ng-template>\n<ng-template [ngIf]=\"elTag == 'th'\">\n <th #rootEl [ngClass]=\"elClasses || ''\" [ngStyle]=\"elStyle || null\">\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ $implicit: renderProps }\"\n ></ng-container>\n </th>\n</ng-template>\n<ng-template [ngIf]=\"elTag == 'td'\">\n <td #rootEl [ngClass]=\"elClasses || ''\" [ngStyle]=\"elStyle || null\">\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ $implicit: renderProps }\"\n ></ng-container>\n </td>\n</ng-template>\n", directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], encapsulation: i0.ViewEncapsulation.None }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TransportContainerComponent, decorators: [{ type: Component, args: [{ selector: 'transport-container', encapsulation: ViewEncapsulation.None, template: "<ng-template [ngIf]=\"elTag == 'div'\">\n <div #rootEl [ngClass]=\"elClasses || ''\" [ngStyle]=\"elStyle || null\">\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ $implicit: renderProps }\"\n ></ng-container>\n </div>\n</ng-template>\n<ng-template [ngIf]=\"elTag == 'span'\">\n <span #rootEl [ngClass]=\"elClasses || ''\" [ngStyle]=\"elStyle || null\">\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ $implicit: renderProps }\"\n ></ng-container>\n </span>\n</ng-template>\n<ng-template [ngIf]=\"elTag == 'a'\">\n <a #rootEl [ngClass]=\"elClasses || ''\" [ngStyle]=\"elStyle || null\">\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ $implicit: renderProps }\"\n ></ng-container>\n </a>\n</ng-template>\n<ng-template [ngIf]=\"elTag == 'tr'\">\n <tr #rootEl [ngClass]=\"elClasses || ''\" [ngStyle]=\"elStyle || null\">\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ $implicit: renderProps }\"\n ></ng-container>\n </tr>\n</ng-template>\n<ng-template [ngIf]=\"elTag == 'th'\">\n <th #rootEl [ngClass]=\"elClasses || ''\" [ngStyle]=\"elStyle || null\">\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ $implicit: renderProps }\"\n ></ng-container>\n </th>\n</ng-template>\n<ng-template [ngIf]=\"elTag == 'td'\">\n <td #rootEl [ngClass]=\"elClasses || ''\" [ngStyle]=\"elStyle || null\">\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ $implicit: renderProps }\"\n ></ng-container>\n </td>\n</ng-template>\n" }] }], propDecorators: { inPlaceOf: [{ type: Input }], reportEl: [{ type: Input }], elTag: [{ type: Input }], elClasses: [{ type: Input }], elStyle: [{ type: Input }], elAttrs: [{ type: Input }], template: [{ type: Input }], renderProps: [{ type: Input }], rootElRef: [{ type: ViewChild, args: ['rootEl'] }] } }); function replaceEl(subject, inPlaceOf) { inPlaceOf.parentNode?.insertBefore(subject, inPlaceOf.nextSibling); dummyContainer.appendChild(inPlaceOf); } function applyElAttrs(el, previousAttrs = {}, currentAttrs = {}) { // these are called "attributes" but they manipulate DOM node *properties* for (const attrName in previousAttrs) { if (!(attrName in currentAttrs)) { el[attrName] = null; } } for (const attrName in currentAttrs) { el[attrName] = currentAttrs[attrName]; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNwb3J0LWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvc3JjL3V0aWxzL3RyYW5zcG9ydC1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vbGliL3NyYy91dGlscy90cmFuc3BvcnQtY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBT1YsTUFBTSxlQUFlLENBQUM7OztBQUV2QixNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztBQU96RCxNQUFNLE9BQU8sMkJBQTJCO0lBWXRDLGVBQWU7UUFDYixNQUFNLE1BQU0sR0FBWSxJQUFJLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDLGtCQUFrQjtRQUV6RSxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsQyxZQUFZLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFxQixDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxNQUFNLE1BQU0sR0FBd0IsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUM7UUFFbEUsNEVBQTRFO1FBQzVFLHVEQUF1RDtRQUN2RCxJQUFJLE1BQU0sRUFBRTtZQUNWLHFGQUFxRjtZQUNyRiw4Q0FBOEM7WUFDOUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsS0FBSyxjQUFjLEVBQUU7Z0JBQ2hELFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNsQyxZQUFZLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzlDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBcUIsQ0FBQyxDQUFDO2FBQ3RDO2lCQUFNO2dCQUNMLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFFekMsSUFBSSxhQUFhLEVBQUU7b0JBQ2pCLFlBQVksQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7aUJBQy9FO2FBQ0Y7U0FDRjtJQUNILENBQUM7SUFFRCw0Q0FBNEM7SUFDNUMsV0FBVztRQUNULGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEIsQ0FBQzs7eUhBOUNVLDJCQUEyQjs2R0FBM0IsMkJBQTJCLGlYQ3BCeEMsc3JEQWdEQTs0RkQ1QmEsMkJBQTJCO2tCQUx2QyxTQUFTOytCQUNFLHFCQUFxQixpQkFFaEIsaUJBQWlCLENBQUMsSUFBSTs4QkFHNUIsU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVlLFNBQVM7c0JBQTdCLFNBQVM7dUJBQUMsUUFBUTs7QUF1Q3JCLFNBQVMsU0FBUyxDQUFDLE9BQWdCLEVBQUUsU0FBa0I7SUFDckQsU0FBUyxDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNuRSxjQUFjLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FDbkIsRUFBVyxFQUNYLGdCQUFxQyxFQUFFLEVBQ3ZDLGVBQW9DLEVBQUU7SUFFdEMsMEVBQTBFO0lBRTFFLEtBQUssTUFBTSxRQUFRLElBQUksYUFBYSxFQUFFO1FBQ3BDLElBQUksQ0FBQyxDQUFDLFFBQVEsSUFBSSxZQUFZLENBQUMsRUFBRTtZQUM5QixFQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDO1NBQzlCO0tBQ0Y7SUFFRCxLQUFLLE1BQU0sUUFBUSxJQUFJLFlBQVksRUFBRTtRQUNsQyxFQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQ2hEO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBWaWV3Q2hpbGQsXG4gIFRlbXBsYXRlUmVmLFxuICBFbGVtZW50UmVmLFxuICBPbkNoYW5nZXMsXG4gIEFmdGVyVmlld0luaXQsXG4gIE9uRGVzdHJveSxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuY29uc3QgZHVtbXlDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RyYW5zcG9ydC1jb250YWluZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vdHJhbnNwb3J0LWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgVHJhbnNwb3J0Q29udGFpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBpblBsYWNlT2YhOiBIVE1MRWxlbWVudDsgLy8gcmVxdWlyZWRcbiAgQElucHV0KCkgcmVwb3J0RWwhOiAoZWw6IEhUTUxFbGVtZW50IHwgbnVsbCkgPT4gdm9pZDsgLy8gcmVxdWlyZWRcbiAgQElucHV0KCkgZWxUYWchOiBzdHJpbmc7IC8vIHJlcXVpcmVkXG4gIEBJbnB1dCgpIGVsQ2xhc3Nlcz86IHN0cmluZ1tdO1xuICBASW5wdXQoKSBlbFN0eWxlPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIEBJbnB1dCgpIGVsQXR0cnM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgQElucHV0KCkgdGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+OyAvLyByZXF1aXJlZFxuICBASW5wdXQoKSByZW5kZXJQcm9wcz86IGFueTtcblxuICBAVmlld0NoaWxkKCdyb290RWwnKSByb290RWxSZWY/OiBFbGVtZW50UmVmO1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBjb25zdCByb290RWw6IEVsZW1lbnQgPSB0aGlzLnJvb3RFbFJlZj8ubmF0aXZlRWxlbWVudDsgLy8gYXNzdW1lZCBkZWZpbmVkXG5cbiAgICByZXBsYWNlRWwocm9vdEVsLCB0aGlzLmluUGxhY2VPZik7XG4gICAgYXBwbHlFbEF0dHJzKHJvb3RFbCwgdW5kZWZpbmVkLCB0aGlzLmVsQXR0cnMpO1xuICAgIHRoaXMucmVwb3J0RWwocm9vdEVsIGFzIEhUTUxFbGVtZW50KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBjb25zdCByb290RWw6IEVsZW1lbnQgfCB1bmRlZmluZWQgPSB0aGlzLnJvb3RFbFJlZj8ubmF0aXZlRWxlbWVudDtcblxuICAgIC8vIG5nT25DaGFuZ2VzIGlzIGNhbGxlZCBiZWZvcmUgbmdBZnRlclZpZXdJbml0IChhbmQgYmVmb3JlIERPTSBpbml0aWFsaXplcylcbiAgICAvLyBzbyBtYWtlIHN1cmUgcm9vdEVsIGlzIGRlZmluZWQgYmVmb3JlIGRvaW5nIGFueXRoaW5nXG4gICAgaWYgKHJvb3RFbCkge1xuICAgICAgLy8gSWYgdGhlIENvbnRlbnRDb250YWluZXIncyB0YWdOYW1lIGNoYW5nZWQsIGl0IHdpbGwgY3JlYXRlIGEgbmV3IERPTSBlbGVtZW50IGluIGl0c1xuICAgICAgLy8gb3JpZ2luYWwgcGxhY2UuIERldGVjdCB0aGlzIGFuZCByZS1yZXBsYWNlLlxuICAgICAgaWYgKHRoaXMuaW5QbGFjZU9mLnBhcmVudE5vZGUgIT09IGR1bW15Q29udGFpbmVyKSB7XG4gICAgICAgIHJlcGxhY2VFbChyb290RWwsIHRoaXMuaW5QbGFjZU9mKTtcbiAgICAgICAgYXBwbHlFbEF0dHJzKHJvb3RFbCwgdW5kZWZpbmVkLCB0aGlzLmVsQXR0cnMpO1xuICAgICAgICB0aGlzLnJlcG9ydEVsKHJvb3RFbCBhcyBIVE1MRWxlbWVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBlbEF0dHJzQ2hhbmdlID0gY2hhbmdlc1snZWxBdHRycyddO1xuXG4gICAgICAgIGlmIChlbEF0dHJzQ2hhbmdlKSB7XG4gICAgICAgICAgYXBwbHlFbEF0dHJzKHJvb3RFbCwgZWxBdHRyc0NoYW5nZS5wcmV2aW91c1ZhbHVlLCBlbEF0dHJzQ2hhbmdlLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBpbnZva2VkIEJFRk9SRSBjb21wb25lbnQgcmVtb3ZlZCBmcm9tIERPTVxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBkdW1teUNvbnRhaW5lci5yZW1vdmVDaGlsZCh0aGlzLmluUGxhY2VPZik7XG4gICAgdGhpcy5yZXBvcnRFbChudWxsKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZXBsYWNlRWwoc3ViamVjdDogRWxlbWVudCwgaW5QbGFjZU9mOiBFbGVtZW50KTogdm9pZCB7XG4gIGluUGxhY2VPZi5wYXJlbnROb2RlPy5pbnNlcnRCZWZvcmUoc3ViamVjdCwgaW5QbGFjZU9mLm5leHRTaWJsaW5nKTtcbiAgZHVtbXlDb250YWluZXIuYXBwZW5kQ2hpbGQoaW5QbGFjZU9mKTtcbn1cblxuZnVuY3Rpb24gYXBwbHlFbEF0dHJzKFxuICBlbDogRWxlbWVudCxcbiAgcHJldmlvdXNBdHRyczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9LFxuICBjdXJyZW50QXR0cnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fVxuKTogdm9pZCB7XG4gIC8vIHRoZXNlIGFyZSBjYWxsZWQgXCJhdHRyaWJ1dGVzXCIgYnV0IHRoZXkgbWFuaXB1bGF0ZSBET00gbm9kZSAqcHJvcGVydGllcypcblxuICBmb3IgKGNvbnN0IGF0dHJOYW1lIGluIHByZXZpb3VzQXR0cnMpIHtcbiAgICBpZiAoIShhdHRyTmFtZSBpbiBjdXJyZW50QXR0cnMpKSB7XG4gICAgICAoZWwgYXMgYW55KVthdHRyTmFtZV0gPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgYXR0ck5hbWUgaW4gY3VycmVudEF0dHJzKSB7XG4gICAgKGVsIGFzIGFueSlbYXR0ck5hbWVdID0gY3VycmVudEF0dHJzW2F0dHJOYW1lXTtcbiAgfVxufVxuIiwiPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImVsVGFnID09ICdkaXYnXCI+XG4gIDxkaXYgI3Jvb3RFbCBbbmdDbGFzc109XCJlbENsYXNzZXMgfHwgJydcIiBbbmdTdHlsZV09XCJlbFN0eWxlIHx8IG51bGxcIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZVwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHJlbmRlclByb3BzIH1cIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImVsVGFnID09ICdzcGFuJ1wiPlxuICA8c3BhbiAjcm9vdEVsIFtuZ0NsYXNzXT1cImVsQ2xhc3NlcyB8fCAnJ1wiIFtuZ1N0eWxlXT1cImVsU3R5bGUgfHwgbnVsbFwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRlbXBsYXRlXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcmVuZGVyUHJvcHMgfVwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuICA8L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImVsVGFnID09ICdhJ1wiPlxuICA8YSAjcm9vdEVsIFtuZ0NsYXNzXT1cImVsQ2xhc3NlcyB8fCAnJ1wiIFtuZ1N0eWxlXT1cImVsU3R5bGUgfHwgbnVsbFwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRlbXBsYXRlXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcmVuZGVyUHJvcHMgfVwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuICA8L2E+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImVsVGFnID09ICd0cidcIj5cbiAgPHRyICNyb290RWwgW25nQ2xhc3NdPVwiZWxDbGFzc2VzIHx8ICcnXCIgW25nU3R5bGVdPVwiZWxTdHlsZSB8fCBudWxsXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGVtcGxhdGVcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByZW5kZXJQcm9wcyB9XCJcbiAgICA+PC9uZy1jb250YWluZXI+XG4gIDwvdHI+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImVsVGFnID09ICd0aCdcIj5cbiAgPHRoICNyb290RWwgW25nQ2xhc3NdPVwiZWxDbGFzc2VzIHx8ICcnXCIgW25nU3R5bGVdPVwiZWxTdHlsZSB8fCBudWxsXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGVtcGxhdGVcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByZW5kZXJQcm9wcyB9XCJcbiAgICA+PC9uZy1jb250YWluZXI+XG4gIDwvdGg+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImVsVGFnID09ICd0ZCdcIj5cbiAgPHRkICNyb290RWwgW25nQ2xhc3NdPVwiZWxDbGFzc2VzIHx8ICcnXCIgW25nU3R5bGVdPVwiZWxTdHlsZSB8fCBudWxsXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGVtcGxhdGVcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByZW5kZXJQcm9wcyB9XCJcbiAgICA+PC9uZy1jb250YWluZXI+XG4gIDwvdGQ+XG48L25nLXRlbXBsYXRlPlxuIl19