@posiwise/resource-module 0.0.130 → 0.0.132

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,7 @@
1
1
  import { Component, EventEmitter, Injector, Input, Output } from '@angular/core';
2
2
  import { AppBaseComponent } from '@posiwise/app-base-component';
3
3
  import { TOKEN_KEY } from '@posiwise/common-utilities';
4
+ import { Subject, takeUntil } from 'rxjs';
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "@angular/common";
6
7
  import * as i2 from "primeng/paginator";
@@ -12,6 +13,7 @@ export class ResourceCompanyCardComponent extends AppBaseComponent {
12
13
  constructor(injector) {
13
14
  super(injector);
14
15
  this.getPosts = new EventEmitter();
16
+ this.destroy$ = new Subject();
15
17
  this.header = '';
16
18
  this.data = [];
17
19
  this.vendor = false;
@@ -31,10 +33,13 @@ export class ResourceCompanyCardComponent extends AppBaseComponent {
31
33
  const data = res ? JSON.parse(res) : null;
32
34
  this.subscriptionId = data?.subscriptionId;
33
35
  });
36
+ this.userService
37
+ .getUserInfo()
38
+ .pipe(takeUntil(this.destroy$))
39
+ .subscribe(data => {
40
+ this.user = data;
41
+ });
34
42
  }
35
- this.userService.getUserInfo().subscribe(data => {
36
- this.user = data;
37
- });
38
43
  });
39
44
  }
