@myclub_se/data-access 3.2.2 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/esm2022/lib/api-models/api-activity-settings.mjs +1 -1
  2. package/esm2022/lib/api-models/api-invoice/api-invoice-payment-post-data.mjs +2 -0
  3. package/esm2022/lib/api-models/api-invoice/api-member-invoice.mjs +1 -1
  4. package/esm2022/lib/api-models/api-invoice/api-payment-attempt-create.mjs +4 -4
  5. package/esm2022/lib/api-models/api-invoice/index.mjs +2 -1
  6. package/esm2022/lib/interfaces/index.mjs +2 -1
  7. package/esm2022/lib/interfaces/payment-attempt-data.interface.mjs +2 -0
  8. package/esm2022/lib/models/activity-settings.mjs +4 -2
  9. package/esm2022/lib/models/invoice/member-invoice.mjs +4 -2
  10. package/esm2022/lib/models/invoice/payment-attempt-data-types/index.mjs +2 -1
  11. package/esm2022/lib/models/invoice/payment-attempt-data-types/payment-attempt-fritidskortet-data-type.mjs +2 -0
  12. package/esm2022/lib/models/invoice/payment-attempt.mjs +1 -1
  13. package/esm2022/lib/services/factories/activity-settings-factory.mjs +2 -2
  14. package/esm2022/lib/services/factories/member-invoice-factory.mjs +2 -2
  15. package/esm2022/lib/services/factories/payment-attempt-factory.mjs +4 -1
  16. package/esm2022/lib/services/invoice/payment-attempt.service.mjs +20 -6
  17. package/esm2022/lib/store/actions/invoice.actions.mjs +9 -1
  18. package/esm2022/lib/store/effects/invoice.effects.mjs +26 -8
  19. package/esm2022/lib/types/payment-attempt-type.mjs +1 -1
  20. package/fesm2022/myclub_se-data-access.mjs +66 -19
  21. package/fesm2022/myclub_se-data-access.mjs.map +1 -1
  22. package/lib/api-models/api-activity-settings.d.ts +1 -0
  23. package/lib/api-models/api-invoice/api-invoice-payment-post-data.d.ts +8 -0
  24. package/lib/api-models/api-invoice/api-member-invoice.d.ts +1 -0
  25. package/lib/api-models/api-invoice/api-payment-attempt-create.d.ts +3 -2
  26. package/lib/api-models/api-invoice/index.d.ts +1 -0
  27. package/lib/interfaces/index.d.ts +1 -0
  28. package/lib/interfaces/payment-attempt-data.interface.d.ts +8 -0
  29. package/lib/models/activity-settings.d.ts +2 -1
  30. package/lib/models/invoice/member-invoice.d.ts +2 -1
  31. package/lib/models/invoice/payment-attempt-data-types/index.d.ts +1 -0
  32. package/lib/models/invoice/payment-attempt-data-types/payment-attempt-fritidskortet-data-type.d.ts +1 -0
  33. package/lib/models/invoice/payment-attempt.d.ts +3 -3
  34. package/lib/services/invoice/payment-attempt.service.d.ts +3 -2
  35. package/lib/store/actions/invoice.actions.d.ts +44 -0
  36. package/lib/store/effects/invoice.effects.d.ts +10 -0
  37. package/lib/types/payment-attempt-type.d.ts +1 -1
  38. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  import { inject, Injectable } from '@angular/core';
2
2
  import { Actions, createEffect, ofType } from '@ngrx/effects';
3
3
  import { InvoiceService, PaymentAttemptService, PaymentOrderService } from '../../services';
4
- import { createMondidoInvoicePaymentFailureAction, createMondidoInvoicePaymentSuccessAction, createMondidoMemberInvoicePaymentAction, createMondidoMemberPaymentOrderPaymentAction, createMondidoPaymentOrderPaymentFailureAction, createMondidoPaymentOrderPaymentSuccessAction, createMondidoPublicInvoicePaymentAction, createMondidoPublicPaymentOrderPaymentAction, createSwishInvoicePaymentFailureAction, createSwishInvoicePaymentSuccessAction, createSwishMemberInvoicePaymentAction, createSwishMemberPaymentOrderPaymentAction, createSwishPaymentOrderPaymentFailureAction, createSwishPaymentOrderPaymentSuccessAction, createSwishPublicInvoicePaymentAction, createSwishPublicPaymentOrderPaymentAction, createZimplerMemberPaymentAction, createZimplerPaymentFailureAction, createZimplerPaymentSuccessAction, createZimplerPublicPaymentAction, deletePaymentOrderAction, deletePaymentOrderFailureAction, deletePaymentOrderSuccessAction, listMemberInvoicesAction, listMemberInvoicesFailureAction, listMemberInvoicesSuccessAction, listMemberPaymentOrdersAction, listMemberPaymentOrdersFailureAction, listMemberPaymentOrdersSuccessAction, retrieveInvoiceSwishQRCodeFailureAction, retrieveInvoiceSwishQRCodeSuccessAction, retrieveMemberInvoiceAction, retrieveMemberInvoiceFailureAction, retrieveMemberInvoicePaymentAttemptAction, retrieveMemberInvoicePaymentAttemptFailureAction, retrieveMemberInvoicePaymentAttemptSuccessAction, retrieveMemberInvoiceSuccessAction, retrieveMemberInvoiceSwishQRCodeAction, retrieveMemberPaymentOrderPaymentAttemptAction, retrieveMemberPaymentOrderPaymentAttemptFailureAction, retrieveMemberPaymentOrderPaymentAttemptSuccessAction, retrieveMemberPaymentOrderSwishQRCodeAction, retrievePaymentOrderAction, retrievePaymentOrderFailureAction, retrievePaymentOrderSuccessAction, retrievePaymentOrderSwishQRCodeFailureAction, retrievePaymentOrderSwishQRCodeSuccessAction, retrievePublicInvoiceAction, retrievePublicInvoiceFailureAction, retrievePublicInvoiceLogoAction, retrievePublicInvoiceLogoFailureAction, retrievePublicInvoiceLogoSuccessAction, retrievePublicInvoicePaymentAttemptAction, retrievePublicInvoicePaymentAttemptFailureAction, retrievePublicInvoicePaymentAttemptSuccessAction, retrievePublicInvoiceSuccessAction, retrievePublicInvoiceSwishQRCodeAction, retrievePublicPaymentOrderAction, retrievePublicPaymentOrderFailureAction, retrievePublicPaymentOrderLogoAction, retrievePublicPaymentOrderLogoFailureAction, retrievePublicPaymentOrderLogoSuccessAction, retrievePublicPaymentOrderPaymentAttemptAction, retrievePublicPaymentOrderPaymentAttemptFailureAction, retrievePublicPaymentOrderPaymentAttemptSuccessAction, retrievePublicPaymentOrderSuccessAction, retrievePublicPaymentOrderSwishQRCodeAction } from '../actions';
4
+ import { createFritidskortetInvoicePaymentFailureAction, createFritidskortetInvoicePaymentSuccessAction, createFritidskortetMemberInvoicePaymentAction, createFritidskortetPublicInvoicePaymentAction, createMondidoInvoicePaymentFailureAction, createMondidoInvoicePaymentSuccessAction, createMondidoMemberInvoicePaymentAction, createMondidoMemberPaymentOrderPaymentAction, createMondidoPaymentOrderPaymentFailureAction, createMondidoPaymentOrderPaymentSuccessAction, createMondidoPublicInvoicePaymentAction, createMondidoPublicPaymentOrderPaymentAction, createSwishInvoicePaymentFailureAction, createSwishInvoicePaymentSuccessAction, createSwishMemberInvoicePaymentAction, createSwishMemberPaymentOrderPaymentAction, createSwishPaymentOrderPaymentFailureAction, createSwishPaymentOrderPaymentSuccessAction, createSwishPublicInvoicePaymentAction, createSwishPublicPaymentOrderPaymentAction, createZimplerMemberPaymentAction, createZimplerPaymentFailureAction, createZimplerPaymentSuccessAction, createZimplerPublicPaymentAction, deletePaymentOrderAction, deletePaymentOrderFailureAction, deletePaymentOrderSuccessAction, listMemberInvoicesAction, listMemberInvoicesFailureAction, listMemberInvoicesSuccessAction, listMemberPaymentOrdersAction, listMemberPaymentOrdersFailureAction, listMemberPaymentOrdersSuccessAction, retrieveInvoiceSwishQRCodeFailureAction, retrieveInvoiceSwishQRCodeSuccessAction, retrieveMemberInvoiceAction, retrieveMemberInvoiceFailureAction, retrieveMemberInvoicePaymentAttemptAction, retrieveMemberInvoicePaymentAttemptFailureAction, retrieveMemberInvoicePaymentAttemptSuccessAction, retrieveMemberInvoiceSuccessAction, retrieveMemberInvoiceSwishQRCodeAction, retrieveMemberPaymentOrderPaymentAttemptAction, retrieveMemberPaymentOrderPaymentAttemptFailureAction, retrieveMemberPaymentOrderPaymentAttemptSuccessAction, retrieveMemberPaymentOrderSwishQRCodeAction, retrievePaymentOrderAction, retrievePaymentOrderFailureAction, retrievePaymentOrderSuccessAction, retrievePaymentOrderSwishQRCodeFailureAction, retrievePaymentOrderSwishQRCodeSuccessAction, retrievePublicInvoiceAction, retrievePublicInvoiceFailureAction, retrievePublicInvoiceLogoAction, retrievePublicInvoiceLogoFailureAction, retrievePublicInvoiceLogoSuccessAction, retrievePublicInvoicePaymentAttemptAction, retrievePublicInvoicePaymentAttemptFailureAction, retrievePublicInvoicePaymentAttemptSuccessAction, retrievePublicInvoiceSuccessAction, retrievePublicInvoiceSwishQRCodeAction, retrievePublicPaymentOrderAction, retrievePublicPaymentOrderFailureAction, retrievePublicPaymentOrderLogoAction, retrievePublicPaymentOrderLogoFailureAction, retrievePublicPaymentOrderLogoSuccessAction, retrievePublicPaymentOrderPaymentAttemptAction, retrievePublicPaymentOrderPaymentAttemptFailureAction, retrievePublicPaymentOrderPaymentAttemptSuccessAction, retrievePublicPaymentOrderSuccessAction, retrievePublicPaymentOrderSwishQRCodeAction } from '../actions';
5
5
  import { exhaustMap, forkJoin, mergeMap, of } from 'rxjs';
6
6
  import { catchError, map } from 'rxjs/operators';
7
7
  import { HttpErrorResponse } from '@angular/common/http';
