gamma-app-controller 1.0.9 → 1.1.1
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/esm2020/lib/application-controller/application-controller.module.mjs +14 -5
- package/esm2020/lib/application-controller/application-dataset-call.service.mjs +3 -3
- package/esm2020/lib/application-controller/application-dataset-component/create-dataset/create-dataset.component.mjs +7 -7
- package/esm2020/lib/application-controller/application-dataset-component/dataset-query-bulder/dataset-query-bulder.component.mjs +4 -3
- package/esm2020/lib/application-controller/application-filter/application-filter.component.mjs +2 -2
- package/esm2020/lib/application-controller/application-view-components/create-comp-view/create-comp-view.component.mjs +1 -7
- package/esm2020/lib/application-controller/page-controller/page-config/page-config.component.mjs +5 -3
- package/esm2020/lib/application-controller/page-controller/page-config-multi-layout/page-config-multi-layout.component.mjs +984 -0
- package/esm2020/lib/application-controller/page-controller/page-controller/page-controller.component.mjs +9 -2
- package/esm2020/lib/application-controller/shared/advanced-component/app-advance-header/app-header.component.mjs +23 -6
- package/esm2020/lib/application-controller/shared/advanced-component/gamma-table-with-percentage/gamma-table-with-percentage.component.mjs +101 -127
- package/esm2020/lib/application-controller/support-components/dash-table/dash-table.component.mjs +3 -3
- package/esm2020/lib/application-controller/support-components/table-with-bar/table-with-bar.component.mjs +2 -1
- package/esm2020/public-api.mjs +4 -1
- package/fesm2015/gamma-app-controller.mjs +1137 -182
- package/fesm2015/gamma-app-controller.mjs.map +1 -1
- package/fesm2020/gamma-app-controller.mjs +1135 -182
- package/fesm2020/gamma-app-controller.mjs.map +1 -1
- package/lib/application-controller/application-controller.module.d.ts +12 -11
- package/lib/application-controller/page-controller/page-config/page-config.component.d.ts +1 -1
- package/lib/application-controller/page-controller/page-config-multi-layout/page-config-multi-layout.component.d.ts +190 -0
- package/lib/application-controller/shared/advanced-component/app-advance-header/app-header.component.d.ts +3 -1
- package/lib/application-controller/shared/advanced-component/gamma-table-with-percentage/gamma-table-with-percentage.component.d.ts +15 -12
- package/package.json +1 -1
- package/public-api.d.ts +3 -0
|
@@ -158,10 +158,11 @@ export class DatasetQueryBulderComponent {
|
|
|
158
158
|
'deriveField': true
|
|
159
159
|
};
|
|
160
160
|
this.queryBulderDataset.queryConfig.columns.push(node);
|
|
161
|
-
console.log(columeString);
|
|
162
161
|
}
|
|
163
162
|
else if (element.reconType == "percentage") {
|
|
164
|
-
let columeString =
|
|
163
|
+
let columeString = `{ '$cond': {'if': {'$and': [{ '$eq': ['$${element.columeOne}', 0] }, { '$eq': ['$${element.columeTwo}', 0] } ] }, 'then': 0, 'else': {'$divide':
|
|
164
|
+
[{ '$abs': { '$subtract': ['$${element.columeOne}', '$${element.columeTwo}'] } }, { '$max': ['$${element.columeOne}', '$${element.columeTwo}'] } ] } } }
|
|
165
|
+
`;
|
|
165
166
|
let node = {
|
|
166
167
|
"measures": true,
|
|
167
168
|
"dataField": element.dataField,
|
|
@@ -406,4 +407,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
406
407
|
type: Input,
|
|
407
408
|
args: ['bulderDataset']
|
|
408
409
|
}] } });
|
|
409
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXNldC1xdWVyeS1idWxkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLWRhdGFzZXQtY29tcG9uZW50L2RhdGFzZXQtcXVlcnktYnVsZGVyL2RhdGFzZXQtcXVlcnktYnVsZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9hcHBsaWNhdGlvbi1kYXRhc2V0LWNvbXBvbmVudC9kYXRhc2V0LXF1ZXJ5LWJ1bGRlci9kYXRhc2V0LXF1ZXJ5LWJ1bGRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7O0FBVS9FLE1BQU0sT0FBTywyQkFBMkI7SUEwRnRDLFlBQW1CLGFBQTRCLEVBQVUsTUFBcUIsRUFBVSxPQUFrQztRQUF2RyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQWU7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUEyQjtRQXZGMUgsd0JBQW1CLEdBQVEsRUFBRSxDQUFDO1FBQzlCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLHdCQUFtQixHQUFRLEVBQUUsQ0FBQztRQUM5QixpQkFBWSxHQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQTtRQUNyRixpQkFBWSxHQUFRLENBQUMs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OlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xuaW1wb3J0IHsgQXBwbGljYXRpb25Db250ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcGxpY2F0aW9uLWNvbnRlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWRhdGFzZXQtcXVlcnktYnVsZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGFzZXQtcXVlcnktYnVsZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0YXNldC1xdWVyeS1idWxkZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRhc2V0UXVlcnlCdWxkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIC8vIEBJbnB1dCgpIHF1ZXJ5QnVsZGVyRGF0YXNldDogYW55O1xuICByZXFGaWVsZHNEYXRhU291cmNlOiBhbnkgPSBbXTtcbiAgaXNyZXFGaWVsZHM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNjZHJQYXJhbXM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgY2RyRmllbGRzRGF0YVNvdXJjZTogYW55ID0gW107XG4gIGtwaV9mdW5jdGlvbjogYW55ID0gW1wic3VtXCIsIFwiY291bnRcIiwgXCJhdmdcIiwgXCJtYXhcIiwgXCJtaW5cIiwgXCJzdGRkZXZcIiwgXCJjb3VudF9kaXN0aW5jdFwiXVxuICBrcGlfb3BlcmF0b3I6IGFueSA9IFtcImVxXCIsIFwiZ3RlXCIsIFwibHRlXCIsIFwibmVcIiwgXCJpblwiLCBcIm5vdEluXCIsIFwiY29udGFpbnNcIiwgXCJzdGFydHNXaXRoXCIsIFwiZW5kc1dpdGhcIl1cbiAga3BpX2VucmljaG1lbnRfbmFtZTogYW55ID0gW107XG4gIHJlcVNob3J0RGF0YVNvdXJjZTogYW55ID0gW107XG4gIGZpbHRlck1hcGluZ0RhdGFzb3VyY2U6IGFueSA9IFtdO1xuICBxdWVyeV9kYXRhOiBhbnk7XG4gIGlzTW9kZWxWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIGlzU3FsQ29waWVkVGV4dDogYm9vbGVhbiA9IGZhbHNlO1xuICBxdWVyeUJ1bGRlckRhdGFzZXQ6IGFueTtcbiAgaXNSZWNvbkNvbHVtZTogYm9vbGVhbiA9IGZhbHNlO1xuICBAT3V0cHV0KCkgcHVibGljIGdldFF1ZXJ5QnVsYmRlckRhdGFTZXQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHJlY29uQ29sdW1lRGF0YXNvdXJjZSA9IFtdO1xuXG4gIHNlbGVjdGVkRGF0YVNvdXJjZTogYW55O1xuICBpc1F1ZXJ5VHlwZVNlbGVjdDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgnYnVsZGVyRGF0YXNldCcpXG4gIHNldCBidWxkZXJEYXRhc2V0KHZhbHVlKSB7XG5cbiAgICBpZiAodmFsdWUucXVlcnlDb25maWcucmVxRmllbGRzICYmIHZhbHVlLnF1ZXJ5Q29uZmlnLnJlcUZpZWxkcy5sZW5ndGggPCAyKSB7XG4gICAgICB0aGlzLnJlcUZpZWxkc0RhdGFTb3VyY2UgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBcIm5hbWVcIjogXCJwYWdlTnVtYmVyXCIsXG4gICAgICAgICAgXCJ2YWx1ZVwiOiAxLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCJuYW1lXCI6IFwicGFnZVNpemVcIixcbiAgICAgICAgICBcInZhbHVlXCI6IDIwMTAsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIm5hbWVcIjogXCJkYkNvbmZpZ1wiLFxuICAgICAgICAgIFwidmFsdWVcIjogXCJcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwibmFtZVwiOiBcImRhdGFiYXNlTmFtZVwiLFxuICAgICAgICAgIFwidmFsdWVcIjogXCJcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwibmFtZVwiOiBcInRhYmxlTmFtZVwiLFxuICAgICAgICAgIFwidmFsdWVcIjogXCJcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwibmFtZVwiOiBcInBhZ2luYXRpb25SZXF1aXJlZFwiLFxuICAgICAgICAgIFwidmFsdWVcIjogXCJmYWxzZVwiLFxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVxRmllbGRzRGF0YVNvdXJjZSA9IHRoaXMucHJvY2Vzc1BhcmFtc2Zvcm1hdERhdGEodmFsdWUucXVlcnlDb25maWcucmVxRmllbGRzKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRhU291cmNlID0gdmFsdWUucXVlcnlDb25maWcucmVxRmllbGRzLmZpbmQoaXRlbSA9PiBpdGVtLmRiQ29uZmlnICE9PSB1bmRlZmluZWQpPy5kYkNvbmZpZztcbiAgICAgIHRoaXMuaXNRdWVyeVR5cGVTZWxlY3QgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAodmFsdWUucXVlcnlDb25maWcubWFwZWRGaWx0ZXJzID09IHVuZGVmaW5lZCkge1xuICAgICAgdmFsdWUucXVlcnlDb25maWcubWFwZWRGaWx0ZXJzID0gW107XG4gICAgICB2YWx1ZS5xdWVyeUNvbmZpZy5tYXBlZEZpbHRlcnMucHVzaCh7IFwibG9jYWxDb2x1bW5cIjogXCJcIiwgXCJzZXJ2ZXJDb2x1bW5cIjogXCJcIiwgXCJvcGVyYXRvck5hbWVcIjogXCJcIiwgXCJkZWZhdWx0VmFsdWVcIjogXCJcIiwgXCJkYXRhVHlwZVwiOiBcIlwiIH0pXG4gICAgfVxuXG4gICAgaWYgKHZhbHVlLnF1ZXJ5Q29uZmlnLnNvcnRlcnMgPT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YWx1ZS5xdWVyeUNvbmZpZy5zb3J0ZXJzID0gW107XG4gICAgICB2YWx1ZS5xdWVyeUNvbmZpZy5zb3J0ZXJzLnB1c2goeyBcImNvbHVtbk5hbWVcIjogXCJcIiwgXCJkZXNjZW5kaW5nXCI6IGZhbHNlIH0pXG4gICAgfVxuICAgIGlmICh2YWx1ZS5xdWVyeUNvbmZpZy5jb2x1bW5zID09IHVuZGVmaW5lZCkge1xuICAgICAgdmFsdWUucXVlcnlDb25maWcuY29sdW1ucyA9IFtdO1xuICAgICAgbGV0IG9iaiA9IHtcbiAgICAgICAgXCJtZWFzdXJlc1wiOiB0cnVlLFxuICAgICAgICBcImRhdGFGaWVsZFwiOiBcIlwiLFxuICAgICAgICBcImNvbHVtbk5hbWVcIjogXCJcIixcbiAgICAgICAgXCJmdW5jdGlvbk5hbWVcIjogXCJcIixcbiAgICAgICAgXCJlbnJpY2hGdW5jdGlvblwiOiBcIlwiLFxuICAgICAgICBcImFkdmFuY2VkQ29sdW1uXCI6IFwiXCIsXG4gICAgICAgIFwiY2FwdGlvblwiOiBcIlwiLFxuICAgICAgfVxuICAgICAgdmFsdWUucXVlcnlDb25maWcuY29sdW1ucy5wdXNoKG9iaik7XG4gICAgfVxuICAgIGlmICh2YWx1ZS5xdWVyeUNvbmZpZy5oYXZpbmdzID09IHVuZGVmaW5lZCkge1xuICAgICAgdmFsdWUucXVlcnlDb25maWcuaGF2aW5ncyA9IFtdO1xuICAgIH1cblxuXG4gICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQgPSB2YWx1ZTtcbiAgfVxuXG5cbiAgY29uc3RydWN0b3IocHVibGljIGNvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2UsIHByaXZhdGUgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlLCBwcml2YXRlIHNlcnZpY2U6IEFwcGxpY2F0aW9uQ29udGVudFNlcnZpY2UpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2VydmljZS5saXN0Q29sdW1uRW5yaWNobWVudEZ1bmN0aW9ucygpLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgIHRoaXMua3BpX2VucmljaG1lbnRfbmFtZSA9IGRhdGE7XG4gICAgfSlcblxuICAgIHRoaXMucmVjb25Db2x1bWVEYXRhc291cmNlID0gW1xuICAgICAge1xuICAgICAgICBcImRhdGFGaWVsZFwiOiBcIlwiLFxuICAgICAgICBcImVucmljaEZ1bmN0aW9uXCI6IFwiXCIsXG4gICAgICAgIFwiY29sdW1lT25lXCI6IFwiXCIsXG4gICAgICAgIFwiY29sdW1lVHdvXCI6IFwiXCIsXG4gICAgICAgIFwicmVjb25UeXBlXCI6IFwiXCIsXG4gICAgICAgIFwiY2FwdGlvblwiOiBcIlwiXG4gICAgICB9XG4gICAgXVxuICB9XG5cbiAgcHJvY2Vzc1BhcmFtc2Zvcm1hdERhdGEoZGF0YSkge1xuICAgIGNvbnN0IGZvcm1hdHRlZF9kYXRhID0gZGF0YS5tYXAoaXRlbSA9PiB7XG4gICAgICBjb25zdCBbbmFtZSwgdmFsdWVdID0gT2JqZWN0LmVudHJpZXMoaXRlbSlbMF07XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWUsXG4gICAgICAgIHZhbHVlOiBuYW1lID09PSAncGFnaW5hdGlvblJlcXVpcmVkJyA/IHZhbHVlLnRvU3RyaW5nKCkgOiB2YWx1ZVxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHJldHVybiBmb3JtYXR0ZWRfZGF0YTtcbiAgfVxuXG5cblxuICBhZGRDb2x1bW5zKCkge1xuICAgIGxldCBvYmogPSB7XG4gICAgICBcIm1lYXN1cmVzXCI6IHRydWUsXG4gICAgICBcImRhdGFGaWVsZFwiOiBcIlwiLFxuICAgICAgXCJjb2x1bW5OYW1lXCI6IFwiXCIsXG4gICAgICBcImZ1bmN0aW9uTmFtZVwiOiBcIlwiLFxuICAgICAgXCJhZHZhbmNlZENvbHVtblwiOiBcIlwiLFxuICAgICAgXCJlbnJpY2hGdW5jdGlvblwiOiBcIlwiLFxuICAgICAgXCJjYXB0aW9uXCI6IFwiXCIsXG4gICAgfVxuICAgIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLmNvbHVtbnMucHVzaChvYmopO1xuICB9XG5cblxuICBkZWxldGVDb2x1bW5zKGkpIHtcbiAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5jb2x1bW5zLnNwbGljZShpLCAxKVxuICB9XG5cbiAgYWRkUmVjb25Db2x1bWUoKSB7XG4gICAgbGV0IG9iaiA9IHtcbiAgICAgIFwiZGF0YUZpZWxkXCI6IFwiXCIsXG4gICAgICBcImNvbHVtZU9uZVwiOiBcIlwiLFxuICAgICAgXCJjb2x1bWVUd29cIjogXCJcIixcbiAgICAgIFwiZW5yaWNoRnVuY3Rpb25cIjogXCJcIixcbiAgICAgIFwicmVjb25UeXBlXCI6IFwiXCIsXG4gICAgICBcImNhcHRpb25cIjogXCJcIlxuICAgIH1cbiAgICB0aGlzLnJlY29uQ29sdW1lRGF0YXNvdXJjZS5wdXNoKG9iaik7XG4gIH1cblxuICBkZWxldGVSZWNvbkNvbHVtZShpKSB7XG4gICAgdGhpcy5yZWNvbkNvbHVtZURhdGFzb3VyY2Uuc3BsaWNlKGksIDEpXG4gIH1cblxuICBzYXZlUmVjb25zQ29sdW1lKCkge1xuICAgIC8vIHsgJyRkaXZpZGUnOiBbeyAnJHN1YnRyYWN0JzogWyckY2JzQ291bnQnLCAnJG1zY0NvdW50J10gfSwgJyRjYnNDb3VudCddIH1cbiAgICAvLyB7ICckc3VidHJhY3QnOiBbJyRjYnNNb3UnLCAnJG1zY01vdSddIH1cblxuICAgIHRoaXMucmVjb25Db2x1bWVEYXRhc291cmNlLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBpZiAoZWxlbWVudC5yZWNvblR5cGUgPT0gXCJ2YXJpYW5jZVwiKSB7XG4gICAgICAgIGxldCBjb2x1bWVTdHJpbmcgPSBcInsnJHN1YnRyYWN0JzogWyckXCIgKyBlbGVtZW50LmNvbHVtZU9uZSArIFwiJywnJFwiICsgZWxlbWVudC5jb2x1bWVUd28gKyBcIiddfVwiO1xuICAgICAgICBsZXQgbm9kZSA9IHtcbiAgICAgICAgICBcIm1lYXN1cmVzXCI6IHRydWUsXG4gICAgICAgICAgXCJkYXRhRmllbGRcIjogZWxlbWVudC5kYXRhRmllbGQsXG4gICAgICAgICAgXCJjb2x1bW5OYW1lXCI6IGVsZW1lbnQuZGF0YUZpZWxkLFxuICAgICAgICAgIFwiZnVuY3Rpb25OYW1lXCI6IFwiXCIsXG4gICAgICAgICAgXCJhZHZhbmNlZENvbHVtblwiOiBjb2x1bWVTdHJpbmcsXG4gICAgICAgICAgXCJlbnJpY2hGdW5jdGlvblwiOiBlbGVtZW50LmVucmljaEZ1bmN0aW9uLFxuICAgICAgICAgIFwiY2FwdGlvblwiOiBlbGVtZW50LmNhcHRpb24sXG4gICAgICAgICAgJ2Rlcml2ZUZpZWxkJzogdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLmNvbHVtbnMucHVzaChub2RlKVxuICAgICAgICBjb25zb2xlLmxvZyhjb2x1bWVTdHJpbmcpO1xuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnJlY29uVHlwZSA9PSBcInBlcmNlbnRhZ2VcIikge1xuICAgICAgICBsZXQgY29sdW1lU3RyaW5nID0gXCJ7JyRjb25kJzogeyBpZjogeyAkZXE6IFsgJyRcIiArIGVsZW1lbnQuY29sdW1lT25lICsgXCInLCAwIF0gfSwgdGhlbjogMCwgZWxzZTogeyckZGl2aWRlJzpbeyckc3VidHJhY3QnOiBbJyRcIiArIGVsZW1lbnQuY29sdW1lT25lICsgXCInLCckXCIgKyBlbGVtZW50LmNvbHVtZVR3byArIFwiJ119LCckXCIgKyBlbGVtZW50LmNvbHVtZU9uZSArIFwiJ119IH19XCI7XG4gICAgICAgIGxldCBub2RlID0ge1xuICAgICAgICAgIFwibWVhc3VyZXNcIjogdHJ1ZSxcbiAgICAgICAgICBcImRhdGFGaWVsZFwiOiBlbGVtZW50LmRhdGFGaWVsZCxcbiAgICAgICAgICBcImNvbHVtbk5hbWVcIjogZWxlbWVudC5kYXRhRmllbGQsXG4gICAgICAgICAgXCJmdW5jdGlvbk5hbWVcIjogXCJcIixcbiAgICAgICAgICBcImFkdmFuY2VkQ29sdW1uXCI6IGNvbHVtZVN0cmluZyxcbiAgICAgICAgICBcImVucmljaEZ1bmN0aW9uXCI6IGVsZW1lbnQuZW5yaWNoRnVuY3Rpb24sXG4gICAgICAgICAgXCJjYXB0aW9uXCI6IGVsZW1lbnQuY2FwdGlvbixcbiAgICAgICAgICAnZGVyaXZlRmllbGQnOiB0cnVlXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcuY29sdW1ucy5wdXNoKG5vZGUpXG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQucmVjb25UeXBlID09IFwiYWJzb2x1dGVcIikge1xuICAgICAgICBsZXQgY29sdW1lU3RyaW5nID0gXCJ7JyRhYnMnOiB7JyRjb25kJzogeyBpZjogeyAkZXE6IFsgJyRcIiArIGVsZW1lbnQuY29sdW1lT25lICsgXCInLCAwIF0gfSwgdGhlbjogMCwgZWxzZTogeyckZGl2aWRlJzogW3snJHN1YnRyYWN0JzogWyckXCIgKyBlbGVtZW50LmNvbHVtZU9uZSArIFwiJywgJyRcIiArIGVsZW1lbnQuY29sdW1lVHdvICsgXCInXX0sICckXCIgKyBlbGVtZW50LmNvbHVtZU9uZSArIFwiJ119fX19XCI7XG4gICAgICAgIGxldCBub2RlID0ge1xuICAgICAgICAgIFwibWVhc3VyZXNcIjogdHJ1ZSxcbiAgICAgICAgICBcImRhdGFGaWVsZFwiOiBlbGVtZW50LmRhdGFGaWVsZCxcbiAgICAgICAgICBcImNvbHVtbk5hbWVcIjogZWxlbWVudC5kYXRhRmllbGQsXG4gICAgICAgICAgXCJmdW5jdGlvbk5hbWVcIjogXCJcIixcbiAgICAgICAgICBcImFkdmFuY2VkQ29sdW1uXCI6IGNvbHVtZVN0cmluZyxcbiAgICAgICAgICBcImVucmljaEZ1bmN0aW9uXCI6IGVsZW1lbnQuZW5yaWNoRnVuY3Rpb24sXG4gICAgICAgICAgXCJjYXB0aW9uXCI6IGVsZW1lbnQuY2FwdGlvbixcbiAgICAgICAgICAnZGVyaXZlRmllbGQnOiB0cnVlXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcuY29sdW1ucy5wdXNoKG5vZGUpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG5cbiAgc2F2ZUNvbHVtbnNBbmRNYXN1cmVzKCkge1xuICAgIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLm1lYXN1cmVzID0gW107XG4gICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcuZGltZW5zaW9ucyA9IFtdO1xuICAgIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLmNvbHVtbnMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIC8vIENoZWNrIGlmIGVsZW1lbnQuYWR2YW5jZWRDb2x1bW4gaXMgYW4gZW1wdHkgc3RyaW5nIGFuZCBzZXQgaXQgdG8gbnVsbFxuICAgICAgY29uc3QgYWR2YW5jZWRDb2x1bW5WYWx1ZSA9IGVsZW1lbnQuYWR2YW5jZWRDb2x1bW4gPT09IFwiXCIgPyBudWxsIDogZWxlbWVudC5hZHZhbmNlZENvbHVtbjtcblxuICAgICAgaWYgKGVsZW1lbnQubWVhc3VyZXMpIHtcbiAgICAgICAgbGV0IG9iaiA9IHtcbiAgICAgICAgICBjb2x1bW5OYW1lOiBlbGVtZW50LmNvbHVtbk5hbWUsXG4gICAgICAgICAgZnVuY3Rpb25OYW1lOiBlbGVtZW50LmZ1bmN0aW9uTmFtZSxcbiAgICAgICAgICBlbnJpY2hGdW5jdGlvbjogZWxlbWVudC5lbnJpY2hGdW5jdGlvbixcbiAgICAgICAgICBhZHZhbmNlZENvbHVtbjogYWR2YW5jZWRDb2x1bW5WYWx1ZSxcbiAgICAgICAgICBhbGlhc05hbWU6IGVsZW1lbnQuZGF0YUZpZWxkLFxuICAgICAgICB9XG4gICAgICAgIGlmIChlbGVtZW50LmRlcml2ZUZpZWxkKSB7XG4gICAgICAgICAgb2JqWydkZXJpdmVGaWVsZCddID0gZWxlbWVudC5kZXJpdmVGaWVsZFxuICAgICAgICB9XG4gICAgICAgIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLm1lYXN1cmVzLnB1c2gob2JqKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBvYmogPSB7XG4gICAgICAgICAgY29sdW1uTmFtZTogZWxlbWVudC5jb2x1bW5OYW1lLFxuICAgICAgICAgIGVucmljaEZ1bmN0aW9uOiBlbGVtZW50LmVucmljaEZ1bmN0aW9uLFxuICAgICAgICAgIGFsaWFzTmFtZTogZWxlbWVudC5kYXRhRmllbGQsXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcuZGltZW5zaW9ucy5wdXNoKG9iaik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy50b2FzdHIuc3VjY2VzcygnQ29sdW1ucyBTYXZlZCBTdWNjZXNzZnVsbHknKTtcbiAgICAvLyB0aGlzLnNhdmVEYXRhVG9TdG9yZSgpXG4gIH1cblxuICBzYXZlRGF0YVRvU3RvcmUoKSB7XG4gICAgY29uc3QgYnVpbGREYXRlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3F1ZXJ5YnVpbGRlcicpO1xuICAgIGlmIChidWlsZERhdGUpIHtcbiAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGJ1aWxkRGF0ZSk7XG4gICAgfVxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdxdWVyeWJ1aWxkZXInLCBKU09OLnN0cmluZ2lmeSh0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldCkpXG4gIH1cblxuICB0cmFuc2Zvcm1Db2x1bW5zRm9yTWVzdXJzKGlucHV0Q29sdW1ucykge1xuICAgIGNvbnN0IG1lYXN1cmUgPSBbXVxuICAgIGlucHV0Q29sdW1ucy5mb3JFYWNoKGNvbCA9PiB7XG5cblxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1lYXN1cmU7XG4gIH1cblxuXG4gIGFkZEZpbHRlcigpIHtcbiAgICBsZXQgb2JqID0ge1xuICAgICAgXCJ0eXBlXCI6IFwiXCIsXG4gICAgICBcInZhbHVlXCI6IFwiXCIsXG4gICAgICBcImtleVwiOiBcIlwiLFxuICAgICAgXCJkaXNwbGF5XCI6IFwiXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiXCJcbiAgICB9XG4gICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcuZmlsdGVyLnB1c2gob2JqKTtcbiAgfVxuXG4gIGRlbGV0ZUZpbHRlcihpKSB7XG4gICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcuZmlsdGVyLnNwbGljZShpLCAxKTtcbiAgfVxuICBhZGRQYXJhbXMoKSB7XG4gICAgbGV0IG9iaiA9IHtcbiAgICAgIFwibmFtZVwiOiBcIlwiLFxuICAgICAgXCJ2YWx1ZVwiOiBcIlwiLFxuICAgIH1cbiAgICB0aGlzLnJlcUZpZWxkc0RhdGFTb3VyY2UucHVzaChvYmopO1xuICB9XG5cblxuICBkZWxldGVQYXJhbXMoaSkge1xuICAgIHRoaXMucmVxRmllbGRzRGF0YVNvdXJjZS5zcGxpY2UoaSwgMSlcbiAgfVxuXG4gIGFkZFNob3J0Q29sdW1ucygpIHtcbiAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5zb3J0ZXJzLnB1c2goeyBcImNvbHVtbk5hbWVcIjogXCJcIiwgXCJkZXNjZW5kaW5nXCI6IGZhbHNlIH0pXG4gIH1cblxuXG4gIGRlbGV0ZVNob3J0Q29sdW1ucyhpKSB7XG4gICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcuc29ydGVycy5zcGxpY2UoaSwgMSlcbiAgfVxuXG4gIHNhdmVQYXJhbXMoKSB7XG4gICAgbGV0IHBhZ2luYXRpb25SZXF1aXJlZEV4aXN0cyA9IGZhbHNlO1xuICAgIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLnJlcUZpZWxkcyA9IHRoaXMucmVxRmllbGRzRGF0YVNvdXJjZS5tYXAoaXRlbSA9PiB7XG4gICAgICBjb25zdCBuZXdPYmo6IGFueSA9IHt9O1xuICAgICAgaWYgKGl0ZW0ubmFtZSA9PT0gXCJwYWdpbmF0aW9uUmVxdWlyZWRcIikge1xuICAgICAgICBwYWdpbmF0aW9uUmVxdWlyZWRFeGlzdHMgPSB0cnVlO1xuICAgICAgICBuZXdPYmpbaXRlbS5uYW1lXSA9IGl0ZW0udmFsdWUgPT09IFwidHJ1ZVwiO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaXRlbS52YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiAhaXNOYU4oaXRlbS52YWx1ZSBhcyBhbnkpICYmIGl0ZW0udmFsdWUudHJpbSgpICE9PSBcIlwiKSB7XG4gICAgICAgIG5ld09ialtpdGVtLm5hbWVdID0gTnVtYmVyKGl0ZW0udmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV3T2JqW2l0ZW0ubmFtZV0gPSBpdGVtLnZhbHVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3T2JqO1xuICAgIH0pO1xuXG4gICAgaWYgKCFwYWdpbmF0aW9uUmVxdWlyZWRFeGlzdHMpIHtcbiAgICAgIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLnJlcUZpZWxkcy5wdXNoKHsgcGFnaW5hdGlvblJlcXVpcmVkOiBcImZhbHNlXCIgfSk7XG4gICAgfVxuXG4gICAgLy8gdGhpcy5zYXZlRGF0YVRvU3RvcmUoKTtcbiAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKCdQYWdpbmF0aW9uIFJlcXVlc3QgUGFyYW1zIFNhdmVkIFN1Y2Nlc3NmdWxseScpO1xuICB9XG5cblxuICBhZGRGaWx0ZXJNYXBpbmdDb2x1bW5zKCkge1xuICAgIGxldCBvYmogPSB7IFwibG9jYWxDb2x1bW5cIjogXCJcIiwgXCJzZXJ2ZXJDb2x1bW5cIjogXCJcIiwgXCJvcGVyYXRvck5hbWVcIjogXCJcIiwgXCJkZWZhdWx0VmFsdWVcIjogXCJcIiwgXCJkYXRhVHlwZVwiOiBcIlwiIH1cbiAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5tYXBlZEZpbHRlcnMucHVzaChvYmopO1xuXG4gIH1cblxuICBkZWxldGVGaWx0ZXJNYXBpbmdDb2x1bW5zKGkpIHtcbiAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5tYXBlZEZpbHRlcnMuc3BsaWNlKGksIDEpXG4gIH1cblxuICBtb3ZlSXRlbUZvckNvbHVtbnMoaW5kZXg6IG51bWJlciwgZGlyZWN0aW9uOiAndXAnIHwgJ2Rvd24nKTogdm9pZCB7XG4gICAgLy8gUHJldmVudCBtb3ZpbmcgYmV5b25kIGFycmF5IGJvdW5kc1xuICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcubWFwZWRGaWx0ZXJzLmxlbmd0aCkgcmV0dXJuO1xuICAgIGNvbnN0IG5ld1Bvc2l0aW9uID0gZGlyZWN0aW9uID09PSAndXAnID8gaW5kZXggLSAxIDogaW5kZXggKyAxO1xuICAgIC8vIFByZXZlbnQgbW92aW5nIGJleW9uZCBhcnJheSBib3VuZHNcbiAgICBpZiAobmV3UG9zaXRpb24gPCAwIHx8IG5ld1Bvc2l0aW9uID49IHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLm1hcGVkRmlsdGVycy5sZW5ndGgpIHJldHVybjtcblxuICAgIC8vIE1vdmUgaXRlbVxuICAgIGNvbnN0IGl0ZW1Ub01vdmUgPSB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5tYXBlZEZpbHRlcnNbaW5kZXhdO1xuICAgIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLm1hcGVkRmlsdGVycy5zcGxpY2UoaW5kZXgsIDEpOyAvLyBSZW1vdmUgaXRlbSBmcm9tIGN1cnJlbnQgcG9zaXRpb25cbiAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5tYXBlZEZpbHRlcnMuc3BsaWNlKG5ld1Bvc2l0aW9uLCAwLCBpdGVtVG9Nb3ZlKTsgLy8gSW5zZXJ0IGl0ZW0gaW4gbmV3IHBvc2l0aW9uXG4gIH1cbiAgbW92ZUl0ZW1Gb3JNZWFzdXJlc0NvbHVtbnMoaW5kZXg6IG51bWJlciwgZGlyZWN0aW9uOiAndXAnIHwgJ2Rvd24nKTogdm9pZCB7XG4gICAgLy8gUHJldmVudCBtb3ZpbmcgYmV5b25kIGFycmF5IGJvdW5kc1xuICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcuY29sdW1ucy5sZW5ndGgpIHJldHVybjtcbiAgICBjb25zdCBuZXdQb3NpdGlvbiA9IGRpcmVjdGlvbiA9PT0gJ3VwJyA/IGluZGV4IC0gMSA6IGluZGV4ICsgMTtcbiAgICAvLyBQcmV2ZW50IG1vdmluZyBiZXlvbmQgYXJyYXkgYm91bmRzXG4gICAgaWYgKG5ld1Bvc2l0aW9uIDwgMCB8fCBuZXdQb3NpdGlvbiA+PSB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5jb2x1bW5zLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgLy8gTW92ZSBpdGVtXG4gICAgY29uc3QgaXRlbVRvTW92ZSA9IHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLmNvbHVtbnNbaW5kZXhdO1xuICAgIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLmNvbHVtbnMuc3BsaWNlKGluZGV4LCAxKTsgLy8gUmVtb3ZlIGl0ZW0gZnJvbSBjdXJyZW50IHBvc2l0aW9uXG4gICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcuY29sdW1ucy5zcGxpY2UobmV3UG9zaXRpb24sIDAsIGl0ZW1Ub01vdmUpOyAvLyBJbnNlcnQgaXRlbSBpbiBuZXcgcG9zaXRpb25cbiAgfVxuXG5cblxuXG4gIGNoZWNrRm9yUXVlcnkoKSB7XG4gICAgbGV0IHRyYW5zZm9ybWVkT2JqZWN0OiBhbnkgPSB7fTtcblxuICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcucmVxRmllbGRzKSB7XG4gICAgICBjb25zdCBrZXkgPSBPYmplY3Qua2V5cyhpdGVtKVswXTtcbiAgICAgIGNvbnN0IHZhbHVlID0gT2JqZWN0LnZhbHVlcyhpdGVtKVswXTtcblxuICAgICAgaWYgKGtleSA9PT0gJ3N0YXJ0RGF0ZScpIHtcbiAgICAgICAgdHJhbnNmb3JtZWRPYmplY3QucmVjb3JkRGF0ZSA9IHZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJhbnNmb3JtZWRPYmplY3Rba2V5XSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICB0cmFuc2Zvcm1lZE9iamVjdFsnZGltZW5zaW9ucyddID0gdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcuZGltZW5zaW9ucztcbiAgICB0cmFuc2Zvcm1lZE9iamVjdFsnbWVhc3VyZXMnXSA9IHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLm1lYXN1cmVzO1xuICAgIHRyYW5zZm9ybWVkT2JqZWN0WydmaWx0ZXJzJ10gPSB0aGlzLnRyYW5zZm9ybURhdGFGb3JNRmlsdGVyKHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLm1hcGVkRmlsdGVycyk7O1xuICAgIHRyYW5zZm9ybWVkT2JqZWN0Wydzb3J0ZXJzJ10gPSB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5zb3J0ZXJzO1xuICAgIHRyYW5zZm9ybWVkT2JqZWN0W1wicGFnaW5hdGlvblJlcXVpcmVkXCJdID0gdHJ1ZTtcbiAgICBjb25zb2xlLmxvZyh0cmFuc2Zvcm1lZE9iamVjdCk7XG5cbiAgICB0aGlzLnNlcnZpY2UudmFsaWRhdGVBZ2dyZWdhdGVQYWdpbmF0ZWRRdWVyeSh0cmFuc2Zvcm1lZE9iamVjdCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgY29uc29sZS5sb2coZGF0YSk7XG4gICAgICB0aGlzLnF1ZXJ5X2RhdGEgPSBkYXRhLnF1ZXJ5XG4gICAgICB0aGlzLmlzTW9kZWxWaXNpYmxlID0gdHJ1ZTtcbiAgICB9LCBlcnIgPT4ge1xuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ1VuZXhwZWN0ZWQgU2VydmVyIEV4Y2VwdGlvbi4gUGxlYXNlIGNvbnRhY3QgU3lzdGVtIEFkbWluLicpXG4gICAgfSlcbiAgfVxuXG4gIGNsb3NlTW9kYWxWaXNpYmxlTW9kYWwoKSB7XG4gICAgdGhpcy5pc01vZGVsVmlzaWJsZSA9IGZhbHNlO1xuICAgIHRoaXMucXVlcnlfZGF0YSA9ICcnO1xuICB9XG5cbiAgdHJhbnNmb3JtRGF0YUZvck1GaWx0ZXIobWFwZmlsdGVyKSB7XG4gICAgbGV0IHJlc3VsdCA9IFtdO1xuICAgIG1hcGZpbHRlci5mb3JFYWNoKG1hcHBpbmcgPT4ge1xuICAgICAgbGV0IHJlc3VsdE9iaiA9IHtcbiAgICAgICAgY29sdW1uTmFtZTogbWFwcGluZy5zZXJ2ZXJDb2x1bW4sXG4gICAgICAgIGRhdGFUeXBlOiBtYXBwaW5nLmRhdGFUeXBlLFxuICAgICAgICBvcGVyYXRvcjogbWFwcGluZy5vcGVyYXRvck5hbWUsXG4gICAgICAgIHZhbHVlOiBtYXBwaW5nLmRlZmF1bHRWYWx1ZVxuICAgICAgfTtcbiAgICAgIHJlc3VsdC5wdXNoKHJlc3VsdE9iaik7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG5cbiAgY29weVNxbEZyb21Nb2RhbCgpIHtcbiAgICBjb25zdCBsaXN0ZW5lciA9IChlOiBDbGlwYm9hcmRFdmVudCkgPT4ge1xuICAgICAgZS5jbGlwYm9hcmREYXRhIS5zZXREYXRhKCd0ZXh0L3BsYWluJywgdGhpcy5xdWVyeV9kYXRhKTtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9O1xuICAgIHRoaXMuaXNTcWxDb3BpZWRUZXh0ID0gdHJ1ZTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjb3B5JywgbGlzdGVuZXIpO1xuICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5Jyk7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY29weScsIGxpc3RlbmVyKTtcbiAgfVxuXG4gIGNyZWF0ZURhdGFTZXQoKSB7XG4gICAgdGhpcy5nZXRRdWVyeUJ1bGJkZXJEYXRhU2V0LmVtaXQodGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQpXG4gIH1cblxuICBnZXRRdWVyeUZvckRldGFpbHNEYXRhKGUpIHtcbiAgICBpZiAoZS52YWx1ZSA9PSAnQmFzaWMnKSB7XG4gICAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5hcGkgPSAnL2twaS9nZW5lcmljRGV0YWlsRGF0YVJlc3BvbnNlJ1xuICAgICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcuY29sdW1ucyA9IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5hcGkgPSAnL2twaS9nZW5lcmljQWdncmVnYXRlUGFnaW5hdGVkS3BpU2VydmljZVJlc3BvbnNlJztcbiAgICB9XG4gIH1cblxuXG4gIGdldERhdGFDb25maWcoZSkge1xuXG4gICAgaWYgKGUuZXZlbnQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRhU291cmNlID0gZS52YWx1ZTtcbiAgICAgIHRoaXMuaXNRdWVyeVR5cGVTZWxlY3QgPSB0cnVlO1xuICAgIH1cblxuICB9XG5cblxuICBhZGRIYXZpbmdzQ29sdW1lKCkge1xuICAgIGxldCBvYmogPSB7XG4gICAgICBcImNvbHVtbk5hbWVcIjogXCJcIixcbiAgICAgIFwiYWR2YW5jZWRDb2x1bW5cIjogXCJcIixcbiAgICAgIFwiZGF0YVR5cGVcIjogXCJcIixcbiAgICAgIFwib3BlcmF0b3JcIjogXCJcIixcbiAgICAgIFwidmFsdWVcIjogXCJcIlxuICAgIH1cbiAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5oYXZpbmdzLnB1c2gob2JqKTtcbiAgfVxuXG4gIGRlbGV0ZUhhdmluZ3NDb2x1bWUoaSkge1xuICAgIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLmhhdmluZ3Muc3BsaWNlKGksIDEpO1xuICB9XG5cblxufVxuIiwiPGRpdiBjbGFzcz1cIm0tMlwiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IG1iLTJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm14LTIgdy0xLzNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj5FbmQgUG9pbnQ8L2Rpdj5cbiAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cInF1ZXJ5QnVsZGVyRGF0YXNldC5hcGlcIj48L2R4LXRleHQtYm94PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm14LTIgdy0xLzNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj5RdWVyeSBUeXBlPC9kaXY+XG4gICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbZGF0YVNvdXJjZV09XCJbJ0FnZ3JlZ2F0ZScsJ0Jhc2ljJ11cIiAob25WYWx1ZUNoYW5nZWQpPVwiZ2V0UXVlcnlGb3JEZXRhaWxzRGF0YSgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMiB3LTEvMyBtdC02XCIgKm5nSWY9XCJzZWxlY3RlZERhdGFTb3VyY2UgPT0gJ21vbmdvJ1wiPlxuICAgICAgICAgICAgPGR4LWNoZWNrLWJveCBbKG5nTW9kZWwpXT1cImlzUmVjb25Db2x1bWVcIiB0ZXh0PSdSZWNvbiBDb2x1bW4nPlxuICAgICAgICAgICAgPC9keC1jaGVjay1ib3g+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZmxleC1hdXRvIG1pbi13LTAgbXktM1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1sZyBweS0yIGZvbnQtZXh0cmFib2xkIGJvcmRlci1iIGJnLWdyYXktNzAwIHRleHQtd2hpdGUgcHgtMlwiPiBSZXF1ZXN0IFBhcmFtc1xuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInB0LTIgYm9yZGVyLXggYm9yZGVyLWIgXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMiBnYXAtNCB3LWZ1bGwgcC0yXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTIgZmxleCBmbGV4LXJvdyBweC0yIGJvcmRlci1yXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcmVxRmllbGRzRGF0YVNvdXJjZTsgbGV0IGkgPSBpbmRleDtcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTIgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBQYXJhbXMgTmFtZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiaXRlbS5uYW1lXCI+PC9keC10ZXh0LWJveD5cblxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTIgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBQYXJhbXMgVmFsdWUgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5uYW1lID09ICdkYkNvbmZpZydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbaXRlbXNdPVwiWydtb25nbycsJ2ltcGFsYScsJ3Bvc3RncmVzJywnbXlzcWwnLCdiaWdxdWVyeSddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cImdldERhdGFDb25maWcoJGV2ZW50KVwiIFsobmdNb2RlbCldPVwiaXRlbS52YWx1ZVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0ubmFtZSAhPT0gJ2RiQ29uZmlnJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cIml0ZW0udmFsdWVcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtdC04XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fZGFuZ2VyX3NtfX0gY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiZGVsZXRlUGFyYW1zKGkpXCI+PGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEgZmEtdHJhc2gtb1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgbXktMiBqdXN0aWZ5LWVuZFwiPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1zbSBpdGFsaWMgdGV4dC1ncmF5LTMwMCBtci02XCI+KiogUGxlYXNlIFNhdmUgUmVxdWVzdCBQYXJhbXMgQmVmb3JlIFN1Ym1pdFxuICAgICAgICAgICAgICAgICAgICBEYXRhc2V0XG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3N1Y2Nlc3Nfc219fSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzYXZlUGFyYW1zKClcIj5TYXZlXG4gICAgICAgICAgICAgICAgICAgIFBhcmFtczwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3ByaW1hcnlfc219fSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJhZGRQYXJhbXMoKVwiPkFkZFxuICAgICAgICAgICAgICAgICAgICBQYXJhbXM8L2J1dHRvbj5cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzUXVlcnlUeXBlU2VsZWN0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGZsZXgtYXV0byBtaW4tdy0wIG15LTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxnIHB5LTIgZm9udC1leHRyYWJvbGQgYm9yZGVyLWIgYmctZ3JheS03MDAgdGV4dC13aGl0ZSBweC0yXCI+IENvbHVtbnMgYW5kIE1lYXN1cmVzXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdC0yIGJvcmRlci14IGJvcmRlci1iIFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0yIGZsZXgganVzdGlmeS1iZXR3ZWVuXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLmNvbHVtbnM7IGxldCBpID0gaW5kZXg7XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gTWVhc3VyZXM8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1jaGVjay1ib3ggW3ZhbHVlXT1cIml0ZW0ubWVhc3VyZXNcIiBbKG5nTW9kZWwpXT1cIml0ZW0ubWVhc3VyZXNcIj48L2R4LWNoZWNrLWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gVmFsdWUgRmllbGQoYWxpYXNOYW1lKTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiaXRlbS5kYXRhRmllbGRcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBTZXJ2ZXIgQ29sdW1uIE5hbWU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cIml0ZW0uY29sdW1uTmFtZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IEZ1bmN0aW9uIE5hbWU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtzZWFyY2hFbmFibGVkXT1cInRydWVcIiBbaXRlbXNdPVwia3BpX2Z1bmN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0uZnVuY3Rpb25OYW1lXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBFbnJpY2ggTmFtZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiIFtpdGVtc109XCJrcGlfZW5yaWNobWVudF9uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0uZW5yaWNoRnVuY3Rpb25cIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IEFkdmFuY2VkIENvbHVtbjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiaXRlbS5hZHZhbmNlZENvbHVtblwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IENhcHRpb248L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cIml0ZW0uY2FwdGlvblwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtdC04XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpICE9PSAwXCIgY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX2xpZ2h0X3NtfX0gY3Vyc29yLXBvaW50ZXIgbXgtMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlSXRlbUZvck1lYXN1cmVzQ29sdW1ucyhpLCAndXAnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWFycm93LXVwXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImkgIT09IHF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5jb2x1bW5zLmxlbmd0aCAtIDFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fbGlnaHRfc219fSBjdXJzb3ItcG9pbnRlciBteC0xXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVJdGVtRm9yTWVhc3VyZXNDb2x1bW5zKGksICdkb3duJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1hcnJvdy1kb3duXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtdC04IHRleHQtY2VudGVyXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX2Rhbmdlcl9zbX19IGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImRlbGV0ZUNvbHVtbnMoaSlcIj48aVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhIGZhLXRyYXNoLW9cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWVuZCBteS0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1zbSBpdGFsaWMgdGV4dC1ncmF5LTMwMCBtci02XCI+KiogUGxlYXNlIFNhdmUgQ29sdW1ucyBBbmQgTWVhc3VyZXMgQmVmb3JlIFN1Ym1pdFxuICAgICAgICAgICAgICAgICAgICAgICAgRGF0YXNldFxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3N1Y2Nlc3Nfc219fSBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZUNvbHVtbnNBbmRNYXN1cmVzKClcIj5TYXZlXG4gICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5zPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3ByaW1hcnlfc219fSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJhZGRDb2x1bW5zKClcIj5BZGRcbiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbnM8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1JlY29uQ29sdW1lXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBmbGV4LWF1dG8gbWluLXctMCBteS0yXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbGcgcHktMiBmb250LWV4dHJhYm9sZCBib3JkZXItYiBiZy1ncmF5LTcwMCB0ZXh0LXdoaXRlIHB4LTJcIj4gQWRkIFJlY29uIENvbHVtblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdC0yIGJvcmRlci14IGJvcmRlci1iIFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMiBmbGV4IGp1c3RpZnktYmV0d2VlblwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIHJlY29uQ29sdW1lRGF0YXNvdXJjZTsgbGV0IGkgPSBpbmRleDtcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gVmFsdWUgRmllbGQoYWxpYXNOYW1lKTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cIml0ZW0uZGF0YUZpZWxkXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gRmlyc3QgS2V5PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiaXRlbS5jb2x1bWVPbmVcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBTZWNvbmQgS2V5PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiaXRlbS5jb2x1bWVUd29cIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IEVucmljaCBOYW1lPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiIFtpdGVtc109XCJrcGlfZW5yaWNobWVudF9uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLmVucmljaEZ1bmN0aW9uXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBSZWNvbiBUeXBlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiIFtpdGVtc109XCJbJ3ZhcmlhbmNlJywncGVyY2VudGFnZScsJ2Fic29sdXRlJ11cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0ucmVjb25UeXBlXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IENhcHRpb248L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJpdGVtLmNhcHRpb25cIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG10LTggdGV4dC1jZW50ZXJcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX2Rhbmdlcl9zbX19IGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZVJlY29uQ29sdW1lKGkpXCI+PGkgY2xhc3M9XCJmYSBmYS10cmFzaC1vXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWVuZCBteS0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9zdWNjZXNzX3NtfX0gY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzYXZlUmVjb25zQ29sdW1lKClcIj5TYXZlIFRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uczwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fcHJpbWFyeV9zbX19IGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImFkZFJlY29uQ29sdW1lKClcIj5BZGRcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBmbGV4LWF1dG8gbWluLXctMCBteS0yXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbGcgcHktMiBmb250LWV4dHJhYm9sZCBib3JkZXItYiBiZy1ncmF5LTcwMCB0ZXh0LXdoaXRlIHB4LTJcIj4gQWRkIEhhdmluZyBDb2x1bW5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHQtMiBib3JkZXIteCBib3JkZXItYiBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTIgZmxleCBqdXN0aWZ5LWJldHdlZW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLmhhdmluZ3M7IGxldCBpID0gaW5kZXg7XCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBDb2x1bW4gTmFtZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cIml0ZW0uY29sdW1uTmFtZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBBZHZhbmNlZCBDb2x1bW48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJpdGVtLmFkdmFuY2VkQ29sdW1uXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMiB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IERhdGEgVHlwZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cIml0ZW0uZGF0YVR5cGVcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBPcGVyYXRvcjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtpdGVtc109XCJbJ2dldCcsJ2x0ZSddXCIgWyhuZ01vZGVsKV09XCJpdGVtLm9wZXJhdG9yXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBWYWx1ZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cIml0ZW0udmFsdWVcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG10LTggdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9kYW5nZXJfc219fSBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVIYXZpbmdzQ29sdW1lKGkpXCI+PGkgY2xhc3M9XCJmYSBmYS10cmFzaC1vXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWVuZCBteS0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9wcmltYXJ5X3NtfX0gY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiYWRkSGF2aW5nc0NvbHVtZSgpXCI+QWRkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSGF2aW5nc1xuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZmxleC1hdXRvIG1pbi13LTAgbXktM1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbGcgcHktMiBmb250LWV4dHJhYm9sZCBib3JkZXItYiBiZy1ncmF5LTcwMCB0ZXh0LXdoaXRlIHB4LTJcIj4gU29ydCBCeVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHQtMiBib3JkZXIteCBib3JkZXItYiBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMiBnYXAtNCB3LWZ1bGwgcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0yIGZsZXggZmxleC1yb3cgcHgtMiBib3JkZXItclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBxdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcuc29ydGVyczsgbGV0IGkgPSBpbmRleDtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IFBhcmFtcyBOYW1lPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiaXRlbS5jb2x1bW5OYW1lXCI+PC9keC10ZXh0LWJveD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBtdC04XCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtY2hlY2stYm94IHRleHQ9XCJEZXNjZW5kaW5nXCIgWyhuZ01vZGVsKV09XCJpdGVtLmRlc2NlbmRpbmdcIj48L2R4LWNoZWNrLWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTIgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtdC04XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX2Rhbmdlcl9zbX19IGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVTaG9ydENvbHVtbnMoaSlcIj48aSBjbGFzcz1cImZhIGZhLXRyYXNoLW9cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IG15LTIganVzdGlmeS1lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fcHJpbWFyeV9zbX19IGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImFkZFNob3J0Q29sdW1ucygpXCI+QWRkXG4gICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW48L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZmxleC1hdXRvIG1pbi13LTAgbXktMlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbGcgcHktMiBmb250LWV4dHJhYm9sZCBib3JkZXItYiBiZy1ncmF5LTcwMCB0ZXh0LXdoaXRlIHB4LTJcIj4gRmlsdGVyIE1hcGluZ1xuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHQtMiBib3JkZXIteCBib3JkZXItYiBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMiBmbGV4IGZsZXgtcm93IGp1c3RpZnktYmV0d2VlblwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5tYXBlZEZpbHRlcnM7IGxldCBpID0gaW5kZXg7XCI+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMiB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gTG9jYWwgQ29sdW1uPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJpdGVtLmxvY2FsQ29sdW1uXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IFNlcnZlciBDb2x1bW48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cIml0ZW0uc2VydmVyQ29sdW1uXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IE9wZXJhdG9yPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCIgW2l0ZW1zXT1cImtwaV9vcGVyYXRvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLm9wZXJhdG9yTmFtZVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IERhdGF0eXBlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiWydkYXRlJywnc3RyaW5nJywndGltZXN0YW1wJywnaW50JywgJ2RvdWJsZScsICdib29sZWFuJ11cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS5kYXRhVHlwZVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IERlZmF1bHQgVmFsdWU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cIml0ZW0uZGVmYXVsdFZhbHVlXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG10LThcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImkgIT09IDBcIiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fbGlnaHRfc219fSBjdXJzb3ItcG9pbnRlciBteC0xXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVJdGVtRm9yQ29sdW1ucyhpLCAndXAnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWFycm93LXVwXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImkgIT09IHF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5tYXBlZEZpbHRlcnMubGVuZ3RoIC0gMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9saWdodF9zbX19IGN1cnNvci1wb2ludGVyIG14LTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibW92ZUl0ZW1Gb3JDb2x1bW5zKGksICdkb3duJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1hcnJvdy1kb3duXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtdC04IHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9kYW5nZXJfc219fSBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUZpbHRlck1hcGluZ0NvbHVtbnMoaSlcIj48aSBjbGFzcz1cImZhIGZhLXRyYXNoLW9cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMS8yXCIgKm5nSWY9XCJzZWxlY3RlZERhdGFTb3VyY2UgIT09ICdtb25nbydcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1zdGFydCBteS0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bk90aGVyc1B1cnBsZX19IGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImNoZWNrRm9yUXVlcnkoKVwiPkNoZWNrXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVlcnk8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWVuZCBteS0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9wcmltYXJ5X3NtfX0gY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGRGaWx0ZXJNYXBpbmdDb2x1bW5zKClcIj5BZGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXBpbmc8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggdy1mdWxsIGp1c3RpZnktZW5kIG10LTUgYm9yZGVyLXRcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3N1Y2Nlc3NfbWR9fSBjdXJzb3ItcG9pbnRlciBteC0xIG15LTJcIiAoY2xpY2spPVwiY3JlYXRlRGF0YVNldCgpXCI+XG4gICAgICAgICAgICAgICAgU3VibWl0IERhdGFTZXRcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuXG48L2Rpdj5cblxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiaXNNb2RlbFZpc2libGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZml4ZWQgaW5zZXQtMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB6LTUwIGJnLWJsYWNrIGJnLW9wYWNpdHktNTBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIHAtNCB3LWZ1bGwgbWF4LXctM3hsIG1heC1oLWZ1bGxcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBiZy13aGl0ZSByb3VuZGVkLWxnIHNoYWRvdyAgXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBwLTQgbWQ6cC01IGJvcmRlci1iIHJvdW5kZWQtdCBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwidGV4dC14bCBmb250LXNlbWlib2xkIHRleHQtZ3JheS05MDAgXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBRdWVyeSA8L2gzPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2xvc2VNb2RhbFZpc2libGVNb2RhbCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1ncmF5LTQwMCBiZy10cmFuc3BhcmVudCBob3ZlcjpiZy1ncmF5LTIwMCBob3Zlcjp0ZXh0LWdyYXktOTAwIHJvdW5kZWQtbGcgdGV4dC1zbSB3LTggaC04IG1zLWF1dG8gaW5saW5lLWZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLW1vZGFsLWhpZGU9XCJzdGF0aWMtbW9kYWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJ3LTMgaC0zXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE0IDE0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlLXdpZHRoPVwiMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJtMSAxIDYgNm0wIDAgNiA2TTcgN2w2LTZNNyA3bC02IDZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5DbG9zZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPCEtLSBNb2RhbCBib2R5IC0tPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTY5IHAtNVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBiZy1ncmF5LTgwMCB0ZXh0LXdoaXRlIHRleHQtbGcgcC00IHJvdW5kZWQtbWQgdGV4dC13cmFwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Y29kZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7cXVlcnlfZGF0YX19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2NvZGU+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBib3JkZXItdCBib3JkZXItZ3JheS0yMDAgcm91bmRlZC1iIHAtMiBqdXN0aWZ5LWVuZFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZ3JheS03MDAgcHgtMlwiICpuZ0lmPVwiaXNTcWxDb3BpZWRUZXh0XCI+Q29waWVkPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGRhdGEtbW9kYWwtaGlkZT1cInN0YXRpYy1tb2RhbFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fc3VjY2Vzc19zbX19IHB5LTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvcHlTcWxGcm9tTW9kYWwoKVwiPkNvcHk8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPiJdfQ==
|
|
410
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXNldC1xdWVyeS1idWxkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLWRhdGFzZXQtY29tcG9uZW50L2RhdGFzZXQtcXVlcnktYnVsZGVyL2RhdGFzZXQtcXVlcnktYnVsZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9hcHBsaWNhdGlvbi1kYXRhc2V0LWNvbXBvbmVudC9kYXRhc2V0LXF1ZXJ5LWJ1bGRlci9kYXRhc2V0LXF1ZXJ5LWJ1bGRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7O0FBVS9FLE1BQU0sT0FBTywyQkFBMkI7SUEwRnRDLFlBQW1CLGFBQTRCLEVBQVUsTUFBcUIsRUFBVSxPQUFrQztRQUF2RyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQWU7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUEyQjtRQXZGMUgsd0JBQW1CLEdBQVEsRUFBRSxDQUFDO1FBQzlCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLHdCQUFtQixHQUFRLEVBQUUsQ0FBQztRQUM5QixpQkFBWSxHQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQTtRQUNyRixpQkFBWSxHQUFRLENBQUMs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bnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tICduZ3gtdG9hc3RyJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uQ29udGVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcHBsaWNhdGlvbi1jb250ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1kYXRhc2V0LXF1ZXJ5LWJ1bGRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhc2V0LXF1ZXJ5LWJ1bGRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGFzZXQtcXVlcnktYnVsZGVyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRGF0YXNldFF1ZXJ5QnVsZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAvLyBASW5wdXQoKSBxdWVyeUJ1bGRlckRhdGFzZXQ6IGFueTtcbiAgcmVxRmllbGRzRGF0YVNvdXJjZTogYW55ID0gW107XG4gIGlzcmVxRmllbGRzOiBib29sZWFuID0gZmFsc2U7XG4gIGlzY2RyUGFyYW1zOiBib29sZWFuID0gZmFsc2U7XG4gIGNkckZpZWxkc0RhdGFTb3VyY2U6IGFueSA9IFtdO1xuICBrcGlfZnVuY3Rpb246IGFueSA9IFtcInN1bVwiLCBcImNvdW50XCIsIFwiYXZnXCIsIFwibWF4XCIsIFwibWluXCIsIFwic3RkZGV2XCIsIFwiY291bnRfZGlzdGluY3RcIl1cbiAga3BpX29wZXJhdG9yOiBhbnkgPSBbXCJlcVwiLCBcImd0ZVwiLCBcImx0ZVwiLCBcIm5lXCIsIFwiaW5cIiwgXCJub3RJblwiLCBcImNvbnRhaW5zXCIsIFwic3RhcnRzV2l0aFwiLCBcImVuZHNXaXRoXCJdXG4gIGtwaV9lbnJpY2htZW50X25hbWU6IGFueSA9IFtdO1xuICByZXFTaG9ydERhdGFTb3VyY2U6IGFueSA9IFtdO1xuICBmaWx0ZXJNYXBpbmdEYXRhc291cmNlOiBhbnkgPSBbXTtcbiAgcXVlcnlfZGF0YTogYW55O1xuICBpc01vZGVsVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1NxbENvcGllZFRleHQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcXVlcnlCdWxkZXJEYXRhc2V0OiBhbnk7XG4gIGlzUmVjb25Db2x1bWU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQE91dHB1dCgpIHB1YmxpYyBnZXRRdWVyeUJ1bGJkZXJEYXRhU2V0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICByZWNvbkNvbHVtZURhdGFzb3VyY2UgPSBbXTtcblxuICBzZWxlY3RlZERhdGFTb3VyY2U6IGFueTtcbiAgaXNRdWVyeVR5cGVTZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoJ2J1bGRlckRhdGFzZXQnKVxuICBzZXQgYnVsZGVyRGF0YXNldCh2YWx1ZSkge1xuXG4gICAgaWYgKHZhbHVlLnF1ZXJ5Q29uZmlnLnJlcUZpZWxkcyAmJiB2YWx1ZS5xdWVyeUNvbmZpZy5yZXFGaWVsZHMubGVuZ3RoIDwgMikge1xuICAgICAgdGhpcy5yZXFGaWVsZHNEYXRhU291cmNlID0gW1xuICAgICAgICB7XG4gICAgICAgICAgXCJuYW1lXCI6IFwicGFnZU51bWJlclwiLFxuICAgICAgICAgIFwidmFsdWVcIjogMSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwibmFtZVwiOiBcInBhZ2VTaXplXCIsXG4gICAgICAgICAgXCJ2YWx1ZVwiOiAyMDEwLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCJuYW1lXCI6IFwiZGJDb25maWdcIixcbiAgICAgICAgICBcInZhbHVlXCI6IFwiXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIm5hbWVcIjogXCJkYXRhYmFzZU5hbWVcIixcbiAgICAgICAgICBcInZhbHVlXCI6IFwiXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIm5hbWVcIjogXCJ0YWJsZU5hbWVcIixcbiAgICAgICAgICBcInZhbHVlXCI6IFwiXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIm5hbWVcIjogXCJwYWdpbmF0aW9uUmVxdWlyZWRcIixcbiAgICAgICAgICBcInZhbHVlXCI6IFwiZmFsc2VcIixcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlcUZpZWxkc0RhdGFTb3VyY2UgPSB0aGlzLnByb2Nlc3NQYXJhbXNmb3JtYXREYXRhKHZhbHVlLnF1ZXJ5Q29uZmlnLnJlcUZpZWxkcyk7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF0YVNvdXJjZSA9IHZhbHVlLnF1ZXJ5Q29uZmlnLnJlcUZpZWxkcy5maW5kKGl0ZW0gPT4gaXRlbS5kYkNvbmZpZyAhPT0gdW5kZWZpbmVkKT8uZGJDb25maWc7XG4gICAgICB0aGlzLmlzUXVlcnlUeXBlU2VsZWN0ID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHZhbHVlLnF1ZXJ5Q29uZmlnLm1hcGVkRmlsdGVycyA9PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhbHVlLnF1ZXJ5Q29uZmlnLm1hcGVkRmlsdGVycyA9IFtdO1xuICAgICAgdmFsdWUucXVlcnlDb25maWcubWFwZWRGaWx0ZXJzLnB1c2goeyBcImxvY2FsQ29sdW1uXCI6IFwiXCIsIFwic2VydmVyQ29sdW1uXCI6IFwiXCIsIFwib3BlcmF0b3JOYW1lXCI6IFwiXCIsIFwiZGVmYXVsdFZhbHVlXCI6IFwiXCIsIFwiZGF0YVR5cGVcIjogXCJcIiB9KVxuICAgIH1cblxuICAgIGlmICh2YWx1ZS5xdWVyeUNvbmZpZy5zb3J0ZXJzID09IHVuZGVmaW5lZCkge1xuICAgICAgdmFsdWUucXVlcnlDb25maWcuc29ydGVycyA9IFtdO1xuICAgICAgdmFsdWUucXVlcnlDb25maWcuc29ydGVycy5wdXNoKHsgXCJjb2x1bW5OYW1lXCI6IFwiXCIsIFwiZGVzY2VuZGluZ1wiOiBmYWxzZSB9KVxuICAgIH1cbiAgICBpZiAodmFsdWUucXVlcnlDb25maWcuY29sdW1ucyA9PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhbHVlLnF1ZXJ5Q29uZmlnLmNvbHVtbnMgPSBbXTtcbiAgICAgIGxldCBvYmogPSB7XG4gICAgICAgIFwibWVhc3VyZXNcIjogdHJ1ZSxcbiAgICAgICAgXCJkYXRhRmllbGRcIjogXCJcIixcbiAgICAgICAgXCJjb2x1bW5OYW1lXCI6IFwiXCIsXG4gICAgICAgIFwiZnVuY3Rpb25OYW1lXCI6IFwiXCIsXG4gICAgICAgIFwiZW5yaWNoRnVuY3Rpb25cIjogXCJcIixcbiAgICAgICAgXCJhZHZhbmNlZENvbHVtblwiOiBcIlwiLFxuICAgICAgICBcImNhcHRpb25cIjogXCJcIixcbiAgICAgIH1cbiAgICAgIHZhbHVlLnF1ZXJ5Q29uZmlnLmNvbHVtbnMucHVzaChvYmopO1xuICAgIH1cbiAgICBpZiAodmFsdWUucXVlcnlDb25maWcuaGF2aW5ncyA9PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhbHVlLnF1ZXJ5Q29uZmlnLmhhdmluZ3MgPSBbXTtcbiAgICB9XG5cblxuICAgIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0ID0gdmFsdWU7XG4gIH1cblxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlLCBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZSwgcHJpdmF0ZSBzZXJ2aWNlOiBBcHBsaWNhdGlvbkNvbnRlbnRTZXJ2aWNlKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlcnZpY2UubGlzdENvbHVtbkVucmljaG1lbnRGdW5jdGlvbnMoKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICB0aGlzLmtwaV9lbnJpY2htZW50X25hbWUgPSBkYXRhO1xuICAgIH0pXG5cbiAgICB0aGlzLnJlY29uQ29sdW1lRGF0YXNvdXJjZSA9IFtcbiAgICAgIHtcbiAgICAgICAgXCJkYXRhRmllbGRcIjogXCJcIixcbiAgICAgICAgXCJlbnJpY2hGdW5jdGlvblwiOiBcIlwiLFxuICAgICAgICBcImNvbHVtZU9uZVwiOiBcIlwiLFxuICAgICAgICBcImNvbHVtZVR3b1wiOiBcIlwiLFxuICAgICAgICBcInJlY29uVHlwZVwiOiBcIlwiLFxuICAgICAgICBcImNhcHRpb25cIjogXCJcIlxuICAgICAgfVxuICAgIF1cbiAgfVxuXG4gIHByb2Nlc3NQYXJhbXNmb3JtYXREYXRhKGRhdGEpIHtcbiAgICBjb25zdCBmb3JtYXR0ZWRfZGF0YSA9IGRhdGEubWFwKGl0ZW0gPT4ge1xuICAgICAgY29uc3QgW25hbWUsIHZhbHVlXSA9IE9iamVjdC5lbnRyaWVzKGl0ZW0pWzBdO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lLFxuICAgICAgICB2YWx1ZTogbmFtZSA9PT0gJ3BhZ2luYXRpb25SZXF1aXJlZCcgPyB2YWx1ZS50b1N0cmluZygpIDogdmFsdWVcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZm9ybWF0dGVkX2RhdGE7XG4gIH1cblxuXG5cbiAgYWRkQ29sdW1ucygpIHtcbiAgICBsZXQgb2JqID0ge1xuICAgICAgXCJtZWFzdXJlc1wiOiB0cnVlLFxuICAgICAgXCJkYXRhRmllbGRcIjogXCJcIixcbiAgICAgIFwiY29sdW1uTmFtZVwiOiBcIlwiLFxuICAgICAgXCJmdW5jdGlvbk5hbWVcIjogXCJcIixcbiAgICAgIFwiYWR2YW5jZWRDb2x1bW5cIjogXCJcIixcbiAgICAgIFwiZW5yaWNoRnVuY3Rpb25cIjogXCJcIixcbiAgICAgIFwiY2FwdGlvblwiOiBcIlwiLFxuICAgIH1cbiAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5jb2x1bW5zLnB1c2gob2JqKTtcbiAgfVxuXG5cbiAgZGVsZXRlQ29sdW1ucyhpKSB7XG4gICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcuY29sdW1ucy5zcGxpY2UoaSwgMSlcbiAgfVxuXG4gIGFkZFJlY29uQ29sdW1lKCkge1xuICAgIGxldCBvYmogPSB7XG4gICAgICBcImRhdGFGaWVsZFwiOiBcIlwiLFxuICAgICAgXCJjb2x1bWVPbmVcIjogXCJcIixcbiAgICAgIFwiY29sdW1lVHdvXCI6IFwiXCIsXG4gICAgICBcImVucmljaEZ1bmN0aW9uXCI6IFwiXCIsXG4gICAgICBcInJlY29uVHlwZVwiOiBcIlwiLFxuICAgICAgXCJjYXB0aW9uXCI6IFwiXCJcbiAgICB9XG4gICAgdGhpcy5yZWNvbkNvbHVtZURhdGFzb3VyY2UucHVzaChvYmopO1xuICB9XG5cbiAgZGVsZXRlUmVjb25Db2x1bWUoaSkge1xuICAgIHRoaXMucmVjb25Db2x1bWVEYXRhc291cmNlLnNwbGljZShpLCAxKVxuICB9XG5cbiAgc2F2ZVJlY29uc0NvbHVtZSgpIHtcbiAgICAvLyB7ICckZGl2aWRlJzogW3sgJyRzdWJ0cmFjdCc6IFsnJGNic0NvdW50JywgJyRtc2NDb3VudCddIH0sICckY2JzQ291bnQnXSB9XG4gICAgLy8geyAnJHN1YnRyYWN0JzogWyckY2JzTW91JywgJyRtc2NNb3UnXSB9XG5cbiAgICB0aGlzLnJlY29uQ29sdW1lRGF0YXNvdXJjZS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgaWYgKGVsZW1lbnQucmVjb25UeXBlID09IFwidmFyaWFuY2VcIikge1xuICAgICAgICBsZXQgY29sdW1lU3RyaW5nID0gXCJ7JyRzdWJ0cmFjdCc6IFsnJFwiICsgZWxlbWVudC5jb2x1bWVPbmUgKyBcIicsJyRcIiArIGVsZW1lbnQuY29sdW1lVHdvICsgXCInXX1cIjtcbiAgICAgICAgbGV0IG5vZGUgPSB7XG4gICAgICAgICAgXCJtZWFzdXJlc1wiOiB0cnVlLFxuICAgICAgICAgIFwiZGF0YUZpZWxkXCI6IGVsZW1lbnQuZGF0YUZpZWxkLFxuICAgICAgICAgIFwiY29sdW1uTmFtZVwiOiBlbGVtZW50LmRhdGFGaWVsZCxcbiAgICAgICAgICBcImZ1bmN0aW9uTmFtZVwiOiBcIlwiLFxuICAgICAgICAgIFwiYWR2YW5jZWRDb2x1bW5cIjogY29sdW1lU3RyaW5nLFxuICAgICAgICAgIFwiZW5yaWNoRnVuY3Rpb25cIjogZWxlbWVudC5lbnJpY2hGdW5jdGlvbixcbiAgICAgICAgICBcImNhcHRpb25cIjogZWxlbWVudC5jYXB0aW9uLFxuICAgICAgICAgICdkZXJpdmVGaWVsZCc6IHRydWVcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5jb2x1bW5zLnB1c2gobm9kZSlcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5yZWNvblR5cGUgPT0gXCJwZXJjZW50YWdlXCIpIHtcbiAgICAgICAgLy8gbGV0IGNvbHVtZVN0cmluZyA9IFwieyckY29uZCc6IHsgaWY6IHsgJGVxOiBbICckXCIgKyBlbGVtZW50LmNvbHVtZU9uZSArIFwiJywgMCBdIH0sIHRoZW46IDAsIGVsc2U6IHsnJGRpdmlkZSc6W3snJHN1YnRyYWN0JzogWyckXCIgKyBlbGVtZW50LmNvbHVtZU9uZSArIFwiJywnJFwiICsgZWxlbWVudC5jb2x1bWVUd28gKyBcIiddfSwnJFwiICsgZWxlbWVudC5jb2x1bWVPbmUgKyBcIiddfSB9fVwiO1xuICAgICAgICBcbiAgICAgICAgbGV0IGNvbHVtZVN0cmluZyA9IGB7ICckY29uZCc6IHsnaWYnOiB7JyRhbmQnOiBbeyAnJGVxJzogWyckJHtlbGVtZW50LmNvbHVtZU9uZX0nLCAwXSB9LCB7ICckZXEnOiBbJyQke2VsZW1lbnQuY29sdW1lVHdvfScsIDBdIH0gXSB9LCAndGhlbic6IDAsICdlbHNlJzogeyckZGl2aWRlJzogXG4gICAgICAgIFt7ICckYWJzJzogeyAnJHN1YnRyYWN0JzogWyckJHtlbGVtZW50LmNvbHVtZU9uZX0nLCAnJCR7ZWxlbWVudC5jb2x1bWVUd299J10gfSB9LCB7ICckbWF4JzogWyckJHtlbGVtZW50LmNvbHVtZU9uZX0nLCAnJCR7ZWxlbWVudC5jb2x1bWVUd299J10gfSBdIH0gfSB9XG5gXG4gICAgICAgIFxuICAgICAgICBsZXQgbm9kZSA9IHtcbiAgICAgICAgICBcIm1lYXN1cmVzXCI6IHRydWUsXG4gICAgICAgICAgXCJkYXRhRmllbGRcIjogZWxlbWVudC5kYXRhRmllbGQsXG4gICAgICAgICAgXCJjb2x1bW5OYW1lXCI6IGVsZW1lbnQuZGF0YUZpZWxkLFxuICAgICAgICAgIFwiZnVuY3Rpb25OYW1lXCI6IFwiXCIsXG4gICAgICAgICAgXCJhZHZhbmNlZENvbHVtblwiOiBjb2x1bWVTdHJpbmcsXG4gICAgICAgICAgXCJlbnJpY2hGdW5jdGlvblwiOiBlbGVtZW50LmVucmljaEZ1bmN0aW9uLFxuICAgICAgICAgIFwiY2FwdGlvblwiOiBlbGVtZW50LmNhcHRpb24sXG4gICAgICAgICAgJ2Rlcml2ZUZpZWxkJzogdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLmNvbHVtbnMucHVzaChub2RlKVxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnJlY29uVHlwZSA9PSBcImFic29sdXRlXCIpIHtcbiAgICAgICAgbGV0IGNvbHVtZVN0cmluZyA9IFwieyckYWJzJzogeyckY29uZCc6IHsgaWY6IHsgJGVxOiBbICckXCIgKyBlbGVtZW50LmNvbHVtZU9uZSArIFwiJywgMCBdIH0sIHRoZW46IDAsIGVsc2U6IHsnJGRpdmlkZSc6IFt7JyRzdWJ0cmFjdCc6IFsnJFwiICsgZWxlbWVudC5jb2x1bWVPbmUgKyBcIicsICckXCIgKyBlbGVtZW50LmNvbHVtZVR3byArIFwiJ119LCAnJFwiICsgZWxlbWVudC5jb2x1bWVPbmUgKyBcIiddfX19fVwiO1xuICAgICAgICBsZXQgbm9kZSA9IHtcbiAgICAgICAgICBcIm1lYXN1cmVzXCI6IHRydWUsXG4gICAgICAgICAgXCJkYXRhRmllbGRcIjogZWxlbWVudC5kYXRhRmllbGQsXG4gICAgICAgICAgXCJjb2x1bW5OYW1lXCI6IGVsZW1lbnQuZGF0YUZpZWxkLFxuICAgICAgICAgIFwiZnVuY3Rpb25OYW1lXCI6IFwiXCIsXG4gICAgICAgICAgXCJhZHZhbmNlZENvbHVtblwiOiBjb2x1bWVTdHJpbmcsXG4gICAgICAgICAgXCJlbnJpY2hGdW5jdGlvblwiOiBlbGVtZW50LmVucmljaEZ1bmN0aW9uLFxuICAgICAgICAgIFwiY2FwdGlvblwiOiBlbGVtZW50LmNhcHRpb24sXG4gICAgICAgICAgJ2Rlcml2ZUZpZWxkJzogdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLmNvbHVtbnMucHVzaChub2RlKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuXG4gIHNhdmVDb2x1bW5zQW5kTWFzdXJlcygpIHtcbiAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5tZWFzdXJlcyA9IFtdO1xuICAgIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLmRpbWVuc2lvbnMgPSBbXTtcbiAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5jb2x1bW5zLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAvLyBDaGVjayBpZiBlbGVtZW50LmFkdmFuY2VkQ29sdW1uIGlzIGFuIGVtcHR5IHN0cmluZyBhbmQgc2V0IGl0IHRvIG51bGxcbiAgICAgIGNvbnN0IGFkdmFuY2VkQ29sdW1uVmFsdWUgPSBlbGVtZW50LmFkdmFuY2VkQ29sdW1uID09PSBcIlwiID8gbnVsbCA6IGVsZW1lbnQuYWR2YW5jZWRDb2x1bW47XG5cbiAgICAgIGlmIChlbGVtZW50Lm1lYXN1cmVzKSB7XG4gICAgICAgIGxldCBvYmogPSB7XG4gICAgICAgICAgY29sdW1uTmFtZTogZWxlbWVudC5jb2x1bW5OYW1lLFxuICAgICAgICAgIGZ1bmN0aW9uTmFtZTogZWxlbWVudC5mdW5jdGlvbk5hbWUsXG4gICAgICAgICAgZW5yaWNoRnVuY3Rpb246IGVsZW1lbnQuZW5yaWNoRnVuY3Rpb24sXG4gICAgICAgICAgYWR2YW5jZWRDb2x1bW46IGFkdmFuY2VkQ29sdW1uVmFsdWUsXG4gICAgICAgICAgYWxpYXNOYW1lOiBlbGVtZW50LmRhdGFGaWVsZCxcbiAgICAgICAgfVxuICAgICAgICBpZiAoZWxlbWVudC5kZXJpdmVGaWVsZCkge1xuICAgICAgICAgIG9ialsnZGVyaXZlRmllbGQnXSA9IGVsZW1lbnQuZGVyaXZlRmllbGRcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5tZWFzdXJlcy5wdXNoKG9iaik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgb2JqID0ge1xuICAgICAgICAgIGNvbHVtbk5hbWU6IGVsZW1lbnQuY29sdW1uTmFtZSxcbiAgICAgICAgICBlbnJpY2hGdW5jdGlvbjogZWxlbWVudC5lbnJpY2hGdW5jdGlvbixcbiAgICAgICAgICBhbGlhc05hbWU6IGVsZW1lbnQuZGF0YUZpZWxkLFxuICAgICAgICB9XG4gICAgICAgIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLmRpbWVuc2lvbnMucHVzaChvYmopO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MoJ0NvbHVtbnMgU2F2ZWQgU3VjY2Vzc2Z1bGx5Jyk7XG4gICAgLy8gdGhpcy5zYXZlRGF0YVRvU3RvcmUoKVxuICB9XG5cbiAgc2F2ZURhdGFUb1N0b3JlKCkge1xuICAgIGNvbnN0IGJ1aWxkRGF0ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdxdWVyeWJ1aWxkZXInKTtcbiAgICBpZiAoYnVpbGREYXRlKSB7XG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShidWlsZERhdGUpO1xuICAgIH1cbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgncXVlcnlidWlsZGVyJywgSlNPTi5zdHJpbmdpZnkodGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQpKVxuICB9XG5cbiAgdHJhbnNmb3JtQ29sdW1uc0Zvck1lc3VycyhpbnB1dENvbHVtbnMpIHtcbiAgICBjb25zdCBtZWFzdXJlID0gW11cbiAgICBpbnB1dENvbHVtbnMuZm9yRWFjaChjb2wgPT4ge1xuXG5cbiAgICB9KTtcblxuICAgIHJldHVybiBtZWFzdXJlO1xuICB9XG5cblxuICBhZGRGaWx0ZXIoKSB7XG4gICAgbGV0IG9iaiA9IHtcbiAgICAgIFwidHlwZVwiOiBcIlwiLFxuICAgICAgXCJ2YWx1ZVwiOiBcIlwiLFxuICAgICAgXCJrZXlcIjogXCJcIixcbiAgICAgIFwiZGlzcGxheVwiOiBcIlwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIlwiXG4gICAgfVxuICAgIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLmZpbHRlci5wdXNoKG9iaik7XG4gIH1cblxuICBkZWxldGVGaWx0ZXIoaSkge1xuICAgIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLmZpbHRlci5zcGxpY2UoaSwgMSk7XG4gIH1cbiAgYWRkUGFyYW1zKCkge1xuICAgIGxldCBvYmogPSB7XG4gICAgICBcIm5hbWVcIjogXCJcIixcbiAgICAgIFwidmFsdWVcIjogXCJcIixcbiAgICB9XG4gICAgdGhpcy5yZXFGaWVsZHNEYXRhU291cmNlLnB1c2gob2JqKTtcbiAgfVxuXG5cbiAgZGVsZXRlUGFyYW1zKGkpIHtcbiAgICB0aGlzLnJlcUZpZWxkc0RhdGFTb3VyY2Uuc3BsaWNlKGksIDEpXG4gIH1cblxuICBhZGRTaG9ydENvbHVtbnMoKSB7XG4gICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcuc29ydGVycy5wdXNoKHsgXCJjb2x1bW5OYW1lXCI6IFwiXCIsIFwiZGVzY2VuZGluZ1wiOiBmYWxzZSB9KVxuICB9XG5cblxuICBkZWxldGVTaG9ydENvbHVtbnMoaSkge1xuICAgIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLnNvcnRlcnMuc3BsaWNlKGksIDEpXG4gIH1cblxuICBzYXZlUGFyYW1zKCkge1xuICAgIGxldCBwYWdpbmF0aW9uUmVxdWlyZWRFeGlzdHMgPSBmYWxzZTtcbiAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5yZXFGaWVsZHMgPSB0aGlzLnJlcUZpZWxkc0RhdGFTb3VyY2UubWFwKGl0ZW0gPT4ge1xuICAgICAgY29uc3QgbmV3T2JqOiBhbnkgPSB7fTtcbiAgICAgIGlmIChpdGVtLm5hbWUgPT09IFwicGFnaW5hdGlvblJlcXVpcmVkXCIpIHtcbiAgICAgICAgcGFnaW5hdGlvblJlcXVpcmVkRXhpc3RzID0gdHJ1ZTtcbiAgICAgICAgbmV3T2JqW2l0ZW0ubmFtZV0gPSBpdGVtLnZhbHVlID09PSBcInRydWVcIjtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGl0ZW0udmFsdWUgPT09IFwic3RyaW5nXCIgJiYgIWlzTmFOKGl0ZW0udmFsdWUgYXMgYW55KSAmJiBpdGVtLnZhbHVlLnRyaW0oKSAhPT0gXCJcIikge1xuICAgICAgICBuZXdPYmpbaXRlbS5uYW1lXSA9IE51bWJlcihpdGVtLnZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld09ialtpdGVtLm5hbWVdID0gaXRlbS52YWx1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ld09iajtcbiAgICB9KTtcblxuICAgIGlmICghcGFnaW5hdGlvblJlcXVpcmVkRXhpc3RzKSB7XG4gICAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5yZXFGaWVsZHMucHVzaCh7IHBhZ2luYXRpb25SZXF1aXJlZDogXCJmYWxzZVwiIH0pO1xuICAgIH1cblxuICAgIC8vIHRoaXMuc2F2ZURhdGFUb1N0b3JlKCk7XG4gICAgdGhpcy50b2FzdHIuc3VjY2VzcygnUGFnaW5hdGlvbiBSZXF1ZXN0IFBhcmFtcyBTYXZlZCBTdWNjZXNzZnVsbHknKTtcbiAgfVxuXG5cbiAgYWRkRmlsdGVyTWFwaW5nQ29sdW1ucygpIHtcbiAgICBsZXQgb2JqID0geyBcImxvY2FsQ29sdW1uXCI6IFwiXCIsIFwic2VydmVyQ29sdW1uXCI6IFwiXCIsIFwib3BlcmF0b3JOYW1lXCI6IFwiXCIsIFwiZGVmYXVsdFZhbHVlXCI6IFwiXCIsIFwiZGF0YVR5cGVcIjogXCJcIiB9XG4gICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcubWFwZWRGaWx0ZXJzLnB1c2gob2JqKTtcblxuICB9XG5cbiAgZGVsZXRlRmlsdGVyTWFwaW5nQ29sdW1ucyhpKSB7XG4gICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcubWFwZWRGaWx0ZXJzLnNwbGljZShpLCAxKVxuICB9XG5cbiAgbW92ZUl0ZW1Gb3JDb2x1bW5zKGluZGV4OiBudW1iZXIsIGRpcmVjdGlvbjogJ3VwJyB8ICdkb3duJyk6IHZvaWQge1xuICAgIC8vIFByZXZlbnQgbW92aW5nIGJleW9uZCBhcnJheSBib3VuZHNcbiAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLm1hcGVkRmlsdGVycy5sZW5ndGgpIHJldHVybjtcbiAgICBjb25zdCBuZXdQb3NpdGlvbiA9IGRpcmVjdGlvbiA9PT0gJ3VwJyA/IGluZGV4IC0gMSA6IGluZGV4ICsgMTtcbiAgICAvLyBQcmV2ZW50IG1vdmluZyBiZXlvbmQgYXJyYXkgYm91bmRzXG4gICAgaWYgKG5ld1Bvc2l0aW9uIDwgMCB8fCBuZXdQb3NpdGlvbiA+PSB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5tYXBlZEZpbHRlcnMubGVuZ3RoKSByZXR1cm47XG5cbiAgICAvLyBNb3ZlIGl0ZW1cbiAgICBjb25zdCBpdGVtVG9Nb3ZlID0gdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcubWFwZWRGaWx0ZXJzW2luZGV4XTtcbiAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5tYXBlZEZpbHRlcnMuc3BsaWNlKGluZGV4LCAxKTsgLy8gUmVtb3ZlIGl0ZW0gZnJvbSBjdXJyZW50IHBvc2l0aW9uXG4gICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcubWFwZWRGaWx0ZXJzLnNwbGljZShuZXdQb3NpdGlvbiwgMCwgaXRlbVRvTW92ZSk7IC8vIEluc2VydCBpdGVtIGluIG5ldyBwb3NpdGlvblxuICB9XG4gIG1vdmVJdGVtRm9yTWVhc3VyZXNDb2x1bW5zKGluZGV4OiBudW1iZXIsIGRpcmVjdGlvbjogJ3VwJyB8ICdkb3duJyk6IHZvaWQge1xuICAgIC8vIFByZXZlbnQgbW92aW5nIGJleW9uZCBhcnJheSBib3VuZHNcbiAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLmNvbHVtbnMubGVuZ3RoKSByZXR1cm47XG4gICAgY29uc3QgbmV3UG9zaXRpb24gPSBkaXJlY3Rpb24gPT09ICd1cCcgPyBpbmRleCAtIDEgOiBpbmRleCArIDE7XG4gICAgLy8gUHJldmVudCBtb3ZpbmcgYmV5b25kIGFycmF5IGJvdW5kc1xuICAgIGlmIChuZXdQb3NpdGlvbiA8IDAgfHwgbmV3UG9zaXRpb24gPj0gdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcuY29sdW1ucy5sZW5ndGgpIHJldHVybjtcblxuICAgIC8vIE1vdmUgaXRlbVxuICAgIGNvbnN0IGl0ZW1Ub01vdmUgPSB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5jb2x1bW5zW2luZGV4XTtcbiAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5jb2x1bW5zLnNwbGljZShpbmRleCwgMSk7IC8vIFJlbW92ZSBpdGVtIGZyb20gY3VycmVudCBwb3NpdGlvblxuICAgIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLmNvbHVtbnMuc3BsaWNlKG5ld1Bvc2l0aW9uLCAwLCBpdGVtVG9Nb3ZlKTsgLy8gSW5zZXJ0IGl0ZW0gaW4gbmV3IHBvc2l0aW9uXG4gIH1cblxuXG5cblxuICBjaGVja0ZvclF1ZXJ5KCkge1xuICAgIGxldCB0cmFuc2Zvcm1lZE9iamVjdDogYW55ID0ge307XG5cbiAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLnJlcUZpZWxkcykge1xuICAgICAgY29uc3Qga2V5ID0gT2JqZWN0LmtleXMoaXRlbSlbMF07XG4gICAgICBjb25zdCB2YWx1ZSA9IE9iamVjdC52YWx1ZXMoaXRlbSlbMF07XG5cbiAgICAgIGlmIChrZXkgPT09ICdzdGFydERhdGUnKSB7XG4gICAgICAgIHRyYW5zZm9ybWVkT2JqZWN0LnJlY29yZERhdGUgPSB2YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyYW5zZm9ybWVkT2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgdHJhbnNmb3JtZWRPYmplY3RbJ2RpbWVuc2lvbnMnXSA9IHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLmRpbWVuc2lvbnM7XG4gICAgdHJhbnNmb3JtZWRPYmplY3RbJ21lYXN1cmVzJ10gPSB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5tZWFzdXJlcztcbiAgICB0cmFuc2Zvcm1lZE9iamVjdFsnZmlsdGVycyddID0gdGhpcy50cmFuc2Zvcm1EYXRhRm9yTUZpbHRlcih0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5tYXBlZEZpbHRlcnMpOztcbiAgICB0cmFuc2Zvcm1lZE9iamVjdFsnc29ydGVycyddID0gdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcuc29ydGVycztcbiAgICB0cmFuc2Zvcm1lZE9iamVjdFtcInBhZ2luYXRpb25SZXF1aXJlZFwiXSA9IHRydWU7XG4gICAgY29uc29sZS5sb2codHJhbnNmb3JtZWRPYmplY3QpO1xuXG4gICAgdGhpcy5zZXJ2aWNlLnZhbGlkYXRlQWdncmVnYXRlUGFnaW5hdGVkUXVlcnkodHJhbnNmb3JtZWRPYmplY3QpLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xuICAgICAgdGhpcy5xdWVyeV9kYXRhID0gZGF0YS5xdWVyeVxuICAgICAgdGhpcy5pc01vZGVsVmlzaWJsZSA9IHRydWU7XG4gICAgfSwgZXJyID0+IHtcbiAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdVbmV4cGVjdGVkIFNlcnZlciBFeGNlcHRpb24uIFBsZWFzZSBjb250YWN0IFN5c3RlbSBBZG1pbi4nKVxuICAgIH0pXG4gIH1cblxuICBjbG9zZU1vZGFsVmlzaWJsZU1vZGFsKCkge1xuICAgIHRoaXMuaXNNb2RlbFZpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLnF1ZXJ5X2RhdGEgPSAnJztcbiAgfVxuXG4gIHRyYW5zZm9ybURhdGFGb3JNRmlsdGVyKG1hcGZpbHRlcikge1xuICAgIGxldCByZXN1bHQgPSBbXTtcbiAgICBtYXBmaWx0ZXIuZm9yRWFjaChtYXBwaW5nID0+IHtcbiAgICAgIGxldCByZXN1bHRPYmogPSB7XG4gICAgICAgIGNvbHVtbk5hbWU6IG1hcHBpbmcuc2VydmVyQ29sdW1uLFxuICAgICAgICBkYXRhVHlwZTogbWFwcGluZy5kYXRhVHlwZSxcbiAgICAgICAgb3BlcmF0b3I6IG1hcHBpbmcub3BlcmF0b3JOYW1lLFxuICAgICAgICB2YWx1ZTogbWFwcGluZy5kZWZhdWx0VmFsdWVcbiAgICAgIH07XG4gICAgICByZXN1bHQucHVzaChyZXN1bHRPYmopO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuXG4gIGNvcHlTcWxGcm9tTW9kYWwoKSB7XG4gICAgY29uc3QgbGlzdGVuZXIgPSAoZTogQ2xpcGJvYXJkRXZlbnQpID0+IHtcbiAgICAgIGUuY2xpcGJvYXJkRGF0YSEuc2V0RGF0YSgndGV4dC9wbGFpbicsIHRoaXMucXVlcnlfZGF0YSk7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfTtcbiAgICB0aGlzLmlzU3FsQ29waWVkVGV4dCA9IHRydWU7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY29weScsIGxpc3RlbmVyKTtcbiAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NvcHknLCBsaXN0ZW5lcik7XG4gIH1cblxuICBjcmVhdGVEYXRhU2V0KCkge1xuICAgIHRoaXMuZ2V0UXVlcnlCdWxiZGVyRGF0YVNldC5lbWl0KHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0KVxuICB9XG5cbiAgZ2V0UXVlcnlGb3JEZXRhaWxzRGF0YShlKSB7XG4gICAgaWYgKGUudmFsdWUgPT0gJ0Jhc2ljJykge1xuICAgICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQuYXBpID0gJy9rcGkvZ2VuZXJpY0RldGFpbERhdGFSZXNwb25zZSdcbiAgICAgIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLmNvbHVtbnMgPSBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQuYXBpID0gJy9rcGkvZ2VuZXJpY0FnZ3JlZ2F0ZVBhZ2luYXRlZEtwaVNlcnZpY2VSZXNwb25zZSc7XG4gICAgfVxuICB9XG5cblxuICBnZXREYXRhQ29uZmlnKGUpIHtcblxuICAgIGlmIChlLmV2ZW50KSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF0YVNvdXJjZSA9IGUudmFsdWU7XG4gICAgICB0aGlzLmlzUXVlcnlUeXBlU2VsZWN0ID0gdHJ1ZTtcbiAgICB9XG5cbiAgfVxuXG5cbiAgYWRkSGF2aW5nc0NvbHVtZSgpIHtcbiAgICBsZXQgb2JqID0ge1xuICAgICAgXCJjb2x1bW5OYW1lXCI6IFwiXCIsXG4gICAgICBcImFkdmFuY2VkQ29sdW1uXCI6IFwiXCIsXG4gICAgICBcImRhdGFUeXBlXCI6IFwiXCIsXG4gICAgICBcIm9wZXJhdG9yXCI6IFwiXCIsXG4gICAgICBcInZhbHVlXCI6IFwiXCJcbiAgICB9XG4gICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcuaGF2aW5ncy5wdXNoKG9iaik7XG4gIH1cblxuICBkZWxldGVIYXZpbmdzQ29sdW1lKGkpIHtcbiAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5oYXZpbmdzLnNwbGljZShpLCAxKTtcbiAgfVxuXG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJtLTJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBtYi0yXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJteC0yIHctMS8zXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+RW5kIFBvaW50PC9kaXY+XG4gICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJxdWVyeUJ1bGRlckRhdGFzZXQuYXBpXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJteC0yIHctMS8zXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+UXVlcnkgVHlwZTwvZGl2PlxuICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW2RhdGFTb3VyY2VdPVwiWydBZ2dyZWdhdGUnLCdCYXNpYyddXCIgKG9uVmFsdWVDaGFuZ2VkKT1cImdldFF1ZXJ5Rm9yRGV0YWlsc0RhdGEoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPC9keC1zZWxlY3QtYm94PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm14LTIgdy0xLzMgbXQtNlwiICpuZ0lmPVwic2VsZWN0ZWREYXRhU291cmNlID09ICdtb25nbydcIj5cbiAgICAgICAgICAgIDxkeC1jaGVjay1ib3ggWyhuZ01vZGVsKV09XCJpc1JlY29uQ29sdW1lXCIgdGV4dD0nUmVjb24gQ29sdW1uJz5cbiAgICAgICAgICAgIDwvZHgtY2hlY2stYm94PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGZsZXgtYXV0byBtaW4tdy0wIG15LTNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbGcgcHktMiBmb250LWV4dHJhYm9sZCBib3JkZXItYiBiZy1ncmF5LTcwMCB0ZXh0LXdoaXRlIHB4LTJcIj4gUmVxdWVzdCBQYXJhbXNcbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwdC0yIGJvcmRlci14IGJvcmRlci1iIFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTQgdy1mdWxsIHAtMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0yIGZsZXggZmxleC1yb3cgcHgtMiBib3JkZXItclwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIHJlcUZpZWxkc0RhdGFTb3VyY2U7IGxldCBpID0gaW5kZXg7XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gUGFyYW1zIE5hbWU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cIml0ZW0ubmFtZVwiPjwvZHgtdGV4dC1ib3g+XG5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gUGFyYW1zIFZhbHVlIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0ubmFtZSA9PSAnZGJDb25maWcnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW2l0ZW1zXT1cIlsnbW9uZ28nLCdpbXBhbGEnLCdwb3N0Z3JlcycsJ215c3FsJywnYmlncXVlcnknXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJnZXREYXRhQ29uZmlnKCRldmVudClcIiBbKG5nTW9kZWwpXT1cIml0ZW0udmFsdWVcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLm5hbWUgIT09ICdkYkNvbmZpZydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJpdGVtLnZhbHVlXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbXQtOFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX2Rhbmdlcl9zbX19IGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImRlbGV0ZVBhcmFtcyhpKVwiPjxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhIGZhLXRyYXNoLW9cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IG15LTIganVzdGlmeS1lbmRcIj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtc20gaXRhbGljIHRleHQtZ3JheS0zMDAgbXItNlwiPioqIFBsZWFzZSBTYXZlIFJlcXVlc3QgUGFyYW1zIEJlZm9yZSBTdWJtaXRcbiAgICAgICAgICAgICAgICAgICAgRGF0YXNldFxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9zdWNjZXNzX3NtfX0gY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic2F2ZVBhcmFtcygpXCI+U2F2ZVxuICAgICAgICAgICAgICAgICAgICBQYXJhbXM8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9wcmltYXJ5X3NtfX0gY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiYWRkUGFyYW1zKClcIj5BZGRcbiAgICAgICAgICAgICAgICAgICAgUGFyYW1zPC9idXR0b24+XG5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1F1ZXJ5VHlwZVNlbGVjdFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBmbGV4LWF1dG8gbWluLXctMCBteS0yXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1sZyBweS0yIGZvbnQtZXh0cmFib2xkIGJvcmRlci1iIGJnLWdyYXktNzAwIHRleHQtd2hpdGUgcHgtMlwiPiBDb2x1bW5zIGFuZCBNZWFzdXJlc1xuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHQtMiBib3JkZXIteCBib3JkZXItYiBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMiBmbGV4IGp1c3RpZnktYmV0d2VlblwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5jb2x1bW5zOyBsZXQgaSA9IGluZGV4O1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IE1lYXN1cmVzPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtY2hlY2stYm94IFt2YWx1ZV09XCJpdGVtLm1lYXN1cmVzXCIgWyhuZ01vZGVsKV09XCJpdGVtLm1lYXN1cmVzXCI+PC9keC1jaGVjay1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IFZhbHVlIEZpZWxkKGFsaWFzTmFtZSk8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cIml0ZW0uZGF0YUZpZWxkXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gU2VydmVyIENvbHVtbiBOYW1lPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJpdGVtLmNvbHVtbk5hbWVcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBGdW5jdGlvbiBOYW1lPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCIgW2l0ZW1zXT1cImtwaV9mdW5jdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLmZ1bmN0aW9uTmFtZVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gRW5yaWNoIE5hbWU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtzZWFyY2hFbmFibGVkXT1cInRydWVcIiBbaXRlbXNdPVwia3BpX2VucmljaG1lbnRfbmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLmVucmljaEZ1bmN0aW9uXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBBZHZhbmNlZCBDb2x1bW48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cIml0ZW0uYWR2YW5jZWRDb2x1bW5cIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBDYXB0aW9uPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJpdGVtLmNhcHRpb25cIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbXQtOFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaSAhPT0gMFwiIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9saWdodF9zbX19IGN1cnNvci1wb2ludGVyIG14LTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibW92ZUl0ZW1Gb3JNZWFzdXJlc0NvbHVtbnMoaSwgJ3VwJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1hcnJvdy11cFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpICE9PSBxdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcuY29sdW1ucy5sZW5ndGggLSAxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX2xpZ2h0X3NtfX0gY3Vyc29yLXBvaW50ZXIgbXgtMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlSXRlbUZvck1lYXN1cmVzQ29sdW1ucyhpLCAnZG93bicpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctZG93blwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbXQtOCB0ZXh0LWNlbnRlclwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9kYW5nZXJfc219fSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJkZWxldGVDb2x1bW5zKGkpXCI+PGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYSBmYS10cmFzaC1vXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1lbmQgbXktMlwiPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtc20gaXRhbGljIHRleHQtZ3JheS0zMDAgbXItNlwiPioqIFBsZWFzZSBTYXZlIENvbHVtbnMgQW5kIE1lYXN1cmVzIEJlZm9yZSBTdWJtaXRcbiAgICAgICAgICAgICAgICAgICAgICAgIERhdGFzZXRcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9zdWNjZXNzX3NtfX0gY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNhdmVDb2x1bW5zQW5kTWFzdXJlcygpXCI+U2F2ZVxuICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uczwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9wcmltYXJ5X3NtfX0gY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiYWRkQ29sdW1ucygpXCI+QWRkXG4gICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5zPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNSZWNvbkNvbHVtZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZmxleC1hdXRvIG1pbi13LTAgbXktMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxnIHB5LTIgZm9udC1leHRyYWJvbGQgYm9yZGVyLWIgYmctZ3JheS03MDAgdGV4dC13aGl0ZSBweC0yXCI+IEFkZCBSZWNvbiBDb2x1bW5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHQtMiBib3JkZXIteCBib3JkZXItYiBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTIgZmxleCBqdXN0aWZ5LWJldHdlZW5cIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiByZWNvbkNvbHVtZURhdGFzb3VyY2U7IGxldCBpID0gaW5kZXg7XCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IFZhbHVlIEZpZWxkKGFsaWFzTmFtZSk8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJpdGVtLmRhdGFGaWVsZFwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IEZpcnN0IEtleTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cIml0ZW0uY29sdW1lT25lXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gU2Vjb25kIEtleTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cIml0ZW0uY29sdW1lVHdvXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBFbnJpY2ggTmFtZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtzZWFyY2hFbmFibGVkXT1cInRydWVcIiBbaXRlbXNdPVwia3BpX2VucmljaG1lbnRfbmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS5lbnJpY2hGdW5jdGlvblwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gUmVjb24gVHlwZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtzZWFyY2hFbmFibGVkXT1cInRydWVcIiBbaXRlbXNdPVwiWyd2YXJpYW5jZScsJ3BlcmNlbnRhZ2UnLCdhYnNvbHV0ZSddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLnJlY29uVHlwZVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBDYXB0aW9uPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiaXRlbS5jYXB0aW9uXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtdC04IHRleHQtY2VudGVyXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9kYW5nZXJfc219fSBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVSZWNvbkNvbHVtZShpKVwiPjxpIGNsYXNzPVwiZmEgZmEtdHJhc2gtb1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1lbmQgbXktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fc3VjY2Vzc19zbX19IGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZVJlY29uc0NvbHVtZSgpXCI+U2F2ZSBUb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbnM8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3ByaW1hcnlfc219fSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJhZGRSZWNvbkNvbHVtZSgpXCI+QWRkXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZmxleC1hdXRvIG1pbi13LTAgbXktMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxnIHB5LTIgZm9udC1leHRyYWJvbGQgYm9yZGVyLWIgYmctZ3JheS03MDAgdGV4dC13aGl0ZSBweC0yXCI+IEFkZCBIYXZpbmcgQ29sdW1uXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB0LTIgYm9yZGVyLXggYm9yZGVyLWIgXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0yIGZsZXgganVzdGlmeS1iZXR3ZWVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5oYXZpbmdzOyBsZXQgaSA9IGluZGV4O1wiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gQ29sdW1uIE5hbWU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJpdGVtLmNvbHVtbk5hbWVcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gQWR2YW5jZWQgQ29sdW1uPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiaXRlbS5hZHZhbmNlZENvbHVtblwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBEYXRhIFR5cGU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJpdGVtLmRhdGFUeXBlXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gT3BlcmF0b3I8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbaXRlbXNdPVwiWydnZXQnLCdsdGUnXVwiIFsobmdNb2RlbCldPVwiaXRlbS5vcGVyYXRvclwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gVmFsdWU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJpdGVtLnZhbHVlXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtdC04IHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fZGFuZ2VyX3NtfX0gY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlSGF2aW5nc0NvbHVtZShpKVwiPjxpIGNsYXNzPVwiZmEgZmEtdHJhc2gtb1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1lbmQgbXktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fcHJpbWFyeV9zbX19IGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImFkZEhhdmluZ3NDb2x1bWUoKVwiPkFkZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhdmluZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGZsZXgtYXV0byBtaW4tdy0wIG15LTNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxnIHB5LTIgZm9udC1leHRyYWJvbGQgYm9yZGVyLWIgYmctZ3JheS03MDAgdGV4dC13aGl0ZSBweC0yXCI+IFNvcnQgQnlcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB0LTIgYm9yZGVyLXggYm9yZGVyLWIgXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTQgdy1mdWxsIHAtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMiBmbGV4IGZsZXgtcm93IHB4LTIgYm9yZGVyLXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLnNvcnRlcnM7IGxldCBpID0gaW5kZXg7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBQYXJhbXMgTmFtZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cIml0ZW0uY29sdW1uTmFtZVwiPjwvZHgtdGV4dC1ib3g+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTIgbXQtOFwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LWNoZWNrLWJveCB0ZXh0PVwiRGVzY2VuZGluZ1wiIFsobmdNb2RlbCldPVwiaXRlbS5kZXNjZW5kaW5nXCI+PC9keC1jaGVjay1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbXQtOFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9kYW5nZXJfc219fSBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlU2hvcnRDb2x1bW5zKGkpXCI+PGkgY2xhc3M9XCJmYSBmYS10cmFzaC1vXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBteS0yIGp1c3RpZnktZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3ByaW1hcnlfc219fSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJhZGRTaG9ydENvbHVtbnMoKVwiPkFkZFxuICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGZsZXgtYXV0byBtaW4tdy0wIG15LTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxnIHB5LTIgZm9udC1leHRyYWJvbGQgYm9yZGVyLWIgYmctZ3JheS03MDAgdGV4dC13aGl0ZSBweC0yXCI+IEZpbHRlciBNYXBpbmdcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB0LTIgYm9yZGVyLXggYm9yZGVyLWIgXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTIgZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWJldHdlZW5cIlxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBxdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcubWFwZWRGaWx0ZXJzOyBsZXQgaSA9IGluZGV4O1wiPlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IExvY2FsIENvbHVtbjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiaXRlbS5sb2NhbENvbHVtblwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBTZXJ2ZXIgQ29sdW1uPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJpdGVtLnNlcnZlckNvbHVtblwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBPcGVyYXRvcjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiIFtpdGVtc109XCJrcGlfb3BlcmF0b3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS5vcGVyYXRvck5hbWVcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBEYXRhdHlwZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cIlsnZGF0ZScsJ3N0cmluZycsJ3RpbWVzdGFtcCcsJ2ludCcsICdkb3VibGUnLCAnYm9vbGVhbiddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0uZGF0YVR5cGVcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBEZWZhdWx0IFZhbHVlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJpdGVtLmRlZmF1bHRWYWx1ZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtdC04XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpICE9PSAwXCIgY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX2xpZ2h0X3NtfX0gY3Vyc29yLXBvaW50ZXIgbXgtMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlSXRlbUZvckNvbHVtbnMoaSwgJ3VwJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1hcnJvdy11cFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpICE9PSBxdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcubWFwZWRGaWx0ZXJzLmxlbmd0aCAtIDFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fbGlnaHRfc219fSBjdXJzb3ItcG9pbnRlciBteC0xXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVJdGVtRm9yQ29sdW1ucyhpLCAnZG93bicpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctZG93blwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbXQtOCB0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fZGFuZ2VyX3NtfX0gY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVGaWx0ZXJNYXBpbmdDb2x1bW5zKGkpXCI+PGkgY2xhc3M9XCJmYSBmYS10cmFzaC1vXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEvMlwiICpuZ0lmPVwic2VsZWN0ZWREYXRhU291cmNlICE9PSAnbW9uZ28nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktc3RhcnQgbXktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5PdGhlcnNQdXJwbGV9fSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJjaGVja0ZvclF1ZXJ5KClcIj5DaGVja1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1lbmQgbXktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fcHJpbWFyeV9zbX19IGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkRmlsdGVyTWFwaW5nQ29sdW1ucygpXCI+QWRkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFwaW5nPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IHctZnVsbCBqdXN0aWZ5LWVuZCBtdC01IGJvcmRlci10XCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9zdWNjZXNzX21kfX0gY3Vyc29yLXBvaW50ZXIgbXgtMSBteS0yXCIgKGNsaWNrKT1cImNyZWF0ZURhdGFTZXQoKVwiPlxuICAgICAgICAgICAgICAgIFN1Ym1pdCBEYXRhU2V0XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cblxuPC9kaXY+XG5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTW9kZWxWaXNpYmxlXCI+XG4gICAgPGRpdiBjbGFzcz1cImZpeGVkIGluc2V0LTAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgei01MCBiZy1ibGFjayBiZy1vcGFjaXR5LTUwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBwLTQgdy1mdWxsIG1heC13LTN4bCBtYXgtaC1mdWxsXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgYmctd2hpdGUgcm91bmRlZC1sZyBzaGFkb3cgIFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcC00IG1kOnAtNSBib3JkZXItYiByb3VuZGVkLXQgXCI+XG4gICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cInRleHQteGwgZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwIFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgUXVlcnkgPC9oMz5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlTW9kYWxWaXNpYmxlTW9kYWwoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZ3JheS00MDAgYmctdHJhbnNwYXJlbnQgaG92ZXI6YmctZ3JheS0yMDAgaG92ZXI6dGV4dC1ncmF5LTkwMCByb3VuZGVkLWxnIHRleHQtc20gdy04IGgtOCBtcy1hdXRvIGlubGluZS1mbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1tb2RhbC1oaWRlPVwic3RhdGljLW1vZGFsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwidy0zIGgtM1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNCAxNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZS13aWR0aD1cIjJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwibTEgMSA2IDZtMCAwIDYgNk03IDdsNi02TTcgN2wtNiA2XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+Q2xvc2U8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwhLS0gTW9kYWwgYm9keSAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy02OSBwLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgYmctZ3JheS04MDAgdGV4dC13aGl0ZSB0ZXh0LWxnIHAtNCByb3VuZGVkLW1kIHRleHQtd3JhcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGNvZGU+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e3F1ZXJ5X2RhdGF9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9jb2RlPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgYm9yZGVyLXQgYm9yZGVyLWdyYXktMjAwIHJvdW5kZWQtYiBwLTIganVzdGlmeS1lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWdyYXktNzAwIHB4LTJcIiAqbmdJZj1cImlzU3FsQ29waWVkVGV4dFwiPkNvcGllZDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBkYXRhLW1vZGFsLWhpZGU9XCJzdGF0aWMtbW9kYWxcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3N1Y2Nlc3Nfc219fSBweS0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb3B5U3FsRnJvbU1vZGFsKClcIj5Db3B5PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj4iXX0=
|
package/esm2020/lib/application-controller/application-filter/application-filter.component.mjs
CHANGED
|
@@ -47,7 +47,7 @@ export class ApplicationFilterComponent {
|
|
|
47
47
|
"momentFormat": "YYYY-MM-DD"
|
|
48
48
|
}]
|
|
49
49
|
};
|
|
50
|
-
this.filter_type = ['single', 'multiple', 'date', 'datetime', "content"];
|
|
50
|
+
this.filter_type = ['single', 'multiple', 'date', 'datetime', "content", "context"];
|
|
51
51
|
this.defaultFilterTypeDataSource = ['static', 'dynamic'];
|
|
52
52
|
this.momentFunction = ["subtract", "add", "startOf", "endOf"];
|
|
53
53
|
}
|
|
@@ -213,4 +213,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
213
213
|
type: Component,
|
|
214
214
|
args: [{ selector: 'app-application-filter', template: "<div class=\"flex flex-col flex-auto min-w-0\">\n <lib-common-header [pageTitle]=\"'Application Filters'\"></lib-common-header>\n\n\n\n\n <div class=\"p-4 w-full\">\n <div class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <h6\n class=\"mb-2 font-bold text-lg tracking-tight text-gray-900 dark:text-white border-b pb-3 flex items-center\">\n <i class=\"fa fa-table mr-2\"></i> Filters\n <div class=\"ml-auto\">\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white font-bold py-1 px-3 rounded\"\n (click)=\"getCreateNewFilter()\">\n Add Filter\n </button>\n </div>\n </h6>\n <app-loader *ngIf=\"isLoader\"></app-loader>\n <dx-data-grid [columnAutoWidth]=\"true\" [dataSource]=\"filterDataSource\" [hoverStateEnabled]=\"true\"\n *ngIf=\"!isLoader\" [selectedRowKeys]=\"[]\" [showBorders]=\"true\" [showColumnLines]=\"true\"\n [showRowLines]=\"true\" id=\"gridContainer\">\n <dxo-paging [pageSize]=\"10\"></dxo-paging>\n <dxo-export [enabled]=\"true\"></dxo-export>\n\n <dxi-column dataField=\"filterName\"></dxi-column>\n <dxi-column dataField=\"filterId\"></dxi-column>\n <dxi-column dataField=\"createdBy\"></dxi-column>\n <dxi-column dataField=\"creationDate\"></dxi-column>\n <dxi-column dataField=\"action\" cellTemplate=\"cellTemplate\" [fixed]=\"true\"\n fixedPosition=\"right\"></dxi-column>\n <div *dxTemplate=\"let data of 'cellTemplate'\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"editFilter(data.data)\">\n Edit\n </button>\n <button class=\"{{commonService.btn_danger_md}}\" (click)=\"deleteFilter(data.data)\">\n Delete\n </button>\n </div>\n\n\n </dx-data-grid>\n </div>\n </div>\n <div class=\"p-2 w-full\" *ngIf=\"isNewFilterCreate\">\n <div class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <h6\n class=\"mb-2 font-bold text-lg tracking-tight text-gray-900 dark:text-white border-b pb-3 flex items-center\">\n <i class=\"fa fa-table mr-2\"></i> Create Filters\n\n </h6>\n <div class=\"flex flex-row my-2\">\n <div class=\"mx-2 w-1/3\">\n <div class=\"text-md mb-2\">Filter Name</div>\n <dx-text-box [(ngModel)]=\"creatFilterObject.filterName\"></dx-text-box>\n </div>\n </div>\n <div class=\"m-5 border\">\n <div class=\"flex flex-col flex-auto min-w-0 \">\n <div class=\"text-lg py-2 font-extrabold border-b bg-gray-700 text-white px-2\"> Select Filters\n </div>\n <div class=\"pt-2 border-x border-b \">\n <ng-container *ngFor=\"let item of creatFilterObject.filterItems; let i = index;\">\n <div class=\"my-2 flex flex-row justify-between border-b\">\n\n <div class=\"px-2 mb-2 w-full\">\n <div class=\"text-md mb-2 mt-5\"> </div>\n <dx-check-box [(ngModel)]=\"item.display\" text=\"Display\"></dx-check-box>\n </div>\n <div class=\"px-2 mb-2 w-full\">\n <div class=\"text-md mb-2\">Filter Name </div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"kpiFilterConfigService\"\n displayExpr=\"apiName\" valueExpr=\"apiUrl\"\n [(ngModel)]=\"item.apiName\"></dx-select-box>\n </div>\n\n <div class=\"px-2 mb-2 w-full\">\n <div class=\"text-md mb-2\">Operator Key Name </div>\n <dx-text-box [(ngModel)]=\"item.operatorName\"></dx-text-box>\n\n </div>\n <div class=\"px-2 mb-2 w-full\">\n <div class=\"text-md mb-2\"> FIlter Label</div>\n <dx-text-box [(ngModel)]=\"item.label\"></dx-text-box>\n </div>\n <div class=\"px-2 mb-2 w-full\">\n <div class=\"text-md mb-2\"> FIlter Container</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"filter_type\"\n [(ngModel)]=\"item.filterType\"></dx-select-box>\n\n </div>\n <div class=\"px-2 mb-2 w-full\">\n <div class=\"text-md mb-2\"> FIlter type</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"defaultFilterTypeDataSource\"\n [(ngModel)]=\"item.defaultFilterType\"\n value=\"defaultFilterTypeDataSource[0]\"></dx-select-box>\n\n </div>\n\n <ng-container\n *ngIf=\"item.defaultFilterType == 'dynamic' && (item.filterType == 'date' || item.filterType == 'datetime')\">\n <div class=\"px-2 mb-2 w-full\">\n <div class=\"text-md mb-2\"> Function </div>\n <dx-select-box [items]=\"momentFunction\"\n [(ngModel)]=\"item.momentFunction\"></dx-select-box>\n </div>\n <div class=\"px-2 mb-2 w-full\">\n <div class=\"text-md mb-2\"> Additionals </div>\n <dx-text-box [(ngModel)]=\"item.momentFormat\"></dx-text-box>\n </div>\n\n </ng-container>\n <ng-container\n *ngIf=\"item.defaultFilterType == 'static' && (item.filterType == 'date' || item.filterType == 'datetime')\">\n <div class=\"px-2 mb-2 w-full\">\n <div class=\"text-md mb-2\"> Default Value </div>\n <dx-text-box \n [(ngModel)]=\"item.defaultFilterValue\"></dx-text-box>\n </div>\n <div class=\"px-2 mb-2 w-full\">\n <div class=\"text-md mb-2\"> Display Format </div>\n <dx-text-box [(ngModel)]=\"item.momentFormat\"></dx-text-box>\n </div>\n </ng-container>\n <ng-container\n *ngIf=\"item.defaultFilterType == 'dynamic' && (item.filterType !== 'date' || item.filterType !== 'datetime')\">\n <div class=\"px-2 mb-2 w-full\">\n <div class=\"text-md mb-2\"> FIlter Default Value</div>\n <dx-text-box [(ngModel)]=\"item.defaultFilterValue\"></dx-text-box>\n </div>\n </ng-container>\n\n <div class=\"px-2 mt-8 text-center\">\n <button class=\"{{commonService.btn_danger_sm}} cursor-pointer\"\n (click)=\"deleteFilters(i)\"><i class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </ng-container>\n <div class=\"flex flex-row justify-end my-2\">\n <button class=\"{{commonService.btn_primary_sm}} cursor-pointer\" (click)=\"addFilter()\">Add\n Columns</button>\n </div>\n </div>\n </div>\n </div>\n <div class=\"flex w-full justify-end mt-5 border-t\">\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mx-1 my-2\" (click)=\"createFilterItems()\">\n Submit Filter\n </button>\n </div>\n\n </div>\n </div>\n\n\n\n</div>" }]
|
|
215
215
|
}], ctorParameters: function () { return [{ type: i1.ApplicationContentService }, { type: i2.CommonService }, { type: i3.ToastrService }, { type: i4.Router }]; } });
|
|
216
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9hcHBsaWNhdGlvbi1maWx0ZXIvYXBwbGljYXRpb24tZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9hcHBsaWNhdGlvbi1maWx0ZXIvYXBwbGljYXRpb24tZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFHbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBUy9DLE1BQU0sT0FBTywwQkFBMEI7SUFtQ3JDLFlBQ1UsT0FBa0MsRUFDbkMsYUFBNEIsRUFDM0IsTUFBcUIsRUFDckIsTUFBYztRQUhkLFlBQU8sR0FBUCxPQUFPLENBQTJCO1FBQ25DLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzNCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQXRDeEIscUJBQWdCLEdBQVEsRUFBRSxDQUFDO1FBRzNCLHNCQUFpQixHQUFRO1lBQ3ZCLFVBQVUsRUFBRSxFQUFFO1lBQ2QsV0FBVyxFQUFFLENBQUM7b0JBQ1osU0FBUyxFQUFFLFdBQVc7b0JBQ3RCLE9BQU8sRUFBRSxZQUFZO29CQUNyQixZQUFZLEVBQUUsTUFBTTtvQkFDcEIsU0FBUyxFQUFFLElBQUk7b0JBQ2YsY0FBYyxFQUFFLEVBQUU7b0JBQ2xCLG1CQUFtQixFQUFFLFNBQVM7b0JBQzlCLG9CQUFvQixFQUFFLFNBQVM7b0JBQy9C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LENBQUMsS0FBSyxDQUFDLDJEQUEyRCxFQUFFLG9CQUFvQixDQUFDLENBQUE7WUFDdEcsQ0FBQztTQUNGLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFLRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUNELFNBQVM7UUFDUCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLHdDQUF3QyxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMscUNBQXFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFDRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDLENBQUM7SUFDakUsQ0FBQzs7dUhBMU5VLDBCQUEwQjsyR0FBMUIsMEJBQTBCLDhEQ1p2QywwL1JBNkpNOzJGRGpKTywwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0Usd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uQ29udGVudFNlcnZpY2UgfSBmcm9tICcuLi9hcHBsaWNhdGlvbi1jb250ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xuaW1wb3J0IHsgY29uZmlybSB9IGZyb20gJ2RldmV4dHJlbWUvdWkvZGlhbG9nJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWFwcGxpY2F0aW9uLWZpbHRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHBsaWNhdGlvbi1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hcHBsaWNhdGlvbi1maWx0ZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBBcHBsaWNhdGlvbkZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGZpbHRlckRhdGFTb3VyY2U6IGFueSA9IFtdO1xuICBpc05ld0ZpbHRlckNyZWF0ZTogYm9vbGVhbjtcbiAgaXNMb2FkZXI6IGJvb2xlYW47XG4gIGNyZWF0RmlsdGVyT2JqZWN0OiBhbnkgPSB7XG4gICAgZmlsdGVyTmFtZTogXCJcIixcbiAgICBmaWx0ZXJJdGVtczogW3tcbiAgICAgIFwiYXBpTmFtZVwiOiBcInN0YXJ0RGF0ZVwiLFxuICAgICAgXCJsYWJlbFwiOiBcIlN0YXJ0IERhdGVcIixcbiAgICAgIFwiZmlsdGVyVHlwZVwiOiBcImRhdGVcIixcbiAgICAgIFwiZGlzcGxheVwiOiB0cnVlLFxuICAgICAgXCJvcGVyYXRvck5hbWVcIjogXCJcIixcbiAgICAgIFwiZGVmYXVsdEZpbHRlclR5cGVcIjogXCJkeW5hbWljXCIsXG4gICAgICBcImRlZmF1bHRGaWx0ZXJWYWx1ZVwiOiBcIjE1LGRheXNcIixcbiAgICAgIFwibW9tZW50RnVuY3Rpb25cIjogXCJzdWJ0cmFjdFwiLFxuICAgICAgXCJtb21lbnRGb3JtYXRcIjogXCJZWVlZLU1NLUREXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwiYXBpTmFtZVwiOiBcImVuZERhdGVcIixcbiAgICAgIFwibGFiZWxcIjogXCJFbmQgRGF0ZVwiLFxuICAgICAgXCJkaXNwbGF5XCI6IHRydWUsXG4gICAgICBcImZpbHRlclR5cGVcIjogXCJkYXRlXCIsXG4gICAgICBcIm9wZXJhdG9yTmFtZVwiOiBcIlwiLFxuICAgICAgXCJkZWZhdWx0RmlsdGVyVHlwZVwiOiBcImR5bmFtaWNcIixcbiAgICAgIFwiZGVmYXVsdEZpbHRlclZhbHVlXCI6IFwiMSxkYXlzXCIsXG4gICAgICBcIm1vbWVudEZ1bmN0aW9uXCI6IFwic3VidHJhY3RcIixcbiAgICAgIFwibW9tZW50Rm9ybWF0XCI6IFwiWVlZWS1NTS1ERFwiXG4gICAgfV1cbiAgfVxuXG4gIGZpbHRlcl90eXBlID0gWydzaW5nbGUnLCAnbXVsdGlwbGUnLCAnZGF0ZScsICdkYXRldGltZScsIFwiY29udGVudFwiXVxuICBkZWZhdWx0RmlsdGVyVHlwZURhdGFTb3VyY2UgPSBbJ3N0YXRpYycsICdkeW5hbWljJ11cblxuICBtb21lbnRGdW5jdGlvbiA9IFtcInN1YnRyYWN0XCIsIFwiYWRkXCIsIFwic3RhcnRPZlwiLCBcImVuZE9mXCJdXG4gIGtwaUZpbHRlckNvbmZpZ1NlcnZpY2U6IGFueTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBBcHBsaWNhdGlvbkNvbnRlbnRTZXJ2aWNlLFxuICAgIHB1YmxpYyBjb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzTG9hZGVyID0gdHJ1ZTtcbiAgICB0aGlzLmdldEtQSVJlZmVyZW5jZUVuZFBvaW50cygpO1xuICAgIHRoaXMuZ2V0RmlsdGVyRGF0YVNldCgpO1xuXG4gIH1cblxuICBnZXRGaWx0ZXJEYXRhU2V0KCkge1xuICAgIHRoaXMuaXNMb2FkZXIgPSB0cnVlO1xuICAgIHRoaXMuc2VydmljZS5nZXRBcHBGaWx0ZXJDb25maWdzKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5maWx0ZXJEYXRhU291cmNlID0gZGF0YTtcbiAgICAgICAgdGhpcy5pc0xvYWRlciA9IGZhbHNlO1xuICAgICAgfSwgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcignVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uJywgJ0ZpbHRlciBDcmVhdGlvbicpXG5cbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgYWRkRmlsdGVyKCkge1xuICAgIGxldCBvYmogPSB7XG4gICAgICBcImFwaU5hbWVcIjogXCJcIixcbiAgICAgIFwiZGlzcGxheVwiOiB0cnVlLFxuICAgICAgXCJsYWJlbFwiOiBcIlwiLFxuICAgICAgXCJmaWx0ZXJUeXBlXCI6IFwiXCIsXG4gICAgICBcIm9wZXJhdG9yTmFtZVwiOiBcIlwiLFxuICAgICAgXCJkZWZhdWx0RmlsdGVyVHlwZVwiOiBcIlwiLFxuICAgICAgXCJkZWZhdWx0RmlsdGVyVmFsdWVcIjogXCJcIlxuICAgIH1cbiAgICB0aGlzLmNyZWF0RmlsdGVyT2JqZWN0LmZpbHRlckl0ZW1zLnB1c2gob2JqKTtcbiAgfVxuXG4gIGRlbGV0ZUZpbHRlcnMoaSkge1xuICAgIHRoaXMuY3JlYXRGaWx0ZXJPYmplY3QuZmlsdGVySXRlbXMuc3BsaWNlKGksIDEpXG4gIH1cblxuXG4gIGdldENyZWF0ZU5ld0ZpbHRlcigpIHtcbiAgICB0aGlzLmlzTmV3RmlsdGVyQ3JlYXRlID0gdHJ1ZTtcbiAgICB0aGlzLmNyZWF0RmlsdGVyT2JqZWN0ID0ge1xuICAgICAgZmlsdGVyTmFtZTogXCJcIixcbiAgICAgIGZpbHRlckl0ZW1zOiBbe1xuICAgICAgICBcImFwaU5hbWVcIjogXCJzdGFydERhdGVcIixcbiAgICAgICAgXCJsYWJlbFwiOiBcIlN0YXJ0IERhdGVcIixcbiAgICAgICAgXCJmaWx0ZXJUeXBlXCI6IFwiZGF0ZVwiLFxuICAgICAgICBcImRpc3BsYXlcIjogdHJ1ZSxcbiAgICAgICAgXCJvcGVyYXRvck5hbWVcIjogXCJcIixcbiAgICAgICAgXCJkZWZhdWx0RmlsdGVyVHlwZVwiOiBcImR5bmFtaWNcIixcbiAgICAgICAgXCJkZWZhdWx0RmlsdGVyVmFsdWVcIjogXCIxNSxkYXlzXCIsXG4gICAgICAgIFwibW9tZW50RnVuY3Rpb25cIjogXCJzdWJ0cmFjdFwiLFxuICAgICAgICBcIm1vbWVudEZvcm1hdFwiOiBcIllZWVktTU0tRERcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJhcGlOYW1lXCI6IFwiZW5kRGF0ZVwiLFxuICAgICAgICBcImxhYmVsXCI6IFwiRW5kIERhdGVcIixcbiAgICAgICAgXCJkaXNwbGF5XCI6IHRydWUsXG4gICAgICAgIFwiZmlsdGVyVHlwZVwiOiBcImRhdGVcIixcbiAgICAgICAgXCJvcGVyYXRvck5hbWVcIjogXCJcIixcbiAgICAgICAgXCJkZWZhdWx0RmlsdGVyVHlwZVwiOiBcImR5bmFtaWNcIixcbiAgICAgICAgXCJkZWZhdWx0RmlsdGVyVmFsdWVcIjogXCIxLGRheXNcIixcbiAgICAgICAgXCJtb21lbnRGdW5jdGlvblwiOiBcInN1YnRyYWN0XCIsXG4gICAgICAgIFwibW9tZW50Rm9ybWF0XCI6IFwiWVlZWS1NTS1ERFwiXG4gICAgICB9XVxuICAgIH1cbiAgfVxuXG4gIGVkaXRGaWx0ZXIoZGF0YSkge1xuICAgIHRoaXMuY3JlYXRGaWx0ZXJPYmplY3QgPSBkYXRhO1xuICAgIHRoaXMuaXNOZXdGaWx0ZXJDcmVhdGUgPSB0cnVlO1xuICB9XG5cbiAgZGVsZXRlRmlsdGVyKGl0ZW0pIHtcbiAgICBsZXQgcmVzdWx0ID0gY29uZmlybShcIjxpPkFyZSBZb3UgU3VyZT88L2k+XCIsIFwiRGVsZXRlIEZpbHRlclwiKTtcbiAgICByZXN1bHQudGhlbigoZGlhbG9nUmVzdWx0KSA9PiB7XG4gICAgICBpZiAoZGlhbG9nUmVzdWx0KSB7XG4gICAgICAgIHRoaXMuaXNMb2FkZXIgPSB0cnVlO1xuICAgICAgICB0aGlzLnNlcnZpY2UuZGVsZXRlQXBwRmlsdGVyQ29uZmlnKGl0ZW0uZmlsdGVySWQpLnN1YnNjcmliZSgodmFsOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmdldEZpbHRlckRhdGFTZXQoKTtcbiAgICAgICAgICB0aGlzLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcygnRmlsdGVyIERlbGV0ZWQgU3VjY2Vzc2Z1bGx5JylcbiAgICAgICAgfSwgZXJyID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdVbmV4cGVjdGVkIFNlcnZlciBFeGNlcHRpb24uIFBsZWFzZSBjb250YWN0IFN5c3RlbSBBZG1pbi4nLCAnUnVsZSBNb2R1bGUnKTtcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUZpbHRlckl0ZW1zKCkge1xuICAgIHRoaXMuaXNMb2FkZXIgPSB0cnVlO1xuXG4gICAgaWYgKHRoaXMuY3JlYXRGaWx0ZXJPYmplY3RbJ2ZpbHRlcklkJ10pIHtcbiAgICAgIHRoaXMuc2VydmljZS5lZGl0QXBwRmlsdGVyQ29uZmlnKHRoaXMuY3JlYXRGaWx0ZXJPYmplY3QpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmdldEZpbHRlckRhdGFTZXQoKTtcbiAgICAgICAgICB0aGlzLmlzTmV3RmlsdGVyQ3JlYXRlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5pc0xvYWRlciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MoJ0ZpbHRlciBDcmVhdGVkIFN1Y2Nlc3NmdWxseScpXG4gICAgICAgIH0sIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcignVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uJywgJ0ZpbHRlciBDcmVhdGlvbicpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VydmljZS5jcmVhdGVBcHBGaWx0ZXJDb25maWcodGhpcy5jcmVhdEZpbHRlck9iamVjdCkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuZ2V0RmlsdGVyRGF0YVNldCgpO1xuICAgICAgICAgIHRoaXMuaXNOZXdGaWx0ZXJDcmVhdGUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcygnRmlsdGVyIENyZWF0ZWQgU3VjY2Vzc2Z1bGx5JylcbiAgICAgICAgfSwgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdVbmV4cGVjdGVkIFNlcnZlciBFeGNlcHRpb24uIFBsZWFzZSBjb250YWN0IFN5c3RlbSBBZG1pbi4nLCAnRmlsdGVyIENyZWF0aW9uJylcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuXG4gIGdldEtQSVJlZmVyZW5jZUVuZFBvaW50cygpIHtcbiAgICB0aGlzLmtwaUZpbHRlckNvbmZpZ1NlcnZpY2UgPSBbXTtcbiAgICBsZXQgZmlyc3RPYmplY3QgPSB7XG4gICAgICBcImFwaU5hbWVcIjogXCJTdGFydCBEYXRlXCIsXG4gICAgICBcImFwaVVybFwiOiBcInN0YXJ0RGF0ZVwiXG4gICAgfTtcbiAgICBsZXQgc2Vjb25kT2JqZWN0ID0ge1xuICAgICAgXCJhcGlOYW1lXCI6IFwiRW5kIERhdGVcIixcbiAgICAgIFwiYXBpVXJsXCI6IFwiZW5kRGF0ZVwiXG4gICAgfTtcbiAgICBsZXQgdGhpcmRPYmplY3QgPSB7XG4gICAgICBcImFwaU5hbWVcIjogXCJUZXh0IEJveFwiLFxuICAgICAgXCJhcGlVcmxcIjogXCJcIlxuICAgIH07XG4gICAgbGV0IG9wZXJhdG9yX2tleSA9IHtcbiAgICAgIFwiYXBpTmFtZVwiOiBcIk9wZXJhdG9yIEtleVwiLFxuICAgICAgXCJhcGlVcmxcIjogXCJvcGVyYXRvcl9rZXlcIlxuICAgIH07XG4gICAgbGV0IGNvbnRleHRfZmlsdGVyID0ge1xuICAgICAgXCJhcGlOYW1lXCI6IFwiQ29udGV4dCBGaWx0ZXJcIixcbiAgICAgIFwiYXBpVXJsXCI6IFwiY29udGV4dF9maWx0ZXJcIlxuICAgIH07XG4gICAgdGhpcy5rcGlGaWx0ZXJDb25maWdTZXJ2aWNlLnB1c2goZmlyc3RPYmplY3QpO1xuICAgIHRoaXMua3BpRmlsdGVyQ29uZmlnU2VydmljZS5wdXNoKHNlY29uZE9iamVjdCk7XG4gICAgdGhpcy5rcGlGaWx0ZXJDb25maWdTZXJ2aWNlLnB1c2godGhpcmRPYmplY3QpO1xuICAgIHRoaXMua3BpRmlsdGVyQ29uZmlnU2VydmljZS5wdXNoKG9wZXJhdG9yX2tleSk7XG4gICAgdGhpcy5rcGlGaWx0ZXJDb25maWdTZXJ2aWNlLnB1c2goY29udGV4dF9maWx0ZXIpO1xuICAgIHRoaXMuc2VydmljZS5nZXRLUElSZWZlcmVuY2VFbmRQb2ludHMoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICBkYXRhLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgdGhpcy5rcGlGaWx0ZXJDb25maWdTZXJ2aWNlLnB1c2goZWxlbWVudCk7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBsZXQgbGFzdE9iamVjdCA9IHtcbiAgICAgICAgLy8gICAgIFwiYXBpTmFtZVwiOiBcIkJ5IE1TSVNETlwiLFxuICAgICAgICAvLyAgICAgXCJhcGlVcmxcIjogXCJcIlxuICAgICAgICAvLyB9O1xuICAgICAgICAvLyB0aGlzLmtwaUZpbHRlckNvbmZpZ1NlcnZpY2UucHVzaChsYXN0T2JqZWN0KTtcblxuICAgICAgfSwgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihcIlVuZXhwZWN0ZWQgU2VydmVyIEV4Y2VwdGlvbi4gUGxlYXNlIGNvbnRhY3QgU3lzdGVtIEFkbWluLlwiLCBcIktQSSBzZXJ2aWNlIENvbmZpZ1wiKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuXG4gIC8vIG5hdmlnYXRpb24gb2YgY29udHJvbGxlcnNcblxuICBnb3RvVmlld3MoKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydhcHBzL2NvbnRyb2xQYW5lbC9hcHBsaWNhdGlvblZpZXdzJ10pO1xuICB9XG4gIGdvdG9QYWdlcygpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2FwcHMvY29udHJvbFBhbmVsL2FwcGxpY2F0aW9uRGFzaGJvYXJkJ10pO1xuICB9XG4gIGdvdG9GaWx0ZXJzKCkge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnYXBwcy9jb250cm9sUGFuZWwvYXBwbGljYXRpb25GaWx0ZXInXSk7XG4gIH1cbiAgZ290b0RhdGFTZXRzKCkge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnYXBwcy9jb250cm9sUGFuZWwvYXBwbGljYXRpb25EYXRhc2V0J10pO1xuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGZsZXgtYXV0byBtaW4tdy0wXCI+XG4gICAgPGxpYi1jb21tb24taGVhZGVyIFtwYWdlVGl0bGVdPVwiJ0FwcGxpY2F0aW9uIEZpbHRlcnMnXCI+PC9saWItY29tbW9uLWhlYWRlcj5cblxuXG5cblxuICAgIDxkaXYgY2xhc3M9XCJwLTQgdy1mdWxsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLTMgcC00IGJnLXdoaXRlIGJvcmRlciBib3JkZXItZ3JheS0yMDAgcm91bmRlZC1sZyBzaGFkb3ctbWQgZGFyazpiZy1ncmF5LTgwMCBkYXJrOmJvcmRlci1ncmF5LTcwMFwiPlxuICAgICAgICAgICAgPGg2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtYi0yIGZvbnQtYm9sZCB0ZXh0LWxnIHRyYWNraW5nLXRpZ2h0IHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlIGJvcmRlci1iIHBiLTMgZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRhYmxlIG1yLTJcIj48L2k+IEZpbHRlcnNcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWwtYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYmctYmx1ZS01MDAgaG92ZXI6YmctYmx1ZS03MDAgdGV4dC13aGl0ZSBmb250LWJvbGQgcHktMSBweC0zIHJvdW5kZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImdldENyZWF0ZU5ld0ZpbHRlcigpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBBZGQgRmlsdGVyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9oNj5cbiAgICAgICAgICAgIDxhcHAtbG9hZGVyICpuZ0lmPVwiaXNMb2FkZXJcIj48L2FwcC1sb2FkZXI+XG4gICAgICAgICAgICA8ZHgtZGF0YS1ncmlkIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiIFtkYXRhU291cmNlXT1cImZpbHRlckRhdGFTb3VyY2VcIiBbaG92ZXJTdGF0ZUVuYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhaXNMb2FkZXJcIiBbc2VsZWN0ZWRSb3dLZXlzXT1cIltdXCIgW3Nob3dCb3JkZXJzXT1cInRydWVcIiBbc2hvd0NvbHVtbkxpbmVzXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtzaG93Um93TGluZXNdPVwidHJ1ZVwiIGlkPVwiZ3JpZENvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxkeG8tcGFnaW5nIFtwYWdlU2l6ZV09XCIxMFwiPjwvZHhvLXBhZ2luZz5cbiAgICAgICAgICAgICAgICA8ZHhvLWV4cG9ydCBbZW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tZXhwb3J0PlxuXG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZmlsdGVyTmFtZVwiPjwvZHhpLWNvbHVtbj5cbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJmaWx0ZXJJZFwiPjwvZHhpLWNvbHVtbj5cbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJjcmVhdGVkQnlcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiY3JlYXRpb25EYXRlXCI+PC9keGktY29sdW1uPlxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImFjdGlvblwiIGNlbGxUZW1wbGF0ZT1cImNlbGxUZW1wbGF0ZVwiIFtmaXhlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgZml4ZWRQb3NpdGlvbj1cInJpZ2h0XCI+PC9keGktY29sdW1uPlxuICAgICAgICAgICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgZGF0YSBvZiAnY2VsbFRlbXBsYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9wcmltYXJ5X21kfX1cIiAoY2xpY2spPVwiZWRpdEZpbHRlcihkYXRhLmRhdGEpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBFZGl0XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9kYW5nZXJfbWR9fVwiIChjbGljayk9XCJkZWxldGVGaWx0ZXIoZGF0YS5kYXRhKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgRGVsZXRlXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICAgIDwvZHgtZGF0YS1ncmlkPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicC0yIHctZnVsbFwiICpuZ0lmPVwiaXNOZXdGaWx0ZXJDcmVhdGVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tMyBwLTQgYmctd2hpdGUgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCByb3VuZGVkLWxnIHNoYWRvdy1tZCBkYXJrOmJnLWdyYXktODAwIGRhcms6Ym9yZGVyLWdyYXktNzAwXCI+XG4gICAgICAgICAgICA8aDZcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1iLTIgZm9udC1ib2xkIHRleHQtbGcgdHJhY2tpbmctdGlnaHQgdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUgYm9yZGVyLWIgcGItMyBmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGFibGUgbXItMlwiPjwvaT4gQ3JlYXRlIEZpbHRlcnNcblxuICAgICAgICAgICAgPC9oNj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IG15LTJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMiB3LTEvM1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+RmlsdGVyIE5hbWU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiY3JlYXRGaWx0ZXJPYmplY3QuZmlsdGVyTmFtZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLTUgYm9yZGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZmxleC1hdXRvIG1pbi13LTAgXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxnIHB5LTIgZm9udC1leHRyYWJvbGQgYm9yZGVyLWIgYmctZ3JheS03MDAgdGV4dC13aGl0ZSBweC0yXCI+IFNlbGVjdCBGaWx0ZXJzXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHQtMiBib3JkZXIteCBib3JkZXItYiBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY3JlYXRGaWx0ZXJPYmplY3QuZmlsdGVySXRlbXM7IGxldCBpID0gaW5kZXg7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTIgZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWJldHdlZW4gYm9yZGVyLWJcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBtYi0yIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMiBtdC01XCI+IDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LWNoZWNrLWJveCBbKG5nTW9kZWwpXT1cIml0ZW0uZGlzcGxheVwiIHRleHQ9XCJEaXNwbGF5XCI+PC9keC1jaGVjay1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBtYi0yIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPkZpbHRlciBOYW1lIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiIFtpdGVtc109XCJrcGlGaWx0ZXJDb25maWdTZXJ2aWNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5RXhwcj1cImFwaU5hbWVcIiB2YWx1ZUV4cHI9XCJhcGlVcmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS5hcGlOYW1lXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBtYi0yIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPk9wZXJhdG9yIEtleSBOYW1lIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiaXRlbS5vcGVyYXRvck5hbWVcIj48L2R4LXRleHQtYm94PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBtYi0yIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBGSWx0ZXIgTGFiZWw8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cIml0ZW0ubGFiZWxcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTIgbWItMiB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gRklsdGVyIENvbnRhaW5lcjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiIFtpdGVtc109XCJmaWx0ZXJfdHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLmZpbHRlclR5cGVcIj48L2R4LXNlbGVjdC1ib3g+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIG1iLTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IEZJbHRlciB0eXBlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCIgW2l0ZW1zXT1cImRlZmF1bHRGaWx0ZXJUeXBlRGF0YVNvdXJjZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLmRlZmF1bHRGaWx0ZXJUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cImRlZmF1bHRGaWx0ZXJUeXBlRGF0YVNvdXJjZVswXVwiPjwvZHgtc2VsZWN0LWJveD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0uZGVmYXVsdEZpbHRlclR5cGUgPT0gJ2R5bmFtaWMnICYmIChpdGVtLmZpbHRlclR5cGUgPT0gJ2RhdGUnIHx8IGl0ZW0uZmlsdGVyVHlwZSA9PSAnZGF0ZXRpbWUnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTIgbWItMiB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IEZ1bmN0aW9uIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtpdGVtc109XCJtb21lbnRGdW5jdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS5tb21lbnRGdW5jdGlvblwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTIgbWItMiB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IEFkZGl0aW9uYWxzIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cIml0ZW0ubW9tZW50Rm9ybWF0XCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0uZGVmYXVsdEZpbHRlclR5cGUgPT0gJ3N0YXRpYycgJiYgKGl0ZW0uZmlsdGVyVHlwZSA9PSAnZGF0ZScgfHwgaXRlbS5maWx0ZXJUeXBlID09ICdkYXRldGltZScpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBtYi0yIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gRGVmYXVsdCBWYWx1ZSA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS5kZWZhdWx0RmlsdGVyVmFsdWVcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBtYi0yIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gRGlzcGxheSBGb3JtYXQgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiaXRlbS5tb21lbnRGb3JtYXRcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0uZGVmYXVsdEZpbHRlclR5cGUgPT0gJ2R5bmFtaWMnICYmIChpdGVtLmZpbHRlclR5cGUgIT09ICdkYXRlJyB8fCBpdGVtLmZpbHRlclR5cGUgIT09ICdkYXRldGltZScpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBtYi0yIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gRklsdGVyIERlZmF1bHQgVmFsdWU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJpdGVtLmRlZmF1bHRGaWx0ZXJWYWx1ZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTIgbXQtOCB0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fZGFuZ2VyX3NtfX0gY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVGaWx0ZXJzKGkpXCI+PGkgY2xhc3M9XCJmYSBmYS10cmFzaC1vXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWVuZCBteS0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fcHJpbWFyeV9zbX19IGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImFkZEZpbHRlcigpXCI+QWRkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbnM8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggdy1mdWxsIGp1c3RpZnktZW5kIG10LTUgYm9yZGVyLXRcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9zdWNjZXNzX21kfX0gY3Vyc29yLXBvaW50ZXIgbXgtMSBteS0yXCIgKGNsaWNrKT1cImNyZWF0ZUZpbHRlckl0ZW1zKClcIj5cbiAgICAgICAgICAgICAgICAgICAgU3VibWl0IEZpbHRlclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cblxuXG48L2Rpdj4iXX0=
|
|
216
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9hcHBsaWNhdGlvbi1maWx0ZXIvYXBwbGljYXRpb24tZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9hcHBsaWNhdGlvbi1maWx0ZXIvYXBwbGljYXRpb24tZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFHbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBUy9DLE1BQU0sT0FBTywwQkFBMEI7SUFtQ3JDLFlBQ1UsT0FBa0MsRUFDbkMsYUFBNEIsRUFDM0IsTUFBcUIsRUFDckIsTUFBYztRQUhkLFlBQU8sR0FBUCxPQUFPLENBQTJCO1FBQ25DLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzNCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQXRDeEIscUJBQWdCLEdBQVEsRUFBRSxDQUFDO1FBRzNCLHNCQUFpQixHQUFRO1lBQ3ZCLFVBQVUsRUFBRSxFQUFFO1lBQ2QsV0FBVyxFQUFFLENBQUM7b0JBQ1osU0FBUyxFQUFFLFdBQVc7b0JBQ3RCLE9BQU8sRUFBRSxZQUFZO29CQUNyQixZQUFZLEVBQUUsTUFBTTtvQkFDcEIsU0FBUyxFQUFFLElBQUk7b0JBQ2YsY0FBYyxFQUFFLEVBQUU7b0JBQ2xCLG1CQUFtQixFQUFFLFNBQVM7b0JBQzlCLG9CQUFvQixFQUFFLFNBQVM7b0JBQy9C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LENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQywyREFBMkQsRUFBRSxvQkFBb0IsQ0FBQyxDQUFBO1lBQ3RHLENBQUM7U0FDRixDQUFDLENBQUE7SUFDSixDQUFDO0lBS0QsU0FBUztRQUNQLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsb0NBQW9DLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFDRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLHFDQUFxQyxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBQ0QsWUFBWTtRQUNWLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsc0NBQXNDLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7O3VIQTFOVSwwQkFBMEI7MkdBQTFCLDBCQUEwQiw4RENadkMsMC9SQTZKTTsyRkRqSk8sMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkNvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vYXBwbGljYXRpb24tY29udGVudC5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tICduZ3gtdG9hc3RyJztcbmltcG9ydCB7IGNvbmZpcm0gfSBmcm9tICdkZXZleHRyZW1lL3VpL2RpYWxvZyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1hcHBsaWNhdGlvbi1maWx0ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vYXBwbGljYXRpb24tZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXBwbGljYXRpb24tZmlsdGVyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25GaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBmaWx0ZXJEYXRhU291cmNlOiBhbnkgPSBbXTtcbiAgaXNOZXdGaWx0ZXJDcmVhdGU6IGJvb2xlYW47XG4gIGlzTG9hZGVyOiBib29sZWFuO1xuICBjcmVhdEZpbHRlck9iamVjdDogYW55ID0ge1xuICAgIGZpbHRlck5hbWU6IFwiXCIsXG4gICAgZmlsdGVySXRlbXM6IFt7XG4gICAgICBcImFwaU5hbWVcIjogXCJzdGFydERhdGVcIixcbiAgICAgIFwibGFiZWxcIjogXCJTdGFydCBEYXRlXCIsXG4gICAgICBcImZpbHRlclR5cGVcIjogXCJkYXRlXCIsXG4gICAgICBcImRpc3BsYXlcIjogdHJ1ZSxcbiAgICAgIFwib3BlcmF0b3JOYW1lXCI6IFwiXCIsXG4gICAgICBcImRlZmF1bHRGaWx0ZXJUeXBlXCI6IFwiZHluYW1pY1wiLFxuICAgICAgXCJkZWZhdWx0RmlsdGVyVmFsdWVcIjogXCIxNSxkYXlzXCIsXG4gICAgICBcIm1vbWVudEZ1bmN0aW9uXCI6IFwic3VidHJhY3RcIixcbiAgICAgIFwibW9tZW50Rm9ybWF0XCI6IFwiWVlZWS1NTS1ERFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcImFwaU5hbWVcIjogXCJlbmREYXRlXCIsXG4gICAgICBcImxhYmVsXCI6IFwiRW5kIERhdGVcIixcbiAgICAgIFwiZGlzcGxheVwiOiB0cnVlLFxuICAgICAgXCJmaWx0ZXJUeXBlXCI6IFwiZGF0ZVwiLFxuICAgICAgXCJvcGVyYXRvck5hbWVcIjogXCJcIixcbiAgICAgIFwiZGVmYXVsdEZpbHRlclR5cGVcIjogXCJkeW5hbWljXCIsXG4gICAgICBcImRlZmF1bHRGaWx0ZXJWYWx1ZVwiOiBcIjEsZGF5c1wiLFxuICAgICAgXCJtb21lbnRGdW5jdGlvblwiOiBcInN1YnRyYWN0XCIsXG4gICAgICBcIm1vbWVudEZvcm1hdFwiOiBcIllZWVktTU0tRERcIlxuICAgIH1dXG4gIH1cblxuICBmaWx0ZXJfdHlwZSA9IFsnc2luZ2xlJywgJ211bHRpcGxlJywgJ2RhdGUnLCAnZGF0ZXRpbWUnLCBcImNvbnRlbnRcIiwgXCJjb250ZXh0XCJdXG4gIGRlZmF1bHRGaWx0ZXJUeXBlRGF0YVNvdXJjZSA9IFsnc3RhdGljJywgJ2R5bmFtaWMnXVxuXG4gIG1vbWVudEZ1bmN0aW9uID0gW1wic3VidHJhY3RcIiwgXCJhZGRcIiwgXCJzdGFydE9mXCIsIFwiZW5kT2ZcIl1cbiAga3BpRmlsdGVyQ29uZmlnU2VydmljZTogYW55O1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNlcnZpY2U6IEFwcGxpY2F0aW9uQ29udGVudFNlcnZpY2UsXG4gICAgcHVibGljIGNvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0b2FzdHI6IFRvYXN0clNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICApIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaXNMb2FkZXIgPSB0cnVlO1xuICAgIHRoaXMuZ2V0S1BJUmVmZXJlbmNlRW5kUG9pbnRzKCk7XG4gICAgdGhpcy5nZXRGaWx0ZXJEYXRhU2V0KCk7XG5cbiAgfVxuXG4gIGdldEZpbHRlckRhdGFTZXQoKSB7XG4gICAgdGhpcy5pc0xvYWRlciA9IHRydWU7XG4gICAgdGhpcy5zZXJ2aWNlLmdldEFwcEZpbHRlckNvbmZpZ3MoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmZpbHRlckRhdGFTb3VyY2UgPSBkYXRhO1xuICAgICAgICB0aGlzLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICB9LCBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdVbmV4cGVjdGVkIFNlcnZlciBFeGNlcHRpb24uIFBsZWFzZSBjb250YWN0IFN5c3RlbSBBZG1pbi4nLCAnRmlsdGVyIENyZWF0aW9uJylcblxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBhZGRGaWx0ZXIoKSB7XG4gICAgbGV0IG9iaiA9IHtcbiAgICAgIFwiYXBpTmFtZVwiOiBcIlwiLFxuICAgICAgXCJkaXNwbGF5XCI6IHRydWUsXG4gICAgICBcImxhYmVsXCI6IFwiXCIsXG4gICAgICBcImZpbHRlclR5cGVcIjogXCJcIixcbiAgICAgIFwib3BlcmF0b3JOYW1lXCI6IFwiXCIsXG4gICAgICBcImRlZmF1bHRGaWx0ZXJUeXBlXCI6IFwiXCIsXG4gICAgICBcImRlZmF1bHRGaWx0ZXJWYWx1ZVwiOiBcIlwiXG4gICAgfVxuICAgIHRoaXMuY3JlYXRGaWx0ZXJPYmplY3QuZmlsdGVySXRlbXMucHVzaChvYmopO1xuICB9XG5cbiAgZGVsZXRlRmlsdGVycyhpKSB7XG4gICAgdGhpcy5jcmVhdEZpbHRlck9iamVjdC5maWx0ZXJJdGVtcy5zcGxpY2UoaSwgMSlcbiAgfVxuXG5cbiAgZ2V0Q3JlYXRlTmV3RmlsdGVyKCkge1xuICAgIHRoaXMuaXNOZXdGaWx0ZXJDcmVhdGUgPSB0cnVlO1xuICAgIHRoaXMuY3JlYXRGaWx0ZXJPYmplY3QgPSB7XG4gICAgICBmaWx0ZXJOYW1lOiBcIlwiLFxuICAgICAgZmlsdGVySXRlbXM6IFt7XG4gICAgICAgIFwiYXBpTmFtZVwiOiBcInN0YXJ0RGF0ZVwiLFxuICAgICAgICBcImxhYmVsXCI6IFwiU3RhcnQgRGF0ZVwiLFxuICAgICAgICBcImZpbHRlclR5cGVcIjogXCJkYXRlXCIsXG4gICAgICAgIFwiZGlzcGxheVwiOiB0cnVlLFxuICAgICAgICBcIm9wZXJhdG9yTmFtZVwiOiBcIlwiLFxuICAgICAgICBcImRlZmF1bHRGaWx0ZXJUeXBlXCI6IFwiZHluYW1pY1wiLFxuICAgICAgICBcImRlZmF1bHRGaWx0ZXJWYWx1ZVwiOiBcIjE1LGRheXNcIixcbiAgICAgICAgXCJtb21lbnRGdW5jdGlvblwiOiBcInN1YnRyYWN0XCIsXG4gICAgICAgIFwibW9tZW50Rm9ybWF0XCI6IFwiWVlZWS1NTS1ERFwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImFwaU5hbWVcIjogXCJlbmREYXRlXCIsXG4gICAgICAgIFwibGFiZWxcIjogXCJFbmQgRGF0ZVwiLFxuICAgICAgICBcImRpc3BsYXlcIjogdHJ1ZSxcbiAgICAgICAgXCJmaWx0ZXJUeXBlXCI6IFwiZGF0ZVwiLFxuICAgICAgICBcIm9wZXJhdG9yTmFtZVwiOiBcIlwiLFxuICAgICAgICBcImRlZmF1bHRGaWx0ZXJUeXBlXCI6IFwiZHluYW1pY1wiLFxuICAgICAgICBcImRlZmF1bHRGaWx0ZXJWYWx1ZVwiOiBcIjEsZGF5c1wiLFxuICAgICAgICBcIm1vbWVudEZ1bmN0aW9uXCI6IFwic3VidHJhY3RcIixcbiAgICAgICAgXCJtb21lbnRGb3JtYXRcIjogXCJZWVlZLU1NLUREXCJcbiAgICAgIH1dXG4gICAgfVxuICB9XG5cbiAgZWRpdEZpbHRlcihkYXRhKSB7XG4gICAgdGhpcy5jcmVhdEZpbHRlck9iamVjdCA9IGRhdGE7XG4gICAgdGhpcy5pc05ld0ZpbHRlckNyZWF0ZSA9IHRydWU7XG4gIH1cblxuICBkZWxldGVGaWx0ZXIoaXRlbSkge1xuICAgIGxldCByZXN1bHQgPSBjb25maXJtKFwiPGk+QXJlIFlvdSBTdXJlPzwvaT5cIiwgXCJEZWxldGUgRmlsdGVyXCIpO1xuICAgIHJlc3VsdC50aGVuKChkaWFsb2dSZXN1bHQpID0+IHtcbiAgICAgIGlmIChkaWFsb2dSZXN1bHQpIHtcbiAgICAgICAgdGhpcy5pc0xvYWRlciA9IHRydWU7XG4gICAgICAgIHRoaXMuc2VydmljZS5kZWxldGVBcHBGaWx0ZXJDb25maWcoaXRlbS5maWx0ZXJJZCkuc3Vic2NyaWJlKCh2YWw6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuZ2V0RmlsdGVyRGF0YVNldCgpO1xuICAgICAgICAgIHRoaXMuaXNMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKCdGaWx0ZXIgRGVsZXRlZCBTdWNjZXNzZnVsbHknKVxuICAgICAgICB9LCBlcnIgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ1VuZXhwZWN0ZWQgU2VydmVyIEV4Y2VwdGlvbi4gUGxlYXNlIGNvbnRhY3QgU3lzdGVtIEFkbWluLicsICdSdWxlIE1vZHVsZScpO1xuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgY3JlYXRlRmlsdGVySXRlbXMoKSB7XG4gICAgdGhpcy5pc0xvYWRlciA9IHRydWU7XG5cbiAgICBpZiAodGhpcy5jcmVhdEZpbHRlck9iamVjdFsnZmlsdGVySWQnXSkge1xuICAgICAgdGhpcy5zZXJ2aWNlLmVkaXRBcHBGaWx0ZXJDb25maWcodGhpcy5jcmVhdEZpbHRlck9iamVjdCkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuZ2V0RmlsdGVyRGF0YVNldCgpO1xuICAgICAgICAgIHRoaXMuaXNOZXdGaWx0ZXJDcmVhdGUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcygnRmlsdGVyIENyZWF0ZWQgU3VjY2Vzc2Z1bGx5JylcbiAgICAgICAgfSwgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdVbmV4cGVjdGVkIFNlcnZlciBFeGNlcHRpb24uIFBsZWFzZSBjb250YWN0IFN5c3RlbSBBZG1pbi4nLCAnRmlsdGVyIENyZWF0aW9uJylcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXJ2aWNlLmNyZWF0ZUFwcEZpbHRlckNvbmZpZyh0aGlzLmNyZWF0RmlsdGVyT2JqZWN0KS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5nZXRGaWx0ZXJEYXRhU2V0KCk7XG4gICAgICAgICAgdGhpcy5pc05ld0ZpbHRlckNyZWF0ZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuaXNMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKCdGaWx0ZXIgQ3JlYXRlZCBTdWNjZXNzZnVsbHknKVxuICAgICAgICB9LCBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ1VuZXhwZWN0ZWQgU2VydmVyIEV4Y2VwdGlvbi4gUGxlYXNlIGNvbnRhY3QgU3lzdGVtIEFkbWluLicsICdGaWx0ZXIgQ3JlYXRpb24nKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG5cbiAgZ2V0S1BJUmVmZXJlbmNlRW5kUG9pbnRzKCkge1xuICAgIHRoaXMua3BpRmlsdGVyQ29uZmlnU2VydmljZSA9IFtdO1xuICAgIGxldCBmaXJzdE9iamVjdCA9IHtcbiAgICAgIFwiYXBpTmFtZVwiOiBcIlN0YXJ0IERhdGVcIixcbiAgICAgIFwiYXBpVXJsXCI6IFwic3RhcnREYXRlXCJcbiAgICB9O1xuICAgIGxldCBzZWNvbmRPYmplY3QgPSB7XG4gICAgICBcImFwaU5hbWVcIjogXCJFbmQgRGF0ZVwiLFxuICAgICAgXCJhcGlVcmxcIjogXCJlbmREYXRlXCJcbiAgICB9O1xuICAgIGxldCB0aGlyZE9iamVjdCA9IHtcbiAgICAgIFwiYXBpTmFtZVwiOiBcIlRleHQgQm94XCIsXG4gICAgICBcImFwaVVybFwiOiBcIlwiXG4gICAgfTtcbiAgICBsZXQgb3BlcmF0b3Jfa2V5ID0ge1xuICAgICAgXCJhcGlOYW1lXCI6IFwiT3BlcmF0b3IgS2V5XCIsXG4gICAgICBcImFwaVVybFwiOiBcIm9wZXJhdG9yX2tleVwiXG4gICAgfTtcbiAgICBsZXQgY29udGV4dF9maWx0ZXIgPSB7XG4gICAgICBcImFwaU5hbWVcIjogXCJDb250ZXh0IEZpbHRlclwiLFxuICAgICAgXCJhcGlVcmxcIjogXCJjb250ZXh0X2ZpbHRlclwiXG4gICAgfTtcbiAgICB0aGlzLmtwaUZpbHRlckNvbmZpZ1NlcnZpY2UucHVzaChmaXJzdE9iamVjdCk7XG4gICAgdGhpcy5rcGlGaWx0ZXJDb25maWdTZXJ2aWNlLnB1c2goc2Vjb25kT2JqZWN0KTtcbiAgICB0aGlzLmtwaUZpbHRlckNvbmZpZ1NlcnZpY2UucHVzaCh0aGlyZE9iamVjdCk7XG4gICAgdGhpcy5rcGlGaWx0ZXJDb25maWdTZXJ2aWNlLnB1c2gob3BlcmF0b3Jfa2V5KTtcbiAgICB0aGlzLmtwaUZpbHRlckNvbmZpZ1NlcnZpY2UucHVzaChjb250ZXh0X2ZpbHRlcik7XG4gICAgdGhpcy5zZXJ2aWNlLmdldEtQSVJlZmVyZW5jZUVuZFBvaW50cygpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIGRhdGEuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICB0aGlzLmtwaUZpbHRlckNvbmZpZ1NlcnZpY2UucHVzaChlbGVtZW50KTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGxldCBsYXN0T2JqZWN0ID0ge1xuICAgICAgICAvLyAgICAgXCJhcGlOYW1lXCI6IFwiQnkgTVNJU0ROXCIsXG4gICAgICAgIC8vICAgICBcImFwaVVybFwiOiBcIlwiXG4gICAgICAgIC8vIH07XG4gICAgICAgIC8vIHRoaXMua3BpRmlsdGVyQ29uZmlnU2VydmljZS5wdXNoKGxhc3RPYmplY3QpO1xuXG4gICAgICB9LCBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKFwiVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uXCIsIFwiS1BJIHNlcnZpY2UgQ29uZmlnXCIpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG5cbiAgLy8gbmF2aWdhdGlvbiBvZiBjb250cm9sbGVyc1xuXG4gIGdvdG9WaWV3cygpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2FwcHMvY29udHJvbFBhbmVsL2FwcGxpY2F0aW9uVmlld3MnXSk7XG4gIH1cbiAgZ290b1BhZ2VzKCkge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnYXBwcy9jb250cm9sUGFuZWwvYXBwbGljYXRpb25EYXNoYm9hcmQnXSk7XG4gIH1cbiAgZ290b0ZpbHRlcnMoKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydhcHBzL2NvbnRyb2xQYW5lbC9hcHBsaWNhdGlvbkZpbHRlciddKTtcbiAgfVxuICBnb3RvRGF0YVNldHMoKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydhcHBzL2NvbnRyb2xQYW5lbC9hcHBsaWNhdGlvbkRhdGFzZXQnXSk7XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZmxleC1hdXRvIG1pbi13LTBcIj5cbiAgICA8bGliLWNvbW1vbi1oZWFkZXIgW3BhZ2VUaXRsZV09XCInQXBwbGljYXRpb24gRmlsdGVycydcIj48L2xpYi1jb21tb24taGVhZGVyPlxuXG5cblxuXG4gICAgPGRpdiBjbGFzcz1cInAtNCB3LWZ1bGxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tMyBwLTQgYmctd2hpdGUgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCByb3VuZGVkLWxnIHNoYWRvdy1tZCBkYXJrOmJnLWdyYXktODAwIGRhcms6Ym9yZGVyLWdyYXktNzAwXCI+XG4gICAgICAgICAgICA8aDZcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1iLTIgZm9udC1ib2xkIHRleHQtbGcgdHJhY2tpbmctdGlnaHQgdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUgYm9yZGVyLWIgcGItMyBmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGFibGUgbXItMlwiPjwvaT4gRmlsdGVyc1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtbC1hdXRvXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJiZy1ibHVlLTUwMCBob3ZlcjpiZy1ibHVlLTcwMCB0ZXh0LXdoaXRlIGZvbnQtYm9sZCBweS0xIHB4LTMgcm91bmRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ2V0Q3JlYXRlTmV3RmlsdGVyKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEFkZCBGaWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2g2PlxuICAgICAgICAgICAgPGFwcC1sb2FkZXIgKm5nSWY9XCJpc0xvYWRlclwiPjwvYXBwLWxvYWRlcj5cbiAgICAgICAgICAgIDxkeC1kYXRhLWdyaWQgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCIgW2RhdGFTb3VyY2VdPVwiZmlsdGVyRGF0YVNvdXJjZVwiIFtob3ZlclN0YXRlRW5hYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFpc0xvYWRlclwiIFtzZWxlY3RlZFJvd0tleXNdPVwiW11cIiBbc2hvd0JvcmRlcnNdPVwidHJ1ZVwiIFtzaG93Q29sdW1uTGluZXNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW3Nob3dSb3dMaW5lc109XCJ0cnVlXCIgaWQ9XCJncmlkQ29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGR4by1wYWdpbmcgW3BhZ2VTaXplXT1cIjEwXCI+PC9keG8tcGFnaW5nPlxuICAgICAgICAgICAgICAgIDxkeG8tZXhwb3J0IFtlbmFibGVkXT1cInRydWVcIj48L2R4by1leHBvcnQ+XG5cbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJmaWx0ZXJOYW1lXCI+PC9keGktY29sdW1uPlxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImZpbHRlcklkXCI+PC9keGktY29sdW1uPlxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImNyZWF0ZWRCeVwiPjwvZHhpLWNvbHVtbj5cbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJjcmVhdGlvbkRhdGVcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiYWN0aW9uXCIgY2VsbFRlbXBsYXRlPVwiY2VsbFRlbXBsYXRlXCIgW2ZpeGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBmaXhlZFBvc2l0aW9uPVwicmlnaHRcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBkYXRhIG9mICdjZWxsVGVtcGxhdGUnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3ByaW1hcnlfbWR9fVwiIChjbGljayk9XCJlZGl0RmlsdGVyKGRhdGEuZGF0YSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEVkaXRcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX2Rhbmdlcl9tZH19XCIgKGNsaWNrKT1cImRlbGV0ZUZpbHRlcihkYXRhLmRhdGEpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBEZWxldGVcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgICAgPC9keC1kYXRhLWdyaWQ+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJwLTIgdy1mdWxsXCIgKm5nSWY9XCJpc05ld0ZpbHRlckNyZWF0ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS0zIHAtNCBiZy13aGl0ZSBib3JkZXIgYm9yZGVyLWdyYXktMjAwIHJvdW5kZWQtbGcgc2hhZG93LW1kIGRhcms6YmctZ3JheS04MDAgZGFyazpib3JkZXItZ3JheS03MDBcIj5cbiAgICAgICAgICAgIDxoNlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWItMiBmb250LWJvbGQgdGV4dC1sZyB0cmFja2luZy10aWdodCB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBib3JkZXItYiBwYi0zIGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10YWJsZSBtci0yXCI+PC9pPiBDcmVhdGUgRmlsdGVyc1xuXG4gICAgICAgICAgICA8L2g2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgbXktMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteC0yIHctMS8zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj5GaWx0ZXIgTmFtZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJjcmVhdEZpbHRlck9iamVjdC5maWx0ZXJOYW1lXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tNSBib3JkZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBmbGV4LWF1dG8gbWluLXctMCBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbGcgcHktMiBmb250LWV4dHJhYm9sZCBib3JkZXItYiBiZy1ncmF5LTcwMCB0ZXh0LXdoaXRlIHB4LTJcIj4gU2VsZWN0IEZpbHRlcnNcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdC0yIGJvcmRlci14IGJvcmRlci1iIFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjcmVhdEZpbHRlck9iamVjdC5maWx0ZXJJdGVtczsgbGV0IGkgPSBpbmRleDtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMiBmbGV4IGZsZXgtcm93IGp1c3RpZnktYmV0d2VlbiBib3JkZXItYlwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIG1iLTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yIG10LTVcIj4gPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtY2hlY2stYm94IFsobmdNb2RlbCldPVwiaXRlbS5kaXNwbGF5XCIgdGV4dD1cIkRpc3BsYXlcIj48L2R4LWNoZWNrLWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIG1iLTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+RmlsdGVyIE5hbWUgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCIgW2l0ZW1zXT1cImtwaUZpbHRlckNvbmZpZ1NlcnZpY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlFeHByPVwiYXBpTmFtZVwiIHZhbHVlRXhwcj1cImFwaVVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLmFwaU5hbWVcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIG1iLTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+T3BlcmF0b3IgS2V5IE5hbWUgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJpdGVtLm9wZXJhdG9yTmFtZVwiPjwvZHgtdGV4dC1ib3g+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIG1iLTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IEZJbHRlciBMYWJlbDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiaXRlbS5sYWJlbFwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBtYi0yIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBGSWx0ZXIgQ29udGFpbmVyPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCIgW2l0ZW1zXT1cImZpbHRlcl90eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0uZmlsdGVyVHlwZVwiPjwvZHgtc2VsZWN0LWJveD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTIgbWItMiB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gRklsdGVyIHR5cGU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtzZWFyY2hFbmFibGVkXT1cInRydWVcIiBbaXRlbXNdPVwiZGVmYXVsdEZpbHRlclR5cGVEYXRhU291cmNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0uZGVmYXVsdEZpbHRlclR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwiZGVmYXVsdEZpbHRlclR5cGVEYXRhU291cmNlWzBdXCI+PC9keC1zZWxlY3QtYm94PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5kZWZhdWx0RmlsdGVyVHlwZSA9PSAnZHluYW1pYycgJiYgKGl0ZW0uZmlsdGVyVHlwZSA9PSAnZGF0ZScgfHwgaXRlbS5maWx0ZXJUeXBlID09ICdkYXRldGltZScpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBtYi0yIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gRnVuY3Rpb24gPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW2l0ZW1zXT1cIm1vbWVudEZ1bmN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLm1vbWVudEZ1bmN0aW9uXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBtYi0yIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gQWRkaXRpb25hbHMgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiaXRlbS5tb21lbnRGb3JtYXRcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5kZWZhdWx0RmlsdGVyVHlwZSA9PSAnc3RhdGljJyAmJiAoaXRlbS5maWx0ZXJUeXBlID09ICdkYXRlJyB8fCBpdGVtLmZpbHRlclR5cGUgPT0gJ2RhdGV0aW1lJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIG1iLTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBEZWZhdWx0IFZhbHVlIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLmRlZmF1bHRGaWx0ZXJWYWx1ZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIG1iLTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBEaXNwbGF5IEZvcm1hdCA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJpdGVtLm1vbWVudEZvcm1hdFwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5kZWZhdWx0RmlsdGVyVHlwZSA9PSAnZHluYW1pYycgJiYgKGl0ZW0uZmlsdGVyVHlwZSAhPT0gJ2RhdGUnIHx8IGl0ZW0uZmlsdGVyVHlwZSAhPT0gJ2RhdGV0aW1lJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIG1iLTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBGSWx0ZXIgRGVmYXVsdCBWYWx1ZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cIml0ZW0uZGVmYXVsdEZpbHRlclZhbHVlXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBtdC04IHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9kYW5nZXJfc219fSBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUZpbHRlcnMoaSlcIj48aSBjbGFzcz1cImZhIGZhLXRyYXNoLW9cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktZW5kIG15LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9wcmltYXJ5X3NtfX0gY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiYWRkRmlsdGVyKClcIj5BZGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uczwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCB3LWZ1bGwganVzdGlmeS1lbmQgbXQtNSBib3JkZXItdFwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3N1Y2Nlc3NfbWR9fSBjdXJzb3ItcG9pbnRlciBteC0xIG15LTJcIiAoY2xpY2spPVwiY3JlYXRlRmlsdGVySXRlbXMoKVwiPlxuICAgICAgICAgICAgICAgICAgICBTdWJtaXQgRmlsdGVyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuXG5cbjwvZGl2PiJdfQ==
|