@posiwise/admin-module 0.0.169 → 0.0.170

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.
Files changed (31) hide show
  1. package/esm2022/lib/components/domain-config/domain-config-details/base-domain-config.component.mjs +88 -0
  2. package/esm2022/lib/components/domain-config/domain-config-details/domain-config-organization/domain-config-organization.component.mjs +9 -82
  3. package/esm2022/lib/components/domain-config/domain-config-details/domain-config-security/domain-config-security.component.mjs +9 -70
  4. package/esm2022/lib/components/domain-config/domain-config-details/domain-config-social/domain-config-social.component.mjs +9 -70
  5. package/esm2022/lib/components/mailer/mailer-list/mailer-list.component.mjs +23 -20
  6. package/esm2022/lib/components/newsletters/newsletter-item-details/newsletter-item-details.component.mjs +8 -7
  7. package/esm2022/lib/components/newsletters/newsletters-items/newsletters-items.component.mjs +23 -21
  8. package/esm2022/lib/components/newsletters/newsletters-list/newsletters-list.component.mjs +21 -19
  9. package/esm2022/lib/components/products/products-list/products-list.component.mjs +8 -7
  10. package/esm2022/lib/components/subscriptions/subscriptions-insight/base-subscription-insight.component.mjs +47 -0
  11. package/esm2022/lib/components/subscriptions/subscriptions-insight/subscription-insight-average-price/subscription-insight-average-price.component.mjs +9 -39
  12. package/esm2022/lib/components/subscriptions/subscriptions-insight/subscription-insight-average-user/subscription-insight-average-user.component.mjs +9 -39
  13. package/esm2022/lib/components/subscriptions/subscriptions-insight/subscription-insight-product-session/subscription-insight-product-session.component.mjs +9 -39
  14. package/esm2022/lib/components/subscriptions/subscriptions-insight/subscription-insight-user-session/subscription-insight-user-session.component.mjs +9 -38
  15. package/fesm2022/posiwise-admin-module.mjs +147 -313
  16. package/fesm2022/posiwise-admin-module.mjs.map +1 -1
  17. package/lib/components/domain-config/domain-config-details/base-domain-config.component.d.ts +66 -0
  18. package/lib/components/domain-config/domain-config-details/domain-config-organization/domain-config-organization.component.d.ts +6 -58
  19. package/lib/components/domain-config/domain-config-details/domain-config-security/domain-config-security.component.d.ts +6 -57
  20. package/lib/components/domain-config/domain-config-details/domain-config-social/domain-config-social.component.d.ts +6 -57
  21. package/lib/components/mailer/mailer-list/mailer-list.component.d.ts +3 -1
  22. package/lib/components/newsletters/newsletter-item-details/newsletter-item-details.component.d.ts +3 -2
  23. package/lib/components/newsletters/newsletters-items/newsletters-items.component.d.ts +3 -1
  24. package/lib/components/newsletters/newsletters-list/newsletters-list.component.d.ts +3 -1
  25. package/lib/components/products/products-list/products-list.component.d.ts +3 -2
  26. package/lib/components/subscriptions/subscriptions-insight/base-subscription-insight.component.d.ts +32 -0
  27. package/lib/components/subscriptions/subscriptions-insight/subscription-insight-average-price/subscription-insight-average-price.component.d.ts +5 -29
  28. package/lib/components/subscriptions/subscriptions-insight/subscription-insight-average-user/subscription-insight-average-user.component.d.ts +5 -29
  29. package/lib/components/subscriptions/subscriptions-insight/subscription-insight-product-session/subscription-insight-product-session.component.d.ts +5 -29
  30. package/lib/components/subscriptions/subscriptions-insight/subscription-insight-user-session/subscription-insight-user-session.component.d.ts +5 -28
  31. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  import { ChangeDetectorRef, Component, Injector, ViewChild } from '@angular/core';
2
2
  import { AppBaseComponent } from '@posiwise/app-base-component';
3
- import { PermissionService, ProductService } from '@posiwise/common-services';
4
- import { PAGE_SIZE, TOKEN_KEY } from '@posiwise/common-utilities';
3
+ import { AuthService, PermissionService, ProductService } from '@posiwise/common-services';
4
+ import { PAGE_SIZE } from '@posiwise/common-utilities';
5
5
  import { HelperService } from '@posiwise/helper-service';
6
6
  import { PasswordValidationComponent } from '@posiwise/shared-components';
7
7
  import uniqBy from 'lodash/uniqBy';
@@ -22,9 +22,10 @@ import * as i11 from "primeng/progressspinner";
22
22
  import * as i12 from "@posiwise/directives";
23
23
  import * as i13 from "@jsverse/transloco";