40
45
  search(keywords) {
@@ -56,12 +61,16 @@ export class ResourceCompanyCardComponent extends AppBaseComponent {
56
61
  this.first = event.first;
57
62
  this.rows = event.rows;
58
63
  }
64
+ ngOnDestroy() {
65
+ this.destroy$.next();
66
+ this.destroy$.complete();
67
+ }
59
68
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ResourceCompanyCardComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
60
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ResourceCompanyCardComponent, selector: "pw-resource-company-card", inputs: { header: "header", data: "data", integrationCountDisplay: "integrationCountDisplay", vendor: "vendor" }, outputs: { getPosts: "getPosts" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div [ngClass]=\"{ 'vendors-distributor-wrapper': !vendor }\">\n <div class=\"d-flex justify-content-between align-items-center mb-3 search-container\">\n <div>\n <span class=\"int-span\">{{header}}</span>\n </div>\n <div class=\"search-wrapper position-relative\" *ngIf=\"integrationCountDisplay > 0\">\n <i class=\"fa fa-search search-icon\"></i>\n <input type=\"text\"\n\n (keyup)=\"search($event.target.value)\"\n placeholder=\"Search eg security\"\n class=\"search-input top-search-input\" />\n </div>\n\n </div>\n\n <div *ngIf=\"postData\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\"> </pw-no-data>\n </div>\n\n <div class=\"row\" *ngIf=\"!postData && integrationCountDisplay > 0\">\n <div class=\"col-md-3 mt-4\"\n *ngFor=\"let img of filteredData | slice:first:(first + rows)\">\n <div class=\"boxes d-flex align-items-center justify-content-center\">\n <ng-container *ngIf=\"img?.companyImg; else checkRectangular\">\n <img [src]=\"img.companyImg\" alt=\"Vendor Company Icon\" class=\"vendor-icon\" />\n </ng-container>\n\n <ng-template #checkRectangular>\n <ng-container *ngIf=\"img?.rectangular_picture?.url; else noImage\">\n <ng-container *ngIf=\"!img.rectangular_picture.url.includes('default-photo'); else showPostName\">\n <a class=\"vendor-link\" [href]=\"img.external_url || ('/resources/view/' + img.slug)\">\n <img [src]=\"img.rectangular_picture.url\" alt=\"Vendor Rectangular Company Icon\" class=\"vendor-icon\" />\n </a>\n <pw-resource-edit-card\n *ngIf=\"userLoggedIn && user?.auth?.granted['Pages.Admin']\"\n [id]=\"img?.id\"\n [resourceData]=\"img\"\n (updated)=\"getPosts.emit()\"></pw-resource-edit-card>\n </ng-container>\n </ng-container>\n </ng-template>\n\n <ng-template #showPostName>\n <a class=\"vendor-link\" [href]=\"img.external_url || ('/resources/view/' + img.slug)\">\n <span class=\"vendor-name text-center mt-2\">{{ img?.title }}</span>\n </a>\n <pw-resource-edit-card\n *ngIf=\"userLoggedIn && user?.auth?.granted['Pages.Admin']\"\n [id]=\"img?.id\"\n [resourceData]=\"img\"\n (updated)=\"getPosts.emit()\"></pw-resource-edit-card>\n </ng-template>\n </div>\n </div>\n\n <div class=\"customPaginator d-flex align-items-center mt-5 justify-content-center\"\n *ngIf=\"filteredData.length > 0\"\n >\n <p-paginator\n [first]=\"first\"\n [rows]=\"rows\"\n [totalRecords]=\"filteredData.length\"\n (onPageChange)=\"onPageChange($event)\"></p-paginator>\n </div>\n </div>\n</div>\n", styles: [".top-search-input{color:#000!important;border:3px solid #d4d4d4!important;padding:5px 30px!important;border-radius:29px!important}::placeholder{color:#d4d4d4}.vendors-distributor-wrapper{margin-top:5rem!important}.vendor-icon{max-width:180px;max-height:100%;width:100%!important}.vendor-name{font-size:3rem;line-height:3rem;color:var(--text-color, black)}::ng-deep .customPaginator .p-paginator{border:none!important}::ng-deep .customPaginator .p-paginator button{border:none!important}.int-span{text-transform:uppercase;font-size:2.5rem;color:var(--first)}.boxes{width:100%;min-height:150px;display:flex;align-items:center;justify-content:center;text-align:center;padding:15px;border:1px dashed #ccc;border-radius:8px;word-break:break-word;white-space:normal;height:100%}a.vendor-link{display:inline-block;transition:transform .2s ease}a.vendor-link:hover{transform:scale(1.05);cursor:pointer}.search-wrapper{position:relative;width:300px}.search-input{width:100%;padding:10px 20px 10px 40px;border:2px solid #d4d4d4;border-radius:30px;font-size:1rem;color:#000;background-color:#fff}.search-input::placeholder{color:silver}.search-input:focus{outline:none;border-color:var(--first)}.search-icon{position:absolute;top:50%;left:14px;transform:translateY(-50%);color:#d4d4d4;font-size:1.1rem}@media (width <= 768px){.vendor-icon{width:50!important}.search-container{flex-wrap:wrap!important;gap:2rem}.int-span{font-size:1.75rem}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.Paginator, selector: "p-paginator", inputs: ["pageLinkSize", "style", "styleClass", "alwaysShow", "dropdownAppendTo", "templateLeft", "templateRight", "appendTo", "dropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showFirstLastIcon", "totalRecords", "rows", "rowsPerPageOptions", "showJumpToPageDropdown", "showJumpToPageInput", "jumpToPageItemTemplate", "showPageLinks", "locale", "dropdownItemTemplate", "first"], outputs: ["onPageChange"] }, { kind: "component", type: i3.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "directive", type: i4.LazyImgDirective, selector: "img" }, { kind: "component", type: i5.ResourceEditCardComponent, selector: "pw-resource-edit-card", inputs: ["id", "resourceData"], outputs: ["updated"] }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }, { kind: "pipe", type: i6.TranslocoPipe, name: "transloco" }] }); }
69
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ResourceCompanyCardComponent, selector: "pw-resource-company-card", inputs: { header: "header", data: "data", integrationCountDisplay: "integrationCountDisplay", vendor: "vendor" }, outputs: { getPosts: "getPosts" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div [ngClass]=\"{ 'vendors-distributor-wrapper': !vendor }\">\n <div class=\"d-flex justify-content-between align-items-center mb-3 search-container\">\n <div>\n <span class=\"int-span\">{{header}}</span>\n </div>\n <div class=\"search-wrapper position-relative\" *ngIf=\"integrationCountDisplay > 0\">\n <i class=\"fa fa-search search-icon\"></i>\n <input type=\"text\"\n\n (keyup)=\"search($event.target.value)\"\n placeholder=\"Search eg security\"\n class=\"search-input top-search-input\" />\n </div>\n\n </div>\n\n <div *ngIf=\"postData\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\"> </pw-no-data>\n </div>\n\n <div class=\"row\" *ngIf=\"!postData && integrationCountDisplay > 0\">\n <div class=\"col-md-3 mt-4\"\n *ngFor=\"let img of filteredData | slice:first:(first + rows)\">\n <div class=\"boxes d-flex align-items-center justify-content-center\">\n <ng-container *ngIf=\"img?.companyImg; else checkRectangular\">\n <img [src]=\"img.companyImg\" alt=\"Vendor Company Icon\" class=\"vendor-icon\" />\n </ng-container>\n\n <ng-template #checkRectangular>\n <ng-container *ngIf=\"img?.rectangular_picture?.url; else noImage\">\n <ng-container *ngIf=\"!img.rectangular_picture.url.includes('default-photo'); else showPostName\">\n <ng-container *ngIf=\"img?.showcase; else noLinkImage\">\n <a class=\"vendor-link\" [href]=\"img.external_url || ('/resources/view/' + img.slug)\">\n <img [src]=\"img.rectangular_picture.url\" alt=\"Vendor Rectangular Company Icon\" class=\"vendor-icon\" />\n </a>\n </ng-container>\n <ng-template #noLinkImage>\n <img [src]=\"img.rectangular_picture.url\" alt=\"Vendor Rectangular Company Icon\" class=\"vendor-icon\" />\n </ng-template>\n\n <pw-resource-edit-card\n *ngIf=\"userLoggedIn && user?.auth?.granted['Pages.Admin']\"\n [id]=\"img?.id\"\n [resourceData]=\"img\"\n (updated)=\"getPosts.emit()\"></pw-resource-edit-card>\n </ng-container>\n </ng-container>\n </ng-template>\n\n <ng-template #showPostName>\n <ng-container *ngIf=\"img?.showcase; else noLinkTitle\">\n <a class=\"vendor-link\" [href]=\"img.external_url || ('/resources/view/' + img.slug)\">\n <span class=\"vendor-name text-center mt-2\">{{ img?.title }}</span>\n </a>\n </ng-container>\n <ng-template #noLinkTitle>\n <span class=\"vendor-name text-center\">{{ img?.title }}</span>\n </ng-template>\n\n <pw-resource-edit-card\n *ngIf=\"userLoggedIn && user?.auth?.granted['Pages.Admin']\"\n [id]=\"img?.id\"\n [resourceData]=\"img\"\n (updated)=\"getPosts.emit()\"></pw-resource-edit-card>\n </ng-template>\n </div>\n </div>\n\n <div class=\"customPaginator d-flex align-items-center mt-5 justify-content-center\"\n *ngIf=\"filteredData.length > 0\"\n >\n <p-paginator\n [first]=\"first\"\n [rows]=\"rows\"\n [totalRecords]=\"filteredData.length\"\n (onPageChange)=\"onPageChange($event)\"></p-paginator>\n </div>\n </div>\n</div>\n", styles: [".top-search-input{color:#000!important;border:3px solid #d4d4d4!important;padding:5px 30px!important;border-radius:29px!important}::placeholder{color:#d4d4d4}.vendors-distributor-wrapper{margin-top:5rem!important}.vendor-icon{max-width:180px;max-height:100%;width:100%!important}.vendor-name{font-size:3rem;line-height:3rem;color:var(--text-color, black)}::ng-deep .customPaginator .p-paginator{border:none!important}::ng-deep .customPaginator .p-paginator button{border:none!important}.int-span{text-transform:uppercase;font-size:2.5rem;color:var(--first)}.boxes{width:100%;min-height:150px;display:flex;align-items:center;justify-content:center;text-align:center;padding:15px;border:1px dashed #ccc;border-radius:8px;word-break:break-word;white-space:normal;height:100%}a.vendor-link{display:inline-block;transition:transform .2s ease}a.vendor-link:hover{transform:scale(1.05);cursor:pointer}.search-wrapper{position:relative;width:300px}.search-input{width:100%;padding:10px 20px 10px 40px;border:2px solid #d4d4d4;border-radius:30px;font-size:1rem;color:#000;background-color:#fff}.search-input::placeholder{color:silver}.search-input:focus{outline:none;border-color:var(--first)}.search-icon{position:absolute;top:50%;left:14px;transform:translateY(-50%);color:#d4d4d4;font-size:1.1rem}@media (width <= 768px){.vendor-icon{width:50!important}.search-container{flex-wrap:wrap!important;gap:2rem}.int-span{font-size:1.75rem}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.Paginator, selector: "p-paginator", inputs: ["pageLinkSize", "style", "styleClass", "alwaysShow", "dropdownAppendTo", "templateLeft", "templateRight", "appendTo", "dropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showFirstLastIcon", "totalRecords", "rows", "rowsPerPageOptions", "showJumpToPageDropdown", "showJumpToPageInput", "jumpToPageItemTemplate", "showPageLinks", "locale", "dropdownItemTemplate", "first"], outputs: ["onPageChange"] }, { kind: "component", type: i3.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "directive", type: i4.LazyImgDirective, selector: "img" }, { kind: "component", type: i5.ResourceEditCardComponent, selector: "pw-resource-edit-card", inputs: ["id", "resourceData"], outputs: ["updated"] }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }, { kind: "pipe", type: i6.TranslocoPipe, name: "transloco" }] }); }
61
70
  }
62
71
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ResourceCompanyCardComponent, decorators: [{
63
72
  type: Component,
64
- args: [{ selector: 'pw-resource-company-card', template: "<div [ngClass]=\"{ 'vendors-distributor-wrapper': !vendor }\">\n <div class=\"d-flex justify-content-between align-items-center mb-3 search-container\">\n <div>\n <span class=\"int-span\">{{header}}</span>\n </div>\n <div class=\"search-wrapper position-relative\" *ngIf=\"integrationCountDisplay > 0\">\n <i class=\"fa fa-search search-icon\"></i>\n <input type=\"text\"\n\n (keyup)=\"search($event.target.value)\"\n placeholder=\"Search eg security\"\n class=\"search-input top-search-input\" />\n </div>\n\n </div>\n\n <div *ngIf=\"postData\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\"> </pw-no-data>\n </div>\n\n <div class=\"row\" *ngIf=\"!postData && integrationCountDisplay > 0\">\n <div class=\"col-md-3 mt-4\"\n *ngFor=\"let img of filteredData | slice:first:(first + rows)\">\n <div class=\"boxes d-flex align-items-center justify-content-center\">\n <ng-container *ngIf=\"img?.companyImg; else checkRectangular\">\n <img [src]=\"img.companyImg\" alt=\"Vendor Company Icon\" class=\"vendor-icon\" />\n </ng-container>\n\n <ng-template #checkRectangular>\n <ng-container *ngIf=\"img?.rectangular_picture?.url; else noImage\">\n <ng-container *ngIf=\"!img.rectangular_picture.url.includes('default-photo'); else showPostName\">\n <a class=\"vendor-link\" [href]=\"img.external_url || ('/resources/view/' + img.slug)\">\n <img [src]=\"img.rectangular_picture.url\" alt=\"Vendor Rectangular Company Icon\" class=\"vendor-icon\" />\n </a>\n <pw-resource-edit-card\n *ngIf=\"userLoggedIn && user?.auth?.granted['Pages.Admin']\"\n [id]=\"img?.id\"\n [resourceData]=\"img\"\n (updated)=\"getPosts.emit()\"></pw-resource-edit-card>\n </ng-container>\n </ng-container>\n </ng-template>\n\n <ng-template #showPostName>\n <a class=\"vendor-link\" [href]=\"img.external_url || ('/resources/view/' + img.slug)\">\n <span class=\"vendor-name text-center mt-2\">{{ img?.title }}</span>\n </a>\n <pw-resource-edit-card\n *ngIf=\"userLoggedIn && user?.auth?.granted['Pages.Admin']\"\n [id]=\"img?.id\"\n [resourceData]=\"img\"\n (updated)=\"getPosts.emit()\"></pw-resource-edit-card>\n </ng-template>\n </div>\n </div>\n\n <div class=\"customPaginator d-flex align-items-center mt-5 justify-content-center\"\n *ngIf=\"filteredData.length > 0\"\n >\n <p-paginator\n [first]=\"first\"\n [rows]=\"rows\"\n [totalRecords]=\"filteredData.length\"\n (onPageChange)=\"onPageChange($event)\"></p-paginator>\n </div>\n </div>\n</div>\n", styles: [".top-search-input{color:#000!important;border:3px solid #d4d4d4!important;padding:5px 30px!important;border-radius:29px!important}::placeholder{color:#d4d4d4}.vendors-distributor-wrapper{margin-top:5rem!important}.vendor-icon{max-width:180px;max-height:100%;width:100%!important}.vendor-name{font-size:3rem;line-height:3rem;color:var(--text-color, black)}::ng-deep .customPaginator .p-paginator{border:none!important}::ng-deep .customPaginator .p-paginator button{border:none!important}.int-span{text-transform:uppercase;font-size:2.5rem;color:var(--first)}.boxes{width:100%;min-height:150px;display:flex;align-items:center;justify-content:center;text-align:center;padding:15px;border:1px dashed #ccc;border-radius:8px;word-break:break-word;white-space:normal;height:100%}a.vendor-link{display:inline-block;transition:transform .2s ease}a.vendor-link:hover{transform:scale(1.05);cursor:pointer}.search-wrapper{position:relative;width:300px}.search-input{width:100%;padding:10px 20px 10px 40px;border:2px solid #d4d4d4;border-radius:30px;font-size:1rem;color:#000;background-color:#fff}.search-input::placeholder{color:silver}.search-input:focus{outline:none;border-color:var(--first)}.search-icon{position:absolute;top:50%;left:14px;transform:translateY(-50%);color:#d4d4d4;font-size:1.1rem}@media (width <= 768px){.vendor-icon{width:50!important}.search-container{flex-wrap:wrap!important;gap:2rem}.int-span{font-size:1.75rem}}\n"] }]
73
+ args: [{ selector: 'pw-resource-company-card', template: "<div [ngClass]=\"{ 'vendors-distributor-wrapper': !vendor }\">\n <div class=\"d-flex justify-content-between align-items-center mb-3 search-container\">\n <div>\n <span class=\"int-span\">{{header}}</span>\n </div>\n <div class=\"search-wrapper position-relative\" *ngIf=\"integrationCountDisplay > 0\">\n <i class=\"fa fa-search search-icon\"></i>\n <input type=\"text\"\n\n (keyup)=\"search($event.target.value)\"\n placeholder=\"Search eg security\"\n class=\"search-input top-search-input\" />\n </div>\n\n </div>\n\n <div *ngIf=\"postData\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\"> </pw-no-data>\n </div>\n\n <div class=\"row\" *ngIf=\"!postData && integrationCountDisplay > 0\">\n <div class=\"col-md-3 mt-4\"\n *ngFor=\"let img of filteredData | slice:first:(first + rows)\">\n <div class=\"boxes d-flex align-items-center justify-content-center\">\n <ng-container *ngIf=\"img?.companyImg; else checkRectangular\">\n <img [src]=\"img.companyImg\" alt=\"Vendor Company Icon\" class=\"vendor-icon\" />\n </ng-container>\n\n <ng-template #checkRectangular>\n <ng-container *ngIf=\"img?.rectangular_picture?.url; else noImage\">\n <ng-container *ngIf=\"!img.rectangular_picture.url.includes('default-photo'); else showPostName\">\n <ng-container *ngIf=\"img?.showcase; else noLinkImage\">\n <a class=\"vendor-link\" [href]=\"img.external_url || ('/resources/view/' + img.slug)\">\n <img [src]=\"img.rectangular_picture.url\" alt=\"Vendor Rectangular Company Icon\" class=\"vendor-icon\" />\n </a>\n </ng-container>\n <ng-template #noLinkImage>\n <img [src]=\"img.rectangular_picture.url\" alt=\"Vendor Rectangular Company Icon\" class=\"vendor-icon\" />\n </ng-template>\n\n <pw-resource-edit-card\n *ngIf=\"userLoggedIn && user?.auth?.granted['Pages.Admin']\"\n [id]=\"img?.id\"\n [resourceData]=\"img\"\n (updated)=\"getPosts.emit()\"></pw-resource-edit-card>\n </ng-container>\n </ng-container>\n </ng-template>\n\n <ng-template #showPostName>\n <ng-container *ngIf=\"img?.showcase; else noLinkTitle\">\n <a class=\"vendor-link\" [href]=\"img.external_url || ('/resources/view/' + img.slug)\">\n <span class=\"vendor-name text-center mt-2\">{{ img?.title }}</span>\n </a>\n </ng-container>\n <ng-template #noLinkTitle>\n <span class=\"vendor-name text-center\">{{ img?.title }}</span>\n </ng-template>\n\n <pw-resource-edit-card\n *ngIf=\"userLoggedIn && user?.auth?.granted['Pages.Admin']\"\n [id]=\"img?.id\"\n [resourceData]=\"img\"\n (updated)=\"getPosts.emit()\"></pw-resource-edit-card>\n </ng-template>\n </div>\n </div>\n\n <div class=\"customPaginator d-flex align-items-center mt-5 justify-content-center\"\n *ngIf=\"filteredData.length > 0\"\n >\n <p-paginator\n [first]=\"first\"\n [rows]=\"rows\"\n [totalRecords]=\"filteredData.length\"\n (onPageChange)=\"onPageChange($event)\"></p-paginator>\n </div>\n </div>\n</div>\n", styles: [".top-search-input{color:#000!important;border:3px solid #d4d4d4!important;padding:5px 30px!important;border-radius:29px!important}::placeholder{color:#d4d4d4}.vendors-distributor-wrapper{margin-top:5rem!important}.vendor-icon{max-width:180px;max-height:100%;width:100%!important}.vendor-name{font-size:3rem;line-height:3rem;color:var(--text-color, black)}::ng-deep .customPaginator .p-paginator{border:none!important}::ng-deep .customPaginator .p-paginator button{border:none!important}.int-span{text-transform:uppercase;font-size:2.5rem;color:var(--first)}.boxes{width:100%;min-height:150px;display:flex;align-items:center;justify-content:center;text-align:center;padding:15px;border:1px dashed #ccc;border-radius:8px;word-break:break-word;white-space:normal;height:100%}a.vendor-link{display:inline-block;transition:transform .2s ease}a.vendor-link:hover{transform:scale(1.05);cursor:pointer}.search-wrapper{position:relative;width:300px}.search-input{width:100%;padding:10px 20px 10px 40px;border:2px solid #d4d4d4;border-radius:30px;font-size:1rem;color:#000;background-color:#fff}.search-input::placeholder{color:silver}.search-input:focus{outline:none;border-color:var(--first)}.search-icon{position:absolute;top:50%;left:14px;transform:translateY(-50%);color:#d4d4d4;font-size:1.1rem}@media (width <= 768px){.vendor-icon{width:50!important}.search-container{flex-wrap:wrap!important;gap:2rem}.int-span{font-size:1.75rem}}\n"] }]
65
74
  }], ctorParameters: () => [{ type: i0.Injector }], propDecorators: { getPosts: [{
66
75
  type: Output
67
76
  }], header: [{
@@ -73,4 +82,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
73
82
  }], vendor: [{
74
83
  type: Input
75
84
  }] } });
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtY29tcGFueS1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcmVzb3VyY2UtbW9kdWxlL3NyYy9saWIvcHVibGljL2NvbXBvbmVudHMvcmVzb3VyY2UtY29tcGFueS1jYXJkL3Jlc291cmNlLWNvbXBhbnktY2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Jlc291cmNlLW1vZHVsZS9zcmMvbGliL3B1YmxpYy9jb21wb25lbnRzL3Jlc291cmNlLWNvbXBhbnktY2FyZC9yZXNvdXJjZS1jb21wYW55LWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBZ0IsU0FBUyxFQUFRLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7O0FBYTNFLE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxnQkFBZ0I7SUFjOUQsWUFBWSxRQUFrQjtRQUMxQixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFkVixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFDL0MsV0FBTSxHQUFHLEVBQUUsQ0FBQztRQUNaLFNBQUksR0FBRyxFQUFFLENBQUM7UUFFVixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsVUFBSyxHQUFHLENBQUMsQ0FBQztRQUNWLFNBQUksR0FBRyxFQUFFLENBQUM7SUFPVixDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBQ0QsUUFBUTtRQUNKLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNsRCxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDMUIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDbEQsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7b0JBQzFDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxFQUFFLGNBQWMsQ0FBQztnQkFDL0MsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDO1lBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQzVDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsTUFBTSxDQUFDLFFBQVM7UUFDWixJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUNyQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FDekQsQ0FBQztZQUNGLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3pCLENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUMxQixDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDMUIsQ0FBQztJQUNMLENBQUM7SUFDRCxZQUFZLENBQUMsS0FBZ0I7UUFDekIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztJQUMzQixDQUFDOytHQXREUSw0QkFBNEI7bUdBQTVCLDRCQUE0QixpUUNoQnpDLGt5RkFtRUE7OzRGRG5EYSw0QkFBNEI7a0JBTHhDLFNBQVM7K0JBQ0ksMEJBQTBCOzZFQUsxQixRQUFRO3NCQUFqQixNQUFNO2dCQUNFLE1BQU07c0JBQWQsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQXBwQmFzZUNvbXBvbmVudCB9IGZyb20gJ0Bwb3Npd2lzZS9hcHAtYmFzZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVzb3VyY2VQb3N0LCBUT0tFTl9LRVksIFVzZXIgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5cbmludGVyZmFjZSBQYWdlRXZlbnQge1xuICAgIGZpcnN0OiBudW1iZXI7XG4gICAgcm93czogbnVtYmVyO1xuICAgIHBhZ2U6IG51bWJlcjtcbiAgICBwYWdlQ291bnQ6IG51bWJlcjtcbn1cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctcmVzb3VyY2UtY29tcGFueS1jYXJkJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcmVzb3VyY2UtY29tcGFueS1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vcmVzb3VyY2UtY29tcGFueS1jYXJkLmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBSZXNvdXJjZUNvbXBhbnlDYXJkQ29tcG9uZW50IGV4dGVuZHMgQXBwQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0IHtcbiAgICBAT3V0cHV0KCkgZ2V0UG9zdHMgPSBuZXcgRXZlbnRFbWl0dGVyPFJlc291cmNlUG9zdFtdPigpO1xuICAgIEBJbnB1dCgpIGhlYWRlciA9ICcnO1xuICAgIEBJbnB1dCgpIGRhdGEgPSBbXTtcbiAgICBASW5wdXQoKSBpbnRlZ3JhdGlvbkNvdW50RGlzcGxheTtcbiAgICBASW5wdXQoKSB2ZW5kb3IgPSBmYWxzZTtcbiAgICBwb3N0RGF0YSA9IGZhbHNlO1xuICAgIGZpbHRlcmVkRGF0YSA9IFtdO1xuICAgIGZpcnN0ID0gMDtcbiAgICByb3dzID0gMTI7XG4gICAgdXNlckxvZ2dlZEluOiBib29sZWFuO1xuICAgIHN1YnNjcmlwdGlvbklkOiBzdHJpbmc7XG4gICAgdXNlcjogVXNlcjtcblxuICAgIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgICAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VhcmNoKCk7XG4gICAgfVxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtJChUT0tFTl9LRVkpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgdGhpcy51c2VyTG9nZ2VkSW4gPSAhIXJlcztcbiAgICAgICAgICAgIGlmICh0aGlzLnVzZXJMb2dnZWRJbikge1xuICAgICAgICAgICAgICAgIHRoaXMubG9jYWxTdG9yYWdlLmdldEl0ZW0kKCdwcm9kdWN0Jykuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSByZXMgPyBKU09OLnBhcnNlKHJlcykgOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbklkID0gZGF0YT8uc3Vic2NyaXB0aW9uSWQ7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMudXNlclNlcnZpY2UuZ2V0VXNlckluZm8oKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VyID0gZGF0YTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgc2VhcmNoKGtleXdvcmRzPykge1xuICAgICAgICBpZiAoa2V5d29yZHMpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWREYXRhID0gdGhpcy5kYXRhLmZpbHRlcih4ID0+XG4gICAgICAgICAgICAgICAgeC50aXRsZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGtleXdvcmRzLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKHRoaXMuZmlsdGVyZWREYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMucG9zdERhdGEgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBvc3REYXRhID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkRGF0YSA9IFsuLi50aGlzLmRhdGFdO1xuICAgICAgICAgICAgdGhpcy5wb3N0RGF0YSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIG9uUGFnZUNoYW5nZShldmVudDogUGFnZUV2ZW50KSB7XG4gICAgICAgIHRoaXMuZmlyc3QgPSBldmVudC5maXJzdDtcbiAgICAgICAgdGhpcy5yb3dzID0gZXZlbnQucm93cztcbiAgICB9XG59XG4iLCI8ZGl2IFtuZ0NsYXNzXT1cInsgJ3ZlbmRvcnMtZGlzdHJpYnV0b3Itd3JhcHBlcic6ICF2ZW5kb3IgfVwiPlxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zIHNlYXJjaC1jb250YWluZXJcIj5cbiAgICA8ZGl2PlxuICAgICAgPHNwYW4gY2xhc3M9XCJpbnQtc3BhblwiPnt7aGVhZGVyfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInNlYXJjaC13cmFwcGVyIHBvc2l0aW9uLXJlbGF0aXZlXCIgKm5nSWY9XCJpbnRlZ3JhdGlvbkNvdW50RGlzcGxheSA+IDBcIj5cbiAgICAgIDxpIGNsYXNzPVwiZmEgZmEtc2VhcmNoIHNlYXJjaC1pY29uXCI+PC9pPlxuICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcblxuICAgICAgICAoa2V5dXApPVwic2VhcmNoKCRldmVudC50YXJnZXQudmFsdWUpXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggZWcgc2VjdXJpdHlcIlxuICAgICAgICBjbGFzcz1cInNlYXJjaC1pbnB1dCB0b3Atc2VhcmNoLWlucHV0XCIgLz5cbiAgICA8L2Rpdj5cblxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPVwicG9zdERhdGFcIj5cbiAgICA8cHctbm8tZGF0YSBbd2l0aEltYWdlXT1cInRydWVcIiBbbWVzc2FnZV09XCInU2VhcmNoLk5vRGF0YU1lc3NhZ2UnIHwgdHJhbnNsb2NvXCI+IDwvcHctbm8tZGF0YT5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiIXBvc3REYXRhICYmIGludGVncmF0aW9uQ291bnREaXNwbGF5ID4gMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBtdC00XCJcbiAgICAgICpuZ0Zvcj1cImxldCBpbWcgb2YgZmlsdGVyZWREYXRhIHwgc2xpY2U6Zmlyc3Q6KGZpcnN0ICsgcm93cylcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJib3hlcyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImltZz8uY29tcGFueUltZzsgZWxzZSBjaGVja1JlY3Rhbmd1bGFyXCI+XG4gICAgICAgICAgPGltZyBbc3JjXT1cImltZy5jb21wYW55SW1nXCIgYWx0PVwiVmVuZG9yIENvbXBhbnkgSWNvblwiIGNsYXNzPVwidmVuZG9yLWljb25cIiAvPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI2NoZWNrUmVjdGFuZ3VsYXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImltZz8ucmVjdGFuZ3VsYXJfcGljdHVyZT8udXJsOyBlbHNlIG5vSW1hZ2VcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaW1nLnJlY3Rhbmd1bGFyX3BpY3R1cmUudXJsLmluY2x1ZGVzKCdkZWZhdWx0LXBob3RvJyk7IGVsc2Ugc2hvd1Bvc3ROYW1lXCI+XG4gICAgICAgICAgICAgIDxhIGNsYXNzPVwidmVuZG9yLWxpbmtcIiBbaHJlZl09XCJpbWcuZXh0ZXJuYWxfdXJsIHx8ICgnL3Jlc291cmNlcy92aWV3LycgKyBpbWcuc2x1ZylcIj5cbiAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiaW1nLnJlY3Rhbmd1bGFyX3BpY3R1cmUudXJsXCIgYWx0PVwiVmVuZG9yIFJlY3Rhbmd1bGFyIENvbXBhbnkgSWNvblwiIGNsYXNzPVwidmVuZG9yLWljb25cIiAvPlxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgIDxwdy1yZXNvdXJjZS1lZGl0LWNhcmRcbiAgICAgICAgICAgICAgKm5nSWY9XCJ1c2VyTG9nZ2VkSW4gJiYgdXNlcj8uYXV0aD8uZ3JhbnRlZFsnUGFnZXMuQWRtaW4nXVwiXG4gICAgICAgICAgICAgIFtpZF09XCJpbWc/LmlkXCJcbiAgICAgICAgICAgICAgW3Jlc291cmNlRGF0YV09XCJpbWdcIlxuICAgICAgICAgICAgICAodXBkYXRlZCk9XCJnZXRQb3N0cy5lbWl0KClcIj48L3B3LXJlc291cmNlLWVkaXQtY2FyZD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjc2hvd1Bvc3ROYW1lPlxuICAgICAgICAgIDxhIGNsYXNzPVwidmVuZG9yLWxpbmtcIiBbaHJlZl09XCJpbWcuZXh0ZXJuYWxfdXJsIHx8ICgnL3Jlc291cmNlcy92aWV3LycgKyBpbWcuc2x1ZylcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmVuZG9yLW5hbWUgdGV4dC1jZW50ZXIgbXQtMlwiPnt7IGltZz8udGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgPC9hPlxuICAgICAgICAgIDxwdy1yZXNvdXJjZS1lZGl0LWNhcmRcbiAgICAgICAgICAqbmdJZj1cInVzZXJMb2dnZWRJbiAmJiB1c2VyPy5hdXRoPy5ncmFudGVkWydQYWdlcy5BZG1pbiddXCJcbiAgICAgICAgICBbaWRdPVwiaW1nPy5pZFwiXG4gICAgICAgICAgW3Jlc291cmNlRGF0YV09XCJpbWdcIlxuICAgICAgICAgICh1cGRhdGVkKT1cImdldFBvc3RzLmVtaXQoKVwiPjwvcHctcmVzb3VyY2UtZWRpdC1jYXJkPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tUGFnaW5hdG9yIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtNSBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcbiAgICAqbmdJZj1cImZpbHRlcmVkRGF0YS5sZW5ndGggPiAwXCJcbiAgICAgID5cbiAgICAgIDxwLXBhZ2luYXRvclxuICAgICAgW2ZpcnN0XT1cImZpcnN0XCJcbiAgICAgIFtyb3dzXT1cInJvd3NcIlxuICAgICAgW3RvdGFsUmVjb3Jkc109XCJmaWx0ZXJlZERhdGEubGVuZ3RoXCJcbiAgICAgIChvblBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIj48L3AtcGFnaW5hdG9yPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtY29tcGFueS1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcmVzb3VyY2UtbW9kdWxlL3NyYy9saWIvcHVibGljL2NvbXBvbmVudHMvcmVzb3VyY2UtY29tcGFueS1jYXJkL3Jlc291cmNlLWNvbXBhbnktY2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Jlc291cmNlLW1vZHVsZS9zcmMvbGliL3B1YmxpYy9jb21wb25lbnRzL3Jlc291cmNlLWNvbXBhbnktY2FyZC9yZXNvdXJjZS1jb21wYW55LWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxZQUFZLEVBQ1osUUFBUSxFQUNSLEtBQUssRUFJTCxNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFnQixTQUFTLEVBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUUzRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7QUFhMUMsTUFBTSxPQUFPLDRCQUNULFNBQVEsZ0JBQWdCO0lBa0J4QixZQUFZLFFBQWtCO1FBQzFCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQWhCVixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFDaEQsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFOUIsV0FBTSxHQUFHLEVBQUUsQ0FBQztRQUNaLFNBQUksR0FBRyxFQUFFLENBQUM7UUFFVixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsVUFBSyxHQUFHLENBQUMsQ0FBQztRQUNWLFNBQUksR0FBRyxFQUFFLENBQUM7SUFPVixDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBQ0QsUUFBUTtRQUNKLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNsRCxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDMUIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDbEQsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7b0JBQzFDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxFQUFFLGNBQWMsQ0FBQztnQkFDL0MsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLFdBQVc7cUJBQ1gsV0FBVyxFQUFFO3FCQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO3FCQUM5QixTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ2QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7Z0JBQ3JCLENBQUMsQ0FBQyxDQUFDO1lBQ1gsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELE1BQU0sQ0FBQyxRQUFTO1FBQ1osSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDckMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQ3pELENBQUM7WUFDRixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUN6QixDQUFDO2lCQUFNLENBQUM7Z0JBQ0osSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDMUIsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQzFCLENBQUM7SUFDTCxDQUFDO0lBQ0QsWUFBWSxDQUFDLEtBQWdCO1FBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7SUFDM0IsQ0FBQztJQUVRLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzdCLENBQUM7K0dBbEVRLDRCQUE0QjttR0FBNUIsNEJBQTRCLGlRQzNCekMsd3dHQStFQTs7NEZEcERhLDRCQUE0QjtrQkFMeEMsU0FBUzsrQkFDSSwwQkFBMEI7NkVBUTFCLFFBQVE7c0JBQWpCLE1BQU07Z0JBR0UsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQXBwQmFzZUNvbXBvbmVudCB9IGZyb20gJ0Bwb3Npd2lzZS9hcHAtYmFzZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVzb3VyY2VQb3N0LCBUT0tFTl9LRVksIFVzZXIgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5cbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5pbnRlcmZhY2UgUGFnZUV2ZW50IHtcbiAgICBmaXJzdDogbnVtYmVyO1xuICAgIHJvd3M6IG51bWJlcjtcbiAgICBwYWdlOiBudW1iZXI7XG4gICAgcGFnZUNvdW50OiBudW1iZXI7XG59XG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3B3LXJlc291cmNlLWNvbXBhbnktY2FyZCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Jlc291cmNlLWNvbXBhbnktY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL3Jlc291cmNlLWNvbXBhbnktY2FyZC5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VDb21wYW55Q2FyZENvbXBvbmVudFxuICAgIGV4dGVuZHMgQXBwQmFzZUNvbXBvbmVudFxuICAgIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIE9uRGVzdHJveVxue1xuICAgIEBPdXRwdXQoKSBnZXRQb3N0cyA9IG5ldyBFdmVudEVtaXR0ZXI8UmVzb3VyY2VQb3N0W10+KCk7XG4gICAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBASW5wdXQoKSBoZWFkZXIgPSAnJztcbiAgICBASW5wdXQoKSBkYXRhID0gW107XG4gICAgQElucHV0KCkgaW50ZWdyYXRpb25Db3VudERpc3BsYXk7XG4gICAgQElucHV0KCkgdmVuZG9yID0gZmFsc2U7XG4gICAgcG9zdERhdGEgPSBmYWxzZTtcbiAgICBmaWx0ZXJlZERhdGEgPSBbXTtcbiAgICBmaXJzdCA9IDA7XG4gICAgcm93cyA9IDEyO1xuICAgIHVzZXJMb2dnZWRJbjogYm9vbGVhbjtcbiAgICBzdWJzY3JpcHRpb25JZDogc3RyaW5nO1xuICAgIHVzZXI6IFVzZXI7XG5cbiAgICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlYXJjaCgpO1xuICAgIH1cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSQoVE9LRU5fS0VZKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMudXNlckxvZ2dlZEluID0gISFyZXM7XG4gICAgICAgICAgICBpZiAodGhpcy51c2VyTG9nZ2VkSW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtJCgncHJvZHVjdCcpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gcmVzID8gSlNPTi5wYXJzZShyZXMpIDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25JZCA9IGRhdGE/LnN1YnNjcmlwdGlvbklkO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMudXNlclNlcnZpY2VcbiAgICAgICAgICAgICAgICAgICAgLmdldFVzZXJJbmZvKClcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51c2VyID0gZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBzZWFyY2goa2V5d29yZHM/KSB7XG4gICAgICAgIGlmIChrZXl3b3Jkcykge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZERhdGEgPSB0aGlzLmRhdGEuZmlsdGVyKHggPT5cbiAgICAgICAgICAgICAgICB4LnRpdGxlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoa2V5d29yZHMudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJlZERhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3N0RGF0YSA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucG9zdERhdGEgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWREYXRhID0gWy4uLnRoaXMuZGF0YV07XG4gICAgICAgICAgICB0aGlzLnBvc3REYXRhID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgb25QYWdlQ2hhbmdlKGV2ZW50OiBQYWdlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5maXJzdCA9IGV2ZW50LmZpcnN0O1xuICAgICAgICB0aGlzLnJvd3MgPSBldmVudC5yb3dzO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cbn1cbiIsIjxkaXYgW25nQ2xhc3NdPVwieyAndmVuZG9ycy1kaXN0cmlidXRvci13cmFwcGVyJzogIXZlbmRvciB9XCI+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTMgc2VhcmNoLWNvbnRhaW5lclwiPlxuICAgIDxkaXY+XG4gICAgICA8c3BhbiBjbGFzcz1cImludC1zcGFuXCI+e3toZWFkZXJ9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLXdyYXBwZXIgcG9zaXRpb24tcmVsYXRpdmVcIiAqbmdJZj1cImludGVncmF0aW9uQ291bnREaXNwbGF5ID4gMFwiPlxuICAgICAgPGkgY2xhc3M9XCJmYSBmYS1zZWFyY2ggc2VhcmNoLWljb25cIj48L2k+XG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxuXG4gICAgICAgIChrZXl1cCk9XCJzZWFyY2goJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBlZyBzZWN1cml0eVwiXG4gICAgICAgIGNsYXNzPVwic2VhcmNoLWlucHV0IHRvcC1zZWFyY2gtaW5wdXRcIiAvPlxuICAgIDwvZGl2PlxuXG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCJwb3N0RGF0YVwiPlxuICAgIDxwdy1uby1kYXRhIFt3aXRoSW1hZ2VdPVwidHJ1ZVwiIFttZXNzYWdlXT1cIidTZWFyY2guTm9EYXRhTWVzc2FnZScgfCB0cmFuc2xvY29cIj4gPC9wdy1uby1kYXRhPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCIhcG9zdERhdGEgJiYgaW50ZWdyYXRpb25Db3VudERpc3BsYXkgPiAwXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIG10LTRcIlxuICAgICpuZ0Zvcj1cImxldCBpbWcgb2YgZmlsdGVyZWREYXRhIHwgc2xpY2U6Zmlyc3Q6KGZpcnN0ICsgcm93cylcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYm94ZXMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW1nPy5jb21wYW55SW1nOyBlbHNlIGNoZWNrUmVjdGFuZ3VsYXJcIj5cbiAgICAgICAgPGltZyBbc3JjXT1cImltZy5jb21wYW55SW1nXCIgYWx0PVwiVmVuZG9yIENvbXBhbnkgSWNvblwiIGNsYXNzPVwidmVuZG9yLWljb25cIiAvPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjY2hlY2tSZWN0YW5ndWxhcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImltZz8ucmVjdGFuZ3VsYXJfcGljdHVyZT8udXJsOyBlbHNlIG5vSW1hZ2VcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWltZy5yZWN0YW5ndWxhcl9waWN0dXJlLnVybC5pbmNsdWRlcygnZGVmYXVsdC1waG90bycpOyBlbHNlIHNob3dQb3N0TmFtZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImltZz8uc2hvd2Nhc2U7IGVsc2Ugbm9MaW5rSW1hZ2VcIj5cbiAgICAgICAgICAgICAgPGEgY2xhc3M9XCJ2ZW5kb3ItbGlua1wiIFtocmVmXT1cImltZy5leHRlcm5hbF91cmwgfHwgKCcvcmVzb3VyY2VzL3ZpZXcvJyArIGltZy5zbHVnKVwiPlxuICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpbWcucmVjdGFuZ3VsYXJfcGljdHVyZS51cmxcIiBhbHQ9XCJWZW5kb3IgUmVjdGFuZ3VsYXIgQ29tcGFueSBJY29uXCIgY2xhc3M9XCJ2ZW5kb3ItaWNvblwiIC8+XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub0xpbmtJbWFnZT5cbiAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImltZy5yZWN0YW5ndWxhcl9waWN0dXJlLnVybFwiIGFsdD1cIlZlbmRvciBSZWN0YW5ndWxhciBDb21wYW55IEljb25cIiBjbGFzcz1cInZlbmRvci1pY29uXCIgLz5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgIDxwdy1yZXNvdXJjZS1lZGl0LWNhcmRcbiAgICAgICAgICAgICAgKm5nSWY9XCJ1c2VyTG9nZ2VkSW4gJiYgdXNlcj8uYXV0aD8uZ3JhbnRlZFsnUGFnZXMuQWRtaW4nXVwiXG4gICAgICAgICAgICAgIFtpZF09XCJpbWc/LmlkXCJcbiAgICAgICAgICAgICAgW3Jlc291cmNlRGF0YV09XCJpbWdcIlxuICAgICAgICAgICAgICAodXBkYXRlZCk9XCJnZXRQb3N0cy5lbWl0KClcIj48L3B3LXJlc291cmNlLWVkaXQtY2FyZD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8bmctdGVtcGxhdGUgI3Nob3dQb3N0TmFtZT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImltZz8uc2hvd2Nhc2U7IGVsc2Ugbm9MaW5rVGl0bGVcIj5cbiAgICAgICAgICA8YSBjbGFzcz1cInZlbmRvci1saW5rXCIgW2hyZWZdPVwiaW1nLmV4dGVybmFsX3VybCB8fCAoJy9yZXNvdXJjZXMvdmlldy8nICsgaW1nLnNsdWcpXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZlbmRvci1uYW1lIHRleHQtY2VudGVyIG10LTJcIj57eyBpbWc/LnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9MaW5rVGl0bGU+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2ZW5kb3ItbmFtZSB0ZXh0LWNlbnRlclwiPnt7IGltZz8udGl0bGUgfX08L3NwYW4+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPHB3LXJlc291cmNlLWVkaXQtY2FyZFxuICAgICAgICAgICpuZ0lmPVwidXNlckxvZ2dlZEluICYmIHVzZXI/LmF1dGg/LmdyYW50ZWRbJ1BhZ2VzLkFkbWluJ11cIlxuICAgICAgICAgIFtpZF09XCJpbWc/LmlkXCJcbiAgICAgICAgICBbcmVzb3VyY2VEYXRhXT1cImltZ1wiXG4gICAgICAgICAgKHVwZGF0ZWQpPVwiZ2V0UG9zdHMuZW1pdCgpXCI+PC9wdy1yZXNvdXJjZS1lZGl0LWNhcmQ+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJjdXN0b21QYWdpbmF0b3IgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtdC01IGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxuICAgICpuZ0lmPVwiZmlsdGVyZWREYXRhLmxlbmd0aCA+IDBcIlxuICAgICAgPlxuICAgICAgPHAtcGFnaW5hdG9yXG4gICAgICBbZmlyc3RdPVwiZmlyc3RcIlxuICAgICAgW3Jvd3NdPVwicm93c1wiXG4gICAgICBbdG90YWxSZWNvcmRzXT1cImZpbHRlcmVkRGF0YS5sZW5ndGhcIlxuICAgICAgKG9uUGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiPjwvcC1wYWdpbmF0b3I+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -214,11 +214,11 @@ export class ResourceEditCardComponent extends AppBaseComponent {
214
214
  HelperService.handleImageFallbackPath(event, fallbackPath);
215
215
  }
216
216
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ResourceEditCardComponent, deps: [{ token: i1.FormBuilder }, { token: i2.NgbModal }, { token: i3.ResourceService }, { token: i4.TagService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
217
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ResourceEditCardComponent, selector: "pw-resource-edit-card", inputs: { id: "id", resourceData: "resourceData" }, outputs: { updated: "updated" }, usesInheritance: true, ngImport: i0, template: "<div class=\"edit-card\">\n <i class=\"fa fa-edit cursor-pointer text-dark in-page-edit-icon d-flex justify-content-center mb-2\"\n (click)=\"openModal(editResourceModal)\" title=\"Edit Resource\"></i>\n</div>\n\n<ng-template #editResourceModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Edit Resource</h5>\n <i class=\"fa fa-edit cursor-pointer text-dark in-page-edit-icon d-flex justify-content-center ms-3\"\n (click)=\"navigateToResourceEdit()\" title=\"Go to the main edit page\"></i>\n <button type=\"button\" class=\"btn-close\" aria-label=\"Close\" (click)=\"modal.dismiss()\"></button>\n </div>\n\n <div class=\"modal-body\">\n <form [formGroup]=\"editForm\">\n <div class=\"row\">\n\n\n <div class=\"col-12\">\n <pw-input-container label=\"Title\" name=\"title\">\n <input type=\"text\" class=\"form-control\" formControlName=\"title\" />\n </pw-input-container>\n </div>\n\n <div class=\"col-12 row\">\n <pw-input-container label=\"CTA Text\" name=\"cta_text\" class=\"col-md-6\">\n <input type=\"text\" class=\"form-control\" formControlName=\"cta_text\" />\n </pw-input-container>\n\n <pw-input-container label=\"External URL\" name=\"external_url\" class=\"col-md-6\">\n <input type=\"text\" class=\"form-control\" formControlName=\"external_url\" />\n </pw-input-container>\n </div>\n\n <div class=\"col-12\">\n <pw-input-container\n [label]=\"'Resource.Posts.Body' | transloco\"\n name=\"body\"\n [errorMsg]=\"'Resource.Posts.Validation.Body' | transloco\">\n <quill-editor\n [styles]=\"{ height: '300px' }\"\n class=\"quillEditor\"\n [modules]=\"editorConfig\"\n formControlName=\"body\"\n [ngClass]=\"{\n 'w-100': true,\n 'quill-container': true,\n 'is-invalid': submitted && f['body'].errors\n }\">\n </quill-editor>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-3 col-sm-6\">\n <pw-input-container\n [label]=\"'Resource.Posts.When' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Resource.Posts.Tooltip.When' | transloco\"\n name=\"when\">\n <p-calendar formControlName=\"when\"\n [showIcon]=\"true\"\n dateFormat=\"dd-M-yy\"\n [placeholder]=\"'Select Date'\"\n [ngClass]=\"{ 'is-invalid': submitted && f['when'].errors }\">\n </p-calendar>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-8\">\n <pw-input-container\n [label]=\"'Resource.Posts.Tags' | transloco\"\n class=\"ui-fluid skills-modal tags\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Resource.Posts.Tooltip.CtaText' | transloco\"\n name=\"cta_text\">\n <p-autoComplete [(ngModel)]=\"selectedTags\"\n class=\"body-bg\"\n [suggestions]=\"tagsSuggestion\"\n dataKey=\"id\"\n field=\"name\"\n (completeMethod)=\"search($event)\"\n styleClass=\"w-100\"\n [minLength]=\"1\"\n [maxlength]=\"10\"\n [dropdown]=\"true\"\n [ngModelOptions]=\"{ standalone: true }\"\n placeholder=\"Tags\"\n [multiple]=\"true\">\n </p-autoComplete>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 row\">\n <div class=\"col-md-4 col-sm-6\">\n <pw-input-container\n [label]=\"'SHOWCASE'\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Mark as showcase post'\"\n name=\"showcase\">\n <ui-switch formControlName=\"showcase\" class=\"d-block\"></ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-md-4 col-sm-6\">\n <pw-input-container\n [label]=\"'PUBLISHED'\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Set to publish the post'\"\n name=\"published_at\">\n <ui-switch formControlName=\"published_at\" class=\"d-block\"></ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-md-4 col-sm-6\">\n <pw-input-container\n [label]=\"'ACCEPTED BY ADMIN'\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Indicates approval by admin'\"\n name=\"accepted_at\">\n <ui-switch formControlName=\"accepted_at\" class=\"d-block\"></ui-switch>\n </pw-input-container>\n </div>\n </div>\n\n <div class=\"col-12 col-md-4 col-sm-4 my-4 ms-3\">\n <div class=\"text-center mb-4\">\n <label for=\"coverPicture\">{{ 'Resource.Posts.CoverPicture' | transloco }}</label>\n <div class=\"text-center d-flex flex-column align-items-center\">\n <img [src]=\"(image && !image.includes('default-photo.jpg')) ? image : 'assets/img/resource/blog.png'\"\n (click)=\"openImageModal(imageCropContent)\"\n (keydown.enter)=\"openImageModal(imageCropContent)\"\n class=\"image w-100\"\n alt=\"Modal\"\n (error)=\"handleImageError($event, 'assets/img/resource/blog.png')\" />\n <div class=\"d-flex justify-content-between align-items-center mt-2\">\n <a class=\"d-inline-block\" (click)=\"openImageModal(imageCropContent)\">\n {{ slug !== 'create' ? 'Edit' : 'Add' }} Picture\n </a>\n <i *ngIf=\"image && !image.includes('default-photo.jpg')\"\n class=\"fa fa-trash delete-icon text-danger ms-2\"\n title=\"Remove Image\"\n (click)=\"removeImage()\"\n (keydown.enter)=\"removeImage()\"\n style=\"cursor: pointer;\"></i>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"col-12 col-md-4 col-sm-4 my-4 ms-3\">\n <div class=\"text-center mb-4\">\n <label for=\"rectangularPicture\">Rectangular Picture</label>\n <div class=\"text-center d-flex flex-column align-items-center\">\n <img [src]=\"(rectangularImage && !rectangularImage.includes('default-photo.jpg')) ? rectangularImage : 'assets/img/resource/blog.png'\"\n (click)=\"openRectModal(rectContent)\"\n (keydown.enter)=\"openRectModal(rectContent)\"\n class=\"image w-100\"\n alt=\"Uploaded rectangular media preview\"\n (error)=\"handleImageError($event, 'assets/img/resource/blog.png')\" />\n <div class=\"d-flex justify-content-between align-items-center mt-2\">\n <a class=\"d-inline-block\" (click)=\"openRectModal(rectContent)\">\n {{ slug !== 'create' ? 'Edit' : 'Add' }} Picture\n </a>\n <i *ngIf=\"rectangularImage && !rectangularImage.includes('default-photo.jpg')\"\n class=\"fa fa-trash delete-icon text-danger ms-2\"\n title=\"Remove Image\"\n (click)=\"deleteRectangularImage()\"\n (keydown.enter)=\"deleteRectangularImage()\"\n style=\"cursor: pointer;\"></i>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n </form>\n </div>\n\n <div class=\"modal-footer\">\n <button class=\"btn btn-secondary\" (click)=\"modal.dismiss()\">Cancel</button>\n <button class=\"btn btn-primary\" [buttonBusy]=\"buttonBusy\" (click)=\"saveResource()\">Save</button>\n </div>\n</ng-template>\n\n<ng-template #imageCropContent let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Upload Picture</h5>\n <button type=\"button\" class=\"btn-close\" (click)=\"modal.dismiss()\"></button>\n </div>\n <div class=\"modal-body\">\n <small>You can upload a JPG, GIF, or PNG file. (Do not upload pictures containing celebrities,\n nudity, artwork or copyrighted images.)</small>\n <pw-image-cropper\n [aspectRatio]=\"'dynamic'\"\n (imageSelectionEvent)=\"onImageSelected($event)\"\n (closeEvent)=\"modal.close()\">\n </pw-image-cropper>\n </div>\n</ng-template>\n\n<ng-template #rectContent let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Upload Picture</h5>\n <button type=\"button\" class=\"btn-close float-end\" aria-label=\"Close\" (click)=\"modal.dismiss()\"></button>\n </div>\n <div class=\"modal-body\">\n <small>You can upload a JPG, GIF, or PNG file. (Do not upload pictures containing celebrities,\n nudity, artwork or copyrighted images.)</small>\n <pw-image-cropper\n #profile\n [aspectRatio]=\"'dynamic'\"\n (imageSelectionEvent)=\"onRectangularImageSelection($event)\"\n (closeEvent)=\"onClose()\">\n </pw-image-cropper>\n </div>\n</ng-template>\n", styles: ["::ng-deep .modal-content{margin-top:5rem!important}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.UiSwitchComponent, selector: "ui-switch", inputs: ["size", "color", "switchOffColor", "switchColor", "defaultBgColor", "defaultBoColor", "checkedLabel", "uncheckedLabel", "checkedTextColor", "uncheckedTextColor", "beforeChange", "ariaLabel", "checked", "disabled", "reverse", "loading"], outputs: ["change", "changeEvent", "valueChange"] }, { kind: "component", type: i7.Calendar, selector: "p-calendar", inputs: ["iconDisplay", "style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepYearPicker", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "variant", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "component", type: i8.ProfileImageCropperComponent, selector: "pw-image-cropper", inputs: ["aspectRatio", "dynamicData"], outputs: ["imageSelectionEvent", "closeEvent", "fileChangeEvent"] }, { kind: "component", type: i9.AutoComplete, selector: "p-autoComplete", inputs: ["minLength", "delay", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "disabled", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "field", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "overlayOptions", "suggestions", "itemSize", "optionLabel", "optionValue", "id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "selectOnFocus", "searchLocale", "optionDisabled", "focusOnHover", "variant"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "component", type: i8.InputContainerComponent, selector: "pw-input-container", inputs: ["name", "label", "labelClass", "tooltipPosition", "required", "errorMsg", "isReadOnly", "showTooltip", "tooltipText", "showTriangle", "afterLabel", "showAfterLabel", "showTriangleText", "isLeftTooltip"] }, { kind: "component", type: i10.QuillEditorComponent, selector: "quill-editor" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i11.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "directive", type: i11.LazyImgDirective, selector: "img" }, { kind: "pipe", type: i12.TranslocoPipe, name: "transloco" }] }); }
217
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ResourceEditCardComponent, selector: "pw-resource-edit-card", inputs: { id: "id", resourceData: "resourceData" }, outputs: { updated: "updated" }, usesInheritance: true, ngImport: i0, template: "<div class=\"edit-card\">\n <i class=\"fa fa-edit cursor-pointer text-dark in-page-edit-icon d-flex justify-content-center mb-2\"\n (click)=\"openModal(editResourceModal)\" title=\"Edit Resource\"></i>\n</div>\n\n<ng-template #editResourceModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Edit Resource</h5>\n <i class=\"fa fa-edit cursor-pointer text-dark in-page-edit-icon d-flex justify-content-center ms-3\"\n (click)=\"navigateToResourceEdit()\" title=\"Go to the main edit page\"></i>\n <button type=\"button\" class=\"btn-close\" aria-label=\"Close\" (click)=\"modal.dismiss()\"></button>\n </div>\n\n <div class=\"modal-body\">\n <form [formGroup]=\"editForm\">\n <div class=\"row\">\n\n\n <div class=\"col-12\">\n <pw-input-container label=\"Title\" name=\"title\">\n <input type=\"text\" class=\"form-control\" formControlName=\"title\" />\n </pw-input-container>\n </div>\n\n <div class=\"col-12 row\">\n <pw-input-container label=\"CTA Text\" name=\"cta_text\" class=\"col-md-6\">\n <input type=\"text\" class=\"form-control\" formControlName=\"cta_text\" />\n </pw-input-container>\n\n <pw-input-container label=\"External URL\" name=\"external_url\" class=\"col-md-6\">\n <input type=\"text\" class=\"form-control\" formControlName=\"external_url\" />\n </pw-input-container>\n </div>\n\n <div class=\"col-12\">\n <pw-input-container\n [label]=\"'Resource.Posts.Body' | transloco\"\n name=\"body\"\n [errorMsg]=\"'Resource.Posts.Validation.Body' | transloco\">\n <quill-editor\n [styles]=\"{ height: '300px' }\"\n class=\"quillEditor\"\n [modules]=\"editorConfig\"\n formControlName=\"body\"\n [ngClass]=\"{\n 'w-100': true,\n 'quill-container': true,\n 'is-invalid': submitted && f['body'].errors\n }\">\n </quill-editor>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-3 col-sm-6\">\n <pw-input-container\n [label]=\"'Resource.Posts.When' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Resource.Posts.Tooltip.When' | transloco\"\n name=\"when\">\n <p-calendar formControlName=\"when\"\n [showIcon]=\"true\"\n dateFormat=\"dd-M-yy\"\n [placeholder]=\"'Select Date'\"\n [ngClass]=\"{ 'is-invalid': submitted && f['when'].errors }\">\n </p-calendar>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-8\">\n <pw-input-container\n [label]=\"'Resource.Posts.Tags' | transloco\"\n class=\"ui-fluid skills-modal tags\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Resource.Posts.Tooltip.CtaText' | transloco\"\n name=\"cta_text\">\n <p-autoComplete [(ngModel)]=\"selectedTags\"\n class=\"body-bg\"\n [suggestions]=\"tagsSuggestion\"\n dataKey=\"id\"\n field=\"name\"\n (completeMethod)=\"search($event)\"\n styleClass=\"w-100\"\n [minLength]=\"1\"\n [maxlength]=\"10\"\n [dropdown]=\"true\"\n [ngModelOptions]=\"{ standalone: true }\"\n placeholder=\"Tags\"\n [multiple]=\"true\">\n </p-autoComplete>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 row\">\n <div class=\"col-md-4 col-sm-6\">\n <pw-input-container\n [label]=\"'SHOWCASE'\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Mark as showcase post'\"\n name=\"showcase\">\n <ui-switch formControlName=\"showcase\" class=\"d-block\"></ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-md-4 col-sm-6\">\n <pw-input-container\n [label]=\"'PUBLISHED'\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Set to publish the post'\"\n name=\"published_at\">\n <ui-switch formControlName=\"published_at\" class=\"d-block\"></ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-md-4 col-sm-6\">\n <pw-input-container\n [label]=\"'ACCEPTED BY ADMIN'\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Indicates approval by admin'\"\n name=\"accepted_at\">\n <ui-switch formControlName=\"accepted_at\" class=\"d-block\"></ui-switch>\n </pw-input-container>\n </div>\n </div>\n\n <div class=\"col-12 col-md-4 col-sm-4 my-4 ms-3\">\n <div class=\"text-center mb-4\">\n <label for=\"coverPicture\">{{ 'Resource.Posts.CoverPicture' | transloco }}</label>\n <div class=\"text-center d-flex flex-column align-items-center\">\n <img [src]=\"(image && !image.includes('default-photo.jpg')) ? image : 'assets/img/resource/blog.png'\"\n (click)=\"openImageModal(imageCropContent)\"\n (keydown.enter)=\"openImageModal(imageCropContent)\"\n class=\"image w-100\"\n alt=\"Modal\"\n (error)=\"handleImageError($event, 'assets/img/resource/blog.png')\" />\n <div class=\"d-flex justify-content-between align-items-center mt-2\">\n <a class=\"d-inline-block\" (click)=\"openImageModal(imageCropContent)\">\n {{ slug !== 'create' ? 'Edit' : 'Add' }} Picture\n </a>\n <i *ngIf=\"image && !image.includes('default-photo.jpg')\"\n class=\"fa fa-trash delete-icon text-danger ms-2 cursor-pointer\"\n title=\"Remove Image\"\n (click)=\"removeImage()\"\n (keydown.enter)=\"removeImage()\"></i>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"col-12 col-md-4 col-sm-4 my-4 ms-3\">\n <div class=\"text-center mb-4\">\n <label for=\"rectangularPicture\">Rectangular Picture</label>\n <div class=\"text-center d-flex flex-column align-items-center\">\n <img [src]=\"(rectangularImage && !rectangularImage.includes('default-photo.jpg')) ? rectangularImage : 'assets/img/resource/blog.png'\"\n (click)=\"openRectModal(rectContent)\"\n (keydown.enter)=\"openRectModal(rectContent)\"\n class=\"image w-100\"\n alt=\"Uploaded rectangular media preview\"\n (error)=\"handleImageError($event, 'assets/img/resource/blog.png')\" />\n <div class=\"d-flex justify-content-between align-items-center mt-2\">\n <a class=\"d-inline-block\" (click)=\"openRectModal(rectContent)\">\n {{ slug !== 'create' ? 'Edit' : 'Add' }} Picture\n </a>\n <i *ngIf=\"rectangularImage && !rectangularImage.includes('default-photo.jpg')\"\n class=\"fa fa-trash delete-icon text-danger ms-2 cursor-pointer\"\n title=\"Remove Image\"\n (click)=\"deleteRectangularImage()\"\n (keydown.enter)=\"deleteRectangularImage()\"></i>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n </form>\n </div>\n\n <div class=\"modal-footer\">\n <button class=\"btn btn-secondary\" (click)=\"modal.dismiss()\">Cancel</button>\n <button class=\"btn btn-primary\" [buttonBusy]=\"buttonBusy\" (click)=\"saveResource()\">Save</button>\n </div>\n</ng-template>\n\n<ng-template #imageCropContent let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Upload Picture</h5>\n <button type=\"button\" class=\"btn-close\" (click)=\"modal.dismiss()\"></button>\n </div>\n <div class=\"modal-body\">\n <small>You can upload a JPG, GIF, or PNG file. (Do not upload pictures containing celebrities,\n nudity, artwork or copyrighted images.)</small>\n <pw-image-cropper\n [aspectRatio]=\"'dynamic'\"\n (imageSelectionEvent)=\"onImageSelected($event)\"\n (closeEvent)=\"modal.close()\">\n </pw-image-cropper>\n </div>\n</ng-template>\n\n<ng-template #rectContent let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Upload Picture</h5>\n <button type=\"button\" class=\"btn-close float-end\" aria-label=\"Close\" (click)=\"modal.dismiss()\"></button>\n </div>\n <div class=\"modal-body\">\n <small>You can upload a JPG, GIF, or PNG file. (Do not upload pictures containing celebrities,\n nudity, artwork or copyrighted images.)</small>\n <pw-image-cropper\n #profile\n [aspectRatio]=\"'dynamic'\"\n (imageSelectionEvent)=\"onRectangularImageSelection($event)\"\n (closeEvent)=\"onClose()\">\n </pw-image-cropper>\n </div>\n</ng-template>\n", styles: ["::ng-deep .modal-content{margin-top:5rem!important}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.UiSwitchComponent, selector: "ui-switch", inputs: ["size", "color", "switchOffColor", "switchColor", "defaultBgColor", "defaultBoColor", "checkedLabel", "uncheckedLabel", "checkedTextColor", "uncheckedTextColor", "beforeChange", "ariaLabel", "checked", "disabled", "reverse", "loading"], outputs: ["change", "changeEvent", "valueChange"] }, { kind: "component", type: i7.Calendar, selector: "p-calendar", inputs: ["iconDisplay", "style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepYearPicker", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "variant", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "component", type: i8.ProfileImageCropperComponent, selector: "pw-image-cropper", inputs: ["aspectRatio", "dynamicData"], outputs: ["imageSelectionEvent", "closeEvent", "fileChangeEvent"] }, { kind: "component", type: i9.AutoComplete, selector: "p-autoComplete", inputs: ["minLength", "delay", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "disabled", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "field", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "overlayOptions", "suggestions", "itemSize", "optionLabel", "optionValue", "id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "selectOnFocus", "searchLocale", "optionDisabled", "focusOnHover", "variant"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "component", type: i8.InputContainerComponent, selector: "pw-input-container", inputs: ["name", "label", "labelClass", "tooltipPosition", "required", "errorMsg", "isReadOnly", "showTooltip", "tooltipText", "showTriangle", "afterLabel", "showAfterLabel", "showTriangleText", "isLeftTooltip"] }, { kind: "component", type: i10.QuillEditorComponent, selector: "quill-editor" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i11.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "directive", type: i11.LazyImgDirective, selector: "img" }, { kind: "pipe", type: i12.TranslocoPipe, name: "transloco" }] }); }
218
218
  }
