UNPKG

design-angular-kit

Version:

Un toolkit Angular conforme alle linee guida di design per i servizi web della PA

90 lines 16.3 kB
import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; import { ItAbstractComponent } from '../../../../abstracts/abstract.component'; import { ItIconComponent } from '../../../utils/icon/icon.component'; import { DatePipe, NgClass } from '@angular/common'; import { TranslateModule } from '@ngx-translate/core'; import { inputToBoolean } from '../../../../utils/coercion'; import * as i0 from "@angular/core"; import * as i1 from "@ngx-translate/core"; /** * Timeline Item * @description Represents a single event for Timeline component. */ export class ItTimelineItemComponent extends ItAbstractComponent { constructor() { super(...arguments); /** * Timeline element reference date format * @default dd/MM/yyyy */ this.dateFormat = 'dd/MM/yyyy'; /** * Timeline element PIN type * @default none */ this.pinType = 'default'; /** * Timeline element PIN icon * @default code-circle */ this.pinIcon = 'code-circle'; /** * Timeline element category label */ this.categoryLabel = 'Categoria evento: '; /** * Timeline element date label */ this.dateLabel = 'Data evento: '; /** * Timeline element show detail link * @default false */ this.showReadMore = false; /** Timeline element detail link * @default # */ this.readMoreLink = '#'; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ItTimelineItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.6", type: ItTimelineItemComponent, isStandalone: true, selector: "it-timeline-item", inputs: { title: "title", text: "text", signature: "signature", eventDate: "eventDate", dateFormat: "dateFormat", pinText: "pinText", pinType: "pinType", pinIcon: "pinIcon", pinIconTitle: "pinIconTitle", categoryLabel: "categoryLabel", dateLabel: "dateLabel", categoryTitle: "categoryTitle", categoryLink: "categoryLink", showReadMore: ["showReadMore", "showReadMore", inputToBoolean], readMoreLink: "readMoreLink" }, usesInheritance: true, ngImport: i0, template: "<div class=\"timeline-element\">\n @if (pinType === 'now') {\n <span class=\"it-now-label d-none d-lg-flex\">{{ 'it.timeline.today' | translate }}</span>\n }\n <h3 class=\"it-pin-wrapper\" [ngClass]=\"{ 'it-evidence': pinType === 'evidence', 'it-now': pinType === 'now' }\">\n <div class=\"pin-icon\">\n @if (pinIcon) {\n <it-icon [name]=\"pinIcon\" [title]=\"pinIconTitle\" [attr.role]=\"pinIconTitle ? 'img' : null\"></it-icon>\n } @else {\n <it-icon name=\"code-circle\"></it-icon>\n }\n </div>\n <div class=\"pin-text\">\n <span>{{ pinText }}</span>\n </div>\n </h3>\n <div class=\"card-wrapper\">\n <div class=\"card\">\n <div class=\"card-body\">\n @if ((categoryTitle && categoryLink) || eventDate) {\n <div class=\"category-top\">\n @if (categoryTitle) {\n <span class=\"visually-hidden\">{{ categoryLabel }}</span>\n <a class=\"category\" [href]=\"categoryLink\">{{ categoryTitle }}</a>\n }\n @if (eventDate) {\n <span class=\"visually-hidden\">{{ dateLabel }}</span>\n <span class=\"data\">{{ eventDate | date: dateFormat }}</span>\n }\n </div>\n }\n <h4 class=\"card-title\">{{ title }}</h4>\n <p class=\"card-text\">{{ text }}</p>\n @if (signature) {\n <span class=\"card-signature\">{{ signature }}</span>\n }\n @if (showReadMore) {\n <a class=\"read-more\" [href]=\"readMoreLink\">\n <span class=\"text\">{{ 'it.timeline.read-more' | translate }}</span>\n <span class=\"visually-hidden\">{{ 'it.timeline.read-more-on' | translate: { title: title } }}</span>\n <it-icon name=\"arrow-right\"></it-icon>\n </a>\n }\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: ItIconComponent, selector: "it-icon", inputs: ["name", "size", "color", "padded", "svgClass", "title", "labelWaria"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ItTimelineItemComponent, decorators: [{ type: Component, args: [{ standalone: true, selector: 'it-timeline-item', changeDetection: ChangeDetectionStrategy.OnPush, imports: [ItIconComponent, DatePipe, TranslateModule, NgClass], template: "<div class=\"timeline-element\">\n @if (pinType === 'now') {\n <span class=\"it-now-label d-none d-lg-flex\">{{ 'it.timeline.today' | translate }}</span>\n }\n <h3 class=\"it-pin-wrapper\" [ngClass]=\"{ 'it-evidence': pinType === 'evidence', 'it-now': pinType === 'now' }\">\n <div class=\"pin-icon\">\n @if (pinIcon) {\n <it-icon [name]=\"pinIcon\" [title]=\"pinIconTitle\" [attr.role]=\"pinIconTitle ? 'img' : null\"></it-icon>\n } @else {\n <it-icon name=\"code-circle\"></it-icon>\n }\n </div>\n <div class=\"pin-text\">\n <span>{{ pinText }}</span>\n </div>\n </h3>\n <div class=\"card-wrapper\">\n <div class=\"card\">\n <div class=\"card-body\">\n @if ((categoryTitle && categoryLink) || eventDate) {\n <div class=\"category-top\">\n @if (categoryTitle) {\n <span class=\"visually-hidden\">{{ categoryLabel }}</span>\n <a class=\"category\" [href]=\"categoryLink\">{{ categoryTitle }}</a>\n }\n @if (eventDate) {\n <span class=\"visually-hidden\">{{ dateLabel }}</span>\n <span class=\"data\">{{ eventDate | date: dateFormat }}</span>\n }\n </div>\n }\n <h4 class=\"card-title\">{{ title }}</h4>\n <p class=\"card-text\">{{ text }}</p>\n @if (signature) {\n <span class=\"card-signature\">{{ signature }}</span>\n }\n @if (showReadMore) {\n <a class=\"read-more\" [href]=\"readMoreLink\">\n <span class=\"text\">{{ 'it.timeline.read-more' | translate }}</span>\n <span class=\"visually-hidden\">{{ 'it.timeline.read-more-on' | translate: { title: title } }}</span>\n <it-icon name=\"arrow-right\"></it-icon>\n </a>\n }\n </div>\n </div>\n </div>\n</div>\n" }] }], propDecorators: { title: [{ type: Input, args: [{ required: true }] }], text: [{ type: Input, args: [{ required: true }] }], signature: [{ type: Input }], eventDate: [{ type: Input }], dateFormat: [{ type: Input }], pinText: [{ type: Input, args: [{ required: true }] }], pinType: [{ type: Input }], pinIcon: [{ type: Input }], pinIconTitle: [{ type: Input }], categoryLabel: [{ type: Input }], dateLabel: [{ type: Input }], categoryTitle: [{ type: Input }], categoryLink: [{ type: Input }], showReadMore: [{ type: Input, args: [{ transform: inputToBoolean }] }], readMoreLink: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvdGltZWxpbmUvdGltZWxpbmUtaXRlbS90aW1lbGluZS1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY29yZS90aW1lbGluZS90aW1lbGluZS1pdGVtL3RpbWVsaW5lLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7O0FBRTVEOzs7R0FHRztBQVFILE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxtQkFBbUI7SUFQaEU7O1FBNEJFOzs7V0FHRztRQUNNLGVBQVUsR0FBVyxZQUFZLENBQUM7UUFPM0M7OztXQUdHO1FBQ00sWUFBTyxHQUFnQyxTQUFTLENBQUM7UUFFMUQ7OztXQUdHO1FBQ00sWUFBTyxHQUF5QixhQUFhLENBQUM7UUFRdkQ7O1dBRUc7UUFDTSxrQkFBYSxHQUF1QixvQkFBb0IsQ0FBQztRQUVsRTs7V0FFRztRQUNNLGNBQVMsR0FBdUIsZUFBZSxDQUFDO1FBWXpEOzs7V0FHRztRQUVILGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBRTlCOztXQUVHO1FBQ00saUJBQVksR0FBdUIsR0FBRyxDQUFDO0tBQ2pEOzhHQWpGWSx1QkFBdUI7a0dBQXZCLHVCQUF1QixxYUEwRWQsY0FBYyxrRkM5RnBDLHkwREErQ0EsNENEN0JZLGVBQWUsK0hBQUUsUUFBUSw0Q0FBRSxlQUFlLDRGQUFFLE9BQU87OzJGQUVsRCx1QkFBdUI7a0JBUG5DLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLGtCQUFrQixtQkFFWCx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDLENBQUMsZUFBZSxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsT0FBTyxDQUFDOzhCQU1uQyxLQUFLO3NCQUEvQixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFLRSxJQUFJO3NCQUE5QixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFLaEIsU0FBUztzQkFBakIsS0FBSztnQkFLRyxTQUFTO3NCQUFqQixLQUFLO2dCQU1HLFVBQVU7c0JBQWxCLEtBQUs7Z0JBS3FCLE9BQU87c0JBQWpDLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQU1oQixPQUFPO3NCQUFmLEtBQUs7Z0JBTUcsT0FBTztzQkFBZixLQUFLO2dCQU1HLFlBQVk7c0JBQXBCLEtBQUs7Z0JBS0csYUFBYTtzQkFBckIsS0FBSztnQkFLRyxTQUFTO3NCQUFqQixLQUFLO2dCQUtHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBS0csWUFBWTtzQkFBcEIsS0FBSztnQkFPTixZQUFZO3NCQURYLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFO2dCQU0zQixZQUFZO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEl0QWJzdHJhY3RDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9hYnN0cmFjdHMvYWJzdHJhY3QuY29tcG9uZW50JztcbmltcG9ydCB7IEl0SWNvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2ljb24vaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZVBpcGUsIE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBUaW1lbGluZVBJTlR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzL2NvcmUnO1xuaW1wb3J0IHsgSWNvbk5hbWUgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzL2ljb24nO1xuaW1wb3J0IHsgaW5wdXRUb0Jvb2xlYW4gfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscy9jb2VyY2lvbic7XG5cbi8qKlxuICogVGltZWxpbmUgSXRlbVxuICogQGRlc2NyaXB0aW9uIFJlcHJlc2VudHMgYSBzaW5nbGUgZXZlbnQgZm9yIFRpbWVsaW5lIGNvbXBvbmVudC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnaXQtdGltZWxpbmUtaXRlbScsXG4gIHRlbXBsYXRlVXJsOiAnLi90aW1lbGluZS1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtJdEljb25Db21wb25lbnQsIERhdGVQaXBlLCBUcmFuc2xhdGVNb2R1bGUsIE5nQ2xhc3NdLFxufSlcbmV4cG9ydCBjbGFzcyBJdFRpbWVsaW5lSXRlbUNvbXBvbmVudCBleHRlbmRzIEl0QWJzdHJhY3RDb21wb25lbnQge1xuICAvKipcbiAgICogVGltZWxpbmUgZWxlbWVudCB0aXRsZVxuICAgKi9cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgdGl0bGUhOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRpbWVsaW5lIGVsZW1lbnQgdGV4dFxuICAgKi9cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgdGV4dCE6IHN0cmluZztcblxuICAvKipcbiAgICogVGltZWxpbmUgZWxlbWVudCBzaWduYXR1cmVcbiAgICovXG4gIEBJbnB1dCgpIHNpZ25hdHVyZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaW1lbGluZSBlbGVtZW50IHJlZmVyZW5jZSBkYXRlXG4gICAqL1xuICBASW5wdXQoKSBldmVudERhdGU6IERhdGUgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRpbWVsaW5lIGVsZW1lbnQgcmVmZXJlbmNlIGRhdGUgZm9ybWF0XG4gICAqIEBkZWZhdWx0IGRkL01NL3l5eXlcbiAgICovXG4gIEBJbnB1dCgpIGRhdGVGb3JtYXQ6IHN0cmluZyA9ICdkZC9NTS95eXl5JztcblxuICAvKipcbiAgICogVGltZWxpbmUgZWxlbWVudCBQSU4gdGV4dFxuICAgKi9cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgcGluVGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaW1lbGluZSBlbGVtZW50IFBJTiB0eXBlXG4gICAqIEBkZWZhdWx0IG5vbmVcbiAgICovXG4gIEBJbnB1dCgpIHBpblR5cGU6IFRpbWVsaW5lUElOVHlwZSB8IHVuZGVmaW5lZCA9ICdkZWZhdWx0JztcblxuICAvKipcbiAgICogVGltZWxpbmUgZWxlbWVudCBQSU4gaWNvblxuICAgKiBAZGVmYXVsdCBjb2RlLWNpcmNsZVxuICAgKi9cbiAgQElucHV0KCkgcGluSWNvbjogSWNvbk5hbWUgfCB1bmRlZmluZWQgPSAnY29kZS1jaXJjbGUnO1xuXG4gIC8qKlxuICAgKiBUaW1lbGluZSBlbGVtZW50IFBJTiBpY29uXG4gICAqIEBkZWZhdWx0IGNvZGUtY2lyY2xlXG4gICAqL1xuICBASW5wdXQoKSBwaW5JY29uVGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGltZWxpbmUgZWxlbWVudCBjYXRlZ29yeSBsYWJlbFxuICAgKi9cbiAgQElucHV0KCkgY2F0ZWdvcnlMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkID0gJ0NhdGVnb3JpYSBldmVudG86ICc7XG5cbiAgLyoqXG4gICAqIFRpbWVsaW5lIGVsZW1lbnQgZGF0ZSBsYWJlbFxuICAgKi9cbiAgQElucHV0KCkgZGF0ZUxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnRGF0YSBldmVudG86ICc7XG5cbiAgLyoqXG4gICAqIFRpbWVsaW5lIGVsZW1lbnQgY2F0ZWdvcnkgdGl0bGVcbiAgICovXG4gIEBJbnB1dCgpIGNhdGVnb3J5VGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGltZWxpbmUgZWxlbWVudCBjYXRlZ29yeSBsaW5rXG4gICAqL1xuICBASW5wdXQoKSBjYXRlZ29yeUxpbms6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGltZWxpbmUgZWxlbWVudCBzaG93IGRldGFpbCBsaW5rXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pXG4gIHNob3dSZWFkTW9yZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBUaW1lbGluZSBlbGVtZW50IGRldGFpbCBsaW5rXG4gICAqIEBkZWZhdWx0ICNcbiAgICovXG4gIEBJbnB1dCgpIHJlYWRNb3JlTGluazogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyMnO1xufVxuIiwiPGRpdiBjbGFzcz1cInRpbWVsaW5lLWVsZW1lbnRcIj5cbiAgQGlmIChwaW5UeXBlID09PSAnbm93Jykge1xuICAgIDxzcGFuIGNsYXNzPVwiaXQtbm93LWxhYmVsIGQtbm9uZSBkLWxnLWZsZXhcIj57eyAnaXQudGltZWxpbmUudG9kYXknIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICB9XG4gIDxoMyBjbGFzcz1cIml0LXBpbi13cmFwcGVyXCIgW25nQ2xhc3NdPVwieyAnaXQtZXZpZGVuY2UnOiBwaW5UeXBlID09PSAnZXZpZGVuY2UnLCAnaXQtbm93JzogcGluVHlwZSA9PT0gJ25vdycgfVwiPlxuICAgIDxkaXYgY2xhc3M9XCJwaW4taWNvblwiPlxuICAgICAgQGlmIChwaW5JY29uKSB7XG4gICAgICAgIDxpdC1pY29uIFtuYW1lXT1cInBpbkljb25cIiBbdGl0bGVdPVwicGluSWNvblRpdGxlXCIgW2F0dHIucm9sZV09XCJwaW5JY29uVGl0bGUgPyAnaW1nJyA6IG51bGxcIj48L2l0LWljb24+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGl0LWljb24gbmFtZT1cImNvZGUtY2lyY2xlXCI+PC9pdC1pY29uPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJwaW4tdGV4dFwiPlxuICAgICAgPHNwYW4+e3sgcGluVGV4dCB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9oMz5cbiAgPGRpdiBjbGFzcz1cImNhcmQtd3JhcHBlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XG4gICAgICAgIEBpZiAoKGNhdGVnb3J5VGl0bGUgJiYgY2F0ZWdvcnlMaW5rKSB8fCBldmVudERhdGUpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2F0ZWdvcnktdG9wXCI+XG4gICAgICAgICAgICBAaWYgKGNhdGVnb3J5VGl0bGUpIHtcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj57eyBjYXRlZ29yeUxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8YSBjbGFzcz1cImNhdGVnb3J5XCIgW2hyZWZdPVwiY2F0ZWdvcnlMaW5rXCI+e3sgY2F0ZWdvcnlUaXRsZSB9fTwvYT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoZXZlbnREYXRlKSB7XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+e3sgZGF0ZUxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGFcIj57eyBldmVudERhdGUgfCBkYXRlOiBkYXRlRm9ybWF0IH19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIDxoNCBjbGFzcz1cImNhcmQtdGl0bGVcIj57eyB0aXRsZSB9fTwvaDQ+XG4gICAgICAgIDxwIGNsYXNzPVwiY2FyZC10ZXh0XCI+e3sgdGV4dCB9fTwvcD5cbiAgICAgICAgQGlmIChzaWduYXR1cmUpIHtcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmQtc2lnbmF0dXJlXCI+e3sgc2lnbmF0dXJlIH19PC9zcGFuPlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoc2hvd1JlYWRNb3JlKSB7XG4gICAgICAgICAgPGEgY2xhc3M9XCJyZWFkLW1vcmVcIiBbaHJlZl09XCJyZWFkTW9yZUxpbmtcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dFwiPnt7ICdpdC50aW1lbGluZS5yZWFkLW1vcmUnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj57eyAnaXQudGltZWxpbmUucmVhZC1tb3JlLW9uJyB8IHRyYW5zbGF0ZTogeyB0aXRsZTogdGl0bGUgfSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxpdC1pY29uIG5hbWU9XCJhcnJvdy1yaWdodFwiPjwvaXQtaWNvbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19