@posiwise/admin-module 0.0.65 → 0.0.67
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/index.mjs +1 -2
- package/esm2022/lib/admin-guard.service.mjs +3 -3
- package/esm2022/lib/admin-module.routing.mjs +4 -4
- package/esm2022/lib/admin.module.mjs +6 -6
- package/esm2022/lib/components/TOS/terms-of-service/terms-of-service.component.mjs +6 -6
- package/esm2022/lib/components/TOS/terms-of-service-details/terms-of-service-details.component.mjs +7 -7
- package/esm2022/lib/components/TOS/terms-of-service-tabs/terms-of-service-tabs.component.mjs +3 -3
- package/esm2022/lib/components/config/global-config-details/global-config-details.component.mjs +7 -7
- package/esm2022/lib/components/config/global-config-list/global-config-list.component.mjs +6 -6
- package/esm2022/lib/components/config/global-config-tabs/global-config-tabs.component.mjs +3 -3
- package/esm2022/lib/components/contact-us/contact-us-list/contact-us-list.component.mjs +6 -6
- package/esm2022/lib/components/contact-us/contact-us-tabs/contact-us-tabs.component.mjs +3 -3
- package/esm2022/lib/components/credentials/credentials/credentials.component.mjs +6 -6
- package/esm2022/lib/components/credentials/credentials-details/credentials-details.component.mjs +7 -7
- package/esm2022/lib/components/credentials/credentials-tab/credentials-tab.component.mjs +3 -3
- package/esm2022/lib/components/credentials/subscription-credentials/subscription-credentials.component.mjs +6 -6
- package/esm2022/lib/components/credentials/subscription-credentials-details/subscription-credentials-details.component.mjs +7 -7
- package/esm2022/lib/components/domain-config/domain-config-details/domain-config-build/domain-config-build.component.mjs +7 -7
- package/esm2022/lib/components/domain-config/domain-config-details/domain-config-core/domain-config-core.component.mjs +7 -7
- package/esm2022/lib/components/domain-config/domain-config-details/domain-config-details.component.mjs +6 -6
- package/esm2022/lib/components/domain-config/domain-config-details/domain-config-integrations/domain-config-integrations.component.mjs +7 -7
- package/esm2022/lib/components/domain-config/domain-config-details/domain-config-interface/domain-config-interface.component.mjs +7 -7
- package/esm2022/lib/components/domain-config/domain-config-details/domain-config-organization/domain-config-organization.component.mjs +7 -7
- package/esm2022/lib/components/domain-config/domain-config-details/domain-config-security/domain-config-security.component.mjs +7 -7
- package/esm2022/lib/components/domain-config/domain-config-details/domain-config-social/domain-config-social.component.mjs +7 -7
- package/esm2022/lib/components/domain-config/domain-config-list/domain-config-list.component.mjs +6 -6
- package/esm2022/lib/components/domain-config/domain-config-tabs/domain-config-tabs.component.mjs +3 -3
- package/esm2022/lib/components/faqs/faqs-list/faqs-list.component.mjs +7 -7
- package/esm2022/lib/components/faqs/faqs-tabs/faqs-tabs.component.mjs +3 -3
- package/esm2022/lib/components/feedback-questions/feedback-questions-details/feedback-questions-details.component.mjs +7 -7
- package/esm2022/lib/components/feedback-questions/feedback-questions-list/feedback-questions-list.component.mjs +6 -6
- package/esm2022/lib/components/generic/generic-insight/generic-insight.component.mjs +3 -3
- package/esm2022/lib/components/generic/generic-misc/generic-misc.component.mjs +6 -6
- package/esm2022/lib/components/generic/generic-tabs/generic-tabs.component.mjs +3 -3
- package/esm2022/lib/components/login-notifications/login-notification-details/login-notification-details.component.mjs +7 -7
- package/esm2022/lib/components/login-notifications/login-notification-tabs/login-notification-tabs.component.mjs +3 -3
- package/esm2022/lib/components/login-notifications/login-notifications-list/login-notifications-list.component.mjs +6 -6
- package/esm2022/lib/components/newsletters/newsletter-details/newsletter-details.component.mjs +7 -7
- package/esm2022/lib/components/newsletters/newsletter-item-details/newsletter-item-details.component.mjs +7 -7
- package/esm2022/lib/components/newsletters/newsletter-users-list/newsletter-users-list.component.mjs +6 -6
- package/esm2022/lib/components/newsletters/newsletters-insight/newsletters-insight.component.mjs +6 -6
- package/esm2022/lib/components/newsletters/newsletters-items/newsletters-items.component.mjs +6 -6
- package/esm2022/lib/components/newsletters/newsletters-list/newsletters-list.component.mjs +6 -6
- package/esm2022/lib/components/newsletters/newsletters-tabs/newsletters-tabs.component.mjs +8 -8
- package/esm2022/lib/components/permissions/permissions-details/permissions-details.component.mjs +7 -7
- package/esm2022/lib/components/permissions/permissions-list/permissions-list.component.mjs +6 -6
- package/esm2022/lib/components/permissions/permissions-tabs/permissions-tabs.component.mjs +3 -3
- package/esm2022/lib/components/permissions/role-details/role-details.component.mjs +7 -7
- package/esm2022/lib/components/permissions/roles-list/roles-list.component.mjs +6 -6
- package/esm2022/lib/components/products/product-details/product-details.component.mjs +7 -7
- package/esm2022/lib/components/products/products-insight/products-insight.component.mjs +3 -3
- package/esm2022/lib/components/products/products-list/products-list.component.mjs +3 -3
- package/esm2022/lib/components/products/products-tabs/products-tabs.component.mjs +3 -3
- package/esm2022/lib/components/products/users-list-for-product/users-list-for-product.component.mjs +3 -3
- package/esm2022/lib/components/subscriptions/subscription-agents/subscription-agents.component.mjs +7 -7
- package/esm2022/lib/components/subscriptions/subscription-agents-list/subscription-agents-list.component.mjs +7 -7
- package/esm2022/lib/components/subscriptions/subscription-details/subscription-details.component.mjs +7 -7
- package/esm2022/lib/components/subscriptions/subscription-product-details/subscription-product-details.component.mjs +7 -7
- package/esm2022/lib/components/subscriptions/subscription-products/subscription-products.component.mjs +3 -3
- package/esm2022/lib/components/subscriptions/subscription-users/subscription-users.component.mjs +3 -3
- package/esm2022/lib/components/subscriptions/subscriptions-insight/subscription-insight-nps/subscription-insight-nps.component.mjs +6 -6
- package/esm2022/lib/components/subscriptions/subscriptions-insight/subscription-insight-revenue/subscription-insight-revenue.component.mjs +6 -6
- package/esm2022/lib/components/subscriptions/subscriptions-insight/subscription-insight-tabs/subscription-insight-tabs.component.mjs +3 -3
- package/esm2022/lib/components/subscriptions/subscriptions-insight/subscriptions-insight.component.mjs +6 -6
- package/esm2022/lib/components/subscriptions/subscriptions-list/subscriptions-list.component.mjs +6 -6
- package/esm2022/lib/components/subscriptions/subscriptions-tabs/subscriptions-tabs.component.mjs +8 -8
- package/esm2022/lib/components/tags/tags-category/tags-category.component.mjs +3 -3
- package/esm2022/lib/components/tags/tags-list/tags-list.component.mjs +5 -5
- package/esm2022/lib/components/tags/tags-tabs/tags-tabs.component.mjs +3 -3
- package/esm2022/lib/components/tips/tip-detail/tip-detail.component.mjs +5 -5
- package/esm2022/lib/components/tips/tips-list/tips-list.component.mjs +3 -3
- package/esm2022/lib/components/tips/tips-tabs/tips-tabs.component.mjs +3 -3
- package/esm2022/lib/components/tracking/ahoy-events/ahoy-events.component.mjs +3 -3
- package/esm2022/lib/components/tracking/ahoy-messages/ahoy-messages.component.mjs +3 -3
- package/esm2022/lib/components/tracking/ahoy-visits/ahoy-visits.component.mjs +3 -3
- package/esm2022/lib/components/tracking/events/events.component.mjs +3 -3
- package/esm2022/lib/components/tracking/tracking-tabs/tracking-tabs.component.mjs +3 -3
- package/esm2022/lib/components/tracking/versions/versions.component.mjs +3 -3
- package/esm2022/lib/components/users/user-details/user-details.component.mjs +7 -7
- package/esm2022/lib/components/users/users-insight/users-insight.component.mjs +6 -6
- package/esm2022/lib/components/users/users-list/users-list.component.mjs +6 -6
- package/esm2022/lib/components/users/users-tabs/users-tabs.component.mjs +3 -3
- package/fesm2022/posiwise-admin-module.mjs +322 -1062
- package/fesm2022/posiwise-admin-module.mjs.map +1 -1
- package/index.d.ts +0 -1
- package/lib/components/TOS/terms-of-service/terms-of-service.component.d.ts +1 -1
- package/lib/components/TOS/terms-of-service-details/terms-of-service-details.component.d.ts +1 -1
- package/lib/components/config/global-config-details/global-config-details.component.d.ts +1 -1
- package/lib/components/config/global-config-list/global-config-list.component.d.ts +1 -1
- package/lib/components/contact-us/contact-us-list/contact-us-list.component.d.ts +1 -1
- package/lib/components/credentials/credentials/credentials.component.d.ts +1 -1
- package/lib/components/credentials/credentials-details/credentials-details.component.d.ts +1 -1
- package/lib/components/credentials/subscription-credentials/subscription-credentials.component.d.ts +1 -1
- package/lib/components/credentials/subscription-credentials-details/subscription-credentials-details.component.d.ts +1 -1
- package/lib/components/domain-config/domain-config-details/domain-config-build/domain-config-build.component.d.ts +1 -1
- package/lib/components/domain-config/domain-config-details/domain-config-core/domain-config-core.component.d.ts +1 -1
- package/lib/components/domain-config/domain-config-details/domain-config-details.component.d.ts +1 -1
- package/lib/components/domain-config/domain-config-details/domain-config-integrations/domain-config-integrations.component.d.ts +1 -1
- package/lib/components/domain-config/domain-config-details/domain-config-interface/domain-config-interface.component.d.ts +1 -1
- package/lib/components/domain-config/domain-config-details/domain-config-organization/domain-config-organization.component.d.ts +1 -1
- package/lib/components/domain-config/domain-config-details/domain-config-security/domain-config-security.component.d.ts +1 -1
- package/lib/components/domain-config/domain-config-details/domain-config-social/domain-config-social.component.d.ts +1 -1
- package/lib/components/domain-config/domain-config-list/domain-config-list.component.d.ts +1 -1
- package/lib/components/faqs/faqs-list/faqs-list.component.d.ts +1 -1
- package/lib/components/feedback-questions/feedback-questions-details/feedback-questions-details.component.d.ts +1 -1
- package/lib/components/feedback-questions/feedback-questions-list/feedback-questions-list.component.d.ts +1 -1
- package/lib/components/generic/generic-misc/generic-misc.component.d.ts +1 -1
- package/lib/components/login-notifications/login-notification-details/login-notification-details.component.d.ts +1 -1
- package/lib/components/login-notifications/login-notifications-list/login-notifications-list.component.d.ts +1 -1
- package/lib/components/newsletters/newsletter-details/newsletter-details.component.d.ts +1 -1
- package/lib/components/newsletters/newsletter-item-details/newsletter-item-details.component.d.ts +1 -1
- package/lib/components/newsletters/newsletter-users-list/newsletter-users-list.component.d.ts +1 -1
- package/lib/components/newsletters/newsletters-insight/newsletters-insight.component.d.ts +1 -1
- package/lib/components/newsletters/newsletters-items/newsletters-items.component.d.ts +1 -1
- package/lib/components/newsletters/newsletters-list/newsletters-list.component.d.ts +1 -1
- package/lib/components/newsletters/newsletters-tabs/newsletters-tabs.component.d.ts +2 -0
- package/lib/components/permissions/permissions-details/permissions-details.component.d.ts +1 -1
- package/lib/components/permissions/permissions-list/permissions-list.component.d.ts +1 -1
- package/lib/components/permissions/role-details/role-details.component.d.ts +1 -1
- package/lib/components/permissions/roles-list/roles-list.component.d.ts +1 -1
- package/lib/components/products/product-details/product-details.component.d.ts +1 -1
- package/lib/components/subscriptions/subscription-agents/subscription-agents.component.d.ts +1 -1
- package/lib/components/subscriptions/subscription-agents-list/subscription-agents-list.component.d.ts +1 -1
- package/lib/components/subscriptions/subscription-details/subscription-details.component.d.ts +1 -1
- package/lib/components/subscriptions/subscription-product-details/subscription-product-details.component.d.ts +1 -1
- package/lib/components/subscriptions/subscriptions-insight/subscription-insight-nps/subscription-insight-nps.component.d.ts +1 -1
- package/lib/components/subscriptions/subscriptions-insight/subscription-insight-revenue/subscription-insight-revenue.component.d.ts +1 -1
- package/lib/components/subscriptions/subscriptions-insight/subscriptions-insight.component.d.ts +1 -1
- package/lib/components/subscriptions/subscriptions-list/subscriptions-list.component.d.ts +1 -1
- package/lib/components/subscriptions/subscriptions-tabs/subscriptions-tabs.component.d.ts +2 -0
- package/lib/components/users/user-details/user-details.component.d.ts +1 -1
- package/lib/components/users/users-insight/users-insight.component.d.ts +1 -1
- package/lib/components/users/users-list/users-list.component.d.ts +1 -1
- package/package.json +3 -3
- package/esm2022/lib/admin.service.mjs +0 -411
- package/esm2022/lib/shared/models/admin.model.mjs +0 -338
- package/lib/admin.service.d.ts +0 -145
- package/lib/shared/models/admin.model.d.ts +0 -29
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { ChangeDetectorRef, Component, Injector, TemplateRef, ViewChild } from '@angular/core';
|
|
2
2
|
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
|
|
3
|
-
import { AdminService } from '
|
|
3
|
+
import { AdminService } from '@posiwise/admin-module-utils';
|
|
4
4
|
import { PAGE_SIZE, SUBSCRIPTION_ANALYTICS_TYPES } from '@posiwise/common-utilities';
|
|
5
5
|
import { AppBaseComponent } from '@posiwise/app-base-component';
|
|
6
6
|
import { HelperService } from '@posiwise/helper-service';
|
|
7
7
|
import { PermissionService, CommonService } from '@posiwise/common-services';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "
|
|
9
|
+
import * as i1 from "@posiwise/admin-module-utils";
|
|
10
10
|
import * as i2 from "@posiwise/common-services";
|
|
11
11
|
import * as i3 from "@ng-bootstrap/ng-bootstrap";
|
|
12
12
|
import * as i4 from "primeng/table";
|
|
@@ -90,14 +90,14 @@ export class SubscriptionInsightNpsComponent extends AppBaseComponent {
|
|
|
90
90
|
ngOnDestroy() {
|
|
91
91
|
super.ngOnDestroy();
|
|
92
92
|
}
|
|
93
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
94
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: SubscriptionInsightNpsComponent, selector: "pw-subscription-insight-nps", viewQueries: [{ propertyName: "content", first: true, predicate: ["showComment"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<!-- selectdate -->\n<div class=\"mb-3\">\n <h5 class=\"mb-4\">Select date</h5>\n <div class=\"row\">\n <!-- startdate -->\n <div class=\"col-12 col-sm-3\">\n <div class=\"input-group\">\n <input class=\"form-control\"\n placeholder=\"start date\"\n [(ngModel)]=\"startDate\"\n (dateSelect)=\"onDateSelect()\"\n ngbDatepicker\n #d=\"ngbDatepicker\" />\n <div class=\"input-group-append\">\n <button class=\"btn btn-primary\"\n (click)=\"d.toggle()\"\n type=\"button\">\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </div>\n <!-- end date -->\n <div class=\"col-12 col-sm-3\">\n <div class=\"input-group\">\n <input class=\"form-control\"\n placeholder=\"end date\"\n [(ngModel)]=\"endDate\"\n (dateSelect)=\"onDateSelect()\"\n ngbDatepicker\n #c=\"ngbDatepicker\" />\n <div class=\"input-group-append\">\n <button class=\"btn btn-primary\"\n (click)=\"c.toggle()\"\n type=\"button\">\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </div>\n </div>\n</div>\n<!-- end -->\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"graphLoading\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n\n<ng-template [ngIf]=\"graph\">\n <plotly-plot [data]=\"graph?.data\"\n [layout]=\"graph?.layout\"></plotly-plot>\n</ng-template>\n\n<div class=\"row m-0\">\n <h2 class=\"card-title p-0 my-4\">User Feedbacks</h2>\n</div>\n\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<div class=\"primeng-datatable-container table-responsive mt-0\"\n [class.hideTable]=\"totalRecords === 0\">\n <p-table #tt\n [value]=\"feedbacks\"\n [paginator]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [filterDelay]=\"1000\"\n [customSort]=\"true\">\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\"\n pSortableColumn=\"created_at\">\n Created At\n <p-sortIcon field=\"created_at\"></p-sortIcon>\n </th>\n <th scope=\"true\">User Name</th>\n <th scope=\"true\">Product Name</th>\n <th scope=\"true\">Feedback Question Name</th>\n <th scope=\"true\">Comment</th>\n <th scope=\"true\"\n pSortableColumn=\"value\">\n Value\n <p-sortIcon field=\"value\"></p-sortIcon>\n </th>\n <th class=\"actions-list-two\"\n scope=\"true\">Action</th>\n </tr>\n </ng-template>\n <!-- Table Body -->\n <ng-template pTemplate=\"body\"\n let-item>\n <tr>\n <td data-head=\"created_at\">{{ item?.created_at | dateFormat }}</td>\n <td data-head=\"user_name\">\n <a [routerLink]=\"['/members/' + item.user_slug]\">{{ item?.user_name }}</a>\n </td>\n <td data-head=\"product_name\">{{ item?.product_name }}</td>\n <td data-head=\"feedback_question_name\">{{ item?.feedback_question_name }}</td>\n <td data-head=\"comment\">\n <button *ngIf=\"item?.comment\"\n class=\"btn btn-sm btn-info\"\n (click)=\"openComment(item?.comment)\">\n Display\n </button>\n </td>\n <td data-head=\"value\">\n <span [ngClass]=\"{'fw-bold text-danger':item?.value <= 6,'fw-bold text-success':item.value>8}\">\n {{ item?.value }}\n </span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline\">\n <ng-template [ngIf]=\"currentUser && item.user_id !== currentUser.id\">\n <li ngbTooltip=\"Send Chat Message\"\n *rbacAllow=\"'Pages.Chat'\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"['/message']\"\n [fragment]=\"item.user_slug\">\n <i class=\"fa fa-comments cta1-icon\" aria-hidden=\"true\"></i>\n </li>\n </ng-template>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <span class=\"total-records-count\">Total: {{ totalRecords }}</span>\n</div>\n<div *ngIf=\"totalRecords === 0 && isLoaded\">\n <pw-no-data message=\"No Feedback Found\"> </pw-no-data>\n</div>\n\n<ng-template #showComment\n let-modal>\n <div class=\"modal-header\">\n <h4 class=\"mb-0\">Comment</h4>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"modal-body\">\n <h6 class=\"text-center modal-basic-title\">{{ commentToShow }}</h6>\n </div>\n</ng-template>\n", dependencies: [{ kind: "component", type: i4.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: i5.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i4.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i4.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i6.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: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: "directive", type: i9.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i10.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i11.NoDataComponent, selector: "pw-no-data", inputs: ["message"] }, { kind: "directive", type: i12.RbacAllowDirective, selector: "[rbacAllow]", inputs: ["rbacAllow"] }, { kind: "directive", type: i3.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "contentTemplate", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "popperOptions", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { kind: "directive", type: i3.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "pipe", type: i13.DateFormatPipe, name: "dateFormat" }] }); }
|
|
93
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: SubscriptionInsightNpsComponent, deps: [{ token: i1.AdminService }, { token: i0.Injector }, { token: i2.CommonService }, { token: i3.NgbModal }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
94
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.1", type: SubscriptionInsightNpsComponent, selector: "pw-subscription-insight-nps", viewQueries: [{ propertyName: "content", first: true, predicate: ["showComment"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<!-- selectdate -->\n<div class=\"mb-3\">\n <h5 class=\"mb-4\">Select date</h5>\n <div class=\"row\">\n <!-- startdate -->\n <div class=\"col-12 col-sm-3\">\n <div class=\"input-group\">\n <input class=\"form-control\"\n placeholder=\"start date\"\n [(ngModel)]=\"startDate\"\n (dateSelect)=\"onDateSelect()\"\n ngbDatepicker\n #d=\"ngbDatepicker\" />\n <div class=\"input-group-append\">\n <button class=\"btn btn-primary\"\n (click)=\"d.toggle()\"\n type=\"button\">\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </div>\n <!-- end date -->\n <div class=\"col-12 col-sm-3\">\n <div class=\"input-group\">\n <input class=\"form-control\"\n placeholder=\"end date\"\n [(ngModel)]=\"endDate\"\n (dateSelect)=\"onDateSelect()\"\n ngbDatepicker\n #c=\"ngbDatepicker\" />\n <div class=\"input-group-append\">\n <button class=\"btn btn-primary\"\n (click)=\"c.toggle()\"\n type=\"button\">\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </div>\n </div>\n</div>\n<!-- end -->\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"graphLoading\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n\n<ng-template [ngIf]=\"graph\">\n <plotly-plot [data]=\"graph?.data\"\n [layout]=\"graph?.layout\"></plotly-plot>\n</ng-template>\n\n<div class=\"row m-0\">\n <h2 class=\"card-title p-0 my-4\">User Feedbacks</h2>\n</div>\n\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<div class=\"primeng-datatable-container table-responsive mt-0\"\n [class.hideTable]=\"totalRecords === 0\">\n <p-table #tt\n [value]=\"feedbacks\"\n [paginator]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [filterDelay]=\"1000\"\n [customSort]=\"true\">\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\"\n pSortableColumn=\"created_at\">\n Created At\n <p-sortIcon field=\"created_at\"></p-sortIcon>\n </th>\n <th scope=\"true\">User Name</th>\n <th scope=\"true\">Product Name</th>\n <th scope=\"true\">Feedback Question Name</th>\n <th scope=\"true\">Comment</th>\n <th scope=\"true\"\n pSortableColumn=\"value\">\n Value\n <p-sortIcon field=\"value\"></p-sortIcon>\n </th>\n <th class=\"actions-list-two\"\n scope=\"true\">Action</th>\n </tr>\n </ng-template>\n <!-- Table Body -->\n <ng-template pTemplate=\"body\"\n let-item>\n <tr>\n <td data-head=\"created_at\">{{ item?.created_at | dateFormat }}</td>\n <td data-head=\"user_name\">\n <a [routerLink]=\"['/members/' + item.user_slug]\">{{ item?.user_name }}</a>\n </td>\n <td data-head=\"product_name\">{{ item?.product_name }}</td>\n <td data-head=\"feedback_question_name\">{{ item?.feedback_question_name }}</td>\n <td data-head=\"comment\">\n <button *ngIf=\"item?.comment\"\n class=\"btn btn-sm btn-info\"\n (click)=\"openComment(item?.comment)\">\n Display\n </button>\n </td>\n <td data-head=\"value\">\n <span [ngClass]=\"{'fw-bold text-danger':item?.value <= 6,'fw-bold text-success':item.value>8}\">\n {{ item?.value }}\n </span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline\">\n <ng-template [ngIf]=\"currentUser && item.user_id !== currentUser.id\">\n <li ngbTooltip=\"Send Chat Message\"\n *rbacAllow=\"'Pages.Chat'\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"['/message']\"\n [fragment]=\"item.user_slug\">\n <i class=\"fa fa-comments cta1-icon\" aria-hidden=\"true\"></i>\n </li>\n </ng-template>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <span class=\"total-records-count\">Total: {{ totalRecords }}</span>\n</div>\n<div *ngIf=\"totalRecords === 0 && isLoaded\">\n <pw-no-data message=\"No Feedback Found\"> </pw-no-data>\n</div>\n\n<ng-template #showComment\n let-modal>\n <div class=\"modal-header\">\n <h4 class=\"mb-0\">Comment</h4>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"modal-body\">\n <h6 class=\"text-center modal-basic-title\">{{ commentToShow }}</h6>\n </div>\n</ng-template>\n", dependencies: [{ kind: "component", type: i4.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: i5.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i4.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i4.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i6.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: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: "directive", type: i9.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i10.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration"] }, { kind: "component", type: i11.NoDataComponent, selector: "pw-no-data", inputs: ["message"] }, { kind: "directive", type: i12.RbacAllowDirective, selector: "[rbacAllow]", inputs: ["rbacAllow"] }, { kind: "directive", type: i3.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "contentTemplate", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "popperOptions", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { kind: "directive", type: i3.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "pipe", type: i13.DateFormatPipe, name: "dateFormat" }] }); }
|
|
95
95
|
}
|
|
96
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
96
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: SubscriptionInsightNpsComponent, decorators: [{
|
|
97
97
|
type: Component,
|
|
98
98
|
args: [{ selector: 'pw-subscription-insight-nps', template: "<!-- selectdate -->\n<div class=\"mb-3\">\n <h5 class=\"mb-4\">Select date</h5>\n <div class=\"row\">\n <!-- startdate -->\n <div class=\"col-12 col-sm-3\">\n <div class=\"input-group\">\n <input class=\"form-control\"\n placeholder=\"start date\"\n [(ngModel)]=\"startDate\"\n (dateSelect)=\"onDateSelect()\"\n ngbDatepicker\n #d=\"ngbDatepicker\" />\n <div class=\"input-group-append\">\n <button class=\"btn btn-primary\"\n (click)=\"d.toggle()\"\n type=\"button\">\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </div>\n <!-- end date -->\n <div class=\"col-12 col-sm-3\">\n <div class=\"input-group\">\n <input class=\"form-control\"\n placeholder=\"end date\"\n [(ngModel)]=\"endDate\"\n (dateSelect)=\"onDateSelect()\"\n ngbDatepicker\n #c=\"ngbDatepicker\" />\n <div class=\"input-group-append\">\n <button class=\"btn btn-primary\"\n (click)=\"c.toggle()\"\n type=\"button\">\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </div>\n </div>\n</div>\n<!-- end -->\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"graphLoading\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n\n<ng-template [ngIf]=\"graph\">\n <plotly-plot [data]=\"graph?.data\"\n [layout]=\"graph?.layout\"></plotly-plot>\n</ng-template>\n\n<div class=\"row m-0\">\n <h2 class=\"card-title p-0 my-4\">User Feedbacks</h2>\n</div>\n\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<div class=\"primeng-datatable-container table-responsive mt-0\"\n [class.hideTable]=\"totalRecords === 0\">\n <p-table #tt\n [value]=\"feedbacks\"\n [paginator]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [filterDelay]=\"1000\"\n [customSort]=\"true\">\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\"\n pSortableColumn=\"created_at\">\n Created At\n <p-sortIcon field=\"created_at\"></p-sortIcon>\n </th>\n <th scope=\"true\">User Name</th>\n <th scope=\"true\">Product Name</th>\n <th scope=\"true\">Feedback Question Name</th>\n <th scope=\"true\">Comment</th>\n <th scope=\"true\"\n pSortableColumn=\"value\">\n Value\n <p-sortIcon field=\"value\"></p-sortIcon>\n </th>\n <th class=\"actions-list-two\"\n scope=\"true\">Action</th>\n </tr>\n </ng-template>\n <!-- Table Body -->\n <ng-template pTemplate=\"body\"\n let-item>\n <tr>\n <td data-head=\"created_at\">{{ item?.created_at | dateFormat }}</td>\n <td data-head=\"user_name\">\n <a [routerLink]=\"['/members/' + item.user_slug]\">{{ item?.user_name }}</a>\n </td>\n <td data-head=\"product_name\">{{ item?.product_name }}</td>\n <td data-head=\"feedback_question_name\">{{ item?.feedback_question_name }}</td>\n <td data-head=\"comment\">\n <button *ngIf=\"item?.comment\"\n class=\"btn btn-sm btn-info\"\n (click)=\"openComment(item?.comment)\">\n Display\n </button>\n </td>\n <td data-head=\"value\">\n <span [ngClass]=\"{'fw-bold text-danger':item?.value <= 6,'fw-bold text-success':item.value>8}\">\n {{ item?.value }}\n </span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline\">\n <ng-template [ngIf]=\"currentUser && item.user_id !== currentUser.id\">\n <li ngbTooltip=\"Send Chat Message\"\n *rbacAllow=\"'Pages.Chat'\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"['/message']\"\n [fragment]=\"item.user_slug\">\n <i class=\"fa fa-comments cta1-icon\" aria-hidden=\"true\"></i>\n </li>\n </ng-template>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <span class=\"total-records-count\">Total: {{ totalRecords }}</span>\n</div>\n<div *ngIf=\"totalRecords === 0 && isLoaded\">\n <pw-no-data message=\"No Feedback Found\"> </pw-no-data>\n</div>\n\n<ng-template #showComment\n let-modal>\n <div class=\"modal-header\">\n <h4 class=\"mb-0\">Comment</h4>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"modal-body\">\n <h6 class=\"text-center modal-basic-title\">{{ commentToShow }}</h6>\n </div>\n</ng-template>\n" }]
|
|
99
99
|
}], ctorParameters: () => [{ type: i1.AdminService }, { type: i0.Injector }, { type: i2.CommonService }, { type: i3.NgbModal }, { type: i0.ChangeDetectorRef }], propDecorators: { content: [{
|
|
100
100
|
type: ViewChild,
|
|
101
101
|
args: ['showComment', { static: true }]
|
|
102
102
|
}] } });
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLWluc2lnaHQtbnBzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9zdWJzY3JpcHRpb25zL3N1YnNjcmlwdGlvbnMtaW5zaWdodC9zdWJzY3JpcHRpb24taW5zaWdodC1ucHMvc3Vic2NyaXB0aW9uLWluc2lnaHQtbnBzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9zdWJzY3JpcHRpb25zL3N1YnNjcmlwdGlvbnMtaW5zaWdodC9zdWJzY3JpcHRpb24taW5zaWdodC1ucHMvc3Vic2NyaXB0aW9uLWluc2lnaHQtbnBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFFBQVEsRUFHUixXQUFXLEVBQ1gsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBaUIsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHckUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNyRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUloRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFNN0UsTUFBTSxPQUFPLCtCQUNULFNBQVEsZ0JBQWdCO0lBNkJ4QixZQUNZLFlBQTBCLEVBQ2xDLFFBQWtCLEVBQ1YsYUFBNEIs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QUNELEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDTixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxZQUFZO1FBQ1IsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3ZCO0lBQ0wsQ0FBQztJQUVRLFdBQVc7UUFDaEIsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7OEdBOUdRLCtCQUErQjtrR0FBL0IsK0JBQStCLGdOQzFCNUMsMDRKQXdKQTs7MkZEOUhhLCtCQUErQjtrQkFKM0MsU0FBUzsrQkFDSSw2QkFBNkI7MkxBT0ssT0FBTztzQkFBbEQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdDaGVja2VkLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBJbmplY3RvcixcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nYkRhdGVTdHJ1Y3QsIE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgTGF6eUxvYWRFdmVudCB9IGZyb20gJ3ByaW1lbmcvYXBpJztcblxuaW1wb3J0IHsgQWRtaW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vYWRtaW4uc2VydmljZSc7XG5pbXBvcnQgeyBQQUdFX1NJWkUsIFNVQlNDUklQVElPTl9BTkFMWVRJQ1NfVFlQRVMgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHBvc2l3aXNlL2FwcC1iYXNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBQYWdpbmcgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBQbG90bHkgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgSGVscGVyU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9oZWxwZXItc2VydmljZSc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uU2VydmljZSwgQ29tbW9uU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3B3LXN1YnNjcmlwdGlvbi1pbnNpZ2h0LW5wcycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3N1YnNjcmlwdGlvbi1pbnNpZ2h0LW5wcy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU3Vic2NyaXB0aW9uSW5zaWdodE5wc0NvbXBvbmVudFxuICAgIGV4dGVuZHMgQXBwQmFzZUNvbXBvbmVudFxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0NoZWNrZWRcbntcbiAgICBAVmlld0NoaWxkKCdzaG93Q29tbWVudCcsIHsgc3RhdGljOiB0cnVlIH0pIGNvbnRlbnQ6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBncmFwaDogUGxvdGx5LkZpZ3VyZTtcblxuICAgIHRvdGFsUmVjb3JkczogbnVtYmVyO1xuXG4gICAgZmVlZGJhY2tzID0gW107XG5cbiAgICBsb2FkaW5nID0gdHJ1ZTtcblxuICAgIGlzTG9hZGVkID0gZmFsc2U7XG5cbiAgICBwYWdlID0gMTtcblxuICAgIGdyYXBoTG9hZGluZzogYm9vbGVhbjtcblxuICAgIHN1YnNjcmlwdGlvbklkOiBudW1iZXI7XG5cbiAgICBjdXJyZW50VXNlcjogVXNlcjtcblxuICAgIGNvbW1lbnRUb1Nob3c6IHN0cmluZztcblxuICAgIHN0YXJ0RGF0ZTogTmdiRGF0ZVN0cnVjdDtcblxuICAgIGVuZERhdGU6IE5nYkRhdGVTdHJ1Y3Q7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBhZG1pblNlcnZpY2U6IEFkbWluU2VydmljZSxcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIGNvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCxcbiAgICAgICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25JZCA9IFBlcm1pc3Npb25TZXJ2aWNlLnNlbGVjdGVkU3Vic2NyaXB0aW9uPy5pZDtcbiAgICAgICAgdGhpcy5nZXRDaGFydERhdGEoKTtcbiAgICAgICAgdGhpcy51c2VyU3RvcmUoKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VXNlciA9IHJlc3BvbnNlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkxhenlMb2FkKGV2ZW50OiBMYXp5TG9hZEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IHBhZ2VEZXRhaWxzID0gSGVscGVyU2VydmljZS5vblRhYmxlTGF6eUxvYWQoZXZlbnQpO1xuICAgICAgICB0aGlzLnBhZ2UgPSBwYWdlRGV0YWlscy5wYWdlO1xuICAgICAgICB0aGlzLmdldEFsbEZlZWRiYWNrcyh7XG4gICAgICAgICAgICBwYWdlOiB0aGlzLnBhZ2UsXG4gICAgICAgICAgICBwYWdlX3NpemU6IFBBR0VfU0laRSxcbiAgICAgICAgICAgIG9yZGVyX2J5OiBwYWdlRGV0YWlscy5zb3J0RmllbGQsXG4gICAgICAgICAgICBvcmRlcl9kaXJlY3Rpb246IHBhZ2VEZXRhaWxzLnNvcnRPcmRlclxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEFsbEZlZWRiYWNrcyhwYWdpbmc6IFBhZ2luZykge1xuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRBbGxVc2VyRmVlZGJhY2tzKHRoaXMuc3Vic2NyaXB0aW9uSWQsIHBhZ2luZylcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZmVlZGJhY2tzID0gcmVzcG9uc2U/LnVzZXJfZmVlZGJhY2tzO1xuICAgICAgICAgICAgICAgIHRoaXMudG90YWxSZWNvcmRzID0gcmVzcG9uc2U/Lm9iamVjdF9jb3VudDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYWRkKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9wZW5Db21tZW50KHZhbDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuY29tbWVudFRvU2hvdyA9IHZhbDtcbiAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih0aGlzLmNvbnRlbnQsIHtcbiAgICAgICAgICAgIGNlbnRlcmVkOiB0cnVlLFxuICAgICAgICAgICAgd2luZG93Q2xhc3M6ICdtb2RhbC1ob2xkZXInXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBGdW5jdGlvbiB0byBnZXQgdGhlIGRhdGEgZm9yIHRoZSBncmFwaCAqL1xuICAgIHByaXZhdGUgZ2V0Q2hhcnREYXRhKCkge1xuICAgICAgICB0aGlzLmdyYXBoTG9hZGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuYWRtaW5TZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0U3Vic2NyaXB0aW9uQW5hbHl0aWNzKFxuICAgICAgICAgICAgICAgIFNVQlNDUklQVElPTl9BTkFMWVRJQ1NfVFlQRVMuTlBTLFxuICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uSWQsXG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydERhdGUgPyBIZWxwZXJTZXJ2aWNlLmRhdGVGb3JtYXQodGhpcy5zdGFydERhdGUpIDogJycsXG4gICAgICAgICAgICAgICAgdGhpcy5lbmREYXRlID8gSGVscGVyU2VydmljZS5kYXRlRm9ybWF0KHRoaXMuZW5kRGF0ZSkgOiAnJ1xuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncmFwaCA9IHJlc3BvbnNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5hZGQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JhcGhMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkRhdGVTZWxlY3QoKSB7XG4gICAgICAgIGlmICh0aGlzLnN0YXJ0RGF0ZSAmJiB0aGlzLmVuZERhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0Q2hhcnREYXRhKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvdmVycmlkZSBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG59XG4iLCI8IS0tIHNlbGVjdGRhdGUgLS0+XG48ZGl2IGNsYXNzPVwibWItM1wiPlxuICA8aDUgY2xhc3M9XCJtYi00XCI+U2VsZWN0IGRhdGU8L2g1PlxuICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgPCEtLSBzdGFydGRhdGUgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tM1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XG4gICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJzdGFydCBkYXRlXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInN0YXJ0RGF0ZVwiXG4gICAgICAgICAgKGRhdGVTZWxlY3QpPVwib25EYXRlU2VsZWN0KClcIlxuICAgICAgICAgIG5nYkRhdGVwaWNrZXJcbiAgICAgICAgICAjZD1cIm5nYkRhdGVwaWNrZXJcIiAvPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtYXBwZW5kXCI+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZC50b2dnbGUoKVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNhbGVuZGFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDwhLS0gZW5kIGRhdGUgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tM1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XG4gICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJlbmQgZGF0ZVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJlbmREYXRlXCJcbiAgICAgICAgICAoZGF0ZVNlbGVjdCk9XCJvbkRhdGVTZWxlY3QoKVwiXG4gICAgICAgICAgbmdiRGF0ZXBpY2tlclxuICAgICAgICAgICNjPVwibmdiRGF0ZXBpY2tlclwiIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1hcHBlbmRcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgICAgIChjbGljayk9XCJjLnRvZ2dsZSgpXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY2FsZW5kYXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG48IS0tIGVuZCAtLT5cbjxkaXYgY2xhc3M9XCJ3LTEwMCB0ZXh0LWNlbnRlciBtdC0zXCJcbiAgKm5nSWY9XCJncmFwaExvYWRpbmdcIj5cbiAgPHAtcHJvZ3Jlc3NTcGlubmVyIHN0cm9rZVdpZHRoPVwiMlwiPiA8L3AtcHJvZ3Jlc3NTcGlubmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSBbbmdJZl09XCJncmFwaFwiPlxuICA8cGxvdGx5LXBsb3QgW2RhdGFdPVwiZ3JhcGg/LmRhdGFcIlxuICAgIFtsYXlvdXRdPVwiZ3JhcGg/LmxheW91dFwiPjwvcGxvdGx5LXBsb3Q+XG48L25nLXRlbXBsYXRlPlxuXG48ZGl2IGNsYXNzPVwicm93IG0tMFwiPlxuICA8aDIgY2xhc3M9XCJjYXJkLXRpdGxlIHAtMCBteS00XCI+VXNlciBGZWVkYmFja3M8L2gyPlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJ3LTEwMCB0ZXh0LWNlbnRlciBtdC0zXCJcbiAgKm5nSWY9XCIhaXNMb2FkZWRcIj5cbiAgPHAtcHJvZ3Jlc3NTcGlubmVyIHN0cm9rZVdpZHRoPVwiMlwiPiA8L3AtcHJvZ3Jlc3NTcGlubmVyPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwicHJpbWVuZy1kYXRhdGFibGUtY29udGFpbmVyIHRhYmxlLXJlc3BvbnNpdmUgbXQtMFwiXG4gIFtjbGFzcy5oaWRlVGFibGVdPVwidG90YWxSZWNvcmRzID09PSAwXCI+XG4gIDxwLXRhYmxlICN0dFxuICAgIFt2YWx1ZV09XCJmZWVkYmFja3NcIlxuICAgIFtwYWdpbmF0b3JdPVwidHJ1ZVwiXG4gICAgW3Jvd3NdPVwiUEFHRV9TSVpFXCJcbiAgICBbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3Jkc1wiXG4gICAgW2xvYWRpbmddPVwibG9hZGluZ1wiXG4gICAgW2xhenldPVwidHJ1ZVwiXG4gICAgKG9uTGF6eUxvYWQpPVwib25MYXp5TG9hZCgkZXZlbnQpXCJcbiAgICBbZmlsdGVyRGVsYXldPVwiMTAwMFwiXG4gICAgW2N1c3RvbVNvcnRdPVwidHJ1ZVwiPlxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cbiAgICAgIDx0cj5cbiAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiXG4gICAgICAgICAgcFNvcnRhYmxlQ29sdW1uPVwiY3JlYXRlZF9hdFwiPlxuICAgICAgICAgIENyZWF0ZWQgQXRcbiAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cImNyZWF0ZWRfYXRcIj48L3Atc29ydEljb24+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0aCBzY29wZT1cInRydWVcIj5Vc2VyIE5hbWU8L3RoPlxuICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCI+UHJvZHVjdCBOYW1lPC90aD5cbiAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiPkZlZWRiYWNrIFF1ZXN0aW9uIE5hbWU8L3RoPlxuICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCI+Q29tbWVudDwvdGg+XG4gICAgICAgIDx0aCBzY29wZT1cInRydWVcIlxuICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cInZhbHVlXCI+XG4gICAgICAgICAgVmFsdWVcbiAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cInZhbHVlXCI+PC9wLXNvcnRJY29uPlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGggY2xhc3M9XCJhY3Rpb25zLWxpc3QtdHdvXCJcbiAgICAgICAgICBzY29wZT1cInRydWVcIj5BY3Rpb248L3RoPlxuICAgICAgPC90cj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwhLS0gVGFibGUgQm9keSAtLT5cbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiXG4gICAgICBsZXQtaXRlbT5cbiAgICAgIDx0cj5cbiAgICAgICAgPHRkIGRhdGEtaGVhZD1cImNyZWF0ZWRfYXRcIj57eyBpdGVtPy5jcmVhdGVkX2F0IHwgZGF0ZUZvcm1hdCB9fTwvdGQ+XG4gICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJ1c2VyX25hbWVcIj5cbiAgICAgICAgICA8YSBbcm91dGVyTGlua109XCJbJy9tZW1iZXJzLycgKyBpdGVtLnVzZXJfc2x1Z11cIj57eyBpdGVtPy51c2VyX25hbWUgfX08L2E+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJwcm9kdWN0X25hbWVcIj57eyBpdGVtPy5wcm9kdWN0X25hbWUgfX08L3RkPlxuICAgICAgICA8dGQgZGF0YS1oZWFkPVwiZmVlZGJhY2tfcXVlc3Rpb25fbmFtZVwiPnt7IGl0ZW0/LmZlZWRiYWNrX3F1ZXN0aW9uX25hbWUgfX08L3RkPlxuICAgICAgICA8dGQgZGF0YS1oZWFkPVwiY29tbWVudFwiPlxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpdGVtPy5jb21tZW50XCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taW5mb1wiXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlbkNvbW1lbnQoaXRlbT8uY29tbWVudClcIj5cbiAgICAgICAgICAgIERpc3BsYXlcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC90ZD5cbiAgICAgICAgPHRkIGRhdGEtaGVhZD1cInZhbHVlXCI+XG4gICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwieydmdy1ib2xkIHRleHQtZGFuZ2VyJzppdGVtPy52YWx1ZSA8PSA2LCdmdy1ib2xkIHRleHQtc3VjY2Vzcyc6aXRlbS52YWx1ZT44fVwiPlxuICAgICAgICAgICAge3sgaXRlbT8udmFsdWUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJBY3Rpb25cIj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LXVuc3R5bGVkIGxpc3QtaW5saW5lXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiY3VycmVudFVzZXIgJiYgaXRlbS51c2VyX2lkICE9PSBjdXJyZW50VXNlci5pZFwiPlxuICAgICAgICAgICAgICA8bGkgbmdiVG9vbHRpcD1cIlNlbmQgQ2hhdCBNZXNzYWdlXCJcbiAgICAgICAgICAgICAgICAqcmJhY0FsbG93PVwiJ1BhZ2VzLkNoYXQnXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTIgbWUtc20tM1wiXG4gICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvbWVzc2FnZSddXCJcbiAgICAgICAgICAgICAgICBbZnJhZ21lbnRdPVwiaXRlbS51c2VyX3NsdWdcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNvbW1lbnRzIGN0YTEtaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9wLXRhYmxlPlxuICA8c3BhbiBjbGFzcz1cInRvdGFsLXJlY29yZHMtY291bnRcIj5Ub3RhbDoge3sgdG90YWxSZWNvcmRzIH19PC9zcGFuPlxuPC9kaXY+XG48ZGl2ICpuZ0lmPVwidG90YWxSZWNvcmRzID09PSAwICYmIGlzTG9hZGVkXCI+XG4gIDxwdy1uby1kYXRhIG1lc3NhZ2U9XCJObyBGZWVkYmFjayBGb3VuZFwiPiA8L3B3LW5vLWRhdGE+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNzaG93Q29tbWVudFxuICBsZXQtbW9kYWw+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cbiAgICA8aDQgY2xhc3M9XCJtYi0wXCI+Q29tbWVudDwvaDQ+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiYnRuLWNsb3NlIGZsb2F0LWVuZFwiXG4gICAgICBhcmlhLWxhYmVsPVwiQ2xvc2VcIlxuICAgICAgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxuXG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgIDxoNiBjbGFzcz1cInRleHQtY2VudGVyIG1vZGFsLWJhc2ljLXRpdGxlXCI+e3sgY29tbWVudFRvU2hvdyB9fTwvaDY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLWluc2lnaHQtbnBzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9zdWJzY3JpcHRpb25zL3N1YnNjcmlwdGlvbnMtaW5zaWdodC9zdWJzY3JpcHRpb24taW5zaWdodC1ucHMvc3Vic2NyaXB0aW9uLWluc2lnaHQtbnBzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9zdWJzY3JpcHRpb25zL3N1YnNjcmlwdGlvbnMtaW5zaWdodC9zdWJzY3JpcHRpb24taW5zaWdodC1ucHMvc3Vic2NyaXB0aW9uLWluc2lnaHQtbnBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFFBQVEsRUFHUixXQUFXLEVBQ1gsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBaUIsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHckUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBRSxTQUFTLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNyRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUloRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFNN0UsTUFBTSxPQUFPLCtCQUNULFNBQVEsZ0JBQWdCO0lBNkJ4QixZQUNZLFlBQTBCLEVBQ2xDLFFBQWtCLEVBQ1YsYUFBNEIs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QUNELEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDTixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxZQUFZO1FBQ1IsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3ZCO0lBQ0wsQ0FBQztJQUVRLFdBQVc7UUFDaEIsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7OEdBOUdRLCtCQUErQjtrR0FBL0IsK0JBQStCLGdOQzFCNUMsMDRKQXdKQTs7MkZEOUhhLCtCQUErQjtrQkFKM0MsU0FBUzsrQkFDSSw2QkFBNkI7MkxBT0ssT0FBTztzQkFBbEQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdDaGVja2VkLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBJbmplY3RvcixcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nYkRhdGVTdHJ1Y3QsIE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgTGF6eUxvYWRFdmVudCB9IGZyb20gJ3ByaW1lbmcvYXBpJztcblxuaW1wb3J0IHsgQWRtaW5TZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2FkbWluLW1vZHVsZS11dGlscyc7XG5pbXBvcnQgeyBQQUdFX1NJWkUsIFNVQlNDUklQVElPTl9BTkFMWVRJQ1NfVFlQRVMgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHBvc2l3aXNlL2FwcC1iYXNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBQYWdpbmcgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBQbG90bHkgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgSGVscGVyU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9oZWxwZXItc2VydmljZSc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uU2VydmljZSwgQ29tbW9uU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3B3LXN1YnNjcmlwdGlvbi1pbnNpZ2h0LW5wcycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3N1YnNjcmlwdGlvbi1pbnNpZ2h0LW5wcy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU3Vic2NyaXB0aW9uSW5zaWdodE5wc0NvbXBvbmVudFxuICAgIGV4dGVuZHMgQXBwQmFzZUNvbXBvbmVudFxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0NoZWNrZWRcbntcbiAgICBAVmlld0NoaWxkKCdzaG93Q29tbWVudCcsIHsgc3RhdGljOiB0cnVlIH0pIGNvbnRlbnQ6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBncmFwaDogUGxvdGx5LkZpZ3VyZTtcblxuICAgIHRvdGFsUmVjb3JkczogbnVtYmVyO1xuXG4gICAgZmVlZGJhY2tzID0gW107XG5cbiAgICBsb2FkaW5nID0gdHJ1ZTtcblxuICAgIGlzTG9hZGVkID0gZmFsc2U7XG5cbiAgICBwYWdlID0gMTtcblxuICAgIGdyYXBoTG9hZGluZzogYm9vbGVhbjtcblxuICAgIHN1YnNjcmlwdGlvbklkOiBudW1iZXI7XG5cbiAgICBjdXJyZW50VXNlcjogVXNlcjtcblxuICAgIGNvbW1lbnRUb1Nob3c6IHN0cmluZztcblxuICAgIHN0YXJ0RGF0ZTogTmdiRGF0ZVN0cnVjdDtcblxuICAgIGVuZERhdGU6IE5nYkRhdGVTdHJ1Y3Q7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBhZG1pblNlcnZpY2U6IEFkbWluU2VydmljZSxcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIGNvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCxcbiAgICAgICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25JZCA9IFBlcm1pc3Npb25TZXJ2aWNlLnNlbGVjdGVkU3Vic2NyaXB0aW9uPy5pZDtcbiAgICAgICAgdGhpcy5nZXRDaGFydERhdGEoKTtcbiAgICAgICAgdGhpcy51c2VyU3RvcmUoKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VXNlciA9IHJlc3BvbnNlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkxhenlMb2FkKGV2ZW50OiBMYXp5TG9hZEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IHBhZ2VEZXRhaWxzID0gSGVscGVyU2VydmljZS5vblRhYmxlTGF6eUxvYWQoZXZlbnQpO1xuICAgICAgICB0aGlzLnBhZ2UgPSBwYWdlRGV0YWlscy5wYWdlO1xuICAgICAgICB0aGlzLmdldEFsbEZlZWRiYWNrcyh7XG4gICAgICAgICAgICBwYWdlOiB0aGlzLnBhZ2UsXG4gICAgICAgICAgICBwYWdlX3NpemU6IFBBR0VfU0laRSxcbiAgICAgICAgICAgIG9yZGVyX2J5OiBwYWdlRGV0YWlscy5zb3J0RmllbGQsXG4gICAgICAgICAgICBvcmRlcl9kaXJlY3Rpb246IHBhZ2VEZXRhaWxzLnNvcnRPcmRlclxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEFsbEZlZWRiYWNrcyhwYWdpbmc6IFBhZ2luZykge1xuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRBbGxVc2VyRmVlZGJhY2tzKHRoaXMuc3Vic2NyaXB0aW9uSWQsIHBhZ2luZylcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZmVlZGJhY2tzID0gcmVzcG9uc2U/LnVzZXJfZmVlZGJhY2tzO1xuICAgICAgICAgICAgICAgIHRoaXMudG90YWxSZWNvcmRzID0gcmVzcG9uc2U/Lm9iamVjdF9jb3VudDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYWRkKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9wZW5Db21tZW50KHZhbDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuY29tbWVudFRvU2hvdyA9IHZhbDtcbiAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih0aGlzLmNvbnRlbnQsIHtcbiAgICAgICAgICAgIGNlbnRlcmVkOiB0cnVlLFxuICAgICAgICAgICAgd2luZG93Q2xhc3M6ICdtb2RhbC1ob2xkZXInXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBGdW5jdGlvbiB0byBnZXQgdGhlIGRhdGEgZm9yIHRoZSBncmFwaCAqL1xuICAgIHByaXZhdGUgZ2V0Q2hhcnREYXRhKCkge1xuICAgICAgICB0aGlzLmdyYXBoTG9hZGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuYWRtaW5TZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0U3Vic2NyaXB0aW9uQW5hbHl0aWNzKFxuICAgICAgICAgICAgICAgIFNVQlNDUklQVElPTl9BTkFMWVRJQ1NfVFlQRVMuTlBTLFxuICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uSWQsXG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydERhdGUgPyBIZWxwZXJTZXJ2aWNlLmRhdGVGb3JtYXQodGhpcy5zdGFydERhdGUpIDogJycsXG4gICAgICAgICAgICAgICAgdGhpcy5lbmREYXRlID8gSGVscGVyU2VydmljZS5kYXRlRm9ybWF0KHRoaXMuZW5kRGF0ZSkgOiAnJ1xuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncmFwaCA9IHJlc3BvbnNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5hZGQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JhcGhMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkRhdGVTZWxlY3QoKSB7XG4gICAgICAgIGlmICh0aGlzLnN0YXJ0RGF0ZSAmJiB0aGlzLmVuZERhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0Q2hhcnREYXRhKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvdmVycmlkZSBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG59XG4iLCI8IS0tIHNlbGVjdGRhdGUgLS0+XG48ZGl2IGNsYXNzPVwibWItM1wiPlxuICA8aDUgY2xhc3M9XCJtYi00XCI+U2VsZWN0IGRhdGU8L2g1PlxuICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgPCEtLSBzdGFydGRhdGUgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tM1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XG4gICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJzdGFydCBkYXRlXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInN0YXJ0RGF0ZVwiXG4gICAgICAgICAgKGRhdGVTZWxlY3QpPVwib25EYXRlU2VsZWN0KClcIlxuICAgICAgICAgIG5nYkRhdGVwaWNrZXJcbiAgICAgICAgICAjZD1cIm5nYkRhdGVwaWNrZXJcIiAvPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtYXBwZW5kXCI+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZC50b2dnbGUoKVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNhbGVuZGFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDwhLS0gZW5kIGRhdGUgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tM1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XG4gICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJlbmQgZGF0ZVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJlbmREYXRlXCJcbiAgICAgICAgICAoZGF0ZVNlbGVjdCk9XCJvbkRhdGVTZWxlY3QoKVwiXG4gICAgICAgICAgbmdiRGF0ZXBpY2tlclxuICAgICAgICAgICNjPVwibmdiRGF0ZXBpY2tlclwiIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1hcHBlbmRcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgICAgIChjbGljayk9XCJjLnRvZ2dsZSgpXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY2FsZW5kYXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG48IS0tIGVuZCAtLT5cbjxkaXYgY2xhc3M9XCJ3LTEwMCB0ZXh0LWNlbnRlciBtdC0zXCJcbiAgKm5nSWY9XCJncmFwaExvYWRpbmdcIj5cbiAgPHAtcHJvZ3Jlc3NTcGlubmVyIHN0cm9rZVdpZHRoPVwiMlwiPiA8L3AtcHJvZ3Jlc3NTcGlubmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSBbbmdJZl09XCJncmFwaFwiPlxuICA8cGxvdGx5LXBsb3QgW2RhdGFdPVwiZ3JhcGg/LmRhdGFcIlxuICAgIFtsYXlvdXRdPVwiZ3JhcGg/LmxheW91dFwiPjwvcGxvdGx5LXBsb3Q+XG48L25nLXRlbXBsYXRlPlxuXG48ZGl2IGNsYXNzPVwicm93IG0tMFwiPlxuICA8aDIgY2xhc3M9XCJjYXJkLXRpdGxlIHAtMCBteS00XCI+VXNlciBGZWVkYmFja3M8L2gyPlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJ3LTEwMCB0ZXh0LWNlbnRlciBtdC0zXCJcbiAgKm5nSWY9XCIhaXNMb2FkZWRcIj5cbiAgPHAtcHJvZ3Jlc3NTcGlubmVyIHN0cm9rZVdpZHRoPVwiMlwiPiA8L3AtcHJvZ3Jlc3NTcGlubmVyPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwicHJpbWVuZy1kYXRhdGFibGUtY29udGFpbmVyIHRhYmxlLXJlc3BvbnNpdmUgbXQtMFwiXG4gIFtjbGFzcy5oaWRlVGFibGVdPVwidG90YWxSZWNvcmRzID09PSAwXCI+XG4gIDxwLXRhYmxlICN0dFxuICAgIFt2YWx1ZV09XCJmZWVkYmFja3NcIlxuICAgIFtwYWdpbmF0b3JdPVwidHJ1ZVwiXG4gICAgW3Jvd3NdPVwiUEFHRV9TSVpFXCJcbiAgICBbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3Jkc1wiXG4gICAgW2xvYWRpbmddPVwibG9hZGluZ1wiXG4gICAgW2xhenldPVwidHJ1ZVwiXG4gICAgKG9uTGF6eUxvYWQpPVwib25MYXp5TG9hZCgkZXZlbnQpXCJcbiAgICBbZmlsdGVyRGVsYXldPVwiMTAwMFwiXG4gICAgW2N1c3RvbVNvcnRdPVwidHJ1ZVwiPlxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cbiAgICAgIDx0cj5cbiAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiXG4gICAgICAgICAgcFNvcnRhYmxlQ29sdW1uPVwiY3JlYXRlZF9hdFwiPlxuICAgICAgICAgIENyZWF0ZWQgQXRcbiAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cImNyZWF0ZWRfYXRcIj48L3Atc29ydEljb24+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0aCBzY29wZT1cInRydWVcIj5Vc2VyIE5hbWU8L3RoPlxuICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCI+UHJvZHVjdCBOYW1lPC90aD5cbiAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiPkZlZWRiYWNrIFF1ZXN0aW9uIE5hbWU8L3RoPlxuICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCI+Q29tbWVudDwvdGg+XG4gICAgICAgIDx0aCBzY29wZT1cInRydWVcIlxuICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cInZhbHVlXCI+XG4gICAgICAgICAgVmFsdWVcbiAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cInZhbHVlXCI+PC9wLXNvcnRJY29uPlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGggY2xhc3M9XCJhY3Rpb25zLWxpc3QtdHdvXCJcbiAgICAgICAgICBzY29wZT1cInRydWVcIj5BY3Rpb248L3RoPlxuICAgICAgPC90cj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwhLS0gVGFibGUgQm9keSAtLT5cbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiXG4gICAgICBsZXQtaXRlbT5cbiAgICAgIDx0cj5cbiAgICAgICAgPHRkIGRhdGEtaGVhZD1cImNyZWF0ZWRfYXRcIj57eyBpdGVtPy5jcmVhdGVkX2F0IHwgZGF0ZUZvcm1hdCB9fTwvdGQ+XG4gICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJ1c2VyX25hbWVcIj5cbiAgICAgICAgICA8YSBbcm91dGVyTGlua109XCJbJy9tZW1iZXJzLycgKyBpdGVtLnVzZXJfc2x1Z11cIj57eyBpdGVtPy51c2VyX25hbWUgfX08L2E+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJwcm9kdWN0X25hbWVcIj57eyBpdGVtPy5wcm9kdWN0X25hbWUgfX08L3RkPlxuICAgICAgICA8dGQgZGF0YS1oZWFkPVwiZmVlZGJhY2tfcXVlc3Rpb25fbmFtZVwiPnt7IGl0ZW0/LmZlZWRiYWNrX3F1ZXN0aW9uX25hbWUgfX08L3RkPlxuICAgICAgICA8dGQgZGF0YS1oZWFkPVwiY29tbWVudFwiPlxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpdGVtPy5jb21tZW50XCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taW5mb1wiXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlbkNvbW1lbnQoaXRlbT8uY29tbWVudClcIj5cbiAgICAgICAgICAgIERpc3BsYXlcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC90ZD5cbiAgICAgICAgPHRkIGRhdGEtaGVhZD1cInZhbHVlXCI+XG4gICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwieydmdy1ib2xkIHRleHQtZGFuZ2VyJzppdGVtPy52YWx1ZSA8PSA2LCdmdy1ib2xkIHRleHQtc3VjY2Vzcyc6aXRlbS52YWx1ZT44fVwiPlxuICAgICAgICAgICAge3sgaXRlbT8udmFsdWUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJBY3Rpb25cIj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LXVuc3R5bGVkIGxpc3QtaW5saW5lXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiY3VycmVudFVzZXIgJiYgaXRlbS51c2VyX2lkICE9PSBjdXJyZW50VXNlci5pZFwiPlxuICAgICAgICAgICAgICA8bGkgbmdiVG9vbHRpcD1cIlNlbmQgQ2hhdCBNZXNzYWdlXCJcbiAgICAgICAgICAgICAgICAqcmJhY0FsbG93PVwiJ1BhZ2VzLkNoYXQnXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTIgbWUtc20tM1wiXG4gICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvbWVzc2FnZSddXCJcbiAgICAgICAgICAgICAgICBbZnJhZ21lbnRdPVwiaXRlbS51c2VyX3NsdWdcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNvbW1lbnRzIGN0YTEtaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9wLXRhYmxlPlxuICA8c3BhbiBjbGFzcz1cInRvdGFsLXJlY29yZHMtY291bnRcIj5Ub3RhbDoge3sgdG90YWxSZWNvcmRzIH19PC9zcGFuPlxuPC9kaXY+XG48ZGl2ICpuZ0lmPVwidG90YWxSZWNvcmRzID09PSAwICYmIGlzTG9hZGVkXCI+XG4gIDxwdy1uby1kYXRhIG1lc3NhZ2U9XCJObyBGZWVkYmFjayBGb3VuZFwiPiA8L3B3LW5vLWRhdGE+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNzaG93Q29tbWVudFxuICBsZXQtbW9kYWw+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cbiAgICA8aDQgY2xhc3M9XCJtYi0wXCI+Q29tbWVudDwvaDQ+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiYnRuLWNsb3NlIGZsb2F0LWVuZFwiXG4gICAgICBhcmlhLWxhYmVsPVwiQ2xvc2VcIlxuICAgICAgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxuXG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgIDxoNiBjbGFzcz1cInRleHQtY2VudGVyIG1vZGFsLWJhc2ljLXRpdGxlXCI+e3sgY29tbWVudFRvU2hvdyB9fTwvaDY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Component, Injector } from '@angular/core';
|
|
2
2
|
import { SUBSCRIPTION_ANALYTICS_TYPES } from '@posiwise/common-utilities';
|
|
3
|
-
import { AdminService } from '
|
|
3
|
+
import { AdminService } from '@posiwise/admin-module-utils';
|
|
4
4
|
import { AppBaseComponent } from '@posiwise/app-base-component';
|
|
5
5
|
import { HelperService } from '@posiwise/helper-service';
|
|
6
6
|
import { PermissionService } from '@posiwise/common-services';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "
|
|
8
|
+
import * as i1 from "@posiwise/admin-module-utils";
|
|
9
9
|
import * as i2 from "angular-plotly.js";
|
|
10
10
|
import * as i3 from "@angular/common";
|
|
11
11
|
import * as i4 from "@angular/forms";
|
|
@@ -40,11 +40,11 @@ export class SubscriptionInsightRevenueComponent extends AppBaseComponent {
|
|
|
40
40
|
ngOnDestroy() {
|
|
41
41
|
super.ngOnDestroy();
|
|
42
42
|
}
|
|
43
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
44
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
43
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: SubscriptionInsightRevenueComponent, deps: [{ token: i1.AdminService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
44
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.1", type: SubscriptionInsightRevenueComponent, selector: "pw-subscription-insight-revenue", usesInheritance: true, ngImport: i0, template: "<!-- selectdate -->\n<div class=\"mb-3\">\n <h5 class=\"mb-4\">Select date</h5>\n <div class=\"row\">\n <!-- startdate -->\n <div class=\"col-12 col-sm-3\">\n <div class=\"input-group\">\n <input class=\"form-control\"\n placeholder=\"start date\"\n [(ngModel)]=\"startDate\"\n (dateSelect)=\"onDateSelect()\"\n ngbDatepicker\n #d=\"ngbDatepicker\" />\n <div class=\"input-group-append\">\n <button class=\"btn btn-primary\"\n (click)=\"d.toggle()\"\n type=\"button\">\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </div>\n <!-- end date -->\n <div class=\"col-12 col-sm-3\">\n <div class=\"input-group\">\n <input class=\"form-control\"\n placeholder=\"end date\"\n [(ngModel)]=\"endDate\"\n (dateSelect)=\"onDateSelect()\"\n ngbDatepicker\n #c=\"ngbDatepicker\" />\n <div class=\"input-group-append\">\n <button class=\"btn btn-primary\"\n (click)=\"c.toggle()\"\n type=\"button\">\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </div>\n </div>\n</div>\n<!-- end -->\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"loading\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<ng-template [ngIf]=\"graph\">\n <plotly-plot [data]=\"graph?.data\"\n [layout]=\"graph?.layout\"></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: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration"] }, { kind: "directive", type: i6.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "contentTemplate", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "popperOptions", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }] }); }
|
|
45
45
|
}
|
|
46
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
46
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: SubscriptionInsightRevenueComponent, decorators: [{
|
|
47
47
|
type: Component,
|
|
48
48
|
args: [{ selector: 'pw-subscription-insight-revenue', template: "<!-- selectdate -->\n<div class=\"mb-3\">\n <h5 class=\"mb-4\">Select date</h5>\n <div class=\"row\">\n <!-- startdate -->\n <div class=\"col-12 col-sm-3\">\n <div class=\"input-group\">\n <input class=\"form-control\"\n placeholder=\"start date\"\n [(ngModel)]=\"startDate\"\n (dateSelect)=\"onDateSelect()\"\n ngbDatepicker\n #d=\"ngbDatepicker\" />\n <div class=\"input-group-append\">\n <button class=\"btn btn-primary\"\n (click)=\"d.toggle()\"\n type=\"button\">\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </div>\n <!-- end date -->\n <div class=\"col-12 col-sm-3\">\n <div class=\"input-group\">\n <input class=\"form-control\"\n placeholder=\"end date\"\n [(ngModel)]=\"endDate\"\n (dateSelect)=\"onDateSelect()\"\n ngbDatepicker\n #c=\"ngbDatepicker\" />\n <div class=\"input-group-append\">\n <button class=\"btn btn-primary\"\n (click)=\"c.toggle()\"\n type=\"button\">\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </div>\n </div>\n</div>\n<!-- end -->\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"loading\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<ng-template [ngIf]=\"graph\">\n <plotly-plot [data]=\"graph?.data\"\n [layout]=\"graph?.layout\"></plotly-plot>\n</ng-template>\n" }]
|
|
49
49
|
}], ctorParameters: () => [{ type: i1.AdminService }, { type: i0.Injector }] });
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLWluc2lnaHQtcmV2ZW51ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FkbWluLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvc3Vic2NyaXB0aW9ucy9zdWJzY3JpcHRpb25zLWluc2lnaHQvc3Vic2NyaXB0aW9uLWluc2lnaHQtcmV2ZW51ZS9zdWJzY3JpcHRpb24taW5zaWdodC1yZXZlbnVlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9zdWJzY3JpcHRpb25zL3N1YnNjcmlwdGlvbnMtaW5zaWdodC9zdWJzY3JpcHRpb24taW5zaWdodC1yZXZlbnVlL3N1YnNjcmlwdGlvbi1pbnNpZ2h0LXJldmVudWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBR3ZFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7O0FBTTlELE1BQU0sT0FBTyxtQ0FDVCxTQUFRLGdCQUFnQjtJQWF4QixZQUFvQixZQUEwQixFQUFFLFFBQWtCO1FBQzlELEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQURBLGlCQUFZLEdBQVosWUFBWSxDQUFjO0lBRTlDLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUM7UUFDakUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCw2Q0FBNkM7SUFDckMsWUFBWTtRQUNoQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsWUFBWTthQUNaLHdCQUF3QixDQUNyQiw0QkFBNEIsQ0FBQyxRQUFRLEVBQ3JDLElBQUksQ0FBQyxjQUFjLEVBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQzlELElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQzdEO2FBQ0EsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO1FBQzFCLENBQUMsQ0FBQzthQUNELEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDTixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxZQUFZO1FBQ1IsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3ZCO0lBQ0wsQ0FBQztJQUVRLFdBQVc7UUFDaEIsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7OEdBakRRLG1DQUFtQztrR0FBbkMsbUNBQW1DLDhGQ2RoRCwyakRBbURBOzsyRkRyQ2EsbUNBQW1DO2tCQUovQyxTQUFTOytCQUNJLGlDQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0b3IsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ2JEYXRlU3RydWN0IH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuXG5pbXBvcnQgeyBTVUJTQ1JJUFRJT05fQU5BTFlUSUNTX1RZUEVTIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgQWRtaW5TZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2FkbWluLW1vZHVsZS11dGlscyc7XG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHBvc2l3aXNlL2FwcC1iYXNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbG90bHkgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2hlbHBlci1zZXJ2aWNlJztcbmltcG9ydCB7IFBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi1zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctc3Vic2NyaXB0aW9uLWluc2lnaHQtcmV2ZW51ZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3N1YnNjcmlwdGlvbi1pbnNpZ2h0LXJldmVudWUuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFN1YnNjcmlwdGlvbkluc2lnaHRSZXZlbnVlQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveVxue1xuICAgIGdyYXBoOiBQbG90bHkuRmlndXJlO1xuXG4gICAgc3Vic2NyaXB0aW9uSWQ6IG51bWJlcjtcblxuICAgIGxvYWRpbmc6IGJvb2xlYW47XG5cbiAgICBzdGFydERhdGU6IE5nYkRhdGVTdHJ1Y3Q7XG5cbiAgICBlbmREYXRlOiBOZ2JEYXRlU3RydWN0O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBhZG1pblNlcnZpY2U6IEFkbWluU2VydmljZSwgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25JZCA9IFBlcm1pc3Npb25TZXJ2aWNlLnNlbGVjdGVkU3Vic2NyaXB0aW9uPy5pZDtcbiAgICAgICAgdGhpcy5nZXRDaGFydERhdGEoKTtcbiAgICB9XG5cbiAgICAvKiogRnVuY3Rpb24gdG8gZ2V0IHRoZSBkYXRhIGZvciB0aGUgZ3JhcGggKi9cbiAgICBwcml2YXRlIGdldENoYXJ0RGF0YSgpIHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5hZG1pblNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRTdWJzY3JpcHRpb25BbmFseXRpY3MoXG4gICAgICAgICAgICAgICAgU1VCU0NSSVBUSU9OX0FOQUxZVElDU19UWVBFUy5SRVZFTlVFUyxcbiAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbklkLFxuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnREYXRlID8gSGVscGVyU2VydmljZS5kYXRlRm9ybWF0KHRoaXMuc3RhcnREYXRlKSA6ICcnLFxuICAgICAgICAgICAgICAgIHRoaXMuZW5kRGF0ZSA/IEhlbHBlclNlcnZpY2UuZGF0ZUZvcm1hdCh0aGlzLmVuZERhdGUpIDogJydcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JhcGggPSByZXNwb25zZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYWRkKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uRGF0ZVNlbGVjdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuc3RhcnREYXRlICYmIHRoaXMuZW5kRGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5nZXRDaGFydERhdGEoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG92ZXJyaWRlIG5nT25EZXN0cm95KCkge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cbn1cbiIsIjwhLS0gc2VsZWN0ZGF0ZSAtLT5cbjxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gIDxoNSBjbGFzcz1cIm1iLTRcIj5TZWxlY3QgZGF0ZTwvaDU+XG4gIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICA8IS0tIHN0YXJ0ZGF0ZSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS0zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cInN0YXJ0IGRhdGVcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwic3RhcnREYXRlXCJcbiAgICAgICAgICAoZGF0ZVNlbGVjdCk9XCJvbkRhdGVTZWxlY3QoKVwiXG4gICAgICAgICAgbmdiRGF0ZXBpY2tlclxuICAgICAgICAgICNkPVwibmdiRGF0ZXBpY2tlclwiIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1hcHBlbmRcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgICAgIChjbGljayk9XCJkLnRvZ2dsZSgpXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY2FsZW5kYXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBlbmQgZGF0ZSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS0zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cImVuZCBkYXRlXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImVuZERhdGVcIlxuICAgICAgICAgIChkYXRlU2VsZWN0KT1cIm9uRGF0ZVNlbGVjdCgpXCJcbiAgICAgICAgICBuZ2JEYXRlcGlja2VyXG4gICAgICAgICAgI2M9XCJuZ2JEYXRlcGlja2VyXCIgLz5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImMudG9nZ2xlKClcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jYWxlbmRhclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjwhLS0gZW5kIC0tPlxuPGRpdiBjbGFzcz1cInctMTAwIHRleHQtY2VudGVyIG10LTNcIlxuICAqbmdJZj1cImxvYWRpbmdcIj5cbiAgPHAtcHJvZ3Jlc3NTcGlubmVyIHN0cm9rZVdpZHRoPVwiMlwiPiA8L3AtcHJvZ3Jlc3NTcGlubmVyPlxuPC9kaXY+XG48bmctdGVtcGxhdGUgW25nSWZdPVwiZ3JhcGhcIj5cbiAgPHBsb3RseS1wbG90IFtkYXRhXT1cImdyYXBoPy5kYXRhXCJcbiAgICBbbGF5b3V0XT1cImdyYXBoPy5sYXlvdXRcIj48L3Bsb3RseS1wbG90PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -8,10 +8,10 @@ export class SubscriptionInsightTabsComponent {
|
|
|
8
8
|
constructor() {
|
|
9
9
|
this.activeTab = 'growth';
|
|
10
10
|
}
|
|
11
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
12
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
11
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: SubscriptionInsightTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.1", type: SubscriptionInsightTabsComponent, selector: "pw-admin-subscription-insight-tabs", ngImport: i0, template: "<div class=\"my-3 title\">\n <h2 class=\"card-title p-0\">Subscriptions Insight</h2>\n</div>\n\n<ul ngbNav\n #nav=\"ngbNav\"\n [(activeId)]=\"activeTab\"\n [destroyOnHide]=\"true\"\n class=\"nav-tabs\">\n <li [ngbNavItem]=\"'growth'\">\n <a ngbNavLink>Growth</a>\n <ng-template ngbNavContent>\n <pw-admin-subscription-insight></pw-admin-subscription-insight>\n </ng-template>\n </li>\n <li [ngbNavItem]=\"'revenues'\">\n <a ngbNavLink>Revenues</a>\n <ng-template ngbNavContent>\n <pw-subscription-insight-revenue></pw-subscription-insight-revenue>\n </ng-template>\n </li>\n <li [ngbNavItem]=\"'nps'\">\n <a ngbNavLink>Net Promoter Score</a>\n <ng-template ngbNavContent>\n <pw-subscription-insight-nps></pw-subscription-insight-nps>\n </ng-template>\n </li>\n</ul>\n\n<div [ngbNavOutlet]=\"nav\"></div>\n", styles: [".title{height:30px}\n"], dependencies: [{ kind: "directive", type: i1.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { kind: "directive", type: i1.NgbNav, selector: "[ngbNav]", inputs: ["activeId", "animation", "destroyOnHide", "orientation", "roles", "keyboard"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { kind: "directive", type: i1.NgbNavItem, selector: "[ngbNavItem]", inputs: ["destroyOnHide", "disabled", "domId", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { kind: "directive", type: i1.NgbNavItemRole, selector: "[ngbNavItem]:not(ng-container)" }, { kind: "directive", type: i1.NgbNavLink, selector: "a[ngbNavLink]" }, { kind: "directive", type: i1.NgbNavLinkBase, selector: "[ngbNavLink]" }, { kind: "component", type: i1.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { kind: "component", type: i2.InsightComponent, selector: "pw-admin-subscription-insight" }, { kind: "component", type: i3.SubscriptionInsightNpsComponent, selector: "pw-subscription-insight-nps" }, { kind: "component", type: i4.SubscriptionInsightRevenueComponent, selector: "pw-subscription-insight-revenue" }] }); }
|
|
13
13
|
}
|
|
14
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: SubscriptionInsightTabsComponent, decorators: [{
|
|
15
15
|
type: Component,
|
|
16
16
|
args: [{ selector: 'pw-admin-subscription-insight-tabs', template: "<div class=\"my-3 title\">\n <h2 class=\"card-title p-0\">Subscriptions Insight</h2>\n</div>\n\n<ul ngbNav\n #nav=\"ngbNav\"\n [(activeId)]=\"activeTab\"\n [destroyOnHide]=\"true\"\n class=\"nav-tabs\">\n <li [ngbNavItem]=\"'growth'\">\n <a ngbNavLink>Growth</a>\n <ng-template ngbNavContent>\n <pw-admin-subscription-insight></pw-admin-subscription-insight>\n </ng-template>\n </li>\n <li [ngbNavItem]=\"'revenues'\">\n <a ngbNavLink>Revenues</a>\n <ng-template ngbNavContent>\n <pw-subscription-insight-revenue></pw-subscription-insight-revenue>\n </ng-template>\n </li>\n <li [ngbNavItem]=\"'nps'\">\n <a ngbNavLink>Net Promoter Score</a>\n <ng-template ngbNavContent>\n <pw-subscription-insight-nps></pw-subscription-insight-nps>\n </ng-template>\n </li>\n</ul>\n\n<div [ngbNavOutlet]=\"nav\"></div>\n", styles: [".title{height:30px}\n"] }]
|
|
17
17
|
}] });
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Component, Injector } from '@angular/core';
|
|
2
|
-
import { AdminService } from '
|
|
2
|
+
import { AdminService } from '@posiwise/admin-module-utils';
|
|
3
3
|
import { SUBSCRIPTION_ANALYTICS_TYPES } from '@posiwise/common-utilities';
|
|
4
4
|
import { AppBaseComponent } from '@posiwise/app-base-component';
|
|
5
5
|
import { HelperService } from '@posiwise/helper-service';
|
|
6
6
|
import { PermissionService } from '@posiwise/common-services';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "
|
|
8
|
+
import * as i1 from "@posiwise/admin-module-utils";
|
|
9
9
|
import * as i2 from "angular-plotly.js";
|
|
10
10
|
import * as i3 from "@angular/common";
|
|
11
11
|
import * as i4 from "@angular/forms";
|
|
@@ -40,11 +40,11 @@ export class InsightComponent extends AppBaseComponent {
|
|
|
40
40
|
ngOnDestroy() {
|
|
41
41
|
super.ngOnDestroy();
|
|
42
42
|
}
|
|
43
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
44
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
43
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: InsightComponent, deps: [{ token: i1.AdminService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
44
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.1", type: InsightComponent, selector: "pw-admin-subscription-insight", usesInheritance: true, ngImport: i0, template: "<!-- selectdate -->\n<div class=\"mb-3\">\n <h5 class=\"mb-4\">Select date</h5>\n <div class=\"row\">\n <!-- startdate -->\n <div class=\"col-12 col-sm-3\">\n <div class=\"input-group\">\n <input class=\"form-control\"\n placeholder=\"start date\"\n [(ngModel)]=\"startDate\"\n (dateSelect)=\"onDateSelect()\"\n ngbDatepicker\n #d=\"ngbDatepicker\" />\n <div class=\"input-group-append\">\n <button class=\"btn btn-primary\"\n (click)=\"d.toggle()\"\n type=\"button\">\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </div>\n <!-- end date -->\n <div class=\"col-12 col-sm-3\">\n <div class=\"input-group\">\n <input class=\"form-control\"\n placeholder=\"end date\"\n [(ngModel)]=\"endDate\"\n (dateSelect)=\"onDateSelect()\"\n ngbDatepicker\n #c=\"ngbDatepicker\" />\n <div class=\"input-group-append\">\n <button class=\"btn btn-primary\"\n (click)=\"c.toggle()\"\n type=\"button\">\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </div>\n </div>\n</div>\n<!-- end -->\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"loading\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<ng-template [ngIf]=\"graph\">\n <plotly-plot [data]=\"graph?.data\"\n [layout]=\"graph?.layout\"></plotly-plot>\n</ng-template>\n", styles: [".title{height:30px}\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: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration"] }, { kind: "directive", type: i6.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "contentTemplate", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "popperOptions", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }] }); }
|
|
45
45
|
}
|
|
46
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
46
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: InsightComponent, decorators: [{
|
|
47
47
|
type: Component,
|
|
48
48
|
args: [{ selector: 'pw-admin-subscription-insight', template: "<!-- selectdate -->\n<div class=\"mb-3\">\n <h5 class=\"mb-4\">Select date</h5>\n <div class=\"row\">\n <!-- startdate -->\n <div class=\"col-12 col-sm-3\">\n <div class=\"input-group\">\n <input class=\"form-control\"\n placeholder=\"start date\"\n [(ngModel)]=\"startDate\"\n (dateSelect)=\"onDateSelect()\"\n ngbDatepicker\n #d=\"ngbDatepicker\" />\n <div class=\"input-group-append\">\n <button class=\"btn btn-primary\"\n (click)=\"d.toggle()\"\n type=\"button\">\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </div>\n <!-- end date -->\n <div class=\"col-12 col-sm-3\">\n <div class=\"input-group\">\n <input class=\"form-control\"\n placeholder=\"end date\"\n [(ngModel)]=\"endDate\"\n (dateSelect)=\"onDateSelect()\"\n ngbDatepicker\n #c=\"ngbDatepicker\" />\n <div class=\"input-group-append\">\n <button class=\"btn btn-primary\"\n (click)=\"c.toggle()\"\n type=\"button\">\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </div>\n </div>\n</div>\n<!-- end -->\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"loading\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<ng-template [ngIf]=\"graph\">\n <plotly-plot [data]=\"graph?.data\"\n [layout]=\"graph?.layout\"></plotly-plot>\n</ng-template>\n", styles: [".title{height:30px}\n"] }]
|
|
49
49
|
}], ctorParameters: () => [{ type: i1.AdminService }, { type: i0.Injector }] });
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9ucy1pbnNpZ2h0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9zdWJzY3JpcHRpb25zL3N1YnNjcmlwdGlvbnMtaW5zaWdodC9zdWJzY3JpcHRpb25zLWluc2lnaHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hZG1pbi1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL3N1YnNjcmlwdGlvbnMvc3Vic2NyaXB0aW9ucy1pbnNpZ2h0L3N1YnNjcmlwdGlvbnMtaW5zaWdodC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFHdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7QUFPOUQsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGdCQUFnQjtJQVdsRCxZQUFvQixZQUEwQixFQUFFLFFBQWtCO1FBQzlELEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQURBLGlCQUFZLEdBQVosWUFBWSxDQUFjO0lBRTlDLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUM7UUFDakUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCw2Q0FBNkM7SUFDckMsWUFBWTtRQUNoQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsWUFBWTthQUNaLHdCQUF3QixDQUNyQiw0QkFBNEIsQ0FBQyxhQUFhLEVBQzFDLElBQUksQ0FBQyxjQUFjLEVBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQzlELElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQzdEO2FBQ0EsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO1FBQzFCLENBQUMsQ0FBQzthQUNELEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDTixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxZQUFZO1FBQ1IsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3ZCO0lBQ0wsQ0FBQztJQUVRLFdBQVc7UUFDaEIsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7OEdBOUNRLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLDRGQ2Y3QiwyakRBbURBOzsyRkRwQ2EsZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNJLCtCQUErQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0b3IsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ2JEYXRlU3RydWN0IH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuXG5pbXBvcnQgeyBBZG1pblNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvYWRtaW4tbW9kdWxlLXV0aWxzJztcbmltcG9ydCB7IFNVQlNDUklQVElPTl9BTkFMWVRJQ1NfVFlQRVMgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHBvc2l3aXNlL2FwcC1iYXNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbG90bHkgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2hlbHBlci1zZXJ2aWNlJztcbmltcG9ydCB7IFBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi1zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctYWRtaW4tc3Vic2NyaXB0aW9uLWluc2lnaHQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zdWJzY3JpcHRpb25zLWluc2lnaHQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3N1YnNjcmlwdGlvbnMtaW5zaWdodC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEluc2lnaHRDb21wb25lbnQgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIGdyYXBoOiBQbG90bHkuRmlndXJlO1xuXG4gICAgc3Vic2NyaXB0aW9uSWQ6IG51bWJlcjtcblxuICAgIGxvYWRpbmc6IGJvb2xlYW47XG5cbiAgICBzdGFydERhdGU6IE5nYkRhdGVTdHJ1Y3Q7XG5cbiAgICBlbmREYXRlOiBOZ2JEYXRlU3RydWN0O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBhZG1pblNlcnZpY2U6IEFkbWluU2VydmljZSwgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25JZCA9IFBlcm1pc3Npb25TZXJ2aWNlLnNlbGVjdGVkU3Vic2NyaXB0aW9uPy5pZDtcbiAgICAgICAgdGhpcy5nZXRDaGFydERhdGEoKTtcbiAgICB9XG5cbiAgICAvKiogRnVuY3Rpb24gdG8gZ2V0IHRoZSBkYXRhIGZvciB0aGUgZ3JhcGggKi9cbiAgICBwcml2YXRlIGdldENoYXJ0RGF0YSgpIHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5hZG1pblNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRTdWJzY3JpcHRpb25BbmFseXRpY3MoXG4gICAgICAgICAgICAgICAgU1VCU0NSSVBUSU9OX0FOQUxZVElDU19UWVBFUy5TVUJTQ1JJUFRJT05TLFxuICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uSWQsXG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydERhdGUgPyBIZWxwZXJTZXJ2aWNlLmRhdGVGb3JtYXQodGhpcy5zdGFydERhdGUpIDogJycsXG4gICAgICAgICAgICAgICAgdGhpcy5lbmREYXRlID8gSGVscGVyU2VydmljZS5kYXRlRm9ybWF0KHRoaXMuZW5kRGF0ZSkgOiAnJ1xuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncmFwaCA9IHJlc3BvbnNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5hZGQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25EYXRlU2VsZWN0KCkge1xuICAgICAgICBpZiAodGhpcy5zdGFydERhdGUgJiYgdGhpcy5lbmREYXRlKSB7XG4gICAgICAgICAgICB0aGlzLmdldENoYXJ0RGF0YSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufVxuIiwiPCEtLSBzZWxlY3RkYXRlIC0tPlxuPGRpdiBjbGFzcz1cIm1iLTNcIj5cbiAgPGg1IGNsYXNzPVwibWItNFwiPlNlbGVjdCBkYXRlPC9oNT5cbiAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgIDwhLS0gc3RhcnRkYXRlIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxuICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwic3RhcnQgZGF0ZVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzdGFydERhdGVcIlxuICAgICAgICAgIChkYXRlU2VsZWN0KT1cIm9uRGF0ZVNlbGVjdCgpXCJcbiAgICAgICAgICBuZ2JEYXRlcGlja2VyXG4gICAgICAgICAgI2Q9XCJuZ2JEYXRlcGlja2VyXCIgLz5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImQudG9nZ2xlKClcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jYWxlbmRhclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIGVuZCBkYXRlIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxuICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZW5kIGRhdGVcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiZW5kRGF0ZVwiXG4gICAgICAgICAgKGRhdGVTZWxlY3QpPVwib25EYXRlU2VsZWN0KClcIlxuICAgICAgICAgIG5nYkRhdGVwaWNrZXJcbiAgICAgICAgICAjYz1cIm5nYkRhdGVwaWNrZXJcIiAvPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtYXBwZW5kXCI+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYy50b2dnbGUoKVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNhbGVuZGFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPCEtLSBlbmQgLS0+XG48ZGl2IGNsYXNzPVwidy0xMDAgdGV4dC1jZW50ZXIgbXQtM1wiXG4gICpuZ0lmPVwibG9hZGluZ1wiPlxuICA8cC1wcm9ncmVzc1NwaW5uZXIgc3Ryb2tlV2lkdGg9XCIyXCI+IDwvcC1wcm9ncmVzc1NwaW5uZXI+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSBbbmdJZl09XCJncmFwaFwiPlxuICA8cGxvdGx5LXBsb3QgW2RhdGFdPVwiZ3JhcGg/LmRhdGFcIlxuICAgIFtsYXlvdXRdPVwiZ3JhcGg/LmxheW91dFwiPjwvcGxvdGx5LXBsb3Q+XG48L25nLXRlbXBsYXRlPlxuIl19
|