@hmcts/ccpay-web-component 6.3.0-beta4 → 6.3.1-beta02

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (22) hide show
  1. package/esm2022/lib/components/add-remission/add-remission.component.mjs +4 -3
  2. package/esm2022/lib/components/allocate-payments/allocate-payments.component.mjs +3 -3
  3. package/esm2022/lib/components/case-transactions/case-transactions.component.mjs +3 -3
  4. package/esm2022/lib/components/fee-summary/fee-summary.component.mjs +23 -5
  5. package/esm2022/lib/components/mark-unidentified-payment/mark-unidentified-payment.component.mjs +3 -3
  6. package/esm2022/lib/components/mark-unsolicited-payment/mark-unsolicited-payment.component.mjs +3 -3
  7. package/esm2022/lib/components/payment-view/payment-view.component.mjs +3 -3
  8. package/esm2022/lib/components/pba-payment/pba-payment.component.mjs +3 -3
  9. package/esm2022/lib/components/process-refund/process-refund.component.mjs +3 -3
  10. package/esm2022/lib/components/processed-payments/processed-payments.component.mjs +3 -3
  11. package/esm2022/lib/components/refund-status/refund-status.component.mjs +3 -3
  12. package/esm2022/lib/components/reports/reports.component.mjs +3 -3
  13. package/esm2022/lib/components/service-request/service-request.component.mjs +3 -3
  14. package/esm2022/lib/components/unprocessed-payments/unprocessed-payments.component.mjs +3 -3
  15. package/esm2022/lib/interfaces/PayhubAntennaRequest.mjs +4 -2
  16. package/esm2022/lib/interfaces/PaymentToPayhubRequest.mjs +4 -2
  17. package/fesm2022/hmcts-ccpay-web-component.mjs +54 -31
  18. package/fesm2022/hmcts-ccpay-web-component.mjs.map +1 -1
  19. package/lib/components/fee-summary/fee-summary.component.d.ts +7 -1
  20. package/lib/interfaces/PayhubAntennaRequest.d.ts +2 -1
  21. package/lib/interfaces/PaymentToPayhubRequest.d.ts +2 -1
  22. package/package.json +1 -1
@@ -401,11 +401,11 @@ export class ProcessRefundComponent {
401
401
  this.notificationPreview = false;
402
402
  }
