simpo-component-library 3.6.975 → 3.6.980

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.
@@ -514,15 +514,15 @@ export class ViewBlogComponent {
514
514
  anchors.forEach(anchor => this.tocObserver?.observe(anchor));
515
515
  }
516
516
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ViewBlogComponent, deps: [{ token: i1.EventsService }, { token: i2.RestService }, { token: i0.ElementRef }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component }); }
517
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ViewBlogComponent, isStandalone: true, selector: "simpo-view-blog", inputs: { responseData: "responseData" }, usesOnChanges: true, ngImport: i0, template: "<section class=\"main-section\">\n <div class=\"blog-container\">\n <h1 class=\"blog-title\" *ngIf=\"responseData?.postTitle\">\n {{ responseData.postTitle }}\n </h1>\n\n <div class=\"meta-bar\">\n <div class=\"meta-item\">\n <span class=\"meta-label\">Publication Date</span>\n <span class=\"meta-value\">{{\n responseData?.publishedDate ||\n responseData?.blogScheduledDate ||\n responseData?.createdTimeStamp | date: 'd MMMM y'\n }}</span>\n </div>\n <div class=\"meta-item\">\n <span class=\"meta-label\">Author</span>\n <span class=\"meta-value\">{{\n responseData?.author?.content || '\u2014'\n }}</span>\n </div>\n <div class=\"meta-item\">\n <span class=\"meta-label\">Read Time</span>\n <span class=\"meta-value\"\n >{{ responseData?.readTime || '\u2014' }} min read</span\n >\n </div>\n <div class=\"meta-item\">\n <span class=\"meta-label\">Views</span>\n <span class=\"meta-value\">{{ responseData?.totalVisits || 0 }}+</span>\n </div>\n </div>\n\n <div class=\"tags-row\" *ngIf=\"tags.length\">\n <span class=\"tag-chip\" *ngFor=\"let tag of tags\">{{ tag | titlecase }}</span>\n </div>\n\n <div class=\"blog-layout\" [class.with-toc]=\"tocItems.length > 1\">\n <aside class=\"toc-sidebar\" *ngIf=\"tocItems.length > 1\">\n <button\n type=\"button\"\n class=\"toc-toggle\"\n (click)=\"tocOpen = !tocOpen\"\n [attr.aria-expanded]=\"tocOpen\">\n <span>Table Of Content</span>\n <span class=\"toc-toggle-icon\" [class.open]=\"tocOpen\"></span>\n </button>\n <div class=\"toc-header\">Table Of Content</div>\n <nav class=\"toc-list\" [class.open]=\"tocOpen\">\n <a\n *ngFor=\"let toc of tocItems\"\n class=\"toc-link\"\n [class.toc-top]=\"toc.level <= 2\"\n [style.paddingLeft.px]=\"(toc.level - 2) * 14\"\n [class.active]=\"activeTocId === toc.id\"\n [href]=\"'#block-' + toc.id\"\n (click)=\"scrollToBlock($event, toc.id)\">\n {{ toc.text }}\n </a>\n </nav>\n </aside>\n\n <div class=\"blog-details\">\n <ng-container *ngFor=\"let item of responseData?.blocks\">\n <div\n *ngIf=\"item.type == 'header' && hasVisibleText(item.data?.text)\"\n [id]=\"'block-' + item.id\"\n [class.toc-anchor]=\"isTocAnchor(item.id)\">\n <h1 *ngIf=\"item.data.level == 1\" [innerHTML]=\"item.data.text\"></h1>\n <h2 *ngIf=\"item.data.level == 2\" [innerHTML]=\"item.data.text\"></h2>\n <h3 *ngIf=\"item.data.level == 3\" [innerHTML]=\"item.data.text\"></h3>\n <h4 *ngIf=\"item.data.level == 4\" [innerHTML]=\"item.data.text\"></h4>\n <h5 *ngIf=\"item.data.level == 5\" [innerHTML]=\"item.data.text\"></h5>\n <h6 *ngIf=\"item.data.level == 6\" [innerHTML]=\"item.data.text\"></h6>\n </div>\n <div\n *ngIf=\"item.type == 'paragraph' && hasVisibleText(item.data?.text)\"\n [id]=\"'block-' + item.id\"\n [class.toc-anchor]=\"isTocAnchor(item.id)\">\n <p\n class=\"inner-text\"\n [class.heading-paragraph]=\"isTocAnchor(item.id)\"\n [innerHTML]=\"item.data.text\"></p>\n </div>\n <div *ngIf=\"item.type == 'list'\">\n <div *ngIf=\"item.data.style == 'ordered'\">\n <ol class=\"list-style\">\n <ng-container *ngFor=\"let list of item.data.items\">\n <li [innerHTML]=\"list\"></li>\n </ng-container>\n </ol>\n </div>\n <div *ngIf=\"item.data.style == 'unordered'\">\n <ul class=\"list-style\">\n <ng-container *ngFor=\"let list of item.data.items\">\n <li [innerHTML]=\"list\"></li>\n </ng-container>\n </ul>\n </div>\n </div>\n <div *ngIf=\"item.type == 'delimiter'\" class=\"ce-delimiter\"></div>\n <div\n *ngIf=\"item.type == 'image'\"\n class=\"image-container\"\n [class.hero-image]=\"item.id === heroImageBlockId\">\n <img loading=\"lazy\" [src]=\"item.data.file.url\" alt=\"\" />\n <span class=\"image-caption\" *ngIf=\"item.data?.caption\">{{\n item.data.caption\n }}</span>\n </div>\n <div *ngIf=\"item.type == 'table'\">\n <div class=\"table-wrapper\">\n <table\n [class.table-no-heading]=\"item.data.withHeadings === false\">\n <ng-container *ngFor=\"let data of item.data.content\">\n <tr>\n <ng-container *ngFor=\"let item of data\">\n <td [innerHTML]=\"item\"></td>\n </ng-container>\n </tr>\n </ng-container>\n </table>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n\n <simpo-recent-blog-post-section\n [popular]=\"true\"\n [businessId]=\"responseData?.businessId\"\n [excludeBlogId]=\"responseData?.id\"\n [edit]=\"false\">\n </simpo-recent-blog-post-section>\n </div>\n</section>\n", styles: [":host{display:block;width:100%}*,*:before,*:after{box-sizing:border-box}*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.main-section{padding:2% 5%;background-color:#fff}.blog-container{width:85%;margin:0 auto}.blog-title{font-size:2em;font-weight:700;line-height:1.25em;margin:0 0 20px}.meta-bar{display:flex;gap:12px;margin-bottom:28px}.meta-item{flex:1;background-color:#f5f5f5;border-radius:6px;padding:12px 10px;text-align:center}.meta-label{display:block;font-size:.75em;color:#8a8a8a;letter-spacing:.02em;margin-bottom:6px}.meta-value{display:block;font-size:.95em;font-weight:700;color:#1a1a1a}.blog-layout{display:block}.blog-layout.with-toc{display:flex;align-items:flex-start;gap:40px}.with-toc .blog-details{flex:1;min-width:0;order:1}.toc-sidebar{width:340px;flex-shrink:0;position:sticky;top:20px;background-color:#f5f5f5;border-radius:6px;padding:16px;order:2}.toc-header{font-weight:700;font-size:1.05em;padding-bottom:12px;margin-bottom:8px;border-bottom:1px solid #dcdcdc}.toc-toggle{display:none;width:100%;align-items:center;justify-content:space-between;background:none;border:none;font-weight:700;font-size:1.05em;padding:0;cursor:pointer}.toc-toggle-icon{width:10px;height:10px;border-right:2px solid #1a1a1a;border-bottom:2px solid #1a1a1a;transform:rotate(45deg);transition:transform .2s ease}.toc-toggle-icon.open{transform:rotate(-135deg)}.toc-list{display:flex;flex-direction:column;gap:14px;max-height:600px;overflow-y:auto;padding-right:8px;scrollbar-width:thin;scrollbar-color:#c9c9c9 transparent}.toc-list::-webkit-scrollbar{display:block;width:6px}.toc-list::-webkit-scrollbar-track{background-color:transparent}.toc-list::-webkit-scrollbar-thumb{display:block;background-color:#c9c9c9;border-radius:3px}.toc-link{color:#6f6f6f;text-decoration:none;font-size:.92em;line-height:1.4em}.toc-link:hover{color:#1a1a1a}.toc-link.active{color:#1a1a1a;font-weight:700}.toc-link.toc-top{font-weight:700;color:#1a1a1a}.tags-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:28px}.tag-chip{background-color:#f5f5f5;border:1px solid #ececec;border-radius:999px;padding:6px 14px;font-size:.82em;color:#4a4a4a}.delimiter{display:flex;justify-content:center}.ce-delimiter:before{display:inline-block;content:\"***\";font-size:30px;line-height:65px;height:30px;letter-spacing:.2em}p{line-height:1.6em}.back-text{@include body16r();margin-left:9px;margin-top:1px;cursor:pointer}.table-wrapper{width:100%;overflow-x:auto;margin:16px 0;border-radius:8px;border:1px solid #ececec}table{border-collapse:collapse;width:100%}th,td{border:1px solid #ececec;padding:10px 14px;text-align:left}table:not(.table-no-heading) tr:first-child td{background-color:#eee;font-weight:700;text-transform:uppercase;font-size:.82em}table:not(.table-no-heading) tr:not(:first-child):nth-child(2n) td{background-color:#fafafa}table.table-no-heading tr:nth-child(odd) td{background-color:#fafafa}.table-wrapper img{max-width:100%;height:auto;display:block;border-radius:4px}.header{margin-top:8px;margin-bottom:14px;padding-left:20px}.header img,.configuration-tab img{cursor:pointer}.blogs-totalsection{background:#eee;position:absolute;top:55px;height:calc(100vh - 55px);width:81.7%;z-index:10;overflow-y:scroll;padding:14px}.blog-title{line-height:35px}.image-container{width:100%;margin:16px 0}.image-container img{width:100%;display:block;border-radius:8px;object-fit:cover}.image-container:not(.hero-image) img{aspect-ratio:16 / 9}.image-container.hero-image{margin:0 0 24px}.image-container.hero-image img{aspect-ratio:21 / 9;border-radius:12px}.image-caption{display:block;text-align:center;font-size:.85em;color:#8a8a8a;margin-top:8px}h1,h2,h3,h4,h5,h6{padding:.6em 0 3px}.h1,.h2,.h3,h1,h2,h3{margin-top:0}h2,h3,h4,h5,h6,.inner-text.heading-paragraph{font-weight:700;padding-bottom:12px;margin-bottom:8px;border-bottom:1px solid #ececec}.list-style{margin:16px 0;padding-left:22px;list-style-position:outside}.list-style li{text-align:left;line-height:1.6em;padding-left:6px}.list-style li:not(:last-child){margin-bottom:10px}.list-style li::marker{color:#1a1a1a;font-weight:700}@media only screen and (max-width: 900px){.blog-container{width:100%}.blog-layout.with-toc{flex-direction:column}.toc-sidebar{width:100%;position:static;box-sizing:border-box;order:0}.with-toc .blog-details{order:1}.toc-header{display:none}.toc-toggle{display:flex}.toc-list{display:none;margin-top:12px}.toc-list.open{display:flex}.meta-bar{flex-wrap:wrap}.meta-item{flex-basis:calc(50% - 6px)}}@media only screen and (max-width: 500px){.blog-details{width:100%}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i3.DatePipe, name: "date" }, { kind: "component", type: RecentBlogPostSectionComponent, selector: "simpo-recent-blog-post-section", inputs: ["data", "index", "edit", "delete", "customClass", "nextComponentColor", "responseData", "popular", "businessId", "excludeBlogId", "size"] }] }); }
517
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ViewBlogComponent, isStandalone: true, selector: "simpo-view-blog", inputs: { responseData: "responseData" }, usesOnChanges: true, ngImport: i0, template: "<section class=\"main-section\">\n <div class=\"blog-container\">\n <h1 class=\"blog-title\" *ngIf=\"responseData?.postTitle\">\n {{ responseData.postTitle }}\n </h1>\n\n <div class=\"meta-bar\">\n <div class=\"meta-item\">\n <span class=\"meta-label\">Publication Date</span>\n <span class=\"meta-value\">{{\n responseData?.publishedDate ||\n responseData?.blogScheduledDate ||\n responseData?.createdTimeStamp | date: 'd MMMM y'\n }}</span>\n </div>\n <div class=\"meta-item\">\n <span class=\"meta-label\">Author</span>\n <span class=\"meta-value\">{{\n responseData?.author?.content || '\u2014'\n }}</span>\n </div>\n <div class=\"meta-item\">\n <span class=\"meta-label\">Read Time</span>\n <span class=\"meta-value\"\n >{{ responseData?.readTime || '\u2014' }} min read</span\n >\n </div>\n <div class=\"meta-item\">\n <span class=\"meta-label\">Views</span>\n <span class=\"meta-value\">{{ responseData?.totalVisits || 0 }}+</span>\n </div>\n </div>\n\n <div class=\"tags-row\" *ngIf=\"tags.length\">\n <span class=\"tag-chip\" *ngFor=\"let tag of tags\">{{ tag | titlecase }}</span>\n </div>\n\n <div class=\"blog-layout\" [class.with-toc]=\"tocItems.length > 1\">\n <aside class=\"toc-sidebar\" *ngIf=\"tocItems.length > 1\">\n <button\n type=\"button\"\n class=\"toc-toggle\"\n (click)=\"tocOpen = !tocOpen\"\n [attr.aria-expanded]=\"tocOpen\">\n <span>Table Of Content</span>\n <span class=\"toc-toggle-icon\" [class.open]=\"tocOpen\"></span>\n </button>\n <div class=\"toc-header\">Table Of Content</div>\n <nav class=\"toc-list\" [class.open]=\"tocOpen\">\n <a\n *ngFor=\"let toc of tocItems\"\n class=\"toc-link\"\n [class.toc-top]=\"toc.level <= 2\"\n [style.paddingLeft.px]=\"(toc.level - 2) * 14\"\n [class.active]=\"activeTocId === toc.id\"\n [href]=\"'#block-' + toc.id\"\n (click)=\"scrollToBlock($event, toc.id)\">\n {{ toc.text }}\n </a>\n </nav>\n </aside>\n\n <div class=\"blog-details\">\n <ng-container *ngFor=\"let item of responseData?.blocks\">\n <div\n *ngIf=\"item.type == 'header' && hasVisibleText(item.data?.text)\"\n [id]=\"'block-' + item.id\"\n [class.toc-anchor]=\"isTocAnchor(item.id)\">\n <h1 *ngIf=\"item.data.level == 1\" [innerHTML]=\"item.data.text\"></h1>\n <h2 *ngIf=\"item.data.level == 2\" [innerHTML]=\"item.data.text\"></h2>\n <h3 *ngIf=\"item.data.level == 3\" [innerHTML]=\"item.data.text\"></h3>\n <h4 *ngIf=\"item.data.level == 4\" [innerHTML]=\"item.data.text\"></h4>\n <h5 *ngIf=\"item.data.level == 5\" [innerHTML]=\"item.data.text\"></h5>\n <h6 *ngIf=\"item.data.level == 6\" [innerHTML]=\"item.data.text\"></h6>\n </div>\n <div\n *ngIf=\"item.type == 'paragraph' && hasVisibleText(item.data?.text)\"\n [id]=\"'block-' + item.id\"\n [class.toc-anchor]=\"isTocAnchor(item.id)\">\n <p\n class=\"inner-text\"\n [class.heading-paragraph]=\"isTocAnchor(item.id)\"\n [innerHTML]=\"item.data.text\"></p>\n </div>\n <div *ngIf=\"item.type == 'list'\">\n <div *ngIf=\"item.data.style == 'ordered'\">\n <ol class=\"list-style\">\n <ng-container *ngFor=\"let list of item.data.items\">\n <li [innerHTML]=\"list\"></li>\n </ng-container>\n </ol>\n </div>\n <div *ngIf=\"item.data.style == 'unordered'\">\n <ul class=\"list-style\">\n <ng-container *ngFor=\"let list of item.data.items\">\n <li [innerHTML]=\"list\"></li>\n </ng-container>\n </ul>\n </div>\n </div>\n <div *ngIf=\"item.type == 'delimiter'\" class=\"ce-delimiter\"></div>\n <div\n *ngIf=\"item.type == 'image'\"\n class=\"image-container\"\n [class.hero-image]=\"item.id === heroImageBlockId\">\n <img loading=\"lazy\" [src]=\"item.data.file.url\" alt=\"\" />\n <span class=\"image-caption\" *ngIf=\"item.data?.caption\">{{\n item.data.caption\n }}</span>\n </div>\n <div *ngIf=\"item.type == 'table'\">\n <div class=\"table-wrapper\">\n <table\n [class.table-no-heading]=\"item.data.withHeadings === false\">\n <ng-container *ngFor=\"let data of item.data.content\">\n <tr>\n <ng-container *ngFor=\"let item of data\">\n <td [innerHTML]=\"item\"></td>\n </ng-container>\n </tr>\n </ng-container>\n </table>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n\n <simpo-recent-blog-post-section\n [popular]=\"true\"\n [businessId]=\"responseData?.businessId\"\n [excludeBlogId]=\"responseData?.id\"\n [edit]=\"false\">\n </simpo-recent-blog-post-section>\n </div>\n</section>\n", styles: [":host{display:block;width:100%}*,*:before,*:after{box-sizing:border-box}*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.main-section{padding:2% 5%;background-color:#fff}.blog-container{width:85%;margin:0 auto}.blog-title{font-size:2em;font-weight:700;line-height:1.25em;margin:0 0 20px}.meta-bar{display:flex;gap:12px;margin-bottom:28px}.meta-item{flex:1;background-color:#f5f5f5;border-radius:6px;padding:12px 10px;text-align:center}.meta-label{display:block;font-size:.75em;color:#8a8a8a;letter-spacing:.02em;margin-bottom:6px}.meta-value{display:block;font-size:.95em;font-weight:700;color:#1a1a1a}.blog-layout{display:block}.blog-layout.with-toc{display:flex;align-items:flex-start;gap:40px}.with-toc .blog-details{flex:1;min-width:0;order:1}.toc-sidebar{width:340px;flex-shrink:0;position:sticky;top:20px;background-color:#f5f5f5;border-radius:6px;padding:16px;order:2}.toc-header{font-weight:700;font-size:1.05em;padding-bottom:12px;margin-bottom:8px;border-bottom:1px solid #dcdcdc}.toc-toggle{display:none;width:100%;align-items:center;justify-content:space-between;background:none;border:none;font-weight:700;font-size:1.05em;padding:0;cursor:pointer}.toc-toggle-icon{width:10px;height:10px;border-right:2px solid #1a1a1a;border-bottom:2px solid #1a1a1a;transform:rotate(45deg);transition:transform .2s ease}.toc-toggle-icon.open{transform:rotate(-135deg)}.toc-list{display:flex;flex-direction:column;gap:14px;max-height:600px;overflow-y:auto;padding-right:8px;scrollbar-width:thin;scrollbar-color:#c9c9c9 transparent}.toc-list::-webkit-scrollbar{display:block;width:6px}.toc-list::-webkit-scrollbar-track{background-color:transparent}.toc-list::-webkit-scrollbar-thumb{display:block;background-color:#c9c9c9;border-radius:3px}.toc-link{color:#6f6f6f;text-decoration:none;font-size:.92em;line-height:1.4em;outline:none}.toc-link:hover{color:#1a1a1a}.toc-link.active{color:#1a1a1a;font-weight:700}.toc-link.toc-top{font-weight:700;color:#1a1a1a}.tags-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:28px}.tag-chip{background-color:#f5f5f5;border:1px solid #ececec;border-radius:999px;padding:6px 14px;font-size:.82em;color:#4a4a4a}.delimiter{display:flex;justify-content:center}.ce-delimiter:before{display:inline-block;content:\"***\";font-size:30px;line-height:65px;height:30px;letter-spacing:.2em}p{line-height:1.6em}.back-text{@include body16r();margin-left:9px;margin-top:1px;cursor:pointer}.table-wrapper{width:100%;overflow-x:auto;margin:16px 0;border-radius:8px;border:1px solid #ececec}table{border-collapse:collapse;width:100%}th,td{border:1px solid #ececec;padding:10px 14px;text-align:left}table:not(.table-no-heading) tr:first-child td{background-color:#eee;font-weight:700;text-transform:uppercase;font-size:.82em}table:not(.table-no-heading) tr:not(:first-child):nth-child(2n) td{background-color:#fafafa}table.table-no-heading tr:nth-child(odd) td{background-color:#fafafa}.table-wrapper img{max-width:100%;height:auto;display:block;border-radius:4px}.header{margin-top:8px;margin-bottom:14px;padding-left:20px}.header img,.configuration-tab img{cursor:pointer}.blogs-totalsection{background:#eee;position:absolute;top:55px;height:calc(100vh - 55px);width:81.7%;z-index:10;overflow-y:scroll;padding:14px}.blog-title{line-height:35px}.image-container{width:100%;margin:16px 0}.image-container img{width:100%;display:block;border-radius:8px;object-fit:cover}.image-container:not(.hero-image) img{aspect-ratio:16 / 9}.image-container.hero-image{margin:0 0 24px}.image-container.hero-image img{aspect-ratio:21 / 9;border-radius:12px}.image-caption{display:block;text-align:center;font-size:.85em;color:#8a8a8a;margin-top:8px}h1,h2,h3,h4,h5,h6{padding:.6em 0 3px}.h1,.h2,.h3,h1,h2,h3{margin-top:0}h2,h3,h4,h5,h6,.inner-text.heading-paragraph{font-weight:700;padding-bottom:12px;margin-bottom:8px;border-bottom:1px solid #ececec}.list-style{margin:16px 0;padding-left:22px;list-style-position:outside}.list-style li{text-align:left;line-height:1.6em;padding-left:6px}.list-style li:not(:last-child){margin-bottom:10px}.list-style li::marker{color:#1a1a1a;font-weight:700}@media only screen and (max-width: 900px){.blog-container{width:100%}.blog-layout.with-toc{flex-direction:column}.toc-sidebar{width:100%;position:static;box-sizing:border-box;order:0}.with-toc .blog-details{order:1}.toc-header{display:none}.toc-toggle{display:flex}.toc-list{display:none;margin-top:12px}.toc-list.open{display:flex}.meta-bar{flex-wrap:wrap}.meta-item{flex-basis:calc(50% - 6px)}}@media only screen and (max-width: 500px){.blog-details{width:100%}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i3.DatePipe, name: "date" }, { kind: "component", type: RecentBlogPostSectionComponent, selector: "simpo-recent-blog-post-section", inputs: ["data", "index", "edit", "delete", "customClass", "nextComponentColor", "responseData", "popular", "businessId", "excludeBlogId", "size"] }] }); }
518
518
  }
519
519
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ViewBlogComponent, decorators: [{
520
520
  type: Component,
521
- args: [{ selector: 'simpo-view-blog', standalone: true, imports: [CommonModule, DatePipe, RecentBlogPostSectionComponent], template: "<section class=\"main-section\">\n <div class=\"blog-container\">\n <h1 class=\"blog-title\" *ngIf=\"responseData?.postTitle\">\n {{ responseData.postTitle }}\n </h1>\n\n <div class=\"meta-bar\">\n <div class=\"meta-item\">\n <span class=\"meta-label\">Publication Date</span>\n <span class=\"meta-value\">{{\n responseData?.publishedDate ||\n responseData?.blogScheduledDate ||\n responseData?.createdTimeStamp | date: 'd MMMM y'\n }}</span>\n </div>\n <div class=\"meta-item\">\n <span class=\"meta-label\">Author</span>\n <span class=\"meta-value\">{{\n responseData?.author?.content || '\u2014'\n }}</span>\n </div>\n <div class=\"meta-item\">\n <span class=\"meta-label\">Read Time</span>\n <span class=\"meta-value\"\n >{{ responseData?.readTime || '\u2014' }} min read</span\n >\n </div>\n <div class=\"meta-item\">\n <span class=\"meta-label\">Views</span>\n <span class=\"meta-value\">{{ responseData?.totalVisits || 0 }}+</span>\n </div>\n </div>\n\n <div class=\"tags-row\" *ngIf=\"tags.length\">\n <span class=\"tag-chip\" *ngFor=\"let tag of tags\">{{ tag | titlecase }}</span>\n </div>\n\n <div class=\"blog-layout\" [class.with-toc]=\"tocItems.length > 1\">\n <aside class=\"toc-sidebar\" *ngIf=\"tocItems.length > 1\">\n <button\n type=\"button\"\n class=\"toc-toggle\"\n (click)=\"tocOpen = !tocOpen\"\n [attr.aria-expanded]=\"tocOpen\">\n <span>Table Of Content</span>\n <span class=\"toc-toggle-icon\" [class.open]=\"tocOpen\"></span>\n </button>\n <div class=\"toc-header\">Table Of Content</div>\n <nav class=\"toc-list\" [class.open]=\"tocOpen\">\n <a\n *ngFor=\"let toc of tocItems\"\n class=\"toc-link\"\n [class.toc-top]=\"toc.level <= 2\"\n [style.paddingLeft.px]=\"(toc.level - 2) * 14\"\n [class.active]=\"activeTocId === toc.id\"\n [href]=\"'#block-' + toc.id\"\n (click)=\"scrollToBlock($event, toc.id)\">\n {{ toc.text }}\n </a>\n </nav>\n </aside>\n\n <div class=\"blog-details\">\n <ng-container *ngFor=\"let item of responseData?.blocks\">\n <div\n *ngIf=\"item.type == 'header' && hasVisibleText(item.data?.text)\"\n [id]=\"'block-' + item.id\"\n [class.toc-anchor]=\"isTocAnchor(item.id)\">\n <h1 *ngIf=\"item.data.level == 1\" [innerHTML]=\"item.data.text\"></h1>\n <h2 *ngIf=\"item.data.level == 2\" [innerHTML]=\"item.data.text\"></h2>\n <h3 *ngIf=\"item.data.level == 3\" [innerHTML]=\"item.data.text\"></h3>\n <h4 *ngIf=\"item.data.level == 4\" [innerHTML]=\"item.data.text\"></h4>\n <h5 *ngIf=\"item.data.level == 5\" [innerHTML]=\"item.data.text\"></h5>\n <h6 *ngIf=\"item.data.level == 6\" [innerHTML]=\"item.data.text\"></h6>\n </div>\n <div\n *ngIf=\"item.type == 'paragraph' && hasVisibleText(item.data?.text)\"\n [id]=\"'block-' + item.id\"\n [class.toc-anchor]=\"isTocAnchor(item.id)\">\n <p\n class=\"inner-text\"\n [class.heading-paragraph]=\"isTocAnchor(item.id)\"\n [innerHTML]=\"item.data.text\"></p>\n </div>\n <div *ngIf=\"item.type == 'list'\">\n <div *ngIf=\"item.data.style == 'ordered'\">\n <ol class=\"list-style\">\n <ng-container *ngFor=\"let list of item.data.items\">\n <li [innerHTML]=\"list\"></li>\n </ng-container>\n </ol>\n </div>\n <div *ngIf=\"item.data.style == 'unordered'\">\n <ul class=\"list-style\">\n <ng-container *ngFor=\"let list of item.data.items\">\n <li [innerHTML]=\"list\"></li>\n </ng-container>\n </ul>\n </div>\n </div>\n <div *ngIf=\"item.type == 'delimiter'\" class=\"ce-delimiter\"></div>\n <div\n *ngIf=\"item.type == 'image'\"\n class=\"image-container\"\n [class.hero-image]=\"item.id === heroImageBlockId\">\n <img loading=\"lazy\" [src]=\"item.data.file.url\" alt=\"\" />\n <span class=\"image-caption\" *ngIf=\"item.data?.caption\">{{\n item.data.caption\n }}</span>\n </div>\n <div *ngIf=\"item.type == 'table'\">\n <div class=\"table-wrapper\">\n <table\n [class.table-no-heading]=\"item.data.withHeadings === false\">\n <ng-container *ngFor=\"let data of item.data.content\">\n <tr>\n <ng-container *ngFor=\"let item of data\">\n <td [innerHTML]=\"item\"></td>\n </ng-container>\n </tr>\n </ng-container>\n </table>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n\n <simpo-recent-blog-post-section\n [popular]=\"true\"\n [businessId]=\"responseData?.businessId\"\n [excludeBlogId]=\"responseData?.id\"\n [edit]=\"false\">\n </simpo-recent-blog-post-section>\n </div>\n</section>\n", styles: [":host{display:block;width:100%}*,*:before,*:after{box-sizing:border-box}*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.main-section{padding:2% 5%;background-color:#fff}.blog-container{width:85%;margin:0 auto}.blog-title{font-size:2em;font-weight:700;line-height:1.25em;margin:0 0 20px}.meta-bar{display:flex;gap:12px;margin-bottom:28px}.meta-item{flex:1;background-color:#f5f5f5;border-radius:6px;padding:12px 10px;text-align:center}.meta-label{display:block;font-size:.75em;color:#8a8a8a;letter-spacing:.02em;margin-bottom:6px}.meta-value{display:block;font-size:.95em;font-weight:700;color:#1a1a1a}.blog-layout{display:block}.blog-layout.with-toc{display:flex;align-items:flex-start;gap:40px}.with-toc .blog-details{flex:1;min-width:0;order:1}.toc-sidebar{width:340px;flex-shrink:0;position:sticky;top:20px;background-color:#f5f5f5;border-radius:6px;padding:16px;order:2}.toc-header{font-weight:700;font-size:1.05em;padding-bottom:12px;margin-bottom:8px;border-bottom:1px solid #dcdcdc}.toc-toggle{display:none;width:100%;align-items:center;justify-content:space-between;background:none;border:none;font-weight:700;font-size:1.05em;padding:0;cursor:pointer}.toc-toggle-icon{width:10px;height:10px;border-right:2px solid #1a1a1a;border-bottom:2px solid #1a1a1a;transform:rotate(45deg);transition:transform .2s ease}.toc-toggle-icon.open{transform:rotate(-135deg)}.toc-list{display:flex;flex-direction:column;gap:14px;max-height:600px;overflow-y:auto;padding-right:8px;scrollbar-width:thin;scrollbar-color:#c9c9c9 transparent}.toc-list::-webkit-scrollbar{display:block;width:6px}.toc-list::-webkit-scrollbar-track{background-color:transparent}.toc-list::-webkit-scrollbar-thumb{display:block;background-color:#c9c9c9;border-radius:3px}.toc-link{color:#6f6f6f;text-decoration:none;font-size:.92em;line-height:1.4em}.toc-link:hover{color:#1a1a1a}.toc-link.active{color:#1a1a1a;font-weight:700}.toc-link.toc-top{font-weight:700;color:#1a1a1a}.tags-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:28px}.tag-chip{background-color:#f5f5f5;border:1px solid #ececec;border-radius:999px;padding:6px 14px;font-size:.82em;color:#4a4a4a}.delimiter{display:flex;justify-content:center}.ce-delimiter:before{display:inline-block;content:\"***\";font-size:30px;line-height:65px;height:30px;letter-spacing:.2em}p{line-height:1.6em}.back-text{@include body16r();margin-left:9px;margin-top:1px;cursor:pointer}.table-wrapper{width:100%;overflow-x:auto;margin:16px 0;border-radius:8px;border:1px solid #ececec}table{border-collapse:collapse;width:100%}th,td{border:1px solid #ececec;padding:10px 14px;text-align:left}table:not(.table-no-heading) tr:first-child td{background-color:#eee;font-weight:700;text-transform:uppercase;font-size:.82em}table:not(.table-no-heading) tr:not(:first-child):nth-child(2n) td{background-color:#fafafa}table.table-no-heading tr:nth-child(odd) td{background-color:#fafafa}.table-wrapper img{max-width:100%;height:auto;display:block;border-radius:4px}.header{margin-top:8px;margin-bottom:14px;padding-left:20px}.header img,.configuration-tab img{cursor:pointer}.blogs-totalsection{background:#eee;position:absolute;top:55px;height:calc(100vh - 55px);width:81.7%;z-index:10;overflow-y:scroll;padding:14px}.blog-title{line-height:35px}.image-container{width:100%;margin:16px 0}.image-container img{width:100%;display:block;border-radius:8px;object-fit:cover}.image-container:not(.hero-image) img{aspect-ratio:16 / 9}.image-container.hero-image{margin:0 0 24px}.image-container.hero-image img{aspect-ratio:21 / 9;border-radius:12px}.image-caption{display:block;text-align:center;font-size:.85em;color:#8a8a8a;margin-top:8px}h1,h2,h3,h4,h5,h6{padding:.6em 0 3px}.h1,.h2,.h3,h1,h2,h3{margin-top:0}h2,h3,h4,h5,h6,.inner-text.heading-paragraph{font-weight:700;padding-bottom:12px;margin-bottom:8px;border-bottom:1px solid #ececec}.list-style{margin:16px 0;padding-left:22px;list-style-position:outside}.list-style li{text-align:left;line-height:1.6em;padding-left:6px}.list-style li:not(:last-child){margin-bottom:10px}.list-style li::marker{color:#1a1a1a;font-weight:700}@media only screen and (max-width: 900px){.blog-container{width:100%}.blog-layout.with-toc{flex-direction:column}.toc-sidebar{width:100%;position:static;box-sizing:border-box;order:0}.with-toc .blog-details{order:1}.toc-header{display:none}.toc-toggle{display:flex}.toc-list{display:none;margin-top:12px}.toc-list.open{display:flex}.meta-bar{flex-wrap:wrap}.meta-item{flex-basis:calc(50% - 6px)}}@media only screen and (max-width: 500px){.blog-details{width:100%}}\n"] }]
521
+ args: [{ selector: 'simpo-view-blog', standalone: true, imports: [CommonModule, DatePipe, RecentBlogPostSectionComponent], template: "<section class=\"main-section\">\n <div class=\"blog-container\">\n <h1 class=\"blog-title\" *ngIf=\"responseData?.postTitle\">\n {{ responseData.postTitle }}\n </h1>\n\n <div class=\"meta-bar\">\n <div class=\"meta-item\">\n <span class=\"meta-label\">Publication Date</span>\n <span class=\"meta-value\">{{\n responseData?.publishedDate ||\n responseData?.blogScheduledDate ||\n responseData?.createdTimeStamp | date: 'd MMMM y'\n }}</span>\n </div>\n <div class=\"meta-item\">\n <span class=\"meta-label\">Author</span>\n <span class=\"meta-value\">{{\n responseData?.author?.content || '\u2014'\n }}</span>\n </div>\n <div class=\"meta-item\">\n <span class=\"meta-label\">Read Time</span>\n <span class=\"meta-value\"\n >{{ responseData?.readTime || '\u2014' }} min read</span\n >\n </div>\n <div class=\"meta-item\">\n <span class=\"meta-label\">Views</span>\n <span class=\"meta-value\">{{ responseData?.totalVisits || 0 }}+</span>\n </div>\n </div>\n\n <div class=\"tags-row\" *ngIf=\"tags.length\">\n <span class=\"tag-chip\" *ngFor=\"let tag of tags\">{{ tag | titlecase }}</span>\n </div>\n\n <div class=\"blog-layout\" [class.with-toc]=\"tocItems.length > 1\">\n <aside class=\"toc-sidebar\" *ngIf=\"tocItems.length > 1\">\n <button\n type=\"button\"\n class=\"toc-toggle\"\n (click)=\"tocOpen = !tocOpen\"\n [attr.aria-expanded]=\"tocOpen\">\n <span>Table Of Content</span>\n <span class=\"toc-toggle-icon\" [class.open]=\"tocOpen\"></span>\n </button>\n <div class=\"toc-header\">Table Of Content</div>\n <nav class=\"toc-list\" [class.open]=\"tocOpen\">\n <a\n *ngFor=\"let toc of tocItems\"\n class=\"toc-link\"\n [class.toc-top]=\"toc.level <= 2\"\n [style.paddingLeft.px]=\"(toc.level - 2) * 14\"\n [class.active]=\"activeTocId === toc.id\"\n [href]=\"'#block-' + toc.id\"\n (click)=\"scrollToBlock($event, toc.id)\">\n {{ toc.text }}\n </a>\n </nav>\n </aside>\n\n <div class=\"blog-details\">\n <ng-container *ngFor=\"let item of responseData?.blocks\">\n <div\n *ngIf=\"item.type == 'header' && hasVisibleText(item.data?.text)\"\n [id]=\"'block-' + item.id\"\n [class.toc-anchor]=\"isTocAnchor(item.id)\">\n <h1 *ngIf=\"item.data.level == 1\" [innerHTML]=\"item.data.text\"></h1>\n <h2 *ngIf=\"item.data.level == 2\" [innerHTML]=\"item.data.text\"></h2>\n <h3 *ngIf=\"item.data.level == 3\" [innerHTML]=\"item.data.text\"></h3>\n <h4 *ngIf=\"item.data.level == 4\" [innerHTML]=\"item.data.text\"></h4>\n <h5 *ngIf=\"item.data.level == 5\" [innerHTML]=\"item.data.text\"></h5>\n <h6 *ngIf=\"item.data.level == 6\" [innerHTML]=\"item.data.text\"></h6>\n </div>\n <div\n *ngIf=\"item.type == 'paragraph' && hasVisibleText(item.data?.text)\"\n [id]=\"'block-' + item.id\"\n [class.toc-anchor]=\"isTocAnchor(item.id)\">\n <p\n class=\"inner-text\"\n [class.heading-paragraph]=\"isTocAnchor(item.id)\"\n [innerHTML]=\"item.data.text\"></p>\n </div>\n <div *ngIf=\"item.type == 'list'\">\n <div *ngIf=\"item.data.style == 'ordered'\">\n <ol class=\"list-style\">\n <ng-container *ngFor=\"let list of item.data.items\">\n <li [innerHTML]=\"list\"></li>\n </ng-container>\n </ol>\n </div>\n <div *ngIf=\"item.data.style == 'unordered'\">\n <ul class=\"list-style\">\n <ng-container *ngFor=\"let list of item.data.items\">\n <li [innerHTML]=\"list\"></li>\n </ng-container>\n </ul>\n </div>\n </div>\n <div *ngIf=\"item.type == 'delimiter'\" class=\"ce-delimiter\"></div>\n <div\n *ngIf=\"item.type == 'image'\"\n class=\"image-container\"\n [class.hero-image]=\"item.id === heroImageBlockId\">\n <img loading=\"lazy\" [src]=\"item.data.file.url\" alt=\"\" />\n <span class=\"image-caption\" *ngIf=\"item.data?.caption\">{{\n item.data.caption\n }}</span>\n </div>\n <div *ngIf=\"item.type == 'table'\">\n <div class=\"table-wrapper\">\n <table\n [class.table-no-heading]=\"item.data.withHeadings === false\">\n <ng-container *ngFor=\"let data of item.data.content\">\n <tr>\n <ng-container *ngFor=\"let item of data\">\n <td [innerHTML]=\"item\"></td>\n </ng-container>\n </tr>\n </ng-container>\n </table>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n\n <simpo-recent-blog-post-section\n [popular]=\"true\"\n [businessId]=\"responseData?.businessId\"\n [excludeBlogId]=\"responseData?.id\"\n [edit]=\"false\">\n </simpo-recent-blog-post-section>\n </div>\n</section>\n", styles: [":host{display:block;width:100%}*,*:before,*:after{box-sizing:border-box}*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.main-section{padding:2% 5%;background-color:#fff}.blog-container{width:85%;margin:0 auto}.blog-title{font-size:2em;font-weight:700;line-height:1.25em;margin:0 0 20px}.meta-bar{display:flex;gap:12px;margin-bottom:28px}.meta-item{flex:1;background-color:#f5f5f5;border-radius:6px;padding:12px 10px;text-align:center}.meta-label{display:block;font-size:.75em;color:#8a8a8a;letter-spacing:.02em;margin-bottom:6px}.meta-value{display:block;font-size:.95em;font-weight:700;color:#1a1a1a}.blog-layout{display:block}.blog-layout.with-toc{display:flex;align-items:flex-start;gap:40px}.with-toc .blog-details{flex:1;min-width:0;order:1}.toc-sidebar{width:340px;flex-shrink:0;position:sticky;top:20px;background-color:#f5f5f5;border-radius:6px;padding:16px;order:2}.toc-header{font-weight:700;font-size:1.05em;padding-bottom:12px;margin-bottom:8px;border-bottom:1px solid #dcdcdc}.toc-toggle{display:none;width:100%;align-items:center;justify-content:space-between;background:none;border:none;font-weight:700;font-size:1.05em;padding:0;cursor:pointer}.toc-toggle-icon{width:10px;height:10px;border-right:2px solid #1a1a1a;border-bottom:2px solid #1a1a1a;transform:rotate(45deg);transition:transform .2s ease}.toc-toggle-icon.open{transform:rotate(-135deg)}.toc-list{display:flex;flex-direction:column;gap:14px;max-height:600px;overflow-y:auto;padding-right:8px;scrollbar-width:thin;scrollbar-color:#c9c9c9 transparent}.toc-list::-webkit-scrollbar{display:block;width:6px}.toc-list::-webkit-scrollbar-track{background-color:transparent}.toc-list::-webkit-scrollbar-thumb{display:block;background-color:#c9c9c9;border-radius:3px}.toc-link{color:#6f6f6f;text-decoration:none;font-size:.92em;line-height:1.4em;outline:none}.toc-link:hover{color:#1a1a1a}.toc-link.active{color:#1a1a1a;font-weight:700}.toc-link.toc-top{font-weight:700;color:#1a1a1a}.tags-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:28px}.tag-chip{background-color:#f5f5f5;border:1px solid #ececec;border-radius:999px;padding:6px 14px;font-size:.82em;color:#4a4a4a}.delimiter{display:flex;justify-content:center}.ce-delimiter:before{display:inline-block;content:\"***\";font-size:30px;line-height:65px;height:30px;letter-spacing:.2em}p{line-height:1.6em}.back-text{@include body16r();margin-left:9px;margin-top:1px;cursor:pointer}.table-wrapper{width:100%;overflow-x:auto;margin:16px 0;border-radius:8px;border:1px solid #ececec}table{border-collapse:collapse;width:100%}th,td{border:1px solid #ececec;padding:10px 14px;text-align:left}table:not(.table-no-heading) tr:first-child td{background-color:#eee;font-weight:700;text-transform:uppercase;font-size:.82em}table:not(.table-no-heading) tr:not(:first-child):nth-child(2n) td{background-color:#fafafa}table.table-no-heading tr:nth-child(odd) td{background-color:#fafafa}.table-wrapper img{max-width:100%;height:auto;display:block;border-radius:4px}.header{margin-top:8px;margin-bottom:14px;padding-left:20px}.header img,.configuration-tab img{cursor:pointer}.blogs-totalsection{background:#eee;position:absolute;top:55px;height:calc(100vh - 55px);width:81.7%;z-index:10;overflow-y:scroll;padding:14px}.blog-title{line-height:35px}.image-container{width:100%;margin:16px 0}.image-container img{width:100%;display:block;border-radius:8px;object-fit:cover}.image-container:not(.hero-image) img{aspect-ratio:16 / 9}.image-container.hero-image{margin:0 0 24px}.image-container.hero-image img{aspect-ratio:21 / 9;border-radius:12px}.image-caption{display:block;text-align:center;font-size:.85em;color:#8a8a8a;margin-top:8px}h1,h2,h3,h4,h5,h6{padding:.6em 0 3px}.h1,.h2,.h3,h1,h2,h3{margin-top:0}h2,h3,h4,h5,h6,.inner-text.heading-paragraph{font-weight:700;padding-bottom:12px;margin-bottom:8px;border-bottom:1px solid #ececec}.list-style{margin:16px 0;padding-left:22px;list-style-position:outside}.list-style li{text-align:left;line-height:1.6em;padding-left:6px}.list-style li:not(:last-child){margin-bottom:10px}.list-style li::marker{color:#1a1a1a;font-weight:700}@media only screen and (max-width: 900px){.blog-container{width:100%}.blog-layout.with-toc{flex-direction:column}.toc-sidebar{width:100%;position:static;box-sizing:border-box;order:0}.with-toc .blog-details{order:1}.toc-header{display:none}.toc-toggle{display:flex}.toc-list{display:none;margin-top:12px}.toc-list.open{display:flex}.meta-bar{flex-wrap:wrap}.meta-item{flex-basis:calc(50% - 6px)}}@media only screen and (max-width: 500px){.blog-details{width:100%}}\n"] }]
522
522
  }], ctorParameters: () => [{ type: i1.EventsService }, { type: i2.RestService }, { type: i0.ElementRef }, { type: undefined, decorators: [{
523
523
  type: Inject,
524
524
  args: [PLATFORM_ID]
525
525
  }] }], propDecorators: { responseData: [{
526
526
  type: Input
527
527
  }] } });