24
24
  export class ProductsListComponent extends AppBaseComponent {
25
- constructor(productService, injector, cdr) {
25
+ constructor(productService, authService, injector, cdr) {
26
26
  super(injector);
27
27
  this.productService = productService;
28
+ this.authService = authService;
28
29
  this.cdr = cdr;
29
30
  this.loading = true;
30
31
  this.searchText = '';
@@ -42,7 +43,7 @@ export class ProductsListComponent extends AppBaseComponent {
42
43
  ngOnInit() {
43
44
  this.getCategories();
44
45
  this.getCurrencyAndRegions();
45
- this.localStorage.getItem$(TOKEN_KEY).subscribe(res => {
46
+ this.authService.getToken$().subscribe(res => {
46
47
  this.userLoggedIn = !!res;
47
48
  if (this.userLoggedIn) {
48
49
  this.subscriptionId = PermissionService.selectedSubscription?.id;
@@ -130,14 +131,14 @@ export class ProductsListComponent extends AppBaseComponent {
130
131
  ngOnDestroy() {
131
132
  super.ngOnDestroy();
132
133
  }
133
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ProductsListComponent, deps: [{ token: i1.ProductService }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
134
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ProductsListComponent, deps: [{ token: i1.ProductService }, { token: i1.AuthService }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
134
135
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ProductsListComponent, selector: "pw-admin-products-list", viewQueries: [{ propertyName: "passwordValidationModalForProductDelete", first: true, predicate: ["passwordValidationModalForProductDelete"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"col-xs-12 text-end d-flex justify-content-between align-items-center\">\n <h2 class=\"card-title p-0 float-start\">Products</h2>\n <button *rbacAllow=\"'Pages.Admin.Product.Create'\"\n class=\"btn btn-sm btn-outline-primary\"\n [routerLink]=\"[routers.productDetails + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Setup a New Product\n </button>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"loading\">\n <p-progressSpinner> </p-progressSpinner>\n</div>\n<div class=\"primeng-datatable-container table-responsive mt-0\"\n [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <p-table #dt\n [value]=\"products\"\n [paginator]=\"totalRecords !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\">\n <ng-template pTemplate=\"caption\">\n <div class=\"search-filter\">\n <div class=\"col-12 col-sm-4\">\n <p-multiSelect placeholder=\"Select Feature Keys\"\n [options]=\"featureKeysList\"\n (onChange)=\"onSearchOptionChange($event)\"\n [showHeader]=\"true\"\n appendTo=\"body\">\n </p-multiSelect>\n </div>\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search Product...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"mw-90\" />\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr class=\"head\">\n <th scope=\"true\"\n pSortableColumn=\"name\">\n {{ 'Label.Name' | transloco }}\n <p-sortIcon field=\"name\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"stripe_plan_id\">\n {{ 'Admin.Products.StripePlan' | transloco }}\n <p-sortIcon field=\"stripe_plan_id\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"permission_key\">\n {{ 'Admin.Products.PermissionKey' | transloco }}\n <p-sortIcon field=\"permission_key\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"feature_key\">\n {{ 'Admin.Products.FeatureKey' | transloco }}\n <p-sortIcon field=\"feature_key\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"product_key\">\n {{ 'Admin.Products.ProductKey' | transloco }}\n <p-sortIcon field=\"product_key\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"category\">\n {{ 'Admin.Products.Category' | transloco }}\n <p-sortIcon field=\"category\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"region\">\n {{ 'Admin.Products.Region' | transloco }}\n <p-sortIcon field=\"region\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"currency\">\n {{ 'Admin.Products.Currency' | transloco }}\n <p-sortIcon field=\"currency\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"price_per_unit\">\n {{ 'Admin.Products.Price' | transloco }}\n <p-sortIcon field=\"price_per_unit\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"active\">\n {{ 'Label.IsActive' | transloco }}\n <p-sortIcon field=\"active\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"billing_frequency\">\n {{ 'Admin.Products.Billing' | transloco }}\n <p-sortIcon field=\"billing_frequency\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n class=\"actions-list-two\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-item>\n <tr>\n <td data-head=\"Name\">{{ item.name }}</td>\n <td data-head=\"Stripe Plan\">{{ item.stripe_plan_id }}</td>\n <td data-head=\"Permission Key\">{{ item.permission_key }}</td>\n <td data-head=\"Feature Key\">{{ item.feature_key }}</td>\n <td data-head=\"Product Key\">{{ item.product_key }}</td>\n <td data-head=\"Category\">\n <span [appDynamicBadge]=\"{ itemsArray: categories, item: item.category }\"\n color=\"warning\"\n class=\"badge\">{{ item.category }}</span>\n </td>\n <td data-head=\"Region\">\n <span [appDynamicBadge]=\"{ itemsArray: regions, item: item.region }\"\n color=\"cyan\"\n class=\"badge\">{{ item.region }}</span>\n </td>\n <td data-head=\"Currency\">\n <span [appDynamicBadge]=\"{ itemsArray: currency, item: item.currency }\"\n color=\"blue-grey\"\n class=\"badge\">{{ item.currency }}</span>\n </td>\n <td data-head=\"Price\">{{ item.price_per_unit }}</td>\n <td data-head=\"Active\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: item?.active }\"\n color=\"success-danger\"\n class=\"badge\">{{ item?.active ? 'Yes' : 'No' }}</span>\n </td>\n <td data-head=\"Billing\">\n <span class=\"badge\"\n [appDynamicBadge]=\"{\n itemsArray: billingFrequency,\n item: item?.billing_frequency\n }\"\n color=\"blue-grey\">{{ item.billing_frequency }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline width-max-content\">\n <li ngbTooltip=\"Edit\"\n class=\"me-2 me-sm-3\"\n *rbacAllow=\"'Pages.Admin.Product.Edit'\"\n [routerLink]=\"[routers.productDetails + item.id]\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-3\"\n *rbacAllow=\"'Pages.Admin.Product.Delete'\"\n (keydown.enter)=\"onDelete(item)\"\n (click)=\"onDelete(item)\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"Users List\"\n class=\"me-2 me-sm-3\"\n *rbacAllow=\"'Pages.Admin.Product.Edit'\"\n [routerLink]=\"[routers.productsUserList + item.id]\">\n <i class=\"fa fa-tasks cta1-icon\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"Duplicate The Product\"\n class=\"me-sm-3\"\n [routerLink]=\"[routers.productDetails + 'add']\"\n [queryParams]=\"{ duplicate_product_id: item.id }\">\n <i class=\"fa fa-clone edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"Feedback Questions\"\n container=\"body\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"[routers.feedbackQuestions]\"\n [queryParams]=\"{ product_id: item.id }\">\n <i class=\"fa fa-comments edit-icon\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <div *ngIf=\"totalRecords === 0 && totalRecordsUnFiltered !== 0\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n <span class=\"total-records-count\"*ngIf=\"totalRecords !== 0\" >Total: {{ totalRecords }}</span>\n</div>\n<div *ngIf=\"!loading && totalRecordsUnFiltered === 0\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Admin.Products.NoDataMessage' | transloco\"> </pw-no-data>\n</div>\n<!-- password validation modal for delete product -->\n<pw-password-validation #passwordValidationModalForProductDelete\n (successEvent)=\"deleteProduct($event)\">\n <div class=\"row\">\n <div class=\"col-12\">\n <p>{{ 'User.Account.Message.ActionCanNotUndone' | transloco }}</p>\n <p>{{ 'User.Account.Message.ConfirmPassword' | transloco }}</p>\n </div>\n </div>\n</pw-password-validation>\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_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}@media (min-width: 767px){.table-responsive td,.table-responsive th{font-size:11px!important}}.width-max-content{width:max-content}\n"], dependencies: [{ kind: "component", type: i2.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: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i2.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i2.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i4.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "directive", type: i5.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "directive", type: i6.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i9.PasswordValidationComponent, selector: "pw-password-validation", inputs: ["confirmMessage"], outputs: ["successEvent"] }, { kind: "directive", type: i10.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i11.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i9.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "directive", type: i12.DynamicBadgeDirective, selector: "[appDynamicBadge]", inputs: ["appDynamicBadge", "color", "colorByName", "dataName"] }, { kind: "directive", type: i12.RbacAllowDirective, selector: "[rbacAllow]", inputs: ["rbacAllow"] }, { kind: "pipe", type: i13.TranslocoPipe, name: "transloco" }] }); }
135
136
  }
136
137
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ProductsListComponent, decorators: [{
137
138
  type: Component,
138
139
  args: [{ selector: 'pw-admin-products-list', template: "<div class=\"col-xs-12 text-end d-flex justify-content-between align-items-center\">\n <h2 class=\"card-title p-0 float-start\">Products</h2>\n <button *rbacAllow=\"'Pages.Admin.Product.Create'\"\n class=\"btn btn-sm btn-outline-primary\"\n [routerLink]=\"[routers.productDetails + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Setup a New Product\n </button>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"loading\">\n <p-progressSpinner> </p-progressSpinner>\n</div>\n<div class=\"primeng-datatable-container table-responsive mt-0\"\n [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <p-table #dt\n [value]=\"products\"\n [paginator]=\"totalRecords !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\">\n <ng-template pTemplate=\"caption\">\n <div class=\"search-filter\">\n <div class=\"col-12 col-sm-4\">\n <p-multiSelect placeholder=\"Select Feature Keys\"\n [options]=\"featureKeysList\"\n (onChange)=\"onSearchOptionChange($event)\"\n [showHeader]=\"true\"\n appendTo=\"body\">\n </p-multiSelect>\n </div>\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search Product...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"mw-90\" />\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr class=\"head\">\n <th scope=\"true\"\n pSortableColumn=\"name\">\n {{ 'Label.Name' | transloco }}\n <p-sortIcon field=\"name\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"stripe_plan_id\">\n {{ 'Admin.Products.StripePlan' | transloco }}\n <p-sortIcon field=\"stripe_plan_id\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"permission_key\">\n {{ 'Admin.Products.PermissionKey' | transloco }}\n <p-sortIcon field=\"permission_key\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"feature_key\">\n {{ 'Admin.Products.FeatureKey' | transloco }}\n <p-sortIcon field=\"feature_key\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"product_key\">\n {{ 'Admin.Products.ProductKey' | transloco }}\n <p-sortIcon field=\"product_key\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"category\">\n {{ 'Admin.Products.Category' | transloco }}\n <p-sortIcon field=\"category\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"region\">\n {{ 'Admin.Products.Region' | transloco }}\n <p-sortIcon field=\"region\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"currency\">\n {{ 'Admin.Products.Currency' | transloco }}\n <p-sortIcon field=\"currency\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"price_per_unit\">\n {{ 'Admin.Products.Price' | transloco }}\n <p-sortIcon field=\"price_per_unit\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"active\">\n {{ 'Label.IsActive' | transloco }}\n <p-sortIcon field=\"active\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"billing_frequency\">\n {{ 'Admin.Products.Billing' | transloco }}\n <p-sortIcon field=\"billing_frequency\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n class=\"actions-list-two\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-item>\n <tr>\n <td data-head=\"Name\">{{ item.name }}</td>\n <td data-head=\"Stripe Plan\">{{ item.stripe_plan_id }}</td>\n <td data-head=\"Permission Key\">{{ item.permission_key }}</td>\n <td data-head=\"Feature Key\">{{ item.feature_key }}</td>\n <td data-head=\"Product Key\">{{ item.product_key }}</td>\n <td data-head=\"Category\">\n <span [appDynamicBadge]=\"{ itemsArray: categories, item: item.category }\"\n color=\"warning\"\n class=\"badge\">{{ item.category }}</span>\n </td>\n <td data-head=\"Region\">\n <span [appDynamicBadge]=\"{ itemsArray: regions, item: item.region }\"\n color=\"cyan\"\n class=\"badge\">{{ item.region }}</span>\n </td>\n <td data-head=\"Currency\">\n <span [appDynamicBadge]=\"{ itemsArray: currency, item: item.currency }\"\n color=\"blue-grey\"\n class=\"badge\">{{ item.currency }}</span>\n </td>\n <td data-head=\"Price\">{{ item.price_per_unit }}</td>\n <td data-head=\"Active\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: item?.active }\"\n color=\"success-danger\"\n class=\"badge\">{{ item?.active ? 'Yes' : 'No' }}</span>\n </td>\n <td data-head=\"Billing\">\n <span class=\"badge\"\n [appDynamicBadge]=\"{\n itemsArray: billingFrequency,\n item: item?.billing_frequency\n }\"\n color=\"blue-grey\">{{ item.billing_frequency }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline width-max-content\">\n <li ngbTooltip=\"Edit\"\n class=\"me-2 me-sm-3\"\n *rbacAllow=\"'Pages.Admin.Product.Edit'\"\n [routerLink]=\"[routers.productDetails + item.id]\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-3\"\n *rbacAllow=\"'Pages.Admin.Product.Delete'\"\n (keydown.enter)=\"onDelete(item)\"\n (click)=\"onDelete(item)\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"Users List\"\n class=\"me-2 me-sm-3\"\n *rbacAllow=\"'Pages.Admin.Product.Edit'\"\n [routerLink]=\"[routers.productsUserList + item.id]\">\n <i class=\"fa fa-tasks cta1-icon\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"Duplicate The Product\"\n class=\"me-sm-3\"\n [routerLink]=\"[routers.productDetails + 'add']\"\n [queryParams]=\"{ duplicate_product_id: item.id }\">\n <i class=\"fa fa-clone edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"Feedback Questions\"\n container=\"body\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"[routers.feedbackQuestions]\"\n [queryParams]=\"{ product_id: item.id }\">\n <i class=\"fa fa-comments edit-icon\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <div *ngIf=\"totalRecords === 0 && totalRecordsUnFiltered !== 0\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n <span class=\"total-records-count\"*ngIf=\"totalRecords !== 0\" >Total: {{ totalRecords }}</span>\n</div>\n<div *ngIf=\"!loading && totalRecordsUnFiltered === 0\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Admin.Products.NoDataMessage' | transloco\"> </pw-no-data>\n</div>\n<!-- password validation modal for delete product -->\n<pw-password-validation #passwordValidationModalForProductDelete\n (successEvent)=\"deleteProduct($event)\">\n <div class=\"row\">\n <div class=\"col-12\">\n <p>{{ 'User.Account.Message.ActionCanNotUndone' | transloco }}</p>\n <p>{{ 'User.Account.Message.ConfirmPassword' | transloco }}</p>\n </div>\n </div>\n</pw-password-validation>\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_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}@media (min-width: 767px){.table-responsive td,.table-responsive th{font-size:11px!important}}.width-max-content{width:max-content}\n"] }]
139
- }], ctorParameters: () => [{ type: i1.ProductService }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }], propDecorators: { passwordValidationModalForProductDelete: [{
140
+ }], ctorParameters: () => [{ type: i1.ProductService }, { type: i1.AuthService }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }], propDecorators: { passwordValidationModalForProductDelete: [{
140
141
  type: ViewChild,
141
142
  args: ['passwordValidationModalForProductDelete', { static: false }]
142
143
  }] } });
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdHMtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FkbWluLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJvZHVjdHMvcHJvZHVjdHMtbGlzdC9wcm9kdWN0cy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcm9kdWN0cy9wcm9kdWN0cy1saXN0L3Byb2R1Y3RzLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsUUFBUSxFQUdSLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUUsT0FBTyxFQUFFLFNBQVMsRUFBbUIsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTFFLE9BQU8sTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUVuQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBTzFELE1BQU0sT0FBTyxxQkFDVCxTQUFRLGdCQUFnQjtJQStCeEIsWUFDcUIsY0FBOEIsRUFDL0MsUUFBa0IsRUFDRCxHQUFzQjtRQUV2QyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFKQyxtQkFBYyxHQUFkLGNBQWMs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QixJQUFJLENBQUMsY0FBYzthQUNkLGFBQWEsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDO2FBQzVELFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pGLENBQUMsQ0FBQzthQUNELEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDTixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFTyxhQUFhO1FBQ2pCLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDNUQsSUFBSSxRQUFRLEVBQUUsVUFBVSxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsUUFBUSxFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUM7WUFDakQsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVRLFdBQVc7UUFDaEIsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7K0dBN0lRLHFCQUFxQjttR0FBckIscUJBQXFCLHlQQzNCbEMsZzJRQTBNQTs7NEZEL0thLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDSSx3QkFBd0I7MElBU2xDLHVDQUF1QztzQkFEdEMsU0FBUzt1QkFBQyx5Q0FBeUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0NoZWNrZWQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEluamVjdG9yLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHBvc2l3aXNlL2FwcC1iYXNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uU2VydmljZSwgUHJvZHVjdFNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXNlcnZpY2VzJztcbmltcG9ydCB7IFBBR0VfU0laRSwgUGFnaW5nLCBQcm9kdWN0LCBUT0tFTl9LRVkgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2hlbHBlci1zZXJ2aWNlJztcbmltcG9ydCB7IFBhc3N3b3JkVmFsaWRhdGlvbkNvbXBvbmVudCB9IGZyb20gJ0Bwb3Npd2lzZS9zaGFyZWQtY29tcG9uZW50cyc7XG5cbmltcG9ydCB1bmlxQnkgZnJvbSAnbG9kYXNoL3VuaXFCeSc7XG5pbXBvcnQgeyBMYXp5TG9hZEV2ZW50IH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgZm9ya0pvaW4gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgUk9VVEVSUyB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9yb3V0ZXJzL3JvdXRlcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3B3LWFkbWluLXByb2R1Y3RzLWxpc3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wcm9kdWN0cy1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9wcm9kdWN0cy1saXN0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUHJvZHVjdHNMaXN0Q29tcG9uZW50XG4gICAgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3Q2hlY2tlZFxue1xuICAgIEBWaWV3Q2hpbGQoJ3Bhc3N3b3JkVmFsaWRhdGlvbk1vZGFsRm9yUHJvZHVjdERlbGV0ZScsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHBhc3N3b3JkVmFsaWRhdGlvbk1vZGFsRm9yUHJvZHVjdERlbGV0ZTogUGFzc3dvcmRWYWxpZGF0aW9uQ29tcG9uZW50O1xuXG4gICAgcHJpdmF0ZSBwcm9kdWN0VG9EZWxldGU6IFByb2R1Y3Q7XG5cbiAgICBsb2FkaW5nID0gdHJ1ZTtcblxuICAgIHNlYXJjaFRleHQgPSAnJztcblxuICAgIHByb2R1Y3RzID0gW107XG5cbiAgICBwYWdlID0gMTtcbiAgICB0b3RhbFJlY29yZHNVbkZpbHRlcmVkID0gMDtcblxuICAgIGJpbGxpbmdGcmVxdWVuY3kgPSBbJ3dlZWsnLCAnbW9udGgnLCAneWVhciddO1xuICAgIGNhdGVnb3JpZXMgPSBbXTtcblxuICAgIHJvdXRlcnMgPSBST1VURVJTO1xuXG4gICAgdXNlckxvZ2dlZEluOiBib29sZWFuO1xuICAgIHRvdGFsUmVjb3JkczogbnVtYmVyO1xuICAgIHN1YnNjcmlwdGlvbklkOiBudW1iZXI7XG5cbiAgICBjdXJyZW5jeSA9IFtdO1xuICAgIHJlZ2lvbnMgPSBbXTtcbiAgICBmaWx0ZXJCeUZlYXR1cmVLZXlzID0gW107XG4gICAgZmVhdHVyZUtleXNMaXN0ID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBwcm9kdWN0U2VydmljZTogUHJvZHVjdFNlcnZpY2UsXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5nZXRDYXRlZ29yaWVzKCk7XG4gICAgICAgIHRoaXMuZ2V0Q3VycmVuY3lBbmRSZWdpb25zKCk7XG4gICAgICAgIHRoaXMubG9jYWxTdG9yYWdlLmdldEl0ZW0kKFRPS0VOX0tFWSkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICB0aGlzLnVzZXJMb2dnZWRJbiA9ICEhcmVzO1xuICAgICAgICAgICAgaWYgKHRoaXMudXNlckxvZ2dlZEluKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25JZCA9IFBlcm1pc3Npb25TZXJ2aWNlLnNlbGVjdGVkU3Vic2NyaXB0aW9uPy5pZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgb25MYXp5TG9hZChldmVudDogTGF6eUxvYWRFdmVudCkge1xuICAgICAgICBjb25zdCBwYWdlRGV0YWlscyA9IEhlbHBlclNlcnZpY2Uub25UYWJsZUxhenlMb2FkKGV2ZW50KTtcbiAgICAgICAgdGhpcy5wYWdlID0gcGFnZURldGFpbHMucGFnZTtcbiAgICAgICAgdGhpcy5nZXREYXRhKHtcbiAgICAgICAgICAgIHBhZ2U6IHRoaXMucGFnZSxcbiAgICAgICAgICAgIHBhZ2Vfc2l6ZTogUEFHRV9TSVpFLFxuICAgICAgICAgICAgb3JkZXJfYnk6IHBhZ2VEZXRhaWxzLnNvcnRGaWVsZCxcbiAgICAgICAgICAgIG9yZGVyX2RpcmVjdGlvbjogcGFnZURldGFpbHMuc29ydE9yZGVyLFxuICAgICAgICAgICAgc2VhcmNoOiB0aGlzLnNlYXJjaFRleHRcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDdXJyZW5jeUFuZFJlZ2lvbnMoKSB7XG4gICAgICAgIGZvcmtKb2luKHtcbiAgICAgICAgICAgIGN1cnJlbmN5OiB0aGlzLnByb2R1Y3RTZXJ2aWNlLmdldFN1cHBvcnRlZEN1cnJlbmN5KCksXG4gICAgICAgICAgICByZWdpb25zOiB0aGlzLnByb2R1Y3RTZXJ2aWNlLmdldFN1cHBvcnRlZFJlZ2lvbnMoKVxuICAgICAgICB9KS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVuY3kgPSByZXM/LmN1cnJlbmN5Py5yZWdpb25zO1xuICAgICAgICAgICAgdGhpcy5yZWdpb25zID0gcmVzPy5yZWdpb25zPy5yZWdpb25zO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldERhdGEocGFnaW5nOiBQYWdpbmcpIHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5wcm9kdWN0U2VydmljZVxuICAgICAgICAgICAgLmdldFByb2R1Y3RMaXN0KHBhZ2luZywgdGhpcy5zdWJzY3JpcHRpb25JZCwge1xuICAgICAgICAgICAgICAgIGZlYXR1cmVfa2V5czogdGhpcy5maWx0ZXJCeUZlYXR1cmVLZXlzLmpvaW4oKSB8fCAnJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjdHMgPSByZXNwb25zZS5wcm9kdWN0cztcbiAgICAgICAgICAgICAgICB0aGlzLnRvdGFsUmVjb3JkcyA9IHJlc3BvbnNlLm9iamVjdF9jb3VudDtcbiAgICAgICAgICAgICAgICB0aGlzLnRvdGFsUmVjb3Jkc1VuRmlsdGVyZWQgPSByZXNwb25zZS51bmZpbHRlcmVkX2NvdW50O1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmZlYXR1cmVLZXlzTGlzdD8ubGVuZ3RoICYmIHJlc3BvbnNlPy5wcm9kdWN0cz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmVhdHVyZUtleXNMaXN0ID0gcmVzcG9uc2UucHJvZHVjdHMubWFwKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZWxlbWVudC5mZWF0dXJlX2tleSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogZWxlbWVudC5mZWF0dXJlX2tleSA/PyAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmVhdHVyZUtleXNMaXN0ID0gdW5pcUJ5KHRoaXMuZmVhdHVyZUtleXNMaXN0LCAnbGFiZWwnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3RzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQucHJpY2VfcGVyX3VuaXQgPSAoZWxlbWVudC5wcmljZV9wZXJfdW5pdCAvIDEwMCkudG9GaXhlZCgyKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYWRkKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uU2VhcmNoT3B0aW9uQ2hhbmdlKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuZmlsdGVyQnlGZWF0dXJlS2V5cyA9IGV2ZW50LnZhbHVlO1xuICAgICAgICB0aGlzLmdldERhdGEoe1xuICAgICAgICAgICAgcGFnZTogdGhpcy5wYWdlLFxuICAgICAgICAgICAgcGFnZV9zaXplOiBQQUdFX1NJWkVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25EZWxldGUoaXRlbTogUHJvZHVjdCkge1xuICAgICAgICB0aGlzLnByb2R1Y3RUb0RlbGV0ZSA9IGl0ZW07XG4gICAgICAgIHRoaXMucGFzc3dvcmRWYWxpZGF0aW9uTW9kYWxGb3JQcm9kdWN0RGVsZXRlLm9wZW4oKTtcbiAgICB9XG5cbiAgICBkZWxldGVQcm9kdWN0KF9ldmVudCkge1xuICAgICAgICB0aGlzLnByb2R1Y3RTZXJ2aWNlXG4gICAgICAgICAgICAuZGVsZXRlUHJvZHVjdCh0aGlzLnByb2R1Y3RUb0RlbGV0ZT8uaWQsIHRoaXMuc3Vic2NyaXB0aW9uSWQpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3RzID0gdGhpcy5wcm9kdWN0cy5maWx0ZXIoeCA9PiB4LmlkICE9PSB0aGlzLnByb2R1Y3RUb0RlbGV0ZT8uaWQpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5hZGQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjdFRvRGVsZXRlID0gbnVsbDtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q2F0ZWdvcmllcygpIHtcbiAgICAgICAgdGhpcy5wcm9kdWN0U2VydmljZS5nZXRQcm9kdWN0Q2F0ZWdvcmllcygpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2U/LmNhdGVnb3JpZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhdGVnb3JpZXMgPSByZXNwb25zZT8uY2F0ZWdvcmllcyA/PyBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNvbC14cy0xMiB0ZXh0LWVuZCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gIDxoMiBjbGFzcz1cImNhcmQtdGl0bGUgcC0wIGZsb2F0LXN0YXJ0XCI+UHJvZHVjdHM8L2gyPlxuICA8YnV0dG9uICpyYmFjQWxsb3c9XCInUGFnZXMuQWRtaW4uUHJvZHVjdC5DcmVhdGUnXCJcbiAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeVwiXG4gICAgW3JvdXRlckxpbmtdPVwiW3JvdXRlcnMucHJvZHVjdERldGFpbHMgKyAnYWRkJ11cIj5cbiAgICA8aSBjbGFzcz1cImZhIGZhLXBsdXMtY2lyY2xlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiBTZXR1cCBhIE5ldyBQcm9kdWN0XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwidy0xMDAgdGV4dC1jZW50ZXIgbXQtM1wiXG4gICpuZ0lmPVwibG9hZGluZ1wiPlxuICA8cC1wcm9ncmVzc1NwaW5uZXI+IDwvcC1wcm9ncmVzc1NwaW5uZXI+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJwcmltZW5nLWRhdGF0YWJsZS1jb250YWluZXIgdGFibGUtcmVzcG9uc2l2ZSBtdC0wXCJcbiAgW2NsYXNzLmhpZGVUYWJsZV09XCJ0b3RhbFJlY29yZHNVbkZpbHRlcmVkID09PSAwXCI+XG4gIDxwLXRhYmxlICNkdFxuICAgIFt2YWx1ZV09XCJwcm9kdWN0c1wiXG4gICAgW3BhZ2luYXRvcl09XCJ0b3RhbFJlY29yZHMgIT09IDBcIlxuICAgIFtsYXp5XT1cInRydWVcIlxuICAgIFtyb3dzXT1cIlBBR0VfU0laRVwiXG4gICAgW3RvdGFsUmVjb3Jkc109XCJ0b3RhbFJlY29yZHNcIlxuICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxuICAgIFtmaWx0ZXJEZWxheV09XCIxMDAwXCJcbiAgICAob25MYXp5TG9hZCk9XCJvbkxhenlMb2FkKCRldmVudClcIlxuICAgIFtjdXN0b21Tb3J0XT1cInRydWVcIj5cbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY2FwdGlvblwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1maWx0ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tNFwiPlxuICAgICAgICAgIDxwLW11bHRpU2VsZWN0IHBsYWNlaG9sZGVyPVwiU2VsZWN0IEZlYXR1cmUgS2V5c1wiXG4gICAgICAgICAgICBbb3B0aW9uc109XCJmZWF0dXJlS2V5c0xpc3RcIlxuICAgICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uU2VhcmNoT3B0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgW3Nob3dIZWFkZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIj5cbiAgICAgICAgICA8L3AtbXVsdGlTZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1lbmRcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXNlYXJjaCBtdC0yIG1lLTJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dFwiXG4gICAgICAgICAgICBwSW5wdXRUZXh0XG4gICAgICAgICAgICBzaXplPVwiNTBcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggUHJvZHVjdC4uLlwiXG4gICAgICAgICAgICAoaW5wdXQpPVwiZHQuZmlsdGVyR2xvYmFsKCRldmVudC50YXJnZXQudmFsdWUsICdjb250YWlucycpXCJcbiAgICAgICAgICAgIGNsYXNzPVwibXctOTBcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgPHRyIGNsYXNzPVwiaGVhZFwiPlxuICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCJcbiAgICAgICAgICBwU29ydGFibGVDb2x1bW49XCJuYW1lXCI+XG4gICAgICAgICAge3sgJ0xhYmVsLk5hbWUnIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJuYW1lXCI+PC9wLXNvcnRJY29uPlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCJcbiAgICAgICAgICBwU29ydGFibGVDb2x1bW49XCJzdHJpcGVfcGxhbl9pZFwiPlxuICAgICAgICAgIHt7ICdBZG1pbi5Qcm9kdWN0cy5TdHJpcGVQbGFuJyB8IHRyYW5zbG9jbyB9fVxuICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwic3RyaXBlX3BsYW5faWRcIj48L3Atc29ydEljb24+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0aCBzY29wZT1cInRydWVcIlxuICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cInBlcm1pc3Npb25fa2V5XCI+XG4gICAgICAgICAge3sgJ0FkbWluLlByb2R1Y3RzLlBlcm1pc3Npb25LZXknIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJwZXJtaXNzaW9uX2tleVwiPjwvcC1zb3J0SWNvbj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiXG4gICAgICAgICAgcFNvcnRhYmxlQ29sdW1uPVwiZmVhdHVyZV9rZXlcIj5cbiAgICAgICAgICB7eyAnQWRtaW4uUHJvZHVjdHMuRmVhdHVyZUtleScgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cImZlYXR1cmVfa2V5XCI+PC9wLXNvcnRJY29uPlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCJcbiAgICAgICAgICBwU29ydGFibGVDb2x1bW49XCJwcm9kdWN0X2tleVwiPlxuICAgICAgICAgIHt7ICdBZG1pbi5Qcm9kdWN0cy5Qcm9kdWN0S2V5JyB8IHRyYW5zbG9jbyB9fVxuICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwicHJvZHVjdF9rZXlcIj48L3Atc29ydEljb24+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0aCBzY29wZT1cInRydWVcIlxuICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cImNhdGVnb3J5XCI+XG4gICAgICAgICAge3sgJ0FkbWluLlByb2R1Y3RzLkNhdGVnb3J5JyB8IHRyYW5zbG9jbyB9fVxuICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwiY2F0ZWdvcnlcIj48L3Atc29ydEljb24+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0aCBzY29wZT1cInRydWVcIlxuICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cInJlZ2lvblwiPlxuICAgICAgICAgIHt7ICdBZG1pbi5Qcm9kdWN0cy5SZWdpb24nIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJyZWdpb25cIj48L3Atc29ydEljb24+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0aCBzY29wZT1cInRydWVcIlxuICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cImN1cnJlbmN5XCI+XG4gICAgICAgICAge3sgJ0FkbWluLlByb2R1Y3RzLkN1cnJlbmN5JyB8IHRyYW5zbG9jbyB9fVxuICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwiY3VycmVuY3lcIj48L3Atc29ydEljb24+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0aCBzY29wZT1cInRydWVcIlxuICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cInByaWNlX3Blcl91bml0XCI+XG4gICAgICAgICAge3sgJ0FkbWluLlByb2R1Y3RzLlByaWNlJyB8IHRyYW5zbG9jbyB9fVxuICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwicHJpY2VfcGVyX3VuaXRcIj48L3Atc29ydEljb24+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0aCBzY29wZT1cInRydWVcIlxuICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cImFjdGl2ZVwiPlxuICAgICAgICAgIHt7ICdMYWJlbC5Jc0FjdGl2ZScgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cImFjdGl2ZVwiPjwvcC1zb3J0SWNvbj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiXG4gICAgICAgICAgcFNvcnRhYmxlQ29sdW1uPVwiYmlsbGluZ19mcmVxdWVuY3lcIj5cbiAgICAgICAgICB7eyAnQWRtaW4uUHJvZHVjdHMuQmlsbGluZycgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cImJpbGxpbmdfZnJlcXVlbmN5XCI+PC9wLXNvcnRJY29uPlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCJcbiAgICAgICAgICBjbGFzcz1cImFjdGlvbnMtbGlzdC10d29cIj57eyAnTGFiZWwuQWN0aW9ucycgfCB0cmFuc2xvY28gfX08L3RoPlxuICAgICAgPC90cj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCJcbiAgICAgIGxldC1pdGVtPlxuICAgICAgPHRyPlxuICAgICAgICA8dGQgZGF0YS1oZWFkPVwiTmFtZVwiPnt7IGl0ZW0ubmFtZSB9fTwvdGQ+XG4gICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJTdHJpcGUgUGxhblwiPnt7IGl0ZW0uc3RyaXBlX3BsYW5faWQgfX08L3RkPlxuICAgICAgICA8dGQgZGF0YS1oZWFkPVwiUGVybWlzc2lvbiBLZXlcIj57eyBpdGVtLnBlcm1pc3Npb25fa2V5IH19PC90ZD5cbiAgICAgICAgPHRkIGRhdGEtaGVhZD1cIkZlYXR1cmUgS2V5XCI+e3sgaXRlbS5mZWF0dXJlX2tleSB9fTwvdGQ+XG4gICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJQcm9kdWN0IEtleVwiPnt7IGl0ZW0ucHJvZHVjdF9rZXkgfX08L3RkPlxuICAgICAgICA8dGQgZGF0YS1oZWFkPVwiQ2F0ZWdvcnlcIj5cbiAgICAgICAgICA8c3BhbiBbYXBwRHluYW1pY0JhZGdlXT1cInsgaXRlbXNBcnJheTogY2F0ZWdvcmllcywgaXRlbTogaXRlbS5jYXRlZ29yeSB9XCJcbiAgICAgICAgICAgIGNvbG9yPVwid2FybmluZ1wiXG4gICAgICAgICAgICBjbGFzcz1cImJhZGdlXCI+e3sgaXRlbS5jYXRlZ29yeSB9fTwvc3Bhbj5cbiAgICAgICAgPC90ZD5cbiAgICAgICAgPHRkIGRhdGEtaGVhZD1cIlJlZ2lvblwiPlxuICAgICAgICAgIDxzcGFuIFthcHBEeW5hbWljQmFkZ2VdPVwieyBpdGVtc0FycmF5OiByZWdpb25zLCBpdGVtOiBpdGVtLnJlZ2lvbiB9XCJcbiAgICAgICAgICAgIGNvbG9yPVwiY3lhblwiXG4gICAgICAgICAgICBjbGFzcz1cImJhZGdlXCI+e3sgaXRlbS5yZWdpb24gfX08L3NwYW4+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJDdXJyZW5jeVwiPlxuICAgICAgICAgIDxzcGFuIFthcHBEeW5hbWljQmFkZ2VdPVwieyBpdGVtc0FycmF5OiBjdXJyZW5jeSwgaXRlbTogaXRlbS5jdXJyZW5jeSB9XCJcbiAgICAgICAgICAgIGNvbG9yPVwiYmx1ZS1ncmV5XCJcbiAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2VcIj57eyBpdGVtLmN1cnJlbmN5IH19PC9zcGFuPlxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGQgZGF0YS1oZWFkPVwiUHJpY2VcIj57eyBpdGVtLnByaWNlX3Blcl91bml0IH19PC90ZD5cbiAgICAgICAgPHRkIGRhdGEtaGVhZD1cIkFjdGl2ZVwiPlxuICAgICAgICAgIDxzcGFuIFthcHBEeW5hbWljQmFkZ2VdPVwieyBpdGVtc0FycmF5OiBbdHJ1ZSwgZmFsc2VdLCBpdGVtOiBpdGVtPy5hY3RpdmUgfVwiXG4gICAgICAgICAgICBjb2xvcj1cInN1Y2Nlc3MtZGFuZ2VyXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2VcIj57eyBpdGVtPy5hY3RpdmUgPyAnWWVzJyA6ICdObycgfX08L3NwYW4+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJCaWxsaW5nXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZVwiXG4gICAgICAgICAgICBbYXBwRHluYW1pY0JhZGdlXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc0FycmF5OiBiaWxsaW5nRnJlcXVlbmN5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW06IGl0ZW0/LmJpbGxpbmdfZnJlcXVlbmN5XG4gICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIGNvbG9yPVwiYmx1ZS1ncmV5XCI+e3sgaXRlbS5iaWxsaW5nX2ZyZXF1ZW5jeSB9fTwvc3Bhbj5cbiAgICAgICAgPC90ZD5cbiAgICAgICAgPHRkIGRhdGEtaGVhZD1cIkFjdGlvblwiPlxuICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3QtdW5zdHlsZWQgbGlzdC1pbmxpbmUgd2lkdGgtbWF4LWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxsaSBuZ2JUb29sdGlwPVwiRWRpdFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwibWUtMiBtZS1zbS0zXCJcbiAgICAgICAgICAgICAgKnJiYWNBbGxvdz1cIidQYWdlcy5BZG1pbi5Qcm9kdWN0LkVkaXQnXCJcbiAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiW3JvdXRlcnMucHJvZHVjdERldGFpbHMgKyBpdGVtLmlkXVwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVkaXQgZWRpdC1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDxsaSBuZ2JUb29sdGlwPVwiRGVsZXRlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtZS0yIG1lLXNtLTNcIlxuICAgICAgICAgICAgICAqcmJhY0FsbG93PVwiJ1BhZ2VzLkFkbWluLlByb2R1Y3QuRGVsZXRlJ1wiXG4gICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uRGVsZXRlKGl0ZW0pXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlKGl0ZW0pXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdHJhc2ggZGVsZXRlLWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpIG5nYlRvb2x0aXA9XCJVc2VycyBMaXN0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtZS0yIG1lLXNtLTNcIlxuICAgICAgICAgICAgICAqcmJhY0FsbG93PVwiJ1BhZ2VzLkFkbWluLlByb2R1Y3QuRWRpdCdcIlxuICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbcm91dGVycy5wcm9kdWN0c1VzZXJMaXN0ICsgaXRlbS5pZF1cIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10YXNrcyBjdGExLWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpIG5nYlRvb2x0aXA9XCJEdXBsaWNhdGUgVGhlIFByb2R1Y3RcIlxuICAgICAgICAgICAgICBjbGFzcz1cIm1lLXNtLTNcIlxuICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbcm91dGVycy5wcm9kdWN0RGV0YWlscyArICdhZGQnXVwiXG4gICAgICAgICAgICAgIFtxdWVyeVBhcmFtc109XCJ7IGR1cGxpY2F0ZV9wcm9kdWN0X2lkOiBpdGVtLmlkIH1cIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jbG9uZSBlZGl0LWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpIG5nYlRvb2x0aXA9XCJGZWVkYmFjayBRdWVzdGlvbnNcIlxuICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtZS0yIG1lLXNtLTNcIlxuICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbcm91dGVycy5mZWVkYmFja1F1ZXN0aW9uc11cIlxuICAgICAgICAgICAgICBbcXVlcnlQYXJhbXNdPVwieyBwcm9kdWN0X2lkOiBpdGVtLmlkIH1cIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jb21tZW50cyBlZGl0LWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L3RyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvcC10YWJsZT5cbiAgPGRpdiAqbmdJZj1cInRvdGFsUmVjb3JkcyA9PT0gMCAmJiB0b3RhbFJlY29yZHNVbkZpbHRlcmVkICE9PSAwXCI+XG4gICAgPHB3LW5vLWRhdGEgW3dpdGhJbWFnZV09XCJ0cnVlXCIgW21lc3NhZ2VdPVwiJ1NlYXJjaC5Ob0RhdGFNZXNzYWdlJyB8IHRyYW5zbG9jb1wiIFtkZXNjcmlwdGlvbl09XCInU2VhcmNoLk5vRGF0YURlc2NyaXB0aW9uJyB8IHRyYW5zbG9jb1wiID5cbiAgICA8L3B3LW5vLWRhdGE+XG4gIDwvZGl2PlxuICA8c3BhbiBjbGFzcz1cInRvdGFsLXJlY29yZHMtY291bnRcIipuZ0lmPVwidG90YWxSZWNvcmRzICE9PSAwXCIgPlRvdGFsOiB7eyB0b3RhbFJlY29yZHMgfX08L3NwYW4+XG48L2Rpdj5cbjxkaXYgKm5nSWY9XCIhbG9hZGluZyAmJiB0b3RhbFJlY29yZHNVbkZpbHRlcmVkID09PSAwXCI+XG4gIDxwdy1uby1kYXRhIFt3aXRoSW1hZ2VdPVwidHJ1ZVwiIFttZXNzYWdlXT1cIidBZG1pbi5Qcm9kdWN0cy5Ob0RhdGFNZXNzYWdlJyB8IHRyYW5zbG9jb1wiPiA8L3B3LW5vLWRhdGE+XG48L2Rpdj5cbjwhLS0gcGFzc3dvcmQgdmFsaWRhdGlvbiBtb2RhbCBmb3IgZGVsZXRlIHByb2R1Y3QgLS0+XG48cHctcGFzc3dvcmQtdmFsaWRhdGlvbiAjcGFzc3dvcmRWYWxpZGF0aW9uTW9kYWxGb3JQcm9kdWN0RGVsZXRlXG4gIChzdWNjZXNzRXZlbnQpPVwiZGVsZXRlUHJvZHVjdCgkZXZlbnQpXCI+XG4gIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICA8cD57eyAnVXNlci5BY2NvdW50Lk1lc3NhZ2UuQWN0aW9uQ2FuTm90VW5kb25lJyB8IHRyYW5zbG9jbyB9fTwvcD5cbiAgICAgIDxwPnt7ICdVc2VyLkFjY291bnQuTWVzc2FnZS5Db25maXJtUGFzc3dvcmQnIHwgdHJhbnNsb2NvIH19PC9wPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvcHctcGFzc3dvcmQtdmFsaWRhdGlvbj5cbiJdfQ==
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdHMtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FkbWluLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJvZHVjdHMvcHJvZHVjdHMtbGlzdC9wcm9kdWN0cy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcm9kdWN0cy9wcm9kdWN0cy1saXN0L3Byb2R1Y3RzLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsUUFBUSxFQUdSLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNGLE9BQU8sRUFBRSxTQUFTLEVBQW1CLE1BQU0sNEJBQTRCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTFFLE9BQU8sTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUVuQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBTzFELE1BQU0sT0FBTyxxQkFDVCxTQUFRLGdCQUFnQjtJQStCeEIsWUFDcUIsY0FBOEIsRUFDOUIsV0FBd0IsRUFDekMsUUFBa0IsRUFDRCxHQUFzQjtRQUV2QyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFMQyxtQkFB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Q0FBQztJQUVELGFBQWEsQ0FBQyxNQUFNO1FBQ2hCLElBQUksQ0FBQyxjQUFjO2FBQ2QsYUFBYSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUM7YUFDNUQsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakYsQ0FBQyxDQUFDO2FBQ0QsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNOLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVPLGFBQWE7UUFDakIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUM1RCxJQUFJLFFBQVEsRUFBRSxVQUFVLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLEVBQUUsVUFBVSxJQUFJLEVBQUUsQ0FBQztZQUNqRCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRVEsV0FBVztRQUNoQixLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEIsQ0FBQzsrR0E5SVEscUJBQXFCO21HQUFyQixxQkFBcUIseVBDM0JsQyxnMlFBME1BOzs0RkQvS2EscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNJLHdCQUF3QjtvS0FTbEMsdUNBQXVDO3NCQUR0QyxTQUFTO3VCQUFDLHlDQUF5QyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgSW5qZWN0b3IsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFwcEJhc2VDb21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWJhc2UtY29tcG9uZW50JztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlLCBQZXJtaXNzaW9uU2VydmljZSwgUHJvZHVjdFNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXNlcnZpY2VzJztcbmltcG9ydCB7IFBBR0VfU0laRSwgUGFnaW5nLCBQcm9kdWN0IH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgSGVscGVyU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9oZWxwZXItc2VydmljZSc7XG5pbXBvcnQgeyBQYXNzd29yZFZhbGlkYXRpb25Db21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2Uvc2hhcmVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQgdW5pcUJ5IGZyb20gJ2xvZGFzaC91bmlxQnknO1xuaW1wb3J0IHsgTGF6eUxvYWRFdmVudCB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IGZvcmtKb2luIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFJPVVRFUlMgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvcm91dGVycy9yb3V0ZXJzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwdy1hZG1pbi1wcm9kdWN0cy1saXN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHJvZHVjdHMtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcHJvZHVjdHMtbGlzdC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFByb2R1Y3RzTGlzdENvbXBvbmVudFxuICAgIGV4dGVuZHMgQXBwQmFzZUNvbXBvbmVudFxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0NoZWNrZWRcbntcbiAgICBAVmlld0NoaWxkKCdwYXNzd29yZFZhbGlkYXRpb25Nb2RhbEZvclByb2R1Y3REZWxldGUnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBwYXNzd29yZFZhbGlkYXRpb25Nb2RhbEZvclByb2R1Y3REZWxldGU6IFBhc3N3b3JkVmFsaWRhdGlvbkNvbXBvbmVudDtcblxuICAgIHByaXZhdGUgcHJvZHVjdFRvRGVsZXRlOiBQcm9kdWN0O1xuXG4gICAgbG9hZGluZyA9IHRydWU7XG5cbiAgICBzZWFyY2hUZXh0ID0gJyc7XG5cbiAgICBwcm9kdWN0cyA9IFtdO1xuXG4gICAgcGFnZSA9IDE7XG4gICAgdG90YWxSZWNvcmRzVW5GaWx0ZXJlZCA9IDA7XG5cbiAgICBiaWxsaW5nRnJlcXVlbmN5ID0gWyd3ZWVrJywgJ21vbnRoJywgJ3llYXInXTtcbiAgICBjYXRlZ29yaWVzID0gW107XG5cbiAgICByb3V0ZXJzID0gUk9VVEVSUztcblxuICAgIHVzZXJMb2dnZWRJbjogYm9vbGVhbjtcbiAgICB0b3RhbFJlY29yZHM6IG51bWJlcjtcbiAgICBzdWJzY3JpcHRpb25JZDogbnVtYmVyO1xuXG4gICAgY3VycmVuY3kgPSBbXTtcbiAgICByZWdpb25zID0gW107XG4gICAgZmlsdGVyQnlGZWF0dXJlS2V5cyA9IFtdO1xuICAgIGZlYXR1cmVLZXlzTGlzdCA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvZHVjdFNlcnZpY2U6IFByb2R1Y3RTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmdldENhdGVnb3JpZXMoKTtcbiAgICAgICAgdGhpcy5nZXRDdXJyZW5jeUFuZFJlZ2lvbnMoKTtcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRUb2tlbiQoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMudXNlckxvZ2dlZEluID0gISFyZXM7XG4gICAgICAgICAgICBpZiAodGhpcy51c2VyTG9nZ2VkSW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbklkID0gUGVybWlzc2lvblNlcnZpY2Uuc2VsZWN0ZWRTdWJzY3JpcHRpb24/LmlkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBvbkxhenlMb2FkKGV2ZW50OiBMYXp5TG9hZEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IHBhZ2VEZXRhaWxzID0gSGVscGVyU2VydmljZS5vblRhYmxlTGF6eUxvYWQoZXZlbnQpO1xuICAgICAgICB0aGlzLnBhZ2UgPSBwYWdlRGV0YWlscy5wYWdlO1xuICAgICAgICB0aGlzLmdldERhdGEoe1xuICAgICAgICAgICAgcGFnZTogdGhpcy5wYWdlLFxuICAgICAgICAgICAgcGFnZV9zaXplOiBQQUdFX1NJWkUsXG4gICAgICAgICAgICBvcmRlcl9ieTogcGFnZURldGFpbHMuc29ydEZpZWxkLFxuICAgICAgICAgICAgb3JkZXJfZGlyZWN0aW9uOiBwYWdlRGV0YWlscy5zb3J0T3JkZXIsXG4gICAgICAgICAgICBzZWFyY2g6IHRoaXMuc2VhcmNoVGV4dFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEN1cnJlbmN5QW5kUmVnaW9ucygpIHtcbiAgICAgICAgZm9ya0pvaW4oe1xuICAgICAgICAgICAgY3VycmVuY3k6IHRoaXMucHJvZHVjdFNlcnZpY2UuZ2V0U3VwcG9ydGVkQ3VycmVuY3koKSxcbiAgICAgICAgICAgIHJlZ2lvbnM6IHRoaXMucHJvZHVjdFNlcnZpY2UuZ2V0U3VwcG9ydGVkUmVnaW9ucygpXG4gICAgICAgIH0pLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW5jeSA9IHJlcz8uY3VycmVuY3k/LnJlZ2lvbnM7XG4gICAgICAgICAgICB0aGlzLnJlZ2lvbnMgPSByZXM/LnJlZ2lvbnM/LnJlZ2lvbnM7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RGF0YShwYWdpbmc6IFBhZ2luZykge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLnByb2R1Y3RTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0UHJvZHVjdExpc3QocGFnaW5nLCB0aGlzLnN1YnNjcmlwdGlvbklkLCB7XG4gICAgICAgICAgICAgICAgZmVhdHVyZV9rZXlzOiB0aGlzLmZpbHRlckJ5RmVhdHVyZUtleXMuam9pbigpIHx8ICcnXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9kdWN0cyA9IHJlc3BvbnNlLnByb2R1Y3RzO1xuICAgICAgICAgICAgICAgIHRoaXMudG90YWxSZWNvcmRzID0gcmVzcG9uc2Uub2JqZWN0X2NvdW50O1xuICAgICAgICAgICAgICAgIHRoaXMudG90YWxSZWNvcmRzVW5GaWx0ZXJlZCA9IHJlc3BvbnNlLnVuZmlsdGVyZWRfY291bnQ7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZmVhdHVyZUtleXNMaXN0Py5sZW5ndGggJiYgcmVzcG9uc2U/LnByb2R1Y3RzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mZWF0dXJlS2V5c0xpc3QgPSByZXNwb25zZS5wcm9kdWN0cy5tYXAoZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbGVtZW50LmZlYXR1cmVfa2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBlbGVtZW50LmZlYXR1cmVfa2V5ID8/ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mZWF0dXJlS2V5c0xpc3QgPSB1bmlxQnkodGhpcy5mZWF0dXJlS2V5c0xpc3QsICdsYWJlbCcpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjdHMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5wcmljZV9wZXJfdW5pdCA9IChlbGVtZW50LnByaWNlX3Blcl91bml0IC8gMTAwKS50b0ZpeGVkKDIpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5hZGQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25TZWFyY2hPcHRpb25DaGFuZ2UoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJCeUZlYXR1cmVLZXlzID0gZXZlbnQudmFsdWU7XG4gICAgICAgIHRoaXMuZ2V0RGF0YSh7XG4gICAgICAgICAgICBwYWdlOiB0aGlzLnBhZ2UsXG4gICAgICAgICAgICBwYWdlX3NpemU6IFBBR0VfU0laRVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkRlbGV0ZShpdGVtOiBQcm9kdWN0KSB7XG4gICAgICAgIHRoaXMucHJvZHVjdFRvRGVsZXRlID0gaXRlbTtcbiAgICAgICAgdGhpcy5wYXNzd29yZFZhbGlkYXRpb25Nb2RhbEZvclByb2R1Y3REZWxldGUub3BlbigpO1xuICAgIH1cblxuICAgIGRlbGV0ZVByb2R1Y3QoX2V2ZW50KSB7XG4gICAgICAgIHRoaXMucHJvZHVjdFNlcnZpY2VcbiAgICAgICAgICAgIC5kZWxldGVQcm9kdWN0KHRoaXMucHJvZHVjdFRvRGVsZXRlPy5pZCwgdGhpcy5zdWJzY3JpcHRpb25JZClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjdHMgPSB0aGlzLnByb2R1Y3RzLmZpbHRlcih4ID0+IHguaWQgIT09IHRoaXMucHJvZHVjdFRvRGVsZXRlPy5pZCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmFkZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9kdWN0VG9EZWxldGUgPSBudWxsO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDYXRlZ29yaWVzKCkge1xuICAgICAgICB0aGlzLnByb2R1Y3RTZXJ2aWNlLmdldFByb2R1Y3RDYXRlZ29yaWVzKCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZT8uY2F0ZWdvcmllcykge1xuICAgICAgICAgICAgICAgIHRoaXMuY2F0ZWdvcmllcyA9IHJlc3BvbnNlPy5jYXRlZ29yaWVzID8/IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29sLXhzLTEyIHRleHQtZW5kIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgPGgyIGNsYXNzPVwiY2FyZC10aXRsZSBwLTAgZmxvYXQtc3RhcnRcIj5Qcm9kdWN0czwvaDI+XG4gIDxidXR0b24gKnJiYWNBbGxvdz1cIidQYWdlcy5BZG1pbi5Qcm9kdWN0LkNyZWF0ZSdcIlxuICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1wcmltYXJ5XCJcbiAgICBbcm91dGVyTGlua109XCJbcm91dGVycy5wcm9kdWN0RGV0YWlscyArICdhZGQnXVwiPlxuICAgIDxpIGNsYXNzPVwiZmEgZmEtcGx1cy1jaXJjbGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IFNldHVwIGEgTmV3IFByb2R1Y3RcbiAgPC9idXR0b24+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJ3LTEwMCB0ZXh0LWNlbnRlciBtdC0zXCJcbiAgKm5nSWY9XCJsb2FkaW5nXCI+XG4gIDxwLXByb2dyZXNzU3Bpbm5lcj4gPC9wLXByb2dyZXNzU3Bpbm5lcj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cInByaW1lbmctZGF0YXRhYmxlLWNvbnRhaW5lciB0YWJsZS1yZXNwb25zaXZlIG10LTBcIlxuICBbY2xhc3MuaGlkZVRhYmxlXT1cInRvdGFsUmVjb3Jkc1VuRmlsdGVyZWQgPT09IDBcIj5cbiAgPHAtdGFibGUgI2R0XG4gICAgW3ZhbHVlXT1cInByb2R1Y3RzXCJcbiAgICBbcGFnaW5hdG9yXT1cInRvdGFsUmVjb3JkcyAhPT0gMFwiXG4gICAgW2xhenldPVwidHJ1ZVwiXG4gICAgW3Jvd3NdPVwiUEFHRV9TSVpFXCJcbiAgICBbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3Jkc1wiXG4gICAgW2xvYWRpbmddPVwibG9hZGluZ1wiXG4gICAgW2ZpbHRlckRlbGF5XT1cIjEwMDBcIlxuICAgIChvbkxhenlMb2FkKT1cIm9uTGF6eUxvYWQoJGV2ZW50KVwiXG4gICAgW2N1c3RvbVNvcnRdPVwidHJ1ZVwiPlxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjYXB0aW9uXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWZpbHRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS00XCI+XG4gICAgICAgICAgPHAtbXVsdGlTZWxlY3QgcGxhY2Vob2xkZXI9XCJTZWxlY3QgRmVhdHVyZSBLZXlzXCJcbiAgICAgICAgICAgIFtvcHRpb25zXT1cImZlYXR1cmVLZXlzTGlzdFwiXG4gICAgICAgICAgICAob25DaGFuZ2UpPVwib25TZWFyY2hPcHRpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICBbc2hvd0hlYWRlcl09XCJ0cnVlXCJcbiAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiPlxuICAgICAgICAgIDwvcC1tdWx0aVNlbGVjdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWVuZFwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtc2VhcmNoIG10LTIgbWUtMlwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0XCJcbiAgICAgICAgICAgIHBJbnB1dFRleHRcbiAgICAgICAgICAgIHNpemU9XCI1MFwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBQcm9kdWN0Li4uXCJcbiAgICAgICAgICAgIChpbnB1dCk9XCJkdC5maWx0ZXJHbG9iYWwoJGV2ZW50LnRhcmdldC52YWx1ZSwgJ2NvbnRhaW5zJylcIlxuICAgICAgICAgICAgY2xhc3M9XCJtdy05MFwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICA8dHIgY2xhc3M9XCJoZWFkXCI+XG4gICAgICAgIDx0aCBzY29wZT1cInRydWVcIlxuICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cIm5hbWVcIj5cbiAgICAgICAgICB7eyAnTGFiZWwuTmFtZScgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cIm5hbWVcIj48L3Atc29ydEljb24+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0aCBzY29wZT1cInRydWVcIlxuICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cInN0cmlwZV9wbGFuX2lkXCI+XG4gICAgICAgICAge3sgJ0FkbWluLlByb2R1Y3RzLlN0cmlwZVBsYW4nIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJzdHJpcGVfcGxhbl9pZFwiPjwvcC1zb3J0SWNvbj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiXG4gICAgICAgICAgcFNvcnRhYmxlQ29sdW1uPVwicGVybWlzc2lvbl9rZXlcIj5cbiAgICAgICAgICB7eyAnQWRtaW4uUHJvZHVjdHMuUGVybWlzc2lvbktleScgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cInBlcm1pc3Npb25fa2V5XCI+PC9wLXNvcnRJY29uPlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCJcbiAgICAgICAgICBwU29ydGFibGVDb2x1bW49XCJmZWF0dXJlX2tleVwiPlxuICAgICAgICAgIHt7ICdBZG1pbi5Qcm9kdWN0cy5GZWF0dXJlS2V5JyB8IHRyYW5zbG9jbyB9fVxuICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwiZmVhdHVyZV9rZXlcIj48L3Atc29ydEljb24+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0aCBzY29wZT1cInRydWVcIlxuICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cInByb2R1Y3Rfa2V5XCI+XG4gICAgICAgICAge3sgJ0FkbWluLlByb2R1Y3RzLlByb2R1Y3RLZXknIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJwcm9kdWN0X2tleVwiPjwvcC1zb3J0SWNvbj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiXG4gICAgICAgICAgcFNvcnRhYmxlQ29sdW1uPVwiY2F0ZWdvcnlcIj5cbiAgICAgICAgICB7eyAnQWRtaW4uUHJvZHVjdHMuQ2F0ZWdvcnknIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJjYXRlZ29yeVwiPjwvcC1zb3J0SWNvbj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiXG4gICAgICAgICAgcFNvcnRhYmxlQ29sdW1uPVwicmVnaW9uXCI+XG4gICAgICAgICAge3sgJ0FkbWluLlByb2R1Y3RzLlJlZ2lvbicgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cInJlZ2lvblwiPjwvcC1zb3J0SWNvbj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiXG4gICAgICAgICAgcFNvcnRhYmxlQ29sdW1uPVwiY3VycmVuY3lcIj5cbiAgICAgICAgICB7eyAnQWRtaW4uUHJvZHVjdHMuQ3VycmVuY3knIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJjdXJyZW5jeVwiPjwvcC1zb3J0SWNvbj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiXG4gICAgICAgICAgcFNvcnRhYmxlQ29sdW1uPVwicHJpY2VfcGVyX3VuaXRcIj5cbiAgICAgICAgICB7eyAnQWRtaW4uUHJvZHVjdHMuUHJpY2UnIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJwcmljZV9wZXJfdW5pdFwiPjwvcC1zb3J0SWNvbj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiXG4gICAgICAgICAgcFNvcnRhYmxlQ29sdW1uPVwiYWN0aXZlXCI+XG4gICAgICAgICAge3sgJ0xhYmVsLklzQWN0aXZlJyB8IHRyYW5zbG9jbyB9fVxuICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwiYWN0aXZlXCI+PC9wLXNvcnRJY29uPlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCJcbiAgICAgICAgICBwU29ydGFibGVDb2x1bW49XCJiaWxsaW5nX2ZyZXF1ZW5jeVwiPlxuICAgICAgICAgIHt7ICdBZG1pbi5Qcm9kdWN0cy5CaWxsaW5nJyB8IHRyYW5zbG9jbyB9fVxuICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwiYmlsbGluZ19mcmVxdWVuY3lcIj48L3Atc29ydEljb24+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0aCBzY29wZT1cInRydWVcIlxuICAgICAgICAgIGNsYXNzPVwiYWN0aW9ucy1saXN0LXR3b1wiPnt7ICdMYWJlbC5BY3Rpb25zJyB8IHRyYW5zbG9jbyB9fTwvdGg+XG4gICAgICA8L3RyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIlxuICAgICAgbGV0LWl0ZW0+XG4gICAgICA8dHI+XG4gICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJOYW1lXCI+e3sgaXRlbS5uYW1lIH19PC90ZD5cbiAgICAgICAgPHRkIGRhdGEtaGVhZD1cIlN0cmlwZSBQbGFuXCI+e3sgaXRlbS5zdHJpcGVfcGxhbl9pZCB9fTwvdGQ+XG4gICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJQZXJtaXNzaW9uIEtleVwiPnt7IGl0ZW0ucGVybWlzc2lvbl9rZXkgfX08L3RkPlxuICAgICAgICA8dGQgZGF0YS1oZWFkPVwiRmVhdHVyZSBLZXlcIj57eyBpdGVtLmZlYXR1cmVfa2V5IH19PC90ZD5cbiAgICAgICAgPHRkIGRhdGEtaGVhZD1cIlByb2R1Y3QgS2V5XCI+e3sgaXRlbS5wcm9kdWN0X2tleSB9fTwvdGQ+XG4gICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJDYXRlZ29yeVwiPlxuICAgICAgICAgIDxzcGFuIFthcHBEeW5hbWljQmFkZ2VdPVwieyBpdGVtc0FycmF5OiBjYXRlZ29yaWVzLCBpdGVtOiBpdGVtLmNhdGVnb3J5IH1cIlxuICAgICAgICAgICAgY29sb3I9XCJ3YXJuaW5nXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2VcIj57eyBpdGVtLmNhdGVnb3J5IH19PC9zcGFuPlxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGQgZGF0YS1oZWFkPVwiUmVnaW9uXCI+XG4gICAgICAgICAgPHNwYW4gW2FwcER5bmFtaWNCYWRnZV09XCJ7IGl0ZW1zQXJyYXk6IHJlZ2lvbnMsIGl0ZW06IGl0ZW0ucmVnaW9uIH1cIlxuICAgICAgICAgICAgY29sb3I9XCJjeWFuXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2VcIj57eyBpdGVtLnJlZ2lvbiB9fTwvc3Bhbj5cbiAgICAgICAgPC90ZD5cbiAgICAgICAgPHRkIGRhdGEtaGVhZD1cIkN1cnJlbmN5XCI+XG4gICAgICAgICAgPHNwYW4gW2FwcER5bmFtaWNCYWRnZV09XCJ7IGl0ZW1zQXJyYXk6IGN1cnJlbmN5LCBpdGVtOiBpdGVtLmN1cnJlbmN5IH1cIlxuICAgICAgICAgICAgY29sb3I9XCJibHVlLWdyZXlcIlxuICAgICAgICAgICAgY2xhc3M9XCJiYWRnZVwiPnt7IGl0ZW0uY3VycmVuY3kgfX08L3NwYW4+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJQcmljZVwiPnt7IGl0ZW0ucHJpY2VfcGVyX3VuaXQgfX08L3RkPlxuICAgICAgICA8dGQgZGF0YS1oZWFkPVwiQWN0aXZlXCI+XG4gICAgICAgICAgPHNwYW4gW2FwcER5bmFtaWNCYWRnZV09XCJ7IGl0ZW1zQXJyYXk6IFt0cnVlLCBmYWxzZV0sIGl0ZW06IGl0ZW0/LmFjdGl2ZSB9XCJcbiAgICAgICAgICAgIGNvbG9yPVwic3VjY2Vzcy1kYW5nZXJcIlxuICAgICAgICAgICAgY2xhc3M9XCJiYWRnZVwiPnt7IGl0ZW0/LmFjdGl2ZSA/ICdZZXMnIDogJ05vJyB9fTwvc3Bhbj5cbiAgICAgICAgPC90ZD5cbiAgICAgICAgPHRkIGRhdGEtaGVhZD1cIkJpbGxpbmdcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlXCJcbiAgICAgICAgICAgIFthcHBEeW5hbWljQmFkZ2VdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zQXJyYXk6IGJpbGxpbmdGcmVxdWVuY3ksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbTogaXRlbT8uYmlsbGluZ19mcmVxdWVuY3lcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgY29sb3I9XCJibHVlLWdyZXlcIj57eyBpdGVtLmJpbGxpbmdfZnJlcXVlbmN5IH19PC9zcGFuPlxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGQgZGF0YS1oZWFkPVwiQWN0aW9uXCI+XG4gICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC11bnN0eWxlZCBsaXN0LWlubGluZSB3aWR0aC1tYXgtY29udGVudFwiPlxuICAgICAgICAgICAgPGxpIG5nYlRvb2x0aXA9XCJFZGl0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtZS0yIG1lLXNtLTNcIlxuICAgICAgICAgICAgICAqcmJhY0FsbG93PVwiJ1BhZ2VzLkFkbWluLlByb2R1Y3QuRWRpdCdcIlxuICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbcm91dGVycy5wcm9kdWN0RGV0YWlscyArIGl0ZW0uaWRdXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZWRpdCBlZGl0LWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpIG5nYlRvb2x0aXA9XCJEZWxldGVcIlxuICAgICAgICAgICAgICBjbGFzcz1cIm1lLTIgbWUtc20tM1wiXG4gICAgICAgICAgICAgICpyYmFjQWxsb3c9XCInUGFnZXMuQWRtaW4uUHJvZHVjdC5EZWxldGUnXCJcbiAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwib25EZWxldGUoaXRlbSlcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGUoaXRlbSlcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10cmFzaCBkZWxldGUtaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGkgbmdiVG9vbHRpcD1cIlVzZXJzIExpc3RcIlxuICAgICAgICAgICAgICBjbGFzcz1cIm1lLTIgbWUtc20tM1wiXG4gICAgICAgICAgICAgICpyYmFjQWxsb3c9XCInUGFnZXMuQWRtaW4uUHJvZHVjdC5FZGl0J1wiXG4gICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIltyb3V0ZXJzLnByb2R1Y3RzVXNlckxpc3QgKyBpdGVtLmlkXVwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRhc2tzIGN0YTEtaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGkgbmdiVG9vbHRpcD1cIkR1cGxpY2F0ZSBUaGUgUHJvZHVjdFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwibWUtc20tM1wiXG4gICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIltyb3V0ZXJzLnByb2R1Y3REZXRhaWxzICsgJ2FkZCddXCJcbiAgICAgICAgICAgICAgW3F1ZXJ5UGFyYW1zXT1cInsgZHVwbGljYXRlX3Byb2R1Y3RfaWQ6IGl0ZW0uaWQgfVwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNsb25lIGVkaXQtaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGkgbmdiVG9vbHRpcD1cIkZlZWRiYWNrIFF1ZXN0aW9uc1wiXG4gICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgICAgICBjbGFzcz1cIm1lLTIgbWUtc20tM1wiXG4gICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIltyb3V0ZXJzLmZlZWRiYWNrUXVlc3Rpb25zXVwiXG4gICAgICAgICAgICAgIFtxdWVyeVBhcmFtc109XCJ7IHByb2R1Y3RfaWQ6IGl0ZW0uaWQgfVwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNvbW1lbnRzIGVkaXQtaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9wLXRhYmxlPlxuICA8ZGl2ICpuZ0lmPVwidG90YWxSZWNvcmRzID09PSAwICYmIHRvdGFsUmVjb3Jkc1VuRmlsdGVyZWQgIT09IDBcIj5cbiAgICA8cHctbm8tZGF0YSBbd2l0aEltYWdlXT1cInRydWVcIiBbbWVzc2FnZV09XCInU2VhcmNoLk5vRGF0YU1lc3NhZ2UnIHwgdHJhbnNsb2NvXCIgW2Rlc2NyaXB0aW9uXT1cIidTZWFyY2guTm9EYXRhRGVzY3JpcHRpb24nIHwgdHJhbnNsb2NvXCIgPlxuICAgIDwvcHctbm8tZGF0YT5cbiAgPC9kaXY+XG4gIDxzcGFuIGNsYXNzPVwidG90YWwtcmVjb3Jkcy1jb3VudFwiKm5nSWY9XCJ0b3RhbFJlY29yZHMgIT09IDBcIiA+VG90YWw6IHt7IHRvdGFsUmVjb3JkcyB9fTwvc3Bhbj5cbjwvZGl2PlxuPGRpdiAqbmdJZj1cIiFsb2FkaW5nICYmIHRvdGFsUmVjb3Jkc1VuRmlsdGVyZWQgPT09IDBcIj5cbiAgPHB3LW5vLWRhdGEgW3dpdGhJbWFnZV09XCJ0cnVlXCIgW21lc3NhZ2VdPVwiJ0FkbWluLlByb2R1Y3RzLk5vRGF0YU1lc3NhZ2UnIHwgdHJhbnNsb2NvXCI+IDwvcHctbm8tZGF0YT5cbjwvZGl2PlxuPCEtLSBwYXNzd29yZCB2YWxpZGF0aW9uIG1vZGFsIGZvciBkZWxldGUgcHJvZHVjdCAtLT5cbjxwdy1wYXNzd29yZC12YWxpZGF0aW9uICNwYXNzd29yZFZhbGlkYXRpb25Nb2RhbEZvclByb2R1Y3REZWxldGVcbiAgKHN1Y2Nlc3NFdmVudCk9XCJkZWxldGVQcm9kdWN0KCRldmVudClcIj5cbiAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgIDxwPnt7ICdVc2VyLkFjY291bnQuTWVzc2FnZS5BY3Rpb25DYW5Ob3RVbmRvbmUnIHwgdHJhbnNsb2NvIH19PC9wPlxuICAgICAgPHA+e3sgJ1VzZXIuQWNjb3VudC5NZXNzYWdlLkNvbmZpcm1QYXNzd29yZCcgfCB0cmFuc2xvY28gfX08L3A+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9wdy1wYXNzd29yZC12YWxpZGF0aW9uPlxuIl19
@@ -0,0 +1,47 @@
1
+ import { ChangeDetectorRef, Component, Injector, TemplateRef, ViewChild } from '@angular/core';
2
+ import { AppBaseComponent } from '@posiwise/app-base-component';
3
+ import { PermissionService } from '@posiwise/common-services';
4
+ import { HelperService } from '@posiwise/helper-service';
5
+ import { handleDateRangeSelection } from '@posiwise/utils';
6
+ import * as i0 from "@angular/core";
7
+ export class BaseSubscriptionInsightComponent extends AppBaseComponent {
8
+ constructor(injector, cdr) {
9
+ super(injector);
10
+ this.cdr = cdr;
11
+ this.feedbacks = [];
12
+ this.loading = true;
13
+ this.isLoaded = false;
14
+ this.page = 1;
15
+ }
16
+ ngAfterViewChecked() {
17
+ this.cdr.detectChanges();
18
+ }
19
+ ngOnInit() {
20
+ this.subscriptionId = PermissionService.selectedSubscription?.id;
21
+ this.dateRanges = HelperService.initializeDateRanges();
22
+ this.selectedDateRange = '';
23
+ this.getChartData();
24
+ this.userStore().subscribe(response => {
25
+ this.currentUser = response;
26
+ });
27
+ }
28
+ onDateRangeSelect(event) {
29
+ this.selectedDateRange = handleDateRangeSelection(event, this.selectedDateRange);
30
+ this.getChartData();
31
+ }
32
+ ngOnDestroy() {
33
+ super.ngOnDestroy();
34
+ }
35
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: BaseSubscriptionInsightComponent, deps: [{ token: i0.Injector }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
36
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: BaseSubscriptionInsightComponent, selector: "ng-component", viewQueries: [{ propertyName: "content", first: true, predicate: ["showComment"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
37
+ }
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: BaseSubscriptionInsightComponent, decorators: [{
39
+ type: Component,
40
+ args: [{
41
+ template: ''
42
+ }]
43
+ }], ctorParameters: () => [{ type: i0.Injector }, { type: i0.ChangeDetectorRef }], propDecorators: { content: [{
44
+ type: ViewChild,
45
+ args: ['showComment', { static: true }]
46
+ }] } });
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zdWJzY3JpcHRpb24taW5zaWdodC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FkbWluLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvc3Vic2NyaXB0aW9ucy9zdWJzY3JpcHRpb25zLWluc2lnaHQvYmFzZS1zdWJzY3JpcHRpb24taW5zaWdodC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsUUFBUSxFQUdSLFdBQVcsRUFDWCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQU8zRCxNQUFNLE9BQWdCLGdDQUNsQixTQUFRLGdCQUFnQjtJQWtCeEIsWUFDSSxRQUFrQixFQUNDLEdBQXNCO1FBRXpDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUZHLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBYjdDLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDZixZQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ2YsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixTQUFJLEdBQUcsQ0FBQyxDQUFDO0lBYVQsQ0FBQztJQUVELGtCQUFrQjtRQUNkLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsY0FBYyxHQUFHLGlCQUFpQixDQUFDLG9CQUFvQixFQUFFLEVBQUUsQ0FBQztRQUNqRSxJQUFJLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDbEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsS0FBMkQ7UUFDekUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLHdCQUF3QixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNqRixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVRLFdBQVc7UUFDaEIsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7K0dBL0NpQixnQ0FBZ0M7bUdBQWhDLGdDQUFnQyxpTUFGeEMsRUFBRTs7NEZBRU0sZ0NBQWdDO2tCQUhyRCxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxFQUFFO2lCQUNmOzZHQUsrQyxPQUFPO3NCQUFsRCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0NoZWNrZWQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEluamVjdG9yLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHBvc2l3aXNlL2FwcC1iYXNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tc2VydmljZXMnO1xuaW1wb3J0IHsgUGxvdGx5LCBVc2VyIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgSGVscGVyU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9oZWxwZXItc2VydmljZSc7XG5pbXBvcnQgeyBoYW5kbGVEYXRlUmFuZ2VTZWxlY3Rpb24gfSBmcm9tICdAcG9zaXdpc2UvdXRpbHMnO1xuXG5pbXBvcnQgeyBDb21tZW50Q29udGV4dCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9pbnRlcmZhY2UvYWRtaW4tbW9kdWxlLXNoYXJlZC5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZTogJydcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVN1YnNjcmlwdGlvbkluc2lnaHRDb21wb25lbnRcbiAgICBleHRlbmRzIEFwcEJhc2VDb21wb25lbnRcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdDaGVja2VkXG57XG4gICAgQFZpZXdDaGlsZCgnc2hvd0NvbW1lbnQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBjb250ZW50OiBUZW1wbGF0ZVJlZjxDb21tZW50Q29udGV4dD47XG5cbiAgICBncmFwaDogUGxvdGx5LkZpZ3VyZTtcbiAgICB0b3RhbFJlY29yZHM6IG51bWJlcjtcbiAgICBmZWVkYmFja3MgPSBbXTtcbiAgICBsb2FkaW5nID0gdHJ1ZTtcbiAgICBpc0xvYWRlZCA9IGZhbHNlO1xuICAgIHBhZ2UgPSAxO1xuICAgIGdyYXBoTG9hZGluZzogYm9vbGVhbjtcbiAgICBzdWJzY3JpcHRpb25JZDogbnVtYmVyO1xuICAgIGN1cnJlbnRVc2VyOiBVc2VyO1xuICAgIGNvbW1lbnRUb1Nob3c6IHN0cmluZztcbiAgICBzZWxlY3RlZERhdGVSYW5nZTtcbiAgICBkYXRlUmFuZ2VzO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbklkID0gUGVybWlzc2lvblNlcnZpY2Uuc2VsZWN0ZWRTdWJzY3JpcHRpb24/LmlkO1xuICAgICAgICB0aGlzLmRhdGVSYW5nZXMgPSBIZWxwZXJTZXJ2aWNlLmluaXRpYWxpemVEYXRlUmFuZ2VzKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UgPSAnJztcbiAgICAgICAgdGhpcy5nZXRDaGFydERhdGEoKTtcbiAgICAgICAgdGhpcy51c2VyU3RvcmUoKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VXNlciA9IHJlc3BvbnNlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkRhdGVSYW5nZVNlbGVjdChldmVudDogeyBzdGFydERhdGU6IG1vbWVudC5Nb21lbnQ7IGVuZERhdGU6IG1vbWVudC5Nb21lbnQgfSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlID0gaGFuZGxlRGF0ZVJhbmdlU2VsZWN0aW9uKGV2ZW50LCB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlKTtcbiAgICAgICAgdGhpcy5nZXRDaGFydERhdGEoKTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICAvLyBBYnN0cmFjdCBtZXRob2QgdGhhdCBlYWNoIGNvbXBvbmVudCBtdXN0IGltcGxlbWVudFxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRDaGFydERhdGEoKTogdm9pZDtcbn1cbiJdfQ==
@@ -1,39 +1,19 @@
1
- import { ChangeDetectorRef, Component, Injector, TemplateRef, ViewChild } from '@angular/core';
1
+ import { ChangeDetectorRef, Component, Injector } from '@angular/core';
2
2
  import { AdminService } from '@posiwise/admin-module-utils';
3
- import { AppBaseComponent } from '@posiwise/app-base-component';
4
- import { PermissionService } from '@posiwise/common-services';
5
3
  import { SUBSCRIPTION_ANALYTICS_TYPES } from '@posiwise/common-utilities';
6
4
  import { HelperService } from '@posiwise/helper-service';
7
- import { handleDateRangeSelection } from '@posiwise/utils';
5
+ import { BaseSubscriptionInsightComponent } from '../base-subscription-insight.component';
8
6
  import * as i0 from "@angular/core";
9
7
  import * as i1 from "@posiwise/admin-module-utils";
10
8
  import * as i2 from "angular-plotly.js";
11
9
  import * as i3 from "@angular/common";
12
10
  import * as i4 from "@posiwise/shared-components";
13
11
  import * as i5 from "primeng/progressspinner";
14
- export class SubscriptionInsightAveragePriceComponent extends AppBaseComponent {
15
- constructor(adminService, injector, cdr) {
16
- super(injector);
12
+ export class SubscriptionInsightAveragePriceComponent extends BaseSubscriptionInsightComponent {
13
+ constructor(injector, cdr, adminService) {
14
+ super(injector, cdr);
17
15
  this.adminService = adminService;
18
- this.cdr = cdr;
19
- this.feedbacks = [];
20
- this.loading = true;
21
- this.isLoaded = false;
22
- this.page = 1;
23
16
  }
24
- ngAfterViewChecked() {
25
- this.cdr.detectChanges();
26
- }
27
- ngOnInit() {
28
- this.subscriptionId = PermissionService.selectedSubscription?.id;
29
- this.dateRanges = HelperService.initializeDateRanges();
30
- this.selectedDateRange = '';
31
- this.getChartData();
32
- this.userStore().subscribe(response => {
33
- this.currentUser = response;
34
- });
35
- }
36
- /** Function to get the data for the graph */
37
17
  getChartData() {
38
18
  this.graphLoading = true;
39
19
  HelperService.fetchSubscriptionChartData(this.adminService, SUBSCRIPTION_ANALYTICS_TYPES.AVERAGE_PRICE, this.subscriptionId, this.selectedDateRange)
@@ -44,21 +24,11 @@ export class SubscriptionInsightAveragePriceComponent extends AppBaseComponent {
44
24
  this.graphLoading = false;
45
25
  });
46
26
  }
47
- onDateRangeSelect(event) {
48
- this.selectedDateRange = handleDateRangeSelection(event, this.selectedDateRange);
49
- this.getChartData();
50
- }
51
- ngOnDestroy() {
52
- super.ngOnDestroy();
53
- }
54
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SubscriptionInsightAveragePriceComponent, deps: [{ token: i1.AdminService }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
55
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SubscriptionInsightAveragePriceComponent, selector: "pw-subscription-insight-average-price", viewQueries: [{ propertyName: "content", first: true, predicate: ["showComment"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<app-date-picker\n [selectedDateRange]=\"selectedDateRange\"\n [dateRanges]=\"dateRanges\"\n (dateRangeChange)=\"onDateRangeSelect($event)\">\n</app-date-picker>\n<div class=\"w-100 text-center mt-3\" *ngIf=\"graphLoading\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n\n<ng-template [ngIf]=\"graph\">\n <plotly-plot [data]=\"graph?.data\"\n [config]=\"graph?.config\"\n [layout]=\"graph?.layout\" [useResizeHandler]=\"graph? true : false\"></plotly-plot>\n</ng-template>\n", dependencies: [{ kind: "component", type: i2.PlotlyComponent, selector: "plotly-plot", inputs: ["data", "layout", "config", "frames", "style", "theme", "divId", "revision", "className", "debug", "useResizeHandler", "updateOnLayoutChange", "updateOnDataChange", "updateOnlyWithRevision"], outputs: ["initialized", "update", "purge", "error", "afterExport", "afterPlot", "animated", "animatingFrame", "animationInterrupted", "autoSize", "beforeExport", "beforeHover", "buttonClicked", "click", "plotlyClick", "clickAnnotation", "deselect", "doubleClick", "framework", "hover", "legendClick", "legendDoubleClick", "react", "relayout", "relayouting", "restyle", "redraw", "selected", "selecting", "sliderChange", "sliderEnd", "sliderStart", "sunburstclick", "transitioning", "transitionInterrupted", "unhover", "treemapclick", "webglcontextlost"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.DateRangePickerComponent, selector: "app-date-picker", inputs: ["selectedDateRange", "dateRanges"], outputs: ["dateRangeChange"] }, { kind: "component", type: i5.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }] }); }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SubscriptionInsightAveragePriceComponent, deps: [{ token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: i1.AdminService }], target: i0.ɵɵFactoryTarget.Component }); }
28
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SubscriptionInsightAveragePriceComponent, selector: "pw-subscription-insight-average-price", usesInheritance: true, ngImport: i0, template: "<app-date-picker\n [selectedDateRange]=\"selectedDateRange\"\n [dateRanges]=\"dateRanges\"\n (dateRangeChange)=\"onDateRangeSelect($event)\">\n</app-date-picker>\n<div class=\"w-100 text-center mt-3\" *ngIf=\"graphLoading\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n\n<ng-template [ngIf]=\"graph\">\n <plotly-plot [data]=\"graph?.data\"\n [config]=\"graph?.config\"\n [layout]=\"graph?.layout\" [useResizeHandler]=\"graph? true : false\"></plotly-plot>\n</ng-template>\n", dependencies: [{ kind: "component", type: i2.PlotlyComponent, selector: "plotly-plot", inputs: ["data", "layout", "config", "frames", "style", "theme", "divId", "revision", "className", "debug", "useResizeHandler", "updateOnLayoutChange", "updateOnDataChange", "updateOnlyWithRevision"], outputs: ["initialized", "update", "purge", "error", "afterExport", "afterPlot", "animated", "animatingFrame", "animationInterrupted", "autoSize", "beforeExport", "beforeHover", "buttonClicked", "click", "plotlyClick", "clickAnnotation", "deselect", "doubleClick", "framework", "hover", "legendClick", "legendDoubleClick", "react", "relayout", "relayouting", "restyle", "redraw", "selected", "selecting", "sliderChange", "sliderEnd", "sliderStart", "sunburstclick", "transitioning", "transitionInterrupted", "unhover", "treemapclick", "webglcontextlost"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.DateRangePickerComponent, selector: "app-date-picker", inputs: ["selectedDateRange", "dateRanges"], outputs: ["dateRangeChange"] }, { kind: "component", type: i5.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }] }); }
56
29
  }
57
30
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SubscriptionInsightAveragePriceComponent, decorators: [{
58
31
  type: Component,
59
32
  args: [{ selector: 'pw-subscription-insight-average-price', template: "<app-date-picker\n [selectedDateRange]=\"selectedDateRange\"\n [dateRanges]=\"dateRanges\"\n (dateRangeChange)=\"onDateRangeSelect($event)\">\n</app-date-picker>\n<div class=\"w-100 text-center mt-3\" *ngIf=\"graphLoading\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n\n<ng-template [ngIf]=\"graph\">\n <plotly-plot [data]=\"graph?.data\"\n [config]=\"graph?.config\"\n [layout]=\"graph?.layout\" [useResizeHandler]=\"graph? true : false\"></plotly-plot>\n</ng-template>\n" }]
60
- }], ctorParameters: () => [{ type: i1.AdminService }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }], propDecorators: { content: [{
61
- type: ViewChild,
62
- args: ['showComment', { static: true }]
63
- }] } });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLWluc2lnaHQtYXZlcmFnZS1wcmljZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FkbWluLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvc3Vic2NyaXB0aW9ucy9zdWJzY3JpcHRpb25zLWluc2lnaHQvc3Vic2NyaXB0aW9uLWluc2lnaHQtYXZlcmFnZS1wcmljZS9zdWJzY3JpcHRpb24taW5zaWdodC1hdmVyYWdlLXByaWNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9zdWJzY3JpcHRpb25zL3N1YnNjcmlwdGlvbnMtaW5zaWdodC9zdWJzY3JpcHRpb24taW5zaWdodC1hdmVyYWdlLXByaWNlL3N1YnNjcmlwdGlvbi1pbnNpZ2h0LWF2ZXJhZ2UtcHJpY2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsUUFBUSxFQUdSLFdBQVcsRUFDWCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBVSw0QkFBNEIsRUFBUSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7OztBQVEzRCxNQUFNLE9BQU8sd0NBQ1QsU0FBUSxnQkFBZ0I7SUE2QnhCLFlBQ3FCLFlBQTBCLEVBQzNDLFFBQWtCLEVBQ0QsR0FBc0I7UUFFdkMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBSkMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFFMUIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUF2QjNDLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFFZixZQUFPLEdBQUcsSUFBSSxDQUFDO1FBRWYsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQixTQUFJLEdBQUcsQ0FBQyxDQUFDO0lBb0JULENBQUM7SUFFRCxrQkFBa0I7UUFDZCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUM7UUFDakUsSUFBSSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUN2RCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2xDLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELDZDQUE2QztJQUNyQyxZQUFZO1FBQ2hCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBRXpCLGFBQWEsQ0FBQywwQkFBMEIsQ0FDcEMsSUFBSSxDQUFDLFlBQVksRUFDakIsNEJBQTRCLENBQUMsYUFBYSxFQUMxQyxJQUFJLENBQUMsY0FBYyxFQUNuQixJQUFJLENBQUMsaUJBQWlCLENBQ3pCO2FBQ0ksU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO1FBQzFCLENBQUMsQ0FBQzthQUNELEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDTixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFDRCxpQkFBaUIsQ0FBQyxLQUEyRDtRQUN6RSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsd0JBQXdCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRVEsV0FBVztRQUNoQixLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEIsQ0FBQzsrR0E1RVEsd0NBQXdDO21HQUF4Qyx3Q0FBd0MsME5DeEJyRCw4ZkFjQTs7NEZEVWEsd0NBQXdDO2tCQUpwRCxTQUFTOytCQUNJLHVDQUF1Qzt3SUFPTCxPQUFPO3NCQUFsRCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0NoZWNrZWQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEluamVjdG9yLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBZG1pblNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvYWRtaW4tbW9kdWxlLXV0aWxzJztcbmltcG9ydCB7IEFwcEJhc2VDb21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWJhc2UtY29tcG9uZW50JztcbmltcG9ydCB7IFBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBQbG90bHksIFNVQlNDUklQVElPTl9BTkFMWVRJQ1NfVFlQRVMsIFVzZXIgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2hlbHBlci1zZXJ2aWNlJztcbmltcG9ydCB7IGhhbmRsZURhdGVSYW5nZVNlbGVjdGlvbiB9IGZyb20gJ0Bwb3Npd2lzZS91dGlscyc7XG5cbmltcG9ydCB7IENvbW1lbnRDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2ludGVyZmFjZS9hZG1pbi1tb2R1bGUtc2hhcmVkLmludGVyZmFjZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctc3Vic2NyaXB0aW9uLWluc2lnaHQtYXZlcmFnZS1wcmljZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3N1YnNjcmlwdGlvbi1pbnNpZ2h0LWF2ZXJhZ2UtcHJpY2UuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFN1YnNjcmlwdGlvbkluc2lnaHRBdmVyYWdlUHJpY2VDb21wb25lbnRcbiAgICBleHRlbmRzIEFwcEJhc2VDb21wb25lbnRcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdDaGVja2VkXG57XG4gICAgQFZpZXdDaGlsZCgnc2hvd0NvbW1lbnQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBjb250ZW50OiBUZW1wbGF0ZVJlZjxDb21tZW50Q29udGV4dD47XG5cbiAgICBncmFwaDogUGxvdGx5LkZpZ3VyZTtcblxuICAgIHRvdGFsUmVjb3JkczogbnVtYmVyO1xuXG4gICAgZmVlZGJhY2tzID0gW107XG5cbiAgICBsb2FkaW5nID0gdHJ1ZTtcblxuICAgIGlzTG9hZGVkID0gZmFsc2U7XG5cbiAgICBwYWdlID0gMTtcblxuICAgIGdyYXBoTG9hZGluZzogYm9vbGVhbjtcblxuICAgIHN1YnNjcmlwdGlvbklkOiBudW1iZXI7XG5cbiAgICBjdXJyZW50VXNlcjogVXNlcjtcblxuICAgIGNvbW1lbnRUb1Nob3c6IHN0cmluZztcblxuICAgIHNlbGVjdGVkRGF0ZVJhbmdlO1xuXG4gICAgZGF0ZVJhbmdlcztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGFkbWluU2VydmljZTogQWRtaW5TZXJ2aWNlLFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge1xuICAgICAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uSWQgPSBQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZFN1YnNjcmlwdGlvbj8uaWQ7XG4gICAgICAgIHRoaXMuZGF0ZVJhbmdlcyA9IEhlbHBlclNlcnZpY2UuaW5pdGlhbGl6ZURhdGVSYW5nZXMoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZSA9ICcnO1xuICAgICAgICB0aGlzLmdldENoYXJ0RGF0YSgpO1xuICAgICAgICB0aGlzLnVzZXJTdG9yZSgpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRVc2VyID0gcmVzcG9uc2U7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBGdW5jdGlvbiB0byBnZXQgdGhlIGRhdGEgZm9yIHRoZSBncmFwaCAqL1xuICAgIHByaXZhdGUgZ2V0Q2hhcnREYXRhKCkge1xuICAgICAgICB0aGlzLmdyYXBoTG9hZGluZyA9IHRydWU7XG5cbiAgICAgICAgSGVscGVyU2VydmljZS5mZXRjaFN1YnNjcmlwdGlvbkNoYXJ0RGF0YShcbiAgICAgICAgICAgIHRoaXMuYWRtaW5TZXJ2aWNlLFxuICAgICAgICAgICAgU1VCU0NSSVBUSU9OX0FOQUxZVElDU19UWVBFUy5BVkVSQUdFX1BSSUNFLFxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25JZCxcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2VcbiAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncmFwaCA9IHJlc3BvbnNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5hZGQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JhcGhMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG4gICAgb25EYXRlUmFuZ2VTZWxlY3QoZXZlbnQ6IHsgc3RhcnREYXRlOiBtb21lbnQuTW9tZW50OyBlbmREYXRlOiBtb21lbnQuTW9tZW50IH0pIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZSA9IGhhbmRsZURhdGVSYW5nZVNlbGVjdGlvbihldmVudCwgdGhpcy5zZWxlY3RlZERhdGVSYW5nZSk7XG4gICAgICAgIHRoaXMuZ2V0Q2hhcnREYXRhKCk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufVxuIiwiPGFwcC1kYXRlLXBpY2tlclxuICBbc2VsZWN0ZWREYXRlUmFuZ2VdPVwic2VsZWN0ZWREYXRlUmFuZ2VcIlxuICBbZGF0ZVJhbmdlc109XCJkYXRlUmFuZ2VzXCJcbiAgKGRhdGVSYW5nZUNoYW5nZSk9XCJvbkRhdGVSYW5nZVNlbGVjdCgkZXZlbnQpXCI+XG48L2FwcC1kYXRlLXBpY2tlcj5cbjxkaXYgY2xhc3M9XCJ3LTEwMCB0ZXh0LWNlbnRlciBtdC0zXCIgKm5nSWY9XCJncmFwaExvYWRpbmdcIj5cbiAgPHAtcHJvZ3Jlc3NTcGlubmVyIHN0cm9rZVdpZHRoPVwiMlwiPiA8L3AtcHJvZ3Jlc3NTcGlubmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSBbbmdJZl09XCJncmFwaFwiPlxuICA8cGxvdGx5LXBsb3QgW2RhdGFdPVwiZ3JhcGg/LmRhdGFcIlxuICBbY29uZmlnXT1cImdyYXBoPy5jb25maWdcIlxuICAgIFtsYXlvdXRdPVwiZ3JhcGg/LmxheW91dFwiIFt1c2VSZXNpemVIYW5kbGVyXT1cImdyYXBoPyB0cnVlIDogZmFsc2VcIj48L3Bsb3RseS1wbG90PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
33
+ }], ctorParameters: () => [{ type: i0.Injector }, { type: i0.ChangeDetectorRef }, { type: i1.AdminService }] });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLWluc2lnaHQtYXZlcmFnZS1wcmljZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FkbWluLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvc3Vic2NyaXB0aW9ucy9zdWJzY3JpcHRpb25zLWluc2lnaHQvc3Vic2NyaXB0aW9uLWluc2lnaHQtYXZlcmFnZS1wcmljZS9zdWJzY3JpcHRpb24taW5zaWdodC1hdmVyYWdlLXByaWNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9zdWJzY3JpcHRpb25zL3N1YnNjcmlwdGlvbnMtaW5zaWdodC9zdWJzY3JpcHRpb24taW5zaWdodC1hdmVyYWdlLXByaWNlL3N1YnNjcmlwdGlvbi1pbnNpZ2h0LWF2ZXJhZ2UtcHJpY2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7OztBQU0xRixNQUFNLE9BQU8sd0NBQXlDLFNBQVEsZ0NBQWdDO0lBQzFGLFlBQ0ksUUFBa0IsRUFDbEIsR0FBc0IsRUFDTCxZQUEwQjtRQUUzQyxLQUFLLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRkosaUJBQVksR0FBWixZQUFZLENBQWM7SUFHL0MsQ0FBQztJQUVTLFlBQVk7UUFDbEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFFekIsYUFBYSxDQUFDLDBCQUEwQixDQUNwQyxJQUFJLENBQUMsWUFBWSxFQUNqQiw0QkFBNEIsQ0FBQyxhQUFhLEVBQzFDLElBQUksQ0FBQyxjQUFjLEVBQ25CLElBQUksQ0FBQyxpQkFBaUIsQ0FDekI7YUFDSSxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUM7UUFDMUIsQ0FBQyxDQUFDO2FBQ0QsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNOLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQzsrR0F4QlEsd0NBQXdDO21HQUF4Qyx3Q0FBd0Msb0dDWnJELDhmQWNBOzs0RkRGYSx3Q0FBd0M7a0JBSnBELFNBQVM7K0JBQ0ksdUNBQXVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQWRtaW5TZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2FkbWluLW1vZHVsZS11dGlscyc7XG5pbXBvcnQgeyBTVUJTQ1JJUFRJT05fQU5BTFlUSUNTX1RZUEVTIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgSGVscGVyU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9oZWxwZXItc2VydmljZSc7XG5cbmltcG9ydCB7IEJhc2VTdWJzY3JpcHRpb25JbnNpZ2h0Q29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS1zdWJzY3JpcHRpb24taW5zaWdodC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3B3LXN1YnNjcmlwdGlvbi1pbnNpZ2h0LWF2ZXJhZ2UtcHJpY2UnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zdWJzY3JpcHRpb24taW5zaWdodC1hdmVyYWdlLXByaWNlLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBTdWJzY3JpcHRpb25JbnNpZ2h0QXZlcmFnZVByaWNlQ29tcG9uZW50IGV4dGVuZHMgQmFzZVN1YnNjcmlwdGlvbkluc2lnaHRDb21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYWRtaW5TZXJ2aWNlOiBBZG1pblNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IsIGNkcik7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldENoYXJ0RGF0YSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ncmFwaExvYWRpbmcgPSB0cnVlO1xuXG4gICAgICAgIEhlbHBlclNlcnZpY2UuZmV0Y2hTdWJzY3JpcHRpb25DaGFydERhdGEoXG4gICAgICAgICAgICB0aGlzLmFkbWluU2VydmljZSxcbiAgICAgICAgICAgIFNVQlNDUklQVElPTl9BTkFMWVRJQ1NfVFlQRVMuQVZFUkFHRV9QUklDRSxcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uSWQsXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlXG4gICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JhcGggPSByZXNwb25zZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYWRkKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmdyYXBoTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPGFwcC1kYXRlLXBpY2tlclxuICBbc2VsZWN0ZWREYXRlUmFuZ2VdPVwic2VsZWN0ZWREYXRlUmFuZ2VcIlxuICBbZGF0ZVJhbmdlc109XCJkYXRlUmFuZ2VzXCJcbiAgKGRhdGVSYW5nZUNoYW5nZSk9XCJvbkRhdGVSYW5nZVNlbGVjdCgkZXZlbnQpXCI+XG48L2FwcC1kYXRlLXBpY2tlcj5cbjxkaXYgY2xhc3M9XCJ3LTEwMCB0ZXh0LWNlbnRlciBtdC0zXCIgKm5nSWY9XCJncmFwaExvYWRpbmdcIj5cbiAgPHAtcHJvZ3Jlc3NTcGlubmVyIHN0cm9rZVdpZHRoPVwiMlwiPiA8L3AtcHJvZ3Jlc3NTcGlubmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSBbbmdJZl09XCJncmFwaFwiPlxuICA8cGxvdGx5LXBsb3QgW2RhdGFdPVwiZ3JhcGg/LmRhdGFcIlxuICBbY29uZmlnXT1cImdyYXBoPy5jb25maWdcIlxuICAgIFtsYXlvdXRdPVwiZ3JhcGg/LmxheW91dFwiIFt1c2VSZXNpemVIYW5kbGVyXT1cImdyYXBoPyB0cnVlIDogZmFsc2VcIj48L3Bsb3RseS1wbG90PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -1,39 +1,19 @@
1
- import { ChangeDetectorRef, Component, Injector, TemplateRef, ViewChild } from '@angular/core';
1
+ import { ChangeDetectorRef, Component, Injector } from '@angular/core';
2
2
  import { AdminService } from '@posiwise/admin-module-utils';