@@ -11,11 +11,19 @@ export class InvoiceEffects {
11
11
  invoiceService = inject(InvoiceService);
12
12
  paymentOrderService = inject(PaymentOrderService);
13
13
  paymentAttemptService = inject(PaymentAttemptService);
14
+ createMemberInvoiceFritidskortetPayment$ = createEffect(() => this.actions$
15
+ .pipe(ofType(createFritidskortetMemberInvoicePaymentAction), exhaustMap(({ payload }) => this.paymentAttemptService.createMemberInvoicePaymentAttempt(payload.memberId, payload.invoiceId, {
16
+ type: 'fritidskortet',
17
+ childPersonalId: payload.childPersonalId,
18
+ adultPersonalId: payload.adultPersonalId,
19
+ public: false
20
+ })
21
+ .pipe(map((paymentAttempt) => createFritidskortetInvoicePaymentSuccessAction({ payload: paymentAttempt })), catchError((error) => of(createFritidskortetInvoicePaymentFailureAction({ payload: error })))))));
14
22
  createMemberInvoiceMondidoPayment$ = createEffect(() => this.actions$
15
- .pipe(ofType(createMondidoMemberInvoicePaymentAction), exhaustMap(({ payload }) => this.paymentAttemptService.createMemberInvoicePaymentAttempt(payload.memberId, payload.invoiceId, 'mondido')
23
+ .pipe(ofType(createMondidoMemberInvoicePaymentAction), exhaustMap(({ payload }) => this.paymentAttemptService.createMemberInvoicePaymentAttempt(payload.memberId, payload.invoiceId, { type: 'mondido' })
16
24
  .pipe(map((paymentAttempt) => createMondidoInvoicePaymentSuccessAction({ payload: paymentAttempt })), catchError((error) => of(createMondidoInvoicePaymentFailureAction({ payload: error })))))));
17
25
  createMemberInvoiceSwishPayment$ = createEffect(() => this.actions$
18
- .pipe(ofType(createSwishMemberInvoicePaymentAction), exhaustMap(({ payload }) => this.paymentAttemptService.createMemberInvoicePaymentAttempt(payload.memberId, payload.invoiceId, 'swish', payload.telephoneNumber)
26
+ .pipe(ofType(createSwishMemberInvoicePaymentAction), exhaustMap(({ payload }) => this.paymentAttemptService.createMemberInvoicePaymentAttempt(payload.memberId, payload.invoiceId, { type: 'swish', phone_number: payload.telephoneNumber })
19
27
  .pipe(map((paymentAttempt) => createSwishInvoicePaymentSuccessAction({ payload: paymentAttempt })), catchError((error) => of(createSwishInvoicePaymentFailureAction({ payload: error })))))));
20
28
  createMemberPaymentOrderMondidoPayment$ = createEffect(() => this.actions$
21
29
  .pipe(ofType(createMondidoMemberPaymentOrderPaymentAction), exhaustMap(({ payload }) => this.paymentAttemptService.createMemberPaymentOrderPaymentAttempt(payload.memberId, payload.paymentOrderId, 'mondido')
@@ -24,13 +32,23 @@ export class InvoiceEffects {
24
32
  .pipe(ofType(createSwishMemberPaymentOrderPaymentAction), exhaustMap(({ payload }) => this.paymentAttemptService.createMemberPaymentOrderPaymentAttempt(payload.memberId, payload.paymentOrderId, 'swish', payload.telephoneNumber)
25
33
  .pipe(map((paymentAttempt) => createSwishPaymentOrderPaymentSuccessAction({ payload: paymentAttempt })), catchError((error) => of(createSwishPaymentOrderPaymentFailureAction({ payload: error })))))));
26
34
  createMemberZimplerPayment$ = createEffect(() => this.actions$
27
- .pipe(ofType(createZimplerMemberPaymentAction), exhaustMap(({ payload }) => this.paymentAttemptService.createMemberInvoicePaymentAttempt(payload.memberId, payload.invoiceId, 'zimpler')
35
+ .pipe(ofType(createZimplerMemberPaymentAction), exhaustMap(({ payload }) => this.paymentAttemptService.createMemberInvoicePaymentAttempt(payload.memberId, payload.invoiceId, { type: 'zimpler' })
28
36
  .pipe(map((paymentAttempt) => createZimplerPaymentSuccessAction({ payload: paymentAttempt })), catchError((error) => of(createZimplerPaymentFailureAction({ payload: error })))))));
37
+ createPublicInvoiceFritidskortPayment$ = createEffect(() => this.actions$
38
+ .pipe(ofType(createFritidskortetPublicInvoicePaymentAction), exhaustMap(({ payload }) => this.paymentAttemptService.createPublicInvoicePaymentAttempt(payload.invoiceId, payload.token, {
39
+ type: 'fritidskortet',
40
+ adultPersonalId: payload.adultPersonalId,
41
+ childPersonalId: payload.childPersonalId,
42
+ public: true
43
+ }).pipe(map((paymentAttempt) => createFritidskortetInvoicePaymentSuccessAction({ payload: paymentAttempt })), catchError((error) => of(createFritidskortetInvoicePaymentFailureAction({ payload: error })))))));
29
44
  createPublicInvoiceMondidoPayment$ = createEffect(() => this.actions$
30
- .pipe(ofType(createMondidoPublicInvoicePaymentAction), exhaustMap(({ payload }) => this.paymentAttemptService.createPublicInvoicePaymentAttempt(payload.invoiceId, payload.token, 'mondido')
45
+ .pipe(ofType(createMondidoPublicInvoicePaymentAction), exhaustMap(({ payload }) => this.paymentAttemptService.createPublicInvoicePaymentAttempt(payload.invoiceId, payload.token, { type: 'mondido' })
31
46
  .pipe(map((paymentAttempt) => createMondidoInvoicePaymentSuccessAction({ payload: paymentAttempt })), catchError((error) => of(createMondidoInvoicePaymentFailureAction({ payload: error })))))));
32
47
  createPublicInvoiceSwishPayment$ = createEffect(() => this.actions$
33
- .pipe(ofType(createSwishPublicInvoicePaymentAction), exhaustMap(({ payload }) => this.paymentAttemptService.createPublicInvoicePaymentAttempt(payload.invoiceId, payload.token, 'swish', payload.telephoneNumber)
48
+ .pipe(ofType(createSwishPublicInvoicePaymentAction), exhaustMap(({ payload }) => this.paymentAttemptService.createPublicInvoicePaymentAttempt(payload.invoiceId, payload.token, {
49
+ type: 'swish',
50
+ phone_number: payload.telephoneNumber
51
+ })
34
52
  .pipe(map((paymentAttempt) => createSwishInvoicePaymentSuccessAction({ payload: paymentAttempt })), catchError((error) => of(createSwishInvoicePaymentFailureAction({ payload: error })))))));
35
53
  createPublicPaymentOrderMondidoPayment$ = createEffect(() => this.actions$
36
54
  .pipe(ofType(createMondidoPublicPaymentOrderPaymentAction), exhaustMap(({ payload }) => this.paymentAttemptService.createPublicPaymentOrderPaymentAttempt(payload.paymentOrderId, payload.token, 'mondido')
@@ -39,7 +57,7 @@ export class InvoiceEffects {
39
57
  .pipe(ofType(createSwishPublicPaymentOrderPaymentAction), exhaustMap(({ payload }) => this.paymentAttemptService.createPublicPaymentOrderPaymentAttempt(payload.paymentOrderId, payload.token, 'swish', payload.telephoneNumber)
40
58
  .pipe(map((paymentAttempt) => createSwishPaymentOrderPaymentSuccessAction({ payload: paymentAttempt })), catchError((error) => of(createSwishPaymentOrderPaymentFailureAction({ payload: error })))))));
41
59
  createPublicZimplerPayment$ = createEffect(() => this.actions$
42
- .pipe(ofType(createZimplerPublicPaymentAction), exhaustMap(({ payload }) => this.paymentAttemptService.createPublicInvoicePaymentAttempt(payload.invoiceId, payload.token, 'zimpler')
60
+ .pipe(ofType(createZimplerPublicPaymentAction), exhaustMap(({ payload }) => this.paymentAttemptService.createPublicInvoicePaymentAttempt(payload.invoiceId, payload.token, { type: 'zimpler' })
43
61
  .pipe(map((paymentAttempt) => createZimplerPaymentSuccessAction({ payload: paymentAttempt })), catchError((error) => of(createZimplerPaymentFailureAction({ payload: error })))))));
44
62
  listMemberInvoices$ = createEffect(() => this.actions$
45
63
  .pipe(ofType(listMemberInvoicesAction), mergeMap(({ payload }) => forkJoin(payload.map((id) => this.invoiceService.getMemberInvoices(id)
@@ -129,4 +147,4 @@ export class InvoiceEffects {
129
147
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: InvoiceEffects, decorators: [{
130
148
  type: Injectable
131
149
  }] });
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52b2ljZS5lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi9zdG9yZS9lZmZlY3RzL2ludm9pY2UuZWZmZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFDLGNBQWMsRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzFGLE9BQU8sRUFDTCx3Q0FBd0MsRUFDeEMsd0NBQXdDLEVBQ3hDLHVDQUF1QyxFQUN2Qyw0Q0FBNEMsRUFDNUMsNkNBQTZDLEVBQzdDLDZDQUE2QyxFQUM3Qyx1Q0FBdUMsRUFDdkMsNENBQTRDLEVBQzVDLHNDQUFzQyxFQUN0QyxzQ0FBc0MsRUFDdEMscUNBQXFDLEVBQ3JDLDBDQUEwQyxFQUMxQywyQ0FBMkMsRUFDM0MsMkNBQTJDLEVBQzNDLHFDQUFxQyxFQUNyQywwQ0FBMEMsRUFDMUMsZ0NBQWdDLEVBQ2hDLGlDQUFpQyxFQUNqQyxpQ0FBaUMsRUFDakMsZ0NBQWdDLEVBQ2hDLHdCQUF3QixFQUN4QiwrQkFBK0IsRUFDL0IsK0JBQStCLEVBQy9CLHdCQUF3QixFQUN4QiwrQkFBK0IsRUFDL0IsK0JBQStCLEVBQy9CLDZCQUE2QixFQUM3QixvQ0FBb0MsRUFDcEMsb0NBQW9DLEVBQ3BDLHVDQUF1QyxFQUN2Qyx1Q0FBdUMsRUFDdkMsMkJBQTJCLEVBQzNCLGtDQUFrQyxFQUNsQyx5Q0FBeUMsRUFDekMsZ0RBQWdELEVBQ2hELGdEQUFnRCxFQUNoRCxrQ0FBa0MsRUFDbEMsc0NBQXNDLEVBQ3RDLDhDQUE4QyxFQUM5QyxxREFBcUQsRUFDckQscURBQXFELEVBQ3JE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U0FDL0gsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLFdBQXdCLEVBQUUsRUFBRSxDQUFDLDRDQUE0QyxDQUFDLEVBQUMsT0FBTyxFQUFFLFdBQVcsRUFBQyxDQUFDLENBQUMsRUFDdkcsVUFBVSxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLDRDQUE0QyxDQUFDLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUM3RyxDQUNKLENBQ0YsQ0FDRixDQUFDO3VHQS9hUyxjQUFjOzJHQUFkLGNBQWM7OzJGQUFkLGNBQWM7a0JBRDFCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luamVjdCwgSW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FjdGlvbnMsIGNyZWF0ZUVmZmVjdCwgb2ZUeXBlfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7SW52b2ljZVNlcnZpY2UsIFBheW1lbnRBdHRlbXB0U2VydmljZSwgUGF5bWVudE9yZGVyU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtcbiAgY3JlYXRlTW9uZGlkb0ludm9pY2VQYXltZW50RmFpbHVyZUFjdGlvbixcbiAgY3JlYXRlTW9uZGlkb0ludm9pY2VQYXltZW50U3VjY2Vzc0FjdGlvbixcbiAgY3JlYXRlTW9uZGlkb01lbWJlckludm9pY2VQYXltZW50QWN0aW9uLFxuICBjcmVhdGVNb25kaWRvTWVtYmVyUGF5bWVudE9yZGVyUGF5bWVudEFjdGlvbixcbiAgY3JlYXRlTW9uZGlkb1BheW1lbnRPcmRlclBheW1lbnRGYWlsdXJlQWN0aW9uLFxuICBjcmVhdGVNb25kaWRvUGF5bWVudE9yZGVyUGF5bWVudFN1Y2Nlc3NBY3Rpb24sXG4gIGNyZWF0ZU1vbmRpZG9QdWJsaWNJbnZvaWNlUGF5bWVudEFjdGlvbixcbiAgY3JlYXRlTW9uZGlkb1B1YmxpY1BheW1lbnRPcmRlclBheW1lbnRBY3Rpb24sXG4gIGNyZWF0ZVN3aXNoSW52b2ljZVBheW1lbnRGYWlsdXJlQWN0aW9uLFxuICBjcmVhdGVTd2lzaEludm9pY2VQYXltZW50U3VjY2Vzc0FjdGlvbixcbiAgY3JlYXRlU3dpc2hNZW1iZXJJbnZvaWNlUGF5bWVudEFjdGlvbixcbiAgY3JlYXRlU3dpc2hNZW1iZXJQYXltZW50T3JkZXJQYXltZW50QWN0aW9uLFxuICBjcmVhdGVTd2lzaFBheW1lbnRPcmRlclBheW1lbnRGYWlsdXJlQWN0aW9uLFxuICBjcmVhdGVTd2lzaFBheW1lbnRPcmRlclBheW1lbnRTdWNjZXNzQWN0aW9uLFxuICBjcmVhdGVTd2lzaFB1YmxpY0ludm9pY2VQYXltZW50QWN0aW9uLFxuICBjcmVhdGVTd2lzaFB1YmxpY1BheW1lbnRPcmRlclBheW1lbnRBY3Rpb24sXG4gIGNyZWF0ZVppbXBsZXJNZW1iZXJQYXltZW50QWN0aW9uLFxuICBjcmVhdGVaaW1wbGVyUGF5bWVudEZhaWx1cmVBY3Rpb24sXG4gIGNyZWF0ZVppbXBsZXJQYXltZW50U3VjY2Vzc0FjdGlvbixcbiAgY3JlYXRlWmltcGxlclB1YmxpY1BheW1lbnRBY3Rpb24sXG4gIGRlbGV0ZVBheW1lbnRPcmRlckFjdGlvbixcbiAgZGVsZXRlUGF5bWVudE9yZGVyRmFpbHVyZUFjdGlvbixcbiAgZGVsZXRlUGF5bWVudE9yZGVyU3VjY2Vzc0FjdGlvbixcbiAgbGlzdE1lbWJlckludm9pY2VzQWN0aW9uLFxuICBsaXN0TWVtYmVySW52b2ljZXNGYWlsdXJlQWN0aW9uLFxuICBsaXN0TWVtYmVySW52b2ljZXNTdWNjZXNzQWN0aW9uLFxuICBsaXN0TWVtYmVyUGF5bWVudE9yZGVyc0FjdGlvbixcbiAgbGlzdE1lbWJlclBheW1lbnRPcmRlcnNGYWlsdXJlQWN0aW9uLFxuICBsaXN0TWVtYmVyUGF5bWVudE9yZGVyc1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlSW52b2ljZVN3aXNoUVJDb2RlRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVJbnZvaWNlU3dpc2hRUkNvZGVTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckludm9pY2VBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVySW52b2ljZUZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVySW52b2ljZVBheW1lbnRBdHRlbXB0QWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckludm9pY2VQYXltZW50QXR0ZW1wdEZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVySW52b2ljZVBheW1lbnRBdHRlbXB0U3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJJbnZvaWNlU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJJbnZvaWNlU3dpc2hRUkNvZGVBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyUGF5bWVudE9yZGVyUGF5bWVudEF0dGVtcHRBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyUGF5bWVudE9yZGVyUGF5bWVudEF0dGVtcHRGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlclBheW1lbnRPcmRlclBheW1lbnRBdHRlbXB0U3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJQYXltZW50T3JkZXJTd2lzaFFSQ29kZUFjdGlvbixcbiAgcmV0cmlldmVQYXltZW50T3JkZXJBY3Rpb24sXG4gIHJldHJpZXZlUGF5bWVudE9yZGVyRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVQYXltZW50T3JkZXJTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZVBheW1lbnRPcmRlclN3aXNoUVJDb2RlRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVQYXltZW50T3JkZXJTd2lzaFFSQ29kZVN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlUHVibGljSW52b2ljZUFjdGlvbixcbiAgcmV0cmlldmVQdWJsaWNJbnZvaWNlRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVQdWJsaWNJbnZvaWNlTG9nb0FjdGlvbixcbiAgcmV0cmlldmVQdWJsaWNJbnZvaWNlTG9nb0ZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlUHVibGljSW52b2ljZUxvZ29TdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZVB1YmxpY0ludm9pY2VQYXltZW50QXR0ZW1wdEFjdGlvbixcbiAgcmV0cmlldmVQdWJsaWNJbnZvaWNlUGF5bWVudEF0dGVtcHRGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZVB1YmxpY0ludm9pY2VQYXltZW50QXR0ZW1wdFN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlUHVibGljSW52b2ljZVN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlUHVibGljSW52b2ljZVN3aXNoUVJDb2RlQWN0aW9uLFxuICByZXRyaWV2ZVB1YmxpY1BheW1lbnRPcmRlckFjdGlvbixcbiAgcmV0cmlldmVQdWJsaWNQYXltZW50T3JkZXJGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZVB1YmxpY1BheW1lbnRPcmRlckxvZ29BY3Rpb24sXG4gIHJldHJpZXZlUHVibGljUGF5bWVudE9yZGVyTG9nb0ZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlUHVibGljUGF5bWVudE9yZGVyTG9nb1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlUHVibGljUGF5bWVudE9yZGVyUGF5bWVudEF0dGVtcHRBY3Rpb24sXG4gIHJldHJpZXZlUHVibGljUGF5bWVudE9yZGVyUGF5bWVudEF0dGVtcHRGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZVB1YmxpY1BheW1lbnRPcmRlclBheW1lbnRBdHRlbXB0U3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVQdWJsaWNQYXltZW50T3JkZXJTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZVB1YmxpY1BheW1lbnRPcmRlclN3aXNoUVJDb2RlQWN0aW9uXG59IGZyb20gJy4uL2FjdGlvbnMnO1xuaW1wb3J0IHtleGhhdXN0TWFwLCBmb3JrSm9pbiwgbWVyZ2VNYXAsIG9mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Y2F0Y2hFcnJvciwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBDbHViSW1hZ2UsXG4gIENvbGxlY3Rpb24sXG4gIE1lbWJlckludm9pY2UsXG4gIFBheW1lbnRBdHRlbXB0LFxuICBQYXltZW50T3JkZXIsXG4gIFNlYXJjaE1lbWJlckludm9pY2UsXG4gIFN3aXNoUXJDb2RlXG59IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge0h0dHBFcnJvclJlc3BvbnNlfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEludm9pY2VFZmZlY3RzIHtcbiAgcHJpdmF0ZSBhY3Rpb25zJCA9IGluamVjdChBY3Rpb25zKTtcbiAgcHJpdmF0ZSBpbnZvaWNlU2VydmljZSA9IGluamVjdChJbnZvaWNlU2VydmljZSk7XG4gIHByaXZhdGUgcGF5bWVudE9yZGVyU2VydmljZSA9IGluamVjdChQYXltZW50T3JkZXJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBwYXltZW50QXR0ZW1wdFNlcnZpY2UgPSBpbmplY3QoUGF5bWVudEF0dGVtcHRTZXJ2aWNlKTtcblxuICBjcmVhdGVNZW1iZXJJbnZvaWNlTW9uZGlkb1BheW1lbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShjcmVhdGVNb25kaWRvTWVtYmVySW52b2ljZVBheW1lbnRBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyBtZW1iZXJJZDogc3RyaW5nLCBpbnZvaWNlSWQ6IHN0cmluZyB9XG4gICAgICAgIH0pID0+IHRoaXMucGF5bWVudEF0dGVtcHRTZXJ2aWNlLmNyZWF0ZU1lbWJlckludm9pY2VQYXltZW50QXR0ZW1wdChwYXlsb2FkLm1lbWJlcklkLCBwYXlsb2FkLmludm9pY2VJZCwgJ21vbmRpZG8nKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChwYXltZW50QXR0ZW1wdDogUGF5bWVudEF0dGVtcHQpID0+IGNyZWF0ZU1vbmRpZG9JbnZvaWNlUGF5bWVudFN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHBheW1lbnRBdHRlbXB0fSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihjcmVhdGVNb25kaWRvSW52b2ljZVBheW1lbnRGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGNyZWF0ZU1lbWJlckludm9pY2VTd2lzaFBheW1lbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShjcmVhdGVTd2lzaE1lbWJlckludm9pY2VQYXltZW50QWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge1xuICAgICAgICAgIHBheWxvYWQ6IHsgbWVtYmVySWQ6IHN0cmluZywgaW52b2ljZUlkOiBzdHJpbmcsIHRlbGVwaG9uZU51bWJlcjogc3RyaW5nIH1cbiAgICAgICAgfSkgPT4gdGhpcy5wYXltZW50QXR0ZW1wdFNlcnZpY2UuY3JlYXRlTWVtYmVySW52b2ljZVBheW1lbnRBdHRlbXB0KHBheWxvYWQubWVtYmVySWQsIHBheWxvYWQuaW52b2ljZUlkLCAnc3dpc2gnLCBwYXlsb2FkLnRlbGVwaG9uZU51bWJlcilcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgocGF5bWVudEF0dGVtcHQ6IFBheW1lbnRBdHRlbXB0KSA9PiBjcmVhdGVTd2lzaEludm9pY2VQYXltZW50U3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogcGF5bWVudEF0dGVtcHR9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGNyZWF0ZVN3aXNoSW52b2ljZVBheW1lbnRGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGNyZWF0ZU1lbWJlclBheW1lbnRPcmRlck1vbmRpZG9QYXltZW50JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUoY3JlYXRlTW9uZGlkb01lbWJlclBheW1lbnRPcmRlclBheW1lbnRBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyBtZW1iZXJJZDogc3RyaW5nLCBwYXltZW50T3JkZXJJZDogc3RyaW5nIH1cbiAgICAgICAgfSkgPT4gdGhpcy5wYXltZW50QXR0ZW1wdFNlcnZpY2UuY3JlYXRlTWVtYmVyUGF5bWVudE9yZGVyUGF5bWVudEF0dGVtcHQocGF5bG9hZC5tZW1iZXJJZCwgcGF5bG9hZC5wYXltZW50T3JkZXJJZCwgJ21vbmRpZG8nKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChwYXltZW50QXR0ZW1wdDogUGF5bWVudEF0dGVtcHQpID0+IGNyZWF0ZU1vbmRpZG9QYXltZW50T3JkZXJQYXltZW50U3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogcGF5bWVudEF0dGVtcHR9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGNyZWF0ZU1vbmRpZG9QYXltZW50T3JkZXJQYXltZW50RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBjcmVhdGVNZW1iZXJQYXltZW50T3JkZXJTd2lzaFBheW1lbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShjcmVhdGVTd2lzaE1lbWJlclBheW1lbnRPcmRlclBheW1lbnRBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyBtZW1iZXJJZDogc3RyaW5nLCBwYXltZW50T3JkZXJJZDogc3RyaW5nLCB0ZWxlcGhvbmVOdW1iZXI6IHN0cmluZyB9XG4gICAgICAgIH0pID0+IHRoaXMucGF5bWVudEF0dGVtcHRTZXJ2aWNlLmNyZWF0ZU1lbWJlclBheW1lbnRPcmRlclBheW1lbnRBdHRlbXB0KHBheWxvYWQubWVtYmVySWQsIHBheWxvYWQucGF5bWVudE9yZGVySWQsICdzd2lzaCcsIHBheWxvYWQudGVsZXBob25lTnVtYmVyKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChwYXltZW50QXR0ZW1wdDogUGF5bWVudEF0dGVtcHQpID0+IGNyZWF0ZVN3aXNoUGF5bWVudE9yZGVyUGF5bWVudFN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHBheW1lbnRBdHRlbXB0fSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihjcmVhdGVTd2lzaFBheW1lbnRPcmRlclBheW1lbnRGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGNyZWF0ZU1lbWJlclppbXBsZXJQYXltZW50JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUoY3JlYXRlWmltcGxlck1lbWJlclBheW1lbnRBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyBtZW1iZXJJZDogc3RyaW5nLCBpbnZvaWNlSWQ6IHN0cmluZyB9XG4gICAgICAgIH0pID0+IHRoaXMucGF5bWVudEF0dGVtcHRTZXJ2aWNlLmNyZWF0ZU1lbWJlckludm9pY2VQYXltZW50QXR0ZW1wdChwYXlsb2FkLm1lbWJlcklkLCBwYXlsb2FkLmludm9pY2VJZCwgJ3ppbXBsZXInKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChwYXltZW50QXR0ZW1wdDogUGF5bWVudEF0dGVtcHQpID0+IGNyZWF0ZVppbXBsZXJQYXltZW50U3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogcGF5bWVudEF0dGVtcHR9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGNyZWF0ZVppbXBsZXJQYXltZW50RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBjcmVhdGVQdWJsaWNJbnZvaWNlTW9uZGlkb1BheW1lbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShjcmVhdGVNb25kaWRvUHVibGljSW52b2ljZVBheW1lbnRBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0b2tlbjogc3RyaW5nLCBpbnZvaWNlSWQ6IHN0cmluZyB9XG4gICAgICAgIH0pID0+IHRoaXMucGF5bWVudEF0dGVtcHRTZXJ2aWNlLmNyZWF0ZVB1YmxpY0ludm9pY2VQYXltZW50QXR0ZW1wdChwYXlsb2FkLmludm9pY2VJZCwgcGF5bG9hZC50b2tlbiwgJ21vbmRpZG8nKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChwYXltZW50QXR0ZW1wdDogUGF5bWVudEF0dGVtcHQpID0+IGNyZWF0ZU1vbmRpZG9JbnZvaWNlUGF5bWVudFN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHBheW1lbnRBdHRlbXB0fSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihjcmVhdGVNb25kaWRvSW52b2ljZVBheW1lbnRGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGNyZWF0ZVB1YmxpY0ludm9pY2VTd2lzaFBheW1lbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShjcmVhdGVTd2lzaFB1YmxpY0ludm9pY2VQYXltZW50QWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge1xuICAgICAgICAgIHBheWxvYWQ6IHsgdG9rZW46IHN0cmluZywgaW52b2ljZUlkOiBzdHJpbmcsIHRlbGVwaG9uZU51bWJlcjogc3RyaW5nIH1cbiAgICAgICAgfSkgPT4gdGhpcy5wYXltZW50QXR0ZW1wdFNlcnZpY2UuY3JlYXRlUHVibGljSW52b2ljZVBheW1lbnRBdHRlbXB0KHBheWxvYWQuaW52b2ljZUlkLCBwYXlsb2FkLnRva2VuLCAnc3dpc2gnLCBwYXlsb2FkLnRlbGVwaG9uZU51bWJlcilcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgocGF5bWVudEF0dGVtcHQ6IFBheW1lbnRBdHRlbXB0KSA9PiBjcmVhdGVTd2lzaEludm9pY2VQYXltZW50U3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogcGF5bWVudEF0dGVtcHR9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGNyZWF0ZVN3aXNoSW52b2ljZVBheW1lbnRGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGNyZWF0ZVB1YmxpY1BheW1lbnRPcmRlck1vbmRpZG9QYXltZW50JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUoY3JlYXRlTW9uZGlkb1B1YmxpY1BheW1lbnRPcmRlclBheW1lbnRBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0b2tlbjogc3RyaW5nLCBwYXltZW50T3JkZXJJZDogc3RyaW5nIH1cbiAgICAgICAgfSkgPT4gdGhpcy5wYXltZW50QXR0ZW1wdFNlcnZpY2UuY3JlYXRlUHVibGljUGF5bWVudE9yZGVyUGF5bWVudEF0dGVtcHQocGF5bG9hZC5wYXltZW50T3JkZXJJZCwgcGF5bG9hZC50b2tlbiwgJ21vbmRpZG8nKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChwYXltZW50QXR0ZW1wdDogUGF5bWVudEF0dGVtcHQpID0+IGNyZWF0ZU1vbmRpZG9QYXltZW50T3JkZXJQYXltZW50U3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogcGF5bWVudEF0dGVtcHR9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGNyZWF0ZU1vbmRpZG9QYXltZW50T3JkZXJQYXltZW50RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBjcmVhdGVQdWJsaWNQYXltZW50T3JkZXJTd2lzaFBheW1lbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShjcmVhdGVTd2lzaFB1YmxpY1BheW1lbnRPcmRlclBheW1lbnRBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0b2tlbjogc3RyaW5nLCBwYXltZW50T3JkZXJJZDogc3RyaW5nLCB0ZWxlcGhvbmVOdW1iZXI6IHN0cmluZyB9XG4gICAgICAgIH0pID0+IHRoaXMucGF5bWVudEF0dGVtcHRTZXJ2aWNlLmNyZWF0ZVB1YmxpY1BheW1lbnRPcmRlclBheW1lbnRBdHRlbXB0KHBheWxvYWQucGF5bWVudE9yZGVySWQsIHBheWxvYWQudG9rZW4sICdzd2lzaCcsIHBheWxvYWQudGVsZXBob25lTnVtYmVyKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChwYXltZW50QXR0ZW1wdDogUGF5bWVudEF0dGVtcHQpID0+IGNyZWF0ZVN3aXNoUGF5bWVudE9yZGVyUGF5bWVudFN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHBheW1lbnRBdHRlbXB0fSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihjcmVhdGVTd2lzaFBheW1lbnRPcmRlclBheW1lbnRGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGNyZWF0ZVB1YmxpY1ppbXBsZXJQYXltZW50JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUoY3JlYXRlWmltcGxlclB1YmxpY1BheW1lbnRBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0b2tlbjogc3RyaW5nLCBpbnZvaWNlSWQ6IHN0cmluZyB9XG4gICAgICAgIH0pID0+IHRoaXMucGF5bWVudEF0dGVtcHRTZXJ2aWNlLmNyZWF0ZVB1YmxpY0ludm9pY2VQYXltZW50QXR0ZW1wdChwYXlsb2FkLmludm9pY2VJZCwgcGF5bG9hZC50b2tlbiwgJ3ppbXBsZXInKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChwYXltZW50QXR0ZW1wdDogUGF5bWVudEF0dGVtcHQpID0+IGNyZWF0ZVppbXBsZXJQYXltZW50U3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogcGF5bWVudEF0dGVtcHR9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGNyZWF0ZVppbXBsZXJQYXltZW50RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsaXN0TWVtYmVySW52b2ljZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsaXN0TWVtYmVySW52b2ljZXNBY3Rpb24pLFxuICAgICAgbWVyZ2VNYXAoKHtwYXlsb2FkfTogeyBwYXlsb2FkOiBBcnJheTxzdHJpbmc+IH0pID0+XG4gICAgICAgIGZvcmtKb2luKFxuICAgICAgICAgIHBheWxvYWQubWFwKChpZDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgdGhpcy5pbnZvaWNlU2VydmljZS5nZXRNZW1iZXJJbnZvaWNlcyhpZClcbiAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChpbnZvaWNlczogQ29sbGVjdGlvbjxTZWFyY2hNZW1iZXJJbnZvaWNlPikgPT4gKHtpZCwgaW52b2ljZXM6IGludm9pY2VzLnRvQXJyYXkoKX0pKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHtpZCwgZXJyb3J9KSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKS5waXBlKFxuICAgICAgICAgIG1lcmdlTWFwKChyZXN1bHRzOiBBcnJheTx7XG4gICAgICAgICAgICBpZDogc3RyaW5nLFxuICAgICAgICAgICAgaW52b2ljZXM/OiBBcnJheTxTZWFyY2hNZW1iZXJJbnZvaWNlPixcbiAgICAgICAgICAgIGVycm9yPzogSHR0cEVycm9yUmVzcG9uc2VcbiAgICAgICAgICB9PikgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW52b2ljZU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBBcnJheTxTZWFyY2hNZW1iZXJJbnZvaWNlPj4oKTtcbiAgICAgICAgICAgIGNvbnN0IGVycm9ycyA9IHJlc3VsdHMuZmlsdGVyKHJlc3VsdCA9PiByZXN1bHQuZXJyb3IpO1xuICAgICAgICAgICAgaWYgKGVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKGxpc3RNZW1iZXJJbnZvaWNlc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yc1swXS5lcnJvciBhcyBIdHRwRXJyb3JSZXNwb25zZX0pKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzdWx0cy5mb3JFYWNoKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHJlc3VsdC5pbnZvaWNlcykge1xuICAgICAgICAgICAgICAgIGludm9pY2VNYXAuc2V0KHJlc3VsdC5pZCwgcmVzdWx0Lmludm9pY2VzKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBvZihsaXN0TWVtYmVySW52b2ljZXNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBpbnZvaWNlTWFwfSkpO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVNZW1iZXJJbnZvaWNlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVNZW1iZXJJbnZvaWNlQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge1xuICAgICAgICAgIHBheWxvYWQ6IHsgbWVtYmVySWQ6IHN0cmluZywgaW52b2ljZUlkOiBzdHJpbmcgfVxuICAgICAgICB9KSA9PiB0aGlzLmludm9pY2VTZXJ2aWNlLmdldE1lbWJlckludm9pY2UocGF5bG9hZC5tZW1iZXJJZCwgcGF5bG9hZC5pbnZvaWNlSWQpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGludm9pY2U6IE1lbWJlckludm9pY2UpID0+IHJldHJpZXZlTWVtYmVySW52b2ljZVN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGludm9pY2V9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlTWVtYmVySW52b2ljZUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbGlzdE1lbWJlclBheW1lbnRPcmRlcnMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsaXN0TWVtYmVyUGF5bWVudE9yZGVyc0FjdGlvbiksXG4gICAgICBtZXJnZU1hcCgoe3BheWxvYWR9OiB7IHBheWxvYWQ6IEFycmF5PHN0cmluZz4gfSkgPT5cbiAgICAgICAgZm9ya0pvaW4oXG4gICAgICAgICAgcGF5bG9hZC5tYXAoKGlkOiBzdHJpbmcpID0+XG4gICAgICAgICAgICB0aGlzLnBheW1lbnRPcmRlclNlcnZpY2UuZ2V0TWVtYmVyUGF5bWVudE9yZGVycyhpZClcbiAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChwYXltZW50T3JkZXJzOiBDb2xsZWN0aW9uPFBheW1lbnRPcmRlcj4pID0+ICh7aWQsIHBheW1lbnRPcmRlcnM6IHBheW1lbnRPcmRlcnMudG9BcnJheSgpfSkpLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2Yoe2lkLCBlcnJvcn0pKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAoKHJlc3VsdHM6IEFycmF5PHsgaWQ6IHN0cmluZywgcGF5bWVudE9yZGVycz86IEFycmF5PFBheW1lbnRPcmRlcj4sIGVycm9yPzogSHR0cEVycm9yUmVzcG9uc2UgfT4pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBheW1lbnRPcmRlck1hcCA9IG5ldyBNYXA8c3RyaW5nLCBBcnJheTxQYXltZW50T3JkZXI+PigpO1xuICAgICAgICAgICAgY29uc3QgZXJyb3JzID0gcmVzdWx0cy5maWx0ZXIocmVzdWx0ID0+IHJlc3VsdC5lcnJvcik7XG4gICAgICAgICAgICBpZiAoZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICAgICAgICByZXR1cm4gb2YobGlzdE1lbWJlclBheW1lbnRPcmRlcnNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcnNbMF0uZXJyb3IgYXMgSHR0cEVycm9yUmVzcG9uc2V9KSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc3VsdHMuZm9yRWFjaCgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChyZXN1bHQucGF5bWVudE9yZGVycykge1xuICAgICAgICAgICAgICAgIHBheW1lbnRPcmRlck1hcC5zZXQocmVzdWx0LmlkLCByZXN1bHQucGF5bWVudE9yZGVycyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gb2YobGlzdE1lbWJlclBheW1lbnRPcmRlcnNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBwYXltZW50T3JkZXJNYXB9KSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZVBheW1lbnRPcmRlciQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlUGF5bWVudE9yZGVyQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge1xuICAgICAgICAgIHBheWxvYWQ6IHsgbWVtYmVySWQ6IHN0cmluZywgcGF5bWVudE9yZGVySWQ6IHN0cmluZyB9XG4gICAgICAgIH0pID0+IHRoaXMucGF5bWVudE9yZGVyU2VydmljZS5nZXRNZW1iZXJQYXltZW50T3JkZXIocGF5bG9hZC5tZW1iZXJJZCwgcGF5bG9hZC5wYXltZW50T3JkZXJJZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgocGF5bWVudE9yZGVyOiBQYXltZW50T3JkZXIpID0+IHJldHJpZXZlUGF5bWVudE9yZGVyU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogcGF5bWVudE9yZGVyfSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZVBheW1lbnRPcmRlckZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgZGVsZXRlUGF5bWVudE9yZGVyJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUoZGVsZXRlUGF5bWVudE9yZGVyQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge1xuICAgICAgICAgIHBheWxvYWQ6IHsgbWVtYmVySWQ6IHN0cmluZywgcGF5bWVudE9yZGVySWQ6IHN0cmluZyB9XG4gICAgICAgIH0pID0+IHRoaXMucGF5bWVudE9yZGVyU2VydmljZS5kZWxldGVNZW1iZXJQYXltZW50T3JkZXIocGF5bG9hZC5tZW1iZXJJZCwgcGF5bG9hZC5wYXltZW50T3JkZXJJZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgodmFsdWU6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGV0ZVBheW1lbnRPcmRlclN1Y2Nlc3NBY3Rpb24oKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVsZXRlUGF5bWVudE9yZGVyRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogbmV3IEh0dHBFcnJvclJlc3BvbnNlKHtzdGF0dXM6IDQwMH0pfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihkZWxldGVQYXltZW50T3JkZXJGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlTWVtYmVySW52b2ljZVBheW1lbnRBdHRlbXB0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVNZW1iZXJJbnZvaWNlUGF5bWVudEF0dGVtcHRBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyBtZW1iZXJJZDogc3RyaW5nLCBpbnZvaWNlSWQ6IHN0cmluZywgcGF5bWVudEF0dGVtcHRJZDogbnVtYmVyIH1cbiAgICAgICAgfSkgPT4gdGhpcy5wYXltZW50QXR0ZW1wdFNlcnZpY2UuZ2V0TWVtYmVySW52b2ljZVBheW1lbnRBdHRlbXB0KHBheWxvYWQubWVtYmVySWQsIHBheWxvYWQuaW52b2ljZUlkLCBwYXlsb2FkLnBheW1lbnRBdHRlbXB0SWQpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHBheW1lbnRBdHRlbXB0OiBQYXltZW50QXR0ZW1wdCkgPT4gcmV0cmlldmVNZW1iZXJJbnZvaWNlUGF5bWVudEF0dGVtcHRTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBwYXltZW50QXR0ZW1wdH0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVNZW1iZXJJbnZvaWNlUGF5bWVudEF0dGVtcHRGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlTWVtYmVySW52b2ljZVN3aXNoUVJDb2RlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVNZW1iZXJJbnZvaWNlU3dpc2hRUkNvZGVBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyBtZW1iZXJJZDogc3RyaW5nLCBpbnZvaWNlSWQ6IHN0cmluZywgcGF5bWVudEF0dGVtcHRJZDogbnVtYmVyIH1cbiAgICAgICAgfSkgPT4gdGhpcy5wYXltZW50QXR0ZW1wdFNlcnZpY2UuZ2V0TWVtYmVySW52b2ljZVN3aXNoUVJDb2RlKHBheWxvYWQubWVtYmVySWQsIHBheWxvYWQuaW52b2ljZUlkLCBwYXlsb2FkLnBheW1lbnRBdHRlbXB0SWQpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHN3aXNoUVJDb2RlOiBTd2lzaFFyQ29kZSkgPT4gcmV0cmlldmVJbnZvaWNlU3dpc2hRUkNvZGVTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBzd2lzaFFSQ29kZX0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVJbnZvaWNlU3dpc2hRUkNvZGVGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlTWVtYmVyUGF5bWVudE9yZGVyU3dpc2hRUkNvZGUkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZU1lbWJlclBheW1lbnRPcmRlclN3aXNoUVJDb2RlQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge1xuICAgICAgICAgIHBheWxvYWQ6IHsgbWVtYmVySWQ6IHN0cmluZywgcGF5bWVudE9yZGVySWQ6IHN0cmluZywgcGF5bWVudEF0dGVtcHRJZDogbnVtYmVyIH1cbiAgICAgICAgfSkgPT4gdGhpcy5wYXltZW50QXR0ZW1wdFNlcnZpY2UuZ2V0TWVtYmVyUGF5bWVudE9yZGVyU3dpc2hRUkNvZGUocGF5bG9hZC5tZW1iZXJJZCwgcGF5bG9hZC5wYXltZW50T3JkZXJJZCwgcGF5bG9hZC5wYXltZW50QXR0ZW1wdElkKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChzd2lzaFFSQ29kZTogU3dpc2hRckNvZGUpID0+IHJldHJpZXZlUGF5bWVudE9yZGVyU3dpc2hRUkNvZGVTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBzd2lzaFFSQ29kZX0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVQYXltZW50T3JkZXJTd2lzaFFSQ29kZUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVQdWJsaWNJbnZvaWNlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVQdWJsaWNJbnZvaWNlQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge1xuICAgICAgICAgIHBheWxvYWQ6IHsgdG9rZW46IHN0cmluZywgaW52b2ljZUlkOiBzdHJpbmcgfVxuICAgICAgICB9KSA9PiB0aGlzLmludm9pY2VTZXJ2aWNlLmdldFB1YmxpY0ludm9pY2UocGF5bG9hZC5pbnZvaWNlSWQsIHBheWxvYWQudG9rZW4pXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGludm9pY2U6IE1lbWJlckludm9pY2UpID0+IHJldHJpZXZlUHVibGljSW52b2ljZVN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGludm9pY2V9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlUHVibGljSW52b2ljZUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVQdWJsaWNJbnZvaWNlTG9nbyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlUHVibGljSW52b2ljZUxvZ29BY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0b2tlbjogc3RyaW5nLCBpbnZvaWNlSWQ6IHN0cmluZyB9XG4gICAgICAgIH0pID0+IHRoaXMuaW52b2ljZVNlcnZpY2UuZ2V0UHVibGljSW52b2ljZUxvZ28ocGF5bG9hZC5pbnZvaWNlSWQsIHBheWxvYWQudG9rZW4pXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGltYWdlOiBDbHViSW1hZ2UpID0+IHJldHJpZXZlUHVibGljSW52b2ljZUxvZ29TdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBpbWFnZX0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVQdWJsaWNJbnZvaWNlTG9nb0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVQdWJsaWNJbnZvaWNlUGF5bWVudEF0dGVtcHQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZVB1YmxpY0ludm9pY2VQYXltZW50QXR0ZW1wdEFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IHRva2VuOiBzdHJpbmcsIGludm9pY2VJZDogc3RyaW5nLCBwYXltZW50QXR0ZW1wdElkOiBudW1iZXIgfVxuICAgICAgICB9KSA9PiB0aGlzLnBheW1lbnRBdHRlbXB0U2VydmljZS5nZXRQdWJsaWNJbnZvaWNlUGF5bWVudEF0dGVtcHQocGF5bG9hZC5pbnZvaWNlSWQsIHBheWxvYWQudG9rZW4sIHBheWxvYWQucGF5bWVudEF0dGVtcHRJZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgocGF5bWVudEF0dGVtcHQ6IFBheW1lbnRBdHRlbXB0KSA9PiByZXRyaWV2ZVB1YmxpY0ludm9pY2VQYXltZW50QXR0ZW1wdFN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHBheW1lbnRBdHRlbXB0fSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZVB1YmxpY0ludm9pY2VQYXltZW50QXR0ZW1wdEZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVQdWJsaWNJbnZvaWNlU3dpc2hRUkNvZGUkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZVB1YmxpY0ludm9pY2VTd2lzaFFSQ29kZUFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IHRva2VuOiBzdHJpbmcsIGludm9pY2VJZDogc3RyaW5nLCBwYXltZW50QXR0ZW1wdElkOiBudW1iZXIgfVxuICAgICAgICB9KSA9PiB0aGlzLnBheW1lbnRBdHRlbXB0U2VydmljZS5nZXRQdWJsaWNJbnZvaWNlU3dpc2hRUkNvZGUocGF5bG9hZC5pbnZvaWNlSWQsIHBheWxvYWQudG9rZW4sIHBheWxvYWQucGF5bWVudEF0dGVtcHRJZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoc3dpc2hRUkNvZGU6IFN3aXNoUXJDb2RlKSA9PiByZXRyaWV2ZUludm9pY2VTd2lzaFFSQ29kZVN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHN3aXNoUVJDb2RlfSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZUludm9pY2VTd2lzaFFSQ29kZUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cblxuICByZXRyaWV2ZU1lbWJlclBheW1lbnRPcmRlclBheW1lbnRBdHRlbXB0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVNZW1iZXJQYXltZW50T3JkZXJQYXltZW50QXR0ZW1wdEFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IG1lbWJlcklkOiBzdHJpbmcsIHBheW1lbnRPcmRlcklkOiBzdHJpbmcsIHBheW1lbnRBdHRlbXB0SWQ6IG51bWJlciB9XG4gICAgICAgIH0pID0+IHRoaXMucGF5bWVudEF0dGVtcHRTZXJ2aWNlLmdldE1lbWJlclBheW1lbnRPcmRlclBheW1lbnRBdHRlbXB0KHBheWxvYWQubWVtYmVySWQsIHBheWxvYWQucGF5bWVudE9yZGVySWQsIHBheWxvYWQucGF5bWVudEF0dGVtcHRJZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgocGF5bWVudEF0dGVtcHQ6IFBheW1lbnRBdHRlbXB0KSA9PiByZXRyaWV2ZU1lbWJlclBheW1lbnRPcmRlclBheW1lbnRBdHRlbXB0U3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogcGF5bWVudEF0dGVtcHR9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlTWVtYmVyUGF5bWVudE9yZGVyUGF5bWVudEF0dGVtcHRGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlUHVibGljUGF5bWVudE9yZGVyJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVQdWJsaWNQYXltZW50T3JkZXJBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0b2tlbjogc3RyaW5nLCBwYXltZW50T3JkZXJJZDogc3RyaW5nIH1cbiAgICAgICAgfSkgPT4gdGhpcy5wYXltZW50T3JkZXJTZXJ2aWNlLmdldFB1YmxpY1BheW1lbnRPcmRlcihwYXlsb2FkLnBheW1lbnRPcmRlcklkLCBwYXlsb2FkLnRva2VuKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChwYXltZW50T3JkZXI6IFBheW1lbnRPcmRlcikgPT4gcmV0cmlldmVQdWJsaWNQYXltZW50T3JkZXJTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBwYXltZW50T3JkZXJ9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlUHVibGljUGF5bWVudE9yZGVyRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZVB1YmxpY1BheW1lbnRPcmRlckxvZ28kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZVB1YmxpY1BheW1lbnRPcmRlckxvZ29BY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0b2tlbjogc3RyaW5nLCBwYXltZW50T3JkZXJJZDogc3RyaW5nIH1cbiAgICAgICAgfSkgPT4gdGhpcy5wYXltZW50T3JkZXJTZXJ2aWNlLmdldFB1YmxpY1BheW1lbnRPcmRlckxvZ28ocGF5bG9hZC5wYXltZW50T3JkZXJJZCwgcGF5bG9hZC50b2tlbilcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoaW1hZ2U6IENsdWJJbWFnZSkgPT4gcmV0cmlldmVQdWJsaWNQYXltZW50T3JkZXJMb2dvU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogaW1hZ2V9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlUHVibGljUGF5bWVudE9yZGVyTG9nb0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVQdWJsaWNQYXltZW50T3JkZXJQYXltZW50QXR0ZW1wdCQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlUHVibGljUGF5bWVudE9yZGVyUGF5bWVudEF0dGVtcHRBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0b2tlbjogc3RyaW5nLCBwYXltZW50T3JkZXJJZDogc3RyaW5nLCBwYXltZW50QXR0ZW1wdElkOiBudW1iZXIgfVxuICAgICAgICB9KSA9PiB0aGlzLnBheW1lbnRBdHRlbXB0U2VydmljZS5nZXRQdWJsaWNQYXltZW50T3JkZXJQYXltZW50QXR0ZW1wdChwYXlsb2FkLnBheW1lbnRPcmRlcklkLCBwYXlsb2FkLnRva2VuLCBwYXlsb2FkLnBheW1lbnRBdHRlbXB0SWQpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHBheW1lbnRBdHRlbXB0OiBQYXltZW50QXR0ZW1wdCkgPT4gcmV0cmlldmVQdWJsaWNQYXltZW50T3JkZXJQYXltZW50QXR0ZW1wdFN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHBheW1lbnRBdHRlbXB0fSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZVB1YmxpY1BheW1lbnRPcmRlclBheW1lbnRBdHRlbXB0RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZVB1YmxpY1BheW1lbnRPcmRlclN3aXNoUVJDb2RlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVQdWJsaWNQYXltZW50T3JkZXJTd2lzaFFSQ29kZUFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IHRva2VuOiBzdHJpbmcsIHBheW1lbnRPcmRlcklkOiBzdHJpbmcsIHBheW1lbnRBdHRlbXB0SWQ6IG51bWJlciB9XG4gICAgICAgIH0pID0+IHRoaXMucGF5bWVudEF0dGVtcHRTZXJ2aWNlLmdldFB1YmxpY1BheW1lbnRPcmRlclN3aXNoUVJDb2RlKHBheWxvYWQucGF5bWVudE9yZGVySWQsIHBheWxvYWQudG9rZW4sIHBheWxvYWQucGF5bWVudEF0dGVtcHRJZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoc3dpc2hRUkNvZGU6IFN3aXNoUXJDb2RlKSA9PiByZXRyaWV2ZVBheW1lbnRPcmRlclN3aXNoUVJDb2RlU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogc3dpc2hRUkNvZGV9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlUGF5bWVudE9yZGVyU3dpc2hRUkNvZGVGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xufVxuIl19
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52b2ljZS5lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi9zdG9yZS9lZmZlY3RzL2ludm9pY2UuZWZmZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFDLGNBQWMsRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzFGLE9BQU8sRUFDTCw4Q0FBOEMsRUFDOUMsOENBQThDLEVBQzlDLDZDQUE2QyxFQUFFLDZDQUE2QyxFQUM1Rix3Q0FBd0MsRUFDeEMsd0NBQXdDLEVBQ3hDLHVDQUF1QyxFQUN2Qyw0Q0FBNEMsRUFDNUMsNkNBQTZDLEVBQzdDLDZDQUE2QyxFQUM3Qyx1Q0FBdUMsRUFDdkMsNENBQTRDLEVBQzVDLHNDQUFzQyxFQUN0QyxzQ0FBc0MsRUFDdEMscUNBQXFDLEVBQ3JDLDBDQUEwQyxFQUMxQywyQ0FBMkMsRUFDM0MsMkNBQTJDLEVBQzNDLHFDQUFxQyxFQUNyQywwQ0FBMEMsRUFDMUMsZ0NBQWdDLEVBQ2hDLGlDQUFpQyxFQUNqQyxpQ0FBaUMsRUFDakMsZ0NBQWdDLEVBQ2hDLHdCQUF3QixFQUN4QiwrQkFBK0IsRUFDL0IsK0JBQStCLEVBQy9CLHdCQUF3QixFQUN4QiwrQkFBK0IsRUFDL0IsK0JBQStCLEVBQy9CLDZCQUE2QixFQUM3QixvQ0FBb0MsRUFDcEMsb0NBQW9DLEVBQ3BDLHVDQUF1QyxFQUN2Qyx1Q0FBdUMsRUFDdkMsMkJBQTJCLEVBQzNCLGtDQUFrQyxFQUNsQyx5Q0FBeUMsRUFDekMsZ0RBQWdELEVBQ2hELGdEQUFnRCxFQUNoRCxrQ0FBa0MsRUFDbEMs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QUFxRCxDQUFDLEVBQUMsT0FBTyxFQUFFLGNBQWMsRUFBQyxDQUFDLENBQUMsRUFDekgsVUFBVSxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLHFEQUFxRCxDQUFDLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUN0SCxDQUNKLENBQ0YsQ0FDRixDQUFDO0lBRUYsc0NBQXNDLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRO1NBQ3RFLElBQUksQ0FDSCxNQUFNLENBQUMsMkNBQTJDLENBQUMsRUFDbkQsVUFBVSxDQUFDLENBQUMsRUFBQyxPQUFPLEVBRWpCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxnQ0FBZ0MsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixDQUFDO1NBQy9ILElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxXQUF3QixFQUFFLEVBQUUsQ0FBQyw0Q0FBNEMsQ0FBQyxFQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUMsQ0FBQyxDQUFDLEVBQ3ZHLFVBQVUsQ0FBQyxDQUFDLEtBQXdCLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyw0Q0FBNEMsQ0FBQyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDN0csQ0FDSixDQUNGLENBQ0YsQ0FBQzt1R0F2ZFMsY0FBYzsyR0FBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpbmplY3QsIEluamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3Rpb25zLCBjcmVhdGVFZmZlY3QsIG9mVHlwZX0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQge0ludm9pY2VTZXJ2aWNlLCBQYXltZW50QXR0ZW1wdFNlcnZpY2UsIFBheW1lbnRPcmRlclNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7XG4gIGNyZWF0ZUZyaXRpZHNrb3J0ZXRJbnZvaWNlUGF5bWVudEZhaWx1cmVBY3Rpb24sXG4gIGNyZWF0ZUZyaXRpZHNrb3J0ZXRJbnZvaWNlUGF5bWVudFN1Y2Nlc3NBY3Rpb24sXG4gIGNyZWF0ZUZyaXRpZHNrb3J0ZXRNZW1iZXJJbnZvaWNlUGF5bWVudEFjdGlvbiwgY3JlYXRlRnJpdGlkc2tvcnRldFB1YmxpY0ludm9pY2VQYXltZW50QWN0aW9uLFxuICBjcmVhdGVNb25kaWRvSW52b2ljZVBheW1lbnRGYWlsdXJlQWN0aW9uLFxuICBjcmVhdGVNb25kaWRvSW52b2ljZVBheW1lbnRTdWNjZXNzQWN0aW9uLFxuICBjcmVhdGVNb25kaWRvTWVtYmVySW52b2ljZVBheW1lbnRBY3Rpb24sXG4gIGNyZWF0ZU1vbmRpZG9NZW1iZXJQYXltZW50T3JkZXJQYXltZW50QWN0aW9uLFxuICBjcmVhdGVNb25kaWRvUGF5bWVudE9yZGVyUGF5bWVudEZhaWx1cmVBY3Rpb24sXG4gIGNyZWF0ZU1vbmRpZG9QYXltZW50T3JkZXJQYXltZW50U3VjY2Vzc0FjdGlvbixcbiAgY3JlYXRlTW9uZGlkb1B1YmxpY0ludm9pY2VQYXltZW50QWN0aW9uLFxuICBjcmVhdGVNb25kaWRvUHVibGljUGF5bWVudE9yZGVyUGF5bWVudEFjdGlvbixcbiAgY3JlYXRlU3dpc2hJbnZvaWNlUGF5bWVudEZhaWx1cmVBY3Rpb24sXG4gIGNyZWF0ZVN3aXNoSW52b2ljZVBheW1lbnRTdWNjZXNzQWN0aW9uLFxuICBjcmVhdGVTd2lzaE1lbWJlckludm9pY2VQYXltZW50QWN0aW9uLFxuICBjcmVhdGVTd2lzaE1lbWJlclBheW1lbnRPcmRlclBheW1lbnRBY3Rpb24sXG4gIGNyZWF0ZVN3aXNoUGF5bWVudE9yZGVyUGF5bWVudEZhaWx1cmVBY3Rpb24sXG4gIGNyZWF0ZVN3aXNoUGF5bWVudE9yZGVyUGF5bWVudFN1Y2Nlc3NBY3Rpb24sXG4gIGNyZWF0ZVN3aXNoUHVibGljSW52b2ljZVBheW1lbnRBY3Rpb24sXG4gIGNyZWF0ZVN3aXNoUHVibGljUGF5bWVudE9yZGVyUGF5bWVudEFjdGlvbixcbiAgY3JlYXRlWmltcGxlck1lbWJlclBheW1lbnRBY3Rpb24sXG4gIGNyZWF0ZVppbXBsZXJQYXltZW50RmFpbHVyZUFjdGlvbixcbiAgY3JlYXRlWmltcGxlclBheW1lbnRTdWNjZXNzQWN0aW9uLFxuICBjcmVhdGVaaW1wbGVyUHVibGljUGF5bWVudEFjdGlvbixcbiAgZGVsZXRlUGF5bWVudE9yZGVyQWN0aW9uLFxuICBkZWxldGVQYXltZW50T3JkZXJGYWlsdXJlQWN0aW9uLFxuICBkZWxldGVQYXltZW50T3JkZXJTdWNjZXNzQWN0aW9uLFxuICBsaXN0TWVtYmVySW52b2ljZXNBY3Rpb24sXG4gIGxpc3RNZW1iZXJJbnZvaWNlc0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RNZW1iZXJJbnZvaWNlc1N1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RNZW1iZXJQYXltZW50T3JkZXJzQWN0aW9uLFxuICBsaXN0TWVtYmVyUGF5bWVudE9yZGVyc0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RNZW1iZXJQYXltZW50T3JkZXJzU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVJbnZvaWNlU3dpc2hRUkNvZGVGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZUludm9pY2VTd2lzaFFSQ29kZVN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVySW52b2ljZUFjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJJbnZvaWNlRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJJbnZvaWNlUGF5bWVudEF0dGVtcHRBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVySW52b2ljZVBheW1lbnRBdHRlbXB0RmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJJbnZvaWNlUGF5bWVudEF0dGVtcHRTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckludm9pY2VTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckludm9pY2VTd2lzaFFSQ29kZUFjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJQYXltZW50T3JkZXJQYXltZW50QXR0ZW1wdEFjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJQYXltZW50T3JkZXJQYXltZW50QXR0ZW1wdEZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyUGF5bWVudE9yZGVyUGF5bWVudEF0dGVtcHRTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlclBheW1lbnRPcmRlclN3aXNoUVJDb2RlQWN0aW9uLFxuICByZXRyaWV2ZVBheW1lbnRPcmRlckFjdGlvbixcbiAgcmV0cmlldmVQYXltZW50T3JkZXJGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZVBheW1lbnRPcmRlclN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlUGF5bWVudE9yZGVyU3dpc2hRUkNvZGVGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZVBheW1lbnRPcmRlclN3aXNoUVJDb2RlU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVQdWJsaWNJbnZvaWNlQWN0aW9uLFxuICByZXRyaWV2ZVB1YmxpY0ludm9pY2VGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZVB1YmxpY0ludm9pY2VMb2dvQWN0aW9uLFxuICByZXRyaWV2ZVB1YmxpY0ludm9pY2VMb2dvRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVQdWJsaWNJbnZvaWNlTG9nb1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlUHVibGljSW52b2ljZVBheW1lbnRBdHRlbXB0QWN0aW9uLFxuICByZXRyaWV2ZVB1YmxpY0ludm9pY2VQYXltZW50QXR0ZW1wdEZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlUHVibGljSW52b2ljZVBheW1lbnRBdHRlbXB0U3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVQdWJsaWNJbnZvaWNlU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVQdWJsaWNJbnZvaWNlU3dpc2hRUkNvZGVBY3Rpb24sXG4gIHJldHJpZXZlUHVibGljUGF5bWVudE9yZGVyQWN0aW9uLFxuICByZXRyaWV2ZVB1YmxpY1BheW1lbnRPcmRlckZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlUHVibGljUGF5bWVudE9yZGVyTG9nb0FjdGlvbixcbiAgcmV0cmlldmVQdWJsaWNQYXltZW50T3JkZXJMb2dvRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVQdWJsaWNQYXltZW50T3JkZXJMb2dvU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVQdWJsaWNQYXltZW50T3JkZXJQYXltZW50QXR0ZW1wdEFjdGlvbixcbiAgcmV0cmlldmVQdWJsaWNQYXltZW50T3JkZXJQYXltZW50QXR0ZW1wdEZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlUHVibGljUGF5bWVudE9yZGVyUGF5bWVudEF0dGVtcHRTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZVB1YmxpY1BheW1lbnRPcmRlclN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlUHVibGljUGF5bWVudE9yZGVyU3dpc2hRUkNvZGVBY3Rpb25cbn0gZnJvbSAnLi4vYWN0aW9ucyc7XG5pbXBvcnQge2V4aGF1c3RNYXAsIGZvcmtKb2luLCBtZXJnZU1hcCwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtjYXRjaEVycm9yLCBtYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIENsdWJJbWFnZSxcbiAgQ29sbGVjdGlvbixcbiAgTWVtYmVySW52b2ljZSxcbiAgUGF5bWVudEF0dGVtcHQsXG4gIFBheW1lbnRPcmRlcixcbiAgU2VhcmNoTWVtYmVySW52b2ljZSxcbiAgU3dpc2hRckNvZGVcbn0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7SHR0cEVycm9yUmVzcG9uc2V9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGNyZWF0ZUFjdGlvbiB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSW52b2ljZUVmZmVjdHMge1xuICBwcml2YXRlIGFjdGlvbnMkID0gaW5qZWN0KEFjdGlvbnMpO1xuICBwcml2YXRlIGludm9pY2VTZXJ2aWNlID0gaW5qZWN0KEludm9pY2VTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBwYXltZW50T3JkZXJTZXJ2aWNlID0gaW5qZWN0KFBheW1lbnRPcmRlclNlcnZpY2UpO1xuICBwcml2YXRlIHBheW1lbnRBdHRlbXB0U2VydmljZSA9IGluamVjdChQYXltZW50QXR0ZW1wdFNlcnZpY2UpO1xuXG4gIGNyZWF0ZU1lbWJlckludm9pY2VGcml0aWRza29ydGV0UGF5bWVudCQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGNyZWF0ZUZyaXRpZHNrb3J0ZXRNZW1iZXJJbnZvaWNlUGF5bWVudEFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgcGF5bG9hZDogeyBpbnZvaWNlSWQ6IHN0cmluZywgbWVtYmVySWQ6IHN0cmluZywgY2hpbGRQZXJzb25hbElkOiBzdHJpbmcsIGFkdWx0UGVyc29uYWxJZDogc3RyaW5nIH1cbiAgICAgIH0pID0+IHRoaXMucGF5bWVudEF0dGVtcHRTZXJ2aWNlLmNyZWF0ZU1lbWJlckludm9pY2VQYXltZW50QXR0ZW1wdChwYXlsb2FkLm1lbWJlcklkLCBwYXlsb2FkLmludm9pY2VJZCwge1xuICAgICAgICAgIHR5cGU6ICdmcml0aWRza29ydGV0JyxcbiAgICAgICAgICBjaGlsZFBlcnNvbmFsSWQ6IHBheWxvYWQuY2hpbGRQZXJzb25hbElkLFxuICAgICAgICAgIGFkdWx0UGVyc29uYWxJZDogcGF5bG9hZC5hZHVsdFBlcnNvbmFsSWQsXG4gICAgICAgICAgcHVibGljOiBmYWxzZVxuICAgICAgICB9KVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHBheW1lbnRBdHRlbXB0OiBQYXltZW50QXR0ZW1wdCkgPT4gY3JlYXRlRnJpdGlkc2tvcnRldEludm9pY2VQYXltZW50U3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogcGF5bWVudEF0dGVtcHR9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihjcmVhdGVGcml0aWRza29ydGV0SW52b2ljZVBheW1lbnRGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBjcmVhdGVNZW1iZXJJbnZvaWNlTW9uZGlkb1BheW1lbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShjcmVhdGVNb25kaWRvTWVtYmVySW52b2ljZVBheW1lbnRBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyBtZW1iZXJJZDogc3RyaW5nLCBpbnZvaWNlSWQ6IHN0cmluZyB9XG4gICAgICAgIH0pID0+IHRoaXMucGF5bWVudEF0dGVtcHRTZXJ2aWNlLmNyZWF0ZU1lbWJlckludm9pY2VQYXltZW50QXR0ZW1wdChwYXlsb2FkLm1lbWJlcklkLCBwYXlsb2FkLmludm9pY2VJZCwge3R5cGU6ICdtb25kaWRvJ30pXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHBheW1lbnRBdHRlbXB0OiBQYXltZW50QXR0ZW1wdCkgPT4gY3JlYXRlTW9uZGlkb0ludm9pY2VQYXltZW50U3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogcGF5bWVudEF0dGVtcHR9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGNyZWF0ZU1vbmRpZG9JbnZvaWNlUGF5bWVudEZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgY3JlYXRlTWVtYmVySW52b2ljZVN3aXNoUGF5bWVudCQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGNyZWF0ZVN3aXNoTWVtYmVySW52b2ljZVBheW1lbnRBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyBtZW1iZXJJZDogc3RyaW5nLCBpbnZvaWNlSWQ6IHN0cmluZywgdGVsZXBob25lTnVtYmVyOiBzdHJpbmcgfVxuICAgICAgICB9KSA9PiB0aGlzLnBheW1lbnRBdHRlbXB0U2VydmljZS5jcmVhdGVNZW1iZXJJbnZvaWNlUGF5bWVudEF0dGVtcHQocGF5bG9hZC5tZW1iZXJJZCwgcGF5bG9hZC5pbnZvaWNlSWQsIHt0eXBlOiAnc3dpc2gnLCBwaG9uZV9udW1iZXI6IHBheWxvYWQudGVsZXBob25lTnVtYmVyfSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgocGF5bWVudEF0dGVtcHQ6IFBheW1lbnRBdHRlbXB0KSA9PiBjcmVhdGVTd2lzaEludm9pY2VQYXltZW50U3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogcGF5bWVudEF0dGVtcHR9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGNyZWF0ZVN3aXNoSW52b2ljZVBheW1lbnRGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGNyZWF0ZU1lbWJlclBheW1lbnRPcmRlck1vbmRpZG9QYXltZW50JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUoY3JlYXRlTW9uZGlkb01lbWJlclBheW1lbnRPcmRlclBheW1lbnRBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyBtZW1iZXJJZDogc3RyaW5nLCBwYXltZW50T3JkZXJJZDogc3RyaW5nIH1cbiAgICAgICAgfSkgPT4gdGhpcy5wYXltZW50QXR0ZW1wdFNlcnZpY2UuY3JlYXRlTWVtYmVyUGF5bWVudE9yZGVyUGF5bWVudEF0dGVtcHQocGF5bG9hZC5tZW1iZXJJZCwgcGF5bG9hZC5wYXltZW50T3JkZXJJZCwgJ21vbmRpZG8nKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChwYXltZW50QXR0ZW1wdDogUGF5bWVudEF0dGVtcHQpID0+IGNyZWF0ZU1vbmRpZG9QYXltZW50T3JkZXJQYXltZW50U3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogcGF5bWVudEF0dGVtcHR9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGNyZWF0ZU1vbmRpZG9QYXltZW50T3JkZXJQYXltZW50RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBjcmVhdGVNZW1iZXJQYXltZW50T3JkZXJTd2lzaFBheW1lbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShjcmVhdGVTd2lzaE1lbWJlclBheW1lbnRPcmRlclBheW1lbnRBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyBtZW1iZXJJZDogc3RyaW5nLCBwYXltZW50T3JkZXJJZDogc3RyaW5nLCB0ZWxlcGhvbmVOdW1iZXI6IHN0cmluZyB9XG4gICAgICAgIH0pID0+IHRoaXMucGF5bWVudEF0dGVtcHRTZXJ2aWNlLmNyZWF0ZU1lbWJlclBheW1lbnRPcmRlclBheW1lbnRBdHRlbXB0KHBheWxvYWQubWVtYmVySWQsIHBheWxvYWQucGF5bWVudE9yZGVySWQsICdzd2lzaCcsIHBheWxvYWQudGVsZXBob25lTnVtYmVyKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChwYXltZW50QXR0ZW1wdDogUGF5bWVudEF0dGVtcHQpID0+IGNyZWF0ZVN3aXNoUGF5bWVudE9yZGVyUGF5bWVudFN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHBheW1lbnRBdHRlbXB0fSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihjcmVhdGVTd2lzaFBheW1lbnRPcmRlclBheW1lbnRGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGNyZWF0ZU1lbWJlclppbXBsZXJQYXltZW50JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUoY3JlYXRlWmltcGxlck1lbWJlclBheW1lbnRBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyBtZW1iZXJJZDogc3RyaW5nLCBpbnZvaWNlSWQ6IHN0cmluZyB9XG4gICAgICAgIH0pID0+IHRoaXMucGF5bWVudEF0dGVtcHRTZXJ2aWNlLmNyZWF0ZU1lbWJlckludm9pY2VQYXltZW50QXR0ZW1wdChwYXlsb2FkLm1lbWJlcklkLCBwYXlsb2FkLmludm9pY2VJZCwge3R5cGU6ICd6aW1wbGVyJ30pXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHBheW1lbnRBdHRlbXB0OiBQYXltZW50QXR0ZW1wdCkgPT4gY3JlYXRlWmltcGxlclBheW1lbnRTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBwYXltZW50QXR0ZW1wdH0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoY3JlYXRlWmltcGxlclBheW1lbnRGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGNyZWF0ZVB1YmxpY0ludm9pY2VGcml0aWRza29ydFBheW1lbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShjcmVhdGVGcml0aWRza29ydGV0UHVibGljSW52b2ljZVBheW1lbnRBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgIHBheWxvYWQ6IHsgdG9rZW46IHN0cmluZywgaW52b2ljZUlkOiBzdHJpbmcsIGNoaWxkUGVyc29uYWxJZDogc3RyaW5nLCBhZHVsdFBlcnNvbmFsSWQ6IHN0cmluZ31cbiAgICAgIH0pID0+IHRoaXMucGF5bWVudEF0dGVtcHRTZXJ2aWNlLmNyZWF0ZVB1YmxpY0ludm9pY2VQYXltZW50QXR0ZW1wdChwYXlsb2FkLmludm9pY2VJZCwgcGF5bG9hZC50b2tlbiwge1xuICAgICAgICB0eXBlOiAnZnJpdGlkc2tvcnRldCcsXG4gICAgICAgIGFkdWx0UGVyc29uYWxJZDogcGF5bG9hZC5hZHVsdFBlcnNvbmFsSWQsXG4gICAgICAgIGNoaWxkUGVyc29uYWxJZDogcGF5bG9hZC5jaGlsZFBlcnNvbmFsSWQsXG4gICAgICAgIHB1YmxpYzogdHJ1ZVxuICAgICAgfSkucGlwZShcbiAgICAgICAgICBtYXAoKHBheW1lbnRBdHRlbXB0OiBQYXltZW50QXR0ZW1wdCkgPT4gY3JlYXRlRnJpdGlkc2tvcnRldEludm9pY2VQYXltZW50U3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogcGF5bWVudEF0dGVtcHR9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihjcmVhdGVGcml0aWRza29ydGV0SW52b2ljZVBheW1lbnRGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBjcmVhdGVQdWJsaWNJbnZvaWNlTW9uZGlkb1BheW1lbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShjcmVhdGVNb25kaWRvUHVibGljSW52b2ljZVBheW1lbnRBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0b2tlbjogc3RyaW5nLCBpbnZvaWNlSWQ6IHN0cmluZyB9XG4gICAgICAgIH0pID0+IHRoaXMucGF5bWVudEF0dGVtcHRTZXJ2aWNlLmNyZWF0ZVB1YmxpY0ludm9pY2VQYXltZW50QXR0ZW1wdChwYXlsb2FkLmludm9pY2VJZCwgcGF5bG9hZC50b2tlbiwge3R5cGU6ICdtb25kaWRvJ30pXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHBheW1lbnRBdHRlbXB0OiBQYXltZW50QXR0ZW1wdCkgPT4gY3JlYXRlTW9uZGlkb0ludm9pY2VQYXltZW50U3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogcGF5bWVudEF0dGVtcHR9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGNyZWF0ZU1vbmRpZG9JbnZvaWNlUGF5bWVudEZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgY3JlYXRlUHVibGljSW52b2ljZVN3aXNoUGF5bWVudCQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGNyZWF0ZVN3aXNoUHVibGljSW52b2ljZVBheW1lbnRBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0b2tlbjogc3RyaW5nLCBpbnZvaWNlSWQ6IHN0cmluZywgdGVsZXBob25lTnVtYmVyOiBzdHJpbmcgfVxuICAgICAgICB9KSA9PiB0aGlzLnBheW1lbnRBdHRlbXB0U2VydmljZS5jcmVhdGVQdWJsaWNJbnZvaWNlUGF5bWVudEF0dGVtcHQocGF5bG9hZC5pbnZvaWNlSWQsIHBheWxvYWQudG9rZW4sIHtcbiAgICAgICAgICB0eXBlOiAnc3dpc2gnLFxuICAgICAgICAgIHBob25lX251bWJlcjogcGF5bG9hZC50ZWxlcGhvbmVOdW1iZXJcbiAgICAgICAgfSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgocGF5bWVudEF0dGVtcHQ6IFBheW1lbnRBdHRlbXB0KSA9PiBjcmVhdGVTd2lzaEludm9pY2VQYXltZW50U3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogcGF5bWVudEF0dGVtcHR9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGNyZWF0ZVN3aXNoSW52b2ljZVBheW1lbnRGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGNyZWF0ZVB1YmxpY1BheW1lbnRPcmRlck1vbmRpZG9QYXltZW50JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUoY3JlYXRlTW9uZGlkb1B1YmxpY1BheW1lbnRPcmRlclBheW1lbnRBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0b2tlbjogc3RyaW5nLCBwYXltZW50T3JkZXJJZDogc3RyaW5nIH1cbiAgICAgICAgfSkgPT4gdGhpcy5wYXltZW50QXR0ZW1wdFNlcnZpY2UuY3JlYXRlUHVibGljUGF5bWVudE9yZGVyUGF5bWVudEF0dGVtcHQocGF5bG9hZC5wYXltZW50T3JkZXJJZCwgcGF5bG9hZC50b2tlbiwgJ21vbmRpZG8nKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChwYXltZW50QXR0ZW1wdDogUGF5bWVudEF0dGVtcHQpID0+IGNyZWF0ZU1vbmRpZG9QYXltZW50T3JkZXJQYXltZW50U3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogcGF5bWVudEF0dGVtcHR9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGNyZWF0ZU1vbmRpZG9QYXltZW50T3JkZXJQYXltZW50RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBjcmVhdGVQdWJsaWNQYXltZW50T3JkZXJTd2lzaFBheW1lbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShjcmVhdGVTd2lzaFB1YmxpY1BheW1lbnRPcmRlclBheW1lbnRBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0b2tlbjogc3RyaW5nLCBwYXltZW50T3JkZXJJZDogc3RyaW5nLCB0ZWxlcGhvbmVOdW1iZXI6IHN0cmluZyB9XG4gICAgICAgIH0pID0+IHRoaXMucGF5bWVudEF0dGVtcHRTZXJ2aWNlLmNyZWF0ZVB1YmxpY1BheW1lbnRPcmRlclBheW1lbnRBdHRlbXB0KHBheWxvYWQucGF5bWVudE9yZGVySWQsIHBheWxvYWQudG9rZW4sICdzd2lzaCcsIHBheWxvYWQudGVsZXBob25lTnVtYmVyKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChwYXltZW50QXR0ZW1wdDogUGF5bWVudEF0dGVtcHQpID0+IGNyZWF0ZVN3aXNoUGF5bWVudE9yZGVyUGF5bWVudFN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHBheW1lbnRBdHRlbXB0fSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihjcmVhdGVTd2lzaFBheW1lbnRPcmRlclBheW1lbnRGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGNyZWF0ZVB1YmxpY1ppbXBsZXJQYXltZW50JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUoY3JlYXRlWmltcGxlclB1YmxpY1BheW1lbnRBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0b2tlbjogc3RyaW5nLCBpbnZvaWNlSWQ6IHN0cmluZyB9XG4gICAgICAgIH0pID0+IHRoaXMucGF5bWVudEF0dGVtcHRTZXJ2aWNlLmNyZWF0ZVB1YmxpY0ludm9pY2VQYXltZW50QXR0ZW1wdChwYXlsb2FkLmludm9pY2VJZCwgcGF5bG9hZC50b2tlbiwge3R5cGU6ICd6aW1wbGVyJ30pXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHBheW1lbnRBdHRlbXB0OiBQYXltZW50QXR0ZW1wdCkgPT4gY3JlYXRlWmltcGxlclBheW1lbnRTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBwYXltZW50QXR0ZW1wdH0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoY3JlYXRlWmltcGxlclBheW1lbnRGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGxpc3RNZW1iZXJJbnZvaWNlcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGxpc3RNZW1iZXJJbnZvaWNlc0FjdGlvbiksXG4gICAgICBtZXJnZU1hcCgoe3BheWxvYWR9OiB7IHBheWxvYWQ6IEFycmF5PHN0cmluZz4gfSkgPT5cbiAgICAgICAgZm9ya0pvaW4oXG4gICAgICAgICAgcGF5bG9hZC5tYXAoKGlkOiBzdHJpbmcpID0+XG4gICAgICAgICAgICB0aGlzLmludm9pY2VTZXJ2aWNlLmdldE1lbWJlckludm9pY2VzKGlkKVxuICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKGludm9pY2VzOiBDb2xsZWN0aW9uPFNlYXJjaE1lbWJlckludm9pY2U+KSA9PiAoe2lkLCBpbnZvaWNlczogaW52b2ljZXMudG9BcnJheSgpfSkpLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2Yoe2lkLCBlcnJvcn0pKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAoKHJlc3VsdHM6IEFycmF5PHtcbiAgICAgICAgICAgIGlkOiBzdHJpbmcsXG4gICAgICAgICAgICBpbnZvaWNlcz86IEFycmF5PFNlYXJjaE1lbWJlckludm9pY2U+LFxuICAgICAgICAgICAgZXJyb3I/OiBIdHRwRXJyb3JSZXNwb25zZVxuICAgICAgICAgIH0+KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbnZvaWNlTWFwID0gbmV3IE1hcDxzdHJpbmcsIEFycmF5PFNlYXJjaE1lbWJlckludm9pY2U+PigpO1xuICAgICAgICAgICAgY29uc3QgZXJyb3JzID0gcmVzdWx0cy5maWx0ZXIocmVzdWx0ID0+IHJlc3VsdC5lcnJvcik7XG4gICAgICAgICAgICBpZiAoZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICAgICAgICByZXR1cm4gb2YobGlzdE1lbWJlckludm9pY2VzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3JzWzBdLmVycm9yIGFzIEh0dHBFcnJvclJlc3BvbnNlfSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXN1bHRzLmZvckVhY2goKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICBpZiAocmVzdWx0Lmludm9pY2VzKSB7XG4gICAgICAgICAgICAgICAgaW52b2ljZU1hcC5zZXQocmVzdWx0LmlkLCByZXN1bHQuaW52b2ljZXMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIG9mKGxpc3RNZW1iZXJJbnZvaWNlc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGludm9pY2VNYXB9KSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZU1lbWJlckludm9pY2UkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZU1lbWJlckludm9pY2VBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyBtZW1iZXJJZDogc3RyaW5nLCBpbnZvaWNlSWQ6IHN0cmluZyB9XG4gICAgICAgIH0pID0+IHRoaXMuaW52b2ljZVNlcnZpY2UuZ2V0TWVtYmVySW52b2ljZShwYXlsb2FkLm1lbWJlcklkLCBwYXlsb2FkLmludm9pY2VJZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoaW52b2ljZTogTWVtYmVySW52b2ljZSkgPT4gcmV0cmlldmVNZW1iZXJJbnZvaWNlU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogaW52b2ljZX0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVNZW1iZXJJbnZvaWNlRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsaXN0TWVtYmVyUGF5bWVudE9yZGVycyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGxpc3RNZW1iZXJQYXltZW50T3JkZXJzQWN0aW9uKSxcbiAgICAgIG1lcmdlTWFwKCh7cGF5bG9hZH06IHsgcGF5bG9hZDogQXJyYXk8c3RyaW5nPiB9KSA9PlxuICAgICAgICBmb3JrSm9pbihcbiAgICAgICAgICBwYXlsb2FkLm1hcCgoaWQ6IHN0cmluZykgPT5cbiAgICAgICAgICAgIHRoaXMucGF5bWVudE9yZGVyU2VydmljZS5nZXRNZW1iZXJQYXltZW50T3JkZXJzKGlkKVxuICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHBheW1lbnRPcmRlcnM6IENvbGxlY3Rpb248UGF5bWVudE9yZGVyPikgPT4gKHtpZCwgcGF5bWVudE9yZGVyczogcGF5bWVudE9yZGVycy50b0FycmF5KCl9KSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZih7aWQsIGVycm9yfSkpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgICkucGlwZShcbiAgICAgICAgICBtZXJnZU1hcCgocmVzdWx0czogQXJyYXk8eyBpZDogc3RyaW5nLCBwYXltZW50T3JkZXJzPzogQXJyYXk8UGF5bWVudE9yZGVyPiwgZXJyb3I/OiBIdHRwRXJyb3JSZXNwb25zZSB9PikgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGF5bWVudE9yZGVyTWFwID0gbmV3IE1hcDxzdHJpbmcsIEFycmF5PFBheW1lbnRPcmRlcj4+KCk7XG4gICAgICAgICAgICBjb25zdCBlcnJvcnMgPSByZXN1bHRzLmZpbHRlcihyZXN1bHQgPT4gcmVzdWx0LmVycm9yKTtcbiAgICAgICAgICAgIGlmIChlcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHJldHVybiBvZihsaXN0TWVtYmVyUGF5bWVudE9yZGVyc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yc1swXS5lcnJvciBhcyBIdHRwRXJyb3JSZXNwb25zZX0pKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzdWx0cy5mb3JFYWNoKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHJlc3VsdC5wYXltZW50T3JkZXJzKSB7XG4gICAgICAgICAgICAgICAgcGF5bWVudE9yZGVyTWFwLnNldChyZXN1bHQuaWQsIHJlc3VsdC5wYXltZW50T3JkZXJzKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBvZihsaXN0TWVtYmVyUGF5bWVudE9yZGVyc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHBheW1lbnRPcmRlck1hcH0pKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlUGF5bWVudE9yZGVyJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVQYXltZW50T3JkZXJBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyBtZW1iZXJJZDogc3RyaW5nLCBwYXltZW50T3JkZXJJZDogc3RyaW5nIH1cbiAgICAgICAgfSkgPT4gdGhpcy5wYXltZW50T3JkZXJTZXJ2aWNlLmdldE1lbWJlclBheW1lbnRPcmRlcihwYXlsb2FkLm1lbWJlcklkLCBwYXlsb2FkLnBheW1lbnRPcmRlcklkKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChwYXltZW50T3JkZXI6IFBheW1lbnRPcmRlcikgPT4gcmV0cmlldmVQYXltZW50T3JkZXJTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBwYXltZW50T3JkZXJ9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlUGF5bWVudE9yZGVyRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBkZWxldGVQYXltZW50T3JkZXIkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShkZWxldGVQYXltZW50T3JkZXJBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyBtZW1iZXJJZDogc3RyaW5nLCBwYXltZW50T3JkZXJJZDogc3RyaW5nIH1cbiAgICAgICAgfSkgPT4gdGhpcy5wYXltZW50T3JkZXJTZXJ2aWNlLmRlbGV0ZU1lbWJlclBheW1lbnRPcmRlcihwYXlsb2FkLm1lbWJlcklkLCBwYXlsb2FkLnBheW1lbnRPcmRlcklkKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKCh2YWx1ZTogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVsZXRlUGF5bWVudE9yZGVyU3VjY2Vzc0FjdGlvbigpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBkZWxldGVQYXltZW50T3JkZXJGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBuZXcgSHR0cEVycm9yUmVzcG9uc2Uoe3N0YXR1czogNDAwfSl9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGRlbGV0ZVBheW1lbnRPcmRlckZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVNZW1iZXJJbnZvaWNlUGF5bWVudEF0dGVtcHQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZU1lbWJlckludm9pY2VQYXltZW50QXR0ZW1wdEFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IG1lbWJlcklkOiBzdHJpbmcsIGludm9pY2VJZDogc3RyaW5nLCBwYXltZW50QXR0ZW1wdElkOiBudW1iZXIgfVxuICAgICAgICB9KSA9PiB0aGlzLnBheW1lbnRBdHRlbXB0U2VydmljZS5nZXRNZW1iZXJJbnZvaWNlUGF5bWVudEF0dGVtcHQocGF5bG9hZC5tZW1iZXJJZCwgcGF5bG9hZC5pbnZvaWNlSWQsIHBheWxvYWQucGF5bWVudEF0dGVtcHRJZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgocGF5bWVudEF0dGVtcHQ6IFBheW1lbnRBdHRlbXB0KSA9PiByZXRyaWV2ZU1lbWJlckludm9pY2VQYXltZW50QXR0ZW1wdFN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHBheW1lbnRBdHRlbXB0fSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZU1lbWJlckludm9pY2VQYXltZW50QXR0ZW1wdEZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVNZW1iZXJJbnZvaWNlU3dpc2hRUkNvZGUkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZU1lbWJlckludm9pY2VTd2lzaFFSQ29kZUFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IG1lbWJlcklkOiBzdHJpbmcsIGludm9pY2VJZDogc3RyaW5nLCBwYXltZW50QXR0ZW1wdElkOiBudW1iZXIgfVxuICAgICAgICB9KSA9PiB0aGlzLnBheW1lbnRBdHRlbXB0U2VydmljZS5nZXRNZW1iZXJJbnZvaWNlU3dpc2hRUkNvZGUocGF5bG9hZC5tZW1iZXJJZCwgcGF5bG9hZC5pbnZvaWNlSWQsIHBheWxvYWQucGF5bWVudEF0dGVtcHRJZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoc3dpc2hRUkNvZGU6IFN3aXNoUXJDb2RlKSA9PiByZXRyaWV2ZUludm9pY2VTd2lzaFFSQ29kZVN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHN3aXNoUVJDb2RlfSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZUludm9pY2VTd2lzaFFSQ29kZUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVNZW1iZXJQYXltZW50T3JkZXJTd2lzaFFSQ29kZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlTWVtYmVyUGF5bWVudE9yZGVyU3dpc2hRUkNvZGVBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyBtZW1iZXJJZDogc3RyaW5nLCBwYXltZW50T3JkZXJJZDogc3RyaW5nLCBwYXltZW50QXR0ZW1wdElkOiBudW1iZXIgfVxuICAgICAgICB9KSA9PiB0aGlzLnBheW1lbnRBdHRlbXB0U2VydmljZS5nZXRNZW1iZXJQYXltZW50T3JkZXJTd2lzaFFSQ29kZShwYXlsb2FkLm1lbWJlcklkLCBwYXlsb2FkLnBheW1lbnRPcmRlcklkLCBwYXlsb2FkLnBheW1lbnRBdHRlbXB0SWQpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHN3aXNoUVJDb2RlOiBTd2lzaFFyQ29kZSkgPT4gcmV0cmlldmVQYXltZW50T3JkZXJTd2lzaFFSQ29kZVN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHN3aXNoUVJDb2RlfSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZVBheW1lbnRPcmRlclN3aXNoUVJDb2RlRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZVB1YmxpY0ludm9pY2UkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZVB1YmxpY0ludm9pY2VBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0b2tlbjogc3RyaW5nLCBpbnZvaWNlSWQ6IHN0cmluZyB9XG4gICAgICAgIH0pID0+IHRoaXMuaW52b2ljZVNlcnZpY2UuZ2V0UHVibGljSW52b2ljZShwYXlsb2FkLmludm9pY2VJZCwgcGF5bG9hZC50b2tlbilcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoaW52b2ljZTogTWVtYmVySW52b2ljZSkgPT4gcmV0cmlldmVQdWJsaWNJbnZvaWNlU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogaW52b2ljZX0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVQdWJsaWNJbnZvaWNlRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZVB1YmxpY0ludm9pY2VMb2dvJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVQdWJsaWNJbnZvaWNlTG9nb0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IHRva2VuOiBzdHJpbmcsIGludm9pY2VJZDogc3RyaW5nIH1cbiAgICAgICAgfSkgPT4gdGhpcy5pbnZvaWNlU2VydmljZS5nZXRQdWJsaWNJbnZvaWNlTG9nbyhwYXlsb2FkLmludm9pY2VJZCwgcGF5bG9hZC50b2tlbilcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoaW1hZ2U6IENsdWJJbWFnZSkgPT4gcmV0cmlldmVQdWJsaWNJbnZvaWNlTG9nb1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGltYWdlfSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZVB1YmxpY0ludm9pY2VMb2dvRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZVB1YmxpY0ludm9pY2VQYXltZW50QXR0ZW1wdCQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlUHVibGljSW52b2ljZVBheW1lbnRBdHRlbXB0QWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge1xuICAgICAgICAgIHBheWxvYWQ6IHsgdG9rZW46IHN0cmluZywgaW52b2ljZUlkOiBzdHJpbmcsIHBheW1lbnRBdHRlbXB0SWQ6IG51bWJlciB9XG4gICAgICAgIH0pID0+IHRoaXMucGF5bWVudEF0dGVtcHRTZXJ2aWNlLmdldFB1YmxpY0ludm9pY2VQYXltZW50QXR0ZW1wdChwYXlsb2FkLmludm9pY2VJZCwgcGF5bG9hZC50b2tlbiwgcGF5bG9hZC5wYXltZW50QXR0ZW1wdElkKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChwYXltZW50QXR0ZW1wdDogUGF5bWVudEF0dGVtcHQpID0+IHJldHJpZXZlUHVibGljSW52b2ljZVBheW1lbnRBdHRlbXB0U3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogcGF5bWVudEF0dGVtcHR9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlUHVibGljSW52b2ljZVBheW1lbnRBdHRlbXB0RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZVB1YmxpY0ludm9pY2VTd2lzaFFSQ29kZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlUHVibGljSW52b2ljZVN3aXNoUVJDb2RlQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge1xuICAgICAgICAgIHBheWxvYWQ6IHsgdG9rZW46IHN0cmluZywgaW52b2ljZUlkOiBzdHJpbmcsIHBheW1lbnRBdHRlbXB0SWQ6IG51bWJlciB9XG4gICAgICAgIH0pID0+IHRoaXMucGF5bWVudEF0dGVtcHRTZXJ2aWNlLmdldFB1YmxpY0ludm9pY2VTd2lzaFFSQ29kZShwYXlsb2FkLmludm9pY2VJZCwgcGF5bG9hZC50b2tlbiwgcGF5bG9hZC5wYXltZW50QXR0ZW1wdElkKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChzd2lzaFFSQ29kZTogU3dpc2hRckNvZGUpID0+IHJldHJpZXZlSW52b2ljZVN3aXNoUVJDb2RlU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogc3dpc2hRUkNvZGV9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlSW52b2ljZVN3aXNoUVJDb2RlRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuXG4gIHJldHJpZXZlTWVtYmVyUGF5bWVudE9yZGVyUGF5bWVudEF0dGVtcHQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZU1lbWJlclBheW1lbnRPcmRlclBheW1lbnRBdHRlbXB0QWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge1xuICAgICAgICAgIHBheWxvYWQ6IHsgbWVtYmVySWQ6IHN0cmluZywgcGF5bWVudE9yZGVySWQ6IHN0cmluZywgcGF5bWVudEF0dGVtcHRJZDogbnVtYmVyIH1cbiAgICAgICAgfSkgPT4gdGhpcy5wYXltZW50QXR0ZW1wdFNlcnZpY2UuZ2V0TWVtYmVyUGF5bWVudE9yZGVyUGF5bWVudEF0dGVtcHQocGF5bG9hZC5tZW1iZXJJZCwgcGF5bG9hZC5wYXltZW50T3JkZXJJZCwgcGF5bG9hZC5wYXltZW50QXR0ZW1wdElkKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChwYXltZW50QXR0ZW1wdDogUGF5bWVudEF0dGVtcHQpID0+IHJldHJpZXZlTWVtYmVyUGF5bWVudE9yZGVyUGF5bWVudEF0dGVtcHRTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBwYXltZW50QXR0ZW1wdH0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVNZW1iZXJQYXltZW50T3JkZXJQYXltZW50QXR0ZW1wdEZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVQdWJsaWNQYXltZW50T3JkZXIkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZVB1YmxpY1BheW1lbnRPcmRlckFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IHRva2VuOiBzdHJpbmcsIHBheW1lbnRPcmRlcklkOiBzdHJpbmcgfVxuICAgICAgICB9KSA9PiB0aGlzLnBheW1lbnRPcmRlclNlcnZpY2UuZ2V0UHVibGljUGF5bWVudE9yZGVyKHBheWxvYWQucGF5bWVudE9yZGVySWQsIHBheWxvYWQudG9rZW4pXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHBheW1lbnRPcmRlcjogUGF5bWVudE9yZGVyKSA9PiByZXRyaWV2ZVB1YmxpY1BheW1lbnRPcmRlclN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHBheW1lbnRPcmRlcn0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVQdWJsaWNQYXltZW50T3JkZXJGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlUHVibGljUGF5bWVudE9yZGVyTG9nbyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlUHVibGljUGF5bWVudE9yZGVyTG9nb0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IHRva2VuOiBzdHJpbmcsIHBheW1lbnRPcmRlcklkOiBzdHJpbmcgfVxuICAgICAgICB9KSA9PiB0aGlzLnBheW1lbnRPcmRlclNlcnZpY2UuZ2V0UHVibGljUGF5bWVudE9yZGVyTG9nbyhwYXlsb2FkLnBheW1lbnRPcmRlcklkLCBwYXlsb2FkLnRva2VuKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChpbWFnZTogQ2x1YkltYWdlKSA9PiByZXRyaWV2ZVB1YmxpY1BheW1lbnRPcmRlckxvZ29TdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBpbWFnZX0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVQdWJsaWNQYXltZW50T3JkZXJMb2dvRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZVB1YmxpY1BheW1lbnRPcmRlclBheW1lbnRBdHRlbXB0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVQdWJsaWNQYXltZW50T3JkZXJQYXltZW50QXR0ZW1wdEFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IHRva2VuOiBzdHJpbmcsIHBheW1lbnRPcmRlcklkOiBzdHJpbmcsIHBheW1lbnRBdHRlbXB0SWQ6IG51bWJlciB9XG4gICAgICAgIH0pID0+IHRoaXMucGF5bWVudEF0dGVtcHRTZXJ2aWNlLmdldFB1YmxpY1BheW1lbnRPcmRlclBheW1lbnRBdHRlbXB0KHBheWxvYWQucGF5bWVudE9yZGVySWQsIHBheWxvYWQudG9rZW4sIHBheWxvYWQucGF5bWVudEF0dGVtcHRJZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgocGF5bWVudEF0dGVtcHQ6IFBheW1lbnRBdHRlbXB0KSA9PiByZXRyaWV2ZVB1YmxpY1BheW1lbnRPcmRlclBheW1lbnRBdHRlbXB0U3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogcGF5bWVudEF0dGVtcHR9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlUHVibGljUGF5bWVudE9yZGVyUGF5bWVudEF0dGVtcHRGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlUHVibGljUGF5bWVudE9yZGVyU3dpc2hRUkNvZGUkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZVB1YmxpY1BheW1lbnRPcmRlclN3aXNoUVJDb2RlQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge1xuICAgICAgICAgIHBheWxvYWQ6IHsgdG9rZW46IHN0cmluZywgcGF5bWVudE9yZGVySWQ6IHN0cmluZywgcGF5bWVudEF0dGVtcHRJZDogbnVtYmVyIH1cbiAgICAgICAgfSkgPT4gdGhpcy5wYXltZW50QXR0ZW1wdFNlcnZpY2UuZ2V0UHVibGljUGF5bWVudE9yZGVyU3dpc2hRUkNvZGUocGF5bG9hZC5wYXltZW50T3JkZXJJZCwgcGF5bG9hZC50b2tlbiwgcGF5bG9hZC5wYXltZW50QXR0ZW1wdElkKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChzd2lzaFFSQ29kZTogU3dpc2hRckNvZGUpID0+IHJldHJpZXZlUGF5bWVudE9yZGVyU3dpc2hRUkNvZGVTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBzd2lzaFFSQ29kZX0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVQYXltZW50T3JkZXJTd2lzaFFSQ29kZUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC1hdHRlbXB0LXR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhLWFjY2Vzcy9zcmMvbGliL3R5cGVzL3BheW1lbnQtYXR0ZW1wdC10eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBQYXltZW50QXR0ZW1wdFR5cGUgPSAnemltcGxlcicgfCAnbW9uZGlkbycgfCAnc3dpc2gnO1xuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC1hdHRlbXB0LXR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhLWFjY2Vzcy9zcmMvbGliL3R5cGVzL3BheW1lbnQtYXR0ZW1wdC10eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBQYXltZW50QXR0ZW1wdFR5cGUgPSAnemltcGxlcicgfCAnbW9uZGlkbycgfCAnc3dpc2gnIHwgJ2ZyaXRpZHNrb3J0ZXQnO1xuIl19