@hestia-earth/ui-components 0.24.2 → 0.25.0
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/common/utils.d.ts +1 -0
- package/cycles/cycles-nodes/cycles-nodes.component.d.ts +1 -0
- package/esm2022/common/utils.mjs +2 -1
- package/esm2022/cycles/cycles-nodes/cycles-nodes.component.mjs +8 -6
- package/esm2022/engine/aggregation-engine.service.mjs +2 -2
- package/esm2022/engine/engine.service.mjs +3 -3
- package/esm2022/files/files-error-summary.model.mjs +1 -1
- package/esm2022/files/files-error.model.mjs +5 -3
- package/esm2022/files/files-form/files-form.component.mjs +1 -1
- package/esm2022/files/files-form.model.mjs +1 -1
- package/esm2022/impact-assessments/impact-assessments-indicator-breakdown-chart/impact-assessments-indicator-breakdown-chart.component.mjs +141 -122
- package/esm2022/impact-assessments/impact-assessments-products/impact-assessments-products.component.mjs +38 -13
- package/esm2022/node/node-logs-models/node-logs-models.component.mjs +8 -4
- package/esm2022/node/node-value-details/node-value-details.component.mjs +2 -1
- package/esm2022/schema/index.mjs +2 -1
- package/esm2022/schema/schema-validation.model.mjs +2 -0
- package/esm2022/sites/index.mjs +2 -2
- package/esm2022/sites/sites-nodes/sites-nodes.component.mjs +129 -0
- package/esm2022/sites/sites.module.mjs +4 -4
- package/fesm2022/hestia-earth-ui-components.mjs +1504 -1425
- package/fesm2022/hestia-earth-ui-components.mjs.map +1 -1
- package/files/files-error-summary.model.d.ts +2 -1
- package/files/files-error.model.d.ts +2 -20
- package/files/files-form.model.d.ts +1 -1
- package/impact-assessments/impact-assessments-indicator-breakdown-chart/impact-assessments-indicator-breakdown-chart.component.d.ts +35 -17
- package/impact-assessments/impact-assessments-products/impact-assessments-products.component.d.ts +16 -6
- package/node/node-logs-models/node-logs-models.component.d.ts +3 -0
- package/package.json +1 -1
- package/schema/index.d.ts +1 -0
- package/schema/schema-validation.model.d.ts +30 -0
- package/sites/index.d.ts +1 -1
- package/sites/{sites-measurements/sites-measurements.component.d.ts → sites-nodes/sites-nodes.component.d.ts} +24 -11
- package/sites/sites.module.d.ts +2 -2
- package/esm2022/sites/sites-measurements/sites-measurements.component.mjs +0 -101
|
@@ -499,4 +499,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.8", ngImpor
|
|
|
499
499
|
}], nodeErrorAdded: [{
|
|
500
500
|
type: Output
|
|
501
501
|
}] } });
|
|
502
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZmlsZXMvZmlsZXMtZm9ybS9maWxlcy1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9maWxlcy9maWxlcy1mb3JtL2ZpbGVzLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25HLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUM7QUFDN0IsT0FBTyxHQUFHLE1BQU0sWUFBWSxDQUFDO0FBQzdCLE9BQU8sRUFBc0IsVUFBVSxFQUFFLFFBQVEsRUFBa0MsTUFBTSxzQkFBc0IsQ0FBQztBQUVoSCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFOUMsT0FBTyxFQUdMLG1CQUFtQixFQUNuQixhQUFhLEVBQ2IsUUFBUSxFQUNSLFVBQVUsRUFFVixxQkFBcUIsRUFDckIsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixVQUFVLEVBQ1Ysb0JBQW9CLEVBQ3BCLHVCQUF1QixFQUN2QixjQUFjLEVBQ2QsWUFBWSxFQUNaLGNBQWMsRUFDZCxlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUNuQixhQUFhLEVBQ2IsWUFBWSxFQUNaLDZCQUE2QixFQUM3QixzQkFBc0IsRUFDdEIsOEJBQThCLEVBQzlCLHVC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Q0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztRQUU5RCw4Q0FBOEM7UUFDOUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxFQUFFO1lBQ2pDLENBQUMsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1lBQ25CLE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUM7UUFDSCxZQUFZLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUU5QixLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzVDLENBQUM7OEdBeGlCVSxrQkFBa0I7a0dBQWxCLGtCQUFrQiw0YUNsRy9CLGtpNEJBNG5CQTs7MkZEMWhCYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsZUFBZTs0SkFNakIsT0FBTztzQkFEZCxLQUFLO2dCQUdFLE1BQU07c0JBRGIsS0FBSztnQkFHQyxJQUFJO3NCQURWLEtBQUs7Z0JBR0MsT0FBTztzQkFEYixLQUFLO2dCQU1DLFFBQVE7c0JBRGQsS0FBSztnQkFHQyxTQUFTO3NCQURmLEtBQUs7Z0JBR0MsWUFBWTtzQkFEbEIsS0FBSztnQkFNQyxjQUFjO3NCQURwQixLQUFLO2dCQU9DLDhCQUE4QjtzQkFEcEMsS0FBSztnQkFJRSxXQUFXO3NCQURsQixNQUFNO2dCQUdDLGlCQUFpQjtzQkFEeEIsTUFBTTtnQkFHQyxjQUFjO3NCQURyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgY29tcGxleGl0eSAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgbWVyZ2VNYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC5nZXQnO1xuaW1wb3J0IHNldCBmcm9tICdsb2Rhc2guc2V0JztcbmltcG9ydCB7IEpTT04gYXMgSGVzdGlhSnNvbiwgU2NoZW1hVHlwZSwgTm9kZVR5cGUsIEJpYmxpb2dyYXBoeSwgU291cmNlLCBQcm9wZXJ0eSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmltcG9ydCB7IGRlZmluaXRpb25zLCBkZWZpbml0aW9uIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9qc29uLXNjaGVtYSc7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC91dGlscyc7XG5cbmltcG9ydCB7XG4gIElFcnJvclByb3BlcnR5LFxuICBJTm9kZVByb3BlcnR5LFxuICBmb3JtYXRQcm9wZXJ0eUVycm9yLFxuICBwcm9wZXJ0eUVycm9yLFxuICBoYXNFcnJvcixcbiAgaGFzV2FybmluZyxcbiAgc3VnZ2VzdGlvblR5cGUsXG4gIGRlZmF1bHRTdWdnZXN0aW9uVHlwZSxcbiAgcmVjdXJzaXZlUHJvcGVydGllcyxcbiAgdHlwZVRvTmV3UHJvcGVydHksXG4gIHByb3BlcnR5SWQsXG4gIGlzQWRkUHJvcGVydHlFbmFibGVkLFxuICBub2RlQXZhaWxhYmxlUHJvcGVydGllcyxcbiAgc29ydFByb3BlcnRpZXMsXG4gIGdyb3VwQ2hhbmdlZCxcbiAgcGFyZW50UHJvcGVydHksXG4gIHNpYmxpbmdQcm9wZXJ0eSxcbiAgdXBkYXRlUHJvcGVydGllcyxcbiAgcmVmcmVzaFByb3BlcnR5S2V5cyxcbiAga2V5VG9EYXRhUGF0aCxcbiAgZmluZFByb3BlcnR5LFxuICBjYWxjdWxhdGVDeWNsZUR1cmF0aW9uRW5hYmxlZCxcbiAgY2FsY3VsYXRlQ3ljbGVEdXJhdGlvbixcbiAgY2FsY3VsYXRlQ3ljbGVTdGFydERhdGVFbmFibGVkLFxuICBjYWxjdWxhdGVDeWNsZVN0YXJ0RGF0ZSxcbiAgcGFyc2VOZXdWYWx1ZSxcbiAgZm9ybWF0dGVyLFxuICBJTmV3UHJvcGVydHlcbn0gZnJvbSAnLi4vZmlsZXMtZm9ybS5tb2RlbCc7XG5pbXBvcnQgeyBJVmFsaWRhdGlvbkVycm9yLCBlcnJvckhhc0Vycm9yLCBlcnJvckhhc1dhcm5pbmcsIGZpbHRlckVycm9yLCBmb3JtYXRFcnJvciB9IGZyb20gJy4uL2ZpbGVzLWVycm9yLm1vZGVsJztcbmltcG9ydCB7IEhlVXNlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXNlcnMvdXNlcnMuc2VydmljZSc7XG5pbXBvcnQgeyBIZVNlYXJjaFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZWFyY2gvc2VhcmNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgbWF0Y2hUeXBlLCBtYXRjaFBocmFzZVF1ZXJ5LCBtYXRjaFBocmFzZVByZWZpeFF1ZXJ5LCBtYXRjaEJvb2xQcmVmaXhRdWVyeSB9IGZyb20gJy4uLy4uL3NlYXJjaC9zZWFyY2gubW9kZWwnO1xuaW1wb3J0IHsgc2FmZUpTT05QYXJzZSwgY29weU9iamVjdCwgdHlwZWFoZWFkRm9jdXMgfSBmcm9tICcuLi8uLi9jb21tb24vdXRpbHMnO1xuXG5jb25zdCBNSU5fVFlQRUFIRUFEX0xFTkdUSCA9IDI7XG5jb25zdCBwb3B1bGF0ZVRlcm1GaWVsZHMgPSBbJ3Rlcm1UeXBlJywgJ3VuaXRzJ107XG5jb25zdCBwb3B1bGF0ZVRlcm1EZWZhdWx0UHJvcGVydGllcyA9IFtcbiAgJ2RlZmF1bHRQcm9wZXJ0aWVzLnRlcm0ubmFtZScsXG4gICdkZWZhdWx0UHJvcGVydGllcy50ZXJtLnVuaXRzJyxcbiAgJ2RlZmF1bHRQcm9wZXJ0aWVzLnZhbHVlJ1xuXTtcblxuY29uc3QgZm9ybWF0UHJvcGVydHkgPSAocHJvcDogUHJvcGVydHkpID0+ICh7XG4gICdAdHlwZSc6IFNjaGVtYVR5cGUuUHJvcGVydHksXG4gIC4uLnByb3AsXG4gIHRlcm06IHtcbiAgICAnQHR5cGUnOiBOb2RlVHlwZS5UZXJtLFxuICAgIC4uLnByb3AudGVybVxuICB9XG59KTtcblxuY29uc3QgZm9ybWF0U3VnZ2VzdGlvbiA9ICh7IGRlZmF1bHRQcm9wZXJ0aWVzLCAuLi5ub2RlIH06IGFueSkgPT4gKHtcbiAgLi4ubm9kZSxcbiAgLi4uKGRlZmF1bHRQcm9wZXJ0aWVzPy5sZW5ndGggPyB7IGRlZmF1bHRQcm9wZXJ0aWVzOiBkZWZhdWx0UHJvcGVydGllcy5tYXAoZm9ybWF0UHJvcGVydHkpIH0gOiB7fSlcbn0pO1xuXG5jb25zdCBmb3JtYXRMaW5rTm9kZXNQcmVmaXggPSAnTGluayB3aXRoJztcblxuLy8gcGF0Y2ggZXJyb3Igd2hlbiBsaW5rIGlzIG5vdCB3b3JraW5nIGNvcnJlY3RseVxuY29uc3QgY2xlYW5OZXdWYWx1ZSA9IHZhbHVlID0+XG4gIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUuaWRcbiAgICA/IHsgLi4udmFsdWUsIGlkOiBjbGVhbk5ld1ZhbHVlKHZhbHVlLmlkKSB9XG4gICAgOiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnXG4gICAgPyB2YWx1ZS5zdGFydHNXaXRoKGZvcm1hdExpbmtOb2Rlc1ByZWZpeClcbiAgICAgID8gdmFsdWUuc3BsaXQoJzonKVsxXS50cmltKClcbiAgICAgIDogdmFsdWVcbiAgICA6IHZhbHVlO1xuXG5jb25zdCBmb3JtYXRMaW5rTm9kZXNTdWdnZXN0aW9ucyA9IChub2RlTWFwOiB7IFt0eXBlIGluIE5vZGVUeXBlXT86IHN0cmluZ1tdIH0sIHR5cGU6IE5vZGVUeXBlKSA9PlxuICAobm9kZU1hcFt0eXBlXSB8fCBbXSkubWFwKGlkID0+ICh7IHR5cGUsIGlkLCBuYW1lOiBgJHtmb3JtYXRMaW5rTm9kZXNQcmVmaXh9ICR7dHlwZX06ICR7aWR9YCB9KSk7XG5cbnR5cGUgc3VnZ2VzdEZ1bmMgPSAodGVybTogc3RyaW5nLCBwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkgPT4gT2JzZXJ2YWJsZTxhbnlbXT47XG5cbmNvbnN0IGluc2VydFByb3BlcnR5ID0gKHByb3BlcnRpZXM6IElOb2RlUHJvcGVydHlbXSwga2V5OiBzdHJpbmcsIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSA9PiB7XG4gIGNvbnN0IGV4aXN0aW5nUHJvcGVydHlJbmRleCA9IHByb3BlcnRpZXMuZmluZEluZGV4KHYgPT4gdi5mdWxsS2V5ID09PSBrZXkpO1xuICBleGlzdGluZ1Byb3BlcnR5SW5kZXggPj0gMCA/IChwcm9wZXJ0aWVzW2V4aXN0aW5nUHJvcGVydHlJbmRleF0gPSBwcm9wZXJ0eSkgOiBwcm9wZXJ0aWVzLnB1c2gocHJvcGVydHkpO1xuICBwcm9wZXJ0aWVzLnNvcnQoc29ydFByb3BlcnRpZXMpO1xuICByZXR1cm4gcHJvcGVydGllcztcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLWZpbGVzLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZXMtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpbGVzLWZvcm0uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGaWxlc0Zvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKVxuICBwcml2YXRlIHNjaGVtYXM/OiBkZWZpbml0aW9ucztcbiAgQElucHV0KClcbiAgcHJpdmF0ZSBlcnJvcnM6IElWYWxpZGF0aW9uRXJyb3JbXSA9IFtdO1xuICBASW5wdXQoKVxuICBwdWJsaWMgbm9kZT86IEhlc3RpYUpzb248U2NoZW1hVHlwZT47XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBub2RlTWFwOiB7IFt0eXBlIGluIE5vZGVUeXBlXT86IHN0cmluZ1tdIH0gPSB7fTtcbiAgLyoqXG4gICAqIEFsbG93IGVkaXRpbmcgbm9kZXMgKGBmYWxzZWAgZm9yIHJlYWRvbmx5KS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlZGl0YWJsZSA9IGZhbHNlO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZXJyb3JNb2RlID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkZWVwRWRpdGFibGUgPSB0cnVlO1xuICAvKipcbiAgICogQ2FuIGVkaXQgZXJyb3JzLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGVycm9yc0VkaXRhYmxlID0gZmFsc2U7XG4gIC8qKlxuICAgKiBXaGVuIHNlbGVjdGluZyB0ZXJtcywgd2lsbCBzaG93IGRlZmF1bHQgcHJvcGVydGllcyBvciBub3QuXG4gICAqIFNob3VsZCBiZSBgZmFsc2VgIHdoZW4gdXNpbmcgc2NoZW1hIHZhbGlkYXRpb24sIGFzIG9ubHkgdGhlIGBuYW1lYCB3b3VsZCBiZSBhZGRlZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93U3VnZ2VzdGVkRGVmYXVsdFByb3BlcnRpZXMgPSB0cnVlO1xuXG4gIEBPdXRwdXQoKVxuICBwcml2YXRlIG5vZGVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx7IGtleTogc3RyaW5nOyB2YWx1ZTogYW55IH0+KCk7XG4gIEBPdXRwdXQoKVxuICBwcml2YXRlIG5vZGVFcm9yclJlc29sdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKVxuICBwcml2YXRlIG5vZGVFcnJvckFkZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxJVmFsaWRhdGlvbkVycm9yPigpO1xuXG4gIHB1YmxpYyBOb2RlVHlwZSA9IE5vZGVUeXBlO1xuICBwdWJsaWMgU2NoZW1hVHlwZSA9IFNjaGVtYVR5cGU7XG4gIHB1YmxpYyBpc09wZW4gPSB0cnVlO1xuICBwdWJsaWMgbWFwVmlzaWJsZSA9IGZhbHNlO1xuICBwdWJsaWMgZm9ybWF0UHJvcGVydHlFcnJvciA9IGZvcm1hdFByb3BlcnR5RXJyb3I7XG4gIHB1YmxpYyB0eXBlYWhlYWRGb2N1cyA9IHR5cGVhaGVhZEZvY3VzO1xuICBwdWJsaWMgbWFwRHJhd2luZ1Byb3BlcnR5PzogSU5vZGVQcm9wZXJ0eTtcbiAgcHVibGljIGJpYmxpb2dyYXBoaWVzU2VhcmNoUHJvcGVydHk/OiBJTm9kZVByb3BlcnR5O1xuICBwdWJsaWMgbm9kZVByb3BlcnR5PzogSU5vZGVQcm9wZXJ0eTtcbiAgcHVibGljIHByb3BlcnRpZXM6IElOb2RlUHJvcGVydHlbXSA9IFtdO1xuXG4gIHB1YmxpYyBzdWdnZXN0TmV3UHJvcGVydHkgPVxuICAgICh7IGZ1bGxLZXkgfTogSU5vZGVQcm9wZXJ0eSkgPT5cbiAgICAodGV4dCQ6IE9ic2VydmFibGU8c3RyaW5nPikgPT5cbiAgICAgIHRleHQkLnBpcGUoXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHN3aXRjaE1hcCh0ZXJtID0+IG9mKHRoaXMubmV3UHJvcGVydGllcyhmaW5kUHJvcGVydHkodGhpcy5wcm9wZXJ0aWVzLCBmdWxsS2V5KSB8fCB0aGlzLm5vZGVQcm9wZXJ0eSwgdGVybSkpKVxuICAgICAgKTtcbiAgcHVibGljIGZvcm1hdE5ld1Byb3BlcnR5ID0gKHsgbmFtZSB9OiBJTmV3UHJvcGVydHkpID0+IG5hbWU7XG5cbiAgcHJpdmF0ZSBzdWdnZXN0RXhpc3RpbmdOb2RlID0gKHR5cGU6IE5vZGVUeXBlLCB0ZXJtOiBzdHJpbmcsIHVuaXF1ZUtleSA9ICdAaWQnKSA9PlxuICAgIHRlcm0ubGVuZ3RoIDwgTUlOX1RZUEVBSEVBRF9MRU5HVEhcbiAgICAgID8gb2YoW10pXG4gICAgICA6IHRoaXMuc2VhcmNoU2VydmljZS5zdWdnZXN0KFxuICAgICAgICAgIHRlcm0sXG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICBbXSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBib29sOiB7XG4gICAgICAgICAgICAgIG11c3Q6IFttYXRjaFR5cGUodHlwZSldLFxuICAgICAgICAgICAgICBzaG91bGQ6IFtcbiAgICAgICAgICAgICAgICBtYXRjaFBocmFzZVF1ZXJ5KHRlcm0sIDEwMCwgdW5pcXVlS2V5KSxcbiAgICAgICAgICAgICAgICBtYXRjaFBocmFzZVByZWZpeFF1ZXJ5KHRlcm0sIDIwLCB1bmlxdWVLZXkpLFxuICAgICAgICAgICAgICAgIG1hdGNoQm9vbFByZWZpeFF1ZXJ5KHRlcm0sIDEwLCB1bmlxdWVLZXkpXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIG1pbmltdW1fc2hvdWxkX21hdGNoOiAxXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICAxMCxcbiAgICAgICAgICB0aGlzLnN1Z2dlc3RUZXJtRmllbGRzXG4gICAgICAgICk7XG5cbiAgcHJpdmF0ZSBzdWdnZXN0Tm9kZSA9ICh0eXBlOiBOb2RlVHlwZSwgc3VnZ2VzdERlZmF1bHQ/OiBzdWdnZXN0RnVuYykgPT4gKHRlcm06IHN0cmluZywgcHJvcGVydHk6IElOb2RlUHJvcGVydHkpID0+XG4gICAgKHByb3BlcnR5LnN1Z2dlc3Rpb25zPy5pc1VuaXF1ZUtleVxuICAgICAgPyB0aGlzLnN1Z2dlc3RFeGlzdGluZ05vZGUodHlwZSwgdGVybSwgcHJvcGVydHkuc3VnZ2VzdGlvbnMuaXNVbmlxdWVLZXkpXG4gICAgICA6IHByb3BlcnR5LnN1Z2dlc3Rpb25zPy5pc0xpbmtOb2RlXG4gICAgICA/IG9mKGZvcm1hdExpbmtOb2Rlc1N1Z2dlc3Rpb25zKHRoaXMubm9kZU1hcCwgdHlwZSkpXG4gICAgICA6IHN1Z2dlc3REZWZhdWx0XG4gICAgICA/IHN1Z2dlc3REZWZhdWx0KHRlcm0sIHByb3BlcnR5KVxuICAgICAgOiBvZihbXSlcbiAgICApLnBpcGUobWFwKChyZXM6IGFueSkgPT4gcmVzLm1hcChmb3JtYXRTdWdnZXN0aW9uKSkpO1xuXG4gIHByaXZhdGUgc3VnZ2VzdGVyOiB7XG4gICAgW3R5cGUgaW4gc3VnZ2VzdGlvblR5cGVdPzogc3VnZ2VzdEZ1bmM7XG4gIH0gPSB7XG4gICAgZGVmYXVsdDogKHRlcm0sIHByb3BlcnR5KSA9PlxuICAgICAgb2YoXG4gICAgICAgIChwcm9wZXJ0eT8uc3VnZ2VzdGlvbnM/LnZhbHVlcyB8fCBbXSlcbiAgICAgICAgICAubWFwKHYgPT4gYCR7dn1gKVxuICAgICAgICAgIC5maWx0ZXIodiA9PiB2LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybS50b0xvd2VyQ2FzZSgpKSlcbiAgICAgICAgICAubWFwKG5hbWUgPT4gKHsgbmFtZSB9KSlcbiAgICAgICksXG4gICAgW05vZGVUeXBlLkFjdG9yXTogdGhpcy5zdWdnZXN0Tm9kZShOb2RlVHlwZS5BY3RvciksXG4gICAgW05vZGVUeXBlLkN5Y2xlXTogdGhpcy5zdWdnZXN0Tm9kZShOb2RlVHlwZS5DeWNsZSksXG4gICAgW05vZGVUeXBlLkltcGFjdEFzc2Vzc21lbnRdOiB0aGlzLnN1Z2dlc3ROb2RlKE5vZGVUeXBlLkltcGFjdEFzc2Vzc21lbnQpLFxuICAgIFtOb2RlVHlwZS5PcmdhbmlzYXRpb25dOiB0aGlzLnN1Z2dlc3ROb2RlKE5vZGVUeXBlLk9yZ2FuaXNhdGlvbiksXG4gICAgW05vZGVUeXBlLlNpdGVdOiB0aGlzLnN1Z2dlc3ROb2RlKE5vZGVUeXBlLlNpdGUpLFxuICAgIFtOb2RlVHlwZS5Tb3VyY2VdOiB0aGlzLnN1Z2dlc3ROb2RlKE5vZGVUeXBlLlNvdXJjZSwgKHRlcm0sIHsga2V5IH0pID0+XG4gICAgICB0ZXJtLmxlbmd0aCA8IE1JTl9UWVBFQUhFQURfTEVOR1RIXG4gICAgICAgID8gb2YoW10pXG4gICAgICAgIDogdGhpcy5zZWFyY2hTZXJ2aWNlLnN1Z2dlc3RTb3VyY2UodGVybSwgNSwgW2BiaWJsaW9ncmFwaHkuJHtrZXl9YF0sIFtgYmlibGlvZ3JhcGh5LiR7a2V5fWBdKVxuICAgICksXG4gICAgW05vZGVUeXBlLlRlcm1dOiB0aGlzLnN1Z2dlc3ROb2RlKE5vZGVUeXBlLlRlcm0sICh0ZXJtLCB7IHN1Z2dlc3Rpb25zIH0pID0+XG4gICAgICB0ZXJtLmxlbmd0aCA8IE1JTl9UWVBFQUhFQURfTEVOR1RIXG4gICAgICAgID8gb2YoW10pXG4gICAgICAgIDogdGhpcy5zZWFyY2hTZXJ2aWNlLnN1Z2dlc3QodGVybSwgTm9kZVR5cGUuVGVybSwgc3VnZ2VzdGlvbnM/LnF1ZXJpZXMgfHwgW10sIG51bGwsIDUsIHRoaXMuc3VnZ2VzdFRlcm1GaWVsZHMpXG4gICAgKVxuICB9O1xuICBwdWJsaWMgcHJvcGVydHlTdWdnZXN0ID1cbiAgICAoeyBmdWxsS2V5LCBzdWdnZXN0aW9ucyB9OiBJTm9kZVByb3BlcnR5KSA9PlxuICAgICh0ZXh0JDogT2JzZXJ2YWJsZTxzdHJpbmc+KSA9PlxuICAgICAgdGV4dCQucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKHN1Z2dlc3Rpb25zPy50eXBlID09PSBkZWZhdWx0U3VnZ2VzdGlvblR5cGUgPyAwIDogMzAwKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgbWVyZ2VNYXAodGVybSA9PiB7XG4gICAgICAgICAgY29uc3QgcHJvcGVydHkgPSBmaW5kUHJvcGVydHkodGhpcy5wcm9wZXJ0aWVzLCBmdWxsS2V5KTtcbiAgICAgICAgICByZXR1cm4gcHJvcGVydHk/LmVkaXRhYmxlICYmIHN1Z2dlc3Rpb25zPy50eXBlIGluIHRoaXMuc3VnZ2VzdGVyXG4gICAgICAgICAgICA/IG9mKHRlcm0pLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IChwcm9wZXJ0eS5sb2FkaW5nID0gdHJ1ZSkpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnN1Z2dlc3RlcltzdWdnZXN0aW9ucz8udHlwZV0hKHRlcm0sIHByb3BlcnR5KSksXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IChwcm9wZXJ0eS5sb2FkaW5nID0gZmFsc2UpKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IG9mKFtdKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHNlYXJjaFNlcnZpY2U6IEhlU2VhcmNoU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJzU2VydmljZTogSGVVc2Vyc1NlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IHNjaGVtYVR5cGUgPSB0aGlzLm5vZGUhLnR5cGUgfHwgdGhpcy5ub2RlIVsnQHR5cGUnXTtcbiAgICBjb25zdCBzY2hlbWEgPSB0aGlzLnNjaGVtYXMgPyB0aGlzLnNjaGVtYXNbc2NoZW1hVHlwZV0gOiAoe30gYXMgZGVmaW5pdGlvbik7XG4gICAgY29uc3QgZXJyb3JzID0gdGhpcy5lcnJvcnMuZmlsdGVyKGZpbHRlckVycm9yKTtcbiAgICBjb25zdCBlcnJvciA9IHByb3BlcnR5RXJyb3IoZXJyb3JzKSgnJyk7XG4gICAgdGhpcy5ub2RlUHJvcGVydHkgPSB0aGlzLnNjaGVtYXNcbiAgICAgID8ge1xuICAgICAgICAgIGlkOiBwcm9wZXJ0eUlkKCksXG4gICAgICAgICAgc2NoZW1hLFxuICAgICAgICAgIHNjaGVtYVR5cGUsXG4gICAgICAgICAgZWRpdGFibGU6ICEhdGhpcy5ub2RlIS50eXBlLFxuICAgICAgICAgIGZ1bGxLZXk6ICcnLFxuICAgICAgICAgIGtleTogJycsXG4gICAgICAgICAgdmFsdWU6IHt9LFxuICAgICAgICAgIGVycm9yOiBmb3JtYXRFcnJvcihlcnJvciksXG4gICAgICAgICAgaGFzRXJyb3I6IGVycm9ySGFzRXJyb3IoZXJyb3IpLFxuICAgICAgICAgIGhhc1dhcm5pbmc6IGVycm9ySGFzV2FybmluZyhlcnJvciksXG4gICAgICAgICAgc3VnZ2VzdGlvbnM6IHt9LFxuICAgICAgICAgIG5ld1Byb3BlcnR5OiB7fSxcbiAgICAgICAgICBuZXdFcnJvcjogeyBsZXZlbDogJ3dhcm5pbmcnIH0sXG4gICAgICAgICAgcHJvcGVydGllczogW10sXG4gICAgICAgICAgYWRkUHJvcGVydHlFbmFibGVkOiBpc0FkZFByb3BlcnR5RW5hYmxlZCh0aGlzLm5vZGUhLCBzY2hlbWFUeXBlLCBzY2hlbWEpLFxuICAgICAgICAgIGZvcm1hdHRlcjogZm9ybWF0dGVyKCcnKVxuICAgICAgICB9XG4gICAgICA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCByZWN1cnNlciA9IHJlY3Vyc2l2ZVByb3BlcnRpZXModGhpcy5zY2hlbWFzISwgZXJyb3JzLCBzY2hlbWEsIHRoaXMuZGVlcEVkaXRhYmxlKTtcbiAgICB0aGlzLnByb3BlcnRpZXMgPSByZWN1cnNlcih0aGlzLm5vZGUpO1xuICB9XG5cbiAgcHVibGljIHRyYWNrQnlJbmRleChpbmRleDogbnVtYmVyLCBfdmFsdWU6IGFueSkge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIHB1YmxpYyB0cmFja0J5UHJvcGVydHkoX2luZGV4OiBudW1iZXIsIHsgaWQsIGZ1bGxLZXkgfTogSU5vZGVQcm9wZXJ0eSkge1xuICAgIHJldHVybiBbZnVsbEtleSwgaWRdLmpvaW4oJ18nKTtcbiAgfVxuXG4gIHB1YmxpYyBoYXNBZGRvbnMocHJvcGVydHk6IElOb2RlUHJvcGVydHkpIHtcbiAgICByZXR1cm4gKFxuICAgICAgcHJvcGVydHkgJiZcbiAgICAgICh0aGlzLmVuYWJsZUFkZEVycm9yKHByb3BlcnR5KSB8fFxuICAgICAgICAodGhpcy5lZGl0YWJsZSAmJiBwcm9wZXJ0eS5lZGl0YWJsZSkgfHxcbiAgICAgICAgdGhpcy5hZGRQcm9wZXJ0eUVuYWJsZWQocHJvcGVydHkpIHx8XG4gICAgICAgIHRoaXMuaXNSZXF1aXJlZChwcm9wZXJ0eSkgfHxcbiAgICAgICAgcHJvcGVydHkuZXh0ZXJuYWxVcmw/LnVybCB8fFxuICAgICAgICB0aGlzLm1hcERyYXdpbmdNb2Rlcyhwcm9wZXJ0eSkubGVuZ3RoIHx8XG4gICAgICAgIHRoaXMudW5pdENvbnZlcnRlckVuYWJsZWQocHJvcGVydHkpKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgaXNSZXF1aXJlZCh7IHZhbHVlLCBpc1JlcXVpcmVkIH06IElOb2RlUHJvcGVydHkpIHtcbiAgICByZXR1cm4gaXNSZXF1aXJlZCAmJiBpc0VtcHR5KHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHN1Z2dlc3RUZXJtRmllbGRzKCkge1xuICAgIHJldHVybiBbLi4ucG9wdWxhdGVUZXJtRmllbGRzLCAuLi4odGhpcy5zaG93U3VnZ2VzdGVkRGVmYXVsdFByb3BlcnRpZXMgPyBwb3B1bGF0ZVRlcm1EZWZhdWx0UHJvcGVydGllcyA6IFtdKV07XG4gIH1cblxuICAvLyAtLS0gRXJyb3JzXG5cbiAgcHVibGljIGVuYWJsZUFkZEVycm9yKHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSB7XG4gICAgcmV0dXJuIHRoaXMuZXJyb3JzRWRpdGFibGUgJiYgIXByb3BlcnR5Lmhhc0Vycm9yICYmICFwcm9wZXJ0eS5oYXNXYXJuaW5nO1xuICB9XG5cbiAgcHVibGljIGFkZEVycm9yKHByb3BlcnR5OiBJTm9kZVByb3BlcnR5LCB7IG1lc3NhZ2UsIGxldmVsIH06IElFcnJvclByb3BlcnR5KSB7XG4gICAgaWYgKCFtZXNzYWdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGtleXMgPSBwcm9wZXJ0eS5mdWxsS2V5LnNwbGl0KCcuJyk7XG4gICAga2V5cy5wb3AoKTtcbiAgICBjb25zdCBlcnJvcjogSVZhbGlkYXRpb25FcnJvciA9IHByb3BlcnR5LmlzQWRkZWRcbiAgICAgID8ge1xuICAgICAgICAgIG1lc3NhZ2UsXG4gICAgICAgICAgbGV2ZWw6IGxldmVsIHx8ICdlcnJvcicsXG4gICAgICAgICAgZGF0YVBhdGg6IGtleVRvRGF0YVBhdGgoa2V5cy5qb2luKCcuJykpLFxuICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgbWlzc2luZ1Byb3BlcnR5OiBwcm9wZXJ0eS5rZXlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIDoge1xuICAgICAgICAgIG1lc3NhZ2UsXG4gICAgICAgICAgbGV2ZWw6IGxldmVsIHx8ICdlcnJvcicsXG4gICAgICAgICAgZGF0YVBhdGg6IGtleVRvRGF0YVBhdGgocHJvcGVydHkuZnVsbEtleSlcbiAgICAgICAgfTtcbiAgICBwcm9wZXJ0eS5uZXdFcnJvciA9IHsgbGV2ZWw6ICd3YXJuaW5nJyB9O1xuICAgIHByb3BlcnR5LmVycm9yID0gZXJyb3I7XG4gICAgcHJvcGVydHkuaGFzRXJyb3IgPSBlcnJvckhhc0Vycm9yKGVycm9yKTtcbiAgICBwcm9wZXJ0eS5oYXNXYXJuaW5nID0gZXJyb3JIYXNXYXJuaW5nKGVycm9yKTtcbiAgICB0aGlzLm5vZGVFcnJvckFkZGVkLmVtaXQoZXJyb3IpO1xuICB9XG5cbiAgcHVibGljIGVkaXRFcnJvcihwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkge1xuICAgIHByb3BlcnR5Lm5ld0Vycm9yID0gcHJvcGVydHkuZXJyb3I7XG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZUVycm9yKHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSB7XG4gICAgY29uc3QgaW5kZXggPSBwcm9wZXJ0eS5lcnJvcj8uaW5kZXg7XG4gICAgcHJvcGVydHkuZXJyb3IgPSB1bmRlZmluZWQ7XG4gICAgcHJvcGVydHkuaGFzRXJyb3IgPSBoYXNFcnJvcihwcm9wZXJ0eS5wcm9wZXJ0aWVzKTtcbiAgICBwcm9wZXJ0eS5oYXNXYXJuaW5nID0gaGFzV2FybmluZyhwcm9wZXJ0eS5wcm9wZXJ0aWVzKTtcbiAgICB0aGlzLm5vZGVFcm9yclJlc29sdmVkLmVtaXQoaW5kZXgpO1xuICAgIHJldHVybiBncm91cENoYW5nZWQodGhpcy5wcm9wZXJ0aWVzLCBwcm9wZXJ0eS5mdWxsS2V5KTtcbiAgfVxuXG4gIC8vIC0tLVxuXG4gIHB1YmxpYyBhZGRQcm9wZXJ0eUVuYWJsZWQocHJvcGVydHk6IElOb2RlUHJvcGVydHkpIHtcbiAgICByZXR1cm4gdGhpcy5lZGl0YWJsZSAmJiAhdGhpcy5lcnJvcnNFZGl0YWJsZSAmJiBwcm9wZXJ0eS5hZGRQcm9wZXJ0eUVuYWJsZWQ7XG4gIH1cblxuICBwcml2YXRlIG5ld1Byb3BlcnRpZXMocHJvcGVydHk6IElOb2RlUHJvcGVydHksIGZpZWxkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gbm9kZUF2YWlsYWJsZVByb3BlcnRpZXModGhpcy5ub2RlISwgcHJvcGVydHkpO1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhwcm9wZXJ0aWVzKVxuICAgICAgLmZpbHRlcihwcm9wID0+IHByb3AudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWVsZC50b0xvd2VyQ2FzZSgpKSlcbiAgICAgIC5tYXAobmFtZSA9PiAoeyBuYW1lLCBwcm9wOiBwcm9wZXJ0aWVzW25hbWVdIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVwbGFjZVByb3BlcnR5RGF0YShwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSwgZGF0YTogYW55LCBlZGl0YWJsZT86IGJvb2xlYW4sIHJlcGxhY2VQYXJlbnQgPSB0cnVlKSB7XG4gICAgY29uc3QgcGFyZW50ID0gcmVwbGFjZVBhcmVudCA/IHBhcmVudFByb3BlcnR5KHRoaXMucHJvcGVydGllcywgcHJvcGVydHkpIDogcHJvcGVydHk7XG4gICAgY29uc3QgcHJvcGVydGllcyA9IHJlY3Vyc2l2ZVByb3BlcnRpZXMoXG4gICAgICB0aGlzLnNjaGVtYXMhLFxuICAgICAgW10sXG4gICAgICB0aGlzLnNjaGVtYXMhW3RoaXMubm9kZSEudHlwZV0sXG4gICAgICB0aGlzLmRlZXBFZGl0YWJsZSxcbiAgICAgIHBhcmVudC5mdWxsS2V5XG4gICAgKShkYXRhKTtcbiAgICB1cGRhdGVQcm9wZXJ0aWVzKHsgcHJvcGVydGllcyB9LCBwcm9wID0+IHtcbiAgICAgIHByb3AuZWRpdGFibGUgPSB0eXBlb2YgZWRpdGFibGUgPT09ICd1bmRlZmluZWQnID8gcHJvcC5lZGl0YWJsZSA6IGVkaXRhYmxlO1xuICAgICAgcmV0dXJuIHByb3A7XG4gICAgfSk7XG4gICAgcGFyZW50LmVkaXRhYmxlID0gdHlwZW9mIGVkaXRhYmxlID09PSAndW5kZWZpbmVkJyA/IHBhcmVudC5lZGl0YWJsZSA6IGVkaXRhYmxlO1xuICAgIHBhcmVudC5wcm9wZXJ0aWVzID0gcHJvcGVydGllcztcbiAgICBwYXJlbnQudmFsdWUgPSBkYXRhO1xuICAgIHJldHVybiB0aGlzLnByb3BlcnR5Q2hhbmdlZChkYXRhLCBwYXJlbnQpO1xuICB9XG5cbiAgcHVibGljIHN1Z2dlc3Rpb25TZWxlY3RlZCh7ICdAaWQnOiBfaWQsIG5hbWUsIHR5cGUsIGlkLCAuLi5kYXRhIH0sIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSB7XG4gICAgcmV0dXJuIF9pZFxuICAgICAgPyAvLyBzdWdnZXN0aW9ucyBmcm9tIGV4aXN0aW5nIG5vZGVzXG4gICAgICAgIHRoaXMucmVwbGFjZVByb3BlcnR5RGF0YShwcm9wZXJ0eSwgeyAnQGlkJzogX2lkLCAnQHR5cGUnOiBwcm9wZXJ0eS5zdWdnZXN0aW9ucz8udHlwZSwgbmFtZSwgLi4uZGF0YSB9LCBmYWxzZSlcbiAgICAgIDogLy8gc3VnZ2VzdGlvbiBmcm9tIGxpbmtlZCBub2Rlc1xuICAgICAgdHlwZSAmJiBpZFxuICAgICAgPyB0aGlzLnJlcGxhY2VQcm9wZXJ0eURhdGEocHJvcGVydHksIHsgdHlwZSwgaWQsIC4uLmRhdGEgfSwgdHJ1ZSlcbiAgICAgIDogLy8gc3VnZ2VzdGlvbiBieSBuYW1lID0+IGVudW0gdmFsdWVzXG4gICAgICAgIHRoaXMucHJvcGVydHlDaGFuZ2VkKG5hbWUsIHByb3BlcnR5KTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRBcnJheUdyb3VwKGFycmF5OiBJTm9kZVByb3BlcnR5KSB7XG4gICAgY29uc3QgcHJvcCA9IHRoaXMuc2NoZW1hcyFbYXJyYXkuc2NoZW1hVHlwZV07XG4gICAgY29uc3QgdmFsdWUgPSBnZXQodGhpcy5ub2RlLCBhcnJheS5mdWxsS2V5KTtcbiAgICBjb25zdCBuZXdQcm9wZXJ0eSA9IHR5cGVUb05ld1Byb3BlcnR5KFxuICAgICAgdGhpcy5zY2hlbWFzISxcbiAgICAgIHByb3AsXG4gICAgICBwcm9wLFxuICAgICAgdmFsdWUsXG4gICAgICBgJHthcnJheS5mdWxsS2V5fVske2FycmF5LnByb3BlcnRpZXMubGVuZ3RofV1gXG4gICAgKTtcbiAgICBhcnJheS5wcm9wZXJ0aWVzLnB1c2gobmV3UHJvcGVydHkpO1xuICAgIHRoaXMubm9kZUNoYW5nZWQuZW1pdCh7IGtleTogYXJyYXkuZnVsbEtleSwgdmFsdWUgfSk7XG4gICAgcmV0dXJuIGdyb3VwQ2hhbmdlZCh0aGlzLnByb3BlcnRpZXMsIGFycmF5LmZ1bGxLZXkpO1xuICB9XG5cbiAgcHVibGljIGR1cGxpY2F0ZUFycmF5R3JvdXAoYXJyYXk6IElOb2RlUHJvcGVydHksIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSB7XG4gICAgY29uc3QgaW5kZXggPSArcHJvcGVydHkua2V5O1xuICAgIGNvbnN0IG5ld1Byb3BlcnR5OiBJTm9kZVByb3BlcnR5ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwcm9wZXJ0eSkpO1xuICAgIG5ld1Byb3BlcnR5LmlkID0gcHJvcGVydHlJZCgpO1xuICAgIGNvbnN0IHZhbHVlID0gWy4uLmdldCh0aGlzLm5vZGUsIGFycmF5LmZ1bGxLZXkpXTtcbiAgICB2YWx1ZS5zcGxpY2UoaW5kZXgsIDAsIHNhZmVKU09OUGFyc2UobmV3UHJvcGVydHkudmFsdWUpKTtcbiAgICBhcnJheS5wcm9wZXJ0aWVzLnNwbGljZShpbmRleCwgMCwgbmV3UHJvcGVydHkpO1xuICAgIC8vIG5lZWQgdG8gY2hhbmdlIGtleSBvbiBldmVyeSBwcm9wZXJ0aWVzIHJlY3Vyc2l2ZWx5XG4gICAgcmVmcmVzaFByb3BlcnR5S2V5cyhhcnJheSk7XG4gICAgdGhpcy5ub2RlQ2hhbmdlZC5lbWl0KHsga2V5OiBhcnJheS5mdWxsS2V5LCB2YWx1ZSB9KTtcbiAgICByZXR1cm4gZ3JvdXBDaGFuZ2VkKHRoaXMucHJvcGVydGllcywgYXJyYXkuZnVsbEtleSk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlQXJyYXlHcm91cChhcnJheTogSU5vZGVQcm9wZXJ0eSwgeyBrZXkgfTogSU5vZGVQcm9wZXJ0eSkge1xuICAgIGNvbnN0IGluZGV4ID0gK2tleTtcbiAgICBjb25zdCB2YWx1ZSA9IFsuLi5nZXQodGhpcy5ub2RlLCBhcnJheS5mdWxsS2V5KV07XG4gICAgdmFsdWUuc3BsaWNlKGluZGV4LCAxKTtcbiAgICBhcnJheS5wcm9wZXJ0aWVzLnNwbGljZShpbmRleCwgMSk7XG4gICAgLy8gbmVlZCB0byBjaGFuZ2Uga2V5IG9uIGV2ZXJ5IHByb3BlcnRpZXMgcmVjdXJzaXZlbHlcbiAgICByZWZyZXNoUHJvcGVydHlLZXlzKGFycmF5KTtcbiAgICB0aGlzLm5vZGVDaGFuZ2VkLmVtaXQoeyBrZXk6IGFycmF5LmZ1bGxLZXksIHZhbHVlIH0pO1xuICAgIC8vIGlmIG5vIG1vcmUgdmFsdWVzLCByZW1vdmUgcGFyZW50IGdyb3VwIGVudGlyZWx5XG4gICAgcmV0dXJuIGFycmF5LnByb3BlcnRpZXMubGVuZ3RoID8gbnVsbCA6IHRoaXMucHJvcGVydHlDaGFuZ2VkKG51bGwsIGFycmF5KTtcbiAgfVxuXG4gIHByaXZhdGUgbW92ZUFycmF5R3JvdXBUb1Bvc2l0aW9uKGFycmF5OiBJTm9kZVByb3BlcnR5LCBjdXJyZW50SW5kZXg6IG51bWJlciwgbmV3SW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IHZhbHVlID0gWy4uLmdldCh0aGlzLm5vZGUsIGFycmF5LmZ1bGxLZXkpXTtcbiAgICBtb3ZlSXRlbUluQXJyYXkodmFsdWUsIGN1cnJlbnRJbmRleCwgbmV3SW5kZXgpO1xuICAgIG1vdmVJdGVtSW5BcnJheShhcnJheS5wcm9wZXJ0aWVzLCBjdXJyZW50SW5kZXgsIG5ld0luZGV4KTtcbiAgICAvLyBuZWVkIHRvIGNoYW5nZSBrZXkgb24gZXZlcnkgcHJvcGVydGllcyByZWN1cnNpdmVseVxuICAgIHJlZnJlc2hQcm9wZXJ0eUtleXMoYXJyYXkpO1xuICAgIHRoaXMubm9kZUNoYW5nZWQuZW1pdCh7IGtleTogYXJyYXkuZnVsbEtleSwgdmFsdWUgfSk7XG4gICAgcmV0dXJuIGdyb3VwQ2hhbmdlZCh0aGlzLnByb3BlcnRpZXMsIGFycmF5LmZ1bGxLZXkpO1xuICB9XG5cbiAgcHVibGljIG1vdmVBcnJheUdyb3VwVXAoYXJyYXk6IElOb2RlUHJvcGVydHksIHsga2V5IH06IElOb2RlUHJvcGVydHkpIHtcbiAgICBjb25zdCBpbmRleCA9ICtrZXk7XG4gICAgcmV0dXJuIHRoaXMubW92ZUFycmF5R3JvdXBUb1Bvc2l0aW9uKGFycmF5LCBpbmRleCwgaW5kZXggLSAxKTtcbiAgfVxuXG4gIHB1YmxpYyBtb3ZlQXJyYXlHcm91cERvd24oYXJyYXk6IElOb2RlUHJvcGVydHksIHsga2V5IH06IElOb2RlUHJvcGVydHkpIHtcbiAgICBjb25zdCBpbmRleCA9ICtrZXk7XG4gICAgcmV0dXJuIHRoaXMubW92ZUFycmF5R3JvdXBUb1Bvc2l0aW9uKGFycmF5LCBpbmRleCwgaW5kZXggKyAxKTtcbiAgfVxuXG4gIHB1YmxpYyBwcm9wZXJ0eUNoYW5nZWQodmFsdWU6IGFueSwgcHJvcGVydHk6IElOb2RlUHJvcGVydHkpIHtcbiAgICBncm91cENoYW5nZWQodGhpcy5wcm9wZXJ0aWVzLCBwcm9wZXJ0eS5mdWxsS2V5LCB2YWx1ZSk7XG4gICAgcHJvcGVydHkuYWRkUHJvcGVydHlFbmFibGVkID0gaXNBZGRQcm9wZXJ0eUVuYWJsZWQoXG4gICAgICB0aGlzLm5vZGUhLFxuICAgICAgcHJvcGVydHkuc2NoZW1hVHlwZSxcbiAgICAgIHByb3BlcnR5LnNjaGVtYSEsXG4gICAgICBwcm9wZXJ0eS5mdWxsS2V5XG4gICAgKTtcblxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgdmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb3BlcnR5LnZhbHVlID0gdmFsdWU7XG4gICAgICBwcm9wZXJ0eS5jaGFuZ2VkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdWYWx1ZSA9IGNsZWFuTmV3VmFsdWUocGFyc2VOZXdWYWx1ZShwcm9wZXJ0eS5zY2hlbWEhLCB2YWx1ZSkpO1xuICAgIC8vIHRyaWdnZXIgcmVmcmVzaCBvZiBub2RlXG4gICAgY29uc3Qgbm9kZSA9IGNvcHlPYmplY3QodGhpcy5ub2RlKTtcbiAgICBzZXQobm9kZSwgcHJvcGVydHkuZnVsbEtleSwgbmV3VmFsdWUpO1xuICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gICAgLy8gdHJpZ2dlciBmb3IgbGlzdGVuZXJzXG4gICAgdGhpcy5ub2RlQ2hhbmdlZC5lbWl0KHsga2V5OiBwcm9wZXJ0eS5mdWxsS2V5LCB2YWx1ZTogbmV3VmFsdWUgfSk7XG4gIH1cblxuICBwcml2YXRlIGFkZERlZmF1bHRQcm9wZXJ0eShwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSwga2V5OiBzdHJpbmcsIGRlZjogZGVmaW5pdGlvbikge1xuICAgIGNvbnN0IG5vZGUgPSBwcm9wZXJ0eS5rZXkgPyBnZXQodGhpcy5ub2RlLCBwcm9wZXJ0eS5mdWxsS2V5KSA6IHRoaXMubm9kZTtcbiAgICBjb25zdCBmdWxsS2V5ID0gcHJvcGVydHkua2V5ID8gYCR7cHJvcGVydHkuZnVsbEtleX0uJHtrZXl9YCA6IGtleTtcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gcHJvcGVydHkua2V5ID8gcHJvcGVydHkucHJvcGVydGllcyA6IHRoaXMucHJvcGVydGllcztcbiAgICBjb25zdCBuZXdQcm9wZXJ0eSA9IHR5cGVUb05ld1Byb3BlcnR5KHRoaXMuc2NoZW1hcyEsIGRlZiwgdGhpcy5zY2hlbWFzIVtwcm9wZXJ0eS5zY2hlbWFUeXBlXSwgbm9kZSwgZnVsbEtleSk7XG4gICAgaW5zZXJ0UHJvcGVydHkocHJvcGVydGllcywgZnVsbEtleSwgbmV3UHJvcGVydHkpO1xuICAgIHJldHVybiB0aGlzLnByb3BlcnR5Q2hhbmdlZChuZXdQcm9wZXJ0eS52YWx1ZSwgbmV3UHJvcGVydHkpO1xuICB9XG5cbiAgcHVibGljIGFkZE1pc3NpbmdQcm9wZXJ0eShwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkge1xuICAgIGNvbnN0IHBhcmVudCA9IHBhcmVudFByb3BlcnR5KHRoaXMucHJvcGVydGllcywgcHJvcGVydHkpO1xuICAgIGNvbnN0IG5ld1Byb3BlcnR5ID0gcGFyZW50ID09PSBwcm9wZXJ0eSA/IHRoaXMubm9kZVByb3BlcnR5ISA6IHBhcmVudDtcbiAgICBjb25zdCBuZXdQcm9wZXJ0aWVzID0gdGhpcy5uZXdQcm9wZXJ0aWVzKG5ld1Byb3BlcnR5LCBwcm9wZXJ0eS5rZXkpO1xuICAgIG5ld1Byb3BlcnR5Lm5ld1Byb3BlcnR5ID0gbmV3UHJvcGVydGllc1swXTtcbiAgICByZXR1cm4gbmV3UHJvcGVydHkubmV3UHJvcGVydHkgPyB0aGlzLmFkZFByb3BlcnR5KG5ld1Byb3BlcnR5KSA6IG51bGw7XG4gIH1cblxuICBwdWJsaWMgYWRkUHJvcGVydHkocHJvcGVydHk6IElOb2RlUHJvcGVydHkpIHtcbiAgICBjb25zdCB7IG5hbWUsIHByb3AgfSA9IHByb3BlcnR5Lm5ld1Byb3BlcnR5ITtcbiAgICBwcm9wZXJ0eS5uZXdQcm9wZXJ0eSA9IHt9O1xuICAgIHJldHVybiBuYW1lID09PSAnQGlkJ1xuICAgICAgPyB0aGlzLnJlcGxhY2VQcm9wZXJ0eURhdGEocHJvcGVydHksIHsgJ0BpZCc6ICcnLCB0eXBlOiBwcm9wZXJ0eS5zY2hlbWFUeXBlIH0sIHVuZGVmaW5lZCwgZmFsc2UpXG4gICAgICA6IHRoaXMuYWRkRGVmYXVsdFByb3BlcnR5KHByb3BlcnR5LCBuYW1lISwgcHJvcCEpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVQcm9wZXJ0eUNvb3JkaW5hdGVzKHByb3BlcnR5OiBJTm9kZVByb3BlcnR5LCB2YWx1ZTogZ29vZ2xlLm1hcHMuTGF0TG5nTGl0ZXJhbCkge1xuICAgIGNvbnN0IGxhdGl0dWRlID0gc2libGluZ1Byb3BlcnR5KHRoaXMucHJvcGVydGllcywgcHJvcGVydHksICdsYXRpdHVkZScpO1xuICAgIGNvbnN0IGxvbmdpdHVkZSA9IHNpYmxpbmdQcm9wZXJ0eSh0aGlzLnByb3BlcnRpZXMsIHByb3BlcnR5LCAnbG9uZ2l0dWRlJyk7XG4gICAgcmV0dXJuIFtcbiAgICAgIGxhdGl0dWRlID8gdGhpcy5wcm9wZXJ0eUNoYW5nZWQodmFsdWUubGF0LCBsYXRpdHVkZSkgOiBudWxsLFxuICAgICAgbG9uZ2l0dWRlID8gdGhpcy5wcm9wZXJ0eUNoYW5nZWQodmFsdWUubG5nLCBsb25naXR1ZGUpIDogbnVsbFxuICAgIF07XG4gIH1cblxuICAvLyBNYXBcblxuICBwdWJsaWMgZ2V0IHNob3dNYXAoKSB7XG4gICAgcmV0dXJuICghdGhpcy5lZGl0YWJsZSB8fCB0aGlzLmVycm9yTW9kZSkgJiYgW1NjaGVtYVR5cGUuU2l0ZSwgU2NoZW1hVHlwZS5PcmdhbmlzYXRpb25dLmluY2x1ZGVzKHRoaXMubm9kZSEudHlwZSk7XG4gIH1cblxuICBwdWJsaWMgbWFwRHJhd2luZ01vZGVzKHsga2V5IH06IElOb2RlUHJvcGVydHkpIHtcbiAgICByZXR1cm4gWydib3VuZGFyeSddLmluY2x1ZGVzKGtleSkgPyBbJ3BvbHlnb24nXSA6IFsnbGF0aXR1ZGUnLCAnbG9uZ2l0dWRlJ10uaW5jbHVkZXMoa2V5KSA/IFsnbWFya2VyJ10gOiBbXTtcbiAgfVxuXG4gIHB1YmxpYyBvbk1hcERyYXdpbmdDbG9zZWQobmV3VmFsdWU6IGFueSkge1xuICAgIGNvbnN0IHByb3BlcnR5ID0gdGhpcy5tYXBEcmF3aW5nUHJvcGVydHk7XG4gICAgdGhpcy5tYXBEcmF3aW5nUHJvcGVydHkgPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIFsnbGF0aXR1ZGUnLCAnbG9uZ2l0dWRlJ10uaW5jbHVkZXMocHJvcGVydHkhLmtleSlcbiAgICAgID8gdGhpcy51cGRhdGVQcm9wZXJ0eUNvb3JkaW5hdGVzKHByb3BlcnR5ISwgbmV3VmFsdWUpXG4gICAgICA6IHRoaXMucHJvcGVydHlDaGFuZ2VkKG5ld1ZhbHVlLCBwcm9wZXJ0eSEpO1xuICB9XG5cbiAgLy8gQmlibGlvZ3JhcGh5IFNlYXJjaFxuXG4gIHB1YmxpYyBiaWJsaW9ncmFwaGllc1NlYXJjaEtleSh7IGtleSwgc2NoZW1hVHlwZSB9OiBJTm9kZVByb3BlcnR5KSB7XG4gICAgY29uc3QgdmFsaWRTY2hlbWEgPSBbU2NoZW1hVHlwZS5CaWJsaW9ncmFwaHldLmluY2x1ZGVzKHNjaGVtYVR5cGUpO1xuICAgIGNvbnN0IHZhbGllS2V5ID0gWyd0aXRsZScsICdkb2N1bWVudERPSScsICdzY29wdXMnXS5pbmNsdWRlcyhrZXkpO1xuICAgIHJldHVybiB2YWxpZFNjaGVtYSAmJiB2YWxpZUtleSA/IGtleSA6IG51bGw7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUJpYmxpb2dyYXBoeSh2YWx1ZTogUGFydGlhbDxCaWJsaW9ncmFwaHk+KSB7XG4gICAgY29uc3QgcGFyZW50ID0gcGFyZW50UHJvcGVydHkodGhpcy5wcm9wZXJ0aWVzLCB0aGlzLmJpYmxpb2dyYXBoaWVzU2VhcmNoUHJvcGVydHkhKTtcbiAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuYmlibGlvZ3JhcGhpZXNTZWFyY2hTb3VyY2VzXG4gICAgICA/IHtcbiAgICAgICAgICAuLi5wYXJlbnQudmFsdWUsXG4gICAgICAgICAgYmlibGlvZ3JhcGh5OiB2YWx1ZVxuICAgICAgICB9XG4gICAgICA6IHZhbHVlO1xuICAgIHRoaXMucmVwbGFjZVByb3BlcnR5RGF0YSh0aGlzLmJpYmxpb2dyYXBoaWVzU2VhcmNoUHJvcGVydHkhLCBuZXdWYWx1ZSwgdHJ1ZSk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU291cmNlKHZhbHVlOiBQYXJ0aWFsPFNvdXJjZT4pIHtcbiAgICAvLyBjYW5ub3QgcmVwbGFjZSBhIHRvcC1sZXZlbCBzb3VyY2VcbiAgICB0aGlzLmJpYmxpb2dyYXBoaWVzU2VhcmNoU291cmNlcyAmJlxuICAgICAgdGhpcy5yZXBsYWNlUHJvcGVydHlEYXRhKFxuICAgICAgICB0aGlzLmJpYmxpb2dyYXBoaWVzU2VhcmNoUHJvcGVydHkhLFxuICAgICAgICB7XG4gICAgICAgICAgJ0B0eXBlJzogTm9kZVR5cGUuU291cmNlLFxuICAgICAgICAgIC4uLnZhbHVlXG4gICAgICAgIH0sXG4gICAgICAgICEoJ0BpZCcgaW4gdmFsdWUpXG4gICAgICApO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGJpYmxpb2dyYXBoaWVzU2VhcmNoU291cmNlcygpIHtcbiAgICByZXR1cm4gdGhpcy5iaWJsaW9ncmFwaGllc1NlYXJjaFByb3BlcnR5IS5mdWxsS2V5LnNwbGl0KCcuJykubGVuZ3RoID4gMjtcbiAgfVxuXG4gIHB1YmxpYyBvbkJpYmxpb2dyYXBoaWVzU2VhcmNoQ2xvc2VkKHZhbHVlPzogUGFydGlhbDxTb3VyY2U+IHwgUGFydGlhbDxCaWJsaW9ncmFwaHk+KSB7XG4gICAgdGhpcy5iaWJsaW9ncmFwaGllc1NlYXJjaFByb3BlcnR5ID0gdmFsdWVcbiAgICAgID8gdmFsdWUudHlwZSA9PT0gU2NoZW1hVHlwZS5CaWJsaW9ncmFwaHlcbiAgICAgICAgPyB0aGlzLnVwZGF0ZUJpYmxpb2dyYXBoeSh2YWx1ZSlcbiAgICAgICAgOiB0aGlzLnVwZGF0ZVNvdXJjZSh2YWx1ZSBhcyBQYXJ0aWFsPFNvdXJjZT4pXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIEFjdG9yLkBpZFxuXG4gIHB1YmxpYyBhc3luYyBzZXRVc2VyQWN0b3JJZChwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkge1xuICAgIGNvbnN0IHsgYWN0b3JJZCwgbmFtZSB9ID0gYXdhaXQgdGhpcy51c2Vyc1NlcnZpY2UubG9nZ2VkSW5Vc2VyO1xuICAgIHJldHVybiB0aGlzLnJlcGxhY2VQcm9wZXJ0eURhdGEocHJvcGVydHksIHsgJ0BpZCc6IGFjdG9ySWQsICdAdHlwZSc6IE5vZGVUeXBlLkFjdG9yLCBuYW1lIH0sIGZhbHNlKTtcbiAgfVxuXG4gIC8vIEN5Y2xlLmN5Y2xlRHVyYXRpb25cblxuICBwdWJsaWMgY2FsY3VsYXRlQ3ljbGVEdXJhdGlvbkVuYWJsZWQocHJvcGVydHk6IElOb2RlUHJvcGVydHkpIHtcbiAgICByZXR1cm4gY2FsY3VsYXRlQ3ljbGVEdXJhdGlvbkVuYWJsZWQodGhpcy5wcm9wZXJ0aWVzLCBwcm9wZXJ0eSk7XG4gIH1cblxuICBwdWJsaWMgY2FsY3VsYXRlQ3ljbGVEdXJhdGlvbihwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkge1xuICAgIGNvbnN0IGR1cmF0aW9uID0gY2FsY3VsYXRlQ3ljbGVEdXJhdGlvbih0aGlzLnByb3BlcnRpZXMsIHByb3BlcnR5KTtcbiAgICByZXR1cm4gdGhpcy5wcm9wZXJ0eUNoYW5nZWQoZHVyYXRpb24sIHByb3BlcnR5KTtcbiAgfVxuXG4gIC8vIEN5Y2xlLnN0YXJ0RGF0ZVxuXG4gIHB1YmxpYyBjYWxjdWxhdGVDeWNsZVN0YXJ0RGF0ZUVuYWJsZWQocHJvcGVydHk6IElOb2RlUHJvcGVydHkpIHtcbiAgICByZXR1cm4gY2FsY3VsYXRlQ3ljbGVTdGFydERhdGVFbmFibGVkKHRoaXMucHJvcGVydGllcywgcHJvcGVydHkpO1xuICB9XG5cbiAgcHVibGljIGNhbGN1bGF0ZUN5Y2xlU3RhcnREYXRlKHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSB7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gY2FsY3VsYXRlQ3ljbGVTdGFydERhdGUodGhpcy5wcm9wZXJ0aWVzLCBwcm9wZXJ0eSk7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlDaGFuZ2VkKHN0YXJ0RGF0ZSwgcHJvcGVydHkpO1xuICB9XG5cbiAgLy8gVW5pdHMgY29udmVydGVyXG5cbiAgcHVibGljIHVuaXRDb252ZXJ0ZXJFbmFibGVkKHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSB7XG4gICAgcmV0dXJuIHRoaXMuZWRpdGFibGUgJiYgcHJvcGVydHkuZWRpdGFibGUgJiYgWyd2YWx1ZScsICdtaW4nLCAnbWF4JywgJ3NkJ10uaW5jbHVkZXMocHJvcGVydHkua2V5KTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuVW5pdENvbnZlcnRlcihwb3BvdmVyLCBwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkge1xuICAgIGNvbnN0IHZhbHVlID0gcHJvcGVydHkudmFsdWU7XG4gICAgY29uc3QgdGVybVByb3BlcnR5ID0gc2libGluZ1Byb3BlcnR5KHRoaXMucHJvcGVydGllcywgcHJvcGVydHksICd0ZXJtJyk7XG4gICAgY29uc3QgdGVybSA9IHNhZmVKU09OUGFyc2UodGVybVByb3BlcnR5Py52YWx1ZSk7XG4gICAgY29uc3QgdW5pdHMgPSB0ZXJtPy51bml0cztcbiAgICByZXR1cm4gcG9wb3Zlci5pc09wZW4oKSA/IHBvcG92ZXIuY2xvc2UoKSA6IHBvcG92ZXIub3Blbih7IHZhbHVlLCB0ZXJtLCB1bml0cyB9KTtcbiAgfVxuXG4gIC8vIFJlY29tbWVuZGF0aW9uc1xuXG4gIHB1YmxpYyBvblNlbGVjdFJlY29tbWVuZGF0aW9uKGFycmF5OiBJTm9kZVByb3BlcnR5LCBpZDogc3RyaW5nKSB7XG4gICAgY29uc3QgcHJvcCA9IHRoaXMuc2NoZW1hcyFbYXJyYXkuc2NoZW1hVHlwZV07XG4gICAgY29uc3QgdmFsdWUgPSBnZXQodGhpcy5ub2RlLCBhcnJheS5mdWxsS2V5KTtcblxuICAgIGNvbnN0IG5ld1Byb3BlcnR5ID0gdHlwZVRvTmV3UHJvcGVydHkoXG4gICAgICB0aGlzLnNjaGVtYXMhLFxuICAgICAgcHJvcCxcbiAgICAgIHByb3AsXG4gICAgICB2YWx1ZSxcbiAgICAgIGAke2FycmF5LmZ1bGxLZXl9WyR7YXJyYXkucHJvcGVydGllcy5sZW5ndGh9XWBcbiAgICApO1xuICAgIG5ld1Byb3BlcnR5LnZhbHVlLnRlcm0gPSB7IHR5cGU6IE5vZGVUeXBlLlRlcm0sICdAaWQnOiBpZCB9O1xuICAgIHZhbHVlW2FycmF5LnByb3BlcnRpZXMubGVuZ3RoXS50ZXJtID0geyB0eXBlOiBOb2RlVHlwZS5UZXJtLCAnQGlkJzogaWQgfTtcblxuICAgIC8vIGluc2VydCBUZXJtIHdpdGggQGlkXG4gICAgY29uc3QgdGVybUtleSA9IGAke25ld1Byb3BlcnR5LmZ1bGxLZXl9LnRlcm1gO1xuICAgIGNvbnN0IHRlcm1Qcm9wZXJ0eSA9XG4gICAgICBuZXdQcm9wZXJ0eS5wcm9wZXJ0aWVzLmZpbmQocCA9PiBwLmtleSA9PT0gJ3Rlcm0nKSB8fFxuICAgICAgdHlwZVRvTmV3UHJvcGVydHkodGhpcy5zY2hlbWFzISwgcHJvcC5wcm9wZXJ0aWVzLnRlcm0sIHByb3AsIG5ld1Byb3BlcnR5LnZhbHVlLCB0ZXJtS2V5KTtcbiAgICB0ZXJtUHJvcGVydHkudmFsdWUgPSB7IHR5cGU6IE5vZGVUeXBlLlRlcm0sICdAaWQnOiBpZCB9O1xuICAgIHRlcm1Qcm9wZXJ0eS5wcm9wZXJ0aWVzID0gcmVjdXJzaXZlUHJvcGVydGllcyhcbiAgICAgIHRoaXMuc2NoZW1hcyEsXG4gICAgICBbXSxcbiAgICAgIHRoaXMuc2NoZW1hcyFbdGhpcy5ub2RlIS50eXBlXSxcbiAgICAgIHRoaXMuZGVlcEVkaXRhYmxlLFxuICAgICAgdGVybUtleVxuICAgICkoeyB0eXBlOiBOb2RlVHlwZS5UZXJtLCAnQGlkJzogaWQgfSk7XG4gICAgaW5zZXJ0UHJvcGVydHkobmV3UHJvcGVydHkucHJvcGVydGllcywgdGVybUtleSwgdGVybVByb3BlcnR5KTtcblxuICAgIC8vIHRlcm0gY2Fubm90IGJlIGVkaXRlZCwgbmVlZCB0byByZW1vdmUgZmlyc3RcbiAgICB1cGRhdGVQcm9wZXJ0aWVzKHRlcm1Qcm9wZXJ0eSwgcCA9PiB7XG4gICAgICBwLmVkaXRhYmxlID0gZmFsc2U7XG4gICAgICByZXR1cm4gcDtcbiAgICB9KTtcbiAgICB0ZXJtUHJvcGVydHkuZWRpdGFibGUgPSBmYWxzZTtcblxuICAgIGFycmF5LnByb3BlcnRpZXMucHVzaChuZXdQcm9wZXJ0eSk7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlDaGFuZ2VkKHZhbHVlLCBhcnJheSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjYXJkXCI+XG4gIDxkaXYgY2xhc3M9XCJjYXJkLXRvZ2dsZSBwLTRcIiAoY2xpY2spPVwiaXNPcGVuID0gIWlzT3BlblwiIHBvaW50ZXI+XG4gICAgPGZhLWljb24gaWNvbj1cImFuZ2xlLWRvd25cIiBbY2xhc3MuaXMtaGlkZGVuXT1cIiFpc09wZW5cIj48L2ZhLWljb24+XG4gICAgPGZhLWljb24gaWNvbj1cImFuZ2xlLXJpZ2h0XCIgW2NsYXNzLmlzLWhpZGRlbl09XCJpc09wZW5cIj48L2ZhLWljb24+XG4gICAgPHNwYW5cbiAgICAgICpuZ0lmPVwibm9kZVByb3BlcnR5XCJcbiAgICAgIGNsYXNzPVwiaXMtcHgtMlwiXG4gICAgICBbY2xhc3MuaGFzLXRleHQtZGFuZ2VyXT1cIm5vZGVQcm9wZXJ0eS5oYXNFcnJvclwiXG4gICAgICBbY2xhc3MuaGFzLXRleHQtd2FybmluZ109XCJub2RlUHJvcGVydHkuaGFzV2FybmluZ1wiPlxuICAgICAgPGhlLW5vZGUtaWNvbiBbdHlwZV09XCJub2RlUHJvcGVydHkuc2NoZW1hVHlwZVwiPjwvaGUtbm9kZS1pY29uPlxuICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVkaXRhYmxlICYmIGlzT3BlbiAmJiBub2RlUHJvcGVydHlcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2hvd05ld1Byb3BlcnR5OyBjb250ZXh0OiB7ICRpbXBsaWNpdDogbm9kZVByb3BlcnR5IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPGRpdiBjbGFzcz1cImNhcmQtY29udGVudFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc09wZW5cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwYi0zIG1iLTJcIiAqbmdJZj1cImVycm9yc0VkaXRhYmxlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJub2RlRXJyb3JGb3JtOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogbm9kZVByb3BlcnR5IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwicHktNCBwbC00XCIgKm5nSWY9XCJub2RlUHJvcGVydHk/LmVycm9yXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcm9wZXJ0eUVycm9yOyBjb250ZXh0OiB7IHByb3BlcnR5OiBub2RlUHJvcGVydHksIGVkaXQ6IHRydWUgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1ucyBpcy1tdWx0aWxpbmVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHByb3BlcnR5IG9mIHByb3BlcnRpZXM7IHRyYWNrQnk6IHRyYWNrQnlQcm9wZXJ0eVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2hvd1Byb3BlcnR5OyBjb250ZXh0OiB7ICRpbXBsaWNpdDogcHJvcGVydHkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNPcGVuXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJvcGVydHlNYXA7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBub2RlUHJvcGVydHkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cblxuPGhlLW1hcHMtZHJhd2luZy1jb25maXJtXG4gICpuZ0lmPVwiISFtYXBEcmF3aW5nUHJvcGVydHlcIlxuICBbdmFsdWVdPVwibWFwRHJhd2luZ1Byb3BlcnR5LnZhbHVlXCJcbiAgW21vZGVzXT1cIm1hcERyYXdpbmdNb2RlcyhtYXBEcmF3aW5nUHJvcGVydHkpXCJcbiAgKGNsb3NlZCk9XCJvbk1hcERyYXdpbmdDbG9zZWQoJGV2ZW50KVwiPjwvaGUtbWFwcy1kcmF3aW5nLWNvbmZpcm0+XG5cbjxoZS1iaWJsaW9ncmFwaGllcy1zZWFyY2gtY29uZmlybVxuICAqbmdJZj1cIiEhYmlibGlvZ3JhcGhpZXNTZWFyY2hQcm9wZXJ0eVwiXG4gIFtzZWFyY2hdPVwiYmlibGlvZ3JhcGhpZXNTZWFyY2hQcm9wZXJ0eS52YWx1ZVwiXG4gIFtzZWFyY2hCeV09XCJiaWJsaW9ncmFwaGllc1NlYXJjaEtleShiaWJsaW9ncmFwaGllc1NlYXJjaFByb3BlcnR5KVwiXG4gIFtzZWFyY2hTb3VyY2VzXT1cImJpYmxpb2dyYXBoaWVzU2VhcmNoU291cmNlc1wiXG4gIChjbG9zZWQpPVwib25CaWJsaW9ncmFwaGllc1NlYXJjaENsb3NlZCgkZXZlbnQpXCI+PC9oZS1iaWJsaW9ncmFwaGllcy1zZWFyY2gtY29uZmlybT5cblxuPG5nLXRlbXBsYXRlICNsYWJlbERlc2NyaXB0aW9uIGxldC1wcm9wZXJ0eT5cbiAgPHNwYW4gY2xhc3M9XCJwcm9wZXJ0eS1rZXlcIiBbbmdiVG9vbHRpcF09XCJwcm9wZXJ0eS5rZXlcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPlxuICAgIDxzcGFuIGNsYXNzPVwiaXMtaW5saW5lLWJsb2NrIGlzLWFsaWduLW1pZGRsZSBpcy1ub3dyYXAgaGFzLXRleHQtZWxsaXBzaXNcIj57eyBwcm9wZXJ0eS5rZXkgfX08L3NwYW4+XG4gICAgPGhlLXNjaGVtYS1pbmZvXG4gICAgICBjbGFzcz1cImlzLWlubGluZS1ibG9jayBpcy1wbC0xIGlzLWFsaWduLW1pZGRsZVwiXG4gICAgICAqbmdJZj1cInByb3BlcnR5LnNjaGVtYT8uZGVzY3JpcHRpb25cIlxuICAgICAgdHJpZ2dlcnM9XCJjbGlja1wiXG4gICAgICBbY29udGVudF09XCJwcm9wZXJ0eS5zY2hlbWEuZGVzY3JpcHRpb25cIj48L2hlLXNjaGVtYS1pbmZvPlxuICA8L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2xhYmVsRGVmYXVsdCBsZXQtcHJvcGVydHk+XG4gIDxzcGFuPnt7IHByb3BlcnR5LmtleSB9fTwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc2hvd1Byb3BlcnR5IGxldC1wcm9wZXJ0eT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihpc09wZW4gfHwgcHJvcGVydHkuY2xvc2VkVmlzaWJsZSkgJiYgIXByb3BlcnR5LmlzSGlkZGVuXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjb2x1bW4gaXMtNlwiXG4gICAgICBbaWRdPVwicHJvcGVydHkuZnVsbEtleSArICdfJyArIHByb3BlcnR5LmlkXCJcbiAgICAgIFtjbGFzcy5pcy0xMl09XCJwcm9wZXJ0eS5wcm9wZXJ0aWVzLmxlbmd0aCB8fCAhcHJvcGVydHkua2V5XCJcbiAgICAgIFtuZ1N3aXRjaF09XCIhIXByb3BlcnR5LnByb3BlcnRpZXMubGVuZ3RoXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1ucyBpcy1tdWx0aWxpbmUgaXMtdmFyaWFibGUgaXMtMVwiICpuZ1N3aXRjaENhc2U9XCJmYWxzZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpiaW5kT25jZT1cInByb3BlcnR5XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbiBpcy0zIHB5LTFcIiAqbmdJZj1cInByb3BlcnR5LmtleVwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibGFiZWwgaGFzLXRleHQtcmlnaHQtdGFibGV0IGhhcy10ZXh0LWVsbGlwc2lzXCIgW2Zvcl09XCJwcm9wZXJ0eS5pZFwiIFt0aXRsZV09XCJwcm9wZXJ0eS5rZXlcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICBwcm9wZXJ0eS5zY2hlbWE/LmRlc2NyaXB0aW9uICYmIGVkaXRhYmxlICYmIHByb3BlcnR5LmVkaXRhYmxlID8gbGFiZWxEZXNjcmlwdGlvbiA6IGxhYmVsRGVmYXVsdDtcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBwcm9wZXJ0eSB9XG4gICAgICAgICAgICAgICAgXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGlzLTkgcHktMVwiIFtjbGFzcy5pcy0xMl09XCIhcHJvcGVydHkua2V5XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXRGb3JtOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogcHJvcGVydHkgfVwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicHJvcGVydHkuaGFzRXJyb3IgfHwgcHJvcGVydHkuaGFzV2FybmluZ1wiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcm9wZXJ0eUVycm9yOyBjb250ZXh0OiB7IHByb3BlcnR5OiBwcm9wZXJ0eSwgZWRpdDogZmFsc2UgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJwYW5lbFwiXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCJ0cnVlXCJcbiAgICAgICAgW2NsYXNzLmlzLXNlY29uZGFyeV09XCJlcnJvck1vZGUgJiYgcHJvcGVydHkuY2hhbmdlZFwiXG4gICAgICAgIFtjbGFzcy5pcy1kYW5nZXJdPVwiIXByb3BlcnR5LmNoYW5nZWQgJiYgcHJvcGVydHkuaGFzRXJyb3JcIlxuICAgICAgICBbY2xhc3MuaXMtd2FybmluZ109XCIhcHJvcGVydHkuY2hhbmdlZCAmJiBwcm9wZXJ0eS5oYXNXYXJuaW5nXCJcbiAgICAgICAgW2NsYXNzLmlzLWRlZmF1bHRdPVwiIXByb3BlcnR5LmNoYW5nZWQgJiYgIXByb3BlcnR5Lmhhc0Vycm9yICYmICFwcm9wZXJ0eS5oYXNXYXJuaW5nXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cIm9wZW4tZ3JvdXAgcGFuZWwtaGVhZGluZyBweS0wXCJcbiAgICAgICAgICAoY2xpY2spPVwicHJvcGVydHkuaXNPcGVuID0gIXByb3BlcnR5LmlzT3BlblwiXG4gICAgICAgICAgcG9pbnRlclxuICAgICAgICAgIFtjbGFzcy5pcy1vcGVuXT1cInByb3BlcnR5LmlzT3BlblwiXG4gICAgICAgICAgW2NsYXNzLmhhcy10ZXh0LXdoaXRlXT1cIihlcnJvck1vZGUgJiYgcHJvcGVydHkuY2hhbmdlZCkgfHwgcHJvcGVydHkuaGFzRXJyb3IgfHwgcHJvcGVydHkuaGFzV2FybmluZ1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5zIGlzLW1vYmlsZSBpcy12Y2VudGVyZWQgaXMtbXVsdGlsaW5lXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbHVtbiBpcy1uYXJyb3cgcHktMSBteS0wXCI+XG4gICAgICAgICAgICAgIDxmYS1pY29uIGljb249XCJhbmdsZS1kb3duXCIgW2NsYXNzLmlzLWhpZGRlbl09XCIhcHJvcGVydHkuaXNPcGVuXCI+PC9mYS1pY29uPlxuICAgICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwiYW5nbGUtcmlnaHRcIiBbY2xhc3MuaXMtaGlkZGVuXT1cInByb3BlcnR5LmlzT3BlblwiPjwvZmEtaWNvbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29sdW1uIHB5LTEgbXktMFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImlzLXNpemUtNlwiPnt7IHByb3BlcnR5LmtleSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicHJvcGVydHkuc2NoZW1hVHlwZVwiIGNsYXNzPVwiY29sdW1uIGlzLW5hcnJvdyBweS0xIG15LTBcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0YWdzIG1iLTAgaGFzLWFkZG9uc1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFnIG1iLTAgaXMtbGlnaHRcIj5UeXBlPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFnIG1iLTAgaXMtd2hpdGVcIj5cbiAgICAgICAgICAgICAgICAgIDxoZS1zY2hlbWEtdmVyc2lvbi1saW5rIGxpbmtDbGFzcz1cImlzLXNtYWxsXCIgW25vZGVdPVwieyAnQHR5cGUnOiBwcm9wZXJ0eS5zY2hlbWFUeXBlIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgcHJvcGVydHkuc2NoZW1hVHlwZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvaGUtc2NoZW1hLXZlcnNpb24tbGluaz5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxoZS1wb3BvdmVyLWNvbmZpcm1cbiAgICAgICAgICAgICAgY2xhc3M9XCJjb2x1bW4gaXMtbmFycm93IHB5LTEgbXktMCBweC0wXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJlZGl0YWJsZSAmJiAhZXJyb3JzRWRpdGFibGVcIlxuICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiUmVtb3ZlIGdyb3VwXCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwidG9wXCJcbiAgICAgICAgICAgICAgW21lc3NhZ2VdPVwiXG4gICAgICAgICAgICAgICAgJzxwPlRoaXMgd2lsbCByZW1vdmUgdGhlIGdyb3VwIGNvbXBsZXRlbHkuPC9wPicgK1xuICAgICAgICAgICAgICAgIChwcm9wZXJ0eS5pc1JlcXVpcmVkID8gJzxwPjx1Pldhcm5pbmc6IHRoaXMgZmllbGQgaXMgcmVxdWlyZWQuPC91PjwvcD4nIDogJycpICtcbiAgICAgICAgICAgICAgICAnPHA+RG8geW91IGNvbmZpcm0/PC9wPidcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgcG9wb3ZlckNsYXNzPVwicHgtM1wiXG4gICAgICAgICAgICAgIChjb25maXJtZWQpPVwicHJvcGVydHlDaGFuZ2VkKG51bGwsIHByb3BlcnR5KVwiPlxuICAgICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwidGltZXNcIiBzaXplPVwic21cIj48L2ZhLWljb24+XG4gICAgICAgICAgICA8L2hlLXBvcG92ZXItY29uZmlybT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1ibG9jayBpcy1ibG9jayBwLTBcIiAqbmdJZj1cInByb3BlcnR5LmlzT3BlblwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInByb3BlcnR5LmlzQXJyYXlcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0zIHB0LTRcIiAqbmdJZj1cInByb3BlcnR5LmVycm9yXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInByb3BlcnR5RXJyb3I7IGNvbnRleHQ6IHsgcHJvcGVydHk6IHByb3BlcnR5LCBlZGl0OiB0cnVlIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiICpuZ1N3aXRjaENhc2U9XCJmYWxzZVwiPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImhlbHAgcHktMSBweC0yXCIgKm5nSWY9XCJlZGl0YWJsZSAmJiAhcHJvcGVydHkuZWRpdGFibGVcIj5cbiAgICAgICAgICAgICAgICBUbyBjaGFuZ2UgdGhlIHt7IHByb3BlcnR5LmtleSB9fSwgcGxlYXNlIGRlbGV0ZSBpdCBmaXJzdCwgdGhlbiBhZGQgdGhlIGZpZWxkIGFnYWluXG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVkaXRhYmxlICYmIHByb3BlcnR5LmVkaXRhYmxlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwicHJvcGVydHkuc2NoZW1hPy50aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJoZWxwIHB5LTEgcHgtMlwiICpuZ1N3aXRjaENhc2U9XCInQmlibGlvZ3JhcGh5J1wiPlxuICAgICAgICAgICAgICAgICAgICBTZWFyY2ggYnkgVGl0bGUgb3IgRG9jdW1lbnQgRE9JIHRvIGF1dG8tcG9wdWxhdGUgdGhlIGZpZWxkcyB1c2luZyB0aGUgTWVuZGVsZXkgY2F0YWxvZ3VlXG4gICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaG93TmV3UHJvcGVydHk7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBwcm9wZXJ0eSB9XCI+PC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTMgbXQtMVwiICpuZ0lmPVwiZXJyb3JzRWRpdGFibGVcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibm9kZUVycm9yRm9ybTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHByb3BlcnR5IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb3BlcnR5LWdyb3VwIHB5LTIgcHgtMyBtdC0yXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbnMgaXMtbXVsdGlsaW5lIG1iLTBcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHByb3AyIG9mIHByb3BlcnR5LnByb3BlcnRpZXM7IHRyYWNrQnk6IHRyYWNrQnlQcm9wZXJ0eVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2hvd1Byb3BlcnR5OyBjb250ZXh0OiB7ICRpbXBsaWNpdDogcHJvcDIgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweS0yIHB4LTMgbXQtMlwiICpuZ1N3aXRjaENhc2U9XCJ0cnVlXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0xXCIgKm5nSWY9XCJlcnJvcnNFZGl0YWJsZVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJub2RlRXJyb3JGb3JtOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogcHJvcGVydHkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwcm9wMiBvZiBwcm9wZXJ0eS5wcm9wZXJ0aWVzOyB0cmFja0J5OiB0cmFja0J5UHJvcGVydHlcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBwLTAgbXktNFwiICpuZ0lmPVwicHJvcDIua2V5XCIgW2lkXT1cInByb3AyLmZ1bGxLZXkgKyAnXycgKyBwcm9wMi5pZFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb3BlcnR5LWFycmF5LW51bWJlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFncyBoYXMtYWRkb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0YWcgaXMtZGFya1wiPnt7IHByb3AyLmtleSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWRpdGFibGUgJiYgIWVycm9yc0VkaXRhYmxlICYmIHByb3BlcnR5LmVkaXRhYmxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRhZyBpcy1pbmZvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZHVwbGljYXRlQXJyYXlHcm91cChwcm9wZXJ0eSwgcHJvcDIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwiJ0R1cGxpY2F0ZSAnICsgcHJvcGVydHkua2V5IHwgcGx1cmFsaXplOiAxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwidG9wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxmYS1pY29uIGljb249XCJjbG9uZVwiIHNpemU9XCJzbVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGFnIGlzLWxpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInByb3AyLmtleSAhPT0gJzAnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVBcnJheUdyb3VwVXAocHJvcGVydHksIHByb3AyKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJNb3ZlIFVwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwidG9wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxmYS1pY29uIGljb249XCJsb25nLWFycm93LWFsdC11cFwiIHNpemU9XCJzbVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGFnIGlzLWxpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInByb3AyLmtleSAhPT0gcHJvcGVydHkucHJvcGVydGllcy5sZW5ndGggLSAxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVBcnJheUdyb3VwRG93bihwcm9wZXJ0eSwgcHJvcDIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cIk1vdmUgRG93blwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInRvcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwibG9uZy1hcnJvdy1hbHQtZG93blwiIHNpemU9XCJzbVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoZS1wb3BvdmVyLWNvbmZpcm1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWcgaXMtZGVsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwiJ1JlbW92ZSAnICsgcHJvcGVydHkua2V5IHwgcGx1cmFsaXplOiAxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwidG9wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT1cIlRoaXMgd2lsbCByZW1vdmUgdGhlIGdyb3VwIGNvbXBsZXRlbHkuIERvIHlvdSBjb25maXJtP1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uZmlybWVkKT1cInJlbW92ZUFycmF5R3JvdXAocHJvcGVydHksIHByb3AyKVwiPjwvaGUtcG9wb3Zlci1jb25maXJtPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2hvd05ld1Byb3BlcnR5OyBjb250ZXh0OiB7ICRpbXBsaWNpdDogcHJvcDIgfVwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtNCBtdC0yXCIgKm5nSWY9XCJlcnJvcnNFZGl0YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibm9kZUVycm9yRm9ybTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHByb3AyIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtNCBtdC0yXCIgKm5nSWY9XCJwcm9wMi5lcnJvclwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcm9wZXJ0eUVycm9yOyBjb250ZXh0OiB7IHByb3BlcnR5OiBwcm9wMiwgZWRpdDogdHJ1ZSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb3BlcnR5LWdyb3VwIGNhcmQtY29udGVudCBwLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbnMgaXMtbXVsdGlsaW5lIG15LTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwcm9wMyBvZiBwcm9wMi5wcm9wZXJ0aWVzOyB0cmFja0J5OiB0cmFja0J5UHJvcGVydHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaG93UHJvcGVydHk7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBwcm9wMyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlZGl0YWJsZSAmJiAhZXJyb3JzRWRpdGFibGUgJiYgcHJvcGVydHkuZWRpdGFibGVcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLWluZm8gaXMtc21hbGxcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFkZEFycmF5R3JvdXAocHJvcGVydHkpXCI+XG4gICAgICAgICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwicGx1cy1jaXJjbGVcIj48L2ZhLWljb24+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBsLTJcIj5BZGQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBsLTFcIj57eyBwcm9wZXJ0eS5rZXkgfCBwbHVyYWxpemU6IDEgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICA8aGUtbm9kZS1yZWNvbW1lbmRhdGlvbnNcbiAgICAgICAgICAgICAgICAgIGJ1dHRvbkNsYXNzPVwiaXMtc21hbGxcIlxuICAgICAgICAgICAgICAgICAgW25vZGVdPVwibm9kZVwiXG4gICAgICAgICAgICAgICAgICBbbm9kZUZpZWxkXT1cInByb3BlcnR5LmtleVwiXG4gICAgICAgICAgICAgICAgICAoc2VsZWN0UmVjb21tZW5kYXRpb24pPVwib25TZWxlY3RSZWNvbW1lbmRhdGlvbihwcm9wZXJ0eSwgJGV2ZW50KVwiPjwvaGUtbm9kZS1yZWNvbW1lbmRhdGlvbnM+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpbnB1dEZvcm0gbGV0LXByb3BlcnR5PlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwicHJvcGVydHkua2V5XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVkaXRhYmxlXCI+XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJwcm9wZXJ0eS5zdWdnZXN0aW9ucz8udHlwZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInc2VsZWN0J1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnB1dFNlbGVjdDsgY29udGV4dDogeyAkaW1wbGljaXQ6IHByb3BlcnR5IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXRJbnB1dDsgY29udGV4dDogeyAkaW1wbGljaXQ6IHByb3BlcnR5IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWVkaXRhYmxlXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXRJbnB1dDsgY29udGV4dDogeyAkaW1wbGljaXQ6IHByb3BlcnR5IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2lucHV0SW5wdXQgbGV0LXByb3BlcnR5PlxuICA8ZGl2IGNsYXNzPVwiZmllbGQgbWItMFwiIFtjbGFzcy5oYXMtYWRkb25zXT1cImhhc0FkZG9ucyhwcm9wZXJ0eSlcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udHJvbCBpcy1leHBhbmRlZFwiIFtjbGFzcy5oYXMtaWNvbnMtcmlnaHRdPVwicHJvcGVydHkubG9hZGluZ1wiPlxuICAgICAgPGlucHV0XG4gICAgICAgIGNsYXNzPVwiaW5wdXQgaXMtc21hbGwgc2VhcmNoLWlucHV0XCJcbiAgICAgICAgW2NsYXNzLmlzLWRhcmtdPVwicHJvcGVydHkua2V5ID09PSAndHlwZSdcIlxuICAgICAgICBbY2xhc3MuaXMtc2Vjb25kYXJ5XT1cImVycm9yTW9kZSAmJiBwcm9wZXJ0eS5jaGFuZ2VkXCJcbiAgICAgICAgW2NsYXNzLmlzLWRhbmdlcl09XCIoIXByb3BlcnR5LmNoYW5nZWQgJiYgcHJvcGVydHkuaGFzRXJyb3IpIHx8IGlzUmVxdWlyZWQocHJvcGVydHkpXCJcbiAgICAgICAgW2NsYXNzLmlzLXdhcm5pbmddPVwiIXByb3BlcnR5LmNoYW5nZWQgJiYgcHJvcGVydHkuaGFzV2FybmluZ1wiXG4gICAgICAgIFsobmdNb2RlbCldPVwicHJvcGVydHkudmFsdWVcIlxuICAgICAgICAjcHJvcGVydHlNb2RlbD1cIm5nTW9kZWxcIlxuICAgICAgICBbdHlwZV09XCJwcm9wZXJ0eS5zY2hlbWE/LnR5cGUgPT09ICdudW1iZXInID8gJ251bWJlcicgOiAnc3RyaW5nJ1wiXG4gICAgICAgIFtpZF09XCJwcm9wZXJ0eS5pZFwiXG4gICAgICAgIG5hbWU9XCJyYW5kb21uYW1lXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cIiFlZGl0YWJsZSB8fCAhcHJvcGVydHkuZWRpdGFibGUgfHwgcHJvcGVydHkuc2NoZW1hPy5pbnRlcm5hbFwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJwcm9wZXJ0eS5wbGFjZWhvbGRlclwiXG4gICAgICAgIFthcHBUYWdzSW5wdXRdPVwie1xuICAgICAgICAgIGVuYWJsZWQ6IGVkaXRhYmxlICYmIHByb3BlcnR5LmVkaXRhYmxlICYmIHByb3BlcnR5LnNjaGVtYT8udHlwZSA9PT0gJ2FycmF5JyxcbiAgICAgICAgICBpdGVtczogcHJvcGVydHkuc2NoZW1hPy5pdGVtcyxcbiAgICAgICAgICBkZWxpbWl0ZXI6ICc7JyxcbiAgICAgICAgICBhbGxvd0R1cGxpY2F0ZXM6IHRydWUsXG4gICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BlcnR5LnBsYWNlaG9sZGVyXG4gICAgICAgIH1cIlxuICAgICAgICAoY2hhbmdlKT1cInByb3BlcnR5Q2hhbmdlZCgkZXZlbnQudGFyZ2V0LnZhbHVlLCBwcm9wZXJ0eSlcIlxuICAgICAgICBbcGF0dGVybl09XCJwcm9wZXJ0eS5zY2hlbWE/LnBhdHRlcm5cIlxuICAgICAgICBbcmVxdWlyZWRdPVwicHJvcGVydHkuZnVsbEtleS5lbmRzV2l0aCgnaWQnKSAmJiBwcm9wZXJ0eS5mdWxsS2V5ICE9PSAnaWQnXCJcbiAgICAgICAgW21pbl09XCJwcm9wZXJ0eS5zY2hlbWE/Lm1pbmltdW1cIlxuICAgICAgICBbbWF4XT1cInByb3BlcnR5LnNjaGVtYT8ubWF4aW11bVwiXG4gICAgICAgIFtuZ2JUeXBlYWhlYWRdPVwicHJvcGVydHkgfCBhcHBseVB1cmU6IHByb3BlcnR5U3VnZ2VzdFwiXG4gICAgICAgIFtyZXN1bHRUZW1wbGF0ZV09XCJzdWdnZXN0aW9uXCJcbiAgICAgICAgW2lucHV0Rm9ybWF0dGVyXT1cInByb3BlcnR5LmZvcm1hdHRlclwiXG4gICAgICAgIFtmb2N1c0ZpcnN0XT1cInRydWVcIlxuICAgICAgICAoZm9jdXMpPVwiZWRpdGFibGUgJiYgcHJvcGVydHkuZWRpdGFibGUgJiYgdHlwZWFoZWFkRm9jdXMoJGV2ZW50KVwiXG4gICAgICAgIChzZWxlY3RJdGVtKT1cInN1Z2dlc3Rpb25TZWxlY3RlZCgkZXZlbnQuaXRlbSwgcHJvcGVydHkpXCIgLz5cblxuICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIGlzLXNtYWxsIGlzLXJpZ2h0IGhhcy10ZXh0LWdyZXktZGFya1wiIFtjbGFzcy5pcy1oaWRkZW5dPVwiIXByb3BlcnR5LmxvYWRpbmdcIj5cbiAgICAgICAgPGZhLWljb24gaWNvbj1cInNwaW5uZXJcIiBbcHVsc2VdPVwidHJ1ZVwiIHNpemU9XCJzbVwiPjwvZmEtaWNvbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXRBZGRvbnM7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBwcm9wZXJ0eSB9XCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8cCBjbGFzcz1cImhlbHAgaXMtZGFuZ2VyLWxpZ2h0XCIgKm5nSWY9XCIhcHJvcGVydHkuaGFzRXJyb3IgJiYgcHJvcGVydHlNb2RlbC5pbnZhbGlkXCI+XG4gICAgPHNwYW4gKmJpbmRPbmNlPVwicHJvcGVydHlNb2RlbC5lcnJvcnNcIiBbaW5uZXJIVE1MXT1cImZvcm1hdFByb3BlcnR5RXJyb3IocHJvcGVydHlNb2RlbC5lcnJvcnMsIHByb3BlcnR5KVwiPjwvc3Bhbj5cbiAgPC9wPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpbnB1dFNlbGVjdCBsZXQtcHJvcGVydHk+XG4gIDxkaXYgY2xhc3M9XCJmaWVsZCBtYi0wXCIgW2NsYXNzLmhhcy1hZGRvbnNdPVwiaGFzQWRkb25zKHByb3BlcnR5KVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb250cm9sIGlzLWV4cGFuZGVkXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwic2VsZWN0IGlzLXNtYWxsIGlzLWZ1bGx3aWR0aFwiXG4gICAgICAgIFtjbGFzcy5pcy1zZWNvbmRhcnldPVwiZXJyb3JNb2RlICYmIHByb3BlcnR5LmNoYW5nZWRcIlxuICAgICAgICBbY2xhc3MuaXMtZGFuZ2VyXT1cIighcHJvcGVydHkuY2hhbmdlZCAmJiBwcm9wZXJ0eS5oYXNFcnJvcikgfHwgaXNSZXF1aXJlZChwcm9wZXJ0eSlcIlxuICAgICAgICBbY2xhc3MuaXMtd2FybmluZ109XCIhcHJvcGVydHkuY2hhbmdlZCAmJiBwcm9wZXJ0eS5oYXNXYXJuaW5nXCI+XG4gICAgICAgIDxzZWxlY3RcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInByb3BlcnR5LnZhbHVlXCJcbiAgICAgICAgICAjcHJvcGVydHlNb2RlbD1cIm5nTW9kZWxcIlxuICAgICAgICAgIFtpZF09XCJwcm9wZXJ0eS5pZFwiXG4gICAgICAgICAgbmFtZT1cInJhbmRvbW5hbWVcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhZWRpdGFibGUgfHwgIXByb3BlcnR5LmVkaXRhYmxlIHx8IHByb3BlcnR5LnNjaGVtYT8uaW50ZXJuYWxcIlxuICAgICAgICAgIChjaGFuZ2UpPVwicHJvcGVydHlDaGFuZ2VkKCRldmVudC50YXJnZXQudmFsdWUsIHByb3BlcnR5KVwiPlxuICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj5TZWxlY3Q8L29wdGlvbj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpiaW5kT25jZT1cInByb3BlcnR5LnN1Z2dlc3Rpb25zXCI+XG4gICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCB2YWx1ZSBvZiBwcm9wZXJ0eS5zdWdnZXN0aW9ucy52YWx1ZXM7IHRyYWNrQnk6IHRyYWNrQnlJbmRleFwiIFt2YWx1ZV09XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICB7eyB2YWx1ZSB9fVxuICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0QWRkb25zOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogcHJvcGVydHkgfVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgPHAgY2xhc3M9XCJoZWxwIGlzLWRhbmdlci1saWdodFwiICpuZ0lmPVwiIXByb3BlcnR5Lmhhc0Vycm9yICYmIHByb3BlcnR5TW9kZWwuaW52YWxpZFwiPlxuICAgIDxzcGFuICpiaW5kT25jZT1cInByb3BlcnR5TW9kZWwuZXJyb3JzXCIgW2lubmVySFRNTF09XCJmb3JtYXRQcm9wZXJ0eUVycm9yKHByb3BlcnR5TW9kZWwuZXJyb3JzLCBwcm9wZXJ0eSlcIj48L3NwYW4+XG4gIDwvcD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcmVtb3ZlRmllbGRBZGRvbiBsZXQtcHJvcGVydHk+XG4gIDxkaXYgY2xhc3M9XCJjb250cm9sXCIgKm5nSWY9XCIhZXJyb3JzRWRpdGFibGUgJiYgIXByb3BlcnR5LmlzUmVxdWlyZWRcIj5cbiAgICA8YVxuICAgICAgY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIlxuICAgICAgdGl0bGU9XCJSZW1vdmUgZmllbGRcIlxuICAgICAgW2NsYXNzLmlzLW91dGxpbmVkXT1cIiFwcm9wZXJ0eS5jaGFuZ2VkICYmIChwcm9wZXJ0eS5oYXNFcnJvciB8fCBwcm9wZXJ0eS5oYXNXYXJuaW5nKVwiXG4gICAgICBbY2xhc3MuaXMtZGFuZ2VyXT1cIiFwcm9wZXJ0eS5jaGFuZ2VkICYmIHByb3BlcnR5Lmhhc0Vycm9yXCJcbiAgICAgIFtjbGFzcy5pcy13YXJuaW5nXT1cIiFwcm9wZXJ0eS5jaGFuZ2VkICYmIHByb3BlcnR5Lmhhc1dhcm5pbmdcIlxuICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgcHJvcGVydHlDaGFuZ2VkKG51bGwsIHByb3BlcnR5KVwiPlxuICAgICAgPGZhLWljb24gaWNvbj1cInRpbWVzXCI+PC9mYS1pY29uPlxuICAgIDwvYT5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2lucHV0QWRkb25zIGxldC1wcm9wZXJ0eT5cbiAgPG5nLWNvbnRhaW5lciAqYmluZE9uY2U9XCJwcm9wZXJ0eVwiPlxuICAgIDxoZS1wb3BvdmVyLWNvbmZpcm1cbiAgICAgIGNsYXNzPVwiY29udHJvbFwiXG4gICAgICAqbmdJZj1cImVuYWJsZUFkZEVycm9yKHByb3BlcnR5KVwiXG4gICAgICBwb3NpdGlvbj1cImxlZnRcIlxuICAgICAgW2NvbnRlbnRdPVwicG9wdXBFcnJvckZvcm1cIlxuICAgICAgKGNvbmZpcm1lZCk9XCJhZGRFcnJvcihwcm9wZXJ0eSwgJGV2ZW50KVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIj5cbiAgICAgICAgPGZhLWljb24gaWNvbj1cImNvbW1lbnRzXCI+PC9mYS1pY29uPlxuICAgICAgPC9zcGFuPlxuICAgIDwvaGUtcG9wb3Zlci1jb25maXJtPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVkaXRhYmxlICYmIHByb3BlcnR5LmVkaXRhYmxlXCI+XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJwcm9wZXJ0eS5zY2hlbWFUeXBlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIlNjaGVtYVR5cGUuQWN0b3JcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYWN0b3JBZGRvbnM7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBwcm9wZXJ0eSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJTY2hlbWFUeXBlLkN5Y2xlXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImN5Y2xlQWRkb25zOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogcHJvcGVydHkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiICpuZ0lmPVwibWFwRHJhd2luZ01vZGVzKHByb3BlcnR5KS5sZW5ndGhcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbFwiIHRpdGxlPVwiUGljayBvbiBNYXBcIiAoY2xpY2spPVwibWFwRHJhd2luZ1Byb3BlcnR5ID0gcHJvcGVydHlcIj5cbiAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwibWFwLW1hcmtlZC1hbHRcIj48L2ZhLWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiICpuZ0lmPVwiYmlibGlvZ3JhcGhpZXNTZWFyY2hLZXkocHJvcGVydHkpXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIiB0aXRsZT1cIkFkdmFuY2VkIFNlYXJjaFwiIChjbGljayk9XCJiaWJsaW9ncmFwaGllc1NlYXJjaFByb3BlcnR5ID0gcHJvcGVydHlcIj5cbiAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwic2VhcmNoXCI+PC9mYS1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmVtb3ZlRmllbGRBZGRvbjsgY29udGV4dDogeyAkaW1wbGljaXQ6IHByb3BlcnR5IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCIgKm5nSWY9XCJhZGRQcm9wZXJ0eUVuYWJsZWQocHJvcGVydHkpXCI+XG4gICAgICA8YVxuICAgICAgICBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbCBpcy1kYW5nZXJcIlxuICAgICAgICB0aXRsZT1cIkFkZCBmaWVsZFwiXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IGFkZE1pc3NpbmdQcm9wZXJ0eShwcm9wZXJ0eSlcIj5cbiAgICAgICAgPGZhLWljb24gaWNvbj1cInBsdXMtY2lyY2xlXCI+PC9mYS1pY29uPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInBsLTJcIj5BZGQ8L3NwYW4+XG4gICAgICA8L2E+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIiAqbmdJZj1cImlzUmVxdWlyZWQocHJvcGVydHkpXCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJidXR0b24gaXMtc21hbGwgaXMtZGFuZ2VyXCIgW2Zvcl09XCJwcm9wZXJ0eS5pZFwiIG5nYlRvb2x0aXA9XCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkXCIgcGxhY2VtZW50PVwidG9wXCI+XG4gICAgICAgIDxmYS1pY29uIGljb249XCJleGNsYW1hdGlvbi10cmlhbmdsZVwiPjwvZmEtaWNvbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByb3BlcnR5LmV4dGVybmFsVXJsPy51cmxcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCI+XG4gICAgICAgIDxhXG4gICAgICAgICAgY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIlxuICAgICAgICAgIFtocmVmXT1cInByb3BlcnR5LmV4dGVybmFsVXJsLnVybCArIChwcm9wZXJ0eS5leHRlcm5hbFVybC51cmxQYXJhbVZhbHVlID8gcHJvcGVydHkudmFsdWUgOiAnJylcIlxuICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgW3RpdGxlXT1cInByb3BlcnR5LmV4dGVybmFsVXJsLnRpdGxlXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbmZvJzogcHJvcGVydHkua2V5ID09PSAndHlwZScgfVwiXG4gICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwicHJvcGVydHkuZXh0ZXJuYWxVcmwudXJsUGFyYW1WYWx1ZSAmJiAhcHJvcGVydHkudmFsdWUgPyB0cnVlIDogbnVsbFwiPlxuICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cInByb3BlcnR5LmV4dGVybmFsVXJsLmljb24gfHwgJ2V4dGVybmFsLWxpbmstYWx0J1wiPjwvZmEtaWNvbj5cbiAgICAgICAgPC9hPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInVuaXRDb252ZXJ0ZXJFbmFibGVkKHByb3BlcnR5KVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCJcbiAgICAgICAgICB0aXRsZT1cIk9wZW4gY2FsY3VsYXRvclwiXG4gICAgICAgICAgW25nYlBvcG92ZXJdPVwiY29udmVydFVuaXRzXCJcbiAgICAgICAgICBhdXRvQ2xvc2U9XCJvdXRzaWRlXCJcbiAgICAgICAgICB0cmlnZ2Vycz1cIm1hbnVhbFwiXG4gICAgICAgICAgI3A9XCJuZ2JQb3BvdmVyXCJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgIChjbGljayk9XCJvcGVuVW5pdENvbnZlcnRlcihwLCBwcm9wZXJ0eSlcIj5cbiAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwiY2FsY3VsYXRvclwiPjwvZmEtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2FjdG9yQWRkb25zIGxldC1wcm9wZXJ0eT5cbiAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIiAqbmdJZj1cInByb3BlcnR5LmtleSA9PT0gJ0BpZCdcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCIgdGl0bGU9XCJBZGQgbXlzZWxmIGFzIEFjdG9yXCIgKGNsaWNrKT1cInNldFVzZXJBY3RvcklkKHByb3BlcnR5KVwiPlxuICAgICAgPGZhLWljb24gW2ljb25dPVwiWydmYXInLCAnaWQtYmFkZ2UnXVwiPjwvZmEtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2N5Y2xlQWRkb25zIGxldC1wcm9wZXJ0eT5cbiAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIiAqbmdJZj1cInByb3BlcnR5LmtleSA9PT0gJ2N5Y2xlRHVyYXRpb24nXCI+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIlxuICAgICAgdGl0bGU9XCJDYWxjdWxhdGUgdmFsdWUgZnJvbSBzdGFydERhdGUgYW5kIGVuZERhdGVcIlxuICAgICAgKGNsaWNrKT1cImNhbGN1bGF0ZUN5Y2xlRHVyYXRpb24ocHJvcGVydHkpXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhY2FsY3VsYXRlQ3ljbGVEdXJhdGlvbkVuYWJsZWQocHJvcGVydHkpXCI+XG4gICAgICA8ZmEtaWNvbiBpY29uPVwiY2FsY3VsYXRvclwiPjwvZmEtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjb250cm9sXCIgKm5nSWY9XCJwcm9wZXJ0eS5rZXkgPT09ICdzdGFydERhdGUnXCI+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIlxuICAgICAgdGl0bGU9XCJDYWxjdWxhdGUgdmFsdWUgZnJvbSBlbmREYXRlIGFuZCBjeWNsZUR1cmF0aW9uXCJcbiAgICAgIChjbGljayk9XCJjYWxjdWxhdGVDeWNsZVN0YXJ0RGF0ZShwcm9wZXJ0eSlcIlxuICAgICAgW2Rpc2FibGVkXT1cIiFjYWxjdWxhdGVDeWNsZVN0YXJ0RGF0ZUVuYWJsZWQocHJvcGVydHkpXCI+XG4gICAgICA8ZmEtaWNvbiBpY29uPVwiY2FsY3VsYXRvclwiPjwvZmEtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3Nob3dOZXdQcm9wZXJ0eSBsZXQtcHJvcGVydHk+XG4gIDxoZWFkZXJcbiAgICBjbGFzcz1cImNhcmQtaGVhZGVyXCJcbiAgICAqbmdJZj1cImVkaXRhYmxlICYmIHByb3BlcnR5LmVkaXRhYmxlICYmIChwcm9wZXJ0eS5hZGRQcm9wZXJ0eUVuYWJsZWQgfHwgZGVlcEVkaXRhYmxlKTsgZWxzZSBwYWRkZXJcIj5cbiAgICA8Zm9ybSBjbGFzcz1cInB5LTMgcHgtNCBpcy1mbGV4LWdyb3ctMVwiIChzdWJtaXQpPVwiYWRkUHJvcGVydHkocHJvcGVydHkpXCIgbm92YWxpZGF0ZT5cbiAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBpcy1ob3Jpem9udGFsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1sYWJlbCBpcy1zbWFsbFwiICpiaW5kT25jZT1cInByb3BlcnR5XCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwibGFiZWxcIiBbZm9yXT1cInByb3BlcnR5LmlkICsgJ19uZXcnXCI+XG4gICAgICAgICAgICA8c3Bhbj5BZGQgbmV3IGZpZWxkPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtYm9keVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBoYXMtYWRkb25zXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbCBpcy1leHBhbmRlZFwiPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0IGlzLXNtYWxsXCJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInByb3BlcnR5Lm5ld1Byb3BlcnR5XCJcbiAgICAgICAgICAgICAgICBbaWRdPVwicHJvcGVydHkuaWQgKyAnX25ldydcIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJyYW5kb21uYW1lXCJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBhbmQgc2VsZWN0IGZpZWxkIGZyb20gcmVzdWx0c1wiXG4gICAgICAgICAgICAgICAgW25nYlR5cGVhaGVhZF09XCJwcm9wZXJ0eSB8IGFwcGx5UHVyZTogc3VnZ2VzdE5ld1Byb3BlcnR5XCJcbiAgICAgICAgICAgICAgICBbcmVzdWx0VGVtcGxhdGVdPVwic3VnZ2VzdGlvblwiXG4gICAgICAgICAgICAgICAgW2lucHV0Rm9ybWF0dGVyXT1cImZvcm1hdE5ld1Byb3BlcnR5XCJcbiAgICAgICAgICAgICAgICBbZm9jdXNGaXJzdF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgW2VkaXRhYmxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAoZm9jdXMpPVwidHlwZWFoZWFkRm9jdXMoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFwcm9wZXJ0eS5uZXdQcm9wZXJ0eSB8fCAhcHJvcGVydHkubmV3UHJvcGVydHkubmFtZVwiPlxuICAgICAgICAgICAgICAgIDxmYS1pY29uIGljb249XCJwbHVzXCI+PC9mYS1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGwtMlwiPkFkZDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG4gIDwvaGVhZGVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNwcm9wZXJ0eUVycm9yIGxldC1wcm9wZXJ0eT1cInByb3BlcnR5XCIgbGV0LWVkaXQ9XCJlZGl0XCI+XG4gIDxwIGNsYXNzPVwiaGVscFwiIFtjbGFzcy5pcy1kYW5nZXJdPVwicHJvcGVydHkuaGFzRXJyb3JcIiBbY2xhc3MuaXMtd2FybmluZ109XCJwcm9wZXJ0eS5oYXNXYXJuaW5nXCIgKm5nSWY9XCJwcm9wZXJ0eS5lcnJvclwiPlxuICAgIDxzcGFuIGNsYXNzPVwiaXMtcHJlLXdyYXBcIiAqYmluZE9uY2U9XCJwcm9wZXJ0eS5lcnJvclwiIFtpbm5lckhUTUxdPVwicHJvcGVydHkuZXJyb3IubWVzc2FnZVwiPjwvc3Bhbj5cbiAgICA8YSBjbGFzcz1cInBsLTJcIiAqbmdJZj1cImVkaXQgJiYgZXJyb3JzRWRpdGFibGUgJiYgcHJvcGVydHkuZXJyb3IuaW5kZXggPj0gMFwiIChjbGljayk9XCJlZGl0RXJyb3IocHJvcGVydHkpXCI+XG4gICAgICA8ZmEtaWNvbiBjbGFzcz1cInByLTJcIiBpY29uPVwiZWRpdFwiPjwvZmEtaWNvbj5cbiAgICAgIDxzcGFuPkVkaXQ8L3NwYW4+XG4gICAgPC9hPlxuICAgIDxhXG4gICAgICBjbGFzcz1cInBsLTJcIlxuICAgICAgKm5nSWY9XCIocHJvcGVydHkuaGFzV2FybmluZyB8fCBlcnJvcnNFZGl0YWJsZSkgJiYgcHJvcGVydHkuZXJyb3IuaW5kZXggPj0gMFwiXG4gICAgICAoY2xpY2spPVwicmVzb2x2ZUVycm9yKHByb3BlcnR5KVwiPlxuICAgICAgPGZhLWljb24gY2xhc3M9XCJwci0yXCIgaWNvbj1cImNoZWNrXCI+PC9mYS1pY29uPlxuICAgICAgPHNwYW4+UmVzb2x2ZWQ8L3NwYW4+XG4gICAgPC9hPlxuICA8L3A+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3Byb3BlcnR5TWFwIGxldC1wcm9wZXJ0eT5cbiAgPGRpdiBjbGFzcz1cInBhbmVsIGlzLWRlZmF1bHRcIiAqbmdJZj1cInNob3dNYXBcIj5cbiAgICA8ZGl2IGNsYXNzPVwib3Blbi1ncm91cCBwYW5lbC1oZWFkaW5nIHB5LTBcIiAoY2xpY2spPVwibWFwVmlzaWJsZSA9ICFtYXBWaXNpYmxlXCIgcG9pbnRlciBbY2xhc3MuaXMtb3Blbl09XCJtYXBWaXNpYmxlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1ucyBpcy1tb2JpbGUgaXMtdmNlbnRlcmVkIG1iLTBcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjb2x1bW4gaXMtbmFycm93IHB5LTEgbXktMFwiPlxuICAgICAgICAgIDxmYS1pY29uIGljb249XCJhbmdsZS1kb3duXCIgW2NsYXNzLmlzLWhpZGRlbl09XCIhbWFwVmlzaWJsZVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwiYW5nbGUtcmlnaHRcIiBbY2xhc3MuaXMtaGlkZGVuXT1cIm1hcFZpc2libGVcIj48L2ZhLWljb24+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjb2x1bW4gcHktMSBteS0wXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpcy1zaXplLTZcIj5WaWV3IG9uIE1hcDwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInBhbmVsLWJsb2NrIGlzLWJsb2NrIHAtMFwiIFtjbGFzcy5pcy1oaWRkZW5dPVwiIW1hcFZpc2libGVcIj5cbiAgICAgIDxoZS1zaXRlcy1tYXBzIFtzaXRlc109XCJbbm9kZV1cIiBbc2hvd05vdGljZV09XCJmYWxzZVwiPjwvaGUtc2l0ZXMtbWFwcz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI25vZGVFcnJvckZvcm0gbGV0LXByb3BlcnR5PlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwicHJvcGVydHkubmV3RXJyb3IgJiYgcHJvcGVydHkuZWRpdGFibGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmllbGQgaGFzLWFkZG9uc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdCBpcy1zbWFsbFwiPlxuICAgICAgICAgIDxzZWxlY3QgWyhuZ01vZGVsKV09XCJwcm9wZXJ0eS5uZXdFcnJvci5sZXZlbFwiPlxuICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwidW5kZWZpbmVkXCI+U2VsZWN0IExldmVsPC9vcHRpb24+XG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXJyb3JcIj5FcnJvcjwvb3B0aW9uPlxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIndhcm5pbmdcIj5XYXJuaW5nPC9vcHRpb24+XG4gICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbCBpcy1leHBhbmRlZFwiPlxuICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICBjbGFzcz1cInRleHRhcmVhIGlzLXNtYWxsXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInByb3BlcnR5Lm5ld0Vycm9yLm1lc3NhZ2VcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgeW91ciBtZXNzYWdlIGhlcmVcIlxuICAgICAgICAgIHJvd3M9XCIxXCI+PC90ZXh0YXJlYT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIXByb3BlcnR5Lm5ld0Vycm9yLmxldmVsIHx8ICFwcm9wZXJ0eS5uZXdFcnJvci5tZXNzYWdlXCJcbiAgICAgICAgICAoY2xpY2spPVwiYWRkRXJyb3IocHJvcGVydHksIHByb3BlcnR5Lm5ld0Vycm9yKVwiPlxuICAgICAgICAgIDxmYS1pY29uIGljb249XCJwbHVzLWNpcmNsZVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInBsLTJcIj5BZGQ8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNwb3B1cEVycm9yRm9ybSBsZXQtZGF0YT1cImRhdGFcIj5cbiAgPGRpdiBjbGFzcz1cImZpZWxkIGhhcy1hZGRvbnNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdFwiPlxuICAgICAgICA8c2VsZWN0IFsobmdNb2RlbCldPVwiZGF0YS5sZXZlbFwiPlxuICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cInVuZGVmaW5lZFwiPlNlbGVjdCBMZXZlbDwvb3B0aW9uPlxuICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcnJvclwiPkVycm9yPC9vcHRpb24+XG4gICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIndhcm5pbmdcIj5XYXJuaW5nPC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgWyhuZ01vZGVsKV09XCJkYXRhLm1lc3NhZ2VcIiBwbGFjZWhvbGRlcj1cIkVudGVyIHlvdXIgbWVzc2FnZSBoZXJlXCIgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3N1Z2dlc3Rpb24gbGV0LXI9XCJyZXN1bHRcIiBsZXQtdD1cInRlcm1cIj5cbiAgPG5nYi1oaWdobGlnaHRcbiAgICBbdGl0bGVdPVwici5iaWJsaW9ncmFwaHk/LnRpdGxlIHx8IHIuYmlibGlvZ3JhcGh5Py5kb2N1bWVudERPSSB8fCByLmJpYmxpb2dyYXBoeT8uc2NvcHVzIHx8IHIubmFtZVwiXG4gICAgW3Jlc3VsdF09XCJyLmJpYmxpb2dyYXBoeT8udGl0bGUgfHwgci5iaWJsaW9ncmFwaHk/LmRvY3VtZW50RE9JIHx8IHIuYmlibGlvZ3JhcGh5Py5zY29wdXMgfHwgci5uYW1lXCJcbiAgICBbdGVybV09XCJ0XCI+PC9uZ2ItaGlnaGxpZ2h0PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNwYWRkZXI+XG4gIDxkaXYgY2xhc3M9XCJwdC0xXCI+PC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NvbnZlcnRVbml0cyBsZXQtdmFsdWU9XCJ2YWx1ZVwiIGxldC10ZXJtPVwidGVybVwiIGxldC11bml0cz1cInVuaXRzXCI+XG4gIDxoZS11bml0LWNvbnZlcnRlciBbdmFsdWVdPVwidmFsdWVcIiBbdGVybV09XCJ0ZXJtXCIgW3RvVW5pdHNdPVwidW5pdHNcIj48L2hlLXVuaXQtY29udmVydGVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
502
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZmlsZXMvZmlsZXMtZm9ybS9maWxlcy1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9maWxlcy9maWxlcy1mb3JtL2ZpbGVzLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25HLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUM7QUFDN0IsT0FBTyxHQUFHLE1BQU0sWUFBWSxDQUFDO0FBQzdCLE9BQU8sRUFBc0IsVUFBVSxFQUFFLFFBQVEsRUFBa0MsTUFBTSxzQkFBc0IsQ0FBQztBQUVoSCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFOUMsT0FBTyxFQUdMLG1CQUFtQixFQUNuQixhQUFhLEVBQ2IsUUFBUSxFQUNSLFVBQVUsRUFFVixxQkFBcUIsRUFDckIsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixVQUFVLEVBQ1Ysb0JBQW9CLEVBQ3BCLHVCQUF1QixFQUN2QixjQUFjLEVBQ2QsWUFBWSxFQUNaLGNBQWMsRUFDZCxlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUNuQixhQUFhLEVBQ2IsWUFBWSxFQUNaLDZCQUE2QixFQUM3QixzQkFBc0IsRUFDdEIsOEJBQThCLEVBQzlCLHVC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QUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBRTlELDhDQUE4QztRQUM5QyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLEVBQUU7WUFDakMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDbkIsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQztRQUNILFlBQVksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBRTlCLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDNUMsQ0FBQzs4R0F4aUJVLGtCQUFrQjtrR0FBbEIsa0JBQWtCLDRhQ25HL0Isa2k0QkE0bkJBOzsyRkR6aEJhLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxlQUFlOzRKQU1qQixPQUFPO3NCQURkLEtBQUs7Z0JBR0UsTUFBTTtzQkFEYixLQUFLO2dCQUdDLElBQUk7c0JBRFYsS0FBSztnQkFHQyxPQUFPO3NCQURiLEtBQUs7Z0JBTUMsUUFBUTtzQkFEZCxLQUFLO2dCQUdDLFNBQVM7c0JBRGYsS0FBSztnQkFHQyxZQUFZO3NCQURsQixLQUFLO2dCQU1DLGNBQWM7c0JBRHBCLEtBQUs7Z0JBT0MsOEJBQThCO3NCQURwQyxLQUFLO2dCQUlFLFdBQVc7c0JBRGxCLE1BQU07Z0JBR0MsaUJBQWlCO3NCQUR4QixNQUFNO2dCQUdDLGNBQWM7c0JBRHJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBtZXJnZU1hcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoLmdldCc7XG5pbXBvcnQgc2V0IGZyb20gJ2xvZGFzaC5zZXQnO1xuaW1wb3J0IHsgSlNPTiBhcyBIZXN0aWFKc29uLCBTY2hlbWFUeXBlLCBOb2RlVHlwZSwgQmlibGlvZ3JhcGh5LCBTb3VyY2UsIFByb3BlcnR5IH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuaW1wb3J0IHsgZGVmaW5pdGlvbnMsIGRlZmluaXRpb24gfSBmcm9tICdAaGVzdGlhLWVhcnRoL2pzb24tc2NoZW1hJztcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3V0aWxzJztcblxuaW1wb3J0IHtcbiAgSUVycm9yUHJvcGVydHksXG4gIElOb2RlUHJvcGVydHksXG4gIGZvcm1hdFByb3BlcnR5RXJyb3IsXG4gIHByb3BlcnR5RXJyb3IsXG4gIGhhc0Vycm9yLFxuICBoYXNXYXJuaW5nLFxuICBzdWdnZXN0aW9uVHlwZSxcbiAgZGVmYXVsdFN1Z2dlc3Rpb25UeXBlLFxuICByZWN1cnNpdmVQcm9wZXJ0aWVzLFxuICB0eXBlVG9OZXdQcm9wZXJ0eSxcbiAgcHJvcGVydHlJZCxcbiAgaXNBZGRQcm9wZXJ0eUVuYWJsZWQsXG4gIG5vZGVBdmFpbGFibGVQcm9wZXJ0aWVzLFxuICBzb3J0UHJvcGVydGllcyxcbiAgZ3JvdXBDaGFuZ2VkLFxuICBwYXJlbnRQcm9wZXJ0eSxcbiAgc2libGluZ1Byb3BlcnR5LFxuICB1cGRhdGVQcm9wZXJ0aWVzLFxuICByZWZyZXNoUHJvcGVydHlLZXlzLFxuICBrZXlUb0RhdGFQYXRoLFxuICBmaW5kUHJvcGVydHksXG4gIGNhbGN1bGF0ZUN5Y2xlRHVyYXRpb25FbmFibGVkLFxuICBjYWxjdWxhdGVDeWNsZUR1cmF0aW9uLFxuICBjYWxjdWxhdGVDeWNsZVN0YXJ0RGF0ZUVuYWJsZWQsXG4gIGNhbGN1bGF0ZUN5Y2xlU3RhcnREYXRlLFxuICBwYXJzZU5ld1ZhbHVlLFxuICBmb3JtYXR0ZXIsXG4gIElOZXdQcm9wZXJ0eVxufSBmcm9tICcuLi9maWxlcy1mb3JtLm1vZGVsJztcbmltcG9ydCB7IGVycm9ySGFzRXJyb3IsIGVycm9ySGFzV2FybmluZywgZmlsdGVyRXJyb3IsIGZvcm1hdEVycm9yIH0gZnJvbSAnLi4vZmlsZXMtZXJyb3IubW9kZWwnO1xuaW1wb3J0IHsgSVZhbGlkYXRpb25FcnJvciB9IGZyb20gJy4uLy4uL3NjaGVtYS9zY2hlbWEtdmFsaWRhdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBIZVVzZXJzU2VydmljZSB9IGZyb20gJy4uLy4uL3VzZXJzL3VzZXJzLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGVTZWFyY2hTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VhcmNoL3NlYXJjaC5zZXJ2aWNlJztcbmltcG9ydCB7IG1hdGNoVHlwZSwgbWF0Y2hQaHJhc2VRdWVyeSwgbWF0Y2hQaHJhc2VQcmVmaXhRdWVyeSwgbWF0Y2hCb29sUHJlZml4UXVlcnkgfSBmcm9tICcuLi8uLi9zZWFyY2gvc2VhcmNoLm1vZGVsJztcbmltcG9ydCB7IHNhZmVKU09OUGFyc2UsIGNvcHlPYmplY3QsIHR5cGVhaGVhZEZvY3VzIH0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWxzJztcblxuY29uc3QgTUlOX1RZUEVBSEVBRF9MRU5HVEggPSAyO1xuY29uc3QgcG9wdWxhdGVUZXJtRmllbGRzID0gWyd0ZXJtVHlwZScsICd1bml0cyddO1xuY29uc3QgcG9wdWxhdGVUZXJtRGVmYXVsdFByb3BlcnRpZXMgPSBbXG4gICdkZWZhdWx0UHJvcGVydGllcy50ZXJtLm5hbWUnLFxuICAnZGVmYXVsdFByb3BlcnRpZXMudGVybS51bml0cycsXG4gICdkZWZhdWx0UHJvcGVydGllcy52YWx1ZSdcbl07XG5cbmNvbnN0IGZvcm1hdFByb3BlcnR5ID0gKHByb3A6IFByb3BlcnR5KSA9PiAoe1xuICAnQHR5cGUnOiBTY2hlbWFUeXBlLlByb3BlcnR5LFxuICAuLi5wcm9wLFxuICB0ZXJtOiB7XG4gICAgJ0B0eXBlJzogTm9kZVR5cGUuVGVybSxcbiAgICAuLi5wcm9wLnRlcm1cbiAgfVxufSk7XG5cbmNvbnN0IGZvcm1hdFN1Z2dlc3Rpb24gPSAoeyBkZWZhdWx0UHJvcGVydGllcywgLi4ubm9kZSB9OiBhbnkpID0+ICh7XG4gIC4uLm5vZGUsXG4gIC4uLihkZWZhdWx0UHJvcGVydGllcz8ubGVuZ3RoID8geyBkZWZhdWx0UHJvcGVydGllczogZGVmYXVsdFByb3BlcnRpZXMubWFwKGZvcm1hdFByb3BlcnR5KSB9IDoge30pXG59KTtcblxuY29uc3QgZm9ybWF0TGlua05vZGVzUHJlZml4ID0gJ0xpbmsgd2l0aCc7XG5cbi8vIHBhdGNoIGVycm9yIHdoZW4gbGluayBpcyBub3Qgd29ya2luZyBjb3JyZWN0bHlcbmNvbnN0IGNsZWFuTmV3VmFsdWUgPSB2YWx1ZSA9PlxuICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlLmlkXG4gICAgPyB7IC4uLnZhbHVlLCBpZDogY2xlYW5OZXdWYWx1ZSh2YWx1ZS5pZCkgfVxuICAgIDogdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJ1xuICAgID8gdmFsdWUuc3RhcnRzV2l0aChmb3JtYXRMaW5rTm9kZXNQcmVmaXgpXG4gICAgICA/IHZhbHVlLnNwbGl0KCc6JylbMV0udHJpbSgpXG4gICAgICA6IHZhbHVlXG4gICAgOiB2YWx1ZTtcblxuY29uc3QgZm9ybWF0TGlua05vZGVzU3VnZ2VzdGlvbnMgPSAobm9kZU1hcDogeyBbdHlwZSBpbiBOb2RlVHlwZV0/OiBzdHJpbmdbXSB9LCB0eXBlOiBOb2RlVHlwZSkgPT5cbiAgKG5vZGVNYXBbdHlwZV0gfHwgW10pLm1hcChpZCA9PiAoeyB0eXBlLCBpZCwgbmFtZTogYCR7Zm9ybWF0TGlua05vZGVzUHJlZml4fSAke3R5cGV9OiAke2lkfWAgfSkpO1xuXG50eXBlIHN1Z2dlc3RGdW5jID0gKHRlcm06IHN0cmluZywgcHJvcGVydHk6IElOb2RlUHJvcGVydHkpID0+IE9ic2VydmFibGU8YW55W10+O1xuXG5jb25zdCBpbnNlcnRQcm9wZXJ0eSA9IChwcm9wZXJ0aWVzOiBJTm9kZVByb3BlcnR5W10sIGtleTogc3RyaW5nLCBwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkgPT4ge1xuICBjb25zdCBleGlzdGluZ1Byb3BlcnR5SW5kZXggPSBwcm9wZXJ0aWVzLmZpbmRJbmRleCh2ID0+IHYuZnVsbEtleSA9PT0ga2V5KTtcbiAgZXhpc3RpbmdQcm9wZXJ0eUluZGV4ID49IDAgPyAocHJvcGVydGllc1tleGlzdGluZ1Byb3BlcnR5SW5kZXhdID0gcHJvcGVydHkpIDogcHJvcGVydGllcy5wdXNoKHByb3BlcnR5KTtcbiAgcHJvcGVydGllcy5zb3J0KHNvcnRQcm9wZXJ0aWVzKTtcbiAgcmV0dXJuIHByb3BlcnRpZXM7XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoZS1maWxlcy1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGVzLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWxlcy1mb3JtLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRmlsZXNGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KClcbiAgcHJpdmF0ZSBzY2hlbWFzPzogZGVmaW5pdGlvbnM7XG4gIEBJbnB1dCgpXG4gIHByaXZhdGUgZXJyb3JzOiBJVmFsaWRhdGlvbkVycm9yW10gPSBbXTtcbiAgQElucHV0KClcbiAgcHVibGljIG5vZGU/OiBIZXN0aWFKc29uPFNjaGVtYVR5cGU+O1xuICBASW5wdXQoKVxuICBwdWJsaWMgbm9kZU1hcDogeyBbdHlwZSBpbiBOb2RlVHlwZV0/OiBzdHJpbmdbXSB9ID0ge307XG4gIC8qKlxuICAgKiBBbGxvdyBlZGl0aW5nIG5vZGVzIChgZmFsc2VgIGZvciByZWFkb25seSkuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZWRpdGFibGUgPSBmYWxzZTtcbiAgQElucHV0KClcbiAgcHVibGljIGVycm9yTW9kZSA9IGZhbHNlO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZGVlcEVkaXRhYmxlID0gdHJ1ZTtcbiAgLyoqXG4gICAqIENhbiBlZGl0IGVycm9ycy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlcnJvcnNFZGl0YWJsZSA9IGZhbHNlO1xuICAvKipcbiAgICogV2hlbiBzZWxlY3RpbmcgdGVybXMsIHdpbGwgc2hvdyBkZWZhdWx0IHByb3BlcnRpZXMgb3Igbm90LlxuICAgKiBTaG91bGQgYmUgYGZhbHNlYCB3aGVuIHVzaW5nIHNjaGVtYSB2YWxpZGF0aW9uLCBhcyBvbmx5IHRoZSBgbmFtZWAgd291bGQgYmUgYWRkZWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvd1N1Z2dlc3RlZERlZmF1bHRQcm9wZXJ0aWVzID0gdHJ1ZTtcblxuICBAT3V0cHV0KClcbiAgcHJpdmF0ZSBub2RlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBrZXk6IHN0cmluZzsgdmFsdWU6IGFueSB9PigpO1xuICBAT3V0cHV0KClcbiAgcHJpdmF0ZSBub2RlRXJvcnJSZXNvbHZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICBAT3V0cHV0KClcbiAgcHJpdmF0ZSBub2RlRXJyb3JBZGRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SVZhbGlkYXRpb25FcnJvcj4oKTtcblxuICBwdWJsaWMgTm9kZVR5cGUgPSBOb2RlVHlwZTtcbiAgcHVibGljIFNjaGVtYVR5cGUgPSBTY2hlbWFUeXBlO1xuICBwdWJsaWMgaXNPcGVuID0gdHJ1ZTtcbiAgcHVibGljIG1hcFZpc2libGUgPSBmYWxzZTtcbiAgcHVibGljIGZvcm1hdFByb3BlcnR5RXJyb3IgPSBmb3JtYXRQcm9wZXJ0eUVycm9yO1xuICBwdWJsaWMgdHlwZWFoZWFkRm9jdXMgPSB0eXBlYWhlYWRGb2N1cztcbiAgcHVibGljIG1hcERyYXdpbmdQcm9wZXJ0eT86IElOb2RlUHJvcGVydHk7XG4gIHB1YmxpYyBiaWJsaW9ncmFwaGllc1NlYXJjaFByb3BlcnR5PzogSU5vZGVQcm9wZXJ0eTtcbiAgcHVibGljIG5vZGVQcm9wZXJ0eT86IElOb2RlUHJvcGVydHk7XG4gIHB1YmxpYyBwcm9wZXJ0aWVzOiBJTm9kZVByb3BlcnR5W10gPSBbXTtcblxuICBwdWJsaWMgc3VnZ2VzdE5ld1Byb3BlcnR5ID1cbiAgICAoeyBmdWxsS2V5IH06IElOb2RlUHJvcGVydHkpID0+XG4gICAgKHRleHQkOiBPYnNlcnZhYmxlPHN0cmluZz4pID0+XG4gICAgICB0ZXh0JC5waXBlKFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICBzd2l0Y2hNYXAodGVybSA9PiBvZih0aGlzLm5ld1Byb3BlcnRpZXMoZmluZFByb3BlcnR5KHRoaXMucHJvcGVydGllcywgZnVsbEtleSkgfHwgdGhpcy5ub2RlUHJvcGVydHksIHRlcm0pKSlcbiAgICAgICk7XG4gIHB1YmxpYyBmb3JtYXROZXdQcm9wZXJ0eSA9ICh7IG5hbWUgfTogSU5ld1Byb3BlcnR5KSA9PiBuYW1lO1xuXG4gIHByaXZhdGUgc3VnZ2VzdEV4aXN0aW5nTm9kZSA9ICh0eXBlOiBOb2RlVHlwZSwgdGVybTogc3RyaW5nLCB1bmlxdWVLZXkgPSAnQGlkJykgPT5cbiAgICB0ZXJtLmxlbmd0aCA8IE1JTl9UWVBFQUhFQURfTEVOR1RIXG4gICAgICA/IG9mKFtdKVxuICAgICAgOiB0aGlzLnNlYXJjaFNlcnZpY2Uuc3VnZ2VzdChcbiAgICAgICAgICB0ZXJtLFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgW10sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYm9vbDoge1xuICAgICAgICAgICAgICBtdXN0OiBbbWF0Y2hUeXBlKHR5cGUpXSxcbiAgICAgICAgICAgICAgc2hvdWxkOiBbXG4gICAgICAgICAgICAgICAgbWF0Y2hQaHJhc2VRdWVyeSh0ZXJtLCAxMDAsIHVuaXF1ZUtleSksXG4gICAgICAgICAgICAgICAgbWF0Y2hQaHJhc2VQcmVmaXhRdWVyeSh0ZXJtLCAyMCwgdW5pcXVlS2V5KSxcbiAgICAgICAgICAgICAgICBtYXRjaEJvb2xQcmVmaXhRdWVyeSh0ZXJtLCAxMCwgdW5pcXVlS2V5KVxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBtaW5pbXVtX3Nob3VsZF9tYXRjaDogMVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgMTAsXG4gICAgICAgICAgdGhpcy5zdWdnZXN0VGVybUZpZWxkc1xuICAgICAgICApO1xuXG4gIHByaXZhdGUgc3VnZ2VzdE5vZGUgPSAodHlwZTogTm9kZVR5cGUsIHN1Z2dlc3REZWZhdWx0Pzogc3VnZ2VzdEZ1bmMpID0+ICh0ZXJtOiBzdHJpbmcsIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSA9PlxuICAgIChwcm9wZXJ0eS5zdWdnZXN0aW9ucz8uaXNVbmlxdWVLZXlcbiAgICAgID8gdGhpcy5zdWdnZXN0RXhpc3RpbmdOb2RlKHR5cGUsIHRlcm0sIHByb3BlcnR5LnN1Z2dlc3Rpb25zLmlzVW5pcXVlS2V5KVxuICAgICAgOiBwcm9wZXJ0eS5zdWdnZXN0aW9ucz8uaXNMaW5rTm9kZVxuICAgICAgPyBvZihmb3JtYXRMaW5rTm9kZXNTdWdnZXN0aW9ucyh0aGlzLm5vZGVNYXAsIHR5cGUpKVxuICAgICAgOiBzdWdnZXN0RGVmYXVsdFxuICAgICAgPyBzdWdnZXN0RGVmYXVsdCh0ZXJtLCBwcm9wZXJ0eSlcbiAgICAgIDogb2YoW10pXG4gICAgKS5waXBlKG1hcCgocmVzOiBhbnkpID0+IHJlcy5tYXAoZm9ybWF0U3VnZ2VzdGlvbikpKTtcblxuICBwcml2YXRlIHN1Z2dlc3Rlcjoge1xuICAgIFt0eXBlIGluIHN1Z2dlc3Rpb25UeXBlXT86IHN1Z2dlc3RGdW5jO1xuICB9ID0ge1xuICAgIGRlZmF1bHQ6ICh0ZXJtLCBwcm9wZXJ0eSkgPT5cbiAgICAgIG9mKFxuICAgICAgICAocHJvcGVydHk/LnN1Z2dlc3Rpb25zPy52YWx1ZXMgfHwgW10pXG4gICAgICAgICAgLm1hcCh2ID0+IGAke3Z9YClcbiAgICAgICAgICAuZmlsdGVyKHYgPT4gdi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0udG9Mb3dlckNhc2UoKSkpXG4gICAgICAgICAgLm1hcChuYW1lID0+ICh7IG5hbWUgfSkpXG4gICAgICApLFxuICAgIFtOb2RlVHlwZS5BY3Rvcl06IHRoaXMuc3VnZ2VzdE5vZGUoTm9kZVR5cGUuQWN0b3IpLFxuICAgIFtOb2RlVHlwZS5DeWNsZV06IHRoaXMuc3VnZ2VzdE5vZGUoTm9kZVR5cGUuQ3ljbGUpLFxuICAgIFtOb2RlVHlwZS5JbXBhY3RBc3Nlc3NtZW50XTogdGhpcy5zdWdnZXN0Tm9kZShOb2RlVHlwZS5JbXBhY3RBc3Nlc3NtZW50KSxcbiAgICBbTm9kZVR5cGUuT3JnYW5pc2F0aW9uXTogdGhpcy5zdWdnZXN0Tm9kZShOb2RlVHlwZS5PcmdhbmlzYXRpb24pLFxuICAgIFtOb2RlVHlwZS5TaXRlXTogdGhpcy5zdWdnZXN0Tm9kZShOb2RlVHlwZS5TaXRlKSxcbiAgICBbTm9kZVR5cGUuU291cmNlXTogdGhpcy5zdWdnZXN0Tm9kZShOb2RlVHlwZS5Tb3VyY2UsICh0ZXJtLCB7IGtleSB9KSA9PlxuICAgICAgdGVybS5sZW5ndGggPCBNSU5fVFlQRUFIRUFEX0xFTkdUSFxuICAgICAgICA/IG9mKFtdKVxuICAgICAgICA6IHRoaXMuc2VhcmNoU2VydmljZS5zdWdnZXN0U291cmNlKHRlcm0sIDUsIFtgYmlibGlvZ3JhcGh5LiR7a2V5fWBdLCBbYGJpYmxpb2dyYXBoeS4ke2tleX1gXSlcbiAgICApLFxuICAgIFtOb2RlVHlwZS5UZXJtXTogdGhpcy5zdWdnZXN0Tm9kZShOb2RlVHlwZS5UZXJtLCAodGVybSwgeyBzdWdnZXN0aW9ucyB9KSA9PlxuICAgICAgdGVybS5sZW5ndGggPCBNSU5fVFlQRUFIRUFEX0xFTkdUSFxuICAgICAgICA/IG9mKFtdKVxuICAgICAgICA6IHRoaXMuc2VhcmNoU2VydmljZS5zdWdnZXN0KHRlcm0sIE5vZGVUeXBlLlRlcm0sIHN1Z2dlc3Rpb25zPy5xdWVyaWVzIHx8IFtdLCBudWxsLCA1LCB0aGlzLnN1Z2dlc3RUZXJtRmllbGRzKVxuICAgIClcbiAgfTtcbiAgcHVibGljIHByb3BlcnR5U3VnZ2VzdCA9XG4gICAgKHsgZnVsbEtleSwgc3VnZ2VzdGlvbnMgfTogSU5vZGVQcm9wZXJ0eSkgPT5cbiAgICAodGV4dCQ6IE9ic2VydmFibGU8c3RyaW5nPikgPT5cbiAgICAgIHRleHQkLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZShzdWdnZXN0aW9ucz8udHlwZSA9PT0gZGVmYXVsdFN1Z2dlc3Rpb25UeXBlID8gMCA6IDMwMCksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIG1lcmdlTWFwKHRlcm0gPT4ge1xuICAgICAgICAgIGNvbnN0IHByb3BlcnR5ID0gZmluZFByb3BlcnR5KHRoaXMucHJvcGVydGllcywgZnVsbEtleSk7XG4gICAgICAgICAgcmV0dXJuIHByb3BlcnR5Py5lZGl0YWJsZSAmJiBzdWdnZXN0aW9ucz8udHlwZSBpbiB0aGlzLnN1Z2dlc3RlclxuICAgICAgICAgICAgPyBvZih0ZXJtKS5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiAocHJvcGVydHkubG9hZGluZyA9IHRydWUpKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5zdWdnZXN0ZXJbc3VnZ2VzdGlvbnM/LnR5cGVdISh0ZXJtLCBwcm9wZXJ0eSkpLFxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiAocHJvcGVydHkubG9hZGluZyA9IGZhbHNlKSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBvZihbXSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBzZWFyY2hTZXJ2aWNlOiBIZVNlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2Vyc1NlcnZpY2U6IEhlVXNlcnNTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBzY2hlbWFUeXBlID0gdGhpcy5ub2RlIS50eXBlIHx8IHRoaXMubm9kZSFbJ0B0eXBlJ107XG4gICAgY29uc3Qgc2NoZW1hID0gdGhpcy5zY2hlbWFzID8gdGhpcy5zY2hlbWFzW3NjaGVtYVR5cGVdIDogKHt9IGFzIGRlZmluaXRpb24pO1xuICAgIGNvbnN0IGVycm9ycyA9IHRoaXMuZXJyb3JzLmZpbHRlcihmaWx0ZXJFcnJvcik7XG4gICAgY29uc3QgZXJyb3IgPSBwcm9wZXJ0eUVycm9yKGVycm9ycykoJycpO1xuICAgIHRoaXMubm9kZVByb3BlcnR5ID0gdGhpcy5zY2hlbWFzXG4gICAgICA/IHtcbiAgICAgICAgICBpZDogcHJvcGVydHlJZCgpLFxuICAgICAgICAgIHNjaGVtYSxcbiAgICAgICAgICBzY2hlbWFUeXBlLFxuICAgICAgICAgIGVkaXRhYmxlOiAhIXRoaXMubm9kZSEudHlwZSxcbiAgICAgICAgICBmdWxsS2V5OiAnJyxcbiAgICAgICAgICBrZXk6ICcnLFxuICAgICAgICAgIHZhbHVlOiB7fSxcbiAgICAgICAgICBlcnJvcjogZm9ybWF0RXJyb3IoZXJyb3IpLFxuICAgICAgICAgIGhhc0Vycm9yOiBlcnJvckhhc0Vycm9yKGVycm9yKSxcbiAgICAgICAgICBoYXNXYXJuaW5nOiBlcnJvckhhc1dhcm5pbmcoZXJyb3IpLFxuICAgICAgICAgIHN1Z2dlc3Rpb25zOiB7fSxcbiAgICAgICAgICBuZXdQcm9wZXJ0eToge30sXG4gICAgICAgICAgbmV3RXJyb3I6IHsgbGV2ZWw6ICd3YXJuaW5nJyB9LFxuICAgICAgICAgIHByb3BlcnRpZXM6IFtdLFxuICAgICAgICAgIGFkZFByb3BlcnR5RW5hYmxlZDogaXNBZGRQcm9wZXJ0eUVuYWJsZWQodGhpcy5ub2RlISwgc2NoZW1hVHlwZSwgc2NoZW1hKSxcbiAgICAgICAgICBmb3JtYXR0ZXI6IGZvcm1hdHRlcignJylcbiAgICAgICAgfVxuICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgcmVjdXJzZXIgPSByZWN1cnNpdmVQcm9wZXJ0aWVzKHRoaXMuc2NoZW1hcyEsIGVycm9ycywgc2NoZW1hLCB0aGlzLmRlZXBFZGl0YWJsZSk7XG4gICAgdGhpcy5wcm9wZXJ0aWVzID0gcmVjdXJzZXIodGhpcy5ub2RlKTtcbiAgfVxuXG4gIHB1YmxpYyB0cmFja0J5SW5kZXgoaW5kZXg6IG51bWJlciwgX3ZhbHVlOiBhbnkpIHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICBwdWJsaWMgdHJhY2tCeVByb3BlcnR5KF9pbmRleDogbnVtYmVyLCB7IGlkLCBmdWxsS2V5IH06IElOb2RlUHJvcGVydHkpIHtcbiAgICByZXR1cm4gW2Z1bGxLZXksIGlkXS5qb2luKCdfJyk7XG4gIH1cblxuICBwdWJsaWMgaGFzQWRkb25zKHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHByb3BlcnR5ICYmXG4gICAgICAodGhpcy5lbmFibGVBZGRFcnJvcihwcm9wZXJ0eSkgfHxcbiAgICAgICAgKHRoaXMuZWRpdGFibGUgJiYgcHJvcGVydHkuZWRpdGFibGUpIHx8XG4gICAgICAgIHRoaXMuYWRkUHJvcGVydHlFbmFibGVkKHByb3BlcnR5KSB8fFxuICAgICAgICB0aGlzLmlzUmVxdWlyZWQocHJvcGVydHkpIHx8XG4gICAgICAgIHByb3BlcnR5LmV4dGVybmFsVXJsPy51cmwgfHxcbiAgICAgICAgdGhpcy5tYXBEcmF3aW5nTW9kZXMocHJvcGVydHkpLmxlbmd0aCB8fFxuICAgICAgICB0aGlzLnVuaXRDb252ZXJ0ZXJFbmFibGVkKHByb3BlcnR5KSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGlzUmVxdWlyZWQoeyB2YWx1ZSwgaXNSZXF1aXJlZCB9OiBJTm9kZVByb3BlcnR5KSB7XG4gICAgcmV0dXJuIGlzUmVxdWlyZWQgJiYgaXNFbXB0eSh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGdldCBzdWdnZXN0VGVybUZpZWxkcygpIHtcbiAgICByZXR1cm4gWy4uLnBvcHVsYXRlVGVybUZpZWxkcywgLi4uKHRoaXMuc2hvd1N1Z2dlc3RlZERlZmF1bHRQcm9wZXJ0aWVzID8gcG9wdWxhdGVUZXJtRGVmYXVsdFByb3BlcnRpZXMgOiBbXSldO1xuICB9XG5cbiAgLy8gLS0tIEVycm9yc1xuXG4gIHB1YmxpYyBlbmFibGVBZGRFcnJvcihwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkge1xuICAgIHJldHVybiB0aGlzLmVycm9yc0VkaXRhYmxlICYmICFwcm9wZXJ0eS5oYXNFcnJvciAmJiAhcHJvcGVydHkuaGFzV2FybmluZztcbiAgfVxuXG4gIHB1YmxpYyBhZGRFcnJvcihwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSwgeyBtZXNzYWdlLCBsZXZlbCB9OiBJRXJyb3JQcm9wZXJ0eSkge1xuICAgIGlmICghbWVzc2FnZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBrZXlzID0gcHJvcGVydHkuZnVsbEtleS5zcGxpdCgnLicpO1xuICAgIGtleXMucG9wKCk7XG4gICAgY29uc3QgZXJyb3I6IElWYWxpZGF0aW9uRXJyb3IgPSBwcm9wZXJ0eS5pc0FkZGVkXG4gICAgICA/IHtcbiAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgIGxldmVsOiBsZXZlbCB8fCAnZXJyb3InLFxuICAgICAgICAgIGRhdGFQYXRoOiBrZXlUb0RhdGFQYXRoKGtleXMuam9pbignLicpKSxcbiAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgIG1pc3NpbmdQcm9wZXJ0eTogcHJvcGVydHkua2V5XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA6IHtcbiAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgIGxldmVsOiBsZXZlbCB8fCAnZXJyb3InLFxuICAgICAgICAgIGRhdGFQYXRoOiBrZXlUb0RhdGFQYXRoKHByb3BlcnR5LmZ1bGxLZXkpXG4gICAgICAgIH07XG4gICAgcHJvcGVydHkubmV3RXJyb3IgPSB7IGxldmVsOiAnd2FybmluZycgfTtcbiAgICBwcm9wZXJ0eS5lcnJvciA9IGVycm9yO1xuICAgIHByb3BlcnR5Lmhhc0Vycm9yID0gZXJyb3JIYXNFcnJvcihlcnJvcik7XG4gICAgcHJvcGVydHkuaGFzV2FybmluZyA9IGVycm9ySGFzV2FybmluZyhlcnJvcik7XG4gICAgdGhpcy5ub2RlRXJyb3JBZGRlZC5lbWl0KGVycm9yKTtcbiAgfVxuXG4gIHB1YmxpYyBlZGl0RXJyb3IocHJvcGVydHk6IElOb2RlUHJvcGVydHkpIHtcbiAgICBwcm9wZXJ0eS5uZXdFcnJvciA9IHByb3BlcnR5LmVycm9yO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmVFcnJvcihwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkge1xuICAgIGNvbnN0IGluZGV4ID0gcHJvcGVydHkuZXJyb3I/LmluZGV4O1xuICAgIHByb3BlcnR5LmVycm9yID0gdW5kZWZpbmVkO1xuICAgIHByb3BlcnR5Lmhhc0Vycm9yID0gaGFzRXJyb3IocHJvcGVydHkucHJvcGVydGllcyk7XG4gICAgcHJvcGVydHkuaGFzV2FybmluZyA9IGhhc1dhcm5pbmcocHJvcGVydHkucHJvcGVydGllcyk7XG4gICAgdGhpcy5ub2RlRXJvcnJSZXNvbHZlZC5lbWl0KGluZGV4KTtcbiAgICByZXR1cm4gZ3JvdXBDaGFuZ2VkKHRoaXMucHJvcGVydGllcywgcHJvcGVydHkuZnVsbEtleSk7XG4gIH1cblxuICAvLyAtLS1cblxuICBwdWJsaWMgYWRkUHJvcGVydHlFbmFibGVkKHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSB7XG4gICAgcmV0dXJuIHRoaXMuZWRpdGFibGUgJiYgIXRoaXMuZXJyb3JzRWRpdGFibGUgJiYgcHJvcGVydHkuYWRkUHJvcGVydHlFbmFibGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBuZXdQcm9wZXJ0aWVzKHByb3BlcnR5OiBJTm9kZVByb3BlcnR5LCBmaWVsZDogc3RyaW5nKSB7XG4gICAgY29uc3QgcHJvcGVydGllcyA9IG5vZGVBdmFpbGFibGVQcm9wZXJ0aWVzKHRoaXMubm9kZSEsIHByb3BlcnR5KTtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMocHJvcGVydGllcylcbiAgICAgIC5maWx0ZXIocHJvcCA9PiBwcm9wLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmllbGQudG9Mb3dlckNhc2UoKSkpXG4gICAgICAubWFwKG5hbWUgPT4gKHsgbmFtZSwgcHJvcDogcHJvcGVydGllc1tuYW1lXSB9KSk7XG4gIH1cblxuICBwcml2YXRlIHJlcGxhY2VQcm9wZXJ0eURhdGEocHJvcGVydHk6IElOb2RlUHJvcGVydHksIGRhdGE6IGFueSwgZWRpdGFibGU/OiBib29sZWFuLCByZXBsYWNlUGFyZW50ID0gdHJ1ZSkge1xuICAgIGNvbnN0IHBhcmVudCA9IHJlcGxhY2VQYXJlbnQgPyBwYXJlbnRQcm9wZXJ0eSh0aGlzLnByb3BlcnRpZXMsIHByb3BlcnR5KSA6IHByb3BlcnR5O1xuICAgIGNvbnN0IHByb3BlcnRpZXMgPSByZWN1cnNpdmVQcm9wZXJ0aWVzKFxuICAgICAgdGhpcy5zY2hlbWFzISxcbiAgICAgIFtdLFxuICAgICAgdGhpcy5zY2hlbWFzIVt0aGlzLm5vZGUhLnR5cGVdLFxuICAgICAgdGhpcy5kZWVwRWRpdGFibGUsXG4gICAgICBwYXJlbnQuZnVsbEtleVxuICAgICkoZGF0YSk7XG4gICAgdXBkYXRlUHJvcGVydGllcyh7IHByb3BlcnRpZXMgfSwgcHJvcCA9PiB7XG4gICAgICBwcm9wLmVkaXRhYmxlID0gdHlwZW9mIGVkaXRhYmxlID09PSAndW5kZWZpbmVkJyA/IHByb3AuZWRpdGFibGUgOiBlZGl0YWJsZTtcbiAgICAgIHJldHVybiBwcm9wO1xuICAgIH0pO1xuICAgIHBhcmVudC5lZGl0YWJsZSA9IHR5cGVvZiBlZGl0YWJsZSA9PT0gJ3VuZGVmaW5lZCcgPyBwYXJlbnQuZWRpdGFibGUgOiBlZGl0YWJsZTtcbiAgICBwYXJlbnQucHJvcGVydGllcyA9IHByb3BlcnRpZXM7XG4gICAgcGFyZW50LnZhbHVlID0gZGF0YTtcbiAgICByZXR1cm4gdGhpcy5wcm9wZXJ0eUNoYW5nZWQoZGF0YSwgcGFyZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBzdWdnZXN0aW9uU2VsZWN0ZWQoeyAnQGlkJzogX2lkLCBuYW1lLCB0eXBlLCBpZCwgLi4uZGF0YSB9LCBwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkge1xuICAgIHJldHVybiBfaWRcbiAgICAgID8gLy8gc3VnZ2VzdGlvbnMgZnJvbSBleGlzdGluZyBub2Rlc1xuICAgICAgICB0aGlzLnJlcGxhY2VQcm9wZXJ0eURhdGEocHJvcGVydHksIHsgJ0BpZCc6IF9pZCwgJ0B0eXBlJzogcHJvcGVydHkuc3VnZ2VzdGlvbnM/LnR5cGUsIG5hbWUsIC4uLmRhdGEgfSwgZmFsc2UpXG4gICAgICA6IC8vIHN1Z2dlc3Rpb24gZnJvbSBsaW5rZWQgbm9kZXNcbiAgICAgIHR5cGUgJiYgaWRcbiAgICAgID8gdGhpcy5yZXBsYWNlUHJvcGVydHlEYXRhKHByb3BlcnR5LCB7IHR5cGUsIGlkLCAuLi5kYXRhIH0sIHRydWUpXG4gICAgICA6IC8vIHN1Z2dlc3Rpb24gYnkgbmFtZSA9PiBlbnVtIHZhbHVlc1xuICAgICAgICB0aGlzLnByb3BlcnR5Q2hhbmdlZChuYW1lLCBwcm9wZXJ0eSk7XG4gIH1cblxuICBwdWJsaWMgYWRkQXJyYXlHcm91cChhcnJheTogSU5vZGVQcm9wZXJ0eSkge1xuICAgIGNvbnN0IHByb3AgPSB0aGlzLnNjaGVtYXMhW2FycmF5LnNjaGVtYVR5cGVdO1xuICAgIGNvbnN0IHZhbHVlID0gZ2V0KHRoaXMubm9kZSwgYXJyYXkuZnVsbEtleSk7XG4gICAgY29uc3QgbmV3UHJvcGVydHkgPSB0eXBlVG9OZXdQcm9wZXJ0eShcbiAgICAgIHRoaXMuc2NoZW1hcyEsXG4gICAgICBwcm9wLFxuICAgICAgcHJvcCxcbiAgICAgIHZhbHVlLFxuICAgICAgYCR7YXJyYXkuZnVsbEtleX1bJHthcnJheS5wcm9wZXJ0aWVzLmxlbmd0aH1dYFxuICAgICk7XG4gICAgYXJyYXkucHJvcGVydGllcy5wdXNoKG5ld1Byb3BlcnR5KTtcbiAgICB0aGlzLm5vZGVDaGFuZ2VkLmVtaXQoeyBrZXk6IGFycmF5LmZ1bGxLZXksIHZhbHVlIH0pO1xuICAgIHJldHVybiBncm91cENoYW5nZWQodGhpcy5wcm9wZXJ0aWVzLCBhcnJheS5mdWxsS2V5KTtcbiAgfVxuXG4gIHB1YmxpYyBkdXBsaWNhdGVBcnJheUdyb3VwKGFycmF5OiBJTm9kZVByb3BlcnR5LCBwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkge1xuICAgIGNvbnN0IGluZGV4ID0gK3Byb3BlcnR5LmtleTtcbiAgICBjb25zdCBuZXdQcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocHJvcGVydHkpKTtcbiAgICBuZXdQcm9wZXJ0eS5pZCA9IHByb3BlcnR5SWQoKTtcbiAgICBjb25zdCB2YWx1ZSA9IFsuLi5nZXQodGhpcy5ub2RlLCBhcnJheS5mdWxsS2V5KV07XG4gICAgdmFsdWUuc3BsaWNlKGluZGV4LCAwLCBzYWZlSlNPTlBhcnNlKG5ld1Byb3BlcnR5LnZhbHVlKSk7XG4gICAgYXJyYXkucHJvcGVydGllcy5zcGxpY2UoaW5kZXgsIDAsIG5ld1Byb3BlcnR5KTtcbiAgICAvLyBuZWVkIHRvIGNoYW5nZSBrZXkgb24gZXZlcnkgcHJvcGVydGllcyByZWN1cnNpdmVseVxuICAgIHJlZnJlc2hQcm9wZXJ0eUtleXMoYXJyYXkpO1xuICAgIHRoaXMubm9kZUNoYW5nZWQuZW1pdCh7IGtleTogYXJyYXkuZnVsbEtleSwgdmFsdWUgfSk7XG4gICAgcmV0dXJuIGdyb3VwQ2hhbmdlZCh0aGlzLnByb3BlcnRpZXMsIGFycmF5LmZ1bGxLZXkpO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZUFycmF5R3JvdXAoYXJyYXk6IElOb2RlUHJvcGVydHksIHsga2V5IH06IElOb2RlUHJvcGVydHkpIHtcbiAgICBjb25zdCBpbmRleCA9ICtrZXk7XG4gICAgY29uc3QgdmFsdWUgPSBbLi4uZ2V0KHRoaXMubm9kZSwgYXJyYXkuZnVsbEtleSldO1xuICAgIHZhbHVlLnNwbGljZShpbmRleCwgMSk7XG4gICAgYXJyYXkucHJvcGVydGllcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIC8vIG5lZWQgdG8gY2hhbmdlIGtleSBvbiBldmVyeSBwcm9wZXJ0aWVzIHJlY3Vyc2l2ZWx5XG4gICAgcmVmcmVzaFByb3BlcnR5S2V5cyhhcnJheSk7XG4gICAgdGhpcy5ub2RlQ2hhbmdlZC5lbWl0KHsga2V5OiBhcnJheS5mdWxsS2V5LCB2YWx1ZSB9KTtcbiAgICAvLyBpZiBubyBtb3JlIHZhbHVlcywgcmVtb3ZlIHBhcmVudCBncm91cCBlbnRpcmVseVxuICAgIHJldHVybiBhcnJheS5wcm9wZXJ0aWVzLmxlbmd0aCA/IG51bGwgOiB0aGlzLnByb3BlcnR5Q2hhbmdlZChudWxsLCBhcnJheSk7XG4gIH1cblxuICBwcml2YXRlIG1vdmVBcnJheUdyb3VwVG9Qb3NpdGlvbihhcnJheTogSU5vZGVQcm9wZXJ0eSwgY3VycmVudEluZGV4OiBudW1iZXIsIG5ld0luZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCB2YWx1ZSA9IFsuLi5nZXQodGhpcy5ub2RlLCBhcnJheS5mdWxsS2V5KV07XG4gICAgbW92ZUl0ZW1JbkFycmF5KHZhbHVlLCBjdXJyZW50SW5kZXgsIG5ld0luZGV4KTtcbiAgICBtb3ZlSXRlbUluQXJyYXkoYXJyYXkucHJvcGVydGllcywgY3VycmVudEluZGV4LCBuZXdJbmRleCk7XG4gICAgLy8gbmVlZCB0byBjaGFuZ2Uga2V5IG9uIGV2ZXJ5IHByb3BlcnRpZXMgcmVjdXJzaXZlbHlcbiAgICByZWZyZXNoUHJvcGVydHlLZXlzKGFycmF5KTtcbiAgICB0aGlzLm5vZGVDaGFuZ2VkLmVtaXQoeyBrZXk6IGFycmF5LmZ1bGxLZXksIHZhbHVlIH0pO1xuICAgIHJldHVybiBncm91cENoYW5nZWQodGhpcy5wcm9wZXJ0aWVzLCBhcnJheS5mdWxsS2V5KTtcbiAgfVxuXG4gIHB1YmxpYyBtb3ZlQXJyYXlHcm91cFVwKGFycmF5OiBJTm9kZVByb3BlcnR5LCB7IGtleSB9OiBJTm9kZVByb3BlcnR5KSB7XG4gICAgY29uc3QgaW5kZXggPSAra2V5O1xuICAgIHJldHVybiB0aGlzLm1vdmVBcnJheUdyb3VwVG9Qb3NpdGlvbihhcnJheSwgaW5kZXgsIGluZGV4IC0gMSk7XG4gIH1cblxuICBwdWJsaWMgbW92ZUFycmF5R3JvdXBEb3duKGFycmF5OiBJTm9kZVByb3BlcnR5LCB7IGtleSB9OiBJTm9kZVByb3BlcnR5KSB7XG4gICAgY29uc3QgaW5kZXggPSAra2V5O1xuICAgIHJldHVybiB0aGlzLm1vdmVBcnJheUdyb3VwVG9Qb3NpdGlvbihhcnJheSwgaW5kZXgsIGluZGV4ICsgMSk7XG4gIH1cblxuICBwdWJsaWMgcHJvcGVydHlDaGFuZ2VkKHZhbHVlOiBhbnksIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSB7XG4gICAgZ3JvdXBDaGFuZ2VkKHRoaXMucHJvcGVydGllcywgcHJvcGVydHkuZnVsbEtleSwgdmFsdWUpO1xuICAgIHByb3BlcnR5LmFkZFByb3BlcnR5RW5hYmxlZCA9IGlzQWRkUHJvcGVydHlFbmFibGVkKFxuICAgICAgdGhpcy5ub2RlISxcbiAgICAgIHByb3BlcnR5LnNjaGVtYVR5cGUsXG4gICAgICBwcm9wZXJ0eS5zY2hlbWEhLFxuICAgICAgcHJvcGVydHkuZnVsbEtleVxuICAgICk7XG5cbiAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHZhbHVlID0gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9wZXJ0eS52YWx1ZSA9IHZhbHVlO1xuICAgICAgcHJvcGVydHkuY2hhbmdlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3VmFsdWUgPSBjbGVhbk5ld1ZhbHVlKHBhcnNlTmV3VmFsdWUocHJvcGVydHkuc2NoZW1hISwgdmFsdWUpKTtcbiAgICAvLyB0cmlnZ2VyIHJlZnJlc2ggb2Ygbm9kZVxuICAgIGNvbnN0IG5vZGUgPSBjb3B5T2JqZWN0KHRoaXMubm9kZSk7XG4gICAgc2V0KG5vZGUsIHByb3BlcnR5LmZ1bGxLZXksIG5ld1ZhbHVlKTtcbiAgICB0aGlzLm5vZGUgPSBub2RlO1xuICAgIC8vIHRyaWdnZXIgZm9yIGxpc3RlbmVyc1xuICAgIHRoaXMubm9kZUNoYW5nZWQuZW1pdCh7IGtleTogcHJvcGVydHkuZnVsbEtleSwgdmFsdWU6IG5ld1ZhbHVlIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGREZWZhdWx0UHJvcGVydHkocHJvcGVydHk6IElOb2RlUHJvcGVydHksIGtleTogc3RyaW5nLCBkZWY6IGRlZmluaXRpb24pIHtcbiAgICBjb25zdCBub2RlID0gcHJvcGVydHkua2V5ID8gZ2V0KHRoaXMubm9kZSwgcHJvcGVydHkuZnVsbEtleSkgOiB0aGlzLm5vZGU7XG4gICAgY29uc3QgZnVsbEtleSA9IHByb3BlcnR5LmtleSA/IGAke3Byb3BlcnR5LmZ1bGxLZXl9LiR7a2V5fWAgOiBrZXk7XG4gICAgY29uc3QgcHJvcGVydGllcyA9IHByb3BlcnR5LmtleSA/IHByb3BlcnR5LnByb3BlcnRpZXMgOiB0aGlzLnByb3BlcnRpZXM7XG4gICAgY29uc3QgbmV3UHJvcGVydHkgPSB0eXBlVG9OZXdQcm9wZXJ0eSh0aGlzLnNjaGVtYXMhLCBkZWYsIHRoaXMuc2NoZW1hcyFbcHJvcGVydHkuc2NoZW1hVHlwZV0sIG5vZGUsIGZ1bGxLZXkpO1xuICAgIGluc2VydFByb3BlcnR5KHByb3BlcnRpZXMsIGZ1bGxLZXksIG5ld1Byb3BlcnR5KTtcbiAgICByZXR1cm4gdGhpcy5wcm9wZXJ0eUNoYW5nZWQobmV3UHJvcGVydHkudmFsdWUsIG5ld1Byb3BlcnR5KTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRNaXNzaW5nUHJvcGVydHkocHJvcGVydHk6IElOb2RlUHJvcGVydHkpIHtcbiAgICBjb25zdCBwYXJlbnQgPSBwYXJlbnRQcm9wZXJ0eSh0aGlzLnByb3BlcnRpZXMsIHByb3BlcnR5KTtcbiAgICBjb25zdCBuZXdQcm9wZXJ0eSA9IHBhcmVudCA9PT0gcHJvcGVydHkgPyB0aGlzLm5vZGVQcm9wZXJ0eSEgOiBwYXJlbnQ7XG4gICAgY29uc3QgbmV3UHJvcGVydGllcyA9IHRoaXMubmV3UHJvcGVydGllcyhuZXdQcm9wZXJ0eSwgcHJvcGVydHkua2V5KTtcbiAgICBuZXdQcm9wZXJ0eS5uZXdQcm9wZXJ0eSA9IG5ld1Byb3BlcnRpZXNbMF07XG4gICAgcmV0dXJuIG5ld1Byb3BlcnR5Lm5ld1Byb3BlcnR5ID8gdGhpcy5hZGRQcm9wZXJ0eShuZXdQcm9wZXJ0eSkgOiBudWxsO1xuICB9XG5cbiAgcHVibGljIGFkZFByb3BlcnR5KHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSB7XG4gICAgY29uc3QgeyBuYW1lLCBwcm9wIH0gPSBwcm9wZXJ0eS5uZXdQcm9wZXJ0eSE7XG4gICAgcHJvcGVydHkubmV3UHJvcGVydHkgPSB7fTtcbiAgICByZXR1cm4gbmFtZSA9PT0gJ0BpZCdcbiAgICAgID8gdGhpcy5yZXBsYWNlUHJvcGVydHlEYXRhKHByb3BlcnR5LCB7ICdAaWQnOiAnJywgdHlwZTogcHJvcGVydHkuc2NoZW1hVHlwZSB9LCB1bmRlZmluZWQsIGZhbHNlKVxuICAgICAgOiB0aGlzLmFkZERlZmF1bHRQcm9wZXJ0eShwcm9wZXJ0eSwgbmFtZSEsIHByb3AhKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUHJvcGVydHlDb29yZGluYXRlcyhwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSwgdmFsdWU6IGdvb2dsZS5tYXBzLkxhdExuZ0xpdGVyYWwpIHtcbiAgICBjb25zdCBsYXRpdHVkZSA9IHNpYmxpbmdQcm9wZXJ0eSh0aGlzLnByb3BlcnRpZXMsIHByb3BlcnR5LCAnbGF0aXR1ZGUnKTtcbiAgICBjb25zdCBsb25naXR1ZGUgPSBzaWJsaW5nUHJvcGVydHkodGhpcy5wcm9wZXJ0aWVzLCBwcm9wZXJ0eSwgJ2xvbmdpdHVkZScpO1xuICAgIHJldHVybiBbXG4gICAgICBsYXRpdHVkZSA/IHRoaXMucHJvcGVydHlDaGFuZ2VkKHZhbHVlLmxhdCwgbGF0aXR1ZGUpIDogbnVsbCxcbiAgICAgIGxvbmdpdHVkZSA/IHRoaXMucHJvcGVydHlDaGFuZ2VkKHZhbHVlLmxuZywgbG9uZ2l0dWRlKSA6IG51bGxcbiAgICBdO1xuICB9XG5cbiAgLy8gTWFwXG5cbiAgcHVibGljIGdldCBzaG93TWFwKCkge1xuICAgIHJldHVybiAoIXRoaXMuZWRpdGFibGUgfHwgdGhpcy5lcnJvck1vZGUpICYmIFtTY2hlbWFUeXBlLlNpdGUsIFNjaGVtYVR5cGUuT3JnYW5pc2F0aW9uXS5pbmNsdWRlcyh0aGlzLm5vZGUhLnR5cGUpO1xuICB9XG5cbiAgcHVibGljIG1hcERyYXdpbmdNb2Rlcyh7IGtleSB9OiBJTm9kZVByb3BlcnR5KSB7XG4gICAgcmV0dXJuIFsnYm91bmRhcnknXS5pbmNsdWRlcyhrZXkpID8gWydwb2x5Z29uJ10gOiBbJ2xhdGl0dWRlJywgJ2xvbmdpdHVkZSddLmluY2x1ZGVzKGtleSkgPyBbJ21hcmtlciddIDogW107XG4gIH1cblxuICBwdWJsaWMgb25NYXBEcmF3aW5nQ2xvc2VkKG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBjb25zdCBwcm9wZXJ0eSA9IHRoaXMubWFwRHJhd2luZ1Byb3BlcnR5O1xuICAgIHRoaXMubWFwRHJhd2luZ1Byb3BlcnR5ID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiBbJ2xhdGl0dWRlJywgJ2xvbmdpdHVkZSddLmluY2x1ZGVzKHByb3BlcnR5IS5rZXkpXG4gICAgICA/IHRoaXMudXBkYXRlUHJvcGVydHlDb29yZGluYXRlcyhwcm9wZXJ0eSEsIG5ld1ZhbHVlKVxuICAgICAgOiB0aGlzLnByb3BlcnR5Q2hhbmdlZChuZXdWYWx1ZSwgcHJvcGVydHkhKTtcbiAgfVxuXG4gIC8vIEJpYmxpb2dyYXBoeSBTZWFyY2hcblxuICBwdWJsaWMgYmlibGlvZ3JhcGhpZXNTZWFyY2hLZXkoeyBrZXksIHNjaGVtYVR5cGUgfTogSU5vZGVQcm9wZXJ0eSkge1xuICAgIGNvbnN0IHZhbGlkU2NoZW1hID0gW1NjaGVtYVR5cGUuQmlibGlvZ3JhcGh5XS5pbmNsdWRlcyhzY2hlbWFUeXBlKTtcbiAgICBjb25zdCB2YWxpZUtleSA9IFsndGl0bGUnLCAnZG9jdW1lbnRET0knLCAnc2NvcHVzJ10uaW5jbHVkZXMoa2V5KTtcbiAgICByZXR1cm4gdmFsaWRTY2hlbWEgJiYgdmFsaWVLZXkgPyBrZXkgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVCaWJsaW9ncmFwaHkodmFsdWU6IFBhcnRpYWw8QmlibGlvZ3JhcGh5Pikge1xuICAgIGNvbnN0IHBhcmVudCA9IHBhcmVudFByb3BlcnR5KHRoaXMucHJvcGVydGllcywgdGhpcy5iaWJsaW9ncmFwaGllc1NlYXJjaFByb3BlcnR5ISk7XG4gICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmJpYmxpb2dyYXBoaWVzU2VhcmNoU291cmNlc1xuICAgICAgPyB7XG4gICAgICAgICAgLi4ucGFyZW50LnZhbHVlLFxuICAgICAgICAgIGJpYmxpb2dyYXBoeTogdmFsdWVcbiAgICAgICAgfVxuICAgICAgOiB2YWx1ZTtcbiAgICB0aGlzLnJlcGxhY2VQcm9wZXJ0eURhdGEodGhpcy5iaWJsaW9ncmFwaGllc1NlYXJjaFByb3BlcnR5ISwgbmV3VmFsdWUsIHRydWUpO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVNvdXJjZSh2YWx1ZTogUGFydGlhbDxTb3VyY2U+KSB7XG4gICAgLy8gY2Fubm90IHJlcGxhY2UgYSB0b3AtbGV2ZWwgc291cmNlXG4gICAgdGhpcy5iaWJsaW9ncmFwaGllc1NlYXJjaFNvdXJjZXMgJiZcbiAgICAgIHRoaXMucmVwbGFjZVByb3BlcnR5RGF0YShcbiAgICAgICAgdGhpcy5iaWJsaW9ncmFwaGllc1NlYXJjaFByb3BlcnR5ISxcbiAgICAgICAge1xuICAgICAgICAgICdAdHlwZSc6IE5vZGVUeXBlLlNvdXJjZSxcbiAgICAgICAgICAuLi52YWx1ZVxuICAgICAgICB9LFxuICAgICAgICAhKCdAaWQnIGluIHZhbHVlKVxuICAgICAgKTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIGdldCBiaWJsaW9ncmFwaGllc1NlYXJjaFNvdXJjZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuYmlibGlvZ3JhcGhpZXNTZWFyY2hQcm9wZXJ0eSEuZnVsbEtleS5zcGxpdCgnLicpLmxlbmd0aCA+IDI7XG4gIH1cblxuICBwdWJsaWMgb25CaWJsaW9ncmFwaGllc1NlYXJjaENsb3NlZCh2YWx1ZT86IFBhcnRpYWw8U291cmNlPiB8IFBhcnRpYWw8QmlibGlvZ3JhcGh5Pikge1xuICAgIHRoaXMuYmlibGlvZ3JhcGhpZXNTZWFyY2hQcm9wZXJ0eSA9IHZhbHVlXG4gICAgICA/IHZhbHVlLnR5cGUgPT09IFNjaGVtYVR5cGUuQmlibGlvZ3JhcGh5XG4gICAgICAgID8gdGhpcy51cGRhdGVCaWJsaW9ncmFwaHkodmFsdWUpXG4gICAgICAgIDogdGhpcy51cGRhdGVTb3VyY2UodmFsdWUgYXMgUGFydGlhbDxTb3VyY2U+KVxuICAgICAgOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvLyBBY3Rvci5AaWRcblxuICBwdWJsaWMgYXN5bmMgc2V0VXNlckFjdG9ySWQocHJvcGVydHk6IElOb2RlUHJvcGVydHkpIHtcbiAgICBjb25zdCB7IGFjdG9ySWQsIG5hbWUgfSA9IGF3YWl0IHRoaXMudXNlcnNTZXJ2aWNlLmxvZ2dlZEluVXNlcjtcbiAgICByZXR1cm4gdGhpcy5yZXBsYWNlUHJvcGVydHlEYXRhKHByb3BlcnR5LCB7ICdAaWQnOiBhY3RvcklkLCAnQHR5cGUnOiBOb2RlVHlwZS5BY3RvciwgbmFtZSB9LCBmYWxzZSk7XG4gIH1cblxuICAvLyBDeWNsZS5jeWNsZUR1cmF0aW9uXG5cbiAgcHVibGljIGNhbGN1bGF0ZUN5Y2xlRHVyYXRpb25FbmFibGVkKHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSB7XG4gICAgcmV0dXJuIGNhbGN1bGF0ZUN5Y2xlRHVyYXRpb25FbmFibGVkKHRoaXMucHJvcGVydGllcywgcHJvcGVydHkpO1xuICB9XG5cbiAgcHVibGljIGNhbGN1bGF0ZUN5Y2xlRHVyYXRpb24ocHJvcGVydHk6IElOb2RlUHJvcGVydHkpIHtcbiAgICBjb25zdCBkdXJhdGlvbiA9IGNhbGN1bGF0ZUN5Y2xlRHVyYXRpb24odGhpcy5wcm9wZXJ0aWVzLCBwcm9wZXJ0eSk7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlDaGFuZ2VkKGR1cmF0aW9uLCBwcm9wZXJ0eSk7XG4gIH1cblxuICAvLyBDeWNsZS5zdGFydERhdGVcblxuICBwdWJsaWMgY2FsY3VsYXRlQ3ljbGVTdGFydERhdGVFbmFibGVkKHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSB7XG4gICAgcmV0dXJuIGNhbGN1bGF0ZUN5Y2xlU3RhcnREYXRlRW5hYmxlZCh0aGlzLnByb3BlcnRpZXMsIHByb3BlcnR5KTtcbiAgfVxuXG4gIHB1YmxpYyBjYWxjdWxhdGVDeWNsZVN0YXJ0RGF0ZShwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkge1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IGNhbGN1bGF0ZUN5Y2xlU3RhcnREYXRlKHRoaXMucHJvcGVydGllcywgcHJvcGVydHkpO1xuICAgIHJldHVybiB0aGlzLnByb3BlcnR5Q2hhbmdlZChzdGFydERhdGUsIHByb3BlcnR5KTtcbiAgfVxuXG4gIC8vIFVuaXRzIGNvbnZlcnRlclxuXG4gIHB1YmxpYyB1bml0Q29udmVydGVyRW5hYmxlZChwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkge1xuICAgIHJldHVybiB0aGlzLmVkaXRhYmxlICYmIHByb3BlcnR5LmVkaXRhYmxlICYmIFsndmFsdWUnLCAnbWluJywgJ21heCcsICdzZCddLmluY2x1ZGVzKHByb3BlcnR5LmtleSk7XG4gIH1cblxuICBwdWJsaWMgb3BlblVuaXRDb252ZXJ0ZXIocG9wb3ZlciwgcHJvcGVydHk6IElOb2RlUHJvcGVydHkpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHByb3BlcnR5LnZhbHVlO1xuICAgIGNvbnN0IHRlcm1Qcm9wZXJ0eSA9IHNpYmxpbmdQcm9wZXJ0eSh0aGlzLnByb3BlcnRpZXMsIHByb3BlcnR5LCAndGVybScpO1xuICAgIGNvbnN0IHRlcm0gPSBzYWZlSlNPTlBhcnNlKHRlcm1Qcm9wZXJ0eT8udmFsdWUpO1xuICAgIGNvbnN0IHVuaXRzID0gdGVybT8udW5pdHM7XG4gICAgcmV0dXJuIHBvcG92ZXIuaXNPcGVuKCkgPyBwb3BvdmVyLmNsb3NlKCkgOiBwb3BvdmVyLm9wZW4oeyB2YWx1ZSwgdGVybSwgdW5pdHMgfSk7XG4gIH1cblxuICAvLyBSZWNvbW1lbmRhdGlvbnNcblxuICBwdWJsaWMgb25TZWxlY3RSZWNvbW1lbmRhdGlvbihhcnJheTogSU5vZGVQcm9wZXJ0eSwgaWQ6IHN0cmluZykge1xuICAgIGNvbnN0IHByb3AgPSB0aGlzLnNjaGVtYXMhW2FycmF5LnNjaGVtYVR5cGVdO1xuICAgIGNvbnN0IHZhbHVlID0gZ2V0KHRoaXMubm9kZSwgYXJyYXkuZnVsbEtleSk7XG5cbiAgICBjb25zdCBuZXdQcm9wZXJ0eSA9IHR5cGVUb05ld1Byb3BlcnR5KFxuICAgICAgdGhpcy5zY2hlbWFzISxcbiAgICAgIHByb3AsXG4gICAgICBwcm9wLFxuICAgICAgdmFsdWUsXG4gICAgICBgJHthcnJheS5mdWxsS2V5fVske2FycmF5LnByb3BlcnRpZXMubGVuZ3RofV1gXG4gICAgKTtcbiAgICBuZXdQcm9wZXJ0eS52YWx1ZS50ZXJtID0geyB0eXBlOiBOb2RlVHlwZS5UZXJtLCAnQGlkJzogaWQgfTtcbiAgICB2YWx1ZVthcnJheS5wcm9wZXJ0aWVzLmxlbmd0aF0udGVybSA9IHsgdHlwZTogTm9kZVR5cGUuVGVybSwgJ0BpZCc6IGlkIH07XG5cbiAgICAvLyBpbnNlcnQgVGVybSB3aXRoIEBpZFxuICAgIGNvbnN0IHRlcm1LZXkgPSBgJHtuZXdQcm9wZXJ0eS5mdWxsS2V5fS50ZXJtYDtcbiAgICBjb25zdCB0ZXJtUHJvcGVydHkgPVxuICAgICAgbmV3UHJvcGVydHkucHJvcGVydGllcy5maW5kKHAgPT4gcC5rZXkgPT09ICd0ZXJtJykgfHxcbiAgICAgIHR5cGVUb05ld1Byb3BlcnR5KHRoaXMuc2NoZW1hcyEsIHByb3AucHJvcGVydGllcy50ZXJtLCBwcm9wLCBuZXdQcm9wZXJ0eS52YWx1ZSwgdGVybUtleSk7XG4gICAgdGVybVByb3BlcnR5LnZhbHVlID0geyB0eXBlOiBOb2RlVHlwZS5UZXJtLCAnQGlkJzogaWQgfTtcbiAgICB0ZXJtUHJvcGVydHkucHJvcGVydGllcyA9IHJlY3Vyc2l2ZVByb3BlcnRpZXMoXG4gICAgICB0aGlzLnNjaGVtYXMhLFxuICAgICAgW10sXG4gICAgICB0aGlzLnNjaGVtYXMhW3RoaXMubm9kZSEudHlwZV0sXG4gICAgICB0aGlzLmRlZXBFZGl0YWJsZSxcbiAgICAgIHRlcm1LZXlcbiAgICApKHsgdHlwZTogTm9kZVR5cGUuVGVybSwgJ0BpZCc6IGlkIH0pO1xuICAgIGluc2VydFByb3BlcnR5KG5ld1Byb3BlcnR5LnByb3BlcnRpZXMsIHRlcm1LZXksIHRlcm1Qcm9wZXJ0eSk7XG5cbiAgICAvLyB0ZXJtIGNhbm5vdCBiZSBlZGl0ZWQsIG5lZWQgdG8gcmVtb3ZlIGZpcnN0XG4gICAgdXBkYXRlUHJvcGVydGllcyh0ZXJtUHJvcGVydHksIHAgPT4ge1xuICAgICAgcC5lZGl0YWJsZSA9IGZhbHNlO1xuICAgICAgcmV0dXJuIHA7XG4gICAgfSk7XG4gICAgdGVybVByb3BlcnR5LmVkaXRhYmxlID0gZmFsc2U7XG5cbiAgICBhcnJheS5wcm9wZXJ0aWVzLnB1c2gobmV3UHJvcGVydHkpO1xuICAgIHJldHVybiB0aGlzLnByb3BlcnR5Q2hhbmdlZCh2YWx1ZSwgYXJyYXkpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY2FyZFwiPlxuICA8ZGl2IGNsYXNzPVwiY2FyZC10b2dnbGUgcC00XCIgKGNsaWNrKT1cImlzT3BlbiA9ICFpc09wZW5cIiBwb2ludGVyPlxuICAgIDxmYS1pY29uIGljb249XCJhbmdsZS1kb3duXCIgW2NsYXNzLmlzLWhpZGRlbl09XCIhaXNPcGVuXCI+PC9mYS1pY29uPlxuICAgIDxmYS1pY29uIGljb249XCJhbmdsZS1yaWdodFwiIFtjbGFzcy5pcy1oaWRkZW5dPVwiaXNPcGVuXCI+PC9mYS1pY29uPlxuICAgIDxzcGFuXG4gICAgICAqbmdJZj1cIm5vZGVQcm9wZXJ0eVwiXG4gICAgICBjbGFzcz1cImlzLXB4LTJcIlxuICAgICAgW2NsYXNzLmhhcy10ZXh0LWRhbmdlcl09XCJub2RlUHJvcGVydHkuaGFzRXJyb3JcIlxuICAgICAgW2NsYXNzLmhhcy10ZXh0LXdhcm5pbmddPVwibm9kZVByb3BlcnR5Lmhhc1dhcm5pbmdcIj5cbiAgICAgIDxoZS1ub2RlLWljb24gW3R5cGVdPVwibm9kZVByb3BlcnR5LnNjaGVtYVR5cGVcIj48L2hlLW5vZGUtaWNvbj5cbiAgICA8L3NwYW4+XG4gIDwvZGl2PlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJlZGl0YWJsZSAmJiBpc09wZW4gJiYgbm9kZVByb3BlcnR5XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNob3dOZXdQcm9wZXJ0eTsgY29udGV4dDogeyAkaW1wbGljaXQ6IG5vZGVQcm9wZXJ0eSB9XCI+PC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxkaXYgY2xhc3M9XCJjYXJkLWNvbnRlbnRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNPcGVuXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicGItMyBtYi0yXCIgKm5nSWY9XCJlcnJvcnNFZGl0YWJsZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibm9kZUVycm9yRm9ybTsgY29udGV4dDogeyAkaW1wbGljaXQ6IG5vZGVQcm9wZXJ0eSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cInB5LTQgcGwtNFwiICpuZ0lmPVwibm9kZVByb3BlcnR5Py5lcnJvclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJvcGVydHlFcnJvcjsgY29udGV4dDogeyBwcm9wZXJ0eTogbm9kZVByb3BlcnR5LCBlZGl0OiB0cnVlIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbnMgaXMtbXVsdGlsaW5lXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzOyB0cmFja0J5OiB0cmFja0J5UHJvcGVydHlcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNob3dQcm9wZXJ0eTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHByb3BlcnR5IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzT3BlblwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByb3BlcnR5TWFwOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogbm9kZVByb3BlcnR5IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+XG5cbjxoZS1tYXBzLWRyYXdpbmctY29uZmlybVxuICAqbmdJZj1cIiEhbWFwRHJhd2luZ1Byb3BlcnR5XCJcbiAgW3ZhbHVlXT1cIm1hcERyYXdpbmdQcm9wZXJ0eS52YWx1ZVwiXG4gIFttb2Rlc109XCJtYXBEcmF3aW5nTW9kZXMobWFwRHJhd2luZ1Byb3BlcnR5KVwiXG4gIChjbG9zZWQpPVwib25NYXBEcmF3aW5nQ2xvc2VkKCRldmVudClcIj48L2hlLW1hcHMtZHJhd2luZy1jb25maXJtPlxuXG48aGUtYmlibGlvZ3JhcGhpZXMtc2VhcmNoLWNvbmZpcm1cbiAgKm5nSWY9XCIhIWJpYmxpb2dyYXBoaWVzU2VhcmNoUHJvcGVydHlcIlxuICBbc2VhcmNoXT1cImJpYmxpb2dyYXBoaWVzU2VhcmNoUHJvcGVydHkudmFsdWVcIlxuICBbc2VhcmNoQnldPVwiYmlibGlvZ3JhcGhpZXNTZWFyY2hLZXkoYmlibGlvZ3JhcGhpZXNTZWFyY2hQcm9wZXJ0eSlcIlxuICBbc2VhcmNoU291cmNlc109XCJiaWJsaW9ncmFwaGllc1NlYXJjaFNvdXJjZXNcIlxuICAoY2xvc2VkKT1cIm9uQmlibGlvZ3JhcGhpZXNTZWFyY2hDbG9zZWQoJGV2ZW50KVwiPjwvaGUtYmlibGlvZ3JhcGhpZXMtc2VhcmNoLWNvbmZpcm0+XG5cbjxuZy10ZW1wbGF0ZSAjbGFiZWxEZXNjcmlwdGlvbiBsZXQtcHJvcGVydHk+XG4gIDxzcGFuIGNsYXNzPVwicHJvcGVydHkta2V5XCIgW25nYlRvb2x0aXBdPVwicHJvcGVydHkua2V5XCIgcGxhY2VtZW50PVwicmlnaHRcIj5cbiAgICA8c3BhbiBjbGFzcz1cImlzLWlubGluZS1ibG9jayBpcy1hbGlnbi1taWRkbGUgaXMtbm93cmFwIGhhcy10ZXh0LWVsbGlwc2lzXCI+e3sgcHJvcGVydHkua2V5IH19PC9zcGFuPlxuICAgIDxoZS1zY2hlbWEtaW5mb1xuICAgICAgY2xhc3M9XCJpcy1pbmxpbmUtYmxvY2sgaXMtcGwtMSBpcy1hbGlnbi1taWRkbGVcIlxuICAgICAgKm5nSWY9XCJwcm9wZXJ0eS5zY2hlbWE/LmRlc2NyaXB0aW9uXCJcbiAgICAgIHRyaWdnZXJzPVwiY2xpY2tcIlxuICAgICAgW2NvbnRlbnRdPVwicHJvcGVydHkuc2NoZW1hLmRlc2NyaXB0aW9uXCI+PC9oZS1zY2hlbWEtaW5mbz5cbiAgPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNsYWJlbERlZmF1bHQgbGV0LXByb3BlcnR5PlxuICA8c3Bhbj57eyBwcm9wZXJ0eS5rZXkgfX08L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3Nob3dQcm9wZXJ0eSBsZXQtcHJvcGVydHk+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIoaXNPcGVuIHx8IHByb3BlcnR5LmNsb3NlZFZpc2libGUpICYmICFwcm9wZXJ0eS5pc0hpZGRlblwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiY29sdW1uIGlzLTZcIlxuICAgICAgW2lkXT1cInByb3BlcnR5LmZ1bGxLZXkgKyAnXycgKyBwcm9wZXJ0eS5pZFwiXG4gICAgICBbY2xhc3MuaXMtMTJdPVwicHJvcGVydHkucHJvcGVydGllcy5sZW5ndGggfHwgIXByb3BlcnR5LmtleVwiXG4gICAgICBbbmdTd2l0Y2hdPVwiISFwcm9wZXJ0eS5wcm9wZXJ0aWVzLmxlbmd0aFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbnMgaXMtbXVsdGlsaW5lIGlzLXZhcmlhYmxlIGlzLTFcIiAqbmdTd2l0Y2hDYXNlPVwiZmFsc2VcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqYmluZE9uY2U9XCJwcm9wZXJ0eVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gaXMtMyBweS0xXCIgKm5nSWY9XCJwcm9wZXJ0eS5rZXlcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImxhYmVsIGhhcy10ZXh0LXJpZ2h0LXRhYmxldCBoYXMtdGV4dC1lbGxpcHNpc1wiIFtmb3JdPVwicHJvcGVydHkuaWRcIiBbdGl0bGVdPVwicHJvcGVydHkua2V5XCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgcHJvcGVydHkuc2NoZW1hPy5kZXNjcmlwdGlvbiAmJiBlZGl0YWJsZSAmJiBwcm9wZXJ0eS5lZGl0YWJsZSA/IGxhYmVsRGVzY3JpcHRpb24gOiBsYWJlbERlZmF1bHQ7XG4gICAgICAgICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogcHJvcGVydHkgfVxuICAgICAgICAgICAgICAgIFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbiBpcy05IHB5LTFcIiBbY2xhc3MuaXMtMTJdPVwiIXByb3BlcnR5LmtleVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0Rm9ybTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHByb3BlcnR5IH1cIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByb3BlcnR5Lmhhc0Vycm9yIHx8IHByb3BlcnR5Lmhhc1dhcm5pbmdcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJvcGVydHlFcnJvcjsgY29udGV4dDogeyBwcm9wZXJ0eTogcHJvcGVydHksIGVkaXQ6IGZhbHNlIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicGFuZWxcIlxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwidHJ1ZVwiXG4gICAgICAgIFtjbGFzcy5pcy1zZWNvbmRhcnldPVwiZXJyb3JNb2RlICYmIHByb3BlcnR5LmNoYW5nZWRcIlxuICAgICAgICBbY2xhc3MuaXMtZGFuZ2VyXT1cIiFwcm9wZXJ0eS5jaGFuZ2VkICYmIHByb3BlcnR5Lmhhc0Vycm9yXCJcbiAgICAgICAgW2NsYXNzLmlzLXdhcm5pbmddPVwiIXByb3BlcnR5LmNoYW5nZWQgJiYgcHJvcGVydHkuaGFzV2FybmluZ1wiXG4gICAgICAgIFtjbGFzcy5pcy1kZWZhdWx0XT1cIiFwcm9wZXJ0eS5jaGFuZ2VkICYmICFwcm9wZXJ0eS5oYXNFcnJvciAmJiAhcHJvcGVydHkuaGFzV2FybmluZ1wiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJvcGVuLWdyb3VwIHBhbmVsLWhlYWRpbmcgcHktMFwiXG4gICAgICAgICAgKGNsaWNrKT1cInByb3BlcnR5LmlzT3BlbiA9ICFwcm9wZXJ0eS5pc09wZW5cIlxuICAgICAgICAgIHBvaW50ZXJcbiAgICAgICAgICBbY2xhc3MuaXMtb3Blbl09XCJwcm9wZXJ0eS5pc09wZW5cIlxuICAgICAgICAgIFtjbGFzcy5oYXMtdGV4dC13aGl0ZV09XCIoZXJyb3JNb2RlICYmIHByb3BlcnR5LmNoYW5nZWQpIHx8IHByb3BlcnR5Lmhhc0Vycm9yIHx8IHByb3BlcnR5Lmhhc1dhcm5pbmdcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1ucyBpcy1tb2JpbGUgaXMtdmNlbnRlcmVkIGlzLW11bHRpbGluZVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb2x1bW4gaXMtbmFycm93IHB5LTEgbXktMFwiPlxuICAgICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwiYW5nbGUtZG93blwiIFtjbGFzcy5pcy1oaWRkZW5dPVwiIXByb3BlcnR5LmlzT3BlblwiPjwvZmEtaWNvbj5cbiAgICAgICAgICAgICAgPGZhLWljb24gaWNvbj1cImFuZ2xlLXJpZ2h0XCIgW2NsYXNzLmlzLWhpZGRlbl09XCJwcm9wZXJ0eS5pc09wZW5cIj48L2ZhLWljb24+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbHVtbiBweS0xIG15LTBcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpcy1zaXplLTZcIj57eyBwcm9wZXJ0eS5rZXkgfX08L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInByb3BlcnR5LnNjaGVtYVR5cGVcIiBjbGFzcz1cImNvbHVtbiBpcy1uYXJyb3cgcHktMSBteS0wXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFncyBtYi0wIGhhcy1hZGRvbnNcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRhZyBtYi0wIGlzLWxpZ2h0XCI+VHlwZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRhZyBtYi0wIGlzLXdoaXRlXCI+XG4gICAgICAgICAgICAgICAgICA8aGUtc2NoZW1hLXZlcnNpb24tbGluayBsaW5rQ2xhc3M9XCJpcy1zbWFsbFwiIFtub2RlXT1cInsgJ0B0eXBlJzogcHJvcGVydHkuc2NoZW1hVHlwZSB9XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHByb3BlcnR5LnNjaGVtYVR5cGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2hlLXNjaGVtYS12ZXJzaW9uLWxpbms+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8aGUtcG9wb3Zlci1jb25maXJtXG4gICAgICAgICAgICAgIGNsYXNzPVwiY29sdW1uIGlzLW5hcnJvdyBweS0xIG15LTAgcHgtMFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiZWRpdGFibGUgJiYgIWVycm9yc0VkaXRhYmxlXCJcbiAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cIlJlbW92ZSBncm91cFwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgICAgICAgIFttZXNzYWdlXT1cIlxuICAgICAgICAgICAgICAgICc8cD5UaGlzIHdpbGwgcmVtb3ZlIHRoZSBncm91cCBjb21wbGV0ZWx5LjwvcD4nICtcbiAgICAgICAgICAgICAgICAocHJvcGVydHkuaXNSZXF1aXJlZCA/ICc8cD48dT5XYXJuaW5nOiB0aGlzIGZpZWxkIGlzIHJlcXVpcmVkLjwvdT48L3A+JyA6ICcnKSArXG4gICAgICAgICAgICAgICAgJzxwPkRvIHlvdSBjb25maXJtPzwvcD4nXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIHBvcG92ZXJDbGFzcz1cInB4LTNcIlxuICAgICAgICAgICAgICAoY29uZmlybWVkKT1cInByb3BlcnR5Q2hhbmdlZChudWxsLCBwcm9wZXJ0eSlcIj5cbiAgICAgICAgICAgICAgPGZhLWljb24gaWNvbj1cInRpbWVzXCIgc2l6ZT1cInNtXCI+PC9mYS1pY29uPlxuICAgICAgICAgICAgPC9oZS1wb3BvdmVyLWNvbmZpcm0+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicGFuZWwtYmxvY2sgaXMtYmxvY2sgcC0wXCIgKm5nSWY9XCJwcm9wZXJ0eS5pc09wZW5cIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJwcm9wZXJ0eS5pc0FycmF5XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMyBwdC00XCIgKm5nSWY9XCJwcm9wZXJ0eS5lcnJvclwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcm9wZXJ0eUVycm9yOyBjb250ZXh0OiB7IHByb3BlcnR5OiBwcm9wZXJ0eSwgZWRpdDogdHJ1ZSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIiAqbmdTd2l0Y2hDYXNlPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJoZWxwIHB5LTEgcHgtMlwiICpuZ0lmPVwiZWRpdGFibGUgJiYgIXByb3BlcnR5LmVkaXRhYmxlXCI+XG4gICAgICAgICAgICAgICAgVG8gY2hhbmdlIHRoZSB7eyBwcm9wZXJ0eS5rZXkgfX0sIHBsZWFzZSBkZWxldGUgaXQgZmlyc3QsIHRoZW4gYWRkIHRoZSBmaWVsZCBhZ2FpblxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlZGl0YWJsZSAmJiBwcm9wZXJ0eS5lZGl0YWJsZVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInByb3BlcnR5LnNjaGVtYT8udGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiaGVscCBweS0xIHB4LTJcIiAqbmdTd2l0Y2hDYXNlPVwiJ0JpYmxpb2dyYXBoeSdcIj5cbiAgICAgICAgICAgICAgICAgICAgU2VhcmNoIGJ5IFRpdGxlIG9yIERvY3VtZW50IERPSSB0byBhdXRvLXBvcHVsYXRlIHRoZSBmaWVsZHMgdXNpbmcgdGhlIE1lbmRlbGV5IGNhdGFsb2d1ZVxuICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2hvd05ld1Byb3BlcnR5OyBjb250ZXh0OiB7ICRpbXBsaWNpdDogcHJvcGVydHkgfVwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0zIG10LTFcIiAqbmdJZj1cImVycm9yc0VkaXRhYmxlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm5vZGVFcnJvckZvcm07IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBwcm9wZXJ0eSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9wZXJ0eS1ncm91cCBweS0yIHB4LTMgbXQtMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5zIGlzLW11bHRpbGluZSBtYi0wXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwcm9wMiBvZiBwcm9wZXJ0eS5wcm9wZXJ0aWVzOyB0cmFja0J5OiB0cmFja0J5UHJvcGVydHlcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNob3dQcm9wZXJ0eTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHByb3AyIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktMiBweC0zIG10LTJcIiAqbmdTd2l0Y2hDYXNlPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMVwiICpuZ0lmPVwiZXJyb3JzRWRpdGFibGVcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibm9kZUVycm9yRm9ybTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHByb3BlcnR5IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcHJvcDIgb2YgcHJvcGVydHkucHJvcGVydGllczsgdHJhY2tCeTogdHJhY2tCeVByb3BlcnR5XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgcC0wIG15LTRcIiAqbmdJZj1cInByb3AyLmtleVwiIFtpZF09XCJwcm9wMi5mdWxsS2V5ICsgJ18nICsgcHJvcDIuaWRcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9wZXJ0eS1hcnJheS1udW1iZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhZ3MgaGFzLWFkZG9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFnIGlzLWRhcmtcIj57eyBwcm9wMi5rZXkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVkaXRhYmxlICYmICFlcnJvcnNFZGl0YWJsZSAmJiBwcm9wZXJ0eS5lZGl0YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWcgaXMtaW5mb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImR1cGxpY2F0ZUFycmF5R3JvdXAocHJvcGVydHksIHByb3AyKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cIidEdXBsaWNhdGUgJyArIHByb3BlcnR5LmtleSB8IHBsdXJhbGl6ZTogMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInRvcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwiY2xvbmVcIiBzaXplPVwic21cIj48L2ZhLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRhZyBpcy1saWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwcm9wMi5rZXkgIT09ICcwJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlQXJyYXlHcm91cFVwKHByb3BlcnR5LCBwcm9wMilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiTW92ZSBVcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInRvcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwibG9uZy1hcnJvdy1hbHQtdXBcIiBzaXplPVwic21cIj48L2ZhLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRhZyBpcy1saWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwcm9wMi5rZXkgIT09IHByb3BlcnR5LnByb3BlcnRpZXMubGVuZ3RoIC0gMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlQXJyYXlHcm91cERvd24ocHJvcGVydHksIHByb3AyKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJNb3ZlIERvd25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJ0b3BcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGZhLWljb24gaWNvbj1cImxvbmctYXJyb3ctYWx0LWRvd25cIiBzaXplPVwic21cIj48L2ZhLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aGUtcG9wb3Zlci1jb25maXJtXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGFnIGlzLWRlbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cIidSZW1vdmUgJyArIHByb3BlcnR5LmtleSB8IHBsdXJhbGl6ZTogMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9XCJUaGlzIHdpbGwgcmVtb3ZlIHRoZSBncm91cCBjb21wbGV0ZWx5LiBEbyB5b3UgY29uZmlybT9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbj1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmZpcm1lZCk9XCJyZW1vdmVBcnJheUdyb3VwKHByb3BlcnR5LCBwcm9wMilcIj48L2hlLXBvcG92ZXItY29uZmlybT5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNob3dOZXdQcm9wZXJ0eTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHByb3AyIH1cIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTQgbXQtMlwiICpuZ0lmPVwiZXJyb3JzRWRpdGFibGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm5vZGVFcnJvckZvcm07IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBwcm9wMiB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTQgbXQtMlwiICpuZ0lmPVwicHJvcDIuZXJyb3JcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJvcGVydHlFcnJvcjsgY29udGV4dDogeyBwcm9wZXJ0eTogcHJvcDIsIGVkaXQ6IHRydWUgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9wZXJ0eS1ncm91cCBjYXJkLWNvbnRlbnQgcC0zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5zIGlzLW11bHRpbGluZSBteS0wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcHJvcDMgb2YgcHJvcDIucHJvcGVydGllczsgdHJhY2tCeTogdHJhY2tCeVByb3BlcnR5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2hvd1Byb3BlcnR5OyBjb250ZXh0OiB7ICRpbXBsaWNpdDogcHJvcDMgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWRpdGFibGUgJiYgIWVycm9yc0VkaXRhYmxlICYmIHByb3BlcnR5LmVkaXRhYmxlXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBpcy1pbmZvIGlzLXNtYWxsXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJhZGRBcnJheUdyb3VwKHByb3BlcnR5KVwiPlxuICAgICAgICAgICAgICAgICAgPGZhLWljb24gaWNvbj1cInBsdXMtY2lyY2xlXCI+PC9mYS1pY29uPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwbC0yXCI+QWRkPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwbC0xXCI+e3sgcHJvcGVydHkua2V5IHwgcGx1cmFsaXplOiAxIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgPGhlLW5vZGUtcmVjb21tZW5kYXRpb25zXG4gICAgICAgICAgICAgICAgICBidXR0b25DbGFzcz1cImlzLXNtYWxsXCJcbiAgICAgICAgICAgICAgICAgIFtub2RlXT1cIm5vZGVcIlxuICAgICAgICAgICAgICAgICAgW25vZGVGaWVsZF09XCJwcm9wZXJ0eS5rZXlcIlxuICAgICAgICAgICAgICAgICAgKHNlbGVjdFJlY29tbWVuZGF0aW9uKT1cIm9uU2VsZWN0UmVjb21tZW5kYXRpb24ocHJvcGVydHksICRldmVudClcIj48L2hlLW5vZGUtcmVjb21tZW5kYXRpb25zPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaW5wdXRGb3JtIGxldC1wcm9wZXJ0eT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByb3BlcnR5LmtleVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlZGl0YWJsZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwicHJvcGVydHkuc3VnZ2VzdGlvbnM/LnR5cGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3NlbGVjdCdcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXRTZWxlY3Q7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBwcm9wZXJ0eSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0SW5wdXQ7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBwcm9wZXJ0eSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFlZGl0YWJsZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0SW5wdXQ7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBwcm9wZXJ0eSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpbnB1dElucHV0IGxldC1wcm9wZXJ0eT5cbiAgPGRpdiBjbGFzcz1cImZpZWxkIG1iLTBcIiBbY2xhc3MuaGFzLWFkZG9uc109XCJoYXNBZGRvbnMocHJvcGVydHkpXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRyb2wgaXMtZXhwYW5kZWRcIiBbY2xhc3MuaGFzLWljb25zLXJpZ2h0XT1cInByb3BlcnR5LmxvYWRpbmdcIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICBjbGFzcz1cImlucHV0IGlzLXNtYWxsIHNlYXJjaC1pbnB1dFwiXG4gICAgICAgIFtjbGFzcy5pcy1kYXJrXT1cInByb3BlcnR5LmtleSA9PT0gJ3R5cGUnXCJcbiAgICAgICAgW2NsYXNzLmlzLXNlY29uZGFyeV09XCJlcnJvck1vZGUgJiYgcHJvcGVydHkuY2hhbmdlZFwiXG4gICAgICAgIFtjbGFzcy5pcy1kYW5nZXJdPVwiKCFwcm9wZXJ0eS5jaGFuZ2VkICYmIHByb3BlcnR5Lmhhc0Vycm9yKSB8fCBpc1JlcXVpcmVkKHByb3BlcnR5KVwiXG4gICAgICAgIFtjbGFzcy5pcy13YXJuaW5nXT1cIiFwcm9wZXJ0eS5jaGFuZ2VkICYmIHByb3BlcnR5Lmhhc1dhcm5pbmdcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cInByb3BlcnR5LnZhbHVlXCJcbiAgICAgICAgI3Byb3BlcnR5TW9kZWw9XCJuZ01vZGVsXCJcbiAgICAgICAgW3R5cGVdPVwicHJvcGVydHkuc2NoZW1hPy50eXBlID09PSAnbnVtYmVyJyA/ICdudW1iZXInIDogJ3N0cmluZydcIlxuICAgICAgICBbaWRdPVwicHJvcGVydHkuaWRcIlxuICAgICAgICBuYW1lPVwicmFuZG9tbmFtZVwiXG4gICAgICAgIFtyZWFkb25seV09XCIhZWRpdGFibGUgfHwgIXByb3BlcnR5LmVkaXRhYmxlIHx8IHByb3BlcnR5LnNjaGVtYT8uaW50ZXJuYWxcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicHJvcGVydHkucGxhY2Vob2xkZXJcIlxuICAgICAgICBbYXBwVGFnc0lucHV0XT1cIntcbiAgICAgICAgICBlbmFibGVkOiBlZGl0YWJsZSAmJiBwcm9wZXJ0eS5lZGl0YWJsZSAmJiBwcm9wZXJ0eS5zY2hlbWE/LnR5cGUgPT09ICdhcnJheScsXG4gICAgICAgICAgaXRlbXM6IHByb3BlcnR5LnNjaGVtYT8uaXRlbXMsXG4gICAgICAgICAgZGVsaW1pdGVyOiAnOycsXG4gICAgICAgICAgYWxsb3dEdXBsaWNhdGVzOiB0cnVlLFxuICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wZXJ0eS5wbGFjZWhvbGRlclxuICAgICAgICB9XCJcbiAgICAgICAgKGNoYW5nZSk9XCJwcm9wZXJ0eUNoYW5nZWQoJGV2ZW50LnRhcmdldC52YWx1ZSwgcHJvcGVydHkpXCJcbiAgICAgICAgW3BhdHRlcm5dPVwicHJvcGVydHkuc2NoZW1hPy5wYXR0ZXJuXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cInByb3BlcnR5LmZ1bGxLZXkuZW5kc1dpdGgoJ2lkJykgJiYgcHJvcGVydHkuZnVsbEtleSAhPT0gJ2lkJ1wiXG4gICAgICAgIFttaW5dPVwicHJvcGVydHkuc2NoZW1hPy5taW5pbXVtXCJcbiAgICAgICAgW21heF09XCJwcm9wZXJ0eS5zY2hlbWE/Lm1heGltdW1cIlxuICAgICAgICBbbmdiVHlwZWFoZWFkXT1cInByb3BlcnR5IHwgYXBwbHlQdXJlOiBwcm9wZXJ0eVN1Z2dlc3RcIlxuICAgICAgICBbcmVzdWx0VGVtcGxhdGVdPVwic3VnZ2VzdGlvblwiXG4gICAgICAgIFtpbnB1dEZvcm1hdHRlcl09XCJwcm9wZXJ0eS5mb3JtYXR0ZXJcIlxuICAgICAgICBbZm9jdXNGaXJzdF09XCJ0cnVlXCJcbiAgICAgICAgKGZvY3VzKT1cImVkaXRhYmxlICYmIHByb3BlcnR5LmVkaXRhYmxlICYmIHR5cGVhaGVhZEZvY3VzKCRldmVudClcIlxuICAgICAgICAoc2VsZWN0SXRlbSk9XCJzdWdnZXN0aW9uU2VsZWN0ZWQoJGV2ZW50Lml0ZW0sIHByb3BlcnR5KVwiIC8+XG5cbiAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbiBpcy1zbWFsbCBpcy1yaWdodCBoYXMtdGV4dC1ncmV5LWRhcmtcIiBbY2xhc3MuaXMtaGlkZGVuXT1cIiFwcm9wZXJ0eS5sb2FkaW5nXCI+XG4gICAgICAgIDxmYS1pY29uIGljb249XCJzcGlubmVyXCIgW3B1bHNlXT1cInRydWVcIiBzaXplPVwic21cIj48L2ZhLWljb24+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0QWRkb25zOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogcHJvcGVydHkgfVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgPHAgY2xhc3M9XCJoZWxwIGlzLWRhbmdlci1saWdodFwiICpuZ0lmPVwiIXByb3BlcnR5Lmhhc0Vycm9yICYmIHByb3BlcnR5TW9kZWwuaW52YWxpZFwiPlxuICAgIDxzcGFuICpiaW5kT25jZT1cInByb3BlcnR5TW9kZWwuZXJyb3JzXCIgW2lubmVySFRNTF09XCJmb3JtYXRQcm9wZXJ0eUVycm9yKHByb3BlcnR5TW9kZWwuZXJyb3JzLCBwcm9wZXJ0eSlcIj48L3NwYW4+XG4gIDwvcD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaW5wdXRTZWxlY3QgbGV0LXByb3BlcnR5PlxuICA8ZGl2IGNsYXNzPVwiZmllbGQgbWItMFwiIFtjbGFzcy5oYXMtYWRkb25zXT1cImhhc0FkZG9ucyhwcm9wZXJ0eSlcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udHJvbCBpcy1leHBhbmRlZFwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInNlbGVjdCBpcy1zbWFsbCBpcy1mdWxsd2lkdGhcIlxuICAgICAgICBbY2xhc3MuaXMtc2Vjb25kYXJ5XT1cImVycm9yTW9kZSAmJiBwcm9wZXJ0eS5jaGFuZ2VkXCJcbiAgICAgICAgW2NsYXNzLmlzLWRhbmdlcl09XCIoIXByb3BlcnR5LmNoYW5nZWQgJiYgcHJvcGVydHkuaGFzRXJyb3IpIHx8IGlzUmVxdWlyZWQocHJvcGVydHkpXCJcbiAgICAgICAgW2NsYXNzLmlzLXdhcm5pbmddPVwiIXByb3BlcnR5LmNoYW5nZWQgJiYgcHJvcGVydHkuaGFzV2FybmluZ1wiPlxuICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJwcm9wZXJ0eS52YWx1ZVwiXG4gICAgICAgICAgI3Byb3BlcnR5TW9kZWw9XCJuZ01vZGVsXCJcbiAgICAgICAgICBbaWRdPVwicHJvcGVydHkuaWRcIlxuICAgICAgICAgIG5hbWU9XCJyYW5kb21uYW1lXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWVkaXRhYmxlIHx8ICFwcm9wZXJ0eS5lZGl0YWJsZSB8fCBwcm9wZXJ0eS5zY2hlbWE/LmludGVybmFsXCJcbiAgICAgICAgICAoY2hhbmdlKT1cInByb3BlcnR5Q2hhbmdlZCgkZXZlbnQudGFyZ2V0LnZhbHVlLCBwcm9wZXJ0eSlcIj5cbiAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+U2VsZWN0PC9vcHRpb24+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqYmluZE9uY2U9XCJwcm9wZXJ0eS5zdWdnZXN0aW9uc1wiPlxuICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgdmFsdWUgb2YgcHJvcGVydHkuc3VnZ2VzdGlvbnMudmFsdWVzOyB0cmFja0J5OiB0cmFja0J5SW5kZXhcIiBbdmFsdWVdPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAge3sgdmFsdWUgfX1cbiAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnB1dEFkZG9uczsgY29udGV4dDogeyAkaW1wbGljaXQ6IHByb3BlcnR5IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxwIGNsYXNzPVwiaGVscCBpcy1kYW5nZXItbGlnaHRcIiAqbmdJZj1cIiFwcm9wZXJ0eS5oYXNFcnJvciAmJiBwcm9wZXJ0eU1vZGVsLmludmFsaWRcIj5cbiAgICA8c3BhbiAqYmluZE9uY2U9XCJwcm9wZXJ0eU1vZGVsLmVycm9yc1wiIFtpbm5lckhUTUxdPVwiZm9ybWF0UHJvcGVydHlFcnJvcihwcm9wZXJ0eU1vZGVsLmVycm9ycywgcHJvcGVydHkpXCI+PC9zcGFuPlxuICA8L3A+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3JlbW92ZUZpZWxkQWRkb24gbGV0LXByb3BlcnR5PlxuICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiICpuZ0lmPVwiIWVycm9yc0VkaXRhYmxlICYmICFwcm9wZXJ0eS5pc1JlcXVpcmVkXCI+XG4gICAgPGFcbiAgICAgIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCJcbiAgICAgIHRpdGxlPVwiUmVtb3ZlIGZpZWxkXCJcbiAgICAgIFtjbGFzcy5pcy1vdXRsaW5lZF09XCIhcHJvcGVydHkuY2hhbmdlZCAmJiAocHJvcGVydHkuaGFzRXJyb3IgfHwgcHJvcGVydHkuaGFzV2FybmluZylcIlxuICAgICAgW2NsYXNzLmlzLWRhbmdlcl09XCIhcHJvcGVydHkuY2hhbmdlZCAmJiBwcm9wZXJ0eS5oYXNFcnJvclwiXG4gICAgICBbY2xhc3MuaXMtd2FybmluZ109XCIhcHJvcGVydHkuY2hhbmdlZCAmJiBwcm9wZXJ0eS5oYXNXYXJuaW5nXCJcbiAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHByb3BlcnR5Q2hhbmdlZChudWxsLCBwcm9wZXJ0eSlcIj5cbiAgICAgIDxmYS1pY29uIGljb249XCJ0aW1lc1wiPjwvZmEtaWNvbj5cbiAgICA8L2E+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpbnB1dEFkZG9ucyBsZXQtcHJvcGVydHk+XG4gIDxuZy1jb250YWluZXIgKmJpbmRPbmNlPVwicHJvcGVydHlcIj5cbiAgICA8aGUtcG9wb3Zlci1jb25maXJtXG4gICAgICBjbGFzcz1cImNvbnRyb2xcIlxuICAgICAgKm5nSWY9XCJlbmFibGVBZGRFcnJvcihwcm9wZXJ0eSlcIlxuICAgICAgcG9zaXRpb249XCJsZWZ0XCJcbiAgICAgIFtjb250ZW50XT1cInBvcHVwRXJyb3JGb3JtXCJcbiAgICAgIChjb25maXJtZWQpPVwiYWRkRXJyb3IocHJvcGVydHksICRldmVudClcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCI+XG4gICAgICAgIDxmYS1pY29uIGljb249XCJjb21tZW50c1wiPjwvZmEtaWNvbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2hlLXBvcG92ZXItY29uZmlybT5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlZGl0YWJsZSAmJiBwcm9wZXJ0eS5lZGl0YWJsZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwicHJvcGVydHkuc2NoZW1hVHlwZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJTY2hlbWFUeXBlLkFjdG9yXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFjdG9yQWRkb25zOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogcHJvcGVydHkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiU2NoZW1hVHlwZS5DeWNsZVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjeWNsZUFkZG9uczsgY29udGV4dDogeyAkaW1wbGljaXQ6IHByb3BlcnR5IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIiAqbmdJZj1cIm1hcERyYXdpbmdNb2Rlcyhwcm9wZXJ0eSkubGVuZ3RoXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIiB0aXRsZT1cIlBpY2sgb24gTWFwXCIgKGNsaWNrKT1cIm1hcERyYXdpbmdQcm9wZXJ0eSA9IHByb3BlcnR5XCI+XG4gICAgICAgICAgPGZhLWljb24gaWNvbj1cIm1hcC1tYXJrZWQtYWx0XCI+PC9mYS1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIiAqbmdJZj1cImJpYmxpb2dyYXBoaWVzU2VhcmNoS2V5KHByb3BlcnR5KVwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCIgdGl0bGU9XCJBZHZhbmNlZCBTZWFyY2hcIiAoY2xpY2spPVwiYmlibGlvZ3JhcGhpZXNTZWFyY2hQcm9wZXJ0eSA9IHByb3BlcnR5XCI+XG4gICAgICAgICAgPGZhLWljb24gaWNvbj1cInNlYXJjaFwiPjwvZmEtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInJlbW92ZUZpZWxkQWRkb247IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBwcm9wZXJ0eSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiICpuZ0lmPVwiYWRkUHJvcGVydHlFbmFibGVkKHByb3BlcnR5KVwiPlxuICAgICAgPGFcbiAgICAgICAgY2xhc3M9XCJidXR0b24gaXMtc21hbGwgaXMtZGFuZ2VyXCJcbiAgICAgICAgdGl0bGU9XCJBZGQgZmllbGRcIlxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBhZGRNaXNzaW5nUHJvcGVydHkocHJvcGVydHkpXCI+XG4gICAgICAgIDxmYS1pY29uIGljb249XCJwbHVzLWNpcmNsZVwiPjwvZmEtaWNvbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJwbC0yXCI+QWRkPC9zcGFuPlxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCIgKm5nSWY9XCJpc1JlcXVpcmVkKHByb3BlcnR5KVwiPlxuICAgICAgPGxhYmVsIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsIGlzLWRhbmdlclwiIFtmb3JdPVwicHJvcGVydHkuaWRcIiBuZ2JUb29sdGlwPVwiVGhpcyBmaWVsZCBpcyByZXF1aXJlZFwiIHBsYWNlbWVudD1cInRvcFwiPlxuICAgICAgICA8ZmEtaWNvbiBpY29uPVwiZXhjbGFtYXRpb24tdHJpYW5nbGVcIj48L2ZhLWljb24+XG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9wZXJ0eS5leHRlcm5hbFVybD8udXJsXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiPlxuICAgICAgICA8YVxuICAgICAgICAgIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCJcbiAgICAgICAgICBbaHJlZl09XCJwcm9wZXJ0eS5leHRlcm5hbFVybC51cmwgKyAocHJvcGVydHkuZXh0ZXJuYWxVcmwudXJsUGFyYW1WYWx1ZSA/IHByb3BlcnR5LnZhbHVlIDogJycpXCJcbiAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgIFt0aXRsZV09XCJwcm9wZXJ0eS5leHRlcm5hbFVybC50aXRsZVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW5mbyc6IHByb3BlcnR5LmtleSA9PT0gJ3R5cGUnIH1cIlxuICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cInByb3BlcnR5LmV4dGVybmFsVXJsLnVybFBhcmFtVmFsdWUgJiYgIXByb3BlcnR5LnZhbHVlID8gdHJ1ZSA6IG51bGxcIj5cbiAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJwcm9wZXJ0eS5leHRlcm5hbFVybC5pY29uIHx8ICdleHRlcm5hbC1saW5rLWFsdCdcIj48L2ZhLWljb24+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ1bml0Q29udmVydGVyRW5hYmxlZChwcm9wZXJ0eSlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbFwiXG4gICAgICAgICAgdGl0bGU9XCJPcGVuIGNhbGN1bGF0b3JcIlxuICAgICAgICAgIFtuZ2JQb3BvdmVyXT1cImNvbnZlcnRVbml0c1wiXG4gICAgICAgICAgYXV0b0Nsb3NlPVwib3V0c2lkZVwiXG4gICAgICAgICAgdHJpZ2dlcnM9XCJtYW51YWxcIlxuICAgICAgICAgICNwPVwibmdiUG9wb3ZlclwiXG4gICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAoY2xpY2spPVwib3BlblVuaXRDb252ZXJ0ZXIocCwgcHJvcGVydHkpXCI+XG4gICAgICAgICAgPGZhLWljb24gaWNvbj1cImNhbGN1bGF0b3JcIj48L2ZhLWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNhY3RvckFkZG9ucyBsZXQtcHJvcGVydHk+XG4gIDxkaXYgY2xhc3M9XCJjb250cm9sXCIgKm5nSWY9XCJwcm9wZXJ0eS5rZXkgPT09ICdAaWQnXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbFwiIHRpdGxlPVwiQWRkIG15c2VsZiBhcyBBY3RvclwiIChjbGljayk9XCJzZXRVc2VyQWN0b3JJZChwcm9wZXJ0eSlcIj5cbiAgICAgIDxmYS1pY29uIFtpY29uXT1cIlsnZmFyJywgJ2lkLWJhZGdlJ11cIj48L2ZhLWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjeWNsZUFkZG9ucyBsZXQtcHJvcGVydHk+XG4gIDxkaXYgY2xhc3M9XCJjb250cm9sXCIgKm5nSWY9XCJwcm9wZXJ0eS5rZXkgPT09ICdjeWNsZUR1cmF0aW9uJ1wiPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCJcbiAgICAgIHRpdGxlPVwiQ2FsY3VsYXRlIHZhbHVlIGZyb20gc3RhcnREYXRlIGFuZCBlbmREYXRlXCJcbiAgICAgIChjbGljayk9XCJjYWxjdWxhdGVDeWNsZUR1cmF0aW9uKHByb3BlcnR5KVwiXG4gICAgICBbZGlzYWJsZWRdPVwiIWNhbGN1bGF0ZUN5Y2xlRHVyYXRpb25FbmFibGVkKHByb3BlcnR5KVwiPlxuICAgICAgPGZhLWljb24gaWNvbj1cImNhbGN1bGF0b3JcIj48L2ZhLWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiICpuZ0lmPVwicHJvcGVydHkua2V5ID09PSAnc3RhcnREYXRlJ1wiPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCJcbiAgICAgIHRpdGxlPVwiQ2FsY3VsYXRlIHZhbHVlIGZyb20gZW5kRGF0ZSBhbmQgY3ljbGVEdXJhdGlvblwiXG4gICAgICAoY2xpY2spPVwiY2FsY3VsYXRlQ3ljbGVTdGFydERhdGUocHJvcGVydHkpXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhY2FsY3VsYXRlQ3ljbGVTdGFydERhdGVFbmFibGVkKHByb3BlcnR5KVwiPlxuICAgICAgPGZhLWljb24gaWNvbj1cImNhbGN1bGF0b3JcIj48L2ZhLWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzaG93TmV3UHJvcGVydHkgbGV0LXByb3BlcnR5PlxuICA8aGVhZGVyXG4gICAgY2xhc3M9XCJjYXJkLWhlYWRlclwiXG4gICAgKm5nSWY9XCJlZGl0YWJsZSAmJiBwcm9wZXJ0eS5lZGl0YWJsZSAmJiAocHJvcGVydHkuYWRkUHJvcGVydHlFbmFibGVkIHx8IGRlZXBFZGl0YWJsZSk7IGVsc2UgcGFkZGVyXCI+XG4gICAgPGZvcm0gY2xhc3M9XCJweS0zIHB4LTQgaXMtZmxleC1ncm93LTFcIiAoc3VibWl0KT1cImFkZFByb3BlcnR5KHByb3BlcnR5KVwiIG5vdmFsaWRhdGU+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgaXMtaG9yaXpvbnRhbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtbGFiZWwgaXMtc21hbGxcIiAqYmluZE9uY2U9XCJwcm9wZXJ0eVwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImxhYmVsXCIgW2Zvcl09XCJwcm9wZXJ0eS5pZCArICdfbmV3J1wiPlxuICAgICAgICAgICAgPHNwYW4+QWRkIG5ldyBmaWVsZDwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLWJvZHlcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgaGFzLWFkZG9uc1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2wgaXMtZXhwYW5kZWRcIj5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpbnB1dCBpcy1zbWFsbFwiXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwcm9wZXJ0eS5uZXdQcm9wZXJ0eVwiXG4gICAgICAgICAgICAgICAgW2lkXT1cInByb3BlcnR5LmlkICsgJ19uZXcnXCJcbiAgICAgICAgICAgICAgICBuYW1lPVwicmFuZG9tbmFtZVwiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggYW5kIHNlbGVjdCBmaWVsZCBmcm9tIHJlc3VsdHNcIlxuICAgICAgICAgICAgICAgIFtuZ2JUeXBlYWhlYWRdPVwicHJvcGVydHkgfCBhcHBseVB1cmU6IHN1Z2dlc3ROZXdQcm9wZXJ0eVwiXG4gICAgICAgICAgICAgICAgW3Jlc3VsdFRlbXBsYXRlXT1cInN1Z2dlc3Rpb25cIlxuICAgICAgICAgICAgICAgIFtpbnB1dEZvcm1hdHRlcl09XCJmb3JtYXROZXdQcm9wZXJ0eVwiXG4gICAgICAgICAgICAgICAgW2ZvY3VzRmlyc3RdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIFtlZGl0YWJsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgKGZvY3VzKT1cInR5cGVhaGVhZEZvY3VzKCRldmVudClcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhcHJvcGVydHkubmV3UHJvcGVydHkgfHwgIXByb3BlcnR5Lm5ld1Byb3BlcnR5Lm5hbWVcIj5cbiAgICAgICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwicGx1c1wiPjwvZmEtaWNvbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBsLTJcIj5BZGQ8L3NwYW4+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuICA8L2hlYWRlcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcHJvcGVydHlFcnJvciBsZXQtcHJvcGVydHk9XCJwcm9wZXJ0eVwiIGxldC1lZGl0PVwiZWRpdFwiPlxuICA8cCBjbGFzcz1cImhlbHBcIiBbY2xhc3MuaXMtZGFuZ2VyXT1cInByb3BlcnR5Lmhhc0Vycm9yXCIgW2NsYXNzLmlzLXdhcm5pbmddPVwicHJvcGVydHkuaGFzV2FybmluZ1wiICpuZ0lmPVwicHJvcGVydHkuZXJyb3JcIj5cbiAgICA8c3BhbiBjbGFzcz1cImlzLXByZS13cmFwXCIgKmJpbmRPbmNlPVwicHJvcGVydHkuZXJyb3JcIiBbaW5uZXJIVE1MXT1cInByb3BlcnR5LmVycm9yLm1lc3NhZ2VcIj48L3NwYW4+XG4gICAgPGEgY2xhc3M9XCJwbC0yXCIgKm5nSWY9XCJlZGl0ICYmIGVycm9yc0VkaXRhYmxlICYmIHByb3BlcnR5LmVycm9yLmluZGV4ID49IDBcIiAoY2xpY2spPVwiZWRpdEVycm9yKHByb3BlcnR5KVwiPlxuICAgICAgPGZhLWljb24gY2xhc3M9XCJwci0yXCIgaWNvbj1cImVkaXRcIj48L2ZhLWljb24+XG4gICAgICA8c3Bhbj5FZGl0PC9zcGFuPlxuICAgIDwvYT5cbiAgICA8YVxuICAgICAgY2xhc3M9XCJwbC0yXCJcbiAgICAgICpuZ0lmPVwiKHByb3BlcnR5Lmhhc1dhcm5pbmcgfHwgZXJyb3JzRWRpdGFibGUpICYmIHByb3BlcnR5LmVycm9yLmluZGV4ID49IDBcIlxuICAgICAgKGNsaWNrKT1cInJlc29sdmVFcnJvcihwcm9wZXJ0eSlcIj5cbiAgICAgIDxmYS1pY29uIGNsYXNzPVwicHItMlwiIGljb249XCJjaGVja1wiPjwvZmEtaWNvbj5cbiAgICAgIDxzcGFuPlJlc29sdmVkPC9zcGFuPlxuICAgIDwvYT5cbiAgPC9wPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNwcm9wZXJ0eU1hcCBsZXQtcHJvcGVydHk+XG4gIDxkaXYgY2xhc3M9XCJwYW5lbCBpcy1kZWZhdWx0XCIgKm5nSWY9XCJzaG93TWFwXCI+XG4gICAgPGRpdiBjbGFzcz1cIm9wZW4tZ3JvdXAgcGFuZWwtaGVhZGluZyBweS0wXCIgKGNsaWNrKT1cIm1hcFZpc2libGUgPSAhbWFwVmlzaWJsZVwiIHBvaW50ZXIgW2NsYXNzLmlzLW9wZW5dPVwibWFwVmlzaWJsZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbnMgaXMtbW9iaWxlIGlzLXZjZW50ZXJlZCBtYi0wXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY29sdW1uIGlzLW5hcnJvdyBweS0xIG15LTBcIj5cbiAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwiYW5nbGUtZG93blwiIFtjbGFzcy5pcy1oaWRkZW5dPVwiIW1hcFZpc2libGVcIj48L2ZhLWljb24+XG4gICAgICAgICAgPGZhLWljb24gaWNvbj1cImFuZ2xlLXJpZ2h0XCIgW2NsYXNzLmlzLWhpZGRlbl09XCJtYXBWaXNpYmxlXCI+PC9mYS1pY29uPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY29sdW1uIHB5LTEgbXktMFwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaXMtc2l6ZS02XCI+VmlldyBvbiBNYXA8L3NwYW4+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1ibG9jayBpcy1ibG9jayBwLTBcIiBbY2xhc3MuaXMtaGlkZGVuXT1cIiFtYXBWaXNpYmxlXCI+XG4gICAgICA8aGUtc2l0ZXMtbWFwcyBbc2l0ZXNdPVwiW25vZGVdXCIgW3Nob3dOb3RpY2VdPVwiZmFsc2VcIj48L2hlLXNpdGVzLW1hcHM+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNub2RlRXJyb3JGb3JtIGxldC1wcm9wZXJ0eT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByb3BlcnR5Lm5ld0Vycm9yICYmIHByb3BlcnR5LmVkaXRhYmxlXCI+XG4gICAgPGRpdiBjbGFzcz1cImZpZWxkIGhhcy1hZGRvbnNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QgaXMtc21hbGxcIj5cbiAgICAgICAgICA8c2VsZWN0IFsobmdNb2RlbCldPVwicHJvcGVydHkubmV3RXJyb3IubGV2ZWxcIj5cbiAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cInVuZGVmaW5lZFwiPlNlbGVjdCBMZXZlbDwvb3B0aW9uPlxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVycm9yXCI+RXJyb3I8L29wdGlvbj5cbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJ3YXJuaW5nXCI+V2FybmluZzwvb3B0aW9uPlxuICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2wgaXMtZXhwYW5kZWRcIj5cbiAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgY2xhc3M9XCJ0ZXh0YXJlYSBpcy1zbWFsbFwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJwcm9wZXJ0eS5uZXdFcnJvci5tZXNzYWdlXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHlvdXIgbWVzc2FnZSBoZXJlXCJcbiAgICAgICAgICByb3dzPVwiMVwiPjwvdGV4dGFyZWE+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbFwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFwcm9wZXJ0eS5uZXdFcnJvci5sZXZlbCB8fCAhcHJvcGVydHkubmV3RXJyb3IubWVzc2FnZVwiXG4gICAgICAgICAgKGNsaWNrKT1cImFkZEVycm9yKHByb3BlcnR5LCBwcm9wZXJ0eS5uZXdFcnJvcilcIj5cbiAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwicGx1cy1jaXJjbGVcIj48L2ZhLWljb24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJwbC0yXCI+QWRkPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcG9wdXBFcnJvckZvcm0gbGV0LWRhdGE9XCJkYXRhXCI+XG4gIDxkaXYgY2xhc3M9XCJmaWVsZCBoYXMtYWRkb25zXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RcIj5cbiAgICAgICAgPHNlbGVjdCBbKG5nTW9kZWwpXT1cImRhdGEubGV2ZWxcIj5cbiAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJ1bmRlZmluZWRcIj5TZWxlY3QgTGV2ZWw8L29wdGlvbj5cbiAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXJyb3JcIj5FcnJvcjwvb3B0aW9uPlxuICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJ3YXJuaW5nXCI+V2FybmluZzwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCI+XG4gICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIFsobmdNb2RlbCldPVwiZGF0YS5tZXNzYWdlXCIgcGxhY2Vob2xkZXI9XCJFbnRlciB5b3VyIG1lc3NhZ2UgaGVyZVwiIC8+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzdWdnZXN0aW9uIGxldC1yPVwicmVzdWx0XCIgbGV0LXQ9XCJ0ZXJtXCI+XG4gIDxuZ2ItaGlnaGxpZ2h0XG4gICAgW3RpdGxlXT1cInIuYmlibGlvZ3JhcGh5Py50aXRsZSB8fCByLmJpYmxpb2dyYXBoeT8uZG9jdW1lbnRET0kgfHwgci5iaWJsaW9ncmFwaHk/LnNjb3B1cyB8fCByLm5hbWVcIlxuICAgIFtyZXN1bHRdPVwici5iaWJsaW9ncmFwaHk/LnRpdGxlIHx8IHIuYmlibGlvZ3JhcGh5Py5kb2N1bWVudERPSSB8fCByLmJpYmxpb2dyYXBoeT8uc2NvcHVzIHx8IHIubmFtZVwiXG4gICAgW3Rlcm1dPVwidFwiPjwvbmdiLWhpZ2hsaWdodD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcGFkZGVyPlxuICA8ZGl2IGNsYXNzPVwicHQtMVwiPjwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjb252ZXJ0VW5pdHMgbGV0LXZhbHVlPVwidmFsdWVcIiBsZXQtdGVybT1cInRlcm1cIiBsZXQtdW5pdHM9XCJ1bml0c1wiPlxuICA8aGUtdW5pdC1jb252ZXJ0ZXIgW3ZhbHVlXT1cInZhbHVlXCIgW3Rlcm1dPVwidGVybVwiIFt0b1VuaXRzXT1cInVuaXRzXCI+PC9oZS11bml0LWNvbnZlcnRlcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|