3
- import { AppBaseComponent } from '@posiwise/app-base-component';
4
- import { PermissionService } from '@posiwise/common-services';
5
3
  import { SUBSCRIPTION_ANALYTICS_TYPES } from '@posiwise/common-utilities';
6
4
  import { HelperService } from '@posiwise/helper-service';
7
- import { handleDateRangeSelection } from '@posiwise/utils';
5
+ import { BaseSubscriptionInsightComponent } from '../base-subscription-insight.component';
8
6
  import * as i0 from "@angular/core";
9
7
  import * as i1 from "@posiwise/admin-module-utils";
10
8
  import * as i2 from "angular-plotly.js";
11
9
  import * as i3 from "@angular/common";
12
10
  import * as i4 from "@posiwise/shared-components";
13
11
  import * as i5 from "primeng/progressspinner";
14
- export class SubscriptionInsightAverageUserComponent extends AppBaseComponent {
15
- constructor(adminService, injector, cdr) {
16
- super(injector);
12
+ export class SubscriptionInsightAverageUserComponent extends BaseSubscriptionInsightComponent {
13
+ constructor(injector, cdr, adminService) {
14
+ super(injector, cdr);
17
15
  this.adminService = adminService;
18
- this.cdr = cdr;
19
- this.feedbacks = [];
20
- this.loading = true;
21
- this.isLoaded = false;
22
- this.page = 1;
23
16
  }
24
- ngAfterViewChecked() {
25
- this.cdr.detectChanges();
26
- }
27
- ngOnInit() {
28
- this.subscriptionId = PermissionService.selectedSubscription?.id;
29
- this.dateRanges = HelperService.initializeDateRanges();
30
- this.selectedDateRange = '';
31
- this.getChartData();
32
- this.userStore().subscribe(response => {
33
- this.currentUser = response;
34
- });
35
- }
36
- /** Function to get the data for the graph */
37
17
  getChartData() {
38
18
  this.graphLoading = true;
39
19
  HelperService.fetchSubscriptionChartData(this.adminService, SUBSCRIPTION_ANALYTICS_TYPES.AVERAGE_USERS, this.subscriptionId, this.selectedDateRange)
@@ -44,21 +24,11 @@ export class SubscriptionInsightAverageUserComponent extends AppBaseComponent {
44
24
  this.graphLoading = false;
45
25
  });
46
26
  }
47
- onDateRangeSelect(event) {
48
- this.selectedDateRange = handleDateRangeSelection(event, this.selectedDateRange);
49
- this.getChartData();
50
- }
51
- ngOnDestroy() {
52
- super.ngOnDestroy();
53
- }
54
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SubscriptionInsightAverageUserComponent, deps: [{ token: i1.AdminService }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
55
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SubscriptionInsightAverageUserComponent, selector: "pw-subscription-insight-average-user", viewQueries: [{ propertyName: "content", first: true, predicate: ["showComment"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<app-date-picker\n [selectedDateRange]=\"selectedDateRange\"\n [dateRanges]=\"dateRanges\"\n (dateRangeChange)=\"onDateRangeSelect($event)\">\n</app-date-picker>\n<div class=\"w-100 text-center mt-3\" *ngIf=\"graphLoading\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n\n<ng-template [ngIf]=\"graph\">\n <plotly-plot [data]=\"graph?.data\"\n [config]=\"graph?.config\"\n [layout]=\"graph?.layout\" [useResizeHandler]=\"graph? true : false\"></plotly-plot>\n</ng-template>\n", dependencies: [{ kind: "component", type: i2.PlotlyComponent, selector: "plotly-plot", inputs: ["data", "layout", "config", "frames", "style", "theme", "divId", "revision", "className", "debug", "useResizeHandler", "updateOnLayoutChange", "updateOnDataChange", "updateOnlyWithRevision"], outputs: ["initialized", "update", "purge", "error", "afterExport", "afterPlot", "animated", "animatingFrame", "animationInterrupted", "autoSize", "beforeExport", "beforeHover", "buttonClicked", "click", "plotlyClick", "clickAnnotation", "deselect", "doubleClick", "framework", "hover", "legendClick", "legendDoubleClick", "react", "relayout", "relayouting", "restyle", "redraw", "selected", "selecting", "sliderChange", "sliderEnd", "sliderStart", "sunburstclick", "transitioning", "transitionInterrupted", "unhover", "treemapclick", "webglcontextlost"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.DateRangePickerComponent, selector: "app-date-picker", inputs: ["selectedDateRange", "dateRanges"], outputs: ["dateRangeChange"] }, { kind: "component", type: i5.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }] }); }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SubscriptionInsightAverageUserComponent, deps: [{ token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: i1.AdminService }], target: i0.ɵɵFactoryTarget.Component }); }
28
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SubscriptionInsightAverageUserComponent, selector: "pw-subscription-insight-average-user", usesInheritance: true, ngImport: i0, template: "<app-date-picker\n [selectedDateRange]=\"selectedDateRange\"\n [dateRanges]=\"dateRanges\"\n (dateRangeChange)=\"onDateRangeSelect($event)\">\n</app-date-picker>\n<div class=\"w-100 text-center mt-3\" *ngIf=\"graphLoading\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n\n<ng-template [ngIf]=\"graph\">\n <plotly-plot [data]=\"graph?.data\"\n [config]=\"graph?.config\"\n [layout]=\"graph?.layout\" [useResizeHandler]=\"graph? true : false\"></plotly-plot>\n</ng-template>\n", dependencies: [{ kind: "component", type: i2.PlotlyComponent, selector: "plotly-plot", inputs: ["data", "layout", "config", "frames", "style", "theme", "divId", "revision", "className", "debug", "useResizeHandler", "updateOnLayoutChange", "updateOnDataChange", "updateOnlyWithRevision"], outputs: ["initialized", "update", "purge", "error", "afterExport", "afterPlot", "animated", "animatingFrame", "animationInterrupted", "autoSize", "beforeExport", "beforeHover", "buttonClicked", "click", "plotlyClick", "clickAnnotation", "deselect", "doubleClick", "framework", "hover", "legendClick", "legendDoubleClick", "react", "relayout", "relayouting", "restyle", "redraw", "selected", "selecting", "sliderChange", "sliderEnd", "sliderStart", "sunburstclick", "transitioning", "transitionInterrupted", "unhover", "treemapclick", "webglcontextlost"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.DateRangePickerComponent, selector: "app-date-picker", inputs: ["selectedDateRange", "dateRanges"], outputs: ["dateRangeChange"] }, { kind: "component", type: i5.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }] }); }
56
29
  }
