@po-ui/ng-components 16.3.0 → 16.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/po-dynamic/index.mjs +2 -1
- package/esm2022/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-field.interface.mjs +1 -1
- package/esm2022/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields.component.mjs +5 -5
- package/esm2022/lib/components/po-dynamic/po-dynamic-view/interfaces/po-dynamic-view-request.interface.mjs +2 -0
- package/esm2022/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view-base.component.mjs +94 -8
- package/esm2022/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view-field.interface.mjs +1 -1
- package/esm2022/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view.component.mjs +12 -3
- package/esm2022/lib/components/po-dynamic/po-dynamic-view/services/po-dynamic-view.service.mjs +46 -0
- package/esm2022/lib/components/po-dynamic/po-dynamic.module.mjs +2 -2
- package/esm2022/lib/components/po-field/po-combo/po-combo-base.component.mjs +18 -2
- package/esm2022/lib/components/po-field/po-combo/po-combo.component.mjs +55 -21
- package/esm2022/lib/components/po-field/po-field.module.mjs +5 -4
- package/esm2022/lib/components/po-field/po-multiselect/po-multiselect-base.component.mjs +18 -2
- package/esm2022/lib/components/po-field/po-multiselect/po-multiselect.component.mjs +74 -32
- package/esm2022/lib/components/po-menu/po-menu-item/po-menu-item.component.mjs +3 -3
- package/esm2022/lib/components/po-table/po-table-base.component.mjs +12 -8
- package/esm2022/lib/components/po-table/po-table.component.mjs +7 -2
- package/esm2022/lib/components/po-tag/enums/po-tag-type.enum.mjs +4 -2
- package/esm2022/lib/components/po-tag/po-tag-base.component.mjs +3 -2
- package/fesm2022/po-ui-ng-components.mjs +320 -81
- package/fesm2022/po-ui-ng-components.mjs.map +1 -1
- package/lib/components/po-dynamic/index.d.ts +1 -0
- package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-field.interface.d.ts +8 -0
- package/lib/components/po-dynamic/po-dynamic-view/interfaces/po-dynamic-view-request.interface.d.ts +18 -0
- package/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view-base.component.d.ts +13 -2
- package/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view-field.interface.d.ts +44 -0
- package/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view.component.d.ts +4 -2
- package/lib/components/po-dynamic/po-dynamic-view/services/po-dynamic-view.service.d.ts +28 -0
- package/lib/components/po-field/po-combo/po-combo-base.component.d.ts +15 -1
- package/lib/components/po-field/po-multiselect/po-multiselect-base.component.d.ts +15 -1
- package/lib/components/po-table/po-table-base.component.d.ts +1 -1
- package/lib/components/po-tag/enums/po-tag-type.enum.d.ts +4 -2
- package/lib/components/po-tag/po-tag-base.component.d.ts +2 -1
- package/package.json +4 -4
- package/po-ui-ng-components-16.4.1.tgz +0 -0
- package/schematics/ng-add/index.js +1 -1
- package/schematics/ng-update/v14/index.js +1 -1
- package/schematics/ng-update/v15/index.js +1 -1
- package/schematics/ng-update/v16/index.js +1 -1
- package/schematics/ng-update/v2/index.js +1 -1
- package/schematics/ng-update/v3/index.js +1 -1
- package/schematics/ng-update/v4/index.js +1 -1
- package/schematics/ng-update/v5/index.js +1 -1
- package/schematics/ng-update/v6/index.js +1 -1
- package/esm2022/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view.service.mjs +0 -18
- package/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view.service.d.ts +0 -13
- package/po-ui-ng-components-16.3.0.tgz +0 -0
|
@@ -1931,7 +1931,12 @@ export class PoTableComponent extends PoTableBaseComponent {
|
|
|
1931
1931
|
this.lastVisibleColumnsSelected = [...this.columns];
|
|
1932
1932
|
}
|
|
1933
1933
|
onFilteredItemsChange(items) {
|
|
1934
|
-
this.
|
|
1934
|
+
if (this.sortedColumn.property) {
|
|
1935
|
+
this.sortArray(this.sortedColumn.property, this.sortedColumn.ascending, items);
|
|
1936
|
+
}
|
|
1937
|
+
else {
|
|
1938
|
+
this.filteredItems = items;
|
|
1939
|
+
}
|
|
1935
1940
|
}
|
|
1936
1941
|
/**
|
|
1937
1942
|
* Método que remove um item da tabela.
|
|
@@ -2315,4 +2320,4 @@ export class PoTableComponent extends PoTableBaseComponent {
|
|
|
2315
2320
|
type: ViewChild,
|
|
2316
2321
|
args: ['columnManagerTargetFixed']
|
|
2317
2322
|
}] }); })();
|
|
2318
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLXRhYmxlL3BvLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby10YWJsZS9wby10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRSxPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHdEUsT0FBTyxFQUdMLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUVmLFVBQVUsRUFPVixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQWMsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUV2RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUMvRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRCxPQUFPLEVBQWlCLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBSTlELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV4QyxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUd0RyxPQUFPLEVBQUUsb0JBQW9CLEVBQW1CLE1BQU0sMkJBQTJCLENBQUM7QUFDbEYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDekcsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFDL0csT0FB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a0I7a0JBQXZGLFNBQVM7bUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7WUFDQSxnQkFBZ0I7a0JBQW5GLFNBQVM7bUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7WUFFUixrQkFBa0I7a0JBQTNFLFlBQVk7bUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ0YsY0FBYztrQkFBbkUsWUFBWTttQkFBQyxnQkFBZ0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDMUIsV0FBVztrQkFBcEMsU0FBUzttQkFBQyxhQUFhO1lBQ3dDLGFBQWE7a0JBQTVFLFNBQVM7bUJBQUMsZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBQ0MsUUFBUTtrQkFBdEUsU0FBUzttQkFBQyx3QkFBd0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7WUErQ2hCLG1CQUFtQjtrQkFBeEQsU0FBUzttQkFBQyxxQkFBcUI7WUFTVyx3QkFBd0I7a0JBQWxFLFNBQVM7bUJBQUMsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQgeyBDZGtEcmFnRHJvcCwgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5cbmltcG9ydCB7IERlY2ltYWxQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBEb0NoZWNrLFxuICBFbGVtZW50UmVmLFxuICBJdGVyYWJsZURpZmZlcnMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBRdWVyeUxpc3QsXG4gIFJlbmRlcmVyMixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuLFxuICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFBvRGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wby1kYXRlL3BvLWRhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBQb0xhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9Ob3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcG8tbm90aWZpY2F0aW9uL3BvLW5vdGlmaWNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IGNvbnZlcnRUb0Jvb2xlYW4gfSBmcm9tICcuLi8uLi91dGlscy91dGlsJztcbmltcG9ydCB7IFBvTW9kYWxBY3Rpb24sIFBvTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi9wby1tb2RhbCc7XG5pbXBvcnQgeyBQb1BvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4vcG8tcG9wdXAvcG8tcG9wdXAuY29tcG9uZW50JztcbmltcG9ydCB7IFBvVGFibGVDb2x1bW5MYWJlbCB9IGZyb20gJy4vcG8tdGFibGUtY29sdW1uLWxhYmVsL3BvLXRhYmxlLWNvbHVtbi1sYWJlbC5pbnRlcmZhY2UnO1xuXG5pbXBvcnQgeyB1dWlkIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbCc7XG5pbXBvcnQgeyBQb1BhZ2VTbGlkZUNvbXBvbmVudCB9IGZyb20gJy4uL3BvLXBhZ2UnO1xuaW1wb3J0IHsgUG9UYWJsZVJvd1RlbXBsYXRlQXJyb3dEaXJlY3Rpb24gfSBmcm9tICcuL2VudW1zL3BvLXRhYmxlLXJvdy10ZW1wbGF0ZS1hcnJvdy1kaXJlY3Rpb24uZW51bSc7XG5pbXBvcnQgeyBQb1RhYmxlQWN0aW9uIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLXRhYmxlLWFjdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9UYWJsZUNvbHVtbiB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby10YWJsZS1jb2x1bW4uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvVGFibGVCYXNlQ29tcG9uZW50LCBRdWVyeVBhcmFtc1R5cGUgfSBmcm9tICcuL3BvLXRhYmxlLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IFBvVGFibGVDZWxsVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuL3BvLXRhYmxlLWNlbGwtdGVtcGxhdGUvcG8tdGFibGUtY2VsbC10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUG9UYWJsZUNvbHVtblRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9wby10YWJsZS1jb2x1bW4tdGVtcGxhdGUvcG8tdGFibGUtY29sdW1uLXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBQb1RhYmxlUm93VGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuL3BvLXRhYmxlLXJvdy10ZW1wbGF0ZS9wby10YWJsZS1yb3ctdGVtcGxhdGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IFBvVGFibGVTdWJ0aXRsZUNvbHVtbiB9IGZyb20gJy4vcG8tdGFibGUtc3VidGl0bGUtZm9vdGVyL3BvLXRhYmxlLXN1YnRpdGxlLWNvbHVtbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9UYWJsZVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3BvLXRhYmxlLnNlcnZpY2UnO1xuXG4vKipcbiAqIEBkb2NzRXh0ZW5kcyBQb1RhYmxlQmFzZUNvbXBvbmVudFxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXRhYmxlLWJhc2ljXCIgdGl0bGU9XCJQTyBUYWJsZSBCYXNpY1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtYmFzaWMvc2FtcGxlLXBvLXRhYmxlLWJhc2ljLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1iYXNpYy9zYW1wbGUtcG8tdGFibGUtYmFzaWMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby10YWJsZS1sYWJzXCIgdGl0bGU9XCJQTyBUYWJsZSBMYWJzXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1sYWJzL3NhbXBsZS1wby10YWJsZS1sYWJzLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1sYWJzL3NhbXBsZS1wby10YWJsZS1sYWJzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWxhYnMvc2FtcGxlLXBvLXRhYmxlLWxhYnMuY29tcG9uZW50LmUyZS1zcGVjLnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWxhYnMvc2FtcGxlLXBvLXRhYmxlLWxhYnMuY29tcG9uZW50LnBvLnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWxhYnMvc2FtcGxlLXBvLXRhYmxlLWxhYnMuc2VydmljZS50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXRhYmxlLXdpdGgtYXBpXCIgdGl0bGU9XCJQTyBUYWJsZSB1c2luZyBBUElcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLXdpdGgtYXBpL3NhbXBsZS1wby10YWJsZS13aXRoLWFwaS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtd2l0aC1hcGkvc2FtcGxlLXBvLXRhYmxlLXdpdGgtYXBpLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tdGFibGUtdHJhbnNwb3J0XCIgdGl0bGU9XCJQTyBUYWJsZSAtIFRyYW5zcG9ydFwiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtdHJhbnNwb3J0L3NhbXBsZS1wby10YWJsZS10cmFuc3BvcnQuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLXRyYW5zcG9ydC9zYW1wbGUtcG8tdGFibGUtdHJhbnNwb3J0LmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLXRyYW5zcG9ydC9zYW1wbGUtcG8tdGFibGUtdHJhbnNwb3J0LnNlcnZpY2UudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby10YWJsZS1haXJmYXJlXCIgdGl0bGU9XCJQTyBUYWJsZSAtIEFpcmZhcmVcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWFpcmZhcmUvc2FtcGxlLXBvLXRhYmxlLWFpcmZhcmUuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWFpcmZhcmUvc2FtcGxlLXBvLXRhYmxlLWFpcmZhcmUuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtYWlyZmFyZS9zYW1wbGUtcG8tdGFibGUtYWlyZmFyZS5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tdGFibGUtY29tcG9uZW50c1wiIHRpdGxlPVwiUE8gVGFibGUgLSBQbyBGaWVsZCBDb21wb25lbnRzXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1jb21wb25lbnRzL3NhbXBsZS1wby10YWJsZS1jb21wb25lbnRzLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1jb21wb25lbnRzL3NhbXBsZS1wby10YWJsZS1jb21wb25lbnRzLmVudW0udHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy9zYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1jb21wb25lbnRzL3NhbXBsZS1wby10YWJsZS1jb21wb25lbnRzLnNlcnZpY2UudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy9zYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy5jb21wb25lbnQuY3NzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tdGFibGUtaGVyb2VzXCIgdGl0bGU9XCJQTyBUYWJsZSAtIEhlcm9lc1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtaGVyb2VzL3NhbXBsZS1wby10YWJsZS1oZXJvZXMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWhlcm9lcy9zYW1wbGUtcG8tdGFibGUtaGVyb2VzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWhlcm9lcy9zYW1wbGUtcG8tdGFibGUtaGVyb2VzLnNlcnZpY2UudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby10YWJsZS1kcmFnZ2FibGVcIiB0aXRsZT1cIlBPIFRhYmxlIERyYWcgYW5kIERyb3BcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWRyYWdnYWJsZS9zYW1wbGUtcG8tdGFibGUtZHJhZ2dhYmxlLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWRyYWdnYWJsZS9zYW1wbGUtcG8tdGFibGUtZHJhZ2dhYmxlLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BvLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbUG9EYXRlU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgUG9UYWJsZUNvbXBvbmVudCBleHRlbmRzIFBvVGFibGVCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgRG9DaGVjaywgT25EZXN0cm95LCBPbkluaXQge1xuICBAQ29udGVudENoaWxkKFBvVGFibGVSb3dUZW1wbGF0ZURpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSkgdGFibGVSb3dUZW1wbGF0ZTogUG9UYWJsZVJvd1RlbXBsYXRlRGlyZWN0aXZlO1xuICBAQ29udGVudENoaWxkKFBvVGFibGVDZWxsVGVtcGxhdGVEaXJlY3RpdmUpIHRhYmxlQ2VsbFRlbXBsYXRlOiBQb1RhYmxlQ2VsbFRlbXBsYXRlRGlyZWN0aXZlO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oUG9UYWJsZUNvbHVtblRlbXBsYXRlRGlyZWN0aXZlKSB0YWJsZUNvbHVtblRlbXBsYXRlczogUXVlcnlMaXN0PFBvVGFibGVDb2x1bW5UZW1wbGF0ZURpcmVjdGl2ZT47XG5cbiAgQFZpZXdDaGlsZCgnbm9Db2x1bW5zSGVhZGVyJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIG5vQ29sdW1uc0hlYWRlcjtcbiAgQFZpZXdDaGlsZCgncG9wdXAnKSBwb1BvcHVwQ29tcG9uZW50OiBQb1BvcHVwQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKFBvTW9kYWxDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIG1vZGFsRGVsZXRlOiBQb01vZGFsQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCd0YWJsZUZvb3RlcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KSB0YWJsZUZvb3RlckVsZW1lbnQ7XG4gIEBWaWV3Q2hpbGQoJ3RhYmxlV3JhcHBlcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KSB0YWJsZVdyYXBwZXJFbGVtZW50O1xuXG4gIEBWaWV3Q2hpbGQoJ3RhYmxlVGVtcGxhdGUnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgdGFibGVUZW1wbGF0ZTtcbiAgQFZpZXdDaGlsZCgndGFibGVWaXJ0dWFsU2Nyb2xsJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pIHRhYmxlVmlydHVhbFNjcm9sbDtcblxuICBAVmlld0NoaWxkKCdjb2x1bW5NYW5hZ2VyJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pIGNvbHVtbk1hbmFnZXI7XG4gIEBWaWV3Q2hpbGQoJ2NvbHVtbkJhdGNoQWN0aW9ucycsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KSBjb2x1bW5CYXRjaEFjdGlvbnM7XG4gIEBWaWV3Q2hpbGQoJ2NvbHVtbkFjdGlvbkxlZnQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgY29sdW1uQWN0aW9uTGVmdDtcblxuICBAVmlld0NoaWxkcmVuKCdhY3Rpb25zSWNvbkVsZW1lbnQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgYWN0aW9uc0ljb25FbGVtZW50OiBRdWVyeUxpc3Q8YW55PjtcbiAgQFZpZXdDaGlsZHJlbignYWN0aW9uc0VsZW1lbnQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgYWN0aW9uc0VsZW1lbnQ6IFF1ZXJ5TGlzdDxhbnk+O1xuICBAVmlld0NoaWxkKCdmaWx0ZXJJbnB1dCcpIGZpbHRlcklucHV0OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdwb1NlYXJjaElucHV0JywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSkgcG9TZWFyY2hJbnB1dDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZChDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQsIHsgc3RhdGljOiBmYWxzZSB9KSBwdWJsaWMgdmlld1BvcnQ6IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydDtcblxuICBwb05vdGlmaWNhdGlvbiA9IGluamVjdChQb05vdGlmaWNhdGlvblNlcnZpY2UpO1xuXG4gIGhlaWdodFRhYmxlQ29udGFpbmVyOiBudW1iZXI7XG4gIGhlaWdodFRhYmxlVmlydHVhbDogbnVtYmVyO1xuICBwb3B1cFRhcmdldDtcbiAgdGFibGVPcGFjaXR5OiBudW1iZXIgPSAwO1xuICB0b29sdGlwVGV4dDogc3RyaW5nO1xuICBpdGVtU2l6ZTogbnVtYmVyID0gNDg7XG4gIGxhc3RWaXNpYmxlQ29sdW1uc1NlbGVjdGVkOiBBcnJheTxQb1RhYmxlQ29sdW1uPjtcbiAgdGFnQ29sb3I6IHN0cmluZztcbiAgaWRSYWRpbzogc3RyaW5nO1xuICBpbnB1dEZpZWxkVmFsdWUgPSAnJztcbiAgSlNPTjogSlNPTjtcbiAgbmV3T3JkZXJDb2x1bW5zOiBBcnJheTxQb1RhYmxlQ29sdW1uPjtcblxuICBjbG9zZTogUG9Nb2RhbEFjdGlvbiA9IHtcbiAgICBhY3Rpb246ICgpID0+IHtcbiAgICAgIHRoaXMubW9kYWxEZWxldGUuY2xvc2UoKTtcbiAgICB9LFxuICAgIGxhYmVsOiB0aGlzLmxpdGVyYWxzLmNhbmNlbCxcbiAgICBkYW5nZXI6IHRydWVcbiAgfTtcblxuICBjb25maXJtOiBQb01vZGFsQWN0aW9uID0ge1xuICAgIGFjdGlvbjogKCkgPT4ge1xuICAgICAgdGhpcy5kZWxldGVJdGVtcygpO1xuICAgIH0sXG4gICAgbGFiZWw6IHRoaXMubGl0ZXJhbHMuZGVsZXRlXG4gIH07XG5cbiAgcHJpdmF0ZSBfY29sdW1uTWFuYWdlclRhcmdldDogRWxlbWVudFJlZjtcbiAgcHJpdmF0ZSBfY29sdW1uTWFuYWdlclRhcmdldEZpeGVkOiBFbGVtZW50UmVmO1xuICBwcml2YXRlIGRpZmZlcjtcbiAgcHJpdmF0ZSBmb290ZXJIZWlnaHQ7XG4gIHByaXZhdGUgaGVhZGVySGVpZ2h0O1xuICBwcml2YXRlIGluaXRpYWxpemVkID0gZmFsc2U7XG4gIHByaXZhdGUgdGltZW91dFJlc2l6ZTtcbiAgcHJpdmF0ZSB2aXNpYmxlRWxlbWVudCA9IGZhbHNlO1xuICBwcml2YXRlIHNjcm9sbEV2ZW50JDogT2JzZXJ2YWJsZTxhbnk+O1xuICBwcml2YXRlIHN1YnNjcmlwdGlvblNjcm9sbEV2ZW50OiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uU2VydmljZTogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHByaXZhdGUgY2xpY2tMaXN0ZW5lcjogKCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSByZXNpemVMaXN0ZW5lcjogKCkgPT4gdm9pZDtcblxuICBAVmlld0NoaWxkKCdjb2x1bW5NYW5hZ2VyVGFyZ2V0Jykgc2V0IGNvbHVtbk1hbmFnZXJUYXJnZXQodmFsdWU6IEVsZW1lbnRSZWYpIHtcbiAgICB0aGlzLl9jb2x1bW5NYW5hZ2VyVGFyZ2V0ID0gdmFsdWU7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBnZXQgY29sdW1uTWFuYWdlclRhcmdldCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29sdW1uTWFuYWdlclRhcmdldDtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ2NvbHVtbk1hbmFnZXJUYXJnZXRGaXhlZCcpIHNldCBjb2x1bW5NYW5hZ2VyVGFyZ2V0Rml4ZWQodmFsdWU6IEVsZW1lbnRSZWYpIHtcbiAgICB0aGlzLl9jb2x1bW5NYW5hZ2VyVGFyZ2V0Rml4ZWQgPSB2YWx1ZTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGdldCBjb2x1bW5NYW5hZ2VyVGFyZ2V0Rml4ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbHVtbk1hbmFnZXJUYXJnZXRGaXhlZDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHBvRGF0ZTogUG9EYXRlU2VydmljZSxcbiAgICBkaWZmZXJzOiBJdGVyYWJsZURpZmZlcnMsXG4gICAgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwb0xhbmd1YWdlU2VydmljZTogUG9MYW5ndWFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBkZWNpbWFsUGlwZTogRGVjaW1hbFBpcGUsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGRlZmF1bHRTZXJ2aWNlOiBQb1RhYmxlU2VydmljZVxuICApIHtcbiAgICBzdXBlcihwb0RhdGUsIHBvTGFuZ3VhZ2VTZXJ2aWNlLCBkZWZhdWx0U2VydmljZSk7XG4gICAgdGhpcy5KU09OID0gSlNPTjtcbiAgICB0aGlzLmRpZmZlciA9IGRpZmZlcnMuZmluZChbXSkuY3JlYXRlKG51bGwpO1xuXG4gICAgLy8gVE9ETzogIzU1NTAgYW8gcmVtb3ZlciBlc3RlIGxpc3RlbmVyLCBubyBwb3J0YWwsIHF1YW5kbyBhcyBjb2x1bmFzIGZvcmVtIGZpeGFzIG7Do28gc29mcmVtXG4gICAgLy8gYWx0ZXJhw6fDo28gZGUgbGFyZ3VyYSwgcG9pcyBvIG5nRG9DaGVjayBuw6NvIMOpIGV4ZWN1dGFkby5cbiAgICB0aGlzLmNsaWNrTGlzdGVuZXIgPSByZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ2NsaWNrJywgKCkgPT4ge30pO1xuXG4gICAgdGhpcy5yZXNpemVMaXN0ZW5lciA9IHJlbmRlcmVyLmxpc3Rlbignd2luZG93JywgJ3Jlc2l6ZScsIChldmVudDogYW55KSA9PiB7XG4gICAgICB0aGlzLmRlYm91bmNlUmVzaXplKCk7XG4gICAgfSk7XG4gIH1cblxuICBnZXQgaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodCgpIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZVJvd1RlbXBsYXRlPy50YWJsZVJvd1RlbXBsYXRlQXJyb3dEaXJlY3Rpb24gPT09IFBvVGFibGVSb3dUZW1wbGF0ZUFycm93RGlyZWN0aW9uLlJpZ2h0O1xuICB9XG5cbiAgZ2V0IGNvbHVtbkNvdW50KCkge1xuICAgIGNvbnN0IGNvbHVtbkNvdW50ID1cbiAgICAgIHRoaXMubWFpbkNvbHVtbnMubGVuZ3RoICtcbiAgICAgICh0aGlzLmFjdGlvbnMubGVuZ3RoID4gMCA/IDEgOiAwKSArXG4gICAgICAodGhpcy5zZWxlY3RhYmxlID8gMSA6IDApICtcbiAgICAgICghdGhpcy5oaWRlRGV0YWlsICYmIHRoaXMuY29sdW1uTWFzdGVyRGV0YWlsICE9PSB1bmRlZmluZWQgPyAxIDogMCk7XG5cbiAgICByZXR1cm4gY29sdW1uQ291bnQgfHwgMTtcbiAgfVxuXG4gIGdldCBjb2x1bW5Db3VudEZvck1hc3RlckRldGFpbCgpIHtcbiAgICAvLyBjYXNvIHRpdmVyIGHDp8O1ZXMgc2Vyw6EgdXRpbGl6YWRvIGEgc3VhIGNvbHVuYSBwYXJhIGV4aWJpciBvIGNvbHVtbk1hbmFnZXJcbiAgICBjb25zdCBjb2x1bW5NYW5hZ2VyID0gdGhpcy5hY3Rpb25zLmxlbmd0aCA/IDAgOiAxO1xuXG4gICAgcmV0dXJuIHRoaXMubWFpbkNvbHVtbnMubGVuZ3RoICsgMSArICh0aGlzLmFjdGlvbnMubGVuZ3RoID4gMCA/IDEgOiAwKSArICh0aGlzLnNlbGVjdGFibGUgPyAxIDogMCkgKyBjb2x1bW5NYW5hZ2VyO1xuICB9XG5cbiAgZ2V0IGRldGFpbEhpZGVTZWxlY3QoKSB7XG4gICAgY29uc3QgbWFzdGVyRGV0YWlsID0gdGhpcy5jb2x1bW5NYXN0ZXJEZXRhaWw7XG4gICAgcmV0dXJuIG1hc3RlckRldGFpbCAmJiBtYXN0ZXJEZXRhaWwuZGV0YWlsID8gbWFzdGVyRGV0YWlsLmRldGFpbC5oaWRlU2VsZWN0IDogZmFsc2U7XG4gIH1cblxuICBnZXQgaGFzVmlzaWJsZUFjdGlvbnMoKSB7XG4gICAgcmV0dXJuICEhdGhpcy52aXNpYmxlQWN0aW9ucy5sZW5ndGg7XG4gIH1cblxuICBnZXQgZmlyc3RBY3Rpb24oKTogUG9UYWJsZUFjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZUFjdGlvbnMgJiYgdGhpcy52aXNpYmxlQWN0aW9uc1swXTtcbiAgfVxuXG4gIGdldCBoYXNGb290ZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzSXRlbXMgJiYgdGhpcy5oYXNWaXNpYmxlU3VidGl0bGVDb2x1bW5zO1xuICB9XG5cbiAgZ2V0IGhhc01hc3RlckRldGFpbENvbHVtbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5oYXNNYWluQ29sdW1ucyAmJiB0aGlzLmhhc0l0ZW1zICYmICF0aGlzLmhpZGVEZXRhaWwgJiYgISEodGhpcy5jb2x1bW5NYXN0ZXJEZXRhaWwgfHwgdGhpcy5oYXNSb3dUZW1wbGF0ZSlcbiAgICApO1xuICB9XG5cbiAgZ2V0IGhhc1Jvd1RlbXBsYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMudGFibGVSb3dUZW1wbGF0ZTtcbiAgfVxuXG4gIGdldCBoYXNTZWxlY3RhYmxlQ29sdW1uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGFibGUgJiYgdGhpcy5oYXNJdGVtcyAmJiB0aGlzLmhhc01haW5Db2x1bW5zO1xuICB9XG5cbiAgZ2V0IGhhc1ZhbGlkQ29sdW1ucygpIHtcbiAgICByZXR1cm4gISF0aGlzLnZhbGlkQ29sdW1ucy5sZW5ndGg7XG4gIH1cblxuICBnZXQgaGFzVmlzaWJsZVN1YnRpdGxlQ29sdW1ucygpIHtcbiAgICByZXR1cm4gdGhpcy5zdWJ0aXRsZUNvbHVtbnMuc29tZShjb2x1bW4gPT4gY29sdW1uLnZpc2libGUgIT09IGZhbHNlKTtcbiAgfVxuXG4gIGdldCBpc1NpbmdsZUFjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy52aXNpYmxlQWN0aW9ucy5sZW5ndGggPT09IDE7XG4gIH1cblxuICBnZXQgaXNEcmFnZ2FibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZHJhZ2dhYmxlO1xuICB9XG5cbiAgcHVibGljIGdldCBpbnZlcnNlT2ZUcmFuc2xhdGlvbigpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy52aWV3UG9ydCB8fCAhdGhpcy52aWV3UG9ydFsnX3JlbmRlcmVkQ29udGVudE9mZnNldCddKSB7XG4gICAgICByZXR1cm4gJy0wcHgnO1xuICAgIH1cblxuICAgIGNvbnN0IG9mZnNldCA9IHRoaXMudmlld1BvcnRbJ19yZW5kZXJlZENvbnRlbnRPZmZzZXQnXTtcblxuICAgIHJldHVybiBgLSR7b2Zmc2V0fXB4YDtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaWRSYWRpbyA9IGBwby1yYWRpby0ke3V1aWQoKX1gO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICB9XG5cbiAgc2hvd01vcmVJbmZpbml0ZVNjcm9sbCh7IHRhcmdldCB9KTogdm9pZCB7XG4gICAgY29uc3Qgc2Nyb2xsUG9zaXRpb24gPSB0YXJnZXQub2Zmc2V0SGVpZ2h0ICsgdGFyZ2V0LnNjcm9sbFRvcDtcbiAgICBpZiAoIXRoaXMuc2hvd01vcmVEaXNhYmxlZCAmJiBzY3JvbGxQb3NpdGlvbiA+PSB0YXJnZXQuc2Nyb2xsSGVpZ2h0ICogKHRoaXMuaW5maW5pdGVTY3JvbGxEaXN0YW5jZSAvIDExMCkpIHtcbiAgICAgIHRoaXMub25TaG93TW9yZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nRG9DaGVjaygpIHtcbiAgICB0aGlzLmNoZWNrQ2hhbmdlc0l0ZW1zKCk7XG4gICAgdGhpcy52ZXJpZnlDYWxjdWxhdGVIZWlnaHRUYWJsZUNvbnRhaW5lcigpO1xuICAgIC8vIFBlcm1pdGUgcXVlIG9zIGNhYmXDp2FsaG9zIHNlamFtIGNhbGN1bGFkb3MgbmEgcHJpbWVpcmEgdmV6IHF1ZSBvIGNvbXBvbmVudGUgdG9ybmEtc2Ugdmlzw612ZWwsXG4gICAgLy8gZXZpdGFuZG8gY29tIGlzc28sIHByb2JsZW1hcyBjb20gVGFicyBvdSBEaXZzIHF1ZSBpbmljaWVtIGVzY29uZGlkYXMuXG4gICAgaWYgKHRoaXMudGFibGVXcmFwcGVyRWxlbWVudD8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCAmJiAhdGhpcy52aXNpYmxlRWxlbWVudCAmJiB0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICB0aGlzLmRlYm91bmNlUmVzaXplKCk7XG4gICAgICB0aGlzLmNoZWNrSW5maW5pdGVTY3JvbGwoKTtcbiAgICAgIHRoaXMudmlzaWJsZUVsZW1lbnQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMucmVtb3ZlTGlzdGVuZXJzKCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25TZXJ2aWNlPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcmVzcG9uc8OhdmVsIHBvciByZWFsaXphciBidXNjYSBubyBzZXJ2acOnbyBkZSBkYWRvcyBwb2RlbmRvIGluZm9ybWFyIGZpbHRyb3MgZSBjb20gbyByZXRvcm5vLCBhdHVhbGl6YSBhIHRhYmVsYS5cbiAgICpcbiAgICogQ2FzbyBuw6NvIHNlamEgaW5mb3JtYWRvIHBhcsOibWV0cm8sIG5hZGEgc2Vyw6EgYWRpY2lvbmFkbyBhbyBHRVQsIGNvbmZvcm1lIGFiYWl4bzpcbiAgICogYGBgXG4gICAqIHVybCArID9wYWdlPTEmcGFnZVNpemU9MTBcbiAgICogYGBgXG4gICAqID4gT2JzOiBvcyBwYXLDom1ldHJvcyBgcGFnZWAgZSBgcGFnZVNpemVgIHNlbXByZSBzZXLDo28gY2hhbWFkb3MgaW5kZXBlbmRlbnRlIGRlIHNlciBlbnZpYWRvcyBvdXRyb3MgcGFyw6JtZXRyb3MuXG4gICAqXG4gICAqIENhc28gc2VqYW0gaW5mb3JtYWRvcyBvcyBwYXLDom1ldHJvcyBgeyBuYW1lOiAnSk9ITicsIGFnZTogJzIzJyB9YCwgdG9kb3Mgc2Vyw6NvIGFkaWNpb25hZG9zIGFvIEdFVCwgY29uZm9ybWUgYWJhaXhvOlxuICAgKiBgYGBcbiAgICogdXJsICsgP3BhZ2U9MSZwYWdlU2l6ZT0xMCZuYW1lPUpPSE4mYWdlPTIzXG4gICAqIGBgYFxuICAgKlxuICAgKiBAcGFyYW0geyB7IGtleTogdmFsdWUgfSB9IHF1ZXJ5UGFyYW1zIEZvcm1hdG8gZG8gb2JqZXRvIGEgc2VyIGVudmlhZG8uXG4gICAqID4gUG9kZSBzZXIgdXRpbGl6YWRhIHF1YWxxdWVyIHN0cmluZyBjb21vIGtleSwgZSBxdWFscXVlciBzdHJpbmcgb3UgbnVtYmVyIGNvbW8gdmFsdWUuXG4gICAqL1xuICBhcHBseUZpbHRlcnMocXVlcnlQYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IFF1ZXJ5UGFyYW1zVHlwZSB9KSB7XG4gICAgdGhpcy5wYWdlID0gMTtcbiAgICB0aGlzLmluaXRpYWxpemVEYXRhKHF1ZXJ5UGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvIHF1ZSBjb2xhcHNhIHVtYSBsaW5oYSBjb20gZGV0YWxoZSBxdWFuZG8gZXhlY3V0YWRhLlxuICAgKlxuICAgKiBAcGFyYW0geyBudW1iZXIgfSByb3dJbmRleCDDjW5kaWNlIGRhIGxpbmhhIHF1ZSBzZXLDoSBjb2xhcHNhZGEuXG4gICAqID4gQW8gcmVvcmRlbmFyIG9zIGRhZG9zIGRhIHRhYmVsYSwgbyB2YWxvciBjb250aWRvIG5lc3RlIMOtbmRpY2Ugc2Vyw6EgYWx0ZXJhZG8gY29uZm9ybWUgYSBvcmRlbmHDp8Ojby5cbiAgICovXG4gIGNvbGxhcHNlKHJvd0luZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnNldFNob3dEZXRhaWwocm93SW5kZXgsIGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvIHF1ZSBleHBhbmRlIHVtYSBsaW5oYSBjb20gZGV0YWxoZSBxdWFuZG8gZXhlY3V0YWRhLlxuICAgKlxuICAgKiBAcGFyYW0geyBudW1iZXIgfSByb3dJbmRleCDDjW5kaWNlIGRhIGxpbmhhIHF1ZSBzZXLDoSBleHBhbmRpZGEuXG4gICAqID4gQW8gcmVvcmRlbmFyIG9zIGRhZG9zIGRhIHRhYmVsYSwgbyB2YWxvciBjb250aWRvIG5lc3RlIMOtbmRpY2Ugc2Vyw6EgYWx0ZXJhZG8gY29uZm9ybWUgYSBvcmRlbmHDp8Ojby5cbiAgICovXG4gIGV4cGFuZChyb3dJbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5zZXRTaG93RGV0YWlsKHJvd0luZGV4LCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRvcm5hIGFzIGxpbmhhcyBkbyBgcG8tdGFibGVgIHF1ZSBlc3TDo28gc2VsZWNpb25hZGFzLlxuICAgKi9cbiAgZ2V0U2VsZWN0ZWRSb3dzKCkge1xuICAgIHJldHVybiB0aGlzLml0ZW1zLmZpbHRlcihpdGVtID0+IGl0ZW0uJHNlbGVjdGVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRvcm5hIGFzIGxpbmhhcyBkbyBgcG8tdGFibGVgIHF1ZSBuw6NvIGVzdMOjbyBzZWxlY2lvbmFkYXMuXG4gICAqL1xuICBnZXRVbnNlbGVjdGVkUm93cygpIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5maWx0ZXIoaXRlbSA9PiAhaXRlbS4kc2VsZWN0ZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc21hcmNhIGFzIGxpbmhhcyBxdWUgZXN0w6NvIHNlbGVjaW9uYWRhcy5cbiAgICovXG4gIHVuc2VsZWN0Um93cygpIHtcbiAgICBjb25zdCBjb2x1bW5EZXRhaWwgPSB0aGlzLm5hbWVDb2x1bW5EZXRhaWw7XG5cbiAgICB0aGlzLml0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBjb25zdCBkZXRhaWxJdGVtcyA9IGNvbHVtbkRldGFpbCA/IGl0ZW1bY29sdW1uRGV0YWlsXSA6IG51bGw7XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRldGFpbEl0ZW1zKSkge1xuICAgICAgICBkZXRhaWxJdGVtcy5mb3JFYWNoKGRldGFpbEl0ZW0gPT4ge1xuICAgICAgICAgIGRldGFpbEl0ZW0uJHNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpdGVtLiRzZWxlY3RlZCA9IGZhbHNlO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zZWxlY3RBbGwgPSBmYWxzZTtcbiAgfVxuXG4gIGNoZWNrRGlzYWJsZWQocm93LCBjb2x1bW46IFBvVGFibGVDb2x1bW4pIHtcbiAgICByZXR1cm4gY29sdW1uLmRpc2FibGVkID8gY29sdW1uLmRpc2FibGVkKHJvdykgOiBmYWxzZTtcbiAgfVxuXG4gIGNvbnRhaW5zTWFzdGVyRGV0YWlsKHJvdykge1xuICAgIHJldHVybiByb3dbdGhpcy5uYW1lQ29sdW1uRGV0YWlsXSAmJiByb3dbdGhpcy5uYW1lQ29sdW1uRGV0YWlsXS5sZW5ndGg7XG4gIH1cblxuICBleGVjdXRlVGFibGVBY3Rpb24ocm93OiBhbnksIHRhYmxlQWN0aW9uOiBhbnkpIHtcbiAgICBpZiAoIXJvdy5kaXNhYmxlZCAmJiAhdGhpcy52YWxpZGF0ZVRhYmxlQWN0aW9uKHJvdywgdGFibGVBY3Rpb24pKSB7XG4gICAgICB0YWJsZUFjdGlvbi5hY3Rpb24ocm93KTtcbiAgICAgIHRoaXMudG9nZ2xlUm93QWN0aW9uKHJvdyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERlc21hcmNhIHVtYSBsaW5oYSBxdWUgZXN0w6Egc2VsZWNpb25hZGEuXG4gICAqL1xuICB1bnNlbGVjdFJvd0l0ZW0oaXRlbWZuOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgKChpdGVtKSA9PiBib29sZWFuKSkge1xuICAgIHRoaXMudG9nZ2xlU2VsZWN0KGl0ZW1mbiwgZmFsc2UpO1xuXG4gICAgaWYgKHRoaXMuaXRlbXMuZXZlcnkoaXRlbSA9PiAhaXRlbS4kc2VsZWN0ZWQpKSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjaW9uYSB1bWEgbGluaGEgZG8gJ3BvLXRhYmxlJy5cbiAgICovXG4gIHNlbGVjdFJvd0l0ZW0oaXRlbWZuOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgKChpdGVtKSA9PiBib29sZWFuKSkge1xuICAgIHRoaXMudG9nZ2xlU2VsZWN0KGl0ZW1mbiwgdHJ1ZSk7XG5cbiAgICBpZiAodGhpcy5pdGVtcy5ldmVyeShpdGVtID0+IGl0ZW0uJHNlbGVjdGVkKSkge1xuICAgICAgdGhpcy5zZWxlY3RBbGwgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcmVzcG9uc8OhdmVsIHBlbGEgZXhjbHVzw6NvIGRlIGl0ZW5zIGVtIGxvdGUuXG4gICAqIENhc28gYSB0YWJlbGEgZXN0ZWphIGV4ZWN1dGFuZG8gYSBwcm9wcmllZGFkZSBgcC1zZXJ2aWNlLWRlbGV0ZWAsIHNlcsOhIG5lY2Vzc8OhcmlvIGV4Y2x1aXIgMSBpdGVtIHBvciB2ZXouXG4gICAqXG4gICAqIEFvIHV0aWxpemFyIGBwLXNlcnZpY2UtZGVsZXRlYCBtYXMgc2VtIGEgcHJvcHJpZWRhZGUgYHAtc2VydmljZS1hcGlgLCBzZXLDoSByZXNwb25zYWJpbGlkYWRlIGRvIHVzdcOhcmlvIG8gdHJhdGFtZW50b1xuICAgKiBhcMOzcyBhIHJlcXVpc2nDp8OjbyBERUxFVEUgc2VyIGV4ZWN1dGFkYS5cbiAgICpcbiAgICogQ2FzbyBhIHRhYmVsYSB1dGlsaXplIGBwLWhlaWdodGAgZSBlc3RlamEgc2VtIHNlcnZpw6dvLCDDqSBuZWNlc3PDoXJpbyBhIHJlYXRyaWJ1acOnw6NvIGRvcyBpdGVucyB1dGlsaXphbmRvIG8gZXZlbnRvIGAocC1kZWxldGUtaXRlbXMpYCwgcG9yIGV4ZW1wbG86XG4gICAqXG4gICAqIGBgYFxuICAgKjxwby10YWJsZVxuICAgKiAgKHAtZGVsZXRlLWl0ZW1zKT1cIml0ZW1zID0gJGV2ZW50XCJcbiAgICogPlxuICAgKjwvcG8tdGFibGU+XG4gICAqIGBgYFxuICAgKi9cbiAgZGVsZXRlSXRlbXMoKSB7XG4gICAgY29uc3QgbmV3SXRlbXMgPSBbLi4udGhpcy5pdGVtc107XG4gICAgY29uc3QgbmV3SXRlbXNGaWx0ZXJlZCA9IFsuLi5uZXdJdGVtc10uZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uJHNlbGVjdGVkKTtcblxuICAgIGlmICghdGhpcy5zZXJ2aWNlRGVsZXRlQXBpKSB7XG4gICAgICB0aGlzLmRlbGV0ZUl0ZW1zTG9jYWwobmV3SXRlbXMsIG5ld0l0ZW1zRmlsdGVyZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlbGV0ZUl0ZW1zU2VydmljZShuZXdJdGVtc0ZpbHRlcmVkKTtcbiAgICB9XG4gIH1cblxuICBmb3JtYXROdW1iZXIodmFsdWU6IGFueSwgZm9ybWF0OiBzdHJpbmcpIHtcbiAgICBpZiAoIWZvcm1hdCkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgZm9ybWF0KTtcbiAgfVxuXG4gIGdldENlbGxEYXRhKHJvdzogYW55LCBjb2x1bW46IFBvVGFibGVDb2x1bW4pOiBhbnkge1xuICAgIGNvbnN0IGFycmF5UHJvcGVydHkgPSBjb2x1bW4ucHJvcGVydHkuc3BsaXQoJy4nKTtcbiAgICBpZiAoYXJyYXlQcm9wZXJ0eS5sZW5ndGggPiAxKSB7XG4gICAgICBjb25zdCBuZXN0ZWRQcm9wZXJ0aWVzID0gYXJyYXlQcm9wZXJ0eTtcbiAgICAgIGxldCB2YWx1ZTogYW55ID0gcm93O1xuICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBuZXN0ZWRQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWVbcHJvcGVydHldIHx8IHZhbHVlW3Byb3BlcnR5XSA9PT0gMCA/IHZhbHVlW3Byb3BlcnR5XSA6ICcnO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcm93W2NvbHVtbi5wcm9wZXJ0eV07XG4gICAgfVxuICB9XG5cbiAgZ2V0Qm9vbGVhbkxhYmVsKHJvd1ZhbHVlOiBhbnksIGNvbHVtbkJvb2xlYW46IFBvVGFibGVDb2x1bW4pOiBzdHJpbmcge1xuICAgIGlmIChyb3dWYWx1ZSB8fCByb3dWYWx1ZSA9PT0gZmFsc2UgfHwgcm93VmFsdWUgPT09IDApIHtcbiAgICAgIHJvd1ZhbHVlID0gY29udmVydFRvQm9vbGVhbihyb3dWYWx1ZSk7XG5cbiAgICAgIGlmIChjb2x1bW5Cb29sZWFuLmJvb2xlYW4pIHtcbiAgICAgICAgcmV0dXJuIHJvd1ZhbHVlID8gY29sdW1uQm9vbGVhbi5ib29sZWFuLnRydWVMYWJlbCB8fCAnU2ltJyA6IGNvbHVtbkJvb2xlYW4uYm9vbGVhbi5mYWxzZUxhYmVsIHx8ICdOw6NvJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiByb3dWYWx1ZSA/ICdTaW0nIDogJ07Do28nO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByb3dWYWx1ZTtcbiAgfVxuXG4gIGdldENvbHVtbkljb25zKHJvdzogYW55LCBjb2x1bW46IFBvVGFibGVDb2x1bW4pIHtcbiAgICBjb25zdCByb3dJY29ucyA9IHRoaXMuZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pO1xuXG4gICAgaWYgKGNvbHVtbi5pY29ucykge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocm93SWNvbnMpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1lcmdlQ3VzdG9tSWNvbnMocm93SWNvbnMsIGNvbHVtbi5pY29ucyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5maW5kQ3VzdG9tSWNvbihyb3dJY29ucywgY29sdW1uKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcm93SWNvbnM7XG4gIH1cblxuICBnZXRDb2x1bW5MYWJlbChyb3c6IGFueSwgY29sdW1uTGFiZWw6IFBvVGFibGVDb2x1bW4pOiBQb1RhYmxlQ29sdW1uTGFiZWwge1xuICAgIHJldHVybiBjb2x1bW5MYWJlbC5sYWJlbHMuZmluZChsYWJlbEl0ZW0gPT4gdGhpcy5nZXRDZWxsRGF0YShyb3csIGNvbHVtbkxhYmVsKSA9PT0gbGFiZWxJdGVtLnZhbHVlKTtcbiAgfVxuXG4gIGdldFN1YnRpdGxlQ29sdW1uKHJvdzogYW55LCBzdWJ0aXRsZUNvbHVtbjogUG9UYWJsZUNvbHVtbik6IFBvVGFibGVTdWJ0aXRsZUNvbHVtbiB7XG4gICAgcmV0dXJuIHN1YnRpdGxlQ29sdW1uLnN1YnRpdGxlcy5maW5kKHN1YnRpdGxlSXRlbSA9PiB0aGlzLmdldENlbGxEYXRhKHJvdywgc3VidGl0bGVDb2x1bW4pID09PSBzdWJ0aXRsZUl0ZW0udmFsdWUpO1xuICB9XG5cbiAgaXNTaG93TWFzdGVyRGV0YWlsKHJvdykge1xuICAgIHJldHVybiAoXG4gICAgICAhdGhpcy5oaWRlRGV0YWlsICYmXG4gICAgICB0aGlzLm5hbWVDb2x1bW5EZXRhaWwgJiZcbiAgICAgIHJvdy4kc2hvd0RldGFpbCAmJlxuICAgICAgdGhpcy5jb250YWluc01hc3RlckRldGFpbChyb3cpICYmXG4gICAgICAhdGhpcy5oYXNSb3dUZW1wbGF0ZVxuICAgICk7XG4gIH1cblxuICBpc1Nob3dSb3dUZW1wbGF0ZShyb3csIGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy50YWJsZVJvd1RlbXBsYXRlICYmIHRoaXMudGFibGVSb3dUZW1wbGF0ZS5wb1RhYmxlUm93VGVtcGxhdGVTaG93KSB7XG4gICAgICByZXR1cm4gdGhpcy50YWJsZVJvd1RlbXBsYXRlLnBvVGFibGVSb3dUZW1wbGF0ZVNob3cocm93LCBpbmRleCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBvbkNsaWNrTGluayhldmVudCwgcm93LCBjb2x1bW46IFBvVGFibGVDb2x1bW4pIHtcbiAgICBpZiAoIXRoaXMuY2hlY2tEaXNhYmxlZChyb3csIGNvbHVtbikpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2hhbmdlVmlzaWJsZUNvbHVtbnMoY29sdW1uczogQXJyYXk8c3RyaW5nPikge1xuICAgIHRoaXMuY2hhbmdlVmlzaWJsZUNvbHVtbnMuZW1pdChjb2x1bW5zKTtcbiAgfVxuXG4gIG9uQ29sdW1uUmVzdG9yZU1hbmFnZXIodmFsdWU6IEFycmF5PFN0cmluZz4pIHtcbiAgICB0aGlzLmNvbHVtblJlc3RvcmVNYW5hZ2VyLmVtaXQodmFsdWUpO1xuICB9XG5cbiAgb25WaXNpYmxlQ29sdW1uc0NoYW5nZShjb2x1bW5zOiBBcnJheTxQb1RhYmxlQ29sdW1uPikge1xuICAgIHRoaXMuY29sdW1ucyA9IGNvbHVtbnM7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICB0b29sdGlwTW91c2VFbnRlcihldmVudDogYW55LCBjb2x1bW4/OiBQb1RhYmxlQ29sdW1uLCByb3c/OiBhbnkpIHtcbiAgICB0aGlzLnRvb2x0aXBUZXh0ID0gdW5kZWZpbmVkO1xuXG4gICAgaWYgKGV2ZW50LnRhcmdldC5vZmZzZXRXaWR0aCA8IGV2ZW50LnRhcmdldC5zY3JvbGxXaWR0aCAmJiBldmVudC50YXJnZXQuaW5uZXJUZXh0LnRyaW0oKSkge1xuICAgICAgcmV0dXJuICh0aGlzLnRvb2x0aXBUZXh0ID0gZXZlbnQudGFyZ2V0LmlubmVyVGV4dCk7XG4gICAgfVxuXG4gICAgaWYgKGNvbHVtbikge1xuICAgICAgdGhpcy5jaGVja2luZ0lmQ29sdW1uSGFzVG9vbHRpcChjb2x1bW4sIHJvdyk7XG4gICAgfVxuICB9XG5cbiAgdG9vbHRpcE1vdXNlTGVhdmUoKSB7XG4gICAgdGhpcy50b29sdGlwVGV4dCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHRvZ2dsZVBvcHVwKHJvdywgdGFyZ2V0UmVmKSB7XG4gICAgdGhpcy5wb3B1cFRhcmdldCA9IHRhcmdldFJlZjtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblxuICAgIHRoaXMucG9Qb3B1cENvbXBvbmVudC50b2dnbGUocm93KTtcbiAgfVxuXG4gIHRyYWNrQnkoaW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIHZhbGlkYXRlVGFibGVBY3Rpb24ocm93OiBhbnksIHRhYmxlQWN0aW9uOiBhbnkpIHtcbiAgICBpZiAodHlwZW9mIHRhYmxlQWN0aW9uLmRpc2FibGVkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gdGFibGVBY3Rpb24uZGlzYWJsZWQocm93KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRhYmxlQWN0aW9uLmRpc2FibGVkO1xuICAgIH1cbiAgfVxuXG4gIG9uT3BlbkNvbHVtbk1hbmFnZXIoKSB7XG4gICAgdGhpcy5sYXN0VmlzaWJsZUNvbHVtbnNTZWxlY3RlZCA9IFsuLi50aGlzLmNvbHVtbnNdO1xuICB9XG5cbiAgb25GaWx0ZXJlZEl0ZW1zQ2hhbmdlKGl0ZW1zOiBBcnJheTxhbnk+KTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXJlZEl0ZW1zID0gaXRlbXM7XG4gIH1cblxuICAvKipcbiAgICogTcOpdG9kbyBxdWUgcmVtb3ZlIHVtIGl0ZW0gZGEgdGFiZWxhLlxuICAgKlxuICAgKiBAcGFyYW0geyBudW1iZXIgfCB7IGtleTogdmFsdWUgfSB9IGl0ZW0gw41uZGljZSBkYSBsaW5oYSBvdSBvIGl0ZW0gcXVlIHNlcsOhIHJlbW92aWRvLlxuICAgKiA+IEFvIHJlbW92ZXIgbyBpdGVtLCBhIGxpbmhhIHF1ZSBvIHJlcHJlc2VudGEgc2Vyw6EgZXhjbHXDrWRhIGRhIHRhYmVsYS5cbiAgICovXG4gIHJlbW92ZUl0ZW0oaXRlbTogbnVtYmVyIHwgeyBba2V5OiBzdHJpbmddOiBhbnkgfSkge1xuICAgIGlmIChpdGVtIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICB0aGlzLml0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoZmlsdGVySXRlbSA9PiBmaWx0ZXJJdGVtICE9PSBpdGVtKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBpdGVtID09PSAnbnVtYmVyJykge1xuICAgICAgY29uc3QgaW5kZXg6IG51bWJlciA9IGl0ZW07XG4gICAgICB0aGlzLml0ZW1zLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcXVlIGF0dWFsaXphIHVtIGl0ZW0gZGEgdGFiZWxhLlxuICAgKlxuICAgKiBAcGFyYW0geyBudW1iZXIgfCB7IGtleTogdmFsdWUgfSB9IGl0ZW0gw41uZGljZSBkYSBsaW5oYSBvdSBvIGl0ZW0gcXVlIHNlcsOhIGF0dWFsaXphZG8uXG4gICAqIEBwYXJhbSB7IHsga2V5OiB2YWx1ZSB9IH0gdXBkYXRlZEl0ZW0gSXRlbSBxdWUgZm9pIGF0dWFsaXphZG8uXG4gICAqID4gQW8gYXR1YWxpemFyIG8gaXRlbSwgYSBpbmZvcm1hw6fDo28gc2Vyw6EgYWx0ZXJhZGEgbmEgdGFiZWxhLlxuICAgKi9cbiAgdXBkYXRlSXRlbShpdGVtOiBudW1iZXIgfCB7IFtrZXk6IHN0cmluZ106IGFueSB9LCB1cGRhdGVkSXRlbTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkge1xuICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHRoaXMuaXRlbXMuc3BsaWNlKGl0ZW0sIDEsIHVwZGF0ZWRJdGVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLml0ZW1zLmZpbmRJbmRleChpbmRleEl0ZW0gPT4gaW5kZXhJdGVtID09PSBpdGVtKTtcbiAgICAgIHRoaXMuaXRlbXMuc3BsaWNlKGluZGV4LCAxLCB1cGRhdGVkSXRlbSk7XG4gICAgfVxuICB9XG5cbiAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8QXJyYXk8c3RyaW5nPj4pIHtcbiAgICBpZiAoIXRoaXMubWFpbkNvbHVtbnNbZXZlbnQuY3VycmVudEluZGV4XS5maXhlZCkge1xuICAgICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMubWFpbkNvbHVtbnMsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG5cbiAgICAgIGlmICh0aGlzLmhpZGVDb2x1bW5zTWFuYWdlciA9PT0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy5uZXdPcmRlckNvbHVtbnMgPSB0aGlzLm1haW5Db2x1bW5zO1xuICAgICAgICBjb25zdCBkZXRhaWwgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5wcm9wZXJ0eSA9PT0gJ2RldGFpbCcpWzBdO1xuXG4gICAgICAgIGlmIChkZXRhaWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMubmV3T3JkZXJDb2x1bW5zLnB1c2goZGV0YWlsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29sdW1ucy5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgaWYgKCFpdGVtLnZpc2libGUpIHtcbiAgICAgICAgICAgIHRoaXMubmV3T3JkZXJDb2x1bW5zLnNwbGljZShpbmRleCwgMCwgaXRlbSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb2x1bW5zID0gdGhpcy5uZXdPcmRlckNvbHVtbnM7XG5cbiAgICAgICAgdGhpcy5vblZpc2libGVDb2x1bW5zQ2hhbmdlKHRoaXMubmV3T3JkZXJDb2x1bW5zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0VGVtcGxhdGUoY29sdW1uOiBQb1RhYmxlQ29sdW1uKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgY29uc3QgdGVtcGxhdGU6IFBvVGFibGVDb2x1bW5UZW1wbGF0ZURpcmVjdGl2ZSA9IHRoaXMudGFibGVDb2x1bW5UZW1wbGF0ZXMuZmluZChcbiAgICAgIHRhYmxlQ29sdW1uVGVtcGxhdGUgPT4gdGFibGVDb2x1bW5UZW1wbGF0ZS50YXJnZXRQcm9wZXJ0eSA9PT0gY29sdW1uLnByb3BlcnR5XG4gICAgKTtcbiAgICBpZiAoIXRlbXBsYXRlKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBOw6NvIGZvaSBwb3Nzw612ZWwgZW5jb250cmFyIG8gdGVtcGxhdGUgcGFyYSBhIGNvbHVuYTogJHtjb2x1bW4ucHJvcGVydHl9LCBwb3IgZ2VudGlsZXphIGluZm9ybWUgYSBwcm9wcmllZGFkZSBbcC1wcm9wZXJ0eV1gXG4gICAgICApO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB0ZW1wbGF0ZS50ZW1wbGF0ZVJlZjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRXaWR0aENvbHVtbk1hbmFnZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uTWFuYWdlcj8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb2x1bW5XaWR0aEFjdGlvbnNMZWZ0KCkge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbkFjdGlvbkxlZnQ/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gIH1cblxuICBwdWJsaWMgaGFzU29tZUZpeGVkKCkge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbnMuc29tZShpdGVtID0+IGl0ZW0uZml4ZWQgPT09IHRydWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNhbGN1bGF0ZUhlaWdodFRhYmxlQ29udGFpbmVyKGhlaWdodCkge1xuICAgIGNvbnN0IHZhbHVlID0gcGFyc2VGbG9hdChoZWlnaHQpO1xuICAgIHRoaXMuaGVpZ2h0VGFibGVDb250YWluZXIgPSB2YWx1ZSA/IHZhbHVlIC0gdGhpcy5nZXRIZWlnaHRUYWJsZUZvb3RlcigpIDogdW5kZWZpbmVkO1xuICAgIHRoaXMuaGVpZ2h0VGFibGVWaXJ0dWFsID0gdGhpcy5oZWlnaHRUYWJsZUNvbnRhaW5lciA/IHRoaXMuaGVpZ2h0VGFibGVDb250YWluZXIgLSB0aGlzLml0ZW1TaXplIDogdW5kZWZpbmVkO1xuICAgIHRoaXMuc2V0VGFibGVPcGFjaXR5KDEpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHZlcmlmeUNhbGN1bGF0ZUhlaWdodFRhYmxlQ29udGFpbmVyKCkge1xuICAgIGlmICh0aGlzLmhlaWdodCAmJiB0aGlzLnZlcmlmeUNoYW5nZUhlaWdodEluRm9vdGVyKCkpIHtcbiAgICAgIHRoaXMuZm9vdGVySGVpZ2h0ID0gdGhpcy5nZXRIZWlnaHRUYWJsZUZvb3RlcigpO1xuXG4gICAgICB0aGlzLmNhbGN1bGF0ZUhlaWdodFRhYmxlQ29udGFpbmVyKHRoaXMuaGVpZ2h0KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgY2hlY2tJbmZpbml0ZVNjcm9sbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYXNJbmZpbml0ZVNjcm9sbCgpKSB7XG4gICAgICBpZiAodGhpcy50YWJsZVZpcnR1YWxTY3JvbGwubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQgPj0gdGhpcy5oZWlnaHQpIHtcbiAgICAgICAgdGhpcy5pbmNsdWRlSW5maW5pdGVTY3JvbGwoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaW5maW5pdGVTY3JvbGwgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGNoYW5nZXNBZnRlckRlbGV0ZShuZXdJdGVtc0ZpbHRlcmVkOiBBcnJheTxhbnk+KSB7XG4gICAgdGhpcy5zZWxlY3RBbGwgPSBmYWxzZTtcbiAgICB0aGlzLnNldFNlbGVjdGVkTGlzdCgpO1xuICAgIHRoaXMubW9kYWxEZWxldGUuY2xvc2UoKTtcbiAgICB0aGlzLnBvTm90aWZpY2F0aW9uLnN1Y2Nlc3ModGhpcy5saXRlcmFscy5kZWxldGVTdWNjZXNzZnVsKTtcbiAgICB0aGlzLmV2ZW50RGVsZXRlLmVtaXQobmV3SXRlbXNGaWx0ZXJlZCk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrQ2hhbmdlc0l0ZW1zKCkge1xuICAgIGNvbnN0IGNoYW5nZXNJdGVtcyA9IHRoaXMuZGlmZmVyLmRpZmYodGhpcy5pdGVtcyk7XG5cbiAgICBpZiAoY2hhbmdlc0l0ZW1zICYmIHRoaXMuc2VsZWN0QWxsKSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNJdGVtcyAmJiAhdGhpcy5oYXNDb2x1bW5zICYmIHRoaXMuaGFzSXRlbXMpIHtcbiAgICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuZ2V0RGVmYXVsdENvbHVtbnModGhpcy5pdGVtc1swXSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja2luZ0lmQ29sdW1uSGFzVG9vbHRpcChjb2x1bW4sIHJvdykge1xuICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2xpbmsnICYmIGNvbHVtbi50b29sdGlwICYmICF0aGlzLmNoZWNrRGlzYWJsZWQocm93LCBjb2x1bW4pKSB7XG4gICAgICByZXR1cm4gKHRoaXMudG9vbHRpcFRleHQgPSBjb2x1bW4udG9vbHRpcCk7XG4gICAgfVxuXG4gICAgaWYgKGNvbHVtbi50eXBlID09PSAnbGFiZWwnKSB7XG4gICAgICBjb25zdCBjb2x1bW5MYWJlbCA9IHRoaXMuZ2V0Q29sdW1uTGFiZWwocm93LCBjb2x1bW4pO1xuICAgICAgcmV0dXJuICh0aGlzLnRvb2x0aXBUZXh0ID0gY29sdW1uTGFiZWw/LnRvb2x0aXApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGVib3VuY2VSZXNpemUoKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dFJlc2l6ZSk7XG4gICAgdGhpcy50aW1lb3V0UmVzaXplID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvLyBzaG93IHRoZSB0YWJsZVxuICAgICAgdGhpcy5zZXRUYWJsZU9wYWNpdHkoMSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGRlbGV0ZUl0ZW1zTG9jYWwobmV3SXRlbXM6IEFycmF5PGFueT4sIG5ld0l0ZW1zRmlsdGVyZWQ6IEFycmF5PGFueT4pIHtcbiAgICBpZiAodGhpcy5oZWlnaHQpIHtcbiAgICAgIHRoaXMuaXRlbXMgPSBuZXdJdGVtc0ZpbHRlcmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgaW5kZXggPSB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XG4gICAgICBuZXdJdGVtc1xuICAgICAgICAuc2xpY2UoKVxuICAgICAgICAucmV2ZXJzZSgpXG4gICAgICAgIC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgIGlmIChpdGVtLiRzZWxlY3RlZCkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVJdGVtKGluZGV4KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaW5kZXgtLTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlc0FmdGVyRGVsZXRlKG5ld0l0ZW1zRmlsdGVyZWQpO1xuICAgIHRoaXMub25GaWx0ZXJlZEl0ZW1zQ2hhbmdlKG5ld0l0ZW1zRmlsdGVyZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWxldGVJdGVtc1NlcnZpY2UobmV3SXRlbXNGaWx0ZXJlZDogQXJyYXk8YW55Pikge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uU2VydmljZS5hZGQoXG4gICAgICB0aGlzLmRlZmF1bHRTZXJ2aWNlLmRlbGV0ZUl0ZW0odGhpcy5wYXJhbURlbGV0ZUFwaSwgdGhpcy5pdGVtc1NlbGVjdGVkWzBdW3RoaXMucGFyYW1EZWxldGVBcGldKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiB2YWx1ZSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuaGFzU2VydmljZSkge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRQYXJhbXMgPSB7XG4gICAgICAgICAgICAgIC4uLnRoaXMucGFyYW1zRmlsdGVyLFxuICAgICAgICAgICAgICBwYWdlU2l6ZTogbmV3SXRlbXNGaWx0ZXJlZC5sZW5ndGggKyAxLFxuICAgICAgICAgICAgICBwYWdlOiAxXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uU2VydmljZS5hZGQoXG4gICAgICAgICAgICAgIHRoaXMuZGVmYXVsdFNlcnZpY2UuZ2V0RmlsdGVyZWRJdGVtcyhmaWx0ZXJlZFBhcmFtcykuc3Vic2NyaWJlKGl0ZW1zID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFRhYmxlUmVzcG9uc2VQcm9wZXJ0aWVzKGl0ZW1zKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuaXRlbXMgPSBuZXdJdGVtc0ZpbHRlcmVkO1xuICAgICAgICAgIHRoaXMuY2hhbmdlc0FmdGVyRGVsZXRlKG5ld0l0ZW1zRmlsdGVyZWQpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogZXJyb3IgPT4ge1xuICAgICAgICAgIHRoaXMucG9Ob3RpZmljYXRpb24uZXJyb3IodGhpcy5saXRlcmFscy5kZWxldGVBcGlFcnJvcik7XG4gICAgICAgICAgdGhpcy5tb2RhbERlbGV0ZS5jbG9zZSgpO1xuICAgICAgICAgIHRoaXMuZXZlbnREZWxldGUuZW1pdCh0aGlzLml0ZW1zKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kQ3VzdG9tSWNvbihyb3dJY29ucywgY29sdW1uOiBQb1RhYmxlQ29sdW1uKSB7XG4gICAgY29uc3QgY3VzdG9tSWNvbiA9IGNvbHVtbi5pY29ucy5maW5kKGljb24gPT4gcm93SWNvbnMgPT09IGljb24udmFsdWUpO1xuICAgIHJldHVybiBjdXN0b21JY29uID8gW2N1c3RvbUljb25dIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRIZWlnaHRUYWJsZUZvb3RlcigpIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZUZvb3RlckVsZW1lbnQgPyB0aGlzLnRhYmxlRm9vdGVyRWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCA6IDA7XG4gIH1cblxuICBwcml2YXRlIGhhc0luZmluaXRlU2Nyb2xsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmluZmluaXRlU2Nyb2xsICYmXG4gICAgICB0aGlzLmhhc0l0ZW1zICYmXG4gICAgICAhdGhpcy5zdWJzY3JpcHRpb25TY3JvbGxFdmVudCAmJlxuICAgICAgdGhpcy5oZWlnaHQgJiZcbiAgICAgIHRoaXMudGFibGVWaXJ0dWFsU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5jbHVkZUluZmluaXRlU2Nyb2xsKCk6IHZvaWQge1xuICAgIHRoaXMuc2Nyb2xsRXZlbnQkID0gdGhpcy5kZWZhdWx0U2VydmljZS5zY3JvbGxMaXN0ZW5lcih0aGlzLnRhYmxlVmlydHVhbFNjcm9sbC5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvblNjcm9sbEV2ZW50ID0gdGhpcy5zY3JvbGxFdmVudCQuc3Vic2NyaWJlKGV2ZW50ID0+IHRoaXMuc2hvd01vcmVJbmZpbml0ZVNjcm9sbChldmVudCkpO1xuXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIG1lcmdlQ3VzdG9tSWNvbnMocm93SWNvbnM6IEFycmF5PHN0cmluZz4sIGN1c3RvbUljb25zOiBBcnJheTxhbnk+KSB7XG4gICAgY29uc3QgbWVyZ2VkSWNvbnMgPSBbXTtcblxuICAgIHJvd0ljb25zLmZvckVhY2goY29sdW1uVmFsdWUgPT4ge1xuICAgICAgY29uc3QgZm91bmRDdXN0b21JY29uID0gY3VzdG9tSWNvbnMuZmluZChcbiAgICAgICAgY3VzdG9tSWNvbiA9PiBjb2x1bW5WYWx1ZSA9PT0gY3VzdG9tSWNvbi5pY29uIHx8IGNvbHVtblZhbHVlID09PSBjdXN0b21JY29uLnZhbHVlXG4gICAgICApO1xuICAgICAgZm91bmRDdXN0b21JY29uID8gbWVyZ2VkSWNvbnMucHVzaChmb3VuZEN1c3RvbUljb24pIDogbWVyZ2VkSWNvbnMucHVzaChjb2x1bW5WYWx1ZSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWVyZ2VkSWNvbnM7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUxpc3RlbmVycygpIHtcbiAgICBpZiAodGhpcy5yZXNpemVMaXN0ZW5lcikge1xuICAgICAgdGhpcy5yZXNpemVMaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNsaWNrTGlzdGVuZXIpIHtcbiAgICAgIHRoaXMuY2xpY2tMaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvblNjcm9sbEV2ZW50KSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvblNjcm9sbEV2ZW50LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRUYWJsZU9wYWNpdHkodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMudGFibGVPcGFjaXR5ID0gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHZlcmlmeUNoYW5nZUhlaWdodEluRm9vdGVyKCkge1xuICAgIHJldHVybiB0aGlzLmZvb3RlckhlaWdodCAhPT0gdGhpcy5nZXRIZWlnaHRUYWJsZUZvb3RlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVTZWxlY3QoY29tcGFyZSwgc2VsZWN0VmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodHlwZW9mIGNvbXBhcmUgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgaWYgKGl0ZW0gPT09IGNvbXBhcmUpIHtcbiAgICAgICAgICBpdGVtLiRzZWxlY3RlZCA9IHNlbGVjdFZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBpZiAoY29tcGFyZShpdGVtKSkge1xuICAgICAgICAgIGl0ZW0uJHNlbGVjdGVkID0gc2VsZWN0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInBvLXRhYmxlLWFjdGlvbnNcIj5cbiAgPGRpdlxuICAgICNjb2x1bW5CYXRjaEFjdGlvbnNcbiAgICAqbmdJZj1cImhhc1ZhbGlkQ29sdW1ucyAmJiBpdGVtc1NlbGVjdGVkLmxlbmd0aCA+IDAgJiYgIWhpZGVCYXRjaEFjdGlvbnNcIlxuICAgIGNsYXNzPVwicG8tdGFibGUtYWN0aW9ucy1iYXRjaC1hY3Rpb25zXCJcbiAgPlxuICAgIDxkaXYgW25nUGx1cmFsXT1cIml0ZW1zU2VsZWN0ZWQubGVuZ3RoXCIgY2xhc3M9XCJwby10YWJsZS1hY3Rpb25zLWJhdGNoLWFjdGlvbnNfX2xhYmVsXCI+XG4gICAgICA8c3Ryb25nPlxuICAgICAgICA8bmctdGVtcGxhdGUgbmdQbHVyYWxDYXNlPVwiPTBcIj57eyBsaXRlcmFscy5ub0l0ZW0gfX08L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgbmdQbHVyYWxDYXNlPVwiPTFcIj57eyBsaXRlcmFscy5vbmVJdGVtIH19PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlIG5nUGx1cmFsQ2FzZT1cIm90aGVyXCI+e3sgaXRlbXNTZWxlY3RlZC5sZW5ndGggfX0ge3sgbGl0ZXJhbHMubXVsdGlwbGVJdGVtcyB9fTwvbmctdGVtcGxhdGU+XG4gICAgICA8L3N0cm9uZz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJwby10YWJsZS1hY3Rpb25zLWJhdGNoLWFjdGlvbnNfX2J1dHRvbnNcIj5cbiAgICAgIDxwby1idXR0b25cbiAgICAgICAgcC1pY29uPVwicG8taWNvbi1kZWxldGVcIlxuICAgICAgICBbcC1kYW5nZXJdPVwidHJ1ZVwiXG4gICAgICAgIFtwLWRpc2FibGVkXT1cIml0ZW1zU2VsZWN0ZWQubGVuZ3RoID4gMSAmJiBzZXJ2aWNlRGVsZXRlQXBpICE9PSB1bmRlZmluZWRcIlxuICAgICAgICBbcC1sYWJlbF09XCJsaXRlcmFscy5kZWxldGVcIlxuICAgICAgICAocC1jbGljayk9XCJtb2RhbERlbGV0ZS5vcGVuKClcIlxuICAgICAgPjwvcG8tYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2ICNjb2x1bW5NYW5hZ2VyICpuZ0lmPVwiaGFzVmFsaWRDb2x1bW5zICYmICFoaWRlQ29sdW1uc01hbmFnZXJcIiBjbGFzcz1cInBvLXRhYmxlLWFjdGlvbnMtY29sdW1uLW1hbmFnZXJcIj5cbiAgICA8cG8tYnV0dG9uXG4gICAgICAjY29sdW1uTWFuYWdlclRhcmdldFxuICAgICAgcC1pY29uPVwicG8taWNvbi1zZXR0aW5nc1wiXG4gICAgICBwLWtpbmQ9XCJ0ZXJ0aWFyeVwiXG4gICAgICBwLXRvb2x0aXAtcG9zaXRpb249XCJsZWZ0XCJcbiAgICAgIFtwLWFyaWEtbGFiZWxdPVwibGl0ZXJhbHMuY29sdW1uc01hbmFnZXJcIlxuICAgICAgW3AtdG9vbHRpcF09XCJsaXRlcmFscy5jb2x1bW5zTWFuYWdlclwiXG4gICAgICAocC1jbGljayk9XCJvbk9wZW5Db2x1bW5NYW5hZ2VyKClcIlxuICAgID48L3BvLWJ1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj1cIiFoaWRlVGFibGVTZWFyY2ggJiYgaGFzVmFsaWRDb2x1bW5zXCIgY2xhc3M9XCJwby10YWJsZS1zZWFyY2hcIj5cbiAgICA8cG8tc2VhcmNoXG4gICAgICBbcC1pdGVtc109XCJpdGVtc1wiXG4gICAgICBbcC1maWx0ZXIta2V5c109XCJmaWx0ZXJlZENvbHVtbnNcIlxuICAgICAgW3AtZmlsdGVyLXR5cGVdPVwiZmlsdGVyVHlwZVwiXG4gICAgICAocC1maWx0ZXJlZC1pdGVtcy1jaGFuZ2UpPVwib25GaWx0ZXJlZEl0ZW1zQ2hhbmdlKCRldmVudClcIlxuICAgID5cbiAgICA8L3BvLXNlYXJjaD5cbiAgPC9kaXY+XG48L2Rpdj5cbjxwby1jb250YWluZXIgKm5nSWY9XCJjb250YWluZXI7IGVsc2UgdGFibGVDb250YWluZXJUZW1wbGF0ZVwiIHAtbm8tcGFkZGluZz5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlQ29udGFpbmVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbjwvcG8tY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI3RhYmxlQ29udGFpbmVyVGVtcGxhdGU+XG4gIDxkaXYgW2NsYXNzLnBvLXRhYmxlLWNvbnRhaW5lci1yZWxhdGl2ZV09XCJsb2FkaW5nXCI+XG4gICAgPGRpdiAqbmdJZj1cImxvYWRpbmdcIiBjbGFzcz1cInBvLXRhYmxlLW92ZXJsYXlcIj5cbiAgICAgIDxwby1sb2FkaW5nIGNsYXNzPVwicG8tdGFibGUtb3ZlcmxheS1jb250ZW50XCIgW3AtdGV4dF09XCJsaXRlcmFscy5sb2FkaW5nRGF0YVwiPjwvcG8tbG9hZGluZz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJwby10YWJsZS1tYWluLWNvbnRhaW5lclwiPlxuICAgICAgPGRpdlxuICAgICAgICAjdGFibGVXcmFwcGVyXG4gICAgICAgIGNsYXNzPVwicG8tdGFibGUtd3JhcHBlclwiXG4gICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZml4ZWQtY29sdW1ucy1waXhlbHNdPVwiYWxsQ29sdW1uc1dpZHRoUGl4ZWxzXCJcbiAgICAgICAgW3N0eWxlLm9wYWNpdHldPVwidGFibGVPcGFjaXR5XCJcbiAgICAgID5cbiAgICAgICAgPGRpdiAqbmdJZj1cImhlaWdodFwiIGNsYXNzPVwicG8tdGFibGUtY29udGFpbmVyXCIgW3N0eWxlLmhlaWdodC5weF09XCJoZWlnaHRUYWJsZUNvbnRhaW5lclwiPlxuICAgICAgICAgIDxkaXYgI3BvVGFibGVUYm9keSBjbGFzcz1cInBvLXRhYmxlLWNvbnRhaW5lci1maXhlZC1pbm5lclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlVmlydHVhbFNjcm9sbFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCIhaGVpZ2h0XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInBvLXRhYmxlLWZvb3RlclwiICpuZ0lmPVwiaGFzRm9vdGVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHN1YnRpdGxlQ29sdW1uczsgdHJhY2tCeTogdHJhY2tCeVwiPlxuICAgICAgPHBvLXRhYmxlLXN1YnRpdGxlLWZvb3RlciBbcC1saXRlcmFsc109XCJsaXRlcmFsc1wiIFtwLXN1YnRpdGxlc109XCJjb2x1bW4uc3VidGl0bGVzXCI+IDwvcG8tdGFibGUtc3VidGl0bGUtZm9vdGVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gU2hvdyBNb3JlIEJ1dHRvbiAtLT5cbjxkaXZcbiAgKm5nSWY9XCIhaW5maW5pdGVTY3JvbGxcIlxuICBjbGFzcz1cInBvLXJvdyBwby10YWJsZS1mb290ZXItc2hvdy1tb3JlXCJcbiAgW2NsYXNzLnBvLWludmlzaWJsZV09XCJzaG93TW9yZS5vYnNlcnZlcnMubGVuZ3RoID09PSAwICYmICFoYXNTZXJ2aWNlXCJcbiAgI3RhYmxlRm9vdGVyXG4+XG4gIDxwby1idXR0b25cbiAgICBjbGFzcz1cInBvLW9mZnNldC14bC00IHBvLW9mZnNldC1sZy00IHBvLW9mZnNldC1tZC0zIHBvLWxnLTQgcG8tbWQtNlwiXG4gICAgW3AtZGlzYWJsZWRdPVwic2hvd01vcmVEaXNhYmxlZFwiXG4gICAgW3AtbGFiZWxdPVwibGl0ZXJhbHMubG9hZE1vcmVEYXRhXCJcbiAgICBbcC1sb2FkaW5nXT1cImxvYWRpbmdTaG93TW9yZVwiXG4gICAgKHAtY2xpY2spPVwib25TaG93TW9yZSgpXCJcbiAgPlxuICA8L3BvLWJ1dHRvbj5cbjwvZGl2PlxuXG48IS0tIFRhYmxlIGRlZmF1bHQtLT5cbjxuZy10ZW1wbGF0ZSAjdGFibGVUZW1wbGF0ZT5cbiAgPHRhYmxlXG4gICAgY2xhc3M9XCJwby10YWJsZVwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3BvLXRhYmxlLWludGVyYWN0aXZlJzogc2VsZWN0YWJsZSB8fCBzb3J0LFxuICAgICAgJ3BvLXRhYmxlLXNlbGVjdGFibGUnOiBzZWxlY3RhYmxlLFxuICAgICAgJ3BvLXRhYmxlLXN0cmlwZWQnOiBzdHJpcGVkXG4gICAgfVwiXG4gICAgW2F0dHIucC1zcGFjaW5nXT1cInNwYWNpbmdcIlxuICA+XG4gICAgPHRoZWFkPlxuICAgICAgPHRyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ25vLWhvdmVyJzogaGlkZVNlbGVjdEFsbCwgJ3BvLXRhYmxlLWNvbHVtbi1kcmFnJzogdGhpcy5pc0RyYWdnYWJsZSB9XCJcbiAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlcl09XCIhaGVpZ2h0XCJcbiAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxuICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDx0aFxuICAgICAgICAgICpuZ0lmPVwiaGFzU2VsZWN0YWJsZUNvbHVtblwiXG4gICAgICAgICAgW3N0eWxlLnBvaW50ZXItZXZlbnRzXT1cImhpZGVTZWxlY3RBbGwgPyAnbm9uZScgOiAnYXV0bydcIlxuICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLXNlbGVjdGFibGVcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZpeGVkLWlubmVyXT1cImhlaWdodFwiPlxuICAgICAgICAgICAgPHBvLWNoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9XCJzZWxlY3RBbGxcIlxuICAgICAgICAgICAgICAqbmdJZj1cIiFoaWRlU2VsZWN0QWxsXCJcbiAgICAgICAgICAgICAgKHAtY2hhbmdlKT1cInNlbGVjdEFsbFJvd3MoKVwiXG4gICAgICAgICAgICAgIFtwLWNoZWNrYm94VmFsdWVdPVwic2VsZWN0QWxsID09PSBudWxsID8gJ21peGVkJyA6IHNlbGVjdEFsbFwiXG4gICAgICAgICAgICA+PC9wby1jaGVja2JveD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90aD5cblxuICAgICAgICA8dGhcbiAgICAgICAgICAqbmdJZj1cIihoYXNNYXN0ZXJEZXRhaWxDb2x1bW4gfHwgaGFzUm93VGVtcGxhdGUpICYmICFoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0XCJcbiAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1jb2x1bW4gcG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxcIlxuICAgICAgICA+PC90aD5cblxuICAgICAgICA8IS0tIENvbHVuYSBjcmlhZGEgcGFyYSBjYXNvIGFzIGHDp8O1ZXMgZmlxdWVtIG5vIGxhZG8gZXNxdWVyZG8gLS0+XG4gICAgICAgIDx0aFxuICAgICAgICAgICNjb2x1bW5BY3Rpb25MZWZ0XG4gICAgICAgICAgKm5nSWY9XCIhYWN0aW9uUmlnaHQgJiYgKHZpc2libGVBY3Rpb25zLmxlbmd0aCA+IDEgfHwgaXNTaW5nbGVBY3Rpb24pXCJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxdPVwiIWlzU2luZ2xlQWN0aW9uXCJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLXNpbmdsZS1hY3Rpb25dPVwiaXNTaW5nbGVBY3Rpb25cIlxuICAgICAgICA+PC90aD5cblxuICAgICAgICA8dGggKm5nSWY9XCIhaGFzTWFpbkNvbHVtbnNcIiAjbm9Db2x1bW5zSGVhZGVyIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWNvbHVtbiBwby10ZXh0LWNlbnRlclwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWlnaHQ7IHRoZW4gbm9Db2x1bW5zV2l0aEhlaWdodDsgZWxzZSBub0NvbHVtbnNXaXRob3V0SGVpZ2h0XCI+IDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3RoPlxuXG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdJZj1cInRoaXMuaXNEcmFnZ2FibGUgfHwgaGFzU29tZUZpeGVkKCk7IHRoZW4gdGFibGVEZWZhdWx0VGhEcmFnRHJvcDsgZWxzZSB0YWJsZURlZmF1bHRUaERlZmF1bHRcIlxuICAgICAgICA+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3RhYmxlRGVmYXVsdFRoRHJhZ0Ryb3A+XG4gICAgICAgICAgPHRoXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIG1haW5Db2x1bW5zOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWVsbGlwc2lzIHAtZWxlbWVudCBwby1mcm96ZW4tY29sdW1uXCJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1wby10YWJsZS1jb2x1bW4tbmFtZV09XCJjb2x1bW4ubGFiZWwgfHwgKGNvbHVtbi5wcm9wZXJ0eSB8IHRpdGxlY2FzZSkgfCBsb3dlcmNhc2VcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLWNsaWNrYWJsZV09XCIoc29ydCAmJiBjb2x1bW4uc29ydGFibGUgIT09IGZhbHNlKSB8fCBoYXNTZXJ2aWNlXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ3BvLXRhYmxlLWhlYWRlci1zb3J0ZWQnOlxuICAgICAgICAgICAgICAgIHNvcnQgJiZcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShzb3J0ZWRDb2x1bW4/LnByb3BlcnR5KSA9PT0gSlNPTi5zdHJpbmdpZnkoY29sdW1uKSAmJlxuICAgICAgICAgICAgICAgIChzb3J0ZWRDb2x1bW4uYXNjZW5kaW5nIHx8ICFzb3J0ZWRDb2x1bW4uYXNjZW5kaW5nKVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLXN1YnRpdGxlXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4tZHJhZy1ib3hdPVwidGhpcy5pc0RyYWdnYWJsZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwic29ydENvbHVtbihjb2x1bW4pXCJcbiAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgIGNka0RyYWdMb2NrQXhpcz1cInhcIlxuICAgICAgICAgICAgW2Nka0RyYWdEaXNhYmxlZF09XCJjb2x1bW4uZml4ZWQgPyAndHJ1ZScgOiAnZmFsc2UnXCJcbiAgICAgICAgICAgIFtwRnJvemVuQ29sdW1uXT1cImNvbHVtbi5maXhlZFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1mbGV4XCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1maXhlZC1pbm5lcl09XCJoZWlnaHRcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZsZXgtcmlnaHRdPVwiY29sdW1uLnR5cGUgPT09ICdjdXJyZW5jeScgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1mbGV4LWNlbnRlcl09XCJjb2x1bW4udHlwZSA9PT0gJ3N1YnRpdGxlJ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0aGlzLmlzRHJhZ2dhYmxlICYmICFjb2x1bW4uZml4ZWRcIj5cbiAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICBjZGtEcmFnSGFuZGxlXG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjI0XCJcbiAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjI0XCJcbiAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjlcIiBjeT1cIjZcIiByPVwiMlwiIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTVcIiBjeT1cIjZcIiByPVwiMlwiIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiOVwiIGN5PVwiMTJcIiByPVwiMlwiIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTVcIiBjeT1cIjEyXCIgcj1cIjJcIiBmaWxsPVwiYmxhY2tcIiAvPlxuICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjlcIiBjeT1cIjE4XCIgcj1cIjJcIiBmaWxsPVwiYmxhY2tcIiAvPlxuICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjE1XCIgY3k9XCIxOFwiIHI9XCIyXCIgZmlsbD1cImJsYWNrXCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50SGVhZGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4gfVwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvdGg+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjdGFibGVEZWZhdWx0VGhEZWZhdWx0PlxuICAgICAgICAgIDx0aFxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBtYWluQ29sdW1uczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVwiXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1lbGxpcHNpcyBwLWVsZW1lbnQgcG8tZnJvemVuLWNvbHVtblwiXG4gICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtcG8tdGFibGUtY29sdW1uLW5hbWVdPVwiY29sdW1uLmxhYmVsIHx8IChjb2x1bW4ucHJvcGVydHkgfCB0aXRsZWNhc2UpIHwgbG93ZXJjYXNlXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby1jbGlja2FibGVdPVwiKHNvcnQgJiYgY29sdW1uLnNvcnRhYmxlICE9PSBmYWxzZSkgfHwgaGFzU2VydmljZVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdwby10YWJsZS1oZWFkZXItc29ydGVkJzpcbiAgICAgICAgICAgICAgICBzb3J0ICYmXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoc29ydGVkQ29sdW1uPy5wcm9wZXJ0eSkgPT09IEpTT04uc3RyaW5naWZ5KGNvbHVtbikgJiZcbiAgICAgICAgICAgICAgICAoc29ydGVkQ29sdW1uLmFzY2VuZGluZyB8fCAhc29ydGVkQ29sdW1uLmFzY2VuZGluZylcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1zdWJ0aXRsZV09XCJjb2x1bW4udHlwZSA9PT0gJ3N1YnRpdGxlJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwic29ydENvbHVtbihjb2x1bW4pXCJcbiAgICAgICAgICAgIFtwRnJvemVuQ29sdW1uXT1cImNvbHVtbi5maXhlZFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1mbGV4XCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1maXhlZC1pbm5lcl09XCJoZWlnaHRcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZsZXgtcmlnaHRdPVwiY29sdW1uLnR5cGUgPT09ICdjdXJyZW5jeScgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1mbGV4LWNlbnRlcl09XCJjb2x1bW4udHlwZSA9PT0gJ3N1YnRpdGxlJ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50SGVhZGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4gfVwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvdGg+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPHRoXG4gICAgICAgICAgKm5nSWY9XCJoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0ICYmIChoYXNWaXNpYmxlQWN0aW9ucyB8fCBoaWRlQ29sdW1uc01hbmFnZXIpXCJcbiAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1jb2x1bW4gcG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxcIlxuICAgICAgICA+PC90aD5cblxuICAgICAgICA8dGhcbiAgICAgICAgICAqbmdJZj1cImhhc1Zpc2libGVBY3Rpb25zICYmIGFjdGlvblJpZ2h0ICYmICh2aXNpYmxlQWN0aW9ucy5sZW5ndGggPiAxIHx8IGlzU2luZ2xlQWN0aW9uKVwiXG4gICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1zaW5nbGUtYWN0aW9uXT1cImlzU2luZ2xlQWN0aW9uXCJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWFjdGlvbnNdPVwiIWlzU2luZ2xlQWN0aW9uXCJcbiAgICAgICAgPjwvdGg+XG4gICAgICA8L3RyPlxuICAgIDwvdGhlYWQ+XG5cbiAgICA8dGJvZHkgY2xhc3M9XCJwby10YWJsZS1ncm91cC1yb3dcIiAqbmdJZj1cIiFoYXNJdGVtcyB8fCAhaGFzTWFpbkNvbHVtbnNcIj5cbiAgICAgIDx0ciBjbGFzcz1cInBvLXRhYmxlLXJvdyBwby10YWJsZS1yb3ctbm8tZGF0YVwiPlxuICAgICAgICA8dGQgW2NvbFNwYW5dPVwiY29sdW1uQ291bnRcIiBjbGFzcz1cInBvLXRhYmxlLW5vLWRhdGEgcG8tdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICA8c3Bhbj4ge3sgbGl0ZXJhbHMubm9EYXRhIH19IDwvc3Bhbj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgPC90Ym9keT5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNNYWluQ29sdW1uc1wiPlxuICAgICAgPHRib2R5IGNsYXNzPVwicG8tdGFibGUtZ3JvdXAtcm93XCIgKm5nRm9yPVwibGV0IHJvdyBvZiBmaWx0ZXJlZEl0ZW1zOyBsZXQgcm93SW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVwiPlxuICAgICAgICA8dHIgY2xhc3M9XCJwby10YWJsZS1yb3dcIiBbY2xhc3MucG8tdGFibGUtcm93LWFjdGl2ZV09XCJyb3cuJHNlbGVjdGVkIHx8IChyb3cuJHNlbGVjdGVkID09PSBudWxsICYmIHNlbGVjdGFibGUpXCI+XG4gICAgICAgICAgPHRkICpuZ0lmPVwic2VsZWN0YWJsZVwiIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLXNlbGVjdGFibGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaW5nbGVTZWxlY3QgPyBpbnB1dFJhZGlvIDogaW5wdXRDaGVja2JveDsgY29udGV4dDogeyAkaW1wbGljaXQ6IHJvdyB9XCI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgPCEtLSBWYWxpZGEgc2UgYSBvcmlnZW0gZG8gZGV0YWlsIMOpIHBlbG8gaW5wdXQgZG8gcG8tdGFibGUgLS0+XG4gICAgICAgICAgPHRkXG4gICAgICAgICAgICAqbmdJZj1cImNvbHVtbk1hc3RlckRldGFpbCAmJiAhaGlkZURldGFpbCAmJiAhaGFzUm93VGVtcGxhdGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tZGV0YWlsLXRvZ2dsZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGV0YWlsKHJvdylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwb1RhYmxlQ29sdW1uRGV0YWlsXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC90ZD5cblxuICAgICAgICAgIDwhLS0gQ29sdW5hIGNvbSBhcyBhw6fDtWVzIG5hIGVzcXVlcmRhIChwYWRyw6NvKS0tPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgKm5nSWY9XCIhYWN0aW9uUmlnaHQgJiYgKHZpc2libGVBY3Rpb25zLmxlbmd0aCA+IDEgfHwgaXNTaW5nbGVBY3Rpb24pXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIkFjdGlvbnNDb2x1bW5UZW1wbGF0ZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgPCEtLSBWYWxpZGEgc2UgYSBvcmlnZW0gZG8gZGV0YWlsIMOpIHBlbGEgZGlyZXRpdmEgLS0+XG4gICAgICAgICAgPHRkXG4gICAgICAgICAgICAqbmdJZj1cImhhc1Jvd1RlbXBsYXRlICYmICFoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0XCJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWRldGFpbC10b2dnbGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURldGFpbChyb3cpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicG9UYWJsZUNvbHVtbkRldGFpbFwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgbWFpbkNvbHVtbnM7IGxldCBjb2x1bW5JbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWNvbHVtbl09XCJjb2x1bW4udHlwZSAhPT0gJ2ljb24nXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4tcmlnaHRdPVwiY29sdW1uLnR5cGUgPT09ICdjdXJyZW5jeScgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4tY2VudGVyXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4taWNvbnNdPVwiY29sdW1uLnR5cGUgPT09ICdpY29uJ1wiXG4gICAgICAgICAgICBbcEZyb3plbkNvbHVtbl09XCJjb2x1bW4uZml4ZWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJwLWVsZW1lbnQgcG8tZnJvemVuLWNvbHVtblwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJnZXRDbGFzc0NvbG9yKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiaGFzU2VsZWN0YWJsZVJvdygpID8gc2VsZWN0Um93KHJvdykgOiAnamF2YXNjcmlwdDo7J1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1jZWxsIHBvLXRhYmxlLWJvZHktZWxsaXBzaXMgbm90cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbbmdTd2l0Y2hdPVwiY29sdW1uLnR5cGVcIlxuICAgICAgICAgICAgICBbcC10b29sdGlwXT1cInRvb2x0aXBUZXh0XCJcbiAgICAgICAgICAgICAgW3AtYXBwZW5kLWluLWJvZHldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cInRvb2x0aXBNb3VzZUVudGVyKCRldmVudCwgY29sdW1uLCByb3cpXCJcbiAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwidG9vbHRpcE1vdXNlTGVhdmUoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInY29sdW1uVGVtcGxhdGUnXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImdldFRlbXBsYXRlKGNvbHVtbik7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfVwiPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidjZWxsVGVtcGxhdGUnXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlQ2VsbFRlbXBsYXRlPy50ZW1wbGF0ZVJlZjsgY29udGV4dDogeyByb3c6IHJvdywgY29sdW1uOiBjb2x1bW4gfVwiPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidib29sZWFuJ1wiPlxuICAgICAgICAgICAgICAgIHt7IGdldEJvb2xlYW5MYWJlbChnZXRDZWxsRGF0YShyb3csIGNvbHVtbiksIGNvbHVtbikgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInY3VycmVuY3knXCI+XG4gICAgICAgICAgICAgICAge3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIHwgY3VycmVuY3k6IGNvbHVtbi5mb3JtYXQ6J3N5bWJvbCc6JzEuMi0yJyB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiPlxuICAgICAgICAgICAgICAgIHt7IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB8IGRhdGU6IGNvbHVtbi5mb3JtYXQgfHwgJ2RkL01NL3l5eXknIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3RpbWUnXCI+XG4gICAgICAgICAgICAgICAge3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIHwgcG9fdGltZTogY29sdW1uLmZvcm1hdCB8fCAnSEg6bW06c3MuZmZmZmZmJyB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidkYXRlVGltZSdcIj5cbiAgICAgICAgICAgICAgICB7eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfCBkYXRlOiBjb2x1bW4uZm9ybWF0IHx8ICdkZC9NTS95eXl5IEhIOm1tOnNzJyB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidudW1iZXInXCI+XG4gICAgICAgICAgICAgICAge3sgZm9ybWF0TnVtYmVyKGdldENlbGxEYXRhKHJvdywgY29sdW1uKSwgY29sdW1uLmZvcm1hdCkgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxwby10YWJsZS1jb2x1bW4tbGlua1xuICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInbGluaydcIlxuICAgICAgICAgICAgICAgIFtwLWFjdGlvbl09XCJjb2x1bW4uYWN0aW9uXCJcbiAgICAgICAgICAgICAgICBbcC1kaXNhYmxlZF09XCJjaGVja0Rpc2FibGVkKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgW3AtbGlua109XCJyb3dbY29sdW1uLmxpbmtdXCJcbiAgICAgICAgICAgICAgICBbcC1yb3ddPVwicm93XCJcbiAgICAgICAgICAgICAgICBbcC12YWx1ZV09XCJnZXRDZWxsRGF0YShyb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrTGluaygkZXZlbnQsIHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9wby10YWJsZS1jb2x1bW4tbGluaz5cblxuICAgICAgICAgICAgICA8cG8tdGFibGUtY29sdW1uLWljb25cbiAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2ljb24nXCJcbiAgICAgICAgICAgICAgICBbcC1jb2x1bW5dPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICBbcC1pY29uc109XCJnZXRDb2x1bW5JY29ucyhyb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICAgIFtwLXJvd109XCJyb3dcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvcG8tdGFibGUtY29sdW1uLWljb24+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidzdWJ0aXRsZSdcIj5cbiAgICAgICAgICAgICAgICA8cG8tdGFibGUtc3VidGl0bGUtY2lyY2xlIFtwLXN1YnRpdGxlXT1cImdldFN1YnRpdGxlQ29sdW1uKHJvdywgY29sdW1uKVwiPjwvcG8tdGFibGUtc3VidGl0bGUtY2lyY2xlPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInbGFiZWwnXCI+XG4gICAgICAgICAgICAgICAgPHBvLXRhYmxlLWNvbHVtbi1sYWJlbCBbcC12YWx1ZV09XCJnZXRDb2x1bW5MYWJlbChyb3csIGNvbHVtbilcIj4gPC9wby10YWJsZS1jb2x1bW4tbGFiZWw+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoRGVmYXVsdD57eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgPHRkXG4gICAgICAgICAgICAqbmdJZj1cImhhc1Jvd1RlbXBsYXRlV2l0aEFycm93RGlyZWN0aW9uUmlnaHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tZGV0YWlsLXRvZ2dsZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGV0YWlsKHJvdylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwb1RhYmxlQ29sdW1uRGV0YWlsXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC90ZD5cblxuICAgICAgICAgIDwhLS0gQ29sdW5hIGRlIGHDp29lcyBuYSBkaXJlaXRhIC0tPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgKm5nSWY9XCJhY3Rpb25SaWdodFwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJBY3Rpb25zQ29sdW1uVGVtcGxhdGVcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC90cj5cblxuICAgICAgICA8dHIgKm5nSWY9XCJoYXNNYWluQ29sdW1ucyAmJiBoYXNSb3dUZW1wbGF0ZSAmJiByb3cuJHNob3dEZXRhaWwgJiYgaXNTaG93Um93VGVtcGxhdGUocm93LCByb3dJbmRleClcIj5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJwby10YWJsZS1yb3ctdGVtcGxhdGUtY29udGFpbmVyXCIgW2NvbFNwYW5dPVwiY29sdW1uQ291bnRGb3JNYXN0ZXJEZXRhaWxcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0YWJsZVJvd1RlbXBsYXRlLnRlbXBsYXRlUmVmXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cblxuICAgICAgICA8dHIgKm5nSWY9XCJoYXNNYWluQ29sdW1ucyAmJiBpc1Nob3dNYXN0ZXJEZXRhaWwocm93KVwiPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1kZXRhaWxcIiBbY29sU3Bhbl09XCJjb2x1bW5Db3VudEZvck1hc3RlckRldGFpbFwiPlxuICAgICAgICAgICAgPHBvLXRhYmxlLWRldGFpbFxuICAgICAgICAgICAgICBbcC1zZWxlY3RhYmxlXT1cInNlbGVjdGFibGUgJiYgIWRldGFpbEhpZGVTZWxlY3RcIlxuICAgICAgICAgICAgICBbcC1kZXRhaWxdPVwiY29sdW1uTWFzdGVyRGV0YWlsLmRldGFpbFwiXG4gICAgICAgICAgICAgIFtwLWl0ZW1zXT1cInJvd1tuYW1lQ29sdW1uRGV0YWlsXVwiXG4gICAgICAgICAgICAgIChwLXNlbGVjdC1yb3cpPVwic2VsZWN0RGV0YWlsUm93KCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9wby10YWJsZS1kZXRhaWw+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGJvZHk+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvdGFibGU+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIFRhYmxlIHdpdGggdmlydHVhbCBzY3JvbGwgLS0+XG48bmctdGVtcGxhdGUgI3RhYmxlVmlydHVhbFNjcm9sbFRlbXBsYXRlPlxuICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XG4gICAgI3RhYmxlVmlydHVhbFNjcm9sbFxuICAgIFtpdGVtU2l6ZV09XCJpdGVtU2l6ZVwiXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWlnaHRUYWJsZUNvbnRhaW5lclwiXG4gICAgW21pbkJ1ZmZlclB4XT1cImhlaWdodFRhYmxlQ29udGFpbmVyIDwgMTAwID8gMTAwIDogaGVpZ2h0VGFibGVDb250YWluZXJcIlxuICAgIFttYXhCdWZmZXJQeF09XCJoZWlnaHRUYWJsZUNvbnRhaW5lciA8IDIwMCA/IDIwMCA6IGhlaWdodFRhYmxlQ29udGFpbmVyXCJcbiAgPlxuICAgIDx0YWJsZVxuICAgICAgY2xhc3M9XCJwby10YWJsZVwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdwby10YWJsZS1pbnRlcmFjdGl2ZSc6IHNlbGVjdGFibGUgfHwgc29ydCxcbiAgICAgICAgJ3BvLXRhYmxlLXNlbGVjdGFibGUnOiBzZWxlY3RhYmxlLFxuICAgICAgICAncG8tdGFibGUtc3RyaXBlZCc6IHN0cmlwZWRcbiAgICAgIH1cIlxuICAgICAgW25nU3R5bGVdPVwieyAndGFibGUtbGF5b3V0JzogIWhhc0l0ZW1zID8gJ2ZpeGVkJyA6ICdhdXRvJyB9XCJcbiAgICAgIFthdHRyLnAtc3BhY2luZ109XCJzcGFjaW5nXCJcbiAgICA+XG4gICAgICA8dGhlYWQgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItc3RpY2t5XCIgW3N0eWxlLnRvcF09XCJpbnZlcnNlT2ZUcmFuc2xhdGlvblwiPlxuICAgICAgICA8dHJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyXT1cIiFoZWlnaHRcIlxuICAgICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICAgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxuICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx0aFxuICAgICAgICAgICAgKm5nSWY9XCJoYXNTZWxlY3RhYmxlQ29sdW1uXCJcbiAgICAgICAgICAgIFtzdHlsZS5wb2ludGVyLWV2ZW50c109XCJoaWRlU2VsZWN0QWxsID8gJ25vbmUnIDogJ2F1dG8nXCJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLXNlbGVjdGFibGVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1maXhlZC1pbm5lcl09XCJoZWlnaHRcIj5cbiAgICAgICAgICAgICAgPHBvLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgbmFtZT1cInNlbGVjdEFsbFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhaGlkZVNlbGVjdEFsbFwiXG4gICAgICAgICAgICAgICAgKHAtY2hhbmdlKT1cInNlbGVjdEFsbFJvd3MoKVwiXG4gICAgICAgICAgICAgICAgW3AtY2hlY2tib3hWYWx1ZV09XCJzZWxlY3RBbGwgPT09IG51bGwgPyAnbWl4ZWQnIDogc2VsZWN0QWxsXCJcbiAgICAgICAgICAgICAgPjwvcG8tY2hlY2tib3g+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3RoPlxuXG4gICAgICAgICAgPHRoXG4gICAgICAgICAgICAqbmdJZj1cIihoYXNNYXN0ZXJEZXRhaWxDb2x1bW4gfHwgaGFzUm93VGVtcGxhdGUpICYmICFoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0XCJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWNvbHVtbiBwby10YWJsZS1oZWFkZXItbWFzdGVyLWRldGFpbFwiXG4gICAgICAgICAgPjwvdGg+XG5cbiAgICAgICAgICA8IS0tIENvbHVuYSBjcmlhZGEgcGFyYSBjYXNvIGFzIGHDp8O1ZXMgZmlxdWVtIG5vIGxhZG8gZXNxdWVyZG8gLS0+XG4gICAgICAgICAgPHRoXG4gICAgICAgICAgICAjY29sdW1uQWN0aW9uTGVmdFxuICAgICAgICAgICAgKm5nSWY9XCIhYWN0aW9uUmlnaHQgJiYgKHZpc2libGVBY3Rpb25zLmxlbmd0aCA+IDEgfHwgaXNTaW5nbGVBY3Rpb24pXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItbWFzdGVyLWRldGFpbF09XCIhaXNTaW5nbGVBY3Rpb25cIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1zaW5nbGUtYWN0aW9uXT1cImlzU2luZ2xlQWN0aW9uXCJcbiAgICAgICAgICA+PC90aD5cblxuICAgICAgICAgIDx0aCAqbmdJZj1cIiFoYXNNYWluQ29sdW1uc1wiICNub0NvbHVtbnNIZWFkZXIgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItY29sdW1uIHBvLXRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVpZ2h0OyB0aGVuIG5vQ29sdW1uc1dpdGhIZWlnaHQ7IGVsc2Ugbm9Db2x1bW5zV2l0aG91dEhlaWdodFwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3RoPlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgdGhpcy5pc0RyYWdnYWJsZSB8fCBoYXNTb21lRml4ZWQoKTtcbiAgICAgICAgICAgICAgdGhlbiB0YWJsZVZpcnR1YWxTY3JvbGxUaERyYWdEcm9wO1xuICAgICAgICAgICAgICBlbHNlIHRhYmxlVmlydHVhbFNjcm9sbFRoRGVmYXVsdFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICN0YWJsZVZpcnR1YWxTY3JvbGxUaERyYWdEcm9wPlxuICAgICAgICAgICAgPHRoXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgbWFpbkNvbHVtbnM7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlcIlxuICAgICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1lbGxpcHNpcyBwLWVsZW1lbnQgcG8tZnJvemVuLWNvbHVtblwiXG4gICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wby10YWJsZS1jb2x1bW4tbmFtZV09XCJjb2x1bW4ubGFiZWwgfHwgKGNvbHVtbi5wcm9wZXJ0eSB8IHRpdGxlY2FzZSkgfCBsb3dlcmNhc2VcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tY2xpY2thYmxlXT1cIihzb3J0ICYmIGNvbHVtbi5zb3J0YWJsZSAhPT0gZmFsc2UpIHx8IGhhc1NlcnZpY2VcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ3BvLXRhYmxlLWhlYWRlci1zb3J0ZWQnOlxuICAgICAgICAgICAgICAgICAgc29ydCAmJlxuICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoc29ydGVkQ29sdW1uPy5wcm9wZXJ0eSkgPT09IEpTT04uc3RyaW5naWZ5KGNvbHVtbikgJiZcbiAgICAgICAgICAgICAgICAgIChzb3J0ZWRDb2x1bW4uYXNjZW5kaW5nIHx8ICFzb3J0ZWRDb2x1bW4uYXNjZW5kaW5nKVxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnd2lkdGgnOiAhaGFzSXRlbXMgPyAnMTAwJScgOiAnYXV0bycgfVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItc3VidGl0bGVdPVwiY29sdW1uLnR5cGUgPT09ICdzdWJ0aXRsZSdcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtY29sdW1uLWRyYWctYm94XT1cInRoaXMuaXNEcmFnZ2FibGVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic29ydENvbHVtbihjb2x1bW4pXCJcbiAgICAgICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgICAgICBjZGtEcmFnTG9ja0F4aXM9XCJ4XCJcbiAgICAgICAgICAgICAgW2Nka0RyYWdEaXNhYmxlZF09XCJjb2x1bW4uZml4ZWQgPyAndHJ1ZScgOiAnZmFsc2UnXCJcbiAgICAgICAgICAgICAgW3BGcm96ZW5Db2x1bW5dPVwiY29sdW1uLmZpeGVkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWZsZXhcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZml4ZWQtaW5uZXJdPVwiaGVpZ2h0XCJcbiAgICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZsZXgtcmlnaHRdPVwiY29sdW1uLnR5cGUgPT09ICdjdXJyZW5jeScgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZsZXgtY2VudGVyXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0aGlzLmlzRHJhZ2dhYmxlICYmICFjb2x1bW4uZml4ZWRcIj5cbiAgICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgY2RrRHJhZ0hhbmRsZVxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjI0XCJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjlcIiBjeT1cIjZcIiByPVwiMlwiIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxNVwiIGN5PVwiNlwiIHI9XCIyXCIgZmlsbD1cImJsYWNrXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjlcIiBjeT1cIjEyXCIgcj1cIjJcIiBmaWxsPVwiYmxhY2tcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTVcIiBjeT1cIjEyXCIgcj1cIjJcIiBmaWxsPVwiYmxhY2tcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiOVwiIGN5PVwiMThcIiByPVwiMlwiIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxNVwiIGN5PVwiMThcIiByPVwiMlwiIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudEhlYWRlclRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogY29sdW1uIH1cIj4gPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGFibGVWaXJ0dWFsU2Nyb2xsVGhEZWZhdWx0PlxuICAgICAgICAgICAgPHRoXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgbWFpbkNvbHVtbnM7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlcIlxuICAgICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1lbGxpcHNpcyBwLWVsZW1lbnQgcG8tZnJvemVuLWNvbHVtbiBleGFtcGxlLWJveFwiXG4gICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wby10YWJsZS1jb2x1bW4tbmFtZV09XCJjb2x1bW4ubGFiZWwgfHwgKGNvbHVtbi5wcm9wZXJ0eSB8IHRpdGxlY2FzZSkgfCBsb3dlcmNhc2VcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tY2xpY2thYmxlXT1cIihzb3J0ICYmIGNvbHVtbi5zb3J0YWJsZSAhPT0gZmFsc2UpIHx8IGhhc1NlcnZpY2VcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ3BvLXRhYmxlLWhlYWRlci1zb3J0ZWQnOlxuICAgICAgICAgICAgICAgICAgc29ydCAmJlxuICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoc29ydGVkQ29sdW1uPy5wcm9wZXJ0eSkgPT09IEpTT04uc3RyaW5naWZ5KGNvbHVtbikgJiZcbiAgICAgICAgICAgICAgICAgIChzb3J0ZWRDb2x1bW4uYXNjZW5kaW5nIHx8ICFzb3J0ZWRDb2x1bW4uYXNjZW5kaW5nKVxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnd2lkdGgnOiAhaGFzSXRlbXMgPyAnMTAwJScgOiAnYXV0bycgfVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItc3VidGl0bGVdPVwiY29sdW1uLnR5cGUgPT09ICdzdWJ0aXRsZSdcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic29ydENvbHVtbihjb2x1bW4pXCJcbiAgICAgICAgICAgICAgW3BGcm96ZW5Db2x1bW5dPVwiY29sdW1uLmZpeGVkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWZsZXhcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZml4ZWQtaW5uZXJdPVwiaGVpZ2h0XCJcbiAgICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZsZXgtcmlnaHRdPVwiY29sdW1uLnR5cGUgPT09ICdjdXJyZW5jeScgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZsZXgtY2VudGVyXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50SGVhZGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4gfVwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICA8dGhcbiAgICAgICAgICAgICpuZ0lmPVwiaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodCAmJiAoaGFzVmlzaWJsZUFjdGlvbnMgfHwgaGlkZUNvbHVtbnNNYW5hZ2VyKVwiXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1jb2x1bW4gcG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxcIlxuICAgICAgICAgID48L3RoPlxuXG4gICAgICAgICAgPHRoXG4gICAgICAgICAgICAqbmdJZj1cImhhc1Zpc2libGVBY3Rpb25zICYmIGFjdGlvblJpZ2h0ICYmICh2aXNpYmxlQWN0aW9ucy5sZW5ndGggPiAxIHx8IGlzU2luZ2xlQWN0aW9uKVwiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLXNpbmdsZS1hY3Rpb25dPVwiaXNTaW5nbGVBY3Rpb25cIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1hY3Rpb25zXT1cIiFpc1NpbmdsZUFjdGlvblwiXG4gICAgICAgICAgPjwvdGg+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3RoZWFkPlxuXG4gICAgICA8dGJvZHkgY2xhc3M9XCJwby10YWJsZS1ncm91cC1yb3dcIiAqbmdJZj1cIiFoYXNJdGVtcyB8fCAhaGFzTWFpbkNvbHVtbnNcIj5cbiAgICAgICAgPHRyIGNsYXNzPVwicG8tdGFibGUtcm93IHBvLXRhYmxlLXJvdy1uby1kYXRhXCI+XG4gICAgICAgICAgPHRkIFtjb2xTcGFuXT1cImNvbHVtbkNvdW50XCIgY2xhc3M9XCJwby10YWJsZS1uby1kYXRhIHBvLXRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICA8c3Bhbj4ge3sgbGl0ZXJhbHMubm9EYXRhIH19IDwvc3Bhbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90Ym9keT5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc01haW5Db2x1bW5zXCI+XG4gICAgICAgIDx0Ym9keVxuICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtZ3JvdXAtcm93XCJcbiAgICAgICAgICAqY2RrVmlydHVhbEZvcj1cImxldCByb3cgb2YgZmlsdGVyZWRJdGVtczsgbGV0IHJvd0luZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlcIlxuICAgICAgICA+XG4gICAgICAgICAgPHRyXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLXJvd1wiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtcm93LWFjdGl2ZV09XCJyb3cuJHNlbGVjdGVkIHx8IChyb3cuJHNlbGVjdGVkID09PSBudWxsICYmIHNlbGVjdGFibGUpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8dGQgKm5nSWY9XCJzZWxlY3RhYmxlXCIgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tc2VsZWN0YWJsZVwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2luZ2xlU2VsZWN0ID8gaW5wdXRSYWRpbyA6IGlucHV0Q2hlY2tib3g7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3cgfVwiPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgIDwhLS0gVmFsaWRhIHNlIGEgb3JpZ2VtIGRvIGRldGFpbCDDqSBwZWxvIGlucHV0IGRvIHBvLXRhYmxlIC0tPlxuICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uTWFzdGVyRGV0YWlsICYmICFoaWRlRGV0YWlsICYmICFoYXNSb3dUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWRldGFpbC10b2dnbGVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGV0YWlsKHJvdylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwb1RhYmxlQ29sdW1uRGV0YWlsXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICA8IS0tIENvbHVuYSBjb20gYXMgYcOnw7VlcyBuYSBlc3F1ZXJkYSAocGFkcsOjbyktLT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAqbmdJZj1cIiFhY3Rpb25SaWdodCAmJiAodmlzaWJsZUFjdGlvbnMubGVuZ3RoID4gMSB8fCBpc1NpbmdsZUFjdGlvbilcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJBY3Rpb25zQ29sdW1uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgPCEtLSBWYWxpZGEgc2UgYSBvcmlnZW0gZG8gZGV0YWlsIMOpIHBlbGEgZGlyZXRpdmEgLS0+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgKm5nSWY9XCJoYXNSb3dUZW1wbGF0ZSAmJiAhaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWRldGFpbC10b2dnbGVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGV0YWlsKHJvdylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwb1RhYmxlQ29sdW1uRGV0YWlsXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBtYWluQ29sdW1uczsgbGV0IGNvbHVtbkluZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlcIlxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW5dPVwiY29sdW1uLnR5cGUgIT09ICdpY29uJ1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4tcmlnaHRdPVwiY29sdW1uLnR5cGUgPT09ICdjdXJyZW5jeScgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWNvbHVtbi1jZW50ZXJdPVwiY29sdW1uLnR5cGUgPT09ICdzdWJ0aXRsZSdcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtY29sdW1uLWljb25zXT1cImNvbHVtbi50eXBlID09PSAnaWNvbidcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJnZXRDbGFzc0NvbG9yKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgIFtwRnJvemVuQ29sdW1uXT1cImNvbHVtbi5maXhlZFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicC1lbGVtZW50IHBvLWZyb3plbi1jb2x1bW5cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiaGFzU2VsZWN0YWJsZVJvdygpID8gc2VsZWN0Um93KHJvdykgOiAnamF2YXNjcmlwdDo7J1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1jZWxsIHBvLXRhYmxlLWJvZHktZWxsaXBzaXMgbm90cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFtuZ1N3aXRjaF09XCJjb2x1bW4udHlwZVwiXG4gICAgICAgICAgICAgICAgW3AtdG9vbHRpcF09XCJ0b29sdGlwVGV4dFwiXG4gICAgICAgICAgICAgICAgW3AtYXBwZW5kLWluLWJvZHldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwidG9vbHRpcE1vdXNlRW50ZXIoJGV2ZW50LCBjb2x1bW4sIHJvdylcIlxuICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cInRvb2x0aXBNb3VzZUxlYXZlKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidjb2x1bW5UZW1wbGF0ZSdcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJnZXRUZW1wbGF0ZShjb2x1bW4pOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIH1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidjZWxsVGVtcGxhdGUnXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVDZWxsVGVtcGxhdGU/LnRlbXBsYXRlUmVmOyBjb250ZXh0OiB7IHJvdzogcm93LCBjb2x1bW46IGNvbHVtbiB9XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInYm9vbGVhbidcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGdldEJvb2xlYW5MYWJlbChnZXRDZWxsRGF0YShyb3csIGNvbHVtbiksIGNvbHVtbikgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2N1cnJlbmN5J1wiPlxuICAgICAgICAgICAgICAgICAge3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIHwgY3VycmVuY3k6IGNvbHVtbi5mb3JtYXQ6J3N5bWJvbCc6JzEuMi0yJyB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB8IGRhdGU6IGNvbHVtbi5mb3JtYXQgfHwgJ2RkL01NL3l5eXknIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIid0aW1lJ1wiPlxuICAgICAgICAgICAgICAgICAge3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIHwgcG9fdGltZTogY29sdW1uLmZvcm1hdCB8fCAnSEg6bW06c3MuZmZmZmZmJyB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInZGF0ZVRpbWUnXCI+XG4gICAgICAgICAgICAgICAgICB7eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfCBkYXRlOiBjb2x1bW4uZm9ybWF0IHx8ICdkZC9NTS95eXl5IEhIOm1tOnNzJyB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInbnVtYmVyJ1wiPlxuICAgICAgICAgICAgICAgICAge3sgZm9ybWF0TnVtYmVyKGdldENlbGxEYXRhKHJvdywgY29sdW1uKSwgY29sdW1uLmZvcm1hdCkgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8cG8tdGFibGUtY29sdW1uLWxpbmtcbiAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInbGluaydcIlxuICAgICAgICAgICAgICAgICAgW3AtYWN0aW9uXT1cImNvbHVtbi5hY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgW3AtZGlzYWJsZWRdPVwiY2hlY2tEaXNhYmxlZChyb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICAgICAgW3AtbGlua109XCJyb3dbY29sdW1uLmxpbmtdXCJcbiAgICAgICAgICAgICAgICAgIFtwLXJvd109XCJyb3dcIlxuICAgICAgICAgICAgICAgICAgW3AtdmFsdWVdPVwiZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrTGluaygkZXZlbnQsIHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvcG8tdGFibGUtY29sdW1uLWxpbms+XG5cbiAgICAgICAgICAgICAgICA8cG8tdGFibGUtY29sdW1uLWljb25cbiAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInaWNvbidcIlxuICAgICAgICAgICAgICAgICAgW3AtY29sdW1uXT1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgICBbcC1pY29uc109XCJnZXRDb2x1bW5JY29ucyhyb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICAgICAgW3Atcm93XT1cInJvd1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvcG8tdGFibGUtY29sdW1uLWljb24+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3N1YnRpdGxlJ1wiPlxuICAgICAgICAgICAgICAgICAgPHBvLXRhYmxlLXN1YnRpdGxlLWNpcmNsZSBbcC1zdWJ0aXRsZV09XCJnZXRTdWJ0aXRsZUNvbHVtbihyb3csIGNvbHVtbilcIj48L3BvLXRhYmxlLXN1YnRpdGxlLWNpcmNsZT5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidsYWJlbCdcIj5cbiAgICAgICAgICAgICAgICAgIDxwby10YWJsZS1jb2x1bW4tbGFiZWwgW3AtdmFsdWVdPVwiZ2V0Q29sdW1uTGFiZWwocm93LCBjb2x1bW4pXCI+IDwvcG8tdGFibGUtY29sdW1uLWxhYmVsPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hEZWZhdWx0Pnt7IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgKm5nSWY9XCJoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tZGV0YWlsLXRvZ2dsZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVEZXRhaWwocm93KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBvVGFibGVDb2x1bW5EZXRhaWxcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgIDwhLS0gQ29sdW5hIGRlIGHDp29lcyBuYSBkaXJlaXRhIC0tPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICpuZ0lmPVwiYWN0aW9uUmlnaHRcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJBY3Rpb25zQ29sdW1uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L3RyPlxuXG4gICAgICAgICAgPHRyICpuZ0lmPVwiaGFzTWFpbkNvbHVtbnMgJiYgaGFzUm93VGVtcGxhdGUgJiYgcm93LiRzaG93RGV0YWlsICYmIGlzU2hvd1Jvd1RlbXBsYXRlKHJvdywgcm93SW5kZXgpXCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJwby10YWJsZS1yb3ctdGVtcGxhdGUtY29udGFpbmVyXCIgW2NvbFNwYW5dPVwiY29sdW1uQ291bnRGb3JNYXN0ZXJEZXRhaWxcIj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFibGVSb3dUZW1wbGF0ZS50ZW1wbGF0ZVJlZlwiXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L3RyPlxuXG4gICAgICAgICAgPHRyICpuZ0lmPVwiaGFzTWFpbkNvbHVtbnMgJiYgaXNTaG93TWFzdGVyRGV0YWlsKHJvdylcIj5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1kZXRhaWxcIiBbY29sU3Bhbl09XCJjb2x1bW5Db3VudEZvck1hc3RlckRldGFpbFwiPlxuICAgICAgICAgICAgICA8cG8tdGFibGUtZGV0YWlsXG4gICAgICAgICAgICAgICAgW3Atc2VsZWN0YWJsZV09XCJzZWxlY3RhYmxlICYmICFkZXRhaWxIaWRlU2VsZWN0XCJcbiAgICAgICAgICAgICAgICBbcC1kZXRhaWxdPVwiY29sdW1uTWFzdGVyRGV0YWlsLmRldGFpbFwiXG4gICAgICAgICAgICAgICAgW3AtaXRlbXNdPVwicm93W25hbWVDb2x1bW5EZXRhaWxdXCJcbiAgICAgICAgICAgICAgICAocC1zZWxlY3Qtcm93KT1cInNlbGVjdERldGFpbFJvdygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L3BvLXRhYmxlLWRldGFpbD5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90Ym9keT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdGFibGU+XG4gIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuPC9uZy10ZW1wbGF0ZT5cblxuPHBvLXBvcHVwICNwb3B1cCBbcC1hY3Rpb25zXT1cImFjdGlvbnNcIiBbcC10YXJnZXRdPVwicG9wdXBUYXJnZXRcIj4gPC9wby1wb3B1cD5cblxuPG5nLXRlbXBsYXRlICNwb1RhYmxlQ29sdW1uRGV0YWlsIGxldC1yb3c9XCJyb3dcIiBsZXQtcm93SW5kZXg9XCJyb3dJbmRleFwiPlxuICA8c3BhblxuICAgICpuZ0lmPVwiKGNvbnRhaW5zTWFzdGVyRGV0YWlsKHJvdykgJiYgIWhhc1Jvd1RlbXBsYXRlKSB8fCAoaXNTaG93Um93VGVtcGxhdGUocm93LCByb3dJbmRleCkgJiYgaGFzUm93VGVtcGxhdGUpXCJcbiAgICBjbGFzcz1cInBvLWljb24gcG8tY2xpY2thYmxlXCJcbiAgICBbY2xhc3MucG8taWNvbi1hcnJvdy11cF09XCJyb3cuJHNob3dEZXRhaWxcIlxuICAgIFtjbGFzcy5wby1pY29uLWFycm93LWRvd25dPVwiIXJvdy4kc2hvd0RldGFpbFwiXG4gID5cbiAgPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpbnB1dFJhZGlvIGxldC1yb3c+XG4gIDxwby1yYWRpbyBbbmFtZV09XCJpZFJhZGlvXCIgW3AtY2hlY2tlZF09XCJyb3cuJHNlbGVjdGVkXCIgKHAtY2hhbmdlLXNlbGVjdGVkKT1cInNlbGVjdFJvdyhyb3cpXCI+PC9wby1yYWRpbz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaW5wdXRDaGVja2JveCBsZXQtcm93PlxuICA8cG8tY2hlY2tib3hcbiAgICBuYW1lPVwiY2hlY2tib3hcIlxuICAgIChwLWNoYW5nZSk9XCJzZWxlY3RhYmxlID8gc2VsZWN0Um93KHJvdykgOiAnamF2YXNjcmlwdDo7J1wiXG4gICAgW3AtY2hlY2tib3hWYWx1ZV09XCJyb3cuJHNlbGVjdGVkXCJcbiAgPjwvcG8tY2hlY2tib3g+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NvbnRlbnRIZWFkZXJUZW1wbGF0ZSBsZXQtY29sdW1uPlxuICA8c3BhblxuICAgICNjb2x1bW5IZWFkZXJcbiAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1lbGxpcHNpc1wiXG4gICAgW3AtdG9vbHRpcF09XCJ0b29sdGlwVGV4dFwiXG4gICAgW3AtYXBwZW5kLWluLWJvZHldPVwidHJ1ZVwiXG4gICAgKG1vdXNlZW50ZXIpPVwidG9vbHRpcE1vdXNlRW50ZXIoJGV2ZW50KVwiXG4gICAgKG1vdXNlbGVhdmUpPVwidG9vbHRpcE1vdXNlTGVhdmUoKVwiXG4gID5cbiAgICB7eyBjb2x1bW4ubGFiZWwgfHwgKGNvbHVtbi5wcm9wZXJ0eSB8IHRpdGxlY2FzZSkgfX1cbiAgPC9zcGFuPlxuXG4gIDxzcGFuXG4gICAgKm5nSWY9XCJzb3J0ICYmIGNvbHVtbi5zb3J0YWJsZSAhPT0gZmFsc2VcIlxuICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItaWNvbi11bnNlbGVjdGVkXT1cIkpTT04uc3RyaW5naWZ5KHNvcnRlZENvbHVtbj8ucHJvcGVydHkpICE9PSBKU09OLnN0cmluZ2lmeShjb2x1bW4pXCJcbiAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWljb24tZGVzY2VuZGluZ109XCJcbiAgICAgIEpTT04uc3RyaW5naWZ5KHNvcnRlZENvbHVtbj8ucHJvcGVydHkpID09PSBKU09OLnN0cmluZ2lmeShjb2x1bW4pICYmIHNvcnRlZENvbHVtbi5hc2NlbmRpbmdcbiAgICBcIlxuICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItaWNvbi1hc2NlbmRpbmddPVwiXG4gICAgICBKU09OLnN0cmluZ2lmeShzb3J0ZWRDb2x1bW4/LnByb3BlcnR5KSA9PT0gSlNPTi5zdHJpbmdpZnkoY29sdW1uKSAmJiAhc29ydGVkQ29sdW1uLmFzY2VuZGluZ1xuICAgIFwiXG4gID5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiSlNPTi5zdHJpbmdpZnkoc29ydGVkQ29sdW1uPy5wcm9wZXJ0eSkgIT09IEpTT04uc3RyaW5naWZ5KGNvbHVtbilcIj5cbiAgICAgIDxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgIGQ9XCJNMTguMjkyOSAxNS4yOTI5TDE3IDE2LjU4NThMMTcgMTBDMTcgOS40NDc3MiAxNi41NTIzIDkgMTYgOUMxNS40NDc3IDkgMTUgOS40NDc3MiAxNSAxMEwxNSAxNi41ODU4TDEzLjcwNzEgMTUuMjkyOUMxMy4zMTY2IDE0LjkwMjQgMTIuNjgzNCAxNC45MDI0IDEyLjI5MjkgMTUuMjkyOUMxMS45MDI0IDE1LjY4MzQgMTEuOTAyNCAxNi4zMTY2IDEyLjI5MjkgMTYuNzA3MUwxNS4yOTI5IDE5LjcwNzFDMTUuNjgzNCAyMC4wOTc2IDE2LjMxNjYgMjAuMDk3NiAxNi43MDcxIDE5LjcwNzFMMTkuNzA3MSAxNi43MDcxQzIwLjA5NzYgMTYuMzE2NiAyMC4wOTc2IDE1LjY4MzQgMTkuNzA3MSAxNS4yOTI5QzE5LjMxNjYgMTQuOTAyNCAxOC42ODM0IDE0LjkwMjQgMTguMjkyOSAxNS4yOTI5Wk01LjcwNzE2IDguNzA3MUw3LjAwMDA2IDcuNDE0Mkw3LjAwMDAzIDE0QzcuMDAwMDIgMTQuNTUyMyA3LjQ0Nzc0IDE1IDguMDAwMDIgMTVDOC41NTIzMSAxNSA5LjAwMDAyIDE0LjU1MjMgOS4wMDAwMyAxNEw5LjAwMDA2IDcuNDE0MThMMTAuMjkyOSA4LjcwNzA3QzEwLjY4MzUgOS4wOTc1OSAxMS4zMTY2IDkuMDk3NTggMTEuNzA3MiA4LjcwNzA2QzEyLjA5NzcgOC4zMTY1MyAxMi4wOTc3IDcuNjgzMzYgMTEuNzA3MiA3LjI5Mjg0TDguNzA3MTggNC4yOTI4NkM4LjMxNjY1IDMuOTAyMzQgNy42ODM0OSAzLjkwMjM1IDcuMjkyOTYgNC4yOTI4N0w0LjI5Mjk1IDcuMjkyODlDMy45MDI0MiA3LjY4MzQyIDMuOTAyNDIgOC4zMTY1OCA0LjI5Mjk0IDguNzA3MTFDNC42ODM0NyA5LjA5NzYzIDUuMzE2NjMgOS4wOTc2MiA1LjcwNzE2IDguNzA3MVpcIlxuICAgICAgICAgIGZpbGw9XCIjMUQxRDMwXCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkpTT04uc3RyaW5naWZ5KHNvcnRlZENvbHVtbj8ucHJvcGVydHkpID09PSBKU09OLnN0cmluZ2lmeShjb2x1bW4pICYmIHNvcnRlZENvbHVtbi5hc2NlbmRpbmdcIj5cbiAgICAgIDxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgIGQ9XCJNMTEgOS40MTQyMUw5LjcwNzExIDEwLjcwNzFDOS4zMTY1OCAxMS4wOTc2IDguNjgzNDIgMTEuMDk3NiA4LjI5Mjg5IDEwLjcwNzFDNy45MDIzNyAxMC4zMTY2IDcuOTAyMzcgOS42ODM0MiA4LjI5Mjg5IDkuMjkyODlMMTEuMjkyOSA2LjI5Mjg5QzExLjY4MzQgNS45MDIzNyAxMi4zMTY2IDUuOTAyMzcgMTIuNzA3MSA2LjI5Mjg5TDE1LjcwNzEgOS4yOTI4OUMxNi4wOTc2IDkuNjgzNDIgMTYuMDk3NiAxMC4zMTY2IDE1LjcwNzEgMTAuNzA3MUMxNS4zMTY2IDExLjA5NzYgMTQuNjgzNCAxMS4wOTc2IDE0LjI5MjkgMTAuNzA3MUwxMyA5LjQxNDIxVjE2QzEzIDE2LjU1MjMgMTIuNTUyMyAxNyAxMiAxN0MxMS40NDc3IDE3IDExIDE2LjU1MjMgMTEgMTZWOS40MTQyMVpcIlxuICAgICAgICAgIGZpbGw9XCJibGFja1wiXG4gICAgICAgIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJKU09OLnN0cmluZ2lmeShzb3J0ZWRDb2x1bW4/LnByb3BlcnR5KSA9PT0gSlNPTi5zdHJpbmdpZnkoY29sdW1uKSAmJiAhc29ydGVkQ29sdW1uLmFzY2VuZGluZ1wiPlxuICAgICAgPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgZD1cIk05LjcwNzExIDEzLjI5MjlMMTEgMTQuNTg1OFY3QzExIDYuNDQ3NzIgMTEuNDQ3NyA2IDEyIDZDMTIuNTUyMyA2IDEzIDYuNDQ3NzIgMTMgN1YxNC41ODU4TDE0LjI5MjkgMTMuMjkyOUMxNC42ODM0IDEyLjkwMjQgMTUuMzE2NiAxMi45MDI0IDE1LjcwNzEgMTMuMjkyOUMxNi4wOTc2IDEzLjY4MzQgMTYuMDk3NiAxNC4zMTY2IDE1LjcwNzEgMTQuNzA3MUwxMi43MDcxIDE3LjcwNzFDMTIuMzE2NiAxOC4wOTc2IDExLjY4MzQgMTguMDk3NiAxMS4yOTI5IDE3LjcwNzFMOC4yOTI4OSAxNC43MDcxQzcuOTAyMzcgMTQuMzE2NiA3LjkwMjM3IDEzLjY4MzQgOC4yOTI4OSAxMy4yOTI5QzguNjgzNDIgMTIuOTAyNCA5LjMxNjU4IDEyLjkwMjQgOS43MDcxMSAxMy4yOTI5WlwiXG4gICAgICAgICAgZmlsbD1cImJsYWNrXCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI25vQ29sdW1uc1dpdGhIZWlnaHQ+XG4gIDxkaXYgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItZml4ZWQtaW5uZXJcIiBbc3R5bGUud2lkdGgucHhdPVwibm9Db2x1bW5zSGVhZGVyPy5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoXCI+XG4gICAge3sgaGFzVmFsaWRDb2x1bW5zID8gbGl0ZXJhbHMubm9WaXNpYmxlQ29sdW1uIDogbGl0ZXJhbHMubm9Db2x1bW5zIH19XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNub0NvbHVtbnNXaXRob3V0SGVpZ2h0PlxuICB7eyBoYXNWYWxpZENvbHVtbnMgPyBsaXRlcmFscy5ub1Zpc2libGVDb2x1bW4gOiBsaXRlcmFscy5ub0NvbHVtbnMgfX1cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gVGVtcGxhdGUgZGUgYcOnw7VlcyAtLT5cbjxuZy10ZW1wbGF0ZSAjQWN0aW9uc0NvbHVtblRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIiBsZXQtcm93SW5kZXg9XCJyb3dJbmRleFwiPlxuICA8dGRcbiAgICAqbmdJZj1cImlzU2luZ2xlQWN0aW9uXCJcbiAgICBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbiBwby10YWJsZS1jb2x1bW4tc2luZ2xlLWFjdGlvblwiXG4gICAgW3N0eWxlLndpZHRoLnB4XT1cImhlaWdodCAmJiBhY3Rpb25SaWdodCA/IGdldFdpZHRoQ29sdW1uTWFuYWdlcigpIDogJydcIlxuICAgIFtzdHlsZS5tYXgtd2lkdGgucHhdPVwiaGVpZ2h0ICYmICFhY3Rpb25SaWdodCA/IGdldENvbHVtbldpZHRoQWN0aW9uc0xlZnQoKSA6ICcnXCJcbiAgICBbc3R5bGUud2lkdGgucHhdPVwiaGVpZ2h0ICYmICFhY3Rpb25SaWdodCA/IGdldENvbHVtbldpZHRoQWN0aW9uc0xlZnQoKSA6ICcnXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwiZmlyc3RBY3Rpb24udmlzaWJsZSAhPT0gZmFsc2VcIlxuICAgICAgY2xhc3M9XCJwby10YWJsZS1zaW5nbGUtYWN0aW9uIHBvLWNsaWNrYWJsZVwiXG4gICAgICBbY2xhc3MucG8tdGFibGUtYWN0aW9uLWRpc2FibGVkXT1cImZpcnN0QWN0aW9uLmRpc2FibGVkID8gdmFsaWRhdGVUYWJsZUFjdGlvbihyb3csIGZpcnN0QWN0aW9uKSA6IGZhbHNlXCJcbiAgICAgIChjbGljayk9XCJleGVjdXRlVGFibGVBY3Rpb24ocm93LCBmaXJzdEFjdGlvbilcIlxuICAgID5cbiAgICAgIDxwby1pY29uICpuZ0lmPVwiZmlyc3RBY3Rpb24uaWNvblwiIGNsYXNzPVwicG8tdGFibGUtc2luZ2xlLWFjdGlvbi1jb250ZW50XCIgW3AtaWNvbl09XCJmaXJzdEFjdGlvbi5pY29uXCI+PC9wby1pY29uPlxuICAgICAge3sgZmlyc3RBY3Rpb24ubGFiZWwgfX1cbiAgICA8L2Rpdj5cbiAgPC90ZD5cblxuICA8dGQgKm5nSWY9XCJ2aXNpYmxlQWN0aW9ucy5sZW5ndGggPiAxXCIgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tYWN0aW9uc1wiPlxuICAgIDxzcGFuICNwb3B1cFRhcmdldCBjbGFzcz1cInBvLWljb24gcG8taWNvbi1tb3JlIHBvLWNsaWNrYWJsZVwiIChjbGljayk9XCJ0b2dnbGVQb3B1cChyb3csIHBvcHVwVGFyZ2V0KVwiPjwvc3Bhbj5cbiAgPC90ZD5cbjwvbmctdGVtcGxhdGU+XG5cbjxwby10YWJsZS1jb2x1bW4tbWFuYWdlclxuICAqbmdJZj1cIiFoaWRlQ29sdW1uc01hbmFnZXJcIlxuICBbcC1jb2x1bW5zXT1cImNvbHVtbnNcIlxuICBbcC1tYXgtY29sdW1uc109XCJtYXhDb2x1bW5zXCJcbiAgW3AtdGFyZ2V0XT1cImNvbHVtbk1hbmFnZXJUYXJnZXRcIlxuICBbcC1sYXN0LXZpc2libGUtY29sdW1ucy1zZWxlY3RlZF09XCJsYXN0VmlzaWJsZUNvbHVtbnNTZWxlY3RlZFwiXG4gIFtwLWhpZGUtYWN0aW9uLWZpeGVkLWNvbHVtbnNdPVwiaGlkZUFjdGlvbkZpeGVkQ29sdW1uc1wiXG4gIChwLXZpc2libGUtY29sdW1ucy1jaGFuZ2UpPVwib25WaXNpYmxlQ29sdW1uc0NoYW5nZSgkZXZlbnQpXCJcbiAgKHAtY2hhbmdlLXZpc2libGUtY29sdW1ucyk9XCJvbkNoYW5nZVZpc2libGVDb2x1bW5zKCRldmVudClcIlxuICBbcC1jb2x1bW5zLWRlZmF1bHRdPVwiaW5pdGlhbENvbHVtbnNcIlxuICAocC1pbml0aWFsLWNvbHVtbnMpPVwib25Db2x1bW5SZXN0b3JlTWFuYWdlcigkZXZlbnQpXCJcbj5cbjwvcG8tdGFibGUtY29sdW1uLW1hbmFnZXI+XG5cbjxwby1tb2RhbFxuICAjbW9kYWxEZWxldGVcbiAgW3AtdGl0bGVdPVwibGl0ZXJhbHMuZGVsZXRlXCJcbiAgW3AtcHJpbWFyeS1hY3Rpb25dPVwiY29uZmlybVwiXG4gIFtwLXNlY29uZGFyeS1hY3Rpb25dPVwiY2xvc2VcIlxuICBbcC1jbGljay1vdXRdPVwidHJ1ZVwiXG4+XG4gIDxwIGNsYXNzPVwicG8tZm9udC10ZXh0LWxhcmdlXCI+e3sgbGl0ZXJhbHMuYm9keURlbGV0ZSB9fTwvcD5cbjwvcG8tbW9kYWw+XG4iXX0=
|
|
2323
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLXRhYmxlL3BvLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby10YWJsZS9wby10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRSxPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHdEUsT0FBTyxFQUdMLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUVmLFVBQVUsRUFPVixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQWMsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUV2RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUMvRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRCxPQUFPLEVBQWlCLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBSTlELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV4QyxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUd0RyxPQUFPLEVBQUUsb0JBQW9CLEVBQW1CLE1BQU0sMkJBQTJCLENBQUM7QUFDbEYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDekcsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFDL0csT0FB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UzttQkFBQyxvQkFBb0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUVILGFBQWE7a0JBQTdFLFNBQVM7bUJBQUMsZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBQ08sa0JBQWtCO2tCQUF2RixTQUFTO21CQUFDLG9CQUFvQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBQ0EsZ0JBQWdCO2tCQUFuRixTQUFTO21CQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBRVIsa0JBQWtCO2tCQUEzRSxZQUFZO21CQUFDLG9CQUFvQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNGLGNBQWM7a0JBQW5FLFlBQVk7bUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQzFCLFdBQVc7a0JBQXBDLFNBQVM7bUJBQUMsYUFBYTtZQUN3QyxhQUFhO2tCQUE1RSxTQUFTO21CQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQUNDLFFBQVE7a0JBQXRFLFNBQVM7bUJBQUMsd0JBQXdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBK0NoQixtQkFBbUI7a0JBQXhELFNBQVM7bUJBQUMscUJBQXFCO1lBU1csd0JBQXdCO2tCQUFsRSxTQUFTO21CQUFDLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuXG5pbXBvcnQgeyBEZWNpbWFsUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRG9DaGVjayxcbiAgRWxlbWVudFJlZixcbiAgSXRlcmFibGVEaWZmZXJzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgUXVlcnlMaXN0LFxuICBSZW5kZXJlcjIsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDaGlsZHJlbixcbiAgaW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBQb0RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcG8tZGF0ZS9wby1kYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBvTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BvLW5vdGlmaWNhdGlvbi9wby1ub3RpZmljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbCc7XG5pbXBvcnQgeyBQb01vZGFsQWN0aW9uLCBQb01vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vcG8tbW9kYWwnO1xuaW1wb3J0IHsgUG9Qb3B1cENvbXBvbmVudCB9IGZyb20gJy4uL3BvLXBvcHVwL3BvLXBvcHVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb1RhYmxlQ29sdW1uTGFiZWwgfSBmcm9tICcuL3BvLXRhYmxlLWNvbHVtbi1sYWJlbC9wby10YWJsZS1jb2x1bW4tbGFiZWwuaW50ZXJmYWNlJztcblxuaW1wb3J0IHsgdXVpZCB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgUG9QYWdlU2xpZGVDb21wb25lbnQgfSBmcm9tICcuLi9wby1wYWdlJztcbmltcG9ydCB7IFBvVGFibGVSb3dUZW1wbGF0ZUFycm93RGlyZWN0aW9uIH0gZnJvbSAnLi9lbnVtcy9wby10YWJsZS1yb3ctdGVtcGxhdGUtYXJyb3ctZGlyZWN0aW9uLmVudW0nO1xuaW1wb3J0IHsgUG9UYWJsZUFjdGlvbiB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby10YWJsZS1hY3Rpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvVGFibGVDb2x1bW4gfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tdGFibGUtY29sdW1uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1RhYmxlQmFzZUNvbXBvbmVudCwgUXVlcnlQYXJhbXNUeXBlIH0gZnJvbSAnLi9wby10YWJsZS1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb1RhYmxlQ2VsbFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9wby10YWJsZS1jZWxsLXRlbXBsYXRlL3BvLXRhYmxlLWNlbGwtdGVtcGxhdGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IFBvVGFibGVDb2x1bW5UZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4vcG8tdGFibGUtY29sdW1uLXRlbXBsYXRlL3BvLXRhYmxlLWNvbHVtbi10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUG9UYWJsZVJvd1RlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9wby10YWJsZS1yb3ctdGVtcGxhdGUvcG8tdGFibGUtcm93LXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBQb1RhYmxlU3VidGl0bGVDb2x1bW4gfSBmcm9tICcuL3BvLXRhYmxlLXN1YnRpdGxlLWZvb3Rlci9wby10YWJsZS1zdWJ0aXRsZS1jb2x1bW4uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvVGFibGVTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wby10YWJsZS5zZXJ2aWNlJztcblxuLyoqXG4gKiBAZG9jc0V4dGVuZHMgUG9UYWJsZUJhc2VDb21wb25lbnRcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby10YWJsZS1iYXNpY1wiIHRpdGxlPVwiUE8gVGFibGUgQmFzaWNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWJhc2ljL3NhbXBsZS1wby10YWJsZS1iYXNpYy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtYmFzaWMvc2FtcGxlLXBvLXRhYmxlLWJhc2ljLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tdGFibGUtbGFic1wiIHRpdGxlPVwiUE8gVGFibGUgTGFic1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtbGFicy9zYW1wbGUtcG8tdGFibGUtbGFicy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtbGFicy9zYW1wbGUtcG8tdGFibGUtbGFicy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1sYWJzL3NhbXBsZS1wby10YWJsZS1sYWJzLmNvbXBvbmVudC5lMmUtc3BlYy50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1sYWJzL3NhbXBsZS1wby10YWJsZS1sYWJzLmNvbXBvbmVudC5wby50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1sYWJzL3NhbXBsZS1wby10YWJsZS1sYWJzLnNlcnZpY2UudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby10YWJsZS13aXRoLWFwaVwiIHRpdGxlPVwiUE8gVGFibGUgdXNpbmcgQVBJXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS13aXRoLWFwaS9zYW1wbGUtcG8tdGFibGUtd2l0aC1hcGkuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLXdpdGgtYXBpL3NhbXBsZS1wby10YWJsZS13aXRoLWFwaS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXRhYmxlLXRyYW5zcG9ydFwiIHRpdGxlPVwiUE8gVGFibGUgLSBUcmFuc3BvcnRcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLXRyYW5zcG9ydC9zYW1wbGUtcG8tdGFibGUtdHJhbnNwb3J0LmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS10cmFuc3BvcnQvc2FtcGxlLXBvLXRhYmxlLXRyYW5zcG9ydC5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS10cmFuc3BvcnQvc2FtcGxlLXBvLXRhYmxlLXRyYW5zcG9ydC5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tdGFibGUtYWlyZmFyZVwiIHRpdGxlPVwiUE8gVGFibGUgLSBBaXJmYXJlXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1haXJmYXJlL3NhbXBsZS1wby10YWJsZS1haXJmYXJlLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1haXJmYXJlL3NhbXBsZS1wby10YWJsZS1haXJmYXJlLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWFpcmZhcmUvc2FtcGxlLXBvLXRhYmxlLWFpcmZhcmUuc2VydmljZS50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXRhYmxlLWNvbXBvbmVudHNcIiB0aXRsZT1cIlBPIFRhYmxlIC0gUG8gRmllbGQgQ29tcG9uZW50c1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy9zYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy9zYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy5lbnVtLnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMvc2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy9zYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMvc2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMuY29tcG9uZW50LmNzc1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXRhYmxlLWhlcm9lc1wiIHRpdGxlPVwiUE8gVGFibGUgLSBIZXJvZXNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWhlcm9lcy9zYW1wbGUtcG8tdGFibGUtaGVyb2VzLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1oZXJvZXMvc2FtcGxlLXBvLXRhYmxlLWhlcm9lcy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1oZXJvZXMvc2FtcGxlLXBvLXRhYmxlLWhlcm9lcy5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tdGFibGUtZHJhZ2dhYmxlXCIgdGl0bGU9XCJQTyBUYWJsZSBEcmFnIGFuZCBEcm9wXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1kcmFnZ2FibGUvc2FtcGxlLXBvLXRhYmxlLWRyYWdnYWJsZS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1kcmFnZ2FibGUvc2FtcGxlLXBvLXRhYmxlLWRyYWdnYWJsZS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wby10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1BvRGF0ZVNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIFBvVGFibGVDb21wb25lbnQgZXh0ZW5kcyBQb1RhYmxlQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIERvQ2hlY2ssIE9uRGVzdHJveSwgT25Jbml0IHtcbiAgQENvbnRlbnRDaGlsZChQb1RhYmxlUm93VGVtcGxhdGVEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pIHRhYmxlUm93VGVtcGxhdGU6IFBvVGFibGVSb3dUZW1wbGF0ZURpcmVjdGl2ZTtcbiAgQENvbnRlbnRDaGlsZChQb1RhYmxlQ2VsbFRlbXBsYXRlRGlyZWN0aXZlKSB0YWJsZUNlbGxUZW1wbGF0ZTogUG9UYWJsZUNlbGxUZW1wbGF0ZURpcmVjdGl2ZTtcblxuICBAQ29udGVudENoaWxkcmVuKFBvVGFibGVDb2x1bW5UZW1wbGF0ZURpcmVjdGl2ZSkgdGFibGVDb2x1bW5UZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxQb1RhYmxlQ29sdW1uVGVtcGxhdGVEaXJlY3RpdmU+O1xuXG4gIEBWaWV3Q2hpbGQoJ25vQ29sdW1uc0hlYWRlcicsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBub0NvbHVtbnNIZWFkZXI7XG4gIEBWaWV3Q2hpbGQoJ3BvcHVwJykgcG9Qb3B1cENvbXBvbmVudDogUG9Qb3B1cENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZChQb01vZGFsQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBtb2RhbERlbGV0ZTogUG9Nb2RhbENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgndGFibGVGb290ZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgdGFibGVGb290ZXJFbGVtZW50O1xuICBAVmlld0NoaWxkKCd0YWJsZVdyYXBwZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgdGFibGVXcmFwcGVyRWxlbWVudDtcblxuICBAVmlld0NoaWxkKCd0YWJsZVRlbXBsYXRlJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pIHRhYmxlVGVtcGxhdGU7XG4gIEBWaWV3Q2hpbGQoJ3RhYmxlVmlydHVhbFNjcm9sbCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KSB0YWJsZVZpcnR1YWxTY3JvbGw7XG5cbiAgQFZpZXdDaGlsZCgnY29sdW1uTWFuYWdlcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KSBjb2x1bW5NYW5hZ2VyO1xuICBAVmlld0NoaWxkKCdjb2x1bW5CYXRjaEFjdGlvbnMnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgY29sdW1uQmF0Y2hBY3Rpb25zO1xuICBAVmlld0NoaWxkKCdjb2x1bW5BY3Rpb25MZWZ0JywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pIGNvbHVtbkFjdGlvbkxlZnQ7XG5cbiAgQFZpZXdDaGlsZHJlbignYWN0aW9uc0ljb25FbGVtZW50JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGFjdGlvbnNJY29uRWxlbWVudDogUXVlcnlMaXN0PGFueT47XG4gIEBWaWV3Q2hpbGRyZW4oJ2FjdGlvbnNFbGVtZW50JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGFjdGlvbnNFbGVtZW50OiBRdWVyeUxpc3Q8YW55PjtcbiAgQFZpZXdDaGlsZCgnZmlsdGVySW5wdXQnKSBmaWx0ZXJJbnB1dDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgncG9TZWFyY2hJbnB1dCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIHBvU2VhcmNoSW5wdXQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LCB7IHN0YXRpYzogZmFsc2UgfSkgcHVibGljIHZpZXdQb3J0OiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XG5cbiAgcG9Ob3RpZmljYXRpb24gPSBpbmplY3QoUG9Ob3RpZmljYXRpb25TZXJ2aWNlKTtcblxuICBoZWlnaHRUYWJsZUNvbnRhaW5lcjogbnVtYmVyO1xuICBoZWlnaHRUYWJsZVZpcnR1YWw6IG51bWJlcjtcbiAgcG9wdXBUYXJnZXQ7XG4gIHRhYmxlT3BhY2l0eTogbnVtYmVyID0gMDtcbiAgdG9vbHRpcFRleHQ6IHN0cmluZztcbiAgaXRlbVNpemU6IG51bWJlciA9IDQ4O1xuICBsYXN0VmlzaWJsZUNvbHVtbnNTZWxlY3RlZDogQXJyYXk8UG9UYWJsZUNvbHVtbj47XG4gIHRhZ0NvbG9yOiBzdHJpbmc7XG4gIGlkUmFkaW86IHN0cmluZztcbiAgaW5wdXRGaWVsZFZhbHVlID0gJyc7XG4gIEpTT046IEpTT047XG4gIG5ld09yZGVyQ29sdW1uczogQXJyYXk8UG9UYWJsZUNvbHVtbj47XG5cbiAgY2xvc2U6IFBvTW9kYWxBY3Rpb24gPSB7XG4gICAgYWN0aW9uOiAoKSA9PiB7XG4gICAgICB0aGlzLm1vZGFsRGVsZXRlLmNsb3NlKCk7XG4gICAgfSxcbiAgICBsYWJlbDogdGhpcy5saXRlcmFscy5jYW5jZWwsXG4gICAgZGFuZ2VyOiB0cnVlXG4gIH07XG5cbiAgY29uZmlybTogUG9Nb2RhbEFjdGlvbiA9IHtcbiAgICBhY3Rpb246ICgpID0+IHtcbiAgICAgIHRoaXMuZGVsZXRlSXRlbXMoKTtcbiAgICB9LFxuICAgIGxhYmVsOiB0aGlzLmxpdGVyYWxzLmRlbGV0ZVxuICB9O1xuXG4gIHByaXZhdGUgX2NvbHVtbk1hbmFnZXJUYXJnZXQ6IEVsZW1lbnRSZWY7XG4gIHByaXZhdGUgX2NvbHVtbk1hbmFnZXJUYXJnZXRGaXhlZDogRWxlbWVudFJlZjtcbiAgcHJpdmF0ZSBkaWZmZXI7XG4gIHByaXZhdGUgZm9vdGVySGVpZ2h0O1xuICBwcml2YXRlIGhlYWRlckhlaWdodDtcbiAgcHJpdmF0ZSBpbml0aWFsaXplZCA9IGZhbHNlO1xuICBwcml2YXRlIHRpbWVvdXRSZXNpemU7XG4gIHByaXZhdGUgdmlzaWJsZUVsZW1lbnQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBzY3JvbGxFdmVudCQ6IE9ic2VydmFibGU8YW55PjtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25TY3JvbGxFdmVudDogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvblNlcnZpY2U6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBwcml2YXRlIGNsaWNrTGlzdGVuZXI6ICgpID0+IHZvaWQ7XG4gIHByaXZhdGUgcmVzaXplTGlzdGVuZXI6ICgpID0+IHZvaWQ7XG5cbiAgQFZpZXdDaGlsZCgnY29sdW1uTWFuYWdlclRhcmdldCcpIHNldCBjb2x1bW5NYW5hZ2VyVGFyZ2V0KHZhbHVlOiBFbGVtZW50UmVmKSB7XG4gICAgdGhpcy5fY29sdW1uTWFuYWdlclRhcmdldCA9IHZhbHVlO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZ2V0IGNvbHVtbk1hbmFnZXJUYXJnZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbHVtbk1hbmFnZXJUYXJnZXQ7XG4gIH1cblxuICBAVmlld0NoaWxkKCdjb2x1bW5NYW5hZ2VyVGFyZ2V0Rml4ZWQnKSBzZXQgY29sdW1uTWFuYWdlclRhcmdldEZpeGVkKHZhbHVlOiBFbGVtZW50UmVmKSB7XG4gICAgdGhpcy5fY29sdW1uTWFuYWdlclRhcmdldEZpeGVkID0gdmFsdWU7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBnZXQgY29sdW1uTWFuYWdlclRhcmdldEZpeGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5NYW5hZ2VyVGFyZ2V0Rml4ZWQ7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwb0RhdGU6IFBvRGF0ZVNlcnZpY2UsXG4gICAgZGlmZmVyczogSXRlcmFibGVEaWZmZXJzLFxuICAgIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcG9MYW5ndWFnZVNlcnZpY2U6IFBvTGFuZ3VhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBkZWZhdWx0U2VydmljZTogUG9UYWJsZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIocG9EYXRlLCBwb0xhbmd1YWdlU2VydmljZSwgZGVmYXVsdFNlcnZpY2UpO1xuICAgIHRoaXMuSlNPTiA9IEpTT047XG4gICAgdGhpcy5kaWZmZXIgPSBkaWZmZXJzLmZpbmQoW10pLmNyZWF0ZShudWxsKTtcblxuICAgIC8vIFRPRE86ICM1NTUwIGFvIHJlbW92ZXIgZXN0ZSBsaXN0ZW5lciwgbm8gcG9ydGFsLCBxdWFuZG8gYXMgY29sdW5hcyBmb3JlbSBmaXhhcyBuw6NvIHNvZnJlbVxuICAgIC8vIGFsdGVyYcOnw6NvIGRlIGxhcmd1cmEsIHBvaXMgbyBuZ0RvQ2hlY2sgbsOjbyDDqSBleGVjdXRhZG8uXG4gICAgdGhpcy5jbGlja0xpc3RlbmVyID0gcmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdjbGljaycsICgpID0+IHt9KTtcblxuICAgIHRoaXMucmVzaXplTGlzdGVuZXIgPSByZW5kZXJlci5saXN0ZW4oJ3dpbmRvdycsICdyZXNpemUnLCAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgdGhpcy5kZWJvdW5jZVJlc2l6ZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IGhhc1Jvd1RlbXBsYXRlV2l0aEFycm93RGlyZWN0aW9uUmlnaHQoKSB7XG4gICAgcmV0dXJuIHRoaXMudGFibGVSb3dUZW1wbGF0ZT8udGFibGVSb3dUZW1wbGF0ZUFycm93RGlyZWN0aW9uID09PSBQb1RhYmxlUm93VGVtcGxhdGVBcnJvd0RpcmVjdGlvbi5SaWdodDtcbiAgfVxuXG4gIGdldCBjb2x1bW5Db3VudCgpIHtcbiAgICBjb25zdCBjb2x1bW5Db3VudCA9XG4gICAgICB0aGlzLm1haW5Db2x1bW5zLmxlbmd0aCArXG4gICAgICAodGhpcy5hY3Rpb25zLmxlbmd0aCA+IDAgPyAxIDogMCkgK1xuICAgICAgKHRoaXMuc2VsZWN0YWJsZSA/IDEgOiAwKSArXG4gICAgICAoIXRoaXMuaGlkZURldGFpbCAmJiB0aGlzLmNvbHVtbk1hc3RlckRldGFpbCAhPT0gdW5kZWZpbmVkID8gMSA6IDApO1xuXG4gICAgcmV0dXJuIGNvbHVtbkNvdW50IHx8IDE7XG4gIH1cblxuICBnZXQgY29sdW1uQ291bnRGb3JNYXN0ZXJEZXRhaWwoKSB7XG4gICAgLy8gY2FzbyB0aXZlciBhw6fDtWVzIHNlcsOhIHV0aWxpemFkbyBhIHN1YSBjb2x1bmEgcGFyYSBleGliaXIgbyBjb2x1bW5NYW5hZ2VyXG4gICAgY29uc3QgY29sdW1uTWFuYWdlciA9IHRoaXMuYWN0aW9ucy5sZW5ndGggPyAwIDogMTtcblxuICAgIHJldHVybiB0aGlzLm1haW5Db2x1bW5zLmxlbmd0aCArIDEgKyAodGhpcy5hY3Rpb25zLmxlbmd0aCA+IDAgPyAxIDogMCkgKyAodGhpcy5zZWxlY3RhYmxlID8gMSA6IDApICsgY29sdW1uTWFuYWdlcjtcbiAgfVxuXG4gIGdldCBkZXRhaWxIaWRlU2VsZWN0KCkge1xuICAgIGNvbnN0IG1hc3RlckRldGFpbCA9IHRoaXMuY29sdW1uTWFzdGVyRGV0YWlsO1xuICAgIHJldHVybiBtYXN0ZXJEZXRhaWwgJiYgbWFzdGVyRGV0YWlsLmRldGFpbCA/IG1hc3RlckRldGFpbC5kZXRhaWwuaGlkZVNlbGVjdCA6IGZhbHNlO1xuICB9XG5cbiAgZ2V0IGhhc1Zpc2libGVBY3Rpb25zKCkge1xuICAgIHJldHVybiAhIXRoaXMudmlzaWJsZUFjdGlvbnMubGVuZ3RoO1xuICB9XG5cbiAgZ2V0IGZpcnN0QWN0aW9uKCk6IFBvVGFibGVBY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLnZpc2libGVBY3Rpb25zICYmIHRoaXMudmlzaWJsZUFjdGlvbnNbMF07XG4gIH1cblxuICBnZXQgaGFzRm9vdGVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhc0l0ZW1zICYmIHRoaXMuaGFzVmlzaWJsZVN1YnRpdGxlQ29sdW1ucztcbiAgfVxuXG4gIGdldCBoYXNNYXN0ZXJEZXRhaWxDb2x1bW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuaGFzTWFpbkNvbHVtbnMgJiYgdGhpcy5oYXNJdGVtcyAmJiAhdGhpcy5oaWRlRGV0YWlsICYmICEhKHRoaXMuY29sdW1uTWFzdGVyRGV0YWlsIHx8IHRoaXMuaGFzUm93VGVtcGxhdGUpXG4gICAgKTtcbiAgfVxuXG4gIGdldCBoYXNSb3dUZW1wbGF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnRhYmxlUm93VGVtcGxhdGU7XG4gIH1cblxuICBnZXQgaGFzU2VsZWN0YWJsZUNvbHVtbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RhYmxlICYmIHRoaXMuaGFzSXRlbXMgJiYgdGhpcy5oYXNNYWluQ29sdW1ucztcbiAgfVxuXG4gIGdldCBoYXNWYWxpZENvbHVtbnMoKSB7XG4gICAgcmV0dXJuICEhdGhpcy52YWxpZENvbHVtbnMubGVuZ3RoO1xuICB9XG5cbiAgZ2V0IGhhc1Zpc2libGVTdWJ0aXRsZUNvbHVtbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3VidGl0bGVDb2x1bW5zLnNvbWUoY29sdW1uID0+IGNvbHVtbi52aXNpYmxlICE9PSBmYWxzZSk7XG4gIH1cblxuICBnZXQgaXNTaW5nbGVBY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZUFjdGlvbnMubGVuZ3RoID09PSAxO1xuICB9XG5cbiAgZ2V0IGlzRHJhZ2dhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRyYWdnYWJsZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW52ZXJzZU9mVHJhbnNsYXRpb24oKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMudmlld1BvcnQgfHwgIXRoaXMudmlld1BvcnRbJ19yZW5kZXJlZENvbnRlbnRPZmZzZXQnXSkge1xuICAgICAgcmV0dXJuICctMHB4JztcbiAgICB9XG5cbiAgICBjb25zdCBvZmZzZXQgPSB0aGlzLnZpZXdQb3J0WydfcmVuZGVyZWRDb250ZW50T2Zmc2V0J107XG5cbiAgICByZXR1cm4gYC0ke29mZnNldH1weGA7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmlkUmFkaW8gPSBgcG8tcmFkaW8tJHt1dWlkKCl9YDtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgfVxuXG4gIHNob3dNb3JlSW5maW5pdGVTY3JvbGwoeyB0YXJnZXQgfSk6IHZvaWQge1xuICAgIGNvbnN0IHNjcm9sbFBvc2l0aW9uID0gdGFyZ2V0Lm9mZnNldEhlaWdodCArIHRhcmdldC5zY3JvbGxUb3A7XG4gICAgaWYgKCF0aGlzLnNob3dNb3JlRGlzYWJsZWQgJiYgc2Nyb2xsUG9zaXRpb24gPj0gdGFyZ2V0LnNjcm9sbEhlaWdodCAqICh0aGlzLmluZmluaXRlU2Nyb2xsRGlzdGFuY2UgLyAxMTApKSB7XG4gICAgICB0aGlzLm9uU2hvd01vcmUoKTtcbiAgICB9XG4gIH1cblxuICBuZ0RvQ2hlY2soKSB7XG4gICAgdGhpcy5jaGVja0NoYW5nZXNJdGVtcygpO1xuICAgIHRoaXMudmVyaWZ5Q2FsY3VsYXRlSGVpZ2h0VGFibGVDb250YWluZXIoKTtcbiAgICAvLyBQZXJtaXRlIHF1ZSBvcyBjYWJlw6dhbGhvcyBzZWphbSBjYWxjdWxhZG9zIG5hIHByaW1laXJhIHZleiBxdWUgbyBjb21wb25lbnRlIHRvcm5hLXNlIHZpc8OtdmVsLFxuICAgIC8vIGV2aXRhbmRvIGNvbSBpc3NvLCBwcm9ibGVtYXMgY29tIFRhYnMgb3UgRGl2cyBxdWUgaW5pY2llbSBlc2NvbmRpZGFzLlxuICAgIGlmICh0aGlzLnRhYmxlV3JhcHBlckVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggJiYgIXRoaXMudmlzaWJsZUVsZW1lbnQgJiYgdGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgdGhpcy5kZWJvdW5jZVJlc2l6ZSgpO1xuICAgICAgdGhpcy5jaGVja0luZmluaXRlU2Nyb2xsKCk7XG4gICAgICB0aGlzLnZpc2libGVFbGVtZW50ID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnJlbW92ZUxpc3RlbmVycygpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uU2VydmljZT8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvIHJlc3BvbnPDoXZlbCBwb3IgcmVhbGl6YXIgYnVzY2Egbm8gc2VydmnDp28gZGUgZGFkb3MgcG9kZW5kbyBpbmZvcm1hciBmaWx0cm9zIGUgY29tIG8gcmV0b3JubywgYXR1YWxpemEgYSB0YWJlbGEuXG4gICAqXG4gICAqIENhc28gbsOjbyBzZWphIGluZm9ybWFkbyBwYXLDom1ldHJvLCBuYWRhIHNlcsOhIGFkaWNpb25hZG8gYW8gR0VULCBjb25mb3JtZSBhYmFpeG86XG4gICAqIGBgYFxuICAgKiB1cmwgKyA/cGFnZT0xJnBhZ2VTaXplPTEwXG4gICAqIGBgYFxuICAgKiA+IE9iczogb3MgcGFyw6JtZXRyb3MgYHBhZ2VgIGUgYHBhZ2VTaXplYCBzZW1wcmUgc2Vyw6NvIGNoYW1hZG9zIGluZGVwZW5kZW50ZSBkZSBzZXIgZW52aWFkb3Mgb3V0cm9zIHBhcsOibWV0cm9zLlxuICAgKlxuICAgKiBDYXNvIHNlamFtIGluZm9ybWFkb3Mgb3MgcGFyw6JtZXRyb3MgYHsgbmFtZTogJ0pPSE4nLCBhZ2U6ICcyMycgfWAsIHRvZG9zIHNlcsOjbyBhZGljaW9uYWRvcyBhbyBHRVQsIGNvbmZvcm1lIGFiYWl4bzpcbiAgICogYGBgXG4gICAqIHVybCArID9wYWdlPTEmcGFnZVNpemU9MTAmbmFtZT1KT0hOJmFnZT0yM1xuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIHsgeyBrZXk6IHZhbHVlIH0gfSBxdWVyeVBhcmFtcyBGb3JtYXRvIGRvIG9iamV0byBhIHNlciBlbnZpYWRvLlxuICAgKiA+IFBvZGUgc2VyIHV0aWxpemFkYSBxdWFscXVlciBzdHJpbmcgY29tbyBrZXksIGUgcXVhbHF1ZXIgc3RyaW5nIG91IG51bWJlciBjb21vIHZhbHVlLlxuICAgKi9cbiAgYXBwbHlGaWx0ZXJzKHF1ZXJ5UGFyYW1zPzogeyBba2V5OiBzdHJpbmddOiBRdWVyeVBhcmFtc1R5cGUgfSkge1xuICAgIHRoaXMucGFnZSA9IDE7XG4gICAgdGhpcy5pbml0aWFsaXplRGF0YShxdWVyeVBhcmFtcyk7XG4gIH1cblxuICAvKipcbiAgICogTcOpdG9kbyBxdWUgY29sYXBzYSB1bWEgbGluaGEgY29tIGRldGFsaGUgcXVhbmRvIGV4ZWN1dGFkYS5cbiAgICpcbiAgICogQHBhcmFtIHsgbnVtYmVyIH0gcm93SW5kZXggw41uZGljZSBkYSBsaW5oYSBxdWUgc2Vyw6EgY29sYXBzYWRhLlxuICAgKiA+IEFvIHJlb3JkZW5hciBvcyBkYWRvcyBkYSB0YWJlbGEsIG8gdmFsb3IgY29udGlkbyBuZXN0ZSDDrW5kaWNlIHNlcsOhIGFsdGVyYWRvIGNvbmZvcm1lIGEgb3JkZW5hw6fDo28uXG4gICAqL1xuICBjb2xsYXBzZShyb3dJbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5zZXRTaG93RGV0YWlsKHJvd0luZGV4LCBmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogTcOpdG9kbyBxdWUgZXhwYW5kZSB1bWEgbGluaGEgY29tIGRldGFsaGUgcXVhbmRvIGV4ZWN1dGFkYS5cbiAgICpcbiAgICogQHBhcmFtIHsgbnVtYmVyIH0gcm93SW5kZXggw41uZGljZSBkYSBsaW5oYSBxdWUgc2Vyw6EgZXhwYW5kaWRhLlxuICAgKiA+IEFvIHJlb3JkZW5hciBvcyBkYWRvcyBkYSB0YWJlbGEsIG8gdmFsb3IgY29udGlkbyBuZXN0ZSDDrW5kaWNlIHNlcsOhIGFsdGVyYWRvIGNvbmZvcm1lIGEgb3JkZW5hw6fDo28uXG4gICAqL1xuICBleHBhbmQocm93SW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuc2V0U2hvd0RldGFpbChyb3dJbmRleCwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0b3JuYSBhcyBsaW5oYXMgZG8gYHBvLXRhYmxlYCBxdWUgZXN0w6NvIHNlbGVjaW9uYWRhcy5cbiAgICovXG4gIGdldFNlbGVjdGVkUm93cygpIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5maWx0ZXIoaXRlbSA9PiBpdGVtLiRzZWxlY3RlZCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0b3JuYSBhcyBsaW5oYXMgZG8gYHBvLXRhYmxlYCBxdWUgbsOjbyBlc3TDo28gc2VsZWNpb25hZGFzLlxuICAgKi9cbiAgZ2V0VW5zZWxlY3RlZFJvd3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXMuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uJHNlbGVjdGVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXNtYXJjYSBhcyBsaW5oYXMgcXVlIGVzdMOjbyBzZWxlY2lvbmFkYXMuXG4gICAqL1xuICB1bnNlbGVjdFJvd3MoKSB7XG4gICAgY29uc3QgY29sdW1uRGV0YWlsID0gdGhpcy5uYW1lQ29sdW1uRGV0YWlsO1xuXG4gICAgdGhpcy5pdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgY29uc3QgZGV0YWlsSXRlbXMgPSBjb2x1bW5EZXRhaWwgPyBpdGVtW2NvbHVtbkRldGFpbF0gOiBudWxsO1xuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShkZXRhaWxJdGVtcykpIHtcbiAgICAgICAgZGV0YWlsSXRlbXMuZm9yRWFjaChkZXRhaWxJdGVtID0+IHtcbiAgICAgICAgICBkZXRhaWxJdGVtLiRzZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaXRlbS4kc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICB9KTtcblxuICAgIHRoaXMuc2VsZWN0QWxsID0gZmFsc2U7XG4gIH1cblxuICBjaGVja0Rpc2FibGVkKHJvdywgY29sdW1uOiBQb1RhYmxlQ29sdW1uKSB7XG4gICAgcmV0dXJuIGNvbHVtbi5kaXNhYmxlZCA/IGNvbHVtbi5kaXNhYmxlZChyb3cpIDogZmFsc2U7XG4gIH1cblxuICBjb250YWluc01hc3RlckRldGFpbChyb3cpIHtcbiAgICByZXR1cm4gcm93W3RoaXMubmFtZUNvbHVtbkRldGFpbF0gJiYgcm93W3RoaXMubmFtZUNvbHVtbkRldGFpbF0ubGVuZ3RoO1xuICB9XG5cbiAgZXhlY3V0ZVRhYmxlQWN0aW9uKHJvdzogYW55LCB0YWJsZUFjdGlvbjogYW55KSB7XG4gICAgaWYgKCFyb3cuZGlzYWJsZWQgJiYgIXRoaXMudmFsaWRhdGVUYWJsZUFjdGlvbihyb3csIHRhYmxlQWN0aW9uKSkge1xuICAgICAgdGFibGVBY3Rpb24uYWN0aW9uKHJvdyk7XG4gICAgICB0aGlzLnRvZ2dsZVJvd0FjdGlvbihyb3cpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZXNtYXJjYSB1bWEgbGluaGEgcXVlIGVzdMOhIHNlbGVjaW9uYWRhLlxuICAgKi9cbiAgdW5zZWxlY3RSb3dJdGVtKGl0ZW1mbjogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8ICgoaXRlbSkgPT4gYm9vbGVhbikpIHtcbiAgICB0aGlzLnRvZ2dsZVNlbGVjdChpdGVtZm4sIGZhbHNlKTtcblxuICAgIGlmICh0aGlzLml0ZW1zLmV2ZXJ5KGl0ZW0gPT4gIWl0ZW0uJHNlbGVjdGVkKSkge1xuICAgICAgdGhpcy5zZWxlY3RBbGwgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RBbGwgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY2lvbmEgdW1hIGxpbmhhIGRvICdwby10YWJsZScuXG4gICAqL1xuICBzZWxlY3RSb3dJdGVtKGl0ZW1mbjogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8ICgoaXRlbSkgPT4gYm9vbGVhbikpIHtcbiAgICB0aGlzLnRvZ2dsZVNlbGVjdChpdGVtZm4sIHRydWUpO1xuXG4gICAgaWYgKHRoaXMuaXRlbXMuZXZlcnkoaXRlbSA9PiBpdGVtLiRzZWxlY3RlZCkpIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RBbGwgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvIHJlc3BvbnPDoXZlbCBwZWxhIGV4Y2x1c8OjbyBkZSBpdGVucyBlbSBsb3RlLlxuICAgKiBDYXNvIGEgdGFiZWxhIGVzdGVqYSBleGVjdXRhbmRvIGEgcHJvcHJpZWRhZGUgYHAtc2VydmljZS1kZWxldGVgLCBzZXLDoSBuZWNlc3PDoXJpbyBleGNsdWlyIDEgaXRlbSBwb3IgdmV6LlxuICAgKlxuICAgKiBBbyB1dGlsaXphciBgcC1zZXJ2aWNlLWRlbGV0ZWAgbWFzIHNlbSBhIHByb3ByaWVkYWRlIGBwLXNlcnZpY2UtYXBpYCwgc2Vyw6EgcmVzcG9uc2FiaWxpZGFkZSBkbyB1c3XDoXJpbyBvIHRyYXRhbWVudG9cbiAgICogYXDDs3MgYSByZXF1aXNpw6fDo28gREVMRVRFIHNlciBleGVjdXRhZGEuXG4gICAqXG4gICAqIENhc28gYSB0YWJlbGEgdXRpbGl6ZSBgcC1oZWlnaHRgIGUgZXN0ZWphIHNlbSBzZXJ2acOnbywgw6kgbmVjZXNzw6FyaW8gYSByZWF0cmlidWnDp8OjbyBkb3MgaXRlbnMgdXRpbGl6YW5kbyBvIGV2ZW50byBgKHAtZGVsZXRlLWl0ZW1zKWAsIHBvciBleGVtcGxvOlxuICAgKlxuICAgKiBgYGBcbiAgICo8cG8tdGFibGVcbiAgICogIChwLWRlbGV0ZS1pdGVtcyk9XCJpdGVtcyA9ICRldmVudFwiXG4gICAqID5cbiAgICo8L3BvLXRhYmxlPlxuICAgKiBgYGBcbiAgICovXG4gIGRlbGV0ZUl0ZW1zKCkge1xuICAgIGNvbnN0IG5ld0l0ZW1zID0gWy4uLnRoaXMuaXRlbXNdO1xuICAgIGNvbnN0IG5ld0l0ZW1zRmlsdGVyZWQgPSBbLi4ubmV3SXRlbXNdLmZpbHRlcihpdGVtID0+ICFpdGVtLiRzZWxlY3RlZCk7XG5cbiAgICBpZiAoIXRoaXMuc2VydmljZURlbGV0ZUFwaSkge1xuICAgICAgdGhpcy5kZWxldGVJdGVtc0xvY2FsKG5ld0l0ZW1zLCBuZXdJdGVtc0ZpbHRlcmVkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kZWxldGVJdGVtc1NlcnZpY2UobmV3SXRlbXNGaWx0ZXJlZCk7XG4gICAgfVxuICB9XG5cbiAgZm9ybWF0TnVtYmVyKHZhbHVlOiBhbnksIGZvcm1hdDogc3RyaW5nKSB7XG4gICAgaWYgKCFmb3JtYXQpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5kZWNpbWFsUGlwZS50cmFuc2Zvcm0odmFsdWUsIGZvcm1hdCk7XG4gIH1cblxuICBnZXRDZWxsRGF0YShyb3c6IGFueSwgY29sdW1uOiBQb1RhYmxlQ29sdW1uKTogYW55IHtcbiAgICBjb25zdCBhcnJheVByb3BlcnR5ID0gY29sdW1uLnByb3BlcnR5LnNwbGl0KCcuJyk7XG4gICAgaWYgKGFycmF5UHJvcGVydHkubGVuZ3RoID4gMSkge1xuICAgICAgY29uc3QgbmVzdGVkUHJvcGVydGllcyA9IGFycmF5UHJvcGVydHk7XG4gICAgICBsZXQgdmFsdWU6IGFueSA9IHJvdztcbiAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgbmVzdGVkUHJvcGVydGllcykge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlW3Byb3BlcnR5XSB8fCB2YWx1ZVtwcm9wZXJ0eV0gPT09IDAgPyB2YWx1ZVtwcm9wZXJ0eV0gOiAnJztcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHJvd1tjb2x1bW4ucHJvcGVydHldO1xuICAgIH1cbiAgfVxuXG4gIGdldEJvb2xlYW5MYWJlbChyb3dWYWx1ZTogYW55LCBjb2x1bW5Cb29sZWFuOiBQb1RhYmxlQ29sdW1uKTogc3RyaW5nIHtcbiAgICBpZiAocm93VmFsdWUgfHwgcm93VmFsdWUgPT09IGZhbHNlIHx8IHJvd1ZhbHVlID09PSAwKSB7XG4gICAgICByb3dWYWx1ZSA9IGNvbnZlcnRUb0Jvb2xlYW4ocm93VmFsdWUpO1xuXG4gICAgICBpZiAoY29sdW1uQm9vbGVhbi5ib29sZWFuKSB7XG4gICAgICAgIHJldHVybiByb3dWYWx1ZSA/IGNvbHVtbkJvb2xlYW4uYm9vbGVhbi50cnVlTGFiZWwgfHwgJ1NpbScgOiBjb2x1bW5Cb29sZWFuLmJvb2xlYW4uZmFsc2VMYWJlbCB8fCAnTsOjbyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcm93VmFsdWUgPyAnU2ltJyA6ICdOw6NvJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcm93VmFsdWU7XG4gIH1cblxuICBnZXRDb2x1bW5JY29ucyhyb3c6IGFueSwgY29sdW1uOiBQb1RhYmxlQ29sdW1uKSB7XG4gICAgY29uc3Qgcm93SWNvbnMgPSB0aGlzLmdldENlbGxEYXRhKHJvdywgY29sdW1uKTtcblxuICAgIGlmIChjb2x1bW4uaWNvbnMpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJvd0ljb25zKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5tZXJnZUN1c3RvbUljb25zKHJvd0ljb25zLCBjb2x1bW4uaWNvbnMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZEN1c3RvbUljb24ocm93SWNvbnMsIGNvbHVtbik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvd0ljb25zO1xuICB9XG5cbiAgZ2V0Q29sdW1uTGFiZWwocm93OiBhbnksIGNvbHVtbkxhYmVsOiBQb1RhYmxlQ29sdW1uKTogUG9UYWJsZUNvbHVtbkxhYmVsIHtcbiAgICByZXR1cm4gY29sdW1uTGFiZWwubGFiZWxzLmZpbmQobGFiZWxJdGVtID0+IHRoaXMuZ2V0Q2VsbERhdGEocm93LCBjb2x1bW5MYWJlbCkgPT09IGxhYmVsSXRlbS52YWx1ZSk7XG4gIH1cblxuICBnZXRTdWJ0aXRsZUNvbHVtbihyb3c6IGFueSwgc3VidGl0bGVDb2x1bW46IFBvVGFibGVDb2x1bW4pOiBQb1RhYmxlU3VidGl0bGVDb2x1bW4ge1xuICAgIHJldHVybiBzdWJ0aXRsZUNvbHVtbi5zdWJ0aXRsZXMuZmluZChzdWJ0aXRsZUl0ZW0gPT4gdGhpcy5nZXRDZWxsRGF0YShyb3csIHN1YnRpdGxlQ29sdW1uKSA9PT0gc3VidGl0bGVJdGVtLnZhbHVlKTtcbiAgfVxuXG4gIGlzU2hvd01hc3RlckRldGFpbChyb3cpIHtcbiAgICByZXR1cm4gKFxuICAgICAgIXRoaXMuaGlkZURldGFpbCAmJlxuICAgICAgdGhpcy5uYW1lQ29sdW1uRGV0YWlsICYmXG4gICAgICByb3cuJHNob3dEZXRhaWwgJiZcbiAgICAgIHRoaXMuY29udGFpbnNNYXN0ZXJEZXRhaWwocm93KSAmJlxuICAgICAgIXRoaXMuaGFzUm93VGVtcGxhdGVcbiAgICApO1xuICB9XG5cbiAgaXNTaG93Um93VGVtcGxhdGUocm93LCBpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMudGFibGVSb3dUZW1wbGF0ZSAmJiB0aGlzLnRhYmxlUm93VGVtcGxhdGUucG9UYWJsZVJvd1RlbXBsYXRlU2hvdykge1xuICAgICAgcmV0dXJuIHRoaXMudGFibGVSb3dUZW1wbGF0ZS5wb1RhYmxlUm93VGVtcGxhdGVTaG93KHJvdywgaW5kZXgpO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgb25DbGlja0xpbmsoZXZlbnQsIHJvdywgY29sdW1uOiBQb1RhYmxlQ29sdW1uKSB7XG4gICAgaWYgKCF0aGlzLmNoZWNrRGlzYWJsZWQocm93LCBjb2x1bW4pKSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBvbkNoYW5nZVZpc2libGVDb2x1bW5zKGNvbHVtbnM6IEFycmF5PHN0cmluZz4pIHtcbiAgICB0aGlzLmNoYW5nZVZpc2libGVDb2x1bW5zLmVtaXQoY29sdW1ucyk7XG4gIH1cblxuICBvbkNvbHVtblJlc3RvcmVNYW5hZ2VyKHZhbHVlOiBBcnJheTxTdHJpbmc+KSB7XG4gICAgdGhpcy5jb2x1bW5SZXN0b3JlTWFuYWdlci5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIG9uVmlzaWJsZUNvbHVtbnNDaGFuZ2UoY29sdW1uczogQXJyYXk8UG9UYWJsZUNvbHVtbj4pIHtcbiAgICB0aGlzLmNvbHVtbnMgPSBjb2x1bW5zO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgdG9vbHRpcE1vdXNlRW50ZXIoZXZlbnQ6IGFueSwgY29sdW1uPzogUG9UYWJsZUNvbHVtbiwgcm93PzogYW55KSB7XG4gICAgdGhpcy50b29sdGlwVGV4dCA9IHVuZGVmaW5lZDtcblxuICAgIGlmIChldmVudC50YXJnZXQub2Zmc2V0V2lkdGggPCBldmVudC50YXJnZXQuc2Nyb2xsV2lkdGggJiYgZXZlbnQudGFyZ2V0LmlubmVyVGV4dC50cmltKCkpIHtcbiAgICAgIHJldHVybiAodGhpcy50b29sdGlwVGV4dCA9IGV2ZW50LnRhcmdldC5pbm5lclRleHQpO1xuICAgIH1cblxuICAgIGlmIChjb2x1bW4pIHtcbiAgICAgIHRoaXMuY2hlY2tpbmdJZkNvbHVtbkhhc1Rvb2x0aXAoY29sdW1uLCByb3cpO1xuICAgIH1cbiAgfVxuXG4gIHRvb2x0aXBNb3VzZUxlYXZlKCkge1xuICAgIHRoaXMudG9vbHRpcFRleHQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICB0b2dnbGVQb3B1cChyb3csIHRhcmdldFJlZikge1xuICAgIHRoaXMucG9wdXBUYXJnZXQgPSB0YXJnZXRSZWY7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICB0aGlzLnBvUG9wdXBDb21wb25lbnQudG9nZ2xlKHJvdyk7XG4gIH1cblxuICB0cmFja0J5KGluZGV4OiBudW1iZXIpIHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICB2YWxpZGF0ZVRhYmxlQWN0aW9uKHJvdzogYW55LCB0YWJsZUFjdGlvbjogYW55KSB7XG4gICAgaWYgKHR5cGVvZiB0YWJsZUFjdGlvbi5kaXNhYmxlZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHRhYmxlQWN0aW9uLmRpc2FibGVkKHJvdyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0YWJsZUFjdGlvbi5kaXNhYmxlZDtcbiAgICB9XG4gIH1cblxuICBvbk9wZW5Db2x1bW5NYW5hZ2VyKCkge1xuICAgIHRoaXMubGFzdFZpc2libGVDb2x1bW5zU2VsZWN0ZWQgPSBbLi4udGhpcy5jb2x1bW5zXTtcbiAgfVxuXG4gIG9uRmlsdGVyZWRJdGVtc0NoYW5nZShpdGVtczogQXJyYXk8YW55Pik6IHZvaWQge1xuICAgIGlmICh0aGlzLnNvcnRlZENvbHVtbi5wcm9wZXJ0eSkge1xuICAgICAgdGhpcy5zb3J0QXJyYXkodGhpcy5zb3J0ZWRDb2x1bW4ucHJvcGVydHksIHRoaXMuc29ydGVkQ29sdW1uLmFzY2VuZGluZywgaXRlbXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlcmVkSXRlbXMgPSBpdGVtcztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTcOpdG9kbyBxdWUgcmVtb3ZlIHVtIGl0ZW0gZGEgdGFiZWxhLlxuICAgKlxuICAgKiBAcGFyYW0geyBudW1iZXIgfCB7IGtleTogdmFsdWUgfSB9IGl0ZW0gw41uZGljZSBkYSBsaW5oYSBvdSBvIGl0ZW0gcXVlIHNlcsOhIHJlbW92aWRvLlxuICAgKiA+IEFvIHJlbW92ZXIgbyBpdGVtLCBhIGxpbmhhIHF1ZSBvIHJlcHJlc2VudGEgc2Vyw6EgZXhjbHXDrWRhIGRhIHRhYmVsYS5cbiAgICovXG4gIHJlbW92ZUl0ZW0oaXRlbTogbnVtYmVyIHwgeyBba2V5OiBzdHJpbmddOiBhbnkgfSkge1xuICAgIGlmIChpdGVtIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICB0aGlzLml0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoZmlsdGVySXRlbSA9PiBmaWx0ZXJJdGVtICE9PSBpdGVtKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBpdGVtID09PSAnbnVtYmVyJykge1xuICAgICAgY29uc3QgaW5kZXg6IG51bWJlciA9IGl0ZW07XG4gICAgICB0aGlzLml0ZW1zLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcXVlIGF0dWFsaXphIHVtIGl0ZW0gZGEgdGFiZWxhLlxuICAgKlxuICAgKiBAcGFyYW0geyBudW1iZXIgfCB7IGtleTogdmFsdWUgfSB9IGl0ZW0gw41uZGljZSBkYSBsaW5oYSBvdSBvIGl0ZW0gcXVlIHNlcsOhIGF0dWFsaXphZG8uXG4gICAqIEBwYXJhbSB7IHsga2V5OiB2YWx1ZSB9IH0gdXBkYXRlZEl0ZW0gSXRlbSBxdWUgZm9pIGF0dWFsaXphZG8uXG4gICAqID4gQW8gYXR1YWxpemFyIG8gaXRlbSwgYSBpbmZvcm1hw6fDo28gc2Vyw6EgYWx0ZXJhZGEgbmEgdGFiZWxhLlxuICAgKi9cbiAgdXBkYXRlSXRlbShpdGVtOiBudW1iZXIgfCB7IFtrZXk6IHN0cmluZ106IGFueSB9LCB1cGRhdGVkSXRlbTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkge1xuICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHRoaXMuaXRlbXMuc3BsaWNlKGl0ZW0sIDEsIHVwZGF0ZWRJdGVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLml0ZW1zLmZpbmRJbmRleChpbmRleEl0ZW0gPT4gaW5kZXhJdGVtID09PSBpdGVtKTtcbiAgICAgIHRoaXMuaXRlbXMuc3BsaWNlKGluZGV4LCAxLCB1cGRhdGVkSXRlbSk7XG4gICAgfVxuICB9XG5cbiAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8QXJyYXk8c3RyaW5nPj4pIHtcbiAgICBpZiAoIXRoaXMubWFpbkNvbHVtbnNbZXZlbnQuY3VycmVudEluZGV4XS5maXhlZCkge1xuICAgICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMubWFpbkNvbHVtbnMsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG5cbiAgICAgIGlmICh0aGlzLmhpZGVDb2x1bW5zTWFuYWdlciA9PT0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy5uZXdPcmRlckNvbHVtbnMgPSB0aGlzLm1haW5Db2x1bW5zO1xuICAgICAgICBjb25zdCBkZXRhaWwgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5wcm9wZXJ0eSA9PT0gJ2RldGFpbCcpWzBdO1xuXG4gICAgICAgIGlmIChkZXRhaWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMubmV3T3JkZXJDb2x1bW5zLnB1c2goZGV0YWlsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29sdW1ucy5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgaWYgKCFpdGVtLnZpc2libGUpIHtcbiAgICAgICAgICAgIHRoaXMubmV3T3JkZXJDb2x1bW5zLnNwbGljZShpbmRleCwgMCwgaXRlbSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb2x1bW5zID0gdGhpcy5uZXdPcmRlckNvbHVtbnM7XG5cbiAgICAgICAgdGhpcy5vblZpc2libGVDb2x1bW5zQ2hhbmdlKHRoaXMubmV3T3JkZXJDb2x1bW5zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0VGVtcGxhdGUoY29sdW1uOiBQb1RhYmxlQ29sdW1uKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgY29uc3QgdGVtcGxhdGU6IFBvVGFibGVDb2x1bW5UZW1wbGF0ZURpcmVjdGl2ZSA9IHRoaXMudGFibGVDb2x1bW5UZW1wbGF0ZXMuZmluZChcbiAgICAgIHRhYmxlQ29sdW1uVGVtcGxhdGUgPT4gdGFibGVDb2x1bW5UZW1wbGF0ZS50YXJnZXRQcm9wZXJ0eSA9PT0gY29sdW1uLnByb3BlcnR5XG4gICAgKTtcbiAgICBpZiAoIXRlbXBsYXRlKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBOw6NvIGZvaSBwb3Nzw612ZWwgZW5jb250cmFyIG8gdGVtcGxhdGUgcGFyYSBhIGNvbHVuYTogJHtjb2x1bW4ucHJvcGVydHl9LCBwb3IgZ2VudGlsZXphIGluZm9ybWUgYSBwcm9wcmllZGFkZSBbcC1wcm9wZXJ0eV1gXG4gICAgICApO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB0ZW1wbGF0ZS50ZW1wbGF0ZVJlZjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRXaWR0aENvbHVtbk1hbmFnZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uTWFuYWdlcj8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb2x1bW5XaWR0aEFjdGlvbnNMZWZ0KCkge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbkFjdGlvbkxlZnQ/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gIH1cblxuICBwdWJsaWMgaGFzU29tZUZpeGVkKCkge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbnMuc29tZShpdGVtID0+IGl0ZW0uZml4ZWQgPT09IHRydWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNhbGN1bGF0ZUhlaWdodFRhYmxlQ29udGFpbmVyKGhlaWdodCkge1xuICAgIGNvbnN0IHZhbHVlID0gcGFyc2VGbG9hdChoZWlnaHQpO1xuICAgIHRoaXMuaGVpZ2h0VGFibGVDb250YWluZXIgPSB2YWx1ZSA/IHZhbHVlIC0gdGhpcy5nZXRIZWlnaHRUYWJsZUZvb3RlcigpIDogdW5kZWZpbmVkO1xuICAgIHRoaXMuaGVpZ2h0VGFibGVWaXJ0dWFsID0gdGhpcy5oZWlnaHRUYWJsZUNvbnRhaW5lciA/IHRoaXMuaGVpZ2h0VGFibGVDb250YWluZXIgLSB0aGlzLml0ZW1TaXplIDogdW5kZWZpbmVkO1xuICAgIHRoaXMuc2V0VGFibGVPcGFjaXR5KDEpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHZlcmlmeUNhbGN1bGF0ZUhlaWdodFRhYmxlQ29udGFpbmVyKCkge1xuICAgIGlmICh0aGlzLmhlaWdodCAmJiB0aGlzLnZlcmlmeUNoYW5nZUhlaWdodEluRm9vdGVyKCkpIHtcbiAgICAgIHRoaXMuZm9vdGVySGVpZ2h0ID0gdGhpcy5nZXRIZWlnaHRUYWJsZUZvb3RlcigpO1xuXG4gICAgICB0aGlzLmNhbGN1bGF0ZUhlaWdodFRhYmxlQ29udGFpbmVyKHRoaXMuaGVpZ2h0KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgY2hlY2tJbmZpbml0ZVNjcm9sbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYXNJbmZpbml0ZVNjcm9sbCgpKSB7XG4gICAgICBpZiAodGhpcy50YWJsZVZpcnR1YWxTY3JvbGwubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQgPj0gdGhpcy5oZWlnaHQpIHtcbiAgICAgICAgdGhpcy5pbmNsdWRlSW5maW5pdGVTY3JvbGwoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaW5maW5pdGVTY3JvbGwgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGNoYW5nZXNBZnRlckRlbGV0ZShuZXdJdGVtc0ZpbHRlcmVkOiBBcnJheTxhbnk+KSB7XG4gICAgdGhpcy5zZWxlY3RBbGwgPSBmYWxzZTtcbiAgICB0aGlzLnNldFNlbGVjdGVkTGlzdCgpO1xuICAgIHRoaXMubW9kYWxEZWxldGUuY2xvc2UoKTtcbiAgICB0aGlzLnBvTm90aWZpY2F0aW9uLnN1Y2Nlc3ModGhpcy5saXRlcmFscy5kZWxldGVTdWNjZXNzZnVsKTtcbiAgICB0aGlzLmV2ZW50RGVsZXRlLmVtaXQobmV3SXRlbXNGaWx0ZXJlZCk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrQ2hhbmdlc0l0ZW1zKCkge1xuICAgIGNvbnN0IGNoYW5nZXNJdGVtcyA9IHRoaXMuZGlmZmVyLmRpZmYodGhpcy5pdGVtcyk7XG5cbiAgICBpZiAoY2hhbmdlc0l0ZW1zICYmIHRoaXMuc2VsZWN0QWxsKSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNJdGVtcyAmJiAhdGhpcy5oYXNDb2x1bW5zICYmIHRoaXMuaGFzSXRlbXMpIHtcbiAgICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuZ2V0RGVmYXVsdENvbHVtbnModGhpcy5pdGVtc1swXSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja2luZ0lmQ29sdW1uSGFzVG9vbHRpcChjb2x1bW4sIHJvdykge1xuICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2xpbmsnICYmIGNvbHVtbi50b29sdGlwICYmICF0aGlzLmNoZWNrRGlzYWJsZWQocm93LCBjb2x1bW4pKSB7XG4gICAgICByZXR1cm4gKHRoaXMudG9vbHRpcFRleHQgPSBjb2x1bW4udG9vbHRpcCk7XG4gICAgfVxuXG4gICAgaWYgKGNvbHVtbi50eXBlID09PSAnbGFiZWwnKSB7XG4gICAgICBjb25zdCBjb2x1bW5MYWJlbCA9IHRoaXMuZ2V0Q29sdW1uTGFiZWwocm93LCBjb2x1bW4pO1xuICAgICAgcmV0dXJuICh0aGlzLnRvb2x0aXBUZXh0ID0gY29sdW1uTGFiZWw/LnRvb2x0aXApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGVib3VuY2VSZXNpemUoKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dFJlc2l6ZSk7XG4gICAgdGhpcy50aW1lb3V0UmVzaXplID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvLyBzaG93IHRoZSB0YWJsZVxuICAgICAgdGhpcy5zZXRUYWJsZU9wYWNpdHkoMSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGRlbGV0ZUl0ZW1zTG9jYWwobmV3SXRlbXM6IEFycmF5PGFueT4sIG5ld0l0ZW1zRmlsdGVyZWQ6IEFycmF5PGFueT4pIHtcbiAgICBpZiAodGhpcy5oZWlnaHQpIHtcbiAgICAgIHRoaXMuaXRlbXMgPSBuZXdJdGVtc0ZpbHRlcmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgaW5kZXggPSB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XG4gICAgICBuZXdJdGVtc1xuICAgICAgICAuc2xpY2UoKVxuICAgICAgICAucmV2ZXJzZSgpXG4gICAgICAgIC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgIGlmIChpdGVtLiRzZWxlY3RlZCkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVJdGVtKGluZGV4KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaW5kZXgtLTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlc0FmdGVyRGVsZXRlKG5ld0l0ZW1zRmlsdGVyZWQpO1xuICAgIHRoaXMub25GaWx0ZXJlZEl0ZW1zQ2hhbmdlKG5ld0l0ZW1zRmlsdGVyZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWxldGVJdGVtc1NlcnZpY2UobmV3SXRlbXNGaWx0ZXJlZDogQXJyYXk8YW55Pikge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uU2VydmljZS5hZGQoXG4gICAgICB0aGlzLmRlZmF1bHRTZXJ2aWNlLmRlbGV0ZUl0ZW0odGhpcy5wYXJhbURlbGV0ZUFwaSwgdGhpcy5pdGVtc1NlbGVjdGVkWzBdW3RoaXMucGFyYW1EZWxldGVBcGldKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiB2YWx1ZSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuaGFzU2VydmljZSkge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRQYXJhbXMgPSB7XG4gICAgICAgICAgICAgIC4uLnRoaXMucGFyYW1zRmlsdGVyLFxuICAgICAgICAgICAgICBwYWdlU2l6ZTogbmV3SXRlbXNGaWx0ZXJlZC5sZW5ndGggKyAxLFxuICAgICAgICAgICAgICBwYWdlOiAxXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uU2VydmljZS5hZGQoXG4gICAgICAgICAgICAgIHRoaXMuZGVmYXVsdFNlcnZpY2UuZ2V0RmlsdGVyZWRJdGVtcyhmaWx0ZXJlZFBhcmFtcykuc3Vic2NyaWJlKGl0ZW1zID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFRhYmxlUmVzcG9uc2VQcm9wZXJ0aWVzKGl0ZW1zKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuaXRlbXMgPSBuZXdJdGVtc0ZpbHRlcmVkO1xuICAgICAgICAgIHRoaXMuY2hhbmdlc0FmdGVyRGVsZXRlKG5ld0l0ZW1zRmlsdGVyZWQpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogZXJyb3IgPT4ge1xuICAgICAgICAgIHRoaXMucG9Ob3RpZmljYXRpb24uZXJyb3IodGhpcy5saXRlcmFscy5kZWxldGVBcGlFcnJvcik7XG4gICAgICAgICAgdGhpcy5tb2RhbERlbGV0ZS5jbG9zZSgpO1xuICAgICAgICAgIHRoaXMuZXZlbnREZWxldGUuZW1pdCh0aGlzLml0ZW1zKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kQ3VzdG9tSWNvbihyb3dJY29ucywgY29sdW1uOiBQb1RhYmxlQ29sdW1uKSB7XG4gICAgY29uc3QgY3VzdG9tSWNvbiA9IGNvbHVtbi5pY29ucy5maW5kKGljb24gPT4gcm93SWNvbnMgPT09IGljb24udmFsdWUpO1xuICAgIHJldHVybiBjdXN0b21JY29uID8gW2N1c3RvbUljb25dIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRIZWlnaHRUYWJsZUZvb3RlcigpIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZUZvb3RlckVsZW1lbnQgPyB0aGlzLnRhYmxlRm9vdGVyRWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCA6IDA7XG4gIH1cblxuICBwcml2YXRlIGhhc0luZmluaXRlU2Nyb2xsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmluZmluaXRlU2Nyb2xsICYmXG4gICAgICB0aGlzLmhhc0l0ZW1zICYmXG4gICAgICAhdGhpcy5zdWJzY3JpcHRpb25TY3JvbGxFdmVudCAmJlxuICAgICAgdGhpcy5oZWlnaHQgJiZcbiAgICAgIHRoaXMudGFibGVWaXJ0dWFsU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5jbHVkZUluZmluaXRlU2Nyb2xsKCk6IHZvaWQge1xuICAgIHRoaXMuc2Nyb2xsRXZlbnQkID0gdGhpcy5kZWZhdWx0U2VydmljZS5zY3JvbGxMaXN0ZW5lcih0aGlzLnRhYmxlVmlydHVhbFNjcm9sbC5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvblNjcm9sbEV2ZW50ID0gdGhpcy5zY3JvbGxFdmVudCQuc3Vic2NyaWJlKGV2ZW50ID0+IHRoaXMuc2hvd01vcmVJbmZpbml0ZVNjcm9sbChldmVudCkpO1xuXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIG1lcmdlQ3VzdG9tSWNvbnMocm93SWNvbnM6IEFycmF5PHN0cmluZz4sIGN1c3RvbUljb25zOiBBcnJheTxhbnk+KSB7XG4gICAgY29uc3QgbWVyZ2VkSWNvbnMgPSBbXTtcblxuICAgIHJvd0ljb25zLmZvckVhY2goY29sdW1uVmFsdWUgPT4ge1xuICAgICAgY29uc3QgZm91bmRDdXN0b21JY29uID0gY3VzdG9tSWNvbnMuZmluZChcbiAgICAgICAgY3VzdG9tSWNvbiA9PiBjb2x1bW5WYWx1ZSA9PT0gY3VzdG9tSWNvbi5pY29uIHx8IGNvbHVtblZhbHVlID09PSBjdXN0b21JY29uLnZhbHVlXG4gICAgICApO1xuICAgICAgZm91bmRDdXN0b21JY29uID8gbWVyZ2VkSWNvbnMucHVzaChmb3VuZEN1c3RvbUljb24pIDogbWVyZ2VkSWNvbnMucHVzaChjb2x1bW5WYWx1ZSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWVyZ2VkSWNvbnM7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUxpc3RlbmVycygpIHtcbiAgICBpZiAodGhpcy5yZXNpemVMaXN0ZW5lcikge1xuICAgICAgdGhpcy5yZXNpemVMaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNsaWNrTGlzdGVuZXIpIHtcbiAgICAgIHRoaXMuY2xpY2tMaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvblNjcm9sbEV2ZW50KSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvblNjcm9sbEV2ZW50LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRUYWJsZU9wYWNpdHkodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMudGFibGVPcGFjaXR5ID0gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHZlcmlmeUNoYW5nZUhlaWdodEluRm9vdGVyKCkge1xuICAgIHJldHVybiB0aGlzLmZvb3RlckhlaWdodCAhPT0gdGhpcy5nZXRIZWlnaHRUYWJsZUZvb3RlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVTZWxlY3QoY29tcGFyZSwgc2VsZWN0VmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodHlwZW9mIGNvbXBhcmUgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgaWYgKGl0ZW0gPT09IGNvbXBhcmUpIHtcbiAgICAgICAgICBpdGVtLiRzZWxlY3RlZCA9IHNlbGVjdFZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBpZiAoY29tcGFyZShpdGVtKSkge1xuICAgICAgICAgIGl0ZW0uJHNlbGVjdGVkID0gc2VsZWN0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInBvLXRhYmxlLWFjdGlvbnNcIj5cbiAgPGRpdlxuICAgICNjb2x1bW5CYXRjaEFjdGlvbnNcbiAgICAqbmdJZj1cImhhc1ZhbGlkQ29sdW1ucyAmJiBpdGVtc1NlbGVjdGVkLmxlbmd0aCA+IDAgJiYgIWhpZGVCYXRjaEFjdGlvbnNcIlxuICAgIGNsYXNzPVwicG8tdGFibGUtYWN0aW9ucy1iYXRjaC1hY3Rpb25zXCJcbiAgPlxuICAgIDxkaXYgW25nUGx1cmFsXT1cIml0ZW1zU2VsZWN0ZWQubGVuZ3RoXCIgY2xhc3M9XCJwby10YWJsZS1hY3Rpb25zLWJhdGNoLWFjdGlvbnNfX2xhYmVsXCI+XG4gICAgICA8c3Ryb25nPlxuICAgICAgICA8bmctdGVtcGxhdGUgbmdQbHVyYWxDYXNlPVwiPTBcIj57eyBsaXRlcmFscy5ub0l0ZW0gfX08L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgbmdQbHVyYWxDYXNlPVwiPTFcIj57eyBsaXRlcmFscy5vbmVJdGVtIH19PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlIG5nUGx1cmFsQ2FzZT1cIm90aGVyXCI+e3sgaXRlbXNTZWxlY3RlZC5sZW5ndGggfX0ge3sgbGl0ZXJhbHMubXVsdGlwbGVJdGVtcyB9fTwvbmctdGVtcGxhdGU+XG4gICAgICA8L3N0cm9uZz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJwby10YWJsZS1hY3Rpb25zLWJhdGNoLWFjdGlvbnNfX2J1dHRvbnNcIj5cbiAgICAgIDxwby1idXR0b25cbiAgICAgICAgcC1pY29uPVwicG8taWNvbi1kZWxldGVcIlxuICAgICAgICBbcC1kYW5nZXJdPVwidHJ1ZVwiXG4gICAgICAgIFtwLWRpc2FibGVkXT1cIml0ZW1zU2VsZWN0ZWQubGVuZ3RoID4gMSAmJiBzZXJ2aWNlRGVsZXRlQXBpICE9PSB1bmRlZmluZWRcIlxuICAgICAgICBbcC1sYWJlbF09XCJsaXRlcmFscy5kZWxldGVcIlxuICAgICAgICAocC1jbGljayk9XCJtb2RhbERlbGV0ZS5vcGVuKClcIlxuICAgICAgPjwvcG8tYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2ICNjb2x1bW5NYW5hZ2VyICpuZ0lmPVwiaGFzVmFsaWRDb2x1bW5zICYmICFoaWRlQ29sdW1uc01hbmFnZXJcIiBjbGFzcz1cInBvLXRhYmxlLWFjdGlvbnMtY29sdW1uLW1hbmFnZXJcIj5cbiAgICA8cG8tYnV0dG9uXG4gICAgICAjY29sdW1uTWFuYWdlclRhcmdldFxuICAgICAgcC1pY29uPVwicG8taWNvbi1zZXR0aW5nc1wiXG4gICAgICBwLWtpbmQ9XCJ0ZXJ0aWFyeVwiXG4gICAgICBwLXRvb2x0aXAtcG9zaXRpb249XCJsZWZ0XCJcbiAgICAgIFtwLWFyaWEtbGFiZWxdPVwibGl0ZXJhbHMuY29sdW1uc01hbmFnZXJcIlxuICAgICAgW3AtdG9vbHRpcF09XCJsaXRlcmFscy5jb2x1bW5zTWFuYWdlclwiXG4gICAgICAocC1jbGljayk9XCJvbk9wZW5Db2x1bW5NYW5hZ2VyKClcIlxuICAgID48L3BvLWJ1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj1cIiFoaWRlVGFibGVTZWFyY2ggJiYgaGFzVmFsaWRDb2x1bW5zXCIgY2xhc3M9XCJwby10YWJsZS1zZWFyY2hcIj5cbiAgICA8cG8tc2VhcmNoXG4gICAgICBbcC1pdGVtc109XCJpdGVtc1wiXG4gICAgICBbcC1maWx0ZXIta2V5c109XCJmaWx0ZXJlZENvbHVtbnNcIlxuICAgICAgW3AtZmlsdGVyLXR5cGVdPVwiZmlsdGVyVHlwZVwiXG4gICAgICAocC1maWx0ZXJlZC1pdGVtcy1jaGFuZ2UpPVwib25GaWx0ZXJlZEl0ZW1zQ2hhbmdlKCRldmVudClcIlxuICAgID5cbiAgICA8L3BvLXNlYXJjaD5cbiAgPC9kaXY+XG48L2Rpdj5cbjxwby1jb250YWluZXIgKm5nSWY9XCJjb250YWluZXI7IGVsc2UgdGFibGVDb250YWluZXJUZW1wbGF0ZVwiIHAtbm8tcGFkZGluZz5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlQ29udGFpbmVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbjwvcG8tY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI3RhYmxlQ29udGFpbmVyVGVtcGxhdGU+XG4gIDxkaXYgW2NsYXNzLnBvLXRhYmxlLWNvbnRhaW5lci1yZWxhdGl2ZV09XCJsb2FkaW5nXCI+XG4gICAgPGRpdiAqbmdJZj1cImxvYWRpbmdcIiBjbGFzcz1cInBvLXRhYmxlLW92ZXJsYXlcIj5cbiAgICAgIDxwby1sb2FkaW5nIGNsYXNzPVwicG8tdGFibGUtb3ZlcmxheS1jb250ZW50XCIgW3AtdGV4dF09XCJsaXRlcmFscy5sb2FkaW5nRGF0YVwiPjwvcG8tbG9hZGluZz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJwby10YWJsZS1tYWluLWNvbnRhaW5lclwiPlxuICAgICAgPGRpdlxuICAgICAgICAjdGFibGVXcmFwcGVyXG4gICAgICAgIGNsYXNzPVwicG8tdGFibGUtd3JhcHBlclwiXG4gICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZml4ZWQtY29sdW1ucy1waXhlbHNdPVwiYWxsQ29sdW1uc1dpZHRoUGl4ZWxzXCJcbiAgICAgICAgW3N0eWxlLm9wYWNpdHldPVwidGFibGVPcGFjaXR5XCJcbiAgICAgID5cbiAgICAgICAgPGRpdiAqbmdJZj1cImhlaWdodFwiIGNsYXNzPVwicG8tdGFibGUtY29udGFpbmVyXCIgW3N0eWxlLmhlaWdodC5weF09XCJoZWlnaHRUYWJsZUNvbnRhaW5lclwiPlxuICAgICAgICAgIDxkaXYgI3BvVGFibGVUYm9keSBjbGFzcz1cInBvLXRhYmxlLWNvbnRhaW5lci1maXhlZC1pbm5lclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlVmlydHVhbFNjcm9sbFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCIhaGVpZ2h0XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInBvLXRhYmxlLWZvb3RlclwiICpuZ0lmPVwiaGFzRm9vdGVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHN1YnRpdGxlQ29sdW1uczsgdHJhY2tCeTogdHJhY2tCeVwiPlxuICAgICAgPHBvLXRhYmxlLXN1YnRpdGxlLWZvb3RlciBbcC1saXRlcmFsc109XCJsaXRlcmFsc1wiIFtwLXN1YnRpdGxlc109XCJjb2x1bW4uc3VidGl0bGVzXCI+IDwvcG8tdGFibGUtc3VidGl0bGUtZm9vdGVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gU2hvdyBNb3JlIEJ1dHRvbiAtLT5cbjxkaXZcbiAgKm5nSWY9XCIhaW5maW5pdGVTY3JvbGxcIlxuICBjbGFzcz1cInBvLXJvdyBwby10YWJsZS1mb290ZXItc2hvdy1tb3JlXCJcbiAgW2NsYXNzLnBvLWludmlzaWJsZV09XCJzaG93TW9yZS5vYnNlcnZlcnMubGVuZ3RoID09PSAwICYmICFoYXNTZXJ2aWNlXCJcbiAgI3RhYmxlRm9vdGVyXG4+XG4gIDxwby1idXR0b25cbiAgICBjbGFzcz1cInBvLW9mZnNldC14bC00IHBvLW9mZnNldC1sZy00IHBvLW9mZnNldC1tZC0zIHBvLWxnLTQgcG8tbWQtNlwiXG4gICAgW3AtZGlzYWJsZWRdPVwic2hvd01vcmVEaXNhYmxlZFwiXG4gICAgW3AtbGFiZWxdPVwibGl0ZXJhbHMubG9hZE1vcmVEYXRhXCJcbiAgICBbcC1sb2FkaW5nXT1cImxvYWRpbmdTaG93TW9yZVwiXG4gICAgKHAtY2xpY2spPVwib25TaG93TW9yZSgpXCJcbiAgPlxuICA8L3BvLWJ1dHRvbj5cbjwvZGl2PlxuXG48IS0tIFRhYmxlIGRlZmF1bHQtLT5cbjxuZy10ZW1wbGF0ZSAjdGFibGVUZW1wbGF0ZT5cbiAgPHRhYmxlXG4gICAgY2xhc3M9XCJwby10YWJsZVwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3BvLXRhYmxlLWludGVyYWN0aXZlJzogc2VsZWN0YWJsZSB8fCBzb3J0LFxuICAgICAgJ3BvLXRhYmxlLXNlbGVjdGFibGUnOiBzZWxlY3RhYmxlLFxuICAgICAgJ3BvLXRhYmxlLXN0cmlwZWQnOiBzdHJpcGVkXG4gICAgfVwiXG4gICAgW2F0dHIucC1zcGFjaW5nXT1cInNwYWNpbmdcIlxuICA+XG4gICAgPHRoZWFkPlxuICAgICAgPHRyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ25vLWhvdmVyJzogaGlkZVNlbGVjdEFsbCwgJ3BvLXRhYmxlLWNvbHVtbi1kcmFnJzogdGhpcy5pc0RyYWdnYWJsZSB9XCJcbiAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlcl09XCIhaGVpZ2h0XCJcbiAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxuICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDx0aFxuICAgICAgICAgICpuZ0lmPVwiaGFzU2VsZWN0YWJsZUNvbHVtblwiXG4gICAgICAgICAgW3N0eWxlLnBvaW50ZXItZXZlbnRzXT1cImhpZGVTZWxlY3RBbGwgPyAnbm9uZScgOiAnYXV0bydcIlxuICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLXNlbGVjdGFibGVcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZpeGVkLWlubmVyXT1cImhlaWdodFwiPlxuICAgICAgICAgICAgPHBvLWNoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9XCJzZWxlY3RBbGxcIlxuICAgICAgICAgICAgICAqbmdJZj1cIiFoaWRlU2VsZWN0QWxsXCJcbiAgICAgICAgICAgICAgKHAtY2hhbmdlKT1cInNlbGVjdEFsbFJvd3MoKVwiXG4gICAgICAgICAgICAgIFtwLWNoZWNrYm94VmFsdWVdPVwic2VsZWN0QWxsID09PSBudWxsID8gJ21peGVkJyA6IHNlbGVjdEFsbFwiXG4gICAgICAgICAgICA+PC9wby1jaGVja2JveD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90aD5cblxuICAgICAgICA8dGhcbiAgICAgICAgICAqbmdJZj1cIihoYXNNYXN0ZXJEZXRhaWxDb2x1bW4gfHwgaGFzUm93VGVtcGxhdGUpICYmICFoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0XCJcbiAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1jb2x1bW4gcG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxcIlxuICAgICAgICA+PC90aD5cblxuICAgICAgICA8IS0tIENvbHVuYSBjcmlhZGEgcGFyYSBjYXNvIGFzIGHDp8O1ZXMgZmlxdWVtIG5vIGxhZG8gZXNxdWVyZG8gLS0+XG4gICAgICAgIDx0aFxuICAgICAgICAgICNjb2x1bW5BY3Rpb25MZWZ0XG4gICAgICAgICAgKm5nSWY9XCIhYWN0aW9uUmlnaHQgJiYgKHZpc2libGVBY3Rpb25zLmxlbmd0aCA+IDEgfHwgaXNTaW5nbGVBY3Rpb24pXCJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxdPVwiIWlzU2luZ2xlQWN0aW9uXCJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLXNpbmdsZS1hY3Rpb25dPVwiaXNTaW5nbGVBY3Rpb25cIlxuICAgICAgICA+PC90aD5cblxuICAgICAgICA8dGggKm5nSWY9XCIhaGFzTWFpbkNvbHVtbnNcIiAjbm9Db2x1bW5zSGVhZGVyIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWNvbHVtbiBwby10ZXh0LWNlbnRlclwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWlnaHQ7IHRoZW4gbm9Db2x1bW5zV2l0aEhlaWdodDsgZWxzZSBub0NvbHVtbnNXaXRob3V0SGVpZ2h0XCI+IDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3RoPlxuXG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdJZj1cInRoaXMuaXNEcmFnZ2FibGUgfHwgaGFzU29tZUZpeGVkKCk7IHRoZW4gdGFibGVEZWZhdWx0VGhEcmFnRHJvcDsgZWxzZSB0YWJsZURlZmF1bHRUaERlZmF1bHRcIlxuICAgICAgICA+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3RhYmxlRGVmYXVsdFRoRHJhZ0Ryb3A+XG4gICAgICAgICAgPHRoXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIG1haW5Db2x1bW5zOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWVsbGlwc2lzIHAtZWxlbWVudCBwby1mcm96ZW4tY29sdW1uXCJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1wby10YWJsZS1jb2x1bW4tbmFtZV09XCJjb2x1bW4ubGFiZWwgfHwgKGNvbHVtbi5wcm9wZXJ0eSB8IHRpdGxlY2FzZSkgfCBsb3dlcmNhc2VcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLWNsaWNrYWJsZV09XCIoc29ydCAmJiBjb2x1bW4uc29ydGFibGUgIT09IGZhbHNlKSB8fCBoYXNTZXJ2aWNlXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ3BvLXRhYmxlLWhlYWRlci1zb3J0ZWQnOlxuICAgICAgICAgICAgICAgIHNvcnQgJiZcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShzb3J0ZWRDb2x1bW4/LnByb3BlcnR5KSA9PT0gSlNPTi5zdHJpbmdpZnkoY29sdW1uKSAmJlxuICAgICAgICAgICAgICAgIChzb3J0ZWRDb2x1bW4uYXNjZW5kaW5nIHx8ICFzb3J0ZWRDb2x1bW4uYXNjZW5kaW5nKVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLXN1YnRpdGxlXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4tZHJhZy1ib3hdPVwidGhpcy5pc0RyYWdnYWJsZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwic29ydENvbHVtbihjb2x1bW4pXCJcbiAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgIGNka0RyYWdMb2NrQXhpcz1cInhcIlxuICAgICAgICAgICAgW2Nka0RyYWdEaXNhYmxlZF09XCJjb2x1bW4uZml4ZWQgPyAndHJ1ZScgOiAnZmFsc2UnXCJcbiAgICAgICAgICAgIFtwRnJvemVuQ29sdW1uXT1cImNvbHVtbi5maXhlZFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1mbGV4XCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1maXhlZC1pbm5lcl09XCJoZWlnaHRcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZsZXgtcmlnaHRdPVwiY29sdW1uLnR5cGUgPT09ICdjdXJyZW5jeScgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1mbGV4LWNlbnRlcl09XCJjb2x1bW4udHlwZSA9PT0gJ3N1YnRpdGxlJ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0aGlzLmlzRHJhZ2dhYmxlICYmICFjb2x1bW4uZml4ZWRcIj5cbiAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICBjZGtEcmFnSGFuZGxlXG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjI0XCJcbiAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjI0XCJcbiAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjlcIiBjeT1cIjZcIiByPVwiMlwiIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTVcIiBjeT1cIjZcIiByPVwiMlwiIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiOVwiIGN5PVwiMTJcIiByPVwiMlwiIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTVcIiBjeT1cIjEyXCIgcj1cIjJcIiBmaWxsPVwiYmxhY2tcIiAvPlxuICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjlcIiBjeT1cIjE4XCIgcj1cIjJcIiBmaWxsPVwiYmxhY2tcIiAvPlxuICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjE1XCIgY3k9XCIxOFwiIHI9XCIyXCIgZmlsbD1cImJsYWNrXCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50SGVhZGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4gfVwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvdGg+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjdGFibGVEZWZhdWx0VGhEZWZhdWx0PlxuICAgICAgICAgIDx0aFxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBtYWluQ29sdW1uczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVwiXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1lbGxpcHNpcyBwLWVsZW1lbnQgcG8tZnJvemVuLWNvbHVtblwiXG4gICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtcG8tdGFibGUtY29sdW1uLW5hbWVdPVwiY29sdW1uLmxhYmVsIHx8IChjb2x1bW4ucHJvcGVydHkgfCB0aXRsZWNhc2UpIHwgbG93ZXJjYXNlXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby1jbGlja2FibGVdPVwiKHNvcnQgJiYgY29sdW1uLnNvcnRhYmxlICE9PSBmYWxzZSkgfHwgaGFzU2VydmljZVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdwby10YWJsZS1oZWFkZXItc29ydGVkJzpcbiAgICAgICAgICAgICAgICBzb3J0ICYmXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoc29ydGVkQ29sdW1uPy5wcm9wZXJ0eSkgPT09IEpTT04uc3RyaW5naWZ5KGNvbHVtbikgJiZcbiAgICAgICAgICAgICAgICAoc29ydGVkQ29sdW1uLmFzY2VuZGluZyB8fCAhc29ydGVkQ29sdW1uLmFzY2VuZGluZylcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1zdWJ0aXRsZV09XCJjb2x1bW4udHlwZSA9PT0gJ3N1YnRpdGxlJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwic29ydENvbHVtbihjb2x1bW4pXCJcbiAgICAgICAgICAgIFtwRnJvemVuQ29sdW1uXT1cImNvbHVtbi5maXhlZFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1mbGV4XCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1maXhlZC1pbm5lcl09XCJoZWlnaHRcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZsZXgtcmlnaHRdPVwiY29sdW1uLnR5cGUgPT09ICdjdXJyZW5jeScgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1mbGV4LWNlbnRlcl09XCJjb2x1bW4udHlwZSA9PT0gJ3N1YnRpdGxlJ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50SGVhZGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4gfVwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvdGg+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPHRoXG4gICAgICAgICAgKm5nSWY9XCJoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0ICYmIChoYXNWaXNpYmxlQWN0aW9ucyB8fCBoaWRlQ29sdW1uc01hbmFnZXIpXCJcbiAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1jb2x1bW4gcG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxcIlxuICAgICAgICA+PC90aD5cblxuICAgICAgICA8dGhcbiAgICAgICAgICAqbmdJZj1cImhhc1Zpc2libGVBY3Rpb25zICYmIGFjdGlvblJpZ2h0ICYmICh2aXNpYmxlQWN0aW9ucy5sZW5ndGggPiAxIHx8IGlzU2luZ2xlQWN0aW9uKVwiXG4gICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1zaW5nbGUtYWN0aW9uXT1cImlzU2luZ2xlQWN0aW9uXCJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWFjdGlvbnNdPVwiIWlzU2luZ2xlQWN0aW9uXCJcbiAgICAgICAgPjwvdGg+XG4gICAgICA8L3RyPlxuICAgIDwvdGhlYWQ+XG5cbiAgICA8dGJvZHkgY2xhc3M9XCJwby10YWJsZS1ncm91cC1yb3dcIiAqbmdJZj1cIiFoYXNJdGVtcyB8fCAhaGFzTWFpbkNvbHVtbnNcIj5cbiAgICAgIDx0ciBjbGFzcz1cInBvLXRhYmxlLXJvdyBwby10YWJsZS1yb3ctbm8tZGF0YVwiPlxuICAgICAgICA8dGQgW2NvbFNwYW5dPVwiY29sdW1uQ291bnRcIiBjbGFzcz1cInBvLXRhYmxlLW5vLWRhdGEgcG8tdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICA8c3Bhbj4ge3sgbGl0ZXJhbHMubm9EYXRhIH19IDwvc3Bhbj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgPC90Ym9keT5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNNYWluQ29sdW1uc1wiPlxuICAgICAgPHRib2R5IGNsYXNzPVwicG8tdGFibGUtZ3JvdXAtcm93XCIgKm5nRm9yPVwibGV0IHJvdyBvZiBmaWx0ZXJlZEl0ZW1zOyBsZXQgcm93SW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVwiPlxuICAgICAgICA8dHIgY2xhc3M9XCJwby10YWJsZS1yb3dcIiBbY2xhc3MucG8tdGFibGUtcm93LWFjdGl2ZV09XCJyb3cuJHNlbGVjdGVkIHx8IChyb3cuJHNlbGVjdGVkID09PSBudWxsICYmIHNlbGVjdGFibGUpXCI+XG4gICAgICAgICAgPHRkICpuZ0lmPVwic2VsZWN0YWJsZVwiIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLXNlbGVjdGFibGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaW5nbGVTZWxlY3QgPyBpbnB1dFJhZGlvIDogaW5wdXRDaGVja2JveDsgY29udGV4dDogeyAkaW1wbGljaXQ6IHJvdyB9XCI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgPCEtLSBWYWxpZGEgc2UgYSBvcmlnZW0gZG8gZGV0YWlsIMOpIHBlbG8gaW5wdXQgZG8gcG8tdGFibGUgLS0+XG4gICAgICAgICAgPHRkXG4gICAgICAgICAgICAqbmdJZj1cImNvbHVtbk1hc3RlckRldGFpbCAmJiAhaGlkZURldGFpbCAmJiAhaGFzUm93VGVtcGxhdGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tZGV0YWlsLXRvZ2dsZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGV0YWlsKHJvdylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwb1RhYmxlQ29sdW1uRGV0YWlsXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC90ZD5cblxuICAgICAgICAgIDwhLS0gQ29sdW5hIGNvbSBhcyBhw6fDtWVzIG5hIGVzcXVlcmRhIChwYWRyw6NvKS0tPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgKm5nSWY9XCIhYWN0aW9uUmlnaHQgJiYgKHZpc2libGVBY3Rpb25zLmxlbmd0aCA+IDEgfHwgaXNTaW5nbGVBY3Rpb24pXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIkFjdGlvbnNDb2x1bW5UZW1wbGF0ZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgPCEtLSBWYWxpZGEgc2UgYSBvcmlnZW0gZG8gZGV0YWlsIMOpIHBlbGEgZGlyZXRpdmEgLS0+XG4gICAgICAgICAgPHRkXG4gICAgICAgICAgICAqbmdJZj1cImhhc1Jvd1RlbXBsYXRlICYmICFoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0XCJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWRldGFpbC10b2dnbGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURldGFpbChyb3cpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicG9UYWJsZUNvbHVtbkRldGFpbFwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgbWFpbkNvbHVtbnM7IGxldCBjb2x1bW5JbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWNvbHVtbl09XCJjb2x1bW4udHlwZSAhPT0gJ2ljb24nXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4tcmlnaHRdPVwiY29sdW1uLnR5cGUgPT09ICdjdXJyZW5jeScgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4tY2VudGVyXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4taWNvbnNdPVwiY29sdW1uLnR5cGUgPT09ICdpY29uJ1wiXG4gICAgICAgICAgICBbcEZyb3plbkNvbHVtbl09XCJjb2x1bW4uZml4ZWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJwLWVsZW1lbnQgcG8tZnJvemVuLWNvbHVtblwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJnZXRDbGFzc0NvbG9yKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiaGFzU2VsZWN0YWJsZVJvdygpID8gc2VsZWN0Um93KHJvdykgOiAnamF2YXNjcmlwdDo7J1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1jZWxsIHBvLXRhYmxlLWJvZHktZWxsaXBzaXMgbm90cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbbmdTd2l0Y2hdPVwiY29sdW1uLnR5cGVcIlxuICAgICAgICAgICAgICBbcC10b29sdGlwXT1cInRvb2x0aXBUZXh0XCJcbiAgICAgICAgICAgICAgW3AtYXBwZW5kLWluLWJvZHldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cInRvb2x0aXBNb3VzZUVudGVyKCRldmVudCwgY29sdW1uLCByb3cpXCJcbiAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwidG9vbHRpcE1vdXNlTGVhdmUoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInY29sdW1uVGVtcGxhdGUnXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImdldFRlbXBsYXRlKGNvbHVtbik7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfVwiPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidjZWxsVGVtcGxhdGUnXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlQ2VsbFRlbXBsYXRlPy50ZW1wbGF0ZVJlZjsgY29udGV4dDogeyByb3c6IHJvdywgY29sdW1uOiBjb2x1bW4gfVwiPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidib29sZWFuJ1wiPlxuICAgICAgICAgICAgICAgIHt7IGdldEJvb2xlYW5MYWJlbChnZXRDZWxsRGF0YShyb3csIGNvbHVtbiksIGNvbHVtbikgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInY3VycmVuY3knXCI+XG4gICAgICAgICAgICAgICAge3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIHwgY3VycmVuY3k6IGNvbHVtbi5mb3JtYXQ6J3N5bWJvbCc6JzEuMi0yJyB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiPlxuICAgICAgICAgICAgICAgIHt7IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB8IGRhdGU6IGNvbHVtbi5mb3JtYXQgfHwgJ2RkL01NL3l5eXknIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3RpbWUnXCI+XG4gICAgICAgICAgICAgICAge3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIHwgcG9fdGltZTogY29sdW1uLmZvcm1hdCB8fCAnSEg6bW06c3MuZmZmZmZmJyB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidkYXRlVGltZSdcIj5cbiAgICAgICAgICAgICAgICB7eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfCBkYXRlOiBjb2x1bW4uZm9ybWF0IHx8ICdkZC9NTS95eXl5IEhIOm1tOnNzJyB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidudW1iZXInXCI+XG4gICAgICAgICAgICAgICAge3sgZm9ybWF0TnVtYmVyKGdldENlbGxEYXRhKHJvdywgY29sdW1uKSwgY29sdW1uLmZvcm1hdCkgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxwby10YWJsZS1jb2x1bW4tbGlua1xuICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInbGluaydcIlxuICAgICAgICAgICAgICAgIFtwLWFjdGlvbl09XCJjb2x1bW4uYWN0aW9uXCJcbiAgICAgICAgICAgICAgICBbcC1kaXNhYmxlZF09XCJjaGVja0Rpc2FibGVkKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgW3AtbGlua109XCJyb3dbY29sdW1uLmxpbmtdXCJcbiAgICAgICAgICAgICAgICBbcC1yb3ddPVwicm93XCJcbiAgICAgICAgICAgICAgICBbcC12YWx1ZV09XCJnZXRDZWxsRGF0YShyb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrTGluaygkZXZlbnQsIHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9wby10YWJsZS1jb2x1bW4tbGluaz5cblxuICAgICAgICAgICAgICA8cG8tdGFibGUtY29sdW1uLWljb25cbiAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2ljb24nXCJcbiAgICAgICAgICAgICAgICBbcC1jb2x1bW5dPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICBbcC1pY29uc109XCJnZXRDb2x1bW5JY29ucyhyb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICAgIFtwLXJvd109XCJyb3dcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvcG8tdGFibGUtY29sdW1uLWljb24+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidzdWJ0aXRsZSdcIj5cbiAgICAgICAgICAgICAgICA8cG8tdGFibGUtc3VidGl0bGUtY2lyY2xlIFtwLXN1YnRpdGxlXT1cImdldFN1YnRpdGxlQ29sdW1uKHJvdywgY29sdW1uKVwiPjwvcG8tdGFibGUtc3VidGl0bGUtY2lyY2xlPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInbGFiZWwnXCI+XG4gICAgICAgICAgICAgICAgPHBvLXRhYmxlLWNvbHVtbi1sYWJlbCBbcC12YWx1ZV09XCJnZXRDb2x1bW5MYWJlbChyb3csIGNvbHVtbilcIj4gPC9wby10YWJsZS1jb2x1bW4tbGFiZWw+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoRGVmYXVsdD57eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgPHRkXG4gICAgICAgICAgICAqbmdJZj1cImhhc1Jvd1RlbXBsYXRlV2l0aEFycm93RGlyZWN0aW9uUmlnaHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tZGV0YWlsLXRvZ2dsZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGV0YWlsKHJvdylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwb1RhYmxlQ29sdW1uRGV0YWlsXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC90ZD5cblxuICAgICAgICAgIDwhLS0gQ29sdW5hIGRlIGHDp29lcyBuYSBkaXJlaXRhIC0tPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgKm5nSWY9XCJhY3Rpb25SaWdodFwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJBY3Rpb25zQ29sdW1uVGVtcGxhdGVcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC90cj5cblxuICAgICAgICA8dHIgKm5nSWY9XCJoYXNNYWluQ29sdW1ucyAmJiBoYXNSb3dUZW1wbGF0ZSAmJiByb3cuJHNob3dEZXRhaWwgJiYgaXNTaG93Um93VGVtcGxhdGUocm93LCByb3dJbmRleClcIj5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJwby10YWJsZS1yb3ctdGVtcGxhdGUtY29udGFpbmVyXCIgW2NvbFNwYW5dPVwiY29sdW1uQ291bnRGb3JNYXN0ZXJEZXRhaWxcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0YWJsZVJvd1RlbXBsYXRlLnRlbXBsYXRlUmVmXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cblxuICAgICAgICA8dHIgKm5nSWY9XCJoYXNNYWluQ29sdW1ucyAmJiBpc1Nob3dNYXN0ZXJEZXRhaWwocm93KVwiPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1kZXRhaWxcIiBbY29sU3Bhbl09XCJjb2x1bW5Db3VudEZvck1hc3RlckRldGFpbFwiPlxuICAgICAgICAgICAgPHBvLXRhYmxlLWRldGFpbFxuICAgICAgICAgICAgICBbcC1zZWxlY3RhYmxlXT1cInNlbGVjdGFibGUgJiYgIWRldGFpbEhpZGVTZWxlY3RcIlxuICAgICAgICAgICAgICBbcC1kZXRhaWxdPVwiY29sdW1uTWFzdGVyRGV0YWlsLmRldGFpbFwiXG4gICAgICAgICAgICAgIFtwLWl0ZW1zXT1cInJvd1tuYW1lQ29sdW1uRGV0YWlsXVwiXG4gICAgICAgICAgICAgIChwLXNlbGVjdC1yb3cpPVwic2VsZWN0RGV0YWlsUm93KCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9wby10YWJsZS1kZXRhaWw+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGJvZHk+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvdGFibGU+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIFRhYmxlIHdpdGggdmlydHVhbCBzY3JvbGwgLS0+XG48bmctdGVtcGxhdGUgI3RhYmxlVmlydHVhbFNjcm9sbFRlbXBsYXRlPlxuICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XG4gICAgI3RhYmxlVmlydHVhbFNjcm9sbFxuICAgIFtpdGVtU2l6ZV09XCJpdGVtU2l6ZVwiXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWlnaHRUYWJsZUNvbnRhaW5lclwiXG4gICAgW21pbkJ1ZmZlclB4XT1cImhlaWdodFRhYmxlQ29udGFpbmVyIDwgMTAwID8gMTAwIDogaGVpZ2h0VGFibGVDb250YWluZXJcIlxuICAgIFttYXhCdWZmZXJQeF09XCJoZWlnaHRUYWJsZUNvbnRhaW5lciA8IDIwMCA/IDIwMCA6IGhlaWdodFRhYmxlQ29udGFpbmVyXCJcbiAgPlxuICAgIDx0YWJsZVxuICAgICAgY2xhc3M9XCJwby10YWJsZVwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdwby10YWJsZS1pbnRlcmFjdGl2ZSc6IHNlbGVjdGFibGUgfHwgc29ydCxcbiAgICAgICAgJ3BvLXRhYmxlLXNlbGVjdGFibGUnOiBzZWxlY3RhYmxlLFxuICAgICAgICAncG8tdGFibGUtc3RyaXBlZCc6IHN0cmlwZWRcbiAgICAgIH1cIlxuICAgICAgW25nU3R5bGVdPVwieyAndGFibGUtbGF5b3V0JzogIWhhc0l0ZW1zID8gJ2ZpeGVkJyA6ICdhdXRvJyB9XCJcbiAgICAgIFthdHRyLnAtc3BhY2luZ109XCJzcGFjaW5nXCJcbiAgICA+XG4gICAgICA8dGhlYWQgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItc3RpY2t5XCIgW3N0eWxlLnRvcF09XCJpbnZlcnNlT2ZUcmFuc2xhdGlvblwiPlxuICAgICAgICA8dHJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyXT1cIiFoZWlnaHRcIlxuICAgICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICAgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxuICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx0aFxuICAgICAgICAgICAgKm5nSWY9XCJoYXNTZWxlY3RhYmxlQ29sdW1uXCJcbiAgICAgICAgICAgIFtzdHlsZS5wb2ludGVyLWV2ZW50c109XCJoaWRlU2VsZWN0QWxsID8gJ25vbmUnIDogJ2F1dG8nXCJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLXNlbGVjdGFibGVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1maXhlZC1pbm5lcl09XCJoZWlnaHRcIj5cbiAgICAgICAgICAgICAgPHBvLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgbmFtZT1cInNlbGVjdEFsbFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhaGlkZVNlbGVjdEFsbFwiXG4gICAgICAgICAgICAgICAgKHAtY2hhbmdlKT1cInNlbGVjdEFsbFJvd3MoKVwiXG4gICAgICAgICAgICAgICAgW3AtY2hlY2tib3hWYWx1ZV09XCJzZWxlY3RBbGwgPT09IG51bGwgPyAnbWl4ZWQnIDogc2VsZWN0QWxsXCJcbiAgICAgICAgICAgICAgPjwvcG8tY2hlY2tib3g+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3RoPlxuXG4gICAgICAgICAgPHRoXG4gICAgICAgICAgICAqbmdJZj1cIihoYXNNYXN0ZXJEZXRhaWxDb2x1bW4gfHwgaGFzUm93VGVtcGxhdGUpICYmICFoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0XCJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWNvbHVtbiBwby10YWJsZS1oZWFkZXItbWFzdGVyLWRldGFpbFwiXG4gICAgICAgICAgPjwvdGg+XG5cbiAgICAgICAgICA8IS0tIENvbHVuYSBjcmlhZGEgcGFyYSBjYXNvIGFzIGHDp8O1ZXMgZmlxdWVtIG5vIGxhZG8gZXNxdWVyZG8gLS0+XG4gICAgICAgICAgPHRoXG4gICAgICAgICAgICAjY29sdW1uQWN0aW9uTGVmdFxuICAgICAgICAgICAgKm5nSWY9XCIhYWN0aW9uUmlnaHQgJiYgKHZpc2libGVBY3Rpb25zLmxlbmd0aCA+IDEgfHwgaXNTaW5nbGVBY3Rpb24pXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItbWFzdGVyLWRldGFpbF09XCIhaXNTaW5nbGVBY3Rpb25cIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1zaW5nbGUtYWN0aW9uXT1cImlzU2luZ2xlQWN0aW9uXCJcbiAgICAgICAgICA+PC90aD5cblxuICAgICAgICAgIDx0aCAqbmdJZj1cIiFoYXNNYWluQ29sdW1uc1wiICNub0NvbHVtbnNIZWFkZXIgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItY29sdW1uIHBvLXRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVpZ2h0OyB0aGVuIG5vQ29sdW1uc1dpdGhIZWlnaHQ7IGVsc2Ugbm9Db2x1bW5zV2l0aG91dEhlaWdodFwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3RoPlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgdGhpcy5pc0RyYWdnYWJsZSB8fCBoYXNTb21lRml4ZWQoKTtcbiAgICAgICAgICAgICAgdGhlbiB0YWJsZVZpcnR1YWxTY3JvbGxUaERyYWdEcm9wO1xuICAgICAgICAgICAgICBlbHNlIHRhYmxlVmlydHVhbFNjcm9sbFRoRGVmYXVsdFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICN0YWJsZVZpcnR1YWxTY3JvbGxUaERyYWdEcm9wPlxuICAgICAgICAgICAgPHRoXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgbWFpbkNvbHVtbnM7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlcIlxuICAgICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1lbGxpcHNpcyBwLWVsZW1lbnQgcG8tZnJvemVuLWNvbHVtblwiXG4gICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wby10YWJsZS1jb2x1bW4tbmFtZV09XCJjb2x1bW4ubGFiZWwgfHwgKGNvbHVtbi5wcm9wZXJ0eSB8IHRpdGxlY2FzZSkgfCBsb3dlcmNhc2VcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tY2xpY2thYmxlXT1cIihzb3J0ICYmIGNvbHVtbi5zb3J0YWJsZSAhPT0gZmFsc2UpIHx8IGhhc1NlcnZpY2VcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ3BvLXRhYmxlLWhlYWRlci1zb3J0ZWQnOlxuICAgICAgICAgICAgICAgICAgc29ydCAmJlxuICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoc29ydGVkQ29sdW1uPy5wcm9wZXJ0eSkgPT09IEpTT04uc3RyaW5naWZ5KGNvbHVtbikgJiZcbiAgICAgICAgICAgICAgICAgIChzb3J0ZWRDb2x1bW4uYXNjZW5kaW5nIHx8ICFzb3J0ZWRDb2x1bW4uYXNjZW5kaW5nKVxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnd2lkdGgnOiAhaGFzSXRlbXMgPyAnMTAwJScgOiAnYXV0bycgfVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItc3VidGl0bGVdPVwiY29sdW1uLnR5cGUgPT09ICdzdWJ0aXRsZSdcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtY29sdW1uLWRyYWctYm94XT1cInRoaXMuaXNEcmFnZ2FibGVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic29ydENvbHVtbihjb2x1bW4pXCJcbiAgICAgICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgICAgICBjZGtEcmFnTG9ja0F4aXM9XCJ4XCJcbiAgICAgICAgICAgICAgW2Nka0RyYWdEaXNhYmxlZF09XCJjb2x1bW4uZml4ZWQgPyAndHJ1ZScgOiAnZmFsc2UnXCJcbiAgICAgICAgICAgICAgW3BGcm96ZW5Db2x1bW5dPVwiY29sdW1uLmZpeGVkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWZsZXhcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZml4ZWQtaW5uZXJdPVwiaGVpZ2h0XCJcbiAgICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZsZXgtcmlnaHRdPVwiY29sdW1uLnR5cGUgPT09ICdjdXJyZW5jeScgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZsZXgtY2VudGVyXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0aGlzLmlzRHJhZ2dhYmxlICYmICFjb2x1bW4uZml4ZWRcIj5cbiAgICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgY2RrRHJhZ0hhbmRsZVxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjI0XCJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjlcIiBjeT1cIjZcIiByPVwiMlwiIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxNVwiIGN5PVwiNlwiIHI9XCIyXCIgZmlsbD1cImJsYWNrXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjlcIiBjeT1cIjEyXCIgcj1cIjJcIiBmaWxsPVwiYmxhY2tcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTVcIiBjeT1cIjEyXCIgcj1cIjJcIiBmaWxsPVwiYmxhY2tcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiOVwiIGN5PVwiMThcIiByPVwiMlwiIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxNVwiIGN5PVwiMThcIiByPVwiMlwiIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudEhlYWRlclRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogY29sdW1uIH1cIj4gPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGFibGVWaXJ0dWFsU2Nyb2xsVGhEZWZhdWx0PlxuICAgICAgICAgICAgPHRoXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgbWFpbkNvbHVtbnM7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlcIlxuICAgICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1lbGxpcHNpcyBwLWVsZW1lbnQgcG8tZnJvemVuLWNvbHVtbiBleGFtcGxlLWJveFwiXG4gICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wby10YWJsZS1jb2x1bW4tbmFtZV09XCJjb2x1bW4ubGFiZWwgfHwgKGNvbHVtbi5wcm9wZXJ0eSB8IHRpdGxlY2FzZSkgfCBsb3dlcmNhc2VcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tY2xpY2thYmxlXT1cIihzb3J0ICYmIGNvbHVtbi5zb3J0YWJsZSAhPT0gZmFsc2UpIHx8IGhhc1NlcnZpY2VcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ3BvLXRhYmxlLWhlYWRlci1zb3J0ZWQnOlxuICAgICAgICAgICAgICAgICAgc29ydCAmJlxuICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoc29ydGVkQ29sdW1uPy5wcm9wZXJ0eSkgPT09IEpTT04uc3RyaW5naWZ5KGNvbHVtbikgJiZcbiAgICAgICAgICAgICAgICAgIChzb3J0ZWRDb2x1bW4uYXNjZW5kaW5nIHx8ICFzb3J0ZWRDb2x1bW4uYXNjZW5kaW5nKVxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnd2lkdGgnOiAhaGFzSXRlbXMgPyAnMTAwJScgOiAnYXV0bycgfVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItc3VidGl0bGVdPVwiY29sdW1uLnR5cGUgPT09ICdzdWJ0aXRsZSdcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic29ydENvbHVtbihjb2x1bW4pXCJcbiAgICAgICAgICAgICAgW3BGcm96ZW5Db2x1bW5dPVwiY29sdW1uLmZpeGVkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWZsZXhcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZml4ZWQtaW5uZXJdPVwiaGVpZ2h0XCJcbiAgICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZsZXgtcmlnaHRdPVwiY29sdW1uLnR5cGUgPT09ICdjdXJyZW5jeScgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZsZXgtY2VudGVyXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50SGVhZGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4gfVwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICA8dGhcbiAgICAgICAgICAgICpuZ0lmPVwiaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodCAmJiAoaGFzVmlzaWJsZUFjdGlvbnMgfHwgaGlkZUNvbHVtbnNNYW5hZ2VyKVwiXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1jb2x1bW4gcG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxcIlxuICAgICAgICAgID48L3RoPlxuXG4gICAgICAgICAgPHRoXG4gICAgICAgICAgICAqbmdJZj1cImhhc1Zpc2libGVBY3Rpb25zICYmIGFjdGlvblJpZ2h0ICYmICh2aXNpYmxlQWN0aW9ucy5sZW5ndGggPiAxIHx8IGlzU2luZ2xlQWN0aW9uKVwiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLXNpbmdsZS1hY3Rpb25dPVwiaXNTaW5nbGVBY3Rpb25cIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1hY3Rpb25zXT1cIiFpc1NpbmdsZUFjdGlvblwiXG4gICAgICAgICAgPjwvdGg+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3RoZWFkPlxuXG4gICAgICA8dGJvZHkgY2xhc3M9XCJwby10YWJsZS1ncm91cC1yb3dcIiAqbmdJZj1cIiFoYXNJdGVtcyB8fCAhaGFzTWFpbkNvbHVtbnNcIj5cbiAgICAgICAgPHRyIGNsYXNzPVwicG8tdGFibGUtcm93IHBvLXRhYmxlLXJvdy1uby1kYXRhXCI+XG4gICAgICAgICAgPHRkIFtjb2xTcGFuXT1cImNvbHVtbkNvdW50XCIgY2xhc3M9XCJwby10YWJsZS1uby1kYXRhIHBvLXRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICA8c3Bhbj4ge3sgbGl0ZXJhbHMubm9EYXRhIH19IDwvc3Bhbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90Ym9keT5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc01haW5Db2x1bW5zXCI+XG4gICAgICAgIDx0Ym9keVxuICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtZ3JvdXAtcm93XCJcbiAgICAgICAgICAqY2RrVmlydHVhbEZvcj1cImxldCByb3cgb2YgZmlsdGVyZWRJdGVtczsgbGV0IHJvd0luZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlcIlxuICAgICAgICA+XG4gICAgICAgICAgPHRyXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLXJvd1wiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtcm93LWFjdGl2ZV09XCJyb3cuJHNlbGVjdGVkIHx8IChyb3cuJHNlbGVjdGVkID09PSBudWxsICYmIHNlbGVjdGFibGUpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8dGQgKm5nSWY9XCJzZWxlY3RhYmxlXCIgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tc2VsZWN0YWJsZVwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2luZ2xlU2VsZWN0ID8gaW5wdXRSYWRpbyA6IGlucHV0Q2hlY2tib3g7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3cgfVwiPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgIDwhLS0gVmFsaWRhIHNlIGEgb3JpZ2VtIGRvIGRldGFpbCDDqSBwZWxvIGlucHV0IGRvIHBvLXRhYmxlIC0tPlxuICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uTWFzdGVyRGV0YWlsICYmICFoaWRlRGV0YWlsICYmICFoYXNSb3dUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWRldGFpbC10b2dnbGVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGV0YWlsKHJvdylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwb1RhYmxlQ29sdW1uRGV0YWlsXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICA8IS0tIENvbHVuYSBjb20gYXMgYcOnw7VlcyBuYSBlc3F1ZXJkYSAocGFkcsOjbyktLT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAqbmdJZj1cIiFhY3Rpb25SaWdodCAmJiAodmlzaWJsZUFjdGlvbnMubGVuZ3RoID4gMSB8fCBpc1NpbmdsZUFjdGlvbilcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJBY3Rpb25zQ29sdW1uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgPCEtLSBWYWxpZGEgc2UgYSBvcmlnZW0gZG8gZGV0YWlsIMOpIHBlbGEgZGlyZXRpdmEgLS0+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgKm5nSWY9XCJoYXNSb3dUZW1wbGF0ZSAmJiAhaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWRldGFpbC10b2dnbGVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGV0YWlsKHJvdylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwb1RhYmxlQ29sdW1uRGV0YWlsXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBtYWluQ29sdW1uczsgbGV0IGNvbHVtbkluZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlcIlxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW5dPVwiY29sdW1uLnR5cGUgIT09ICdpY29uJ1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4tcmlnaHRdPVwiY29sdW1uLnR5cGUgPT09ICdjdXJyZW5jeScgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWNvbHVtbi1jZW50ZXJdPVwiY29sdW1uLnR5cGUgPT09ICdzdWJ0aXRsZSdcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtY29sdW1uLWljb25zXT1cImNvbHVtbi50eXBlID09PSAnaWNvbidcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJnZXRDbGFzc0NvbG9yKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgIFtwRnJvemVuQ29sdW1uXT1cImNvbHVtbi5maXhlZFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicC1lbGVtZW50IHBvLWZyb3plbi1jb2x1bW5cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiaGFzU2VsZWN0YWJsZVJvdygpID8gc2VsZWN0Um93KHJvdykgOiAnamF2YXNjcmlwdDo7J1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1jZWxsIHBvLXRhYmxlLWJvZHktZWxsaXBzaXMgbm90cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFtuZ1N3aXRjaF09XCJjb2x1bW4udHlwZVwiXG4gICAgICAgICAgICAgICAgW3AtdG9vbHRpcF09XCJ0b29sdGlwVGV4dFwiXG4gICAgICAgICAgICAgICAgW3AtYXBwZW5kLWluLWJvZHldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwidG9vbHRpcE1vdXNlRW50ZXIoJGV2ZW50LCBjb2x1bW4sIHJvdylcIlxuICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cInRvb2x0aXBNb3VzZUxlYXZlKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidjb2x1bW5UZW1wbGF0ZSdcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJnZXRUZW1wbGF0ZShjb2x1bW4pOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIH1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidjZWxsVGVtcGxhdGUnXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVDZWxsVGVtcGxhdGU/LnRlbXBsYXRlUmVmOyBjb250ZXh0OiB7IHJvdzogcm93LCBjb2x1bW46IGNvbHVtbiB9XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInYm9vbGVhbidcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGdldEJvb2xlYW5MYWJlbChnZXRDZWxsRGF0YShyb3csIGNvbHVtbiksIGNvbHVtbikgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2N1cnJlbmN5J1wiPlxuICAgICAgICAgICAgICAgICAge3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIHwgY3VycmVuY3k6IGNvbHVtbi5mb3JtYXQ6J3N5bWJvbCc6JzEuMi0yJyB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB8IGRhdGU6IGNvbHVtbi5mb3JtYXQgfHwgJ2RkL01NL3l5eXknIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIid0aW1lJ1wiPlxuICAgICAgICAgICAgICAgICAge3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIHwgcG9fdGltZTogY29sdW1uLmZvcm1hdCB8fCAnSEg6bW06c3MuZmZmZmZmJyB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInZGF0ZVRpbWUnXCI+XG4gICAgICAgICAgICAgICAgICB7eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfCBkYXRlOiBjb2x1bW4uZm9ybWF0IHx8ICdkZC9NTS95eXl5IEhIOm1tOnNzJyB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInbnVtYmVyJ1wiPlxuICAgICAgICAgICAgICAgICAge3sgZm9ybWF0TnVtYmVyKGdldENlbGxEYXRhKHJvdywgY29sdW1uKSwgY29sdW1uLmZvcm1hdCkgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8cG8tdGFibGUtY29sdW1uLWxpbmtcbiAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInbGluaydcIlxuICAgICAgICAgICAgICAgICAgW3AtYWN0aW9uXT1cImNvbHVtbi5hY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgW3AtZGlzYWJsZWRdPVwiY2hlY2tEaXNhYmxlZChyb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICAgICAgW3AtbGlua109XCJyb3dbY29sdW1uLmxpbmtdXCJcbiAgICAgICAgICAgICAgICAgIFtwLXJvd109XCJyb3dcIlxuICAgICAgICAgICAgICAgICAgW3AtdmFsdWVdPVwiZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrTGluaygkZXZlbnQsIHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvcG8tdGFibGUtY29sdW1uLWxpbms+XG5cbiAgICAgICAgICAgICAgICA8cG8tdGFibGUtY29sdW1uLWljb25cbiAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInaWNvbidcIlxuICAgICAgICAgICAgICAgICAgW3AtY29sdW1uXT1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgICBbcC1pY29uc109XCJnZXRDb2x1bW5JY29ucyhyb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICAgICAgW3Atcm93XT1cInJvd1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvcG8tdGFibGUtY29sdW1uLWljb24+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3N1YnRpdGxlJ1wiPlxuICAgICAgICAgICAgICAgICAgPHBvLXRhYmxlLXN1YnRpdGxlLWNpcmNsZSBbcC1zdWJ0aXRsZV09XCJnZXRTdWJ0aXRsZUNvbHVtbihyb3csIGNvbHVtbilcIj48L3BvLXRhYmxlLXN1YnRpdGxlLWNpcmNsZT5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidsYWJlbCdcIj5cbiAgICAgICAgICAgICAgICAgIDxwby10YWJsZS1jb2x1bW4tbGFiZWwgW3AtdmFsdWVdPVwiZ2V0Q29sdW1uTGFiZWwocm93LCBjb2x1bW4pXCI+IDwvcG8tdGFibGUtY29sdW1uLWxhYmVsPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hEZWZhdWx0Pnt7IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgKm5nSWY9XCJoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tZGV0YWlsLXRvZ2dsZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVEZXRhaWwocm93KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBvVGFibGVDb2x1bW5EZXRhaWxcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgIDwhLS0gQ29sdW5hIGRlIGHDp29lcyBuYSBkaXJlaXRhIC0tPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICpuZ0lmPVwiYWN0aW9uUmlnaHRcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJBY3Rpb25zQ29sdW1uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L3RyPlxuXG4gICAgICAgICAgPHRyICpuZ0lmPVwiaGFzTWFpbkNvbHVtbnMgJiYgaGFzUm93VGVtcGxhdGUgJiYgcm93LiRzaG93RGV0YWlsICYmIGlzU2hvd1Jvd1RlbXBsYXRlKHJvdywgcm93SW5kZXgpXCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJwby10YWJsZS1yb3ctdGVtcGxhdGUtY29udGFpbmVyXCIgW2NvbFNwYW5dPVwiY29sdW1uQ291bnRGb3JNYXN0ZXJEZXRhaWxcIj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFibGVSb3dUZW1wbGF0ZS50ZW1wbGF0ZVJlZlwiXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L3RyPlxuXG4gICAgICAgICAgPHRyICpuZ0lmPVwiaGFzTWFpbkNvbHVtbnMgJiYgaXNTaG93TWFzdGVyRGV0YWlsKHJvdylcIj5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1kZXRhaWxcIiBbY29sU3Bhbl09XCJjb2x1bW5Db3VudEZvck1hc3RlckRldGFpbFwiPlxuICAgICAgICAgICAgICA8cG8tdGFibGUtZGV0YWlsXG4gICAgICAgICAgICAgICAgW3Atc2VsZWN0YWJsZV09XCJzZWxlY3RhYmxlICYmICFkZXRhaWxIaWRlU2VsZWN0XCJcbiAgICAgICAgICAgICAgICBbcC1kZXRhaWxdPVwiY29sdW1uTWFzdGVyRGV0YWlsLmRldGFpbFwiXG4gICAgICAgICAgICAgICAgW3AtaXRlbXNdPVwicm93W25hbWVDb2x1bW5EZXRhaWxdXCJcbiAgICAgICAgICAgICAgICAocC1zZWxlY3Qtcm93KT1cInNlbGVjdERldGFpbFJvdygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L3BvLXRhYmxlLWRldGFpbD5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90Ym9keT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdGFibGU+XG4gIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuPC9uZy10ZW1wbGF0ZT5cblxuPHBvLXBvcHVwICNwb3B1cCBbcC1hY3Rpb25zXT1cImFjdGlvbnNcIiBbcC10YXJnZXRdPVwicG9wdXBUYXJnZXRcIj4gPC9wby1wb3B1cD5cblxuPG5nLXRlbXBsYXRlICNwb1RhYmxlQ29sdW1uRGV0YWlsIGxldC1yb3c9XCJyb3dcIiBsZXQtcm93SW5kZXg9XCJyb3dJbmRleFwiPlxuICA8c3BhblxuICAgICpuZ0lmPVwiKGNvbnRhaW5zTWFzdGVyRGV0YWlsKHJvdykgJiYgIWhhc1Jvd1RlbXBsYXRlKSB8fCAoaXNTaG93Um93VGVtcGxhdGUocm93LCByb3dJbmRleCkgJiYgaGFzUm93VGVtcGxhdGUpXCJcbiAgICBjbGFzcz1cInBvLWljb24gcG8tY2xpY2thYmxlXCJcbiAgICBbY2xhc3MucG8taWNvbi1hcnJvdy11cF09XCJyb3cuJHNob3dEZXRhaWxcIlxuICAgIFtjbGFzcy5wby1pY29uLWFycm93LWRvd25dPVwiIXJvdy4kc2hvd0RldGFpbFwiXG4gID5cbiAgPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpbnB1dFJhZGlvIGxldC1yb3c+XG4gIDxwby1yYWRpbyBbbmFtZV09XCJpZFJhZGlvXCIgW3AtY2hlY2tlZF09XCJyb3cuJHNlbGVjdGVkXCIgKHAtY2hhbmdlLXNlbGVjdGVkKT1cInNlbGVjdFJvdyhyb3cpXCI+PC9wby1yYWRpbz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaW5wdXRDaGVja2JveCBsZXQtcm93PlxuICA8cG8tY2hlY2tib3hcbiAgICBuYW1lPVwiY2hlY2tib3hcIlxuICAgIChwLWNoYW5nZSk9XCJzZWxlY3RhYmxlID8gc2VsZWN0Um93KHJvdykgOiAnamF2YXNjcmlwdDo7J1wiXG4gICAgW3AtY2hlY2tib3hWYWx1ZV09XCJyb3cuJHNlbGVjdGVkXCJcbiAgPjwvcG8tY2hlY2tib3g+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NvbnRlbnRIZWFkZXJUZW1wbGF0ZSBsZXQtY29sdW1uPlxuICA8c3BhblxuICAgICNjb2x1bW5IZWFkZXJcbiAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1lbGxpcHNpc1wiXG4gICAgW3AtdG9vbHRpcF09XCJ0b29sdGlwVGV4dFwiXG4gICAgW3AtYXBwZW5kLWluLWJvZHldPVwidHJ1ZVwiXG4gICAgKG1vdXNlZW50ZXIpPVwidG9vbHRpcE1vdXNlRW50ZXIoJGV2ZW50KVwiXG4gICAgKG1vdXNlbGVhdmUpPVwidG9vbHRpcE1vdXNlTGVhdmUoKVwiXG4gID5cbiAgICB7eyBjb2x1bW4ubGFiZWwgfHwgKGNvbHVtbi5wcm9wZXJ0eSB8IHRpdGxlY2FzZSkgfX1cbiAgPC9zcGFuPlxuXG4gIDxzcGFuXG4gICAgKm5nSWY9XCJzb3J0ICYmIGNvbHVtbi5zb3J0YWJsZSAhPT0gZmFsc2VcIlxuICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItaWNvbi11bnNlbGVjdGVkXT1cIkpTT04uc3RyaW5naWZ5KHNvcnRlZENvbHVtbj8ucHJvcGVydHkpICE9PSBKU09OLnN0cmluZ2lmeShjb2x1bW4pXCJcbiAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWljb24tZGVzY2VuZGluZ109XCJcbiAgICAgIEpTT04uc3RyaW5naWZ5KHNvcnRlZENvbHVtbj8ucHJvcGVydHkpID09PSBKU09OLnN0cmluZ2lmeShjb2x1bW4pICYmIHNvcnRlZENvbHVtbi5hc2NlbmRpbmdcbiAgICBcIlxuICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItaWNvbi1hc2NlbmRpbmddPVwiXG4gICAgICBKU09OLnN0cmluZ2lmeShzb3J0ZWRDb2x1bW4/LnByb3BlcnR5KSA9PT0gSlNPTi5zdHJpbmdpZnkoY29sdW1uKSAmJiAhc29ydGVkQ29sdW1uLmFzY2VuZGluZ1xuICAgIFwiXG4gID5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiSlNPTi5zdHJpbmdpZnkoc29ydGVkQ29sdW1uPy5wcm9wZXJ0eSkgIT09IEpTT04uc3RyaW5naWZ5KGNvbHVtbilcIj5cbiAgICAgIDxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgIGQ9XCJNMTguMjkyOSAxNS4yOTI5TDE3IDE2LjU4NThMMTcgMTBDMTcgOS40NDc3MiAxNi41NTIzIDkgMTYgOUMxNS40NDc3IDkgMTUgOS40NDc3MiAxNSAxMEwxNSAxNi41ODU4TDEzLjcwNzEgMTUuMjkyOUMxMy4zMTY2IDE0LjkwMjQgMTIuNjgzNCAxNC45MDI0IDEyLjI5MjkgMTUuMjkyOUMxMS45MDI0IDE1LjY4MzQgMTEuOTAyNCAxNi4zMTY2IDEyLjI5MjkgMTYuNzA3MUwxNS4yOTI5IDE5LjcwNzFDMTUuNjgzNCAyMC4wOTc2IDE2LjMxNjYgMjAuMDk3NiAxNi43MDcxIDE5LjcwNzFMMTkuNzA3MSAxNi43MDcxQzIwLjA5NzYgMTYuMzE2NiAyMC4wOTc2IDE1LjY4MzQgMTkuNzA3MSAxNS4yOTI5QzE5LjMxNjYgMTQuOTAyNCAxOC42ODM0IDE0LjkwMjQgMTguMjkyOSAxNS4yOTI5Wk01LjcwNzE2IDguNzA3MUw3LjAwMDA2IDcuNDE0Mkw3LjAwMDAzIDE0QzcuMDAwMDIgMTQuNTUyMyA3LjQ0Nzc0IDE1IDguMDAwMDIgMTVDOC41NTIzMSAxNSA5LjAwMDAyIDE0LjU1MjMgOS4wMDAwMyAxNEw5LjAwMDA2IDcuNDE0MThMMTAuMjkyOSA4LjcwNzA3QzEwLjY4MzUgOS4wOTc1OSAxMS4zMTY2IDkuMDk3NTggMTEuNzA3MiA4LjcwNzA2QzEyLjA5NzcgOC4zMTY1MyAxMi4wOTc3IDcuNjgzMzYgMTEuNzA3MiA3LjI5Mjg0TDguNzA3MTggNC4yOTI4NkM4LjMxNjY1IDMuOTAyMzQgNy42ODM0OSAzLjkwMjM1IDcuMjkyOTYgNC4yOTI4N0w0LjI5Mjk1IDcuMjkyODlDMy45MDI0MiA3LjY4MzQyIDMuOTAyNDIgOC4zMTY1OCA0LjI5Mjk0IDguNzA3MTFDNC42ODM0NyA5LjA5NzYzIDUuMzE2NjMgOS4wOTc2MiA1LjcwNzE2IDguNzA3MVpcIlxuICAgICAgICAgIGZpbGw9XCIjMUQxRDMwXCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkpTT04uc3RyaW5naWZ5KHNvcnRlZENvbHVtbj8ucHJvcGVydHkpID09PSBKU09OLnN0cmluZ2lmeShjb2x1bW4pICYmIHNvcnRlZENvbHVtbi5hc2NlbmRpbmdcIj5cbiAgICAgIDxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgIGQ9XCJNMTEgOS40MTQyMUw5LjcwNzExIDEwLjcwNzFDOS4zMTY1OCAxMS4wOTc2IDguNjgzNDIgMTEuMDk3NiA4LjI5Mjg5IDEwLjcwNzFDNy45MDIzNyAxMC4zMTY2IDcuOTAyMzcgOS42ODM0MiA4LjI5Mjg5IDkuMjkyODlMMTEuMjkyOSA2LjI5Mjg5QzExLjY4MzQgNS45MDIzNyAxMi4zMTY2IDUuOTAyMzcgMTIuNzA3MSA2LjI5Mjg5TDE1LjcwNzEgOS4yOTI4OUMxNi4wOTc2IDkuNjgzNDIgMTYuMDk3NiAxMC4zMTY2IDE1LjcwNzEgMTAuNzA3MUMxNS4zMTY2IDExLjA5NzYgMTQuNjgzNCAxMS4wOTc2IDE0LjI5MjkgMTAuNzA3MUwxMyA5LjQxNDIxVjE2QzEzIDE2LjU1MjMgMTIuNTUyMyAxNyAxMiAxN0MxMS40NDc3IDE3IDExIDE2LjU1MjMgMTEgMTZWOS40MTQyMVpcIlxuICAgICAgICAgIGZpbGw9XCJibGFja1wiXG4gICAgICAgIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJKU09OLnN0cmluZ2lmeShzb3J0ZWRDb2x1bW4/LnByb3BlcnR5KSA9PT0gSlNPTi5zdHJpbmdpZnkoY29sdW1uKSAmJiAhc29ydGVkQ29sdW1uLmFzY2VuZGluZ1wiPlxuICAgICAgPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgZD1cIk05LjcwNzExIDEzLjI5MjlMMTEgMTQuNTg1OFY3QzExIDYuNDQ3NzIgMTEuNDQ3NyA2IDEyIDZDMTIuNTUyMyA2IDEzIDYuNDQ3NzIgMTMgN1YxNC41ODU4TDE0LjI5MjkgMTMuMjkyOUMxNC42ODM0IDEyLjkwMjQgMTUuMzE2NiAxMi45MDI0IDE1LjcwNzEgMTMuMjkyOUMxNi4wOTc2IDEzLjY4MzQgMTYuMDk3NiAxNC4zMTY2IDE1LjcwNzEgMTQuNzA3MUwxMi43MDcxIDE3LjcwNzFDMTIuMzE2NiAxOC4wOTc2IDExLjY4MzQgMTguMDk3NiAxMS4yOTI5IDE3LjcwNzFMOC4yOTI4OSAxNC43MDcxQzcuOTAyMzcgMTQuMzE2NiA3LjkwMjM3IDEzLjY4MzQgOC4yOTI4OSAxMy4yOTI5QzguNjgzNDIgMTIuOTAyNCA5LjMxNjU4IDEyLjkwMjQgOS43MDcxMSAxMy4yOTI5WlwiXG4gICAgICAgICAgZmlsbD1cImJsYWNrXCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI25vQ29sdW1uc1dpdGhIZWlnaHQ+XG4gIDxkaXYgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItZml4ZWQtaW5uZXJcIiBbc3R5bGUud2lkdGgucHhdPVwibm9Db2x1bW5zSGVhZGVyPy5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoXCI+XG4gICAge3sgaGFzVmFsaWRDb2x1bW5zID8gbGl0ZXJhbHMubm9WaXNpYmxlQ29sdW1uIDogbGl0ZXJhbHMubm9Db2x1bW5zIH19XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNub0NvbHVtbnNXaXRob3V0SGVpZ2h0PlxuICB7eyBoYXNWYWxpZENvbHVtbnMgPyBsaXRlcmFscy5ub1Zpc2libGVDb2x1bW4gOiBsaXRlcmFscy5ub0NvbHVtbnMgfX1cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gVGVtcGxhdGUgZGUgYcOnw7VlcyAtLT5cbjxuZy10ZW1wbGF0ZSAjQWN0aW9uc0NvbHVtblRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIiBsZXQtcm93SW5kZXg9XCJyb3dJbmRleFwiPlxuICA8dGRcbiAgICAqbmdJZj1cImlzU2luZ2xlQWN0aW9uXCJcbiAgICBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbiBwby10YWJsZS1jb2x1bW4tc2luZ2xlLWFjdGlvblwiXG4gICAgW3N0eWxlLndpZHRoLnB4XT1cImhlaWdodCAmJiBhY3Rpb25SaWdodCA/IGdldFdpZHRoQ29sdW1uTWFuYWdlcigpIDogJydcIlxuICAgIFtzdHlsZS5tYXgtd2lkdGgucHhdPVwiaGVpZ2h0ICYmICFhY3Rpb25SaWdodCA/IGdldENvbHVtbldpZHRoQWN0aW9uc0xlZnQoKSA6ICcnXCJcbiAgICBbc3R5bGUud2lkdGgucHhdPVwiaGVpZ2h0ICYmICFhY3Rpb25SaWdodCA/IGdldENvbHVtbldpZHRoQWN0aW9uc0xlZnQoKSA6ICcnXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwiZmlyc3RBY3Rpb24udmlzaWJsZSAhPT0gZmFsc2VcIlxuICAgICAgY2xhc3M9XCJwby10YWJsZS1zaW5nbGUtYWN0aW9uIHBvLWNsaWNrYWJsZVwiXG4gICAgICBbY2xhc3MucG8tdGFibGUtYWN0aW9uLWRpc2FibGVkXT1cImZpcnN0QWN0aW9uLmRpc2FibGVkID8gdmFsaWRhdGVUYWJsZUFjdGlvbihyb3csIGZpcnN0QWN0aW9uKSA6IGZhbHNlXCJcbiAgICAgIChjbGljayk9XCJleGVjdXRlVGFibGVBY3Rpb24ocm93LCBmaXJzdEFjdGlvbilcIlxuICAgID5cbiAgICAgIDxwby1pY29uICpuZ0lmPVwiZmlyc3RBY3Rpb24uaWNvblwiIGNsYXNzPVwicG8tdGFibGUtc2luZ2xlLWFjdGlvbi1jb250ZW50XCIgW3AtaWNvbl09XCJmaXJzdEFjdGlvbi5pY29uXCI+PC9wby1pY29uPlxuICAgICAge3sgZmlyc3RBY3Rpb24ubGFiZWwgfX1cbiAgICA8L2Rpdj5cbiAgPC90ZD5cblxuICA8dGQgKm5nSWY9XCJ2aXNpYmxlQWN0aW9ucy5sZW5ndGggPiAxXCIgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tYWN0aW9uc1wiPlxuICAgIDxzcGFuICNwb3B1cFRhcmdldCBjbGFzcz1cInBvLWljb24gcG8taWNvbi1tb3JlIHBvLWNsaWNrYWJsZVwiIChjbGljayk9XCJ0b2dnbGVQb3B1cChyb3csIHBvcHVwVGFyZ2V0KVwiPjwvc3Bhbj5cbiAgPC90ZD5cbjwvbmctdGVtcGxhdGU+XG5cbjxwby10YWJsZS1jb2x1bW4tbWFuYWdlclxuICAqbmdJZj1cIiFoaWRlQ29sdW1uc01hbmFnZXJcIlxuICBbcC1jb2x1bW5zXT1cImNvbHVtbnNcIlxuICBbcC1tYXgtY29sdW1uc109XCJtYXhDb2x1bW5zXCJcbiAgW3AtdGFyZ2V0XT1cImNvbHVtbk1hbmFnZXJUYXJnZXRcIlxuICBbcC1sYXN0LXZpc2libGUtY29sdW1ucy1zZWxlY3RlZF09XCJsYXN0VmlzaWJsZUNvbHVtbnNTZWxlY3RlZFwiXG4gIFtwLWhpZGUtYWN0aW9uLWZpeGVkLWNvbHVtbnNdPVwiaGlkZUFjdGlvbkZpeGVkQ29sdW1uc1wiXG4gIChwLXZpc2libGUtY29sdW1ucy1jaGFuZ2UpPVwib25WaXNpYmxlQ29sdW1uc0NoYW5nZSgkZXZlbnQpXCJcbiAgKHAtY2hhbmdlLXZpc2libGUtY29sdW1ucyk9XCJvbkNoYW5nZVZpc2libGVDb2x1bW5zKCRldmVudClcIlxuICBbcC1jb2x1bW5zLWRlZmF1bHRdPVwiaW5pdGlhbENvbHVtbnNcIlxuICAocC1pbml0aWFsLWNvbHVtbnMpPVwib25Db2x1bW5SZXN0b3JlTWFuYWdlcigkZXZlbnQpXCJcbj5cbjwvcG8tdGFibGUtY29sdW1uLW1hbmFnZXI+XG5cbjxwby1tb2RhbFxuICAjbW9kYWxEZWxldGVcbiAgW3AtdGl0bGVdPVwibGl0ZXJhbHMuZGVsZXRlXCJcbiAgW3AtcHJpbWFyeS1hY3Rpb25dPVwiY29uZmlybVwiXG4gIFtwLXNlY29uZGFyeS1hY3Rpb25dPVwiY2xvc2VcIlxuICBbcC1jbGljay1vdXRdPVwidHJ1ZVwiXG4+XG4gIDxwIGNsYXNzPVwicG8tZm9udC10ZXh0LWxhcmdlXCI+e3sgbGl0ZXJhbHMuYm9keURlbGV0ZSB9fTwvcD5cbjwvcG8tbW9kYWw+XG4iXX0=
|