tango-app-ui-analyse-trax 4.0.45 → 4.0.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/audit-v2/action-centre/audit-v2-action-centre.component.mjs +5 -1
- package/esm2022/lib/components/audit-v2/configure/audit-v2-configure.component.mjs +17 -3
- package/esm2022/lib/components/audit-v2/dashboard/audit-v2-dashboard.component.mjs +16 -9
- package/esm2022/lib/components/audit-v2/detail/audit-v2-detail.component.mjs +14 -22
- package/esm2022/lib/components/audit-v2/flags/audit-v2-flags.component.mjs +6 -11
- package/esm2022/lib/components/audit-v2/gallery/audit-v2-gallery.component.mjs +68 -15
- package/esm2022/lib/components/audit-v2/manage/audit-v2-manage.component.mjs +8 -3
- package/esm2022/lib/components/audit-v2/question-editor/audit-v2-question-editor.component.mjs +12 -12
- package/esm2022/lib/components/audit-v2/schedule/audit-v2-schedule-detail.component.mjs +104 -12
- package/esm2022/lib/components/audit-v2/schedule/audit-v2-schedule-editor.component.mjs +371 -67
- package/esm2022/lib/services/trax.service.mjs +7 -3
- package/fesm2022/{tango-app-ui-analyse-trax-audit-v2.module-ByfsYp5i.mjs → tango-app-ui-analyse-trax-audit-v2.module-CK_GxSzN.mjs} +656 -192
- package/fesm2022/tango-app-ui-analyse-trax-audit-v2.module-CK_GxSzN.mjs.map +1 -0
- package/fesm2022/{tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-D4J7rG9i.mjs → tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-CYNfijcm.mjs} +8 -4
- package/fesm2022/tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-CYNfijcm.mjs.map +1 -0
- package/fesm2022/tango-app-ui-analyse-trax.mjs +1 -1
- package/lib/components/audit-v2/configure/audit-v2-configure.component.d.ts +4 -0
- package/lib/components/audit-v2/dashboard/audit-v2-dashboard.component.d.ts +2 -0
- package/lib/components/audit-v2/detail/audit-v2-detail.component.d.ts +3 -5
- package/lib/components/audit-v2/flags/audit-v2-flags.component.d.ts +2 -4
- package/lib/components/audit-v2/gallery/audit-v2-gallery.component.d.ts +19 -0
- package/lib/components/audit-v2/manage/audit-v2-manage.component.d.ts +2 -0
- package/lib/components/audit-v2/schedule/audit-v2-schedule-detail.component.d.ts +28 -1
- package/lib/components/audit-v2/schedule/audit-v2-schedule-editor.component.d.ts +70 -5
- package/lib/services/trax.service.d.ts +3 -1
- package/package.json +1 -1
- package/fesm2022/tango-app-ui-analyse-trax-audit-v2.module-ByfsYp5i.mjs.map +0 -1
- package/fesm2022/tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-D4J7rG9i.mjs.map +0 -1
|
@@ -295,6 +295,10 @@ export class AuditV2ActionCentreComponent {
|
|
|
295
295
|
this.loadActivity();
|
|
296
296
|
}
|
|
297
297
|
loadActivity() {
|
|
298
|
+
// Not before the header has a client: the API refuses it ("clientId is required"); the header's load comes next.
|
|
299
|
+
if (!this.headerData?.client) {
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
298
302
|
this.logLoading = true;
|
|
299
303
|
const actions = this.actionsByTab[this.tab];
|
|
300
304
|
this.traxService.auditActionCenterActivity({
|
|
@@ -506,4 +510,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
506
510
|
type: Component,
|
|
507
511
|
args: [{ selector: 'lib-audit-v2-action-centre', template: "<div class=\"av2-page\">\r\n\r\n <!-- Waiting for approval -->\r\n <div class=\"av2-grid-2\">\r\n <div class=\"av2-stat-card\">\r\n <div class=\"av2-stat\">\r\n <span class=\"av2-sk av2-sk--value ac-sk-value\" *ngIf=\"cardsLoading\"></span>\r\n <span class=\"av2-stat-value\" *ngIf=\"!cardsLoading\">{{ auditWaiting }}</span>\r\n <span class=\"av2-stat-label\">Audit waiting for approval</span>\r\n </div>\r\n </div>\r\n <div class=\"av2-stat-card\">\r\n <div class=\"av2-stat\">\r\n <span class=\"av2-sk av2-sk--value ac-sk-value\" *ngIf=\"cardsLoading\"></span>\r\n <span class=\"av2-stat-value\" *ngIf=\"!cardsLoading\">{{ taskWaiting }}</span>\r\n <span class=\"av2-stat-label\">Task waiting for approval</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Approval -->\r\n <section class=\"av2-card\">\r\n <div class=\"av2-card-head\">\r\n <div class=\"av2-title-block\">\r\n <div class=\"av2-card-title\">Approval</div>\r\n <div class=\"av2-card-sub\">A summary of all the audits awaiting approval</div>\r\n </div>\r\n\r\n <label class=\"av2-search av2-search--md\">\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\r\n stroke-linecap=\"round\">\r\n <circle cx=\"11\" cy=\"11\" r=\"7\"></circle>\r\n <line x1=\"16.5\" y1=\"16.5\" x2=\"21\" y2=\"21\"></line>\r\n </svg>\r\n <input [(ngModel)]=\"approvalSearch\" (ngModelChange)=\"onApprovalSearch()\" type=\"text\" placeholder=\"Search\" autocomplete=\"off\" />\r\n </label>\r\n\r\n <div class=\"approval-scope-select\">\r\n <lib-select [items]=\"approvalScopeItems\" [multi]=\"false\" [searchField]=\"'label'\" [idField]=\"'id'\"\r\n [selectedValues]=\"[approvalScopeSelected]\" (selected)=\"onApprovalScopeSelect($event)\"></lib-select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"av2-grid-3\">\r\n <div class=\"approval-col\" *ngFor=\"let col of columns; trackBy: trackByColumn\">\r\n <div class=\"av2-col-head\">\r\n {{ col.title }}\r\n <span *ngIf=\"!approvalsLoading && col.cards.length\" class=\"av2-badge av2-badge--count\">{{ col.cards.length }}</span>\r\n </div>\r\n\r\n <lib-audit-v2-shimmer *ngIf=\"approvalsLoading\" [rows]=\"2\"></lib-audit-v2-shimmer>\r\n\r\n <div *ngIf=\"!approvalsLoading && col.cards.length\" class=\"approval-cards\">\r\n <div *ngFor=\"let card of col.cards\" class=\"approval-card\" [class.approval-card--off]=\"!card.link\"\r\n [attr.role]=\"card.link ? 'link' : null\" [attr.tabindex]=\"card.link ? 0 : null\" [attr.title]=\"card.hint || null\"\r\n (click)=\"openCard(card)\" (keydown.enter)=\"openCard(card)\">\r\n <div class=\"approval-card-badges\">\r\n <span class=\"av2-badge av2-badge--purple av2-badge--count\">{{ card.typeLabel }}</span>\r\n <span *ngIf=\"card.redo\" class=\"av2-badge av2-badge--warning av2-badge--count\">Redo</span>\r\n </div>\r\n <div class=\"approval-card-name\">{{ card.name }}</div>\r\n <div class=\"approval-card-meta\">\r\n <span>{{ card.store }}</span>\r\n <span *ngIf=\"card.submittedLabel\">{{ card.submittedLabel }}</span>\r\n <span>{{ card.by }}</span>\r\n </div>\r\n <div class=\"approval-card-foot\">\r\n <span class=\"approval-card-date\">{{ card.when }}</span>\r\n <span *ngIf=\"card.approvedLabel\" class=\"av2-badge av2-badge--success av2-badge--count\">{{ card.approvedLabel }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"!approvalsLoading && !col.cards.length\" class=\"av2-empty\">\r\n <img class=\"av2-empty-img\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"av2-empty-text\">\r\n <div class=\"av2-empty-title\">No data found</div>\r\n <div class=\"av2-empty-sub\">{{ col.empty }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <!-- Activity Log -->\r\n <section class=\"av2-card av2-card--log\">\r\n <div class=\"av2-card-head av2-card-head--center\">\r\n <div class=\"av2-card-title av2-card-title--grow\">Activity Log</div>\r\n\r\n <label class=\"av2-search av2-search--lg\">\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\r\n stroke-linecap=\"round\">\r\n <circle cx=\"11\" cy=\"11\" r=\"7\"></circle>\r\n <line x1=\"16.5\" y1=\"16.5\" x2=\"21\" y2=\"21\"></line>\r\n </svg>\r\n <input [(ngModel)]=\"search\" (ngModelChange)=\"onSearch()\" type=\"text\" [placeholder]=\"searchHint\" autocomplete=\"off\" />\r\n </label>\r\n\r\n <div class=\"log-date-picker\">\r\n <lib-date-range-picker [range]=\"activityRange\" (dateChange)=\"onActivityDateChange($event)\"></lib-date-range-picker>\r\n </div>\r\n\r\n <!-- One filter per tab (lib-filters reads its options once); each keeps its own selection. -->\r\n <lib-filters *ngIf=\"tab === 'Audit'\" [dataObject]=\"activityFilterData.Audit\" (appliedFilters)=\"onActivityFilters($event)\"></lib-filters>\r\n <lib-filters *ngIf=\"tab === 'Task'\" [dataObject]=\"activityFilterData.Task\" (appliedFilters)=\"onActivityFilters($event)\"></lib-filters>\r\n </div>\r\n\r\n <!-- Audit / Task -->\r\n <div class=\"av2-tabs\">\r\n <button *ngFor=\"let t of tabs\" type=\"button\" class=\"av2-tab\" [class.is-active]=\"tab === t\"\r\n (click)=\"setTab(t)\">{{ t }}</button>\r\n </div>\r\n\r\n <lib-audit-v2-shimmer *ngIf=\"logLoading\"></lib-audit-v2-shimmer>\r\n\r\n <div class=\"av2-table-wrap\" *ngIf=\"!logLoading\">\r\n <table class=\"av2-table log-table\">\r\n <thead>\r\n <tr>\r\n <th class=\"av2-sortable\" (click)=\"sortLog('date')\">Date & Time <lib-audit-v2-sort-icon [active]=\"logSortKey === 'date'\" [dir]=\"logSortBy === 1 ? 'asc' : 'desc'\"></lib-audit-v2-sort-icon></th>\r\n <th class=\"av2-sortable\" (click)=\"sortLog('name')\">{{ nameLabel }} <lib-audit-v2-sort-icon [active]=\"logSortKey === 'name'\" [dir]=\"logSortBy === 1 ? 'asc' : 'desc'\"></lib-audit-v2-sort-icon></th>\r\n <th class=\"av2-sortable\" (click)=\"sortLog('action')\">Action Performed <lib-audit-v2-sort-icon [active]=\"logSortKey === 'action'\" [dir]=\"logSortBy === 1 ? 'asc' : 'desc'\"></lib-audit-v2-sort-icon></th>\r\n <th class=\"av2-sortable\" (click)=\"sortLog('by')\">Performed by <lib-audit-v2-sort-icon [active]=\"logSortKey === 'by'\" [dir]=\"logSortBy === 1 ? 'asc' : 'desc'\"></lib-audit-v2-sort-icon></th>\r\n <th class=\"av2-sortable\" (click)=\"sortLog('store')\">Name <lib-audit-v2-sort-icon [active]=\"logSortKey === 'store'\" [dir]=\"logSortBy === 1 ? 'asc' : 'desc'\"></lib-audit-v2-sort-icon></th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let row of pageRows; trackBy: trackByRow\">\r\n <td>\r\n <div class=\"av2-cell-stack\">\r\n <span>{{ row.day }}</span>\r\n <span class=\"av2-muted\">{{ row.time }}</span>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"av2-cell-stack log-name\">\r\n <span class=\"av2-ellipsis\" [av2Tip]=\"row.name\">{{ row.name }}</span>\r\n <span *ngIf=\"row.detail\" class=\"av2-muted av2-ellipsis\" [av2Tip]=\"row.detail\">{{ row.detail }}</span>\r\n </div>\r\n </td>\r\n <td><span class=\"av2-badge activity-action\" [ngClass]=\"row.tone === 'primary' ? '' : 'av2-badge--' + row.tone\"\r\n [title]=\"row.action + ' ' + row.by\">{{ row.action }}</span></td>\r\n <td>\r\n <div class=\"av2-cell-icon av2-dim\">\r\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <circle cx=\"12\" cy=\"8\" r=\"3.4\"></circle>\r\n <path d=\"M5 20c0-3.6 3.1-5.6 7-5.6s7 2 7 5.6\"></path>\r\n </svg>\r\n <span>{{ row.by }}</span>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"av2-cell-icon store-cell\">\r\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M3 9l1.6-4.5h14.8L21 9\"></path>\r\n <path d=\"M4 9v11h16V9\"></path>\r\n <path d=\"M9 20v-6h6v6\"></path>\r\n </svg>\r\n <span>{{ row.store }}</span>\r\n </div>\r\n </td>\r\n <td>\r\n <a *ngIf=\"row.viewable\" class=\"av2-link\" routerLink=\"/manage/trax/audit-v2/gallery\"\r\n [queryParams]=\"galleryParams(row)\" title=\"Open this submission in the Gallery\">View</a>\r\n <span *ngIf=\"!row.viewable\" class=\"av2-faint\">-</span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <div *ngIf=\"!logLoading && !filteredRows.length\" class=\"av2-empty\">\r\n <img class=\"av2-empty-img\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"av2-empty-text\">\r\n <div class=\"av2-empty-title\">No data found</div>\r\n <div class=\"av2-empty-sub\">There is no result for {{ tab }}</div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"!logLoading && filteredRows.length\" class=\"log-pagination\">\r\n <lib-pagination [itemsPerPage]=\"itemsPerPage\" [pageSize]=\"itemsPerPage\" [paginationSizes]=\"pageSizes\" [currentPage]=\"currentPage\" [totalItems]=\"totalItems\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </section>\r\n\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.av2-page{display:flex;flex-direction:column;gap:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color:#101828;-webkit-font-smoothing:antialiased}.av2-page *,.av2-page *:before,.av2-page *:after{box-sizing:border-box}.av2-card{background:#fff;border-radius:8px;box-shadow:inset 0 0 0 1px #f1f1f4,0 3px 4px #00000008;padding:20px 24px;display:flex;flex-direction:column;gap:20px}.av2-card--log{padding:20px 24px 24px;gap:18px}.av2-card--table{padding:20px 24px 24px;gap:16px}.av2-card-head{display:flex;align-items:flex-start;gap:16px;flex-wrap:wrap}.av2-card-head--center{align-items:center;gap:12px}.av2-title-block{display:flex;flex-direction:column;gap:4px;flex:1;min-width:220px}.av2-card-title{font-size:20px;line-height:30px;font-weight:600;color:#101828;display:flex;align-items:center;gap:10px}.av2-card-title--grow{flex:1;min-width:180px}.av2-card-sub{font-size:14px;line-height:20px;color:#667085}.av2-grow{flex:1}.av2-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.av2-grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:20px}.av2-grid-4{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.av2-stat-card{background:#fff;border-radius:8px;box-shadow:inset 0 0 0 1px #f1f1f4,0 3px 4px #00000008;padding:10px}.av2-stat{padding:8px 16px;border-radius:6px;border-bottom:2px solid #EAECF0;background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d;display:flex;align-items:center;gap:20px}.av2-stat-value{font-size:30px;line-height:38px;font-weight:600;color:#101828}.av2-stat-label{font-size:14px;line-height:20px;font-weight:500;color:#344054}.av2-kpi{background:#fff;border-radius:10px;box-shadow:inset 0 0 0 1px #eaecf0,0 1px 2px #1018280d;display:flex;flex-direction:column;overflow:hidden}.av2-kpi.is-primary{box-shadow:inset 0 0 0 1px #99dbff,0 1px 2px #1018280d}.av2-kpi.is-primary .av2-kpi-head{background:#eaf8ff}.av2-kpi-head{padding:14px 18px;background:#f9fafb;font-size:16px;line-height:24px;font-weight:500;color:#101828}.av2-kpi-body{padding:16px 18px 18px;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.av2-kpi-value{font-size:20px;line-height:30px;font-weight:700;color:#101828}.av2-kpi-delta{display:flex;align-items:center;gap:4px;font-size:12px;color:#039855}.av2-kpi-delta.is-down{color:#d92d20}.av2-kpi-note{font-size:12px;color:#667085}.av2-ocard{padding:8px;border-radius:12px;border:1px solid #D0D5DD;background:#fff;display:flex;flex-direction:column;min-width:0;height:100%}.av2-ocard-head{min-height:70px;padding:10px 14px;border-radius:6px;border-bottom:2px solid #EAECF0;background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:2px;min-width:0}.av2-ocard-head--row{flex-direction:row;align-items:center;justify-content:flex-start;gap:12px}.av2-ocard-count{font-size:30px;line-height:38px;font-weight:600;color:#101828;white-space:nowrap}.av2-ocard-text{font-size:14px;line-height:20px;font-weight:500;color:#344054}.av2-ocard-body{flex:1;padding:12px 14px;display:flex;gap:16px;min-width:0}.av2-ocard-cell{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.av2-ocard-cell--center{align-items:center;text-align:center}.av2-ocard-sub{margin:4px 0;font-size:20px;line-height:30px;font-weight:700;color:#101828}.av2-ocard-note{font-size:14px;line-height:20px;font-weight:400;color:#667085}.av2-ocard-delta{margin-top:6px;display:inline-flex;align-items:center;gap:6px;font-size:12px;line-height:18px;font-weight:400;color:#1d2939}.av2-ocard-delta b{font-weight:600;color:#667085}.av2-ocard-delta svg{flex-shrink:0;color:#039855}.av2-ocard-delta.is-down svg{color:#d92d20}.av2-search{position:relative;display:flex;align-items:center;gap:8px;height:44px;padding:0 12px;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #d0d5dd;color:#98a2b3;font-size:14px;flex-shrink:0}.av2-search svg{flex-shrink:0}.av2-search input{flex:1;min-width:0;height:100%;border:0;outline:0;padding:0;background:transparent;font:inherit;font-size:14px;font-weight:500;color:#101828}.av2-search input::placeholder{color:#98a2b3}.av2-search:focus-within{box-shadow:inset 0 0 0 1px #66c8ff,0 0 0 4px #eaf8ff}.av2-search--sm{width:300px}.av2-search--md{width:320px}.av2-search--lg{width:340px}.av2-select{height:44px;padding:0 36px 0 12px;border:0;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #d0d5dd;font:inherit;font-size:14px;font-weight:500;color:#344054;cursor:pointer;appearance:none;-webkit-appearance:none;background-image:url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23344054' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>\");background-repeat:no-repeat;background-position:right 12px center;flex-shrink:0}.av2-select:focus{outline:0;box-shadow:inset 0 0 0 1px #66c8ff,0 0 0 4px #eaf8ff}.av2-select--sm{width:180px}.av2-chip{display:flex;align-items:center;gap:8px;height:44px;padding:0 12px;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #d0d5dd;font-size:14px;color:#344054;white-space:nowrap;flex-shrink:0}.av2-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:44px;padding:0 16px;border:0;border-radius:8px;font-family:inherit;font-size:14px;line-height:20px;font-weight:600;cursor:pointer;white-space:nowrap;flex-shrink:0;transition:background-color .15s cubic-bezier(.4,0,.2,1)}.av2-btn svg{flex-shrink:0}.av2-btn:disabled{opacity:.55;cursor:not-allowed}.av2-btn--ghost{background:#fff;box-shadow:inset 0 0 0 1px #d0d5dd;color:#344054;font-weight:500}.av2-btn--ghost:hover:not(:disabled){background:#f9fafb}.av2-btn--primary{background:#00a3ff;color:#fff;font-size:16px;line-height:24px}.av2-btn--primary:hover:not(:disabled){background:#009bf3}.av2-btn--sm{height:36px;padding:0 14px;font-size:13px}.av2-btn--wide{padding:0 18px}.av2-tabs{display:flex;align-items:center;gap:6px}.av2-tab{height:44px;padding:0 26px;border:0;border-radius:6px;background:transparent;display:inline-flex;align-items:center;justify-content:center;font-family:inherit;font-size:16px;font-weight:500;color:#475467;cursor:pointer}.av2-tab.is-active{background:#eaf8ff;color:#009bf3;font-weight:500}.av2-badge{display:inline-flex;align-items:center;height:22px;padding:2px 8px;border-radius:16px;background:#eaf8ff;color:#009bf3;font-size:12px;font-weight:500;line-height:18px;white-space:nowrap}.av2-badge--count{height:22px;padding:0 8px}.av2-badge--success{background:#ecfdf3;color:#027a48}.av2-badge--error{background:#fef3f2;color:#b42318}.av2-badge--warning{background:#fffaeb;color:#b54708}.av2-badge--gray{background:#f2f4f7;color:#344054}.av2-badge--purple{background:#f9f5ff;color:#5925dc}.av2-link{color:#00a3ff;font-size:14px;font-weight:500;text-decoration:underline;cursor:pointer}.av2-link:hover{color:#009bf3;text-decoration:underline}.av2-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.av2-muted{color:#667085}.av2-dim{color:#475467}.av2-faint{color:#98a2b3}table tbody td.av2-dim{color:#475467}table tbody td.av2-faint{color:#98a2b3}.av2-table-wrap{overflow-x:auto}.av2-table{width:100%;border-collapse:separate;border-spacing:0;margin:0}.av2-table thead th{background:#f9fafb;padding:12px;font-size:12px;line-height:18px;font-weight:500;color:#667085;text-align:left;text-transform:none;letter-spacing:0;border:0;white-space:nowrap}.av2-table thead th:first-child{border-radius:8px 0 0}.av2-table thead th:last-child{border-radius:0 8px 0 0}.av2-table tbody td{padding:16px 12px;border:0;border-bottom:1px solid #F2F4F7;font-size:14px;line-height:20px;font-weight:500;color:#101828;vertical-align:middle}.av2-table .av2-th-sort{display:inline-flex;align-items:center;gap:4px}.av2-table .av2-cell-icon{display:flex;align-items:center;gap:8px;min-width:0}.av2-table .av2-cell-icon svg{flex-shrink:0}.av2-table .av2-cell-icon span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.av2-table .av2-cell-stack{display:flex;flex-direction:column;gap:2px}.av2-table .av2-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.av2-sortable{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.av2-table--lined thead th{background:transparent;border-bottom:1px solid #EAECF0;border-radius:0!important}.av2-empty{display:flex;flex-direction:column;align-items:center;gap:12px;padding:24px 16px 32px;text-align:center}.av2-empty-img{display:block;width:160px;height:120px}.av2-empty-text{display:flex;flex-direction:column;gap:4px;align-items:center}.av2-empty-title{font-size:16px;line-height:24px;font-weight:600;color:#101828}.av2-empty-sub{max-width:480px;font-size:14px;line-height:20px;color:#667085;text-wrap:pretty}.av2-col-head{border-radius:8px;background:#f9fafb;padding:14px 16px;font-size:12px;line-height:20px;font-weight:500;color:#344054;display:flex;align-items:center;gap:8px}.av2-avatar{width:32px;height:32px;flex-shrink:0;border-radius:9999px;background:#eaf8ff;color:#009bf3;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:700}.av2-bar{flex:1;height:5px;border-radius:9999px;background:#f2f4f7;overflow:hidden;display:block;min-width:60px}.av2-bar span{display:block;height:5px;border-radius:9999px;background:#00a3ff}@keyframes av2-shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.av2-sk{display:block;width:100%;max-width:100%;height:12px;border-radius:4px;flex-shrink:0;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%;animation:av2-shimmer 3s linear infinite}.av2-sk--value{width:72px;height:28px;border-radius:6px}.av2-sk--title{width:220px;height:18px}.av2-sk--note{width:60%}.av2-sk--block{border-radius:8px}@media (prefers-reduced-motion: reduce){.av2-sk{animation:none}}::ng-deep .tooltip.av2-tip{--bs-tooltip-bg: #fff;--bs-tooltip-color: #344054;--bs-tooltip-max-width: 320px;--bs-tooltip-opacity: 1}::ng-deep .tooltip.av2-tip .tooltip-inner{background-color:#fff!important;color:#344054!important;padding:8px 12px;border-radius:8px;font-size:13px;line-height:18px;font-weight:500;text-align:left;box-shadow:0 12px 16px -4px #10182814,0 4px 6px -2px #10182808,0 0 0 1px #eaecf0}::ng-deep .tooltip.av2-tip .tooltip-arrow:before{border-top-color:#fff;border-bottom-color:#fff}:host ::ng-deep lib-pagination{display:block}:host ::ng-deep lib-pagination .container{max-width:none;padding:0;display:flex;align-items:center;justify-content:center;gap:16px;flex-wrap:wrap;font-size:14px;color:#475467}:host ::ng-deep lib-pagination .mt-4{margin-top:0!important}:host ::ng-deep lib-pagination .container>.text-center{display:flex;align-items:center}:host ::ng-deep lib-pagination .container>.text-center>ul:not(.ngx-pagination){display:none}:host ::ng-deep lib-pagination pagination-controls{display:flex;align-items:center}:host ::ng-deep lib-pagination .sub-title{color:#475467!important;font-size:14px!important;font-weight:400!important;line-height:20px}:host ::ng-deep lib-pagination .border-val{height:40px;min-width:64px;padding:0 30px 0 12px!important;border:1px solid #D0D5DD!important;border-radius:8px!important;box-shadow:0 1px 2px #1018280d;background-color:#fff;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23667085' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E\")!important;background-repeat:no-repeat!important;background-position:right 10px center!important;background-size:14px 14px!important;appearance:none;-webkit-appearance:none;font-size:14px;font-weight:500;color:#1d2939;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease}:host ::ng-deep lib-pagination .border-val:hover{border-color:#98a2b3!important}:host ::ng-deep lib-pagination .border-val:focus{outline:none;border-color:#66c8ff!important;box-shadow:0 0 0 3px #eaf8ff}:host ::ng-deep lib-pagination .ngx-pagination{margin:0;padding:0;display:flex;align-items:center;gap:6px;color:#475467!important;font-size:14px!important;font-weight:500}:host ::ng-deep lib-pagination .ngx-pagination li{display:inline-flex;margin:0}:host ::ng-deep lib-pagination .ngx-pagination li.small-screen{display:none!important}:host ::ng-deep lib-pagination .ngx-pagination a,:host ::ng-deep lib-pagination .ngx-pagination button,:host ::ng-deep lib-pagination .ngx-pagination .current,:host ::ng-deep lib-pagination .ngx-pagination .disabled{min-width:40px!important;height:40px;padding:0 8px!important;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;line-height:20px;color:#475467}:host ::ng-deep lib-pagination .ngx-pagination a:hover,:host ::ng-deep lib-pagination .ngx-pagination button:hover{background:#f2f4f7;padding:0 8px!important}:host ::ng-deep lib-pagination .ngx-pagination .current{background:#eaf8ff!important;color:#00a3ff!important;font-weight:600;font-size:14px!important}:host ::ng-deep lib-pagination .ngx-pagination .disabled{color:#98a2b3}:host ::ng-deep lib-pagination .ngx-pagination .pagination-previous a:before,:host ::ng-deep lib-pagination .ngx-pagination .pagination-previous a:after,:host ::ng-deep lib-pagination .ngx-pagination .pagination-previous.disabled:before,:host ::ng-deep lib-pagination .ngx-pagination .pagination-previous.disabled:after,:host ::ng-deep lib-pagination .ngx-pagination .pagination-next a:before,:host ::ng-deep lib-pagination .ngx-pagination .pagination-next a:after,:host ::ng-deep lib-pagination .ngx-pagination .pagination-next.disabled:before,:host ::ng-deep lib-pagination .ngx-pagination .pagination-next.disabled:after{margin:0}:host ::ng-deep lib-pagination .ngx-pagination .ellipsis:after{color:#98a2b3;padding:0}.ac-sk-value{width:56px;height:32px;margin:3px 0}.approval-col{display:flex;flex-direction:column;gap:28px}.approval-cards{display:flex;flex-direction:column;gap:12px;max-height:420px;overflow-y:auto;padding-right:4px}.approval-card{display:flex;flex-direction:column;gap:6px;padding:14px 16px;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #f1f1f4,0 3px 4px #00000008;cursor:pointer}.approval-card:hover{background:#fcfcfd}.approval-card:focus-visible{outline:2px solid #66C8FF;outline-offset:1px}.approval-card--off{cursor:default}.approval-card--off:hover{background:#fff}.approval-card-name{font-size:14px;line-height:20px;font-weight:600;color:#101828}.approval-card-meta{display:flex;flex-direction:column;gap:2px;font-size:12px;line-height:18px;color:#667085}.log-table{table-layout:fixed}.log-table th:nth-child(1){width:11%}.log-table th:nth-child(2){width:20%}.log-table th:nth-child(3){width:23%}.log-table th:nth-child(4){width:24%}.log-table th:nth-child(5){width:14%}.log-table th:nth-child(6){width:8%}.log-name{min-width:0}.log-name .av2-muted{font-size:12px;line-height:18px}.store-cell{color:#344054}.log-pagination{padding-top:20px}.approval-card-badges{display:flex;flex-wrap:wrap;gap:6px}.approval-card-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:2px}.approval-card-date{font-size:12px;line-height:18px;color:#667085}.approval-scope-select{min-width:160px}.log-date-picker{display:flex;align-items:center}:host ::ng-deep .log-date-picker .my-1{margin-top:0!important;margin-bottom:0!important}.activity-action{display:inline-block;max-width:100%;box-sizing:border-box;height:22px;padding:2px 10px;line-height:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}\n"] }]
|
|
508
512
|
}], ctorParameters: () => [{ type: i1.TraxService }, { type: i2.GlobalStateService }, { type: i0.ChangeDetectorRef }, { type: i3.Router }] });
|
|
509
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtdjItYWN0aW9uLWNlbnRyZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2F1ZGl0LXYyL2FjdGlvbi1jZW50cmUvYXVkaXQtdjItYWN0aW9uLWNlbnRyZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2F1ZGl0LXYyL2FjdGlvbi1jZW50cmUvYXVkaXQtdjItYWN0aW9uLWNlbnRyZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFaEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTlFLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7Ozs7Ozs7O0FBR25DLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFvRGxCOzs7OztHQUtHO0FBQ0gsTUFBTSxZQUFZLEdBQXdEO0lBQ3hFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtJQUMvQyxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7SUFDbEQsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7SUFDcEQsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQy9DLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtJQUN2RCxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7SUFDckQsV0FBVyxFQUFFLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7SUFDekQsVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0lBQ3BELE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRTtJQUMvQyxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtJQUN6RCxjQUFjLEVBQUUsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtJQUNoRSxpQkFBaUIsRUFBRSxFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQ3RFLG1CQUFtQixFQUFFLEVBQUUsS0FBSyxFQUFFLHlCQUF5QixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7SUFDMUUsa0JBQWtCLEVBQUUsRUFBRSxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtJQUNyRSxlQUFlLEVBQUUsRUFBRSxLQUFLLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRTtDQUNqRSxDQUFDO0FBRUYsd0VBQXdFO0FBQ3hFLE1BQU0sYUFBYSxHQUFHO0lBQ3BCLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFO0lBQ25DLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFO0NBQ3ZDLENBQUM7QUFFRjs7Ozs7OztHQU9HO0FBTUgsTUFBTSxPQUFPLDRCQUE0QjtJQWlFN0I7SUFDQTtJQUNBO0lBQ0E7SUFuRVYsbUNBQW1DO0lBQ25DLEdBQUcsR0FBYyxPQUFPLENBQUM7SUFDaEIsSUFBSSxHQUFnQixDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUUvQywrQkFBK0I7SUFDL0IsY0FBYyxHQUFHLEVBQUUsQ0FBQztJQUNwQixhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQ2IsY0FBYyxHQUFHLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMxQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwRixxQkFBcUIsR0FBa0MsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRWxGLDJGQUEyRjtJQUMzRixhQUFhLEdBQWtELElBQUksQ0FBQztJQUNwRSxzR0FBc0c7SUFDckYsWUFBWSxHQUFnQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ3JGOzs7O09BSUc7SUFDTSxrQkFBa0IsR0FBNkI7UUFDdEQsS0FBSyxFQUFFLENBQUM7Z0JBQ04sV0FBVyxFQUFFLFNBQVM7Z0JBQ3RCLE1BQU0sRUFBRTtvQkFDTixHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ3ZDLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUU7b0JBQzNDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFO29CQUNuQyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRTtvQkFDM0MsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUU7b0JBQ3pDLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUU7b0JBQzdDLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFO29CQUMzQyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRTtvQkFDckMsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRTtpQkFDN0M7YUFDRixDQUFDO1FBQ0YsSUFBSSxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztLQUNqRixDQUFDO0lBRUYsNkJBQTZCO0lBQzdCLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFDWixTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ2YsWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUNsQixXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBQ1AsU0FBUyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsQyx3RUFBd0U7SUFDeEUsVUFBVSxHQUFHLENBQUMsQ0FBQztJQUVmLFlBQVksR0FBRyxDQUFDLENBQUM7SUFDakIsV0FBVyxHQUFHLENBQUMsQ0FBQztJQUVoQixJQUFJLEdBQWtCLEVBQUUsQ0FBQztJQUN6QixPQUFPLEdBQXFCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUVoRCxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUN4QixVQUFVLEdBQUcsSUFBSSxDQUFDO0lBRVYsVUFBVSxDQUFNO0lBQ1AsV0FBVyxHQUFhLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO0lBQ3BGLGVBQWUsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO0lBQ3hDLE9BQU8sR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO0lBQ2hDLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRWhELFlBQ1UsV0FBd0IsRUFDeEIsRUFBc0IsRUFDdEIsRUFBcUIsRUFDckIsTUFBYztRQUhkLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLE9BQUUsR0FBRixFQUFFLENBQW9CO1FBQ3RCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVE7SUFDcEIsQ0FBQztJQUVMLFFBQVE7UUFDTixJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWM7YUFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2pELFNBQVMsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO2dCQUFFLE9BQU87YUFBRTtZQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsWUFBWSxDQUFDLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDbkgsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFELElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO1FBRUwsSUFBSSxDQUFDLGVBQWU7YUFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLG9CQUFvQixFQUFFLENBQUM7YUFDekUsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBRXpDLElBQUksQ0FBQyxPQUFPO2FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLG9CQUFvQixFQUFFLENBQUM7YUFDekUsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssb0JBQW9CLENBQUMsSUFBUztRQUNwQyxJQUFJLENBQUMsSUFBSSxFQUFFLFNBQVMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQztTQUFFO1FBQ3hELE1BQU0sU0FBUyxHQUFHLEtBQUssRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDekYsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFRCxtRUFBbUU7SUFDM0QsV0FBVztRQUNqQixPQUFPO1lBQ0wsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsTUFBTTtZQUNqQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsU0FBUztZQUMxQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsT0FBTztZQUN0QyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDakcsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1NBQzlCLENBQUM7SUFDSixDQUFDO0lBRU8sU0FBUztRQUNmLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2FBQ3hELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzlCLFNBQVMsQ0FBQztZQUNULElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNqRSxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNwRCxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNsRCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztnQkFDMUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMxQixDQUFDO1lBQ0QsS0FBSyxFQUFFLEdBQUcsRUFBRTtnQkFDVixJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO2dCQUMxQixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzFCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sYUFBYTtRQUNuQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUNyRyxJQUFJLENBQUMsV0FBVyxDQUFDLDBCQUEwQixDQUFDO1lBQzFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNyQixXQUFXLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUU7WUFDdkMsSUFBSTtTQUNMLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUMxQyxJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDakIsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUN2RCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDbEYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztnQkFDOUYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFDdEYsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztnQkFDOUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMxQixDQUFDO1lBQ0QsS0FBSyxFQUFFLEdBQUcsRUFBRTtnQkFDVixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztnQkFDOUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMxQixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLE1BQU0sQ0FBQyxDQUFNLEVBQUUsTUFBNkI7UUFDbEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxFQUFFLFFBQVEsS0FBSyxNQUFNO1lBQ2xDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLElBQUksR0FBRyxDQUFDO1lBQ3RCLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNGLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlDLE9BQU87WUFDTCxJQUFJLEVBQUUsQ0FBQyxFQUFFLGFBQWEsSUFBSSxHQUFHO1lBQzdCLEtBQUs7WUFDTCxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsSUFBSSxDQUFDLEVBQUUsYUFBYSxJQUFJLEdBQUcsQ0FBQztZQUN2RixJQUFJLEVBQUUsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHO1lBQ25FLFNBQVMsRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPO1lBQ2xELGNBQWMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLGFBQWEsU0FBUyxNQUFNLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2xFLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLFlBQVksUUFBUSxNQUFNLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3JFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUk7WUFDZixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUM7WUFDdEMsR0FBRyxFQUFFLENBQUM7U0FDUCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssUUFBUSxDQUFDLENBQU0sRUFBRSxNQUE2QixFQUFFLFNBQWlCO1FBQ3ZFLE1BQU0sSUFBSSxHQUFHLENBQUMsRUFBRSxNQUFNLEtBQUssTUFBTSxDQUFDO1FBQ2xDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLElBQUksRUFBRSxDQUFDLENBQUM7UUFDakQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksRUFBRTtZQUNuQixPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7U0FDakM7UUFDRCxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRTtZQUMxQixPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUscUVBQXFFLEVBQUUsQ0FBQztTQUNwRztRQUNELE1BQU0sTUFBTSxHQUFHLE1BQU0sS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDNUYsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sQ0FBQztRQUN6RCxPQUFPO1lBQ0wsSUFBSSxFQUFFO2dCQUNKLEtBQUssRUFBRSxJQUFJO2dCQUNYLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUMvQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDbEM7WUFDRCxJQUFJLEVBQUUsTUFBTSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMseURBQXlEO2dCQUNqRixDQUFDLENBQUMsTUFBTSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsOENBQThDO29CQUN0RSxDQUFDLENBQUMscUNBQXFDO1NBQzVDLENBQUM7SUFDSixDQUFDO0lBRUQsb0dBQW9HO0lBQzVGLE1BQU0sQ0FBQyxLQUFVO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFBRSxPQUFPLEVBQUUsQ0FBQztTQUFFO1FBQzFCLE1BQU0sQ0FBQyxHQUFHLHNCQUFzQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNyRCxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxRQUFRLENBQUMsSUFBa0I7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFBRSxPQUFPO1NBQUU7UUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQywrQkFBK0IsQ0FBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFRDs7O09BR0c7SUFDSCxhQUFhLEdBQUcsRUFBRSxDQUFDO0lBQ25CLFNBQVMsR0FBVyxDQUFDLENBQUMsQ0FBQztJQUV2QixJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxhQUFhLElBQUksTUFBTSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxPQUFPLENBQUMsTUFBYztRQUNwQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ2hDLHNGQUFzRjtRQUN0RixJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckcsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQzlFLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRU8sWUFBWTtRQUNsQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsV0FBVyxDQUFDLHlCQUF5QixDQUFDO1lBQ3pDLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNyQixHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM3RyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTztZQUM1QyxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDeEIsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQ3hCLFdBQVcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRTtZQUMvQiwwR0FBMEc7WUFDMUcsUUFBUSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsaUJBQWlCLEVBQUU7WUFDeEMseUZBQXlGO1lBQ3pGLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzlDLDhGQUE4RjtZQUM5RixHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDMUYsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzFDLElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZELElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUM1RSxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMxQyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztnQkFDeEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMxQixDQUFDO1lBQ0QsS0FBSyxFQUFFLEdBQUcsRUFBRTtnQkFDVixJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDMUIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLFNBQVMsQ0FBQyxHQUFRO1FBQ3hCLE9BQU8sR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM1QyxDQUFDO0lBRU8sS0FBSyxDQUFDLEdBQVE7UUFDcEIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQixNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2hELE9BQU87WUFDTCxJQUFJLEVBQUUsR0FBRyxFQUFFLGFBQWEsSUFBSSxHQUFHO1lBQy9CLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQztZQUM5QixrREFBa0Q7WUFDbEQsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLElBQUksTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxDQUFDO1lBQ2xELElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxJQUFJLE1BQU07WUFDM0IsRUFBRSxFQUFFLEdBQUcsRUFBRSxTQUFTLElBQUksR0FBRyxFQUFFLFFBQVEsSUFBSSxHQUFHO1lBQzFDLEtBQUssRUFBRSxHQUFHLEVBQUUsU0FBUyxJQUFJLEdBQUc7WUFDNUIsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUc7WUFDL0csSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRztZQUN2QywwR0FBMEc7WUFDMUcsc0ZBQXNGO1lBQ3RGLFFBQVEsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLFFBQVEsSUFBSSxHQUFHLEVBQUUsSUFBSSxLQUFLLEtBQUs7WUFDaEQsR0FBRyxFQUFFLEdBQUc7U0FDVCxDQUFDO0lBQ0osQ0FBQztJQUVELDBGQUEwRjtJQUNsRixTQUFTLENBQUMsR0FBUTtRQUN4QixJQUFJLEdBQUcsRUFBRSxJQUFJLEtBQUssS0FBSyxFQUFFO1lBQUUsT0FBTyxNQUFNLENBQUMsR0FBRyxFQUFFLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQztTQUFFO1FBQ3BFLE9BQU8sR0FBRyxFQUFFLE1BQU0sS0FBSyxjQUFjLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQzdELENBQUM7SUFFRDs7O09BR0c7SUFDSyxZQUFZLENBQUMsR0FBUTtRQUMzQixJQUFJLEdBQUcsRUFBRSxJQUFJLEtBQUssS0FBSyxFQUFFO1lBQUUsT0FBTyxFQUFFLENBQUM7U0FBRTtRQUN2QyxNQUFNLEtBQUssR0FBYSxFQUFFLENBQUM7UUFDM0IsSUFBSSxNQUFNLENBQUMsR0FBRyxFQUFFLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksR0FBRyxFQUFFLFlBQVksRUFBRTtZQUMvRSxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDN0M7UUFDRCxJQUFJLEdBQUcsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFO1lBQzFCLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDN0M7UUFDRCxrRkFBa0Y7UUFDbEYsSUFBSSxHQUFHLEVBQUUsWUFBWSxLQUFLLFFBQVEsSUFBSSxHQUFHLEVBQUUsT0FBTyxFQUFFO1lBQ2xELE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUM7WUFDdEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDdkUsTUFBTSxJQUFJLEdBQWEsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsRUFBRTtnQkFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUM7YUFBRTtZQUN2RSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLEVBQUU7Z0JBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDO2FBQUU7WUFDMUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEVBQUU7Z0JBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUM7YUFBRTtZQUM3RSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLEVBQUU7Z0JBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUM7YUFBRTtZQUNySSxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUU7Z0JBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxDQUFDO2FBQUU7WUFDekUsSUFBSSxDQUFDLENBQUMsa0JBQWtCLEVBQUU7Z0JBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO2FBQUU7WUFDL0QsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsc0NBQXNDLENBQUMsQ0FBQztTQUMvRjtRQUNELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsYUFBYSxDQUFDLEdBQWdCO1FBQzVCLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDO1FBQzFCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsT0FBTztZQUNMLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLGtCQUFrQixJQUFJLEVBQUUsQ0FBQztZQUMzQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1lBQ2hDLElBQUksRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3JGLHdFQUF3RTtZQUN4RSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDakQsQ0FBQztJQUNKLENBQUM7SUFFTyxHQUFHLENBQUMsS0FBVSxFQUFFLE9BQWU7UUFDckMsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUNwRCxDQUFDO0lBRU8sWUFBWTtRQUNsQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDOUQsT0FBTztZQUNMLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSw4QkFBOEIsR0FBRyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUN2RixFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsb0NBQW9DLEdBQUcsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDekcsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLGtDQUFrQyxHQUFHLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1NBQ3BHLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQWM7UUFDbkIsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLEdBQUcsRUFBRTtZQUFFLE9BQU87U0FBRTtRQUNqQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQscUJBQXFCLENBQUMsSUFBZ0M7UUFDcEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQUUsT0FBTztTQUFFO1FBQ3JELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELG9CQUFvQixDQUFDLEtBQStDO1FBQ2xFLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRTtZQUFFLE9BQU87U0FBRTtRQUNyRCxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM1RSxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQVk7UUFDNUIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxLQUFLLFNBQVMsQ0FBQyxDQUFDO1FBQzdFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsR0FBRyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7SUFDMUQsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLEdBQUcsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLGdDQUFnQyxDQUFDLENBQUMsQ0FBQyxpQ0FBaUMsQ0FBQztJQUNwRyxDQUFDO0lBRUQsK0VBQStFO0lBQy9FLElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBWTtRQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELG1GQUFtRjtJQUNuRixnQkFBZ0IsQ0FBQyxJQUFTO1FBQ3hCLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFhLEVBQUUsR0FBZ0I7UUFDeEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsb0JBQW9CLElBQUksR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQzdGLENBQUM7SUFFRCxhQUFhLENBQUMsQ0FBUyxFQUFFLEdBQW1CO1FBQzFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUNqQixDQUFDO3dHQTVjVSw0QkFBNEI7NEZBQTVCLDRCQUE0QixrRUN2R3pDLG9xVUE2TEE7OzRGRHRGYSw0QkFBNEI7a0JBTHhDLFNBQVM7K0JBQ0UsNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgU3ViamVjdCwgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xyXG5pbXBvcnQgdXRjIGZyb20gJ2RheWpzL3BsdWdpbi91dGMnO1xyXG5pbXBvcnQgeyBUcmF4U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RyYXguc2VydmljZSc7XHJcblxyXG5kYXlqcy5leHRlbmQodXRjKTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQWN0aXZpdHlSb3cge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICAvKiogU2Vjb25kIGxpbmUgdW5kZXIgdGhlIG5hbWU6IHRoZSBzY2hlZHVsZSAoXCJTY2hlZHVsZTogWFwiKSBhbmQgLyBvciB0aGUgY29weSBhIGR1cGxpY2F0ZSBtYWRlIChcIkNvcHk6IFhcIikuICovXHJcbiAgZGV0YWlsOiBzdHJpbmc7XHJcbiAgLyoqXHJcbiAgICogU2hvcnQgYWN0aW9uIGxhYmVsOiBcIlN0YXJ0ZWQgYnlcIiAvIFwiU3VibWl0dGVkIGJ5XCIgZm9yIGEgdmlzaXQsIG9yIGEgbG9nZ2VkIGF1ZGl0IC8gc2NoZWR1bGUgYWN0aW9uIHN1Y2ggYXNcclxuICAgKiBcIkF1ZGl0IGNyZWF0ZWQgYnlcIiwgXCJEdXBsaWNhdGVkIGJ5XCIsIFwiU2NoZWR1bGUgcHVibGlzaGVkIGJ5XCIuIE5hbWVzIHN0YXkgb3V0IG9mIHRoZSBiYWRnZSAoc2VlIGRldGFpbCkuXHJcbiAgICovXHJcbiAgYWN0aW9uOiBzdHJpbmc7XHJcbiAgLyoqIEJhZGdlIGNvbG91ciBmb3IgdGhlIGFjdGlvbiwgZm9sbG93aW5nIHRoZSBvbGQgQWN0aXZpdHkgTG9nIChzZWUgQUNUSU9OX0JBREdFKS4gKi9cclxuICB0b25lOiBBY3Rpb25Ub25lO1xyXG4gIGJ5OiBzdHJpbmc7XHJcbiAgc3RvcmU6IHN0cmluZztcclxuICBkYXk6IHN0cmluZztcclxuICB0aW1lOiBzdHJpbmc7XHJcbiAgLyoqIFN1Ym1pdHRlZCBlbnRyaWVzIGNhbiBiZSBvcGVuZWQ7IHN0YXJ0ZWQgb25lcyBjYW5ub3QuICovXHJcbiAgdmlld2FibGU6IGJvb2xlYW47XHJcbiAgcmF3PzogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFwcHJvdmFsQ2FyZCB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHN0b3JlOiBzdHJpbmc7XHJcbiAgYnk6IHN0cmluZztcclxuICB3aGVuOiBzdHJpbmc7XHJcbiAgLyoqIFwiQXVkaXRcIiBvciBcIlRhc2tcIiwgZnJvbSB0aGUgQVBJJ3MgbW9kdWxlIGZpZWxkLiAqL1xyXG4gIHR5cGVMYWJlbDogc3RyaW5nO1xyXG4gIC8qKiBcIlN1Ym1pdHRlZCB4IC8geVwiIChzdWJtaXR0ZWQgaW5zdGFuY2VzIC8gYXNzaWduZWQgc3RvcmVzKSwgb3IgJycgd2hlbiB1bmtub3duLiAqL1xyXG4gIHN1Ym1pdHRlZExhYmVsOiBzdHJpbmc7XHJcbiAgLyoqIFwiQXBwcm92ZWQgeCAvIHlcIiAoYXBwcm92ZWQgLyBzdWJtaXR0ZWQpLCBvciAnJyB3aGVuIG5vdGhpbmcgaXMgc3VibWl0dGVkIHlldC4gKi9cclxuICBhcHByb3ZlZExhYmVsOiBzdHJpbmc7XHJcbiAgcmVkbzogYm9vbGVhbjtcclxuICAvKiogR2FsbGVyeSBkZWVwIGxpbmsgKGF1ZGl0IC8gc3RvcmUgLyBkYXkgLyBhcHByb3ZhbCBzdGF0dXMpLCBvciBudWxsIHdoZW4gdGhlcmUgaXMgbm90aGluZyB0byByZXZpZXcgdGhlcmUuICovXHJcbiAgbGluazogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IG51bGw7XHJcbiAgLyoqIFRvb2x0aXA6IHdoYXQgYSBjbGljayBvcGVucywgb3Igd2h5IHRoZSBjYXJkIGNhbm5vdCBiZSBvcGVuZWQuICovXHJcbiAgaGludDogc3RyaW5nO1xyXG4gIHJhdz86IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBcHByb3ZhbENvbHVtbiB7XHJcbiAga2V5OiAnb3BlbicgfCAnaW5wcm9ncmVzcycgfCAnYXBwcm92ZWQnO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgZW1wdHk6IHN0cmluZztcclxuICBjYXJkczogQXBwcm92YWxDYXJkW107XHJcbn1cclxuXHJcbnR5cGUgQWN0aW9uVGFiID0gJ0F1ZGl0JyB8ICdUYXNrJztcclxuXHJcbnR5cGUgQWN0aW9uVG9uZSA9ICdwcmltYXJ5JyB8ICdncmF5JyB8ICd3YXJuaW5nJyB8ICdlcnJvcic7XHJcblxyXG4vKipcclxuICogQWN0aXZpdHkgTG9nIGJhZGdlIHBlciBhY3Rpb246IGEgc2hvcnQgbGFiZWwgbGlrZSB0aGUgb2xkIENoZWNrbGlzdCBBY3Rpdml0eSBMb2cncyAoZ2V0QWN0aW9uTGFiZWwpLCB3aXRoXHJcbiAqIHRoZSBzY2hlZHVsZSAvIGNvcHkgbmFtZXMgbW92ZWQgdG8gdGhlIG5hbWUgY29sdW1uLCBhbmQgaXRzIGNvbG91ciAoZ2V0QWN0aW9uQmFkZ2VDbGFzcyk6IHN0YXJ0IC8gc3VibWl0IC9cclxuICogcHVibGlzaCAvIGNvbmZpZyBjaGFuZ2VzIGJsdWUsIGNyZWF0ZWQgLyBkdXBsaWNhdGVkIGdyZXksIGVkaXRlZCBhbWJlciwgZGVsZXRlZCByZWQuXHJcbiAqIEtleXMgYXJlIHN0YXJ0IC8gc3VibWl0IGZvciB2aXNpdCBldmVudHMgYW5kIHRoZSBzdG9yZWQgYWN0aXZpdHlUeXBlIGZvciBsb2dnZWQgYXVkaXQgLyBzY2hlZHVsZSBhY3Rpb25zLlxyXG4gKi9cclxuY29uc3QgQUNUSU9OX0JBREdFOiBSZWNvcmQ8c3RyaW5nLCB7IGxhYmVsOiBzdHJpbmc7IHRvbmU6IEFjdGlvblRvbmUgfT4gPSB7XHJcbiAgc3RhcnQ6IHsgbGFiZWw6ICdTdGFydGVkIGJ5JywgdG9uZTogJ3ByaW1hcnknIH0sXHJcbiAgc3VibWl0OiB7IGxhYmVsOiAnU3VibWl0dGVkIGJ5JywgdG9uZTogJ3ByaW1hcnknIH0sXHJcbiAgY3JlYXRlZDogeyBsYWJlbDogJ0F1ZGl0IGNyZWF0ZWQgYnknLCB0b25lOiAnZ3JheScgfSxcclxuICBlZGl0ZWQ6IHsgbGFiZWw6ICdFZGl0ZWQgYnknLCB0b25lOiAnd2FybmluZycgfSxcclxuICBjb25maWd1cmVkOiB7IGxhYmVsOiAnQ29uZmlndXJlZCBieScsIHRvbmU6ICdwcmltYXJ5JyB9LFxyXG4gIHB1Ymxpc2hlZDogeyBsYWJlbDogJ1B1Ymxpc2hlZCBieScsIHRvbmU6ICdwcmltYXJ5JyB9LFxyXG4gIHVucHVibGlzaGVkOiB7IGxhYmVsOiAnVW5wdWJsaXNoZWQgYnknLCB0b25lOiAncHJpbWFyeScgfSxcclxuICBkdXBsaWNhdGVkOiB7IGxhYmVsOiAnRHVwbGljYXRlZCBieScsIHRvbmU6ICdncmF5JyB9LFxyXG4gIGRlbGV0ZWQ6IHsgbGFiZWw6ICdEZWxldGVkIGJ5JywgdG9uZTogJ2Vycm9yJyB9LFxyXG4gIHNjaGVkdWxlZDogeyBsYWJlbDogJ1NjaGVkdWxlIGNyZWF0ZWQgYnknLCB0b25lOiAnZ3JheScgfSxcclxuICBzY2hlZHVsZUVkaXRlZDogeyBsYWJlbDogJ1NjaGVkdWxlIGVkaXRlZCBieScsIHRvbmU6ICd3YXJuaW5nJyB9LFxyXG4gIHNjaGVkdWxlUHVibGlzaGVkOiB7IGxhYmVsOiAnU2NoZWR1bGUgcHVibGlzaGVkIGJ5JywgdG9uZTogJ3ByaW1hcnknIH0sXHJcbiAgc2NoZWR1bGVVbnB1Ymxpc2hlZDogeyBsYWJlbDogJ1NjaGVkdWxlIHVucHVibGlzaGVkIGJ5JywgdG9uZTogJ3ByaW1hcnknIH0sXHJcbiAgc2NoZWR1bGVEdXBsaWNhdGVkOiB7IGxhYmVsOiAnU2NoZWR1bGUgZHVwbGljYXRlZCBieScsIHRvbmU6ICdncmF5JyB9LFxyXG4gIHNjaGVkdWxlRGVsZXRlZDogeyBsYWJlbDogJ1NjaGVkdWxlIGRlbGV0ZWQgYnknLCB0b25lOiAnZXJyb3InIH0sXHJcbn07XHJcblxyXG4vKiogQWN0aXZpdHkgTG9nIFwiQWN0aW9uc1wiIGZpbHRlcjsgaWRzIG1hdGNoIHRoZSBBUEkncyBhY3Rpb24gZmlsdGVyLiAqL1xyXG5jb25zdCBWSVNJVF9BQ1RJT05TID0gW1xyXG4gIHsgdGV4dDogJ1N0YXJ0ZWQgYnknLCBpZDogJ3N0YXJ0JyB9LFxyXG4gIHsgdGV4dDogJ1N1Ym1pdHRlZCBieScsIGlkOiAnc3VibWl0JyB9LFxyXG5dO1xyXG5cclxuLyoqXHJcbiAqIEF1ZGl0IEFjdGlvbiBDZW50ZXIsIHNlcnZlZCBieSAvdHJheC9hdWRpdC9hY3Rpb25DZW50ZXIvKiAocmV0YWlsLXRyYXgtYXBpLXYyKTpcclxuICogICBjYXJkcyAgICAgICAtPiBhdWRpdHMgLyB0YXNrcyB3YWl0aW5nIGZvciBhcHByb3ZhbFxyXG4gKiAgIGFwcHJvdmFscyAgIC0+IG9wZW4gLyBpbnByb2dyZXNzIC8gZG9uZSwgb25lIHJvdyBwZXIgYXVkaXQgcGVyIGRheVxyXG4gKiAgIGFjdGl2aXR5TG9nIC0+IHN0YXJ0ICsgc3VibWl0IGV2ZW50cyBmcm9tIHRoZSBpbnN0YW5jZXMsIHBsdXMgKEF1ZGl0IHRhYikgdGhlIGxvZ2dlZCBhdWRpdCAvIHNjaGVkdWxlXHJcbiAqICAgICAgICAgICAgICAgICAgYWN0aW9uczogY3JlYXRlZCwgZWRpdGVkLCBjb25maWd1cmVkLCBwdWJsaXNoZWQsIHVucHVibGlzaGVkLCBkdXBsaWNhdGVkLCBkZWxldGVkOyBzZXJ2ZXItcGFnZWRcclxuICogRXZlcnkgY2FsbCBpcyBzY29wZWQgYnkgdGhlIGdsb2JhbCBoZWFkZXIgZmlsdGVyIChjbGllbnQsIGNoZWNrZWQgc3RvcmVzLCBkYXRlcykuXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1hdWRpdC12Mi1hY3Rpb24tY2VudHJlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYXVkaXQtdjItYWN0aW9uLWNlbnRyZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2F1ZGl0LXYyLWFjdGlvbi1jZW50cmUuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdWRpdFYyQWN0aW9uQ2VudHJlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIC8qKiBUYWIgaW5zaWRlIHRoZSBhY3Rpdml0eSBsb2cuICovXHJcbiAgdGFiOiBBY3Rpb25UYWIgPSAnQXVkaXQnO1xyXG4gIHJlYWRvbmx5IHRhYnM6IEFjdGlvblRhYltdID0gWydBdWRpdCcsICdUYXNrJ107XHJcblxyXG4gIC8qKiBBcHByb3ZhbCBwYW5lbCBjb250cm9scy4gKi9cclxuICBhcHByb3ZhbFNlYXJjaCA9ICcnO1xyXG4gIGFwcHJvdmFsU2NvcGUgPSAnQWxsJztcclxuICByZWFkb25seSBhcHByb3ZhbFNjb3BlcyA9IFsnQWxsJywgJ0F1ZGl0JywgJ1Rhc2snXTtcclxuICByZWFkb25seSBhcHByb3ZhbFNjb3BlSXRlbXMgPSB0aGlzLmFwcHJvdmFsU2NvcGVzLm1hcCgocykgPT4gKHsgaWQ6IHMsIGxhYmVsOiBzIH0pKTtcclxuICBhcHByb3ZhbFNjb3BlU2VsZWN0ZWQ6IHsgaWQ6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9ID0gdGhpcy5hcHByb3ZhbFNjb3BlSXRlbXNbMF07XHJcblxyXG4gIC8qKiBBY3Rpdml0eSBMb2cncyBvd24gZGF0ZSByYW5nZSAoZGVmYXVsdHMgdG8gdGhlIGhlYWRlciByYW5nZSwgY2hhbmdlZCBieSBpdHMgcGlja2VyKS4gKi9cclxuICBhY3Rpdml0eVJhbmdlOiB7IHN0YXJ0RGF0ZTogc3RyaW5nOyBlbmREYXRlOiBzdHJpbmcgfSB8IG51bGwgPSBudWxsO1xyXG4gIC8qKiBBY3Rpdml0eSBMb2cgYWN0aW9uIGZpbHRlciBhcHBsaWVkIG9uIGVhY2ggdGFiOyBpZHMgbWF0Y2ggdGhlIEFQSSdzIGFjdGlvbiBmaWx0ZXIuIEVtcHR5ID0gYWxsLiAqL1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgYWN0aW9uc0J5VGFiOiBSZWNvcmQ8QWN0aW9uVGFiLCBzdHJpbmdbXT4gPSB7IEF1ZGl0OiBbXSwgVGFzazogW10gfTtcclxuICAvKipcclxuICAgKiBGaWx0ZXIgb3B0aW9ucyBwZXIgdGFiLiBMb2dnZWQgYXVkaXQgLyBzY2hlZHVsZSBhY3Rpb25zIG9ubHkgZXhpc3Qgb24gdGhlIEF1ZGl0IHRhYiAoJ3NjaGVkdWxlJyA9IGV2ZXJ5XHJcbiAgICogc2NoZWR1bGUgYWN0aW9uKTsgdGhlIFRhc2sgdGFiIGhhcyBzdGFydCAvIHN1Ym1pdCBldmVudHMgb25seS4gbGliLWZpbHRlcnMgcmVhZHMgaXRzIG9wdGlvbnMgb25jZSwgc28gdGhlXHJcbiAgICogdGVtcGxhdGUga2VlcHMgb25lIGluc3RhbmNlIHBlciB0YWIuXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgYWN0aXZpdHlGaWx0ZXJEYXRhOiBSZWNvcmQ8QWN0aW9uVGFiLCBhbnlbXT4gPSB7XHJcbiAgICBBdWRpdDogW3tcclxuICAgICAgRGVzY3JpcHRpb246ICdBY3Rpb25zJyxcclxuICAgICAgSXNzdWVzOiBbXHJcbiAgICAgICAgLi4uVklTSVRfQUNUSU9OUy5tYXAoKGEpID0+ICh7IC4uLmEgfSkpLFxyXG4gICAgICAgIHsgdGV4dDogJ0F1ZGl0IGNyZWF0ZWQgYnknLCBpZDogJ2NyZWF0ZWQnIH0sXHJcbiAgICAgICAgeyB0ZXh0OiAnRWRpdGVkIGJ5JywgaWQ6ICdlZGl0ZWQnIH0sXHJcbiAgICAgICAgeyB0ZXh0OiAnQ29uZmlndXJlZCBieScsIGlkOiAnY29uZmlndXJlZCcgfSxcclxuICAgICAgICB7IHRleHQ6ICdQdWJsaXNoZWQgYnknLCBpZDogJ3B1Ymxpc2hlZCcgfSxcclxuICAgICAgICB7IHRleHQ6ICdVbnB1Ymxpc2hlZCBieScsIGlkOiAndW5wdWJsaXNoZWQnIH0sXHJcbiAgICAgICAgeyB0ZXh0OiAnRHVwbGljYXRlZCBieScsIGlkOiAnZHVwbGljYXRlZCcgfSxcclxuICAgICAgICB7IHRleHQ6ICdEZWxldGVkIGJ5JywgaWQ6ICdkZWxldGVkJyB9LFxyXG4gICAgICAgIHsgdGV4dDogJ1NjaGVkdWxlIGNoYW5nZXMnLCBpZDogJ3NjaGVkdWxlJyB9LFxyXG4gICAgICBdLFxyXG4gICAgfV0sXHJcbiAgICBUYXNrOiBbeyBEZXNjcmlwdGlvbjogJ0FjdGlvbnMnLCBJc3N1ZXM6IFZJU0lUX0FDVElPTlMubWFwKChhKSA9PiAoeyAuLi5hIH0pKSB9XSxcclxuICB9O1xyXG5cclxuICAvKiogQWN0aXZpdHkgbG9nIGNvbnRyb2xzLiAqL1xyXG4gIHNlYXJjaCA9ICcnO1xyXG4gIGRhdGVSYW5nZSA9ICcnO1xyXG4gIGl0ZW1zUGVyUGFnZSA9IDEwO1xyXG4gIGN1cnJlbnRQYWdlID0gMTtcclxuICByZWFkb25seSBwYWdlU2l6ZXMgPSBbMTAsIDIwLCAzMF07XHJcbiAgLyoqIFRvdGFsIGFjdGl2aXR5IHJvd3MgcmVwb3J0ZWQgYnkgdGhlIEFQSSAoc2VydmVyLXNpZGUgcGFnaW5hdGlvbikuICovXHJcbiAgdG90YWxJdGVtcyA9IDA7XHJcblxyXG4gIGF1ZGl0V2FpdGluZyA9IDA7XHJcbiAgdGFza1dhaXRpbmcgPSAwO1xyXG5cclxuICByb3dzOiBBY3Rpdml0eVJvd1tdID0gW107XHJcbiAgY29sdW1uczogQXBwcm92YWxDb2x1bW5bXSA9IHRoaXMuYnVpbGRDb2x1bW5zKCk7XHJcblxyXG4gIGNhcmRzTG9hZGluZyA9IHRydWU7XHJcbiAgYXBwcm92YWxzTG9hZGluZyA9IHRydWU7XHJcbiAgbG9nTG9hZGluZyA9IHRydWU7XHJcblxyXG4gIHByaXZhdGUgaGVhZGVyRGF0YTogYW55O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgdXNlckVtYWlsZXM6IHN0cmluZ1tdID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndXNlcnNFbWFpbC1pbmZvJykgfHwgJ1tdJyk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBhcHByb3ZhbFNlYXJjaCQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBzZWFyY2gkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgdHJheFNlcnZpY2U6IFRyYXhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSwgZGVib3VuY2VUaW1lKDMwMCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICghZGF0YT8uY2xpZW50KSB7IHJldHVybjsgfVxyXG4gICAgICAgIHRoaXMuaGVhZGVyRGF0YSA9IGRhdGE7XHJcbiAgICAgICAgdGhpcy5kYXRlUmFuZ2UgPSB0aGlzLmZtdChkYXRhLmRhdGU/LnN0YXJ0RGF0ZSwgJ0RELU1NLVlZWVknKSArICcgLSAnICsgdGhpcy5mbXQoZGF0YS5kYXRlPy5lbmREYXRlLCAnREQtTU0tWVlZWScpO1xyXG4gICAgICAgIHRoaXMuYWN0aXZpdHlSYW5nZSA9IHRoaXMuZGVmYXVsdEFjdGl2aXR5UmFuZ2UoZGF0YS5kYXRlKTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuICAgICAgICB0aGlzLmxvYWRDYXJkcygpO1xyXG4gICAgICAgIHRoaXMubG9hZEFwcHJvdmFscygpO1xyXG4gICAgICAgIHRoaXMubG9hZEFjdGl2aXR5KCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYXBwcm92YWxTZWFyY2gkXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSwgZGVib3VuY2VUaW1lKDQwMCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5sb2FkQXBwcm92YWxzKCkpO1xyXG5cclxuICAgIHRoaXMuc2VhcmNoJFxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCksIGRlYm91bmNlVGltZSg0MDApLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuICAgICAgICB0aGlzLmxvYWRBY3Rpdml0eSgpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBY3Rpdml0eSBMb2cncyBzdGFydGluZyByYW5nZTogdGhlIGhlYWRlciByYW5nZSwgZXhjZXB0IHRoYXQgb25lIGVuZGluZyB5ZXN0ZXJkYXkgcnVucyBvbiB0byB0b2RheS5cclxuICAgKiBUaGUgaGVhZGVyJ3MgcHJlc2V0cyAoYW5kIGl0cyBkZWZhdWx0KSBzdG9wIGF0IHllc3RlcmRheSBiZWNhdXNlIGFuYWx5dGljcyBsYW5kIGEgZGF5IGxhdGUsIGJ1dCB0aGVcclxuICAgKiBsb2cgaXMgbGl2ZTogd2l0aG91dCB0aGlzLCB3aGF0IHdhcyBzdGFydGVkIG9yIHN1Ym1pdHRlZCB0b2RheSBuZXZlciBzaG93cyB1bnRpbCB0aGUgcmFuZ2UgaXMgY2hhbmdlZC5cclxuICAgKi9cclxuICBwcml2YXRlIGRlZmF1bHRBY3Rpdml0eVJhbmdlKGRhdGU6IGFueSk6IHsgc3RhcnREYXRlOiBzdHJpbmc7IGVuZERhdGU6IHN0cmluZyB9IHwgbnVsbCB7XHJcbiAgICBpZiAoIWRhdGU/LnN0YXJ0RGF0ZSB8fCAhZGF0ZT8uZW5kRGF0ZSkgeyByZXR1cm4gbnVsbDsgfVxyXG4gICAgY29uc3QgeWVzdGVyZGF5ID0gZGF5anMoKS5zdWJ0cmFjdCgxLCAnZGF5JykuZm9ybWF0KCdZWVlZLU1NLUREJyk7XHJcbiAgICBjb25zdCBlbmREYXRlID0gZGF0ZS5lbmREYXRlID09PSB5ZXN0ZXJkYXkgPyBkYXlqcygpLmZvcm1hdCgnWVlZWS1NTS1ERCcpIDogZGF0ZS5lbmREYXRlO1xyXG4gICAgcmV0dXJuIHsgc3RhcnREYXRlOiBkYXRlLnN0YXJ0RGF0ZSwgZW5kRGF0ZSB9O1xyXG4gIH1cclxuXHJcbiAgLyoqIENvbW1vbiBoZWFkZXItZmlsdGVyIHNjb3BlIGV2ZXJ5IGFjdGlvbi1jZW50ZXIgY2FsbCBjYXJyaWVzLiAqL1xyXG4gIHByaXZhdGUgYmFzZVBheWxvYWQoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBjbGllbnRJZDogdGhpcy5oZWFkZXJEYXRhPy5jbGllbnQsXHJcbiAgICAgIGZyb21EYXRlOiB0aGlzLmhlYWRlckRhdGE/LmRhdGU/LnN0YXJ0RGF0ZSxcclxuICAgICAgdG9EYXRlOiB0aGlzLmhlYWRlckRhdGE/LmRhdGU/LmVuZERhdGUsXHJcbiAgICAgIHN0b3JlSWQ6ICh0aGlzLmhlYWRlckRhdGE/LnN0b3JlcyB8fCBbXSkuZmlsdGVyKChzOiBhbnkpID0+IHMuY2hlY2tlZCkubWFwKChzOiBhbnkpID0+IHMuc3RvcmVJZCksXHJcbiAgICAgIHVzZXJFbWFpbGVzOiB0aGlzLnVzZXJFbWFpbGVzXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkQ2FyZHMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNhcmRzTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLmF1ZGl0QWN0aW9uQ2VudGVyQ2FyZHModGhpcy5iYXNlUGF5bG9hZCgpKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgY2FyZCA9IHJlcz8uY29kZSA9PT0gMjAwID8gKHJlcy5kYXRhPy5jYXJkRGF0YSB8fCB7fSkgOiB7fTtcclxuICAgICAgICAgIHRoaXMuYXVkaXRXYWl0aW5nID0gTnVtYmVyKGNhcmQuYXVkaXRBcHByb3ZhbCkgfHwgMDtcclxuICAgICAgICAgIHRoaXMudGFza1dhaXRpbmcgPSBOdW1iZXIoY2FyZC50YXNrQXBwcm92YWwpIHx8IDA7XHJcbiAgICAgICAgICB0aGlzLmNhcmRzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5hdWRpdFdhaXRpbmcgPSAwO1xyXG4gICAgICAgICAgdGhpcy50YXNrV2FpdGluZyA9IDA7XHJcbiAgICAgICAgICB0aGlzLmNhcmRzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZEFwcHJvdmFscygpOiB2b2lkIHtcclxuICAgIHRoaXMuYXBwcm92YWxzTG9hZGluZyA9IHRydWU7XHJcbiAgICBjb25zdCB0eXBlID0gdGhpcy5hcHByb3ZhbFNjb3BlID09PSAnQWxsJyA/ICdhbGwnIDogdGhpcy5hcHByb3ZhbFNjb3BlID09PSAnVGFzaycgPyAndGFzaycgOiAnYXVkaXQnO1xyXG4gICAgdGhpcy50cmF4U2VydmljZS5hdWRpdEFjdGlvbkNlbnRlckFwcHJvdmFscyh7XHJcbiAgICAgIC4uLnRoaXMuYmFzZVBheWxvYWQoKSxcclxuICAgICAgc2VhcmNoVmFsdWU6IHRoaXMuYXBwcm92YWxTZWFyY2gudHJpbSgpLFxyXG4gICAgICB0eXBlXHJcbiAgICB9KS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IHJlcz8uY29kZSA9PT0gMjAwID8gKHJlcy5kYXRhIHx8IHt9KSA6IHt9O1xyXG4gICAgICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuYnVpbGRDb2x1bW5zKCk7XHJcbiAgICAgICAgdGhpcy5jb2x1bW5zWzBdLmNhcmRzID0gKGRhdGEub3BlbiB8fCBbXSkubWFwKCh4OiBhbnkpID0+IHRoaXMudG9DYXJkKHgsICdvcGVuJykpO1xyXG4gICAgICAgIHRoaXMuY29sdW1uc1sxXS5jYXJkcyA9IChkYXRhLmlucHJvZ3Jlc3MgfHwgW10pLm1hcCgoeDogYW55KSA9PiB0aGlzLnRvQ2FyZCh4LCAnaW5wcm9ncmVzcycpKTtcclxuICAgICAgICB0aGlzLmNvbHVtbnNbMl0uY2FyZHMgPSAoZGF0YS5kb25lIHx8IFtdKS5tYXAoKHg6IGFueSkgPT4gdGhpcy50b0NhcmQoeCwgJ2FwcHJvdmVkJykpO1xyXG4gICAgICAgIHRoaXMuYXBwcm92YWxzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuYnVpbGRDb2x1bW5zKCk7XHJcbiAgICAgICAgdGhpcy5hcHByb3ZhbHNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b0NhcmQoeDogYW55LCBjb2x1bW46IEFwcHJvdmFsQ29sdW1uWydrZXknXSk6IEFwcHJvdmFsQ2FyZCB7XHJcbiAgICBjb25zdCBzdG9yZXMgPSBOdW1iZXIoeD8uc3RvcmVDb3VudCkgfHwgMDtcclxuICAgIGNvbnN0IHN0b3JlID0geD8uY292ZXJhZ2UgPT09ICd1c2VyJ1xyXG4gICAgICA/ICh4Py51c2VyTmFtZSB8fCAn4oCUJylcclxuICAgICAgOiAoc3RvcmVzID4gMSA/IHN0b3JlcyArICcgc3RvcmVzJyA6ICh4Py5zdG9yZU5hbWUgfHwgKHN0b3JlcyA9PT0gMSA/ICcxIHN0b3JlJyA6ICfigJQnKSkpO1xyXG4gICAgY29uc3QgcGVuZGluZyA9IE51bWJlcih4Py5wZW5kaW5nKSB8fCAwO1xyXG4gICAgY29uc3Qgc3VibWl0dGVkID0gTnVtYmVyKHg/LnN1Ym1pdENvdW50KSB8fCAwO1xyXG4gICAgY29uc3QgYXBwcm92ZWQgPSBOdW1iZXIoeD8uYXBwcm92ZUNvdW50KSB8fCAwO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbmFtZTogeD8uY2hlY2tMaXN0TmFtZSB8fCAn4oCUJyxcclxuICAgICAgc3RvcmUsXHJcbiAgICAgIGJ5OiBwZW5kaW5nID8gcGVuZGluZyArICcgYXdhaXRpbmcgYXBwcm92YWwnIDogKHg/LnVzZXJOYW1lIHx8IHg/LmNyZWF0ZWRCeU5hbWUgfHwgJ+KAlCcpLFxyXG4gICAgICB3aGVuOiB4Py5wdWJsaXNoRGF0ZSA/IHRoaXMuZm10KHgucHVibGlzaERhdGUsICdERCBNTU0gWVlZWScpIDogJ+KAlCcsXHJcbiAgICAgIHR5cGVMYWJlbDogeD8ubW9kdWxlID09PSAndGFzaycgPyAnVGFzaycgOiAnQXVkaXQnLFxyXG4gICAgICBzdWJtaXR0ZWRMYWJlbDogc3RvcmVzID8gYFN1Ym1pdHRlZCAke3N1Ym1pdHRlZH0gLyAke3N0b3Jlc31gIDogJycsXHJcbiAgICAgIGFwcHJvdmVkTGFiZWw6IHN1Ym1pdHRlZCA/IGBBcHByb3ZlZCAke2FwcHJvdmVkfSAvICR7c3VibWl0dGVkfWAgOiAnJyxcclxuICAgICAgcmVkbzogISF4Py5yZWRvLFxyXG4gICAgICAuLi50aGlzLmNhcmRMaW5rKHgsIGNvbHVtbiwgc3VibWl0dGVkKSxcclxuICAgICAgcmF3OiB4XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2hlcmUgYSBjYXJkIGxhbmRzOiB0aGUgR2FsbGVyeSBvbiB0aGF0IGF1ZGl0IGFuZCBkYXkgKGFuZCBzdG9yZSwgd2hlbiB0aGUgY2FyZCBpcyBvbmUgc3RvcmUpLFxyXG4gICAqIG5hcnJvd2VkIHRvIHdoYXQgdGhlIGNvbHVtbiBtZWFucy4gT3BlbiA9IGF3YWl0aW5nIGFwcHJvdmFsLCBBcHByb3ZlZCA9IGFwcHJvdmVkOyBJbnByb2dyZXNzXHJcbiAgICogc2hvd3MgZXZlcnkgc3VibWlzc2lvbi4gVGhlIEdhbGxlcnkgbGlzdHMgc3VibWl0dGVkIChvciBzZW50LWJhY2spIHZpc2l0cyBvbmx5LCBzbyBhIGNhcmQgd2l0aFxyXG4gICAqIG5vbmUgc3RheXMgY2xvc2VkLiBUYXNrIGNhcmRzIG9wZW4gdGhlIEdhbGxlcnkgd2l0aCBUeXBlIFRhc2sgKHR5cGU9dGFzazsgYXVkaXQ9IGlzIHRoZSB0YXNrIGlkKS5cclxuICAgKi9cclxuICBwcml2YXRlIGNhcmRMaW5rKHg6IGFueSwgY29sdW1uOiBBcHByb3ZhbENvbHVtblsna2V5J10sIHN1Ym1pdHRlZDogbnVtYmVyKTogUGljazxBcHByb3ZhbENhcmQsICdsaW5rJyB8ICdoaW50Jz4ge1xyXG4gICAgY29uc3QgdGFzayA9IHg/Lm1vZHVsZSA9PT0gJ3Rhc2snO1xyXG4gICAgY29uc3QgYXVkaXQgPSBTdHJpbmcoeD8uc291cmNlQ2hlY2tsaXN0SWQgfHwgJycpO1xyXG4gICAgY29uc3QgZGF0ZSA9IHRoaXMuaXNvRGF5KHg/LnB1Ymxpc2hEYXRlKTtcclxuICAgIGlmICghYXVkaXQgfHwgIWRhdGUpIHtcclxuICAgICAgcmV0dXJuIHsgbGluazogbnVsbCwgaGludDogJycgfTtcclxuICAgIH1cclxuICAgIGlmICghc3VibWl0dGVkICYmICF4Py5yZWRvKSB7XHJcbiAgICAgIHJldHVybiB7IGxpbms6IG51bGwsIGhpbnQ6ICdOb3RoaW5nIHN1Ym1pdHRlZCB5ZXQsIHNvIHRoZXJlIGlzIG5vdGhpbmcgdG8gcmV2aWV3IGluIHRoZSBHYWxsZXJ5JyB9O1xyXG4gICAgfVxyXG4gICAgY29uc3Qgc3RhdHVzID0gY29sdW1uID09PSAnb3BlbicgPyAnTm90LUFwcHJvdmVkJyA6IGNvbHVtbiA9PT0gJ2FwcHJvdmVkJyA/ICdBcHByb3ZlZCcgOiAnJztcclxuICAgIGNvbnN0IHNpbmdsZSA9IE51bWJlcih4Py5zdG9yZUNvdW50KSA9PT0gMSAmJiB4Py5zdG9yZUlkO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbGluazoge1xyXG4gICAgICAgIGF1ZGl0LCBkYXRlLFxyXG4gICAgICAgIC4uLihzaW5nbGUgPyB7IHN0b3JlOiBTdHJpbmcoeC5zdG9yZUlkKSB9IDoge30pLFxyXG4gICAgICAgIC4uLihzdGF0dXMgPyB7IHN0YXR1cyB9IDoge30pLFxyXG4gICAgICAgIC4uLih0YXNrID8geyB0eXBlOiAndGFzaycgfSA6IHt9KVxyXG4gICAgICB9LFxyXG4gICAgICBoaW50OiBjb2x1bW4gPT09ICdvcGVuJyA/ICdSZXZpZXcgdGhlIHN1Ym1pc3Npb25zIGF3YWl0aW5nIGFwcHJvdmFsIGluIHRoZSBHYWxsZXJ5J1xyXG4gICAgICAgIDogY29sdW1uID09PSAnYXBwcm92ZWQnID8gJ1ZpZXcgdGhlIGFwcHJvdmVkIHN1Ym1pc3Npb25zIGluIHRoZSBHYWxsZXJ5J1xyXG4gICAgICAgICAgOiAnVmlldyB0aGUgc3VibWlzc2lvbnMgaW4gdGhlIEdhbGxlcnknXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqIGRhdGVfaXNvIGlzIHRoZSB2aXNpdCBkYXkgYXQgVVRDIG1pZG5pZ2h0OyByZWFkIGl0cyBkYXRlIHBhcnQgc28gbm8gdGltZSB6b25lIHNoaWZ0cyB0aGUgZGF5LiAqL1xyXG4gIHByaXZhdGUgaXNvRGF5KHZhbHVlOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF2YWx1ZSkgeyByZXR1cm4gJyc7IH1cclxuICAgIGNvbnN0IG0gPSAvXihcXGR7NH0tXFxkezJ9LVxcZHsyfSkvLmV4ZWMoU3RyaW5nKHZhbHVlKSk7XHJcbiAgICByZXR1cm4gbSA/IG1bMV0gOiBkYXlqcyh2YWx1ZSkuZm9ybWF0KCdZWVlZLU1NLUREJyk7XHJcbiAgfVxyXG5cclxuICBvcGVuQ2FyZChjYXJkOiBBcHByb3ZhbENhcmQpOiB2b2lkIHtcclxuICAgIGlmICghY2FyZC5saW5rKSB7IHJldHVybjsgfVxyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvbWFuYWdlL3RyYXgvYXVkaXQtdjIvZ2FsbGVyeSddLCB7IHF1ZXJ5UGFyYW1zOiBjYXJkLmxpbmsgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBY3Rpdml0eSBsb2cgY29sdW1uIHNvcnQsIGRvbmUgYnkgdGhlIEFQSSAodGhlIGxvZyBpcyBwYWdlZCB0aGVyZSkuICcnID0gbmV3ZXN0IGZpcnN0LCB3aGljaCB0aGVcclxuICAgKiBEYXRlICYgVGltZSBhcnJvdyBzaG93cyBhcyBpdHMgZGVzY2VuZGluZyBzdGF0ZS5cclxuICAgKi9cclxuICBsb2dTb3J0Q29sdW1uID0gJyc7XHJcbiAgbG9nU29ydEJ5OiAxIHwgLTEgPSAtMTtcclxuXHJcbiAgZ2V0IGxvZ1NvcnRLZXkoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmxvZ1NvcnRDb2x1bW4gfHwgJ2RhdGUnO1xyXG4gIH1cclxuXHJcbiAgc29ydExvZyhjb2x1bW46IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMubG9nU29ydEtleTtcclxuICAgIC8vIERhdGUgc3RhcnRzIG5ld2VzdCBmaXJzdCAodGhlIGRlZmF1bHQpOyB0aGUgb3RoZXIgY29sdW1ucyBzdGFydCBBLVogLyBsb3dlc3QgZmlyc3QuXHJcbiAgICB0aGlzLmxvZ1NvcnRCeSA9IGN1cnJlbnQgPT09IGNvbHVtbiA/ICh0aGlzLmxvZ1NvcnRCeSA9PT0gMSA/IC0xIDogMSkgOiAoY29sdW1uID09PSAnZGF0ZScgPyAtMSA6IDEpO1xyXG4gICAgdGhpcy5sb2dTb3J0Q29sdW1uID0gY29sdW1uID09PSAnZGF0ZScgJiYgdGhpcy5sb2dTb3J0QnkgPT09IC0xID8gJycgOiBjb2x1bW47XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuICAgIHRoaXMubG9hZEFjdGl2aXR5KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWRBY3Rpdml0eSgpOiB2b2lkIHtcclxuICAgIHRoaXMubG9nTG9hZGluZyA9IHRydWU7XHJcbiAgICBjb25zdCBhY3Rpb25zID0gdGhpcy5hY3Rpb25zQnlUYWJbdGhpcy50YWJdO1xyXG4gICAgdGhpcy50cmF4U2VydmljZS5hdWRpdEFjdGlvbkNlbnRlckFjdGl2aXR5KHtcclxuICAgICAgLi4udGhpcy5iYXNlUGF5bG9hZCgpLFxyXG4gICAgICAuLi4odGhpcy5hY3Rpdml0eVJhbmdlID8geyBmcm9tRGF0ZTogdGhpcy5hY3Rpdml0eVJhbmdlLnN0YXJ0RGF0ZSwgdG9EYXRlOiB0aGlzLmFjdGl2aXR5UmFuZ2UuZW5kRGF0ZSB9IDoge30pLFxyXG4gICAgICB0eXBlOiB0aGlzLnRhYiA9PT0gJ1Rhc2snID8gJ3Rhc2snIDogJ2F1ZGl0JyxcclxuICAgICAgbGltaXQ6IHRoaXMuaXRlbXNQZXJQYWdlLFxyXG4gICAgICBvZmZzZXQ6IHRoaXMuY3VycmVudFBhZ2UsXHJcbiAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLnNlYXJjaC50cmltKCksXHJcbiAgICAgIC8vIExvZ2dlZCBhdWRpdCAvIHNjaGVkdWxlIGFjdGlvbnMgY29tZSBiYWNrIG9uIHRoaXMgYnJvd3NlcidzIGNsb2NrLCBzdGFtcGVkIGFzIFVUQyBsaWtlIHRoZSB2aXNpdCB0aW1lcy5cclxuICAgICAgdHpPZmZzZXQ6IG5ldyBEYXRlKCkuZ2V0VGltZXpvbmVPZmZzZXQoKSxcclxuICAgICAgLy8gT25seSBzZW50IHdoZW4gbmFycm93ZWQsIHNvIGFuIEFQSSB3aXRob3V0IHRoZSBmaWx0ZXIgc3RpbGwgc2VydmVzIHRoZSB1bmZpbHRlcmVkIGxvZy5cclxuICAgICAgLi4uKGFjdGlvbnMubGVuZ3RoID8geyBhY3Rpb246IGFjdGlvbnMgfSA6IHt9KSxcclxuICAgICAgLy8gTGlrZXdpc2UgdGhlIGNvbHVtbiBzb3J0OiBvbmx5IG9uY2UgYSBoZWFkZXIgb3RoZXIgdGhhbiB0aGUgZGVmYXVsdCBuZXdlc3QtZmlyc3QgaXMgcGlja2VkLlxyXG4gICAgICAuLi4odGhpcy5sb2dTb3J0Q29sdW1uID8geyBzb3J0Q29sdW1uOiB0aGlzLmxvZ1NvcnRDb2x1bW4sIHNvcnRCeTogdGhpcy5sb2dTb3J0QnkgfSA6IHt9KVxyXG4gICAgfSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSByZXM/LmNvZGUgPT09IDIwMCA/IChyZXMuZGF0YSB8fCB7fSkgOiB7fTtcclxuICAgICAgICB0aGlzLnJvd3MgPSAoZGF0YS5hY3Rpdml0eUxvZ0RhdGEgfHwgW10pLm1hcCgobG9nOiBhbnkpID0+IHRoaXMudG9Sb3cobG9nKSk7XHJcbiAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gTnVtYmVyKGRhdGEuY291bnQpIHx8IDA7XHJcbiAgICAgICAgdGhpcy5sb2dMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yb3dzID0gW107XHJcbiAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gMDtcclxuICAgICAgICB0aGlzLmxvZ0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBzdGFydFRpbWUgLyBzdWJtaXRUaW1lIGFyZSB0aGUgc3RvcmUncyB3YWxsIGNsb2NrIHN0YW1wZWQgYXMgVVRDICh0aGUgbW9iaWxlIHN1Ym1pdCksIHNvIHRoZXkgYXJlIHJlYWRcclxuICAgKiBhcyBVVEM6IGEgbG9jYWwgcmVhZCB3b3VsZCBhZGQgdGhlIGJyb3dzZXIncyBvZmZzZXQgKCs1OjMwIGluIElTVCkgYW5kIHB1c2ggZXZlbmluZyBldmVudHMgaW50byB0aGUgbmV4dCBkYXkuXHJcbiAgICogTG9nZ2VkIGF1ZGl0IC8gc2NoZWR1bGUgYWN0aW9ucyAoa2luZCAnbG9nJykgYXJyaXZlIGFscmVhZHkgbW92ZWQgdG8gdGhpcyBicm93c2VyJ3MgY2xvY2sgKHR6T2Zmc2V0KSwgc28gdGhlXHJcbiAgICogc2FtZSBVVEMgcmVhZCBzaG93cyB0aGVtIGluIGxvY2FsIHRpbWUuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBldmVudFRpbWUobG9nOiBhbnkpOiBkYXlqcy5EYXlqcyB8IG51bGwge1xyXG4gICAgcmV0dXJuIGxvZz8uYXQgPyBkYXlqcy51dGMobG9nLmF0KSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRvUm93KGxvZzogYW55KTogQWN0aXZpdHlSb3cge1xyXG4gICAgY29uc3QgYXQgPSB0aGlzLmV2ZW50VGltZShsb2cpO1xyXG4gICAgY29uc3QgYmFkZ2UgPSBBQ1RJT05fQkFER0VbdGhpcy5hY3Rpb25LZXkobG9nKV07XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuYW1lOiBsb2c/LmNoZWNrTGlzdE5hbWUgfHwgJ+KAlCcsXHJcbiAgICAgIGRldGFpbDogdGhpcy5hY3Rpb25EZXRhaWwobG9nKSxcclxuICAgICAgLy8gVW5rbm93biBsb2dnZWQgYWN0aW9ucyBrZWVwIHRoZSBBUEkncyBvd24gdGV4dC5cclxuICAgICAgYWN0aW9uOiBiYWRnZT8ubGFiZWwgfHwgU3RyaW5nKGxvZz8uYWN0aW9uIHx8ICfigJQnKSxcclxuICAgICAgdG9uZTogYmFkZ2U/LnRvbmUgfHwgJ2dyYXknLFxyXG4gICAgICBieTogbG9nPy51c2VyRW1haWwgfHwgbG9nPy51c2VyTmFtZSB8fCAn4oCUJyxcclxuICAgICAgc3RvcmU6IGxvZz8uc3RvcmVOYW1lIHx8ICfigJQnLFxyXG4gICAgICBkYXk6IGF0ID8gKGF0LmZvcm1hdCgnWVlZWS1NTS1ERCcpID09PSBkYXlqcygpLmZvcm1hdCgnWVlZWS1NTS1ERCcpID8gJ1RvZGF5JyA6IGF0LmZvcm1hdCgnREQgTU1NIFlZWVknKSkgOiAn4oCUJyxcclxuICAgICAgdGltZTogYXQgPyBhdC5mb3JtYXQoJ2hoIDogbW0gQScpIDogJ+KAlCcsXHJcbiAgICAgIC8vIFZpZXcgb3BlbnMgYSBzdWJtaXR0ZWQgYXVkaXQgKEF1ZGl0IHRhYikgb3IgdGFzayAoVGFzayB0YWIsIEdhbGxlcnkgVHlwZSBUYXNrKSBpbiB0aGUgR2FsbGVyeTsgYSBsb2dnZWRcclxuICAgICAgLy8gYXVkaXQgLyBzY2hlZHVsZSBhY3Rpb24gaGFzIG5vIHN1Ym1pc3Npb24gKHRoZSBBUEkgc2VuZHMgdmlld2FibGUgZmFsc2UgZm9yIHRob3NlKS5cclxuICAgICAgdmlld2FibGU6ICEhbG9nPy52aWV3YWJsZSAmJiBsb2c/LmtpbmQgIT09ICdsb2cnLFxyXG4gICAgICByYXc6IGxvZ1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKiBMb2dnZWQgcm93cyBjYXJyeSB0aGVpciBzdG9yZWQga2V5IGluIGFjdGl2aXR5VHlwZTsgdmlzaXQgcm93cyBvbmx5IGhhdmUgdGhlIGxhYmVsLiAqL1xyXG4gIHByaXZhdGUgYWN0aW9uS2V5KGxvZzogYW55KTogc3RyaW5nIHtcclxuICAgIGlmIChsb2c/LmtpbmQgPT09ICdsb2cnKSB7IHJldHVybiBTdHJpbmcobG9nPy5hY3Rpdml0eVR5cGUgfHwgJycpOyB9XHJcbiAgICByZXR1cm4gbG9nPy5hY3Rpb24gPT09ICdTdWJtaXR0ZWQgYnknID8gJ3N1Ym1pdCcgOiAnc3RhcnQnO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2hhdCB0aGUgQVBJIHVzZWQgdG8gZm9sZCBpbnRvIHRoZSBsYWJlbDogdGhlIHNjaGVkdWxlIGEgc2NoZWR1bGUgYWN0aW9uIHdhcyBvbiwgYW5kIHRoZSBjb3B5IGEgZHVwbGljYXRlXHJcbiAgICogbWFkZSAoYXVkaXQgYW5kIHNjaGVkdWxlIGR1cGxpY2F0ZXMgYm90aCBzdG9yZSBkZXRhaWxzLmNvcHlOYW1lKS5cclxuICAgKi9cclxuICBwcml2YXRlIGFjdGlvbkRldGFpbChsb2c6IGFueSk6IHN0cmluZyB7XHJcbiAgICBpZiAobG9nPy5raW5kICE9PSAnbG9nJykgeyByZXR1cm4gJyc7IH1cclxuICAgIGNvbnN0IHBhcnRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgaWYgKFN0cmluZyhsb2c/LmFjdGl2aXR5VHlwZSB8fCAnJykuc3RhcnRzV2l0aCgnc2NoZWR1bGUnKSAmJiBsb2c/LnNjaGVkdWxlTmFtZSkge1xyXG4gICAgICBwYXJ0cy5wdXNoKCdTY2hlZHVsZTogJyArIGxvZy5zY2hlZHVsZU5hbWUpO1xyXG4gICAgfVxyXG4gICAgaWYgKGxvZz8uZGV0YWlscz8uY29weU5hbWUpIHtcclxuICAgICAgcGFydHMucHVzaCgnQ29weTogJyArIGxvZy5kZXRhaWxzLmNvcHlOYW1lKTtcclxuICAgIH1cclxuICAgIC8vIEVkaXRlZDogd2hhdCB0aGUgZWRpdCBjaGFuZ2VkIChvbGRlciBlZGl0IHJvd3MgY2Fycnkgbm8gZGV0YWlscyBhbmQgc2hvdyBub25lKS5cclxuICAgIGlmIChsb2c/LmFjdGl2aXR5VHlwZSA9PT0gJ2VkaXRlZCcgJiYgbG9nPy5kZXRhaWxzKSB7XHJcbiAgICAgIGNvbnN0IGQgPSBsb2cuZGV0YWlscztcclxuICAgICAgY29uc3QgbiA9ICh2OiBhbnkpID0+IE51bWJlcih2KSB8fCAwO1xyXG4gICAgICBjb25zdCBxID0gKHY6IGFueSkgPT4gbih2KSArIChuKHYpID09PSAxID8gJyBxdWVzdGlvbicgOiAnIHF1ZXN0aW9ucycpO1xyXG4gICAgICBjb25zdCB3aGF0OiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICBpZiAobihkLnF1ZXN0aW9uc0FkZGVkKSkgeyB3aGF0LnB1c2gocShkLnF1ZXN0aW9uc0FkZGVkKSArICcgYWRkZWQnKTsgfVxyXG4gICAgICBpZiAobihkLnF1ZXN0aW9uc0VkaXRlZCkpIHsgd2hhdC5wdXNoKHEoZC5xdWVzdGlvbnNFZGl0ZWQpICsgJyBlZGl0ZWQnKTsgfVxyXG4gICAgICBpZiAobihkLnF1ZXN0aW9uc1JlbW92ZWQpKSB7IHdoYXQucHVzaChxKGQucXVlc3Rpb25zUmVtb3ZlZCkgKyAnIHJlbW92ZWQnKTsgfVxyXG4gICAgICBpZiAobihkLnNlY3Rpb25zUmVuYW1lZCkpIHsgd2hhdC5wdXNoKG4oZC5zZWN0aW9uc1JlbmFtZWQpICsgKG4oZC5zZWN0aW9uc1JlbmFtZWQpID09PSAxID8gJyBzZWN0aW9uJyA6ICcgc2VjdGlvbnMnKSArICcgcmVuYW1lZCcpOyB9XHJcbiAgICAgIGlmIChkLnJlbmFtZWRGcm9tKSB7IHdoYXQucHVzaCgncmVuYW1lZCBmcm9tIFwiJyArIGQucmVuYW1lZEZyb20gKyAnXCInKTsgfVxyXG4gICAgICBpZiAoZC5kZXNjcmlwdGlvbkNoYW5nZWQpIHsgd2hhdC5wdXNoKCdkZXNjcmlwdGlvbiBjaGFuZ2VkJyk7IH1cclxuICAgICAgcGFydHMucHVzaCh3aGF0Lmxlbmd0aCA/ICdFZGl0OiAnICsgd2hhdC5qb2luKCcsICcpIDogJ0VkaXQ6IHNhdmVkIHdpdGggbm8gcXVlc3Rpb24gY2hhbmdlcycpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBhcnRzLmpvaW4oJyDCtyAnKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZXAgbGluayBmb3IgXCJWaWV3XCI6IHRoZSBHYWxsZXJ5IHByZS1zZWxlY3RzIHRoaXMgYXVkaXQsIHN0b3JlIGFuZCB2aXNpdCBkYXkuIFRoZSBHYWxsZXJ5IGxpc3RzIHZpc2l0cyBieVxyXG4gICAqIHRoZWlyIG93biBkYXRlLCB3aGljaCBjYW4gYmUgZWFybGllciB0aGFuIHRoZSBzdWJtaXQgZGF5LCBzbyB0aGUgdmlzaXQncyBkYXRlX3N0cmluZyB3aW5zIHdoZW4gdGhlIEFQSSBzZW5kcyBpdC5cclxuICAgKi9cclxuICBnYWxsZXJ5UGFyYW1zKHJvdzogQWN0aXZpdHlSb3cpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIGNvbnN0IGxvZyA9IHJvdy5yYXcgfHwge307XHJcbiAgICBjb25zdCBhdCA9IHRoaXMuZXZlbnRUaW1lKGxvZyk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBhdWRpdDogU3RyaW5nKGxvZy5zb3VyY2VDaGVja0xpc3RfaWQgfHwgJycpLFxyXG4gICAgICBzdG9yZTogU3RyaW5nKGxvZy5zdG9yZUlkIHx8ICcnKSxcclxuICAgICAgZGF0ZTogbG9nLmRhdGVfc3RyaW5nID8gU3RyaW5nKGxvZy5kYXRlX3N0cmluZykgOiAoYXQgPyBhdC5mb3JtYXQoJ1lZWVktTU0tREQnKSA6ICcnKSxcclxuICAgICAgLy8gVGFzayB0YWIgcm93cyBhcmUgdGFzayBzdWJtaXNzaW9uczogdGhlIEdhbGxlcnkgb3BlbnMgd2l0aCBUeXBlIFRhc2suXHJcbiAgICAgIC4uLih0aGlzLnRhYiA9PT0gJ1Rhc2snID8geyB0eXBlOiAndGFzaycgfSA6IHt9KVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZm10KHZhbHVlOiBhbnksIHBhdHRlcm46IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdmFsdWUgPyBkYXlqcyh2YWx1ZSkuZm9ybWF0KHBhdHRlcm4pIDogJ+KAlCc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkQ29sdW1ucygpOiBBcHByb3ZhbENvbHVtbltdIHtcclxuICAgIGNvbnN0IG5vdW4gPSB0aGlzLmFwcHJvdmFsU2NvcGUgPT09ICdUYXNrJyA/ICdUYXNrJyA6ICdBdWRpdCc7XHJcbiAgICByZXR1cm4gW1xyXG4gICAgICB7IGtleTogJ29wZW4nLCB0aXRsZTogJ09wZW4nLCBlbXB0eTogJ1RoZXJlIGlzIG5vIHJlc3VsdCBmb3IgT3BlbiAnICsgbm91biwgY2FyZHM6IFtdIH0sXHJcbiAgICAgIHsga2V5OiAnaW5wcm9ncmVzcycsIHRpdGxlOiAnSW5wcm9ncmVzcycsIGVtcHR5OiAnVGhlcmUgaXMgbm8gcmVzdWx0IGZvciBJbnByb2dyZXNzICcgKyBub3VuLCBjYXJkczogW10gfSxcclxuICAgICAgeyBrZXk6ICdhcHByb3ZlZCcsIHRpdGxlOiAnQXBwcm92ZWQnLCBlbXB0eTogJ1RoZXJlIGlzIG5vIHJlc3VsdCBmb3IgQXBwcm92ZWQgJyArIG5vdW4sIGNhcmRzOiBbXSB9XHJcbiAgICBdO1xyXG4gIH1cclxuXHJcbiAgc2V0VGFiKHRhYjogQWN0aW9uVGFiKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy50YWIgPT09IHRhYikgeyByZXR1cm47IH1cclxuICAgIHRoaXMudGFiID0gdGFiO1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcbiAgICB0aGlzLmxvYWRBY3Rpdml0eSgpO1xyXG4gIH1cclxuXHJcbiAgb25BcHByb3ZhbFNjb3BlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2FkQXBwcm92YWxzKCk7XHJcbiAgfVxyXG5cclxuICBvbkFwcHJvdmFsU2NvcGVTZWxlY3QoaXRlbTogeyBpZDogc3RyaW5nIH0gfCB1bmRlZmluZWQpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5leHQgPSBpdGVtPy5pZDtcclxuICAgIGlmICghbmV4dCB8fCBuZXh0ID09PSB0aGlzLmFwcHJvdmFsU2NvcGUpIHsgcmV0dXJuOyB9XHJcbiAgICB0aGlzLmFwcHJvdmFsU2NvcGUgPSBuZXh0O1xyXG4gICAgdGhpcy5hcHByb3ZhbFNjb3BlU2VsZWN0ZWQgPSB0aGlzLmFwcHJvdmFsU2NvcGVJdGVtcy5maW5kKChpKSA9PiBpLmlkID09PSBuZXh0KSB8fCB0aGlzLmFwcHJvdmFsU2NvcGVJdGVtc1swXTtcclxuICAgIHRoaXMubG9hZEFwcHJvdmFscygpO1xyXG4gIH1cclxuXHJcbiAgb25BY3Rpdml0eURhdGVDaGFuZ2UoZXZlbnQ6IHsgc3RhcnREYXRlPzogc3RyaW5nOyBlbmREYXRlPzogc3RyaW5nIH0pOiB2b2lkIHtcclxuICAgIGlmICghZXZlbnQ/LnN0YXJ0RGF0ZSB8fCAhZXZlbnQ/LmVuZERhdGUpIHsgcmV0dXJuOyB9XHJcbiAgICB0aGlzLmFjdGl2aXR5UmFuZ2UgPSB7IHN0YXJ0RGF0ZTogZXZlbnQuc3RhcnREYXRlLCBlbmREYXRlOiBldmVudC5lbmREYXRlIH07XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuICAgIHRoaXMubG9hZEFjdGl2aXR5KCk7XHJcbiAgfVxyXG5cclxuICBvbkFjdGl2aXR5RmlsdGVycyhldmVudDogYW55W10pOiB2b2lkIHtcclxuICAgIGNvbnN0IGFjdGlvbnMgPSAoZXZlbnQgfHwgW10pLmZpbmQoKGY6IGFueSkgPT4gZj8uRGVzY3JpcHRpb24gPT09ICdBY3Rpb25zJyk7XHJcbiAgICB0aGlzLmFjdGlvbnNCeVRhYlt0aGlzLnRhYl0gPSAoYWN0aW9ucz8uSXNzdWVzIHx8IFtdKS5tYXAoKGk6IGFueSkgPT4gaS5pZCk7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuICAgIHRoaXMubG9hZEFjdGl2aXR5KCk7XHJcbiAgfVxyXG5cclxuICBvbkFwcHJvdmFsU2VhcmNoKCk6IHZvaWQge1xyXG4gICAgdGhpcy5hcHByb3ZhbFNlYXJjaCQubmV4dCh0aGlzLmFwcHJvdmFsU2VhcmNoKTtcclxuICB9XHJcblxyXG4gIG9uU2VhcmNoKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWFyY2gkLm5leHQodGhpcy5zZWFyY2gpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG5hbWVMYWJlbCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudGFiID09PSAnVGFzaycgPyAnVGFzayBOYW1lJyA6ICdBdWRpdCBOYW1lJztcclxuICB9XHJcblxyXG4gIGdldCBzZWFyY2hIaW50KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy50YWIgPT09ICdUYXNrJyA/ICdTZWFyY2ggd2l0aCBTdG9yZSwgRW1haWwsIFRhc2snIDogJ1NlYXJjaCB3aXRoIFN0b3JlLCBFbWFpbCwgQXVkaXQnO1xyXG4gIH1cclxuXHJcbiAgLyoqIFNlYXJjaCBhbmQgcGFnaW5nIGFyZSBzZXJ2ZXItc2lkZTsgdGhlIHBhZ2Ugd2UgaG9sZCBpcyB0aGUgcGFnZSB3ZSBzaG93LiAqL1xyXG4gIGdldCBmaWx0ZXJlZFJvd3MoKTogQWN0aXZpdHlSb3dbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5yb3dzO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHBhZ2VSb3dzKCk6IEFjdGl2aXR5Um93W10ge1xyXG4gICAgcmV0dXJuIHRoaXMucm93cztcclxuICB9XHJcblxyXG4gIG9uUGFnZUNoYW5nZShwYWdlOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSBwYWdlO1xyXG4gICAgdGhpcy5sb2FkQWN0aXZpdHkoKTtcclxuICB9XHJcblxyXG4gIC8qKiBSb3dzIHBlciBwYWdlICgxMCAvIDIwIC8gMzApIGZyb20gdGhlIHBhZ2VyJ3Mgc2l6ZSBkcm9wZG93bjsgYmFjayB0byBwYWdlIDEuICovXHJcbiAgb25QYWdlU2l6ZUNoYW5nZShzaXplOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuaXRlbXNQZXJQYWdlID0gTnVtYmVyKHNpemUpIHx8IDEwO1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcbiAgICB0aGlzLmxvYWRBY3Rpdml0eSgpO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeVJvdyhpbmRleDogbnVtYmVyLCByb3c6IEFjdGl2aXR5Um93KTogc3RyaW5nIHtcclxuICAgIHJldHVybiAocm93LnJhdz8ucHJvY2Vzc2VkQ2hlY2tsaXN0SWQgfHwgcm93LnJhdz8ubG9nSWQgfHwgcm93LnN0b3JlKSArIHJvdy5hY3Rpb24gKyBpbmRleDtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlDb2x1bW4oXzogbnVtYmVyLCBjb2w6IEFwcHJvdmFsQ29sdW1uKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBjb2wua2V5O1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiYXYyLXBhZ2VcIj5cclxuXHJcbiAgPCEtLSBXYWl0aW5nIGZvciBhcHByb3ZhbCAtLT5cclxuICA8ZGl2IGNsYXNzPVwiYXYyLWdyaWQtMlwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImF2Mi1zdGF0LWNhcmRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImF2Mi1zdGF0XCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJhdjItc2sgYXYyLXNrLS12YWx1ZSBhYy1zay12YWx1ZVwiICpuZ0lmPVwiY2FyZHNMb2FkaW5nXCI+PC9zcGFuPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYXYyLXN0YXQtdmFsdWVcIiAqbmdJZj1cIiFjYXJkc0xvYWRpbmdcIj57eyBhdWRpdFdhaXRpbmcgfX08L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJhdjItc3RhdC1sYWJlbFwiPkF1ZGl0IHdhaXRpbmcgZm9yIGFwcHJvdmFsPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImF2Mi1zdGF0LWNhcmRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImF2Mi1zdGF0XCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJhdjItc2sgYXYyLXNrLS12YWx1ZSBhYy1zay12YWx1ZVwiICpuZ0lmPVwiY2FyZHNMb2FkaW5nXCI+PC9zcGFuPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYXYyLXN0YXQtdmFsdWVcIiAqbmdJZj1cIiFjYXJkc0xvYWRpbmdcIj57eyB0YXNrV2FpdGluZyB9fTwvc3Bhbj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImF2Mi1zdGF0LWxhYmVsXCI+VGFzayB3YWl0aW5nIGZvciBhcHByb3ZhbDwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBBcHByb3ZhbCAtLT5cclxuICA8c2VjdGlvbiBjbGFzcz1cImF2Mi1jYXJkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXYyLWNhcmQtaGVhZFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYXYyLXRpdGxlLWJsb2NrXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImF2Mi1jYXJkLXRpdGxlXCI+QXBwcm92YWw8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXYyLWNhcmQtc3ViXCI+QSBzdW1tYXJ5IG9mIGFsbCB0aGUgYXVkaXRzIGF3YWl0aW5nIGFwcHJvdmFsPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwiYXYyLXNlYXJjaCBhdjItc2VhcmNoLS1tZFwiPlxyXG4gICAgICAgIDxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCI+XHJcbiAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTFcIiBjeT1cIjExXCIgcj1cIjdcIj48L2NpcmNsZT5cclxuICAgICAgICAgIDxsaW5lIHgxPVwiMTYuNVwiIHkxPVwiMTYuNVwiIHgyPVwiMjFcIiB5Mj1cIjIxXCI+PC9saW5lPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDxpbnB1dCBbKG5nTW9kZWwpXT1cImFwcHJvdmFsU2VhcmNoXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25BcHByb3ZhbFNlYXJjaCgpXCIgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIC8+XHJcbiAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYXBwcm92YWwtc2NvcGUtc2VsZWN0XCI+XHJcbiAgICAgICAgPGxpYi1zZWxlY3QgW2l0ZW1zXT1cImFwcHJvdmFsU2NvcGVJdGVtc1wiIFttdWx0aV09XCJmYWxzZVwiIFtzZWFyY2hGaWVsZF09XCInbGFiZWwnXCIgW2lkRmllbGRdPVwiJ2lkJ1wiXHJcbiAgICAgICAgICBbc2VsZWN0ZWRWYWx1ZXNdPVwiW2FwcHJvdmFsU2NvcGVTZWxlY3RlZF1cIiAoc2VsZWN0ZWQpPVwib25BcHByb3ZhbFNjb3BlU2VsZWN0KCRldmVudClcIj48L2xpYi1zZWxlY3Q+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImF2Mi1ncmlkLTNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImFwcHJvdmFsLWNvbFwiICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uczsgdHJhY2tCeTogdHJhY2tCeUNvbHVtblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhdjItY29sLWhlYWRcIj5cclxuICAgICAgICAgIHt7IGNvbC50aXRsZSB9fVxyXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCIhYXBwcm92YWxzTG9hZGluZyAmJiBjb2wuY2FyZHMubGVuZ3RoXCIgY2xhc3M9XCJhdjItYmFkZ2UgYXYyLWJhZGdlLS1jb3VudFwiPnt7IGNvbC5jYXJkcy5sZW5ndGggfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxsaWItYXVkaXQtdjItc2hpbW1lciAqbmdJZj1cImFwcHJvdmFsc0xvYWRpbmdcIiBbcm93c109XCIyXCI+PC9saWItYXVkaXQtdjItc2hpbW1lcj5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIiFhcHByb3ZhbHNMb2FkaW5nICYmIGNvbC5jYXJkcy5sZW5ndGhcIiBjbGFzcz1cImFwcHJvdmFsLWNhcmRzXCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjYXJkIG9mIGNvbC5jYXJkc1wiIGNsYXNzPVwiYXBwcm92YWwtY2FyZFwiIFtjbGFzcy5hcHByb3ZhbC1jYXJkLS1vZmZdPVwiIWNhcmQubGlua1wiXHJcbiAgICAgICAgICAgIFthdHRyLnJvbGVdPVwiY2FyZC5saW5rID8gJ2xpbmsnIDogbnVsbFwiIFthdHRyLnRhYmluZGV4XT1cImNhcmQubGluayA/IDAgOiBudWxsXCIgW2F0dHIudGl0bGVdPVwiY2FyZC5oaW50IHx8IG51bGxcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlbkNhcmQoY2FyZClcIiAoa2V5ZG93bi5lbnRlcik9XCJvcGVuQ2FyZChjYXJkKVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwcm92YWwtY2FyZC1iYWRnZXNcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF2Mi1iYWRnZSBhdjItYmFkZ2UtLXB1cnBsZSBhdjItYmFkZ2UtLWNvdW50XCI+e3sgY2FyZC50eXBlTGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjYXJkLnJlZG9cIiBjbGFzcz1cImF2Mi1iYWRnZSBhdjItYmFkZ2UtLXdhcm5pbmcgYXYyLWJhZGdlLS1jb3VudFwiPlJlZG88L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwcm92YWwtY2FyZC1uYW1lXCI+e3sgY2FyZC5uYW1lIH19PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHByb3ZhbC1jYXJkLW1ldGFcIj5cclxuICAgICAgICAgICAgICA8c3Bhbj57eyBjYXJkLnN0b3JlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY2FyZC5zdWJtaXR0ZWRMYWJlbFwiPnt7IGNhcmQuc3VibWl0dGVkTGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4+e3sgY2FyZC5ieSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHByb3ZhbC1jYXJkLWZvb3RcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFwcHJvdmFsLWNhcmQtZGF0ZVwiPnt7IGNhcmQud2hlbiB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNhcmQuYXBwcm92ZWRMYWJlbFwiIGNsYXNzPVwiYXYyLWJhZGdlIGF2Mi1iYWRnZS0tc3VjY2VzcyBhdjItYmFkZ2UtLWNvdW50XCI+e3sgY2FyZC5hcHByb3ZlZExhYmVsIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWFwcHJvdmFsc0xvYWRpbmcgJiYgIWNvbC5jYXJkcy5sZW5ndGhcIiBjbGFzcz1cImF2Mi1lbXB0eVwiPlxyXG4gICAgICAgICAgPGltZyBjbGFzcz1cImF2Mi1lbXB0eS1pbWdcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF2Mi1lbXB0eS10ZXh0XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdjItZW1wdHktdGl0bGVcIj5ObyBkYXRhIGZvdW5kPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdjItZW1wdHktc3ViXCI+e3sgY29sLmVtcHR5IH19PC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L3NlY3Rpb24+XHJcblxyXG4gIDwhLS0gQWN0aXZpdHkgTG9nIC0tPlxyXG4gIDxzZWN0aW9uIGNsYXNzPVwiYXYyLWNhcmQgYXYyLWNhcmQtLWxvZ1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImF2Mi1jYXJkLWhlYWQgYXYyLWNhcmQtaGVhZC0tY2VudGVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJhdjItY2FyZC10aXRsZSBhdjItY2FyZC10aXRsZS0tZ3Jvd1wiPkFjdGl2aXR5IExvZzwvZGl2PlxyXG5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwiYXYyLXNlYXJjaCBhdjItc2VhcmNoLS1sZ1wiPlxyXG4gICAgICAgIDxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCI+XHJcbiAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTFcIiBjeT1cIjExXCIgcj1cIjdcIj48L2NpcmNsZT5cclxuICAgICAgICAgIDxsaW5lIHgxPVwiMTYuNVwiIHkxPVwiMTYuNVwiIHgyPVwiMjFcIiB5Mj1cIjIxXCI+PC9saW5lPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDxpbnB1dCBbKG5nTW9kZWwpXT1cInNlYXJjaFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uU2VhcmNoKClcIiB0eXBlPVwidGV4dFwiIFtwbGFjZWhvbGRlcl09XCJzZWFyY2hIaW50XCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgLz5cclxuICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJsb2ctZGF0ZS1waWNrZXJcIj5cclxuICAgICAgICA8bGliLWRhdGUtcmFuZ2UtcGlja2VyIFtyYW5nZV09XCJhY3Rpdml0eVJhbmdlXCIgKGRhdGVDaGFuZ2UpPVwib25BY3Rpdml0eURhdGVDaGFuZ2UoJGV2ZW50KVwiPjwvbGliLWRhdGUtcmFuZ2UtcGlja2VyPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gT25lIGZpbHRlciBwZXIgdGFiIChsaWItZmlsdGVycyByZWFkcyBpdHMgb3B0aW9ucyBvbmNlKTsgZWFjaCBrZWVwcyBpdHMgb3duIHNlbGVjdGlvbi4gLS0+XHJcbiAgICAgIDxsaWItZmlsdGVycyAqbmdJZj1cInRhYiA9PT0gJ0F1ZGl0J1wiIFtkYXRhT2JqZWN0XT1cImFjdGl2aXR5RmlsdGVyRGF0YS5BdWRpdFwiIChhcHBsaWVkRmlsdGVycyk9XCJvbkFjdGl2aXR5RmlsdGVycygkZXZlbnQpXCI+PC9saWItZmlsdGVycz5cclxuICAgICAgPGxpYi1maWx0ZXJzICpuZ0lmPVwidGFiID09PSAnVGFzaydcIiBbZGF0YU9iamVjdF09XCJhY3Rpdml0eUZpbHRlckRhdGEuVGFza1wiIChhcHBsaWVkRmlsdGVycyk9XCJvbkFjdGl2aXR5RmlsdGVycygkZXZlbnQpXCI+PC9saWItZmlsdGVycz5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gQXVkaXQgLyBUYXNrIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImF2Mi10YWJzXCI+XHJcbiAgICAgIDxidXR0b24gKm5nRm9yPVwibGV0IHQgb2YgdGFic1wiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImF2Mi10YWJcIiBbY2xhc3MuaXMtYWN0aXZlXT1cInRhYiA9PT0gdFwiXHJcbiAgICAgICAgKGNsaWNrKT1cInNldFRhYih0KVwiPnt7IHQgfX08L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxsaWItYXVkaXQtdjItc2hpbW1lciAqbmdJZj1cImxvZ0xvYWRpbmdcIj48L2xpYi1hdWRpdC12Mi1zaGltbWVyPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJhdjItdGFibGUtd3JhcFwiICpuZ0lmPVwiIWxvZ0xvYWRpbmdcIj5cclxuICAgICAgPHRhYmxlIGNsYXNzPVwiYXYyLXRhYmxlIGxvZy10YWJsZVwiPlxyXG4gICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgPHRoIGNsYXNzPVwiYXYyLXNvcnRhYmxlXCIgKGNsaWNrKT1cInNvcnRMb2coJ2RhdGUnKVwiPkRhdGUgJmFtcDsgVGltZSA8bGliLWF1ZGl0LXYyLXNvcnQtaWNvbiBbYWN0aXZlXT1cImxvZ1NvcnRLZXkgPT09ICdkYXRlJ1wiIFtkaXJdPVwibG9nU29ydEJ5ID09PSAxID8gJ2FzYycgOiAnZGVzYydcIj48L2xpYi1hdWRpdC12Mi1zb3J0LWljb24+PC90aD5cclxuICAgICAgICAgICAgPHRoIGNsYXNzPVwiYXYyLXNvcnRhYmxlXCIgKGNsaWNrKT1cInNvcnRMb2coJ25hbWUnKVwiPnt7IG5hbWVMYWJlbCB9fSA8bGliLWF1ZGl0LXYyLXNvcnQtaWNvbiBbYWN0aXZlXT1cImxvZ1NvcnRLZXkgPT09ICduYW1lJ1wiIFtkaXJdPVwibG9nU29ydEJ5ID09PSAxID8gJ2FzYycgOiAnZGVzYydcIj48L2xpYi1hdWRpdC12Mi1zb3J0LWljb24+PC90aD5cclxuICAgICAgICAgICAgPHRoIGNsYXNzPVwiYXYyLXNvcnRhYmxlXCIgKGNsaWNrKT1cInNvcnRMb2coJ2FjdGlvbicpXCI+QWN0aW9uIFBlcmZvcm1lZCA8bGliLWF1ZGl0LXYyLXNvcnQtaWNvbiBbYWN0aXZlXT1cImxvZ1NvcnRLZXkgPT09ICdhY3Rpb24nXCIgW2Rpcl09XCJsb2dTb3J0QnkgPT09IDEgPyAnYXNjJyA6ICdkZXNjJ1wiPjwvbGliLWF1ZGl0LXYyLXNvcnQtaWNvbj48L3RoPlxyXG4gICAgICAgICAgICA8dGggY2xhc3M9XCJhdjItc29ydGFibGVcIiAoY2xpY2spPVwic29ydExvZygnYnknKVwiPlBlcmZvcm1lZCBieSA8bGliLWF1ZGl0LXYyLXNvcnQtaWNvbiBbYWN0aXZlXT1cImxvZ1NvcnRLZXkgPT09ICdieSdcIiBbZGlyXT1cImxvZ1NvcnRCeSA9PT0gMSA/ICdhc2MnIDogJ2Rlc2MnXCI+PC9saWItYXVkaXQtdjItc29ydC1pY29uPjwvdGg+XHJcbiAgICAgICAgICAgIDx0aCBjbGFzcz1cImF2Mi1zb3J0YWJsZVwiIChjbGljayk9XCJzb3J0TG9nKCdzdG9yZScpXCI+TmFtZSA8bGliLWF1ZGl0LXYyLXNvcnQtaWNvbiBbYWN0aXZlXT1cImxvZ1NvcnRLZXkgPT09ICdzdG9yZSdcIiBbZGlyXT1cImxvZ1NvcnRCeSA9PT0gMSA/ICdhc2MnIDogJ2Rlc2MnXCI+PC9saWItYXVkaXQtdjItc29ydC1pY29uPjwvdGg+XHJcbiAgICAgICAgICAgIDx0aD5BY3Rpb25zPC90aD5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC90aGVhZD5cclxuICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHJvdyBvZiBwYWdlUm93czsgdHJhY2tCeTogdHJhY2tCeVJvd1wiPlxyXG4gICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2Mi1jZWxsLXN0YWNrXCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57eyByb3cuZGF5IH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhdjItbXV0ZWRcIj57eyByb3cudGltZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdjItY2VsbC1zdGFjayBsb2ctbmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhdjItZWxsaXBzaXNcIiBbYXYyVGlwXT1cInJvdy5uYW1lXCI+e3sgcm93Lm5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJvdy5kZXRhaWxcIiBjbGFzcz1cImF2Mi1tdXRlZCBhdjItZWxsaXBzaXNcIiBbYXYyVGlwXT1cInJvdy5kZXRhaWxcIj57eyByb3cuZGV0YWlsIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8dGQ+PHNwYW4gY2xhc3M9XCJhdjItYmFkZ2UgYWN0aXZpdHktYWN0aW9uXCIgW25nQ2xhc3NdPVwicm93LnRvbmUgPT09ICdwcmltYXJ5JyA/ICcnIDogJ2F2Mi1iYWRnZS0tJyArIHJvdy50b25lXCJcclxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCJyb3cuYWN0aW9uICsgJyAnICsgcm93LmJ5XCI+e3sgcm93LmFjdGlvbiB9fTwvc3Bhbj48L3RkPlxyXG4gICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2Mi1jZWxsLWljb24gYXYyLWRpbVwiPlxyXG4gICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE1XCIgaGVpZ2h0PVwiMTVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjhcIlxyXG4gICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj5cclxuICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCI4XCIgcj1cIjMuNFwiPjwvY2lyY2xlPlxyXG4gICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTUgMjBjMC0zLjYgMy4xLTUuNiA3LTUuNnM3IDIgNyA1LjZcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHJvdy5ieSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdjItY2VsbC1pY29uIHN0b3JlLWNlbGxcIj5cclxuICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNVwiIGhlaWdodD1cIjE1XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS44XCJcclxuICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMyA5bDEuNi00LjVoMTQuOEwyMSA5XCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTQgOXYxMWgxNlY5XCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkgMjB2LTZoNnY2XCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57eyByb3cuc3RvcmUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICA8YSAqbmdJZj1cInJvdy52aWV3YWJsZVwiIGNsYXNzPVwiYXYyLWxpbmtcIiByb3V0ZXJMaW5rPVwiL21hbmFnZS90cmF4L2F1ZGl0LXYyL2dhbGxlcnlcIlxyXG4gICAgICAgICAgICAgICAgW3F1ZXJ5UGFyYW1zXT1cImdhbGxlcnlQYXJhbXMocm93KVwiIHRpdGxlPVwiT3BlbiB0aGlzIHN1Ym1pc3Npb24gaW4gdGhlIEdhbGxlcnlcIj5WaWV3PC9hPlxyXG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXJvdy52aWV3YWJsZVwiIGNsYXNzPVwiYXYyLWZhaW50XCI+LTwvc3Bhbj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC90Ym9keT5cclxuICAgICAgPC90YWJsZT5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCIhbG9nTG9hZGluZyAmJiAhZmlsdGVyZWRSb3dzLmxlbmd0aFwiIGNsYXNzPVwiYXYyLWVtcHR5XCI+XHJcbiAgICAgIDxpbWcgY2xhc3M9XCJhdjItZW1wdHktaW1nXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImF2Mi1lbXB0eS10ZXh0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImF2Mi1lbXB0eS10aXRsZVwiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXYyLWVtcHR5LXN1YlwiPlRoZXJlIGlzIG5vIHJlc3VsdCBmb3Ige3sgdGFiIH19PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cIiFsb2dMb2FkaW5nICYmIGZpbHRlcmVkUm93cy5sZW5ndGhcIiBjbGFzcz1cImxvZy1wYWdpbmF0aW9uXCI+XHJcbiAgICAgIDxsaWItcGFnaW5hdGlvbiBbaXRlbXNQZXJQYWdlXT1cIml0ZW1zUGVyUGFnZVwiIFtwYWdlU2l6ZV09XCJpdGVtc1BlclBhZ2VcIiBbcGFnaW5hdGlvblNpemVzXT1cInBhZ2VTaXplc1wiIFtjdXJyZW50UGFnZV09XCJjdXJyZW50UGFnZVwiIFt0b3RhbEl0ZW1zXT1cInRvdGFsSXRlbXNcIlxyXG4gICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCIgKHBhZ2VTaXplQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiPjwvbGliLXBhZ2luYXRpb24+XHJcbiAgICA8L2Rpdj5cclxuICA8L3NlY3Rpb24+XHJcblxyXG48L2Rpdj5cclxuIl19
|
|
513
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtdjItYWN0aW9uLWNlbnRyZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2F1ZGl0LXYyL2FjdGlvbi1jZW50cmUvYXVkaXQtdjItYWN0aW9uLWNlbnRyZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2F1ZGl0LXYyL2FjdGlvbi1jZW50cmUvYXVkaXQtdjItYWN0aW9uLWNlbnRyZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFaEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTlFLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7Ozs7Ozs7O0FBR25DLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFvRGxCOzs7OztHQUtHO0FBQ0gsTUFBTSxZQUFZLEdBQXdEO0lBQ3hFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtJQUMvQyxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7SUFDbEQsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7SUFDcEQsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQy9DLFVBQVUsRUFBRSxF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QTs7NEZEdEZhLDRCQUE0QjtrQkFMeEMsU0FBUzsrQkFDRSw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XHJcbmltcG9ydCB1dGMgZnJvbSAnZGF5anMvcGx1Z2luL3V0Yyc7XHJcbmltcG9ydCB7IFRyYXhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdHJheC5zZXJ2aWNlJztcclxuXHJcbmRheWpzLmV4dGVuZCh1dGMpO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBY3Rpdml0eVJvdyB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIC8qKiBTZWNvbmQgbGluZSB1bmRlciB0aGUgbmFtZTogdGhlIHNjaGVkdWxlIChcIlNjaGVkdWxlOiBYXCIpIGFuZCAvIG9yIHRoZSBjb3B5IGEgZHVwbGljYXRlIG1hZGUgKFwiQ29weTogWFwiKS4gKi9cclxuICBkZXRhaWw6IHN0cmluZztcclxuICAvKipcclxuICAgKiBTaG9ydCBhY3Rpb24gbGFiZWw6IFwiU3RhcnRlZCBieVwiIC8gXCJTdWJtaXR0ZWQgYnlcIiBmb3IgYSB2aXNpdCwgb3IgYSBsb2dnZWQgYXVkaXQgLyBzY2hlZHVsZSBhY3Rpb24gc3VjaCBhc1xyXG4gICAqIFwiQXVkaXQgY3JlYXRlZCBieVwiLCBcIkR1cGxpY2F0ZWQgYnlcIiwgXCJTY2hlZHVsZSBwdWJsaXNoZWQgYnlcIi4gTmFtZXMgc3RheSBvdXQgb2YgdGhlIGJhZGdlIChzZWUgZGV0YWlsKS5cclxuICAgKi9cclxuICBhY3Rpb246IHN0cmluZztcclxuICAvKiogQmFkZ2UgY29sb3VyIGZvciB0aGUgYWN0aW9uLCBmb2xsb3dpbmcgdGhlIG9sZCBBY3Rpdml0eSBMb2cgKHNlZSBBQ1RJT05fQkFER0UpLiAqL1xyXG4gIHRvbmU6IEFjdGlvblRvbmU7XHJcbiAgYnk6IHN0cmluZztcclxuICBzdG9yZTogc3RyaW5nO1xyXG4gIGRheTogc3RyaW5nO1xyXG4gIHRpbWU6IHN0cmluZztcclxuICAvKiogU3VibWl0dGVkIGVudHJpZXMgY2FuIGJlIG9wZW5lZDsgc3RhcnRlZCBvbmVzIGNhbm5vdC4gKi9cclxuICB2aWV3YWJsZTogYm9vbGVhbjtcclxuICByYXc/OiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXBwcm92YWxDYXJkIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgc3RvcmU6IHN0cmluZztcclxuICBieTogc3RyaW5nO1xyXG4gIHdoZW46IHN0cmluZztcclxuICAvKiogXCJBdWRpdFwiIG9yIFwiVGFza1wiLCBmcm9tIHRoZSBBUEkncyBtb2R1bGUgZmllbGQuICovXHJcbiAgdHlwZUxhYmVsOiBzdHJpbmc7XHJcbiAgLyoqIFwiU3VibWl0dGVkIHggLyB5XCIgKHN1Ym1pdHRlZCBpbnN0YW5jZXMgLyBhc3NpZ25lZCBzdG9yZXMpLCBvciAnJyB3aGVuIHVua25vd24uICovXHJcbiAgc3VibWl0dGVkTGFiZWw6IHN0cmluZztcclxuICAvKiogXCJBcHByb3ZlZCB4IC8geVwiIChhcHByb3ZlZCAvIHN1Ym1pdHRlZCksIG9yICcnIHdoZW4gbm90aGluZyBpcyBzdWJtaXR0ZWQgeWV0LiAqL1xyXG4gIGFwcHJvdmVkTGFiZWw6IHN0cmluZztcclxuICByZWRvOiBib29sZWFuO1xyXG4gIC8qKiBHYWxsZXJ5IGRlZXAgbGluayAoYXVkaXQgLyBzdG9yZSAvIGRheSAvIGFwcHJvdmFsIHN0YXR1cyksIG9yIG51bGwgd2hlbiB0aGVyZSBpcyBub3RoaW5nIHRvIHJldmlldyB0aGVyZS4gKi9cclxuICBsaW5rOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgbnVsbDtcclxuICAvKiogVG9vbHRpcDogd2hhdCBhIGNsaWNrIG9wZW5zLCBvciB3aHkgdGhlIGNhcmQgY2Fubm90IGJlIG9wZW5lZC4gKi9cclxuICBoaW50OiBzdHJpbmc7XHJcbiAgcmF3PzogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFwcHJvdmFsQ29sdW1uIHtcclxuICBrZXk6ICdvcGVuJyB8ICdpbnByb2dyZXNzJyB8ICdhcHByb3ZlZCc7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBlbXB0eTogc3RyaW5nO1xyXG4gIGNhcmRzOiBBcHByb3ZhbENhcmRbXTtcclxufVxyXG5cclxudHlwZSBBY3Rpb25UYWIgPSAnQXVkaXQnIHwgJ1Rhc2snO1xyXG5cclxudHlwZSBBY3Rpb25Ub25lID0gJ3ByaW1hcnknIHwgJ2dyYXknIHwgJ3dhcm5pbmcnIHwgJ2Vycm9yJztcclxuXHJcbi8qKlxyXG4gKiBBY3Rpdml0eSBMb2cgYmFkZ2UgcGVyIGFjdGlvbjogYSBzaG9ydCBsYWJlbCBsaWtlIHRoZSBvbGQgQ2hlY2tsaXN0IEFjdGl2aXR5IExvZydzIChnZXRBY3Rpb25MYWJlbCksIHdpdGhcclxuICogdGhlIHNjaGVkdWxlIC8gY29weSBuYW1lcyBtb3ZlZCB0byB0aGUgbmFtZSBjb2x1bW4sIGFuZCBpdHMgY29sb3VyIChnZXRBY3Rpb25CYWRnZUNsYXNzKTogc3RhcnQgLyBzdWJtaXQgL1xyXG4gKiBwdWJsaXNoIC8gY29uZmlnIGNoYW5nZXMgYmx1ZSwgY3JlYXRlZCAvIGR1cGxpY2F0ZWQgZ3JleSwgZWRpdGVkIGFtYmVyLCBkZWxldGVkIHJlZC5cclxuICogS2V5cyBhcmUgc3RhcnQgLyBzdWJtaXQgZm9yIHZpc2l0IGV2ZW50cyBhbmQgdGhlIHN0b3JlZCBhY3Rpdml0eVR5cGUgZm9yIGxvZ2dlZCBhdWRpdCAvIHNjaGVkdWxlIGFjdGlvbnMuXHJcbiAqL1xyXG5jb25zdCBBQ1RJT05fQkFER0U6IFJlY29yZDxzdHJpbmcsIHsgbGFiZWw6IHN0cmluZzsgdG9uZTogQWN0aW9uVG9uZSB9PiA9IHtcclxuICBzdGFydDogeyBsYWJlbDogJ1N0YXJ0ZWQgYnknLCB0b25lOiAncHJpbWFyeScgfSxcclxuICBzdWJtaXQ6IHsgbGFiZWw6ICdTdWJtaXR0ZWQgYnknLCB0b25lOiAncHJpbWFyeScgfSxcclxuICBjcmVhdGVkOiB7IGxhYmVsOiAnQXVkaXQgY3JlYXRlZCBieScsIHRvbmU6ICdncmF5JyB9LFxyXG4gIGVkaXRlZDogeyBsYWJlbDogJ0VkaXRlZCBieScsIHRvbmU6ICd3YXJuaW5nJyB9LFxyXG4gIGNvbmZpZ3VyZWQ6IHsgbGFiZWw6ICdDb25maWd1cmVkIGJ5JywgdG9uZTogJ3ByaW1hcnknIH0sXHJcbiAgcHVibGlzaGVkOiB7IGxhYmVsOiAnUHVibGlzaGVkIGJ5JywgdG9uZTogJ3ByaW1hcnknIH0sXHJcbiAgdW5wdWJsaXNoZWQ6IHsgbGFiZWw6ICdVbnB1Ymxpc2hlZCBieScsIHRvbmU6ICdwcmltYXJ5JyB9LFxyXG4gIGR1cGxpY2F0ZWQ6IHsgbGFiZWw6ICdEdXBsaWNhdGVkIGJ5JywgdG9uZTogJ2dyYXknIH0sXHJcbiAgZGVsZXRlZDogeyBsYWJlbDogJ0RlbGV0ZWQgYnknLCB0b25lOiAnZXJyb3InIH0sXHJcbiAgc2NoZWR1bGVkOiB7IGxhYmVsOiAnU2NoZWR1bGUgY3JlYXRlZCBieScsIHRvbmU6ICdncmF5JyB9LFxyXG4gIHNjaGVkdWxlRWRpdGVkOiB7IGxhYmVsOiAnU2NoZWR1bGUgZWRpdGVkIGJ5JywgdG9uZTogJ3dhcm5pbmcnIH0sXHJcbiAgc2NoZWR1bGVQdWJsaXNoZWQ6IHsgbGFiZWw6ICdTY2hlZHVsZSBwdWJsaXNoZWQgYnknLCB0b25lOiAncHJpbWFyeScgfSxcclxuICBzY2hlZHVsZVVucHVibGlzaGVkOiB7IGxhYmVsOiAnU2NoZWR1bGUgdW5wdWJsaXNoZWQgYnknLCB0b25lOiAncHJpbWFyeScgfSxcclxuICBzY2hlZHVsZUR1cGxpY2F0ZWQ6IHsgbGFiZWw6ICdTY2hlZHVsZSBkdXBsaWNhdGVkIGJ5JywgdG9uZTogJ2dyYXknIH0sXHJcbiAgc2NoZWR1bGVEZWxldGVkOiB7IGxhYmVsOiAnU2NoZWR1bGUgZGVsZXRlZCBieScsIHRvbmU6ICdlcnJvcicgfSxcclxufTtcclxuXHJcbi8qKiBBY3Rpdml0eSBMb2cgXCJBY3Rpb25zXCIgZmlsdGVyOyBpZHMgbWF0Y2ggdGhlIEFQSSdzIGFjdGlvbiBmaWx0ZXIuICovXHJcbmNvbnN0IFZJU0lUX0FDVElPTlMgPSBbXHJcbiAgeyB0ZXh0OiAnU3RhcnRlZCBieScsIGlkOiAnc3RhcnQnIH0sXHJcbiAgeyB0ZXh0OiAnU3VibWl0dGVkIGJ5JywgaWQ6ICdzdWJtaXQnIH0sXHJcbl07XHJcblxyXG4vKipcclxuICogQXVkaXQgQWN0aW9uIENlbnRlciwgc2VydmVkIGJ5IC90cmF4L2F1ZGl0L2FjdGlvbkNlbnRlci8qIChyZXRhaWwtdHJheC1hcGktdjIpOlxyXG4gKiAgIGNhcmRzICAgICAgIC0+IGF1ZGl0cyAvIHRhc2tzIHdhaXRpbmcgZm9yIGFwcHJvdmFsXHJcbiAqICAgYXBwcm92YWxzICAgLT4gb3BlbiAvIGlucHJvZ3Jlc3MgLyBkb25lLCBvbmUgcm93IHBlciBhdWRpdCBwZXIgZGF5XHJcbiAqICAgYWN0aXZpdHlMb2cgLT4gc3RhcnQgKyBzdWJtaXQgZXZlbnRzIGZyb20gdGhlIGluc3RhbmNlcywgcGx1cyAoQXVkaXQgdGFiKSB0aGUgbG9nZ2VkIGF1ZGl0IC8gc2NoZWR1bGVcclxuICogICAgICAgICAgICAgICAgICBhY3Rpb25zOiBjcmVhdGVkLCBlZGl0ZWQsIGNvbmZpZ3VyZWQsIHB1Ymxpc2hlZCwgdW5wdWJsaXNoZWQsIGR1cGxpY2F0ZWQsIGRlbGV0ZWQ7IHNlcnZlci1wYWdlZFxyXG4gKiBFdmVyeSBjYWxsIGlzIHNjb3BlZCBieSB0aGUgZ2xvYmFsIGhlYWRlciBmaWx0ZXIgKGNsaWVudCwgY2hlY2tlZCBzdG9yZXMsIGRhdGVzKS5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWF1ZGl0LXYyLWFjdGlvbi1jZW50cmUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hdWRpdC12Mi1hY3Rpb24tY2VudHJlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYXVkaXQtdjItYWN0aW9uLWNlbnRyZS5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1ZGl0VjJBY3Rpb25DZW50cmVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgLyoqIFRhYiBpbnNpZGUgdGhlIGFjdGl2aXR5IGxvZy4gKi9cclxuICB0YWI6IEFjdGlvblRhYiA9ICdBdWRpdCc7XHJcbiAgcmVhZG9ubHkgdGFiczogQWN0aW9uVGFiW10gPSBbJ0F1ZGl0JywgJ1Rhc2snXTtcclxuXHJcbiAgLyoqIEFwcHJvdmFsIHBhbmVsIGNvbnRyb2xzLiAqL1xyXG4gIGFwcHJvdmFsU2VhcmNoID0gJyc7XHJcbiAgYXBwcm92YWxTY29wZSA9ICdBbGwnO1xyXG4gIHJlYWRvbmx5IGFwcHJvdmFsU2NvcGVzID0gWydBbGwnLCAnQXVkaXQnLCAnVGFzayddO1xyXG4gIHJlYWRvbmx5IGFwcHJvdmFsU2NvcGVJdGVtcyA9IHRoaXMuYXBwcm92YWxTY29wZXMubWFwKChzKSA9PiAoeyBpZDogcywgbGFiZWw6IHMgfSkpO1xyXG4gIGFwcHJvdmFsU2NvcGVTZWxlY3RlZDogeyBpZDogc3RyaW5nOyBsYWJlbDogc3RyaW5nIH0gPSB0aGlzLmFwcHJvdmFsU2NvcGVJdGVtc1swXTtcclxuXHJcbiAgLyoqIEFjdGl2aXR5IExvZydzIG93biBkYXRlIHJhbmdlIChkZWZhdWx0cyB0byB0aGUgaGVhZGVyIHJhbmdlLCBjaGFuZ2VkIGJ5IGl0cyBwaWNrZXIpLiAqL1xyXG4gIGFjdGl2aXR5UmFuZ2U6IHsgc3RhcnREYXRlOiBzdHJpbmc7IGVuZERhdGU6IHN0cmluZyB9IHwgbnVsbCA9IG51bGw7XHJcbiAgLyoqIEFjdGl2aXR5IExvZyBhY3Rpb24gZmlsdGVyIGFwcGxpZWQgb24gZWFjaCB0YWI7IGlkcyBtYXRjaCB0aGUgQVBJJ3MgYWN0aW9uIGZpbHRlci4gRW1wdHkgPSBhbGwuICovXHJcbiAgcHJpdmF0ZSByZWFkb25seSBhY3Rpb25zQnlUYWI6IFJlY29yZDxBY3Rpb25UYWIsIHN0cmluZ1tdPiA9IHsgQXVkaXQ6IFtdLCBUYXNrOiBbXSB9O1xyXG4gIC8qKlxyXG4gICAqIEZpbHRlciBvcHRpb25zIHBlciB0YWIuIExvZ2dlZCBhdWRpdCAvIHNjaGVkdWxlIGFjdGlvbnMgb25seSBleGlzdCBvbiB0aGUgQXVkaXQgdGFiICgnc2NoZWR1bGUnID0gZXZlcnlcclxuICAgKiBzY2hlZHVsZSBhY3Rpb24pOyB0aGUgVGFzayB0YWIgaGFzIHN0YXJ0IC8gc3VibWl0IGV2ZW50cyBvbmx5LiBsaWItZmlsdGVycyByZWFkcyBpdHMgb3B0aW9ucyBvbmNlLCBzbyB0aGVcclxuICAgKiB0ZW1wbGF0ZSBrZWVwcyBvbmUgaW5zdGFuY2UgcGVyIHRhYi5cclxuICAgKi9cclxuICByZWFkb25seSBhY3Rpdml0eUZpbHRlckRhdGE6IFJlY29yZDxBY3Rpb25UYWIsIGFueVtdPiA9IHtcclxuICAgIEF1ZGl0OiBbe1xyXG4gICAgICBEZXNjcmlwdGlvbjogJ0FjdGlvbnMnLFxyXG4gICAgICBJc3N1ZXM6IFtcclxuICAgICAgICAuLi5WSVNJVF9BQ1RJT05TLm1hcCgoYSkgPT4gKHsgLi4uYSB9KSksXHJcbiAgICAgICAgeyB0ZXh0OiAnQXVkaXQgY3JlYXRlZCBieScsIGlkOiAnY3JlYXRlZCcgfSxcclxuICAgICAgICB7IHRleHQ6ICdFZGl0ZWQgYnknLCBpZDogJ2VkaXRlZCcgfSxcclxuICAgICAgICB7IHRleHQ6ICdDb25maWd1cmVkIGJ5JywgaWQ6ICdjb25maWd1cmVkJyB9LFxyXG4gICAgICAgIHsgdGV4dDogJ1B1Ymxpc2hlZCBieScsIGlkOiAncHVibGlzaGVkJyB9LFxyXG4gICAgICAgIHsgdGV4dDogJ1VucHVibGlzaGVkIGJ5JywgaWQ6ICd1bnB1Ymxpc2hlZCcgfSxcclxuICAgICAgICB7IHRleHQ6ICdEdXBsaWNhdGVkIGJ5JywgaWQ6ICdkdXBsaWNhdGVkJyB9LFxyXG4gICAgICAgIHsgdGV4dDogJ0RlbGV0ZWQgYnknLCBpZDogJ2RlbGV0ZWQnIH0sXHJcbiAgICAgICAgeyB0ZXh0OiAnU2NoZWR1bGUgY2hhbmdlcycsIGlkOiAnc2NoZWR1bGUnIH0sXHJcbiAgICAgIF0sXHJcbiAgICB9XSxcclxuICAgIFRhc2s6IFt7IERlc2NyaXB0aW9uOiAnQWN0aW9ucycsIElzc3VlczogVklTSVRfQUNUSU9OUy5tYXAoKGEpID0+ICh7IC4uLmEgfSkpIH1dLFxyXG4gIH07XHJcblxyXG4gIC8qKiBBY3Rpdml0eSBsb2cgY29udHJvbHMuICovXHJcbiAgc2VhcmNoID0gJyc7XHJcbiAgZGF0ZVJhbmdlID0gJyc7XHJcbiAgaXRlbXNQZXJQYWdlID0gMTA7XHJcbiAgY3VycmVudFBhZ2UgPSAxO1xyXG4gIHJlYWRvbmx5IHBhZ2VTaXplcyA9IFsxMCwgMjAsIDMwXTtcclxuICAvKiogVG90YWwgYWN0aXZpdHkgcm93cyByZXBvcnRlZCBieSB0aGUgQVBJIChzZXJ2ZXItc2lkZSBwYWdpbmF0aW9uKS4gKi9cclxuICB0b3RhbEl0ZW1zID0gMDtcclxuXHJcbiAgYXVkaXRXYWl0aW5nID0gMDtcclxuICB0YXNrV2FpdGluZyA9IDA7XHJcblxyXG4gIHJvd3M6IEFjdGl2aXR5Um93W10gPSBbXTtcclxuICBjb2x1bW5zOiBBcHByb3ZhbENvbHVtbltdID0gdGhpcy5idWlsZENvbHVtbnMoKTtcclxuXHJcbiAgY2FyZHNMb2FkaW5nID0gdHJ1ZTtcclxuICBhcHByb3ZhbHNMb2FkaW5nID0gdHJ1ZTtcclxuICBsb2dMb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgcHJpdmF0ZSBoZWFkZXJEYXRhOiBhbnk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSB1c2VyRW1haWxlczogc3RyaW5nW10gPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd1c2Vyc0VtYWlsLWluZm8nKSB8fCAnW10nKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGFwcHJvdmFsU2VhcmNoJCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHNlYXJjaCQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSB0cmF4U2VydmljZTogVHJheFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWVcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLCBkZWJvdW5jZVRpbWUoMzAwKSlcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKCFkYXRhPy5jbGllbnQpIHsgcmV0dXJuOyB9XHJcbiAgICAgICAgdGhpcy5oZWFkZXJEYXRhID0gZGF0YTtcclxuICAgICAgICB0aGlzLmRhdGVSYW5nZSA9IHRoaXMuZm10KGRhdGEuZGF0ZT8uc3RhcnREYXRlLCAnREQtTU0tWVlZWScpICsgJyAtICcgKyB0aGlzLmZtdChkYXRhLmRhdGU/LmVuZERhdGUsICdERC1NTS1ZWVlZJyk7XHJcbiAgICAgICAgdGhpcy5hY3Rpdml0eVJhbmdlID0gdGhpcy5kZWZhdWx0QWN0aXZpdHlSYW5nZShkYXRhLmRhdGUpO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xyXG4gICAgICAgIHRoaXMubG9hZENhcmRzKCk7XHJcbiAgICAgICAgdGhpcy5sb2FkQXBwcm92YWxzKCk7XHJcbiAgICAgICAgdGhpcy5sb2FkQWN0aXZpdHkoKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy5hcHByb3ZhbFNlYXJjaCRcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLCBkZWJvdW5jZVRpbWUoNDAwKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmxvYWRBcHByb3ZhbHMoKSk7XHJcblxyXG4gICAgdGhpcy5zZWFyY2gkXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSwgZGVib3VuY2VUaW1lKDQwMCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xyXG4gICAgICAgIHRoaXMubG9hZEFjdGl2aXR5KCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFjdGl2aXR5IExvZydzIHN0YXJ0aW5nIHJhbmdlOiB0aGUgaGVhZGVyIHJhbmdlLCBleGNlcHQgdGhhdCBvbmUgZW5kaW5nIHllc3RlcmRheSBydW5zIG9uIHRvIHRvZGF5LlxyXG4gICAqIFRoZSBoZWFkZXIncyBwcmVzZXRzIChhbmQgaXRzIGRlZmF1bHQpIHN0b3AgYXQgeWVzdGVyZGF5IGJlY2F1c2UgYW5hbHl0aWNzIGxhbmQgYSBkYXkgbGF0ZSwgYnV0IHRoZVxyXG4gICAqIGxvZyBpcyBsaXZlOiB3aXRob3V0IHRoaXMsIHdoYXQgd2FzIHN0YXJ0ZWQgb3Igc3VibWl0dGVkIHRvZGF5IG5ldmVyIHNob3dzIHVudGlsIHRoZSByYW5nZSBpcyBjaGFuZ2VkLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgZGVmYXVsdEFjdGl2aXR5UmFuZ2UoZGF0ZTogYW55KTogeyBzdGFydERhdGU6IHN0cmluZzsgZW5kRGF0ZTogc3RyaW5nIH0gfCBudWxsIHtcclxuICAgIGlmICghZGF0ZT8uc3RhcnREYXRlIHx8ICFkYXRlPy5lbmREYXRlKSB7IHJldHVybiBudWxsOyB9XHJcbiAgICBjb25zdCB5ZXN0ZXJkYXkgPSBkYXlqcygpLnN1YnRyYWN0KDEsICdkYXknKS5mb3JtYXQoJ1lZWVktTU0tREQnKTtcclxuICAgIGNvbnN0IGVuZERhdGUgPSBkYXRlLmVuZERhdGUgPT09IHllc3RlcmRheSA/IGRheWpzKCkuZm9ybWF0KCdZWVlZLU1NLUREJykgOiBkYXRlLmVuZERhdGU7XHJcbiAgICByZXR1cm4geyBzdGFydERhdGU6IGRhdGUuc3RhcnREYXRlLCBlbmREYXRlIH07XHJcbiAgfVxyXG5cclxuICAvKiogQ29tbW9uIGhlYWRlci1maWx0ZXIgc2NvcGUgZXZlcnkgYWN0aW9uLWNlbnRlciBjYWxsIGNhcnJpZXMuICovXHJcbiAgcHJpdmF0ZSBiYXNlUGF5bG9hZCgpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGNsaWVudElkOiB0aGlzLmhlYWRlckRhdGE/LmNsaWVudCxcclxuICAgICAgZnJvbURhdGU6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZT8uc3RhcnREYXRlLFxyXG4gICAgICB0b0RhdGU6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZT8uZW5kRGF0ZSxcclxuICAgICAgc3RvcmVJZDogKHRoaXMuaGVhZGVyRGF0YT8uc3RvcmVzIHx8IFtdKS5maWx0ZXIoKHM6IGFueSkgPT4gcy5jaGVja2VkKS5tYXAoKHM6IGFueSkgPT4gcy5zdG9yZUlkKSxcclxuICAgICAgdXNlckVtYWlsZXM6IHRoaXMudXNlckVtYWlsZXNcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWRDYXJkcygpOiB2b2lkIHtcclxuICAgIHRoaXMuY2FyZHNMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMudHJheFNlcnZpY2UuYXVkaXRBY3Rpb25DZW50ZXJDYXJkcyh0aGlzLmJhc2VQYXlsb2FkKCkpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjYXJkID0gcmVzPy5jb2RlID09PSAyMDAgPyAocmVzLmRhdGE/LmNhcmREYXRhIHx8IHt9KSA6IHt9O1xyXG4gICAgICAgICAgdGhpcy5hdWRpdFdhaXRpbmcgPSBOdW1iZXIoY2FyZC5hdWRpdEFwcHJvdmFsKSB8fCAwO1xyXG4gICAgICAgICAgdGhpcy50YXNrV2FpdGluZyA9IE51bWJlcihjYXJkLnRhc2tBcHByb3ZhbCkgfHwgMDtcclxuICAgICAgICAgIHRoaXMuY2FyZHNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmF1ZGl0V2FpdGluZyA9IDA7XHJcbiAgICAgICAgICB0aGlzLnRhc2tXYWl0aW5nID0gMDtcclxuICAgICAgICAgIHRoaXMuY2FyZHNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkQXBwcm92YWxzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5hcHByb3ZhbHNMb2FkaW5nID0gdHJ1ZTtcclxuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmFwcHJvdmFsU2NvcGUgPT09ICdBbGwnID8gJ2FsbCcgOiB0aGlzLmFwcHJvdmFsU2NvcGUgPT09ICdUYXNrJyA/ICd0YXNrJyA6ICdhdWRpdCc7XHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLmF1ZGl0QWN0aW9uQ2VudGVyQXBwcm92YWxzKHtcclxuICAgICAgLi4udGhpcy5iYXNlUGF5bG9hZCgpLFxyXG4gICAgICBzZWFyY2hWYWx1ZTogdGhpcy5hcHByb3ZhbFNlYXJjaC50cmltKCksXHJcbiAgICAgIHR5cGVcclxuICAgIH0pLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBkYXRhID0gcmVzPy5jb2RlID09PSAyMDAgPyAocmVzLmRhdGEgfHwge30pIDoge307XHJcbiAgICAgICAgdGhpcy5jb2x1bW5zID0gdGhpcy5idWlsZENvbHVtbnMoKTtcclxuICAgICAgICB0aGlzLmNvbHVtbnNbMF0uY2FyZHMgPSAoZGF0YS5vcGVuIHx8IFtdKS5tYXAoKHg6IGFueSkgPT4gdGhpcy50b0NhcmQoeCwgJ29wZW4nKSk7XHJcbiAgICAgICAgdGhpcy5jb2x1bW5zWzFdLmNhcmRzID0gKGRhdGEuaW5wcm9ncmVzcyB8fCBbXSkubWFwKCh4OiBhbnkpID0+IHRoaXMudG9DYXJkKHgsICdpbnByb2dyZXNzJykpO1xyXG4gICAgICAgIHRoaXMuY29sdW1uc1syXS5jYXJkcyA9IChkYXRhLmRvbmUgfHwgW10pLm1hcCgoeDogYW55KSA9PiB0aGlzLnRvQ2FyZCh4LCAnYXBwcm92ZWQnKSk7XHJcbiAgICAgICAgdGhpcy5hcHByb3ZhbHNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb2x1bW5zID0gdGhpcy5idWlsZENvbHVtbnMoKTtcclxuICAgICAgICB0aGlzLmFwcHJvdmFsc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRvQ2FyZCh4OiBhbnksIGNvbHVtbjogQXBwcm92YWxDb2x1bW5bJ2tleSddKTogQXBwcm92YWxDYXJkIHtcclxuICAgIGNvbnN0IHN0b3JlcyA9IE51bWJlcih4Py5zdG9yZUNvdW50KSB8fCAwO1xyXG4gICAgY29uc3Qgc3RvcmUgPSB4Py5jb3ZlcmFnZSA9PT0gJ3VzZXInXHJcbiAgICAgID8gKHg/LnVzZXJOYW1lIHx8ICfigJQnKVxyXG4gICAgICA6IChzdG9yZXMgPiAxID8gc3RvcmVzICsgJyBzdG9yZXMnIDogKHg/LnN0b3JlTmFtZSB8fCAoc3RvcmVzID09PSAxID8gJzEgc3RvcmUnIDogJ+KAlCcpKSk7XHJcbiAgICBjb25zdCBwZW5kaW5nID0gTnVtYmVyKHg/LnBlbmRpbmcpIHx8IDA7XHJcbiAgICBjb25zdCBzdWJtaXR0ZWQgPSBOdW1iZXIoeD8uc3VibWl0Q291bnQpIHx8IDA7XHJcbiAgICBjb25zdCBhcHByb3ZlZCA9IE51bWJlcih4Py5hcHByb3ZlQ291bnQpIHx8IDA7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuYW1lOiB4Py5jaGVja0xpc3ROYW1lIHx8ICfigJQnLFxyXG4gICAgICBzdG9yZSxcclxuICAgICAgYnk6IHBlbmRpbmcgPyBwZW5kaW5nICsgJyBhd2FpdGluZyBhcHByb3ZhbCcgOiAoeD8udXNlck5hbWUgfHwgeD8uY3JlYXRlZEJ5TmFtZSB8fCAn4oCUJyksXHJcbiAgICAgIHdoZW46IHg/LnB1Ymxpc2hEYXRlID8gdGhpcy5mbXQoeC5wdWJsaXNoRGF0ZSwgJ0REIE1NTSBZWVlZJykgOiAn4oCUJyxcclxuICAgICAgdHlwZUxhYmVsOiB4Py5tb2R1bGUgPT09ICd0YXNrJyA/ICdUYXNrJyA6ICdBdWRpdCcsXHJcbiAgICAgIHN1Ym1pdHRlZExhYmVsOiBzdG9yZXMgPyBgU3VibWl0dGVkICR7c3VibWl0dGVkfSAvICR7c3RvcmVzfWAgOiAnJyxcclxuICAgICAgYXBwcm92ZWRMYWJlbDogc3VibWl0dGVkID8gYEFwcHJvdmVkICR7YXBwcm92ZWR9IC8gJHtzdWJtaXR0ZWR9YCA6ICcnLFxyXG4gICAgICByZWRvOiAhIXg/LnJlZG8sXHJcbiAgICAgIC4uLnRoaXMuY2FyZExpbmsoeCwgY29sdW1uLCBzdWJtaXR0ZWQpLFxyXG4gICAgICByYXc6IHhcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXaGVyZSBhIGNhcmQgbGFuZHM6IHRoZSBHYWxsZXJ5IG9uIHRoYXQgYXVkaXQgYW5kIGRheSAoYW5kIHN0b3JlLCB3aGVuIHRoZSBjYXJkIGlzIG9uZSBzdG9yZSksXHJcbiAgICogbmFycm93ZWQgdG8gd2hhdCB0aGUgY29sdW1uIG1lYW5zLiBPcGVuID0gYXdhaXRpbmcgYXBwcm92YWwsIEFwcHJvdmVkID0gYXBwcm92ZWQ7IElucHJvZ3Jlc3NcclxuICAgKiBzaG93cyBldmVyeSBzdWJtaXNzaW9uLiBUaGUgR2FsbGVyeSBsaXN0cyBzdWJtaXR0ZWQgKG9yIHNlbnQtYmFjaykgdmlzaXRzIG9ubHksIHNvIGEgY2FyZCB3aXRoXHJcbiAgICogbm9uZSBzdGF5cyBjbG9zZWQuIFRhc2sgY2FyZHMgb3BlbiB0aGUgR2FsbGVyeSB3aXRoIFR5cGUgVGFzayAodHlwZT10YXNrOyBhdWRpdD0gaXMgdGhlIHRhc2sgaWQpLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgY2FyZExpbmsoeDogYW55LCBjb2x1bW46IEFwcHJvdmFsQ29sdW1uWydrZXknXSwgc3VibWl0dGVkOiBudW1iZXIpOiBQaWNrPEFwcHJvdmFsQ2FyZCwgJ2xpbmsnIHwgJ2hpbnQnPiB7XHJcbiAgICBjb25zdCB0YXNrID0geD8ubW9kdWxlID09PSAndGFzayc7XHJcbiAgICBjb25zdCBhdWRpdCA9IFN0cmluZyh4Py5zb3VyY2VDaGVja2xpc3RJZCB8fCAnJyk7XHJcbiAgICBjb25zdCBkYXRlID0gdGhpcy5pc29EYXkoeD8ucHVibGlzaERhdGUpO1xyXG4gICAgaWYgKCFhdWRpdCB8fCAhZGF0ZSkge1xyXG4gICAgICByZXR1cm4geyBsaW5rOiBudWxsLCBoaW50OiAnJyB9O1xyXG4gICAgfVxyXG4gICAgaWYgKCFzdWJtaXR0ZWQgJiYgIXg/LnJlZG8pIHtcclxuICAgICAgcmV0dXJuIHsgbGluazogbnVsbCwgaGludDogJ05vdGhpbmcgc3VibWl0dGVkIHlldCwgc28gdGhlcmUgaXMgbm90aGluZyB0byByZXZpZXcgaW4gdGhlIEdhbGxlcnknIH07XHJcbiAgICB9XHJcbiAgICBjb25zdCBzdGF0dXMgPSBjb2x1bW4gPT09ICdvcGVuJyA/ICdOb3QtQXBwcm92ZWQnIDogY29sdW1uID09PSAnYXBwcm92ZWQnID8gJ0FwcHJvdmVkJyA6ICcnO1xyXG4gICAgY29uc3Qgc2luZ2xlID0gTnVtYmVyKHg/LnN0b3JlQ291bnQpID09PSAxICYmIHg/LnN0b3JlSWQ7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBsaW5rOiB7XHJcbiAgICAgICAgYXVkaXQsIGRhdGUsXHJcbiAgICAgICAgLi4uKHNpbmdsZSA/IHsgc3RvcmU6IFN0cmluZyh4LnN0b3JlSWQpIH0gOiB7fSksXHJcbiAgICAgICAgLi4uKHN0YXR1cyA/IHsgc3RhdHVzIH0gOiB7fSksXHJcbiAgICAgICAgLi4uKHRhc2sgPyB7IHR5cGU6ICd0YXNrJyB9IDoge30pXHJcbiAgICAgIH0sXHJcbiAgICAgIGhpbnQ6IGNvbHVtbiA9PT0gJ29wZW4nID8gJ1JldmlldyB0aGUgc3VibWlzc2lvbnMgYXdhaXRpbmcgYXBwcm92YWwgaW4gdGhlIEdhbGxlcnknXHJcbiAgICAgICAgOiBjb2x1bW4gPT09ICdhcHByb3ZlZCcgPyAnVmlldyB0aGUgYXBwcm92ZWQgc3VibWlzc2lvbnMgaW4gdGhlIEdhbGxlcnknXHJcbiAgICAgICAgICA6ICdWaWV3IHRoZSBzdWJtaXNzaW9ucyBpbiB0aGUgR2FsbGVyeSdcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKiogZGF0ZV9pc28gaXMgdGhlIHZpc2l0IGRheSBhdCBVVEMgbWlkbmlnaHQ7IHJlYWQgaXRzIGRhdGUgcGFydCBzbyBubyB0aW1lIHpvbmUgc2hpZnRzIHRoZSBkYXkuICovXHJcbiAgcHJpdmF0ZSBpc29EYXkodmFsdWU6IGFueSk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXZhbHVlKSB7IHJldHVybiAnJzsgfVxyXG4gICAgY29uc3QgbSA9IC9eKFxcZHs0fS1cXGR7Mn0tXFxkezJ9KS8uZXhlYyhTdHJpbmcodmFsdWUpKTtcclxuICAgIHJldHVybiBtID8gbVsxXSA6IGRheWpzKHZhbHVlKS5mb3JtYXQoJ1lZWVktTU0tREQnKTtcclxuICB9XHJcblxyXG4gIG9wZW5DYXJkKGNhcmQ6IEFwcHJvdmFsQ2FyZCk6IHZvaWQge1xyXG4gICAgaWYgKCFjYXJkLmxpbmspIHsgcmV0dXJuOyB9XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9tYW5hZ2UvdHJheC9hdWRpdC12Mi9nYWxsZXJ5J10sIHsgcXVlcnlQYXJhbXM6IGNhcmQubGluayB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFjdGl2aXR5IGxvZyBjb2x1bW4gc29ydCwgZG9uZSBieSB0aGUgQVBJICh0aGUgbG9nIGlzIHBhZ2VkIHRoZXJlKS4gJycgPSBuZXdlc3QgZmlyc3QsIHdoaWNoIHRoZVxyXG4gICAqIERhdGUgJiBUaW1lIGFycm93IHNob3dzIGFzIGl0cyBkZXNjZW5kaW5nIHN0YXRlLlxyXG4gICAqL1xyXG4gIGxvZ1NvcnRDb2x1bW4gPSAnJztcclxuICBsb2dTb3J0Qnk6IDEgfCAtMSA9IC0xO1xyXG5cclxuICBnZXQgbG9nU29ydEtleSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMubG9nU29ydENvbHVtbiB8fCAnZGF0ZSc7XHJcbiAgfVxyXG5cclxuICBzb3J0TG9nKGNvbHVtbjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5sb2dTb3J0S2V5O1xyXG4gICAgLy8gRGF0ZSBzdGFydHMgbmV3ZXN0IGZpcnN0ICh0aGUgZGVmYXVsdCk7IHRoZSBvdGhlciBjb2x1bW5zIHN0YXJ0IEEtWiAvIGxvd2VzdCBmaXJzdC5cclxuICAgIHRoaXMubG9nU29ydEJ5ID0gY3VycmVudCA9PT0gY29sdW1uID8gKHRoaXMubG9nU29ydEJ5ID09PSAxID8gLTEgOiAxKSA6IChjb2x1bW4gPT09ICdkYXRlJyA/IC0xIDogMSk7XHJcbiAgICB0aGlzLmxvZ1NvcnRDb2x1bW4gPSBjb2x1bW4gPT09ICdkYXRlJyAmJiB0aGlzLmxvZ1NvcnRCeSA9PT0gLTEgPyAnJyA6IGNvbHVtbjtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xyXG4gICAgdGhpcy5sb2FkQWN0aXZpdHkoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZEFjdGl2aXR5KCk6IHZvaWQge1xyXG4gICAgLy8gTm90IGJlZm9yZSB0aGUgaGVhZGVyIGhhcyBhIGNsaWVudDogdGhlIEFQSSByZWZ1c2VzIGl0IChcImNsaWVudElkIGlzIHJlcXVpcmVkXCIpOyB0aGUgaGVhZGVyJ3MgbG9hZCBjb21lcyBuZXh0LlxyXG4gICAgaWYgKCF0aGlzLmhlYWRlckRhdGE/LmNsaWVudCkgeyByZXR1cm47IH1cclxuICAgIHRoaXMubG9nTG9hZGluZyA9IHRydWU7XHJcbiAgICBjb25zdCBhY3Rpb25zID0gdGhpcy5hY3Rpb25zQnlUYWJbdGhpcy50YWJdO1xyXG4gICAgdGhpcy50cmF4U2VydmljZS5hdWRpdEFjdGlvbkNlbnRlckFjdGl2aXR5KHtcclxuICAgICAgLi4udGhpcy5iYXNlUGF5bG9hZCgpLFxyXG4gICAgICAuLi4odGhpcy5hY3Rpdml0eVJhbmdlID8geyBmcm9tRGF0ZTogdGhpcy5hY3Rpdml0eVJhbmdlLnN0YXJ0RGF0ZSwgdG9EYXRlOiB0aGlzLmFjdGl2aXR5UmFuZ2UuZW5kRGF0ZSB9IDoge30pLFxyXG4gICAgICB0eXBlOiB0aGlzLnRhYiA9PT0gJ1Rhc2snID8gJ3Rhc2snIDogJ2F1ZGl0JyxcclxuICAgICAgbGltaXQ6IHRoaXMuaXRlbXNQZXJQYWdlLFxyXG4gICAgICBvZmZzZXQ6IHRoaXMuY3VycmVudFBhZ2UsXHJcbiAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLnNlYXJjaC50cmltKCksXHJcbiAgICAgIC8vIExvZ2dlZCBhdWRpdCAvIHNjaGVkdWxlIGFjdGlvbnMgY29tZSBiYWNrIG9uIHRoaXMgYnJvd3NlcidzIGNsb2NrLCBzdGFtcGVkIGFzIFVUQyBsaWtlIHRoZSB2aXNpdCB0aW1lcy5cclxuICAgICAgdHpPZmZzZXQ6IG5ldyBEYXRlKCkuZ2V0VGltZXpvbmVPZmZzZXQoKSxcclxuICAgICAgLy8gT25seSBzZW50IHdoZW4gbmFycm93ZWQsIHNvIGFuIEFQSSB3aXRob3V0IHRoZSBmaWx0ZXIgc3RpbGwgc2VydmVzIHRoZSB1bmZpbHRlcmVkIGxvZy5cclxuICAgICAgLi4uKGFjdGlvbnMubGVuZ3RoID8geyBhY3Rpb246IGFjdGlvbnMgfSA6IHt9KSxcclxuICAgICAgLy8gTGlrZXdpc2UgdGhlIGNvbHVtbiBzb3J0OiBvbmx5IG9uY2UgYSBoZWFkZXIgb3RoZXIgdGhhbiB0aGUgZGVmYXVsdCBuZXdlc3QtZmlyc3QgaXMgcGlja2VkLlxyXG4gICAgICAuLi4odGhpcy5sb2dTb3J0Q29sdW1uID8geyBzb3J0Q29sdW1uOiB0aGlzLmxvZ1NvcnRDb2x1bW4sIHNvcnRCeTogdGhpcy5sb2dTb3J0QnkgfSA6IHt9KVxyXG4gICAgfSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSByZXM/LmNvZGUgPT09IDIwMCA/IChyZXMuZGF0YSB8fCB7fSkgOiB7fTtcclxuICAgICAgICB0aGlzLnJvd3MgPSAoZGF0YS5hY3Rpdml0eUxvZ0RhdGEgfHwgW10pLm1hcCgobG9nOiBhbnkpID0+IHRoaXMudG9Sb3cobG9nKSk7XHJcbiAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gTnVtYmVyKGRhdGEuY291bnQpIHx8IDA7XHJcbiAgICAgICAgdGhpcy5sb2dMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yb3dzID0gW107XHJcbiAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gMDtcclxuICAgICAgICB0aGlzLmxvZ0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBzdGFydFRpbWUgLyBzdWJtaXRUaW1lIGFyZSB0aGUgc3RvcmUncyB3YWxsIGNsb2NrIHN0YW1wZWQgYXMgVVRDICh0aGUgbW9iaWxlIHN1Ym1pdCksIHNvIHRoZXkgYXJlIHJlYWRcclxuICAgKiBhcyBVVEM6IGEgbG9jYWwgcmVhZCB3b3VsZCBhZGQgdGhlIGJyb3dzZXIncyBvZmZzZXQgKCs1OjMwIGluIElTVCkgYW5kIHB1c2ggZXZlbmluZyBldmVudHMgaW50byB0aGUgbmV4dCBkYXkuXHJcbiAgICogTG9nZ2VkIGF1ZGl0IC8gc2NoZWR1bGUgYWN0aW9ucyAoa2luZCAnbG9nJykgYXJyaXZlIGFscmVhZHkgbW92ZWQgdG8gdGhpcyBicm93c2VyJ3MgY2xvY2sgKHR6T2Zmc2V0KSwgc28gdGhlXHJcbiAgICogc2FtZSBVVEMgcmVhZCBzaG93cyB0aGVtIGluIGxvY2FsIHRpbWUuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBldmVudFRpbWUobG9nOiBhbnkpOiBkYXlqcy5EYXlqcyB8IG51bGwge1xyXG4gICAgcmV0dXJuIGxvZz8uYXQgPyBkYXlqcy51dGMobG9nLmF0KSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRvUm93KGxvZzogYW55KTogQWN0aXZpdHlSb3cge1xyXG4gICAgY29uc3QgYXQgPSB0aGlzLmV2ZW50VGltZShsb2cpO1xyXG4gICAgY29uc3QgYmFkZ2UgPSBBQ1RJT05fQkFER0VbdGhpcy5hY3Rpb25LZXkobG9nKV07XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuYW1lOiBsb2c/LmNoZWNrTGlzdE5hbWUgfHwgJ+KAlCcsXHJcbiAgICAgIGRldGFpbDogdGhpcy5hY3Rpb25EZXRhaWwobG9nKSxcclxuICAgICAgLy8gVW5rbm93biBsb2dnZWQgYWN0aW9ucyBrZWVwIHRoZSBBUEkncyBvd24gdGV4dC5cclxuICAgICAgYWN0aW9uOiBiYWRnZT8ubGFiZWwgfHwgU3RyaW5nKGxvZz8uYWN0aW9uIHx8ICfigJQnKSxcclxuICAgICAgdG9uZTogYmFkZ2U/LnRvbmUgfHwgJ2dyYXknLFxyXG4gICAgICBieTogbG9nPy51c2VyRW1haWwgfHwgbG9nPy51c2VyTmFtZSB8fCAn4oCUJyxcclxuICAgICAgc3RvcmU6IGxvZz8uc3RvcmVOYW1lIHx8ICfigJQnLFxyXG4gICAgICBkYXk6IGF0ID8gKGF0LmZvcm1hdCgnWVlZWS1NTS1ERCcpID09PSBkYXlqcygpLmZvcm1hdCgnWVlZWS1NTS1ERCcpID8gJ1RvZGF5JyA6IGF0LmZvcm1hdCgnREQgTU1NIFlZWVknKSkgOiAn4oCUJyxcclxuICAgICAgdGltZTogYXQgPyBhdC5mb3JtYXQoJ2hoIDogbW0gQScpIDogJ+KAlCcsXHJcbiAgICAgIC8vIFZpZXcgb3BlbnMgYSBzdWJtaXR0ZWQgYXVkaXQgKEF1ZGl0IHRhYikgb3IgdGFzayAoVGFzayB0YWIsIEdhbGxlcnkgVHlwZSBUYXNrKSBpbiB0aGUgR2FsbGVyeTsgYSBsb2dnZWRcclxuICAgICAgLy8gYXVkaXQgLyBzY2hlZHVsZSBhY3Rpb24gaGFzIG5vIHN1Ym1pc3Npb24gKHRoZSBBUEkgc2VuZHMgdmlld2FibGUgZmFsc2UgZm9yIHRob3NlKS5cclxuICAgICAgdmlld2FibGU6ICEhbG9nPy52aWV3YWJsZSAmJiBsb2c/LmtpbmQgIT09ICdsb2cnLFxyXG4gICAgICByYXc6IGxvZ1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKiBMb2dnZWQgcm93cyBjYXJyeSB0aGVpciBzdG9yZWQga2V5IGluIGFjdGl2aXR5VHlwZTsgdmlzaXQgcm93cyBvbmx5IGhhdmUgdGhlIGxhYmVsLiAqL1xyXG4gIHByaXZhdGUgYWN0aW9uS2V5KGxvZzogYW55KTogc3RyaW5nIHtcclxuICAgIGlmIChsb2c/LmtpbmQgPT09ICdsb2cnKSB7IHJldHVybiBTdHJpbmcobG9nPy5hY3Rpdml0eVR5cGUgfHwgJycpOyB9XHJcbiAgICByZXR1cm4gbG9nPy5hY3Rpb24gPT09ICdTdWJtaXR0ZWQgYnknID8gJ3N1Ym1pdCcgOiAnc3RhcnQnO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2hhdCB0aGUgQVBJIHVzZWQgdG8gZm9sZCBpbnRvIHRoZSBsYWJlbDogdGhlIHNjaGVkdWxlIGEgc2NoZWR1bGUgYWN0aW9uIHdhcyBvbiwgYW5kIHRoZSBjb3B5IGEgZHVwbGljYXRlXHJcbiAgICogbWFkZSAoYXVkaXQgYW5kIHNjaGVkdWxlIGR1cGxpY2F0ZXMgYm90aCBzdG9yZSBkZXRhaWxzLmNvcHlOYW1lKS5cclxuICAgKi9cclxuICBwcml2YXRlIGFjdGlvbkRldGFpbChsb2c6IGFueSk6IHN0cmluZyB7XHJcbiAgICBpZiAobG9nPy5raW5kICE9PSAnbG9nJykgeyByZXR1cm4gJyc7IH1cclxuICAgIGNvbnN0IHBhcnRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgaWYgKFN0cmluZyhsb2c/LmFjdGl2aXR5VHlwZSB8fCAnJykuc3RhcnRzV2l0aCgnc2NoZWR1bGUnKSAmJiBsb2c/LnNjaGVkdWxlTmFtZSkge1xyXG4gICAgICBwYXJ0cy5wdXNoKCdTY2hlZHVsZTogJyArIGxvZy5zY2hlZHVsZU5hbWUpO1xyXG4gICAgfVxyXG4gICAgaWYgKGxvZz8uZGV0YWlscz8uY29weU5hbWUpIHtcclxuICAgICAgcGFydHMucHVzaCgnQ29weTogJyArIGxvZy5kZXRhaWxzLmNvcHlOYW1lKTtcclxuICAgIH1cclxuICAgIC8vIEVkaXRlZDogd2hhdCB0aGUgZWRpdCBjaGFuZ2VkIChvbGRlciBlZGl0IHJvd3MgY2Fycnkgbm8gZGV0YWlscyBhbmQgc2hvdyBub25lKS5cclxuICAgIGlmIChsb2c/LmFjdGl2aXR5VHlwZSA9PT0gJ2VkaXRlZCcgJiYgbG9nPy5kZXRhaWxzKSB7XHJcbiAgICAgIGNvbnN0IGQgPSBsb2cuZGV0YWlscztcclxuICAgICAgY29uc3QgbiA9ICh2OiBhbnkpID0+IE51bWJlcih2KSB8fCAwO1xyXG4gICAgICBjb25zdCBxID0gKHY6IGFueSkgPT4gbih2KSArIChuKHYpID09PSAxID8gJyBxdWVzdGlvbicgOiAnIHF1ZXN0aW9ucycpO1xyXG4gICAgICBjb25zdCB3aGF0OiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICBpZiAobihkLnF1ZXN0aW9uc0FkZGVkKSkgeyB3aGF0LnB1c2gocShkLnF1ZXN0aW9uc0FkZGVkKSArICcgYWRkZWQnKTsgfVxyXG4gICAgICBpZiAobihkLnF1ZXN0aW9uc0VkaXRlZCkpIHsgd2hhdC5wdXNoKHEoZC5xdWVzdGlvbnNFZGl0ZWQpICsgJyBlZGl0ZWQnKTsgfVxyXG4gICAgICBpZiAobihkLnF1ZXN0aW9uc1JlbW92ZWQpKSB7IHdoYXQucHVzaChxKGQucXVlc3Rpb25zUmVtb3ZlZCkgKyAnIHJlbW92ZWQnKTsgfVxyXG4gICAgICBpZiAobihkLnNlY3Rpb25zUmVuYW1lZCkpIHsgd2hhdC5wdXNoKG4oZC5zZWN0aW9uc1JlbmFtZWQpICsgKG4oZC5zZWN0aW9uc1JlbmFtZWQpID09PSAxID8gJyBzZWN0aW9uJyA6ICcgc2VjdGlvbnMnKSArICcgcmVuYW1lZCcpOyB9XHJcbiAgICAgIGlmIChkLnJlbmFtZWRGcm9tKSB7IHdoYXQucHVzaCgncmVuYW1lZCBmcm9tIFwiJyArIGQucmVuYW1lZEZyb20gKyAnXCInKTsgfVxyXG4gICAgICBpZiAoZC5kZXNjcmlwdGlvbkNoYW5nZWQpIHsgd2hhdC5wdXNoKCdkZXNjcmlwdGlvbiBjaGFuZ2VkJyk7IH1cclxuICAgICAgcGFydHMucHVzaCh3aGF0Lmxlbmd0aCA/ICdFZGl0OiAnICsgd2hhdC5qb2luKCcsICcpIDogJ0VkaXQ6IHNhdmVkIHdpdGggbm8gcXVlc3Rpb24gY2hhbmdlcycpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBhcnRzLmpvaW4oJyDCtyAnKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZXAgbGluayBmb3IgXCJWaWV3XCI6IHRoZSBHYWxsZXJ5IHByZS1zZWxlY3RzIHRoaXMgYXVkaXQsIHN0b3JlIGFuZCB2aXNpdCBkYXkuIFRoZSBHYWxsZXJ5IGxpc3RzIHZpc2l0cyBieVxyXG4gICAqIHRoZWlyIG93biBkYXRlLCB3aGljaCBjYW4gYmUgZWFybGllciB0aGFuIHRoZSBzdWJtaXQgZGF5LCBzbyB0aGUgdmlzaXQncyBkYXRlX3N0cmluZyB3aW5zIHdoZW4gdGhlIEFQSSBzZW5kcyBpdC5cclxuICAgKi9cclxuICBnYWxsZXJ5UGFyYW1zKHJvdzogQWN0aXZpdHlSb3cpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIGNvbnN0IGxvZyA9IHJvdy5yYXcgfHwge307XHJcbiAgICBjb25zdCBhdCA9IHRoaXMuZXZlbnRUaW1lKGxvZyk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBhdWRpdDogU3RyaW5nKGxvZy5zb3VyY2VDaGVja0xpc3RfaWQgfHwgJycpLFxyXG4gICAgICBzdG9yZTogU3RyaW5nKGxvZy5zdG9yZUlkIHx8ICcnKSxcclxuICAgICAgZGF0ZTogbG9nLmRhdGVfc3RyaW5nID8gU3RyaW5nKGxvZy5kYXRlX3N0cmluZykgOiAoYXQgPyBhdC5mb3JtYXQoJ1lZWVktTU0tREQnKSA6ICcnKSxcclxuICAgICAgLy8gVGFzayB0YWIgcm93cyBhcmUgdGFzayBzdWJtaXNzaW9uczogdGhlIEdhbGxlcnkgb3BlbnMgd2l0aCBUeXBlIFRhc2suXHJcbiAgICAgIC4uLih0aGlzLnRhYiA9PT0gJ1Rhc2snID8geyB0eXBlOiAndGFzaycgfSA6IHt9KVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZm10KHZhbHVlOiBhbnksIHBhdHRlcm46IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdmFsdWUgPyBkYXlqcyh2YWx1ZSkuZm9ybWF0KHBhdHRlcm4pIDogJ+KAlCc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkQ29sdW1ucygpOiBBcHByb3ZhbENvbHVtbltdIHtcclxuICAgIGNvbnN0IG5vdW4gPSB0aGlzLmFwcHJvdmFsU2NvcGUgPT09ICdUYXNrJyA/ICdUYXNrJyA6ICdBdWRpdCc7XHJcbiAgICByZXR1cm4gW1xyXG4gICAgICB7IGtleTogJ29wZW4nLCB0aXRsZTogJ09wZW4nLCBlbXB0eTogJ1RoZXJlIGlzIG5vIHJlc3VsdCBmb3IgT3BlbiAnICsgbm91biwgY2FyZHM6IFtdIH0sXHJcbiAgICAgIHsga2V5OiAnaW5wcm9ncmVzcycsIHRpdGxlOiAnSW5wcm9ncmVzcycsIGVtcHR5OiAnVGhlcmUgaXMgbm8gcmVzdWx0IGZvciBJbnByb2dyZXNzICcgKyBub3VuLCBjYXJkczogW10gfSxcclxuICAgICAgeyBrZXk6ICdhcHByb3ZlZCcsIHRpdGxlOiAnQXBwcm92ZWQnLCBlbXB0eTogJ1RoZXJlIGlzIG5vIHJlc3VsdCBmb3IgQXBwcm92ZWQgJyArIG5vdW4sIGNhcmRzOiBbXSB9XHJcbiAgICBdO1xyXG4gIH1cclxuXHJcbiAgc2V0VGFiKHRhYjogQWN0aW9uVGFiKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy50YWIgPT09IHRhYikgeyByZXR1cm47IH1cclxuICAgIHRoaXMudGFiID0gdGFiO1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcbiAgICB0aGlzLmxvYWRBY3Rpdml0eSgpO1xyXG4gIH1cclxuXHJcbiAgb25BcHByb3ZhbFNjb3BlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2FkQXBwcm92YWxzKCk7XHJcbiAgfVxyXG5cclxuICBvbkFwcHJvdmFsU2NvcGVTZWxlY3QoaXRlbTogeyBpZDogc3RyaW5nIH0gfCB1bmRlZmluZWQpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5leHQgPSBpdGVtPy5pZDtcclxuICAgIGlmICghbmV4dCB8fCBuZXh0ID09PSB0aGlzLmFwcHJvdmFsU2NvcGUpIHsgcmV0dXJuOyB9XHJcbiAgICB0aGlzLmFwcHJvdmFsU2NvcGUgPSBuZXh0O1xyXG4gICAgdGhpcy5hcHByb3ZhbFNjb3BlU2VsZWN0ZWQgPSB0aGlzLmFwcHJvdmFsU2NvcGVJdGVtcy5maW5kKChpKSA9PiBpLmlkID09PSBuZXh0KSB8fCB0aGlzLmFwcHJvdmFsU2NvcGVJdGVtc1swXTtcclxuICAgIHRoaXMubG9hZEFwcHJvdmFscygpO1xyXG4gIH1cclxuXHJcbiAgb25BY3Rpdml0eURhdGVDaGFuZ2UoZXZlbnQ6IHsgc3RhcnREYXRlPzogc3RyaW5nOyBlbmREYXRlPzogc3RyaW5nIH0pOiB2b2lkIHtcclxuICAgIGlmICghZXZlbnQ/LnN0YXJ0RGF0ZSB8fCAhZXZlbnQ/LmVuZERhdGUpIHsgcmV0dXJuOyB9XHJcbiAgICB0aGlzLmFjdGl2aXR5UmFuZ2UgPSB7IHN0YXJ0RGF0ZTogZXZlbnQuc3RhcnREYXRlLCBlbmREYXRlOiBldmVudC5lbmREYXRlIH07XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuICAgIHRoaXMubG9hZEFjdGl2aXR5KCk7XHJcbiAgfVxyXG5cclxuICBvbkFjdGl2aXR5RmlsdGVycyhldmVudDogYW55W10pOiB2b2lkIHtcclxuICAgIGNvbnN0IGFjdGlvbnMgPSAoZXZlbnQgfHwgW10pLmZpbmQoKGY6IGFueSkgPT4gZj8uRGVzY3JpcHRpb24gPT09ICdBY3Rpb25zJyk7XHJcbiAgICB0aGlzLmFjdGlvbnNCeVRhYlt0aGlzLnRhYl0gPSAoYWN0aW9ucz8uSXNzdWVzIHx8IFtdKS5tYXAoKGk6IGFueSkgPT4gaS5pZCk7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuICAgIHRoaXMubG9hZEFjdGl2aXR5KCk7XHJcbiAgfVxyXG5cclxuICBvbkFwcHJvdmFsU2VhcmNoKCk6IHZvaWQge1xyXG4gICAgdGhpcy5hcHByb3ZhbFNlYXJjaCQubmV4dCh0aGlzLmFwcHJvdmFsU2VhcmNoKTtcclxuICB9XHJcblxyXG4gIG9uU2VhcmNoKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWFyY2gkLm5leHQodGhpcy5zZWFyY2gpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG5hbWVMYWJlbCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudGFiID09PSAnVGFzaycgPyAnVGFzayBOYW1lJyA6ICdBdWRpdCBOYW1lJztcclxuICB9XHJcblxyXG4gIGdldCBzZWFyY2hIaW50KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy50YWIgPT09ICdUYXNrJyA/ICdTZWFyY2ggd2l0aCBTdG9yZSwgRW1haWwsIFRhc2snIDogJ1NlYXJjaCB3aXRoIFN0b3JlLCBFbWFpbCwgQXVkaXQnO1xyXG4gIH1cclxuXHJcbiAgLyoqIFNlYXJjaCBhbmQgcGFnaW5nIGFyZSBzZXJ2ZXItc2lkZTsgdGhlIHBhZ2Ugd2UgaG9sZCBpcyB0aGUgcGFnZSB3ZSBzaG93LiAqL1xyXG4gIGdldCBmaWx0ZXJlZFJvd3MoKTogQWN0aXZpdHlSb3dbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5yb3dzO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHBhZ2VSb3dzKCk6IEFjdGl2aXR5Um93W10ge1xyXG4gICAgcmV0dXJuIHRoaXMucm93cztcclxuICB9XHJcblxyXG4gIG9uUGFnZUNoYW5nZShwYWdlOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSBwYWdlO1xyXG4gICAgdGhpcy5sb2FkQWN0aXZpdHkoKTtcclxuICB9XHJcblxyXG4gIC8qKiBSb3dzIHBlciBwYWdlICgxMCAvIDIwIC8gMzApIGZyb20gdGhlIHBhZ2VyJ3Mgc2l6ZSBkcm9wZG93bjsgYmFjayB0byBwYWdlIDEuICovXHJcbiAgb25QYWdlU2l6ZUNoYW5nZShzaXplOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuaXRlbXNQZXJQYWdlID0gTnVtYmVyKHNpemUpIHx8IDEwO1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcbiAgICB0aGlzLmxvYWRBY3Rpdml0eSgpO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeVJvdyhpbmRleDogbnVtYmVyLCByb3c6IEFjdGl2aXR5Um93KTogc3RyaW5nIHtcclxuICAgIHJldHVybiAocm93LnJhdz8ucHJvY2Vzc2VkQ2hlY2tsaXN0SWQgfHwgcm93LnJhdz8ubG9nSWQgfHwgcm93LnN0b3JlKSArIHJvdy5hY3Rpb24gKyBpbmRleDtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlDb2x1bW4oXzogbnVtYmVyLCBjb2w6IEFwcHJvdmFsQ29sdW1uKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBjb2wua2V5O1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiYXYyLXBhZ2VcIj5cclxuXHJcbiAgPCEtLSBXYWl0aW5nIGZvciBhcHByb3ZhbCAtLT5cclxuICA8ZGl2IGNsYXNzPVwiYXYyLWdyaWQtMlwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImF2Mi1zdGF0LWNhcmRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImF2Mi1zdGF0XCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJhdjItc2sgYXYyLXNrLS12YWx1ZSBhYy1zay12YWx1ZVwiICpuZ0lmPVwiY2FyZHNMb2FkaW5nXCI+PC9zcGFuPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYXYyLXN0YXQtdmFsdWVcIiAqbmdJZj1cIiFjYXJkc0xvYWRpbmdcIj57eyBhdWRpdFdhaXRpbmcgfX08L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJhdjItc3RhdC1sYWJlbFwiPkF1ZGl0IHdhaXRpbmcgZm9yIGFwcHJvdmFsPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImF2Mi1zdGF0LWNhcmRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImF2Mi1zdGF0XCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJhdjItc2sgYXYyLXNrLS12YWx1ZSBhYy1zay12YWx1ZVwiICpuZ0lmPVwiY2FyZHNMb2FkaW5nXCI+PC9zcGFuPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYXYyLXN0YXQtdmFsdWVcIiAqbmdJZj1cIiFjYXJkc0xvYWRpbmdcIj57eyB0YXNrV2FpdGluZyB9fTwvc3Bhbj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImF2Mi1zdGF0LWxhYmVsXCI+VGFzayB3YWl0aW5nIGZvciBhcHByb3ZhbDwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBBcHByb3ZhbCAtLT5cclxuICA8c2VjdGlvbiBjbGFzcz1cImF2Mi1jYXJkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXYyLWNhcmQtaGVhZFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYXYyLXRpdGxlLWJsb2NrXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImF2Mi1jYXJkLXRpdGxlXCI+QXBwcm92YWw8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXYyLWNhcmQtc3ViXCI+QSBzdW1tYXJ5IG9mIGFsbCB0aGUgYXVkaXRzIGF3YWl0aW5nIGFwcHJvdmFsPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwiYXYyLXNlYXJjaCBhdjItc2VhcmNoLS1tZFwiPlxyXG4gICAgICAgIDxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCI+XHJcbiAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTFcIiBjeT1cIjExXCIgcj1cIjdcIj48L2NpcmNsZT5cclxuICAgICAgICAgIDxsaW5lIHgxPVwiMTYuNVwiIHkxPVwiMTYuNVwiIHgyPVwiMjFcIiB5Mj1cIjIxXCI+PC9saW5lPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDxpbnB1dCBbKG5nTW9kZWwpXT1cImFwcHJvdmFsU2VhcmNoXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25BcHByb3ZhbFNlYXJjaCgpXCIgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIC8+XHJcbiAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYXBwcm92YWwtc2NvcGUtc2VsZWN0XCI+XHJcbiAgICAgICAgPGxpYi1zZWxlY3QgW2l0ZW1zXT1cImFwcHJvdmFsU2NvcGVJdGVtc1wiIFttdWx0aV09XCJmYWxzZVwiIFtzZWFyY2hGaWVsZF09XCInbGFiZWwnXCIgW2lkRmllbGRdPVwiJ2lkJ1wiXHJcbiAgICAgICAgICBbc2VsZWN0ZWRWYWx1ZXNdPVwiW2FwcHJvdmFsU2NvcGVTZWxlY3RlZF1cIiAoc2VsZWN0ZWQpPVwib25BcHByb3ZhbFNjb3BlU2VsZWN0KCRldmVudClcIj48L2xpYi1zZWxlY3Q+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImF2Mi1ncmlkLTNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImFwcHJvdmFsLWNvbFwiICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uczsgdHJhY2tCeTogdHJhY2tCeUNvbHVtblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhdjItY29sLWhlYWRcIj5cclxuICAgICAgICAgIHt7IGNvbC50aXRsZSB9fVxyXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCIhYXBwcm92YWxzTG9hZGluZyAmJiBjb2wuY2FyZHMubGVuZ3RoXCIgY2xhc3M9XCJhdjItYmFkZ2UgYXYyLWJhZGdlLS1jb3VudFwiPnt7IGNvbC5jYXJkcy5sZW5ndGggfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxsaWItYXVkaXQtdjItc2hpbW1lciAqbmdJZj1cImFwcHJvdmFsc0xvYWRpbmdcIiBbcm93c109XCIyXCI+PC9saWItYXVkaXQtdjItc2hpbW1lcj5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIiFhcHByb3ZhbHNMb2FkaW5nICYmIGNvbC5jYXJkcy5sZW5ndGhcIiBjbGFzcz1cImFwcHJvdmFsLWNhcmRzXCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjYXJkIG9mIGNvbC5jYXJkc1wiIGNsYXNzPVwiYXBwcm92YWwtY2FyZFwiIFtjbGFzcy5hcHByb3ZhbC1jYXJkLS1vZmZdPVwiIWNhcmQubGlua1wiXHJcbiAgICAgICAgICAgIFthdHRyLnJvbGVdPVwiY2FyZC5saW5rID8gJ2xpbmsnIDogbnVsbFwiIFthdHRyLnRhYmluZGV4XT1cImNhcmQubGluayA/IDAgOiBudWxsXCIgW2F0dHIudGl0bGVdPVwiY2FyZC5oaW50IHx8IG51bGxcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlbkNhcmQoY2FyZClcIiAoa2V5ZG93bi5lbnRlcik9XCJvcGVuQ2FyZChjYXJkKVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwcm92YWwtY2FyZC1iYWRnZXNcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF2Mi1iYWRnZSBhdjItYmFkZ2UtLXB1cnBsZSBhdjItYmFkZ2UtLWNvdW50XCI+e3sgY2FyZC50eXBlTGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjYXJkLnJlZG9cIiBjbGFzcz1cImF2Mi1iYWRnZSBhdjItYmFkZ2UtLXdhcm5pbmcgYXYyLWJhZGdlLS1jb3VudFwiPlJlZG88L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwcm92YWwtY2FyZC1uYW1lXCI+e3sgY2FyZC5uYW1lIH19PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHByb3ZhbC1jYXJkLW1ldGFcIj5cclxuICAgICAgICAgICAgICA8c3Bhbj57eyBjYXJkLnN0b3JlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY2FyZC5zdWJtaXR0ZWRMYWJlbFwiPnt7IGNhcmQuc3VibWl0dGVkTGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4+e3sgY2FyZC5ieSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHByb3ZhbC1jYXJkLWZvb3RcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFwcHJvdmFsLWNhcmQtZGF0ZVwiPnt7IGNhcmQud2hlbiB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNhcmQuYXBwcm92ZWRMYWJlbFwiIGNsYXNzPVwiYXYyLWJhZGdlIGF2Mi1iYWRnZS0tc3VjY2VzcyBhdjItYmFkZ2UtLWNvdW50XCI+e3sgY2FyZC5hcHByb3ZlZExhYmVsIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWFwcHJvdmFsc0xvYWRpbmcgJiYgIWNvbC5jYXJkcy5sZW5ndGhcIiBjbGFzcz1cImF2Mi1lbXB0eVwiPlxyXG4gICAgICAgICAgPGltZyBjbGFzcz1cImF2Mi1lbXB0eS1pbWdcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF2Mi1lbXB0eS10ZXh0XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdjItZW1wdHktdGl0bGVcIj5ObyBkYXRhIGZvdW5kPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdjItZW1wdHktc3ViXCI+e3sgY29sLmVtcHR5IH19PC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L3NlY3Rpb24+XHJcblxyXG4gIDwhLS0gQWN0aXZpdHkgTG9nIC0tPlxyXG4gIDxzZWN0aW9uIGNsYXNzPVwiYXYyLWNhcmQgYXYyLWNhcmQtLWxvZ1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImF2Mi1jYXJkLWhlYWQgYXYyLWNhcmQtaGVhZC0tY2VudGVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJhdjItY2FyZC10aXRsZSBhdjItY2FyZC10aXRsZS0tZ3Jvd1wiPkFjdGl2aXR5IExvZzwvZGl2PlxyXG5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwiYXYyLXNlYXJjaCBhdjItc2VhcmNoLS1sZ1wiPlxyXG4gICAgICAgIDxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCI+XHJcbiAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTFcIiBjeT1cIjExXCIgcj1cIjdcIj48L2NpcmNsZT5cclxuICAgICAgICAgIDxsaW5lIHgxPVwiMTYuNVwiIHkxPVwiMTYuNVwiIHgyPVwiMjFcIiB5Mj1cIjIxXCI+PC9saW5lPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDxpbnB1dCBbKG5nTW9kZWwpXT1cInNlYXJjaFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uU2VhcmNoKClcIiB0eXBlPVwidGV4dFwiIFtwbGFjZWhvbGRlcl09XCJzZWFyY2hIaW50XCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgLz5cclxuICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJsb2ctZGF0ZS1waWNrZXJcIj5cclxuICAgICAgICA8bGliLWRhdGUtcmFuZ2UtcGlja2VyIFtyYW5nZV09XCJhY3Rpdml0eVJhbmdlXCIgKGRhdGVDaGFuZ2UpPVwib25BY3Rpdml0eURhdGVDaGFuZ2UoJGV2ZW50KVwiPjwvbGliLWRhdGUtcmFuZ2UtcGlja2VyPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gT25lIGZpbHRlciBwZXIgdGFiIChsaWItZmlsdGVycyByZWFkcyBpdHMgb3B0aW9ucyBvbmNlKTsgZWFjaCBrZWVwcyBpdHMgb3duIHNlbGVjdGlvbi4gLS0+XHJcbiAgICAgIDxsaWItZmlsdGVycyAqbmdJZj1cInRhYiA9PT0gJ0F1ZGl0J1wiIFtkYXRhT2JqZWN0XT1cImFjdGl2aXR5RmlsdGVyRGF0YS5BdWRpdFwiIChhcHBsaWVkRmlsdGVycyk9XCJvbkFjdGl2aXR5RmlsdGVycygkZXZlbnQpXCI+PC9saWItZmlsdGVycz5cclxuICAgICAgPGxpYi1maWx0ZXJzICpuZ0lmPVwidGFiID09PSAnVGFzaydcIiBbZGF0YU9iamVjdF09XCJhY3Rpdml0eUZpbHRlckRhdGEuVGFza1wiIChhcHBsaWVkRmlsdGVycyk9XCJvbkFjdGl2aXR5RmlsdGVycygkZXZlbnQpXCI+PC9saWItZmlsdGVycz5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gQXVkaXQgLyBUYXNrIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImF2Mi10YWJzXCI+XHJcbiAgICAgIDxidXR0b24gKm5nRm9yPVwibGV0IHQgb2YgdGFic1wiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImF2Mi10YWJcIiBbY2xhc3MuaXMtYWN0aXZlXT1cInRhYiA9PT0gdFwiXHJcbiAgICAgICAgKGNsaWNrKT1cInNldFRhYih0KVwiPnt7IHQgfX08L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxsaWItYXVkaXQtdjItc2hpbW1lciAqbmdJZj1cImxvZ0xvYWRpbmdcIj48L2xpYi1hdWRpdC12Mi1zaGltbWVyPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJhdjItdGFibGUtd3JhcFwiICpuZ0lmPVwiIWxvZ0xvYWRpbmdcIj5cclxuICAgICAgPHRhYmxlIGNsYXNzPVwiYXYyLXRhYmxlIGxvZy10YWJsZVwiPlxyXG4gICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgPHRoIGNsYXNzPVwiYXYyLXNvcnRhYmxlXCIgKGNsaWNrKT1cInNvcnRMb2coJ2RhdGUnKVwiPkRhdGUgJmFtcDsgVGltZSA8bGliLWF1ZGl0LXYyLXNvcnQtaWNvbiBbYWN0aXZlXT1cImxvZ1NvcnRLZXkgPT09ICdkYXRlJ1wiIFtkaXJdPVwibG9nU29ydEJ5ID09PSAxID8gJ2FzYycgOiAnZGVzYydcIj48L2xpYi1hdWRpdC12Mi1zb3J0LWljb24+PC90aD5cclxuICAgICAgICAgICAgPHRoIGNsYXNzPVwiYXYyLXNvcnRhYmxlXCIgKGNsaWNrKT1cInNvcnRMb2coJ25hbWUnKVwiPnt7IG5hbWVMYWJlbCB9fSA8bGliLWF1ZGl0LXYyLXNvcnQtaWNvbiBbYWN0aXZlXT1cImxvZ1NvcnRLZXkgPT09ICduYW1lJ1wiIFtkaXJdPVwibG9nU29ydEJ5ID09PSAxID8gJ2FzYycgOiAnZGVzYydcIj48L2xpYi1hdWRpdC12Mi1zb3J0LWljb24+PC90aD5cclxuICAgICAgICAgICAgPHRoIGNsYXNzPVwiYXYyLXNvcnRhYmxlXCIgKGNsaWNrKT1cInNvcnRMb2coJ2FjdGlvbicpXCI+QWN0aW9uIFBlcmZvcm1lZCA8bGliLWF1ZGl0LXYyLXNvcnQtaWNvbiBbYWN0aXZlXT1cImxvZ1NvcnRLZXkgPT09ICdhY3Rpb24nXCIgW2Rpcl09XCJsb2dTb3J0QnkgPT09IDEgPyAnYXNjJyA6ICdkZXNjJ1wiPjwvbGliLWF1ZGl0LXYyLXNvcnQtaWNvbj48L3RoPlxyXG4gICAgICAgICAgICA8dGggY2xhc3M9XCJhdjItc29ydGFibGVcIiAoY2xpY2spPVwic29ydExvZygnYnknKVwiPlBlcmZvcm1lZCBieSA8bGliLWF1ZGl0LXYyLXNvcnQtaWNvbiBbYWN0aXZlXT1cImxvZ1NvcnRLZXkgPT09ICdieSdcIiBbZGlyXT1cImxvZ1NvcnRCeSA9PT0gMSA/ICdhc2MnIDogJ2Rlc2MnXCI+PC9saWItYXVkaXQtdjItc29ydC1pY29uPjwvdGg+XHJcbiAgICAgICAgICAgIDx0aCBjbGFzcz1cImF2Mi1zb3J0YWJsZVwiIChjbGljayk9XCJzb3J0TG9nKCdzdG9yZScpXCI+TmFtZSA8bGliLWF1ZGl0LXYyLXNvcnQtaWNvbiBbYWN0aXZlXT1cImxvZ1NvcnRLZXkgPT09ICdzdG9yZSdcIiBbZGlyXT1cImxvZ1NvcnRCeSA9PT0gMSA/ICdhc2MnIDogJ2Rlc2MnXCI+PC9saWItYXVkaXQtdjItc29ydC1pY29uPjwvdGg+XHJcbiAgICAgICAgICAgIDx0aD5BY3Rpb25zPC90aD5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC90aGVhZD5cclxuICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHJvdyBvZiBwYWdlUm93czsgdHJhY2tCeTogdHJhY2tCeVJvd1wiPlxyXG4gICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2Mi1jZWxsLXN0YWNrXCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57eyByb3cuZGF5IH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhdjItbXV0ZWRcIj57eyByb3cudGltZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdjItY2VsbC1zdGFjayBsb2ctbmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhdjItZWxsaXBzaXNcIiBbYXYyVGlwXT1cInJvdy5uYW1lXCI+e3sgcm93Lm5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJvdy5kZXRhaWxcIiBjbGFzcz1cImF2Mi1tdXRlZCBhdjItZWxsaXBzaXNcIiBbYXYyVGlwXT1cInJvdy5kZXRhaWxcIj57eyByb3cuZGV0YWlsIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8dGQ+PHNwYW4gY2xhc3M9XCJhdjItYmFkZ2UgYWN0aXZpdHktYWN0aW9uXCIgW25nQ2xhc3NdPVwicm93LnRvbmUgPT09ICdwcmltYXJ5JyA/ICcnIDogJ2F2Mi1iYWRnZS0tJyArIHJvdy50b25lXCJcclxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCJyb3cuYWN0aW9uICsgJyAnICsgcm93LmJ5XCI+e3sgcm93LmFjdGlvbiB9fTwvc3Bhbj48L3RkPlxyXG4gICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2Mi1jZWxsLWljb24gYXYyLWRpbVwiPlxyXG4gICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE1XCIgaGVpZ2h0PVwiMTVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjhcIlxyXG4gICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj5cclxuICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCI4XCIgcj1cIjMuNFwiPjwvY2lyY2xlPlxyXG4gICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTUgMjBjMC0zLjYgMy4xLTUuNiA3LTUuNnM3IDIgNyA1LjZcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHJvdy5ieSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdjItY2VsbC1pY29uIHN0b3JlLWNlbGxcIj5cclxuICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNVwiIGhlaWdodD1cIjE1XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS44XCJcclxuICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMyA5bDEuNi00LjVoMTQuOEwyMSA5XCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTQgOXYxMWgxNlY5XCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkgMjB2LTZoNnY2XCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57eyByb3cuc3RvcmUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICA8YSAqbmdJZj1cInJvdy52aWV3YWJsZVwiIGNsYXNzPVwiYXYyLWxpbmtcIiByb3V0ZXJMaW5rPVwiL21hbmFnZS90cmF4L2F1ZGl0LXYyL2dhbGxlcnlcIlxyXG4gICAgICAgICAgICAgICAgW3F1ZXJ5UGFyYW1zXT1cImdhbGxlcnlQYXJhbXMocm93KVwiIHRpdGxlPVwiT3BlbiB0aGlzIHN1Ym1pc3Npb24gaW4gdGhlIEdhbGxlcnlcIj5WaWV3PC9hPlxyXG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXJvdy52aWV3YWJsZVwiIGNsYXNzPVwiYXYyLWZhaW50XCI+LTwvc3Bhbj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC90Ym9keT5cclxuICAgICAgPC90YWJsZT5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCIhbG9nTG9hZGluZyAmJiAhZmlsdGVyZWRSb3dzLmxlbmd0aFwiIGNsYXNzPVwiYXYyLWVtcHR5XCI+XHJcbiAgICAgIDxpbWcgY2xhc3M9XCJhdjItZW1wdHktaW1nXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImF2Mi1lbXB0eS10ZXh0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImF2Mi1lbXB0eS10aXRsZVwiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXYyLWVtcHR5LXN1YlwiPlRoZXJlIGlzIG5vIHJlc3VsdCBmb3Ige3sgdGFiIH19PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cIiFsb2dMb2FkaW5nICYmIGZpbHRlcmVkUm93cy5sZW5ndGhcIiBjbGFzcz1cImxvZy1wYWdpbmF0aW9uXCI+XHJcbiAgICAgIDxsaWItcGFnaW5hdGlvbiBbaXRlbXNQZXJQYWdlXT1cIml0ZW1zUGVyUGFnZVwiIFtwYWdlU2l6ZV09XCJpdGVtc1BlclBhZ2VcIiBbcGFnaW5hdGlvblNpemVzXT1cInBhZ2VTaXplc1wiIFtjdXJyZW50UGFnZV09XCJjdXJyZW50UGFnZVwiIFt0b3RhbEl0ZW1zXT1cInRvdGFsSXRlbXNcIlxyXG4gICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCIgKHBhZ2VTaXplQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiPjwvbGliLXBhZ2luYXRpb24+XHJcbiAgICA8L2Rpdj5cclxuICA8L3NlY3Rpb24+XHJcblxyXG48L2Rpdj5cclxuIl19
|