@posiwise/shared-components 0.0.104 → 0.0.106
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.
- package/esm2022/lib/custom-uploader/custom-uploader.component.mjs +2 -2
- package/esm2022/lib/header/header.component.mjs +21 -9
- package/esm2022/lib/label-management/entity-group/entity-group.component.mjs +3 -3
- package/esm2022/lib/privacy-and-tos/privacy-and-tos.component.mjs +26 -13
- package/fesm2022/posiwise-shared-components.mjs +51 -28
- package/fesm2022/posiwise-shared-components.mjs.map +1 -1
- package/lib/header/header.component.d.ts +5 -1
- package/package.json +3 -3
|
@@ -85,11 +85,11 @@ export class CustomUploaderComponent extends AppBaseComponent {
|
|
|
85
85
|
});
|
|
86
86
|
}
|
|
87
87
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: CustomUploaderComponent, deps: [{ token: i0.Injector }, { token: i1.NgbModal }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
88
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: CustomUploaderComponent, selector: "pw-custom-uploader", inputs: { controlName: "controlName", previewData: "previewData", aspectRatio: "aspectRatio", title: "title" }, outputs: { saveEvent: "saveEvent" }, usesInheritance: true, ngImport: i0, template: "<div class=\"card pb-2\">\n <div class=\"card-header upload-button-bar\">\n <button pButton\n type=\"button\"\n [disabled]=\"previewData?.url || uploadedFile\"\n (click)=\"openModal(content)\"\n icon=\"pi pi-plus\"\n label=\"Choose\"></button>\n </div>\n <div class=\"card-body\">\n <!-- no files -->\n <div class=\"d-flex preview-wrapper\"\n *ngIf=\"!previewData?.url\">\n <div>\n <img src=\"assets/img/icons/nofilesfound.png\"\n (load)=\"onImgChange()\"\n class=\"mx-auto img-fluid\"\n alt=\"\" />\n </div>\n </div>\n <!-- exising images -->\n <div class=\"d-flex preview-wrapper\"\n *ngIf=\"previewData?.url\">\n <div>\n <a [href]=\"previewData?.url\"\n target=\"_blank\">\n <img [src]=\"previewData?.url\"\n alt=\"\"\n (load)=\"onImgChange()\"\n (error)=\"onImgChange($event)\"\n class=\"img-fluid\" />\n </a>\n </div>\n <div class=\"ms-3\">\n <i\n container=\"body\"\n ngbTooltip=\"Delete\"\n (click)=\"deleteExistingFile()\"\n class=\"fa fa-trash delete-icon\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n </div>\n</div>\n<!-- image cropper -->\n<ng-template #content\n let-modal>\n <div class=\"card m-0\">\n <div class=\"card-content\">\n <div class=\"card-title\">\n <h3 class=\"modal-title\">{{ title }}</h3>\n <button type=\"button\"\n class=\"btn-close float-end float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"card-header\">\n <small> {{ 'User.Profile.PictureMessage' | transloco }}</small>\n <pw-image-cropper #profile\n [aspectRatio]=\"aspectRatio\"\n (fileChangeEvent)=\"onFileChange($event)\"\n (imageSelectionEvent)=\"onImageSelection($event)\"\n (closeEvent)=\"onClose()\">\n </pw-image-cropper>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.upload-button-bar{background:#efefef;padding:1rem 1.25rem}.card{min-height:
|
|
88
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: CustomUploaderComponent, selector: "pw-custom-uploader", inputs: { controlName: "controlName", previewData: "previewData", aspectRatio: "aspectRatio", title: "title" }, outputs: { saveEvent: "saveEvent" }, usesInheritance: true, ngImport: i0, template: "<div class=\"card pb-2\">\n <div class=\"card-header upload-button-bar\">\n <button pButton\n type=\"button\"\n [disabled]=\"previewData?.url || uploadedFile\"\n (click)=\"openModal(content)\"\n icon=\"pi pi-plus\"\n label=\"Choose\"></button>\n </div>\n <div class=\"card-body\">\n <!-- no files -->\n <div class=\"d-flex preview-wrapper\"\n *ngIf=\"!previewData?.url\">\n <div>\n <img src=\"assets/img/icons/nofilesfound.png\"\n (load)=\"onImgChange()\"\n class=\"mx-auto img-fluid\"\n alt=\"\" />\n </div>\n </div>\n <!-- exising images -->\n <div class=\"d-flex preview-wrapper\"\n *ngIf=\"previewData?.url\">\n <div>\n <a [href]=\"previewData?.url\"\n target=\"_blank\">\n <img [src]=\"previewData?.url\"\n alt=\"\"\n (load)=\"onImgChange()\"\n (error)=\"onImgChange($event)\"\n class=\"img-fluid\" />\n </a>\n </div>\n <div class=\"ms-3\">\n <i\n container=\"body\"\n ngbTooltip=\"Delete\"\n (click)=\"deleteExistingFile()\"\n class=\"fa fa-trash delete-icon\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n </div>\n</div>\n<!-- image cropper -->\n<ng-template #content\n let-modal>\n <div class=\"card m-0\">\n <div class=\"card-content\">\n <div class=\"card-title\">\n <h3 class=\"modal-title\">{{ title }}</h3>\n <button type=\"button\"\n class=\"btn-close float-end float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"card-header\">\n <small> {{ 'User.Profile.PictureMessage' | transloco }}</small>\n <pw-image-cropper #profile\n [aspectRatio]=\"aspectRatio\"\n (fileChangeEvent)=\"onFileChange($event)\"\n (imageSelectionEvent)=\"onImageSelection($event)\"\n (closeEvent)=\"onClose()\">\n </pw-image-cropper>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.upload-button-bar{background:#efefef;padding:1rem 1.25rem}.card{min-height:270px!important;max-height:330px!important;height:auto}.preview-wrapper{align-items:center;text-align:center}.preview-wrapper div{padding:1rem;flex:1 1 auto;width:25%;word-break:break-all}button[label=Choose],button[label=Choose]:hover,button[label=Choose]:enabled:active{background-color:#616161;border-color:#616161}\n"], dependencies: [{ kind: "directive", type: i2.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "directive", type: i3.LazyImgDirective, selector: "img" }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: i5.ProfileImageCropperComponent, selector: "pw-image-cropper", inputs: ["aspectRatio"], outputs: ["imageSelectionEvent", "closeEvent", "fileChangeEvent"] }, { kind: "pipe", type: i6.TranslocoPipe, name: "transloco" }] }); }
|
|
89
89
|
}
|
|
90
90
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: CustomUploaderComponent, decorators: [{
|
|
91
91
|
type: Component,
|
|
92
|
-
args: [{ selector: 'pw-custom-uploader', template: "<div class=\"card pb-2\">\n <div class=\"card-header upload-button-bar\">\n <button pButton\n type=\"button\"\n [disabled]=\"previewData?.url || uploadedFile\"\n (click)=\"openModal(content)\"\n icon=\"pi pi-plus\"\n label=\"Choose\"></button>\n </div>\n <div class=\"card-body\">\n <!-- no files -->\n <div class=\"d-flex preview-wrapper\"\n *ngIf=\"!previewData?.url\">\n <div>\n <img src=\"assets/img/icons/nofilesfound.png\"\n (load)=\"onImgChange()\"\n class=\"mx-auto img-fluid\"\n alt=\"\" />\n </div>\n </div>\n <!-- exising images -->\n <div class=\"d-flex preview-wrapper\"\n *ngIf=\"previewData?.url\">\n <div>\n <a [href]=\"previewData?.url\"\n target=\"_blank\">\n <img [src]=\"previewData?.url\"\n alt=\"\"\n (load)=\"onImgChange()\"\n (error)=\"onImgChange($event)\"\n class=\"img-fluid\" />\n </a>\n </div>\n <div class=\"ms-3\">\n <i\n container=\"body\"\n ngbTooltip=\"Delete\"\n (click)=\"deleteExistingFile()\"\n class=\"fa fa-trash delete-icon\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n </div>\n</div>\n<!-- image cropper -->\n<ng-template #content\n let-modal>\n <div class=\"card m-0\">\n <div class=\"card-content\">\n <div class=\"card-title\">\n <h3 class=\"modal-title\">{{ title }}</h3>\n <button type=\"button\"\n class=\"btn-close float-end float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"card-header\">\n <small> {{ 'User.Profile.PictureMessage' | transloco }}</small>\n <pw-image-cropper #profile\n [aspectRatio]=\"aspectRatio\"\n (fileChangeEvent)=\"onFileChange($event)\"\n (imageSelectionEvent)=\"onImageSelection($event)\"\n (closeEvent)=\"onClose()\">\n </pw-image-cropper>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.upload-button-bar{background:#efefef;padding:1rem 1.25rem}.card{min-height:
|
|
92
|
+
args: [{ selector: 'pw-custom-uploader', template: "<div class=\"card pb-2\">\n <div class=\"card-header upload-button-bar\">\n <button pButton\n type=\"button\"\n [disabled]=\"previewData?.url || uploadedFile\"\n (click)=\"openModal(content)\"\n icon=\"pi pi-plus\"\n label=\"Choose\"></button>\n </div>\n <div class=\"card-body\">\n <!-- no files -->\n <div class=\"d-flex preview-wrapper\"\n *ngIf=\"!previewData?.url\">\n <div>\n <img src=\"assets/img/icons/nofilesfound.png\"\n (load)=\"onImgChange()\"\n class=\"mx-auto img-fluid\"\n alt=\"\" />\n </div>\n </div>\n <!-- exising images -->\n <div class=\"d-flex preview-wrapper\"\n *ngIf=\"previewData?.url\">\n <div>\n <a [href]=\"previewData?.url\"\n target=\"_blank\">\n <img [src]=\"previewData?.url\"\n alt=\"\"\n (load)=\"onImgChange()\"\n (error)=\"onImgChange($event)\"\n class=\"img-fluid\" />\n </a>\n </div>\n <div class=\"ms-3\">\n <i\n container=\"body\"\n ngbTooltip=\"Delete\"\n (click)=\"deleteExistingFile()\"\n class=\"fa fa-trash delete-icon\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n </div>\n</div>\n<!-- image cropper -->\n<ng-template #content\n let-modal>\n <div class=\"card m-0\">\n <div class=\"card-content\">\n <div class=\"card-title\">\n <h3 class=\"modal-title\">{{ title }}</h3>\n <button type=\"button\"\n class=\"btn-close float-end float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"card-header\">\n <small> {{ 'User.Profile.PictureMessage' | transloco }}</small>\n <pw-image-cropper #profile\n [aspectRatio]=\"aspectRatio\"\n (fileChangeEvent)=\"onFileChange($event)\"\n (imageSelectionEvent)=\"onImageSelection($event)\"\n (closeEvent)=\"onClose()\">\n </pw-image-cropper>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.upload-button-bar{background:#efefef;padding:1rem 1.25rem}.card{min-height:270px!important;max-height:330px!important;height:auto}.preview-wrapper{align-items:center;text-align:center}.preview-wrapper div{padding:1rem;flex:1 1 auto;width:25%;word-break:break-all}button[label=Choose],button[label=Choose]:hover,button[label=Choose]:enabled:active{background-color:#616161;border-color:#616161}\n"] }]
|
|
93
93
|
}], ctorParameters: () => [{ type: i0.Injector }, { type: i1.NgbModal }, { type: Document, decorators: [{
|
|
94
94
|
type: Inject,
|
|
95
95
|
args: [DOCUMENT]
|
|
@@ -1,22 +1,34 @@
|
|
|
1
1
|
import { Component, Injector, Input } from '@angular/core';
|
|
2
2
|
import { AppBaseComponent } from '@posiwise/app-base-component';
|
|
3
|
+
import { AuthService } from '@posiwise/common-services';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@posiwise/
|
|
5
|
-
import * as i2 from "@
|
|
6
|
-
import * as i3 from "@
|
|
5
|
+
import * as i1 from "@posiwise/common-services";
|
|
6
|
+
import * as i2 from "@posiwise/directives";
|
|
7
|
+
import * as i3 from "@angular/common";
|
|
8
|
+
import * as i4 from "@jsverse/transloco";
|
|
7
9
|
export class HeaderComponent extends AppBaseComponent {
|
|
8
|
-
constructor(injector) {
|
|
10
|
+
constructor(injector, authService) {
|
|
9
11
|
super(injector);
|
|
12
|
+
this.authService = authService;
|
|
10
13
|
this.landing = false;
|
|
11
14
|
this.logo = this.appConfig?.company?.logos?.main_contrast?.url;
|
|
15
|
+
this.authService
|
|
16
|
+
.getToken$()
|
|
17
|
+
.pipe()
|
|
18
|
+
.subscribe(res => {
|
|
19
|
+
this.loggedIn = res ? true : false;
|
|
20
|
+
});
|
|
12
21
|
}
|
|
13
|
-
|
|
14
|
-
|
|
22
|
+
navigateToLogin() {
|
|
23
|
+
window.location.href = '/login';
|
|
24
|
+
}
|
|
25
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: HeaderComponent, deps: [{ token: i0.Injector }, { token: i1.AuthService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: HeaderComponent, selector: "pw-header", inputs: { landing: "landing" }, usesInheritance: true, ngImport: i0, template: "<div class=\"navbar navbar-expand-lg fixed-top-nav fixed-top\"\n [ngClass]=\"{ 'navbar-blue': !landing }\">\n <div class=\"container d-block\">\n <div class=\"row m-0\">\n <div class=\"col-lg-2 float-start\">\n <a href=\"/\">\n <img [src]=\"logo\"\n class=\"header-logo\"\n alt=\"site-logo\" />\n </a>\n <button type=\"button\"\n class=\"navbar-toggle\"\n data-bs-toggle=\"collapse\"\n data-bs-target=\"#myNavbar\">\n <span class=\"icon-bar\"></span> <span class=\"icon-bar\"></span>\n <span class=\"icon-bar\"></span>\n </button>\n </div>\n <div class=\"col-lg-10 nav-outer mt-2\">\n <div class=\"collapse navbar-collapse float-end\"\n id=\"myNavbar\">\n <nav class=\"navbar navbar-expand-sm bg-light\">\n <ul class=\"navbar-nav\">\n <li class=\"nav-item contact-button\">\n <a href=\"/\"\n class=\"\">{{ 'Button.Home' | transloco }}</a>\n </li>\n <li *ngIf=\"!loggedIn\" class=\"nav-item login-button\">\n <a class=\"\"\n (click)=\"navigateToLogin()\"> log in</a>\n </li>\n </ul>\n </nav>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.navbar-blue{background-color:var(--first);box-shadow:2px 2px 15px 2px #0000001f;transition:width 2s,height 2s,transform 2s background-color .5s ease;z-index:9999}.fixed-top-nav{display:block!important;height:60px}.navbar-toggle{display:none}.navbar-toggle .icon-bar{color:#fff}.nav-outer{text-align:right}.nav-outer nav{background:none!important;display:inline-block;float:none;width:auto}.nav-outer li a{color:#fff;font-size:18px;margin:0 0 0 30px;text-transform:capitalize}.nav-outer li a:hover{color:#fff;text-decoration:none}.nav-outer li a:focus{color:#fff}.navbar-nav li{display:inline-block}@media screen and (max-width: 1199px){.nav-outer li a{margin:0 10px}}@media screen and (max-width: 991px){.icon-bar{background-color:#fff;border-radius:1px;display:block;height:2px;margin-top:4px;width:22px}.navbar-toggle{background-color:#ffb92b!important;background-image:none;border:1px solid rgb(255,255,255);border-radius:4px;display:block!important;float:right;margin-top:4px;padding:9px 10px;position:relative}.collapse{display:none!important}.collapse.show{display:block!important}.nav-outer nav{background:#ffb92b!important;display:inline-block;float:left;padding:20px;width:100%}.nav-outer li a{margin:0;padding:0 16px}.navbar-expand-sm,.navbar-nav{-webkit-box-direction:inherit;flex-direction:inherit}li.nav-item{float:left;margin-bottom:12px;text-align:left;width:100%}.nav-outer li a{margin:0;padding:0}.navbar-expand-sm{-webkit-box-direction:normal;-webkit-box-orient:horizontal;-webkit-box-pack:start;flex-flow:column nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm,.navbar-nav{-webkit-box-direction:normal;-webkit-box-orient:horizontal;flex-direction:column}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{left:auto;right:0}.nav-outer li a:hover{color:#0a56d3}.contact-button a,.login-button a,.nav-item{background:none;color:#fff!important;font-weight:600}.contact-button a:hover,.login-button a:hover,.nav-item a:hover{color:#0a56d3!important}}@media screen and (max-width: 767px){.fixed-top{padding:10px;top:0!important}}@media screen and (max-width: 575px){.fixed-top{padding:10px;top:0!important}}@media screen and (max-width: 375px){.navbar .container{padding:0!important}}@media (min-width: 641px) and (max-width: 991px){.navbar-toggle{margin-top:6px}}.header-logo{height:45px;width:205px}.login-button a{background-color:var(--second);color:#fff}.login-button a:hover{background-color:#fff;color:var(--second)!important}.fixed-top{position:fixed!important}\n"], dependencies: [{ kind: "directive", type: i2.LazyImgDirective, selector: "img" }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.TranslocoPipe, name: "transloco" }] }); }
|
|
15
27
|
}
|
|
16
28
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: HeaderComponent, decorators: [{
|
|
17
29
|
type: Component,
|
|
18
|
-
args: [{ selector: 'pw-header', template: "<div class=\"navbar navbar-expand-lg fixed-top-nav fixed-top\"\n [ngClass]=\"{ 'navbar-blue': !landing }\">\n <div class=\"container d-block\">\n <div class=\"row m-0\">\n <div class=\"col-lg-2 float-start\">\n <a href=\"/\">\n <img [src]=\"logo\"\n class=\"header-logo\"\n alt=\"site-logo\" />\n </a>\n <button type=\"button\"\n class=\"navbar-toggle\"\n data-bs-toggle=\"collapse\"\n data-bs-target=\"#myNavbar\">\n <span class=\"icon-bar\"></span> <span class=\"icon-bar\"></span>\n <span class=\"icon-bar\"></span>\n </button>\n </div>\n <div class=\"col-lg-10 nav-outer mt-2\">\n <div class=\"collapse navbar-collapse float-end\"\n id=\"myNavbar\">\n <nav class=\"navbar navbar-expand-sm bg-light\">\n <ul class=\"navbar-nav\">\n <li class=\"nav-item
|
|
19
|
-
}], ctorParameters: () => [{ type: i0.Injector }], propDecorators: { landing: [{
|
|
30
|
+
args: [{ selector: 'pw-header', template: "<div class=\"navbar navbar-expand-lg fixed-top-nav fixed-top\"\n [ngClass]=\"{ 'navbar-blue': !landing }\">\n <div class=\"container d-block\">\n <div class=\"row m-0\">\n <div class=\"col-lg-2 float-start\">\n <a href=\"/\">\n <img [src]=\"logo\"\n class=\"header-logo\"\n alt=\"site-logo\" />\n </a>\n <button type=\"button\"\n class=\"navbar-toggle\"\n data-bs-toggle=\"collapse\"\n data-bs-target=\"#myNavbar\">\n <span class=\"icon-bar\"></span> <span class=\"icon-bar\"></span>\n <span class=\"icon-bar\"></span>\n </button>\n </div>\n <div class=\"col-lg-10 nav-outer mt-2\">\n <div class=\"collapse navbar-collapse float-end\"\n id=\"myNavbar\">\n <nav class=\"navbar navbar-expand-sm bg-light\">\n <ul class=\"navbar-nav\">\n <li class=\"nav-item contact-button\">\n <a href=\"/\"\n class=\"\">{{ 'Button.Home' | transloco }}</a>\n </li>\n <li *ngIf=\"!loggedIn\" class=\"nav-item login-button\">\n <a class=\"\"\n (click)=\"navigateToLogin()\"> log in</a>\n </li>\n </ul>\n </nav>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.navbar-blue{background-color:var(--first);box-shadow:2px 2px 15px 2px #0000001f;transition:width 2s,height 2s,transform 2s background-color .5s ease;z-index:9999}.fixed-top-nav{display:block!important;height:60px}.navbar-toggle{display:none}.navbar-toggle .icon-bar{color:#fff}.nav-outer{text-align:right}.nav-outer nav{background:none!important;display:inline-block;float:none;width:auto}.nav-outer li a{color:#fff;font-size:18px;margin:0 0 0 30px;text-transform:capitalize}.nav-outer li a:hover{color:#fff;text-decoration:none}.nav-outer li a:focus{color:#fff}.navbar-nav li{display:inline-block}@media screen and (max-width: 1199px){.nav-outer li a{margin:0 10px}}@media screen and (max-width: 991px){.icon-bar{background-color:#fff;border-radius:1px;display:block;height:2px;margin-top:4px;width:22px}.navbar-toggle{background-color:#ffb92b!important;background-image:none;border:1px solid rgb(255,255,255);border-radius:4px;display:block!important;float:right;margin-top:4px;padding:9px 10px;position:relative}.collapse{display:none!important}.collapse.show{display:block!important}.nav-outer nav{background:#ffb92b!important;display:inline-block;float:left;padding:20px;width:100%}.nav-outer li a{margin:0;padding:0 16px}.navbar-expand-sm,.navbar-nav{-webkit-box-direction:inherit;flex-direction:inherit}li.nav-item{float:left;margin-bottom:12px;text-align:left;width:100%}.nav-outer li a{margin:0;padding:0}.navbar-expand-sm{-webkit-box-direction:normal;-webkit-box-orient:horizontal;-webkit-box-pack:start;flex-flow:column nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm,.navbar-nav{-webkit-box-direction:normal;-webkit-box-orient:horizontal;flex-direction:column}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{left:auto;right:0}.nav-outer li a:hover{color:#0a56d3}.contact-button a,.login-button a,.nav-item{background:none;color:#fff!important;font-weight:600}.contact-button a:hover,.login-button a:hover,.nav-item a:hover{color:#0a56d3!important}}@media screen and (max-width: 767px){.fixed-top{padding:10px;top:0!important}}@media screen and (max-width: 575px){.fixed-top{padding:10px;top:0!important}}@media screen and (max-width: 375px){.navbar .container{padding:0!important}}@media (min-width: 641px) and (max-width: 991px){.navbar-toggle{margin-top:6px}}.header-logo{height:45px;width:205px}.login-button a{background-color:var(--second);color:#fff}.login-button a:hover{background-color:#fff;color:var(--second)!important}.fixed-top{position:fixed!important}\n"] }]
|
|
31
|
+
}], ctorParameters: () => [{ type: i0.Injector }, { type: i1.AuthService }], propDecorators: { landing: [{
|
|
20
32
|
type: Input
|
|
21
33
|
}] } });
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7OztBQU94RCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxnQkFBZ0I7SUFFakQsWUFDSSxRQUFrQixFQUNWLFdBQXdCO1FBRWhDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUZSLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBVzNCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFNekIsU0FBSSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsR0FBRyxDQUFDO1FBZHRELElBQUksQ0FBQyxXQUFXO2FBQ1gsU0FBUyxFQUFFO2FBQ1gsSUFBSSxFQUFFO2FBQ04sU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2IsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUlELGVBQWU7UUFDWCxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7SUFDcEMsQ0FBQzsrR0FuQlEsZUFBZTttR0FBZixlQUFlLHdHQ1Y1QixzMENBc0NBOzs0RkQ1QmEsZUFBZTtrQkFMM0IsU0FBUzsrQkFDSSxXQUFXO3VHQW1CWixPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHBvc2l3aXNlL2FwcC1iYXNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3B3LWhlYWRlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2hlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaGVhZGVyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSGVhZGVyQ29tcG9uZW50IGV4dGVuZHMgQXBwQmFzZUNvbXBvbmVudCB7XG4gICAgbG9nZ2VkSW46IGJvb2xlYW47XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0VG9rZW4kKClcbiAgICAgICAgICAgIC5waXBlKClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlZEluID0gcmVzID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgbGFuZGluZyA9IGZhbHNlO1xuXG4gICAgbmF2aWdhdGVUb0xvZ2luKCkge1xuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvbG9naW4nO1xuICAgIH1cblxuICAgIGxvZ28gPSB0aGlzLmFwcENvbmZpZz8uY29tcGFueT8ubG9nb3M/Lm1haW5fY29udHJhc3Q/LnVybDtcbn1cbiIsIjxkaXYgY2xhc3M9XCJuYXZiYXIgbmF2YmFyLWV4cGFuZC1sZyBmaXhlZC10b3AtbmF2IGZpeGVkLXRvcFwiXG4gIFtuZ0NsYXNzXT1cInsgJ25hdmJhci1ibHVlJzogIWxhbmRpbmcgfVwiPlxuICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyIGQtYmxvY2tcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IG0tMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0yIGZsb2F0LXN0YXJ0XCI+XG4gICAgICAgIDxhIGhyZWY9XCIvXCI+XG4gICAgICAgICAgPGltZyBbc3JjXT1cImxvZ29cIlxuICAgICAgICAgICAgY2xhc3M9XCJoZWFkZXItbG9nb1wiXG4gICAgICAgICAgICBhbHQ9XCJzaXRlLWxvZ29cIiAvPlxuICAgICAgICA8L2E+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJuYXZiYXItdG9nZ2xlXCJcbiAgICAgICAgICBkYXRhLWJzLXRvZ2dsZT1cImNvbGxhcHNlXCJcbiAgICAgICAgICBkYXRhLWJzLXRhcmdldD1cIiNteU5hdmJhclwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi1iYXJcIj48L3NwYW4+IDxzcGFuIGNsYXNzPVwiaWNvbi1iYXJcIj48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLWJhclwiPjwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTAgbmF2LW91dGVyIG10LTJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbGxhcHNlIG5hdmJhci1jb2xsYXBzZSBmbG9hdC1lbmRcIlxuICAgICAgICAgIGlkPVwibXlOYXZiYXJcIj5cbiAgICAgICAgICA8bmF2IGNsYXNzPVwibmF2YmFyIG5hdmJhci1leHBhbmQtc20gYmctbGlnaHRcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cIm5hdmJhci1uYXZcIj5cbiAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW0gY29udGFjdC1idXR0b25cIj5cbiAgICAgICAgICAgICAgICA8YSBocmVmPVwiL1wiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIlwiPnt7ICdCdXR0b24uSG9tZScgfCB0cmFuc2xvY28gfX08L2E+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaSAqbmdJZj1cIiFsb2dnZWRJblwiIGNsYXNzPVwibmF2LWl0ZW0gbG9naW4tYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVG9Mb2dpbigpXCI+IGxvZyBpbjwvYT5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9uYXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -144,13 +144,13 @@ export class EntityGroupComponent extends AppBaseComponent {
|
|
|
144
144
|
super.ngOnDestroy();
|
|
145
145
|
}
|
|
146
146
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EntityGroupComponent, deps: [{ token: i1.GroupService }, { token: i1.SubscriptionService }, { token: i2.NgbModal }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
147
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: EntityGroupComponent, selector: "pw-entity-group", viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div>\n <div class=\"row\">\n <div class=\"col-12 mb-3\">\n <h2>Team View</h2>\n\n <p>\n In this section, based on your permissions, you can add/remove members from your\n teams.\n <br />\n Then, you'll be able to see powerful insight on the activities performed by your\n team's members.\n </p>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-md-6 col-xs-12 d-flex align-items-sm-center align-items-top text-start pe-0\">\n <a href=\"javascript:void(0)\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"ms-sm-2 d-inline mt-0 card-title mb-3 mb-sm-0\">\n Team view: {{ selectedGroup?.name }}\n </h3>\n </div>\n <div class=\"col-md-6 col-xs-12 text-end justify-content-end\">\n <button *ngIf=\"hasAccess\"\n class=\"btn btn-sm btn-outline-primary\"\n (click)=\"open()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add Members\n </button>\n <button *ngIf=\"hasAccess\"\n class=\"btn btn-sm btn-outline-primary ms-2\"\n (click)=\"navigateToCommunications()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> See Communications\n </button>\n </div>\n </div>\n\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n\n <div class=\"primeng-datatable-container table-responsive\"\n [class.hideTable]=\"subscribedMembers?.length === 0\">\n <p-table #dt\n [value]=\"subscribedMembers\"\n [paginator]=\"true\"\n [rows]=\"PAGE_SIZE\">\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Label.FirstName' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.LastName' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Email' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-member>\n <tr class=\"table-row\">\n <td data-head=\"First Name\">\n <a [routerLink]=\"['/members', member.slug]\">{{ member.first_name || null }}\n </a>\n </td>\n <td data-head=\"Last Name\">{{ member.last_name || null }}</td>\n <td data-head=\"Email\">{{ member.email }}</td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline\">\n <li ngbTooltip=\"Message\"\n class=\"me-2 me-sm-3\"\n *ngIf=\"member.id !== userId\"\n [routerLink]=\"['/message']\"\n [fragment]=\"member.slug\">\n <i\n class=\"fa fa-comments cta1-icon\"\n *rbacAllow=\"chatPermission\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Remove\"\n class=\"me-2 me-sm-3\"\n (click)=\"onDelete(member.id)\"\n *ngIf=\"hasAccess\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n <pw-no-data [withImage]=\"true\" message=\"There are no members in this team yet.\"\n *ngIf=\"subscribedMembers?.length === 0 && isLoaded\">\n </pw-no-data>\n</div>\n\n<ng-template #content\n let-modal>\n <div class=\"modal-header\">\n <h4 class=\"modal-title\"\n id=\"modal-basic-title\">Add Members</h4>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"modal-body\">\n <p>Please start typing to select the members to add to this team.</p>\n <div class=\"ui-fluid skills-modal\">\n <p-autoComplete [suggestions]=\"filteredMembers\"\n [(ngModel)]=\"selectedMembers\"\n dataKey=\"id\"\n field=\"displayName\"\n (completeMethod)=\"search($event)\"\n styleClass=\"w-100\"\n placeholder=\"Member\"\n [multiple]=\"true\">\n </p-autoComplete>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\"\n class=\"btn btn-outline-default\"\n (click)=\"closeModal(modal)\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"onSave()\">\n {{ 'Button.Save' | transloco }}\n </button>\n </div>\n</ng-template>\n", styles: ["a.previous i{line-height:23px}\n"], dependencies: [{ kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i5.RbacAllowDirective, selector: "[rbacAllow]", inputs: ["rbacAllow"] }, { kind: "directive", type: i6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i7.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i8.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { 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: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: i11.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "pipe", type: i12.TranslocoPipe, name: "transloco" }] }); }
|
|
147
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: EntityGroupComponent, selector: "pw-entity-group", viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div>\n <div class=\"row\">\n <div class=\"col-12 mb-3\">\n <h2>Team View</h2>\n\n <p>\n In this section, based on your permissions, you can add/remove members from your\n teams.\n <br />\n Then, you'll be able to see powerful insight on the activities performed by your\n team's members.\n </p>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-md-6 col-xs-12 d-flex align-items-sm-center align-items-top text-start pe-0\">\n <a href=\"javascript:void(0)\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"ms-sm-2 d-inline mt-0 card-title mb-3 mb-sm-0\">\n Team view: {{ selectedGroup?.name }}\n </h3>\n </div>\n <div class=\"col-md-6 col-xs-12 text-end justify-content-end\">\n <button *ngIf=\"hasAccess\"\n class=\"btn btn-sm btn-outline-primary\"\n (click)=\"open()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add Members\n </button>\n <button *ngIf=\"hasAccess\"\n class=\"btn btn-sm btn-outline-primary ms-2\"\n (click)=\"navigateToCommunications()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> See Communications\n </button>\n </div>\n </div>\n\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n\n <div class=\"primeng-datatable-container table-responsive\"\n [class.hideTable]=\"subscribedMembers?.length === 0\">\n <p-table #dt\n [value]=\"subscribedMembers\"\n [paginator]=\"true\"\n [rows]=\"PAGE_SIZE\">\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Label.FirstName' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.LastName' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Email' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-member>\n <tr class=\"table-row\">\n <td data-head=\"First Name\">\n <a [routerLink]=\"['/members', member.slug]\">{{ member.first_name || null }}\n </a>\n </td>\n <td data-head=\"Last Name\">{{ member.last_name || null }}</td>\n <td data-head=\"Email\">{{ member.email }}</td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Message\"\n class=\"me-2 me-sm-3\"\n *ngIf=\"member.id !== userId\"\n [routerLink]=\"['/message']\"\n [fragment]=\"member.slug\">\n <i\n class=\"fa fa-comments cta1-icon\"\n *rbacAllow=\"chatPermission\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Remove\"\n class=\"me-2 me-sm-3\"\n (click)=\"onDelete(member.id)\"\n *ngIf=\"hasAccess\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n <pw-no-data [withImage]=\"true\" message=\"There are no members in this team yet.\"\n *ngIf=\"subscribedMembers?.length === 0 && isLoaded\">\n </pw-no-data>\n</div>\n\n<ng-template #content\n let-modal>\n <div class=\"modal-header\">\n <h4 class=\"modal-title\"\n id=\"modal-basic-title\">Add Members</h4>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"modal-body\">\n <p>Please start typing to select the members to add to this team.</p>\n <div class=\"ui-fluid skills-modal\">\n <p-autoComplete [suggestions]=\"filteredMembers\"\n [(ngModel)]=\"selectedMembers\"\n dataKey=\"id\"\n field=\"displayName\"\n (completeMethod)=\"search($event)\"\n styleClass=\"w-100\"\n placeholder=\"Member\"\n [multiple]=\"true\">\n </p-autoComplete>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\"\n class=\"btn btn-outline-default\"\n (click)=\"closeModal(modal)\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"onSave()\">\n {{ 'Button.Save' | transloco }}\n </button>\n </div>\n</ng-template>\n", styles: ["a.previous i{line-height:23px}\n"], dependencies: [{ kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i5.RbacAllowDirective, selector: "[rbacAllow]", inputs: ["rbacAllow"] }, { kind: "directive", type: i6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i7.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i8.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { 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: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: i11.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "pipe", type: i12.TranslocoPipe, name: "transloco" }] }); }
|
|
148
148
|
}
|
|
149
149
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EntityGroupComponent, decorators: [{
|
|
150
150
|
type: Component,
|
|
151
|
-
args: [{ selector: 'pw-entity-group', template: "<div>\n <div class=\"row\">\n <div class=\"col-12 mb-3\">\n <h2>Team View</h2>\n\n <p>\n In this section, based on your permissions, you can add/remove members from your\n teams.\n <br />\n Then, you'll be able to see powerful insight on the activities performed by your\n team's members.\n </p>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-md-6 col-xs-12 d-flex align-items-sm-center align-items-top text-start pe-0\">\n <a href=\"javascript:void(0)\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"ms-sm-2 d-inline mt-0 card-title mb-3 mb-sm-0\">\n Team view: {{ selectedGroup?.name }}\n </h3>\n </div>\n <div class=\"col-md-6 col-xs-12 text-end justify-content-end\">\n <button *ngIf=\"hasAccess\"\n class=\"btn btn-sm btn-outline-primary\"\n (click)=\"open()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add Members\n </button>\n <button *ngIf=\"hasAccess\"\n class=\"btn btn-sm btn-outline-primary ms-2\"\n (click)=\"navigateToCommunications()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> See Communications\n </button>\n </div>\n </div>\n\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n\n <div class=\"primeng-datatable-container table-responsive\"\n [class.hideTable]=\"subscribedMembers?.length === 0\">\n <p-table #dt\n [value]=\"subscribedMembers\"\n [paginator]=\"true\"\n [rows]=\"PAGE_SIZE\">\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Label.FirstName' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.LastName' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Email' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-member>\n <tr class=\"table-row\">\n <td data-head=\"First Name\">\n <a [routerLink]=\"['/members', member.slug]\">{{ member.first_name || null }}\n </a>\n </td>\n <td data-head=\"Last Name\">{{ member.last_name || null }}</td>\n <td data-head=\"Email\">{{ member.email }}</td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline\">\n <li ngbTooltip=\"Message\"\n class=\"me-2 me-sm-3\"\n *ngIf=\"member.id !== userId\"\n [routerLink]=\"['/message']\"\n [fragment]=\"member.slug\">\n <i\n class=\"fa fa-comments cta1-icon\"\n *rbacAllow=\"chatPermission\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Remove\"\n class=\"me-2 me-sm-3\"\n (click)=\"onDelete(member.id)\"\n *ngIf=\"hasAccess\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n <pw-no-data [withImage]=\"true\" message=\"There are no members in this team yet.\"\n *ngIf=\"subscribedMembers?.length === 0 && isLoaded\">\n </pw-no-data>\n</div>\n\n<ng-template #content\n let-modal>\n <div class=\"modal-header\">\n <h4 class=\"modal-title\"\n id=\"modal-basic-title\">Add Members</h4>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"modal-body\">\n <p>Please start typing to select the members to add to this team.</p>\n <div class=\"ui-fluid skills-modal\">\n <p-autoComplete [suggestions]=\"filteredMembers\"\n [(ngModel)]=\"selectedMembers\"\n dataKey=\"id\"\n field=\"displayName\"\n (completeMethod)=\"search($event)\"\n styleClass=\"w-100\"\n placeholder=\"Member\"\n [multiple]=\"true\">\n </p-autoComplete>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\"\n class=\"btn btn-outline-default\"\n (click)=\"closeModal(modal)\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"onSave()\">\n {{ 'Button.Save' | transloco }}\n </button>\n </div>\n</ng-template>\n", styles: ["a.previous i{line-height:23px}\n"] }]
|
|
151
|
+
args: [{ selector: 'pw-entity-group', template: "<div>\n <div class=\"row\">\n <div class=\"col-12 mb-3\">\n <h2>Team View</h2>\n\n <p>\n In this section, based on your permissions, you can add/remove members from your\n teams.\n <br />\n Then, you'll be able to see powerful insight on the activities performed by your\n team's members.\n </p>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-md-6 col-xs-12 d-flex align-items-sm-center align-items-top text-start pe-0\">\n <a href=\"javascript:void(0)\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"ms-sm-2 d-inline mt-0 card-title mb-3 mb-sm-0\">\n Team view: {{ selectedGroup?.name }}\n </h3>\n </div>\n <div class=\"col-md-6 col-xs-12 text-end justify-content-end\">\n <button *ngIf=\"hasAccess\"\n class=\"btn btn-sm btn-outline-primary\"\n (click)=\"open()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add Members\n </button>\n <button *ngIf=\"hasAccess\"\n class=\"btn btn-sm btn-outline-primary ms-2\"\n (click)=\"navigateToCommunications()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> See Communications\n </button>\n </div>\n </div>\n\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n\n <div class=\"primeng-datatable-container table-responsive\"\n [class.hideTable]=\"subscribedMembers?.length === 0\">\n <p-table #dt\n [value]=\"subscribedMembers\"\n [paginator]=\"true\"\n [rows]=\"PAGE_SIZE\">\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Label.FirstName' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.LastName' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Email' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-member>\n <tr class=\"table-row\">\n <td data-head=\"First Name\">\n <a [routerLink]=\"['/members', member.slug]\">{{ member.first_name || null }}\n </a>\n </td>\n <td data-head=\"Last Name\">{{ member.last_name || null }}</td>\n <td data-head=\"Email\">{{ member.email }}</td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Message\"\n class=\"me-2 me-sm-3\"\n *ngIf=\"member.id !== userId\"\n [routerLink]=\"['/message']\"\n [fragment]=\"member.slug\">\n <i\n class=\"fa fa-comments cta1-icon\"\n *rbacAllow=\"chatPermission\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Remove\"\n class=\"me-2 me-sm-3\"\n (click)=\"onDelete(member.id)\"\n *ngIf=\"hasAccess\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n <pw-no-data [withImage]=\"true\" message=\"There are no members in this team yet.\"\n *ngIf=\"subscribedMembers?.length === 0 && isLoaded\">\n </pw-no-data>\n</div>\n\n<ng-template #content\n let-modal>\n <div class=\"modal-header\">\n <h4 class=\"modal-title\"\n id=\"modal-basic-title\">Add Members</h4>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"modal-body\">\n <p>Please start typing to select the members to add to this team.</p>\n <div class=\"ui-fluid skills-modal\">\n <p-autoComplete [suggestions]=\"filteredMembers\"\n [(ngModel)]=\"selectedMembers\"\n dataKey=\"id\"\n field=\"displayName\"\n (completeMethod)=\"search($event)\"\n styleClass=\"w-100\"\n placeholder=\"Member\"\n [multiple]=\"true\">\n </p-autoComplete>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\"\n class=\"btn btn-outline-default\"\n (click)=\"closeModal(modal)\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"onSave()\">\n {{ 'Button.Save' | transloco }}\n </button>\n </div>\n</ng-template>\n", styles: ["a.previous i{line-height:23px}\n"] }]
|
|
152
152
|
}], ctorParameters: () => [{ type: i1.GroupService }, { type: i1.SubscriptionService }, { type: i2.NgbModal }, { type: i0.Injector }], propDecorators: { content: [{
|
|
153
153
|
type: ViewChild,
|
|
154
154
|
args: ['content', { static: true }]
|
|
155
155
|
}] } });
|
|
156
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9sYWJlbC1tYW5hZ2VtZW50L2VudGl0eS1ncm91cC9lbnRpdHktZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zaGFyZWQtY29tcG9uZW50cy9zcmMvbGliL2xhYmVsLW1hbmFnZW1lbnQvZW50aXR5LWdyb3VwL2VudGl0eS1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBcUIsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBR2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBUWhFLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxnQkFBZ0I7SUFxQ3RELFlBQ1ksWUFBMEIsRUFDMUIsbUJBQXdDLEVBQ3hDLFlBQXNCLEVBQzlCLFFBQWtCO1FBRWxCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUxSLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsaUJB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SUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RvciwgT25EZXN0cm95LCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuXG5pbXBvcnQgeyBUQUdfRU5USVRZIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgQXBwQmFzZUNvbXBvbmVudCB9IGZyb20gJ0Bwb3Npd2lzZS9hcHAtYmFzZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgVXNlciB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tdXRpbGl0aWVzJztcbmltcG9ydCB7IEdyb3VwU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tc2VydmljZXMnO1xuaW1wb3J0IHsgSGVscGVyU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9oZWxwZXItc2VydmljZSc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tc2VydmljZXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tc2VydmljZXMnO1xuaW1wb3J0IHsgRW5yb2xsZWRVc2VyLCBTaGFyZWRNb2RhbENvbnRleHQgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2hhcmVkLWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3B3LWVudGl0eS1ncm91cCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2VudGl0eS1ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZW50aXR5LWdyb3VwLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRW50aXR5R3JvdXBDb21wb25lbnQgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIEBWaWV3Q2hpbGQoJ2NvbnRlbnQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBjb250ZW50OiBUZW1wbGF0ZVJlZjxTaGFyZWRNb2RhbENvbnRleHQ+O1xuXG4gICAgZW50aXR5SWQ6IG51bWJlcjtcblxuICAgIHNlbGVjdGVkR3JvdXA6IHsgbmFtZTogc3RyaW5nIH07XG5cbiAgICBzdWJzY3JpcHRpb25JZDogbnVtYmVyO1xuXG4gICAgc3Vic2NyaXB0aW9uTWVtYmVycyA9IFtdOyAvLyBIb2xkcyBhbGwgdGhlIG1lbWJlcnNcblxuICAgIHN1YnNjcmliZWRNZW1iZXJzID0gW107IC8vIEhvbGRzIGFsbCB0aGUgbWVtYmVyc1xuXG4gICAgZmlsdGVyZWRNZW1iZXJzID0gW107IC8vIFBvcHVsYXRlcyBpbiB0aGUgYXV0b2NvbXBsZXRlXG5cbiAgICBzZWxlY3RlZE1lbWJlcnMgPSBbXTsgLy8gU2VsZWN0ZWQgaW4gdGhlIGF1dG9jb21wbGV0ZVxuXG4gICAgaGFzQWNjZXNzOiBib29sZWFuO1xuXG4gICAgYWRtaW5zID0gW107XG5cbiAgICBzdWJzY3JpcHRpb25JbmZvID0gW107XG5cbiAgICBzdWJzY3JpcHRpb25Pd25lcjogbnVtYmVyO1xuXG4gICAgZW5yb2xsZWRVc2VyczogRW5yb2xsZWRVc2VyW107XG5cbiAgICB1c2VyOiBVc2VyO1xuXG4gICAgdXNlcklkOiBudW1iZXI7XG5cbiAgICBpc0xvYWRlZCA9IGZhbHNlO1xuXG4gICAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBjaGF0UGVybWlzc2lvbjogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZ3JvdXBTZXJ2aWNlOiBHcm91cFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uU2VydmljZTogU3Vic2NyaXB0aW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3JcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmdldFVzZXJTdWJzY3JpcHRpb24oKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSByZXNwb25zZTtcbiAgICAgICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbj8uaWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldFN1YnNjcmliZWRVc2VycygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG4gICAgICAgICAgICB0aGlzLmVudGl0eUlkID0gTnVtYmVyKHBhcmFtc1snZ3JvdXBJZCddKTtcbiAgICAgICAgICAgIHRoaXMuZ2V0RW50aXR5KCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnVzZXJTdG9yZSgpLnN1YnNjcmliZSh1c2VyID0+IHtcbiAgICAgICAgICAgIHRoaXMudXNlciA9IHVzZXI7XG4gICAgICAgICAgICBpZiAodGhpcy51c2VyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VySWQgPSB0aGlzLnVzZXIuaWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNoYXRQZXJtaXNzaW9uID0gYCR7UGVybWlzc2lvblNlcnZpY2Uuc2VsZWN0ZWRQcm9kdWN0Py5wZXJtaXNzaW9ufS4ke1Blcm1pc3Npb25TZXJ2aWNlLnNlbGVjdGVkUHJvZHVjdD8uZmVhdHVyZV9rZXl9YDtcbiAgICB9XG5cbiAgICBzZWFyY2goZXZlbnQpIHtcbiAgICAgICAgbGV0IGRhdGEgPSBbXTtcbiAgICAgICAgaWYgKGV2ZW50LnF1ZXJ5KSB7XG4gICAgICAgICAgICBkYXRhID0gdGhpcy5zdWJzY3JpcHRpb25NZW1iZXJzLmZpbHRlcigoeDogeyBkaXNwbGF5TmFtZTogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geC5kaXNwbGF5TmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV2ZW50LnF1ZXJ5LnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbk1lbWJlcnMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgICBkYXRhLnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbHRlcmVkTWVtYmVycyA9IGRhdGE7XG4gICAgfVxuXG4gICAgb3BlbigpIHtcbiAgICAgICAgdGhpcy5ncm91cFNlcnZpY2UuZ2V0U3Vic2NyaXB0aW9uTWVtYmVycyh0aGlzLnN1YnNjcmlwdGlvbj8uaWQpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICByZXNwb25zZS5tZW1iZXJzLmZvckVhY2gobWVtYmVyID0+IHtcbiAgICAgICAgICAgICAgICBtZW1iZXIuZGlzcGxheU5hbWUgPSBgJHttZW1iZXIuZmlyc3RfbmFtZSB8fCAnJ30gJHttZW1iZXIubGFzdF9uYW1lIHx8ICcnfSAke1xuICAgICAgICAgICAgICAgICAgICBtZW1iZXIuZW1haWxcbiAgICAgICAgICAgICAgICB9YC50cmltKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uTWVtYmVycyA9IHJlc3BvbnNlLm1lbWJlcnM7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy5jb250ZW50LCB7IGNlbnRlcmVkOiB0cnVlLCB3aW5kb3dDbGFzczogJ21vZGFsLWhvbGRlcicgfSk7XG4gICAgfVxuXG4gICAgY2xvc2VNb2RhbChtb2RhbCkge1xuICAgICAgICBtb2RhbC5jbG9zZSgpO1xuICAgICAgICB0aGlzLmZpbHRlcmVkTWVtYmVycyA9IFtdO1xuICAgIH1cblxuICAgIGdldEVudGl0eSgpIHtcbiAgICAgICAgdGhpcy5ncm91cFNlcnZpY2UuZ2V0RW50aXR5R3JvdXAodGhpcy5lbnRpdHlJZCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIHJlc3BvbnNlLm1lbWJlcnMuZm9yRWFjaChtZW1iZXIgPT4ge1xuICAgICAgICAgICAgICAgIG1lbWJlci5kaXNwbGF5TmFtZSA9IGAke21lbWJlci5maXJzdF9uYW1lIHx8ICcnfSAke21lbWJlci5sYXN0X25hbWUgfHwgJyd9ICR7XG4gICAgICAgICAgICAgICAgICAgIG1lbWJlci5lbWFpbFxuICAgICAgICAgICAgICAgIH1gLnRyaW0oKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5pc0xvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmliZWRNZW1iZXJzID0gcmVzcG9uc2UubWVtYmVycztcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cCA9IHJlc3BvbnNlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvblNhdmUoKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgICBlbnRpdHlfZ3JvdXBzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICByZWxhdGVkX2VudGl0eV9pZDogdGhpcy5zZWxlY3RlZE1lbWJlcnMubWFwKHggPT4geC5pZCksXG4gICAgICAgICAgICAgICAgICAgIHJlbGF0ZWRfZW50aXR5X3R5cGU6IFRBR19FTlRJVFkuVVNFUlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmdyb3VwU2VydmljZS5hZGRFbnRpdHlHcm91cCh0aGlzLmVudGl0eUlkLCBkYXRhKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xuICAgICAgICAgICAgdGhpcy50b2FzdC5zdWNjZXNzKHRoaXMudHJhbnNsYXRpb24udHJhbnNsYXRlKCdBZG1pbi5TaGFyZWQuRW50aXR5LkFkZGVkTWVzc2FnZScpKTtcblxuICAgICAgICAgICAgdGhpcy5nZXRFbnRpdHkoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTdWJzY3JpYmVkVXNlcnMoKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uU2VydmljZVxuICAgICAgICAgICAgLmdldEVucm9sbGVkU3Vic2NyaXB0aW9uKHRoaXMuc3Vic2NyaXB0aW9uPy5pZClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uT3duZXIgPSByZXNwb25zZS5vd25lcl9pZDtcbiAgICAgICAgICAgICAgICB0aGlzLmFkbWlucyA9IHJlc3BvbnNlLmFkbWlucztcbiAgICAgICAgICAgICAgICB0aGlzLmVucm9sbGVkVXNlcnMgPSByZXNwb25zZS5tZW1iZXJzO1xuICAgICAgICAgICAgICAgIHRoaXMuZW5yb2xsZWRVc2Vycy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmlzX293bmVyID0gZWxlbWVudD8uaWQgPT09IHRoaXMudXNlcj8uaWQ7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5oYXNBY2Nlc3MgPVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkbWlucy5pbmNsdWRlcyh0aGlzLnVzZXI/LmlkKSB8fFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZXI/LmlkID09PSB0aGlzLnN1YnNjcmlwdGlvbk93bmVyIHx8XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGVybWlzc2lvblNlcnZpY2UuaXNTdXBlckFkbWluKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkRlbGV0ZShtZW1iZXJJZCkge1xuICAgICAgICBIZWxwZXJTZXJ2aWNlLnJhaXNlRGVsZXRlUG9wdXAoKVxuICAgICAgICAgICAgLnRoZW4ocmVzcCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3AudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IEpTT04uc3RyaW5naWZ5KFttZW1iZXJJZF0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdyb3VwU2VydmljZVxuICAgICAgICAgICAgICAgICAgICAgICAgLmRlbGV0ZUVudGl0eUdyb3VwKHRoaXMuZW50aXR5SWQsIGRhdGEsICdVc2VyJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3Quc3VjY2VzcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGlvbi50cmFuc2xhdGUoJ0FkbWluLlNoYXJlZC5FbnRpdHkuRGVsZXRlZE1lc3NhZ2UnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRFbnRpdHkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goZXJyb3IgPT4gdGhpcy50b2FzdC5zaG93VG9hc3QoZXJyb3IpKTtcbiAgICB9XG5cbiAgICBuYXZpZ2F0ZVRvQ29tbXVuaWNhdGlvbnMoKSB7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgLyR7dGhpcy5zdWJzY3JpcHRpb24/LnNsdWd9L2VudGVycHJpc2UvY29tbXVuaWNhdGlvbnNgXSwge1xuICAgICAgICAgICAgcXVlcnlQYXJhbXM6IHsgZW50aXR5X2lkOiB0aGlzLmVudGl0eUlkIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufVxuIiwiPGRpdj5cbiAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbWItM1wiPlxuICAgICAgPGgyPlRlYW0gVmlldzwvaDI+XG5cbiAgICAgIDxwPlxuICAgICAgICBJbiB0aGlzIHNlY3Rpb24sIGJhc2VkIG9uIHlvdXIgcGVybWlzc2lvbnMsIHlvdSBjYW4gYWRkL3JlbW92ZSBtZW1iZXJzIGZyb20geW91clxuICAgICAgICB0ZWFtcy5cbiAgICAgICAgPGJyIC8+XG4gICAgICAgIFRoZW4sIHlvdSdsbCBiZSBhYmxlIHRvIHNlZSBwb3dlcmZ1bCBpbnNpZ2h0IG9uIHRoZSBhY3Rpdml0aWVzIHBlcmZvcm1lZCBieSB5b3VyXG4gICAgICAgIHRlYW0ncyBtZW1iZXJzLlxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGNvbC14cy0xMiBkLWZsZXggYWxpZ24taXRlbXMtc20tY2VudGVyIGFsaWduLWl0ZW1zLXRvcCB0ZXh0LXN0YXJ0IHBlLTBcIj5cbiAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIlxuICAgICAgICAoY2xpY2spPVwiYmFjaygpXCJcbiAgICAgICAgY2xhc3M9XCJwcmV2aW91c1wiPjxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctYWx0LWNpcmNsZS1sZWZ0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPjwvYT5cbiAgICAgIDxoMyBjbGFzcz1cIm1zLXNtLTIgZC1pbmxpbmUgbXQtMCBjYXJkLXRpdGxlIG1iLTMgbWItc20tMFwiPlxuICAgICAgICBUZWFtIHZpZXc6IHt7IHNlbGVjdGVkR3JvdXA/Lm5hbWUgfX1cbiAgICAgIDwvaDM+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGNvbC14cy0xMiB0ZXh0LWVuZCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICA8YnV0dG9uICpuZ0lmPVwiaGFzQWNjZXNzXCJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXByaW1hcnlcIlxuICAgICAgICAoY2xpY2spPVwib3BlbigpXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcGx1cy1jaXJjbGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IEFkZCBNZW1iZXJzXG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gKm5nSWY9XCJoYXNBY2Nlc3NcIlxuICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeSBtcy0yXCJcbiAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVG9Db21tdW5pY2F0aW9ucygpXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcGx1cy1jaXJjbGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IFNlZSBDb21tdW5pY2F0aW9uc1xuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJ3LTEwMCB0ZXh0LWNlbnRlciBtdC0zXCJcbiAgICAqbmdJZj1cIiFpc0xvYWRlZFwiPlxuICAgIDxwLXByb2dyZXNzU3Bpbm5lciBzdHJva2VXaWR0aD1cIjJcIj4gPC9wLXByb2dyZXNzU3Bpbm5lcj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInByaW1lbmctZGF0YXRhYmxlLWNvbnRhaW5lciB0YWJsZS1yZXNwb25zaXZlXCJcbiAgICBbY2xhc3MuaGlkZVRhYmxlXT1cInN1YnNjcmliZWRNZW1iZXJzPy5sZW5ndGggPT09IDBcIj5cbiAgICA8cC10YWJsZSAjZHRcbiAgICAgIFt2YWx1ZV09XCJzdWJzY3JpYmVkTWVtYmVyc1wiXG4gICAgICBbcGFnaW5hdG9yXT1cInRydWVcIlxuICAgICAgW3Jvd3NdPVwiUEFHRV9TSVpFXCI+XG4gICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCI+e3sgJ0xhYmVsLkZpcnN0TmFtZScgfCB0cmFuc2xvY28gfX08L3RoPlxuICAgICAgICAgIDx0aCBzY29wZT1cInRydWVcIj57eyAnTGFiZWwuTGFzdE5hbWUnIHwgdHJhbnNsb2NvIH19PC90aD5cbiAgICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCI+e3sgJ0xhYmVsLkVtYWlsJyB8IHRyYW5zbG9jbyB9fTwvdGg+XG4gICAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiPnt7ICdMYWJlbC5BY3Rpb25zJyB8IHRyYW5zbG9jbyB9fTwvdGg+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIlxuICAgICAgICBsZXQtbWVtYmVyPlxuICAgICAgICA8dHIgY2xhc3M9XCJ0YWJsZS1yb3dcIj5cbiAgICAgICAgICA8dGQgZGF0YS1oZWFkPVwiRmlyc3QgTmFtZVwiPlxuICAgICAgICAgICAgPGEgW3JvdXRlckxpbmtdPVwiWycvbWVtYmVycycsIG1lbWJlci5zbHVnXVwiPnt7IG1lbWJlci5maXJzdF9uYW1lIHx8IG51bGwgfX1cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJMYXN0IE5hbWVcIj57eyBtZW1iZXIubGFzdF9uYW1lIHx8IG51bGwgfX08L3RkPlxuICAgICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJFbWFpbFwiPnt7IG1lbWJlci5lbWFpbCB9fTwvdGQ+XG4gICAgICAgICAgPHRkIGRhdGEtaGVhZD1cIkFjdGlvblwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC11bnN0eWxlZCBsaXN0LWlubGluZVwiPlxuICAgICAgICAgICAgICA8bGkgbmdiVG9vbHRpcD1cIk1lc3NhZ2VcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMiBtZS1zbS0zXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbWJlci5pZCAhPT0gdXNlcklkXCJcbiAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9tZXNzYWdlJ11cIlxuICAgICAgICAgICAgICAgIFtmcmFnbWVudF09XCJtZW1iZXIuc2x1Z1wiPlxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhIGZhLWNvbW1lbnRzIGN0YTEtaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcmJhY0FsbG93PVwiY2hhdFBlcm1pc3Npb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpIG5nYlRvb2x0aXA9XCJSZW1vdmVcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMiBtZS1zbS0zXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGUobWVtYmVyLmlkKVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJoYXNBY2Nlc3NcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRyYXNoIGRlbGV0ZS1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3AtdGFibGU+XG4gIDwvZGl2PlxuICA8cHctbm8tZGF0YSBbd2l0aEltYWdlXT1cInRydWVcIiBtZXNzYWdlPVwiVGhlcmUgYXJlIG5vIG1lbWJlcnMgaW4gdGhpcyB0ZWFtIHlldC5cIlxuICAgICpuZ0lmPVwic3Vic2NyaWJlZE1lbWJlcnM/Lmxlbmd0aCA9PT0gMCAmJiBpc0xvYWRlZFwiPlxuICA8L3B3LW5vLWRhdGE+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNjb250ZW50XG4gIGxldC1tb2RhbD5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICAgIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlXCJcbiAgICAgIGlkPVwibW9kYWwtYmFzaWMtdGl0bGVcIj5BZGQgTWVtYmVyczwvaDQ+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiYnRuLWNsb3NlIGZsb2F0LWVuZFwiXG4gICAgICBhcmlhLWxhYmVsPVwiQ2xvc2VcIlxuICAgICAgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxuXG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgIDxwPlBsZWFzZSBzdGFydCB0eXBpbmcgdG8gc2VsZWN0IHRoZSBtZW1iZXJzIHRvIGFkZCB0byB0aGlzIHRlYW0uPC9wPlxuICAgIDxkaXYgY2xhc3M9XCJ1aS1mbHVpZCBza2lsbHMtbW9kYWxcIj5cbiAgICAgIDxwLWF1dG9Db21wbGV0ZSBbc3VnZ2VzdGlvbnNdPVwiZmlsdGVyZWRNZW1iZXJzXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZE1lbWJlcnNcIlxuICAgICAgICBkYXRhS2V5PVwiaWRcIlxuICAgICAgICBmaWVsZD1cImRpc3BsYXlOYW1lXCJcbiAgICAgICAgKGNvbXBsZXRlTWV0aG9kKT1cInNlYXJjaCgkZXZlbnQpXCJcbiAgICAgICAgc3R5bGVDbGFzcz1cInctMTAwXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJNZW1iZXJcIlxuICAgICAgICBbbXVsdGlwbGVdPVwidHJ1ZVwiPlxuICAgICAgPC9wLWF1dG9Db21wbGV0ZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtZGVmYXVsdFwiXG4gICAgICAoY2xpY2spPVwiY2xvc2VNb2RhbChtb2RhbClcIj5cbiAgICAgIHt7ICdCdXR0b24uQ2FuY2VsJyB8IHRyYW5zbG9jbyB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAoY2xpY2spPVwib25TYXZlKClcIj5cbiAgICAgIHt7ICdCdXR0b24uU2F2ZScgfCB0cmFuc2xvY28gfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
156
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9sYWJlbC1tYW5hZ2VtZW50L2VudGl0eS1ncm91cC9lbnRpdHktZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zaGFyZWQtY29tcG9uZW50cy9zcmMvbGliL2xhYmVsLW1hbmFnZW1lbnQvZW50aXR5LWdyb3VwL2VudGl0eS1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBcUIsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBR2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBUWhFLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxnQkFBZ0I7SUFxQ3RELFlBQ1ksWUFBMEIsRUFDMUIsbUJBQXdDLEVBQ3hDLFlBQXNCLEVBQzlCLFFBQWtCO1FBRWxCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUxSLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsaUJB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SUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RvciwgT25EZXN0cm95LCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuXG5pbXBvcnQgeyBUQUdfRU5USVRZIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgQXBwQmFzZUNvbXBvbmVudCB9IGZyb20gJ0Bwb3Npd2lzZS9hcHAtYmFzZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgVXNlciB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tdXRpbGl0aWVzJztcbmltcG9ydCB7IEdyb3VwU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tc2VydmljZXMnO1xuaW1wb3J0IHsgSGVscGVyU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9oZWxwZXItc2VydmljZSc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tc2VydmljZXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tc2VydmljZXMnO1xuaW1wb3J0IHsgRW5yb2xsZWRVc2VyLCBTaGFyZWRNb2RhbENvbnRleHQgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2hhcmVkLWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3B3LWVudGl0eS1ncm91cCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2VudGl0eS1ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZW50aXR5LWdyb3VwLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRW50aXR5R3JvdXBDb21wb25lbnQgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIEBWaWV3Q2hpbGQoJ2NvbnRlbnQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBjb250ZW50OiBUZW1wbGF0ZVJlZjxTaGFyZWRNb2RhbENvbnRleHQ+O1xuXG4gICAgZW50aXR5SWQ6IG51bWJlcjtcblxuICAgIHNlbGVjdGVkR3JvdXA6IHsgbmFtZTogc3RyaW5nIH07XG5cbiAgICBzdWJzY3JpcHRpb25JZDogbnVtYmVyO1xuXG4gICAgc3Vic2NyaXB0aW9uTWVtYmVycyA9IFtdOyAvLyBIb2xkcyBhbGwgdGhlIG1lbWJlcnNcblxuICAgIHN1YnNjcmliZWRNZW1iZXJzID0gW107IC8vIEhvbGRzIGFsbCB0aGUgbWVtYmVyc1xuXG4gICAgZmlsdGVyZWRNZW1iZXJzID0gW107IC8vIFBvcHVsYXRlcyBpbiB0aGUgYXV0b2NvbXBsZXRlXG5cbiAgICBzZWxlY3RlZE1lbWJlcnMgPSBbXTsgLy8gU2VsZWN0ZWQgaW4gdGhlIGF1dG9jb21wbGV0ZVxuXG4gICAgaGFzQWNjZXNzOiBib29sZWFuO1xuXG4gICAgYWRtaW5zID0gW107XG5cbiAgICBzdWJzY3JpcHRpb25JbmZvID0gW107XG5cbiAgICBzdWJzY3JpcHRpb25Pd25lcjogbnVtYmVyO1xuXG4gICAgZW5yb2xsZWRVc2VyczogRW5yb2xsZWRVc2VyW107XG5cbiAgICB1c2VyOiBVc2VyO1xuXG4gICAgdXNlcklkOiBudW1iZXI7XG5cbiAgICBpc0xvYWRlZCA9IGZhbHNlO1xuXG4gICAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBjaGF0UGVybWlzc2lvbjogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZ3JvdXBTZXJ2aWNlOiBHcm91cFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uU2VydmljZTogU3Vic2NyaXB0aW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3JcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmdldFVzZXJTdWJzY3JpcHRpb24oKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSByZXNwb25zZTtcbiAgICAgICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbj8uaWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldFN1YnNjcmliZWRVc2VycygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG4gICAgICAgICAgICB0aGlzLmVudGl0eUlkID0gTnVtYmVyKHBhcmFtc1snZ3JvdXBJZCddKTtcbiAgICAgICAgICAgIHRoaXMuZ2V0RW50aXR5KCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnVzZXJTdG9yZSgpLnN1YnNjcmliZSh1c2VyID0+IHtcbiAgICAgICAgICAgIHRoaXMudXNlciA9IHVzZXI7XG4gICAgICAgICAgICBpZiAodGhpcy51c2VyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VySWQgPSB0aGlzLnVzZXIuaWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNoYXRQZXJtaXNzaW9uID0gYCR7UGVybWlzc2lvblNlcnZpY2Uuc2VsZWN0ZWRQcm9kdWN0Py5wZXJtaXNzaW9ufS4ke1Blcm1pc3Npb25TZXJ2aWNlLnNlbGVjdGVkUHJvZHVjdD8uZmVhdHVyZV9rZXl9YDtcbiAgICB9XG5cbiAgICBzZWFyY2goZXZlbnQpIHtcbiAgICAgICAgbGV0IGRhdGEgPSBbXTtcbiAgICAgICAgaWYgKGV2ZW50LnF1ZXJ5KSB7XG4gICAgICAgICAgICBkYXRhID0gdGhpcy5zdWJzY3JpcHRpb25NZW1iZXJzLmZpbHRlcigoeDogeyBkaXNwbGF5TmFtZTogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geC5kaXNwbGF5TmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV2ZW50LnF1ZXJ5LnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbk1lbWJlcnMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgICBkYXRhLnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbHRlcmVkTWVtYmVycyA9IGRhdGE7XG4gICAgfVxuXG4gICAgb3BlbigpIHtcbiAgICAgICAgdGhpcy5ncm91cFNlcnZpY2UuZ2V0U3Vic2NyaXB0aW9uTWVtYmVycyh0aGlzLnN1YnNjcmlwdGlvbj8uaWQpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICByZXNwb25zZS5tZW1iZXJzLmZvckVhY2gobWVtYmVyID0+IHtcbiAgICAgICAgICAgICAgICBtZW1iZXIuZGlzcGxheU5hbWUgPSBgJHttZW1iZXIuZmlyc3RfbmFtZSB8fCAnJ30gJHttZW1iZXIubGFzdF9uYW1lIHx8ICcnfSAke1xuICAgICAgICAgICAgICAgICAgICBtZW1iZXIuZW1haWxcbiAgICAgICAgICAgICAgICB9YC50cmltKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uTWVtYmVycyA9IHJlc3BvbnNlLm1lbWJlcnM7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy5jb250ZW50LCB7IGNlbnRlcmVkOiB0cnVlLCB3aW5kb3dDbGFzczogJ21vZGFsLWhvbGRlcicgfSk7XG4gICAgfVxuXG4gICAgY2xvc2VNb2RhbChtb2RhbCkge1xuICAgICAgICBtb2RhbC5jbG9zZSgpO1xuICAgICAgICB0aGlzLmZpbHRlcmVkTWVtYmVycyA9IFtdO1xuICAgIH1cblxuICAgIGdldEVudGl0eSgpIHtcbiAgICAgICAgdGhpcy5ncm91cFNlcnZpY2UuZ2V0RW50aXR5R3JvdXAodGhpcy5lbnRpdHlJZCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIHJlc3BvbnNlLm1lbWJlcnMuZm9yRWFjaChtZW1iZXIgPT4ge1xuICAgICAgICAgICAgICAgIG1lbWJlci5kaXNwbGF5TmFtZSA9IGAke21lbWJlci5maXJzdF9uYW1lIHx8ICcnfSAke21lbWJlci5sYXN0X25hbWUgfHwgJyd9ICR7XG4gICAgICAgICAgICAgICAgICAgIG1lbWJlci5lbWFpbFxuICAgICAgICAgICAgICAgIH1gLnRyaW0oKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5pc0xvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmliZWRNZW1iZXJzID0gcmVzcG9uc2UubWVtYmVycztcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cCA9IHJlc3BvbnNlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvblNhdmUoKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgICBlbnRpdHlfZ3JvdXBzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICByZWxhdGVkX2VudGl0eV9pZDogdGhpcy5zZWxlY3RlZE1lbWJlcnMubWFwKHggPT4geC5pZCksXG4gICAgICAgICAgICAgICAgICAgIHJlbGF0ZWRfZW50aXR5X3R5cGU6IFRBR19FTlRJVFkuVVNFUlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmdyb3VwU2VydmljZS5hZGRFbnRpdHlHcm91cCh0aGlzLmVudGl0eUlkLCBkYXRhKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xuICAgICAgICAgICAgdGhpcy50b2FzdC5zdWNjZXNzKHRoaXMudHJhbnNsYXRpb24udHJhbnNsYXRlKCdBZG1pbi5TaGFyZWQuRW50aXR5LkFkZGVkTWVzc2FnZScpKTtcblxuICAgICAgICAgICAgdGhpcy5nZXRFbnRpdHkoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTdWJzY3JpYmVkVXNlcnMoKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uU2VydmljZVxuICAgICAgICAgICAgLmdldEVucm9sbGVkU3Vic2NyaXB0aW9uKHRoaXMuc3Vic2NyaXB0aW9uPy5pZClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uT3duZXIgPSByZXNwb25zZS5vd25lcl9pZDtcbiAgICAgICAgICAgICAgICB0aGlzLmFkbWlucyA9IHJlc3BvbnNlLmFkbWlucztcbiAgICAgICAgICAgICAgICB0aGlzLmVucm9sbGVkVXNlcnMgPSByZXNwb25zZS5tZW1iZXJzO1xuICAgICAgICAgICAgICAgIHRoaXMuZW5yb2xsZWRVc2Vycy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmlzX293bmVyID0gZWxlbWVudD8uaWQgPT09IHRoaXMudXNlcj8uaWQ7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5oYXNBY2Nlc3MgPVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkbWlucy5pbmNsdWRlcyh0aGlzLnVzZXI/LmlkKSB8fFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZXI/LmlkID09PSB0aGlzLnN1YnNjcmlwdGlvbk93bmVyIHx8XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGVybWlzc2lvblNlcnZpY2UuaXNTdXBlckFkbWluKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkRlbGV0ZShtZW1iZXJJZCkge1xuICAgICAgICBIZWxwZXJTZXJ2aWNlLnJhaXNlRGVsZXRlUG9wdXAoKVxuICAgICAgICAgICAgLnRoZW4ocmVzcCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3AudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IEpTT04uc3RyaW5naWZ5KFttZW1iZXJJZF0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdyb3VwU2VydmljZVxuICAgICAgICAgICAgICAgICAgICAgICAgLmRlbGV0ZUVudGl0eUdyb3VwKHRoaXMuZW50aXR5SWQsIGRhdGEsICdVc2VyJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3Quc3VjY2VzcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGlvbi50cmFuc2xhdGUoJ0FkbWluLlNoYXJlZC5FbnRpdHkuRGVsZXRlZE1lc3NhZ2UnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRFbnRpdHkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goZXJyb3IgPT4gdGhpcy50b2FzdC5zaG93VG9hc3QoZXJyb3IpKTtcbiAgICB9XG5cbiAgICBuYXZpZ2F0ZVRvQ29tbXVuaWNhdGlvbnMoKSB7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgLyR7dGhpcy5zdWJzY3JpcHRpb24/LnNsdWd9L2VudGVycHJpc2UvY29tbXVuaWNhdGlvbnNgXSwge1xuICAgICAgICAgICAgcXVlcnlQYXJhbXM6IHsgZW50aXR5X2lkOiB0aGlzLmVudGl0eUlkIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufVxuIiwiPGRpdj5cbiAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbWItM1wiPlxuICAgICAgPGgyPlRlYW0gVmlldzwvaDI+XG5cbiAgICAgIDxwPlxuICAgICAgICBJbiB0aGlzIHNlY3Rpb24sIGJhc2VkIG9uIHlvdXIgcGVybWlzc2lvbnMsIHlvdSBjYW4gYWRkL3JlbW92ZSBtZW1iZXJzIGZyb20geW91clxuICAgICAgICB0ZWFtcy5cbiAgICAgICAgPGJyIC8+XG4gICAgICAgIFRoZW4sIHlvdSdsbCBiZSBhYmxlIHRvIHNlZSBwb3dlcmZ1bCBpbnNpZ2h0IG9uIHRoZSBhY3Rpdml0aWVzIHBlcmZvcm1lZCBieSB5b3VyXG4gICAgICAgIHRlYW0ncyBtZW1iZXJzLlxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGNvbC14cy0xMiBkLWZsZXggYWxpZ24taXRlbXMtc20tY2VudGVyIGFsaWduLWl0ZW1zLXRvcCB0ZXh0LXN0YXJ0IHBlLTBcIj5cbiAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIlxuICAgICAgICAoY2xpY2spPVwiYmFjaygpXCJcbiAgICAgICAgY2xhc3M9XCJwcmV2aW91c1wiPjxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctYWx0LWNpcmNsZS1sZWZ0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPjwvYT5cbiAgICAgIDxoMyBjbGFzcz1cIm1zLXNtLTIgZC1pbmxpbmUgbXQtMCBjYXJkLXRpdGxlIG1iLTMgbWItc20tMFwiPlxuICAgICAgICBUZWFtIHZpZXc6IHt7IHNlbGVjdGVkR3JvdXA/Lm5hbWUgfX1cbiAgICAgIDwvaDM+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGNvbC14cy0xMiB0ZXh0LWVuZCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICA8YnV0dG9uICpuZ0lmPVwiaGFzQWNjZXNzXCJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXByaW1hcnlcIlxuICAgICAgICAoY2xpY2spPVwib3BlbigpXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcGx1cy1jaXJjbGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IEFkZCBNZW1iZXJzXG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gKm5nSWY9XCJoYXNBY2Nlc3NcIlxuICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeSBtcy0yXCJcbiAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVG9Db21tdW5pY2F0aW9ucygpXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcGx1cy1jaXJjbGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IFNlZSBDb21tdW5pY2F0aW9uc1xuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJ3LTEwMCB0ZXh0LWNlbnRlciBtdC0zXCJcbiAgICAqbmdJZj1cIiFpc0xvYWRlZFwiPlxuICAgIDxwLXByb2dyZXNzU3Bpbm5lciBzdHJva2VXaWR0aD1cIjJcIj4gPC9wLXByb2dyZXNzU3Bpbm5lcj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInByaW1lbmctZGF0YXRhYmxlLWNvbnRhaW5lciB0YWJsZS1yZXNwb25zaXZlXCJcbiAgICBbY2xhc3MuaGlkZVRhYmxlXT1cInN1YnNjcmliZWRNZW1iZXJzPy5sZW5ndGggPT09IDBcIj5cbiAgICA8cC10YWJsZSAjZHRcbiAgICAgIFt2YWx1ZV09XCJzdWJzY3JpYmVkTWVtYmVyc1wiXG4gICAgICBbcGFnaW5hdG9yXT1cInRydWVcIlxuICAgICAgW3Jvd3NdPVwiUEFHRV9TSVpFXCI+XG4gICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCI+e3sgJ0xhYmVsLkZpcnN0TmFtZScgfCB0cmFuc2xvY28gfX08L3RoPlxuICAgICAgICAgIDx0aCBzY29wZT1cInRydWVcIj57eyAnTGFiZWwuTGFzdE5hbWUnIHwgdHJhbnNsb2NvIH19PC90aD5cbiAgICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCI+e3sgJ0xhYmVsLkVtYWlsJyB8IHRyYW5zbG9jbyB9fTwvdGg+XG4gICAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiPnt7ICdMYWJlbC5BY3Rpb25zJyB8IHRyYW5zbG9jbyB9fTwvdGg+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIlxuICAgICAgICBsZXQtbWVtYmVyPlxuICAgICAgICA8dHIgY2xhc3M9XCJ0YWJsZS1yb3dcIj5cbiAgICAgICAgICA8dGQgZGF0YS1oZWFkPVwiRmlyc3QgTmFtZVwiPlxuICAgICAgICAgICAgPGEgW3JvdXRlckxpbmtdPVwiWycvbWVtYmVycycsIG1lbWJlci5zbHVnXVwiPnt7IG1lbWJlci5maXJzdF9uYW1lIHx8IG51bGwgfX1cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJMYXN0IE5hbWVcIj57eyBtZW1iZXIubGFzdF9uYW1lIHx8IG51bGwgfX08L3RkPlxuICAgICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJFbWFpbFwiPnt7IG1lbWJlci5lbWFpbCB9fTwvdGQ+XG4gICAgICAgICAgPHRkIGRhdGEtaGVhZD1cIkFjdGlvblwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC11bnN0eWxlZCBsaXN0LWlubGluZSBsaXN0LWFjdGlvblwiPlxuICAgICAgICAgICAgICA8bGkgbmdiVG9vbHRpcD1cIk1lc3NhZ2VcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMiBtZS1zbS0zXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbWJlci5pZCAhPT0gdXNlcklkXCJcbiAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9tZXNzYWdlJ11cIlxuICAgICAgICAgICAgICAgIFtmcmFnbWVudF09XCJtZW1iZXIuc2x1Z1wiPlxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhIGZhLWNvbW1lbnRzIGN0YTEtaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcmJhY0FsbG93PVwiY2hhdFBlcm1pc3Npb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpIG5nYlRvb2x0aXA9XCJSZW1vdmVcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMiBtZS1zbS0zXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGUobWVtYmVyLmlkKVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJoYXNBY2Nlc3NcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRyYXNoIGRlbGV0ZS1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3AtdGFibGU+XG4gIDwvZGl2PlxuICA8cHctbm8tZGF0YSBbd2l0aEltYWdlXT1cInRydWVcIiBtZXNzYWdlPVwiVGhlcmUgYXJlIG5vIG1lbWJlcnMgaW4gdGhpcyB0ZWFtIHlldC5cIlxuICAgICpuZ0lmPVwic3Vic2NyaWJlZE1lbWJlcnM/Lmxlbmd0aCA9PT0gMCAmJiBpc0xvYWRlZFwiPlxuICA8L3B3LW5vLWRhdGE+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNjb250ZW50XG4gIGxldC1tb2RhbD5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICAgIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlXCJcbiAgICAgIGlkPVwibW9kYWwtYmFzaWMtdGl0bGVcIj5BZGQgTWVtYmVyczwvaDQ+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiYnRuLWNsb3NlIGZsb2F0LWVuZFwiXG4gICAgICBhcmlhLWxhYmVsPVwiQ2xvc2VcIlxuICAgICAgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxuXG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgIDxwPlBsZWFzZSBzdGFydCB0eXBpbmcgdG8gc2VsZWN0IHRoZSBtZW1iZXJzIHRvIGFkZCB0byB0aGlzIHRlYW0uPC9wPlxuICAgIDxkaXYgY2xhc3M9XCJ1aS1mbHVpZCBza2lsbHMtbW9kYWxcIj5cbiAgICAgIDxwLWF1dG9Db21wbGV0ZSBbc3VnZ2VzdGlvbnNdPVwiZmlsdGVyZWRNZW1iZXJzXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZE1lbWJlcnNcIlxuICAgICAgICBkYXRhS2V5PVwiaWRcIlxuICAgICAgICBmaWVsZD1cImRpc3BsYXlOYW1lXCJcbiAgICAgICAgKGNvbXBsZXRlTWV0aG9kKT1cInNlYXJjaCgkZXZlbnQpXCJcbiAgICAgICAgc3R5bGVDbGFzcz1cInctMTAwXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJNZW1iZXJcIlxuICAgICAgICBbbXVsdGlwbGVdPVwidHJ1ZVwiPlxuICAgICAgPC9wLWF1dG9Db21wbGV0ZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtZGVmYXVsdFwiXG4gICAgICAoY2xpY2spPVwiY2xvc2VNb2RhbChtb2RhbClcIj5cbiAgICAgIHt7ICdCdXR0b24uQ2FuY2VsJyB8IHRyYW5zbG9jbyB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAoY2xpY2spPVwib25TYXZlKClcIj5cbiAgICAgIHt7ICdCdXR0b24uU2F2ZScgfCB0cmFuc2xvY28gfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -65,33 +65,46 @@ export class PrivacyAndTosComponent extends AppBaseComponent {
|
|
|
65
65
|
this.adminService
|
|
66
66
|
.getTosDetails(id)
|
|
67
67
|
.subscribe(response => {
|
|
68
|
-
|
|
68
|
+
const parser = new DOMParser();
|
|
69
69
|
let privacyData;
|
|
70
|
-
if (response
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
privacyData = this.sanitizer.bypassSecurityTrustHtml(doc.body.innerHTML);
|
|
70
|
+
if (response?.privacy) {
|
|
71
|
+
const privacyDoc = parser.parseFromString(response?.privacy, 'text/html');
|
|
72
|
+
// Remove all button elements in privacy
|
|
73
|
+
const privacyButtons = privacyDoc.querySelectorAll('button');
|
|
74
|
+
privacyButtons.forEach(button => button.remove());
|
|
75
|
+
// Sanitize and store privacy HTML
|
|
76
|
+
privacyData = this.sanitizer.bypassSecurityTrustHtml(privacyDoc.body.innerHTML);
|
|
78
77
|
}
|
|
79
|
-
|
|
78
|
+
let tosData;
|
|
79
|
+
if (response?.tos) {
|
|
80
|
+
const tosDoc = parser.parseFromString(response?.tos, 'text/html');
|
|
81
|
+
// Remove all button elements in tos
|
|
82
|
+
const tosButtons = tosDoc.querySelectorAll('button');
|
|
83
|
+
tosButtons.forEach(button => button.remove());
|
|
84
|
+
// Sanitize and store tos HTML
|
|
85
|
+
tosData = this.sanitizer.bypassSecurityTrustHtml(tosDoc.body.innerHTML);
|
|
86
|
+
}
|
|
87
|
+
// Assign sanitized data back
|
|
88
|
+
this.data = {
|
|
89
|
+
...response,
|
|
90
|
+
privacy: privacyData,
|
|
91
|
+
tos: tosData
|
|
92
|
+
};
|
|
80
93
|
})
|
|
81
94
|
.add(() => {
|
|
82
95
|
this.isLoaded = true;
|
|
83
96
|
});
|
|
84
97
|
}
|
|
85
98
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PrivacyAndTosComponent, deps: [{ token: i1.AdminService }, { token: i0.Injector }, { token: DOCUMENT }, { token: i2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
86
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PrivacyAndTosComponent, selector: "pw-privacy-and-tos", inputs: { productId: "productId" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"isPublic\">\n <pw-header [landing]=\"false\"></pw-header>\n</ng-container>\n\n<div class=\"col-12 d-flex\"\n *ngIf=\"!isPublic\">\n <a href=\"javascript:void(0)\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"mt-3\">{{ productName }}</h3>\n</div>\n\n\n\n\n<div [ngClass]=\"{ 'container pw-tab overflow-hidden': isPublic }\" >\n <div [ngClass]=\"{ dashboard: isPublic }\">\n <div [ngClass]=\"{ 'dashboard-body': isPublic }\">\n <div [ngClass]=\"{ 'mt-5': isPublic }\">\n <h3 *ngIf=\"isPublic\">{{ product }}</h3>\n <div>\n\n <ul ngbNav\n #nav=\"ngbNav\"\n [(activeId)]=\"tabId\"\n class=\"nav-tabs\">\n <li [ngbNavItem]=\"'privacy-policy'\">\n <a ngbNavLink>Privacy policy</a>\n <ng-template ngbNavContent>\n <div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body pt-1\">\n <div class=\"row\">\n <div class=\"col-12 terms-of-service\">\n <h3>Privacy policy</h3>\n <div class=\"clearfix\"></div>\n <
|
|
99
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PrivacyAndTosComponent, selector: "pw-privacy-and-tos", inputs: { productId: "productId" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"isPublic\">\n <pw-header [landing]=\"false\"></pw-header>\n</ng-container>\n\n<div class=\"col-12 d-flex\"\n *ngIf=\"!isPublic\">\n <a href=\"javascript:void(0)\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"mt-3\">{{ productName }}</h3>\n</div>\n\n\n\n\n<div [ngClass]=\"{ 'container pw-tab overflow-hidden': isPublic }\" >\n <div [ngClass]=\"{ dashboard: isPublic }\">\n <div [ngClass]=\"{ 'dashboard-body': isPublic }\">\n <div [ngClass]=\"{ 'mt-5': isPublic }\">\n <h3 *ngIf=\"isPublic\">{{ product }}</h3>\n <div>\n\n <ul ngbNav\n #nav=\"ngbNav\"\n [(activeId)]=\"tabId\"\n class=\"nav-tabs\">\n <li [ngbNavItem]=\"'privacy-policy'\">\n <a ngbNavLink>Privacy policy</a>\n <ng-template ngbNavContent>\n <div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body pt-1\">\n <div class=\"row\">\n <div class=\"col-12 terms-of-service\">\n <h3>Privacy policy</h3>\n <div class=\"clearfix\"></div>\n <div class=\"ql-container ql-snow body-quill\">\n <div class=\"ql-editor\"\n [innerHTML]=\"data?.privacy\">\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n </li>\n <li [ngbNavItem]=\"'terms-of-service'\">\n <a ngbNavLink>Terms of Services</a>\n <ng-template ngbNavContent>\n <div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body pt-1\">\n <div class=\"row\">\n <div class=\"col-12 terms-of-service\">\n <h3>Terms of Services</h3>\n <div class=\"clearfix\"></div>\n <div class=\"ql-container ql-snow body-quill\">\n <div class=\"ql-editor\"\n [innerHTML]=\"data?.tos\">\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n </li>\n </ul>\n </div>\n <div class=\"w-100 text-center p-2 mt-5\" *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"></p-progressSpinner>\n </div>\n <div [ngbNavOutlet]=\"nav\" *ngIf=\"isLoaded\"></div>\n </div>\n </div>\n </div>\n</div>\n", styles: ["::ng-deep .terms-of-service ul{list-style:disc!important;padding-left:40px!important}.ql-container{max-width:1000px;margin:0 auto;resize:none!important}\n"], dependencies: [{ kind: "component", type: i3.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { kind: "directive", type: i5.NgbNav, selector: "[ngbNav]", inputs: ["activeId", "animation", "destroyOnHide", "orientation", "roles", "keyboard"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { kind: "directive", type: i5.NgbNavItem, selector: "[ngbNavItem]", inputs: ["destroyOnHide", "disabled", "domId", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { kind: "directive", type: i5.NgbNavItemRole, selector: "[ngbNavItem]:not(ng-container)" }, { kind: "directive", type: i5.NgbNavLink, selector: "a[ngbNavLink]" }, { kind: "directive", type: i5.NgbNavLinkBase, selector: "[ngbNavLink]" }, { kind: "component", type: i5.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { kind: "component", type: i6.HeaderComponent, selector: "pw-header", inputs: ["landing"] }] }); }
|
|
87
100
|
}
|
|
88
101
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PrivacyAndTosComponent, decorators: [{
|
|
89
102
|
type: Component,
|
|
90
|
-
args: [{ selector: 'pw-privacy-and-tos', template: "<ng-container *ngIf=\"isPublic\">\n <pw-header [landing]=\"false\"></pw-header>\n</ng-container>\n\n<div class=\"col-12 d-flex\"\n *ngIf=\"!isPublic\">\n <a href=\"javascript:void(0)\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"mt-3\">{{ productName }}</h3>\n</div>\n\n\n\n\n<div [ngClass]=\"{ 'container pw-tab overflow-hidden': isPublic }\" >\n <div [ngClass]=\"{ dashboard: isPublic }\">\n <div [ngClass]=\"{ 'dashboard-body': isPublic }\">\n <div [ngClass]=\"{ 'mt-5': isPublic }\">\n <h3 *ngIf=\"isPublic\">{{ product }}</h3>\n <div>\n\n <ul ngbNav\n #nav=\"ngbNav\"\n [(activeId)]=\"tabId\"\n class=\"nav-tabs\">\n <li [ngbNavItem]=\"'privacy-policy'\">\n <a ngbNavLink>Privacy policy</a>\n <ng-template ngbNavContent>\n <div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body pt-1\">\n <div class=\"row\">\n <div class=\"col-12 terms-of-service\">\n <h3>Privacy policy</h3>\n <div class=\"clearfix\"></div>\n <
|
|
103
|
+
args: [{ selector: 'pw-privacy-and-tos', template: "<ng-container *ngIf=\"isPublic\">\n <pw-header [landing]=\"false\"></pw-header>\n</ng-container>\n\n<div class=\"col-12 d-flex\"\n *ngIf=\"!isPublic\">\n <a href=\"javascript:void(0)\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"mt-3\">{{ productName }}</h3>\n</div>\n\n\n\n\n<div [ngClass]=\"{ 'container pw-tab overflow-hidden': isPublic }\" >\n <div [ngClass]=\"{ dashboard: isPublic }\">\n <div [ngClass]=\"{ 'dashboard-body': isPublic }\">\n <div [ngClass]=\"{ 'mt-5': isPublic }\">\n <h3 *ngIf=\"isPublic\">{{ product }}</h3>\n <div>\n\n <ul ngbNav\n #nav=\"ngbNav\"\n [(activeId)]=\"tabId\"\n class=\"nav-tabs\">\n <li [ngbNavItem]=\"'privacy-policy'\">\n <a ngbNavLink>Privacy policy</a>\n <ng-template ngbNavContent>\n <div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body pt-1\">\n <div class=\"row\">\n <div class=\"col-12 terms-of-service\">\n <h3>Privacy policy</h3>\n <div class=\"clearfix\"></div>\n <div class=\"ql-container ql-snow body-quill\">\n <div class=\"ql-editor\"\n [innerHTML]=\"data?.privacy\">\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n </li>\n <li [ngbNavItem]=\"'terms-of-service'\">\n <a ngbNavLink>Terms of Services</a>\n <ng-template ngbNavContent>\n <div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body pt-1\">\n <div class=\"row\">\n <div class=\"col-12 terms-of-service\">\n <h3>Terms of Services</h3>\n <div class=\"clearfix\"></div>\n <div class=\"ql-container ql-snow body-quill\">\n <div class=\"ql-editor\"\n [innerHTML]=\"data?.tos\">\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n </li>\n </ul>\n </div>\n <div class=\"w-100 text-center p-2 mt-5\" *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"></p-progressSpinner>\n </div>\n <div [ngbNavOutlet]=\"nav\" *ngIf=\"isLoaded\"></div>\n </div>\n </div>\n </div>\n</div>\n", styles: ["::ng-deep .terms-of-service ul{list-style:disc!important;padding-left:40px!important}.ql-container{max-width:1000px;margin:0 auto;resize:none!important}\n"] }]
|
|
91
104
|
}], ctorParameters: () => [{ type: i1.AdminService }, { type: i0.Injector }, { type: Document, decorators: [{
|
|
92
105
|
type: Inject,
|
|
93
106
|
args: [DOCUMENT]
|
|
94
107
|
}] }, { type: i2.DomSanitizer }], propDecorators: { productId: [{
|
|
95
108
|
type: Input
|
|
96
109
|
}] } });
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmFjeS1hbmQtdG9zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9wcml2YWN5LWFuZC10b3MvcHJpdmFjeS1hbmQtdG9zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9wcml2YWN5LWFuZC10b3MvcHJpdmFjeS1hbmQtdG9zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7O0FBT3pELE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxnQkFBZ0I7SUFzQnhELFlBQ1ksWUFBMEIsRUFDbEMsUUFBa0IsRUFDUSxRQUFrQixFQUNwQyxTQUF1QjtRQUUvQixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFMUixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUVSLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDcEMsY0FBUyxHQUFULFNBQVMsQ0FBYztRQVhuQyxVQUFLLEdBQUcsZ0JBQWdCLENBQUM7SUFjekIsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDO1FBQ2pELElB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Q2hCLElBQUksUUFBUSxJQUFJLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQztnQkFDaEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDL0IsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQUVuRSw2QkFBNkI7Z0JBQzdCLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDL0MsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO2dCQUUzQyx3QkFBd0I7Z0JBQ3hCLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDN0UsQ0FBQztZQUVELElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxHQUFHLFFBQVEsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDdEQsQ0FBQyxDQUFDO2FBQ0QsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNOLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQzsrR0FoR1Esc0JBQXNCLHNFQXlCbkIsUUFBUTttR0F6Qlgsc0JBQXNCLHFIQ2RuQyxrbUZBd0VBOzs0RkQxRGEsc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNJLG9CQUFvQjs7MEJBNkJ6QixNQUFNOzJCQUFDLFFBQVE7b0VBeEJYLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgSW5qZWN0b3IsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQWRtaW5TZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2FkbWluLW1vZHVsZS11dGlscyc7XG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHBvc2l3aXNlL2FwcC1iYXNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgUGVybWlzc2lvblNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXNlcnZpY2VzJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3B3LXByaXZhY3ktYW5kLXRvcycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3ByaXZhY3ktYW5kLXRvcy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcHJpdmFjeS1hbmQtdG9zLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUHJpdmFjeUFuZFRvc0NvbXBvbmVudCBleHRlbmRzIEFwcEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIHByb2R1Y3RJZDogbnVtYmVyO1xuXG4gICAgaXNQdWJsaWM6IGJvb2xlYW47XG5cbiAgICBpZDogc3RyaW5nO1xuXG4gICAgZGF0YTogeyBwcml2YWN5OiAnJyB9O1xuXG4gICAgdXNlcjogVXNlcjtcblxuICAgIHN1YnNjcmliZWRTdWJzY3JpcHRpb25zOiB7IHByb2R1Y3RzOiB7IGlkOiBudW1iZXIgfVtdIH1bXTtcblxuICAgIHByb2R1Y3Q6IHN0cmluZztcblxuICAgIHRhYklkID0gJ3ByaXZhY3ktcG9saWN5JztcblxuICAgIHByb2R1Y3ROYW1lOiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIHByaXZhY3lBbmRUb3M6IG51bWJlcjtcbiAgICBpc0xvYWRlZDogYm9vbGVhbjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGFkbWluU2VydmljZTogQWRtaW5TZXJ2aWNlLFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LFxuICAgICAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5wcml2YWN5QW5kVG9zID0gdGhpcy5hcHBDb25maWc/Lm1haW5fdG9zX2lkO1xuICAgICAgICB0aGlzLnByb2R1Y3QgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KCdwcm9kdWN0Jyk7XG4gICAgICAgIHRoaXMuaXNMb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICAgICAgdGhpcy5pZCA9IGRhdGFbJ0lkJ107XG4gICAgICAgICAgICBpZiAodGhpcy5pZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkID0gdGhpcy5pZCA9PT0gJ2RldGFpbHMnID8gdGhpcy5wcml2YWN5QW5kVG9zIDogdGhpcy5pZDtcbiAgICAgICAgICAgICAgICB0aGlzLmdldFRvc0RldGFpbHMoTnVtYmVyKGlkKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1B1YmxpYyA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucHJvZHVjdElkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRTdWJzY3JpYmVkUHJvZHVjdCh0aGlzLnByb2R1Y3RJZCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZShpZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFiSWQgPSBpZFsnZGF0YSddIHx8ICdwcml2YWN5LXBvbGljeSc7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3Vic2NyaWJlZFByb2R1Y3QoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTdWJzY3JpYmVkUHJvZHVjdChpZD8pIHtcbiAgICAgICAgdGhpcy51c2VyU3RvcmUoKS5zdWJzY3JpYmUodXNlciA9PiB7XG4gICAgICAgICAgICB0aGlzLnVzZXIgPSB1c2VyO1xuICAgICAgICAgICAgaWYgKHVzZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLmdldFVzZXJTdWJzY3JpcHRpb25zKHVzZXIuaWQpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaWJlZFN1YnNjcmlwdGlvbnMgPSByZXNwb25zZS5zdWJzY3JpcHRpb25zO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm9kdWN0SWQgPSBpZCB8fCBQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZFByb2R1Y3QuaWQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb2R1Y3RzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaWJlZFN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWJzY3JpYmUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVxdWlyZWRQcm9kdWN0ID0gc3Vic2NyaWJlPy5wcm9kdWN0cy5maW5kKHggPT4geD8uaWQgPT09IHByb2R1Y3RJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVxdWlyZWRQcm9kdWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjdHMucHVzaChyZXF1aXJlZFByb2R1Y3QpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9kdWN0TmFtZSA9IHByb2R1Y3RzWzBdPy5uYW1lO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFRvc0RldGFpbHMocHJvZHVjdHNbMF0ucHJvZHVjdF9wcml2YWN5X3NlcnZpY2VfaWQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFRvc0RldGFpbHMoaWQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLmFkbWluU2VydmljZVxuICAgICAgICAgICAgLmdldFRvc0RldGFpbHMoaWQpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGEgPSByZXNwb25zZTtcbiAgICAgICAgICAgICAgICBsZXQgcHJpdmFjeURhdGE7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlPy5wcml2YWN5KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlciA9IG5ldyBET01QYXJzZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZG9jID0gcGFyc2VyLnBhcnNlRnJvbVN0cmluZyhyZXNwb25zZT8ucHJpdmFjeSwgJ3RleHQvaHRtbCcpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBhbGwgYnV0dG9uIGVsZW1lbnRzXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJ1dHRvbnMgPSBkb2MucXVlcnlTZWxlY3RvckFsbCgnYnV0dG9uJyk7XG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnMuZm9yRWFjaChidXR0b24gPT4gYnV0dG9uLnJlbW92ZSgpKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBSZXR1cm4gc2FuaXRpemVkIEhUTUxcbiAgICAgICAgICAgICAgICAgICAgcHJpdmFjeURhdGEgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChkb2MuYm9keS5pbm5lckhUTUwpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuZGF0YSA9IHsgLi4ucmVzcG9uc2UsIHByaXZhY3k6IHByaXZhY3lEYXRhIH07XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmFkZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiaXNQdWJsaWNcIj5cbiAgPHB3LWhlYWRlciBbbGFuZGluZ109XCJmYWxzZVwiPjwvcHctaGVhZGVyPlxuPC9uZy1jb250YWluZXI+XG5cbjxkaXYgY2xhc3M9XCJjb2wtMTIgZC1mbGV4XCJcbiAgKm5nSWY9XCIhaXNQdWJsaWNcIj5cbiAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiXG4gICAgKGNsaWNrKT1cImJhY2soKVwiXG4gICAgY2xhc3M9XCJwcmV2aW91c1wiPjxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctYWx0LWNpcmNsZS1sZWZ0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPjwvYT5cbiAgPGgzIGNsYXNzPVwibXQtM1wiPnt7IHByb2R1Y3ROYW1lIH19PC9oMz5cbjwvZGl2PlxuXG5cblxuXG48ZGl2IFtuZ0NsYXNzXT1cInsgJ2NvbnRhaW5lciBwdy10YWIgb3ZlcmZsb3ctaGlkZGVuJzogaXNQdWJsaWMgfVwiID5cbiAgPGRpdiBbbmdDbGFzc109XCJ7IGRhc2hib2FyZDogaXNQdWJsaWMgfVwiPlxuICAgIDxkaXYgW25nQ2xhc3NdPVwieyAnZGFzaGJvYXJkLWJvZHknOiBpc1B1YmxpYyB9XCI+XG4gICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgJ210LTUnOiBpc1B1YmxpYyB9XCI+XG4gICAgICAgIDxoMyAqbmdJZj1cImlzUHVibGljXCI+e3sgcHJvZHVjdCB9fTwvaDM+XG4gICAgICAgIDxkaXY+XG5cbiAgICAgICAgICA8dWwgbmdiTmF2XG4gICAgICAgICAgICAjbmF2PVwibmdiTmF2XCJcbiAgICAgICAgICAgIFsoYWN0aXZlSWQpXT1cInRhYklkXCJcbiAgICAgICAgICAgIGNsYXNzPVwibmF2LXRhYnNcIj5cbiAgICAgICAgICAgIDxsaSBbbmdiTmF2SXRlbV09XCIncHJpdmFjeS1wb2xpY3knXCI+XG4gICAgICAgICAgICAgIDxhIG5nYk5hdkxpbms+UHJpdmFjeSBwb2xpY3k8L2E+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JOYXZDb250ZW50PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWQgcHctdGFiIG92ZXJmbG93LWhpZGRlblwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhc2hib2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGFzaGJvYXJkLWJvZHkgcHQtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgdGVybXMtb2Ytc2VydmljZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aDM+UHJpdmFjeSBwb2xpY3k8L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2xlYXJmaXhcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgW2lubmVySFRNTF09XCJkYXRhPy5wcml2YWN5XCI+PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpIFtuZ2JOYXZJdGVtXT1cIid0ZXJtcy1vZi1zZXJ2aWNlJ1wiPlxuICAgICAgICAgICAgICA8YSBuZ2JOYXZMaW5rPlRlcm1zIG9mIFNlcnZpY2VzPC9hPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiTmF2Q29udGVudD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkIHB3LXRhYiBvdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXNoYm9hcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhc2hib2FyZC1ib2R5IHB0LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHRlcm1zLW9mLXNlcnZpY2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzPlRlcm1zIG9mIFNlcnZpY2VzPC9oMz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNsZWFyZml4XCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIFtpbm5lckhUTUxdPVwiZGF0YT8udG9zXCI+PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgdGV4dC1jZW50ZXIgcC0yIG10LTVcIiAqbmdJZj1cIiFpc0xvYWRlZFwiPlxuICAgICAgICAgIDxwLXByb2dyZXNzU3Bpbm5lciBzdHJva2VXaWR0aD1cIjJcIj48L3AtcHJvZ3Jlc3NTcGlubmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBbbmdiTmF2T3V0bGV0XT1cIm5hdlwiICpuZ0lmPVwiaXNMb2FkZWRcIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmFjeS1hbmQtdG9zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9wcml2YWN5LWFuZC10b3MvcHJpdmFjeS1hbmQtdG9zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9wcml2YWN5LWFuZC10b3MvcHJpdmFjeS1hbmQtdG9zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7O0FBT3pELE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxnQkFBZ0I7SUFzQnhELFlBQ1ksWUFBMEIsRUFDbEMsUUFBa0IsRUFDUSxRQUFrQixFQUNwQyxTQUF1QjtRQUUvQixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFMUixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUVSLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDcEMsY0FBUyxHQUFULFNBQVMsQ0FBYztRQVhuQyxVQUFLLEdBQUcsZ0JBQWdCLENBQUM7SUFjekIsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDO1FBQ2pELElB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QUMsR0FBRyxFQUFFO1lBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDOytHQWpIUSxzQkFBc0Isc0VBeUJuQixRQUFRO21HQXpCWCxzQkFBc0IscUhDZG5DLHMrRkFnRkE7OzRGRGxFYSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0ksb0JBQW9COzswQkE2QnpCLE1BQU07MkJBQUMsUUFBUTtvRUF4QlgsU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBZG1pblNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvYWRtaW4tbW9kdWxlLXV0aWxzJztcbmltcG9ydCB7IEFwcEJhc2VDb21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWJhc2UtY29tcG9uZW50JztcbmltcG9ydCB7IFVzZXIgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tc2VydmljZXMnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctcHJpdmFjeS1hbmQtdG9zJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHJpdmFjeS1hbmQtdG9zLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9wcml2YWN5LWFuZC10b3MuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQcml2YWN5QW5kVG9zQ29tcG9uZW50IGV4dGVuZHMgQXBwQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgcHJvZHVjdElkOiBudW1iZXI7XG5cbiAgICBpc1B1YmxpYzogYm9vbGVhbjtcblxuICAgIGlkOiBzdHJpbmc7XG5cbiAgICBkYXRhOiB7IHByaXZhY3k6ICcnIH07XG5cbiAgICB1c2VyOiBVc2VyO1xuXG4gICAgc3Vic2NyaWJlZFN1YnNjcmlwdGlvbnM6IHsgcHJvZHVjdHM6IHsgaWQ6IG51bWJlciB9W10gfVtdO1xuXG4gICAgcHJvZHVjdDogc3RyaW5nO1xuXG4gICAgdGFiSWQgPSAncHJpdmFjeS1wb2xpY3knO1xuXG4gICAgcHJvZHVjdE5hbWU6IHN0cmluZztcblxuICAgIHByaXZhdGUgcHJpdmFjeUFuZFRvczogbnVtYmVyO1xuICAgIGlzTG9hZGVkOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgYWRtaW5TZXJ2aWNlOiBBZG1pblNlcnZpY2UsXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQsXG4gICAgICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXJcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnByaXZhY3lBbmRUb3MgPSB0aGlzLmFwcENvbmZpZz8ubWFpbl90b3NfaWQ7XG4gICAgICAgIHRoaXMucHJvZHVjdCA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQoJ3Byb2R1Y3QnKTtcbiAgICAgICAgdGhpcy5pc0xvYWRlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlkID0gZGF0YVsnSWQnXTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaWQgPSB0aGlzLmlkID09PSAnZGV0YWlscycgPyB0aGlzLnByaXZhY3lBbmRUb3MgOiB0aGlzLmlkO1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0VG9zRGV0YWlscyhOdW1iZXIoaWQpKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzUHVibGljID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5wcm9kdWN0SWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldFN1YnNjcmliZWRQcm9kdWN0KHRoaXMucHJvZHVjdElkKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKGlkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJJZCA9IGlkWydkYXRhJ10gfHwgJ3ByaXZhY3ktcG9saWN5JztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRTdWJzY3JpYmVkUHJvZHVjdCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFN1YnNjcmliZWRQcm9kdWN0KGlkPykge1xuICAgICAgICB0aGlzLnVzZXJTdG9yZSgpLnN1YnNjcmliZSh1c2VyID0+IHtcbiAgICAgICAgICAgIHRoaXMudXNlciA9IHVzZXI7XG4gICAgICAgICAgICBpZiAodXNlcikge1xuICAgICAgICAgICAgICAgIHRoaXMudXNlclNlcnZpY2UuZ2V0VXNlclN1YnNjcmlwdGlvbnModXNlci5pZCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVkU3Vic2NyaXB0aW9ucyA9IHJlc3BvbnNlLnN1YnNjcmlwdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb2R1Y3RJZCA9IGlkIHx8IFBlcm1pc3Npb25TZXJ2aWNlLnNlbGVjdGVkUHJvZHVjdC5pZDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvZHVjdHMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVkU3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YnNjcmliZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXF1aXJlZFByb2R1Y3QgPSBzdWJzY3JpYmU/LnByb2R1Y3RzLmZpbmQoeCA9PiB4Py5pZCA9PT0gcHJvZHVjdElkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlZFByb2R1Y3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0cy5wdXNoKHJlcXVpcmVkUHJvZHVjdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3ROYW1lID0gcHJvZHVjdHNbMF0/Lm5hbWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0VG9zRGV0YWlscyhwcm9kdWN0c1swXS5wcm9kdWN0X3ByaXZhY3lfc2VydmljZV9pZCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VG9zRGV0YWlscyhpZDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuYWRtaW5TZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0VG9zRGV0YWlscyhpZClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlciA9IG5ldyBET01QYXJzZXIoKTtcblxuICAgICAgICAgICAgICAgIGxldCBwcml2YWN5RGF0YTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2U/LnByaXZhY3kpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJpdmFjeURvYyA9IHBhcnNlci5wYXJzZUZyb21TdHJpbmcocmVzcG9uc2U/LnByaXZhY3ksICd0ZXh0L2h0bWwnKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgYWxsIGJ1dHRvbiBlbGVtZW50cyBpbiBwcml2YWN5XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByaXZhY3lCdXR0b25zID0gcHJpdmFjeURvYy5xdWVyeVNlbGVjdG9yQWxsKCdidXR0b24nKTtcbiAgICAgICAgICAgICAgICAgICAgcHJpdmFjeUJ1dHRvbnMuZm9yRWFjaChidXR0b24gPT4gYnV0dG9uLnJlbW92ZSgpKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBTYW5pdGl6ZSBhbmQgc3RvcmUgcHJpdmFjeSBIVE1MXG4gICAgICAgICAgICAgICAgICAgIHByaXZhY3lEYXRhID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwocHJpdmFjeURvYy5ib2R5LmlubmVySFRNTCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGV0IHRvc0RhdGE7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlPy50b3MpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG9zRG9jID0gcGFyc2VyLnBhcnNlRnJvbVN0cmluZyhyZXNwb25zZT8udG9zLCAndGV4dC9odG1sJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIGFsbCBidXR0b24gZWxlbWVudHMgaW4gdG9zXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRvc0J1dHRvbnMgPSB0b3NEb2MucXVlcnlTZWxlY3RvckFsbCgnYnV0dG9uJyk7XG4gICAgICAgICAgICAgICAgICAgIHRvc0J1dHRvbnMuZm9yRWFjaChidXR0b24gPT4gYnV0dG9uLnJlbW92ZSgpKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBTYW5pdGl6ZSBhbmQgc3RvcmUgdG9zIEhUTUxcbiAgICAgICAgICAgICAgICAgICAgdG9zRGF0YSA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHRvc0RvYy5ib2R5LmlubmVySFRNTCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gQXNzaWduIHNhbml0aXplZCBkYXRhIGJhY2tcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGEgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnJlc3BvbnNlLFxuICAgICAgICAgICAgICAgICAgICBwcml2YWN5OiBwcml2YWN5RGF0YSxcbiAgICAgICAgICAgICAgICAgICAgdG9zOiB0b3NEYXRhXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYWRkKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJpc1B1YmxpY1wiPlxuICA8cHctaGVhZGVyIFtsYW5kaW5nXT1cImZhbHNlXCI+PC9wdy1oZWFkZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPGRpdiBjbGFzcz1cImNvbC0xMiBkLWZsZXhcIlxuICAqbmdJZj1cIiFpc1B1YmxpY1wiPlxuICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCJcbiAgICAoY2xpY2spPVwiYmFjaygpXCJcbiAgICBjbGFzcz1cInByZXZpb3VzXCI+PGkgY2xhc3M9XCJmYSBmYS1hcnJvdy1hbHQtY2lyY2xlLWxlZnRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+PC9hPlxuICA8aDMgY2xhc3M9XCJtdC0zXCI+e3sgcHJvZHVjdE5hbWUgfX08L2gzPlxuPC9kaXY+XG5cblxuXG5cbjxkaXYgW25nQ2xhc3NdPVwieyAnY29udGFpbmVyIHB3LXRhYiBvdmVyZmxvdy1oaWRkZW4nOiBpc1B1YmxpYyB9XCIgPlxuICA8ZGl2IFtuZ0NsYXNzXT1cInsgZGFzaGJvYXJkOiBpc1B1YmxpYyB9XCI+XG4gICAgPGRpdiBbbmdDbGFzc109XCJ7ICdkYXNoYm9hcmQtYm9keSc6IGlzUHVibGljIH1cIj5cbiAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyAnbXQtNSc6IGlzUHVibGljIH1cIj5cbiAgICAgICAgPGgzICpuZ0lmPVwiaXNQdWJsaWNcIj57eyBwcm9kdWN0IH19PC9oMz5cbiAgICAgICAgPGRpdj5cblxuICAgICAgICAgIDx1bCBuZ2JOYXZcbiAgICAgICAgICAgICNuYXY9XCJuZ2JOYXZcIlxuICAgICAgICAgICAgWyhhY3RpdmVJZCldPVwidGFiSWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJuYXYtdGFic1wiPlxuICAgICAgICAgICAgPGxpIFtuZ2JOYXZJdGVtXT1cIidwcml2YWN5LXBvbGljeSdcIj5cbiAgICAgICAgICAgICAgPGEgbmdiTmF2TGluaz5Qcml2YWN5IHBvbGljeTwvYT5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZCBwdy10YWIgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGFzaGJvYXJkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXNoYm9hcmQtYm9keSBwdC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiB0ZXJtcy1vZi1zZXJ2aWNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxoMz5Qcml2YWN5IHBvbGljeTwvaDM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbGVhcmZpeFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicWwtY29udGFpbmVyIHFsLXNub3cgYm9keS1xdWlsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxbC1lZGl0b3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiZGF0YT8ucHJpdmFjeVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDxsaSBbbmdiTmF2SXRlbV09XCIndGVybXMtb2Ytc2VydmljZSdcIj5cbiAgICAgICAgICAgICAgPGEgbmdiTmF2TGluaz5UZXJtcyBvZiBTZXJ2aWNlczwvYT5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZCBwdy10YWIgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGFzaGJvYXJkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXNoYm9hcmQtYm9keSBwdC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiB0ZXJtcy1vZi1zZXJ2aWNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxoMz5UZXJtcyBvZiBTZXJ2aWNlczwvaDM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbGVhcmZpeFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicWwtY29udGFpbmVyIHFsLXNub3cgYm9keS1xdWlsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxbC1lZGl0b3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiZGF0YT8udG9zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgdGV4dC1jZW50ZXIgcC0yIG10LTVcIiAqbmdJZj1cIiFpc0xvYWRlZFwiPlxuICAgICAgICAgIDxwLXByb2dyZXNzU3Bpbm5lciBzdHJva2VXaWR0aD1cIjJcIj48L3AtcHJvZ3Jlc3NTcGlubmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBbbmdiTmF2T3V0bGV0XT1cIm5hdlwiICpuZ0lmPVwiaXNMb2FkZWRcIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|