528
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1ibG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvc2VjdGlvbnMvdmlldy1ibG9nL3ZpZXctYmxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL3ZpZXctYmxvZy92aWV3LWJsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RSxPQUFPLEVBRUwsU0FBUyxFQUVULE1BQU0sRUFDTixLQUFLLEVBSUwsV0FBVyxHQUVaLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDOzs7OztBQXFCaEgsTUFBTSxPQUFPLGlCQUFpQjtJQWdWNUIsWUFDbUIsYUFBNEIsRUFDNUIsV0FBd0IsRUFDeEIsV0FBb0MsRUFDaEMsVUFBa0I7UUFIdEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZ0JBQVcsR0FBWCxXQUFXLENBQXlCO1FBalY5QyxpQkFBWSxHQUFRO1lBQzNCLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLGlCQUFpQixFQUFFLEVBQUU7WUFDckIsV0FBVyxFQUFFLFFBQVE7WUFDckIsYUFBYSxFQUFFLHNGQUFzRjtZQUNyRyxrQkFBa0IsRUFBRSwrQkFBK0I7WUFDbkQsVUFBVSxFQUFFLEdBQUc7WUFDZixXQUFXLEVBQUUsR0FBRztZQUNoQixhQUFhLEVBQUUsQ0FBQztZQUNoQixJQUFJLEVBQUUsc0NBQXNDO1lBQzVDLFlBQVksRUFBRSxzQ0FBc0M7WUFDcEQsTUFBTSxFQUFFLENBQUM7WUFDVCxTQUFTLEVBQUUsRUFBRTtZ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Q3hCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUM3QyxhQUFhLENBQ2QsQ0FDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxvQkFBb0IsQ0FDekMsT0FBTyxDQUFDLEVBQUU7WUFDUixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzlELElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNuQixJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDaEUsQ0FBQztRQUNILENBQUMsRUFDRCxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxDQUNuQyxDQUFDO1FBQ0YsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQzsrR0FwaUJVLGlCQUFpQixvR0FvVmxCLFdBQVc7bUdBcFZWLGlCQUFpQiwwSUNwQzlCLDgyS0F3SUEscWlKRHhHWSxZQUFZLGdYQUFZLDhCQUE4Qjs7NEZBSXJELGlCQUFpQjtrQkFQN0IsU0FBUzsrQkFDRSxpQkFBaUIsY0FDZixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLDhCQUE4QixDQUFDOzswQkF3VjlELE1BQU07MkJBQUMsV0FBVzt5Q0FsVlosWUFBWTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSwgRGF0ZVBpcGUsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBQTEFURk9STV9JRCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi9zZXJ2aWNlcy9ldmVudHMuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSZWNlbnRCbG9nUG9zdFNlY3Rpb25Db21wb25lbnQgfSBmcm9tICcuLi9yZWNlbnQtYmxvZy1wb3N0LXNlY3Rpb24vcmVjZW50LWJsb2ctcG9zdC1zZWN0aW9uLmNvbXBvbmVudCc7XHJcblxyXG5pbnRlcmZhY2UgVG9jSXRlbSB7XHJcbiAgaWQ6IHN0cmluZztcclxuICB0ZXh0OiBzdHJpbmc7XHJcbiAgbGV2ZWw6IG51bWJlcjtcclxufVxyXG5cclxuaW50ZXJmYWNlIEJsb2dCbG9jayB7XHJcbiAgaWQ6IHN0cmluZztcclxuICB0eXBlOiBzdHJpbmc7XHJcbiAgZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLXZpZXctYmxvZycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBEYXRlUGlwZSwgUmVjZW50QmxvZ1Bvc3RTZWN0aW9uQ29tcG9uZW50XSxcclxuICB0ZW1wbGF0ZVVybDogJy4vdmlldy1ibG9nLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vdmlldy1ibG9nLmNvbXBvbmVudC5jc3MnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVmlld0Jsb2dDb21wb25lbnRcclxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIHJlc3BvbnNlRGF0YTogYW55ID0ge1xyXG4gICAgXCJzdWJJbmR1c3RyeUlkXCI6IG51bGwsXHJcbiAgICBcInN1YkluZHVzdHJ5TmFtZVwiOiBcIlwiLFxyXG4gICAgXCJkaXNwbGF5SWRcIjogXCJCRzE3ODRcIixcclxuICAgIFwiYXJ0aWNsZVNsdWdcIjogXCJDYXNlLVN0dWR5LUhvdy1hLUpld2VsbGVyeS1SZXRhaWxlci1JbmNyZWFzZWQtLUN1c3RvbWVyLUVuZ2FnZW1lbnQtVXNpbmctUGFzc2Jvb2tBcHBcIixcclxuICAgIFwidXBkYXRlZFRpbWVTdGFtcFwiOiBcIjIwMjYtMDgtMDRUMTE6NTk6MjQuMDAwKzAwOjAwXCIsXHJcbiAgICBcInJlYWRUaW1lXCI6IFwiM1wiLFxyXG4gICAgXCJ3b3JkQ291bnRcIjogNjM0LFxyXG4gICAgXCJ0b3RhbFZpc2l0c1wiOiAwLFxyXG4gICAgXCJpZFwiOiBcIjFmMThmZmJkLTNmOTgtNjVjMy1hMzc3LTlkMjlhNzgxYjk3OFwiLFxyXG4gICAgXCJidXNpbmVzc0lkXCI6IFwiMWYxOTU2N2EtY2UyNi02NzkwLThhMTQtYzc4NmZjMDg0YTgyXCIsXHJcbiAgICBcInRpbWVcIjogMCxcclxuICAgIFwidmVyc2lvblwiOiBcIlwiLFxyXG4gICAgXCJibG9ja3NcIjogW1xyXG4gICAgICB7XHJcbiAgICAgICAgXCJpZFwiOiBcInUyelI0UTdBVXlcIixcclxuICAgICAgICBcInR5cGVcIjogXCJoZWFkZXJcIixcclxuICAgICAgICBcImRhdGFcIjoge1xyXG4gICAgICAgICAgXCJ0ZXh0XCI6IFwiQ2FzZSBTdHVkeTogSG93IGEgSmV3ZWxsZXJ5IFJldGFpbGVyIEluY3JlYXNlZCBDdXN0b21lciBFbmdhZ2VtZW50IGJ5IDQwJSBVc2luZyBQYXNzYm9va0FwcFwiLFxyXG4gICAgICAgICAgXCJsZXZlbFwiOiAxXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgXCJpZFwiOiBcIjBVSjFXcWRWZm5cIixcclxuICAgICAgICBcInR5cGVcIjogXCJpbWFnZVwiLFxyXG4gICAgICAgIFwiZGF0YVwiOiB7XHJcbiAgICAgICAgICBcImNhcHRpb25cIjogXCJcIixcclxuICAgICAgICAgIFwid2l0aEJvcmRlclwiOiBmYWxzZSxcclxuICAgICAgICAgIFwid2l0aEJhY2tncm91bmRcIjogZmFsc2UsXHJcbiAgICAgICAgICBcInN0cmV0Y2hlZFwiOiBmYWxzZSxcclxuICAgICAgICAgIFwiZmlsZVwiOiB7XHJcbiAgICAgICAgICAgIFwidXJsXCI6IFwiaHR0cHM6Ly9wcm9kLXNpbXBvLnMzLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbS9pbWFnZXMvMTY5NzUyYzE3ODU4NDQzNTA0NzNDaGF0R1BUJTIwSW1hZ2UlMjBBdWclMjA0JTJDJTIwMjAyNiUyQyUyMDA1XzIyXzE4JTIwUE0ucG5nXCIsXHJcbiAgICAgICAgICAgIFwiaGVpZ2h0XCI6IFwiNTAwcHhcIlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIFwiaWRcIjogXCJZSE96bWk1WGc3XCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwicGFyYWdyYXBoXCIsXHJcbiAgICAgICAgXCJkYXRhXCI6IHtcclxuICAgICAgICAgIFwidGV4dFwiOiBcIjxzcGFuIGNsYXNzPVxcXCJcXFwiPkluIHRvZGF54oCZcyBmYXN0LXBhY2VkIHJldGFpbCBtYXJrZXQsPC9zcGFuPjxzcGFuIGNsYXNzPVxcXCJcXFwiPiBidWlsZGluZyBsb25nLXRlcm0gY3VzdG9tZXIgbG95YWx0eSBhbmQgbWFpbnRhaW5pbmcgYWN0aXZlIGVuZ2FnZW1lbnQgaXMgYSBtYWpvciBodXJkbGUgZm9yIHRyYWRpdGlvbmFsIGpld2VsZXJzLjwvc3Bhbj48c3BhbiBjbGFzcz1cXFwiXFxcIj4gV2hpbGUgZ29sZCBhbmQgc2lsdmVyIHNhdmluZyBzY2hlbWVzIChsaWtlIDEwKzEgbW9udGhseSBkZXBvc2l0IHBsYW5zKSBoYXZlIGxvbmcgYmVlbiB0aGUgYmFja2JvbmUgb2YgY3VzdG9tZXIgYWNxdWlzaXRpb24sPC9zcGFuPjxzcGFuIGNsYXNzPVxcXCJcXFwiPiBtYW5hZ2luZyB0aGVtIHRocm91Z2ggdHJhZGl0aW9uYWwgcGFwZXIgcGFzc2Jvb2tzIG9mdGVuIGxlYWRzIHRvIGxvdyBlbmdhZ2VtZW50LDwvc3Bhbj48c3BhbiBjbGFzcz1cXFwiXFxcIj4gbWlzc2VkIHBheW1lbnRzLDwvc3Bhbj48c3BhbiBjbGFzcz1cXFwiXFxcIj4gbG9zdCBwaHlzaWNhbCBib29rcyw8L3NwYW4+PHNwYW4gY2xhc3M9XFxcIlxcXCI+IGFuZCB1bHRpbWF0ZSBkcm9wLW9mZnMuPC9zcGFuPlwiXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgXCJpZFwiOiBcIm1vdUVicmZ4N3lcIixcclxuICAgICAgICBcInR5cGVcIjogXCJwYXJhZ3JhcGhcIixcclxuICAgICAgICBcImRhdGFcIjoge1xyXG4gICAgICAgICAgXCJ0ZXh0XCI6IFwiPHNwYW4gY2xhc3M9XFxcIlxcXCI+Rm9yIG11bHRpLWxvY2F0aW9uIHJldGFpbGVycyw8L3NwYW4+PHNwYW4gY2xhc3M9XFxcIlxcXCI+IHRoZXNlIGNoYWxsZW5nZXMgYXJlIGFtcGxpZmllZC48L3NwYW4+PHNwYW4gY2xhc3M9XFxcIlxcXCI+IFBoeXNpY2FsIHJlZ2lzdGVycyBhbmQgbWFudWFsIGZvbGxvdy11cHMgYXQgZWFjaCBzdG9yZSBtYWtlIGNyZWF0aW5nIGEgdW5pZmllZCB2aWV3IG9mIHRoZSBjdXN0b21lciBsZXQgYWxvbmUgdGhlIGJ1c2luZXNzIHZpcnR1YWxseSBpbXBvc3NpYmxlLjwvc3Bhbj5cIlxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIFwiaWRcIjogXCJNN1luODZJZ2pSXCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwicGFyYWdyYXBoXCIsXHJcbiAgICAgICAgXCJkYXRhXCI6IHtcclxuICAgICAgICAgIFwidGV4dFwiOiBcIjxzcGFuIGNsYXNzPVxcXCJcXFwiPlRoaXMgPC9zcGFuPjxiPmpld2VsbGVyeSBjdXN0b21lciBlbmdhZ2VtZW50IGNhc2Ugc3R1ZHk8L2I+PHNwYW4gY2xhc3M9XFxcIlxcXCI+IGRlbW9uc3RyYXRlcyBob3cgYSBwcm9taW5lbnQgcmV0YWlsIGpld2VsZXIgbGV2ZXJhZ2VkIDwvc3Bhbj48Yj5QYXNzYm9va0FwcCZuYnNwOzwvYj48c3BhbiBjbGFzcz1cXFwiXFxcIj5hIG1vZGVybiA8L3NwYW4+PGI+ZGlnaXRhbCBwYXNzYm9vayBmb3IgamV3ZWxsZXJ5IHN0b3JlczwvYj48c3BhbiBjbGFzcz1cXFwiXFxcIj4mbmJzcDt0byBvdmVyaGF1bCB0aGVpciBvcGVyYXRpb25zLDwvc3Bhbj48c3BhbiBjbGFzcz1cXFwiXFxcIj4gYXV0b21hdGUgY3VzdG9tZXIgY29tbXVuaWNhdGlvbiB2aWEgV2hhdHNBcHAsPC9zcGFuPjxzcGFuIGNsYXNzPVxcXCJcXFwiPiBhbmQgZHJpdmUgc2lnbmlmaWNhbnQgYnVzaW5lc3MgZ3Jvd3RoLjwvc3Bhbj5cIlxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIFwiaWRcIjogXCItdzVXc241NG1aXCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwiaGVhZGVyXCIsXHJcbiAgICAgICAgXCJkYXRhXCI6IHtcclxuICAgICAgICAgIFwidGV4dFwiOiBcIkZlYXR1cmVkIFN1Y2Nlc3MgU3Rvcnk6IEhvdyBQYXNzYm9va0FwcCBUb29rIExhZ3UgQmFuZGh1IEpld2VsbGVycyBmcm9tIFJlZ2lzdGVycyB0byBSZWFsLVRpbWVcIixcclxuICAgICAgICAgIFwibGV2ZWxcIjogMlxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIFwiaWRcIjogXCJ1ZFVFVFB6OXNOXCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2VcIixcclxuICAgICAgICBcImRhdGFcIjoge1xyXG4gICAgICAgICAgXCJjYXB0aW9uXCI6IFwiXCIsXHJcbiAgICAgICAgICBcIndpdGhCb3JkZXJcIjogZmFsc2UsXHJcbiAgICAgICAgICBcIndpdGhCYWNrZ3JvdW5kXCI6IGZhbHNlLFxyXG4gICAgICAgICAgXCJzdHJldGNoZWRcIjogZmFsc2UsXHJcbiAgICAgICAgICBcImZpbGVcIjoge1xyXG4gICAgICAgICAgICBcInVybFwiOiBcImh0dHBzOi8vcHJvZC1zaW1wby5zMy5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20vaW1hZ2VzLzc2NzA0NGMxNzg1ODQzODQ4MjIwU2xpZGUlMjAxNl85JTIwLSUyMDElMjAlMjg0JTI5LnBuZ1wiLFxyXG4gICAgICAgICAgICBcImhlaWdodFwiOiBcIjUwMHB4XCJcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBcImlkXCI6IFwiUEpWVUFocUw1NlwiLFxyXG4gICAgICAgIFwidHlwZVwiOiBcInBhcmFncmFwaFwiLFxyXG4gICAgICAgIFwiZGF0YVwiOiB7XHJcbiAgICAgICAgICBcInRleHRcIjogXCI8c3BhbiBjbGFzcz1cXFwiXFxcIj5MYWd1IEJhbmRodSBKZXdlbGxlcnMsPC9zcGFuPjxzcGFuIGNsYXNzPVxcXCJcXFwiPiBhIGxlZ2FjeSBicmFuZCBzaW5jZSAxOTM2IHdpdGggbXVsdGlwbGUgc3RvcmUgbG9jYXRpb25zLDwvc3Bhbj48c3BhbiBjbGFzcz1cXFwiXFxcIj4gZmFjZWQgYSBjcml0aWNhbCBvcGVyYXRpb25hbCBib3R0bGVuZWNrLjwvc3Bhbj48c3BhbiBjbGFzcz1cXFwiXFxcIj4gTWFuYWdpbmcgamV3ZWxsZXJ5IHNhdmluZyBzY2hlbWVzIGFjcm9zcyBudW1lcm91cyBicmFuY2hlcyB1c2luZyBwaHlzaWNhbCByZWdpc3RlcnMgbWVhbnQgcGF5bWVudHMgd2VyZSBkaWZmaWN1bHQgdG8gdHJhY2sgY2VudHJhbGx5LDwvc3Bhbj48c3BhbiBjbGFzcz1cXFwiXFxcIj4gZm9sbG93LXVwcyB3ZXJlIGRvbmUgbWFudWFsbHksPC9zcGFuPjxzcGFuIGNsYXNzPVxcXCJcXFwiPiBhbmQgYSBzaW5nbGUsPC9zcGFuPjxzcGFuIGNsYXNzPVxcXCJcXFwiPiB1bmlmaWVkIHZpZXcgb2YgdGhlIGJ1c2luZXNzIHdhcyBtaXNzaW5nLjwvc3Bhbj5cIlxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIFwiaWRcIjogXCJoenpGZHZTazZmXCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwicGFyYWdyYXBoXCIsXHJcbiAgICAgICAgXCJkYXRhXCI6IHtcclxuICAgICAgICAgIFwidGV4dFwiOiBcIjxzcGFuIGNsYXNzPVxcXCJcXFwiPlRoZXkgaW1wbGVtZW50ZWQgUGFzc2Jvb2tBcHAgYXMgdGhlaXIgZGVkaWNhdGVkIDwvc3Bhbj48Yj5qZXdlbGxlcnkgY3VzdG9tZXIgcmV0ZW50aW9uIHNvZnR3YXJlPC9iPjxzcGFuIGNsYXNzPVxcXCJcXFwiPiB0byByZXBsYWNlIHRoZWlyIGVudGlyZSBwYXBlci1iYXNlZCBzeXN0ZW0gd2l0aCBvbmUgZGlnaXRhbCB3b3JrZmxvdyB3aXRob3V0IGRpc3J1cHRpbmcgZXhpc3Rpbmcgb3BlcmF0aW9ucy48L3NwYW4+XCJcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBcImlkXCI6IFwiNGZwQ21xNGEwS1wiLFxyXG4gICAgICAgIFwidHlwZVwiOiBcInBhcmFncmFwaFwiLFxyXG4gICAgICAgIFwiZGF0YVwiOiB7XHJcbiAgICAgICAgICBcInRleHRcIjogXCI8c3BhbiBjbGFzcz1cXFwiXFxcIj5UaGlzIDwvc3Bhbj48Yj5qZXdlbGxlcnkgY3VzdG9tZXIgZW5nYWdlbWVudCBjYXNlIHN0dWR5PC9iPjxzcGFuIGNsYXNzPVxcXCJcXFwiPiBoaWdobGlnaHRzIHRoZSBzcGVjaWZpYyBvdXRjb21lcyBhY2hpZXZlZCBieSBMYWd1IEJhbmRodSB3aXRoIHRoZSBwbGF0Zm9ybTo8L3NwYW4+XCJcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBcImlkXCI6IFwid0IzX2E1eFJRLVwiLFxyXG4gICAgICAgIFwidHlwZVwiOiBcImxpc3RcIixcclxuICAgICAgICBcImRhdGFcIjoge1xyXG4gICAgICAgICAgXCJzdHlsZVwiOiBcInVub3JkZXJlZFwiLFxyXG4gICAgICAgICAgXCJpdGVtc1wiOiBbXHJcbiAgICAgICAgICAgIFwiPGI+Q3VzdG9tZXIgQ29udmVuaWVuY2UgdmlhIERpZ2l0YWwgUGF5bWVudHM6PC9iPiBBIGtleSBmZWF0dXJlIHdhcyBlbmFibGluZyBjdXN0b21lcnMgdG8gcGF5IGZvciB0aGVpciBtb250aGx5IHNjaGVtZXMgZGlnaXRhbGx5LCBjb21wbGV0ZWx5IGVsaW1pbmF0aW5nIHRoZSBuZWVkIGZvciBhIHN0b3JlIHZpc2l0LlwiLFxyXG4gICAgICAgICAgICBcIjxiPkNlbnRyYWxpemVkIE11bHRpLUxvY2F0aW9uIFZpZXc6PC9iPiBNYW5hZ2VtZW50IG5vdyBoYXMgYSByZWFsLXRpbWUsIGNlbnRyYWxpemVkIHNjaGVtZSB2aWV3IGFjcm9zcyBhbGwgc3RvcmUgbG9jYXRpb25zLCBhIGNydWNpYWwgZWxlbWVudCBvZiB0aGVpciA8Yj5kaWdpdGFsIHRyYW5zZm9ybWF0aW9uIGluIGpld2VsbGVyeSByZXRhaWw8L2I+LlwiLFxyXG4gICAgICAgICAgICBcIjxiPlN0cmVhbWxpbmVkIE9wZXJhdGlvbnM6PC9iPiBNYW51YWwgdHJhY2tpbmcgYW5kIGV4Y2Vzc2l2ZSBwYXBlcndvcmsgaGF2ZSBiZWVuIG5lYXJseSBlbGltaW5hdGVkLCBvcHRpbWl6aW5nIHN0YWZmIHRpbWUgZm9yIHNhbGVzLlwiXHJcbiAgICAgICAgICBdXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgXCJpZFwiOiBcImlPV2hIeHJVR3hcIixcclxuICAgICAgICBcInR5cGVcIjogXCJwYXJhZ3JhcGhcIixcclxuICAgICAgICBcImRhdGFcIjoge1xyXG4gICAgICAgICAgXCJ0ZXh0XCI6IFwiPHNwYW4gY2xhc3M9XFxcIlxcXCI+UmVmbGVjdGluZyBvbiB0aGUgaW1wbGVtZW50YXRpb24sPC9zcGFuPjxzcGFuIGNsYXNzPVxcXCJcXFwiPiBNci48L3NwYW4+PHNwYW4gY2xhc3M9XFxcIlxcXCI+IFBhcmFnIExhZ3UsPC9zcGFuPjxzcGFuIGNsYXNzPVxcXCJcXFwiPiBEaXJlY3RvciBvZiBMYWd1IEJhbmRodSw8L3NwYW4+PHNwYW4gY2xhc3M9XFxcIlxcXCI+IG5vdGVkOjwvc3Bhbj5cIlxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIFwiaWRcIjogXCIwNm1MVUZleGRLXCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwicGFyYWdyYXBoXCIsXHJcbiAgICAgICAgXCJkYXRhXCI6IHtcclxuICAgICAgICAgIFwidGV4dFwiOiBcIjxpPuKAnEFmdGVyIG1vcmUgdGhhbiB0d28geWVhcnMgd2l0aCBQYXNzYm9va0FQUCwgSSBjYW4gY29uZmlkZW50bHkgc2F5IGl04oCZcyBiZWVuIGFuIG91dHN0YW5kaW5nIGV4cGVyaWVuY2UuIFRoZWlyIHN1cHBvcnQgdGVhbSBpcyByZXNwb25zaXZlLCBrbm93bGVkZ2VhYmxlLCBhbmQgdHJ1bHkgY29tbWl0dGVkIHRvIG91ciBncm93dGguIEFueSBqZXdlbGVyIGxvb2tpbmcgdG8gc3RyZWFtbGluZSB0aGVpciBvcGVyYXRpb25zIHdvdWxkIGJlIHdpc2UgdG8gY29uc2lkZXIgUGFzc2Jvb2tBUFAu4oCdPC9pPlwiXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgXCJpZFwiOiBcIjFoVnh2WVUtb0VcIixcclxuICAgICAgICBcInR5cGVcIjogXCJoZWFkZXJcIixcclxuICAgICAgICBcImRhdGFcIjoge1xyXG4gICAgICAgICAgXCJ0ZXh0XCI6IFwiVGhlIENoYWxsZW5nZTogRnJpY3Rpb24gaW4gVHJhZGl0aW9uYWwgSmV3ZWxsZXJ5IFNhdmluZ3MgU2NoZW1lc1wiLFxyXG4gICAgICAgICAgXCJsZXZlbFwiOiAyXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgXCJpZFwiOiBcImRtZkVKZ294Q1pcIixcclxuICAgICAgICBcInR5cGVcIjogXCJwYXJhZ3JhcGhcIixcclxuICAgICAgICBcImRhdGFcIjoge1xyXG4gICAgICAgICAgXCJ0ZXh0XCI6IFwiPHNwYW4gY2xhc3M9XFxcIlxcXCI+TGFndSBCYW5kaHUncyBleHBlcmllbmNlIHBlcmZlY3RseSBtaXJyb3JzIHRoZSBsYXJnZXIgb3BlcmF0aW9uYWwgY2hhbGxlbmdlIGZhY2VkIGJ5IHRoZSBpbmR1c3RyeS48L3NwYW4+PHNwYW4gY2xhc3M9XFxcIlxcXCI+IEJlZm9yZSBwYXJ0bmVyaW5nIHdpdGggUGFzc2Jvb2tBcHAsPC9zcGFuPjxzcGFuIGNsYXNzPVxcXCJcXFwiPiB0cmFkaXRpb25hbCBtZXRob2RzIGNyZWF0ZWQgYSBwb29yIDwvc3Bhbj48Yj5qZXdlbGxlcnkgY3VzdG9tZXIgZXhwZXJpZW5jZTwvYj48c3BhbiBjbGFzcz1cXFwiXFxcIj46PC9zcGFuPlwiXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgXCJpZFwiOiBcImFwZ1ViS1BPT3dcIixcclxuICAgICAgICBcInR5cGVcIjogXCJsaXN0XCIsXHJcbiAgICAgICAgXCJkYXRhXCI6IHtcclxuICAgICAgICAgIFwic3R5bGVcIjogXCJ1bm9yZGVyZWRcIixcclxuICAgICAgICAgIFwiaXRlbXNcIjogW1xyXG4gICAgICAgICAgICBcIjxiPkhpZ2ggRHJvcC1vZmYgUmF0ZXM6PC9iPiBDdXN0b21lcnMgZnJlcXVlbnRseSBmb3Jnb3QgbW9udGhseSBpbnN0YWxsbWVudHMsIGxlYWRpbmcgdG8gbGFwc2VkIGFjY291bnRzLlwiLFxyXG4gICAgICAgICAgICBcIjxiPkxhY2sgb2YgVmlzaWJpbGl0eTo8L2I+IEN1c3RvbWVycyBjb3VsZG7igJl0IHRyYWNrIHRoZWlyIGFjY3VtdWxhdGVkIGJhbGFuY2Ugb3IgZ29sZCB3ZWlnaHQgaW4gcmVhbC10aW1lLCBkZWNyZWFzaW5nIHRoZWlyIGVtb3Rpb25hbCBpbnZlc3RtZW50IGluIHRoZSBzY2hlbWUuXCIsXHJcbiAgICAgICAgICAgIFwiPGI+TWFudWFsIEFkbWluaXN0cmF0aXZlIEJ1cmRlbjo8L2I+IFN0YWZmIHNwZW50IGNvdW50bGVzcyBob3VycyBhbnN3ZXJpbmcgYmFsYW5jZSBpbnF1aXJpZXMsIGlzc3VpbmcgcmVjZWlwdHMsIGFuZCBtYWtpbmcgbWFudWFsIHJlbWluZGVyIGNhbGxzLlwiLFxyXG4gICAgICAgICAgICBcIjxiPldlYWsgUG9zdC1NYXR1cml0eSBFbmdhZ2VtZW50OjwvYj4gT25jZSBhIHNhdmluZ3Mgc2NoZW1lIG1hdHVyZWQsIHJlZGVlbWluZyB0aGUgZmluYWwgcHJvZHVjdCBmZWx0IHRyYW5zYWN0aW9uYWwgcmF0aGVyIHRoYW4gcmV3YXJkaW5nLCBsZWFkaW5nIHRvIGxvdyByZXBlYXQgZW5nYWdlbWVudC5cIlxyXG4gICAgICAgICAgXVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIFwiaWRcIjogXCIxT3hxNlQwVGhkXCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwiaGVhZGVyXCIsXHJcbiAgICAgICAgXCJkYXRhXCI6IHtcclxuICAgICAgICAgIFwidGV4dFwiOiBcIlRoZSBTb2x1dGlvbjogRGlnaXRhbCBUcmFuc2Zvcm1hdGlvbiB3aXRoIFBhc3Nib29rQXBwXCIsXHJcbiAgICAgICAgICBcImxldmVsXCI6IDJcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBcImlkXCI6IFwiY0NwclVjOVA3OFwiLFxyXG4gICAgICAgIFwidHlwZVwiOiBcInBhcmFncmFwaFwiLFxyXG4gICAgICAgIFwiZGF0YVwiOiB7XHJcbiAgICAgICAgICBcInRleHRcIjogXCI8c3BhbiBjbGFzcz1cXFwiXFxcIj5UaGUgaW1wbGVtZW50YXRpb24gYXQgTGFndSBCYW5kaHUgbGV2ZXJhZ2VkIFBhc3Nib29rQXBw4oCZcyBjb21wbGV0ZSA8L3NwYW4+PGI+amV3ZWxsZXJ5IENSTSBzb2Z0d2FyZTwvYj48c3BhbiBjbGFzcz1cXFwiXFxcIj4gYW5kIDwvc3Bhbj48Yj5qZXdlbGxlcnkgbG95YWx0eSBzb2Z0d2FyZTwvYj48c3BhbiBjbGFzcz1cXFwiXFxcIj4gY2FwYWJpbGl0aWVzIHRvIG1vZGVybml6ZSBvcGVyYXRpb25zLjwvc3Bhbj48c3BhbiBjbGFzcz1cXFwiXFxcIj4gQnkgaW50ZWdyYXRpbmcgdGhlc2Ugc3BlY2lmaWMgdGVjaG5vbG9naWVzLDwvc3Bhbj48c3BhbiBjbGFzcz1cXFwiXFxcIj4gdGhlIHJldGFpbGVyIHdhcyBhYmxlIHRvIGFjaGlldmUgc2lnbmlmaWNhbnQgZ2FpbnM6PC9zcGFuPlwiXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgXCJpZFwiOiBcImJucTJjNFhNMmhcIixcclxuICAgICAgICBcInR5cGVcIjogXCJoZWFkZXJcIixcclxuICAgICAgICBcImRhdGFcIjoge1xyXG4gICAgICAgICAgXCJ0ZXh0XCI6IFwiMS4gRGlnaXRhbCBQYXNzYm9vayBJbXBsZW1lbnRhdGlvblwiLFxyXG4gICAgICAgICAgXCJsZXZlbFwiOiAzXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgXCJpZFwiOiBcInZKc0lXNzUzZTJcIixcclxuICAgICAgICBcInR5cGVcIjogXCJwYXJhZ3JhcGhcIixcclxuICAgICAgICBcImRhdGFcIjoge1xyXG4gICAgICAgICAgXCJ0ZXh0XCI6IFwiPHNwYW4gY2xhc3M9XFxcIlxcXCI+UmVwbGFjaW5nIHBoeXNpY2FsIGJvb2tsZXRzIHdpdGggYSBjZW50cmFsaXplZCA8L3NwYW4+PGI+ZGlnaXRhbCBwYXNzYm9vayBmb3IgamV3ZWxsZXJ5IHN0b3JlczwvYj48c3BhbiBjbGFzcz1cXFwiXFxcIj4gYWxsb3dlZCBjdXN0b21lcnMgdG8gdmlldyB0aGVpciB0b3RhbCBiYWxhbmNlLDwvc3Bhbj48c3BhbiBjbGFzcz1cXFwiXFxcIj4gcmVhbC10aW1lIGdvbGQgd2VpZ2h0LDwvc3Bhbj48c3BhbiBjbGFzcz1cXFwiXFxcIj4gcGFpZCB2cy48L3NwYW4+PHNwYW4gY2xhc3M9XFxcIlxcXCI+IHJlbWFpbmluZyBpbnN0YWxsbWVudHMsPC9zcGFuPjxzcGFuIGNsYXNzPVxcXCJcXFwiPiBhbmQgbWF0dXJpdHkgZGF0ZXMgb24tZGVtYW5kLjwvc3Bhbj5cIlxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIFwiaWRcIjogXCJkZy1QSDhvNkd4XCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwiaGVhZGVyXCIsXHJcbiAgICAgICAgXCJkYXRhXCI6IHtcclxuICAgICAgICAgIFwidGV4dFwiOiBcIjIuIFdoYXRzQXBwIEF1dG9tYXRpb24gYW5kIFJlbWluZGVyc1wiLFxyXG4gICAgICAgICAgXCJsZXZlbFwiOiAzXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgXCJpZFwiOiBcIlpvbmY4SFVaeHJcIixcclxuICAgICAgICBcInR5cGVcIjogXCJwYXJhZ3JhcGhcIixcclxuICAgICAgICBcImRhdGFcIjoge1xyXG4gICAgICAgICAgXCJ0ZXh0XCI6IFwiPHNwYW4gY2xhc3M9XFxcIlxcXCI+RGVwbG95aW5nIDwvc3Bhbj48Yj5qZXdlbGxlcnkgV2hhdHNBcHAgcmVtaW5kZXIgc29mdHdhcmU8L2I+PHNwYW4gY2xhc3M9XFxcIlxcXCI+IGVuc3VyZWQgY3VzdG9tZXJzIHJlY2VpdmVkIGF1dG9tYXRlZCByZWNlaXB0cyBmb3IgZGlnaXRhbCBwYXltZW50cyw8L3NwYW4+PHNwYW4gY2xhc3M9XFxcIlxcXCI+IHRpbWVseSBpbnN0YWxsbWVudCByZW1pbmRlcnMsPC9zcGFuPjxzcGFuIGNsYXNzPVxcXCJcXFwiPiBhbmQgbWF0dXJpdHkgbm90aWZpY2F0aW9ucyw8L3NwYW4+PHNwYW4gY2xhc3M9XFxcIlxcXCI+IGxlYWRpbmcgdG8gYW4gODUlIGltcHJvdmVtZW50IGluIHNjaGVtZSByZW5ld2Fscy48L3NwYW4+XCJcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBcImlkXCI6IFwiOVo1ci1Oa2RJNlwiLFxyXG4gICAgICAgIFwidHlwZVwiOiBcImhlYWRlclwiLFxyXG4gICAgICAgIFwiZGF0YVwiOiB7XHJcbiAgICAgICAgICBcInRleHRcIjogXCIzLiBJbnRlZ3JhdGVkIEpld2VsbGVyeSBDUk0gJmFtcDsgTWFuYWdlbWVudFwiLFxyXG4gICAgICAgICAgXCJsZXZlbFwiOiAzXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgXCJpZFwiOiBcImgyUVY5U3k2RlpcIixcclxuICAgICAgICBcInR5cGVcIjogXCJwYXJhZ3JhcGhcIixcclxuICAgICAgICBcImRhdGFcIjoge1xyXG4gICAgICAgICAgXCJ0ZXh0XCI6IFwiPHNwYW4gY2xhc3M9XFxcIlxcXCI+UGFzc2Jvb2tBcHDigJlzIGludGVncmF0ZWQgPC9zcGFuPjxiPmpld2VsbGVyeSBtYW5hZ2VtZW50IHNvZnR3YXJlPC9iPjxzcGFuIGNsYXNzPVxcXCJcXFwiPiBwcm92aWRlZCBhIHNpbmdsZSBkYXNoYm9hcmQgZm9yIGN1c3RvbWVyIHB1cmNoYXNlIGhpc3RvcnkgYW5kIHNjaGVtZSBwcm9ncmVzcy48L3NwYW4+PHNwYW4gY2xhc3M9XFxcIlxcXCI+IFRoaXMgZGF0YSBnYXZlIHN0b3JlIHN0YWZmIHBlcnNvbmFsaXplZCBpbnNpZ2h0cyB0byB1c2UgZHVyaW5nIHNob3dyb29tIHZpc2l0cy48L3NwYW4+XCJcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBcImlkXCI6IFwiaVgtMnU5UXUwOVwiLFxyXG4gICAgICAgIFwidHlwZVwiOiBcImhlYWRlclwiLFxyXG4gICAgICAgIFwiZGF0YVwiOiB7XHJcbiAgICAgICAgICBcInRleHRcIjogXCJSZXN1bHRzOiBUaGUgSW1wYWN0IG9uIEN1c3RvbWVyIEVuZ2FnZW1lbnQgYW5kIEJ1c2luZXNzIEdyb3d0aFwiLFxyXG4gICAgICAgICAgXCJsZXZlbFwiOiAyXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgXCJpZFwiOiBcIlU3emNyLWNCcFFcIixcclxuICAgICAgICBcInR5cGVcIjogXCJwYXJhZ3JhcGhcIixcclxuICAgICAgICBcImRhdGFcIjoge1xyXG4gICAgICAgICAgXCJ0ZXh0XCI6IFwiPHNwYW4gY2xhc3M9XFxcIlxcXCI+V2l0aGluIGp1c3Qgc2l4IG1vbnRocyw8L3NwYW4+PHNwYW4gY2xhc3M9XFxcIlxcXCI+IHRoZSBpbXBsZW1lbnRhdGlvbnMgZHJpdmVuIGJ5IFBhc3Nib29rQXBwIGRlbGl2ZXJlZCB0cmFuc2Zvcm1hdGl2ZSBidXNpbmVzcyByZXN1bHRzOjwvc3Bhbj5cIlxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIFwiaWRcIjogXCJxRWoyNEZaQXljXCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwibGlzdFwiLFxyXG4gICAgICAgIFwiZGF0YVwiOiB7XHJcbiAgICAgICAgICBcInN0eWxlXCI6IFwidW5vcmRlcmVkXCIsXHJcbiAgICAgICAgICBcIml0ZW1zXCI6IFtcclxuICAgICAgICAgICAgXCI8Yj40MCUgSW5jcmVhc2UgaW4gQ3VzdG9tZXIgRW5nYWdlbWVudDo8L2I+IFRoZSBkaWdpdGFsIHBhc3Nib29rIGFwcCBiZWNhbWUgYSBjcml0aWNhbCwgZGFpbHkgdG91Y2hwb2ludCBmb3IgY3VzdG9tZXJzLlwiLFxyXG4gICAgICAgICAgICBcIjxiPjg1JSBJbXByb3ZlbWVudCBpbiBTY2hlbWUgUmVuZXdhbHM6PC9iPiBBdXRvbWF0ZWQgcmVtaW5kZXJzIGVmZmVjdGl2ZWx5IGVsaW1pbmF0ZWQgbWlzc2VkIGluc3RhbGxtZW50cy5cIixcclxuICAgICAgICAgICAgXCI8Yj4zNSUgQm9vc3QgaW4gUmVwZWF0IFB1cmNoYXNlczo8L2I+IFBlcnNvbmFsaXplZCBDUk0gaW5zaWdodHMgYWxsb3dlZCB0YXJnZXRlZCBvZmZlcnMgdXBvbiBtYXR1cml0eS5cIixcclxuICAgICAgICAgICAgXCI8Yj43MCUgUmVkdWN0aW9uIGluIE9wZXJhdGlvbmFsIFdvcmtsb2FkOjwvYj4gRWxpbWluYXRpbmcgbWFudWFsIHRyYWNraW5nIGZyZWVkIHN0YWZmIGZvciBoaWdoLXZhbHVlIHNhbGVzLCBtaXJyb3JpbmcgTGFndSBCYW5kaHUncyBhZG1pbmlzdHJhdGl2ZSBzYXZpbmdzLlwiXHJcbiAgICAgICAgICBdXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgXCJpZFwiOiBcIms2ckhOeDNEMWpcIixcclxuICAgICAgICBcInR5cGVcIjogXCJoZWFkZXJcIixcclxuICAgICAgICBcImRhdGFcIjoge1xyXG4gICAgICAgICAgXCJ0ZXh0XCI6IFwiS2V5IFRha2Vhd2F5cyBmb3IgSmV3ZWxsZXJ5IE1lcmNoYW50c1wiLFxyXG4gICAgICAgICAgXCJsZXZlbFwiOiAyXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgXCJpZFwiOiBcIk1BSFFmZHZnX3NcIixcclxuICAgICAgICBcInR5cGVcIjogXCJwYXJhZ3JhcGhcIixcclxuICAgICAgICBcImRhdGFcIjoge1xyXG4gICAgICAgICAgXCJ0ZXh0XCI6IFwiPHNwYW4gY2xhc3M9XFxcIlxcXCI+VGhlIHN1Y2Nlc3NmdWwgPC9zcGFuPjxiPmpld2VsbGVyeSBzb2Z0d2FyZSBzdWNjZXNzIHN0b3J5PC9iPjxzcGFuIGNsYXNzPVxcXCJcXFwiPiBvZiByZXRhaWxlcnMgbGlrZSBMYWd1IEJhbmRodSBwcm92ZXMgdGhhdCBtb2Rlcm5pemF0aW9uIGlzIGtleSB0byBzdXN0YWluYWJsZSA8L3NwYW4+PGI+amV3ZWxsZXJ5IGJ1c2luZXNzIGdyb3d0aDwvYj48c3BhbiBjbGFzcz1cXFwiXFxcIj46PC9zcGFuPlwiXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgXCJpZFwiOiBcIjM1YTg1UnE0QzNcIixcclxuICAgICAgICBcInR5cGVcIjogXCJsaXN0XCIsXHJcbiAgICAgICAgXCJkYXRhXCI6IHtcclxuICAgICAgICAgIFwic3R5bGVcIjogXCJvcmRlcmVkXCIsXHJcbiAgICAgICAgICBcIml0ZW1zXCI6IFtcclxuICAgICAgICAgICAgXCI8Yj5MZXZlcmFnZSB0aGUgUmlnaHQgVGVjaCBmb3IgWW91ciBTY2FsZTo8L2I+IEFzIGEgPGI+amV3ZWxsZXJ5IENSTSBjYXNlIHN0dWR5PC9iPiBmb3IgbXVsdGktbG9jYXRpb24gYnVzaW5lc3NlcyBzaG93cywgY2VudHJhbGl6ZWQgdmlzaWJpbGl0eSBpcyBlc3NlbnRpYWwgZm9yIG9wZXJhdGlvbmFsIGNvbnRyb2wgYW5kIHBlcnNvbmFsaXplZCBzZXJ2aWNlLlwiLFxyXG4gICAgICAgICAgICBcIjxiPk1lZXQgQ3VzdG9tZXJzIFdoZXJlIFRoZXkgQXJlOjwvYj4gTW9kZXJuIGJ1eWVycyBkZW1hbmQgbW9iaWxlIGFjY2Vzcy4gQSA8Yj5kaWdpdGFsIHBhc3Nib29rIGZvciBqZXdlbGxlcnkgc3RvcmVzPC9iPiB3aXRoIGRpZ2l0YWwgcGF5bWVudCBvcHRpb25zIGlzIGEgYmFzZWxpbmUgZXhwZWN0YXRpb24uXCIsXHJcbiAgICAgICAgICAgIFwiPGI+QXV0b21hdGUgZm9yIEVmZmljaWVuY3k6PC9iPiBJbnRlZ3JhdGluZyA8Yj5qZXdlbGxlcnkgV2hhdHNBcHAgcmVtaW5kZXIgc29mdHdhcmU8L2I+IGNyZWF0ZXMgaGlnaC1pbXBhY3QgY29tbXVuaWNhdGlvbiB3aXRoIG1pbmltYWwgbWFudWFsIGVmZm9ydC5cIlxyXG4gICAgICAgICAgXVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIFwiaWRcIjogXCJLWlIwcGpQWXpnXCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwiaGVhZGVyXCIsXHJcbiAgICAgICAgXCJkYXRhXCI6IHtcclxuICAgICAgICAgIFwidGV4dFwiOiBcIlJlYWR5IHRvIEVsZXZhdGUgWW91ciBKZXdlbGxlcnkgU3RvcmUncyBFbmdhZ2VtZW50P1wiLFxyXG4gICAgICAgICAgXCJsZXZlbFwiOiAyXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgXCJpZFwiOiBcIk4tblFGQlJvVF9cIixcclxuICAgICAgICBcInR5cGVcIjogXCJwYXJhZ3JhcGhcIixcclxuICAgICAgICBcImRhdGFcIjoge1xyXG4gICAgICAgICAgXCJ0ZXh0XCI6IFwiPHNwYW4gY2xhc3M9XFxcIlxcXCI+SWYgeW91IGFyZSBsb29raW5nIHRvIHNjYWxlIHlvdXIgamV3ZWxsZXJ5IGJ1c2luZXNzLDwvc3Bhbj48c3BhbiBjbGFzcz1cXFwiXFxcIj4gZWxpbWluYXRlIG1hbnVhbCBhZG1pbmlzdHJhdGl2ZSBoYXNzbGUgbGlrZSBwaHlzaWNhbCByZWdpc3RlcnMsPC9zcGFuPjxzcGFuIGNsYXNzPVxcXCJcXFwiPiBhbmQgaW5jcmVhc2UgY3VzdG9tZXIgbG95YWx0eSw8L3NwYW4+PHNwYW4gY2xhc3M9XFxcIlxcXCI+IGl0J3MgdGltZSB0byB1cGdyYWRlIHlvdXIgdGVjaCBzdGFjay48L3NwYW4+XCJcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBcImlkXCI6IFwiSjVxclhkRTNsdlwiLFxyXG4gICAgICAgIFwidHlwZVwiOiBcInBhcmFncmFwaFwiLFxyXG4gICAgICAgIFwiZGF0YVwiOiB7XHJcbiAgICAgICAgICBcInRleHRcIjogXCI8c3BhbiBjbGFzcz1cXFwiXFxcIj5TZWUgaG93IFBhc3Nib29rQXBwIGhlbHBzIGpld2VsbGVyeSBidXNpbmVzc2VzIGF1dG9tYXRlIHNhdmluZ3Mgc2NoZW1lcyw8L3NwYW4+PHNwYW4gY2xhc3M9XFxcIlxcXCI+IGltcHJvdmUgcmVuZXdhbHMsPC9zcGFuPjxzcGFuIGNsYXNzPVxcXCJcXFwiPiBpbmNyZWFzZSByZXBlYXQgcHVyY2hhc2VzLDwvc3Bhbj48c3BhbiBjbGFzcz1cXFwiXFxcIj4gYW5kIGJ1aWxkIGxvbmctdGVybSBjdXN0b21lciBsb3lhbHR5Ljwvc3Bhbj5cIlxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIFwiaWRcIjogXCJyNWtDRk81MDNXXCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwicGFyYWdyYXBoXCIsXHJcbiAgICAgICAgXCJkYXRhXCI6IHtcclxuICAgICAgICAgIFwidGV4dFwiOiBcIjxiPjxhIGhyZWY9XFxcImh0dHBzOi8vd3d3LnBhc3Nib29rYXBwLmluL2RlbW9cXFwiPkJvb2sgYSBGcmVlIFBhc3Nib29rQXBwIERlbW8gVG9kYXk8L2E+PC9iPlwiXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICBdLFxyXG4gICAgXCJjcmVhdGVkQnlcIjogXCJSYWpcIixcclxuICAgIFwicG9zdFN1bW1hcnlcIjogXCJEaXNjb3ZlciBob3cgSmV3ZWxsZXJ5IHJldGFpbGVycyBlbGltaW5hdGVkIG1hbnVhbCByZWdpc3RlcnMsIGluY3JlYXNlZCBjdXN0b21lciBlbmdhZ2VtZW50LCBhbmQgc3RyZWFtbGluZWQgc2F2aW5ncyBzY2hlbWVzIHVzaW5nIFBhc3Nib29rQXBwLlwiLFxyXG4gICAgXCJwb3N0VGl0bGVcIjogXCJDYXNlIFN0dWR5OiBIb3cgYSBKZXdlbGxlcnkgUmV0YWlsZXIgSW5jcmVhc2VkICBDdXN0b21lciBFbmdhZ2VtZW50IFVzaW5nIFBhc3Nib29rQXBwXCIsXHJcbiAgICBcIm5ld1Bvc3RUaXRsZVwiOiBcIkNhc2UtU3R1ZHktSG93LWEtSmV3ZWxsZXJ5LVJldGFpbGVyLUluY3JlYXNlZC0tQ3VzdG9tZXItRW5nYWdlbWVudC1Vc2luZy1QYXNzYm9va0FwcFwiLFxyXG4gICAgXCJibG9nTWV0YVwiOiB7XHJcbiAgICAgIFwibWV0YVRpdGxlXCI6IFwiQ2FzZSBTdHVkeTogSG93IGEgSmV3ZWxsZXJ5IFJldGFpbGVyIEluY3JlYXNlZCAgQ3VzdG9tZXIgRW5nYWdlbWVudCBVc2luZyBQYXNzYm9va0FwcFwiLFxyXG4gICAgICBcIm1ldGFEZXNjcmlwdGlvblwiOiB7XHJcbiAgICAgICAgXCJuYW1lXCI6IFwiZGVzY3JpcHRpb25cIixcclxuICAgICAgICBcImNvbnRlbnRcIjogXCJEaXNjb3ZlciBob3cgSmV3ZWxsZXJ5IHJldGFpbGVycyBlbGltaW5hdGVkIG1hbnVhbCByZWdpc3RlcnMsIGluY3JlYXNlZCBjdXN0b21lciBlbmdhZ2VtZW50LCBhbmQgc3RyZWFtbGluZWQgc2F2aW5ncyBzY2hlbWVzIHVzaW5nIFBhc3Nib29rQXBwLlwiXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBcImNyZWF0ZWRUaW1lU3RhbXBcIjogXCIyMDI2LTA4LTA0VDExOjU4OjM3LjAwMCswMDowMFwiLFxyXG4gICAgXCJwdWJsaXNoZWREYXRlXCI6IG51bGwsXHJcbiAgICBcImJsb2dTY2hlZHVsZWREYXRlXCI6IFwiMjAyNi0wOC0wNFQwMDowMDowMC4wMDArMDA6MDBcIixcclxuICAgIFwiYmxvZ1NjaGVkdWxlVGltZVwiOiBcIjE3OjI5OjI0XCIsXHJcbiAgICBcImtleVdvcmRzXCI6IHtcclxuICAgICAgXCJuYW1lXCI6IFwia2V5d29yZHNcIixcclxuICAgICAgXCJjb250ZW50XCI6IFwiZGlnaXRhbCBwYXNzYm9vayBmb3IgamV3ZWxsZXJ5IHN0b3JlcyxKZXdlbGxlcnkgY3VzdG9tZXIgZW5nYWdlbWVudCxqZXdlbGxlcnkgY3VzdG9tZXIgZW5nYWdlbWVudCBzb2Z0d2FyZSxqZXdlbGxlcnkgQ1JNIHNvZnR3YXJlLGpld2VsbGVyeSBjdXN0b21lciBleHBlcmllbmNlXCJcclxuICAgIH0sXHJcbiAgICBcImF1dGhvclwiOiB7XHJcbiAgICAgIFwibmFtZVwiOiBcImF1dGhvclwiLFxyXG4gICAgICBcImNvbnRlbnRcIjogXCJQYXNzYm9va2FwcFwiXHJcbiAgICB9LFxyXG4gICAgXCJibG9nU3RhdHVzXCI6IFwiUFVCTElTSFwiLFxyXG4gICAgXCJibG9nVHlwZVwiOiBcIkJVU0lORVNTXCJcclxuICB9XHJcblxyXG4gIHRvY0l0ZW1zOiBUb2NJdGVtW10gPSBbXTtcclxuICB0b2NPcGVuID0gZmFsc2U7XHJcbiAgYWN0aXZlVG9jSWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGhlYWRpbmdCbG9ja0lkcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgaXNCcm93c2VyOiBib29sZWFuO1xyXG4gIHByaXZhdGUgdG9jT2JzZXJ2ZXI/OiBJbnRlcnNlY3Rpb25PYnNlcnZlcjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9ldmVudFNlcnZpY2U6IEV2ZW50c1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlc3RTZXJ2aWNlOiBSZXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxyXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcGxhdGZvcm1JZDogb2JqZWN0XHJcbiAgKSB7XHJcbiAgICB0aGlzLmlzQnJvd3NlciA9IGlzUGxhdGZvcm1Ccm93c2VyKHBsYXRmb3JtSWQpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmJ1aWxkVGFibGVPZkNvbnRlbnRzKCk7XHJcbiAgICB0aGlzLnJlY29yZFZpc2l0KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlc1sncmVzcG9uc2VEYXRhJ10gJiYgIWNoYW5nZXNbJ3Jlc3BvbnNlRGF0YSddLmlzRmlyc3RDaGFuZ2UoKSkge1xyXG4gICAgICB0aGlzLmJ1aWxkVGFibGVPZkNvbnRlbnRzKCk7XHJcbiAgICAgIHRoaXMucmVjb3JkVmlzaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIENvdW50cyBvbmUgcHVibGljIHZpZXcgcGVyIGJsb2cgcGVyIGJyb3dzZXIgc2Vzc2lvbiwgcGVyIHRoZSBcIkluY3JlbWVudCBibG9nIHZpc2l0c1wiIHNwZWM6XHJcbiAgLy8gUFVUIGJ1c2luZXNzL2Jsb2cvdXBkYXRlL3tibG9nSWR9LCBmaXJlLWFuZC1mb3JnZXQsIGd1YXJkZWQgc28gcmVmcmVzaC9yZS1yZW5kZXIgZG9lc24ndCBkb3VibGUtY291bnQuXHJcbiAgcHJpdmF0ZSByZWNvcmRWaXNpdCgpIHtcclxuICAgIGlmICghdGhpcy5pc0Jyb3dzZXIpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgYmxvZ0lkID0gdGhpcy5yZXNwb25zZURhdGE/LmlkO1xyXG4gICAgaWYgKCFibG9nSWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgc2Vzc2lvbktleSA9IGBibG9nLXZpc2l0LSR7YmxvZ0lkfWA7XHJcbiAgICBpZiAoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShzZXNzaW9uS2V5KSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHNlc3Npb25LZXksICcxJyk7XHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmluY3JlbWVudEJsb2dWaXNpdChibG9nSWQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6ICgpID0+IHsgfSxcclxuICAgICAgZXJyb3I6ICgpID0+IHsgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5zZXR1cFNjcm9sbFNweSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnRvY09ic2VydmVyPy5kaXNjb25uZWN0KCk7XHJcbiAgfVxyXG5cclxuICBnZXQgaGVyb0ltYWdlQmxvY2tJZCgpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIGNvbnN0IGJsb2NrczogQmxvZ0Jsb2NrW10gPSB0aGlzLnJlc3BvbnNlRGF0YT8uYmxvY2tzIHx8IFtdO1xyXG4gICAgcmV0dXJuIGJsb2Nrcy5maW5kKGJsb2NrID0+IGJsb2NrLnR5cGUgPT09ICdpbWFnZScpPy5pZCA/PyBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHRhZ3MoKTogc3RyaW5nW10ge1xyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMucmVzcG9uc2VEYXRhPy5rZXlXb3Jkcz8uY29udGVudDtcclxuICAgIGlmICghY29udGVudCkge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29udGVudFxyXG4gICAgICAuc3BsaXQoJywnKVxyXG4gICAgICAubWFwKCh0YWc6IHN0cmluZykgPT4gdGFnLnRyaW0oKSlcclxuICAgICAgLmZpbHRlcigodGFnOiBzdHJpbmcpID0+IHRhZy5sZW5ndGggPiAwKTtcclxuICB9XHJcblxyXG4gIGVkaXRTZWN0aW9uKCkge1xyXG4gICAgLy8gdGhpcy5fZXZlbnRTZXJ2aWNlLnRvZ2dsZUVkaXRvckV2ZW50LmVtaXQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgc2Nyb2xsVG9CbG9jayhldmVudDogRXZlbnQsIGJsb2NrSWQ6IHN0cmluZykge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGlmICghdGhpcy5pc0Jyb3dzZXIpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XHJcbiAgICAgIC5xdWVyeVNlbGVjdG9yKGAjYmxvY2stJHtibG9ja0lkfWApXHJcbiAgICAgID8uc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnc3RhcnQnIH0pO1xyXG4gICAgdGhpcy50b2NPcGVuID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvLyBSZWFsIHB1Ymxpc2hlZCBibG9ncyBkb24ndCBhbHdheXMgY2FycnkgYSBibG9jayBpZCAob25seSBlZGl0b3ItcHJvZHVjZWQgb25lcyBkbykuIFRoZSBUT0MsXHJcbiAgLy8gc2Nyb2xsIGFuY2hvcnMsIGFuZCBoZXJvLWltYWdlIGRldGVjdGlvbiBhbGwga2V5IG9mZiBibG9jay5pZCwgc28gYmFja2ZpbGwgYSBzdGFibGUgb25lIOKAlFxyXG4gIC8vIHN0YWJsZSBhY3Jvc3MgcmUtcmVuZGVycyBzaW5jZSBpdCdzIGRlcml2ZWQgZnJvbSB0aGUgYmxvY2sncyBmaXhlZCBwb3NpdGlvbiBpbiB0aGUgYXJyYXkuXHJcbiAgcHJpdmF0ZSBlbnN1cmVCbG9ja0lkcyhibG9ja3M6IEJsb2dCbG9ja1tdKSB7XHJcbiAgICBibG9ja3MuZm9yRWFjaCgoYmxvY2ssIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmICghYmxvY2suaWQpIHtcclxuICAgICAgICBibG9jay5pZCA9IGBibG9jay1pZHgtJHtpbmRleH1gO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRUYWJsZU9mQ29udGVudHMoKSB7XHJcbiAgICBjb25zdCBibG9ja3M6IEJsb2dCbG9ja1tdID0gdGhpcy5yZXNwb25zZURhdGE/LmJsb2NrcyB8fCBbXTtcclxuICAgIHRoaXMuZW5zdXJlQmxvY2tJZHMoYmxvY2tzKTtcclxuICAgIHRoaXMuaGVhZGluZ0Jsb2NrSWRzLmNsZWFyKCk7XHJcbiAgICB0aGlzLnRvY0l0ZW1zID0gYmxvY2tzXHJcbiAgICAgIC5tYXAoYmxvY2sgPT4gdGhpcy5nZXRIZWFkaW5nQ2FuZGlkYXRlKGJsb2NrKSlcclxuICAgICAgLmZpbHRlcigoaXRlbSk6IGl0ZW0gaXMgVG9jSXRlbSA9PiAhIWl0ZW0pO1xyXG4gICAgdGhpcy50b2NJdGVtcy5mb3JFYWNoKGl0ZW0gPT4gdGhpcy5oZWFkaW5nQmxvY2tJZHMuYWRkKGl0ZW0uaWQpKTtcclxuXHJcbiAgICBpZiAodGhpcy5pc0Jyb3dzZXIpIHtcclxuICAgICAgLy8gUmUtYXR0YWNoIHRoZSBzY3JvbGwgc3B5IHNpbmNlIHRoZSBhbmNob3JzIGl0IHdhdGNoZXMganVzdCBjaGFuZ2VkLlxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2V0dXBTY3JvbGxTcHkoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc1RvY0FuY2hvcihibG9ja0lkOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmhlYWRpbmdCbG9ja0lkcy5oYXMoYmxvY2tJZCk7XHJcbiAgfVxyXG5cclxuICBoYXNWaXNpYmxlVGV4dChodG1sOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnN0cmlwSHRtbChodG1sKS5sZW5ndGggPiAwO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRIZWFkaW5nQ2FuZGlkYXRlKGJsb2NrOiBCbG9nQmxvY2spOiBUb2NJdGVtIHwgbnVsbCB7XHJcbiAgICBpZiAoIWJsb2NrPy5pZCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYmxvY2sudHlwZSA9PT0gJ2hlYWRlcicpIHtcclxuICAgICAgY29uc3QgbGV2ZWwgPSAoYmxvY2suZGF0YT8uWydsZXZlbCddIGFzIG51bWJlcikgfHwgMjtcclxuICAgICAgY29uc3QgdGV4dCA9IHRoaXMuc3RyaXBIdG1sKGJsb2NrLmRhdGE/LlsndGV4dCddIGFzIHN0cmluZyB8IHVuZGVmaW5lZCk7XHJcbiAgICAgIGlmIChsZXZlbCA8PSAxIHx8ICF0ZXh0KSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHsgaWQ6IGJsb2NrLmlkLCB0ZXh0LCBsZXZlbCB9O1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChibG9jay50eXBlID09PSAncGFyYWdyYXBoJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5nZXRCb2xkUGFyYWdyYXBoSGVhZGluZyhibG9jayk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEJvbGRQYXJhZ3JhcGhIZWFkaW5nKGJsb2NrOiBCbG9nQmxvY2spOiBUb2NJdGVtIHwgbnVsbCB7XHJcbiAgICBjb25zdCBodG1sID0gKGJsb2NrLmRhdGE/LlsndGV4dCddIGFzIHN0cmluZykgfHwgJyc7XHJcbiAgICBpZiAoIWh0bWwuaW5jbHVkZXMoJzxzcGFuJykpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc3BhblJlZ2V4ID0gLzxzcGFuKFtePl0qKT4oW1xcc1xcU10qPyk8XFwvc3Bhbj4vZztcclxuICAgIGxldCBtYXRjaDogUmVnRXhwRXhlY0FycmF5IHwgbnVsbDtcclxuICAgIGxldCBib2xkVGV4dCA9ICcnO1xyXG4gICAgbGV0IG5vbkJvbGRUZXh0ID0gJyc7XHJcbiAgICBsZXQgbWF4Rm9udFNpemVQdCA9IDA7XHJcblxyXG4gICAgd2hpbGUgKChtYXRjaCA9IHNwYW5SZWdleC5leGVjKGh0bWwpKSkge1xyXG4gICAgICBjb25zdCBzdHlsZSA9IG1hdGNoWzFdO1xyXG4gICAgICBjb25zdCBpbm5lclRleHQgPSB0aGlzLnN0cmlwSHRtbChtYXRjaFsyXSk7XHJcbiAgICAgIGNvbnN0IGlzQm9sZCA9IC9mb250LXdlaWdodDpcXHMqKGJvbGR8WzYtOV0wMCkvaS50ZXN0KHN0eWxlKTtcclxuICAgICAgY29uc3Qgc2l6ZU1hdGNoID0gc3R5bGUubWF0Y2goL2ZvbnQtc2l6ZTpcXHMqKFtcXGQuXSspcHQvaSk7XHJcbiAgICAgIGlmIChzaXplTWF0Y2gpIHtcclxuICAgICAgICBtYXhGb250U2l6ZVB0ID0gTWF0aC5tYXgobWF4Rm9udFNpemVQdCwgcGFyc2VGbG9hdChzaXplTWF0Y2hbMV0pKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaXNCb2xkKSB7XHJcbiAgICAgICAgYm9sZFRleHQgKz0gaW5uZXJUZXh0O1xyXG4gICAgICB9IGVsc2UgaWYgKGlubmVyVGV4dCkge1xyXG4gICAgICAgIG5vbkJvbGRUZXh0ICs9IGlubmVyVGV4dDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHRleHQgPSBib2xkVGV4dC50cmltKCk7XHJcbiAgICAvLyBNaXhlZCBib2xkL3BsYWluIHRleHQgaXMgYW4gZW1waGFzaXplZCBwaHJhc2UgaW5zaWRlIGEgbm9ybWFsIHBhcmFncmFwaCwgbm90IGEgaGVhZGluZy5cclxuICAgIGlmICghdGV4dCB8fCBub25Cb2xkVGV4dC50cmltKCkgfHwgdGV4dC5sZW5ndGggPiAxMjApIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICAvLyBUaXRsZS1zaXplZCBib2xkIHRleHQgKD49MTZwdCwgbWF0Y2hpbmcgdGhlIGFydGljbGUncyBvd24gaGVhZGluZykgaXNuJ3QgYSBUT0MgZW50cnkuXHJcbiAgICBpZiAobWF4Rm9udFNpemVQdCA+PSAxNikge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4geyBpZDogYmxvY2suaWQsIHRleHQsIGxldmVsOiAyIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0cmlwSHRtbChodG1sOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFodG1sKSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICAgIHJldHVybiBodG1sXHJcbiAgICAgIC5yZXBsYWNlKC88W14+XSo+L2csICcnKVxyXG4gICAgICAucmVwbGFjZSgvJm5ic3A7L2csICcgJylcclxuICAgICAgLnJlcGxhY2UoLyZhbXA7L2csICcmJylcclxuICAgICAgLnRyaW0oKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0dXBTY3JvbGxTcHkoKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNCcm93c2VyKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMudG9jT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcclxuXHJcbiAgICBjb25zdCBhbmNob3JzID0gQXJyYXkuZnJvbShcclxuICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KFxyXG4gICAgICAgICcudG9jLWFuY2hvcidcclxuICAgICAgKVxyXG4gICAgKTtcclxuICAgIGlmICghYW5jaG9ycy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudG9jT2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoXHJcbiAgICAgIGVudHJpZXMgPT4ge1xyXG4gICAgICAgIGNvbnN0IHZpc2libGUgPSBlbnRyaWVzLmZpbHRlcihlbnRyeSA9PiBlbnRyeS5pc0ludGVyc2VjdGluZyk7XHJcbiAgICAgICAgaWYgKHZpc2libGUubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZVRvY0lkID0gdmlzaWJsZVswXS50YXJnZXQuaWQucmVwbGFjZSgnYmxvY2stJywgJycpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgeyByb290TWFyZ2luOiAnMHB4IDBweCAtNzAlIDBweCcgfVxyXG4gICAgKTtcclxuICAgIGFuY2hvcnMuZm9yRWFjaChhbmNob3IgPT4gdGhpcy50b2NPYnNlcnZlcj8ub2JzZXJ2ZShhbmNob3IpKTtcclxuICB9XHJcbn1cclxuIiwiPHNlY3Rpb24gY2xhc3M9XCJtYWluLXNlY3Rpb25cIj5cbiAgPGRpdiBjbGFzcz1cImJsb2ctY29udGFpbmVyXCI+XG4gICAgPGgxIGNsYXNzPVwiYmxvZy10aXRsZVwiICpuZ0lmPVwicmVzcG9uc2VEYXRhPy5wb3N0VGl0bGVcIj5cbiAgICAgIHt7IHJlc3BvbnNlRGF0YS5wb3N0VGl0bGUgfX1cbiAgICA8L2gxPlxuXG4gICAgPGRpdiBjbGFzcz1cIm1ldGEtYmFyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWV0YS1pdGVtXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWV0YS1sYWJlbFwiPlB1YmxpY2F0aW9uIERhdGU8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWV0YS12YWx1ZVwiPnt7XG4gICAgICAgICAgcmVzcG9uc2VEYXRhPy5wdWJsaXNoZWREYXRlIHx8XG4gICAgICAgICAgICByZXNwb25zZURhdGE/LmJsb2dTY2hlZHVsZWREYXRlIHx8XG4gICAgICAgICAgICByZXNwb25zZURhdGE/LmNyZWF0ZWRUaW1lU3RhbXAgfCBkYXRlOiAnZCBNTU1NIHknXG4gICAgICAgIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibWV0YS1pdGVtXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWV0YS1sYWJlbFwiPkF1dGhvcjwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXRhLXZhbHVlXCI+e3tcbiAgICAgICAgICByZXNwb25zZURhdGE/LmF1dGhvcj8uY29udGVudCB8fCAn4oCUJ1xuICAgICAgICB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1ldGEtaXRlbVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldGEtbGFiZWxcIj5SZWFkIFRpbWU8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWV0YS12YWx1ZVwiXG4gICAgICAgICAgPnt7IHJlc3BvbnNlRGF0YT8ucmVhZFRpbWUgfHwgJ+KAlCcgfX0gbWluIHJlYWQ8L3NwYW5cbiAgICAgICAgPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibWV0YS1pdGVtXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWV0YS1sYWJlbFwiPlZpZXdzPC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldGEtdmFsdWVcIj57eyByZXNwb25zZURhdGE/LnRvdGFsVmlzaXRzIHx8IDAgfX0rPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwidGFncy1yb3dcIiAqbmdJZj1cInRhZ3MubGVuZ3RoXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInRhZy1jaGlwXCIgKm5nRm9yPVwibGV0IHRhZyBvZiB0YWdzXCI+e3sgdGFnIHwgdGl0bGVjYXNlIH19PC9zcGFuPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImJsb2ctbGF5b3V0XCIgW2NsYXNzLndpdGgtdG9jXT1cInRvY0l0ZW1zLmxlbmd0aCA+IDFcIj5cbiAgICAgIDxhc2lkZSBjbGFzcz1cInRvYy1zaWRlYmFyXCIgKm5nSWY9XCJ0b2NJdGVtcy5sZW5ndGggPiAxXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cInRvYy10b2dnbGVcIlxuICAgICAgICAgIChjbGljayk9XCJ0b2NPcGVuID0gIXRvY09wZW5cIlxuICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwidG9jT3BlblwiPlxuICAgICAgICAgIDxzcGFuPlRhYmxlIE9mIENvbnRlbnQ8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0b2MtdG9nZ2xlLWljb25cIiBbY2xhc3Mub3Blbl09XCJ0b2NPcGVuXCI+PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRvYy1oZWFkZXJcIj5UYWJsZSBPZiBDb250ZW50PC9kaXY+XG4gICAgICAgIDxuYXYgY2xhc3M9XCJ0b2MtbGlzdFwiIFtjbGFzcy5vcGVuXT1cInRvY09wZW5cIj5cbiAgICAgICAgICA8YVxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHRvYyBvZiB0b2NJdGVtc1wiXG4gICAgICAgICAgICBjbGFzcz1cInRvYy1saW5rXCJcbiAgICAgICAgICAgIFtjbGFzcy50b2MtdG9wXT1cInRvYy5sZXZlbCA8PSAyXCJcbiAgICAgICAgICAgIFtzdHlsZS5wYWRkaW5nTGVmdC5weF09XCIodG9jLmxldmVsIC0gMikgKiAxNFwiXG4gICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVRvY0lkID09PSB0b2MuaWRcIlxuICAgICAgICAgICAgW2hyZWZdPVwiJyNibG9jay0nICsgdG9jLmlkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzY3JvbGxUb0Jsb2NrKCRldmVudCwgdG9jLmlkKVwiPlxuICAgICAgICAgICAge3sgdG9jLnRleHQgfX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvbmF2PlxuICAgICAgPC9hc2lkZT5cblxuICAgICAgPGRpdiBjbGFzcz1cImJsb2ctZGV0YWlsc1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHJlc3BvbnNlRGF0YT8uYmxvY2tzXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJpdGVtLnR5cGUgPT0gJ2hlYWRlcicgJiYgaGFzVmlzaWJsZVRleHQoaXRlbS5kYXRhPy50ZXh0KVwiXG4gICAgICAgICAgICBbaWRdPVwiJ2Jsb2NrLScgKyBpdGVtLmlkXCJcbiAgICAgICAgICAgIFtjbGFzcy50b2MtYW5jaG9yXT1cImlzVG9jQW5jaG9yKGl0ZW0uaWQpXCI+XG4gICAgICAgICAgICA8aDEgKm5nSWY9XCJpdGVtLmRhdGEubGV2ZWwgPT0gMVwiIFtpbm5lckhUTUxdPVwiaXRlbS5kYXRhLnRleHRcIj48L2gxPlxuICAgICAgICAgICAgPGgyICpuZ0lmPVwiaXRlbS5kYXRhLmxldmVsID09IDJcIiBbaW5uZXJIVE1MXT1cIml0ZW0uZGF0YS50ZXh0XCI+PC9oMj5cbiAgICAgICAgICAgIDxoMyAqbmdJZj1cIml0ZW0uZGF0YS5sZXZlbCA9PSAzXCIgW2lubmVySFRNTF09XCJpdGVtLmRhdGEudGV4dFwiPjwvaDM+XG4gICAgICAgICAgICA8aDQgKm5nSWY9XCJpdGVtLmRhdGEubGV2ZWwgPT0gNFwiIFtpbm5lckhUTUxdPVwiaXRlbS5kYXRhLnRleHRcIj48L2g0PlxuICAgICAgICAgICAgPGg1ICpuZ0lmPVwiaXRlbS5kYXRhLmxldmVsID09IDVcIiBbaW5uZXJIVE1MXT1cIml0ZW0uZGF0YS50ZXh0XCI+PC9oNT5cbiAgICAgICAgICAgIDxoNiAqbmdJZj1cIml0ZW0uZGF0YS5sZXZlbCA9PSA2XCIgW2lubmVySFRNTF09XCJpdGVtLmRhdGEudGV4dFwiPjwvaDY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJpdGVtLnR5cGUgPT0gJ3BhcmFncmFwaCcgJiYgaGFzVmlzaWJsZVRleHQoaXRlbS5kYXRhPy50ZXh0KVwiXG4gICAgICAgICAgICBbaWRdPVwiJ2Jsb2NrLScgKyBpdGVtLmlkXCJcbiAgICAgICAgICAgIFtjbGFzcy50b2MtYW5jaG9yXT1cImlzVG9jQW5jaG9yKGl0ZW0uaWQpXCI+XG4gICAgICAgICAgICA8cFxuICAgICAgICAgICAgICBjbGFzcz1cImlubmVyLXRleHRcIlxuICAgICAgICAgICAgICBbY2xhc3MuaGVhZGluZy1wYXJhZ3JhcGhdPVwiaXNUb2NBbmNob3IoaXRlbS5pZClcIlxuICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cIml0ZW0uZGF0YS50ZXh0XCI+PC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLnR5cGUgPT0gJ2xpc3QnXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5kYXRhLnN0eWxlID09ICdvcmRlcmVkJ1wiPlxuICAgICAgICAgICAgICA8b2wgY2xhc3M9XCJsaXN0LXN0eWxlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbGlzdCBvZiBpdGVtLmRhdGEuaXRlbXNcIj5cbiAgICAgICAgICAgICAgICAgIDxsaSBbaW5uZXJIVE1MXT1cImxpc3RcIj48L2xpPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L29sPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5kYXRhLnN0eWxlID09ICd1bm9yZGVyZWQnXCI+XG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3Qtc3R5bGVcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBsaXN0IG9mIGl0ZW0uZGF0YS5pdGVtc1wiPlxuICAgICAgICAgICAgICAgICAgPGxpIFtpbm5lckhUTUxdPVwibGlzdFwiPjwvbGk+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS50eXBlID09ICdkZWxpbWl0ZXInXCIgY2xhc3M9XCJjZS1kZWxpbWl0ZXJcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cIml0ZW0udHlwZSA9PSAnaW1hZ2UnXCJcbiAgICAgICAgICAgIGNsYXNzPVwiaW1hZ2UtY29udGFpbmVyXCJcbiAgICAgICAgICAgIFtjbGFzcy5oZXJvLWltYWdlXT1cIml0ZW0uaWQgPT09IGhlcm9JbWFnZUJsb2NrSWRcIj5cbiAgICAgICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBbc3JjXT1cIml0ZW0uZGF0YS5maWxlLnVybFwiIGFsdD1cIlwiIC8+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImltYWdlLWNhcHRpb25cIiAqbmdJZj1cIml0ZW0uZGF0YT8uY2FwdGlvblwiPnt7XG4gICAgICAgICAgICAgIGl0ZW0uZGF0YS5jYXB0aW9uXG4gICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS50eXBlID09ICd0YWJsZSdcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS13cmFwcGVyXCI+XG4gICAgICAgICAgICAgIDx0YWJsZVxuICAgICAgICAgICAgICAgIFtjbGFzcy50YWJsZS1uby1oZWFkaW5nXT1cIml0ZW0uZGF0YS53aXRoSGVhZGluZ3MgPT09IGZhbHNlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGF0YSBvZiBpdGVtLmRhdGEuY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRhdGFcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgW2lubmVySFRNTF09XCJpdGVtXCI+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8c2ltcG8tcmVjZW50LWJsb2ctcG9zdC1zZWN0aW9uXG4gICAgICBbcG9wdWxhcl09XCJ0cnVlXCJcbiAgICAgIFtidXNpbmVzc0lkXT1cInJlc3BvbnNlRGF0YT8uYnVzaW5lc3NJZFwiXG4gICAgICBbZXhjbHVkZUJsb2dJZF09XCJyZXNwb25zZURhdGE/LmlkXCJcbiAgICAgIFtlZGl0XT1cImZhbHNlXCI+XG4gICAgPC9zaW1wby1yZWNlbnQtYmxvZy1wb3N0LXNlY3Rpb24+XG4gIDwvZGl2PlxuPC9zZWN0aW9uPlxuIl19
528
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1ibG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvc2VjdGlvbnMvdmlldy1ibG9nL3ZpZXctYmxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL3ZpZXctYmxvZy92aWV3LWJsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RSxPQUFPLEVBRUwsU0FBUyxFQUVULE1BQU0sRUFDTixLQUFLLEVBSUwsV0FBVyxHQUVaLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDOzs7OztBQXFCaEgsTUFBTSxPQUFPLGlCQUFpQjtJQWdWNUIsWUFDbUIsYUFBNEIsRUFDNUIsV0FBd0IsRUFDeEIsV0FBb0MsRUFDaEMsVUFBa0I7UUFIdEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZ0JBQVcsR0FBWCxXQUFXLENBQXlCO1FBalY5QyxpQkFBWSxHQUFRO1lBQzNCLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLGlCQUFpQixFQUFFLEVBQUU7WUFDckIsV0FBVyxFQUFFLFFBQVE7WUFDckIsYUFBYSxFQUFFLHNGQUFzRjtZQUNyRyxrQkFBa0IsRUFBRSwrQkFBK0I7WUFDbkQsVUFBVSxFQUFFLEdBQUc7WUFDZixXQUFXLEVBQUUsR0FBRztZQUNoQixhQUFhLEVBQUUsQ0FBQztZQUNoQixJQUFJLEVBQUUsc0NBQXNDO1lBQzVDLFlBQVksRUFBRSxzQ0FBc0M7WUFDcEQsTUFBTSxFQUFFLENBQUM7WUFDVCxTQUFTLEVBQUUsRUFBRTtZ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Q3hCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUM3QyxhQUFhLENBQ2QsQ0FDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxvQkFBb0IsQ0FDekMsT0FBTyxDQUFDLEVBQUU7WUFDUixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzlELElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNuQixJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDaEUsQ0FBQztRQUNILENBQUMsRUFDRCxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxDQUNuQyxDQUFDO1FBQ0YsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQzsrR0FwaUJVLGlCQUFpQixvR0FvVmxCLFdBQVc7bUdBcFZWLGlCQUFpQiwwSUNwQzlCLDgyS0F3SUEsa2pKRHhHWSxZQUFZLGdYQUFZLDhCQUE4Qjs7NEZBSXJELGlCQUFpQjtrQkFQN0IsU0FBUzsrQkFDRSxpQkFBaUIsY0FDZixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLDhCQUE4QixDQUFDOzswQkF3VjlELE1BQU07MkJBQUMsV0FBVzt5Q0FsVlosWUFBWTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSwgRGF0ZVBpcGUsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBQTEFURk9STV9JRCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi9zZXJ2aWNlcy9ldmVudHMuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSZWNlbnRCbG9nUG9zdFNlY3Rpb25Db21wb25lbnQgfSBmcm9tICcuLi9yZWNlbnQtYmxvZy1wb3N0LXNlY3Rpb24vcmVjZW50LWJsb2ctcG9zdC1zZWN0aW9uLmNvbXBvbmVudCc7XHJcblxyXG5pbnRlcmZhY2UgVG9jSXRlbSB7XHJcbiAgaWQ6IHN0cmluZztcclxuICB0ZXh0OiBzdHJpbmc7XHJcbiAgbGV2ZWw6IG51bWJlcjtcclxufVxyXG5cclxuaW50ZXJmYWNlIEJsb2dCbG9jayB7XHJcbiAgaWQ6IHN0cmluZztcclxuICB0eXBlOiBzdHJpbmc7XHJcbiAgZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLXZpZXctYmxvZycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBEYXRlUGlwZSwgUmVjZW50QmxvZ1Bvc3RTZWN0aW9uQ29tcG9uZW50XSxcclxuICB0ZW1wbGF0ZVVybDogJy4vdmlldy1ibG9nLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vdmlldy1ibG9nLmNvbXBvbmVudC5jc3MnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVmlld0Jsb2dDb21wb25lbnRcclxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIHJlc3BvbnNlRGF0YTogYW55ID0ge1xyXG4gICAgXCJzdWJJbmR1c3RyeUlkXCI6IG51bGwsXHJcbiAgICBcInN1YkluZHVzdHJ5TmFtZVwiOiBcIlwiLFxyXG4gICAgXCJkaXNwbGF5SWRcIjogXCJCRzE3ODRcIixcclxuICAgIFwiYXJ0aWNsZVNsdWdcIjogXCJDYXNlLVN0dWR5LUhvdy1hLUpld2VsbGVyeS1SZXRhaWxlci1JbmNyZWFzZWQtLUN1c3RvbWVyLUVuZ2FnZW1lbnQtVXNpbmctUGFzc2Jvb2tBcHBcIixcclxuICAgIFwidXBkYXRlZFRpbWVTdGFtcFwiOiBcIjIwMjYtMDgtMDRUMTE6NTk6MjQuMDAwKzAwOjAwXCIsXHJcbiAgICBcInJlYWRUaW1lXCI6IFwiM1wiLFxyXG4gICAgXCJ3b3JkQ291bnRcIjogNjM0LFxyXG4gICAgXCJ0b3RhbFZpc2l0c1wiOiAwLFxyXG4gICAgXCJpZFwiOiBcIjFmMThmZmJkLTNmOTgtNjVjMy1hMzc3LTlkMjlhNzgxYjk3OFwiLFxyXG4gICAgXCJidXNpbmVzc0lkXCI6IFwiMWYxOTU2N2EtY2UyNi02NzkwLThhMTQtYzc4NmZjMDg0YTgyXCIsXHJcbiAgICBcInRpbWVcIjogMCxcclxuICAgIFwidmVyc2lvblwiOiBcIlwiLFxyXG4gICAgXCJibG9ja3NcIjogW1xyXG4gICAgICB7XHJcbiAgICAgICAgXCJpZFwiOiBcInUyelI0UTdBVXlcIixcclxuICAgICAgICBcInR5cGVcIjogXCJoZWFkZXJcIixcclxuICAgICAgICBcImRhdGFcIjoge1xyXG4gICAgICAgICAgXCJ0ZXh0XCI6IFwiQ2FzZSBTdHVkeTogSG93IGEgSmV3ZWxsZXJ5IFJldGFpbGVyIEluY3JlYXNlZCBDdXN0b21lciBFbmdhZ2VtZW50IGJ5IDQwJSBVc2luZyBQYXNzYm9va0FwcFwiLFxyXG4gICAgICAgICAgXCJsZXZlbFwiOiAxXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgXCJpZFwiOiBcIjBVSjFXcWRWZm5cIixcclxuICAgICAgICBcInR5cGVcIjogXCJpbWFnZVwiLFxyXG4gICAgICAgIFwiZGF0YVwiOiB7XHJcbiAgICAgICAgICBcImNhcHRpb25cIjogXCJcIixcclxuICAgICAgICAgIFwid2l0aEJvcmRlclwiOiBmYWxzZSxcclxuICAgICAgICAgIFwid2l0aEJhY2tncm91bmRcIjogZmFsc2UsXHJcbiAgICAgICAgICBcInN0cmV0Y2hlZFwiOiBmYWxzZSxcclxuICAgICAgICAgIFwiZmlsZVwiOiB7XHJcbiAgICAgICAgICAgIFwidXJsXCI6IFwiaHR0cHM6Ly9wcm9kLXNpbXBvLnMzLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbS9pbWFnZXMvMTY5NzUyYzE3ODU4NDQzNTA0NzNDaGF0R1BUJTIwSW1hZ2UlMjBBdWclMjA0JTJDJTIwMjAyNiUyQyUyMDA1XzIyXzE4JTIwUE0ucG5nXCIsXHJcbiAgICAgICAgICAgIFwiaGVpZ2h0XCI6IFwiNTAwcHhcIlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIFwiaWRcIjogXCJZSE96bWk1WGc3XCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwicGFyYWdyYXBoXCIsXHJcbiAgICAgICAgXCJkYXRhXCI6IHtcclxuICAgICAgICAgIFwidGV4dFwiOiBcIjxzcGFuIGNsYXNzPVxcXCJcXFwiPkluIHRvZGF54oCZcyBmYXN0LXBhY2VkIHJldGFpbCBtYXJrZXQsPC9zcGFuPjxzcGFuIGNsYXNzPVxcXCJcXFwiPiBidWlsZGluZyBsb25nLXRlcm0gY3VzdG9tZXIgbG95YWx0eSBhbmQgbWFpbnRhaW5pbmcgYWN0aXZlIGVuZ2FnZW1lbnQgaXMgYSBtYWpvciBodXJkbGUgZm9yIHRyYWRpdGlvbmFsIGpld2VsZXJzLjwvc3Bhbj48c3BhbiBjbGFzcz1cXFwiXFxcIj4gV2hpbGUgZ29sZCBhbmQgc2lsdmVyIHNhdmluZyBzY2hlbWVzIChsaWtlIDEwKzEgbW9udGhseSBkZXBvc2l0IHBsYW5zKSBoYXZlIGxvbmcgYmVlbiB0aGUgYmFja2JvbmUgb2YgY3VzdG9tZXIgYWNxdWlzaXRpb24sPC9zcGFuPjxzcGFuIGNsYXNzPVxcXCJcXFwiPiBtYW5hZ2luZyB0aGVtIHRocm91Z2ggdHJhZGl0aW9uYWwgcGFwZXIgcGFzc2Jvb2tzIG9mdGVuIGxlYWRzIHRvIGxvdyBlbmdhZ2VtZW50LDwvc3Bhbj48c3BhbiBjbGFzcz1cXFwiXFxcIj4gbWlzc2VkIHBheW1lbnRzLDwvc3Bhbj48c3BhbiBjbGFzcz1cXFwiXFxcIj4gbG9zdCBwaHlzaWNhbCBib29rcyw8L3NwYW4+PHNwYW4gY2xhc3M9XFxcIlxcXCI+IGFuZCB1bHRpbWF0ZSBkcm9wLW9mZnMuPC9zcGFuPlwiXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgXCJpZFwiOiBcIm1vdUVicmZ4N3lcIixcclxuICAgICAgICBcInR5cGVcIjogXCJwYXJhZ3JhcGhcIixcclxuICAgICAgICBcImRhdGFcIjoge1xyXG4gICAgICAgICAgXCJ0ZXh0XCI6IFwiPHNwYW4gY2xhc3M9XFxcIlxcXCI+Rm9yIG11bHRpLWxvY2F0aW9uIHJldGFpbGVycyw8L3NwYW4+PHNwYW4gY2xhc3M9XFxcIlxcXCI+IHRoZXNlIGNoYWxsZW5nZXMgYXJlIGFtcGxpZmllZC48L3NwYW4+PHNwYW4gY2xhc3M9XFxcIlxcXCI+IFBoeXNpY2FsIHJlZ2lzdGVycyBhbmQgbWFudWFsIGZvbGxvdy11cHMgYXQgZWFjaCBzdG9yZSBtYWtlIGNyZWF0aW5nIGEgdW5pZmllZCB2aWV3IG9mIHRoZSBjdXN0b21lciBsZXQgYWxvbmUgdGhlIGJ1c2luZXNzIHZpcnR1YWxseSBpbXBvc3NpYmxlLjwvc3Bhbj5cIlxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIFwiaWRcIjogXCJNN1luODZJZ2pSXCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwicGFyYWdyYXBoXCIsXHJcbiAgICAgICAgXCJkYXRhXCI6IHtcclxuICAgICAgICAgIFwidGV4dFwiOiBcIjxzcGFuIGNsYXNzPVxcXCJcXFwiPlRoaXMgPC9zcGFuPjxiPmpld2VsbGVyeSBjdXN0b21lciBlbmdhZ2VtZW50IGNhc2Ugc3R1ZHk8L2I+PHNwYW4gY2xhc3M9XFxcIlxcXCI+IGRlbW9uc3RyYXRlcyBob3cgYSBwcm9taW5lbnQgcmV0YWlsIGpld2VsZXIgbGV2ZXJhZ2VkIDwvc3Bhbj48Yj5QYXNzYm9va0FwcCZuYnNwOzwvYj48c3BhbiBjbGFzcz1cXFwiXFxcIj5hIG1vZGVybiA8L3NwYW4+PGI+ZGlnaXRhbCBwYXNzYm9vayBmb3IgamV3ZWxsZXJ5IHN0b3JlczwvYj48c3BhbiBjbGFzcz1cXFwiXFxcIj4mbmJzcDt0byBvdmVyaGF1bCB0aGVpciBvcGVyYXRpb25zLDwvc3Bhbj48c3BhbiBjbGFzcz1cXFwiXFxcIj4gYXV0b21hdGUgY3VzdG9tZXIgY29tbXVuaWNhdGlvbiB2aWEgV2hhdHNBcHAsPC9zcGFuPjxzcGFuIGNsYXNzPVxcXCJcXFwiPiBhbmQgZHJpdmUgc2lnbmlmaWNhbnQgYnVzaW5lc3MgZ3Jvd3RoLjwvc3Bhbj5cIlxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIFwiaWRcIjogXCItdzVXc241NG1aXCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwiaGVhZGVyXCIsXHJcbiAgICAgICAgXCJkYXRhXCI6IHtcclxuICAgICAgICAgIFwidGV4dFwiOiBcIkZlYXR1cmVkIFN1Y2Nlc3MgU3Rvcnk6IEhvdyBQYXNzYm9va0FwcCBUb29rIExhZ3UgQmFuZGh1IEpld2VsbGVycyBmcm9tIFJlZ2lzdGVycyB0byBSZWFsLVRpbWVcIixcclxuICAgICAgICAgIFwibGV2ZWxcIjogMlxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIFwiaWRcIjogXCJ1ZFVFVFB6OXNOXCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2VcIixcclxuICAgICAgICBcImRhdGFcIjoge1xyXG4gICAgICAgICAgXCJjYXB0aW9uXCI6IFwiXCIsXHJcbiAgICAgICAgICBcIndpdGhCb3JkZXJcIjogZmFsc2UsXHJcbiAgICAgICAgICBcIndpdGhCYWNrZ3JvdW5kXCI6IGZhbHNlLFxyXG4gICAgICAgICAgXCJzdHJldGNoZWRcIjogZmFsc2UsXHJcbiAgICAgICAgICBcImZpbGVcIjoge1xyXG4gICAgICAgICAgICBcInVybFwiOiBcImh0dHBzOi8vcHJvZC1zaW1wby5zMy5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20vaW1hZ2VzLzc2NzA0NGMxNzg1ODQzODQ4MjIwU2xpZGUlMjAxNl85JTIwLSUyMDElMjAlMjg0JTI5LnBuZ1wiLFxyXG4gICAgICAgICAgICBcImhlaWdodFwiOiBcIjUwMHB4XCJcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBcImlkXCI6IFwiUEpWVUFocUw1NlwiLFxyXG4gICAgICAgIFwidHlwZVwiOiBcInBhcmFncmFwaFwiLFxyXG4gICAgICAgIFwiZGF0YVwiOiB7XHJcbiAgICAgICAgICBcInRleHRcIjogXCI8c3BhbiBjbGFzcz1cXFwiXFxcIj5MYWd1IEJhbmRodSBKZXdlbGxlcnMsPC9zcGFuPjxzcGFuIGNsYXNzPVxcXCJcXFwiPiBhIGxlZ2FjeSBicmFuZCBzaW5jZSAxOTM2IHdpdGggbXVsdGlwbGUgc3RvcmUgbG9jYXRpb25zLDwvc3Bhbj48c3BhbiBjbGFzcz1cXFwiXFxcIj4gZmFjZWQgYSBjcml0aWNhbCBvcGVyYXRpb25hbCBib3R0bGVuZWNrLjwvc3Bhbj48c3BhbiBjbGFzcz1cXFwiXFxcIj4gTWFuYWdpbmcgamV3ZWxsZXJ5IHNhdmluZyBzY2hlbWVzIGFjcm9zcyBudW1lcm91cyBicmFuY2hlcyB1c2luZyBwaHlzaWNhbCByZWdpc3RlcnMgbWVhbnQgcGF5bWVudHMgd2VyZSBkaWZmaWN1bHQgdG8gdHJhY2sgY2VudHJhbGx5LDwvc3Bhbj48c3BhbiBjbGFzcz1cXFwiXFxcIj4gZm9sbG93LXVwcyB3ZXJlIGRvbmUgbWFudWFsbHksPC9zcGFuPjxzcGFuIGNsYXNzPVxcXCJcXFwiPiBhbmQgYSBzaW5nbGUsPC9zcGFuPjxzcGFuIGNsYXNzPVxcXCJcXFwiPiB1bmlmaWVkIHZpZXcgb2YgdGhlIGJ1c2luZXNzIHdhcyBtaXNzaW5nLjwvc3Bhbj5cIlxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIFwiaWRcIjogXCJoenpGZHZTazZmXCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwicGFyYWdyYXBoXCIsXHJcbiAgICAgICAgXCJkYXRhXCI6IHtcclxuICAgICAgICAgIFwidGV4dFwiOiBcIjxzcGFuIGNsYXNzPVxcXCJcXFwiPlRoZXkgaW1wbGVtZW50ZWQgUGFzc2Jvb2tBcHAgYXMgdGhlaXIgZGVkaWNhdGVkIDwvc3Bhbj48Yj5qZXdlbGxlcnkgY3VzdG9tZXIgcmV0ZW50aW9uIHNvZnR3YXJlPC9iPjxzcGFuIGNsYXNzPVxcXCJcXFwiPiB0byByZXBsYWNlIHRoZWlyIGVudGlyZSBwYXBlci1iYXNlZCBzeXN0ZW0gd2l0aCBvbmUgZGlnaXRhbCB3b3JrZmxvdyB3aXRob3V0IGRpc3J1cHRpbmcgZXhpc3Rpbmcgb3BlcmF0aW9ucy48L3NwYW4+XCJcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBcImlkXCI6IFwiNGZwQ21xNGEwS1wiLFxyXG4gICAgICAgIFwidHlwZVwiOiBcInBhcmFncmFwaFwiLFxyXG4gICAgICAgIFwiZGF0YVwiOiB7XHJcbiAgICAgICAgICBcInRleHRcIjogXCI8c3BhbiBjbGFzcz1cXFwiXFxcIj5UaGlzIDwvc3Bhbj48Yj5qZXdlbGxlcnkgY3VzdG9tZXIgZW5nYWdlbWVudCBjYXNlIHN0dWR5PC9iPjxzcGFuIGNsYXNzPVxcXCJcXFwiPiBoaWdobGlnaHRzIHRoZSBzcGVjaWZpYyBvdXRjb21lcyBhY2hpZXZlZCBieSBMYWd1IEJhbmRodSB3aXRoIHRoZSBwbGF0Zm9ybTo8L3NwYW4+XCJcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBcImlkXCI6IFwid0IzX2E1eFJRLVwiLFxyXG4gICAgICAgIFwidHlwZVwiOiBcImxpc3RcIixcclxuICAgICAgICBcImRhdGFcIjoge1xyXG4gICAgICAgICAgXCJzdHlsZVwiOiBcInVub3JkZXJlZFwiLFxyXG4gICAgICAgICAgXCJpdGVtc1wiOiBbXHJcbiAgICAgICAgICAgIFwiPGI+Q3VzdG9tZXIgQ29udmVuaWVuY2UgdmlhIERpZ2l0YWwgUGF5bWVudHM6PC9iPiBBIGtleSBmZWF0dXJlIHdhcyBlbmFibGluZyBjdXN0b21lcnMgdG8gcGF5IGZvciB0aGVpciBtb250aGx5IHNjaGVtZXMgZGlnaXRhbGx5LCBjb21wbGV0ZWx5IGVsaW1pbmF0aW5nIHRoZSBuZWVkIGZvciBhIHN0b3JlIHZpc2l0LlwiLFxyXG4gICAgICAgICAgICBcIjxiPkNlbnRyYWxpemVkIE11bHRpLUxvY2F0aW9uIFZpZXc6PC9iPiBNYW5hZ2VtZW50IG5vdyBoYXMgYSByZWFsLXRpbWUsIGNlbnRyYWxpemVkIHNjaGVtZSB2aWV3IGFjcm9zcyBhbGwgc3RvcmUgbG9jYXRpb25zLCBhIGNydWNpYWwgZWxlbWVudCBvZiB0aGVpciA8Yj5kaWdpdGFsIHRyYW5zZm9ybWF0aW9uIGluIGpld2VsbGVyeSByZXRhaWw8L2I+LlwiLFxyXG4gICAgICAgICAgICBcIjxiPlN0cmVhbWxpbmVkIE9wZXJhdGlvbnM6PC9iPiBNYW51YWwgdHJhY2tpbmcgYW5kIGV4Y2Vzc2l2ZSBwYXBlcndvcmsgaGF2ZSBiZWVuIG5lYXJseSBlbGltaW5hdGVkLCBvcHRpbWl6aW5nIHN0YWZmIHRpbWUgZm9yIHNhbGVzLlwiXHJcbiAgICAgICAgICBdXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgXCJpZFwiOiBcImlPV2hIeHJVR3hcIixcclxuICAgICAgICBcInR5cGVcIjogXCJwYXJhZ3JhcGhcIixcclxuICAgICAgICBcImRhdGFcIjoge1xyXG4gICAgICAgICAgXCJ0ZXh0XCI6IFwiPHNwYW4gY2xhc3M9XFxcIlxcXCI+UmVmbGVjdGluZyBvbiB0aGUgaW1wbGVtZW50YXRpb24sPC9zcGFuPjxzcGFuIGNsYXNzPVxcXCJcXFwiPiBNci48L3NwYW4+PHNwYW4gY2xhc3M9XFxcIlxcXCI+IFBhcmFnIExhZ3UsPC9zcGFuPjxzcGFuIGNsYXNzPVxcXCJcXFwiPiBEaXJlY3RvciBvZiBMYWd1IEJhbmRodSw8L3NwYW4+PHNwYW4gY2xhc3M9XFxcIlxcXCI+IG5vdGVkOjwvc3Bhbj5cIlxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIFwiaWRcIjogXCIwNm1MVUZleGRLXCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwicGFyYWdyYXBoXCIsXHJcbiAgICAgICAgXCJkYXRhXCI6IHtcclxuICAgICAgICAgIFwidGV4dFwiOiBcIjxpPuKAnEFmdGVyIG1vcmUgdGhhbiB0d28geWVhcnMgd2l0aCBQYXNzYm9va0FQUCwgSSBjYW4gY29uZmlkZW50bHkgc2F5IGl04oCZcyBiZWVuIGFuIG91dHN0YW5kaW5nIGV4cGVyaWVuY2UuIFRoZWlyIHN1cHBvcnQgdGVhbSBpcyByZXNwb25zaXZlLCBrbm93bGVkZ2VhYmxlLCBhbmQgdHJ1bHkgY29tbWl0dGVkIHRvIG91ciBncm93dGguIEFueSBqZXdlbGVyIGxvb2tpbmcgdG8gc3RyZWFtbGluZSB0aGVpciBvcGVyYXRpb25zIHdvdWxkIGJlIHdpc2UgdG8gY29uc2lkZXIgUGFzc2Jvb2tBUFAu4oCdPC9pPlwiXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgXCJpZFwiOiBcIjFoVnh2WVUtb0VcIixcclxuICAgICAgICBcInR5cGVcIjogXCJoZWFkZXJcIixcclxuICAgICAgICBcImRhdGFcIjoge1xyXG4gICAgICAgICAgXCJ0ZXh0XCI6IFwiVGhlIENoYWxsZW5nZTogRnJpY3Rpb24gaW4gVHJhZGl0aW9uYWwgSmV3ZWxsZXJ5IFNhdmluZ3MgU2NoZW1lc1wiLFxyXG4gICAgICAgICAgXCJsZXZlbFwiOiAyXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgXCJpZFwiOiBcImRtZkVKZ294Q1pcIixcclxuICAgICAgICBcInR5cGVcIjogXCJwYXJhZ3JhcGhcIixcclxuICAgICAgICBcImRhdGFcIjoge1xyXG4gICAgICAgICAgXCJ0ZXh0XCI6IFwiPHNwYW4gY2xhc3M9XFxcIlxcXCI+TGFndSBCYW5kaHUncyBleHBlcmllbmNlIHBlcmZlY3RseSBtaXJyb3JzIHRoZSBsYXJnZXIgb3BlcmF0aW9uYWwgY2hhbGxlbmdlIGZhY2VkIGJ5IHRoZSBpbmR1c3RyeS48L3NwYW4+PHNwYW4gY2xhc3M9XFxcIlxcXCI+IEJlZm9yZSBwYXJ0bmVyaW5nIHdpdGggUGFzc2Jvb2tBcHAsPC9zcGFuPjxzcGFuIGNsYXNzPVxcXCJcXFwiPiB0cmFkaXRpb25hbCBtZXRob2RzIGNyZWF0ZWQgYSBwb29yIDwvc3Bhbj48Yj5qZXdlbGxlcnkgY3VzdG9tZXIgZXhwZXJpZW5jZTwvYj48c3BhbiBjbGFzcz1cXFwiXFxcIj46PC9zcGFuPlwiXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgXCJpZFwiOiBcImFwZ1ViS1BPT3dcIixcclxuICAgICAgICBcInR5cGVcIjogXCJsaXN0XCIsXHJcbiAgICAgICAgXCJkYXRhXCI6IHtcclxuICAgICAgICAgIFwic3R5bGVcIjogXCJ1bm9yZGVyZWRcIixcclxuICAgICAgICAgIFwiaXRlbXNcIjogW1xyXG4gICAgICAgICAgICBcIjxiPkhpZ2ggRHJvcC1vZmYgUmF0ZXM6PC9iPiBDdXN0b21lcnMgZnJlcXVlbnRseSBmb3Jnb3QgbW9udGhseSBpbnN0YWxsbWVudHMsIGxlYWRpbmcgdG8gbGFwc2VkIGFjY291bnRzLlwiLFxyXG4gICAgICAgICAgICBcIjxiPkxhY2sgb2YgVmlzaWJpbGl0eTo8L2I+IEN1c3RvbWVycyBjb3VsZG7igJl0IHRyYWNrIHRoZWlyIGFjY3VtdWxhdGVkIGJhbGFuY2Ugb3IgZ29sZCB3ZWlnaHQgaW4gcmVhbC10aW1lLCBkZWNyZWFzaW5nIHRoZWlyIGVtb3Rpb25hbCBpbnZlc3RtZW50IGluIHRoZSBzY2hlbWUuXCIsXHJcbiAgICAgICAgICAgIFwiPGI+TWFudWFsIEFkbWluaXN0cmF0aXZlIEJ1cmRlbjo8L2I+IFN0YWZmIHNwZW50IGNvdW50bGVzcyBob3VycyBhbnN3ZXJpbmcgYmFsYW5jZSBpbnF1aXJpZXMsIGlzc3VpbmcgcmVjZWlwdHMsIGFuZCBtYWtpbmcgbWFudWFsIHJlbWluZGVyIGNhbGxzLlwiLFxyXG4gICAgICAgICAgICBcIjxiPldlYWsgUG9zdC1NYXR1cml0eSBFbmdhZ2VtZW50OjwvYj4gT25jZSBhIHNhdmluZ3Mgc2NoZW1lIG1hdHVyZWQsIHJlZGVlbWluZyB0aGUgZmluYWwgcHJvZHVjdCBmZWx0IHRyYW5zYWN0aW9uYWwgcmF0aGVyIHRoYW4gcmV3YXJkaW5nLCBsZWFkaW5nIHRvIGxvdyByZXBlYXQgZW5nYWdlbWVudC5cIlxyXG4gICAgICAgICAgXVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIFwiaWRcIjogXCIxT3hxNlQwVGhkXCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwiaGVhZGVyXCIsXHJcbiAgICAgICAgXCJkYXRhXCI6IHtcclxuICAgICAgICAgIFwidGV4dFwiOiBcIlRoZSBTb2x1dGlvbjogRGlnaXRhbCBUcmFuc2Zvcm1hdGlvbiB3aXRoIFBhc3Nib29rQXBwXCIsXHJcbiAgICAgICAgICBcImxldmVsXCI6IDJcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBcImlkXCI6IFwiY0NwclVjOVA3OFwiLFxyXG4gICAgICAgIFwidHlwZVwiOiBcInBhcmFncmFwaFwiLFxyXG4gICAgICAgIFwiZGF0YVwiOiB7XHJcbiAgICAgICAgICBcInRleHRcIjogXCI8c3BhbiBjbGFzcz1cXFwiXFxcIj5UaGUgaW1wbGVtZW50YXRpb24gYXQgTGFndSBCYW5kaHUgbGV2ZXJhZ2VkIFBhc3Nib29rQXBw4oCZcyBjb21wbGV0ZSA8L3NwYW4+PGI+amV3ZWxsZXJ5IENSTSBzb2Z0d2FyZTwvYj48c3BhbiBjbGFzcz1cXFwiXFxcIj4gYW5kIDwvc3Bhbj48Yj5qZXdlbGxlcnkgbG95YWx0eSBzb2Z0d2FyZTwvYj48c3BhbiBjbGFzcz1cXFwiXFxcIj4gY2FwYWJpbGl0aWVzIHRvIG1vZGVybml6ZSBvcGVyYXRpb25zLjwvc3Bhbj48c3BhbiBjbGFzcz1cXFwiXFxcIj4gQnkgaW50ZWdyYXRpbmcgdGhlc2Ugc3BlY2lmaWMgdGVjaG5vbG9naWVzLDwvc3Bhbj48c3BhbiBjbGFzcz1cXFwiXFxcIj4gdGhlIHJldGFpbGVyIHdhcyBhYmxlIHRvIGFjaGlldmUgc2lnbmlmaWNhbnQgZ2FpbnM6PC9zcGFuPlwiXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgXCJpZFwiOiBcImJucTJjNFhNMmhcIixcclxuICAgICAgICBcInR5cGVcIjogXCJoZWFkZXJcIixcclxuICAgICAgICBcImRhdGFcIjoge1xyXG4gICAgICAgICAgXCJ0ZXh0XCI6IFwiMS4gRGlnaXRhbCBQYXNzYm9vayBJbXBsZW1lbnRhdGlvblwiLFxyXG4gICAgICAgICAgXCJsZXZlbFwiOiAzXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgXCJpZFwiOiBcInZKc0lXNzUzZTJcIixcclxuICAgICAgICBcInR5cGVcIjogXCJwYXJhZ3JhcGhcIixcclxuICAgICAgICBcImRhdGFcIjoge1xyXG4gICAgICAgICAgXCJ0ZXh0XCI6IFwiPHNwYW4gY2xhc3M9XFxcIlxcXCI+UmVwbGFjaW5nIHBoeXNpY2FsIGJvb2tsZXRzIHdpdGggYSBjZW50cmFsaXplZCA8L3NwYW4+PGI+ZGlnaXRhbCBwYXNzYm9vayBmb3IgamV3ZWxsZXJ5IHN0b3JlczwvYj48c3BhbiBjbGFzcz1cXFwiXFxcIj4gYWxsb3dlZCBjdXN0b21lcnMgdG8gdmlldyB0aGVpciB0b3RhbCBiYWxhbmNlLDwvc3Bhbj48c3BhbiBjbGFzcz1cXFwiXFxcIj4gcmVhbC10aW1lIGdvbGQgd2VpZ2h0LDwvc3Bhbj48c3BhbiBjbGFzcz1cXFwiXFxcIj4gcGFpZCB2cy48L3NwYW4+PHNwYW4gY2xhc3M9XFxcIlxcXCI+IHJlbWFpbmluZyBpbnN0YWxsbWVudHMsPC9zcGFuPjxzcGFuIGNsYXNzPVxcXCJcXFwiPiBhbmQgbWF0dXJpdHkgZGF0ZXMgb24tZGVtYW5kLjwvc3Bhbj5cIlxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIFwiaWRcIjogXCJkZy1QSDhvNkd4XCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwiaGVhZGVyXCIsXHJcbiAgICAgICAgXCJkYXRhXCI6IHtcclxuICAgICAgICAgIFwidGV4dFwiOiBcIjIuIFdoYXRzQXBwIEF1dG9tYXRpb24gYW5kIFJlbWluZGVyc1wiLFxyXG4gICAgICAgICAgXCJsZXZlbFwiOiAzXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgXCJpZFwiOiBcIlpvbmY4SFVaeHJcIixcclxuICAgICAgICBcInR5cGVcIjogXCJwYXJhZ3JhcGhcIixcclxuICAgICAgICBcImRhdGFcIjoge1xyXG4gICAgICAgICAgXCJ0ZXh0XCI6IFwiPHNwYW4gY2xhc3M9XFxcIlxcXCI+RGVwbG95aW5nIDwvc3Bhbj48Yj5qZXdlbGxlcnkgV2hhdHNBcHAgcmVtaW5kZXIgc29mdHdhcmU8L2I+PHNwYW4gY2xhc3M9XFxcIlxcXCI+IGVuc3VyZWQgY3VzdG9tZXJzIHJlY2VpdmVkIGF1dG9tYXRlZCByZWNlaXB0cyBmb3IgZGlnaXRhbCBwYXltZW50cyw8L3NwYW4+PHNwYW4gY2xhc3M9XFxcIlxcXCI+IHRpbWVseSBpbnN0YWxsbWVudCByZW1pbmRlcnMsPC9zcGFuPjxzcGFuIGNsYXNzPVxcXCJcXFwiPiBhbmQgbWF0dXJpdHkgbm90aWZpY2F0aW9ucyw8L3NwYW4+PHNwYW4gY2xhc3M9XFxcIlxcXCI+IGxlYWRpbmcgdG8gYW4gODUlIGltcHJvdmVtZW50IGluIHNjaGVtZSByZW5ld2Fscy48L3NwYW4+XCJcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBcImlkXCI6IFwiOVo1ci1Oa2RJNlwiLFxyXG4gICAgICAgIFwidHlwZVwiOiBcImhlYWRlclwiLFxyXG4gICAgICAgIFwiZGF0YVwiOiB7XHJcbiAgICAgICAgICBcInRleHRcIjogXCIzLiBJbnRlZ3JhdGVkIEpld2VsbGVyeSBDUk0gJmFtcDsgTWFuYWdlbWVudFwiLFxyXG4gICAgICAgICAgXCJsZXZlbFwiOiAzXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgXCJpZFwiOiBcImgyUVY5U3k2RlpcIixcclxuICAgICAgICBcInR5cGVcIjogXCJwYXJhZ3JhcGhcIixcclxuICAgICAgICBcImRhdGFcIjoge1xyXG4gICAgICAgICAgXCJ0ZXh0XCI6IFwiPHNwYW4gY2xhc3M9XFxcIlxcXCI+UGFzc2Jvb2tBcHDigJlzIGludGVncmF0ZWQgPC9zcGFuPjxiPmpld2VsbGVyeSBtYW5hZ2VtZW50IHNvZnR3YXJlPC9iPjxzcGFuIGNsYXNzPVxcXCJcXFwiPiBwcm92aWRlZCBhIHNpbmdsZSBkYXNoYm9hcmQgZm9yIGN1c3RvbWVyIHB1cmNoYXNlIGhpc3RvcnkgYW5kIHNjaGVtZSBwcm9ncmVzcy48L3NwYW4+PHNwYW4gY2xhc3M9XFxcIlxcXCI+IFRoaXMgZGF0YSBnYXZlIHN0b3JlIHN0YWZmIHBlcnNvbmFsaXplZCBpbnNpZ2h0cyB0byB1c2UgZHVyaW5nIHNob3dyb29tIHZpc2l0cy48L3NwYW4+XCJcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBcImlkXCI6IFwiaVgtMnU5UXUwOVwiLFxyXG4gICAgICAgIFwidHlwZVwiOiBcImhlYWRlclwiLFxyXG4gICAgICAgIFwiZGF0YVwiOiB7XHJcbiAgICAgICAgICBcInRleHRcIjogXCJSZXN1bHRzOiBUaGUgSW1wYWN0IG9uIEN1c3RvbWVyIEVuZ2FnZW1lbnQgYW5kIEJ1c2luZXNzIEdyb3d0aFwiLFxyXG4gICAgICAgICAgXCJsZXZlbFwiOiAyXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgXCJpZFwiOiBcIlU3emNyLWNCcFFcIixcclxuICAgICAgICBcInR5cGVcIjogXCJwYXJhZ3JhcGhcIixcclxuICAgICAgICBcImRhdGFcIjoge1xyXG4gICAgICAgICAgXCJ0ZXh0XCI6IFwiPHNwYW4gY2xhc3M9XFxcIlxcXCI+V2l0aGluIGp1c3Qgc2l4IG1vbnRocyw8L3NwYW4+PHNwYW4gY2xhc3M9XFxcIlxcXCI+IHRoZSBpbXBsZW1lbnRhdGlvbnMgZHJpdmVuIGJ5IFBhc3Nib29rQXBwIGRlbGl2ZXJlZCB0cmFuc2Zvcm1hdGl2ZSBidXNpbmVzcyByZXN1bHRzOjwvc3Bhbj5cIlxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIFwiaWRcIjogXCJxRWoyNEZaQXljXCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwibGlzdFwiLFxyXG4gICAgICAgIFwiZGF0YVwiOiB7XHJcbiAgICAgICAgICBcInN0eWxlXCI6IFwidW5vcmRlcmVkXCIsXHJcbiAgICAgICAgICBcIml0ZW1zXCI6IFtcclxuICAgICAgICAgICAgXCI8Yj40MCUgSW5jcmVhc2UgaW4gQ3VzdG9tZXIgRW5nYWdlbWVudDo8L2I+IFRoZSBkaWdpdGFsIHBhc3Nib29rIGFwcCBiZWNhbWUgYSBjcml0aWNhbCwgZGFpbHkgdG91Y2hwb2ludCBmb3IgY3VzdG9tZXJzLlwiLFxyXG4gICAgICAgICAgICBcIjxiPjg1JSBJbXByb3ZlbWVudCBpbiBTY2hlbWUgUmVuZXdhbHM6PC9iPiBBdXRvbWF0ZWQgcmVtaW5kZXJzIGVmZmVjdGl2ZWx5IGVsaW1pbmF0ZWQgbWlzc2VkIGluc3RhbGxtZW50cy5cIixcclxuICAgICAgICAgICAgXCI8Yj4zNSUgQm9vc3QgaW4gUmVwZWF0IFB1cmNoYXNlczo8L2I+IFBlcnNvbmFsaXplZCBDUk0gaW5zaWdodHMgYWxsb3dlZCB0YXJnZXRlZCBvZmZlcnMgdXBvbiBtYXR1cml0eS5cIixcclxuICAgICAgICAgICAgXCI8Yj43MCUgUmVkdWN0aW9uIGluIE9wZXJhdGlvbmFsIFdvcmtsb2FkOjwvYj4gRWxpbWluYXRpbmcgbWFudWFsIHRyYWNraW5nIGZyZWVkIHN0YWZmIGZvciBoaWdoLXZhbHVlIHNhbGVzLCBtaXJyb3JpbmcgTGFndSBCYW5kaHUncyBhZG1pbmlzdHJhdGl2ZSBzYXZpbmdzLlwiXHJcbiAgICAgICAgICBdXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgXCJpZFwiOiBcIms2ckhOeDNEMWpcIixcclxuICAgICAgICBcInR5cGVcIjogXCJoZWFkZXJcIixcclxuICAgICAgICBcImRhdGFcIjoge1xyXG4gICAgICAgICAgXCJ0ZXh0XCI6IFwiS2V5IFRha2Vhd2F5cyBmb3IgSmV3ZWxsZXJ5IE1lcmNoYW50c1wiLFxyXG4gICAgICAgICAgXCJsZXZlbFwiOiAyXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgXCJpZFwiOiBcIk1BSFFmZHZnX3NcIixcclxuICAgICAgICBcInR5cGVcIjogXCJwYXJhZ3JhcGhcIixcclxuICAgICAgICBcImRhdGFcIjoge1xyXG4gICAgICAgICAgXCJ0ZXh0XCI6IFwiPHNwYW4gY2xhc3M9XFxcIlxcXCI+VGhlIHN1Y2Nlc3NmdWwgPC9zcGFuPjxiPmpld2VsbGVyeSBzb2Z0d2FyZSBzdWNjZXNzIHN0b3J5PC9iPjxzcGFuIGNsYXNzPVxcXCJcXFwiPiBvZiByZXRhaWxlcnMgbGlrZSBMYWd1IEJhbmRodSBwcm92ZXMgdGhhdCBtb2Rlcm5pemF0aW9uIGlzIGtleSB0byBzdXN0YWluYWJsZSA8L3NwYW4+PGI+amV3ZWxsZXJ5IGJ1c2luZXNzIGdyb3d0aDwvYj48c3BhbiBjbGFzcz1cXFwiXFxcIj46PC9zcGFuPlwiXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgXCJpZFwiOiBcIjM1YTg1UnE0QzNcIixcclxuICAgICAgICBcInR5cGVcIjogXCJsaXN0XCIsXHJcbiAgICAgICAgXCJkYXRhXCI6IHtcclxuICAgICAgICAgIFwic3R5bGVcIjogXCJvcmRlcmVkXCIsXHJcbiAgICAgICAgICBcIml0ZW1zXCI6IFtcclxuICAgICAgICAgICAgXCI8Yj5MZXZlcmFnZSB0aGUgUmlnaHQgVGVjaCBmb3IgWW91ciBTY2FsZTo8L2I+IEFzIGEgPGI+amV3ZWxsZXJ5IENSTSBjYXNlIHN0dWR5PC9iPiBmb3IgbXVsdGktbG9jYXRpb24gYnVzaW5lc3NlcyBzaG93cywgY2VudHJhbGl6ZWQgdmlzaWJpbGl0eSBpcyBlc3NlbnRpYWwgZm9yIG9wZXJhdGlvbmFsIGNvbnRyb2wgYW5kIHBlcnNvbmFsaXplZCBzZXJ2aWNlLlwiLFxyXG4gICAgICAgICAgICBcIjxiPk1lZXQgQ3VzdG9tZXJzIFdoZXJlIFRoZXkgQXJlOjwvYj4gTW9kZXJuIGJ1eWVycyBkZW1hbmQgbW9iaWxlIGFjY2Vzcy4gQSA8Yj5kaWdpdGFsIHBhc3Nib29rIGZvciBqZXdlbGxlcnkgc3RvcmVzPC9iPiB3aXRoIGRpZ2l0YWwgcGF5bWVudCBvcHRpb25zIGlzIGEgYmFzZWxpbmUgZXhwZWN0YXRpb24uXCIsXHJcbiAgICAgICAgICAgIFwiPGI+QXV0b21hdGUgZm9yIEVmZmljaWVuY3k6PC9iPiBJbnRlZ3JhdGluZyA8Yj5qZXdlbGxlcnkgV2hhdHNBcHAgcmVtaW5kZXIgc29mdHdhcmU8L2I+IGNyZWF0ZXMgaGlnaC1pbXBhY3QgY29tbXVuaWNhdGlvbiB3aXRoIG1pbmltYWwgbWFudWFsIGVmZm9ydC5cIlxyXG4gICAgICAgICAgXVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIFwiaWRcIjogXCJLWlIwcGpQWXpnXCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwiaGVhZGVyXCIsXHJcbiAgICAgICAgXCJkYXRhXCI6IHtcclxuICAgICAgICAgIFwidGV4dFwiOiBcIlJlYWR5IHRvIEVsZXZhdGUgWW91ciBKZXdlbGxlcnkgU3RvcmUncyBFbmdhZ2VtZW50P1wiLFxyXG4gICAgICAgICAgXCJsZXZlbFwiOiAyXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgXCJpZFwiOiBcIk4tblFGQlJvVF9cIixcclxuICAgICAgICBcInR5cGVcIjogXCJwYXJhZ3JhcGhcIixcclxuICAgICAgICBcImRhdGFcIjoge1xyXG4gICAgICAgICAgXCJ0ZXh0XCI6IFwiPHNwYW4gY2xhc3M9XFxcIlxcXCI+SWYgeW91IGFyZSBsb29raW5nIHRvIHNjYWxlIHlvdXIgamV3ZWxsZXJ5IGJ1c2luZXNzLDwvc3Bhbj48c3BhbiBjbGFzcz1cXFwiXFxcIj4gZWxpbWluYXRlIG1hbnVhbCBhZG1pbmlzdHJhdGl2ZSBoYXNzbGUgbGlrZSBwaHlzaWNhbCByZWdpc3RlcnMsPC9zcGFuPjxzcGFuIGNsYXNzPVxcXCJcXFwiPiBhbmQgaW5jcmVhc2UgY3VzdG9tZXIgbG95YWx0eSw8L3NwYW4+PHNwYW4gY2xhc3M9XFxcIlxcXCI+IGl0J3MgdGltZSB0byB1cGdyYWRlIHlvdXIgdGVjaCBzdGFjay48L3NwYW4+XCJcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBcImlkXCI6IFwiSjVxclhkRTNsdlwiLFxyXG4gICAgICAgIFwidHlwZVwiOiBcInBhcmFncmFwaFwiLFxyXG4gICAgICAgIFwiZGF0YVwiOiB7XHJcbiAgICAgICAgICBcInRleHRcIjogXCI8c3BhbiBjbGFzcz1cXFwiXFxcIj5TZWUgaG93IFBhc3Nib29rQXBwIGhlbHBzIGpld2VsbGVyeSBidXNpbmVzc2VzIGF1dG9tYXRlIHNhdmluZ3Mgc2NoZW1lcyw8L3NwYW4+PHNwYW4gY2xhc3M9XFxcIlxcXCI+IGltcHJvdmUgcmVuZXdhbHMsPC9zcGFuPjxzcGFuIGNsYXNzPVxcXCJcXFwiPiBpbmNyZWFzZSByZXBlYXQgcHVyY2hhc2VzLDwvc3Bhbj48c3BhbiBjbGFzcz1cXFwiXFxcIj4gYW5kIGJ1aWxkIGxvbmctdGVybSBjdXN0b21lciBsb3lhbHR5Ljwvc3Bhbj5cIlxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIFwiaWRcIjogXCJyNWtDRk81MDNXXCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwicGFyYWdyYXBoXCIsXHJcbiAgICAgICAgXCJkYXRhXCI6IHtcclxuICAgICAgICAgIFwidGV4dFwiOiBcIjxiPjxhIGhyZWY9XFxcImh0dHBzOi8vd3d3LnBhc3Nib29rYXBwLmluL2RlbW9cXFwiPkJvb2sgYSBGcmVlIFBhc3Nib29rQXBwIERlbW8gVG9kYXk8L2E+PC9iPlwiXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICBdLFxyXG4gICAgXCJjcmVhdGVkQnlcIjogXCJSYWpcIixcclxuICAgIFwicG9zdFN1bW1hcnlcIjogXCJEaXNjb3ZlciBob3cgSmV3ZWxsZXJ5IHJldGFpbGVycyBlbGltaW5hdGVkIG1hbnVhbCByZWdpc3RlcnMsIGluY3JlYXNlZCBjdXN0b21lciBlbmdhZ2VtZW50LCBhbmQgc3RyZWFtbGluZWQgc2F2aW5ncyBzY2hlbWVzIHVzaW5nIFBhc3Nib29rQXBwLlwiLFxyXG4gICAgXCJwb3N0VGl0bGVcIjogXCJDYXNlIFN0dWR5OiBIb3cgYSBKZXdlbGxlcnkgUmV0YWlsZXIgSW5jcmVhc2VkICBDdXN0b21lciBFbmdhZ2VtZW50IFVzaW5nIFBhc3Nib29rQXBwXCIsXHJcbiAgICBcIm5ld1Bvc3RUaXRsZVwiOiBcIkNhc2UtU3R1ZHktSG93LWEtSmV3ZWxsZXJ5LVJldGFpbGVyLUluY3JlYXNlZC0tQ3VzdG9tZXItRW5nYWdlbWVudC1Vc2luZy1QYXNzYm9va0FwcFwiLFxyXG4gICAgXCJibG9nTWV0YVwiOiB7XHJcbiAgICAgIFwibWV0YVRpdGxlXCI6IFwiQ2FzZSBTdHVkeTogSG93IGEgSmV3ZWxsZXJ5IFJldGFpbGVyIEluY3JlYXNlZCAgQ3VzdG9tZXIgRW5nYWdlbWVudCBVc2luZyBQYXNzYm9va0FwcFwiLFxyXG4gICAgICBcIm1ldGFEZXNjcmlwdGlvblwiOiB7XHJcbiAgICAgICAgXCJuYW1lXCI6IFwiZGVzY3JpcHRpb25cIixcclxuICAgICAgICBcImNvbnRlbnRcIjogXCJEaXNjb3ZlciBob3cgSmV3ZWxsZXJ5IHJldGFpbGVycyBlbGltaW5hdGVkIG1hbnVhbCByZWdpc3RlcnMsIGluY3JlYXNlZCBjdXN0b21lciBlbmdhZ2VtZW50LCBhbmQgc3RyZWFtbGluZWQgc2F2aW5ncyBzY2hlbWVzIHVzaW5nIFBhc3Nib29rQXBwLlwiXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBcImNyZWF0ZWRUaW1lU3RhbXBcIjogXCIyMDI2LTA4LTA0VDExOjU4OjM3LjAwMCswMDowMFwiLFxyXG4gICAgXCJwdWJsaXNoZWREYXRlXCI6IG51bGwsXHJcbiAgICBcImJsb2dTY2hlZHVsZWREYXRlXCI6IFwiMjAyNi0wOC0wNFQwMDowMDowMC4wMDArMDA6MDBcIixcclxuICAgIFwiYmxvZ1NjaGVkdWxlVGltZVwiOiBcIjE3OjI5OjI0XCIsXHJcbiAgICBcImtleVdvcmRzXCI6IHtcclxuICAgICAgXCJuYW1lXCI6IFwia2V5d29yZHNcIixcclxuICAgICAgXCJjb250ZW50XCI6IFwiZGlnaXRhbCBwYXNzYm9vayBmb3IgamV3ZWxsZXJ5IHN0b3JlcyxKZXdlbGxlcnkgY3VzdG9tZXIgZW5nYWdlbWVudCxqZXdlbGxlcnkgY3VzdG9tZXIgZW5nYWdlbWVudCBzb2Z0d2FyZSxqZXdlbGxlcnkgQ1JNIHNvZnR3YXJlLGpld2VsbGVyeSBjdXN0b21lciBleHBlcmllbmNlXCJcclxuICAgIH0sXHJcbiAgICBcImF1dGhvclwiOiB7XHJcbiAgICAgIFwibmFtZVwiOiBcImF1dGhvclwiLFxyXG4gICAgICBcImNvbnRlbnRcIjogXCJQYXNzYm9va2FwcFwiXHJcbiAgICB9LFxyXG4gICAgXCJibG9nU3RhdHVzXCI6IFwiUFVCTElTSFwiLFxyXG4gICAgXCJibG9nVHlwZVwiOiBcIkJVU0lORVNTXCJcclxuICB9XHJcblxyXG4gIHRvY0l0ZW1zOiBUb2NJdGVtW10gPSBbXTtcclxuICB0b2NPcGVuID0gZmFsc2U7XHJcbiAgYWN0aXZlVG9jSWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGhlYWRpbmdCbG9ja0lkcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgaXNCcm93c2VyOiBib29sZWFuO1xyXG4gIHByaXZhdGUgdG9jT2JzZXJ2ZXI/OiBJbnRlcnNlY3Rpb25PYnNlcnZlcjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9ldmVudFNlcnZpY2U6IEV2ZW50c1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlc3RTZXJ2aWNlOiBSZXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxyXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcGxhdGZvcm1JZDogb2JqZWN0XHJcbiAgKSB7XHJcbiAgICB0aGlzLmlzQnJvd3NlciA9IGlzUGxhdGZvcm1Ccm93c2VyKHBsYXRmb3JtSWQpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmJ1aWxkVGFibGVPZkNvbnRlbnRzKCk7XHJcbiAgICB0aGlzLnJlY29yZFZpc2l0KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlc1sncmVzcG9uc2VEYXRhJ10gJiYgIWNoYW5nZXNbJ3Jlc3BvbnNlRGF0YSddLmlzRmlyc3RDaGFuZ2UoKSkge1xyXG4gICAgICB0aGlzLmJ1aWxkVGFibGVPZkNvbnRlbnRzKCk7XHJcbiAgICAgIHRoaXMucmVjb3JkVmlzaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIENvdW50cyBvbmUgcHVibGljIHZpZXcgcGVyIGJsb2cgcGVyIGJyb3dzZXIgc2Vzc2lvbiwgcGVyIHRoZSBcIkluY3JlbWVudCBibG9nIHZpc2l0c1wiIHNwZWM6XHJcbiAgLy8gUFVUIGJ1c2luZXNzL2Jsb2cvdXBkYXRlL3tibG9nSWR9LCBmaXJlLWFuZC1mb3JnZXQsIGd1YXJkZWQgc28gcmVmcmVzaC9yZS1yZW5kZXIgZG9lc24ndCBkb3VibGUtY291bnQuXHJcbiAgcHJpdmF0ZSByZWNvcmRWaXNpdCgpIHtcclxuICAgIGlmICghdGhpcy5pc0Jyb3dzZXIpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgYmxvZ0lkID0gdGhpcy5yZXNwb25zZURhdGE/LmlkO1xyXG4gICAgaWYgKCFibG9nSWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgc2Vzc2lvbktleSA9IGBibG9nLXZpc2l0LSR7YmxvZ0lkfWA7XHJcbiAgICBpZiAoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShzZXNzaW9uS2V5KSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHNlc3Npb25LZXksICcxJyk7XHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmluY3JlbWVudEJsb2dWaXNpdChibG9nSWQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6ICgpID0+IHsgfSxcclxuICAgICAgZXJyb3I6ICgpID0+IHsgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5zZXR1cFNjcm9sbFNweSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnRvY09ic2VydmVyPy5kaXNjb25uZWN0KCk7XHJcbiAgfVxyXG5cclxuICBnZXQgaGVyb0ltYWdlQmxvY2tJZCgpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIGNvbnN0IGJsb2NrczogQmxvZ0Jsb2NrW10gPSB0aGlzLnJlc3BvbnNlRGF0YT8uYmxvY2tzIHx8IFtdO1xyXG4gICAgcmV0dXJuIGJsb2Nrcy5maW5kKGJsb2NrID0+IGJsb2NrLnR5cGUgPT09ICdpbWFnZScpPy5pZCA/PyBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHRhZ3MoKTogc3RyaW5nW10ge1xyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMucmVzcG9uc2VEYXRhPy5rZXlXb3Jkcz8uY29udGVudDtcclxuICAgIGlmICghY29udGVudCkge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29udGVudFxyXG4gICAgICAuc3BsaXQoJywnKVxyXG4gICAgICAubWFwKCh0YWc6IHN0cmluZykgPT4gdGFnLnRyaW0oKSlcclxuICAgICAgLmZpbHRlcigodGFnOiBzdHJpbmcpID0+IHRhZy5sZW5ndGggPiAwKTtcclxuICB9XHJcblxyXG4gIGVkaXRTZWN0aW9uKCkge1xyXG4gICAgLy8gdGhpcy5fZXZlbnRTZXJ2aWNlLnRvZ2dsZUVkaXRvckV2ZW50LmVtaXQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgc2Nyb2xsVG9CbG9jayhldmVudDogRXZlbnQsIGJsb2NrSWQ6IHN0cmluZykge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGlmICghdGhpcy5pc0Jyb3dzZXIpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XHJcbiAgICAgIC5xdWVyeVNlbGVjdG9yKGAjYmxvY2stJHtibG9ja0lkfWApXHJcbiAgICAgID8uc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnc3RhcnQnIH0pO1xyXG4gICAgdGhpcy50b2NPcGVuID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvLyBSZWFsIHB1Ymxpc2hlZCBibG9ncyBkb24ndCBhbHdheXMgY2FycnkgYSBibG9jayBpZCAob25seSBlZGl0b3ItcHJvZHVjZWQgb25lcyBkbykuIFRoZSBUT0MsXHJcbiAgLy8gc2Nyb2xsIGFuY2hvcnMsIGFuZCBoZXJvLWltYWdlIGRldGVjdGlvbiBhbGwga2V5IG9mZiBibG9jay5pZCwgc28gYmFja2ZpbGwgYSBzdGFibGUgb25lIOKAlFxyXG4gIC8vIHN0YWJsZSBhY3Jvc3MgcmUtcmVuZGVycyBzaW5jZSBpdCdzIGRlcml2ZWQgZnJvbSB0aGUgYmxvY2sncyBmaXhlZCBwb3NpdGlvbiBpbiB0aGUgYXJyYXkuXHJcbiAgcHJpdmF0ZSBlbnN1cmVCbG9ja0lkcyhibG9ja3M6IEJsb2dCbG9ja1tdKSB7XHJcbiAgICBibG9ja3MuZm9yRWFjaCgoYmxvY2ssIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmICghYmxvY2suaWQpIHtcclxuICAgICAgICBibG9jay5pZCA9IGBibG9jay1pZHgtJHtpbmRleH1gO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRUYWJsZU9mQ29udGVudHMoKSB7XHJcbiAgICBjb25zdCBibG9ja3M6IEJsb2dCbG9ja1tdID0gdGhpcy5yZXNwb25zZURhdGE/LmJsb2NrcyB8fCBbXTtcclxuICAgIHRoaXMuZW5zdXJlQmxvY2tJZHMoYmxvY2tzKTtcclxuICAgIHRoaXMuaGVhZGluZ0Jsb2NrSWRzLmNsZWFyKCk7XHJcbiAgICB0aGlzLnRvY0l0ZW1zID0gYmxvY2tzXHJcbiAgICAgIC5tYXAoYmxvY2sgPT4gdGhpcy5nZXRIZWFkaW5nQ2FuZGlkYXRlKGJsb2NrKSlcclxuICAgICAgLmZpbHRlcigoaXRlbSk6IGl0ZW0gaXMgVG9jSXRlbSA9PiAhIWl0ZW0pO1xyXG4gICAgdGhpcy50b2NJdGVtcy5mb3JFYWNoKGl0ZW0gPT4gdGhpcy5oZWFkaW5nQmxvY2tJZHMuYWRkKGl0ZW0uaWQpKTtcclxuXHJcbiAgICBpZiAodGhpcy5pc0Jyb3dzZXIpIHtcclxuICAgICAgLy8gUmUtYXR0YWNoIHRoZSBzY3JvbGwgc3B5IHNpbmNlIHRoZSBhbmNob3JzIGl0IHdhdGNoZXMganVzdCBjaGFuZ2VkLlxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2V0dXBTY3JvbGxTcHkoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc1RvY0FuY2hvcihibG9ja0lkOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmhlYWRpbmdCbG9ja0lkcy5oYXMoYmxvY2tJZCk7XHJcbiAgfVxyXG5cclxuICBoYXNWaXNpYmxlVGV4dChodG1sOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnN0cmlwSHRtbChodG1sKS5sZW5ndGggPiAwO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRIZWFkaW5nQ2FuZGlkYXRlKGJsb2NrOiBCbG9nQmxvY2spOiBUb2NJdGVtIHwgbnVsbCB7XHJcbiAgICBpZiAoIWJsb2NrPy5pZCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYmxvY2sudHlwZSA9PT0gJ2hlYWRlcicpIHtcclxuICAgICAgY29uc3QgbGV2ZWwgPSAoYmxvY2suZGF0YT8uWydsZXZlbCddIGFzIG51bWJlcikgfHwgMjtcclxuICAgICAgY29uc3QgdGV4dCA9IHRoaXMuc3RyaXBIdG1sKGJsb2NrLmRhdGE/LlsndGV4dCddIGFzIHN0cmluZyB8IHVuZGVmaW5lZCk7XHJcbiAgICAgIGlmIChsZXZlbCA8PSAxIHx8ICF0ZXh0KSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHsgaWQ6IGJsb2NrLmlkLCB0ZXh0LCBsZXZlbCB9O1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChibG9jay50eXBlID09PSAncGFyYWdyYXBoJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5nZXRCb2xkUGFyYWdyYXBoSGVhZGluZyhibG9jayk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEJvbGRQYXJhZ3JhcGhIZWFkaW5nKGJsb2NrOiBCbG9nQmxvY2spOiBUb2NJdGVtIHwgbnVsbCB7XHJcbiAgICBjb25zdCBodG1sID0gKGJsb2NrLmRhdGE/LlsndGV4dCddIGFzIHN0cmluZykgfHwgJyc7XHJcbiAgICBpZiAoIWh0bWwuaW5jbHVkZXMoJzxzcGFuJykpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc3BhblJlZ2V4ID0gLzxzcGFuKFtePl0qKT4oW1xcc1xcU10qPyk8XFwvc3Bhbj4vZztcclxuICAgIGxldCBtYXRjaDogUmVnRXhwRXhlY0FycmF5IHwgbnVsbDtcclxuICAgIGxldCBib2xkVGV4dCA9ICcnO1xyXG4gICAgbGV0IG5vbkJvbGRUZXh0ID0gJyc7XHJcbiAgICBsZXQgbWF4Rm9udFNpemVQdCA9IDA7XHJcblxyXG4gICAgd2hpbGUgKChtYXRjaCA9IHNwYW5SZWdleC5leGVjKGh0bWwpKSkge1xyXG4gICAgICBjb25zdCBzdHlsZSA9IG1hdGNoWzFdO1xyXG4gICAgICBjb25zdCBpbm5lclRleHQgPSB0aGlzLnN0cmlwSHRtbChtYXRjaFsyXSk7XHJcbiAgICAgIGNvbnN0IGlzQm9sZCA9IC9mb250LXdlaWdodDpcXHMqKGJvbGR8WzYtOV0wMCkvaS50ZXN0KHN0eWxlKTtcclxuICAgICAgY29uc3Qgc2l6ZU1hdGNoID0gc3R5bGUubWF0Y2goL2ZvbnQtc2l6ZTpcXHMqKFtcXGQuXSspcHQvaSk7XHJcbiAgICAgIGlmIChzaXplTWF0Y2gpIHtcclxuICAgICAgICBtYXhGb250U2l6ZVB0ID0gTWF0aC5tYXgobWF4Rm9udFNpemVQdCwgcGFyc2VGbG9hdChzaXplTWF0Y2hbMV0pKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaXNCb2xkKSB7XHJcbiAgICAgICAgYm9sZFRleHQgKz0gaW5uZXJUZXh0O1xyXG4gICAgICB9IGVsc2UgaWYgKGlubmVyVGV4dCkge1xyXG4gICAgICAgIG5vbkJvbGRUZXh0ICs9IGlubmVyVGV4dDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHRleHQgPSBib2xkVGV4dC50cmltKCk7XHJcbiAgICAvLyBNaXhlZCBib2xkL3BsYWluIHRleHQgaXMgYW4gZW1waGFzaXplZCBwaHJhc2UgaW5zaWRlIGEgbm9ybWFsIHBhcmFncmFwaCwgbm90IGEgaGVhZGluZy5cclxuICAgIGlmICghdGV4dCB8fCBub25Cb2xkVGV4dC50cmltKCkgfHwgdGV4dC5sZW5ndGggPiAxMjApIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICAvLyBUaXRsZS1zaXplZCBib2xkIHRleHQgKD49MTZwdCwgbWF0Y2hpbmcgdGhlIGFydGljbGUncyBvd24gaGVhZGluZykgaXNuJ3QgYSBUT0MgZW50cnkuXHJcbiAgICBpZiAobWF4Rm9udFNpemVQdCA+PSAxNikge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4geyBpZDogYmxvY2suaWQsIHRleHQsIGxldmVsOiAyIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0cmlwSHRtbChodG1sOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFodG1sKSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICAgIHJldHVybiBodG1sXHJcbiAgICAgIC5yZXBsYWNlKC88W14+XSo+L2csICcnKVxyXG4gICAgICAucmVwbGFjZSgvJm5ic3A7L2csICcgJylcclxuICAgICAgLnJlcGxhY2UoLyZhbXA7L2csICcmJylcclxuICAgICAgLnRyaW0oKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0dXBTY3JvbGxTcHkoKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNCcm93c2VyKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMudG9jT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcclxuXHJcbiAgICBjb25zdCBhbmNob3JzID0gQXJyYXkuZnJvbShcclxuICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KFxyXG4gICAgICAgICcudG9jLWFuY2hvcidcclxuICAgICAgKVxyXG4gICAgKTtcclxuICAgIGlmICghYW5jaG9ycy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudG9jT2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoXHJcbiAgICAgIGVudHJpZXMgPT4ge1xyXG4gICAgICAgIGNvbnN0IHZpc2libGUgPSBlbnRyaWVzLmZpbHRlcihlbnRyeSA9PiBlbnRyeS5pc0ludGVyc2VjdGluZyk7XHJcbiAgICAgICAgaWYgKHZpc2libGUubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZVRvY0lkID0gdmlzaWJsZVswXS50YXJnZXQuaWQucmVwbGFjZSgnYmxvY2stJywgJycpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgeyByb290TWFyZ2luOiAnMHB4IDBweCAtNzAlIDBweCcgfVxyXG4gICAgKTtcclxuICAgIGFuY2hvcnMuZm9yRWFjaChhbmNob3IgPT4gdGhpcy50b2NPYnNlcnZlcj8ub2JzZXJ2ZShhbmNob3IpKTtcclxuICB9XHJcbn1cclxuIiwiPHNlY3Rpb24gY2xhc3M9XCJtYWluLXNlY3Rpb25cIj5cbiAgPGRpdiBjbGFzcz1cImJsb2ctY29udGFpbmVyXCI+XG4gICAgPGgxIGNsYXNzPVwiYmxvZy10aXRsZVwiICpuZ0lmPVwicmVzcG9uc2VEYXRhPy5wb3N0VGl0bGVcIj5cbiAgICAgIHt7IHJlc3BvbnNlRGF0YS5wb3N0VGl0bGUgfX1cbiAgICA8L2gxPlxuXG4gICAgPGRpdiBjbGFzcz1cIm1ldGEtYmFyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWV0YS1pdGVtXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWV0YS1sYWJlbFwiPlB1YmxpY2F0aW9uIERhdGU8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWV0YS12YWx1ZVwiPnt7XG4gICAgICAgICAgcmVzcG9uc2VEYXRhPy5wdWJsaXNoZWREYXRlIHx8XG4gICAgICAgICAgICByZXNwb25zZURhdGE/LmJsb2dTY2hlZHVsZWREYXRlIHx8XG4gICAgICAgICAgICByZXNwb25zZURhdGE/LmNyZWF0ZWRUaW1lU3RhbXAgfCBkYXRlOiAnZCBNTU1NIHknXG4gICAgICAgIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibWV0YS1pdGVtXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWV0YS1sYWJlbFwiPkF1dGhvcjwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXRhLXZhbHVlXCI+e3tcbiAgICAgICAgICByZXNwb25zZURhdGE/LmF1dGhvcj8uY29udGVudCB8fCAn4oCUJ1xuICAgICAgICB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1ldGEtaXRlbVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldGEtbGFiZWxcIj5SZWFkIFRpbWU8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWV0YS12YWx1ZVwiXG4gICAgICAgICAgPnt7IHJlc3BvbnNlRGF0YT8ucmVhZFRpbWUgfHwgJ+KAlCcgfX0gbWluIHJlYWQ8L3NwYW5cbiAgICAgICAgPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibWV0YS1pdGVtXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWV0YS1sYWJlbFwiPlZpZXdzPC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldGEtdmFsdWVcIj57eyByZXNwb25zZURhdGE/LnRvdGFsVmlzaXRzIHx8IDAgfX0rPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwidGFncy1yb3dcIiAqbmdJZj1cInRhZ3MubGVuZ3RoXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInRhZy1jaGlwXCIgKm5nRm9yPVwibGV0IHRhZyBvZiB0YWdzXCI+e3sgdGFnIHwgdGl0bGVjYXNlIH19PC9zcGFuPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImJsb2ctbGF5b3V0XCIgW2NsYXNzLndpdGgtdG9jXT1cInRvY0l0ZW1zLmxlbmd0aCA+IDFcIj5cbiAgICAgIDxhc2lkZSBjbGFzcz1cInRvYy1zaWRlYmFyXCIgKm5nSWY9XCJ0b2NJdGVtcy5sZW5ndGggPiAxXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cInRvYy10b2dnbGVcIlxuICAgICAgICAgIChjbGljayk9XCJ0b2NPcGVuID0gIXRvY09wZW5cIlxuICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwidG9jT3BlblwiPlxuICAgICAgICAgIDxzcGFuPlRhYmxlIE9mIENvbnRlbnQ8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0b2MtdG9nZ2xlLWljb25cIiBbY2xhc3Mub3Blbl09XCJ0b2NPcGVuXCI+PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRvYy1oZWFkZXJcIj5UYWJsZSBPZiBDb250ZW50PC9kaXY+XG4gICAgICAgIDxuYXYgY2xhc3M9XCJ0b2MtbGlzdFwiIFtjbGFzcy5vcGVuXT1cInRvY09wZW5cIj5cbiAgICAgICAgICA8YVxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHRvYyBvZiB0b2NJdGVtc1wiXG4gICAgICAgICAgICBjbGFzcz1cInRvYy1saW5rXCJcbiAgICAgICAgICAgIFtjbGFzcy50b2MtdG9wXT1cInRvYy5sZXZlbCA8PSAyXCJcbiAgICAgICAgICAgIFtzdHlsZS5wYWRkaW5nTGVmdC5weF09XCIodG9jLmxldmVsIC0gMikgKiAxNFwiXG4gICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVRvY0lkID09PSB0b2MuaWRcIlxuICAgICAgICAgICAgW2hyZWZdPVwiJyNibG9jay0nICsgdG9jLmlkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzY3JvbGxUb0Jsb2NrKCRldmVudCwgdG9jLmlkKVwiPlxuICAgICAgICAgICAge3sgdG9jLnRleHQgfX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvbmF2PlxuICAgICAgPC9hc2lkZT5cblxuICAgICAgPGRpdiBjbGFzcz1cImJsb2ctZGV0YWlsc1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHJlc3BvbnNlRGF0YT8uYmxvY2tzXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJpdGVtLnR5cGUgPT0gJ2hlYWRlcicgJiYgaGFzVmlzaWJsZVRleHQoaXRlbS5kYXRhPy50ZXh0KVwiXG4gICAgICAgICAgICBbaWRdPVwiJ2Jsb2NrLScgKyBpdGVtLmlkXCJcbiAgICAgICAgICAgIFtjbGFzcy50b2MtYW5jaG9yXT1cImlzVG9jQW5jaG9yKGl0ZW0uaWQpXCI+XG4gICAgICAgICAgICA8aDEgKm5nSWY9XCJpdGVtLmRhdGEubGV2ZWwgPT0gMVwiIFtpbm5lckhUTUxdPVwiaXRlbS5kYXRhLnRleHRcIj48L2gxPlxuICAgICAgICAgICAgPGgyICpuZ0lmPVwiaXRlbS5kYXRhLmxldmVsID09IDJcIiBbaW5uZXJIVE1MXT1cIml0ZW0uZGF0YS50ZXh0XCI+PC9oMj5cbiAgICAgICAgICAgIDxoMyAqbmdJZj1cIml0ZW0uZGF0YS5sZXZlbCA9PSAzXCIgW2lubmVySFRNTF09XCJpdGVtLmRhdGEudGV4dFwiPjwvaDM+XG4gICAgICAgICAgICA8aDQgKm5nSWY9XCJpdGVtLmRhdGEubGV2ZWwgPT0gNFwiIFtpbm5lckhUTUxdPVwiaXRlbS5kYXRhLnRleHRcIj48L2g0PlxuICAgICAgICAgICAgPGg1ICpuZ0lmPVwiaXRlbS5kYXRhLmxldmVsID09IDVcIiBbaW5uZXJIVE1MXT1cIml0ZW0uZGF0YS50ZXh0XCI+PC9oNT5cbiAgICAgICAgICAgIDxoNiAqbmdJZj1cIml0ZW0uZGF0YS5sZXZlbCA9PSA2XCIgW2lubmVySFRNTF09XCJpdGVtLmRhdGEudGV4dFwiPjwvaDY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJpdGVtLnR5cGUgPT0gJ3BhcmFncmFwaCcgJiYgaGFzVmlzaWJsZVRleHQoaXRlbS5kYXRhPy50ZXh0KVwiXG4gICAgICAgICAgICBbaWRdPVwiJ2Jsb2NrLScgKyBpdGVtLmlkXCJcbiAgICAgICAgICAgIFtjbGFzcy50b2MtYW5jaG9yXT1cImlzVG9jQW5jaG9yKGl0ZW0uaWQpXCI+XG4gICAgICAgICAgICA8cFxuICAgICAgICAgICAgICBjbGFzcz1cImlubmVyLXRleHRcIlxuICAgICAgICAgICAgICBbY2xhc3MuaGVhZGluZy1wYXJhZ3JhcGhdPVwiaXNUb2NBbmNob3IoaXRlbS5pZClcIlxuICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cIml0ZW0uZGF0YS50ZXh0XCI+PC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLnR5cGUgPT0gJ2xpc3QnXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5kYXRhLnN0eWxlID09ICdvcmRlcmVkJ1wiPlxuICAgICAgICAgICAgICA8b2wgY2xhc3M9XCJsaXN0LXN0eWxlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbGlzdCBvZiBpdGVtLmRhdGEuaXRlbXNcIj5cbiAgICAgICAgICAgICAgICAgIDxsaSBbaW5uZXJIVE1MXT1cImxpc3RcIj48L2xpPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L29sPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5kYXRhLnN0eWxlID09ICd1bm9yZGVyZWQnXCI+XG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3Qtc3R5bGVcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBsaXN0IG9mIGl0ZW0uZGF0YS5pdGVtc1wiPlxuICAgICAgICAgICAgICAgICAgPGxpIFtpbm5lckhUTUxdPVwibGlzdFwiPjwvbGk+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS50eXBlID09ICdkZWxpbWl0ZXInXCIgY2xhc3M9XCJjZS1kZWxpbWl0ZXJcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cIml0ZW0udHlwZSA9PSAnaW1hZ2UnXCJcbiAgICAgICAgICAgIGNsYXNzPVwiaW1hZ2UtY29udGFpbmVyXCJcbiAgICAgICAgICAgIFtjbGFzcy5oZXJvLWltYWdlXT1cIml0ZW0uaWQgPT09IGhlcm9JbWFnZUJsb2NrSWRcIj5cbiAgICAgICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBbc3JjXT1cIml0ZW0uZGF0YS5maWxlLnVybFwiIGFsdD1cIlwiIC8+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImltYWdlLWNhcHRpb25cIiAqbmdJZj1cIml0ZW0uZGF0YT8uY2FwdGlvblwiPnt7XG4gICAgICAgICAgICAgIGl0ZW0uZGF0YS5jYXB0aW9uXG4gICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS50eXBlID09ICd0YWJsZSdcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS13cmFwcGVyXCI+XG4gICAgICAgICAgICAgIDx0YWJsZVxuICAgICAgICAgICAgICAgIFtjbGFzcy50YWJsZS1uby1oZWFkaW5nXT1cIml0ZW0uZGF0YS53aXRoSGVhZGluZ3MgPT09IGZhbHNlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGF0YSBvZiBpdGVtLmRhdGEuY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRhdGFcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgW2lubmVySFRNTF09XCJpdGVtXCI+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8c2ltcG8tcmVjZW50LWJsb2ctcG9zdC1zZWN0aW9uXG4gICAgICBbcG9wdWxhcl09XCJ0cnVlXCJcbiAgICAgIFtidXNpbmVzc0lkXT1cInJlc3BvbnNlRGF0YT8uYnVzaW5lc3NJZFwiXG4gICAgICBbZXhjbHVkZUJsb2dJZF09XCJyZXNwb25zZURhdGE/LmlkXCJcbiAgICAgIFtlZGl0XT1cImZhbHNlXCI+XG4gICAgPC9zaW1wby1yZWNlbnQtYmxvZy1wb3N0LXNlY3Rpb24+XG4gIDwvZGl2PlxuPC9zZWN0aW9uPlxuIl19