403
403
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProcessRefundComponent, deps: [{ token: i1.RefundsService }, { token: i2.PaymentViewService }, { token: i3.FormBuilder }, { token: i4.OrderslistService }, { token: i5.NotificationService }, { token: 'PAYMENT_LIB' }, { token: i6.Router }, { token: i6.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
404
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ProcessRefundComponent, selector: "ccpay-process-refund", inputs: { refundReference: "refundReference", refundlistsource: "refundlistsource" }, ngImport: i0, template: "<ng-container *ngIf=\"viewStatus === 'RefundProcess'\">\n<div class=\"govuk-width-container\">\n\n <main class=\"govuk-main-wrapper govuk-!-padding-top-0\" [ngClass]=\"{'govuk-radios__conditional--hidden': isSuccesspageEnable}\" id=\"main-content\" role=\"main\">\n <div *ngIf=\"errorMessage.showError\">\n <div class=\"error-summary\" role=\"group\" aria-labelledby=\"failure-error-summary-heading\" tabindex=\"-1\">\n <h2 class=\"heading-medium error-summary-heading\" id=\"failure-error-summary-heading\">\n {{errorMessage.title}}\n </h2>\n <div class=\"govuk-error-summary__body process-refund-font\">\n {{errorMessage.body}}\n </div>\n </div>\n </div>\n\n <div class=\"payment-view-alignment\">\n\n <div class=\"govuk-grid-row\">\n <div class=\"column\">\n <h1 class=\"heading-large govuk-!-margin-top-0\">Review refund details</h1>\n </div>\n </div>\n <table>\n <tbody>\n\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Payment to be refunded</td>\n <td colspan=\"2\">{{refundlistsource?.refund_reference}} ({{refundlistsource.amount | currency :'GBP':'symbol':'1.2-2' }})</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Reason for refund</td>\n <td colspan=\"2\">{{refundlistsource?.reason?.trim()}}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Amount to be refunded</td>\n <td colspan=\"2\">{{refundlistsource?.amount | currency :'GBP':'symbol':'1.2-2' }}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Sent to</td>\n <td colspan=\"2\">{{cpoDetails?.responsibleParty}}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Sent via</td>\n <td colspan=\"2\">\n <div *ngIf=\"refundlistsource?.contact_details?.notification_type === 'EMAIL'\" class=\"contactDetails-width font-size-19px\">\n <strong>Email</strong>\n <br/>\n {{refundlistsource?.contact_details?.email?.trim()}}\n </div>\n <div *ngIf=\"refundlistsource?.contact_details?.notification_type === 'LETTER'\" class=\"contactDetails-width font-size-19px\">\n <strong>Post</strong>\n <br/>\n {{refundlistsource?.contact_details?.address_line?.trim()}} {{refundlistsource?.contact_details?.city?.trim()}} {{refundlistsource?.contact_details?.county?.trim()}} {{refundlistsource?.contact_details?.country?.trim()}} {{refundlistsource?.contact_details?.postal_code?.trim()}}\n </div>\n </td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Submitted by</td>\n <td colspan=\"2\">{{refundlistsource?.user_full_name}}</td>\n\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Date submitted</td>\n <td colspan=\"2\">{{refundlistsource?.date_created | date:'d MMMM yyyy' }}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Notification</td>\n <td>{{templateInstructionType}}</td>\n <td>\n <a *ngIf=\"!notificationPreview\" href=\"Javascript:void(0)\" class=\"govuk-link pointer right\" (click)=\"showNotificationPreview()\">\n Preview\n </a>\n <a *ngIf=\"notificationPreview\" href=\"Javascript:void(0)\" class=\"govuk-link pointer right\" (click)=\"hideNotificationPreview()\">\n Hide Preview\n </a>\n </td>\n\n </tr>\n\n </tbody>\n </table>\n\n <app-notification-preview *ngIf=\"notificationPreview\" [paymentReference]=\"refundlistsource?.payment_reference\"\n [payment]=\"paymentObj\"\n [contactDetails]=\"refundlistsource?.contact_details\"\n [refundReason]=\"refundlistsource?.reason_code\" [refundAmount]=\"refundlistsource?.amount\"\n [refundReference]=\"refundlistsource?.refund_reference\"\n (notificationPreviewEvent) = \"getNotificationPreviewObj($event)\">\n </app-notification-preview>\n\n <div>\n </div>\n </div>\n <div class=\"process-refund__panel\">\n <form [formGroup]=\"processRefundForm\" novalidate>\n <div class=\"\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"sign-in-hint\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--l\">\n <h1 class=\"heading-large\">\n What do you want to do with this refund?\n </h1>\n </legend>\n <div class=\"govuk-radios\" [ngClass]=\"{'form-group-error': refundActionsHasError}\">\n <p class=\"inline-error-message\"\n *ngIf=\"refundActionsHasError\">\n <span *ngIf=\"refundActionsHasError\">Please select an action</span>\n </p>\n <div class=\"govuk-radios__item\" *ngFor=\"let refundAction of refundActionList; let i = index;\">\n <input class=\"govuk-radios__input\"\n id=\"refundAction-{{i}}\"\n name=\"refundActionField\"\n type=\"radio\"\n formControlName=\"refundActionField\"\n (click)=\"checkRefundActions(refundAction.code)\"\n value=\"{{refundAction.code}}\">\n <label class=\"govuk-label govuk-radios__label process-refund-font\" for=\"refundAction-{{i}}\">\n {{refundAction.code}}\n </label>\n <div id=\"sign-in-item-hint\" class=\"govuk-hint govuk-radios__hint process-refund-font\">\n {{refundAction.label}}\n </div>\n </div>\n <div class=\"govuk-radios__conditional\" [ngClass]=\"{'govuk-radios__conditional--hidden': !isSendMeBackClicked}\">\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label process-refund-font\" for=\"sendmeback\">\n Add a reason\n </label>\n <p class=\"inline-error-message\"\n *ngIf=\"isReasonFieldEmpty || isReasonFieldInvalid || reasonFieldMinHasError || reasonFieldMaxHasError\">\n <span *ngIf=\"isReasonFieldEmpty\">Add a reason</span>\n <span *ngIf=\"isReasonFieldInvalid\">Add a valid reason</span>\n <span *ngIf=\"reasonFieldMinHasError\">Reason should be at least 3 characters.</span>\n <span *ngIf=\"reasonFieldMaxHasError\">Reason should be 255 characters or under.</span>\n </p>\n <textarea class=\"govuk-textarea govuk-!-width-one-third reason-font\"\n [ngClass]=\"{'inline-error-class': isReasonFieldEmpty || isReasonFieldInvalid || reasonFieldMinHasError || reasonFieldMaxHasError}\"\n id=\"sendmeback\"\n name=\"sendMeBackField\"\n formControlName=\"sendMeBackField\"\n rows=\"5\"></textarea>\n\n </div>\n\n </div>\n\n </div>\n\n </fieldset>\n </div>\n\n <div [ngClass]=\"{'govuk-radios__conditional--hidden': !isRejectClicked}\">\n <fieldset class=\"govuk-fieldset\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--l\">\n <h2 class=\"heading-medium\">\n Why are you rejecting this refund?\n </h2>\n </legend>\n <div class=\"govuk-radios\" [ngClass]=\"{'form-group-error': refundRejectReasonHasError}\">\n <p class=\"inline-error-message\"\n *ngIf=\"refundRejectReasonHasError\">\n <span *ngIf=\"refundRejectReasonHasError\">Please select a reject reason</span>\n </p>\n <div class=\"govuk-radios__item\" *ngFor=\"let refundRejectReason of refundRejectReasonList; let j = index;\">\n <input class=\"govuk-radios__input\"\n id=\"refundRejectReason-{{j}}\"\n formControlName=\"refundRejectReasonField\"\n name=\"refundRejectReasonField\"\n (click)=\"checkRefundActions(refundRejectReason.code)\"\n type=\"radio\" value=\"{{refundRejectReason.code}}\">\n <label class=\"govuk-label govuk-radios__label process-refund-font\" for=\"refundRejectReason-{{j}}\">\n {{refundRejectReason.name}}\n </label>\n </div>\n </div>\n <div class=\"govuk-radios__conditional\" [ngClass]=\"{'govuk-radios__conditional--hidden': !isOtherClicked}\" id=\"conditional-contact-3\">\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label process-refund-font \" for=\"otherReason\">\n Enter reason\n </label>\n <p class=\"inline-error-message\" *ngIf=\"isReasonEmpty || isReasonInvalid\">\n <span *ngIf=\"isReasonEmpty\">Enter reason.</span>\n <span *ngIf=\"isReasonInvalid\">Enter a valid reason</span>\n </p>\n <input class=\"govuk-input govuk-!-width-one-third reason-font\" id=\"otherReason\"\n [ngClass]=\"{'inline-error-class': isReasonEmpty || isReasonInvalid}\"\n formControlName=\"enterReasonField\" name=\"enterReasonField\" type=\"text\"></div>\n\n </div>\n\n </fieldset>\n </div>\n\n <div class=\"govuk-button-group\">\n <button (click)=\"redirecttoRefundListPage()\" class=\"govuk-button govuk-button--secondary marginright\"> Previous</button>\n <button (click)=\"processRefundSubmit()\" class=\"govuk-button button\"\n data-module=\"govuk-button\">\n Submit\n </button>\n <br/><br/>\n </div>\n\n <div *ngIf=\"!isFromRefundListPage\" class=\"govuk-button-group margin\">\n\n <p><a (click)=\"loadRefundsHomePage()\" class=\"govuk-link pointer\" data-module=\"govuk-button\">Cancel</a></p>\n</div>\n</form>\n </div>\n\n\n </main>\n\n <main class=\"govuk-main-wrapper govuk-main-wrapper--l success-page-padding--top25\" [ngClass]=\"{'govuk-radios__conditional--hidden': !isSuccesspageEnable}\" id=\"main-content\" role=\"main\" >\n <div class=\"govuk-grid-row pagesize\">\n <div class=\"govuk-panel govuk-panel-refund--confirmation\">\n <h1 class=\"heading-refunds-xlarge\">\n {{successMsg}}\n </h1>\n </div>\n <p class=\"govuk-body process-refund-font\">\n <a href=\"Javascript:void(0)\" (click)=\"goToCaseReview()\" class=\"govuk-link pointer\">Return to case</a>\n </p>\n </div>\n </main>\n</div>\n</ng-container>\n\n", styles: [".tb-col-w{width:330px}.tr-border{border-bottom:2px solid}.payment-view-alignment{margin-left:30px}.govuk-button{float:left!important;font-size:19px;margin-top:2em!important}.remission{margin-bottom:7em}.process-refund-font{font-size:19px!important}.govuk-radios__conditional--hidden{display:none}.inline-error-message{color:#c11717;font-weight:700;margin-top:10px;border-color:#c11717}.inline-error-class{outline:3px solid #c11717;outline-offset:0;border-color:#c11717}.form-group-error{border-left:5px solid #c11717;padding-left:15px}.govuk-panel-refund--confirmation{color:#fff;background:#00703c}.process-refund__panel{margin-left:25px;margin-top:30px}.button-margin--left25{margin-left:25px}.success-page-padding--top25{padding-top:25px}.margin{margin-top:5em}.marginright{margin-right:1.5em}.govuk-textarea{line-height:2.25}.reason-font{font-size:19px!important}.pointer{cursor:pointer}.right{float:right}.pagesize{margin:2em;width:97%}.heading-refunds-xlarge{color:#fff;font-family:nta,Arial,sans-serif;font-weight:700;text-transform:none;font-size:32px;line-height:1.09375;margin-top:.46875em;margin-bottom:.9375em}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i8.NotificationPreviewComponent, selector: "app-notification-preview", inputs: ["payment", "contactDetails", "refundReason", "refundAmount", "paymentReference", "refundReference", "previewJourney", "notificationSent"], outputs: ["notificationPreviewEvent"] }, { kind: "pipe", type: i7.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i7.DatePipe, name: "date" }] });
404
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ProcessRefundComponent, selector: "ccpay-process-refund", inputs: { refundReference: "refundReference", refundlistsource: "refundlistsource" }, ngImport: i0, template: "<ng-container *ngIf=\"viewStatus === 'RefundProcess'\">\n<div class=\"govuk-width-container\">\n\n <main class=\"govuk-main-wrapper govuk-!-padding-top-0\" [ngClass]=\"{'govuk-radios__conditional--hidden': isSuccesspageEnable}\" id=\"main-content\" role=\"main\">\n <div *ngIf=\"errorMessage.showError\">\n <div class=\"error-summary\" role=\"group\" aria-labelledby=\"failure-error-summary-heading\" tabindex=\"-1\">\n <h2 class=\"heading-medium error-summary-heading\" id=\"failure-error-summary-heading\">\n {{errorMessage.title}}\n </h2>\n <div class=\"govuk-error-summary__body process-refund-font\">\n {{errorMessage.body}}\n </div>\n </div>\n </div>\n\n <div class=\"payment-view-alignment\">\n\n <div class=\"govuk-grid-row\">\n <div class=\"column\">\n <h1 class=\"heading-large govuk-!-margin-top-0\">Review refund details</h1>\n </div>\n </div>\n <table>\n <tbody>\n\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Payment to be refunded</td>\n <td colspan=\"2\">{{refundlistsource?.refund_reference}} ({{refundlistsource.amount | currency :'GBP':'symbol':'1.2-2' }})</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Reason for refund</td>\n <td colspan=\"2\">{{refundlistsource?.reason?.trim()}}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Amount to be refunded</td>\n <td colspan=\"2\">{{refundlistsource?.amount | currency :'GBP':'symbol':'1.2-2' }}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Sent to</td>\n <td colspan=\"2\">{{cpoDetails?.responsibleParty}}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Sent via</td>\n <td colspan=\"2\">\n <div *ngIf=\"refundlistsource?.contact_details?.notification_type === 'EMAIL'\" class=\"contactDetails-width font-size-19px\">\n <strong>Email</strong>\n <br/>\n {{refundlistsource?.contact_details?.email?.trim()}}\n </div>\n <div *ngIf=\"refundlistsource?.contact_details?.notification_type === 'LETTER'\" class=\"contactDetails-width font-size-19px\">\n <strong>Post</strong>\n <br/>\n {{refundlistsource?.contact_details?.address_line?.trim()}} {{refundlistsource?.contact_details?.city?.trim()}} {{refundlistsource?.contact_details?.county?.trim()}} {{refundlistsource?.contact_details?.country?.trim()}} {{refundlistsource?.contact_details?.postal_code?.trim()}}\n </div> \n </td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Submitted by</td>\n <td colspan=\"2\">{{refundlistsource?.user_full_name}}</td>\n\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Date submitted</td>\n <td colspan=\"2\">{{refundlistsource?.date_created | date:'d MMMM yyyy' }}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Notification</td>\n <td>{{templateInstructionType}}</td>\n <td>\n <a *ngIf=\"!notificationPreview\" href=\"Javascript:void(0)\" class=\"govuk-link pointer right\" (click)=\"showNotificationPreview()\">\n Preview\n </a>\n <a *ngIf=\"notificationPreview\" href=\"Javascript:void(0)\" class=\"govuk-link pointer right\" (click)=\"hideNotificationPreview()\">\n Hide Preview\n </a>\n </td>\n\n </tr>\n\n </tbody>\n </table>\n\n <app-notification-preview *ngIf=\"notificationPreview\" [paymentReference]=\"refundlistsource?.payment_reference\"\n [payment]=\"paymentObj\"\n [contactDetails]=\"refundlistsource?.contact_details\"\n [refundReason]=\"refundlistsource?.reason_code\" [refundAmount]=\"refundlistsource?.amount\"\n [refundReference]=\"refundlistsource?.refund_reference\"\n (notificationPreviewEvent) = \"getNotificationPreviewObj($event)\">\n </app-notification-preview>\n\n <div>\n </div>\n </div>\n <div class=\"process-refund__panel\">\n <form [formGroup]=\"processRefundForm\" novalidate>\n <div class=\"\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"sign-in-hint\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--l\">\n <h1 class=\"heading-large\">\n What do you want to do with this refund?\n </h1>\n </legend>\n <div class=\"govuk-radios\" [ngClass]=\"{'form-group-error': refundActionsHasError}\">\n <p class=\"inline-error-message\"\n *ngIf=\"refundActionsHasError\">\n <span *ngIf=\"refundActionsHasError\">Please select an action</span>\n </p>\n <div class=\"govuk-radios__item\" *ngFor=\"let refundAction of refundActionList; let i = index;\">\n <input class=\"govuk-radios__input\" \n id=\"refundAction-{{i}}\" \n name=\"refundActionField\"\n type=\"radio\"\n formControlName=\"refundActionField\"\n (click)=\"checkRefundActions(refundAction.code)\"\n value=\"{{refundAction.code}}\">\n <label class=\"govuk-label govuk-radios__label process-refund-font\" for=\"refundAction-{{i}}\">\n {{refundAction.code}}\n </label>\n <div id=\"sign-in-item-hint\" class=\"govuk-hint govuk-radios__hint process-refund-font\">\n {{refundAction.label}}\n </div>\n </div>\n <div class=\"govuk-radios__conditional\" [ngClass]=\"{'govuk-radios__conditional--hidden': !isSendMeBackClicked}\">\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label process-refund-font\" for=\"contact-by-text\">\n Add a reason\n </label>\n <p class=\"inline-error-message\"\n *ngIf=\"isReasonFieldEmpty || isReasonFieldInvalid || reasonFieldMinHasError || reasonFieldMaxHasError\">\n <span *ngIf=\"isReasonFieldEmpty\">Add a reason</span>\n <span *ngIf=\"isReasonFieldInvalid\">Add a valid reason</span>\n <span *ngIf=\"reasonFieldMinHasError\">Reason should be at least 3 characters.</span>\n <span *ngIf=\"reasonFieldMaxHasError\">Reason should be 255 characters or under.</span>\n </p>\n <textarea class=\"govuk-textarea govuk-!-width-one-third reason-font\"\n [ngClass]=\"{'inline-error-class': isReasonFieldEmpty || isReasonFieldInvalid || reasonFieldMinHasError || reasonFieldMaxHasError}\"\n id=\"sendmeback\"\n name=\"sendMeBackField\" \n formControlName=\"sendMeBackField\"\n rows=\"5\"></textarea>\n \n </div>\n\n </div>\n \n </div>\n \n </fieldset>\n </div>\n\n <div [ngClass]=\"{'govuk-radios__conditional--hidden': !isRejectClicked}\">\n <fieldset class=\"govuk-fieldset\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--l\">\n <h2 class=\"heading-medium\">\n Why are you rejecting this refund?\n </h2>\n </legend>\n <div class=\"govuk-radios\" [ngClass]=\"{'form-group-error': refundRejectReasonHasError}\">\n <p class=\"inline-error-message\"\n *ngIf=\"refundRejectReasonHasError\">\n <span *ngIf=\"refundRejectReasonHasError\">Please select a reject reason</span>\n </p>\n <div class=\"govuk-radios__item\" *ngFor=\"let refundRejectReason of refundRejectReasonList; let j = index;\">\n <input class=\"govuk-radios__input\" \n id=\"refundRejectReason-{{j}}\"\n formControlName=\"refundRejectReasonField\"\n name=\"refundRejectReasonField\"\n (click)=\"checkRefundActions(refundRejectReason.code)\"\n type=\"radio\" value=\"{{refundRejectReason.code}}\">\n <label class=\"govuk-label govuk-radios__label process-refund-font\" for=\"refundRejectReason-{{j}}\">\n {{refundRejectReason.name}}\n </label>\n </div>\n </div>\n <div class=\"govuk-radios__conditional\" [ngClass]=\"{'govuk-radios__conditional--hidden': !isOtherClicked}\" id=\"conditional-contact-3\">\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label process-refund-font \" for=\"contact-by-text\">\n Enter reason\n </label>\n <p class=\"inline-error-message\" *ngIf=\"isReasonEmpty || isReasonInvalid\">\n <span *ngIf=\"isReasonEmpty\">Enter reason.</span>\n <span *ngIf=\"isReasonInvalid\">Enter a valid reason</span>\n </p>\n <input class=\"govuk-input govuk-!-width-one-third reason-font\" id=\"otherReason\" \n [ngClass]=\"{'inline-error-class': isReasonEmpty || isReasonInvalid}\"\n formControlName=\"enterReasonField\" name=\"enterReasonField\" type=\"text\"></div>\n \n </div>\n \n </fieldset>\n </div>\n\n <div class=\"govuk-button-group\">\n <button (click)=\"redirecttoRefundListPage()\" class=\"govuk-button govuk-button--secondary marginright\"> Previous</button>\n <button (click)=\"processRefundSubmit()\" class=\"govuk-button button\"\n data-module=\"govuk-button\">\n Submit \n </button>\n <br/><br/>\n </div>\n \n <div *ngIf=\"!isFromRefundListPage\" class=\"govuk-button-group margin\">\n\n <p><a (click)=\"loadRefundsHomePage()\" class=\"govuk-link pointer\" data-module=\"govuk-button\">Cancel</a></p>\n</div>\n</form>\n </div>\n \n\n </main>\n \n <main class=\"govuk-main-wrapper govuk-main-wrapper--l success-page-padding--top25\" [ngClass]=\"{'govuk-radios__conditional--hidden': !isSuccesspageEnable}\" id=\"main-content\" role=\"main\" >\n <div class=\"govuk-grid-row pagesize\">\n <div class=\"govuk-panel govuk-panel-refund--confirmation\">\n <h1 class=\"heading-refunds-xlarge\">\n {{successMsg}}\n </h1>\n </div>\n <p class=\"govuk-body process-refund-font\">\n <a href=\"Javascript:void(0)\" (click)=\"goToCaseReview()\" class=\"govuk-link pointer\">Return to case</a>\n </p>\n </div>\n </main>\n</div>\n</ng-container>\n\n", styles: [".tb-col-w{width:330px}.tr-border{border-bottom:2px solid}.payment-view-alignment{margin-left:30px}.govuk-button{float:left!important;font-size:19px;margin-top:2em!important}.remission{margin-bottom:7em}.process-refund-font{font-size:19px!important}.govuk-radios__conditional--hidden{display:none}.inline-error-message{color:#c11717;font-weight:700;margin-top:10px;border-color:#c11717}.inline-error-class{outline:3px solid #c11717;outline-offset:0;border-color:#c11717}.form-group-error{border-left:5px solid #c11717;padding-left:15px}.govuk-panel-refund--confirmation{color:#fff;background:#00703c}.process-refund__panel{margin-left:25px;margin-top:30px}.button-margin--left25{margin-left:25px}.success-page-padding--top25{padding-top:25px}.margin{margin-top:5em}.marginright{margin-right:1.5em}.govuk-textarea{line-height:2.25}.reason-font{font-size:19px!important}.pointer{cursor:pointer}.right{float:right}.pagesize{margin:2em;width:97%}.heading-refunds-xlarge{color:#fff;font-family:nta,Arial,sans-serif;font-weight:700;text-transform:none;font-size:32px;line-height:1.09375;margin-top:.46875em;margin-bottom:.9375em}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i8.NotificationPreviewComponent, selector: "app-notification-preview", inputs: ["payment", "contactDetails", "refundReason", "refundAmount", "paymentReference", "refundReference", "previewJourney", "notificationSent"], outputs: ["notificationPreviewEvent"] }, { kind: "pipe", type: i7.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i7.DatePipe, name: "date" }] });
405
405
  }
406
406
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProcessRefundComponent, decorators: [{
407
407
  type: Component,
408
- args: [{ selector: 'ccpay-process-refund', template: "<ng-container *ngIf=\"viewStatus === 'RefundProcess'\">\n<div class=\"govuk-width-container\">\n\n <main class=\"govuk-main-wrapper govuk-!-padding-top-0\" [ngClass]=\"{'govuk-radios__conditional--hidden': isSuccesspageEnable}\" id=\"main-content\" role=\"main\">\n <div *ngIf=\"errorMessage.showError\">\n <div class=\"error-summary\" role=\"group\" aria-labelledby=\"failure-error-summary-heading\" tabindex=\"-1\">\n <h2 class=\"heading-medium error-summary-heading\" id=\"failure-error-summary-heading\">\n {{errorMessage.title}}\n </h2>\n <div class=\"govuk-error-summary__body process-refund-font\">\n {{errorMessage.body}}\n </div>\n </div>\n </div>\n\n <div class=\"payment-view-alignment\">\n\n <div class=\"govuk-grid-row\">\n <div class=\"column\">\n <h1 class=\"heading-large govuk-!-margin-top-0\">Review refund details</h1>\n </div>\n </div>\n <table>\n <tbody>\n\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Payment to be refunded</td>\n <td colspan=\"2\">{{refundlistsource?.refund_reference}} ({{refundlistsource.amount | currency :'GBP':'symbol':'1.2-2' }})</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Reason for refund</td>\n <td colspan=\"2\">{{refundlistsource?.reason?.trim()}}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Amount to be refunded</td>\n <td colspan=\"2\">{{refundlistsource?.amount | currency :'GBP':'symbol':'1.2-2' }}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Sent to</td>\n <td colspan=\"2\">{{cpoDetails?.responsibleParty}}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Sent via</td>\n <td colspan=\"2\">\n <div *ngIf=\"refundlistsource?.contact_details?.notification_type === 'EMAIL'\" class=\"contactDetails-width font-size-19px\">\n <strong>Email</strong>\n <br/>\n {{refundlistsource?.contact_details?.email?.trim()}}\n </div>\n <div *ngIf=\"refundlistsource?.contact_details?.notification_type === 'LETTER'\" class=\"contactDetails-width font-size-19px\">\n <strong>Post</strong>\n <br/>\n {{refundlistsource?.contact_details?.address_line?.trim()}} {{refundlistsource?.contact_details?.city?.trim()}} {{refundlistsource?.contact_details?.county?.trim()}} {{refundlistsource?.contact_details?.country?.trim()}} {{refundlistsource?.contact_details?.postal_code?.trim()}}\n </div>\n </td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Submitted by</td>\n <td colspan=\"2\">{{refundlistsource?.user_full_name}}</td>\n\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Date submitted</td>\n <td colspan=\"2\">{{refundlistsource?.date_created | date:'d MMMM yyyy' }}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Notification</td>\n <td>{{templateInstructionType}}</td>\n <td>\n <a *ngIf=\"!notificationPreview\" href=\"Javascript:void(0)\" class=\"govuk-link pointer right\" (click)=\"showNotificationPreview()\">\n Preview\n </a>\n <a *ngIf=\"notificationPreview\" href=\"Javascript:void(0)\" class=\"govuk-link pointer right\" (click)=\"hideNotificationPreview()\">\n Hide Preview\n </a>\n </td>\n\n </tr>\n\n </tbody>\n </table>\n\n <app-notification-preview *ngIf=\"notificationPreview\" [paymentReference]=\"refundlistsource?.payment_reference\"\n [payment]=\"paymentObj\"\n [contactDetails]=\"refundlistsource?.contact_details\"\n [refundReason]=\"refundlistsource?.reason_code\" [refundAmount]=\"refundlistsource?.amount\"\n [refundReference]=\"refundlistsource?.refund_reference\"\n (notificationPreviewEvent) = \"getNotificationPreviewObj($event)\">\n </app-notification-preview>\n\n <div>\n </div>\n </div>\n <div class=\"process-refund__panel\">\n <form [formGroup]=\"processRefundForm\" novalidate>\n <div class=\"\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"sign-in-hint\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--l\">\n <h1 class=\"heading-large\">\n What do you want to do with this refund?\n </h1>\n </legend>\n <div class=\"govuk-radios\" [ngClass]=\"{'form-group-error': refundActionsHasError}\">\n <p class=\"inline-error-message\"\n *ngIf=\"refundActionsHasError\">\n <span *ngIf=\"refundActionsHasError\">Please select an action</span>\n </p>\n <div class=\"govuk-radios__item\" *ngFor=\"let refundAction of refundActionList; let i = index;\">\n <input class=\"govuk-radios__input\"\n id=\"refundAction-{{i}}\"\n name=\"refundActionField\"\n type=\"radio\"\n formControlName=\"refundActionField\"\n (click)=\"checkRefundActions(refundAction.code)\"\n value=\"{{refundAction.code}}\">\n <label class=\"govuk-label govuk-radios__label process-refund-font\" for=\"refundAction-{{i}}\">\n {{refundAction.code}}\n </label>\n <div id=\"sign-in-item-hint\" class=\"govuk-hint govuk-radios__hint process-refund-font\">\n {{refundAction.label}}\n </div>\n </div>\n <div class=\"govuk-radios__conditional\" [ngClass]=\"{'govuk-radios__conditional--hidden': !isSendMeBackClicked}\">\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label process-refund-font\" for=\"sendmeback\">\n Add a reason\n </label>\n <p class=\"inline-error-message\"\n *ngIf=\"isReasonFieldEmpty || isReasonFieldInvalid || reasonFieldMinHasError || reasonFieldMaxHasError\">\n <span *ngIf=\"isReasonFieldEmpty\">Add a reason</span>\n <span *ngIf=\"isReasonFieldInvalid\">Add a valid reason</span>\n <span *ngIf=\"reasonFieldMinHasError\">Reason should be at least 3 characters.</span>\n <span *ngIf=\"reasonFieldMaxHasError\">Reason should be 255 characters or under.</span>\n </p>\n <textarea class=\"govuk-textarea govuk-!-width-one-third reason-font\"\n [ngClass]=\"{'inline-error-class': isReasonFieldEmpty || isReasonFieldInvalid || reasonFieldMinHasError || reasonFieldMaxHasError}\"\n id=\"sendmeback\"\n name=\"sendMeBackField\"\n formControlName=\"sendMeBackField\"\n rows=\"5\"></textarea>\n\n </div>\n\n </div>\n\n </div>\n\n </fieldset>\n </div>\n\n <div [ngClass]=\"{'govuk-radios__conditional--hidden': !isRejectClicked}\">\n <fieldset class=\"govuk-fieldset\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--l\">\n <h2 class=\"heading-medium\">\n Why are you rejecting this refund?\n </h2>\n </legend>\n <div class=\"govuk-radios\" [ngClass]=\"{'form-group-error': refundRejectReasonHasError}\">\n <p class=\"inline-error-message\"\n *ngIf=\"refundRejectReasonHasError\">\n <span *ngIf=\"refundRejectReasonHasError\">Please select a reject reason</span>\n </p>\n <div class=\"govuk-radios__item\" *ngFor=\"let refundRejectReason of refundRejectReasonList; let j = index;\">\n <input class=\"govuk-radios__input\"\n id=\"refundRejectReason-{{j}}\"\n formControlName=\"refundRejectReasonField\"\n name=\"refundRejectReasonField\"\n (click)=\"checkRefundActions(refundRejectReason.code)\"\n type=\"radio\" value=\"{{refundRejectReason.code}}\">\n <label class=\"govuk-label govuk-radios__label process-refund-font\" for=\"refundRejectReason-{{j}}\">\n {{refundRejectReason.name}}\n </label>\n </div>\n </div>\n <div class=\"govuk-radios__conditional\" [ngClass]=\"{'govuk-radios__conditional--hidden': !isOtherClicked}\" id=\"conditional-contact-3\">\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label process-refund-font \" for=\"otherReason\">\n Enter reason\n </label>\n <p class=\"inline-error-message\" *ngIf=\"isReasonEmpty || isReasonInvalid\">\n <span *ngIf=\"isReasonEmpty\">Enter reason.</span>\n <span *ngIf=\"isReasonInvalid\">Enter a valid reason</span>\n </p>\n <input class=\"govuk-input govuk-!-width-one-third reason-font\" id=\"otherReason\"\n [ngClass]=\"{'inline-error-class': isReasonEmpty || isReasonInvalid}\"\n formControlName=\"enterReasonField\" name=\"enterReasonField\" type=\"text\"></div>\n\n </div>\n\n </fieldset>\n </div>\n\n <div class=\"govuk-button-group\">\n <button (click)=\"redirecttoRefundListPage()\" class=\"govuk-button govuk-button--secondary marginright\"> Previous</button>\n <button (click)=\"processRefundSubmit()\" class=\"govuk-button button\"\n data-module=\"govuk-button\">\n Submit\n </button>\n <br/><br/>\n </div>\n\n <div *ngIf=\"!isFromRefundListPage\" class=\"govuk-button-group margin\">\n\n <p><a (click)=\"loadRefundsHomePage()\" class=\"govuk-link pointer\" data-module=\"govuk-button\">Cancel</a></p>\n</div>\n</form>\n </div>\n\n\n </main>\n\n <main class=\"govuk-main-wrapper govuk-main-wrapper--l success-page-padding--top25\" [ngClass]=\"{'govuk-radios__conditional--hidden': !isSuccesspageEnable}\" id=\"main-content\" role=\"main\" >\n <div class=\"govuk-grid-row pagesize\">\n <div class=\"govuk-panel govuk-panel-refund--confirmation\">\n <h1 class=\"heading-refunds-xlarge\">\n {{successMsg}}\n </h1>\n </div>\n <p class=\"govuk-body process-refund-font\">\n <a href=\"Javascript:void(0)\" (click)=\"goToCaseReview()\" class=\"govuk-link pointer\">Return to case</a>\n </p>\n </div>\n </main>\n</div>\n</ng-container>\n\n", styles: [".tb-col-w{width:330px}.tr-border{border-bottom:2px solid}.payment-view-alignment{margin-left:30px}.govuk-button{float:left!important;font-size:19px;margin-top:2em!important}.remission{margin-bottom:7em}.process-refund-font{font-size:19px!important}.govuk-radios__conditional--hidden{display:none}.inline-error-message{color:#c11717;font-weight:700;margin-top:10px;border-color:#c11717}.inline-error-class{outline:3px solid #c11717;outline-offset:0;border-color:#c11717}.form-group-error{border-left:5px solid #c11717;padding-left:15px}.govuk-panel-refund--confirmation{color:#fff;background:#00703c}.process-refund__panel{margin-left:25px;margin-top:30px}.button-margin--left25{margin-left:25px}.success-page-padding--top25{padding-top:25px}.margin{margin-top:5em}.marginright{margin-right:1.5em}.govuk-textarea{line-height:2.25}.reason-font{font-size:19px!important}.pointer{cursor:pointer}.right{float:right}.pagesize{margin:2em;width:97%}.heading-refunds-xlarge{color:#fff;font-family:nta,Arial,sans-serif;font-weight:700;text-transform:none;font-size:32px;line-height:1.09375;margin-top:.46875em;margin-bottom:.9375em}\n"] }]
408
+ args: [{ selector: 'ccpay-process-refund', template: "<ng-container *ngIf=\"viewStatus === 'RefundProcess'\">\n<div class=\"govuk-width-container\">\n\n <main class=\"govuk-main-wrapper govuk-!-padding-top-0\" [ngClass]=\"{'govuk-radios__conditional--hidden': isSuccesspageEnable}\" id=\"main-content\" role=\"main\">\n <div *ngIf=\"errorMessage.showError\">\n <div class=\"error-summary\" role=\"group\" aria-labelledby=\"failure-error-summary-heading\" tabindex=\"-1\">\n <h2 class=\"heading-medium error-summary-heading\" id=\"failure-error-summary-heading\">\n {{errorMessage.title}}\n </h2>\n <div class=\"govuk-error-summary__body process-refund-font\">\n {{errorMessage.body}}\n </div>\n </div>\n </div>\n\n <div class=\"payment-view-alignment\">\n\n <div class=\"govuk-grid-row\">\n <div class=\"column\">\n <h1 class=\"heading-large govuk-!-margin-top-0\">Review refund details</h1>\n </div>\n </div>\n <table>\n <tbody>\n\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Payment to be refunded</td>\n <td colspan=\"2\">{{refundlistsource?.refund_reference}} ({{refundlistsource.amount | currency :'GBP':'symbol':'1.2-2' }})</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Reason for refund</td>\n <td colspan=\"2\">{{refundlistsource?.reason?.trim()}}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Amount to be refunded</td>\n <td colspan=\"2\">{{refundlistsource?.amount | currency :'GBP':'symbol':'1.2-2' }}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Sent to</td>\n <td colspan=\"2\">{{cpoDetails?.responsibleParty}}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Sent via</td>\n <td colspan=\"2\">\n <div *ngIf=\"refundlistsource?.contact_details?.notification_type === 'EMAIL'\" class=\"contactDetails-width font-size-19px\">\n <strong>Email</strong>\n <br/>\n {{refundlistsource?.contact_details?.email?.trim()}}\n </div>\n <div *ngIf=\"refundlistsource?.contact_details?.notification_type === 'LETTER'\" class=\"contactDetails-width font-size-19px\">\n <strong>Post</strong>\n <br/>\n {{refundlistsource?.contact_details?.address_line?.trim()}} {{refundlistsource?.contact_details?.city?.trim()}} {{refundlistsource?.contact_details?.county?.trim()}} {{refundlistsource?.contact_details?.country?.trim()}} {{refundlistsource?.contact_details?.postal_code?.trim()}}\n </div> \n </td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Submitted by</td>\n <td colspan=\"2\">{{refundlistsource?.user_full_name}}</td>\n\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Date submitted</td>\n <td colspan=\"2\">{{refundlistsource?.date_created | date:'d MMMM yyyy' }}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Notification</td>\n <td>{{templateInstructionType}}</td>\n <td>\n <a *ngIf=\"!notificationPreview\" href=\"Javascript:void(0)\" class=\"govuk-link pointer right\" (click)=\"showNotificationPreview()\">\n Preview\n </a>\n <a *ngIf=\"notificationPreview\" href=\"Javascript:void(0)\" class=\"govuk-link pointer right\" (click)=\"hideNotificationPreview()\">\n Hide Preview\n </a>\n </td>\n\n </tr>\n\n </tbody>\n </table>\n\n <app-notification-preview *ngIf=\"notificationPreview\" [paymentReference]=\"refundlistsource?.payment_reference\"\n [payment]=\"paymentObj\"\n [contactDetails]=\"refundlistsource?.contact_details\"\n [refundReason]=\"refundlistsource?.reason_code\" [refundAmount]=\"refundlistsource?.amount\"\n [refundReference]=\"refundlistsource?.refund_reference\"\n (notificationPreviewEvent) = \"getNotificationPreviewObj($event)\">\n </app-notification-preview>\n\n <div>\n </div>\n </div>\n <div class=\"process-refund__panel\">\n <form [formGroup]=\"processRefundForm\" novalidate>\n <div class=\"\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"sign-in-hint\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--l\">\n <h1 class=\"heading-large\">\n What do you want to do with this refund?\n </h1>\n </legend>\n <div class=\"govuk-radios\" [ngClass]=\"{'form-group-error': refundActionsHasError}\">\n <p class=\"inline-error-message\"\n *ngIf=\"refundActionsHasError\">\n <span *ngIf=\"refundActionsHasError\">Please select an action</span>\n </p>\n <div class=\"govuk-radios__item\" *ngFor=\"let refundAction of refundActionList; let i = index;\">\n <input class=\"govuk-radios__input\" \n id=\"refundAction-{{i}}\" \n name=\"refundActionField\"\n type=\"radio\"\n formControlName=\"refundActionField\"\n (click)=\"checkRefundActions(refundAction.code)\"\n value=\"{{refundAction.code}}\">\n <label class=\"govuk-label govuk-radios__label process-refund-font\" for=\"refundAction-{{i}}\">\n {{refundAction.code}}\n </label>\n <div id=\"sign-in-item-hint\" class=\"govuk-hint govuk-radios__hint process-refund-font\">\n {{refundAction.label}}\n </div>\n </div>\n <div class=\"govuk-radios__conditional\" [ngClass]=\"{'govuk-radios__conditional--hidden': !isSendMeBackClicked}\">\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label process-refund-font\" for=\"contact-by-text\">\n Add a reason\n </label>\n <p class=\"inline-error-message\"\n *ngIf=\"isReasonFieldEmpty || isReasonFieldInvalid || reasonFieldMinHasError || reasonFieldMaxHasError\">\n <span *ngIf=\"isReasonFieldEmpty\">Add a reason</span>\n <span *ngIf=\"isReasonFieldInvalid\">Add a valid reason</span>\n <span *ngIf=\"reasonFieldMinHasError\">Reason should be at least 3 characters.</span>\n <span *ngIf=\"reasonFieldMaxHasError\">Reason should be 255 characters or under.</span>\n </p>\n <textarea class=\"govuk-textarea govuk-!-width-one-third reason-font\"\n [ngClass]=\"{'inline-error-class': isReasonFieldEmpty || isReasonFieldInvalid || reasonFieldMinHasError || reasonFieldMaxHasError}\"\n id=\"sendmeback\"\n name=\"sendMeBackField\" \n formControlName=\"sendMeBackField\"\n rows=\"5\"></textarea>\n \n </div>\n\n </div>\n \n </div>\n \n </fieldset>\n </div>\n\n <div [ngClass]=\"{'govuk-radios__conditional--hidden': !isRejectClicked}\">\n <fieldset class=\"govuk-fieldset\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--l\">\n <h2 class=\"heading-medium\">\n Why are you rejecting this refund?\n </h2>\n </legend>\n <div class=\"govuk-radios\" [ngClass]=\"{'form-group-error': refundRejectReasonHasError}\">\n <p class=\"inline-error-message\"\n *ngIf=\"refundRejectReasonHasError\">\n <span *ngIf=\"refundRejectReasonHasError\">Please select a reject reason</span>\n </p>\n <div class=\"govuk-radios__item\" *ngFor=\"let refundRejectReason of refundRejectReasonList; let j = index;\">\n <input class=\"govuk-radios__input\" \n id=\"refundRejectReason-{{j}}\"\n formControlName=\"refundRejectReasonField\"\n name=\"refundRejectReasonField\"\n (click)=\"checkRefundActions(refundRejectReason.code)\"\n type=\"radio\" value=\"{{refundRejectReason.code}}\">\n <label class=\"govuk-label govuk-radios__label process-refund-font\" for=\"refundRejectReason-{{j}}\">\n {{refundRejectReason.name}}\n </label>\n </div>\n </div>\n <div class=\"govuk-radios__conditional\" [ngClass]=\"{'govuk-radios__conditional--hidden': !isOtherClicked}\" id=\"conditional-contact-3\">\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label process-refund-font \" for=\"contact-by-text\">\n Enter reason\n </label>\n <p class=\"inline-error-message\" *ngIf=\"isReasonEmpty || isReasonInvalid\">\n <span *ngIf=\"isReasonEmpty\">Enter reason.</span>\n <span *ngIf=\"isReasonInvalid\">Enter a valid reason</span>\n </p>\n <input class=\"govuk-input govuk-!-width-one-third reason-font\" id=\"otherReason\" \n [ngClass]=\"{'inline-error-class': isReasonEmpty || isReasonInvalid}\"\n formControlName=\"enterReasonField\" name=\"enterReasonField\" type=\"text\"></div>\n \n </div>\n \n </fieldset>\n </div>\n\n <div class=\"govuk-button-group\">\n <button (click)=\"redirecttoRefundListPage()\" class=\"govuk-button govuk-button--secondary marginright\"> Previous</button>\n <button (click)=\"processRefundSubmit()\" class=\"govuk-button button\"\n data-module=\"govuk-button\">\n Submit \n </button>\n <br/><br/>\n </div>\n \n <div *ngIf=\"!isFromRefundListPage\" class=\"govuk-button-group margin\">\n\n <p><a (click)=\"loadRefundsHomePage()\" class=\"govuk-link pointer\" data-module=\"govuk-button\">Cancel</a></p>\n</div>\n</form>\n </div>\n \n\n </main>\n \n <main class=\"govuk-main-wrapper govuk-main-wrapper--l success-page-padding--top25\" [ngClass]=\"{'govuk-radios__conditional--hidden': !isSuccesspageEnable}\" id=\"main-content\" role=\"main\" >\n <div class=\"govuk-grid-row pagesize\">\n <div class=\"govuk-panel govuk-panel-refund--confirmation\">\n <h1 class=\"heading-refunds-xlarge\">\n {{successMsg}}\n </h1>\n </div>\n <p class=\"govuk-body process-refund-font\">\n <a href=\"Javascript:void(0)\" (click)=\"goToCaseReview()\" class=\"govuk-link pointer\">Return to case</a>\n </p>\n </div>\n </main>\n</div>\n</ng-container>\n\n", styles: [".tb-col-w{width:330px}.tr-border{border-bottom:2px solid}.payment-view-alignment{margin-left:30px}.govuk-button{float:left!important;font-size:19px;margin-top:2em!important}.remission{margin-bottom:7em}.process-refund-font{font-size:19px!important}.govuk-radios__conditional--hidden{display:none}.inline-error-message{color:#c11717;font-weight:700;margin-top:10px;border-color:#c11717}.inline-error-class{outline:3px solid #c11717;outline-offset:0;border-color:#c11717}.form-group-error{border-left:5px solid #c11717;padding-left:15px}.govuk-panel-refund--confirmation{color:#fff;background:#00703c}.process-refund__panel{margin-left:25px;margin-top:30px}.button-margin--left25{margin-left:25px}.success-page-padding--top25{padding-top:25px}.margin{margin-top:5em}.marginright{margin-right:1.5em}.govuk-textarea{line-height:2.25}.reason-font{font-size:19px!important}.pointer{cursor:pointer}.right{float:right}.pagesize{margin:2em;width:97%}.heading-refunds-xlarge{color:#fff;font-family:nta,Arial,sans-serif;font-weight:700;text-transform:none;font-size:32px;line-height:1.09375;margin-top:.46875em;margin-bottom:.9375em}\n"] }]
409
409
  }], ctorParameters: () => [{ type: i1.RefundsService }, { type: i2.PaymentViewService }, { type: i3.FormBuilder }, { type: i4.OrderslistService }, { type: i5.NotificationService }, { type: undefined, decorators: [{
410
410
  type: Inject,
411
411
  args: ['PAYMENT_LIB']
@@ -414,4 +414,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
414
414
  }], refundlistsource: [{
415
415
  type: Input
416
416
  }] } });
417
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1yZWZ1bmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcGF5bWVudC1saWIvc3JjL2xpYi9jb21wb25lbnRzL3Byb2Nlc3MtcmVmdW5kL3Byb2Nlc3MtcmVmdW5kLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BheW1lbnQtbGliL3NyYy9saWIvY29tcG9uZW50cy9wcm9jZXNzLXJlZnVuZC9wcm9jZXNzLXJlZnVuZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBYSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBS3hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBRXRGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7QUFTekQsTUFBTSxPQUFPLHNCQUFzQjtJQW1DYjtJQUNWO0lBQ0E7SUFDQTtJQUNBO0lBQ3VCO0lBQ3ZCO0lBQ0E7SUF6Q0QsZUFBZSxDQUFTO0lBQ3hCLGdCQUFnQixDQUFjO0lBRXZDLGlCQUFpQixDQUFZO0lBRTdCLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELFVBQVUsR0FBVyxJQUFJLENBQUM7SUFD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S0FBSyxDQUFDO0lBQ25DLENBQUM7d0dBdFpVLHNCQUFzQixpTEF3Q3ZCLGFBQWE7NEZBeENaLHNCQUFzQixrSkNwQm5DLHc3VUFrT0E7OzRGRDlNYSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0Usc0JBQXNCOzswQkE0QzdCLE1BQU07MkJBQUMsYUFBYTsyRkF2Q2QsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycywgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBSZWZ1bmRzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JlZnVuZHMvcmVmdW5kcy5zZXJ2aWNlJztcbmltcG9ydCB7IElSZWZ1bmRBY3Rpb24gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lSZWZ1bmRBY3Rpb24nO1xuaW1wb3J0IHsgSVJlZnVuZExpc3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lSZWZ1bmRMaXN0JztcbmltcG9ydCB7IElQYXltZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUGF5bWVudCc7XG5pbXBvcnQgeyBJUmVmdW5kUmVqZWN0UmVhc29uIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUmVmdW5kUmVqZWN0UmVhc29uJztcbmltcG9ydCB7IE9yZGVyc2xpc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvb3JkZXJzbGlzdC5zZXJ2aWNlJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGF5bWVudFZpZXdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcGF5bWVudC12aWV3L3BheW1lbnQtdmlldy5zZXJ2aWNlJztcbmltcG9ydCB0eXBlIHsgUGF5bWVudExpYkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BheW1lbnQtbGliLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElOb3RpZmljYXRpb25QcmV2aWV3IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JTm90aWZpY2F0aW9uUHJldmlldyc7XG50eXBlIFBheW1lbnRMaWJBbGlhcyA9IFBheW1lbnRMaWJDb21wb25lbnQ7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjcGF5LXByb2Nlc3MtcmVmdW5kJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2Nlc3MtcmVmdW5kLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvY2Vzcy1yZWZ1bmQuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIFByb2Nlc3NSZWZ1bmRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSByZWZ1bmRSZWZlcmVuY2U6IHN0cmluZztcbiAgQElucHV0KCkgcmVmdW5kbGlzdHNvdXJjZTogSVJlZnVuZExpc3Q7XG5cbiAgcHJvY2Vzc1JlZnVuZEZvcm06IEZvcm1Hcm91cDtcblxuICBlcnJvck1lc3NhZ2UgPSB0aGlzLmdldEVycm9yTWVzc2FnZShmYWxzZSwgJycsICcnLCAnJyk7XG4gIHNlbmRtZWJhY2s6IHN0cmluZyA9IG51bGw7XG4gIHZpZXdTdGF0dXM6IHN0cmluZztcbiAgcmVmdW5kQWN0aW9uTGlzdDogSVJlZnVuZEFjdGlvbltdID0gW107XG4gIHJlZnVuZFJlamVjdFJlYXNvbkxpc3Q6IElSZWZ1bmRSZWplY3RSZWFzb25bXSA9IFtdO1xuICBpc1NlbmRNZUJhY2tDbGlja2VkOiBib29sZWFuID0gZmFsc2U7XG4gIGlzUmVqZWN0Q2xpY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBpc090aGVyQ2xpY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1N1Y2Nlc3NwYWdlRW5hYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcmVmdW5kQWN0aW9uc0hhc0Vycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIHJlZnVuZFJlamVjdFJlYXNvbkhhc0Vycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIGlzUmVhc29uRmllbGRFbXB0eTogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1JlYXNvbkZpZWxkSW52YWxpZDogYm9vbGVhbiA9IGZhbHNlO1xuICByZWFzb25GaWVsZE1pbkhhc0Vycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIHJlYXNvbkZpZWxkTWF4SGFzRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNSZWFzb25FbXB0eTogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1JlYXNvbkludmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc3VjY2Vzc01zZzogc3RyaW5nID0gbnVsbDtcbiAgbmF2aWdhdGlvbnBhZ2U6IHN0cmluZztcbiAgY2NkQ2FzZU51bWJlcjogc3RyaW5nO1xuICBpc0Zyb21SZWZ1bmRMaXN0UGFnZTogYm9vbGVhbjtcbiAgY3BvRGV0YWlsczphbnkgPSBbXTtcbiAgaXNDUE9Eb3duOiBib29sZWFuO1xuICBpc0NvbmZpcm1CdXR0b25kaXNhYmxlZDogYm9vbGVhbiA9IHRydWU7XG4gIHBheW1lbnRPYmo6IElQYXltZW50O1xuICB0ZW1wbGF0ZUluc3RydWN0aW9uVHlwZTogc3RyaW5nO1xuICBub3RpZmljYXRpb25QcmV2aWV3OiBib29sZWFuID0gZmFsc2U7XG4gIG5vdGlmaWNhdGlvblByZXZpZXdPYmo6IElOb3RpZmljYXRpb25QcmV2aWV3O1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIFJlZnVuZHNTZXJ2aWNlOiBSZWZ1bmRzU2VydmljZSxcbiAgICBwcml2YXRlIHBheW1lbnRWaWV3U2VydmljZTogUGF5bWVudFZpZXdTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgT3JkZXJzbGlzdFNlcnZpY2U6IE9yZGVyc2xpc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBASW5qZWN0KCdQQVlNRU5UX0xJQicpIHByaXZhdGUgcGF5bWVudExpYkNvbXBvbmVudDogUGF5bWVudExpYkFsaWFzLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBhY3RpdmVSb3V0ZTogQWN0aXZhdGVkUm91dGUpIHtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudmlld1N0YXR1cyA9ICdSZWZ1bmRQcm9jZXNzJztcbiAgICB0aGlzLlJlZnVuZHNTZXJ2aWNlLmdldFJlZnVuZEFjdGlvbnModGhpcy5yZWZ1bmRSZWZlcmVuY2UpLnN1YnNjcmliZShcbiAgICAgIHJlZnVuZEFjdGlvbkxpc3QgPT4ge1xuICAgICAgICB0aGlzLnJlZnVuZEFjdGlvbkxpc3QgPSA8YW55PnJlZnVuZEFjdGlvbkxpc3Q7XG4gICAgICB9LFxuICAgICAgZXJyID0+IHtcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmdldEVycm9yTWVzc2FnZSh0cnVlLCBlcnIuc3RhdHVzQ29kZSwgZXJyLmVyciwgZXJyKTtcbiAgICAgIH1cbiAgICApO1xuICAgIHRoaXMucHJvY2Vzc1JlZnVuZEZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIHJlZnVuZEFjdGlvbkZpZWxkOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcbiAgICAgIF0pKSxcbiAgICAgIHJlZnVuZFJlamVjdFJlYXNvbkZpZWxkOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcbiAgICAgIF0pKSxcbiAgICAgIHNlbmRNZUJhY2tGaWVsZDogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICBWYWxpZGF0b3JzLm1pbkxlbmd0aCgzKSxcbiAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjU1KSxcbiAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKCdeKFthLXpBLVowLTlcXFxccyxcXFxcLl0qKSQnKSxcblxuICAgICAgXSkpLFxuICAgICAgZW50ZXJSZWFzb25GaWVsZDogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCgzMCksXG4gICAgICAgIFZhbGlkYXRvcnMucGF0dGVybignXihbYS16QS1aMC05LlxcXFxzXSopJCcpLFxuICAgICAgXSkpLFxuICAgIH0pO1xuICAgIHRoaXMuY2NkQ2FzZU51bWJlciA9IHRoaXMucmVmdW5kbGlzdHNvdXJjZS5jY2RfY2FzZV9udW1iZXI7XG5cbiAgICBpZigodHlwZW9mIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5UQUtFUEFZTUVOVCA9PT0gJ3N0cmluZycgJiYgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LlRBS0VQQVlNRU5UID09PSAnZmFsc2UnKSB8fCAodHlwZW9mIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5UQUtFUEFZTUVOVCA9PT0gJ2Jvb2xlYW4nICYmICF0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuVEFLRVBBWU1FTlQpICkge1xuICAgICAgdGhpcy5pc0Zyb21SZWZ1bmRMaXN0UGFnZSA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMucGF5bWVudFZpZXdTZXJ2aWNlLmdldFBhcnR5RGV0YWlscyh0aGlzLmNjZENhc2VOdW1iZXIpLnN1YnNjcmliZShcbiAgICAgIHJlc3BvbnNlID0+IHtcbiAgICAgICAgdGhpcy5jcG9EZXRhaWxzID0gSlNPTi5wYXJzZShyZXNwb25zZSkuY29udGVudFswXTtcblxuICAgICAgfSxcbiAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gPGFueT5lcnJvci5yZXBsYWNlKC9cIi9nLCBcIlwiKTtcbiAgICAgICAgdGhpcy5pc0NQT0Rvd24gPSB0cnVlO1xuICAgICAgfVxuICAgICk7XG4gICAgdGhpcy5nZXRUZW1wbGF0ZUluc3RydWN0aW9uVHlwZSh0aGlzLnBheW1lbnRPYmosIHRoaXMucmVmdW5kbGlzdHNvdXJjZS5wYXltZW50X3JlZmVyZW5jZSk7XG4gIH1cblxuICBjaGVja1JlZnVuZEFjdGlvbnMoY29kZTogc3RyaW5nKSB7XG4gICAgdGhpcy5yZWZ1bmRBY3Rpb25zSGFzRXJyb3IgPSBmYWxzZTtcbiAgICB0aGlzLmlzUmVhc29uRmllbGRFbXB0eSA9IGZhbHNlO1xuICAgIHRoaXMuaXNSZWFzb25FbXB0eSA9IGZhbHNlO1xuICAgIHRoaXMuaXNSZWFzb25JbnZhbGlkID0gZmFsc2U7XG4gICAgdGhpcy5yZWZ1bmRSZWplY3RSZWFzb25IYXNFcnJvciA9IGZhbHNlO1xuICAgIGlmIChjb2RlID09PSAnUmV0dXJuIHRvIGNhc2V3b3JrZXInKSB7XG4gICAgICB0aGlzLmlzQ29uZmlybUJ1dHRvbmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuaXNTZW5kTWVCYWNrQ2xpY2tlZCA9IHRydWU7XG4gICAgICB0aGlzLmlzUmVqZWN0Q2xpY2tlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pc090aGVyQ2xpY2tlZCA9IGZhbHNlO1xuXG4gICAgfSBlbHNlIGlmIChjb2RlID09PSAnQXBwcm92ZScpIHtcbiAgICAgIHRoaXMuaXNTZW5kTWVCYWNrQ2xpY2tlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pc0NvbmZpcm1CdXR0b25kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pc1JlamVjdENsaWNrZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuaXNPdGhlckNsaWNrZWQgPSBmYWxzZTtcblxuICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gJ1JlamVjdCcpIHtcbiAgICAgIHRoaXMuaXNSZWplY3RDbGlja2VkID0gdHJ1ZTtcbiAgICAgIHRoaXMuaXNTZW5kTWVCYWNrQ2xpY2tlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pc090aGVyQ2xpY2tlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5SZWZ1bmRzU2VydmljZS5nZXRSZWZ1bmRSZWplY3RSZWFzb25zKCkuc3Vic2NyaWJlKFxuICAgICAgICByZWZ1bmRSZWplY3RSZWFzb25MaXN0ID0+IHtcbiAgICAgICAgICB0aGlzLnJlZnVuZFJlamVjdFJlYXNvbkxpc3QgPSA8YW55PnJlZnVuZFJlamVjdFJlYXNvbkxpc3Q7XG4gICAgICAgIH0sXG4gICAgICAgIGVyciA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmdldEVycm9yTWVzc2FnZSh0cnVlLCBlcnIuc3RhdHVzQ29kZSwgZXJyLmVyciwgZXJyKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKGNvZGUgPT09ICdSRTAwNScpIHtcbiAgICAgIHRoaXMuaXNPdGhlckNsaWNrZWQgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoY29kZSAhPT0gJ1JFMDA1Jykge1xuICAgICAgdGhpcy5pc090aGVyQ2xpY2tlZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGdldE5vdGlmaWNhdGlvblByZXZpZXdPYmoobm90aWZpY2F0aW9uUHJldmlld09iajogSU5vdGlmaWNhdGlvblByZXZpZXcpIHtcbiAgICB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXdPYmogPSBub3RpZmljYXRpb25QcmV2aWV3T2JqO1xuICB9XG5cbiAgcHJvY2Vzc1JlZnVuZFN1Ym1pdCgpIHtcbiAgICBsZXQgcHJvY2Vzc1JlZnVuZFJlcXVlc3Q7XG4gICAgbGV0IHN0YXR1cztcbiAgICB0aGlzLnJlc2V0Rm9ybShbZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlXSwgJ2FsbCcpO1xuICAgIGNvbnN0IGNvbnRyb2xzID0gdGhpcy5wcm9jZXNzUmVmdW5kRm9ybS5jb250cm9scztcbiAgICBjb25zdCBwcm9jZXNzRm9ybUVycm9yID0gY29udHJvbHMuc2VuZE1lQmFja0ZpZWxkLmVycm9ycztcblxuICAgIGlmICh0aGlzLnByb2Nlc3NSZWZ1bmRGb3JtLmRpcnR5ICYmIGNvbnRyb2xzLnJlZnVuZEFjdGlvbkZpZWxkLnZhbGlkXG4gICAgICAmJiAoY29udHJvbHMucmVmdW5kQWN0aW9uRmllbGQudmFsdWUgPT0gJ0FwcHJvdmUnXG4gICAgICAgIHx8IChjb250cm9scy5yZWZ1bmRBY3Rpb25GaWVsZC52YWx1ZSA9PSAnUmVqZWN0JyAmJiBjb250cm9scy5yZWZ1bmRSZWplY3RSZWFzb25GaWVsZC52YWxpZCAmJiBjb250cm9scy5yZWZ1bmRSZWplY3RSZWFzb25GaWVsZC52YWx1ZSAhPSAnUkUwMDUnKVxuICAgICAgICB8fCAoY29udHJvbHMucmVmdW5kQWN0aW9uRmllbGQudmFsdWUgPT0gJ1JlamVjdCcgJiYgY29udHJvbHMucmVmdW5kUmVqZWN0UmVhc29uRmllbGQudmFsdWUgPT0gJ1JFMDA1JyAmJiBjb250cm9scy5lbnRlclJlYXNvbkZpZWxkLnZhbGlkKVxuICAgICAgICB8fCAoY29udHJvbHMucmVmdW5kQWN0aW9uRmllbGQudmFsdWUgPT0gJ1JldHVybiB0byBjYXNld29ya2VyJyAmJiBjb250cm9scy5zZW5kTWVCYWNrRmllbGQudmFsaWQpKSkge1xuICAgICAgaWYgKGNvbnRyb2xzLnJlZnVuZEFjdGlvbkZpZWxkLnZhbHVlID09PSAnQXBwcm92ZScpIHtcbiAgICAgICAgc3RhdHVzID0gJ0FQUFJPVkUnO1xuICAgICAgICBpZiAodGhpcy5ub3RpZmljYXRpb25QcmV2aWV3T2JqKSB7XG4gICAgICAgICAgcHJvY2Vzc1JlZnVuZFJlcXVlc3QgPSB7XG4gICAgICAgICAgICBjb2RlOiAnJyxcbiAgICAgICAgICAgIHJlYXNvbjogJycsXG4gICAgICAgICAgICB0ZW1wbGF0ZV9wcmV2aWV3OiB7XG4gICAgICAgICAgICAgIGJvZHk6IHRoaXMubm90aWZpY2F0aW9uUHJldmlld09iai5ib2R5LFxuICAgICAgICAgICAgICBmcm9tOiB7XG4gICAgICAgICAgICAgICAgZnJvbV9lbWFpbF9hZGRyZXNzOiB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXdPYmouZnJvbS5mcm9tX2VtYWlsX2FkZHJlc3MsXG4gICAgICAgICAgICAgICAgZnJvbV9tYWlsX2FkZHJlc3M6IHtcbiAgICAgICAgICAgICAgICAgIGFkZHJlc3NfbGluZTogdGhpcy5ub3RpZmljYXRpb25QcmV2aWV3T2JqLmZyb20uZnJvbV9tYWlsX2FkZHJlc3MuYWRkcmVzc19saW5lLFxuICAgICAgICAgICAgICAgICAgY2l0eTogdGhpcy5ub3RpZmljYXRpb25QcmV2aWV3T2JqLmZyb20uZnJvbV9tYWlsX2FkZHJlc3MuY2l0eSxcbiAgICAgICAgICAgICAgICAgIGNvdW50cnk6IHRoaXMubm90aWZpY2F0aW9uUHJldmlld09iai5mcm9tLmZyb21fbWFpbF9hZGRyZXNzLmNvdW50cnksXG4gICAgICAgICAgICAgICAgICBjb3VudHk6IHRoaXMubm90aWZpY2F0aW9uUHJldmlld09iai5mcm9tLmZyb21fbWFpbF9hZGRyZXNzLmNvdW50eSxcbiAgICAgICAgICAgICAgICAgIHBvc3RhbF9jb2RlOiB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXdPYmouZnJvbS5mcm9tX21haWxfYWRkcmVzcy5wb3N0YWxfY29kZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgaHRtbDogdGhpcy5ub3RpZmljYXRpb25QcmV2aWV3T2JqLmh0bWwsXG4gICAgICAgICAgICAgIGlkOiB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXdPYmoudGVtcGxhdGVfaWQsXG4gICAgICAgICAgICAgIHN1YmplY3Q6IHRoaXMubm90aWZpY2F0aW9uUHJldmlld09iai5zdWJqZWN0LFxuICAgICAgICAgICAgICB0ZW1wbGF0ZV90eXBlOiB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXdPYmoudGVtcGxhdGVfdHlwZSxcbiAgICAgICAgICAgICAgdmVyc2lvbjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcm9jZXNzUmVmdW5kUmVxdWVzdCA9IHtcbiAgICAgICAgICAgIGNvZGU6ICcnLFxuICAgICAgICAgICAgcmVhc29uOiAnJ1xuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY29udHJvbHMucmVmdW5kQWN0aW9uRmllbGQudmFsdWUgPT09ICdSZWplY3QnKSB7XG4gICAgICAgIHN0YXR1cyA9ICdSRUpFQ1QnO1xuXG4gICAgICAgIGlmICh0aGlzLm5vdGlmaWNhdGlvblByZXZpZXdPYmopIHtcbiAgICAgICAgICBwcm9jZXNzUmVmdW5kUmVxdWVzdCA9IHtcbiAgICAgICAgICAgIGNvZGU6IGNvbnRyb2xzLnJlZnVuZFJlamVjdFJlYXNvbkZpZWxkLnZhbHVlID8gY29udHJvbHMucmVmdW5kUmVqZWN0UmVhc29uRmllbGQudmFsdWUgOiAnJyxcbiAgICAgICAgICAgIHJlYXNvbjogY29udHJvbHMucmVmdW5kUmVqZWN0UmVhc29uRmllbGQudmFsdWUgPT0gJ1JFMDA1JyA/IGNvbnRyb2xzLmVudGVyUmVhc29uRmllbGQudmFsdWUgOiAnJyxcbiAgICAgICAgICAgIHRlbXBsYXRlX3ByZXZpZXc6IHtcbiAgICAgICAgICAgICAgYm9keTogdGhpcy5ub3RpZmljYXRpb25QcmV2aWV3T2JqLmJvZHksXG4gICAgICAgICAgICAgIGZyb206IHtcbiAgICAgICAgICAgICAgICBmcm9tX2VtYWlsX2FkZHJlc3M6IHRoaXMubm90aWZpY2F0aW9uUHJldmlld09iai5mcm9tLmZyb21fZW1haWxfYWRkcmVzcyxcbiAgICAgICAgICAgICAgICBmcm9tX21haWxfYWRkcmVzczoge1xuICAgICAgICAgICAgICAgICAgYWRkcmVzc19saW5lOiB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXdPYmouZnJvbS5mcm9tX21haWxfYWRkcmVzcy5hZGRyZXNzX2xpbmUsXG4gICAgICAgICAgICAgICAgICBjaXR5OiB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXdPYmouZnJvbS5mcm9tX21haWxfYWRkcmVzcy5jaXR5LFxuICAgICAgICAgICAgICAgICAgY291bnRyeTogdGhpcy5ub3RpZmljYXRpb25QcmV2aWV3T2JqLmZyb20uZnJvbV9tYWlsX2FkZHJlc3MuY291bnRyeSxcbiAgICAgICAgICAgICAgICAgIGNvdW50eTogdGhpcy5ub3RpZmljYXRpb25QcmV2aWV3T2JqLmZyb20uZnJvbV9tYWlsX2FkZHJlc3MuY291bnR5LFxuICAgICAgICAgICAgICAgICAgcG9zdGFsX2NvZGU6IHRoaXMubm90aWZpY2F0aW9uUHJldmlld09iai5mcm9tLmZyb21fbWFpbF9hZGRyZXNzLnBvc3RhbF9jb2RlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBodG1sOiB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXdPYmouaHRtbCxcbiAgICAgICAgICAgICAgaWQ6IHRoaXMubm90aWZpY2F0aW9uUHJldmlld09iai50ZW1wbGF0ZV9pZCxcbiAgICAgICAgICAgICAgc3ViamVjdDogdGhpcy5ub3RpZmljYXRpb25QcmV2aWV3T2JqLnN1YmplY3QsXG4gICAgICAgICAgICAgIHRlbXBsYXRlX3R5cGU6IHRoaXMubm90aWZpY2F0aW9uUHJldmlld09iai50ZW1wbGF0ZV90eXBlLFxuICAgICAgICAgICAgICB2ZXJzaW9uOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcm9jZXNzUmVmdW5kUmVxdWVzdCA9IHtcbiAgICAgICAgICAgIGNvZGU6IGNvbnRyb2xzLnJlZnVuZFJlamVjdFJlYXNvbkZpZWxkLnZhbHVlID8gY29udHJvbHMucmVmdW5kUmVqZWN0UmVhc29uRmllbGQudmFsdWUgOiAnJyxcbiAgICAgICAgICAgIHJlYXNvbjogY29udHJvbHMucmVmdW5kUmVqZWN0UmVhc29uRmllbGQudmFsdWUgPT0gJ1JFMDA1JyA/IGNvbnRyb2xzLmVudGVyUmVhc29uRmllbGQudmFsdWUgOiAnJ1xuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuXG4gICAgICB9IGVsc2UgaWYgKGNvbnRyb2xzLnJlZnVuZEFjdGlvbkZpZWxkLnZhbHVlID09PSAnUmV0dXJuIHRvIGNhc2V3b3JrZXInKSB7XG4gICAgICAgIHN0YXR1cyA9ICdTRU5EQkFDSyc7XG5cbiAgICAgICAgaWYgKHRoaXMubm90aWZpY2F0aW9uUHJldmlld09iaikge1xuICAgICAgICAgIHByb2Nlc3NSZWZ1bmRSZXF1ZXN0ID0ge1xuICAgICAgICAgICAgY29kZTogJycsXG4gICAgICAgICAgICByZWFzb246IGNvbnRyb2xzLnNlbmRNZUJhY2tGaWVsZC52YWx1ZSxcbiAgICAgICAgICAgIHRlbXBsYXRlX3ByZXZpZXc6IHtcbiAgICAgICAgICAgICAgYm9keTogdGhpcy5ub3RpZmljYXRpb25QcmV2aWV3T2JqLmJvZHksXG4gICAgICAgICAgICAgIGZyb206IHtcbiAgICAgICAgICAgICAgICBmcm9tX2VtYWlsX2FkZHJlc3M6IHRoaXMubm90aWZpY2F0aW9uUHJldmlld09iai5mcm9tLmZyb21fZW1haWxfYWRkcmVzcyxcbiAgICAgICAgICAgICAgICBmcm9tX21haWxfYWRkcmVzczoge1xuICAgICAgICAgICAgICAgICAgYWRkcmVzc19saW5lOiB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXdPYmouZnJvbS5mcm9tX21haWxfYWRkcmVzcy5hZGRyZXNzX2xpbmUsXG4gICAgICAgICAgICAgICAgICBjaXR5OiB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXdPYmouZnJvbS5mcm9tX21haWxfYWRkcmVzcy5jaXR5LFxuICAgICAgICAgICAgICAgICAgY291bnRyeTogdGhpcy5ub3RpZmljYXRpb25QcmV2aWV3T2JqLmZyb20uZnJvbV9tYWlsX2FkZHJlc3MuY291bnRyeSxcbiAgICAgICAgICAgICAgICAgIGNvdW50eTogdGhpcy5ub3RpZmljYXRpb25QcmV2aWV3T2JqLmZyb20uZnJvbV9tYWlsX2FkZHJlc3MuY291bnR5LFxuICAgICAgICAgICAgICAgICAgcG9zdGFsX2NvZGU6IHRoaXMubm90aWZpY2F0aW9uUHJldmlld09iai5mcm9tLmZyb21fbWFpbF9hZGRyZXNzLnBvc3RhbF9jb2RlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBodG1sOiB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXdPYmouaHRtbCxcbiAgICAgICAgICAgICAgaWQ6IHRoaXMubm90aWZpY2F0aW9uUHJldmlld09iai50ZW1wbGF0ZV9pZCxcbiAgICAgICAgICAgICAgc3ViamVjdDogdGhpcy5ub3RpZmljYXRpb25QcmV2aWV3T2JqLnN1YmplY3QsXG4gICAgICAgICAgICAgIHRlbXBsYXRlX3R5cGU6IHRoaXMubm90aWZpY2F0aW9uUHJldmlld09iai50ZW1wbGF0ZV90eXBlLFxuICAgICAgICAgICAgICB2ZXJzaW9uOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcm9jZXNzUmVmdW5kUmVxdWVzdCA9IHtcbiAgICAgICAgICAgIGNvZGU6ICcnLFxuICAgICAgICAgICAgcmVhc29uOiBjb250cm9scy5zZW5kTWVCYWNrRmllbGQudmFsdWVcbiAgICAgICAgICB9O1xuXG4gICAgICAgIH1cblxuXG4gICAgICB9XG4gICAgICB0aGlzLlJlZnVuZHNTZXJ2aWNlLnBhdGNoUmVmdW5kQWN0aW9ucyhwcm9jZXNzUmVmdW5kUmVxdWVzdCwgdGhpcy5yZWZ1bmRSZWZlcmVuY2UsIHN0YXR1cykuc3Vic2NyaWJlKFxuICAgICAgICByZXNwb25zZSA9PiB7XG4gICAgICAgICAgdGhpcy5pc1N1Y2Nlc3NwYWdlRW5hYmxlID0gdHJ1ZTtcbiAgICAgICAgICAvLyB0aGlzLnN1Y2Nlc3NNc2cgPSBKU09OLnBhcnNlKHJlc3BvbnNlKVsnZGF0YSddO1xuICAgICAgICAgIHRoaXMuc3VjY2Vzc01zZyA9IHJlc3BvbnNlLnJlcGxhY2UoL1snXCJdKy9nLCAnJyk7XG4gICAgICAgIH0sXG4gICAgICAgIGVyciA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmdldEVycm9yTWVzc2FnZSh0cnVlLCBlcnIuc3RhdHVzQ29kZSwgZXJyLmVyciwgZXJyKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGNvbnRyb2xzLnJlZnVuZEFjdGlvbkZpZWxkLnZhbHVlID09IFwiXCIpIHtcbiAgICAgICAgdGhpcy5yZXNldEZvcm0oW3RydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlXSwgJ2FjdGlvbicpO1xuICAgICAgfVxuICAgICAgaWYgKGNvbnRyb2xzLnJlZnVuZEFjdGlvbkZpZWxkLnZhbHVlID09ICdSZWplY3QnICYmIGNvbnRyb2xzLnJlZnVuZFJlamVjdFJlYXNvbkZpZWxkLnZhbHVlID09IFwiXCIpIHtcbiAgICAgICAgdGhpcy5yZXNldEZvcm0oW2ZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlXSwgJ3JlamVjdFJlYXNvbicpO1xuICAgICAgfVxuICAgICAgaWYgKGNvbnRyb2xzLnJlZnVuZEFjdGlvbkZpZWxkLnZhbHVlID09ICdSZXR1cm4gdG8gY2FzZXdvcmtlcicpIHtcbiAgICAgICAgaWYgKGNvbnRyb2xzLnNlbmRNZUJhY2tGaWVsZC52YWx1ZSA9PSAnJykge1xuICAgICAgICAgIHRoaXMucmVzZXRGb3JtKFtmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZV0sICdhZGRBcmVhc29uJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbnRyb2xzLnNlbmRNZUJhY2tGaWVsZC52YWx1ZSAhPSAnJyAmJiBjb250cm9scy5zZW5kTWVCYWNrRmllbGQuaW52YWxpZCkge1xuICAgICAgICAgIHRoaXMucmVzZXRGb3JtKFtmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZV0sICdhZGRBcmVhc29uJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb2Nlc3NGb3JtRXJyb3IgJiYgcHJvY2Vzc0Zvcm1FcnJvci5taW5sZW5ndGggJiYgcHJvY2Vzc0Zvcm1FcnJvci5taW5sZW5ndGguYWN0dWFsTGVuZ3RoIDwgMykge1xuICAgICAgICAgIHRoaXMucmVzZXRGb3JtKFtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZV0sICdhZGRBcmVhc29uJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb2Nlc3NGb3JtRXJyb3IgJiYgcHJvY2Vzc0Zvcm1FcnJvci5tYXhsZW5ndGggJiYgcHJvY2Vzc0Zvcm1FcnJvci5tYXhsZW5ndGguYWN0dWFsTGVuZ3RoID4gMjU1KSB7XG4gICAgICAgICAgdGhpcy5yZXNldEZvcm0oW2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlXSwgJ2FkZEFyZWFzb24nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNvbnRyb2xzLnJlZnVuZEFjdGlvbkZpZWxkLnZhbHVlID09ICdSZWplY3QnICYmIGNvbnRyb2xzLnJlZnVuZFJlamVjdFJlYXNvbkZpZWxkLnZhbHVlID09ICdSRTAwNScpIHtcbiAgICAgICAgaWYgKGNvbnRyb2xzLmVudGVyUmVhc29uRmllbGQudmFsdWUgPT09IFwiXCIpIHtcbiAgICAgICAgICB0aGlzLnJlc2V0Rm9ybShbZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2VdLCAnZW50ZXJSZWFzb24nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29udHJvbHMuZW50ZXJSZWFzb25GaWVsZC52YWx1ZSAhPT0gXCJcIiAmJiBjb250cm9scy5lbnRlclJlYXNvbkZpZWxkLmludmFsaWQpIHtcbiAgICAgICAgICB0aGlzLnJlc2V0Rm9ybShbZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWVdLCAnZW50ZXJSZWFzb24nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICB9XG4gIGdldEVycm9yTWVzc2FnZShpc0Vycm9yRXhpc3QsIHN0YXR1cywgZXJyb3JNc2csIGVycikge1xuICAgIGxldCBib2R5VHh0ID0gJ1BsZWFzZSB0cnkgYWdhaW4gbGF0ZXInO1xuICAgIGlmIChzdGF0dXMgIT09IDUwMCkge1xuICAgICAgaWYgKGVycm9yTXNnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYm9keVR4dCA9IGVycm9yTXNnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYm9keVR4dCA9IGVycjtcbiAgICAgIH1cblxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGU6ICdTb21ldGhpbmcgd2VudCB3cm9uZycsXG4gICAgICBib2R5OiBib2R5VHh0LFxuICAgICAgc2hvd0Vycm9yOiBpc0Vycm9yRXhpc3RcbiAgICB9O1xuICB9XG4gIGxvYWRSZWZ1bmRMaXN0UGFnZSgpIHtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLmdldG5hdmlnYXRpb25QYWdlVmFsdWUoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHRoaXMubmF2aWdhdGlvbnBhZ2UgPSBkYXRhKTtcbiAgICBpZiAodGhpcy5uYXZpZ2F0aW9ucGFnZSA9PT0gJ2Nhc2V0cmFuc2FjdGlvbnMnKSB7XG4gICAgICAvLyB3aW5kb3cubG9jYXRpb24uaHJlZj0nL3JlZnVuZC1saXN0P3Rha2VQYXltZW50PWZhbHNlJnJlZnVuZGxpc3Q9dHJ1ZSc7XG4gICAgICAvLyAvLyB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldG5hdmlnYXRpb25QYWdlKCdjYXNldHJhbnNhY3Rpb25zJyk7XG4gICAgICAvLyAvLyB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldGlzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZShmYWxzZSk7XG4gICAgICAvLyAvLyB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuVklFVyA9J2Nhc2UtdHJhbnNhY3Rpb25zJztcbiAgICAgIC8vIC8vIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC52aWV3TmFtZSA9ICdjYXNlLXRyYW5zYWN0aW9ucyc7XG4gICAgICAvLyAvLyB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuSVNCU0VOQUJMRSA9IHRydWU7XG4gICAgICAvLyAvLyB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNSZWZ1bmRTdGF0dXNWaWV3ID0gZmFsc2U7XG4gICAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQudmlld05hbWUgPSAncmVmdW5kc3RhdHVzbGlzdCc7XG4gICAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNSZWZ1bmRTdGF0dXNWaWV3ID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnZpZXdOYW1lID0gJ3JlZnVuZHN0YXR1c2xpc3QnO1xuICAgICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzUmVmdW5kU3RhdHVzVmlldyA9IHRydWU7XG4gICAgfVxuICB9XG4gIGxvYWRSZWZ1bmRzSG9tZVBhZ2UoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuVEFLRVBBWU1FTlQgPT09ICdzdHJpbmcnICYmIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5UQUtFUEFZTUVOVCA9PT0gJ2ZhbHNlJykge1xuICAgICAgLy93aW5kb3cubG9jYXRpb24uaHJlZj0nL3JlZnVuZC1saXN0P3Rha2VQYXltZW50PWZhbHNlJnJlZnVuZGxpc3Q9dHJ1ZSc7XG4gICAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQudmlld05hbWUgPSAncmVmdW5kLWxpc3QnO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0bmF2aWdhdGlvblBhZ2UoJ2Nhc2V0cmFuc2FjdGlvbnMnKTtcbiAgICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0aXNGcm9tU2VydmljZVJlcXVlc3RQYWdlKGZhbHNlKTtcbiAgICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5WSUVXID0gJ2Nhc2UtdHJhbnNhY3Rpb25zJztcbiAgICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC52aWV3TmFtZSA9ICdjYXNlLXRyYW5zYWN0aW9ucyc7XG4gICAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuSVNCU0VOQUJMRSA9IHRydWU7XG4gICAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNSZWZ1bmRTdGF0dXNWaWV3ID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJlZGlyZWN0dG9SZWZ1bmRMaXN0UGFnZSgpIHtcbiAgICBpZiAoKHR5cGVvZiB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuVEFLRVBBWU1FTlQgPT09ICdzdHJpbmcnICYmIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5UQUtFUEFZTUVOVCA9PT0gJ2ZhbHNlJykgfHwgKHR5cGVvZiB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuVEFLRVBBWU1FTlQgPT09ICdib29sZWFuJyAmJiAhdGhpcy5wYXltZW50TGliQ29tcG9uZW50LlRBS0VQQVlNRU5UKSkge1xuICAgICAgLy8gd2luZG93LmxvY2F0aW9uLmhyZWY9Jy9yZWZ1bmQtbGlzdD90YWtlUGF5bWVudD1mYWxzZSZyZWZ1bmRsaXN0PXRydWUnO1xuICAgICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnZpZXdOYW1lID0gJ3JlZnVuZC1saXN0JztcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLmxvYWRSZWZ1bmRMaXN0UGFnZSgpO1xuICAgIH1cbiAgfVxuICBsb2FkQ2FzZVRyYW5zYWN0aW9uUGFnZSgpIHtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldG5hdmlnYXRpb25QYWdlKCdjYXNldHJhbnNhY3Rpb25zJyk7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRpc0Zyb21TZXJ2aWNlUmVxdWVzdFBhZ2UoZmFsc2UpO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC52aWV3TmFtZSA9ICdjYXNlLXRyYW5zYWN0aW9ucyc7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LklTQlNFTkFCTEUgPSB0cnVlO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc1JlZnVuZFN0YXR1c1ZpZXcgPSBmYWxzZTtcbiAgfVxuXG4gIHJlc2V0Rm9ybSh2YWxzLCBmaWVsZCkge1xuICAgIGlmIChmaWVsZCA9PT0gJ2FjdGlvbicgfHwgZmllbGQgPT09ICdhbGwnKSB7XG4gICAgICB0aGlzLnJlZnVuZEFjdGlvbnNIYXNFcnJvciA9IHZhbHNbMF07XG4gICAgfVxuICAgIGlmIChmaWVsZCA9PT0gJ3JlamVjdFJlYXNvbicgfHwgZmllbGQgPT09ICdhbGwnKSB7XG4gICAgICB0aGlzLnJlZnVuZFJlamVjdFJlYXNvbkhhc0Vycm9yID0gdmFsc1sxXTtcbiAgICB9XG4gICAgaWYgKGZpZWxkID09PSAnYWRkQXJlYXNvbicgfHwgZmllbGQgPT09ICdhbGwnKSB7XG4gICAgICB0aGlzLmlzUmVhc29uRmllbGRFbXB0eSA9IHZhbHNbMl07XG4gICAgICB0aGlzLmlzUmVhc29uRmllbGRJbnZhbGlkID0gdmFsc1szXTtcbiAgICAgIHRoaXMucmVhc29uRmllbGRNaW5IYXNFcnJvciA9IHZhbHNbNF07XG4gICAgICB0aGlzLnJlYXNvbkZpZWxkTWF4SGFzRXJyb3IgPSB2YWxzWzVdO1xuICAgIH1cbiAgICBpZiAoZmllbGQgPT09ICdlbnRlclJlYXNvbicgfHwgZmllbGQgPT09ICdhbGwnKSB7XG4gICAgICB0aGlzLmlzUmVhc29uRW1wdHkgPSB2YWxzWzZdO1xuICAgICAgdGhpcy5pc1JlYXNvbkludmFsaWQgPSB2YWxzWzddO1xuICAgIH1cbiAgfVxuXG4gIGdvVG9DYXNlUmV2aWV3KCkge1xuICAgIGNvbnN0IGlzUGF5QnViYmxlID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzRnJvbVBheUJ1YmJsZTtcbiAgICBpZiAoaXNQYXlCdWJibGUpIHtcbiAgICAgIHRoaXMubG9hZENhc2VUcmFuc2FjdGlvblBhZ2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2AvY2FzZXMvY2FzZS1kZXRhaWxzLyR7dGhpcy5jY2RDYXNlTnVtYmVyfWBdLCB7IHJlbGF0aXZlVG86IHRoaXMuYWN0aXZlUm91dGUgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0VGVtcGxhdGVJbnN0cnVjdGlvblR5cGUocGF5bWVudDogSVBheW1lbnQsIHBheW1lbnRSZWZlcmVuY2U6IHN0cmluZyk6IHZvaWQge1xuXG4gICAgaWYgKHBheW1lbnQgPT0gdW5kZWZpbmVkIHx8IHBheW1lbnQgPT0gbnVsbCB8fCBwYXltZW50LnJlZmVyZW5jZSAhPSBwYXltZW50UmVmZXJlbmNlKSB7XG5cbiAgICAgIHRoaXMucGF5bWVudFZpZXdTZXJ2aWNlLmdldFBheW1lbnREZXRhaWxzKHBheW1lbnRSZWZlcmVuY2UpLnN1YnNjcmliZShcbiAgICAgICAgcGF5bWVudCA9PiB7XG4gICAgICAgICAgdGhpcy5wYXltZW50T2JqID0gcGF5bWVudDtcbiAgICAgICAgICB0aGlzLnBheW1lbnRPYmoucmVmZXJlbmNlID0gcGF5bWVudFJlZmVyZW5jZTtcbiAgICAgICAgICB0aGlzLnRlbXBsYXRlSW5zdHJ1Y3Rpb25UeXBlID0gdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmdldE5vdGlmaWNhdGlvbkluc3RydWN0aW9uVHlwZSh0aGlzLnBheW1lbnRPYmouY2hhbm5lbCwgdGhpcy5wYXltZW50T2JqLm1ldGhvZCk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy50ZW1wbGF0ZUluc3RydWN0aW9uVHlwZSA9ICdUZW1wbGF0ZSc7XG4gICAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGVtcGxhdGVJbnN0cnVjdGlvblR5cGUgPSB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZ2V0Tm90aWZpY2F0aW9uSW5zdHJ1Y3Rpb25UeXBlKHBheW1lbnQuY2hhbm5lbCwgcGF5bWVudC5tZXRob2QpO1xuICAgIH1cbiAgfVxuXG4gIHNob3dOb3RpZmljYXRpb25QcmV2aWV3KCk6IHZvaWQge1xuICAgIHRoaXMubm90aWZpY2F0aW9uUHJldmlldyA9IHRydWU7XG4gIH1cblxuICBoaWRlTm90aWZpY2F0aW9uUHJldmlldygpOiB2b2lkIHtcbiAgICB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXcgPSBmYWxzZTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdTdGF0dXMgPT09ICdSZWZ1bmRQcm9jZXNzJ1wiPlxuPGRpdiBjbGFzcz1cImdvdnVrLXdpZHRoLWNvbnRhaW5lclwiPlxuXG4gIDxtYWluIGNsYXNzPVwiZ292dWstbWFpbi13cmFwcGVyIGdvdnVrLSEtcGFkZGluZy10b3AtMFwiIFtuZ0NsYXNzXT1cInsnZ292dWstcmFkaW9zX19jb25kaXRpb25hbC0taGlkZGVuJzogaXNTdWNjZXNzcGFnZUVuYWJsZX1cIiBpZD1cIm1haW4tY29udGVudFwiIHJvbGU9XCJtYWluXCI+XG4gICAgPGRpdiAqbmdJZj1cImVycm9yTWVzc2FnZS5zaG93RXJyb3JcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJlcnJvci1zdW1tYXJ5XCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbGxlZGJ5PVwiZmFpbHVyZS1lcnJvci1zdW1tYXJ5LWhlYWRpbmdcIiB0YWJpbmRleD1cIi0xXCI+XG4gICAgICAgIDxoMiBjbGFzcz1cImhlYWRpbmctbWVkaXVtIGVycm9yLXN1bW1hcnktaGVhZGluZ1wiIGlkPVwiZmFpbHVyZS1lcnJvci1zdW1tYXJ5LWhlYWRpbmdcIj5cbiAgICAgICAgICB7e2Vycm9yTWVzc2FnZS50aXRsZX19XG4gICAgICAgIDwvaDI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5X19ib2R5IHByb2Nlc3MtcmVmdW5kLWZvbnRcIj5cbiAgICAgICAgICB7e2Vycm9yTWVzc2FnZS5ib2R5fX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LXZpZXctYWxpZ25tZW50XCI+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLXJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uXCI+XG4gICAgICAgICAgPGgxIGNsYXNzPVwiaGVhZGluZy1sYXJnZSBnb3Z1ay0hLW1hcmdpbi10b3AtMFwiPlJldmlldyByZWZ1bmQgZGV0YWlsczwvaDE+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8dGFibGU+XG4gICAgICAgIDx0Ym9keT5cblxuICAgICAgICA8dHIgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiYm9sZCB0Yi1jb2wtd1wiPlBheW1lbnQgdG8gYmUgcmVmdW5kZWQ8L3RkPlxuICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiMlwiPnt7cmVmdW5kbGlzdHNvdXJjZT8ucmVmdW5kX3JlZmVyZW5jZX19ICh7e3JlZnVuZGxpc3Rzb3VyY2UuYW1vdW50ICB8IGN1cnJlbmN5IDonR0JQJzonc3ltYm9sJzonMS4yLTInICB9fSk8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHIgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiYm9sZCB0Yi1jb2wtd1wiPlJlYXNvbiBmb3IgcmVmdW5kPC90ZD5cbiAgICAgICAgICA8dGQgY29sc3Bhbj1cIjJcIj57e3JlZnVuZGxpc3Rzb3VyY2U/LnJlYXNvbj8udHJpbSgpfX08L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHIgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJib2xkIHRiLWNvbC13XCI+QW1vdW50IHRvIGJlIHJlZnVuZGVkPC90ZD5cbiAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiMlwiPnt7cmVmdW5kbGlzdHNvdXJjZT8uYW1vdW50IHwgY3VycmVuY3kgOidHQlAnOidzeW1ib2wnOicxLjItMicgfX08L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHIgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiYm9sZCB0Yi1jb2wtd1wiPlNlbnQgdG88L3RkPlxuICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiMlwiPnt7Y3BvRGV0YWlscz8ucmVzcG9uc2libGVQYXJ0eX19PC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyIGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cImJvbGQgdGItY29sLXdcIj5TZW50IHZpYTwvdGQ+XG4gICAgICAgICAgPHRkIGNvbHNwYW49XCIyXCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInJlZnVuZGxpc3Rzb3VyY2U/LmNvbnRhY3RfZGV0YWlscz8ubm90aWZpY2F0aW9uX3R5cGUgPT09ICdFTUFJTCdcIiBjbGFzcz1cImNvbnRhY3REZXRhaWxzLXdpZHRoIGZvbnQtc2l6ZS0xOXB4XCI+XG4gICAgICAgICAgICA8c3Ryb25nPkVtYWlsPC9zdHJvbmc+XG4gICAgICAgICAgICA8YnIvPlxuICAgICAgICAgICAge3tyZWZ1bmRsaXN0c291cmNlPy5jb250YWN0X2RldGFpbHM/LmVtYWlsPy50cmltKCl9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJyZWZ1bmRsaXN0c291cmNlPy5jb250YWN0X2RldGFpbHM/Lm5vdGlmaWNhdGlvbl90eXBlID09PSAnTEVUVEVSJ1wiIGNsYXNzPVwiY29udGFjdERldGFpbHMtd2lkdGggZm9udC1zaXplLTE5cHhcIj5cbiAgICAgICAgICAgIDxzdHJvbmc+UG9zdDwvc3Ryb25nPlxuICAgICAgICAgICAgPGJyLz5cbiAgICAgICAgICAgIHt7cmVmdW5kbGlzdHNvdXJjZT8uY29udGFjdF9kZXRhaWxzPy5hZGRyZXNzX2xpbmU/LnRyaW0oKX19IHt7cmVmdW5kbGlzdHNvdXJjZT8uY29udGFjdF9kZXRhaWxzPy5jaXR5Py50cmltKCl9fSB7e3JlZnVuZGxpc3Rzb3VyY2U/LmNvbnRhY3RfZGV0YWlscz8uY291bnR5Py50cmltKCl9fSB7e3JlZnVuZGxpc3Rzb3VyY2U/LmNvbnRhY3RfZGV0YWlscz8uY291bnRyeT8udHJpbSgpfX0ge3tyZWZ1bmRsaXN0c291cmNlPy5jb250YWN0X2RldGFpbHM/LnBvc3RhbF9jb2RlPy50cmltKCl9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0ciBjbGFzcz1cInNlY3Rpb25cIj5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImJvbGQgdGItY29sLXdcIj5TdWJtaXR0ZWQgYnk8L3RkPlxuICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIyXCI+e3tyZWZ1bmRsaXN0c291cmNlPy51c2VyX2Z1bGxfbmFtZX19PC90ZD5cblxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHIgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJib2xkIHRiLWNvbC13XCI+RGF0ZSBzdWJtaXR0ZWQ8L3RkPlxuICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIyXCI+e3tyZWZ1bmRsaXN0c291cmNlPy5kYXRlX2NyZWF0ZWQgfCBkYXRlOidkIE1NTU0geXl5eScgfX08L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHIgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiYm9sZCB0Yi1jb2wtd1wiPk5vdGlmaWNhdGlvbjwvdGQ+XG4gICAgICAgICAgPHRkPnt7dGVtcGxhdGVJbnN0cnVjdGlvblR5cGV9fTwvdGQ+XG4gICAgICAgICAgPHRkPlxuICAgICAgICAgICAgPGEgKm5nSWY9XCIhbm90aWZpY2F0aW9uUHJldmlld1wiIGhyZWY9XCJKYXZhc2NyaXB0OnZvaWQoMClcIiBjbGFzcz1cImdvdnVrLWxpbmsgcG9pbnRlciByaWdodFwiIChjbGljayk9XCJzaG93Tm90aWZpY2F0aW9uUHJldmlldygpXCI+XG4gICAgICAgICAgICAgIFByZXZpZXdcbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDxhICpuZ0lmPVwibm90aWZpY2F0aW9uUHJldmlld1wiIGhyZWY9XCJKYXZhc2NyaXB0OnZvaWQoMClcIiBjbGFzcz1cImdvdnVrLWxpbmsgcG9pbnRlciByaWdodFwiIChjbGljayk9XCJoaWRlTm90aWZpY2F0aW9uUHJldmlldygpXCI+XG4gICAgICAgICAgICAgIEhpZGUgUHJldmlld1xuICAgICAgICAgICAgPC9hPlxuICAgICAgICA8L3RkPlxuXG4gICAgICA8L3RyPlxuXG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L3RhYmxlPlxuXG4gICAgICA8YXBwLW5vdGlmaWNhdGlvbi1wcmV2aWV3ICpuZ0lmPVwibm90aWZpY2F0aW9uUHJldmlld1wiIFtwYXltZW50UmVmZXJlbmNlXT1cInJlZnVuZGxpc3Rzb3VyY2U/LnBheW1lbnRfcmVmZXJlbmNlXCJcbiAgICAgICAgW3BheW1lbnRdPVwicGF5bWVudE9ialwiXG4gICAgICAgIFtjb250YWN0RGV0YWlsc109XCJyZWZ1bmRsaXN0c291cmNlPy5jb250YWN0X2RldGFpbHNcIlxuICAgICAgICBbcmVmdW5kUmVhc29uXT1cInJlZnVuZGxpc3Rzb3VyY2U/LnJlYXNvbl9jb2RlXCIgW3JlZnVuZEFtb3VudF09XCJyZWZ1bmRsaXN0c291cmNlPy5hbW91bnRcIlxuICAgICAgICBbcmVmdW5kUmVmZXJlbmNlXT1cInJlZnVuZGxpc3Rzb3VyY2U/LnJlZnVuZF9yZWZlcmVuY2VcIlxuICAgICAgICAobm90aWZpY2F0aW9uUHJldmlld0V2ZW50KSA9IFwiZ2V0Tm90aWZpY2F0aW9uUHJldmlld09iaigkZXZlbnQpXCI+XG4gICAgICA8L2FwcC1ub3RpZmljYXRpb24tcHJldmlldz5cblxuICAgICAgPGRpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJwcm9jZXNzLXJlZnVuZF9fcGFuZWxcIj5cbiAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwicHJvY2Vzc1JlZnVuZEZvcm1cIiBub3ZhbGlkYXRlPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgIDxmaWVsZHNldCBjbGFzcz1cImdvdnVrLWZpZWxkc2V0XCIgYXJpYS1kZXNjcmliZWRieT1cInNpZ24taW4taGludFwiPlxuICAgICAgICAgIDxsZWdlbmQgY2xhc3M9XCJnb3Z1ay1maWVsZHNldF9fbGVnZW5kIGdvdnVrLWZpZWxkc2V0X19sZWdlbmQtLWxcIj5cbiAgICAgICAgICAgIDxoMSBjbGFzcz1cImhlYWRpbmctbGFyZ2VcIj5cbiAgICAgICAgICAgICAgV2hhdCBkbyB5b3Ugd2FudCB0byBkbyB3aXRoIHRoaXMgcmVmdW5kP1xuICAgICAgICAgICAgPC9oMT5cbiAgICAgICAgICA8L2xlZ2VuZD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zXCIgIFtuZ0NsYXNzXT1cInsnZm9ybS1ncm91cC1lcnJvcic6IHJlZnVuZEFjdGlvbnNIYXNFcnJvcn1cIj5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwiaW5saW5lLWVycm9yLW1lc3NhZ2VcIlxuICAgICAgICAgICAgKm5nSWY9XCJyZWZ1bmRBY3Rpb25zSGFzRXJyb3JcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicmVmdW5kQWN0aW9uc0hhc0Vycm9yXCI+UGxlYXNlIHNlbGVjdCBhbiBhY3Rpb248L3NwYW4+XG4gICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXJhZGlvc19faXRlbVwiICpuZ0Zvcj1cImxldCByZWZ1bmRBY3Rpb24gb2YgcmVmdW5kQWN0aW9uTGlzdDsgbGV0IGkgPSBpbmRleDtcIj5cbiAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZ292dWstcmFkaW9zX19pbnB1dFwiXG4gICAgICAgICAgICAgIGlkPVwicmVmdW5kQWN0aW9uLXt7aX19XCJcbiAgICAgICAgICAgICAgbmFtZT1cInJlZnVuZEFjdGlvbkZpZWxkXCJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicmVmdW5kQWN0aW9uRmllbGRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2hlY2tSZWZ1bmRBY3Rpb25zKHJlZnVuZEFjdGlvbi5jb2RlKVwiXG4gICAgICAgICAgICAgICAgdmFsdWU9XCJ7e3JlZnVuZEFjdGlvbi5jb2RlfX1cIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ292dWstbGFiZWwgZ292dWstcmFkaW9zX19sYWJlbCBwcm9jZXNzLXJlZnVuZC1mb250XCIgZm9yPVwicmVmdW5kQWN0aW9uLXt7aX19XCI+XG4gICAgICAgICAgICAgICAge3tyZWZ1bmRBY3Rpb24uY29kZX19XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDxkaXYgaWQ9XCJzaWduLWluLWl0ZW0taGludFwiIGNsYXNzPVwiZ292dWstaGludCBnb3Z1ay1yYWRpb3NfX2hpbnQgcHJvY2Vzcy1yZWZ1bmQtZm9udFwiPlxuICAgICAgICAgICAgICAgIHt7cmVmdW5kQWN0aW9uLmxhYmVsfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1yYWRpb3NfX2NvbmRpdGlvbmFsXCIgW25nQ2xhc3NdPVwieydnb3Z1ay1yYWRpb3NfX2NvbmRpdGlvbmFsLS1oaWRkZW4nOiAhaXNTZW5kTWVCYWNrQ2xpY2tlZH1cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBwcm9jZXNzLXJlZnVuZC1mb250XCIgZm9yPVwic2VuZG1lYmFja1wiPlxuICAgICAgICAgICAgICAgICAgQWRkIGEgcmVhc29uXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImlubGluZS1lcnJvci1tZXNzYWdlXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImlzUmVhc29uRmllbGRFbXB0eSB8fCBpc1JlYXNvbkZpZWxkSW52YWxpZCB8fCByZWFzb25GaWVsZE1pbkhhc0Vycm9yIHx8IHJlYXNvbkZpZWxkTWF4SGFzRXJyb3JcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImlzUmVhc29uRmllbGRFbXB0eVwiPkFkZCBhIHJlYXNvbjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImlzUmVhc29uRmllbGRJbnZhbGlkXCI+QWRkIGEgdmFsaWQgcmVhc29uPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicmVhc29uRmllbGRNaW5IYXNFcnJvclwiPlJlYXNvbiBzaG91bGQgYmUgYXQgbGVhc3QgMyBjaGFyYWN0ZXJzLjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJlYXNvbkZpZWxkTWF4SGFzRXJyb3JcIj5SZWFzb24gc2hvdWxkIGJlIDI1NSBjaGFyYWN0ZXJzIG9yIHVuZGVyLjwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cImdvdnVrLXRleHRhcmVhIGdvdnVrLSEtd2lkdGgtb25lLXRoaXJkIHJlYXNvbi1mb250XCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2lubGluZS1lcnJvci1jbGFzcyc6IGlzUmVhc29uRmllbGRFbXB0eSB8fCBpc1JlYXNvbkZpZWxkSW52YWxpZCB8fCByZWFzb25GaWVsZE1pbkhhc0Vycm9yIHx8IHJlYXNvbkZpZWxkTWF4SGFzRXJyb3J9XCJcbiAgICAgICAgICAgICAgICAgIGlkPVwic2VuZG1lYmFja1wiXG4gICAgICAgICAgICAgICAgICBuYW1lPVwic2VuZE1lQmFja0ZpZWxkXCJcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInNlbmRNZUJhY2tGaWVsZFwiXG4gICAgICAgICAgICAgICAgcm93cz1cIjVcIj48L3RleHRhcmVhPlxuXG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwvZmllbGRzZXQ+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBbbmdDbGFzc109XCJ7J2dvdnVrLXJhZGlvc19fY29uZGl0aW9uYWwtLWhpZGRlbic6ICFpc1JlamVjdENsaWNrZWR9XCI+XG4gICAgICAgIDxmaWVsZHNldCBjbGFzcz1cImdvdnVrLWZpZWxkc2V0XCI+XG4gICAgICAgICAgPGxlZ2VuZCBjbGFzcz1cImdvdnVrLWZpZWxkc2V0X19sZWdlbmQgZ292dWstZmllbGRzZXRfX2xlZ2VuZC0tbFwiPlxuICAgICAgICAgICAgPGgyIGNsYXNzPVwiaGVhZGluZy1tZWRpdW1cIj5cbiAgICAgICAgICAgICAgV2h5IGFyZSB5b3UgcmVqZWN0aW5nIHRoaXMgcmVmdW5kP1xuICAgICAgICAgICAgPC9oMj5cbiAgICAgICAgICA8L2xlZ2VuZD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zXCIgW25nQ2xhc3NdPVwieydmb3JtLWdyb3VwLWVycm9yJzogcmVmdW5kUmVqZWN0UmVhc29uSGFzRXJyb3J9XCI+XG4gICAgICAgICAgICA8cCBjbGFzcz1cImlubGluZS1lcnJvci1tZXNzYWdlXCJcbiAgICAgICAgICAgICpuZ0lmPVwicmVmdW5kUmVqZWN0UmVhc29uSGFzRXJyb3JcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicmVmdW5kUmVqZWN0UmVhc29uSGFzRXJyb3JcIj5QbGVhc2Ugc2VsZWN0IGEgcmVqZWN0IHJlYXNvbjwvc3Bhbj5cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zX19pdGVtXCIgKm5nRm9yPVwibGV0IHJlZnVuZFJlamVjdFJlYXNvbiBvZiByZWZ1bmRSZWplY3RSZWFzb25MaXN0OyBsZXQgaiA9IGluZGV4O1wiPlxuICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJnb3Z1ay1yYWRpb3NfX2lucHV0XCJcbiAgICAgICAgICAgICAgaWQ9XCJyZWZ1bmRSZWplY3RSZWFzb24te3tqfX1cIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJyZWZ1bmRSZWplY3RSZWFzb25GaWVsZFwiXG4gICAgICAgICAgICAgIG5hbWU9XCJyZWZ1bmRSZWplY3RSZWFzb25GaWVsZFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjaGVja1JlZnVuZEFjdGlvbnMocmVmdW5kUmVqZWN0UmVhc29uLmNvZGUpXCJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCIgdmFsdWU9XCJ7e3JlZnVuZFJlamVjdFJlYXNvbi5jb2RlfX1cIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ292dWstbGFiZWwgZ292dWstcmFkaW9zX19sYWJlbCBwcm9jZXNzLXJlZnVuZC1mb250XCIgZm9yPVwicmVmdW5kUmVqZWN0UmVhc29uLXt7an19XCI+XG4gICAgICAgICAgICAgICAge3tyZWZ1bmRSZWplY3RSZWFzb24ubmFtZX19XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXJhZGlvc19fY29uZGl0aW9uYWxcIiBbbmdDbGFzc109XCJ7J2dvdnVrLXJhZGlvc19fY29uZGl0aW9uYWwtLWhpZGRlbic6ICFpc090aGVyQ2xpY2tlZH1cIiBpZD1cImNvbmRpdGlvbmFsLWNvbnRhY3QtM1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIHByb2Nlc3MtcmVmdW5kLWZvbnQgXCIgZm9yPVwib3RoZXJSZWFzb25cIj5cbiAgICAgICAgICAgIEVudGVyIHJlYXNvblxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPHAgY2xhc3M9XCJpbmxpbmUtZXJyb3ItbWVzc2FnZVwiICpuZ0lmPVwiaXNSZWFzb25FbXB0eSB8fCBpc1JlYXNvbkludmFsaWRcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXNSZWFzb25FbXB0eVwiPkVudGVyIHJlYXNvbi48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImlzUmVhc29uSW52YWxpZFwiPkVudGVyIGEgdmFsaWQgcmVhc29uPC9zcGFuPlxuICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJnb3Z1ay1pbnB1dCBnb3Z1ay0hLXdpZHRoLW9uZS10aGlyZCByZWFzb24tZm9udFwiIGlkPVwib3RoZXJSZWFzb25cIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsnaW5saW5lLWVycm9yLWNsYXNzJzogaXNSZWFzb25FbXB0eSB8fCBpc1JlYXNvbkludmFsaWR9XCJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJlbnRlclJlYXNvbkZpZWxkXCIgbmFtZT1cImVudGVyUmVhc29uRmllbGRcIiB0eXBlPVwidGV4dFwiPjwvZGl2PlxuXG4gICAgICA8L2Rpdj5cblxuICAgICAgICA8L2ZpZWxkc2V0PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1idXR0b24tZ3JvdXBcIj5cbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwicmVkaXJlY3R0b1JlZnVuZExpc3RQYWdlKClcIiBjbGFzcz1cImdvdnVrLWJ1dHRvbiBnb3Z1ay1idXR0b24tLXNlY29uZGFyeSBtYXJnaW5yaWdodFwiPiBQcmV2aW91czwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJwcm9jZXNzUmVmdW5kU3VibWl0KClcIiBjbGFzcz1cImdvdnVrLWJ1dHRvbiBidXR0b25cIlxuICAgICAgICAgIGRhdGEtbW9kdWxlPVwiZ292dWstYnV0dG9uXCI+XG4gICAgICAgICAgU3VibWl0XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJyLz48YnIvPlxuICAgIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCIhaXNGcm9tUmVmdW5kTGlzdFBhZ2VcIiBjbGFzcz1cImdvdnVrLWJ1dHRvbi1ncm91cCBtYXJnaW5cIj5cblxuICA8cD48YSAoY2xpY2spPVwibG9hZFJlZnVuZHNIb21lUGFnZSgpXCIgY2xhc3M9XCJnb3Z1ay1saW5rIHBvaW50ZXJcIiBkYXRhLW1vZHVsZT1cImdvdnVrLWJ1dHRvblwiPkNhbmNlbDwvYT48L3A+XG48L2Rpdj5cbjwvZm9ybT5cbiAgPC9kaXY+XG5cblxuICA8L21haW4+XG5cbiAgPG1haW4gY2xhc3M9XCJnb3Z1ay1tYWluLXdyYXBwZXIgZ292dWstbWFpbi13cmFwcGVyLS1sIHN1Y2Nlc3MtcGFnZS1wYWRkaW5nLS10b3AyNVwiIFtuZ0NsYXNzXT1cInsnZ292dWstcmFkaW9zX19jb25kaXRpb25hbC0taGlkZGVuJzogIWlzU3VjY2Vzc3BhZ2VFbmFibGV9XCIgaWQ9XCJtYWluLWNvbnRlbnRcIiByb2xlPVwibWFpblwiID5cbiAgICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1yb3cgcGFnZXNpemVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXBhbmVsIGdvdnVrLXBhbmVsLXJlZnVuZC0tY29uZmlybWF0aW9uXCI+XG4gICAgICAgICAgPGgxIGNsYXNzPVwiaGVhZGluZy1yZWZ1bmRzLXhsYXJnZVwiPlxuICAgICAgICAgICAge3tzdWNjZXNzTXNnfX1cbiAgICAgICAgICA8L2gxPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHAgY2xhc3M9XCJnb3Z1ay1ib2R5IHByb2Nlc3MtcmVmdW5kLWZvbnRcIj5cbiAgICAgICAgPGEgaHJlZj1cIkphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJnb1RvQ2FzZVJldmlldygpXCIgY2xhc3M9XCJnb3Z1ay1saW5rIHBvaW50ZXJcIj5SZXR1cm4gdG8gY2FzZTwvYT5cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gIDwvbWFpbj5cbjwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbiJdfQ==
417
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1yZWZ1bmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcGF5bWVudC1saWIvc3JjL2xpYi9jb21wb25lbnRzL3Byb2Nlc3MtcmVmdW5kL3Byb2Nlc3MtcmVmdW5kLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BheW1lbnQtbGliL3NyYy9saWIvY29tcG9uZW50cy9wcm9jZXNzLXJlZnVuZC9wcm9jZXNzLXJlZnVuZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBYSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBS3hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBRXRGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7QUFTekQsTUFBTSxPQUFPLHNCQUFzQjtJQW1DYjtJQUNWO0lBQ0E7SUFDQTtJQUNBO0lBQ3VCO0lBQ3ZCO0lBQ0E7SUF6Q0QsZUFBZSxDQUFTO0lBQ3hCLGdCQUFnQixDQUFjO0lBRXZDLGlCQUFpQixDQUFZO0lBRTdCLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELFVBQVUsR0FBVyxJQUFJLENBQUM7SUFD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S0FBSyxDQUFDO0lBQ25DLENBQUM7d0dBdFpVLHNCQUFzQixpTEF3Q3ZCLGFBQWE7NEZBeENaLHNCQUFzQixrSkNwQm5DLGkvVUFrT0E7OzRGRDlNYSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0Usc0JBQXNCOzswQkE0QzdCLE1BQU07MkJBQUMsYUFBYTsyRkF2Q2QsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycywgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBSZWZ1bmRzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JlZnVuZHMvcmVmdW5kcy5zZXJ2aWNlJztcbmltcG9ydCB7IElSZWZ1bmRBY3Rpb24gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lSZWZ1bmRBY3Rpb24nO1xuaW1wb3J0IHsgSVJlZnVuZExpc3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lSZWZ1bmRMaXN0JztcbmltcG9ydCB7IElQYXltZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUGF5bWVudCc7XG5pbXBvcnQgeyBJUmVmdW5kUmVqZWN0UmVhc29uIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUmVmdW5kUmVqZWN0UmVhc29uJztcbmltcG9ydCB7IE9yZGVyc2xpc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvb3JkZXJzbGlzdC5zZXJ2aWNlJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGF5bWVudFZpZXdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcGF5bWVudC12aWV3L3BheW1lbnQtdmlldy5zZXJ2aWNlJztcbmltcG9ydCB0eXBlIHsgUGF5bWVudExpYkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BheW1lbnQtbGliLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElOb3RpZmljYXRpb25QcmV2aWV3IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JTm90aWZpY2F0aW9uUHJldmlldyc7XG50eXBlIFBheW1lbnRMaWJBbGlhcyA9IFBheW1lbnRMaWJDb21wb25lbnQ7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjcGF5LXByb2Nlc3MtcmVmdW5kJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2Nlc3MtcmVmdW5kLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvY2Vzcy1yZWZ1bmQuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIFByb2Nlc3NSZWZ1bmRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSByZWZ1bmRSZWZlcmVuY2U6IHN0cmluZztcbiAgQElucHV0KCkgcmVmdW5kbGlzdHNvdXJjZTogSVJlZnVuZExpc3Q7XG5cbiAgcHJvY2Vzc1JlZnVuZEZvcm06IEZvcm1Hcm91cDtcblxuICBlcnJvck1lc3NhZ2UgPSB0aGlzLmdldEVycm9yTWVzc2FnZShmYWxzZSwgJycsICcnLCAnJyk7XG4gIHNlbmRtZWJhY2s6IHN0cmluZyA9IG51bGw7XG4gIHZpZXdTdGF0dXM6IHN0cmluZztcbiAgcmVmdW5kQWN0aW9uTGlzdDogSVJlZnVuZEFjdGlvbltdID0gW107XG4gIHJlZnVuZFJlamVjdFJlYXNvbkxpc3Q6IElSZWZ1bmRSZWplY3RSZWFzb25bXSA9IFtdO1xuICBpc1NlbmRNZUJhY2tDbGlja2VkOiBib29sZWFuID0gZmFsc2U7XG4gIGlzUmVqZWN0Q2xpY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBpc090aGVyQ2xpY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1N1Y2Nlc3NwYWdlRW5hYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcmVmdW5kQWN0aW9uc0hhc0Vycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIHJlZnVuZFJlamVjdFJlYXNvbkhhc0Vycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIGlzUmVhc29uRmllbGRFbXB0eTogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1JlYXNvbkZpZWxkSW52YWxpZDogYm9vbGVhbiA9IGZhbHNlO1xuICByZWFzb25GaWVsZE1pbkhhc0Vycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIHJlYXNvbkZpZWxkTWF4SGFzRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNSZWFzb25FbXB0eTogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1JlYXNvbkludmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc3VjY2Vzc01zZzogc3RyaW5nID0gbnVsbDtcbiAgbmF2aWdhdGlvbnBhZ2U6IHN0cmluZztcbiAgY2NkQ2FzZU51bWJlcjogc3RyaW5nO1xuICBpc0Zyb21SZWZ1bmRMaXN0UGFnZTogYm9vbGVhbjtcbiAgY3BvRGV0YWlsczphbnkgPSBbXTtcbiAgaXNDUE9Eb3duOiBib29sZWFuO1xuICBpc0NvbmZpcm1CdXR0b25kaXNhYmxlZDogYm9vbGVhbiA9IHRydWU7XG4gIHBheW1lbnRPYmo6IElQYXltZW50O1xuICB0ZW1wbGF0ZUluc3RydWN0aW9uVHlwZTogc3RyaW5nO1xuICBub3RpZmljYXRpb25QcmV2aWV3OiBib29sZWFuID0gZmFsc2U7XG4gIG5vdGlmaWNhdGlvblByZXZpZXdPYmo6IElOb3RpZmljYXRpb25QcmV2aWV3O1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIFJlZnVuZHNTZXJ2aWNlOiBSZWZ1bmRzU2VydmljZSxcbiAgICBwcml2YXRlIHBheW1lbnRWaWV3U2VydmljZTogUGF5bWVudFZpZXdTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgT3JkZXJzbGlzdFNlcnZpY2U6IE9yZGVyc2xpc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBASW5qZWN0KCdQQVlNRU5UX0xJQicpIHByaXZhdGUgcGF5bWVudExpYkNvbXBvbmVudDogUGF5bWVudExpYkFsaWFzLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBhY3RpdmVSb3V0ZTogQWN0aXZhdGVkUm91dGUpIHtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudmlld1N0YXR1cyA9ICdSZWZ1bmRQcm9jZXNzJztcbiAgICB0aGlzLlJlZnVuZHNTZXJ2aWNlLmdldFJlZnVuZEFjdGlvbnModGhpcy5yZWZ1bmRSZWZlcmVuY2UpLnN1YnNjcmliZShcbiAgICAgIHJlZnVuZEFjdGlvbkxpc3QgPT4ge1xuICAgICAgICB0aGlzLnJlZnVuZEFjdGlvbkxpc3QgPSA8YW55PnJlZnVuZEFjdGlvbkxpc3Q7XG4gICAgICB9LFxuICAgICAgZXJyID0+IHtcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmdldEVycm9yTWVzc2FnZSh0cnVlLCBlcnIuc3RhdHVzQ29kZSwgZXJyLmVyciwgZXJyKTtcbiAgICAgIH1cbiAgICApO1xuICAgIHRoaXMucHJvY2Vzc1JlZnVuZEZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIHJlZnVuZEFjdGlvbkZpZWxkOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcbiAgICAgIF0pKSxcbiAgICAgIHJlZnVuZFJlamVjdFJlYXNvbkZpZWxkOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcbiAgICAgIF0pKSxcbiAgICAgIHNlbmRNZUJhY2tGaWVsZDogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICBWYWxpZGF0b3JzLm1pbkxlbmd0aCgzKSxcbiAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjU1KSxcbiAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKCdeKFthLXpBLVowLTlcXFxccyxcXFxcLl0qKSQnKSxcblxuICAgICAgXSkpLFxuICAgICAgZW50ZXJSZWFzb25GaWVsZDogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCgzMCksXG4gICAgICAgIFZhbGlkYXRvcnMucGF0dGVybignXihbYS16QS1aMC05LlxcXFxzXSopJCcpLFxuICAgICAgXSkpLFxuICAgIH0pO1xuICAgIHRoaXMuY2NkQ2FzZU51bWJlciA9IHRoaXMucmVmdW5kbGlzdHNvdXJjZS5jY2RfY2FzZV9udW1iZXI7XG5cbiAgICBpZigodHlwZW9mIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5UQUtFUEFZTUVOVCA9PT0gJ3N0cmluZycgJiYgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LlRBS0VQQVlNRU5UID09PSAnZmFsc2UnKSB8fCAodHlwZW9mIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5UQUtFUEFZTUVOVCA9PT0gJ2Jvb2xlYW4nICYmICF0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuVEFLRVBBWU1FTlQpICkge1xuICAgICAgdGhpcy5pc0Zyb21SZWZ1bmRMaXN0UGFnZSA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMucGF5bWVudFZpZXdTZXJ2aWNlLmdldFBhcnR5RGV0YWlscyh0aGlzLmNjZENhc2VOdW1iZXIpLnN1YnNjcmliZShcbiAgICAgIHJlc3BvbnNlID0+IHtcbiAgICAgICAgdGhpcy5jcG9EZXRhaWxzID0gSlNPTi5wYXJzZShyZXNwb25zZSkuY29udGVudFswXTtcblxuICAgICAgfSxcbiAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gPGFueT5lcnJvci5yZXBsYWNlKC9cIi9nLCBcIlwiKTtcbiAgICAgICAgdGhpcy5pc0NQT0Rvd24gPSB0cnVlO1xuICAgICAgfVxuICAgICk7XG4gICAgdGhpcy5nZXRUZW1wbGF0ZUluc3RydWN0aW9uVHlwZSh0aGlzLnBheW1lbnRPYmosIHRoaXMucmVmdW5kbGlzdHNvdXJjZS5wYXltZW50X3JlZmVyZW5jZSk7XG4gIH1cblxuICBjaGVja1JlZnVuZEFjdGlvbnMoY29kZTogc3RyaW5nKSB7XG4gICAgdGhpcy5yZWZ1bmRBY3Rpb25zSGFzRXJyb3IgPSBmYWxzZTtcbiAgICB0aGlzLmlzUmVhc29uRmllbGRFbXB0eSA9IGZhbHNlO1xuICAgIHRoaXMuaXNSZWFzb25FbXB0eSA9IGZhbHNlO1xuICAgIHRoaXMuaXNSZWFzb25JbnZhbGlkID0gZmFsc2U7XG4gICAgdGhpcy5yZWZ1bmRSZWplY3RSZWFzb25IYXNFcnJvciA9IGZhbHNlO1xuICAgIGlmIChjb2RlID09PSAnUmV0dXJuIHRvIGNhc2V3b3JrZXInKSB7XG4gICAgICB0aGlzLmlzQ29uZmlybUJ1dHRvbmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuaXNTZW5kTWVCYWNrQ2xpY2tlZCA9IHRydWU7XG4gICAgICB0aGlzLmlzUmVqZWN0Q2xpY2tlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pc090aGVyQ2xpY2tlZCA9IGZhbHNlO1xuXG4gICAgfSBlbHNlIGlmIChjb2RlID09PSAnQXBwcm92ZScpIHtcbiAgICAgIHRoaXMuaXNTZW5kTWVCYWNrQ2xpY2tlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pc0NvbmZpcm1CdXR0b25kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pc1JlamVjdENsaWNrZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuaXNPdGhlckNsaWNrZWQgPSBmYWxzZTtcblxuICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gJ1JlamVjdCcpIHtcbiAgICAgIHRoaXMuaXNSZWplY3RDbGlja2VkID0gdHJ1ZTtcbiAgICAgIHRoaXMuaXNTZW5kTWVCYWNrQ2xpY2tlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pc090aGVyQ2xpY2tlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5SZWZ1bmRzU2VydmljZS5nZXRSZWZ1bmRSZWplY3RSZWFzb25zKCkuc3Vic2NyaWJlKFxuICAgICAgICByZWZ1bmRSZWplY3RSZWFzb25MaXN0ID0+IHtcbiAgICAgICAgICB0aGlzLnJlZnVuZFJlamVjdFJlYXNvbkxpc3QgPSA8YW55PnJlZnVuZFJlamVjdFJlYXNvbkxpc3Q7XG4gICAgICAgIH0sXG4gICAgICAgIGVyciA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmdldEVycm9yTWVzc2FnZSh0cnVlLCBlcnIuc3RhdHVzQ29kZSwgZXJyLmVyciwgZXJyKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKGNvZGUgPT09ICdSRTAwNScpIHtcbiAgICAgIHRoaXMuaXNPdGhlckNsaWNrZWQgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoY29kZSAhPT0gJ1JFMDA1Jykge1xuICAgICAgdGhpcy5pc090aGVyQ2xpY2tlZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGdldE5vdGlmaWNhdGlvblByZXZpZXdPYmoobm90aWZpY2F0aW9uUHJldmlld09iajogSU5vdGlmaWNhdGlvblByZXZpZXcpIHtcbiAgICB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXdPYmogPSBub3RpZmljYXRpb25QcmV2aWV3T2JqO1xuICB9XG5cbiAgcHJvY2Vzc1JlZnVuZFN1Ym1pdCgpIHtcbiAgICBsZXQgcHJvY2Vzc1JlZnVuZFJlcXVlc3Q7XG4gICAgbGV0IHN0YXR1cztcbiAgICB0aGlzLnJlc2V0Rm9ybShbZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlXSwgJ2FsbCcpO1xuICAgIGNvbnN0IGNvbnRyb2xzID0gdGhpcy5wcm9jZXNzUmVmdW5kRm9ybS5jb250cm9scztcbiAgICBjb25zdCBwcm9jZXNzRm9ybUVycm9yID0gY29udHJvbHMuc2VuZE1lQmFja0ZpZWxkLmVycm9ycztcblxuICAgIGlmICh0aGlzLnByb2Nlc3NSZWZ1bmRGb3JtLmRpcnR5ICYmIGNvbnRyb2xzLnJlZnVuZEFjdGlvbkZpZWxkLnZhbGlkXG4gICAgICAmJiAoY29udHJvbHMucmVmdW5kQWN0aW9uRmllbGQudmFsdWUgPT0gJ0FwcHJvdmUnXG4gICAgICAgIHx8IChjb250cm9scy5yZWZ1bmRBY3Rpb25GaWVsZC52YWx1ZSA9PSAnUmVqZWN0JyAmJiBjb250cm9scy5yZWZ1bmRSZWplY3RSZWFzb25GaWVsZC52YWxpZCAmJiBjb250cm9scy5yZWZ1bmRSZWplY3RSZWFzb25GaWVsZC52YWx1ZSAhPSAnUkUwMDUnKVxuICAgICAgICB8fCAoY29udHJvbHMucmVmdW5kQWN0aW9uRmllbGQudmFsdWUgPT0gJ1JlamVjdCcgJiYgY29udHJvbHMucmVmdW5kUmVqZWN0UmVhc29uRmllbGQudmFsdWUgPT0gJ1JFMDA1JyAmJiBjb250cm9scy5lbnRlclJlYXNvbkZpZWxkLnZhbGlkKVxuICAgICAgICB8fCAoY29udHJvbHMucmVmdW5kQWN0aW9uRmllbGQudmFsdWUgPT0gJ1JldHVybiB0byBjYXNld29ya2VyJyAmJiBjb250cm9scy5zZW5kTWVCYWNrRmllbGQudmFsaWQpKSkge1xuICAgICAgaWYgKGNvbnRyb2xzLnJlZnVuZEFjdGlvbkZpZWxkLnZhbHVlID09PSAnQXBwcm92ZScpIHtcbiAgICAgICAgc3RhdHVzID0gJ0FQUFJPVkUnO1xuICAgICAgICBpZiAodGhpcy5ub3RpZmljYXRpb25QcmV2aWV3T2JqKSB7XG4gICAgICAgICAgcHJvY2Vzc1JlZnVuZFJlcXVlc3QgPSB7XG4gICAgICAgICAgICBjb2RlOiAnJyxcbiAgICAgICAgICAgIHJlYXNvbjogJycsXG4gICAgICAgICAgICB0ZW1wbGF0ZV9wcmV2aWV3OiB7XG4gICAgICAgICAgICAgIGJvZHk6IHRoaXMubm90aWZpY2F0aW9uUHJldmlld09iai5ib2R5LFxuICAgICAgICAgICAgICBmcm9tOiB7XG4gICAgICAgICAgICAgICAgZnJvbV9lbWFpbF9hZGRyZXNzOiB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXdPYmouZnJvbS5mcm9tX2VtYWlsX2FkZHJlc3MsXG4gICAgICAgICAgICAgICAgZnJvbV9tYWlsX2FkZHJlc3M6IHtcbiAgICAgICAgICAgICAgICAgIGFkZHJlc3NfbGluZTogdGhpcy5ub3RpZmljYXRpb25QcmV2aWV3T2JqLmZyb20uZnJvbV9tYWlsX2FkZHJlc3MuYWRkcmVzc19saW5lLFxuICAgICAgICAgICAgICAgICAgY2l0eTogdGhpcy5ub3RpZmljYXRpb25QcmV2aWV3T2JqLmZyb20uZnJvbV9tYWlsX2FkZHJlc3MuY2l0eSxcbiAgICAgICAgICAgICAgICAgIGNvdW50cnk6IHRoaXMubm90aWZpY2F0aW9uUHJldmlld09iai5mcm9tLmZyb21fbWFpbF9hZGRyZXNzLmNvdW50cnksXG4gICAgICAgICAgICAgICAgICBjb3VudHk6IHRoaXMubm90aWZpY2F0aW9uUHJldmlld09iai5mcm9tLmZyb21fbWFpbF9hZGRyZXNzLmNvdW50eSxcbiAgICAgICAgICAgICAgICAgIHBvc3RhbF9jb2RlOiB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXdPYmouZnJvbS5mcm9tX21haWxfYWRkcmVzcy5wb3N0YWxfY29kZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgaHRtbDogdGhpcy5ub3RpZmljYXRpb25QcmV2aWV3T2JqLmh0bWwsXG4gICAgICAgICAgICAgIGlkOiB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXdPYmoudGVtcGxhdGVfaWQsXG4gICAgICAgICAgICAgIHN1YmplY3Q6IHRoaXMubm90aWZpY2F0aW9uUHJldmlld09iai5zdWJqZWN0LFxuICAgICAgICAgICAgICB0ZW1wbGF0ZV90eXBlOiB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXdPYmoudGVtcGxhdGVfdHlwZSxcbiAgICAgICAgICAgICAgdmVyc2lvbjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcm9jZXNzUmVmdW5kUmVxdWVzdCA9IHtcbiAgICAgICAgICAgIGNvZGU6ICcnLFxuICAgICAgICAgICAgcmVhc29uOiAnJ1xuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY29udHJvbHMucmVmdW5kQWN0aW9uRmllbGQudmFsdWUgPT09ICdSZWplY3QnKSB7XG4gICAgICAgIHN0YXR1cyA9ICdSRUpFQ1QnO1xuXG4gICAgICAgIGlmICh0aGlzLm5vdGlmaWNhdGlvblByZXZpZXdPYmopIHtcbiAgICAgICAgICBwcm9jZXNzUmVmdW5kUmVxdWVzdCA9IHtcbiAgICAgICAgICAgIGNvZGU6IGNvbnRyb2xzLnJlZnVuZFJlamVjdFJlYXNvbkZpZWxkLnZhbHVlID8gY29udHJvbHMucmVmdW5kUmVqZWN0UmVhc29uRmllbGQudmFsdWUgOiAnJyxcbiAgICAgICAgICAgIHJlYXNvbjogY29udHJvbHMucmVmdW5kUmVqZWN0UmVhc29uRmllbGQudmFsdWUgPT0gJ1JFMDA1JyA/IGNvbnRyb2xzLmVudGVyUmVhc29uRmllbGQudmFsdWUgOiAnJyxcbiAgICAgICAgICAgIHRlbXBsYXRlX3ByZXZpZXc6IHtcbiAgICAgICAgICAgICAgYm9keTogdGhpcy5ub3RpZmljYXRpb25QcmV2aWV3T2JqLmJvZHksXG4gICAgICAgICAgICAgIGZyb206IHtcbiAgICAgICAgICAgICAgICBmcm9tX2VtYWlsX2FkZHJlc3M6IHRoaXMubm90aWZpY2F0aW9uUHJldmlld09iai5mcm9tLmZyb21fZW1haWxfYWRkcmVzcyxcbiAgICAgICAgICAgICAgICBmcm9tX21haWxfYWRkcmVzczoge1xuICAgICAgICAgICAgICAgICAgYWRkcmVzc19saW5lOiB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXdPYmouZnJvbS5mcm9tX21haWxfYWRkcmVzcy5hZGRyZXNzX2xpbmUsXG4gICAgICAgICAgICAgICAgICBjaXR5OiB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXdPYmouZnJvbS5mcm9tX21haWxfYWRkcmVzcy5jaXR5LFxuICAgICAgICAgICAgICAgICAgY291bnRyeTogdGhpcy5ub3RpZmljYXRpb25QcmV2aWV3T2JqLmZyb20uZnJvbV9tYWlsX2FkZHJlc3MuY291bnRyeSxcbiAgICAgICAgICAgICAgICAgIGNvdW50eTogdGhpcy5ub3RpZmljYXRpb25QcmV2aWV3T2JqLmZyb20uZnJvbV9tYWlsX2FkZHJlc3MuY291bnR5LFxuICAgICAgICAgICAgICAgICAgcG9zdGFsX2NvZGU6IHRoaXMubm90aWZpY2F0aW9uUHJldmlld09iai5mcm9tLmZyb21fbWFpbF9hZGRyZXNzLnBvc3RhbF9jb2RlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBodG1sOiB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXdPYmouaHRtbCxcbiAgICAgICAgICAgICAgaWQ6IHRoaXMubm90aWZpY2F0aW9uUHJldmlld09iai50ZW1wbGF0ZV9pZCxcbiAgICAgICAgICAgICAgc3ViamVjdDogdGhpcy5ub3RpZmljYXRpb25QcmV2aWV3T2JqLnN1YmplY3QsXG4gICAgICAgICAgICAgIHRlbXBsYXRlX3R5cGU6IHRoaXMubm90aWZpY2F0aW9uUHJldmlld09iai50ZW1wbGF0ZV90eXBlLFxuICAgICAgICAgICAgICB2ZXJzaW9uOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcm9jZXNzUmVmdW5kUmVxdWVzdCA9IHtcbiAgICAgICAgICAgIGNvZGU6IGNvbnRyb2xzLnJlZnVuZFJlamVjdFJlYXNvbkZpZWxkLnZhbHVlID8gY29udHJvbHMucmVmdW5kUmVqZWN0UmVhc29uRmllbGQudmFsdWUgOiAnJyxcbiAgICAgICAgICAgIHJlYXNvbjogY29udHJvbHMucmVmdW5kUmVqZWN0UmVhc29uRmllbGQudmFsdWUgPT0gJ1JFMDA1JyA/IGNvbnRyb2xzLmVudGVyUmVhc29uRmllbGQudmFsdWUgOiAnJ1xuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuXG4gICAgICB9IGVsc2UgaWYgKGNvbnRyb2xzLnJlZnVuZEFjdGlvbkZpZWxkLnZhbHVlID09PSAnUmV0dXJuIHRvIGNhc2V3b3JrZXInKSB7XG4gICAgICAgIHN0YXR1cyA9ICdTRU5EQkFDSyc7XG5cbiAgICAgICAgaWYgKHRoaXMubm90aWZpY2F0aW9uUHJldmlld09iaikge1xuICAgICAgICAgIHByb2Nlc3NSZWZ1bmRSZXF1ZXN0ID0ge1xuICAgICAgICAgICAgY29kZTogJycsXG4gICAgICAgICAgICByZWFzb246IGNvbnRyb2xzLnNlbmRNZUJhY2tGaWVsZC52YWx1ZSxcbiAgICAgICAgICAgIHRlbXBsYXRlX3ByZXZpZXc6IHtcbiAgICAgICAgICAgICAgYm9keTogdGhpcy5ub3RpZmljYXRpb25QcmV2aWV3T2JqLmJvZHksXG4gICAgICAgICAgICAgIGZyb206IHtcbiAgICAgICAgICAgICAgICBmcm9tX2VtYWlsX2FkZHJlc3M6IHRoaXMubm90aWZpY2F0aW9uUHJldmlld09iai5mcm9tLmZyb21fZW1haWxfYWRkcmVzcyxcbiAgICAgICAgICAgICAgICBmcm9tX21haWxfYWRkcmVzczoge1xuICAgICAgICAgICAgICAgICAgYWRkcmVzc19saW5lOiB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXdPYmouZnJvbS5mcm9tX21haWxfYWRkcmVzcy5hZGRyZXNzX2xpbmUsXG4gICAgICAgICAgICAgICAgICBjaXR5OiB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXdPYmouZnJvbS5mcm9tX21haWxfYWRkcmVzcy5jaXR5LFxuICAgICAgICAgICAgICAgICAgY291bnRyeTogdGhpcy5ub3RpZmljYXRpb25QcmV2aWV3T2JqLmZyb20uZnJvbV9tYWlsX2FkZHJlc3MuY291bnRyeSxcbiAgICAgICAgICAgICAgICAgIGNvdW50eTogdGhpcy5ub3RpZmljYXRpb25QcmV2aWV3T2JqLmZyb20uZnJvbV9tYWlsX2FkZHJlc3MuY291bnR5LFxuICAgICAgICAgICAgICAgICAgcG9zdGFsX2NvZGU6IHRoaXMubm90aWZpY2F0aW9uUHJldmlld09iai5mcm9tLmZyb21fbWFpbF9hZGRyZXNzLnBvc3RhbF9jb2RlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBodG1sOiB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXdPYmouaHRtbCxcbiAgICAgICAgICAgICAgaWQ6IHRoaXMubm90aWZpY2F0aW9uUHJldmlld09iai50ZW1wbGF0ZV9pZCxcbiAgICAgICAgICAgICAgc3ViamVjdDogdGhpcy5ub3RpZmljYXRpb25QcmV2aWV3T2JqLnN1YmplY3QsXG4gICAgICAgICAgICAgIHRlbXBsYXRlX3R5cGU6IHRoaXMubm90aWZpY2F0aW9uUHJldmlld09iai50ZW1wbGF0ZV90eXBlLFxuICAgICAgICAgICAgICB2ZXJzaW9uOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcm9jZXNzUmVmdW5kUmVxdWVzdCA9IHtcbiAgICAgICAgICAgIGNvZGU6ICcnLFxuICAgICAgICAgICAgcmVhc29uOiBjb250cm9scy5zZW5kTWVCYWNrRmllbGQudmFsdWVcbiAgICAgICAgICB9O1xuXG4gICAgICAgIH1cblxuXG4gICAgICB9XG4gICAgICB0aGlzLlJlZnVuZHNTZXJ2aWNlLnBhdGNoUmVmdW5kQWN0aW9ucyhwcm9jZXNzUmVmdW5kUmVxdWVzdCwgdGhpcy5yZWZ1bmRSZWZlcmVuY2UsIHN0YXR1cykuc3Vic2NyaWJlKFxuICAgICAgICByZXNwb25zZSA9PiB7XG4gICAgICAgICAgdGhpcy5pc1N1Y2Nlc3NwYWdlRW5hYmxlID0gdHJ1ZTtcbiAgICAgICAgICAvLyB0aGlzLnN1Y2Nlc3NNc2cgPSBKU09OLnBhcnNlKHJlc3BvbnNlKVsnZGF0YSddO1xuICAgICAgICAgIHRoaXMuc3VjY2Vzc01zZyA9IHJlc3BvbnNlLnJlcGxhY2UoL1snXCJdKy9nLCAnJyk7XG4gICAgICAgIH0sXG4gICAgICAgIGVyciA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmdldEVycm9yTWVzc2FnZSh0cnVlLCBlcnIuc3RhdHVzQ29kZSwgZXJyLmVyciwgZXJyKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGNvbnRyb2xzLnJlZnVuZEFjdGlvbkZpZWxkLnZhbHVlID09IFwiXCIpIHtcbiAgICAgICAgdGhpcy5yZXNldEZvcm0oW3RydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlXSwgJ2FjdGlvbicpO1xuICAgICAgfVxuICAgICAgaWYgKGNvbnRyb2xzLnJlZnVuZEFjdGlvbkZpZWxkLnZhbHVlID09ICdSZWplY3QnICYmIGNvbnRyb2xzLnJlZnVuZFJlamVjdFJlYXNvbkZpZWxkLnZhbHVlID09IFwiXCIpIHtcbiAgICAgICAgdGhpcy5yZXNldEZvcm0oW2ZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlXSwgJ3JlamVjdFJlYXNvbicpO1xuICAgICAgfVxuICAgICAgaWYgKGNvbnRyb2xzLnJlZnVuZEFjdGlvbkZpZWxkLnZhbHVlID09ICdSZXR1cm4gdG8gY2FzZXdvcmtlcicpIHtcbiAgICAgICAgaWYgKGNvbnRyb2xzLnNlbmRNZUJhY2tGaWVsZC52YWx1ZSA9PSAnJykge1xuICAgICAgICAgIHRoaXMucmVzZXRGb3JtKFtmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZV0sICdhZGRBcmVhc29uJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbnRyb2xzLnNlbmRNZUJhY2tGaWVsZC52YWx1ZSAhPSAnJyAmJiBjb250cm9scy5zZW5kTWVCYWNrRmllbGQuaW52YWxpZCkge1xuICAgICAgICAgIHRoaXMucmVzZXRGb3JtKFtmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZV0sICdhZGRBcmVhc29uJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb2Nlc3NGb3JtRXJyb3IgJiYgcHJvY2Vzc0Zvcm1FcnJvci5taW5sZW5ndGggJiYgcHJvY2Vzc0Zvcm1FcnJvci5taW5sZW5ndGguYWN0dWFsTGVuZ3RoIDwgMykge1xuICAgICAgICAgIHRoaXMucmVzZXRGb3JtKFtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZV0sICdhZGRBcmVhc29uJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb2Nlc3NGb3JtRXJyb3IgJiYgcHJvY2Vzc0Zvcm1FcnJvci5tYXhsZW5ndGggJiYgcHJvY2Vzc0Zvcm1FcnJvci5tYXhsZW5ndGguYWN0dWFsTGVuZ3RoID4gMjU1KSB7XG4gICAgICAgICAgdGhpcy5yZXNldEZvcm0oW2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlXSwgJ2FkZEFyZWFzb24nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNvbnRyb2xzLnJlZnVuZEFjdGlvbkZpZWxkLnZhbHVlID09ICdSZWplY3QnICYmIGNvbnRyb2xzLnJlZnVuZFJlamVjdFJlYXNvbkZpZWxkLnZhbHVlID09ICdSRTAwNScpIHtcbiAgICAgICAgaWYgKGNvbnRyb2xzLmVudGVyUmVhc29uRmllbGQudmFsdWUgPT09IFwiXCIpIHtcbiAgICAgICAgICB0aGlzLnJlc2V0Rm9ybShbZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2VdLCAnZW50ZXJSZWFzb24nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29udHJvbHMuZW50ZXJSZWFzb25GaWVsZC52YWx1ZSAhPT0gXCJcIiAmJiBjb250cm9scy5lbnRlclJlYXNvbkZpZWxkLmludmFsaWQpIHtcbiAgICAgICAgICB0aGlzLnJlc2V0Rm9ybShbZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWVdLCAnZW50ZXJSZWFzb24nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICB9XG4gIGdldEVycm9yTWVzc2FnZShpc0Vycm9yRXhpc3QsIHN0YXR1cywgZXJyb3JNc2csIGVycikge1xuICAgIGxldCBib2R5VHh0ID0gJ1BsZWFzZSB0cnkgYWdhaW4gbGF0ZXInO1xuICAgIGlmIChzdGF0dXMgIT09IDUwMCkge1xuICAgICAgaWYgKGVycm9yTXNnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYm9keVR4dCA9IGVycm9yTXNnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYm9keVR4dCA9IGVycjtcbiAgICAgIH1cblxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGU6ICdTb21ldGhpbmcgd2VudCB3cm9uZycsXG4gICAgICBib2R5OiBib2R5VHh0LFxuICAgICAgc2hvd0Vycm9yOiBpc0Vycm9yRXhpc3RcbiAgICB9O1xuICB9XG4gIGxvYWRSZWZ1bmRMaXN0UGFnZSgpIHtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLmdldG5hdmlnYXRpb25QYWdlVmFsdWUoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHRoaXMubmF2aWdhdGlvbnBhZ2UgPSBkYXRhKTtcbiAgICBpZiAodGhpcy5uYXZpZ2F0aW9ucGFnZSA9PT0gJ2Nhc2V0cmFuc2FjdGlvbnMnKSB7XG4gICAgICAvLyB3aW5kb3cubG9jYXRpb24uaHJlZj0nL3JlZnVuZC1saXN0P3Rha2VQYXltZW50PWZhbHNlJnJlZnVuZGxpc3Q9dHJ1ZSc7XG4gICAgICAvLyAvLyB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldG5hdmlnYXRpb25QYWdlKCdjYXNldHJhbnNhY3Rpb25zJyk7XG4gICAgICAvLyAvLyB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldGlzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZShmYWxzZSk7XG4gICAgICAvLyAvLyB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuVklFVyA9J2Nhc2UtdHJhbnNhY3Rpb25zJztcbiAgICAgIC8vIC8vIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC52aWV3TmFtZSA9ICdjYXNlLXRyYW5zYWN0aW9ucyc7XG4gICAgICAvLyAvLyB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuSVNCU0VOQUJMRSA9IHRydWU7XG4gICAgICAvLyAvLyB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNSZWZ1bmRTdGF0dXNWaWV3ID0gZmFsc2U7XG4gICAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQudmlld05hbWUgPSAncmVmdW5kc3RhdHVzbGlzdCc7XG4gICAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNSZWZ1bmRTdGF0dXNWaWV3ID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnZpZXdOYW1lID0gJ3JlZnVuZHN0YXR1c2xpc3QnO1xuICAgICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzUmVmdW5kU3RhdHVzVmlldyA9IHRydWU7XG4gICAgfVxuICB9XG4gIGxvYWRSZWZ1bmRzSG9tZVBhZ2UoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuVEFLRVBBWU1FTlQgPT09ICdzdHJpbmcnICYmIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5UQUtFUEFZTUVOVCA9PT0gJ2ZhbHNlJykge1xuICAgICAgLy93aW5kb3cubG9jYXRpb24uaHJlZj0nL3JlZnVuZC1saXN0P3Rha2VQYXltZW50PWZhbHNlJnJlZnVuZGxpc3Q9dHJ1ZSc7XG4gICAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQudmlld05hbWUgPSAncmVmdW5kLWxpc3QnO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0bmF2aWdhdGlvblBhZ2UoJ2Nhc2V0cmFuc2FjdGlvbnMnKTtcbiAgICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0aXNGcm9tU2VydmljZVJlcXVlc3RQYWdlKGZhbHNlKTtcbiAgICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5WSUVXID0gJ2Nhc2UtdHJhbnNhY3Rpb25zJztcbiAgICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC52aWV3TmFtZSA9ICdjYXNlLXRyYW5zYWN0aW9ucyc7XG4gICAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuSVNCU0VOQUJMRSA9IHRydWU7XG4gICAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNSZWZ1bmRTdGF0dXNWaWV3ID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJlZGlyZWN0dG9SZWZ1bmRMaXN0UGFnZSgpIHtcbiAgICBpZiAoKHR5cGVvZiB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuVEFLRVBBWU1FTlQgPT09ICdzdHJpbmcnICYmIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5UQUtFUEFZTUVOVCA9PT0gJ2ZhbHNlJykgfHwgKHR5cGVvZiB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuVEFLRVBBWU1FTlQgPT09ICdib29sZWFuJyAmJiAhdGhpcy5wYXltZW50TGliQ29tcG9uZW50LlRBS0VQQVlNRU5UKSkge1xuICAgICAgLy8gd2luZG93LmxvY2F0aW9uLmhyZWY9Jy9yZWZ1bmQtbGlzdD90YWtlUGF5bWVudD1mYWxzZSZyZWZ1bmRsaXN0PXRydWUnO1xuICAgICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnZpZXdOYW1lID0gJ3JlZnVuZC1saXN0JztcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLmxvYWRSZWZ1bmRMaXN0UGFnZSgpO1xuICAgIH1cbiAgfVxuICBsb2FkQ2FzZVRyYW5zYWN0aW9uUGFnZSgpIHtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldG5hdmlnYXRpb25QYWdlKCdjYXNldHJhbnNhY3Rpb25zJyk7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRpc0Zyb21TZXJ2aWNlUmVxdWVzdFBhZ2UoZmFsc2UpO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC52aWV3TmFtZSA9ICdjYXNlLXRyYW5zYWN0aW9ucyc7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LklTQlNFTkFCTEUgPSB0cnVlO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc1JlZnVuZFN0YXR1c1ZpZXcgPSBmYWxzZTtcbiAgfVxuXG4gIHJlc2V0Rm9ybSh2YWxzLCBmaWVsZCkge1xuICAgIGlmIChmaWVsZCA9PT0gJ2FjdGlvbicgfHwgZmllbGQgPT09ICdhbGwnKSB7XG4gICAgICB0aGlzLnJlZnVuZEFjdGlvbnNIYXNFcnJvciA9IHZhbHNbMF07XG4gICAgfVxuICAgIGlmIChmaWVsZCA9PT0gJ3JlamVjdFJlYXNvbicgfHwgZmllbGQgPT09ICdhbGwnKSB7XG4gICAgICB0aGlzLnJlZnVuZFJlamVjdFJlYXNvbkhhc0Vycm9yID0gdmFsc1sxXTtcbiAgICB9XG4gICAgaWYgKGZpZWxkID09PSAnYWRkQXJlYXNvbicgfHwgZmllbGQgPT09ICdhbGwnKSB7XG4gICAgICB0aGlzLmlzUmVhc29uRmllbGRFbXB0eSA9IHZhbHNbMl07XG4gICAgICB0aGlzLmlzUmVhc29uRmllbGRJbnZhbGlkID0gdmFsc1szXTtcbiAgICAgIHRoaXMucmVhc29uRmllbGRNaW5IYXNFcnJvciA9IHZhbHNbNF07XG4gICAgICB0aGlzLnJlYXNvbkZpZWxkTWF4SGFzRXJyb3IgPSB2YWxzWzVdO1xuICAgIH1cbiAgICBpZiAoZmllbGQgPT09ICdlbnRlclJlYXNvbicgfHwgZmllbGQgPT09ICdhbGwnKSB7XG4gICAgICB0aGlzLmlzUmVhc29uRW1wdHkgPSB2YWxzWzZdO1xuICAgICAgdGhpcy5pc1JlYXNvbkludmFsaWQgPSB2YWxzWzddO1xuICAgIH1cbiAgfVxuXG4gIGdvVG9DYXNlUmV2aWV3KCkge1xuICAgIGNvbnN0IGlzUGF5QnViYmxlID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzRnJvbVBheUJ1YmJsZTtcbiAgICBpZiAoaXNQYXlCdWJibGUpIHtcbiAgICAgIHRoaXMubG9hZENhc2VUcmFuc2FjdGlvblBhZ2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2AvY2FzZXMvY2FzZS1kZXRhaWxzLyR7dGhpcy5jY2RDYXNlTnVtYmVyfWBdLCB7IHJlbGF0aXZlVG86IHRoaXMuYWN0aXZlUm91dGUgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0VGVtcGxhdGVJbnN0cnVjdGlvblR5cGUocGF5bWVudDogSVBheW1lbnQsIHBheW1lbnRSZWZlcmVuY2U6IHN0cmluZyk6IHZvaWQge1xuXG4gICAgaWYgKHBheW1lbnQgPT0gdW5kZWZpbmVkIHx8IHBheW1lbnQgPT0gbnVsbCB8fCBwYXltZW50LnJlZmVyZW5jZSAhPSBwYXltZW50UmVmZXJlbmNlKSB7XG5cbiAgICAgIHRoaXMucGF5bWVudFZpZXdTZXJ2aWNlLmdldFBheW1lbnREZXRhaWxzKHBheW1lbnRSZWZlcmVuY2UpLnN1YnNjcmliZShcbiAgICAgICAgcGF5bWVudCA9PiB7XG4gICAgICAgICAgdGhpcy5wYXltZW50T2JqID0gcGF5bWVudDtcbiAgICAgICAgICB0aGlzLnBheW1lbnRPYmoucmVmZXJlbmNlID0gcGF5bWVudFJlZmVyZW5jZTtcbiAgICAgICAgICB0aGlzLnRlbXBsYXRlSW5zdHJ1Y3Rpb25UeXBlID0gdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmdldE5vdGlmaWNhdGlvbkluc3RydWN0aW9uVHlwZSh0aGlzLnBheW1lbnRPYmouY2hhbm5lbCwgdGhpcy5wYXltZW50T2JqLm1ldGhvZCk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy50ZW1wbGF0ZUluc3RydWN0aW9uVHlwZSA9ICdUZW1wbGF0ZSc7XG4gICAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGVtcGxhdGVJbnN0cnVjdGlvblR5cGUgPSB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZ2V0Tm90aWZpY2F0aW9uSW5zdHJ1Y3Rpb25UeXBlKHBheW1lbnQuY2hhbm5lbCwgcGF5bWVudC5tZXRob2QpO1xuICAgIH1cbiAgfVxuXG4gIHNob3dOb3RpZmljYXRpb25QcmV2aWV3KCk6IHZvaWQge1xuICAgIHRoaXMubm90aWZpY2F0aW9uUHJldmlldyA9IHRydWU7XG4gIH1cblxuICBoaWRlTm90aWZpY2F0aW9uUHJldmlldygpOiB2b2lkIHtcbiAgICB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXcgPSBmYWxzZTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdTdGF0dXMgPT09ICdSZWZ1bmRQcm9jZXNzJ1wiPlxuPGRpdiBjbGFzcz1cImdvdnVrLXdpZHRoLWNvbnRhaW5lclwiPlxuXG4gIDxtYWluIGNsYXNzPVwiZ292dWstbWFpbi13cmFwcGVyIGdvdnVrLSEtcGFkZGluZy10b3AtMFwiIFtuZ0NsYXNzXT1cInsnZ292dWstcmFkaW9zX19jb25kaXRpb25hbC0taGlkZGVuJzogaXNTdWNjZXNzcGFnZUVuYWJsZX1cIiBpZD1cIm1haW4tY29udGVudFwiIHJvbGU9XCJtYWluXCI+XG4gICAgPGRpdiAqbmdJZj1cImVycm9yTWVzc2FnZS5zaG93RXJyb3JcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJlcnJvci1zdW1tYXJ5XCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbGxlZGJ5PVwiZmFpbHVyZS1lcnJvci1zdW1tYXJ5LWhlYWRpbmdcIiB0YWJpbmRleD1cIi0xXCI+XG4gICAgICAgIDxoMiBjbGFzcz1cImhlYWRpbmctbWVkaXVtIGVycm9yLXN1bW1hcnktaGVhZGluZ1wiIGlkPVwiZmFpbHVyZS1lcnJvci1zdW1tYXJ5LWhlYWRpbmdcIj5cbiAgICAgICAgICB7e2Vycm9yTWVzc2FnZS50aXRsZX19XG4gICAgICAgIDwvaDI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5X19ib2R5IHByb2Nlc3MtcmVmdW5kLWZvbnRcIj5cbiAgICAgICAgICB7e2Vycm9yTWVzc2FnZS5ib2R5fX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LXZpZXctYWxpZ25tZW50XCI+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLXJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uXCI+XG4gICAgICAgICAgPGgxIGNsYXNzPVwiaGVhZGluZy1sYXJnZSBnb3Z1ay0hLW1hcmdpbi10b3AtMFwiPlJldmlldyByZWZ1bmQgZGV0YWlsczwvaDE+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8dGFibGU+XG4gICAgICAgIDx0Ym9keT5cblxuICAgICAgICA8dHIgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiYm9sZCB0Yi1jb2wtd1wiPlBheW1lbnQgdG8gYmUgcmVmdW5kZWQ8L3RkPlxuICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiMlwiPnt7cmVmdW5kbGlzdHNvdXJjZT8ucmVmdW5kX3JlZmVyZW5jZX19ICh7e3JlZnVuZGxpc3Rzb3VyY2UuYW1vdW50ICB8IGN1cnJlbmN5IDonR0JQJzonc3ltYm9sJzonMS4yLTInICB9fSk8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHIgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiYm9sZCB0Yi1jb2wtd1wiPlJlYXNvbiBmb3IgcmVmdW5kPC90ZD5cbiAgICAgICAgICA8dGQgY29sc3Bhbj1cIjJcIj57e3JlZnVuZGxpc3Rzb3VyY2U/LnJlYXNvbj8udHJpbSgpfX08L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHIgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJib2xkIHRiLWNvbC13XCI+QW1vdW50IHRvIGJlIHJlZnVuZGVkPC90ZD5cbiAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiMlwiPnt7cmVmdW5kbGlzdHNvdXJjZT8uYW1vdW50IHwgY3VycmVuY3kgOidHQlAnOidzeW1ib2wnOicxLjItMicgfX08L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHIgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiYm9sZCB0Yi1jb2wtd1wiPlNlbnQgdG88L3RkPlxuICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiMlwiPnt7Y3BvRGV0YWlscz8ucmVzcG9uc2libGVQYXJ0eX19PC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyIGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cImJvbGQgdGItY29sLXdcIj5TZW50IHZpYTwvdGQ+XG4gICAgICAgICAgPHRkIGNvbHNwYW49XCIyXCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInJlZnVuZGxpc3Rzb3VyY2U/LmNvbnRhY3RfZGV0YWlscz8ubm90aWZpY2F0aW9uX3R5cGUgPT09ICdFTUFJTCdcIiBjbGFzcz1cImNvbnRhY3REZXRhaWxzLXdpZHRoIGZvbnQtc2l6ZS0xOXB4XCI+XG4gICAgICAgICAgICA8c3Ryb25nPkVtYWlsPC9zdHJvbmc+XG4gICAgICAgICAgICA8YnIvPlxuICAgICAgICAgICAge3tyZWZ1bmRsaXN0c291cmNlPy5jb250YWN0X2RldGFpbHM/LmVtYWlsPy50cmltKCl9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJyZWZ1bmRsaXN0c291cmNlPy5jb250YWN0X2RldGFpbHM/Lm5vdGlmaWNhdGlvbl90eXBlID09PSAnTEVUVEVSJ1wiIGNsYXNzPVwiY29udGFjdERldGFpbHMtd2lkdGggZm9udC1zaXplLTE5cHhcIj5cbiAgICAgICAgICAgIDxzdHJvbmc+UG9zdDwvc3Ryb25nPlxuICAgICAgICAgICAgPGJyLz5cbiAgICAgICAgICAgIHt7cmVmdW5kbGlzdHNvdXJjZT8uY29udGFjdF9kZXRhaWxzPy5hZGRyZXNzX2xpbmU/LnRyaW0oKX19IHt7cmVmdW5kbGlzdHNvdXJjZT8uY29udGFjdF9kZXRhaWxzPy5jaXR5Py50cmltKCl9fSB7e3JlZnVuZGxpc3Rzb3VyY2U/LmNvbnRhY3RfZGV0YWlscz8uY291bnR5Py50cmltKCl9fSB7e3JlZnVuZGxpc3Rzb3VyY2U/LmNvbnRhY3RfZGV0YWlscz8uY291bnRyeT8udHJpbSgpfX0ge3tyZWZ1bmRsaXN0c291cmNlPy5jb250YWN0X2RldGFpbHM/LnBvc3RhbF9jb2RlPy50cmltKCl9fVxuICAgICAgICAgIDwvZGl2PiBcbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHIgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJib2xkIHRiLWNvbC13XCI+U3VibWl0dGVkIGJ5PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiMlwiPnt7cmVmdW5kbGlzdHNvdXJjZT8udXNlcl9mdWxsX25hbWV9fTwvdGQ+XG5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyIGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiYm9sZCB0Yi1jb2wtd1wiPkRhdGUgc3VibWl0dGVkPC90ZD5cbiAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiMlwiPnt7cmVmdW5kbGlzdHNvdXJjZT8uZGF0ZV9jcmVhdGVkIHwgZGF0ZTonZCBNTU1NIHl5eXknIH19PC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyIGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cImJvbGQgdGItY29sLXdcIj5Ob3RpZmljYXRpb248L3RkPlxuICAgICAgICAgIDx0ZD57e3RlbXBsYXRlSW5zdHJ1Y3Rpb25UeXBlfX08L3RkPlxuICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgIDxhICpuZ0lmPVwiIW5vdGlmaWNhdGlvblByZXZpZXdcIiBocmVmPVwiSmF2YXNjcmlwdDp2b2lkKDApXCIgY2xhc3M9XCJnb3Z1ay1saW5rIHBvaW50ZXIgcmlnaHRcIiAoY2xpY2spPVwic2hvd05vdGlmaWNhdGlvblByZXZpZXcoKVwiPlxuICAgICAgICAgICAgICBQcmV2aWV3XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8YSAqbmdJZj1cIm5vdGlmaWNhdGlvblByZXZpZXdcIiBocmVmPVwiSmF2YXNjcmlwdDp2b2lkKDApXCIgY2xhc3M9XCJnb3Z1ay1saW5rIHBvaW50ZXIgcmlnaHRcIiAoY2xpY2spPVwiaGlkZU5vdGlmaWNhdGlvblByZXZpZXcoKVwiPlxuICAgICAgICAgICAgICBIaWRlIFByZXZpZXdcbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgPC90ZD5cblxuICAgICAgPC90cj5cblxuICAgICAgICA8L3Rib2R5PlxuICAgICAgPC90YWJsZT5cblxuICAgICAgPGFwcC1ub3RpZmljYXRpb24tcHJldmlldyAqbmdJZj1cIm5vdGlmaWNhdGlvblByZXZpZXdcIiBbcGF5bWVudFJlZmVyZW5jZV09XCJyZWZ1bmRsaXN0c291cmNlPy5wYXltZW50X3JlZmVyZW5jZVwiXG4gICAgICAgIFtwYXltZW50XT1cInBheW1lbnRPYmpcIlxuICAgICAgICBbY29udGFjdERldGFpbHNdPVwicmVmdW5kbGlzdHNvdXJjZT8uY29udGFjdF9kZXRhaWxzXCJcbiAgICAgICAgW3JlZnVuZFJlYXNvbl09XCJyZWZ1bmRsaXN0c291cmNlPy5yZWFzb25fY29kZVwiIFtyZWZ1bmRBbW91bnRdPVwicmVmdW5kbGlzdHNvdXJjZT8uYW1vdW50XCJcbiAgICAgICAgW3JlZnVuZFJlZmVyZW5jZV09XCJyZWZ1bmRsaXN0c291cmNlPy5yZWZ1bmRfcmVmZXJlbmNlXCJcbiAgICAgICAgKG5vdGlmaWNhdGlvblByZXZpZXdFdmVudCkgPSBcImdldE5vdGlmaWNhdGlvblByZXZpZXdPYmooJGV2ZW50KVwiPlxuICAgICAgPC9hcHAtbm90aWZpY2F0aW9uLXByZXZpZXc+XG5cbiAgICAgIDxkaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicHJvY2Vzcy1yZWZ1bmRfX3BhbmVsXCI+XG4gICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cInByb2Nlc3NSZWZ1bmRGb3JtXCIgbm92YWxpZGF0ZT5cbiAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICA8ZmllbGRzZXQgY2xhc3M9XCJnb3Z1ay1maWVsZHNldFwiIGFyaWEtZGVzY3JpYmVkYnk9XCJzaWduLWluLWhpbnRcIj5cbiAgICAgICAgICA8bGVnZW5kIGNsYXNzPVwiZ292dWstZmllbGRzZXRfX2xlZ2VuZCBnb3Z1ay1maWVsZHNldF9fbGVnZW5kLS1sXCI+XG4gICAgICAgICAgICA8aDEgY2xhc3M9XCJoZWFkaW5nLWxhcmdlXCI+XG4gICAgICAgICAgICAgIFdoYXQgZG8geW91IHdhbnQgdG8gZG8gd2l0aCB0aGlzIHJlZnVuZD9cbiAgICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgPC9sZWdlbmQ+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXJhZGlvc1wiICBbbmdDbGFzc109XCJ7J2Zvcm0tZ3JvdXAtZXJyb3InOiByZWZ1bmRBY3Rpb25zSGFzRXJyb3J9XCI+XG4gICAgICAgICAgICA8cCBjbGFzcz1cImlubGluZS1lcnJvci1tZXNzYWdlXCJcbiAgICAgICAgICAgICpuZ0lmPVwicmVmdW5kQWN0aW9uc0hhc0Vycm9yXCI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJlZnVuZEFjdGlvbnNIYXNFcnJvclwiPlBsZWFzZSBzZWxlY3QgYW4gYWN0aW9uPC9zcGFuPlxuICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1yYWRpb3NfX2l0ZW1cIiAqbmdGb3I9XCJsZXQgcmVmdW5kQWN0aW9uIG9mIHJlZnVuZEFjdGlvbkxpc3Q7IGxldCBpID0gaW5kZXg7XCI+XG4gICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImdvdnVrLXJhZGlvc19faW5wdXRcIiBcbiAgICAgICAgICAgICAgaWQ9XCJyZWZ1bmRBY3Rpb24te3tpfX1cIiBcbiAgICAgICAgICAgICAgbmFtZT1cInJlZnVuZEFjdGlvbkZpZWxkXCJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicmVmdW5kQWN0aW9uRmllbGRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2hlY2tSZWZ1bmRBY3Rpb25zKHJlZnVuZEFjdGlvbi5jb2RlKVwiXG4gICAgICAgICAgICAgICAgdmFsdWU9XCJ7e3JlZnVuZEFjdGlvbi5jb2RlfX1cIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ292dWstbGFiZWwgZ292dWstcmFkaW9zX19sYWJlbCBwcm9jZXNzLXJlZnVuZC1mb250XCIgZm9yPVwicmVmdW5kQWN0aW9uLXt7aX19XCI+XG4gICAgICAgICAgICAgICAge3tyZWZ1bmRBY3Rpb24uY29kZX19XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDxkaXYgaWQ9XCJzaWduLWluLWl0ZW0taGludFwiIGNsYXNzPVwiZ292dWstaGludCBnb3Z1ay1yYWRpb3NfX2hpbnQgcHJvY2Vzcy1yZWZ1bmQtZm9udFwiPlxuICAgICAgICAgICAgICAgIHt7cmVmdW5kQWN0aW9uLmxhYmVsfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1yYWRpb3NfX2NvbmRpdGlvbmFsXCIgW25nQ2xhc3NdPVwieydnb3Z1ay1yYWRpb3NfX2NvbmRpdGlvbmFsLS1oaWRkZW4nOiAhaXNTZW5kTWVCYWNrQ2xpY2tlZH1cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBwcm9jZXNzLXJlZnVuZC1mb250XCIgZm9yPVwiY29udGFjdC1ieS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICBBZGQgYSByZWFzb25cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiaW5saW5lLWVycm9yLW1lc3NhZ2VcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNSZWFzb25GaWVsZEVtcHR5IHx8IGlzUmVhc29uRmllbGRJbnZhbGlkIHx8IHJlYXNvbkZpZWxkTWluSGFzRXJyb3IgfHwgcmVhc29uRmllbGRNYXhIYXNFcnJvclwiPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXNSZWFzb25GaWVsZEVtcHR5XCI+QWRkIGEgcmVhc29uPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXNSZWFzb25GaWVsZEludmFsaWRcIj5BZGQgYSB2YWxpZCByZWFzb248L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyZWFzb25GaWVsZE1pbkhhc0Vycm9yXCI+UmVhc29uIHNob3VsZCBiZSBhdCBsZWFzdCAzIGNoYXJhY3RlcnMuPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicmVhc29uRmllbGRNYXhIYXNFcnJvclwiPlJlYXNvbiBzaG91bGQgYmUgMjU1IGNoYXJhY3RlcnMgb3IgdW5kZXIuPC9zcGFuPlxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwiZ292dWstdGV4dGFyZWEgZ292dWstIS13aWR0aC1vbmUtdGhpcmQgcmVhc29uLWZvbnRcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnaW5saW5lLWVycm9yLWNsYXNzJzogaXNSZWFzb25GaWVsZEVtcHR5IHx8IGlzUmVhc29uRmllbGRJbnZhbGlkIHx8IHJlYXNvbkZpZWxkTWluSGFzRXJyb3IgfHwgcmVhc29uRmllbGRNYXhIYXNFcnJvcn1cIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJzZW5kbWViYWNrXCJcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJzZW5kTWVCYWNrRmllbGRcIiBcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInNlbmRNZUJhY2tGaWVsZFwiXG4gICAgICAgICAgICAgICAgcm93cz1cIjVcIj48L3RleHRhcmVhPlxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwvZGl2PlxuICBcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgIFxuICAgICAgICA8L2ZpZWxkc2V0PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgW25nQ2xhc3NdPVwieydnb3Z1ay1yYWRpb3NfX2NvbmRpdGlvbmFsLS1oaWRkZW4nOiAhaXNSZWplY3RDbGlja2VkfVwiPlxuICAgICAgICA8ZmllbGRzZXQgY2xhc3M9XCJnb3Z1ay1maWVsZHNldFwiPlxuICAgICAgICAgIDxsZWdlbmQgY2xhc3M9XCJnb3Z1ay1maWVsZHNldF9fbGVnZW5kIGdvdnVrLWZpZWxkc2V0X19sZWdlbmQtLWxcIj5cbiAgICAgICAgICAgIDxoMiBjbGFzcz1cImhlYWRpbmctbWVkaXVtXCI+XG4gICAgICAgICAgICAgIFdoeSBhcmUgeW91IHJlamVjdGluZyB0aGlzIHJlZnVuZD9cbiAgICAgICAgICAgIDwvaDI+XG4gICAgICAgICAgPC9sZWdlbmQ+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXJhZGlvc1wiIFtuZ0NsYXNzXT1cInsnZm9ybS1ncm91cC1lcnJvcic6IHJlZnVuZFJlamVjdFJlYXNvbkhhc0Vycm9yfVwiPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJpbmxpbmUtZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICAgICAqbmdJZj1cInJlZnVuZFJlamVjdFJlYXNvbkhhc0Vycm9yXCI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJlZnVuZFJlamVjdFJlYXNvbkhhc0Vycm9yXCI+UGxlYXNlIHNlbGVjdCBhIHJlamVjdCByZWFzb248L3NwYW4+XG4gICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXJhZGlvc19faXRlbVwiICpuZ0Zvcj1cImxldCByZWZ1bmRSZWplY3RSZWFzb24gb2YgcmVmdW5kUmVqZWN0UmVhc29uTGlzdDsgbGV0IGogPSBpbmRleDtcIj5cbiAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZ292dWstcmFkaW9zX19pbnB1dFwiIFxuICAgICAgICAgICAgICBpZD1cInJlZnVuZFJlamVjdFJlYXNvbi17e2p9fVwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJlZnVuZFJlamVjdFJlYXNvbkZpZWxkXCJcbiAgICAgICAgICAgICAgbmFtZT1cInJlZnVuZFJlamVjdFJlYXNvbkZpZWxkXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNoZWNrUmVmdW5kQWN0aW9ucyhyZWZ1bmRSZWplY3RSZWFzb24uY29kZSlcIlxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIiB2YWx1ZT1cInt7cmVmdW5kUmVqZWN0UmVhc29uLmNvZGV9fVwiPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1yYWRpb3NfX2xhYmVsIHByb2Nlc3MtcmVmdW5kLWZvbnRcIiBmb3I9XCJyZWZ1bmRSZWplY3RSZWFzb24te3tqfX1cIj5cbiAgICAgICAgICAgICAgICB7e3JlZnVuZFJlamVjdFJlYXNvbi5uYW1lfX1cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zX19jb25kaXRpb25hbFwiIFtuZ0NsYXNzXT1cInsnZ292dWstcmFkaW9zX19jb25kaXRpb25hbC0taGlkZGVuJzogIWlzT3RoZXJDbGlja2VkfVwiIGlkPVwiY29uZGl0aW9uYWwtY29udGFjdC0zXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1mb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ292dWstbGFiZWwgcHJvY2Vzcy1yZWZ1bmQtZm9udCBcIiBmb3I9XCJjb250YWN0LWJ5LXRleHRcIj5cbiAgICAgICAgICAgIEVudGVyIHJlYXNvblxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPHAgY2xhc3M9XCJpbmxpbmUtZXJyb3ItbWVzc2FnZVwiICpuZ0lmPVwiaXNSZWFzb25FbXB0eSB8fCBpc1JlYXNvbkludmFsaWRcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXNSZWFzb25FbXB0eVwiPkVudGVyIHJlYXNvbi48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImlzUmVhc29uSW52YWxpZFwiPkVudGVyIGEgdmFsaWQgcmVhc29uPC9zcGFuPlxuICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJnb3Z1ay1pbnB1dCBnb3Z1ay0hLXdpZHRoLW9uZS10aGlyZCByZWFzb24tZm9udFwiIGlkPVwib3RoZXJSZWFzb25cIiBcbiAgICAgICAgICBbbmdDbGFzc109XCJ7J2lubGluZS1lcnJvci1jbGFzcyc6IGlzUmVhc29uRW1wdHkgfHwgaXNSZWFzb25JbnZhbGlkfVwiXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZW50ZXJSZWFzb25GaWVsZFwiIG5hbWU9XCJlbnRlclJlYXNvbkZpZWxkXCIgdHlwZT1cInRleHRcIj48L2Rpdj5cbiAgICAgICAgXG4gICAgICA8L2Rpdj5cbiAgICAgIFxuICAgICAgICA8L2ZpZWxkc2V0PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1idXR0b24tZ3JvdXBcIj5cbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwicmVkaXJlY3R0b1JlZnVuZExpc3RQYWdlKClcIiBjbGFzcz1cImdvdnVrLWJ1dHRvbiBnb3Z1ay1idXR0b24tLXNlY29uZGFyeSBtYXJnaW5yaWdodFwiPiBQcmV2aW91czwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJwcm9jZXNzUmVmdW5kU3VibWl0KClcIiBjbGFzcz1cImdvdnVrLWJ1dHRvbiBidXR0b25cIlxuICAgICAgICAgIGRhdGEtbW9kdWxlPVwiZ292dWstYnV0dG9uXCI+XG4gICAgICAgICAgU3VibWl0IFxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDxici8+PGJyLz5cbiAgICA8L2Rpdj5cbiAgIFxuICA8ZGl2ICpuZ0lmPVwiIWlzRnJvbVJlZnVuZExpc3RQYWdlXCIgY2xhc3M9XCJnb3Z1ay1idXR0b24tZ3JvdXAgbWFyZ2luXCI+XG5cbiAgPHA+PGEgKGNsaWNrKT1cImxvYWRSZWZ1bmRzSG9tZVBhZ2UoKVwiIGNsYXNzPVwiZ292dWstbGluayBwb2ludGVyXCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1idXR0b25cIj5DYW5jZWw8L2E+PC9wPlxuPC9kaXY+XG48L2Zvcm0+XG4gIDwvZGl2PlxuIFxuXG4gIDwvbWFpbj5cbiBcbiAgPG1haW4gY2xhc3M9XCJnb3Z1ay1tYWluLXdyYXBwZXIgZ292dWstbWFpbi13cmFwcGVyLS1sIHN1Y2Nlc3MtcGFnZS1wYWRkaW5nLS10b3AyNVwiIFtuZ0NsYXNzXT1cInsnZ292dWstcmFkaW9zX19jb25kaXRpb25hbC0taGlkZGVuJzogIWlzU3VjY2Vzc3BhZ2VFbmFibGV9XCIgaWQ9XCJtYWluLWNvbnRlbnRcIiByb2xlPVwibWFpblwiID5cbiAgICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1yb3cgcGFnZXNpemVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXBhbmVsIGdvdnVrLXBhbmVsLXJlZnVuZC0tY29uZmlybWF0aW9uXCI+XG4gICAgICAgICAgPGgxIGNsYXNzPVwiaGVhZGluZy1yZWZ1bmRzLXhsYXJnZVwiPlxuICAgICAgICAgICAge3tzdWNjZXNzTXNnfX1cbiAgICAgICAgICA8L2gxPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHAgY2xhc3M9XCJnb3Z1ay1ib2R5IHByb2Nlc3MtcmVmdW5kLWZvbnRcIj5cbiAgICAgICAgPGEgaHJlZj1cIkphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJnb1RvQ2FzZVJldmlldygpXCIgY2xhc3M9XCJnb3Z1ay1saW5rIHBvaW50ZXJcIj5SZXR1cm4gdG8gY2FzZTwvYT5cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gIDwvbWFpbj5cbjwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbiJdfQ==
@@ -23,15 +23,15 @@ export class ProcessedPaymentsComponent {
23
23
  this.goToPaymentViewComponent.emit({ paymentGroupReference, paymentReference, paymentMethod });
24
24
  }
25
25
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProcessedPaymentsComponent, deps: [{ token: i1.Router }, { token: i2.BulkScaningPaymentService }], target: i0.ɵɵFactoryTarget.Component });
26
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ProcessedPaymentsComponent, selector: "ccpay-app-processed-payments", inputs: { NONPAYMENTS: "NONPAYMENTS" }, outputs: { goToPaymentViewComponent: "goToPaymentViewComponent" }, ngImport: i0, template: "<div class=\"processed-payments govuk-grid-column-full govuk-!-padding-bottom-3\">\n <h3 class=\"heading-medium\">Processed payments</h3>\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <th class=\"govuk-table__header\" scope=\"col\">Payment asset number (DCN)</th>\n <th class=\"govuk-table__header\" scope=\"col\">Banked date</th>\n <th class=\"govuk-table__header\" scope=\"col\">Amount</th>\n <th class=\"govuk-table__header\" scope=\"col\">Method</th>\n <th class=\"govuk-table__header\" scope=\"col\">Allocation status</th>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\" >\n <tr class=\"govuk-table__row\" *ngFor=\"let processedRecord of NONPAYMENTS\">\n <td class=\"govuk-table__cell\">\n <a href=\"javascript:void(0)\" (click)=\"redirectToPaymentViewPage(processedRecord.paymentGroupReference, processedRecord.reference, processedRecord.method)\">{{processedRecord.document_control_number}}</a>\n </td>\n <td class=\"govuk-table__cell\"> {{processedRecord.banked_date | date:'dd MMM yyyy'}}</td>\n <td class=\"govuk-table__cell\"> {{processedRecord.amount | currency :'GBP':'symbol':'1.2-2'}}</td>\n <td class=\"capitalize govuk-table__cell\"> {{ trimUnderscore(processedRecord.method) | lowercase}} </td>\n <td class=\"capitalize govuk-table__cell\"> {{ processedRecord.payment_allocation[0] ? processedRecord.payment_allocation[0].allocation_status : '-' }} </td>\n\n </tr>\n <tr class=\"govuk-table__row\" *ngIf=\"NONPAYMENTS.length === 0\">\n <td class=\"govuk-table__cell\" colspan=\"5\">\n No processed payments\n </td>\n\n </tr>\n\n </tbody>\n </table>\n</div>\n", styles: [".lowercase{text-transform:lowercase}.capitalize:first-letter{text-transform:uppercase}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.LowerCasePipe, name: "lowercase" }, { kind: "pipe", type: i3.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i3.DatePipe, name: "date" }] });
26
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ProcessedPaymentsComponent, selector: "ccpay-app-processed-payments", inputs: { NONPAYMENTS: "NONPAYMENTS" }, outputs: { goToPaymentViewComponent: "goToPaymentViewComponent" }, ngImport: i0, template: "<div class=\"processed-payments govuk-grid-column-full govuk-!-padding-bottom-3\">\n <h3 class=\"heading-medium\">Processed payments</h3>\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header\" scope=\"col\">Payment asset number (DCN)</td>\n <td class=\"govuk-table__header\" scope=\"col\">Banked date</td>\n <td class=\"govuk-table__header\" scope=\"col\">Amount</td>\n <td class=\"govuk-table__header\" scope=\"col\">Method</td>\n <td class=\"govuk-table__header\" scope=\"col\">Allocation status</td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\" >\n <tr class=\"govuk-table__row\" *ngFor=\"let processedRecord of NONPAYMENTS\">\n <td class=\"govuk-table__cell\">\n <a href=\"javascript:void(0)\" (click)=\"redirectToPaymentViewPage(processedRecord.paymentGroupReference, processedRecord.reference, processedRecord.method)\">{{processedRecord.document_control_number}}</a>\n </td>\n <td class=\"govuk-table__cell\"> {{processedRecord.banked_date | date:'dd MMM yyyy'}}</td>\n <td class=\"govuk-table__cell\"> {{processedRecord.amount | currency :'GBP':'symbol':'1.2-2'}}</td>\n <td class=\"capitalize govuk-table__cell\"> {{ trimUnderscore(processedRecord.method) | lowercase}} </td>\n <td class=\"capitalize govuk-table__cell\"> {{ processedRecord.payment_allocation[0] ? processedRecord.payment_allocation[0].allocation_status : '-' }} </td>\n\n </tr>\n <tr class=\"govuk-table__row\" *ngIf=\"NONPAYMENTS.length === 0\">\n <td class=\"govuk-table__cell\" colspan=\"5\">\n No processed payments\n </td>\n\n </tr>\n\n </tbody>\n </table>\n</div>\n", styles: [".lowercase{text-transform:lowercase}.capitalize:first-letter{text-transform:uppercase}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.LowerCasePipe, name: "lowercase" }, { kind: "pipe", type: i3.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i3.DatePipe, name: "date" }] });
27
27
  }
28
28
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProcessedPaymentsComponent, decorators: [{
29
29
  type: Component,
30
- args: [{ selector: 'ccpay-app-processed-payments', template: "<div class=\"processed-payments govuk-grid-column-full govuk-!-padding-bottom-3\">\n <h3 class=\"heading-medium\">Processed payments</h3>\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <th class=\"govuk-table__header\" scope=\"col\">Payment asset number (DCN)</th>\n <th class=\"govuk-table__header\" scope=\"col\">Banked date</th>\n <th class=\"govuk-table__header\" scope=\"col\">Amount</th>\n <th class=\"govuk-table__header\" scope=\"col\">Method</th>\n <th class=\"govuk-table__header\" scope=\"col\">Allocation status</th>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\" >\n <tr class=\"govuk-table__row\" *ngFor=\"let processedRecord of NONPAYMENTS\">\n <td class=\"govuk-table__cell\">\n <a href=\"javascript:void(0)\" (click)=\"redirectToPaymentViewPage(processedRecord.paymentGroupReference, processedRecord.reference, processedRecord.method)\">{{processedRecord.document_control_number}}</a>\n </td>\n <td class=\"govuk-table__cell\"> {{processedRecord.banked_date | date:'dd MMM yyyy'}}</td>\n <td class=\"govuk-table__cell\"> {{processedRecord.amount | currency :'GBP':'symbol':'1.2-2'}}</td>\n <td class=\"capitalize govuk-table__cell\"> {{ trimUnderscore(processedRecord.method) | lowercase}} </td>\n <td class=\"capitalize govuk-table__cell\"> {{ processedRecord.payment_allocation[0] ? processedRecord.payment_allocation[0].allocation_status : '-' }} </td>\n\n </tr>\n <tr class=\"govuk-table__row\" *ngIf=\"NONPAYMENTS.length === 0\">\n <td class=\"govuk-table__cell\" colspan=\"5\">\n No processed payments\n </td>\n\n </tr>\n\n </tbody>\n </table>\n</div>\n", styles: [".lowercase{text-transform:lowercase}.capitalize:first-letter{text-transform:uppercase}\n"] }]
30
+ args: [{ selector: 'ccpay-app-processed-payments', template: "<div class=\"processed-payments govuk-grid-column-full govuk-!-padding-bottom-3\">\n <h3 class=\"heading-medium\">Processed payments</h3>\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header\" scope=\"col\">Payment asset number (DCN)</td>\n <td class=\"govuk-table__header\" scope=\"col\">Banked date</td>\n <td class=\"govuk-table__header\" scope=\"col\">Amount</td>\n <td class=\"govuk-table__header\" scope=\"col\">Method</td>\n <td class=\"govuk-table__header\" scope=\"col\">Allocation status</td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\" >\n <tr class=\"govuk-table__row\" *ngFor=\"let processedRecord of NONPAYMENTS\">\n <td class=\"govuk-table__cell\">\n <a href=\"javascript:void(0)\" (click)=\"redirectToPaymentViewPage(processedRecord.paymentGroupReference, processedRecord.reference, processedRecord.method)\">{{processedRecord.document_control_number}}</a>\n </td>\n <td class=\"govuk-table__cell\"> {{processedRecord.banked_date | date:'dd MMM yyyy'}}</td>\n <td class=\"govuk-table__cell\"> {{processedRecord.amount | currency :'GBP':'symbol':'1.2-2'}}</td>\n <td class=\"capitalize govuk-table__cell\"> {{ trimUnderscore(processedRecord.method) | lowercase}} </td>\n <td class=\"capitalize govuk-table__cell\"> {{ processedRecord.payment_allocation[0] ? processedRecord.payment_allocation[0].allocation_status : '-' }} </td>\n\n </tr>\n <tr class=\"govuk-table__row\" *ngIf=\"NONPAYMENTS.length === 0\">\n <td class=\"govuk-table__cell\" colspan=\"5\">\n No processed payments\n </td>\n\n </tr>\n\n </tbody>\n </table>\n</div>\n", styles: [".lowercase{text-transform:lowercase}.capitalize:first-letter{text-transform:uppercase}\n"] }]
31
31
  }], ctorParameters: () => [{ type: i1.Router }, { type: i2.BulkScaningPaymentService }], propDecorators: { NONPAYMENTS: [{
32
32
  type: Input,
33
33
  args: ['NONPAYMENTS']
34
34
  }], goToPaymentViewComponent: [{
35
35
  type: Output
36
36
  }] } });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzc2VkLXBheW1lbnRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BheW1lbnQtbGliL3NyYy9saWIvY29tcG9uZW50cy9wcm9jZXNzZWQtcGF5bWVudHMvcHJvY2Vzc2VkLXBheW1lbnRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BheW1lbnQtbGliL3NyYy9saWIvY29tcG9uZW50cy9wcm9jZXNzZWQtcGF5bWVudHMvcHJvY2Vzc2VkLXBheW1lbnRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFFN0csT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDOzs7OztBQU92QyxNQUFNLE9BQU8sMEJBQTBCO0lBTTNCO0lBQ0E7SUFMWSxXQUFXLENBQWE7SUFDcEMsd0JBQXdCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFFM0UsWUFDVSxNQUFjLEVBQ2QseUJBQW9EO1FBRHBELFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCw4QkFBeUIsR0FBekIseUJBQXlCLENBQTJCO0lBQ3hELENBQUM7SUFDTCxRQUFRO0lBQ1IsQ0FBQztJQUVELGNBQWMsQ0FBQyxNQUFjO1FBQzNCLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixDQUFDLG9CQUFvQixDQUFDLE1BQU0sRUFBQyxHQUFHLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBQ0QseUJBQXlCLENBQUMscUJBQTZCLEVBQUUsZ0JBQXdCLEVBQUUsYUFBcUI7UUFDdEcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxFQUFDLHFCQUFxQixFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBQyxDQUFDLENBQUM7SUFDL0YsQ0FBQzt3R0FqQlEsMEJBQTBCOzRGQUExQiwwQkFBMEIsK0tDVnZDLDAyREFpQ0E7OzRGRHZCYSwwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0UsOEJBQThCO21IQU1sQixXQUFXO3NCQUFoQyxLQUFLO3VCQUFDLGFBQWE7Z0JBQ1Ysd0JBQXdCO3NCQUFqQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnVsa1NjYW5pbmdQYXltZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2J1bGstc2NhbmluZy1wYXltZW50L2J1bGstc2NhbmluZy1wYXltZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtJUGF5bWVudH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUGF5bWVudCc7XG5pbXBvcnQge1JvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NwYXktYXBwLXByb2Nlc3NlZC1wYXltZW50cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9jZXNzZWQtcGF5bWVudHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wcm9jZXNzZWQtcGF5bWVudHMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQcm9jZXNzZWRQYXltZW50c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCdOT05QQVlNRU5UUycpIE5PTlBBWU1FTlRTOiBJUGF5bWVudFtdO1xuICBAT3V0cHV0KCkgZ29Ub1BheW1lbnRWaWV3Q29tcG9uZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgYnVsa1NjYW5pbmdQYXltZW50U2VydmljZTogQnVsa1NjYW5pbmdQYXltZW50U2VydmljZVxuICAgICkgeyB9XG4gICAgbmdPbkluaXQoKSB7XG4gICAgfVxuXG4gICAgdHJpbVVuZGVyc2NvcmUobWV0aG9kOiBzdHJpbmcpe1xuICAgICAgcmV0dXJuIHRoaXMuYnVsa1NjYW5pbmdQYXltZW50U2VydmljZS5yZW1vdmVVbndhbnRlZFN0cmluZyhtZXRob2QsJyAnKTtcbiAgICB9XG4gICAgcmVkaXJlY3RUb1BheW1lbnRWaWV3UGFnZShwYXltZW50R3JvdXBSZWZlcmVuY2U6IHN0cmluZywgcGF5bWVudFJlZmVyZW5jZTogc3RyaW5nLCBwYXltZW50TWV0aG9kOiBzdHJpbmcpIHtcbiAgICAgIHRoaXMuZ29Ub1BheW1lbnRWaWV3Q29tcG9uZW50LmVtaXQoe3BheW1lbnRHcm91cFJlZmVyZW5jZSwgcGF5bWVudFJlZmVyZW5jZSwgcGF5bWVudE1ldGhvZH0pO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwcm9jZXNzZWQtcGF5bWVudHMgZ292dWstZ3JpZC1jb2x1bW4tZnVsbCBnb3Z1ay0hLXBhZGRpbmctYm90dG9tLTNcIj5cbiAgPGgzIGNsYXNzPVwiaGVhZGluZy1tZWRpdW1cIj5Qcm9jZXNzZWQgcGF5bWVudHM8L2gzPlxuICAgIDx0YWJsZSBjbGFzcz1cImdvdnVrLXRhYmxlXCI+XG4gICAgICA8dGhlYWQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZFwiPlxuICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIj5QYXltZW50IGFzc2V0IG51bWJlciAoRENOKTwvdGg+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIj5CYW5rZWQgZGF0ZTwvdGg+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIj5BbW91bnQ8L3RoPlxuICAgICAgICAgICAgPHRoIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwiY29sXCI+TWV0aG9kPC90aD5cbiAgICAgICAgICAgIDx0aCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPkFsbG9jYXRpb24gc3RhdHVzPC90aD5cbiAgICAgICAgICAgPC90cj5cbiAgICAgIDwvdGhlYWQ+XG4gICAgICA8dGJvZHkgY2xhc3M9XCJnb3Z1ay10YWJsZV9fYm9keVwiID5cbiAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiICpuZ0Zvcj1cImxldCBwcm9jZXNzZWRSZWNvcmQgb2YgTk9OUEFZTUVOVFNcIj5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+XG4gICAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJyZWRpcmVjdFRvUGF5bWVudFZpZXdQYWdlKHByb2Nlc3NlZFJlY29yZC5wYXltZW50R3JvdXBSZWZlcmVuY2UsIHByb2Nlc3NlZFJlY29yZC5yZWZlcmVuY2UsIHByb2Nlc3NlZFJlY29yZC5tZXRob2QpXCI+e3twcm9jZXNzZWRSZWNvcmQuZG9jdW1lbnRfY29udHJvbF9udW1iZXJ9fTwvYT5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPiB7e3Byb2Nlc3NlZFJlY29yZC5iYW5rZWRfZGF0ZSB8IGRhdGU6J2RkIE1NTSB5eXl5J319PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+IHt7cHJvY2Vzc2VkUmVjb3JkLmFtb3VudCB8IGN1cnJlbmN5IDonR0JQJzonc3ltYm9sJzonMS4yLTInfX08L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiY2FwaXRhbGl6ZSBnb3Z1ay10YWJsZV9fY2VsbFwiPiB7eyB0cmltVW5kZXJzY29yZShwcm9jZXNzZWRSZWNvcmQubWV0aG9kKSB8IGxvd2VyY2FzZX19ICA8L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiY2FwaXRhbGl6ZSBnb3Z1ay10YWJsZV9fY2VsbFwiPiB7eyBwcm9jZXNzZWRSZWNvcmQucGF5bWVudF9hbGxvY2F0aW9uWzBdID8gcHJvY2Vzc2VkUmVjb3JkLnBheW1lbnRfYWxsb2NhdGlvblswXS5hbGxvY2F0aW9uX3N0YXR1cyA6ICctJyB9fSAgPC90ZD5cblxuICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiICpuZ0lmPVwiTk9OUEFZTUVOVFMubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiIGNvbHNwYW49XCI1XCI+XG4gICAgICAgICAgICAgIE5vIHByb2Nlc3NlZCBwYXltZW50c1xuICAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICA8L3RyPlxuXG4gICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG48L2Rpdj5cbiJdfQ==
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzc2VkLXBheW1lbnRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BheW1lbnQtbGliL3NyYy9saWIvY29tcG9uZW50cy9wcm9jZXNzZWQtcGF5bWVudHMvcHJvY2Vzc2VkLXBheW1lbnRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BheW1lbnQtbGliL3NyYy9saWIvY29tcG9uZW50cy9wcm9jZXNzZWQtcGF5bWVudHMvcHJvY2Vzc2VkLXBheW1lbnRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFFN0csT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDOzs7OztBQU92QyxNQUFNLE9BQU8sMEJBQTBCO0lBTTNCO0lBQ0E7SUFMWSxXQUFXLENBQWE7SUFDcEMsd0JBQXdCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFFM0UsWUFDVSxNQUFjLEVBQ2QseUJBQW9EO1FBRHBELFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCw4QkFBeUIsR0FBekIseUJBQXlCLENBQTJCO0lBQ3hELENBQUM7SUFDTCxRQUFRO0lBQ1IsQ0FBQztJQUVELGNBQWMsQ0FBQyxNQUFjO1FBQzNCLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixDQUFDLG9CQUFvQixDQUFDLE1BQU0sRUFBQyxHQUFHLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBQ0QseUJBQXlCLENBQUMscUJBQTZCLEVBQUUsZ0JBQXdCLEVBQUUsYUFBcUI7UUFDdEcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxFQUFDLHFCQUFxQixFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBQyxDQUFDLENBQUM7SUFDL0YsQ0FBQzt3R0FqQlEsMEJBQTBCOzRGQUExQiwwQkFBMEIsK0tDVnZDLDAyREFpQ0E7OzRGRHZCYSwwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0UsOEJBQThCO21IQU1sQixXQUFXO3NCQUFoQyxLQUFLO3VCQUFDLGFBQWE7Z0JBQ1Ysd0JBQXdCO3NCQUFqQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnVsa1NjYW5pbmdQYXltZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2J1bGstc2NhbmluZy1wYXltZW50L2J1bGstc2NhbmluZy1wYXltZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtJUGF5bWVudH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUGF5bWVudCc7XG5pbXBvcnQge1JvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NwYXktYXBwLXByb2Nlc3NlZC1wYXltZW50cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9jZXNzZWQtcGF5bWVudHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wcm9jZXNzZWQtcGF5bWVudHMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQcm9jZXNzZWRQYXltZW50c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCdOT05QQVlNRU5UUycpIE5PTlBBWU1FTlRTOiBJUGF5bWVudFtdO1xuICBAT3V0cHV0KCkgZ29Ub1BheW1lbnRWaWV3Q29tcG9uZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgYnVsa1NjYW5pbmdQYXltZW50U2VydmljZTogQnVsa1NjYW5pbmdQYXltZW50U2VydmljZVxuICAgICkgeyB9XG4gICAgbmdPbkluaXQoKSB7XG4gICAgfVxuXG4gICAgdHJpbVVuZGVyc2NvcmUobWV0aG9kOiBzdHJpbmcpe1xuICAgICAgcmV0dXJuIHRoaXMuYnVsa1NjYW5pbmdQYXltZW50U2VydmljZS5yZW1vdmVVbndhbnRlZFN0cmluZyhtZXRob2QsJyAnKTtcbiAgICB9XG4gICAgcmVkaXJlY3RUb1BheW1lbnRWaWV3UGFnZShwYXltZW50R3JvdXBSZWZlcmVuY2U6IHN0cmluZywgcGF5bWVudFJlZmVyZW5jZTogc3RyaW5nLCBwYXltZW50TWV0aG9kOiBzdHJpbmcpIHtcbiAgICAgIHRoaXMuZ29Ub1BheW1lbnRWaWV3Q29tcG9uZW50LmVtaXQoe3BheW1lbnRHcm91cFJlZmVyZW5jZSwgcGF5bWVudFJlZmVyZW5jZSwgcGF5bWVudE1ldGhvZH0pO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwcm9jZXNzZWQtcGF5bWVudHMgZ292dWstZ3JpZC1jb2x1bW4tZnVsbCBnb3Z1ay0hLXBhZGRpbmctYm90dG9tLTNcIj5cbiAgPGgzIGNsYXNzPVwiaGVhZGluZy1tZWRpdW1cIj5Qcm9jZXNzZWQgcGF5bWVudHM8L2gzPlxuICAgIDx0YWJsZSBjbGFzcz1cImdvdnVrLXRhYmxlXCI+XG4gICAgICA8dGhlYWQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZFwiPlxuICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIj5QYXltZW50IGFzc2V0IG51bWJlciAoRENOKTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIj5CYW5rZWQgZGF0ZTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIj5BbW91bnQ8L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwiY29sXCI+TWV0aG9kPC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPkFsbG9jYXRpb24gc3RhdHVzPC90ZD5cbiAgICAgICAgICAgPC90cj5cbiAgICAgIDwvdGhlYWQ+XG4gICAgICA8dGJvZHkgY2xhc3M9XCJnb3Z1ay10YWJsZV9fYm9keVwiID5cbiAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiICpuZ0Zvcj1cImxldCBwcm9jZXNzZWRSZWNvcmQgb2YgTk9OUEFZTUVOVFNcIj5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+XG4gICAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJyZWRpcmVjdFRvUGF5bWVudFZpZXdQYWdlKHByb2Nlc3NlZFJlY29yZC5wYXltZW50R3JvdXBSZWZlcmVuY2UsIHByb2Nlc3NlZFJlY29yZC5yZWZlcmVuY2UsIHByb2Nlc3NlZFJlY29yZC5tZXRob2QpXCI+e3twcm9jZXNzZWRSZWNvcmQuZG9jdW1lbnRfY29udHJvbF9udW1iZXJ9fTwvYT5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPiB7e3Byb2Nlc3NlZFJlY29yZC5iYW5rZWRfZGF0ZSB8IGRhdGU6J2RkIE1NTSB5eXl5J319PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+IHt7cHJvY2Vzc2VkUmVjb3JkLmFtb3VudCB8IGN1cnJlbmN5IDonR0JQJzonc3ltYm9sJzonMS4yLTInfX08L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiY2FwaXRhbGl6ZSBnb3Z1ay10YWJsZV9fY2VsbFwiPiB7eyB0cmltVW5kZXJzY29yZShwcm9jZXNzZWRSZWNvcmQubWV0aG9kKSB8IGxvd2VyY2FzZX19ICA8L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiY2FwaXRhbGl6ZSBnb3Z1ay10YWJsZV9fY2VsbFwiPiB7eyBwcm9jZXNzZWRSZWNvcmQucGF5bWVudF9hbGxvY2F0aW9uWzBdID8gcHJvY2Vzc2VkUmVjb3JkLnBheW1lbnRfYWxsb2NhdGlvblswXS5hbGxvY2F0aW9uX3N0YXR1cyA6ICctJyB9fSAgPC90ZD5cblxuICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiICpuZ0lmPVwiTk9OUEFZTUVOVFMubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiIGNvbHNwYW49XCI1XCI+XG4gICAgICAgICAgICAgIE5vIHByb2Nlc3NlZCBwYXltZW50c1xuICAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICA8L3RyPlxuXG4gICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG48L2Rpdj5cbiJdfQ==