@sachin9822/reports-lib 0.0.210 → 0.0.212
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/karma.conf.js +44 -0
- package/ng-package.json +17 -0
- package/package.json +16 -31
- package/src/assets/images/BreadcrumbArrow.png +0 -0
- package/src/lib/assets/images/Search.svg +10 -0
- package/src/lib/assets/images/XMLogo.png +0 -0
- package/src/lib/components/acc-gl-details-enquiry-report/acc-gl-details-enquiry-report.component.html +27 -0
- package/src/lib/components/acc-gl-details-enquiry-report/acc-gl-details-enquiry-report.component.scss +46 -0
- package/src/lib/components/acc-gl-details-enquiry-report/acc-gl-details-enquiry-report.component.spec.ts +23 -0
- package/src/lib/components/acc-gl-details-enquiry-report/acc-gl-details-enquiry-report.component.ts +292 -0
- package/src/lib/components/accounting-report/accounting-report.component.html +64 -0
- package/src/lib/components/accounting-report/accounting-report.component.scss +24 -0
- package/src/lib/components/accounting-report/accounting-report.component.spec.ts +23 -0
- package/src/lib/components/accounting-report/accounting-report.component.ts +738 -0
- package/src/lib/components/branch-activity-receive-report/branch-activity-receive-report.component.html +46 -0
- package/src/lib/components/branch-activity-receive-report/branch-activity-receive-report.component.scss +2 -0
- package/src/lib/components/branch-activity-receive-report/branch-activity-receive-report.component.spec.ts +23 -0
- package/src/lib/components/branch-activity-receive-report/branch-activity-receive-report.component.ts +247 -0
- package/src/lib/components/branch-activity-send-report/branch-activity-send-report.component.html +46 -0
- package/src/lib/components/branch-activity-send-report/branch-activity-send-report.component.scss +3 -0
- package/src/lib/components/branch-activity-send-report/branch-activity-send-report.component.spec.ts +23 -0
- package/src/lib/components/branch-activity-send-report/branch-activity-send-report.component.ts +276 -0
- package/src/lib/components/branch-activity-send-summary-report/branch-activity-send-summary-report.component.html +51 -0
- package/src/lib/components/branch-activity-send-summary-report/branch-activity-send-summary-report.component.scss +7 -0
- package/src/lib/components/branch-activity-send-summary-report/branch-activity-send-summary-report.component.spec.ts +23 -0
- package/src/lib/components/branch-activity-send-summary-report/branch-activity-send-summary-report.component.ts +840 -0
- package/src/lib/components/cancellation-transaction-report/cancellation-transaction-report.component.html +68 -0
- package/src/lib/components/cancellation-transaction-report/cancellation-transaction-report.component.scss +65 -0
- package/src/lib/components/cancellation-transaction-report/cancellation-transaction-report.component.spec.ts +23 -0
- package/src/lib/components/cancellation-transaction-report/cancellation-transaction-report.component.ts +290 -0
- package/src/lib/components/credit-limit-status-enquiry-report/credit-limit-status-enquiry-report.component.html +25 -0
- package/src/lib/components/credit-limit-status-enquiry-report/credit-limit-status-enquiry-report.component.scss +1 -0
- package/src/lib/components/credit-limit-status-enquiry-report/credit-limit-status-enquiry-report.component.spec.ts +23 -0
- package/src/lib/components/credit-limit-status-enquiry-report/credit-limit-status-enquiry-report.component.ts +213 -0
- package/src/lib/components/funding-report/funding-report.component.html +49 -0
- package/src/lib/components/funding-report/funding-report.component.scss +1 -0
- package/src/lib/components/funding-report/funding-report.component.spec.ts +23 -0
- package/src/lib/components/funding-report/funding-report.component.ts +221 -0
- package/src/lib/components/revenue-per-transaction-report/revenue-per-transaction-report.component.html +26 -0
- package/src/lib/components/revenue-per-transaction-report/revenue-per-transaction-report.component.scss +1 -0
- package/src/lib/components/revenue-per-transaction-report/revenue-per-transaction-report.component.spec.ts +23 -0
- package/src/lib/components/revenue-per-transaction-report/revenue-per-transaction-report.component.ts +267 -0
- package/src/lib/components/statement-of-accounts-report/statement-of-accounts-report.component.html +95 -0
- package/src/lib/components/statement-of-accounts-report/statement-of-accounts-report.component.scss +54 -0
- package/src/lib/components/statement-of-accounts-report/statement-of-accounts-report.component.spec.ts +23 -0
- package/src/lib/components/statement-of-accounts-report/statement-of-accounts-report.component.ts +904 -0
- package/src/lib/components/transaction-enquiry-report/transaction-enquiry-report.component.html +49 -0
- package/src/lib/components/transaction-enquiry-report/transaction-enquiry-report.component.scss +2 -0
- package/src/lib/components/transaction-enquiry-report/transaction-enquiry-report.component.spec.ts +32 -0
- package/src/lib/components/transaction-enquiry-report/transaction-enquiry-report.component.ts +304 -0
- package/src/lib/components/transaction-monitoring-report/transaction-monitoring-report.component.html +46 -0
- package/src/lib/components/transaction-monitoring-report/transaction-monitoring-report.component.scss +7 -0
- package/src/lib/components/transaction-monitoring-report/transaction-monitoring-report.component.ts +343 -0
- package/src/lib/components/trial-balance-accounts-report/trial-balance-accounts-report.component.html +25 -0
- package/src/lib/components/trial-balance-accounts-report/trial-balance-accounts-report.component.scss +23 -0
- package/src/lib/components/trial-balance-accounts-report/trial-balance-accounts-report.component.spec.ts +23 -0
- package/src/lib/components/trial-balance-accounts-report/trial-balance-accounts-report.component.ts +745 -0
- package/src/lib/models/acc-gl-details-enquiry-report/accgl-details-enquiry-reportmodel.ts +10 -0
- package/src/lib/models/acc-gl-details-enquiry-report/journal-voucher-entry-model.ts +20 -0
- package/src/lib/models/accounting-report/accounting-report-branch-group.ts +7 -0
- package/src/lib/models/accounting-report/accounting-report-entry-model.ts +25 -0
- package/src/lib/models/accounting-report/accounting-report-model.ts +7 -0
- package/{lib/models/accounting-report/accounting-report-sub-group.d.ts → src/lib/models/accounting-report/accounting-report-sub-group.ts} +3 -2
- package/{lib/models/app-config.model.d.ts → src/lib/models/app-config.model.ts} +8 -7
- package/src/lib/models/branch-activity-receive-report/branch-activity-receive.model.ts +18 -0
- package/src/lib/models/branch-activity-report/branch-activity-send-report-request-domain-model.ts +16 -0
- package/src/lib/models/branch-activity-report/branch-activity-send-report.ts +26 -0
- package/src/lib/models/cancellation-transaction-report/cancellation-transaction.model.ts +65 -0
- package/src/lib/models/component-loading-states.ts +5 -0
- package/src/lib/models/credit-limit-status-enquiry-report/credit-limit-status-enquiry.model.ts +28 -0
- package/{lib/models/revenue-per-transaction-report/revenue-per-transaction.model.d.ts → src/lib/models/revenue-per-transaction-report/revenue-per-transaction.model.ts} +1 -1
- package/src/lib/models/statement-of-account-report/statement-of-accounts.model.ts +21 -0
- package/src/lib/models/transaction-enquiry-report/transaction-enquiry.model.ts +127 -0
- package/src/lib/models/transaction-monitoring-report/transaction-monitoring-report-request-domain-model.ts +16 -0
- package/src/lib/models/transaction-monitoring-report/transaction-monitoring-report.ts +29 -0
- package/src/lib/models/trial-balance-accounts-report/trial-balance-accounts.models.ts +46 -0
- package/src/lib/reports-lib-routing.module.ts +20 -0
- package/src/lib/reports-lib.component.spec.ts +23 -0
- package/src/lib/reports-lib.component.ts +20 -0
- package/src/lib/reports-lib.module.ts +102 -0
- package/src/lib/reports-lib.service.spec.ts +16 -0
- package/src/lib/reports-lib.service.ts +9 -0
- package/src/lib/services/config.service.ts +43 -0
- package/src/lib/services/report.service.spec.ts +16 -0
- package/src/lib/services/report.service.ts +463 -0
- package/src/lib/shared/export-generic.service.ts +557 -0
- package/src/lib/shared/export.service.spec.ts +16 -0
- package/src/lib/shared/export.service.ts +457 -0
- package/src/lib/shared/loader/loader.component.html +8 -0
- package/src/lib/shared/loader/loader.component.scss +52 -0
- package/src/lib/shared/loader/loader.component.ts +10 -0
- package/src/lib/shared/metadata/metadata.component.html +42 -0
- package/src/lib/shared/metadata/metadata.component.scss +95 -0
- package/src/lib/shared/metadata/metadata.component.spec.ts +23 -0
- package/src/lib/shared/metadata/metadata.component.ts +38 -0
- package/src/lib/shared/page-size-selector/page-size-selector.component.html +7 -0
- package/src/lib/shared/page-size-selector/page-size-selector.component.scss +42 -0
- package/src/lib/shared/page-size-selector/page-size-selector.component.spec.ts +23 -0
- package/src/lib/shared/page-size-selector/page-size-selector.component.ts +38 -0
- package/src/lib/shared/search-filter/search-filter.component.html +601 -0
- package/src/lib/shared/search-filter/search-filter.component.scss +203 -0
- package/src/lib/shared/search-filter/search-filter.component.spec.ts +23 -0
- package/src/lib/shared/search-filter/search-filter.component.ts +2387 -0
- package/src/lib/shared/shared.module.ts +13 -0
- package/{public-api.d.ts → src/public-api.ts} +17 -7
- package/src/styles/ag-grid-report-style.scss +71 -0
- package/src/styles/common-ag-grid-style.scss +146 -0
- package/src/styles/common-report-style.scss +395 -0
- package/src/styles/common-style.scss +615 -0
- package/src/test.ts +27 -0
- package/tsconfig.lib.json +15 -0
- package/tsconfig.lib.prod.json +10 -0
- package/tsconfig.spec.json +17 -0
- package/esm2020/lib/components/acc-gl-details-enquiry-report/acc-gl-details-enquiry-report.component.mjs +0 -240
- package/esm2020/lib/components/accounting-report/accounting-report.component.mjs +0 -596
- package/esm2020/lib/components/branch-activity-receive-report/branch-activity-receive-report.component.mjs +0 -218
- package/esm2020/lib/components/branch-activity-send-report/branch-activity-send-report.component.mjs +0 -243
- package/esm2020/lib/components/branch-activity-send-summary-report/branch-activity-send-summary-report.component.mjs +0 -700
- package/esm2020/lib/components/cancellation-transaction-report/cancellation-transaction-report.component.mjs +0 -255
- package/esm2020/lib/components/credit-limit-status-enquiry-report/credit-limit-status-enquiry-report.component.mjs +0 -192
- package/esm2020/lib/components/funding-report/funding-report.component.mjs +0 -198
- package/esm2020/lib/components/revenue-per-transaction-report/revenue-per-transaction-report.component.mjs +0 -244
- package/esm2020/lib/components/statement-of-accounts-report/statement-of-accounts-report.component.mjs +0 -776
- package/esm2020/lib/components/transaction-enquiry-report/transaction-enquiry-report.component.mjs +0 -266
- package/esm2020/lib/components/transaction-monitoring-report/transaction-monitoring-report.component.mjs +0 -311
- package/esm2020/lib/components/trial-balance-accounts-report/trial-balance-accounts-report.component.mjs +0 -631
- package/esm2020/lib/models/acc-gl-details-enquiry-report/accgl-details-enquiry-reportmodel.mjs +0 -2
- package/esm2020/lib/models/acc-gl-details-enquiry-report/journal-voucher-entry-model.mjs +0 -2
- package/esm2020/lib/models/accounting-report/accounting-report-branch-group.mjs +0 -2
- package/esm2020/lib/models/accounting-report/accounting-report-entry-model.mjs +0 -2
- package/esm2020/lib/models/accounting-report/accounting-report-model.mjs +0 -2
- package/esm2020/lib/models/accounting-report/accounting-report-sub-group.mjs +0 -2
- package/esm2020/lib/models/app-config.model.mjs +0 -2
- package/esm2020/lib/models/branch-activity-receive-report/branch-activity-receive.model.mjs +0 -2
- package/esm2020/lib/models/branch-activity-report/branch-activity-send-report-request-domain-model.mjs +0 -6
- package/esm2020/lib/models/branch-activity-report/branch-activity-send-report.mjs +0 -3
- package/esm2020/lib/models/cancellation-transaction-report/cancellation-transaction.model.mjs +0 -10
- package/esm2020/lib/models/component-loading-states.mjs +0 -7
- package/esm2020/lib/models/credit-limit-status-enquiry-report/credit-limit-status-enquiry.model.mjs +0 -5
- package/esm2020/lib/models/revenue-per-transaction-report/revenue-per-transaction.model.mjs +0 -2
- package/esm2020/lib/models/statement-of-account-report/statement-of-accounts.model.mjs +0 -2
- package/esm2020/lib/models/transaction-enquiry-report/transaction-enquiry.model.mjs +0 -8
- package/esm2020/lib/models/transaction-monitoring-report/transaction-monitoring-report-request-domain-model.mjs +0 -6
- package/esm2020/lib/models/transaction-monitoring-report/transaction-monitoring-report.mjs +0 -5
- package/esm2020/lib/models/trial-balance-accounts-report/trial-balance-accounts.models.mjs +0 -3
- package/esm2020/lib/reports-lib-routing.module.mjs +0 -24
- package/esm2020/lib/reports-lib.component.mjs +0 -22
- package/esm2020/lib/reports-lib.module.mjs +0 -172
- package/esm2020/lib/reports-lib.service.mjs +0 -14
- package/esm2020/lib/services/config.service.mjs +0 -39
- package/esm2020/lib/services/report.service.mjs +0 -374
- package/esm2020/lib/shared/export-generic.service.mjs +0 -443
- package/esm2020/lib/shared/export.service.mjs +0 -379
- package/esm2020/lib/shared/loader/loader.component.mjs +0 -11
- package/esm2020/lib/shared/metadata/metadata.component.mjs +0 -51
- package/esm2020/lib/shared/page-size-selector/page-size-selector.component.mjs +0 -44
- package/esm2020/lib/shared/search-filter/search-filter.component.mjs +0 -2134
- package/esm2020/lib/shared/shared.module.mjs +0 -21
- package/esm2020/public-api.mjs +0 -41
- package/esm2020/sachin9822-reports-lib.mjs +0 -5
- package/fesm2015/sachin9822-reports-lib.mjs +0 -8402
- package/fesm2015/sachin9822-reports-lib.mjs.map +0 -1
- package/fesm2020/sachin9822-reports-lib.mjs +0 -8384
- package/fesm2020/sachin9822-reports-lib.mjs.map +0 -1
- package/index.d.ts +0 -5
- package/lib/components/acc-gl-details-enquiry-report/acc-gl-details-enquiry-report.component.d.ts +0 -70
- package/lib/components/accounting-report/accounting-report.component.d.ts +0 -76
- package/lib/components/branch-activity-receive-report/branch-activity-receive-report.component.d.ts +0 -58
- package/lib/components/branch-activity-send-report/branch-activity-send-report.component.d.ts +0 -69
- package/lib/components/branch-activity-send-summary-report/branch-activity-send-summary-report.component.d.ts +0 -78
- package/lib/components/cancellation-transaction-report/cancellation-transaction-report.component.d.ts +0 -95
- package/lib/components/credit-limit-status-enquiry-report/credit-limit-status-enquiry-report.component.d.ts +0 -55
- package/lib/components/funding-report/funding-report.component.d.ts +0 -55
- package/lib/components/revenue-per-transaction-report/revenue-per-transaction-report.component.d.ts +0 -57
- package/lib/components/statement-of-accounts-report/statement-of-accounts-report.component.d.ts +0 -109
- package/lib/components/transaction-enquiry-report/transaction-enquiry-report.component.d.ts +0 -76
- package/lib/components/transaction-monitoring-report/transaction-monitoring-report.component.d.ts +0 -68
- package/lib/components/trial-balance-accounts-report/trial-balance-accounts-report.component.d.ts +0 -71
- package/lib/models/acc-gl-details-enquiry-report/accgl-details-enquiry-reportmodel.d.ts +0 -8
- package/lib/models/acc-gl-details-enquiry-report/journal-voucher-entry-model.d.ts +0 -18
- package/lib/models/accounting-report/accounting-report-branch-group.d.ts +0 -6
- package/lib/models/accounting-report/accounting-report-entry-model.d.ts +0 -24
- package/lib/models/accounting-report/accounting-report-model.d.ts +0 -6
- package/lib/models/branch-activity-receive-report/branch-activity-receive.model.d.ts +0 -18
- package/lib/models/branch-activity-report/branch-activity-send-report-request-domain-model.d.ts +0 -13
- package/lib/models/branch-activity-report/branch-activity-send-report.d.ts +0 -24
- package/lib/models/cancellation-transaction-report/cancellation-transaction.model.d.ts +0 -44
- package/lib/models/component-loading-states.d.ts +0 -5
- package/lib/models/credit-limit-status-enquiry-report/credit-limit-status-enquiry.model.d.ts +0 -26
- package/lib/models/statement-of-account-report/statement-of-accounts.model.d.ts +0 -18
- package/lib/models/transaction-enquiry-report/transaction-enquiry.model.d.ts +0 -113
- package/lib/models/transaction-monitoring-report/transaction-monitoring-report-request-domain-model.d.ts +0 -13
- package/lib/models/transaction-monitoring-report/transaction-monitoring-report.d.ts +0 -23
- package/lib/models/trial-balance-accounts-report/trial-balance-accounts.models.d.ts +0 -38
- package/lib/reports-lib-routing.module.d.ts +0 -7
- package/lib/reports-lib.component.d.ts +0 -8
- package/lib/reports-lib.module.d.ts +0 -33
- package/lib/reports-lib.service.d.ts +0 -6
- package/lib/services/config.service.d.ts +0 -20
- package/lib/services/report.service.d.ts +0 -80
- package/lib/shared/export-generic.service.d.ts +0 -50
- package/lib/shared/export.service.d.ts +0 -32
- package/lib/shared/loader/loader.component.d.ts +0 -5
- package/lib/shared/metadata/metadata.component.d.ts +0 -24
- package/lib/shared/page-size-selector/page-size-selector.component.d.ts +0 -15
- package/lib/shared/search-filter/search-filter.component.d.ts +0 -127
- package/lib/shared/shared.module.d.ts +0 -11
- /package/{lib → src}/assets/images/Search.svg +0 -0
- /package/{lib/assets/images/XMLogo.png → src/assets/images/XMCoral.png} +0 -0
- /package/{lib → src/lib}/assets/config/app-config.json +0 -0
- /package/{lib → src/lib}/assets/svg-loaders/blue-tail-spin.svg +0 -0
|
@@ -1,244 +0,0 @@
|
|
|
1
|
-
import { Component, inject } from '@angular/core';
|
|
2
|
-
import { ReportService } from '../../services/report.service';
|
|
3
|
-
import { ExportService } from '../../shared/export.service';
|
|
4
|
-
import { ComponentLoadingStates } from '../../models/component-loading-states';
|
|
5
|
-
import { formatDate } from '@angular/common';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "ag-grid-angular";
|
|
8
|
-
import * as i2 from "@angular/common";
|
|
9
|
-
import * as i3 from "../../shared/page-size-selector/page-size-selector.component";
|
|
10
|
-
import * as i4 from "../../shared/metadata/metadata.component";
|
|
11
|
-
import * as i5 from "../../shared/loader/loader.component";
|
|
12
|
-
import * as i6 from "../../shared/search-filter/search-filter.component";
|
|
13
|
-
export class RevenuePerTransactionReportComponent {
|
|
14
|
-
constructor() {
|
|
15
|
-
this.data = [];
|
|
16
|
-
this.filteredData = [];
|
|
17
|
-
this.user = "";
|
|
18
|
-
this.sysUserId = "";
|
|
19
|
-
this.ReportName = "Revenue Per Transaction";
|
|
20
|
-
this.reportService = inject(ReportService);
|
|
21
|
-
this.exportService = inject(ExportService);
|
|
22
|
-
this.ComponentLoadingState = ComponentLoadingStates;
|
|
23
|
-
this.loadingState = ComponentLoadingStates.Complete;
|
|
24
|
-
this.searchText = '';
|
|
25
|
-
this.pageSize = 15;
|
|
26
|
-
this.showReport = false;
|
|
27
|
-
this.noDataFound = false;
|
|
28
|
-
this.isFormValid = false;
|
|
29
|
-
this.columnDefs = [
|
|
30
|
-
{ field: 'businessDate', headerName: 'Business Date', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, tooltipField: 'businessDate' },
|
|
31
|
-
{ field: 'payInDate', headerName: 'Send Date', flex: 1, headerClass: 'ag-header-cell', minWidth: 100, tooltipField: 'payInDate' },
|
|
32
|
-
{ field: 'payOutDate', headerName: 'Receive Date', flex: 1, headerClass: 'ag-header-cell', minWidth: 100, wrapText: true, autoHeight: true, tooltipField: 'payOutDate' },
|
|
33
|
-
{ field: 'transactionNumber', headerName: 'Transaction Number', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, tooltipField: 'transactionNumber' },
|
|
34
|
-
{ field: 'productCode', headerName: 'Product', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, tooltipField: 'productCode' },
|
|
35
|
-
{ field: 'sendCountry', headerName: 'Send Country', flex: 1, headerClass: 'ag-header-cell', minWidth: 120, wrapText: true, autoHeight: true, tooltipField: 'sendCountry' },
|
|
36
|
-
{ field: 'sendAgentName', headerName: 'SendClient Name', flex: 1, headerClass: 'ag-header-cell', minWidth: 120, wrapText: true, autoHeight: true, tooltipField: 'sendAgentName' },
|
|
37
|
-
{ field: 'sendAgentCode', headerName: 'SendClient Code', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, tooltipField: 'sendAgentCode' },
|
|
38
|
-
{ field: 'sendAgentBranchCode', headerName: 'SendClient BranchCode', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, tooltipField: 'sendAgentBranchCode' },
|
|
39
|
-
{ field: 'receiveCountry', headerName: 'Receive Country', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, tooltipField: 'receiveCountry' },
|
|
40
|
-
{ field: 'receiveAgentName', headerName: 'ReceiveClient Name', flex: 1, headerClass: 'ag-header-cell', minWidth: 150, wrapText: true, autoHeight: true, tooltipField: 'receiveAgentName' },
|
|
41
|
-
{ field: 'receiveAgentCode', headerName: 'ReceiveClient Code', flex: 1, headerClass: 'ag-header-cell', minWidth: 90, wrapText: true, autoHeight: true, tooltipField: 'receiveAgentCode' },
|
|
42
|
-
{ field: 'payInCurrency', headerName: 'Send CcyCode', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, tooltipField: 'payInCurrency' },
|
|
43
|
-
{ field: 'payInAmount', headerName: 'Send Amount', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'payInAmount' },
|
|
44
|
-
{ field: 'transactionCommission', headerName: 'Service Fee', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'transactionCommission' },
|
|
45
|
-
{ field: 'usdRate', headerName: 'USD Rate', flex: 1, headerClass: 'ag-header-cell', wrapText: true, minWidth: 80, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'usdRate' },
|
|
46
|
-
{ field: 'ezRemitSellMargin', headerName: 'XM SellMargin', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'ezRemitSellMargin' },
|
|
47
|
-
{ field: 'ezRemitSellRate', headerName: 'XM SellRate', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'ezRemitSellRate' },
|
|
48
|
-
{ field: 'bankSellRate', headerName: 'Bank SellRate', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'bankSellRate' },
|
|
49
|
-
{ field: 'payOutCurrency', headerName: 'Receive CcyCode', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, tooltipField: 'payOutCurrency' },
|
|
50
|
-
{ field: 'payOutAmount', headerName: 'Receive Amount', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'payOutAmount' },
|
|
51
|
-
{ field: 'beneDeductAmount', headerName: 'BeneDeduct Amount', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'beneDeductAmount' },
|
|
52
|
-
{ field: 'usdRateAppliedPayout', headerName: 'USDRate @Payout', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'usdRateAppliedPayout' },
|
|
53
|
-
{ field: 'xMsCommissionShare', headerName: "XM's Service Fee Share", flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'xmsCommissionShare' },
|
|
54
|
-
{ field: 'xmExchangeVariation', headerName: 'XM Exchange Variation (Gain/Loss)', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'xmExchangeVariation' },
|
|
55
|
-
{ field: 'xMsBeneDeductShare', headerName: "XM's BeneDeduct Share", flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'xmsBeneDeductShare' },
|
|
56
|
-
{ field: 'revenuePerTransaction', headerName: 'Revenue Per Transaction', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'revenuePerTransaction' },
|
|
57
|
-
{ field: 'totalSettleAmount', headerName: 'Total Settlement', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'totalSettleAmount' },
|
|
58
|
-
{ field: 'transactionStatus', headerName: 'Transaction Status', flex: 1, headerClass: 'ag-header-cell', minWidth: 80, wrapText: true, autoHeight: true, tooltipField: 'transactionStatus' },
|
|
59
|
-
];
|
|
60
|
-
this.defaultColDef = {
|
|
61
|
-
sortable: true,
|
|
62
|
-
filter: true,
|
|
63
|
-
resizable: true,
|
|
64
|
-
minwidth: 40,
|
|
65
|
-
wrapHeaderText: true,
|
|
66
|
-
autoHeaderHeight: true,
|
|
67
|
-
suppressSizeToFit: false,
|
|
68
|
-
wrapText: true
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
ngOnInit() {
|
|
72
|
-
if (sessionStorage.getItem('fossilusername')) {
|
|
73
|
-
this.sysUserId = sessionStorage.getItem('fossilusername');
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
this.sysUserId = sessionStorage.getItem('ezremitusername');
|
|
77
|
-
}
|
|
78
|
-
this.sysUserId = this.sysUserId.replace(/^["'](.*)["']$/, '$1');
|
|
79
|
-
}
|
|
80
|
-
onGridReady(params) {
|
|
81
|
-
this.gridApi = params.api;
|
|
82
|
-
this.gridColumnApi = params.columnApi;
|
|
83
|
-
}
|
|
84
|
-
// Currency Formatter
|
|
85
|
-
formatAmount(params) {
|
|
86
|
-
if (params.value == null)
|
|
87
|
-
return '0.000';
|
|
88
|
-
const num = Number(params.value);
|
|
89
|
-
return num.toFixed(3);
|
|
90
|
-
}
|
|
91
|
-
formatRate(params) {
|
|
92
|
-
const value = params?.value;
|
|
93
|
-
if (value !== null && value !== undefined && value !== '') {
|
|
94
|
-
const num = Number(value);
|
|
95
|
-
// return (Math.trunc(num * 100000000) / 100000000).toFixed(8);
|
|
96
|
-
return parseFloat(value).toFixed(8);
|
|
97
|
-
}
|
|
98
|
-
return '';
|
|
99
|
-
}
|
|
100
|
-
onSearch(text) {
|
|
101
|
-
this.searchText = text;
|
|
102
|
-
if (this.searchText == null) {
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
105
|
-
if (this.searchText === "") {
|
|
106
|
-
this.filteredData = JSON.parse(JSON.stringify(this.data));
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
const data = JSON.parse(JSON.stringify(this.data));
|
|
110
|
-
this.filteredData = data.filter((row) => Object.values(row).some(val => String(val).toLowerCase().includes(this.searchText?.toLowerCase())));
|
|
111
|
-
}
|
|
112
|
-
handleExport(option) {
|
|
113
|
-
this.selectedExportOption = option;
|
|
114
|
-
if (this.selectedExportOption === 'pdf') {
|
|
115
|
-
this.exportToPDF();
|
|
116
|
-
}
|
|
117
|
-
else if (this.selectedExportOption === 'excel') {
|
|
118
|
-
this.exportToExcel();
|
|
119
|
-
}
|
|
120
|
-
else if (this.selectedExportOption === 'csv') {
|
|
121
|
-
this.exportToCSV();
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
alert('Please select a valid export format.');
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
exportToExcel() {
|
|
128
|
-
if (!this.data?.length)
|
|
129
|
-
return;
|
|
130
|
-
const title = this.ReportName;
|
|
131
|
-
const metadata = this.exportService.generateReportMetadata([
|
|
132
|
-
['Report Period ', this.fromDate + " - " + this.toDate],
|
|
133
|
-
['Report User & Time', this.user ? this.user + " @ " + this.reportDate : '' + " @ " + this.reportDate],
|
|
134
|
-
]);
|
|
135
|
-
// --- search criteria ---
|
|
136
|
-
const searchCriteria = this.searchCriteria;
|
|
137
|
-
const { headers, rows } = this.exportService.prepareExportTable(this.data, this.columnDefs, {
|
|
138
|
-
currencyFields: ['payInAmount', 'payOutAmount',
|
|
139
|
-
'transactionCommission', 'beneDeductAmount', 'xMsCommissionShare', 'xmExchangeVariation',
|
|
140
|
-
'xMsBeneDeductShare', 'revenuePerTransaction', 'totalSettleAmount'
|
|
141
|
-
],
|
|
142
|
-
rateFields: ['usdRate', 'ezRemitSellMargin', 'ezRemitSellRate', 'bankSellRate', 'usdRateAppliedPayout',]
|
|
143
|
-
});
|
|
144
|
-
this.exportService.exportToExcelUniversal(title, metadata, searchCriteria, headers, rows, 'Revenue_Per_Transaction.xlsx');
|
|
145
|
-
}
|
|
146
|
-
exportToCSV() {
|
|
147
|
-
if (!this.data?.length)
|
|
148
|
-
return;
|
|
149
|
-
const title = this.ReportName;
|
|
150
|
-
const metadata = this.exportService.generateReportMetadata([
|
|
151
|
-
['Report Period ', this.fromDate + " - " + this.toDate],
|
|
152
|
-
['Report User & Time', this.user ? this.user + " @ " + this.reportDate : '' + " @ " + this.reportDate],
|
|
153
|
-
]);
|
|
154
|
-
// --- search criteria ---
|
|
155
|
-
const searchCriteria = this.searchCriteria;
|
|
156
|
-
const { headers, rows } = this.exportService.prepareExportTable(this.data, this.columnDefs, {
|
|
157
|
-
currencyFields: ['payInAmount', 'payOutAmount',
|
|
158
|
-
'transactionCommission', 'beneDeductAmount', 'xMsCommissionShare', 'xmExchangeVariation',
|
|
159
|
-
'xMsBeneDeductShare', 'revenuePerTransaction', 'totalSettleAmount'
|
|
160
|
-
],
|
|
161
|
-
rateFields: ['usdRate', 'ezRemitSellMargin', 'ezRemitSellRate', 'bankSellRate', 'usdRateAppliedPayout',]
|
|
162
|
-
});
|
|
163
|
-
this.exportService.exportToCsvUniversal(title, metadata, searchCriteria, headers, rows, 'Revenue_Per_Transaction.csv');
|
|
164
|
-
}
|
|
165
|
-
exportToPDF() {
|
|
166
|
-
if (!this.data?.length)
|
|
167
|
-
return;
|
|
168
|
-
const title = this.ReportName;
|
|
169
|
-
const metadata = this.exportService.generateReportMetadata([
|
|
170
|
-
['Report Period ', this.fromDate + " - " + this.toDate],
|
|
171
|
-
['Report User & Time', this.user ? this.user + " @ " + this.reportDate : '' + " @ " + this.reportDate],
|
|
172
|
-
]);
|
|
173
|
-
// --- search criteria ---
|
|
174
|
-
const searchCriteria = this.searchCriteria;
|
|
175
|
-
const { headers, rows } = this.exportService.prepareExportTable(this.data, this.columnDefs, {
|
|
176
|
-
currencyFields: ['payInAmount', 'payOutAmount',
|
|
177
|
-
'transactionCommission', 'beneDeductAmount', 'xMsCommissionShare', 'xmExchangeVariation',
|
|
178
|
-
'xMsBeneDeductShare', 'revenuePerTransaction', 'totalSettleAmount'
|
|
179
|
-
],
|
|
180
|
-
rateFields: ['usdRate', 'ezRemitSellMargin', 'ezRemitSellRate', 'bankSellRate', 'usdRateAppliedPayout',]
|
|
181
|
-
});
|
|
182
|
-
this.exportService.exportToPdfUniversal(title, metadata, searchCriteria, headers, rows, 'Revenue_Per_Transaction.pdf')
|
|
183
|
-
.then(() => {
|
|
184
|
-
console.log('PDF export completed.');
|
|
185
|
-
})
|
|
186
|
-
.catch(err => {
|
|
187
|
-
console.error('PDF export failed:', err);
|
|
188
|
-
});
|
|
189
|
-
}
|
|
190
|
-
handleSearch(criteria) {
|
|
191
|
-
this.searchCriteria = criteria.searchCriteria;
|
|
192
|
-
this.reportDate = new Date().toISOString();
|
|
193
|
-
this.reportDate = formatDate(this.reportDate, 'dd/MM/yyyy hh:mm a', 'en-US');
|
|
194
|
-
const modal = criteria.modal;
|
|
195
|
-
this.user = this.sysUserId;
|
|
196
|
-
this.fromDate = formatDate(modal.fromDate, 'dd/MM/yyyy hh:mm a', 'en-US').slice(0, 10);
|
|
197
|
-
this.toDate = formatDate(modal.toDate, 'dd/MM/yyyy hh:mm a', 'en-US').slice(0, 10);
|
|
198
|
-
console.log(modal);
|
|
199
|
-
// Code For Meta Data
|
|
200
|
-
this.metaDataOne = {
|
|
201
|
-
'Report Period': this.fromDate + " - " + this.toDate,
|
|
202
|
-
};
|
|
203
|
-
this.metaDataTwo = {
|
|
204
|
-
'Report User & Time': this.user + " @ " + this.reportDate,
|
|
205
|
-
};
|
|
206
|
-
const searchData = {
|
|
207
|
-
"StartDate": modal.fromDate,
|
|
208
|
-
"EndDate": modal.toDate,
|
|
209
|
-
"SendCountryCode": modal.sendCountry,
|
|
210
|
-
"RecvCountryCode": modal.receiveCountry,
|
|
211
|
-
"sendBusinessPartnerId": modal.sendBusinessPartner,
|
|
212
|
-
"RecvBusinessPartenrId": modal.recvBusinessPartner,
|
|
213
|
-
"TransactionStatus": modal.transactionStatus.join(",")
|
|
214
|
-
};
|
|
215
|
-
this.loadingState = ComponentLoadingStates.Loading;
|
|
216
|
-
this.reportService.getRevenuePerTransactionReport(searchData)
|
|
217
|
-
.subscribe({
|
|
218
|
-
next: (data) => {
|
|
219
|
-
this.data = data;
|
|
220
|
-
this.filteredData = JSON.parse(JSON.stringify(this.data));
|
|
221
|
-
console.log(this.data);
|
|
222
|
-
this.noDataFound = data?.length === 0 ? true : false;
|
|
223
|
-
},
|
|
224
|
-
error: (err) => {
|
|
225
|
-
console.log(err);
|
|
226
|
-
this.loadingState = ComponentLoadingStates.Complete;
|
|
227
|
-
},
|
|
228
|
-
complete: () => {
|
|
229
|
-
this.showReport = true;
|
|
230
|
-
this.loadingState = ComponentLoadingStates.Complete;
|
|
231
|
-
}
|
|
232
|
-
});
|
|
233
|
-
}
|
|
234
|
-
handleFormValid(isValid) {
|
|
235
|
-
this.isFormValid = isValid;
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
RevenuePerTransactionReportComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: RevenuePerTransactionReportComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
239
|
-
RevenuePerTransactionReportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: RevenuePerTransactionReportComponent, selector: "lib-revenue-per-transaction-report", ngImport: i0, template: "<lib-search-filter [ReportName]=\"ReportName\" (searchClicked)=\"handleSearch($event)\" (formValid)=\"handleFormValid($event)\">\r\n</lib-search-filter>\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n<section *ngIf=\"showReport && isFormValid\" class=\"my-2 mx-1\">\r\n\r\n <ng-container *ngIf=\"!noDataFound\">\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\"\r\n [metaDataOne]=\"metaDataOne\" [metaDataTwo]=\"metaDataTwo\" (exportEvent)=\"handleExport($event)\"\r\n (searchEvent)=\"onSearch($event)\"></lib-metadata>\r\n <div style=\"position: relative;\" *ngIf=\"filteredData?.length>0\">\r\n <lib-page-size-selector [totalEntries]=\"data?.length\" [defaultSize]=\"'15'\" [gridApi]=\"gridApi\">\r\n ></lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine transaction-grid\" style=\"width: 100%;height: 407px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\" [rowData]=\"filteredData\" [rowHeight]=\"20\"\r\n [headerHeight]=\"22\" [pagination]=\"true\" [paginationPageSize]=\"pageSize\"\r\n (gridReady)=\"onGridReady($event)\">\r\n </ag-grid-angular>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"alert alert-warning mt-3\" *ngIf=\"noDataFound\">\r\n No Data found matching your search criteria.\r\n </div>\r\n\r\n</section>", styles: [".transaction-grid ::ng-deep .ag-header{background-color:#f9f9f9;font-weight:600;font-size:10px;color:#000;border-right:1px solid #e0e0e0}:host ::ng-deep .ag-header-cell{padding:2px!important;align-items:center!important;justify-content:center!important;border-right:1px solid #e0e0e0;white-space:normal!important;word-break:normal!important;overflow-wrap:break-word!important;text-align:center!important}::ng-deep .ag-header-cell-label{display:flex!important;justify-content:center!important;align-items:center!important;width:100%;text-align:center!important}::ng-deep .ag-header-cell-text{text-align:center!important;width:100%!important;display:flex!important;justify-content:center!important}.transaction-grid ::ng-deep .ag-row{border-bottom:1px solid #e0e0e0}.transaction-grid ::ng-deep .ag-cell{font-size:9px;white-space:normal!important;word-break:keep-all!important;overflow-wrap:anywhere;line-height:1.4;padding:4px!important;color:#000;font-weight:500;border-right:.5px solid #e0e0e0;align-content:center;user-select:text!important;-webkit-user-select:text!important;-moz-user-select:text!important;-ms-user-select:text!important;cursor:text}::ng-deep .ag-cell-label-container{padding:0!important}.ag-theme-alpine{--ag-header-font-size: 10px;--ag-font-size: 10px;--ag-header-background-color: #fdfdfd;--ag-header-foreground-color: rgb(0, 0, 0)}::ng-deep .ag-paging-panel{height:30px!important;font-weight:500!important}\n"], dependencies: [{ kind: "component", type: i1.AgGridAngular, selector: "ag-grid-angular", inputs: ["gridOptions", "modules", "statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "suppressMenuHide", "enableBrowserTooltips", "tooltipShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "maintainColumnOrder", "suppressFieldDotNotation", "deltaColumnMode", "applyColumnDefOrder", "immutableColumns", "suppressSetColumnStateEvents", "suppressColumnStateEvents", "colWidth", "minColWidth", "maxColWidth", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "allowDragFromColumnsToolPanel", "suppressMovableColumns", "suppressColumnMoveAnimation", "suppressDragLeaveHidesColumns", "suppressRowGroupHidesColumns", "colResizeDefault", "suppressAutoSize", "autoSizePadding", "skipHeaderOnAutoSize", "components", "frameworkComponents", "editType", "singleClickEdit", "suppressClickEdit", "readOnlyEdit", "stopEditingWhenCellsLoseFocus", "enterMovesDown", "enterMovesDownAfterEdit", "enableCellEditingOnBackspace", "undoRedoCellEditing", "undoRedoCellEditingLimit", "stopEditingWhenGridLosesFocus", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "defaultExportParams", "quickFilterText", "cacheQuickFilter", "excludeChildrenWhenTreeDataFiltering", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "enableChartToolPanelsButton", "chartToolPanelsDef", "loadingCellRenderer", "loadingCellRendererFramework", "loadingCellRendererParams", "loadingCellRendererSelector", "localeText", "masterDetail", "keepDetailRows", "keepDetailRowsCount", "detailCellRenderer", "detailCellRendererFramework", "detailCellRendererParams", "detailRowHeight", "detailRowAutoHeight", "context", "alignedGrids", "tabIndex", "rowBuffer", "valueCache", "valueCacheNeverExpires", "enableCellExpressions", "suppressParentsInRowNodes", "suppressTouch", "suppressFocusAfterRefresh", "suppressAsyncEvents", "suppressBrowserResizeObserver", "suppressPropertyNamesCheck", "suppressChangeDetection", "debug", "overlayLoadingTemplate", "loadingOverlayComponent", "loadingOverlayComponentFramework", "loadingOverlayComponentParams", "suppressLoadingOverlay", "overlayNoRowsTemplate", "noRowsOverlayComponent", "noRowsOverlayComponentFramework", "noRowsOverlayComponentParams", "suppressNoRowsOverlay", "pagination", "paginationPageSize", "paginationAutoPageSize", "paginateChildRows", "suppressPaginationPanel", "pivotMode", "pivotPanelShow", "pivotColumnGroupTotals", "pivotRowTotals", "pivotSuppressAutoColumn", "suppressExpandablePivotGroups", "functionsReadOnly", "aggFuncs", "suppressAggFuncInHeader", "suppressAggAtRootLevel", "aggregateOnlyChangedColumns", "suppressAggFilteredOnly", "removePivotHeaderRowWhenSingleValueColumn", "animateRows", "enableCellChangeFlash", "cellFlashDelay", "cellFadeDelay", "allowShowChangeAfterFilter", "domLayout", "ensureDomOrder", "enableRtl", "suppressColumnVirtualisation", "suppressMaxRenderedRowRestriction", "suppressRowVirtualisation", "rowDragManaged", "suppressRowDrag", "suppressMoveWhenRowDragging", "rowDragEntireRow", "rowDragMultiRow", "rowDragText", "fullWidthCellRenderer", "fullWidthCellRendererFramework", "fullWidthCellRendererParams", "embedFullWidthRows", "deprecatedEmbedFullWidthRows", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupAggFiltering", "groupIncludeFooter", "groupIncludeTotalFooter", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererFramework", "groupRowRendererParams", "suppressMakeColumnVisibleAfterUnGroup", "treeData", "rowGroupPanelSuppressSort", "groupRowsSticky", "groupRowInnerRenderer", "groupRowInnerRendererFramework", "groupMultiAutoColumn", "groupUseEntireRow", "groupSuppressAutoColumn", "rememberGroupStateWhenNewData", "pinnedTopRowData", "pinnedBottomRowData", "rowModelType", "rowData", "immutableData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "deltaRowDataMode", "batchUpdateWaitMillis", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "serverSideStoreType", "serverSideInfiniteScroll", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideFilterAllLevels", "serverSideSortOnServer", "serverSideFilterOnServer", "serverSideSortingAlwaysResets", "serverSideFilteringAlwaysResets", "suppressEnterpriseResetOnNewColumns", "viewportDatasource", "viewportRowModelPageSize", "viewportRowModelBufferSize", "alwaysShowHorizontalScroll", "alwaysShowVerticalScroll", "debounceVerticalScrollbar", "suppressHorizontalScroll", "suppressScrollOnNewData", "suppressScrollWhenPopupsAreOpen", "suppressAnimationFrame", "suppressMiddleClickScrolls", "suppressPreventDefaultOnMouseWheel", "scrollbarWidth", "rowSelection", "rowMultiSelectWithClick", "suppressRowDeselection", "suppressRowClickSelection", "suppressCellSelection", "suppressCellFocus", "suppressMultiRangeSelection", "enableCellTextSelection", "enableRangeSelection", "enableRangeHandle", "enableFillHandle", "fillHandleDirection", "suppressClearOnFillReduction", "sortingOrder", "accentedSort", "unSortIcon", "suppressMultiSort", "alwaysMultiSort", "multiSortKey", "suppressMaintainUnsortedOrder", "icons", "rowHeight", "rowStyle", "rowClass", "rowClassRules", "suppressRowHoverHighlight", "suppressRowTransform", "columnHoverHighlight", "deltaSort", "treeDataDisplayType", "angularCompileRows", "angularCompileFilters", "functionsPassive", "enableGroupEdit", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "suppressKeyboardEvent", "localeTextFunc", "getLocaleText", "getDocument", "paginationNumberFormatter", "groupRowAggNodes", "getGroupRowAgg", "isGroupOpenByDefault", "initialGroupOrderComparator", "defaultGroupOrderComparator", "processSecondaryColDef", "processSecondaryColGroupDef", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "defaultGroupSortComparator", "getChildCount", "getServerSideGroupLevelParams", "getServerSideStoreParams", "isServerSideGroupOpenByDefault", "isApplyServerSideTransaction", "isServerSideGroup", "getServerSideGroupKey", "getBusinessKeyForNode", "getRowNodeId", "getRowId", "resetRowDataOnUpdate", "processRowPostCreate", "isRowSelectable", "isRowMaster", "fillOperation", "postSort", "postSortRows", "getRowStyle", "getRowClass", "getRowHeight", "isFullWidthCell", "isFullWidthRow"], outputs: ["toolPanelVisibleChanged", "toolPanelSizeChanged", "pasteStart", "pasteEnd", "columnVisible", "columnPinned", "columnResized", "columnMoved", "columnValueChanged", "columnPivotModeChanged", "columnPivotChanged", "columnGroupOpened", "newColumnsLoaded", "gridColumnsChanged", "displayedColumnsChanged", "virtualColumnsChanged", "columnEverythingChanged", "componentStateChanged", "cellValueChanged", "cellEditRequest", "rowValueChanged", "cellEditingStarted", "cellEditingStopped", "rowEditingStarted", "rowEditingStopped", "filterOpened", "filterChanged", "filterModified", "chartCreated", "chartRangeSelectionChanged", "chartOptionsChanged", "chartDestroyed", "cellKeyDown", "cellKeyPress", "gridReady", "firstDataRendered", "gridSizeChanged", "modelUpdated", "virtualRowRemoved", "viewportChanged", "bodyScroll", "bodyScrollEnd", "dragStarted", "dragStopped", "paginationChanged", "rowDragEnter", "rowDragMove", "rowDragLeave", "rowDragEnd", "columnRowGroupChanged", "rowGroupOpened", "expandOrCollapseAll", "pinnedRowDataChanged", "rowDataChanged", "rowDataUpdated", "asyncTransactionsFlushed", "cellClicked", "cellDoubleClicked", "cellFocused", "cellMouseOver", "cellMouseOut", "cellMouseDown", "rowClicked", "rowDoubleClicked", "rowSelected", "selectionChanged", "cellContextMenu", "rangeSelectionChanged", "sortChanged", "columnRowGroupChangeRequest", "columnPivotChangeRequest", "columnValueChangeRequest", "columnAggFuncChangeRequest"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.PageSizeSelectorComponent, selector: "lib-page-size-selector", inputs: ["pageSizeArray", "defaultSize", "totalEntries", "gridApi"] }, { kind: "component", type: i4.MetadataComponent, selector: "lib-metadata", inputs: ["metaDataOne", "metaDataTwo", "showmetaDataOne", "showmetaDataTwo", "reportName"], outputs: ["searchEvent", "exportEvent"] }, { kind: "component", type: i5.LoaderComponent, selector: "app-loader" }, { kind: "component", type: i6.SearchFilterComponent, selector: "lib-search-filter", inputs: ["ReportName", "initialFilters"], outputs: ["searchClicked", "formValid"] }] });
|
|
240
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: RevenuePerTransactionReportComponent, decorators: [{
|
|
241
|
-
type: Component,
|
|
242
|
-
args: [{ selector: 'lib-revenue-per-transaction-report', template: "<lib-search-filter [ReportName]=\"ReportName\" (searchClicked)=\"handleSearch($event)\" (formValid)=\"handleFormValid($event)\">\r\n</lib-search-filter>\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n<section *ngIf=\"showReport && isFormValid\" class=\"my-2 mx-1\">\r\n\r\n <ng-container *ngIf=\"!noDataFound\">\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\"\r\n [metaDataOne]=\"metaDataOne\" [metaDataTwo]=\"metaDataTwo\" (exportEvent)=\"handleExport($event)\"\r\n (searchEvent)=\"onSearch($event)\"></lib-metadata>\r\n <div style=\"position: relative;\" *ngIf=\"filteredData?.length>0\">\r\n <lib-page-size-selector [totalEntries]=\"data?.length\" [defaultSize]=\"'15'\" [gridApi]=\"gridApi\">\r\n ></lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine transaction-grid\" style=\"width: 100%;height: 407px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\" [rowData]=\"filteredData\" [rowHeight]=\"20\"\r\n [headerHeight]=\"22\" [pagination]=\"true\" [paginationPageSize]=\"pageSize\"\r\n (gridReady)=\"onGridReady($event)\">\r\n </ag-grid-angular>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"alert alert-warning mt-3\" *ngIf=\"noDataFound\">\r\n No Data found matching your search criteria.\r\n </div>\r\n\r\n</section>", styles: [".transaction-grid ::ng-deep .ag-header{background-color:#f9f9f9;font-weight:600;font-size:10px;color:#000;border-right:1px solid #e0e0e0}:host ::ng-deep .ag-header-cell{padding:2px!important;align-items:center!important;justify-content:center!important;border-right:1px solid #e0e0e0;white-space:normal!important;word-break:normal!important;overflow-wrap:break-word!important;text-align:center!important}::ng-deep .ag-header-cell-label{display:flex!important;justify-content:center!important;align-items:center!important;width:100%;text-align:center!important}::ng-deep .ag-header-cell-text{text-align:center!important;width:100%!important;display:flex!important;justify-content:center!important}.transaction-grid ::ng-deep .ag-row{border-bottom:1px solid #e0e0e0}.transaction-grid ::ng-deep .ag-cell{font-size:9px;white-space:normal!important;word-break:keep-all!important;overflow-wrap:anywhere;line-height:1.4;padding:4px!important;color:#000;font-weight:500;border-right:.5px solid #e0e0e0;align-content:center;user-select:text!important;-webkit-user-select:text!important;-moz-user-select:text!important;-ms-user-select:text!important;cursor:text}::ng-deep .ag-cell-label-container{padding:0!important}.ag-theme-alpine{--ag-header-font-size: 10px;--ag-font-size: 10px;--ag-header-background-color: #fdfdfd;--ag-header-foreground-color: rgb(0, 0, 0)}::ng-deep .ag-paging-panel{height:30px!important;font-weight:500!important}\n"] }]
|
|
243
|
-
}], ctorParameters: function () { return []; } });
|
|
244
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV2ZW51ZS1wZXItdHJhbnNhY3Rpb24tcmVwb3J0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JlcG9ydHMtbGliL3NyYy9saWIvY29tcG9uZW50cy9yZXZlbnVlLXBlci10cmFuc2FjdGlvbi1yZXBvcnQvcmV2ZW51ZS1wZXItdHJhbnNhY3Rpb24tcmVwb3J0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JlcG9ydHMtbGliL3NyYy9saWIvY29tcG9uZW50cy9yZXZlbnVlLXBlci10cmFuc2FjdGlvbi1yZXBvcnQvcmV2ZW51ZS1wZXItdHJhbnNhY3Rpb24tcmVwb3J0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFL0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7OztBQU83QyxNQUFNLE9BQU8sb0NBQW9DO0lBb0UvQztRQW5FQSxTQUFJLEdBQXlDLEVBQUUsQ0FBQztRQUNoRCxpQkFBWSxHQUF5QyxFQUFFLENBQUM7UUFDeEQsU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUNsQixjQUFTLEdBQVcsRUFBRSxDQUFDO1FBQ3ZCLGVBQVUsR0FBRyx5QkFBeUIsQ0FBQTtRQUN0QyxrQkFBYSxHQUFrQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDckQsa0JBQWEsR0FBa0IsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBTXJELDBCQUFxQixHQUFHLHNCQUFzQixDQUFD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RUFBRSxFQUFFO2dCQUNiLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO2dCQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDMUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxFQUFFLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQ3ZELENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDYixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLHNCQUFzQixDQUFDLFFBQVEsQ0FBQztZQUN0RCxDQUFDO1lBQ0QsUUFBUSxFQUFFLEdBQUcsRUFBRTtnQkFDYixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxzQkFBc0IsQ0FBQyxRQUFRLENBQUM7WUFDdEQsQ0FBQztTQUNGLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFFRCxlQUFlLENBQUMsT0FBZ0I7UUFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUM7SUFDN0IsQ0FBQzs7aUlBM1BVLG9DQUFvQztxSEFBcEMsb0NBQW9DLDBFQ2JqRCwyL0NBeUJVOzJGRFpHLG9DQUFvQztrQkFMaEQsU0FBUzsrQkFDRSxvQ0FBb0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJldmVudWVQZXJUcmFuc2FjdGlvblJlc3BvbnNlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvcmV2ZW51ZS1wZXItdHJhbnNhY3Rpb24tcmVwb3J0L3JldmVudWUtcGVyLXRyYW5zYWN0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgUmVwb3J0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JlcG9ydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRXhwb3J0U2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9leHBvcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudExvYWRpbmdTdGF0ZXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvY29tcG9uZW50LWxvYWRpbmctc3RhdGVzJztcclxuaW1wb3J0IHsgQ29sRGVmLCBDb2x1bW5BcGksIEdyaWRBcGksIEdyaWRSZWFkeUV2ZW50IH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xyXG5pbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXJldmVudWUtcGVyLXRyYW5zYWN0aW9uLXJlcG9ydCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3JldmVudWUtcGVyLXRyYW5zYWN0aW9uLXJlcG9ydC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcmV2ZW51ZS1wZXItdHJhbnNhY3Rpb24tcmVwb3J0LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFJldmVudWVQZXJUcmFuc2FjdGlvblJlcG9ydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgZGF0YTogUmV2ZW51ZVBlclRyYW5zYWN0aW9uUmVzcG9uc2VNb2RlbFtdID0gW107XHJcbiAgZmlsdGVyZWREYXRhOiBSZXZlbnVlUGVyVHJhbnNhY3Rpb25SZXNwb25zZU1vZGVsW10gPSBbXTtcclxuICB1c2VyOiBzdHJpbmcgPSBcIlwiO1xyXG4gIHN5c1VzZXJJZDogc3RyaW5nID0gXCJcIjtcclxuICBSZXBvcnROYW1lID0gXCJSZXZlbnVlIFBlciBUcmFuc2FjdGlvblwiXHJcbiAgcmVwb3J0U2VydmljZTogUmVwb3J0U2VydmljZSA9IGluamVjdChSZXBvcnRTZXJ2aWNlKTtcclxuICBleHBvcnRTZXJ2aWNlOiBFeHBvcnRTZXJ2aWNlID0gaW5qZWN0KEV4cG9ydFNlcnZpY2UpO1xyXG4gIHJlcG9ydERhdGU6IHN0cmluZztcclxuICBmcm9tRGF0ZTogc3RyaW5nO1xyXG4gIHRvRGF0ZTogc3RyaW5nO1xyXG4gIG1ldGFEYXRhT25lOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIG1ldGFEYXRhVHdvOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIENvbXBvbmVudExvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZXM7XHJcbiAgbG9hZGluZ1N0YXRlOiBDb21wb25lbnRMb2FkaW5nU3RhdGVzID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlcy5Db21wbGV0ZTtcclxuICBzZWxlY3RlZEV4cG9ydE9wdGlvbjogc3RyaW5nO1xyXG4gIHNlYXJjaFRleHQ6IHN0cmluZyA9ICcnO1xyXG4gIHBhZ2VTaXplOiBudW1iZXIgPSAxNTtcclxuICBzZWFyY2hDcml0ZXJpYTogW3N0cmluZywgc3RyaW5nXVtdO1xyXG5cclxuICBncmlkQXBpOiBHcmlkQXBpO1xyXG4gIGdyaWRDb2x1bW5BcGk6IENvbHVtbkFwaTtcclxuICBzaG93UmVwb3J0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgbm9EYXRhRm91bmQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0Zvcm1WYWxpZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb2x1bW5EZWZzOiBDb2xEZWY8UmV2ZW51ZVBlclRyYW5zYWN0aW9uUmVzcG9uc2VNb2RlbD5bXSA9IFtcclxuICAgIHsgZmllbGQ6ICdidXNpbmVzc0RhdGUnLCBoZWFkZXJOYW1lOiAnQnVzaW5lc3MgRGF0ZScsIGZsZXg6IDEsIGhlYWRlckNsYXNzOiAnYWctaGVhZGVyLWNlbGwnLCBtaW5XaWR0aDogODAsIHRvb2x0aXBGaWVsZDogJ2J1c2luZXNzRGF0ZScgfSxcclxuICAgIHsgZmllbGQ6ICdwYXlJbkRhdGUnLCBoZWFkZXJOYW1lOiAnU2VuZCBEYXRlJywgZmxleDogMSwgaGVhZGVyQ2xhc3M6ICdhZy1oZWFkZXItY2VsbCcsIG1pbldpZHRoOiAxMDAsIHRvb2x0aXBGaWVsZDogJ3BheUluRGF0ZScgfSxcclxuICAgIHsgZmllbGQ6ICdwYXlPdXREYXRlJywgaGVhZGVyTmFtZTogJ1JlY2VpdmUgRGF0ZScsIGZsZXg6IDEsIGhlYWRlckNsYXNzOiAnYWctaGVhZGVyLWNlbGwnLCBtaW5XaWR0aDogMTAwLCB3cmFwVGV4dDogdHJ1ZSwgYXV0b0hlaWdodDogdHJ1ZSwgdG9vbHRpcEZpZWxkOiAncGF5T3V0RGF0ZScgfSxcclxuICAgIHsgZmllbGQ6ICd0cmFuc2FjdGlvbk51bWJlcicsIGhlYWRlck5hbWU6ICdUcmFuc2FjdGlvbiBOdW1iZXInLCBmbGV4OiAxLCBoZWFkZXJDbGFzczogJ2FnLWhlYWRlci1jZWxsJywgbWluV2lkdGg6IDgwLCB3cmFwVGV4dDogdHJ1ZSwgYXV0b0hlaWdodDogdHJ1ZSwgdG9vbHRpcEZpZWxkOiAndHJhbnNhY3Rpb25OdW1iZXInIH0sXHJcbiAgICB7IGZpZWxkOiAncHJvZHVjdENvZGUnLCBoZWFkZXJOYW1lOiAnUHJvZHVjdCcsIGZsZXg6IDEsIGhlYWRlckNsYXNzOiAnYWctaGVhZGVyLWNlbGwnLCBtaW5XaWR0aDogODAsIHdyYXBUZXh0OiB0cnVlLCBhdXRvSGVpZ2h0OiB0cnVlLCB0b29sdGlwRmllbGQ6ICdwcm9kdWN0Q29kZScgfSxcclxuICAgIHsgZmllbGQ6ICdzZW5kQ291bnRyeScsIGhlYWRlck5hbWU6ICdTZW5kIENvdW50cnknLCBmbGV4OiAxLCBoZWFkZXJDbGFzczogJ2FnLWhlYWRlci1jZWxsJywgbWluV2lkdGg6IDEyMCwgd3JhcFRleHQ6IHRydWUsIGF1dG9IZWlnaHQ6IHRydWUsIHRvb2x0aXBGaWVsZDogJ3NlbmRDb3VudHJ5JyB9LFxyXG4gICAgeyBmaWVsZDogJ3NlbmRBZ2VudE5hbWUnLCBoZWFkZXJOYW1lOiAnU2VuZENsaWVudCBOYW1lJywgZmxleDogMSwgaGVhZGVyQ2xhc3M6ICdhZy1oZWFkZXItY2VsbCcsIG1pbldpZHRoOiAxMjAsIHdyYXBUZXh0OiB0cnVlLCBhdXRvSGVpZ2h0OiB0cnVlLCB0b29sdGlwRmllbGQ6ICdzZW5kQWdlbnROYW1lJyB9LFxyXG4gICAgeyBmaWVsZDogJ3NlbmRBZ2VudENvZGUnLCBoZWFkZXJOYW1lOiAnU2VuZENsaWVudCBDb2RlJywgZmxleDogMSwgaGVhZGVyQ2xhc3M6ICdhZy1oZWFkZXItY2VsbCcsIG1pbldpZHRoOiA4MCwgd3JhcFRleHQ6IHRydWUsIGF1dG9IZWlnaHQ6IHRydWUsIHRvb2x0aXBGaWVsZDogJ3NlbmRBZ2VudENvZGUnIH0sXHJcbiAgICB7IGZpZWxkOiAnc2VuZEFnZW50QnJhbmNoQ29kZScsIGhlYWRlck5hbWU6ICdTZW5kQ2xpZW50IEJyYW5jaENvZGUnLCBmbGV4OiAxLCBoZWFkZXJDbGFzczogJ2FnLWhlYWRlci1jZWxsJywgbWluV2lkdGg6IDgwLCB3cmFwVGV4dDogdHJ1ZSwgYXV0b0hlaWdodDogdHJ1ZSwgdG9vbHRpcEZpZWxkOiAnc2VuZEFnZW50QnJhbmNoQ29kZScgfSxcclxuICAgIHsgZmllbGQ6ICdyZWNlaXZlQ291bnRyeScsIGhlYWRlck5hbWU6ICdSZWNlaXZlIENvdW50cnknLCBmbGV4OiAxLCBoZWFkZXJDbGFzczogJ2FnLWhlYWRlci1jZWxsJywgbWluV2lkdGg6IDgwLCB3cmFwVGV4dDogdHJ1ZSwgYXV0b0hlaWdodDogdHJ1ZSwgdG9vbHRpcEZpZWxkOiAncmVjZWl2ZUNvdW50cnknIH0sXHJcbiAgICB7IGZpZWxkOiAncmVjZWl2ZUFnZW50TmFtZScsIGhlYWRlck5hbWU6ICdSZWNlaXZlQ2xpZW50IE5hbWUnLCBmbGV4OiAxLCBoZWFkZXJDbGFzczogJ2FnLWhlYWRlci1jZWxsJywgbWluV2lkdGg6IDE1MCwgd3JhcFRleHQ6IHRydWUsIGF1dG9IZWlnaHQ6IHRydWUsIHRvb2x0aXBGaWVsZDogJ3JlY2VpdmVBZ2VudE5hbWUnIH0sXHJcbiAgICB7IGZpZWxkOiAncmVjZWl2ZUFnZW50Q29kZScsIGhlYWRlck5hbWU6ICdSZWNlaXZlQ2xpZW50IENvZGUnLCBmbGV4OiAxLCBoZWFkZXJDbGFzczogJ2FnLWhlYWRlci1jZWxsJywgbWluV2lkdGg6IDkwLCB3cmFwVGV4dDogdHJ1ZSwgYXV0b0hlaWdodDogdHJ1ZSwgdG9vbHRpcEZpZWxkOiAncmVjZWl2ZUFnZW50Q29kZScgfSxcclxuICAgIHsgZmllbGQ6ICdwYXlJbkN1cnJlbmN5JywgaGVhZGVyTmFtZTogJ1NlbmQgQ2N5Q29kZScsIGZsZXg6IDEsIGhlYWRlckNsYXNzOiAnYWctaGVhZGVyLWNlbGwnLCBtaW5XaWR0aDogODAsIHdyYXBUZXh0OiB0cnVlLCBhdXRvSGVpZ2h0OiB0cnVlLCB0b29sdGlwRmllbGQ6ICdwYXlJbkN1cnJlbmN5JyB9LFxyXG4gICAgeyBmaWVsZDogJ3BheUluQW1vdW50JywgaGVhZGVyTmFtZTogJ1NlbmQgQW1vdW50JywgZmxleDogMSwgaGVhZGVyQ2xhc3M6ICdhZy1oZWFkZXItY2VsbCcsIG1pbldpZHRoOiA4MCwgd3JhcFRleHQ6IHRydWUsIGF1dG9IZWlnaHQ6IHRydWUsY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsIGNvbXBhY3QtY2VsbCcsIHRvb2x0aXBGaWVsZDogJ3BheUluQW1vdW50JyB9LFxyXG4gICAgeyBmaWVsZDogJ3RyYW5zYWN0aW9uQ29tbWlzc2lvbicsIGhlYWRlck5hbWU6ICdTZXJ2aWNlIEZlZScsIGZsZXg6IDEsIGhlYWRlckNsYXNzOiAnYWctaGVhZGVyLWNlbGwnLCBtaW5XaWR0aDogODAsIHdyYXBUZXh0OiB0cnVlLCBhdXRvSGVpZ2h0OiB0cnVlLGNlbGxDbGFzczogJ2FnLXJpZ2h0LWFsaWduZWQtY2VsbCBjb21wYWN0LWNlbGwnLCB0b29sdGlwRmllbGQ6ICd0cmFuc2FjdGlvbkNvbW1pc3Npb24nIH0sXHJcbiAgICB7IGZpZWxkOiAndXNkUmF0ZScsIGhlYWRlck5hbWU6ICdVU0QgUmF0ZScsIGZsZXg6IDEsIGhlYWRlckNsYXNzOiAnYWctaGVhZGVyLWNlbGwnLCB3cmFwVGV4dDogdHJ1ZSwgbWluV2lkdGg6IDgwLCBhdXRvSGVpZ2h0OiB0cnVlLCBjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwgY29tcGFjdC1jZWxsJywgdG9vbHRpcEZpZWxkOiAndXNkUmF0ZScgfSxcclxuICAgIHsgZmllbGQ6ICdlelJlbWl0U2VsbE1hcmdpbicsIGhlYWRlck5hbWU6ICdYTSBTZWxsTWFyZ2luJywgZmxleDogMSwgaGVhZGVyQ2xhc3M6ICdhZy1oZWFkZXItY2VsbCcsIG1pbldpZHRoOiA4MCwgd3JhcFRleHQ6IHRydWUsIGF1dG9IZWlnaHQ6IHRydWUsIGNlbGxDbGFzczogJ2FnLXJpZ2h0LWFsaWduZWQtY2VsbCBjb21wYWN0LWNlbGwnLCB0b29sdGlwRmllbGQ6ICdlelJlbWl0U2VsbE1hcmdpbicgfSxcclxuICAgIHsgZmllbGQ6ICdlelJlbWl0U2VsbFJhdGUnLCBoZWFkZXJOYW1lOiAnWE0gU2VsbFJhdGUnLCBmbGV4OiAxLCBoZWFkZXJDbGFzczogJ2FnLWhlYWRlci1jZWxsJywgbWluV2lkdGg6IDgwLCB3cmFwVGV4dDogdHJ1ZSwgYXV0b0hlaWdodDogdHJ1ZSwgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsIGNvbXBhY3QtY2VsbCcsIHRvb2x0aXBGaWVsZDogJ2V6UmVtaXRTZWxsUmF0ZScgfSxcclxuICAgIHsgZmllbGQ6ICdiYW5rU2VsbFJhdGUnLCBoZWFkZXJOYW1lOiAnQmFuayBTZWxsUmF0ZScsIGZsZXg6IDEsIGhlYWRlckNsYXNzOiAnYWctaGVhZGVyLWNlbGwnLCBtaW5XaWR0aDogODAsIHdyYXBUZXh0OiB0cnVlLCBhdXRvSGVpZ2h0OiB0cnVlLCBjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwgY29tcGFjdC1jZWxsJywgdG9vbHRpcEZpZWxkOiAnYmFua1NlbGxSYXRlJyB9LFxyXG4gICAgeyBmaWVsZDogJ3BheU91dEN1cnJlbmN5JywgaGVhZGVyTmFtZTogJ1JlY2VpdmUgQ2N5Q29kZScsIGZsZXg6IDEsIGhlYWRlckNsYXNzOiAnYWctaGVhZGVyLWNlbGwnLCBtaW5XaWR0aDogODAsIHdyYXBUZXh0OiB0cnVlLCBhdXRvSGVpZ2h0OiB0cnVlLCB0b29sdGlwRmllbGQ6ICdwYXlPdXRDdXJyZW5jeScgfSxcclxuICAgIHsgZmllbGQ6ICdwYXlPdXRBbW91bnQnLCBoZWFkZXJOYW1lOiAnUmVjZWl2ZSBBbW91bnQnLCBmbGV4OiAxLCBoZWFkZXJDbGFzczogJ2FnLWhlYWRlci1jZWxsJywgbWluV2lkdGg6IDgwLCB3cmFwVGV4dDogdHJ1ZSwgYXV0b0hlaWdodDogdHJ1ZSxjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwgY29tcGFjdC1jZWxsJywgdG9vbHRpcEZpZWxkOiAncGF5T3V0QW1vdW50JyB9LFxyXG4gICAgeyBmaWVsZDogJ2JlbmVEZWR1Y3RBbW91bnQnLCBoZWFkZXJOYW1lOiAnQmVuZURlZHVjdCBBbW91bnQnLCBmbGV4OiAxLCBoZWFkZXJDbGFzczogJ2FnLWhlYWRlci1jZWxsJywgbWluV2lkdGg6IDgwLCB3cmFwVGV4dDogdHJ1ZSwgYXV0b0hlaWdodDogdHJ1ZSxjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwgY29tcGFjdC1jZWxsJywgdG9vbHRpcEZpZWxkOiAnYmVuZURlZHVjdEFtb3VudCcgfSxcclxuICAgIHsgZmllbGQ6ICd1c2RSYXRlQXBwbGllZFBheW91dCcsIGhlYWRlck5hbWU6ICdVU0RSYXRlIEBQYXlvdXQnLCBmbGV4OiAxLCBoZWFkZXJDbGFzczogJ2FnLWhlYWRlci1jZWxsJywgbWluV2lkdGg6IDgwLCB3cmFwVGV4dDogdHJ1ZSwgYXV0b0hlaWdodDogdHJ1ZSwgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsIGNvbXBhY3QtY2VsbCcsIHRvb2x0aXBGaWVsZDogJ3VzZFJhdGVBcHBsaWVkUGF5b3V0JyB9LFxyXG4gICAgeyBmaWVsZDogJ3hNc0NvbW1pc3Npb25TaGFyZScsIGhlYWRlck5hbWU6IFwiWE0ncyBTZXJ2aWNlIEZlZSBTaGFyZVwiLCBmbGV4OiAxLCBoZWFkZXJDbGFzczogJ2FnLWhlYWRlci1jZWxsJywgbWluV2lkdGg6IDgwLCB3cmFwVGV4dDogdHJ1ZSwgYXV0b0hlaWdodDogdHJ1ZSxjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwgY29tcGFjdC1jZWxsJywgdG9vbHRpcEZpZWxkOiAneG1zQ29tbWlzc2lvblNoYXJlJyB9LFxyXG4gICAgeyBmaWVsZDogJ3htRXhjaGFuZ2VWYXJpYXRpb24nLCBoZWFkZXJOYW1lOiAnWE0gRXhjaGFuZ2UgVmFyaWF0aW9uIChHYWluL0xvc3MpJywgZmxleDogMSwgaGVhZGVyQ2xhc3M6ICdhZy1oZWFkZXItY2VsbCcsIG1pbldpZHRoOiA4MCwgd3JhcFRleHQ6IHRydWUsIGF1dG9IZWlnaHQ6IHRydWUsY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsIGNvbXBhY3QtY2VsbCcsIHRvb2x0aXBGaWVsZDogJ3htRXhjaGFuZ2VWYXJpYXRpb24nIH0sXHJcbiAgICB7IGZpZWxkOiAneE1zQmVuZURlZHVjdFNoYXJlJywgaGVhZGVyTmFtZTogXCJYTSdzIEJlbmVEZWR1Y3QgU2hhcmVcIiwgZmxleDogMSwgaGVhZGVyQ2xhc3M6ICdhZy1oZWFkZXItY2VsbCcsIG1pbldpZHRoOiA4MCwgd3JhcFRleHQ6IHRydWUsIGF1dG9IZWlnaHQ6IHRydWUsY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsIGNvbXBhY3QtY2VsbCcsIHRvb2x0aXBGaWVsZDogJ3htc0JlbmVEZWR1Y3RTaGFyZScgfSxcclxuICAgIHsgZmllbGQ6ICdyZXZlbnVlUGVyVHJhbnNhY3Rpb24nLCBoZWFkZXJOYW1lOiAnUmV2ZW51ZSBQZXIgVHJhbnNhY3Rpb24nLCBmbGV4OiAxLCBoZWFkZXJDbGFzczogJ2FnLWhlYWRlci1jZWxsJywgbWluV2lkdGg6IDgwLCB3cmFwVGV4dDogdHJ1ZSwgYXV0b0hlaWdodDogdHJ1ZSxjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwgY29tcGFjdC1jZWxsJywgdG9vbHRpcEZpZWxkOiAncmV2ZW51ZVBlclRyYW5zYWN0aW9uJyB9LFxyXG4gICAgeyBmaWVsZDogJ3RvdGFsU2V0dGxlQW1vdW50JywgaGVhZGVyTmFtZTogJ1RvdGFsIFNldHRsZW1lbnQnLCBmbGV4OiAxLCBoZWFkZXJDbGFzczogJ2FnLWhlYWRlci1jZWxsJywgbWluV2lkdGg6IDgwLCB3cmFwVGV4dDogdHJ1ZSwgYXV0b0hlaWdodDogdHJ1ZSxjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwgY29tcGFjdC1jZWxsJywgdG9vbHRpcEZpZWxkOiAndG90YWxTZXR0bGVBbW91bnQnIH0sXHJcbiAgICB7IGZpZWxkOiAndHJhbnNhY3Rpb25TdGF0dXMnLCBoZWFkZXJOYW1lOiAnVHJhbnNhY3Rpb24gU3RhdHVzJywgZmxleDogMSwgaGVhZGVyQ2xhc3M6ICdhZy1oZWFkZXItY2VsbCcsIG1pbldpZHRoOiA4MCwgd3JhcFRleHQ6IHRydWUsIGF1dG9IZWlnaHQ6IHRydWUsIHRvb2x0aXBGaWVsZDogJ3RyYW5zYWN0aW9uU3RhdHVzJyB9LFxyXG4gIF1cclxuXHJcbiAgZGVmYXVsdENvbERlZiA9IHtcclxuICAgIHNvcnRhYmxlOiB0cnVlLFxyXG4gICAgZmlsdGVyOiB0cnVlLFxyXG4gICAgcmVzaXphYmxlOiB0cnVlLFxyXG4gICAgbWlud2lkdGg6IDQwLFxyXG4gICAgd3JhcEhlYWRlclRleHQ6IHRydWUsXHJcbiAgICBhdXRvSGVhZGVySGVpZ2h0OiB0cnVlLFxyXG4gICAgc3VwcHJlc3NTaXplVG9GaXQ6IGZhbHNlLFxyXG4gICAgd3JhcFRleHQ6IHRydWVcclxuICB9O1xyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2Zvc3NpbHVzZXJuYW1lJykpIHtcclxuICAgICAgdGhpcy5zeXNVc2VySWQgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdmb3NzaWx1c2VybmFtZScpXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5zeXNVc2VySWQgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdlenJlbWl0dXNlcm5hbWUnKTtcclxuICAgIH1cclxuICAgIHRoaXMuc3lzVXNlcklkID0gdGhpcy5zeXNVc2VySWQucmVwbGFjZSgvXltcIiddKC4qKVtcIiddJC8sICckMScpO1xyXG4gIH1cclxuXHJcbiAgb25HcmlkUmVhZHkocGFyYW1zOiBHcmlkUmVhZHlFdmVudCkge1xyXG4gICAgdGhpcy5ncmlkQXBpID0gcGFyYW1zLmFwaTtcclxuICAgIHRoaXMuZ3JpZENvbHVtbkFwaSA9IHBhcmFtcy5jb2x1bW5BcGk7XHJcbiAgfVxyXG5cclxuICAvLyBDdXJyZW5jeSBGb3JtYXR0ZXJcclxuICBmb3JtYXRBbW91bnQocGFyYW1zOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgaWYgKHBhcmFtcy52YWx1ZSA9PSBudWxsKSByZXR1cm4gJzAuMDAwJztcclxuICAgIGNvbnN0IG51bSA9IE51bWJlcihwYXJhbXMudmFsdWUpO1xyXG4gICAgcmV0dXJuIG51bS50b0ZpeGVkKDMpO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0UmF0ZShwYXJhbXM6IGFueSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHBhcmFtcz8udmFsdWU7XHJcbiAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gJycpIHtcclxuICAgICAgY29uc3QgbnVtID0gTnVtYmVyKHZhbHVlKTtcclxuICAgICAgLy8gcmV0dXJuIChNYXRoLnRydW5jKG51bSAqIDEwMDAwMDAwMCkgLyAxMDAwMDAwMDApLnRvRml4ZWQoOCk7XHJcbiAgICAgIHJldHVybiBwYXJzZUZsb2F0KHZhbHVlKS50b0ZpeGVkKDgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgb25TZWFyY2godGV4dDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnNlYXJjaFRleHQgPSB0ZXh0O1xyXG4gICAgaWYgKHRoaXMuc2VhcmNoVGV4dCA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNlYXJjaFRleHQgPT09IFwiXCIpIHtcclxuICAgICAgdGhpcy5maWx0ZXJlZERhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZGF0YSkpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmRhdGEpKTtcclxuICAgIHRoaXMuZmlsdGVyZWREYXRhID0gZGF0YS5maWx0ZXIoKHJvdykgPT5cclxuICAgICAgT2JqZWN0LnZhbHVlcyhyb3cpLnNvbWUodmFsID0+IFN0cmluZyh2YWwpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zZWFyY2hUZXh0Py50b0xvd2VyQ2FzZSgpKSlcclxuICAgIClcclxuICB9XHJcblxyXG4gIGhhbmRsZUV4cG9ydChvcHRpb246IHN0cmluZykge1xyXG4gICAgdGhpcy5zZWxlY3RlZEV4cG9ydE9wdGlvbiA9IG9wdGlvbjtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRXhwb3J0T3B0aW9uID09PSAncGRmJykge1xyXG4gICAgICB0aGlzLmV4cG9ydFRvUERGKCk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRFeHBvcnRPcHRpb24gPT09ICdleGNlbCcpIHtcclxuICAgICAgdGhpcy5leHBvcnRUb0V4Y2VsKCk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRFeHBvcnRPcHRpb24gPT09ICdjc3YnKSB7XHJcbiAgICAgIHRoaXMuZXhwb3J0VG9DU1YoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGFsZXJ0KCdQbGVhc2Ugc2VsZWN0IGEgdmFsaWQgZXhwb3J0IGZvcm1hdC4nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV4cG9ydFRvRXhjZWwoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZGF0YT8ubGVuZ3RoKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgdGl0bGUgPSB0aGlzLlJlcG9ydE5hbWU7XHJcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuZXhwb3J0U2VydmljZS5nZW5lcmF0ZVJlcG9ydE1ldGFkYXRhKFtcclxuICAgICAgIFsnUmVwb3J0IFBlcmlvZCAnLCB0aGlzLmZyb21EYXRlICsgXCIgLSBcIiArIHRoaXMudG9EYXRlXSxcclxuICAgICAgWydSZXBvcnQgVXNlciAmIFRpbWUnLCB0aGlzLnVzZXI/dGhpcy51c2VyK1wiIEAgXCIrdGhpcy5yZXBvcnREYXRlOicnK1wiIEAgXCIrdGhpcy5yZXBvcnREYXRlXSxcclxuICAgIF0pO1xyXG4gICAgLy8gLS0tIHNlYXJjaCBjcml0ZXJpYSAtLS1cclxuICAgIGNvbnN0IHNlYXJjaENyaXRlcmlhOiBbc3RyaW5nLCBzdHJpbmddW10gPSB0aGlzLnNlYXJjaENyaXRlcmlhO1xyXG5cclxuICAgIGNvbnN0IHsgaGVhZGVycywgcm93cyB9ID0gdGhpcy5leHBvcnRTZXJ2aWNlLnByZXBhcmVFeHBvcnRUYWJsZSh0aGlzLmRhdGEsIHRoaXMuY29sdW1uRGVmcywge1xyXG4gICAgICBjdXJyZW5jeUZpZWxkczogWydwYXlJbkFtb3VudCcsICdwYXlPdXRBbW91bnQnLFxyXG4gICAgICAgICd0cmFuc2FjdGlvbkNvbW1pc3Npb24nLCAnYmVuZURlZHVjdEFtb3VudCcsICd4TXNDb21taXNzaW9uU2hhcmUnLCAneG1FeGNoYW5nZVZhcmlhdGlvbicsXHJcbiAgICAgICAgJ3hNc0JlbmVEZWR1Y3RTaGFyZScsICdyZXZlbnVlUGVyVHJhbnNhY3Rpb24nLCAndG90YWxTZXR0bGVBbW91bnQnXHJcbiAgICAgIF0sXHJcbiAgICAgIHJhdGVGaWVsZHM6IFsndXNkUmF0ZScsICdlelJlbWl0U2VsbE1hcmdpbicsICdlelJlbWl0U2VsbFJhdGUnLCAnYmFua1NlbGxSYXRlJywgJ3VzZFJhdGVBcHBsaWVkUGF5b3V0JyxdXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmV4cG9ydFNlcnZpY2UuZXhwb3J0VG9FeGNlbFVuaXZlcnNhbCh0aXRsZSwgbWV0YWRhdGEsIHNlYXJjaENyaXRlcmlhLCBoZWFkZXJzLCByb3dzLCAnUmV2ZW51ZV9QZXJfVHJhbnNhY3Rpb24ueGxzeCcpO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0VG9DU1YoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZGF0YT8ubGVuZ3RoKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgdGl0bGUgPSB0aGlzLlJlcG9ydE5hbWU7XHJcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuZXhwb3J0U2VydmljZS5nZW5lcmF0ZVJlcG9ydE1ldGFkYXRhKFtcclxuICAgICAgIFsnUmVwb3J0IFBlcmlvZCAnLCB0aGlzLmZyb21EYXRlICsgXCIgLSBcIiArIHRoaXMudG9EYXRlXSxcclxuICAgICAgWydSZXBvcnQgVXNlciAmIFRpbWUnLCB0aGlzLnVzZXI/dGhpcy51c2VyK1wiIEAgXCIrdGhpcy5yZXBvcnREYXRlOicnK1wiIEAgXCIrdGhpcy5yZXBvcnREYXRlXSxcclxuICAgIF0pO1xyXG4gICAgLy8gLS0tIHNlYXJjaCBjcml0ZXJpYSAtLS1cclxuICAgIGNvbnN0IHNlYXJjaENyaXRlcmlhOiBbc3RyaW5nLCBzdHJpbmddW10gPSB0aGlzLnNlYXJjaENyaXRlcmlhO1xyXG5cclxuICAgIGNvbnN0IHsgaGVhZGVycywgcm93cyB9ID0gdGhpcy5leHBvcnRTZXJ2aWNlLnByZXBhcmVFeHBvcnRUYWJsZSh0aGlzLmRhdGEsIHRoaXMuY29sdW1uRGVmcywge1xyXG4gICAgICBjdXJyZW5jeUZpZWxkczogWydwYXlJbkFtb3VudCcsICdwYXlPdXRBbW91bnQnLFxyXG4gICAgICAgICd0cmFuc2FjdGlvbkNvbW1pc3Npb24nLCAnYmVuZURlZHVjdEFtb3VudCcsICd4TXNDb21taXNzaW9uU2hhcmUnLCAneG1FeGNoYW5nZVZhcmlhdGlvbicsXHJcbiAgICAgICAgJ3hNc0JlbmVEZWR1Y3RTaGFyZScsICdyZXZlbnVlUGVyVHJhbnNhY3Rpb24nLCAndG90YWxTZXR0bGVBbW91bnQnXHJcbiAgICAgIF0sXHJcbiAgICAgIHJhdGVGaWVsZHM6IFsndXNkUmF0ZScsICdlelJlbWl0U2VsbE1hcmdpbicsICdlelJlbWl0U2VsbFJhdGUnLCAnYmFua1NlbGxSYXRlJywgJ3VzZFJhdGVBcHBsaWVkUGF5b3V0JyxdXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmV4cG9ydFNlcnZpY2UuZXhwb3J0VG9Dc3ZVbml2ZXJzYWwodGl0bGUsIG1ldGFkYXRhLCBzZWFyY2hDcml0ZXJpYSwgaGVhZGVycywgcm93cywgJ1JldmVudWVfUGVyX1RyYW5zYWN0aW9uLmNzdicpO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0VG9QREYoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZGF0YT8ubGVuZ3RoKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgdGl0bGUgPSB0aGlzLlJlcG9ydE5hbWU7XHJcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuZXhwb3J0U2VydmljZS5nZW5lcmF0ZVJlcG9ydE1ldGFkYXRhKFtcclxuICAgICAgWydSZXBvcnQgUGVyaW9kICcsIHRoaXMuZnJvbURhdGUgKyBcIiAtIFwiICsgdGhpcy50b0RhdGVdLFxyXG4gICAgICBbJ1JlcG9ydCBVc2VyICYgVGltZScsIHRoaXMudXNlcj90aGlzLnVzZXIrXCIgQCBcIit0aGlzLnJlcG9ydERhdGU6JycrXCIgQCBcIit0aGlzLnJlcG9ydERhdGVdLFxyXG4gICAgXSk7XHJcbiAgICAvLyAtLS0gc2VhcmNoIGNyaXRlcmlhIC0tLVxyXG4gICAgY29uc3Qgc2VhcmNoQ3JpdGVyaWE6IFtzdHJpbmcsIHN0cmluZ11bXSA9IHRoaXMuc2VhcmNoQ3JpdGVyaWE7XHJcblxyXG4gICAgY29uc3QgeyBoZWFkZXJzLCByb3dzIH0gPSB0aGlzLmV4cG9ydFNlcnZpY2UucHJlcGFyZUV4cG9ydFRhYmxlKHRoaXMuZGF0YSwgdGhpcy5jb2x1bW5EZWZzLCB7XHJcbiAgICAgIGN1cnJlbmN5RmllbGRzOiBbJ3BheUluQW1vdW50JywgJ3BheU91dEFtb3VudCcsXHJcbiAgICAgICAgJ3RyYW5zYWN0aW9uQ29tbWlzc2lvbicsICdiZW5lRGVkdWN0QW1vdW50JywgJ3hNc0NvbW1pc3Npb25TaGFyZScsICd4bUV4Y2hhbmdlVmFyaWF0aW9uJyxcclxuICAgICAgICAneE1zQmVuZURlZHVjdFNoYXJlJywgJ3JldmVudWVQZXJUcmFuc2FjdGlvbicsICd0b3RhbFNldHRsZUFtb3VudCdcclxuICAgICAgXSxcclxuICAgICAgcmF0ZUZpZWxkczogWyd1c2RSYXRlJywgJ2V6UmVtaXRTZWxsTWFyZ2luJywgJ2V6UmVtaXRTZWxsUmF0ZScsICdiYW5rU2VsbFJhdGUnLCAndXNkUmF0ZUFwcGxpZWRQYXlvdXQnLF1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZXhwb3J0U2VydmljZS5leHBvcnRUb1BkZlVuaXZlcnNhbCh0aXRsZSwgbWV0YWRhdGEsIHNlYXJjaENyaXRlcmlhLCBoZWFkZXJzLCByb3dzLCAnUmV2ZW51ZV9QZXJfVHJhbnNhY3Rpb24ucGRmJylcclxuICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdQREYgZXhwb3J0IGNvbXBsZXRlZC4nKTtcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignUERGIGV4cG9ydCBmYWlsZWQ6JywgZXJyKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVTZWFyY2goY3JpdGVyaWE6IGFueSkge1xyXG4gICAgdGhpcy5zZWFyY2hDcml0ZXJpYSA9IGNyaXRlcmlhLnNlYXJjaENyaXRlcmlhO1xyXG4gICAgdGhpcy5yZXBvcnREYXRlID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xyXG4gICAgdGhpcy5yZXBvcnREYXRlID0gZm9ybWF0RGF0ZSh0aGlzLnJlcG9ydERhdGUsICdkZC9NTS95eXl5IGhoOm1tIGEnLCAnZW4tVVMnKTtcclxuICAgIGNvbnN0IG1vZGFsID0gY3JpdGVyaWEubW9kYWw7XHJcbiAgICB0aGlzLnVzZXIgPSB0aGlzLnN5c1VzZXJJZDtcclxuICAgIHRoaXMuZnJvbURhdGUgPSBmb3JtYXREYXRlKG1vZGFsLmZyb21EYXRlLCAnZGQvTU0veXl5eSBoaDptbSBhJywgJ2VuLVVTJykuc2xpY2UoMCwxMCk7XHJcbiAgICB0aGlzLnRvRGF0ZSA9IGZvcm1hdERhdGUobW9kYWwudG9EYXRlLCAnZGQvTU0veXl5eSBoaDptbSBhJywgJ2VuLVVTJykuc2xpY2UoMCwxMCk7XHJcbiAgICBjb25zb2xlLmxvZyhtb2RhbCk7XHJcbiAgICAvLyBDb2RlIEZvciBNZXRhIERhdGFcclxuICAgIHRoaXMubWV0YURhdGFPbmUgPSB7XHJcbiAgICAgICdSZXBvcnQgUGVyaW9kJzogdGhpcy5mcm9tRGF0ZSArIFwiIC0gXCIgKyB0aGlzLnRvRGF0ZSxcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm1ldGFEYXRhVHdvID0ge1xyXG4gICAgICAnUmVwb3J0IFVzZXIgJiBUaW1lJzogdGhpcy51c2VyK1wiIEAgXCIrdGhpcy5yZXBvcnREYXRlLFxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNlYXJjaERhdGEgPSB7XHJcbiAgICAgIFwiU3RhcnREYXRlXCI6IG1vZGFsLmZyb21EYXRlLFxyXG4gICAgICBcIkVuZERhdGVcIjogbW9kYWwudG9EYXRlLFxyXG4gICAgICBcIlNlbmRDb3VudHJ5Q29kZVwiOiBtb2RhbC5zZW5kQ291bnRyeSxcclxuICAgICAgXCJSZWN2Q291bnRyeUNvZGVcIjogbW9kYWwucmVjZWl2ZUNvdW50cnksXHJcbiAgICAgIFwic2VuZEJ1c2luZXNzUGFydG5lcklkXCI6IG1vZGFsLnNlbmRCdXNpbmVzc1BhcnRuZXIsXHJcbiAgICAgIFwiUmVjdkJ1c2luZXNzUGFydGVucklkXCI6IG1vZGFsLnJlY3ZCdXNpbmVzc1BhcnRuZXIsXHJcbiAgICAgIFwiVHJhbnNhY3Rpb25TdGF0dXNcIjogbW9kYWwudHJhbnNhY3Rpb25TdGF0dXMuam9pbihcIixcIilcclxuICAgIH1cclxuICAgIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlcy5Mb2FkaW5nO1xyXG4gICAgdGhpcy5yZXBvcnRTZXJ2aWNlLmdldFJldmVudWVQZXJUcmFuc2FjdGlvblJlcG9ydChzZWFyY2hEYXRhKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kYXRhID0gZGF0YTtcclxuICAgICAgICAgIHRoaXMuZmlsdGVyZWREYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmRhdGEpKTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMuZGF0YSk7XHJcbiAgICAgICAgICB0aGlzLm5vRGF0YUZvdW5kID0gZGF0YT8ubGVuZ3RoID09PSAwID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZXMuQ29tcGxldGU7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zaG93UmVwb3J0ID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlcy5Db21wbGV0ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBoYW5kbGVGb3JtVmFsaWQoaXNWYWxpZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5pc0Zvcm1WYWxpZCA9IGlzVmFsaWQ7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8bGliLXNlYXJjaC1maWx0ZXIgW1JlcG9ydE5hbWVdPVwiUmVwb3J0TmFtZVwiIChzZWFyY2hDbGlja2VkKT1cImhhbmRsZVNlYXJjaCgkZXZlbnQpXCIgKGZvcm1WYWxpZCk9XCJoYW5kbGVGb3JtVmFsaWQoJGV2ZW50KVwiPlxyXG48L2xpYi1zZWFyY2gtZmlsdGVyPlxyXG48YXBwLWxvYWRlciBjbGFzcz1cIlwiICpuZ0lmPVwibG9hZGluZ1N0YXRlID09IENvbXBvbmVudExvYWRpbmdTdGF0ZS5Mb2FkaW5nXCI+PC9hcHAtbG9hZGVyPlxyXG48c2VjdGlvbiAqbmdJZj1cInNob3dSZXBvcnQgJiYgaXNGb3JtVmFsaWRcIiBjbGFzcz1cIm15LTIgbXgtMVwiPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbm9EYXRhRm91bmRcIj5cclxuICAgICAgICA8bGliLW1ldGFkYXRhIFtyZXBvcnROYW1lXT1cIlJlcG9ydE5hbWVcIiBbc2hvd21ldGFEYXRhT25lXT1cInRydWVcIiBbc2hvd21ldGFEYXRhVHdvXT1cInRydWVcIlxyXG4gICAgICAgICAgICBbbWV0YURhdGFPbmVdPVwibWV0YURhdGFPbmVcIiBbbWV0YURhdGFUd29dPVwibWV0YURhdGFUd29cIiAoZXhwb3J0RXZlbnQpPVwiaGFuZGxlRXhwb3J0KCRldmVudClcIlxyXG4gICAgICAgICAgICAoc2VhcmNoRXZlbnQpPVwib25TZWFyY2goJGV2ZW50KVwiPjwvbGliLW1ldGFkYXRhPlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCIgKm5nSWY9XCJmaWx0ZXJlZERhdGE/Lmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgIDxsaWItcGFnZS1zaXplLXNlbGVjdG9yIFt0b3RhbEVudHJpZXNdPVwiZGF0YT8ubGVuZ3RoXCIgW2RlZmF1bHRTaXplXT1cIicxNSdcIiBbZ3JpZEFwaV09XCJncmlkQXBpXCI+XHJcbiAgICAgICAgICAgICAgICA+PC9saWItcGFnZS1zaXplLXNlbGVjdG9yPlxyXG5cclxuICAgICAgICAgICAgPGFnLWdyaWQtYW5ndWxhciBjbGFzcz1cImFnLXRoZW1lLWFscGluZSB0cmFuc2FjdGlvbi1ncmlkXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtoZWlnaHQ6IDQwN3B4O1wiXHJcbiAgICAgICAgICAgICAgICBbY29sdW1uRGVmc109XCJjb2x1bW5EZWZzXCIgW2RlZmF1bHRDb2xEZWZdPVwiZGVmYXVsdENvbERlZlwiIFtyb3dEYXRhXT1cImZpbHRlcmVkRGF0YVwiIFtyb3dIZWlnaHRdPVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgW2hlYWRlckhlaWdodF09XCIyMlwiIFtwYWdpbmF0aW9uXT1cInRydWVcIiBbcGFnaW5hdGlvblBhZ2VTaXplXT1cInBhZ2VTaXplXCJcclxuICAgICAgICAgICAgICAgIChncmlkUmVhZHkpPVwib25HcmlkUmVhZHkoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICA8L2FnLWdyaWQtYW5ndWxhcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC13YXJuaW5nIG10LTNcIiAqbmdJZj1cIm5vRGF0YUZvdW5kXCI+XHJcbiAgICAgICAgTm8gRGF0YSBmb3VuZCBtYXRjaGluZyB5b3VyIHNlYXJjaCBjcml0ZXJpYS5cclxuICAgIDwvZGl2PlxyXG5cclxuPC9zZWN0aW9uPiJdfQ==
|