@experteam-mx/ngx-services
Version:
Angular common services for Experteam apps
183 lines • 24.4 kB
JavaScript
import { Inject, Injectable } from '@angular/core';
import { map } from 'rxjs';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common/http";
export class ApiReportsService {
environments;
http;
constructor(environments, http) {
this.environments = environments;
this.http = http;
}
/**
* Retrieves the URL for the reports API from the environment configurations.
*
* @return {string} The URL of the reports API.
*/
get url() {
return this.environments.apiReportsUrl ?? '';
}
/**
* Retrieves the list of collection payments
*
* @param {QueryParams} params - The query parameters used to fetch the collection payments.
* @return {Observable<CollectionPaymentsOut[]>} An observable that emits an array of collection payment.
*/
getCollectionPayments(params) {
return this.http.get(`${this.url}/collection-payment`, {
params
}).pipe(map(({ data }) => data));
}
/**
* Fetches the list of shipments with pending payments.
*
* @param {ExistPendingPaymentsIn} params - The parameters to filter pending payment shipments.
* @return {Observable<ShipmentsReportOut>} An observable emitting the shipments report data.
*/
getShipmentsPendingPayments(params) {
return this.http.get(`${this.url}/shipments-report`, {
params: {
...params,
limit: 1,
offset: 0,
to_landing: true,
shipment_status_code: 'PMPEN',
},
}).pipe(map(({ data }) => data));
}
/**
* Fetches shipment reports that are pending invoices based on the specified parameters.
* This method retrieves a filtered list of shipments with pending invoice statuses.
*
* @param {ExistPendingInvoicesIn} params - The parameters to filter the pending invoices, including
* shipment status codes, and pagination options.
* @return {Observable<ShipmentsReportOut>} An observable that emits the shipment report data based on the filter criteria.
*/
getShipmentsPendingInvoices(params) {
return this.http.get(`${this.url}/shipments-report`, {
params: {
...params,
limit: 1,
offset: 0,
to_landing: true,
'shipment_status_code[in]': 'IPMPE,IMPEN,IPPEN',
},
}).pipe(map(({ data }) => data));
}
/**
* Retrieves a report of shipments that do not have an associated invoice.
*
* @param params - The parameters to filter the shipments report. Includes details such as
* shipment status, invoice document ID, and other query parameters.
* @returns An observable that emits the shipments report data.
*/
getShipmentsWithoutInvoice(params) {
return this.http.get(`${this.url}/shipments-report`, {
params: {
...params,
limit: 1,
offset: 0,
to_landing: true,
shipment_status_code: 'COMPL',
'invoice_document_id[eq]': '[null]'
},
}).pipe(map(({ data }) => data));
}
/**
* Fetches shipment reports based on the provided query parameters.
*
* @param {QueryParams} params - The query parameters used to filter or define the shipment reports.
* @return {Observable<ShipmentsReportOut>} An observable emitting the shipment report data.
*/
getShipmentsReport(params) {
return this.http.get(`${this.url}/shipments-report`, { params })
.pipe(map(({ data }) => data));
}
/**
* Retrieves a report of external shipments based on the provided query parameters.
*
* @param {QueryParams} params - An object representing the query parameters for filtering the external shipments report.
* @return {Observable<ExternalShipmentsOut>} An observable that emits the external shipments report data.
*/
getExternalShipmentsReport(params) {
return this.http.get(`${this.url}/external-shipments-report`, { params })
.pipe(map(({ data }) => data));
}
/**
* Retrieves a report of promotion code discounts based on the provided query parameters.
*
* @param {QueryParams} params - An object representing the query parameters for filtering the promotion code discounts report.
* @return {Observable<PromotionCodeDiscountsOut>} An observable that emits the promotion code discounts report data.
*/
getPromotionCodeDiscounts(params) {
return this.http.get(`${this.url}/promotion-code-discounts`, {
params
}).pipe(map(({ data }) => data));
}
/**
* Retrieves the downloadable resource associated with the given transaction ID.
*
* @param {string} transactionId - The unique identifier of the transaction whose download is requested.
* @return {Observable<HttpResponse<ArrayBuffer>>} An observable that emits the HTTP response containing the resource in the form of an ArrayBuffer.
*/
getDownload(transactionId) {
return this.http.get(`${this.url}/download/${transactionId}`, {
observe: 'response',
responseType: 'arraybuffer'
});
}
/**
* Retrieves file check information for the specified transaction ID.
*
* @param {string} transactionId - The ID of the transaction for which the file check information is to be retrieved.
* @return {Observable<FileCheckOut>} An observable that emits the file check information associated with the given transaction ID.
*/
getFileCheck(transactionId) {
return this.http.get(`${this.url}/file-check/${transactionId}`)
.pipe(map(({ data }) => data));
}
/**
* Deletes the file check associated with the provided transaction ID.
*
* @param {string} transactionId - The unique identifier of the transaction whose file check is to be deleted.
* @return {Observable<{}>} An observable emitting the response data after the deletion is processed.
*/
deleteFileCheck(transactionId) {
return this.http.delete(`${this.url}/file-check/${transactionId}`)
.pipe(map(({ data }) => data));
}
/**
* Retrieves partial withdrawals based on the provided query parameters.
*
* @param {QueryParams} params - The parameters used to filter the list of partial withdrawals.
* @returns {Observable<PartialWithdrawalsOut>} An observable that emits the filtered list of partial withdrawals.
*/
getPartialWithdrawals(params) {
return this.http.get(`${this.url}/partial-withdrawals`, {
params
})
.pipe(map(({ data }) => data));
}
/**
* Retrieves a list of invoices based on the provided query parameters.
*
* @param params - The query parameters used to filter the invoices.
* @returns An observable that emits the list of invoices.
*/
getInvoices(params) {
return this.http.get(`${this.url}/invoices`, { params })
.pipe(map(({ data }) => data));
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiReportsService, deps: [{ token: 'env' }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiReportsService, providedIn: 'root' });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiReportsService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root'
}]
}], ctorParameters: () => [{ type: undefined, decorators: [{
type: Inject,
args: ['env']
}] }, { type: i1.HttpClient }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXJlcG9ydHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4cGVydGVhbS1teC9uZ3gtc2VydmljZXMvc3JjL2xpYi9hcGlzL2FwaS1yZXBvcnRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFHbEQsT0FBTyxFQUFFLEdBQUcsRUFBYyxNQUFNLE1BQU0sQ0FBQTs7O0FBZXRDLE1BQU0sT0FBTyxpQkFBaUI7SUFFSDtJQUNmO0lBRlYsWUFDeUIsWUFBeUIsRUFDeEMsSUFBZ0I7UUFERCxpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUN4QyxTQUFJLEdBQUosSUFBSSxDQUFZO0lBQ3RCLENBQUM7SUFFTDs7OztPQUlHO0lBQ0gsSUFBSSxHQUFHO1FBQ0wsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUE7SUFDOUMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gscUJBQXFCLENBQUUsTUFBbUI7UUFDeEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBb0MsR0FBRyxJQUFJLENBQUMsR0FBRyxxQkFBcUIsRUFBRTtZQUN4RixNQUFNO1NBQ1AsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILDJCQUEyQixDQUFFLE1BQThCO1FBQ3pELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWlDLEdBQUcsSUFBSSxDQUFDLEdBQUcsbUJBQW1CLEVBQUU7WUFDbkYsTUFBTSxFQUFFO2dCQUNOLEdBQUcsTUFBTTtnQkFDVCxLQUFLLEVBQUUsQ0FBQztnQkFDUixNQUFNLEVBQUUsQ0FB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QUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4uL25neC1zZXJ2aWNlcy5tb2RlbHMnXHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJ1xyXG5pbXBvcnQgeyBtYXAsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJ1xyXG5pbXBvcnQgeyBBcGlTdWNjZXNzLCBRdWVyeVBhcmFtcyB9IGZyb20gJy4vbW9kZWxzL2FwaS5tb2RlbHMnXHJcbmltcG9ydCB7XHJcbiAgQ29sbGVjdGlvblBheW1lbnRzT3V0LFxyXG4gIEV4aXN0UGVuZGluZ0ludm9pY2VzSW4sXHJcbiAgRXhpc3RQZW5kaW5nUGF5bWVudHNJbixcclxuICBFeHRlcm5hbFNoaXBtZW50c091dCxcclxuICBGaWxlQ2hlY2tPdXQsIEludm9pY2VzT3V0LCBQYXJ0aWFsV2l0aGRyYXdhbHNPdXQsXHJcbiAgUHJvbW90aW9uQ29kZURpc2NvdW50c091dCxcclxuICBTaGlwbWVudHNSZXBvcnRPdXRcclxufSBmcm9tICcuL21vZGVscy9hcGktcmVwb3J0cy50eXBlcydcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEFwaVJlcG9ydHNTZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3RvciAoXHJcbiAgICBASW5qZWN0KCdlbnYnKSBwcml2YXRlIGVudmlyb25tZW50czogRW52aXJvbm1lbnQsXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnRcclxuICApIHsgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIFVSTCBmb3IgdGhlIHJlcG9ydHMgQVBJIGZyb20gdGhlIGVudmlyb25tZW50IGNvbmZpZ3VyYXRpb25zLlxyXG4gICAqXHJcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgVVJMIG9mIHRoZSByZXBvcnRzIEFQSS5cclxuICAgKi9cclxuICBnZXQgdXJsICgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuZW52aXJvbm1lbnRzLmFwaVJlcG9ydHNVcmwgPz8gJydcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyB0aGUgbGlzdCBvZiBjb2xsZWN0aW9uIHBheW1lbnRzXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1F1ZXJ5UGFyYW1zfSBwYXJhbXMgLSBUaGUgcXVlcnkgcGFyYW1ldGVycyB1c2VkIHRvIGZldGNoIHRoZSBjb2xsZWN0aW9uIHBheW1lbnRzLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8Q29sbGVjdGlvblBheW1lbnRzT3V0W10+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgYW4gYXJyYXkgb2YgY29sbGVjdGlvbiBwYXltZW50LlxyXG4gICAqL1xyXG4gIGdldENvbGxlY3Rpb25QYXltZW50cyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8Q29sbGVjdGlvblBheW1lbnRzT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPENvbGxlY3Rpb25QYXltZW50c091dD4+KGAke3RoaXMudXJsfS9jb2xsZWN0aW9uLXBheW1lbnRgLCB7XHJcbiAgICAgIHBhcmFtc1xyXG4gICAgfSkucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgdGhlIGxpc3Qgb2Ygc2hpcG1lbnRzIHdpdGggcGVuZGluZyBwYXltZW50cy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7RXhpc3RQZW5kaW5nUGF5bWVudHNJbn0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgdG8gZmlsdGVyIHBlbmRpbmcgcGF5bWVudCBzaGlwbWVudHMuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxTaGlwbWVudHNSZXBvcnRPdXQ+fSBBbiBvYnNlcnZhYmxlIGVtaXR0aW5nIHRoZSBzaGlwbWVudHMgcmVwb3J0IGRhdGEuXHJcbiAgICovXHJcbiAgZ2V0U2hpcG1lbnRzUGVuZGluZ1BheW1lbnRzIChwYXJhbXM6IEV4aXN0UGVuZGluZ1BheW1lbnRzSW4pOiBPYnNlcnZhYmxlPFNoaXBtZW50c1JlcG9ydE91dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxTaGlwbWVudHNSZXBvcnRPdXQ+PihgJHt0aGlzLnVybH0vc2hpcG1lbnRzLXJlcG9ydGAsIHtcclxuICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgLi4ucGFyYW1zLFxyXG4gICAgICAgIGxpbWl0OiAxLFxyXG4gICAgICAgIG9mZnNldDogMCxcclxuICAgICAgICB0b19sYW5kaW5nOiB0cnVlLFxyXG4gICAgICAgIHNoaXBtZW50X3N0YXR1c19jb2RlOiAnUE1QRU4nLFxyXG4gICAgICB9LFxyXG4gICAgfSkucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgc2hpcG1lbnQgcmVwb3J0cyB0aGF0IGFyZSBwZW5kaW5nIGludm9pY2VzIGJhc2VkIG9uIHRoZSBzcGVjaWZpZWQgcGFyYW1ldGVycy5cclxuICAgKiBUaGlzIG1ldGhvZCByZXRyaWV2ZXMgYSBmaWx0ZXJlZCBsaXN0IG9mIHNoaXBtZW50cyB3aXRoIHBlbmRpbmcgaW52b2ljZSBzdGF0dXNlcy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7RXhpc3RQZW5kaW5nSW52b2ljZXNJbn0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgdG8gZmlsdGVyIHRoZSBwZW5kaW5nIGludm9pY2VzLCBpbmNsdWRpbmdcclxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGlwbWVudCBzdGF0dXMgY29kZXMsIGFuZCBwYWdpbmF0aW9uIG9wdGlvbnMuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxTaGlwbWVudHNSZXBvcnRPdXQ+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHNoaXBtZW50IHJlcG9ydCBkYXRhIGJhc2VkIG9uIHRoZSBmaWx0ZXIgY3JpdGVyaWEuXHJcbiAgICovXHJcbiAgZ2V0U2hpcG1lbnRzUGVuZGluZ0ludm9pY2VzIChwYXJhbXM6IEV4aXN0UGVuZGluZ0ludm9pY2VzSW4pOiBPYnNlcnZhYmxlPFNoaXBtZW50c1JlcG9ydE91dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxTaGlwbWVudHNSZXBvcnRPdXQ+PihgJHt0aGlzLnVybH0vc2hpcG1lbnRzLXJlcG9ydGAsIHtcclxuICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgLi4ucGFyYW1zLFxyXG4gICAgICAgIGxpbWl0OiAxLFxyXG4gICAgICAgIG9mZnNldDogMCxcclxuICAgICAgICB0b19sYW5kaW5nOiB0cnVlLFxyXG4gICAgICAgICdzaGlwbWVudF9zdGF0dXNfY29kZVtpbl0nOiAnSVBNUEUsSU1QRU4sSVBQRU4nLFxyXG4gICAgICB9LFxyXG4gICAgfSkucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBhIHJlcG9ydCBvZiBzaGlwbWVudHMgdGhhdCBkbyBub3QgaGF2ZSBhbiBhc3NvY2lhdGVkIGludm9pY2UuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgdG8gZmlsdGVyIHRoZSBzaGlwbWVudHMgcmVwb3J0LiBJbmNsdWRlcyBkZXRhaWxzIHN1Y2ggYXNcclxuICAgKiAgICAgICAgICAgICAgICAgc2hpcG1lbnQgc3RhdHVzLCBpbnZvaWNlIGRvY3VtZW50IElELCBhbmQgb3RoZXIgcXVlcnkgcGFyYW1ldGVycy5cclxuICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHNoaXBtZW50cyByZXBvcnQgZGF0YS5cclxuICAgKi9cclxuICBnZXRTaGlwbWVudHNXaXRob3V0SW52b2ljZSAocGFyYW1zOiBFeGlzdFBlbmRpbmdJbnZvaWNlc0luKTogT2JzZXJ2YWJsZTxTaGlwbWVudHNSZXBvcnRPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8U2hpcG1lbnRzUmVwb3J0T3V0Pj4oYCR7dGhpcy51cmx9L3NoaXBtZW50cy1yZXBvcnRgLCB7XHJcbiAgICAgIHBhcmFtczoge1xyXG4gICAgICAgIC4uLnBhcmFtcyxcclxuICAgICAgICBsaW1pdDogMSxcclxuICAgICAgICBvZmZzZXQ6IDAsXHJcbiAgICAgICAgdG9fbGFuZGluZzogdHJ1ZSxcclxuICAgICAgICBzaGlwbWVudF9zdGF0dXNfY29kZTogJ0NPTVBMJyxcclxuICAgICAgICAnaW52b2ljZV9kb2N1bWVudF9pZFtlcV0nOiAnW251bGxdJ1xyXG4gICAgICB9LFxyXG4gICAgfSkucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgc2hpcG1lbnQgcmVwb3J0cyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcXVlcnkgcGFyYW1ldGVycy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIFRoZSBxdWVyeSBwYXJhbWV0ZXJzIHVzZWQgdG8gZmlsdGVyIG9yIGRlZmluZSB0aGUgc2hpcG1lbnQgcmVwb3J0cy5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPFNoaXBtZW50c1JlcG9ydE91dD59IEFuIG9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHNoaXBtZW50IHJlcG9ydCBkYXRhLlxyXG4gICAqL1xyXG4gIGdldFNoaXBtZW50c1JlcG9ydCAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8U2hpcG1lbnRzUmVwb3J0T3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPFNoaXBtZW50c1JlcG9ydE91dD4+KGAke3RoaXMudXJsfS9zaGlwbWVudHMtcmVwb3J0YCwgeyBwYXJhbXMgfSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSByZXBvcnQgb2YgZXh0ZXJuYWwgc2hpcG1lbnRzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBxdWVyeSBwYXJhbWV0ZXJzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gQW4gb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgcXVlcnkgcGFyYW1ldGVycyBmb3IgZmlsdGVyaW5nIHRoZSBleHRlcm5hbCBzaGlwbWVudHMgcmVwb3J0LlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8RXh0ZXJuYWxTaGlwbWVudHNPdXQ+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGV4dGVybmFsIHNoaXBtZW50cyByZXBvcnQgZGF0YS5cclxuICAgKi9cclxuICBnZXRFeHRlcm5hbFNoaXBtZW50c1JlcG9ydCAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8RXh0ZXJuYWxTaGlwbWVudHNPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8RXh0ZXJuYWxTaGlwbWVudHNPdXQ+PihgJHt0aGlzLnVybH0vZXh0ZXJuYWwtc2hpcG1lbnRzLXJlcG9ydGAsIHsgcGFyYW1zIH0pXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGEgcmVwb3J0IG9mIHByb21vdGlvbiBjb2RlIGRpc2NvdW50cyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcXVlcnkgcGFyYW1ldGVycy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIEFuIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHF1ZXJ5IHBhcmFtZXRlcnMgZm9yIGZpbHRlcmluZyB0aGUgcHJvbW90aW9uIGNvZGUgZGlzY291bnRzIHJlcG9ydC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPFByb21vdGlvbkNvZGVEaXNjb3VudHNPdXQ+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHByb21vdGlvbiBjb2RlIGRpc2NvdW50cyByZXBvcnQgZGF0YS5cclxuICAgKi9cclxuICBnZXRQcm9tb3Rpb25Db2RlRGlzY291bnRzIChwYXJhbXM6IFF1ZXJ5UGFyYW1zKTogT2JzZXJ2YWJsZTxQcm9tb3Rpb25Db2RlRGlzY291bnRzT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPFByb21vdGlvbkNvZGVEaXNjb3VudHNPdXQ+PihgJHt0aGlzLnVybH0vcHJvbW90aW9uLWNvZGUtZGlzY291bnRzYCwge1xyXG4gICAgICBwYXJhbXNcclxuICAgIH0pLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIGRvd25sb2FkYWJsZSByZXNvdXJjZSBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIHRyYW5zYWN0aW9uIElELlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRyYW5zYWN0aW9uSWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIHRyYW5zYWN0aW9uIHdob3NlIGRvd25sb2FkIGlzIHJlcXVlc3RlZC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxBcnJheUJ1ZmZlcj4+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIEhUVFAgcmVzcG9uc2UgY29udGFpbmluZyB0aGUgcmVzb3VyY2UgaW4gdGhlIGZvcm0gb2YgYW4gQXJyYXlCdWZmZXIuXHJcbiAgICovXHJcbiAgZ2V0RG93bmxvYWQgKHRyYW5zYWN0aW9uSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPEFycmF5QnVmZmVyPj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy51cmx9L2Rvd25sb2FkLyR7dHJhbnNhY3Rpb25JZH1gLCB7XHJcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZScsXHJcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJ1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBmaWxlIGNoZWNrIGluZm9ybWF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIHRyYW5zYWN0aW9uIElELlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRyYW5zYWN0aW9uSWQgLSBUaGUgSUQgb2YgdGhlIHRyYW5zYWN0aW9uIGZvciB3aGljaCB0aGUgZmlsZSBjaGVjayBpbmZvcm1hdGlvbiBpcyB0byBiZSByZXRyaWV2ZWQuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxGaWxlQ2hlY2tPdXQ+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGZpbGUgY2hlY2sgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiB0cmFuc2FjdGlvbiBJRC5cclxuICAgKi9cclxuICBnZXRGaWxlQ2hlY2sgKHRyYW5zYWN0aW9uSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8RmlsZUNoZWNrT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPEZpbGVDaGVja091dD4+KGAke3RoaXMudXJsfS9maWxlLWNoZWNrLyR7dHJhbnNhY3Rpb25JZH1gKVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlbGV0ZXMgdGhlIGZpbGUgY2hlY2sgYXNzb2NpYXRlZCB3aXRoIHRoZSBwcm92aWRlZCB0cmFuc2FjdGlvbiBJRC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0cmFuc2FjdGlvbklkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSB0cmFuc2FjdGlvbiB3aG9zZSBmaWxlIGNoZWNrIGlzIHRvIGJlIGRlbGV0ZWQuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTx7fT59IEFuIG9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHJlc3BvbnNlIGRhdGEgYWZ0ZXIgdGhlIGRlbGV0aW9uIGlzIHByb2Nlc3NlZC5cclxuICAgKi9cclxuICBkZWxldGVGaWxlQ2hlY2sgKHRyYW5zYWN0aW9uSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8e30+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPEFwaVN1Y2Nlc3M8e30+PihgJHt0aGlzLnVybH0vZmlsZS1jaGVjay8ke3RyYW5zYWN0aW9uSWR9YClcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgcGFydGlhbCB3aXRoZHJhd2FscyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcXVlcnkgcGFyYW1ldGVycy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIHVzZWQgdG8gZmlsdGVyIHRoZSBsaXN0IG9mIHBhcnRpYWwgd2l0aGRyYXdhbHMuXHJcbiAgICogQHJldHVybnMge09ic2VydmFibGU8UGFydGlhbFdpdGhkcmF3YWxzT3V0Pn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBmaWx0ZXJlZCBsaXN0IG9mIHBhcnRpYWwgd2l0aGRyYXdhbHMuXHJcbiAgICovXHJcbiAgZ2V0UGFydGlhbFdpdGhkcmF3YWxzIChwYXJhbXM6IFF1ZXJ5UGFyYW1zKTogT2JzZXJ2YWJsZTxQYXJ0aWFsV2l0aGRyYXdhbHNPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8UGFydGlhbFdpdGhkcmF3YWxzT3V0Pj4oYCR7dGhpcy51cmx9L3BhcnRpYWwtd2l0aGRyYXdhbHNgLCB7XHJcbiAgICAgIHBhcmFtc1xyXG4gICAgfSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIGludm9pY2VzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBxdWVyeSBwYXJhbWV0ZXJzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBxdWVyeSBwYXJhbWV0ZXJzIHVzZWQgdG8gZmlsdGVyIHRoZSBpbnZvaWNlcy5cclxuICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGxpc3Qgb2YgaW52b2ljZXMuXHJcbiAgICovXHJcbiAgZ2V0SW52b2ljZXMgKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPEludm9pY2VzT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPEludm9pY2VzT3V0Pj4oYCR7dGhpcy51cmx9L2ludm9pY2VzYCwgeyBwYXJhbXMgfSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG59XHJcbiJdfQ==