219
219
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ResourceEditCardComponent, decorators: [{
220
220
  type: Component,
221
- args: [{ selector: 'pw-resource-edit-card', template: "<div class=\"edit-card\">\n <i class=\"fa fa-edit cursor-pointer text-dark in-page-edit-icon d-flex justify-content-center mb-2\"\n (click)=\"openModal(editResourceModal)\" title=\"Edit Resource\"></i>\n</div>\n\n<ng-template #editResourceModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Edit Resource</h5>\n <i class=\"fa fa-edit cursor-pointer text-dark in-page-edit-icon d-flex justify-content-center ms-3\"\n (click)=\"navigateToResourceEdit()\" title=\"Go to the main edit page\"></i>\n <button type=\"button\" class=\"btn-close\" aria-label=\"Close\" (click)=\"modal.dismiss()\"></button>\n </div>\n\n <div class=\"modal-body\">\n <form [formGroup]=\"editForm\">\n <div class=\"row\">\n\n\n <div class=\"col-12\">\n <pw-input-container label=\"Title\" name=\"title\">\n <input type=\"text\" class=\"form-control\" formControlName=\"title\" />\n </pw-input-container>\n </div>\n\n <div class=\"col-12 row\">\n <pw-input-container label=\"CTA Text\" name=\"cta_text\" class=\"col-md-6\">\n <input type=\"text\" class=\"form-control\" formControlName=\"cta_text\" />\n </pw-input-container>\n\n <pw-input-container label=\"External URL\" name=\"external_url\" class=\"col-md-6\">\n <input type=\"text\" class=\"form-control\" formControlName=\"external_url\" />\n </pw-input-container>\n </div>\n\n <div class=\"col-12\">\n <pw-input-container\n [label]=\"'Resource.Posts.Body' | transloco\"\n name=\"body\"\n [errorMsg]=\"'Resource.Posts.Validation.Body' | transloco\">\n <quill-editor\n [styles]=\"{ height: '300px' }\"\n class=\"quillEditor\"\n [modules]=\"editorConfig\"\n formControlName=\"body\"\n [ngClass]=\"{\n 'w-100': true,\n 'quill-container': true,\n 'is-invalid': submitted && f['body'].errors\n }\">\n </quill-editor>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-3 col-sm-6\">\n <pw-input-container\n [label]=\"'Resource.Posts.When' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Resource.Posts.Tooltip.When' | transloco\"\n name=\"when\">\n <p-calendar formControlName=\"when\"\n [showIcon]=\"true\"\n dateFormat=\"dd-M-yy\"\n [placeholder]=\"'Select Date'\"\n [ngClass]=\"{ 'is-invalid': submitted && f['when'].errors }\">\n </p-calendar>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-8\">\n <pw-input-container\n [label]=\"'Resource.Posts.Tags' | transloco\"\n class=\"ui-fluid skills-modal tags\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Resource.Posts.Tooltip.CtaText' | transloco\"\n name=\"cta_text\">\n <p-autoComplete [(ngModel)]=\"selectedTags\"\n class=\"body-bg\"\n [suggestions]=\"tagsSuggestion\"\n dataKey=\"id\"\n field=\"name\"\n (completeMethod)=\"search($event)\"\n styleClass=\"w-100\"\n [minLength]=\"1\"\n [maxlength]=\"10\"\n [dropdown]=\"true\"\n [ngModelOptions]=\"{ standalone: true }\"\n placeholder=\"Tags\"\n [multiple]=\"true\">\n </p-autoComplete>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 row\">\n <div class=\"col-md-4 col-sm-6\">\n <pw-input-container\n [label]=\"'SHOWCASE'\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Mark as showcase post'\"\n name=\"showcase\">\n <ui-switch formControlName=\"showcase\" class=\"d-block\"></ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-md-4 col-sm-6\">\n <pw-input-container\n [label]=\"'PUBLISHED'\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Set to publish the post'\"\n name=\"published_at\">\n <ui-switch formControlName=\"published_at\" class=\"d-block\"></ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-md-4 col-sm-6\">\n <pw-input-container\n [label]=\"'ACCEPTED BY ADMIN'\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Indicates approval by admin'\"\n name=\"accepted_at\">\n <ui-switch formControlName=\"accepted_at\" class=\"d-block\"></ui-switch>\n </pw-input-container>\n </div>\n </div>\n\n <div class=\"col-12 col-md-4 col-sm-4 my-4 ms-3\">\n <div class=\"text-center mb-4\">\n <label for=\"coverPicture\">{{ 'Resource.Posts.CoverPicture' | transloco }}</label>\n <div class=\"text-center d-flex flex-column align-items-center\">\n <img [src]=\"(image && !image.includes('default-photo.jpg')) ? image : 'assets/img/resource/blog.png'\"\n (click)=\"openImageModal(imageCropContent)\"\n (keydown.enter)=\"openImageModal(imageCropContent)\"\n class=\"image w-100\"\n alt=\"Modal\"\n (error)=\"handleImageError($event, 'assets/img/resource/blog.png')\" />\n <div class=\"d-flex justify-content-between align-items-center mt-2\">\n <a class=\"d-inline-block\" (click)=\"openImageModal(imageCropContent)\">\n {{ slug !== 'create' ? 'Edit' : 'Add' }} Picture\n </a>\n <i *ngIf=\"image && !image.includes('default-photo.jpg')\"\n class=\"fa fa-trash delete-icon text-danger ms-2\"\n title=\"Remove Image\"\n (click)=\"removeImage()\"\n (keydown.enter)=\"removeImage()\"\n style=\"cursor: pointer;\"></i>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"col-12 col-md-4 col-sm-4 my-4 ms-3\">\n <div class=\"text-center mb-4\">\n <label for=\"rectangularPicture\">Rectangular Picture</label>\n <div class=\"text-center d-flex flex-column align-items-center\">\n <img [src]=\"(rectangularImage && !rectangularImage.includes('default-photo.jpg')) ? rectangularImage : 'assets/img/resource/blog.png'\"\n (click)=\"openRectModal(rectContent)\"\n (keydown.enter)=\"openRectModal(rectContent)\"\n class=\"image w-100\"\n alt=\"Uploaded rectangular media preview\"\n (error)=\"handleImageError($event, 'assets/img/resource/blog.png')\" />\n <div class=\"d-flex justify-content-between align-items-center mt-2\">\n <a class=\"d-inline-block\" (click)=\"openRectModal(rectContent)\">\n {{ slug !== 'create' ? 'Edit' : 'Add' }} Picture\n </a>\n <i *ngIf=\"rectangularImage && !rectangularImage.includes('default-photo.jpg')\"\n class=\"fa fa-trash delete-icon text-danger ms-2\"\n title=\"Remove Image\"\n (click)=\"deleteRectangularImage()\"\n (keydown.enter)=\"deleteRectangularImage()\"\n style=\"cursor: pointer;\"></i>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n </form>\n </div>\n\n <div class=\"modal-footer\">\n <button class=\"btn btn-secondary\" (click)=\"modal.dismiss()\">Cancel</button>\n <button class=\"btn btn-primary\" [buttonBusy]=\"buttonBusy\" (click)=\"saveResource()\">Save</button>\n </div>\n</ng-template>\n\n<ng-template #imageCropContent let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Upload Picture</h5>\n <button type=\"button\" class=\"btn-close\" (click)=\"modal.dismiss()\"></button>\n </div>\n <div class=\"modal-body\">\n <small>You can upload a JPG, GIF, or PNG file. (Do not upload pictures containing celebrities,\n nudity, artwork or copyrighted images.)</small>\n <pw-image-cropper\n [aspectRatio]=\"'dynamic'\"\n (imageSelectionEvent)=\"onImageSelected($event)\"\n (closeEvent)=\"modal.close()\">\n </pw-image-cropper>\n </div>\n</ng-template>\n\n<ng-template #rectContent let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Upload Picture</h5>\n <button type=\"button\" class=\"btn-close float-end\" aria-label=\"Close\" (click)=\"modal.dismiss()\"></button>\n </div>\n <div class=\"modal-body\">\n <small>You can upload a JPG, GIF, or PNG file. (Do not upload pictures containing celebrities,\n nudity, artwork or copyrighted images.)</small>\n <pw-image-cropper\n #profile\n [aspectRatio]=\"'dynamic'\"\n (imageSelectionEvent)=\"onRectangularImageSelection($event)\"\n (closeEvent)=\"onClose()\">\n </pw-image-cropper>\n </div>\n</ng-template>\n", styles: ["::ng-deep .modal-content{margin-top:5rem!important}\n"] }]
221
+ args: [{ selector: 'pw-resource-edit-card', template: "<div class=\"edit-card\">\n <i class=\"fa fa-edit cursor-pointer text-dark in-page-edit-icon d-flex justify-content-center mb-2\"\n (click)=\"openModal(editResourceModal)\" title=\"Edit Resource\"></i>\n</div>\n\n<ng-template #editResourceModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Edit Resource</h5>\n <i class=\"fa fa-edit cursor-pointer text-dark in-page-edit-icon d-flex justify-content-center ms-3\"\n (click)=\"navigateToResourceEdit()\" title=\"Go to the main edit page\"></i>\n <button type=\"button\" class=\"btn-close\" aria-label=\"Close\" (click)=\"modal.dismiss()\"></button>\n </div>\n\n <div class=\"modal-body\">\n <form [formGroup]=\"editForm\">\n <div class=\"row\">\n\n\n <div class=\"col-12\">\n <pw-input-container label=\"Title\" name=\"title\">\n <input type=\"text\" class=\"form-control\" formControlName=\"title\" />\n </pw-input-container>\n </div>\n\n <div class=\"col-12 row\">\n <pw-input-container label=\"CTA Text\" name=\"cta_text\" class=\"col-md-6\">\n <input type=\"text\" class=\"form-control\" formControlName=\"cta_text\" />\n </pw-input-container>\n\n <pw-input-container label=\"External URL\" name=\"external_url\" class=\"col-md-6\">\n <input type=\"text\" class=\"form-control\" formControlName=\"external_url\" />\n </pw-input-container>\n </div>\n\n <div class=\"col-12\">\n <pw-input-container\n [label]=\"'Resource.Posts.Body' | transloco\"\n name=\"body\"\n [errorMsg]=\"'Resource.Posts.Validation.Body' | transloco\">\n <quill-editor\n [styles]=\"{ height: '300px' }\"\n class=\"quillEditor\"\n [modules]=\"editorConfig\"\n formControlName=\"body\"\n [ngClass]=\"{\n 'w-100': true,\n 'quill-container': true,\n 'is-invalid': submitted && f['body'].errors\n }\">\n </quill-editor>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-3 col-sm-6\">\n <pw-input-container\n [label]=\"'Resource.Posts.When' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Resource.Posts.Tooltip.When' | transloco\"\n name=\"when\">\n <p-calendar formControlName=\"when\"\n [showIcon]=\"true\"\n dateFormat=\"dd-M-yy\"\n [placeholder]=\"'Select Date'\"\n [ngClass]=\"{ 'is-invalid': submitted && f['when'].errors }\">\n </p-calendar>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-8\">\n <pw-input-container\n [label]=\"'Resource.Posts.Tags' | transloco\"\n class=\"ui-fluid skills-modal tags\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Resource.Posts.Tooltip.CtaText' | transloco\"\n name=\"cta_text\">\n <p-autoComplete [(ngModel)]=\"selectedTags\"\n class=\"body-bg\"\n [suggestions]=\"tagsSuggestion\"\n dataKey=\"id\"\n field=\"name\"\n (completeMethod)=\"search($event)\"\n styleClass=\"w-100\"\n [minLength]=\"1\"\n [maxlength]=\"10\"\n [dropdown]=\"true\"\n [ngModelOptions]=\"{ standalone: true }\"\n placeholder=\"Tags\"\n [multiple]=\"true\">\n </p-autoComplete>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 row\">\n <div class=\"col-md-4 col-sm-6\">\n <pw-input-container\n [label]=\"'SHOWCASE'\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Mark as showcase post'\"\n name=\"showcase\">\n <ui-switch formControlName=\"showcase\" class=\"d-block\"></ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-md-4 col-sm-6\">\n <pw-input-container\n [label]=\"'PUBLISHED'\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Set to publish the post'\"\n name=\"published_at\">\n <ui-switch formControlName=\"published_at\" class=\"d-block\"></ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-md-4 col-sm-6\">\n <pw-input-container\n [label]=\"'ACCEPTED BY ADMIN'\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Indicates approval by admin'\"\n name=\"accepted_at\">\n <ui-switch formControlName=\"accepted_at\" class=\"d-block\"></ui-switch>\n </pw-input-container>\n </div>\n </div>\n\n <div class=\"col-12 col-md-4 col-sm-4 my-4 ms-3\">\n <div class=\"text-center mb-4\">\n <label for=\"coverPicture\">{{ 'Resource.Posts.CoverPicture' | transloco }}</label>\n <div class=\"text-center d-flex flex-column align-items-center\">\n <img [src]=\"(image && !image.includes('default-photo.jpg')) ? image : 'assets/img/resource/blog.png'\"\n (click)=\"openImageModal(imageCropContent)\"\n (keydown.enter)=\"openImageModal(imageCropContent)\"\n class=\"image w-100\"\n alt=\"Modal\"\n (error)=\"handleImageError($event, 'assets/img/resource/blog.png')\" />\n <div class=\"d-flex justify-content-between align-items-center mt-2\">\n <a class=\"d-inline-block\" (click)=\"openImageModal(imageCropContent)\">\n {{ slug !== 'create' ? 'Edit' : 'Add' }} Picture\n </a>\n <i *ngIf=\"image && !image.includes('default-photo.jpg')\"\n class=\"fa fa-trash delete-icon text-danger ms-2 cursor-pointer\"\n title=\"Remove Image\"\n (click)=\"removeImage()\"\n (keydown.enter)=\"removeImage()\"></i>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"col-12 col-md-4 col-sm-4 my-4 ms-3\">\n <div class=\"text-center mb-4\">\n <label for=\"rectangularPicture\">Rectangular Picture</label>\n <div class=\"text-center d-flex flex-column align-items-center\">\n <img [src]=\"(rectangularImage && !rectangularImage.includes('default-photo.jpg')) ? rectangularImage : 'assets/img/resource/blog.png'\"\n (click)=\"openRectModal(rectContent)\"\n (keydown.enter)=\"openRectModal(rectContent)\"\n class=\"image w-100\"\n alt=\"Uploaded rectangular media preview\"\n (error)=\"handleImageError($event, 'assets/img/resource/blog.png')\" />\n <div class=\"d-flex justify-content-between align-items-center mt-2\">\n <a class=\"d-inline-block\" (click)=\"openRectModal(rectContent)\">\n {{ slug !== 'create' ? 'Edit' : 'Add' }} Picture\n </a>\n <i *ngIf=\"rectangularImage && !rectangularImage.includes('default-photo.jpg')\"\n class=\"fa fa-trash delete-icon text-danger ms-2 cursor-pointer\"\n title=\"Remove Image\"\n (click)=\"deleteRectangularImage()\"\n (keydown.enter)=\"deleteRectangularImage()\"></i>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n </form>\n </div>\n\n <div class=\"modal-footer\">\n <button class=\"btn btn-secondary\" (click)=\"modal.dismiss()\">Cancel</button>\n <button class=\"btn btn-primary\" [buttonBusy]=\"buttonBusy\" (click)=\"saveResource()\">Save</button>\n </div>\n</ng-template>\n\n<ng-template #imageCropContent let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Upload Picture</h5>\n <button type=\"button\" class=\"btn-close\" (click)=\"modal.dismiss()\"></button>\n </div>\n <div class=\"modal-body\">\n <small>You can upload a JPG, GIF, or PNG file. (Do not upload pictures containing celebrities,\n nudity, artwork or copyrighted images.)</small>\n <pw-image-cropper\n [aspectRatio]=\"'dynamic'\"\n (imageSelectionEvent)=\"onImageSelected($event)\"\n (closeEvent)=\"modal.close()\">\n </pw-image-cropper>\n </div>\n</ng-template>\n\n<ng-template #rectContent let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Upload Picture</h5>\n <button type=\"button\" class=\"btn-close float-end\" aria-label=\"Close\" (click)=\"modal.dismiss()\"></button>\n </div>\n <div class=\"modal-body\">\n <small>You can upload a JPG, GIF, or PNG file. (Do not upload pictures containing celebrities,\n nudity, artwork or copyrighted images.)</small>\n <pw-image-cropper\n #profile\n [aspectRatio]=\"'dynamic'\"\n (imageSelectionEvent)=\"onRectangularImageSelection($event)\"\n (closeEvent)=\"onClose()\">\n </pw-image-cropper>\n </div>\n</ng-template>\n", styles: ["::ng-deep .modal-content{margin-top:5rem!important}\n"] }]
222
222
  }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.NgbModal }, { type: i3.ResourceService }, { type: i4.TagService }, { type: i0.Injector }], propDecorators: { id: [{
223
223
  type: Input
224
224
  }], resourceData: [{
@@ -226,4 +226,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
226
226
  }], updated: [{
227
227
  type: Output
228
228
  }] } });
