@cqa-lib/cqa-ui 1.1.556 → 1.1.557-delta.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/execution-screen/api-step/api-step.component.mjs +7 -1
- package/esm2020/lib/templates/modular-table-template/folder-sidebar/folder-sidebar.component.mjs +3 -3
- package/esm2020/lib/templates/modular-table-template/modular-table-template.component.mjs +16 -7
- package/esm2020/lib/templates/modular-table-template/modular-table-template.models.mjs +2 -1
- package/esm2020/lib/templates/table-template.component.mjs +16 -7
- package/esm2020/lib/test-case-details/api-edit-step/api-edit-step.component.mjs +333 -25
- package/esm2020/lib/test-case-details/api-edit-step/graphql-operation-picker/graphql-operation-picker.component.mjs +121 -0
- package/esm2020/lib/ui-kit.module.mjs +6 -1
- package/esm2020/public-api.mjs +2 -1
- package/fesm2015/cqa-lib-cqa-ui.mjs +507 -69
- package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
- package/fesm2020/cqa-lib-cqa-ui.mjs +482 -31
- package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
- package/lib/templates/modular-table-template/modular-table-template.component.d.ts +1 -1
- package/lib/templates/modular-table-template/modular-table-template.models.d.ts +2 -0
- package/lib/templates/table-template.component.d.ts +1 -1
- package/lib/test-case-details/api-edit-step/api-edit-step.component.d.ts +118 -5
- package/lib/test-case-details/api-edit-step/graphql-operation-picker/graphql-operation-picker.component.d.ts +83 -0
- package/lib/ui-kit.module.d.ts +60 -59
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/styles.css +1 -1
|
@@ -80,6 +80,7 @@ export const DEFAULT_MODULAR_LABELS = {
|
|
|
80
80
|
folderColumnLabel: 'Folder',
|
|
81
81
|
unorganizedRowLabel: 'Unorganized',
|
|
82
82
|
noFoldersFound: 'No Folders Found',
|
|
83
|
+
noFoldersEmptyDescription: 'Click the + icon above to create your first folder.',
|
|
83
84
|
folderTooltipTotalSingular: '1 total test case including subfolders',
|
|
84
85
|
folderTooltipTotalPlural: '{n} total test cases including subfolders',
|
|
85
86
|
};
|
|
@@ -94,4 +95,4 @@ export const DEFAULT_REORDER_LABELS = {
|
|
|
94
95
|
export const ROW_DRAG_MIME = 'application/x-cqa-test-ids';
|
|
95
96
|
/** Custom MIME for folder-row drags in the sidebar. Payload is a JSON-stringified folder id. */
|
|
96
97
|
export const FOLDER_DRAG_MIME = 'application/x-cqa-folder-id';
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxhci10YWJsZS10ZW1wbGF0ZS5tb2RlbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3RlbXBsYXRlcy9tb2R1bGFyLXRhYmxlLXRlbXBsYXRlL21vZHVsYXItdGFibGUtdGVtcGxhdGUubW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdEQSxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBa0I7SUFDbkQsV0FBVyxFQUFFLElBQUk7SUFDakIsY0FBYyxFQUFFLElBQUk7SUFDcEIsY0FBYyxFQUFFLElBQUk7SUFDcEIsc0JBQXNCLEVBQUUsSUFBSTtJQUM1QixvQkFBb0IsRUFBRSxJQUFJO0lBQzFCLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLGlCQUFpQixFQUFFLElBQUk7SUFDdkIsaUJBQWlCLEVBQUUsSUFBSTtJQUN2QixpQkFBaUIsRUFBRSxJQUFJO0lBQ3ZCLG9CQUFvQixFQUFFLEtBQUs7SUFDM0Isa0JBQWtCLEVBQUUsSUFBSTtJQUN4QixpQkFBaUIsRUFBRSxJQUFJO0lBQ3ZCLGtCQUFrQixFQUFFLElBQUk7SUFDeEIsZ0JBQWdCLEVBQUUsSUFBSTtDQUN2QixDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsUUFBUSxDQUFDO0FBbUYvQyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBa0I7SUFDbkQsT0FBTyxFQUFFLFNBQVM7SUFDbEIsU0FBUyxFQUFFLFdBQVc7SUFDdEIsV0FBVyxFQUFFLGFBQWE7SUFDMUIsU0FBUyxFQUFFLFlBQVk7SUFDdkIsd0JBQXdCLEVBQUUsbUJBQW1CO0lBQzdDLFVBQVUsRUFBRSxhQUFhO0lBQ3pCLFlBQVksRUFBRSxlQUFlO0lBQzdCLFlBQVksRUFBRSxnQkFBZ0I7SUFDOUIsTUFBTSxFQUFFLFNBQVM7SUFDakIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsU0FBUyxFQUFFLFlBQVk7SUFDdkIsa0JBQWtCLEVBQUUsUUFBUTtJQUM1QixnQkFBZ0IsRUFBRSxXQUFXO0lBQzdCLG9CQUFvQixFQUFFLFVBQVU7SUFDaEMsa0JBQWtCLEVBQUUsYUFBYTtJQUNqQyxzQkFBc0IsRUFBRSxhQUFhO0lBQ3JDLG9CQUFvQixFQUFFLGdCQUFnQjtJQUN0QyxZQUFZLEVBQUUsYUFBYTtJQUMzQixlQUFlLEVBQUUsZ0JBQWdCO0lBQ2pDLFdBQVcsRUFBRSxjQUFjO0lBQzNCLGVBQWUsRUFBRSxnQkFBZ0I7SUFDakMsZ0JBQWdCLEVBQUUsUUFBUTtJQUMxQixpQkFBaUIsRUFBRSxXQUFXO0lBQzlCLGNBQWMsRUFBRSxhQUFhO0lBQzdCLDZCQUE2QixFQUFFLHlDQUF5QztJQUN4RSwyQkFBMkIsRUFBRSw0Q0FBNEM7SUFFekUsb0JBQW9CLEVBQUUsWUFBWTtJQUNsQywwQkFBMEIsRUFBRSxnREFBZ0Q7SUFDNUUsd0JBQXdCLEVBQUUsYUFBYTtJQUN2Qyw4QkFBOEIsRUFBRSw4Q0FBOEM7SUFDOUUsMEJBQTBCLEVBQUUsMEJBQTBCO0lBQ3RELHlCQUF5QixFQUFFLE1BQU07SUFDakMseUJBQXlCLEVBQUUseUJBQXlCO0lBQ3BELHFCQUFxQixFQUFFLFFBQVE7SUFDL0Isc0JBQXNCLEVBQUUsZUFBZTtJQUN2QyxnQ0FBZ0MsRUFBRSx5QkFBeUI7SUFDM0QsaUNBQWlDLEVBQUUseUNBQXlDO0lBRTVFLHlCQUF5QixFQUFFLGtCQUFrQjtJQUM3QyxnQkFBZ0IsRUFBRSxRQUFRO0lBQzFCLGNBQWMsRUFBRSxhQUFhO0lBQzdCLG1CQUFtQixFQUFFLGtCQUFrQjtJQUN2QyxnQkFBZ0IsRUFBRSxlQUFlO0lBRWpDLHVCQUF1QixFQUFFLGVBQWU7SUFDeEMsOEJBQThCLEVBQUUsMkRBQTJEO0lBQzNGLHNDQUFzQyxFQUFFLGFBQWE7SUFDckQsb0NBQW9DLEVBQUUsZ0JBQWdCO0lBQ3RELHVDQUF1QyxFQUFFLGNBQWM7SUFDdkQscUNBQXFDLEVBQUUsaUJBQWlCO0lBQ3hELDBCQUEwQixFQUFFLEtBQUs7SUFDakMsbUNBQW1DLEVBQUUsdUJBQXVCO0lBQzVELHlDQUF5QyxFQUFFLDBDQUEwQztJQUNyRix3Q0FBd0MsRUFBRSxxQkFBcUI7SUFDL0QsOENBQThDLEVBQUUsc0NBQXNDO0lBQ3RGLHdCQUF3QixFQUFFLFFBQVE7SUFDbEMseUJBQXlCLEVBQUUsZUFBZTtJQUUxQyx5QkFBeUIsRUFBRSxvQkFBb0I7SUFDL0MsK0JBQStCLEVBQUUsa0RBQWtEO0lBRW5GLGlCQUFpQixFQUFFLFFBQVE7SUFDM0IsbUJBQW1CLEVBQUUsYUFBYTtJQUNsQyxjQUFjLEVBQUUsa0JBQWtCO0lBQ2xDLDBCQUEwQixFQUFFLHdDQUF3QztJQUNwRSx3QkFBd0IsRUFBRSwyQ0FBMkM7Q0FDdEUsQ0FBQztBQTRFRixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBa0I7SUFDbkQsYUFBYSxFQUFFLFNBQVM7SUFDeEIsWUFBWSxFQUFFLFFBQVE7SUFDdEIsVUFBVSxFQUFFLE1BQU07SUFDbEIsWUFBWSxFQUFFLFdBQVc7SUFDekIsV0FBVyxFQUFFLGNBQWM7SUFDM0IsaUJBQWlCLEVBQUUsMENBQTBDO0NBQzlELENBQUM7QUFNRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsNEJBQTRCLENBQUM7QUFFMUQsZ0dBQWdHO0FBQ2hHLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBGb2xkZXJOb2RlIHtcbiAgaWQ6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuICAvKiogRGlyZWN0IHRlc3QtY2FzZSBjb3VudCDigJQgY2FzZXMgd2l0aCBgZm9sZGVySWQgPT09IHRoaXMuaWRgLiBSZW5kZXJlZCBhcyB0aGUgcm93IGJhZGdlLiAqL1xuICBjb3VudD86IG51bWJlcjtcbiAgLyoqIFRvdGFsIHRlc3QtY2FzZSBjb3VudCBpbmNsdWRpbmcgYWxsIGRlc2NlbmRhbnRzLiBSZW5kZXJlZCBhcyBhIHRvb2x0aXAgb24gdGhlIGZvbGRlciByb3cuICovXG4gIHRvdGFsQ291bnQ/OiBudW1iZXI7XG4gIGNvbG9yPzogc3RyaW5nO1xuICBjaGlsZHJlbj86IEZvbGRlck5vZGVbXTtcbiAgLyoqIEJhY2tlbmQgaGludDogdHJ1ZSB3aGVuIHRoaXMgbm9kZSBoYXMgYXQgbGVhc3Qgb25lIGRpcmVjdCBjaGlsZC4gRHJpdmVzXG4gICAqICB0aGUgc2lkZWJhciBjaGV2cm9uIHVuZGVyIGxhenkgbG9hZGluZywgc28gdGhlIGFmZm9yZGFuY2Ugc2hvd3MgZXZlblxuICAgKiAgYmVmb3JlIGBjaGlsZHJlbmAgaGFzIGJlZW4gZmV0Y2hlZC4gKi9cbiAgaGFzQ2hpbGRyZW4/OiBib29sZWFuO1xuICAvKiogQmFja2VuZC1yZXBvcnRlZCB0b3RhbCBudW1iZXIgb2YgZGlyZWN0IGNoaWxkcmVuLiBUaGUgc2lkZWJhciBzaG93cyBhXG4gICAqICBcIkxvYWQgbW9yZVwiIHJvdyB3aGVuIGAoY2hpbGRyZW4/Lmxlbmd0aCA/PyAwKSA8IHRvdGFsQ2hpbGRyZW5gLiAqL1xuICB0b3RhbENoaWxkcmVuPzogbnVtYmVyO1xuICAvKiogTGFzdCAwLWJhc2VkIHBhZ2UgYWxyZWFkeSBmZXRjaGVkIGludG8gYGNoaWxkcmVuYC4gYHVuZGVmaW5lZGAgbWVhbnMgdGhlXG4gICAqICBzdWJ0cmVlIGhhcyBub3QgYmVlbiBsb2FkZWQgeWV0IOKAlCB0aGUgaG9zdCBzaG91bGQgZmV0Y2ggb24gZmlyc3QgZXhwYW5kLiAqL1xuICBsb2FkZWRQYWdlcz86IG51bWJlcjtcbiAgLyoqIFRydWUgd2hpbGUgYSBjaGlsZHJlbi1wYWdlIGZldGNoIGlzIGluIGZsaWdodCwgc28gdGhlIHNpZGViYXIgY2FuIHJlbmRlclxuICAgKiAgYSBzcGlubmVyIHJvdyBhbmQgdGhlIGhvc3QgY2FuIHN1cHByZXNzIGR1cGxpY2F0ZSByZXF1ZXN0cy4gKi9cbiAgY2hpbGRyZW5Mb2FkaW5nPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgRm9sZGVySWRBY2Nlc3NvciA9IChyb3c6IGFueSkgPT4gbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuZXhwb3J0IGludGVyZmFjZSBNb2R1bGFyQ29uZmlnIHtcbiAgc2hvd1NpZGViYXI6IGJvb2xlYW47XG4gIHNob3dCcmVhZGNydW1iOiBib29sZWFuO1xuICBzaG93Rm9sZGVyR3JpZDogYm9vbGVhbjtcbiAgc2hvd1Vub3JnYW5pemVkU2VjdGlvbjogYm9vbGVhbjtcbiAgc2hvd1N1YmZvbGRlclNlY3Rpb246IGJvb2xlYW47XG4gIHNob3dDb3VudHM6IGJvb2xlYW47XG4gIGFsbG93Q3JlYXRlRm9sZGVyOiBib29sZWFuO1xuICBhbGxvd1JlbmFtZUZvbGRlcjogYm9vbGVhbjtcbiAgYWxsb3dEZWxldGVGb2xkZXI6IGJvb2xlYW47XG4gIGFsbG93RHVwbGljYXRlRm9sZGVyOiBib29sZWFuO1xuICBhbGxvd05lc3RlZEZvbGRlcnM6IGJvb2xlYW47XG4gIGFsbG93VGVzdERyYWdEcm9wOiBib29sZWFuO1xuICBhbGxvd0J1bGtTZWxlY3Rpb246IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIHRoZSB0YWJsZSByZW5kZXJzIGEgZm9sZGVyIGNvbHVtbiAoaWNvbiArIGZvbGRlciBuYW1lKSBhbmQgbGlzdHMgaXQgaW4gdGhlXG4gICAqIHNldHRpbmdzIGRyb3Bkb3duLiBEZWZhdWx0IHZpc2liaWxpdHkgb24gZmlyc3QgaW5pdCBmb2xsb3dzIGB2aWV3TW9kZWA6IHNob3duIGluIGxpc3QsXG4gICAqIGhpZGRlbiBpbiBtb2R1bGFyLiBPbmNlIHRoZSB1c2VyIHRvZ2dsZXMgaXQgdGhlIGNob2ljZSBwZXJzaXN0cy5cbiAgICovXG4gIHNob3dGb2xkZXJDb2x1bW46IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX01PRFVMQVJfQ09ORklHOiBNb2R1bGFyQ29uZmlnID0ge1xuICBzaG93U2lkZWJhcjogdHJ1ZSxcbiAgc2hvd0JyZWFkY3J1bWI6IHRydWUsXG4gIHNob3dGb2xkZXJHcmlkOiB0cnVlLFxuICBzaG93VW5vcmdhbml6ZWRTZWN0aW9uOiB0cnVlLFxuICBzaG93U3ViZm9sZGVyU2VjdGlvbjogdHJ1ZSxcbiAgc2hvd0NvdW50czogdHJ1ZSxcbiAgYWxsb3dDcmVhdGVGb2xkZXI6IHRydWUsXG4gIGFsbG93UmVuYW1lRm9sZGVyOiB0cnVlLFxuICBhbGxvd0RlbGV0ZUZvbGRlcjogdHJ1ZSxcbiAgYWxsb3dEdXBsaWNhdGVGb2xkZXI6IGZhbHNlLFxuICBhbGxvd05lc3RlZEZvbGRlcnM6IHRydWUsXG4gIGFsbG93VGVzdERyYWdEcm9wOiB0cnVlLFxuICBhbGxvd0J1bGtTZWxlY3Rpb246IHRydWUsXG4gIHNob3dGb2xkZXJDb2x1bW46IHRydWUsXG59O1xuXG4vKipcbiAqIFJlc2VydmVkIGZpZWxkSWQgZm9yIHRoZSBhdXRvLWluamVjdGVkIGZvbGRlciBjb2x1bW4uIEhvc3RzIHNob3VsZCBhdm9pZFxuICogZGVmaW5pbmcgYSBjb2x1bW4gd2l0aCB0aGlzIGlkIG9mIHRoZWlyIG93bi5cbiAqL1xuZXhwb3J0IGNvbnN0IEZPTERFUl9DT0xVTU5fRklFTERfSUQgPSAnZm9sZGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBNb2R1bGFyTGFiZWxzIHtcbiAgZm9sZGVyczogc3RyaW5nO1xuICBvcmdhbml6ZWQ6IHN0cmluZztcbiAgdW5vcmdhbml6ZWQ6IHN0cmluZztcbiAgbmV3Rm9sZGVyOiBzdHJpbmc7XG4gIHNlYXJjaEZvbGRlcnNQbGFjZWhvbGRlcjogc3RyaW5nO1xuICBhbGxGb2xkZXJzOiBzdHJpbmc7XG4gIHN1YmZvbGRlcnNJbjogc3RyaW5nO1xuICBtb3ZlVG9Gb2xkZXI6IHN0cmluZztcbiAgYWRkVGFnOiBzdHJpbmc7XG4gIGRlbGV0ZTogc3RyaW5nO1xuICBzZWxlY3RBbGw6IHN0cmluZztcbiAgdGVzdHNDb3VudFNpbmd1bGFyOiBzdHJpbmc7XG4gIHRlc3RzQ291bnRQbHVyYWw6IHN0cmluZztcbiAgZm9sZGVyc0NvdW50U2luZ3VsYXI6IHN0cmluZztcbiAgZm9sZGVyc0NvdW50UGx1cmFsOiBzdHJpbmc7XG4gIHN1YmZvbGRlckNvdW50U2luZ3VsYXI6IHN0cmluZztcbiAgc3ViZm9sZGVyQ291bnRQbHVyYWw6IHN0cmluZztcbiAgb25lU3ViZm9sZGVyOiBzdHJpbmc7XG4gIHN1YmZvbGRlcnNDb3VudDogc3RyaW5nO1xuICBjbGVhckZpbHRlcjogc3RyaW5nO1xuICBtb3ZlRGlhbG9nVGl0bGU6IHN0cmluZztcbiAgbW92ZURpYWxvZ0NhbmNlbDogc3RyaW5nO1xuICBtb3ZlRGlhbG9nQ29uZmlybTogc3RyaW5nO1xuICBtb3ZlRGlhbG9nUm9vdDogc3RyaW5nO1xuICBtb3ZlRGlhbG9nRGVzY3JpcHRpb25TaW5ndWxhcjogc3RyaW5nO1xuICBtb3ZlRGlhbG9nRGVzY3JpcHRpb25QbHVyYWw6IHN0cmluZztcblxuICAvLyBOZXcgRm9sZGVyIGRpYWxvZ1xuICBuZXdGb2xkZXJEaWFsb2dUaXRsZTogc3RyaW5nO1xuICBuZXdGb2xkZXJEaWFsb2dEZXNjcmlwdGlvbjogc3RyaW5nO1xuICBuZXdGb2xkZXJEaWFsb2dOYW1lTGFiZWw6IHN0cmluZztcbiAgbmV3Rm9sZGVyRGlhbG9nTmFtZVBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIG5ld0ZvbGRlckRpYWxvZ1BhcmVudExhYmVsOiBzdHJpbmc7XG4gIG5ld0ZvbGRlckRpYWxvZ1BhcmVudE5vbmU6IHN0cmluZztcbiAgbmV3Rm9sZGVyRGlhbG9nQ29sb3JMYWJlbDogc3RyaW5nO1xuICBuZXdGb2xkZXJEaWFsb2dDYW5jZWw6IHN0cmluZztcbiAgbmV3Rm9sZGVyRGlhbG9nQ29uZmlybTogc3RyaW5nO1xuICBuZXdGb2xkZXJEaWFsb2dOYW1lUmVxdWlyZWRFcnJvcjogc3RyaW5nO1xuICBuZXdGb2xkZXJEaWFsb2dOYW1lTWF4TGVuZ3RoRXJyb3I6IHN0cmluZztcblxuICAvLyBGb2xkZXIgcm93IGNvbnRleHQgbWVudSAocmlnaHQtY2xpY2sgLyBlbGxpcHNpcylcbiAgZm9sZGVyTWVudUNyZWF0ZVN1YmZvbGRlcjogc3RyaW5nO1xuICBmb2xkZXJNZW51UmVuYW1lOiBzdHJpbmc7XG4gIGZvbGRlck1lbnVNb3ZlOiBzdHJpbmc7XG4gIGZvbGRlck1lbnVEdXBsaWNhdGU6IHN0cmluZztcbiAgZm9sZGVyTWVudURlbGV0ZTogc3RyaW5nO1xuXG4gIC8vIERlbGV0ZSBGb2xkZXIgZGlhbG9nXG4gIGRlbGV0ZUZvbGRlckRpYWxvZ1RpdGxlOiBzdHJpbmc7XG4gIGRlbGV0ZUZvbGRlckRpYWxvZ0JvZHlUZW1wbGF0ZTogc3RyaW5nO1xuICBkZWxldGVGb2xkZXJEaWFsb2dCb2R5VGVzdENhc2VTaW5ndWxhcjogc3RyaW5nO1xuICBkZWxldGVGb2xkZXJEaWFsb2dCb2R5VGVzdENhc2VQbHVyYWw6IHN0cmluZztcbiAgZGVsZXRlRm9sZGVyRGlhbG9nQm9keVN0ZXBHcm91cFNpbmd1bGFyOiBzdHJpbmc7XG4gIGRlbGV0ZUZvbGRlckRpYWxvZ0JvZHlTdGVwR3JvdXBQbHVyYWw6IHN0cmluZztcbiAgZGVsZXRlRm9sZGVyRGlhbG9nQm9keUpvaW46IHN0cmluZztcbiAgZGVsZXRlRm9sZGVyRGlhbG9nTW92ZVRvUGFyZW50VGl0bGU6IHN0cmluZztcbiAgZGVsZXRlRm9sZGVyRGlhbG9nTW92ZVRvUGFyZW50RGVzY3JpcHRpb246IHN0cmluZztcbiAgZGVsZXRlRm9sZGVyRGlhbG9nTW92ZVRvVW5vcmdhbml6ZWRUaXRsZTogc3RyaW5nO1xuICBkZWxldGVGb2xkZXJEaWFsb2dNb3ZlVG9Vbm9yZ2FuaXplZERlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGRlbGV0ZUZvbGRlckRpYWxvZ0NhbmNlbDogc3RyaW5nO1xuICBkZWxldGVGb2xkZXJEaWFsb2dDb25maXJtOiBzdHJpbmc7XG5cbiAgLy8gQXV0by1kZXJpdmVkIGVtcHR5IHN0YXRlcyAoc2hvd24gd2hlbiBwYWdlZFJvd3MgaXMgZW1wdHkgYW5kIGhvc3QgZGlkIG5vdCBzZXQgaXNFbXB0eVN0YXRlKVxuICBlbXB0eU5vVGVzdHNJbkZvbGRlclRpdGxlOiBzdHJpbmc7XG4gIGVtcHR5Tm9UZXN0c0luRm9sZGVyRGVzY3JpcHRpb246IHN0cmluZztcblxuICAvKiogSGVhZGVyIGxhYmVsIGZvciB0aGUgYXV0by1pbmplY3RlZCBmb2xkZXIgY29sdW1uLiAqL1xuICBmb2xkZXJDb2x1bW5MYWJlbDogc3RyaW5nO1xuICAvKiogQ2VsbCBsYWJlbCBmb3Igcm93cyB3aXRoIG5vIGZvbGRlcklkIChpLmUuIHRoZSBcIlVub3JnYW5pemVkXCIgYnVja2V0KS4gKi9cbiAgdW5vcmdhbml6ZWRSb3dMYWJlbDogc3RyaW5nO1xuICAvKiogU2hvd24gaW4gdGhlIGZvbGRlciBzaWRlYmFyIHdoZW4gdGhlIHNlYXJjaCBpbnB1dCBmaWx0ZXJzIG91dCBldmVyeSBmb2xkZXIuICovXG4gIG5vRm9sZGVyc0ZvdW5kOiBzdHJpbmc7XG4gIC8qKiBTaWRlYmFyIGZvbGRlci1yb3cgaG92ZXIgdG9vbHRpcCBjb3VudCBsaW5lLiBge259YCBpcyB0aGUgZGVzY2VuZGFudCB0b3RhbFxuICAgKiAgKEZvbGRlck5vZGUudG90YWxDb3VudCkuIFRoZSBob3N0IHN3YXBzIHRoZSBub3VuIGZvciBcInN0ZXAgZ3JvdXBcIiB3aGVuIGluXG4gICAqICBzdGVwLWdyb3VwIG1vZGUgYnkgb3ZlcnJpZGluZyB0aGVzZSB0d28ga2V5cy4gVGhlIGZ1bGwgdG9vbHRpcCBpcyBjb21wb3NlZFxuICAgKiAgYXMgYCR7bm9kZS5uYW1lfVxcbiR7dHBsLnJlcGxhY2UoJ3tufScsIHRvdGFsKX1gLiAqL1xuICBmb2xkZXJUb29sdGlwVG90YWxTaW5ndWxhcjogc3RyaW5nO1xuICBmb2xkZXJUb29sdGlwVG90YWxQbHVyYWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTU9EVUxBUl9MQUJFTFM6IE1vZHVsYXJMYWJlbHMgPSB7XG4gIGZvbGRlcnM6ICdGb2xkZXJzJyxcbiAgb3JnYW5pemVkOiAnT3JnYW5pemVkJyxcbiAgdW5vcmdhbml6ZWQ6ICdVbm9yZ2FuaXplZCcsXG4gIG5ld0ZvbGRlcjogJ05ldyBmb2xkZXInLFxuICBzZWFyY2hGb2xkZXJzUGxhY2Vob2xkZXI6ICdTZWFyY2ggZm9sZGVycy4uLicsXG4gIGFsbEZvbGRlcnM6ICdBbGwgZm9sZGVycycsXG4gIHN1YmZvbGRlcnNJbjogJ1N1YmZvbGRlcnMgaW4nLFxuICBtb3ZlVG9Gb2xkZXI6ICdNb3ZlIHRvIGZvbGRlcicsXG4gIGFkZFRhZzogJ0FkZCBUYWcnLFxuICBkZWxldGU6ICdEZWxldGUnLFxuICBzZWxlY3RBbGw6ICdTZWxlY3QgYWxsJyxcbiAgdGVzdHNDb3VudFNpbmd1bGFyOiAnMSB0ZXN0JyxcbiAgdGVzdHNDb3VudFBsdXJhbDogJ3tufSB0ZXN0cycsXG4gIGZvbGRlcnNDb3VudFNpbmd1bGFyOiAnMSBmb2xkZXInLFxuICBmb2xkZXJzQ291bnRQbHVyYWw6ICd7bn0gZm9sZGVycycsXG4gIHN1YmZvbGRlckNvdW50U2luZ3VsYXI6ICcxIHN1YmZvbGRlcicsXG4gIHN1YmZvbGRlckNvdW50UGx1cmFsOiAne259IHN1YmZvbGRlcnMnLFxuICBvbmVTdWJmb2xkZXI6ICcxIHN1YmZvbGRlcicsXG4gIHN1YmZvbGRlcnNDb3VudDogJ3tufSBzdWJmb2xkZXJzJyxcbiAgY2xlYXJGaWx0ZXI6ICdDbGVhciBmaWx0ZXInLFxuICBtb3ZlRGlhbG9nVGl0bGU6ICdNb3ZlIHRvIEZvbGRlcicsXG4gIG1vdmVEaWFsb2dDYW5jZWw6ICdDYW5jZWwnLFxuICBtb3ZlRGlhbG9nQ29uZmlybTogJ01vdmUgaGVyZScsXG4gIG1vdmVEaWFsb2dSb290OiAnVW5vcmdhbml6ZWQnLFxuICBtb3ZlRGlhbG9nRGVzY3JpcHRpb25TaW5ndWxhcjogJ01vdmluZyAxIHRlc3QgY2FzZSDigJQgc2VsZWN0IGRlc3RpbmF0aW9uJyxcbiAgbW92ZURpYWxvZ0Rlc2NyaXB0aW9uUGx1cmFsOiAnTW92aW5nIHtufSB0ZXN0IGNhc2VzIOKAlCBzZWxlY3QgZGVzdGluYXRpb24nLFxuXG4gIG5ld0ZvbGRlckRpYWxvZ1RpdGxlOiAnTmV3IEZvbGRlcicsXG4gIG5ld0ZvbGRlckRpYWxvZ0Rlc2NyaXB0aW9uOiAnUmVuYW1lIGFueSB0aW1lIGJ5IGRvdWJsZS1jbGlja2luZyBpbiB0aGUgdHJlZScsXG4gIG5ld0ZvbGRlckRpYWxvZ05hbWVMYWJlbDogJ0ZvbGRlciBuYW1lJyxcbiAgbmV3Rm9sZGVyRGlhbG9nTmFtZVBsYWNlaG9sZGVyOiAnZS5nLiBDaGVja291dCBGbG93LCBVc2VyIEF1dGgsIFBheW1lbnQgVGVzdHMnLFxuICBuZXdGb2xkZXJEaWFsb2dQYXJlbnRMYWJlbDogJ1BhcmVudCBmb2xkZXIgKG9wdGlvbmFsKScsXG4gIG5ld0ZvbGRlckRpYWxvZ1BhcmVudE5vbmU6ICdOb25lJyxcbiAgbmV3Rm9sZGVyRGlhbG9nQ29sb3JMYWJlbDogJ0ZvbGRlciBjb2xvciAob3B0aW9uYWwpJyxcbiAgbmV3Rm9sZGVyRGlhbG9nQ2FuY2VsOiAnQ2FuY2VsJyxcbiAgbmV3Rm9sZGVyRGlhbG9nQ29uZmlybTogJ0NyZWF0ZSBmb2xkZXInLFxuICBuZXdGb2xkZXJEaWFsb2dOYW1lUmVxdWlyZWRFcnJvcjogJ0ZvbGRlciBuYW1lIGlzIHJlcXVpcmVkJyxcbiAgbmV3Rm9sZGVyRGlhbG9nTmFtZU1heExlbmd0aEVycm9yOiAnRm9sZGVyIG5hbWUgY2Fubm90IGV4Y2VlZCAyMCBjaGFyYWN0ZXJzJyxcblxuICBmb2xkZXJNZW51Q3JlYXRlU3ViZm9sZGVyOiAnQ3JlYXRlIHN1YmZvbGRlcicsXG4gIGZvbGRlck1lbnVSZW5hbWU6ICdSZW5hbWUnLFxuICBmb2xkZXJNZW51TW92ZTogJ01vdmUgZm9sZGVyJyxcbiAgZm9sZGVyTWVudUR1cGxpY2F0ZTogJ0R1cGxpY2F0ZSBmb2xkZXInLFxuICBmb2xkZXJNZW51RGVsZXRlOiAnRGVsZXRlIGZvbGRlcicsXG5cbiAgZGVsZXRlRm9sZGVyRGlhbG9nVGl0bGU6ICdEZWxldGUgZm9sZGVyJyxcbiAgZGVsZXRlRm9sZGVyRGlhbG9nQm9keVRlbXBsYXRlOiAnVGhpcyBmb2xkZXIgY29udGFpbnMge2l0ZW1zfS4gV2hhdCBzaG91bGQgaGFwcGVuIHRvIHRoZW0/JyxcbiAgZGVsZXRlRm9sZGVyRGlhbG9nQm9keVRlc3RDYXNlU2luZ3VsYXI6ICcxIHRlc3QgY2FzZScsXG4gIGRlbGV0ZUZvbGRlckRpYWxvZ0JvZHlUZXN0Q2FzZVBsdXJhbDogJ3tufSB0ZXN0IGNhc2VzJyxcbiAgZGVsZXRlRm9sZGVyRGlhbG9nQm9keVN0ZXBHcm91cFNpbmd1bGFyOiAnMSBzdGVwIGdyb3VwJyxcbiAgZGVsZXRlRm9sZGVyRGlhbG9nQm9keVN0ZXBHcm91cFBsdXJhbDogJ3tufSBzdGVwIGdyb3VwcycsXG4gIGRlbGV0ZUZvbGRlckRpYWxvZ0JvZHlKb2luOiAnYW5kJyxcbiAgZGVsZXRlRm9sZGVyRGlhbG9nTW92ZVRvUGFyZW50VGl0bGU6ICdNb3ZlIHRvIHBhcmVudCBmb2xkZXInLFxuICBkZWxldGVGb2xkZXJEaWFsb2dNb3ZlVG9QYXJlbnREZXNjcmlwdGlvbjogJ01vdmUgdGhlbSBvbmUgbGV2ZWwgdXAg4oCUIG5vdGhpbmcgaXMgbG9zdCcsXG4gIGRlbGV0ZUZvbGRlckRpYWxvZ01vdmVUb1Vub3JnYW5pemVkVGl0bGU6ICdNb3ZlIHRvIFVub3JnYW5pemVkJyxcbiAgZGVsZXRlRm9sZGVyRGlhbG9nTW92ZVRvVW5vcmdhbml6ZWREZXNjcmlwdGlvbjogJ01vdmUgdGhlbSB0byB0aGUgVW5vcmdhbml6ZWQgc2VjdGlvbicsXG4gIGRlbGV0ZUZvbGRlckRpYWxvZ0NhbmNlbDogJ0NhbmNlbCcsXG4gIGRlbGV0ZUZvbGRlckRpYWxvZ0NvbmZpcm06ICdEZWxldGUgZm9sZGVyJyxcblxuICBlbXB0eU5vVGVzdHNJbkZvbGRlclRpdGxlOiAnTm8gVGVzdCBDYXNlIEZvdW5kJyxcbiAgZW1wdHlOb1Rlc3RzSW5Gb2xkZXJEZXNjcmlwdGlvbjogJ1RoaXMgZm9sZGVyIGRvZXMgbm90IGNvbnRhaW4gYW55IHRlc3QgY2FzZXMgeWV0LicsXG5cbiAgZm9sZGVyQ29sdW1uTGFiZWw6ICdGb2xkZXInLFxuICB1bm9yZ2FuaXplZFJvd0xhYmVsOiAnVW5vcmdhbml6ZWQnLFxuICBub0ZvbGRlcnNGb3VuZDogJ05vIEZvbGRlcnMgRm91bmQnLFxuICBmb2xkZXJUb29sdGlwVG90YWxTaW5ndWxhcjogJzEgdG90YWwgdGVzdCBjYXNlIGluY2x1ZGluZyBzdWJmb2xkZXJzJyxcbiAgZm9sZGVyVG9vbHRpcFRvdGFsUGx1cmFsOiAne259IHRvdGFsIHRlc3QgY2FzZXMgaW5jbHVkaW5nIHN1YmZvbGRlcnMnLFxufTtcblxuLyoqXG4gKiBFbWl0dGVkIGFmdGVyIGEgc3VjY2Vzc2Z1bCBpbmxpbmUgZm9sZGVyIHJlbmFtZS4gQ2FycmllcyB0aGUgZnVsbCByZW5hbWVkIG5vZGVcbiAqICh3aXRoIHRoZSBuZXcgbmFtZSBhbHJlYWR5IGFwcGxpZWQpIHBsdXMgaXRzIHBhcmVudCBpZCwgc28gaG9zdHMgY2FuIGlzc3VlXG4gKiBhIGNvbXBsZXRlIHVwZGF0ZSByZXF1ZXN0IChlLmcuIGBQVVQgL3Rlc3RfY2FzZV9mb2xkZXJzL3tpZH1gKSB3aXRob3V0IGFcbiAqIHNlY29uZGFyeSBsb29rdXAgYWdhaW5zdCB0aGVpciBjYWNoZWQgdHJlZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGb2xkZXJSZW5hbWVkUGF5bG9hZCB7XG4gIGZvbGRlcjogRm9sZGVyTm9kZTtcbiAgcGFyZW50SWQ6IG51bWJlciB8IG51bGw7XG4gIC8qKiBQcmV2aW91cyBuYW1lLCB1c2VmdWwgZm9yIHVuZG8gbWVzc2FnZXMgLyBhdWRpdCBsb2dzLiAqL1xuICBwcmV2aW91c05hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb2xkZXJDcmVhdGVkUGF5bG9hZCB7XG4gIHBhcmVudElkOiBudW1iZXIgfCBudWxsO1xuICBuYW1lOiBzdHJpbmc7XG4gIGNvbG9yPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIERlbGV0ZSBzdHJhdGVnaWVzIG1hdGNoIHRoZSBiYWNrZW5kIGBzdHJhdGVneWAgcXVlcnkgcGFyYW0gdmFsdWVzIG9uXG4gKiBgREVMRVRFIC90ZXN0X2Nhc2VfZm9sZGVycy97aWR9P3N0cmF0ZWd5PeKApmAuIE9ubHkgdGhlIHR3byBtb3ZlIHN0cmF0ZWdpZXNcbiAqIGFyZSBjb3ZlcmVkIGJ5IHRoZSBsaWJyYXJ5J3MgaW50ZXJuYWwgZGlhbG9nOyBgREVMRVRFX0lGX0VNUFRZYCBpcyB0aGVcbiAqIGhvc3QncyByZXNwb25zaWJpbGl0eSAocHJlY2hlY2sgYGNvdW50ID09PSAwICYmIHRvdGFsQ291bnQgPT09IDBgKS5cbiAqL1xuZXhwb3J0IHR5cGUgRm9sZGVyRGVsZXRlU3RyYXRlZ3kgPSAnTU9WRV9UT19QQVJFTlQnIHwgJ01PVkVfVE9fVU5PUkdBTklTRUQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZvbGRlckRlbGV0ZVJlcXVlc3RlZFBheWxvYWQge1xuICBpZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIHRlc3RDb3VudDogbnVtYmVyO1xuICBoYXNQYXJlbnQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9sZGVyTW92ZVJlcXVlc3RlZFBheWxvYWQge1xuICBpZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIGhhc1BhcmVudDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb2xkZXJNb3ZlZFBheWxvYWQge1xuICBpZDogbnVtYmVyO1xuICBuZXdQYXJlbnRJZDogbnVtYmVyIHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb2xkZXJEdXBsaWNhdGVSZXF1ZXN0ZWRQYXlsb2FkIHtcbiAgaWQ6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvbGRlckRlbGV0ZWRQYXlsb2FkIHtcbiAgaWQ6IG51bWJlcjtcbiAgc3RyYXRlZ3k/OiBGb2xkZXJEZWxldGVTdHJhdGVneTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXN0c01vdmVkUGF5bG9hZCB7XG4gIHRlc3RJZHM6IEFycmF5PHN0cmluZyB8IG51bWJlcj47XG4gIHRhcmdldEZvbGRlcklkOiBudW1iZXIgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1bGtBY3Rpb25JbnZva2VkUGF5bG9hZCB7XG4gIGlkOiBzdHJpbmc7XG4gIHNlbGVjdGVkOiBhbnlbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZW9yZGVyTGFiZWxzIHtcbiAgcmVvcmRlckJ1dHRvbjogc3RyaW5nO1xuICBjYW5jZWxCdXR0b246IHN0cmluZztcbiAgZG9uZUJ1dHRvbjogc3RyaW5nO1xuICBzYXZpbmdCdXR0b246IHN0cmluZztcbiAgYmFubmVyVGl0bGU6IHN0cmluZztcbiAgYmFubmVyRGVzY3JpcHRpb246IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfUkVPUkRFUl9MQUJFTFM6IFJlb3JkZXJMYWJlbHMgPSB7XG4gIHJlb3JkZXJCdXR0b246ICdSZW9yZGVyJyxcbiAgY2FuY2VsQnV0dG9uOiAnQ2FuY2VsJyxcbiAgZG9uZUJ1dHRvbjogJ0RvbmUnLFxuICBzYXZpbmdCdXR0b246ICdTYXZpbmcuLi4nLFxuICBiYW5uZXJUaXRsZTogJ1Jlb3JkZXIgbW9kZScsXG4gIGJhbm5lckRlc2NyaXB0aW9uOiAnRHJhZyByb3dzIHVzaW5nIHRoZSBoYW5kbGUgdG8gcmVhcnJhbmdlLicsXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlb3JkZXJTYXZlUGF5bG9hZCB7XG4gIG9yZGVyZWRJdGVtczogYW55W107XG59XG5cbmV4cG9ydCBjb25zdCBST1dfRFJBR19NSU1FID0gJ2FwcGxpY2F0aW9uL3gtY3FhLXRlc3QtaWRzJztcblxuLyoqIEN1c3RvbSBNSU1FIGZvciBmb2xkZXItcm93IGRyYWdzIGluIHRoZSBzaWRlYmFyLiBQYXlsb2FkIGlzIGEgSlNPTi1zdHJpbmdpZmllZCBmb2xkZXIgaWQuICovXG5leHBvcnQgY29uc3QgRk9MREVSX0RSQUdfTUlNRSA9ICdhcHBsaWNhdGlvbi94LWNxYS1mb2xkZXItaWQnO1xuIl19
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxhci10YWJsZS10ZW1wbGF0ZS5tb2RlbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3RlbXBsYXRlcy9tb2R1bGFyLXRhYmxlLXRlbXBsYXRlL21vZHVsYXItdGFibGUtdGVtcGxhdGUubW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdEQSxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBa0I7SUFDbkQsV0FBVyxFQUFFLElBQUk7SUFDakIsY0FBYyxFQUFFLElBQUk7SUFDcEIsY0FBYyxFQUFFLElBQUk7SUFDcEIsc0JBQXNCLEVBQUUsSUFBSTtJQUM1QixvQkFBb0IsRUFBRSxJQUFJO0lBQzFCLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLGlCQUFpQixFQUFFLElBQUk7SUFDdkIsaUJBQWlCLEVBQUUsSUFBSTtJQUN2QixpQkFBaUIsRUFBRSxJQUFJO0lBQ3ZCLG9CQUFvQixFQUFFLEtBQUs7SUFDM0Isa0JBQWtCLEVBQUUsSUFBSTtJQUN4QixpQkFBaUIsRUFBRSxJQUFJO0lBQ3ZCLGtCQUFrQixFQUFFLElBQUk7SUFDeEIsZ0JBQWdCLEVBQUUsSUFBSTtDQUN2QixDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsUUFBUSxDQUFDO0FBcUYvQyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBa0I7SUFDbkQsT0FBTyxFQUFFLFNBQVM7SUFDbEIsU0FBUyxFQUFFLFdBQVc7SUFDdEIsV0FBVyxFQUFFLGFBQWE7SUFDMUIsU0FBUyxFQUFFLFlBQVk7SUFDdkIsd0JBQXdCLEVBQUUsbUJBQW1CO0lBQzdDLFVBQVUsRUFBRSxhQUFhO0lBQ3pCLFlBQVksRUFBRSxlQUFlO0lBQzdCLFlBQVksRUFBRSxnQkFBZ0I7SUFDOUIsTUFBTSxFQUFFLFNBQVM7SUFDakIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsU0FBUyxFQUFFLFlBQVk7SUFDdkIsa0JBQWtCLEVBQUUsUUFBUTtJQUM1QixnQkFBZ0IsRUFBRSxXQUFXO0lBQzdCLG9CQUFvQixFQUFFLFVBQVU7SUFDaEMsa0JBQWtCLEVBQUUsYUFBYTtJQUNqQyxzQkFBc0IsRUFBRSxhQUFhO0lBQ3JDLG9CQUFvQixFQUFFLGdCQUFnQjtJQUN0QyxZQUFZLEVBQUUsYUFBYTtJQUMzQixlQUFlLEVBQUUsZ0JBQWdCO0lBQ2pDLFdBQVcsRUFBRSxjQUFjO0lBQzNCLGVBQWUsRUFBRSxnQkFBZ0I7SUFDakMsZ0JBQWdCLEVBQUUsUUFBUTtJQUMxQixpQkFBaUIsRUFBRSxXQUFXO0lBQzlCLGNBQWMsRUFBRSxhQUFhO0lBQzdCLDZCQUE2QixFQUFFLHlDQUF5QztJQUN4RSwyQkFBMkIsRUFBRSw0Q0FBNEM7SUFFekUsb0JBQW9CLEVBQUUsWUFBWTtJQUNsQywwQkFBMEIsRUFBRSxnREFBZ0Q7SUFDNUUsd0JBQXdCLEVBQUUsYUFBYTtJQUN2Qyw4QkFBOEIsRUFBRSw4Q0FBOEM7SUFDOUUsMEJBQTBCLEVBQUUsMEJBQTBCO0lBQ3RELHlCQUF5QixFQUFFLE1BQU07SUFDakMseUJBQXlCLEVBQUUseUJBQXlCO0lBQ3BELHFCQUFxQixFQUFFLFFBQVE7SUFDL0Isc0JBQXNCLEVBQUUsZUFBZTtJQUN2QyxnQ0FBZ0MsRUFBRSx5QkFBeUI7SUFDM0QsaUNBQWlDLEVBQUUseUNBQXlDO0lBRTVFLHlCQUF5QixFQUFFLGtCQUFrQjtJQUM3QyxnQkFBZ0IsRUFBRSxRQUFRO0lBQzFCLGNBQWMsRUFBRSxhQUFhO0lBQzdCLG1CQUFtQixFQUFFLGtCQUFrQjtJQUN2QyxnQkFBZ0IsRUFBRSxlQUFlO0lBRWpDLHVCQUF1QixFQUFFLGVBQWU7SUFDeEMsOEJBQThCLEVBQUUsMkRBQTJEO0lBQzNGLHNDQUFzQyxFQUFFLGFBQWE7SUFDckQsb0NBQW9DLEVBQUUsZ0JBQWdCO0lBQ3RELHVDQUF1QyxFQUFFLGNBQWM7SUFDdkQscUNBQXFDLEVBQUUsaUJBQWlCO0lBQ3hELDBCQUEwQixFQUFFLEtBQUs7SUFDakMsbUNBQW1DLEVBQUUsdUJBQXVCO0lBQzVELHlDQUF5QyxFQUFFLDBDQUEwQztJQUNyRix3Q0FBd0MsRUFBRSxxQkFBcUI7SUFDL0QsOENBQThDLEVBQUUsc0NBQXNDO0lBQ3RGLHdCQUF3QixFQUFFLFFBQVE7SUFDbEMseUJBQXlCLEVBQUUsZUFBZTtJQUUxQyx5QkFBeUIsRUFBRSxvQkFBb0I7SUFDL0MsK0JBQStCLEVBQUUsa0RBQWtEO0lBRW5GLGlCQUFpQixFQUFFLFFBQVE7SUFDM0IsbUJBQW1CLEVBQUUsYUFBYTtJQUNsQyxjQUFjLEVBQUUsa0JBQWtCO0lBQ2xDLHlCQUF5QixFQUFFLHFEQUFxRDtJQUNoRiwwQkFBMEIsRUFBRSx3Q0FBd0M7SUFDcEUsd0JBQXdCLEVBQUUsMkNBQTJDO0NBQ3RFLENBQUM7QUE0RUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQWtCO0lBQ25ELGFBQWEsRUFBRSxTQUFTO0lBQ3hCLFlBQVksRUFBRSxRQUFRO0lBQ3RCLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLFlBQVksRUFBRSxXQUFXO0lBQ3pCLFdBQVcsRUFBRSxjQUFjO0lBQzNCLGlCQUFpQixFQUFFLDBDQUEwQztDQUM5RCxDQUFDO0FBTUYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLDRCQUE0QixDQUFDO0FBRTFELGdHQUFnRztBQUNoRyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyw2QkFBNkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRm9sZGVyTm9kZSB7XG4gIGlkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIERpcmVjdCB0ZXN0LWNhc2UgY291bnQg4oCUIGNhc2VzIHdpdGggYGZvbGRlcklkID09PSB0aGlzLmlkYC4gUmVuZGVyZWQgYXMgdGhlIHJvdyBiYWRnZS4gKi9cbiAgY291bnQ/OiBudW1iZXI7XG4gIC8qKiBUb3RhbCB0ZXN0LWNhc2UgY291bnQgaW5jbHVkaW5nIGFsbCBkZXNjZW5kYW50cy4gUmVuZGVyZWQgYXMgYSB0b29sdGlwIG9uIHRoZSBmb2xkZXIgcm93LiAqL1xuICB0b3RhbENvdW50PzogbnVtYmVyO1xuICBjb2xvcj86IHN0cmluZztcbiAgY2hpbGRyZW4/OiBGb2xkZXJOb2RlW107XG4gIC8qKiBCYWNrZW5kIGhpbnQ6IHRydWUgd2hlbiB0aGlzIG5vZGUgaGFzIGF0IGxlYXN0IG9uZSBkaXJlY3QgY2hpbGQuIERyaXZlc1xuICAgKiAgdGhlIHNpZGViYXIgY2hldnJvbiB1bmRlciBsYXp5IGxvYWRpbmcsIHNvIHRoZSBhZmZvcmRhbmNlIHNob3dzIGV2ZW5cbiAgICogIGJlZm9yZSBgY2hpbGRyZW5gIGhhcyBiZWVuIGZldGNoZWQuICovXG4gIGhhc0NoaWxkcmVuPzogYm9vbGVhbjtcbiAgLyoqIEJhY2tlbmQtcmVwb3J0ZWQgdG90YWwgbnVtYmVyIG9mIGRpcmVjdCBjaGlsZHJlbi4gVGhlIHNpZGViYXIgc2hvd3MgYVxuICAgKiAgXCJMb2FkIG1vcmVcIiByb3cgd2hlbiBgKGNoaWxkcmVuPy5sZW5ndGggPz8gMCkgPCB0b3RhbENoaWxkcmVuYC4gKi9cbiAgdG90YWxDaGlsZHJlbj86IG51bWJlcjtcbiAgLyoqIExhc3QgMC1iYXNlZCBwYWdlIGFscmVhZHkgZmV0Y2hlZCBpbnRvIGBjaGlsZHJlbmAuIGB1bmRlZmluZWRgIG1lYW5zIHRoZVxuICAgKiAgc3VidHJlZSBoYXMgbm90IGJlZW4gbG9hZGVkIHlldCDigJQgdGhlIGhvc3Qgc2hvdWxkIGZldGNoIG9uIGZpcnN0IGV4cGFuZC4gKi9cbiAgbG9hZGVkUGFnZXM/OiBudW1iZXI7XG4gIC8qKiBUcnVlIHdoaWxlIGEgY2hpbGRyZW4tcGFnZSBmZXRjaCBpcyBpbiBmbGlnaHQsIHNvIHRoZSBzaWRlYmFyIGNhbiByZW5kZXJcbiAgICogIGEgc3Bpbm5lciByb3cgYW5kIHRoZSBob3N0IGNhbiBzdXBwcmVzcyBkdXBsaWNhdGUgcmVxdWVzdHMuICovXG4gIGNoaWxkcmVuTG9hZGluZz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIEZvbGRlcklkQWNjZXNzb3IgPSAocm93OiBhbnkpID0+IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9kdWxhckNvbmZpZyB7XG4gIHNob3dTaWRlYmFyOiBib29sZWFuO1xuICBzaG93QnJlYWRjcnVtYjogYm9vbGVhbjtcbiAgc2hvd0ZvbGRlckdyaWQ6IGJvb2xlYW47XG4gIHNob3dVbm9yZ2FuaXplZFNlY3Rpb246IGJvb2xlYW47XG4gIHNob3dTdWJmb2xkZXJTZWN0aW9uOiBib29sZWFuO1xuICBzaG93Q291bnRzOiBib29sZWFuO1xuICBhbGxvd0NyZWF0ZUZvbGRlcjogYm9vbGVhbjtcbiAgYWxsb3dSZW5hbWVGb2xkZXI6IGJvb2xlYW47XG4gIGFsbG93RGVsZXRlRm9sZGVyOiBib29sZWFuO1xuICBhbGxvd0R1cGxpY2F0ZUZvbGRlcjogYm9vbGVhbjtcbiAgYWxsb3dOZXN0ZWRGb2xkZXJzOiBib29sZWFuO1xuICBhbGxvd1Rlc3REcmFnRHJvcDogYm9vbGVhbjtcbiAgYWxsb3dCdWxrU2VsZWN0aW9uOiBib29sZWFuO1xuICAvKipcbiAgICogV2hlbiB0cnVlLCB0aGUgdGFibGUgcmVuZGVycyBhIGZvbGRlciBjb2x1bW4gKGljb24gKyBmb2xkZXIgbmFtZSkgYW5kIGxpc3RzIGl0IGluIHRoZVxuICAgKiBzZXR0aW5ncyBkcm9wZG93bi4gRGVmYXVsdCB2aXNpYmlsaXR5IG9uIGZpcnN0IGluaXQgZm9sbG93cyBgdmlld01vZGVgOiBzaG93biBpbiBsaXN0LFxuICAgKiBoaWRkZW4gaW4gbW9kdWxhci4gT25jZSB0aGUgdXNlciB0b2dnbGVzIGl0IHRoZSBjaG9pY2UgcGVyc2lzdHMuXG4gICAqL1xuICBzaG93Rm9sZGVyQ29sdW1uOiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgREVGQVVMVF9NT0RVTEFSX0NPTkZJRzogTW9kdWxhckNvbmZpZyA9IHtcbiAgc2hvd1NpZGViYXI6IHRydWUsXG4gIHNob3dCcmVhZGNydW1iOiB0cnVlLFxuICBzaG93Rm9sZGVyR3JpZDogdHJ1ZSxcbiAgc2hvd1Vub3JnYW5pemVkU2VjdGlvbjogdHJ1ZSxcbiAgc2hvd1N1YmZvbGRlclNlY3Rpb246IHRydWUsXG4gIHNob3dDb3VudHM6IHRydWUsXG4gIGFsbG93Q3JlYXRlRm9sZGVyOiB0cnVlLFxuICBhbGxvd1JlbmFtZUZvbGRlcjogdHJ1ZSxcbiAgYWxsb3dEZWxldGVGb2xkZXI6IHRydWUsXG4gIGFsbG93RHVwbGljYXRlRm9sZGVyOiBmYWxzZSxcbiAgYWxsb3dOZXN0ZWRGb2xkZXJzOiB0cnVlLFxuICBhbGxvd1Rlc3REcmFnRHJvcDogdHJ1ZSxcbiAgYWxsb3dCdWxrU2VsZWN0aW9uOiB0cnVlLFxuICBzaG93Rm9sZGVyQ29sdW1uOiB0cnVlLFxufTtcblxuLyoqXG4gKiBSZXNlcnZlZCBmaWVsZElkIGZvciB0aGUgYXV0by1pbmplY3RlZCBmb2xkZXIgY29sdW1uLiBIb3N0cyBzaG91bGQgYXZvaWRcbiAqIGRlZmluaW5nIGEgY29sdW1uIHdpdGggdGhpcyBpZCBvZiB0aGVpciBvd24uXG4gKi9cbmV4cG9ydCBjb25zdCBGT0xERVJfQ09MVU1OX0ZJRUxEX0lEID0gJ2ZvbGRlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9kdWxhckxhYmVscyB7XG4gIGZvbGRlcnM6IHN0cmluZztcbiAgb3JnYW5pemVkOiBzdHJpbmc7XG4gIHVub3JnYW5pemVkOiBzdHJpbmc7XG4gIG5ld0ZvbGRlcjogc3RyaW5nO1xuICBzZWFyY2hGb2xkZXJzUGxhY2Vob2xkZXI6IHN0cmluZztcbiAgYWxsRm9sZGVyczogc3RyaW5nO1xuICBzdWJmb2xkZXJzSW46IHN0cmluZztcbiAgbW92ZVRvRm9sZGVyOiBzdHJpbmc7XG4gIGFkZFRhZzogc3RyaW5nO1xuICBkZWxldGU6IHN0cmluZztcbiAgc2VsZWN0QWxsOiBzdHJpbmc7XG4gIHRlc3RzQ291bnRTaW5ndWxhcjogc3RyaW5nO1xuICB0ZXN0c0NvdW50UGx1cmFsOiBzdHJpbmc7XG4gIGZvbGRlcnNDb3VudFNpbmd1bGFyOiBzdHJpbmc7XG4gIGZvbGRlcnNDb3VudFBsdXJhbDogc3RyaW5nO1xuICBzdWJmb2xkZXJDb3VudFNpbmd1bGFyOiBzdHJpbmc7XG4gIHN1YmZvbGRlckNvdW50UGx1cmFsOiBzdHJpbmc7XG4gIG9uZVN1YmZvbGRlcjogc3RyaW5nO1xuICBzdWJmb2xkZXJzQ291bnQ6IHN0cmluZztcbiAgY2xlYXJGaWx0ZXI6IHN0cmluZztcbiAgbW92ZURpYWxvZ1RpdGxlOiBzdHJpbmc7XG4gIG1vdmVEaWFsb2dDYW5jZWw6IHN0cmluZztcbiAgbW92ZURpYWxvZ0NvbmZpcm06IHN0cmluZztcbiAgbW92ZURpYWxvZ1Jvb3Q6IHN0cmluZztcbiAgbW92ZURpYWxvZ0Rlc2NyaXB0aW9uU2luZ3VsYXI6IHN0cmluZztcbiAgbW92ZURpYWxvZ0Rlc2NyaXB0aW9uUGx1cmFsOiBzdHJpbmc7XG5cbiAgLy8gTmV3IEZvbGRlciBkaWFsb2dcbiAgbmV3Rm9sZGVyRGlhbG9nVGl0bGU6IHN0cmluZztcbiAgbmV3Rm9sZGVyRGlhbG9nRGVzY3JpcHRpb246IHN0cmluZztcbiAgbmV3Rm9sZGVyRGlhbG9nTmFtZUxhYmVsOiBzdHJpbmc7XG4gIG5ld0ZvbGRlckRpYWxvZ05hbWVQbGFjZWhvbGRlcjogc3RyaW5nO1xuICBuZXdGb2xkZXJEaWFsb2dQYXJlbnRMYWJlbDogc3RyaW5nO1xuICBuZXdGb2xkZXJEaWFsb2dQYXJlbnROb25lOiBzdHJpbmc7XG4gIG5ld0ZvbGRlckRpYWxvZ0NvbG9yTGFiZWw6IHN0cmluZztcbiAgbmV3Rm9sZGVyRGlhbG9nQ2FuY2VsOiBzdHJpbmc7XG4gIG5ld0ZvbGRlckRpYWxvZ0NvbmZpcm06IHN0cmluZztcbiAgbmV3Rm9sZGVyRGlhbG9nTmFtZVJlcXVpcmVkRXJyb3I6IHN0cmluZztcbiAgbmV3Rm9sZGVyRGlhbG9nTmFtZU1heExlbmd0aEVycm9yOiBzdHJpbmc7XG5cbiAgLy8gRm9sZGVyIHJvdyBjb250ZXh0IG1lbnUgKHJpZ2h0LWNsaWNrIC8gZWxsaXBzaXMpXG4gIGZvbGRlck1lbnVDcmVhdGVTdWJmb2xkZXI6IHN0cmluZztcbiAgZm9sZGVyTWVudVJlbmFtZTogc3RyaW5nO1xuICBmb2xkZXJNZW51TW92ZTogc3RyaW5nO1xuICBmb2xkZXJNZW51RHVwbGljYXRlOiBzdHJpbmc7XG4gIGZvbGRlck1lbnVEZWxldGU6IHN0cmluZztcblxuICAvLyBEZWxldGUgRm9sZGVyIGRpYWxvZ1xuICBkZWxldGVGb2xkZXJEaWFsb2dUaXRsZTogc3RyaW5nO1xuICBkZWxldGVGb2xkZXJEaWFsb2dCb2R5VGVtcGxhdGU6IHN0cmluZztcbiAgZGVsZXRlRm9sZGVyRGlhbG9nQm9keVRlc3RDYXNlU2luZ3VsYXI6IHN0cmluZztcbiAgZGVsZXRlRm9sZGVyRGlhbG9nQm9keVRlc3RDYXNlUGx1cmFsOiBzdHJpbmc7XG4gIGRlbGV0ZUZvbGRlckRpYWxvZ0JvZHlTdGVwR3JvdXBTaW5ndWxhcjogc3RyaW5nO1xuICBkZWxldGVGb2xkZXJEaWFsb2dCb2R5U3RlcEdyb3VwUGx1cmFsOiBzdHJpbmc7XG4gIGRlbGV0ZUZvbGRlckRpYWxvZ0JvZHlKb2luOiBzdHJpbmc7XG4gIGRlbGV0ZUZvbGRlckRpYWxvZ01vdmVUb1BhcmVudFRpdGxlOiBzdHJpbmc7XG4gIGRlbGV0ZUZvbGRlckRpYWxvZ01vdmVUb1BhcmVudERlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGRlbGV0ZUZvbGRlckRpYWxvZ01vdmVUb1Vub3JnYW5pemVkVGl0bGU6IHN0cmluZztcbiAgZGVsZXRlRm9sZGVyRGlhbG9nTW92ZVRvVW5vcmdhbml6ZWREZXNjcmlwdGlvbjogc3RyaW5nO1xuICBkZWxldGVGb2xkZXJEaWFsb2dDYW5jZWw6IHN0cmluZztcbiAgZGVsZXRlRm9sZGVyRGlhbG9nQ29uZmlybTogc3RyaW5nO1xuXG4gIC8vIEF1dG8tZGVyaXZlZCBlbXB0eSBzdGF0ZXMgKHNob3duIHdoZW4gcGFnZWRSb3dzIGlzIGVtcHR5IGFuZCBob3N0IGRpZCBub3Qgc2V0IGlzRW1wdHlTdGF0ZSlcbiAgZW1wdHlOb1Rlc3RzSW5Gb2xkZXJUaXRsZTogc3RyaW5nO1xuICBlbXB0eU5vVGVzdHNJbkZvbGRlckRlc2NyaXB0aW9uOiBzdHJpbmc7XG5cbiAgLyoqIEhlYWRlciBsYWJlbCBmb3IgdGhlIGF1dG8taW5qZWN0ZWQgZm9sZGVyIGNvbHVtbi4gKi9cbiAgZm9sZGVyQ29sdW1uTGFiZWw6IHN0cmluZztcbiAgLyoqIENlbGwgbGFiZWwgZm9yIHJvd3Mgd2l0aCBubyBmb2xkZXJJZCAoaS5lLiB0aGUgXCJVbm9yZ2FuaXplZFwiIGJ1Y2tldCkuICovXG4gIHVub3JnYW5pemVkUm93TGFiZWw6IHN0cmluZztcbiAgLyoqIFNob3duIGluIHRoZSBmb2xkZXIgc2lkZWJhciB3aGVuIHRoZSBzZWFyY2ggaW5wdXQgZmlsdGVycyBvdXQgZXZlcnkgZm9sZGVyLiAqL1xuICBub0ZvbGRlcnNGb3VuZDogc3RyaW5nO1xuICAvKiogSGVscGVyIGxpbmUgc2hvd24gdW5kZXIgdGhlIGVtcHR5LWZvbGRlci1saXN0IHN0YXRlLCBoaW50aW5nIGF0IHRoZSBjcmVhdGUgYWN0aW9uLiAqL1xuICBub0ZvbGRlcnNFbXB0eURlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIC8qKiBTaWRlYmFyIGZvbGRlci1yb3cgaG92ZXIgdG9vbHRpcCBjb3VudCBsaW5lLiBge259YCBpcyB0aGUgZGVzY2VuZGFudCB0b3RhbFxuICAgKiAgKEZvbGRlck5vZGUudG90YWxDb3VudCkuIFRoZSBob3N0IHN3YXBzIHRoZSBub3VuIGZvciBcInN0ZXAgZ3JvdXBcIiB3aGVuIGluXG4gICAqICBzdGVwLWdyb3VwIG1vZGUgYnkgb3ZlcnJpZGluZyB0aGVzZSB0d28ga2V5cy4gVGhlIGZ1bGwgdG9vbHRpcCBpcyBjb21wb3NlZFxuICAgKiAgYXMgYCR7bm9kZS5uYW1lfVxcbiR7dHBsLnJlcGxhY2UoJ3tufScsIHRvdGFsKX1gLiAqL1xuICBmb2xkZXJUb29sdGlwVG90YWxTaW5ndWxhcjogc3RyaW5nO1xuICBmb2xkZXJUb29sdGlwVG90YWxQbHVyYWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTU9EVUxBUl9MQUJFTFM6IE1vZHVsYXJMYWJlbHMgPSB7XG4gIGZvbGRlcnM6ICdGb2xkZXJzJyxcbiAgb3JnYW5pemVkOiAnT3JnYW5pemVkJyxcbiAgdW5vcmdhbml6ZWQ6ICdVbm9yZ2FuaXplZCcsXG4gIG5ld0ZvbGRlcjogJ05ldyBmb2xkZXInLFxuICBzZWFyY2hGb2xkZXJzUGxhY2Vob2xkZXI6ICdTZWFyY2ggZm9sZGVycy4uLicsXG4gIGFsbEZvbGRlcnM6ICdBbGwgZm9sZGVycycsXG4gIHN1YmZvbGRlcnNJbjogJ1N1YmZvbGRlcnMgaW4nLFxuICBtb3ZlVG9Gb2xkZXI6ICdNb3ZlIHRvIGZvbGRlcicsXG4gIGFkZFRhZzogJ0FkZCBUYWcnLFxuICBkZWxldGU6ICdEZWxldGUnLFxuICBzZWxlY3RBbGw6ICdTZWxlY3QgYWxsJyxcbiAgdGVzdHNDb3VudFNpbmd1bGFyOiAnMSB0ZXN0JyxcbiAgdGVzdHNDb3VudFBsdXJhbDogJ3tufSB0ZXN0cycsXG4gIGZvbGRlcnNDb3VudFNpbmd1bGFyOiAnMSBmb2xkZXInLFxuICBmb2xkZXJzQ291bnRQbHVyYWw6ICd7bn0gZm9sZGVycycsXG4gIHN1YmZvbGRlckNvdW50U2luZ3VsYXI6ICcxIHN1YmZvbGRlcicsXG4gIHN1YmZvbGRlckNvdW50UGx1cmFsOiAne259IHN1YmZvbGRlcnMnLFxuICBvbmVTdWJmb2xkZXI6ICcxIHN1YmZvbGRlcicsXG4gIHN1YmZvbGRlcnNDb3VudDogJ3tufSBzdWJmb2xkZXJzJyxcbiAgY2xlYXJGaWx0ZXI6ICdDbGVhciBmaWx0ZXInLFxuICBtb3ZlRGlhbG9nVGl0bGU6ICdNb3ZlIHRvIEZvbGRlcicsXG4gIG1vdmVEaWFsb2dDYW5jZWw6ICdDYW5jZWwnLFxuICBtb3ZlRGlhbG9nQ29uZmlybTogJ01vdmUgaGVyZScsXG4gIG1vdmVEaWFsb2dSb290OiAnVW5vcmdhbml6ZWQnLFxuICBtb3ZlRGlhbG9nRGVzY3JpcHRpb25TaW5ndWxhcjogJ01vdmluZyAxIHRlc3QgY2FzZSDigJQgc2VsZWN0IGRlc3RpbmF0aW9uJyxcbiAgbW92ZURpYWxvZ0Rlc2NyaXB0aW9uUGx1cmFsOiAnTW92aW5nIHtufSB0ZXN0IGNhc2VzIOKAlCBzZWxlY3QgZGVzdGluYXRpb24nLFxuXG4gIG5ld0ZvbGRlckRpYWxvZ1RpdGxlOiAnTmV3IEZvbGRlcicsXG4gIG5ld0ZvbGRlckRpYWxvZ0Rlc2NyaXB0aW9uOiAnUmVuYW1lIGFueSB0aW1lIGJ5IGRvdWJsZS1jbGlja2luZyBpbiB0aGUgdHJlZScsXG4gIG5ld0ZvbGRlckRpYWxvZ05hbWVMYWJlbDogJ0ZvbGRlciBuYW1lJyxcbiAgbmV3Rm9sZGVyRGlhbG9nTmFtZVBsYWNlaG9sZGVyOiAnZS5nLiBDaGVja291dCBGbG93LCBVc2VyIEF1dGgsIFBheW1lbnQgVGVzdHMnLFxuICBuZXdGb2xkZXJEaWFsb2dQYXJlbnRMYWJlbDogJ1BhcmVudCBmb2xkZXIgKG9wdGlvbmFsKScsXG4gIG5ld0ZvbGRlckRpYWxvZ1BhcmVudE5vbmU6ICdOb25lJyxcbiAgbmV3Rm9sZGVyRGlhbG9nQ29sb3JMYWJlbDogJ0ZvbGRlciBjb2xvciAob3B0aW9uYWwpJyxcbiAgbmV3Rm9sZGVyRGlhbG9nQ2FuY2VsOiAnQ2FuY2VsJyxcbiAgbmV3Rm9sZGVyRGlhbG9nQ29uZmlybTogJ0NyZWF0ZSBmb2xkZXInLFxuICBuZXdGb2xkZXJEaWFsb2dOYW1lUmVxdWlyZWRFcnJvcjogJ0ZvbGRlciBuYW1lIGlzIHJlcXVpcmVkJyxcbiAgbmV3Rm9sZGVyRGlhbG9nTmFtZU1heExlbmd0aEVycm9yOiAnRm9sZGVyIG5hbWUgY2Fubm90IGV4Y2VlZCAyMCBjaGFyYWN0ZXJzJyxcblxuICBmb2xkZXJNZW51Q3JlYXRlU3ViZm9sZGVyOiAnQ3JlYXRlIHN1YmZvbGRlcicsXG4gIGZvbGRlck1lbnVSZW5hbWU6ICdSZW5hbWUnLFxuICBmb2xkZXJNZW51TW92ZTogJ01vdmUgZm9sZGVyJyxcbiAgZm9sZGVyTWVudUR1cGxpY2F0ZTogJ0R1cGxpY2F0ZSBmb2xkZXInLFxuICBmb2xkZXJNZW51RGVsZXRlOiAnRGVsZXRlIGZvbGRlcicsXG5cbiAgZGVsZXRlRm9sZGVyRGlhbG9nVGl0bGU6ICdEZWxldGUgZm9sZGVyJyxcbiAgZGVsZXRlRm9sZGVyRGlhbG9nQm9keVRlbXBsYXRlOiAnVGhpcyBmb2xkZXIgY29udGFpbnMge2l0ZW1zfS4gV2hhdCBzaG91bGQgaGFwcGVuIHRvIHRoZW0/JyxcbiAgZGVsZXRlRm9sZGVyRGlhbG9nQm9keVRlc3RDYXNlU2luZ3VsYXI6ICcxIHRlc3QgY2FzZScsXG4gIGRlbGV0ZUZvbGRlckRpYWxvZ0JvZHlUZXN0Q2FzZVBsdXJhbDogJ3tufSB0ZXN0IGNhc2VzJyxcbiAgZGVsZXRlRm9sZGVyRGlhbG9nQm9keVN0ZXBHcm91cFNpbmd1bGFyOiAnMSBzdGVwIGdyb3VwJyxcbiAgZGVsZXRlRm9sZGVyRGlhbG9nQm9keVN0ZXBHcm91cFBsdXJhbDogJ3tufSBzdGVwIGdyb3VwcycsXG4gIGRlbGV0ZUZvbGRlckRpYWxvZ0JvZHlKb2luOiAnYW5kJyxcbiAgZGVsZXRlRm9sZGVyRGlhbG9nTW92ZVRvUGFyZW50VGl0bGU6ICdNb3ZlIHRvIHBhcmVudCBmb2xkZXInLFxuICBkZWxldGVGb2xkZXJEaWFsb2dNb3ZlVG9QYXJlbnREZXNjcmlwdGlvbjogJ01vdmUgdGhlbSBvbmUgbGV2ZWwgdXAg4oCUIG5vdGhpbmcgaXMgbG9zdCcsXG4gIGRlbGV0ZUZvbGRlckRpYWxvZ01vdmVUb1Vub3JnYW5pemVkVGl0bGU6ICdNb3ZlIHRvIFVub3JnYW5pemVkJyxcbiAgZGVsZXRlRm9sZGVyRGlhbG9nTW92ZVRvVW5vcmdhbml6ZWREZXNjcmlwdGlvbjogJ01vdmUgdGhlbSB0byB0aGUgVW5vcmdhbml6ZWQgc2VjdGlvbicsXG4gIGRlbGV0ZUZvbGRlckRpYWxvZ0NhbmNlbDogJ0NhbmNlbCcsXG4gIGRlbGV0ZUZvbGRlckRpYWxvZ0NvbmZpcm06ICdEZWxldGUgZm9sZGVyJyxcblxuICBlbXB0eU5vVGVzdHNJbkZvbGRlclRpdGxlOiAnTm8gVGVzdCBDYXNlIEZvdW5kJyxcbiAgZW1wdHlOb1Rlc3RzSW5Gb2xkZXJEZXNjcmlwdGlvbjogJ1RoaXMgZm9sZGVyIGRvZXMgbm90IGNvbnRhaW4gYW55IHRlc3QgY2FzZXMgeWV0LicsXG5cbiAgZm9sZGVyQ29sdW1uTGFiZWw6ICdGb2xkZXInLFxuICB1bm9yZ2FuaXplZFJvd0xhYmVsOiAnVW5vcmdhbml6ZWQnLFxuICBub0ZvbGRlcnNGb3VuZDogJ05vIEZvbGRlcnMgRm91bmQnLFxuICBub0ZvbGRlcnNFbXB0eURlc2NyaXB0aW9uOiAnQ2xpY2sgdGhlICsgaWNvbiBhYm92ZSB0byBjcmVhdGUgeW91ciBmaXJzdCBmb2xkZXIuJyxcbiAgZm9sZGVyVG9vbHRpcFRvdGFsU2luZ3VsYXI6ICcxIHRvdGFsIHRlc3QgY2FzZSBpbmNsdWRpbmcgc3ViZm9sZGVycycsXG4gIGZvbGRlclRvb2x0aXBUb3RhbFBsdXJhbDogJ3tufSB0b3RhbCB0ZXN0IGNhc2VzIGluY2x1ZGluZyBzdWJmb2xkZXJzJyxcbn07XG5cbi8qKlxuICogRW1pdHRlZCBhZnRlciBhIHN1Y2Nlc3NmdWwgaW5saW5lIGZvbGRlciByZW5hbWUuIENhcnJpZXMgdGhlIGZ1bGwgcmVuYW1lZCBub2RlXG4gKiAod2l0aCB0aGUgbmV3IG5hbWUgYWxyZWFkeSBhcHBsaWVkKSBwbHVzIGl0cyBwYXJlbnQgaWQsIHNvIGhvc3RzIGNhbiBpc3N1ZVxuICogYSBjb21wbGV0ZSB1cGRhdGUgcmVxdWVzdCAoZS5nLiBgUFVUIC90ZXN0X2Nhc2VfZm9sZGVycy97aWR9YCkgd2l0aG91dCBhXG4gKiBzZWNvbmRhcnkgbG9va3VwIGFnYWluc3QgdGhlaXIgY2FjaGVkIHRyZWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRm9sZGVyUmVuYW1lZFBheWxvYWQge1xuICBmb2xkZXI6IEZvbGRlck5vZGU7XG4gIHBhcmVudElkOiBudW1iZXIgfCBudWxsO1xuICAvKiogUHJldmlvdXMgbmFtZSwgdXNlZnVsIGZvciB1bmRvIG1lc3NhZ2VzIC8gYXVkaXQgbG9ncy4gKi9cbiAgcHJldmlvdXNOYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9sZGVyQ3JlYXRlZFBheWxvYWQge1xuICBwYXJlbnRJZDogbnVtYmVyIHwgbnVsbDtcbiAgbmFtZTogc3RyaW5nO1xuICBjb2xvcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZWxldGUgc3RyYXRlZ2llcyBtYXRjaCB0aGUgYmFja2VuZCBgc3RyYXRlZ3lgIHF1ZXJ5IHBhcmFtIHZhbHVlcyBvblxuICogYERFTEVURSAvdGVzdF9jYXNlX2ZvbGRlcnMve2lkfT9zdHJhdGVneT3igKZgLiBPbmx5IHRoZSB0d28gbW92ZSBzdHJhdGVnaWVzXG4gKiBhcmUgY292ZXJlZCBieSB0aGUgbGlicmFyeSdzIGludGVybmFsIGRpYWxvZzsgYERFTEVURV9JRl9FTVBUWWAgaXMgdGhlXG4gKiBob3N0J3MgcmVzcG9uc2liaWxpdHkgKHByZWNoZWNrIGBjb3VudCA9PT0gMCAmJiB0b3RhbENvdW50ID09PSAwYCkuXG4gKi9cbmV4cG9ydCB0eXBlIEZvbGRlckRlbGV0ZVN0cmF0ZWd5ID0gJ01PVkVfVE9fUEFSRU5UJyB8ICdNT1ZFX1RPX1VOT1JHQU5JU0VEJztcblxuZXhwb3J0IGludGVyZmFjZSBGb2xkZXJEZWxldGVSZXF1ZXN0ZWRQYXlsb2FkIHtcbiAgaWQ6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuICB0ZXN0Q291bnQ6IG51bWJlcjtcbiAgaGFzUGFyZW50OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvbGRlck1vdmVSZXF1ZXN0ZWRQYXlsb2FkIHtcbiAgaWQ6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuICBoYXNQYXJlbnQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9sZGVyTW92ZWRQYXlsb2FkIHtcbiAgaWQ6IG51bWJlcjtcbiAgbmV3UGFyZW50SWQ6IG51bWJlciB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9sZGVyRHVwbGljYXRlUmVxdWVzdGVkUGF5bG9hZCB7XG4gIGlkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb2xkZXJEZWxldGVkUGF5bG9hZCB7XG4gIGlkOiBudW1iZXI7XG4gIHN0cmF0ZWd5PzogRm9sZGVyRGVsZXRlU3RyYXRlZ3k7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVzdHNNb3ZlZFBheWxvYWQge1xuICB0ZXN0SWRzOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+O1xuICB0YXJnZXRGb2xkZXJJZDogbnVtYmVyIHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWxrQWN0aW9uSW52b2tlZFBheWxvYWQge1xuICBpZDogc3RyaW5nO1xuICBzZWxlY3RlZDogYW55W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVvcmRlckxhYmVscyB7XG4gIHJlb3JkZXJCdXR0b246IHN0cmluZztcbiAgY2FuY2VsQnV0dG9uOiBzdHJpbmc7XG4gIGRvbmVCdXR0b246IHN0cmluZztcbiAgc2F2aW5nQnV0dG9uOiBzdHJpbmc7XG4gIGJhbm5lclRpdGxlOiBzdHJpbmc7XG4gIGJhbm5lckRlc2NyaXB0aW9uOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1JFT1JERVJfTEFCRUxTOiBSZW9yZGVyTGFiZWxzID0ge1xuICByZW9yZGVyQnV0dG9uOiAnUmVvcmRlcicsXG4gIGNhbmNlbEJ1dHRvbjogJ0NhbmNlbCcsXG4gIGRvbmVCdXR0b246ICdEb25lJyxcbiAgc2F2aW5nQnV0dG9uOiAnU2F2aW5nLi4uJyxcbiAgYmFubmVyVGl0bGU6ICdSZW9yZGVyIG1vZGUnLFxuICBiYW5uZXJEZXNjcmlwdGlvbjogJ0RyYWcgcm93cyB1c2luZyB0aGUgaGFuZGxlIHRvIHJlYXJyYW5nZS4nLFxufTtcblxuZXhwb3J0IGludGVyZmFjZSBSZW9yZGVyU2F2ZVBheWxvYWQge1xuICBvcmRlcmVkSXRlbXM6IGFueVtdO1xufVxuXG5leHBvcnQgY29uc3QgUk9XX0RSQUdfTUlNRSA9ICdhcHBsaWNhdGlvbi94LWNxYS10ZXN0LWlkcyc7XG5cbi8qKiBDdXN0b20gTUlNRSBmb3IgZm9sZGVyLXJvdyBkcmFncyBpbiB0aGUgc2lkZWJhci4gUGF5bG9hZCBpcyBhIEpTT04tc3RyaW5naWZpZWQgZm9sZGVyIGlkLiAqL1xuZXhwb3J0IGNvbnN0IEZPTERFUl9EUkFHX01JTUUgPSAnYXBwbGljYXRpb24veC1jcWEtZm9sZGVyLWlkJztcbiJdfQ==
|
|
@@ -60,6 +60,15 @@ export class TableTemplateComponent {
|
|
|
60
60
|
this.viewMode = 'list';
|
|
61
61
|
this.viewModeLabels = { list: 'List', modular: 'Modular' };
|
|
62
62
|
this.viewModeChange = new EventEmitter();
|
|
63
|
+
// Stable reference fed to <cqa-segment-control [segments]>. A getter here
|
|
64
|
+
// allocates a new array each CD tick, which the segment control then sees as
|
|
65
|
+
// a changed Input — its updateIndicator runs inside a queueMicrotask, the
|
|
66
|
+
// zone re-ticks via onMicrotaskEmpty, and the loop pegs CPU at 100% with
|
|
67
|
+
// HTTP requests starved. Rebuilt only when viewModeLabels actually changes.
|
|
68
|
+
this.viewModeSegments = [
|
|
69
|
+
{ label: 'List', value: 'list', icon: 'view_list' },
|
|
70
|
+
{ label: 'Modular', value: 'modular', icon: 'folder' },
|
|
71
|
+
];
|
|
63
72
|
// Data input
|
|
64
73
|
this.data = [];
|
|
65
74
|
// Empty state inputs
|
|
@@ -165,12 +174,6 @@ export class TableTemplateComponent {
|
|
|
165
174
|
// Export modal state
|
|
166
175
|
this.isExportModalOpen = false;
|
|
167
176
|
}
|
|
168
|
-
get viewModeSegments() {
|
|
169
|
-
return [
|
|
170
|
-
{ label: this.viewModeLabels.list, value: 'list', icon: 'view_list' },
|
|
171
|
-
{ label: this.viewModeLabels.modular, value: 'modular', icon: 'folder' },
|
|
172
|
-
];
|
|
173
|
-
}
|
|
174
177
|
onViewModeChange(value) {
|
|
175
178
|
const next = value === 'modular' ? 'modular' : 'list';
|
|
176
179
|
if (next !== this.viewMode) {
|
|
@@ -223,6 +226,12 @@ export class TableTemplateComponent {
|
|
|
223
226
|
if (changes['selectedItems'] || changes['data']) {
|
|
224
227
|
this.restoreSelectionState();
|
|
225
228
|
}
|
|
229
|
+
if (changes['viewModeLabels']) {
|
|
230
|
+
this.viewModeSegments = [
|
|
231
|
+
{ label: this.viewModeLabels.list, value: 'list', icon: 'view_list' },
|
|
232
|
+
{ label: this.viewModeLabels.modular, value: 'modular', icon: 'folder' },
|
|
233
|
+
];
|
|
234
|
+
}
|
|
226
235
|
}
|
|
227
236
|
initializeComponent() {
|
|
228
237
|
if (this.isEmptyState) {
|
|
@@ -757,4 +766,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
757
766
|
}], columnVisibility: [{
|
|
758
767
|
type: Input
|
|
759
768
|
}] } });
|
|
760
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtdGVtcGxhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90ZW1wbGF0ZXMvdGFibGUtdGVtcGxhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90ZW1wbGF0ZXMvdGFibGUtdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFLWix1QkFBdUIsRUFHdkIsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBcUIsc0JBQXNCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUsvRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFTN0UsTUFBTSxPQUFPLHNCQUFzQjtJQTZLakMsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUE1SzFDLG9CQUFvQjtRQUNYLHNCQUFpQixHQUFXLG1CQUFtQixDQUFDO1FBQ2hELGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLGNBQVMsR0FBWSxJQUFJLENBQUM7UUFDMUIsa0JBQWEsR0FBWSxJQUFJLENBQUM7UUFDOUIscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBQ2xDLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQ3RDLHFCQUFxQjtRQUNYLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUM1QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUE2SCxDQUFDO1FBQ3hLLGlCQUFpQjtRQUNQLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDN0MsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUM5QyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN0QyxlQUFVLEdBQUcs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Z0JBRUcsV0FBVztzQkFBcEIsTUFBTTtnQkFFRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQzRCLHNCQUFzQjtzQkFBeEQsU0FBUzt1QkFBQyxzQkFBc0I7Z0JBMkJwQixnQkFBZ0I7c0JBQTVCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IER5bmFtaWNGaWx0ZXJJdGVtLCBEeW5hbWljRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZmlsdGVycy9keW5hbWljLWZpbHRlci9keW5hbWljLWZpbHRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHluYW1pY1RhYmxlQ29sdW1uIH0gZnJvbSAnLi4vdGFibGUvZHluYW1pYy10YWJsZS9keW5hbWljLXRhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb2x1bW5WaXNpYmlsaXR5Q29uZmlnIH0gZnJvbSAnLi4vY29sdW1uLXZpc2liaWxpdHkvY29sdW1uLXZpc2liaWxpdHkuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlQWN0aW9uIH0gZnJvbSAnLi4vdGFibGUtYWN0aW9uLXRvb2xiYXIvdGFibGUtYWN0aW9uLXRvb2xiYXIuY29tcG9uZW50JztcbmltcG9ydCB7IEVtcHR5U3RhdGVDb25maWcgfSBmcm9tICcuLi9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IEVNUFRZX1NUQVRFX0lNQUdFUyB9IGZyb20gJy4uL2Fzc2V0cy9pbWFnZXMvaW1hZ2UtYXNzZXRzLmNvbnN0YW50cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS10YWJsZS10ZW1wbGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW10sXG4gIGhvc3Q6IHsgY2xhc3M6ICdjcWEtdWktcm9vdCcgfSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVUZW1wbGF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAvLyBTZWFyY2ggYmFyIGlucHV0c1xuICBASW5wdXQoKSBzZWFyY2hQbGFjZWhvbGRlcjogc3RyaW5nID0gJ1NlYXJjaCBjb21wb25lbnRzJztcbiAgQElucHV0KCkgc2VhcmNoVmFsdWU6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBzaG93Q2xlYXI6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBzaG93U2VhcmNoQmFyOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd0V4cG9ydEJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBpc0V4cG9ydGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICAvLyBTZWFyY2ggYmFyIG91dHB1dHNcbiAgQE91dHB1dCgpIG9uU2VhcmNoQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBvbkV4cG9ydENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx7IHR5cGU6ICdsb2NhbCcgfCAnZW1haWwnOyBlbWFpbHM/OiBzdHJpbmdbXTsgZnJhbWV3b3JrPzogJ1dFQkRSSVZFUl9JTycgfCAnU0VMRU5JVU1fSkFWQSc7IHNlbGVjdGVkSXRlbXM6IGFueVtdIH0gfCB2b2lkPigpO1xuICAvLyBGaWx0ZXIgb3V0cHV0c1xuICBAT3V0cHV0KCkgb25BcHBseUZpbHRlckNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBvblJlc2V0RmlsdGVyQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBvbkNsZWFyQWxsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgcmVtb3ZlQ2hpcCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8vIEZpbHRlciBpbnB1dHNcbiAgQElucHV0KCkgZmlsdGVyQ29uZmlnOiBEeW5hbWljRmlsdGVySXRlbVtdID0gW107XG4gIEBJbnB1dCgpIGZpbHRlck1vZGVsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gIEBJbnB1dCgpIHNob3dGaWx0ZXJQYW5lbDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93RmlsdGVyQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcblxuICAvLyBPdGhlciBidXR0b25zIGlucHV0IChhcnJheSBvZiBidXR0b24gdGVtcGxhdGVzL2NvbXBvbmVudHMpXG4gIEBJbnB1dCgpIG90aGVyQnV0dG9uczogVGVtcGxhdGVSZWY8YW55PltdID0gW107XG4gIFxuICAvLyBPdGhlciBkcm9wZG93biBidXR0b25zIGlucHV0IChhcnJheSBvZiBkcm9wZG93biBidXR0b24gdGVtcGxhdGVzL2NvbXBvbmVudHMpXG4gIEBJbnB1dCgpIG90aGVyRHJvcERvd25CdXR0b25zOiBUZW1wbGF0ZVJlZjxhbnk+W10gPSBbXTtcbiAgXG4gIC8vIE90aGVyIHNlbGVjdCBkcm9wZG93biBidXR0b25zIGlucHV0IChhcnJheSBvZiBzZWxlY3QgZHJvcGRvd24gYnV0dG9uIHRlbXBsYXRlcy9jb21wb25lbnRzKVxuICBASW5wdXQoKSBvdGhlclNlbGVjdERyb3BEb3duQnV0dG9uczogVGVtcGxhdGVSZWY8YW55PltdID0gW107XG4gIFxuICAvLyBMZWdhY3kgc2luZ2xlIGJ1dHRvbiBpbnB1dHMgKGRlcHJlY2F0ZWQsIGtlcHQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpXG4gIC8qKiBAZGVwcmVjYXRlZCBVc2Ugb3RoZXJCdXR0b25zIGFycmF5IGluc3RlYWQgKi9cbiAgQElucHV0KCkgb3RoZXJCdXR0b25MYWJlbDogc3RyaW5nID0gJ090aGVyIEJ1dHRvbic7XG4gIC8qKiBAZGVwcmVjYXRlZCBVc2Ugb3RoZXJCdXR0b25zIGFycmF5IGluc3RlYWQgKi9cbiAgQElucHV0KCkgb3RoZXJCdXR0b25WYXJpYW50OiAnZmlsbGVkJyB8ICdvdXRsaW5lZCcgfCAndGV4dCcgfCAnZWxldmF0ZWQnIHwgJ3RvbmFsJyB8ICdncmV5LXNvbGlkJyA9ICdmaWxsZWQnO1xuICAvKiogQGRlcHJlY2F0ZWQgVXNlIG90aGVyQnV0dG9ucyBhcnJheSBpbnN0ZWFkICovXG4gIEBJbnB1dCgpIHNob3dPdGhlckJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG4gIFxuICAvLyBBY3Rpb24gbWVudSBidXR0b24gKHRocmVlLWRvdCBtZW51IGluIHRhYmxlIHJvd3MpXG4gIEBJbnB1dCgpIHNob3dBY3Rpb25CdXR0b246IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8vIFNldHRpbmdzIGFuZCByZWZyZXNoIGJ1dHRvbnNcbiAgQElucHV0KCkgc2hvd1NldHRpbmdzQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd0F1dG9SZWZyZXNoQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcblxuICAvLyBWaWV3LW1vZGUgdG9nZ2xlIChMaXN0IHwgTW9kdWxhcikuIEhpZGRlbiBieSBkZWZhdWx0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LlxuICBASW5wdXQoKSBzaG93Vmlld01vZGVUb2dnbGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgdmlld01vZGU6ICdsaXN0JyB8ICdtb2R1bGFyJyA9ICdsaXN0JztcbiAgQElucHV0KCkgdmlld01vZGVMYWJlbHM6IHsgbGlzdDogc3RyaW5nOyBtb2R1bGFyOiBzdHJpbmcgfSA9IHsgbGlzdDogJ0xpc3QnLCBtb2R1bGFyOiAnTW9kdWxhcicgfTtcbiAgQE91dHB1dCgpIHZpZXdNb2RlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjwnbGlzdCcgfCAnbW9kdWxhcic+KCk7XG5cbiAgZ2V0IHZpZXdNb2RlU2VnbWVudHMoKTogQXJyYXk8eyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nOyBpY29uPzogc3RyaW5nIH0+IHtcbiAgICByZXR1cm4gW1xuICAgICAgeyBsYWJlbDogdGhpcy52aWV3TW9kZUxhYmVscy5saXN0LCB2YWx1ZTogJ2xpc3QnLCBpY29uOiAndmlld19saXN0JyB9LFxuICAgICAgeyBsYWJlbDogdGhpcy52aWV3TW9kZUxhYmVscy5tb2R1bGFyLCB2YWx1ZTogJ21vZHVsYXInLCBpY29uOiAnZm9sZGVyJyB9LFxuICAgIF07XG4gIH1cblxuICBvblZpZXdNb2RlQ2hhbmdlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBuZXh0ID0gdmFsdWUgPT09ICdtb2R1bGFyJyA/ICdtb2R1bGFyJyA6ICdsaXN0JztcbiAgICBpZiAobmV4dCAhPT0gdGhpcy52aWV3TW9kZSkge1xuICAgICAgdGhpcy52aWV3TW9kZSA9IG5leHQ7XG4gICAgICB0aGlzLnZpZXdNb2RlQ2hhbmdlLmVtaXQobmV4dCk7XG4gICAgfVxuICB9XG5cbiAgLy8gRGF0YSBpbnB1dFxuICBASW5wdXQoKSBkYXRhOiBhbnlbXSA9IFtdO1xuXG4gIC8vIEVtcHR5IHN0YXRlIGlucHV0c1xuICBASW5wdXQoKSBpc0VtcHR5U3RhdGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZW1wdHlTdGF0ZUNvbmZpZzogRW1wdHlTdGF0ZUNvbmZpZyA9IHtcbiAgICB0aXRsZTogJ05vIERhdGEgQXZhaWxhYmxlIFlldCcsXG4gICAgZGVzY3JpcHRpb246ICdSdW4gb3IgdXBsb2FkIHlvdXIgZmlyc3QgdGVzdCB0byBzZWUgeW91ciBhbmFseXRpY3MgYW5kIHRyZW5kcyBoZXJlLiBXYXRjaCB5b3VyIHF1YWxpdHkgbWV0cmljcyBjb21lIHRvIGxpZmUgd2l0aCByZWFsLXRpbWUgaW5zaWdodHMuJyxcbiAgICBpbWFnZVVybDogRU1QVFlfU1RBVEVfSU1BR0VTLkRBU0hCT0FSRCxcbiAgICBhY3Rpb25zOiBbeyBsYWJlbDogJ1J1biBUZXN0IFN1aXRlJywgdmFyaWFudDogJ2ZpbGxlZCcgfV0sXG4gIH07XG5cbiAgLy8gQWN0aW9uIGJhciBpbnB1dHNcbiAgQElucHV0KCkgYWN0aW9uczogVGFibGVBY3Rpb25bXSA9IFtcbiAgICB7IFxuICAgICAgaWQ6ICdkZWxldGUnLCBcbiAgICAgIGxhYmVsOiAnRGVsZXRlJywgXG4gICAgICBpY29uOiAnZGVsZXRlJywgXG4gICAgICB0b29sdGlwOiAnRGVsZXRlIHNlbGVjdGVkJyxcbiAgICAgIG9uQ2xpY2s6IChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdEZWxldGUgYWN0aW9uIGNsaWNrZWQ6JywgY29udGV4dCk7XG4gICAgICB9XG4gICAgfSxcbiAgICB7IFxuICAgICAgaWQ6ICdlZGl0JywgXG4gICAgICBsYWJlbDogJ0VkaXQnLCBcbiAgICAgIGljb246ICdlZGl0JywgXG4gICAgICB0b29sdGlwOiAnRWRpdCBzZWxlY3RlZCcsXG4gICAgICBvbkNsaWNrOiAoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnRWRpdCBhY3Rpb24gY2xpY2tlZDonLCBjb250ZXh0KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHsgXG4gICAgICBpZDogJ2FkZC10YWcnLCBcbiAgICAgIGxhYmVsOiAnQWRkIFRhZycsIFxuICAgICAgaWNvbjogJ2xvY2FsX29mZmVyJywgXG4gICAgICB0b29sdGlwOiAnQWRkIHRhZ3MnLFxuICAgICAgb25DbGljazogKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ0FkZCB0YWcgYWN0aW9uIGNsaWNrZWQ6JywgY29udGV4dCk7XG4gICAgICB9XG4gICAgfSxcbiAgICB7IFxuICAgICAgaWQ6ICdyZW1vdmUtdGFnJywgXG4gICAgICBsYWJlbDogJ1JlbW92ZSBUYWcnLCBcbiAgICAgIGljb246ICdsYWJlbF9vZmYnLCBcbiAgICAgIHRvb2x0aXA6ICdSZW1vdmUgdGFncycsXG4gICAgICBvbkNsaWNrOiAoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnUmVtb3ZlIHRhZyBhY3Rpb24gY2xpY2tlZDonLCBjb250ZXh0KTtcbiAgICAgIH1cbiAgICB9LFxuICBdO1xuXG4gIC8vIENoaXBzIGlucHV0c1xuICBASW5wdXQoKSBjaGlwczogQXJyYXk8eyBrZXk/OiBzdHJpbmc7IGxhYmVsPzogc3RyaW5nOyB0ZXh0OiBzdHJpbmc7IGZ1bGxUZXh0Pzogc3RyaW5nOyBoYXNNb3JlPzogYm9vbGVhbiB9PiA9IFtdO1xuICBASW5wdXQoKSBmaWx0ZXJBcHBsaWVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gVGFibGUgaW5wdXRzXG4gIEBJbnB1dCgpIGNvbHVtbnM6IER5bmFtaWNUYWJsZUNvbHVtbltdID0gW107XG4gIEBJbnB1dCgpIHJvd1NlbGVjdGFibGU/OiAocm93OiBhbnkpID0+IGJvb2xlYW47XG4gIEBJbnB1dCgpIHNlbGVjdGVkQXV0b1JlZnJlc2hJbnRlcnZhbDogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgcGFnZUluZGV4OiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBwYWdlU2l6ZTogbnVtYmVyID0gMTA7XG4gIEBJbnB1dCgpIHBhZ2VTaXplT3B0aW9uczogbnVtYmVyW10gPSBbMTAsIDIwLCA0MCwgNjAsIDgwXTtcbiAgQElucHV0KCkgcGFnZVNpemVNZW51RGlyZWN0aW9uOiAnYXV0bycgfCAndXAnIHwgJ2Rvd24nID0gJ2F1dG8nO1xuICAvLyBTZXJ2ZXItc2lkZSBwYWdpbmF0aW9uIGNvbnRyb2xzXG4gIEBJbnB1dCgpIHNlcnZlclNpZGVQYWdpbmF0aW9uOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHRvdGFsRWxlbWVudHM6IG51bWJlciA9IDA7XG4gIEBPdXRwdXQoKSBwYWdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHBhZ2VJbmRleDogbnVtYmVyOyBwYWdlU2l6ZTogbnVtYmVyIH0+KCk7XG4gIC8qKlxuICAgKiBXaGVuIGZhbHNlLCBoZWFkZXIgc29ydCBkb2VzIG5vdCByZW9yZGVyIHJvd3MgbG9jYWxseSAodXNlIHdpdGggc2VydmVyU2lkZVBhZ2luYXRpb24gKyBzb3J0Q2hhbmdlKS5cbiAgICogRGVmYXVsdCB0cnVlIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LlxuICAgKi9cbiAgQElucHV0KCkgZW5hYmxlTG9jYWxTb3J0OiBib29sZWFuID0gdHJ1ZTtcbiAgQE91dHB1dCgpIHNvcnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICBmaWVsZElkOiBzdHJpbmc7XG4gICAgZmllbGRWYWx1ZT86IHN0cmluZztcbiAgICBkaXJlY3Rpb246ICdhc2MnIHwgJ2Rlc2MnIHwgbnVsbDtcbiAgfT4oKTtcbiAgLy8gTG9hZGVyIGNvbnRyb2xzIChwYXNzZWQgZG93biB0byBkeW5hbWljIHRhYmxlKVxuICBASW5wdXQoKSBpc1RhYmxlTG9hZGluZz86IGJvb2xlYW47XG4gIEBJbnB1dCgpIGlzVGFibGVEYXRhTG9hZGluZz86IGJvb2xlYW47XG4gIC8vIEJhY2t3YXJkLWNvbXBhdGliaWxpdHkgZmxhZzsgaWYgcHJvdmlkZWQsIGR5bmFtaWMgdGFibGUgd2lsbCB1c2UgaXQgd2hlbiBzcGVjaWZpYyBmbGFncyBhcmUgdW5kZWZpbmVkXG5cbiAgLy8gT3B0aW9uYWwgZ2V0dGVyIGZvciBKU09OIHBhdGggcGVyIGNlbGwuIFdoZW4gcHJvdmlkZWQsIGRvdWJsZS1jbGlja2luZyBhIGNlbGwgY29waWVzIHRoZSBwYXRoLlxuICBASW5wdXQoKSBjZWxsSnNvblBhdGhHZXR0ZXI/OiAocm93SW5kZXg6IG51bWJlciwgY29sSWQ6IHN0cmluZywgcm93OiBhbnkpID0+IHN0cmluZztcblxuICAvLyBPcHRpb25hbCBoYW5kbGVyIGNhbGxlZCB3aGVuIGEgSlNPTiBwYXRoIGlzIGNvcGllZCBmcm9tIGEgdGFibGUgY2VsbFxuICBASW5wdXQoKSBvbkpzb25QYXRoQ29waWVkSGFuZGxlcj86IChldmVudDogeyBwYXRoOiBzdHJpbmc7IHNvdXJjZTogc3RyaW5nIH0pID0+IHZvaWQ7XG5cbiAgLy8gU2VsZWN0ZWQgaXRlbXMgKGZ1bGwgb2JqZWN0cykgZm9yIG1haW50YWluaW5nIHNlbGVjdGlvbiBhY3Jvc3MgcGFnaW5hdGlvbiAoc2VydmVyLXNpZGUpXG4gIEBJbnB1dCgpIHNlbGVjdGVkSXRlbXM6IGFueVtdID0gW107XG5cbiAgLyoqIFdoZW4gdHJ1ZSwgdGhlIGFjdGlvbiB0b29sYmFyIHJlbmRlcnMgdGhlIFwiU2VsZWN0IGFsbFwiIGFmZm9yZGFuY2UuICovXG4gIEBJbnB1dCgpIHNob3dTZWxlY3RBbGxJblRvb2xiYXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyoqIFdoZW4gdHJ1ZSwgdGhlIGFjdGlvbiB0b29sYmFyIHJlbmRlcnMgdGhlIGRpc21pc3MgKMOXKSBhZmZvcmRhbmNlLiAqL1xuICBASW5wdXQoKSBzaG93RGlzbWlzc0luVG9vbGJhcjogYm9vbGVhbiA9IGZhbHNlO1xuICAvKiogQm91bmQgdG8gdGhlIHRvb2xiYXIncyBcIlNlbGVjdCBhbGxcIiBjaGVja2JveCDigJQgZHJpdmVzIHRoZSBjaGVja2VkIHN0YXRlLiAqL1xuICBASW5wdXQoKSBhbGxTZWxlY3RlZEluVG9vbGJhcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIEludGVybmFsIHN0YXRlIGZvciBjb2x1bW4gdmlzaWJpbGl0eVxuICBwcml2YXRlIF9jb2x1bW5WaXNpYmlsaXR5OiBDb2x1bW5WaXNpYmlsaXR5Q29uZmlnID0ge307XG4gIHByaXZhdGUgX2NhY2hlZFZpc2liaWxpdHlDb2x1bW5zOiBBcnJheTx7IGlkOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfT4gPSBbXTtcbiAgZmlsdGVyZWRSb3dzOiBhbnlbXSA9IFtdO1xuICBwYWdlZFJvd3M6IGFueVtdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuICBwcml2YXRlIHBlbmRpbmdGaWx0ZXJzOiBhbnk7XG4gIHByaXZhdGUgYXBwbGllZEZpbHRlcnM6IGFueTtcbiAgcHJpdmF0ZSBhdXRvUmVmcmVzaFRpbWVyPzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+O1xuICBAT3V0cHV0KCkgb25SZWxvYWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBvbkF1dG9SZWZyZXNoQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBjb2x1bW5WaXNpYmlsaXR5Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxDb2x1bW5WaXNpYmlsaXR5Q29uZmlnPigpO1xuICBAT3V0cHV0KCkgYXV0b1JlZnJlc2hJbnRlcnZhbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBCdWxrIGFjdGlvbiB0b29sYmFyIHBhc3N0aHJvdWdoIOKAlCBtaXJyb3JzIGV2ZXJ5IG91dHB1dCB0aGUgaW5uZXJcbiAgLy8gYGNxYS10YWJsZS1hY3Rpb24tdG9vbGJhcmAgZXhwb3Nlcywgc28gY29uc3VtZXJzIHdpcmUgYSBzaW5nbGUgY29tcG9uZW50LlxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqIEZpcmVzIHdoZW4gYSBidWxrIGFjdGlvbiAoZGVsZXRlIC8gZWRpdCAvIHRhZyAvIOKApikgaXMgaW52b2tlZCBvbiB0aGUgc2VsZWN0aW9uLiAqL1xuICBAT3V0cHV0KCkgYnVsa0FjdGlvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx7IGlkOiBzdHJpbmc7IHNlbGVjdGVkOiBhbnlbXSB9PigpO1xuICAvKiogRmlyZXMgd2hlbiB0aGUgdG9vbGJhcidzIFwiU2VsZWN0IGFsbFwiIGFmZm9yZGFuY2UgaXMgdG9nZ2xlZCAocmVxdWlyZXMgYHNob3dTZWxlY3RBbGxJblRvb2xiYXJgKS4gKi9cbiAgQE91dHB1dCgpIGJ1bGtTZWxlY3RBbGxDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIC8qKiBGaXJlcyB3aGVuIHRoZSB0b29sYmFyJ3MgZGlzbWlzcyAow5cpIGFmZm9yZGFuY2UgaXMgY2xpY2tlZCAocmVxdWlyZXMgYHNob3dEaXNtaXNzSW5Ub29sYmFyYCkuICovXG4gIEBPdXRwdXQoKSBidWxrRGlzbWlzcyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgLyoqIEZpcmVzIHdoZW5ldmVyIHRoZSBjb21wb25lbnQgaW50ZXJuYWxseSBtdXRhdGVzIGBzZWxlY3RlZEl0ZW1zYCAoZS5nLiBkaXNtaXNzIGNsZWFycyBpdCkuICovXG4gIEBPdXRwdXQoKSBzZWxlY3RlZEl0ZW1zQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcbiAgQFZpZXdDaGlsZChEeW5hbWljRmlsdGVyQ29tcG9uZW50KSBkeW5hbWljRmlsdGVyQ29tcG9uZW50PzogRHluYW1pY0ZpbHRlckNvbXBvbmVudDtcblxuICAvLyBEZXJpdmVkIGNvbHVtbnMgd2l0aCB2aXNpYmlsaXR5IGFwcGxpZWQuXG4gIGNvbXB1dGVkQ29sdW1uczogRHluYW1pY1RhYmxlQ29sdW1uW10gPSBbXTtcbiAgLy8gQXV0by1nZW5lcmF0ZWQgdmlzaWJpbGl0eSBjb2x1bW5zIGZyb20gY29sdW1ucyBpbnB1dFxuICB2aXNpYmlsaXR5Q29sdW1uczogQXJyYXk8eyBpZDogc3RyaW5nOyBsYWJlbDogc3RyaW5nIH0+ID0gW107XG5cbiAgcHJpdmF0ZSB1cGRhdGVDb21wdXRlZENvbHVtbnMoKTogdm9pZCB7XG4gICAgY29uc3QgdmlzaWJpbGl0eSA9IHRoaXMuX2NvbHVtblZpc2liaWxpdHkgfHwge307XG4gICAgY29uc3Qgc291cmNlID0gdGhpcy5jb2x1bW5zIHx8IFtdO1xuICAgIHRoaXMuY29tcHV0ZWRDb2x1bW5zID0gc291cmNlLm1hcChjb2wgPT4ge1xuICAgICAgaWYgKFsnY2hlY2tib3gnLCAnYWN0aW9ucyddLmluY2x1ZGVzKGNvbC5maWVsZElkKSkge1xuICAgICAgICByZXR1cm4gY29sO1xuICAgICAgfVxuICAgICAgY29uc3Qgc2hvdyA9IHZpc2liaWxpdHlbY29sLmZpZWxkSWRdO1xuICAgICAgcmV0dXJuIHsgLi4uY29sLCBpc1Nob3c6IHNob3cgIT09IGZhbHNlIH07XG4gICAgfSk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVZpc2liaWxpdHlDb2x1bW5zKCk6IHZvaWQge1xuICAgIHRoaXMuX2NhY2hlZFZpc2liaWxpdHlDb2x1bW5zID0gdGhpcy5tYXBWaXNpYmlsaXR5Q29sdW1ucygpO1xuICAgIHRoaXMudmlzaWJpbGl0eUNvbHVtbnMgPSB0aGlzLl9jYWNoZWRWaXNpYmlsaXR5Q29sdW1ucztcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8vIENvbnRyb2xsZWQgY29sdW1uIHZpc2liaWxpdHk6IHBhcmVudCBjYW4gc2VlZCBhbmQgcHVzaCB1cGRhdGVzLlxuICBASW5wdXQoKSBzZXQgY29sdW1uVmlzaWJpbGl0eShjZmc6IENvbHVtblZpc2liaWxpdHlDb25maWcgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAoY2ZnKSB7XG4gICAgICB0aGlzLl9jb2x1bW5WaXNpYmlsaXR5ID0geyAuLi5jZmcgfTtcbiAgICAgIHRoaXMudXBkYXRlQ29tcHV0ZWRDb2x1bW5zKCk7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cbiAgZ2V0IGNvbHVtblZpc2liaWxpdHkoKTogQ29sdW1uVmlzaWJpbGl0eUNvbmZpZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbHVtblZpc2liaWxpdHk7XG4gIH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsaXplQ29tcG9uZW50KCk7XG4gICAgdGhpcy51cGRhdGVDb21wdXRlZENvbHVtbnMoKTtcbiAgICB0aGlzLnVwZGF0ZVZpc2liaWxpdHlDb2x1bW5zKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2RhdGEnXSB8fCBjaGFuZ2VzWydpc0VtcHR5U3RhdGUnXSkge1xuICAgICAgdGhpcy5pbml0aWFsaXplQ29tcG9uZW50KCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydjb2x1bW5zJ10pIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUNvbHVtblZpc2liaWxpdHkoKTtcbiAgICAgIHRoaXMudXBkYXRlQ29tcHV0ZWRDb2x1bW5zKCk7XG4gICAgICB0aGlzLnVwZGF0ZVZpc2liaWxpdHlDb2x1bW5zKCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydzZWxlY3RlZEl0ZW1zJ10gfHwgY2hhbmdlc1snZGF0YSddKSB7XG4gICAgICB0aGlzLnJlc3RvcmVTZWxlY3Rpb25TdGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUNvbXBvbmVudCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0VtcHR5U3RhdGUpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRSb3dzID0gW107XG4gICAgICB0aGlzLnBhZ2VkUm93cyA9IFtdO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEluIHNlcnZlci1zaWRlIG1vZGUsIGFzc3VtZSBpbmNvbWluZyBkYXRhIGlzIGFscmVhZHkgYSBwYWdlIHNsaWNlXG4gICAgaWYgKHRoaXMuc2VydmVyU2lkZVBhZ2luYXRpb24pIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRSb3dzID0gWy4uLnRoaXMuZGF0YV07XG4gICAgICB0aGlzLnBhZ2VkUm93cyA9IFsuLi50aGlzLmZpbHRlcmVkUm93c107XG4gICAgICB0aGlzLmluaXRpYWxpemVDb2x1bW5WaXNpYmlsaXR5KCk7XG4gICAgICB0aGlzLnJlc3RvcmVTZWxlY3Rpb25TdGF0ZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZmlsdGVyZWRSb3dzID0gWy4uLnRoaXMuZGF0YV07XG4gICAgdGhpcy5hcHBseVBhZ2luYXRpb24oKTtcbiAgICB0aGlzLmluaXRpYWxpemVDb2x1bW5WaXNpYmlsaXR5KCk7XG4gICAgdGhpcy51cGRhdGVDb21wdXRlZENvbHVtbnMoKTtcbiAgICB0aGlzLnJlc3RvcmVTZWxlY3Rpb25TdGF0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBzZWxlY3RlZCBJRHMgZnJvbSBzZWxlY3RlZEl0ZW1zIChvYmplY3RzKVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRTZWxlY3RlZElkcygpOiBTZXQ8bnVtYmVyPiB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtcyAmJiB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIG5ldyBTZXQodGhpcy5zZWxlY3RlZEl0ZW1zLm1hcChpdGVtID0+IE51bWJlcihpdGVtLmlkKSkuZmlsdGVyKGlkID0+ICFpc05hTihpZCkpKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBTZXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzdG9yZVNlbGVjdGlvblN0YXRlKCk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkSWRzU2V0ID0gdGhpcy5nZXRTZWxlY3RlZElkcygpO1xuXG4gICAgaWYgKHNlbGVjdGVkSWRzU2V0LnNpemUgPT09IDApIHtcbiAgICAgIC8vIElmIG5vIHNlbGVjdGVkIElEcywgY2xlYXIgYWxsIHNlbGVjdGlvbiBzdGF0ZXNcbiAgICAgIGlmICh0aGlzLnBhZ2VkUm93cykge1xuICAgICAgICB0aGlzLnBhZ2VkUm93cy5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICAgICAgaWYgKHJvdykge1xuICAgICAgICAgICAgKHJvdyBhcyBhbnkpLmlzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFJlc3RvcmUgc2VsZWN0aW9uIHN0YXRlIGJhc2VkIG9uIHNlbGVjdGVkSXRlbXNcbiAgICBpZiAodGhpcy5wYWdlZFJvd3MpIHtcbiAgICAgIHRoaXMucGFnZWRSb3dzLmZvckVhY2gocm93ID0+IHtcbiAgICAgICAgaWYgKHJvdyAmJiByb3cuaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIChyb3cgYXMgYW55KS5pc1NlbGVjdGVkID0gc2VsZWN0ZWRJZHNTZXQuaGFzKE51bWJlcihyb3cuaWQpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQWxzbyB1cGRhdGUgZmlsdGVyZWRSb3dzIGZvciBjb25zaXN0ZW5jeVxuICAgIGlmICh0aGlzLmZpbHRlcmVkUm93cykge1xuICAgICAgdGhpcy5maWx0ZXJlZFJvd3MuZm9yRWFjaChyb3cgPT4ge1xuICAgICAgICBpZiAocm93ICYmIHJvdy5pZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgKHJvdyBhcyBhbnkpLmlzU2VsZWN0ZWQgPSBzZWxlY3RlZElkc1NldC5oYXMoTnVtYmVyKHJvdy5pZCkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUNvbHVtblZpc2liaWxpdHkoKTogdm9pZCB7XG4gICAgLy8gQ2FjaGUgdmlzaWJpbGl0eSBjb2x1bW5zIHRvIGF2b2lkIGNyZWF0aW5nIG5ldyBhcnJheXMgb24gZXZlcnkgY2hhbmdlIGRldGVjdGlvblxuICAgIHRoaXMuX2NhY2hlZFZpc2liaWxpdHlDb2x1bW5zID0gdGhpcy5tYXBWaXNpYmlsaXR5Q29sdW1ucygpO1xuICAgIC8vIFNlZWQgdmlzaWJpbGl0eSBzdGF0ZSBmcm9tIGVhY2ggY29sdW1uJ3MgaXNTaG93IChkZWZhdWx0IHRvIHRydWUpIHNvIGNvbnN1bWVyc1xuICAgIC8vIGNhbiBwcmUtYXBwbHkgcGVyc2lzdGVkIHByZWZlcmVuY2VzIHZpYSBjb2x1bW5zW2ldLmlzU2hvdy5cbiAgICBjb25zdCBzb3VyY2UgPSB0aGlzLmNvbHVtbnMgfHwgW107XG4gICAgZm9yIChjb25zdCBjb2wgb2YgdGhpcy5fY2FjaGVkVmlzaWJpbGl0eUNvbHVtbnMpIHtcbiAgICAgIGlmICh0aGlzLl9jb2x1bW5WaXNpYmlsaXR5W2NvbC5pZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBzcmNDb2wgPSBzb3VyY2UuZmluZChjID0+IGMuZmllbGRJZCA9PT0gY29sLmlkKTtcbiAgICAgICAgdGhpcy5fY29sdW1uVmlzaWJpbGl0eVtjb2wuaWRdID0gc3JjQ29sICYmIHNyY0NvbC5pc1Nob3cgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBhbnlSb3dTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICAvLyBDaGVjayBpZiB0aGVyZSBhcmUgYW55IHNlbGVjdGVkIGl0ZW1zIChlaXRoZXIgb24gY3VycmVudCBwYWdlIG9yIGFjcm9zcyBhbGwgcGFnZXMgdmlhIHNlbGVjdGVkSXRlbXMpXG4gICAgY29uc3QgaGFzU2VsZWN0ZWRPblBhZ2UgPSAhISh0aGlzLnBhZ2VkUm93cyAmJiB0aGlzLnBhZ2VkUm93cy5zb21lKHIgPT4gISEociBhcyBhbnkpLmlzU2VsZWN0ZWQpKTtcbiAgICBjb25zdCBzZWxlY3RlZElkc1NldCA9IHRoaXMuZ2V0U2VsZWN0ZWRJZHMoKTtcbiAgICBjb25zdCBoYXNTZWxlY3RlZEFjcm9zc1BhZ2VzID0gc2VsZWN0ZWRJZHNTZXQuc2l6ZSA+IDA7XG4gICAgcmV0dXJuIGhhc1NlbGVjdGVkT25QYWdlIHx8IGhhc1NlbGVjdGVkQWNyb3NzUGFnZXM7XG4gIH1cblxuICBnZXQgY3VycmVudFNlbGVjdGVkSXRlbXMoKTogYW55W10ge1xuICAgIC8vIElmIHNlbGVjdGVkSXRlbXMgKGZ1bGwgb2JqZWN0cykgYXJlIHByb3ZpZGVkLCB1c2UgdGhlbSBkaXJlY3RseVxuICAgIC8vIFRoaXMgZW5zdXJlcyBhbGwgc2VsZWN0ZWQgaXRlbXMgYXJlIHJldHVybmVkLCBpbmNsdWRpbmcgdGhvc2UgZnJvbSBvdGhlciBwYWdlc1xuICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbXMgJiYgdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSXRlbXM7XG4gICAgfVxuICAgIC8vIEZhbGxiYWNrOiBGb3IgY2xpZW50LXNpZGUgcGFnaW5hdGlvbiBvciB3aGVuIHNlbGVjdGVkSXRlbXMgaXMgbm90IHByb3ZpZGVkLFxuICAgIC8vIGZpbHRlciBwYWdlZFJvd3MgdG8gZ2V0IHNlbGVjdGVkIGl0ZW1zIGZyb20gY3VycmVudCBwYWdlIG9ubHlcbiAgICBpZiAoIXRoaXMucGFnZWRSb3dzIHx8IHRoaXMucGFnZWRSb3dzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGVjdGVkSWRzU2V0ID0gdGhpcy5nZXRTZWxlY3RlZElkcygpO1xuICAgIFxuICAgIC8vIEZpbHRlciByb3dzIHRoYXQgYXJlIHNlbGVjdGVkXG4gICAgcmV0dXJuIHRoaXMucGFnZWRSb3dzXG4gICAgICAuZmlsdGVyKHIgPT4ge1xuICAgICAgICBpZiAoIXIgfHwgci5pZCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGNvbnN0IHJvd0lkID0gTnVtYmVyKHIuaWQpO1xuICAgICAgICAvLyBJbmNsdWRlIGlmIGVpdGhlcjpcbiAgICAgICAgLy8gMS4gVGhlIHJvdyBoYXMgaXNTZWxlY3RlZCA9IHRydWUgKGN1cnJlbnQgcGFnZSBzZWxlY3Rpb24pXG4gICAgICAgIC8vIDIuIFRoZSByb3cncyBJRCBpcyBpbiBzZWxlY3RlZEl0ZW1zIChzZWxlY3RlZCBvbiBvdGhlciBwYWdlcyBvciByZXN0b3JlZCBzZWxlY3Rpb24pXG4gICAgICAgIHJldHVybiAhIShyIGFzIGFueSkuaXNTZWxlY3RlZCB8fCBzZWxlY3RlZElkc1NldC5oYXMocm93SWQpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKiogVG9vbGJhciBgYWN0aW9uQ2xpY2tgIGhhbmRsZXIg4oCUIGVtaXRzIHVwd2FyZCBhcyBgYnVsa0FjdGlvbkNsaWNrYC4gKi9cbiAgYWN0aW9uQ2xpY2soZXZlbnQ6IHsgaWQ6IHN0cmluZzsgc2VsZWN0ZWQ6IGFueVtdIH0pOiB2b2lkIHtcbiAgICB0aGlzLmJ1bGtBY3Rpb25DbGljay5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIC8qKiBUb29sYmFyIGBzZWxlY3RBbGxDaGFuZ2VgIGhhbmRsZXIg4oCUIHNlbGVjdHMgZXZlcnkgZmlsdGVyZWQgcm93IGxvY2FsbHkgYW5kIGVtaXRzLiAqL1xuICBvblRvb2xiYXJTZWxlY3RBbGwoY2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IGNoZWNrZWQgPyBbLi4udGhpcy5maWx0ZXJlZFJvd3NdIDogW107XG4gICAgdGhpcy5yZXN0b3JlU2VsZWN0aW9uU3RhdGUoKTtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXNDaGFuZ2UuZW1pdChbLi4udGhpcy5zZWxlY3RlZEl0ZW1zXSk7XG4gICAgdGhpcy5idWxrU2VsZWN0QWxsQ2hhbmdlLmVtaXQoY2hlY2tlZCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKiogVG9vbGJhciBgZGlzbWlzc2AgaGFuZGxlciDigJQgY2xlYXJzIHNlbGVjdGlvbiBsb2NhbGx5IHNvIHRoZSB0b29sYmFyIGNsb3Nlcy4gKi9cbiAgb25Ub29sYmFyRGlzbWlzcygpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcbiAgICB0aGlzLnJlc3RvcmVTZWxlY3Rpb25TdGF0ZSgpO1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0NoYW5nZS5lbWl0KFtdKTtcbiAgICB0aGlzLmJ1bGtEaXNtaXNzLmVtaXQoKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHZpZXcoaWQ6IG51bWJlciB8IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdWaWV3JywgaWQpO1xuICB9XG5cbiAgZWRpdChyb3c6IGFueSk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdFZGl0Jywgcm93KTtcbiAgfVxuXG4gIGRlbGV0ZShyb3c6IGFueSk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdEZWxldGUnLCByb3cpO1xuICB9XG5cbiAgdG9nZ2xlRmlsdGVyKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd0ZpbHRlclBhbmVsID0gIXRoaXMuc2hvd0ZpbHRlclBhbmVsO1xuICB9XG5cbiAgb25Db2x1bW5WaXNpYmlsaXR5Q2hhbmdlKGNmZzogQ29sdW1uVmlzaWJpbGl0eUNvbmZpZyk6IHZvaWQge1xuICAgIHRoaXMuX2NvbHVtblZpc2liaWxpdHkgPSB7IC4uLmNmZyB9O1xuICAgIHRoaXMudXBkYXRlQ29tcHV0ZWRDb2x1bW5zKCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgdGhpcy5jb2x1bW5WaXNpYmlsaXR5Q2hhbmdlLmVtaXQoeyAuLi5jZmcgfSk7XG4gIH1cblxuICBvbkF1dG9SZWZyZXNoQ2hhbmdlKGludGVydmFsTXM6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRBdXRvUmVmcmVzaEludGVydmFsID0gaW50ZXJ2YWxNcztcbiAgICB0aGlzLnNldHVwQXV0b1JlZnJlc2goaW50ZXJ2YWxNcyk7XG4gICAgdGhpcy5hdXRvUmVmcmVzaEludGVydmFsQ2hhbmdlLmVtaXQoaW50ZXJ2YWxNcyk7XG4gICAgdGhpcy50cmlnZ2VyUmVsb2FkKCk7XG4gIH1cblxuICB2YWx1ZUNoYW5nZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ1ZhbHVlIGNoYW5nZWQnLCB2YWx1ZSk7XG4gICAgdGhpcy5vblNlYXJjaENoYW5nZS5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIHNlYXJjaCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ1NlYXJjaCcsIHZhbHVlKTtcbiAgfVxuXG4gIGNsZWFyZWQoKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ0NsZWFyZWQnKTtcbiAgfVxuXG4gIG9uRW1wdHlBY3Rpb24oYWN0aW9uOiBhbnkpIHtcbiAgICBpZiAoYWN0aW9uPy5sYWJlbCA9PT0gJ1Nob3cgZmlsdGVycycpIHtcbiAgICAgIHRoaXMudG9nZ2xlRmlsdGVyKCk7XG4gICAgfVxuICB9XG5cbiAgb25GaWx0ZXJzQ2hhbmdlZChjdXJyZW50OiBhbnkpOiB2b2lkIHtcbiAgICAvLyBEZWZlciBhcHBseWluZyBmaWx0ZXJzIGFuZCB1cGRhdGluZyBjaGlwcyB1bnRpbCBBcHBseSBGaWx0ZXIgaXMgY2xpY2tlZFxuICAgIHRoaXMucGVuZGluZ0ZpbHRlcnMgPSBjdXJyZW50O1xuICB9XG5cbiAgb25GaWx0ZXJzQXBwbGllZChhcHBsaWVkOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dGaWx0ZXJQYW5lbCA9IGZhbHNlO1xuICAgIGNvbnN0IGVmZmVjdGl2ZSA9IGFwcGxpZWQgPz8gdGhpcy5wZW5kaW5nRmlsdGVycyA/PyB7fTtcbiAgICB0aGlzLmFwcGxpZWRGaWx0ZXJzID0gZWZmZWN0aXZlO1xuICAgIHRoaXMuZmlsdGVyZWRSb3dzID0gdGhpcy5kYXRhLmZpbHRlcihyID0+IHRoaXMucGFzc0ZpbHRlcnMoZWZmZWN0aXZlLCByKSk7XG4gICAgdGhpcy5wYWdlSW5kZXggPSAwO1xuICAgIHRoaXMuYXBwbHlQYWdpbmF0aW9uKCk7XG4gICAgY29uc3QgY2hpcHM6IEFycmF5PHsga2V5Pzogc3RyaW5nOyBsYWJlbD86IHN0cmluZzsgdGV4dDogc3RyaW5nOyBmdWxsVGV4dD86IHN0cmluZzsgaGFzTW9yZT86IGJvb2xlYW4gfT4gPSBbXTtcbiAgICBpZiAoZWZmZWN0aXZlKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhlZmZlY3RpdmUpKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZWZmZWN0aXZlW2tleV07XG4gICAgICAgIGlmICh2YWx1ZSA9PSBudWxsIHx8IHZhbHVlID09PSAnJyB8fCAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKSkgY29udGludWU7XG4gICAgICAgIFxuICAgICAgICAvLyBGaW5kIHRoZSBmaWx0ZXIgY29uZmlnIGl0ZW0gZm9yIHRoaXMga2V5XG4gICAgICAgIGNvbnN0IGZpbHRlckNvbmZpZ0l0ZW0gPSB0aGlzLmZpbHRlckNvbmZpZz8uZmluZChjID0+IGMua2V5ID09PSBrZXkpO1xuICAgICAgICBjb25zdCBvcHRpb25zID0gZmlsdGVyQ29uZmlnSXRlbT8ub3B0aW9ucyB8fCBbXTtcbiAgICAgICAgXG4gICAgICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byBmaW5kIGRpc3BsYXkgdGV4dCBmcm9tIG9wdGlvbnNcbiAgICAgICAgY29uc3QgZ2V0RGlzcGxheVRleHQgPSAodmFsOiBhbnkpOiBzdHJpbmcgPT4ge1xuICAgICAgICAgIC8vIElmIHZhbHVlIGlzIGFscmVhZHkgYW4gb2JqZWN0IHdpdGggbmFtZS9sYWJlbCwgdXNlIGl0XG4gICAgICAgICAgaWYgKHZhbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiAodmFsLm5hbWUgfHwgdmFsLmxhYmVsIHx8IHZhbC52YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWwubmFtZSA/PyB2YWwubGFiZWwgPz8gU3RyaW5nKHZhbC52YWx1ZSA/PyB2YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBcbiAgICAgICAgICAvLyBMb29rIHVwIHRoZSBvcHRpb24gaW4gdGhlIGNvbmZpZ1xuICAgICAgICAgIGNvbnN0IG9wdGlvbiA9IG9wdGlvbnMuZmluZCgob3B0OiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9wdElkID0gb3B0LmlkID8/IG9wdC52YWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IG9wdFZhbHVlID0gb3B0LnZhbHVlO1xuICAgICAgICAgICAgY29uc3QgdmFsU3RyID0gU3RyaW5nKHZhbCk7XG4gICAgICAgICAgICByZXR1cm4gU3RyaW5nKG9wdElkKSA9PT0gdmFsU3RyIHx8IFN0cmluZyhvcHRWYWx1ZSkgPT09IHZhbFN0cjtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBcbiAgICAgICAgICBpZiAob3B0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gb3B0aW9uLm5hbWUgPz8gb3B0aW9uLmxhYmVsID8/IFN0cmluZyhvcHRpb24udmFsdWUgPz8gdmFsKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgXG4gICAgICAgICAgLy8gRmFsbGJhY2sgdG8gdGhlIHJhdyB2YWx1ZVxuICAgICAgICAgIHJldHVybiBTdHJpbmcodmFsKTtcbiAgICAgICAgfTtcbiAgICAgICAgXG4gICAgICAgIGxldCB0ZXh0ID0gJyc7XG4gICAgICAgIGxldCBsYWJlbCA9IGZpbHRlckNvbmZpZ0l0ZW0/LmxhYmVsO1xuICAgICAgICBcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgdGV4dCA9IHZhbHVlLm1hcCgodjogYW55KSA9PiBnZXREaXNwbGF5VGV4dCh2KSkuam9pbignLCAnKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgaWYgKCdzdGFydCcgaW4gdmFsdWUgfHwgJ2VuZCcgaW4gdmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IHMgPSB2YWx1ZS5zdGFydCA/IG5ldyBEYXRlKHZhbHVlLnN0YXJ0KS50b0xvY2FsZURhdGVTdHJpbmcoKSA6ICcnO1xuICAgICAgICAgICAgY29uc3QgZSA9IHZhbHVlLmVuZCA/IG5ldyBEYXRlKHZhbHVlLmVuZCkudG9Mb2NhbGVEYXRlU3RyaW5nKCkgOiAnJztcbiAgICAgICAgICAgIHRleHQgPSBbcywgZV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAtICcpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0ZXh0ID0gZ2V0RGlzcGxheVRleHQodmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0ZXh0ID0gZ2V0RGlzcGxheVRleHQodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGNoaXBzLnB1c2goeyBrZXksIGxhYmVsLCB0ZXh0LCBmdWxsVGV4dDogdGV4dCwgaGFzTW9yZTogdGV4dC5sZW5ndGggPiAzMCB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jaGlwcyA9IGNoaXBzO1xuICAgIHRoaXMuZmlsdGVyQXBwbGllZCA9IHRoaXMuY2hpcHMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIGhhbmRsZVJlc2V0RmlsdGVyQ2xpY2soKTogdm9pZCB7XG4gICAgLy8gQ2xlYXIgY2hpcHMgYW5kIHJlc2V0IGZpbHRlcmVkIGRhdGEgd2hlbiByZXNldCBpcyBjbGlja2VkXG4gICAgdGhpcy5wZW5kaW5nRmlsdGVycyA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmNoaXBzID0gW107XG4gICAgdGhpcy5maWx0ZXJBcHBsaWVkID0gZmFsc2U7XG4gICAgdGhpcy5maWx0ZXJlZFJvd3MgPSBbLi4udGhpcy5kYXRhXTtcbiAgICB0aGlzLnBhZ2VJbmRleCA9IDA7XG4gICAgdGhpcy5hcHBseVBhZ2luYXRpb24oKTtcbiAgICB0aGlzLm9uUmVzZXRGaWx0ZXJDbGljay5lbWl0KCk7XG4gIH1cblxuICBoYW5kbGVSZWZyZXNoQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5vbkF1dG9SZWZyZXNoQ2xpY2suZW1pdCgpO1xuICAgIHRoaXMudHJpZ2dlclJlbG9hZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSB0cmlnZ2VyUmVsb2FkKCk6IHZvaWQge1xuICAgIGNvbnN0IGVmZmVjdGl2ZSA9IHRoaXMuYXBwbGllZEZpbHRlcnMgPz8ge307XG4gICAgdGhpcy5maWx0ZXJlZFJvd3MgPSB0aGlzLmRhdGEuZmlsdGVyKHIgPT4gdGhpcy5wYXNzRmlsdGVycyhlZmZlY3RpdmUsIHIpKTtcbiAgICB0aGlzLnBhZ2VJbmRleCA9IDA7XG4gICAgdGhpcy5hcHBseVBhZ2luYXRpb24oKTtcbiAgICB0aGlzLm9uUmVsb2FkLmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBBdXRvUmVmcmVzaChpbnRlcnZhbE1zOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyQXV0b1JlZnJlc2goKTtcbiAgICBpZiAoaW50ZXJ2YWxNcyAmJiBpbnRlcnZhbE1zID4gMCkge1xuICAgICAgdGhpcy5hdXRvUmVmcmVzaFRpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICB0aGlzLnRyaWdnZXJSZWxvYWQoKTtcbiAgICAgIH0sIGludGVydmFsTXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJBdXRvUmVmcmVzaCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hdXRvUmVmcmVzaFRpbWVyKSB7XG4gICAgICBjbGVhckludGVydmFsKHRoaXMuYXV0b1JlZnJlc2hUaW1lcik7XG4gICAgICB0aGlzLmF1dG9SZWZyZXNoVGltZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhckF1dG9SZWZyZXNoKCk7XG4gIH1cblxuICBvblBhZ2luYXRlKGU6IHsgcGFnZUluZGV4OiBudW1iZXI7IHBhZ2VTaXplOiBudW1iZXIgfSk6IHZvaWQge1xuICAgIHRoaXMucGFnZUluZGV4ID0gZS5wYWdlSW5kZXg7XG4gICAgdGhpcy5wYWdlU2l6ZSA9IGUucGFnZVNpemU7XG4gICAgaWYgKHRoaXMuc2VydmVyU2lkZVBhZ2luYXRpb24pIHtcbiAgICAgIHRoaXMucGFnZUNoYW5nZS5lbWl0KHsgcGFnZUluZGV4OiB0aGlzLnBhZ2VJbmRleCwgcGFnZVNpemU6IHRoaXMucGFnZVNpemUgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuYXBwbHlQYWdpbmF0aW9uKCk7XG4gIH1cblxuICBvblBhZ2VTaXplQ2hhbmdlKHNpemU6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucGFnZVNpemUgPSBzaXplO1xuICAgIHRoaXMucGFnZUluZGV4ID0gMDtcbiAgICBpZiAodGhpcy5zZXJ2ZXJTaWRlUGFnaW5hdGlvbikge1xuICAgICAgdGhpcy5wYWdlQ2hhbmdlLmVtaXQoeyBwYWdlSW5kZXg6IHRoaXMucGFnZUluZGV4LCBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5hcHBseVBhZ2luYXRpb24oKTtcbiAgfVxuXG4gIG9uUmVtb3ZlQ2hpcChjaGlwOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmNoaXBzID0gdGhpcy5jaGlwcy5maWx0ZXIoYyA9PiBjICE9PSBjaGlwKTtcbiAgICB0aGlzLmZpbHRlckFwcGxpZWQgPSB0aGlzLmNoaXBzLmxlbmd0aCA+IDA7XG4gICAgLy8gRW1pdCBldmVudCB0byBwYXJlbnQgY29tcG9uZW50IChzYW1lIHBhdHRlcm4gYXMgZXhlY3V0aW9uIHRhYilcbiAgICB0aGlzLnJlbW92ZUNoaXAuZW1pdChjaGlwKTtcbiAgfVxuXG4gIG9uQ2xlYXJBbGxDaGlwcygpOiB2b2lkIHtcbiAgICB0aGlzLmNoaXBzID0gW107XG4gICAgdGhpcy5maWx0ZXJBcHBsaWVkID0gZmFsc2U7XG4gICAgLy8gUmVzZXQgdGhlIGR5bmFtaWMtZmlsdGVyIGNvbXBvbmVudCBmb3JtIHdoZW4gY2xlYXJpbmcgYWxsIGNoaXBzXG4gICAgaWYgKHRoaXMuZHluYW1pY0ZpbHRlckNvbXBvbmVudCkge1xuICAgICAgdGhpcy5keW5hbWljRmlsdGVyQ29tcG9uZW50LnJlc2V0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVBhZ2luYXRpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VydmVyU2lkZVBhZ2luYXRpb24pIHtcbiAgICAgIC8vIFNlcnZlciBtb2RlOiBwYXJlbnQgc3VwcGxpZXMgYWxyZWFkeS1wYWdpbmF0ZWQgZGF0YVxuICAgICAgdGhpcy5wYWdlZFJvd3MgPSBbLi4udGhpcy5maWx0ZXJlZFJvd3NdO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzdGFydCA9IHRoaXMucGFnZUluZGV4ICogdGhpcy5wYWdlU2l6ZTtcbiAgICBjb25zdCBlbmQgPSBzdGFydCArIHRoaXMucGFnZVNpemU7XG4gICAgdGhpcy5wYWdlZFJvd3MgPSB0aGlzLmZpbHRlcmVkUm93cy5zbGljZShzdGFydCwgZW5kKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwVmlzaWJpbGl0eUNvbHVtbnMoKTogQXJyYXk8eyBpZDogc3RyaW5nOyBsYWJlbDogc3RyaW5nIH0+IHtcbiAgICByZXR1cm4gKHRoaXMuY29sdW1ucyB8fCBbXSlcbiAgICAgIC5maWx0ZXIoYyA9PiBjLmlzRGVmYXVsdCA9PT0gZmFsc2UpXG4gICAgICAubWFwKGMgPT4gKHsgaWQ6IGMuZmllbGRJZCwgbGFiZWw6IGMuZmllbGROYW1lIHx8IGMuZmllbGRJZCB9KSk7XG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZURhdGUoZDogYW55KTogbnVtYmVyIHwgbnVsbCB7XG4gICAgaWYgKCFkKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCB0cyA9IERhdGUucGFyc2UoZCk7XG4gICAgcmV0dXJuIGlzTmFOKHRzKSA/IG51bGwgOiB0cztcbiAgfVxuXG4gIHByaXZhdGUgcGFzc0ZpbHRlcnMoZmlsdGVyczogYW55LCByb3c6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmICghZmlsdGVycykgcmV0dXJuIHRydWU7XG4gICAgaWYgKGZpbHRlcnMuc3RhdHVzICYmIEFycmF5LmlzQXJyYXkoZmlsdGVycy5zdGF0dXMpICYmIGZpbHRlcnMuc3RhdHVzLmxlbmd0aCkge1xuICAgICAgaWYgKCFmaWx0ZXJzLnN0YXR1cy5pbmNsdWRlcyhyb3cuc3RhdHVzKSkgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoZmlsdGVycy5wcmlvcml0eSAmJiBBcnJheS5pc0FycmF5KGZpbHRlcnMucHJpb3JpdHkpICYmIGZpbHRlcnMucHJpb3JpdHkubGVuZ3RoKSB7XG4gICAgICBpZiAoIWZpbHRlcnMucHJpb3JpdHkuaW5jbHVkZXMocm93LnByaW9yaXR5TmFtZSkpIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGZpbHRlcnMudGVzdFR5cGUgJiYgQXJyYXkuaXNBcnJheShmaWx0ZXJzLnRlc3RUeXBlKSAmJiBmaWx0ZXJzLnRlc3RUeXBlLmxlbmd0aCkge1xuICAgICAgaWYgKCFmaWx0ZXJzLnRlc3RUeXBlLmluY2x1ZGVzKHJvdy50ZXN0VHlwZSkpIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGZpbHRlcnMuY3JlYXRlZF9kYXRlICYmIChmaWx0ZXJzLmNyZWF0ZWRfZGF0ZS5zdGFydCB8fCBmaWx0ZXJzLmNyZWF0ZWRfZGF0ZS5lbmQpKSB7XG4gICAgICBjb25zdCBzdGFydFRzID0gdGhpcy5ub3JtYWxpemVEYXRlKGZpbHRlcnMuY3JlYXRlZF9kYXRlLnN0YXJ0KTtcbiAgICAgIGNvbnN0IGVuZFRzID0gdGhpcy5ub3JtYWxpemVEYXRlKGZpbHRlcnMuY3JlYXRlZF9kYXRlLmVuZCk7XG4gICAgICBjb25zdCByb3dUcyA9IHRoaXMubm9ybWFsaXplRGF0ZShyb3cuY3JlYXRlZEF0KTtcbiAgICAgIGlmIChyb3dUcyAhPSBudWxsKSB7XG4gICAgICAgIGlmIChzdGFydFRzICE9IG51bGwgJiYgcm93VHMgPCBzdGFydFRzKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmIChlbmRUcyAhPSBudWxsICYmIHJvd1RzID4gZW5kVHMpIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICB0cmFja0J5VGVtcGxhdGVSZWYoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgdHJhY2tCeURyb3Bkb3duVGVtcGxhdGVSZWYoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgdHJhY2tCeVNlbGVjdERyb3Bkb3duVGVtcGxhdGVSZWYoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgLy8gRXhwb3J0IG1vZGFsIHN0YXRlXG4gIGlzRXhwb3J0TW9kYWxPcGVuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgZXhwb3J0Q29kZUNsaWNrKCk6IHZvaWQge1xuICAgIC8vIEdldCBzZWxlY3RlZCBpdGVtc1xuICAgIGNvbnN0IHNlbGVjdGVkSXRlbXMgPSB0aGlzLmN1cnJlbnRTZWxlY3RlZEl0ZW1zO1xuICAgIGlmIChzZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gRW1pdCBldmVudCB0byBwYXJlbnQgdG8gaGFuZGxlIHRoZSBjYXNlIHdoZW4gbm8gaXRlbXMgYXJlIHNlbGVjdGVkXG4gICAgICB0aGlzLm9uRXhwb3J0Q2xpY2suZW1pdCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmlzRXhwb3J0TW9kYWxPcGVuID0gdHJ1ZTtcbiAgfVxuXG4gIGNsb3NlRXhwb3J0TW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5pc0V4cG9ydE1vZGFsT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgb25FeHBvcnRNb2RhbEV4cG9ydChyZXN1bHQ6IHsgdHlwZTogJ2xvY2FsJyB8ICdlbWFpbCc7IGVtYWlscz86IHN0cmluZ1tdOyBmcmFtZXdvcms6ICdXRUJEUklWRVJfSU8nIHwgJ1NFTEVOSVVNX0pBVkEnIH0pOiB2b2lkIHtcbiAgICB0aGlzLmlzRXhwb3J0TW9kYWxPcGVuID0gZmFsc2U7XG4gICAgLy8gRW1pdCBldmVudCB0byBwYXJlbnQgd2l0aCBleHBvcnQgcmVzdWx0XG4gICAgdGhpcy5vbkV4cG9ydENsaWNrLmVtaXQoe1xuICAgICAgdHlwZTogcmVzdWx0LnR5cGUsXG4gICAgICBlbWFpbHM6IHJlc3VsdC5lbWFpbHMsXG4gICAgICBmcmFtZXdvcms6IHJlc3VsdC5mcmFtZXdvcmssXG4gICAgICBzZWxlY3RlZEl0ZW1zOiB0aGlzLmN1cnJlbnRTZWxlY3RlZEl0ZW1zXG4gICAgfSk7XG4gIH1cblxuICBnZXQgc2VsZWN0ZWRDYXNlc0ZvckV4cG9ydCgpOiBBcnJheTx7IGlkPzogbnVtYmVyOyBuYW1lPzogc3RyaW5nIH0+IHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50U2VsZWN0ZWRJdGVtcy5tYXAoaXRlbSA9PiAoe1xuICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICBuYW1lOiBpdGVtLm5hbWUgfHwgaXRlbS50aXRsZSB8fCAnVW5uYW1lZCdcbiAgICB9KSk7XG4gIH1cbiAgZ2V0IGFycm93Q2xhc3NlcygpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJhc2VDbGFzc2VzID0gW1xuICAgICAgJ2NxYS13LTQnLFxuICAgICAgJ2NxYS1oLTQnLFxuICAgICAgJ2NxYS1yZWxhdGl2ZScsXG4gICAgICAnY3FhLXRyYW5zaXRpb24tdHJhbnNmb3JtJ1xuICAgIF07XG5cbiAgICBpZiAodGhpcy5zaG93RmlsdGVyUGFuZWwpIHtcbiAgICAgIGJhc2VDbGFzc2VzLnB1c2goJ2NxYS1yb3RhdGUtMTgwJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJhc2VDbGFzc2VzLmpvaW4oJyAnKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNxYS11aS1yb290XCI+XG4gIDxkaXYgY2xhc3M9XCJjcWEtdy1mdWxsIGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtcmVsYXRpdmVcIj5cbiAgICA8ZGl2IFtjbGFzc109XCIhc2hvd1NlYXJjaEJhciA/ICdjcWEtanVzdGlmeS1lbmQnIDogJ2NxYS1qdXN0aWZ5LWJldHdlZW4nXCIgY2xhc3M9XCJjcWEtdy1mdWxsIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0zIGNxYS1mbGV4LXdyYXAgY3FhLW1iLTNcIj5cbiAgICAgIDxjcWEtc2VhcmNoLWJhclxuICAgICAgICAqbmdJZj1cInNob3dTZWFyY2hCYXJcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwic2VhcmNoUGxhY2Vob2xkZXJcIlxuICAgICAgICBbdmFsdWVdPVwic2VhcmNoVmFsdWVcIlxuICAgICAgICBbc2hvd0NsZWFyXT1cInNob3dDbGVhclwiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJ2YWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgKHNlYXJjaCk9XCJzZWFyY2goJGV2ZW50KVwiXG4gICAgICAgIChjbGVhcmVkKT1cImNsZWFyZWQoKVwiXG4gICAgICA+PC9jcWEtc2VhcmNoLWJhcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMiBjcWEtZmxleC13cmFwXCI+XG4gICAgICAgIDxjcWEtYnV0dG9uXG4gICAgICAgICpuZ0lmPVwic2hvd0V4cG9ydEJ1dHRvblwiXG4gICAgICAgIHZhcmlhbnQ9XCJncmV5LXNvbGlkXCJcbiAgICAgICAgaWNvbj1cIm9wZW5faW5fbmV3XCJcbiAgICAgICAgW3RleHRdPVwiaXNFeHBvcnRpbmcgPyAnRXhwb3J0aW5nLi4uJyA6ICdFeHBvcnQnXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzRXhwb3J0aW5nXCJcbiAgICAgICAgKGNsaWNrZWQpPVwiZXhwb3J0Q29kZUNsaWNrKClcIlxuICAgICAgPlxuICAgICAgICA8c3Bhbj57eyBpc0V4cG9ydGluZyA/ICdFeHBvcnRpbmcuLi4nIDogJ0V4cG9ydCcgfX08L3NwYW4+XG4gICAgICA8L2NxYS1idXR0b24+XG4gICAgICBcbiAgICAgIDwhLS0gRXhwb3J0IENvZGUgTW9kYWwgLS0+XG4gICAgICA8Y3FhLWV4cG9ydC1jb2RlLW1vZGFsXG4gICAgICAgICpuZ0lmPVwic2hvd0V4cG9ydEJ1dHRvblwiXG4gICAgICAgIFtpc09wZW5dPVwiaXNFeHBvcnRNb2RhbE9wZW5cIlxuICAgICAgICBbY2FzZXNdPVwic2VsZWN0ZWRDYXNlc0ZvckV4cG9ydFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgIChjbG9zZU1vZGFsKT1cImNsb3NlRXhwb3J0TW9kYWwoKVwiXG4gICAgICAgIChleHBvcnQpPVwib25FeHBvcnRNb2RhbEV4cG9ydCgkZXZlbnQpXCI+XG4gICAgICA8L2NxYS1leHBvcnQtY29kZS1tb2RhbD5cbiAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRyb3Bkb3duVGVtcGxhdGUgb2Ygb3RoZXJEcm9wRG93bkJ1dHRvbnM7IHRyYWNrQnk6IHRyYWNrQnlEcm9wZG93blRlbXBsYXRlUmVmXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRyb3Bkb3duVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc2VsZWN0RHJvcGRvd25UZW1wbGF0ZSBvZiBvdGhlclNlbGVjdERyb3BEb3duQnV0dG9uczsgdHJhY2tCeTogdHJhY2tCeVNlbGVjdERyb3Bkb3duVGVtcGxhdGVSZWZcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2VsZWN0RHJvcGRvd25UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgXG4gICAgICAgIDxjcWEtYnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJzaG93RmlsdGVyQnV0dG9uXCJcbiAgICAgICAgICB2YXJpYW50PVwiZ3JleS1zb2xpZFwiXG4gICAgICAgICAgaWNvbj1cImFkZFwiXG4gICAgICAgICAgKGNsaWNrZWQpPVwidG9nZ2xlRmlsdGVyKClcIlxuICAgICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTFcIj5cbiAgICAgICAgICBGaWx0ZXIgICAgICAgICAgXG4gICAgICAgICAgIDxkaXYgW2NsYXNzXT1cImFycm93Q2xhc3Nlc1wiPlxuICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICBjbGFzcz1cImNxYS13LTIgY3FhLWgtMSBjcWEtYWJzb2x1dGUgY3FhLWxlZnQtWzRweF0gY3FhLXRvcC1bNnB4XVwiXG4gICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgOCA0XCJcbiAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICBkPVwiTTAgMEw0IDRMOCAwXCJcbiAgICAgICAgICAgICAgICBzdHJva2U9XCIjMEIwQjBDXCJcbiAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzXCJcbiAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2NxYS1idXR0b24+XG4gICAgICAgIDxjcWEtY29sdW1uLXZpc2liaWxpdHlcbiAgICAgICAgICAqbmdJZj1cInNob3dTZXR0aW5nc0J1dHRvblwiXG4gICAgICAgICAgW2NvbHVtbnNdPVwidmlzaWJpbGl0eUNvbHVtbnNcIlxuICAgICAgICAgIFtjb2x1bW5WaXNpYmlsaXR5XT1cImNvbHVtblZpc2liaWxpdHlcIlxuICAgICAgICAgIFtzZWxlY3RlZEF1dG9SZWZyZXNoSW50ZXJ2YWxdPVwic2VsZWN0ZWRBdXRvUmVmcmVzaEludGVydmFsXCJcbiAgICAgICAgICAoY29sdW1uVmlzaWJpbGl0eUNoYW5nZSk9XCJvbkNvbHVtblZpc2liaWxpdHlDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgKGF1dG9SZWZyZXNoQ2hhbmdlKT1cIm9uQXV0b1JlZnJlc2hDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgID48L2NxYS1jb2x1bW4tdmlzaWJpbGl0eT5cbiAgICAgICAgPGNxYS1idXR0b25cbiAgICAgICAgICAqbmdJZj1cInNob3dBdXRvUmVmcmVzaEJ1dHRvblwiXG4gICAgICAgICAgdmFyaWFudD1cImdyZXktc29saWRcIlxuICAgICAgICAgIGljb249XCJyZWZyZXNoXCJcbiAgICAgICAgICAoY2xpY2tlZCk9XCJoYW5kbGVSZWZyZXNoQ2xpY2soKVwiXG4gICAgICAgICAgW3Rvb2x0aXBdPVwiJ1JlZnJlc2gnXCJcbiAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJiZWxvd1wiXG4gICAgICAgID48L2NxYS1idXR0b24+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGJ1dHRvblRlbXBsYXRlIG9mIG90aGVyQnV0dG9uczsgdHJhY2tCeTogdHJhY2tCeVRlbXBsYXRlUmVmXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJ1dHRvblRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8Y3FhLXNlZ21lbnQtY29udHJvbFxuICAgICAgICAgICpuZ0lmPVwic2hvd1ZpZXdNb2RlVG9nZ2xlXCJcbiAgICAgICAgICBzaXplPVwibGdcIlxuICAgICAgICAgIFtzZWdtZW50c109XCJ2aWV3TW9kZVNlZ21lbnRzXCJcbiAgICAgICAgICBbdmFsdWVdPVwidmlld01vZGVcIlxuICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvblZpZXdNb2RlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICA+PC9jcWEtc2VnbWVudC1jb250cm9sPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8Y3FhLXNlbGVjdGVkLWZpbHRlcnMgXG4gICAgICBbZmlsdGVyQXBwbGllZF09XCJmaWx0ZXJBcHBsaWVkXCJcbiAgICAgIFtjaGlwc109XCJjaGlwc1wiXG4gICAgICAocmVtb3ZlQ2hpcCk9XCJvblJlbW92ZUNoaXAoJGV2ZW50KVwiXG4gICAgICAoY2xlYXJBbGwpPVwib25DbGVhckFsbENoaXBzKClcIlxuICAgICAgKG9uQ2xlYXJBbGwpPVwib25DbGVhckFsbC5lbWl0KClcIlxuICAgID5cbiAgICA8L2NxYS1zZWxlY3RlZC1maWx0ZXJzPlxuXG4gICAgPGNxYS1keW5hbWljLWZpbHRlclxuICAgICAgKm5nSWY9XCJzaG93RmlsdGVyUGFuZWxcIlxuICAgICAgW2NvbmZpZ109XCJmaWx0ZXJDb25maWdcIlxuICAgICAgW21vZGVsXT1cImZpbHRlck1vZGVsXCJcbiAgICAgIFtzaG93RmlsdGVyUGFuZWxdPVwic2hvd0ZpbHRlclBhbmVsXCJcbiAgICAgIChmaWx0ZXJzQ2hhbmdlZCk9XCJvbkZpbHRlcnNDaGFuZ2VkKCRldmVudClcIlxuICAgICAgKGZpbHRlcnNBcHBsaWVkKT1cIm9uRmlsdGVyc0FwcGxpZWQoJGV2ZW50KVwiXG4gICAgICAob25BcHBseUZpbHRlckNsaWNrKT1cIm9uQXBwbHlGaWx0ZXJDbGljay5lbWl0KCRldmVudClcIlxuICAgICAgKG9uUmVzZXRGaWx0ZXJDbGljayk9XCJoYW5kbGVSZXNldEZpbHRlckNsaWNrKClcIlxuICAgID5cbiAgICA8L2NxYS1keW5hbWljLWZpbHRlcj5cblxuICAgIDxkaXYgY2xhc3M9XCJjcWEtcm91bmRlZC1bN3B4XSBjcWEtb3ZlcmZsb3ctaGlkZGVuIGNxYS1ib3JkZXItdCBjcWEtYm9yZGVyLWwgY3FhLWJvcmRlci1yIGNxYS1ib3JkZXItZ3JleS0yMDAgY3FhLXJlbGF0aXZlIGNxYS1vdmVyZmxvdy14LWF1dG9cIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoaXNUYWJsZUxvYWRpbmcgfHwgaXNUYWJsZURhdGFMb2FkaW5nKSB8fCAoIWlzRW1wdHlTdGF0ZSAmJiBwYWdlZFJvd3MgJiYgcGFnZWRSb3dzLmxlbmd0aCA+IDApOyBlbHNlIHN0b3J5RW1wdHlUcGxcIj5cbiAgICAgICAgPGFwcC1keW5hbWljLXRhYmxlXG4gICAgICAgICAgW2NvbHVtbnNdPVwiY29tcHV0ZWRDb2x1bW5zXCJcbiAgICAgICAgICBbZGF0YV09XCJwYWdlZFJvd3NcIlxuICAgICAgICAgIFtyb3dTZWxlY3RhYmxlXT1cInJvd1NlbGVjdGFibGVcIlxuICAgICAgICAgIFtlbmFibGVMb2NhbFNvcnRdPVwiZW5hYmxlTG9jYWxTb3J0XCJcbiAgICAgICAgICBbaXNUYWJsZUxvYWRpbmddPVwiaXNUYWJsZUxvYWRpbmdcIlxuICAgICAgICAgIFtpc1RhYmxlRGF0YUxvYWRpbmddPVwiaXNUYWJsZURhdGFMb2FkaW5nXCJcbiAgICAgICAgICBbY2VsbEpzb25QYXRoR2V0dGVyXT1cImNlbGxKc29uUGF0aEdldHRlclwiXG4gICAgICAgICAgW29uSnNvblBhdGhDb3BpZWRIYW5kbGVyXT1cIm9uSnNvblBhdGhDb3BpZWRIYW5kbGVyXCJcbiAgICAgICAgICAoc29ydENoYW5nZSk9XCJzb3J0Q2hhbmdlLmVtaXQoJGV2ZW50KVwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZW1wdHlUYWJsZVRwbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLXB5LThcIj5cbiAgICAgICAgICAgICAgPGltZyBzcmM9XCIvYXNzZXRzL2lsbHVzdHJhdGlvbnMvZW1wdHktc3RhdGUuc3ZnXCIgYWx0PVwiTm8gZGF0YVwiIGNsYXNzPVwiY3FhLXctMzIgY3FhLWgtMzIgY3FhLW1iLTRcIiAvPlxuICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjcWEtdGV4dC1sZyBjcWEtZm9udC1zZW1pYm9sZCBjcWEtbWItMlwiPk5vIHRlc3QgY2FzZXM8L2gzPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImNxYS10ZXh0LXNtIGNxYS10ZXh0LW5ldXRyYWwtNTAwIGNxYS1tYi00XCI+VHJ5IGFkanVzdGluZyBmaWx0ZXJzIG9yIGNyZWF0ZSBhIG5ldyB0ZXN0IGNhc2UuPC9wPlxuICAgICAgICAgICAgICA8Y3FhLWJ1dHRvbiB2YXJpYW50PVwiZmlsbGVkXCIgKGNsaWNrZWQpPVwidG9nZ2xlRmlsdGVyKClcIj5TaG93IEZpbHRlcnM8L2NxYS1idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2FwcC1keW5hbWljLXRhYmxlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjc3RvcnlFbXB0eVRwbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1wLTYgY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgPGNxYS1lbXB0eS1zdGF0ZVxuICAgICAgICAgICAgKm5nSWY9XCJpc0VtcHR5U3RhdGVcIlxuICAgICAgICAgICAgW3RpdGxlXT1cImVtcHR5U3RhdGVDb25maWcudGl0bGVcIlxuICAgICAgICAgICAgW2Rlc2NyaXB0aW9uXT1cImVtcHR5U3RhdGVDb25maWcuZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgW2ltYWdlVXJsXT1cImVtcHR5U3RhdGVDb25maWcuaW1hZ2VVcmxcIlxuICAgICAgICAgICAgW2FjdGlvbnNdPVwiZW1wdHlTdGF0ZUNvbmZpZy5hY3Rpb25zXCJcbiAgICAgICAgICAgIChhY3Rpb25DbGljayk9XCJvbkVtcHR5QWN0aW9uKCRldmVudClcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L2NxYS1lbXB0eS1zdGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPC9kaXY+XG5cbiAgICA8Y3FhLXBhZ2luYXRpb25cbiAgICAgIFt0b3RhbEVsZW1lbnRzXT1cInNlcnZlclNpZGVQYWdpbmF0aW9uID8gdG90YWxFbGVtZW50cyA6IGZpbHRlcmVkUm93cy5sZW5ndGhcIlxuICAgICAgW3BhZ2VJbmRleF09XCJwYWdlSW5kZXhcIlxuICAgICAgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcbiAgICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnZVNpemVPcHRpb25zXCJcbiAgICAgIFtwYWdlU2l6ZU1lbnVEaXJlY3Rpb25dPVwicGFnZVNpemVNZW51RGlyZWN0aW9uXCJcbiAgICAgIFtwYWdlSXRlbUNvdW50XT1cInBhZ2VkUm93cy5sZW5ndGhcIlxuICAgICAgKHBhZ2luYXRlKT1cIm9uUGFnaW5hdGUoJGV2ZW50KVwiXG4gICAgICAocGFnZVNpemVDaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9jcWEtcGFnaW5hdGlvbj5cblxuICAgIDxkaXYgKm5nSWY9XCJhbnlSb3dTZWxlY3RlZFwiIGNsYXNzPVwiY3FhLWFic29sdXRlIGNxYS1ib3R0b20tWzE4Ljc1cHhdIGNxYS1sZWZ0LVs1MCVdIGNxYS10cmFuc2xhdGUteC1bLTUwJV0gY3FhLXctZnVsbCBsZzpjcWEtbWF4LXctWzY4JV0gY3FhLXNtOm1heC13LVs3NSVdIGNxYS1tYXgtdy1bOTAlXSBjcWEtei1bMV1cIiA+XG4gICAgICA8Y3FhLXRhYmxlLWFjdGlvbi10b29sYmFyXG4gICAgICAgIFtzZWxlY3RlZEl0ZW1zXT1cInNlbGVjdGVkSXRlbXMgJiYgc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwID8gc2VsZWN0ZWRJdGVtcyA6IGN1cnJlbnRTZWxlY3RlZEl0ZW1zXCJcbiAgICAgICAgW2FjdGlvbnNdPVwiYWN0aW9uc1wiXG4gICAgICAgIFtzaG93U2VsZWN0QWxsXT1cInNob3dTZWxlY3RBbGxJblRvb2xiYXJcIlxuICAgICAgICBbYWxsU2VsZWN0ZWRdPVwiYWxsU2VsZWN0ZWRJblRvb2xiYXJcIlxuICAgICAgICBbc2hvd0Rpc21pc3NdPVwic2hvd0Rpc21pc3NJblRvb2xiYXJcIlxuICAgICAgICAoYWN0aW9uQ2xpY2spPVwiYWN0aW9uQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgIChzZWxlY3RBbGxDaGFuZ2UpPVwib25Ub29sYmFyU2VsZWN0QWxsKCRldmVudClcIlxuICAgICAgICAoZGlzbWlzcyk9XCJvblRvb2xiYXJEaXNtaXNzKClcIlxuICAgICAgPjwvY3FhLXRhYmxlLWFjdGlvbi10b29sYmFyPlxuICAgIDwvZGl2PlxuICAgIFxuICA8L2Rpdj5cbjwvZGl2PlxuXG4iXX0=
|
|
769
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtdGVtcGxhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90ZW1wbGF0ZXMvdGFibGUtdGVtcGxhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90ZW1wbGF0ZXMvdGFibGUtdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFLWix1QkFBdUIsRUFHdkIsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBcUIsc0JBQXNCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUsvRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFTN0UsTUFBTSxPQUFPLHNCQUFzQjtJQWdMakMsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUEvSzFDLG9CQUFvQjtRQUNYLHNCQUFpQixHQUFXLG1CQUFtQixDQUFDO1FBQ2hELGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLGNBQVMsR0FBWSxJQUFJLENBQUM7UUFDMUIsa0JBQWEsR0FBWSxJQUFJLENBQUM7UUFDOUIscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBQ2xDLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQ3RDLHFCQUFxQjtRQUNYLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUM1QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUE2SCxDQUFDO1FBQ3hLLGlCQUFpQjtRQUNQLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDN0MsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUM5QyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN0QyxlQUFVLEdBQUcs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O2dCQUdHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFFRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBRUcsb0JBQW9CO3NCQUE1QixLQUFLO2dCQVlJLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLHNCQUFzQjtzQkFBL0IsTUFBTTtnQkFDRyx5QkFBeUI7c0JBQWxDLE1BQU07Z0JBT0csZUFBZTtzQkFBeEIsTUFBTTtnQkFFRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBRUcsV0FBVztzQkFBcEIsTUFBTTtnQkFFRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQzRCLHNCQUFzQjtzQkFBeEQsU0FBUzt1QkFBQyxzQkFBc0I7Z0JBMkJwQixnQkFBZ0I7c0JBQTVCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IER5bmFtaWNGaWx0ZXJJdGVtLCBEeW5hbWljRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZmlsdGVycy9keW5hbWljLWZpbHRlci9keW5hbWljLWZpbHRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHluYW1pY1RhYmxlQ29sdW1uIH0gZnJvbSAnLi4vdGFibGUvZHluYW1pYy10YWJsZS9keW5hbWljLXRhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb2x1bW5WaXNpYmlsaXR5Q29uZmlnIH0gZnJvbSAnLi4vY29sdW1uLXZpc2liaWxpdHkvY29sdW1uLXZpc2liaWxpdHkuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlQWN0aW9uIH0gZnJvbSAnLi4vdGFibGUtYWN0aW9uLXRvb2xiYXIvdGFibGUtYWN0aW9uLXRvb2xiYXIuY29tcG9uZW50JztcbmltcG9ydCB7IEVtcHR5U3RhdGVDb25maWcgfSBmcm9tICcuLi9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IEVNUFRZX1NUQVRFX0lNQUdFUyB9IGZyb20gJy4uL2Fzc2V0cy9pbWFnZXMvaW1hZ2UtYXNzZXRzLmNvbnN0YW50cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS10YWJsZS10ZW1wbGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW10sXG4gIGhvc3Q6IHsgY2xhc3M6ICdjcWEtdWktcm9vdCcgfSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVUZW1wbGF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAvLyBTZWFyY2ggYmFyIGlucHV0c1xuICBASW5wdXQoKSBzZWFyY2hQbGFjZWhvbGRlcjogc3RyaW5nID0gJ1NlYXJjaCBjb21wb25lbnRzJztcbiAgQElucHV0KCkgc2VhcmNoVmFsdWU6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBzaG93Q2xlYXI6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBzaG93U2VhcmNoQmFyOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd0V4cG9ydEJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBpc0V4cG9ydGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICAvLyBTZWFyY2ggYmFyIG91dHB1dHNcbiAgQE91dHB1dCgpIG9uU2VhcmNoQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBvbkV4cG9ydENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx7IHR5cGU6ICdsb2NhbCcgfCAnZW1haWwnOyBlbWFpbHM/OiBzdHJpbmdbXTsgZnJhbWV3b3JrPzogJ1dFQkRSSVZFUl9JTycgfCAnU0VMRU5JVU1fSkFWQSc7IHNlbGVjdGVkSXRlbXM6IGFueVtdIH0gfCB2b2lkPigpO1xuICAvLyBGaWx0ZXIgb3V0cHV0c1xuICBAT3V0cHV0KCkgb25BcHBseUZpbHRlckNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBvblJlc2V0RmlsdGVyQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBvbkNsZWFyQWxsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgcmVtb3ZlQ2hpcCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8vIEZpbHRlciBpbnB1dHNcbiAgQElucHV0KCkgZmlsdGVyQ29uZmlnOiBEeW5hbWljRmlsdGVySXRlbVtdID0gW107XG4gIEBJbnB1dCgpIGZpbHRlck1vZGVsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gIEBJbnB1dCgpIHNob3dGaWx0ZXJQYW5lbDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93RmlsdGVyQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcblxuICAvLyBPdGhlciBidXR0b25zIGlucHV0IChhcnJheSBvZiBidXR0b24gdGVtcGxhdGVzL2NvbXBvbmVudHMpXG4gIEBJbnB1dCgpIG90aGVyQnV0dG9uczogVGVtcGxhdGVSZWY8YW55PltdID0gW107XG4gIFxuICAvLyBPdGhlciBkcm9wZG93biBidXR0b25zIGlucHV0IChhcnJheSBvZiBkcm9wZG93biBidXR0b24gdGVtcGxhdGVzL2NvbXBvbmVudHMpXG4gIEBJbnB1dCgpIG90aGVyRHJvcERvd25CdXR0b25zOiBUZW1wbGF0ZVJlZjxhbnk+W10gPSBbXTtcbiAgXG4gIC8vIE90aGVyIHNlbGVjdCBkcm9wZG93biBidXR0b25zIGlucHV0IChhcnJheSBvZiBzZWxlY3QgZHJvcGRvd24gYnV0dG9uIHRlbXBsYXRlcy9jb21wb25lbnRzKVxuICBASW5wdXQoKSBvdGhlclNlbGVjdERyb3BEb3duQnV0dG9uczogVGVtcGxhdGVSZWY8YW55PltdID0gW107XG4gIFxuICAvLyBMZWdhY3kgc2luZ2xlIGJ1dHRvbiBpbnB1dHMgKGRlcHJlY2F0ZWQsIGtlcHQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpXG4gIC8qKiBAZGVwcmVjYXRlZCBVc2Ugb3RoZXJCdXR0b25zIGFycmF5IGluc3RlYWQgKi9cbiAgQElucHV0KCkgb3RoZXJCdXR0b25MYWJlbDogc3RyaW5nID0gJ090aGVyIEJ1dHRvbic7XG4gIC8qKiBAZGVwcmVjYXRlZCBVc2Ugb3RoZXJCdXR0b25zIGFycmF5IGluc3RlYWQgKi9cbiAgQElucHV0KCkgb3RoZXJCdXR0b25WYXJpYW50OiAnZmlsbGVkJyB8ICdvdXRsaW5lZCcgfCAndGV4dCcgfCAnZWxldmF0ZWQnIHwgJ3RvbmFsJyB8ICdncmV5LXNvbGlkJyA9ICdmaWxsZWQnO1xuICAvKiogQGRlcHJlY2F0ZWQgVXNlIG90aGVyQnV0dG9ucyBhcnJheSBpbnN0ZWFkICovXG4gIEBJbnB1dCgpIHNob3dPdGhlckJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG4gIFxuICAvLyBBY3Rpb24gbWVudSBidXR0b24gKHRocmVlLWRvdCBtZW51IGluIHRhYmxlIHJvd3MpXG4gIEBJbnB1dCgpIHNob3dBY3Rpb25CdXR0b246IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8vIFNldHRpbmdzIGFuZCByZWZyZXNoIGJ1dHRvbnNcbiAgQElucHV0KCkgc2hvd1NldHRpbmdzQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd0F1dG9SZWZyZXNoQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcblxuICAvLyBWaWV3LW1vZGUgdG9nZ2xlIChMaXN0IHwgTW9kdWxhcikuIEhpZGRlbiBieSBkZWZhdWx0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LlxuICBASW5wdXQoKSBzaG93Vmlld01vZGVUb2dnbGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgdmlld01vZGU6ICdsaXN0JyB8ICdtb2R1bGFyJyA9ICdsaXN0JztcbiAgQElucHV0KCkgdmlld01vZGVMYWJlbHM6IHsgbGlzdDogc3RyaW5nOyBtb2R1bGFyOiBzdHJpbmcgfSA9IHsgbGlzdDogJ0xpc3QnLCBtb2R1bGFyOiAnTW9kdWxhcicgfTtcbiAgQE91dHB1dCgpIHZpZXdNb2RlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjwnbGlzdCcgfCAnbW9kdWxhcic+KCk7XG5cbiAgLy8gU3RhYmxlIHJlZmVyZW5jZSBmZWQgdG8gPGNxYS1zZWdtZW50LWNvbnRyb2wgW3NlZ21lbnRzXT4uIEEgZ2V0dGVyIGhlcmVcbiAgLy8gYWxsb2NhdGVzIGEgbmV3IGFycmF5IGVhY2ggQ0QgdGljaywgd2hpY2ggdGhlIHNlZ21lbnQgY29udHJvbCB0aGVuIHNlZXMgYXNcbiAgLy8gYSBjaGFuZ2VkIElucHV0IOKAlCBpdHMgdXBkYXRlSW5kaWNhdG9yIHJ1bnMgaW5zaWRlIGEgcXVldWVNaWNyb3Rhc2ssIHRoZVxuICAvLyB6b25lIHJlLXRpY2tzIHZpYSBvbk1pY3JvdGFza0VtcHR5LCBhbmQgdGhlIGxvb3AgcGVncyBDUFUgYXQgMTAwJSB3aXRoXG4gIC8vIEhUVFAgcmVxdWVzdHMgc3RhcnZlZC4gUmVidWlsdCBvbmx5IHdoZW4gdmlld01vZGVMYWJlbHMgYWN0dWFsbHkgY2hhbmdlcy5cbiAgdmlld01vZGVTZWdtZW50czogQXJyYXk8eyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nOyBpY29uPzogc3RyaW5nIH0+ID0gW1xuICAgIHsgbGFiZWw6ICdMaXN0JywgdmFsdWU6ICdsaXN0JywgaWNvbjogJ3ZpZXdfbGlzdCcgfSxcbiAgICB7IGxhYmVsOiAnTW9kdWxhcicsIHZhbHVlOiAnbW9kdWxhcicsIGljb246ICdmb2xkZXInIH0sXG4gIF07XG5cbiAgb25WaWV3TW9kZUNoYW5nZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgbmV4dCA9IHZhbHVlID09PSAnbW9kdWxhcicgPyAnbW9kdWxhcicgOiAnbGlzdCc7XG4gICAgaWYgKG5leHQgIT09IHRoaXMudmlld01vZGUpIHtcbiAgICAgIHRoaXMudmlld01vZGUgPSBuZXh0O1xuICAgICAgdGhpcy52aWV3TW9kZUNoYW5nZS5lbWl0KG5leHQpO1xuICAgIH1cbiAgfVxuXG4gIC8vIERhdGEgaW5wdXRcbiAgQElucHV0KCkgZGF0YTogYW55W10gPSBbXTtcblxuICAvLyBFbXB0eSBzdGF0ZSBpbnB1dHNcbiAgQElucHV0KCkgaXNFbXB0eVN0YXRlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVtcHR5U3RhdGVDb25maWc6IEVtcHR5U3RhdGVDb25maWcgPSB7XG4gICAgdGl0bGU6ICdObyBEYXRhIEF2YWlsYWJsZSBZZXQnLFxuICAgIGRlc2NyaXB0aW9uOiAnUnVuIG9yIHVwbG9hZCB5b3VyIGZpcnN0IHRlc3QgdG8gc2VlIHlvdXIgYW5hbHl0aWNzIGFuZCB0cmVuZHMgaGVyZS4gV2F0Y2ggeW91ciBxdWFsaXR5IG1ldHJpY3MgY29tZSB0byBsaWZlIHdpdGggcmVhbC10aW1lIGluc2lnaHRzLicsXG4gICAgaW1hZ2VVcmw6IEVNUFRZX1NUQVRFX0lNQUdFUy5EQVNIQk9BUkQsXG4gICAgYWN0aW9uczogW3sgbGFiZWw6ICdSdW4gVGVzdCBTdWl0ZScsIHZhcmlhbnQ6ICdmaWxsZWQnIH1dLFxuICB9O1xuXG4gIC8vIEFjdGlvbiBiYXIgaW5wdXRzXG4gIEBJbnB1dCgpIGFjdGlvbnM6IFRhYmxlQWN0aW9uW10gPSBbXG4gICAgeyBcbiAgICAgIGlkOiAnZGVsZXRlJywgXG4gICAgICBsYWJlbDogJ0RlbGV0ZScsIFxuICAgICAgaWNvbjogJ2RlbGV0ZScsIFxuICAgICAgdG9vbHRpcDogJ0RlbGV0ZSBzZWxlY3RlZCcsXG4gICAgICBvbkNsaWNrOiAoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnRGVsZXRlIGFjdGlvbiBjbGlja2VkOicsIGNvbnRleHQpO1xuICAgICAgfVxuICAgIH0sXG4gICAgeyBcbiAgICAgIGlkOiAnZWRpdCcsIFxuICAgICAgbGFiZWw6ICdFZGl0JywgXG4gICAgICBpY29uOiAnZWRpdCcsIFxuICAgICAgdG9vbHRpcDogJ0VkaXQgc2VsZWN0ZWQnLFxuICAgICAgb25DbGljazogKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ0VkaXQgYWN0aW9uIGNsaWNrZWQ6JywgY29udGV4dCk7XG4gICAgICB9XG4gICAgfSxcbiAgICB7IFxuICAgICAgaWQ6ICdhZGQtdGFnJywgXG4gICAgICBsYWJlbDogJ0FkZCBUYWcnLCBcbiAgICAgIGljb246ICdsb2NhbF9vZmZlcicsIFxuICAgICAgdG9vbHRpcDogJ0FkZCB0YWdzJyxcbiAgICAgIG9uQ2xpY2s6IChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdBZGQgdGFnIGFjdGlvbiBjbGlja2VkOicsIGNvbnRleHQpO1xuICAgICAgfVxuICAgIH0sXG4gICAgeyBcbiAgICAgIGlkOiAncmVtb3ZlLXRhZycsIFxuICAgICAgbGFiZWw6ICdSZW1vdmUgVGFnJywgXG4gICAgICBpY29uOiAnbGFiZWxfb2ZmJywgXG4gICAgICB0b29sdGlwOiAnUmVtb3ZlIHRhZ3MnLFxuICAgICAgb25DbGljazogKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ1JlbW92ZSB0YWcgYWN0aW9uIGNsaWNrZWQ6JywgY29udGV4dCk7XG4gICAgICB9XG4gICAgfSxcbiAgXTtcblxuICAvLyBDaGlwcyBpbnB1dHNcbiAgQElucHV0KCkgY2hpcHM6IEFycmF5PHsga2V5Pzogc3RyaW5nOyBsYWJlbD86IHN0cmluZzsgdGV4dDogc3RyaW5nOyBmdWxsVGV4dD86IHN0cmluZzsgaGFzTW9yZT86IGJvb2xlYW4gfT4gPSBbXTtcbiAgQElucHV0KCkgZmlsdGVyQXBwbGllZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIFRhYmxlIGlucHV0c1xuICBASW5wdXQoKSBjb2x1bW5zOiBEeW5hbWljVGFibGVDb2x1bW5bXSA9IFtdO1xuICBASW5wdXQoKSByb3dTZWxlY3RhYmxlPzogKHJvdzogYW55KSA9PiBib29sZWFuO1xuICBASW5wdXQoKSBzZWxlY3RlZEF1dG9SZWZyZXNoSW50ZXJ2YWw6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIHBhZ2VJbmRleDogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgcGFnZVNpemU6IG51bWJlciA9IDEwO1xuICBASW5wdXQoKSBwYWdlU2l6ZU9wdGlvbnM6IG51bWJlcltdID0gWzEwLCAyMCwgNDAsIDYwLCA4MF07XG4gIEBJbnB1dCgpIHBhZ2VTaXplTWVudURpcmVjdGlvbjogJ2F1dG8nIHwgJ3VwJyB8ICdkb3duJyA9ICdhdXRvJztcbiAgLy8gU2VydmVyLXNpZGUgcGFnaW5hdGlvbiBjb250cm9sc1xuICBASW5wdXQoKSBzZXJ2ZXJTaWRlUGFnaW5hdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSB0b3RhbEVsZW1lbnRzOiBudW1iZXIgPSAwO1xuICBAT3V0cHV0KCkgcGFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBwYWdlSW5kZXg6IG51bWJlcjsgcGFnZVNpemU6IG51bWJlciB9PigpO1xuICAvKipcbiAgICogV2hlbiBmYWxzZSwgaGVhZGVyIHNvcnQgZG9lcyBub3QgcmVvcmRlciByb3dzIGxvY2FsbHkgKHVzZSB3aXRoIHNlcnZlclNpZGVQYWdpbmF0aW9uICsgc29ydENoYW5nZSkuXG4gICAqIERlZmF1bHQgdHJ1ZSBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS5cbiAgICovXG4gIEBJbnB1dCgpIGVuYWJsZUxvY2FsU29ydDogYm9vbGVhbiA9IHRydWU7XG4gIEBPdXRwdXQoKSBzb3J0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgZmllbGRJZDogc3RyaW5nO1xuICAgIGZpZWxkVmFsdWU/OiBzdHJpbmc7XG4gICAgZGlyZWN0aW9uOiAnYXNjJyB8ICdkZXNjJyB8IG51bGw7XG4gIH0+KCk7XG4gIC8vIExvYWRlciBjb250cm9scyAocGFzc2VkIGRvd24gdG8gZHluYW1pYyB0YWJsZSlcbiAgQElucHV0KCkgaXNUYWJsZUxvYWRpbmc/OiBib29sZWFuO1xuICBASW5wdXQoKSBpc1RhYmxlRGF0YUxvYWRpbmc/OiBib29sZWFuO1xuICAvLyBCYWNrd2FyZC1jb21wYXRpYmlsaXR5IGZsYWc7IGlmIHByb3ZpZGVkLCBkeW5hbWljIHRhYmxlIHdpbGwgdXNlIGl0IHdoZW4gc3BlY2lmaWMgZmxhZ3MgYXJlIHVuZGVmaW5lZFxuXG4gIC8vIE9wdGlvbmFsIGdldHRlciBmb3IgSlNPTiBwYXRoIHBlciBjZWxsLiBXaGVuIHByb3ZpZGVkLCBkb3VibGUtY2xpY2tpbmcgYSBjZWxsIGNvcGllcyB0aGUgcGF0aC5cbiAgQElucHV0KCkgY2VsbEpzb25QYXRoR2V0dGVyPzogKHJvd0luZGV4OiBudW1iZXIsIGNvbElkOiBzdHJpbmcsIHJvdzogYW55KSA9PiBzdHJpbmc7XG5cbiAgLy8gT3B0aW9uYWwgaGFuZGxlciBjYWxsZWQgd2hlbiBhIEpTT04gcGF0aCBpcyBjb3BpZWQgZnJvbSBhIHRhYmxlIGNlbGxcbiAgQElucHV0KCkgb25Kc29uUGF0aENvcGllZEhhbmRsZXI/OiAoZXZlbnQ6IHsgcGF0aDogc3RyaW5nOyBzb3VyY2U6IHN0cmluZyB9KSA9PiB2b2lkO1xuXG4gIC8vIFNlbGVjdGVkIGl0ZW1zIChmdWxsIG9iamVjdHMpIGZvciBtYWludGFpbmluZyBzZWxlY3Rpb24gYWNyb3NzIHBhZ2luYXRpb24gKHNlcnZlci1zaWRlKVxuICBASW5wdXQoKSBzZWxlY3RlZEl0ZW1zOiBhbnlbXSA9IFtdO1xuXG4gIC8qKiBXaGVuIHRydWUsIHRoZSBhY3Rpb24gdG9vbGJhciByZW5kZXJzIHRoZSBcIlNlbGVjdCBhbGxcIiBhZmZvcmRhbmNlLiAqL1xuICBASW5wdXQoKSBzaG93U2VsZWN0QWxsSW5Ub29sYmFyOiBib29sZWFuID0gZmFsc2U7XG4gIC8qKiBXaGVuIHRydWUsIHRoZSBhY3Rpb24gdG9vbGJhciByZW5kZXJzIHRoZSBkaXNtaXNzICjDlykgYWZmb3JkYW5jZS4gKi9cbiAgQElucHV0KCkgc2hvd0Rpc21pc3NJblRvb2xiYXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyoqIEJvdW5kIHRvIHRoZSB0b29sYmFyJ3MgXCJTZWxlY3QgYWxsXCIgY2hlY2tib3gg4oCUIGRyaXZlcyB0aGUgY2hlY2tlZCBzdGF0ZS4gKi9cbiAgQElucHV0KCkgYWxsU2VsZWN0ZWRJblRvb2xiYXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBJbnRlcm5hbCBzdGF0ZSBmb3IgY29sdW1uIHZpc2liaWxpdHlcbiAgcHJpdmF0ZSBfY29sdW1uVmlzaWJpbGl0eTogQ29sdW1uVmlzaWJpbGl0eUNvbmZpZyA9IHt9O1xuICBwcml2YXRlIF9jYWNoZWRWaXNpYmlsaXR5Q29sdW1uczogQXJyYXk8eyBpZDogc3RyaW5nOyBsYWJlbDogc3RyaW5nIH0+ID0gW107XG4gIGZpbHRlcmVkUm93czogYW55W10gPSBbXTtcbiAgcGFnZWRSb3dzOiBhbnlbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cbiAgcHJpdmF0ZSBwZW5kaW5nRmlsdGVyczogYW55O1xuICBwcml2YXRlIGFwcGxpZWRGaWx0ZXJzOiBhbnk7XG4gIHByaXZhdGUgYXV0b1JlZnJlc2hUaW1lcj86IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPjtcbiAgQE91dHB1dCgpIG9uUmVsb2FkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgb25BdXRvUmVmcmVzaENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgY29sdW1uVmlzaWJpbGl0eUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q29sdW1uVmlzaWJpbGl0eUNvbmZpZz4oKTtcbiAgQE91dHB1dCgpIGF1dG9SZWZyZXNoSW50ZXJ2YWxDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gQnVsayBhY3Rpb24gdG9vbGJhciBwYXNzdGhyb3VnaCDigJQgbWlycm9ycyBldmVyeSBvdXRwdXQgdGhlIGlubmVyXG4gIC8vIGBjcWEtdGFibGUtYWN0aW9uLXRvb2xiYXJgIGV4cG9zZXMsIHNvIGNvbnN1bWVycyB3aXJlIGEgc2luZ2xlIGNvbXBvbmVudC5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKiBGaXJlcyB3aGVuIGEgYnVsayBhY3Rpb24gKGRlbGV0ZSAvIGVkaXQgLyB0YWcgLyDigKYpIGlzIGludm9rZWQgb24gdGhlIHNlbGVjdGlvbi4gKi9cbiAgQE91dHB1dCgpIGJ1bGtBY3Rpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8eyBpZDogc3RyaW5nOyBzZWxlY3RlZDogYW55W10gfT4oKTtcbiAgLyoqIEZpcmVzIHdoZW4gdGhlIHRvb2xiYXIncyBcIlNlbGVjdCBhbGxcIiBhZmZvcmRhbmNlIGlzIHRvZ2dsZWQgKHJlcXVpcmVzIGBzaG93U2VsZWN0QWxsSW5Ub29sYmFyYCkuICovXG4gIEBPdXRwdXQoKSBidWxrU2VsZWN0QWxsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAvKiogRmlyZXMgd2hlbiB0aGUgdG9vbGJhcidzIGRpc21pc3MgKMOXKSBhZmZvcmRhbmNlIGlzIGNsaWNrZWQgKHJlcXVpcmVzIGBzaG93RGlzbWlzc0luVG9vbGJhcmApLiAqL1xuICBAT3V0cHV0KCkgYnVsa0Rpc21pc3MgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIC8qKiBGaXJlcyB3aGVuZXZlciB0aGUgY29tcG9uZW50IGludGVybmFsbHkgbXV0YXRlcyBgc2VsZWN0ZWRJdGVtc2AgKGUuZy4gZGlzbWlzcyBjbGVhcnMgaXQpLiAqL1xuICBAT3V0cHV0KCkgc2VsZWN0ZWRJdGVtc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG4gIEBWaWV3Q2hpbGQoRHluYW1pY0ZpbHRlckNvbXBvbmVudCkgZHluYW1pY0ZpbHRlckNvbXBvbmVudD86IER5bmFtaWNGaWx0ZXJDb21wb25lbnQ7XG5cbiAgLy8gRGVyaXZlZCBjb2x1bW5zIHdpdGggdmlzaWJpbGl0eSBhcHBsaWVkLlxuICBjb21wdXRlZENvbHVtbnM6IER5bmFtaWNUYWJsZUNvbHVtbltdID0gW107XG4gIC8vIEF1dG8tZ2VuZXJhdGVkIHZpc2liaWxpdHkgY29sdW1ucyBmcm9tIGNvbHVtbnMgaW5wdXRcbiAgdmlzaWJpbGl0eUNvbHVtbnM6IEFycmF5PHsgaWQ6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9PiA9IFtdO1xuXG4gIHByaXZhdGUgdXBkYXRlQ29tcHV0ZWRDb2x1bW5zKCk6IHZvaWQge1xuICAgIGNvbnN0IHZpc2liaWxpdHkgPSB0aGlzLl9jb2x1bW5WaXNpYmlsaXR5IHx8IHt9O1xuICAgIGNvbnN0IHNvdXJjZSA9IHRoaXMuY29sdW1ucyB8fCBbXTtcbiAgICB0aGlzLmNvbXB1dGVkQ29sdW1ucyA9IHNvdXJjZS5tYXAoY29sID0+IHtcbiAgICAgIGlmIChbJ2NoZWNrYm94JywgJ2FjdGlvbnMnXS5pbmNsdWRlcyhjb2wuZmllbGRJZCkpIHtcbiAgICAgICAgcmV0dXJuIGNvbDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNob3cgPSB2aXNpYmlsaXR5W2NvbC5maWVsZElkXTtcbiAgICAgIHJldHVybiB7IC4uLmNvbCwgaXNTaG93OiBzaG93ICE9PSBmYWxzZSB9O1xuICAgIH0pO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVWaXNpYmlsaXR5Q29sdW1ucygpOiB2b2lkIHtcbiAgICB0aGlzLl9jYWNoZWRWaXNpYmlsaXR5Q29sdW1ucyA9IHRoaXMubWFwVmlzaWJpbGl0eUNvbHVtbnMoKTtcbiAgICB0aGlzLnZpc2liaWxpdHlDb2x1bW5zID0gdGhpcy5fY2FjaGVkVmlzaWJpbGl0eUNvbHVtbnM7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvLyBDb250cm9sbGVkIGNvbHVtbiB2aXNpYmlsaXR5OiBwYXJlbnQgY2FuIHNlZWQgYW5kIHB1c2ggdXBkYXRlcy5cbiAgQElucHV0KCkgc2V0IGNvbHVtblZpc2liaWxpdHkoY2ZnOiBDb2x1bW5WaXNpYmlsaXR5Q29uZmlnIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKGNmZykge1xuICAgICAgdGhpcy5fY29sdW1uVmlzaWJpbGl0eSA9IHsgLi4uY2ZnIH07XG4gICAgICB0aGlzLnVwZGF0ZUNvbXB1dGVkQ29sdW1ucygpO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG4gIGdldCBjb2x1bW5WaXNpYmlsaXR5KCk6IENvbHVtblZpc2liaWxpdHlDb25maWcge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5WaXNpYmlsaXR5O1xuICB9XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdGlhbGl6ZUNvbXBvbmVudCgpO1xuICAgIHRoaXMudXBkYXRlQ29tcHV0ZWRDb2x1bW5zKCk7XG4gICAgdGhpcy51cGRhdGVWaXNpYmlsaXR5Q29sdW1ucygpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydkYXRhJ10gfHwgY2hhbmdlc1snaXNFbXB0eVN0YXRlJ10pIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUNvbXBvbmVudCgpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snY29sdW1ucyddKSB7XG4gICAgICB0aGlzLmluaXRpYWxpemVDb2x1bW5WaXNpYmlsaXR5KCk7XG4gICAgICB0aGlzLnVwZGF0ZUNvbXB1dGVkQ29sdW1ucygpO1xuICAgICAgdGhpcy51cGRhdGVWaXNpYmlsaXR5Q29sdW1ucygpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snc2VsZWN0ZWRJdGVtcyddIHx8IGNoYW5nZXNbJ2RhdGEnXSkge1xuICAgICAgdGhpcy5yZXN0b3JlU2VsZWN0aW9uU3RhdGUoKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ3ZpZXdNb2RlTGFiZWxzJ10pIHtcbiAgICAgIHRoaXMudmlld01vZGVTZWdtZW50cyA9IFtcbiAgICAgICAgeyBsYWJlbDogdGhpcy52aWV3TW9kZUxhYmVscy5saXN0LCB2YWx1ZTogJ2xpc3QnLCBpY29uOiAndmlld19saXN0JyB9LFxuICAgICAgICB7IGxhYmVsOiB0aGlzLnZpZXdNb2RlTGFiZWxzLm1vZHVsYXIsIHZhbHVlOiAnbW9kdWxhcicsIGljb246ICdmb2xkZXInIH0sXG4gICAgICBdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUNvbXBvbmVudCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0VtcHR5U3RhdGUpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRSb3dzID0gW107XG4gICAgICB0aGlzLnBhZ2VkUm93cyA9IFtdO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEluIHNlcnZlci1zaWRlIG1vZGUsIGFzc3VtZSBpbmNvbWluZyBkYXRhIGlzIGFscmVhZHkgYSBwYWdlIHNsaWNlXG4gICAgaWYgKHRoaXMuc2VydmVyU2lkZVBhZ2luYXRpb24pIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRSb3dzID0gWy4uLnRoaXMuZGF0YV07XG4gICAgICB0aGlzLnBhZ2VkUm93cyA9IFsuLi50aGlzLmZpbHRlcmVkUm93c107XG4gICAgICB0aGlzLmluaXRpYWxpemVDb2x1bW5WaXNpYmlsaXR5KCk7XG4gICAgICB0aGlzLnJlc3RvcmVTZWxlY3Rpb25TdGF0ZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZmlsdGVyZWRSb3dzID0gWy4uLnRoaXMuZGF0YV07XG4gICAgdGhpcy5hcHBseVBhZ2luYXRpb24oKTtcbiAgICB0aGlzLmluaXRpYWxpemVDb2x1bW5WaXNpYmlsaXR5KCk7XG4gICAgdGhpcy51cGRhdGVDb21wdXRlZENvbHVtbnMoKTtcbiAgICB0aGlzLnJlc3RvcmVTZWxlY3Rpb25TdGF0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBzZWxlY3RlZCBJRHMgZnJvbSBzZWxlY3RlZEl0ZW1zIChvYmplY3RzKVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRTZWxlY3RlZElkcygpOiBTZXQ8bnVtYmVyPiB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtcyAmJiB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIG5ldyBTZXQodGhpcy5zZWxlY3RlZEl0ZW1zLm1hcChpdGVtID0+IE51bWJlcihpdGVtLmlkKSkuZmlsdGVyKGlkID0+ICFpc05hTihpZCkpKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBTZXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzdG9yZVNlbGVjdGlvblN0YXRlKCk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkSWRzU2V0ID0gdGhpcy5nZXRTZWxlY3RlZElkcygpO1xuXG4gICAgaWYgKHNlbGVjdGVkSWRzU2V0LnNpemUgPT09IDApIHtcbiAgICAgIC8vIElmIG5vIHNlbGVjdGVkIElEcywgY2xlYXIgYWxsIHNlbGVjdGlvbiBzdGF0ZXNcbiAgICAgIGlmICh0aGlzLnBhZ2VkUm93cykge1xuICAgICAgICB0aGlzLnBhZ2VkUm93cy5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICAgICAgaWYgKHJvdykge1xuICAgICAgICAgICAgKHJvdyBhcyBhbnkpLmlzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFJlc3RvcmUgc2VsZWN0aW9uIHN0YXRlIGJhc2VkIG9uIHNlbGVjdGVkSXRlbXNcbiAgICBpZiAodGhpcy5wYWdlZFJvd3MpIHtcbiAgICAgIHRoaXMucGFnZWRSb3dzLmZvckVhY2gocm93ID0+IHtcbiAgICAgICAgaWYgKHJvdyAmJiByb3cuaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIChyb3cgYXMgYW55KS5pc1NlbGVjdGVkID0gc2VsZWN0ZWRJZHNTZXQuaGFzKE51bWJlcihyb3cuaWQpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQWxzbyB1cGRhdGUgZmlsdGVyZWRSb3dzIGZvciBjb25zaXN0ZW5jeVxuICAgIGlmICh0aGlzLmZpbHRlcmVkUm93cykge1xuICAgICAgdGhpcy5maWx0ZXJlZFJvd3MuZm9yRWFjaChyb3cgPT4ge1xuICAgICAgICBpZiAocm93ICYmIHJvdy5pZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgKHJvdyBhcyBhbnkpLmlzU2VsZWN0ZWQgPSBzZWxlY3RlZElkc1NldC5oYXMoTnVtYmVyKHJvdy5pZCkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUNvbHVtblZpc2liaWxpdHkoKTogdm9pZCB7XG4gICAgLy8gQ2FjaGUgdmlzaWJpbGl0eSBjb2x1bW5zIHRvIGF2b2lkIGNyZWF0aW5nIG5ldyBhcnJheXMgb24gZXZlcnkgY2hhbmdlIGRldGVjdGlvblxuICAgIHRoaXMuX2NhY2hlZFZpc2liaWxpdHlDb2x1bW5zID0gdGhpcy5tYXBWaXNpYmlsaXR5Q29sdW1ucygpO1xuICAgIC8vIFNlZWQgdmlzaWJpbGl0eSBzdGF0ZSBmcm9tIGVhY2ggY29sdW1uJ3MgaXNTaG93IChkZWZhdWx0IHRvIHRydWUpIHNvIGNvbnN1bWVyc1xuICAgIC8vIGNhbiBwcmUtYXBwbHkgcGVyc2lzdGVkIHByZWZlcmVuY2VzIHZpYSBjb2x1bW5zW2ldLmlzU2hvdy5cbiAgICBjb25zdCBzb3VyY2UgPSB0aGlzLmNvbHVtbnMgfHwgW107XG4gICAgZm9yIChjb25zdCBjb2wgb2YgdGhpcy5fY2FjaGVkVmlzaWJpbGl0eUNvbHVtbnMpIHtcbiAgICAgIGlmICh0aGlzLl9jb2x1bW5WaXNpYmlsaXR5W2NvbC5pZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBzcmNDb2wgPSBzb3VyY2UuZmluZChjID0+IGMuZmllbGRJZCA9PT0gY29sLmlkKTtcbiAgICAgICAgdGhpcy5fY29sdW1uVmlzaWJpbGl0eVtjb2wuaWRdID0gc3JjQ29sICYmIHNyY0NvbC5pc1Nob3cgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBhbnlSb3dTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICAvLyBDaGVjayBpZiB0aGVyZSBhcmUgYW55IHNlbGVjdGVkIGl0ZW1zIChlaXRoZXIgb24gY3VycmVudCBwYWdlIG9yIGFjcm9zcyBhbGwgcGFnZXMgdmlhIHNlbGVjdGVkSXRlbXMpXG4gICAgY29uc3QgaGFzU2VsZWN0ZWRPblBhZ2UgPSAhISh0aGlzLnBhZ2VkUm93cyAmJiB0aGlzLnBhZ2VkUm93cy5zb21lKHIgPT4gISEociBhcyBhbnkpLmlzU2VsZWN0ZWQpKTtcbiAgICBjb25zdCBzZWxlY3RlZElkc1NldCA9IHRoaXMuZ2V0U2VsZWN0ZWRJZHMoKTtcbiAgICBjb25zdCBoYXNTZWxlY3RlZEFjcm9zc1BhZ2VzID0gc2VsZWN0ZWRJZHNTZXQuc2l6ZSA+IDA7XG4gICAgcmV0dXJuIGhhc1NlbGVjdGVkT25QYWdlIHx8IGhhc1NlbGVjdGVkQWNyb3NzUGFnZXM7XG4gIH1cblxuICBnZXQgY3VycmVudFNlbGVjdGVkSXRlbXMoKTogYW55W10ge1xuICAgIC8vIElmIHNlbGVjdGVkSXRlbXMgKGZ1bGwgb2JqZWN0cykgYXJlIHByb3ZpZGVkLCB1c2UgdGhlbSBkaXJlY3RseVxuICAgIC8vIFRoaXMgZW5zdXJlcyBhbGwgc2VsZWN0ZWQgaXRlbXMgYXJlIHJldHVybmVkLCBpbmNsdWRpbmcgdGhvc2UgZnJvbSBvdGhlciBwYWdlc1xuICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbXMgJiYgdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSXRlbXM7XG4gICAgfVxuICAgIC8vIEZhbGxiYWNrOiBGb3IgY2xpZW50LXNpZGUgcGFnaW5hdGlvbiBvciB3aGVuIHNlbGVjdGVkSXRlbXMgaXMgbm90IHByb3ZpZGVkLFxuICAgIC8vIGZpbHRlciBwYWdlZFJvd3MgdG8gZ2V0IHNlbGVjdGVkIGl0ZW1zIGZyb20gY3VycmVudCBwYWdlIG9ubHlcbiAgICBpZiAoIXRoaXMucGFnZWRSb3dzIHx8IHRoaXMucGFnZWRSb3dzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGVjdGVkSWRzU2V0ID0gdGhpcy5nZXRTZWxlY3RlZElkcygpO1xuICAgIFxuICAgIC8vIEZpbHRlciByb3dzIHRoYXQgYXJlIHNlbGVjdGVkXG4gICAgcmV0dXJuIHRoaXMucGFnZWRSb3dzXG4gICAgICAuZmlsdGVyKHIgPT4ge1xuICAgICAgICBpZiAoIXIgfHwgci5pZCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGNvbnN0IHJvd0lkID0gTnVtYmVyKHIuaWQpO1xuICAgICAgICAvLyBJbmNsdWRlIGlmIGVpdGhlcjpcbiAgICAgICAgLy8gMS4gVGhlIHJvdyBoYXMgaXNTZWxlY3RlZCA9IHRydWUgKGN1cnJlbnQgcGFnZSBzZWxlY3Rpb24pXG4gICAgICAgIC8vIDIuIFRoZSByb3cncyBJRCBpcyBpbiBzZWxlY3RlZEl0ZW1zIChzZWxlY3RlZCBvbiBvdGhlciBwYWdlcyBvciByZXN0b3JlZCBzZWxlY3Rpb24pXG4gICAgICAgIHJldHVybiAhIShyIGFzIGFueSkuaXNTZWxlY3RlZCB8fCBzZWxlY3RlZElkc1NldC5oYXMocm93SWQpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKiogVG9vbGJhciBgYWN0aW9uQ2xpY2tgIGhhbmRsZXIg4oCUIGVtaXRzIHVwd2FyZCBhcyBgYnVsa0FjdGlvbkNsaWNrYC4gKi9cbiAgYWN0aW9uQ2xpY2soZXZlbnQ6IHsgaWQ6IHN0cmluZzsgc2VsZWN0ZWQ6IGFueVtdIH0pOiB2b2lkIHtcbiAgICB0aGlzLmJ1bGtBY3Rpb25DbGljay5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIC8qKiBUb29sYmFyIGBzZWxlY3RBbGxDaGFuZ2VgIGhhbmRsZXIg4oCUIHNlbGVjdHMgZXZlcnkgZmlsdGVyZWQgcm93IGxvY2FsbHkgYW5kIGVtaXRzLiAqL1xuICBvblRvb2xiYXJTZWxlY3RBbGwoY2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IGNoZWNrZWQgPyBbLi4udGhpcy5maWx0ZXJlZFJvd3NdIDogW107XG4gICAgdGhpcy5yZXN0b3JlU2VsZWN0aW9uU3RhdGUoKTtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXNDaGFuZ2UuZW1pdChbLi4udGhpcy5zZWxlY3RlZEl0ZW1zXSk7XG4gICAgdGhpcy5idWxrU2VsZWN0QWxsQ2hhbmdlLmVtaXQoY2hlY2tlZCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKiogVG9vbGJhciBgZGlzbWlzc2AgaGFuZGxlciDigJQgY2xlYXJzIHNlbGVjdGlvbiBsb2NhbGx5IHNvIHRoZSB0b29sYmFyIGNsb3Nlcy4gKi9cbiAgb25Ub29sYmFyRGlzbWlzcygpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcbiAgICB0aGlzLnJlc3RvcmVTZWxlY3Rpb25TdGF0ZSgpO1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0NoYW5nZS5lbWl0KFtdKTtcbiAgICB0aGlzLmJ1bGtEaXNtaXNzLmVtaXQoKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHZpZXcoaWQ6IG51bWJlciB8IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdWaWV3JywgaWQpO1xuICB9XG5cbiAgZWRpdChyb3c6IGFueSk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdFZGl0Jywgcm93KTtcbiAgfVxuXG4gIGRlbGV0ZShyb3c6IGFueSk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdEZWxldGUnLCByb3cpO1xuICB9XG5cbiAgdG9nZ2xlRmlsdGVyKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd0ZpbHRlclBhbmVsID0gIXRoaXMuc2hvd0ZpbHRlclBhbmVsO1xuICB9XG5cbiAgb25Db2x1bW5WaXNpYmlsaXR5Q2hhbmdlKGNmZzogQ29sdW1uVmlzaWJpbGl0eUNvbmZpZyk6IHZvaWQge1xuICAgIHRoaXMuX2NvbHVtblZpc2liaWxpdHkgPSB7IC4uLmNmZyB9O1xuICAgIHRoaXMudXBkYXRlQ29tcHV0ZWRDb2x1bW5zKCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgdGhpcy5jb2x1bW5WaXNpYmlsaXR5Q2hhbmdlLmVtaXQoeyAuLi5jZmcgfSk7XG4gIH1cblxuICBvbkF1dG9SZWZyZXNoQ2hhbmdlKGludGVydmFsTXM6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRBdXRvUmVmcmVzaEludGVydmFsID0gaW50ZXJ2YWxNcztcbiAgICB0aGlzLnNldHVwQXV0b1JlZnJlc2goaW50ZXJ2YWxNcyk7XG4gICAgdGhpcy5hdXRvUmVmcmVzaEludGVydmFsQ2hhbmdlLmVtaXQoaW50ZXJ2YWxNcyk7XG4gICAgdGhpcy50cmlnZ2VyUmVsb2FkKCk7XG4gIH1cblxuICB2YWx1ZUNoYW5nZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ1ZhbHVlIGNoYW5nZWQnLCB2YWx1ZSk7XG4gICAgdGhpcy5vblNlYXJjaENoYW5nZS5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIHNlYXJjaCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ1NlYXJjaCcsIHZhbHVlKTtcbiAgfVxuXG4gIGNsZWFyZWQoKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ0NsZWFyZWQnKTtcbiAgfVxuXG4gIG9uRW1wdHlBY3Rpb24oYWN0aW9uOiBhbnkpIHtcbiAgICBpZiAoYWN0aW9uPy5sYWJlbCA9PT0gJ1Nob3cgZmlsdGVycycpIHtcbiAgICAgIHRoaXMudG9nZ2xlRmlsdGVyKCk7XG4gICAgfVxuICB9XG5cbiAgb25GaWx0ZXJzQ2hhbmdlZChjdXJyZW50OiBhbnkpOiB2b2lkIHtcbiAgICAvLyBEZWZlciBhcHBseWluZyBmaWx0ZXJzIGFuZCB1cGRhdGluZyBjaGlwcyB1bnRpbCBBcHBseSBGaWx0ZXIgaXMgY2xpY2tlZFxuICAgIHRoaXMucGVuZGluZ0ZpbHRlcnMgPSBjdXJyZW50O1xuICB9XG5cbiAgb25GaWx0ZXJzQXBwbGllZChhcHBsaWVkOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dGaWx0ZXJQYW5lbCA9IGZhbHNlO1xuICAgIGNvbnN0IGVmZmVjdGl2ZSA9IGFwcGxpZWQgPz8gdGhpcy5wZW5kaW5nRmlsdGVycyA/PyB7fTtcbiAgICB0aGlzLmFwcGxpZWRGaWx0ZXJzID0gZWZmZWN0aXZlO1xuICAgIHRoaXMuZmlsdGVyZWRSb3dzID0gdGhpcy5kYXRhLmZpbHRlcihyID0+IHRoaXMucGFzc0ZpbHRlcnMoZWZmZWN0aXZlLCByKSk7XG4gICAgdGhpcy5wYWdlSW5kZXggPSAwO1xuICAgIHRoaXMuYXBwbHlQYWdpbmF0aW9uKCk7XG4gICAgY29uc3QgY2hpcHM6IEFycmF5PHsga2V5Pzogc3RyaW5nOyBsYWJlbD86IHN0cmluZzsgdGV4dDogc3RyaW5nOyBmdWxsVGV4dD86IHN0cmluZzsgaGFzTW9yZT86IGJvb2xlYW4gfT4gPSBbXTtcbiAgICBpZiAoZWZmZWN0aXZlKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhlZmZlY3RpdmUpKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZWZmZWN0aXZlW2tleV07XG4gICAgICAgIGlmICh2YWx1ZSA9PSBudWxsIHx8IHZhbHVlID09PSAnJyB8fCAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKSkgY29udGludWU7XG4gICAgICAgIFxuICAgICAgICAvLyBGaW5kIHRoZSBmaWx0ZXIgY29uZmlnIGl0ZW0gZm9yIHRoaXMga2V5XG4gICAgICAgIGNvbnN0IGZpbHRlckNvbmZpZ0l0ZW0gPSB0aGlzLmZpbHRlckNvbmZpZz8uZmluZChjID0+IGMua2V5ID09PSBrZXkpO1xuICAgICAgICBjb25zdCBvcHRpb25zID0gZmlsdGVyQ29uZmlnSXRlbT8ub3B0aW9ucyB8fCBbXTtcbiAgICAgICAgXG4gICAgICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byBmaW5kIGRpc3BsYXkgdGV4dCBmcm9tIG9wdGlvbnNcbiAgICAgICAgY29uc3QgZ2V0RGlzcGxheVRleHQgPSAodmFsOiBhbnkpOiBzdHJpbmcgPT4ge1xuICAgICAgICAgIC8vIElmIHZhbHVlIGlzIGFscmVhZHkgYW4gb2JqZWN0IHdpdGggbmFtZS9sYWJlbCwgdXNlIGl0XG4gICAgICAgICAgaWYgKHZhbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiAodmFsLm5hbWUgfHwgdmFsLmxhYmVsIHx8IHZhbC52YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWwubmFtZSA/PyB2YWwubGFiZWwgPz8gU3RyaW5nKHZhbC52YWx1ZSA/PyB2YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBcbiAgICAgICAgICAvLyBMb29rIHVwIHRoZSBvcHRpb24gaW4gdGhlIGNvbmZpZ1xuICAgICAgICAgIGNvbnN0IG9wdGlvbiA9IG9wdGlvbnMuZmluZCgob3B0OiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9wdElkID0gb3B0LmlkID8/IG9wdC52YWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IG9wdFZhbHVlID0gb3B0LnZhbHVlO1xuICAgICAgICAgICAgY29uc3QgdmFsU3RyID0gU3RyaW5nKHZhbCk7XG4gICAgICAgICAgICByZXR1cm4gU3RyaW5nKG9wdElkKSA9PT0gdmFsU3RyIHx8IFN0cmluZyhvcHRWYWx1ZSkgPT09IHZhbFN0cjtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBcbiAgICAgICAgICBpZiAob3B0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gb3B0aW9uLm5hbWUgPz8gb3B0aW9uLmxhYmVsID8/IFN0cmluZyhvcHRpb24udmFsdWUgPz8gdmFsKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgXG4gICAgICAgICAgLy8gRmFsbGJhY2sgdG8gdGhlIHJhdyB2YWx1ZVxuICAgICAgICAgIHJldHVybiBTdHJpbmcodmFsKTtcbiAgICAgICAgfTtcbiAgICAgICAgXG4gICAgICAgIGxldCB0ZXh0ID0gJyc7XG4gICAgICAgIGxldCBsYWJlbCA9IGZpbHRlckNvbmZpZ0l0ZW0/LmxhYmVsO1xuICAgICAgICBcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgdGV4dCA9IHZhbHVlLm1hcCgodjogYW55KSA9PiBnZXREaXNwbGF5VGV4dCh2KSkuam9pbignLCAnKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgaWYgKCdzdGFydCcgaW4gdmFsdWUgfHwgJ2VuZCcgaW4gdmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IHMgPSB2YWx1ZS5zdGFydCA/IG5ldyBEYXRlKHZhbHVlLnN0YXJ0KS50b0xvY2FsZURhdGVTdHJpbmcoKSA6ICcnO1xuICAgICAgICAgICAgY29uc3QgZSA9IHZhbHVlLmVuZCA/IG5ldyBEYXRlKHZhbHVlLmVuZCkudG9Mb2NhbGVEYXRlU3RyaW5nKCkgOiAnJztcbiAgICAgICAgICAgIHRleHQgPSBbcywgZV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAtICcpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0ZXh0ID0gZ2V0RGlzcGxheVRleHQodmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0ZXh0ID0gZ2V0RGlzcGxheVRleHQodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGNoaXBzLnB1c2goeyBrZXksIGxhYmVsLCB0ZXh0LCBmdWxsVGV4dDogdGV4dCwgaGFzTW9yZTogdGV4dC5sZW5ndGggPiAzMCB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jaGlwcyA9IGNoaXBzO1xuICAgIHRoaXMuZmlsdGVyQXBwbGllZCA9IHRoaXMuY2hpcHMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIGhhbmRsZVJlc2V0RmlsdGVyQ2xpY2soKTogdm9pZCB7XG4gICAgLy8gQ2xlYXIgY2hpcHMgYW5kIHJlc2V0IGZpbHRlcmVkIGRhdGEgd2hlbiByZXNldCBpcyBjbGlja2VkXG4gICAgdGhpcy5wZW5kaW5nRmlsdGVycyA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmNoaXBzID0gW107XG4gICAgdGhpcy5maWx0ZXJBcHBsaWVkID0gZmFsc2U7XG4gICAgdGhpcy5maWx0ZXJlZFJvd3MgPSBbLi4udGhpcy5kYXRhXTtcbiAgICB0aGlzLnBhZ2VJbmRleCA9IDA7XG4gICAgdGhpcy5hcHBseVBhZ2luYXRpb24oKTtcbiAgICB0aGlzLm9uUmVzZXRGaWx0ZXJDbGljay5lbWl0KCk7XG4gIH1cblxuICBoYW5kbGVSZWZyZXNoQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5vbkF1dG9SZWZyZXNoQ2xpY2suZW1pdCgpO1xuICAgIHRoaXMudHJpZ2dlclJlbG9hZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSB0cmlnZ2VyUmVsb2FkKCk6IHZvaWQge1xuICAgIGNvbnN0IGVmZmVjdGl2ZSA9IHRoaXMuYXBwbGllZEZpbHRlcnMgPz8ge307XG4gICAgdGhpcy5maWx0ZXJlZFJvd3MgPSB0aGlzLmRhdGEuZmlsdGVyKHIgPT4gdGhpcy5wYXNzRmlsdGVycyhlZmZlY3RpdmUsIHIpKTtcbiAgICB0aGlzLnBhZ2VJbmRleCA9IDA7XG4gICAgdGhpcy5hcHBseVBhZ2luYXRpb24oKTtcbiAgICB0aGlzLm9uUmVsb2FkLmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBBdXRvUmVmcmVzaChpbnRlcnZhbE1zOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyQXV0b1JlZnJlc2goKTtcbiAgICBpZiAoaW50ZXJ2YWxNcyAmJiBpbnRlcnZhbE1zID4gMCkge1xuICAgICAgdGhpcy5hdXRvUmVmcmVzaFRpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICB0aGlzLnRyaWdnZXJSZWxvYWQoKTtcbiAgICAgIH0sIGludGVydmFsTXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJBdXRvUmVmcmVzaCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hdXRvUmVmcmVzaFRpbWVyKSB7XG4gICAgICBjbGVhckludGVydmFsKHRoaXMuYXV0b1JlZnJlc2hUaW1lcik7XG4gICAgICB0aGlzLmF1dG9SZWZyZXNoVGltZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhckF1dG9SZWZyZXNoKCk7XG4gIH1cblxuICBvblBhZ2luYXRlKGU6IHsgcGFnZUluZGV4OiBudW1iZXI7IHBhZ2VTaXplOiBudW1iZXIgfSk6IHZvaWQge1xuICAgIHRoaXMucGFnZUluZGV4ID0gZS5wYWdlSW5kZXg7XG4gICAgdGhpcy5wYWdlU2l6ZSA9IGUucGFnZVNpemU7XG4gICAgaWYgKHRoaXMuc2VydmVyU2lkZVBhZ2luYXRpb24pIHtcbiAgICAgIHRoaXMucGFnZUNoYW5nZS5lbWl0KHsgcGFnZUluZGV4OiB0aGlzLnBhZ2VJbmRleCwgcGFnZVNpemU6IHRoaXMucGFnZVNpemUgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuYXBwbHlQYWdpbmF0aW9uKCk7XG4gIH1cblxuICBvblBhZ2VTaXplQ2hhbmdlKHNpemU6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucGFnZVNpemUgPSBzaXplO1xuICAgIHRoaXMucGFnZUluZGV4ID0gMDtcbiAgICBpZiAodGhpcy5zZXJ2ZXJTaWRlUGFnaW5hdGlvbikge1xuICAgICAgdGhpcy5wYWdlQ2hhbmdlLmVtaXQoeyBwYWdlSW5kZXg6IHRoaXMucGFnZUluZGV4LCBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5hcHBseVBhZ2luYXRpb24oKTtcbiAgfVxuXG4gIG9uUmVtb3ZlQ2hpcChjaGlwOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmNoaXBzID0gdGhpcy5jaGlwcy5maWx0ZXIoYyA9PiBjICE9PSBjaGlwKTtcbiAgICB0aGlzLmZpbHRlckFwcGxpZWQgPSB0aGlzLmNoaXBzLmxlbmd0aCA+IDA7XG4gICAgLy8gRW1pdCBldmVudCB0byBwYXJlbnQgY29tcG9uZW50IChzYW1lIHBhdHRlcm4gYXMgZXhlY3V0aW9uIHRhYilcbiAgICB0aGlzLnJlbW92ZUNoaXAuZW1pdChjaGlwKTtcbiAgfVxuXG4gIG9uQ2xlYXJBbGxDaGlwcygpOiB2b2lkIHtcbiAgICB0aGlzLmNoaXBzID0gW107XG4gICAgdGhpcy5maWx0ZXJBcHBsaWVkID0gZmFsc2U7XG4gICAgLy8gUmVzZXQgdGhlIGR5bmFtaWMtZmlsdGVyIGNvbXBvbmVudCBmb3JtIHdoZW4gY2xlYXJpbmcgYWxsIGNoaXBzXG4gICAgaWYgKHRoaXMuZHluYW1pY0ZpbHRlckNvbXBvbmVudCkge1xuICAgICAgdGhpcy5keW5hbWljRmlsdGVyQ29tcG9uZW50LnJlc2V0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVBhZ2luYXRpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VydmVyU2lkZVBhZ2luYXRpb24pIHtcbiAgICAgIC8vIFNlcnZlciBtb2RlOiBwYXJlbnQgc3VwcGxpZXMgYWxyZWFkeS1wYWdpbmF0ZWQgZGF0YVxuICAgICAgdGhpcy5wYWdlZFJvd3MgPSBbLi4udGhpcy5maWx0ZXJlZFJvd3NdO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzdGFydCA9IHRoaXMucGFnZUluZGV4ICogdGhpcy5wYWdlU2l6ZTtcbiAgICBjb25zdCBlbmQgPSBzdGFydCArIHRoaXMucGFnZVNpemU7XG4gICAgdGhpcy5wYWdlZFJvd3MgPSB0aGlzLmZpbHRlcmVkUm93cy5zbGljZShzdGFydCwgZW5kKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwVmlzaWJpbGl0eUNvbHVtbnMoKTogQXJyYXk8eyBpZDogc3RyaW5nOyBsYWJlbDogc3RyaW5nIH0+IHtcbiAgICByZXR1cm4gKHRoaXMuY29sdW1ucyB8fCBbXSlcbiAgICAgIC5maWx0ZXIoYyA9PiBjLmlzRGVmYXVsdCA9PT0gZmFsc2UpXG4gICAgICAubWFwKGMgPT4gKHsgaWQ6IGMuZmllbGRJZCwgbGFiZWw6IGMuZmllbGROYW1lIHx8IGMuZmllbGRJZCB9KSk7XG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZURhdGUoZDogYW55KTogbnVtYmVyIHwgbnVsbCB7XG4gICAgaWYgKCFkKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCB0cyA9IERhdGUucGFyc2UoZCk7XG4gICAgcmV0dXJuIGlzTmFOKHRzKSA/IG51bGwgOiB0cztcbiAgfVxuXG4gIHByaXZhdGUgcGFzc0ZpbHRlcnMoZmlsdGVyczogYW55LCByb3c6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmICghZmlsdGVycykgcmV0dXJuIHRydWU7XG4gICAgaWYgKGZpbHRlcnMuc3RhdHVzICYmIEFycmF5LmlzQXJyYXkoZmlsdGVycy5zdGF0dXMpICYmIGZpbHRlcnMuc3RhdHVzLmxlbmd0aCkge1xuICAgICAgaWYgKCFmaWx0ZXJzLnN0YXR1cy5pbmNsdWRlcyhyb3cuc3RhdHVzKSkgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoZmlsdGVycy5wcmlvcml0eSAmJiBBcnJheS5pc0FycmF5KGZpbHRlcnMucHJpb3JpdHkpICYmIGZpbHRlcnMucHJpb3JpdHkubGVuZ3RoKSB7XG4gICAgICBpZiAoIWZpbHRlcnMucHJpb3JpdHkuaW5jbHVkZXMocm93LnByaW9yaXR5TmFtZSkpIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGZpbHRlcnMudGVzdFR5cGUgJiYgQXJyYXkuaXNBcnJheShmaWx0ZXJzLnRlc3RUeXBlKSAmJiBmaWx0ZXJzLnRlc3RUeXBlLmxlbmd0aCkge1xuICAgICAgaWYgKCFmaWx0ZXJzLnRlc3RUeXBlLmluY2x1ZGVzKHJvdy50ZXN0VHlwZSkpIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGZpbHRlcnMuY3JlYXRlZF9kYXRlICYmIChmaWx0ZXJzLmNyZWF0ZWRfZGF0ZS5zdGFydCB8fCBmaWx0ZXJzLmNyZWF0ZWRfZGF0ZS5lbmQpKSB7XG4gICAgICBjb25zdCBzdGFydFRzID0gdGhpcy5ub3JtYWxpemVEYXRlKGZpbHRlcnMuY3JlYXRlZF9kYXRlLnN0YXJ0KTtcbiAgICAgIGNvbnN0IGVuZFRzID0gdGhpcy5ub3JtYWxpemVEYXRlKGZpbHRlcnMuY3JlYXRlZF9kYXRlLmVuZCk7XG4gICAgICBjb25zdCByb3dUcyA9IHRoaXMubm9ybWFsaXplRGF0ZShyb3cuY3JlYXRlZEF0KTtcbiAgICAgIGlmIChyb3dUcyAhPSBudWxsKSB7XG4gICAgICAgIGlmIChzdGFydFRzICE9IG51bGwgJiYgcm93VHMgPCBzdGFydFRzKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmIChlbmRUcyAhPSBudWxsICYmIHJvd1RzID4gZW5kVHMpIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICB0cmFja0J5VGVtcGxhdGVSZWYoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgdHJhY2tCeURyb3Bkb3duVGVtcGxhdGVSZWYoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgdHJhY2tCeVNlbGVjdERyb3Bkb3duVGVtcGxhdGVSZWYoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgLy8gRXhwb3J0IG1vZGFsIHN0YXRlXG4gIGlzRXhwb3J0TW9kYWxPcGVuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgZXhwb3J0Q29kZUNsaWNrKCk6IHZvaWQge1xuICAgIC8vIEdldCBzZWxlY3RlZCBpdGVtc1xuICAgIGNvbnN0IHNlbGVjdGVkSXRlbXMgPSB0aGlzLmN1cnJlbnRTZWxlY3RlZEl0ZW1zO1xuICAgIGlmIChzZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gRW1pdCBldmVudCB0byBwYXJlbnQgdG8gaGFuZGxlIHRoZSBjYXNlIHdoZW4gbm8gaXRlbXMgYXJlIHNlbGVjdGVkXG4gICAgICB0aGlzLm9uRXhwb3J0Q2xpY2suZW1pdCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmlzRXhwb3J0TW9kYWxPcGVuID0gdHJ1ZTtcbiAgfVxuXG4gIGNsb3NlRXhwb3J0TW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5pc0V4cG9ydE1vZGFsT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgb25FeHBvcnRNb2RhbEV4cG9ydChyZXN1bHQ6IHsgdHlwZTogJ2xvY2FsJyB8ICdlbWFpbCc7IGVtYWlscz86IHN0cmluZ1tdOyBmcmFtZXdvcms6ICdXRUJEUklWRVJfSU8nIHwgJ1NFTEVOSVVNX0pBVkEnIH0pOiB2b2lkIHtcbiAgICB0aGlzLmlzRXhwb3J0TW9kYWxPcGVuID0gZmFsc2U7XG4gICAgLy8gRW1pdCBldmVudCB0byBwYXJlbnQgd2l0aCBleHBvcnQgcmVzdWx0XG4gICAgdGhpcy5vbkV4cG9ydENsaWNrLmVtaXQoe1xuICAgICAgdHlwZTogcmVzdWx0LnR5cGUsXG4gICAgICBlbWFpbHM6IHJlc3VsdC5lbWFpbHMsXG4gICAgICBmcmFtZXdvcms6IHJlc3VsdC5mcmFtZXdvcmssXG4gICAgICBzZWxlY3RlZEl0ZW1zOiB0aGlzLmN1cnJlbnRTZWxlY3RlZEl0ZW1zXG4gICAgfSk7XG4gIH1cblxuICBnZXQgc2VsZWN0ZWRDYXNlc0ZvckV4cG9ydCgpOiBBcnJheTx7IGlkPzogbnVtYmVyOyBuYW1lPzogc3RyaW5nIH0+IHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50U2VsZWN0ZWRJdGVtcy5tYXAoaXRlbSA9PiAoe1xuICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICBuYW1lOiBpdGVtLm5hbWUgfHwgaXRlbS50aXRsZSB8fCAnVW5uYW1lZCdcbiAgICB9KSk7XG4gIH1cbiAgZ2V0IGFycm93Q2xhc3NlcygpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJhc2VDbGFzc2VzID0gW1xuICAgICAgJ2NxYS13LTQnLFxuICAgICAgJ2NxYS1oLTQnLFxuICAgICAgJ2NxYS1yZWxhdGl2ZScsXG4gICAgICAnY3FhLXRyYW5zaXRpb24tdHJhbnNmb3JtJ1xuICAgIF07XG5cbiAgICBpZiAodGhpcy5zaG93RmlsdGVyUGFuZWwpIHtcbiAgICAgIGJhc2VDbGFzc2VzLnB1c2goJ2NxYS1yb3RhdGUtMTgwJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJhc2VDbGFzc2VzLmpvaW4oJyAnKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNxYS11aS1yb290XCI+XG4gIDxkaXYgY2xhc3M9XCJjcWEtdy1mdWxsIGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtcmVsYXRpdmVcIj5cbiAgICA8ZGl2IFtjbGFzc109XCIhc2hvd1NlYXJjaEJhciA/ICdjcWEtanVzdGlmeS1lbmQnIDogJ2NxYS1qdXN0aWZ5LWJldHdlZW4nXCIgY2xhc3M9XCJjcWEtdy1mdWxsIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0zIGNxYS1mbGV4LXdyYXAgY3FhLW1iLTNcIj5cbiAgICAgIDxjcWEtc2VhcmNoLWJhclxuICAgICAgICAqbmdJZj1cInNob3dTZWFyY2hCYXJcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwic2VhcmNoUGxhY2Vob2xkZXJcIlxuICAgICAgICBbdmFsdWVdPVwic2VhcmNoVmFsdWVcIlxuICAgICAgICBbc2hvd0NsZWFyXT1cInNob3dDbGVhclwiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJ2YWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgKHNlYXJjaCk9XCJzZWFyY2goJGV2ZW50KVwiXG4gICAgICAgIChjbGVhcmVkKT1cImNsZWFyZWQoKVwiXG4gICAgICA+PC9jcWEtc2VhcmNoLWJhcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMiBjcWEtZmxleC13cmFwXCI+XG4gICAgICAgIDxjcWEtYnV0dG9uXG4gICAgICAgICpuZ0lmPVwic2hvd0V4cG9ydEJ1dHRvblwiXG4gICAgICAgIHZhcmlhbnQ9XCJncmV5LXNvbGlkXCJcbiAgICAgICAgaWNvbj1cIm9wZW5faW5fbmV3XCJcbiAgICAgICAgW3RleHRdPVwiaXNFeHBvcnRpbmcgPyAnRXhwb3J0aW5nLi4uJyA6ICdFeHBvcnQnXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzRXhwb3J0aW5nXCJcbiAgICAgICAgKGNsaWNrZWQpPVwiZXhwb3J0Q29kZUNsaWNrKClcIlxuICAgICAgPlxuICAgICAgICA8c3Bhbj57eyBpc0V4cG9ydGluZyA/ICdFeHBvcnRpbmcuLi4nIDogJ0V4cG9ydCcgfX08L3NwYW4+XG4gICAgICA8L2NxYS1idXR0b24+XG4gICAgICBcbiAgICAgIDwhLS0gRXhwb3J0IENvZGUgTW9kYWwgLS0+XG4gICAgICA8Y3FhLWV4cG9ydC1jb2RlLW1vZGFsXG4gICAgICAgICpuZ0lmPVwic2hvd0V4cG9ydEJ1dHRvblwiXG4gICAgICAgIFtpc09wZW5dPVwiaXNFeHBvcnRNb2RhbE9wZW5cIlxuICAgICAgICBbY2FzZXNdPVwic2VsZWN0ZWRDYXNlc0ZvckV4cG9ydFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgIChjbG9zZU1vZGFsKT1cImNsb3NlRXhwb3J0TW9kYWwoKVwiXG4gICAgICAgIChleHBvcnQpPVwib25FeHBvcnRNb2RhbEV4cG9ydCgkZXZlbnQpXCI+XG4gICAgICA8L2NxYS1leHBvcnQtY29kZS1tb2RhbD5cbiAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRyb3Bkb3duVGVtcGxhdGUgb2Ygb3RoZXJEcm9wRG93bkJ1dHRvbnM7IHRyYWNrQnk6IHRyYWNrQnlEcm9wZG93blRlbXBsYXRlUmVmXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRyb3Bkb3duVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc2VsZWN0RHJvcGRvd25UZW1wbGF0ZSBvZiBvdGhlclNlbGVjdERyb3BEb3duQnV0dG9uczsgdHJhY2tCeTogdHJhY2tCeVNlbGVjdERyb3Bkb3duVGVtcGxhdGVSZWZcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2VsZWN0RHJvcGRvd25UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgXG4gICAgICAgIDxjcWEtYnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJzaG93RmlsdGVyQnV0dG9uXCJcbiAgICAgICAgICB2YXJpYW50PVwiZ3JleS1zb2xpZFwiXG4gICAgICAgICAgaWNvbj1cImFkZFwiXG4gICAgICAgICAgKGNsaWNrZWQpPVwidG9nZ2xlRmlsdGVyKClcIlxuICAgICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTFcIj5cbiAgICAgICAgICBGaWx0ZXIgICAgICAgICAgXG4gICAgICAgICAgIDxkaXYgW2NsYXNzXT1cImFycm93Q2xhc3Nlc1wiPlxuICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICBjbGFzcz1cImNxYS13LTIgY3FhLWgtMSBjcWEtYWJzb2x1dGUgY3FhLWxlZnQtWzRweF0gY3FhLXRvcC1bNnB4XVwiXG4gICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgOCA0XCJcbiAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICBkPVwiTTAgMEw0IDRMOCAwXCJcbiAgICAgICAgICAgICAgICBzdHJva2U9XCIjMEIwQjBDXCJcbiAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzXCJcbiAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2NxYS1idXR0b24+XG4gICAgICAgIDxjcWEtY29sdW1uLXZpc2liaWxpdHlcbiAgICAgICAgICAqbmdJZj1cInNob3dTZXR0aW5nc0J1dHRvblwiXG4gICAgICAgICAgW2NvbHVtbnNdPVwidmlzaWJpbGl0eUNvbHVtbnNcIlxuICAgICAgICAgIFtjb2x1bW5WaXNpYmlsaXR5XT1cImNvbHVtblZpc2liaWxpdHlcIlxuICAgICAgICAgIFtzZWxlY3RlZEF1dG9SZWZyZXNoSW50ZXJ2YWxdPVwic2VsZWN0ZWRBdXRvUmVmcmVzaEludGVydmFsXCJcbiAgICAgICAgICAoY29sdW1uVmlzaWJpbGl0eUNoYW5nZSk9XCJvbkNvbHVtblZpc2liaWxpdHlDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgKGF1dG9SZWZyZXNoQ2hhbmdlKT1cIm9uQXV0b1JlZnJlc2hDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgID48L2NxYS1jb2x1bW4tdmlzaWJpbGl0eT5cbiAgICAgICAgPGNxYS1idXR0b25cbiAgICAgICAgICAqbmdJZj1cInNob3dBdXRvUmVmcmVzaEJ1dHRvblwiXG4gICAgICAgICAgdmFyaWFudD1cImdyZXktc29saWRcIlxuICAgICAgICAgIGljb249XCJyZWZyZXNoXCJcbiAgICAgICAgICAoY2xpY2tlZCk9XCJoYW5kbGVSZWZyZXNoQ2xpY2soKVwiXG4gICAgICAgICAgW3Rvb2x0aXBdPVwiJ1JlZnJlc2gnXCJcbiAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJiZWxvd1wiXG4gICAgICAgID48L2NxYS1idXR0b24+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGJ1dHRvblRlbXBsYXRlIG9mIG90aGVyQnV0dG9uczsgdHJhY2tCeTogdHJhY2tCeVRlbXBsYXRlUmVmXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJ1dHRvblRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8Y3FhLXNlZ21lbnQtY29udHJvbFxuICAgICAgICAgICpuZ0lmPVwic2hvd1ZpZXdNb2RlVG9nZ2xlXCJcbiAgICAgICAgICBzaXplPVwibGdcIlxuICAgICAgICAgIFtzZWdtZW50c109XCJ2aWV3TW9kZVNlZ21lbnRzXCJcbiAgICAgICAgICBbdmFsdWVdPVwidmlld01vZGVcIlxuICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvblZpZXdNb2RlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICA+PC9jcWEtc2VnbWVudC1jb250cm9sPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8Y3FhLXNlbGVjdGVkLWZpbHRlcnMgXG4gICAgICBbZmlsdGVyQXBwbGllZF09XCJmaWx0ZXJBcHBsaWVkXCJcbiAgICAgIFtjaGlwc109XCJjaGlwc1wiXG4gICAgICAocmVtb3ZlQ2hpcCk9XCJvblJlbW92ZUNoaXAoJGV2ZW50KVwiXG4gICAgICAoY2xlYXJBbGwpPVwib25DbGVhckFsbENoaXBzKClcIlxuICAgICAgKG9uQ2xlYXJBbGwpPVwib25DbGVhckFsbC5lbWl0KClcIlxuICAgID5cbiAgICA8L2NxYS1zZWxlY3RlZC1maWx0ZXJzPlxuXG4gICAgPGNxYS1keW5hbWljLWZpbHRlclxuICAgICAgKm5nSWY9XCJzaG93RmlsdGVyUGFuZWxcIlxuICAgICAgW2NvbmZpZ109XCJmaWx0ZXJDb25maWdcIlxuICAgICAgW21vZGVsXT1cImZpbHRlck1vZGVsXCJcbiAgICAgIFtzaG93RmlsdGVyUGFuZWxdPVwic2hvd0ZpbHRlclBhbmVsXCJcbiAgICAgIChmaWx0ZXJzQ2hhbmdlZCk9XCJvbkZpbHRlcnNDaGFuZ2VkKCRldmVudClcIlxuICAgICAgKGZpbHRlcnNBcHBsaWVkKT1cIm9uRmlsdGVyc0FwcGxpZWQoJGV2ZW50KVwiXG4gICAgICAob25BcHBseUZpbHRlckNsaWNrKT1cIm9uQXBwbHlGaWx0ZXJDbGljay5lbWl0KCRldmVudClcIlxuICAgICAgKG9uUmVzZXRGaWx0ZXJDbGljayk9XCJoYW5kbGVSZXNldEZpbHRlckNsaWNrKClcIlxuICAgID5cbiAgICA8L2NxYS1keW5hbWljLWZpbHRlcj5cblxuICAgIDxkaXYgY2xhc3M9XCJjcWEtcm91bmRlZC1bN3B4XSBjcWEtb3ZlcmZsb3ctaGlkZGVuIGNxYS1ib3JkZXItdCBjcWEtYm9yZGVyLWwgY3FhLWJvcmRlci1yIGNxYS1ib3JkZXItZ3JleS0yMDAgY3FhLXJlbGF0aXZlIGNxYS1vdmVyZmxvdy14LWF1dG9cIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoaXNUYWJsZUxvYWRpbmcgfHwgaXNUYWJsZURhdGFMb2FkaW5nKSB8fCAoIWlzRW1wdHlTdGF0ZSAmJiBwYWdlZFJvd3MgJiYgcGFnZWRSb3dzLmxlbmd0aCA+IDApOyBlbHNlIHN0b3J5RW1wdHlUcGxcIj5cbiAgICAgICAgPGFwcC1keW5hbWljLXRhYmxlXG4gICAgICAgICAgW2NvbHVtbnNdPVwiY29tcHV0ZWRDb2x1bW5zXCJcbiAgICAgICAgICBbZGF0YV09XCJwYWdlZFJvd3NcIlxuICAgICAgICAgIFtyb3dTZWxlY3RhYmxlXT1cInJvd1NlbGVjdGFibGVcIlxuICAgICAgICAgIFtlbmFibGVMb2NhbFNvcnRdPVwiZW5hYmxlTG9jYWxTb3J0XCJcbiAgICAgICAgICBbaXNUYWJsZUxvYWRpbmddPVwiaXNUYWJsZUxvYWRpbmdcIlxuICAgICAgICAgIFtpc1RhYmxlRGF0YUxvYWRpbmddPVwiaXNUYWJsZURhdGFMb2FkaW5nXCJcbiAgICAgICAgICBbY2VsbEpzb25QYXRoR2V0dGVyXT1cImNlbGxKc29uUGF0aEdldHRlclwiXG4gICAgICAgICAgW29uSnNvblBhdGhDb3BpZWRIYW5kbGVyXT1cIm9uSnNvblBhdGhDb3BpZWRIYW5kbGVyXCJcbiAgICAgICAgICAoc29ydENoYW5nZSk9XCJzb3J0Q2hhbmdlLmVtaXQoJGV2ZW50KVwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZW1wdHlUYWJsZVRwbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLXB5LThcIj5cbiAgICAgICAgICAgICAgPGltZyBzcmM9XCIvYXNzZXRzL2lsbHVzdHJhdGlvbnMvZW1wdHktc3RhdGUuc3ZnXCIgYWx0PVwiTm8gZGF0YVwiIGNsYXNzPVwiY3FhLXctMzIgY3FhLWgtMzIgY3FhLW1iLTRcIiAvPlxuICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjcWEtdGV4dC1sZyBjcWEtZm9udC1zZW1pYm9sZCBjcWEtbWItMlwiPk5vIHRlc3QgY2FzZXM8L2gzPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImNxYS10ZXh0LXNtIGNxYS10ZXh0LW5ldXRyYWwtNTAwIGNxYS1tYi00XCI+VHJ5IGFkanVzdGluZyBmaWx0ZXJzIG9yIGNyZWF0ZSBhIG5ldyB0ZXN0IGNhc2UuPC9wPlxuICAgICAgICAgICAgICA8Y3FhLWJ1dHRvbiB2YXJpYW50PVwiZmlsbGVkXCIgKGNsaWNrZWQpPVwidG9nZ2xlRmlsdGVyKClcIj5TaG93IEZpbHRlcnM8L2NxYS1idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2FwcC1keW5hbWljLXRhYmxlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjc3RvcnlFbXB0eVRwbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1wLTYgY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgPGNxYS1lbXB0eS1zdGF0ZVxuICAgICAgICAgICAgKm5nSWY9XCJpc0VtcHR5U3RhdGVcIlxuICAgICAgICAgICAgW3RpdGxlXT1cImVtcHR5U3RhdGVDb25maWcudGl0bGVcIlxuICAgICAgICAgICAgW2Rlc2NyaXB0aW9uXT1cImVtcHR5U3RhdGVDb25maWcuZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgW2ltYWdlVXJsXT1cImVtcHR5U3RhdGVDb25maWcuaW1hZ2VVcmxcIlxuICAgICAgICAgICAgW2FjdGlvbnNdPVwiZW1wdHlTdGF0ZUNvbmZpZy5hY3Rpb25zXCJcbiAgICAgICAgICAgIChhY3Rpb25DbGljayk9XCJvbkVtcHR5QWN0aW9uKCRldmVudClcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L2NxYS1lbXB0eS1zdGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPC9kaXY+XG5cbiAgICA8Y3FhLXBhZ2luYXRpb25cbiAgICAgIFt0b3RhbEVsZW1lbnRzXT1cInNlcnZlclNpZGVQYWdpbmF0aW9uID8gdG90YWxFbGVtZW50cyA6IGZpbHRlcmVkUm93cy5sZW5ndGhcIlxuICAgICAgW3BhZ2VJbmRleF09XCJwYWdlSW5kZXhcIlxuICAgICAgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcbiAgICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnZVNpemVPcHRpb25zXCJcbiAgICAgIFtwYWdlU2l6ZU1lbnVEaXJlY3Rpb25dPVwicGFnZVNpemVNZW51RGlyZWN0aW9uXCJcbiAgICAgIFtwYWdlSXRlbUNvdW50XT1cInBhZ2VkUm93cy5sZW5ndGhcIlxuICAgICAgKHBhZ2luYXRlKT1cIm9uUGFnaW5hdGUoJGV2ZW50KVwiXG4gICAgICAocGFnZVNpemVDaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9jcWEtcGFnaW5hdGlvbj5cblxuICAgIDxkaXYgKm5nSWY9XCJhbnlSb3dTZWxlY3RlZFwiIGNsYXNzPVwiY3FhLWFic29sdXRlIGNxYS1ib3R0b20tWzE4Ljc1cHhdIGNxYS1sZWZ0LVs1MCVdIGNxYS10cmFuc2xhdGUteC1bLTUwJV0gY3FhLXctZnVsbCBsZzpjcWEtbWF4LXctWzY4JV0gY3FhLXNtOm1heC13LVs3NSVdIGNxYS1tYXgtdy1bOTAlXSBjcWEtei1bMV1cIiA+XG4gICAgICA8Y3FhLXRhYmxlLWFjdGlvbi10b29sYmFyXG4gICAgICAgIFtzZWxlY3RlZEl0ZW1zXT1cInNlbGVjdGVkSXRlbXMgJiYgc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwID8gc2VsZWN0ZWRJdGVtcyA6IGN1cnJlbnRTZWxlY3RlZEl0ZW1zXCJcbiAgICAgICAgW2FjdGlvbnNdPVwiYWN0aW9uc1wiXG4gICAgICAgIFtzaG93U2VsZWN0QWxsXT1cInNob3dTZWxlY3RBbGxJblRvb2xiYXJcIlxuICAgICAgICBbYWxsU2VsZWN0ZWRdPVwiYWxsU2VsZWN0ZWRJblRvb2xiYXJcIlxuICAgICAgICBbc2hvd0Rpc21pc3NdPVwic2hvd0Rpc21pc3NJblRvb2xiYXJcIlxuICAgICAgICAoYWN0aW9uQ2xpY2spPVwiYWN0aW9uQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgIChzZWxlY3RBbGxDaGFuZ2UpPVwib25Ub29sYmFyU2VsZWN0QWxsKCRldmVudClcIlxuICAgICAgICAoZGlzbWlzcyk9XCJvblRvb2xiYXJEaXNtaXNzKClcIlxuICAgICAgPjwvY3FhLXRhYmxlLWFjdGlvbi10b29sYmFyPlxuICAgIDwvZGl2PlxuICAgIFxuICA8L2Rpdj5cbjwvZGl2PlxuXG4iXX0=
|