taxtank-core 0.32.0 → 0.32.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/collections/subscription/service-subscription.collection.mjs +3 -3
- package/esm2022/lib/collections/vehicle/best-vehicle-logbook.collection.mjs +18 -14
- package/esm2022/lib/collections/vehicle/vehicle-logbook.collection.mjs +10 -5
- package/esm2022/lib/db/Models/firm/client-invite.mjs +3 -3
- package/esm2022/lib/db/Models/subscription/service-product.mjs +1 -1
- package/esm2022/lib/db/Models/subscription/service-subscription.mjs +1 -1
- package/esm2022/lib/services/account-setup/account-setup.service.mjs +2 -2
- package/esm2022/lib/services/http/bank/bank-connection/bank-connection.service.mjs +4 -6
- package/esm2022/lib/services/http/chat/chat.service.mjs +4 -5
- package/esm2022/lib/services/http/chat/message.service.mjs +4 -5
- package/esm2022/lib/services/http/firm/client-invite/client-invite-messages.enum.mjs +5 -2
- package/esm2022/lib/services/http/firm/client-invite/client-invite.service.mjs +56 -63
- package/esm2022/lib/services/http/firm/client-movement/client-movement.service.mjs +32 -32
- package/esm2022/lib/services/http/rest/rest.service.mjs +23 -2
- package/esm2022/lib/services/http/subscription/service-payment-method/service-payment-method.service.mjs +4 -5
- package/esm2022/lib/services/http/subscription/service-subscription/subscription.service.mjs +4 -7
- package/fesm2022/taxtank-core.mjs +507 -488
- package/fesm2022/taxtank-core.mjs.map +1 -1
- package/lib/collections/vehicle/best-vehicle-logbook.collection.d.ts +2 -1
- package/lib/collections/vehicle/vehicle-logbook.collection.d.ts +3 -2
- package/lib/db/Models/firm/client-invite.d.ts +2 -2
- package/lib/db/Models/subscription/service-product.d.ts +2 -1
- package/lib/db/Models/subscription/service-subscription.d.ts +2 -0
- package/lib/services/http/bank/bank-connection/bank-connection.service.d.ts +1 -3
- package/lib/services/http/chat/chat.service.d.ts +2 -3
- package/lib/services/http/chat/message.service.d.ts +2 -3
- package/lib/services/http/firm/client-invite/client-invite-messages.enum.d.ts +5 -2
- package/lib/services/http/firm/client-invite/client-invite.service.d.ts +15 -14
- package/lib/services/http/firm/client-movement/client-movement.service.d.ts +19 -13
- package/lib/services/http/rest/rest.service.d.ts +13 -1
- package/lib/services/http/subscription/service-payment-method/service-payment-method.service.d.ts +2 -3
- package/lib/services/http/subscription/service-subscription/subscription.service.d.ts +2 -5
- package/package.json +1 -1
- package/lib/db/Models/address.d.ts.map +0 -1
- package/lib/db/Models/bank/bank-account-balance.d.ts.map +0 -1
- package/lib/db/Models/bank/bank-account-property.d.ts.map +0 -1
- package/lib/db/Models/bank/bank-account.d.ts.map +0 -1
- package/lib/db/Models/bank/bank-connection.d.ts.map +0 -1
- package/lib/db/Models/bank/bank-transaction-import.d.ts.map +0 -1
- package/lib/db/Models/bank/bank-transaction.d.ts.map +0 -1
- package/lib/db/Models/bank/bank.d.ts.map +0 -1
- package/lib/db/Models/bank/basiq-job.d.ts.map +0 -1
- package/lib/db/Models/chart-accounts/chart-accounts-depreciation.d.ts.map +0 -1
- package/lib/db/Models/chart-accounts/chart-accounts-heading.d.ts.map +0 -1
- package/lib/db/Models/chart-accounts/chart-accounts-meta-field.d.ts.map +0 -1
- package/lib/db/Models/chart-accounts/chart-accounts-value.d.ts.map +0 -1
- package/lib/db/Models/chart-accounts/chart-accounts.d.ts.map +0 -1
- package/lib/db/Models/client/client-details.d.ts.map +0 -1
- package/lib/db/Models/client/client-income-types.d.ts.map +0 -1
- package/lib/db/Models/client/occupation.d.ts.map +0 -1
- package/lib/db/Models/country.d.ts.map +0 -1
- package/lib/db/Models/depreciation/depreciation-capital-project.d.ts.map +0 -1
- package/lib/db/Models/depreciation/depreciation-forecast.d.ts.map +0 -1
- package/lib/db/Models/depreciation/depreciation.d.ts.map +0 -1
- package/lib/db/Models/document/document-base.d.ts.map +0 -1
- package/lib/db/Models/document/document-folder.d.ts.map +0 -1
- package/lib/db/Models/document/document.d.ts.map +0 -1
- package/lib/db/Models/document/property-document.d.ts.map +0 -1
- package/lib/db/Models/file.d.ts.map +0 -1
- package/lib/db/Models/firm/chat.d.ts.map +0 -1
- package/lib/db/Models/firm/client-invite.d.ts.map +0 -1
- package/lib/db/Models/firm/client-movement.d.ts.map +0 -1
- package/lib/db/Models/firm/employee-invite.d.ts.map +0 -1
- package/lib/db/Models/firm/firm-invite.d.ts.map +0 -1
- package/lib/db/Models/firm/firm.d.ts.map +0 -1
- package/lib/db/Models/firm/message-document.d.ts.map +0 -1
- package/lib/db/Models/firm/message.d.ts.map +0 -1
- package/lib/db/Models/holding/holding-sale.d.ts.map +0 -1
- package/lib/db/Models/incomeSource/income-source-forecast.d.ts.map +0 -1
- package/lib/db/Models/incomeSource/income-source-type.d.ts.map +0 -1
- package/lib/db/Models/incomeSource/income-source.d.ts.map +0 -1
- package/lib/db/Models/incomeSource/salary-forecast.d.ts.map +0 -1
- package/lib/db/Models/loan/borrowing-expense-loan.d.ts.map +0 -1
- package/lib/db/Models/loan/borrowing-expense.d.ts.map +0 -1
- package/lib/db/Models/loan/loan-payout.d.ts.map +0 -1
- package/lib/db/Models/loan/loan.d.ts.map +0 -1
- package/lib/db/Models/phone.d.ts.map +0 -1
- package/lib/db/Models/property/borrowing-report.d.ts.map +0 -1
- package/lib/db/Models/property/property-category-movement.d.ts.map +0 -1
- package/lib/db/Models/property/property-category.d.ts.map +0 -1
- package/lib/db/Models/property/property-forecast.d.ts.map +0 -1
- package/lib/db/Models/property/property-sale/property-sale-tax-exemption-meta-field.d.ts.map +0 -1
- package/lib/db/Models/property/property-sale/property-sale.d.ts.map +0 -1
- package/lib/db/Models/property/property-sale/tax-exemption-meta-field.d.ts.map +0 -1
- package/lib/db/Models/property/property-sale/tax-exemption.d.ts.map +0 -1
- package/lib/db/Models/property/property-share.d.ts.map +0 -1
- package/lib/db/Models/property/property-subscription.d.ts.map +0 -1
- package/lib/db/Models/property/property-valuation.d.ts.map +0 -1
- package/lib/db/Models/property/property.d.ts.map +0 -1
- package/lib/db/Models/service-notification.d.ts.map +0 -1
- package/lib/db/Models/sole/bas-report.d.ts.map +0 -1
- package/lib/db/Models/sole/sole-business-activity.d.ts.map +0 -1
- package/lib/db/Models/sole/sole-business-allocation.d.ts.map +0 -1
- package/lib/db/Models/sole/sole-business-loss-offset-rule.d.ts.map +0 -1
- package/lib/db/Models/sole/sole-business-loss.d.ts.map +0 -1
- package/lib/db/Models/sole/sole-business.d.ts.map +0 -1
- package/lib/db/Models/sole/sole-contact.d.ts.map +0 -1
- package/lib/db/Models/sole/sole-depreciation-method.d.ts.map +0 -1
- package/lib/db/Models/sole/sole-details.d.ts.map +0 -1
- package/lib/db/Models/sole/sole-forecast.d.ts.map +0 -1
- package/lib/db/Models/sole/sole-invoice-item.d.ts.map +0 -1
- package/lib/db/Models/sole/sole-invoice-template.d.ts.map +0 -1
- package/lib/db/Models/sole/sole-invoice.d.ts.map +0 -1
- package/lib/db/Models/spare/spare-document-category.d.ts.map +0 -1
- package/lib/db/Models/spare/spare-document.d.ts.map +0 -1
- package/lib/db/Models/subscription/service-payment-method.d.ts.map +0 -1
- package/lib/db/Models/subscription/service-payment.d.ts.map +0 -1
- package/lib/db/Models/subscription/service-price.d.ts.map +0 -1
- package/lib/db/Models/subscription/service-product.d.ts.map +0 -1
- package/lib/db/Models/subscription/service-subscription-item.d.ts.map +0 -1
- package/lib/db/Models/subscription/service-subscription.d.ts.map +0 -1
- package/lib/db/Models/tax-calculation.d.ts.map +0 -1
- package/lib/db/Models/tax-return/tax-return-category.d.ts.map +0 -1
- package/lib/db/Models/tax-return/tax-return-item.d.ts.map +0 -1
- package/lib/db/Models/tax-return/tax-return.d.ts.map +0 -1
- package/lib/db/Models/transaction/allocation-rule-condition.d.ts.map +0 -1
- package/lib/db/Models/transaction/allocation-rule-transaction-meta-field.d.ts.map +0 -1
- package/lib/db/Models/transaction/allocation-rule-transaction.d.ts.map +0 -1
- package/lib/db/Models/transaction/allocation-rule.d.ts.map +0 -1
- package/lib/db/Models/transaction/transaction-allocation.d.ts.map +0 -1
- package/lib/db/Models/transaction/transaction-meta-field.d.ts.map +0 -1
- package/lib/db/Models/transaction/transaction.d.ts.map +0 -1
- package/lib/db/Models/user/employee-details.d.ts.map +0 -1
- package/lib/db/Models/user/registration-invite.d.ts.map +0 -1
- package/lib/db/Models/user/user-event-setting.d.ts.map +0 -1
- package/lib/db/Models/user/user-event-type-category.d.ts.map +0 -1
- package/lib/db/Models/user/user-event-type.d.ts.map +0 -1
- package/lib/db/Models/user/user-event.d.ts.map +0 -1
- package/lib/db/Models/vehicle/vehicle-claim-details.d.ts.map +0 -1
- package/lib/db/Models/vehicle/vehicle-claim.d.ts.map +0 -1
- package/lib/db/Models/vehicle/vehicle-logbook.d.ts.map +0 -1
- package/lib/db/Models/vehicle/vehicle.d.ts.map +0 -1
- package/taxtank-core.d.ts.map +0 -1
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
export var ClientInviteMessages;
|
|
2
2
|
(function (ClientInviteMessages) {
|
|
3
3
|
ClientInviteMessages["TT_ADVISOR_INVITED"] = "You have Invited TaxTank Support successfully";
|
|
4
|
+
ClientInviteMessages["TT_INVITE_ACCEPT"] = "You successfully accepted the invitation";
|
|
4
5
|
ClientInviteMessages["REVOKE_TT_ADVISOR_CONFIRM"] = "Are you sure you want to revoke access?";
|
|
5
6
|
ClientInviteMessages["TT_ADVISOR_REVOKED"] = "Access revoked";
|
|
6
|
-
ClientInviteMessages["TT_INVITE_ACCEPT"] = "You successfully accepted the invitation";
|
|
7
7
|
ClientInviteMessages["SEND_INVITE_MESSAGES_TITLE"] = "TaxTank support is here to help";
|
|
8
8
|
ClientInviteMessages["SEND_INVITE_MESSAGES_DESCRIPTION"] = "Before inviting TaxTank support be sure to check out our help articles and message our support team.";
|
|
9
9
|
ClientInviteMessages["TT_ACCOUNTANT_INVITED"] = "Accountant invitation has been sent successfully";
|
|
10
10
|
ClientInviteMessages["TT_ACCOUNTANT_INVETED_TOOLTIP"] = "Need an accountant? TaxTank Accountants delivers virtual accounting service exclusive to TaxTank subscribers. Experience a fast, seamless, and cost-effective lodgement service that rewards your TaxTank efforts throughout the year. Our team of experienced accountants brings their expertise in tax and TaxTank to the virtual realm. It all starts with a 15-minute consultation that sets the stage for personalised service. With us, you\u2019ll receive the best of both worlds at tax time.";
|
|
11
|
+
ClientInviteMessages["CONFIRM_REJECT"] = "Are you sure you want to reject this invitation?";
|
|
12
|
+
ClientInviteMessages["REJECTED"] = "Invitation rejected";
|
|
13
|
+
ClientInviteMessages["ACCEPTED"] = "Client invitation accepted";
|
|
11
14
|
})(ClientInviteMessages || (ClientInviteMessages = {}));
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LWludml0ZS1tZXNzYWdlcy5lbnVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2h0dHAvZmlybS9jbGllbnQtaW52aXRlL2NsaWVudC1pbnZpdGUtbWVzc2FnZXMuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxvQkFlWDtBQWZELFdBQVksb0JBQW9CO0lBQzlCLDRGQUFvRSxDQUFBO0lBQ3BFLHFGQUE2RCxDQUFBO0lBQzdELDZGQUFxRSxDQUFBO0lBQ3JFLDZEQUFxQyxDQUFBO0lBQ3JDLHNGQUE4RCxDQUFBO0lBQzlELGlLQUF5SSxDQUFBO0lBQ3pJLGtHQUEwRSxDQUFBO0lBQzFFLGdpQkFHeUgsQ0FBQTtJQUN6SCwyRkFBbUUsQ0FBQTtJQUNuRSx3REFBZ0MsQ0FBQTtJQUNoQywrREFBdUMsQ0FBQTtBQUN6QyxDQUFDLEVBZlcsb0JBQW9CLEtBQXBCLG9CQUFvQixRQWUvQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIENsaWVudEludml0ZU1lc3NhZ2VzIHtcbiAgVFRfQURWSVNPUl9JTlZJVEVEID0gJ1lvdSBoYXZlIEludml0ZWQgVGF4VGFuayBTdXBwb3J0IHN1Y2Nlc3NmdWxseScsXG4gIFRUX0lOVklURV9BQ0NFUFQgPSAnWW91IHN1Y2Nlc3NmdWxseSBhY2NlcHRlZCB0aGUgaW52aXRhdGlvbicsXG4gIFJFVk9LRV9UVF9BRFZJU09SX0NPTkZJUk0gPSAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJldm9rZSBhY2Nlc3M/JyxcbiAgVFRfQURWSVNPUl9SRVZPS0VEID0gJ0FjY2VzcyByZXZva2VkJyxcbiAgU0VORF9JTlZJVEVfTUVTU0FHRVNfVElUTEUgPSAnVGF4VGFuayBzdXBwb3J0IGlzIGhlcmUgdG8gaGVscCcsXG4gIFNFTkRfSU5WSVRFX01FU1NBR0VTX0RFU0NSSVBUSU9OID0gJ0JlZm9yZSBpbnZpdGluZyBUYXhUYW5rIHN1cHBvcnQgYmUgc3VyZSB0byBjaGVjayBvdXQgb3VyIGhlbHAgYXJ0aWNsZXMgYW5kIG1lc3NhZ2Ugb3VyIHN1cHBvcnQgdGVhbS4nLFxuICBUVF9BQ0NPVU5UQU5UX0lOVklURUQgPSAnQWNjb3VudGFudCBpbnZpdGF0aW9uIGhhcyBiZWVuIHNlbnQgc3VjY2Vzc2Z1bGx5JyxcbiAgVFRfQUNDT1VOVEFOVF9JTlZFVEVEX1RPT0xUSVAgPSAnTmVlZCBhbiBhY2NvdW50YW50PyBUYXhUYW5rIEFjY291bnRhbnRzIGRlbGl2ZXJzIHZpcnR1YWwgYWNjb3VudGluZyBzZXJ2aWNlIGV4Y2x1c2l2ZSB0byBUYXhUYW5rIHN1YnNjcmliZXJzLiAnICtcbiAgJ0V4cGVyaWVuY2UgYSBmYXN0LCBzZWFtbGVzcywgYW5kIGNvc3QtZWZmZWN0aXZlIGxvZGdlbWVudCBzZXJ2aWNlIHRoYXQgcmV3YXJkcyB5b3VyIFRheFRhbmsgZWZmb3J0cyB0aHJvdWdob3V0IHRoZSB5ZWFyLicgK1xuICAnIE91ciB0ZWFtIG9mIGV4cGVyaWVuY2VkIGFjY291bnRhbnRzIGJyaW5ncyB0aGVpciBleHBlcnRpc2UgaW4gdGF4IGFuZCBUYXhUYW5rIHRvIHRoZSB2aXJ0dWFsIHJlYWxtLiBJdCBhbGwgc3RhcnRzIHdpdGggYSAxNS1taW51dGUgJyArXG4gICdjb25zdWx0YXRpb24gdGhhdCBzZXRzIHRoZSBzdGFnZSBmb3IgcGVyc29uYWxpc2VkIHNlcnZpY2UuIFdpdGggdXMsIHlvdeKAmWxsIHJlY2VpdmUgdGhlIGJlc3Qgb2YgYm90aCB3b3JsZHMgYXQgdGF4IHRpbWUuJyxcbiAgQ09ORklSTV9SRUpFQ1QgPSAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlamVjdCB0aGlzIGludml0YXRpb24/JyxcbiAgUkVKRUNURUQgPSAnSW52aXRhdGlvbiByZWplY3RlZCcsXG4gIEFDQ0VQVEVEID0gJ0NsaWVudCBpbnZpdGF0aW9uIGFjY2VwdGVkJ1xufVxuIl19
|
|
@@ -1,110 +1,103 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import cloneDeep from 'lodash/cloneDeep';
|
|
2
|
+
import { throwError } from 'rxjs';
|
|
3
|
+
import { catchError, map } from 'rxjs/operators';
|
|
5
4
|
import { plainToClass } from 'class-transformer';
|
|
6
|
-
import { RestService } from '../../rest/rest
|
|
5
|
+
import { RestService } from '../../rest/rest.service';
|
|
7
6
|
import { AppEvent, AppEventTypeEnum, ClientInvite } from '../../../../models';
|
|
8
|
-
import { UserEventTypeTypeEnum } from '../../../../db/Enums/user-event-type-type.enum';
|
|
9
7
|
import { ClientInviteCollection } from '../../../../collections';
|
|
8
|
+
import last from 'lodash/last';
|
|
9
|
+
import merge from 'lodash/merge';
|
|
10
10
|
import * as i0 from "@angular/core";
|
|
11
11
|
export class ClientInviteService extends RestService {
|
|
12
12
|
constructor() {
|
|
13
13
|
super(...arguments);
|
|
14
|
-
this.
|
|
14
|
+
this.endpointUri = 'clients/invites';
|
|
15
|
+
this.collectionClass = ClientInviteCollection;
|
|
15
16
|
this.modelClass = ClientInvite;
|
|
16
17
|
}
|
|
17
|
-
listenEvents() {
|
|
18
|
-
this.listenNotifications();
|
|
19
|
-
}
|
|
20
18
|
getFirmInvites() {
|
|
21
|
-
return super.get(`${this.
|
|
19
|
+
return super.get(`${this.apiUrl}/all`);
|
|
22
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* Get invite which employee is TaxTank Advisor
|
|
23
|
+
* @TODO move to collection? but we need to inject enviroment
|
|
24
|
+
*/
|
|
23
25
|
getTTAdvisor() {
|
|
24
|
-
return this.get()
|
|
25
|
-
.pipe(map((invites) => new ClientInviteCollection(invites).findBy('employee.email', this.environment.ttAdvisor) || null));
|
|
26
|
+
return this.get().pipe(map((invites) => invites.findBy('employee.email', this.environment.ttAdvisor)));
|
|
26
27
|
}
|
|
27
28
|
/**
|
|
28
|
-
* Import
|
|
29
|
-
* @param file
|
|
29
|
+
* Import clients from CSV file
|
|
30
30
|
*/
|
|
31
31
|
import(file) {
|
|
32
32
|
const formData = new FormData();
|
|
33
33
|
formData.append('file', file);
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
// cant use parent method because of different parameters
|
|
35
|
+
return this.http.post(`${this.apiUrl}/import`, formData).pipe(map((clientInvite) => clientInvite));
|
|
36
36
|
}
|
|
37
37
|
/**
|
|
38
38
|
* Accept client invitation from firm to user
|
|
39
|
-
* @param invite
|
|
40
39
|
*/
|
|
41
40
|
accept(invite) {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
//
|
|
46
|
-
|
|
47
|
-
this.
|
|
41
|
+
// cant use parent method because of custom specific handler
|
|
42
|
+
return this.http.put(`${this.apiUrl}/${invite.id}/accept`, invite).pipe(map(() => {
|
|
43
|
+
// @TODO remove when TaxReviewService refactored with the new rest and use there listenCSE instead
|
|
44
|
+
// TaxReviewService is listening client invites acception. With the new rest we are using listenCSE method, but old rest does not have this method.
|
|
45
|
+
// We need to refactor TaxReviewService with new rest first, then we can listenCSE and remove manual events
|
|
46
|
+
this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.CLIENT_INVITE_ACCEPTED, null));
|
|
47
|
+
this.handleResponse([invite], 'delete');
|
|
48
48
|
}));
|
|
49
49
|
}
|
|
50
50
|
/**
|
|
51
51
|
* Reject client invitation from firm to user
|
|
52
|
-
* @param invite
|
|
53
52
|
*/
|
|
54
53
|
reject(invite) {
|
|
55
|
-
return
|
|
56
|
-
.pipe(map((rejectedInvite) => {
|
|
57
|
-
const updatedInvite = plainToClass(ClientInvite, rejectedInvite);
|
|
58
|
-
// avoid cache changes
|
|
59
|
-
// @TODO make cache readonly
|
|
60
|
-
const tempCache = cloneDeep(this.cache);
|
|
61
|
-
replace(tempCache, plainToClass(ClientInvite, updatedInvite));
|
|
62
|
-
this.cache = tempCache;
|
|
63
|
-
this.updateCache();
|
|
64
|
-
return updatedInvite;
|
|
65
|
-
}));
|
|
54
|
+
return super.put(invite, null, `${this.apiUrl}/${invite.id}/reject`);
|
|
66
55
|
}
|
|
67
56
|
/**
|
|
68
57
|
* Resend invitation from firm to client
|
|
69
|
-
* @param invite
|
|
70
58
|
*/
|
|
71
59
|
resend(invite) {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
const tempCache = cloneDeep(this.cache);
|
|
78
|
-
replace(tempCache, plainToClass(ClientInvite, updatedInvite));
|
|
79
|
-
this.cache = tempCache;
|
|
80
|
-
this.updateCache();
|
|
81
|
-
return updatedInvite;
|
|
60
|
+
// cant use parent method because of custom specific handler
|
|
61
|
+
return this.http.post(`${this.apiUrl}/${invite.id}/resend`, null)
|
|
62
|
+
.pipe(map((inviteBase) => plainToClass(ClientInvite, inviteBase)), map((resentInvite) => {
|
|
63
|
+
this.handleResponse([resentInvite], 'put');
|
|
64
|
+
return resentInvite;
|
|
82
65
|
}));
|
|
83
66
|
}
|
|
84
67
|
/**
|
|
85
68
|
* Send invitation from client to firm
|
|
86
|
-
* @param invite
|
|
87
69
|
*/
|
|
88
70
|
inviteFirmByUser(invite) {
|
|
89
|
-
return
|
|
90
|
-
.pipe(
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
return newInvite;
|
|
71
|
+
return super.post(invite, null, `${this.environment.apiV2}/firms/invite`)
|
|
72
|
+
.pipe(catchError((error) => {
|
|
73
|
+
if (error.error.email) {
|
|
74
|
+
this.toastService.error(error.error.email[0]);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
this.toastService.error(error.error);
|
|
78
|
+
}
|
|
79
|
+
return throwError(error);
|
|
99
80
|
}));
|
|
100
81
|
}
|
|
101
82
|
/**
|
|
102
|
-
*
|
|
83
|
+
* Listem clientInvites db changes via mercure to update cache
|
|
84
|
+
* @TODO make it universal and move to parent
|
|
103
85
|
*/
|
|
104
|
-
|
|
105
|
-
this.
|
|
106
|
-
|
|
107
|
-
|
|
86
|
+
listenSSE() {
|
|
87
|
+
this.sseService.on('clientInvites')
|
|
88
|
+
.pipe(map((clientInvite) => plainToClass(ClientInvite, clientInvite)))
|
|
89
|
+
.subscribe((clientInvite) => {
|
|
90
|
+
// we got empty body when item deleted so we should get id from Api Platform data (@id)
|
|
91
|
+
const id = clientInvite.id ?? +last(clientInvite['@id'].split('/'));
|
|
92
|
+
switch (true) {
|
|
93
|
+
case !clientInvite.id:
|
|
94
|
+
this.updateCache([merge(clientInvite, { id })], 'delete');
|
|
95
|
+
break;
|
|
96
|
+
case this.hasInCache(id):
|
|
97
|
+
this.updateCache([clientInvite], 'put');
|
|
98
|
+
break;
|
|
99
|
+
case !this.hasInCache(id):
|
|
100
|
+
this.updateCache([clientInvite], 'post');
|
|
108
101
|
}
|
|
109
102
|
});
|
|
110
103
|
}
|
|
@@ -117,4 +110,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
117
110
|
providedIn: 'root'
|
|
118
111
|
}]
|
|
119
112
|
}] });
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LWludml0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2h0dHAvZmlybS9jbGllbnQtaW52aXRlL2NsaWVudC1pbnZpdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEQsT0FBTyxTQUFTLE1BQU0sa0JBQWtCLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBZ0IsTUFBTSxvQkFBb0IsQ0FBQztBQUU1RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN2RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFLakUsTUFBTSxPQUFPLG1CQUFvQixTQUFRLFdBQTJDO0lBSHBGOztRQUlFLFFBQUcsR0FBRyxpQkFBaUIsQ0FBQztRQUN4QixlQUFVLEdBQXdCLFlBQVksQ0FBQztLQXFIaEQ7SUFuSEMsWUFBWTtRQUNWLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFP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RyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEtBQUsscUJBQXFCLENBQUMsb0JBQW9CLElBQUksWUFBWSxDQUFDLFNBQVMsS0FBSyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsRUFBRTtnQkFDckssSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2FBQ3JCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQXRIVSxtQkFBbUI7bUhBQW5CLG1CQUFtQixjQUZsQixNQUFNOzs0RkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2xpZW50SW52aXRlIGFzIENsaWVudEludml0ZUJhc2UgfSBmcm9tICcuLi8uLi8uLi8uLi9kYi9Nb2RlbHMvZmlybS9jbGllbnQtaW52aXRlJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHJlcGxhY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9mdW5jdGlvbnMvYXJyYXknO1xuaW1wb3J0IGNsb25lRGVlcCBmcm9tICdsb2Rhc2gvY2xvbmVEZWVwJztcbmltcG9ydCB7IHBsYWluVG9DbGFzcyB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcmVzdC9yZXN0LW9sZC5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcEV2ZW50LCBBcHBFdmVudFR5cGVFbnVtLCBDbGllbnRJbnZpdGUsIE5vdGlmaWNhdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBJRXZlbnRMaXN0ZW5lciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVXNlckV2ZW50VHlwZVR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGIvRW51bXMvdXNlci1ldmVudC10eXBlLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBDbGllbnRJbnZpdGVDb2xsZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29sbGVjdGlvbnMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDbGllbnRJbnZpdGVTZXJ2aWNlIGV4dGVuZHMgUmVzdFNlcnZpY2U8Q2xpZW50SW52aXRlQmFzZSwgQ2xpZW50SW52aXRlPiBpbXBsZW1lbnRzIElFdmVudExpc3RlbmVyIHtcbiAgdXJsID0gJ2NsaWVudHMvaW52aXRlcyc7XG4gIG1vZGVsQ2xhc3M6IHR5cGVvZiBDbGllbnRJbnZpdGUgPSBDbGllbnRJbnZpdGU7XG5cbiAgbGlzdGVuRXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMubGlzdGVuTm90aWZpY2F0aW9ucygpO1xuICB9XG5cbiAgZ2V0RmlybUludml0ZXMoKTogT2JzZXJ2YWJsZTxDbGllbnRJbnZpdGVbXT4ge1xuICAgIHJldHVybiBzdXBlci5nZXQoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vJHt0aGlzLnVybH0vYWxsYCk7XG4gIH1cblxuICBnZXRUVEFkdmlzb3IoKTogT2JzZXJ2YWJsZTxDbGllbnRJbnZpdGU+IHtcbiAgICByZXR1cm4gdGhpcy5nZXQoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoaW52aXRlczogQ2xpZW50SW52aXRlW10pID0+IG5ldyBDbGllbnRJbnZpdGVDb2xsZWN0aW9uKGludml0ZXMpLmZpbmRCeSgnZW1wbG95ZWUuZW1haWwnLCB0aGlzLmVudmlyb25tZW50LnR0QWR2aXNvcikgfHwgbnVsbClcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGVtcGxveWVlcyBmb3IgZmlybSBmcm9tIENTViBmaWxlXG4gICAqIEBwYXJhbSBmaWxlXG4gICAqL1xuICBpbXBvcnQoZmlsZTogRmlsZSk6IE9ic2VydmFibGU8Q2xpZW50SW52aXRlW10+IHtcbiAgICBjb25zdCBmb3JtRGF0YTogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS8ke3RoaXMudXJsfS9pbXBvcnRgLCBmb3JtRGF0YSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKGNsaWVudEludml0ZTogQ2xpZW50SW52aXRlW10pID0+IGNsaWVudEludml0ZSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQWNjZXB0IGNsaWVudCBpbnZpdGF0aW9uIGZyb20gZmlybSB0byB1c2VyXG4gICAqIEBwYXJhbSBpbnZpdGVcbiAgICovXG4gIGFjY2VwdChpbnZpdGU6IENsaWVudEludml0ZSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9LyR7dGhpcy51cmx9LyR7aW52aXRlLmlkfS9hY2NlcHRgLCBudWxsKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoKTogdm9pZCA9PiB7XG4gICAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKG5ldyBBcHBFdmVudChBcHBFdmVudFR5cGVFbnVtLkNMSUVOVF9JTlZJVEVfQUNDRVBURUQsIGludml0ZSkpO1xuICAgICAgICAgIC8vIHNldCBjYWNoZSB3aXRob3V0IGFjY2VwdGVkIGludml0ZVxuICAgICAgICAgIHRoaXMuY2FjaGUgPSB0aGlzLmNhY2hlLmZpbHRlcigoY2xpZW50SW52aXRlOiBDbGllbnRJbnZpdGUpID0+IGludml0ZS5pZCAhPT0gY2xpZW50SW52aXRlLmlkKTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNhY2hlKCk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlamVjdCBjbGllbnQgaW52aXRhdGlvbiBmcm9tIGZpcm0gdG8gdXNlclxuICAgKiBAcGFyYW0gaW52aXRlXG4gICAqL1xuICByZWplY3QoaW52aXRlOiBDbGllbnRJbnZpdGUpOiBPYnNlcnZhYmxlPENsaWVudEludml0ZT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS8ke3RoaXMudXJsfS8ke2ludml0ZS5pZH0vcmVqZWN0YCwgbnVsbClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlamVjdGVkSW52aXRlOiBDbGllbnRJbnZpdGVCYXNlKTogQ2xpZW50SW52aXRlID0+IHtcbiAgICAgICAgICBjb25zdCB1cGRhdGVkSW52aXRlOiBDbGllbnRJbnZpdGUgPSBwbGFpblRvQ2xhc3MoQ2xpZW50SW52aXRlLCByZWplY3RlZEludml0ZSk7XG4gICAgICAgICAgLy8gYXZvaWQgY2FjaGUgY2hhbmdlc1xuICAgICAgICAgIC8vIEBUT0RPIG1ha2UgY2FjaGUgcmVhZG9ubHlcbiAgICAgICAgICBjb25zdCB0ZW1wQ2FjaGU6IENsaWVudEludml0ZVtdID0gY2xvbmVEZWVwKHRoaXMuY2FjaGUpO1xuICAgICAgICAgIHJlcGxhY2UodGVtcENhY2hlLCBwbGFpblRvQ2xhc3MoQ2xpZW50SW52aXRlLCB1cGRhdGVkSW52aXRlKSk7XG4gICAgICAgICAgdGhpcy5jYWNoZSA9IHRlbXBDYWNoZTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNhY2hlKCk7XG4gICAgICAgICAgcmV0dXJuIHVwZGF0ZWRJbnZpdGU7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2VuZCBpbnZpdGF0aW9uIGZyb20gZmlybSB0byBjbGllbnRcbiAgICogQHBhcmFtIGludml0ZVxuICAgKi9cbiAgcmVzZW5kKGludml0ZTogQ2xpZW50SW52aXRlKTogT2JzZXJ2YWJsZTxDbGllbnRJbnZpdGU+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vJHt0aGlzLnVybH0vJHtpbnZpdGUuaWR9L3Jlc2VuZGAsIG51bGwpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZWplY3RlZEludml0ZTogQ2xpZW50SW52aXRlQmFzZSk6IENsaWVudEludml0ZSA9PiB7XG4gICAgICAgICAgY29uc3QgdXBkYXRlZEludml0ZTogQ2xpZW50SW52aXRlID0gcGxhaW5Ub0NsYXNzKENsaWVudEludml0ZSwgcmVqZWN0ZWRJbnZpdGUpO1xuICAgICAgICAgIC8vIGF2b2lkIGNhY2hlIGNoYW5nZXNcbiAgICAgICAgICAvLyBAVE9ETyBtYWtlIGNhY2hlIHJlYWRvbmx5XG4gICAgICAgICAgY29uc3QgdGVtcENhY2hlOiBDbGllbnRJbnZpdGVbXSA9IGNsb25lRGVlcCh0aGlzLmNhY2hlKTtcbiAgICAgICAgICByZXBsYWNlKHRlbXBDYWNoZSwgcGxhaW5Ub0NsYXNzKENsaWVudEludml0ZSwgdXBkYXRlZEludml0ZSkpO1xuICAgICAgICAgIHRoaXMuY2FjaGUgPSB0ZW1wQ2FjaGU7XG4gICAgICAgICAgdGhpcy51cGRhdGVDYWNoZSgpO1xuICAgICAgICAgIHJldHVybiB1cGRhdGVkSW52aXRlO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZW5kIGludml0YXRpb24gZnJvbSBjbGllbnQgdG8gZmlybVxuICAgKiBAcGFyYW0gaW52aXRlXG4gICAqL1xuICBpbnZpdGVGaXJtQnlVc2VyKGludml0ZTogQ2xpZW50SW52aXRlKTogT2JzZXJ2YWJsZTxDbGllbnRJbnZpdGU+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vZmlybXMvaW52aXRlYCwgaW52aXRlKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoaW52aXRlQmFzZTogQ2xpZW50SW52aXRlQmFzZSk6IENsaWVudEludml0ZSA9PiB7XG4gICAgICAgICAgY29uc3QgbmV3SW52aXRlOiBDbGllbnRJbnZpdGUgPSBwbGFpblRvQ2xhc3MoQ2xpZW50SW52aXRlLCBpbnZpdGVCYXNlKTtcbiAgICAgICAgICAvLyBhdm9pZCBjYWNoZSBjaGFuZ2VzXG4gICAgICAgICAgLy8gQFRPRE8gbWFrZSBjYWNoZSByZWFkb25seVxuICAgICAgICAgIGNvbnN0IHRlbXBDYWNoZTogQ2xpZW50SW52aXRlW10gPSBjbG9uZURlZXAodGhpcy5jYWNoZSk7XG4gICAgICAgICAgdGVtcENhY2hlLnB1c2gobmV3SW52aXRlKTtcbiAgICAgICAgICB0aGlzLmNhY2hlID0gdGVtcENhY2hlO1xuICAgICAgICAgIHRoaXMudXBkYXRlQ2FjaGUoKTtcbiAgICAgICAgICByZXR1cm4gbmV3SW52aXRlO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCBjYWNoZSBvbiBjbGllbnQvZmlybSBpbnZpdGUgZXZlbnRzXG4gICAqL1xuICBsaXN0ZW5Ob3RpZmljYXRpb25zKCk6IHZvaWQge1xuICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5vbihBcHBFdmVudFR5cGVFbnVtLk5PVElGSUNBVElPTl9BRERFRCkuc3Vic2NyaWJlKChub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbikgPT4ge1xuICAgICAgaWYgKCFub3RpZmljYXRpb24uaXNSZWFkICYmIChub3RpZmljYXRpb24uZXZlbnRUeXBlID09PSBVc2VyRXZlbnRUeXBlVHlwZUVudW0uRklSTV9JTlZJVEVfQUNDRVBURUQgfHwgbm90aWZpY2F0aW9uLmV2ZW50VHlwZSA9PT0gVXNlckV2ZW50VHlwZVR5cGVFbnVtLkNMSUVOVF9JTlZJVEUpKSB7XG4gICAgICAgIHRoaXMucmVmcmVzaENhY2hlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LWludml0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2h0dHAvZmlybS9jbGllbnQtaW52aXRlL2NsaWVudC1pbnZpdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFOUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFakUsT0FBTyxJQUFJLE1BQU0sYUFBYSxDQUFDO0FBQy9CLE9BQU8sS0FBSyxNQUFNLGNBQWMsQ0FBQzs7QUFLakMsTUFBTSxPQUFPLG1CQUFvQixTQUFRLFdBQW1FO0lBSDVHOztRQUlZLGdCQUFXLEdBQUcsaUJBQWlCLENBQUM7UUFDMUMsb0JBQWUsR0FBa0Msc0JBQXNCLENBQUM7UUFDeEUsZUFBVSxHQUF3QixZQUFZLENBQUM7S0FpSGhEO0lBL0dDLGNBQWM7UUFDWixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxNQUFNLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FDcEIsR0FBRyxDQUFDLENB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YW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENsaWVudEludml0ZSBhcyBDbGllbnRJbnZpdGVCYXNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGIvTW9kZWxzL2Zpcm0vY2xpZW50LWludml0ZSc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBwbGFpblRvQ2xhc3MgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3Jlc3QvcmVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcEV2ZW50LCBBcHBFdmVudFR5cGVFbnVtLCBDbGllbnRJbnZpdGUgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgSUV2ZW50TGlzdGVuZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENsaWVudEludml0ZUNvbGxlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCBsYXN0IGZyb20gJ2xvZGFzaC9sYXN0JztcbmltcG9ydCBtZXJnZSBmcm9tICdsb2Rhc2gvbWVyZ2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDbGllbnRJbnZpdGVTZXJ2aWNlIGV4dGVuZHMgUmVzdFNlcnZpY2U8Q2xpZW50SW52aXRlQmFzZSwgQ2xpZW50SW52aXRlLCBDbGllbnRJbnZpdGVDb2xsZWN0aW9uPiBpbXBsZW1lbnRzIElFdmVudExpc3RlbmVyIHtcbiAgcHJvdGVjdGVkIGVuZHBvaW50VXJpID0gJ2NsaWVudHMvaW52aXRlcyc7XG4gIGNvbGxlY3Rpb25DbGFzczogdHlwZW9mIENsaWVudEludml0ZUNvbGxlY3Rpb24gPSBDbGllbnRJbnZpdGVDb2xsZWN0aW9uO1xuICBtb2RlbENsYXNzOiB0eXBlb2YgQ2xpZW50SW52aXRlID0gQ2xpZW50SW52aXRlO1xuICBcbiAgZ2V0RmlybUludml0ZXMoKTogT2JzZXJ2YWJsZTxDbGllbnRJbnZpdGVDb2xsZWN0aW9uPiB7XG4gICAgcmV0dXJuIHN1cGVyLmdldChgJHt0aGlzLmFwaVVybH0vYWxsYCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGludml0ZSB3aGljaCBlbXBsb3llZSBpcyBUYXhUYW5rIEFkdmlzb3JcbiAgICogQFRPRE8gbW92ZSB0byBjb2xsZWN0aW9uPyBidXQgd2UgbmVlZCB0byBpbmplY3QgZW52aXJvbWVudCBcbiAgICovXG4gIGdldFRUQWR2aXNvcigpOiBPYnNlcnZhYmxlPENsaWVudEludml0ZT4ge1xuICAgIHJldHVybiB0aGlzLmdldCgpLnBpcGUoXG4gICAgICBtYXAoKGludml0ZXM6IENsaWVudEludml0ZUNvbGxlY3Rpb24pID0+IGludml0ZXMuZmluZEJ5KCdlbXBsb3llZS5lbWFpbCcsIHRoaXMuZW52aXJvbm1lbnQudHRBZHZpc29yKSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBjbGllbnRzIGZyb20gQ1NWIGZpbGVcbiAgICovXG4gIGltcG9ydChmaWxlOiBGaWxlKTogT2JzZXJ2YWJsZTxDbGllbnRJbnZpdGVbXT4ge1xuICAgIGNvbnN0IGZvcm1EYXRhOiBGb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUpO1xuXG4gICAgLy8gY2FudCB1c2UgcGFyZW50IG1ldGhvZCBiZWNhdXNlIG9mIGRpZmZlcmVudCBwYXJhbWV0ZXJzXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuYXBpVXJsfS9pbXBvcnRgLCBmb3JtRGF0YSkucGlwZShcbiAgICAgIG1hcCgoY2xpZW50SW52aXRlOiBDbGllbnRJbnZpdGVbXSkgPT4gY2xpZW50SW52aXRlKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQWNjZXB0IGNsaWVudCBpbnZpdGF0aW9uIGZyb20gZmlybSB0byB1c2VyXG4gICAqL1xuICBhY2NlcHQoaW52aXRlOiBDbGllbnRJbnZpdGUpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAvLyBjYW50IHVzZSBwYXJlbnQgbWV0aG9kIGJlY2F1c2Ugb2YgY3VzdG9tIHNwZWNpZmljIGhhbmRsZXJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChgJHt0aGlzLmFwaVVybH0vJHtpbnZpdGUuaWR9L2FjY2VwdGAsIGludml0ZSkucGlwZShcbiAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgIC8vIEBUT0RPIHJlbW92ZSB3aGVuIFRheFJldmlld1NlcnZpY2UgcmVmYWN0b3JlZCB3aXRoIHRoZSBuZXcgcmVzdCBhbmQgdXNlIHRoZXJlIGxpc3RlbkNTRSBpbnN0ZWFkXG4gICAgICAgIC8vIFRheFJldmlld1NlcnZpY2UgaXMgbGlzdGVuaW5nIGNsaWVudCBpbnZpdGVzIGFjY2VwdGlvbi4gV2l0aCB0aGUgbmV3IHJlc3Qgd2UgYXJlIHVzaW5nIGxpc3RlbkNTRSBtZXRob2QsIGJ1dCBvbGQgcmVzdCBkb2VzIG5vdCBoYXZlIHRoaXMgbWV0aG9kLlxuICAgICAgICAvLyBXZSBuZWVkIHRvIHJlZmFjdG9yIFRheFJldmlld1NlcnZpY2Ugd2l0aCBuZXcgcmVzdCBmaXJzdCwgdGhlbiB3ZSBjYW4gbGlzdGVuQ1NFIGFuZCByZW1vdmUgbWFudWFsIGV2ZW50c1xuICAgICAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2UuZGlzcGF0Y2gobmV3IEFwcEV2ZW50KEFwcEV2ZW50VHlwZUVudW0uQ0xJRU5UX0lOVklURV9BQ0NFUFRFRCwgbnVsbCkpO1xuXG4gICAgICAgIHRoaXMuaGFuZGxlUmVzcG9uc2UoW2ludml0ZV0sICdkZWxldGUnKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWplY3QgY2xpZW50IGludml0YXRpb24gZnJvbSBmaXJtIHRvIHVzZXJcbiAgICovXG4gIHJlamVjdChpbnZpdGU6IENsaWVudEludml0ZSk6IE9ic2VydmFibGU8Q2xpZW50SW52aXRlPiB7XG4gICAgcmV0dXJuIHN1cGVyLnB1dChpbnZpdGUsIG51bGwsIGAke3RoaXMuYXBpVXJsfS8ke2ludml0ZS5pZH0vcmVqZWN0YCk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZW5kIGludml0YXRpb24gZnJvbSBmaXJtIHRvIGNsaWVudFxuICAgKi9cbiAgcmVzZW5kKGludml0ZTogQ2xpZW50SW52aXRlKTogT2JzZXJ2YWJsZTxDbGllbnRJbnZpdGU+IHtcbiAgICAvLyBjYW50IHVzZSBwYXJlbnQgbWV0aG9kIGJlY2F1c2Ugb2YgY3VzdG9tIHNwZWNpZmljIGhhbmRsZXJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5hcGlVcmx9LyR7aW52aXRlLmlkfS9yZXNlbmRgLCBudWxsKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoaW52aXRlQmFzZTogQ2xpZW50SW52aXRlQmFzZSkgPT4gcGxhaW5Ub0NsYXNzKENsaWVudEludml0ZSwgaW52aXRlQmFzZSkpLFxuICAgICAgICBtYXAoKHJlc2VudEludml0ZTogQ2xpZW50SW52aXRlKSA9PiB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVSZXNwb25zZShbcmVzZW50SW52aXRlXSwgJ3B1dCcpO1xuXG4gICAgICAgICAgcmV0dXJuIHJlc2VudEludml0ZTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU2VuZCBpbnZpdGF0aW9uIGZyb20gY2xpZW50IHRvIGZpcm1cbiAgICovXG4gIGludml0ZUZpcm1CeVVzZXIoaW52aXRlOiBDbGllbnRJbnZpdGUpOiBPYnNlcnZhYmxlPENsaWVudEludml0ZT4ge1xuICAgIHJldHVybiBzdXBlci5wb3N0KGludml0ZSwgbnVsbCwgYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vZmlybXMvaW52aXRlYClcbiAgICAgIC5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICBpZiAoZXJyb3IuZXJyb3IuZW1haWwpIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmVycm9yKGVycm9yLmVycm9yLmVtYWlsWzBdKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZXJyb3IoZXJyb3IuZXJyb3IpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVtIGNsaWVudEludml0ZXMgZGIgY2hhbmdlcyB2aWEgbWVyY3VyZSB0byB1cGRhdGUgY2FjaGVcbiAgICogQFRPRE8gbWFrZSBpdCB1bml2ZXJzYWwgYW5kIG1vdmUgdG8gcGFyZW50XG4gICAqL1xuICBsaXN0ZW5TU0UoKTogdm9pZCB7XG4gICAgdGhpcy5zc2VTZXJ2aWNlLm9uKCdjbGllbnRJbnZpdGVzJylcbiAgICAgIC5waXBlKG1hcCgoY2xpZW50SW52aXRlOiBDbGllbnRJbnZpdGVCYXNlKSA9PiBwbGFpblRvQ2xhc3MoQ2xpZW50SW52aXRlLCBjbGllbnRJbnZpdGUpKSlcbiAgICAgIC5zdWJzY3JpYmUoKGNsaWVudEludml0ZTogQ2xpZW50SW52aXRlKSA9PiB7XG5cbiAgICAgICAgLy8gd2UgZ290IGVtcHR5IGJvZHkgd2hlbiBpdGVtIGRlbGV0ZWQgc28gd2Ugc2hvdWxkIGdldCBpZCBmcm9tIEFwaSBQbGF0Zm9ybSBkYXRhIChAaWQpXG4gICAgICAgIGNvbnN0IGlkID0gY2xpZW50SW52aXRlLmlkID8/ICtsYXN0KGNsaWVudEludml0ZVsnQGlkJ10uc3BsaXQoJy8nKSk7XG5cbiAgICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgY2FzZSAhY2xpZW50SW52aXRlLmlkOlxuICAgICAgICAgICAgdGhpcy51cGRhdGVDYWNoZShbbWVyZ2UoY2xpZW50SW52aXRlLCB7aWR9KV0sICdkZWxldGUnKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSB0aGlzLmhhc0luQ2FjaGUoaWQpOlxuICAgICAgICAgICAgdGhpcy51cGRhdGVDYWNoZShbY2xpZW50SW52aXRlXSwgJ3B1dCcpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICF0aGlzLmhhc0luQ2FjaGUoaWQpOlxuICAgICAgICAgICAgdGhpcy51cGRhdGVDYWNoZShbY2xpZW50SW52aXRlXSwgJ3Bvc3QnKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgfVxufVxuIl19
|
|
@@ -3,31 +3,27 @@ import { forkJoin } from 'rxjs';
|
|
|
3
3
|
import { map } from 'rxjs/operators';
|
|
4
4
|
import { ClientMovementCollection } from '../../../../collections/client-movement.collection';
|
|
5
5
|
import { plainToClass } from 'class-transformer';
|
|
6
|
-
import { RestService } from '../../rest/rest
|
|
6
|
+
import { RestService } from '../../rest/rest.service';
|
|
7
7
|
import { ClientMovement } from '../../../../models/client/client-movement';
|
|
8
8
|
import { AppEvent } from '../../../../models/event/app-event';
|
|
9
9
|
import { AppEventTypeEnum } from '../../../../models/event/app-event-type.enum';
|
|
10
|
-
import {
|
|
10
|
+
import { ClientInvite } from '../../../../models';
|
|
11
11
|
import * as i0 from "@angular/core";
|
|
12
12
|
export class ClientMovementService extends RestService {
|
|
13
13
|
constructor() {
|
|
14
14
|
super(...arguments);
|
|
15
|
+
this.endpointUri = 'client-movements';
|
|
16
|
+
this.collectionClass = ClientMovementCollection;
|
|
15
17
|
this.modelClass = ClientMovement;
|
|
16
|
-
this.
|
|
17
|
-
this.
|
|
18
|
+
this.isApiPlatform = true;
|
|
19
|
+
this.disabledMethods = ['postBatch', 'delete', 'deleteBatch'];
|
|
18
20
|
}
|
|
19
21
|
listenEvents() {
|
|
20
|
-
|
|
21
|
-
this.
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* @TODO BaseRestService should return collection
|
|
25
|
-
*/
|
|
26
|
-
getAll() {
|
|
27
|
-
return this.get().pipe(map((clientMovements) => new ClientMovementCollection(clientMovements)));
|
|
22
|
+
// @TODO handle with mercure
|
|
23
|
+
this.listenCSE(ClientInvite, ['post', 'put', 'delete'], this.refreshCache);
|
|
28
24
|
}
|
|
29
25
|
getActive() {
|
|
30
|
-
return this.
|
|
26
|
+
return this.get().pipe(map((clientMovements) => clientMovements.active));
|
|
31
27
|
}
|
|
32
28
|
getTTAdvisor() {
|
|
33
29
|
return this.getActive()
|
|
@@ -36,18 +32,25 @@ export class ClientMovementService extends RestService {
|
|
|
36
32
|
getActiveByFirmType(type) {
|
|
37
33
|
return this.getActive().pipe(map((clientMovements) => clientMovements.getByFirmType(type)));
|
|
38
34
|
}
|
|
39
|
-
|
|
35
|
+
/**
|
|
36
|
+
* Method is using for transfer client between employees.
|
|
37
|
+
* On backend we close passed movement and create a new one instead
|
|
38
|
+
*/
|
|
39
|
+
put(movement) {
|
|
40
40
|
// extend base 'add' method and pass into it movement without id
|
|
41
|
-
return super.
|
|
41
|
+
return super.post(plainToClass(ClientMovement, Object.assign({}, movement, { id: null }))).pipe(map((updatedMovement) => {
|
|
42
42
|
// remove provided movement from cache
|
|
43
43
|
this.cache = this.cache.filter((item) => item.id !== movement.id);
|
|
44
|
-
this.updateCache();
|
|
44
|
+
this.updateCache([updatedMovement], 'post');
|
|
45
45
|
this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.CLIENT_TRANSFER_TO_OTHER_EMPLOYEE, [updatedMovement.client]));
|
|
46
46
|
return updatedMovement;
|
|
47
47
|
}));
|
|
48
48
|
}
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
/**
|
|
50
|
+
* There is no actually direct updating of client movement, but we are using this method for transfer clients between employees
|
|
51
|
+
*/
|
|
52
|
+
putBatch(clientMovements) {
|
|
53
|
+
const batch = clientMovements.map((clientMovement) => this.put(clientMovement));
|
|
51
54
|
return forkJoin(batch);
|
|
52
55
|
}
|
|
53
56
|
/**
|
|
@@ -55,27 +58,24 @@ export class ClientMovementService extends RestService {
|
|
|
55
58
|
*/
|
|
56
59
|
close(clientMovement) {
|
|
57
60
|
clientMovement.dateTo = new Date();
|
|
61
|
+
// cant use parent method because of custom specific handler
|
|
58
62
|
return this.http.put(`${this.environment.apiV2}/client-movements/${clientMovement.id}/close`, clientMovement)
|
|
59
63
|
.pipe(map(() => {
|
|
64
|
+
// @TODO remove when TaxReviewService refactored with the new rest and use there listenCSE instead
|
|
60
65
|
this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.CLIENT_MOVEMENT_CLOSED, null));
|
|
61
66
|
this.cache = this.cache.filter((movement) => movement.id !== clientMovement.id);
|
|
62
|
-
this.updateCache();
|
|
67
|
+
this.updateCache([clientMovement], 'delete');
|
|
63
68
|
}));
|
|
64
69
|
}
|
|
65
|
-
listenNotifications() {
|
|
66
|
-
this.eventDispatcherService.on(AppEventTypeEnum.NOTIFICATION_ADDED).subscribe((notification) => {
|
|
67
|
-
if (!notification.isRead && notification.eventType === UserEventTypeTypeEnum.FIRM_INVITE_ACCEPTED) {
|
|
68
|
-
this.refreshCache();
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
70
|
/**
|
|
73
|
-
*
|
|
71
|
+
* Listem clientMovements db changes via mercure to update cache
|
|
72
|
+
* @TODO make it universal and move to parent
|
|
74
73
|
*/
|
|
75
|
-
|
|
76
|
-
this.
|
|
77
|
-
.
|
|
78
|
-
|
|
74
|
+
listenSSE() {
|
|
75
|
+
this.sseService.on('clientMovements')
|
|
76
|
+
.pipe(map((clientMovement) => plainToClass(ClientMovement, clientMovement)))
|
|
77
|
+
.subscribe((clientMovement) => {
|
|
78
|
+
this.hasInCache(clientMovement.id) ? this.updateCache([clientMovement], 'put') : this.updateCache([clientMovement], 'post');
|
|
79
79
|
});
|
|
80
80
|
}
|
|
81
81
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ClientMovementService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
@@ -87,4 +87,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
87
87
|
providedIn: 'root'
|
|
88
88
|
}]
|
|
89
89
|
}] });
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LW1vdmVtZW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvc2VydmljZXMvaHR0cC9maXJtL2NsaWVudC1tb3ZlbWVudC9jbGllbnQtbW92ZW1lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBYyxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBRTlGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUdoRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQzs7QUFLdkYsTUFBTSxPQUFPLHFCQUFzQixTQUFRLFdBQStDO0lBSDFGOztRQUlFLGVBQVUsR0FBMEIsY0FBYyxDQUFDO1FBQ25ELFFBQUcsR0FBRyxrQkFBa0IsQ0FBQztRQUN6QixZQUFPLEdBQUcsSUFBSSxDQUFDO0tBdUZoQjtJQXJGQyxZQUFZO1FBQ1YsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTTtRQUNKLE9BQU8sSUFBSSxDQUFD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QyxXQUFXLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixJQUFJLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBMEIsRUFBRSxFQUFFO1lBQzNHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxJQUFJLFlBQVksQ0FBQyxTQUFTLEtBQUsscUJBQXFCLENBQUMsb0JBQW9CLEVBQUU7Z0JBQ2pHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUNyQjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ssbUJBQW1CO1FBQ3pCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUM7YUFDcEUsU0FBUyxDQUFDLEdBQVMsRUFBRTtZQUNwQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOytHQXpGVSxxQkFBcUI7bUhBQXJCLHFCQUFxQixjQUZwQixNQUFNOzs0RkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2xpZW50TW92ZW1lbnQgYXMgQ2xpZW50TW92ZW1lbnRCYXNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGIvTW9kZWxzL2Zpcm0vY2xpZW50LW1vdmVtZW50JztcbmltcG9ydCB7IE9ic2VydmFibGUsIGZvcmtKb2luIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDbGllbnRNb3ZlbWVudENvbGxlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9jb2xsZWN0aW9ucy9jbGllbnQtbW92ZW1lbnQuY29sbGVjdGlvbic7XG5pbXBvcnQgeyBGaXJtVHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi8uLi9kYi9FbnVtcy9maXJtLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBwbGFpblRvQ2xhc3MgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3Jlc3QvcmVzdC1vbGQuc2VydmljZSc7XG5pbXBvcnQgeyBDbGllbnRNb3ZlbWVudCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9jbGllbnQvY2xpZW50LW1vdmVtZW50JztcbmltcG9ydCB7IEFwcEV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2V2ZW50L2FwcC1ldmVudCc7XG5pbXBvcnQgeyBBcHBFdmVudFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2V2ZW50L2FwcC1ldmVudC10eXBlLmVudW0nO1xuaW1wb3J0IHsgSUV2ZW50TGlzdGVuZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzL2V2ZW50LWxpc3RlbmVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbic7XG5pbXBvcnQgeyBVc2VyRXZlbnRUeXBlVHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi8uLi9kYi9FbnVtcy91c2VyLWV2ZW50LXR5cGUtdHlwZS5lbnVtJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ2xpZW50TW92ZW1lbnRTZXJ2aWNlIGV4dGVuZHMgUmVzdFNlcnZpY2U8Q2xpZW50TW92ZW1lbnRCYXNlLCBDbGllbnRNb3ZlbWVudD4gaW1wbGVtZW50cyBJRXZlbnRMaXN0ZW5lciB7XG4gIG1vZGVsQ2xhc3M6IHR5cGVvZiBDbGllbnRNb3ZlbWVudCA9IENsaWVudE1vdmVtZW50O1xuICB1cmwgPSAnY2xpZW50LW1vdmVtZW50cyc7XG4gIGlzSHlkcmEgPSB0cnVlO1xuXG4gIGxpc3RlbkV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3Rlbk5vdGlmaWNhdGlvbnMoKTtcbiAgICB0aGlzLmxpc3RlbkNsaWVudEludml0ZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAVE9ETyBCYXNlUmVzdFNlcnZpY2Ugc2hvdWxkIHJldHVybiBjb2xsZWN0aW9uXG4gICAqL1xuICBnZXRBbGwoKTogT2JzZXJ2YWJsZTxDbGllbnRNb3ZlbWVudENvbGxlY3Rpb24+IHtcbiAgICByZXR1cm4gdGhpcy5nZXQoKS5waXBlKFxuICAgICAgbWFwKChjbGllbnRNb3ZlbWVudHM6IENsaWVudE1vdmVtZW50W10pID0+IG5ldyBDbGllbnRNb3ZlbWVudENvbGxlY3Rpb24oY2xpZW50TW92ZW1lbnRzKSlcbiAgICApO1xuICB9XG5cbiAgZ2V0QWN0aXZlKCk6IE9ic2VydmFibGU8Q2xpZW50TW92ZW1lbnRDb2xsZWN0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QWxsKCkucGlwZShcbiAgICAgIG1hcCgoY2xpZW50TW92ZW1lbnRzOiBDbGllbnRNb3ZlbWVudENvbGxlY3Rpb24pOiBDbGllbnRNb3ZlbWVudENvbGxlY3Rpb24gPT4gY2xpZW50TW92ZW1lbnRzLmFjdGl2ZSlcbiAgICApO1xuICB9XG5cbiAgZ2V0VFRBZHZpc29yKCk6IE9ic2VydmFibGU8Q2xpZW50TW92ZW1lbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRBY3RpdmUoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgobW92ZW1lbnRzOiBDbGllbnRNb3ZlbWVudENvbGxlY3Rpb24pID0+IG1vdmVtZW50cy5maW5kQnkoJ2VtcGxveWVlLmVtYWlsJywgdGhpcy5lbnZpcm9ubWVudC50dEFkdmlzb3IpIHx8IG51bGwpXG4gICAgICApO1xuICB9XG5cbiAgZ2V0QWN0aXZlQnlGaXJtVHlwZSh0eXBlOiBGaXJtVHlwZUVudW0pOiBPYnNlcnZhYmxlPENsaWVudE1vdmVtZW50Q29sbGVjdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmdldEFjdGl2ZSgpLnBpcGUoXG4gICAgICBtYXAoKGNsaWVudE1vdmVtZW50czogQ2xpZW50TW92ZW1lbnRDb2xsZWN0aW9uKTogQ2xpZW50TW92ZW1lbnRDb2xsZWN0aW9uID0+IGNsaWVudE1vdmVtZW50cy5nZXRCeUZpcm1UeXBlKHR5cGUpKVxuICAgICk7XG4gIH1cblxuICB1cGRhdGUobW92ZW1lbnQ6IENsaWVudE1vdmVtZW50KTogT2JzZXJ2YWJsZTxDbGllbnRNb3ZlbWVudD4ge1xuICAgIC8vIGV4dGVuZCBiYXNlICdhZGQnIG1ldGhvZCBhbmQgcGFzcyBpbnRvIGl0IG1vdmVtZW50IHdpdGhvdXQgaWRcbiAgICByZXR1cm4gc3VwZXIuYWRkKHBsYWluVG9DbGFzcyhDbGllbnRNb3ZlbWVudCwgT2JqZWN0LmFzc2lnbih7fSwgbW92ZW1lbnQsIHtpZDogbnVsbH0pKSkucGlwZShcbiAgICAgIG1hcCgodXBkYXRlZE1vdmVtZW50OiBDbGllbnRNb3ZlbWVudCkgPT4ge1xuICAgICAgICAvLyByZW1vdmUgcHJvdmlkZWQgbW92ZW1lbnQgZnJvbSBjYWNoZVxuICAgICAgICB0aGlzLmNhY2hlID0gdGhpcy5jYWNoZS5maWx0ZXIoKGl0ZW06IENsaWVudE1vdmVtZW50KSA9PiBpdGVtLmlkICE9PSBtb3ZlbWVudC5pZCk7XG4gICAgICAgIHRoaXMudXBkYXRlQ2FjaGUoKTtcblxuICAgICAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2UuZGlzcGF0Y2gobmV3IEFwcEV2ZW50KEFwcEV2ZW50VHlwZUVudW0uQ0xJRU5UX1RSQU5TRkVSX1RPX09USEVSX0VNUExPWUVFLCBbdXBkYXRlZE1vdmVtZW50LmNsaWVudF0pKTtcblxuICAgICAgICByZXR1cm4gdXBkYXRlZE1vdmVtZW50O1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgdXBkYXRlQmF0Y2goY2xpZW50TW92ZW1lbnRzOiBDbGllbnRNb3ZlbWVudFtdKTogT2JzZXJ2YWJsZTxDbGllbnRNb3ZlbWVudFtdPiB7XG4gICAgY29uc3QgYmF0Y2g6IE9ic2VydmFibGU8Q2xpZW50TW92ZW1lbnQ+W10gPSBjbGllbnRNb3ZlbWVudHMubWFwKChjbGllbnRNb3ZlbWVudDogQ2xpZW50TW92ZW1lbnQpID0+IHRoaXMudXBkYXRlKGNsaWVudE1vdmVtZW50KSk7XG4gICAgcmV0dXJuIGZvcmtKb2luKGJhdGNoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWplY3QgY3VycmVudCBmaXJtXG4gICAqL1xuICBjbG9zZShjbGllbnRNb3ZlbWVudDogQ2xpZW50TW92ZW1lbnQpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjbGllbnRNb3ZlbWVudC5kYXRlVG8gPSBuZXcgRGF0ZSgpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9L2NsaWVudC1tb3ZlbWVudHMvJHtjbGllbnRNb3ZlbWVudC5pZH0vY2xvc2VgLCBjbGllbnRNb3ZlbWVudClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKCk6IHZvaWQgPT4ge1xuICAgICAgICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5kaXNwYXRjaChuZXcgQXBwRXZlbnQoQXBwRXZlbnRUeXBlRW51bS5DTElFTlRfTU9WRU1FTlRfQ0xPU0VELCBudWxsKSk7XG4gICAgICAgICAgdGhpcy5jYWNoZSA9IHRoaXMuY2FjaGUuZmlsdGVyKChtb3ZlbWVudDogQ2xpZW50TW92ZW1lbnQpOiBib29sZWFuID0+IG1vdmVtZW50LmlkICE9PSBjbGllbnRNb3ZlbWVudC5pZCk7XG4gICAgICAgICAgdGhpcy51cGRhdGVDYWNoZSgpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuTm90aWZpY2F0aW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2Uub24oQXBwRXZlbnRUeXBlRW51bS5OT1RJRklDQVRJT05fQURERUQpLnN1YnNjcmliZSgobm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb24pID0+IHtcbiAgICAgIGlmICghbm90aWZpY2F0aW9uLmlzUmVhZCAmJiBub3RpZmljYXRpb24uZXZlbnRUeXBlID09PSBVc2VyRXZlbnRUeXBlVHlwZUVudW0uRklSTV9JTlZJVEVfQUNDRVBURUQpIHtcbiAgICAgICAgdGhpcy5yZWZyZXNoQ2FjaGUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0ZW4gdG8gRXZlbnREaXNwYXRjaGVyU2VydmljZSBldmVudCByZWxhdGVkIHRvIGNsaWVudHMgaW52aXRhdGlvbnNcbiAgICovXG4gIHByaXZhdGUgbGlzdGVuQ2xpZW50SW52aXRlcygpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2Uub24oQXBwRXZlbnRUeXBlRW51bS5DTElFTlRfSU5WSVRFX0FDQ0VQVEVEKVxuICAgICAgLnN1YnNjcmliZSgoKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMucmVmcmVzaENhY2hlKCk7XG4gICAgICB9KTtcbiAgfVxufVxuIl19
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LW1vdmVtZW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvc2VydmljZXMvaHR0cC9maXJtL2NsaWVudC1tb3ZlbWVudC9jbGllbnQtbW92ZW1lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBYyxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBRTlGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUVoRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBTWxELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxXQUF5RTtJQUhwSDs7UUFJWSxnQkFBVyxHQUFHLGtCQUFrQixDQUFDO1FBQzNDLG9CQUFlLEdBQW9DLHdCQUF3QixDQUFDO1FBQzVFLGVBQVUsR0FBMEIsY0FBYyxDQUFDO1FBQ25ELGtCQUFhLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLG9CQUFlLEdBQWlCLENBQUMsV0FBVyxFQUFFLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztLQW1GeEU7SUFqRkMsWUFBWTtRQUNWLDRCQUE0QjtRQUM1QixJQUFJLENBQUMs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UUFBUSxDQUFDLEVBQUUsS0FBSyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDekcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUztRQUNQLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDO2FBQ2xDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFrQyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7YUFDL0YsU0FBUyxDQUFDLENBQUMsY0FBOEIsRUFBRSxFQUFFO1lBQzVDLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsY0FBYyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxjQUFjLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM5SCxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7K0dBdkZVLHFCQUFxQjttSEFBckIscUJBQXFCLGNBRnBCLE1BQU07OzRGQUVQLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDbGllbnRNb3ZlbWVudCBhcyBDbGllbnRNb3ZlbWVudEJhc2UgfSBmcm9tICcuLi8uLi8uLi8uLi9kYi9Nb2RlbHMvZmlybS9jbGllbnQtbW92ZW1lbnQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZm9ya0pvaW4gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENsaWVudE1vdmVtZW50Q29sbGVjdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbGxlY3Rpb25zL2NsaWVudC1tb3ZlbWVudC5jb2xsZWN0aW9uJztcbmltcG9ydCB7IEZpcm1UeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uLy4uL2RiL0VudW1zL2Zpcm0tdHlwZS5lbnVtJztcbmltcG9ydCB7IHBsYWluVG9DbGFzcyB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcmVzdC9yZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2xpZW50TW92ZW1lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvY2xpZW50L2NsaWVudC1tb3ZlbWVudCc7XG5pbXBvcnQgeyBBcHBFdmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9ldmVudC9hcHAtZXZlbnQnO1xuaW1wb3J0IHsgQXBwRXZlbnRUeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9ldmVudC9hcHAtZXZlbnQtdHlwZS5lbnVtJztcbmltcG9ydCB7IElFdmVudExpc3RlbmVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJmYWNlcy9ldmVudC1saXN0ZW5lci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ2xpZW50SW52aXRlIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IFJlc3RNZXRob2QgfSBmcm9tICcuLi8uLi9yZXN0JztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ2xpZW50TW92ZW1lbnRTZXJ2aWNlIGV4dGVuZHMgUmVzdFNlcnZpY2U8Q2xpZW50TW92ZW1lbnRCYXNlLCBDbGllbnRNb3ZlbWVudCwgQ2xpZW50TW92ZW1lbnRDb2xsZWN0aW9uPiBpbXBsZW1lbnRzIElFdmVudExpc3RlbmVyIHtcbiAgcHJvdGVjdGVkIGVuZHBvaW50VXJpID0gJ2NsaWVudC1tb3ZlbWVudHMnO1xuICBjb2xsZWN0aW9uQ2xhc3M6IHR5cGVvZiBDbGllbnRNb3ZlbWVudENvbGxlY3Rpb24gPSBDbGllbnRNb3ZlbWVudENvbGxlY3Rpb247XG4gIG1vZGVsQ2xhc3M6IHR5cGVvZiBDbGllbnRNb3ZlbWVudCA9IENsaWVudE1vdmVtZW50O1xuICBpc0FwaVBsYXRmb3JtID0gdHJ1ZTtcbiAgZGlzYWJsZWRNZXRob2RzOiBSZXN0TWV0aG9kW10gPSBbJ3Bvc3RCYXRjaCcsICdkZWxldGUnLCAnZGVsZXRlQmF0Y2gnXTtcblxuICBsaXN0ZW5FdmVudHMoKTogdm9pZCB7XG4gICAgLy8gQFRPRE8gaGFuZGxlIHdpdGggbWVyY3VyZVxuICAgIHRoaXMubGlzdGVuQ1NFKENsaWVudEludml0ZSwgWydwb3N0JywgJ3B1dCcsICdkZWxldGUnXSwgdGhpcy5yZWZyZXNoQ2FjaGUpO1xuICB9XG5cbiAgZ2V0QWN0aXZlKCk6IE9ic2VydmFibGU8Q2xpZW50TW92ZW1lbnRDb2xsZWN0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCkucGlwZShcbiAgICAgIG1hcCgoY2xpZW50TW92ZW1lbnRzOiBDbGllbnRNb3ZlbWVudENvbGxlY3Rpb24pOiBDbGllbnRNb3ZlbWVudENvbGxlY3Rpb24gPT4gY2xpZW50TW92ZW1lbnRzLmFjdGl2ZSlcbiAgICApO1xuICB9XG5cbiAgZ2V0VFRBZHZpc29yKCk6IE9ic2VydmFibGU8Q2xpZW50TW92ZW1lbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRBY3RpdmUoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgobW92ZW1lbnRzOiBDbGllbnRNb3ZlbWVudENvbGxlY3Rpb24pID0+IG1vdmVtZW50cy5maW5kQnkoJ2VtcGxveWVlLmVtYWlsJywgdGhpcy5lbnZpcm9ubWVudC50dEFkdmlzb3IpIHx8IG51bGwpXG4gICAgICApO1xuICB9XG5cbiAgZ2V0QWN0aXZlQnlGaXJtVHlwZSh0eXBlOiBGaXJtVHlwZUVudW0pOiBPYnNlcnZhYmxlPENsaWVudE1vdmVtZW50Q29sbGVjdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmdldEFjdGl2ZSgpLnBpcGUoXG4gICAgICBtYXAoKGNsaWVudE1vdmVtZW50czogQ2xpZW50TW92ZW1lbnRDb2xsZWN0aW9uKTogQ2xpZW50TW92ZW1lbnRDb2xsZWN0aW9uID0+IGNsaWVudE1vdmVtZW50cy5nZXRCeUZpcm1UeXBlKHR5cGUpKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIGlzIHVzaW5nIGZvciB0cmFuc2ZlciBjbGllbnQgYmV0d2VlbiBlbXBsb3llZXMuXG4gICAqIE9uIGJhY2tlbmQgd2UgY2xvc2UgcGFzc2VkIG1vdmVtZW50IGFuZCBjcmVhdGUgYSBuZXcgb25lIGluc3RlYWRcbiAgICovXG4gIHB1dChtb3ZlbWVudDogQ2xpZW50TW92ZW1lbnQpOiBPYnNlcnZhYmxlPENsaWVudE1vdmVtZW50PiB7XG4gICAgLy8gZXh0ZW5kIGJhc2UgJ2FkZCcgbWV0aG9kIGFuZCBwYXNzIGludG8gaXQgbW92ZW1lbnQgd2l0aG91dCBpZFxuICAgIHJldHVybiBzdXBlci5wb3N0KHBsYWluVG9DbGFzcyhDbGllbnRNb3ZlbWVudCwgT2JqZWN0LmFzc2lnbih7fSwgbW92ZW1lbnQsIHtpZDogbnVsbH0pKSkucGlwZShcbiAgICAgIG1hcCgodXBkYXRlZE1vdmVtZW50OiBDbGllbnRNb3ZlbWVudCkgPT4ge1xuICAgICAgICAvLyByZW1vdmUgcHJvdmlkZWQgbW92ZW1lbnQgZnJvbSBjYWNoZVxuICAgICAgICB0aGlzLmNhY2hlID0gdGhpcy5jYWNoZS5maWx0ZXIoKGl0ZW06IENsaWVudE1vdmVtZW50KSA9PiBpdGVtLmlkICE9PSBtb3ZlbWVudC5pZCk7XG4gICAgICAgIHRoaXMudXBkYXRlQ2FjaGUoW3VwZGF0ZWRNb3ZlbWVudF0sICdwb3N0Jyk7XG5cbiAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKG5ldyBBcHBFdmVudChBcHBFdmVudFR5cGVFbnVtLkNMSUVOVF9UUkFOU0ZFUl9UT19PVEhFUl9FTVBMT1lFRSwgW3VwZGF0ZWRNb3ZlbWVudC5jbGllbnRdKSk7XG5cbiAgICAgICAgcmV0dXJuIHVwZGF0ZWRNb3ZlbWVudDtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGVyZSBpcyBubyBhY3R1YWxseSBkaXJlY3QgdXBkYXRpbmcgb2YgY2xpZW50IG1vdmVtZW50LCBidXQgd2UgYXJlIHVzaW5nIHRoaXMgbWV0aG9kIGZvciB0cmFuc2ZlciBjbGllbnRzIGJldHdlZW4gZW1wbG95ZWVzXG4gICAqL1xuICBwdXRCYXRjaChjbGllbnRNb3ZlbWVudHM6IENsaWVudE1vdmVtZW50W10pOiBPYnNlcnZhYmxlPENsaWVudE1vdmVtZW50W10+IHtcbiAgICBjb25zdCBiYXRjaDogT2JzZXJ2YWJsZTxDbGllbnRNb3ZlbWVudD5bXSA9IGNsaWVudE1vdmVtZW50cy5tYXAoKGNsaWVudE1vdmVtZW50OiBDbGllbnRNb3ZlbWVudCkgPT4gdGhpcy5wdXQoY2xpZW50TW92ZW1lbnQpKTtcbiAgXG4gICAgcmV0dXJuIGZvcmtKb2luKGJhdGNoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWplY3QgY3VycmVudCBmaXJtXG4gICAqL1xuICBjbG9zZShjbGllbnRNb3ZlbWVudDogQ2xpZW50TW92ZW1lbnQpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjbGllbnRNb3ZlbWVudC5kYXRlVG8gPSBuZXcgRGF0ZSgpO1xuICAgIC8vIGNhbnQgdXNlIHBhcmVudCBtZXRob2QgYmVjYXVzZSBvZiBjdXN0b20gc3BlY2lmaWMgaGFuZGxlclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9L2NsaWVudC1tb3ZlbWVudHMvJHtjbGllbnRNb3ZlbWVudC5pZH0vY2xvc2VgLCBjbGllbnRNb3ZlbWVudClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKCk6IHZvaWQgPT4ge1xuICAgICAgICAgIC8vIEBUT0RPIHJlbW92ZSB3aGVuIFRheFJldmlld1NlcnZpY2UgcmVmYWN0b3JlZCB3aXRoIHRoZSBuZXcgcmVzdCBhbmQgdXNlIHRoZXJlIGxpc3RlbkNTRSBpbnN0ZWFkXG4gICAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKG5ldyBBcHBFdmVudChBcHBFdmVudFR5cGVFbnVtLkNMSUVOVF9NT1ZFTUVOVF9DTE9TRUQsIG51bGwpKTtcblxuICAgICAgICAgIHRoaXMuY2FjaGUgPSB0aGlzLmNhY2hlLmZpbHRlcigobW92ZW1lbnQ6IENsaWVudE1vdmVtZW50KTogYm9vbGVhbiA9PiBtb3ZlbWVudC5pZCAhPT0gY2xpZW50TW92ZW1lbnQuaWQpO1xuICAgICAgICAgIHRoaXMudXBkYXRlQ2FjaGUoW2NsaWVudE1vdmVtZW50XSwgJ2RlbGV0ZScpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIExpc3RlbSBjbGllbnRNb3ZlbWVudHMgZGIgY2hhbmdlcyB2aWEgbWVyY3VyZSB0byB1cGRhdGUgY2FjaGVcbiAgICogQFRPRE8gbWFrZSBpdCB1bml2ZXJzYWwgYW5kIG1vdmUgdG8gcGFyZW50XG4gICAqL1xuICBsaXN0ZW5TU0UoKTogdm9pZCB7XG4gICAgdGhpcy5zc2VTZXJ2aWNlLm9uKCdjbGllbnRNb3ZlbWVudHMnKVxuICAgICAgLnBpcGUobWFwKChjbGllbnRNb3ZlbWVudDogQ2xpZW50TW92ZW1lbnRCYXNlKSA9PiBwbGFpblRvQ2xhc3MoQ2xpZW50TW92ZW1lbnQsIGNsaWVudE1vdmVtZW50KSkpXG4gICAgICAuc3Vic2NyaWJlKChjbGllbnRNb3ZlbWVudDogQ2xpZW50TW92ZW1lbnQpID0+IHtcbiAgICAgICAgdGhpcy5oYXNJbkNhY2hlKGNsaWVudE1vdmVtZW50LmlkKSA/IHRoaXMudXBkYXRlQ2FjaGUoW2NsaWVudE1vdmVtZW50XSwgJ3B1dCcpIDogdGhpcy51cGRhdGVDYWNoZShbY2xpZW50TW92ZW1lbnRdLCAncG9zdCcpO1xuICAgICAgfSlcbiAgfVxufVxuIl19
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Inject, Injectable, inject } from '@angular/core';
|
|
2
2
|
import { ReplaySubject } from 'rxjs';
|
|
3
3
|
import { catchError, first, map } from 'rxjs/operators';
|
|
4
|
+
import { SseService } from '../../event';
|
|
4
5
|
import { classToPlain } from 'class-transformer';
|
|
5
6
|
import { ObservableModel } from '../../../db/Models';
|
|
6
7
|
import { AppEvent2 } from '../../../models';
|
|
@@ -8,6 +9,7 @@ import { toArray } from '../../../functions/array';
|
|
|
8
9
|
import { DataService } from '../../data.service';
|
|
9
10
|
import { MixpanelService } from '../../mixpanel/mixpanel.service';
|
|
10
11
|
import { throwError as observableThrowError } from 'rxjs';
|
|
12
|
+
import { ToastService } from '../../toast';
|
|
11
13
|
import intersection from 'lodash/intersection';
|
|
12
14
|
import * as i0 from "@angular/core";
|
|
13
15
|
import * as i1 from "@angular/common/http";
|
|
@@ -36,9 +38,17 @@ export class RestService extends DataService {
|
|
|
36
38
|
*/
|
|
37
39
|
this.disabledMethods = [];
|
|
38
40
|
this.mpService = inject(MixpanelService);
|
|
41
|
+
this.sseService = inject(SseService);
|
|
42
|
+
this.toastService = inject(ToastService);
|
|
39
43
|
this.roles = [];
|
|
44
|
+
/**
|
|
45
|
+
* disable cache update by requests, update only by SSE events
|
|
46
|
+
*/
|
|
47
|
+
this.disableCache = false;
|
|
40
48
|
// @TODO Alex remove, bad idea to call empty method overrided in child (because it will be called with parent context)
|
|
41
49
|
this.listenEvents();
|
|
50
|
+
// @TODO Alex remove, bad idea to call empty method overrided in child (because it will be called with parent context)
|
|
51
|
+
this.listenSSE();
|
|
42
52
|
}
|
|
43
53
|
get apiUrl() {
|
|
44
54
|
return `${this.environment.apiV2}/${this.endpointUri}`;
|
|
@@ -83,6 +93,9 @@ export class RestService extends DataService {
|
|
|
83
93
|
this.handleAccessError('get');
|
|
84
94
|
return this.get().pipe(map((collection) => collection.first));
|
|
85
95
|
}
|
|
96
|
+
hasInCache(id) {
|
|
97
|
+
return !!this.getCache().findBy('id', id);
|
|
98
|
+
}
|
|
86
99
|
getArray() {
|
|
87
100
|
return this.get().pipe(map((collection) => collection.toArray()));
|
|
88
101
|
}
|
|
@@ -173,6 +186,10 @@ export class RestService extends DataService {
|
|
|
173
186
|
}));
|
|
174
187
|
}
|
|
175
188
|
track(response, method, mpData, postfix = '') {
|
|
189
|
+
// check if result exist, sometimes response may be empty (for example ClientInvite accept/reject/etc)
|
|
190
|
+
if (!response[0]) {
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
176
193
|
// no other way to check interface
|
|
177
194
|
if ('getMpData' in response[0]) {
|
|
178
195
|
response.forEach((model) => {
|
|
@@ -189,7 +206,7 @@ export class RestService extends DataService {
|
|
|
189
206
|
*/
|
|
190
207
|
handleResponse(response, method, mpData) {
|
|
191
208
|
this.track(response, method, mpData);
|
|
192
|
-
if (this.getCache()) {
|
|
209
|
+
if (this.getCache() && !this.disableCache) {
|
|
193
210
|
this.updateCache(response, method);
|
|
194
211
|
}
|
|
195
212
|
// dispatch event for interested services
|
|
@@ -266,6 +283,10 @@ export class RestService extends DataService {
|
|
|
266
283
|
* Method that call all listeners. Empty by default. Should be redefined by child services if required
|
|
267
284
|
*/
|
|
268
285
|
listenEvents() { }
|
|
286
|
+
/**
|
|
287
|
+
* Listen SSE events
|
|
288
|
+
*/
|
|
289
|
+
listenSSE() { }
|
|
269
290
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RestService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
270
291
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RestService, providedIn: 'root' }); }
|
|
271
292
|
}
|
|
@@ -278,4 +299,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
278
299
|
type: Inject,
|
|
279
300
|
args: ['environment']
|
|
280
301
|
}] }]; } });
|
|
281
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2h0dHAvcmVzdC9yZXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBYyxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR2pELE9BQU8sRUFBaUIsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUduRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxVQUFVLElBQUksb0JBQW9CLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUQsT0FBTyxZQUFZLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFFL0M7Ozs7OztHQU1HO0FBSUgsTUFBTSxPQUFnQixXQUNwQixTQUFRLFdBQThDO0lBdUJ0RCxZQUNZLElBQWdCLEVBQ2hCLHNCQUE4QyxFQUN2QixXQUFnQjtRQUVqRCxLQUFLLEVBQUUsQ0FBQztRQUpFLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUN2QixnQkFBVyxHQUFYLFdBQVcsQ0FBSztRQXBCbkQ7O1dBRUc7UUFDTyxp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UUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ3RCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN0RixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsWUFBWSxLQUFVLENBQUM7K0dBL1VILFdBQVcsa0ZBMkJyQixhQUFhO21IQTNCSCxXQUFXLGNBRm5CLE1BQU07OzRGQUVFLFdBQVc7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkE0QkksTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpcnN0LCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEV2ZW50RGlzcGF0Y2hlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9ldmVudCc7XG5pbXBvcnQgeyBjbGFzc1RvUGxhaW4gfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBJRXZlbnRMaXN0ZW5lciB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ29sbGVjdGlvbiB9IGZyb20gJy4uLy4uLy4uL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IEFic3RyYWN0TW9kZWwsIE9ic2VydmFibGVNb2RlbCB9IGZyb20gJy4uLy4uLy4uL2RiL01vZGVscyc7XG5pbXBvcnQgeyBBcHBFdmVudDIgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgdG9BcnJheSB9IGZyb20gJy4uLy4uLy4uL2Z1bmN0aW9ucy9hcnJheSc7XG5pbXBvcnQgeyBSZXN0TWV0aG9kIH0gZnJvbSAnLi9yZXN0LW1ldGhvZC50eXBlJztcbmltcG9ydCB7IEh0dHBNZXRob2QgfSBmcm9tICcuL2h0dHAtbWV0aG9kLnR5cGUnO1xuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlclJvbGVzRW51bSB9IGZyb20gJy4uLy4uLy4uL2RiL0VudW1zL3VzZXItcm9sZXMuZW51bSc7XG5pbXBvcnQgeyBNaXhwYW5lbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9taXhwYW5lbC9taXhwYW5lbC5zZXJ2aWNlJztcbmltcG9ydCB7IHRocm93RXJyb3IgYXMgb2JzZXJ2YWJsZVRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCBpbnRlcnNlY3Rpb24gZnJvbSAnbG9kYXNoL2ludGVyc2VjdGlvbic7XG5cbi8qKlxuICogQWJzdHJhY3QgYmFzZSBzZXJ2aWNlIHRoYXQgaW1wbGVtZW50cyBjb21tb24gc2VydmljZXMgZnVuY3Rpb25hbGl0eVxuICogYW5kIGRlc2NyaWJlIGFic3RyYWN0IG1ldGhvZHMvcHJvcGVydGllcyB0aGF0IGhhdmUgdG8gYmUgaW1wbGVtZW50ZWQgaW4gY2hpbGQgc2VydmljZXNcbiAqIE1vZGVsIC0gZW50aXR5IHNlcnZpY2UgaXMgd29ya2luZyB3aXRoXG4gKiBCYXNlTW9kZWwgLSBiYXNlIGVudGl0eSBtb2RlbCB0aGF0IGV4dGVuZHMgYnkgTW9kZWxcbiAqIENvbGxlY3Rpb25Nb2RlbCAtIGVudGl0eSBjb2xsZWN0aW9uIGNsYXNzXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFJlc3RTZXJ2aWNlPEJhc2VNb2RlbCwgTW9kZWwgZXh0ZW5kcyBBYnN0cmFjdE1vZGVsLCBDb2xsZWN0aW9uTW9kZWwgZXh0ZW5kcyBDb2xsZWN0aW9uPE1vZGVsPj5cbiAgZXh0ZW5kcyBEYXRhU2VydmljZTxCYXNlTW9kZWwsIE1vZGVsLCBDb2xsZWN0aW9uTW9kZWw+IGltcGxlbWVudHMgSUV2ZW50TGlzdGVuZXIge1xuXG4gIC8qKlxuICAgKiBVcmwgcGFydCBmb3Igc2VydmljZSBlbnRpdHkgQVBJXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZW5kcG9pbnRVcmk6IHN0cmluZztcbiAgLyoqXG4gICAqIFN1YmplY3QgZm9yIHNlcnZpY2UgY2FjaGVcbiAgICovXG4gIHByb3RlY3RlZCBjYWNoZVN1YmplY3Q6IFJlcGxheVN1YmplY3Q8Q29sbGVjdGlvbk1vZGVsPiA9IG5ldyBSZXBsYXlTdWJqZWN0KDEpO1xuICAvKipcbiAgICogRmxhZyBmb3Igd29yayB3aXRoIEFQSSBwbGF0Zm9ybVxuICAgKi9cbiAgcHJvdGVjdGVkIGlzQXBpUGxhdGZvcm06IGJvb2xlYW47XG4gIC8qKlxuICAgKiBMaXN0IG9mIG1ldGhvZHMgdW5hdmFpbGFibGUgZm9yIGN1cnJlbnQgQVBJXG4gICAqIEBUT0RPIEFsZXg6IGFkZCBhbmQgaGFuZGxlIGVuYWJsZWQgbWV0aG9kcyB0b29cbiAgICogQFRPRE8gQWxleDogZGlzYWJsZSBiYXRjaCBieSBkZWZhdWx0XG4gICAqL1xuICBkaXNhYmxlZE1ldGhvZHM6IFJlc3RNZXRob2RbXSA9IFtdO1xuICBwcm90ZWN0ZWQgbXBTZXJ2aWNlOiBNaXhwYW5lbFNlcnZpY2UgPSBpbmplY3QoTWl4cGFuZWxTZXJ2aWNlKTtcbiAgcm9sZXM6IFVzZXJSb2xlc0VudW1bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByb3RlY3RlZCBldmVudERpc3BhdGNoZXJTZXJ2aWNlOiBFdmVudERpc3BhdGNoZXJTZXJ2aWNlLFxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJvdGVjdGVkIGVudmlyb25tZW50OiBhbnlcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICAvLyBAVE9ETyBBbGV4IHJlbW92ZSwgYmFkIGlkZWEgdG8gY2FsbCBlbXB0eSBtZXRob2Qgb3ZlcnJpZGVkIGluIGNoaWxkIChiZWNhdXNlIGl0IHdpbGwgYmUgY2FsbGVkIHdpdGggcGFyZW50IGNvbnRleHQpXG4gICAgdGhpcy5saXN0ZW5FdmVudHMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgYXBpVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9LyR7dGhpcy5lbmRwb2ludFVyaX1gO1xuICB9XG5cbiAgc2V0Q2FjaGUoZGF0YTogYW55W10sIG5leHQgPSBmYWxzZSk6IHZvaWQge1xuICAgIHN1cGVyLnNldENhY2hlKGRhdGEpO1xuXG4gICAgaWYgKG5leHQpIHtcbiAgICAgIHRoaXMuY2FjaGVTdWJqZWN0Lm5leHQodGhpcy5jYWNoZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlZnJlc2ggY2FjaGUgd2l0aCBhY3R1YWwgYmFja2VuZCBkYXRhXG4gICAqL1xuICByZWZyZXNoQ2FjaGUoKTogdm9pZCB7XG4gICAgdGhpcy5jYWNoZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmdldCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBkYXRhIGZyb20gYmFja2VuZCBhbmQgZmlsbCB0aGUgY2FjaGVcbiAgICovXG4gIHByb3RlY3RlZCBmZXRjaChwYXRoID0gdGhpcy5hcGlVcmwpOiBPYnNlcnZhYmxlPENvbGxlY3Rpb25Nb2RlbD4ge1xuICAgIHRoaXMuaGFuZGxlQWNjZXNzRXJyb3IoJ2dldCcpO1xuXG4gICAgaWYgKCF0aGlzLmhhc1JvbGVzKCkpIHtcbiAgICAgIHRoaXMuc2V0Q2FjaGUoW10sIHRydWUpO1xuICAgICAgcmV0dXJuIHRoaXMuY2FjaGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8vIFNldCBjYWNoZSBhcyBlbXB0eSBjb2xsZWN0aW9uIHRvIGF2b2lkIG11bHRpcGxlIHJlcXVlc3RzIGJlZm9yZSBjYWNoZSBmaWxsZWRcbiAgICB0aGlzLnNldENhY2hlKFtdKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChwYXRoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IG9iamVjdCkgPT4gdGhpcy5pc0FwaVBsYXRmb3JtID8gcmVzcG9uc2VbJ2h5ZHJhOm1lbWJlciddIDogdG9BcnJheShyZXNwb25zZSkpLFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBCYXNlTW9kZWxbXSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0Q2FjaGUocmVzcG9uc2UsIHRydWUpO1xuXG4gICAgICAgICAgcmV0dXJuIHRoaXMuY2FjaGU7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgZ2V0KHBhdGg6IHN0cmluZyA9IHRoaXMuYXBpVXJsKTogT2JzZXJ2YWJsZTxDb2xsZWN0aW9uTW9kZWw+IHtcbiAgICBpZiAoIXRoaXMuY2FjaGUpIHtcbiAgICAgIHRoaXMuZmV0Y2gocGF0aCkucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jYWNoZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXRGaXJzdCgpOiBPYnNlcnZhYmxlPE1vZGVsPiB7XG4gICAgdGhpcy5oYW5kbGVBY2Nlc3NFcnJvcignZ2V0Jyk7XG5cbiAgICByZXR1cm4gdGhpcy5nZXQoKS5waXBlKFxuICAgICAgbWFwKChjb2xsZWN0aW9uOiBDb2xsZWN0aW9uTW9kZWwpID0+IGNvbGxlY3Rpb24uZmlyc3QpXG4gICAgKTtcbiAgfVxuXG4gIGdldEFycmF5KCk6IE9ic2VydmFibGU8TW9kZWxbXT4ge1xuICAgIHJldHVybiB0aGlzLmdldCgpLnBpcGUobWFwKChjb2xsZWN0aW9uOiBDb2xsZWN0aW9uTW9kZWwpID0+IGNvbGxlY3Rpb24udG9BcnJheSgpKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IE1vZGVsIGluc3RhbmNlIGluIGRhdGFiYXNlXG4gICAqL1xuICBwb3N0KG1vZGVsOiBNb2RlbCwgbXBEYXRhPzogQWJzdHJhY3RNb2RlbCwgcGF0aDogc3RyaW5nID0gdGhpcy5hcGlVcmwpOiBPYnNlcnZhYmxlPE1vZGVsPiB7XG4gICAgdGhpcy5oYW5kbGVBY2Nlc3NFcnJvcigncG9zdCcpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHBhdGgsIGNsYXNzVG9QbGFpbihtb2RlbCkpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXNwb25zZTogQmFzZU1vZGVsKSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0OiBNb2RlbCA9IHRoaXMuY3JlYXRlTW9kZWxJbnN0YW5jZShyZXNwb25zZSk7XG4gICAgICAgICAgdGhpcy5oYW5kbGVSZXNwb25zZShbcmVzdWx0XSwgJ3Bvc3QnLCBtcERhdGEpO1xuXG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHRoaXMuaGFuZGxlUmVzcG9uc2VFcnJvcihbbW9kZWxdLCAncG9zdCcsIG1wRGF0YSk7XG5cbiAgICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZVRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgbXVsdGlwbGUgbmV3IE1vZGVsIGluc3RhbmNlcyBpbiBkYXRhYmFzZVxuICAgKi9cbiAgcG9zdEJhdGNoKG1vZGVsczogTW9kZWxbXSk6IE9ic2VydmFibGU8TW9kZWxbXT4ge1xuICAgIHRoaXMuaGFuZGxlQWNjZXNzRXJyb3IoJ3Bvc3RCYXRjaCcpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuYXBpVXJsLCBjbGFzc1RvUGxhaW4obW9kZWxzKSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBCYXNlTW9kZWxbXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdDogTW9kZWxbXSA9IHJlc3BvbnNlLm1hcCgoaXRlbTogQmFzZU1vZGVsKTogTW9kZWwgPT4gdGhpcy5jcmVhdGVNb2RlbEluc3RhbmNlKGl0ZW0pKTtcbiAgICAgICAgICB0aGlzLmhhbmRsZVJlc3BvbnNlKHJlc3VsdCwgJ3Bvc3QnKTtcblxuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLmhhbmRsZVJlc3BvbnNlRXJyb3IobW9kZWxzLCAncG9zdCcpO1xuXG4gICAgICAgICAgcmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2hhbmdlIGFuIGV4aXN0aW5nIE1vZGVsIGluc3RhbmNlIGluIGRhdGFiYXNlXG4gICAqL1xuICBwdXQobW9kZWw6IE1vZGVsLCBtcERhdGE/OiBBYnN0cmFjdE1vZGVsLCBwYXRoID0gYCR7dGhpcy5hcGlVcmx9LyR7bW9kZWwuaWR9YCk6IE9ic2VydmFibGU8TW9kZWw+IHtcbiAgICB0aGlzLmhhbmRsZUFjY2Vzc0Vycm9yKCdwdXQnKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHBhdGgsIGNsYXNzVG9QbGFpbihtb2RlbCkpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXNwb25zZTogQmFzZU1vZGVsKSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0OiBNb2RlbCA9IHRoaXMuY3JlYXRlTW9kZWxJbnN0YW5jZShyZXNwb25zZSk7XG4gICAgICAgICAgdGhpcy5oYW5kbGVSZXNwb25zZShbcmVzdWx0XSwgJ3B1dCcsIG1wRGF0YSk7XG5cbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVSZXNwb25zZUVycm9yKFttb2RlbF0sICdwdXQnLCBtcERhdGEpO1xuXG4gICAgICAgICAgcmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2hhbmdlIG11bHRpcGxlIGV4aXN0aW5nIE1vZGVsIGluc3RhbmNlcyBpbiBkYXRhYmFzZVxuICAgKi9cbiAgcHV0QmF0Y2gobW9kZWxzOiBNb2RlbFtdKTogT2JzZXJ2YWJsZTxNb2RlbFtdPiB7XG4gICAgdGhpcy5oYW5kbGVBY2Nlc3NFcnJvcigncHV0QmF0Y2gnKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuYXBpVXJsLCBjbGFzc1RvUGxhaW4obW9kZWxzKSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBCYXNlTW9kZWxbXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdDogTW9kZWxbXSA9IHJlc3BvbnNlLm1hcCgoaXRlbTogQmFzZU1vZGVsKTogTW9kZWwgPT4gdGhpcy5jcmVhdGVNb2RlbEluc3RhbmNlKGl0ZW0pKTtcbiAgICAgICAgICB0aGlzLmhhbmRsZVJlc3BvbnNlKHJlc3VsdCwgJ3B1dCcpO1xuXG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHRoaXMuaGFuZGxlUmVzcG9uc2VFcnJvcihtb2RlbHMsICdwdXQnKTtcblxuICAgICAgICAgIHJldHVybiBvYnNlcnZhYmxlVGhyb3dFcnJvcihlcnJvcik7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhIE1vZGVsIGluc3RhbmNlIGZyb20gZGF0YWJhc2VcbiAgICovXG4gIGRlbGV0ZShtb2RlbDogTW9kZWwsIG1wRGF0YT86IEFic3RyYWN0TW9kZWwpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICB0aGlzLmhhbmRsZUFjY2Vzc0Vycm9yKCdkZWxldGUnKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKGAke3RoaXMuYXBpVXJsfS8ke21vZGVsLmlkfWApXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmhhbmRsZVJlc3BvbnNlKFttb2RlbF0sICdkZWxldGUnLCBtcERhdGEpO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVSZXNwb25zZUVycm9yKFttb2RlbF0sICdkZWxldGUnLCBtcERhdGEpO1xuXG4gICAgICAgICAgcmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIG11bHRpcGxlIE1vZGVsIGluc3RhbmNlcyBmcm9tIGRhdGFiYXNlXG4gICAqL1xuICBkZWxldGVCYXRjaChtb2RlbHM6IE1vZGVsW10pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICB0aGlzLmhhbmRsZUFjY2Vzc0Vycm9yKCdkZWxldGVCYXRjaCcpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuYXBpVXJsfS9kZWxldGVgLCBjbGFzc1RvUGxhaW4obW9kZWxzKSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaGFuZGxlUmVzcG9uc2UobW9kZWxzLCAnZGVsZXRlJyk7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLmhhbmRsZVJlc3BvbnNlRXJyb3IobW9kZWxzLCAnZGVsZXRlJyk7XG5cbiAgICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZVRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0cmFjayhyZXNwb25zZTogTW9kZWxbXSwgbWV0aG9kOiBIdHRwTWV0aG9kLCBtcERhdGE/OiBBYnN0cmFjdE1vZGVsLCBwb3N0Zml4ID0gJycpIHtcbiAgICAvLyBubyBvdGhlciB3YXkgdG8gY2hlY2sgaW50ZXJmYWNlXG4gICAgaWYgKCdnZXRNcERhdGEnIGluIHJlc3BvbnNlWzBdKSB7XG4gICAgICByZXNwb25zZS5mb3JFYWNoKChtb2RlbCkgPT4ge1xuICAgICAgICB0aGlzLm1wU2VydmljZS50cmFjayhgJHttZXRob2R9JHt0aGlzLm1vZGVsQ2xhc3MubmFtZX0ke3Bvc3RmaXh9YCwgbW9kZWxbJ2dldE1wRGF0YSddKG1wRGF0YSkpXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlUmVzcG9uc2VFcnJvcihyZXNwb25zZTogTW9kZWxbXSwgbWV0aG9kOiBIdHRwTWV0aG9kLCBtcERhdGE/OiBBYnN0cmFjdE1vZGVsKSB7XG4gICAgLy8gQFRPRE8gZXJyb3Igbm90aWZpY2F0aW9uP1xuICAgIHRoaXMudHJhY2socmVzcG9uc2UsIG1ldGhvZCwgbXBEYXRhLCAnRXJyb3InKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgcmVzcG9uc2UgZGF0YSAtIHVwZGF0ZSBjYWNoZSBhbmQgZGlzcGF0Y2ggZXZlbnQgaWYgaXQgaXMgbmVlZGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlUmVzcG9uc2UocmVzcG9uc2U6IE1vZGVsW10sIG1ldGhvZDogSHR0cE1ldGhvZCwgbXBEYXRhPzogQWJzdHJhY3RNb2RlbCkge1xuICAgIHRoaXMudHJhY2socmVzcG9uc2UsIG1ldGhvZCwgbXBEYXRhKTtcblxuICAgIGlmICh0aGlzLmdldENhY2hlKCkpIHtcbiAgICAgIHRoaXMudXBkYXRlQ2FjaGUocmVzcG9uc2UsIG1ldGhvZCk7XG4gICAgfVxuXG4gICAgLy8gZGlzcGF0Y2ggZXZlbnQgZm9yIGludGVyZXN0ZWQgc2VydmljZXNcbiAgICBpZiAocmVzcG9uc2VbMF0gaW5zdGFuY2VvZiBPYnNlcnZhYmxlTW9kZWwpIHtcbiAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChtZXRob2QsIHJlc3BvbnNlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGNhY2hlIHdpdGggcGFzc2VkIGl0ZW1zLiBBZGQvVXBkYXRlIGRldGVjdHMgYXV0b21hdGljYWxseSwgRGVsZXRlIHZpYSBvcHRpb25hbCBmbGFnXG4gICAqL1xuICBwcm90ZWN0ZWQgdXBkYXRlQ2FjaGUoaXRlbXM6IE1vZGVsW10sIG1ldGhvZDogSHR0cE1ldGhvZCk6IHZvaWQge1xuICAgIGxldCBjYWNoZTogQ29sbGVjdGlvbk1vZGVsO1xuXG4gICAgc3dpdGNoIChtZXRob2QpIHtcbiAgICAgIGNhc2UgJ3Bvc3QnOlxuICAgICAgICBjYWNoZSA9IHRoaXMuY2FjaGUucHVzaCguLi5pdGVtcyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdwdXQnOlxuICAgICAgICAvLyBAVE9ETyBBbGV4IG9sZCBpbnN0YW5jZVxuICAgICAgICBpdGVtcy5mb3JFYWNoKChpdGVtOiBNb2RlbCkgPT4ge1xuICAgICAgICAgIGNhY2hlID0gdGhpcy5jYWNoZS5yZXBsYWNlQnkoJ2lkJywgaXRlbS5pZCwgaXRlbSk7XG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnZGVsZXRlJzpcbiAgICAgICAgY2FjaGUgPSB0aGlzLmNhY2hlLnJlbW92ZUJ5KCdpZCcsIGl0ZW1zLm1hcCgoaXRlbTogTW9kZWwpID0+IGl0ZW0uaWQpKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2dldCc6XG4gICAgICAgIGNhY2hlID0gdGhpcy5jcmVhdGVDb2xsZWN0aW9uSW5zdGFuY2UodGhpcy5jb2xsZWN0aW9uQ2xhc3MsIGl0ZW1zKTtcbiAgICB9XG5cbiAgICB0aGlzLnNldENhY2hlKGNhY2hlLnRvQXJyYXkoKSwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgYW5kIGRpc3BhdGNoIHJlc3QgZXZlbnRcbiAgICovXG4gIHByb3RlY3RlZCBkaXNwYXRjaEV2ZW50KG1ldGhvZDogSHR0cE1ldGhvZCwgaXRlbXM6IE1vZGVsW10pOiB2b2lkIHtcbiAgICBjb25zdCBldmVudE5hbWU6IHN0cmluZyA9ICh0aGlzLm1vZGVsQ2xhc3MgYXMgdHlwZW9mIE9ic2VydmFibGVNb2RlbCkuZ2V0RXZlbnROYW1lKG1ldGhvZCk7XG4gICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoMihuZXcgQXBwRXZlbnQyKGV2ZW50TmFtZSwgaXRlbXMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBtZXRob2QgaXMgbm90IGRpc2FibGVkLiBUaHJvdyBleGNlcHRpb24gb3RoZXJ3aXNlLlxuICAgKiBTb21lIGVudGl0aWVzIGRvZXMgbm90IGhhdmUgZW5kcG9pbnRzIGZvciBhbGwgbWV0aG9kcy5cbiAgICovXG4gIHByaXZhdGUgaGFuZGxlQWNjZXNzRXJyb3IobWV0aG9kOiBSZXN0TWV0aG9kKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkTWV0aG9kcy5pbmNsdWRlcyhtZXRob2QpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKGBNZXRob2QgJHttZXRob2R9KCkgaXMgbm90IGFsbG93ZWQgZm9yICR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZSB0byBodHRwIGV2ZW50cyBhbmQgcnVuIGNhbGxiYWNrLlxuICAgKiBDU0UgLSBDbGVpbnQgU2VudCBFdmVudHNcbiAgICogQHBhcmFtIG1vZGVsQ2xhc3NcbiAgICogQHBhcmFtIG1ldGhvZHMgVGhlIGxpc3Qgb2YgaHR0cCBtZXRob2RzIHNob3VsZCBiZSBsaXN0ZW5lZCBmb3JcbiAgICogQHBhcmFtIGNhbGxiYWNrIFRoZSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiBldmVudCB0cmlnZ2VyZWRcbiAgICovXG4gIHByb3RlY3RlZCBsaXN0ZW5DU0UobW9kZWxDbGFzczogdHlwZW9mIE9ic2VydmFibGVNb2RlbCwgbWV0aG9kczogSHR0cE1ldGhvZFtdLCBjYWxsYmFjazogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICBjYWxsYmFjayA9IGNhbGxiYWNrLmJpbmQodGhpcyk7XG5cbiAgICBtZXRob2RzLmZvckVhY2goKG1ldGhvZDogSHR0cE1ldGhvZCkgPT4ge1xuICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLm9uMihtb2RlbENsYXNzLmdldEV2ZW50TmFtZShtZXRob2QpKS5zdWJzY3JpYmUoKGRhdGE6IE9ic2VydmFibGVNb2RlbFtdKSA9PiB7XG4gICAgICAgIGNhbGxiYWNrKGRhdGEpO1xuICAgICAgfSk7XG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBjaGVjayBpZiB1c2VyIGhhcyBzdWJzY3JpcHRpb24gcm9sZSB0byBhY2Nlc3MgYXBpXG4gICAqL1xuICBoYXNSb2xlcygpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMucm9sZXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gISFpbnRlcnNlY3Rpb24oSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncm9sZXMnKSksIHRoaXMucm9sZXMpLmxlbmd0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiAvLyBAVE9ETyBBbGV4IHJlbW92ZVxuICAgKiBNZXRob2QgdGhhdCBjYWxsIGFsbCBsaXN0ZW5lcnMuIEVtcHR5IGJ5IGRlZmF1bHQuIFNob3VsZCBiZSByZWRlZmluZWQgYnkgY2hpbGQgc2VydmljZXMgaWYgcmVxdWlyZWRcbiAgICovXG4gIGxpc3RlbkV2ZW50cygpOiB2b2lkIHt9XG59XG4iXX0=
|
|
302
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2h0dHAvcmVzdC9yZXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBYyxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEQsT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR2pELE9BQU8sRUFBaUIsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUduRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxVQUFVLElBQUksb0JBQW9CLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMzQyxPQUFPLFlBQVksTUFBTSxxQkFBcUIsQ0FBQzs7OztBQUUvQzs7Ozs7O0dBTUc7QUFJSCxNQUFNLE9BQWdCLFdBQ3BCLFNBQVEsV0FBOEM7SUE4QnRELFlBQ1ksSUFBZ0IsRUFDaEIsc0JBQThDLEVBQ3ZCLFdBQWdCO1FBRWpELEtBQUssRUFBRSxDQUFDO1FBSkUsU0FBSSxHQUFKLElBQUks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O29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBbUNJLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaXJzdCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBFdmVudERpc3BhdGNoZXJTZXJ2aWNlLCBTc2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZXZlbnQnO1xuaW1wb3J0IHsgY2xhc3NUb1BsYWluIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgSUV2ZW50TGlzdGVuZXIgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENvbGxlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBBYnN0cmFjdE1vZGVsLCBPYnNlcnZhYmxlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9kYi9Nb2RlbHMnO1xuaW1wb3J0IHsgQXBwRXZlbnQyIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IHRvQXJyYXkgfSBmcm9tICcuLi8uLi8uLi9mdW5jdGlvbnMvYXJyYXknO1xuaW1wb3J0IHsgUmVzdE1ldGhvZCB9IGZyb20gJy4vcmVzdC1tZXRob2QudHlwZSc7XG5pbXBvcnQgeyBIdHRwTWV0aG9kIH0gZnJvbSAnLi9odHRwLW1ldGhvZC50eXBlJztcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJSb2xlc0VudW0gfSBmcm9tICcuLi8uLi8uLi9kYi9FbnVtcy91c2VyLXJvbGVzLmVudW0nO1xuaW1wb3J0IHsgTWl4cGFuZWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbWl4cGFuZWwvbWl4cGFuZWwuc2VydmljZSc7XG5pbXBvcnQgeyB0aHJvd0Vycm9yIGFzIG9ic2VydmFibGVUaHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi90b2FzdCc7XG5pbXBvcnQgaW50ZXJzZWN0aW9uIGZyb20gJ2xvZGFzaC9pbnRlcnNlY3Rpb24nO1xuXG4vKipcbiAqIEFic3RyYWN0IGJhc2Ugc2VydmljZSB0aGF0IGltcGxlbWVudHMgY29tbW9uIHNlcnZpY2VzIGZ1bmN0aW9uYWxpdHlcbiAqIGFuZCBkZXNjcmliZSBhYnN0cmFjdCBtZXRob2RzL3Byb3BlcnRpZXMgdGhhdCBoYXZlIHRvIGJlIGltcGxlbWVudGVkIGluIGNoaWxkIHNlcnZpY2VzXG4gKiBNb2RlbCAtIGVudGl0eSBzZXJ2aWNlIGlzIHdvcmtpbmcgd2l0aFxuICogQmFzZU1vZGVsIC0gYmFzZSBlbnRpdHkgbW9kZWwgdGhhdCBleHRlbmRzIGJ5IE1vZGVsXG4gKiBDb2xsZWN0aW9uTW9kZWwgLSBlbnRpdHkgY29sbGVjdGlvbiBjbGFzc1xuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBSZXN0U2VydmljZTxCYXNlTW9kZWwsIE1vZGVsIGV4dGVuZHMgQWJzdHJhY3RNb2RlbCwgQ29sbGVjdGlvbk1vZGVsIGV4dGVuZHMgQ29sbGVjdGlvbjxNb2RlbD4+XG4gIGV4dGVuZHMgRGF0YVNlcnZpY2U8QmFzZU1vZGVsLCBNb2RlbCwgQ29sbGVjdGlvbk1vZGVsPiBpbXBsZW1lbnRzIElFdmVudExpc3RlbmVyIHtcblxuICAvKipcbiAgICogVXJsIHBhcnQgZm9yIHNlcnZpY2UgZW50aXR5IEFQSVxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGVuZHBvaW50VXJpOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBTdWJqZWN0IGZvciBzZXJ2aWNlIGNhY2hlXG4gICAqL1xuICBwcm90ZWN0ZWQgY2FjaGVTdWJqZWN0OiBSZXBsYXlTdWJqZWN0PENvbGxlY3Rpb25Nb2RlbD4gPSBuZXcgUmVwbGF5U3ViamVjdCgxKTtcbiAgLyoqXG4gICAqIEZsYWcgZm9yIHdvcmsgd2l0aCBBUEkgcGxhdGZvcm1cbiAgICovXG4gIHByb3RlY3RlZCBpc0FwaVBsYXRmb3JtOiBib29sZWFuO1xuICAvKipcbiAgICogTGlzdCBvZiBtZXRob2RzIHVuYXZhaWxhYmxlIGZvciBjdXJyZW50IEFQSVxuICAgKiBAVE9ETyBBbGV4OiBhZGQgYW5kIGhhbmRsZSBlbmFibGVkIG1ldGhvZHMgdG9vXG4gICAqIEBUT0RPIEFsZXg6IGRpc2FibGUgYmF0Y2ggYnkgZGVmYXVsdFxuICAgKi9cbiAgZGlzYWJsZWRNZXRob2RzOiBSZXN0TWV0aG9kW10gPSBbXTtcbiAgcHJvdGVjdGVkIG1wU2VydmljZTogTWl4cGFuZWxTZXJ2aWNlID0gaW5qZWN0KE1peHBhbmVsU2VydmljZSk7XG4gIHByb3RlY3RlZCBzc2VTZXJ2aWNlOiBTc2VTZXJ2aWNlID0gaW5qZWN0KFNzZVNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UgPSBpbmplY3QoVG9hc3RTZXJ2aWNlKTtcbiAgcm9sZXM6IFVzZXJSb2xlc0VudW1bXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBkaXNhYmxlIGNhY2hlIHVwZGF0ZSBieSByZXF1ZXN0cywgdXBkYXRlIG9ubHkgYnkgU1NFIGV2ZW50c1xuICAgKi9cbiAgZGlzYWJsZUNhY2hlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJvdGVjdGVkIGV2ZW50RGlzcGF0Y2hlclNlcnZpY2U6IEV2ZW50RGlzcGF0Y2hlclNlcnZpY2UsXG4gICAgQEluamVjdCgnZW52aXJvbm1lbnQnKSBwcm90ZWN0ZWQgZW52aXJvbm1lbnQ6IGFueVxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIC8vIEBUT0RPIEFsZXggcmVtb3ZlLCBiYWQgaWRlYSB0byBjYWxsIGVtcHR5IG1ldGhvZCBvdmVycmlkZWQgaW4gY2hpbGQgKGJlY2F1c2UgaXQgd2lsbCBiZSBjYWxsZWQgd2l0aCBwYXJlbnQgY29udGV4dClcbiAgICB0aGlzLmxpc3RlbkV2ZW50cygpO1xuICAgIC8vIEBUT0RPIEFsZXggcmVtb3ZlLCBiYWQgaWRlYSB0byBjYWxsIGVtcHR5IG1ldGhvZCBvdmVycmlkZWQgaW4gY2hpbGQgKGJlY2F1c2UgaXQgd2lsbCBiZSBjYWxsZWQgd2l0aCBwYXJlbnQgY29udGV4dClcbiAgICB0aGlzLmxpc3RlblNTRSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBhcGlVcmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vJHt0aGlzLmVuZHBvaW50VXJpfWA7XG4gIH1cblxuICBzZXRDYWNoZShkYXRhOiBhbnlbXSwgbmV4dCA9IGZhbHNlKTogdm9pZCB7XG4gICAgc3VwZXIuc2V0Q2FjaGUoZGF0YSk7XG5cbiAgICBpZiAobmV4dCkge1xuICAgICAgdGhpcy5jYWNoZVN1YmplY3QubmV4dCh0aGlzLmNhY2hlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVmcmVzaCBjYWNoZSB3aXRoIGFjdHVhbCBiYWNrZW5kIGRhdGFcbiAgICovXG4gIHJlZnJlc2hDYWNoZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNhY2hlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZ2V0KCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGRhdGEgZnJvbSBiYWNrZW5kIGFuZCBmaWxsIHRoZSBjYWNoZVxuICAgKi9cbiAgcHJvdGVjdGVkIGZldGNoKHBhdGggPSB0aGlzLmFwaVVybCk6IE9ic2VydmFibGU8Q29sbGVjdGlvbk1vZGVsPiB7XG4gICAgdGhpcy5oYW5kbGVBY2Nlc3NFcnJvcignZ2V0Jyk7XG5cbiAgICBpZiAoIXRoaXMuaGFzUm9sZXMoKSkge1xuICAgICAgdGhpcy5zZXRDYWNoZShbXSwgdHJ1ZSk7XG4gICAgICByZXR1cm4gdGhpcy5jYWNoZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLy8gU2V0IGNhY2hlIGFzIGVtcHR5IGNvbGxlY3Rpb24gdG8gYXZvaWQgbXVsdGlwbGUgcmVxdWVzdHMgYmVmb3JlIGNhY2hlIGZpbGxlZFxuICAgIHRoaXMuc2V0Q2FjaGUoW10pO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHBhdGgpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXNwb25zZTogb2JqZWN0KSA9PiB0aGlzLmlzQXBpUGxhdGZvcm0gPyByZXNwb25zZVsnaHlkcmE6bWVtYmVyJ10gOiB0b0FycmF5KHJlc3BvbnNlKSksXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IEJhc2VNb2RlbFtdKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXRDYWNoZShyZXNwb25zZSwgdHJ1ZSk7XG5cbiAgICAgICAgICByZXR1cm4gdGhpcy5jYWNoZTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBnZXQocGF0aDogc3RyaW5nID0gdGhpcy5hcGlVcmwpOiBPYnNlcnZhYmxlPENvbGxlY3Rpb25Nb2RlbD4ge1xuICAgIGlmICghdGhpcy5jYWNoZSkge1xuICAgICAgdGhpcy5mZXRjaChwYXRoKS5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNhY2hlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldEZpcnN0KCk6IE9ic2VydmFibGU8TW9kZWw+IHtcbiAgICB0aGlzLmhhbmRsZUFjY2Vzc0Vycm9yKCdnZXQnKTtcblxuICAgIHJldHVybiB0aGlzLmdldCgpLnBpcGUoXG4gICAgICBtYXAoKGNvbGxlY3Rpb246IENvbGxlY3Rpb25Nb2RlbCkgPT4gY29sbGVjdGlvbi5maXJzdClcbiAgICApO1xuICB9XG5cbiAgaGFzSW5DYWNoZShpZDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5nZXRDYWNoZSgpLmZpbmRCeSgnaWQnLCBpZCk7XG4gIH1cblxuICBnZXRBcnJheSgpOiBPYnNlcnZhYmxlPE1vZGVsW10+IHtcbiAgICByZXR1cm4gdGhpcy5nZXQoKS5waXBlKG1hcCgoY29sbGVjdGlvbjogQ29sbGVjdGlvbk1vZGVsKSA9PiBjb2xsZWN0aW9uLnRvQXJyYXkoKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBNb2RlbCBpbnN0YW5jZSBpbiBkYXRhYmFzZVxuICAgKi9cbiAgcG9zdChtb2RlbDogTW9kZWwsIG1wRGF0YT86IEFic3RyYWN0TW9kZWwsIHBhdGg6IHN0cmluZyA9IHRoaXMuYXBpVXJsKTogT2JzZXJ2YWJsZTxNb2RlbD4ge1xuICAgIHRoaXMuaGFuZGxlQWNjZXNzRXJyb3IoJ3Bvc3QnKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChwYXRoLCBjbGFzc1RvUGxhaW4obW9kZWwpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IEJhc2VNb2RlbCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdDogTW9kZWwgPSB0aGlzLmNyZWF0ZU1vZGVsSW5zdGFuY2UocmVzcG9uc2UpO1xuICAgICAgICAgIHRoaXMuaGFuZGxlUmVzcG9uc2UoW3Jlc3VsdF0sICdwb3N0JywgbXBEYXRhKTtcblxuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLmhhbmRsZVJlc3BvbnNlRXJyb3IoW21vZGVsXSwgJ3Bvc3QnLCBtcERhdGEpO1xuXG4gICAgICAgICAgcmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIG11bHRpcGxlIG5ldyBNb2RlbCBpbnN0YW5jZXMgaW4gZGF0YWJhc2VcbiAgICovXG4gIHBvc3RCYXRjaChtb2RlbHM6IE1vZGVsW10pOiBPYnNlcnZhYmxlPE1vZGVsW10+IHtcbiAgICB0aGlzLmhhbmRsZUFjY2Vzc0Vycm9yKCdwb3N0QmF0Y2gnKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLmFwaVVybCwgY2xhc3NUb1BsYWluKG1vZGVscykpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXNwb25zZTogQmFzZU1vZGVsW10pID0+IHtcbiAgICAgICAgICBjb25zdCByZXN1bHQ6IE1vZGVsW10gPSByZXNwb25zZS5tYXAoKGl0ZW06IEJhc2VNb2RlbCk6IE1vZGVsID0+IHRoaXMuY3JlYXRlTW9kZWxJbnN0YW5jZShpdGVtKSk7XG4gICAgICAgICAgdGhpcy5oYW5kbGVSZXNwb25zZShyZXN1bHQsICdwb3N0Jyk7XG5cbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVSZXNwb25zZUVycm9yKG1vZGVscywgJ3Bvc3QnKTtcblxuICAgICAgICAgIHJldHVybiBvYnNlcnZhYmxlVGhyb3dFcnJvcihlcnJvcik7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENoYW5nZSBhbiBleGlzdGluZyBNb2RlbCBpbnN0YW5jZSBpbiBkYXRhYmFzZVxuICAgKi9cbiAgcHV0KG1vZGVsOiBNb2RlbCwgbXBEYXRhPzogQWJzdHJhY3RNb2RlbCwgcGF0aCA9IGAke3RoaXMuYXBpVXJsfS8ke21vZGVsLmlkfWApOiBPYnNlcnZhYmxlPE1vZGVsPiB7XG4gICAgdGhpcy5oYW5kbGVBY2Nlc3NFcnJvcigncHV0Jyk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChwYXRoLCBjbGFzc1RvUGxhaW4obW9kZWwpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IEJhc2VNb2RlbCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdDogTW9kZWwgPSB0aGlzLmNyZWF0ZU1vZGVsSW5zdGFuY2UocmVzcG9uc2UpO1xuICAgICAgICAgIHRoaXMuaGFuZGxlUmVzcG9uc2UoW3Jlc3VsdF0sICdwdXQnLCBtcERhdGEpO1xuXG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHRoaXMuaGFuZGxlUmVzcG9uc2VFcnJvcihbbW9kZWxdLCAncHV0JywgbXBEYXRhKTtcblxuICAgICAgICAgIHJldHVybiBvYnNlcnZhYmxlVGhyb3dFcnJvcihlcnJvcik7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENoYW5nZSBtdWx0aXBsZSBleGlzdGluZyBNb2RlbCBpbnN0YW5jZXMgaW4gZGF0YWJhc2VcbiAgICovXG4gIHB1dEJhdGNoKG1vZGVsczogTW9kZWxbXSk6IE9ic2VydmFibGU8TW9kZWxbXT4ge1xuICAgIHRoaXMuaGFuZGxlQWNjZXNzRXJyb3IoJ3B1dEJhdGNoJyk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLmFwaVVybCwgY2xhc3NUb1BsYWluKG1vZGVscykpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXNwb25zZTogQmFzZU1vZGVsW10pID0+IHtcbiAgICAgICAgICBjb25zdCByZXN1bHQ6IE1vZGVsW10gPSByZXNwb25zZS5tYXAoKGl0ZW06IEJhc2VNb2RlbCk6IE1vZGVsID0+IHRoaXMuY3JlYXRlTW9kZWxJbnN0YW5jZShpdGVtKSk7XG4gICAgICAgICAgdGhpcy5oYW5kbGVSZXNwb25zZShyZXN1bHQsICdwdXQnKTtcblxuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLmhhbmRsZVJlc3BvbnNlRXJyb3IobW9kZWxzLCAncHV0Jyk7XG5cbiAgICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZVRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYSBNb2RlbCBpbnN0YW5jZSBmcm9tIGRhdGFiYXNlXG4gICAqL1xuICBkZWxldGUobW9kZWw6IE1vZGVsLCBtcERhdGE/OiBBYnN0cmFjdE1vZGVsKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgdGhpcy5oYW5kbGVBY2Nlc3NFcnJvcignZGVsZXRlJyk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZShgJHt0aGlzLmFwaVVybH0vJHttb2RlbC5pZH1gKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVSZXNwb25zZShbbW9kZWxdLCAnZGVsZXRlJywgbXBEYXRhKTtcbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHRoaXMuaGFuZGxlUmVzcG9uc2VFcnJvcihbbW9kZWxdLCAnZGVsZXRlJywgbXBEYXRhKTtcblxuICAgICAgICAgIHJldHVybiBvYnNlcnZhYmxlVGhyb3dFcnJvcihlcnJvcik7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBtdWx0aXBsZSBNb2RlbCBpbnN0YW5jZXMgZnJvbSBkYXRhYmFzZVxuICAgKi9cbiAgZGVsZXRlQmF0Y2gobW9kZWxzOiBNb2RlbFtdKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgdGhpcy5oYW5kbGVBY2Nlc3NFcnJvcignZGVsZXRlQmF0Y2gnKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmFwaVVybH0vZGVsZXRlYCwgY2xhc3NUb1BsYWluKG1vZGVscykpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmhhbmRsZVJlc3BvbnNlKG1vZGVscywgJ2RlbGV0ZScpO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVSZXNwb25zZUVycm9yKG1vZGVscywgJ2RlbGV0ZScpO1xuXG4gICAgICAgICAgcmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdHJhY2socmVzcG9uc2U6IE1vZGVsW10sIG1ldGhvZDogSHR0cE1ldGhvZCwgbXBEYXRhPzogQWJzdHJhY3RNb2RlbCwgcG9zdGZpeCA9ICcnKSB7XG4gICAgLy8gY2hlY2sgaWYgcmVzdWx0IGV4aXN0LCBzb21ldGltZXMgcmVzcG9uc2UgbWF5IGJlIGVtcHR5IChmb3IgZXhhbXBsZSBDbGllbnRJbnZpdGUgYWNjZXB0L3JlamVjdC9ldGMpXG4gICAgaWYgKCFyZXNwb25zZVswXSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIG5vIG90aGVyIHdheSB0byBjaGVjayBpbnRlcmZhY2VcbiAgICBpZiAoJ2dldE1wRGF0YScgaW4gcmVzcG9uc2VbMF0pIHtcbiAgICAgIHJlc3BvbnNlLmZvckVhY2goKG1vZGVsKSA9PiB7XG4gICAgICAgIHRoaXMubXBTZXJ2aWNlLnRyYWNrKGAke21ldGhvZH0ke3RoaXMubW9kZWxDbGFzcy5uYW1lfSR7cG9zdGZpeH1gLCBtb2RlbFsnZ2V0TXBEYXRhJ10obXBEYXRhKSlcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVSZXNwb25zZUVycm9yKHJlc3BvbnNlOiBNb2RlbFtdLCBtZXRob2Q6IEh0dHBNZXRob2QsIG1wRGF0YT86IEFic3RyYWN0TW9kZWwpIHtcbiAgICAvLyBAVE9ETyBlcnJvciBub3RpZmljYXRpb24/XG4gICAgdGhpcy50cmFjayhyZXNwb25zZSwgbWV0aG9kLCBtcERhdGEsICdFcnJvcicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSByZXNwb25zZSBkYXRhIC0gdXBkYXRlIGNhY2hlIGFuZCBkaXNwYXRjaCBldmVudCBpZiBpdCBpcyBuZWVkZWRcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVSZXNwb25zZShyZXNwb25zZTogTW9kZWxbXSwgbWV0aG9kOiBIdHRwTWV0aG9kLCBtcERhdGE/OiBBYnN0cmFjdE1vZGVsKSB7XG4gICAgdGhpcy50cmFjayhyZXNwb25zZSwgbWV0aG9kLCBtcERhdGEpO1xuXG4gICAgaWYgKHRoaXMuZ2V0Q2FjaGUoKSAmJiAhdGhpcy5kaXNhYmxlQ2FjaGUpIHtcbiAgICAgIHRoaXMudXBkYXRlQ2FjaGUocmVzcG9uc2UsIG1ldGhvZCk7XG4gICAgfVxuXG4gICAgLy8gZGlzcGF0Y2ggZXZlbnQgZm9yIGludGVyZXN0ZWQgc2VydmljZXNcbiAgICBpZiAocmVzcG9uc2VbMF0gaW5zdGFuY2VvZiBPYnNlcnZhYmxlTW9kZWwpIHtcbiAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChtZXRob2QsIHJlc3BvbnNlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGNhY2hlIHdpdGggcGFzc2VkIGl0ZW1zLiBBZGQvVXBkYXRlIGRldGVjdHMgYXV0b21hdGljYWxseSwgRGVsZXRlIHZpYSBvcHRpb25hbCBmbGFnXG4gICAqL1xuICBwcm90ZWN0ZWQgdXBkYXRlQ2FjaGUoaXRlbXM6IE1vZGVsW10sIG1ldGhvZDogSHR0cE1ldGhvZCk6IHZvaWQge1xuICAgIGxldCBjYWNoZTogQ29sbGVjdGlvbk1vZGVsO1xuXG4gICAgc3dpdGNoIChtZXRob2QpIHtcbiAgICAgIGNhc2UgJ3Bvc3QnOlxuICAgICAgICBjYWNoZSA9IHRoaXMuY2FjaGUucHVzaCguLi5pdGVtcyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdwdXQnOlxuICAgICAgICAvLyBAVE9ETyBBbGV4IG9sZCBpbnN0YW5jZVxuICAgICAgICBpdGVtcy5mb3JFYWNoKChpdGVtOiBNb2RlbCkgPT4ge1xuICAgICAgICAgIGNhY2hlID0gdGhpcy5jYWNoZS5yZXBsYWNlQnkoJ2lkJywgaXRlbS5pZCwgaXRlbSk7XG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnZGVsZXRlJzpcbiAgICAgICAgY2FjaGUgPSB0aGlzLmNhY2hlLnJlbW92ZUJ5KCdpZCcsIGl0ZW1zLm1hcCgoaXRlbTogTW9kZWwpID0+IGl0ZW0uaWQpKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2dldCc6XG4gICAgICAgIGNhY2hlID0gdGhpcy5jcmVhdGVDb2xsZWN0aW9uSW5zdGFuY2UodGhpcy5jb2xsZWN0aW9uQ2xhc3MsIGl0ZW1zKTtcbiAgICB9XG5cbiAgICB0aGlzLnNldENhY2hlKGNhY2hlLnRvQXJyYXkoKSwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgYW5kIGRpc3BhdGNoIHJlc3QgZXZlbnRcbiAgICovXG4gIHByb3RlY3RlZCBkaXNwYXRjaEV2ZW50KG1ldGhvZDogSHR0cE1ldGhvZCwgaXRlbXM6IE1vZGVsW10pOiB2b2lkIHtcbiAgICBjb25zdCBldmVudE5hbWU6IHN0cmluZyA9ICh0aGlzLm1vZGVsQ2xhc3MgYXMgdHlwZW9mIE9ic2VydmFibGVNb2RlbCkuZ2V0RXZlbnROYW1lKG1ldGhvZCk7XG4gICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoMihuZXcgQXBwRXZlbnQyKGV2ZW50TmFtZSwgaXRlbXMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBtZXRob2QgaXMgbm90IGRpc2FibGVkLiBUaHJvdyBleGNlcHRpb24gb3RoZXJ3aXNlLlxuICAgKiBTb21lIGVudGl0aWVzIGRvZXMgbm90IGhhdmUgZW5kcG9pbnRzIGZvciBhbGwgbWV0aG9kcy5cbiAgICovXG4gIHByaXZhdGUgaGFuZGxlQWNjZXNzRXJyb3IobWV0aG9kOiBSZXN0TWV0aG9kKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkTWV0aG9kcy5pbmNsdWRlcyhtZXRob2QpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKGBNZXRob2QgJHttZXRob2R9KCkgaXMgbm90IGFsbG93ZWQgZm9yICR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZSB0byBodHRwIGV2ZW50cyBhbmQgcnVuIGNhbGxiYWNrLlxuICAgKiBDU0UgLSBDbGVpbnQgU2VudCBFdmVudHNcbiAgICogQHBhcmFtIG1vZGVsQ2xhc3NcbiAgICogQHBhcmFtIG1ldGhvZHMgVGhlIGxpc3Qgb2YgaHR0cCBtZXRob2RzIHNob3VsZCBiZSBsaXN0ZW5lZCBmb3JcbiAgICogQHBhcmFtIGNhbGxiYWNrIFRoZSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiBldmVudCB0cmlnZ2VyZWRcbiAgICovXG4gIHByb3RlY3RlZCBsaXN0ZW5DU0UobW9kZWxDbGFzczogdHlwZW9mIE9ic2VydmFibGVNb2RlbCwgbWV0aG9kczogSHR0cE1ldGhvZFtdLCBjYWxsYmFjazogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICBjYWxsYmFjayA9IGNhbGxiYWNrLmJpbmQodGhpcyk7XG5cbiAgICBtZXRob2RzLmZvckVhY2goKG1ldGhvZDogSHR0cE1ldGhvZCkgPT4ge1xuICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLm9uMihtb2RlbENsYXNzLmdldEV2ZW50TmFtZShtZXRob2QpKS5zdWJzY3JpYmUoKGRhdGE6IE9ic2VydmFibGVNb2RlbFtdKSA9PiB7XG4gICAgICAgIGNhbGxiYWNrKGRhdGEpO1xuICAgICAgfSk7XG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBjaGVjayBpZiB1c2VyIGhhcyBzdWJzY3JpcHRpb24gcm9sZSB0byBhY2Nlc3MgYXBpXG4gICAqL1xuICBoYXNSb2xlcygpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMucm9sZXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gISFpbnRlcnNlY3Rpb24oSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncm9sZXMnKSksIHRoaXMucm9sZXMpLmxlbmd0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiAvLyBAVE9ETyBBbGV4IHJlbW92ZVxuICAgKiBNZXRob2QgdGhhdCBjYWxsIGFsbCBsaXN0ZW5lcnMuIEVtcHR5IGJ5IGRlZmF1bHQuIFNob3VsZCBiZSByZWRlZmluZWQgYnkgY2hpbGQgc2VydmljZXMgaWYgcmVxdWlyZWRcbiAgICovXG4gIGxpc3RlbkV2ZW50cygpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIExpc3RlbiBTU0UgZXZlbnRzXG4gICAqL1xuICBsaXN0ZW5TU0UoKTogdm9pZCB7fVxufVxuIl19
|