@uiapplibct/ngx-reusa-app-lib 0.0.14 → 0.0.16

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.
@@ -609,6 +609,19 @@ export class HeaderComponent extends BasePage {
609
609
  this.openPage('cp', 'v3/weeklies');
610
610
  }
611
611
  }
612
+ onClickDisplayLogo() {
613
+ if (this.context == 'audit') {
614
+ let userModel = this.ls.getUser();
615
+ var tempVal = JSON.stringify({ param1: "taxAudit" });
616
+ var encVal = btoa(tempVal);
617
+ var date = new Date();
618
+ date.setTime(date.getTime() + 60000);
619
+ const domain = ".dol.ct.gov";
620
+ var expires = "expires=" + date.toUTCString();
621
+ document.cookie = "parApToM=" + encVal + ";path=/;expires=" + expires + ";domain=" + domain + ";SameSite=Lax;";
622
+ window.open(`${LibConstants.taxUrlExternal}/faces/virtual/contextswitch.xhtml?a=${userModel.access_token}&v=2299&TAXAUDIT_PORTAL=true`, '_self');
623
+ }
624
+ }
612
625
  openAuditDashboard() {
613
626
  if (this.context == 'audit') {
614
627
  if (this.ls.isTaxAuditSupervisor() || this.ls.isTaxAuditDirector()) {
@@ -719,6 +732,11 @@ export class HeaderComponent extends BasePage {
719
732
  }
720
733
  openHome() {
721
734
  //this.nav.navigateRoot("/welcome");
735
+ if (this.context == 'audit') {
736
+ let userModel = this.ls.getUser();
737
+ this.util.showLoader();
738
+ window.open(`${LibConstants.taxUrlExternal}/faces/virtual/contextswitch.xhtml?a=${userModel.access_token}&r=${userModel.refresh_token}&v=2299`, '_self');
739
+ }
722
740
  if (this.ls.isClaimant()) {
723
741
  this.util.openPageByContextRoot(this.util.getClaimantAppContextRoot(), "welcome", this.nav);
724
742
  }
@@ -804,7 +822,7 @@ export class HeaderComponent extends BasePage {
804
822
  i0.ɵɵtemplate(4, HeaderComponent_ion_menu_button_4_Template, 1, 1, "ion-menu-button", 2);
805
823
  i0.ɵɵelementEnd();
806
824
  i0.ɵɵelementStart(5, "ion-buttons", 3);
807
- i0.ɵɵlistener("click", function HeaderComponent_Template_ion_buttons_click_5_listener() { return ctx.openAuditDashboard(); });
825
+ i0.ɵɵlistener("click", function HeaderComponent_Template_ion_buttons_click_5_listener() { return ctx.onClickDisplayLogo(); });
808
826
  i0.ɵɵelement(6, "img", 4);
809
827
  i0.ɵɵpipe(7, "translate");
810
828
  i0.ɵɵelementEnd();
@@ -819,7 +837,7 @@ export class HeaderComponent extends BasePage {
819
837
  } if (rf & 2) {
820
838
  i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(1, 14, ctx.util.loader.value$) != 0);
821
839
  i0.ɵɵadvance(4);
822
- i0.ɵɵproperty("ngIf", ctx.ls.isLoggedIn());
840
+ i0.ɵɵproperty("ngIf", ctx.ls.isLoggedIn() && !ctx.ls.isEmployer());
823
841
  i0.ɵɵadvance(1);
824
842
  i0.ɵɵproperty("ngClass", ctx.displayLogo ? "header_button_white" : "header_button hide-xs hide-md");
825
843
  i0.ɵɵadvance(1);
@@ -846,7 +864,7 @@ export class HeaderComponent extends BasePage {
846
864
  }
847
865
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(HeaderComponent, [{
848
866
  type: Component,
849
- args: [{ selector: 'app-header', template: "<mat-progress-bar mode=\"determinate\" [value]=\"util.loader.value$ | async\" *ngIf=\"(util.loader.value$ | async) != 0\">\r\n</mat-progress-bar>\r\n<ion-toolbar>\r\n <ion-buttons slot=\"start\" style=\"margin-left: -5px;\">\r\n <ion-menu-button autoHide=\"false\" pTooltip=\"Menu\" tooltipPosition=\"bottom\"\r\n *ngIf=\"ls.isLoggedIn()\" [ngClass]=\"legacyMenu == 'false' && ls.isClaimant() ? 'hide-xl hide-lg' : ''\"></ion-menu-button>\r\n </ion-buttons>\r\n <ion-buttons slot=\"start\" [ngClass]=\"displayLogo ? 'header_button_white' : 'header_button hide-xs hide-md'\" (click)=\"openAuditDashboard()\">\r\n <img alt=\"logo\" pTooltip=\"{{'ReEmployMS Logo' | translate}}\" tooltipPosition=\"bottom\"\r\n src=\"assets/icon/ReEmploy{{util.getState()}}.svg\" [ngClass]=\"displayLogo ? 'header_logo' : 'header_logo hide-xs hide-md'\"/>\r\n </ion-buttons>\r\n <ng-content></ng-content>\r\n <ion-buttons slot=\"start\" *ngIf=\"ls.isLoggedIn()\">\r\n <ion-button (click)=\"openHome()\" pTooltip=\"Home\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('welcome') ? 'header-button' : ''\" *ngIf=\"this.context!='audit' || ls.isEmployer()\">Home</ion-button>\r\n\r\n <ion-button id=\"btnFileWeeklies\" pTooltip=\"{{'header.weekly.tooltip' | translate}}\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('weeklies') ? 'header-button' : ''\" *ngIf=\"ls.isClaimant() && legacyMenu == 'false'\" (click)=\"openWeeklies()\" class=\"hide-xs hide-md\">{{legacyMenu == 'true' ? 'Weekly' : 'Weekly'}}</ion-button>\r\n <ion-button id=\"btnFileWeeklies\" pTooltip=\"{{'header.weekly.tooltip' | translate}}\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('weeklies') ? 'header-button' : ''\" *ngIf=\"ls.isClaimant() && legacyMenu == 'true' && !util.isState('ME')\" (click)=\"openWeeklies()\">{{legacyMenu == 'true' ? 'Weekly' : 'Weekly'}}</ion-button>\r\n <ion-button id=\"btnFileWeeklies\" pTooltip=\"{{'header.weekly.tooltip' | translate}}\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('weeklies') ? 'header-button' : ''\" *ngIf=\"ls.isClaimant() && legacyMenu == 'true' && util.isState('ME')\" (click)=\"openWeeklies()\">{{legacyMenu == 'true' ? 'Weekly Claim' : 'Weekly'}}</ion-button>\r\n \r\n \r\n <ion-button pTooltip=\"History\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '') == 'history' ? 'header-button' : ''\" *ngIf=\"ls.isClaimant() && legacyMenu == 'false' && interimHomePage == 'false'\" (click)=\"openPage('cp', 'history')\" class=\"hide-xs hide-md\">History</ion-button>\r\n <ion-button id=\"btnAuditEmployerDashboard\" pTooltip=\"EmployerDashboard\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('employer-dashboard') ? 'header-button' : ''\" *ngIf=\"ls.isEmployer()\" (click)=\"openEmployerDashboard()\">Audit Dashboard</ion-button>\r\n <ion-button id=\"btnAuditMyQ\" pTooltip=\"MyQ\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('myq') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && (ls.isTaxAuditSupervisor() || ls.isTaxAuditAuditor() || ls.isTaxAuditDirector() || ls.isTaxAuditDirector())\" (click)=\"openSupervisorMyQ()\">MyQ</ion-button>\r\n <ion-button id=\"btnAuditDashboard\" pTooltip=\"Dashboard\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('dashboard') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && (ls.isTaxAuditSupervisor()|| ls.isTaxAuditDirector())\" (click)=\"openAuditDashboard()\">Dashboard</ion-button>\r\n <ion-button id=\"btnAuditWorkList\" pTooltip=\"WorkList\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('auditor-work-list') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && ls.isTaxAuditAuditor()\" (click)=\"openAuditorWorkList()\">Work List</ion-button>\r\n <ion-button id=\"btnAuditInquiry\" pTooltip=\"Inquiry\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('inquiry') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && (ls.isTaxAuditSupervisor() || ls.isTaxAuditAuditor() || ls.isTaxAuditDirector()) || ls.hasRole('taxauditagencystaff')\" (click)=\"openSupervisorInquiry()\">Inquiry</ion-button>\r\n <ion-button id=\"btnAuditUploadDocuments\" pTooltip=\"Upload Documents\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('upload-documents') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && ls.isEmployer()\" (click)=\"openUploadDocuments()\" [disabled]=\"!isEmployerLoaded\">Upload Documents</ion-button>\r\n <ion-button id=\"btnAuditQuestionnaire\" pTooltip=\"Questionnaire\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('auditor-questionnaire') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && (ls.isTaxAuditAuditor())\" (click)=\"openQuestionnaire()\">Questionnaire</ion-button>\r\n <ion-button id=\"btnAuditQuestionnaire\" pTooltip=\"Questionnaire\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('auditor-questionnaire') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && (ls.isEmployer())\" (click)=\"openQuestionnaire()\" [disabled]=\"!isQuestionnaireDataLoaded\">Questionnaire</ion-button>\r\n <ion-button id=\"btnAuditReferrals\" pTooltip=\"Referrals\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('referrals') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && (ls.isTaxAuditSupervisor() || ls.isTaxAuditAuditor() || ls.isTaxAuditDirector()) || ls.hasRole('taxauditagencystaff')\" (click)=\"openSupervisorReferrals()\">Referrals</ion-button>\r\n <ion-button id=\"btnAuditAssign\" pTooltip=\"Assign\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('assign') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && ls.isTaxAuditSupervisor()\" (click)=\"openSupervisorAssign()\">Assign</ion-button>\r\n <ion-button id=\"btnAuditTeam\" pTooltip=\"Team\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('team') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && ls.isTaxAuditSupervisor()\" (click)=\"openSupervisorTeam()\">Team</ion-button>\r\n <ion-button id=\"btnAuditConfig\" pTooltip=\"Config\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('config') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && (ls.isTaxAuditSupervisor() || ls.isTaxAuditDirector())\" (click)=\"openSupervisorConfig()\">Config</ion-button>\r\n <ion-button id=\"btnAuditAnalytics\" pTooltip=\"Analytics\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('analytics') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && (ls.isTaxAuditSupervisor() || ls.isTaxAuditAuditor() || ls.isTaxAuditDirector())\" (click)=\"openSupervisorAnalytics()\">Analytics</ion-button>\r\n\r\n\r\n </ion-buttons>\r\n\r\n \r\n <div class=\"toolbar-content hide-xs\" *ngIf=\"ls.isLoggedIn() && ls.isCsr() && this.context !='audit' && contextRoot ==='ss'\">\r\n <p-autoComplete appendTo=\"body\" [(ngModel)]=\"searchText\" [suggestions]=\"results\"\r\n (completeMethod)=\"search($event)\" placeholder=\"Search Claimants\" (onSelect)=\"onSelectAction($event)\"\r\n emptyMessage=\"No Results Found.\" size=\"25\">\r\n <ng-template let-user pTemplate=\"item\">\r\n <ion-row class=\".ion-wrap\" >\r\n <ion-col size-auto>\r\n <ion-text>{{user.firstName | properCase}} {{user.lastName | properCase}}</ion-text>\r\n </ion-col>\r\n <ion-col size-auto>\r\n <ion-text>{{user.userId}}</ion-text>\r\n </ion-col>\r\n <ion-col size-auto>\r\n <ion-text>{{util.maskSsn(user.ssn)}}</ion-text>\r\n </ion-col>\r\n </ion-row>\r\n </ng-template>\r\n </p-autoComplete>\r\n </div>\r\n <ion-buttons slot=\"end\" *ngIf=\"ls.isLoggedIn()\" >\r\n <ion-button (click)=\"presentMyProfilePopover($event)\" pTooltip=\"Account\" tooltipPosition=\"bottom\" [ngClass]=\"legacyMenu == 'false' && ls.isClaimant() && showProfilePopup ? 'hide-xs hide-md header-button' : (legacyMenu == 'false' && ls.isClaimant() ? 'hide-xs hide-md' : '')\">\r\n <ion-title style=\"font-size: 20px; padding: 0px;\" class=\"hide-xs\">{{ls.getFullName() | properCase}}</ion-title>\r\n <ion-icon slot=\"end\" name=\"person-circle-outline\"></ion-icon>\r\n </ion-button>\r\n <ion-button (click)=\"openPage('cp', 'documents')\" pTooltip=\"Notices\" tooltipPosition=\"bottom\" *ngIf=\"!ls.isCsr() && legacyMenu == 'false' && !util.isState('ME')\" [ngClass]=\"r.url.replace('/', '') == 'documents' ? 'header-button hide-xs hide-md' : 'hide-xs hide-md'\">\r\n <i class='pi pi-file font-bold' style=\"font-size: 1.3rem; font-weight: 500 !important;\"></i>\r\n </ion-button>\r\n <ion-button (click)=\"openPage('cp', 'documents')\" pTooltip=\"Notices\" tooltipPosition=\"bottom\" *ngIf=\"!ls.isCsr() && legacyMenu == 'true'\">\r\n <ion-icon name=\"document-text-outline\"></ion-icon>\r\n </ion-button>\r\n\r\n \r\n <!-- <ion-button (click)=\"presentJobSearchResultPopup()\" pTooltip=\"Show job search result\" tooltipPosition=\"bottom\" [ngClass]=\"legacyMenu == 'false' && ls.isClaimant() ? 'hide-xs hide-md' : ''\" *ngIf=\"ls.isClaimant() && legacyMenu == 'false' && util.isState('MS')\">\r\n <ion-icon name=\"briefcase\" fill=\"outline\"></ion-icon>\r\n </ion-button> -->\r\n \r\n \r\n <ion-button (click)=\"presentMyNotificationPopover($event)\" pTooltip=\"Notification\" tooltipPosition=\"bottom\"\r\n *ngIf=\"!ns.showNotificationLoader && !util.isState('ME')\" [ngClass]=\"legacyMenu == 'false' && ls.isClaimant() ? 'hide-xs hide-md' : ''\">\r\n <ion-icon name=\"notifications-outline\"></ion-icon>\r\n <ion-badge color=\"dark\" *ngIf=\"ns.notificationCount.getValue() > 0\">\r\n <ion-label>{{ns.notificationCount.getValue()}}</ion-label>\r\n </ion-badge>\r\n </ion-button>\r\n <ion-spinner name=\"crescent\" *ngIf=\"ns.showNotificationLoader\"></ion-spinner>\r\n\r\n <ion-button (click)=\"this.hs.show()\" pTooltip=\"Help\" tooltipPosition=\"bottom\" *ngIf=\"ls.isClaimant() && legacyMenu == 'false' && (hs.shouldDisplayHelpButton() | async)\">\r\n <ion-icon name=\"help-circle-outline\"></ion-icon>\r\n </ion-button>\r\n </ion-buttons>\r\n\r\n <ion-buttons slot=\"secondary\" *ngIf=\"!ls.isLoggedIn() && ls.getUser()\">\r\n <ion-button (click)=\"logout()\" pTooltip=\"Logout\" tooltipPosition=\"bottom\">\r\n <ion-icon name=\"log-out-sharp\"></ion-icon>\r\n </ion-button>\r\n </ion-buttons>\r\n\r\n <ion-buttons slot=\"end\" *ngIf=\"showLanguageOption === 'true' && (!ls.getUser() && legacyMenu == 'false')\">\r\n <p-menu #menu [popup]=\"true\" [model]=\"items\" appendTo=\"body\"></p-menu>\r\n <ion-button (click)=\"menu.toggle($event)\" pTooltip=\"Language\" tooltipPosition=\"bottom\">\r\n <ion-icon name=\"language\" slot=\"end\"></ion-icon>\r\n </ion-button>\r\n </ion-buttons>\r\n\r\n</ion-toolbar>\r\n<ion-toolbar color=\"light\" id=\"secondToolbar\" *ngIf=\"secondToolbar\">\r\n <ion-buttons slot=\"start\">\r\n <ion-back-button pTooltip=\"Back\" alt=\"Back\" tooltipPosition=\"bottom\" [defaultHref]=\"backPage ? backPage : '/welcome'\"></ion-back-button>\r\n <ion-title color=\"primary\" *ngIf=\"title\" style=\"font-size: 18px\">{{title}}</ion-title>\r\n </ion-buttons>\r\n <ng-content></ng-content>\r\n <ion-buttons slot=\"end\">\r\n <ion-title color=\"primary\" style=\"font-size: xx-small; float: right; padding-right: 8px;\" *ngIf=\"pageId\">\r\n {{pageId}}</ion-title>\r\n </ion-buttons>\r\n</ion-toolbar>\r\n<p-toast>\r\n <ng-template let-message pTemplate=\"message\">\r\n <i *ngIf=\"message.severity === 'error'\" class=\"pi pi-times-circle\" style=\"margin-right: 14px; font-size: 38px \"></i>\r\n <i *ngIf=\"message.severity === 'success'\" class=\"pi pi-check-circle\" style=\"margin-right: 14px; font-size: 38px \"></i>\r\n <i *ngIf=\"message.severity === 'warn'\" class=\"pi pi-exclamation-circle\"style=\"margin-right: 14px; font-size: 38px \"></i>\r\n <i *ngIf=\"message.severity === 'info'\" class=\"pi pi-info-circle\" style=\"margin-right: 14px; font-size: 38px \"></i>\r\n\r\n <div [innerHTML]=\"'<strong style=\\'font-size: 22px;font-weight: bold;\\'>' + message.summary + '</strong><br><br>' + \r\n '<span style=\\'font-size: 18px;\\'>' + message.detail + '</span>'\">\r\n </div>\r\n </ng-template>\r\n </p-toast>\r\n\r\n<ng-container *ngIf=\"showProfilePopup\">\r\n <app-profile *ngIf=\"showProfilePopup\" (onCancel)=\"showProfilePopup = !showProfilePopup\"></app-profile>\r\n</ng-container>\r\n\r\n<app-job-search-result-page *ngIf=\"showjobSearchResultPopup\" (onCancel)=\"showjobSearchResultPopup = !showjobSearchResultPopup\"></app-job-search-result-page>\r\n\r\n\r\n\r\n", styles: ["#secondToolbar{--min-height: 45px !important}#header_reemployms_logo{margin-right:10px;margin-left:-5px;padding:5px;height:40px}.header_logo{height:35px}.header_button_white,.header_button{background:#fff;height:56px;margin:0;padding:8px}.toolbar-content{text-align:center}ion-toolbar{--ion-toolbar-background: var(--ion-color-primary) !important;--color: white !important;--font-weight: 500;--font-size: 13px;--position: relative;--z-index: 10;--text-align: center;--letter-spacing: .004em}ion-button{--color-hover: var(--ion-color-yellow) !important;text-transform:none!important;font-size:20px}.header-button{--color: var(--ion-color-yellow) !important;text-transform:none!important;font-weight:700;font-size:20px}.ios ion-button::part(native){color:#fff!important}ion-menu-button::part(native){color:#fff!important}ion-popover{--width: 40% !important}img{visibility:visible;position:relative}:host ::ng-deep p-autoComplete .p-inputtext{height:40px;color:#000}:host ::ng-deep p-autoComplete .p-autocomplete-item{padding:.5rem!important}:host ::ng-deep .p-toast-bottom-center,:host ::ng-deep .p-toast-top-center{transform:none!important;z-index:100001!important}:host ::ng-deep .p-toast .p-toast-icon{font-size:48px!important}:host ::ng-deep .p-toast-icon-close{position:absolute!important;top:0;right:0;margin:5px}:host ::ng-deep .p-toast-summary{font-weight:700;display:block;margin-bottom:5px}:host ::ng-deep .p-toast-message,:host ::ng-deep .p-toast-detail{display:block;font-size:14px}@media (min-width: 768px){:host ::ng-deep .header-popover{--width: 55%}}@media (min-width: 992px){:host ::ng-deep .header-popover{--width: 40%}}@media (min-width: 1200px){:host ::ng-deep .header-popover{--width: 35%}}@media (min-width: 1400px){:host ::ng-deep .header-popover{--width: 30%}}\n"] }]
867
+ args: [{ selector: 'app-header', template: "<mat-progress-bar mode=\"determinate\" [value]=\"util.loader.value$ | async\" *ngIf=\"(util.loader.value$ | async) != 0\">\r\n</mat-progress-bar>\r\n<ion-toolbar>\r\n <ion-buttons slot=\"start\" style=\"margin-left: -5px;\">\r\n <ion-menu-button autoHide=\"false\" pTooltip=\"Menu\" tooltipPosition=\"bottom\"\r\n *ngIf=\"ls.isLoggedIn() && !ls.isEmployer()\" [ngClass]=\"legacyMenu == 'false' && ls.isClaimant() ? 'hide-xl hide-lg' : ''\"></ion-menu-button>\r\n </ion-buttons>\r\n <ion-buttons slot=\"start\" [ngClass]=\"displayLogo ? 'header_button_white' : 'header_button hide-xs hide-md'\" (click)=\"onClickDisplayLogo()\">\r\n <img alt=\"logo\" pTooltip=\"{{'ReEmployMS Logo' | translate}}\" tooltipPosition=\"bottom\"\r\n src=\"assets/icon/ReEmploy{{util.getState()}}.svg\" [ngClass]=\"displayLogo ? 'header_logo' : 'header_logo hide-xs hide-md'\"/>\r\n </ion-buttons>\r\n <ng-content></ng-content>\r\n <ion-buttons slot=\"start\" *ngIf=\"ls.isLoggedIn()\">\r\n <ion-button (click)=\"openHome()\" pTooltip=\"Home\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('welcome') ? 'header-button' : ''\" *ngIf=\"this.context!='audit' || ls.isEmployer()\">Home</ion-button>\r\n\r\n <ion-button id=\"btnFileWeeklies\" pTooltip=\"{{'header.weekly.tooltip' | translate}}\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('weeklies') ? 'header-button' : ''\" *ngIf=\"ls.isClaimant() && legacyMenu == 'false'\" (click)=\"openWeeklies()\" class=\"hide-xs hide-md\">{{legacyMenu == 'true' ? 'Weekly' : 'Weekly'}}</ion-button>\r\n <ion-button id=\"btnFileWeeklies\" pTooltip=\"{{'header.weekly.tooltip' | translate}}\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('weeklies') ? 'header-button' : ''\" *ngIf=\"ls.isClaimant() && legacyMenu == 'true' && !util.isState('ME')\" (click)=\"openWeeklies()\">{{legacyMenu == 'true' ? 'Weekly' : 'Weekly'}}</ion-button>\r\n <ion-button id=\"btnFileWeeklies\" pTooltip=\"{{'header.weekly.tooltip' | translate}}\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('weeklies') ? 'header-button' : ''\" *ngIf=\"ls.isClaimant() && legacyMenu == 'true' && util.isState('ME')\" (click)=\"openWeeklies()\">{{legacyMenu == 'true' ? 'Weekly Claim' : 'Weekly'}}</ion-button>\r\n \r\n \r\n <ion-button pTooltip=\"History\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '') == 'history' ? 'header-button' : ''\" *ngIf=\"ls.isClaimant() && legacyMenu == 'false' && interimHomePage == 'false'\" (click)=\"openPage('cp', 'history')\" class=\"hide-xs hide-md\">History</ion-button>\r\n <ion-button id=\"btnAuditEmployerDashboard\" pTooltip=\"EmployerDashboard\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('employer-dashboard') ? 'header-button' : ''\" *ngIf=\"ls.isEmployer()\" (click)=\"openEmployerDashboard()\">Audit Dashboard</ion-button>\r\n <ion-button id=\"btnAuditMyQ\" pTooltip=\"MyQ\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('myq') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && (ls.isTaxAuditSupervisor() || ls.isTaxAuditAuditor() || ls.isTaxAuditDirector() || ls.isTaxAuditDirector())\" (click)=\"openSupervisorMyQ()\">MyQ</ion-button>\r\n <ion-button id=\"btnAuditDashboard\" pTooltip=\"Dashboard\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('dashboard') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && (ls.isTaxAuditSupervisor()|| ls.isTaxAuditDirector())\" (click)=\"openAuditDashboard()\">Dashboard</ion-button>\r\n <ion-button id=\"btnAuditWorkList\" pTooltip=\"WorkList\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('auditor-work-list') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && ls.isTaxAuditAuditor()\" (click)=\"openAuditorWorkList()\">Work List</ion-button>\r\n <ion-button id=\"btnAuditInquiry\" pTooltip=\"Inquiry\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('inquiry') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && (ls.isTaxAuditSupervisor() || ls.isTaxAuditAuditor() || ls.isTaxAuditDirector()) || ls.hasRole('taxauditagencystaff')\" (click)=\"openSupervisorInquiry()\">Inquiry</ion-button>\r\n <ion-button id=\"btnAuditUploadDocuments\" pTooltip=\"Upload Documents\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('upload-documents') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && ls.isEmployer()\" (click)=\"openUploadDocuments()\" [disabled]=\"!isEmployerLoaded\">Upload Documents</ion-button>\r\n <ion-button id=\"btnAuditQuestionnaire\" pTooltip=\"Questionnaire\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('auditor-questionnaire') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && (ls.isTaxAuditAuditor())\" (click)=\"openQuestionnaire()\">Questionnaire</ion-button>\r\n <ion-button id=\"btnAuditQuestionnaire\" pTooltip=\"Questionnaire\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('auditor-questionnaire') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && (ls.isEmployer())\" (click)=\"openQuestionnaire()\" [disabled]=\"!isQuestionnaireDataLoaded\">Questionnaire</ion-button>\r\n <ion-button id=\"btnAuditReferrals\" pTooltip=\"Referrals\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('referrals') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && (ls.isTaxAuditSupervisor() || ls.isTaxAuditAuditor() || ls.isTaxAuditDirector()) || ls.hasRole('taxauditagencystaff')\" (click)=\"openSupervisorReferrals()\">Referrals</ion-button>\r\n <ion-button id=\"btnAuditAssign\" pTooltip=\"Assign\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('assign') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && ls.isTaxAuditSupervisor()\" (click)=\"openSupervisorAssign()\">Assign</ion-button>\r\n <ion-button id=\"btnAuditTeam\" pTooltip=\"Team\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('team') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && ls.isTaxAuditSupervisor()\" (click)=\"openSupervisorTeam()\">Team</ion-button>\r\n <ion-button id=\"btnAuditConfig\" pTooltip=\"Config\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('config') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && (ls.isTaxAuditSupervisor() || ls.isTaxAuditDirector())\" (click)=\"openSupervisorConfig()\">Config</ion-button>\r\n <ion-button id=\"btnAuditAnalytics\" pTooltip=\"Analytics\" tooltipPosition=\"bottom\" [ngClass]=\"r.url.replace('/', '').includes('analytics') ? 'header-button' : ''\" *ngIf=\"this.context=='audit' && (ls.isTaxAuditSupervisor() || ls.isTaxAuditAuditor() || ls.isTaxAuditDirector())\" (click)=\"openSupervisorAnalytics()\">Analytics</ion-button>\r\n\r\n\r\n </ion-buttons>\r\n\r\n \r\n <div class=\"toolbar-content hide-xs\" *ngIf=\"ls.isLoggedIn() && ls.isCsr() && this.context !='audit' && contextRoot ==='ss'\">\r\n <p-autoComplete appendTo=\"body\" [(ngModel)]=\"searchText\" [suggestions]=\"results\"\r\n (completeMethod)=\"search($event)\" placeholder=\"Search Claimants\" (onSelect)=\"onSelectAction($event)\"\r\n emptyMessage=\"No Results Found.\" size=\"25\">\r\n <ng-template let-user pTemplate=\"item\">\r\n <ion-row class=\".ion-wrap\" >\r\n <ion-col size-auto>\r\n <ion-text>{{user.firstName | properCase}} {{user.lastName | properCase}}</ion-text>\r\n </ion-col>\r\n <ion-col size-auto>\r\n <ion-text>{{user.userId}}</ion-text>\r\n </ion-col>\r\n <ion-col size-auto>\r\n <ion-text>{{util.maskSsn(user.ssn)}}</ion-text>\r\n </ion-col>\r\n </ion-row>\r\n </ng-template>\r\n </p-autoComplete>\r\n </div>\r\n <ion-buttons slot=\"end\" *ngIf=\"ls.isLoggedIn()\" >\r\n <ion-button (click)=\"presentMyProfilePopover($event)\" pTooltip=\"Account\" tooltipPosition=\"bottom\" [ngClass]=\"legacyMenu == 'false' && ls.isClaimant() && showProfilePopup ? 'hide-xs hide-md header-button' : (legacyMenu == 'false' && ls.isClaimant() ? 'hide-xs hide-md' : '')\">\r\n <ion-title style=\"font-size: 20px; padding: 0px;\" class=\"hide-xs\">{{ls.getFullName() | properCase}}</ion-title>\r\n <ion-icon slot=\"end\" name=\"person-circle-outline\"></ion-icon>\r\n </ion-button>\r\n <ion-button (click)=\"openPage('cp', 'documents')\" pTooltip=\"Notices\" tooltipPosition=\"bottom\" *ngIf=\"!ls.isCsr() && legacyMenu == 'false' && !util.isState('ME')\" [ngClass]=\"r.url.replace('/', '') == 'documents' ? 'header-button hide-xs hide-md' : 'hide-xs hide-md'\">\r\n <i class='pi pi-file font-bold' style=\"font-size: 1.3rem; font-weight: 500 !important;\"></i>\r\n </ion-button>\r\n <ion-button (click)=\"openPage('cp', 'documents')\" pTooltip=\"Notices\" tooltipPosition=\"bottom\" *ngIf=\"!ls.isCsr() && legacyMenu == 'true'\">\r\n <ion-icon name=\"document-text-outline\"></ion-icon>\r\n </ion-button>\r\n\r\n \r\n <!-- <ion-button (click)=\"presentJobSearchResultPopup()\" pTooltip=\"Show job search result\" tooltipPosition=\"bottom\" [ngClass]=\"legacyMenu == 'false' && ls.isClaimant() ? 'hide-xs hide-md' : ''\" *ngIf=\"ls.isClaimant() && legacyMenu == 'false' && util.isState('MS')\">\r\n <ion-icon name=\"briefcase\" fill=\"outline\"></ion-icon>\r\n </ion-button> -->\r\n \r\n \r\n <ion-button (click)=\"presentMyNotificationPopover($event)\" pTooltip=\"Notification\" tooltipPosition=\"bottom\"\r\n *ngIf=\"!ns.showNotificationLoader && !util.isState('ME')\" [ngClass]=\"legacyMenu == 'false' && ls.isClaimant() ? 'hide-xs hide-md' : ''\">\r\n <ion-icon name=\"notifications-outline\"></ion-icon>\r\n <ion-badge color=\"dark\" *ngIf=\"ns.notificationCount.getValue() > 0\">\r\n <ion-label>{{ns.notificationCount.getValue()}}</ion-label>\r\n </ion-badge>\r\n </ion-button>\r\n <ion-spinner name=\"crescent\" *ngIf=\"ns.showNotificationLoader\"></ion-spinner>\r\n\r\n <ion-button (click)=\"this.hs.show()\" pTooltip=\"Help\" tooltipPosition=\"bottom\" *ngIf=\"ls.isClaimant() && legacyMenu == 'false' && (hs.shouldDisplayHelpButton() | async)\">\r\n <ion-icon name=\"help-circle-outline\"></ion-icon>\r\n </ion-button>\r\n </ion-buttons>\r\n\r\n <ion-buttons slot=\"secondary\" *ngIf=\"!ls.isLoggedIn() && ls.getUser()\">\r\n <ion-button (click)=\"logout()\" pTooltip=\"Logout\" tooltipPosition=\"bottom\">\r\n <ion-icon name=\"log-out-sharp\"></ion-icon>\r\n </ion-button>\r\n </ion-buttons>\r\n\r\n <ion-buttons slot=\"end\" *ngIf=\"showLanguageOption === 'true' && (!ls.getUser() && legacyMenu == 'false')\">\r\n <p-menu #menu [popup]=\"true\" [model]=\"items\" appendTo=\"body\"></p-menu>\r\n <ion-button (click)=\"menu.toggle($event)\" pTooltip=\"Language\" tooltipPosition=\"bottom\">\r\n <ion-icon name=\"language\" slot=\"end\"></ion-icon>\r\n </ion-button>\r\n </ion-buttons>\r\n\r\n</ion-toolbar>\r\n<ion-toolbar color=\"light\" id=\"secondToolbar\" *ngIf=\"secondToolbar\">\r\n <ion-buttons slot=\"start\">\r\n <ion-back-button pTooltip=\"Back\" alt=\"Back\" tooltipPosition=\"bottom\" [defaultHref]=\"backPage ? backPage : '/welcome'\"></ion-back-button>\r\n <ion-title color=\"primary\" *ngIf=\"title\" style=\"font-size: 18px\">{{title}}</ion-title>\r\n </ion-buttons>\r\n <ng-content></ng-content>\r\n <ion-buttons slot=\"end\">\r\n <ion-title color=\"primary\" style=\"font-size: xx-small; float: right; padding-right: 8px;\" *ngIf=\"pageId\">\r\n {{pageId}}</ion-title>\r\n </ion-buttons>\r\n</ion-toolbar>\r\n<p-toast>\r\n <ng-template let-message pTemplate=\"message\">\r\n <i *ngIf=\"message.severity === 'error'\" class=\"pi pi-times-circle\" style=\"margin-right: 14px; font-size: 38px \"></i>\r\n <i *ngIf=\"message.severity === 'success'\" class=\"pi pi-check-circle\" style=\"margin-right: 14px; font-size: 38px \"></i>\r\n <i *ngIf=\"message.severity === 'warn'\" class=\"pi pi-exclamation-circle\"style=\"margin-right: 14px; font-size: 38px \"></i>\r\n <i *ngIf=\"message.severity === 'info'\" class=\"pi pi-info-circle\" style=\"margin-right: 14px; font-size: 38px \"></i>\r\n\r\n <div [innerHTML]=\"'<strong style=\\'font-size: 22px;font-weight: bold;\\'>' + message.summary + '</strong><br><br>' + \r\n '<span style=\\'font-size: 18px;\\'>' + message.detail + '</span>'\">\r\n </div>\r\n </ng-template>\r\n </p-toast>\r\n\r\n<ng-container *ngIf=\"showProfilePopup\">\r\n <app-profile *ngIf=\"showProfilePopup\" (onCancel)=\"showProfilePopup = !showProfilePopup\"></app-profile>\r\n</ng-container>\r\n\r\n<app-job-search-result-page *ngIf=\"showjobSearchResultPopup\" (onCancel)=\"showjobSearchResultPopup = !showjobSearchResultPopup\"></app-job-search-result-page>\r\n\r\n\r\n\r\n", styles: ["#secondToolbar{--min-height: 45px !important}#header_reemployms_logo{margin-right:10px;margin-left:-5px;padding:5px;height:40px}.header_logo{height:35px}.header_button_white,.header_button{background:#fff;height:56px;margin:0;padding:8px}.toolbar-content{text-align:center}ion-toolbar{--ion-toolbar-background: var(--ion-color-primary) !important;--color: white !important;--font-weight: 500;--font-size: 13px;--position: relative;--z-index: 10;--text-align: center;--letter-spacing: .004em}ion-button{--color-hover: var(--ion-color-yellow) !important;text-transform:none!important;font-size:20px}.header-button{--color: var(--ion-color-yellow) !important;text-transform:none!important;font-weight:700;font-size:20px}.ios ion-button::part(native){color:#fff!important}ion-menu-button::part(native){color:#fff!important}ion-popover{--width: 40% !important}img{visibility:visible;position:relative}:host ::ng-deep p-autoComplete .p-inputtext{height:40px;color:#000}:host ::ng-deep p-autoComplete .p-autocomplete-item{padding:.5rem!important}:host ::ng-deep .p-toast-bottom-center,:host ::ng-deep .p-toast-top-center{transform:none!important;z-index:100001!important}:host ::ng-deep .p-toast .p-toast-icon{font-size:48px!important}:host ::ng-deep .p-toast-icon-close{position:absolute!important;top:0;right:0;margin:5px}:host ::ng-deep .p-toast-summary{font-weight:700;display:block;margin-bottom:5px}:host ::ng-deep .p-toast-message,:host ::ng-deep .p-toast-detail{display:block;font-size:14px}@media (min-width: 768px){:host ::ng-deep .header-popover{--width: 55%}}@media (min-width: 992px){:host ::ng-deep .header-popover{--width: 40%}}@media (min-width: 1200px){:host ::ng-deep .header-popover{--width: 35%}}@media (min-width: 1400px){:host ::ng-deep .header-popover{--width: 30%}}\n"] }]
850
868
  }], () => [{ type: i1.LoginService }, { type: i2.UtilService }, { type: i3.Router }, { type: i4.PopoverController }, { type: i5.ClaimantService }, { type: i4.NavController }, { type: i4.ModalController }, { type: i6.NotificationService }, { type: i7.HelpService }, { type: i8.TranslateService }, { type: i9.AuditService }], { title: [{
851
869
  type: Input,
852
870
  args: ['title']
@@ -870,4 +888,4 @@ export class HeaderComponent extends BasePage {
870
888
  args: ['context']
871
889
  }] }); })();
872
890
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(HeaderComponent, { className: "HeaderComponent", filePath: "lib\\components\\header\\header.component.ts", lineNumber: 26 }); })();
873
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBR3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDbEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBUWhGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNkaEQsdUNBQ21COzs7O0lBRGtCLHVFQUFvQzs7O0lBSWpFLHNDQUM0SDs7O0lBQWhHLHlHQUE2RTs7OztJQVF6RyxzQ0FBeU07SUFBN0wsd0xBQVMsZUFBQSxrQkFBVSxDQUFBLElBQUM7SUFBeUssb0JBQUk7SUFBQSxpQkFBYTs7O0lBQWhKLG1HQUE2RTs7OztJQUV2SixzQ0FBOFI7SUFBakQsd0xBQVMsZUFBQSxzQkFBYyxDQUFBLElBQUM7O0lBQXlCLFlBQThDO0lBQUEsaUJBQWE7OztJQUF4VCxtRkFBa0Q7SUFBMEIsb0dBQThFO0lBQW1HLGVBQThDO0lBQTlDLHdFQUE4Qzs7OztJQUM1VSxzQ0FBNFI7SUFBekIsd0xBQVMsZUFBQSxzQkFBYyxDQUFBLElBQUM7O0lBQUMsWUFB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aUQ7WUFBQyx5RkFBdUU7WUFHbkcsZUFBcUI7WUFBckIsMENBQXFCO1lBMkJWLGVBQW9GO1lBQXBGLGtIQUFvRjtZQW1CakcsZUFBcUI7WUFBckIsMENBQXFCO1lBZ0NmLGVBQXNDO1lBQXRDLCtEQUFzQztZQU01QyxlQUErRTtZQUEvRSw0R0FBK0U7WUFRN0QsZUFBbUI7WUFBbkIsd0NBQW1CO1lBd0JuRCxlQUFzQjtZQUF0QiwyQ0FBc0I7WUFJUixlQUE4QjtZQUE5QixtREFBOEI7OztpRkQzRzlDLGVBQWU7Y0FMM0IsU0FBUzsyQkFDRSxZQUFZOzBVQWNOLEtBQUs7a0JBQXBCLEtBQUs7bUJBQUMsT0FBTztZQUVHLE1BQU07a0JBQXRCLEtBQUs7bUJBQUMsUUFBUTtZQUVTLGFBQWE7a0JBQXBDLEtBQUs7bUJBQUMsZUFBZTtZQUVBLFdBQVc7a0JBQWhDLEtBQUs7bUJBQUMsYUFBYTtZQUVFLFdBQVc7a0JBQWhDLEtBQUs7bUJBQUMsYUFBYTtZQUVELFFBQVE7a0JBQTFCLEtBQUs7bUJBQUMsVUFBVTtZQUVDLE9BQU87a0JBQXhCLEtBQUs7bUJBQUMsU0FBUzs7a0ZBdEJMLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdmlnYXRpb25FeHRyYXMsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBNb2RhbENvbnRyb2xsZXIsIE5hdkNvbnRyb2xsZXIsIFBvcG92ZXJDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgTGliQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0xpYkNvbnN0YW50cyc7XG5pbXBvcnQgeyBDbGFpbWFudE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NsYWltYW50L0NsYWltYW50TW9kZWwnO1xuaW1wb3J0IHsgTXlOb3RpZmljYXRpb25zUGFnZSB9IGZyb20gJy4uLy4uL3BhZ2VzL3BvcG92ZXJzL215LW5vdGlmaWNhdGlvbnMvbXktbm90aWZpY2F0aW9ucy5wYWdlJztcbmltcG9ydCB7IE15UHJvZmlsZVBhZ2UgfSBmcm9tICcuLi8uLi9wYWdlcy9wb3BvdmVycy9teS1wcm9maWxlL215LXByb2ZpbGUucGFnZSc7XG5pbXBvcnQgeyBDbGFpbWFudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jbGFpbWFudC9jbGFpbWFudC5zZXJ2aWNlJztcbmltcG9ydCB7IExvZ2luU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xvZ2luL2xvZ2luLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBVdGlsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3V0aWwvdXRpbC5zZXJ2aWNlJztcbmltcG9ydCB7IEhlbHBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaGVscC9oZWxwLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBCYXNlUGFnZSB9IGZyb20gJy4uLy4uL3BhZ2VzL0Jhc2VQYWdlJztcbmltcG9ydCB7IEF1dG9Db21wbGV0ZVNlbGVjdEV2ZW50IH0gZnJvbSAncHJpbWVuZy9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgU2VhcmNoUXVlc3Rpb25uYWlyZURhdGEgfSBmcm9tICcuLi8uLi9tb2RlbHMvcXVlc3Rpb25uYWlyZS9RdWVzdGlvbm5haXJlRm9ybSc7XG5pbXBvcnQgeyBBdWRpdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdWRpdC9hdWRpdC5zZXJ2aWNlJztcbmltcG9ydCB7IEF1ZGl0RG9jdW1lbnRFbXBsb3llclVzZXJNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9BdWRpdERvY3VtZW50RW1wbG95ZXJVc2VyTW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtaGVhZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2hlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2hlYWRlci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEhlYWRlckNvbXBvbmVudCBleHRlbmRzIEJhc2VQYWdlIGltcGxlbWVudHMgT25Jbml0ICB7XG5cbiAgaXRlbXM6IE1lbnVJdGVtW107XG5cbiAgc2VhcmNoVGV4dDtcblxuICByZXN1bHRzOiBDbGFpbWFudE1vZGVsW107XG5cbiAgY29udGV4dFJvb3Q6c3RyaW5nO1xuXG4gIEBJbnB1dCgndGl0bGUnKSB0aXRsZTogc3RyaW5nO1xuXG4gIEBJbnB1dCgncGFnZUlkJykgcGFnZUlkOiBzdHJpbmc7XG5cbiAgQElucHV0KCdzZWNvbmRUb29sYmFyJykgc2Vjb25kVG9vbGJhcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgnZGlzcGxheUxvZ28nKSBkaXNwbGF5TG9nbzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgnc2hvd0hpc3RvcnknKSBzaG93SGlzdG9yeTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgnYmFja1BhZ2UnKSBiYWNrUGFnZTogc3RyaW5nO1xuXG4gIEBJbnB1dCgnY29udGV4dCcpIGNvbnRleHQ6IHN0cmluZztcblxuICBwdWJsaWMgc2hvd05vdGlmaWNhdGlvbkxvYWRlciA9IGZhbHNlO1xuXG4gIHB1YmxpYyBsZWdhY3lNZW51ID0gTGliQ29uc3RhbnRzLmxlZ2FjeU1lbnU7XG5cbiAgcHVibGljIGludGVyaW1Ib21lUGFnZSA9IExpYkNvbnN0YW50cy5pbnRlcmltSG9tZVBhZ2U7XG5cbiAgcHVibGljIHNob3dQcm9maWxlUG9wdXAgOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIHNob3dqb2JTZWFyY2hSZXN1bHRQb3B1cCA6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgc2hvd0xhbmd1YWdlT3B0aW9uID0gTGliQ29uc3RhbnRzLmVuYWJsZUxhbmd1YWdlQ2hhbmdlO1xuXG4gIGlzRW1wbG95ZXJMb2FkZWQgPSBmYWxzZTtcbiAgaXNRdWVzdGlvbm5haXJlRGF0YUxvYWRlZCA9IGZhbHNlO1xuXG5cbiAgc2VhcmNoUXVlc3Rpb25uYWlyZURhdGE6U2VhcmNoUXVlc3Rpb25uYWlyZURhdGFbXTtcbiAgc2VsZWN0ZWRRdWVzdGlvbm5haXJlRGF0YTogU2VhcmNoUXVlc3Rpb25uYWlyZURhdGFbXTtcbiAgYXVkaXREb2N1bWVudEVtcGxveWVyVXNlck1vZGVsOiBBdWRpdERvY3VtZW50RW1wbG95ZXJVc2VyTW9kZWw7XG5cblxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBscyA6IExvZ2luU2VydmljZSwgcHVibGljIHV0aWwgOiBVdGlsU2VydmljZSwgcHVibGljIHIgOiBSb3V0ZXIsIHB1YmxpYyBwb3B1cDogUG9wb3ZlckNvbnRyb2xsZXIsIFxuICAgICAgICAgICAgICBwdWJsaWMgY3MgOiBDbGFpbWFudFNlcnZpY2UsIHByaXZhdGUgbmF2IDogTmF2Q29udHJvbGxlciwgcHVibGljIG1vZGFsQ29udHJvbGxlcjogTW9kYWxDb250cm9sbGVyLFxuICAgICAgICAgICAgICBwdWJsaWMgbnMgOiBOb3RpZmljYXRpb25TZXJ2aWNlLCBwdWJsaWMgaHM6IEhlbHBTZXJ2aWNlLCBwdWJsaWMgdHJhbnNsYXRlU2VydmljZSA6IFRyYW5zbGF0ZVNlcnZpY2UsIHByaXZhdGUgcXM6IEF1ZGl0U2VydmljZSkge1xuICAgICAgICAgICAgICAgIHN1cGVyKCk7XG4gICAgICAgICAgICAgICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy90aGlzLmxvYWROb3RpZmljYXRpb25Db3VudCgpO1xuICAgIHRoaXMuc2V0TWVudUl0ZW1zKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwibGFuZ3VhZ2VcIikpO1xuICAgIGlmKHRoaXMubHMuaXNFbXBsb3llcigpKVxuICAgIHtcbiAgICAgICAgICB0aGlzLmxvYWRFbXBsb3llckRldGFpbHMoKVxuICAgIH1cbiAgICB0aGlzLmNvbnRleHRSb290ID0gdGhpcy5nZXRDb250ZXh0Um9vdCgpO1xuICB9XG4gIFxuICAvKkpvYiBTZWFyY2ggUmVzdWx0IEljb24gUG9wdXBcbiAgIHByZXNlbnRKb2JTZWFyY2hSZXN1bHRQb3B1cCgpIHtcbiAgICBpZih0aGlzLmxzLmlzQ2xhaW1hbnQoKSl7XG4gICAgICB0aGlzLnNob3dqb2JTZWFyY2hSZXN1bHRQb3B1cCA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG4gICovXG4gIGdldENvbnRleHRSb290KCl7XG4gICAgbGV0IHBhcnRzID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLnNwbGl0KCcvJyk7XG4gICAgbGV0IGNvbnRleHRSb290ID0gcGFydHMubGVuZ3RoID4gMSA/IHBhcnRzWzFdIDogJyc7XG4gICAgcmV0dXJuIGNvbnRleHRSb290O1xuICB9XG4gIHNldE1lbnVJdGVtcyhsYW5ndWFnZSA6IHN0cmluZyl7XG4gICAgdGhpcy5pdGVtcyA9IFt7XG4gICAgICBsYWJlbCA6ICdDaG9vc2UgbGFuZ3VhZ2UnLFxuICAgICAgaXRlbXM6IFt7XG4gICAgICAgIGxhYmVsOiAnRW5nbGlzaCcsXG4gICAgICAgIGljb24gOiB0aGlzLmdldEljb24obGFuZ3VhZ2UsJ2VuJyksXG4gICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0TGFuZ3VhZ2UoJ2VuJywgJ0VuZ2xpc2gnKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbGFiZWw6ICdFc3Bh77+9b2wnLFxuICAgICAgICBpY29uIDogdGhpcy5nZXRJY29uKGxhbmd1YWdlLCdlcycpLFxuICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldExhbmd1YWdlKCdlcycsICdlc3Bh77+9b2wnKTtcbiAgICAgICAgfVxuICAgICAgfV1cbiAgICB9XTtcbiAgfVxuXG4gIGdldEljb24oc2VsZWN0ZWRMYW5nIDogc3RyaW5nLCBsYW5ndWFnZSA6IHN0cmluZyl7XG4gICAgaWYobGFuZ3VhZ2UgPT0gc2VsZWN0ZWRMYW5nKXtcbiAgICAgIHJldHVybiBcInBpIHBpLWZ3IHBpLWNoZWNrXCI7XG4gICAgfWVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgc2V0TGFuZ3VhZ2UobGFuZ3VhZ2UgOiBzdHJpbmcsIG5hbWUgOiBzdHJpbmcpe1xuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS51c2UobGFuZ3VhZ2UpO1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdsYW5ndWFnZScsIGxhbmd1YWdlKTtcbiAgICB0aGlzLnV0aWwudG9hc3QoJ0xhbmd1YWdlIHByZWZlcmVuY2UgY2hhbmdlZCB0byAnICsgbmFtZSk7XG4gICAgdGhpcy5zZXRNZW51SXRlbXMobGFuZ3VhZ2UpO1xuICB9XG5cbiAgYXN5bmMgcHJlc2VudE15UHJvZmlsZVBvcG92ZXIoZXZlbnQpIHtcblxuICAgIGlmKHRoaXMubHMuaXNDbGFpbWFudCgpICYmICAodGhpcy5sZWdhY3lNZW51ID09ICdmYWxzZScgfHwgdGhpcy51dGlsLmlzU3RhdGUoJ01FJykgfHwgKHRoaXMudXRpbC5pc1N0YXRlKCdNUycpICYmIExpYkNvbnN0YW50cy5pbnRlcmltSG9tZVBhZ2UgPT0gJ3RydWUnKSkpe1xuICAgICAgdGhpcy5zaG93UHJvZmlsZVBvcHVwID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwb3BvdmVyID0gYXdhaXQgdGhpcy5wb3B1cC5jcmVhdGUoe1xuICAgICAgY29tcG9uZW50OiBNeVByb2ZpbGVQYWdlLFxuICAgICAgdHJhbnNsdWNlbnQ6IHRydWUsXG4gICAgICBiYWNrZHJvcERpc21pc3M6IHRydWUsXG4gICAgICBldmVudDogZXZlbnQsXG4gICAgICBjc3NDbGFzczogJ2hlYWRlci1wb3BvdmVyJ1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGF3YWl0IHBvcG92ZXIucHJlc2VudCgpO1xuICB9XG5cbiAgYXN5bmMgcHJlc2VudE15Tm90aWZpY2F0aW9uUG9wb3ZlcihldmVudCkge1xuICAgIGNvbnN0IHBvcG92ZXIgPSBhd2FpdCB0aGlzLnBvcHVwLmNyZWF0ZSh7XG4gICAgICBjb21wb25lbnQ6IE15Tm90aWZpY2F0aW9uc1BhZ2UsXG4gICAgICB0cmFuc2x1Y2VudDogdHJ1ZSxcbiAgICAgIGJhY2tkcm9wRGlzbWlzczogdHJ1ZSxcbiAgICAgIGV2ZW50OiBldmVudCxcbiAgICAgIGNzc0NsYXNzOiAnaGVhZGVyLXBvcG92ZXInXG4gICAgfSk7XG5cbiAgICBwb3BvdmVyLm9uRGlkRGlzbWlzcygpLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5ucy51cGRhdGVSZWFkRmxhZygpO1xuICAgIH0pXG5cbiAgICByZXR1cm4gYXdhaXQgcG9wb3Zlci5wcmVzZW50KCk7XG4gIH1cblxuICBsb2dvdXQoKXtcbiAgICB0aGlzLm5hdi5uYXZpZ2F0ZVJvb3QoJy9sYW5kaW5nJyk7XG4gICAgdGhpcy5scy5sb2dvdXQoKTtcbiAgfVxuXG4gIG9wZW5XZWVrbGllcygpe1xuICAgIGlmKHRoaXMubGVnYWN5TWVudSA9PSAndHJ1ZScgJiYgdGhpcy5pc01TKCkgJiYgdGhpcy5pbnRlcmltSG9tZVBhZ2UgPT0gJ2ZhbHNlJyl7XG4gICAgICB0aGlzLm9wZW5QYWdlKCdjcCcsICd2Mi93ZWVrbGllcycpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3BlblBhZ2UoJ2NwJywgJ3YzL3dlZWtsaWVzJylcbiAgICB9XG4gIH1cblxuICBvcGVuQXVkaXREYXNoYm9hcmQoKXtcbiAgICBpZih0aGlzLmNvbnRleHQ9PSdhdWRpdCcpe1xuICAgICAgaWYodGhpcy5scy5pc1RheEF1ZGl0U3VwZXJ2aXNvcigpIHx8IHRoaXMubHMuaXNUYXhBdWRpdERpcmVjdG9yKCkpe1xuICAgICAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy9kYXNoYm9hcmQnKTtcbiAgICAgIH0gZWxzZSBpZih0aGlzLmxzLmlzVGF4QXVkaXRBdWRpdG9yKCkpe1xuICAgICAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy9teXEnKTtcbiAgICAgIH0gZWxzZSBpZih0aGlzLmxzLmlzRW1wbG95ZXIoKSl7XG4gICAgICAgIHRoaXMub3BlblBhZ2UoJ2F1ZGl0JywnLycpOyAvL0FkZCB0aGUgYWN0dWFsIHVybCBmb3IgZW1wbG95ZXIgYXVkaXQgZGFzaGJvYXJkXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb3BlbkF1ZGl0b3JXb3JrTGlzdCgpe1xuICAgIHRoaXMub3BlblBhZ2UoJ2F1ZGl0JywnL2F1ZGl0b3Itd29yay1saXN0Jyk7XG4gIH1cblxuICAgb3BlblF1ZXN0aW9ubmFpcmUoKXtcbiAgICBpZih0aGlzLmxzLmlzVGF4QXVkaXRBdWRpdG9yKCkpe1xuICAgICAgdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCcvYXVkaXRvci1xdWVzdGlvbm5haXJlJyk7XG4gICAgfSBlbHNlIGlmKHRoaXMubHMuaXNFbXBsb3llcigpKXtcbiAgICAgIGlmKHRoaXMuc2VhcmNoUXVlc3Rpb25uYWlyZURhdGEgJiYgdGhpcy5zZWFyY2hRdWVzdGlvbm5haXJlRGF0YS5sZW5ndGggPiAwKVxuICAgICAge1xuICAgICAgICB0aGlzLnNlbGVjdGVkUXVlc3Rpb25uYWlyZURhdGEgPSB0aGlzLnNlYXJjaFF1ZXN0aW9ubmFpcmVEYXRhO1xuICAgICAgICB0aGlzLnFzLnNldFF1ZXN0aW9ubmFpcmVEYXRhKHRoaXMuc2VsZWN0ZWRRdWVzdGlvbm5haXJlRGF0YSk7XG4gICAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsICcvYXVkaXRvci1xdWVzdGlvbm5haXJlLWZvcm0nLCB7XG4gICAgICAgIHN0YXRlOiB7IGF1ZGl0OiB0aGlzLnNlYXJjaFF1ZXN0aW9ubmFpcmVEYXRhIH1cbiAgICAgIH0pOy8vQWRkIHRoZSBhY3R1YWwgdXJsIGZvciBlbXBsb3llciBxdWVzdGlvbm5haXJlXG4gICAgICB9XG4gICAgICBlbHNle1xuICAgICAgICB0aGlzLnV0aWwuc2hvd0Vycm9yKFwiTm8gYWN0aXZlIGF1ZGl0LiBUaGlzIGlzIG5vdCByZXF1aXJlZCBhdCB0aGlzIHBvaW50LlwiKVxuICAgICAgfVxuICAgICAgXG4gICAgfVxuICB9XG4gIG9wZW5VcGxvYWREb2N1bWVudHMoKXtcblxuICAgIGlmKHRoaXMuYXVkaXREb2N1bWVudEVtcGxveWVyVXNlck1vZGVsICYmIHRoaXMuYXVkaXREb2N1bWVudEVtcGxveWVyVXNlck1vZGVsLmF1ZGl0SWQgIT0gbnVsbClcbiAgICB7XG4gICAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsICcvZW1wbG95ZXItZG9jdW1lbnRzJywge1xuICAgICAgICBzdGF0ZTogeyBhdWRpdDogdGhpcy5hdWRpdERvY3VtZW50RW1wbG95ZXJVc2VyTW9kZWwgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGVsc2V7XG4gICAgICB0aGlzLnV0aWwuc2hvd0Vycm9yKFwiTm8gYWN0aXZlIGF1ZGl0LiBUaGlzIGlzIG5vdCByZXF1aXJlZCBhdCB0aGlzIHBvaW50LlwiKVxuICAgIH1cbiAgfVxuXG4gIG9wZW5FbXBsb3llckRhc2hib2FyZCgpXG4gIHtcbiAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsICcvZW1wbG95ZXItZGFzaGJvYXJkJywge1xuICAgICAgfSk7XG4gIH1cblxuICBvcGVuU3VwZXJ2aXNvck15USgpe1xuICAgIGlmKHRoaXMubHMuaXNUYXhBdWRpdFN1cGVydmlzb3IoKSB8fCB0aGlzLmxzLmlzVGF4QXVkaXRBdWRpdG9yKCkgfHwgdGhpcy5scy5pc1RheEF1ZGl0RGlyZWN0b3IoKSl7XG4gICAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy9teXEnKTtcbiAgICB9XG4gIH1cblxuICBvcGVuU3VwZXJ2aXNvcklucXVpcnkoKXtcbiAgICAgaWYodGhpcy5jb250ZXh0PT0nYXVkaXQnKXtcbiAgICAgIGlmKHRoaXMubHMuaXNUYXhBdWRpdFN1cGVydmlzb3IoKSB8fCB0aGlzLmxzLmlzVGF4QXVkaXREaXJlY3RvcigpfHx0aGlzLmxzLmhhc1JvbGUoJ3RheGF1ZGl0YWdlbmN5c3RhZmYnKSl7XG4gICAgICAgIHRoaXMub3BlblBhZ2UoJ2F1ZGl0JywnL2lucXVpcnknKTtcbiAgICAgIH0gZWxzZSBpZih0aGlzLmxzLmlzVGF4QXVkaXRBdWRpdG9yKCkpe1xuICAgICAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy9hdWRpdG9yLWlucXVpcnknKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy90aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy9pbnF1aXJ5Jyk7XG4gIH1cblxuICBvcGVuU3VwZXJ2aXNvclJlZmVycmFscygpe1xuICAgIGlmKHRoaXMubHMuaXNUYXhBdWRpdFN1cGVydmlzb3IoKSB8fCB0aGlzLmxzLmlzVGF4QXVkaXREaXJlY3RvcigpKXtcbiAgICAgIHRoaXMub3BlblBhZ2UoJ2F1ZGl0JywnL3JlZmVycmFscycpO1xuICAgIH0gZWxzZSBpZih0aGlzLmxzLmlzVGF4QXVkaXRBdWRpdG9yKCkgfHwgdGhpcy5scy5pc1RwYSgpIHx8IHRoaXMubHMuaGFzUm9sZSgndGF4YXVkaXRhZ2VuY3lzdGFmZicpKXsvL0FnZW5jeSBFbXBsb3llZSBEZWZhdWx0IC0gY2hlY2sgcm9sZSB3aXRoIGNpanVcbiAgICAgIHRoaXMub3BlblBhZ2UoJ2F1ZGl0JywnL25ldy1yZWZlcnJhbCcpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5TdXBlcnZpc29yQ29uZmlnKCl7XG4gICAgdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCcvY29uZmlnJyk7XG4gIH1cblxuICBvcGVuU3VwZXJ2aXNvckFuYWx5dGljcygpe1xuICAgIGlmKHRoaXMubHMuaXNUYXhBdWRpdFN1cGVydmlzb3IoKSB8fCB0aGlzLmxzLmlzVGF4QXVkaXREaXJlY3RvcigpKXtcbiAgICAgIHRoaXMub3BlblBhZ2UoJ2F1ZGl0JywnL2FuYWx5dGljcycpO1xuICAgIH1cbiAgICBpZih0aGlzLmxzLmlzVGF4QXVkaXRBdWRpdG9yKCkgJiYgISh0aGlzLmxzLmlzVGF4QXVkaXRTdXBlcnZpc29yKCkgfHwgdGhpcy5scy5pc1RheEF1ZGl0RGlyZWN0b3IoKSkpeyBcbiAgICAgIHRoaXMub3BlblBhZ2UoJ2F1ZGl0JywnL2F1ZGl0b3ItYW5hbHl0aWNzJyk7XG4gICAgfVxuICB9XG5cbiAgb3BlblN1cGVydmlzb3JBc3NpZ24oKXtcbiAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy9hc3NpZ24nKTtcbiAgfVxuXG4gIG9wZW5TdXBlcnZpc29yVGVhbSgpe1xuICAgIHRoaXMub3BlblBhZ2UoJ2F1ZGl0JywnL3RlYW0nKTtcbiAgfVxuXG5cbiAgbG9hZEVtcGxveWVyRGV0YWlscygpXG4gIHtcbiAgICB0aGlzLmlzRW1wbG95ZXJMb2FkZWQgPSBmYWxzZTtcbiAgICB0aGlzLmlzUXVlc3Rpb25uYWlyZURhdGFMb2FkZWQgPSBmYWxzZTtcbiAgICBsZXQgdXNlck1vZGVsID0gdGhpcy5scy5nZXRVc2VyKClcblxuICAgIHRoaXMucXMuc2VhcmNoUXVlc3Rpb25uYWlyZShudWxsLCBudWxsLCBudWxsLHVzZXJNb2RlbC51c2VybmFtZSlcbiAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgIGlmIChyZXMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLnNlYXJjaFF1ZXN0aW9ubmFpcmVEYXRhID0gcmVzO1xuICAgICAgfVxuICAgICAgdGhpcy5pc1F1ZXN0aW9ubmFpcmVEYXRhTG9hZGVkID0gdHJ1ZVxuICAgIH0sIChlcnIpID0+IHtcblxuICAgIH0pO1xuXG4gICAgdGhpcy5xcy5maW5kRW1wbG95ZXJEYXRhV2l0aFVzZXJJRCh1c2VyTW9kZWwudXNlcm5hbWUpXG4gICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICBpZiAocmVzKVxuICAgICAge1xuICAgICAgICB0aGlzLmF1ZGl0RG9jdW1lbnRFbXBsb3llclVzZXJNb2RlbCA9IHJlcztcbiAgICAgIH1cbiAgICAgIHRoaXMuaXNFbXBsb3llckxvYWRlZCA9IHRydWU7IFxuICAgIH0sIChlcnIpID0+IHtcbiAgICAgXG4gICAgfSlcblxuICB9XG4gIG9wZW5Ib21lKCl7XG4gICAgLy90aGlzLm5hdi5uYXZpZ2F0ZVJvb3QoXCIvd2VsY29tZVwiKTtcbiAgICBpZih0aGlzLmxzLmlzQ2xhaW1hbnQoKSl7XG4gICAgICB0aGlzLnV0aWwub3BlblBhZ2VCeUNvbnRleHRSb290KHRoaXMudXRpbC5nZXRDbGFpbWFudEFwcENvbnRleHRSb290KCksIFwid2VsY29tZVwiLCB0aGlzLm5hdik7IFxuICAgIH0gZWxzZSBpZih0aGlzLmxzLmlzQ3NyKCkpe1xuICAgICAgdGhpcy51dGlsLm9wZW5QYWdlQnlDb250ZXh0Um9vdCh0aGlzLnV0aWwuZ2V0U2VjdXJpdHlBcHBDb250ZXh0Um9vdCgpLFwid2VsY29tZVwiLCB0aGlzLm5hdik7IFxuICAgIH0gZWxzZSBpZih0aGlzLmxzLmlzRW1wbG95ZXIoKSl7XG4gICAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy8nKTsvL0FkZCB0aGUgYWN0dWFsIHVybCBmb3IgZW1wbG95ZXIgcXVlc3Rpb25uYWlyZVxuICAgICAgLy90aGlzLmxvYWRFbXBsb3llckRldGFpbHMoKTtcbiAgICB9IFxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5uYXYubmF2aWdhdGVSb290KFwiL3dlbGNvbWVcIik7XG4gICAgfVxuICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XG4gIH1cblxuICBzZWFyY2goZXZlbnQpIHtcbiAgICBsZXQgZG9TZWFyY2ggPSBmYWxzZTtcbiAgICBsZXQgY2xhaW1hbnRTZWFyY2ggPSBuZXcgQ2xhaW1hbnRNb2RlbCgpO1xuICAgIGxldCBxdWVyeSA9IGV2ZW50LnF1ZXJ5ICsgJyc7XG4gICAgaWYocXVlcnkuaW5jbHVkZXMoXCIgXCIpKXtcbiAgICAgIGxldCBmTmFtZSA9IHF1ZXJ5LnNwbGl0KFwiIFwiKVswXTtcbiAgICAgIGxldCBsTmFtZSA9IHF1ZXJ5LnNwbGl0KFwiIFwiKVsxXTtcbiAgICAgIGNsYWltYW50U2VhcmNoLmZpcnN0TmFtZSA9IGZOYW1lO1xuICAgICAgY2xhaW1hbnRTZWFyY2gubGFzdE5hbWUgPSBsTmFtZTtcbiAgICAgIGRvU2VhcmNoID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZihxdWVyeS5sZW5ndGggPT0gOSAmJiB0aGlzLmlzTnVtYmVyKHF1ZXJ5KSAmJiAhZG9TZWFyY2gpe1xuICAgICAgY2xhaW1hbnRTZWFyY2guc3NuID0gcXVlcnk7XG4gICAgICBkb1NlYXJjaCA9IHRydWU7XG4gICAgfWVsc2UgaWYoIXRoaXMuaXNOdW1iZXIocXVlcnkpICYmICFkb1NlYXJjaCl7XG4gICAgICBjbGFpbWFudFNlYXJjaC51c2VySWQgPSBxdWVyeTtcbiAgICAgIGRvU2VhcmNoID0gdHJ1ZTtcbiAgICB9XG4gICAgXG4gICAgaWYoZG9TZWFyY2gpe1xuICAgICAgdGhpcy5jcy5zZWFyY2goY2xhaW1hbnRTZWFyY2gpLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgICB0aGlzLnJlc3VsdHMgPSBkYXRhO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc051bWJlcihudW0pe1xuICAgIHJldHVybiAhaXNOYU4obnVtKTtcbiAgfVxuXG4gIG9uU2VsZWN0QWN0aW9uKGV2ZW50IDogQXV0b0NvbXBsZXRlU2VsZWN0RXZlbnQpe1xuICAgIHRoaXMucmVzdWx0cyA9IG51bGw7XG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gbnVsbDtcbiAgICB0aGlzLmNzLmdldENsYWltYW50KCkubmV4dChldmVudC52YWx1ZSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnV0aWwub3BlblBhZ2VCeUNvbnRleHRSb290KHRoaXMudXRpbC5nZXRTZWN1cml0eUFwcENvbnRleHRSb290KCksXCJyZXNldC1wYXNzd29yZFwiLCB0aGlzLm5hdik7XG4gICAgICAvL3RoaXMubmF2Lm5hdmlnYXRlRm9yd2FyZCgnL3Jlc2V0LXBhc3N3b3JkJyk7XG4gICAgfSwgNTAwKVxuICAgIFxuICB9XG5cbiAgb3BlbkJlbmVmaXRzQXBwKCl7XG4gICAgbGV0IHVzZXJNb2RlbCA9IHRoaXMubHMuZ2V0VXNlcigpXG4gICAgdGhpcy51dGlsLnNob3dMb2FkZXIoKTtcbiAgICB3aW5kb3cub3BlbihgJHtMaWJDb25zdGFudHMuYmVuZWZpdHNVcmxFeHRlcm5hbH0vZmFjZXMvdmlydHVhbC9jb250ZXh0c3dpdGNoLnhodG1sP2E9JHt1c2VyTW9kZWwuYWNjZXNzX3Rva2VufSZyPSR7dXNlck1vZGVsLnJlZnJlc2hfdG9rZW59JnY9MjI5OWAsICdfc2VsZicpO1xuICB9XG5cbiAgb3BlblBhZ2UoY29udGV4dFJvb3QsIHVyaSwgZXh0cmFzPzogTmF2aWdhdGlvbkV4dHJhcyl7XG4gICAgbGV0IGN1cnJlbnRDb250ZXh0Um9vdCA9IHRoaXMudXRpbC5nZXRDb250ZXh0Um9vdCgpO1xuICAgIGxldCB0YXJnZXQgPSBgLyR7Y29udGV4dFJvb3R9YDtcblxuICAgIGlmKGN1cnJlbnRDb250ZXh0Um9vdCA9PSB0YXJnZXQpe1xuICAgICAgdGhpcy5uYXYubmF2aWdhdGVSb290KGAvJHt1cml9YCwgZXh0cmFzKTtcbiAgICB9ZWxzZXtcbiAgICAgIHRoaXMudXRpbC5vcGVuUGFnZUJ5Q29udGV4dFJvb3QodGFyZ2V0LCB1cmkpO1xuICAgIH1cbiAgfVxuXG4gIGdldENsYXNzKG5hbWUpe1xuICAgIGxldCBjdXJyZW50Um91dGUgPSB0aGlzLnIudXJsLnJlcGxhY2UoJy8nLCAnJyk7XG4gICAgY29uc29sZS5sb2coY3VycmVudFJvdXRlLCBuYW1lLCBjdXJyZW50Um91dGUgPT0gbmFtZSk7XG4gICAgcmV0dXJuIGN1cnJlbnRSb3V0ZSA9PSBuYW1lID8gJ2hlYWRlci1idXR0b24nIDogJyc7XG4gIH1cblxuICBvcGVuQ29udGV4dEhlbHAoKXtcblxuICB9XG5cbiAgYXN5bmMgY2hhbmdlTGFuZ3VhZ2UoZXZlbnQpIHtcbiAgICBcbiAgfVxufVxuIiwiPG1hdC1wcm9ncmVzcy1iYXIgbW9kZT1cImRldGVybWluYXRlXCIgW3ZhbHVlXT1cInV0aWwubG9hZGVyLnZhbHVlJCB8IGFzeW5jXCIgKm5nSWY9XCIodXRpbC5sb2FkZXIudmFsdWUkIHwgYXN5bmMpICE9IDBcIj5cclxuPC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG48aW9uLXRvb2xiYXI+XHJcbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogLTVweDtcIj5cclxuICAgICAgICA8aW9uLW1lbnUtYnV0dG9uIGF1dG9IaWRlPVwiZmFsc2VcIiBwVG9vbHRpcD1cIk1lbnVcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIlxyXG4gICAgICAgICAgICAqbmdJZj1cImxzLmlzTG9nZ2VkSW4oKVwiIFtuZ0NsYXNzXT1cImxlZ2FjeU1lbnUgPT0gJ2ZhbHNlJyAmJiBscy5pc0NsYWltYW50KCkgPyAnaGlkZS14bCBoaWRlLWxnJyA6ICcnXCI+PC9pb24tbWVudS1idXR0b24+XHJcbiAgICA8L2lvbi1idXR0b25zPlxyXG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiIFtuZ0NsYXNzXT1cImRpc3BsYXlMb2dvID8gJ2hlYWRlcl9idXR0b25fd2hpdGUnIDogJ2hlYWRlcl9idXR0b24gaGlkZS14cyBoaWRlLW1kJ1wiIChjbGljayk9XCJvcGVuQXVkaXREYXNoYm9hcmQoKVwiPlxyXG4gICAgICAgIDxpbWcgYWx0PVwibG9nb1wiIHBUb29sdGlwPVwie3snUmVFbXBsb3lNUyBMb2dvJyB8IHRyYW5zbGF0ZX19XCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCJcclxuICAgICAgICAgc3JjPVwiYXNzZXRzL2ljb24vUmVFbXBsb3l7e3V0aWwuZ2V0U3RhdGUoKX19LnN2Z1wiIFtuZ0NsYXNzXT1cImRpc3BsYXlMb2dvID8gJ2hlYWRlcl9sb2dvJyA6ICdoZWFkZXJfbG9nbyBoaWRlLXhzIGhpZGUtbWQnXCIvPlxyXG4gICAgPC9pb24tYnV0dG9ucz5cclxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwic3RhcnRcIiAqbmdJZj1cImxzLmlzTG9nZ2VkSW4oKVwiPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJvcGVuSG9tZSgpXCIgcFRvb2x0aXA9XCJIb21lXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKS5pbmNsdWRlcygnd2VsY29tZScpID8gJ2hlYWRlci1idXR0b24nIDogJydcIiAqbmdJZj1cInRoaXMuY29udGV4dCE9J2F1ZGl0JyB8fCBscy5pc0VtcGxveWVyKClcIj5Ib21lPC9pb24tYnV0dG9uPlxyXG5cclxuICAgICAgICA8aW9uLWJ1dHRvbiBpZD1cImJ0bkZpbGVXZWVrbGllc1wiIHBUb29sdGlwPVwie3snaGVhZGVyLndlZWtseS50b29sdGlwJyB8IHRyYW5zbGF0ZX19XCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKS5pbmNsdWRlcygnd2Vla2xpZXMnKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJscy5pc0NsYWltYW50KCkgJiYgbGVnYWN5TWVudSA9PSAnZmFsc2UnXCIgKGNsaWNrKT1cIm9wZW5XZWVrbGllcygpXCIgY2xhc3M9XCJoaWRlLXhzIGhpZGUtbWRcIj57e2xlZ2FjeU1lbnUgPT0gJ3RydWUnID8gJ1dlZWtseScgOiAnV2Vla2x5J319PC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIGlkPVwiYnRuRmlsZVdlZWtsaWVzXCIgcFRvb2x0aXA9XCJ7eydoZWFkZXIud2Vla2x5LnRvb2x0aXAnIHwgdHJhbnNsYXRlfX1cIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJyLnVybC5yZXBsYWNlKCcvJywgJycpLmluY2x1ZGVzKCd3ZWVrbGllcycpID8gJ2hlYWRlci1idXR0b24nIDogJydcIiAqbmdJZj1cImxzLmlzQ2xhaW1hbnQoKSAmJiBsZWdhY3lNZW51ID09ICd0cnVlJyAmJiAhdXRpbC5pc1N0YXRlKCdNRScpXCIgKGNsaWNrKT1cIm9wZW5XZWVrbGllcygpXCI+e3tsZWdhY3lNZW51ID09ICd0cnVlJyA/ICdXZWVrbHknIDogJ1dlZWtseSd9fTwvaW9uLWJ1dHRvbj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiBpZD1cImJ0bkZpbGVXZWVrbGllc1wiIHBUb29sdGlwPVwie3snaGVhZGVyLndlZWtseS50b29sdGlwJyB8IHRyYW5zbGF0ZX19XCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKS5pbmNsdWRlcygnd2Vla2xpZXMnKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJscy5pc0NsYWltYW50KCkgJiYgbGVnYWN5TWVudSA9PSAndHJ1ZScgJiYgdXRpbC5pc1N0YXRlKCdNRScpXCIgKGNsaWNrKT1cIm9wZW5XZWVrbGllcygpXCI+e3tsZWdhY3lNZW51ID09ICd0cnVlJyA/ICdXZWVrbHkgQ2xhaW0nIDogJ1dlZWtseSd9fTwvaW9uLWJ1dHRvbj5cclxuICAgICAgICBcclxuICAgICAgIFxyXG4gICAgICAgIDxpb24tYnV0dG9uIHBUb29sdGlwPVwiSGlzdG9yeVwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtuZ0NsYXNzXT1cInIudXJsLnJlcGxhY2UoJy8nLCAnJykgPT0gJ2hpc3RvcnknID8gJ2hlYWRlci1idXR0b24nIDogJydcIiAqbmdJZj1cImxzLmlzQ2xhaW1hbnQoKSAmJiBsZWdhY3lNZW51ID09ICdmYWxzZScgJiYgaW50ZXJpbUhvbWVQYWdlID09ICdmYWxzZSdcIiAoY2xpY2spPVwib3BlblBhZ2UoJ2NwJywgJ2hpc3RvcnknKVwiIGNsYXNzPVwiaGlkZS14cyBoaWRlLW1kXCI+SGlzdG9yeTwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJidG5BdWRpdEVtcGxveWVyRGFzaGJvYXJkXCIgcFRvb2x0aXA9XCJFbXBsb3llckRhc2hib2FyZFwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtuZ0NsYXNzXT1cInIudXJsLnJlcGxhY2UoJy8nLCAnJykuaW5jbHVkZXMoJ2VtcGxveWVyLWRhc2hib2FyZCcpID8gJ2hlYWRlci1idXR0b24nIDogJydcIiAqbmdJZj1cImxzLmlzRW1wbG95ZXIoKVwiIChjbGljayk9XCJvcGVuRW1wbG95ZXJEYXNoYm9hcmQoKVwiPkF1ZGl0IERhc2hib2FyZDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiBpZD1cImJ0bkF1ZGl0TXlRXCIgcFRvb2x0aXA9XCJNeVFcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJyLnVybC5yZXBsYWNlKCcvJywgJycpLmluY2x1ZGVzKCdteXEnKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJ0aGlzLmNvbnRleHQ9PSdhdWRpdCcgJiYgKGxzLmlzVGF4QXVkaXRTdXBlcnZpc29yKCkgfHwgbHMuaXNUYXhBdWRpdEF1ZGl0b3IoKSB8fCBscy5pc1RheEF1ZGl0RGlyZWN0b3IoKSB8fCBscy5pc1RheEF1ZGl0RGlyZWN0b3IoKSlcIiAoY2xpY2spPVwib3BlblN1cGVydmlzb3JNeVEoKVwiPk15UTwvaW9uLWJ1dHRvbj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiBpZD1cImJ0bkF1ZGl0RGFzaGJvYXJkXCIgcFRvb2x0aXA9XCJEYXNoYm9hcmRcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJyLnVybC5yZXBsYWNlKCcvJywgJycpLmluY2x1ZGVzKCdkYXNoYm9hcmQnKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJ0aGlzLmNvbnRleHQ9PSdhdWRpdCcgJiYgKGxzLmlzVGF4QXVkaXRTdXBlcnZpc29yKCl8fCBscy5pc1RheEF1ZGl0RGlyZWN0b3IoKSlcIiAoY2xpY2spPVwib3BlbkF1ZGl0RGFzaGJvYXJkKClcIj5EYXNoYm9hcmQ8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJidG5BdWRpdFdvcmtMaXN0XCIgcFRvb2x0aXA9XCJXb3JrTGlzdFwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtuZ0NsYXNzXT1cInIudXJsLnJlcGxhY2UoJy8nLCAnJykuaW5jbHVkZXMoJ2F1ZGl0b3Itd29yay1saXN0JykgPyAnaGVhZGVyLWJ1dHRvbicgOiAnJ1wiICpuZ0lmPVwidGhpcy5jb250ZXh0PT0nYXVkaXQnICYmIGxzLmlzVGF4QXVkaXRBdWRpdG9yKClcIiAoY2xpY2spPVwib3BlbkF1ZGl0b3JXb3JrTGlzdCgpXCI+V29yayBMaXN0PC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIGlkPVwiYnRuQXVkaXRJbnF1aXJ5XCIgcFRvb2x0aXA9XCJJbnF1aXJ5XCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKS5pbmNsdWRlcygnaW5xdWlyeScpID8gJ2hlYWRlci1idXR0b24nIDogJydcIiAqbmdJZj1cInRoaXMuY29udGV4dD09J2F1ZGl0JyAmJiAobHMuaXNUYXhBdWRpdFN1cGVydmlzb3IoKSB8fCBscy5pc1RheEF1ZGl0QXVkaXRvcigpIHx8IGxzLmlzVGF4QXVkaXREaXJlY3RvcigpKSB8fCAgbHMuaGFzUm9sZSgndGF4YXVkaXRhZ2VuY3lzdGFmZicpXCIgKGNsaWNrKT1cIm9wZW5TdXBlcnZpc29ySW5xdWlyeSgpXCI+SW5xdWlyeTwvaW9uLWJ1dHRvbj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiBpZD1cImJ0bkF1ZGl0VXBsb2FkRG9jdW1lbnRzXCIgcFRvb2x0aXA9XCJVcGxvYWQgRG9jdW1lbnRzXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKS5pbmNsdWRlcygndXBsb2FkLWRvY3VtZW50cycpID8gJ2hlYWRlci1idXR0b24nIDogJydcIiAqbmdJZj1cInRoaXMuY29udGV4dD09J2F1ZGl0JyAmJiBscy5pc0VtcGxveWVyKClcIiAoY2xpY2spPVwib3BlblVwbG9hZERvY3VtZW50cygpXCIgW2Rpc2FibGVkXT1cIiFpc0VtcGxveWVyTG9hZGVkXCI+VXBsb2FkIERvY3VtZW50czwvaW9uLWJ1dHRvbj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiBpZD1cImJ0bkF1ZGl0UXVlc3Rpb25uYWlyZVwiIHBUb29sdGlwPVwiUXVlc3Rpb25uYWlyZVwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtuZ0NsYXNzXT1cInIudXJsLnJlcGxhY2UoJy8nLCAnJykuaW5jbHVkZXMoJ2F1ZGl0b3ItcXVlc3Rpb25uYWlyZScpID8gJ2hlYWRlci1idXR0b24nIDogJydcIiAqbmdJZj1cInRoaXMuY29udGV4dD09J2F1ZGl0JyAmJiAobHMuaXNUYXhBdWRpdEF1ZGl0b3IoKSlcIiAoY2xpY2spPVwib3BlblF1ZXN0aW9ubmFpcmUoKVwiPlF1ZXN0aW9ubmFpcmU8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJidG5BdWRpdFF1ZXN0aW9ubmFpcmVcIiBwVG9vbHRpcD1cIlF1ZXN0aW9ubmFpcmVcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJyLnVybC5yZXBsYWNlKCcvJywgJycpLmluY2x1ZGVzKCdhdWRpdG9yLXF1ZXN0aW9ubmFpcmUnKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJ0aGlzLmNvbnRleHQ9PSdhdWRpdCcgJiYgKGxzLmlzRW1wbG95ZXIoKSlcIiAoY2xpY2spPVwib3BlblF1ZXN0aW9ubmFpcmUoKVwiIFtkaXNhYmxlZF09XCIhaXNRdWVzdGlvbm5haXJlRGF0YUxvYWRlZFwiPlF1ZXN0aW9ubmFpcmU8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJidG5BdWRpdFJlZmVycmFsc1wiIHBUb29sdGlwPVwiUmVmZXJyYWxzXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKS5pbmNsdWRlcygncmVmZXJyYWxzJykgPyAnaGVhZGVyLWJ1dHRvbicgOiAnJ1wiICpuZ0lmPVwidGhpcy5jb250ZXh0PT0nYXVkaXQnICYmIChscy5pc1RheEF1ZGl0U3VwZXJ2aXNvcigpIHx8IGxzLmlzVGF4QXVkaXRBdWRpdG9yKCkgfHwgbHMuaXNUYXhBdWRpdERpcmVjdG9yKCkpIHx8ICBscy5oYXNSb2xlKCd0YXhhdWRpdGFnZW5jeXN0YWZmJylcIiAoY2xpY2spPVwib3BlblN1cGVydmlzb3JSZWZlcnJhbHMoKVwiPlJlZmVycmFsczwvaW9uLWJ1dHRvbj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiBpZD1cImJ0bkF1ZGl0QXNzaWduXCIgcFRvb2x0aXA9XCJBc3NpZ25cIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJyLnVybC5yZXBsYWNlKCcvJywgJycpLmluY2x1ZGVzKCdhc3NpZ24nKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJ0aGlzLmNvbnRleHQ9PSdhdWRpdCcgJiYgbHMuaXNUYXhBdWRpdFN1cGVydmlzb3IoKVwiIChjbGljayk9XCJvcGVuU3VwZXJ2aXNvckFzc2lnbigpXCI+QXNzaWduPC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIGlkPVwiYnRuQXVkaXRUZWFtXCIgcFRvb2x0aXA9XCJUZWFtXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKS5pbmNsdWRlcygndGVhbScpID8gJ2hlYWRlci1idXR0b24nIDogJydcIiAqbmdJZj1cInRoaXMuY29udGV4dD09J2F1ZGl0JyAmJiBscy5pc1RheEF1ZGl0U3VwZXJ2aXNvcigpXCIgKGNsaWNrKT1cIm9wZW5TdXBlcnZpc29yVGVhbSgpXCI+VGVhbTwvaW9uLWJ1dHRvbj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiBpZD1cImJ0bkF1ZGl0Q29uZmlnXCIgcFRvb2x0aXA9XCJDb25maWdcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJyLnVybC5yZXBsYWNlKCcvJywgJycpLmluY2x1ZGVzKCdjb25maWcnKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJ0aGlzLmNvbnRleHQ9PSdhdWRpdCcgJiYgKGxzLmlzVGF4QXVkaXRTdXBlcnZpc29yKCkgfHwgbHMuaXNUYXhBdWRpdERpcmVjdG9yKCkpXCIgKGNsaWNrKT1cIm9wZW5TdXBlcnZpc29yQ29uZmlnKClcIj5Db25maWc8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJidG5BdWRpdEFuYWx5dGljc1wiIHBUb29sdGlwPVwiQW5hbHl0aWNzXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKS5pbmNsdWRlcygnYW5hbHl0aWNzJykgPyAnaGVhZGVyLWJ1dHRvbicgOiAnJ1wiICpuZ0lmPVwidGhpcy5jb250ZXh0PT0nYXVkaXQnICYmIChscy5pc1RheEF1ZGl0U3VwZXJ2aXNvcigpIHx8IGxzLmlzVGF4QXVkaXRBdWRpdG9yKCkgfHwgbHMuaXNUYXhBdWRpdERpcmVjdG9yKCkpXCIgKGNsaWNrKT1cIm9wZW5TdXBlcnZpc29yQW5hbHl0aWNzKClcIj5BbmFseXRpY3M8L2lvbi1idXR0b24+XHJcblxyXG5cclxuICAgIDwvaW9uLWJ1dHRvbnM+XHJcblxyXG4gICAgXHJcbiAgICA8ZGl2IGNsYXNzPVwidG9vbGJhci1jb250ZW50IGhpZGUteHNcIiAqbmdJZj1cImxzLmlzTG9nZ2VkSW4oKSAmJiBscy5pc0NzcigpICYmIHRoaXMuY29udGV4dCAhPSdhdWRpdCcgJiYgY29udGV4dFJvb3QgPT09J3NzJ1wiPlxyXG4gICAgICAgIDxwLWF1dG9Db21wbGV0ZSBhcHBlbmRUbz1cImJvZHlcIiBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRcIiBbc3VnZ2VzdGlvbnNdPVwicmVzdWx0c1wiXHJcbiAgICAgICAgICAgIChjb21wbGV0ZU1ldGhvZCk9XCJzZWFyY2goJGV2ZW50KVwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIENsYWltYW50c1wiIChvblNlbGVjdCk9XCJvblNlbGVjdEFjdGlvbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgZW1wdHlNZXNzYWdlPVwiTm8gUmVzdWx0cyBGb3VuZC5cIiBzaXplPVwiMjVcIj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC11c2VyIHBUZW1wbGF0ZT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgIDxpb24tcm93IGNsYXNzPVwiLmlvbi13cmFwXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIHNpemUtYXV0bz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi10ZXh0Pnt7dXNlci5maXJzdE5hbWUgfCBwcm9wZXJDYXNlfX0ge3t1c2VyLmxhc3ROYW1lIHwgcHJvcGVyQ2FzZX19PC9pb24tdGV4dD5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgc2l6ZS1hdXRvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXRleHQ+e3t1c2VyLnVzZXJJZH19PC9pb24tdGV4dD5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgc2l6ZS1hdXRvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXRleHQ+e3t1dGlsLm1hc2tTc24odXNlci5zc24pfX08L2lvbi10ZXh0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L3AtYXV0b0NvbXBsZXRlPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiICpuZ0lmPVwibHMuaXNMb2dnZWRJbigpXCIgPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJwcmVzZW50TXlQcm9maWxlUG9wb3ZlcigkZXZlbnQpXCIgcFRvb2x0aXA9XCJBY2NvdW50XCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwibGVnYWN5TWVudSA9PSAnZmFsc2UnICYmIGxzLmlzQ2xhaW1hbnQoKSAmJiBzaG93UHJvZmlsZVBvcHVwID8gJ2hpZGUteHMgaGlkZS1tZCBoZWFkZXItYnV0dG9uJyA6IChsZWdhY3lNZW51ID09ICdmYWxzZScgJiYgbHMuaXNDbGFpbWFudCgpID8gJ2hpZGUteHMgaGlkZS1tZCcgOiAnJylcIj5cclxuICAgICAgICAgICAgPGlvbi10aXRsZSBzdHlsZT1cImZvbnQtc2l6ZTogMjBweDsgcGFkZGluZzogMHB4O1wiIGNsYXNzPVwiaGlkZS14c1wiPnt7bHMuZ2V0RnVsbE5hbWUoKSB8IHByb3BlckNhc2V9fTwvaW9uLXRpdGxlPlxyXG4gICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImVuZFwiIG5hbWU9XCJwZXJzb24tY2lyY2xlLW91dGxpbmVcIj48L2lvbi1pY29uPlxyXG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwib3BlblBhZ2UoJ2NwJywgJ2RvY3VtZW50cycpXCIgcFRvb2x0aXA9XCJOb3RpY2VzXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgKm5nSWY9XCIhbHMuaXNDc3IoKSAmJiBsZWdhY3lNZW51ID09ICdmYWxzZScgJiYgIXV0aWwuaXNTdGF0ZSgnTUUnKVwiIFtuZ0NsYXNzXT1cInIudXJsLnJlcGxhY2UoJy8nLCAnJykgPT0gJ2RvY3VtZW50cycgPyAnaGVhZGVyLWJ1dHRvbiBoaWRlLXhzIGhpZGUtbWQnIDogJ2hpZGUteHMgaGlkZS1tZCdcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9J3BpIHBpLWZpbGUgZm9udC1ib2xkJyBzdHlsZT1cImZvbnQtc2l6ZTogMS4zcmVtOyAgZm9udC13ZWlnaHQ6IDUwMCAhaW1wb3J0YW50O1wiPjwvaT5cclxuICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cIm9wZW5QYWdlKCdjcCcsICdkb2N1bWVudHMnKVwiIHBUb29sdGlwPVwiTm90aWNlc1wiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiICpuZ0lmPVwiIWxzLmlzQ3NyKCkgJiYgbGVnYWN5TWVudSA9PSAndHJ1ZSdcIj5cclxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJkb2N1bWVudC10ZXh0LW91dGxpbmVcIj48L2lvbi1pY29uPlxyXG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuXHJcbiAgICAgICAgXHJcbiAgICAgICAgPCEtLSA8aW9uLWJ1dHRvbiAoY2xpY2spPVwicHJlc2VudEpvYlNlYXJjaFJlc3VsdFBvcHVwKClcIiBwVG9vbHRpcD1cIlNob3cgam9iIHNlYXJjaCByZXN1bHRcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJsZWdhY3lNZW51ID09ICdmYWxzZScgJiYgbHMuaXNDbGFpbWFudCgpID8gJ2hpZGUteHMgaGlkZS1tZCcgOiAnJ1wiICpuZ0lmPVwibHMuaXNDbGFpbWFudCgpICYmIGxlZ2FjeU1lbnUgPT0gJ2ZhbHNlJyAmJiB1dGlsLmlzU3RhdGUoJ01TJylcIj5cclxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJicmllZmNhc2VcIiBmaWxsPVwib3V0bGluZVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgPC9pb24tYnV0dG9uPiAtLT5cclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwicHJlc2VudE15Tm90aWZpY2F0aW9uUG9wb3ZlcigkZXZlbnQpXCIgcFRvb2x0aXA9XCJOb3RpZmljYXRpb25cIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIlxyXG4gICAgICAgICAgICAqbmdJZj1cIiFucy5zaG93Tm90aWZpY2F0aW9uTG9hZGVyICYmICF1dGlsLmlzU3RhdGUoJ01FJylcIiBbbmdDbGFzc109XCJsZWdhY3lNZW51ID09ICdmYWxzZScgJiYgbHMuaXNDbGFpbWFudCgpID8gJ2hpZGUteHMgaGlkZS1tZCcgOiAnJ1wiPlxyXG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cIm5vdGlmaWNhdGlvbnMtb3V0bGluZVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgIDxpb24tYmFkZ2UgY29sb3I9XCJkYXJrXCIgKm5nSWY9XCJucy5ub3RpZmljYXRpb25Db3VudC5nZXRWYWx1ZSgpID4gMFwiPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1sYWJlbD57e25zLm5vdGlmaWNhdGlvbkNvdW50LmdldFZhbHVlKCl9fTwvaW9uLWxhYmVsPlxyXG4gICAgICAgICAgICA8L2lvbi1iYWRnZT5cclxuICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1zcGlubmVyIG5hbWU9XCJjcmVzY2VudFwiICpuZ0lmPVwibnMuc2hvd05vdGlmaWNhdGlvbkxvYWRlclwiPjwvaW9uLXNwaW5uZXI+XHJcblxyXG4gICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJ0aGlzLmhzLnNob3coKVwiIHBUb29sdGlwPVwiSGVscFwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiICpuZ0lmPVwibHMuaXNDbGFpbWFudCgpICYmIGxlZ2FjeU1lbnUgPT0gJ2ZhbHNlJyAmJiAoaHMuc2hvdWxkRGlzcGxheUhlbHBCdXR0b24oKSB8IGFzeW5jKVwiPlxyXG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImhlbHAtY2lyY2xlLW91dGxpbmVcIj48L2lvbi1pY29uPlxyXG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgIDwvaW9uLWJ1dHRvbnM+XHJcblxyXG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzZWNvbmRhcnlcIiAqbmdJZj1cIiFscy5pc0xvZ2dlZEluKCkgJiYgbHMuZ2V0VXNlcigpXCI+XHJcbiAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImxvZ291dCgpXCIgcFRvb2x0aXA9XCJMb2dvdXRcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIj5cclxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJsb2ctb3V0LXNoYXJwXCI+PC9pb24taWNvbj5cclxuICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICA8L2lvbi1idXR0b25zPlxyXG5cclxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCIgKm5nSWY9XCJzaG93TGFuZ3VhZ2VPcHRpb24gPT09ICd0cnVlJyAmJiAoIWxzLmdldFVzZXIoKSAmJiBsZWdhY3lNZW51ID09ICdmYWxzZScpXCI+XHJcbiAgICAgICAgPHAtbWVudSAjbWVudSBbcG9wdXBdPVwidHJ1ZVwiIFttb2RlbF09XCJpdGVtc1wiIGFwcGVuZFRvPVwiYm9keVwiPjwvcC1tZW51PlxyXG4gICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJtZW51LnRvZ2dsZSgkZXZlbnQpXCIgcFRvb2x0aXA9XCJMYW5ndWFnZVwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiPlxyXG4gICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJsYW5ndWFnZVwiIHNsb3Q9XCJlbmRcIj48L2lvbi1pY29uPlxyXG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgPC9pb24tYnV0dG9ucz5cclxuXHJcbjwvaW9uLXRvb2xiYXI+XHJcbjxpb24tdG9vbGJhciBjb2xvcj1cImxpZ2h0XCIgaWQ9XCJzZWNvbmRUb29sYmFyXCIgKm5nSWY9XCJzZWNvbmRUb29sYmFyXCI+XHJcbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCI+XHJcbiAgICAgICAgPGlvbi1iYWNrLWJ1dHRvbiBwVG9vbHRpcD1cIkJhY2tcIiBhbHQ9XCJCYWNrXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW2RlZmF1bHRIcmVmXT1cImJhY2tQYWdlID8gYmFja1BhZ2UgOiAnL3dlbGNvbWUnXCI+PC9pb24tYmFjay1idXR0b24+XHJcbiAgICAgICAgPGlvbi10aXRsZSBjb2xvcj1cInByaW1hcnlcIiAqbmdJZj1cInRpdGxlXCIgc3R5bGU9XCJmb250LXNpemU6IDE4cHhcIj57e3RpdGxlfX08L2lvbi10aXRsZT5cclxuICAgIDwvaW9uLWJ1dHRvbnM+XHJcbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxyXG4gICAgICAgIDxpb24tdGl0bGUgY29sb3I9XCJwcmltYXJ5XCIgc3R5bGU9XCJmb250LXNpemU6IHh4LXNtYWxsOyBmbG9hdDogcmlnaHQ7IHBhZGRpbmctcmlnaHQ6IDhweDtcIiAqbmdJZj1cInBhZ2VJZFwiPlxyXG4gICAgICAgICAgICB7e3BhZ2VJZH19PC9pb24tdGl0bGU+XHJcbiAgICA8L2lvbi1idXR0b25zPlxyXG48L2lvbi10b29sYmFyPlxyXG48cC10b2FzdD5cclxuICAgIDxuZy10ZW1wbGF0ZSBsZXQtbWVzc2FnZSBwVGVtcGxhdGU9XCJtZXNzYWdlXCI+XHJcbiAgICAgICAgPGkgKm5nSWY9XCJtZXNzYWdlLnNldmVyaXR5ID09PSAnZXJyb3InXCIgY2xhc3M9XCJwaSBwaS10aW1lcy1jaXJjbGVcIiBzdHlsZT1cIm1hcmdpbi1yaWdodDogMTRweDsgZm9udC1zaXplOiAzOHB4IFwiPjwvaT5cclxuICAgICAgICA8aSAqbmdJZj1cIm1lc3NhZ2Uuc2V2ZXJpdHkgPT09ICdzdWNjZXNzJ1wiIGNsYXNzPVwicGkgcGktY2hlY2stY2lyY2xlXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDE0cHg7IGZvbnQtc2l6ZTogMzhweCBcIj48L2k+XHJcbiAgICAgICAgPGkgKm5nSWY9XCJtZXNzYWdlLnNldmVyaXR5ID09PSAnd2FybidcIiBjbGFzcz1cInBpIHBpLWV4Y2xhbWF0aW9uLWNpcmNsZVwic3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDE0cHg7IGZvbnQtc2l6ZTogMzhweCBcIj48L2k+XHJcbiAgICAgICAgPGkgKm5nSWY9XCJtZXNzYWdlLnNldmVyaXR5ID09PSAnaW5mbydcIiBjbGFzcz1cInBpIHBpLWluZm8tY2lyY2xlXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDE0cHg7IGZvbnQtc2l6ZTogMzhweCBcIj48L2k+XHJcblxyXG4gICAgICAgIDxkaXYgW2lubmVySFRNTF09XCInPHN0cm9uZyBzdHlsZT1cXCdmb250LXNpemU6IDIycHg7Zm9udC13ZWlnaHQ6IGJvbGQ7XFwnPicgKyBtZXNzYWdlLnN1bW1hcnkgKyAnPC9zdHJvbmc+PGJyPjxicj4nICsgXHJcbiAgICAgICAgICAgICc8c3BhbiBzdHlsZT1cXCdmb250LXNpemU6IDE4cHg7XFwnPicgKyBtZXNzYWdlLmRldGFpbCArICc8L3NwYW4+J1wiPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvcC10b2FzdD5cclxuXHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93UHJvZmlsZVBvcHVwXCI+XHJcbiAgICA8YXBwLXByb2ZpbGUgKm5nSWY9XCJzaG93UHJvZmlsZVBvcHVwXCIgKG9uQ2FuY2VsKT1cInNob3dQcm9maWxlUG9wdXAgPSAhc2hvd1Byb2ZpbGVQb3B1cFwiPjwvYXBwLXByb2ZpbGU+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPGFwcC1qb2Itc2VhcmNoLXJlc3VsdC1wYWdlICpuZ0lmPVwic2hvd2pvYlNlYXJjaFJlc3VsdFBvcHVwXCIgKG9uQ2FuY2VsKT1cInNob3dqb2JTZWFyY2hSZXN1bHRQb3B1cCA9ICFzaG93am9iU2VhcmNoUmVzdWx0UG9wdXBcIj48L2FwcC1qb2Itc2VhcmNoLXJlc3VsdC1wYWdlPlxyXG5cclxuXHJcblxyXG4iXX0=
891
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBR3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDbEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBUWhGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNkaEQsdUNBQ21COzs7O0lBRGtCLHVFQUFvQzs7O0lBSWpFLHNDQUNnSjs7O0lBQWhHLHlHQUE2RTs7OztJQVE3SCxzQ0FBeU07SUFBN0wsd0xBQVMsZUFBQSxrQkFBVSxDQUFBLElBQUM7SUFBeUssb0JBQUk7SUFBQSxpQkFBYTs7O0lBQWhKLG1HQUE2RTs7OztJQUV2SixzQ0FBOFI7SUFBakQsd0xBQVMsZUFBQSxzQkFBYyxDQUFBLElBQUM7O0lBQXlCLFlBQThDO0lBQUEsaUJBQWE7OztJQUF4VCxtRkFBa0Q7SUFBMEIsb0dBQThFO0lBQW1HLGVBQThDO0lBQTlDLHdFQUE4Qzs7OztJQUM1VSxzQ0FBNFI7SUFBekIsd0xBQVMsZUFBQSxzQkFBYyxDQUFBLElBQUM7O0lBQUMsWUFB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LHlGQUF1RTtZQUduRyxlQUFxQjtZQUFyQiwwQ0FBcUI7WUEyQlYsZUFBb0Y7WUFBcEYsa0hBQW9GO1lBbUJqRyxlQUFxQjtZQUFyQiwwQ0FBcUI7WUFnQ2YsZUFBc0M7WUFBdEMsK0RBQXNDO1lBTTVDLGVBQStFO1lBQS9FLDRHQUErRTtZQVE3RCxlQUFtQjtZQUFuQix3Q0FBbUI7WUF3Qm5ELGVBQXNCO1lBQXRCLDJDQUFzQjtZQUlSLGVBQThCO1lBQTlCLG1EQUE4Qjs7O2lGRDNHOUMsZUFBZTtjQUwzQixTQUFTOzJCQUNFLFlBQVk7MFVBY04sS0FBSztrQkFBcEIsS0FBSzttQkFBQyxPQUFPO1lBRUcsTUFBTTtrQkFBdEIsS0FBSzttQkFBQyxRQUFRO1lBRVMsYUFBYTtrQkFBcEMsS0FBSzttQkFBQyxlQUFlO1lBRUEsV0FBVztrQkFBaEMsS0FBSzttQkFBQyxhQUFhO1lBRUUsV0FBVztrQkFBaEMsS0FBSzttQkFBQyxhQUFhO1lBRUQsUUFBUTtrQkFBMUIsS0FBSzttQkFBQyxVQUFVO1lBRUMsT0FBTztrQkFBeEIsS0FBSzttQkFBQyxTQUFTOztrRkF0QkwsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkV4dHJhcywgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE1vZGFsQ29udHJvbGxlciwgTmF2Q29udHJvbGxlciwgUG9wb3ZlckNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBMaWJDb25zdGFudHMgfSBmcm9tICcuLi8uLi9tb2RlbHMvTGliQ29uc3RhbnRzJztcbmltcG9ydCB7IENsYWltYW50TW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2xhaW1hbnQvQ2xhaW1hbnRNb2RlbCc7XG5pbXBvcnQgeyBNeU5vdGlmaWNhdGlvbnNQYWdlIH0gZnJvbSAnLi4vLi4vcGFnZXMvcG9wb3ZlcnMvbXktbm90aWZpY2F0aW9ucy9teS1ub3RpZmljYXRpb25zLnBhZ2UnO1xuaW1wb3J0IHsgTXlQcm9maWxlUGFnZSB9IGZyb20gJy4uLy4uL3BhZ2VzL3BvcG92ZXJzL215LXByb2ZpbGUvbXktcHJvZmlsZS5wYWdlJztcbmltcG9ydCB7IENsYWltYW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NsYWltYW50L2NsYWltYW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9naW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9naW4vbG9naW4uc2VydmljZSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFV0aWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXRpbC91dGlsLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGVscFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9oZWxwL2hlbHAuc2VydmljZSc7XG5pbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEJhc2VQYWdlIH0gZnJvbSAnLi4vLi4vcGFnZXMvQmFzZVBhZ2UnO1xuaW1wb3J0IHsgQXV0b0NvbXBsZXRlU2VsZWN0RXZlbnQgfSBmcm9tICdwcmltZW5nL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQgeyBTZWFyY2hRdWVzdGlvbm5haXJlRGF0YSB9IGZyb20gJy4uLy4uL21vZGVscy9xdWVzdGlvbm5haXJlL1F1ZXN0aW9ubmFpcmVGb3JtJztcbmltcG9ydCB7IEF1ZGl0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1ZGl0L2F1ZGl0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQXVkaXREb2N1bWVudEVtcGxveWVyVXNlck1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0F1ZGl0RG9jdW1lbnRFbXBsb3llclVzZXJNb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1oZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaGVhZGVyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSGVhZGVyQ29tcG9uZW50IGV4dGVuZHMgQmFzZVBhZ2UgaW1wbGVtZW50cyBPbkluaXQgIHtcblxuICBpdGVtczogTWVudUl0ZW1bXTtcblxuICBzZWFyY2hUZXh0O1xuXG4gIHJlc3VsdHM6IENsYWltYW50TW9kZWxbXTtcblxuICBjb250ZXh0Um9vdDpzdHJpbmc7XG5cbiAgQElucHV0KCd0aXRsZScpIHRpdGxlOiBzdHJpbmc7XG5cbiAgQElucHV0KCdwYWdlSWQnKSBwYWdlSWQ6IHN0cmluZztcblxuICBASW5wdXQoJ3NlY29uZFRvb2xiYXInKSBzZWNvbmRUb29sYmFyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCdkaXNwbGF5TG9nbycpIGRpc3BsYXlMb2dvOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCdzaG93SGlzdG9yeScpIHNob3dIaXN0b3J5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCdiYWNrUGFnZScpIGJhY2tQYWdlOiBzdHJpbmc7XG5cbiAgQElucHV0KCdjb250ZXh0JykgY29udGV4dDogc3RyaW5nO1xuXG4gIHB1YmxpYyBzaG93Tm90aWZpY2F0aW9uTG9hZGVyID0gZmFsc2U7XG5cbiAgcHVibGljIGxlZ2FjeU1lbnUgPSBMaWJDb25zdGFudHMubGVnYWN5TWVudTtcblxuICBwdWJsaWMgaW50ZXJpbUhvbWVQYWdlID0gTGliQ29uc3RhbnRzLmludGVyaW1Ib21lUGFnZTtcblxuICBwdWJsaWMgc2hvd1Byb2ZpbGVQb3B1cCA6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgc2hvd2pvYlNlYXJjaFJlc3VsdFBvcHVwIDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBzaG93TGFuZ3VhZ2VPcHRpb24gPSBMaWJDb25zdGFudHMuZW5hYmxlTGFuZ3VhZ2VDaGFuZ2U7XG5cbiAgaXNFbXBsb3llckxvYWRlZCA9IGZhbHNlO1xuICBpc1F1ZXN0aW9ubmFpcmVEYXRhTG9hZGVkID0gZmFsc2U7XG5cblxuICBzZWFyY2hRdWVzdGlvbm5haXJlRGF0YTpTZWFyY2hRdWVzdGlvbm5haXJlRGF0YVtdO1xuICBzZWxlY3RlZFF1ZXN0aW9ubmFpcmVEYXRhOiBTZWFyY2hRdWVzdGlvbm5haXJlRGF0YVtdO1xuICBhdWRpdERvY3VtZW50RW1wbG95ZXJVc2VyTW9kZWw6IEF1ZGl0RG9jdW1lbnRFbXBsb3llclVzZXJNb2RlbDtcblxuXG5cbiAgY29uc3RydWN0b3IocHVibGljIGxzIDogTG9naW5TZXJ2aWNlLCBwdWJsaWMgdXRpbCA6IFV0aWxTZXJ2aWNlLCBwdWJsaWMgciA6IFJvdXRlciwgcHVibGljIHBvcHVwOiBQb3BvdmVyQ29udHJvbGxlciwgXG4gICAgICAgICAgICAgIHB1YmxpYyBjcyA6IENsYWltYW50U2VydmljZSwgcHJpdmF0ZSBuYXYgOiBOYXZDb250cm9sbGVyLCBwdWJsaWMgbW9kYWxDb250cm9sbGVyOiBNb2RhbENvbnRyb2xsZXIsXG4gICAgICAgICAgICAgIHB1YmxpYyBucyA6IE5vdGlmaWNhdGlvblNlcnZpY2UsIHB1YmxpYyBoczogSGVscFNlcnZpY2UsIHB1YmxpYyB0cmFuc2xhdGVTZXJ2aWNlIDogVHJhbnNsYXRlU2VydmljZSwgcHJpdmF0ZSBxczogQXVkaXRTZXJ2aWNlKSB7XG4gICAgICAgICAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgICAgICAgIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICAvL3RoaXMubG9hZE5vdGlmaWNhdGlvbkNvdW50KCk7XG4gICAgdGhpcy5zZXRNZW51SXRlbXMobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJsYW5ndWFnZVwiKSk7XG4gICAgaWYodGhpcy5scy5pc0VtcGxveWVyKCkpXG4gICAge1xuICAgICAgICAgIHRoaXMubG9hZEVtcGxveWVyRGV0YWlscygpXG4gICAgfVxuICAgIHRoaXMuY29udGV4dFJvb3QgPSB0aGlzLmdldENvbnRleHRSb290KCk7XG4gIH1cbiAgXG4gIC8qSm9iIFNlYXJjaCBSZXN1bHQgSWNvbiBQb3B1cFxuICAgcHJlc2VudEpvYlNlYXJjaFJlc3VsdFBvcHVwKCkge1xuICAgIGlmKHRoaXMubHMuaXNDbGFpbWFudCgpKXtcbiAgICAgIHRoaXMuc2hvd2pvYlNlYXJjaFJlc3VsdFBvcHVwID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbiAgKi9cbiAgZ2V0Q29udGV4dFJvb3QoKXtcbiAgICBsZXQgcGFydHMgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuc3BsaXQoJy8nKTtcbiAgICBsZXQgY29udGV4dFJvb3QgPSBwYXJ0cy5sZW5ndGggPiAxID8gcGFydHNbMV0gOiAnJztcbiAgICByZXR1cm4gY29udGV4dFJvb3Q7XG4gIH1cbiAgc2V0TWVudUl0ZW1zKGxhbmd1YWdlIDogc3RyaW5nKXtcbiAgICB0aGlzLml0ZW1zID0gW3tcbiAgICAgIGxhYmVsIDogJ0Nob29zZSBsYW5ndWFnZScsXG4gICAgICBpdGVtczogW3tcbiAgICAgICAgbGFiZWw6ICdFbmdsaXNoJyxcbiAgICAgICAgaWNvbiA6IHRoaXMuZ2V0SWNvbihsYW5ndWFnZSwnZW4nKSxcbiAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXRMYW5ndWFnZSgnZW4nLCAnRW5nbGlzaCcpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBsYWJlbDogJ0VzcGHvv71vbCcsXG4gICAgICAgIGljb24gOiB0aGlzLmdldEljb24obGFuZ3VhZ2UsJ2VzJyksXG4gICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0TGFuZ3VhZ2UoJ2VzJywgJ2VzcGHvv71vbCcpO1xuICAgICAgICB9XG4gICAgICB9XVxuICAgIH1dO1xuICB9XG5cbiAgZ2V0SWNvbihzZWxlY3RlZExhbmcgOiBzdHJpbmcsIGxhbmd1YWdlIDogc3RyaW5nKXtcbiAgICBpZihsYW5ndWFnZSA9PSBzZWxlY3RlZExhbmcpe1xuICAgICAgcmV0dXJuIFwicGkgcGktZncgcGktY2hlY2tcIjtcbiAgICB9ZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBzZXRMYW5ndWFnZShsYW5ndWFnZSA6IHN0cmluZywgbmFtZSA6IHN0cmluZyl7XG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnVzZShsYW5ndWFnZSk7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2xhbmd1YWdlJywgbGFuZ3VhZ2UpO1xuICAgIHRoaXMudXRpbC50b2FzdCgnTGFuZ3VhZ2UgcHJlZmVyZW5jZSBjaGFuZ2VkIHRvICcgKyBuYW1lKTtcbiAgICB0aGlzLnNldE1lbnVJdGVtcyhsYW5ndWFnZSk7XG4gIH1cblxuICBhc3luYyBwcmVzZW50TXlQcm9maWxlUG9wb3ZlcihldmVudCkge1xuXG4gICAgaWYodGhpcy5scy5pc0NsYWltYW50KCkgJiYgICh0aGlzLmxlZ2FjeU1lbnUgPT0gJ2ZhbHNlJyB8fCB0aGlzLnV0aWwuaXNTdGF0ZSgnTUUnKSB8fCAodGhpcy51dGlsLmlzU3RhdGUoJ01TJykgJiYgTGliQ29uc3RhbnRzLmludGVyaW1Ib21lUGFnZSA9PSAndHJ1ZScpKSl7XG4gICAgICB0aGlzLnNob3dQcm9maWxlUG9wdXAgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBvcG92ZXIgPSBhd2FpdCB0aGlzLnBvcHVwLmNyZWF0ZSh7XG4gICAgICBjb21wb25lbnQ6IE15UHJvZmlsZVBhZ2UsXG4gICAgICB0cmFuc2x1Y2VudDogdHJ1ZSxcbiAgICAgIGJhY2tkcm9wRGlzbWlzczogdHJ1ZSxcbiAgICAgIGV2ZW50OiBldmVudCxcbiAgICAgIGNzc0NsYXNzOiAnaGVhZGVyLXBvcG92ZXInXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXdhaXQgcG9wb3Zlci5wcmVzZW50KCk7XG4gIH1cblxuICBhc3luYyBwcmVzZW50TXlOb3RpZmljYXRpb25Qb3BvdmVyKGV2ZW50KSB7XG4gICAgY29uc3QgcG9wb3ZlciA9IGF3YWl0IHRoaXMucG9wdXAuY3JlYXRlKHtcbiAgICAgIGNvbXBvbmVudDogTXlOb3RpZmljYXRpb25zUGFnZSxcbiAgICAgIHRyYW5zbHVjZW50OiB0cnVlLFxuICAgICAgYmFja2Ryb3BEaXNtaXNzOiB0cnVlLFxuICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgY3NzQ2xhc3M6ICdoZWFkZXItcG9wb3ZlcidcbiAgICB9KTtcblxuICAgIHBvcG92ZXIub25EaWREaXNtaXNzKCkudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLm5zLnVwZGF0ZVJlYWRGbGFnKCk7XG4gICAgfSlcblxuICAgIHJldHVybiBhd2FpdCBwb3BvdmVyLnByZXNlbnQoKTtcbiAgfVxuXG4gIGxvZ291dCgpe1xuICAgIHRoaXMubmF2Lm5hdmlnYXRlUm9vdCgnL2xhbmRpbmcnKTtcbiAgICB0aGlzLmxzLmxvZ291dCgpO1xuICB9XG5cbiAgb3BlbldlZWtsaWVzKCl7XG4gICAgaWYodGhpcy5sZWdhY3lNZW51ID09ICd0cnVlJyAmJiB0aGlzLmlzTVMoKSAmJiB0aGlzLmludGVyaW1Ib21lUGFnZSA9PSAnZmFsc2UnKXtcbiAgICAgIHRoaXMub3BlblBhZ2UoJ2NwJywgJ3YyL3dlZWtsaWVzJylcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGVuUGFnZSgnY3AnLCAndjMvd2Vla2xpZXMnKVxuICAgIH1cbiAgfVxuXG4gIG9uQ2xpY2tEaXNwbGF5TG9nbygpXG4gIHtcbiAgICBpZih0aGlzLmNvbnRleHQ9PSdhdWRpdCcpe1xuIFx0ICBsZXQgdXNlck1vZGVsID0gdGhpcy5scy5nZXRVc2VyKCk7XG4gICAgdmFyIHRlbXBWYWwgPSBKU09OLnN0cmluZ2lmeSh7IHBhcmFtMTogXCJ0YXhBdWRpdFwifSk7XG4gICAgdmFyIGVuY1ZhbCA9IGJ0b2EodGVtcFZhbCk7XG4gICAgdmFyIGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGRhdGUuc2V0VGltZShkYXRlLmdldFRpbWUoKSArIDYwMDAwKTtcbiAgICBjb25zdCBkb21haW4gPSBcIi5kb2wuY3QuZ292XCJcbiAgICB2YXIgZXhwaXJlcyA9IFwiZXhwaXJlcz1cIiArIGRhdGUudG9VVENTdHJpbmcoKTtcbiAgICBkb2N1bWVudC5jb29raWUgPSBcInBhckFwVG9NPVwiICsgZW5jVmFsICsgXCI7cGF0aD0vO2V4cGlyZXM9XCIgKyBleHBpcmVzICsgXCI7ZG9tYWluPVwiICsgZG9tYWluICsgXCI7U2FtZVNpdGU9TGF4O1wiO1xuICAgIHdpbmRvdy5vcGVuKGAke0xpYkNvbnN0YW50cy50YXhVcmxFeHRlcm5hbH0vZmFjZXMvdmlydHVhbC9jb250ZXh0c3dpdGNoLnhodG1sP2E9JHt1c2VyTW9kZWwuYWNjZXNzX3Rva2VufSZ2PTIyOTkmVEFYQVVESVRfUE9SVEFMPXRydWVgLCAnX3NlbGYnKTtcbiAgICB9XG4gIH1cblxuICAgb3BlbkF1ZGl0RGFzaGJvYXJkKCl7XG4gICAgaWYodGhpcy5jb250ZXh0PT0nYXVkaXQnKXtcbiAgICAgIGlmKHRoaXMubHMuaXNUYXhBdWRpdFN1cGVydmlzb3IoKSB8fCB0aGlzLmxzLmlzVGF4QXVkaXREaXJlY3RvcigpKXtcbiAgICAgICAgdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCcvZGFzaGJvYXJkJyk7XG4gICAgICB9IGVsc2UgaWYodGhpcy5scy5pc1RheEF1ZGl0QXVkaXRvcigpKXtcbiAgICAgICAgdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCcvbXlxJyk7XG4gICAgICB9IGVsc2UgaWYodGhpcy5scy5pc0VtcGxveWVyKCkpe1xuICAgICAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy8nKTsgLy9BZGQgdGhlIGFjdHVhbCB1cmwgZm9yIGVtcGxveWVyIGF1ZGl0IGRhc2hib2FyZFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9wZW5BdWRpdG9yV29ya0xpc3QoKXtcbiAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy9hdWRpdG9yLXdvcmstbGlzdCcpO1xuICB9XG5cbiAgIG9wZW5RdWVzdGlvbm5haXJlKCl7XG4gICAgaWYodGhpcy5scy5pc1RheEF1ZGl0QXVkaXRvcigpKXtcbiAgICAgIHRoaXMub3BlblBhZ2UoJ2F1ZGl0JywnL2F1ZGl0b3ItcXVlc3Rpb25uYWlyZScpO1xuICAgIH0gZWxzZSBpZih0aGlzLmxzLmlzRW1wbG95ZXIoKSl7XG4gICAgICBpZih0aGlzLnNlYXJjaFF1ZXN0aW9ubmFpcmVEYXRhICYmIHRoaXMuc2VhcmNoUXVlc3Rpb25uYWlyZURhdGEubGVuZ3RoID4gMClcbiAgICAgIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFF1ZXN0aW9ubmFpcmVEYXRhID0gdGhpcy5zZWFyY2hRdWVzdGlvbm5haXJlRGF0YTtcbiAgICAgICAgdGhpcy5xcy5zZXRRdWVzdGlvbm5haXJlRGF0YSh0aGlzLnNlbGVjdGVkUXVlc3Rpb25uYWlyZURhdGEpO1xuICAgICAgdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCAnL2F1ZGl0b3ItcXVlc3Rpb25uYWlyZS1mb3JtJywge1xuICAgICAgICBzdGF0ZTogeyBhdWRpdDogdGhpcy5zZWFyY2hRdWVzdGlvbm5haXJlRGF0YSB9XG4gICAgICB9KTsvL0FkZCB0aGUgYWN0dWFsIHVybCBmb3IgZW1wbG95ZXIgcXVlc3Rpb25uYWlyZVxuICAgICAgfVxuICAgICAgZWxzZXtcbiAgICAgICAgdGhpcy51dGlsLnNob3dFcnJvcihcIk5vIGFjdGl2ZSBhdWRpdC4gVGhpcyBpcyBub3QgcmVxdWlyZWQgYXQgdGhpcyBwb2ludC5cIilcbiAgICAgIH1cbiAgICAgIFxuICAgIH1cbiAgfVxuICBvcGVuVXBsb2FkRG9jdW1lbnRzKCl7XG5cbiAgICBpZih0aGlzLmF1ZGl0RG9jdW1lbnRFbXBsb3llclVzZXJNb2RlbCAmJiB0aGlzLmF1ZGl0RG9jdW1lbnRFbXBsb3llclVzZXJNb2RlbC5hdWRpdElkICE9IG51bGwpXG4gICAge1xuICAgICAgdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCAnL2VtcGxveWVyLWRvY3VtZW50cycsIHtcbiAgICAgICAgc3RhdGU6IHsgYXVkaXQ6IHRoaXMuYXVkaXREb2N1bWVudEVtcGxveWVyVXNlck1vZGVsIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBlbHNle1xuICAgICAgdGhpcy51dGlsLnNob3dFcnJvcihcIk5vIGFjdGl2ZSBhdWRpdC4gVGhpcyBpcyBub3QgcmVxdWlyZWQgYXQgdGhpcyBwb2ludC5cIilcbiAgICB9XG4gIH1cblxuICBvcGVuRW1wbG95ZXJEYXNoYm9hcmQoKVxuICB7XG4gICAgdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCAnL2VtcGxveWVyLWRhc2hib2FyZCcsIHtcbiAgICAgIH0pO1xuICB9XG5cbiAgb3BlblN1cGVydmlzb3JNeVEoKXtcbiAgICBpZih0aGlzLmxzLmlzVGF4QXVkaXRTdXBlcnZpc29yKCkgfHwgdGhpcy5scy5pc1RheEF1ZGl0QXVkaXRvcigpIHx8IHRoaXMubHMuaXNUYXhBdWRpdERpcmVjdG9yKCkpe1xuICAgICAgdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCcvbXlxJyk7XG4gICAgfVxuICB9XG5cbiAgb3BlblN1cGVydmlzb3JJbnF1aXJ5KCl7XG4gICAgIGlmKHRoaXMuY29udGV4dD09J2F1ZGl0Jyl7XG4gICAgICBpZih0aGlzLmxzLmlzVGF4QXVkaXRTdXBlcnZpc29yKCkgfHwgdGhpcy5scy5pc1RheEF1ZGl0RGlyZWN0b3IoKXx8dGhpcy5scy5oYXNSb2xlKCd0YXhhdWRpdGFnZW5jeXN0YWZmJykpe1xuICAgICAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy9pbnF1aXJ5Jyk7XG4gICAgICB9IGVsc2UgaWYodGhpcy5scy5pc1RheEF1ZGl0QXVkaXRvcigpKXtcbiAgICAgICAgdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCcvYXVkaXRvci1pbnF1aXJ5Jyk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCcvaW5xdWlyeScpO1xuICB9XG5cbiAgb3BlblN1cGVydmlzb3JSZWZlcnJhbHMoKXtcbiAgICBpZih0aGlzLmxzLmlzVGF4QXVkaXRTdXBlcnZpc29yKCkgfHwgdGhpcy5scy5pc1RheEF1ZGl0RGlyZWN0b3IoKSl7XG4gICAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy9yZWZlcnJhbHMnKTtcbiAgICB9IGVsc2UgaWYodGhpcy5scy5pc1RheEF1ZGl0QXVkaXRvcigpIHx8IHRoaXMubHMuaXNUcGEoKSB8fCB0aGlzLmxzLmhhc1JvbGUoJ3RheGF1ZGl0YWdlbmN5c3RhZmYnKSl7Ly9BZ2VuY3kgRW1wbG95ZWUgRGVmYXVsdCAtIGNoZWNrIHJvbGUgd2l0aCBjaWp1XG4gICAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy9uZXctcmVmZXJyYWwnKTtcbiAgICB9XG4gIH1cblxuICBvcGVuU3VwZXJ2aXNvckNvbmZpZygpe1xuICAgIHRoaXMub3BlblBhZ2UoJ2F1ZGl0JywnL2NvbmZpZycpO1xuICB9XG5cbiAgb3BlblN1cGVydmlzb3JBbmFseXRpY3MoKXtcbiAgICBpZih0aGlzLmxzLmlzVGF4QXVkaXRTdXBlcnZpc29yKCkgfHwgdGhpcy5scy5pc1RheEF1ZGl0RGlyZWN0b3IoKSl7XG4gICAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy9hbmFseXRpY3MnKTtcbiAgICB9XG4gICAgaWYodGhpcy5scy5pc1RheEF1ZGl0QXVkaXRvcigpICYmICEodGhpcy5scy5pc1RheEF1ZGl0U3VwZXJ2aXNvcigpIHx8IHRoaXMubHMuaXNUYXhBdWRpdERpcmVjdG9yKCkpKXsgXG4gICAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy9hdWRpdG9yLWFuYWx5dGljcycpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5TdXBlcnZpc29yQXNzaWduKCl7XG4gICAgdGhpcy5vcGVuUGFnZSgnYXVkaXQnLCcvYXNzaWduJyk7XG4gIH1cblxuICBvcGVuU3VwZXJ2aXNvclRlYW0oKXtcbiAgICB0aGlzLm9wZW5QYWdlKCdhdWRpdCcsJy90ZWFtJyk7XG4gIH1cblxuXG4gIGxvYWRFbXBsb3llckRldGFpbHMoKVxuICB7XG4gICAgdGhpcy5pc0VtcGxveWVyTG9hZGVkID0gZmFsc2U7XG4gICAgdGhpcy5pc1F1ZXN0aW9ubmFpcmVEYXRhTG9hZGVkID0gZmFsc2U7XG4gICAgbGV0IHVzZXJNb2RlbCA9IHRoaXMubHMuZ2V0VXNlcigpXG5cbiAgICB0aGlzLnFzLnNlYXJjaFF1ZXN0aW9ubmFpcmUobnVsbCwgbnVsbCwgbnVsbCx1c2VyTW9kZWwudXNlcm5hbWUpXG4gICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICBpZiAocmVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5zZWFyY2hRdWVzdGlvbm5haXJlRGF0YSA9IHJlcztcbiAgICAgIH1cbiAgICAgIHRoaXMuaXNRdWVzdGlvbm5haXJlRGF0YUxvYWRlZCA9IHRydWVcbiAgICB9LCAoZXJyKSA9PiB7XG5cbiAgICB9KTtcblxuICAgIHRoaXMucXMuZmluZEVtcGxveWVyRGF0YVdpdGhVc2VySUQodXNlck1vZGVsLnVzZXJuYW1lKVxuICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgaWYgKHJlcylcbiAgICAgIHtcbiAgICAgICAgdGhpcy5hdWRpdERvY3VtZW50RW1wbG95ZXJVc2VyTW9kZWwgPSByZXM7XG4gICAgICB9XG4gICAgICB0aGlzLmlzRW1wbG95ZXJMb2FkZWQgPSB0cnVlOyBcbiAgICB9LCAoZXJyKSA9PiB7XG4gICAgIFxuICAgIH0pXG5cbiAgfVxuICBvcGVuSG9tZSgpe1xuICAgIC8vdGhpcy5uYXYubmF2aWdhdGVSb290KFwiL3dlbGNvbWVcIik7XG4gXHRpZih0aGlzLmNvbnRleHQ9PSdhdWRpdCcpe1xuICAgICAgICBsZXQgdXNlck1vZGVsID0gdGhpcy5scy5nZXRVc2VyKClcbiAgICAgICAgdGhpcy51dGlsLnNob3dMb2FkZXIoKTtcbiAgICAgICAgd2luZG93Lm9wZW4oYCR7TGliQ29uc3RhbnRzLnRheFVybEV4dGVybmFsfS9mYWNlcy92aXJ0dWFsL2NvbnRleHRzd2l0Y2gueGh0bWw/YT0ke3VzZXJNb2RlbC5hY2Nlc3NfdG9rZW59JnI9JHt1c2VyTW9kZWwucmVmcmVzaF90b2tlbn0mdj0yMjk5YCwgJ19zZWxmJyk7XG4gICAgfVxuICAgIGlmKHRoaXMubHMuaXNDbGFpbWFudCgpKXtcbiAgICAgIHRoaXMudXRpbC5vcGVuUGFnZUJ5Q29udGV4dFJvb3QodGhpcy51dGlsLmdldENsYWltYW50QXBwQ29udGV4dFJvb3QoKSwgXCJ3ZWxjb21lXCIsIHRoaXMubmF2KTsgXG4gICAgfSBlbHNlIGlmKHRoaXMubHMuaXNDc3IoKSl7XG4gICAgICB0aGlzLnV0aWwub3BlblBhZ2VCeUNvbnRleHRSb290KHRoaXMudXRpbC5nZXRTZWN1cml0eUFwcENvbnRleHRSb290KCksXCJ3ZWxjb21lXCIsIHRoaXMubmF2KTsgXG4gICAgfSBlbHNlIGlmKHRoaXMubHMuaXNFbXBsb3llcigpKXtcbiAgICAgIHRoaXMub3BlblBhZ2UoJ2F1ZGl0JywnLycpOy8vQWRkIHRoZSBhY3R1YWwgdXJsIGZvciBlbXBsb3llciBxdWVzdGlvbm5haXJlXG4gICAgICAvL3RoaXMubG9hZEVtcGxveWVyRGV0YWlscygpO1xuICAgIH0gXG4gICAgZWxzZSB7XG4gICAgICB0aGlzLm5hdi5uYXZpZ2F0ZVJvb3QoXCIvd2VsY29tZVwiKTtcbiAgICB9XG4gICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcbiAgfVxuXG4gIHNlYXJjaChldmVudCkge1xuICAgIGxldCBkb1NlYXJjaCA9IGZhbHNlO1xuICAgIGxldCBjbGFpbWFudFNlYXJjaCA9IG5ldyBDbGFpbWFudE1vZGVsKCk7XG4gICAgbGV0IHF1ZXJ5ID0gZXZlbnQucXVlcnkgKyAnJztcbiAgICBpZihxdWVyeS5pbmNsdWRlcyhcIiBcIikpe1xuICAgICAgbGV0IGZOYW1lID0gcXVlcnkuc3BsaXQoXCIgXCIpWzBdO1xuICAgICAgbGV0IGxOYW1lID0gcXVlcnkuc3BsaXQoXCIgXCIpWzFdO1xuICAgICAgY2xhaW1hbnRTZWFyY2guZmlyc3ROYW1lID0gZk5hbWU7XG4gICAgICBjbGFpbWFudFNlYXJjaC5sYXN0TmFtZSA9IGxOYW1lO1xuICAgICAgZG9TZWFyY2ggPSB0cnVlO1xuICAgIH1cblxuICAgIGlmKHF1ZXJ5Lmxlbmd0aCA9PSA5ICYmIHRoaXMuaXNOdW1iZXIocXVlcnkpICYmICFkb1NlYXJjaCl7XG4gICAgICBjbGFpbWFudFNlYXJjaC5zc24gPSBxdWVyeTtcbiAgICAgIGRvU2VhcmNoID0gdHJ1ZTtcbiAgICB9ZWxzZSBpZighdGhpcy5pc051bWJlcihxdWVyeSkgJiYgIWRvU2VhcmNoKXtcbiAgICAgIGNsYWltYW50U2VhcmNoLnVzZXJJZCA9IHF1ZXJ5O1xuICAgICAgZG9TZWFyY2ggPSB0cnVlO1xuICAgIH1cbiAgICBcbiAgICBpZihkb1NlYXJjaCl7XG4gICAgICB0aGlzLmNzLnNlYXJjaChjbGFpbWFudFNlYXJjaCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICAgIHRoaXMucmVzdWx0cyA9IGRhdGE7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzTnVtYmVyKG51bSl7XG4gICAgcmV0dXJuICFpc05hTihudW0pO1xuICB9XG5cbiAgb25TZWxlY3RBY3Rpb24oZXZlbnQgOiBBdXRvQ29tcGxldGVTZWxlY3RFdmVudCl7XG4gICAgdGhpcy5yZXN1bHRzID0gbnVsbDtcbiAgICB0aGlzLnNlYXJjaFRleHQgPSBudWxsO1xuICAgIHRoaXMuY3MuZ2V0Q2xhaW1hbnQoKS5uZXh0KGV2ZW50LnZhbHVlKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMudXRpbC5vcGVuUGFnZUJ5Q29udGV4dFJvb3QodGhpcy51dGlsLmdldFNlY3VyaXR5QXBwQ29udGV4dFJvb3QoKSxcInJlc2V0LXBhc3N3b3JkXCIsIHRoaXMubmF2KTtcbiAgICAgIC8vdGhpcy5uYXYubmF2aWdhdGVGb3J3YXJkKCcvcmVzZXQtcGFzc3dvcmQnKTtcbiAgICB9LCA1MDApXG4gICAgXG4gIH1cblxuICBvcGVuQmVuZWZpdHNBcHAoKXtcbiAgICBsZXQgdXNlck1vZGVsID0gdGhpcy5scy5nZXRVc2VyKClcbiAgICB0aGlzLnV0aWwuc2hvd0xvYWRlcigpO1xuICAgIHdpbmRvdy5vcGVuKGAke0xpYkNvbnN0YW50cy5iZW5lZml0c1VybEV4dGVybmFsfS9mYWNlcy92aXJ0dWFsL2NvbnRleHRzd2l0Y2gueGh0bWw/YT0ke3VzZXJNb2RlbC5hY2Nlc3NfdG9rZW59JnI9JHt1c2VyTW9kZWwucmVmcmVzaF90b2tlbn0mdj0yMjk5YCwgJ19zZWxmJyk7XG4gIH1cblxuICBvcGVuUGFnZShjb250ZXh0Um9vdCwgdXJpLCBleHRyYXM/OiBOYXZpZ2F0aW9uRXh0cmFzKXtcbiAgICBsZXQgY3VycmVudENvbnRleHRSb290ID0gdGhpcy51dGlsLmdldENvbnRleHRSb290KCk7XG4gICAgbGV0IHRhcmdldCA9IGAvJHtjb250ZXh0Um9vdH1gO1xuXG4gICAgaWYoY3VycmVudENvbnRleHRSb290ID09IHRhcmdldCl7XG4gICAgICB0aGlzLm5hdi5uYXZpZ2F0ZVJvb3QoYC8ke3VyaX1gLCBleHRyYXMpO1xuICAgIH1lbHNle1xuICAgICAgdGhpcy51dGlsLm9wZW5QYWdlQnlDb250ZXh0Um9vdCh0YXJnZXQsIHVyaSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0Q2xhc3MobmFtZSl7XG4gICAgbGV0IGN1cnJlbnRSb3V0ZSA9IHRoaXMuci51cmwucmVwbGFjZSgnLycsICcnKTtcbiAgICBjb25zb2xlLmxvZyhjdXJyZW50Um91dGUsIG5hbWUsIGN1cnJlbnRSb3V0ZSA9PSBuYW1lKTtcbiAgICByZXR1cm4gY3VycmVudFJvdXRlID09IG5hbWUgPyAnaGVhZGVyLWJ1dHRvbicgOiAnJztcbiAgfVxuXG4gIG9wZW5Db250ZXh0SGVscCgpe1xuXG4gIH1cblxuICBhc3luYyBjaGFuZ2VMYW5ndWFnZShldmVudCkge1xuICAgIFxuICB9XG59XG4iLCI8bWF0LXByb2dyZXNzLWJhciBtb2RlPVwiZGV0ZXJtaW5hdGVcIiBbdmFsdWVdPVwidXRpbC5sb2FkZXIudmFsdWUkIHwgYXN5bmNcIiAqbmdJZj1cIih1dGlsLmxvYWRlci52YWx1ZSQgfCBhc3luYykgIT0gMFwiPlxyXG48L21hdC1wcm9ncmVzcy1iYXI+XHJcbjxpb24tdG9vbGJhcj5cclxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwic3RhcnRcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAtNXB4O1wiPlxyXG4gICAgICAgIDxpb24tbWVudS1idXR0b24gYXV0b0hpZGU9XCJmYWxzZVwiIHBUb29sdGlwPVwiTWVudVwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwibHMuaXNMb2dnZWRJbigpICYmICFscy5pc0VtcGxveWVyKClcIiBbbmdDbGFzc109XCJsZWdhY3lNZW51ID09ICdmYWxzZScgJiYgbHMuaXNDbGFpbWFudCgpID8gJ2hpZGUteGwgaGlkZS1sZycgOiAnJ1wiPjwvaW9uLW1lbnUtYnV0dG9uPlxyXG4gICAgPC9pb24tYnV0dG9ucz5cclxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwic3RhcnRcIiBbbmdDbGFzc109XCJkaXNwbGF5TG9nbyA/ICdoZWFkZXJfYnV0dG9uX3doaXRlJyA6ICdoZWFkZXJfYnV0dG9uIGhpZGUteHMgaGlkZS1tZCdcIiAoY2xpY2spPVwib25DbGlja0Rpc3BsYXlMb2dvKClcIj5cclxuICAgICAgICA8aW1nIGFsdD1cImxvZ29cIiBwVG9vbHRpcD1cInt7J1JlRW1wbG95TVMgTG9nbycgfCB0cmFuc2xhdGV9fVwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiXHJcbiAgICAgICAgIHNyYz1cImFzc2V0cy9pY29uL1JlRW1wbG95e3t1dGlsLmdldFN0YXRlKCl9fS5zdmdcIiBbbmdDbGFzc109XCJkaXNwbGF5TG9nbyA/ICdoZWFkZXJfbG9nbycgOiAnaGVhZGVyX2xvZ28gaGlkZS14cyBoaWRlLW1kJ1wiLz5cclxuICAgIDwvaW9uLWJ1dHRvbnM+XHJcbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCIgKm5nSWY9XCJscy5pc0xvZ2dlZEluKClcIj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwib3BlbkhvbWUoKVwiIHBUb29sdGlwPVwiSG9tZVwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtuZ0NsYXNzXT1cInIudXJsLnJlcGxhY2UoJy8nLCAnJykuaW5jbHVkZXMoJ3dlbGNvbWUnKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJ0aGlzLmNvbnRleHQhPSdhdWRpdCcgfHwgbHMuaXNFbXBsb3llcigpXCI+SG9tZTwvaW9uLWJ1dHRvbj5cclxuXHJcbiAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJidG5GaWxlV2Vla2xpZXNcIiBwVG9vbHRpcD1cInt7J2hlYWRlci53ZWVrbHkudG9vbHRpcCcgfCB0cmFuc2xhdGV9fVwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtuZ0NsYXNzXT1cInIudXJsLnJlcGxhY2UoJy8nLCAnJykuaW5jbHVkZXMoJ3dlZWtsaWVzJykgPyAnaGVhZGVyLWJ1dHRvbicgOiAnJ1wiICpuZ0lmPVwibHMuaXNDbGFpbWFudCgpICYmIGxlZ2FjeU1lbnUgPT0gJ2ZhbHNlJ1wiIChjbGljayk9XCJvcGVuV2Vla2xpZXMoKVwiIGNsYXNzPVwiaGlkZS14cyBoaWRlLW1kXCI+e3tsZWdhY3lNZW51ID09ICd0cnVlJyA/ICdXZWVrbHknIDogJ1dlZWtseSd9fTwvaW9uLWJ1dHRvbj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiBpZD1cImJ0bkZpbGVXZWVrbGllc1wiIHBUb29sdGlwPVwie3snaGVhZGVyLndlZWtseS50b29sdGlwJyB8IHRyYW5zbGF0ZX19XCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKS5pbmNsdWRlcygnd2Vla2xpZXMnKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJscy5pc0NsYWltYW50KCkgJiYgbGVnYWN5TWVudSA9PSAndHJ1ZScgJiYgIXV0aWwuaXNTdGF0ZSgnTUUnKVwiIChjbGljayk9XCJvcGVuV2Vla2xpZXMoKVwiPnt7bGVnYWN5TWVudSA9PSAndHJ1ZScgPyAnV2Vla2x5JyA6ICdXZWVrbHknfX08L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJidG5GaWxlV2Vla2xpZXNcIiBwVG9vbHRpcD1cInt7J2hlYWRlci53ZWVrbHkudG9vbHRpcCcgfCB0cmFuc2xhdGV9fVwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtuZ0NsYXNzXT1cInIudXJsLnJlcGxhY2UoJy8nLCAnJykuaW5jbHVkZXMoJ3dlZWtsaWVzJykgPyAnaGVhZGVyLWJ1dHRvbicgOiAnJ1wiICpuZ0lmPVwibHMuaXNDbGFpbWFudCgpICYmIGxlZ2FjeU1lbnUgPT0gJ3RydWUnICYmIHV0aWwuaXNTdGF0ZSgnTUUnKVwiIChjbGljayk9XCJvcGVuV2Vla2xpZXMoKVwiPnt7bGVnYWN5TWVudSA9PSAndHJ1ZScgPyAnV2Vla2x5IENsYWltJyA6ICdXZWVrbHknfX08L2lvbi1idXR0b24+XHJcbiAgICAgICAgXHJcbiAgICAgICBcclxuICAgICAgICA8aW9uLWJ1dHRvbiBwVG9vbHRpcD1cIkhpc3RvcnlcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJyLnVybC5yZXBsYWNlKCcvJywgJycpID09ICdoaXN0b3J5JyA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJscy5pc0NsYWltYW50KCkgJiYgbGVnYWN5TWVudSA9PSAnZmFsc2UnICYmIGludGVyaW1Ib21lUGFnZSA9PSAnZmFsc2UnXCIgKGNsaWNrKT1cIm9wZW5QYWdlKCdjcCcsICdoaXN0b3J5JylcIiBjbGFzcz1cImhpZGUteHMgaGlkZS1tZFwiPkhpc3Rvcnk8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgIDxpb24tYnV0dG9uIGlkPVwiYnRuQXVkaXRFbXBsb3llckRhc2hib2FyZFwiIHBUb29sdGlwPVwiRW1wbG95ZXJEYXNoYm9hcmRcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJyLnVybC5yZXBsYWNlKCcvJywgJycpLmluY2x1ZGVzKCdlbXBsb3llci1kYXNoYm9hcmQnKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJscy5pc0VtcGxveWVyKClcIiAoY2xpY2spPVwib3BlbkVtcGxveWVyRGFzaGJvYXJkKClcIj5BdWRpdCBEYXNoYm9hcmQ8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJidG5BdWRpdE15UVwiIHBUb29sdGlwPVwiTXlRXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKS5pbmNsdWRlcygnbXlxJykgPyAnaGVhZGVyLWJ1dHRvbicgOiAnJ1wiICpuZ0lmPVwidGhpcy5jb250ZXh0PT0nYXVkaXQnICYmIChscy5pc1RheEF1ZGl0U3VwZXJ2aXNvcigpIHx8IGxzLmlzVGF4QXVkaXRBdWRpdG9yKCkgfHwgbHMuaXNUYXhBdWRpdERpcmVjdG9yKCkgfHwgbHMuaXNUYXhBdWRpdERpcmVjdG9yKCkpXCIgKGNsaWNrKT1cIm9wZW5TdXBlcnZpc29yTXlRKClcIj5NeVE8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJidG5BdWRpdERhc2hib2FyZFwiIHBUb29sdGlwPVwiRGFzaGJvYXJkXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKS5pbmNsdWRlcygnZGFzaGJvYXJkJykgPyAnaGVhZGVyLWJ1dHRvbicgOiAnJ1wiICpuZ0lmPVwidGhpcy5jb250ZXh0PT0nYXVkaXQnICYmIChscy5pc1RheEF1ZGl0U3VwZXJ2aXNvcigpfHwgbHMuaXNUYXhBdWRpdERpcmVjdG9yKCkpXCIgKGNsaWNrKT1cIm9wZW5BdWRpdERhc2hib2FyZCgpXCI+RGFzaGJvYXJkPC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIGlkPVwiYnRuQXVkaXRXb3JrTGlzdFwiIHBUb29sdGlwPVwiV29ya0xpc3RcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJyLnVybC5yZXBsYWNlKCcvJywgJycpLmluY2x1ZGVzKCdhdWRpdG9yLXdvcmstbGlzdCcpID8gJ2hlYWRlci1idXR0b24nIDogJydcIiAqbmdJZj1cInRoaXMuY29udGV4dD09J2F1ZGl0JyAmJiBscy5pc1RheEF1ZGl0QXVkaXRvcigpXCIgKGNsaWNrKT1cIm9wZW5BdWRpdG9yV29ya0xpc3QoKVwiPldvcmsgTGlzdDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiBpZD1cImJ0bkF1ZGl0SW5xdWlyeVwiIHBUb29sdGlwPVwiSW5xdWlyeVwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtuZ0NsYXNzXT1cInIudXJsLnJlcGxhY2UoJy8nLCAnJykuaW5jbHVkZXMoJ2lucXVpcnknKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJ0aGlzLmNvbnRleHQ9PSdhdWRpdCcgJiYgKGxzLmlzVGF4QXVkaXRTdXBlcnZpc29yKCkgfHwgbHMuaXNUYXhBdWRpdEF1ZGl0b3IoKSB8fCBscy5pc1RheEF1ZGl0RGlyZWN0b3IoKSkgfHwgIGxzLmhhc1JvbGUoJ3RheGF1ZGl0YWdlbmN5c3RhZmYnKVwiIChjbGljayk9XCJvcGVuU3VwZXJ2aXNvcklucXVpcnkoKVwiPklucXVpcnk8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJidG5BdWRpdFVwbG9hZERvY3VtZW50c1wiIHBUb29sdGlwPVwiVXBsb2FkIERvY3VtZW50c1wiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtuZ0NsYXNzXT1cInIudXJsLnJlcGxhY2UoJy8nLCAnJykuaW5jbHVkZXMoJ3VwbG9hZC1kb2N1bWVudHMnKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJ0aGlzLmNvbnRleHQ9PSdhdWRpdCcgJiYgbHMuaXNFbXBsb3llcigpXCIgKGNsaWNrKT1cIm9wZW5VcGxvYWREb2N1bWVudHMoKVwiIFtkaXNhYmxlZF09XCIhaXNFbXBsb3llckxvYWRlZFwiPlVwbG9hZCBEb2N1bWVudHM8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJidG5BdWRpdFF1ZXN0aW9ubmFpcmVcIiBwVG9vbHRpcD1cIlF1ZXN0aW9ubmFpcmVcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbbmdDbGFzc109XCJyLnVybC5yZXBsYWNlKCcvJywgJycpLmluY2x1ZGVzKCdhdWRpdG9yLXF1ZXN0aW9ubmFpcmUnKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJ0aGlzLmNvbnRleHQ9PSdhdWRpdCcgJiYgKGxzLmlzVGF4QXVkaXRBdWRpdG9yKCkpXCIgKGNsaWNrKT1cIm9wZW5RdWVzdGlvbm5haXJlKClcIj5RdWVzdGlvbm5haXJlPC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIGlkPVwiYnRuQXVkaXRRdWVzdGlvbm5haXJlXCIgcFRvb2x0aXA9XCJRdWVzdGlvbm5haXJlXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKS5pbmNsdWRlcygnYXVkaXRvci1xdWVzdGlvbm5haXJlJykgPyAnaGVhZGVyLWJ1dHRvbicgOiAnJ1wiICpuZ0lmPVwidGhpcy5jb250ZXh0PT0nYXVkaXQnICYmIChscy5pc0VtcGxveWVyKCkpXCIgKGNsaWNrKT1cIm9wZW5RdWVzdGlvbm5haXJlKClcIiBbZGlzYWJsZWRdPVwiIWlzUXVlc3Rpb25uYWlyZURhdGFMb2FkZWRcIj5RdWVzdGlvbm5haXJlPC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIGlkPVwiYnRuQXVkaXRSZWZlcnJhbHNcIiBwVG9vbHRpcD1cIlJlZmVycmFsc1wiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtuZ0NsYXNzXT1cInIudXJsLnJlcGxhY2UoJy8nLCAnJykuaW5jbHVkZXMoJ3JlZmVycmFscycpID8gJ2hlYWRlci1idXR0b24nIDogJydcIiAqbmdJZj1cInRoaXMuY29udGV4dD09J2F1ZGl0JyAmJiAobHMuaXNUYXhBdWRpdFN1cGVydmlzb3IoKSB8fCBscy5pc1RheEF1ZGl0QXVkaXRvcigpIHx8IGxzLmlzVGF4QXVkaXREaXJlY3RvcigpKSB8fCAgbHMuaGFzUm9sZSgndGF4YXVkaXRhZ2VuY3lzdGFmZicpXCIgKGNsaWNrKT1cIm9wZW5TdXBlcnZpc29yUmVmZXJyYWxzKClcIj5SZWZlcnJhbHM8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJidG5BdWRpdEFzc2lnblwiIHBUb29sdGlwPVwiQXNzaWduXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKS5pbmNsdWRlcygnYXNzaWduJykgPyAnaGVhZGVyLWJ1dHRvbicgOiAnJ1wiICpuZ0lmPVwidGhpcy5jb250ZXh0PT0nYXVkaXQnICYmIGxzLmlzVGF4QXVkaXRTdXBlcnZpc29yKClcIiAoY2xpY2spPVwib3BlblN1cGVydmlzb3JBc3NpZ24oKVwiPkFzc2lnbjwvaW9uLWJ1dHRvbj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiBpZD1cImJ0bkF1ZGl0VGVhbVwiIHBUb29sdGlwPVwiVGVhbVwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtuZ0NsYXNzXT1cInIudXJsLnJlcGxhY2UoJy8nLCAnJykuaW5jbHVkZXMoJ3RlYW0nKSA/ICdoZWFkZXItYnV0dG9uJyA6ICcnXCIgKm5nSWY9XCJ0aGlzLmNvbnRleHQ9PSdhdWRpdCcgJiYgbHMuaXNUYXhBdWRpdFN1cGVydmlzb3IoKVwiIChjbGljayk9XCJvcGVuU3VwZXJ2aXNvclRlYW0oKVwiPlRlYW08L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJidG5BdWRpdENvbmZpZ1wiIHBUb29sdGlwPVwiQ29uZmlnXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwici51cmwucmVwbGFjZSgnLycsICcnKS5pbmNsdWRlcygnY29uZmlnJykgPyAnaGVhZGVyLWJ1dHRvbicgOiAnJ1wiICpuZ0lmPVwidGhpcy5jb250ZXh0PT0nYXVkaXQnICYmIChscy5pc1RheEF1ZGl0U3VwZXJ2aXNvcigpIHx8IGxzLmlzVGF4QXVkaXREaXJlY3RvcigpKVwiIChjbGljayk9XCJvcGVuU3VwZXJ2aXNvckNvbmZpZygpXCI+Q29uZmlnPC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIGlkPVwiYnRuQXVkaXRBbmFseXRpY3NcIiBwVG9vbHRpcD1cIkFuYWx5dGljc1wiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtuZ0NsYXNzXT1cInIudXJsLnJlcGxhY2UoJy8nLCAnJykuaW5jbHVkZXMoJ2FuYWx5dGljcycpID8gJ2hlYWRlci1idXR0b24nIDogJydcIiAqbmdJZj1cInRoaXMuY29udGV4dD09J2F1ZGl0JyAmJiAobHMuaXNUYXhBdWRpdFN1cGVydmlzb3IoKSB8fCBscy5pc1RheEF1ZGl0QXVkaXRvcigpIHx8IGxzLmlzVGF4QXVkaXREaXJlY3RvcigpKVwiIChjbGljayk9XCJvcGVuU3VwZXJ2aXNvckFuYWx5dGljcygpXCI+QW5hbHl0aWNzPC9pb24tYnV0dG9uPlxyXG5cclxuXHJcbiAgICA8L2lvbi1idXR0b25zPlxyXG5cclxuICAgIFxyXG4gICAgPGRpdiBjbGFzcz1cInRvb2xiYXItY29udGVudCBoaWRlLXhzXCIgKm5nSWY9XCJscy5pc0xvZ2dlZEluKCkgJiYgbHMuaXNDc3IoKSAmJiB0aGlzLmNvbnRleHQgIT0nYXVkaXQnICYmIGNvbnRleHRSb290ID09PSdzcydcIj5cclxuICAgICAgICA8cC1hdXRvQ29tcGxldGUgYXBwZW5kVG89XCJib2R5XCIgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0XCIgW3N1Z2dlc3Rpb25zXT1cInJlc3VsdHNcIlxyXG4gICAgICAgICAgICAoY29tcGxldGVNZXRob2QpPVwic2VhcmNoKCRldmVudClcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaCBDbGFpbWFudHNcIiAob25TZWxlY3QpPVwib25TZWxlY3RBY3Rpb24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIGVtcHR5TWVzc2FnZT1cIk5vIFJlc3VsdHMgRm91bmQuXCIgc2l6ZT1cIjI1XCI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtdXNlciBwVGVtcGxhdGU9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgICAgICA8aW9uLXJvdyBjbGFzcz1cIi5pb24td3JhcFwiID5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBzaXplLWF1dG8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tdGV4dD57e3VzZXIuZmlyc3ROYW1lIHwgcHJvcGVyQ2FzZX19IHt7dXNlci5sYXN0TmFtZSB8IHByb3BlckNhc2V9fTwvaW9uLXRleHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIHNpemUtYXV0bz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi10ZXh0Pnt7dXNlci51c2VySWR9fTwvaW9uLXRleHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIHNpemUtYXV0bz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi10ZXh0Pnt7dXRpbC5tYXNrU3NuKHVzZXIuc3NuKX19PC9pb24tdGV4dD5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9wLWF1dG9Db21wbGV0ZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJlbmRcIiAqbmdJZj1cImxzLmlzTG9nZ2VkSW4oKVwiID5cclxuICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwicHJlc2VudE15UHJvZmlsZVBvcG92ZXIoJGV2ZW50KVwiIHBUb29sdGlwPVwiQWNjb3VudFwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtuZ0NsYXNzXT1cImxlZ2FjeU1lbnUgPT0gJ2ZhbHNlJyAmJiBscy5pc0NsYWltYW50KCkgJiYgc2hvd1Byb2ZpbGVQb3B1cCA/ICdoaWRlLXhzIGhpZGUtbWQgaGVhZGVyLWJ1dHRvbicgOiAobGVnYWN5TWVudSA9PSAnZmFsc2UnICYmIGxzLmlzQ2xhaW1hbnQoKSA/ICdoaWRlLXhzIGhpZGUtbWQnIDogJycpXCI+XHJcbiAgICAgICAgICAgIDxpb24tdGl0bGUgc3R5bGU9XCJmb250LXNpemU6IDIwcHg7IHBhZGRpbmc6IDBweDtcIiBjbGFzcz1cImhpZGUteHNcIj57e2xzLmdldEZ1bGxOYW1lKCkgfCBwcm9wZXJDYXNlfX08L2lvbi10aXRsZT5cclxuICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJlbmRcIiBuYW1lPVwicGVyc29uLWNpcmNsZS1vdXRsaW5lXCI+PC9pb24taWNvbj5cclxuICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cIm9wZW5QYWdlKCdjcCcsICdkb2N1bWVudHMnKVwiIHBUb29sdGlwPVwiTm90aWNlc1wiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiICpuZ0lmPVwiIWxzLmlzQ3NyKCkgJiYgbGVnYWN5TWVudSA9PSAnZmFsc2UnICYmICF1dGlsLmlzU3RhdGUoJ01FJylcIiBbbmdDbGFzc109XCJyLnVybC5yZXBsYWNlKCcvJywgJycpID09ICdkb2N1bWVudHMnID8gJ2hlYWRlci1idXR0b24gaGlkZS14cyBoaWRlLW1kJyA6ICdoaWRlLXhzIGhpZGUtbWQnXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPSdwaSBwaS1maWxlIGZvbnQtYm9sZCcgc3R5bGU9XCJmb250LXNpemU6IDEuM3JlbTsgIGZvbnQtd2VpZ2h0OiA1MDAgIWltcG9ydGFudDtcIj48L2k+XHJcbiAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJvcGVuUGFnZSgnY3AnLCAnZG9jdW1lbnRzJylcIiBwVG9vbHRpcD1cIk5vdGljZXNcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiAqbmdJZj1cIiFscy5pc0NzcigpICYmIGxlZ2FjeU1lbnUgPT0gJ3RydWUnXCI+XHJcbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiZG9jdW1lbnQtdGV4dC1vdXRsaW5lXCI+PC9pb24taWNvbj5cclxuICAgICAgICA8L2lvbi1idXR0b24+XHJcblxyXG4gICAgICAgIFxyXG4gICAgICAgIDwhLS0gPGlvbi1idXR0b24gKGNsaWNrKT1cInByZXNlbnRKb2JTZWFyY2hSZXN1bHRQb3B1cCgpXCIgcFRvb2x0aXA9XCJTaG93IGpvYiBzZWFyY2ggcmVzdWx0XCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW25nQ2xhc3NdPVwibGVnYWN5TWVudSA9PSAnZmFsc2UnICYmIGxzLmlzQ2xhaW1hbnQoKSA/ICdoaWRlLXhzIGhpZGUtbWQnIDogJydcIiAqbmdJZj1cImxzLmlzQ2xhaW1hbnQoKSAmJiBsZWdhY3lNZW51ID09ICdmYWxzZScgJiYgdXRpbC5pc1N0YXRlKCdNUycpXCI+XHJcbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiYnJpZWZjYXNlXCIgZmlsbD1cIm91dGxpbmVcIj48L2lvbi1pY29uPlxyXG4gICAgICAgIDwvaW9uLWJ1dHRvbj4gLS0+XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cInByZXNlbnRNeU5vdGlmaWNhdGlvblBvcG92ZXIoJGV2ZW50KVwiIHBUb29sdGlwPVwiTm90aWZpY2F0aW9uXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCJcclxuICAgICAgICAgICAgKm5nSWY9XCIhbnMuc2hvd05vdGlmaWNhdGlvbkxvYWRlciAmJiAhdXRpbC5pc1N0YXRlKCdNRScpXCIgW25nQ2xhc3NdPVwibGVnYWN5TWVudSA9PSAnZmFsc2UnICYmIGxzLmlzQ2xhaW1hbnQoKSA/ICdoaWRlLXhzIGhpZGUtbWQnIDogJydcIj5cclxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJub3RpZmljYXRpb25zLW91dGxpbmVcIj48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICA8aW9uLWJhZGdlIGNvbG9yPVwiZGFya1wiICpuZ0lmPVwibnMubm90aWZpY2F0aW9uQ291bnQuZ2V0VmFsdWUoKSA+IDBcIj5cclxuICAgICAgICAgICAgICAgIDxpb24tbGFiZWw+e3tucy5ub3RpZmljYXRpb25Db3VudC5nZXRWYWx1ZSgpfX08L2lvbi1sYWJlbD5cclxuICAgICAgICAgICAgPC9pb24tYmFkZ2U+XHJcbiAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiY3Jlc2NlbnRcIiAqbmdJZj1cIm5zLnNob3dOb3RpZmljYXRpb25Mb2FkZXJcIj48L2lvbi1zcGlubmVyPlxyXG5cclxuICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwidGhpcy5ocy5zaG93KClcIiBwVG9vbHRpcD1cIkhlbHBcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiAqbmdJZj1cImxzLmlzQ2xhaW1hbnQoKSAmJiBsZWdhY3lNZW51ID09ICdmYWxzZScgJiYgKGhzLnNob3VsZERpc3BsYXlIZWxwQnV0dG9uKCkgfCBhc3luYylcIj5cclxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJoZWxwLWNpcmNsZS1vdXRsaW5lXCI+PC9pb24taWNvbj5cclxuICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICA8L2lvbi1idXR0b25zPlxyXG5cclxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwic2Vjb25kYXJ5XCIgKm5nSWY9XCIhbHMuaXNMb2dnZWRJbigpICYmIGxzLmdldFVzZXIoKVwiPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJsb2dvdXQoKVwiIHBUb29sdGlwPVwiTG9nb3V0XCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCI+XHJcbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwibG9nLW91dC1zaGFycFwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgPC9pb24tYnV0dG9ucz5cclxuXHJcbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiICpuZ0lmPVwic2hvd0xhbmd1YWdlT3B0aW9uID09PSAndHJ1ZScgJiYgKCFscy5nZXRVc2VyKCkgJiYgbGVnYWN5TWVudSA9PSAnZmFsc2UnKVwiPlxyXG4gICAgICAgIDxwLW1lbnUgI21lbnUgW3BvcHVwXT1cInRydWVcIiBbbW9kZWxdPVwiaXRlbXNcIiBhcHBlbmRUbz1cImJvZHlcIj48L3AtbWVudT5cclxuICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwibWVudS50b2dnbGUoJGV2ZW50KVwiIHBUb29sdGlwPVwiTGFuZ3VhZ2VcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIj5cclxuICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwibGFuZ3VhZ2VcIiBzbG90PVwiZW5kXCI+PC9pb24taWNvbj5cclxuICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgIDwvaW9uLWJ1dHRvbnM+XHJcblxyXG48L2lvbi10b29sYmFyPlxyXG48aW9uLXRvb2xiYXIgY29sb3I9XCJsaWdodFwiIGlkPVwic2Vjb25kVG9vbGJhclwiICpuZ0lmPVwic2Vjb25kVG9vbGJhclwiPlxyXG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiPlxyXG4gICAgICAgIDxpb24tYmFjay1idXR0b24gcFRvb2x0aXA9XCJCYWNrXCIgYWx0PVwiQmFja1wiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtkZWZhdWx0SHJlZl09XCJiYWNrUGFnZSA/IGJhY2tQYWdlIDogJy93ZWxjb21lJ1wiPjwvaW9uLWJhY2stYnV0dG9uPlxyXG4gICAgICAgIDxpb24tdGl0bGUgY29sb3I9XCJwcmltYXJ5XCIgKm5nSWY9XCJ0aXRsZVwiIHN0eWxlPVwiZm9udC1zaXplOiAxOHB4XCI+e3t0aXRsZX19PC9pb24tdGl0bGU+XHJcbiAgICA8L2lvbi1idXR0b25zPlxyXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJlbmRcIj5cclxuICAgICAgICA8aW9uLXRpdGxlIGNvbG9yPVwicHJpbWFyeVwiIHN0eWxlPVwiZm9udC1zaXplOiB4eC1zbWFsbDsgZmxvYXQ6IHJpZ2h0OyBwYWRkaW5nLXJpZ2h0OiA4cHg7XCIgKm5nSWY9XCJwYWdlSWRcIj5cclxuICAgICAgICAgICAge3twYWdlSWR9fTwvaW9uLXRpdGxlPlxyXG4gICAgPC9pb24tYnV0dG9ucz5cclxuPC9pb24tdG9vbGJhcj5cclxuPHAtdG9hc3Q+XHJcbiAgICA8bmctdGVtcGxhdGUgbGV0LW1lc3NhZ2UgcFRlbXBsYXRlPVwibWVzc2FnZVwiPlxyXG4gICAgICAgIDxpICpuZ0lmPVwibWVzc2FnZS5zZXZlcml0eSA9PT0gJ2Vycm9yJ1wiIGNsYXNzPVwicGkgcGktdGltZXMtY2lyY2xlXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDE0cHg7IGZvbnQtc2l6ZTogMzhweCBcIj48L2k+XHJcbiAgICAgICAgPGkgKm5nSWY9XCJtZXNzYWdlLnNldmVyaXR5ID09PSAnc3VjY2VzcydcIiBjbGFzcz1cInBpIHBpLWNoZWNrLWNpcmNsZVwiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAxNHB4OyBmb250LXNpemU6IDM4cHggXCI+PC9pPlxyXG4gICAgICAgIDxpICpuZ0lmPVwibWVzc2FnZS5zZXZlcml0eSA9PT0gJ3dhcm4nXCIgY2xhc3M9XCJwaSBwaS1leGNsYW1hdGlvbi1jaXJjbGVcInN0eWxlPVwibWFyZ2luLXJpZ2h0OiAxNHB4OyBmb250LXNpemU6IDM4cHggXCI+PC9pPlxyXG4gICAgICAgIDxpICpuZ0lmPVwibWVzc2FnZS5zZXZlcml0eSA9PT0gJ2luZm8nXCIgY2xhc3M9XCJwaSBwaS1pbmZvLWNpcmNsZVwiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAxNHB4OyBmb250LXNpemU6IDM4cHggXCI+PC9pPlxyXG5cclxuICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiJzxzdHJvbmcgc3R5bGU9XFwnZm9udC1zaXplOiAyMnB4O2ZvbnQtd2VpZ2h0OiBib2xkO1xcJz4nICsgbWVzc2FnZS5zdW1tYXJ5ICsgJzwvc3Ryb25nPjxicj48YnI+JyArIFxyXG4gICAgICAgICAgICAnPHNwYW4gc3R5bGU9XFwnZm9udC1zaXplOiAxOHB4O1xcJz4nICsgbWVzc2FnZS5kZXRhaWwgKyAnPC9zcGFuPidcIj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L3AtdG9hc3Q+XHJcblxyXG48bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1Byb2ZpbGVQb3B1cFwiPlxyXG4gICAgPGFwcC1wcm9maWxlICpuZ0lmPVwic2hvd1Byb2ZpbGVQb3B1cFwiIChvbkNhbmNlbCk9XCJzaG93UHJvZmlsZVBvcHVwID0gIXNob3dQcm9maWxlUG9wdXBcIj48L2FwcC1wcm9maWxlPlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxhcHAtam9iLXNlYXJjaC1yZXN1bHQtcGFnZSAqbmdJZj1cInNob3dqb2JTZWFyY2hSZXN1bHRQb3B1cFwiIChvbkNhbmNlbCk9XCJzaG93am9iU2VhcmNoUmVzdWx0UG9wdXAgPSAhc2hvd2pvYlNlYXJjaFJlc3VsdFBvcHVwXCI+PC9hcHAtam9iLXNlYXJjaC1yZXN1bHQtcGFnZT5cclxuXHJcblxyXG5cclxuIl19
@@ -50,4 +50,4 @@ export class BaseService {
50
50
  return this.httpClient.put(this.getUrl(url), body, options != null ? options : this.options);
51
51
  }
52
52
  }
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJldXNhLWFwcC1saWIvc3JjL2xpYi9zZXJ2aWNlcy9iYXNlLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBMEIsTUFBTSxzQkFBc0IsQ0FBQztBQUczRSxNQUFNLE9BQWdCLFdBQVc7SUFpQjdCLFlBQW9CLFVBQXVCO1FBQXZCLGVBQVUsR0FBVixVQUFVLENBQWE7UUFQbkMsWUFBTyxHQUFHO1lBQ2QsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDO2dCQUNyQixjQUFjLEVBQUUsa0JBQWtCO2dCQUNsQyxRQUFRLEVBQUUsa0JBQWtCO2FBQy9CLENBQUM7U0FDTCxDQUFBO1FBR0csSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsaUJBQWlCO1FBQ2IsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQy9CLENBQUM7SUFFRCxjQUFjO1FBQ1YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFFRCxrQkFBa0I7UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELGNBQWM7UUFDVixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQVVELE1BQU0sQ0FBQyxRQUFpQjtRQUNwQixPQUFPLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBRyxHQUFHLFFBQVEsQ0FBQztJQUNuSCxDQUFDO0lBRUQsR0FBRyxDQUFJLEdBQVcsRUFBRSxPQVduQjtRQUNDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQVcsRUFBRSxPQVdwQjtRQUNHLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFDLEdBQUcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUMsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFRCxJQUFJLENBQUksR0FBVyxFQUFFLElBQWdCLEVBQUUsT0FXcEMsRUFBRSxXQUFxQjtRQUN4QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuSCxDQUFDO0lBRUQsWUFBWSxDQUFJLEdBQVcsRUFBRSxJQUFnQixFQUFFLE9BVzlDO1FBQ0MsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsTUFBTSxDQUFJLEdBQVcsRUFBRSxPQVd0QjtRQUNDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRUQsS0FBSyxDQUFJLEdBQVcsRUFBRSxJQUFnQixFQUFFLE9BV3ZDO1FBQ0csT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwRyxDQUFDO0lBRUQsR0FBRyxDQUFJLEdBQVcsRUFBRSxJQUFnQixFQUFFLE9BV3ZDO1FBQ0csT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsRyxDQUFDO0NBQ04iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwSGVhZGVycywgSHR0cFBhcmFtcywgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VTZXJ2aWNlIHtcblxuICAgIHB1YmxpYyBzZXJ2aWNlQ29udGV4dDogc3RyaW5nO1xuXG4gICAgcHVibGljIHNlcnZpY2VQb3J0OiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgcHJvdG9jb2w6IHN0cmluZztcblxuICAgIHB1YmxpYyBob3N0OiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIG9wdGlvbnMgPSB7XG4gICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgXCJBY2NlcHRcIjogJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwQ2xpZW50IDogSHR0cENsaWVudCl7XG4gICAgICAgIHRoaXMuc2V0U2VydmljZUNvbnRleHQoKTtcbiAgICAgICAgdGhpcy5zZXRTZXJ2aWNlSG9zdCgpO1xuICAgICAgICB0aGlzLnNldFNlcnZpY2VQb3J0KCk7XG4gICAgICAgIHRoaXMuc2V0U2VydmljZVByb3RvY29sKCk7XG4gICAgfVxuXG4gICAgZ2V0U2VydmljZUNvbnRleHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VDb250ZXh0O1xuICAgIH1cblxuICAgIGdldFNlcnZpY2VQb3J0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlUG9ydDtcbiAgICB9XG5cbiAgICBnZXRTZXJ2aWNlUHJvdG9jb2woKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3RvY29sO1xuICAgIH1cblxuICAgIGdldFNlcnZpY2VIb3N0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3N0O1xuICAgIH1cblxuICAgIGFic3RyYWN0IHNldFNlcnZpY2VDb250ZXh0KCk7XG5cbiAgICBhYnN0cmFjdCBzZXRTZXJ2aWNlUG9ydCgpO1xuXG4gICAgYWJzdHJhY3Qgc2V0U2VydmljZVByb3RvY29sKCk7XG5cbiAgICBhYnN0cmFjdCBzZXRTZXJ2aWNlSG9zdCgpO1xuXG4gICAgZ2V0VXJsKGVuZFBvaW50IDogc3RyaW5nKXtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdG9jb2wgKyAnOi8vJyArIHRoaXMuaG9zdCArIFwiOlwiICsgdGhpcy5zZXJ2aWNlUG9ydCArIFwiL1wiICsgdGhpcy5zZXJ2aWNlQ29udGV4dCArIFwiL1wiICsgZW5kUG9pbnQ7XG4gICAgfVxuXG4gICAgZ2V0PFQ+KHVybDogc3RyaW5nLCBvcHRpb25zPzoge1xuICAgICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7XG4gICAgICAgICAgICBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgICAgICAgfTtcbiAgICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgICAgcGFyYW1zPzogSHR0cFBhcmFtcyB8IHtcbiAgICAgICAgICAgIFtwYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgICAgIH07XG4gICAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgIH0pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PFQ+KHRoaXMuZ2V0VXJsKHVybCksIG9wdGlvbnMgIT0gbnVsbCA/IG9wdGlvbnMgOiB0aGlzLm9wdGlvbnMpO1xuICAgIH1cblxuICAgIGdldEJsb2IodXJsOiBzdHJpbmcsIG9wdGlvbnM/OntcbiAgICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1xuICAgICAgICAgICAgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgICAgIH07XG4gICAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICAgIHBhcmFtcz86IEh0dHBQYXJhbXMgfCB7XG4gICAgICAgICAgICBbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgICAgICB9O1xuICAgICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICAgIHJlc3BvbnNlVHlwZT86ICdibG9iJztcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICB9KTogT2JzZXJ2YWJsZTxCbG9iPntcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQodGhpcy5nZXRVcmwodXJsKSwgey4uLm9wdGlvbnMsIHJlc3BvbnNlVHlwZTogJ2Jsb2InfSk7XG4gICAgfVxuXG4gICAgcG9zdDxUPih1cmw6IHN0cmluZywgYm9keTogYW55IHwgbnVsbCwgb3B0aW9ucz86IHtcbiAgICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1xuICAgICAgICAgICAgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgICAgIH07XG4gICAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICAgIHBhcmFtcz86IEh0dHBQYXJhbXMgfCB7XG4gICAgICAgICAgICBbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgICAgICB9O1xuICAgICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICAgIH0sIHNlcnZpY2VOYW1lPyA6IHN0cmluZyk6IE9ic2VydmFibGU8VD4ge1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PFQ+KHRoaXMuZ2V0VXJsKHVybCksIEpTT04uc3RyaW5naWZ5KGJvZHkpLCBvcHRpb25zICE9IG51bGwgPyBvcHRpb25zIDogdGhpcy5vcHRpb25zKTtcbiAgICB9XG4gIFxuICAgIHBvc3RGb3JtRGF0YTxUPih1cmw6IHN0cmluZywgYm9keTogYW55IHwgbnVsbCwgb3B0aW9ucz86IHtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtcbiAgICAgICAgICBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgICAgIH07XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcGFyYW1zPzogSHR0cFBhcmFtcyB8IHtcbiAgICAgICAgICBbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgICAgfTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgfSk6IE9ic2VydmFibGU8VD4ge1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PFQ+KHRoaXMuZ2V0VXJsKHVybCksIGJvZHksIG9wdGlvbnMpO1xuICAgIH1cbiAgXG4gICAgZGVsZXRlPFQ+KHVybDogc3RyaW5nLCBvcHRpb25zPzoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1xuICAgICAgICAgIFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgICAgfTtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICBwYXJhbXM/OiBIdHRwUGFyYW1zIHwge1xuICAgICAgICAgIFtwYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgICB9O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICB9KTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmRlbGV0ZTxUPih0aGlzLmdldFVybCh1cmwpLCBvcHRpb25zICE9IG51bGwgPyBvcHRpb25zIDogdGhpcy5vcHRpb25zKTtcbiAgICB9XG5cbiAgICBwYXRjaDxUPih1cmw6IHN0cmluZywgYm9keTogYW55IHwgbnVsbCwgb3B0aW9ucz86IHtcbiAgICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1xuICAgICAgICAgICAgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgICAgIH07XG4gICAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICAgIHBhcmFtcz86IEh0dHBQYXJhbXMgfCB7XG4gICAgICAgICAgICBbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgICAgICB9O1xuICAgICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICB9KTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucGF0Y2g8VD4odGhpcy5nZXRVcmwodXJsKSwgYm9keSwgb3B0aW9ucyAhPSBudWxsID8gb3B0aW9ucyA6IHRoaXMub3B0aW9ucyk7XG4gICAgICB9XG5cbiAgICAgIHB1dDxUPih1cmw6IHN0cmluZywgYm9keTogYW55IHwgbnVsbCwgb3B0aW9ucz86IHtcbiAgICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1xuICAgICAgICAgICAgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgICAgIH07XG4gICAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICAgIHBhcmFtcz86IEh0dHBQYXJhbXMgfCB7XG4gICAgICAgICAgICBbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgICAgICB9O1xuICAgICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICB9KTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucHV0PFQ+KHRoaXMuZ2V0VXJsKHVybCksIGJvZHksIG9wdGlvbnMgIT0gbnVsbCA/IG9wdGlvbnMgOiB0aGlzLm9wdGlvbnMpO1xuICAgICAgfSAgXG59Il19
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJldXNhLWFwcC1saWIvc3JjL2xpYi9zZXJ2aWNlcy9iYXNlLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBMEIsTUFBTSxzQkFBc0IsQ0FBQztBQUczRSxNQUFNLE9BQWdCLFdBQVc7SUFpQjdCLFlBQW9CLFVBQXVCO1FBQXZCLGVBQVUsR0FBVixVQUFVLENBQWE7UUFQbkMsWUFBTyxHQUFHO1lBQ2QsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDO2dCQUNyQixjQUFjLEVBQUUsa0JBQWtCO2dCQUNsQyxRQUFRLEVBQUUsa0JBQWtCO2FBQy9CLENBQUM7U0FDTCxDQUFBO1FBR0csSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsaUJBQWlCO1FBQ2IsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQy9CLENBQUM7SUFFRCxjQUFjO1FBQ1YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFFRCxrQkFBa0I7UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELGNBQWM7UUFDVixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQVVELE1BQU0sQ0FBQyxRQUFpQjtRQUNwQixPQUFPLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBRyxHQUFHLFFBQVEsQ0FBQztJQUNuSCxDQUFDO0lBRUQsR0FBRyxDQUFJLEdBQVcsRUFBRSxPQVduQjtRQUNDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQVcsRUFBRSxPQVdwQjtRQUNHLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFDLEdBQUcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUMsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFRCxJQUFJLENBQUksR0FBVyxFQUFFLElBQWdCLEVBQUUsT0FXcEMsRUFBRSxXQUFxQjtRQUN4QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuSCxDQUFDO0lBRUQsWUFBWSxDQUFJLEdBQVcsRUFBRSxJQUFnQixFQUFFLE9BVzlDO1FBQ0MsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsTUFBTSxDQUFJLEdBQVcsRUFBRSxPQVl0QjtRQUNDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRUQsS0FBSyxDQUFJLEdBQVcsRUFBRSxJQUFnQixFQUFFLE9BV3ZDO1FBQ0csT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwRyxDQUFDO0lBRUQsR0FBRyxDQUFJLEdBQVcsRUFBRSxJQUFnQixFQUFFLE9BV3ZDO1FBQ0csT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsRyxDQUFDO0NBQ04iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwSGVhZGVycywgSHR0cFBhcmFtcywgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VTZXJ2aWNlIHtcblxuICAgIHB1YmxpYyBzZXJ2aWNlQ29udGV4dDogc3RyaW5nO1xuXG4gICAgcHVibGljIHNlcnZpY2VQb3J0OiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgcHJvdG9jb2w6IHN0cmluZztcblxuICAgIHB1YmxpYyBob3N0OiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIG9wdGlvbnMgPSB7XG4gICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgXCJBY2NlcHRcIjogJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwQ2xpZW50IDogSHR0cENsaWVudCl7XG4gICAgICAgIHRoaXMuc2V0U2VydmljZUNvbnRleHQoKTtcbiAgICAgICAgdGhpcy5zZXRTZXJ2aWNlSG9zdCgpO1xuICAgICAgICB0aGlzLnNldFNlcnZpY2VQb3J0KCk7XG4gICAgICAgIHRoaXMuc2V0U2VydmljZVByb3RvY29sKCk7XG4gICAgfVxuXG4gICAgZ2V0U2VydmljZUNvbnRleHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VDb250ZXh0O1xuICAgIH1cblxuICAgIGdldFNlcnZpY2VQb3J0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlUG9ydDtcbiAgICB9XG5cbiAgICBnZXRTZXJ2aWNlUHJvdG9jb2woKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3RvY29sO1xuICAgIH1cblxuICAgIGdldFNlcnZpY2VIb3N0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3N0O1xuICAgIH1cblxuICAgIGFic3RyYWN0IHNldFNlcnZpY2VDb250ZXh0KCk7XG5cbiAgICBhYnN0cmFjdCBzZXRTZXJ2aWNlUG9ydCgpO1xuXG4gICAgYWJzdHJhY3Qgc2V0U2VydmljZVByb3RvY29sKCk7XG5cbiAgICBhYnN0cmFjdCBzZXRTZXJ2aWNlSG9zdCgpO1xuXG4gICAgZ2V0VXJsKGVuZFBvaW50IDogc3RyaW5nKXtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdG9jb2wgKyAnOi8vJyArIHRoaXMuaG9zdCArIFwiOlwiICsgdGhpcy5zZXJ2aWNlUG9ydCArIFwiL1wiICsgdGhpcy5zZXJ2aWNlQ29udGV4dCArIFwiL1wiICsgZW5kUG9pbnQ7XG4gICAgfVxuXG4gICAgZ2V0PFQ+KHVybDogc3RyaW5nLCBvcHRpb25zPzoge1xuICAgICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7XG4gICAgICAgICAgICBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgICAgICAgfTtcbiAgICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgICAgcGFyYW1zPzogSHR0cFBhcmFtcyB8IHtcbiAgICAgICAgICAgIFtwYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgICAgIH07XG4gICAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgIH0pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PFQ+KHRoaXMuZ2V0VXJsKHVybCksIG9wdGlvbnMgIT0gbnVsbCA/IG9wdGlvbnMgOiB0aGlzLm9wdGlvbnMpO1xuICAgIH1cblxuICAgIGdldEJsb2IodXJsOiBzdHJpbmcsIG9wdGlvbnM/OntcbiAgICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1xuICAgICAgICAgICAgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgICAgIH07XG4gICAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICAgIHBhcmFtcz86IEh0dHBQYXJhbXMgfCB7XG4gICAgICAgICAgICBbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgICAgICB9O1xuICAgICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICAgIHJlc3BvbnNlVHlwZT86ICdibG9iJztcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICB9KTogT2JzZXJ2YWJsZTxCbG9iPntcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQodGhpcy5nZXRVcmwodXJsKSwgey4uLm9wdGlvbnMsIHJlc3BvbnNlVHlwZTogJ2Jsb2InfSk7XG4gICAgfVxuXG4gICAgcG9zdDxUPih1cmw6IHN0cmluZywgYm9keTogYW55IHwgbnVsbCwgb3B0aW9ucz86IHtcbiAgICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1xuICAgICAgICAgICAgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgICAgIH07XG4gICAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICAgIHBhcmFtcz86IEh0dHBQYXJhbXMgfCB7XG4gICAgICAgICAgICBbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgICAgICB9O1xuICAgICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICAgIH0sIHNlcnZpY2VOYW1lPyA6IHN0cmluZyk6IE9ic2VydmFibGU8VD4ge1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PFQ+KHRoaXMuZ2V0VXJsKHVybCksIEpTT04uc3RyaW5naWZ5KGJvZHkpLCBvcHRpb25zICE9IG51bGwgPyBvcHRpb25zIDogdGhpcy5vcHRpb25zKTtcbiAgICB9XG4gIFxuICAgIHBvc3RGb3JtRGF0YTxUPih1cmw6IHN0cmluZywgYm9keTogYW55IHwgbnVsbCwgb3B0aW9ucz86IHtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtcbiAgICAgICAgICBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgICAgIH07XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcGFyYW1zPzogSHR0cFBhcmFtcyB8IHtcbiAgICAgICAgICBbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgICAgfTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgfSk6IE9ic2VydmFibGU8VD4ge1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PFQ+KHRoaXMuZ2V0VXJsKHVybCksIGJvZHksIG9wdGlvbnMpO1xuICAgIH1cbiAgXG4gICAgZGVsZXRlPFQ+KHVybDogc3RyaW5nLCBvcHRpb25zPzoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1xuICAgICAgICAgIFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgICAgfTtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICBwYXJhbXM/OiBIdHRwUGFyYW1zIHwge1xuICAgICAgICAgIFtwYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgICB9O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICAgIGJvZHk/OiBhbnkgfCBudWxsO1xuICAgIH0pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZGVsZXRlPFQ+KHRoaXMuZ2V0VXJsKHVybCksIG9wdGlvbnMgIT0gbnVsbCA/IG9wdGlvbnMgOiB0aGlzLm9wdGlvbnMpO1xuICAgIH1cblxuICAgIHBhdGNoPFQ+KHVybDogc3RyaW5nLCBib2R5OiBhbnkgfCBudWxsLCBvcHRpb25zPzoge1xuICAgICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7XG4gICAgICAgICAgICBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgICAgICAgfTtcbiAgICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgICAgcGFyYW1zPzogSHR0cFBhcmFtcyB8IHtcbiAgICAgICAgICAgIFtwYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgICAgIH07XG4gICAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgIH0pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wYXRjaDxUPih0aGlzLmdldFVybCh1cmwpLCBib2R5LCBvcHRpb25zICE9IG51bGwgPyBvcHRpb25zIDogdGhpcy5vcHRpb25zKTtcbiAgICAgIH1cblxuICAgICAgcHV0PFQ+KHVybDogc3RyaW5nLCBib2R5OiBhbnkgfCBudWxsLCBvcHRpb25zPzoge1xuICAgICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7XG4gICAgICAgICAgICBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgICAgICAgfTtcbiAgICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgICAgcGFyYW1zPzogSHR0cFBhcmFtcyB8IHtcbiAgICAgICAgICAgIFtwYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgICAgIH07XG4gICAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgIH0pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wdXQ8VD4odGhpcy5nZXRVcmwodXJsKSwgYm9keSwgb3B0aW9ucyAhPSBudWxsID8gb3B0aW9ucyA6IHRoaXMub3B0aW9ucyk7XG4gICAgICB9ICBcbn0iXX0=