tango-app-ui-manage-settings 3.0.13-dev → 3.0.14-dev
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/components/activity-logs/activity-logs.component.mjs +3 -3
- package/esm2022/lib/components/brand-details/billing-details/billing-details.component.mjs +10 -9
- package/esm2022/lib/components/brand-details/brand-info/brand-info.component.mjs +10 -7
- package/esm2022/lib/components/brand-details/signatory-details/signatory-details.component.mjs +10 -9
- package/esm2022/lib/components/configurations/audit-configuration/audit-configuration.component.mjs +11 -8
- package/esm2022/lib/components/configurations/configurations.component.mjs +17 -13
- package/esm2022/lib/components/configurations/domain-details/domain-details.component.mjs +10 -9
- package/esm2022/lib/components/configurations/feature-configuration/feature-configuration.component.mjs +10 -9
- package/esm2022/lib/components/configurations/report-configuration/report-configuration.component.mjs +10 -7
- package/esm2022/lib/components/configurations/ticket-configuration/ticket-configuration.component.mjs +10 -9
- package/esm2022/lib/components/configurations/user-configuration/user-configuration.component.mjs +11 -8
- package/esm2022/lib/components/contact-directory/contact-directory.component.mjs +17 -10
- package/esm2022/lib/components/documents/documents.component.mjs +10 -7
- package/esm2022/lib/components/payments-subscription/payments-subscription.component.mjs +53 -10
- package/esm2022/lib/components/payments-subscription/subscription-popups/credit-note/credit-note.component.mjs +3 -3
- package/esm2022/lib/components/payments-subscription/subscription-popups/multidropdown/multidropdown.component.mjs +4 -3
- package/esm2022/lib/components/payments-subscription/subscription-popups/need-help/need-help.component.mjs +1 -2
- package/esm2022/lib/components/payments-subscription/subscription-popups/pricing-revised/pricing-revised.component.mjs +1 -2
- package/esm2022/lib/components/payments-subscription/subscription-popups/product-confirmation/product-confirmation.component.mjs +36 -33
- package/esm2022/lib/components/payments-subscription/subscription-popups/subscription-approval/subscription-approval.component.mjs +1 -2
- package/esm2022/lib/components/payments-subscription/subscription-popups/trail-settings/trail-settings.component.mjs +1 -2
- package/esm2022/lib/components/payments-subscription/subscription-popups/update/update.component.mjs +3 -3
- package/esm2022/lib/components/payments-subscription/subscription-popups/upgrade-plan/upgrade-plan.component.mjs +1 -2
- package/esm2022/lib/components/tango-manage-settings/tango-manage-settings.component.mjs +8 -6
- package/esm2022/lib/guards/activity-log.guard.mjs +33 -0
- package/esm2022/lib/guards/brand-detail.guard.mjs +33 -0
- package/esm2022/lib/guards/configuration.guard.mjs +33 -0
- package/esm2022/lib/guards/contact-directory.guard.mjs +33 -0
- package/esm2022/lib/guards/documents.guard.mjs +33 -0
- package/esm2022/lib/guards/payment-subscriptions.guard.mjs +33 -0
- package/esm2022/lib/tango-manage-settings-routing.module.mjs +24 -7
- package/fesm2022/tango-app-ui-manage-settings.mjs +439 -191
- package/fesm2022/tango-app-ui-manage-settings.mjs.map +1 -1
- package/lib/components/brand-details/billing-details/billing-details.component.d.ts +4 -3
- package/lib/components/brand-details/brand-info/brand-info.component.d.ts +3 -1
- package/lib/components/brand-details/signatory-details/signatory-details.component.d.ts +4 -3
- package/lib/components/configurations/audit-configuration/audit-configuration.component.d.ts +3 -1
- package/lib/components/configurations/configurations.component.d.ts +3 -1
- package/lib/components/configurations/domain-details/domain-details.component.d.ts +4 -3
- package/lib/components/configurations/feature-configuration/feature-configuration.component.d.ts +4 -3
- package/lib/components/configurations/report-configuration/report-configuration.component.d.ts +3 -1
- package/lib/components/configurations/ticket-configuration/ticket-configuration.component.d.ts +4 -3
- package/lib/components/configurations/user-configuration/user-configuration.component.d.ts +3 -1
- package/lib/components/contact-directory/contact-directory.component.d.ts +5 -1
- package/lib/components/documents/documents.component.d.ts +3 -1
- package/lib/components/payments-subscription/payments-subscription.component.d.ts +5 -3
- package/lib/components/payments-subscription/subscription-popups/product-confirmation/product-confirmation.component.d.ts +2 -2
- package/lib/components/tango-manage-settings/tango-manage-settings.component.d.ts +3 -2
- package/lib/guards/activity-log.guard.d.ts +2 -0
- package/lib/guards/brand-detail.guard.d.ts +2 -0
- package/lib/guards/configuration.guard.d.ts +2 -0
- package/lib/guards/contact-directory.guard.d.ts +2 -0
- package/lib/guards/documents.guard.d.ts +2 -0
- package/lib/guards/payment-subscriptions.guard.d.ts +2 -0
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, inject } from '@angular/core';
|
|
1
|
+
import { Component, inject, HostListener } from '@angular/core';
|
|
2
2
|
import { UpdateComponent } from './subscription-popups/update/update.component';
|
|
3
3
|
import { NeedHelpComponent } from './subscription-popups/need-help/need-help.component';
|
|
4
4
|
import { UpgradePlanComponent } from './subscription-popups/upgrade-plan/upgrade-plan.component';
|
|
@@ -29,6 +29,7 @@ export class PaymentsSubscriptionComponent {
|
|
|
29
29
|
changeDetector;
|
|
30
30
|
toast;
|
|
31
31
|
gs;
|
|
32
|
+
elementRef;
|
|
32
33
|
clientinfo;
|
|
33
34
|
list;
|
|
34
35
|
select = 'before15';
|
|
@@ -118,13 +119,14 @@ export class PaymentsSubscriptionComponent {
|
|
|
118
119
|
priceNoData = true;
|
|
119
120
|
priceLoading = false;
|
|
120
121
|
destroy$ = new Subject();
|
|
121
|
-
constructor(modalService, fb, PaymentSubscriptionService, changeDetector, toast, gs) {
|
|
122
|
+
constructor(modalService, fb, PaymentSubscriptionService, changeDetector, toast, gs, elementRef) {
|
|
122
123
|
this.modalService = modalService;
|
|
123
124
|
this.fb = fb;
|
|
124
125
|
this.PaymentSubscriptionService = PaymentSubscriptionService;
|
|
125
126
|
this.changeDetector = changeDetector;
|
|
126
127
|
this.toast = toast;
|
|
127
128
|
this.gs = gs;
|
|
129
|
+
this.elementRef = elementRef;
|
|
128
130
|
this.PaymentSubscriptionService.paymentinvoiceFormData.pipe(takeUntil(this.destroy$)).subscribe((res) => {
|
|
129
131
|
if (res) {
|
|
130
132
|
if (res.type === 'input' && res.form === 'payment-invoice') {
|
|
@@ -394,6 +396,7 @@ export class PaymentsSubscriptionComponent {
|
|
|
394
396
|
}
|
|
395
397
|
pricingType(event, pricing) {
|
|
396
398
|
this.select = pricing;
|
|
399
|
+
this.radiooptions = pricing;
|
|
397
400
|
}
|
|
398
401
|
onKeyDown(event) {
|
|
399
402
|
this.$generateinvoiceInterrupt.next(event.code);
|
|
@@ -418,18 +421,30 @@ export class PaymentsSubscriptionComponent {
|
|
|
418
421
|
openDropdown(event) {
|
|
419
422
|
event.stopPropagation();
|
|
420
423
|
this.dropDown = !this.dropDown;
|
|
424
|
+
this.paymenttypedropDown = false;
|
|
425
|
+
this.currencydropDown = false;
|
|
426
|
+
this.invoicedropDown = false;
|
|
421
427
|
}
|
|
422
428
|
invoiceDropdown(event) {
|
|
423
429
|
event.stopPropagation();
|
|
430
|
+
this.paymenttypedropDown = false;
|
|
431
|
+
this.currencydropDown = false;
|
|
432
|
+
this.dropDown = false;
|
|
424
433
|
this.invoicedropDown = !this.invoicedropDown;
|
|
425
434
|
}
|
|
426
435
|
paymenttypeDropdown(event) {
|
|
427
436
|
event.stopPropagation();
|
|
437
|
+
this.invoicedropDown = false;
|
|
438
|
+
this.currencydropDown = false;
|
|
439
|
+
this.dropDown = false;
|
|
428
440
|
this.paymenttypedropDown = !this.paymenttypedropDown;
|
|
429
441
|
}
|
|
430
442
|
currencyDropdown(event) {
|
|
431
443
|
event.stopPropagation();
|
|
432
444
|
this.currencydropDown = !this.currencydropDown;
|
|
445
|
+
this.paymenttypedropDown = false;
|
|
446
|
+
this.invoicedropDown = false;
|
|
447
|
+
this.dropDown = false;
|
|
433
448
|
}
|
|
434
449
|
viewplanDropdown(event) {
|
|
435
450
|
event.stopPropagation();
|
|
@@ -437,6 +452,9 @@ export class PaymentsSubscriptionComponent {
|
|
|
437
452
|
}
|
|
438
453
|
producttrailDropdown(event, index) {
|
|
439
454
|
event.stopPropagation();
|
|
455
|
+
this.notificationDetails.notificationList.forEach((item) => {
|
|
456
|
+
item.producttraildropDown = false;
|
|
457
|
+
});
|
|
440
458
|
this.notificationDetails.notificationList[index].producttraildropDown = !this.notificationDetails.notificationList[index].producttraildropDown;
|
|
441
459
|
}
|
|
442
460
|
skiptrail() {
|
|
@@ -600,7 +618,7 @@ export class PaymentsSubscriptionComponent {
|
|
|
600
618
|
this.priceNoData = true;
|
|
601
619
|
}
|
|
602
620
|
}, (error) => {
|
|
603
|
-
console.log(error);
|
|
621
|
+
// console.log(error);
|
|
604
622
|
this.priceLoading = false;
|
|
605
623
|
this.priceNoData = true;
|
|
606
624
|
});
|
|
@@ -668,6 +686,8 @@ export class PaymentsSubscriptionComponent {
|
|
|
668
686
|
}
|
|
669
687
|
onpaymentCancel() {
|
|
670
688
|
this.PaymentSubscriptionService.paymentinvoiceFormData.next({ value: null, type: 'cancel', form: 'payment-invoice' });
|
|
689
|
+
this.paymentinvoiceshow = true;
|
|
690
|
+
this.getpaymentinvoice(this.clientId);
|
|
671
691
|
this.paymentinvoiceform.disable();
|
|
672
692
|
}
|
|
673
693
|
onpaymentedit() {
|
|
@@ -752,7 +772,6 @@ export class PaymentsSubscriptionComponent {
|
|
|
752
772
|
this.loading = false;
|
|
753
773
|
}
|
|
754
774
|
}, (error) => {
|
|
755
|
-
console.log(error);
|
|
756
775
|
this.loading = false;
|
|
757
776
|
this.noData = true;
|
|
758
777
|
});
|
|
@@ -760,6 +779,7 @@ export class PaymentsSubscriptionComponent {
|
|
|
760
779
|
getStoreList() {
|
|
761
780
|
this.loading = true;
|
|
762
781
|
this.PaymentSubscriptionService.getStoreList(this.dynamicData).pipe(takeUntil(this.destroy$)).subscribe((res) => {
|
|
782
|
+
console.log(res);
|
|
763
783
|
if (res && res.code == 200) {
|
|
764
784
|
this.loading = false;
|
|
765
785
|
this.noData = false;
|
|
@@ -768,6 +788,7 @@ export class PaymentsSubscriptionComponent {
|
|
|
768
788
|
item.checked = this.selectAll;
|
|
769
789
|
});
|
|
770
790
|
this.totalCount = res.data.count;
|
|
791
|
+
console.log(this.storeList);
|
|
771
792
|
this.changeDetector.detectChanges();
|
|
772
793
|
}
|
|
773
794
|
else {
|
|
@@ -775,7 +796,6 @@ export class PaymentsSubscriptionComponent {
|
|
|
775
796
|
this.loading = false;
|
|
776
797
|
}
|
|
777
798
|
}, (error) => {
|
|
778
|
-
console.log(error);
|
|
779
799
|
this.loading = false;
|
|
780
800
|
this.noData = true;
|
|
781
801
|
});
|
|
@@ -895,6 +915,7 @@ export class PaymentsSubscriptionComponent {
|
|
|
895
915
|
this.PaymentSubscriptionService.getNotification(data).pipe(takeUntil(this.destroy$)).subscribe((res) => {
|
|
896
916
|
if (res && res.code == 200) {
|
|
897
917
|
this.notificationDetails = res.data;
|
|
918
|
+
console.log(this.notificationDetails, 'details');
|
|
898
919
|
this.notificationDetails.notificationList.forEach((item) => {
|
|
899
920
|
item.producttraildropDown = false;
|
|
900
921
|
});
|
|
@@ -935,11 +956,33 @@ export class PaymentsSubscriptionComponent {
|
|
|
935
956
|
firstWord = firstWord.charAt(0).toUpperCase() + firstWord.slice(1);
|
|
936
957
|
return firstWord + ' ' + secondWord;
|
|
937
958
|
}
|
|
938
|
-
|
|
939
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: PaymentsSubscriptionComponent, selector: "lib-payments-subscription", ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div ngbAccordion [closeOthers]=\"true\">\r\n <!-- Billing & subscription start -->\r\n <div class=\"card\" ngbAccordionItem [collapsed]=\"openaccordian\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>Billing & Subscription<div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <!--begin::plan details Card-->\r\n <div class=\"col-xl-12 billingcard\">\r\n <div class=\" h-xl-100 flex-row flex-stack flex-wrap p-6\">\r\n <div class=\"toastcard col-md-12\" *ngIf=\"clientinfo?.currentPlanInfo?.paymentStatus==='due' && clientinfo?.currentPlanInfo?.dueLimitReached===false\">\r\n <div class=\"d-flex align-items-center justify-content-end\">\r\n <div class=\"symbol symbol-30px me-5\"><span>\r\n <img src=\"./assets/tango/custompopup-Icons/danger-alert-primary.svg\"\r\n alt=\"\">\r\n </span>\r\n </div>\r\n <span class=\"toasttext d-block\">Kind Reminder: You have a reached your due\r\n limit ,To continue enjoying our services, please renew your subscription\r\n by making the payment. Thank you for your cooperation</span>\r\n <span><a type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 ng-star-inserted\"\r\n style=\"white-space: nowrap;\"><span class=\"create\">Pay Now\r\n </span></a></span>\r\n </div>\r\n\r\n </div>\r\n <div class=\"toastcard col-md-12\" *ngIf=\"clientinfo?.currentPlanInfo?.paymentStatus==='due' && clientinfo?.currentPlanInfo?.dueLimitReached===true\">\r\n <div class=\"d-flex align-items-center justify-content-end\">\r\n <div class=\"symbol symbol-30px me-5\"><span>\r\n <img src=\"./assets/tango/custompopup-Icons/danger-alert-primary.svg\"\r\n alt=\"\">\r\n </span>\r\n </div>\r\n <span class=\"toasttext d-block\">Kind Reminder: We haven't received your\r\n payment yet. To continue enjoying our services, please renew your\r\n subscription by making the payment. Thank you for your\r\n cooperation</span>\r\n <span><a type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 ng-star-inserted\"\r\n style=\"white-space: nowrap;\"><span class=\"create\">Pay Now\r\n </span></a></span>\r\n </div>\r\n\r\n </div>\r\n <div class=\"d-flex flex-column mt-6\">\r\n <div class=\"d-flex align-items-center justify-content-between border-val mb-2\">\r\n Current Plan Info<span class=\"badge-light-grey ms-2\">\r\n {{clientinfo?.currentPlanInfo?.priceType\r\n || '--'}}</span>\r\n </div>\r\n <div class=\"d-flex align-items-center pricingtext my-2\">\r\n $ {{clientinfo?.currentPlanInfo?.price\r\n || '--'}}<span class=\"pricingspan ms-2\">Store/Month</span>\r\n </div>\r\n <hr>\r\n <div class=\"d-flex justify-content-between\">\r\n\r\n\r\n <div class=\"d-flex justify-content-start flex-column plancard\">\r\n <div class=\" heading mb-3\">\r\n {{clientinfo?.currentPlanInfo?.subscriptionType\r\n || '--'}}\r\n plan - {{clientinfo?.currentPlanInfo?.storeCount\r\n || '--'}}\r\n <span class=\"subheading ms-2\">store\r\n onboarded</span>\r\n <span ngbTooltip=\"{{ product.toolTip }}\" placement=\"top\" triggers=\"mouseenter:mouseleave\" tooltipClass=\"custom-tooltip\" class=\"badge badge-light-warning ms-2\"\r\n *ngFor=\"let product of clientinfo?.currentPlanInfo?.trialProducts\">\r\n {{ product.aliseProductName }}\r\n <img class=\"ms-2\"\r\n src=\"./assets/tango/custompopup-Icons/clockexpiry-icon.svg\"\r\n alt=\"\"> </span>\r\n <span tooltipClass=\"custom-tooltip\" ngbTooltip=\"{{ product.toolTip }}\" placement=\"top\" triggers=\"mouseenter:mouseleave\" class=\"badge badge-light-primary ms-2\"\r\n *ngFor=\"let product of clientinfo?.currentPlanInfo?.expiredProducts\">\r\n {{ product.aliseProductName }}\r\n <img class=\"ms-2\"\r\n src=\"./assets/tango/custompopup-Icons/primary-clock-icon.svg\"\r\n alt=\"\"> </span>\r\n </div>\r\n <span class=\"sub d-block\">Cameras :\r\n {{clientinfo?.currentPlanInfo?.totalCamera\r\n || '--'}} | Avg sq.ft : {{clientinfo?.currentPlanInfo?.storeSize\r\n || '--'}} sq.ft | Products : <span\r\n *ngFor=\"let product of clientinfo?.currentPlanInfo?.liveProducts\">\r\n {{ product.aliseProductName }} </span>\r\n </span>\r\n </div>\r\n \r\n <div class=\" d-flex align-items-end\" >\r\n <span [disableTooltip]=\"!clientinfo?.currentPlanInfo?.pendingClientRequest\" ngbTooltip=\"Request is Already initiated waiting for admin approval\" placement=\"top\" triggers=\"mouseenter:mouseleave\" tooltipClass=\"custom-tooltip\">\r\n <button type=\"submit\" [disabled]=\"clientinfo?.currentPlanInfo?.pendingClientRequest\" (click)=\"needhelp()\" \r\n class=\"btn-outline btn needhelp me-4\"><span class=\"me-2\"><svg\r\n width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_1965_2301)\">\r\n <path\r\n d=\"M7.57533 7.50033C7.77125 6.94338 8.15795 6.47375 8.66695 6.1746C9.17596 5.87546 9.77441 5.76611 10.3563 5.86592C10.9382 5.96573 11.466 6.26826 11.8462 6.71993C12.2264 7.1716 12.4345 7.74326 12.4337 8.33366C12.4337 10.0003 9.93366 10.8337 9.93366 10.8337M10.0003 14.167H10.0087M18.3337 10.0003C18.3337 14.6027 14.6027 18.3337 10.0003 18.3337C5.39795 18.3337 1.66699 14.6027 1.66699 10.0003C1.66699 5.39795 5.39795 1.66699 10.0003 1.66699C14.6027 1.66699 18.3337 5.39795 18.3337 10.0003Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1965_2301\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"> Need Help</span>\r\n </button>\r\n \r\n </span>\r\n <button \r\n (click)=\"upgradeplan()\" type=\"button\" tabindex=\"0\"\r\n class=\"btn update btn-lg btn-light btn-active-light-primary px-4 ng-star-inserted\"\r\n style=\"white-space: nowrap;\"><span class=\"create\">Upgrade Plan\r\n </span></button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <!--end::plan details Card-->\r\n\r\n\r\n <div class=\"row gx-4 mt-4\">\r\n <!--begin::Bank details Card-->\r\n <div class=\"col-xl-7 \">\r\n <div class=\"billingcard h-xl-100 flex-row flex-stack flex-wrap p-6\">\r\n <div class=\"d-flex flex-column py-2\">\r\n <div class=\"d-flex align-items-center billingtext mb-8\">\r\n Bank Details\r\n </div>\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">Payment Type</div>\r\n <div class=\"billingmain\">Virtual Acc\r\n </div>\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">Account No </div>\r\n <div class=\"billingmain\"> {{clientinfo?.bankDetails?.accountNo ||\r\n '--'}}\r\n </div>\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">IFSC Code</div>\r\n <div class=\"billingmain\"> {{clientinfo?.bankDetails?.ifscCode ||\r\n '--'}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-flex align-items-center mt-4\">\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">SWIFT Code</div>\r\n <div class=\"billingmain\"> {{clientinfo?.bankDetails?.swiftCode ||\r\n '--'}}\r\n </div>\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">Branch </div>\r\n <div class=\"billingmain\">{{clientinfo?.bankDetails?.branch || '--'}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!--end::Bank details Card-->\r\n\r\n\r\n <div class=\"col-xl-5 \">\r\n \r\n <!-- Add Billing start -->\r\n <div class=\"billing h-xl-100 w-100 flex-row flex-stack flex-wrap p-6\" *ngIf=\"!clientinfo?.billingDetails?.billingAddress\">\r\n <div class=\"modal-content align-items-center mt-2\">\r\n <div class=\"d-flex\">\r\n <div><img src=\"./assets/tango/custompopup-Icons/addbilling_icon.svg\"\r\n alt=\"\"></div>\r\n\r\n </div>\r\n <div class=\"heading mt-4 ms-1\">Add billing address</div>\r\n <div class=\"d-flex justify-content-center mt-8 w-100\">\r\n <button type=\"button\" tabindex=\"0\" (click)=\"update()\"\r\n class=\"btn btn-primary ms-2 ng-star-inserted address w-100\"\r\n style=\"white-space: nowrap;\"><span class=\"submit\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0003 4.16675V15.8334M4.16699 10.0001H15.8337\"\r\n stroke=\"white\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span> New Address </button>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <!-- Add Billing end -->\r\n <!-- Billing Information start -->\r\n <div class=\"billingcard h-xl-100 flex-row flex-stack flex-wrap p-6\" *ngIf=\"clientinfo?.billingDetails?.billingAddress && clientinfo?.billingDetails?.billingAddress!==''\">\r\n <div class=\"d-flex flex-column py-2\">\r\n <div\r\n class=\"d-flex align-items-center justify-content-between billingtext mb-5\">\r\n Billing\r\n <a type=\"submit\" (click)=\"update()\"\r\n class=\"btn update btn-lg btn-light btn-active-light-primary px-4 ng-star-inserted\"><span\r\n class=\"mt-2\">\r\n Update</span></a>\r\n\r\n </div>\r\n\r\n <div class=\"align-items-center\">\r\n\r\n <div class=\"billingdetails\">Next Billing Date</div>\r\n <div class=\"billingmain\">\r\n {{clientinfo?.billingDetails?.nextBillingDate || '--'}}\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <div class=\"align-items-center mt-6\">\r\n <div class=\"billingdetails\">Billing Address</div>\r\n <div class=\"billingmain\">\r\n {{clientinfo?.billingDetails?.billingAddress ||\r\n '--'}}\r\n </div>\r\n\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <!-- Billing Information End -->\r\n\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Billing & subscription End -->\r\n\r\n <!--subscription Config start -->\r\n <div class=\"card mt-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>Subscription Config <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n\r\n <ng-template>\r\n <div class=\"col-xl-12 billingcard\">\r\n <div class=\" h-xl-100 flex-row flex-stack flex-wrap mx-5 pt-4\">\r\n <div class=\"d-flex flex-column\">\r\n <!-- subscription info header start -->\r\n <div class=\"d-flex justify-content-between\">\r\n\r\n <div *ngIf=\"showNavGroup\" class=\"nav-group nav-group-outline mt-2\">\r\n <button\r\n class=\"btn btn-color-gray-600 btn-active btn-active-secondary px-6 py-3 me-2\"\r\n [ngClass]=\"plan === 'subscription'? 'activePlanBtn':'inactivePlanBtn'\"\r\n data-kt-plan=\"subscription\" (click)=\"selectPlan('subscription')\">\r\n Subscription\r\n </button>\r\n\r\n <button\r\n class=\"btn btn-color-gray-600 btn-active btn-active-secondary px-6 py-3\"\r\n [ngClass]=\"plan === 'pricing'? 'activePlanBtn':'inactivePlanBtn'\"\r\n data-kt-plan=\"pricing\" (click)=\"selectPlan('pricing')\">\r\n Pricing\r\n </button>\r\n </div>\r\n </div>\r\n <!-- subscription info header end -->\r\n\r\n <!-- subscription tab starts -->\r\n <div *ngIf=\"plan === 'subscription'\">\r\n <!-- client request card start -->\r\n <div class=\"row gx-4 mt-4\">\r\n <!--begin::Bank details Card-->\r\n <div class=\"col-xl-6\" [ngClass]=\"i > 1? 'mt-5' : ''\" *ngFor=\"let notification of notificationDetails.notificationList;let i= index;\">\r\n <!-- Billing Information start -->\r\n <div\r\n class=\"billingcard h-xl-100 flex-row flex-stack flex-wrap mb-6 px-6\">\r\n <div class=\"d-flex flex-column mt-10\" *ngIf=\"notification.category === 'Trial'\">\r\n <div\r\n class=\"d-flex align-items-center justify-content-between levelviewtext mb-2\">\r\n {{notification.name}} <span\r\n class=\"badge-light-grey ms-2\">{{currentPlan}}</span>\r\n </div>\r\n <div class=\"subtext\">Kindly make necessary action for trial\r\n request or skip product to subscription list</div>\r\n\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex mt-9\"><a (click)=\"approvetrial(notification,'cancel')\" type=\"submit\"\r\n class=\"btn-outline btn needhelp me-6 mt-3\"><span\r\n class=\"mt-6\">Skip Trail</span></a><a (click)=\"approvetrial(notification,'approve')\"\r\n type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 mt-3 ng-star-inserted\"><span>Approve\r\n Trail\r\n </span></a></div>\r\n </div>\r\n <div class=\"d-flex flex-column mt-10\" *ngIf=\"notification.category === 'unsubscribe'\">\r\n <div class=\"d-flex align-items-center justify-content-between levelviewtext mb-2\">\r\n Unsubscribe Request\r\n </div>\r\n <div class=\"subtext\">Client has requested to unsubscribe\r\n <span class=\"subtextbold\">Tango Suite</span>\r\n </div>\r\n \r\n <div data-kt-subscription-table-toolbar=\"base\" class=\"d-flex mt-9\"><a type=\"submit\"\r\n class=\"btn-outline btn needhelp me-6 mt-3\" (click)=\"cancelUnsubscribe(notification,'cancel')\"><span class=\"mt-6\">Cancel</span></a><a (click)=\"approveUnsubscribe(notification,'unsubscribe')\"\r\n type=\"button\" tabindex=\"0\" class=\"btn btn-danger px-4 mt-3 ng-star-inserted\"><span>Approve\r\n </span></a></div>\r\n </div>\r\n <div class=\"d-flex flex-column mt-10\" *ngIf=\"notification.category === 'trial product'\">\r\n <div class=\"d-flex align-items-center justify-content-between levelviewtext mb-2\">\r\n {{notification.name}} <span class=\"badge-light-grey ms-2\">{{currentPlan}}</span>\r\n </div>\r\n <div class=\"subtext\">Current Plan Info</div>\r\n <div class=\"row mt-7\">\r\n <div class=\"col-lg-8 d-flex\">\r\n <div><svg id=\"circle-chart\" width=\"94\" height=\"94\" viewBox=\"0 0 100 100\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <!-- Background circle -->\r\n <circle cx=\"50\" cy=\"50\" r=\"40\" fill=\"none\" stroke=\"#f0f0f0\" stroke-width=\"8\"></circle>\r\n <!-- Foreground circle -->\r\n <circle id=\"progress-circle-{{i}}\" cx=\"50\" cy=\"50\" r=\"40\" fill=\"none\" stroke=\"#007bff\" stroke-width=\"8\"\r\n stroke-dasharray=\"251.2\" [attr.stroke-dashoffset]=\"updateCircleChart(notification.percentage,i)\"></circle>\r\n <!-- Text displaying percentage -->\r\n <text id=\"percentage-text-{{i}}\" x=\"50\" y=\"54\" class=\"producttext\" text-anchor=\"middle\"\r\n fill=\"#333333\">{{notification.percentage}}%</text>\r\n </svg></div>\r\n <div class=\"align-items-start justify-content-between daysleft ms-6 mt-3\">\r\n {{notification.day}} Days Left\r\n <div class=\"align-items-start trail mt-2 me-14\">Free trial</div>\r\n </div>\r\n \r\n </div>\r\n <div class=\"col-lg-4 mt-6\">\r\n <div class=\"position-relative\">\r\n <div (click)=\"producttrailDropdown($event,i)\"> <span class=\"justify-content-end cursor-pointer ms-20\"><svg\r\n width=\"60\" height=\"60\" viewBox=\"0 0 60 60\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g filter=\"url(#filter0_d_5221_60143)\">\r\n <rect x=\"2\" y=\"1\" width=\"56\" height=\"56\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"55\" height=\"55\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <g clip-path=\"url(#clip0_5221_60143)\">\r\n <path\r\n d=\"M30 32C31.6569 32 33 30.6569 33 29C33 27.3431 31.6569 26 30 26C28.3431 26 27 27.3431 27 29C27 30.6569 28.3431 32 30 32Z\"\r\n stroke=\"#344054\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M37.4 32C37.2669 32.3016 37.2272 32.6362 37.286 32.9606C37.3448 33.285 37.4995 33.5843 37.73 33.82L37.79 33.88C37.976 34.0657 38.1235 34.2863 38.2241 34.5291C38.3248 34.7719 38.3766 35.0322 38.3766 35.295C38.3766 35.5578 38.3248 35.8181 38.2241 36.0609C38.1235 36.3037 37.976 36.5243 37.79 36.71C37.6043 36.896 37.3837 37.0435 37.1409 37.1441C36.8981 37.2448 36.6378 37.2966 36.375 37.2966C36.1122 37.2966 35.8519 37.2448 35.6091 37.1441C35.3663 37.0435 35.1457 36.896 34.96 36.71L34.9 36.65C34.6643 36.4195 34.365 36.2648 34.0406 36.206C33.7162 36.1472 33.3816 36.1869 33.08 36.32C32.7842 36.4468 32.532 36.6572 32.3543 36.9255C32.1766 37.1938 32.0813 37.5082 32.08 37.83V38C32.08 38.5304 31.8693 39.0391 31.4942 39.4142C31.1191 39.7893 30.6104 40 30.08 40C29.5496 40 29.0409 39.7893 28.6658 39.4142C28.2907 39.0391 28.08 38.5304 28.08 38V37.91C28.0723 37.579 27.9651 37.258 27.7725 36.9887C27.5799 36.7194 27.3107 36.5143 27 36.4C26.6984 36.2669 26.3638 36.2272 26.0394 36.286C25.715 36.3448 25.4157 36.4995 25.18 36.73L25.12 36.79C24.9343 36.976 24.7137 37.1235 24.4709 37.2241C24.2281 37.3248 23.9678 37.3766 23.705 37.3766C23.4422 37.3766 23.1819 37.3248 22.9391 37.2241C22.6963 37.1235 22.4757 36.976 22.29 36.79C22.104 36.6043 21.9565 36.3837 21.8559 36.1409C21.7552 35.8981 21.7034 35.6378 21.7034 35.375C21.7034 35.1122 21.7552 34.8519 21.8559 34.6091C21.9565 34.3663 22.104 34.1457 22.29 33.96L22.35 33.9C22.5805 33.6643 22.7352 33.365 22.794 33.0406C22.8528 32.7162 22.8131 32.3816 22.68 32.08C22.5532 31.7842 22.3428 31.532 22.0745 31.3543C21.8062 31.1766 21.4918 31.0813 21.17 31.08H21C20.4696 31.08 19.9609 30.8693 19.5858 30.4942C19.2107 30.1191 19 29.6104 19 29.08C19 28.5496 19.2107 28.0409 19.5858 27.6658C19.9609 27.2907 20.4696 27.08 21 27.08H21.09C21.421 27.0723 21.742 26.9651 22.0113 26.7725C22.2806 26.5799 22.4857 26.3107 22.6 26C22.7331 25.6984 22.7728 25.3638 22.714 25.0394C22.6552 24.715 22.5005 24.4157 22.27 24.18L22.21 24.12C22.024 23.9343 21.8765 23.7137 21.7759 23.4709C21.6752 23.2281 21.6234 22.9678 21.6234 22.705C21.6234 22.4422 21.6752 22.1819 21.7759 21.9391C21.8765 21.6963 22.024 21.4757 22.21 21.29C22.3957 21.104 22.6163 20.9565 22.8591 20.8559C23.1019 20.7552 23.3622 20.7034 23.625 20.7034C23.8878 20.7034 24.1481 20.7552 24.3909 20.8559C24.6337 20.9565 24.8543 21.104 25.04 21.29L25.1 21.35C25.3357 21.5805 25.635 21.7352 25.9594 21.794C26.2838 21.8528 26.6184 21.8131 26.92 21.68H27C27.2958 21.5532 27.548 21.3428 27.7257 21.0745C27.9034 20.8062 27.9987 20.4918 28 20.17V20C28 19.4696 28.2107 18.9609 28.5858 18.5858C28.9609 18.2107 29.4696 18 30 18C30.5304 18 31.0391 18.2107 31.4142 18.5858C31.7893 18.9609 32 19.4696 32 20V20.09C32.0013 20.4118 32.0966 20.7262 32.2743 20.9945C32.452 21.2628 32.7042 21.4732 33 21.6C33.3016 21.7331 33.6362 21.7728 33.9606 21.714C34.285 21.6552 34.5843 21.5005 34.82 21.27L34.88 21.21C35.0657 21.024 35.2863 20.8765 35.5291 20.7759C35.7719 20.6752 36.0322 20.6234 36.295 20.6234C36.5578 20.6234 36.8181 20.6752 37.0609 20.7759C37.3037 20.8765 37.5243 21.024 37.71 21.21C37.896 21.3957 38.0435 21.6163 38.1441 21.8591C38.2448 22.1019 38.2966 22.3622 38.2966 22.625C38.2966 22.8878 38.2448 23.1481 38.1441 23.3909C38.0435 23.6337 37.896 23.8543 37.71 24.04L37.65 24.1C37.4195 24.3357 37.2648 24.635 37.206 24.9594C37.1472 25.2838 37.1869 25.6184 37.32 25.92V26C37.4468 26.2958 37.6572 26.548 37.9255 26.7257C38.1938 26.9034 38.5082 26.9987 38.83 27H39C39.5304 27 40.0391 27.2107 40.4142 27.5858C40.7893 27.9609 41 28.4696 41 29C41 29.5304 40.7893 30.0391 40.4142 30.4142C40.0391 30.7893 39.5304 31 39 31H38.91C38.5882 31.0013 38.2738 31.0966 38.0055 31.2743C37.7372 31.452 37.5268 31.7042 37.4 32Z\"\r\n stroke=\"#344054\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_5221_60143\" x=\"0\" y=\"0\" width=\"60\" height=\"60\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_5221_60143\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_5221_60143\"\r\n result=\"shape\" />\r\n </filter>\r\n <clipPath id=\"clip0_5221_60143\">\r\n <rect width=\"24\" height=\"24\" fill=\"white\" transform=\"translate(18 17)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span></div>\r\n <div *ngIf=\"notification.producttraildropDown\" class=\"card py-2 w-200px position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let producttrailitem of producttrailtype\" class=\"list-unstyled mb-2\">\r\n <li \r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"producttrailItem(producttrailitem,notification)\">{{producttrailitem}}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n \r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n <!--end::Bank details Card-->\r\n </div>\r\n <!-- client request card end -->\r\n\r\n <!-- level view dropdown start -->\r\n <div *ngIf=\"sublevelview\"\r\n class=\"d-flex justify-content-between heading mt-6\">\r\n <div class=\"position-relative \">\r\n <div class=\"form-select dropselect levelviewtext\" id=\"currency\"\r\n (click)=\"viewplanDropdown($event)\"\r\n aria-label=\"Default select example\">{{viewplanIssue}}</div>\r\n <div *ngIf=\"viewplandropDown\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let viewplanitem of viewplantype\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.viewplanIssue === viewplanitem ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"viewplanItem(viewplanitem)\">{{viewplanitem}}\r\n </li>\r\n </ul>\r\n </div>\r\n <div class=\"text-sub\">Based on Current Subscribed Product</div>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div *ngIf=\"plan === 'subscription' && viewplanIssue === 'Product Level View'\"\r\n class=\" d-flex justify-content-end mt-6\">\r\n <lib-multidropdown text=\"Add Products\" [product]=\"productList\" [productList]=\"dataObject[0].Issues\" type=\"products\" [clientId]=\"clientId\" (data)=\"reload($event)\"></lib-multidropdown>\r\n </div>\r\n </div>\r\n <div class=\"card-toolbar mt-3\"\r\n *ngIf=\"viewplanIssue === 'Store Level View' && plan === 'subscription'\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"d-flex align-items-end position-relative my-1\">\r\n <span\r\n class=\"svg-icon svg-icon-1 position-absolute mb-3 ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\r\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\"\r\n width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\"\r\n fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" class=\"form-control ps-14 me-2\"\r\n placeholder=\"Search\" autocomplete=\"off\" (change)=\"searchRecords($event)\"/>\r\n <lib-filters class=\"me-2\"\r\n [dataObject]=\"dataObject\" (appliedFilters)=receiveData($event) ></lib-filters>\r\n <lib-multidropdown text=\"Add Products\" [productList]=\"dataObject[0].Issues\" type=\"stores\" [stores]=\"getStores()\" [product]=\"getProduct()\" [clientId]=\"clientId\" [clientProduct]=\"productList\" (data)=\"reload($event)\" [selectAll]=\"selectAll\"></lib-multidropdown>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- subscription config toolbar end -->\r\n </div>\r\n\r\n <ng-container *ngIf=\"loading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"noData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- product subscription plan start -->\r\n <div *ngIf=\"viewplanIssue === 'Product Level View' && !loading && !noData\" >\r\n <div class=\"card-body p-0 mt-4\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border\">\r\n <thead>\r\n <tr>\r\n <th>Product</th>\r\n <th>No of Stores</th>\r\n <th>Cost Per Store</th>\r\n\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let product of productList;let i=index;\">\r\n <td>\r\n <div class=\"table-title subscribedtext\">{{convertUpper(product?.product) || '--'}}</div>\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\">{{product?.storeCount || 0}}</div>\r\n\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\">${{product?.basePrice || 0}}</div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- product subscription plan end -->\r\n\r\n <!-- store subscription plan start -->\r\n <div *ngIf=\"viewplanIssue === 'Store Level View' && !loading && !noData\">\r\n <div class=\"card-body p-0 mt-6\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border\">\r\n <thead>\r\n <tr>\r\n <th>\r\n <div class=\"d-flex\">\r\n <input class=\"storeinput me-4\" [(ngModel)]=\"selectAll\"\r\n type=\"checkbox\" (click)=\"selectAllStore($event)\">\r\n <label class=\"form-check-label\"\r\n for=\"flexCheckDefault\">\r\n <span>Store Info</span>\r\n </label>\r\n </div>\r\n </th>\r\n <th>Location</th>\r\n <th>Products</th>\r\n <th>Actions</th>\r\n\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let store of storeList;let i=index;\">\r\n <td>\r\n <div class=\"d-flex \">\r\n <input class=\"storeinput me-4\"\r\n type=\"checkbox\" [(ngModel)]=\"store.checked\" (change)=\"updateCheck($event,store?.storeId)\">\r\n <div\r\n class=\"d-flex justify-content-start flex-column\">\r\n <label\r\n class=\"form-check-label table-title-primary\"\r\n for=\"flexCheckDefault\">\r\n <span>{{store?.storeName || '--'}}</span>\r\n </label>\r\n <span class=\"table-sub d-block7\">ID :\r\n {{store?.storeId || '--'}}</span>\r\n </div>\r\n </div>\r\n\r\n <div>\r\n\r\n\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{store?.storeProfile?.city || '--'}}</div>\r\n </td>\r\n\r\n <td>\r\n <span *ngFor=\"let product of store.product;let i=index;\"><span *ngIf=\"i<2\" class=\"badge badge-light-primary me-1\">{{product}}</span></span><span *ngIf=\"store.product.length > 2\">+{{store.product.length-2}}</span>\r\n </td>\r\n <td>\r\n <lib-multidropdown [product]=\"store.product\" [productList]=\"dataObject[0].Issues\" type=\"stores\" [stores]=\"[store?.storeId]\" [clientId]=\"clientId\" [clientProduct]=\"productList\" (data)=\"reload($event)\"></lib-multidropdown>\r\n </td>\r\n\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div class=\"mb-4\">\r\n <lib-pagination [itemsPerPage]=\"dynamicData.limit\" [currentPage]=\"dynamicData.offset\" [totalItems]=\"totalCount\" [paginationSizes]=\"[10,20,30]\"\r\n [pageSize]=\"dynamicData.limit\" (pageChange)=\"onStorePageChange($event)\" (pageSizeChange)=\"onStorePageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- store subscription plan end -->\r\n </div>\r\n <!-- subscription tab starts -->\r\n\r\n <!--pricing tab start -->\r\n <div *ngIf=\"plan === 'pricing'\">\r\n <div class=\"d-flex justify-content-between py-6\">\r\n <div class=\" levelviewtext mt-4\">\r\n Pricing Table<br><span class=\"text-sub\">Based on Product &\r\n stores</span> </div>\r\n <div class=\"card-toolbar\">\r\n <div class=\"justify-content-end\">\r\n <div class=\"producttext\">Switch to</div>\r\n <div *ngIf=\"PricingshowNav\"\r\n class=\"nav-group nav-group-outline mt-2\">\r\n <button\r\n class=\"btn btn-color-gray-600 btn-active btn-active-secondary px-6 py-3 me-2\"\r\n [ngClass]=\"pricingplan === 'standard'? 'activePlanBtnprimary':'inactivePlanBtn'\"\r\n data-kt-plan=\"standardprice\"\r\n (click)=\"selectPricePlan('standard')\">\r\n Standard Price\r\n </button>\r\n\r\n <button\r\n class=\"btn btn-color-gray-600 btn-active btn-active-secondary px-6 py-3\"\r\n [ngClass]=\"pricingplan === 'step'? 'activePlanBtnprimary':'inactivePlanBtn'\"\r\n data-kt-plan=\"stepprice\"\r\n (click)=\"selectPricePlan('step')\">\r\n Step Price\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"pricingplan === 'step'\" class=\"d-flex justify-content-end mb-8\">\r\n <button (click)=\"addstepprice('add')\" type=\"button\" class=\"btn-outline btn needhelp text-nowrap\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M10.4993 4.16675V15.8334M4.66602 10.0001H16.3327\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Add Step</span> </button>\r\n </div>\r\n\r\n <ng-container *ngIf=\"priceLoading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"priceNoData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"card-body p-0 mt-4\">\r\n <div *ngIf=\"pricingplan === 'standard' && !priceLoading && !priceNoData\" class=\"table-responsive\">\r\n <table class=\"table bottom-border\">\r\n <thead>\r\n <tr>\r\n <th>Product</th>\r\n <th>Actual Price</th>\r\n <th class=\"discountheader\">Discount %</th>\r\n <th class=\"negheader\">Negotiated Price</th>\r\n <th>Installed Stores</th>\r\n <th>Total Price</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor =\"let product of priceValueDetails.product;let i=index;\">\r\n <td>\r\n <div class=\"producttext\">{{convertUpper(product.productName)}}</div>\r\n\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{product.basePrice}}</div>\r\n\r\n </td>\r\n <td class=\"discountprice\">\r\n <div><input type=\"text\" class=\" form-control \"\r\n id=\"discountprice\"\r\n style=\"text-transform: capitalize;\" [(ngModel)]=\"product.discountPercentage\" (change)=\"calculate(i,'discount')\"></div>\r\n </td>\r\n <td class=\"negprice\">\r\n <div><input type=\"text\" class=\" form-control \"\r\n id=\"negprice\"\r\n style=\"text-transform: capitalize;\" [(ngModel)]=\"product.negotiatePrice\" (change)=\"calculate(i,'price')\"></div>\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\">{{product.storeCount}}</div>\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\">$ {{product.price}}</div>\r\n </td>\r\n </tr>\r\n <tr>\r\n <th>\r\n <div class=\"table-title\">Total Value</div>\r\n \r\n </th>\r\n <th>\r\n <div class=\"table-title bolddata\">${{priceValueDetails.actualPrice}}</div>\r\n \r\n </th>\r\n <th>\r\n <div class=\"table-title bolddata\">${{priceValueDetails.negotiatePrice}}</div>\r\n </th>\r\n <th><div class=\"table-title bolddata\">${{priceValueDetails.negotiatePrice}}</div></th>\r\n <th></th>\r\n \r\n <th>\r\n <div class=\"table-title bolddata\">$ {{priceValueDetails.totalNegotiatePrice}}</div>\r\n </th>\r\n \r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div *ngIf=\"pricingplan === 'step' && !priceLoading && !priceNoData\" class=\"table-responsive\">\r\n <table class=\"table bottom-border pricingtab\">\r\n <thead>\r\n <tr>\r\n <th>Product</th>\r\n <th>Actual Price</th>\r\n <th>Discount %</th>\r\n <th>Negotiated Price</th>\r\n <th>Store Range</th>\r\n <th>Installed Stores</th>\r\n <th>Total Price</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let product of priceValueDetails?.product;let i=index\">\r\n <td>\r\n <div class=\"producttext\">{{convertUpper(product.productName)}}\r\n <span class=\"ms-4\" *ngIf=\"product.showImg\"><img src=\"./assets/tango/custompopup-Icons/expiry-icon.svg\" alt=\"\"></span>\r\n </div>\r\n\r\n </td>\r\n <td>\r\n <div class=\"table-title\">${{product.basePrice}}</div>\r\n\r\n </td>\r\n <td class=\"discountprice\">\r\n <div><input type=\"text\" class=\" form-control \"\r\n id=\"discountprice\"\r\n style=\"text-transform: capitalize;\" [(ngModel)]=\"product.discountPercentage\" (change)=\"calculate(i,'discount')\"></div>\r\n </td>\r\n <td class=\"negprice\">\r\n <div><input type=\"text\" class=\" form-control \"\r\n id=\"negprice\"\r\n style=\"text-transform: capitalize;\" [(ngModel)]=\"product.negotiatePrice\" (change)=\"calculate(i,'price')\"></div>\r\n </td>\r\n <td class=\"storerange\">\r\n <div><input type=\"text\" class=\" form-control \"\r\n id=\"storerange\"\r\n style=\"text-transform: capitalize;\" [(ngModel)]=\"product.storeRange\" readonly></div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{product.storeCount}}</div>\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\">${{product.price}}</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title d-flex\" *ngIf=\"!product.showEditDelete\">\r\n <span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M3.16602 4.99935H4.83268M4.83268 4.99935H18.166M4.83268 4.99935V16.666C4.83268 17.108 5.00828 17.532 5.32084 17.8445C5.6334 18.1571 6.05732 18.3327 6.49935 18.3327H14.8327C15.2747 18.3327 15.6986 18.1571 16.0112 17.8445C16.3238 17.532 16.4993 17.108 16.4993 16.666V4.99935H4.83268ZM7.33268 4.99935V3.33268C7.33268 2.89065 7.50828 2.46673 7.82084 2.15417C8.1334 1.84161 8.55732 1.66602 8.99935 1.66602H12.3327C12.7747 1.66602 13.1986 1.84161 13.5112 2.15417C13.8238 2.46673 13.9993 2.89065 13.9993 3.33268V4.99935M8.99935 9.16602V14.166M12.3327 9.16602V14.166\"\r\n stroke=\"#D0D5DD\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span class=\"ms-6\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M14.832 2.5009C15.0509 2.28203 15.3107 2.10842 15.5967 1.98996C15.8827 1.87151 16.1892 1.81055 16.4987 1.81055C16.8082 1.81055 17.1147 1.87151 17.4007 1.98996C17.6867 2.10842 17.9465 2.28203 18.1654 2.5009C18.3842 2.71977 18.5579 2.97961 18.6763 3.26558C18.7948 3.55154 18.8557 3.85804 18.8557 4.16757C18.8557 4.4771 18.7948 4.7836 18.6763 5.06956C18.5579 5.35553 18.3842 5.61537 18.1654 5.83424L6.91536 17.0842L2.33203 18.3342L3.58203 13.7509L14.832 2.5009Z\"\r\n stroke=\"#D0D5DD\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div> \r\n <div class=\"cursor-pointer table-title d-flex\" *ngIf=\"product.showEditDelete\">\r\n <span (click)=\"addstepprice('delete',product,i)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M3.16602 4.99935H4.83268M4.83268 4.99935H18.166M4.83268 4.99935V16.666C4.83268 17.108 5.00828 17.532 5.32084 17.8445C5.6334 18.1571 6.05732 18.3327 6.49935 18.3327H14.8327C15.2747 18.3327 15.6986 18.1571 16.0112 17.8445C16.3238 17.532 16.4993 17.108 16.4993 16.666V4.99935H4.83268ZM7.33268 4.99935V3.33268C7.33268 2.89065 7.50828 2.46673 7.82084 2.15417C8.1334 1.84161 8.55732 1.66602 8.99935 1.66602H12.3327C12.7747 1.66602 13.1986 1.84161 13.5112 2.15417C13.8238 2.46673 13.9993 2.89065 13.9993 3.33268V4.99935M8.99935 9.16602V14.166M12.3327 9.16602V14.166\"\r\n stroke=\"#667085\"\r\n stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span (click)=\"addstepprice('edit',product,i)\" class=\"ms-6\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M14.832 2.5009C15.0509 2.28203 15.3107 2.10842 15.5967 1.98996C15.8827 1.87151 16.1892 1.81055 16.4987 1.81055C16.8082 1.81055 17.1147 1.87151 17.4007 1.98996C17.6867 2.10842 17.9465 2.28203 18.1654 2.5009C18.3842 2.71977 18.5579 2.97961 18.6763 3.26558C18.7948 3.55154 18.8557 3.85804 18.8557 4.16757C18.8557 4.4771 18.7948 4.7836 18.6763 5.06956C18.5579 5.35553 18.3842 5.61537 18.1654 5.83424L6.91536 17.0842L2.33203 18.3342L3.58203 13.7509L14.832 2.5009Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </td>\r\n\r\n </tr>\r\n <tr>\r\n <th>\r\n <div class=\"table-title\">Total Value</div>\r\n\r\n </th>\r\n <th>\r\n <div class=\"table-title bolddata\">${{priceValueDetails.actualPrice}}</div>\r\n\r\n </th>\r\n <th>\r\n <div class=\"table-title bolddata\">${{priceValueDetails.negotiatePrice}}</div>\r\n </th>\r\n <th><div class=\"table-title bolddata\">${{priceValueDetails.negotiatePrice}}</div></th>\r\n <th></th>\r\n <th></th>\r\n <th>\r\n <div class=\"table-title bolddata\">$ {{priceValueDetails.totalNegotiatePrice}}</div>\r\n </th>\r\n <th></th>\r\n\r\n </tr>\r\n\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <div class=\"card-body pt-14\" *ngIf=\"!priceLoading && !priceNoData\">\r\n <div class=\"d-flex flex-stack\">\r\n <div class=\"fianlvaltext me-2\">Actual Value</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\">$ {{priceValueDetails.totalActualPrice}}</span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-stack pt-4\">\r\n <div class=\"fianlvaltext me-2\">Discount</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\">{{priceValueDetails.discountPercentage}}% (- $ {{priceValueDetails.discountPrice}})</span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-stack pt-4\">\r\n <div class=\"fianlvaltext me-2\">Negotiated Value</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\">${{priceValueDetails.totalNegotiatePrice}}</span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-stack pt-4\">\r\n <div class=\"fianlvaltext me-2\">Tax</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\">18% GST</span>\r\n </div>\r\n </div>\r\n <hr>\r\n\r\n <div class=\"d-flex flex-stack py-2\">\r\n <div class=\"fianlvaltext me-2\">Final Value</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\">$ {{priceValueDetails.finalValue}}</span>\r\n </div>\r\n </div>\r\n\r\n <hr>\r\n\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex justify-content-end py-3\"><a type=\"submit\"\r\n class=\"btn-outline btn needhelp me-4 mt-3\" (click)=\"revertOriginalPrice()\">Cancel</a><a\r\n (click)=\"pricingrevised()\" type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 mt-3 ng-star-inserted\"><span>Save\r\n </span></a></div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- pricing tab plan end -->\r\n\r\n\r\n\r\n <!-- submit plan start -->\r\n <div *ngIf=\"plan === 'storesubscription'\" class=\"row\">\r\n <div class=\"col-lg-8\">\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex justify-content-end py-3\"><a type=\"submit\"\r\n class=\"btn-outline btn needhelp me-4 mt-3\">Cancel</a><a\r\n (click)=\"pricingrevised()\" type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 mt-3 ng-star-inserted\"><span>Apply\r\n Changes\r\n </span></a></div>\r\n </div>\r\n\r\n </div>\r\n <!-- submit plan end -->\r\n </div>\r\n </div>\r\n </div>\r\n <!-- product info end -->\r\n\r\n <!-- payment invoice start -->\r\n <div class=\"col-xl-12 my-4 billingcard\">\r\n <form [formGroup]=\"paymentinvoiceform\">\r\n <div class=\"d-flex justify-content-between ps-4 pt-6\">\r\n <!--begin::Title-->\r\n <h3 class=\"align-items-start flex-column\">\r\n <span class=\"heading mb-2\">Payment and Invoice</span>\r\n </h3>\r\n <!--end::Title-->\r\n\r\n <!--begin::Toolbar-->\r\n <div class=\"card-toolbar mb-2\" *ngIf=\"paymentinvoiceshow\">\r\n <button (click)=\"onpaymentedit()\" type=\"submit\" \r\n class=\"btn-outline btn align-items-end needhelp me-4\"><span\r\n class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n <!--end::Toolbar-->\r\n </div>\r\n <!-- payment invoice form start -->\r\n <div class=\"d-flex flex-column row fv-row fv-plugins-icon-container py-4 px-4\">\r\n \r\n <div class=\"row\">\r\n <div class=\"col-lg-6\">\r\n <div class=\"form-group pt-1\">\r\n <label for=\"paymentcycle\" class=\"headingtext mb-2\">Enable Pro-Rate\r\n for Charges</label>\r\n <div class=\"d-flex mt-3\">\r\n <div class=\"form-check form-check-inline ps-0\"\r\n (click)=\"pricingType($event, 'before15')\">\r\n <input formControlName=\"radiooptions\"\r\n class=\"radio-custom cursor-pointer radioButton\" type=\"radio\"\r\n id=\"inlineRadio1\" value=\"before15\" name=\"radiooptions\" >\r\n <label\r\n class=\"form-check-label radio-custom-label mx-3 headingtext cursor-pointer\"\r\n for=\"inlineRadio1\">Before 15th of Month</label>\r\n </div>\r\n <div class=\"form-check form-check-inline ps-0\"\r\n (click)=\"pricingType($event, 'after15')\">\r\n <input class=\"radio-custom cursor-pointer radioButton\" type=\"radio\"\r\n formControlName=\"radiooptions\" id=\"inlineRadio2\"\r\n value=\"after15\" name=\"radiooptions\" readonly>\r\n <label\r\n class=\"form-check-label headingtext radio-custom-label mx-3 cursor-pointer\"\r\n for=\"inlineRadio1\">After 15th of Month</label>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n <div class=\"form-group pt-6\">\r\n <label for=\"paymentcycle\" class=\"headingtext mb-2\">Payment\r\n Cycle</label>\r\n\r\n <div class=\"position-relative\">\r\n <div class=\"form-select dropselect\" id=\"paymentcycle\"\r\n (click)=\"openDropdown($event)\"\r\n aria-label=\"Default select example\">{{selectedIssue ===\r\n 'monthly' ? 'Monthly' : selectedIssue === 'quaterly' ?\r\n 'Quaterly' : 'Annual'}}</div>\r\n <div *ngIf=\"dropDown && !paymentinvoiceshow\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let item of dropdownItems\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.selectedIssue === item.value ? 'active' : ''\" \r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"selectItem(item.value)\">{{item.name}}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group pt-6\">\r\n <label for=\"invoiceTo\" class=\"headingtext mb-2\">Generate\r\n Invoice To <span> <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2706_25324)\">\r\n <path\r\n d=\"M7.99967 10.6663V7.99967M7.99967 5.33301H8.00634M14.6663 7.99967C14.6663 11.6816 11.6816 14.6663 7.99967 14.6663C4.31778 14.6663 1.33301 11.6816 1.33301 7.99967C1.33301 4.31778 4.31778 1.33301 7.99967 1.33301C11.6816 1.33301 14.6663 4.31778 14.6663 7.99967Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2706_25324\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></label>\r\n\r\n <div class=\"outer-container\">\r\n <div class=\" input-container form-control\">\r\n <ng-container\r\n *ngFor=\"let invoiceTo of generateinvoiceList; let i = index\">\r\n\r\n <span class=\"chip\">\r\n <span class=\"me-3\">{{invoiceTo}}</span>\r\n <span *ngIf=\"paymentinvoiceform.enabled\"\r\n (click)=\"removeChip(i)\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"12\" height=\"12\" viewBox=\"0 0 12 12\"\r\n fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span>\r\n </ng-container> \r\n <input style=\"min-height: 44px;\" formControlName=\"invoiceTo\" \r\n (keydown)=\"onKeyDown($event)\" type=\"text\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group pt-6\">\r\n <label for=\"generateinvoiceon\" class=\"headingtext mb-2\">Generate\r\n Invoice\r\n On\r\n </label>\r\n <div class=\"position-relative\">\r\n <div class=\"form-select dropselect\" id=\"generateinvoiceon\"\r\n (click)=\"invoiceDropdown($event)\"\r\n aria-label=\"Default select example\">{{invoiceonIssue ===\r\n 'lastday' ? 'Last Day of the Month' :'25th of the Month'}}\r\n </div>\r\n <div *ngIf=\"invoicedropDown && !paymentinvoiceshow\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let invoiceitem of generateinvoiceon\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.invoiceonIssue === invoiceitem.value ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"invoiceItem(invoiceitem.value)\">\r\n {{invoiceitem.name}}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-lg-6\">\r\n <div class=\"form-group pt-1\">\r\n <label for=\"paymenttype\" class=\"headingtext mb-2\">Payment\r\n Type</label>\r\n <div class=\"position-relative\">\r\n <div class=\"form-select dropselect\" id=\"paymenttype\"\r\n (click)=\"paymenttypeDropdown($event)\"\r\n aria-label=\"Default select example\">{{paymentIssue ===\r\n 'online' ? 'online Payment' :'Bank Transfer'}}</div>\r\n <div *ngIf=\"paymenttypedropDown && !paymentinvoiceshow\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let paymentitem of paymenttype\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.paymentIssue === paymentitem.value ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"paymentItem(paymentitem.value)\">\r\n {{paymentitem.name}}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group pt-6\">\r\n <label for=\"currency\" class=\"headingtext mb-2\">Currency</label>\r\n <div class=\"position-relative\">\r\n <div class=\"form-select dropselect\" id=\"currency\"\r\n (click)=\"currencyDropdown($event)\"\r\n aria-label=\"Default select example\">{{currencyIssue === 'inr'\r\n ? 'INR' :'Doller'}}</div>\r\n <div *ngIf=\"currencydropDown && !paymentinvoiceshow\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let currencyitem of currencytype\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.currencyIssue === currencyitem.value ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"currencyItem(currencyitem.value)\">\r\n {{currencyitem.name}}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group pt-6\">\r\n <label for=\"sendpayment\" class=\"headingtext mb-2\">Send Payment\r\n Agreement<span class=\"ms-2\"> <svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2706_25324)\">\r\n <path\r\n d=\"M7.99967 10.6663V7.99967M7.99967 5.33301H8.00634M14.6663 7.99967C14.6663 11.6816 11.6816 14.6663 7.99967 14.6663C4.31778 14.6663 1.33301 11.6816 1.33301 7.99967C1.33301 4.31778 4.31778 1.33301 7.99967 1.33301C11.6816 1.33301 14.6663 4.31778 14.6663 7.99967Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2706_25324\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></label>\r\n\r\n\r\n <div class=\"outer-container\">\r\n <div class=\" input-container form-control\">\r\n <ng-container\r\n *ngFor=\"let paymentAgreementTo of paymentallowedList; let i = index\">\r\n <span class=\"chip\">\r\n <span class=\"me-3\">{{paymentAgreementTo}}</span>\r\n <span *ngIf=\"paymentinvoiceform.enabled\"\r\n (click)=\"sendpaymentremoveChip(i)\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"12\" height=\"12\" viewBox=\"0 0 12 12\"\r\n fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span>\r\n </ng-container>\r\n <input style=\"min-height: 44px;\"\r\n formControlName=\"paymentAgreementTo\" \r\n (keydown)=\"sendpaymentonKeyDown($event)\" type=\"text\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group pt-6\">\r\n <label for=\"extendPaymentPeriodDays\" class=\" headingtext mb-2\">Extend Payment\r\n Period Days </label>\r\n <div class=\"w-lg-100 position-relative\">\r\n <div\r\n class=\"position-absolute translate-middle-y top-50 me-5 ps-3 ticketDays\">\r\n <span class=\"svg-icon toggle-off svg-icon-1\"\r\n (click)=\"paymentinvoiceform.get('extendPaymentPeriodDays')?.value > 0 && paymentinvoiceform.enabled ? paymentinvoiceform.get('extendPaymentPeriodDays')?.setValue(paymentinvoiceform.get('extendPaymentPeriodDays')?.value - 1) : null\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M4.16699 10H15.8337\" stroke=\"#667085\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n <input type=\"text\" class=\"form-control\" id=\"extendPaymentPeriodDays\" readonly\r\n formControlName=\"extendPaymentPeriodDays\" style=\"text-align: center;\" [(ngModel)]=\"extendPaymentPeriodDays\"\r\n autocomplete=\"off\"/>\r\n <div\r\n class=\"position-absolute translate-middle-y top-50 end-0 me-3\">\r\n <span class=\"svg-icon toggle-on svg-icon-1 ticketDays\"\r\n (click)=\"paymentinvoiceform.enabled ? paymentinvoiceform.get('extendPaymentPeriodDays')?.setValue(paymentinvoiceform.get('extendPaymentPeriodDays')?.value + 1) : null\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\"\r\n height=\"16\" viewBox=\"0 0 17 16\" fill=\"none\">\r\n <path\r\n d=\"M8.49967 3.33301V12.6663M3.83301 7.99967H13.1663\"\r\n stroke=\"#667085\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n \r\n <div class=\"d-flex justify-content-end mt-6\" *ngIf=\"!paymentinvoiceshow\">\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex justify-content-end\"><a type=\"submit\"\r\n class=\"btn-outline btn needhelp me-4\"(click)=\"onpaymentCancel()\">Cancel</a><a type=\"button\"\r\n tabindex=\"0\"\r\n class=\"btn btn-primary px-4 ng-star-inserted\" (click)=\"onpaymentSubmit()\"><span>Apply\r\n Changes\r\n </span></a></div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <!-- payment invoice form end -->\r\n \r\n </form>\r\n </div>\r\n <!-- payment invoice end -->\r\n\r\n </ng-template>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <!-- subscription config End -->\r\n\r\n <!--Invoices start -->\r\n <div class=\"card mt-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>Invoices <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <div class=\"card-header Historyheader\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Payment History</span>\r\n\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\"\r\n rx=\"1\" transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\">\r\n </rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input [(ngModel)]=\"searchInput\" type=\"text\" class=\"form-control ps-14 me-4\"\r\n placeholder=\"Search\" autocomplete=\"off\" (change)=\"searchField()\" />\r\n\r\n <div class=\"me-3 monthwidth\">\r\n <div class=\"dropdown\">\r\n <select class=\"form-select \" aria-label=\"Default select example\">\r\n <option selected>Current Month</option>\r\n <option value=\"1\">Previous Month</option>\r\n <option value=\"2\">Last 3 Mon</option>\r\n\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <button (click)=\"creditnote()\" type=\"button\"\r\n class=\"btn-outline btn align-items-end text-nowrap me-4\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M10.4993 4.16675V15.8334M4.66602 10.0001H16.3327\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span>Credit Note</span> </button>\r\n <button type=\"button\" (click)=\"onExport()\"\r\n class=\"btn-outline btn align-items-end text-nowrap me-4\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\"></span> Export</button>\r\n\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-template>\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border\">\r\n <thead>\r\n <tr>\r\n <th>Invoice #</th>\r\n <th>Billing date</th>\r\n <th>Stores</th>\r\n <th>Products</th>\r\n <th>Amount</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let invoice of invoiceList\">\r\n <td>\r\n <div class=\"table-title-primary invoice\">{{invoice?.invoice}}</div>\r\n <span class=\"badge badge-light-success\">{{invoice?.status}}</span>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{invoice?.billingDate}} </div>\r\n\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{invoice?.stores}}</div>\r\n\r\n </td>\r\n\r\n <td><span *ngFor=\"let product of invoice?.products; let i = index\"><span\r\n [class]=\"getColorClass(product)\"\r\n *ngIf=\"i<2\">{{product}}</span><span class=\"productextend\"\r\n *ngIf=\"i>=2\">+{{invoice?.products.length - 2 }}</span></span>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{invoice?.amount}}</div>\r\n </td>\r\n <td>\r\n <span class=\"pointer\"><svg class=\"mt-3\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </td>\r\n\r\n </tr>\r\n </tbody>\r\n </table>\r\n <lib-pagination class=\"text-start\" [itemsPerPage]=\"itemsPerPage\" [currentPage]=\"currentPage\"\r\n [totalItems]=\"totalItems\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <!--Invoices end -->\r\n </div>\r\n </div>", styles: [".accordion-button:not(.collapsed){color:none!important;background-color:#fff!important;box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed){color:none!important;background-color:var(--bs-accordion-active-bg);box-shadow:none!important}.billingcard{border-radius:12px;border:1px solid var(--Gray-300, #D0D5DD);background:#fff}.heading{color:var(--Gray-900, #101828);font-size:18px;font-weight:600}.subheading{color:var(--Gray-900, #101828);font-size:16px;font-weight:400;line-height:24px}.sub{color:var(--Gray-900, #101828);font-size:14px;font-weight:400;line-height:20px}.pricingtext{color:var(--Gray-800, #1D2939);font-size:30px;font-weight:600;line-height:38px}.pricingspan{color:var(--Gray-500, #667085);font-size:18px;font-weight:500;line-height:28px}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}input [type=text] [disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{background-color:#f9fafb!important}input[type=text]{color:#101828;border:1px solid #D0D5DD!important;box-shadow:0 1px 2px #1018280d;border-radius:8px;font-size:16px;width:100%;padding:10px 14px;font-weight:400;line-height:24px}input:active [type=text],input:focus [type=text],input:focus-visible [type=text]{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD)!important;box-shadow:0 1px 2px #1018280d;outline:none!important;background:var(--Gray-50, #F9FAFB)}.mainheading{color:var(--Black, #101828);font-size:18px;font-weight:600;line-height:28px}.trail{color:var(--Gray-500, #667085);font-size:18px;font-weight:600;line-height:28px}.daysleft{color:var(--Error-700, #B42318);text-align:center;font-size:12px;font-weight:500;line-height:18px}.subtext{color:var(--Gray-500, #667085);font-size:12px;font-weight:500;line-height:18px}.needhelp{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:20px;text-transform:capitalize}.billingtext{color:#000;font-size:20px;font-weight:500;line-height:30px}.billingdetails{color:var(--Gray-500, #667085);font-size:16px;font-weight:500;line-height:24px}.billingmain{color:#000;font-size:16px;font-weight:600;line-height:24px}.update{border-radius:8px;border:1px solid var(--Primary-50, #EAF8FF);box-shadow:0 1px 2px #1018280d;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.address{border-radius:8px;border:1px solid var(--Primary-600, #00A3FF);background:var(--Primary-600, #00A3FF);box-shadow:0 1px 2px #1018280d}.billing{border-radius:12px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-25, #F6FCFF)}.activePlanBtn{border-radius:6px;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a!important;color:var(--Gray-700, #344054);font-size:14px!important;font-weight:500!important;line-height:20px}.inactivePlanBtn{color:var(--Gray-500, #667085)!important;font-size:14px;font-weight:500!important;line-height:20px}.activePlanBtnprimary{border-radius:6px;background:var(--Primary-50, #EAF8FF)!important;box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a!important;color:var(--Primary-700, #009BF3);font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.nav-group{background:var(--Gray-50, #F9FAFB)!important;border-radius:8px!important;border:1px solid var(--Gray-100, #F2F4F7)!important;width:fit-content}.form-check-label{color:var(--Gray-700, #344054)!important}::ng-deep .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#fff!important;border:1px solid black;width:100%!important}.fieldwidth{width:100%!important;background-color:#fff!important}.text-sub{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:400!important;line-height:20px}.border-val{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}.table-title-primary{color:var(--Primary-700, #009BF3)!important;font-weight:500!important}.table-sub{line-height:30px!important;color:var(--Gray-500, #667085)!important}.illustcontent{color:var(--Gray-900, #101828);font-size:16px;font-weight:600}.nav-item .nav-link{color:var(--Gray-500, #667085);font-size:16px;font-weight:500}.pointer{cursor:pointer}.invoice{width:120%}.monthwidth{width:65%}.storeinput{width:10%!important;box-shadow:none!important}.storerange{width:15%!important}.discountprice{width:11%!important}.negprice{width:14%}.discountheader{width:12%}.negheader{width:16%}.bolddata{font-weight:700!important;color:var(--Gray-700, #344054)!important}.producttext{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.table:not(.table-bordered) tbody tr:last-child{border-bottom:1px solid #EAECF0!important}hr{border:1px solid var(--Gray-300, #D0D5DD);height:1px!important}.fianlvaltext{color:var(--Gray-500, #667085);font-size:16px;font-weight:600;line-height:24px}.input-group-text{background-color:#fff!important;color:var(--Gray-400, #98A2B3);font-size:16px;font-weight:400;line-height:24px}.discountinput{width:80px!important;text-align:center;color:var(--Gray-500, #667085);font-size:18px;font-weight:500;line-height:28px}.radio-custom{width:20px;height:20px;background-color:#eaf8ff}.radio-custom,.radio-custom-label{display:inline-block;vertical-align:middle;margin:8px 0;cursor:pointer}.radio-custom-label{position:relative}.radio-custom:checked+.radio-custom-label:before{background:#00a3ff;box-shadow:inset 0 0 0 4.5px #eaf8ff;width:16px;height:16px}.outer-container{position:relative}.outer-container .form-control{padding-top:0;padding-bottom:0}.outer-container .input-container{border:1px solid black;height:100%;width:100%;display:flex;flex-wrap:wrap}.outer-container .input-container input{all:unset;flex:1;min-width:50px;border:none!important}.outer-container .input-container .chip{margin:10px 0 10px 10px;padding:3px 10px;border-radius:16px;background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.outer-container .input-container .chip:nth-child(1){margin-left:0}.form-control{display:block;padding:.5rem 1rem;font-size:1.1rem;font-weight:400;color:var(--Gray-500, #667085);-webkit-appearance:none;appearance:none;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}tr{vertical-align:middle!important}.levelviewtext{color:var(--Gray-800, #1D2939);font-family:Inter;font-size:18px;border:none!important;font-weight:600;line-height:28px;padding-left:0!important}.subscribedtext{color:var(--Primary-700, #009BF3);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:45px!important}.badge-light-grey{border-radius:16px;background:var(--Gray-100, #F2F4F7);display:flex;padding:4px 12px;justify-content:center;align-items:center;color:var(--Gray-700, #344054);text-align:center;font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.daysleft{color:var(--Gray-800, #1D2939);font-family:Inter;font-size:24px;font-style:normal;font-weight:500;line-height:32px}.btn-danger{border-radius:8px;border:1px solid var(--Error-600, #D92D20);background:var(--Error-600, #D92D20);box-shadow:0 1px 2px #1018280d}.subtextbold{color:var(--Gray-500, #667085);font-family:Inter;font-size:12px;font-style:normal;font-weight:700;line-height:18px}.toastcard{border-radius:4px;border-left:2px solid #00A3FF;background:#f5f8fa;box-shadow:0 4px 16px #0000001a;display:flex;height:68px;padding:6px 12px 6px 16px;align-items:center;gap:16px;align-self:stretch}.toasttext{color:var(--Gray-500, #667085);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}.billingupdate{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);color:var(--Gray-700, #344054);font-family:Inter;font-size:12px;font-weight:600;line-height:18px;text-transform:capitalize}.pricingtab{width:115%}.items:hover,.tems.focus,.items.active,.camera.focus-visible{background:var(--Gray-50, #F9FAFB)}.dropselect{color:var(--Gray-500, #667085);font-family:Inter;font-size:16px;font-style:normal;font-weight:400;line-height:24px}.Historyheader{padding:0 .25rem}.product-traffic{color:var(--Blue-700, #175CD3);text-align:center;font-family:Inter;font-size:12px;font-weight:500;border-radius:16px;background:var(--Blue-50, #EFF8FF)}.productextend{border-radius:16px;background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054);text-align:center;font-family:Inter;font-size:12px;font-weight:500;padding:2px 8px}.product-zone{border-radius:16px;background:var(--Indigo-50, #EEF4FF);padding:2px 8px;color:var(--Indigo-700, #3538CD);text-align:center;font-family:Inter;font-size:12px;font-weight:500}.product-sop{color:var(--Purple-700, #5925DC);text-align:center;font-family:Inter;font-size:12px;font-weight:500;border-radius:16px;background:var(--Purple-50, #F4F3FF)}.prioritysupport{color:var(--Pink-700, #C11574);text-align:center;font-family:Inter;font-size:12px;font-weight:500;border-radius:16px;background:var(--Pink-50, #FDF2FA)}::ng-deep .custom-tooltip{border-radius:8px;background:var(--White, #FFF);padding:8px 12px;color:var(--Gray-700, #344054);text-align:center;font-family:Inter;font-size:12px;font-weight:600;line-height:18px}.plancard{width:65%!important}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgbAccordionButton, selector: "button[ngbAccordionButton]" }, { kind: "directive", type: i1.NgbAccordionDirective, selector: "[ngbAccordion]", inputs: ["animation", "closeOthers", "destroyOnHide"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordion"] }, { kind: "directive", type: i1.NgbAccordionItem, selector: "[ngbAccordionItem]", inputs: ["ngbAccordionItem", "destroyOnHide", "disabled", "collapsed"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordionItem"] }, { kind: "directive", type: i1.NgbAccordionHeader, selector: "[ngbAccordionHeader]" }, { kind: "directive", type: i1.NgbAccordionBody, selector: "[ngbAccordionBody]" }, { kind: "directive", type: i1.NgbAccordionCollapse, selector: "[ngbAccordionCollapse]", exportAs: ["ngbAccordionCollapse"] }, { kind: "directive", type: i1.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "component", type: i4.FiltersComponent, selector: "lib-filters", inputs: ["dataObject"], outputs: ["appliedFilters"] }, { kind: "component", type: i7.MultidropdownComponent, selector: "lib-multidropdown", inputs: ["text", "product", "productList", "type", "stores", "clientId", "selectAll", "clientProduct"], outputs: ["data"] }] });
|
|
959
|
+
onDocumentClick(event) {
|
|
960
|
+
if (this.paymenttypedropDown) {
|
|
961
|
+
this.paymenttypedropDown = false;
|
|
962
|
+
}
|
|
963
|
+
if (this.dropDown) {
|
|
964
|
+
this.dropDown = false;
|
|
965
|
+
}
|
|
966
|
+
if (this.currencydropDown) {
|
|
967
|
+
this.currencydropDown = false;
|
|
968
|
+
}
|
|
969
|
+
if (this.invoicedropDown) {
|
|
970
|
+
this.invoicedropDown = false;
|
|
971
|
+
}
|
|
972
|
+
if (this.notificationDetails?.notificationList) {
|
|
973
|
+
this.notificationDetails.notificationList.forEach((item) => {
|
|
974
|
+
item.producttraildropDown = false;
|
|
975
|
+
});
|
|
976
|
+
}
|
|
977
|
+
}
|
|
978
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: PaymentsSubscriptionComponent, deps: [{ token: i1.NgbModal }, { token: i2.FormBuilder }, { token: i3.PaymentSubscriptionService }, { token: i0.ChangeDetectorRef }, { token: i4.ToastService }, { token: i5.GlobalStateService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
979
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: PaymentsSubscriptionComponent, selector: "lib-payments-subscription", host: { listeners: { "document:click": "onDocumentClick($event)" } }, ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div ngbAccordion [closeOthers]=\"true\">\r\n <!-- Billing & subscription start -->\r\n <div class=\"card\" ngbAccordionItem [collapsed]=\"openaccordian\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>Billing & Subscription<div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <!--begin::plan details Card-->\r\n <div class=\"col-xl-12 billingcard\">\r\n <div class=\" h-xl-100 flex-row flex-stack flex-wrap p-6\">\r\n <div class=\"toastcard col-md-12\"\r\n *ngIf=\"clientinfo?.currentPlanInfo?.paymentStatus==='due' && clientinfo?.currentPlanInfo?.dueLimitReached===false\">\r\n <div class=\"d-flex align-items-center justify-content-end\">\r\n <div class=\"symbol symbol-30px me-5\"><span>\r\n <img src=\"./assets/tango/custompopup-Icons/danger-alert-primary.svg\"\r\n alt=\"\">\r\n </span>\r\n </div>\r\n <span class=\"toasttext d-block\">Kind Reminder: You have a reached your due\r\n limit ,To continue enjoying our services, please renew your subscription\r\n by making the payment. Thank you for your cooperation</span>\r\n <span><a type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 ng-star-inserted\"\r\n style=\"white-space: nowrap;\"><span class=\"create\">Pay Now\r\n </span></a></span>\r\n </div>\r\n\r\n </div>\r\n <div class=\"toastcard col-md-12\"\r\n *ngIf=\"clientinfo?.currentPlanInfo?.paymentStatus==='due' && clientinfo?.currentPlanInfo?.dueLimitReached===true\">\r\n <div class=\"d-flex align-items-center justify-content-end\">\r\n <div class=\"symbol symbol-30px me-5\"><span>\r\n <img src=\"./assets/tango/custompopup-Icons/danger-alert-primary.svg\"\r\n alt=\"\">\r\n </span>\r\n </div>\r\n <span class=\"toasttext d-block\">Kind Reminder: We haven't received your\r\n payment yet. To continue enjoying our services, please renew your\r\n subscription by making the payment. Thank you for your\r\n cooperation</span>\r\n <span><a type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 ng-star-inserted\"\r\n style=\"white-space: nowrap;\"><span class=\"create\">Pay Now\r\n </span></a></span>\r\n </div>\r\n\r\n </div>\r\n <div class=\"d-flex flex-column mt-6\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isView\">\r\n <div class=\"d-flex align-items-center justify-content-between border-val mb-2\">\r\n Current Plan Info<span class=\"badge-light-grey ms-2\">\r\n {{clientinfo?.currentPlanInfo?.priceType\r\n || '--'}}</span>\r\n </div>\r\n <div class=\"d-flex align-items-center pricingtext my-2\">\r\n \u20B9 {{clientinfo?.currentPlanInfo?.price\r\n || '--'}}<span class=\"pricingspan ms-2\">Store/Month</span>\r\n </div>\r\n <hr>\r\n <div class=\"d-flex justify-content-between\">\r\n\r\n\r\n <div class=\"d-flex justify-content-start flex-column plancard\">\r\n <div class=\" heading mb-3\">\r\n {{clientinfo?.currentPlanInfo?.subscriptionType\r\n || '--'}}\r\n plan - {{clientinfo?.currentPlanInfo?.storeCount\r\n || '--'}}\r\n <span class=\"subheading ms-2\">store\r\n onboarded</span>\r\n <span ngbTooltip=\"{{ product.toolTip }}\" placement=\"top\"\r\n triggers=\"mouseenter:mouseleave\" tooltipClass=\"custom-tooltip\"\r\n class=\"badge badge-light-warning ms-2\"\r\n *ngFor=\"let product of clientinfo?.currentPlanInfo?.trialProducts\">\r\n {{ product.aliseProductName }}\r\n <img class=\"ms-2\"\r\n src=\"./assets/tango/custompopup-Icons/clockexpiry-icon.svg\"\r\n alt=\"\"> </span>\r\n <span tooltipClass=\"custom-tooltip\"\r\n ngbTooltip=\"{{ product.toolTip }}\" placement=\"top\"\r\n triggers=\"mouseenter:mouseleave\"\r\n class=\"badge badge-light-primary ms-2\"\r\n *ngFor=\"let product of clientinfo?.currentPlanInfo?.expiredProducts\">\r\n {{ product.aliseProductName }}\r\n <img class=\"ms-2\"\r\n src=\"./assets/tango/custompopup-Icons/primary-clock-icon.svg\"\r\n alt=\"\"> </span>\r\n </div>\r\n <span class=\"sub d-block\">Cameras :\r\n {{clientinfo?.currentPlanInfo?.totalCamera\r\n || '--'}} | Avg sq.ft : {{clientinfo?.currentPlanInfo?.storeSize\r\n || '--'}} sq.ft | Products : <span\r\n *ngFor=\"let product of clientinfo?.currentPlanInfo?.liveProducts\">\r\n {{ product.aliseProductName }} </span>\r\n </span>\r\n </div>\r\n\r\n <div class=\" d-flex align-items-end\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\">\r\n <span\r\n [disableTooltip]=\"!clientinfo?.currentPlanInfo?.pendingClientRequest\"\r\n ngbTooltip=\"Request is Already initiated waiting for admin approval\"\r\n placement=\"top\" triggers=\"mouseenter:mouseleave\"\r\n tooltipClass=\"custom-tooltip\">\r\n <button type=\"submit\"\r\n [disabled]=\"clientinfo?.currentPlanInfo?.pendingClientRequest\"\r\n (click)=\"needhelp()\" class=\"btn-outline btn needhelp me-4\"><span\r\n class=\"me-2\"><svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_1965_2301)\">\r\n <path\r\n d=\"M7.57533 7.50033C7.77125 6.94338 8.15795 6.47375 8.66695 6.1746C9.17596 5.87546 9.77441 5.76611 10.3563 5.86592C10.9382 5.96573 11.466 6.26826 11.8462 6.71993C12.2264 7.1716 12.4345 7.74326 12.4337 8.33366C12.4337 10.0003 9.93366 10.8337 9.93366 10.8337M10.0003 14.167H10.0087M18.3337 10.0003C18.3337 14.6027 14.6027 18.3337 10.0003 18.3337C5.39795 18.3337 1.66699 14.6027 1.66699 10.0003C1.66699 5.39795 5.39795 1.66699 10.0003 1.66699C14.6027 1.66699 18.3337 5.39795 18.3337 10.0003Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1965_2301\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"> Need Help</span>\r\n </button>\r\n\r\n </span>\r\n <button (click)=\"upgradeplan()\" type=\"button\" tabindex=\"0\"\r\n class=\"btn update btn-lg btn-light btn-active-light-primary px-4 ng-star-inserted\"\r\n style=\"white-space: nowrap;\"><span class=\"create\">Upgrade Plan\r\n </span></button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <!--end::plan details Card-->\r\n\r\n\r\n <div class=\"row gx-4 mt-4\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isView\">\r\n <!--begin::Bank details Card-->\r\n <div class=\"col-xl-7 \">\r\n <div class=\"billingcard h-xl-100 flex-row flex-stack flex-wrap p-6\">\r\n <div class=\"d-flex flex-column py-2\">\r\n <div class=\"d-flex align-items-center billingtext mb-8\">\r\n Bank Details\r\n </div>\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">Payment Type</div>\r\n <div class=\"billingmain\">Virtual Acc\r\n </div>\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">Account No </div>\r\n <div class=\"billingmain\"> {{clientinfo?.bankDetails?.accountNo ||\r\n '--'}}\r\n </div>\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">IFSC Code</div>\r\n <div class=\"billingmain\"> {{clientinfo?.bankDetails?.ifscCode ||\r\n '--'}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-flex align-items-center mt-4\">\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">SWIFT Code</div>\r\n <div class=\"billingmain\"> {{clientinfo?.bankDetails?.swiftCode ||\r\n '--'}}\r\n </div>\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">Branch </div>\r\n <div class=\"billingmain\">{{clientinfo?.bankDetails?.branch || '--'}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!--end::Bank details Card-->\r\n\r\n\r\n <div class=\"col-xl-5 \"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isView\">\r\n\r\n <!-- Add Billing start -->\r\n <div class=\"billing h-xl-100 w-100 flex-row flex-stack flex-wrap p-6\"\r\n *ngIf=\"!clientinfo?.billingDetails?.billingAddress\">\r\n <div class=\"modal-content align-items-center mt-2\">\r\n <div class=\"d-flex\">\r\n <div><img src=\"./assets/tango/custompopup-Icons/addbilling_icon.svg\"\r\n alt=\"\"></div>\r\n\r\n </div>\r\n <div class=\"heading mt-4 ms-1\">Add billing address</div>\r\n <div class=\"d-flex justify-content-center mt-8 w-100\">\r\n <button type=\"button\" tabindex=\"0\" (click)=\"update()\"\r\n class=\"btn btn-primary ms-2 ng-star-inserted address w-100\"\r\n style=\"white-space: nowrap;\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><span\r\n class=\"submit\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0003 4.16675V15.8334M4.16699 10.0001H15.8337\"\r\n stroke=\"white\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span> New Address </button>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <!-- Add Billing end -->\r\n <!-- Billing Information start -->\r\n <div class=\"billingcard h-xl-100 flex-row flex-stack flex-wrap p-6\"\r\n *ngIf=\"clientinfo?.billingDetails?.billingAddress && clientinfo?.billingDetails?.billingAddress!==''\">\r\n <div class=\"d-flex flex-column py-2\">\r\n <div\r\n class=\"d-flex align-items-center justify-content-between billingtext mb-5\">\r\n Billing\r\n <a type=\"submit\" (click)=\"update()\"\r\n class=\"btn update btn-lg btn-light btn-active-light-primary px-4 ng-star-inserted\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><span\r\n class=\"mt-2\">\r\n Update</span></a>\r\n\r\n </div>\r\n\r\n <div class=\"align-items-center\">\r\n\r\n <div class=\"billingdetails\">Next Billing Date</div>\r\n <div class=\"billingmain\">\r\n {{clientinfo?.billingDetails?.nextBillingDate || '--'}}\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <div class=\"align-items-center mt-6\">\r\n <div class=\"billingdetails\">Billing Address</div>\r\n <div class=\"billingmain\">\r\n {{clientinfo?.billingDetails?.billingAddress ||\r\n '--'}}\r\n </div>\r\n\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <!-- Billing Information End -->\r\n\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Billing & subscription End -->\r\n\r\n <!--subscription Config start -->\r\n <div class=\"card mt-6\" ngbAccordionItem *ngIf=\"(gs.userAccess | async)?.userType === 'tango' && (gs.userAccess | async)?.settings_paymentSubscriptions_isView\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>Subscription Config <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n\r\n <ng-template>\r\n <div class=\"col-xl-12 billingcard\">\r\n <div class=\" h-xl-100 flex-row flex-stack flex-wrap mx-5 pt-4\">\r\n <div class=\"d-flex flex-column\">\r\n <!-- subscription info header start -->\r\n <div class=\"d-flex justify-content-between\">\r\n\r\n <div *ngIf=\"showNavGroup\" class=\"nav-group nav-group-outline mt-2\">\r\n <button\r\n class=\"btn btn-color-gray-600 btn-active btn-active-secondary px-6 py-3 me-2\"\r\n [ngClass]=\"plan === 'subscription'? 'activePlanBtn':'inactivePlanBtn'\"\r\n data-kt-plan=\"subscription\" (click)=\"selectPlan('subscription')\">\r\n Subscription\r\n </button>\r\n\r\n <button\r\n class=\"btn btn-color-gray-600 btn-active btn-active-secondary px-6 py-3\"\r\n [ngClass]=\"plan === 'pricing'? 'activePlanBtn':'inactivePlanBtn'\"\r\n data-kt-plan=\"pricing\" (click)=\"selectPlan('pricing')\">\r\n Pricing\r\n </button>\r\n </div>\r\n </div>\r\n <!-- subscription info header end -->\r\n\r\n <!-- subscription tab starts -->\r\n <div *ngIf=\"plan === 'subscription'\">\r\n <!-- client request card start -->\r\n <div class=\"row gx-4 mt-4\">\r\n <!--begin::Bank details Card-->\r\n <div class=\"col-xl-6\" [ngClass]=\"i > 1? 'mt-5' : ''\"\r\n *ngFor=\"let notification of notificationDetails.notificationList;let i= index;\">\r\n <!-- Billing Information start -->\r\n <div\r\n class=\"billingcard h-xl-100 flex-row flex-stack flex-wrap mb-6 px-6\">\r\n <div class=\"d-flex flex-column mt-10\"\r\n *ngIf=\"notification.category === 'Trial'\">\r\n <div\r\n class=\"d-flex align-items-center justify-content-between levelviewtext mb-2\">\r\n {{notification.name}} <span\r\n class=\"badge-light-grey ms-2\">{{currentPlan}}</span>\r\n </div>\r\n <div class=\"subtext\">Kindly make necessary action for trial\r\n request or skip product to subscription list</div>\r\n\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex mt-9\"><a\r\n (click)=\"approvetrial(notification,'cancel')\"\r\n type=\"submit\"\r\n class=\"btn-outline btn needhelp me-6 mt-3\"><span\r\n class=\"mt-6\">Skip Trail</span></a><a\r\n (click)=\"approvetrial(notification,'approve')\"\r\n type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 mt-3 ng-star-inserted\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><span>Approve\r\n Trail\r\n </span></a></div>\r\n </div>\r\n <div class=\"d-flex flex-column mt-10\"\r\n *ngIf=\"notification.category === 'unsubscribe'\">\r\n <div\r\n class=\"d-flex align-items-center justify-content-between levelviewtext mb-2\">\r\n Unsubscribe Request\r\n </div>\r\n <div class=\"subtext\">Client has requested to unsubscribe\r\n <span class=\"subtextbold\">Tango Suite</span>\r\n </div>\r\n\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex mt-9\"><a type=\"submit\"\r\n class=\"btn-outline btn needhelp me-6 mt-3\"\r\n (click)=\"cancelUnsubscribe(notification,'cancel')\"><span\r\n class=\"mt-6\">Cancel</span></a><a\r\n (click)=\"approveUnsubscribe(notification,'unsubscribe')\"\r\n type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-danger px-4 mt-3 ng-star-inserted\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><span>Approve\r\n </span></a></div>\r\n </div>\r\n <div class=\"d-flex flex-column mt-10\"\r\n *ngIf=\"notification.category === 'trial product'\">\r\n <div\r\n class=\"d-flex align-items-center justify-content-between levelviewtext mb-2\">\r\n {{notification.name}} <span\r\n class=\"badge-light-grey ms-2\">{{currentPlan}}</span>\r\n </div>\r\n <div class=\"subtext\">Current Plan Info</div>\r\n <div class=\"row mt-7\">\r\n <div class=\"col-lg-8 d-flex\">\r\n <div><svg id=\"circle-chart\" width=\"94\" height=\"94\"\r\n viewBox=\"0 0 100 100\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <!-- Background circle -->\r\n <circle cx=\"50\" cy=\"50\" r=\"40\" fill=\"none\"\r\n stroke=\"#f0f0f0\" stroke-width=\"8\">\r\n </circle>\r\n <!-- Foreground circle -->\r\n <circle id=\"progress-circle-{{i}}\" cx=\"50\"\r\n cy=\"50\" r=\"40\" fill=\"none\"\r\n stroke=\"#007bff\" stroke-width=\"8\"\r\n stroke-dasharray=\"251.2\"\r\n [attr.stroke-dashoffset]=\"updateCircleChart(notification.percentage,i)\">\r\n </circle>\r\n <!-- Text displaying percentage -->\r\n <text id=\"percentage-text-{{i}}\" x=\"50\"\r\n y=\"54\" class=\"producttext\"\r\n text-anchor=\"middle\"\r\n fill=\"#333333\">{{notification.percentage}}%</text>\r\n </svg></div>\r\n <div\r\n class=\"align-items-start justify-content-between daysleft ms-6 mt-3\">\r\n {{notification.day}} Days Left\r\n <div class=\"align-items-start trail mt-2 me-14\">\r\n Free trial</div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"col-lg-4 mt-6\">\r\n <div class=\"position-relative\">\r\n <div (click)=\"producttrailDropdown($event,i)\">\r\n <span\r\n class=\"justify-content-end cursor-pointer ms-20\"><svg\r\n width=\"60\" height=\"60\"\r\n viewBox=\"0 0 60 60\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g\r\n filter=\"url(#filter0_d_5221_60143)\">\r\n <rect x=\"2\" y=\"1\" width=\"56\"\r\n height=\"56\" rx=\"8\"\r\n fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"55\"\r\n height=\"55\" rx=\"7.5\"\r\n stroke=\"#D0D5DD\" />\r\n <g\r\n clip-path=\"url(#clip0_5221_60143)\">\r\n <path\r\n d=\"M30 32C31.6569 32 33 30.6569 33 29C33 27.3431 31.6569 26 30 26C28.3431 26 27 27.3431 27 29C27 30.6569 28.3431 32 30 32Z\"\r\n stroke=\"#344054\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M37.4 32C37.2669 32.3016 37.2272 32.6362 37.286 32.9606C37.3448 33.285 37.4995 33.5843 37.73 33.82L37.79 33.88C37.976 34.0657 38.1235 34.2863 38.2241 34.5291C38.3248 34.7719 38.3766 35.0322 38.3766 35.295C38.3766 35.5578 38.3248 35.8181 38.2241 36.0609C38.1235 36.3037 37.976 36.5243 37.79 36.71C37.6043 36.896 37.3837 37.0435 37.1409 37.1441C36.8981 37.2448 36.6378 37.2966 36.375 37.2966C36.1122 37.2966 35.8519 37.2448 35.6091 37.1441C35.3663 37.0435 35.1457 36.896 34.96 36.71L34.9 36.65C34.6643 36.4195 34.365 36.2648 34.0406 36.206C33.7162 36.1472 33.3816 36.1869 33.08 36.32C32.7842 36.4468 32.532 36.6572 32.3543 36.9255C32.1766 37.1938 32.0813 37.5082 32.08 37.83V38C32.08 38.5304 31.8693 39.0391 31.4942 39.4142C31.1191 39.7893 30.6104 40 30.08 40C29.5496 40 29.0409 39.7893 28.6658 39.4142C28.2907 39.0391 28.08 38.5304 28.08 38V37.91C28.0723 37.579 27.9651 37.258 27.7725 36.9887C27.5799 36.7194 27.3107 36.5143 27 36.4C26.6984 36.2669 26.3638 36.2272 26.0394 36.286C25.715 36.3448 25.4157 36.4995 25.18 36.73L25.12 36.79C24.9343 36.976 24.7137 37.1235 24.4709 37.2241C24.2281 37.3248 23.9678 37.3766 23.705 37.3766C23.4422 37.3766 23.1819 37.3248 22.9391 37.2241C22.6963 37.1235 22.4757 36.976 22.29 36.79C22.104 36.6043 21.9565 36.3837 21.8559 36.1409C21.7552 35.8981 21.7034 35.6378 21.7034 35.375C21.7034 35.1122 21.7552 34.8519 21.8559 34.6091C21.9565 34.3663 22.104 34.1457 22.29 33.96L22.35 33.9C22.5805 33.6643 22.7352 33.365 22.794 33.0406C22.8528 32.7162 22.8131 32.3816 22.68 32.08C22.5532 31.7842 22.3428 31.532 22.0745 31.3543C21.8062 31.1766 21.4918 31.0813 21.17 31.08H21C20.4696 31.08 19.9609 30.8693 19.5858 30.4942C19.2107 30.1191 19 29.6104 19 29.08C19 28.5496 19.2107 28.0409 19.5858 27.6658C19.9609 27.2907 20.4696 27.08 21 27.08H21.09C21.421 27.0723 21.742 26.9651 22.0113 26.7725C22.2806 26.5799 22.4857 26.3107 22.6 26C22.7331 25.6984 22.7728 25.3638 22.714 25.0394C22.6552 24.715 22.5005 24.4157 22.27 24.18L22.21 24.12C22.024 23.9343 21.8765 23.7137 21.7759 23.4709C21.6752 23.2281 21.6234 22.9678 21.6234 22.705C21.6234 22.4422 21.6752 22.1819 21.7759 21.9391C21.8765 21.6963 22.024 21.4757 22.21 21.29C22.3957 21.104 22.6163 20.9565 22.8591 20.8559C23.1019 20.7552 23.3622 20.7034 23.625 20.7034C23.8878 20.7034 24.1481 20.7552 24.3909 20.8559C24.6337 20.9565 24.8543 21.104 25.04 21.29L25.1 21.35C25.3357 21.5805 25.635 21.7352 25.9594 21.794C26.2838 21.8528 26.6184 21.8131 26.92 21.68H27C27.2958 21.5532 27.548 21.3428 27.7257 21.0745C27.9034 20.8062 27.9987 20.4918 28 20.17V20C28 19.4696 28.2107 18.9609 28.5858 18.5858C28.9609 18.2107 29.4696 18 30 18C30.5304 18 31.0391 18.2107 31.4142 18.5858C31.7893 18.9609 32 19.4696 32 20V20.09C32.0013 20.4118 32.0966 20.7262 32.2743 20.9945C32.452 21.2628 32.7042 21.4732 33 21.6C33.3016 21.7331 33.6362 21.7728 33.9606 21.714C34.285 21.6552 34.5843 21.5005 34.82 21.27L34.88 21.21C35.0657 21.024 35.2863 20.8765 35.5291 20.7759C35.7719 20.6752 36.0322 20.6234 36.295 20.6234C36.5578 20.6234 36.8181 20.6752 37.0609 20.7759C37.3037 20.8765 37.5243 21.024 37.71 21.21C37.896 21.3957 38.0435 21.6163 38.1441 21.8591C38.2448 22.1019 38.2966 22.3622 38.2966 22.625C38.2966 22.8878 38.2448 23.1481 38.1441 23.3909C38.0435 23.6337 37.896 23.8543 37.71 24.04L37.65 24.1C37.4195 24.3357 37.2648 24.635 37.206 24.9594C37.1472 25.2838 37.1869 25.6184 37.32 25.92V26C37.4468 26.2958 37.6572 26.548 37.9255 26.7257C38.1938 26.9034 38.5082 26.9987 38.83 27H39C39.5304 27 40.0391 27.2107 40.4142 27.5858C40.7893 27.9609 41 28.4696 41 29C41 29.5304 40.7893 30.0391 40.4142 30.4142C40.0391 30.7893 39.5304 31 39 31H38.91C38.5882 31.0013 38.2738 31.0966 38.0055 31.2743C37.7372 31.452 37.5268 31.7042 37.4 32Z\"\r\n stroke=\"#344054\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <filter\r\n id=\"filter0_d_5221_60143\"\r\n x=\"0\" y=\"0\" width=\"60\"\r\n height=\"60\"\r\n filterUnits=\"userSpaceOnUse\"\r\n color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\"\r\n result=\"BackgroundImageFix\" />\r\n <feColorMatrix\r\n in=\"SourceAlpha\"\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur\r\n stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\"\r\n in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_5221_60143\" />\r\n <feBlend mode=\"normal\"\r\n in=\"SourceGraphic\"\r\n in2=\"effect1_dropShadow_5221_60143\"\r\n result=\"shape\" />\r\n </filter>\r\n <clipPath id=\"clip0_5221_60143\">\r\n <rect width=\"24\" height=\"24\"\r\n fill=\"white\"\r\n transform=\"translate(18 17)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </div>\r\n <div *ngIf=\"notification.producttraildropDown\"\r\n class=\"card py-2 w-200px position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let producttrailitem of producttrailtype\"\r\n class=\"list-unstyled mb-2\">\r\n <li class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"producttrailItem(producttrailitem,notification)\">\r\n {{producttrailitem}}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n <!--end::Bank details Card-->\r\n </div>\r\n <!-- client request card end -->\r\n\r\n <!-- level view dropdown start -->\r\n <div *ngIf=\"sublevelview\"\r\n class=\"d-flex justify-content-between heading mt-6\">\r\n <div class=\"position-relative \">\r\n <div class=\"form-select dropselect levelviewtext\" id=\"currency\"\r\n (click)=\"viewplanDropdown($event)\"\r\n aria-label=\"Default select example\">{{viewplanIssue}}</div>\r\n <div *ngIf=\"viewplandropDown\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let viewplanitem of viewplantype\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.viewplanIssue === viewplanitem ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"viewplanItem(viewplanitem)\">{{viewplanitem}}\r\n </li>\r\n </ul>\r\n </div>\r\n <div class=\"text-sub\">Based on Current Subscribed Product</div>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div *ngIf=\"plan === 'subscription' && viewplanIssue === 'Product Level View'\"\r\n class=\" d-flex justify-content-end mt-6\">\r\n <lib-multidropdown text=\"Add Products\" [product]=\"productList\"\r\n [productList]=\"dataObject[0].Issues\" type=\"products\"\r\n [clientId]=\"clientId\" (data)=\"reload($event)\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"></lib-multidropdown>\r\n </div>\r\n </div>\r\n <div class=\"card-toolbar mt-3\"\r\n *ngIf=\"viewplanIssue === 'Store Level View' && plan === 'subscription'\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"d-flex align-items-end position-relative my-1\">\r\n <span\r\n class=\"svg-icon svg-icon-1 position-absolute mb-3 ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\r\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\"\r\n width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\"\r\n fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" class=\"form-control ps-14 me-2\"\r\n placeholder=\"Search\" autocomplete=\"off\"\r\n (change)=\"searchRecords($event)\" />\r\n <lib-filters class=\"me-2\" [dataObject]=\"dataObject\"\r\n (appliedFilters)=receiveData($event)></lib-filters>\r\n <lib-multidropdown text=\"Add Products\"\r\n [productList]=\"dataObject[0].Issues\" type=\"stores\"\r\n [stores]=\"getStores()\" [product]=\"getProduct()\"\r\n [clientId]=\"clientId\" [clientProduct]=\"productList\"\r\n (data)=\"reload($event)\" [selectAll]=\"selectAll\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"></lib-multidropdown>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- subscription config toolbar end -->\r\n </div>\r\n\r\n <ng-container *ngIf=\"loading\">\r\n <div\r\n class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"noData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div\r\n class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\"\r\n src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- product subscription plan start -->\r\n <div *ngIf=\"viewplanIssue === 'Product Level View' && !loading && !noData\">\r\n <div class=\"card-body p-0 mt-4\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border\">\r\n <thead>\r\n <tr>\r\n <th>Product</th>\r\n <th>No of Stores</th>\r\n <th>Cost Per Store</th>\r\n\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let product of productList;let i=index;\">\r\n <td>\r\n <div class=\"table-title subscribedtext\">\r\n {{convertUpper(product?.product) || '--'}}\r\n </div>\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\">{{product?.storeCount\r\n || 0}}</div>\r\n\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\">\u20B9 {{product?.basePrice || 0}}</div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- product subscription plan end -->\r\n\r\n <!-- store subscription plan start -->\r\n <div *ngIf=\"viewplanIssue === 'Store Level View' && !loading && !noData\">\r\n <div class=\"card-body p-0 mt-6\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border\">\r\n <thead>\r\n <tr>\r\n <th>\r\n <div class=\"d-flex\">\r\n <input class=\"storeinput me-4\"\r\n [(ngModel)]=\"selectAll\" type=\"checkbox\"\r\n (click)=\"selectAllStore($event)\">\r\n <label class=\"form-check-label\"\r\n for=\"flexCheckDefault\">\r\n <span>Store Info</span>\r\n </label>\r\n </div>\r\n </th>\r\n <th>Location</th>\r\n <th>Products</th>\r\n <th>Actions</th>\r\n\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let store of storeList;let i=index;\">\r\n <td>\r\n <div class=\"d-flex \">\r\n <input class=\"storeinput me-4\"\r\n type=\"checkbox\"\r\n [(ngModel)]=\"store.checked\"\r\n (change)=\"updateCheck($event,store?.storeId)\">\r\n <div\r\n class=\"d-flex justify-content-start flex-column\">\r\n <label\r\n class=\"form-check-label table-title-primary\"\r\n for=\"flexCheckDefault\">\r\n <span>{{store?.storeName ||\r\n '--'}}</span>\r\n </label>\r\n <span class=\"table-sub d-block7\">ID :\r\n {{store?.storeId || '--'}}</span>\r\n </div>\r\n </div>\r\n\r\n <div>\r\n\r\n\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n {{store?.storeProfile?.city || '--'}}</div>\r\n </td>\r\n\r\n <td *ngIf=\"store?.product && store?.product.length\">\r\n <span\r\n *ngFor=\"let product of store?.product;let i=index;\"><span\r\n *ngIf=\"i<2\"\r\n class=\"badge badge-light-primary me-1\">{{product}}</span></span><span\r\n *ngIf=\"store.product.length > 2\">+{{store?.product.length-2}}</span>\r\n </td>\r\n <td *ngIf=\"!store?.product\"> -- </td>\r\n <td>\r\n <lib-multidropdown\r\n [product]=\"store?.product || []\"\r\n [productList]=\"dataObject[0].Issues\"\r\n type=\"stores\" [stores]=\"[store?.storeId]\"\r\n [clientId]=\"clientId\"\r\n [clientProduct]=\"productList\"\r\n (data)=\"reload($event)\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"></lib-multidropdown>\r\n </td>\r\n\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div class=\"mb-4\">\r\n <lib-pagination [itemsPerPage]=\"dynamicData.limit\"\r\n [currentPage]=\"dynamicData.offset\"\r\n [totalItems]=\"totalCount\" [paginationSizes]=\"[10,20,30]\"\r\n [pageSize]=\"dynamicData.limit\"\r\n (pageChange)=\"onStorePageChange($event)\"\r\n (pageSizeChange)=\"onStorePageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- store subscription plan end -->\r\n </div>\r\n <!-- subscription tab starts -->\r\n\r\n <!--pricing tab start -->\r\n <div *ngIf=\"plan === 'pricing'\">\r\n <div class=\"d-flex justify-content-between py-6\">\r\n <div class=\" levelviewtext mt-4\">\r\n Pricing Table<br><span class=\"text-sub\">Based on Product &\r\n stores</span> </div>\r\n <div class=\"card-toolbar\">\r\n <div class=\"justify-content-end\">\r\n <div class=\"producttext\">Switch to</div>\r\n <div *ngIf=\"PricingshowNav\"\r\n class=\"nav-group nav-group-outline mt-2\">\r\n <button\r\n class=\"btn btn-color-gray-600 btn-active btn-active-secondary px-6 py-3 me-2\"\r\n [ngClass]=\"pricingplan === 'standard'? 'activePlanBtnprimary':'inactivePlanBtn'\"\r\n data-kt-plan=\"standardprice\"\r\n (click)=\"selectPricePlan('standard')\">\r\n Standard Price\r\n </button>\r\n\r\n <button\r\n class=\"btn btn-color-gray-600 btn-active btn-active-secondary px-6 py-3\"\r\n [ngClass]=\"pricingplan === 'step'? 'activePlanBtnprimary':'inactivePlanBtn'\"\r\n data-kt-plan=\"stepprice\"\r\n (click)=\"selectPricePlan('step')\">\r\n Step Price\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"pricingplan === 'step'\" class=\"d-flex justify-content-end mb-8\">\r\n <button (click)=\"addstepprice('add')\" type=\"button\"\r\n class=\"btn-outline btn needhelp text-nowrap\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M10.4993 4.16675V15.8334M4.66602 10.0001H16.3327\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Add Step</span> </button>\r\n </div>\r\n\r\n <ng-container *ngIf=\"priceLoading\">\r\n <div\r\n class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"priceNoData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div\r\n class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\"\r\n src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"card-body p-0 mt-4\">\r\n <div *ngIf=\"pricingplan === 'standard' && !priceLoading && !priceNoData\"\r\n class=\"table-responsive\">\r\n <table class=\"table bottom-border\">\r\n <thead>\r\n <tr>\r\n <th>Product</th>\r\n <th>Actual Price</th>\r\n <th class=\"discountheader\">Discount %</th>\r\n <th class=\"negheader\">Negotiated Price</th>\r\n <th>Installed Stores</th>\r\n <th>Total Price</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"let product of priceValueDetails.product;let i=index;\">\r\n <td>\r\n <div class=\"producttext\">\r\n {{convertUpper(product.productName)}}</div>\r\n\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{product.basePrice}}</div>\r\n\r\n </td>\r\n <td class=\"discountprice\">\r\n <div><input type=\"text\" class=\" form-control \"\r\n id=\"discountprice\"\r\n style=\"text-transform: capitalize;\"\r\n [(ngModel)]=\"product.discountPercentage\"\r\n (change)=\"calculate(i,'discount')\"></div>\r\n </td>\r\n <td class=\"negprice\">\r\n <div><input type=\"text\" class=\" form-control \"\r\n id=\"negprice\"\r\n style=\"text-transform: capitalize;\"\r\n [(ngModel)]=\"product.negotiatePrice\"\r\n (change)=\"calculate(i,'price')\"></div>\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\">{{product.storeCount}}\r\n </div>\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\">$ {{product.price}}</div>\r\n </td>\r\n </tr>\r\n <tr>\r\n <th>\r\n <div class=\"table-title\">Total Value</div>\r\n\r\n </th>\r\n <th>\r\n <div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.actualPrice}}</div>\r\n \r\n </th>\r\n <th>\r\n <div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.negotiatePrice}}</div>\r\n </th>\r\n <th><div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.negotiatePrice}}</div></th>\r\n <th></th>\r\n\r\n <th>\r\n <div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.totalNegotiatePrice}}</div>\r\n </th>\r\n\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div *ngIf=\"pricingplan === 'step' && !priceLoading && !priceNoData\"\r\n class=\"table-responsive\">\r\n <table class=\"table bottom-border pricingtab\">\r\n <thead>\r\n <tr>\r\n <th>Product</th>\r\n <th>Actual Price</th>\r\n <th>Discount %</th>\r\n <th>Negotiated Price</th>\r\n <th>Store Range</th>\r\n <th>Installed Stores</th>\r\n <th>Total Price</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"let product of priceValueDetails?.product;let i=index\">\r\n <td>\r\n <div class=\"producttext\">\r\n {{convertUpper(product.productName)}}\r\n <span class=\"ms-4\" *ngIf=\"product.showImg\"><img\r\n src=\"./assets/tango/custompopup-Icons/expiry-icon.svg\"\r\n alt=\"\"></span>\r\n </div>\r\n\r\n </td>\r\n <td>\r\n <div class=\"table-title\"> \u20B9 {{product.basePrice}}</div>\r\n\r\n </td>\r\n <td class=\"discountprice\">\r\n <div><input type=\"text\" class=\" form-control \"\r\n id=\"discountprice\"\r\n style=\"text-transform: capitalize;\"\r\n [(ngModel)]=\"product.discountPercentage\"\r\n (change)=\"calculate(i,'discount')\"></div>\r\n </td>\r\n <td class=\"negprice\">\r\n <div><input type=\"text\" class=\" form-control \"\r\n id=\"negprice\"\r\n style=\"text-transform: capitalize;\"\r\n [(ngModel)]=\"product.negotiatePrice\"\r\n (change)=\"calculate(i,'price')\"></div>\r\n </td>\r\n <td class=\"storerange\">\r\n <div><input type=\"text\" class=\" form-control \"\r\n id=\"storerange\"\r\n style=\"text-transform: capitalize;\"\r\n [(ngModel)]=\"product.storeRange\" readonly>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{product.storeCount}}\r\n </div>\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\"> \u20B9 {{product.price}}</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title d-flex\"\r\n *ngIf=\"!product.showEditDelete\">\r\n <span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M3.16602 4.99935H4.83268M4.83268 4.99935H18.166M4.83268 4.99935V16.666C4.83268 17.108 5.00828 17.532 5.32084 17.8445C5.6334 18.1571 6.05732 18.3327 6.49935 18.3327H14.8327C15.2747 18.3327 15.6986 18.1571 16.0112 17.8445C16.3238 17.532 16.4993 17.108 16.4993 16.666V4.99935H4.83268ZM7.33268 4.99935V3.33268C7.33268 2.89065 7.50828 2.46673 7.82084 2.15417C8.1334 1.84161 8.55732 1.66602 8.99935 1.66602H12.3327C12.7747 1.66602 13.1986 1.84161 13.5112 2.15417C13.8238 2.46673 13.9993 2.89065 13.9993 3.33268V4.99935M8.99935 9.16602V14.166M12.3327 9.16602V14.166\"\r\n stroke=\"#D0D5DD\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span class=\"ms-6\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M14.832 2.5009C15.0509 2.28203 15.3107 2.10842 15.5967 1.98996C15.8827 1.87151 16.1892 1.81055 16.4987 1.81055C16.8082 1.81055 17.1147 1.87151 17.4007 1.98996C17.6867 2.10842 17.9465 2.28203 18.1654 2.5009C18.3842 2.71977 18.5579 2.97961 18.6763 3.26558C18.7948 3.55154 18.8557 3.85804 18.8557 4.16757C18.8557 4.4771 18.7948 4.7836 18.6763 5.06956C18.5579 5.35553 18.3842 5.61537 18.1654 5.83424L6.91536 17.0842L2.33203 18.3342L3.58203 13.7509L14.832 2.5009Z\"\r\n stroke=\"#D0D5DD\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n <div class=\"cursor-pointer table-title d-flex\"\r\n *ngIf=\"product.showEditDelete\">\r\n <span\r\n (click)=\"addstepprice('delete',product,i)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M3.16602 4.99935H4.83268M4.83268 4.99935H18.166M4.83268 4.99935V16.666C4.83268 17.108 5.00828 17.532 5.32084 17.8445C5.6334 18.1571 6.05732 18.3327 6.49935 18.3327H14.8327C15.2747 18.3327 15.6986 18.1571 16.0112 17.8445C16.3238 17.532 16.4993 17.108 16.4993 16.666V4.99935H4.83268ZM7.33268 4.99935V3.33268C7.33268 2.89065 7.50828 2.46673 7.82084 2.15417C8.1334 1.84161 8.55732 1.66602 8.99935 1.66602H12.3327C12.7747 1.66602 13.1986 1.84161 13.5112 2.15417C13.8238 2.46673 13.9993 2.89065 13.9993 3.33268V4.99935M8.99935 9.16602V14.166M12.3327 9.16602V14.166\"\r\n stroke=\"#667085\"\r\n stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span (click)=\"addstepprice('edit',product,i)\"\r\n class=\"ms-6\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M14.832 2.5009C15.0509 2.28203 15.3107 2.10842 15.5967 1.98996C15.8827 1.87151 16.1892 1.81055 16.4987 1.81055C16.8082 1.81055 17.1147 1.87151 17.4007 1.98996C17.6867 2.10842 17.9465 2.28203 18.1654 2.5009C18.3842 2.71977 18.5579 2.97961 18.6763 3.26558C18.7948 3.55154 18.8557 3.85804 18.8557 4.16757C18.8557 4.4771 18.7948 4.7836 18.6763 5.06956C18.5579 5.35553 18.3842 5.61537 18.1654 5.83424L6.91536 17.0842L2.33203 18.3342L3.58203 13.7509L14.832 2.5009Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </td>\r\n\r\n </tr>\r\n <tr>\r\n <th>\r\n <div class=\"table-title\">Total Value</div>\r\n\r\n </th>\r\n <th>\r\n <div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.actualPrice}}</div>\r\n\r\n </th>\r\n <th>\r\n <div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.negotiatePrice}}</div>\r\n </th>\r\n <th><div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.negotiatePrice}}</div></th>\r\n <th></th>\r\n <th></th>\r\n <th>\r\n <div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.totalNegotiatePrice}}</div>\r\n </th>\r\n <th></th>\r\n\r\n </tr>\r\n\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <div class=\"card-body pt-14\" *ngIf=\"!priceLoading && !priceNoData\">\r\n <div class=\"d-flex flex-stack\">\r\n <div class=\"fianlvaltext me-2\">Actual Value</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\"> \u20B9 {{priceValueDetails.totalActualPrice}}</span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-stack pt-4\">\r\n <div class=\"fianlvaltext me-2\">Discount</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\">{{priceValueDetails.discountPercentage}}% (- \u20B9 {{priceValueDetails.discountPrice}})</span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-stack pt-4\">\r\n <div class=\"fianlvaltext me-2\">Negotiated Value</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\"> \u20B9 {{priceValueDetails.totalNegotiatePrice}}</span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-stack pt-4\">\r\n <div class=\"fianlvaltext me-2\">Tax</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\">18% GST</span>\r\n </div>\r\n </div>\r\n <hr>\r\n\r\n <div class=\"d-flex flex-stack py-2\">\r\n <div class=\"fianlvaltext me-2\">Final Value</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\"> \u20B9 {{priceValueDetails.finalValue}}</span>\r\n </div>\r\n </div>\r\n\r\n <hr>\r\n\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex justify-content-end py-3\"><a type=\"submit\"\r\n class=\"btn-outline btn needhelp me-4 mt-3\"\r\n (click)=\"revertOriginalPrice()\">Cancel</a><a\r\n (click)=\"pricingrevised()\" type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 mt-3 ng-star-inserted\"><span>Save\r\n </span></a></div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- pricing tab plan end -->\r\n\r\n\r\n\r\n <!-- submit plan start -->\r\n <div *ngIf=\"plan === 'storesubscription'\" class=\"row\">\r\n <div class=\"col-lg-8\">\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex justify-content-end py-3\"><a type=\"submit\"\r\n class=\"btn-outline btn needhelp me-4 mt-3\">Cancel</a><a\r\n (click)=\"pricingrevised()\" type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 mt-3 ng-star-inserted\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><span>Apply\r\n Changes\r\n </span></a></div>\r\n </div>\r\n\r\n </div>\r\n <!-- submit plan end -->\r\n </div>\r\n </div>\r\n </div>\r\n <!-- product info end -->\r\n\r\n <!-- payment invoice start -->\r\n <div class=\"col-xl-12 my-4 billingcard\" *ngIf=\"(gs.userAccess | async)?.userType === 'tango' && (gs.userAccess | async)?.settings_paymentSubscriptions_isView\"\r\n >\r\n <form [formGroup]=\"paymentinvoiceform\">\r\n <div class=\"d-flex justify-content-between ps-4 pt-6\">\r\n <!--begin::Title-->\r\n <h3 class=\"align-items-start flex-column\">\r\n <span class=\"heading mb-2\">Payment and Invoice</span>\r\n </h3>\r\n <!--end::Title-->\r\n\r\n <!--begin::Toolbar-->\r\n <div class=\"card-toolbar mb-2\" *ngIf=\"paymentinvoiceshow\">\r\n <button (click)=\"onpaymentedit()\" type=\"submit\"\r\n class=\"btn-outline btn align-items-end needhelp me-4\"><span\r\n class=\"me-2\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n <!--end::Toolbar-->\r\n </div>\r\n <!-- payment invoice form start -->\r\n <div class=\"d-flex flex-column row fv-row fv-plugins-icon-container py-4 px-4\">\r\n\r\n <div class=\"row\">\r\n <div class=\"col-lg-6\">\r\n <div class=\"form-group pt-1\">\r\n <label for=\"paymentcycle\" class=\"headingtext mb-2\">Enable Pro-Rate\r\n for Charges</label>\r\n <div class=\"d-flex mt-3\">\r\n <div class=\"form-check form-check-inline ps-0\"\r\n (click)=\"pricingType($event, 'before15')\">\r\n <input formControlName=\"radiooptions\"\r\n class=\"radio-custom cursor-pointer radioButton\"\r\n type=\"radio\" id=\"inlineRadio1\" value=\"before15\"\r\n name=\"radiooptions\">\r\n <label\r\n class=\"form-check-label radio-custom-label mx-3 headingtext cursor-pointer\"\r\n for=\"inlineRadio1\">Before 15th of Month</label>\r\n </div>\r\n <div class=\"form-check form-check-inline ps-0\"\r\n (click)=\"pricingType($event, 'after15')\">\r\n <input class=\"radio-custom cursor-pointer radioButton\"\r\n type=\"radio\" formControlName=\"radiooptions\"\r\n id=\"inlineRadio2\" value=\"after15\" name=\"radiooptions\"\r\n readonly>\r\n <label\r\n class=\"form-check-label headingtext radio-custom-label mx-3 cursor-pointer\"\r\n for=\"inlineRadio1\">After 15th of Month</label>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n <div class=\"form-group pt-6\">\r\n <label for=\"paymentcycle\" class=\"headingtext mb-2\">Payment\r\n Cycle</label>\r\n\r\n <div class=\"position-relative\">\r\n <div class=\"form-select dropselect\" id=\"paymentcycle\"\r\n (click)=\"openDropdown($event)\"\r\n aria-label=\"Default select example\">{{selectedIssue ===\r\n 'monthly' ? 'Monthly' : selectedIssue === 'quaterly' ?\r\n 'Quaterly' : 'Annual'}}</div>\r\n <div *ngIf=\"dropDown && !paymentinvoiceshow\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let item of dropdownItems\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.selectedIssue === item.value ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"selectItem(item.value)\">{{item.name}}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group pt-6\">\r\n <label for=\"invoiceTo\" class=\"headingtext mb-2\">Generate\r\n Invoice To <span> <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2706_25324)\">\r\n <path\r\n d=\"M7.99967 10.6663V7.99967M7.99967 5.33301H8.00634M14.6663 7.99967C14.6663 11.6816 11.6816 14.6663 7.99967 14.6663C4.31778 14.6663 1.33301 11.6816 1.33301 7.99967C1.33301 4.31778 4.31778 1.33301 7.99967 1.33301C11.6816 1.33301 14.6663 4.31778 14.6663 7.99967Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2706_25324\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></label>\r\n\r\n <div class=\"outer-container\">\r\n <div class=\" input-container form-control\">\r\n <ng-container\r\n *ngFor=\"let invoiceTo of generateinvoiceList; let i = index\">\r\n\r\n <span class=\"chip\">\r\n <span class=\"me-3\">{{invoiceTo}}</span>\r\n <span *ngIf=\"paymentinvoiceform.enabled\"\r\n (click)=\"removeChip(i)\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"12\" height=\"12\" viewBox=\"0 0 12 12\"\r\n fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span>\r\n </ng-container>\r\n <input style=\"min-height: 44px;\" formControlName=\"invoiceTo\"\r\n (keydown)=\"onKeyDown($event)\" type=\"text\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group pt-6\">\r\n <label for=\"generateinvoiceon\" class=\"headingtext mb-2\">Generate\r\n Invoice\r\n On\r\n </label>\r\n <div class=\"position-relative\">\r\n <div class=\"form-select dropselect\" id=\"generateinvoiceon\"\r\n (click)=\"invoiceDropdown($event)\"\r\n aria-label=\"Default select example\">{{invoiceonIssue ===\r\n 'lastday' ? 'Last Day of the Month' :'25th of the Month'}}\r\n </div>\r\n <div *ngIf=\"invoicedropDown && !paymentinvoiceshow\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let invoiceitem of generateinvoiceon\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.invoiceonIssue === invoiceitem.value ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"invoiceItem(invoiceitem.value)\">\r\n {{invoiceitem.name}}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-lg-6\">\r\n <div class=\"form-group pt-1\">\r\n <label for=\"paymenttype\" class=\"headingtext mb-2\">Payment\r\n Type</label>\r\n <div class=\"position-relative\">\r\n <div class=\"form-select dropselect\" id=\"paymenttype\"\r\n (click)=\"paymenttypeDropdown($event)\"\r\n aria-label=\"Default select example\">{{paymentIssue ===\r\n 'online' ? 'online Payment' :'Bank Transfer'}}</div>\r\n <div *ngIf=\"paymenttypedropDown && !paymentinvoiceshow\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let paymentitem of paymenttype\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.paymentIssue === paymentitem.value ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"paymentItem(paymentitem.value)\">\r\n {{paymentitem.name}}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group pt-6\">\r\n <label for=\"currency\" class=\"headingtext mb-2\">Currency</label>\r\n <div class=\"position-relative\">\r\n <div class=\"form-select dropselect\" id=\"currency\"\r\n (click)=\"currencyDropdown($event)\"\r\n aria-label=\"Default select example\">{{currencyIssue ===\r\n 'inr'\r\n ? 'INR' :'Doller'}}</div>\r\n <div *ngIf=\"currencydropDown && !paymentinvoiceshow\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let currencyitem of currencytype\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.currencyIssue === currencyitem.value ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"currencyItem(currencyitem.value)\">\r\n {{currencyitem.name}}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group pt-6\">\r\n <label for=\"sendpayment\" class=\"headingtext mb-2\">Send Payment\r\n Agreement<span class=\"ms-2\"> <svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2706_25324)\">\r\n <path\r\n d=\"M7.99967 10.6663V7.99967M7.99967 5.33301H8.00634M14.6663 7.99967C14.6663 11.6816 11.6816 14.6663 7.99967 14.6663C4.31778 14.6663 1.33301 11.6816 1.33301 7.99967C1.33301 4.31778 4.31778 1.33301 7.99967 1.33301C11.6816 1.33301 14.6663 4.31778 14.6663 7.99967Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2706_25324\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></label>\r\n\r\n\r\n <div class=\"outer-container\">\r\n <div class=\" input-container form-control\">\r\n <ng-container\r\n *ngFor=\"let paymentAgreementTo of paymentallowedList; let i = index\">\r\n <span class=\"chip\">\r\n <span class=\"me-3\">{{paymentAgreementTo}}</span>\r\n <span *ngIf=\"paymentinvoiceform.enabled\"\r\n (click)=\"sendpaymentremoveChip(i)\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"12\" height=\"12\" viewBox=\"0 0 12 12\"\r\n fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span>\r\n </ng-container>\r\n <input style=\"min-height: 44px;\"\r\n formControlName=\"paymentAgreementTo\"\r\n (keydown)=\"sendpaymentonKeyDown($event)\" type=\"text\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group pt-6\">\r\n <label for=\"extendPaymentPeriodDays\"\r\n class=\" headingtext mb-2\">Extend Payment\r\n Period Days </label>\r\n <div class=\"w-lg-100 position-relative\">\r\n <div\r\n class=\"position-absolute translate-middle-y top-50 me-5 ps-3 ticketDays\">\r\n <span class=\"svg-icon toggle-off svg-icon-1\"\r\n (click)=\"paymentinvoiceform.get('extendPaymentPeriodDays')?.value > 0 && paymentinvoiceform.enabled ? paymentinvoiceform.get('extendPaymentPeriodDays')?.setValue(paymentinvoiceform.get('extendPaymentPeriodDays')?.value - 1) : null\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M4.16699 10H15.8337\" stroke=\"#667085\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n <input type=\"text\" class=\"form-control\"\r\n id=\"extendPaymentPeriodDays\" readonly\r\n formControlName=\"extendPaymentPeriodDays\"\r\n style=\"text-align: center;\"\r\n [(ngModel)]=\"extendPaymentPeriodDays\" autocomplete=\"off\" />\r\n <div\r\n class=\"position-absolute translate-middle-y top-50 end-0 me-3\">\r\n <span class=\"svg-icon toggle-on svg-icon-1 ticketDays\"\r\n (click)=\"paymentinvoiceform.enabled ? paymentinvoiceform.get('extendPaymentPeriodDays')?.setValue(paymentinvoiceform.get('extendPaymentPeriodDays')?.value + 1) : null\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\"\r\n height=\"16\" viewBox=\"0 0 17 16\" fill=\"none\">\r\n <path\r\n d=\"M8.49967 3.33301V12.6663M3.83301 7.99967H13.1663\"\r\n stroke=\"#667085\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-end mt-6\" *ngIf=\"!paymentinvoiceshow\">\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex justify-content-end\"><a type=\"submit\"\r\n class=\"btn-outline btn needhelp me-4\"\r\n (click)=\"onpaymentCancel()\">Cancel</a><a type=\"button\"\r\n tabindex=\"0\" class=\"btn btn-primary px-4 ng-star-inserted\"\r\n (click)=\"onpaymentSubmit()\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><span>Apply\r\n Changes\r\n </span></a></div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <!-- payment invoice form end -->\r\n\r\n </form>\r\n </div>\r\n <!-- payment invoice end -->\r\n\r\n </ng-template>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <!-- subscription config End -->\r\n\r\n <!--Invoices start -->\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango' && (gs.userAccess | async)?.settings_paymentSubscriptions_isView\">\r\n <div class=\"card mt-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>Invoices <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <div class=\"card-header\" >\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Payment History</span>\r\n \r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\"\r\n rx=\"1\" transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\">\r\n </rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input [(ngModel)]=\"searchInput\" type=\"text\" class=\"form-control ps-14 me-4\"\r\n placeholder=\"Search\" autocomplete=\"off\" (change)=\"searchField()\" />\r\n \r\n <div class=\"me-3 monthwidth\">\r\n <div class=\"dropdown\">\r\n <select class=\"form-select \" aria-label=\"Default select example\">\r\n <option selected>Current Month</option>\r\n <option value=\"1\">Previous Month</option>\r\n <option value=\"2\">Last 3 Mon</option>\r\n \r\n </select>\r\n </div>\r\n </div>\r\n \r\n <button (click)=\"creditnote()\" type=\"button\" class=\"btn-outline btn align-items-end text-nowrap me-4\" *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M10.4993 4.16675V15.8334M4.66602 10.0001H16.3327\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span>Credit Note</span> </button>\r\n <button type=\"button\" (click)=\"onExport()\"\r\n class=\"btn-outline btn align-items-end text-nowrap me-4\" *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isDownload\"\r\n ><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\"></span> Export</button>\r\n \r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border\">\r\n <thead>\r\n <tr>\r\n <th>Invoice #</th>\r\n <th>Billing date</th>\r\n <th>Stores</th>\r\n <th>Products</th>\r\n <th>Amount</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let invoice of invoiceList\">\r\n <td>\r\n <div class=\"table-title-primary invoice\">{{invoice?.invoice}}</div>\r\n <span class=\"badge badge-light-success\">{{invoice?.status}}</span>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{invoice?.billingDate}} </div>\r\n \r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{invoice?.stores}}</div>\r\n \r\n </td>\r\n \r\n <td><span *ngFor=\"let product of invoice?.products; let i = index\"><span\r\n [class]=\"getColorClass(product)\"\r\n *ngIf=\"i<2\">{{product}}</span><span class=\"productextend\"\r\n *ngIf=\"i>=2\">+{{invoice?.products.length - 2 }}</span></span>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{invoice?.amount}}</div>\r\n </td>\r\n <td>\r\n <span class=\"pointer\"><svg class=\"mt-3\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </td>\r\n \r\n </tr>\r\n </tbody>\r\n </table>\r\n <lib-pagination class=\"text-start\" [itemsPerPage]=\"itemsPerPage\"\r\n [currentPage]=\"currentPage\" [totalItems]=\"totalItems\"\r\n [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <!--Invoices end -->\r\n </div>\r\n </div>", styles: [".accordion-button:not(.collapsed){color:none!important;background-color:#fff!important;box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed){color:none!important;background-color:var(--bs-accordion-active-bg);box-shadow:none!important}.billingcard{border-radius:12px;border:1px solid var(--Gray-300, #D0D5DD);background:#fff}.heading{color:var(--Gray-900, #101828);font-size:18px;font-weight:600}.subheading{color:var(--Gray-900, #101828);font-size:16px;font-weight:400;line-height:24px}.sub{color:var(--Gray-900, #101828);font-size:14px;font-weight:400;line-height:20px}.pricingtext{color:var(--Gray-800, #1D2939);font-size:30px;font-weight:600;line-height:38px}.pricingspan{color:var(--Gray-500, #667085);font-size:18px;font-weight:500;line-height:28px}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}input [type=text] [disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{background-color:#f9fafb!important}input[type=text]{color:#101828;border:1px solid #D0D5DD!important;box-shadow:0 1px 2px #1018280d;border-radius:8px;font-size:16px;width:100%;padding:10px 14px;font-weight:400;line-height:24px}input:active [type=text],input:focus [type=text],input:focus-visible [type=text]{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD)!important;box-shadow:0 1px 2px #1018280d;outline:none!important;background:var(--Gray-50, #F9FAFB)}.mainheading{color:var(--Black, #101828);font-size:18px;font-weight:600;line-height:28px}.trail{color:var(--Gray-500, #667085);font-size:18px;font-weight:600;line-height:28px}.daysleft{color:var(--Error-700, #B42318);text-align:center;font-size:12px;font-weight:500;line-height:18px}.subtext{color:var(--Gray-500, #667085);font-size:12px;font-weight:500;line-height:18px}.needhelp{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:20px;text-transform:capitalize}.billingtext{color:#000;font-size:20px;font-weight:500;line-height:30px}.billingdetails{color:var(--Gray-500, #667085);font-size:16px;font-weight:500;line-height:24px}.billingmain{color:#000;font-size:16px;font-weight:600;line-height:24px}.update{border-radius:8px;border:1px solid var(--Primary-50, #EAF8FF);box-shadow:0 1px 2px #1018280d;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.address{border-radius:8px;border:1px solid var(--Primary-600, #00A3FF);background:var(--Primary-600, #00A3FF);box-shadow:0 1px 2px #1018280d}.billing{border-radius:12px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-25, #F6FCFF)}.activePlanBtn{border-radius:6px;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a!important;color:var(--Gray-700, #344054);font-size:14px!important;font-weight:500!important;line-height:20px}.inactivePlanBtn{color:var(--Gray-500, #667085)!important;font-size:14px;font-weight:500!important;line-height:20px}.activePlanBtnprimary{border-radius:6px;background:var(--Primary-50, #EAF8FF)!important;box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a!important;color:var(--Primary-700, #009BF3);font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.nav-group{background:var(--Gray-50, #F9FAFB)!important;border-radius:8px!important;border:1px solid var(--Gray-100, #F2F4F7)!important;width:fit-content}.form-check-label{color:var(--Gray-700, #344054)!important}::ng-deep .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#fff!important;border:1px solid black;width:100%!important}.fieldwidth{width:100%!important;background-color:#fff!important}.text-sub{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:400!important;line-height:20px}.border-val{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}.table-title-primary{color:var(--Primary-700, #009BF3)!important;font-weight:500!important}.table-sub{line-height:30px!important;color:var(--Gray-500, #667085)!important}.illustcontent{color:var(--Gray-900, #101828);font-size:16px;font-weight:600}.nav-item .nav-link{color:var(--Gray-500, #667085);font-size:16px;font-weight:500}.pointer{cursor:pointer}.invoice{width:120%}.monthwidth{width:65%}.storerange{width:15%!important}.discountprice{width:11%!important}.negprice{width:14%}.discountheader{width:12%}.negheader{width:16%}.bolddata{font-weight:700!important;color:var(--Gray-700, #344054)!important}.producttext{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.table:not(.table-bordered) tbody tr:last-child{border-bottom:1px solid #EAECF0!important}hr{border:1px solid var(--Gray-300, #D0D5DD);height:1px!important}.fianlvaltext{color:var(--Gray-500, #667085);font-size:16px;font-weight:600;line-height:24px}.input-group-text{background-color:#fff!important;color:var(--Gray-400, #98A2B3);font-size:16px;font-weight:400;line-height:24px}.discountinput{width:80px!important;text-align:center;color:var(--Gray-500, #667085);font-size:18px;font-weight:500;line-height:28px}.radio-custom{width:20px;height:20px;background-color:#eaf8ff}.radio-custom,.radio-custom-label{display:inline-block;vertical-align:middle;margin:8px 0;cursor:pointer}.radio-custom-label{position:relative}.radio-custom:checked+.radio-custom-label:before{background:#00a3ff;box-shadow:inset 0 0 0 4.5px #eaf8ff;width:16px;height:16px}.outer-container{position:relative}.outer-container .form-control{padding-top:0;padding-bottom:0}.outer-container .input-container{border:1px solid black;height:100%;width:100%;display:flex;flex-wrap:wrap}.outer-container .input-container input{all:unset;flex:1;min-width:50px;border:none!important}.outer-container .input-container .chip{margin:10px 0 10px 10px;padding:3px 10px;border-radius:16px;background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.outer-container .input-container .chip:nth-child(1){margin-left:0}.form-control{display:block;padding:.5rem 1rem;font-size:1.1rem;font-weight:400;color:var(--Gray-500, #667085);-webkit-appearance:none;appearance:none;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}tr{vertical-align:middle!important}.levelviewtext{color:var(--Gray-800, #1D2939);font-family:Inter;font-size:18px;border:none!important;font-weight:600;line-height:28px;padding-left:0!important}.subscribedtext{color:var(--Primary-700, #009BF3);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:45px!important}.badge-light-grey{border-radius:16px;background:var(--Gray-100, #F2F4F7);display:flex;padding:4px 12px;justify-content:center;align-items:center;color:var(--Gray-700, #344054);text-align:center;font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.daysleft{color:var(--Gray-800, #1D2939);font-family:Inter;font-size:24px;font-style:normal;font-weight:500;line-height:32px}.btn-danger{border-radius:8px;border:1px solid var(--Error-600, #D92D20);background:var(--Error-600, #D92D20);box-shadow:0 1px 2px #1018280d}.subtextbold{color:var(--Gray-500, #667085);font-family:Inter;font-size:12px;font-style:normal;font-weight:700;line-height:18px}.toastcard{border-radius:4px;border-left:2px solid #00A3FF;background:#f5f8fa;box-shadow:0 4px 16px #0000001a;display:flex;height:68px;padding:6px 12px 6px 16px;align-items:center;gap:16px;align-self:stretch}.toasttext{color:var(--Gray-500, #667085);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}.billingupdate{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);color:var(--Gray-700, #344054);font-family:Inter;font-size:12px;font-weight:600;line-height:18px;text-transform:capitalize}.pricingtab{width:115%}.items:hover,.tems.focus,.items.active,.camera.focus-visible{background:var(--Gray-50, #F9FAFB)}.dropselect{color:var(--Gray-500, #667085);font-family:Inter;font-size:16px;font-style:normal;font-weight:400;line-height:24px}.Historyheader{padding:0 .25rem}.product-traffic{color:var(--Blue-700, #175CD3);text-align:center;font-family:Inter;font-size:12px;font-weight:500;border-radius:16px;background:var(--Blue-50, #EFF8FF)}.productextend{border-radius:16px;background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054);text-align:center;font-family:Inter;font-size:12px;font-weight:500;padding:2px 8px}.product-zone{border-radius:16px;background:var(--Indigo-50, #EEF4FF);padding:2px 8px;color:var(--Indigo-700, #3538CD);text-align:center;font-family:Inter;font-size:12px;font-weight:500}.product-sop{color:var(--Purple-700, #5925DC);text-align:center;font-family:Inter;font-size:12px;font-weight:500;border-radius:16px;background:var(--Purple-50, #F4F3FF)}.prioritysupport{color:var(--Pink-700, #C11574);text-align:center;font-family:Inter;font-size:12px;font-weight:500;border-radius:16px;background:var(--Pink-50, #FDF2FA)}::ng-deep .custom-tooltip{border-radius:8px;background:var(--White, #FFF);padding:8px 12px;color:var(--Gray-700, #344054);text-align:center;font-family:Inter;font-size:12px;font-weight:600;line-height:18px}.plancard{width:65%!important}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgbAccordionButton, selector: "button[ngbAccordionButton]" }, { kind: "directive", type: i1.NgbAccordionDirective, selector: "[ngbAccordion]", inputs: ["animation", "closeOthers", "destroyOnHide"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordion"] }, { kind: "directive", type: i1.NgbAccordionItem, selector: "[ngbAccordionItem]", inputs: ["ngbAccordionItem", "destroyOnHide", "disabled", "collapsed"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordionItem"] }, { kind: "directive", type: i1.NgbAccordionHeader, selector: "[ngbAccordionHeader]" }, { kind: "directive", type: i1.NgbAccordionBody, selector: "[ngbAccordionBody]" }, { kind: "directive", type: i1.NgbAccordionCollapse, selector: "[ngbAccordionCollapse]", exportAs: ["ngbAccordionCollapse"] }, { kind: "directive", type: i1.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "component", type: i4.FiltersComponent, selector: "lib-filters", inputs: ["dataObject"], outputs: ["appliedFilters"] }, { kind: "component", type: i7.MultidropdownComponent, selector: "lib-multidropdown", inputs: ["text", "product", "productList", "type", "stores", "clientId", "selectAll", "clientProduct"], outputs: ["data"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }] });
|
|
940
980
|
}
|
|
941
981
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: PaymentsSubscriptionComponent, decorators: [{
|
|
942
982
|
type: Component,
|
|
943
|
-
args: [{ selector: 'lib-payments-subscription', template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div ngbAccordion [closeOthers]=\"true\">\r\n <!-- Billing & subscription start -->\r\n <div class=\"card\" ngbAccordionItem [collapsed]=\"openaccordian\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>Billing & Subscription<div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <!--begin::plan details Card-->\r\n <div class=\"col-xl-12 billingcard\">\r\n <div class=\" h-xl-100 flex-row flex-stack flex-wrap p-6\">\r\n <div class=\"toastcard col-md-12\" *ngIf=\"clientinfo?.currentPlanInfo?.paymentStatus==='due' && clientinfo?.currentPlanInfo?.dueLimitReached===false\">\r\n <div class=\"d-flex align-items-center justify-content-end\">\r\n <div class=\"symbol symbol-30px me-5\"><span>\r\n <img src=\"./assets/tango/custompopup-Icons/danger-alert-primary.svg\"\r\n alt=\"\">\r\n </span>\r\n </div>\r\n <span class=\"toasttext d-block\">Kind Reminder: You have a reached your due\r\n limit ,To continue enjoying our services, please renew your subscription\r\n by making the payment. Thank you for your cooperation</span>\r\n <span><a type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 ng-star-inserted\"\r\n style=\"white-space: nowrap;\"><span class=\"create\">Pay Now\r\n </span></a></span>\r\n </div>\r\n\r\n </div>\r\n <div class=\"toastcard col-md-12\" *ngIf=\"clientinfo?.currentPlanInfo?.paymentStatus==='due' && clientinfo?.currentPlanInfo?.dueLimitReached===true\">\r\n <div class=\"d-flex align-items-center justify-content-end\">\r\n <div class=\"symbol symbol-30px me-5\"><span>\r\n <img src=\"./assets/tango/custompopup-Icons/danger-alert-primary.svg\"\r\n alt=\"\">\r\n </span>\r\n </div>\r\n <span class=\"toasttext d-block\">Kind Reminder: We haven't received your\r\n payment yet. To continue enjoying our services, please renew your\r\n subscription by making the payment. Thank you for your\r\n cooperation</span>\r\n <span><a type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 ng-star-inserted\"\r\n style=\"white-space: nowrap;\"><span class=\"create\">Pay Now\r\n </span></a></span>\r\n </div>\r\n\r\n </div>\r\n <div class=\"d-flex flex-column mt-6\">\r\n <div class=\"d-flex align-items-center justify-content-between border-val mb-2\">\r\n Current Plan Info<span class=\"badge-light-grey ms-2\">\r\n {{clientinfo?.currentPlanInfo?.priceType\r\n || '--'}}</span>\r\n </div>\r\n <div class=\"d-flex align-items-center pricingtext my-2\">\r\n $ {{clientinfo?.currentPlanInfo?.price\r\n || '--'}}<span class=\"pricingspan ms-2\">Store/Month</span>\r\n </div>\r\n <hr>\r\n <div class=\"d-flex justify-content-between\">\r\n\r\n\r\n <div class=\"d-flex justify-content-start flex-column plancard\">\r\n <div class=\" heading mb-3\">\r\n {{clientinfo?.currentPlanInfo?.subscriptionType\r\n || '--'}}\r\n plan - {{clientinfo?.currentPlanInfo?.storeCount\r\n || '--'}}\r\n <span class=\"subheading ms-2\">store\r\n onboarded</span>\r\n <span ngbTooltip=\"{{ product.toolTip }}\" placement=\"top\" triggers=\"mouseenter:mouseleave\" tooltipClass=\"custom-tooltip\" class=\"badge badge-light-warning ms-2\"\r\n *ngFor=\"let product of clientinfo?.currentPlanInfo?.trialProducts\">\r\n {{ product.aliseProductName }}\r\n <img class=\"ms-2\"\r\n src=\"./assets/tango/custompopup-Icons/clockexpiry-icon.svg\"\r\n alt=\"\"> </span>\r\n <span tooltipClass=\"custom-tooltip\" ngbTooltip=\"{{ product.toolTip }}\" placement=\"top\" triggers=\"mouseenter:mouseleave\" class=\"badge badge-light-primary ms-2\"\r\n *ngFor=\"let product of clientinfo?.currentPlanInfo?.expiredProducts\">\r\n {{ product.aliseProductName }}\r\n <img class=\"ms-2\"\r\n src=\"./assets/tango/custompopup-Icons/primary-clock-icon.svg\"\r\n alt=\"\"> </span>\r\n </div>\r\n <span class=\"sub d-block\">Cameras :\r\n {{clientinfo?.currentPlanInfo?.totalCamera\r\n || '--'}} | Avg sq.ft : {{clientinfo?.currentPlanInfo?.storeSize\r\n || '--'}} sq.ft | Products : <span\r\n *ngFor=\"let product of clientinfo?.currentPlanInfo?.liveProducts\">\r\n {{ product.aliseProductName }} </span>\r\n </span>\r\n </div>\r\n \r\n <div class=\" d-flex align-items-end\" >\r\n <span [disableTooltip]=\"!clientinfo?.currentPlanInfo?.pendingClientRequest\" ngbTooltip=\"Request is Already initiated waiting for admin approval\" placement=\"top\" triggers=\"mouseenter:mouseleave\" tooltipClass=\"custom-tooltip\">\r\n <button type=\"submit\" [disabled]=\"clientinfo?.currentPlanInfo?.pendingClientRequest\" (click)=\"needhelp()\" \r\n class=\"btn-outline btn needhelp me-4\"><span class=\"me-2\"><svg\r\n width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_1965_2301)\">\r\n <path\r\n d=\"M7.57533 7.50033C7.77125 6.94338 8.15795 6.47375 8.66695 6.1746C9.17596 5.87546 9.77441 5.76611 10.3563 5.86592C10.9382 5.96573 11.466 6.26826 11.8462 6.71993C12.2264 7.1716 12.4345 7.74326 12.4337 8.33366C12.4337 10.0003 9.93366 10.8337 9.93366 10.8337M10.0003 14.167H10.0087M18.3337 10.0003C18.3337 14.6027 14.6027 18.3337 10.0003 18.3337C5.39795 18.3337 1.66699 14.6027 1.66699 10.0003C1.66699 5.39795 5.39795 1.66699 10.0003 1.66699C14.6027 1.66699 18.3337 5.39795 18.3337 10.0003Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1965_2301\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"> Need Help</span>\r\n </button>\r\n \r\n </span>\r\n <button \r\n (click)=\"upgradeplan()\" type=\"button\" tabindex=\"0\"\r\n class=\"btn update btn-lg btn-light btn-active-light-primary px-4 ng-star-inserted\"\r\n style=\"white-space: nowrap;\"><span class=\"create\">Upgrade Plan\r\n </span></button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <!--end::plan details Card-->\r\n\r\n\r\n <div class=\"row gx-4 mt-4\">\r\n <!--begin::Bank details Card-->\r\n <div class=\"col-xl-7 \">\r\n <div class=\"billingcard h-xl-100 flex-row flex-stack flex-wrap p-6\">\r\n <div class=\"d-flex flex-column py-2\">\r\n <div class=\"d-flex align-items-center billingtext mb-8\">\r\n Bank Details\r\n </div>\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">Payment Type</div>\r\n <div class=\"billingmain\">Virtual Acc\r\n </div>\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">Account No </div>\r\n <div class=\"billingmain\"> {{clientinfo?.bankDetails?.accountNo ||\r\n '--'}}\r\n </div>\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">IFSC Code</div>\r\n <div class=\"billingmain\"> {{clientinfo?.bankDetails?.ifscCode ||\r\n '--'}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-flex align-items-center mt-4\">\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">SWIFT Code</div>\r\n <div class=\"billingmain\"> {{clientinfo?.bankDetails?.swiftCode ||\r\n '--'}}\r\n </div>\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">Branch </div>\r\n <div class=\"billingmain\">{{clientinfo?.bankDetails?.branch || '--'}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!--end::Bank details Card-->\r\n\r\n\r\n <div class=\"col-xl-5 \">\r\n \r\n <!-- Add Billing start -->\r\n <div class=\"billing h-xl-100 w-100 flex-row flex-stack flex-wrap p-6\" *ngIf=\"!clientinfo?.billingDetails?.billingAddress\">\r\n <div class=\"modal-content align-items-center mt-2\">\r\n <div class=\"d-flex\">\r\n <div><img src=\"./assets/tango/custompopup-Icons/addbilling_icon.svg\"\r\n alt=\"\"></div>\r\n\r\n </div>\r\n <div class=\"heading mt-4 ms-1\">Add billing address</div>\r\n <div class=\"d-flex justify-content-center mt-8 w-100\">\r\n <button type=\"button\" tabindex=\"0\" (click)=\"update()\"\r\n class=\"btn btn-primary ms-2 ng-star-inserted address w-100\"\r\n style=\"white-space: nowrap;\"><span class=\"submit\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0003 4.16675V15.8334M4.16699 10.0001H15.8337\"\r\n stroke=\"white\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span> New Address </button>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <!-- Add Billing end -->\r\n <!-- Billing Information start -->\r\n <div class=\"billingcard h-xl-100 flex-row flex-stack flex-wrap p-6\" *ngIf=\"clientinfo?.billingDetails?.billingAddress && clientinfo?.billingDetails?.billingAddress!==''\">\r\n <div class=\"d-flex flex-column py-2\">\r\n <div\r\n class=\"d-flex align-items-center justify-content-between billingtext mb-5\">\r\n Billing\r\n <a type=\"submit\" (click)=\"update()\"\r\n class=\"btn update btn-lg btn-light btn-active-light-primary px-4 ng-star-inserted\"><span\r\n class=\"mt-2\">\r\n Update</span></a>\r\n\r\n </div>\r\n\r\n <div class=\"align-items-center\">\r\n\r\n <div class=\"billingdetails\">Next Billing Date</div>\r\n <div class=\"billingmain\">\r\n {{clientinfo?.billingDetails?.nextBillingDate || '--'}}\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <div class=\"align-items-center mt-6\">\r\n <div class=\"billingdetails\">Billing Address</div>\r\n <div class=\"billingmain\">\r\n {{clientinfo?.billingDetails?.billingAddress ||\r\n '--'}}\r\n </div>\r\n\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <!-- Billing Information End -->\r\n\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Billing & subscription End -->\r\n\r\n <!--subscription Config start -->\r\n <div class=\"card mt-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>Subscription Config <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n\r\n <ng-template>\r\n <div class=\"col-xl-12 billingcard\">\r\n <div class=\" h-xl-100 flex-row flex-stack flex-wrap mx-5 pt-4\">\r\n <div class=\"d-flex flex-column\">\r\n <!-- subscription info header start -->\r\n <div class=\"d-flex justify-content-between\">\r\n\r\n <div *ngIf=\"showNavGroup\" class=\"nav-group nav-group-outline mt-2\">\r\n <button\r\n class=\"btn btn-color-gray-600 btn-active btn-active-secondary px-6 py-3 me-2\"\r\n [ngClass]=\"plan === 'subscription'? 'activePlanBtn':'inactivePlanBtn'\"\r\n data-kt-plan=\"subscription\" (click)=\"selectPlan('subscription')\">\r\n Subscription\r\n </button>\r\n\r\n <button\r\n class=\"btn btn-color-gray-600 btn-active btn-active-secondary px-6 py-3\"\r\n [ngClass]=\"plan === 'pricing'? 'activePlanBtn':'inactivePlanBtn'\"\r\n data-kt-plan=\"pricing\" (click)=\"selectPlan('pricing')\">\r\n Pricing\r\n </button>\r\n </div>\r\n </div>\r\n <!-- subscription info header end -->\r\n\r\n <!-- subscription tab starts -->\r\n <div *ngIf=\"plan === 'subscription'\">\r\n <!-- client request card start -->\r\n <div class=\"row gx-4 mt-4\">\r\n <!--begin::Bank details Card-->\r\n <div class=\"col-xl-6\" [ngClass]=\"i > 1? 'mt-5' : ''\" *ngFor=\"let notification of notificationDetails.notificationList;let i= index;\">\r\n <!-- Billing Information start -->\r\n <div\r\n class=\"billingcard h-xl-100 flex-row flex-stack flex-wrap mb-6 px-6\">\r\n <div class=\"d-flex flex-column mt-10\" *ngIf=\"notification.category === 'Trial'\">\r\n <div\r\n class=\"d-flex align-items-center justify-content-between levelviewtext mb-2\">\r\n {{notification.name}} <span\r\n class=\"badge-light-grey ms-2\">{{currentPlan}}</span>\r\n </div>\r\n <div class=\"subtext\">Kindly make necessary action for trial\r\n request or skip product to subscription list</div>\r\n\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex mt-9\"><a (click)=\"approvetrial(notification,'cancel')\" type=\"submit\"\r\n class=\"btn-outline btn needhelp me-6 mt-3\"><span\r\n class=\"mt-6\">Skip Trail</span></a><a (click)=\"approvetrial(notification,'approve')\"\r\n type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 mt-3 ng-star-inserted\"><span>Approve\r\n Trail\r\n </span></a></div>\r\n </div>\r\n <div class=\"d-flex flex-column mt-10\" *ngIf=\"notification.category === 'unsubscribe'\">\r\n <div class=\"d-flex align-items-center justify-content-between levelviewtext mb-2\">\r\n Unsubscribe Request\r\n </div>\r\n <div class=\"subtext\">Client has requested to unsubscribe\r\n <span class=\"subtextbold\">Tango Suite</span>\r\n </div>\r\n \r\n <div data-kt-subscription-table-toolbar=\"base\" class=\"d-flex mt-9\"><a type=\"submit\"\r\n class=\"btn-outline btn needhelp me-6 mt-3\" (click)=\"cancelUnsubscribe(notification,'cancel')\"><span class=\"mt-6\">Cancel</span></a><a (click)=\"approveUnsubscribe(notification,'unsubscribe')\"\r\n type=\"button\" tabindex=\"0\" class=\"btn btn-danger px-4 mt-3 ng-star-inserted\"><span>Approve\r\n </span></a></div>\r\n </div>\r\n <div class=\"d-flex flex-column mt-10\" *ngIf=\"notification.category === 'trial product'\">\r\n <div class=\"d-flex align-items-center justify-content-between levelviewtext mb-2\">\r\n {{notification.name}} <span class=\"badge-light-grey ms-2\">{{currentPlan}}</span>\r\n </div>\r\n <div class=\"subtext\">Current Plan Info</div>\r\n <div class=\"row mt-7\">\r\n <div class=\"col-lg-8 d-flex\">\r\n <div><svg id=\"circle-chart\" width=\"94\" height=\"94\" viewBox=\"0 0 100 100\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <!-- Background circle -->\r\n <circle cx=\"50\" cy=\"50\" r=\"40\" fill=\"none\" stroke=\"#f0f0f0\" stroke-width=\"8\"></circle>\r\n <!-- Foreground circle -->\r\n <circle id=\"progress-circle-{{i}}\" cx=\"50\" cy=\"50\" r=\"40\" fill=\"none\" stroke=\"#007bff\" stroke-width=\"8\"\r\n stroke-dasharray=\"251.2\" [attr.stroke-dashoffset]=\"updateCircleChart(notification.percentage,i)\"></circle>\r\n <!-- Text displaying percentage -->\r\n <text id=\"percentage-text-{{i}}\" x=\"50\" y=\"54\" class=\"producttext\" text-anchor=\"middle\"\r\n fill=\"#333333\">{{notification.percentage}}%</text>\r\n </svg></div>\r\n <div class=\"align-items-start justify-content-between daysleft ms-6 mt-3\">\r\n {{notification.day}} Days Left\r\n <div class=\"align-items-start trail mt-2 me-14\">Free trial</div>\r\n </div>\r\n \r\n </div>\r\n <div class=\"col-lg-4 mt-6\">\r\n <div class=\"position-relative\">\r\n <div (click)=\"producttrailDropdown($event,i)\"> <span class=\"justify-content-end cursor-pointer ms-20\"><svg\r\n width=\"60\" height=\"60\" viewBox=\"0 0 60 60\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g filter=\"url(#filter0_d_5221_60143)\">\r\n <rect x=\"2\" y=\"1\" width=\"56\" height=\"56\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"55\" height=\"55\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <g clip-path=\"url(#clip0_5221_60143)\">\r\n <path\r\n d=\"M30 32C31.6569 32 33 30.6569 33 29C33 27.3431 31.6569 26 30 26C28.3431 26 27 27.3431 27 29C27 30.6569 28.3431 32 30 32Z\"\r\n stroke=\"#344054\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M37.4 32C37.2669 32.3016 37.2272 32.6362 37.286 32.9606C37.3448 33.285 37.4995 33.5843 37.73 33.82L37.79 33.88C37.976 34.0657 38.1235 34.2863 38.2241 34.5291C38.3248 34.7719 38.3766 35.0322 38.3766 35.295C38.3766 35.5578 38.3248 35.8181 38.2241 36.0609C38.1235 36.3037 37.976 36.5243 37.79 36.71C37.6043 36.896 37.3837 37.0435 37.1409 37.1441C36.8981 37.2448 36.6378 37.2966 36.375 37.2966C36.1122 37.2966 35.8519 37.2448 35.6091 37.1441C35.3663 37.0435 35.1457 36.896 34.96 36.71L34.9 36.65C34.6643 36.4195 34.365 36.2648 34.0406 36.206C33.7162 36.1472 33.3816 36.1869 33.08 36.32C32.7842 36.4468 32.532 36.6572 32.3543 36.9255C32.1766 37.1938 32.0813 37.5082 32.08 37.83V38C32.08 38.5304 31.8693 39.0391 31.4942 39.4142C31.1191 39.7893 30.6104 40 30.08 40C29.5496 40 29.0409 39.7893 28.6658 39.4142C28.2907 39.0391 28.08 38.5304 28.08 38V37.91C28.0723 37.579 27.9651 37.258 27.7725 36.9887C27.5799 36.7194 27.3107 36.5143 27 36.4C26.6984 36.2669 26.3638 36.2272 26.0394 36.286C25.715 36.3448 25.4157 36.4995 25.18 36.73L25.12 36.79C24.9343 36.976 24.7137 37.1235 24.4709 37.2241C24.2281 37.3248 23.9678 37.3766 23.705 37.3766C23.4422 37.3766 23.1819 37.3248 22.9391 37.2241C22.6963 37.1235 22.4757 36.976 22.29 36.79C22.104 36.6043 21.9565 36.3837 21.8559 36.1409C21.7552 35.8981 21.7034 35.6378 21.7034 35.375C21.7034 35.1122 21.7552 34.8519 21.8559 34.6091C21.9565 34.3663 22.104 34.1457 22.29 33.96L22.35 33.9C22.5805 33.6643 22.7352 33.365 22.794 33.0406C22.8528 32.7162 22.8131 32.3816 22.68 32.08C22.5532 31.7842 22.3428 31.532 22.0745 31.3543C21.8062 31.1766 21.4918 31.0813 21.17 31.08H21C20.4696 31.08 19.9609 30.8693 19.5858 30.4942C19.2107 30.1191 19 29.6104 19 29.08C19 28.5496 19.2107 28.0409 19.5858 27.6658C19.9609 27.2907 20.4696 27.08 21 27.08H21.09C21.421 27.0723 21.742 26.9651 22.0113 26.7725C22.2806 26.5799 22.4857 26.3107 22.6 26C22.7331 25.6984 22.7728 25.3638 22.714 25.0394C22.6552 24.715 22.5005 24.4157 22.27 24.18L22.21 24.12C22.024 23.9343 21.8765 23.7137 21.7759 23.4709C21.6752 23.2281 21.6234 22.9678 21.6234 22.705C21.6234 22.4422 21.6752 22.1819 21.7759 21.9391C21.8765 21.6963 22.024 21.4757 22.21 21.29C22.3957 21.104 22.6163 20.9565 22.8591 20.8559C23.1019 20.7552 23.3622 20.7034 23.625 20.7034C23.8878 20.7034 24.1481 20.7552 24.3909 20.8559C24.6337 20.9565 24.8543 21.104 25.04 21.29L25.1 21.35C25.3357 21.5805 25.635 21.7352 25.9594 21.794C26.2838 21.8528 26.6184 21.8131 26.92 21.68H27C27.2958 21.5532 27.548 21.3428 27.7257 21.0745C27.9034 20.8062 27.9987 20.4918 28 20.17V20C28 19.4696 28.2107 18.9609 28.5858 18.5858C28.9609 18.2107 29.4696 18 30 18C30.5304 18 31.0391 18.2107 31.4142 18.5858C31.7893 18.9609 32 19.4696 32 20V20.09C32.0013 20.4118 32.0966 20.7262 32.2743 20.9945C32.452 21.2628 32.7042 21.4732 33 21.6C33.3016 21.7331 33.6362 21.7728 33.9606 21.714C34.285 21.6552 34.5843 21.5005 34.82 21.27L34.88 21.21C35.0657 21.024 35.2863 20.8765 35.5291 20.7759C35.7719 20.6752 36.0322 20.6234 36.295 20.6234C36.5578 20.6234 36.8181 20.6752 37.0609 20.7759C37.3037 20.8765 37.5243 21.024 37.71 21.21C37.896 21.3957 38.0435 21.6163 38.1441 21.8591C38.2448 22.1019 38.2966 22.3622 38.2966 22.625C38.2966 22.8878 38.2448 23.1481 38.1441 23.3909C38.0435 23.6337 37.896 23.8543 37.71 24.04L37.65 24.1C37.4195 24.3357 37.2648 24.635 37.206 24.9594C37.1472 25.2838 37.1869 25.6184 37.32 25.92V26C37.4468 26.2958 37.6572 26.548 37.9255 26.7257C38.1938 26.9034 38.5082 26.9987 38.83 27H39C39.5304 27 40.0391 27.2107 40.4142 27.5858C40.7893 27.9609 41 28.4696 41 29C41 29.5304 40.7893 30.0391 40.4142 30.4142C40.0391 30.7893 39.5304 31 39 31H38.91C38.5882 31.0013 38.2738 31.0966 38.0055 31.2743C37.7372 31.452 37.5268 31.7042 37.4 32Z\"\r\n stroke=\"#344054\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_5221_60143\" x=\"0\" y=\"0\" width=\"60\" height=\"60\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_5221_60143\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_5221_60143\"\r\n result=\"shape\" />\r\n </filter>\r\n <clipPath id=\"clip0_5221_60143\">\r\n <rect width=\"24\" height=\"24\" fill=\"white\" transform=\"translate(18 17)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span></div>\r\n <div *ngIf=\"notification.producttraildropDown\" class=\"card py-2 w-200px position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let producttrailitem of producttrailtype\" class=\"list-unstyled mb-2\">\r\n <li \r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"producttrailItem(producttrailitem,notification)\">{{producttrailitem}}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n \r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n <!--end::Bank details Card-->\r\n </div>\r\n <!-- client request card end -->\r\n\r\n <!-- level view dropdown start -->\r\n <div *ngIf=\"sublevelview\"\r\n class=\"d-flex justify-content-between heading mt-6\">\r\n <div class=\"position-relative \">\r\n <div class=\"form-select dropselect levelviewtext\" id=\"currency\"\r\n (click)=\"viewplanDropdown($event)\"\r\n aria-label=\"Default select example\">{{viewplanIssue}}</div>\r\n <div *ngIf=\"viewplandropDown\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let viewplanitem of viewplantype\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.viewplanIssue === viewplanitem ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"viewplanItem(viewplanitem)\">{{viewplanitem}}\r\n </li>\r\n </ul>\r\n </div>\r\n <div class=\"text-sub\">Based on Current Subscribed Product</div>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div *ngIf=\"plan === 'subscription' && viewplanIssue === 'Product Level View'\"\r\n class=\" d-flex justify-content-end mt-6\">\r\n <lib-multidropdown text=\"Add Products\" [product]=\"productList\" [productList]=\"dataObject[0].Issues\" type=\"products\" [clientId]=\"clientId\" (data)=\"reload($event)\"></lib-multidropdown>\r\n </div>\r\n </div>\r\n <div class=\"card-toolbar mt-3\"\r\n *ngIf=\"viewplanIssue === 'Store Level View' && plan === 'subscription'\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"d-flex align-items-end position-relative my-1\">\r\n <span\r\n class=\"svg-icon svg-icon-1 position-absolute mb-3 ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\r\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\"\r\n width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\"\r\n fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" class=\"form-control ps-14 me-2\"\r\n placeholder=\"Search\" autocomplete=\"off\" (change)=\"searchRecords($event)\"/>\r\n <lib-filters class=\"me-2\"\r\n [dataObject]=\"dataObject\" (appliedFilters)=receiveData($event) ></lib-filters>\r\n <lib-multidropdown text=\"Add Products\" [productList]=\"dataObject[0].Issues\" type=\"stores\" [stores]=\"getStores()\" [product]=\"getProduct()\" [clientId]=\"clientId\" [clientProduct]=\"productList\" (data)=\"reload($event)\" [selectAll]=\"selectAll\"></lib-multidropdown>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- subscription config toolbar end -->\r\n </div>\r\n\r\n <ng-container *ngIf=\"loading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"noData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- product subscription plan start -->\r\n <div *ngIf=\"viewplanIssue === 'Product Level View' && !loading && !noData\" >\r\n <div class=\"card-body p-0 mt-4\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border\">\r\n <thead>\r\n <tr>\r\n <th>Product</th>\r\n <th>No of Stores</th>\r\n <th>Cost Per Store</th>\r\n\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let product of productList;let i=index;\">\r\n <td>\r\n <div class=\"table-title subscribedtext\">{{convertUpper(product?.product) || '--'}}</div>\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\">{{product?.storeCount || 0}}</div>\r\n\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\">${{product?.basePrice || 0}}</div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- product subscription plan end -->\r\n\r\n <!-- store subscription plan start -->\r\n <div *ngIf=\"viewplanIssue === 'Store Level View' && !loading && !noData\">\r\n <div class=\"card-body p-0 mt-6\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border\">\r\n <thead>\r\n <tr>\r\n <th>\r\n <div class=\"d-flex\">\r\n <input class=\"storeinput me-4\" [(ngModel)]=\"selectAll\"\r\n type=\"checkbox\" (click)=\"selectAllStore($event)\">\r\n <label class=\"form-check-label\"\r\n for=\"flexCheckDefault\">\r\n <span>Store Info</span>\r\n </label>\r\n </div>\r\n </th>\r\n <th>Location</th>\r\n <th>Products</th>\r\n <th>Actions</th>\r\n\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let store of storeList;let i=index;\">\r\n <td>\r\n <div class=\"d-flex \">\r\n <input class=\"storeinput me-4\"\r\n type=\"checkbox\" [(ngModel)]=\"store.checked\" (change)=\"updateCheck($event,store?.storeId)\">\r\n <div\r\n class=\"d-flex justify-content-start flex-column\">\r\n <label\r\n class=\"form-check-label table-title-primary\"\r\n for=\"flexCheckDefault\">\r\n <span>{{store?.storeName || '--'}}</span>\r\n </label>\r\n <span class=\"table-sub d-block7\">ID :\r\n {{store?.storeId || '--'}}</span>\r\n </div>\r\n </div>\r\n\r\n <div>\r\n\r\n\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{store?.storeProfile?.city || '--'}}</div>\r\n </td>\r\n\r\n <td>\r\n <span *ngFor=\"let product of store.product;let i=index;\"><span *ngIf=\"i<2\" class=\"badge badge-light-primary me-1\">{{product}}</span></span><span *ngIf=\"store.product.length > 2\">+{{store.product.length-2}}</span>\r\n </td>\r\n <td>\r\n <lib-multidropdown [product]=\"store.product\" [productList]=\"dataObject[0].Issues\" type=\"stores\" [stores]=\"[store?.storeId]\" [clientId]=\"clientId\" [clientProduct]=\"productList\" (data)=\"reload($event)\"></lib-multidropdown>\r\n </td>\r\n\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div class=\"mb-4\">\r\n <lib-pagination [itemsPerPage]=\"dynamicData.limit\" [currentPage]=\"dynamicData.offset\" [totalItems]=\"totalCount\" [paginationSizes]=\"[10,20,30]\"\r\n [pageSize]=\"dynamicData.limit\" (pageChange)=\"onStorePageChange($event)\" (pageSizeChange)=\"onStorePageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- store subscription plan end -->\r\n </div>\r\n <!-- subscription tab starts -->\r\n\r\n <!--pricing tab start -->\r\n <div *ngIf=\"plan === 'pricing'\">\r\n <div class=\"d-flex justify-content-between py-6\">\r\n <div class=\" levelviewtext mt-4\">\r\n Pricing Table<br><span class=\"text-sub\">Based on Product &\r\n stores</span> </div>\r\n <div class=\"card-toolbar\">\r\n <div class=\"justify-content-end\">\r\n <div class=\"producttext\">Switch to</div>\r\n <div *ngIf=\"PricingshowNav\"\r\n class=\"nav-group nav-group-outline mt-2\">\r\n <button\r\n class=\"btn btn-color-gray-600 btn-active btn-active-secondary px-6 py-3 me-2\"\r\n [ngClass]=\"pricingplan === 'standard'? 'activePlanBtnprimary':'inactivePlanBtn'\"\r\n data-kt-plan=\"standardprice\"\r\n (click)=\"selectPricePlan('standard')\">\r\n Standard Price\r\n </button>\r\n\r\n <button\r\n class=\"btn btn-color-gray-600 btn-active btn-active-secondary px-6 py-3\"\r\n [ngClass]=\"pricingplan === 'step'? 'activePlanBtnprimary':'inactivePlanBtn'\"\r\n data-kt-plan=\"stepprice\"\r\n (click)=\"selectPricePlan('step')\">\r\n Step Price\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"pricingplan === 'step'\" class=\"d-flex justify-content-end mb-8\">\r\n <button (click)=\"addstepprice('add')\" type=\"button\" class=\"btn-outline btn needhelp text-nowrap\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M10.4993 4.16675V15.8334M4.66602 10.0001H16.3327\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Add Step</span> </button>\r\n </div>\r\n\r\n <ng-container *ngIf=\"priceLoading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"priceNoData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"card-body p-0 mt-4\">\r\n <div *ngIf=\"pricingplan === 'standard' && !priceLoading && !priceNoData\" class=\"table-responsive\">\r\n <table class=\"table bottom-border\">\r\n <thead>\r\n <tr>\r\n <th>Product</th>\r\n <th>Actual Price</th>\r\n <th class=\"discountheader\">Discount %</th>\r\n <th class=\"negheader\">Negotiated Price</th>\r\n <th>Installed Stores</th>\r\n <th>Total Price</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor =\"let product of priceValueDetails.product;let i=index;\">\r\n <td>\r\n <div class=\"producttext\">{{convertUpper(product.productName)}}</div>\r\n\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{product.basePrice}}</div>\r\n\r\n </td>\r\n <td class=\"discountprice\">\r\n <div><input type=\"text\" class=\" form-control \"\r\n id=\"discountprice\"\r\n style=\"text-transform: capitalize;\" [(ngModel)]=\"product.discountPercentage\" (change)=\"calculate(i,'discount')\"></div>\r\n </td>\r\n <td class=\"negprice\">\r\n <div><input type=\"text\" class=\" form-control \"\r\n id=\"negprice\"\r\n style=\"text-transform: capitalize;\" [(ngModel)]=\"product.negotiatePrice\" (change)=\"calculate(i,'price')\"></div>\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\">{{product.storeCount}}</div>\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\">$ {{product.price}}</div>\r\n </td>\r\n </tr>\r\n <tr>\r\n <th>\r\n <div class=\"table-title\">Total Value</div>\r\n \r\n </th>\r\n <th>\r\n <div class=\"table-title bolddata\">${{priceValueDetails.actualPrice}}</div>\r\n \r\n </th>\r\n <th>\r\n <div class=\"table-title bolddata\">${{priceValueDetails.negotiatePrice}}</div>\r\n </th>\r\n <th><div class=\"table-title bolddata\">${{priceValueDetails.negotiatePrice}}</div></th>\r\n <th></th>\r\n \r\n <th>\r\n <div class=\"table-title bolddata\">$ {{priceValueDetails.totalNegotiatePrice}}</div>\r\n </th>\r\n \r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div *ngIf=\"pricingplan === 'step' && !priceLoading && !priceNoData\" class=\"table-responsive\">\r\n <table class=\"table bottom-border pricingtab\">\r\n <thead>\r\n <tr>\r\n <th>Product</th>\r\n <th>Actual Price</th>\r\n <th>Discount %</th>\r\n <th>Negotiated Price</th>\r\n <th>Store Range</th>\r\n <th>Installed Stores</th>\r\n <th>Total Price</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let product of priceValueDetails?.product;let i=index\">\r\n <td>\r\n <div class=\"producttext\">{{convertUpper(product.productName)}}\r\n <span class=\"ms-4\" *ngIf=\"product.showImg\"><img src=\"./assets/tango/custompopup-Icons/expiry-icon.svg\" alt=\"\"></span>\r\n </div>\r\n\r\n </td>\r\n <td>\r\n <div class=\"table-title\">${{product.basePrice}}</div>\r\n\r\n </td>\r\n <td class=\"discountprice\">\r\n <div><input type=\"text\" class=\" form-control \"\r\n id=\"discountprice\"\r\n style=\"text-transform: capitalize;\" [(ngModel)]=\"product.discountPercentage\" (change)=\"calculate(i,'discount')\"></div>\r\n </td>\r\n <td class=\"negprice\">\r\n <div><input type=\"text\" class=\" form-control \"\r\n id=\"negprice\"\r\n style=\"text-transform: capitalize;\" [(ngModel)]=\"product.negotiatePrice\" (change)=\"calculate(i,'price')\"></div>\r\n </td>\r\n <td class=\"storerange\">\r\n <div><input type=\"text\" class=\" form-control \"\r\n id=\"storerange\"\r\n style=\"text-transform: capitalize;\" [(ngModel)]=\"product.storeRange\" readonly></div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{product.storeCount}}</div>\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\">${{product.price}}</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title d-flex\" *ngIf=\"!product.showEditDelete\">\r\n <span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M3.16602 4.99935H4.83268M4.83268 4.99935H18.166M4.83268 4.99935V16.666C4.83268 17.108 5.00828 17.532 5.32084 17.8445C5.6334 18.1571 6.05732 18.3327 6.49935 18.3327H14.8327C15.2747 18.3327 15.6986 18.1571 16.0112 17.8445C16.3238 17.532 16.4993 17.108 16.4993 16.666V4.99935H4.83268ZM7.33268 4.99935V3.33268C7.33268 2.89065 7.50828 2.46673 7.82084 2.15417C8.1334 1.84161 8.55732 1.66602 8.99935 1.66602H12.3327C12.7747 1.66602 13.1986 1.84161 13.5112 2.15417C13.8238 2.46673 13.9993 2.89065 13.9993 3.33268V4.99935M8.99935 9.16602V14.166M12.3327 9.16602V14.166\"\r\n stroke=\"#D0D5DD\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span class=\"ms-6\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M14.832 2.5009C15.0509 2.28203 15.3107 2.10842 15.5967 1.98996C15.8827 1.87151 16.1892 1.81055 16.4987 1.81055C16.8082 1.81055 17.1147 1.87151 17.4007 1.98996C17.6867 2.10842 17.9465 2.28203 18.1654 2.5009C18.3842 2.71977 18.5579 2.97961 18.6763 3.26558C18.7948 3.55154 18.8557 3.85804 18.8557 4.16757C18.8557 4.4771 18.7948 4.7836 18.6763 5.06956C18.5579 5.35553 18.3842 5.61537 18.1654 5.83424L6.91536 17.0842L2.33203 18.3342L3.58203 13.7509L14.832 2.5009Z\"\r\n stroke=\"#D0D5DD\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div> \r\n <div class=\"cursor-pointer table-title d-flex\" *ngIf=\"product.showEditDelete\">\r\n <span (click)=\"addstepprice('delete',product,i)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M3.16602 4.99935H4.83268M4.83268 4.99935H18.166M4.83268 4.99935V16.666C4.83268 17.108 5.00828 17.532 5.32084 17.8445C5.6334 18.1571 6.05732 18.3327 6.49935 18.3327H14.8327C15.2747 18.3327 15.6986 18.1571 16.0112 17.8445C16.3238 17.532 16.4993 17.108 16.4993 16.666V4.99935H4.83268ZM7.33268 4.99935V3.33268C7.33268 2.89065 7.50828 2.46673 7.82084 2.15417C8.1334 1.84161 8.55732 1.66602 8.99935 1.66602H12.3327C12.7747 1.66602 13.1986 1.84161 13.5112 2.15417C13.8238 2.46673 13.9993 2.89065 13.9993 3.33268V4.99935M8.99935 9.16602V14.166M12.3327 9.16602V14.166\"\r\n stroke=\"#667085\"\r\n stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span (click)=\"addstepprice('edit',product,i)\" class=\"ms-6\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M14.832 2.5009C15.0509 2.28203 15.3107 2.10842 15.5967 1.98996C15.8827 1.87151 16.1892 1.81055 16.4987 1.81055C16.8082 1.81055 17.1147 1.87151 17.4007 1.98996C17.6867 2.10842 17.9465 2.28203 18.1654 2.5009C18.3842 2.71977 18.5579 2.97961 18.6763 3.26558C18.7948 3.55154 18.8557 3.85804 18.8557 4.16757C18.8557 4.4771 18.7948 4.7836 18.6763 5.06956C18.5579 5.35553 18.3842 5.61537 18.1654 5.83424L6.91536 17.0842L2.33203 18.3342L3.58203 13.7509L14.832 2.5009Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </td>\r\n\r\n </tr>\r\n <tr>\r\n <th>\r\n <div class=\"table-title\">Total Value</div>\r\n\r\n </th>\r\n <th>\r\n <div class=\"table-title bolddata\">${{priceValueDetails.actualPrice}}</div>\r\n\r\n </th>\r\n <th>\r\n <div class=\"table-title bolddata\">${{priceValueDetails.negotiatePrice}}</div>\r\n </th>\r\n <th><div class=\"table-title bolddata\">${{priceValueDetails.negotiatePrice}}</div></th>\r\n <th></th>\r\n <th></th>\r\n <th>\r\n <div class=\"table-title bolddata\">$ {{priceValueDetails.totalNegotiatePrice}}</div>\r\n </th>\r\n <th></th>\r\n\r\n </tr>\r\n\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <div class=\"card-body pt-14\" *ngIf=\"!priceLoading && !priceNoData\">\r\n <div class=\"d-flex flex-stack\">\r\n <div class=\"fianlvaltext me-2\">Actual Value</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\">$ {{priceValueDetails.totalActualPrice}}</span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-stack pt-4\">\r\n <div class=\"fianlvaltext me-2\">Discount</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\">{{priceValueDetails.discountPercentage}}% (- $ {{priceValueDetails.discountPrice}})</span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-stack pt-4\">\r\n <div class=\"fianlvaltext me-2\">Negotiated Value</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\">${{priceValueDetails.totalNegotiatePrice}}</span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-stack pt-4\">\r\n <div class=\"fianlvaltext me-2\">Tax</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\">18% GST</span>\r\n </div>\r\n </div>\r\n <hr>\r\n\r\n <div class=\"d-flex flex-stack py-2\">\r\n <div class=\"fianlvaltext me-2\">Final Value</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\">$ {{priceValueDetails.finalValue}}</span>\r\n </div>\r\n </div>\r\n\r\n <hr>\r\n\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex justify-content-end py-3\"><a type=\"submit\"\r\n class=\"btn-outline btn needhelp me-4 mt-3\" (click)=\"revertOriginalPrice()\">Cancel</a><a\r\n (click)=\"pricingrevised()\" type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 mt-3 ng-star-inserted\"><span>Save\r\n </span></a></div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- pricing tab plan end -->\r\n\r\n\r\n\r\n <!-- submit plan start -->\r\n <div *ngIf=\"plan === 'storesubscription'\" class=\"row\">\r\n <div class=\"col-lg-8\">\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex justify-content-end py-3\"><a type=\"submit\"\r\n class=\"btn-outline btn needhelp me-4 mt-3\">Cancel</a><a\r\n (click)=\"pricingrevised()\" type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 mt-3 ng-star-inserted\"><span>Apply\r\n Changes\r\n </span></a></div>\r\n </div>\r\n\r\n </div>\r\n <!-- submit plan end -->\r\n </div>\r\n </div>\r\n </div>\r\n <!-- product info end -->\r\n\r\n <!-- payment invoice start -->\r\n <div class=\"col-xl-12 my-4 billingcard\">\r\n <form [formGroup]=\"paymentinvoiceform\">\r\n <div class=\"d-flex justify-content-between ps-4 pt-6\">\r\n <!--begin::Title-->\r\n <h3 class=\"align-items-start flex-column\">\r\n <span class=\"heading mb-2\">Payment and Invoice</span>\r\n </h3>\r\n <!--end::Title-->\r\n\r\n <!--begin::Toolbar-->\r\n <div class=\"card-toolbar mb-2\" *ngIf=\"paymentinvoiceshow\">\r\n <button (click)=\"onpaymentedit()\" type=\"submit\" \r\n class=\"btn-outline btn align-items-end needhelp me-4\"><span\r\n class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n <!--end::Toolbar-->\r\n </div>\r\n <!-- payment invoice form start -->\r\n <div class=\"d-flex flex-column row fv-row fv-plugins-icon-container py-4 px-4\">\r\n \r\n <div class=\"row\">\r\n <div class=\"col-lg-6\">\r\n <div class=\"form-group pt-1\">\r\n <label for=\"paymentcycle\" class=\"headingtext mb-2\">Enable Pro-Rate\r\n for Charges</label>\r\n <div class=\"d-flex mt-3\">\r\n <div class=\"form-check form-check-inline ps-0\"\r\n (click)=\"pricingType($event, 'before15')\">\r\n <input formControlName=\"radiooptions\"\r\n class=\"radio-custom cursor-pointer radioButton\" type=\"radio\"\r\n id=\"inlineRadio1\" value=\"before15\" name=\"radiooptions\" >\r\n <label\r\n class=\"form-check-label radio-custom-label mx-3 headingtext cursor-pointer\"\r\n for=\"inlineRadio1\">Before 15th of Month</label>\r\n </div>\r\n <div class=\"form-check form-check-inline ps-0\"\r\n (click)=\"pricingType($event, 'after15')\">\r\n <input class=\"radio-custom cursor-pointer radioButton\" type=\"radio\"\r\n formControlName=\"radiooptions\" id=\"inlineRadio2\"\r\n value=\"after15\" name=\"radiooptions\" readonly>\r\n <label\r\n class=\"form-check-label headingtext radio-custom-label mx-3 cursor-pointer\"\r\n for=\"inlineRadio1\">After 15th of Month</label>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n <div class=\"form-group pt-6\">\r\n <label for=\"paymentcycle\" class=\"headingtext mb-2\">Payment\r\n Cycle</label>\r\n\r\n <div class=\"position-relative\">\r\n <div class=\"form-select dropselect\" id=\"paymentcycle\"\r\n (click)=\"openDropdown($event)\"\r\n aria-label=\"Default select example\">{{selectedIssue ===\r\n 'monthly' ? 'Monthly' : selectedIssue === 'quaterly' ?\r\n 'Quaterly' : 'Annual'}}</div>\r\n <div *ngIf=\"dropDown && !paymentinvoiceshow\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let item of dropdownItems\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.selectedIssue === item.value ? 'active' : ''\" \r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"selectItem(item.value)\">{{item.name}}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group pt-6\">\r\n <label for=\"invoiceTo\" class=\"headingtext mb-2\">Generate\r\n Invoice To <span> <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2706_25324)\">\r\n <path\r\n d=\"M7.99967 10.6663V7.99967M7.99967 5.33301H8.00634M14.6663 7.99967C14.6663 11.6816 11.6816 14.6663 7.99967 14.6663C4.31778 14.6663 1.33301 11.6816 1.33301 7.99967C1.33301 4.31778 4.31778 1.33301 7.99967 1.33301C11.6816 1.33301 14.6663 4.31778 14.6663 7.99967Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2706_25324\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></label>\r\n\r\n <div class=\"outer-container\">\r\n <div class=\" input-container form-control\">\r\n <ng-container\r\n *ngFor=\"let invoiceTo of generateinvoiceList; let i = index\">\r\n\r\n <span class=\"chip\">\r\n <span class=\"me-3\">{{invoiceTo}}</span>\r\n <span *ngIf=\"paymentinvoiceform.enabled\"\r\n (click)=\"removeChip(i)\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"12\" height=\"12\" viewBox=\"0 0 12 12\"\r\n fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span>\r\n </ng-container> \r\n <input style=\"min-height: 44px;\" formControlName=\"invoiceTo\" \r\n (keydown)=\"onKeyDown($event)\" type=\"text\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group pt-6\">\r\n <label for=\"generateinvoiceon\" class=\"headingtext mb-2\">Generate\r\n Invoice\r\n On\r\n </label>\r\n <div class=\"position-relative\">\r\n <div class=\"form-select dropselect\" id=\"generateinvoiceon\"\r\n (click)=\"invoiceDropdown($event)\"\r\n aria-label=\"Default select example\">{{invoiceonIssue ===\r\n 'lastday' ? 'Last Day of the Month' :'25th of the Month'}}\r\n </div>\r\n <div *ngIf=\"invoicedropDown && !paymentinvoiceshow\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let invoiceitem of generateinvoiceon\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.invoiceonIssue === invoiceitem.value ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"invoiceItem(invoiceitem.value)\">\r\n {{invoiceitem.name}}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-lg-6\">\r\n <div class=\"form-group pt-1\">\r\n <label for=\"paymenttype\" class=\"headingtext mb-2\">Payment\r\n Type</label>\r\n <div class=\"position-relative\">\r\n <div class=\"form-select dropselect\" id=\"paymenttype\"\r\n (click)=\"paymenttypeDropdown($event)\"\r\n aria-label=\"Default select example\">{{paymentIssue ===\r\n 'online' ? 'online Payment' :'Bank Transfer'}}</div>\r\n <div *ngIf=\"paymenttypedropDown && !paymentinvoiceshow\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let paymentitem of paymenttype\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.paymentIssue === paymentitem.value ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"paymentItem(paymentitem.value)\">\r\n {{paymentitem.name}}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group pt-6\">\r\n <label for=\"currency\" class=\"headingtext mb-2\">Currency</label>\r\n <div class=\"position-relative\">\r\n <div class=\"form-select dropselect\" id=\"currency\"\r\n (click)=\"currencyDropdown($event)\"\r\n aria-label=\"Default select example\">{{currencyIssue === 'inr'\r\n ? 'INR' :'Doller'}}</div>\r\n <div *ngIf=\"currencydropDown && !paymentinvoiceshow\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let currencyitem of currencytype\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.currencyIssue === currencyitem.value ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"currencyItem(currencyitem.value)\">\r\n {{currencyitem.name}}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group pt-6\">\r\n <label for=\"sendpayment\" class=\"headingtext mb-2\">Send Payment\r\n Agreement<span class=\"ms-2\"> <svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2706_25324)\">\r\n <path\r\n d=\"M7.99967 10.6663V7.99967M7.99967 5.33301H8.00634M14.6663 7.99967C14.6663 11.6816 11.6816 14.6663 7.99967 14.6663C4.31778 14.6663 1.33301 11.6816 1.33301 7.99967C1.33301 4.31778 4.31778 1.33301 7.99967 1.33301C11.6816 1.33301 14.6663 4.31778 14.6663 7.99967Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2706_25324\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></label>\r\n\r\n\r\n <div class=\"outer-container\">\r\n <div class=\" input-container form-control\">\r\n <ng-container\r\n *ngFor=\"let paymentAgreementTo of paymentallowedList; let i = index\">\r\n <span class=\"chip\">\r\n <span class=\"me-3\">{{paymentAgreementTo}}</span>\r\n <span *ngIf=\"paymentinvoiceform.enabled\"\r\n (click)=\"sendpaymentremoveChip(i)\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"12\" height=\"12\" viewBox=\"0 0 12 12\"\r\n fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span>\r\n </ng-container>\r\n <input style=\"min-height: 44px;\"\r\n formControlName=\"paymentAgreementTo\" \r\n (keydown)=\"sendpaymentonKeyDown($event)\" type=\"text\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group pt-6\">\r\n <label for=\"extendPaymentPeriodDays\" class=\" headingtext mb-2\">Extend Payment\r\n Period Days </label>\r\n <div class=\"w-lg-100 position-relative\">\r\n <div\r\n class=\"position-absolute translate-middle-y top-50 me-5 ps-3 ticketDays\">\r\n <span class=\"svg-icon toggle-off svg-icon-1\"\r\n (click)=\"paymentinvoiceform.get('extendPaymentPeriodDays')?.value > 0 && paymentinvoiceform.enabled ? paymentinvoiceform.get('extendPaymentPeriodDays')?.setValue(paymentinvoiceform.get('extendPaymentPeriodDays')?.value - 1) : null\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M4.16699 10H15.8337\" stroke=\"#667085\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n <input type=\"text\" class=\"form-control\" id=\"extendPaymentPeriodDays\" readonly\r\n formControlName=\"extendPaymentPeriodDays\" style=\"text-align: center;\" [(ngModel)]=\"extendPaymentPeriodDays\"\r\n autocomplete=\"off\"/>\r\n <div\r\n class=\"position-absolute translate-middle-y top-50 end-0 me-3\">\r\n <span class=\"svg-icon toggle-on svg-icon-1 ticketDays\"\r\n (click)=\"paymentinvoiceform.enabled ? paymentinvoiceform.get('extendPaymentPeriodDays')?.setValue(paymentinvoiceform.get('extendPaymentPeriodDays')?.value + 1) : null\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\"\r\n height=\"16\" viewBox=\"0 0 17 16\" fill=\"none\">\r\n <path\r\n d=\"M8.49967 3.33301V12.6663M3.83301 7.99967H13.1663\"\r\n stroke=\"#667085\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n \r\n <div class=\"d-flex justify-content-end mt-6\" *ngIf=\"!paymentinvoiceshow\">\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex justify-content-end\"><a type=\"submit\"\r\n class=\"btn-outline btn needhelp me-4\"(click)=\"onpaymentCancel()\">Cancel</a><a type=\"button\"\r\n tabindex=\"0\"\r\n class=\"btn btn-primary px-4 ng-star-inserted\" (click)=\"onpaymentSubmit()\"><span>Apply\r\n Changes\r\n </span></a></div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <!-- payment invoice form end -->\r\n \r\n </form>\r\n </div>\r\n <!-- payment invoice end -->\r\n\r\n </ng-template>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <!-- subscription config End -->\r\n\r\n <!--Invoices start -->\r\n <div class=\"card mt-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>Invoices <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <div class=\"card-header Historyheader\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Payment History</span>\r\n\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\"\r\n rx=\"1\" transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\">\r\n </rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input [(ngModel)]=\"searchInput\" type=\"text\" class=\"form-control ps-14 me-4\"\r\n placeholder=\"Search\" autocomplete=\"off\" (change)=\"searchField()\" />\r\n\r\n <div class=\"me-3 monthwidth\">\r\n <div class=\"dropdown\">\r\n <select class=\"form-select \" aria-label=\"Default select example\">\r\n <option selected>Current Month</option>\r\n <option value=\"1\">Previous Month</option>\r\n <option value=\"2\">Last 3 Mon</option>\r\n\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <button (click)=\"creditnote()\" type=\"button\"\r\n class=\"btn-outline btn align-items-end text-nowrap me-4\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M10.4993 4.16675V15.8334M4.66602 10.0001H16.3327\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span>Credit Note</span> </button>\r\n <button type=\"button\" (click)=\"onExport()\"\r\n class=\"btn-outline btn align-items-end text-nowrap me-4\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\"></span> Export</button>\r\n\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-template>\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border\">\r\n <thead>\r\n <tr>\r\n <th>Invoice #</th>\r\n <th>Billing date</th>\r\n <th>Stores</th>\r\n <th>Products</th>\r\n <th>Amount</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let invoice of invoiceList\">\r\n <td>\r\n <div class=\"table-title-primary invoice\">{{invoice?.invoice}}</div>\r\n <span class=\"badge badge-light-success\">{{invoice?.status}}</span>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{invoice?.billingDate}} </div>\r\n\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{invoice?.stores}}</div>\r\n\r\n </td>\r\n\r\n <td><span *ngFor=\"let product of invoice?.products; let i = index\"><span\r\n [class]=\"getColorClass(product)\"\r\n *ngIf=\"i<2\">{{product}}</span><span class=\"productextend\"\r\n *ngIf=\"i>=2\">+{{invoice?.products.length - 2 }}</span></span>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{invoice?.amount}}</div>\r\n </td>\r\n <td>\r\n <span class=\"pointer\"><svg class=\"mt-3\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </td>\r\n\r\n </tr>\r\n </tbody>\r\n </table>\r\n <lib-pagination class=\"text-start\" [itemsPerPage]=\"itemsPerPage\" [currentPage]=\"currentPage\"\r\n [totalItems]=\"totalItems\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <!--Invoices end -->\r\n </div>\r\n </div>", styles: [".accordion-button:not(.collapsed){color:none!important;background-color:#fff!important;box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed){color:none!important;background-color:var(--bs-accordion-active-bg);box-shadow:none!important}.billingcard{border-radius:12px;border:1px solid var(--Gray-300, #D0D5DD);background:#fff}.heading{color:var(--Gray-900, #101828);font-size:18px;font-weight:600}.subheading{color:var(--Gray-900, #101828);font-size:16px;font-weight:400;line-height:24px}.sub{color:var(--Gray-900, #101828);font-size:14px;font-weight:400;line-height:20px}.pricingtext{color:var(--Gray-800, #1D2939);font-size:30px;font-weight:600;line-height:38px}.pricingspan{color:var(--Gray-500, #667085);font-size:18px;font-weight:500;line-height:28px}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}input [type=text] [disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{background-color:#f9fafb!important}input[type=text]{color:#101828;border:1px solid #D0D5DD!important;box-shadow:0 1px 2px #1018280d;border-radius:8px;font-size:16px;width:100%;padding:10px 14px;font-weight:400;line-height:24px}input:active [type=text],input:focus [type=text],input:focus-visible [type=text]{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD)!important;box-shadow:0 1px 2px #1018280d;outline:none!important;background:var(--Gray-50, #F9FAFB)}.mainheading{color:var(--Black, #101828);font-size:18px;font-weight:600;line-height:28px}.trail{color:var(--Gray-500, #667085);font-size:18px;font-weight:600;line-height:28px}.daysleft{color:var(--Error-700, #B42318);text-align:center;font-size:12px;font-weight:500;line-height:18px}.subtext{color:var(--Gray-500, #667085);font-size:12px;font-weight:500;line-height:18px}.needhelp{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:20px;text-transform:capitalize}.billingtext{color:#000;font-size:20px;font-weight:500;line-height:30px}.billingdetails{color:var(--Gray-500, #667085);font-size:16px;font-weight:500;line-height:24px}.billingmain{color:#000;font-size:16px;font-weight:600;line-height:24px}.update{border-radius:8px;border:1px solid var(--Primary-50, #EAF8FF);box-shadow:0 1px 2px #1018280d;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.address{border-radius:8px;border:1px solid var(--Primary-600, #00A3FF);background:var(--Primary-600, #00A3FF);box-shadow:0 1px 2px #1018280d}.billing{border-radius:12px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-25, #F6FCFF)}.activePlanBtn{border-radius:6px;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a!important;color:var(--Gray-700, #344054);font-size:14px!important;font-weight:500!important;line-height:20px}.inactivePlanBtn{color:var(--Gray-500, #667085)!important;font-size:14px;font-weight:500!important;line-height:20px}.activePlanBtnprimary{border-radius:6px;background:var(--Primary-50, #EAF8FF)!important;box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a!important;color:var(--Primary-700, #009BF3);font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.nav-group{background:var(--Gray-50, #F9FAFB)!important;border-radius:8px!important;border:1px solid var(--Gray-100, #F2F4F7)!important;width:fit-content}.form-check-label{color:var(--Gray-700, #344054)!important}::ng-deep .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#fff!important;border:1px solid black;width:100%!important}.fieldwidth{width:100%!important;background-color:#fff!important}.text-sub{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:400!important;line-height:20px}.border-val{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}.table-title-primary{color:var(--Primary-700, #009BF3)!important;font-weight:500!important}.table-sub{line-height:30px!important;color:var(--Gray-500, #667085)!important}.illustcontent{color:var(--Gray-900, #101828);font-size:16px;font-weight:600}.nav-item .nav-link{color:var(--Gray-500, #667085);font-size:16px;font-weight:500}.pointer{cursor:pointer}.invoice{width:120%}.monthwidth{width:65%}.storeinput{width:10%!important;box-shadow:none!important}.storerange{width:15%!important}.discountprice{width:11%!important}.negprice{width:14%}.discountheader{width:12%}.negheader{width:16%}.bolddata{font-weight:700!important;color:var(--Gray-700, #344054)!important}.producttext{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.table:not(.table-bordered) tbody tr:last-child{border-bottom:1px solid #EAECF0!important}hr{border:1px solid var(--Gray-300, #D0D5DD);height:1px!important}.fianlvaltext{color:var(--Gray-500, #667085);font-size:16px;font-weight:600;line-height:24px}.input-group-text{background-color:#fff!important;color:var(--Gray-400, #98A2B3);font-size:16px;font-weight:400;line-height:24px}.discountinput{width:80px!important;text-align:center;color:var(--Gray-500, #667085);font-size:18px;font-weight:500;line-height:28px}.radio-custom{width:20px;height:20px;background-color:#eaf8ff}.radio-custom,.radio-custom-label{display:inline-block;vertical-align:middle;margin:8px 0;cursor:pointer}.radio-custom-label{position:relative}.radio-custom:checked+.radio-custom-label:before{background:#00a3ff;box-shadow:inset 0 0 0 4.5px #eaf8ff;width:16px;height:16px}.outer-container{position:relative}.outer-container .form-control{padding-top:0;padding-bottom:0}.outer-container .input-container{border:1px solid black;height:100%;width:100%;display:flex;flex-wrap:wrap}.outer-container .input-container input{all:unset;flex:1;min-width:50px;border:none!important}.outer-container .input-container .chip{margin:10px 0 10px 10px;padding:3px 10px;border-radius:16px;background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.outer-container .input-container .chip:nth-child(1){margin-left:0}.form-control{display:block;padding:.5rem 1rem;font-size:1.1rem;font-weight:400;color:var(--Gray-500, #667085);-webkit-appearance:none;appearance:none;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}tr{vertical-align:middle!important}.levelviewtext{color:var(--Gray-800, #1D2939);font-family:Inter;font-size:18px;border:none!important;font-weight:600;line-height:28px;padding-left:0!important}.subscribedtext{color:var(--Primary-700, #009BF3);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:45px!important}.badge-light-grey{border-radius:16px;background:var(--Gray-100, #F2F4F7);display:flex;padding:4px 12px;justify-content:center;align-items:center;color:var(--Gray-700, #344054);text-align:center;font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.daysleft{color:var(--Gray-800, #1D2939);font-family:Inter;font-size:24px;font-style:normal;font-weight:500;line-height:32px}.btn-danger{border-radius:8px;border:1px solid var(--Error-600, #D92D20);background:var(--Error-600, #D92D20);box-shadow:0 1px 2px #1018280d}.subtextbold{color:var(--Gray-500, #667085);font-family:Inter;font-size:12px;font-style:normal;font-weight:700;line-height:18px}.toastcard{border-radius:4px;border-left:2px solid #00A3FF;background:#f5f8fa;box-shadow:0 4px 16px #0000001a;display:flex;height:68px;padding:6px 12px 6px 16px;align-items:center;gap:16px;align-self:stretch}.toasttext{color:var(--Gray-500, #667085);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}.billingupdate{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);color:var(--Gray-700, #344054);font-family:Inter;font-size:12px;font-weight:600;line-height:18px;text-transform:capitalize}.pricingtab{width:115%}.items:hover,.tems.focus,.items.active,.camera.focus-visible{background:var(--Gray-50, #F9FAFB)}.dropselect{color:var(--Gray-500, #667085);font-family:Inter;font-size:16px;font-style:normal;font-weight:400;line-height:24px}.Historyheader{padding:0 .25rem}.product-traffic{color:var(--Blue-700, #175CD3);text-align:center;font-family:Inter;font-size:12px;font-weight:500;border-radius:16px;background:var(--Blue-50, #EFF8FF)}.productextend{border-radius:16px;background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054);text-align:center;font-family:Inter;font-size:12px;font-weight:500;padding:2px 8px}.product-zone{border-radius:16px;background:var(--Indigo-50, #EEF4FF);padding:2px 8px;color:var(--Indigo-700, #3538CD);text-align:center;font-family:Inter;font-size:12px;font-weight:500}.product-sop{color:var(--Purple-700, #5925DC);text-align:center;font-family:Inter;font-size:12px;font-weight:500;border-radius:16px;background:var(--Purple-50, #F4F3FF)}.prioritysupport{color:var(--Pink-700, #C11574);text-align:center;font-family:Inter;font-size:12px;font-weight:500;border-radius:16px;background:var(--Pink-50, #FDF2FA)}::ng-deep .custom-tooltip{border-radius:8px;background:var(--White, #FFF);padding:8px 12px;color:var(--Gray-700, #344054);text-align:center;font-family:Inter;font-size:12px;font-weight:600;line-height:18px}.plancard{width:65%!important}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}\n"] }]
|
|
944
|
-
}], ctorParameters: () => [{ type: i1.NgbModal }, { type: i2.FormBuilder }, { type: i3.PaymentSubscriptionService }, { type: i0.ChangeDetectorRef }, { type: i4.ToastService }, { type: i5.GlobalStateService }]
|
|
945
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudHMtc3Vic2NyaXB0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1zZXR0aW5ncy9zcmMvbGliL2NvbXBvbmVudHMvcGF5bWVudHMtc3Vic2NyaXB0aW9uL3BheW1lbnRzLXN1YnNjcmlwdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2Utc2V0dGluZ3Mvc3JjL2xpYi9jb21wb25lbnRzL3BheW1lbnRzLXN1YnNjcmlwdGlvbi9wYXltZW50cy1zdWJzY3JpcHRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBK0MsTUFBTSxFQUF1RCxNQUFNLGVBQWUsQ0FBQztBQUVwSixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDeEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDakcsT0FBTyxFQUEwQixVQUFVLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBQWMsT0FBTyxFQUFzQyxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUYsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDOUYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDMUcsT0FBTyxFQUFFLGVBQWUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFhLE1BQU0sTUFBTSxDQUFDO0FBRWxFLE9B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QU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsRixTQUFTLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25FLE9BQU8sU0FBUyxHQUFHLEdBQUcsR0FBRyxVQUFVLENBQUM7SUFDdEMsQ0FBQzt1R0F2K0JVLDZCQUE2QjsyRkFBN0IsNkJBQTZCLGlFQzNCMUMsb2wxSEFzMENVOzsyRkQzeUNHLDZCQUE2QjtrQkFOekMsU0FBUzsrQkFDRSwyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIGluamVjdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBVcGRhdGVDb21wb25lbnQgfSBmcm9tICcuL3N1YnNjcmlwdGlvbi1wb3B1cHMvdXBkYXRlL3VwZGF0ZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBOZWVkSGVscENvbXBvbmVudCB9IGZyb20gJy4vc3Vic2NyaXB0aW9uLXBvcHVwcy9uZWVkLWhlbHAvbmVlZC1oZWxwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFVwZ3JhZGVQbGFuQ29tcG9uZW50IH0gZnJvbSAnLi9zdWJzY3JpcHRpb24tcG9wdXBzL3VwZ3JhZGUtcGxhbi91cGdyYWRlLXBsYW4uY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQnVpbGRlciwgVmFsaWRhdG9ycywgRm9ybUFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ09NTUEsIEVOVEVSIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IExpdmVBbm5vdW5jZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XHJcbmltcG9ydCB7IENyZWRpdE5vdGVDb21wb25lbnQgfSBmcm9tICcuL3N1YnNjcmlwdGlvbi1wb3B1cHMvY3JlZGl0LW5vdGUvY3JlZGl0LW5vdGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUHJpY2luZ1JldmlzZWRDb21wb25lbnQgfSBmcm9tICcuL3N1YnNjcmlwdGlvbi1wb3B1cHMvcHJpY2luZy1yZXZpc2VkL3ByaWNpbmctcmV2aXNlZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG1hcCwgc3dpdGNoTWFwLCBzdGFydFdpdGggfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wYXltZW50LXN1YnNjcmlwdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWRkU3RlcHByaWNlQ29tcG9uZW50IH0gZnJvbSAnLi9zdWJzY3JpcHRpb24tcG9wdXBzL2FkZC1zdGVwcHJpY2UvYWRkLXN0ZXBwcmljZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktc2hhcmVkJztcclxuaW1wb3J0IHsgU2tpcFRyYWlsQ29tcG9uZW50IH0gZnJvbSAnLi9zdWJzY3JpcHRpb24tcG9wdXBzL3NraXAtdHJhaWwvc2tpcC10cmFpbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUcmFpbFNldHRpbmdzQ29tcG9uZW50IH0gZnJvbSAnLi9zdWJzY3JpcHRpb24tcG9wdXBzL3RyYWlsLXNldHRpbmdzL3RyYWlsLXNldHRpbmdzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFVuc3Vic2NyaWJlUmVxdWVzdENvbXBvbmVudCB9IGZyb20gJy4vc3Vic2NyaXB0aW9uLXBvcHVwcy91bnN1YnNjcmliZS1yZXF1ZXN0L3Vuc3Vic2NyaWJlLXJlcXVlc3QuY29tcG9uZW50JztcclxuaW1wb3J0IFN3YWwgZnJvbSAnc3dlZXRhbGVydDInO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktZ2xvYmFsJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItcGF5bWVudHMtc3Vic2NyaXB0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcGF5bWVudHMtc3Vic2NyaXB0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vcGF5bWVudHMtc3Vic2NyaXB0aW9uLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFBheW1lbnRzU3Vic2NyaXB0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBjbGllbnRpbmZvOiBhbnk7XHJcbiAgbGlzdDogYW55W107XHJcbiAgc2VsZWN0OiBzdHJpbmcgPSAnYmVmb3JlMTUnO1xyXG4gIHNlcGFyYXRvcktleXNDb2RlczogbnVtYmVyW10gPSBbRU5URVIsIENPTU1BXTtcclxuICBhbm5vdW5jZXIgPSBpbmplY3QoTGl2ZUFubm91bmNlcik7XHJcbiAgcGxhbjogc3RyaW5nID0gJ3N1YnNjcmlwdGlvbic7XHJcbiAgc2hvd05hdkdyb3VwOiBib29sZWFuID0gdHJ1ZTtcclxuICBQcmljaW5nc2hvd05hdjogYm9vbGVhbiA9IHRydWU7XHJcbiAgc3VibGV2ZWx2aWV3OiBib29sZWFuID0gdHJ1ZTtcclxuICBjb3VudDogbnVtYmVyID0gMTtcclxuICBkYXlzQ291bnQ6IGFueSA9ICcnO1xyXG4gIGN1cnJlbnRwbGFuZm9ybTogRm9ybUdyb3VwO1xyXG4gIHBheW1lbnRpbnZvaWNlZm9ybTogRm9ybUdyb3VwO1xyXG4gIHBheW1lbnRhbGxvd2VkTGlzdDogYW55ID0gW11cclxuICBnZW5lcmF0ZWludm9pY2VMaXN0OiBhbnkgPSBbXVxyXG4gICRnZW5lcmF0ZWludm9pY2VJbnRlcnJ1cHQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpXHJcbiAgJHNlbmRwYXltZW50SW50ZXJydXB0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKVxyXG4gIG9wZW5hY2NvcmRpYW4gPSBmYWxzZTtcclxuICBicmFuZE5hbWU6IHN0cmluZyA9ICcnO1xyXG4gIHNlYXJjaElucHV0OiBhbnk7XHJcbiAgZ3N0TnVtYmVyOiBzdHJpbmcgPSAnJztcclxuICBiaWxsaW5nQWRkcmVzczogc3RyaW5nID0gJyc7XHJcbiAgcHJpY2luZ3BsYW46IHN0cmluZyA9ICdzdGFuZGFyZCc7XHJcbiAgZHJvcERvd246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpbnZvaWNlZHJvcERvd246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwYXltZW50dHlwZWRyb3BEb3duOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY3VycmVuY3lkcm9wRG93bjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHZpZXdwbGFuZHJvcERvd246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcm9kdWN0dHJhaWxkcm9wRG93bjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRyb3Bkb3duSXRlbXM6IGFueVtdID0gW3sgbmFtZTogJ01vbnRobHknLCB2YWx1ZTogJ21vbnRobHknIH0sIHsgbmFtZTogJ1F1YXRlcmx5JywgdmFsdWU6ICdxdWF0ZXJseScgfSwgeyBuYW1lOiAnQW5udWFsJywgdmFsdWU6ICdhbm51YWwnIH1dO1xyXG4gIGdlbmVyYXRlaW52b2ljZW9uOiBhbnlbXSA9IFt7IG5hbWU6ICdMYXN0IERheSBvZiB0aGUgTW9udGgnLCB2YWx1ZTogJ2xhc3RkYXknIH0sIHsgbmFtZTogJzI1dGggb2YgdGhlIE1vbnRoJywgdmFsdWU6ICcyNXRoJyB9XTtcclxuICBwYXltZW50dHlwZTogYW55W10gPSBbeyBuYW1lOiAnT25saW5lIFBheW1lbnQnLCB2YWx1ZTogJ29ubGluZScgfSwgeyBuYW1lOiAnQmFuayBUcmFuc2ZlcicsIHZhbHVlOiAnYmFua3RyYW5zZmVyJyB9XTtcclxuICBjdXJyZW5jeXR5cGU6IGFueVtdID0gW3sgbmFtZTogJ0lOUicsIHZhbHVlOiAnaW5yJyB9LCB7IG5hbWU6ICdEb2xsZXInLCB2YWx1ZTogJ2RvbGxlcicgfV07XHJcbiAgdmlld3BsYW50eXBlOiBhbnlbXSA9IFsnUHJvZHVjdCBMZXZlbCBWaWV3JywgJ1N0b3JlIExldmVsIFZpZXcnXTtcclxuICBwcm9kdWN0dHJhaWx0eXBlOiBhbnlbXSA9IFsnRXh0ZW5kIFRyYWlsJywgJ1N1YnNjcmliZSBQcm9kdWN0J107XHJcbiAgc2VsZWN0ZWRJc3N1ZTogYW55ID0gJ01vbnRobHknO1xyXG4gIGludm9pY2Vvbklzc3VlOiBhbnkgPSAnTGFzdCBEYXkgb2YgdGhlIE1vbnRoJztcclxuICBwYXltZW50SXNzdWU6IGFueSA9ICdvbmxpbmUnO1xyXG4gIGN1cnJlbmN5SXNzdWU6IGFueSA9ICdJTlInO1xyXG4gIHZpZXdwbGFuSXNzdWU6IGFueSA9ICdQcm9kdWN0IExldmVsIFZpZXcnO1xyXG4gIHByb2R1Y3R0cmFpbElzc3VlOiBhbnkgPSAnRXh0ZW5kIFRyYWlsJztcclxuICBwcmljZVZhbHVlRGV0YWlsczogYW55O1xyXG4gIG9yaWdpbmFsUHJpY2VWYWx1ZTogYW55O1xyXG4gIHByb2R1Y3RMaXN0OiBhbnkgPSBbXTtcclxuICBzdG9yZUxpc3Q6IGFueSA9IFtdO1xyXG4gIGRhdGFPYmplY3Q6IGFueSA9IFtcclxuICAgIHsgRGVzY3JpcHRpb246ICdQcm9kdWN0cycsIElzc3VlczogW10gfSxcclxuICAgIHsgRGVzY3JpcHRpb246ICdTdG9yZScsIElzc3VlczogW10gfSxcclxuICAgIHsgRGVzY3JpcHRpb246ICdMb2NhdGlvbicsIElzc3VlczogW10gfSxcclxuICBdO1xyXG4gIHRvdGFsQ291bnQ6IG51bWJlciA9IDA7XHJcbiAgZHluYW1pY0RhdGE6IGFueSA9IHtcclxuICAgIGxpbWl0OiAxMCxcclxuICAgIG9mZnNldDogMSxcclxuICAgIGNsaWVudElkOiBcIlwiLFxyXG4gICAgc2VhcmNoVmFsdWU6IFwiXCIsXHJcbiAgICBzb3J0Q29sdW1uOiAnJyxcclxuICAgIHNvcnRCeTogJycsXHJcbiAgICBwcm9kdWN0OiBbXSxcclxuICAgIHN0b3JlOiBbXSxcclxuICAgIGxvY2F0aW9uOiBbXVxyXG4gIH1cclxuICBzZWxlY3RBbGw6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzZWxlY3RlZFN0b3JlTGlzdDogYW55ID0gW107XHJcbiAgc3RvcmVQcm9kdWN0OiBhbnk7XHJcbiAgbm90aWZpY2F0aW9uRGV0YWlsczogYW55ID0gW107XHJcbiAgY3VycmVudFBsYW46IHN0cmluZyA9ICdmcmVlJztcclxuICBwYXltZW50aW52b2ljZWluZm86IGFueTtcclxuICByZXF1ZXN0RGF0YTogYW55XHJcbiAgaXNFeHBvcnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpdGVtc1BlclBhZ2UgPSAxMFxyXG4gIGN1cnJlbnRQYWdlID0gMVxyXG4gIHRvdGFsSXRlbXMgPSAwXHJcbiAgcGFnaW5hdGlvblNpemVzID0gWzEwLCAyMCwgMzBdXHJcbiAgcGFnZVNpemUgPSAxMFxyXG4gIGlzRmlsdGVyID0gJ2xhc3QnO1xyXG4gIHNlYXJjaFZhbHVlOiBzdHJpbmcgfCBudWxsID0gJyc7XHJcbiAgaW52b2ljZUxpc3Q6IGFueSA9IFtdO1xyXG4gIGV4dGVuZFBheW1lbnRQZXJpb2REYXlzOiAwO1xyXG4gIHBheW1lbnRpbnZvaWNlc2hvdzogYm9vbGVhbiA9IHRydWVcclxuICByYWRpb2J1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHJhZGlvb3B0aW9uczogYW55ID0gJ2JlZm9yZTE1J1xyXG4gIGNsaWVudElkOiBzdHJpbmcgPSAnJztcclxuICBhdXRoID0gdHJ1ZTtcclxuICBsb2FkaW5nOmJvb2xlYW49dHJ1ZTtcclxuICBub0RhdGE6Ym9vbGVhbiA9ZmFsc2U7XHJcbiAgcHJpY2VOb0RhdGE6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHByaWNlTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuIFxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLCBwcml2YXRlIGZiOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSBQYXltZW50U3Vic2NyaXB0aW9uU2VydmljZTogUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2UsIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHRvYXN0OiBUb2FzdFNlcnZpY2UsIHByaXZhdGUgZ3M6IEdsb2JhbFN0YXRlU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5QYXltZW50U3Vic2NyaXB0aW9uU2VydmljZS5wYXltZW50aW52b2ljZUZvcm1EYXRhLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgaWYgKHJlcy50eXBlID09PSAnaW5wdXQnICYmIHJlcy5mb3JtID09PSAncGF5bWVudC1pbnZvaWNlJykge1xyXG4gICAgICAgICAgdGhpcy5nZXRwYXltZW50aW52b2ljZShyZXMudmFsdWUpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmN1cnJlbnRwbGFuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBzdG9yZWNvdW50OiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBhdmdzcWZ0OiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBjYW1lcmFjb3VudDogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5wYXltZW50aW52b2ljZWZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgcmFkaW9vcHRpb25zOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWQsXSxcclxuICAgICAgcGF5bWVudGN5Y2xlOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBpbnZvaWNlVG86IFsnJ10sXHJcbiAgICAgIGdlbmVyYXRlaW52b2ljZW9uOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBwYXltZW50dHlwZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgY3VycmVuY3k6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgIHBheW1lbnRBZ3JlZW1lbnRUbzogWycnXSxcclxuICAgICAgZXh0ZW5kUGF5bWVudFBlcmlvZERheXM6IFsnJ10sXHJcbiAgICB9KTtcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWUucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgdGhpcy5jbGllbnRJZCA9IGRhdGEuY2xpZW50O1xyXG4gICAgICAgIHRoaXMuZHluYW1pY0RhdGEuY2xpZW50SWQgPSB0aGlzLmNsaWVudElkXHJcbiAgICAgICAgdGhpcy5nZXRQcmljaW5nKCdzdGFuZGFyZCcpO1xyXG4gICAgICAgIHRoaXMuZ2V0UHJvZHVjdExpc3QoKTtcclxuICAgICAgICB0aGlzLmZpbHRlckxpc3QoKTtcclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkxpc3QoKTtcclxuICAgICAgICB0aGlzLmNsaWVudEJpbGxpbmdJbmZvKHRoaXMuY2xpZW50SWQpO1xyXG4gICAgICAgIHRoaXMuZ2V0cGF5bWVudGludm9pY2UodGhpcy5jbGllbnRJZCk7XHJcbiAgICAgICAgdGhpcy5wYXltZW50aW52b2ljZWZvcm0uZGlzYWJsZSgpXHJcbiAgICAgICAgdGhpcy5pbnZvaWNlVGFibGVEYXRhKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucGF5bWVudGludm9pY2Vmb3JtLmdldCgnaW52b2ljZVRvJyk/LnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoKHZhbCkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiRnZW5lcmF0ZWludm9pY2VJbnRlcnJ1cHQucGlwZShtYXAoKGludGVycnVwdCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGludGVycnVwdCA9PT0gJ0VudGVyJykge1xyXG4gICAgICAgICAgICB0aGlzLiRnZW5lcmF0ZWludm9pY2VJbnRlcnJ1cHQubmV4dCgnJylcclxuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZWludm9pY2VMaXN0LnB1c2godmFsKVxyXG4gICAgICAgICAgICB0aGlzLnBheW1lbnRpbnZvaWNlZm9ybS5nZXQoJ2ludm9pY2VUbycpPy5zZXRWYWx1ZSgnJylcclxuICAgICAgICAgIH0gZWxzZSBpZiAoaW50ZXJydXB0ID09PSAnQmFja3NwYWNlJyAmJiAhdmFsICYmIHRoaXMuZ2VuZXJhdGVpbnZvaWNlTGlzdC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZWludm9pY2VMaXN0LnBvcCgpXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSkpXHJcbiAgICAgIH0pXHJcbiAgICApLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKVxyXG5cclxuICAgIHRoaXMucGF5bWVudGludm9pY2Vmb3JtLmdldCgncGF5bWVudEFncmVlbWVudFRvJyk/LnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoKHZhbCkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiRzZW5kcGF5bWVudEludGVycnVwdC5waXBlKG1hcCgoaW50ZXJydXB0KSA9PiB7XHJcbiAgICAgICAgICBpZiAoaW50ZXJydXB0ID09PSAnRW50ZXInKSB7XHJcbiAgICAgICAgICAgIHRoaXMuJHNlbmRwYXltZW50SW50ZXJydXB0Lm5leHQoJycpXHJcbiAgICAgICAgICAgIHRoaXMucGF5bWVudGFsbG93ZWRMaXN0LnB1c2godmFsKVxyXG4gICAgICAgICAgICB0aGlzLnBheW1lbnRpbnZvaWNlZm9ybS5nZXQoJ3BheW1lbnRBZ3JlZW1lbnRUbycpPy5zZXRWYWx1ZSgnJylcclxuICAgICAgICAgIH0gZWxzZSBpZiAoaW50ZXJydXB0ID09PSAnQmFja3NwYWNlJyAmJiAhdmFsICYmIHRoaXMucGF5bWVudGFsbG93ZWRMaXN0Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLnBheW1lbnRhbGxvd2VkTGlzdC5wb3AoKVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pKVxyXG4gICAgICB9KVxyXG4gICAgKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKClcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcmVjZWl2ZURhdGEoZGF0YTogYW55KSB7XHJcbiAgICBkYXRhLmZvckVhY2goKGl0ZW06YW55KSA9PiB7XHJcbiAgICAgIGlmIChpdGVtLkRlc2NyaXB0aW9uID09ICdQcm9kdWN0cycpIHtcclxuICAgICAgICBsZXQgcHJvZHVjdCA9IGl0ZW0uSXNzdWVzLm1hcCgocHJvZHVjdDphbnkpID0+IHByb2R1Y3QudGV4dCk7XHJcbiAgICAgICAgdGhpcy5keW5hbWljRGF0YS5wcm9kdWN0ID0gcHJvZHVjdDtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaXRlbS5EZXNjcmlwdGlvbiA9PSAnU3RvcmUnKSB7XHJcbiAgICAgICAgbGV0IHN0b3JlID0gaXRlbS5Jc3N1ZXMubWFwKChzdG9yZTogYW55KSA9PiBzdG9yZS5pZCk7XHJcbiAgICAgICAgdGhpcy5keW5hbWljRGF0YS5zdG9yZSA9IHN0b3JlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChpdGVtLkRlc2NyaXB0aW9uID09ICdMb2NhdGlvbicpIHtcclxuICAgICAgICBsZXQgbG9jYXRpb24gPSBpdGVtLklzc3Vlcy5tYXAoKGxvY2F0aW9uOiBhbnkpID0+IGxvY2F0aW9uLnRleHQpO1xyXG4gICAgICAgIHRoaXMuZHluYW1pY0RhdGEubG9jYXRpb24gPSBsb2NhdGlvbjtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIHRoaXMuZ2V0U3RvcmVMaXN0KCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RQbGFuKHBsYW46IHN0cmluZykge1xyXG4gICAgdGhpcy5wbGFuID0gcGxhbjtcclxuICAgIHRoaXMudmlld3BsYW5Jc3N1ZSA9IFwiUHJvZHVjdCBMZXZlbCBWaWV3XCJcclxuICB9XHJcblxyXG4gIHNlbGVjdFByaWNlUGxhbihwcmljaW5ncGxhbjogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnByaWNpbmdwbGFuID0gcHJpY2luZ3BsYW47XHJcbiAgICB0aGlzLmdldFByaWNpbmcocHJpY2luZ3BsYW4pXHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0Q29sb3JDbGFzcyhwcm9kdWN0OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgc3dpdGNoIChwcm9kdWN0KSB7XHJcbiAgICAgIGNhc2UgJ3RhbmdvVHJhZmZpYyc6IHJldHVybiAnYmFkZ2UgcHJvZHVjdC10cmFmZmljIG14LTEnO1xyXG4gICAgICBjYXNlICd0YW5nb1pvbmUnOiByZXR1cm4gJ2JhZGdlIHByb2R1Y3Qtem9uZSBteC0xJztcclxuICAgICAgY2FzZSAndGFuZ29Tb3AnOiByZXR1cm4gJ2JhZGdlIHByb2R1Y3Qtc29wIG14LTEnO1xyXG4gICAgICBjYXNlICdwcmlvcml0eVN1cHBvcnQnOiByZXR1cm4gJ2JhZGdlIHByaW9yaXR5c3VwcG9ydCBteC0xJztcclxuICAgICAgZGVmYXVsdDogcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0SXRlbSh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkSXNzdWUgPSB2YWx1ZTtcclxuXHJcbiAgICB0aGlzLnBheW1lbnRpbnZvaWNlZm9ybS5nZXQoJ2Ryb3Bkb3duSXRlbXMnKT8uc2V0VmFsdWUodGhpcy5zZWxlY3RlZElzc3VlKVxyXG4gICAgdGhpcy5kcm9wRG93biA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgaW52b2ljZUl0ZW0oaW52b2ljZXZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuaW52b2ljZW9uSXNzdWUgPSBpbnZvaWNldmFsdWU7XHJcbiAgICB0aGlzLnBheW1lbnRpbnZvaWNlZm9ybS5nZXQoJ2dlbmVyYXRlaW52b2ljZW9uJyk/LnNldFZhbHVlKHRoaXMuaW52b2ljZW9uSXNzdWUpXHJcbiAgICB0aGlzLmludm9pY2Vkcm9wRG93biA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcGF5bWVudEl0ZW0ocGF5bWVudHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMucGF5bWVudElzc3VlID0gcGF5bWVudHZhbHVlO1xyXG4gICAgdGhpcy5wYXltZW50aW52b2ljZWZvcm0uZ2V0KCdwYXltZW50dHlwZScpPy5zZXRWYWx1ZSh0aGlzLnBheW1lbnRJc3N1ZSlcclxuICAgIHRoaXMucGF5bWVudHR5cGVkcm9wRG93biA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgY3VycmVuY3lJdGVtKGN1cnJlbmN5dmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5jdXJyZW5jeUlzc3VlID0gY3VycmVuY3l2YWx1ZTtcclxuICAgIHRoaXMucGF5bWVudGludm9pY2Vmb3JtLmdldCgnY3VycmVuY3l0eXBlJyk/LnNldFZhbHVlKHRoaXMuY3VycmVuY3lJc3N1ZSlcclxuICAgIHRoaXMuY3VycmVuY3lkcm9wRG93biA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJvZHVjdHRyYWlsSXRlbShwcm9kdWN0dHJhaWx2YWx1ZTogYW55LCBkYXRhOiBhbnkpIHtcclxuXHJcbiAgICBpZiAocHJvZHVjdHRyYWlsdmFsdWUgPT0gJ0V4dGVuZCBUcmFpbCcpIHtcclxuICAgICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKFRyYWlsU2V0dGluZ3NDb21wb25lbnQsIHtcclxuICAgICAgICBjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ21kJyxcclxuICAgICAgfSk7XHJcbiAgICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnNldHRpbmdzdmFsdWUgPSBwcm9kdWN0dHJhaWx2YWx1ZTtcclxuICAgICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQudGl0bGUgPT0gJ3RyYWlsZXh0ZW5kJykge1xyXG4gICAgICAgICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWQsXHJcbiAgICAgICAgICAgIGRheXM6IHJlc3VsdC5jb3VudCxcclxuICAgICAgICAgICAgcHJvZHVjdDogZGF0YS5wcm9kdWN0XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLlBheW1lbnRTdWJzY3JpcHRpb25TZXJ2aWNlLnRyaWFsRXh0ZW50QXBwcm92YWwocGFyYW1zKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0U3VjY2Vzc1RvYXN0KGAke2RhdGEubmFtZX0gdHJpYWwgZXh0ZW5kZWQgc3VjY2Vzc2Z1bGx5YCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICB9IGVsc2UgaWYgKHByb2R1Y3R0cmFpbHZhbHVlID09ICdTdWJzY3JpYmUgUHJvZHVjdCcpIHtcclxuICAgICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKFRyYWlsU2V0dGluZ3NDb21wb25lbnQsIHtcclxuICAgICAgICBjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ21kJyxcclxuICAgICAgfSk7XHJcbiAgICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnNldHRpbmdzdmFsdWUgPSBwcm9kdWN0dHJhaWx2YWx1ZTtcclxuICAgICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQgPT0gJ3N1YnNjcmliZWQnKSB7XHJcbiAgICAgICAgICBsZXQgcGFyYW1zID0ge1xyXG4gICAgICAgICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcclxuICAgICAgICAgICAgcHJvZHVjdDogW1xyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHR5cGU6ICdzdWJzY3JpcHRpb24nLFxyXG4gICAgICAgICAgICAgICAgbmFtZTogZGF0YS5wcm9kdWN0XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLlBheW1lbnRTdWJzY3JpcHRpb25TZXJ2aWNlLnVwZGF0ZVByb2R1Y3QocGFyYW1zKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0U3VjY2Vzc1RvYXN0KGAke2RhdGEubmFtZX0gc3VjY2Vzc2Z1bGx5IGFkZGVkIHRvIHRoZSBwcm9kdWN0IHN1YnNjcmlwdGlvbiBsaXN0LmApO1xyXG4gICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uTGlzdCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnByb2R1Y3R0cmFpbElzc3VlID0gcHJvZHVjdHRyYWlsdmFsdWU7XHJcbiAgICB0aGlzLnByb2R1Y3R0cmFpbGRyb3BEb3duID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICB2aWV3cGxhbkl0ZW0odmlld3BsYW52YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLmR5bmFtaWNEYXRhLm9mZnNldCA9IDE7XHJcbiAgICB0aGlzLnZpZXdwbGFuSXNzdWUgPSB2aWV3cGxhbnZhbHVlO1xyXG4gICAgaWYgKHZpZXdwbGFudmFsdWUgPT0gJ1Byb2R1Y3QgTGV2ZWwgVmlldycpIHtcclxuICAgICAgdGhpcy5nZXRQcm9kdWN0TGlzdCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuZ2V0U3RvcmVMaXN0KCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnZpZXdwbGFuZHJvcERvd24gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZSgpIHtcclxuICAgIGNvbnN0IHJlc3BvbnNlRGF0YSA9IHtcclxuICAgICAgYnJhbmROYW1lOiB0aGlzLmNsaWVudGluZm8uY2xpZW50TmFtZSxcclxuICAgICAgZ3N0TnVtYmVyOiB0aGlzLmNsaWVudGluZm8uYmlsbGluZ0RldGFpbHMuZ3N0TnVtYmVyLFxyXG4gICAgICBiaWxsaW5nQWRkcmVzczogdGhpcy5jbGllbnRpbmZvLmJpbGxpbmdEZXRhaWxzLmJpbGxpbmdBZGRyZXNzLFxyXG4gICAgICBjbGllbnRJZDp0aGlzLmNsaWVudElkXHJcbiAgICB9O1xyXG4gICAgbGV0IG1vZGVsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihVcGRhdGVDb21wb25lbnQsIHsgY2VudGVyZWQ6IHRydWUsIHNpemU6ICdtZCcgfSk7XHJcbiAgICBtb2RlbFJlZi5jb21wb25lbnRJbnN0YW5jZS5tb2RhbERhdGEgPSByZXNwb25zZURhdGE7XHJcbiAgfVxyXG5cclxuICBuZWVkaGVscCgpIHtcclxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihOZWVkSGVscENvbXBvbmVudCwge1xyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ21kJyxcclxuICAgIH0pO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuY2xpZW50SWQgPSB0aGlzLmNsaWVudElkO1xyXG4gICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdXBncmFkZXBsYW4oKSB7XHJcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oVXBncmFkZVBsYW5Db21wb25lbnQsIHtcclxuICAgICAgY2VudGVyZWQ6IHRydWUsIHNpemU6ICdsZydcclxuICAgIH0pO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuY2xpZW50SWQgPSB0aGlzLmNsaWVudElkO1xyXG4gICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBcclxuICBjcmVkaXRub3RlKCkge1xyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKENyZWRpdE5vdGVDb21wb25lbnQsIHtcclxuICAgICAgY2VudGVyZWQ6IHRydWUsXHJcbiAgICAgIHNpemU6ICdtZCcsXHJcbiAgICAgIHNjcm9sbGFibGU6IHRydWVcclxuICAgIH0pO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuY2xpZW50SWQgPSB0aGlzLmNsaWVudElkO1xyXG4gICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0ID09ICdzdWNjZXNzY3JlZGl0Jykge1xyXG4gICAgICAgIHRoaXMudG9hc3QuZ2V0UHJpbWFyeVRvYXN0KCdUaGUgaW52b2ljZSBoYXMgYmVlbiBzZW50IHRvIHRoZSByZXNwZWN0aXZlIGVtYWlsIElEcyB3aXRoIHRoZSBkaXNjb3VudC4nKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpY2luZ3JldmlzZWQoKSB7XHJcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oUHJpY2luZ1JldmlzZWRDb21wb25lbnQsIHtcclxuICAgICAgY2VudGVyZWQ6IHRydWUsIHNjcm9sbGFibGU6IHRydWUsIHNpemU6ICdsZydcclxuICAgIH0pO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UucHJvZHVjdE5ld0RldGFpbHMgPSB0aGlzLnByaWNlVmFsdWVEZXRhaWxzO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UucHJvZHVjdE9sZERldGFpbHMgPSB0aGlzLm9yaWdpbmFsUHJpY2VWYWx1ZTtcclxuICAgIG1vZGFsUmVmLnJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCA9PSAnc2F2ZScpIHtcclxuICAgICAgICBsZXQgcGFyYW1zID0ge1xyXG4gICAgICAgICAgdHlwZTogdGhpcy5wcmljaW5ncGxhbixcclxuICAgICAgICAgIGNsaWVudElkOiB0aGlzLmNsaWVudElkLFxyXG4gICAgICAgICAgcHJvZHVjdHM6IHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLlBheW1lbnRTdWJzY3JpcHRpb25TZXJ2aWNlLnVwZGF0ZVByaWNpbmcocGFyYW1zKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgU3dhbC5maXJlKHtcclxuICAgICAgICAgICAgICBpY29uSHRtbDogYDxpbWcgIHNyYz1cIi4uLy4uLy4uLy4uL2Fzc2V0cy90YW5nby90b2FzdC1pY29ucy9FbnZlbG9wZS1PcGVuLWljb24uc3ZnXCI+YCxcclxuICAgICAgICAgICAgICBodG1sOiBgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBtdC01XCI+PGRpdiBjbGFzcz1cInRvYXN0dGl0aWxlXCI+UmV2aXNlZCBjaGFuZ2VzIGhhdmUgYmVlbiB1cGRhdGVkPC9kaXY+PC9kaXY+YCxcclxuICAgICAgICAgICAgICB0b2FzdDogdHJ1ZSxcclxuICAgICAgICAgICAgICBwb3NpdGlvbjogJ2JvdHRvbScsXHJcbiAgICAgICAgICAgICAgc2hvd0NvbmZpcm1CdXR0b246IGZhbHNlLFxyXG4gICAgICAgICAgICAgIHNob3dDbG9zZUJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgICAgICB0aW1lcjogNjAwMCxcclxuICAgICAgICAgICAgICB0aW1lclByb2dyZXNzQmFyOiB0cnVlLFxyXG4gICAgICAgICAgICAgIGN1c3RvbUNsYXNzOiAnY3VzdG9tLXRvYXN0LWNvbnRhaW5lcicsXHJcbiAgICAgICAgICAgICAgZGlkT3BlbjogKHRvYXN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0b2FzdC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgU3dhbC5zdG9wVGltZXIpXHJcbiAgICAgICAgICAgICAgICB0b2FzdC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgU3dhbC5yZXN1bWVUaW1lcilcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcmljaW5nVHlwZShldmVudDogYW55LCBwcmljaW5nOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2VsZWN0ID0gcHJpY2luZztcclxuICB9XHJcbiAgXHJcbiAgb25LZXlEb3duKGV2ZW50OmFueSl7XHJcbiAgICB0aGlzLiRnZW5lcmF0ZWludm9pY2VJbnRlcnJ1cHQubmV4dChldmVudC5jb2RlKVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlQ2hpcChpOiBudW1iZXIpIHtcclxuICAgIHRoaXMuZ2VuZXJhdGVpbnZvaWNlTGlzdC5zcGxpY2UoaSwgMSlcclxuICB9XHJcblxyXG4gIHNlbmRwYXltZW50b25LZXlEb3duKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuJHNlbmRwYXltZW50SW50ZXJydXB0Lm5leHQoZXZlbnQuY29kZSlcclxuICB9XHJcblxyXG4gIHNlbmRwYXltZW50cmVtb3ZlQ2hpcChpOiBudW1iZXIpIHtcclxuICAgIHRoaXMucGF5bWVudGFsbG93ZWRMaXN0LnNwbGljZShpLCAxKVxyXG4gIH1cclxuXHJcbiAgY2xpZW50QmlsbGluZ0luZm8oaWQ6IGFueSkge1xyXG4gICAgdGhpcy5QYXltZW50U3Vic2NyaXB0aW9uU2VydmljZS5jbGllbnRCaWxsaW5nSW5mbyhpZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICB0aGlzLmNsaWVudGluZm8gPSByZXMuZGF0YTtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgfVxyXG5cclxuICBvcGVuRHJvcGRvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5kcm9wRG93biA9ICF0aGlzLmRyb3BEb3duO1xyXG4gIH1cclxuXHJcbiAgaW52b2ljZURyb3Bkb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuaW52b2ljZWRyb3BEb3duID0gIXRoaXMuaW52b2ljZWRyb3BEb3duO1xyXG4gIH1cclxuXHJcbiAgcGF5bWVudHR5cGVEcm9wZG93bihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLnBheW1lbnR0eXBlZHJvcERvd24gPSAhdGhpcy5wYXltZW50dHlwZWRyb3BEb3duO1xyXG4gIH1cclxuXHJcbiAgY3VycmVuY3lEcm9wZG93bihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLmN1cnJlbmN5ZHJvcERvd24gPSAhdGhpcy5jdXJyZW5jeWRyb3BEb3duO1xyXG4gIH1cclxuXHJcbiAgdmlld3BsYW5Ecm9wZG93bihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLnZpZXdwbGFuZHJvcERvd24gPSAhdGhpcy52aWV3cGxhbmRyb3BEb3duO1xyXG4gIH1cclxuICBcclxuICBwcm9kdWN0dHJhaWxEcm9wZG93bihldmVudDogTW91c2VFdmVudCwgaW5kZXg6IGFueSkge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLm5vdGlmaWNhdGlvbkRldGFpbHMubm90aWZpY2F0aW9uTGlzdFtpbmRleF0ucHJvZHVjdHRyYWlsZHJvcERvd24gPSAhdGhpcy5ub3RpZmljYXRpb25EZXRhaWxzLm5vdGlmaWNhdGlvbkxpc3RbaW5kZXhdLnByb2R1Y3R0cmFpbGRyb3BEb3duXHJcbiAgfVxyXG5cclxuICBza2lwdHJhaWwoKSB7XHJcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oU2tpcFRyYWlsQ29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLCBzaXplOiAnbWQnLCBzY3JvbGxhYmxlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIG1vZGFsUmVmLnJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCA9PSAnc3Vic2NyaWJlZCcpIHtcclxuICAgICAgICB0aGlzLnRvYXN0LmdldFN1Y2Nlc3NUb2FzdCgnPCBUYW5nbyBTT1AgPiBzdWNjZXNzZnVsbHkgYWRkZWQgdG8gdGhlIHByb2R1Y3Qgc3Vic2NyaXB0aW9uIGxpc3QuJylcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhZGRzdGVwcHJpY2UoZGF0YTogYW55LCBwcm9kdWN0OiBhbnkgPSB7fSwgaW5kZXg6IGFueSA9IC0xKSB7XHJcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oQWRkU3RlcHByaWNlQ29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLCBzY3JvbGxhYmxlOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICBpZiAoZGF0YSA9PSAnYWRkJykge1xyXG4gICAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5zdGVwcHJpY2V0aXRsZSA9IFwiQWRkIFN0ZXAgUHJpY2VcIjtcclxuICAgICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2Uuc3RlcHByaWNlZGVzY3JpcHRpb24gPSBcIlBsZWFzZSBlbnRlciBubyBvZiBzdG9yZSAgdG8gYmUgYWRkZWQgaW4gbmV4dCBzdGVwIHByaWNlIGluIGludGVydmFscyBcIjtcclxuICAgICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2Uuc3RlcHByaWNlaWNvbiA9IFwiLi9hc3NldHMvdGFuZ28vY3VzdG9tcG9wdXAtSWNvbnMvcGx1cy1pY29uLnN2Z1wiO1xyXG4gICAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5zdGVwcHJpY2VidXR0b24gPSBcIkFwcGx5XCI7XHJcbiAgICB9XHJcbiAgICBpZiAoZGF0YSA9PSAnZWRpdCcpIHtcclxuICAgICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2Uuc3RlcHByaWNldGl0bGUgPSBcIkVkaXQgU3RlcCBQcmljZVwiO1xyXG4gICAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5zdGVwcHJpY2VkZXNjcmlwdGlvbiA9IFwiUGxlYXNlIGVudGVyIG5vIG9mIHN0b3JlICB0byBiZSBhZGRlZCBpbiBuZXh0IHN0ZXAgcHJpY2UgaW4gaW50ZXJ2YWxzIFwiO1xyXG4gICAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5zdGVwcHJpY2VpY29uID0gXCIuL2Fzc2V0cy90YW5nby9jdXN0b21wb3B1cC1JY29ucy9lZGl0LWljb24uc3ZnXCI7XHJcbiAgICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnN0ZXBwcmljZWJ1dHRvbiA9IFwiVXBkYXRlXCI7XHJcbiAgICB9XHJcbiAgICBpZiAoZGF0YSA9PSAnZGVsZXRlJykge1xyXG4gICAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5zdGVwcHJpY2V0aXRsZSA9IFwiZGVsZXRlXCI7XHJcbiAgICB9XHJcbiAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQudGl0bGUgPT0gJ0FkZCBTdGVwIFByaWNlJykge1xyXG5cclxuICAgICAgICBsZXQgcHJvZHVjdHMgPSBbLi4ubmV3IFNldCh0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3QubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IGl0ZW0ucHJvZHVjdE5hbWUpKV1cclxuXHJcbiAgICAgICAgcHJvZHVjdHMuZm9yRWFjaCgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICBsZXQgcHJvZHVjdERldGFpbHMgPSB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3QuZmluZCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtLnByb2R1Y3ROYW1lID09IGRhdGEgJiYgaXRlbT8ubGFzdEluZGV4KSB7XHJcbiAgICAgICAgICAgICAgaXRlbS5pbmRleCA9IGluZGV4O1xyXG4gICAgICAgICAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGxldCBpbmRleCA9IHByb2R1Y3REZXRhaWxzLmluZGV4O1xyXG4gICAgICAgICAgZGVsZXRlIHByb2R1Y3REZXRhaWxzLmluZGV4O1xyXG4gICAgICAgICAgbGV0IGl0ZW0gPSBwcm9kdWN0RGV0YWlscztcclxuICAgICAgICAgIGxldCByYW5nZSA9IGl0ZW0uc3RvcmVSYW5nZS5zcGxpdCgnLScpO1xyXG4gICAgICAgICAgbGV0IGRpZmZlciA9IChwYXJzZUludChyYW5nZVsxXSkgLSBwYXJzZUludChyYW5nZVswXSkpICsgMTtcclxuICAgICAgICAgIGRlbGV0ZSB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLmxhc3RJbmRleDtcclxuICAgICAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0uc2hvd0VkaXREZWxldGUgPSBmYWxzZVxyXG4gICAgICAgICAgbGV0IG5ld0l0ZW0gPSB7IC4uLml0ZW0gfTtcclxuICAgICAgICAgIGxldCBuZXdTdGFydFJhbmdlID0gcGFyc2VJbnQocmFuZ2VbMV0pICsgMTtcclxuICAgICAgICAgIGxldCBuZXdFbmRSYW5nZSA9IG5ld1N0YXJ0UmFuZ2UgKyBwYXJzZUludChyZXN1bHQuaW50cmF2ZWwpIC0gMTtcclxuXHJcbiAgICAgICAgICBuZXdJdGVtLnNob3dJbWcgPSB0cnVlXHJcbiAgICAgICAgICBuZXdJdGVtLnNob3dFZGl0RGVsZXRlID0gdHJ1ZVxyXG4gICAgICAgICAgbmV3SXRlbS5sYXN0SW5kZXggPSB0cnVlO1xyXG4gICAgICAgICAgbmV3SXRlbS5zdG9yZUNvdW50ID0gdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5zdG9yZUNvdW50IC0gZGlmZmVyO1xyXG4gICAgICAgICAgbmV3SXRlbS5wcmljZSA9IG5ld0l0ZW0uc3RvcmVDb3VudCAqIChuZXdJdGVtLmJhc2VQcmljZSAtIG5ld0l0ZW0ubmVnb3RpYXRlUHJpY2UpXHJcbiAgICAgICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLnN0b3JlQ291bnQgPSBkaWZmZXI7XHJcbiAgICAgICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLnByaWNlID0gdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5zdG9yZUNvdW50ICogKHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0uYmFzZVByaWNlIC0gdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5uZWdvdGlhdGVQcmljZSk7XHJcblxyXG4gICAgICAgICAgbmV3SXRlbS5zdG9yZVJhbmdlID0gbmV3U3RhcnRSYW5nZS50b1N0cmluZygpICsgJy0nICsgbmV3RW5kUmFuZ2UudG9TdHJpbmcoKTtcclxuICAgICAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdC5zcGxpY2UoaW5kZXggKyAxLCAwLCBuZXdJdGVtKVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgbGV0IHByaWNlID0gMDtcclxuICAgICAgICBsZXQgYWN0dWFsUHJpY2UgPSAwO1xyXG4gICAgICAgIGxldCBuZWdvdGlhdGVQcmljZSA9IDA7XHJcbiAgICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0LmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgcHJpY2UgPSBwcmljZSArIGl0ZW0ucHJpY2U7XHJcbiAgICAgICAgICBhY3R1YWxQcmljZSA9IGFjdHVhbFByaWNlICsgaXRlbS5iYXNlUHJpY2U7XHJcbiAgICAgICAgICBuZWdvdGlhdGVQcmljZSA9IG5lZ290aWF0ZVByaWNlICsgaXRlbS5uZWdvdGlhdGVQcmljZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnRvdGFsTmVnb3RpYXRlUHJpY2UgPSBwcmljZTtcclxuICAgICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLmFjdHVhbFByaWNlID0gYWN0dWFsUHJpY2U7XHJcbiAgICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5uZWdvdGlhdGVQcmljZSA9IG5lZ290aWF0ZVByaWNlO1xyXG4gICAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMuZmluYWxWYWx1ZSA9IHRoaXMucHJpY2VWYWx1ZURldGFpbHMudG90YWxOZWdvdGlhdGVQcmljZSAqICgxOCAvIDEwMCk7XHJcblxyXG4gICAgICAgIHRoaXMudG9hc3QuZ2V0U3VjY2Vzc1RvYXN0KCdTdGVwIFByaWNlIGhhcyBiZWVuIGFkZGVkIHN1Y2Nlc3NmdWxseS4nKVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChyZXN1bHQudGl0bGUgPT0gJ0VkaXQgU3RlcCBQcmljZScpIHtcclxuICAgICAgICBsZXQgcmFuZ2UgPSB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLnN0b3JlUmFuZ2Uuc3BsaXQoJy0nKTtcclxuICAgICAgICBsZXQgZW5kID0gcGFyc2VJbnQocmFuZ2VbMF0pICsgKHBhcnNlSW50KHJlc3VsdC5pbnRyYXZlbCkgLSAxKTtcclxuICAgICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLnN0b3JlUmFuZ2UgPSByYW5nZVswXS50b1N0cmluZygpICsgJy0nICsgZW5kLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdC5nZXRTdWNjZXNzVG9hc3QoJ1N0ZXAgUHJpY2UgaGFzIGJlZW4gVXBkYXRlZCBzdWNjZXNzZnVsbHkuJylcclxuICAgICAgfVxyXG4gICAgICBpZiAocmVzdWx0LnRpdGxlID09ICdkZWxldGUnKSB7XHJcbiAgICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4IC0gMV0uc3RvcmVDb3VudCA9IHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleCAtIDFdLnN0b3JlQ291bnQgKyB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLnN0b3JlQ291bnQ7XHJcbiAgICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5hY3R1YWxQcmljZSA9IHRoaXMucHJpY2VWYWx1ZURldGFpbHMuYWN0dWFsUHJpY2UgLSB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLmJhc2VQcmljZTtcclxuICAgICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLm5lZ290aWF0ZVByaWNlID0gdGhpcy5wcmljZVZhbHVlRGV0YWlscy5uZWdvdGlhdGVQcmljZSAtIHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0ubmVnb3RpYXRlUHJpY2U7XHJcbiAgICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4IC0gMV0ucHJpY2UgPSAodGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4IC0gMV0uYmFzZVByaWNlIC0gdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4IC0gMV0ubmVnb3RpYXRlUHJpY2UpICogdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4IC0gMV0uc3RvcmVDb3VudDtcclxuXHJcbiAgICAgICAgbGV0IHByb2R1Y3RJbmZvID0gdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0LmZpbHRlcigoKGl0ZW06IGFueSkgPT4gaXRlbS5wcm9kdWN0TmFtZSA9PSB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLnByb2R1Y3ROYW1lKSlcclxuICAgICAgICBpZiAocHJvZHVjdEluZm8ubGVuZ3RoID4gMikge1xyXG4gICAgICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4IC0gMV0uc2hvd0ltZyA9IHRydWVcclxuICAgICAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleCAtIDFdLnNob3dFZGl0RGVsZXRlID0gdHJ1ZVxyXG4gICAgICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4IC0gMV0ubGFzdEluZGV4ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdC5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIGxldCBwcmljZSA9IDA7XHJcbiAgICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0LmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgcHJpY2UgPSBwcmljZSArIGl0ZW0ucHJpY2U7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMudG90YWxOZWdvdGlhdGVQcmljZSA9IHByaWNlO1xyXG4gICAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMuZmluYWxWYWx1ZSA9IHRoaXMucHJpY2VWYWx1ZURldGFpbHMudG90YWxOZWdvdGlhdGVQcmljZSAqICgxOCAvIDEwMCk7XHJcbiAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdDb2x1bW4gZGVsZXRlZCBzdWNjZXNzZnVsbHkuJylcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhcHByb3ZldHJpYWwoZGF0YTogYW55LCB0eXBlOiBzdHJpbmcpIHtcclxuICAgIGxldCBwYXJhbXMgPSB7XHJcbiAgICAgIGlkOiBkYXRhLl9pZCxcclxuICAgICAgdHlwZTogdHlwZVxyXG4gICAgfVxyXG4gICAgdGhpcy5QYXltZW50U3Vic2NyaXB0aW9uU2VydmljZS5hcHByb3ZlVHJpYWwocGFyYW1zKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgIHRoaXMudG9hc3QuZ2V0U3VjY2Vzc1RvYXN0KGAke2RhdGEubmFtZX0gdHJpYWwgaGFzIGJlZW4gYXBwcm92ZWQgc3VjY2Vzc2Z1bGx5LmApXHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25MaXN0KCk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBhcHByb3ZlVW5zdWJzY3JpYmUoZGF0YTogYW55LCB0eXBlOiBhbnkpIHtcclxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihVbnN1YnNjcmliZVJlcXVlc3RDb21wb25lbnQsIHtcclxuICAgICAgY2VudGVyZWQ6IHRydWUsIHNpemU6ICdtZCcsIHNjcm9sbGFibGU6IHRydWVcclxuICAgIH0pO1xyXG4gICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0ID09ICd1bnN1YnNjcmliZWQnKSB7XHJcbiAgICAgICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgICAgIGlkOiBkYXRhLl9pZCxcclxuICAgICAgICAgIHR5cGU6IHR5cGVcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hcHByb3ZlQ2FuY2VsVW5zdWJzY3JpYmUocGFyYW1zKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVDaXJjbGVDaGFydChkYXRhOiBhbnksIGluZGV4OiBhbnkpOiB2b2lkIHtcclxuICAgIGxldCBpZCA9ICdwcm9ncmVzcy1jaXJjbGUtJyArIGluZGV4O1xyXG4gICAgbGV0IHRleHQgPSAncGVyY2VudGFnZS10ZXh0LScgKyBpbmRleDtcclxuICAgIGNvbnN0IHByb2dyZXNzQ2lyY2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xyXG4gICAgY29uc3QgcGVyY2VudGFnZVRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0ZXh0KTtcclxuICAgIGlmIChwcm9ncmVzc0NpcmNsZSAmJiBwZXJjZW50YWdlVGV4dCkge1xyXG4gICAgICBjb25zdCBjaXJjdW1mZXJlbmNlID0gTWF0aC5QSSAqIDIgKiBwYXJzZUZsb2F0KHByb2dyZXNzQ2lyY2xlLmdldEF0dHJpYnV0ZSgncicpISk7XHJcbiAgICAgIGNvbnN0IGRhc2hhcnJheSA9IGNpcmN1bWZlcmVuY2U7XHJcbiAgICAgIGNvbnN0IGRhc2hvZmZzZXQgPSBjaXJjdW1mZXJlbmNlIC0gKGRhdGEgLyAxMDApICogY2lyY3VtZmVyZW5jZTtcclxuXHJcbiAgICAgIHByb2dyZXNzQ2lyY2xlLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLWRhc2hhcnJheScsIGRhc2hhcnJheS50b1N0cmluZygpKTtcclxuICAgICAgcHJvZ3Jlc3NDaXJjbGUuc2V0QXR0cmlidXRlKCdzdHJva2UtZGFzaG9mZnNldCcsIGRhc2hvZmZzZXQudG9TdHJpbmcoKSk7XHJcblxyXG4gICAgICBwZXJjZW50YWdlVGV4dC50ZXh0Q29udGVudCA9IGAke2RhdGF9JWA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRQcmljaW5nKGRhdGE6IGFueSkge1xyXG4gICAgdGhpcy5wcmljZUxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscyA9ICcnO1xyXG4gICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgcHJpY2VUeXBlOiBkYXRhLFxyXG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZFxyXG4gICAgfVxyXG4gICAgdGhpcy5QYXltZW50U3Vic2NyaXB0aW9uU2VydmljZS5nZXRQcmljZURldGFpbHMocGFyYW1zKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgIHRoaXMucHJpY2VMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5wcmljZU5vRGF0YSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMgPSByZXMuZGF0YTtcclxuICAgICAgICB0aGlzLm9yaWdpbmFsUHJpY2VWYWx1ZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5wcmljZVZhbHVlRGV0YWlscykpO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMucHJpY2VMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5wcmljZU5vRGF0YSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0sKGVycm9yOmFueSkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIHRoaXMucHJpY2VMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucHJpY2VOb0RhdGEgPSB0cnVlO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGNhbGN1bGF0ZShpbmRleDogYW55LCB0eXBlOiBhbnkpIHtcclxuICAgIGlmICh0eXBlID09ICdkaXNjb3VudCcpIHtcclxuICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5uZWdvdGlhdGVQcmljZSA9IHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0uYmFzZVByaWNlICogKHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0uZGlzY291bnRQZXJjZW50YWdlIC8gMTAwKVxyXG4gICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLnByaWNlID0gKHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0uYmFzZVByaWNlIC0gdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5uZWdvdGlhdGVQcmljZSkgKiB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLnN0b3JlQ291bnRcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLmRpc2NvdW50UGVyY2VudGFnZSA9ICh0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLm5lZ290aWF0ZVByaWNlIC8gdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5iYXNlUHJpY2UpICogMTAwXHJcbiAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0ucHJpY2UgPSAodGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5iYXNlUHJpY2UgLSB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLm5lZ290aWF0ZVByaWNlKSAqIHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0uc3RvcmVDb3VudFxyXG4gICAgfVxyXG4gICAgbGV0IG5lZ290aWF0ZVByaWNlID0gMDtcclxuICAgIGxldCBwcmljZSA9IDA7XHJcblxyXG4gICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0LmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBwcmljZSA9IHByaWNlICsgaXRlbS5wcmljZTtcclxuICAgICAgbmVnb3RpYXRlUHJpY2UgPSBuZWdvdGlhdGVQcmljZSArIHBhcnNlSW50KGl0ZW0ubmVnb3RpYXRlUHJpY2UpXHJcbiAgICB9KVxyXG5cclxuICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMubmVnb3RpYXRlUHJpY2UgPSBuZWdvdGlhdGVQcmljZTtcclxuICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMudG90YWxOZWdvdGlhdGVQcmljZSA9IHByaWNlO1xyXG4gICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5maW5hbFZhbHVlID0gdGhpcy5wcmljZVZhbHVlRGV0YWlscy50b3RhbE5lZ290aWF0ZVByaWNlICogKDE4IC8gMTAwKTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICB9XHJcbiAgXHJcbiAgZ2V0cGF5bWVudGludm9pY2UoaWQ6IGFueSkge1xyXG4gICAgdGhpcy5QYXltZW50U3Vic2NyaXB0aW9uU2VydmljZS5nZXRwYXltZW50aW52b2ljZShpZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICB0aGlzLnBheW1lbnRpbnZvaWNlaW5mbyA9IHJlcy5kYXRhO1xyXG4gICAgICAgIHRoaXMucGF5bWVudElzc3VlID0gcmVzLmRhdGEucGF5bWVudHR5cGU7XHJcbiAgICAgICAgdGhpcy5jdXJyZW5jeUlzc3VlID0gcmVzLmRhdGEuY3VycmVuY3lUeXBlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJc3N1ZSA9IHJlcy5kYXRhLnBheW1lbnRDeWNsZTtcclxuICAgICAgICB0aGlzLmludm9pY2Vvbklzc3VlID0gcmVzLmRhdGEuaW52b2ljZU9uO1xyXG4gICAgICAgIHRoaXMucGF5bWVudGludm9pY2Vmb3JtLmdldCgncmFkaW9vcHRpb25zJyk/LnNldFZhbHVlKHJlcy5kYXRhLnByb1JhdGUpO1xyXG4gICAgICAgIHRoaXMucGF5bWVudGludm9pY2Vmb3JtLnBhdGNoVmFsdWUoXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGZpbGVUeXBlOiByZXMuZGF0YS5maWxlVHlwZSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UsIG9ubHlTZWxmOiB0cnVlIH1cclxuICAgICAgICApXHJcblxyXG4gICAgICAgIHRoaXMuZ2VuZXJhdGVpbnZvaWNlTGlzdCA9IHJlcy5kYXRhPy5pbnZvaWNlVG9cclxuICAgICAgICB0aGlzLnBheW1lbnRhbGxvd2VkTGlzdCA9IHJlcy5kYXRhPy5wYXltZW50QWdyZWVtZW50VG9cclxuICAgICAgICB0aGlzLmV4dGVuZFBheW1lbnRQZXJpb2REYXlzID0gcmVzLmRhdGE/LmV4dGVuZFBheW1lbnRQZXJpb2REYXlzXHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBvbnBheW1lbnRTdWJtaXQoKSB7XHJcbiAgICB0aGlzLnBheW1lbnRpbnZvaWNlc2hvdyA9IHRydWVcclxuICAgIGNvbnN0IHJlcXVlc3REYXRhID0ge1xyXG4gICAgICBwcm9SYXRlOiB0aGlzLnJhZGlvb3B0aW9ucyxcclxuICAgICAgcGF5bWVudHR5cGU6IHRoaXMucGF5bWVudElzc3VlLFxyXG4gICAgICBwYXltZW50Q3ljbGU6IHRoaXMuc2VsZWN0ZWRJc3N1ZSxcclxuICAgICAgY3VycmVuY3lUeXBlOiB0aGlzLmN1cnJlbmN5SXNzdWUsXHJcbiAgICAgIGludm9pY2VUbzogdGhpcy5nZW5lcmF0ZWludm9pY2VMaXN0LFxyXG4gICAgICBwYXltZW50QWdyZWVtZW50VG86IHRoaXMucGF5bWVudGFsbG93ZWRMaXN0LFxyXG4gICAgICBpbnZvaWNlT246IHRoaXMuaW52b2ljZW9uSXNzdWUsXHJcbiAgICAgIGV4dGVuZFBheW1lbnRQZXJpb2REYXlzOiB0aGlzLmV4dGVuZFBheW1lbnRQZXJpb2REYXlzLFxyXG4gICAgfTtcclxuICAgIHRoaXMuUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2UuaW52b2ljZXVwZGF0ZShyZXF1ZXN0RGF0YSwgdGhpcy5jbGllbnRJZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICB0aGlzLnRvYXN0LmdldFByaW1hcnlUb2FzdChyZXMubWVzc2FnZSlcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKVxyXG4gICAgICAgIHRoaXMub25wYXltZW50Q2FuY2VsKClcclxuXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIC8vIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHN1Ym1pdHRpbmcgdXBkYXRlOicsIGVycm9yKTtcclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIG9ucGF5bWVudENhbmNlbCgpIHtcclxuICAgIHRoaXMuUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2UucGF5bWVudGludm9pY2VGb3JtRGF0YS5uZXh0KHsgdmFsdWU6IG51bGwsIHR5cGU6ICdjYW5jZWwnLCBmb3JtOiAncGF5bWVudC1pbnZvaWNlJyB9KVxyXG4gICAgdGhpcy5wYXltZW50aW52b2ljZWZvcm0uZGlzYWJsZSgpXHJcbiAgfVxyXG5cclxuICBvbnBheW1lbnRlZGl0KCkge1xyXG4gICAgdGhpcy5wYXltZW50aW52b2ljZXNob3cgPSBmYWxzZVxyXG4gICAgdGhpcy5wYXltZW50aW52b2ljZWZvcm0uZW5hYmxlKClcclxuICB9XHJcblxyXG4gIGludm9pY2VUYWJsZURhdGEoKSB7XHJcbiAgICBsZXQgZmlsdGVyczogUmVjb3JkPHN0cmluZywgYW55PiA9IHtcclxuICAgICAgbGltaXQ6IHRoaXMucGFnZVNpemUsXHJcbiAgICAgIG9mZnNldDogdGhpcy5jdXJyZW50UGFnZSxcclxuICAgICAgZmlsdGVyOiB0aGlzLmlzRmlsdGVyLFxyXG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcclxuICAgICAgc2VhcmNoVmFsdWU6IHRoaXMuc2VhcmNoSW5wdXQsXHJcbiAgICAgIGV4cG9ydDogZmFsc2VcclxuICAgIH1cclxuICAgIHRoaXMuUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2UuaW52b2ljZVRhYmxlRGF0YShmaWx0ZXJzKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKGUpID0+IHtcclxuICAgICAgICBpZiAoZT8uZGF0YT8uY291bnQpIHtcclxuXHJcbiAgICAgICAgICB0aGlzLmludm9pY2VMaXN0ID0gZS5kYXRhPy5kYXRhXHJcblxyXG4gICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gZS5kYXRhPy5jb3VudFxyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKClcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5pbnZvaWNlTGlzdCA9IFtdXHJcbiAgICAgICAgICB0aGlzLnRvdGFsSXRlbXMgPSAwXHJcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuaW52b2ljZUxpc3QgPSBbXVxyXG4gICAgICAgIHRoaXMudG90YWxJdGVtcyA9IDBcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICBvbkV4cG9ydCgpIHtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xyXG4gICAgbGV0IGZpbHRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7XHJcbiAgICAgIGxpbWl0OiB0aGlzLnBhZ2VTaXplLFxyXG4gICAgICBvZmZzZXQ6IHRoaXMuY3VycmVudFBhZ2UsXHJcbiAgICAgIGZpbHRlcjogdGhpcy5pc0ZpbHRlcixcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWQsXHJcbiAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLnNlYXJjaElucHV0LFxyXG4gICAgICBleHBvcnQ6IHRydWVcclxuICAgIH1cclxuICAgIHRoaXMuUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2UuaW52b2ljZVRhYmxlRGF0YUV4cG9ydChmaWx0ZXJzKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMuUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2Uuc2F2ZUFzRXhjZWxGaWxlKHJlcywgJ2ludm9pY2UnKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlKSA9PiB7XHJcbiAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdTb21ldGhpbmcgd2VudCBXcm9uZy4uJylcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIG9uUGFnZVNpemVDaGFuZ2UocGFnZVNpemU6IGFueSkge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcbiAgICB0aGlzLnBhZ2VTaXplID0gcGFyc2VJbnQocGFnZVNpemUpXHJcbiAgICB0aGlzLmludm9pY2VUYWJsZURhdGEoKVxyXG4gIH1cclxuXHJcbiAgb25QYWdlQ2hhbmdlKHBhZ2VPZmZzZXQ6IGFueSkge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IHBhcnNlSW50KHBhZ2VPZmZzZXQpXHJcbiAgICB0aGlzLmludm9pY2VUYWJsZURhdGEoKVxyXG4gIH1cclxuXHJcbiAgc2VhcmNoRmllbGQoKSB7XHJcbiAgICB0aGlzLmludm9pY2VUYWJsZURhdGEoKVxyXG4gIH1cclxuXHJcbiAgcmV2ZXJ0T3JpZ2luYWxQcmljZSgpIHtcclxuICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMub3JpZ2luYWxQcmljZVZhbHVlKSlcclxuICB9XHJcblxyXG4gIGdldFByb2R1Y3RMaXN0KCkge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIGxldCBkYXRhID0gdGhpcy5jbGllbnRJZDtcclxuICAgIHRoaXMuUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2UuZ2V0UHJvZHVjdExpc3QoZGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vRGF0YSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucHJvZHVjdExpc3QgPSByZXMuZGF0YTtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0sKGVycm9yOmFueSkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0U3RvcmVMaXN0KCkge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2UuZ2V0U3RvcmVMaXN0KHRoaXMuZHluYW1pY0RhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnN0b3JlTGlzdCA9IHJlcy5kYXRhLmRhdGE7XHJcbiAgICAgICAgdGhpcy5zdG9yZUxpc3QuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpdGVtLmNoZWNrZWQgPSB0aGlzLnNlbGVjdEFsbDtcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMudG90YWxDb3VudCA9IHJlcy5kYXRhLmNvdW50O1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSwgKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIG9uU3RvcmVQYWdlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuZHluYW1pY0RhdGEub2Zmc2V0ID0gcGFyc2VJbnQoZXZlbnQpO1xyXG4gICAgdGhpcy5nZXRTdG9yZUxpc3QoKTtcclxuICB9XHJcblxyXG4gIG9uU3RvcmVQYWdlU2l6ZUNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmR5bmFtaWNEYXRhLm9mZnNldCA9IDE7XHJcbiAgICB0aGlzLmR5bmFtaWNEYXRhLmxpbWl0ID0gcGFyc2VJbnQoZXZlbnQpO1xyXG4gICAgdGhpcy5nZXRTdG9yZUxpc3QoKTtcclxuICB9XHJcblxyXG4gIGZpbHRlckxpc3QoKSB7XHJcbiAgICBsZXQgZGF0YSA9IHRoaXMuY2xpZW50SWQ7XHJcbiAgICB0aGlzLlBheW1lbnRTdWJzY3JpcHRpb25TZXJ2aWNlLmdldEZpbHRlckRldGFpbHMoZGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICByZXMuZGF0YS5zdG9yZS5mb3JFYWNoKChzdG9yZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBsZXQgc3RvcmVzSW5kZXggPSB0aGlzLmRhdGFPYmplY3QuZmluZEluZGV4KChpdGVtOiBhbnkpID0+IGl0ZW0uRGVzY3JpcHRpb24gPT0gJ1N0b3JlJyk7XHJcbiAgICAgICAgICBpZiAoc3RvcmVzSW5kZXggIT0gLTEpIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhT2JqZWN0W3N0b3Jlc0luZGV4XS5Jc3N1ZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgdGV4dDogc3RvcmUuc3RvcmVOYW1lLFxyXG4gICAgICAgICAgICAgIGlkOiBzdG9yZS5zdG9yZUlkXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgcmVzLmRhdGEubG9jYXRpb24uZm9yRWFjaCgobG9jYXRpb246IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgbGV0IGxvY2F0aW9uSW5kZXggPSB0aGlzLmRhdGFPYmplY3QuZmluZEluZGV4KChpdGVtOiBhbnkpID0+IGl0ZW0uRGVzY3JpcHRpb24gPT0gJ0xvY2F0aW9uJyk7XHJcbiAgICAgICAgICBpZiAobG9jYXRpb25JbmRleCAhPSAtMSkge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGFPYmplY3RbbG9jYXRpb25JbmRleF0uSXNzdWVzLnB1c2goe1xyXG4gICAgICAgICAgICAgIHRleHQ6IGxvY2F0aW9uLFxyXG4gICAgICAgICAgICAgIGlkOiBpbmRleFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIHJlcy5kYXRhLnByb2R1Y3QuZm9yRWFjaCgocHJvZHVjdDogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICBsZXQgcHJvZHVjdEluZGV4ID0gdGhpcy5kYXRhT2JqZWN0LmZpbmRJbmRleCgoaXRlbTogYW55KSA9PiBpdGVtLkRlc2NyaXB0aW9uID09ICdQcm9kdWN0cycpO1xyXG4gICAgICAgICAgaWYgKHByb2R1Y3RJbmRleCAhPSAtMSkge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGFPYmplY3RbcHJvZHVjdEluZGV4XS5Jc3N1ZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgdGV4dDogcHJvZHVjdCxcclxuICAgICAgICAgICAgICBpZDogaW5kZXhcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuXHJcbiAgfVxyXG5cclxuICBzZWFyY2hSZWNvcmRzKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuZHluYW1pY0RhdGEub2Zmc2V0ID0gMTtcclxuICAgIHRoaXMuZHluYW1pY0RhdGEuc2VhcmNoVmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XHJcbiAgICB0aGlzLmdldFN0b3JlTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0QWxsU3RvcmUoZXZlbnQ6IGFueSkge1xyXG4gICAgbGV0IHN0b3JlSWRMaXN0OyBcclxuICAgIGlmIChldmVudC50YXJnZXQuY2hlY2tlZCkge1xyXG4gICAgICBzdG9yZUlkTGlzdCA9IHRoaXMuZGF0YU9iamVjdFsxXS5Jc3N1ZXMubWFwKChpdGVtOmFueSkgPT4gaXRlbS5pZCk7XHJcbiAgICAgIGxldCBkYXRhID0ge1xyXG4gICAgICAgIGNsaWVudElkOiB0aGlzLmNsaWVudElkLFxyXG4gICAgICAgIHN0b3JlOiBbXVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2Uuc3RvcmVQcm9kdWN0KGRhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuc3RvcmVQcm9kdWN0ID0gcmVzLmRhdGE7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHN0b3JlSWRMaXN0ID0gW107XHJcbiAgICAgIHRoaXMuc3RvcmVQcm9kdWN0ID0gW107XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlbGVjdEFsbCA9IGV2ZW50LnRhcmdldC5jaGVja2VkO1xyXG4gICAgdGhpcy5zdG9yZUxpc3QuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGl0ZW0uY2hlY2tlZCA9IGV2ZW50LnRhcmdldC5jaGVja2VkXHJcbiAgICB9KVxyXG4gICAgdGhpcy5zZWxlY3RlZFN0b3JlTGlzdCA9IHN0b3JlSWRMaXN0O1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RvcmVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRTdG9yZUxpc3RcclxuICB9XHJcblxyXG4gIHVwZGF0ZUNoZWNrKGV2ZW50OiBhbnksIHN0b3JlSWQ6IGFueSkge1xyXG4gICAgaWYgKGV2ZW50LnRhcmdldC5jaGVja2VkKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRTdG9yZUxpc3QucHVzaChzdG9yZUlkKVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRTdG9yZUxpc3QuZmluZEluZGV4KChpdGVtOiBhbnkpID0+IGl0ZW0gPT09IHN0b3JlSWQpO1xyXG4gICAgICBpZiAoaW5kZXggIT0gLTEpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkU3RvcmVMaXN0LnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkU3RvcmVMaXN0Lmxlbmd0aCA9PSB0aGlzLnRvdGFsQ291bnQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RBbGwgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBsZXQgZGF0YSA9IHtcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWQsXHJcbiAgICAgIHN0b3JlOiB0aGlzLnNlbGVjdGVkU3RvcmVMaXN0XHJcbiAgICB9XHJcbiAgICB0aGlzLlBheW1lbnRTdWJzY3JpcHRpb25TZXJ2aWNlLnN0b3JlUHJvZHVjdChkYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgIHRoaXMuc3RvcmVQcm9kdWN0ID0gcmVzLmRhdGE7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXRQcm9kdWN0KCkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRTdG9yZUxpc3QubGVuZ3RoIHx8IHRoaXMuc2VsZWN0QWxsKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnN0b3JlUHJvZHVjdDtcclxuICAgIH1cclxuICAgIHJldHVybiBbXTtcclxuICB9XHJcblxyXG4gIG5vdGlmaWNhdGlvbkxpc3QoKSB7XHJcbiAgICB0aGlzLm5vdGlmaWNhdGlvbkRldGFpbHMgPSBbXTtcclxuICAgIGxldCBkYXRhID0gdGhpcy5jbGllbnRJZDtcclxuICAgIHRoaXMuUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2UuZ2V0Tm90aWZpY2F0aW9uKGRhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25EZXRhaWxzID0gcmVzLmRhdGE7XHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25EZXRhaWxzLm5vdGlmaWNhdGlvbkxpc3QuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpdGVtLnByb2R1Y3R0cmFpbGRyb3BEb3duID0gZmFsc2U7XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmN1cnJlbnRQbGFuID0gcmVzLmRhdGEuY3VycmVudFBsYW47XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBjYW5jZWxVbnN1YnNjcmliZShkYXRhOiBhbnksIHR5cGU6IGFueSkge1xyXG4gICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgaWQ6IGRhdGEuX2lkLFxyXG4gICAgICB0eXBlOiB0eXBlXHJcbiAgICB9XHJcbiAgICB0aGlzLmFwcHJvdmVDYW5jZWxVbnN1YnNjcmliZShwYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgYXBwcm92ZUNhbmNlbFVuc3Vic2NyaWJlKGRhdGE6IGFueSkge1xyXG4gICAgdGhpcy5QYXltZW50U3Vic2NyaXB0aW9uU2VydmljZS51bnN1YnNjcmliZUFwcHJvdmFsKGRhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgaWYgKGRhdGEudHlwZSA9PSAndW5zdWJzY3JpYmUnKSB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ1Vuc3Vic2NyaWJlZCBUYW5nbyBTdWl0ZSBmb3Ig4oCcQnJhbmQgTmFtZeKAnSBzdWNjZXNzZnVsbHknKVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkxpc3QoKTtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHJlbG9hZChldmVudDphbnkpIHtcclxuICAgIGlmKGV2ZW50ID09ICdzdG9yZScpIHtcclxuICAgICAgdGhpcy5nZXRTdG9yZUxpc3QoKTtcclxuICAgICAgdGhpcy5zZWxlY3RBbGwgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmKGV2ZW50ID09ICdwcm9kdWN0Jykge1xyXG4gICAgICB0aGlzLmdldFByb2R1Y3RMaXN0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb252ZXJ0VXBwZXIoZGF0YTpzdHJpbmcpIHtcclxuICAgIGxldCBbZmlyc3RXb3JkLCBzZWNvbmRXb3JkXSA9IGRhdGEucmVwbGFjZSgvKFthLXpdKShbQS1aXSkvZywgJyQxICQyJykuc3BsaXQoJyAnKTtcclxuICAgIGZpcnN0V29yZCA9IGZpcnN0V29yZC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGZpcnN0V29yZC5zbGljZSgxKTtcclxuICAgIHJldHVybiBmaXJzdFdvcmQgKyAnICcgKyBzZWNvbmRXb3JkO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uIFtjbG9zZU90aGVyc109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgIDwhLS0gQmlsbGluZyAmIHN1YnNjcmlwdGlvbiBzdGFydCAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIiBuZ2JBY2NvcmRpb25JdGVtIFtjb2xsYXBzZWRdPVwib3BlbmFjY29yZGlhblwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiIG5nYkFjY29yZGlvbkhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWFpbmhlYWRpbmdcIiBuZ2JBY2NvcmRpb25CdXR0b24+QmlsbGluZyAmIFN1YnNjcmlwdGlvbjxkaXYgY2xhc3M9XCJkaXZpZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQ29sbGFwc2U+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Cb2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tYmVnaW46OnBsYW4gZGV0YWlscyBDYXJkLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhsLTEyIGJpbGxpbmdjYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBoLXhsLTEwMCBmbGV4LXJvdyBmbGV4LXN0YWNrIGZsZXgtd3JhcCBwLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvYXN0Y2FyZCBjb2wtbWQtMTJcIiAqbmdJZj1cImNsaWVudGluZm8/LmN1cnJlbnRQbGFuSW5mbz8ucGF5bWVudFN0YXR1cz09PSdkdWUnICYmIGNsaWVudGluZm8/LmN1cnJlbnRQbGFuSW5mbz8uZHVlTGltaXRSZWFjaGVkPT09ZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zMHB4IG1lLTVcIj48c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vY3VzdG9tcG9wdXAtSWNvbnMvZGFuZ2VyLWFsZXJ0LXByaW1hcnkuc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidG9hc3R0ZXh0IGQtYmxvY2tcIj5LaW5kIFJlbWluZGVyOiBZb3UgaGF2ZSBhIHJlYWNoZWQgeW91ciBkdWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXQgLFRvIGNvbnRpbnVlIGVuam95aW5nIG91ciBzZXJ2aWNlcywgcGxlYXNlIHJlbmV3IHlvdXIgc3Vic2NyaXB0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IG1ha2luZyB0aGUgcGF5bWVudC4gVGhhbmsgeW91IGZvciB5b3VyIGNvb3BlcmF0aW9uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjxhIHR5cGU9XCJidXR0b25cIiB0YWJpbmRleD1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcHgtNCBuZy1zdGFyLWluc2VydGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vd3JhcDtcIj48c3BhbiBjbGFzcz1cImNyZWF0ZVwiPlBheSBOb3dcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2E+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvYXN0Y2FyZCBjb2wtbWQtMTJcIiAgKm5nSWY9XCJjbGllbnRpbmZvPy5jdXJyZW50UGxhbkluZm8/LnBheW1lbnRTdGF0dXM9PT0nZHVlJyAmJiBjbGllbnRpbmZvPy5jdXJyZW50UGxhbkluZm8/LmR1ZUxpbWl0UmVhY2hlZD09PXRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zMHB4IG1lLTVcIj48c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vY3VzdG9tcG9wdXAtSWNvbnMvZGFuZ2VyLWFsZXJ0LXByaW1hcnkuc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidG9hc3R0ZXh0IGQtYmxvY2tcIj5LaW5kIFJlbWluZGVyOiBXZSBoYXZlbid0IHJlY2VpdmVkIHlvdXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF5bWVudCB5ZXQuIFRvIGNvbnRpbnVlIGVuam95aW5nIG91ciBzZXJ2aWNlcywgcGxlYXNlIHJlbmV3IHlvdXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uIGJ5IG1ha2luZyB0aGUgcGF5bWVudC4gVGhhbmsgeW91IGZvciB5b3VyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvb3BlcmF0aW9uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjxhIHR5cGU9XCJidXR0b25cIiB0YWJpbmRleD1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcHgtNCBuZy1zdGFyLWluc2VydGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vd3JhcDtcIj48c3BhbiBjbGFzcz1cImNyZWF0ZVwiPlBheSBOb3dcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2E+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBtdC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBib3JkZXItdmFsIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJyZW50IFBsYW4gSW5mbzxzcGFuIGNsYXNzPVwiYmFkZ2UtbGlnaHQtZ3JleSBtcy0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y2xpZW50aW5mbz8uY3VycmVudFBsYW5JbmZvPy5wcmljZVR5cGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgJy0tJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBwcmljaW5ndGV4dCBteS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCB7e2NsaWVudGluZm8/LmN1cnJlbnRQbGFuSW5mbz8ucHJpY2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAnLS0nfX08c3BhbiBjbGFzcz1cInByaWNpbmdzcGFuIG1zLTJcIj5TdG9yZS9Nb250aDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgZmxleC1jb2x1bW4gcGxhbmNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBoZWFkaW5nIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y2xpZW50aW5mbz8uY3VycmVudFBsYW5JbmZvPy5zdWJzY3JpcHRpb25UeXBlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAnLS0nfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYW4gLSB7e2NsaWVudGluZm8/LmN1cnJlbnRQbGFuSW5mbz8uc3RvcmVDb3VudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1YmhlYWRpbmcgbXMtMlwiPnN0b3JlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25ib2FyZGVkPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gbmdiVG9vbHRpcD1cInt7IHByb2R1Y3QudG9vbFRpcCB9fVwiIHBsYWNlbWVudD1cInRvcFwiIHRyaWdnZXJzPVwibW91c2VlbnRlcjptb3VzZWxlYXZlXCIgdG9vbHRpcENsYXNzPVwiY3VzdG9tLXRvb2x0aXBcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXdhcm5pbmcgbXMtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHByb2R1Y3Qgb2YgY2xpZW50aW5mbz8uY3VycmVudFBsYW5JbmZvPy50cmlhbFByb2R1Y3RzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcHJvZHVjdC5hbGlzZVByb2R1Y3ROYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cIm1zLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCIuL2Fzc2V0cy90YW5nby9jdXN0b21wb3B1cC1JY29ucy9jbG9ja2V4cGlyeS1pY29uLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiPiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiB0b29sdGlwQ2xhc3M9XCJjdXN0b20tdG9vbHRpcFwiIG5nYlRvb2x0aXA9XCJ7eyBwcm9kdWN0LnRvb2xUaXAgfX1cIiBwbGFjZW1lbnQ9XCJ0b3BcIiB0cmlnZ2Vycz1cIm1vdXNlZW50ZXI6bW91c2VsZWF2ZVwiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtcHJpbWFyeSBtcy0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcHJvZHVjdCBvZiBjbGllbnRpbmZvPy5jdXJyZW50UGxhbkluZm8/LmV4cGlyZWRQcm9kdWN0c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHByb2R1Y3QuYWxpc2VQcm9kdWN0TmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJtcy0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiLi9hc3NldHMvdGFuZ28vY3VzdG9tcG9wdXAtSWNvbnMvcHJpbWFyeS1jbG9jay1pY29uLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiPiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1YiBkLWJsb2NrXCI+Q2FtZXJhcyA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NsaWVudGluZm8/LmN1cnJlbnRQbGFuSW5mbz8udG90YWxDYW1lcmFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICctLSd9fSB8IEF2ZyBzcS5mdCA6IHt7Y2xpZW50aW5mbz8uY3VycmVudFBsYW5JbmZvPy5zdG9yZVNpemVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICctLSd9fSBzcS5mdCB8IFByb2R1Y3RzIDogPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcHJvZHVjdCBvZiBjbGllbnRpbmZvPy5jdXJyZW50UGxhbkluZm8/LmxpdmVQcm9kdWN0c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHByb2R1Y3QuYWxpc2VQcm9kdWN0TmFtZSB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBkLWZsZXggYWxpZ24taXRlbXMtZW5kXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAgW2Rpc2FibGVUb29sdGlwXT1cIiFjbGllbnRpbmZvPy5jdXJyZW50UGxhbkluZm8/LnBlbmRpbmdDbGllbnRSZXF1ZXN0XCIgbmdiVG9vbHRpcD1cIlJlcXVlc3QgaXMgQWxyZWFkeSBpbml0aWF0ZWQgd2FpdGluZyBmb3IgYWRtaW4gYXBwcm92YWxcIiBwbGFjZW1lbnQ9XCJ0b3BcIiB0cmlnZ2Vycz1cIm1vdXNlZW50ZXI6bW91c2VsZWF2ZVwiIHRvb2x0aXBDbGFzcz1cImN1c3RvbS10b29sdGlwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIFtkaXNhYmxlZF09XCJjbGllbnRpbmZvPy5jdXJyZW50UGxhbkluZm8/LnBlbmRpbmdDbGllbnRSZXF1ZXN0XCIgKGNsaWNrKT1cIm5lZWRoZWxwKClcIiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1vdXRsaW5lIGJ0biBuZWVkaGVscCBtZS00XCI+PHNwYW4gY2xhc3M9XCJtZS0yXCI+PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTk2NV8yMzAxKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTcuNTc1MzMgNy41MDAzM0M3Ljc3MTI1IDYuOTQzMzggOC4xNTc5NSA2LjQ3Mzc1IDguNjY2OTUgNi4xNzQ2QzkuMTc1OTYgNS44NzU0NiA5Ljc3NDQxIDUuNzY2MTEgMTAuMzU2MyA1Ljg2NTkyQzEwLjkzODIgNS45NjU3MyAxMS40NjYgNi4yNjgyNiAxMS44NDYyIDYuNzE5OTNDMTIuMjI2NCA3LjE3MTYgMTIuNDM0NSA3Ljc0MzI2IDEyLjQzMzcgOC4zMzM2NkMxMi40MzM3IDEwLjAwMDMgOS45MzM2NiAxMC44MzM3IDkuOTMzNjYgMTAuODMzN00xMC4wMDAzIDE0LjE2N0gxMC4wMDg3TTE4LjMzMzcgMTAuMDAwM0MxOC4zMzM3IDE0LjYwMjcgMTQuNjAyNyAxOC4zMzM3IDEwLjAwMDMgMTguMzMzN0M1LjM5Nzk1IDE4LjMzMzcgMS42NjY5OSAxNC42MDI3IDEuNjY2OTkgMTAuMDAwM0MxLjY2Njk5IDUuMzk3OTUgNS4zOTc5NSAxLjY2Njk5IDEwLjAwMDMgMS42NjY5OUMxNC42MDI3IDEuNjY2OTkgMTguMzMzNyA1LjM5Nzk1IDE4LjMzMzcgMTAuMDAwM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTk2NV8yMzAxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz1cIm10LTJcIj4gTmVlZCBIZWxwPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInVwZ3JhZGVwbGFuKClcIiB0eXBlPVwiYnV0dG9uXCIgdGFiaW5kZXg9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gdXBkYXRlIGJ0bi1sZyBidG4tbGlnaHQgYnRuLWFjdGl2ZS1saWdodC1wcmltYXJ5IHB4LTQgbmctc3Rhci1pbnNlcnRlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vd3JhcDtcIj48c3BhbiBjbGFzcz1cImNyZWF0ZVwiPlVwZ3JhZGUgUGxhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tZW5kOjpwbGFuIGRldGFpbHMgQ2FyZC0tPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGd4LTQgbXQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1iZWdpbjo6QmFuayBkZXRhaWxzIENhcmQtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhsLTcgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiaWxsaW5nY2FyZCBoLXhsLTEwMCBmbGV4LXJvdyBmbGV4LXN0YWNrIGZsZXgtd3JhcCBwLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gcHktMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGJpbGxpbmd0ZXh0IG1iLThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFuayBEZXRhaWxzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmlsbGluZ2RldGFpbHNcIj5QYXltZW50IFR5cGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiaWxsaW5nbWFpblwiPlZpcnR1YWwgQWNjXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJpbGxpbmdkZXRhaWxzXCI+QWNjb3VudCBObyA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiaWxsaW5nbWFpblwiPiB7e2NsaWVudGluZm8/LmJhbmtEZXRhaWxzPy5hY2NvdW50Tm8gfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS0nfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmlsbGluZ2RldGFpbHNcIj5JRlNDIENvZGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiaWxsaW5nbWFpblwiPiB7e2NsaWVudGluZm8/LmJhbmtEZXRhaWxzPy5pZnNjQ29kZSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJpbGxpbmdkZXRhaWxzXCI+U1dJRlQgQ29kZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJpbGxpbmdtYWluXCI+IHt7Y2xpZW50aW5mbz8uYmFua0RldGFpbHM/LnN3aWZ0Q29kZSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiaWxsaW5nZGV0YWlsc1wiPkJyYW5jaCA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiaWxsaW5nbWFpblwiPnt7Y2xpZW50aW5mbz8uYmFua0RldGFpbHM/LmJyYW5jaCB8fCAnLS0nfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWVuZDo6QmFuayBkZXRhaWxzIENhcmQtLT5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteGwtNSBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQWRkIEJpbGxpbmcgc3RhcnQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiaWxsaW5nIGgteGwtMTAwIHctMTAwIGZsZXgtcm93IGZsZXgtc3RhY2sgZmxleC13cmFwIHAtNlwiICpuZ0lmPVwiIWNsaWVudGluZm8/LmJpbGxpbmdEZXRhaWxzPy5iaWxsaW5nQWRkcmVzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnQgYWxpZ24taXRlbXMtY2VudGVyIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+PGltZyBzcmM9XCIuL2Fzc2V0cy90YW5nby9jdXN0b21wb3B1cC1JY29ucy9hZGRiaWxsaW5nX2ljb24uc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIj48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmcgbXQtNCBtcy0xXCI+QWRkIGJpbGxpbmcgYWRkcmVzczwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBtdC04IHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHRhYmluZGV4PVwiMFwiIChjbGljayk9XCJ1cGRhdGUoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBtcy0yIG5nLXN0YXItaW5zZXJ0ZWQgYWRkcmVzcyB3LTEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndoaXRlLXNwYWNlOiBub3dyYXA7XCI+PHNwYW4gY2xhc3M9XCJzdWJtaXRcIj48c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMC4wMDAzIDQuMTY2NzVWMTUuODMzNE00LjE2Njk5IDEwLjAwMDFIMTUuODMzN1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+IE5ldyBBZGRyZXNzIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBBZGQgQmlsbGluZyBlbmQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQmlsbGluZyBJbmZvcm1hdGlvbiBzdGFydCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJpbGxpbmdjYXJkIGgteGwtMTAwIGZsZXgtcm93IGZsZXgtc3RhY2sgZmxleC13cmFwIHAtNlwiICpuZ0lmPVwiY2xpZW50aW5mbz8uYmlsbGluZ0RldGFpbHM/LmJpbGxpbmdBZGRyZXNzICYmIGNsaWVudGluZm8/LmJpbGxpbmdEZXRhaWxzPy5iaWxsaW5nQWRkcmVzcyE9PScnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIHB5LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBiaWxsaW5ndGV4dCBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpbGxpbmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgdHlwZT1cInN1Ym1pdFwiIChjbGljayk9XCJ1cGRhdGUoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biB1cGRhdGUgYnRuLWxnIGJ0bi1saWdodCBidG4tYWN0aXZlLWxpZ2h0LXByaW1hcnkgcHgtNCBuZy1zdGFyLWluc2VydGVkXCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVcGRhdGU8L3NwYW4+PC9hPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJpbGxpbmdkZXRhaWxzXCI+TmV4dCBCaWxsaW5nIERhdGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJpbGxpbmdtYWluXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NsaWVudGluZm8/LmJpbGxpbmdEZXRhaWxzPy5uZXh0QmlsbGluZ0RhdGUgfHwgJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhbGlnbi1pdGVtcy1jZW50ZXIgbXQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmlsbGluZ2RldGFpbHNcIj5CaWxsaW5nIEFkZHJlc3M8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJpbGxpbmdtYWluXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NsaWVudGluZm8/LmJpbGxpbmdEZXRhaWxzPy5iaWxsaW5nQWRkcmVzcyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQmlsbGluZyBJbmZvcm1hdGlvbiBFbmQgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS0gQmlsbGluZyAmIHN1YnNjcmlwdGlvbiBFbmQgLS0+XHJcblxyXG4gICAgICAgICAgICA8IS0tc3Vic2NyaXB0aW9uIENvbmZpZyBzdGFydCAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgbXQtNlwiIG5nYkFjY29yZGlvbkl0ZW0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtYWluaGVhZGluZ1wiIG5nYkFjY29yZGlvbkJ1dHRvbj5TdWJzY3JpcHRpb24gQ29uZmlnIDxkaXYgY2xhc3M9XCJkaXZpZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQ29sbGFwc2U+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Cb2R5PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14bC0xMiBiaWxsaW5nY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgaC14bC0xMDAgZmxleC1yb3cgZmxleC1zdGFjayBmbGV4LXdyYXAgbXgtNSBwdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gc3Vic2NyaXB0aW9uIGluZm8gaGVhZGVyIHN0YXJ0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd05hdkdyb3VwXCIgY2xhc3M9XCJuYXYtZ3JvdXAgbmF2LWdyb3VwLW91dGxpbmUgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tY29sb3ItZ3JheS02MDAgYnRuLWFjdGl2ZSBidG4tYWN0aXZlLXNlY29uZGFyeSBweC02IHB5LTMgbWUtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJwbGFuID09PSAnc3Vic2NyaXB0aW9uJz8gJ2FjdGl2ZVBsYW5CdG4nOidpbmFjdGl2ZVBsYW5CdG4nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEta3QtcGxhbj1cInN1YnNjcmlwdGlvblwiIChjbGljayk9XCJzZWxlY3RQbGFuKCdzdWJzY3JpcHRpb24nKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3Vic2NyaXB0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWNvbG9yLWdyYXktNjAwIGJ0bi1hY3RpdmUgYnRuLWFjdGl2ZS1zZWNvbmRhcnkgcHgtNiBweS0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInBsYW4gPT09ICdwcmljaW5nJz8gJ2FjdGl2ZVBsYW5CdG4nOidpbmFjdGl2ZVBsYW5CdG4nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEta3QtcGxhbj1cInByaWNpbmdcIiAoY2xpY2spPVwic2VsZWN0UGxhbigncHJpY2luZycpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmljaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHN1YnNjcmlwdGlvbiBpbmZvIGhlYWRlciBlbmQgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBzdWJzY3JpcHRpb24gdGFiIHN0YXJ0cyAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwbGFuID09PSAnc3Vic2NyaXB0aW9uJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gY2xpZW50IHJlcXVlc3QgY2FyZCBzdGFydCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGd4LTQgbXQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tYmVnaW46OkJhbmsgZGV0YWlscyBDYXJkLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteGwtNlwiIFtuZ0NsYXNzXT1cImkgPiAxPyAnbXQtNScgOiAnJ1wiICpuZ0Zvcj1cImxldCBub3RpZmljYXRpb24gb2Ygbm90aWZpY2F0aW9uRGV0YWlscy5ub3RpZmljYXRpb25MaXN0O2xldCBpPSBpbmRleDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQmlsbGluZyBJbmZvcm1hdGlvbiBzdGFydCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJpbGxpbmdjYXJkIGgteGwtMTAwIGZsZXgtcm93IGZsZXgtc3RhY2sgZmxleC13cmFwIG1iLTYgcHgtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gbXQtMTBcIiAqbmdJZj1cIm5vdGlmaWNhdGlvbi5jYXRlZ29yeSA9PT0gJ1RyaWFsJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gbGV2ZWx2aWV3dGV4dCBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e25vdGlmaWNhdGlvbi5uYW1lfX0gPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhZGdlLWxpZ2h0LWdyZXkgbXMtMlwiPnt7Y3VycmVudFBsYW59fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWJ0ZXh0XCI+S2luZGx5IG1ha2UgbmVjZXNzYXJ5IGFjdGlvbiBmb3IgdHJpYWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qgb3Igc2tpcCBwcm9kdWN0IHRvIHN1YnNjcmlwdGlvbiBsaXN0PC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGRhdGEta3Qtc3Vic2NyaXB0aW9uLXRhYmxlLXRvb2xiYXI9XCJiYXNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IG10LTlcIj48YSAoY2xpY2spPVwiYXBwcm92ZXRyaWFsKG5vdGlmaWNhdGlvbiwnY2FuY2VsJylcIiB0eXBlPVwic3VibWl0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1vdXRsaW5lIGJ0biBuZWVkaGVscCBtZS02IG10LTNcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTZcIj5Ta2lwIFRyYWlsPC9zcGFuPjwvYT48YSAoY2xpY2spPVwiYXBwcm92ZXRyaWFsKG5vdGlmaWNhdGlvbiwnYXBwcm92ZScpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgdGFiaW5kZXg9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBweC00IG10LTMgbmctc3Rhci1pbnNlcnRlZFwiPjxzcGFuPkFwcHJvdmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhaWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9hPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gbXQtMTBcIiAqbmdJZj1cIm5vdGlmaWNhdGlvbi5jYXRlZ29yeSA9PT0gJ3Vuc3Vic2NyaWJlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBsZXZlbHZpZXd0ZXh0IG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuc3Vic2NyaWJlIFJlcXVlc3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWJ0ZXh0XCI+Q2xpZW50IGhhcyByZXF1ZXN0ZWQgdG8gdW5zdWJzY3JpYmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VidGV4dGJvbGRcIj5UYW5nbyBTdWl0ZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZGF0YS1rdC1zdWJzY3JpcHRpb24tdGFibGUtdG9vbGJhcj1cImJhc2VcIiBjbGFzcz1cImQtZmxleCBtdC05XCI+PGEgdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4tb3V0bGluZSBidG4gbmVlZGhlbHAgbWUtNiBtdC0zXCIgKGNsaWNrKT1cImNhbmNlbFVuc3Vic2NyaWJlKG5vdGlmaWNhdGlvbiwnY2FuY2VsJylcIj48c3BhbiBjbGFzcz1cIm10LTZcIj5DYW5jZWw8L3NwYW4+PC9hPjxhIChjbGljayk9XCJhcHByb3ZlVW5zdWJzY3JpYmUobm90aWZpY2F0aW9uLCd1bnN1YnNjcmliZScpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgdGFiaW5kZXg9XCIwXCIgY2xhc3M9XCJidG4gYnRuLWRhbmdlciBweC00IG10LTMgbmctc3Rhci1pbnNlcnRlZFwiPjxzcGFuPkFwcHJvdmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9hPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gbXQtMTBcIiAqbmdJZj1cIm5vdGlmaWNhdGlvbi5jYXRlZ29yeSA9PT0gJ3RyaWFsIHByb2R1Y3QnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGxldmVsdmlld3RleHQgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tub3RpZmljYXRpb24ubmFtZX19IDxzcGFuIGNsYXNzPVwiYmFkZ2UtbGlnaHQtZ3JleSBtcy0yXCI+e3tjdXJyZW50UGxhbn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1YnRleHRcIj5DdXJyZW50IFBsYW4gSW5mbzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG10LTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOCBkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxzdmcgaWQ9XCJjaXJjbGUtY2hhcnRcIiB3aWR0aD1cIjk0XCIgaGVpZ2h0PVwiOTRcIiB2aWV3Qm94PVwiMCAwIDEwMCAxMDBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEJhY2tncm91bmQgY2lyY2xlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjUwXCIgY3k9XCI1MFwiIHI9XCI0MFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiI2YwZjBmMFwiIHN0cm9rZS13aWR0aD1cIjhcIj48L2NpcmNsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRm9yZWdyb3VuZCBjaXJjbGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPVwicHJvZ3Jlc3MtY2lyY2xlLXt7aX19XCIgY3g9XCI1MFwiIGN5PVwiNTBcIiByPVwiNDBcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMDdiZmZcIiBzdHJva2Utd2lkdGg9XCI4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtZGFzaGFycmF5PVwiMjUxLjJcIiBbYXR0ci5zdHJva2UtZGFzaG9mZnNldF09XCJ1cGRhdGVDaXJjbGVDaGFydChub3RpZmljYXRpb24ucGVyY2VudGFnZSxpKVwiPjwvY2lyY2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBUZXh0IGRpc3BsYXlpbmcgcGVyY2VudGFnZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0IGlkPVwicGVyY2VudGFnZS10ZXh0LXt7aX19XCIgeD1cIjUwXCIgeT1cIjU0XCIgY2xhc3M9XCJwcm9kdWN0dGV4dFwiIHRleHQtYW5jaG9yPVwibWlkZGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzMzMzMzM1wiPnt7bm90aWZpY2F0aW9uLnBlcmNlbnRhZ2V9fSU8L3RleHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhbGlnbi1pdGVtcy1zdGFydCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBkYXlzbGVmdCBtcy02IG10LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tub3RpZmljYXRpb24uZGF5fX0gRGF5cyBMZWZ0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhbGlnbi1pdGVtcy1zdGFydCB0cmFpbCBtdC0yIG1lLTE0XCI+RnJlZSB0cmlhbDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTQgbXQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJwcm9kdWN0dHJhaWxEcm9wZG93bigkZXZlbnQsaSlcIj4gPHNwYW4gY2xhc3M9XCJqdXN0aWZ5LWNvbnRlbnQtZW5kIGN1cnNvci1wb2ludGVyIG1zLTIwXCI+PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjYwXCIgaGVpZ2h0PVwiNjBcIiB2aWV3Qm94PVwiMCAwIDYwIDYwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGZpbHRlcj1cInVybCgjZmlsdGVyMF9kXzUyMjFfNjAxNDMpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIxXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgcng9XCI4XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyLjVcIiB5PVwiMS41XCIgd2lkdGg9XCI1NVwiIGhlaWdodD1cIjU1XCIgcng9XCI3LjVcIiBzdHJva2U9XCIjRDBENUREXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfNTIyMV82MDE0MylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTMwIDMyQzMxLjY1NjkgMzIgMzMgMzAuNjU2OSAzMyAyOUMzMyAyNy4zNDMxIDMxLjY1NjkgMjYgMzAgMjZDMjguMzQzMSAyNiAyNyAyNy4zNDMxIDI3IDI5QzI3IDMwLjY1NjkgMjguMzQzMSAzMiAzMCAzMlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zNy40IDMyQzM3LjI2NjkgMzIuMzAxNiAzNy4yMjcyIDMyLjYzNjIgMzcuMjg2IDMyLjk2MDZDMzcuMzQ0OCAzMy4yODUgMzcuNDk5NSAzMy41ODQzIDM3LjczIDMzLjgyTDM3Ljc5IDMzLjg4QzM3Ljk3NiAzNC4wNjU3IDM4LjEyMzUgMzQuMjg2MyAzOC4yMjQxIDM0LjUyOTFDMzguMzI0OCAzNC43NzE5IDM4LjM3NjYgMzUuMDMyMiAzOC4zNzY2IDM1LjI5NUMzOC4zNzY2IDM1LjU1NzggMzguMzI0OCAzNS44MTgxIDM4LjIyNDEgMzYuMDYwOUMzOC4xMjM1IDM2LjMwMzcgMzcuOTc2IDM2LjUyNDMgMzcuNzkgMzYuNzFDMzcuNjA0MyAzNi44OTYgMzcuMzgzNyAzNy4wNDM1IDM3LjE0MDkgMzcuMTQ0MUMzNi44OTgxIDM3LjI0NDggMzYuNjM3OCAzNy4yOTY2IDM2LjM3NSAzNy4yOTY2QzM2LjExMjIgMzcuMjk2NiAzNS44NTE5IDM3LjI0NDggMzUuNjA5MSAzNy4xNDQxQzM1LjM2NjMgMzcuMDQzNSAzNS4xNDU3IDM2Ljg5NiAzNC45NiAzNi43MUwzNC45IDM2LjY1QzM0LjY2NDMgMzYuNDE5NSAzNC4zNjUgMzYuMjY0OCAzNC4wNDA2IDM2LjIwNkMzMy43MTYyIDM2LjE0NzIgMzMuMzgxNiAzNi4xODY5IDMzLjA4IDM2LjMyQzMyLjc4NDIgMzYuNDQ2OCAzMi41MzIgMzYuNjU3MiAzMi4zNTQzIDM2LjkyNTVDMzIuMTc2NiAzNy4xOTM4IDMyLjA4MTMgMzcuNTA4MiAzMi4wOCAzNy44M1YzOEMzMi4wOCAzOC41MzA0IDMxLjg2OTMgMzkuMDM5MSAzMS40OTQyIDM5LjQxNDJDMzEuMTE5MSAzOS43ODkzIDMwLjYxMDQgNDAgMzAuMDggNDBDMjkuNTQ5NiA0MCAyOS4wNDA5IDM5Ljc4OTMgMjguNjY1OCAzOS40MTQyQzI4LjI5MDcgMzkuMDM5MSAyOC4wOCAzOC41MzA0IDI4LjA4IDM4VjM3LjkxQzI4LjA3MjMgMzcuNTc5IDI3Ljk2NTEgMzcuMjU4IDI3Ljc3MjUgMzYuOTg4N0MyNy41Nzk5IDM2LjcxOTQgMjcuMzEwNyAzNi41MTQzIDI3IDM2LjRDMjYuNjk4NCAzNi4yNjY5IDI2LjM2MzggMzYuMjI3MiAyNi4wMzk0IDM2LjI4NkMyNS43MTUgMzYuMzQ0OCAyNS40MTU3IDM2LjQ5OTUgMjUuMTggMzYuNzNMMjUuMTIgMzYuNzlDMjQuOTM0MyAzNi45NzYgMjQuNzEzNyAzNy4xMjM1IDI0LjQ3MDkgMzcuMjI0MUMyNC4yMjgxIDM3LjMyNDggMjMuOTY3OCAzNy4zNzY2IDIzLjcwNSAzNy4zNzY2QzIzLjQ0MjIgMzcuMzc2NiAyMy4xODE5IDM3LjMyNDggMjIuOTM5MSAzNy4yMjQxQzIyLjY5NjMgMzcuMTIzNSAyMi40NzU3IDM2Ljk3NiAyMi4yOSAzNi43OUMyMi4xMDQgMzYuNjA0MyAyMS45NTY1IDM2LjM4MzcgMjEuODU1OSAzNi4xNDA5QzIxLjc1NTIgMzUuODk4MSAyMS43MDM0IDM1LjYzNzggMjEuNzAzNCAzNS4zNzVDMjEuNzAzNCAzNS4xMTIyIDIxLjc1NTIgMzQuODUxOSAyMS44NTU5IDM0LjYwOTFDMjEuOTU2NSAzNC4zNjYzIDIyLjEwNCAzNC4xNDU3IDIyLjI5IDMzLjk2TDIyLjM1IDMzLjlDMjIuNTgwNSAzMy42NjQzIDIyLjczNTIgMzMuMzY1IDIyLjc5NCAzMy4wNDA2QzIyLjg1MjggMzIuNzE2MiAyMi44MTMxIDMyLjM4MTYgMjIuNjggMzIuMDhDMjIuNTUzMiAzMS43ODQyIDIyLjM0MjggMzEuNTMyIDIyLjA3NDUgMzEuMzU0M0MyMS44MDYyIDMxLjE3NjYgMjEuNDkxOCAzMS4wODEzIDIxLjE3IDMxLjA4SDIxQzIwLjQ2OTYgMzEuMDggMTkuOTYwOSAzMC44NjkzIDE5LjU4NTggMzAuNDk0MkMxOS4yMTA3IDMwLjExOTEgMTkgMjkuNjEwNCAxOSAyOS4wOEMxOSAyOC41NDk2IDE5LjIxMDcgMjguMDQwOSAxOS41ODU4IDI3LjY2NThDMTkuOTYwOSAyNy4yOTA3IDIwLjQ2OTYgMjcuMDggMjEgMjcuMDhIMjEuMDlDMjEuNDIxIDI3LjA3MjMgMjEuNzQyIDI2Ljk2NTEgMjIuMDExMyAyNi43NzI1QzIyLjI4MDYgMjYuNTc5OSAyMi40ODU3IDI2LjMxMDcgMjIuNiAyNkMyMi43MzMxIDI1LjY5ODQgMjIuNzcyOCAyNS4zNjM4IDIyLjcxNCAyNS4wMzk0QzIyLjY1NTIgMjQuNzE1IDIyLjUwMDUgMjQuNDE1NyAyMi4yNyAyNC4xOEwyMi4yMSAyNC4xMkMyMi4wMjQgMjMuOTM0MyAyMS44NzY1IDIzLjcxMzcgMjEuNzc1OSAyMy40NzA5QzIxLjY3NTIgMjMuMjI4MSAyMS42MjM0IDIyLjk2NzggMjEuNjIzNCAyMi43MDVDMjEuNjIzNCAyMi40NDIyIDIxLjY3NTIgMjIuMTgxOSAyMS43NzU5IDIxLjkzOTFDMjEuODc2NSAyMS42OTYzIDIyLjAyNCAyMS40NzU3IDIyLjIxIDIxLjI5QzIyLjM5NTcgMjEuMTA0IDIyLjYxNjMgMjAuOTU2NSAyMi44NTkxIDIwLjg1NTlDMjMuMTAxOSAyMC43NTUyIDIzLjM2MjIgMjAuNzAzNCAyMy42MjUgMjAuNzAzNEMyMy44ODc4IDIwLjcwMzQgMjQuMTQ4MSAyMC43NTUyIDI0LjM5MDkgMjAuODU1OUMyNC42MzM3IDIwLjk1NjUgMjQuODU0MyAyMS4xMDQgMjUuMDQgMjEuMjlMMjUuMSAyMS4zNUMyNS4zMzU3IDIxLjU4MDUgMjUuNjM1IDIxLjczNTIgMjUuOTU5NCAyMS43OTRDMjYuMjgzOCAyMS44NTI4IDI2LjYxODQgMjEuODEzMSAyNi45MiAyMS42OEgyN0MyNy4yOTU4IDIxLjU1MzIgMjcuNTQ4IDIxLjM0MjggMjcuNzI1NyAyMS4wNzQ1QzI3LjkwMzQgMjAuODA2MiAyNy45OTg3IDIwLjQ5MTggMjggMjAuMTdWMjBDMjggMTkuNDY5NiAyOC4yMTA3IDE4Ljk2MDkgMjguNTg1OCAxOC41ODU4QzI4Ljk2MDkgMTguMjEwNyAyOS40Njk2IDE4IDMwIDE4QzMwLjUzMDQgMTggMzEuMDM5MSAxOC4yMTA3IDMxLjQxNDIgMTguNTg1OEMzMS43ODkzIDE4Ljk2MDkgMzIgMTkuNDY5NiAzMiAyMFYyMC4wOUMzMi4wMDEzIDIwLjQxMTggMzIuMDk2NiAyMC43MjYyIDMyLjI3NDMgMjAuOTk0NUMzMi40NTIgMjEuMjYyOCAzMi43MDQyIDIxLjQ3MzIgMzMgMjEuNkMzMy4zMDE2IDIxLjczMzEgMzMuNjM2MiAyMS43NzI4IDMzLjk2MDYgMjEuNzE0QzM0LjI4NSAyMS42NTUyIDM0LjU4NDMgMjEuNTAwNSAzNC44MiAyMS4yN0wzNC44OCAyMS4yMUMzNS4wNjU3IDIxLjAyNCAzNS4yODYzIDIwLjg3NjUgMzUuNTI5MSAyMC43NzU5QzM1Ljc3MTkgMjAuNjc1MiAzNi4wMzIyIDIwLjYyMzQgMzYuMjk1IDIwLjYyMzRDMzYuNTU3OCAyMC42MjM0IDM2LjgxODEgMjAuNjc1MiAzNy4wNjA5IDIwLjc3NTlDMzcuMzAzNyAyMC44NzY1IDM3LjUyNDMgMjEuMDI0IDM3LjcxIDIxLjIxQzM3Ljg5NiAyMS4zOTU3IDM4LjA0MzUgMjEuNjE2MyAzOC4xNDQxIDIxLjg1OTFDMzguMjQ0OCAyMi4xMDE5IDM4LjI5NjYgMjIuMzYyMiAzOC4yOTY2IDIyLjYyNUMzOC4yOTY2IDIyLjg4NzggMzguMjQ0OCAyMy4xNDgxIDM4LjE0NDEgMjMuMzkwOUMzOC4wNDM1IDIzLjYzMzcgMzcuODk2IDIzLjg1NDMgMzcuNzEgMjQuMDRMMzcuNjUgMjQuMUMzNy40MTk1IDI0LjMzNTcgMzcuMjY0OCAyNC42MzUgMzcuMjA2IDI0Ljk1OTRDMzcuMTQ3MiAyNS4yODM4IDM3LjE4NjkgMjUuNjE4NCAzNy4zMiAyNS45MlYyNkMzNy40NDY4IDI2LjI5NTggMzcuNjU3MiAyNi41NDggMzcuOTI1NSAyNi43MjU3QzM4LjE5MzggMjYuOTAzNCAzOC41MDgyIDI2Ljk5ODcgMzguODMgMjdIMzlDMzkuNTMwNCAyNyA0MC4wMzkxIDI3LjIxMDcgNDAuNDE0MiAyNy41ODU4QzQwLjc4OTMgMjcuOTYwOSA0MSAyOC40Njk2IDQxIDI5QzQxIDI5LjUzMDQgNDAuNzg5MyAzMC4wMzkxIDQwLjQxNDIgMzAuNDE0MkM0MC4wMzkxIDMwLjc4OTMgMzkuNTMwNCAzMSAzOSAzMUgzOC45MUMzOC41ODgyIDMxLjAwMTMgMzguMjczOCAzMS4wOTY2IDM4LjAwNTUgMzEuMjc0M0MzNy43MzcyIDMxLjQ1MiAzNy41MjY4IDMxLjcwNDIgMzcuNCAzMlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsdGVyIGlkPVwiZmlsdGVyMF9kXzUyMjFfNjAxNDNcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCI2MFwiIGhlaWdodD1cIjYwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPVwic1JHQlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9XCIwXCIgcmVzdWx0PVwiQmFja2dyb3VuZEltYWdlRml4XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVPZmZzZXQgZHk9XCIxXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjAgMCAwIDAgMC4wNjI3NDUxIDAgMCAwIDAgMC4wOTQxMTc2IDAgMCAwIDAgMC4xNTY4NjMgMCAwIDAgMC4wNSAwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiQmFja2dyb3VuZEltYWdlRml4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PVwiZWZmZWN0MV9kcm9wU2hhZG93XzUyMjFfNjAxNDNcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbj1cIlNvdXJjZUdyYXBoaWNcIiBpbjI9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfNTIyMV82MDE0M1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdD1cInNoYXBlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmlsdGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfNTIyMV82MDE0M1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgxOCAxNylcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibm90aWZpY2F0aW9uLnByb2R1Y3R0cmFpbGRyb3BEb3duXCIgY2xhc3M9XCJjYXJkIHB5LTIgdy0yMDBweCBwb3NpdGlvbi1hYnNvbHV0ZSBlbmQtMCB6LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCAqbmdGb3I9XCJsZXQgcHJvZHVjdHRyYWlsaXRlbSBvZiBwcm9kdWN0dHJhaWx0eXBlXCIgY2xhc3M9XCJsaXN0LXVuc3R5bGVkIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHJvZHVjdHRleHQgcHgtNSBpdGVtcyBjdXJzb3ItcG9pbnRlciBweS00XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInByb2R1Y3R0cmFpbEl0ZW0ocHJvZHVjdHRyYWlsaXRlbSxub3RpZmljYXRpb24pXCI+e3twcm9kdWN0dHJhaWxpdGVtfX08L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWVuZDo6QmFuayBkZXRhaWxzIENhcmQtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGNsaWVudCByZXF1ZXN0IGNhcmQgZW5kIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGxldmVsIHZpZXcgZHJvcGRvd24gc3RhcnQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN1YmxldmVsdmlld1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGhlYWRpbmcgbXQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1zZWxlY3QgZHJvcHNlbGVjdCBsZXZlbHZpZXd0ZXh0XCIgaWQ9XCJjdXJyZW5jeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInZpZXdwbGFuRHJvcGRvd24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkRlZmF1bHQgc2VsZWN0IGV4YW1wbGVcIj57e3ZpZXdwbGFuSXNzdWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInZpZXdwbGFuZHJvcERvd25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FyZCBweS0yIHctMTAwIHBvc2l0aW9uLWFic29sdXRlIGVuZC0wIHotMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCAqbmdGb3I9XCJsZXQgdmlld3BsYW5pdGVtIG9mIHZpZXdwbGFudHlwZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibGlzdC11bnN0eWxlZCBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBbbmdDbGFzc109XCJ0aGlzLnZpZXdwbGFuSXNzdWUgPT09IHZpZXdwbGFuaXRlbSA/ICdhY3RpdmUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9kdWN0dGV4dCBweC01IGl0ZW1zIGN1cnNvci1wb2ludGVyIHB5LTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInZpZXdwbGFuSXRlbSh2aWV3cGxhbml0ZW0pXCI+e3t2aWV3cGxhbml0ZW19fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXN1YlwiPkJhc2VkIG9uIEN1cnJlbnQgU3Vic2NyaWJlZCBQcm9kdWN0PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicGxhbiA9PT0gJ3N1YnNjcmlwdGlvbicgJiYgdmlld3BsYW5Jc3N1ZSA9PT0gJ1Byb2R1Y3QgTGV2ZWwgVmlldydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIG10LTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLW11bHRpZHJvcGRvd24gdGV4dD1cIkFkZCBQcm9kdWN0c1wiIFtwcm9kdWN0XT1cInByb2R1Y3RMaXN0XCIgW3Byb2R1Y3RMaXN0XT1cImRhdGFPYmplY3RbMF0uSXNzdWVzXCIgdHlwZT1cInByb2R1Y3RzXCIgW2NsaWVudElkXT1cImNsaWVudElkXCIgKGRhdGEpPVwicmVsb2FkKCRldmVudClcIj48L2xpYi1tdWx0aWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyIG10LTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ2aWV3cGxhbklzc3VlID09PSAnU3RvcmUgTGV2ZWwgVmlldycgJiYgcGxhbiA9PT0gJ3N1YnNjcmlwdGlvbidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtZW5kIHBvc2l0aW9uLXJlbGF0aXZlIG15LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMSBwb3NpdGlvbi1hYnNvbHV0ZSBtYi0zIG1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgb3BhY2l0eT1cIjAuNVwiIHg9XCIxNy4wMzY1XCIgeT1cIjE1LjEyMjNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjguMTU1NDZcIiBoZWlnaHQ9XCIyXCIgcng9XCIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwicm90YXRlKDQ1IDE3LjAzNjUgMTUuMTIyMylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEgMTlDNi41NTU1NiAxOSAzIDE1LjQ0NDQgMyAxMUMzIDYuNTU1NTYgNi41NTU1NiAzIDExIDNDMTUuNDQ0NCAzIDE5IDYuNTU1NTYgMTkgMTFDMTkgMTUuNDQ0NCAxNS40NDQ0IDE5IDExIDE5Wk0xMSA1QzcuNTMzMzMgNSA1IDcuNTMzMzMgNSAxMUM1IDE0LjQ2NjcgNy41MzMzMyAxNyAxMSAxN0MxNC40NjY3IDE3IDE3IDE0LjQ2NjcgMTcgMTFDMTcgNy41MzMzMyAxNC40NjY3IDUgMTEgNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcHMtMTQgbWUtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChjaGFuZ2UpPVwic2VhcmNoUmVjb3JkcygkZXZlbnQpXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLWZpbHRlcnMgY2xhc3M9XCJtZS0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhT2JqZWN0XT1cImRhdGFPYmplY3RcIiAoYXBwbGllZEZpbHRlcnMpPXJlY2VpdmVEYXRhKCRldmVudCkgPjwvbGliLWZpbHRlcnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItbXVsdGlkcm9wZG93biB0ZXh0PVwiQWRkIFByb2R1Y3RzXCIgW3Byb2R1Y3RMaXN0XT1cImRhdGFPYmplY3RbMF0uSXNzdWVzXCIgdHlwZT1cInN0b3Jlc1wiIFtzdG9yZXNdPVwiZ2V0U3RvcmVzKClcIiBbcHJvZHVjdF09XCJnZXRQcm9kdWN0KClcIiBbY2xpZW50SWRdPVwiY2xpZW50SWRcIiBbY2xpZW50UHJvZHVjdF09XCJwcm9kdWN0TGlzdFwiIChkYXRhKT1cInJlbG9hZCgkZXZlbnQpXCIgW3NlbGVjdEFsbF09XCJzZWxlY3RBbGxcIj48L2xpYi1tdWx0aWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHN1YnNjcmlwdGlvbiBjb25maWcgdG9vbGJhciBlbmQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbG9hZGVyICBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibm9EYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjIHctMjVcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gcHJvZHVjdCBzdWJzY3JpcHRpb24gcGxhbiBzdGFydCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidmlld3BsYW5Jc3N1ZSA9PT0gJ1Byb2R1Y3QgTGV2ZWwgVmlldycgJiYgIWxvYWRpbmcgJiYgIW5vRGF0YVwiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTAgbXQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBib3R0b20tYm9yZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+UHJvZHVjdDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPk5vIG9mIFN0b3JlczwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkNvc3QgUGVyIFN0b3JlPC90aD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHByb2R1Y3Qgb2YgcHJvZHVjdExpc3Q7bGV0IGk9aW5kZXg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGUgc3Vic2NyaWJlZHRleHRcIj57e2NvbnZlcnRVcHBlcihwcm9kdWN0Py5wcm9kdWN0KSB8fCAnLS0nfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPnt7cHJvZHVjdD8uc3RvcmVDb3VudCB8fCAwfX08L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj4ke3twcm9kdWN0Py5iYXNlUHJpY2UgfHwgMH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHByb2R1Y3Qgc3Vic2NyaXB0aW9uIHBsYW4gZW5kIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHN0b3JlIHN1YnNjcmlwdGlvbiBwbGFuIHN0YXJ0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ2aWV3cGxhbklzc3VlID09PSAnU3RvcmUgTGV2ZWwgVmlldycgJiYgIWxvYWRpbmcgJiYgIW5vRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMCBtdC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGJvdHRvbS1ib3JkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwic3RvcmVpbnB1dCBtZS00XCIgWyhuZ01vZGVsKV09XCJzZWxlY3RBbGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiIChjbGljayk9XCJzZWxlY3RBbGxTdG9yZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJmbGV4Q2hlY2tEZWZhdWx0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+U3RvcmUgSW5mbzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkxvY2F0aW9uPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+UHJvZHVjdHM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5BY3Rpb25zPC90aD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHN0b3JlIG9mIHN0b3JlTGlzdDtsZXQgaT1pbmRleDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJzdG9yZWlucHV0IG1lLTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiIFsobmdNb2RlbCldPVwic3RvcmUuY2hlY2tlZFwiIChjaGFuZ2UpPVwidXBkYXRlQ2hlY2soJGV2ZW50LHN0b3JlPy5zdG9yZUlkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgdGFibGUtdGl0bGUtcHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cImZsZXhDaGVja0RlZmF1bHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tzdG9yZT8uc3RvcmVOYW1lIHx8ICctLSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFibGUtc3ViIGQtYmxvY2s3XCI+SUQgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3N0b3JlPy5zdG9yZUlkIHx8ICctLSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPnt7c3RvcmU/LnN0b3JlUHJvZmlsZT8uY2l0eSB8fCAnLS0nfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBwcm9kdWN0IG9mIHN0b3JlLnByb2R1Y3Q7bGV0IGk9aW5kZXg7XCI+PHNwYW4gKm5nSWY9XCJpPDJcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXByaW1hcnkgbWUtMVwiPnt7cHJvZHVjdH19PC9zcGFuPjwvc3Bhbj48c3BhbiAqbmdJZj1cInN0b3JlLnByb2R1Y3QubGVuZ3RoID4gMlwiPit7e3N0b3JlLnByb2R1Y3QubGVuZ3RoLTJ9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1tdWx0aWRyb3Bkb3duIFtwcm9kdWN0XT1cInN0b3JlLnByb2R1Y3RcIiBbcHJvZHVjdExpc3RdPVwiZGF0YU9iamVjdFswXS5Jc3N1ZXNcIiB0eXBlPVwic3RvcmVzXCIgW3N0b3Jlc109XCJbc3RvcmU/LnN0b3JlSWRdXCIgW2NsaWVudElkXT1cImNsaWVudElkXCIgW2NsaWVudFByb2R1Y3RdPVwicHJvZHVjdExpc3RcIiAoZGF0YSk9XCJyZWxvYWQoJGV2ZW50KVwiPjwvbGliLW11bHRpZHJvcGRvd24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1wYWdpbmF0aW9uIFtpdGVtc1BlclBhZ2VdPVwiZHluYW1pY0RhdGEubGltaXRcIiBbY3VycmVudFBhZ2VdPVwiZHluYW1pY0RhdGEub2Zmc2V0XCIgW3RvdGFsSXRlbXNdPVwidG90YWxDb3VudFwiIFtwYWdpbmF0aW9uU2l6ZXNdPVwiWzEwLDIwLDMwXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGFnZVNpemVdPVwiZHluYW1pY0RhdGEubGltaXRcIiAocGFnZUNoYW5nZSk9XCJvblN0b3JlUGFnZUNoYW5nZSgkZXZlbnQpXCIgKHBhZ2VTaXplQ2hhbmdlKT1cIm9uU3RvcmVQYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCI+PC9saWItcGFnaW5hdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHN0b3JlIHN1YnNjcmlwdGlvbiBwbGFuIGVuZCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBzdWJzY3JpcHRpb24gdGFiIHN0YXJ0cyAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tcHJpY2luZyB0YWIgc3RhcnQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicGxhbiA9PT0gJ3ByaWNpbmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBweS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgbGV2ZWx2aWV3dGV4dCBtdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmljaW5nIFRhYmxlPGJyPjxzcGFuIGNsYXNzPVwidGV4dC1zdWJcIj5CYXNlZCBvbiBQcm9kdWN0ICZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZXM8L3NwYW4+IDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwianVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0dGV4dFwiPlN3aXRjaCB0bzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJQcmljaW5nc2hvd05hdlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmF2LWdyb3VwIG5hdi1ncm91cC1vdXRsaW5lIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWNvbG9yLWdyYXktNjAwIGJ0bi1hY3RpdmUgYnRuLWFjdGl2ZS1zZWNvbmRhcnkgcHgtNiBweS0zIG1lLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicHJpY2luZ3BsYW4gPT09ICdzdGFuZGFyZCc/ICdhY3RpdmVQbGFuQnRucHJpbWFyeSc6J2luYWN0aXZlUGxhbkJ0bidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1rdC1wbGFuPVwic3RhbmRhcmRwcmljZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UHJpY2VQbGFuKCdzdGFuZGFyZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFuZGFyZCBQcmljZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1jb2xvci1ncmF5LTYwMCBidG4tYWN0aXZlIGJ0bi1hY3RpdmUtc2Vjb25kYXJ5IHB4LTYgcHktM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJwcmljaW5ncGxhbiA9PT0gJ3N0ZXAnPyAnYWN0aXZlUGxhbkJ0bnByaW1hcnknOidpbmFjdGl2ZVBsYW5CdG4nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEta3QtcGxhbj1cInN0ZXBwcmljZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UHJpY2VQbGFuKCdzdGVwJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0ZXAgUHJpY2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInByaWNpbmdwbGFuID09PSAnc3RlcCdcIiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIG1iLThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiYWRkc3RlcHByaWNlKCdhZGQnKVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1vdXRsaW5lIGJ0biBuZWVkaGVscCB0ZXh0LW5vd3JhcFwiPjxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIxIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwLjQ5OTMgNC4xNjY3NVYxNS44MzM0TTQuNjY2MDIgMTAuMDAwMUgxNi4zMzI3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJtcy0yXCI+QWRkIFN0ZXA8L3NwYW4+IDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicHJpY2VMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbG9hZGVyICBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicHJpY2VOb0RhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmMgdy0yNVwiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMCBtdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcmljaW5ncGxhbiA9PT0gJ3N0YW5kYXJkJyAmJiAhcHJpY2VMb2FkaW5nICYmICFwcmljZU5vRGF0YVwiIGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYm90dG9tLWJvcmRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlByb2R1Y3Q8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkFjdHVhbCBQcmljZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJkaXNjb3VudGhlYWRlclwiPkRpc2NvdW50ICU8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibmVnaGVhZGVyXCI+TmVnb3RpYXRlZCBQcmljZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+SW5zdGFsbGVkIFN0b3JlczwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+VG90YWwgUHJpY2U8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yID1cImxldCBwcm9kdWN0IG9mIHByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3Q7bGV0IGk9aW5kZXg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2R1Y3R0ZXh0XCI+e3tjb252ZXJ0VXBwZXIocHJvZHVjdC5wcm9kdWN0TmFtZSl9fTwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3twcm9kdWN0LmJhc2VQcmljZX19PC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImRpc2NvdW50cHJpY2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiIGZvcm0tY29udHJvbCBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJkaXNjb3VudHByaWNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwidGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XCIgWyhuZ01vZGVsKV09XCJwcm9kdWN0LmRpc2NvdW50UGVyY2VudGFnZVwiIChjaGFuZ2UpPVwiY2FsY3VsYXRlKGksJ2Rpc2NvdW50JylcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJuZWdwcmljZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCIgZm9ybS1jb250cm9sIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cIm5lZ3ByaWNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwidGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XCIgIFsobmdNb2RlbCldPVwicHJvZHVjdC5uZWdvdGlhdGVQcmljZVwiIChjaGFuZ2UpPVwiY2FsY3VsYXRlKGksJ3ByaWNlJylcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPnt7cHJvZHVjdC5zdG9yZUNvdW50fX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPiQge3twcm9kdWN0LnByaWNlfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj5Ub3RhbCBWYWx1ZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlIGJvbGRkYXRhXCI+JHt7cHJpY2VWYWx1ZURldGFpbHMuYWN0dWFsUHJpY2V9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlIGJvbGRkYXRhXCI+JHt7cHJpY2VWYWx1ZURldGFpbHMubmVnb3RpYXRlUHJpY2V9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48ZGl2IGNsYXNzPVwidGFibGUtdGl0bGUgYm9sZGRhdGFcIj4ke3twcmljZVZhbHVlRGV0YWlscy5uZWdvdGlhdGVQcmljZX19PC9kaXY+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGUgYm9sZGRhdGFcIj4kIHt7cHJpY2VWYWx1ZURldGFpbHMudG90YWxOZWdvdGlhdGVQcmljZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInByaWNpbmdwbGFuID09PSAnc3RlcCcgJiYgIXByaWNlTG9hZGluZyAmJiAhcHJpY2VOb0RhdGFcIiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGJvdHRvbS1ib3JkZXIgcHJpY2luZ3RhYlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlByb2R1Y3Q8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkFjdHVhbCBQcmljZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+RGlzY291bnQgJTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+TmVnb3RpYXRlZCBQcmljZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+U3RvcmUgUmFuZ2U8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkluc3RhbGxlZCBTdG9yZXM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlRvdGFsIFByaWNlPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5BY3Rpb25zPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBwcm9kdWN0IG9mIHByaWNlVmFsdWVEZXRhaWxzPy5wcm9kdWN0O2xldCBpPWluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2R1Y3R0ZXh0XCI+e3tjb252ZXJ0VXBwZXIocHJvZHVjdC5wcm9kdWN0TmFtZSl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTRcIiAqbmdJZj1cInByb2R1Y3Quc2hvd0ltZ1wiPjxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vY3VzdG9tcG9wdXAtSWNvbnMvZXhwaXJ5LWljb24uc3ZnXCIgYWx0PVwiXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+JHt7cHJvZHVjdC5iYXNlUHJpY2V9fTwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJkaXNjb3VudHByaWNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj48aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cIiBmb3JtLWNvbnRyb2wgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZGlzY291bnRwcmljZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1wiIFsobmdNb2RlbCldPVwicHJvZHVjdC5kaXNjb3VudFBlcmNlbnRhZ2VcIiAoY2hhbmdlKT1cImNhbGN1bGF0ZShpLCdkaXNjb3VudCcpXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibmVncHJpY2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiIGZvcm0tY29udHJvbCBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJuZWdwcmljZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1wiIFsobmdNb2RlbCldPVwicHJvZHVjdC5uZWdvdGlhdGVQcmljZVwiIChjaGFuZ2UpPVwiY2FsY3VsYXRlKGksJ3ByaWNlJylcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJzdG9yZXJhbmdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj48aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cIiBmb3JtLWNvbnRyb2wgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwic3RvcmVyYW5nZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1wiIFsobmdNb2RlbCldPVwicHJvZHVjdC5zdG9yZVJhbmdlXCIgcmVhZG9ubHk+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPnt7cHJvZHVjdC5zdG9yZUNvdW50fX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPiR7e3Byb2R1Y3QucHJpY2V9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGUgZC1mbGV4XCIgKm5nSWY9XCIhcHJvZHVjdC5zaG93RWRpdERlbGV0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjEgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMy4xNjYwMiA0Ljk5OTM1SDQuODMyNjhNNC44MzI2OCA0Ljk5OTM1SDE4LjE2Nk00LjgzMjY4IDQuOTk5MzVWMTYuNjY2QzQuODMyNjggMTcuMTA4IDUuMDA4MjggMTcuNTMyIDUuMzIwODQgMTcuODQ0NUM1LjYzMzQgMTguMTU3MSA2LjA1NzMyIDE4LjMzMjcgNi40OTkzNSAxOC4zMzI3SDE0LjgzMjdDMTUuMjc0NyAxOC4zMzI3IDE1LjY5ODYgMTguMTU3MSAxNi4wMTEyIDE3Ljg0NDVDMTYuMzIzOCAxNy41MzIgMTYuNDk5MyAxNy4xMDggMTYuNDk5MyAxNi42NjZWNC45OTkzNUg0LjgzMjY4Wk03LjMzMjY4IDQuOTk5MzVWMy4zMzI2OEM3LjMzMjY4IDIuODkwNjUgNy41MDgyOCAyLjQ2NjczIDcuODIwODQgMi4xNTQxN0M4LjEzMzQgMS44NDE2MSA4LjU1NzMyIDEuNjY2MDIgOC45OTkzNSAxLjY2NjAySDEyLjMzMjdDMTIuNzc0NyAxLjY2NjAyIDEzLjE5ODYgMS44NDE2MSAxMy41MTEyIDIuMTU0MTdDMTMuODIzOCAyLjQ2NjczIDEzLjk5OTMgMi44OTA2NSAxMy45OTkzIDMuMzMyNjhWNC45OTkzNU04Ljk5OTM1IDkuMTY2MDJWMTQuMTY2TTEyLjMzMjcgOS4xNjYwMlYxNC4xNjZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDBENUREXCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjEgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuODMyIDIuNTAwOUMxNS4wNTA5IDIuMjgyMDMgMTUuMzEwNyAyLjEwODQyIDE1LjU5NjcgMS45ODk5NkMxNS44ODI3IDEuODcxNTEgMTYuMTg5MiAxLjgxMDU1IDE2LjQ5ODcgMS44MTA1NUMxNi44MDgyIDEuODEwNTUgMTcuMTE0NyAxLjg3MTUxIDE3LjQwMDcgMS45ODk5NkMxNy42ODY3IDIuMTA4NDIgMTcuOTQ2NSAyLjI4MjAzIDE4LjE2NTQgMi41MDA5QzE4LjM4NDIgMi43MTk3NyAxOC41NTc5IDIuOTc5NjEgMTguNjc2MyAzLjI2NTU4QzE4Ljc5NDggMy41NTE1NCAxOC44NTU3IDMuODU4MDQgMTguODU1NyA0LjE2NzU3QzE4Ljg1NTcgNC40NzcxIDE4Ljc5NDggNC43ODM2IDE4LjY3NjMgNS4wNjk1NkMxOC41NTc5IDUuMzU1NTMgMTguMzg0MiA1LjYxNTM3IDE4LjE2NTQgNS44MzQyNEw2LjkxNTM2IDE3LjA4NDJMMi4zMzIwMyAxOC4zMzQyTDMuNTgyMDMgMTMuNzUwOUwxNC44MzIgMi41MDA5WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNEMEQ1RERcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgdGFibGUtdGl0bGUgZC1mbGV4XCIgKm5nSWY9XCJwcm9kdWN0LnNob3dFZGl0RGVsZXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJhZGRzdGVwcHJpY2UoJ2RlbGV0ZScscHJvZHVjdCxpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjEgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMy4xNjYwMiA0Ljk5OTM1SDQuODMyNjhNNC44MzI2OCA0Ljk5OTM1SDE4LjE2Nk00LjgzMjY4IDQuOTk5MzVWMTYuNjY2QzQuODMyNjggMTcuMTA4IDUuMDA4MjggMTcuNTMyIDUuMzIwODQgMTcuODQ0NUM1LjYzMzQgMTguMTU3MSA2LjA1NzMyIDE4LjMzMjcgNi40OTkzNSAxOC4zMzI3SDE0LjgzMjdDMTUuMjc0NyAxOC4zMzI3IDE1LjY5ODYgMTguMTU3MSAxNi4wMTEyIDE3Ljg0NDVDMTYuMzIzOCAxNy41MzIgMTYuNDk5MyAxNy4xMDggMTYuNDk5MyAxNi42NjZWNC45OTkzNUg0LjgzMjY4Wk03LjMzMjY4IDQuOTk5MzVWMy4zMzI2OEM3LjMzMjY4IDIuODkwNjUgNy41MDgyOCAyLjQ2NjczIDcuODIwODQgMi4xNTQxN0M4LjEzMzQgMS44NDE2MSA4LjU1NzMyIDEuNjY2MDIgOC45OTkzNSAxLjY2NjAySDEyLjMzMjdDMTIuNzc0NyAxLjY2NjAyIDEzLjE5ODYgMS44NDE2MSAxMy41MTEyIDIuMTU0MTdDMTMuODIzOCAyLjQ2NjczIDEzLjk5OTMgMi44OTA2NSAxMy45OTkzIDMuMzMyNjhWNC45OTkzNU04Ljk5OTM1IDkuMTY2MDJWMTQuMTY2TTEyLjMzMjcgOS4xNjYwMlYxNC4xNjZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwiYWRkc3RlcHByaWNlKCdlZGl0Jyxwcm9kdWN0LGkpXCIgY2xhc3M9XCJtcy02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMSAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC44MzIgMi41MDA5QzE1LjA1MDkgMi4yODIwMyAxNS4zMTA3IDIuMTA4NDIgMTUuNTk2NyAxLjk4OTk2QzE1Ljg4MjcgMS44NzE1MSAxNi4xODkyIDEuODEwNTUgMTYuNDk4NyAxLjgxMDU1QzE2LjgwODIgMS44MTA1NSAxNy4xMTQ3IDEuODcxNTEgMTcuNDAwNyAxLjk4OTk2QzE3LjY4NjcgMi4xMDg0MiAxNy45NDY1IDIuMjgyMDMgMTguMTY1NCAyLjUwMDlDMTguMzg0MiAyLjcxOTc3IDE4LjU1NzkgMi45Nzk2MSAxOC42NzYzIDMuMjY1NThDMTguNzk0OCAzLjU1MTU0IDE4Ljg1NTcgMy44NTgwNCAxOC44NTU3IDQuMTY3NTdDMTguODU1NyA0LjQ3NzEgMTguNzk0OCA0Ljc4MzYgMTguNjc2MyA1LjA2OTU2QzE4LjU1NzkgNS4zNTU1MyAxOC4zODQyIDUuNjE1MzcgMTguMTY1NCA1LjgzNDI0TDYuOTE1MzYgMTcuMDg0MkwyLjMzMjAzIDE4LjMzNDJMMy41ODIwMyAxMy43NTA5TDE0LjgzMiAyLjUwMDlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+VG90YWwgVmFsdWU8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZSBib2xkZGF0YVwiPiR7e3ByaWNlVmFsdWVEZXRhaWxzLmFjdHVhbFByaWNlfX08L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZSBib2xkZGF0YVwiPiR7e3ByaWNlVmFsdWVEZXRhaWxzLm5lZ290aWF0ZVByaWNlfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlIGJvbGRkYXRhXCI+JHt7cHJpY2VWYWx1ZURldGFpbHMubmVnb3RpYXRlUHJpY2V9fTwvZGl2PjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZSBib2xkZGF0YVwiPiQge3twcmljZVZhbHVlRGV0YWlscy50b3RhbE5lZ290aWF0ZVByaWNlfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PC90aD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHQtMTRcIiAqbmdJZj1cIiFwcmljZUxvYWRpbmcgJiYgIXByaWNlTm9EYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc3RhY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlhbmx2YWx0ZXh0IG1lLTJcIj5BY3R1YWwgVmFsdWU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLXNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpYW5sdmFsdGV4dFwiPiQge3twcmljZVZhbHVlRGV0YWlscy50b3RhbEFjdHVhbFByaWNlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1zdGFjayBwdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpYW5sdmFsdGV4dCBtZS0yXCI+RGlzY291bnQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLXNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpYW5sdmFsdGV4dFwiPnt7cHJpY2VWYWx1ZURldGFpbHMuZGlzY291bnRQZXJjZW50YWdlfX0lICgtICQge3twcmljZVZhbHVlRGV0YWlscy5kaXNjb3VudFByaWNlfX0pPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc3RhY2sgcHQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWFubHZhbHRleHQgbWUtMlwiPk5lZ290aWF0ZWQgVmFsdWU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLXNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpYW5sdmFsdGV4dFwiPiR7e3ByaWNlVmFsdWVEZXRhaWxzLnRvdGFsTmVnb3RpYXRlUHJpY2V9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXN0YWNrIHB0LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlhbmx2YWx0ZXh0IG1lLTJcIj5UYXg8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLXNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpYW5sdmFsdGV4dFwiPjE4JSBHU1Q8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxocj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc3RhY2sgcHktMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWFubHZhbHRleHQgbWUtMlwiPkZpbmFsIFZhbHVlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1zZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWFubHZhbHRleHRcIj4kIHt7cHJpY2VWYWx1ZURldGFpbHMuZmluYWxWYWx1ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZGF0YS1rdC1zdWJzY3JpcHRpb24tdGFibGUtdG9vbGJhcj1cImJhc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgcHktM1wiPjxhIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1vdXRsaW5lIGJ0biBuZWVkaGVscCBtZS00IG10LTNcIiAoY2xpY2spPVwicmV2ZXJ0T3JpZ2luYWxQcmljZSgpXCI+Q2FuY2VsPC9hPjxhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwcmljaW5ncmV2aXNlZCgpXCIgdHlwZT1cImJ1dHRvblwiIHRhYmluZGV4PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHB4LTQgbXQtMyBuZy1zdGFyLWluc2VydGVkXCI+PHNwYW4+U2F2ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9hPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBwcmljaW5nIHRhYiBwbGFuIGVuZCAtLT5cclxuXHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gc3VibWl0IHBsYW4gc3RhcnQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicGxhbiA9PT0gJ3N0b3Jlc3Vic2NyaXB0aW9uJ1wiIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy04XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZGF0YS1rdC1zdWJzY3JpcHRpb24tdGFibGUtdG9vbGJhcj1cImJhc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBweS0zXCI+PGEgdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4tb3V0bGluZSBidG4gbmVlZGhlbHAgbWUtNCBtdC0zXCI+Q2FuY2VsPC9hPjxhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInByaWNpbmdyZXZpc2VkKClcIiB0eXBlPVwiYnV0dG9uXCIgdGFiaW5kZXg9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBweC00IG10LTMgbmctc3Rhci1pbnNlcnRlZFwiPjxzcGFuPkFwcGx5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYW5nZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9hPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBzdWJtaXQgcGxhbiBlbmQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHByb2R1Y3QgaW5mbyBlbmQgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBwYXltZW50IGludm9pY2Ugc3RhcnQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhsLTEyIG15LTQgYmlsbGluZ2NhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cInBheW1lbnRpbnZvaWNlZm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gcHMtNCBwdC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1iZWdpbjo6VGl0bGUtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGVhZGluZyBtYi0yXCI+UGF5bWVudCBhbmQgSW52b2ljZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWVuZDo6VGl0bGUtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1iZWdpbjo6VG9vbGJhci0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICBjbGFzcz1cImNhcmQtdG9vbGJhciBtYi0yXCIgKm5nSWY9XCJwYXltZW50aW52b2ljZXNob3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cIm9ucGF5bWVudGVkaXQoKVwiIHR5cGU9XCJzdWJtaXRcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1vdXRsaW5lIGJ0biBhbGlnbi1pdGVtcy1lbmQgbmVlZGhlbHAgIG1lLTRcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTJcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzI1NzlfMjUxMjUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC4xNjcgMi40OTk5M0MxNC4zODU5IDIuMjgxMDYgMTQuNjQ1NyAyLjEwNzQ0IDE0LjkzMTcgMS45ODg5OUMxNS4yMTc2IDEuODcwNTQgMTUuNTI0MSAxLjgwOTU3IDE1LjgzMzcgMS44MDk1N0MxNi4xNDMyIDEuODA5NTcgMTYuNDQ5NyAxLjg3MDU0IDE2LjczNTcgMS45ODg5OUMxNy4wMjE2IDIuMTA3NDQgMTcuMjgxNSAyLjI4MTA2IDE3LjUwMDMgMi40OTk5M0MxNy43MTkyIDIuNzE4OCAxNy44OTI4IDIuOTc4NjMgMTguMDExMyAzLjI2NDZDMTguMTI5NyAzLjU1MDU3IDE4LjE5MDcgMy44NTcwNiAxOC4xOTA3IDQuMTY2NTlDMTguMTkwNyA0LjQ3NjEyIDE4LjEyOTcgNC43ODI2MiAxOC4wMTEzIDUuMDY4NTlDMTcuODkyOCA1LjM1NDU1IDE3LjcxOTIgNS42MTQzOSAxNy41MDAzIDUuODMzMjZMNi4yNTAzMyAxNy4wODMzTDEuNjY2OTkgMTguMzMzM0wyLjkxNjk5IDEzLjc0OTlMMTQuMTY3IDIuNDk5OTNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjU3OV8yNTEyNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5FZGl0IERldGFpbHM8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1lbmQ6OlRvb2xiYXItLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHBheW1lbnQgaW52b2ljZSBmb3JtIHN0YXJ0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gcm93IGZ2LXJvdyBmdi1wbHVnaW5zLWljb24tY29udGFpbmVyIHB5LTQgcHgtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBwdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicGF5bWVudGN5Y2xlXCIgY2xhc3M9XCJoZWFkaW5ndGV4dCBtYi0yXCI+RW5hYmxlIFByby1SYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIENoYXJnZXM8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1pbmxpbmUgcHMtMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwcmljaW5nVHlwZSgkZXZlbnQsICdiZWZvcmUxNScpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJyYWRpb29wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyYWRpby1jdXN0b20gY3Vyc29yLXBvaW50ZXIgcmFkaW9CdXR0b25cIiB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJpbmxpbmVSYWRpbzFcIiB2YWx1ZT1cImJlZm9yZTE1XCIgbmFtZT1cInJhZGlvb3B0aW9uc1wiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgcmFkaW8tY3VzdG9tLWxhYmVsIG14LTMgaGVhZGluZ3RleHQgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwiaW5saW5lUmFkaW8xXCI+QmVmb3JlIDE1dGggb2YgTW9udGg8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIHBzLTBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicHJpY2luZ1R5cGUoJGV2ZW50LCAnYWZ0ZXIxNScpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInJhZGlvLWN1c3RvbSAgY3Vyc29yLXBvaW50ZXIgcmFkaW9CdXR0b25cIiB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicmFkaW9vcHRpb25zXCIgaWQ9XCJpbmxpbmVSYWRpbzJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJhZnRlcjE1XCIgbmFtZT1cInJhZGlvb3B0aW9uc1wiIHJlYWRvbmx5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBoZWFkaW5ndGV4dCByYWRpby1jdXN0b20tbGFiZWwgbXgtMyBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJpbmxpbmVSYWRpbzFcIj5BZnRlciAxNXRoIG9mIE1vbnRoPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBwdC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicGF5bWVudGN5Y2xlXCIgY2xhc3M9XCJoZWFkaW5ndGV4dCBtYi0yXCI+UGF5bWVudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN5Y2xlPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1zZWxlY3QgZHJvcHNlbGVjdFwiIGlkPVwicGF5bWVudGN5Y2xlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5Ecm9wZG93bigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkRlZmF1bHQgc2VsZWN0IGV4YW1wbGVcIj57e3NlbGVjdGVkSXNzdWUgPT09XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb250aGx5JyA/ICdNb250aGx5JyA6IHNlbGVjdGVkSXNzdWUgPT09ICdxdWF0ZXJseScgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUXVhdGVybHknIDogJ0FubnVhbCd9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJkcm9wRG93biAgJiYgIXBheW1lbnRpbnZvaWNlc2hvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FyZCBweS0yIHctMTAwIHBvc2l0aW9uLWFic29sdXRlIGVuZC0wIHotMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZHJvcGRvd25JdGVtc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImxpc3QtdW5zdHlsZWQgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIFtuZ0NsYXNzXT1cInRoaXMuc2VsZWN0ZWRJc3N1ZSA9PT0gaXRlbS52YWx1ZSA/ICdhY3RpdmUnIDogJydcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInByb2R1Y3R0ZXh0IHB4LTUgaXRlbXMgY3Vyc29yLXBvaW50ZXIgcHktNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEl0ZW0oaXRlbS52YWx1ZSlcIj57e2l0ZW0ubmFtZX19PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHB0LTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJpbnZvaWNlVG9cIiBjbGFzcz1cImhlYWRpbmd0ZXh0IG1iLTJcIj5HZW5lcmF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludm9pY2UgVG8gPHNwYW4+IDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjcwNl8yNTMyNClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTcuOTk5NjcgMTAuNjY2M1Y3Ljk5OTY3TTcuOTk5NjcgNS4zMzMwMUg4LjAwNjM0TTE0LjY2NjMgNy45OTk2N0MxNC42NjYzIDExLjY4MTYgMTEuNjgxNiAxNC42NjYzIDcuOTk5NjcgMTQuNjY2M0M0LjMxNzc4IDE0LjY2NjMgMS4zMzMwMSAxMS42ODE2IDEuMzMzMDEgNy45OTk2N0MxLjMzMzAxIDQuMzE3NzggNC4zMTc3OCAxLjMzMzAxIDcuOTk5NjcgMS4zMzMwMUMxMS42ODE2IDEuMzMzMDEgMTQuNjY2MyA0LjMxNzc4IDE0LjY2NjMgNy45OTk2N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzI3MDZfMjUzMjRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+PC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3V0ZXItY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBpbnB1dC1jb250YWluZXIgZm9ybS1jb250cm9sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpbnZvaWNlVG8gb2YgZ2VuZXJhdGVpbnZvaWNlTGlzdDsgbGV0IGkgPSBpbmRleFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWUtM1wiPnt7aW52b2ljZVRvfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwYXltZW50aW52b2ljZWZvcm0uZW5hYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVDaGlwKGkpXCI+PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkgM0wzIDlNMyAzTDkgOVwiIHN0cm9rZT1cIiM2NjcwODVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHN0eWxlPVwibWluLWhlaWdodDogNDRweDtcIiAgIGZvcm1Db250cm9sTmFtZT1cImludm9pY2VUb1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIiB0eXBlPVwidGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHB0LTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJnZW5lcmF0ZWludm9pY2VvblwiIGNsYXNzPVwiaGVhZGluZ3RleHQgbWItMlwiPkdlbmVyYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW52b2ljZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tc2VsZWN0IGRyb3BzZWxlY3RcIiBpZD1cImdlbmVyYXRlaW52b2ljZW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImludm9pY2VEcm9wZG93bigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkRlZmF1bHQgc2VsZWN0IGV4YW1wbGVcIj57e2ludm9pY2Vvbklzc3VlID09PVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGFzdGRheScgPyAnTGFzdCBEYXkgb2YgdGhlIE1vbnRoJyA6JzI1dGggb2YgdGhlIE1vbnRoJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImludm9pY2Vkcm9wRG93biAgJiYgIXBheW1lbnRpbnZvaWNlc2hvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FyZCBweS0yIHctMTAwIHBvc2l0aW9uLWFic29sdXRlIGVuZC0wIHotMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgKm5nRm9yPVwibGV0IGludm9pY2VpdGVtIG9mIGdlbmVyYXRlaW52b2ljZW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibGlzdC11bnN0eWxlZCBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgW25nQ2xhc3NdPVwidGhpcy5pbnZvaWNlb25Jc3N1ZSA9PT0gaW52b2ljZWl0ZW0udmFsdWUgPyAnYWN0aXZlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInByb2R1Y3R0ZXh0IHB4LTUgaXRlbXMgY3Vyc29yLXBvaW50ZXIgcHktNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImludm9pY2VJdGVtKGludm9pY2VpdGVtLnZhbHVlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aW52b2ljZWl0ZW0ubmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHB0LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJwYXltZW50dHlwZVwiIGNsYXNzPVwiaGVhZGluZ3RleHQgbWItMlwiPlBheW1lbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXNlbGVjdCBkcm9wc2VsZWN0XCIgaWQ9XCJwYXltZW50dHlwZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwYXltZW50dHlwZURyb3Bkb3duKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiRGVmYXVsdCBzZWxlY3QgZXhhbXBsZVwiPnt7cGF5bWVudElzc3VlID09PVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb25saW5lJyA/ICdvbmxpbmUgUGF5bWVudCcgOidCYW5rIFRyYW5zZmVyJ319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInBheW1lbnR0eXBlZHJvcERvd24gJiYgIXBheW1lbnRpbnZvaWNlc2hvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FyZCBweS0yIHctMTAwIHBvc2l0aW9uLWFic29sdXRlIGVuZC0wIHotMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgKm5nRm9yPVwibGV0IHBheW1lbnRpdGVtIG9mIHBheW1lbnR0eXBlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibGlzdC11bnN0eWxlZCBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgW25nQ2xhc3NdPVwidGhpcy5wYXltZW50SXNzdWUgPT09IHBheW1lbnRpdGVtLnZhbHVlID8gJ2FjdGl2ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9kdWN0dGV4dCBweC01IGl0ZW1zIGN1cnNvci1wb2ludGVyIHB5LTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwYXltZW50SXRlbShwYXltZW50aXRlbS52YWx1ZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3BheW1lbnRpdGVtLm5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgcHQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImN1cnJlbmN5XCIgY2xhc3M9XCJoZWFkaW5ndGV4dCBtYi0yXCI+Q3VycmVuY3k8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tc2VsZWN0IGRyb3BzZWxlY3RcIiBpZD1cImN1cnJlbmN5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImN1cnJlbmN5RHJvcGRvd24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJEZWZhdWx0IHNlbGVjdCBleGFtcGxlXCI+e3tjdXJyZW5jeUlzc3VlID09PSAnaW5yJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdJTlInIDonRG9sbGVyJ319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImN1cnJlbmN5ZHJvcERvd24gICYmICFwYXltZW50aW52b2ljZXNob3dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhcmQgcHktMiB3LTEwMCBwb3NpdGlvbi1hYnNvbHV0ZSBlbmQtMCB6LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsICpuZ0Zvcj1cImxldCBjdXJyZW5jeWl0ZW0gb2YgY3VycmVuY3l0eXBlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibGlzdC11bnN0eWxlZCBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgW25nQ2xhc3NdPVwidGhpcy5jdXJyZW5jeUlzc3VlID09PSBjdXJyZW5jeWl0ZW0udmFsdWUgPyAnYWN0aXZlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInByb2R1Y3R0ZXh0IHB4LTUgaXRlbXMgY3Vyc29yLXBvaW50ZXIgcHktNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImN1cnJlbmN5SXRlbShjdXJyZW5jeWl0ZW0udmFsdWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjdXJyZW5jeWl0ZW0ubmFtZX19PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHB0LTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJzZW5kcGF5bWVudFwiIGNsYXNzPVwiaGVhZGluZ3RleHQgbWItMlwiPlNlbmQgUGF5bWVudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFncmVlbWVudDxzcGFuIGNsYXNzPVwibXMtMlwiPiA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yNzA2XzI1MzI0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNy45OTk2NyAxMC42NjYzVjcuOTk5NjdNNy45OTk2NyA1LjMzMzAxSDguMDA2MzRNMTQuNjY2MyA3Ljk5OTY3QzE0LjY2NjMgMTEuNjgxNiAxMS42ODE2IDE0LjY2NjMgNy45OTk2NyAxNC42NjYzQzQuMzE3NzggMTQuNjY2MyAxLjMzMzAxIDExLjY4MTYgMS4zMzMwMSA3Ljk5OTY3QzEuMzMzMDEgNC4zMTc3OCA0LjMxNzc4IDEuMzMzMDEgNy45OTk2NyAxLjMzMzAxQzExLjY4MTYgMS4zMzMwMSAxNC42NjYzIDQuMzE3NzggMTQuNjY2MyA3Ljk5OTY3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjcwNl8yNTMyNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj48L2xhYmVsPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3V0ZXItY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBpbnB1dC1jb250YWluZXIgZm9ybS1jb250cm9sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBwYXltZW50QWdyZWVtZW50VG8gb2YgcGF5bWVudGFsbG93ZWRMaXN0OyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTNcIj57e3BheW1lbnRBZ3JlZW1lbnRUb319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicGF5bWVudGludm9pY2Vmb3JtLmVuYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VuZHBheW1lbnRyZW1vdmVDaGlwKGkpXCI+PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkgM0wzIDlNMyAzTDkgOVwiIHN0cm9rZT1cIiM2NjcwODVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgc3R5bGU9XCJtaW4taGVpZ2h0OiA0NHB4O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwYXltZW50QWdyZWVtZW50VG9cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cInNlbmRwYXltZW50b25LZXlEb3duKCRldmVudClcIiB0eXBlPVwidGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgcHQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImV4dGVuZFBheW1lbnRQZXJpb2REYXlzXCIgY2xhc3M9XCIgaGVhZGluZ3RleHQgbWItMlwiPkV4dGVuZCBQYXltZW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGVyaW9kIERheXMgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1sZy0xMDAgcG9zaXRpb24tcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSB0cmFuc2xhdGUtbWlkZGxlLXkgdG9wLTUwIG1lLTUgcHMtMyB0aWNrZXREYXlzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHRvZ2dsZS1vZmYgc3ZnLWljb24tMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicGF5bWVudGludm9pY2Vmb3JtLmdldCgnZXh0ZW5kUGF5bWVudFBlcmlvZERheXMnKT8udmFsdWUgPiAwICYmIHBheW1lbnRpbnZvaWNlZm9ybS5lbmFibGVkICA/IHBheW1lbnRpbnZvaWNlZm9ybS5nZXQoJ2V4dGVuZFBheW1lbnRQZXJpb2REYXlzJyk/LnNldFZhbHVlKHBheW1lbnRpbnZvaWNlZm9ybS5nZXQoJ2V4dGVuZFBheW1lbnRQZXJpb2REYXlzJyk/LnZhbHVlIC0gMSkgOiBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNC4xNjY5OSAxMEgxNS44MzM3XCIgc3Ryb2tlPVwiIzY2NzA4NVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJleHRlbmRQYXltZW50UGVyaW9kRGF5c1wiIHJlYWRvbmx5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJleHRlbmRQYXltZW50UGVyaW9kRGF5c1wiIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiIFsobmdNb2RlbCldPVwiZXh0ZW5kUGF5bWVudFBlcmlvZERheXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIHRyYW5zbGF0ZS1taWRkbGUteSB0b3AtNTAgZW5kLTAgbWUtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiB0b2dnbGUtb24gc3ZnLWljb24tMSB0aWNrZXREYXlzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwYXltZW50aW52b2ljZWZvcm0uZW5hYmxlZCAgPyBwYXltZW50aW52b2ljZWZvcm0uZ2V0KCdleHRlbmRQYXltZW50UGVyaW9kRGF5cycpPy5zZXRWYWx1ZShwYXltZW50aW52b2ljZWZvcm0uZ2V0KCdleHRlbmRQYXltZW50UGVyaW9kRGF5cycpPy52YWx1ZSArIDEpIDogbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTcgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjQ5OTY3IDMuMzMzMDFWMTIuNjY2M00zLjgzMzAxIDcuOTk5NjdIMTMuMTY2M1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBtdC02XCIgKm5nSWY9XCIhcGF5bWVudGludm9pY2VzaG93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBkYXRhLWt0LXN1YnNjcmlwdGlvbi10YWJsZS10b29sYmFyPVwiYmFzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj48YSB0eXBlPVwic3VibWl0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLW91dGxpbmUgYnRuIG5lZWRoZWxwIG1lLTRcIihjbGljayk9XCJvbnBheW1lbnRDYW5jZWwoKVwiPkNhbmNlbDwvYT48YSB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBweC00IG5nLXN0YXItaW5zZXJ0ZWRcIiAoY2xpY2spPVwib25wYXltZW50U3VibWl0KClcIj48c3Bhbj5BcHBseVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYW5nZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2E+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHBheW1lbnQgaW52b2ljZSBmb3JtIGVuZCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBwYXltZW50IGludm9pY2UgZW5kIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS0gc3Vic2NyaXB0aW9uIGNvbmZpZyBFbmQgLS0+XHJcblxyXG4gICAgICAgICAgICA8IS0tSW52b2ljZXMgc3RhcnQgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIG10LTZcIiBuZ2JBY2NvcmRpb25JdGVtPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiIG5nYkFjY29yZGlvbkhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWFpbmhlYWRpbmdcIiBuZ2JBY2NvcmRpb25CdXR0b24+SW52b2ljZXMgPGRpdiBjbGFzcz1cImRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Db2xsYXBzZT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBIaXN0b3J5aGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLWxhYmVsIG1iLTJcIj5QYXltZW50IEhpc3Rvcnk8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlIG15LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMSBwb3NpdGlvbi1hYnNvbHV0ZSBtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IG9wYWNpdHk9XCIwLjVcIiB4PVwiMTcuMDM2NVwiIHk9XCIxNS4xMjIzXCIgd2lkdGg9XCI4LjE1NTQ2XCIgaGVpZ2h0PVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByeD1cIjFcIiB0cmFuc2Zvcm09XCJyb3RhdGUoNDUgMTcuMDM2NSAxNS4xMjIzKVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMSAxOUM2LjU1NTU2IDE5IDMgMTUuNDQ0NCAzIDExQzMgNi41NTU1NiA2LjU1NTU2IDMgMTEgM0MxNS40NDQ0IDMgMTkgNi41NTU1NiAxOSAxMUMxOSAxNS40NDQ0IDE1LjQ0NDQgMTkgMTEgMTlaTTExIDVDNy41MzMzMyA1IDUgNy41MzMzMyA1IDExQzUgMTQuNDY2NyA3LjUzMzMzIDE3IDExIDE3QzE0LjQ2NjcgMTcgMTcgMTQuNDY2NyAxNyAxMUMxNyA3LjUzMzMzIDE0LjQ2NjcgNSAxMSA1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFsobmdNb2RlbCldPVwic2VhcmNoSW5wdXRcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHBzLTE0IG1lLTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGNoYW5nZSk9XCJzZWFyY2hGaWVsZCgpXCIgLz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWUtMyBtb250aHdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdCBcIiBhcmlhLWxhYmVsPVwiRGVmYXVsdCBzZWxlY3QgZXhhbXBsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBzZWxlY3RlZD5DdXJyZW50IE1vbnRoPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiMVwiPlByZXZpb3VzIE1vbnRoPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiMlwiPkxhc3QgMyBNb248L29wdGlvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY3JlZGl0bm90ZSgpXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4tb3V0bGluZSAgYnRuIGFsaWduLWl0ZW1zLWVuZCB0ZXh0LW5vd3JhcCBtZS00XCI+PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMSAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAuNDk5MyA0LjE2Njc1VjE1LjgzMzRNNC42NjYwMiAxMC4wMDAxSDE2LjMzMjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48c3Bhbj5DcmVkaXQgTm90ZTwvc3Bhbj4gPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25FeHBvcnQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4tb3V0bGluZSBidG4gYWxpZ24taXRlbXMtZW5kIHRleHQtbm93cmFwIG1lLTRcIj48c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTcuNSAxMi41VjE1LjgzMzNDMTcuNSAxNi4yNzU0IDE3LjMyNDQgMTYuNjk5MyAxNy4wMTE4IDE3LjAxMThDMTYuNjk5MyAxNy4zMjQ0IDE2LjI3NTQgMTcuNSAxNS44MzMzIDE3LjVINC4xNjY2N0MzLjcyNDY0IDE3LjUgMy4zMDA3MiAxNy4zMjQ0IDIuOTg4MTYgMTcuMDExOEMyLjY3NTU5IDE2LjY5OTMgMi41IDE2LjI3NTQgMi41IDE1LjgzMzNWMTIuNU0xNC4xNjY3IDYuNjY2NjdMMTAgMi41TTEwIDIuNUw1LjgzMzMzIDYuNjY2NjdNMTAgMi41VjEyLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTJcIj48L3NwYW4+IEV4cG9ydDwvYnV0dG9uPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGJvdHRvbS1ib3JkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5JbnZvaWNlICM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5CaWxsaW5nIGRhdGU8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5TdG9yZXM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5Qcm9kdWN0czwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkFtb3VudDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkFjdGlvbnM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBpbnZvaWNlIG9mIGludm9pY2VMaXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGUtcHJpbWFyeSBpbnZvaWNlXCI+e3tpbnZvaWNlPy5pbnZvaWNlfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzXCI+e3tpbnZvaWNlPy5zdGF0dXN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3tpbnZvaWNlPy5iaWxsaW5nRGF0ZX19IDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3tpbnZvaWNlPy5zdG9yZXN9fTwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PHNwYW4gKm5nRm9yPVwibGV0IHByb2R1Y3Qgb2YgaW52b2ljZT8ucHJvZHVjdHM7IGxldCBpID0gaW5kZXhcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJnZXRDb2xvckNsYXNzKHByb2R1Y3QpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImk8MlwiPnt7cHJvZHVjdH19PC9zcGFuPjxzcGFuIGNsYXNzPVwicHJvZHVjdGV4dGVuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpPj0yXCI+K3t7aW52b2ljZT8ucHJvZHVjdHMubGVuZ3RoIC0gMiB9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPnt7aW52b2ljZT8uYW1vdW50fX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwb2ludGVyXCI+PHN2ZyBjbGFzcz1cIm10LTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTcuNSAxMi41VjE1LjgzMzNDMTcuNSAxNi4yNzU0IDE3LjMyNDQgMTYuNjk5MyAxNy4wMTE4IDE3LjAxMThDMTYuNjk5MyAxNy4zMjQ0IDE2LjI3NTQgMTcuNSAxNS44MzMzIDE3LjVINC4xNjY2N0MzLjcyNDY0IDE3LjUgMy4zMDA3MiAxNy4zMjQ0IDIuOTg4MTYgMTcuMDExOEMyLjY3NTU5IDE2LjY5OTMgMi41IDE2LjI3NTQgMi41IDE1LjgzMzNWMTIuNU01LjgzMzMzIDguMzMzMzNMMTAgMTIuNU0xMCAxMi41TDE0LjE2NjcgOC4zMzMzM00xMCAxMi41VjIuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXBhZ2luYXRpb24gY2xhc3M9XCJ0ZXh0LXN0YXJ0XCIgW2l0ZW1zUGVyUGFnZV09XCJpdGVtc1BlclBhZ2VcIiBbY3VycmVudFBhZ2VdPVwiY3VycmVudFBhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG90YWxJdGVtc109XCJ0b3RhbEl0ZW1zXCIgW3BhZ2luYXRpb25TaXplc109XCJwYWdpbmF0aW9uU2l6ZXNcIiBbcGFnZVNpemVdPVwicGFnZVNpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCRldmVudClcIj48L2xpYi1wYWdpbmF0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS1JbnZvaWNlcyBlbmQgLS0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj4iXX0=
|
|
983
|
+
args: [{ selector: 'lib-payments-subscription', template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div ngbAccordion [closeOthers]=\"true\">\r\n <!-- Billing & subscription start -->\r\n <div class=\"card\" ngbAccordionItem [collapsed]=\"openaccordian\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>Billing & Subscription<div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <!--begin::plan details Card-->\r\n <div class=\"col-xl-12 billingcard\">\r\n <div class=\" h-xl-100 flex-row flex-stack flex-wrap p-6\">\r\n <div class=\"toastcard col-md-12\"\r\n *ngIf=\"clientinfo?.currentPlanInfo?.paymentStatus==='due' && clientinfo?.currentPlanInfo?.dueLimitReached===false\">\r\n <div class=\"d-flex align-items-center justify-content-end\">\r\n <div class=\"symbol symbol-30px me-5\"><span>\r\n <img src=\"./assets/tango/custompopup-Icons/danger-alert-primary.svg\"\r\n alt=\"\">\r\n </span>\r\n </div>\r\n <span class=\"toasttext d-block\">Kind Reminder: You have a reached your due\r\n limit ,To continue enjoying our services, please renew your subscription\r\n by making the payment. Thank you for your cooperation</span>\r\n <span><a type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 ng-star-inserted\"\r\n style=\"white-space: nowrap;\"><span class=\"create\">Pay Now\r\n </span></a></span>\r\n </div>\r\n\r\n </div>\r\n <div class=\"toastcard col-md-12\"\r\n *ngIf=\"clientinfo?.currentPlanInfo?.paymentStatus==='due' && clientinfo?.currentPlanInfo?.dueLimitReached===true\">\r\n <div class=\"d-flex align-items-center justify-content-end\">\r\n <div class=\"symbol symbol-30px me-5\"><span>\r\n <img src=\"./assets/tango/custompopup-Icons/danger-alert-primary.svg\"\r\n alt=\"\">\r\n </span>\r\n </div>\r\n <span class=\"toasttext d-block\">Kind Reminder: We haven't received your\r\n payment yet. To continue enjoying our services, please renew your\r\n subscription by making the payment. Thank you for your\r\n cooperation</span>\r\n <span><a type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 ng-star-inserted\"\r\n style=\"white-space: nowrap;\"><span class=\"create\">Pay Now\r\n </span></a></span>\r\n </div>\r\n\r\n </div>\r\n <div class=\"d-flex flex-column mt-6\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isView\">\r\n <div class=\"d-flex align-items-center justify-content-between border-val mb-2\">\r\n Current Plan Info<span class=\"badge-light-grey ms-2\">\r\n {{clientinfo?.currentPlanInfo?.priceType\r\n || '--'}}</span>\r\n </div>\r\n <div class=\"d-flex align-items-center pricingtext my-2\">\r\n \u20B9 {{clientinfo?.currentPlanInfo?.price\r\n || '--'}}<span class=\"pricingspan ms-2\">Store/Month</span>\r\n </div>\r\n <hr>\r\n <div class=\"d-flex justify-content-between\">\r\n\r\n\r\n <div class=\"d-flex justify-content-start flex-column plancard\">\r\n <div class=\" heading mb-3\">\r\n {{clientinfo?.currentPlanInfo?.subscriptionType\r\n || '--'}}\r\n plan - {{clientinfo?.currentPlanInfo?.storeCount\r\n || '--'}}\r\n <span class=\"subheading ms-2\">store\r\n onboarded</span>\r\n <span ngbTooltip=\"{{ product.toolTip }}\" placement=\"top\"\r\n triggers=\"mouseenter:mouseleave\" tooltipClass=\"custom-tooltip\"\r\n class=\"badge badge-light-warning ms-2\"\r\n *ngFor=\"let product of clientinfo?.currentPlanInfo?.trialProducts\">\r\n {{ product.aliseProductName }}\r\n <img class=\"ms-2\"\r\n src=\"./assets/tango/custompopup-Icons/clockexpiry-icon.svg\"\r\n alt=\"\"> </span>\r\n <span tooltipClass=\"custom-tooltip\"\r\n ngbTooltip=\"{{ product.toolTip }}\" placement=\"top\"\r\n triggers=\"mouseenter:mouseleave\"\r\n class=\"badge badge-light-primary ms-2\"\r\n *ngFor=\"let product of clientinfo?.currentPlanInfo?.expiredProducts\">\r\n {{ product.aliseProductName }}\r\n <img class=\"ms-2\"\r\n src=\"./assets/tango/custompopup-Icons/primary-clock-icon.svg\"\r\n alt=\"\"> </span>\r\n </div>\r\n <span class=\"sub d-block\">Cameras :\r\n {{clientinfo?.currentPlanInfo?.totalCamera\r\n || '--'}} | Avg sq.ft : {{clientinfo?.currentPlanInfo?.storeSize\r\n || '--'}} sq.ft | Products : <span\r\n *ngFor=\"let product of clientinfo?.currentPlanInfo?.liveProducts\">\r\n {{ product.aliseProductName }} </span>\r\n </span>\r\n </div>\r\n\r\n <div class=\" d-flex align-items-end\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\">\r\n <span\r\n [disableTooltip]=\"!clientinfo?.currentPlanInfo?.pendingClientRequest\"\r\n ngbTooltip=\"Request is Already initiated waiting for admin approval\"\r\n placement=\"top\" triggers=\"mouseenter:mouseleave\"\r\n tooltipClass=\"custom-tooltip\">\r\n <button type=\"submit\"\r\n [disabled]=\"clientinfo?.currentPlanInfo?.pendingClientRequest\"\r\n (click)=\"needhelp()\" class=\"btn-outline btn needhelp me-4\"><span\r\n class=\"me-2\"><svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_1965_2301)\">\r\n <path\r\n d=\"M7.57533 7.50033C7.77125 6.94338 8.15795 6.47375 8.66695 6.1746C9.17596 5.87546 9.77441 5.76611 10.3563 5.86592C10.9382 5.96573 11.466 6.26826 11.8462 6.71993C12.2264 7.1716 12.4345 7.74326 12.4337 8.33366C12.4337 10.0003 9.93366 10.8337 9.93366 10.8337M10.0003 14.167H10.0087M18.3337 10.0003C18.3337 14.6027 14.6027 18.3337 10.0003 18.3337C5.39795 18.3337 1.66699 14.6027 1.66699 10.0003C1.66699 5.39795 5.39795 1.66699 10.0003 1.66699C14.6027 1.66699 18.3337 5.39795 18.3337 10.0003Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1965_2301\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"> Need Help</span>\r\n </button>\r\n\r\n </span>\r\n <button (click)=\"upgradeplan()\" type=\"button\" tabindex=\"0\"\r\n class=\"btn update btn-lg btn-light btn-active-light-primary px-4 ng-star-inserted\"\r\n style=\"white-space: nowrap;\"><span class=\"create\">Upgrade Plan\r\n </span></button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <!--end::plan details Card-->\r\n\r\n\r\n <div class=\"row gx-4 mt-4\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isView\">\r\n <!--begin::Bank details Card-->\r\n <div class=\"col-xl-7 \">\r\n <div class=\"billingcard h-xl-100 flex-row flex-stack flex-wrap p-6\">\r\n <div class=\"d-flex flex-column py-2\">\r\n <div class=\"d-flex align-items-center billingtext mb-8\">\r\n Bank Details\r\n </div>\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">Payment Type</div>\r\n <div class=\"billingmain\">Virtual Acc\r\n </div>\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">Account No </div>\r\n <div class=\"billingmain\"> {{clientinfo?.bankDetails?.accountNo ||\r\n '--'}}\r\n </div>\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">IFSC Code</div>\r\n <div class=\"billingmain\"> {{clientinfo?.bankDetails?.ifscCode ||\r\n '--'}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-flex align-items-center mt-4\">\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">SWIFT Code</div>\r\n <div class=\"billingmain\"> {{clientinfo?.bankDetails?.swiftCode ||\r\n '--'}}\r\n </div>\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <div class=\"billingdetails\">Branch </div>\r\n <div class=\"billingmain\">{{clientinfo?.bankDetails?.branch || '--'}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!--end::Bank details Card-->\r\n\r\n\r\n <div class=\"col-xl-5 \"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isView\">\r\n\r\n <!-- Add Billing start -->\r\n <div class=\"billing h-xl-100 w-100 flex-row flex-stack flex-wrap p-6\"\r\n *ngIf=\"!clientinfo?.billingDetails?.billingAddress\">\r\n <div class=\"modal-content align-items-center mt-2\">\r\n <div class=\"d-flex\">\r\n <div><img src=\"./assets/tango/custompopup-Icons/addbilling_icon.svg\"\r\n alt=\"\"></div>\r\n\r\n </div>\r\n <div class=\"heading mt-4 ms-1\">Add billing address</div>\r\n <div class=\"d-flex justify-content-center mt-8 w-100\">\r\n <button type=\"button\" tabindex=\"0\" (click)=\"update()\"\r\n class=\"btn btn-primary ms-2 ng-star-inserted address w-100\"\r\n style=\"white-space: nowrap;\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><span\r\n class=\"submit\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0003 4.16675V15.8334M4.16699 10.0001H15.8337\"\r\n stroke=\"white\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span> New Address </button>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <!-- Add Billing end -->\r\n <!-- Billing Information start -->\r\n <div class=\"billingcard h-xl-100 flex-row flex-stack flex-wrap p-6\"\r\n *ngIf=\"clientinfo?.billingDetails?.billingAddress && clientinfo?.billingDetails?.billingAddress!==''\">\r\n <div class=\"d-flex flex-column py-2\">\r\n <div\r\n class=\"d-flex align-items-center justify-content-between billingtext mb-5\">\r\n Billing\r\n <a type=\"submit\" (click)=\"update()\"\r\n class=\"btn update btn-lg btn-light btn-active-light-primary px-4 ng-star-inserted\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><span\r\n class=\"mt-2\">\r\n Update</span></a>\r\n\r\n </div>\r\n\r\n <div class=\"align-items-center\">\r\n\r\n <div class=\"billingdetails\">Next Billing Date</div>\r\n <div class=\"billingmain\">\r\n {{clientinfo?.billingDetails?.nextBillingDate || '--'}}\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <div class=\"align-items-center mt-6\">\r\n <div class=\"billingdetails\">Billing Address</div>\r\n <div class=\"billingmain\">\r\n {{clientinfo?.billingDetails?.billingAddress ||\r\n '--'}}\r\n </div>\r\n\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <!-- Billing Information End -->\r\n\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Billing & subscription End -->\r\n\r\n <!--subscription Config start -->\r\n <div class=\"card mt-6\" ngbAccordionItem *ngIf=\"(gs.userAccess | async)?.userType === 'tango' && (gs.userAccess | async)?.settings_paymentSubscriptions_isView\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>Subscription Config <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n\r\n <ng-template>\r\n <div class=\"col-xl-12 billingcard\">\r\n <div class=\" h-xl-100 flex-row flex-stack flex-wrap mx-5 pt-4\">\r\n <div class=\"d-flex flex-column\">\r\n <!-- subscription info header start -->\r\n <div class=\"d-flex justify-content-between\">\r\n\r\n <div *ngIf=\"showNavGroup\" class=\"nav-group nav-group-outline mt-2\">\r\n <button\r\n class=\"btn btn-color-gray-600 btn-active btn-active-secondary px-6 py-3 me-2\"\r\n [ngClass]=\"plan === 'subscription'? 'activePlanBtn':'inactivePlanBtn'\"\r\n data-kt-plan=\"subscription\" (click)=\"selectPlan('subscription')\">\r\n Subscription\r\n </button>\r\n\r\n <button\r\n class=\"btn btn-color-gray-600 btn-active btn-active-secondary px-6 py-3\"\r\n [ngClass]=\"plan === 'pricing'? 'activePlanBtn':'inactivePlanBtn'\"\r\n data-kt-plan=\"pricing\" (click)=\"selectPlan('pricing')\">\r\n Pricing\r\n </button>\r\n </div>\r\n </div>\r\n <!-- subscription info header end -->\r\n\r\n <!-- subscription tab starts -->\r\n <div *ngIf=\"plan === 'subscription'\">\r\n <!-- client request card start -->\r\n <div class=\"row gx-4 mt-4\">\r\n <!--begin::Bank details Card-->\r\n <div class=\"col-xl-6\" [ngClass]=\"i > 1? 'mt-5' : ''\"\r\n *ngFor=\"let notification of notificationDetails.notificationList;let i= index;\">\r\n <!-- Billing Information start -->\r\n <div\r\n class=\"billingcard h-xl-100 flex-row flex-stack flex-wrap mb-6 px-6\">\r\n <div class=\"d-flex flex-column mt-10\"\r\n *ngIf=\"notification.category === 'Trial'\">\r\n <div\r\n class=\"d-flex align-items-center justify-content-between levelviewtext mb-2\">\r\n {{notification.name}} <span\r\n class=\"badge-light-grey ms-2\">{{currentPlan}}</span>\r\n </div>\r\n <div class=\"subtext\">Kindly make necessary action for trial\r\n request or skip product to subscription list</div>\r\n\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex mt-9\"><a\r\n (click)=\"approvetrial(notification,'cancel')\"\r\n type=\"submit\"\r\n class=\"btn-outline btn needhelp me-6 mt-3\"><span\r\n class=\"mt-6\">Skip Trail</span></a><a\r\n (click)=\"approvetrial(notification,'approve')\"\r\n type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 mt-3 ng-star-inserted\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><span>Approve\r\n Trail\r\n </span></a></div>\r\n </div>\r\n <div class=\"d-flex flex-column mt-10\"\r\n *ngIf=\"notification.category === 'unsubscribe'\">\r\n <div\r\n class=\"d-flex align-items-center justify-content-between levelviewtext mb-2\">\r\n Unsubscribe Request\r\n </div>\r\n <div class=\"subtext\">Client has requested to unsubscribe\r\n <span class=\"subtextbold\">Tango Suite</span>\r\n </div>\r\n\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex mt-9\"><a type=\"submit\"\r\n class=\"btn-outline btn needhelp me-6 mt-3\"\r\n (click)=\"cancelUnsubscribe(notification,'cancel')\"><span\r\n class=\"mt-6\">Cancel</span></a><a\r\n (click)=\"approveUnsubscribe(notification,'unsubscribe')\"\r\n type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-danger px-4 mt-3 ng-star-inserted\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><span>Approve\r\n </span></a></div>\r\n </div>\r\n <div class=\"d-flex flex-column mt-10\"\r\n *ngIf=\"notification.category === 'trial product'\">\r\n <div\r\n class=\"d-flex align-items-center justify-content-between levelviewtext mb-2\">\r\n {{notification.name}} <span\r\n class=\"badge-light-grey ms-2\">{{currentPlan}}</span>\r\n </div>\r\n <div class=\"subtext\">Current Plan Info</div>\r\n <div class=\"row mt-7\">\r\n <div class=\"col-lg-8 d-flex\">\r\n <div><svg id=\"circle-chart\" width=\"94\" height=\"94\"\r\n viewBox=\"0 0 100 100\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <!-- Background circle -->\r\n <circle cx=\"50\" cy=\"50\" r=\"40\" fill=\"none\"\r\n stroke=\"#f0f0f0\" stroke-width=\"8\">\r\n </circle>\r\n <!-- Foreground circle -->\r\n <circle id=\"progress-circle-{{i}}\" cx=\"50\"\r\n cy=\"50\" r=\"40\" fill=\"none\"\r\n stroke=\"#007bff\" stroke-width=\"8\"\r\n stroke-dasharray=\"251.2\"\r\n [attr.stroke-dashoffset]=\"updateCircleChart(notification.percentage,i)\">\r\n </circle>\r\n <!-- Text displaying percentage -->\r\n <text id=\"percentage-text-{{i}}\" x=\"50\"\r\n y=\"54\" class=\"producttext\"\r\n text-anchor=\"middle\"\r\n fill=\"#333333\">{{notification.percentage}}%</text>\r\n </svg></div>\r\n <div\r\n class=\"align-items-start justify-content-between daysleft ms-6 mt-3\">\r\n {{notification.day}} Days Left\r\n <div class=\"align-items-start trail mt-2 me-14\">\r\n Free trial</div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"col-lg-4 mt-6\">\r\n <div class=\"position-relative\">\r\n <div (click)=\"producttrailDropdown($event,i)\">\r\n <span\r\n class=\"justify-content-end cursor-pointer ms-20\"><svg\r\n width=\"60\" height=\"60\"\r\n viewBox=\"0 0 60 60\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g\r\n filter=\"url(#filter0_d_5221_60143)\">\r\n <rect x=\"2\" y=\"1\" width=\"56\"\r\n height=\"56\" rx=\"8\"\r\n fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"55\"\r\n height=\"55\" rx=\"7.5\"\r\n stroke=\"#D0D5DD\" />\r\n <g\r\n clip-path=\"url(#clip0_5221_60143)\">\r\n <path\r\n d=\"M30 32C31.6569 32 33 30.6569 33 29C33 27.3431 31.6569 26 30 26C28.3431 26 27 27.3431 27 29C27 30.6569 28.3431 32 30 32Z\"\r\n stroke=\"#344054\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M37.4 32C37.2669 32.3016 37.2272 32.6362 37.286 32.9606C37.3448 33.285 37.4995 33.5843 37.73 33.82L37.79 33.88C37.976 34.0657 38.1235 34.2863 38.2241 34.5291C38.3248 34.7719 38.3766 35.0322 38.3766 35.295C38.3766 35.5578 38.3248 35.8181 38.2241 36.0609C38.1235 36.3037 37.976 36.5243 37.79 36.71C37.6043 36.896 37.3837 37.0435 37.1409 37.1441C36.8981 37.2448 36.6378 37.2966 36.375 37.2966C36.1122 37.2966 35.8519 37.2448 35.6091 37.1441C35.3663 37.0435 35.1457 36.896 34.96 36.71L34.9 36.65C34.6643 36.4195 34.365 36.2648 34.0406 36.206C33.7162 36.1472 33.3816 36.1869 33.08 36.32C32.7842 36.4468 32.532 36.6572 32.3543 36.9255C32.1766 37.1938 32.0813 37.5082 32.08 37.83V38C32.08 38.5304 31.8693 39.0391 31.4942 39.4142C31.1191 39.7893 30.6104 40 30.08 40C29.5496 40 29.0409 39.7893 28.6658 39.4142C28.2907 39.0391 28.08 38.5304 28.08 38V37.91C28.0723 37.579 27.9651 37.258 27.7725 36.9887C27.5799 36.7194 27.3107 36.5143 27 36.4C26.6984 36.2669 26.3638 36.2272 26.0394 36.286C25.715 36.3448 25.4157 36.4995 25.18 36.73L25.12 36.79C24.9343 36.976 24.7137 37.1235 24.4709 37.2241C24.2281 37.3248 23.9678 37.3766 23.705 37.3766C23.4422 37.3766 23.1819 37.3248 22.9391 37.2241C22.6963 37.1235 22.4757 36.976 22.29 36.79C22.104 36.6043 21.9565 36.3837 21.8559 36.1409C21.7552 35.8981 21.7034 35.6378 21.7034 35.375C21.7034 35.1122 21.7552 34.8519 21.8559 34.6091C21.9565 34.3663 22.104 34.1457 22.29 33.96L22.35 33.9C22.5805 33.6643 22.7352 33.365 22.794 33.0406C22.8528 32.7162 22.8131 32.3816 22.68 32.08C22.5532 31.7842 22.3428 31.532 22.0745 31.3543C21.8062 31.1766 21.4918 31.0813 21.17 31.08H21C20.4696 31.08 19.9609 30.8693 19.5858 30.4942C19.2107 30.1191 19 29.6104 19 29.08C19 28.5496 19.2107 28.0409 19.5858 27.6658C19.9609 27.2907 20.4696 27.08 21 27.08H21.09C21.421 27.0723 21.742 26.9651 22.0113 26.7725C22.2806 26.5799 22.4857 26.3107 22.6 26C22.7331 25.6984 22.7728 25.3638 22.714 25.0394C22.6552 24.715 22.5005 24.4157 22.27 24.18L22.21 24.12C22.024 23.9343 21.8765 23.7137 21.7759 23.4709C21.6752 23.2281 21.6234 22.9678 21.6234 22.705C21.6234 22.4422 21.6752 22.1819 21.7759 21.9391C21.8765 21.6963 22.024 21.4757 22.21 21.29C22.3957 21.104 22.6163 20.9565 22.8591 20.8559C23.1019 20.7552 23.3622 20.7034 23.625 20.7034C23.8878 20.7034 24.1481 20.7552 24.3909 20.8559C24.6337 20.9565 24.8543 21.104 25.04 21.29L25.1 21.35C25.3357 21.5805 25.635 21.7352 25.9594 21.794C26.2838 21.8528 26.6184 21.8131 26.92 21.68H27C27.2958 21.5532 27.548 21.3428 27.7257 21.0745C27.9034 20.8062 27.9987 20.4918 28 20.17V20C28 19.4696 28.2107 18.9609 28.5858 18.5858C28.9609 18.2107 29.4696 18 30 18C30.5304 18 31.0391 18.2107 31.4142 18.5858C31.7893 18.9609 32 19.4696 32 20V20.09C32.0013 20.4118 32.0966 20.7262 32.2743 20.9945C32.452 21.2628 32.7042 21.4732 33 21.6C33.3016 21.7331 33.6362 21.7728 33.9606 21.714C34.285 21.6552 34.5843 21.5005 34.82 21.27L34.88 21.21C35.0657 21.024 35.2863 20.8765 35.5291 20.7759C35.7719 20.6752 36.0322 20.6234 36.295 20.6234C36.5578 20.6234 36.8181 20.6752 37.0609 20.7759C37.3037 20.8765 37.5243 21.024 37.71 21.21C37.896 21.3957 38.0435 21.6163 38.1441 21.8591C38.2448 22.1019 38.2966 22.3622 38.2966 22.625C38.2966 22.8878 38.2448 23.1481 38.1441 23.3909C38.0435 23.6337 37.896 23.8543 37.71 24.04L37.65 24.1C37.4195 24.3357 37.2648 24.635 37.206 24.9594C37.1472 25.2838 37.1869 25.6184 37.32 25.92V26C37.4468 26.2958 37.6572 26.548 37.9255 26.7257C38.1938 26.9034 38.5082 26.9987 38.83 27H39C39.5304 27 40.0391 27.2107 40.4142 27.5858C40.7893 27.9609 41 28.4696 41 29C41 29.5304 40.7893 30.0391 40.4142 30.4142C40.0391 30.7893 39.5304 31 39 31H38.91C38.5882 31.0013 38.2738 31.0966 38.0055 31.2743C37.7372 31.452 37.5268 31.7042 37.4 32Z\"\r\n stroke=\"#344054\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <filter\r\n id=\"filter0_d_5221_60143\"\r\n x=\"0\" y=\"0\" width=\"60\"\r\n height=\"60\"\r\n filterUnits=\"userSpaceOnUse\"\r\n color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\"\r\n result=\"BackgroundImageFix\" />\r\n <feColorMatrix\r\n in=\"SourceAlpha\"\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur\r\n stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\"\r\n in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_5221_60143\" />\r\n <feBlend mode=\"normal\"\r\n in=\"SourceGraphic\"\r\n in2=\"effect1_dropShadow_5221_60143\"\r\n result=\"shape\" />\r\n </filter>\r\n <clipPath id=\"clip0_5221_60143\">\r\n <rect width=\"24\" height=\"24\"\r\n fill=\"white\"\r\n transform=\"translate(18 17)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </div>\r\n <div *ngIf=\"notification.producttraildropDown\"\r\n class=\"card py-2 w-200px position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let producttrailitem of producttrailtype\"\r\n class=\"list-unstyled mb-2\">\r\n <li class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"producttrailItem(producttrailitem,notification)\">\r\n {{producttrailitem}}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n <!--end::Bank details Card-->\r\n </div>\r\n <!-- client request card end -->\r\n\r\n <!-- level view dropdown start -->\r\n <div *ngIf=\"sublevelview\"\r\n class=\"d-flex justify-content-between heading mt-6\">\r\n <div class=\"position-relative \">\r\n <div class=\"form-select dropselect levelviewtext\" id=\"currency\"\r\n (click)=\"viewplanDropdown($event)\"\r\n aria-label=\"Default select example\">{{viewplanIssue}}</div>\r\n <div *ngIf=\"viewplandropDown\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let viewplanitem of viewplantype\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.viewplanIssue === viewplanitem ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"viewplanItem(viewplanitem)\">{{viewplanitem}}\r\n </li>\r\n </ul>\r\n </div>\r\n <div class=\"text-sub\">Based on Current Subscribed Product</div>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div *ngIf=\"plan === 'subscription' && viewplanIssue === 'Product Level View'\"\r\n class=\" d-flex justify-content-end mt-6\">\r\n <lib-multidropdown text=\"Add Products\" [product]=\"productList\"\r\n [productList]=\"dataObject[0].Issues\" type=\"products\"\r\n [clientId]=\"clientId\" (data)=\"reload($event)\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"></lib-multidropdown>\r\n </div>\r\n </div>\r\n <div class=\"card-toolbar mt-3\"\r\n *ngIf=\"viewplanIssue === 'Store Level View' && plan === 'subscription'\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"d-flex align-items-end position-relative my-1\">\r\n <span\r\n class=\"svg-icon svg-icon-1 position-absolute mb-3 ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\r\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\"\r\n width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\"\r\n fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" class=\"form-control ps-14 me-2\"\r\n placeholder=\"Search\" autocomplete=\"off\"\r\n (change)=\"searchRecords($event)\" />\r\n <lib-filters class=\"me-2\" [dataObject]=\"dataObject\"\r\n (appliedFilters)=receiveData($event)></lib-filters>\r\n <lib-multidropdown text=\"Add Products\"\r\n [productList]=\"dataObject[0].Issues\" type=\"stores\"\r\n [stores]=\"getStores()\" [product]=\"getProduct()\"\r\n [clientId]=\"clientId\" [clientProduct]=\"productList\"\r\n (data)=\"reload($event)\" [selectAll]=\"selectAll\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"></lib-multidropdown>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- subscription config toolbar end -->\r\n </div>\r\n\r\n <ng-container *ngIf=\"loading\">\r\n <div\r\n class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"noData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div\r\n class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\"\r\n src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- product subscription plan start -->\r\n <div *ngIf=\"viewplanIssue === 'Product Level View' && !loading && !noData\">\r\n <div class=\"card-body p-0 mt-4\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border\">\r\n <thead>\r\n <tr>\r\n <th>Product</th>\r\n <th>No of Stores</th>\r\n <th>Cost Per Store</th>\r\n\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let product of productList;let i=index;\">\r\n <td>\r\n <div class=\"table-title subscribedtext\">\r\n {{convertUpper(product?.product) || '--'}}\r\n </div>\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\">{{product?.storeCount\r\n || 0}}</div>\r\n\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\">\u20B9 {{product?.basePrice || 0}}</div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- product subscription plan end -->\r\n\r\n <!-- store subscription plan start -->\r\n <div *ngIf=\"viewplanIssue === 'Store Level View' && !loading && !noData\">\r\n <div class=\"card-body p-0 mt-6\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border\">\r\n <thead>\r\n <tr>\r\n <th>\r\n <div class=\"d-flex\">\r\n <input class=\"storeinput me-4\"\r\n [(ngModel)]=\"selectAll\" type=\"checkbox\"\r\n (click)=\"selectAllStore($event)\">\r\n <label class=\"form-check-label\"\r\n for=\"flexCheckDefault\">\r\n <span>Store Info</span>\r\n </label>\r\n </div>\r\n </th>\r\n <th>Location</th>\r\n <th>Products</th>\r\n <th>Actions</th>\r\n\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let store of storeList;let i=index;\">\r\n <td>\r\n <div class=\"d-flex \">\r\n <input class=\"storeinput me-4\"\r\n type=\"checkbox\"\r\n [(ngModel)]=\"store.checked\"\r\n (change)=\"updateCheck($event,store?.storeId)\">\r\n <div\r\n class=\"d-flex justify-content-start flex-column\">\r\n <label\r\n class=\"form-check-label table-title-primary\"\r\n for=\"flexCheckDefault\">\r\n <span>{{store?.storeName ||\r\n '--'}}</span>\r\n </label>\r\n <span class=\"table-sub d-block7\">ID :\r\n {{store?.storeId || '--'}}</span>\r\n </div>\r\n </div>\r\n\r\n <div>\r\n\r\n\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n {{store?.storeProfile?.city || '--'}}</div>\r\n </td>\r\n\r\n <td *ngIf=\"store?.product && store?.product.length\">\r\n <span\r\n *ngFor=\"let product of store?.product;let i=index;\"><span\r\n *ngIf=\"i<2\"\r\n class=\"badge badge-light-primary me-1\">{{product}}</span></span><span\r\n *ngIf=\"store.product.length > 2\">+{{store?.product.length-2}}</span>\r\n </td>\r\n <td *ngIf=\"!store?.product\"> -- </td>\r\n <td>\r\n <lib-multidropdown\r\n [product]=\"store?.product || []\"\r\n [productList]=\"dataObject[0].Issues\"\r\n type=\"stores\" [stores]=\"[store?.storeId]\"\r\n [clientId]=\"clientId\"\r\n [clientProduct]=\"productList\"\r\n (data)=\"reload($event)\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"></lib-multidropdown>\r\n </td>\r\n\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div class=\"mb-4\">\r\n <lib-pagination [itemsPerPage]=\"dynamicData.limit\"\r\n [currentPage]=\"dynamicData.offset\"\r\n [totalItems]=\"totalCount\" [paginationSizes]=\"[10,20,30]\"\r\n [pageSize]=\"dynamicData.limit\"\r\n (pageChange)=\"onStorePageChange($event)\"\r\n (pageSizeChange)=\"onStorePageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- store subscription plan end -->\r\n </div>\r\n <!-- subscription tab starts -->\r\n\r\n <!--pricing tab start -->\r\n <div *ngIf=\"plan === 'pricing'\">\r\n <div class=\"d-flex justify-content-between py-6\">\r\n <div class=\" levelviewtext mt-4\">\r\n Pricing Table<br><span class=\"text-sub\">Based on Product &\r\n stores</span> </div>\r\n <div class=\"card-toolbar\">\r\n <div class=\"justify-content-end\">\r\n <div class=\"producttext\">Switch to</div>\r\n <div *ngIf=\"PricingshowNav\"\r\n class=\"nav-group nav-group-outline mt-2\">\r\n <button\r\n class=\"btn btn-color-gray-600 btn-active btn-active-secondary px-6 py-3 me-2\"\r\n [ngClass]=\"pricingplan === 'standard'? 'activePlanBtnprimary':'inactivePlanBtn'\"\r\n data-kt-plan=\"standardprice\"\r\n (click)=\"selectPricePlan('standard')\">\r\n Standard Price\r\n </button>\r\n\r\n <button\r\n class=\"btn btn-color-gray-600 btn-active btn-active-secondary px-6 py-3\"\r\n [ngClass]=\"pricingplan === 'step'? 'activePlanBtnprimary':'inactivePlanBtn'\"\r\n data-kt-plan=\"stepprice\"\r\n (click)=\"selectPricePlan('step')\">\r\n Step Price\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"pricingplan === 'step'\" class=\"d-flex justify-content-end mb-8\">\r\n <button (click)=\"addstepprice('add')\" type=\"button\"\r\n class=\"btn-outline btn needhelp text-nowrap\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M10.4993 4.16675V15.8334M4.66602 10.0001H16.3327\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Add Step</span> </button>\r\n </div>\r\n\r\n <ng-container *ngIf=\"priceLoading\">\r\n <div\r\n class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"priceNoData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div\r\n class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\"\r\n src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"card-body p-0 mt-4\">\r\n <div *ngIf=\"pricingplan === 'standard' && !priceLoading && !priceNoData\"\r\n class=\"table-responsive\">\r\n <table class=\"table bottom-border\">\r\n <thead>\r\n <tr>\r\n <th>Product</th>\r\n <th>Actual Price</th>\r\n <th class=\"discountheader\">Discount %</th>\r\n <th class=\"negheader\">Negotiated Price</th>\r\n <th>Installed Stores</th>\r\n <th>Total Price</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"let product of priceValueDetails.product;let i=index;\">\r\n <td>\r\n <div class=\"producttext\">\r\n {{convertUpper(product.productName)}}</div>\r\n\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{product.basePrice}}</div>\r\n\r\n </td>\r\n <td class=\"discountprice\">\r\n <div><input type=\"text\" class=\" form-control \"\r\n id=\"discountprice\"\r\n style=\"text-transform: capitalize;\"\r\n [(ngModel)]=\"product.discountPercentage\"\r\n (change)=\"calculate(i,'discount')\"></div>\r\n </td>\r\n <td class=\"negprice\">\r\n <div><input type=\"text\" class=\" form-control \"\r\n id=\"negprice\"\r\n style=\"text-transform: capitalize;\"\r\n [(ngModel)]=\"product.negotiatePrice\"\r\n (change)=\"calculate(i,'price')\"></div>\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\">{{product.storeCount}}\r\n </div>\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\">$ {{product.price}}</div>\r\n </td>\r\n </tr>\r\n <tr>\r\n <th>\r\n <div class=\"table-title\">Total Value</div>\r\n\r\n </th>\r\n <th>\r\n <div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.actualPrice}}</div>\r\n \r\n </th>\r\n <th>\r\n <div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.negotiatePrice}}</div>\r\n </th>\r\n <th><div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.negotiatePrice}}</div></th>\r\n <th></th>\r\n\r\n <th>\r\n <div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.totalNegotiatePrice}}</div>\r\n </th>\r\n\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div *ngIf=\"pricingplan === 'step' && !priceLoading && !priceNoData\"\r\n class=\"table-responsive\">\r\n <table class=\"table bottom-border pricingtab\">\r\n <thead>\r\n <tr>\r\n <th>Product</th>\r\n <th>Actual Price</th>\r\n <th>Discount %</th>\r\n <th>Negotiated Price</th>\r\n <th>Store Range</th>\r\n <th>Installed Stores</th>\r\n <th>Total Price</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"let product of priceValueDetails?.product;let i=index\">\r\n <td>\r\n <div class=\"producttext\">\r\n {{convertUpper(product.productName)}}\r\n <span class=\"ms-4\" *ngIf=\"product.showImg\"><img\r\n src=\"./assets/tango/custompopup-Icons/expiry-icon.svg\"\r\n alt=\"\"></span>\r\n </div>\r\n\r\n </td>\r\n <td>\r\n <div class=\"table-title\"> \u20B9 {{product.basePrice}}</div>\r\n\r\n </td>\r\n <td class=\"discountprice\">\r\n <div><input type=\"text\" class=\" form-control \"\r\n id=\"discountprice\"\r\n style=\"text-transform: capitalize;\"\r\n [(ngModel)]=\"product.discountPercentage\"\r\n (change)=\"calculate(i,'discount')\"></div>\r\n </td>\r\n <td class=\"negprice\">\r\n <div><input type=\"text\" class=\" form-control \"\r\n id=\"negprice\"\r\n style=\"text-transform: capitalize;\"\r\n [(ngModel)]=\"product.negotiatePrice\"\r\n (change)=\"calculate(i,'price')\"></div>\r\n </td>\r\n <td class=\"storerange\">\r\n <div><input type=\"text\" class=\" form-control \"\r\n id=\"storerange\"\r\n style=\"text-transform: capitalize;\"\r\n [(ngModel)]=\"product.storeRange\" readonly>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{product.storeCount}}\r\n </div>\r\n </td>\r\n\r\n <td>\r\n <div class=\"table-title\"> \u20B9 {{product.price}}</div>\r\n </td>\r\n <td>\r\n <div class=\"table-title d-flex\"\r\n *ngIf=\"!product.showEditDelete\">\r\n <span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M3.16602 4.99935H4.83268M4.83268 4.99935H18.166M4.83268 4.99935V16.666C4.83268 17.108 5.00828 17.532 5.32084 17.8445C5.6334 18.1571 6.05732 18.3327 6.49935 18.3327H14.8327C15.2747 18.3327 15.6986 18.1571 16.0112 17.8445C16.3238 17.532 16.4993 17.108 16.4993 16.666V4.99935H4.83268ZM7.33268 4.99935V3.33268C7.33268 2.89065 7.50828 2.46673 7.82084 2.15417C8.1334 1.84161 8.55732 1.66602 8.99935 1.66602H12.3327C12.7747 1.66602 13.1986 1.84161 13.5112 2.15417C13.8238 2.46673 13.9993 2.89065 13.9993 3.33268V4.99935M8.99935 9.16602V14.166M12.3327 9.16602V14.166\"\r\n stroke=\"#D0D5DD\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span class=\"ms-6\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M14.832 2.5009C15.0509 2.28203 15.3107 2.10842 15.5967 1.98996C15.8827 1.87151 16.1892 1.81055 16.4987 1.81055C16.8082 1.81055 17.1147 1.87151 17.4007 1.98996C17.6867 2.10842 17.9465 2.28203 18.1654 2.5009C18.3842 2.71977 18.5579 2.97961 18.6763 3.26558C18.7948 3.55154 18.8557 3.85804 18.8557 4.16757C18.8557 4.4771 18.7948 4.7836 18.6763 5.06956C18.5579 5.35553 18.3842 5.61537 18.1654 5.83424L6.91536 17.0842L2.33203 18.3342L3.58203 13.7509L14.832 2.5009Z\"\r\n stroke=\"#D0D5DD\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n <div class=\"cursor-pointer table-title d-flex\"\r\n *ngIf=\"product.showEditDelete\">\r\n <span\r\n (click)=\"addstepprice('delete',product,i)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M3.16602 4.99935H4.83268M4.83268 4.99935H18.166M4.83268 4.99935V16.666C4.83268 17.108 5.00828 17.532 5.32084 17.8445C5.6334 18.1571 6.05732 18.3327 6.49935 18.3327H14.8327C15.2747 18.3327 15.6986 18.1571 16.0112 17.8445C16.3238 17.532 16.4993 17.108 16.4993 16.666V4.99935H4.83268ZM7.33268 4.99935V3.33268C7.33268 2.89065 7.50828 2.46673 7.82084 2.15417C8.1334 1.84161 8.55732 1.66602 8.99935 1.66602H12.3327C12.7747 1.66602 13.1986 1.84161 13.5112 2.15417C13.8238 2.46673 13.9993 2.89065 13.9993 3.33268V4.99935M8.99935 9.16602V14.166M12.3327 9.16602V14.166\"\r\n stroke=\"#667085\"\r\n stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span (click)=\"addstepprice('edit',product,i)\"\r\n class=\"ms-6\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M14.832 2.5009C15.0509 2.28203 15.3107 2.10842 15.5967 1.98996C15.8827 1.87151 16.1892 1.81055 16.4987 1.81055C16.8082 1.81055 17.1147 1.87151 17.4007 1.98996C17.6867 2.10842 17.9465 2.28203 18.1654 2.5009C18.3842 2.71977 18.5579 2.97961 18.6763 3.26558C18.7948 3.55154 18.8557 3.85804 18.8557 4.16757C18.8557 4.4771 18.7948 4.7836 18.6763 5.06956C18.5579 5.35553 18.3842 5.61537 18.1654 5.83424L6.91536 17.0842L2.33203 18.3342L3.58203 13.7509L14.832 2.5009Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </td>\r\n\r\n </tr>\r\n <tr>\r\n <th>\r\n <div class=\"table-title\">Total Value</div>\r\n\r\n </th>\r\n <th>\r\n <div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.actualPrice}}</div>\r\n\r\n </th>\r\n <th>\r\n <div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.negotiatePrice}}</div>\r\n </th>\r\n <th><div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.negotiatePrice}}</div></th>\r\n <th></th>\r\n <th></th>\r\n <th>\r\n <div class=\"table-title bolddata\"> \u20B9 {{priceValueDetails.totalNegotiatePrice}}</div>\r\n </th>\r\n <th></th>\r\n\r\n </tr>\r\n\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <div class=\"card-body pt-14\" *ngIf=\"!priceLoading && !priceNoData\">\r\n <div class=\"d-flex flex-stack\">\r\n <div class=\"fianlvaltext me-2\">Actual Value</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\"> \u20B9 {{priceValueDetails.totalActualPrice}}</span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-stack pt-4\">\r\n <div class=\"fianlvaltext me-2\">Discount</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\">{{priceValueDetails.discountPercentage}}% (- \u20B9 {{priceValueDetails.discountPrice}})</span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-stack pt-4\">\r\n <div class=\"fianlvaltext me-2\">Negotiated Value</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\"> \u20B9 {{priceValueDetails.totalNegotiatePrice}}</span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-stack pt-4\">\r\n <div class=\"fianlvaltext me-2\">Tax</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\">18% GST</span>\r\n </div>\r\n </div>\r\n <hr>\r\n\r\n <div class=\"d-flex flex-stack py-2\">\r\n <div class=\"fianlvaltext me-2\">Final Value</div>\r\n <div class=\"d-flex align-items-senter\">\r\n <span class=\"fianlvaltext\"> \u20B9 {{priceValueDetails.finalValue}}</span>\r\n </div>\r\n </div>\r\n\r\n <hr>\r\n\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex justify-content-end py-3\"><a type=\"submit\"\r\n class=\"btn-outline btn needhelp me-4 mt-3\"\r\n (click)=\"revertOriginalPrice()\">Cancel</a><a\r\n (click)=\"pricingrevised()\" type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 mt-3 ng-star-inserted\"><span>Save\r\n </span></a></div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- pricing tab plan end -->\r\n\r\n\r\n\r\n <!-- submit plan start -->\r\n <div *ngIf=\"plan === 'storesubscription'\" class=\"row\">\r\n <div class=\"col-lg-8\">\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex justify-content-end py-3\"><a type=\"submit\"\r\n class=\"btn-outline btn needhelp me-4 mt-3\">Cancel</a><a\r\n (click)=\"pricingrevised()\" type=\"button\" tabindex=\"0\"\r\n class=\"btn btn-primary px-4 mt-3 ng-star-inserted\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><span>Apply\r\n Changes\r\n </span></a></div>\r\n </div>\r\n\r\n </div>\r\n <!-- submit plan end -->\r\n </div>\r\n </div>\r\n </div>\r\n <!-- product info end -->\r\n\r\n <!-- payment invoice start -->\r\n <div class=\"col-xl-12 my-4 billingcard\" *ngIf=\"(gs.userAccess | async)?.userType === 'tango' && (gs.userAccess | async)?.settings_paymentSubscriptions_isView\"\r\n >\r\n <form [formGroup]=\"paymentinvoiceform\">\r\n <div class=\"d-flex justify-content-between ps-4 pt-6\">\r\n <!--begin::Title-->\r\n <h3 class=\"align-items-start flex-column\">\r\n <span class=\"heading mb-2\">Payment and Invoice</span>\r\n </h3>\r\n <!--end::Title-->\r\n\r\n <!--begin::Toolbar-->\r\n <div class=\"card-toolbar mb-2\" *ngIf=\"paymentinvoiceshow\">\r\n <button (click)=\"onpaymentedit()\" type=\"submit\"\r\n class=\"btn-outline btn align-items-end needhelp me-4\"><span\r\n class=\"me-2\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n <!--end::Toolbar-->\r\n </div>\r\n <!-- payment invoice form start -->\r\n <div class=\"d-flex flex-column row fv-row fv-plugins-icon-container py-4 px-4\">\r\n\r\n <div class=\"row\">\r\n <div class=\"col-lg-6\">\r\n <div class=\"form-group pt-1\">\r\n <label for=\"paymentcycle\" class=\"headingtext mb-2\">Enable Pro-Rate\r\n for Charges</label>\r\n <div class=\"d-flex mt-3\">\r\n <div class=\"form-check form-check-inline ps-0\"\r\n (click)=\"pricingType($event, 'before15')\">\r\n <input formControlName=\"radiooptions\"\r\n class=\"radio-custom cursor-pointer radioButton\"\r\n type=\"radio\" id=\"inlineRadio1\" value=\"before15\"\r\n name=\"radiooptions\">\r\n <label\r\n class=\"form-check-label radio-custom-label mx-3 headingtext cursor-pointer\"\r\n for=\"inlineRadio1\">Before 15th of Month</label>\r\n </div>\r\n <div class=\"form-check form-check-inline ps-0\"\r\n (click)=\"pricingType($event, 'after15')\">\r\n <input class=\"radio-custom cursor-pointer radioButton\"\r\n type=\"radio\" formControlName=\"radiooptions\"\r\n id=\"inlineRadio2\" value=\"after15\" name=\"radiooptions\"\r\n readonly>\r\n <label\r\n class=\"form-check-label headingtext radio-custom-label mx-3 cursor-pointer\"\r\n for=\"inlineRadio1\">After 15th of Month</label>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n <div class=\"form-group pt-6\">\r\n <label for=\"paymentcycle\" class=\"headingtext mb-2\">Payment\r\n Cycle</label>\r\n\r\n <div class=\"position-relative\">\r\n <div class=\"form-select dropselect\" id=\"paymentcycle\"\r\n (click)=\"openDropdown($event)\"\r\n aria-label=\"Default select example\">{{selectedIssue ===\r\n 'monthly' ? 'Monthly' : selectedIssue === 'quaterly' ?\r\n 'Quaterly' : 'Annual'}}</div>\r\n <div *ngIf=\"dropDown && !paymentinvoiceshow\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let item of dropdownItems\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.selectedIssue === item.value ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"selectItem(item.value)\">{{item.name}}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group pt-6\">\r\n <label for=\"invoiceTo\" class=\"headingtext mb-2\">Generate\r\n Invoice To <span> <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2706_25324)\">\r\n <path\r\n d=\"M7.99967 10.6663V7.99967M7.99967 5.33301H8.00634M14.6663 7.99967C14.6663 11.6816 11.6816 14.6663 7.99967 14.6663C4.31778 14.6663 1.33301 11.6816 1.33301 7.99967C1.33301 4.31778 4.31778 1.33301 7.99967 1.33301C11.6816 1.33301 14.6663 4.31778 14.6663 7.99967Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2706_25324\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></label>\r\n\r\n <div class=\"outer-container\">\r\n <div class=\" input-container form-control\">\r\n <ng-container\r\n *ngFor=\"let invoiceTo of generateinvoiceList; let i = index\">\r\n\r\n <span class=\"chip\">\r\n <span class=\"me-3\">{{invoiceTo}}</span>\r\n <span *ngIf=\"paymentinvoiceform.enabled\"\r\n (click)=\"removeChip(i)\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"12\" height=\"12\" viewBox=\"0 0 12 12\"\r\n fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span>\r\n </ng-container>\r\n <input style=\"min-height: 44px;\" formControlName=\"invoiceTo\"\r\n (keydown)=\"onKeyDown($event)\" type=\"text\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group pt-6\">\r\n <label for=\"generateinvoiceon\" class=\"headingtext mb-2\">Generate\r\n Invoice\r\n On\r\n </label>\r\n <div class=\"position-relative\">\r\n <div class=\"form-select dropselect\" id=\"generateinvoiceon\"\r\n (click)=\"invoiceDropdown($event)\"\r\n aria-label=\"Default select example\">{{invoiceonIssue ===\r\n 'lastday' ? 'Last Day of the Month' :'25th of the Month'}}\r\n </div>\r\n <div *ngIf=\"invoicedropDown && !paymentinvoiceshow\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let invoiceitem of generateinvoiceon\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.invoiceonIssue === invoiceitem.value ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"invoiceItem(invoiceitem.value)\">\r\n {{invoiceitem.name}}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-lg-6\">\r\n <div class=\"form-group pt-1\">\r\n <label for=\"paymenttype\" class=\"headingtext mb-2\">Payment\r\n Type</label>\r\n <div class=\"position-relative\">\r\n <div class=\"form-select dropselect\" id=\"paymenttype\"\r\n (click)=\"paymenttypeDropdown($event)\"\r\n aria-label=\"Default select example\">{{paymentIssue ===\r\n 'online' ? 'online Payment' :'Bank Transfer'}}</div>\r\n <div *ngIf=\"paymenttypedropDown && !paymentinvoiceshow\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let paymentitem of paymenttype\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.paymentIssue === paymentitem.value ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"paymentItem(paymentitem.value)\">\r\n {{paymentitem.name}}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group pt-6\">\r\n <label for=\"currency\" class=\"headingtext mb-2\">Currency</label>\r\n <div class=\"position-relative\">\r\n <div class=\"form-select dropselect\" id=\"currency\"\r\n (click)=\"currencyDropdown($event)\"\r\n aria-label=\"Default select example\">{{currencyIssue ===\r\n 'inr'\r\n ? 'INR' :'Doller'}}</div>\r\n <div *ngIf=\"currencydropDown && !paymentinvoiceshow\"\r\n class=\"card py-2 w-100 position-absolute end-0 z-1\">\r\n <ul *ngFor=\"let currencyitem of currencytype\"\r\n class=\"list-unstyled mb-2\">\r\n <li [ngClass]=\"this.currencyIssue === currencyitem.value ? 'active' : ''\"\r\n class=\"producttext px-5 items cursor-pointer py-4\"\r\n (click)=\"currencyItem(currencyitem.value)\">\r\n {{currencyitem.name}}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group pt-6\">\r\n <label for=\"sendpayment\" class=\"headingtext mb-2\">Send Payment\r\n Agreement<span class=\"ms-2\"> <svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2706_25324)\">\r\n <path\r\n d=\"M7.99967 10.6663V7.99967M7.99967 5.33301H8.00634M14.6663 7.99967C14.6663 11.6816 11.6816 14.6663 7.99967 14.6663C4.31778 14.6663 1.33301 11.6816 1.33301 7.99967C1.33301 4.31778 4.31778 1.33301 7.99967 1.33301C11.6816 1.33301 14.6663 4.31778 14.6663 7.99967Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2706_25324\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></label>\r\n\r\n\r\n <div class=\"outer-container\">\r\n <div class=\" input-container form-control\">\r\n <ng-container\r\n *ngFor=\"let paymentAgreementTo of paymentallowedList; let i = index\">\r\n <span class=\"chip\">\r\n <span class=\"me-3\">{{paymentAgreementTo}}</span>\r\n <span *ngIf=\"paymentinvoiceform.enabled\"\r\n (click)=\"sendpaymentremoveChip(i)\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"12\" height=\"12\" viewBox=\"0 0 12 12\"\r\n fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span>\r\n </ng-container>\r\n <input style=\"min-height: 44px;\"\r\n formControlName=\"paymentAgreementTo\"\r\n (keydown)=\"sendpaymentonKeyDown($event)\" type=\"text\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group pt-6\">\r\n <label for=\"extendPaymentPeriodDays\"\r\n class=\" headingtext mb-2\">Extend Payment\r\n Period Days </label>\r\n <div class=\"w-lg-100 position-relative\">\r\n <div\r\n class=\"position-absolute translate-middle-y top-50 me-5 ps-3 ticketDays\">\r\n <span class=\"svg-icon toggle-off svg-icon-1\"\r\n (click)=\"paymentinvoiceform.get('extendPaymentPeriodDays')?.value > 0 && paymentinvoiceform.enabled ? paymentinvoiceform.get('extendPaymentPeriodDays')?.setValue(paymentinvoiceform.get('extendPaymentPeriodDays')?.value - 1) : null\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M4.16699 10H15.8337\" stroke=\"#667085\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n <input type=\"text\" class=\"form-control\"\r\n id=\"extendPaymentPeriodDays\" readonly\r\n formControlName=\"extendPaymentPeriodDays\"\r\n style=\"text-align: center;\"\r\n [(ngModel)]=\"extendPaymentPeriodDays\" autocomplete=\"off\" />\r\n <div\r\n class=\"position-absolute translate-middle-y top-50 end-0 me-3\">\r\n <span class=\"svg-icon toggle-on svg-icon-1 ticketDays\"\r\n (click)=\"paymentinvoiceform.enabled ? paymentinvoiceform.get('extendPaymentPeriodDays')?.setValue(paymentinvoiceform.get('extendPaymentPeriodDays')?.value + 1) : null\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\"\r\n height=\"16\" viewBox=\"0 0 17 16\" fill=\"none\">\r\n <path\r\n d=\"M8.49967 3.33301V12.6663M3.83301 7.99967H13.1663\"\r\n stroke=\"#667085\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-end mt-6\" *ngIf=\"!paymentinvoiceshow\">\r\n <div data-kt-subscription-table-toolbar=\"base\"\r\n class=\"d-flex justify-content-end\"><a type=\"submit\"\r\n class=\"btn-outline btn needhelp me-4\"\r\n (click)=\"onpaymentCancel()\">Cancel</a><a type=\"button\"\r\n tabindex=\"0\" class=\"btn btn-primary px-4 ng-star-inserted\"\r\n (click)=\"onpaymentSubmit()\"\r\n *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><span>Apply\r\n Changes\r\n </span></a></div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <!-- payment invoice form end -->\r\n\r\n </form>\r\n </div>\r\n <!-- payment invoice end -->\r\n\r\n </ng-template>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <!-- subscription config End -->\r\n\r\n <!--Invoices start -->\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango' && (gs.userAccess | async)?.settings_paymentSubscriptions_isView\">\r\n <div class=\"card mt-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>Invoices <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <div class=\"card-header\" >\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Payment History</span>\r\n \r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\"\r\n rx=\"1\" transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\">\r\n </rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input [(ngModel)]=\"searchInput\" type=\"text\" class=\"form-control ps-14 me-4\"\r\n placeholder=\"Search\" autocomplete=\"off\" (change)=\"searchField()\" />\r\n \r\n <div class=\"me-3 monthwidth\">\r\n <div class=\"dropdown\">\r\n <select class=\"form-select \" aria-label=\"Default select example\">\r\n <option selected>Current Month</option>\r\n <option value=\"1\">Previous Month</option>\r\n <option value=\"2\">Last 3 Mon</option>\r\n \r\n </select>\r\n </div>\r\n </div>\r\n \r\n <button (click)=\"creditnote()\" type=\"button\" class=\"btn-outline btn align-items-end text-nowrap me-4\" *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isEdit\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M10.4993 4.16675V15.8334M4.66602 10.0001H16.3327\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span>Credit Note</span> </button>\r\n <button type=\"button\" (click)=\"onExport()\"\r\n class=\"btn-outline btn align-items-end text-nowrap me-4\" *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isDownload\"\r\n ><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\"></span> Export</button>\r\n \r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border\">\r\n <thead>\r\n <tr>\r\n <th>Invoice #</th>\r\n <th>Billing date</th>\r\n <th>Stores</th>\r\n <th>Products</th>\r\n <th>Amount</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let invoice of invoiceList\">\r\n <td>\r\n <div class=\"table-title-primary invoice\">{{invoice?.invoice}}</div>\r\n <span class=\"badge badge-light-success\">{{invoice?.status}}</span>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{invoice?.billingDate}} </div>\r\n \r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{invoice?.stores}}</div>\r\n \r\n </td>\r\n \r\n <td><span *ngFor=\"let product of invoice?.products; let i = index\"><span\r\n [class]=\"getColorClass(product)\"\r\n *ngIf=\"i<2\">{{product}}</span><span class=\"productextend\"\r\n *ngIf=\"i>=2\">+{{invoice?.products.length - 2 }}</span></span>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{invoice?.amount}}</div>\r\n </td>\r\n <td>\r\n <span class=\"pointer\"><svg class=\"mt-3\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </td>\r\n \r\n </tr>\r\n </tbody>\r\n </table>\r\n <lib-pagination class=\"text-start\" [itemsPerPage]=\"itemsPerPage\"\r\n [currentPage]=\"currentPage\" [totalItems]=\"totalItems\"\r\n [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <!--Invoices end -->\r\n </div>\r\n </div>", styles: [".accordion-button:not(.collapsed){color:none!important;background-color:#fff!important;box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed){color:none!important;background-color:var(--bs-accordion-active-bg);box-shadow:none!important}.billingcard{border-radius:12px;border:1px solid var(--Gray-300, #D0D5DD);background:#fff}.heading{color:var(--Gray-900, #101828);font-size:18px;font-weight:600}.subheading{color:var(--Gray-900, #101828);font-size:16px;font-weight:400;line-height:24px}.sub{color:var(--Gray-900, #101828);font-size:14px;font-weight:400;line-height:20px}.pricingtext{color:var(--Gray-800, #1D2939);font-size:30px;font-weight:600;line-height:38px}.pricingspan{color:var(--Gray-500, #667085);font-size:18px;font-weight:500;line-height:28px}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}input [type=text] [disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{background-color:#f9fafb!important}input[type=text]{color:#101828;border:1px solid #D0D5DD!important;box-shadow:0 1px 2px #1018280d;border-radius:8px;font-size:16px;width:100%;padding:10px 14px;font-weight:400;line-height:24px}input:active [type=text],input:focus [type=text],input:focus-visible [type=text]{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD)!important;box-shadow:0 1px 2px #1018280d;outline:none!important;background:var(--Gray-50, #F9FAFB)}.mainheading{color:var(--Black, #101828);font-size:18px;font-weight:600;line-height:28px}.trail{color:var(--Gray-500, #667085);font-size:18px;font-weight:600;line-height:28px}.daysleft{color:var(--Error-700, #B42318);text-align:center;font-size:12px;font-weight:500;line-height:18px}.subtext{color:var(--Gray-500, #667085);font-size:12px;font-weight:500;line-height:18px}.needhelp{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:20px;text-transform:capitalize}.billingtext{color:#000;font-size:20px;font-weight:500;line-height:30px}.billingdetails{color:var(--Gray-500, #667085);font-size:16px;font-weight:500;line-height:24px}.billingmain{color:#000;font-size:16px;font-weight:600;line-height:24px}.update{border-radius:8px;border:1px solid var(--Primary-50, #EAF8FF);box-shadow:0 1px 2px #1018280d;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.address{border-radius:8px;border:1px solid var(--Primary-600, #00A3FF);background:var(--Primary-600, #00A3FF);box-shadow:0 1px 2px #1018280d}.billing{border-radius:12px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-25, #F6FCFF)}.activePlanBtn{border-radius:6px;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a!important;color:var(--Gray-700, #344054);font-size:14px!important;font-weight:500!important;line-height:20px}.inactivePlanBtn{color:var(--Gray-500, #667085)!important;font-size:14px;font-weight:500!important;line-height:20px}.activePlanBtnprimary{border-radius:6px;background:var(--Primary-50, #EAF8FF)!important;box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a!important;color:var(--Primary-700, #009BF3);font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.nav-group{background:var(--Gray-50, #F9FAFB)!important;border-radius:8px!important;border:1px solid var(--Gray-100, #F2F4F7)!important;width:fit-content}.form-check-label{color:var(--Gray-700, #344054)!important}::ng-deep .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#fff!important;border:1px solid black;width:100%!important}.fieldwidth{width:100%!important;background-color:#fff!important}.text-sub{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:400!important;line-height:20px}.border-val{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}.table-title-primary{color:var(--Primary-700, #009BF3)!important;font-weight:500!important}.table-sub{line-height:30px!important;color:var(--Gray-500, #667085)!important}.illustcontent{color:var(--Gray-900, #101828);font-size:16px;font-weight:600}.nav-item .nav-link{color:var(--Gray-500, #667085);font-size:16px;font-weight:500}.pointer{cursor:pointer}.invoice{width:120%}.monthwidth{width:65%}.storerange{width:15%!important}.discountprice{width:11%!important}.negprice{width:14%}.discountheader{width:12%}.negheader{width:16%}.bolddata{font-weight:700!important;color:var(--Gray-700, #344054)!important}.producttext{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.table:not(.table-bordered) tbody tr:last-child{border-bottom:1px solid #EAECF0!important}hr{border:1px solid var(--Gray-300, #D0D5DD);height:1px!important}.fianlvaltext{color:var(--Gray-500, #667085);font-size:16px;font-weight:600;line-height:24px}.input-group-text{background-color:#fff!important;color:var(--Gray-400, #98A2B3);font-size:16px;font-weight:400;line-height:24px}.discountinput{width:80px!important;text-align:center;color:var(--Gray-500, #667085);font-size:18px;font-weight:500;line-height:28px}.radio-custom{width:20px;height:20px;background-color:#eaf8ff}.radio-custom,.radio-custom-label{display:inline-block;vertical-align:middle;margin:8px 0;cursor:pointer}.radio-custom-label{position:relative}.radio-custom:checked+.radio-custom-label:before{background:#00a3ff;box-shadow:inset 0 0 0 4.5px #eaf8ff;width:16px;height:16px}.outer-container{position:relative}.outer-container .form-control{padding-top:0;padding-bottom:0}.outer-container .input-container{border:1px solid black;height:100%;width:100%;display:flex;flex-wrap:wrap}.outer-container .input-container input{all:unset;flex:1;min-width:50px;border:none!important}.outer-container .input-container .chip{margin:10px 0 10px 10px;padding:3px 10px;border-radius:16px;background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.outer-container .input-container .chip:nth-child(1){margin-left:0}.form-control{display:block;padding:.5rem 1rem;font-size:1.1rem;font-weight:400;color:var(--Gray-500, #667085);-webkit-appearance:none;appearance:none;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}tr{vertical-align:middle!important}.levelviewtext{color:var(--Gray-800, #1D2939);font-family:Inter;font-size:18px;border:none!important;font-weight:600;line-height:28px;padding-left:0!important}.subscribedtext{color:var(--Primary-700, #009BF3);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:45px!important}.badge-light-grey{border-radius:16px;background:var(--Gray-100, #F2F4F7);display:flex;padding:4px 12px;justify-content:center;align-items:center;color:var(--Gray-700, #344054);text-align:center;font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.daysleft{color:var(--Gray-800, #1D2939);font-family:Inter;font-size:24px;font-style:normal;font-weight:500;line-height:32px}.btn-danger{border-radius:8px;border:1px solid var(--Error-600, #D92D20);background:var(--Error-600, #D92D20);box-shadow:0 1px 2px #1018280d}.subtextbold{color:var(--Gray-500, #667085);font-family:Inter;font-size:12px;font-style:normal;font-weight:700;line-height:18px}.toastcard{border-radius:4px;border-left:2px solid #00A3FF;background:#f5f8fa;box-shadow:0 4px 16px #0000001a;display:flex;height:68px;padding:6px 12px 6px 16px;align-items:center;gap:16px;align-self:stretch}.toasttext{color:var(--Gray-500, #667085);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}.billingupdate{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);color:var(--Gray-700, #344054);font-family:Inter;font-size:12px;font-weight:600;line-height:18px;text-transform:capitalize}.pricingtab{width:115%}.items:hover,.tems.focus,.items.active,.camera.focus-visible{background:var(--Gray-50, #F9FAFB)}.dropselect{color:var(--Gray-500, #667085);font-family:Inter;font-size:16px;font-style:normal;font-weight:400;line-height:24px}.Historyheader{padding:0 .25rem}.product-traffic{color:var(--Blue-700, #175CD3);text-align:center;font-family:Inter;font-size:12px;font-weight:500;border-radius:16px;background:var(--Blue-50, #EFF8FF)}.productextend{border-radius:16px;background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054);text-align:center;font-family:Inter;font-size:12px;font-weight:500;padding:2px 8px}.product-zone{border-radius:16px;background:var(--Indigo-50, #EEF4FF);padding:2px 8px;color:var(--Indigo-700, #3538CD);text-align:center;font-family:Inter;font-size:12px;font-weight:500}.product-sop{color:var(--Purple-700, #5925DC);text-align:center;font-family:Inter;font-size:12px;font-weight:500;border-radius:16px;background:var(--Purple-50, #F4F3FF)}.prioritysupport{color:var(--Pink-700, #C11574);text-align:center;font-family:Inter;font-size:12px;font-weight:500;border-radius:16px;background:var(--Pink-50, #FDF2FA)}::ng-deep .custom-tooltip{border-radius:8px;background:var(--White, #FFF);padding:8px 12px;color:var(--Gray-700, #344054);text-align:center;font-family:Inter;font-size:12px;font-weight:600;line-height:18px}.plancard{width:65%!important}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}\n"] }]
|
|
984
|
+
}], ctorParameters: () => [{ type: i1.NgbModal }, { type: i2.FormBuilder }, { type: i3.PaymentSubscriptionService }, { type: i0.ChangeDetectorRef }, { type: i4.ToastService }, { type: i5.GlobalStateService }, { type: i0.ElementRef }], propDecorators: { onDocumentClick: [{
|
|
985
|
+
type: HostListener,
|
|
986
|
+
args: ['document:click', ['$event']]
|
|
987
|
+
}] } });
|
|
988
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudHMtc3Vic2NyaXB0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1zZXR0aW5ncy9zcmMvbGliL2NvbXBvbmVudHMvcGF5bWVudHMtc3Vic2NyaXB0aW9uL3BheW1lbnRzLXN1YnNjcmlwdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2Utc2V0dGluZ3Mvc3JjL2xpYi9jb21wb25lbnRzL3BheW1lbnRzLXN1YnNjcmlwdGlvbi9wYXltZW50cy1zdWJzY3JpcHRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBK0MsTUFBTSxFQUF1RCxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEssT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ2pHLE9BQU8sRUFBMEIsVUFBVSxFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUFjLE9BQU8sRUFBc0MsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQzlGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQzFHLE9BQU8sRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBYSxNQUFNLE1BQU0sQ0FB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RyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25FLE9BQU8sU0FBUyxHQUFHLEdBQUcsR0FBRyxVQUFVLENBQUM7SUFDdEMsQ0FBQztJQUdELGVBQWUsQ0FBQyxLQUFpQjtRQUNoQyxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtZQUM3QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO1NBQ2pDO1FBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1NBQ3RCO1FBQ0QsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztTQUM5QjtRQUNELElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN6QixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztTQUM3QjtRQUNELElBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFO1lBQzdDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFRLEVBQUMsRUFBRTtnQkFDN0QsSUFBSSxDQUFDLG9CQUFvQixHQUFJLEtBQUssQ0FBQTtZQUNuQyxDQUFDLENBQUMsQ0FBQTtTQUNIO0lBQ0YsQ0FBQzt1R0FqaENVLDZCQUE2QjsyRkFBN0IsNkJBQTZCLHVJQzNCMUMsbTZ3SUErK0NVOzsyRkRwOUNHLDZCQUE2QjtrQkFOekMsU0FBUzsrQkFDRSwyQkFBMkI7cVFBb2dDckMsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBpbmplY3QsIENoYW5nZURldGVjdG9yUmVmLCBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBVcGRhdGVDb21wb25lbnQgfSBmcm9tICcuL3N1YnNjcmlwdGlvbi1wb3B1cHMvdXBkYXRlL3VwZGF0ZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBOZWVkSGVscENvbXBvbmVudCB9IGZyb20gJy4vc3Vic2NyaXB0aW9uLXBvcHVwcy9uZWVkLWhlbHAvbmVlZC1oZWxwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFVwZ3JhZGVQbGFuQ29tcG9uZW50IH0gZnJvbSAnLi9zdWJzY3JpcHRpb24tcG9wdXBzL3VwZ3JhZGUtcGxhbi91cGdyYWRlLXBsYW4uY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQnVpbGRlciwgVmFsaWRhdG9ycywgRm9ybUFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ09NTUEsIEVOVEVSIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IExpdmVBbm5vdW5jZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XHJcbmltcG9ydCB7IENyZWRpdE5vdGVDb21wb25lbnQgfSBmcm9tICcuL3N1YnNjcmlwdGlvbi1wb3B1cHMvY3JlZGl0LW5vdGUvY3JlZGl0LW5vdGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUHJpY2luZ1JldmlzZWRDb21wb25lbnQgfSBmcm9tICcuL3N1YnNjcmlwdGlvbi1wb3B1cHMvcHJpY2luZy1yZXZpc2VkL3ByaWNpbmctcmV2aXNlZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG1hcCwgc3dpdGNoTWFwLCBzdGFydFdpdGggfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wYXltZW50LXN1YnNjcmlwdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWRkU3RlcHByaWNlQ29tcG9uZW50IH0gZnJvbSAnLi9zdWJzY3JpcHRpb24tcG9wdXBzL2FkZC1zdGVwcHJpY2UvYWRkLXN0ZXBwcmljZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktc2hhcmVkJztcclxuaW1wb3J0IHsgU2tpcFRyYWlsQ29tcG9uZW50IH0gZnJvbSAnLi9zdWJzY3JpcHRpb24tcG9wdXBzL3NraXAtdHJhaWwvc2tpcC10cmFpbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUcmFpbFNldHRpbmdzQ29tcG9uZW50IH0gZnJvbSAnLi9zdWJzY3JpcHRpb24tcG9wdXBzL3RyYWlsLXNldHRpbmdzL3RyYWlsLXNldHRpbmdzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFVuc3Vic2NyaWJlUmVxdWVzdENvbXBvbmVudCB9IGZyb20gJy4vc3Vic2NyaXB0aW9uLXBvcHVwcy91bnN1YnNjcmliZS1yZXF1ZXN0L3Vuc3Vic2NyaWJlLXJlcXVlc3QuY29tcG9uZW50JztcclxuaW1wb3J0IFN3YWwgZnJvbSAnc3dlZXRhbGVydDInO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktZ2xvYmFsJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItcGF5bWVudHMtc3Vic2NyaXB0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcGF5bWVudHMtc3Vic2NyaXB0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vcGF5bWVudHMtc3Vic2NyaXB0aW9uLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFBheW1lbnRzU3Vic2NyaXB0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBjbGllbnRpbmZvOiBhbnk7XHJcbiAgbGlzdDogYW55W107XHJcbiAgc2VsZWN0OiBzdHJpbmcgPSAnYmVmb3JlMTUnO1xyXG4gIHNlcGFyYXRvcktleXNDb2RlczogbnVtYmVyW10gPSBbRU5URVIsIENPTU1BXTtcclxuICBhbm5vdW5jZXIgPSBpbmplY3QoTGl2ZUFubm91bmNlcik7XHJcbiAgcGxhbjogc3RyaW5nID0gJ3N1YnNjcmlwdGlvbic7XHJcbiAgc2hvd05hdkdyb3VwOiBib29sZWFuID0gdHJ1ZTtcclxuICBQcmljaW5nc2hvd05hdjogYm9vbGVhbiA9IHRydWU7XHJcbiAgc3VibGV2ZWx2aWV3OiBib29sZWFuID0gdHJ1ZTtcclxuICBjb3VudDogbnVtYmVyID0gMTtcclxuICBkYXlzQ291bnQ6IGFueSA9ICcnO1xyXG4gIGN1cnJlbnRwbGFuZm9ybTogRm9ybUdyb3VwO1xyXG4gIHBheW1lbnRpbnZvaWNlZm9ybTogRm9ybUdyb3VwO1xyXG4gIHBheW1lbnRhbGxvd2VkTGlzdDogYW55ID0gW11cclxuICBnZW5lcmF0ZWludm9pY2VMaXN0OiBhbnkgPSBbXVxyXG4gICRnZW5lcmF0ZWludm9pY2VJbnRlcnJ1cHQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpXHJcbiAgJHNlbmRwYXltZW50SW50ZXJydXB0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKVxyXG4gIG9wZW5hY2NvcmRpYW4gPSBmYWxzZTtcclxuICBicmFuZE5hbWU6IHN0cmluZyA9ICcnO1xyXG4gIHNlYXJjaElucHV0OiBhbnk7XHJcbiAgZ3N0TnVtYmVyOiBzdHJpbmcgPSAnJztcclxuICBiaWxsaW5nQWRkcmVzczogc3RyaW5nID0gJyc7XHJcbiAgcHJpY2luZ3BsYW46IHN0cmluZyA9ICdzdGFuZGFyZCc7XHJcbiAgZHJvcERvd246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpbnZvaWNlZHJvcERvd246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwYXltZW50dHlwZWRyb3BEb3duOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY3VycmVuY3lkcm9wRG93bjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHZpZXdwbGFuZHJvcERvd246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcm9kdWN0dHJhaWxkcm9wRG93bjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRyb3Bkb3duSXRlbXM6IGFueVtdID0gW3sgbmFtZTogJ01vbnRobHknLCB2YWx1ZTogJ21vbnRobHknIH0sIHsgbmFtZTogJ1F1YXRlcmx5JywgdmFsdWU6ICdxdWF0ZXJseScgfSwgeyBuYW1lOiAnQW5udWFsJywgdmFsdWU6ICdhbm51YWwnIH1dO1xyXG4gIGdlbmVyYXRlaW52b2ljZW9uOiBhbnlbXSA9IFt7IG5hbWU6ICdMYXN0IERheSBvZiB0aGUgTW9udGgnLCB2YWx1ZTogJ2xhc3RkYXknIH0sIHsgbmFtZTogJzI1dGggb2YgdGhlIE1vbnRoJywgdmFsdWU6ICcyNXRoJyB9XTtcclxuICBwYXltZW50dHlwZTogYW55W10gPSBbeyBuYW1lOiAnT25saW5lIFBheW1lbnQnLCB2YWx1ZTogJ29ubGluZScgfSwgeyBuYW1lOiAnQmFuayBUcmFuc2ZlcicsIHZhbHVlOiAnYmFua3RyYW5zZmVyJyB9XTtcclxuICBjdXJyZW5jeXR5cGU6IGFueVtdID0gW3sgbmFtZTogJ0lOUicsIHZhbHVlOiAnaW5yJyB9LCB7IG5hbWU6ICdEb2xsZXInLCB2YWx1ZTogJ2RvbGxlcicgfV07XHJcbiAgdmlld3BsYW50eXBlOiBhbnlbXSA9IFsnUHJvZHVjdCBMZXZlbCBWaWV3JywgJ1N0b3JlIExldmVsIFZpZXcnXTtcclxuICBwcm9kdWN0dHJhaWx0eXBlOiBhbnlbXSA9IFsnRXh0ZW5kIFRyYWlsJywgJ1N1YnNjcmliZSBQcm9kdWN0J107XHJcbiAgc2VsZWN0ZWRJc3N1ZTogYW55ID0gJ01vbnRobHknO1xyXG4gIGludm9pY2Vvbklzc3VlOiBhbnkgPSAnTGFzdCBEYXkgb2YgdGhlIE1vbnRoJztcclxuICBwYXltZW50SXNzdWU6IGFueSA9ICdvbmxpbmUnO1xyXG4gIGN1cnJlbmN5SXNzdWU6IGFueSA9ICdJTlInO1xyXG4gIHZpZXdwbGFuSXNzdWU6IGFueSA9ICdQcm9kdWN0IExldmVsIFZpZXcnO1xyXG4gIHByb2R1Y3R0cmFpbElzc3VlOiBhbnkgPSAnRXh0ZW5kIFRyYWlsJztcclxuICBwcmljZVZhbHVlRGV0YWlsczogYW55O1xyXG4gIG9yaWdpbmFsUHJpY2VWYWx1ZTogYW55O1xyXG4gIHByb2R1Y3RMaXN0OiBhbnkgPSBbXTtcclxuICBzdG9yZUxpc3Q6IGFueSA9IFtdO1xyXG4gIGRhdGFPYmplY3Q6IGFueSA9IFtcclxuICAgIHsgRGVzY3JpcHRpb246ICdQcm9kdWN0cycsIElzc3VlczogW10gfSxcclxuICAgIHsgRGVzY3JpcHRpb246ICdTdG9yZScsIElzc3VlczogW10gfSxcclxuICAgIHsgRGVzY3JpcHRpb246ICdMb2NhdGlvbicsIElzc3VlczogW10gfSxcclxuICBdO1xyXG4gIHRvdGFsQ291bnQ6IG51bWJlciA9IDA7XHJcbiAgZHluYW1pY0RhdGE6IGFueSA9IHtcclxuICAgIGxpbWl0OiAxMCxcclxuICAgIG9mZnNldDogMSxcclxuICAgIGNsaWVudElkOiBcIlwiLFxyXG4gICAgc2VhcmNoVmFsdWU6IFwiXCIsXHJcbiAgICBzb3J0Q29sdW1uOiAnJyxcclxuICAgIHNvcnRCeTogJycsXHJcbiAgICBwcm9kdWN0OiBbXSxcclxuICAgIHN0b3JlOiBbXSxcclxuICAgIGxvY2F0aW9uOiBbXVxyXG4gIH1cclxuICBzZWxlY3RBbGw6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzZWxlY3RlZFN0b3JlTGlzdDogYW55ID0gW107XHJcbiAgc3RvcmVQcm9kdWN0OiBhbnk7XHJcbiAgbm90aWZpY2F0aW9uRGV0YWlsczogYW55ID0gW107XHJcbiAgY3VycmVudFBsYW46IHN0cmluZyA9ICdmcmVlJztcclxuICBwYXltZW50aW52b2ljZWluZm86IGFueTtcclxuICByZXF1ZXN0RGF0YTogYW55XHJcbiAgaXNFeHBvcnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpdGVtc1BlclBhZ2UgPSAxMFxyXG4gIGN1cnJlbnRQYWdlID0gMVxyXG4gIHRvdGFsSXRlbXMgPSAwXHJcbiAgcGFnaW5hdGlvblNpemVzID0gWzEwLCAyMCwgMzBdXHJcbiAgcGFnZVNpemUgPSAxMFxyXG4gIGlzRmlsdGVyID0gJ2xhc3QnO1xyXG4gIHNlYXJjaFZhbHVlOiBzdHJpbmcgfCBudWxsID0gJyc7XHJcbiAgaW52b2ljZUxpc3Q6IGFueSA9IFtdO1xyXG4gIGV4dGVuZFBheW1lbnRQZXJpb2REYXlzOiAwO1xyXG4gIHBheW1lbnRpbnZvaWNlc2hvdzogYm9vbGVhbiA9IHRydWVcclxuICByYWRpb2J1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHJhZGlvb3B0aW9uczogYW55ID0gJ2JlZm9yZTE1J1xyXG4gIGNsaWVudElkOiBzdHJpbmcgPSAnJztcclxuICBhdXRoID0gdHJ1ZTtcclxuICBsb2FkaW5nOmJvb2xlYW49dHJ1ZTtcclxuICBub0RhdGE6Ym9vbGVhbiA9ZmFsc2U7XHJcbiAgcHJpY2VOb0RhdGE6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHByaWNlTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuIFxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLCBwcml2YXRlIGZiOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSBQYXltZW50U3Vic2NyaXB0aW9uU2VydmljZTogUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2UsIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHRvYXN0OiBUb2FzdFNlcnZpY2UsIHB1YmxpYyBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZlxyXG4gICkge1xyXG4gICAgdGhpcy5QYXltZW50U3Vic2NyaXB0aW9uU2VydmljZS5wYXltZW50aW52b2ljZUZvcm1EYXRhLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgaWYgKHJlcy50eXBlID09PSAnaW5wdXQnICYmIHJlcy5mb3JtID09PSAncGF5bWVudC1pbnZvaWNlJykge1xyXG4gICAgICAgICAgdGhpcy5nZXRwYXltZW50aW52b2ljZShyZXMudmFsdWUpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmN1cnJlbnRwbGFuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBzdG9yZWNvdW50OiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBhdmdzcWZ0OiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBjYW1lcmFjb3VudDogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5wYXltZW50aW52b2ljZWZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgcmFkaW9vcHRpb25zOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWQsXSxcclxuICAgICAgcGF5bWVudGN5Y2xlOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBpbnZvaWNlVG86IFsnJ10sXHJcbiAgICAgIGdlbmVyYXRlaW52b2ljZW9uOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBwYXltZW50dHlwZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgY3VycmVuY3k6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgIHBheW1lbnRBZ3JlZW1lbnRUbzogWycnXSxcclxuICAgICAgZXh0ZW5kUGF5bWVudFBlcmlvZERheXM6IFsnJ10sXHJcbiAgICB9KTtcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWUucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgdGhpcy5jbGllbnRJZCA9IGRhdGEuY2xpZW50O1xyXG4gICAgICAgIHRoaXMuZHluYW1pY0RhdGEuY2xpZW50SWQgPSB0aGlzLmNsaWVudElkXHJcbiAgICAgICAgdGhpcy5nZXRQcmljaW5nKCdzdGFuZGFyZCcpO1xyXG4gICAgICAgIHRoaXMuZ2V0UHJvZHVjdExpc3QoKTtcclxuICAgICAgICB0aGlzLmZpbHRlckxpc3QoKTtcclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkxpc3QoKTtcclxuICAgICAgICB0aGlzLmNsaWVudEJpbGxpbmdJbmZvKHRoaXMuY2xpZW50SWQpO1xyXG4gICAgICAgIHRoaXMuZ2V0cGF5bWVudGludm9pY2UodGhpcy5jbGllbnRJZCk7XHJcbiAgICAgICAgdGhpcy5wYXltZW50aW52b2ljZWZvcm0uZGlzYWJsZSgpXHJcbiAgICAgICAgdGhpcy5pbnZvaWNlVGFibGVEYXRhKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucGF5bWVudGludm9pY2Vmb3JtLmdldCgnaW52b2ljZVRvJyk/LnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoKHZhbCkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiRnZW5lcmF0ZWludm9pY2VJbnRlcnJ1cHQucGlwZShtYXAoKGludGVycnVwdCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGludGVycnVwdCA9PT0gJ0VudGVyJykge1xyXG4gICAgICAgICAgICB0aGlzLiRnZW5lcmF0ZWludm9pY2VJbnRlcnJ1cHQubmV4dCgnJylcclxuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZWludm9pY2VMaXN0LnB1c2godmFsKVxyXG4gICAgICAgICAgICB0aGlzLnBheW1lbnRpbnZvaWNlZm9ybS5nZXQoJ2ludm9pY2VUbycpPy5zZXRWYWx1ZSgnJylcclxuICAgICAgICAgIH0gZWxzZSBpZiAoaW50ZXJydXB0ID09PSAnQmFja3NwYWNlJyAmJiAhdmFsICYmIHRoaXMuZ2VuZXJhdGVpbnZvaWNlTGlzdC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZWludm9pY2VMaXN0LnBvcCgpXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSkpXHJcbiAgICAgIH0pXHJcbiAgICApLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKVxyXG5cclxuICAgIHRoaXMucGF5bWVudGludm9pY2Vmb3JtLmdldCgncGF5bWVudEFncmVlbWVudFRvJyk/LnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoKHZhbCkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiRzZW5kcGF5bWVudEludGVycnVwdC5waXBlKG1hcCgoaW50ZXJydXB0KSA9PiB7XHJcbiAgICAgICAgICBpZiAoaW50ZXJydXB0ID09PSAnRW50ZXInKSB7XHJcbiAgICAgICAgICAgIHRoaXMuJHNlbmRwYXltZW50SW50ZXJydXB0Lm5leHQoJycpXHJcbiAgICAgICAgICAgIHRoaXMucGF5bWVudGFsbG93ZWRMaXN0LnB1c2godmFsKVxyXG4gICAgICAgICAgICB0aGlzLnBheW1lbnRpbnZvaWNlZm9ybS5nZXQoJ3BheW1lbnRBZ3JlZW1lbnRUbycpPy5zZXRWYWx1ZSgnJylcclxuICAgICAgICAgIH0gZWxzZSBpZiAoaW50ZXJydXB0ID09PSAnQmFja3NwYWNlJyAmJiAhdmFsICYmIHRoaXMucGF5bWVudGFsbG93ZWRMaXN0Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLnBheW1lbnRhbGxvd2VkTGlzdC5wb3AoKVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pKVxyXG4gICAgICB9KVxyXG4gICAgKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKClcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcmVjZWl2ZURhdGEoZGF0YTogYW55KSB7XHJcbiAgICBkYXRhLmZvckVhY2goKGl0ZW06YW55KSA9PiB7XHJcbiAgICAgIGlmIChpdGVtLkRlc2NyaXB0aW9uID09ICdQcm9kdWN0cycpIHtcclxuICAgICAgICBsZXQgcHJvZHVjdCA9IGl0ZW0uSXNzdWVzLm1hcCgocHJvZHVjdDphbnkpID0+IHByb2R1Y3QudGV4dCk7XHJcbiAgICAgICAgdGhpcy5keW5hbWljRGF0YS5wcm9kdWN0ID0gcHJvZHVjdDtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaXRlbS5EZXNjcmlwdGlvbiA9PSAnU3RvcmUnKSB7XHJcbiAgICAgICAgbGV0IHN0b3JlID0gaXRlbS5Jc3N1ZXMubWFwKChzdG9yZTogYW55KSA9PiBzdG9yZS5pZCk7XHJcbiAgICAgICAgdGhpcy5keW5hbWljRGF0YS5zdG9yZSA9IHN0b3JlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChpdGVtLkRlc2NyaXB0aW9uID09ICdMb2NhdGlvbicpIHtcclxuICAgICAgICBsZXQgbG9jYXRpb24gPSBpdGVtLklzc3Vlcy5tYXAoKGxvY2F0aW9uOiBhbnkpID0+IGxvY2F0aW9uLnRleHQpO1xyXG4gICAgICAgIHRoaXMuZHluYW1pY0RhdGEubG9jYXRpb24gPSBsb2NhdGlvbjtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIHRoaXMuZ2V0U3RvcmVMaXN0KCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RQbGFuKHBsYW46IHN0cmluZykge1xyXG4gICAgdGhpcy5wbGFuID0gcGxhbjtcclxuICAgIHRoaXMudmlld3BsYW5Jc3N1ZSA9IFwiUHJvZHVjdCBMZXZlbCBWaWV3XCJcclxuICB9XHJcblxyXG4gIHNlbGVjdFByaWNlUGxhbihwcmljaW5ncGxhbjogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnByaWNpbmdwbGFuID0gcHJpY2luZ3BsYW47XHJcbiAgICB0aGlzLmdldFByaWNpbmcocHJpY2luZ3BsYW4pXHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0Q29sb3JDbGFzcyhwcm9kdWN0OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgc3dpdGNoIChwcm9kdWN0KSB7XHJcbiAgICAgIGNhc2UgJ3RhbmdvVHJhZmZpYyc6IHJldHVybiAnYmFkZ2UgcHJvZHVjdC10cmFmZmljIG14LTEnO1xyXG4gICAgICBjYXNlICd0YW5nb1pvbmUnOiByZXR1cm4gJ2JhZGdlIHByb2R1Y3Qtem9uZSBteC0xJztcclxuICAgICAgY2FzZSAndGFuZ29Tb3AnOiByZXR1cm4gJ2JhZGdlIHByb2R1Y3Qtc29wIG14LTEnO1xyXG4gICAgICBjYXNlICdwcmlvcml0eVN1cHBvcnQnOiByZXR1cm4gJ2JhZGdlIHByaW9yaXR5c3VwcG9ydCBteC0xJztcclxuICAgICAgZGVmYXVsdDogcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0SXRlbSh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkSXNzdWUgPSB2YWx1ZTtcclxuXHJcbiAgICB0aGlzLnBheW1lbnRpbnZvaWNlZm9ybS5nZXQoJ2Ryb3Bkb3duSXRlbXMnKT8uc2V0VmFsdWUodGhpcy5zZWxlY3RlZElzc3VlKVxyXG4gICAgdGhpcy5kcm9wRG93biA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgaW52b2ljZUl0ZW0oaW52b2ljZXZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuaW52b2ljZW9uSXNzdWUgPSBpbnZvaWNldmFsdWU7XHJcbiAgICB0aGlzLnBheW1lbnRpbnZvaWNlZm9ybS5nZXQoJ2dlbmVyYXRlaW52b2ljZW9uJyk/LnNldFZhbHVlKHRoaXMuaW52b2ljZW9uSXNzdWUpXHJcbiAgICB0aGlzLmludm9pY2Vkcm9wRG93biA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcGF5bWVudEl0ZW0ocGF5bWVudHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMucGF5bWVudElzc3VlID0gcGF5bWVudHZhbHVlO1xyXG4gICAgdGhpcy5wYXltZW50aW52b2ljZWZvcm0uZ2V0KCdwYXltZW50dHlwZScpPy5zZXRWYWx1ZSh0aGlzLnBheW1lbnRJc3N1ZSlcclxuICAgIHRoaXMucGF5bWVudHR5cGVkcm9wRG93biA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgY3VycmVuY3lJdGVtKGN1cnJlbmN5dmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5jdXJyZW5jeUlzc3VlID0gY3VycmVuY3l2YWx1ZTtcclxuICAgIHRoaXMucGF5bWVudGludm9pY2Vmb3JtLmdldCgnY3VycmVuY3l0eXBlJyk/LnNldFZhbHVlKHRoaXMuY3VycmVuY3lJc3N1ZSlcclxuICAgIHRoaXMuY3VycmVuY3lkcm9wRG93biA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJvZHVjdHRyYWlsSXRlbShwcm9kdWN0dHJhaWx2YWx1ZTogYW55LCBkYXRhOiBhbnkpIHtcclxuXHJcbiAgICBpZiAocHJvZHVjdHRyYWlsdmFsdWUgPT0gJ0V4dGVuZCBUcmFpbCcpIHtcclxuICAgICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKFRyYWlsU2V0dGluZ3NDb21wb25lbnQsIHtcclxuICAgICAgICBjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ21kJyxcclxuICAgICAgfSk7XHJcbiAgICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnNldHRpbmdzdmFsdWUgPSBwcm9kdWN0dHJhaWx2YWx1ZTtcclxuICAgICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQudGl0bGUgPT0gJ3RyYWlsZXh0ZW5kJykge1xyXG4gICAgICAgICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWQsXHJcbiAgICAgICAgICAgIGRheXM6IHJlc3VsdC5jb3VudCxcclxuICAgICAgICAgICAgcHJvZHVjdDogZGF0YS5wcm9kdWN0XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLlBheW1lbnRTdWJzY3JpcHRpb25TZXJ2aWNlLnRyaWFsRXh0ZW50QXBwcm92YWwocGFyYW1zKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0U3VjY2Vzc1RvYXN0KGAke2RhdGEubmFtZX0gdHJpYWwgZXh0ZW5kZWQgc3VjY2Vzc2Z1bGx5YCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICB9IGVsc2UgaWYgKHByb2R1Y3R0cmFpbHZhbHVlID09ICdTdWJzY3JpYmUgUHJvZHVjdCcpIHtcclxuICAgICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKFRyYWlsU2V0dGluZ3NDb21wb25lbnQsIHtcclxuICAgICAgICBjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ21kJyxcclxuICAgICAgfSk7XHJcbiAgICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnNldHRpbmdzdmFsdWUgPSBwcm9kdWN0dHJhaWx2YWx1ZTtcclxuICAgICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQgPT0gJ3N1YnNjcmliZWQnKSB7XHJcbiAgICAgICAgICBsZXQgcGFyYW1zID0ge1xyXG4gICAgICAgICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcclxuICAgICAgICAgICAgcHJvZHVjdDogW1xyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHR5cGU6ICdzdWJzY3JpcHRpb24nLFxyXG4gICAgICAgICAgICAgICAgbmFtZTogZGF0YS5wcm9kdWN0XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLlBheW1lbnRTdWJzY3JpcHRpb25TZXJ2aWNlLnVwZGF0ZVByb2R1Y3QocGFyYW1zKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0U3VjY2Vzc1RvYXN0KGAke2RhdGEubmFtZX0gc3VjY2Vzc2Z1bGx5IGFkZGVkIHRvIHRoZSBwcm9kdWN0IHN1YnNjcmlwdGlvbiBsaXN0LmApO1xyXG4gICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uTGlzdCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnByb2R1Y3R0cmFpbElzc3VlID0gcHJvZHVjdHRyYWlsdmFsdWU7XHJcbiAgICB0aGlzLnByb2R1Y3R0cmFpbGRyb3BEb3duID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICB2aWV3cGxhbkl0ZW0odmlld3BsYW52YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLmR5bmFtaWNEYXRhLm9mZnNldCA9IDE7XHJcbiAgICB0aGlzLnZpZXdwbGFuSXNzdWUgPSB2aWV3cGxhbnZhbHVlO1xyXG4gICAgaWYgKHZpZXdwbGFudmFsdWUgPT0gJ1Byb2R1Y3QgTGV2ZWwgVmlldycpIHtcclxuICAgICAgdGhpcy5nZXRQcm9kdWN0TGlzdCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuZ2V0U3RvcmVMaXN0KCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnZpZXdwbGFuZHJvcERvd24gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZSgpIHtcclxuICAgIGNvbnN0IHJlc3BvbnNlRGF0YSA9IHtcclxuICAgICAgYnJhbmROYW1lOiB0aGlzLmNsaWVudGluZm8uY2xpZW50TmFtZSxcclxuICAgICAgZ3N0TnVtYmVyOiB0aGlzLmNsaWVudGluZm8uYmlsbGluZ0RldGFpbHMuZ3N0TnVtYmVyLFxyXG4gICAgICBiaWxsaW5nQWRkcmVzczogdGhpcy5jbGllbnRpbmZvLmJpbGxpbmdEZXRhaWxzLmJpbGxpbmdBZGRyZXNzLFxyXG4gICAgICBjbGllbnRJZDp0aGlzLmNsaWVudElkXHJcbiAgICB9O1xyXG4gICAgbGV0IG1vZGVsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihVcGRhdGVDb21wb25lbnQsIHsgY2VudGVyZWQ6IHRydWUsIHNpemU6ICdtZCcgfSk7XHJcbiAgICBtb2RlbFJlZi5jb21wb25lbnRJbnN0YW5jZS5tb2RhbERhdGEgPSByZXNwb25zZURhdGE7XHJcbiAgfVxyXG5cclxuICBuZWVkaGVscCgpIHtcclxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihOZWVkSGVscENvbXBvbmVudCwge1xyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ21kJyxcclxuICAgIH0pO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuY2xpZW50SWQgPSB0aGlzLmNsaWVudElkO1xyXG4gICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdXBncmFkZXBsYW4oKSB7XHJcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oVXBncmFkZVBsYW5Db21wb25lbnQsIHtcclxuICAgICAgY2VudGVyZWQ6IHRydWUsIHNpemU6ICdsZydcclxuICAgIH0pO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuY2xpZW50SWQgPSB0aGlzLmNsaWVudElkO1xyXG4gICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBcclxuICBjcmVkaXRub3RlKCkge1xyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKENyZWRpdE5vdGVDb21wb25lbnQsIHtcclxuICAgICAgY2VudGVyZWQ6IHRydWUsXHJcbiAgICAgIHNpemU6ICdtZCcsXHJcbiAgICAgIHNjcm9sbGFibGU6IHRydWVcclxuICAgIH0pO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuY2xpZW50SWQgPSB0aGlzLmNsaWVudElkO1xyXG4gICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0ID09ICdzdWNjZXNzY3JlZGl0Jykge1xyXG4gICAgICAgIHRoaXMudG9hc3QuZ2V0UHJpbWFyeVRvYXN0KCdUaGUgaW52b2ljZSBoYXMgYmVlbiBzZW50IHRvIHRoZSByZXNwZWN0aXZlIGVtYWlsIElEcyB3aXRoIHRoZSBkaXNjb3VudC4nKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpY2luZ3JldmlzZWQoKSB7XHJcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oUHJpY2luZ1JldmlzZWRDb21wb25lbnQsIHtcclxuICAgICAgY2VudGVyZWQ6IHRydWUsIHNjcm9sbGFibGU6IHRydWUsIHNpemU6ICdsZydcclxuICAgIH0pO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UucHJvZHVjdE5ld0RldGFpbHMgPSB0aGlzLnByaWNlVmFsdWVEZXRhaWxzO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UucHJvZHVjdE9sZERldGFpbHMgPSB0aGlzLm9yaWdpbmFsUHJpY2VWYWx1ZTtcclxuICAgIG1vZGFsUmVmLnJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCA9PSAnc2F2ZScpIHtcclxuICAgICAgICBsZXQgcGFyYW1zID0ge1xyXG4gICAgICAgICAgdHlwZTogdGhpcy5wcmljaW5ncGxhbixcclxuICAgICAgICAgIGNsaWVudElkOiB0aGlzLmNsaWVudElkLFxyXG4gICAgICAgICAgcHJvZHVjdHM6IHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLlBheW1lbnRTdWJzY3JpcHRpb25TZXJ2aWNlLnVwZGF0ZVByaWNpbmcocGFyYW1zKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgU3dhbC5maXJlKHtcclxuICAgICAgICAgICAgICBpY29uSHRtbDogYDxpbWcgIHNyYz1cIi4uLy4uLy4uLy4uL2Fzc2V0cy90YW5nby90b2FzdC1pY29ucy9FbnZlbG9wZS1PcGVuLWljb24uc3ZnXCI+YCxcclxuICAgICAgICAgICAgICBodG1sOiBgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBtdC01XCI+PGRpdiBjbGFzcz1cInRvYXN0dGl0aWxlXCI+UmV2aXNlZCBjaGFuZ2VzIGhhdmUgYmVlbiB1cGRhdGVkPC9kaXY+PC9kaXY+YCxcclxuICAgICAgICAgICAgICB0b2FzdDogdHJ1ZSxcclxuICAgICAgICAgICAgICBwb3NpdGlvbjogJ2JvdHRvbScsXHJcbiAgICAgICAgICAgICAgc2hvd0NvbmZpcm1CdXR0b246IGZhbHNlLFxyXG4gICAgICAgICAgICAgIHNob3dDbG9zZUJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgICAgICB0aW1lcjogNjAwMCxcclxuICAgICAgICAgICAgICB0aW1lclByb2dyZXNzQmFyOiB0cnVlLFxyXG4gICAgICAgICAgICAgIGN1c3RvbUNsYXNzOiAnY3VzdG9tLXRvYXN0LWNvbnRhaW5lcicsXHJcbiAgICAgICAgICAgICAgZGlkT3BlbjogKHRvYXN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0b2FzdC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgU3dhbC5zdG9wVGltZXIpXHJcbiAgICAgICAgICAgICAgICB0b2FzdC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgU3dhbC5yZXN1bWVUaW1lcilcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcmljaW5nVHlwZShldmVudDogYW55LCBwcmljaW5nOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2VsZWN0ID0gcHJpY2luZztcclxuICAgIHRoaXMucmFkaW9vcHRpb25zID0gcHJpY2luZ1xyXG4gIH1cclxuICBcclxuICBvbktleURvd24oZXZlbnQ6YW55KXtcclxuICAgIHRoaXMuJGdlbmVyYXRlaW52b2ljZUludGVycnVwdC5uZXh0KGV2ZW50LmNvZGUpXHJcbiAgfVxyXG5cclxuICByZW1vdmVDaGlwKGk6IG51bWJlcikge1xyXG4gICAgdGhpcy5nZW5lcmF0ZWludm9pY2VMaXN0LnNwbGljZShpLCAxKVxyXG4gIH1cclxuXHJcbiAgc2VuZHBheW1lbnRvbktleURvd24oZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy4kc2VuZHBheW1lbnRJbnRlcnJ1cHQubmV4dChldmVudC5jb2RlKVxyXG4gIH1cclxuXHJcbiAgc2VuZHBheW1lbnRyZW1vdmVDaGlwKGk6IG51bWJlcikge1xyXG4gICAgdGhpcy5wYXltZW50YWxsb3dlZExpc3Quc3BsaWNlKGksIDEpXHJcbiAgfVxyXG5cclxuICBjbGllbnRCaWxsaW5nSW5mbyhpZDogYW55KSB7XHJcbiAgICB0aGlzLlBheW1lbnRTdWJzY3JpcHRpb25TZXJ2aWNlLmNsaWVudEJpbGxpbmdJbmZvKGlkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgIHRoaXMuY2xpZW50aW5mbyA9IHJlcy5kYXRhO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuICB9XHJcblxyXG4gIG9wZW5Ecm9wZG93bihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLmRyb3BEb3duID0gIXRoaXMuZHJvcERvd247XHJcbiAgICB0aGlzLnBheW1lbnR0eXBlZHJvcERvd24gPSBmYWxzZTtcclxuICAgIHRoaXMuY3VycmVuY3lkcm9wRG93biA9IGZhbHNlO1xyXG4gICAgdGhpcy5pbnZvaWNlZHJvcERvd24gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGludm9pY2VEcm9wZG93bihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLnBheW1lbnR0eXBlZHJvcERvd24gPSBmYWxzZTtcclxuICAgIHRoaXMuY3VycmVuY3lkcm9wRG93biA9IGZhbHNlO1xyXG4gICAgdGhpcy5kcm9wRG93biA9IGZhbHNlO1xyXG4gICAgdGhpcy5pbnZvaWNlZHJvcERvd24gPSAhdGhpcy5pbnZvaWNlZHJvcERvd247XHJcbiAgfVxyXG5cclxuICBwYXltZW50dHlwZURyb3Bkb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuaW52b2ljZWRyb3BEb3duID0gZmFsc2U7XHJcbiAgICB0aGlzLmN1cnJlbmN5ZHJvcERvd24gPSBmYWxzZTtcclxuICAgIHRoaXMuZHJvcERvd24gPSBmYWxzZTtcclxuICAgIHRoaXMucGF5bWVudHR5cGVkcm9wRG93biA9ICF0aGlzLnBheW1lbnR0eXBlZHJvcERvd247XHJcbiAgfVxyXG5cclxuICBjdXJyZW5jeURyb3Bkb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuY3VycmVuY3lkcm9wRG93biA9ICF0aGlzLmN1cnJlbmN5ZHJvcERvd247XHJcbiAgICB0aGlzLnBheW1lbnR0eXBlZHJvcERvd24gPSBmYWxzZTtcclxuICAgIHRoaXMuaW52b2ljZWRyb3BEb3duID0gZmFsc2U7XHJcbiAgICB0aGlzLmRyb3BEb3duID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICB2aWV3cGxhbkRyb3Bkb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMudmlld3BsYW5kcm9wRG93biA9ICF0aGlzLnZpZXdwbGFuZHJvcERvd247XHJcbiAgfVxyXG4gIFxyXG4gIHByb2R1Y3R0cmFpbERyb3Bkb3duKGV2ZW50OiBNb3VzZUV2ZW50LCBpbmRleDogYW55KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMubm90aWZpY2F0aW9uRGV0YWlscy5ub3RpZmljYXRpb25MaXN0LmZvckVhY2goKGl0ZW06YW55KSA9PiB7XHJcbiAgICAgIGl0ZW0ucHJvZHVjdHRyYWlsZHJvcERvd24gPSBmYWxzZTtcclxuICAgIH0pXHJcbiAgICB0aGlzLm5vdGlmaWNhdGlvbkRldGFpbHMubm90aWZpY2F0aW9uTGlzdFtpbmRleF0ucHJvZHVjdHRyYWlsZHJvcERvd24gPSAhdGhpcy5ub3RpZmljYXRpb25EZXRhaWxzLm5vdGlmaWNhdGlvbkxpc3RbaW5kZXhdLnByb2R1Y3R0cmFpbGRyb3BEb3duXHJcbiAgfVxyXG5cclxuICBza2lwdHJhaWwoKSB7XHJcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oU2tpcFRyYWlsQ29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLCBzaXplOiAnbWQnLCBzY3JvbGxhYmxlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIG1vZGFsUmVmLnJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCA9PSAnc3Vic2NyaWJlZCcpIHtcclxuICAgICAgICB0aGlzLnRvYXN0LmdldFN1Y2Nlc3NUb2FzdCgnPCBUYW5nbyBTT1AgPiBzdWNjZXNzZnVsbHkgYWRkZWQgdG8gdGhlIHByb2R1Y3Qgc3Vic2NyaXB0aW9uIGxpc3QuJylcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhZGRzdGVwcHJpY2UoZGF0YTogYW55LCBwcm9kdWN0OiBhbnkgPSB7fSwgaW5kZXg6IGFueSA9IC0xKSB7XHJcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oQWRkU3RlcHByaWNlQ29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLCBzY3JvbGxhYmxlOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICBpZiAoZGF0YSA9PSAnYWRkJykge1xyXG4gICAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5zdGVwcHJpY2V0aXRsZSA9IFwiQWRkIFN0ZXAgUHJpY2VcIjtcclxuICAgICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2Uuc3RlcHByaWNlZGVzY3JpcHRpb24gPSBcIlBsZWFzZSBlbnRlciBubyBvZiBzdG9yZSAgdG8gYmUgYWRkZWQgaW4gbmV4dCBzdGVwIHByaWNlIGluIGludGVydmFscyBcIjtcclxuICAgICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2Uuc3RlcHByaWNlaWNvbiA9IFwiLi9hc3NldHMvdGFuZ28vY3VzdG9tcG9wdXAtSWNvbnMvcGx1cy1pY29uLnN2Z1wiO1xyXG4gICAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5zdGVwcHJpY2VidXR0b24gPSBcIkFwcGx5XCI7XHJcbiAgICB9XHJcbiAgICBpZiAoZGF0YSA9PSAnZWRpdCcpIHtcclxuICAgICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2Uuc3RlcHByaWNldGl0bGUgPSBcIkVkaXQgU3RlcCBQcmljZVwiO1xyXG4gICAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5zdGVwcHJpY2VkZXNjcmlwdGlvbiA9IFwiUGxlYXNlIGVudGVyIG5vIG9mIHN0b3JlICB0byBiZSBhZGRlZCBpbiBuZXh0IHN0ZXAgcHJpY2UgaW4gaW50ZXJ2YWxzIFwiO1xyXG4gICAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5zdGVwcHJpY2VpY29uID0gXCIuL2Fzc2V0cy90YW5nby9jdXN0b21wb3B1cC1JY29ucy9lZGl0LWljb24uc3ZnXCI7XHJcbiAgICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnN0ZXBwcmljZWJ1dHRvbiA9IFwiVXBkYXRlXCI7XHJcbiAgICB9XHJcbiAgICBpZiAoZGF0YSA9PSAnZGVsZXRlJykge1xyXG4gICAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5zdGVwcHJpY2V0aXRsZSA9IFwiZGVsZXRlXCI7XHJcbiAgICB9XHJcbiAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQudGl0bGUgPT0gJ0FkZCBTdGVwIFByaWNlJykge1xyXG5cclxuICAgICAgICBsZXQgcHJvZHVjdHMgPSBbLi4ubmV3IFNldCh0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3QubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IGl0ZW0ucHJvZHVjdE5hbWUpKV1cclxuXHJcbiAgICAgICAgcHJvZHVjdHMuZm9yRWFjaCgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICBsZXQgcHJvZHVjdERldGFpbHMgPSB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3QuZmluZCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtLnByb2R1Y3ROYW1lID09IGRhdGEgJiYgaXRlbT8ubGFzdEluZGV4KSB7XHJcbiAgICAgICAgICAgICAgaXRlbS5pbmRleCA9IGluZGV4O1xyXG4gICAgICAgICAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGxldCBpbmRleCA9IHByb2R1Y3REZXRhaWxzLmluZGV4O1xyXG4gICAgICAgICAgZGVsZXRlIHByb2R1Y3REZXRhaWxzLmluZGV4O1xyXG4gICAgICAgICAgbGV0IGl0ZW0gPSBwcm9kdWN0RGV0YWlscztcclxuICAgICAgICAgIGxldCByYW5nZSA9IGl0ZW0uc3RvcmVSYW5nZS5zcGxpdCgnLScpO1xyXG4gICAgICAgICAgbGV0IGRpZmZlciA9IChwYXJzZUludChyYW5nZVsxXSkgLSBwYXJzZUludChyYW5nZVswXSkpICsgMTtcclxuICAgICAgICAgIGRlbGV0ZSB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLmxhc3RJbmRleDtcclxuICAgICAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0uc2hvd0VkaXREZWxldGUgPSBmYWxzZVxyXG4gICAgICAgICAgbGV0IG5ld0l0ZW0gPSB7IC4uLml0ZW0gfTtcclxuICAgICAgICAgIGxldCBuZXdTdGFydFJhbmdlID0gcGFyc2VJbnQocmFuZ2VbMV0pICsgMTtcclxuICAgICAgICAgIGxldCBuZXdFbmRSYW5nZSA9IG5ld1N0YXJ0UmFuZ2UgKyBwYXJzZUludChyZXN1bHQuaW50cmF2ZWwpIC0gMTtcclxuXHJcbiAgICAgICAgICBuZXdJdGVtLnNob3dJbWcgPSB0cnVlXHJcbiAgICAgICAgICBuZXdJdGVtLnNob3dFZGl0RGVsZXRlID0gdHJ1ZVxyXG4gICAgICAgICAgbmV3SXRlbS5sYXN0SW5kZXggPSB0cnVlO1xyXG4gICAgICAgICAgbmV3SXRlbS5zdG9yZUNvdW50ID0gdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5zdG9yZUNvdW50IC0gZGlmZmVyO1xyXG4gICAgICAgICAgbmV3SXRlbS5wcmljZSA9IG5ld0l0ZW0uc3RvcmVDb3VudCAqIChuZXdJdGVtLmJhc2VQcmljZSAtIG5ld0l0ZW0ubmVnb3RpYXRlUHJpY2UpXHJcbiAgICAgICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLnN0b3JlQ291bnQgPSBkaWZmZXI7XHJcbiAgICAgICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLnByaWNlID0gdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5zdG9yZUNvdW50ICogKHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0uYmFzZVByaWNlIC0gdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5uZWdvdGlhdGVQcmljZSk7XHJcblxyXG4gICAgICAgICAgbmV3SXRlbS5zdG9yZVJhbmdlID0gbmV3U3RhcnRSYW5nZS50b1N0cmluZygpICsgJy0nICsgbmV3RW5kUmFuZ2UudG9TdHJpbmcoKTtcclxuICAgICAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdC5zcGxpY2UoaW5kZXggKyAxLCAwLCBuZXdJdGVtKVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgbGV0IHByaWNlID0gMDtcclxuICAgICAgICBsZXQgYWN0dWFsUHJpY2UgPSAwO1xyXG4gICAgICAgIGxldCBuZWdvdGlhdGVQcmljZSA9IDA7XHJcbiAgICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0LmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgcHJpY2UgPSBwcmljZSArIGl0ZW0ucHJpY2U7XHJcbiAgICAgICAgICBhY3R1YWxQcmljZSA9IGFjdHVhbFByaWNlICsgaXRlbS5iYXNlUHJpY2U7XHJcbiAgICAgICAgICBuZWdvdGlhdGVQcmljZSA9IG5lZ290aWF0ZVByaWNlICsgaXRlbS5uZWdvdGlhdGVQcmljZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnRvdGFsTmVnb3RpYXRlUHJpY2UgPSBwcmljZTtcclxuICAgICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLmFjdHVhbFByaWNlID0gYWN0dWFsUHJpY2U7XHJcbiAgICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5uZWdvdGlhdGVQcmljZSA9IG5lZ290aWF0ZVByaWNlO1xyXG4gICAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMuZmluYWxWYWx1ZSA9IHRoaXMucHJpY2VWYWx1ZURldGFpbHMudG90YWxOZWdvdGlhdGVQcmljZSAqICgxOCAvIDEwMCk7XHJcblxyXG4gICAgICAgIHRoaXMudG9hc3QuZ2V0U3VjY2Vzc1RvYXN0KCdTdGVwIFByaWNlIGhhcyBiZWVuIGFkZGVkIHN1Y2Nlc3NmdWxseS4nKVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChyZXN1bHQudGl0bGUgPT0gJ0VkaXQgU3RlcCBQcmljZScpIHtcclxuICAgICAgICBsZXQgcmFuZ2UgPSB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLnN0b3JlUmFuZ2Uuc3BsaXQoJy0nKTtcclxuICAgICAgICBsZXQgZW5kID0gcGFyc2VJbnQocmFuZ2VbMF0pICsgKHBhcnNlSW50KHJlc3VsdC5pbnRyYXZlbCkgLSAxKTtcclxuICAgICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLnN0b3JlUmFuZ2UgPSByYW5nZVswXS50b1N0cmluZygpICsgJy0nICsgZW5kLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdC5nZXRTdWNjZXNzVG9hc3QoJ1N0ZXAgUHJpY2UgaGFzIGJlZW4gVXBkYXRlZCBzdWNjZXNzZnVsbHkuJylcclxuICAgICAgfVxyXG4gICAgICBpZiAocmVzdWx0LnRpdGxlID09ICdkZWxldGUnKSB7XHJcbiAgICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4IC0gMV0uc3RvcmVDb3VudCA9IHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleCAtIDFdLnN0b3JlQ291bnQgKyB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLnN0b3JlQ291bnQ7XHJcbiAgICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5hY3R1YWxQcmljZSA9IHRoaXMucHJpY2VWYWx1ZURldGFpbHMuYWN0dWFsUHJpY2UgLSB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLmJhc2VQcmljZTtcclxuICAgICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLm5lZ290aWF0ZVByaWNlID0gdGhpcy5wcmljZVZhbHVlRGV0YWlscy5uZWdvdGlhdGVQcmljZSAtIHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0ubmVnb3RpYXRlUHJpY2U7XHJcbiAgICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4IC0gMV0ucHJpY2UgPSAodGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4IC0gMV0uYmFzZVByaWNlIC0gdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4IC0gMV0ubmVnb3RpYXRlUHJpY2UpICogdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4IC0gMV0uc3RvcmVDb3VudDtcclxuXHJcbiAgICAgICAgbGV0IHByb2R1Y3RJbmZvID0gdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0LmZpbHRlcigoKGl0ZW06IGFueSkgPT4gaXRlbS5wcm9kdWN0TmFtZSA9PSB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLnByb2R1Y3ROYW1lKSlcclxuICAgICAgICBpZiAocHJvZHVjdEluZm8ubGVuZ3RoID4gMikge1xyXG4gICAgICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4IC0gMV0uc2hvd0ltZyA9IHRydWVcclxuICAgICAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleCAtIDFdLnNob3dFZGl0RGVsZXRlID0gdHJ1ZVxyXG4gICAgICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4IC0gMV0ubGFzdEluZGV4ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdC5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIGxldCBwcmljZSA9IDA7XHJcbiAgICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0LmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgcHJpY2UgPSBwcmljZSArIGl0ZW0ucHJpY2U7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMudG90YWxOZWdvdGlhdGVQcmljZSA9IHByaWNlO1xyXG4gICAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMuZmluYWxWYWx1ZSA9IHRoaXMucHJpY2VWYWx1ZURldGFpbHMudG90YWxOZWdvdGlhdGVQcmljZSAqICgxOCAvIDEwMCk7XHJcbiAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdDb2x1bW4gZGVsZXRlZCBzdWNjZXNzZnVsbHkuJylcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhcHByb3ZldHJpYWwoZGF0YTogYW55LCB0eXBlOiBzdHJpbmcpIHtcclxuICAgIGxldCBwYXJhbXMgPSB7XHJcbiAgICAgIGlkOiBkYXRhLl9pZCxcclxuICAgICAgdHlwZTogdHlwZVxyXG4gICAgfVxyXG4gICAgdGhpcy5QYXltZW50U3Vic2NyaXB0aW9uU2VydmljZS5hcHByb3ZlVHJpYWwocGFyYW1zKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgIHRoaXMudG9hc3QuZ2V0U3VjY2Vzc1RvYXN0KGAke2RhdGEubmFtZX0gdHJpYWwgaGFzIGJlZW4gYXBwcm92ZWQgc3VjY2Vzc2Z1bGx5LmApXHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25MaXN0KCk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBhcHByb3ZlVW5zdWJzY3JpYmUoZGF0YTogYW55LCB0eXBlOiBhbnkpIHtcclxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihVbnN1YnNjcmliZVJlcXVlc3RDb21wb25lbnQsIHtcclxuICAgICAgY2VudGVyZWQ6IHRydWUsIHNpemU6ICdtZCcsIHNjcm9sbGFibGU6IHRydWVcclxuICAgIH0pO1xyXG4gICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0ID09ICd1bnN1YnNjcmliZWQnKSB7XHJcbiAgICAgICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgICAgIGlkOiBkYXRhLl9pZCxcclxuICAgICAgICAgIHR5cGU6IHR5cGVcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hcHByb3ZlQ2FuY2VsVW5zdWJzY3JpYmUocGFyYW1zKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVDaXJjbGVDaGFydChkYXRhOiBhbnksIGluZGV4OiBhbnkpOiB2b2lkIHtcclxuICAgIGxldCBpZCA9ICdwcm9ncmVzcy1jaXJjbGUtJyArIGluZGV4O1xyXG4gICAgbGV0IHRleHQgPSAncGVyY2VudGFnZS10ZXh0LScgKyBpbmRleDtcclxuICAgIGNvbnN0IHByb2dyZXNzQ2lyY2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xyXG4gICAgY29uc3QgcGVyY2VudGFnZVRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0ZXh0KTtcclxuICAgIGlmIChwcm9ncmVzc0NpcmNsZSAmJiBwZXJjZW50YWdlVGV4dCkge1xyXG4gICAgICBjb25zdCBjaXJjdW1mZXJlbmNlID0gTWF0aC5QSSAqIDIgKiBwYXJzZUZsb2F0KHByb2dyZXNzQ2lyY2xlLmdldEF0dHJpYnV0ZSgncicpISk7XHJcbiAgICAgIGNvbnN0IGRhc2hhcnJheSA9IGNpcmN1bWZlcmVuY2U7XHJcbiAgICAgIGNvbnN0IGRhc2hvZmZzZXQgPSBjaXJjdW1mZXJlbmNlIC0gKGRhdGEgLyAxMDApICogY2lyY3VtZmVyZW5jZTtcclxuXHJcbiAgICAgIHByb2dyZXNzQ2lyY2xlLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLWRhc2hhcnJheScsIGRhc2hhcnJheS50b1N0cmluZygpKTtcclxuICAgICAgcHJvZ3Jlc3NDaXJjbGUuc2V0QXR0cmlidXRlKCdzdHJva2UtZGFzaG9mZnNldCcsIGRhc2hvZmZzZXQudG9TdHJpbmcoKSk7XHJcblxyXG4gICAgICBwZXJjZW50YWdlVGV4dC50ZXh0Q29udGVudCA9IGAke2RhdGF9JWA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRQcmljaW5nKGRhdGE6IGFueSkge1xyXG4gICAgdGhpcy5wcmljZUxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscyA9ICcnO1xyXG4gICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgcHJpY2VUeXBlOiBkYXRhLFxyXG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZFxyXG4gICAgfVxyXG4gICAgdGhpcy5QYXltZW50U3Vic2NyaXB0aW9uU2VydmljZS5nZXRQcmljZURldGFpbHMocGFyYW1zKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgIHRoaXMucHJpY2VMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5wcmljZU5vRGF0YSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMgPSByZXMuZGF0YTtcclxuICAgICAgICB0aGlzLm9yaWdpbmFsUHJpY2VWYWx1ZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5wcmljZVZhbHVlRGV0YWlscykpO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMucHJpY2VMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5wcmljZU5vRGF0YSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0sKGVycm9yOmFueSkgPT4ge1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIHRoaXMucHJpY2VMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucHJpY2VOb0RhdGEgPSB0cnVlO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGNhbGN1bGF0ZShpbmRleDogYW55LCB0eXBlOiBhbnkpIHtcclxuICAgIGlmICh0eXBlID09ICdkaXNjb3VudCcpIHtcclxuICAgICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5uZWdvdGlhdGVQcmljZSA9IHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0uYmFzZVByaWNlICogKHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0uZGlzY291bnRQZXJjZW50YWdlIC8gMTAwKVxyXG4gICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLnByaWNlID0gKHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0uYmFzZVByaWNlIC0gdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5uZWdvdGlhdGVQcmljZSkgKiB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLnN0b3JlQ291bnRcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLmRpc2NvdW50UGVyY2VudGFnZSA9ICh0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLm5lZ290aWF0ZVByaWNlIC8gdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5iYXNlUHJpY2UpICogMTAwXHJcbiAgICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0ucHJpY2UgPSAodGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0W2luZGV4XS5iYXNlUHJpY2UgLSB0aGlzLnByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3RbaW5kZXhdLm5lZ290aWF0ZVByaWNlKSAqIHRoaXMucHJpY2VWYWx1ZURldGFpbHMucHJvZHVjdFtpbmRleF0uc3RvcmVDb3VudFxyXG4gICAgfVxyXG4gICAgbGV0IG5lZ290aWF0ZVByaWNlID0gMDtcclxuICAgIGxldCBwcmljZSA9IDA7XHJcblxyXG4gICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5wcm9kdWN0LmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBwcmljZSA9IHByaWNlICsgaXRlbS5wcmljZTtcclxuICAgICAgbmVnb3RpYXRlUHJpY2UgPSBuZWdvdGlhdGVQcmljZSArIHBhcnNlSW50KGl0ZW0ubmVnb3RpYXRlUHJpY2UpXHJcbiAgICB9KVxyXG5cclxuICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMubmVnb3RpYXRlUHJpY2UgPSBuZWdvdGlhdGVQcmljZTtcclxuICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMudG90YWxOZWdvdGlhdGVQcmljZSA9IHByaWNlO1xyXG4gICAgdGhpcy5wcmljZVZhbHVlRGV0YWlscy5maW5hbFZhbHVlID0gdGhpcy5wcmljZVZhbHVlRGV0YWlscy50b3RhbE5lZ290aWF0ZVByaWNlICogKDE4IC8gMTAwKTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICB9XHJcbiAgXHJcbiAgZ2V0cGF5bWVudGludm9pY2UoaWQ6IGFueSkge1xyXG4gICAgdGhpcy5QYXltZW50U3Vic2NyaXB0aW9uU2VydmljZS5nZXRwYXltZW50aW52b2ljZShpZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICB0aGlzLnBheW1lbnRpbnZvaWNlaW5mbyA9IHJlcy5kYXRhO1xyXG4gICAgICAgIHRoaXMucGF5bWVudElzc3VlID0gcmVzLmRhdGEucGF5bWVudHR5cGU7XHJcbiAgICAgICAgdGhpcy5jdXJyZW5jeUlzc3VlID0gcmVzLmRhdGEuY3VycmVuY3lUeXBlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJc3N1ZSA9IHJlcy5kYXRhLnBheW1lbnRDeWNsZTtcclxuICAgICAgICB0aGlzLmludm9pY2Vvbklzc3VlID0gcmVzLmRhdGEuaW52b2ljZU9uO1xyXG4gICAgICAgIHRoaXMucGF5bWVudGludm9pY2Vmb3JtLmdldCgncmFkaW9vcHRpb25zJyk/LnNldFZhbHVlKHJlcy5kYXRhLnByb1JhdGUpO1xyXG4gICAgICAgIHRoaXMucGF5bWVudGludm9pY2Vmb3JtLnBhdGNoVmFsdWUoXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGZpbGVUeXBlOiByZXMuZGF0YS5maWxlVHlwZSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UsIG9ubHlTZWxmOiB0cnVlIH1cclxuICAgICAgICApXHJcblxyXG4gICAgICAgIHRoaXMuZ2VuZXJhdGVpbnZvaWNlTGlzdCA9IHJlcy5kYXRhPy5pbnZvaWNlVG9cclxuICAgICAgICB0aGlzLnBheW1lbnRhbGxvd2VkTGlzdCA9IHJlcy5kYXRhPy5wYXltZW50QWdyZWVtZW50VG9cclxuICAgICAgICB0aGlzLmV4dGVuZFBheW1lbnRQZXJpb2REYXlzID0gcmVzLmRhdGE/LmV4dGVuZFBheW1lbnRQZXJpb2REYXlzXHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBvbnBheW1lbnRTdWJtaXQoKSB7XHJcbiAgICB0aGlzLnBheW1lbnRpbnZvaWNlc2hvdyA9IHRydWVcclxuICAgIGNvbnN0IHJlcXVlc3REYXRhID0ge1xyXG4gICAgICBwcm9SYXRlOiB0aGlzLnJhZGlvb3B0aW9ucyxcclxuICAgICAgcGF5bWVudHR5cGU6IHRoaXMucGF5bWVudElzc3VlLFxyXG4gICAgICBwYXltZW50Q3ljbGU6IHRoaXMuc2VsZWN0ZWRJc3N1ZSxcclxuICAgICAgY3VycmVuY3lUeXBlOiB0aGlzLmN1cnJlbmN5SXNzdWUsXHJcbiAgICAgIGludm9pY2VUbzogdGhpcy5nZW5lcmF0ZWludm9pY2VMaXN0LFxyXG4gICAgICBwYXltZW50QWdyZWVtZW50VG86IHRoaXMucGF5bWVudGFsbG93ZWRMaXN0LFxyXG4gICAgICBpbnZvaWNlT246IHRoaXMuaW52b2ljZW9uSXNzdWUsXHJcbiAgICAgIGV4dGVuZFBheW1lbnRQZXJpb2REYXlzOiB0aGlzLmV4dGVuZFBheW1lbnRQZXJpb2REYXlzLFxyXG4gICAgfTtcclxuICAgIHRoaXMuUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2UuaW52b2ljZXVwZGF0ZShyZXF1ZXN0RGF0YSwgdGhpcy5jbGllbnRJZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICB0aGlzLnRvYXN0LmdldFByaW1hcnlUb2FzdChyZXMubWVzc2FnZSlcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKVxyXG4gICAgICAgIHRoaXMub25wYXltZW50Q2FuY2VsKClcclxuXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIC8vIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHN1Ym1pdHRpbmcgdXBkYXRlOicsIGVycm9yKTtcclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIG9ucGF5bWVudENhbmNlbCgpIHtcclxuICAgIHRoaXMuUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2UucGF5bWVudGludm9pY2VGb3JtRGF0YS5uZXh0KHsgdmFsdWU6IG51bGwsIHR5cGU6ICdjYW5jZWwnLCBmb3JtOiAncGF5bWVudC1pbnZvaWNlJyB9KVxyXG4gICAgdGhpcy5wYXltZW50aW52b2ljZXNob3cgPSB0cnVlXHJcbiAgICB0aGlzLmdldHBheW1lbnRpbnZvaWNlKHRoaXMuY2xpZW50SWQpO1xyXG4gICAgdGhpcy5wYXltZW50aW52b2ljZWZvcm0uZGlzYWJsZSgpXHJcbiAgfVxyXG5cclxuICBvbnBheW1lbnRlZGl0KCkge1xyXG4gICAgdGhpcy5wYXltZW50aW52b2ljZXNob3cgPSBmYWxzZVxyXG4gICAgdGhpcy5wYXltZW50aW52b2ljZWZvcm0uZW5hYmxlKClcclxuICB9XHJcblxyXG4gIGludm9pY2VUYWJsZURhdGEoKSB7XHJcbiAgICBsZXQgZmlsdGVyczogUmVjb3JkPHN0cmluZywgYW55PiA9IHtcclxuICAgICAgbGltaXQ6IHRoaXMucGFnZVNpemUsXHJcbiAgICAgIG9mZnNldDogdGhpcy5jdXJyZW50UGFnZSxcclxuICAgICAgZmlsdGVyOiB0aGlzLmlzRmlsdGVyLFxyXG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcclxuICAgICAgc2VhcmNoVmFsdWU6IHRoaXMuc2VhcmNoSW5wdXQsXHJcbiAgICAgIGV4cG9ydDogZmFsc2VcclxuICAgIH1cclxuICAgIHRoaXMuUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2UuaW52b2ljZVRhYmxlRGF0YShmaWx0ZXJzKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKGUpID0+IHtcclxuICAgICAgICBpZiAoZT8uZGF0YT8uY291bnQpIHtcclxuXHJcbiAgICAgICAgICB0aGlzLmludm9pY2VMaXN0ID0gZS5kYXRhPy5kYXRhXHJcblxyXG4gICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gZS5kYXRhPy5jb3VudFxyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKClcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5pbnZvaWNlTGlzdCA9IFtdXHJcbiAgICAgICAgICB0aGlzLnRvdGFsSXRlbXMgPSAwXHJcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuaW52b2ljZUxpc3QgPSBbXVxyXG4gICAgICAgIHRoaXMudG90YWxJdGVtcyA9IDBcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICBvbkV4cG9ydCgpIHtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xyXG4gICAgbGV0IGZpbHRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7XHJcbiAgICAgIGxpbWl0OiB0aGlzLnBhZ2VTaXplLFxyXG4gICAgICBvZmZzZXQ6IHRoaXMuY3VycmVudFBhZ2UsXHJcbiAgICAgIGZpbHRlcjogdGhpcy5pc0ZpbHRlcixcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWQsXHJcbiAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLnNlYXJjaElucHV0LFxyXG4gICAgICBleHBvcnQ6IHRydWVcclxuICAgIH1cclxuICAgIHRoaXMuUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2UuaW52b2ljZVRhYmxlRGF0YUV4cG9ydChmaWx0ZXJzKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMuUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2Uuc2F2ZUFzRXhjZWxGaWxlKHJlcywgJ2ludm9pY2UnKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlKSA9PiB7XHJcbiAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdTb21ldGhpbmcgd2VudCBXcm9uZy4uJylcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIG9uUGFnZVNpemVDaGFuZ2UocGFnZVNpemU6IGFueSkge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcbiAgICB0aGlzLnBhZ2VTaXplID0gcGFyc2VJbnQocGFnZVNpemUpXHJcbiAgICB0aGlzLmludm9pY2VUYWJsZURhdGEoKVxyXG4gIH1cclxuXHJcbiAgb25QYWdlQ2hhbmdlKHBhZ2VPZmZzZXQ6IGFueSkge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IHBhcnNlSW50KHBhZ2VPZmZzZXQpXHJcbiAgICB0aGlzLmludm9pY2VUYWJsZURhdGEoKVxyXG4gIH1cclxuXHJcbiAgc2VhcmNoRmllbGQoKSB7XHJcbiAgICB0aGlzLmludm9pY2VUYWJsZURhdGEoKVxyXG4gIH1cclxuXHJcbiAgcmV2ZXJ0T3JpZ2luYWxQcmljZSgpIHtcclxuICAgIHRoaXMucHJpY2VWYWx1ZURldGFpbHMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMub3JpZ2luYWxQcmljZVZhbHVlKSlcclxuICB9XHJcblxyXG4gIGdldFByb2R1Y3RMaXN0KCkge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIGxldCBkYXRhID0gdGhpcy5jbGllbnRJZDtcclxuICAgIHRoaXMuUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2UuZ2V0UHJvZHVjdExpc3QoZGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vRGF0YSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucHJvZHVjdExpc3QgPSByZXMuZGF0YTtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0sKGVycm9yOmFueSkgPT4ge1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldFN0b3JlTGlzdCgpIHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLlBheW1lbnRTdWJzY3JpcHRpb25TZXJ2aWNlLmdldFN0b3JlTGlzdCh0aGlzLmR5bmFtaWNEYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhyZXMpO1xyXG4gICAgICBcclxuICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vRGF0YSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc3RvcmVMaXN0ID0gcmVzLmRhdGEuZGF0YTtcclxuICAgICAgICB0aGlzLnN0b3JlTGlzdC5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgIGl0ZW0uY2hlY2tlZCA9IHRoaXMuc2VsZWN0QWxsO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy50b3RhbENvdW50ID0gcmVzLmRhdGEuY291bnQ7XHJcbiAgICAgICAgY29uc29sZS5sb2codGhpcy5zdG9yZUxpc3QpO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSwgKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBvblN0b3JlUGFnZUNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmR5bmFtaWNEYXRhLm9mZnNldCA9IHBhcnNlSW50KGV2ZW50KTtcclxuICAgIHRoaXMuZ2V0U3RvcmVMaXN0KCk7XHJcbiAgfVxyXG5cclxuICBvblN0b3JlUGFnZVNpemVDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5keW5hbWljRGF0YS5vZmZzZXQgPSAxO1xyXG4gICAgdGhpcy5keW5hbWljRGF0YS5saW1pdCA9IHBhcnNlSW50KGV2ZW50KTtcclxuICAgIHRoaXMuZ2V0U3RvcmVMaXN0KCk7XHJcbiAgfVxyXG5cclxuICBmaWx0ZXJMaXN0KCkge1xyXG4gICAgbGV0IGRhdGEgPSB0aGlzLmNsaWVudElkO1xyXG4gICAgdGhpcy5QYXltZW50U3Vic2NyaXB0aW9uU2VydmljZS5nZXRGaWx0ZXJEZXRhaWxzKGRhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgcmVzLmRhdGEuc3RvcmUuZm9yRWFjaCgoc3RvcmU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgbGV0IHN0b3Jlc0luZGV4ID0gdGhpcy5kYXRhT2JqZWN0LmZpbmRJbmRleCgoaXRlbTogYW55KSA9PiBpdGVtLkRlc2NyaXB0aW9uID09ICdTdG9yZScpO1xyXG4gICAgICAgICAgaWYgKHN0b3Jlc0luZGV4ICE9IC0xKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YU9iamVjdFtzdG9yZXNJbmRleF0uSXNzdWVzLnB1c2goe1xyXG4gICAgICAgICAgICAgIHRleHQ6IHN0b3JlLnN0b3JlTmFtZSxcclxuICAgICAgICAgICAgICBpZDogc3RvcmUuc3RvcmVJZFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIHJlcy5kYXRhLmxvY2F0aW9uLmZvckVhY2goKGxvY2F0aW9uOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGxldCBsb2NhdGlvbkluZGV4ID0gdGhpcy5kYXRhT2JqZWN0LmZpbmRJbmRleCgoaXRlbTogYW55KSA9PiBpdGVtLkRlc2NyaXB0aW9uID09ICdMb2NhdGlvbicpO1xyXG4gICAgICAgICAgaWYgKGxvY2F0aW9uSW5kZXggIT0gLTEpIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhT2JqZWN0W2xvY2F0aW9uSW5kZXhdLklzc3Vlcy5wdXNoKHtcclxuICAgICAgICAgICAgICB0ZXh0OiBsb2NhdGlvbixcclxuICAgICAgICAgICAgICBpZDogaW5kZXhcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICByZXMuZGF0YS5wcm9kdWN0LmZvckVhY2goKHByb2R1Y3Q6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgbGV0IHByb2R1Y3RJbmRleCA9IHRoaXMuZGF0YU9iamVjdC5maW5kSW5kZXgoKGl0ZW06IGFueSkgPT4gaXRlbS5EZXNjcmlwdGlvbiA9PSAnUHJvZHVjdHMnKTtcclxuICAgICAgICAgIGlmIChwcm9kdWN0SW5kZXggIT0gLTEpIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhT2JqZWN0W3Byb2R1Y3RJbmRleF0uSXNzdWVzLnB1c2goe1xyXG4gICAgICAgICAgICAgIHRleHQ6IHByb2R1Y3QsXHJcbiAgICAgICAgICAgICAgaWQ6IGluZGV4XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcblxyXG4gIH1cclxuXHJcbiAgc2VhcmNoUmVjb3JkcyhldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmR5bmFtaWNEYXRhLm9mZnNldCA9IDE7XHJcbiAgICB0aGlzLmR5bmFtaWNEYXRhLnNlYXJjaFZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgdGhpcy5nZXRTdG9yZUxpc3QoKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdEFsbFN0b3JlKGV2ZW50OiBhbnkpIHtcclxuICAgIGxldCBzdG9yZUlkTGlzdDsgXHJcbiAgICBpZiAoZXZlbnQudGFyZ2V0LmNoZWNrZWQpIHtcclxuICAgICAgc3RvcmVJZExpc3QgPSB0aGlzLmRhdGFPYmplY3RbMV0uSXNzdWVzLm1hcCgoaXRlbTphbnkpID0+IGl0ZW0uaWQpO1xyXG4gICAgICBsZXQgZGF0YSA9IHtcclxuICAgICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcclxuICAgICAgICBzdG9yZTogW11cclxuICAgICAgfVxyXG4gICAgICB0aGlzLlBheW1lbnRTdWJzY3JpcHRpb25TZXJ2aWNlLnN0b3JlUHJvZHVjdChkYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLnN0b3JlUHJvZHVjdCA9IHJlcy5kYXRhO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBzdG9yZUlkTGlzdCA9IFtdO1xyXG4gICAgICB0aGlzLnN0b3JlUHJvZHVjdCA9IFtdO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWxlY3RBbGwgPSBldmVudC50YXJnZXQuY2hlY2tlZDtcclxuICAgIHRoaXMuc3RvcmVMaXN0LmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpdGVtLmNoZWNrZWQgPSBldmVudC50YXJnZXQuY2hlY2tlZFxyXG4gICAgfSlcclxuICAgIHRoaXMuc2VsZWN0ZWRTdG9yZUxpc3QgPSBzdG9yZUlkTGlzdDtcclxuICB9XHJcblxyXG4gIGdldFN0b3JlcygpIHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkU3RvcmVMaXN0XHJcbiAgfVxyXG5cclxuICB1cGRhdGVDaGVjayhldmVudDogYW55LCBzdG9yZUlkOiBhbnkpIHtcclxuICAgIGlmIChldmVudC50YXJnZXQuY2hlY2tlZCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkU3RvcmVMaXN0LnB1c2goc3RvcmVJZClcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgaW5kZXggPSB0aGlzLnNlbGVjdGVkU3RvcmVMaXN0LmZpbmRJbmRleCgoaXRlbTogYW55KSA9PiBpdGVtID09PSBzdG9yZUlkKTtcclxuICAgICAgaWYgKGluZGV4ICE9IC0xKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFN0b3JlTGlzdC5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFN0b3JlTGlzdC5sZW5ndGggPT0gdGhpcy50b3RhbENvdW50KSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgIGNsaWVudElkOiB0aGlzLmNsaWVudElkLFxyXG4gICAgICBzdG9yZTogdGhpcy5zZWxlY3RlZFN0b3JlTGlzdFxyXG4gICAgfVxyXG4gICAgdGhpcy5QYXltZW50U3Vic2NyaXB0aW9uU2VydmljZS5zdG9yZVByb2R1Y3QoZGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICB0aGlzLnN0b3JlUHJvZHVjdCA9IHJlcy5kYXRhO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0UHJvZHVjdCgpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkU3RvcmVMaXN0Lmxlbmd0aCB8fCB0aGlzLnNlbGVjdEFsbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5zdG9yZVByb2R1Y3Q7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gW107XHJcbiAgfVxyXG5cclxuICBub3RpZmljYXRpb25MaXN0KCkge1xyXG4gICAgdGhpcy5ub3RpZmljYXRpb25EZXRhaWxzID0gW107XHJcbiAgICBsZXQgZGF0YSA9IHRoaXMuY2xpZW50SWQ7XHJcbiAgICB0aGlzLlBheW1lbnRTdWJzY3JpcHRpb25TZXJ2aWNlLmdldE5vdGlmaWNhdGlvbihkYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uRGV0YWlscyA9IHJlcy5kYXRhO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHRoaXMubm90aWZpY2F0aW9uRGV0YWlscywnZGV0YWlscycpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uRGV0YWlscy5ub3RpZmljYXRpb25MaXN0LmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgaXRlbS5wcm9kdWN0dHJhaWxkcm9wRG93biA9IGZhbHNlO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5jdXJyZW50UGxhbiA9IHJlcy5kYXRhLmN1cnJlbnRQbGFuO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgY2FuY2VsVW5zdWJzY3JpYmUoZGF0YTogYW55LCB0eXBlOiBhbnkpIHtcclxuICAgIGxldCBwYXJhbXMgPSB7XHJcbiAgICAgIGlkOiBkYXRhLl9pZCxcclxuICAgICAgdHlwZTogdHlwZVxyXG4gICAgfVxyXG4gICAgdGhpcy5hcHByb3ZlQ2FuY2VsVW5zdWJzY3JpYmUocGFyYW1zKTtcclxuICB9XHJcblxyXG4gIGFwcHJvdmVDYW5jZWxVbnN1YnNjcmliZShkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMuUGF5bWVudFN1YnNjcmlwdGlvblNlcnZpY2UudW5zdWJzY3JpYmVBcHByb3ZhbChkYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgIGlmIChkYXRhLnR5cGUgPT0gJ3Vuc3Vic2NyaWJlJykge1xyXG4gICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdVbnN1YnNjcmliZWQgVGFuZ28gU3VpdGUgZm9yIOKAnEJyYW5kIE5hbWXigJ0gc3VjY2Vzc2Z1bGx5JylcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25MaXN0KCk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICByZWxvYWQoZXZlbnQ6YW55KSB7XHJcbiAgICBpZihldmVudCA9PSAnc3RvcmUnKSB7XHJcbiAgICAgIHRoaXMuZ2V0U3RvcmVMaXN0KCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZihldmVudCA9PSAncHJvZHVjdCcpIHtcclxuICAgICAgdGhpcy5nZXRQcm9kdWN0TGlzdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29udmVydFVwcGVyKGRhdGE6c3RyaW5nKSB7XHJcbiAgICBsZXQgW2ZpcnN0V29yZCwgc2Vjb25kV29yZF0gPSBkYXRhLnJlcGxhY2UoLyhbYS16XSkoW0EtWl0pL2csICckMSAkMicpLnNwbGl0KCcgJyk7XHJcbiAgICBmaXJzdFdvcmQgPSBmaXJzdFdvcmQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBmaXJzdFdvcmQuc2xpY2UoMSk7XHJcbiAgICByZXR1cm4gZmlyc3RXb3JkICsgJyAnICsgc2Vjb25kV29yZDtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICBvbkRvY3VtZW50Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgaWYgKHRoaXMucGF5bWVudHR5cGVkcm9wRG93bikge1xyXG4gICAgdGhpcy5wYXltZW50dHlwZWRyb3BEb3duID0gZmFsc2U7XHJcbiAgIH1cclxuICAgaWYgKHRoaXMuZHJvcERvd24pIHtcclxuICAgIHRoaXMuZHJvcERvd24gPSBmYWxzZTtcclxuICAgfVxyXG4gICBpZiAodGhpcy5jdXJyZW5jeWRyb3BEb3duKSB7XHJcbiAgICB0aGlzLmN1cnJlbmN5ZHJvcERvd24gPSBmYWxzZTtcclxuICAgfVxyXG4gICBpZiAodGhpcy5pbnZvaWNlZHJvcERvd24pIHtcclxuICAgIHRoaXMuaW52b2ljZWRyb3BEb3duID0gZmFsc2U7XHJcbiAgIH1cclxuICAgaWYodGhpcy5ub3RpZmljYXRpb25EZXRhaWxzPy5ub3RpZmljYXRpb25MaXN0KSB7XHJcbiAgICAgdGhpcy5ub3RpZmljYXRpb25EZXRhaWxzLm5vdGlmaWNhdGlvbkxpc3QuZm9yRWFjaCgoaXRlbTphbnkpPT57XHJcbiAgICAgIGl0ZW0ucHJvZHVjdHRyYWlsZHJvcERvd24gPSAgZmFsc2VcclxuICAgICB9KVxyXG4gICB9XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcbiAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb24gW2Nsb3NlT3RoZXJzXT1cInRydWVcIj5cclxuICAgICAgICAgICAgPCEtLSBCaWxsaW5nICYgc3Vic2NyaXB0aW9uIHN0YXJ0IC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiIG5nYkFjY29yZGlvbkl0ZW0gW2NvbGxhcHNlZF09XCJvcGVuYWNjb3JkaWFuXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtYWluaGVhZGluZ1wiIG5nYkFjY29yZGlvbkJ1dHRvbj5CaWxsaW5nICYgU3Vic2NyaXB0aW9uPGRpdiBjbGFzcz1cImRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Db2xsYXBzZT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1iZWdpbjo6cGxhbiBkZXRhaWxzIENhcmQtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteGwtMTIgYmlsbGluZ2NhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIGgteGwtMTAwIGZsZXgtcm93IGZsZXgtc3RhY2sgZmxleC13cmFwIHAtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9hc3RjYXJkIGNvbC1tZC0xMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNsaWVudGluZm8/LmN1cnJlbnRQbGFuSW5mbz8ucGF5bWVudFN0YXR1cz09PSdkdWUnICYmIGNsaWVudGluZm8/LmN1cnJlbnRQbGFuSW5mbz8uZHVlTGltaXRSZWFjaGVkPT09ZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zMHB4IG1lLTVcIj48c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vY3VzdG9tcG9wdXAtSWNvbnMvZGFuZ2VyLWFsZXJ0LXByaW1hcnkuc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidG9hc3R0ZXh0IGQtYmxvY2tcIj5LaW5kIFJlbWluZGVyOiBZb3UgaGF2ZSBhIHJlYWNoZWQgeW91ciBkdWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXQgLFRvIGNvbnRpbnVlIGVuam95aW5nIG91ciBzZXJ2aWNlcywgcGxlYXNlIHJlbmV3IHlvdXIgc3Vic2NyaXB0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IG1ha2luZyB0aGUgcGF5bWVudC4gVGhhbmsgeW91IGZvciB5b3VyIGNvb3BlcmF0aW9uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjxhIHR5cGU9XCJidXR0b25cIiB0YWJpbmRleD1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcHgtNCBuZy1zdGFyLWluc2VydGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vd3JhcDtcIj48c3BhbiBjbGFzcz1cImNyZWF0ZVwiPlBheSBOb3dcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2E+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvYXN0Y2FyZCBjb2wtbWQtMTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjbGllbnRpbmZvPy5jdXJyZW50UGxhbkluZm8/LnBheW1lbnRTdGF0dXM9PT0nZHVlJyAmJiBjbGllbnRpbmZvPy5jdXJyZW50UGxhbkluZm8/LmR1ZUxpbWl0UmVhY2hlZD09PXRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zMHB4IG1lLTVcIj48c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vY3VzdG9tcG9wdXAtSWNvbnMvZGFuZ2VyLWFsZXJ0LXByaW1hcnkuc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidG9hc3R0ZXh0IGQtYmxvY2tcIj5LaW5kIFJlbWluZGVyOiBXZSBoYXZlbid0IHJlY2VpdmVkIHlvdXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF5bWVudCB5ZXQuIFRvIGNvbnRpbnVlIGVuam95aW5nIG91ciBzZXJ2aWNlcywgcGxlYXNlIHJlbmV3IHlvdXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uIGJ5IG1ha2luZyB0aGUgcGF5bWVudC4gVGhhbmsgeW91IGZvciB5b3VyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvb3BlcmF0aW9uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjxhIHR5cGU9XCJidXR0b25cIiB0YWJpbmRleD1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcHgtNCBuZy1zdGFyLWluc2VydGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vd3JhcDtcIj48c3BhbiBjbGFzcz1cImNyZWF0ZVwiPlBheSBOb3dcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2E+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBtdC02XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnNldHRpbmdzX3BheW1lbnRTdWJzY3JpcHRpb25zX2lzVmlld1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gYm9yZGVyLXZhbCBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VycmVudCBQbGFuIEluZm88c3BhbiBjbGFzcz1cImJhZGdlLWxpZ2h0LWdyZXkgbXMtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NsaWVudGluZm8/LmN1cnJlbnRQbGFuSW5mbz8ucHJpY2VUeXBlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICctLSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcHJpY2luZ3RleHQgbXktMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKCuSB7e2NsaWVudGluZm8/LmN1cnJlbnRQbGFuSW5mbz8ucHJpY2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAnLS0nfX08c3BhbiBjbGFzcz1cInByaWNpbmdzcGFuIG1zLTJcIj5TdG9yZS9Nb250aDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgZmxleC1jb2x1bW4gcGxhbmNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBoZWFkaW5nIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y2xpZW50aW5mbz8uY3VycmVudFBsYW5JbmZvPy5zdWJzY3JpcHRpb25UeXBlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAnLS0nfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYW4gLSB7e2NsaWVudGluZm8/LmN1cnJlbnRQbGFuSW5mbz8uc3RvcmVDb3VudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1YmhlYWRpbmcgbXMtMlwiPnN0b3JlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25ib2FyZGVkPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gbmdiVG9vbHRpcD1cInt7IHByb2R1Y3QudG9vbFRpcCB9fVwiIHBsYWNlbWVudD1cInRvcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJtb3VzZWVudGVyOm1vdXNlbGVhdmVcIiB0b29sdGlwQ2xhc3M9XCJjdXN0b20tdG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC13YXJuaW5nIG1zLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBwcm9kdWN0IG9mIGNsaWVudGluZm8/LmN1cnJlbnRQbGFuSW5mbz8udHJpYWxQcm9kdWN0c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHByb2R1Y3QuYWxpc2VQcm9kdWN0TmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJtcy0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiLi9hc3NldHMvdGFuZ28vY3VzdG9tcG9wdXAtSWNvbnMvY2xvY2tleHBpcnktaWNvbi5zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIj4gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdG9vbHRpcENsYXNzPVwiY3VzdG9tLXRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJ7eyBwcm9kdWN0LnRvb2xUaXAgfX1cIiBwbGFjZW1lbnQ9XCJ0b3BcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwibW91c2VlbnRlcjptb3VzZWxlYXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXByaW1hcnkgbXMtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHByb2R1Y3Qgb2YgY2xpZW50aW5mbz8uY3VycmVudFBsYW5JbmZvPy5leHBpcmVkUHJvZHVjdHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBwcm9kdWN0LmFsaXNlUHJvZHVjdE5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwibXMtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cIi4vYXNzZXRzL3RhbmdvL2N1c3RvbXBvcHVwLUljb25zL3ByaW1hcnktY2xvY2staWNvbi5zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIj4gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWIgZC1ibG9ja1wiPkNhbWVyYXMgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjbGllbnRpbmZvPy5jdXJyZW50UGxhbkluZm8/LnRvdGFsQ2FtZXJhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAnLS0nfX0gfCBBdmcgc3EuZnQgOiB7e2NsaWVudGluZm8/LmN1cnJlbnRQbGFuSW5mbz8uc3RvcmVTaXplXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAnLS0nfX0gc3EuZnQgfCBQcm9kdWN0cyA6IDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHByb2R1Y3Qgb2YgY2xpZW50aW5mbz8uY3VycmVudFBsYW5JbmZvPy5saXZlUHJvZHVjdHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBwcm9kdWN0LmFsaXNlUHJvZHVjdE5hbWUgfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgZC1mbGV4IGFsaWduLWl0ZW1zLWVuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnNldHRpbmdzX3BheW1lbnRTdWJzY3JpcHRpb25zX2lzRWRpdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVUb29sdGlwXT1cIiFjbGllbnRpbmZvPy5jdXJyZW50UGxhbkluZm8/LnBlbmRpbmdDbGllbnRSZXF1ZXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJSZXF1ZXN0IGlzIEFscmVhZHkgaW5pdGlhdGVkIHdhaXRpbmcgZm9yIGFkbWluIGFwcHJvdmFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInRvcFwiIHRyaWdnZXJzPVwibW91c2VlbnRlcjptb3VzZWxlYXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cImN1c3RvbS10b29sdGlwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjbGllbnRpbmZvPy5jdXJyZW50UGxhbkluZm8/LnBlbmRpbmdDbGllbnRSZXF1ZXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibmVlZGhlbHAoKVwiIGNsYXNzPVwiYnRuLW91dGxpbmUgYnRuIG5lZWRoZWxwIG1lLTRcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTJcIj48c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE5NjVfMjMwMSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTcuNTc1MzMgNy41MDAzM0M3Ljc3MTI1IDYuOTQzMzggOC4xNTc5NSA2LjQ3Mzc1IDguNjY2OTUgNi4xNzQ2QzkuMTc1OTYgNS44NzU0NiA5Ljc3NDQxIDUuNzY2MTEgMTAuMzU2MyA1Ljg2NTkyQzEwLjkzODIgNS45NjU3MyAxMS40NjYgNi4yNjgyNiAxMS44NDYyIDYuNzE5OTNDMTIuMjI2NCA3LjE3MTYgMTIuNDM0NSA3Ljc0MzI2IDEyLjQzMzcgOC4zMzM2NkMxMi40MzM3IDEwLjAwMDMgOS45MzM2NiAxMC44MzM3IDkuOTMzNjYgMTAuODMzN00xMC4wMDAzIDE0LjE2N0gxMC4wMDg3TTE4LjMzMzcgMTAuMDAwM0MxOC4zMzM3IDE0LjYwMjcgMTQuNjAyNyAxOC4zMzM3IDEwLjAwMDMgMTguMzMzN0M1LjM5Nzk1IDE4LjMzMzcgMS42NjY5OSAxNC42MDI3IDEuNjY2OTkgMTAuMDAwM0MxLjY2Njk5IDUuMzk3OTUgNS4zOTc5NSAxLjY2Njk5IDEwLjAwMDMgMS42NjY5OUMxNC42MDI3IDEuNjY2OTkgMTguMzMzNyA1LjM5Nzk1IDE4LjMzMzcgMTAuMDAwM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xOTY1XzIzMDFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9XCJtdC0yXCI+IE5lZWQgSGVscDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJ1cGdyYWRlcGxhbigpXCIgdHlwZT1cImJ1dHRvblwiIHRhYmluZGV4PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biB1cGRhdGUgYnRuLWxnIGJ0bi1saWdodCBidG4tYWN0aXZlLWxpZ2h0LXByaW1hcnkgcHgtNCBuZy1zdGFyLWluc2VydGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vd3JhcDtcIj48c3BhbiBjbGFzcz1cImNyZWF0ZVwiPlVwZ3JhZGUgUGxhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWVuZDo6cGxhbiBkZXRhaWxzIENhcmQtLT5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBneC00IG10LTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnNldHRpbmdzX3BheW1lbnRTdWJzY3JpcHRpb25zX2lzVmlld1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1iZWdpbjo6QmFuayBkZXRhaWxzIENhcmQtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhsLTcgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiaWxsaW5nY2FyZCBoLXhsLTEwMCBmbGV4LXJvdyBmbGV4LXN0YWNrIGZsZXgtd3JhcCBwLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gcHktMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGJpbGxpbmd0ZXh0IG1iLThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFuayBEZXRhaWxzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmlsbGluZ2RldGFpbHNcIj5QYXltZW50IFR5cGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiaWxsaW5nbWFpblwiPlZpcnR1YWwgQWNjXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJpbGxpbmdkZXRhaWxzXCI+QWNjb3VudCBObyA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiaWxsaW5nbWFpblwiPiB7e2NsaWVudGluZm8/LmJhbmtEZXRhaWxzPy5hY2NvdW50Tm8gfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS0nfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmlsbGluZ2RldGFpbHNcIj5JRlNDIENvZGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiaWxsaW5nbWFpblwiPiB7e2NsaWVudGluZm8/LmJhbmtEZXRhaWxzPy5pZnNjQ29kZSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJpbGxpbmdkZXRhaWxzXCI+U1dJRlQgQ29kZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJpbGxpbmdtYWluXCI+IHt7Y2xpZW50aW5mbz8uYmFua0RldGFpbHM/LnN3aWZ0Q29kZSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiaWxsaW5nZGV0YWlsc1wiPkJyYW5jaCA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiaWxsaW5nbWFpblwiPnt7Y2xpZW50aW5mbz8uYmFua0RldGFpbHM/LmJyYW5jaCB8fCAnLS0nfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWVuZDo6QmFuayBkZXRhaWxzIENhcmQtLT5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteGwtNSBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy5zZXR0aW5nc19wYXltZW50U3Vic2NyaXB0aW9uc19pc1ZpZXdcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQWRkIEJpbGxpbmcgc3RhcnQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiaWxsaW5nIGgteGwtMTAwIHctMTAwIGZsZXgtcm93IGZsZXgtc3RhY2sgZmxleC13cmFwIHAtNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFjbGllbnRpbmZvPy5iaWxsaW5nRGV0YWlscz8uYmlsbGluZ0FkZHJlc3NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50IGFsaWduLWl0ZW1zLWNlbnRlciBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vY3VzdG9tcG9wdXAtSWNvbnMvYWRkYmlsbGluZ19pY29uLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCI+PC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nIG10LTQgbXMtMVwiPkFkZCBiaWxsaW5nIGFkZHJlc3M8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgbXQtOCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiB0YWJpbmRleD1cIjBcIiAoY2xpY2spPVwidXBkYXRlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbXMtMiBuZy1zdGFyLWluc2VydGVkIGFkZHJlc3Mgdy0xMDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogbm93cmFwO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy5zZXR0aW5nc19wYXltZW50U3Vic2NyaXB0aW9uc19pc0VkaXRcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3VibWl0XCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAuMDAwMyA0LjE2Njc1VjE1LjgzMzRNNC4xNjY5OSAxMC4wMDAxSDE1LjgzMzdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPiBOZXcgQWRkcmVzcyA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQWRkIEJpbGxpbmcgZW5kIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEJpbGxpbmcgSW5mb3JtYXRpb24gc3RhcnQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiaWxsaW5nY2FyZCBoLXhsLTEwMCBmbGV4LXJvdyBmbGV4LXN0YWNrIGZsZXgtd3JhcCBwLTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjbGllbnRpbmZvPy5iaWxsaW5nRGV0YWlscz8uYmlsbGluZ0FkZHJlc3MgJiYgY2xpZW50aW5mbz8uYmlsbGluZ0RldGFpbHM/LmJpbGxpbmdBZGRyZXNzIT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gcHktMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGJpbGxpbmd0ZXh0IG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlsbGluZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSB0eXBlPVwic3VibWl0XCIgKGNsaWNrKT1cInVwZGF0ZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIHVwZGF0ZSBidG4tbGcgYnRuLWxpZ2h0IGJ0bi1hY3RpdmUtbGlnaHQtcHJpbWFyeSBweC00IG5nLXN0YXItaW5zZXJ0ZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8uc2V0dGluZ3NfcGF5bWVudFN1YnNjcmlwdGlvbnNfaXNFZGl0XCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVcGRhdGU8L3NwYW4+PC9hPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJpbGxpbmdkZXRhaWxzXCI+TmV4dCBCaWxsaW5nIERhdGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJpbGxpbmdtYWluXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NsaWVudGluZm8/LmJpbGxpbmdEZXRhaWxzPy5uZXh0QmlsbGluZ0RhdGUgfHwgJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhbGlnbi1pdGVtcy1jZW50ZXIgbXQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmlsbGluZ2RldGFpbHNcIj5CaWxsaW5nIEFkZHJlc3M8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJpbGxpbmdtYWluXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NsaWVudGluZm8/LmJpbGxpbmdEZXRhaWxzPy5iaWxsaW5nQWRkcmVzcyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQmlsbGluZyBJbmZvcm1hdGlvbiBFbmQgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS0gQmlsbGluZyAmIHN1YnNjcmlwdGlvbiBFbmQgLS0+XHJcblxyXG4gICAgICAgICAgICA8IS0tc3Vic2NyaXB0aW9uIENvbmZpZyBzdGFydCAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgbXQtNlwiIG5nYkFjY29yZGlvbkl0ZW0gKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8udXNlclR5cGUgPT09ICd0YW5nbycgJiYgKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnNldHRpbmdzX3BheW1lbnRTdWJzY3JpcHRpb25zX2lzVmlld1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiIG5nYkFjY29yZGlvbkhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWFpbmhlYWRpbmdcIiBuZ2JBY2NvcmRpb25CdXR0b24+U3Vic2NyaXB0aW9uIENvbmZpZyA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteGwtMTIgYmlsbGluZ2NhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIGgteGwtMTAwIGZsZXgtcm93IGZsZXgtc3RhY2sgZmxleC13cmFwIG14LTUgcHQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHN1YnNjcmlwdGlvbiBpbmZvIGhlYWRlciBzdGFydCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dOYXZHcm91cFwiIGNsYXNzPVwibmF2LWdyb3VwIG5hdi1ncm91cC1vdXRsaW5lIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWNvbG9yLWdyYXktNjAwIGJ0bi1hY3RpdmUgYnRuLWFjdGl2ZS1zZWNvbmRhcnkgcHgtNiBweS0zIG1lLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicGxhbiA9PT0gJ3N1YnNjcmlwdGlvbic/ICdhY3RpdmVQbGFuQnRuJzonaW5hY3RpdmVQbGFuQnRuJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWt0LXBsYW49XCJzdWJzY3JpcHRpb25cIiAoY2xpY2spPVwic2VsZWN0UGxhbignc3Vic2NyaXB0aW9uJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1YnNjcmlwdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1jb2xvci1ncmF5LTYwMCBidG4tYWN0aXZlIGJ0bi1hY3RpdmUtc2Vjb25kYXJ5IHB4LTYgcHktM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJwbGFuID09PSAncHJpY2luZyc/ICdhY3RpdmVQbGFuQnRuJzonaW5hY3RpdmVQbGFuQnRuJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWt0LXBsYW49XCJwcmljaW5nXCIgKGNsaWNrKT1cInNlbGVjdFBsYW4oJ3ByaWNpbmcnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpY2luZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBzdWJzY3JpcHRpb24gaW5mbyBoZWFkZXIgZW5kIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gc3Vic2NyaXB0aW9uIHRhYiBzdGFydHMgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicGxhbiA9PT0gJ3N1YnNjcmlwdGlvbidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGNsaWVudCByZXF1ZXN0IGNhcmQgc3RhcnQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBneC00IG10LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWJlZ2luOjpCYW5rIGRldGFpbHMgQ2FyZC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhsLTZcIiBbbmdDbGFzc109XCJpID4gMT8gJ210LTUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG5vdGlmaWNhdGlvbiBvZiBub3RpZmljYXRpb25EZXRhaWxzLm5vdGlmaWNhdGlvbkxpc3Q7bGV0IGk9IGluZGV4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBCaWxsaW5nIEluZm9ybWF0aW9uIHN0YXJ0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmlsbGluZ2NhcmQgaC14bC0xMDAgZmxleC1yb3cgZmxleC1zdGFjayBmbGV4LXdyYXAgbWItNiBweC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBtdC0xMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibm90aWZpY2F0aW9uLmNhdGVnb3J5ID09PSAnVHJpYWwnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBsZXZlbHZpZXd0ZXh0IG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bm90aWZpY2F0aW9uLm5hbWV9fSA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2UtbGlnaHQtZ3JleSBtcy0yXCI+e3tjdXJyZW50UGxhbn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1YnRleHRcIj5LaW5kbHkgbWFrZSBuZWNlc3NhcnkgYWN0aW9uIGZvciB0cmlhbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCBvciBza2lwIHByb2R1Y3QgdG8gc3Vic2NyaXB0aW9uIGxpc3Q8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZGF0YS1rdC1zdWJzY3JpcHRpb24tdGFibGUtdG9vbGJhcj1cImJhc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggbXQtOVwiPjxhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFwcHJvdmV0cmlhbChub3RpZmljYXRpb24sJ2NhbmNlbCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1vdXRsaW5lIGJ0biBuZWVkaGVscCBtZS02IG10LTNcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTZcIj5Ta2lwIFRyYWlsPC9zcGFuPjwvYT48YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHByb3ZldHJpYWwobm90aWZpY2F0aW9uLCdhcHByb3ZlJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIiB0YWJpbmRleD1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHB4LTQgbXQtMyBuZy1zdGFyLWluc2VydGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy5zZXR0aW5nc19wYXltZW50U3Vic2NyaXB0aW9uc19pc0VkaXRcIj48c3Bhbj5BcHByb3ZlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYWlsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjwvYT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIG10LTEwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJub3RpZmljYXRpb24uY2F0ZWdvcnkgPT09ICd1bnN1YnNjcmliZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGxldmVsdmlld3RleHQgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5zdWJzY3JpYmUgUmVxdWVzdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1YnRleHRcIj5DbGllbnQgaGFzIHJlcXVlc3RlZCB0byB1bnN1YnNjcmliZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWJ0ZXh0Ym9sZFwiPlRhbmdvIFN1aXRlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZGF0YS1rdC1zdWJzY3JpcHRpb24tdGFibGUtdG9vbGJhcj1cImJhc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggbXQtOVwiPjxhIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLW91dGxpbmUgYnRuIG5lZWRoZWxwIG1lLTYgbXQtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNhbmNlbFVuc3Vic2NyaWJlKG5vdGlmaWNhdGlvbiwnY2FuY2VsJylcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTZcIj5DYW5jZWw8L3NwYW4+PC9hPjxhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFwcHJvdmVVbnN1YnNjcmliZShub3RpZmljYXRpb24sJ3Vuc3Vic2NyaWJlJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIiB0YWJpbmRleD1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXIgcHgtNCBtdC0zIG5nLXN0YXItaW5zZXJ0ZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnNldHRpbmdzX3BheW1lbnRTdWJzY3JpcHRpb25zX2lzRWRpdFwiPjxzcGFuPkFwcHJvdmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9hPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gbXQtMTBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm5vdGlmaWNhdGlvbi5jYXRlZ29yeSA9PT0gJ3RyaWFsIHByb2R1Y3QnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBsZXZlbHZpZXd0ZXh0IG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bm90aWZpY2F0aW9uLm5hbWV9fSA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2UtbGlnaHQtZ3JleSBtcy0yXCI+e3tjdXJyZW50UGxhbn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1YnRleHRcIj5DdXJyZW50IFBsYW4gSW5mbzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG10LTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOCBkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxzdmcgaWQ9XCJjaXJjbGUtY2hhcnRcIiB3aWR0aD1cIjk0XCIgaGVpZ2h0PVwiOTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxMDAgMTAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQmFja2dyb3VuZCBjaXJjbGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiNTBcIiBjeT1cIjUwXCIgcj1cIjQwXCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNmMGYwZjBcIiBzdHJva2Utd2lkdGg9XCI4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NpcmNsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRm9yZWdyb3VuZCBjaXJjbGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPVwicHJvZ3Jlc3MtY2lyY2xlLXt7aX19XCIgY3g9XCI1MFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3k9XCI1MFwiIHI9XCI0MFwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDA3YmZmXCIgc3Ryb2tlLXdpZHRoPVwiOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWRhc2hhcnJheT1cIjI1MS4yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2UtZGFzaG9mZnNldF09XCJ1cGRhdGVDaXJjbGVDaGFydChub3RpZmljYXRpb24ucGVyY2VudGFnZSxpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jaXJjbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFRleHQgZGlzcGxheWluZyBwZXJjZW50YWdlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHQgaWQ9XCJwZXJjZW50YWdlLXRleHQte3tpfX1cIiB4PVwiNTBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk9XCI1NFwiIGNsYXNzPVwicHJvZHVjdHRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtYW5jaG9yPVwibWlkZGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzMzMzMzM1wiPnt7bm90aWZpY2F0aW9uLnBlcmNlbnRhZ2V9fSU8L3RleHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhbGlnbi1pdGVtcy1zdGFydCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBkYXlzbGVmdCBtcy02IG10LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tub3RpZmljYXRpb24uZGF5fX0gRGF5cyBMZWZ0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhbGlnbi1pdGVtcy1zdGFydCB0cmFpbCBtdC0yIG1lLTE0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmVlIHRyaWFsPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTQgbXQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJwcm9kdWN0dHJhaWxEcm9wZG93bigkZXZlbnQsaSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJqdXN0aWZ5LWNvbnRlbnQtZW5kIGN1cnNvci1wb2ludGVyIG1zLTIwXCI+PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjYwXCIgaGVpZ2h0PVwiNjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDYwIDYwXCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI9XCJ1cmwoI2ZpbHRlcjBfZF81MjIxXzYwMTQzKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjJcIiB5PVwiMVwiIHdpZHRoPVwiNTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjU2XCIgcng9XCI4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjIuNVwiIHk9XCIxLjVcIiB3aWR0aD1cIjU1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCI1NVwiIHJ4PVwiNy41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDBENUREXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF81MjIxXzYwMTQzKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMzAgMzJDMzEuNjU2OSAzMiAzMyAzMC42NTY5IDMzIDI5QzMzIDI3LjM0MzEgMzEuNjU2OSAyNiAzMCAyNkMyOC4zNDMxIDI2IDI3IDI3LjM0MzEgMjcgMjlDMjcgMzAuNjU2OSAyOC4zNDMxIDMyIDMwIDMyWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTM3LjQgMzJDMzcuMjY2OSAzMi4zMDE2IDM3LjIyNzIgMzIuNjM2MiAzNy4yODYgMzIuOTYwNkMzNy4zNDQ4IDMzLjI4NSAzNy40OTk1IDMzLjU4NDMgMzcuNzMgMzMuODJMMzcuNzkgMzMuODhDMzcuOTc2IDM0LjA2NTcgMzguMTIzNSAzNC4yODYzIDM4LjIyNDEgMzQuNTI5MUMzOC4zMjQ4IDM0Ljc3MTkgMzguMzc2NiAzNS4wMzIyIDM4LjM3NjYgMzUuMjk1QzM4LjM3NjYgMzUuNTU3OCAzOC4zMjQ4IDM1LjgxODEgMzguMjI0MSAzNi4wNjA5QzM4LjEyMzUgMzYuMzAzNyAzNy45NzYgMzYuNTI0MyAzNy43OSAzNi43MUMzNy42MDQzIDM2Ljg5NiAzNy4zODM3IDM3LjA0MzUgMzcuMTQwOSAzNy4xNDQxQzM2Ljg5ODEgMzcuMjQ0OCAzNi42Mzc4IDM3LjI5NjYgMzYuMzc1IDM3LjI5NjZDMzYuMTEyMiAzNy4yOTY2IDM1Ljg1MTkgMzcuMjQ0OCAzNS42MDkxIDM3LjE0NDFDMzUuMzY2MyAzNy4wNDM1IDM1LjE0NTcgMzYuODk2IDM0Ljk2IDM2LjcxTDM0LjkgMzYuNjVDMzQuNjY0MyAzNi40MTk1IDM0LjM2NSAzNi4yNjQ4IDM0LjA0MDYgMzYuMjA2QzMzLjcxNjIgMzYuMTQ3MiAzMy4zODE2IDM2LjE4NjkgMzMuMDggMzYuMzJDMzIuNzg0MiAzNi40NDY4IDMyLjUzMiAzNi42NTcyIDMyLjM1NDMgMzYuOTI1NUMzMi4xNzY2IDM3LjE5MzggMzIuMDgxMyAzNy41MDgyIDMyLjA4IDM3LjgzVjM4QzMyLjA4IDM4LjUzMDQgMzEuODY5MyAzOS4wMzkxIDMxLjQ5NDIgMzkuNDE0MkMzMS4xMTkxIDM5Ljc4OTMgMzAuNjEwNCA0MCAzMC4wOCA0MEMyOS41NDk2IDQwIDI5LjA0MDkgMzkuNzg5MyAyOC42NjU4IDM5LjQxNDJDMjguMjkwNyAzOS4wMzkxIDI4LjA4IDM4LjUzMDQgMjguMDggMzhWMzcuOTFDMjguMDcyMyAzNy41NzkgMjcuOTY1MSAzNy4yNTggMjcuNzcyNSAzNi45ODg3QzI3LjU3OTkgMzYuNzE5NCAyNy4zMTA3IDM2LjUxNDMgMjcgMzYuNEMyNi42OTg0IDM2LjI2NjkgMjYuMzYzOCAzNi4yMjcyIDI2LjAzOTQgMzYuMjg2QzI1LjcxNSAzNi4zNDQ4IDI1LjQxNTcgMzYuNDk5NSAyNS4xOCAzNi43M0wyNS4xMiAzNi43OUMyNC45MzQzIDM2Ljk3NiAyNC43MTM3IDM3LjEyMzUgMjQuNDcwOSAzNy4yMjQxQzI0LjIyODEgMzcuMzI0OCAyMy45Njc4IDM3LjM3NjYgMjMuNzA1IDM3LjM3NjZDMjMuNDQyMiAzNy4zNzY2IDIzLjE4MTkgMzcuMzI0OCAyMi45MzkxIDM3LjIyNDFDMjIuNjk2MyAzNy4xMjM1IDIyLjQ3NTcgMzYuOTc2IDIyLjI5IDM2Ljc5QzIyLjEwNCAzNi42MDQzIDIxLjk1NjUgMzYuMzgzNyAyMS44NTU5IDM2LjE0MDlDMjEuNzU1MiAzNS44OTgxIDIxLjcwMzQgMzUuNjM3OCAyMS43MDM0IDM1LjM3NUMyMS43MDM0IDM1LjExMjIgMjEuNzU1MiAzNC44NTE5IDIxLjg1NTkgMzQuNjA5MUMyMS45NTY1IDM0LjM2NjMgMjIuMTA0IDM0LjE0NTcgMjIuMjkgMzMuOTZMMjIuMzUgMzMuOUMyMi41ODA1IDMzLjY2NDMgMjIuNzM1MiAzMy4zNjUgMjIuNzk0IDMzLjA0MDZDMjIuODUyOCAzMi43MTYyIDIyLjgxMzEgMzIuMzgxNiAyMi42OCAzMi4wOEMyMi41NTMyIDMxLjc4NDIgMjIuMzQyOCAzMS41MzIgMjIuMDc0NSAzMS4zNTQzQzIxLjgwNjIgMzEuMTc2NiAyMS40OTE4IDMxLjA4MTMgMjEuMTcgMzEuMDhIMjFDMjAuNDY5NiAzMS4wOCAxOS45NjA5IDMwLjg2OTMgMTkuNTg1OCAzMC40OTQyQzE5LjIxMDcgMzAuMTE5MSAxOSAyOS42MTA0IDE5IDI5LjA4QzE5IDI4LjU0OTYgMTkuMjEwNyAyOC4wNDA5IDE5LjU4NTggMjcuNjY1OEMxOS45NjA5IDI3LjI5MDcgMjAuNDY5NiAyNy4wOCAyMSAyNy4wOEgyMS4wOUMyMS40MjEgMjcuMDcyMyAyMS43NDIgMjYuOTY1MSAyMi4wMTEzIDI2Ljc3MjVDMjIuMjgwNiAyNi41Nzk5IDIyLjQ4NTcgMjYuMzEwNyAyMi42IDI2QzIyLjczMzEgMjUuNjk4NCAyMi43NzI4IDI1LjM2MzggMjIuNzE0IDI1LjAzOTRDMjIuNjU1MiAyNC43MTUgMjIuNTAwNSAyNC40MTU3IDIyLjI3IDI0LjE4TDIyLjIxIDI0LjEyQzIyLjAyNCAyMy45MzQzIDIxLjg3NjUgMjMuNzEzNyAyMS43NzU5IDIzLjQ3MDlDMjEuNjc1MiAyMy4yMjgxIDIxLjYyMzQgMjIuOTY3OCAyMS42MjM0IDIyLjcwNUMyMS42MjM0IDIyLjQ0MjIgMjEuNjc1MiAyMi4xODE5IDIxLjc3NTkgMjEuOTM5MUMyMS44NzY1IDIxLjY5NjMgMjIuMDI0IDIxLjQ3NTcgMjIuMjEgMjEuMjlDMjIuMzk1NyAyMS4xMDQgMjIuNjE2MyAyMC45NTY1IDIyLjg1OTEgMjAuODU1OUMyMy4xMDE5IDIwLjc1NTIgMjMuMzYyMiAyMC43MDM0IDIzLjYyNSAyMC43MDM0QzIzLjg4NzggMjAuNzAzNCAyNC4xNDgxIDIwLjc1NTIgMjQuMzkwOSAyMC44NTU5QzI0LjYzMzcgMjAuOTU2NSAyNC44NTQzIDIxLjEwNCAyNS4wNCAyMS4yOUwyNS4xIDIxLjM1QzI1LjMzNTcgMjEuNTgwNSAyNS42MzUgMjEuNzM1MiAyNS45NTk0IDIxLjc5NEMyNi4yODM4IDIxLjg1MjggMjYuNjE4NCAyMS44MTMxIDI2LjkyIDIxLjY4SDI3QzI3LjI5NTggMjEuNTUzMiAyNy41NDggMjEuMzQyOCAyNy43MjU3IDIxLjA3NDVDMjcuOTAzNCAyMC44MDYyIDI3Ljk5ODcgMjAuNDkxOCAyOCAyMC4xN1YyMEMyOCAxOS40Njk2IDI4LjIxMDcgMTguOTYwOSAyOC41ODU4IDE4LjU4NThDMjguOTYwOSAxOC4yMTA3IDI5LjQ2OTYgMTggMzAgMThDMzAuNTMwNCAxOCAzMS4wMzkxIDE4LjIxMDcgMzEuNDE0MiAxOC41ODU4QzMxLjc4OTMgMTguOTYwOSAzMiAxOS40Njk2IDMyIDIwVjIwLjA5QzMyLjAwMTMgMjAuNDExOCAzMi4wOTY2IDIwLjcyNjIgMzIuMjc0MyAyMC45OTQ1QzMyLjQ1MiAyMS4yNjI4IDMyLjcwNDIgMjEuNDczMiAzMyAyMS42QzMzLjMwMTYgMjEuNzMzMSAzMy42MzYyIDIxLjc3MjggMzMuOTYwNiAyMS43MTRDMzQuMjg1IDIxLjY1NTIgMzQuNTg0MyAyMS41MDA1IDM0LjgyIDIxLjI3TDM0Ljg4IDIxLjIxQzM1LjA2NTcgMjEuMDI0IDM1LjI4NjMgMjAuODc2NSAzNS41MjkxIDIwLjc3NTlDMzUuNzcxOSAyMC42NzUyIDM2LjAzMjIgMjAuNjIzNCAzNi4yOTUgMjAuNjIzNEMzNi41NTc4IDIwLjYyMzQgMzYuODE4MSAyMC42NzUyIDM3LjA2MDkgMjAuNzc1OUMzNy4zMDM3IDIwLjg3NjUgMzcuNTI0MyAyMS4wMjQgMzcuNzEgMjEuMjFDMzcuODk2IDIxLjM5NTcgMzguMDQzNSAyMS42MTYzIDM4LjE0NDEgMjEuODU5MUMzOC4yNDQ4IDIyLjEwMTkgMzguMjk2NiAyMi4zNjIyIDM4LjI5NjYgMjIuNjI1QzM4LjI5NjYgMjIuODg3OCAzOC4yNDQ4IDIzLjE0ODEgMzguMTQ0MSAyMy4zOTA5QzM4LjA0MzUgMjMuNjMzNyAzNy44OTYgMjMuODU0MyAzNy43MSAyNC4wNEwzNy42NSAyNC4xQzM3LjQxOTUgMjQuMzM1NyAzNy4yNjQ4IDI0LjYzNSAzNy4yMDYgMjQuOTU5NEMzNy4xNDcyIDI1LjI4MzggMzcuMTg2OSAyNS42MTg0IDM3LjMyIDI1LjkyVjI2QzM3LjQ0NjggMjYuMjk1OCAzNy42NTcyIDI2LjU0OCAzNy45MjU1IDI2LjcyNTdDMzguMTkzOCAyNi45MDM0IDM4LjUwODIgMjYuOTk4NyAzOC44MyAyN0gzOUMzOS41MzA0IDI3IDQwLjAzOTEgMjcuMjEwNyA0MC40MTQyIDI3LjU4NThDNDAuNzg5MyAyNy45NjA5IDQxIDI4LjQ2OTYgNDEgMjlDNDEgMjkuNTMwNCA0MC43ODkzIDMwLjAzOTEgNDAuNDE0MiAzMC40MTQyQzQwLjAzOTEgMzAuNzg5MyAzOS41MzA0IDMxIDM5IDMxSDM4LjkxQzM4LjU4ODIgMzEuMDAxMyAzOC4yNzM4IDMxLjA5NjYgMzguMDA1NSAzMS4yNzQzQzM3LjczNzIgMzEuNDUyIDM3LjUyNjggMzEuNzA0MiAzNy40IDMyWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWx0ZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImZpbHRlcjBfZF81MjIxXzYwMTQzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCI2MFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiNjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclVuaXRzPVwidXNlclNwYWNlT25Vc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdD1cIkJhY2tncm91bmRJbWFnZUZpeFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW49XCJTb3VyY2VBbHBoYVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJtYXRyaXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdD1cImhhcmRBbHBoYVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlT2Zmc2V0IGR5PVwiMVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZERldmlhdGlvbj1cIjFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9XCIwIDAgMCAwIDAuMDYyNzQ1MSAwIDAgMCAwIDAuMDk0MTE3NiAwIDAgMCAwIDAuMTU2ODYzIDAgMCAwIDAuMDUgMFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluMj1cIkJhY2tncm91bmRJbWFnZUZpeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdD1cImVmZmVjdDFfZHJvcFNoYWRvd181MjIxXzYwMTQzXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW49XCJTb3VyY2VHcmFwaGljXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4yPVwiZWZmZWN0MV9kcm9wU2hhZG93XzUyMjFfNjAxNDNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJzaGFwZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpbHRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzUyMjFfNjAxNDNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMTggMTcpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJub3RpZmljYXRpb24ucHJvZHVjdHRyYWlsZHJvcERvd25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkIHB5LTIgdy0yMDBweCBwb3NpdGlvbi1hYnNvbHV0ZSBlbmQtMCB6LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCAqbmdGb3I9XCJsZXQgcHJvZHVjdHRyYWlsaXRlbSBvZiBwcm9kdWN0dHJhaWx0eXBlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImxpc3QtdW5zdHlsZWQgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInByb2R1Y3R0ZXh0IHB4LTUgaXRlbXMgY3Vyc29yLXBvaW50ZXIgcHktNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwcm9kdWN0dHJhaWxJdGVtKHByb2R1Y3R0cmFpbGl0ZW0sbm90aWZpY2F0aW9uKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3Byb2R1Y3R0cmFpbGl0ZW19fTwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tZW5kOjpCYW5rIGRldGFpbHMgQ2FyZC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gY2xpZW50IHJlcXVlc3QgY2FyZCBlbmQgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gbGV2ZWwgdmlldyBkcm9wZG93biBzdGFydCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3VibGV2ZWx2aWV3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gaGVhZGluZyBtdC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZSBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXNlbGVjdCBkcm9wc2VsZWN0IGxldmVsdmlld3RleHRcIiBpZD1cImN1cnJlbmN5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidmlld3BsYW5Ecm9wZG93bigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiRGVmYXVsdCBzZWxlY3QgZXhhbXBsZVwiPnt7dmlld3BsYW5Jc3N1ZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidmlld3BsYW5kcm9wRG93blwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkIHB5LTIgdy0xMDAgcG9zaXRpb24tYWJzb2x1dGUgZW5kLTAgei0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsICpuZ0Zvcj1cImxldCB2aWV3cGxhbml0ZW0gb2Ygdmlld3BsYW50eXBlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsaXN0LXVuc3R5bGVkIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIFtuZ0NsYXNzXT1cInRoaXMudmlld3BsYW5Jc3N1ZSA9PT0gdmlld3BsYW5pdGVtID8gJ2FjdGl2ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInByb2R1Y3R0ZXh0IHB4LTUgaXRlbXMgY3Vyc29yLXBvaW50ZXIgcHktNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidmlld3BsYW5JdGVtKHZpZXdwbGFuaXRlbSlcIj57e3ZpZXdwbGFuaXRlbX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc3ViXCI+QmFzZWQgb24gQ3VycmVudCBTdWJzY3JpYmVkIFByb2R1Y3Q8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwbGFuID09PSAnc3Vic2NyaXB0aW9uJyAmJiB2aWV3cGxhbklzc3VlID09PSAnUHJvZHVjdCBMZXZlbCBWaWV3J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCIgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgbXQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItbXVsdGlkcm9wZG93biB0ZXh0PVwiQWRkIFByb2R1Y3RzXCIgW3Byb2R1Y3RdPVwicHJvZHVjdExpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJvZHVjdExpc3RdPVwiZGF0YU9iamVjdFswXS5Jc3N1ZXNcIiB0eXBlPVwicHJvZHVjdHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xpZW50SWRdPVwiY2xpZW50SWRcIiAoZGF0YSk9XCJyZWxvYWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnNldHRpbmdzX3BheW1lbnRTdWJzY3JpcHRpb25zX2lzRWRpdFwiPjwvbGliLW11bHRpZHJvcGRvd24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXIgbXQtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInZpZXdwbGFuSXNzdWUgPT09ICdTdG9yZSBMZXZlbCBWaWV3JyAmJiBwbGFuID09PSAnc3Vic2NyaXB0aW9uJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1lbmQgcG9zaXRpb24tcmVsYXRpdmUgbXktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xIHBvc2l0aW9uLWFic29sdXRlIG1iLTMgbXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBvcGFjaXR5PVwiMC41XCIgeD1cIjE3LjAzNjVcIiB5PVwiMTUuMTIyM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiOC4xNTU0NlwiIGhlaWdodD1cIjJcIiByeD1cIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJyb3RhdGUoNDUgMTcuMDM2NSAxNS4xMjIzKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMSAxOUM2LjU1NTU2IDE5IDMgMTUuNDQ0NCAzIDExQzMgNi41NTU1NiA2LjU1NTU2IDMgMTEgM0MxNS40NDQ0IDMgMTkgNi41NTU1NiAxOSAxMUMxOSAxNS40NDQ0IDE1LjQ0NDQgMTkgMTEgMTlaTTExIDVDNy41MzMzMyA1IDUgNy41MzMzMyA1IDExQzUgMTQuNDY2NyA3LjUzMzMzIDE3IDExIDE3QzE0LjQ2NjcgMTcgMTcgMTQuNDY2NyAxNyAxMUMxNyA3LjUzMzMzIDE0LjQ2NjcgNSAxMSA1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBwcy0xNCBtZS0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2VhcmNoUmVjb3JkcygkZXZlbnQpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1maWx0ZXJzIGNsYXNzPVwibWUtMlwiIFtkYXRhT2JqZWN0XT1cImRhdGFPYmplY3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFwcGxpZWRGaWx0ZXJzKT1yZWNlaXZlRGF0YSgkZXZlbnQpPjwvbGliLWZpbHRlcnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItbXVsdGlkcm9wZG93biB0ZXh0PVwiQWRkIFByb2R1Y3RzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwcm9kdWN0TGlzdF09XCJkYXRhT2JqZWN0WzBdLklzc3Vlc1wiIHR5cGU9XCJzdG9yZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0b3Jlc109XCJnZXRTdG9yZXMoKVwiIFtwcm9kdWN0XT1cImdldFByb2R1Y3QoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xpZW50SWRdPVwiY2xpZW50SWRcIiBbY2xpZW50UHJvZHVjdF09XCJwcm9kdWN0TGlzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0YSk9XCJyZWxvYWQoJGV2ZW50KVwiIFtzZWxlY3RBbGxdPVwic2VsZWN0QWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnNldHRpbmdzX3BheW1lbnRTdWJzY3JpcHRpb25zX2lzRWRpdFwiPjwvbGliLW11bHRpZHJvcGRvd24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gc3Vic2NyaXB0aW9uIGNvbmZpZyB0b29sYmFyIGVuZCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyb3cgbG9hZGVyICBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5vRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLXNyYyB3LTI1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBwcm9kdWN0IHN1YnNjcmlwdGlvbiBwbGFuIHN0YXJ0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ2aWV3cGxhbklzc3VlID09PSAnUHJvZHVjdCBMZXZlbCBWaWV3JyAmJiAhbG9hZGluZyAmJiAhbm9EYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC0wIG10LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYm90dG9tLWJvcmRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlByb2R1Y3Q8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5ObyBvZiBTdG9yZXM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5Db3N0IFBlciBTdG9yZTwvdGg+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBwcm9kdWN0IG9mIHByb2R1Y3RMaXN0O2xldCBpPWluZGV4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlIHN1YnNjcmliZWR0ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbnZlcnRVcHBlcihwcm9kdWN0Py5wcm9kdWN0KSB8fCAnLS0nfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj57e3Byb2R1Y3Q/LnN0b3JlQ291bnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IDB9fTwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPuKCuSB7e3Byb2R1Y3Q/LmJhc2VQcmljZSB8fCAwfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gcHJvZHVjdCBzdWJzY3JpcHRpb24gcGxhbiBlbmQgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gc3RvcmUgc3Vic2NyaXB0aW9uIHBsYW4gc3RhcnQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInZpZXdwbGFuSXNzdWUgPT09ICdTdG9yZSBMZXZlbCBWaWV3JyAmJiAhbG9hZGluZyAmJiAhbm9EYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC0wIG10LTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYm90dG9tLWJvcmRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJzdG9yZWlucHV0IG1lLTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0QWxsXCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0QWxsU3RvcmUoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwiZmxleENoZWNrRGVmYXVsdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlN0b3JlIEluZm88L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5Mb2NhdGlvbjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlByb2R1Y3RzPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+QWN0aW9uczwvdGg+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBzdG9yZSBvZiBzdG9yZUxpc3Q7bGV0IGk9aW5kZXg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwic3RvcmVpbnB1dCBtZS00XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic3RvcmUuY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVDaGVjaygkZXZlbnQsc3RvcmU/LnN0b3JlSWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCB0YWJsZS10aXRsZS1wcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwiZmxleENoZWNrRGVmYXVsdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e3N0b3JlPy5zdG9yZU5hbWUgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFibGUtc3ViIGQtYmxvY2s3XCI+SUQgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3N0b3JlPy5zdG9yZUlkIHx8ICctLSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tzdG9yZT8uc3RvcmVQcm9maWxlPy5jaXR5IHx8ICctLSd9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cInN0b3JlPy5wcm9kdWN0ICYmIHN0b3JlPy5wcm9kdWN0Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHByb2R1Y3Qgb2Ygc3RvcmU/LnByb2R1Y3Q7bGV0IGk9aW5kZXg7XCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImk8MlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1wcmltYXJ5IG1lLTFcIj57e3Byb2R1Y3R9fTwvc3Bhbj48L3NwYW4+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RvcmUucHJvZHVjdC5sZW5ndGggPiAyXCI+K3t7c3RvcmU/LnByb2R1Y3QubGVuZ3RoLTJ9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIiFzdG9yZT8ucHJvZHVjdFwiPiAtLSA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1tdWx0aWRyb3Bkb3duXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJvZHVjdF09XCJzdG9yZT8ucHJvZHVjdCB8fCBbXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJvZHVjdExpc3RdPVwiZGF0YU9iamVjdFswXS5Jc3N1ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN0b3Jlc1wiIFtzdG9yZXNdPVwiW3N0b3JlPy5zdG9yZUlkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xpZW50SWRdPVwiY2xpZW50SWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsaWVudFByb2R1Y3RdPVwicHJvZHVjdExpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGEpPVwicmVsb2FkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8uc2V0dGluZ3NfcGF5bWVudFN1YnNjcmlwdGlvbnNfaXNFZGl0XCI+PC9saWItbXVsdGlkcm9wZG93bj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXBhZ2luYXRpb24gW2l0ZW1zUGVyUGFnZV09XCJkeW5hbWljRGF0YS5saW1pdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VycmVudFBhZ2VdPVwiZHluYW1pY0RhdGEub2Zmc2V0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b3RhbEl0ZW1zXT1cInRvdGFsQ291bnRcIiBbcGFnaW5hdGlvblNpemVzXT1cIlsxMCwyMCwzMF1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhZ2VTaXplXT1cImR5bmFtaWNEYXRhLmxpbWl0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uU3RvcmVQYWdlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhZ2VTaXplQ2hhbmdlKT1cIm9uU3RvcmVQYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCI+PC9saWItcGFnaW5hdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHN0b3JlIHN1YnNjcmlwdGlvbiBwbGFuIGVuZCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBzdWJzY3JpcHRpb24gdGFiIHN0YXJ0cyAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tcHJpY2luZyB0YWIgc3RhcnQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicGxhbiA9PT0gJ3ByaWNpbmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBweS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgbGV2ZWx2aWV3dGV4dCBtdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmljaW5nIFRhYmxlPGJyPjxzcGFuIGNsYXNzPVwidGV4dC1zdWJcIj5CYXNlZCBvbiBQcm9kdWN0ICZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZXM8L3NwYW4+IDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwianVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0dGV4dFwiPlN3aXRjaCB0bzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJQcmljaW5nc2hvd05hdlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmF2LWdyb3VwIG5hdi1ncm91cC1vdXRsaW5lIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWNvbG9yLWdyYXktNjAwIGJ0bi1hY3RpdmUgYnRuLWFjdGl2ZS1zZWNvbmRhcnkgcHgtNiBweS0zIG1lLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicHJpY2luZ3BsYW4gPT09ICdzdGFuZGFyZCc/ICdhY3RpdmVQbGFuQnRucHJpbWFyeSc6J2luYWN0aXZlUGxhbkJ0bidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1rdC1wbGFuPVwic3RhbmRhcmRwcmljZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UHJpY2VQbGFuKCdzdGFuZGFyZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFuZGFyZCBQcmljZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1jb2xvci1ncmF5LTYwMCBidG4tYWN0aXZlIGJ0bi1hY3RpdmUtc2Vjb25kYXJ5IHB4LTYgcHktM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJwcmljaW5ncGxhbiA9PT0gJ3N0ZXAnPyAnYWN0aXZlUGxhbkJ0bnByaW1hcnknOidpbmFjdGl2ZVBsYW5CdG4nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEta3QtcGxhbj1cInN0ZXBwcmljZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UHJpY2VQbGFuKCdzdGVwJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0ZXAgUHJpY2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInByaWNpbmdwbGFuID09PSAnc3RlcCdcIiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIG1iLThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiYWRkc3RlcHByaWNlKCdhZGQnKVwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4tb3V0bGluZSBidG4gbmVlZGhlbHAgdGV4dC1ub3dyYXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8uc2V0dGluZ3NfcGF5bWVudFN1YnNjcmlwdGlvbnNfaXNFZGl0XCI+PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjEgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAuNDk5MyA0LjE2Njc1VjE1LjgzMzRNNC42NjYwMiAxMC4wMDAxSDE2LjMzMjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTJcIj5BZGQgU3RlcDwvc3Bhbj4gPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcmljZUxvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyb3cgbG9hZGVyICBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByaWNlTm9EYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjIHctMjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC0wIG10LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInByaWNpbmdwbGFuID09PSAnc3RhbmRhcmQnICYmICFwcmljZUxvYWRpbmcgJiYgIXByaWNlTm9EYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYm90dG9tLWJvcmRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlByb2R1Y3Q8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkFjdHVhbCBQcmljZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJkaXNjb3VudGhlYWRlclwiPkRpc2NvdW50ICU8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibmVnaGVhZGVyXCI+TmVnb3RpYXRlZCBQcmljZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+SW5zdGFsbGVkIFN0b3JlczwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+VG90YWwgUHJpY2U8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBwcm9kdWN0IG9mIHByaWNlVmFsdWVEZXRhaWxzLnByb2R1Y3Q7bGV0IGk9aW5kZXg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2R1Y3R0ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29udmVydFVwcGVyKHByb2R1Y3QucHJvZHVjdE5hbWUpfX08L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPnt7cHJvZHVjdC5iYXNlUHJpY2V9fTwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJkaXNjb3VudHByaWNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj48aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cIiBmb3JtLWNvbnRyb2wgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZGlzY291bnRwcmljZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInByb2R1Y3QuZGlzY291bnRQZXJjZW50YWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiY2FsY3VsYXRlKGksJ2Rpc2NvdW50JylcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJuZWdwcmljZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCIgZm9ybS1jb250cm9sIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cIm5lZ3ByaWNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwidGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicHJvZHVjdC5uZWdvdGlhdGVQcmljZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImNhbGN1bGF0ZShpLCdwcmljZScpXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj57e3Byb2R1Y3Quc3RvcmVDb3VudH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj4kIHt7cHJvZHVjdC5wcmljZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+VG90YWwgVmFsdWU8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZSBib2xkZGF0YVwiPiDigrkge3twcmljZVZhbHVlRGV0YWlscy5hY3R1YWxQcmljZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGUgYm9sZGRhdGFcIj4g4oK5IHt7cHJpY2VWYWx1ZURldGFpbHMubmVnb3RpYXRlUHJpY2V9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48ZGl2IGNsYXNzPVwidGFibGUtdGl0bGUgYm9sZGRhdGFcIj4g4oK5IHt7cHJpY2VWYWx1ZURldGFpbHMubmVnb3RpYXRlUHJpY2V9fTwvZGl2PjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PC90aD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlIGJvbGRkYXRhXCI+IOKCuSB7e3ByaWNlVmFsdWVEZXRhaWxzLnRvdGFsTmVnb3RpYXRlUHJpY2V9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJpY2luZ3BsYW4gPT09ICdzdGVwJyAmJiAhcHJpY2VMb2FkaW5nICYmICFwcmljZU5vRGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGJvdHRvbS1ib3JkZXIgcHJpY2luZ3RhYlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlByb2R1Y3Q8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkFjdHVhbCBQcmljZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+RGlzY291bnQgJTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+TmVnb3RpYXRlZCBQcmljZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+U3RvcmUgUmFuZ2U8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkluc3RhbGxlZCBTdG9yZXM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlRvdGFsIFByaWNlPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5BY3Rpb25zPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcHJvZHVjdCBvZiBwcmljZVZhbHVlRGV0YWlscz8ucHJvZHVjdDtsZXQgaT1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0dGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbnZlcnRVcHBlcihwcm9kdWN0LnByb2R1Y3ROYW1lKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNFwiICpuZ0lmPVwicHJvZHVjdC5zaG93SW1nXCI+PGltZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cIi4vYXNzZXRzL3RhbmdvL2N1c3RvbXBvcHVwLUljb25zL2V4cGlyeS1pY29uLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+IOKCuSB7e3Byb2R1Y3QuYmFzZVByaWNlfX08L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZGlzY291bnRwcmljZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCIgZm9ybS1jb250cm9sIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImRpc2NvdW50cHJpY2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwcm9kdWN0LmRpc2NvdW50UGVyY2VudGFnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImNhbGN1bGF0ZShpLCdkaXNjb3VudCcpXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibmVncHJpY2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiIGZvcm0tY29udHJvbCBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJuZWdwcmljZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInByb2R1Y3QubmVnb3RpYXRlUHJpY2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJjYWxjdWxhdGUoaSwncHJpY2UnKVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInN0b3JlcmFuZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiIGZvcm0tY29udHJvbCBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJzdG9yZXJhbmdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwidGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicHJvZHVjdC5zdG9yZVJhbmdlXCIgcmVhZG9ubHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPnt7cHJvZHVjdC5zdG9yZUNvdW50fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPiDigrkge3twcm9kdWN0LnByaWNlfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlIGQtZmxleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIXByb2R1Y3Quc2hvd0VkaXREZWxldGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMSAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zLjE2NjAyIDQuOTk5MzVINC44MzI2OE00LjgzMjY4IDQuOTk5MzVIMTguMTY2TTQuODMyNjggNC45OTkzNVYxNi42NjZDNC44MzI2OCAxNy4xMDggNS4wMDgyOCAxNy41MzIgNS4zMjA4NCAxNy44NDQ1QzUuNjMzNCAxOC4xNTcxIDYuMDU3MzIgMTguMzMyNyA2LjQ5OTM1IDE4LjMzMjdIMTQuODMyN0MxNS4yNzQ3IDE4LjMzMjcgMTUuNjk4NiAxOC4xNTcxIDE2LjAxMTIgMTcuODQ0NUMxNi4zMjM4IDE3LjUzMiAxNi40OTkzIDE3LjEwOCAxNi40OTkzIDE2LjY2NlY0Ljk5OTM1SDQuODMyNjhaTTcuMzMyNjggNC45OTkzNVYzLjMzMjY4QzcuMzMyNjggMi44OTA2NSA3LjUwODI4IDIuNDY2NzMgNy44MjA4NCAyLjE1NDE3QzguMTMzNCAxLjg0MTYxIDguNTU3MzIgMS42NjYwMiA4Ljk5OTM1IDEuNjY2MDJIMTIuMzMyN0MxMi43NzQ3IDEuNjY2MDIgMTMuMTk4NiAxLjg0MTYxIDEzLjUxMTIgMi4xNTQxN0MxMy44MjM4IDIuNDY2NzMgMTMuOTk5MyAyLjg5MDY1IDEzLjk5OTMgMy4zMzI2OFY0Ljk5OTM1TTguOTk5MzUgOS4xNjYwMlYxNC4xNjZNMTIuMzMyNyA5LjE2NjAyVjE0LjE2NlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNEMEQ1RERcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjEgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuODMyIDIuNTAwOUMxNS4wNTA5IDIuMjgyMDMgMTUuMzEwNyAyLjEwODQyIDE1LjU5NjcgMS45ODk5NkMxNS44ODI3IDEuODcxNTEgMTYuMTg5MiAxLjgxMDU1IDE2LjQ5ODcgMS44MTA1NUMxNi44MDgyIDEuODEwNTUgMTcuMTE0NyAxLjg3MTUxIDE3LjQwMDcgMS45ODk5NkMxNy42ODY3IDIuMTA4NDIgMTcuOTQ2NSAyLjI4MjAzIDE4LjE2NTQgMi41MDA5QzE4LjM4NDIgMi43MTk3NyAxOC41NTc5IDIuOTc5NjEgMTguNjc2MyAzLjI2NTU4QzE4Ljc5NDggMy41NTE1NCAxOC44NTU3IDMuODU4MDQgMTguODU1NyA0LjE2NzU3QzE4Ljg1NTcgNC40NzcxIDE4Ljc5NDggNC43ODM2IDE4LjY3NjMgNS4wNjk1NkMxOC41NTc5IDUuMzU1NTMgMTguMzg0MiA1LjYxNTM3IDE4LjE2NTQgNS44MzQyNEw2LjkxNTM2IDE3LjA4NDJMMi4zMzIwMyAxOC4zMzQyTDMuNTgyMDMgMTMuNzUwOUwxNC44MzIgMi41MDA5WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNEMEQ1RERcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyIHRhYmxlLXRpdGxlIGQtZmxleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicHJvZHVjdC5zaG93RWRpdERlbGV0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZHN0ZXBwcmljZSgnZGVsZXRlJyxwcm9kdWN0LGkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMSAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zLjE2NjAyIDQuOTk5MzVINC44MzI2OE00LjgzMjY4IDQuOTk5MzVIMTguMTY2TTQuODMyNjggNC45OTkzNVYxNi42NjZDNC44MzI2OCAxNy4xMDggNS4wMDgyOCAxNy41MzIgNS4zMjA4NCAxNy44NDQ1QzUuNjMzNCAxOC4xNTcxIDYuMDU3MzIgMTguMzMyNyA2LjQ5OTM1IDE4LjMzMjdIMTQuODMyN0MxNS4yNzQ3IDE4LjMzMjcgMTUuNjk4NiAxOC4xNTcxIDE2LjAxMTIgMTcuODQ0NUMxNi4zMjM4IDE3LjUzMiAxNi40OTkzIDE3LjEwOCAxNi40OTkzIDE2LjY2NlY0Ljk5OTM1SDQuODMyNjhaTTcuMzMyNjggNC45OTkzNVYzLjMzMjY4QzcuMzMyNjggMi44OTA2NSA3LjUwODI4IDIuNDY2NzMgNy44MjA4NCAyLjE1NDE3QzguMTMzNCAxLjg0MTYxIDguNTU3MzIgMS42NjYwMiA4Ljk5OTM1IDEuNjY2MDJIMTIuMzMyN0MxMi43NzQ3IDEuNjY2MDIgMTMuMTk4NiAxLjg0MTYxIDEzLjUxMTIgMi4xNTQxN0MxMy44MjM4IDIuNDY2NzMgMTMuOTk5MyAyLjg5MDY1IDEzLjk5OTMgMy4zMzI2OFY0Ljk5OTM1TTguOTk5MzUgOS4xNjYwMlYxNC4xNjZNMTIuMzMyNyA5LjE2NjAyVjE0LjE2NlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJhZGRzdGVwcHJpY2UoJ2VkaXQnLHByb2R1Y3QsaSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtcy02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMSAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC44MzIgMi41MDA5QzE1LjA1MDkgMi4yODIwMyAxNS4zMTA3IDIuMTA4NDIgMTUuNTk2NyAxLjk4OTk2QzE1Ljg4MjcgMS44NzE1MSAxNi4xODkyIDEuODEwNTUgMTYuNDk4NyAxLjgxMDU1QzE2LjgwODIgMS44MTA1NSAxNy4xMTQ3IDEuODcxNTEgMTcuNDAwNyAxLjk4OTk2QzE3LjY4NjcgMi4xMDg0MiAxNy45NDY1IDIuMjgyMDMgMTguMTY1NCAyLjUwMDlDMTguMzg0MiAyLjcxOTc3IDE4LjU1NzkgMi45Nzk2MSAxOC42NzYzIDMuMjY1NThDMTguNzk0OCAzLjU1MTU0IDE4Ljg1NTcgMy44NTgwNCAxOC44NTU3IDQuMTY3NTdDMTguODU1NyA0LjQ3NzEgMTguNzk0OCA0Ljc4MzYgMTguNjc2MyA1LjA2OTU2QzE4LjU1NzkgNS4zNTU1MyAxOC4zODQyIDUuNjE1MzcgMTguMTY1NCA1LjgzNDI0TDYuOTE1MzYgMTcuMDg0MkwyLjMzMjAzIDE4LjMzNDJMMy41ODIwMyAxMy43NTA5TDE0LjgzMiAyLjUwMDlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+VG90YWwgVmFsdWU8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZSBib2xkZGF0YVwiPiDigrkge3twcmljZVZhbHVlRGV0YWlscy5hY3R1YWxQcmljZX19PC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGUgYm9sZGRhdGFcIj4g4oK5IHt7cHJpY2VWYWx1ZURldGFpbHMubmVnb3RpYXRlUHJpY2V9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48ZGl2IGNsYXNzPVwidGFibGUtdGl0bGUgYm9sZGRhdGFcIj4g4oK5IHt7cHJpY2VWYWx1ZURldGFpbHMubmVnb3RpYXRlUHJpY2V9fTwvZGl2PjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZSBib2xkZGF0YVwiPiDigrkge3twcmljZVZhbHVlRGV0YWlscy50b3RhbE5lZ290aWF0ZVByaWNlfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PC90aD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHQtMTRcIiAqbmdJZj1cIiFwcmljZUxvYWRpbmcgJiYgIXByaWNlTm9EYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc3RhY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlhbmx2YWx0ZXh0IG1lLTJcIj5BY3R1YWwgVmFsdWU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLXNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpYW5sdmFsdGV4dFwiPiDigrkge3twcmljZVZhbHVlRGV0YWlscy50b3RhbEFjdHVhbFByaWNlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1zdGFjayBwdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpYW5sdmFsdGV4dCBtZS0yXCI+RGlzY291bnQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLXNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpYW5sdmFsdGV4dFwiPnt7cHJpY2VWYWx1ZURldGFpbHMuZGlzY291bnRQZXJjZW50YWdlfX0lICgtICDigrkge3twcmljZVZhbHVlRGV0YWlscy5kaXNjb3VudFByaWNlfX0pPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc3RhY2sgcHQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWFubHZhbHRleHQgbWUtMlwiPk5lZ290aWF0ZWQgVmFsdWU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLXNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpYW5sdmFsdGV4dFwiPiDigrkge3twcmljZVZhbHVlRGV0YWlscy50b3RhbE5lZ290aWF0ZVByaWNlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1zdGFjayBwdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpYW5sdmFsdGV4dCBtZS0yXCI+VGF4PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1zZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWFubHZhbHRleHRcIj4xOCUgR1NUPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aHI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXN0YWNrIHB5LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlhbmx2YWx0ZXh0IG1lLTJcIj5GaW5hbCBWYWx1ZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtc2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlhbmx2YWx0ZXh0XCI+IOKCuSB7e3ByaWNlVmFsdWVEZXRhaWxzLmZpbmFsVmFsdWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxocj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGRhdGEta3Qtc3Vic2NyaXB0aW9uLXRhYmxlLXRvb2xiYXI9XCJiYXNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIHB5LTNcIj48YSB0eXBlPVwic3VibWl0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4tb3V0bGluZSBidG4gbmVlZGhlbHAgbWUtNCBtdC0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJldmVydE9yaWdpbmFsUHJpY2UoKVwiPkNhbmNlbDwvYT48YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicHJpY2luZ3JldmlzZWQoKVwiIHR5cGU9XCJidXR0b25cIiB0YWJpbmRleD1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBweC00IG10LTMgbmctc3Rhci1pbnNlcnRlZFwiPjxzcGFuPlNhdmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjwvYT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gcHJpY2luZyB0YWIgcGxhbiBlbmQgLS0+XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHN1Ym1pdCBwbGFuIHN0YXJ0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInBsYW4gPT09ICdzdG9yZXN1YnNjcmlwdGlvbidcIiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGRhdGEta3Qtc3Vic2NyaXB0aW9uLXRhYmxlLXRvb2xiYXI9XCJiYXNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgcHktM1wiPjxhIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLW91dGxpbmUgYnRuIG5lZWRoZWxwIG1lLTQgbXQtM1wiPkNhbmNlbDwvYT48YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwcmljaW5ncmV2aXNlZCgpXCIgdHlwZT1cImJ1dHRvblwiIHRhYmluZGV4PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcHgtNCBtdC0zIG5nLXN0YXItaW5zZXJ0ZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnNldHRpbmdzX3BheW1lbnRTdWJzY3JpcHRpb25zX2lzRWRpdFwiPjxzcGFuPkFwcGx5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYW5nZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9hPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBzdWJtaXQgcGxhbiBlbmQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHByb2R1Y3QgaW5mbyBlbmQgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBwYXltZW50IGludm9pY2Ugc3RhcnQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhsLTEyIG15LTQgYmlsbGluZ2NhcmRcIiAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ3RhbmdvJyAmJiAoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8uc2V0dGluZ3NfcGF5bWVudFN1YnNjcmlwdGlvbnNfaXNWaWV3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cInBheW1lbnRpbnZvaWNlZm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIHBzLTQgcHQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWJlZ2luOjpUaXRsZS0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhlYWRpbmcgbWItMlwiPlBheW1lbnQgYW5kIEludm9pY2U8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWVuZDo6VGl0bGUtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tYmVnaW46OlRvb2xiYXItLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXIgbWItMlwiICpuZ0lmPVwicGF5bWVudGludm9pY2VzaG93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib25wYXltZW50ZWRpdCgpXCIgdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLW91dGxpbmUgYnRuIGFsaWduLWl0ZW1zLWVuZCBuZWVkaGVscCAgbWUtNFwiPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8uc2V0dGluZ3NfcGF5bWVudFN1YnNjcmlwdGlvbnNfaXNFZGl0XCI+PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjU3OV8yNTEyNSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMTY3IDIuNDk5OTNDMTQuMzg1OSAyLjI4MTA2IDE0LjY0NTcgMi4xMDc0NCAxNC45MzE3IDEuOTg4OTlDMTUuMjE3NiAxLjg3MDU0IDE1LjUyNDEgMS44MDk1NyAxNS44MzM3IDEuODA5NTdDMTYuMTQzMiAxLjgwOTU3IDE2LjQ0OTcgMS44NzA1NCAxNi43MzU3IDEuOTg4OTlDMTcuMDIxNiAyLjEwNzQ0IDE3LjI4MTUgMi4yODEwNiAxNy41MDAzIDIuNDk5OTNDMTcuNzE5MiAyLjcxODggMTcuODkyOCAyLjk3ODYzIDE4LjAxMTMgMy4yNjQ2QzE4LjEyOTcgMy41NTA1NyAxOC4xOTA3IDMuODU3MDYgMTguMTkwNyA0LjE2NjU5QzE4LjE5MDcgNC40NzYxMiAxOC4xMjk3IDQuNzgyNjIgMTguMDExMyA1LjA2ODU5QzE3Ljg5MjggNS4zNTQ1NSAxNy43MTkyIDUuNjE0MzkgMTcuNTAwMyA1LjgzMzI2TDYuMjUwMzMgMTcuMDgzM0wxLjY2Njk5IDE4LjMzMzNMMi45MTY5OSAxMy43NDk5TDE0LjE2NyAyLjQ5OTkzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjU3OV8yNTEyNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+RWRpdCBEZXRhaWxzPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1lbmQ6OlRvb2xiYXItLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gcGF5bWVudCBpbnZvaWNlIGZvcm0gc3RhcnQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gcm93IGZ2LXJvdyBmdi1wbHVnaW5zLWljb24tY29udGFpbmVyIHB5LTQgcHgtNFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgcHQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBheW1lbnRjeWNsZVwiIGNsYXNzPVwiaGVhZGluZ3RleHQgbWItMlwiPkVuYWJsZSBQcm8tUmF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBDaGFyZ2VzPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIHBzLTBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicHJpY2luZ1R5cGUoJGV2ZW50LCAnYmVmb3JlMTUnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwicmFkaW9vcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicmFkaW8tY3VzdG9tIGN1cnNvci1wb2ludGVyIHJhZGlvQnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiIGlkPVwiaW5saW5lUmFkaW8xXCIgdmFsdWU9XCJiZWZvcmUxNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwicmFkaW9vcHRpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHJhZGlvLWN1c3RvbS1sYWJlbCBteC0zIGhlYWRpbmd0ZXh0IGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cImlubGluZVJhZGlvMVwiPkJlZm9yZSAxNXRoIG9mIE1vbnRoPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZSBwcy0wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInByaWNpbmdUeXBlKCRldmVudCwgJ2FmdGVyMTUnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJyYWRpby1jdXN0b20gIGN1cnNvci1wb2ludGVyIHJhZGlvQnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiIGZvcm1Db250cm9sTmFtZT1cInJhZGlvb3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImlubGluZVJhZGlvMlwiIHZhbHVlPVwiYWZ0ZXIxNVwiIG5hbWU9XCJyYWRpb29wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIGhlYWRpbmd0ZXh0IHJhZGlvLWN1c3RvbS1sYWJlbCBteC0zIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cImlubGluZVJhZGlvMVwiPkFmdGVyIDE1dGggb2YgTW9udGg8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHB0LTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJwYXltZW50Y3ljbGVcIiBjbGFzcz1cImhlYWRpbmd0ZXh0IG1iLTJcIj5QYXltZW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3ljbGU8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXNlbGVjdCBkcm9wc2VsZWN0XCIgaWQ9XCJwYXltZW50Y3ljbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkRyb3Bkb3duKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiRGVmYXVsdCBzZWxlY3QgZXhhbXBsZVwiPnt7c2VsZWN0ZWRJc3N1ZSA9PT1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vbnRobHknID8gJ01vbnRobHknIDogc2VsZWN0ZWRJc3N1ZSA9PT0gJ3F1YXRlcmx5JyA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdRdWF0ZXJseScgOiAnQW5udWFsJ319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRyb3BEb3duICAmJiAhcGF5bWVudGludm9pY2VzaG93XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkIHB5LTIgdy0xMDAgcG9zaXRpb24tYWJzb2x1dGUgZW5kLTAgei0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkcm9wZG93bkl0ZW1zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibGlzdC11bnN0eWxlZCBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgW25nQ2xhc3NdPVwidGhpcy5zZWxlY3RlZElzc3VlID09PSBpdGVtLnZhbHVlID8gJ2FjdGl2ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9kdWN0dGV4dCBweC01IGl0ZW1zIGN1cnNvci1wb2ludGVyIHB5LTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RJdGVtKGl0ZW0udmFsdWUpXCI+e3tpdGVtLm5hbWV9fTwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBwdC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiaW52b2ljZVRvXCIgY2xhc3M9XCJoZWFkaW5ndGV4dCBtYi0yXCI+R2VuZXJhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnZvaWNlIFRvIDxzcGFuPiA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzI3MDZfMjUzMjQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk03Ljk5OTY3IDEwLjY2NjNWNy45OTk2N003Ljk5OTY3IDUuMzMzMDFIOC4wMDYzNE0xNC42NjYzIDcuOTk5NjdDMTQuNjY2MyAxMS42ODE2IDExLjY4MTYgMTQuNjY2MyA3Ljk5OTY3IDE0LjY2NjNDNC4zMTc3OCAxNC42NjYzIDEuMzMzMDEgMTEuNjgxNiAxLjMzMzAxIDcuOTk5NjdDMS4zMzMwMSA0LjMxNzc4IDQuMzE3NzggMS4zMzMwMSA3Ljk5OTY3IDEuMzMzMDFDMTEuNjgxNiAxLjMzMzAxIDE0LjY2NjMgNC4zMTc3OCAxNC42NjYzIDcuOTk5NjdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yNzA2XzI1MzI0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm91dGVyLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgaW5wdXQtY29udGFpbmVyIGZvcm0tY29udHJvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaW52b2ljZVRvIG9mIGdlbmVyYXRlaW52b2ljZUxpc3Q7IGxldCBpID0gaW5kZXhcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTNcIj57e2ludm9pY2VUb319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicGF5bWVudGludm9pY2Vmb3JtLmVuYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlQ2hpcChpKVwiPjxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05IDNMMyA5TTMgM0w5IDlcIiBzdHJva2U9XCIjNjY3MDg1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHN0eWxlPVwibWluLWhlaWdodDogNDRweDtcIiBmb3JtQ29udHJvbE5hbWU9XCJpbnZvaWNlVG9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIiB0eXBlPVwidGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgcHQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImdlbmVyYXRlaW52b2ljZW9uXCIgY2xhc3M9XCJoZWFkaW5ndGV4dCBtYi0yXCI+R2VuZXJhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnZvaWNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1zZWxlY3QgZHJvcHNlbGVjdFwiIGlkPVwiZ2VuZXJhdGVpbnZvaWNlb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaW52b2ljZURyb3Bkb3duKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiRGVmYXVsdCBzZWxlY3QgZXhhbXBsZVwiPnt7aW52b2ljZW9uSXNzdWUgPT09XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsYXN0ZGF5JyA/ICdMYXN0IERheSBvZiB0aGUgTW9udGgnIDonMjV0aCBvZiB0aGUgTW9udGgnfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaW52b2ljZWRyb3BEb3duICAmJiAhcGF5bWVudGludm9pY2VzaG93XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkIHB5LTIgdy0xMDAgcG9zaXRpb24tYWJzb2x1dGUgZW5kLTAgei0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCAqbmdGb3I9XCJsZXQgaW52b2ljZWl0ZW0gb2YgZ2VuZXJhdGVpbnZvaWNlb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsaXN0LXVuc3R5bGVkIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBbbmdDbGFzc109XCJ0aGlzLmludm9pY2Vvbklzc3VlID09PSBpbnZvaWNlaXRlbS52YWx1ZSA/ICdhY3RpdmUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHJvZHVjdHRleHQgcHgtNSBpdGVtcyBjdXJzb3ItcG9pbnRlciBweS00XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaW52b2ljZUl0ZW0oaW52b2ljZWl0ZW0udmFsdWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpbnZvaWNlaXRlbS5uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBwdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicGF5bWVudHR5cGVcIiBjbGFzcz1cImhlYWRpbmd0ZXh0IG1iLTJcIj5QYXltZW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1zZWxlY3QgZHJvcHNlbGVjdFwiIGlkPVwicGF5bWVudHR5cGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicGF5bWVudHR5cGVEcm9wZG93bigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkRlZmF1bHQgc2VsZWN0IGV4YW1wbGVcIj57e3BheW1lbnRJc3N1ZSA9PT1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29ubGluZScgPyAnb25saW5lIFBheW1lbnQnIDonQmFuayBUcmFuc2Zlcid9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwYXltZW50dHlwZWRyb3BEb3duICYmICFwYXltZW50aW52b2ljZXNob3dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhcmQgcHktMiB3LTEwMCBwb3NpdGlvbi1hYnNvbHV0ZSBlbmQtMCB6LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsICpuZ0Zvcj1cImxldCBwYXltZW50aXRlbSBvZiBwYXltZW50dHlwZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImxpc3QtdW5zdHlsZWQgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIFtuZ0NsYXNzXT1cInRoaXMucGF5bWVudElzc3VlID09PSBwYXltZW50aXRlbS52YWx1ZSA/ICdhY3RpdmUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHJvZHVjdHRleHQgcHgtNSBpdGVtcyBjdXJzb3ItcG9pbnRlciBweS00XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicGF5bWVudEl0ZW0ocGF5bWVudGl0ZW0udmFsdWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3twYXltZW50aXRlbS5uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHB0LTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJjdXJyZW5jeVwiIGNsYXNzPVwiaGVhZGluZ3RleHQgbWItMlwiPkN1cnJlbmN5PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXNlbGVjdCBkcm9wc2VsZWN0XCIgaWQ9XCJjdXJyZW5jeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjdXJyZW5jeURyb3Bkb3duKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiRGVmYXVsdCBzZWxlY3QgZXhhbXBsZVwiPnt7Y3VycmVuY3lJc3N1ZSA9PT1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lucidcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnSU5SJyA6J0RvbGxlcid9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjdXJyZW5jeWRyb3BEb3duICAmJiAhcGF5bWVudGludm9pY2VzaG93XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkIHB5LTIgdy0xMDAgcG9zaXRpb24tYWJzb2x1dGUgZW5kLTAgei0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCAqbmdGb3I9XCJsZXQgY3VycmVuY3lpdGVtIG9mIGN1cnJlbmN5dHlwZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImxpc3QtdW5zdHlsZWQgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIFtuZ0NsYXNzXT1cInRoaXMuY3VycmVuY3lJc3N1ZSA9PT0gY3VycmVuY3lpdGVtLnZhbHVlID8gJ2FjdGl2ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9kdWN0dGV4dCBweC01IGl0ZW1zIGN1cnNvci1wb2ludGVyIHB5LTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjdXJyZW5jeUl0ZW0oY3VycmVuY3lpdGVtLnZhbHVlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y3VycmVuY3lpdGVtLm5hbWV9fTwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBwdC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwic2VuZHBheW1lbnRcIiBjbGFzcz1cImhlYWRpbmd0ZXh0IG1iLTJcIj5TZW5kIFBheW1lbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZ3JlZW1lbnQ8c3BhbiBjbGFzcz1cIm1zLTJcIj4gPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjcwNl8yNTMyNClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTcuOTk5NjcgMTAuNjY2M1Y3Ljk5OTY3TTcuOTk5NjcgNS4zMzMwMUg4LjAwNjM0TTE0LjY2NjMgNy45OTk2N0MxNC42NjYzIDExLjY4MTYgMTEuNjgxNiAxNC42NjYzIDcuOTk5NjcgMTQuNjY2M0M0LjMxNzc4IDE0LjY2NjMgMS4zMzMwMSAxMS42ODE2IDEuMzMzMDEgNy45OTk2N0MxLjMzMzAxIDQuMzE3NzggNC4zMTc3OCAxLjMzMzAxIDcuOTk5NjcgMS4zMzMwMUMxMS42ODE2IDEuMzMzMDEgMTQuNjY2MyA0LjMxNzc4IDE0LjY2NjMgNy45OTk2N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzI3MDZfMjUzMjRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+PC9sYWJlbD5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm91dGVyLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgaW5wdXQtY29udGFpbmVyIGZvcm0tY29udHJvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcGF5bWVudEFncmVlbWVudFRvIG9mIHBheW1lbnRhbGxvd2VkTGlzdDsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0zXCI+e3twYXltZW50QWdyZWVtZW50VG99fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBheW1lbnRpbnZvaWNlZm9ybS5lbmFibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbmRwYXltZW50cmVtb3ZlQ2hpcChpKVwiPjxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05IDNMMyA5TTMgM0w5IDlcIiBzdHJva2U9XCIjNjY3MDg1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHN0eWxlPVwibWluLWhlaWdodDogNDRweDtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGF5bWVudEFncmVlbWVudFRvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cInNlbmRwYXltZW50b25LZXlEb3duKCRldmVudClcIiB0eXBlPVwidGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgcHQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImV4dGVuZFBheW1lbnRQZXJpb2REYXlzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIiBoZWFkaW5ndGV4dCBtYi0yXCI+RXh0ZW5kIFBheW1lbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZXJpb2QgRGF5cyA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctbGctMTAwIHBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIHRyYW5zbGF0ZS1taWRkbGUteSB0b3AtNTAgbWUtNSBwcy0zIHRpY2tldERheXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiB0b2dnbGUtb2ZmIHN2Zy1pY29uLTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInBheW1lbnRpbnZvaWNlZm9ybS5nZXQoJ2V4dGVuZFBheW1lbnRQZXJpb2REYXlzJyk/LnZhbHVlID4gMCAmJiBwYXltZW50aW52b2ljZWZvcm0uZW5hYmxlZCAgPyBwYXltZW50aW52b2ljZWZvcm0uZ2V0KCdleHRlbmRQYXltZW50UGVyaW9kRGF5cycpPy5zZXRWYWx1ZShwYXltZW50aW52b2ljZWZvcm0uZ2V0KCdleHRlbmRQYXltZW50UGVyaW9kRGF5cycpPy52YWx1ZSAtIDEpIDogbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTQuMTY2OTkgMTBIMTUuODMzN1wiIHN0cm9rZT1cIiM2NjcwODVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZXh0ZW5kUGF5bWVudFBlcmlvZERheXNcIiByZWFkb25seVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJleHRlbmRQYXltZW50UGVyaW9kRGF5c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZXh0ZW5kUGF5bWVudFBlcmlvZERheXNcIiBhdXRvY29tcGxldGU9XCJvZmZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSB0cmFuc2xhdGUtbWlkZGxlLXkgdG9wLTUwIGVuZC0wIG1lLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiB0b2dnbGUtb24gc3ZnLWljb24tMSB0aWNrZXREYXlzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwYXltZW50aW52b2ljZWZvcm0uZW5hYmxlZCAgPyBwYXltZW50aW52b2ljZWZvcm0uZ2V0KCdleHRlbmRQYXltZW50UGVyaW9kRGF5cycpPy5zZXRWYWx1ZShwYXltZW50aW52b2ljZWZvcm0uZ2V0KCdleHRlbmRQYXltZW50UGVyaW9kRGF5cycpPy52YWx1ZSArIDEpIDogbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxN1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE3IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguNDk5NjcgMy4zMzMwMVYxMi42NjYzTTMuODMzMDEgNy45OTk2N0gxMy4xNjYzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBtdC02XCIgKm5nSWY9XCIhcGF5bWVudGludm9pY2VzaG93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZGF0YS1rdC1zdWJzY3JpcHRpb24tdGFibGUtdG9vbGJhcj1cImJhc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPjxhIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLW91dGxpbmUgYnRuIG5lZWRoZWxwIG1lLTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbnBheW1lbnRDYW5jZWwoKVwiPkNhbmNlbDwvYT48YSB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBweC00IG5nLXN0YXItaW5zZXJ0ZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbnBheW1lbnRTdWJtaXQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8uc2V0dGluZ3NfcGF5bWVudFN1YnNjcmlwdGlvbnNfaXNFZGl0XCI+PHNwYW4+QXBwbHlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hhbmdlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2E+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHBheW1lbnQgaW52b2ljZSBmb3JtIGVuZCAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHBheW1lbnQgaW52b2ljZSBlbmQgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSBzdWJzY3JpcHRpb24gY29uZmlnIEVuZCAtLT5cclxuXHJcbiAgICAgICAgICAgIDwhLS1JbnZvaWNlcyBzdGFydCAtLT5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ3RhbmdvJyAmJiAoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8uc2V0dGluZ3NfcGF5bWVudFN1YnNjcmlwdGlvbnNfaXNWaWV3XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBtdC02XCIgbmdiQWNjb3JkaW9uSXRlbT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWFpbmhlYWRpbmdcIiBuZ2JBY2NvcmRpb25CdXR0b24+SW52b2ljZXMgPGRpdiBjbGFzcz1cImRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Db2xsYXBzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Cb2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlclwiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLWxhYmVsIG1iLTJcIj5QYXltZW50IEhpc3Rvcnk8L3NwYW4+XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZSBteS0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMSBwb3NpdGlvbi1hYnNvbHV0ZSBtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IG9wYWNpdHk9XCIwLjVcIiB4PVwiMTcuMDM2NVwiIHk9XCIxNS4xMjIzXCIgd2lkdGg9XCI4LjE1NTQ2XCIgaGVpZ2h0PVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ4PVwiMVwiIHRyYW5zZm9ybT1cInJvdGF0ZSg0NSAxNy4wMzY1IDE1LjEyMjMpXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExIDE5QzYuNTU1NTYgMTkgMyAxNS40NDQ0IDMgMTFDMyA2LjU1NTU2IDYuNTU1NTYgMyAxMSAzQzE1LjQ0NDQgMyAxOSA2LjU1NTU2IDE5IDExQzE5IDE1LjQ0NDQgMTUuNDQ0NCAxOSAxMSAxOVpNMTEgNUM3LjUzMzMzIDUgNSA3LjUzMzMzIDUgMTFDNSAxNC40NjY3IDcuNTMzMzMgMTcgMTEgMTdDMTQuNDY2NyAxNyAxNyAxNC40NjY3IDE3IDExQzE3IDcuNTMzMzMgMTQuNDY2NyA1IDExIDVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbKG5nTW9kZWwpXT1cInNlYXJjaElucHV0XCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBwcy0xNCBtZS00XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGNoYW5nZSk9XCJzZWFyY2hGaWVsZCgpXCIgLz5cclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lLTMgbW9udGh3aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0IFwiIGFyaWEtbGFiZWw9XCJEZWZhdWx0IHNlbGVjdCBleGFtcGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gc2VsZWN0ZWQ+Q3VycmVudCBNb250aDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiMVwiPlByZXZpb3VzIE1vbnRoPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCIyXCI+TGFzdCAzIE1vbjwvb3B0aW9uPlxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjcmVkaXRub3RlKClcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tb3V0bGluZSAgYnRuIGFsaWduLWl0ZW1zLWVuZCB0ZXh0LW5vd3JhcCBtZS00XCIgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8uc2V0dGluZ3NfcGF5bWVudFN1YnNjcmlwdGlvbnNfaXNFZGl0XCI+PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjEgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAuNDk5MyA0LjE2Njc1VjE1LjgzMzRNNC42NjYwMiAxMC4wMDAxSDE2LjMzMjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48c3Bhbj5DcmVkaXQgTm90ZTwvc3Bhbj4gPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbkV4cG9ydCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLW91dGxpbmUgYnRuIGFsaWduLWl0ZW1zLWVuZCB0ZXh0LW5vd3JhcCBtZS00XCIgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8uc2V0dGluZ3NfcGF5bWVudFN1YnNjcmlwdGlvbnNfaXNEb3dubG9hZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTcuNSAxMi41VjE1LjgzMzNDMTcuNSAxNi4yNzU0IDE3LjMyNDQgMTYuNjk5MyAxNy4wMTE4IDE3LjAxMThDMTYuNjk5MyAxNy4zMjQ0IDE2LjI3NTQgMTcuNSAxNS44MzMzIDE3LjVINC4xNjY2N0MzLjcyNDY0IDE3LjUgMy4zMDA3MiAxNy4zMjQ0IDIuOTg4MTYgMTcuMDExOEMyLjY3NTU5IDE2LjY5OTMgMi41IDE2LjI3NTQgMi41IDE1LjgzMzNWMTIuNU0xNC4xNjY3IDYuNjY2NjdMMTAgMi41TTEwIDIuNUw1LjgzMzMzIDYuNjY2NjdNMTAgMi41VjEyLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTJcIj48L3NwYW4+IEV4cG9ydDwvYnV0dG9uPlxyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGJvdHRvbS1ib3JkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5JbnZvaWNlICM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+QmlsbGluZyBkYXRlPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlN0b3JlczwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5Qcm9kdWN0czwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5BbW91bnQ8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+QWN0aW9uczwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBpbnZvaWNlIG9mIGludm9pY2VMaXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZS1wcmltYXJ5IGludm9pY2VcIj57e2ludm9pY2U/Lmludm9pY2V9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzXCI+e3tpbnZvaWNlPy5zdGF0dXN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3tpbnZvaWNlPy5iaWxsaW5nRGF0ZX19IDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPnt7aW52b2ljZT8uc3RvcmVzfX08L2Rpdj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiAqbmdGb3I9XCJsZXQgcHJvZHVjdCBvZiBpbnZvaWNlPy5wcm9kdWN0czsgbGV0IGkgPSBpbmRleFwiPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJnZXRDb2xvckNsYXNzKHByb2R1Y3QpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpPDJcIj57e3Byb2R1Y3R9fTwvc3Bhbj48c3BhbiBjbGFzcz1cInByb2R1Y3RleHRlbmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImk+PTJcIj4re3tpbnZvaWNlPy5wcm9kdWN0cy5sZW5ndGggLSAyIH19PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3tpbnZvaWNlPy5hbW91bnR9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBvaW50ZXJcIj48c3ZnIGNsYXNzPVwibXQtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTcuNSAxMi41VjE1LjgzMzNDMTcuNSAxNi4yNzU0IDE3LjMyNDQgMTYuNjk5MyAxNy4wMTE4IDE3LjAxMThDMTYuNjk5MyAxNy4zMjQ0IDE2LjI3NTQgMTcuNSAxNS44MzMzIDE3LjVINC4xNjY2N0MzLjcyNDY0IDE3LjUgMy4zMDA3MiAxNy4zMjQ0IDIuOTg4MTYgMTcuMDExOEMyLjY3NTU5IDE2LjY5OTMgMi41IDE2LjI3NTQgMi41IDE1LjgzMzNWMTIuNU01LjgzMzMzIDguMzMzMzNMMTAgMTIuNU0xMCAxMi41TDE0LjE2NjcgOC4zMzMzM00xMCAxMi41VjIuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXBhZ2luYXRpb24gY2xhc3M9XCJ0ZXh0LXN0YXJ0XCIgW2l0ZW1zUGVyUGFnZV09XCJpdGVtc1BlclBhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1cnJlbnRQYWdlXT1cImN1cnJlbnRQYWdlXCIgW3RvdGFsSXRlbXNdPVwidG90YWxJdGVtc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGFnaW5hdGlvblNpemVzXT1cInBhZ2luYXRpb25TaXplc1wiIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFnZVNpemVDaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCI+PC9saWItcGFnaW5hdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8IS0tSW52b2ljZXMgZW5kIC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+Il19
|