57
30
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SubscriptionInsightAverageUserComponent, decorators: [{
58
31
  type: Component,
59
32
  args: [{ selector: 'pw-subscription-insight-average-user', template: "<app-date-picker\n [selectedDateRange]=\"selectedDateRange\"\n [dateRanges]=\"dateRanges\"\n (dateRangeChange)=\"onDateRangeSelect($event)\">\n</app-date-picker>\n<div class=\"w-100 text-center mt-3\" *ngIf=\"graphLoading\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n\n<ng-template [ngIf]=\"graph\">\n <plotly-plot [data]=\"graph?.data\"\n [config]=\"graph?.config\"\n [layout]=\"graph?.layout\" [useResizeHandler]=\"graph? true : false\"></plotly-plot>\n</ng-template>\n" }]
60
- }], ctorParameters: () => [{ type: i1.AdminService }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }], propDecorators: { content: [{
61
- type: ViewChild,
62
- args: ['showComment', { static: true }]
63
- }] } });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLWluc2lnaHQtYXZlcmFnZS11c2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9zdWJzY3JpcHRpb25zL3N1YnNjcmlwdGlvbnMtaW5zaWdodC9zdWJzY3JpcHRpb24taW5zaWdodC1hdmVyYWdlLXVzZXIvc3Vic2NyaXB0aW9uLWluc2lnaHQtYXZlcmFnZS11c2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9zdWJzY3JpcHRpb25zL3N1YnNjcmlwdGlvbnMtaW5zaWdodC9zdWJzY3JpcHRpb24taW5zaWdodC1hdmVyYWdlLXVzZXIvc3Vic2NyaXB0aW9uLWluc2lnaHQtYXZlcmFnZS11c2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFFBQVEsRUFHUixXQUFXLEVBQ1gsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQVUsNEJBQTRCLEVBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7QUFRM0QsTUFBTSxPQUFPLHVDQUNULFNBQVEsZ0JBQWdCO0lBNkJ4QixZQUNxQixZQUEwQixFQUMzQyxRQUFrQixFQUNELEdBQXNCO1FBRXZDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUpDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBRTFCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBdkIzQyxjQUFTLEdBQUcsRUFBRSxDQUFDO1FBRWYsWUFBTyxHQUFHLElBQUksQ0FBQztRQUVmLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsU0FBSSxHQUFHLENBQUMsQ0FBQztJQW9CVCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxjQUFjLEdBQUcsaUJBQWlCLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxDQUFDO1FBQ2pFLElBQUksQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDdkQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCw2Q0FBNkM7SUFDckMsWUFBWTtRQUNoQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUV6QixhQUFhLENBQUMsMEJBQTBCLENBQ3BDLElBQUksQ0FBQyxZQUFZLEVBQ2pCLDRCQUE0QixDQUFDLGFBQWEsRUFDMUMsSUFBSSxDQUFDLGNBQWMsRUFDbkIsSUFBSSxDQUFDLGlCQUFpQixDQUN6QjthQUNJLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztRQUMxQixDQUFDLENBQUM7YUFDRCxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ04sSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsS0FBMkQ7UUFDekUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLHdCQUF3QixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNqRixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVRLFdBQVc7UUFDaEIsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7K0dBN0VRLHVDQUF1QzttR0FBdkMsdUNBQXVDLHlOQ3hCcEQsOGZBY0E7OzRGRFVhLHVDQUF1QztrQkFKbkQsU0FBUzsrQkFDSSxzQ0FBc0M7d0lBT0osT0FBTztzQkFBbEQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdDaGVja2VkLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBJbmplY3RvcixcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQWRtaW5TZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2FkbWluLW1vZHVsZS11dGlscyc7XG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHBvc2l3aXNlL2FwcC1iYXNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tc2VydmljZXMnO1xuaW1wb3J0IHsgUGxvdGx5LCBTVUJTQ1JJUFRJT05fQU5BTFlUSUNTX1RZUEVTLCBVc2VyIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgSGVscGVyU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9oZWxwZXItc2VydmljZSc7XG5pbXBvcnQgeyBoYW5kbGVEYXRlUmFuZ2VTZWxlY3Rpb24gfSBmcm9tICdAcG9zaXdpc2UvdXRpbHMnO1xuXG5pbXBvcnQgeyBDb21tZW50Q29udGV4dCB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9pbnRlcmZhY2UvYWRtaW4tbW9kdWxlLXNoYXJlZC5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3B3LXN1YnNjcmlwdGlvbi1pbnNpZ2h0LWF2ZXJhZ2UtdXNlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3N1YnNjcmlwdGlvbi1pbnNpZ2h0LWF2ZXJhZ2UtdXNlci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU3Vic2NyaXB0aW9uSW5zaWdodEF2ZXJhZ2VVc2VyQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3Q2hlY2tlZFxue1xuICAgIEBWaWV3Q2hpbGQoJ3Nob3dDb21tZW50JywgeyBzdGF0aWM6IHRydWUgfSkgY29udGVudDogVGVtcGxhdGVSZWY8Q29tbWVudENvbnRleHQ+O1xuXG4gICAgZ3JhcGg6IFBsb3RseS5GaWd1cmU7XG5cbiAgICB0b3RhbFJlY29yZHM6IG51bWJlcjtcblxuICAgIGZlZWRiYWNrcyA9IFtdO1xuXG4gICAgbG9hZGluZyA9IHRydWU7XG5cbiAgICBpc0xvYWRlZCA9IGZhbHNlO1xuXG4gICAgcGFnZSA9IDE7XG5cbiAgICBncmFwaExvYWRpbmc6IGJvb2xlYW47XG5cbiAgICBzdWJzY3JpcHRpb25JZDogbnVtYmVyO1xuXG4gICAgY3VycmVudFVzZXI6IFVzZXI7XG5cbiAgICBjb21tZW50VG9TaG93OiBzdHJpbmc7XG5cbiAgICBzZWxlY3RlZERhdGVSYW5nZTtcblxuICAgIGRhdGVSYW5nZXM7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhZG1pblNlcnZpY2U6IEFkbWluU2VydmljZSxcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbklkID0gUGVybWlzc2lvblNlcnZpY2Uuc2VsZWN0ZWRTdWJzY3JpcHRpb24/LmlkO1xuICAgICAgICB0aGlzLmRhdGVSYW5nZXMgPSBIZWxwZXJTZXJ2aWNlLmluaXRpYWxpemVEYXRlUmFuZ2VzKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UgPSAnJztcbiAgICAgICAgdGhpcy5nZXRDaGFydERhdGEoKTtcbiAgICAgICAgdGhpcy51c2VyU3RvcmUoKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VXNlciA9IHJlc3BvbnNlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogRnVuY3Rpb24gdG8gZ2V0IHRoZSBkYXRhIGZvciB0aGUgZ3JhcGggKi9cbiAgICBwcml2YXRlIGdldENoYXJ0RGF0YSgpIHtcbiAgICAgICAgdGhpcy5ncmFwaExvYWRpbmcgPSB0cnVlO1xuXG4gICAgICAgIEhlbHBlclNlcnZpY2UuZmV0Y2hTdWJzY3JpcHRpb25DaGFydERhdGEoXG4gICAgICAgICAgICB0aGlzLmFkbWluU2VydmljZSxcbiAgICAgICAgICAgIFNVQlNDUklQVElPTl9BTkFMWVRJQ1NfVFlQRVMuQVZFUkFHRV9VU0VSUyxcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uSWQsXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlXG4gICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JhcGggPSByZXNwb25zZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYWRkKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmdyYXBoTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25EYXRlUmFuZ2VTZWxlY3QoZXZlbnQ6IHsgc3RhcnREYXRlOiBtb21lbnQuTW9tZW50OyBlbmREYXRlOiBtb21lbnQuTW9tZW50IH0pIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZSA9IGhhbmRsZURhdGVSYW5nZVNlbGVjdGlvbihldmVudCwgdGhpcy5zZWxlY3RlZERhdGVSYW5nZSk7XG4gICAgICAgIHRoaXMuZ2V0Q2hhcnREYXRhKCk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufVxuIiwiPGFwcC1kYXRlLXBpY2tlclxuICBbc2VsZWN0ZWREYXRlUmFuZ2VdPVwic2VsZWN0ZWREYXRlUmFuZ2VcIlxuICBbZGF0ZVJhbmdlc109XCJkYXRlUmFuZ2VzXCJcbiAgKGRhdGVSYW5nZUNoYW5nZSk9XCJvbkRhdGVSYW5nZVNlbGVjdCgkZXZlbnQpXCI+XG48L2FwcC1kYXRlLXBpY2tlcj5cbjxkaXYgY2xhc3M9XCJ3LTEwMCB0ZXh0LWNlbnRlciBtdC0zXCIgKm5nSWY9XCJncmFwaExvYWRpbmdcIj5cbiAgPHAtcHJvZ3Jlc3NTcGlubmVyIHN0cm9rZVdpZHRoPVwiMlwiPiA8L3AtcHJvZ3Jlc3NTcGlubmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSBbbmdJZl09XCJncmFwaFwiPlxuICA8cGxvdGx5LXBsb3QgW2RhdGFdPVwiZ3JhcGg/LmRhdGFcIlxuICBbY29uZmlnXT1cImdyYXBoPy5jb25maWdcIlxuICAgIFtsYXlvdXRdPVwiZ3JhcGg/LmxheW91dFwiIFt1c2VSZXNpemVIYW5kbGVyXT1cImdyYXBoPyB0cnVlIDogZmFsc2VcIj48L3Bsb3RseS1wbG90PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
33
+ }], ctorParameters: () => [{ type: i0.Injector }, { type: i0.ChangeDetectorRef }, { type: i1.AdminService }] });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLWluc2lnaHQtYXZlcmFnZS11c2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9zdWJzY3JpcHRpb25zL3N1YnNjcmlwdGlvbnMtaW5zaWdodC9zdWJzY3JpcHRpb24taW5zaWdodC1hdmVyYWdlLXVzZXIvc3Vic2NyaXB0aW9uLWluc2lnaHQtYXZlcmFnZS11c2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9zdWJzY3JpcHRpb25zL3N1YnNjcmlwdGlvbnMtaW5zaWdodC9zdWJzY3JpcHRpb24taW5zaWdodC1hdmVyYWdlLXVzZXIvc3Vic2NyaXB0aW9uLWluc2lnaHQtYXZlcmFnZS11c2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFekQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7Ozs7QUFNMUYsTUFBTSxPQUFPLHVDQUF3QyxTQUFRLGdDQUFnQztJQUN6RixZQUNJLFFBQWtCLEVBQ2xCLEdBQXNCLEVBQ0wsWUFBMEI7UUFFM0MsS0FBSyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUZKLGlCQUFZLEdBQVosWUFBWSxDQUFjO0lBRy9DLENBQUM7SUFFUyxZQUFZO1FBQ2xCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBRXpCLGFBQWEsQ0FBQywwQkFBMEIsQ0FDcEMsSUFBSSxDQUFDLFlBQVksRUFDakIsNEJBQTRCLENBQUMsYUFBYSxFQUMxQyxJQUFJLENBQUMsY0FBYyxFQUNuQixJQUFJLENBQUMsaUJBQWlCLENBQ3pCO2FBQ0ksU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO1FBQzFCLENBQUMsQ0FBQzthQUNELEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDTixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7K0dBeEJRLHVDQUF1QzttR0FBdkMsdUNBQXVDLG1HQ1pwRCw4ZkFjQTs7NEZERmEsdUNBQXVDO2tCQUpuRCxTQUFTOytCQUNJLHNDQUFzQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFkbWluU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9hZG1pbi1tb2R1bGUtdXRpbHMnO1xuaW1wb3J0IHsgU1VCU0NSSVBUSU9OX0FOQUxZVElDU19UWVBFUyB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tdXRpbGl0aWVzJztcbmltcG9ydCB7IEhlbHBlclNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvaGVscGVyLXNlcnZpY2UnO1xuXG5pbXBvcnQgeyBCYXNlU3Vic2NyaXB0aW9uSW5zaWdodENvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2Utc3Vic2NyaXB0aW9uLWluc2lnaHQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwdy1zdWJzY3JpcHRpb24taW5zaWdodC1hdmVyYWdlLXVzZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zdWJzY3JpcHRpb24taW5zaWdodC1hdmVyYWdlLXVzZXIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFN1YnNjcmlwdGlvbkluc2lnaHRBdmVyYWdlVXNlckNvbXBvbmVudCBleHRlbmRzIEJhc2VTdWJzY3JpcHRpb25JbnNpZ2h0Q29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGFkbWluU2VydmljZTogQWRtaW5TZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluamVjdG9yLCBjZHIpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRDaGFydERhdGEoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZ3JhcGhMb2FkaW5nID0gdHJ1ZTtcblxuICAgICAgICBIZWxwZXJTZXJ2aWNlLmZldGNoU3Vic2NyaXB0aW9uQ2hhcnREYXRhKFxuICAgICAgICAgICAgdGhpcy5hZG1pblNlcnZpY2UsXG4gICAgICAgICAgICBTVUJTQ1JJUFRJT05fQU5BTFlUSUNTX1RZUEVTLkFWRVJBR0VfVVNFUlMsXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbklkLFxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZVxuICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmdyYXBoID0gcmVzcG9uc2U7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmFkZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncmFwaExvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxhcHAtZGF0ZS1waWNrZXJcbiAgW3NlbGVjdGVkRGF0ZVJhbmdlXT1cInNlbGVjdGVkRGF0ZVJhbmdlXCJcbiAgW2RhdGVSYW5nZXNdPVwiZGF0ZVJhbmdlc1wiXG4gIChkYXRlUmFuZ2VDaGFuZ2UpPVwib25EYXRlUmFuZ2VTZWxlY3QoJGV2ZW50KVwiPlxuPC9hcHAtZGF0ZS1waWNrZXI+XG48ZGl2IGNsYXNzPVwidy0xMDAgdGV4dC1jZW50ZXIgbXQtM1wiICpuZ0lmPVwiZ3JhcGhMb2FkaW5nXCI+XG4gIDxwLXByb2dyZXNzU3Bpbm5lciBzdHJva2VXaWR0aD1cIjJcIj4gPC9wLXByb2dyZXNzU3Bpbm5lcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgW25nSWZdPVwiZ3JhcGhcIj5cbiAgPHBsb3RseS1wbG90IFtkYXRhXT1cImdyYXBoPy5kYXRhXCJcbiAgW2NvbmZpZ109XCJncmFwaD8uY29uZmlnXCJcbiAgICBbbGF5b3V0XT1cImdyYXBoPy5sYXlvdXRcIiBbdXNlUmVzaXplSGFuZGxlcl09XCJncmFwaD8gdHJ1ZSA6IGZhbHNlXCI+PC9wbG90bHktcGxvdD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=