229
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtZWRpdC1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcmVzb3VyY2UtbW9kdWxlL3NyYy9saWIvcHVibGljL2NvbXBvbmVudHMvcmVzb3VyY2UtZWRpdC1jYXJkL3Jlc291cmNlLWVkaXQtY2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Jlc291cmNlLW1vZHVsZS9zcmMvbGliL3B1YmxpYy9jb21wb25lbnRzL3Jlc291cmNlLWVkaXQtY2FyZC9yZXNvdXJjZS1lZGl0LWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFFLFdBQVcsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBRXhELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXpELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7Ozs7OztBQU81RCxNQUFNLE9BQU8seUJBQTBCLFNBQVEsZ0JBQWdCO0lBbUIzRCxZQUNZLEVBQWUsRUFDZixZQUFzQixFQUN0QixlQUFnQyxFQUNoQyxVQUFzQixFQUM5QixRQUFrQjtRQUVsQixLQUFLLENBQUMsUUFB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QUFlLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNsRCxJQUFJLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxDQUFDO1FBQzNDLENBQUM7SUFDTCxDQUFDO0lBRUQsYUFBYSxDQUFDLE9BQU87UUFDakIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDakQsUUFBUSxFQUFFLElBQUk7WUFDZCxXQUFXLEVBQUUsY0FBYztTQUM5QixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBWSxFQUFFLFlBQVk7UUFDdkMsYUFBYSxDQUFDLHVCQUF1QixDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztJQUMvRCxDQUFDOytHQTlOUSx5QkFBeUI7bUdBQXpCLHlCQUF5Qix5S0NuQnRDLGdvU0F3TkE7OzRGRHJNYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0ksdUJBQXVCO3FMQUt4QixFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDSSxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IEFwcEJhc2VDb21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWJhc2UtY29tcG9uZW50JztcbmltcG9ydCB7IFRhZ1NlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXNlcnZpY2VzJztcbmltcG9ydCB7IFRPS0VOX0tFWSB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tdXRpbGl0aWVzJztcbmltcG9ydCB7IEhlbHBlclNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvaGVscGVyLXNlcnZpY2UnO1xuXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5cbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuXG5pbXBvcnQgeyBSZXNvdXJjZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9yZXNvdXJjZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwdy1yZXNvdXJjZS1lZGl0LWNhcmQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9yZXNvdXJjZS1lZGl0LWNhcmQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9yZXNvdXJjZS1lZGl0LWNhcmQuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIFJlc291cmNlRWRpdENhcmRDb21wb25lbnQgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKSBpZCE6IG51bWJlcjtcbiAgICBASW5wdXQoKSByZXNvdXJjZURhdGE7XG4gICAgQE91dHB1dCgpIHVwZGF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBlZGl0Rm9ybTogRm9ybUdyb3VwO1xuICAgIGltYWdlID0gJyc7XG4gICAgcmVjdGFuZ3VsYXJJbWFnZSA9ICcnO1xuICAgIGZpbGU6IEZpbGUgfCBudWxsID0gbnVsbDtcbiAgICByZWN0YW5ndWxhckZpbGU6IEZpbGUgfCBudWxsID0gbnVsbDtcblxuICAgIGltYWdlTW9kYWxSZWY7XG4gICAgc2VsZWN0ZWRUYWdzID0gW107XG4gICAgYWxsVGFncyA9IFtdO1xuICAgIHRhZ3NTdWdnZXN0aW9uID0gW107XG4gICAgc3Vic2NyaXB0aW9uSWQ6IG51bWJlcjtcbiAgICB1c2VyTG9nZ2VkSW46IGJvb2xlYW47XG4gICAgYnV0dG9uQnVzeSA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgICAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwsXG4gICAgICAgIHByaXZhdGUgcmVzb3VyY2VTZXJ2aWNlOiBSZXNvdXJjZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdGFnU2VydmljZTogVGFnU2VydmljZSxcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICAgICAgdGhpcy5lZGl0Rm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICAgICAgdGl0bGU6IFsnJ10sXG4gICAgICAgICAgICBleHRlcm5hbF91cmw6IFsnJ10sXG4gICAgICAgICAgICBjdGFfdGV4dDogWycnXSxcbiAgICAgICAgICAgIHdoZW46IFsnJ10sXG4gICAgICAgICAgICBzaG93Y2FzZTogW2ZhbHNlXSxcbiAgICAgICAgICAgIHB1Ymxpc2hlZF9hdDogW2ZhbHNlXSxcbiAgICAgICAgICAgIGFjY2VwdGVkX2F0OiBbZmFsc2VdLFxuICAgICAgICAgICAgYm9keTogWycnXVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSQoVE9LRU5fS0VZKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMudXNlckxvZ2dlZEluID0gISFyZXM7XG4gICAgICAgICAgICBpZiAodGhpcy51c2VyTG9nZ2VkSW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtJCgncHJvZHVjdCcpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gcmVzID8gSlNPTi5wYXJzZShyZXMpIDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25JZCA9IGRhdGE/LnN1YnNjcmlwdGlvbklkO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuYXZpZ2F0ZVRvUmVzb3VyY2VFZGl0KCkge1xuICAgICAgICBjb25zdCBiYXNlUGF0aCA9IGAvYWRtaW4vcmVzb3VyY2VzLyR7dGhpcy5yZXNvdXJjZURhdGE/LnNsdWd9YDtcbiAgICAgICAgY29uc3QgZnVsbFVybCA9IGAke2xvY2F0aW9uLm9yaWdpbn0ke2Jhc2VQYXRofWA7XG4gICAgICAgIHdpbmRvdy5vcGVuKGZ1bGxVcmwsICdfYmxhbmsnKTtcbiAgICB9XG5cbiAgICBvcGVuTW9kYWwobW9kYWxUZW1wbGF0ZSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5yZXNvdXJjZURhdGEpIHtcbiAgICAgICAgICAgIGNvbnN0IHdoZW4gPSB0aGlzLnJlc291cmNlRGF0YS53aGVuID8gbmV3IERhdGUodGhpcy5yZXNvdXJjZURhdGEud2hlbikgOiBudWxsO1xuICAgICAgICAgICAgdGhpcy5lZGl0Rm9ybS5zZXRWYWx1ZSh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRoaXMucmVzb3VyY2VEYXRhLnRpdGxlIHx8ICcnLFxuICAgICAgICAgICAgICAgIGV4dGVybmFsX3VybDogdGhpcy5yZXNvdXJjZURhdGEuZXh0ZXJuYWxfdXJsIHx8ICcnLFxuICAgICAgICAgICAgICAgIGN0YV90ZXh0OiB0aGlzLnJlc291cmNlRGF0YS5jdGFfdGV4dCB8fCAnJyxcbiAgICAgICAgICAgICAgICB3aGVuOiB3aGVuIHx8ICcnLFxuICAgICAgICAgICAgICAgIHNob3djYXNlOiAhIXRoaXMucmVzb3VyY2VEYXRhLnNob3djYXNlLFxuICAgICAgICAgICAgICAgIHB1Ymxpc2hlZF9hdDogISF0aGlzLnJlc291cmNlRGF0YS5wdWJsaXNoZWRfYXQsXG4gICAgICAgICAgICAgICAgYWNjZXB0ZWRfYXQ6ICEhdGhpcy5yZXNvdXJjZURhdGEuYWNjZXB0ZWRfYXQsXG4gICAgICAgICAgICAgICAgYm9keTogdGhpcy5yZXNvdXJjZURhdGEuYm9keVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmltYWdlID0gdGhpcy5yZXNvdXJjZURhdGEucGljdHVyZT8udXJsIHx8ICcnO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRhZ3MgPSB0aGlzLnJlc291cmNlRGF0YT8udGFncz8ubGVuZ3RoID8gWy4uLnRoaXMucmVzb3VyY2VEYXRhLnRhZ3NdIDogW107XG4gICAgICAgICAgICB0aGlzLnJlY3Rhbmd1bGFySW1hZ2UgPSB0aGlzLnJlc291cmNlRGF0YS5yZWN0YW5ndWxhcl9waWN0dXJlPy51cmwgfHwgJyc7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbihtb2RhbFRlbXBsYXRlLCB7IGNlbnRlcmVkOiB0cnVlLCBzaXplOiAnbGcnIH0pO1xuICAgICAgICB0aGlzLmdldFBvc3RUYWdzKCk7XG4gICAgfVxuXG4gICAgc2VhcmNoKGV2ZW50KSB7XG4gICAgICAgIGxldCB2YWx1ZXMgPSBbXTtcbiAgICAgICAgaWYgKGV2ZW50LnF1ZXJ5KSB7XG4gICAgICAgICAgICB2YWx1ZXMgPSB0aGlzLmFsbFRhZ3MuZmlsdGVyKHggPT5cbiAgICAgICAgICAgICAgICB4Lm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhldmVudC5xdWVyeS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYWxsVGFncy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgIHZhbHVlcy5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50YWdzU3VnZ2VzdGlvbiA9IHZhbHVlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFBvc3RUYWdzKCkge1xuICAgICAgICB0aGlzLnRhZ1NlcnZpY2VcbiAgICAgICAgICAgIC5nZXRUYWdzQnlUeXBlKCdwb3N0X2NhdGVnb3JpZXMnLCB7fSwgdGhpcy5zdWJzY3JpcHRpb25JZClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYWxsVGFncyA9IHJlc3BvbnNlLnRhZ3M7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBkZWxldGVSZWN0YW5ndWxhckltYWdlKCkge1xuICAgICAgICB0aGlzLnJlY3Rhbmd1bGFySW1hZ2UgPSBudWxsO1xuICAgICAgICB0aGlzLnJlY3Rhbmd1bGFyRmlsZSA9IG51bGw7XG4gICAgfVxuICAgIG9wZW5JbWFnZU1vZGFsKG1vZGFsVGVtcGxhdGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbWFnZU1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3Blbihtb2RhbFRlbXBsYXRlLCB7IGNlbnRlcmVkOiB0cnVlLCBzaXplOiAnbWQnIH0pO1xuICAgIH1cblxuICAgIG9uSW1hZ2VTZWxlY3RlZChiYXNlNjQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmltYWdlID0gYmFzZTY0O1xuICAgICAgICB0aGlzLmZpbGUgPSBIZWxwZXJTZXJ2aWNlLmNvbnZlcnRCYXNlNjRUb0ZpbGUoYmFzZTY0KTtcbiAgICAgICAgdGhpcy5pbWFnZU1vZGFsUmVmPy5jbG9zZSgpO1xuICAgIH1cblxuICAgIG9uUmVjdGFuZ3VsYXJJbWFnZVNlbGVjdGlvbihiYXNlNjQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLnJlY3Rhbmd1bGFySW1hZ2UgPSBiYXNlNjQ7XG4gICAgICAgIHRoaXMucmVjdGFuZ3VsYXJGaWxlID0gSGVscGVyU2VydmljZS5jb252ZXJ0QmFzZTY0VG9GaWxlKGJhc2U2NCk7XG4gICAgICAgIHRoaXMuaW1hZ2VNb2RhbFJlZj8uY2xvc2UoKTtcbiAgICB9XG5cbiAgICByZW1vdmVJbWFnZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbWFnZSA9IG51bGw7XG4gICAgICAgIHRoaXMuZmlsZSA9IG51bGw7XG4gICAgfVxuXG4gICAgc2F2ZVJlc291cmNlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmJ1dHRvbkJ1c3kgPSB0cnVlO1xuICAgICAgICB0aGlzLnNhdmVUYWdzKHRoaXMuaWQpO1xuICAgICAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgICAgICAgLi4udGhpcy5lZGl0Rm9ybS52YWx1ZSxcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbl9pZDogdGhpcy5zdWJzY3JpcHRpb25JZFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuaGFuZGxlUGljdHVyZShwYXlsb2FkKTtcbiAgICAgICAgdGhpcy5oYW5kbGVQdWJsaXNoZWRBdChwYXlsb2FkKTtcbiAgICAgICAgdGhpcy5oYW5kbGVBY2NlcHRlZEF0KHBheWxvYWQpO1xuICAgICAgICB0aGlzLmhhbmRsZUFjY2VwdGVkQXQocGF5bG9hZCk7XG4gICAgICAgIHRoaXMuaGFuZGxlT3B0aW9uYWxGaWVsZHMocGF5bG9hZCk7XG4gICAgICAgIHRoaXMuaGFuZGxlUmVjdGFuZ3VsYXJQaWN0dXJlKHBheWxvYWQpO1xuICAgICAgICB0aGlzLmhhbmRsZVJlbW92YWxzKHBheWxvYWQpO1xuXG4gICAgICAgIHRoaXMucmVzb3VyY2VTZXJ2aWNlLnVwZGF0ZVBvc3QocGF5bG9hZCwgdGhpcy5pZCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYnV0dG9uQnVzeSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy50b2FzdC5zdWNjZXNzKCdCbG9nIFBvc3QgVXBkYXRlZCcpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVkLmVtaXQoKTtcbiAgICAgICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLmRpc21pc3NBbGwoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzYXZlVGFncyhpZDogbnVtYmVyIHwgc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVGFncy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgICAgICAgZW50aXR5X3RhZ3M6IHRoaXMuc2VsZWN0ZWRUYWdzLm1hcCh0YWcgPT4gKHsgdGFnX2lkOiB0YWcuaWQgfSkpLFxuICAgICAgICAgICAgICAgIHNsdWc6IGlkLFxuICAgICAgICAgICAgICAgIHRhZ19lbnRpdHk6ICdQb3N0JyAvLyBvciB1c2UgVEFHX0VOVElUWS5QT1NUIGlmIHlvdSBpbXBvcnRlZCBpdFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy50YWdTZXJ2aWNlLmFkZFRhZ3MoZGF0YSwgdGhpcy5zdWJzY3JpcHRpb25JZCkuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZVBpY3R1cmUoZGF0YSkge1xuICAgICAgICBpZiAodGhpcy5maWxlKSB7XG4gICAgICAgICAgICBkYXRhLnBpY3R1cmUgPSB0aGlzLmZpbGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkZWxldGUgZGF0YS5waWN0dXJlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVQdWJsaXNoZWRBdChkYXRhKSB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmVkaXRGb3JtLmdldCgncHVibGlzaGVkX2F0Jyk7XG4gICAgICAgIGlmIChjb250cm9sPy5kaXJ0eSkge1xuICAgICAgICAgICAgZGF0YS5wdWJsaXNoZWRfYXQgPSBjb250cm9sLnZhbHVlID8gbW9tZW50KCkuZm9ybWF0KCdERC1NTU0tWVlZWScpIDogJyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkZWxldGUgZGF0YS5wdWJsaXNoZWRfYXQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUFjY2VwdGVkQXQoZGF0YSkge1xuICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5lZGl0Rm9ybS5nZXQoJ2FjY2VwdGVkX2F0Jyk7XG4gICAgICAgIGlmIChjb250cm9sPy5kaXJ0eSkge1xuICAgICAgICAgICAgZGF0YS5hY2NlcHRlZF9hdCA9IGNvbnRyb2wudmFsdWUgPyBtb21lbnQoKS5mb3JtYXQoJ0RELU1NTS1ZWVlZJykgOiAnJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRlbGV0ZSBkYXRhLmFjY2VwdGVkX2F0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVPcHRpb25hbEZpZWxkcyhkYXRhKSB7XG4gICAgICAgIGlmICghdGhpcy5lZGl0Rm9ybS5nZXQoJ3doZW4nKT8udmFsdWUpIHtcbiAgICAgICAgICAgIGRhdGEud2hlbiA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5lZGl0Rm9ybS5nZXQoJ3Nob3djYXNlJyk/LnZhbHVlKSB7XG4gICAgICAgICAgICBkYXRhLnNob3djYXNlID0gJyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZVJlY3Rhbmd1bGFyUGljdHVyZShkYXRhKSB7XG4gICAgICAgIGlmICh0aGlzLnJlY3Rhbmd1bGFyRmlsZSkge1xuICAgICAgICAgICAgZGF0YS5yZWN0YW5ndWxhcl9waWN0dXJlID0gdGhpcy5yZWN0YW5ndWxhckZpbGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkZWxldGUgZGF0YS5yZWN0YW5ndWxhcl9waWN0dXJlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVSZW1vdmFscyhkYXRhKSB7XG4gICAgICAgIGlmICghdGhpcy5maWxlICYmICF0aGlzLmltYWdlKSB7XG4gICAgICAgICAgICBkYXRhLnJlbW92ZV9waWN0dXJlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMucmVjdGFuZ3VsYXJGaWxlICYmICF0aGlzLnJlY3Rhbmd1bGFySW1hZ2UpIHtcbiAgICAgICAgICAgIGRhdGEucmVtb3ZlX3JlY3Rhbmd1bGFyX3BpY3R1cmUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb3BlblJlY3RNb2RhbChjb250ZW50KSB7XG4gICAgICAgIHRoaXMuaW1hZ2VNb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oY29udGVudCwge1xuICAgICAgICAgICAgY2VudGVyZWQ6IHRydWUsXG4gICAgICAgICAgICB3aW5kb3dDbGFzczogJ21vZGFsLWhvbGRlcidcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaGFuZGxlSW1hZ2VFcnJvcihldmVudDogRXZlbnQsIGZhbGxiYWNrUGF0aCk6IHZvaWQge1xuICAgICAgICBIZWxwZXJTZXJ2aWNlLmhhbmRsZUltYWdlRmFsbGJhY2tQYXRoKGV2ZW50LCBmYWxsYmFja1BhdGgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJlZGl0LWNhcmRcIj5cbiAgPGkgY2xhc3M9XCJmYSBmYS1lZGl0IGN1cnNvci1wb2ludGVyIHRleHQtZGFyayBpbi1wYWdlLWVkaXQtaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBtYi0yXCJcbiAgICAgKGNsaWNrKT1cIm9wZW5Nb2RhbChlZGl0UmVzb3VyY2VNb2RhbClcIiB0aXRsZT1cIkVkaXQgUmVzb3VyY2VcIj48L2k+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNlZGl0UmVzb3VyY2VNb2RhbCBsZXQtbW9kYWw+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiPkVkaXQgUmVzb3VyY2U8L2g1PlxuICAgIDxpIGNsYXNzPVwiZmEgZmEtZWRpdCBjdXJzb3ItcG9pbnRlciB0ZXh0LWRhcmsgaW4tcGFnZS1lZGl0LWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgbXMtM1wiXG4gICAgIChjbGljayk9XCJuYXZpZ2F0ZVRvUmVzb3VyY2VFZGl0KClcIiB0aXRsZT1cIkdvIHRvIHRoZSBtYWluIGVkaXQgcGFnZVwiPjwvaT5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1jbG9zZVwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj48L2J1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImVkaXRGb3JtXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBsYWJlbD1cIlRpdGxlXCIgbmFtZT1cInRpdGxlXCI+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cInRpdGxlXCIgLz5cbiAgICAgICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiByb3dcIj5cbiAgICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyIGxhYmVsPVwiQ1RBIFRleHRcIiBuYW1lPVwiY3RhX3RleHRcIiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cImN0YV90ZXh0XCIgLz5cbiAgICAgICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgbGFiZWw9XCJFeHRlcm5hbCBVUkxcIiBuYW1lPVwiZXh0ZXJuYWxfdXJsXCIgY2xhc3M9XCJjb2wtbWQtNlwiPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJleHRlcm5hbF91cmxcIiAvPlxuICAgICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lclxuICAgICAgICAgICAgW2xhYmVsXT1cIidSZXNvdXJjZS5Qb3N0cy5Cb2R5JyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICBuYW1lPVwiYm9keVwiXG4gICAgICAgICAgICBbZXJyb3JNc2ddPVwiJ1Jlc291cmNlLlBvc3RzLlZhbGlkYXRpb24uQm9keScgfCB0cmFuc2xvY29cIj5cbiAgICAgICAgICAgIDxxdWlsbC1lZGl0b3JcbiAgICAgICAgICAgICAgW3N0eWxlc109XCJ7IGhlaWdodDogJzMwMHB4JyB9XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJxdWlsbEVkaXRvclwiXG4gICAgICAgICAgICAgIFttb2R1bGVzXT1cImVkaXRvckNvbmZpZ1wiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImJvZHlcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ3ctMTAwJzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAncXVpbGwtY29udGFpbmVyJzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmWydib2R5J10uZXJyb3JzXG4gICAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICAgIDwvcXVpbGwtZWRpdG9yPlxuICAgICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC0zIGNvbC1zbS02XCI+XG4gICAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lclxuICAgICAgICAgICAgW2xhYmVsXT1cIidSZXNvdXJjZS5Qb3N0cy5XaGVuJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICBbc2hvd1Rvb2x0aXBdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbdG9vbHRpcFRleHRdPVwiJ1Jlc291cmNlLlBvc3RzLlRvb2x0aXAuV2hlbicgfCB0cmFuc2xvY29cIlxuICAgICAgICAgICAgbmFtZT1cIndoZW5cIj5cbiAgICAgICAgICAgIDxwLWNhbGVuZGFyIGZvcm1Db250cm9sTmFtZT1cIndoZW5cIlxuICAgICAgICAgICAgICBbc2hvd0ljb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIGRhdGVGb3JtYXQ9XCJkZC1NLXl5XCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTZWxlY3QgRGF0ZSdcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGZbJ3doZW4nXS5lcnJvcnMgfVwiPlxuICAgICAgICAgICAgPC9wLWNhbGVuZGFyPlxuICAgICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC04XCI+XG4gICAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lclxuICAgICAgICAgICAgW2xhYmVsXT1cIidSZXNvdXJjZS5Qb3N0cy5UYWdzJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICBjbGFzcz1cInVpLWZsdWlkIHNraWxscy1tb2RhbCB0YWdzXCJcbiAgICAgICAgICAgIFtzaG93VG9vbHRpcF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFt0b29sdGlwVGV4dF09XCInUmVzb3VyY2UuUG9zdHMuVG9vbHRpcC5DdGFUZXh0JyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICBuYW1lPVwiY3RhX3RleHRcIj5cbiAgICAgICAgICAgIDxwLWF1dG9Db21wbGV0ZSBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVGFnc1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYm9keS1iZ1wiXG4gICAgICAgICAgICAgIFtzdWdnZXN0aW9uc109XCJ0YWdzU3VnZ2VzdGlvblwiXG4gICAgICAgICAgICAgIGRhdGFLZXk9XCJpZFwiXG4gICAgICAgICAgICAgIGZpZWxkPVwibmFtZVwiXG4gICAgICAgICAgICAgIChjb21wbGV0ZU1ldGhvZCk9XCJzZWFyY2goJGV2ZW50KVwiXG4gICAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJ3LTEwMFwiXG4gICAgICAgICAgICAgIFttaW5MZW5ndGhdPVwiMVwiXG4gICAgICAgICAgICAgIFttYXhsZW5ndGhdPVwiMTBcIlxuICAgICAgICAgICAgICBbZHJvcGRvd25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiVGFnc1wiXG4gICAgICAgICAgICAgIFttdWx0aXBsZV09XCJ0cnVlXCI+XG4gICAgICAgICAgICA8L3AtYXV0b0NvbXBsZXRlPlxuICAgICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBjb2wtc20tNlwiPlxuICAgICAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lclxuICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1NIT1dDQVNFJ1wiXG4gICAgICAgICAgICAgIFtzaG93VG9vbHRpcF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBUZXh0XT1cIidNYXJrIGFzIHNob3djYXNlIHBvc3QnXCJcbiAgICAgICAgICAgICAgbmFtZT1cInNob3djYXNlXCI+XG4gICAgICAgICAgICAgIDx1aS1zd2l0Y2ggZm9ybUNvbnRyb2xOYW1lPVwic2hvd2Nhc2VcIiBjbGFzcz1cImQtYmxvY2tcIj48L3VpLXN3aXRjaD5cbiAgICAgICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGNvbC1zbS02XCI+XG4gICAgICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyXG4gICAgICAgICAgICAgIFtsYWJlbF09XCInUFVCTElTSEVEJ1wiXG4gICAgICAgICAgICAgIFtzaG93VG9vbHRpcF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBUZXh0XT1cIidTZXQgdG8gcHVibGlzaCB0aGUgcG9zdCdcIlxuICAgICAgICAgICAgICBuYW1lPVwicHVibGlzaGVkX2F0XCI+XG4gICAgICAgICAgICAgIDx1aS1zd2l0Y2ggZm9ybUNvbnRyb2xOYW1lPVwicHVibGlzaGVkX2F0XCIgY2xhc3M9XCJkLWJsb2NrXCI+PC91aS1zd2l0Y2g+XG4gICAgICAgICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBjb2wtc20tNlwiPlxuICAgICAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lclxuICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0FDQ0VQVEVEIEJZIEFETUlOJ1wiXG4gICAgICAgICAgICAgIFtzaG93VG9vbHRpcF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBUZXh0XT1cIidJbmRpY2F0ZXMgYXBwcm92YWwgYnkgYWRtaW4nXCJcbiAgICAgICAgICAgICAgbmFtZT1cImFjY2VwdGVkX2F0XCI+XG4gICAgICAgICAgICAgIDx1aS1zd2l0Y2ggZm9ybUNvbnRyb2xOYW1lPVwiYWNjZXB0ZWRfYXRcIiBjbGFzcz1cImQtYmxvY2tcIj48L3VpLXN3aXRjaD5cbiAgICAgICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC00IGNvbC1zbS00IG15LTQgbXMtM1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtYi00XCI+XG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwiY292ZXJQaWN0dXJlXCI+e3sgJ1Jlc291cmNlLlBvc3RzLkNvdmVyUGljdHVyZScgfCB0cmFuc2xvY28gfX08L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIGQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGltZyBbc3JjXT1cIihpbWFnZSAmJiAhaW1hZ2UuaW5jbHVkZXMoJ2RlZmF1bHQtcGhvdG8uanBnJykpID8gaW1hZ2UgOiAnYXNzZXRzL2ltZy9yZXNvdXJjZS9ibG9nLnBuZydcIlxuICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuSW1hZ2VNb2RhbChpbWFnZUNyb3BDb250ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwib3BlbkltYWdlTW9kYWwoaW1hZ2VDcm9wQ29udGVudClcIlxuICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW1hZ2Ugdy0xMDBcIlxuICAgICAgICAgICAgICAgICAgIGFsdD1cIk1vZGFsXCJcbiAgICAgICAgICAgICAgICAgICAoZXJyb3IpPVwiaGFuZGxlSW1hZ2VFcnJvcigkZXZlbnQsICdhc3NldHMvaW1nL3Jlc291cmNlL2Jsb2cucG5nJylcIiAvPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtdC0yXCI+XG4gICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkLWlubGluZS1ibG9ja1wiIChjbGljayk9XCJvcGVuSW1hZ2VNb2RhbChpbWFnZUNyb3BDb250ZW50KVwiPlxuICAgICAgICAgICAgICAgICAge3sgc2x1ZyAhPT0gJ2NyZWF0ZScgPyAnRWRpdCcgOiAnQWRkJyB9fSBQaWN0dXJlXG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiaW1hZ2UgJiYgIWltYWdlLmluY2x1ZGVzKCdkZWZhdWx0LXBob3RvLmpwZycpXCJcbiAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhIGZhLXRyYXNoIGRlbGV0ZS1pY29uIHRleHQtZGFuZ2VyIG1zLTJcIlxuICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiUmVtb3ZlIEltYWdlXCJcbiAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlSW1hZ2UoKVwiXG4gICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwicmVtb3ZlSW1hZ2UoKVwiXG4gICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCI+PC9pPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC00IGNvbC1zbS00IG15LTQgbXMtM1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtYi00XCI+XG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwicmVjdGFuZ3VsYXJQaWN0dXJlXCI+UmVjdGFuZ3VsYXIgUGljdHVyZTwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiKHJlY3Rhbmd1bGFySW1hZ2UgJiYgIXJlY3Rhbmd1bGFySW1hZ2UuaW5jbHVkZXMoJ2RlZmF1bHQtcGhvdG8uanBnJykpID8gcmVjdGFuZ3VsYXJJbWFnZSA6ICdhc3NldHMvaW1nL3Jlc291cmNlL2Jsb2cucG5nJ1wiXG4gICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5SZWN0TW9kYWwocmVjdENvbnRlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvcGVuUmVjdE1vZGFsKHJlY3RDb250ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbWFnZSB3LTEwMFwiXG4gICAgICAgICAgICAgICAgICAgYWx0PVwiVXBsb2FkZWQgcmVjdGFuZ3VsYXIgbWVkaWEgcHJldmlld1wiXG4gICAgICAgICAgICAgICAgICAgKGVycm9yKT1cImhhbmRsZUltYWdlRXJyb3IoJGV2ZW50LCAnYXNzZXRzL2ltZy9yZXNvdXJjZS9ibG9nLnBuZycpXCIgLz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtMlwiPlxuICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2tcIiAoY2xpY2spPVwib3BlblJlY3RNb2RhbChyZWN0Q29udGVudClcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHNsdWcgIT09ICdjcmVhdGUnID8gJ0VkaXQnIDogJ0FkZCcgfX0gUGljdHVyZVxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8aSAqbmdJZj1cInJlY3Rhbmd1bGFySW1hZ2UgJiYgIXJlY3Rhbmd1bGFySW1hZ2UuaW5jbHVkZXMoJ2RlZmF1bHQtcGhvdG8uanBnJylcIlxuICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEgZmEtdHJhc2ggZGVsZXRlLWljb24gdGV4dC1kYW5nZXIgbXMtMlwiXG4gICAgICAgICAgICAgICAgICAgdGl0bGU9XCJSZW1vdmUgSW1hZ2VcIlxuICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVSZWN0YW5ndWxhckltYWdlKClcIlxuICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImRlbGV0ZVJlY3Rhbmd1bGFySW1hZ2UoKVwiXG4gICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCI+PC9pPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPkNhbmNlbDwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiBbYnV0dG9uQnVzeV09XCJidXR0b25CdXN5XCIgKGNsaWNrKT1cInNhdmVSZXNvdXJjZSgpXCI+U2F2ZTwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaW1hZ2VDcm9wQ29udGVudCBsZXQtbW9kYWw+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiPlVwbG9hZCBQaWN0dXJlPC9oNT5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1jbG9zZVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj48L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XG4gICAgPHNtYWxsPllvdSBjYW4gdXBsb2FkIGEgSlBHLCBHSUYsIG9yIFBORyBmaWxlLiAoRG8gbm90IHVwbG9hZCBwaWN0dXJlcyBjb250YWluaW5nIGNlbGVicml0aWVzLFxuICAgICAgbnVkaXR5LCBhcnR3b3JrIG9yIGNvcHlyaWdodGVkIGltYWdlcy4pPC9zbWFsbD5cbiAgICA8cHctaW1hZ2UtY3JvcHBlclxuICAgICAgW2FzcGVjdFJhdGlvXT1cIidkeW5hbWljJ1wiXG4gICAgICAoaW1hZ2VTZWxlY3Rpb25FdmVudCk9XCJvbkltYWdlU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAoY2xvc2VFdmVudCk9XCJtb2RhbC5jbG9zZSgpXCI+XG4gICAgPC9wdy1pbWFnZS1jcm9wcGVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcmVjdENvbnRlbnQgbGV0LW1vZGFsPlxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIj5VcGxvYWQgUGljdHVyZTwvaDU+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2UgZmxvYXQtZW5kXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPjwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cbiAgICA8c21hbGw+WW91IGNhbiB1cGxvYWQgYSBKUEcsIEdJRiwgb3IgUE5HIGZpbGUuIChEbyBub3QgdXBsb2FkIHBpY3R1cmVzIGNvbnRhaW5pbmcgY2VsZWJyaXRpZXMsXG4gICAgICBudWRpdHksIGFydHdvcmsgb3IgY29weXJpZ2h0ZWQgaW1hZ2VzLik8L3NtYWxsPlxuICAgIDxwdy1pbWFnZS1jcm9wcGVyXG4gICAgICAjcHJvZmlsZVxuICAgICAgW2FzcGVjdFJhdGlvXT1cIidkeW5hbWljJ1wiXG4gICAgICAoaW1hZ2VTZWxlY3Rpb25FdmVudCk9XCJvblJlY3Rhbmd1bGFySW1hZ2VTZWxlY3Rpb24oJGV2ZW50KVwiXG4gICAgICAoY2xvc2VFdmVudCk9XCJvbkNsb3NlKClcIj5cbiAgICA8L3B3LWltYWdlLWNyb3BwZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
229
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtZWRpdC1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcmVzb3VyY2UtbW9kdWxlL3NyYy9saWIvcHVibGljL2NvbXBvbmVudHMvcmVzb3VyY2UtZWRpdC1jYXJkL3Jlc291cmNlLWVkaXQtY2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Jlc291cmNlLW1vZHVsZS9zcmMvbGliL3B1YmxpYy9jb21wb25lbnRzL3Jlc291cmNlLWVkaXQtY2FyZC9yZXNvdXJjZS1lZGl0LWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFFLFdBQVcsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBRXhELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXpELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7Ozs7OztBQU81RCxNQUFNLE9BQU8seUJBQTBCLFNBQVEsZ0JBQWdCO0lBbUIzRCxZQUNZLEVBQWUsRUFDZixZQUFzQixFQUN0QixlQUFnQyxFQUNoQyxVQUFzQixFQUM5QixRQUFrQjtRQUVsQixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFOUixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2YsaUJBQVksR0FBWixZQUFZLENBQVU7UUFDdEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFwQnhCLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRzdDLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDdEIsU0FBSSxHQUFnQixJQUFJLENBQUM7UUFDekIsb0JBQWUsR0FBZ0IsSUFBSSxDQUFDO1FBR3BDLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFDYixtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUdwQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBVWYsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUMxQixLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDWCxZQUFZLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDbEIsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2QsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ1YsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ2pCLFlBQVksRUFBRSxDQUFDLEtBQUssQ0FBQztZQUNyQixXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDcEIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO1NBQ2IsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDbEQsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQzFCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUNwQixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ2xELE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO29CQUMxQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksRUFBRSxjQUFjLENBQUM7Z0JBQy9DLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELHNCQUFzQjtRQUNsQixNQUFNLFFBQVEsR0FBRyxvQkFBb0IsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUMvRCxNQUFNLE9BQU8sR0FBRyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEdBQUcsUUFBUSxFQUFFLENBQUM7UUFDaEQsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELFNBQVMsQ0FBQyxhQUFhO1FBQ25CLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDOUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7Z0JBQ25CLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssSUFBSSxFQUFFO2dCQUNwQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLElBQUksRUFBRTtnQkFDbEQsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxJQUFJLEVBQUU7Z0JBQzFDLElBQUksRUFBRSxJQUFJLElBQUksRUFBRTtnQkFDaEIsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVE7Z0JBQ3RDLFlBQVksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZO2dCQUM5QyxXQUFXLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVztnQkFDNUMsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSTthQUMvQixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUM7WUFDbEQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDdkYsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQztRQUM3RSxDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLO1FBQ1IsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2QsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQzdCLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FDM0QsQ0FBQztRQUNOLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQzNCLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDekIsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUM7SUFDakMsQ0FBQztJQUVPLFdBQVc7UUFDZixJQUFJLENBQUMsVUFBVTthQUNWLGFBQWEsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQzthQUN6RCxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELHNCQUFzQjtRQUNsQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO0lBQ2hDLENBQUM7SUFDRCxjQUFjLENBQUMsYUFBYTtRQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVELGVBQWUsQ0FBQyxNQUFjO1FBQzFCLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxJQUFJLEdBQUcsYUFBYSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELDJCQUEyQixDQUFDLE1BQWM7UUFDdEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQztRQUMvQixJQUFJLENBQUMsZUFBZSxHQUFHLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsYUFBYSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELFlBQVk7UUFDUixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QixNQUFNLE9BQU8sR0FBRztZQUNaLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLO1lBQ3RCLGVBQWUsRUFBRSxJQUFJLENBQUMsY0FBYztTQUN2QyxDQUFDO1FBRUYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFN0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzdELElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDeEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ25DLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLFFBQVEsQ0FBQyxFQUFtQjtRQUNoQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDM0IsTUFBTSxJQUFJLEdBQUc7Z0JBQ1QsV0FBVyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDL0QsSUFBSSxFQUFFLEVBQUU7Z0JBQ1IsVUFBVSxFQUFFLE1BQU0sQ0FBQyw0Q0FBNEM7YUFDbEUsQ0FBQztZQUVGLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDbkUsQ0FBQztJQUNMLENBQUM7SUFFTyxhQUFhLENBQUMsSUFBSTtRQUN0QixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUM3QixDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUN4QixDQUFDO0lBQ0wsQ0FBQztJQUVPLGlCQUFpQixDQUFDLElBQUk7UUFDMUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbEQsSUFBSSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM1RSxDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztRQUM3QixDQUFDO0lBQ0wsQ0FBQztJQUVPLGdCQUFnQixDQUFDLElBQUk7UUFDekIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDakQsSUFBSSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMzRSxDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUM1QixDQUFDO0lBQ0wsQ0FBQztJQUVPLG9CQUFvQixDQUFDLElBQUk7UUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ25CLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDdkIsQ0FBQztJQUNMLENBQUM7SUFFTyx3QkFBd0IsQ0FBQyxJQUFJO1FBQ2pDLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQ3BELENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7UUFDcEMsQ0FBQztJQUNMLENBQUM7SUFFTyxjQUFjLENBQUMsSUFBSTtRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUMvQixDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNsRCxJQUFJLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxDQUFDO1FBQzNDLENBQUM7SUFDTCxDQUFDO0lBRUQsYUFBYSxDQUFDLE9BQU87UUFDakIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDakQsUUFBUSxFQUFFLElBQUk7WUFDZCxXQUFXLEVBQUUsY0FBYztTQUM5QixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBWSxFQUFFLFlBQVk7UUFDdkMsYUFBYSxDQUFDLHVCQUF1QixDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztJQUMvRCxDQUFDOytHQTlOUSx5QkFBeUI7bUdBQXpCLHlCQUF5Qix5S0NuQnRDLGdrU0FzTkE7OzRGRG5NYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0ksdUJBQXVCO3FMQUt4QixFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDSSxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IEFwcEJhc2VDb21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWJhc2UtY29tcG9uZW50JztcbmltcG9ydCB7IFRhZ1NlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXNlcnZpY2VzJztcbmltcG9ydCB7IFRPS0VOX0tFWSB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tdXRpbGl0aWVzJztcbmltcG9ydCB7IEhlbHBlclNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvaGVscGVyLXNlcnZpY2UnO1xuXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5cbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuXG5pbXBvcnQgeyBSZXNvdXJjZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9yZXNvdXJjZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwdy1yZXNvdXJjZS1lZGl0LWNhcmQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9yZXNvdXJjZS1lZGl0LWNhcmQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9yZXNvdXJjZS1lZGl0LWNhcmQuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIFJlc291cmNlRWRpdENhcmRDb21wb25lbnQgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKSBpZCE6IG51bWJlcjtcbiAgICBASW5wdXQoKSByZXNvdXJjZURhdGE7XG4gICAgQE91dHB1dCgpIHVwZGF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBlZGl0Rm9ybTogRm9ybUdyb3VwO1xuICAgIGltYWdlID0gJyc7XG4gICAgcmVjdGFuZ3VsYXJJbWFnZSA9ICcnO1xuICAgIGZpbGU6IEZpbGUgfCBudWxsID0gbnVsbDtcbiAgICByZWN0YW5ndWxhckZpbGU6IEZpbGUgfCBudWxsID0gbnVsbDtcblxuICAgIGltYWdlTW9kYWxSZWY7XG4gICAgc2VsZWN0ZWRUYWdzID0gW107XG4gICAgYWxsVGFncyA9IFtdO1xuICAgIHRhZ3NTdWdnZXN0aW9uID0gW107XG4gICAgc3Vic2NyaXB0aW9uSWQ6IG51bWJlcjtcbiAgICB1c2VyTG9nZ2VkSW46IGJvb2xlYW47XG4gICAgYnV0dG9uQnVzeSA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgICAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwsXG4gICAgICAgIHByaXZhdGUgcmVzb3VyY2VTZXJ2aWNlOiBSZXNvdXJjZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdGFnU2VydmljZTogVGFnU2VydmljZSxcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICAgICAgdGhpcy5lZGl0Rm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICAgICAgdGl0bGU6IFsnJ10sXG4gICAgICAgICAgICBleHRlcm5hbF91cmw6IFsnJ10sXG4gICAgICAgICAgICBjdGFfdGV4dDogWycnXSxcbiAgICAgICAgICAgIHdoZW46IFsnJ10sXG4gICAgICAgICAgICBzaG93Y2FzZTogW2ZhbHNlXSxcbiAgICAgICAgICAgIHB1Ymxpc2hlZF9hdDogW2ZhbHNlXSxcbiAgICAgICAgICAgIGFjY2VwdGVkX2F0OiBbZmFsc2VdLFxuICAgICAgICAgICAgYm9keTogWycnXVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSQoVE9LRU5fS0VZKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMudXNlckxvZ2dlZEluID0gISFyZXM7XG4gICAgICAgICAgICBpZiAodGhpcy51c2VyTG9nZ2VkSW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtJCgncHJvZHVjdCcpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gcmVzID8gSlNPTi5wYXJzZShyZXMpIDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25JZCA9IGRhdGE/LnN1YnNjcmlwdGlvbklkO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuYXZpZ2F0ZVRvUmVzb3VyY2VFZGl0KCkge1xuICAgICAgICBjb25zdCBiYXNlUGF0aCA9IGAvYWRtaW4vcmVzb3VyY2VzLyR7dGhpcy5yZXNvdXJjZURhdGE/LnNsdWd9YDtcbiAgICAgICAgY29uc3QgZnVsbFVybCA9IGAke2xvY2F0aW9uLm9yaWdpbn0ke2Jhc2VQYXRofWA7XG4gICAgICAgIHdpbmRvdy5vcGVuKGZ1bGxVcmwsICdfYmxhbmsnKTtcbiAgICB9XG5cbiAgICBvcGVuTW9kYWwobW9kYWxUZW1wbGF0ZSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5yZXNvdXJjZURhdGEpIHtcbiAgICAgICAgICAgIGNvbnN0IHdoZW4gPSB0aGlzLnJlc291cmNlRGF0YS53aGVuID8gbmV3IERhdGUodGhpcy5yZXNvdXJjZURhdGEud2hlbikgOiBudWxsO1xuICAgICAgICAgICAgdGhpcy5lZGl0Rm9ybS5zZXRWYWx1ZSh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRoaXMucmVzb3VyY2VEYXRhLnRpdGxlIHx8ICcnLFxuICAgICAgICAgICAgICAgIGV4dGVybmFsX3VybDogdGhpcy5yZXNvdXJjZURhdGEuZXh0ZXJuYWxfdXJsIHx8ICcnLFxuICAgICAgICAgICAgICAgIGN0YV90ZXh0OiB0aGlzLnJlc291cmNlRGF0YS5jdGFfdGV4dCB8fCAnJyxcbiAgICAgICAgICAgICAgICB3aGVuOiB3aGVuIHx8ICcnLFxuICAgICAgICAgICAgICAgIHNob3djYXNlOiAhIXRoaXMucmVzb3VyY2VEYXRhLnNob3djYXNlLFxuICAgICAgICAgICAgICAgIHB1Ymxpc2hlZF9hdDogISF0aGlzLnJlc291cmNlRGF0YS5wdWJsaXNoZWRfYXQsXG4gICAgICAgICAgICAgICAgYWNjZXB0ZWRfYXQ6ICEhdGhpcy5yZXNvdXJjZURhdGEuYWNjZXB0ZWRfYXQsXG4gICAgICAgICAgICAgICAgYm9keTogdGhpcy5yZXNvdXJjZURhdGEuYm9keVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmltYWdlID0gdGhpcy5yZXNvdXJjZURhdGEucGljdHVyZT8udXJsIHx8ICcnO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRhZ3MgPSB0aGlzLnJlc291cmNlRGF0YT8udGFncz8ubGVuZ3RoID8gWy4uLnRoaXMucmVzb3VyY2VEYXRhLnRhZ3NdIDogW107XG4gICAgICAgICAgICB0aGlzLnJlY3Rhbmd1bGFySW1hZ2UgPSB0aGlzLnJlc291cmNlRGF0YS5yZWN0YW5ndWxhcl9waWN0dXJlPy51cmwgfHwgJyc7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbihtb2RhbFRlbXBsYXRlLCB7IGNlbnRlcmVkOiB0cnVlLCBzaXplOiAnbGcnIH0pO1xuICAgICAgICB0aGlzLmdldFBvc3RUYWdzKCk7XG4gICAgfVxuXG4gICAgc2VhcmNoKGV2ZW50KSB7XG4gICAgICAgIGxldCB2YWx1ZXMgPSBbXTtcbiAgICAgICAgaWYgKGV2ZW50LnF1ZXJ5KSB7XG4gICAgICAgICAgICB2YWx1ZXMgPSB0aGlzLmFsbFRhZ3MuZmlsdGVyKHggPT5cbiAgICAgICAgICAgICAgICB4Lm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhldmVudC5xdWVyeS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYWxsVGFncy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgIHZhbHVlcy5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50YWdzU3VnZ2VzdGlvbiA9IHZhbHVlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFBvc3RUYWdzKCkge1xuICAgICAgICB0aGlzLnRhZ1NlcnZpY2VcbiAgICAgICAgICAgIC5nZXRUYWdzQnlUeXBlKCdwb3N0X2NhdGVnb3JpZXMnLCB7fSwgdGhpcy5zdWJzY3JpcHRpb25JZClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYWxsVGFncyA9IHJlc3BvbnNlLnRhZ3M7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBkZWxldGVSZWN0YW5ndWxhckltYWdlKCkge1xuICAgICAgICB0aGlzLnJlY3Rhbmd1bGFySW1hZ2UgPSBudWxsO1xuICAgICAgICB0aGlzLnJlY3Rhbmd1bGFyRmlsZSA9IG51bGw7XG4gICAgfVxuICAgIG9wZW5JbWFnZU1vZGFsKG1vZGFsVGVtcGxhdGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbWFnZU1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3Blbihtb2RhbFRlbXBsYXRlLCB7IGNlbnRlcmVkOiB0cnVlLCBzaXplOiAnbWQnIH0pO1xuICAgIH1cblxuICAgIG9uSW1hZ2VTZWxlY3RlZChiYXNlNjQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmltYWdlID0gYmFzZTY0O1xuICAgICAgICB0aGlzLmZpbGUgPSBIZWxwZXJTZXJ2aWNlLmNvbnZlcnRCYXNlNjRUb0ZpbGUoYmFzZTY0KTtcbiAgICAgICAgdGhpcy5pbWFnZU1vZGFsUmVmPy5jbG9zZSgpO1xuICAgIH1cblxuICAgIG9uUmVjdGFuZ3VsYXJJbWFnZVNlbGVjdGlvbihiYXNlNjQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLnJlY3Rhbmd1bGFySW1hZ2UgPSBiYXNlNjQ7XG4gICAgICAgIHRoaXMucmVjdGFuZ3VsYXJGaWxlID0gSGVscGVyU2VydmljZS5jb252ZXJ0QmFzZTY0VG9GaWxlKGJhc2U2NCk7XG4gICAgICAgIHRoaXMuaW1hZ2VNb2RhbFJlZj8uY2xvc2UoKTtcbiAgICB9XG5cbiAgICByZW1vdmVJbWFnZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbWFnZSA9IG51bGw7XG4gICAgICAgIHRoaXMuZmlsZSA9IG51bGw7XG4gICAgfVxuXG4gICAgc2F2ZVJlc291cmNlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmJ1dHRvbkJ1c3kgPSB0cnVlO1xuICAgICAgICB0aGlzLnNhdmVUYWdzKHRoaXMuaWQpO1xuICAgICAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgICAgICAgLi4udGhpcy5lZGl0Rm9ybS52YWx1ZSxcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbl9pZDogdGhpcy5zdWJzY3JpcHRpb25JZFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuaGFuZGxlUGljdHVyZShwYXlsb2FkKTtcbiAgICAgICAgdGhpcy5oYW5kbGVQdWJsaXNoZWRBdChwYXlsb2FkKTtcbiAgICAgICAgdGhpcy5oYW5kbGVBY2NlcHRlZEF0KHBheWxvYWQpO1xuICAgICAgICB0aGlzLmhhbmRsZUFjY2VwdGVkQXQocGF5bG9hZCk7XG4gICAgICAgIHRoaXMuaGFuZGxlT3B0aW9uYWxGaWVsZHMocGF5bG9hZCk7XG4gICAgICAgIHRoaXMuaGFuZGxlUmVjdGFuZ3VsYXJQaWN0dXJlKHBheWxvYWQpO1xuICAgICAgICB0aGlzLmhhbmRsZVJlbW92YWxzKHBheWxvYWQpO1xuXG4gICAgICAgIHRoaXMucmVzb3VyY2VTZXJ2aWNlLnVwZGF0ZVBvc3QocGF5bG9hZCwgdGhpcy5pZCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYnV0dG9uQnVzeSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy50b2FzdC5zdWNjZXNzKCdCbG9nIFBvc3QgVXBkYXRlZCcpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVkLmVtaXQoKTtcbiAgICAgICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLmRpc21pc3NBbGwoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzYXZlVGFncyhpZDogbnVtYmVyIHwgc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVGFncy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgICAgICAgZW50aXR5X3RhZ3M6IHRoaXMuc2VsZWN0ZWRUYWdzLm1hcCh0YWcgPT4gKHsgdGFnX2lkOiB0YWcuaWQgfSkpLFxuICAgICAgICAgICAgICAgIHNsdWc6IGlkLFxuICAgICAgICAgICAgICAgIHRhZ19lbnRpdHk6ICdQb3N0JyAvLyBvciB1c2UgVEFHX0VOVElUWS5QT1NUIGlmIHlvdSBpbXBvcnRlZCBpdFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy50YWdTZXJ2aWNlLmFkZFRhZ3MoZGF0YSwgdGhpcy5zdWJzY3JpcHRpb25JZCkuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZVBpY3R1cmUoZGF0YSkge1xuICAgICAgICBpZiAodGhpcy5maWxlKSB7XG4gICAgICAgICAgICBkYXRhLnBpY3R1cmUgPSB0aGlzLmZpbGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkZWxldGUgZGF0YS5waWN0dXJlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVQdWJsaXNoZWRBdChkYXRhKSB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmVkaXRGb3JtLmdldCgncHVibGlzaGVkX2F0Jyk7XG4gICAgICAgIGlmIChjb250cm9sPy5kaXJ0eSkge1xuICAgICAgICAgICAgZGF0YS5wdWJsaXNoZWRfYXQgPSBjb250cm9sLnZhbHVlID8gbW9tZW50KCkuZm9ybWF0KCdERC1NTU0tWVlZWScpIDogJyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkZWxldGUgZGF0YS5wdWJsaXNoZWRfYXQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUFjY2VwdGVkQXQoZGF0YSkge1xuICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5lZGl0Rm9ybS5nZXQoJ2FjY2VwdGVkX2F0Jyk7XG4gICAgICAgIGlmIChjb250cm9sPy5kaXJ0eSkge1xuICAgICAgICAgICAgZGF0YS5hY2NlcHRlZF9hdCA9IGNvbnRyb2wudmFsdWUgPyBtb21lbnQoKS5mb3JtYXQoJ0RELU1NTS1ZWVlZJykgOiAnJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRlbGV0ZSBkYXRhLmFjY2VwdGVkX2F0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVPcHRpb25hbEZpZWxkcyhkYXRhKSB7XG4gICAgICAgIGlmICghdGhpcy5lZGl0Rm9ybS5nZXQoJ3doZW4nKT8udmFsdWUpIHtcbiAgICAgICAgICAgIGRhdGEud2hlbiA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5lZGl0Rm9ybS5nZXQoJ3Nob3djYXNlJyk/LnZhbHVlKSB7XG4gICAgICAgICAgICBkYXRhLnNob3djYXNlID0gJyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZVJlY3Rhbmd1bGFyUGljdHVyZShkYXRhKSB7XG4gICAgICAgIGlmICh0aGlzLnJlY3Rhbmd1bGFyRmlsZSkge1xuICAgICAgICAgICAgZGF0YS5yZWN0YW5ndWxhcl9waWN0dXJlID0gdGhpcy5yZWN0YW5ndWxhckZpbGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkZWxldGUgZGF0YS5yZWN0YW5ndWxhcl9waWN0dXJlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVSZW1vdmFscyhkYXRhKSB7XG4gICAgICAgIGlmICghdGhpcy5maWxlICYmICF0aGlzLmltYWdlKSB7XG4gICAgICAgICAgICBkYXRhLnJlbW92ZV9waWN0dXJlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMucmVjdGFuZ3VsYXJGaWxlICYmICF0aGlzLnJlY3Rhbmd1bGFySW1hZ2UpIHtcbiAgICAgICAgICAgIGRhdGEucmVtb3ZlX3JlY3Rhbmd1bGFyX3BpY3R1cmUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb3BlblJlY3RNb2RhbChjb250ZW50KSB7XG4gICAgICAgIHRoaXMuaW1hZ2VNb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oY29udGVudCwge1xuICAgICAgICAgICAgY2VudGVyZWQ6IHRydWUsXG4gICAgICAgICAgICB3aW5kb3dDbGFzczogJ21vZGFsLWhvbGRlcidcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaGFuZGxlSW1hZ2VFcnJvcihldmVudDogRXZlbnQsIGZhbGxiYWNrUGF0aCk6IHZvaWQge1xuICAgICAgICBIZWxwZXJTZXJ2aWNlLmhhbmRsZUltYWdlRmFsbGJhY2tQYXRoKGV2ZW50LCBmYWxsYmFja1BhdGgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJlZGl0LWNhcmRcIj5cbiAgPGkgY2xhc3M9XCJmYSBmYS1lZGl0IGN1cnNvci1wb2ludGVyIHRleHQtZGFyayBpbi1wYWdlLWVkaXQtaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBtYi0yXCJcbiAgICAgKGNsaWNrKT1cIm9wZW5Nb2RhbChlZGl0UmVzb3VyY2VNb2RhbClcIiB0aXRsZT1cIkVkaXQgUmVzb3VyY2VcIj48L2k+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNlZGl0UmVzb3VyY2VNb2RhbCBsZXQtbW9kYWw+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiPkVkaXQgUmVzb3VyY2U8L2g1PlxuICAgIDxpIGNsYXNzPVwiZmEgZmEtZWRpdCBjdXJzb3ItcG9pbnRlciB0ZXh0LWRhcmsgaW4tcGFnZS1lZGl0LWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgbXMtM1wiXG4gICAgIChjbGljayk9XCJuYXZpZ2F0ZVRvUmVzb3VyY2VFZGl0KClcIiB0aXRsZT1cIkdvIHRvIHRoZSBtYWluIGVkaXQgcGFnZVwiPjwvaT5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1jbG9zZVwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj48L2J1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImVkaXRGb3JtXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBsYWJlbD1cIlRpdGxlXCIgbmFtZT1cInRpdGxlXCI+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cInRpdGxlXCIgLz5cbiAgICAgICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiByb3dcIj5cbiAgICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyIGxhYmVsPVwiQ1RBIFRleHRcIiBuYW1lPVwiY3RhX3RleHRcIiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cImN0YV90ZXh0XCIgLz5cbiAgICAgICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgbGFiZWw9XCJFeHRlcm5hbCBVUkxcIiBuYW1lPVwiZXh0ZXJuYWxfdXJsXCIgY2xhc3M9XCJjb2wtbWQtNlwiPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJleHRlcm5hbF91cmxcIiAvPlxuICAgICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lclxuICAgICAgICAgICAgW2xhYmVsXT1cIidSZXNvdXJjZS5Qb3N0cy5Cb2R5JyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICBuYW1lPVwiYm9keVwiXG4gICAgICAgICAgICBbZXJyb3JNc2ddPVwiJ1Jlc291cmNlLlBvc3RzLlZhbGlkYXRpb24uQm9keScgfCB0cmFuc2xvY29cIj5cbiAgICAgICAgICAgIDxxdWlsbC1lZGl0b3JcbiAgICAgICAgICAgICAgW3N0eWxlc109XCJ7IGhlaWdodDogJzMwMHB4JyB9XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJxdWlsbEVkaXRvclwiXG4gICAgICAgICAgICAgIFttb2R1bGVzXT1cImVkaXRvckNvbmZpZ1wiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImJvZHlcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ3ctMTAwJzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAncXVpbGwtY29udGFpbmVyJzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmWydib2R5J10uZXJyb3JzXG4gICAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICAgIDwvcXVpbGwtZWRpdG9yPlxuICAgICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC0zIGNvbC1zbS02XCI+XG4gICAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lclxuICAgICAgICAgICAgW2xhYmVsXT1cIidSZXNvdXJjZS5Qb3N0cy5XaGVuJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICBbc2hvd1Rvb2x0aXBdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbdG9vbHRpcFRleHRdPVwiJ1Jlc291cmNlLlBvc3RzLlRvb2x0aXAuV2hlbicgfCB0cmFuc2xvY29cIlxuICAgICAgICAgICAgbmFtZT1cIndoZW5cIj5cbiAgICAgICAgICAgIDxwLWNhbGVuZGFyIGZvcm1Db250cm9sTmFtZT1cIndoZW5cIlxuICAgICAgICAgICAgICBbc2hvd0ljb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIGRhdGVGb3JtYXQ9XCJkZC1NLXl5XCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTZWxlY3QgRGF0ZSdcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGZbJ3doZW4nXS5lcnJvcnMgfVwiPlxuICAgICAgICAgICAgPC9wLWNhbGVuZGFyPlxuICAgICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC04XCI+XG4gICAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lclxuICAgICAgICAgICAgW2xhYmVsXT1cIidSZXNvdXJjZS5Qb3N0cy5UYWdzJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICBjbGFzcz1cInVpLWZsdWlkIHNraWxscy1tb2RhbCB0YWdzXCJcbiAgICAgICAgICAgIFtzaG93VG9vbHRpcF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFt0b29sdGlwVGV4dF09XCInUmVzb3VyY2UuUG9zdHMuVG9vbHRpcC5DdGFUZXh0JyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICBuYW1lPVwiY3RhX3RleHRcIj5cbiAgICAgICAgICAgIDxwLWF1dG9Db21wbGV0ZSBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVGFnc1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYm9keS1iZ1wiXG4gICAgICAgICAgICAgIFtzdWdnZXN0aW9uc109XCJ0YWdzU3VnZ2VzdGlvblwiXG4gICAgICAgICAgICAgIGRhdGFLZXk9XCJpZFwiXG4gICAgICAgICAgICAgIGZpZWxkPVwibmFtZVwiXG4gICAgICAgICAgICAgIChjb21wbGV0ZU1ldGhvZCk9XCJzZWFyY2goJGV2ZW50KVwiXG4gICAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJ3LTEwMFwiXG4gICAgICAgICAgICAgIFttaW5MZW5ndGhdPVwiMVwiXG4gICAgICAgICAgICAgIFttYXhsZW5ndGhdPVwiMTBcIlxuICAgICAgICAgICAgICBbZHJvcGRvd25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiVGFnc1wiXG4gICAgICAgICAgICAgIFttdWx0aXBsZV09XCJ0cnVlXCI+XG4gICAgICAgICAgICA8L3AtYXV0b0NvbXBsZXRlPlxuICAgICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBjb2wtc20tNlwiPlxuICAgICAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lclxuICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1NIT1dDQVNFJ1wiXG4gICAgICAgICAgICAgIFtzaG93VG9vbHRpcF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBUZXh0XT1cIidNYXJrIGFzIHNob3djYXNlIHBvc3QnXCJcbiAgICAgICAgICAgICAgbmFtZT1cInNob3djYXNlXCI+XG4gICAgICAgICAgICAgIDx1aS1zd2l0Y2ggZm9ybUNvbnRyb2xOYW1lPVwic2hvd2Nhc2VcIiBjbGFzcz1cImQtYmxvY2tcIj48L3VpLXN3aXRjaD5cbiAgICAgICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGNvbC1zbS02XCI+XG4gICAgICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyXG4gICAgICAgICAgICAgIFtsYWJlbF09XCInUFVCTElTSEVEJ1wiXG4gICAgICAgICAgICAgIFtzaG93VG9vbHRpcF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBUZXh0XT1cIidTZXQgdG8gcHVibGlzaCB0aGUgcG9zdCdcIlxuICAgICAgICAgICAgICBuYW1lPVwicHVibGlzaGVkX2F0XCI+XG4gICAgICAgICAgICAgIDx1aS1zd2l0Y2ggZm9ybUNvbnRyb2xOYW1lPVwicHVibGlzaGVkX2F0XCIgY2xhc3M9XCJkLWJsb2NrXCI+PC91aS1zd2l0Y2g+XG4gICAgICAgICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBjb2wtc20tNlwiPlxuICAgICAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lclxuICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0FDQ0VQVEVEIEJZIEFETUlOJ1wiXG4gICAgICAgICAgICAgIFtzaG93VG9vbHRpcF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBUZXh0XT1cIidJbmRpY2F0ZXMgYXBwcm92YWwgYnkgYWRtaW4nXCJcbiAgICAgICAgICAgICAgbmFtZT1cImFjY2VwdGVkX2F0XCI+XG4gICAgICAgICAgICAgIDx1aS1zd2l0Y2ggZm9ybUNvbnRyb2xOYW1lPVwiYWNjZXB0ZWRfYXRcIiBjbGFzcz1cImQtYmxvY2tcIj48L3VpLXN3aXRjaD5cbiAgICAgICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC00IGNvbC1zbS00IG15LTQgbXMtM1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtYi00XCI+XG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwiY292ZXJQaWN0dXJlXCI+e3sgJ1Jlc291cmNlLlBvc3RzLkNvdmVyUGljdHVyZScgfCB0cmFuc2xvY28gfX08L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIGQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGltZyBbc3JjXT1cIihpbWFnZSAmJiAhaW1hZ2UuaW5jbHVkZXMoJ2RlZmF1bHQtcGhvdG8uanBnJykpID8gaW1hZ2UgOiAnYXNzZXRzL2ltZy9yZXNvdXJjZS9ibG9nLnBuZydcIlxuICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuSW1hZ2VNb2RhbChpbWFnZUNyb3BDb250ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwib3BlbkltYWdlTW9kYWwoaW1hZ2VDcm9wQ29udGVudClcIlxuICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW1hZ2Ugdy0xMDBcIlxuICAgICAgICAgICAgICAgICAgIGFsdD1cIk1vZGFsXCJcbiAgICAgICAgICAgICAgICAgICAoZXJyb3IpPVwiaGFuZGxlSW1hZ2VFcnJvcigkZXZlbnQsICdhc3NldHMvaW1nL3Jlc291cmNlL2Jsb2cucG5nJylcIiAvPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtdC0yXCI+XG4gICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkLWlubGluZS1ibG9ja1wiIChjbGljayk9XCJvcGVuSW1hZ2VNb2RhbChpbWFnZUNyb3BDb250ZW50KVwiPlxuICAgICAgICAgICAgICAgICAge3sgc2x1ZyAhPT0gJ2NyZWF0ZScgPyAnRWRpdCcgOiAnQWRkJyB9fSBQaWN0dXJlXG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiaW1hZ2UgJiYgIWltYWdlLmluY2x1ZGVzKCdkZWZhdWx0LXBob3RvLmpwZycpXCJcbiAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhIGZhLXRyYXNoIGRlbGV0ZS1pY29uIHRleHQtZGFuZ2VyIG1zLTIgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiUmVtb3ZlIEltYWdlXCJcbiAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlSW1hZ2UoKVwiXG4gICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwicmVtb3ZlSW1hZ2UoKVwiPjwvaT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtbWQtNCBjb2wtc20tNCBteS00IG1zLTNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbWItNFwiPlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cInJlY3Rhbmd1bGFyUGljdHVyZVwiPlJlY3Rhbmd1bGFyIFBpY3R1cmU8L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIGQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGltZyBbc3JjXT1cIihyZWN0YW5ndWxhckltYWdlICYmICFyZWN0YW5ndWxhckltYWdlLmluY2x1ZGVzKCdkZWZhdWx0LXBob3RvLmpwZycpKSA/IHJlY3Rhbmd1bGFySW1hZ2UgOiAnYXNzZXRzL2ltZy9yZXNvdXJjZS9ibG9nLnBuZydcIlxuICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuUmVjdE1vZGFsKHJlY3RDb250ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwib3BlblJlY3RNb2RhbChyZWN0Q29udGVudClcIlxuICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW1hZ2Ugdy0xMDBcIlxuICAgICAgICAgICAgICAgICAgIGFsdD1cIlVwbG9hZGVkIHJlY3Rhbmd1bGFyIG1lZGlhIHByZXZpZXdcIlxuICAgICAgICAgICAgICAgICAgIChlcnJvcik9XCJoYW5kbGVJbWFnZUVycm9yKCRldmVudCwgJ2Fzc2V0cy9pbWcvcmVzb3VyY2UvYmxvZy5wbmcnKVwiIC8+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG10LTJcIj5cbiAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImQtaW5saW5lLWJsb2NrXCIgKGNsaWNrKT1cIm9wZW5SZWN0TW9kYWwocmVjdENvbnRlbnQpXCI+XG4gICAgICAgICAgICAgICAgICB7eyBzbHVnICE9PSAnY3JlYXRlJyA/ICdFZGl0JyA6ICdBZGQnIH19IFBpY3R1cmVcbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJyZWN0YW5ndWxhckltYWdlICYmICFyZWN0YW5ndWxhckltYWdlLmluY2x1ZGVzKCdkZWZhdWx0LXBob3RvLmpwZycpXCJcbiAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhIGZhLXRyYXNoIGRlbGV0ZS1pY29uIHRleHQtZGFuZ2VyIG1zLTIgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiUmVtb3ZlIEltYWdlXCJcbiAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlUmVjdGFuZ3VsYXJJbWFnZSgpXCJcbiAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJkZWxldGVSZWN0YW5ndWxhckltYWdlKClcIj48L2k+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+Q2FuY2VsPC9idXR0b24+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIFtidXR0b25CdXN5XT1cImJ1dHRvbkJ1c3lcIiAoY2xpY2spPVwic2F2ZVJlc291cmNlKClcIj5TYXZlPC9idXR0b24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpbWFnZUNyb3BDb250ZW50IGxldC1tb2RhbD5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+VXBsb2FkIFBpY3R1cmU8L2g1PlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWNsb3NlXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPjwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cbiAgICA8c21hbGw+WW91IGNhbiB1cGxvYWQgYSBKUEcsIEdJRiwgb3IgUE5HIGZpbGUuIChEbyBub3QgdXBsb2FkIHBpY3R1cmVzIGNvbnRhaW5pbmcgY2VsZWJyaXRpZXMsXG4gICAgICBudWRpdHksIGFydHdvcmsgb3IgY29weXJpZ2h0ZWQgaW1hZ2VzLik8L3NtYWxsPlxuICAgIDxwdy1pbWFnZS1jcm9wcGVyXG4gICAgICBbYXNwZWN0UmF0aW9dPVwiJ2R5bmFtaWMnXCJcbiAgICAgIChpbWFnZVNlbGVjdGlvbkV2ZW50KT1cIm9uSW1hZ2VTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgIChjbG9zZUV2ZW50KT1cIm1vZGFsLmNsb3NlKClcIj5cbiAgICA8L3B3LWltYWdlLWNyb3BwZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNyZWN0Q29udGVudCBsZXQtbW9kYWw+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiPlVwbG9hZCBQaWN0dXJlPC9oNT5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1jbG9zZSBmbG9hdC1lbmRcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+PC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgIDxzbWFsbD5Zb3UgY2FuIHVwbG9hZCBhIEpQRywgR0lGLCBvciBQTkcgZmlsZS4gKERvIG5vdCB1cGxvYWQgcGljdHVyZXMgY29udGFpbmluZyBjZWxlYnJpdGllcyxcbiAgICAgIG51ZGl0eSwgYXJ0d29yayBvciBjb3B5cmlnaHRlZCBpbWFnZXMuKTwvc21hbGw+XG4gICAgPHB3LWltYWdlLWNyb3BwZXJcbiAgICAgICNwcm9maWxlXG4gICAgICBbYXNwZWN0UmF0aW9dPVwiJ2R5bmFtaWMnXCJcbiAgICAgIChpbWFnZVNlbGVjdGlvbkV2ZW50KT1cIm9uUmVjdGFuZ3VsYXJJbWFnZVNlbGVjdGlvbigkZXZlbnQpXCJcbiAgICAgIChjbG9zZUV2ZW50KT1cIm9uQ2xvc2UoKVwiPlxuICAgIDwvcHctaW1hZ2UtY3JvcHBlcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19