bways-report 0.1.8 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +463 -316
- package/esm2022/lib/core/config/bways-report-config.mjs +31 -32
- package/esm2022/lib/core/models/index.mjs +1 -1
- package/esm2022/lib/core/models/report-api-endpoint.model.mjs +8 -0
- package/esm2022/lib/core/models/report-component.model.mjs +1 -1
- package/esm2022/lib/core/models/report-datasource.model.mjs +1 -1
- package/esm2022/lib/core/services/index.mjs +2 -1
- package/esm2022/lib/core/services/report-api-execution.service.mjs +210 -0
- package/esm2022/lib/core/services/report-data-discovery.service.mjs +76 -4
- package/esm2022/lib/core/services/report-session-context.service.mjs +72 -3
- package/esm2022/lib/core/tokens/designer-config.token.mjs +4 -0
- package/esm2022/lib/core/tokens/reporting-config.token.mjs +1 -1
- package/esm2022/lib/core/utils/report-endpoint.util.mjs +22 -0
- package/esm2022/lib/core/utils/report-request-scope.mjs +48 -0
- package/esm2022/lib/data-access/adapters/endpoint-datasource.adapter.mjs +31 -1
- package/esm2022/lib/data-access/adapters/endpoint-lookup.adapter.mjs +27 -2
- package/esm2022/lib/data-access/adapters/endpoint-masterdata.adapter.mjs +5 -2
- package/esm2022/lib/data-access/adapters/endpoint-persistence.adapter.mjs +30 -14
- package/esm2022/lib/data-access/adapters/endpoint-schema-discovery.adapter.mjs +32 -28
- package/esm2022/lib/data-access/adapters/endpoint-tokens.mjs +1 -1
- package/esm2022/lib/data-access/adapters/http-datasource.adapter.mjs +4 -37
- package/esm2022/lib/data-access/adapters/http-lookup.adapter.mjs +28 -51
- package/esm2022/lib/data-access/adapters/http-persistence.adapter.mjs +43 -194
- package/esm2022/lib/data-access/adapters/http-schema-discovery.adapter.mjs +17 -65
- package/esm2022/lib/data-access/adapters/index.mjs +1 -1
- package/esm2022/lib/data-access/adapters/local-storage-persistence.adapter.mjs +13 -4
- package/esm2022/lib/data-access/adapters/report-id-availability.mjs +20 -0
- package/esm2022/lib/data-access/adapters/session-headers.mjs +11 -0
- package/esm2022/lib/data-access/contracts/index.mjs +1 -1
- package/esm2022/lib/data-access/contracts/lookup.contract.mjs +1 -1
- package/esm2022/lib/data-access/contracts/report-persistence.contract.mjs +13 -1
- package/esm2022/lib/features/designer/components/component-palette/component-palette.component.mjs +536 -6
- package/esm2022/lib/features/designer/components/design-canvas/design-canvas.component.mjs +55 -17
- package/esm2022/lib/features/designer/components/dialogs/report-saved-dialog.component.mjs +546 -119
- package/esm2022/lib/features/designer/components/property-editor/parameter-binding-editor.component.mjs +3 -3
- package/esm2022/lib/features/designer/components/property-editor/property-editor-action.component.mjs +3 -3
- package/esm2022/lib/features/designer/components/property-editor/property-editor-datasource.component.mjs +142 -8
- package/esm2022/lib/features/designer/components/property-editor/property-editor-general.component.mjs +3 -3
- package/esm2022/lib/features/designer/components/property-editor/property-editor-grid.component.mjs +129 -28
- package/esm2022/lib/features/designer/components/property-editor/property-editor-layout.component.mjs +3 -3
- package/esm2022/lib/features/designer/components/property-editor/property-editor-report.component.mjs +3 -3
- package/esm2022/lib/features/designer/components/property-editor/property-editor-validation.component.mjs +3 -3
- package/esm2022/lib/features/designer/components/property-editor/property-editor.component.mjs +27 -13
- package/esm2022/lib/features/designer/components/toolbar/designer-toolbar.component.mjs +54 -32
- package/esm2022/lib/features/designer/designer.component.mjs +109 -75
- package/esm2022/lib/features/designer/rpt-report-designer.component.mjs +10 -4
- package/esm2022/lib/features/designer/services/designer-config.service.mjs +56 -0
- package/esm2022/lib/features/designer/services/designer-endpoints.service.mjs +155 -0
- package/esm2022/lib/features/designer/services/designer-state.service.mjs +3 -2
- package/esm2022/lib/features/designer/utilities/canvas-layout.util.mjs +2 -1
- package/esm2022/lib/features/embed/bways-report-builder.component.mjs +3 -3
- package/esm2022/lib/features/export/services/report-export.service.mjs +11 -6
- package/esm2022/lib/features/persistence/services/report-store.service.mjs +78 -23
- package/esm2022/lib/features/persistence/services/schema-validator.service.mjs +59 -3
- package/esm2022/lib/features/routing/components/routed-report-designer.component.mjs +12 -17
- package/esm2022/lib/features/routing/components/routed-report-runtime.component.mjs +6 -4
- package/esm2022/lib/features/routing/report-routes.mjs +6 -6
- package/esm2022/lib/features/routing/resolvers/report-route-identifier.mjs +5 -0
- package/esm2022/lib/features/routing/resolvers/report.resolver.mjs +3 -2
- package/esm2022/lib/features/runtime/dynamic-renderer.component.mjs +23 -4
- package/esm2022/lib/features/runtime/report-execution.service.mjs +36 -6
- package/esm2022/lib/features/runtime/report-grid-bridge.component.mjs +54 -11
- package/esm2022/lib/features/runtime/report-runtime.component.mjs +105 -68
- package/esm2022/lib/features/runtime/rpt-report.component.mjs +50 -42
- package/esm2022/lib/primitives/components/chart-bridge/report-chart-bridge.component.mjs +7 -2
- package/esm2022/lib/primitives/components/dropdown/rpt-dropdown.component.mjs +16 -7
- package/esm2022/lib/primitives/components/icon/rpt-icon.component.mjs +53 -1
- package/esm2022/lib/primitives/components/index.mjs +2 -1
- package/esm2022/lib/primitives/components/radio/rpt-radio.component.mjs +428 -0
- package/esm2022/lib/primitives/register-builtins.mjs +51 -2
- package/esm2022/lib/provide-reporting.mjs +11 -29
- package/fesm2022/bways-report.mjs +3745 -1281
- package/fesm2022/bways-report.mjs.map +1 -1
- package/lib/core/config/bways-report-config.d.ts +27 -5
- package/lib/core/models/index.d.ts +2 -1
- package/lib/core/models/report-api-endpoint.model.d.ts +30 -0
- package/lib/core/models/report-component.model.d.ts +16 -4
- package/lib/core/models/report-datasource.model.d.ts +21 -2
- package/lib/core/services/index.d.ts +1 -0
- package/lib/core/services/report-api-execution.service.d.ts +41 -0
- package/lib/core/services/report-data-discovery.service.d.ts +23 -1
- package/lib/core/services/report-session-context.service.d.ts +9 -0
- package/lib/core/tokens/designer-config.token.d.ts +4 -0
- package/lib/core/tokens/reporting-config.token.d.ts +4 -0
- package/lib/core/utils/report-endpoint.util.d.ts +12 -0
- package/lib/core/utils/report-request-scope.d.ts +14 -0
- package/lib/data-access/adapters/endpoint-datasource.adapter.d.ts +2 -0
- package/lib/data-access/adapters/endpoint-lookup.adapter.d.ts +1 -0
- package/lib/data-access/adapters/endpoint-persistence.adapter.d.ts +6 -2
- package/lib/data-access/adapters/endpoint-schema-discovery.adapter.d.ts +4 -2
- package/lib/data-access/adapters/endpoint-tokens.d.ts +7 -0
- package/lib/data-access/adapters/http-datasource.adapter.d.ts +1 -3
- package/lib/data-access/adapters/http-lookup.adapter.d.ts +3 -4
- package/lib/data-access/adapters/http-persistence.adapter.d.ts +11 -16
- package/lib/data-access/adapters/http-schema-discovery.adapter.d.ts +3 -5
- package/lib/data-access/adapters/index.d.ts +1 -1
- package/lib/data-access/adapters/local-storage-persistence.adapter.d.ts +2 -2
- package/lib/data-access/adapters/report-id-availability.d.ts +6 -0
- package/lib/data-access/adapters/session-headers.d.ts +3 -0
- package/lib/data-access/contracts/index.d.ts +1 -0
- package/lib/data-access/contracts/lookup.contract.d.ts +3 -0
- package/lib/data-access/contracts/report-persistence.contract.d.ts +16 -1
- package/lib/features/designer/components/component-palette/component-palette.component.d.ts +16 -0
- package/lib/features/designer/components/design-canvas/design-canvas.component.d.ts +2 -0
- package/lib/features/designer/components/dialogs/report-saved-dialog.component.d.ts +37 -5
- package/lib/features/designer/components/property-editor/property-editor-datasource.component.d.ts +21 -3
- package/lib/features/designer/components/property-editor/property-editor-grid.component.d.ts +20 -7
- package/lib/features/designer/components/property-editor/property-editor.component.d.ts +2 -1
- package/lib/features/designer/components/toolbar/designer-toolbar.component.d.ts +7 -1
- package/lib/features/designer/designer.component.d.ts +16 -2
- package/lib/features/designer/rpt-report-designer.component.d.ts +5 -1
- package/lib/features/designer/services/designer-config.service.d.ts +13 -0
- package/lib/features/designer/services/designer-endpoints.service.d.ts +25 -0
- package/lib/features/persistence/services/report-store.service.d.ts +15 -1
- package/lib/features/persistence/services/schema-validator.service.d.ts +2 -0
- package/lib/features/routing/resolvers/report-route-identifier.d.ts +2 -0
- package/lib/features/runtime/report-execution.service.d.ts +4 -0
- package/lib/features/runtime/report-grid-bridge.component.d.ts +4 -1
- package/lib/features/runtime/report-runtime.component.d.ts +14 -1
- package/lib/features/runtime/rpt-report.component.d.ts +5 -0
- package/lib/primitives/components/chart-bridge/report-chart-bridge.component.d.ts +3 -1
- package/lib/primitives/components/index.d.ts +2 -0
- package/lib/primitives/components/radio/rpt-radio.component.d.ts +77 -0
- package/package.json +2 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { generateId } from '../core/utilities/id-generator';
|
|
2
|
-
import { RptButtonComponent, RptCheckboxComponent, RptDateComponent, RptDateRangeComponent, RptDropdownComponent, RptInputComponent, RptNumberComponent, RptKpiCardComponent, ReportChartBridgeComponent, } from './components';
|
|
2
|
+
import { RptButtonComponent, RptCheckboxComponent, RptDateComponent, RptDateRangeComponent, RptDropdownComponent, RptInputComponent, RptNumberComponent, RptKpiCardComponent, ReportChartBridgeComponent, RptRadioComponent, } from './components';
|
|
3
3
|
/**
|
|
4
4
|
* Registers all built-in primitive components with the ComponentRegistry.
|
|
5
5
|
*
|
|
@@ -202,6 +202,55 @@ export function registerBuiltinComponents(registry) {
|
|
|
202
202
|
{ key: 'required', label: 'Must be checked', type: 'boolean', group: 'Validation' },
|
|
203
203
|
],
|
|
204
204
|
});
|
|
205
|
+
// 5b. Radio Group
|
|
206
|
+
registry.register({
|
|
207
|
+
type: 'radio',
|
|
208
|
+
displayName: 'Radio Group',
|
|
209
|
+
category: 'input',
|
|
210
|
+
icon: 'radio',
|
|
211
|
+
createDefaultConfig: () => ({
|
|
212
|
+
id: generateId('rad'),
|
|
213
|
+
type: 'radio',
|
|
214
|
+
key: 'radioField',
|
|
215
|
+
label: 'Radio Options',
|
|
216
|
+
properties: {
|
|
217
|
+
layout: 'horizontal',
|
|
218
|
+
appearance: 'default',
|
|
219
|
+
options: [
|
|
220
|
+
{ key: '1', label: 'Option 1' },
|
|
221
|
+
{ key: '2', label: 'Option 2' },
|
|
222
|
+
],
|
|
223
|
+
},
|
|
224
|
+
}),
|
|
225
|
+
component: RptRadioComponent,
|
|
226
|
+
propertySchema: [
|
|
227
|
+
{ key: 'label', label: 'Label', type: 'string', required: true, group: 'General' },
|
|
228
|
+
{ key: 'key', label: 'Field Name (Key)', type: 'string', required: true, group: 'General' },
|
|
229
|
+
{
|
|
230
|
+
key: 'layout',
|
|
231
|
+
label: 'Layout Orientation',
|
|
232
|
+
type: 'select',
|
|
233
|
+
defaultValue: 'horizontal',
|
|
234
|
+
options: [
|
|
235
|
+
{ key: 'horizontal', label: 'Horizontal (Inline)' },
|
|
236
|
+
{ key: 'vertical', label: 'Vertical (Stacked)' },
|
|
237
|
+
],
|
|
238
|
+
group: 'Display',
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
key: 'appearance',
|
|
242
|
+
label: 'Visual Style',
|
|
243
|
+
type: 'select',
|
|
244
|
+
defaultValue: 'default',
|
|
245
|
+
options: [
|
|
246
|
+
{ key: 'default', label: 'Standard Radios' },
|
|
247
|
+
{ key: 'button-group', label: 'Segmented Pill / Buttons' },
|
|
248
|
+
],
|
|
249
|
+
group: 'Display',
|
|
250
|
+
},
|
|
251
|
+
{ key: 'required', label: 'Required', type: 'boolean', group: 'Validation' },
|
|
252
|
+
],
|
|
253
|
+
});
|
|
205
254
|
// 6. Button
|
|
206
255
|
registry.register({
|
|
207
256
|
type: 'button',
|
|
@@ -374,4 +423,4 @@ export function registerBuiltinComponents(registry) {
|
|
|
374
423
|
],
|
|
375
424
|
});
|
|
376
425
|
}
|
|
377
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXItYnVpbHRpbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9wcmltaXRpdmVzL3JlZ2lzdGVyLWJ1aWx0aW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RCxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLG9CQUFvQixFQUNwQixnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUNwQixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQiwwQkFBMEIsR0FDM0IsTUFBTSxjQUFjLENBQUM7QUFHdEI7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUseUJBQXlCLENBQUMsUUFBMkI7SUFDbkUsZ0JBQWdCO0lBQ2hCLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFDaEIsSUFBSSxFQUFFLE9BQU87UUFDYixXQUFXLEVBQUUsWUFBWTtRQUN6QixRQUFRLEVBQUUsT0FBTztRQUNqQixJQUFJLEVBQUUsYUFBYTtRQUNuQixtQkFBbUIsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzFCLEVBQUUsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDO1lBQ3ZCLElBQUksRUFBRSxPQUFPO1lBQ2IsR0FBRyxFQUFFLFdBQVc7WUFDaEIsS0FBSyxFQUFFLFlBQVk7WUFDbkIsVUFBVSxFQUFFO2dCQUNWLFdBQVcsRUFBRSxnQkFBZ0I7Z0JBQzdCLElBQUksRUFBRSxNQUFNO2FBQ2I7U0FDRixDQUFDO1FBQ0YsU0FBUyxFQUFFLGlCQUFpQjtRQUM1QixjQUFjLEVBQUU7WUFDZCxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtZQUNs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QzFCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO2lCQUM1QjthQUNGO1lBQ0QsTUFBTSxFQUFFO2dCQUNOLFVBQVUsRUFBRSxDQUFDO2FBQ2Q7U0FDRixDQUFDO1FBQ0YsU0FBUyxFQUFFLDBCQUEwQjtRQUNyQyxjQUFjLEVBQUU7WUFDZCxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtZQUN4RjtnQkFDRSxHQUFHLEVBQUUsV0FBVztnQkFDaEIsS0FBSyxFQUFFLFlBQVk7Z0JBQ25CLElBQUksRUFBRSxRQUFRO2dCQUNkLFlBQVksRUFBRSxLQUFLO2dCQUNuQixPQUFPLEVBQUU7b0JBQ1AsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUU7b0JBQ2xDLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFO29CQUN0QyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLG1CQUFtQixFQUFFO2lCQUM1QztnQkFDRCxLQUFLLEVBQUUsU0FBUzthQUNqQjtTQUNGO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFJlZ2lzdHJ5IH0gZnJvbSAnLi4vY29yZS9yZWdpc3RyeS9jb21wb25lbnQtcmVnaXN0cnknO1xuaW1wb3J0IHsgZ2VuZXJhdGVJZCB9IGZyb20gJy4uL2NvcmUvdXRpbGl0aWVzL2lkLWdlbmVyYXRvcic7XG5pbXBvcnQge1xuICBScHRCdXR0b25Db21wb25lbnQsXG4gIFJwdENoZWNrYm94Q29tcG9uZW50LFxuICBScHREYXRlQ29tcG9uZW50LFxuICBScHREYXRlUmFuZ2VDb21wb25lbnQsXG4gIFJwdERyb3Bkb3duQ29tcG9uZW50LFxuICBScHRJbnB1dENvbXBvbmVudCxcbiAgUnB0TnVtYmVyQ29tcG9uZW50LFxuICBScHRLcGlDYXJkQ29tcG9uZW50LFxuICBSZXBvcnRDaGFydEJyaWRnZUNvbXBvbmVudCxcbn0gZnJvbSAnLi9jb21wb25lbnRzJztcblxuXG4vKipcbiAqIFJlZ2lzdGVycyBhbGwgYnVpbHQtaW4gcHJpbWl0aXZlIGNvbXBvbmVudHMgd2l0aCB0aGUgQ29tcG9uZW50UmVnaXN0cnkuXG4gKlxuICogVGhpcyBwcm92aWRlcyB0aGUgYmFzZWxpbmUgY29tcG9uZW50cyBmb3IgYW55IHJlcG9ydGluZyBwYWdlLlxuICogSG9zdCBhcHBsaWNhdGlvbnMgY2FuIG92ZXJyaWRlIGFueSBvZiB0aGVzZSBieSBjYWxsaW5nIGByZWdpc3RyeS5yZWdpc3RlcigpYFxuICogd2l0aCB0aGVpciBvd24gY3VzdG9tIGNvbXBvbmVudCBhZnRlciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIHJlZ2lzdHJ5IC0gVGhlIENvbXBvbmVudFJlZ2lzdHJ5IGluc3RhbmNlIHRvIHBvcHVsYXRlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJCdWlsdGluQ29tcG9uZW50cyhyZWdpc3RyeTogQ29tcG9uZW50UmVnaXN0cnkpOiB2b2lkIHtcbiAgLy8gMS4gVGV4dCBJbnB1dFxuICByZWdpc3RyeS5yZWdpc3Rlcih7XG4gICAgdHlwZTogJ2lucHV0JyxcbiAgICBkaXNwbGF5TmFtZTogJ1RleHQgSW5wdXQnLFxuICAgIGNhdGVnb3J5OiAnaW5wdXQnLFxuICAgIGljb246ICd0ZXh0X2ZpZWxkcycsXG4gICAgY3JlYXRlRGVmYXVsdENvbmZpZzogKCkgPT4gKHtcbiAgICAgIGlkOiBnZW5lcmF0ZUlkKCdpbnB1dCcpLFxuICAgICAgdHlwZTogJ2lucHV0JyxcbiAgICAgIGtleTogJ3RleHRJbnB1dCcsXG4gICAgICBsYWJlbDogJ1RleHQgSW5wdXQnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBwbGFjZWhvbGRlcjogJ0VudGVyIHZhbHVlLi4uJyxcbiAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgfSxcbiAgICB9KSxcbiAgICBjb21wb25lbnQ6IFJwdElucHV0Q29tcG9uZW50LFxuICAgIHByb3BlcnR5U2NoZW1hOiBbXG4gICAgICB7IGtleTogJ2xhYmVsJywgbGFiZWw6ICdMYWJlbCcsIHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZ3JvdXA6ICdHZW5lcmFsJyB9LFxuICAgICAgeyBrZXk6ICdrZXknLCBsYWJlbDogJ0ZpZWxkIE5hbWUgKEtleSknLCB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGdyb3VwOiAnR2VuZXJhbCcgfSxcbiAgICAgIHsga2V5OiAncGxhY2Vob2xkZXInLCBsYWJlbDogJ1BsYWNlaG9sZGVyJywgdHlwZTogJ3N0cmluZycsIGdyb3VwOiAnR2VuZXJhbCcgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAndHlwZScsXG4gICAgICAgIGxhYmVsOiAnSW5wdXQgVHlwZScsXG4gICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICBkZWZhdWx0VmFsdWU6ICd0ZXh0JyxcbiAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgIHsga2V5OiAndGV4dCcsIGxhYmVsOiAnVGV4dCcgfSxcbiAgICAgICAgICB7IGtleTogJ2VtYWlsJywgbGFiZWw6ICdFbWFpbCcgfSxcbiAgICAgICAgICB7IGtleTogJ3RlbCcsIGxhYmVsOiAnUGhvbmUnIH0sXG4gICAgICAgICAgeyBrZXk6ICd1cmwnLCBsYWJlbDogJ1VSTCcgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZ3JvdXA6ICdHZW5lcmFsJyxcbiAgICAgIH0sXG4gICAgICB7IGtleTogJ3JlcXVpcmVkJywgbGFiZWw6ICdSZXF1aXJlZCcsIHR5cGU6ICdib29sZWFuJywgZ3JvdXA6ICdWYWxpZGF0aW9uJyB9LFxuICAgICAgeyBrZXk6ICdtaW5MZW5ndGgnLCBsYWJlbDogJ01pbiBMZW5ndGgnLCB0eXBlOiAnbnVtYmVyJywgZ3JvdXA6ICdWYWxpZGF0aW9uJyB9LFxuICAgICAgeyBrZXk6ICdtYXhMZW5ndGgnLCBsYWJlbDogJ01heCBMZW5ndGgnLCB0eXBlOiAnbnVtYmVyJywgZ3JvdXA6ICdWYWxpZGF0aW9uJyB9LFxuICAgIF0sXG4gIH0pO1xuXG4gIC8vIDIuIERyb3Bkb3duXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyKHtcbiAgICB0eXBlOiAnZHJvcGRvd24nLFxuICAgIGRpc3BsYXlOYW1lOiAnRHJvcGRvd24nLFxuICAgIGNhdGVnb3J5OiAnaW5wdXQnLFxuICAgIGljb246ICdhcnJvd19kcm9wX2Rvd25fY2lyY2xlJyxcbiAgICBjcmVhdGVEZWZhdWx0Q29uZmlnOiAoKSA9PiAoe1xuICAgICAgaWQ6IGdlbmVyYXRlSWQoJ2Ryb3Bkb3duJyksXG4gICAgICB0eXBlOiAnZHJvcGRvd24nLFxuICAgICAga2V5OiAnZHJvcGRvd25GaWVsZCcsXG4gICAgICBsYWJlbDogJ0Ryb3Bkb3duJyxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgcGxhY2Vob2xkZXI6ICctLSBTZWxlY3QgLS0nLFxuICAgICAgICBuYXRpdmVTZWxlY3Q6IGZhbHNlLFxuICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgeyBrZXk6ICcxJywgbGFiZWw6ICdPcHRpb24gMScgfSxcbiAgICAgICAgICB7IGtleTogJzInLCBsYWJlbDogJ09wdGlvbiAyJyB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9KSxcbiAgICBjb21wb25lbnQ6IFJwdERyb3Bkb3duQ29tcG9uZW50LFxuICAgIHByb3BlcnR5U2NoZW1hOiBbXG4gICAgICB7IGtleTogJ2xhYmVsJywgbGFiZWw6ICdMYWJlbCcsIHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZ3JvdXA6ICdHZW5lcmFsJyB9LFxuICAgICAgeyBrZXk6ICdrZXknLCBsYWJlbDogJ0ZpZWxkIE5hbWUgKEtleSknLCB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGdyb3VwOiAnR2VuZXJhbCcgfSxcbiAgICAgIHsga2V5OiAncGxhY2Vob2xkZXInLCBsYWJlbDogJ1BsYWNlaG9sZGVyJywgdHlwZTogJ3N0cmluZycsIGdyb3VwOiAnR2VuZXJhbCcgfSxcbiAgICAgIHsga2V5OiAnbmF0aXZlU2VsZWN0JywgbGFiZWw6ICdOYXRpdmUgQnJvd3NlciBTZWxlY3QnLCB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHRWYWx1ZTogZmFsc2UsIGdyb3VwOiAnRGlzcGxheScgfSxcbiAgICAgIHsga2V5OiAnb3BlbkFib3ZlJywgbGFiZWw6ICdPcGVuIEFib3ZlIFRyaWdnZXInLCB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHRWYWx1ZTogZmFsc2UsIGdyb3VwOiAnRGlzcGxheScgfSxcbiAgICAgIHsga2V5OiAncmVxdWlyZWQnLCBsYWJlbDogJ1JlcXVpcmVkJywgdHlwZTogJ2Jvb2xlYW4nLCBncm91cDogJ1ZhbGlkYXRpb24nIH0sXG4gICAgXSxcbiAgfSk7XG5cbiAgLy8gMy4gRGF0ZSBQaWNrZXJcbiAgcmVnaXN0cnkucmVnaXN0ZXIoe1xuICAgIHR5cGU6ICdkYXRlJyxcbiAgICBkaXNwbGF5TmFtZTogJ0RhdGUgUGlja2VyJyxcbiAgICBjYXRlZ29yeTogJ2lucHV0JyxcbiAgICBpY29uOiAnY2FsZW5kYXJfdG9kYXknLFxuICAgIGNyZWF0ZURlZmF1bHRDb25maWc6ICgpID0+ICh7XG4gICAgICBpZDogZ2VuZXJhdGVJZCgnZGF0ZScpLFxuICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAga2V5OiAnZGF0ZUZpZWxkJyxcbiAgICAgIGxhYmVsOiAnRGF0ZScsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIGluY2x1ZGVUaW1lOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgfSksXG4gICAgY29tcG9uZW50OiBScHREYXRlQ29tcG9uZW50LFxuICAgIHByb3BlcnR5U2NoZW1hOiBbXG4gICAgICB7IGtleTogJ2xhYmVsJywgbGFiZWw6ICdMYWJlbCcsIHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZ3JvdXA6ICdHZW5lcmFsJyB9LFxuICAgICAgeyBrZXk6ICdrZXknLCBsYWJlbDogJ0ZpZWxkIE5hbWUgKEtleSknLCB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGdyb3VwOiAnR2VuZXJhbCcgfSxcbiAgICAgIHsga2V5OiAnaW5jbHVkZVRpbWUnLCBsYWJlbDogJ0luY2x1ZGUgVGltZScsIHR5cGU6ICdib29sZWFuJywgZ3JvdXA6ICdHZW5lcmFsJyB9LFxuICAgICAgeyBrZXk6ICdtaW5EYXRlJywgbGFiZWw6ICdNaW4gRGF0ZScsIHR5cGU6ICdzdHJpbmcnLCBncm91cDogJ1ZhbGlkYXRpb24nIH0sXG4gICAgICB7IGtleTogJ21heERhdGUnLCBsYWJlbDogJ01heCBEYXRlJywgdHlwZTogJ3N0cmluZycsIGdyb3VwOiAnVmFsaWRhdGlvbicgfSxcbiAgICAgIHsga2V5OiAncmVxdWlyZWQnLCBsYWJlbDogJ1JlcXVpcmVkJywgdHlwZTogJ2Jvb2xlYW4nLCBncm91cDogJ1ZhbGlkYXRpb24nIH0sXG4gICAgXSxcbiAgfSk7XG5cbiAgLy8gM2IuIFVuaWZpZWQgRGF0ZSBSYW5nZSBTZWxlY3RvclxuICByZWdpc3RyeS5yZWdpc3Rlcih7XG4gICAgdHlwZTogJ2RhdGUtcmFuZ2UnLFxuICAgIGRpc3BsYXlOYW1lOiAnRGF0ZSBSYW5nZScsXG4gICAgY2F0ZWdvcnk6ICdpbnB1dCcsXG4gICAgaWNvbjogJ2RhdGVfcmFuZ2UnLFxuICAgIGNyZWF0ZURlZmF1bHRDb25maWc6ICgpID0+ICh7XG4gICAgICBpZDogZ2VuZXJhdGVJZCgnZHJhbmdlJyksXG4gICAgICB0eXBlOiAnZGF0ZS1yYW5nZScsXG4gICAgICBrZXk6ICdkYXRlUmFuZ2UnLFxuICAgICAgbGFiZWw6ICdEYXRlIFJhbmdlJyxcbiAgICAgIGxheW91dDoge1xuICAgICAgICBjb2x1bW5TcGFuOiA0LFxuICAgICAgfSxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgZGVmYXVsdFByZXNldDogJ3RoaXNNb250aCcsXG4gICAgICAgIHNob3dQcmVzZXRzOiB0cnVlLFxuICAgICAgfSxcbiAgICB9KSxcbiAgICBjb21wb25lbnQ6IFJwdERhdGVSYW5nZUNvbXBvbmVudCxcbiAgICBwcm9wZXJ0eVNjaGVtYTogW1xuICAgICAgeyBrZXk6ICdsYWJlbCcsIGxhYmVsOiAnTGFiZWwnLCB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGdyb3VwOiAnR2VuZXJhbCcgfSxcbiAgICAgIHsga2V5OiAna2V5JywgbGFiZWw6ICdGaWVsZCBOYW1lIChLZXkpJywgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBncm91cDogJ0dlbmVyYWwnIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ2RlZmF1bHRQcmVzZXQnLFxuICAgICAgICBsYWJlbDogJ0RlZmF1bHQgUHJlc2V0JyxcbiAgICAgICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogJ3RoaXNNb250aCcsXG4gICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICB7IGtleTogJ3RvZGF5JywgbGFiZWw6ICdUb2RheScgfSxcbiAgICAgICAgICB7IGtleTogJ3llc3RlcmRheScsIGxhYmVsOiAnWWVzdGVyZGF5JyB9LFxuICAgICAgICAgIHsga2V5OiAndGhpc1dlZWsnLCBsYWJlbDogJ1RoaXMgV2VlaycgfSxcbiAgICAgICAgICB7IGtleTogJ3RoaXNNb250aCcsIGxhYmVsOiAnVGhpcyBNb250aCcgfSxcbiAgICAgICAgICB7IGtleTogJ2xhc3RNb250aCcsIGxhYmVsOiAnTGFzdCBNb250aCcgfSxcbiAgICAgICAgICB7IGtleTogJ3RoaXNRdWFydGVyJywgbGFiZWw6ICdUaGlzIFF1YXJ0ZXInIH0sXG4gICAgICAgICAgeyBrZXk6ICd5dGQnLCBsYWJlbDogJ1lURCcgfSxcbiAgICAgICAgICB7IGtleTogJ2N1c3RvbScsIGxhYmVsOiAnQ3VzdG9tIChCbGFuayknIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGdyb3VwOiAnR2VuZXJhbCcsXG4gICAgICB9LFxuICAgICAgeyBrZXk6ICdzaG93UHJlc2V0cycsIGxhYmVsOiAnU2hvdyBQcmVzZXQgUGlsbHMnLCB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHRWYWx1ZTogdHJ1ZSwgZ3JvdXA6ICdEaXNwbGF5JyB9LFxuICAgICAgeyBrZXk6ICdtaW5EYXRlJywgbGFiZWw6ICdNaW4gRGF0ZScsIHR5cGU6ICdzdHJpbmcnLCBncm91cDogJ1ZhbGlkYXRpb24nIH0sXG4gICAgICB7IGtleTogJ21heERhdGUnLCBsYWJlbDogJ01heCBEYXRlJywgdHlwZTogJ3N0cmluZycsIGdyb3VwOiAnVmFsaWRhdGlvbicgfSxcbiAgICAgIHsga2V5OiAncmVxdWlyZWQnLCBsYWJlbDogJ1JlcXVpcmVkJywgdHlwZTogJ2Jvb2xlYW4nLCBncm91cDogJ1ZhbGlkYXRpb24nIH0sXG4gICAgXSxcbiAgfSk7XG5cbiAgLy8gNC4gTnVtYmVyIElucHV0XG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyKHtcbiAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICBkaXNwbGF5TmFtZTogJ051bWJlciBJbnB1dCcsXG4gICAgY2F0ZWdvcnk6ICdpbnB1dCcsXG4gICAgaWNvbjogJ251bWJlcnMnLFxuICAgIGNyZWF0ZURlZmF1bHRDb25maWc6ICgpID0+ICh7XG4gICAgICBpZDogZ2VuZXJhdGVJZCgnbnVtYmVyJyksXG4gICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgIGtleTogJ251bWJlckZpZWxkJyxcbiAgICAgIGxhYmVsOiAnTnVtYmVyJyxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgcGxhY2Vob2xkZXI6ICcwJyxcbiAgICAgICAgc3RlcDogMSxcbiAgICAgIH0sXG4gICAgfSksXG4gICAgY29tcG9uZW50OiBScHROdW1iZXJDb21wb25lbnQsXG4gICAgcHJvcGVydHlTY2hlbWE6IFtcbiAgICAgIHsga2V5OiAnbGFiZWwnLCBsYWJlbDogJ0xhYmVsJywgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBncm91cDogJ0dlbmVyYWwnIH0sXG4gICAgICB7IGtleTogJ2tleScsIGxhYmVsOiAnRmllbGQgTmFtZSAoS2V5KScsIHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZ3JvdXA6ICdHZW5lcmFsJyB9LFxuICAgICAgeyBrZXk6ICdwbGFjZWhvbGRlcicsIGxhYmVsOiAnUGxhY2Vob2xkZXInLCB0eXBlOiAnc3RyaW5nJywgZ3JvdXA6ICdHZW5lcmFsJyB9LFxuICAgICAgeyBrZXk6ICdwcmVmaXgnLCBsYWJlbDogJ1ByZWZpeCAoZS5nLiAkKScsIHR5cGU6ICdzdHJpbmcnLCBncm91cDogJ0Rpc3BsYXknIH0sXG4gICAgICB7IGtleTogJ3N1ZmZpeCcsIGxhYmVsOiAnU3VmZml4IChlLmcuICUpJywgdHlwZTogJ3N0cmluZycsIGdyb3VwOiAnRGlzcGxheScgfSxcbiAgICAgIHsga2V5OiAnc3RlcCcsIGxhYmVsOiAnU3RlcCcsIHR5cGU6ICdudW1iZXInLCBncm91cDogJ0dlbmVyYWwnIH0sXG4gICAgICB7IGtleTogJ21pbicsIGxhYmVsOiAnTWluIFZhbHVlJywgdHlwZTogJ251bWJlcicsIGdyb3VwOiAnVmFsaWRhdGlvbicgfSxcbiAgICAgIHsga2V5OiAnbWF4JywgbGFiZWw6ICdNYXggVmFsdWUnLCB0eXBlOiAnbnVtYmVyJywgZ3JvdXA6ICdWYWxpZGF0aW9uJyB9LFxuICAgICAgeyBrZXk6ICdyZXF1aXJlZCcsIGxhYmVsOiAnUmVxdWlyZWQnLCB0eXBlOiAnYm9vbGVhbicsIGdyb3VwOiAnVmFsaWRhdGlvbicgfSxcbiAgICBdLFxuICB9KTtcblxuICAvLyA1LiBDaGVja2JveFxuICByZWdpc3RyeS5yZWdpc3Rlcih7XG4gICAgdHlwZTogJ2NoZWNrYm94JyxcbiAgICBkaXNwbGF5TmFtZTogJ0NoZWNrYm94JyxcbiAgICBjYXRlZ29yeTogJ2lucHV0JyxcbiAgICBpY29uOiAnY2hlY2tfYm94JyxcbiAgICBjcmVhdGVEZWZhdWx0Q29uZmlnOiAoKSA9PiAoe1xuICAgICAgaWQ6IGdlbmVyYXRlSWQoJ2NoaycpLFxuICAgICAgdHlwZTogJ2NoZWNrYm94JyxcbiAgICAgIGtleTogJ2NoZWNrYm94RmllbGQnLFxuICAgICAgbGFiZWw6ICdBY3RpdmUnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgICAgfSxcbiAgICB9KSxcbiAgICBjb21wb25lbnQ6IFJwdENoZWNrYm94Q29tcG9uZW50LFxuICAgIHByb3BlcnR5U2NoZW1hOiBbXG4gICAgICB7IGtleTogJ2xhYmVsJywgbGFiZWw6ICdMYWJlbCcsIHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZ3JvdXA6ICdHZW5lcmFsJyB9LFxuICAgICAgeyBrZXk6ICdrZXknLCBsYWJlbDogJ0ZpZWxkIE5hbWUgKEtleSknLCB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGdyb3VwOiAnR2VuZXJhbCcgfSxcbiAgICAgIHsga2V5OiAnZGVmYXVsdFZhbHVlJywgbGFiZWw6ICdEZWZhdWx0IFZhbHVlJywgdHlwZTogJ2Jvb2xlYW4nLCBncm91cDogJ0dlbmVyYWwnIH0sXG4gICAgICB7IGtleTogJ3JlcXVpcmVkJywgbGFiZWw6ICdNdXN0IGJlIGNoZWNrZWQnLCB0eXBlOiAnYm9vbGVhbicsIGdyb3VwOiAnVmFsaWRhdGlvbicgfSxcbiAgICBdLFxuICB9KTtcblxuICAvLyA2LiBCdXR0b25cbiAgcmVnaXN0cnkucmVnaXN0ZXIoe1xuICAgIHR5cGU6ICdidXR0b24nLFxuICAgIGRpc3BsYXlOYW1lOiAnQWN0aW9uIEJ1dHRvbicsXG4gICAgY2F0ZWdvcnk6ICdhY3Rpb24nLFxuICAgIGljb246ICdzbWFydF9idXR0b24nLFxuICAgIGNyZWF0ZURlZmF1bHRDb25maWc6ICgpID0+ICh7XG4gICAgICBpZDogZ2VuZXJhdGVJZCgnYnRuJyksXG4gICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgIGxhYmVsOiAnUnVuIFJlcG9ydCcsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIHZhcmlhbnQ6ICdwcmltYXJ5JyxcbiAgICAgICAgYWN0aW9uOiAnZXhlY3V0ZS1yZXBvcnQnLFxuICAgICAgfSxcbiAgICB9KSxcbiAgICBjb21wb25lbnQ6IFJwdEJ1dHRvbkNvbXBvbmVudCxcbiAgICBwcm9wZXJ0eVNjaGVtYTogW1xuICAgICAgeyBrZXk6ICdsYWJlbCcsIGxhYmVsOiAnQnV0dG9uIFRleHQnLCB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGdyb3VwOiAnR2VuZXJhbCcgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnaWNvbicsXG4gICAgICAgIGxhYmVsOiAnQnV0dG9uIEljb24nLFxuICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiAnJyxcbiAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgIHsga2V5OiAnJywgbGFiZWw6ICdOb25lIChObyBJY29uKScgfSxcbiAgICAgICAgICB7IGtleTogJ3NlYXJjaCcsIGxhYmVsOiAnU2VhcmNoJyB9LFxuICAgICAgICAgIHsga2V5OiAnZG93bmxvYWQnLCBsYWJlbDogJ0Rvd25sb2FkJyB9LFxuICAgICAgICAgIHsga2V5OiAnZmlsdGVyJywgbGFiZWw6ICdGaWx0ZXInIH0sXG4gICAgICAgICAgeyBrZXk6ICdyZWZyZXNoJywgbGFiZWw6ICdSZWZyZXNoJyB9LFxuICAgICAgICAgIHsga2V5OiAnY2hlY2snLCBsYWJlbDogJ0NoZWNrJyB9LFxuICAgICAgICAgIHsga2V5OiAncGx1cycsIGxhYmVsOiAnUGx1cycgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZ3JvdXA6ICdEaXNwbGF5JyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ2Z1bGxXaWR0aCcsXG4gICAgICAgIGxhYmVsOiAnRnVsbCBXaWR0aCAoRmlsbCBDb2x1bW4pJyxcbiAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgICAgICBncm91cDogJ0Rpc3BsYXknLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAndmFyaWFudCcsXG4gICAgICAgIGxhYmVsOiAnU3R5bGUgVmFyaWFudCcsXG4gICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICBkZWZhdWx0VmFsdWU6ICdwcmltYXJ5JyxcbiAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgIHsga2V5OiAncHJpbWFyeScsIGxhYmVsOiAnUHJpbWFyeScgfSxcbiAgICAgICAgICB7IGtleTogJ3NlY29uZGFyeScsIGxhYmVsOiAnU2Vjb25kYXJ5JyB9LFxuICAgICAgICAgIHsga2V5OiAnb3V0bGluZScsIGxhYmVsOiAnT3V0bGluZScgfSxcbiAgICAgICAgICB7IGtleTogJ2RhbmdlcicsIGxhYmVsOiAnRGFuZ2VyJyB9LFxuICAgICAgICBdLFxuICAgICAgICBncm91cDogJ0Rpc3BsYXknLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnYWN0aW9uJyxcbiAgICAgICAgbGFiZWw6ICdBY3Rpb24gVHlwZScsXG4gICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICBkZWZhdWx0VmFsdWU6ICdleGVjdXRlLXJlcG9ydCcsXG4gICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICB7IGtleTogJ2V4ZWN1dGUtcmVwb3J0JywgbGFiZWw6ICdFeGVjdXRlIFJlcG9ydCcgfSxcbiAgICAgICAgICB7IGtleTogJ3Jlc2V0JywgbGFiZWw6ICdSZXNldCBGb3JtJyB9LFxuICAgICAgICAgIHsga2V5OiAnY3VzdG9tJywgbGFiZWw6ICdDdXN0b20gRXZlbnQnIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGdyb3VwOiAnQWN0aW9uJyxcbiAgICAgIH0sXG4gICAgXSxcbiAgfSk7XG5cbiAgLy8gNy4gS1BJIE1ldHJpYyBDYXJkXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyKHtcbiAgICB0eXBlOiAna3BpLWNhcmQnLFxuICAgIGRpc3BsYXlOYW1lOiAnS1BJIE1ldHJpYyBDYXJkJyxcbiAgICBjYXRlZ29yeTogJ2Rpc3BsYXknLFxuICAgIGljb246ICdtb25pdG9yaW5nJyxcbiAgICBjcmVhdGVEZWZhdWx0Q29uZmlnOiAoKSA9PiAoe1xuICAgICAgaWQ6IGdlbmVyYXRlSWQoJ2twaScpLFxuICAgICAgdHlwZTogJ2twaS1jYXJkJyxcbiAgICAgIGxhYmVsOiAnVG90YWwgUmV2ZW51ZScsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIHRpdGxlOiAnVG90YWwgUmV2ZW51ZScsXG4gICAgICAgIHZhbHVlOiAxMjU0MDAsXG4gICAgICAgIHByZWZpeDogJyQnLFxuICAgICAgICB0aGVtZTogJ3ByaW1hcnknLFxuICAgICAgICBpY29uOiAnZG9sbGFyJyxcbiAgICAgICAgdHJlbmRWYWx1ZTogMTIuOCxcbiAgICAgICAgdHJlbmREaXJlY3Rpb246ICd1cCcsXG4gICAgICAgIHRyZW5kTGFiZWw6ICd2cyBsYXN0IG1vbnRoJ1xuICAgICAgfSxcbiAgICAgIGxheW91dDoge1xuICAgICAgICBjb2x1bW5TcGFuOiAzLFxuICAgICAgfVxuICAgIH0pLFxuICAgIGNvbXBvbmVudDogUnB0S3BpQ2FyZENvbXBvbmVudCxcbiAgICBwcm9wZXJ0eVNjaGVtYTogW1xuICAgICAgeyBrZXk6ICd0aXRsZScsIGxhYmVsOiAnTWV0cmljIFRpdGxlJywgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBncm91cDogJ0dlbmVyYWwnIH0sXG4gICAgICB7IGtleTogJ3ZhbHVlJywgbGFiZWw6ICdWYWx1ZScsIHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZ3JvdXA6ICdHZW5lcmFsJyB9LFxuICAgICAgeyBrZXk6ICdwcmVmaXgnLCBsYWJlbDogJ1ByZWZpeCAoZS5nLiAkKScsIHR5cGU6ICdzdHJpbmcnLCBncm91cDogJ0Rpc3BsYXknIH0sXG4gICAgICB7IGtleTogJ3N1ZmZpeCcsIGxhYmVsOiAnU3VmZml4IChlLmcuICUpJywgdHlwZTogJ3N0cmluZycsIGdyb3VwOiAnRGlzcGxheScgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAndGhlbWUnLFxuICAgICAgICBsYWJlbDogJ1RoZW1lIEFjY2VudCcsXG4gICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICBkZWZhdWx0VmFsdWU6ICdwcmltYXJ5JyxcbiAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgIHsga2V5OiAncHJpbWFyeScsIGxhYmVsOiAnUHJpbWFyeSAoQmx1ZSknIH0sXG4gICAgICAgICAgeyBrZXk6ICdzdWNjZXNzJywgbGFiZWw6ICdTdWNjZXNzIChHcmVlbiknIH0sXG4gICAgICAgICAgeyBrZXk6ICd3YXJuaW5nJywgbGFiZWw6ICdXYXJuaW5nIChBbWJlciknIH0sXG4gICAgICAgICAgeyBrZXk6ICdkYW5nZXInLCBsYWJlbDogJ0RhbmdlciAoUmVkKScgfSxcbiAgICAgICAgICB7IGtleTogJ2luZm8nLCBsYWJlbDogJ0luZm8gKEN5YW4pJyB9LFxuICAgICAgICAgIHsga2V5OiAnbmV1dHJhbCcsIGxhYmVsOiAnTmV1dHJhbCAoU2xhdGUpJyB9LFxuICAgICAgICBdLFxuICAgICAgICBncm91cDogJ0Rpc3BsYXknLFxuICAgICAgfSxcbiAgICAgIHsga2V5OiAnaWNvbicsIGxhYmVsOiAnSWNvbiAoZS5nLiBkb2xsYXIsIGNoZWNrLCBjaGFydC1iYXIsIGJveCknLCB0eXBlOiAnc3RyaW5nJywgZ3JvdXA6ICdEaXNwbGF5JyB9LFxuICAgICAgeyBrZXk6ICd0cmVuZFZhbHVlJywgbGFiZWw6ICdUcmVuZCBWYWx1ZSAoJSknLCB0eXBlOiAnbnVtYmVyJywgZ3JvdXA6ICdUcmVuZCcgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAndHJlbmREaXJlY3Rpb24nLFxuICAgICAgICBsYWJlbDogJ1RyZW5kIERpcmVjdGlvbicsXG4gICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICBkZWZhdWx0VmFsdWU6ICduZXV0cmFsJyxcbiAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgIHsga2V5OiAndXAnLCBsYWJlbDogJ1VwIChHcm93dGgpJyB9LFxuICAgICAgICAgIHsga2V5OiAnZG93bicsIGxhYmVsOiAnRG93biAoRGVjbGluZSknIH0sXG4gICAgICAgICAgeyBrZXk6ICduZXV0cmFsJywgbGFiZWw6ICdOZXV0cmFsJyB9LFxuICAgICAgICBdLFxuICAgICAgICBncm91cDogJ1RyZW5kJyxcbiAgICAgIH0sXG4gICAgICB7IGtleTogJ3RyZW5kTGFiZWwnLCBsYWJlbDogJ1RyZW5kIExhYmVsJywgdHlwZTogJ3N0cmluZycsIGdyb3VwOiAnVHJlbmQnIH0sXG4gICAgXSxcbiAgfSk7XG5cbiAgLy8gOC4gQ2hhcnQgQnJpZGdlXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyKHtcbiAgICB0eXBlOiAnY2hhcnQnLFxuICAgIGRpc3BsYXlOYW1lOiAnQ2hhcnQgVmlzdWFsaXphdGlvbicsXG4gICAgY2F0ZWdvcnk6ICdkaXNwbGF5JyxcbiAgICBpY29uOiAnYmFyX2NoYXJ0JyxcbiAgICBjcmVhdGVEZWZhdWx0Q29uZmlnOiAoKSA9PiAoe1xuICAgICAgaWQ6IGdlbmVyYXRlSWQoJ2NoYXJ0JyksXG4gICAgICB0eXBlOiAnY2hhcnQnLFxuICAgICAgbGFiZWw6ICdQZXJmb3JtYW5jZSBCcmVha2Rvd24nLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICB0aXRsZTogJ01vbnRobHkgUGVyZm9ybWFuY2UnLFxuICAgICAgICBjaGFydFR5cGU6ICdiYXInLFxuICAgICAgICBkYXRhOiBbXG4gICAgICAgICAgeyBsYWJlbDogJ1ExJywgdmFsdWU6IDQ1IH0sXG4gICAgICAgICAgeyBsYWJlbDogJ1EyJywgdmFsdWU6IDY4IH0sXG4gICAgICAgICAgeyBsYWJlbDogJ1EzJywgdmFsdWU6IDg1IH0sXG4gICAgICAgICAgeyBsYWJlbDogJ1E0JywgdmFsdWU6IDExMCB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBsYXlvdXQ6IHtcbiAgICAgICAgY29sdW1uU3BhbjogNixcbiAgICAgIH1cbiAgICB9KSxcbiAgICBjb21wb25lbnQ6IFJlcG9ydENoYXJ0QnJpZGdlQ29tcG9uZW50LFxuICAgIHByb3BlcnR5U2NoZW1hOiBbXG4gICAgICB7IGtleTogJ3RpdGxlJywgbGFiZWw6ICdDaGFydCBUaXRsZScsIHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZ3JvdXA6ICdHZW5lcmFsJyB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdjaGFydFR5cGUnLFxuICAgICAgICBsYWJlbDogJ0NoYXJ0IFR5cGUnLFxuICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiAnYmFyJyxcbiAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgIHsga2V5OiAnYmFyJywgbGFiZWw6ICdCYXIgQ2hhcnQnIH0sXG4gICAgICAgICAgeyBrZXk6ICdkb251dCcsIGxhYmVsOiAnRG9udXQgQ2hhcnQnIH0sXG4gICAgICAgICAgeyBrZXk6ICdsaW5lJywgbGFiZWw6ICdMaW5lIC8gQXJlYSBDaGFydCcgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZ3JvdXA6ICdHZW5lcmFsJyxcbiAgICAgIH0sXG4gICAgXSxcbiAgfSk7XG59XG5cblxuIl19
|
|
426
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXItYnVpbHRpbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9wcmltaXRpdmVzL3JlZ2lzdGVyLWJ1aWx0aW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RCxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLG9CQUFvQixFQUNwQixnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUNwQixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQiwwQkFBMEIsRUFDMUIsaUJBQWlCLEdBQ2xCLE1BQU0sY0FBYyxDQUFDO0FBR3RCOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUFDLFFBQTJCO0lBQ25FLGdCQUFnQjtJQUNoQixRQUFRLENBQUMsUUFBUSxDQUFDO1FBQ2hCLElBQUksRUFBRSxPQUFPO1FBQ2IsV0FBVyxFQUFFLFlBQVk7UUFDekIsUUFBUSxFQUFFLE9BQU87UUFDakIsSUFBSSxFQUFFLGFBQWE7UUFDbkIsbUJBQW1CLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUMxQixFQUFFLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQztZQUN2QixJQUFJLEVBQUUsT0FBTztZQUNiLEdBQUcsRUFBRSxXQUFXO1lBQ2hCLEtBQUssRUFBRSxZQUFZO1lBQ25CLFVBQVUsRUFBRTtnQkFDVixXQUFXLEVBQUUsZ0JBQWdCO2dCQUM3QixJQUFJLEVBQUUsTUFBTTthQUNiO1NBQ0YsQ0FBQztRQUNGLFNBQVMsRUFBRSxpQkFBaUI7UUFDNUIsY0FBYyxFQUFFO1lBQ2QsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxT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QUFFLGFBQWEsRUFBRTtvQkFDdEMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRTtpQkFDNUM7Z0JBQ0QsS0FBSyxFQUFFLFNBQVM7YUFDakI7U0FDRjtLQUNGLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRSZWdpc3RyeSB9IGZyb20gJy4uL2NvcmUvcmVnaXN0cnkvY29tcG9uZW50LXJlZ2lzdHJ5JztcbmltcG9ydCB7IGdlbmVyYXRlSWQgfSBmcm9tICcuLi9jb3JlL3V0aWxpdGllcy9pZC1nZW5lcmF0b3InO1xuaW1wb3J0IHtcbiAgUnB0QnV0dG9uQ29tcG9uZW50LFxuICBScHRDaGVja2JveENvbXBvbmVudCxcbiAgUnB0RGF0ZUNvbXBvbmVudCxcbiAgUnB0RGF0ZVJhbmdlQ29tcG9uZW50LFxuICBScHREcm9wZG93bkNvbXBvbmVudCxcbiAgUnB0SW5wdXRDb21wb25lbnQsXG4gIFJwdE51bWJlckNvbXBvbmVudCxcbiAgUnB0S3BpQ2FyZENvbXBvbmVudCxcbiAgUmVwb3J0Q2hhcnRCcmlkZ2VDb21wb25lbnQsXG4gIFJwdFJhZGlvQ29tcG9uZW50LFxufSBmcm9tICcuL2NvbXBvbmVudHMnO1xuXG5cbi8qKlxuICogUmVnaXN0ZXJzIGFsbCBidWlsdC1pbiBwcmltaXRpdmUgY29tcG9uZW50cyB3aXRoIHRoZSBDb21wb25lbnRSZWdpc3RyeS5cbiAqXG4gKiBUaGlzIHByb3ZpZGVzIHRoZSBiYXNlbGluZSBjb21wb25lbnRzIGZvciBhbnkgcmVwb3J0aW5nIHBhZ2UuXG4gKiBIb3N0IGFwcGxpY2F0aW9ucyBjYW4gb3ZlcnJpZGUgYW55IG9mIHRoZXNlIGJ5IGNhbGxpbmcgYHJlZ2lzdHJ5LnJlZ2lzdGVyKClgXG4gKiB3aXRoIHRoZWlyIG93biBjdXN0b20gY29tcG9uZW50IGFmdGVyIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0gcmVnaXN0cnkgLSBUaGUgQ29tcG9uZW50UmVnaXN0cnkgaW5zdGFuY2UgdG8gcG9wdWxhdGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckJ1aWx0aW5Db21wb25lbnRzKHJlZ2lzdHJ5OiBDb21wb25lbnRSZWdpc3RyeSk6IHZvaWQge1xuICAvLyAxLiBUZXh0IElucHV0XG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyKHtcbiAgICB0eXBlOiAnaW5wdXQnLFxuICAgIGRpc3BsYXlOYW1lOiAnVGV4dCBJbnB1dCcsXG4gICAgY2F0ZWdvcnk6ICdpbnB1dCcsXG4gICAgaWNvbjogJ3RleHRfZmllbGRzJyxcbiAgICBjcmVhdGVEZWZhdWx0Q29uZmlnOiAoKSA9PiAoe1xuICAgICAgaWQ6IGdlbmVyYXRlSWQoJ2lucHV0JyksXG4gICAgICB0eXBlOiAnaW5wdXQnLFxuICAgICAga2V5OiAndGV4dElucHV0JyxcbiAgICAgIGxhYmVsOiAnVGV4dCBJbnB1dCcsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIHBsYWNlaG9sZGVyOiAnRW50ZXIgdmFsdWUuLi4nLFxuICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICB9LFxuICAgIH0pLFxuICAgIGNvbXBvbmVudDogUnB0SW5wdXRDb21wb25lbnQsXG4gICAgcHJvcGVydHlTY2hlbWE6IFtcbiAgICAgIHsga2V5OiAnbGFiZWwnLCBsYWJlbDogJ0xhYmVsJywgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBncm91cDogJ0dlbmVyYWwnIH0sXG4gICAgICB7IGtleTogJ2tleScsIGxhYmVsOiAnRmllbGQgTmFtZSAoS2V5KScsIHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZ3JvdXA6ICdHZW5lcmFsJyB9LFxuICAgICAgeyBrZXk6ICdwbGFjZWhvbGRlcicsIGxhYmVsOiAnUGxhY2Vob2xkZXInLCB0eXBlOiAnc3RyaW5nJywgZ3JvdXA6ICdHZW5lcmFsJyB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICd0eXBlJyxcbiAgICAgICAgbGFiZWw6ICdJbnB1dCBUeXBlJyxcbiAgICAgICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogJ3RleHQnLFxuICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgeyBrZXk6ICd0ZXh0JywgbGFiZWw6ICdUZXh0JyB9LFxuICAgICAgICAgIHsga2V5OiAnZW1haWwnLCBsYWJlbDogJ0VtYWlsJyB9LFxuICAgICAgICAgIHsga2V5OiAndGVsJywgbGFiZWw6ICdQaG9uZScgfSxcbiAgICAgICAgICB7IGtleTogJ3VybCcsIGxhYmVsOiAnVVJMJyB9LFxuICAgICAgICBdLFxuICAgICAgICBncm91cDogJ0dlbmVyYWwnLFxuICAgICAgfSxcbiAgICAgIHsga2V5OiAncmVxdWlyZWQnLCBsYWJlbDogJ1JlcXVpcmVkJywgdHlwZTogJ2Jvb2xlYW4nLCBncm91cDogJ1ZhbGlkYXRpb24nIH0sXG4gICAgICB7IGtleTogJ21pbkxlbmd0aCcsIGxhYmVsOiAnTWluIExlbmd0aCcsIHR5cGU6ICdudW1iZXInLCBncm91cDogJ1ZhbGlkYXRpb24nIH0sXG4gICAgICB7IGtleTogJ21heExlbmd0aCcsIGxhYmVsOiAnTWF4IExlbmd0aCcsIHR5cGU6ICdudW1iZXInLCBncm91cDogJ1ZhbGlkYXRpb24nIH0sXG4gICAgXSxcbiAgfSk7XG5cbiAgLy8gMi4gRHJvcGRvd25cbiAgcmVnaXN0cnkucmVnaXN0ZXIoe1xuICAgIHR5cGU6ICdkcm9wZG93bicsXG4gICAgZGlzcGxheU5hbWU6ICdEcm9wZG93bicsXG4gICAgY2F0ZWdvcnk6ICdpbnB1dCcsXG4gICAgaWNvbjogJ2Fycm93X2Ryb3BfZG93bl9jaXJjbGUnLFxuICAgIGNyZWF0ZURlZmF1bHRDb25maWc6ICgpID0+ICh7XG4gICAgICBpZDogZ2VuZXJhdGVJZCgnZHJvcGRvd24nKSxcbiAgICAgIHR5cGU6ICdkcm9wZG93bicsXG4gICAgICBrZXk6ICdkcm9wZG93bkZpZWxkJyxcbiAgICAgIGxhYmVsOiAnRHJvcGRvd24nLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBwbGFjZWhvbGRlcjogJy0tIFNlbGVjdCAtLScsXG4gICAgICAgIG5hdGl2ZVNlbGVjdDogZmFsc2UsXG4gICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICB7IGtleTogJzEnLCBsYWJlbDogJ09wdGlvbiAxJyB9LFxuICAgICAgICAgIHsga2V5OiAnMicsIGxhYmVsOiAnT3B0aW9uIDInIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH0pLFxuICAgIGNvbXBvbmVudDogUnB0RHJvcGRvd25Db21wb25lbnQsXG4gICAgcHJvcGVydHlTY2hlbWE6IFtcbiAgICAgIHsga2V5OiAnbGFiZWwnLCBsYWJlbDogJ0xhYmVsJywgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBncm91cDogJ0dlbmVyYWwnIH0sXG4gICAgICB7IGtleTogJ2tleScsIGxhYmVsOiAnRmllbGQgTmFtZSAoS2V5KScsIHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZ3JvdXA6ICdHZW5lcmFsJyB9LFxuICAgICAgeyBrZXk6ICdwbGFjZWhvbGRlcicsIGxhYmVsOiAnUGxhY2Vob2xkZXInLCB0eXBlOiAnc3RyaW5nJywgZ3JvdXA6ICdHZW5lcmFsJyB9LFxuICAgICAgeyBrZXk6ICduYXRpdmVTZWxlY3QnLCBsYWJlbDogJ05hdGl2ZSBCcm93c2VyIFNlbGVjdCcsIHR5cGU6ICdib29sZWFuJywgZGVmYXVsdFZhbHVlOiBmYWxzZSwgZ3JvdXA6ICdEaXNwbGF5JyB9LFxuICAgICAgeyBrZXk6ICdvcGVuQWJvdmUnLCBsYWJlbDogJ09wZW4gQWJvdmUgVHJpZ2dlcicsIHR5cGU6ICdib29sZWFuJywgZGVmYXVsdFZhbHVlOiBmYWxzZSwgZ3JvdXA6ICdEaXNwbGF5JyB9LFxuICAgICAgeyBrZXk6ICdyZXF1aXJlZCcsIGxhYmVsOiAnUmVxdWlyZWQnLCB0eXBlOiAnYm9vbGVhbicsIGdyb3VwOiAnVmFsaWRhdGlvbicgfSxcbiAgICBdLFxuICB9KTtcblxuICAvLyAzLiBEYXRlIFBpY2tlclxuICByZWdpc3RyeS5yZWdpc3Rlcih7XG4gICAgdHlwZTogJ2RhdGUnLFxuICAgIGRpc3BsYXlOYW1lOiAnRGF0ZSBQaWNrZXInLFxuICAgIGNhdGVnb3J5OiAnaW5wdXQnLFxuICAgIGljb246ICdjYWxlbmRhcl90b2RheScsXG4gICAgY3JlYXRlRGVmYXVsdENvbmZpZzogKCkgPT4gKHtcbiAgICAgIGlkOiBnZW5lcmF0ZUlkKCdkYXRlJyksXG4gICAgICB0eXBlOiAnZGF0ZScsXG4gICAgICBrZXk6ICdkYXRlRmllbGQnLFxuICAgICAgbGFiZWw6ICdEYXRlJyxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgaW5jbHVkZVRpbWU6IGZhbHNlLFxuICAgICAgfSxcbiAgICB9KSxcbiAgICBjb21wb25lbnQ6IFJwdERhdGVDb21wb25lbnQsXG4gICAgcHJvcGVydHlTY2hlbWE6IFtcbiAgICAgIHsga2V5OiAnbGFiZWwnLCBsYWJlbDogJ0xhYmVsJywgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBncm91cDogJ0dlbmVyYWwnIH0sXG4gICAgICB7IGtleTogJ2tleScsIGxhYmVsOiAnRmllbGQgTmFtZSAoS2V5KScsIHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZ3JvdXA6ICdHZW5lcmFsJyB9LFxuICAgICAgeyBrZXk6ICdpbmNsdWRlVGltZScsIGxhYmVsOiAnSW5jbHVkZSBUaW1lJywgdHlwZTogJ2Jvb2xlYW4nLCBncm91cDogJ0dlbmVyYWwnIH0sXG4gICAgICB7IGtleTogJ21pbkRhdGUnLCBsYWJlbDogJ01pbiBEYXRlJywgdHlwZTogJ3N0cmluZycsIGdyb3VwOiAnVmFsaWRhdGlvbicgfSxcbiAgICAgIHsga2V5OiAnbWF4RGF0ZScsIGxhYmVsOiAnTWF4IERhdGUnLCB0eXBlOiAnc3RyaW5nJywgZ3JvdXA6ICdWYWxpZGF0aW9uJyB9LFxuICAgICAgeyBrZXk6ICdyZXF1aXJlZCcsIGxhYmVsOiAnUmVxdWlyZWQnLCB0eXBlOiAnYm9vbGVhbicsIGdyb3VwOiAnVmFsaWRhdGlvbicgfSxcbiAgICBdLFxuICB9KTtcblxuICAvLyAzYi4gVW5pZmllZCBEYXRlIFJhbmdlIFNlbGVjdG9yXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyKHtcbiAgICB0eXBlOiAnZGF0ZS1yYW5nZScsXG4gICAgZGlzcGxheU5hbWU6ICdEYXRlIFJhbmdlJyxcbiAgICBjYXRlZ29yeTogJ2lucHV0JyxcbiAgICBpY29uOiAnZGF0ZV9yYW5nZScsXG4gICAgY3JlYXRlRGVmYXVsdENvbmZpZzogKCkgPT4gKHtcbiAgICAgIGlkOiBnZW5lcmF0ZUlkKCdkcmFuZ2UnKSxcbiAgICAgIHR5cGU6ICdkYXRlLXJhbmdlJyxcbiAgICAgIGtleTogJ2RhdGVSYW5nZScsXG4gICAgICBsYWJlbDogJ0RhdGUgUmFuZ2UnLFxuICAgICAgbGF5b3V0OiB7XG4gICAgICAgIGNvbHVtblNwYW46IDQsXG4gICAgICB9LFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBkZWZhdWx0UHJlc2V0OiAndGhpc01vbnRoJyxcbiAgICAgICAgc2hvd1ByZXNldHM6IHRydWUsXG4gICAgICB9LFxuICAgIH0pLFxuICAgIGNvbXBvbmVudDogUnB0RGF0ZVJhbmdlQ29tcG9uZW50LFxuICAgIHByb3BlcnR5U2NoZW1hOiBbXG4gICAgICB7IGtleTogJ2xhYmVsJywgbGFiZWw6ICdMYWJlbCcsIHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZ3JvdXA6ICdHZW5lcmFsJyB9LFxuICAgICAgeyBrZXk6ICdrZXknLCBsYWJlbDogJ0ZpZWxkIE5hbWUgKEtleSknLCB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGdyb3VwOiAnR2VuZXJhbCcgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnZGVmYXVsdFByZXNldCcsXG4gICAgICAgIGxhYmVsOiAnRGVmYXVsdCBQcmVzZXQnLFxuICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiAndGhpc01vbnRoJyxcbiAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgIHsga2V5OiAndG9kYXknLCBsYWJlbDogJ1RvZGF5JyB9LFxuICAgICAgICAgIHsga2V5OiAneWVzdGVyZGF5JywgbGFiZWw6ICdZZXN0ZXJkYXknIH0sXG4gICAgICAgICAgeyBrZXk6ICd0aGlzV2VlaycsIGxhYmVsOiAnVGhpcyBXZWVrJyB9LFxuICAgICAgICAgIHsga2V5OiAndGhpc01vbnRoJywgbGFiZWw6ICdUaGlzIE1vbnRoJyB9LFxuICAgICAgICAgIHsga2V5OiAnbGFzdE1vbnRoJywgbGFiZWw6ICdMYXN0IE1vbnRoJyB9LFxuICAgICAgICAgIHsga2V5OiAndGhpc1F1YXJ0ZXInLCBsYWJlbDogJ1RoaXMgUXVhcnRlcicgfSxcbiAgICAgICAgICB7IGtleTogJ3l0ZCcsIGxhYmVsOiAnWVREJyB9LFxuICAgICAgICAgIHsga2V5OiAnY3VzdG9tJywgbGFiZWw6ICdDdXN0b20gKEJsYW5rKScgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZ3JvdXA6ICdHZW5lcmFsJyxcbiAgICAgIH0sXG4gICAgICB7IGtleTogJ3Nob3dQcmVzZXRzJywgbGFiZWw6ICdTaG93IFByZXNldCBQaWxscycsIHR5cGU6ICdib29sZWFuJywgZGVmYXVsdFZhbHVlOiB0cnVlLCBncm91cDogJ0Rpc3BsYXknIH0sXG4gICAgICB7IGtleTogJ21pbkRhdGUnLCBsYWJlbDogJ01pbiBEYXRlJywgdHlwZTogJ3N0cmluZycsIGdyb3VwOiAnVmFsaWRhdGlvbicgfSxcbiAgICAgIHsga2V5OiAnbWF4RGF0ZScsIGxhYmVsOiAnTWF4IERhdGUnLCB0eXBlOiAnc3RyaW5nJywgZ3JvdXA6ICdWYWxpZGF0aW9uJyB9LFxuICAgICAgeyBrZXk6ICdyZXF1aXJlZCcsIGxhYmVsOiAnUmVxdWlyZWQnLCB0eXBlOiAnYm9vbGVhbicsIGdyb3VwOiAnVmFsaWRhdGlvbicgfSxcbiAgICBdLFxuICB9KTtcblxuICAvLyA0LiBOdW1iZXIgSW5wdXRcbiAgcmVnaXN0cnkucmVnaXN0ZXIoe1xuICAgIHR5cGU6ICdudW1iZXInLFxuICAgIGRpc3BsYXlOYW1lOiAnTnVtYmVyIElucHV0JyxcbiAgICBjYXRlZ29yeTogJ2lucHV0JyxcbiAgICBpY29uOiAnbnVtYmVycycsXG4gICAgY3JlYXRlRGVmYXVsdENvbmZpZzogKCkgPT4gKHtcbiAgICAgIGlkOiBnZW5lcmF0ZUlkKCdudW1iZXInKSxcbiAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAga2V5OiAnbnVtYmVyRmllbGQnLFxuICAgICAgbGFiZWw6ICdOdW1iZXInLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBwbGFjZWhvbGRlcjogJzAnLFxuICAgICAgICBzdGVwOiAxLFxuICAgICAgfSxcbiAgICB9KSxcbiAgICBjb21wb25lbnQ6IFJwdE51bWJlckNvbXBvbmVudCxcbiAgICBwcm9wZXJ0eVNjaGVtYTogW1xuICAgICAgeyBrZXk6ICdsYWJlbCcsIGxhYmVsOiAnTGFiZWwnLCB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGdyb3VwOiAnR2VuZXJhbCcgfSxcbiAgICAgIHsga2V5OiAna2V5JywgbGFiZWw6ICdGaWVsZCBOYW1lIChLZXkpJywgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBncm91cDogJ0dlbmVyYWwnIH0sXG4gICAgICB7IGtleTogJ3BsYWNlaG9sZGVyJywgbGFiZWw6ICdQbGFjZWhvbGRlcicsIHR5cGU6ICdzdHJpbmcnLCBncm91cDogJ0dlbmVyYWwnIH0sXG4gICAgICB7IGtleTogJ3ByZWZpeCcsIGxhYmVsOiAnUHJlZml4IChlLmcuICQpJywgdHlwZTogJ3N0cmluZycsIGdyb3VwOiAnRGlzcGxheScgfSxcbiAgICAgIHsga2V5OiAnc3VmZml4JywgbGFiZWw6ICdTdWZmaXggKGUuZy4gJSknLCB0eXBlOiAnc3RyaW5nJywgZ3JvdXA6ICdEaXNwbGF5JyB9LFxuICAgICAgeyBrZXk6ICdzdGVwJywgbGFiZWw6ICdTdGVwJywgdHlwZTogJ251bWJlcicsIGdyb3VwOiAnR2VuZXJhbCcgfSxcbiAgICAgIHsga2V5OiAnbWluJywgbGFiZWw6ICdNaW4gVmFsdWUnLCB0eXBlOiAnbnVtYmVyJywgZ3JvdXA6ICdWYWxpZGF0aW9uJyB9LFxuICAgICAgeyBrZXk6ICdtYXgnLCBsYWJlbDogJ01heCBWYWx1ZScsIHR5cGU6ICdudW1iZXInLCBncm91cDogJ1ZhbGlkYXRpb24nIH0sXG4gICAgICB7IGtleTogJ3JlcXVpcmVkJywgbGFiZWw6ICdSZXF1aXJlZCcsIHR5cGU6ICdib29sZWFuJywgZ3JvdXA6ICdWYWxpZGF0aW9uJyB9LFxuICAgIF0sXG4gIH0pO1xuXG4gIC8vIDUuIENoZWNrYm94XG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyKHtcbiAgICB0eXBlOiAnY2hlY2tib3gnLFxuICAgIGRpc3BsYXlOYW1lOiAnQ2hlY2tib3gnLFxuICAgIGNhdGVnb3J5OiAnaW5wdXQnLFxuICAgIGljb246ICdjaGVja19ib3gnLFxuICAgIGNyZWF0ZURlZmF1bHRDb25maWc6ICgpID0+ICh7XG4gICAgICBpZDogZ2VuZXJhdGVJZCgnY2hrJyksXG4gICAgICB0eXBlOiAnY2hlY2tib3gnLFxuICAgICAga2V5OiAnY2hlY2tib3hGaWVsZCcsXG4gICAgICBsYWJlbDogJ0FjdGl2ZScsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgICB9LFxuICAgIH0pLFxuICAgIGNvbXBvbmVudDogUnB0Q2hlY2tib3hDb21wb25lbnQsXG4gICAgcHJvcGVydHlTY2hlbWE6IFtcbiAgICAgIHsga2V5OiAnbGFiZWwnLCBsYWJlbDogJ0xhYmVsJywgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBncm91cDogJ0dlbmVyYWwnIH0sXG4gICAgICB7IGtleTogJ2tleScsIGxhYmVsOiAnRmllbGQgTmFtZSAoS2V5KScsIHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZ3JvdXA6ICdHZW5lcmFsJyB9LFxuICAgICAgeyBrZXk6ICdkZWZhdWx0VmFsdWUnLCBsYWJlbDogJ0RlZmF1bHQgVmFsdWUnLCB0eXBlOiAnYm9vbGVhbicsIGdyb3VwOiAnR2VuZXJhbCcgfSxcbiAgICAgIHsga2V5OiAncmVxdWlyZWQnLCBsYWJlbDogJ011c3QgYmUgY2hlY2tlZCcsIHR5cGU6ICdib29sZWFuJywgZ3JvdXA6ICdWYWxpZGF0aW9uJyB9LFxuICAgIF0sXG4gIH0pO1xuXG4gIC8vIDViLiBSYWRpbyBHcm91cFxuICByZWdpc3RyeS5yZWdpc3Rlcih7XG4gICAgdHlwZTogJ3JhZGlvJyxcbiAgICBkaXNwbGF5TmFtZTogJ1JhZGlvIEdyb3VwJyxcbiAgICBjYXRlZ29yeTogJ2lucHV0JyxcbiAgICBpY29uOiAncmFkaW8nLFxuICAgIGNyZWF0ZURlZmF1bHRDb25maWc6ICgpID0+ICh7XG4gICAgICBpZDogZ2VuZXJhdGVJZCgncmFkJyksXG4gICAgICB0eXBlOiAncmFkaW8nLFxuICAgICAga2V5OiAncmFkaW9GaWVsZCcsXG4gICAgICBsYWJlbDogJ1JhZGlvIE9wdGlvbnMnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBsYXlvdXQ6ICdob3Jpem9udGFsJyxcbiAgICAgICAgYXBwZWFyYW5jZTogJ2RlZmF1bHQnLFxuICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgeyBrZXk6ICcxJywgbGFiZWw6ICdPcHRpb24gMScgfSxcbiAgICAgICAgICB7IGtleTogJzInLCBsYWJlbDogJ09wdGlvbiAyJyB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9KSxcbiAgICBjb21wb25lbnQ6IFJwdFJhZGlvQ29tcG9uZW50LFxuICAgIHByb3BlcnR5U2NoZW1hOiBbXG4gICAgICB7IGtleTogJ2xhYmVsJywgbGFiZWw6ICdMYWJlbCcsIHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZ3JvdXA6ICdHZW5lcmFsJyB9LFxuICAgICAgeyBrZXk6ICdrZXknLCBsYWJlbDogJ0ZpZWxkIE5hbWUgKEtleSknLCB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGdyb3VwOiAnR2VuZXJhbCcgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnbGF5b3V0JyxcbiAgICAgICAgbGFiZWw6ICdMYXlvdXQgT3JpZW50YXRpb24nLFxuICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiAnaG9yaXpvbnRhbCcsXG4gICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICB7IGtleTogJ2hvcml6b250YWwnLCBsYWJlbDogJ0hvcml6b250YWwgKElubGluZSknIH0sXG4gICAgICAgICAgeyBrZXk6ICd2ZXJ0aWNhbCcsIGxhYmVsOiAnVmVydGljYWwgKFN0YWNrZWQpJyB9LFxuICAgICAgICBdLFxuICAgICAgICBncm91cDogJ0Rpc3BsYXknLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnYXBwZWFyYW5jZScsXG4gICAgICAgIGxhYmVsOiAnVmlzdWFsIFN0eWxlJyxcbiAgICAgICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogJ2RlZmF1bHQnLFxuICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgeyBrZXk6ICdkZWZhdWx0JywgbGFiZWw6ICdTdGFuZGFyZCBSYWRpb3MnIH0sXG4gICAgICAgICAgeyBrZXk6ICdidXR0b24tZ3JvdXAnLCBsYWJlbDogJ1NlZ21lbnRlZCBQaWxsIC8gQnV0dG9ucycgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZ3JvdXA6ICdEaXNwbGF5JyxcbiAgICAgIH0sXG4gICAgICB7IGtleTogJ3JlcXVpcmVkJywgbGFiZWw6ICdSZXF1aXJlZCcsIHR5cGU6ICdib29sZWFuJywgZ3JvdXA6ICdWYWxpZGF0aW9uJyB9LFxuICAgIF0sXG4gIH0pO1xuXG4gIC8vIDYuIEJ1dHRvblxuICByZWdpc3RyeS5yZWdpc3Rlcih7XG4gICAgdHlwZTogJ2J1dHRvbicsXG4gICAgZGlzcGxheU5hbWU6ICdBY3Rpb24gQnV0dG9uJyxcbiAgICBjYXRlZ29yeTogJ2FjdGlvbicsXG4gICAgaWNvbjogJ3NtYXJ0X2J1dHRvbicsXG4gICAgY3JlYXRlRGVmYXVsdENvbmZpZzogKCkgPT4gKHtcbiAgICAgIGlkOiBnZW5lcmF0ZUlkKCdidG4nKSxcbiAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgbGFiZWw6ICdSdW4gUmVwb3J0JyxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgdmFyaWFudDogJ3ByaW1hcnknLFxuICAgICAgICBhY3Rpb246ICdleGVjdXRlLXJlcG9ydCcsXG4gICAgICB9LFxuICAgIH0pLFxuICAgIGNvbXBvbmVudDogUnB0QnV0dG9uQ29tcG9uZW50LFxuICAgIHByb3BlcnR5U2NoZW1hOiBbXG4gICAgICB7IGtleTogJ2xhYmVsJywgbGFiZWw6ICdCdXR0b24gVGV4dCcsIHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZ3JvdXA6ICdHZW5lcmFsJyB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdpY29uJyxcbiAgICAgICAgbGFiZWw6ICdCdXR0b24gSWNvbicsXG4gICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICBkZWZhdWx0VmFsdWU6ICcnLFxuICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgeyBrZXk6ICcnLCBsYWJlbDogJ05vbmUgKE5vIEljb24pJyB9LFxuICAgICAgICAgIHsga2V5OiAnc2VhcmNoJywgbGFiZWw6ICdTZWFyY2gnIH0sXG4gICAgICAgICAgeyBrZXk6ICdkb3dubG9hZCcsIGxhYmVsOiAnRG93bmxvYWQnIH0sXG4gICAgICAgICAgeyBrZXk6ICdmaWx0ZXInLCBsYWJlbDogJ0ZpbHRlcicgfSxcbiAgICAgICAgICB7IGtleTogJ3JlZnJlc2gnLCBsYWJlbDogJ1JlZnJlc2gnIH0sXG4gICAgICAgICAgeyBrZXk6ICdjaGVjaycsIGxhYmVsOiAnQ2hlY2snIH0sXG4gICAgICAgICAgeyBrZXk6ICdwbHVzJywgbGFiZWw6ICdQbHVzJyB9LFxuICAgICAgICBdLFxuICAgICAgICBncm91cDogJ0Rpc3BsYXknLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnZnVsbFdpZHRoJyxcbiAgICAgICAgbGFiZWw6ICdGdWxsIFdpZHRoIChGaWxsIENvbHVtbiknLFxuICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgICAgIGdyb3VwOiAnRGlzcGxheScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICd2YXJpYW50JyxcbiAgICAgICAgbGFiZWw6ICdTdHlsZSBWYXJpYW50JyxcbiAgICAgICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogJ3ByaW1hcnknLFxuICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgeyBrZXk6ICdwcmltYXJ5JywgbGFiZWw6ICdQcmltYXJ5JyB9LFxuICAgICAgICAgIHsga2V5OiAnc2Vjb25kYXJ5JywgbGFiZWw6ICdTZWNvbmRhcnknIH0sXG4gICAgICAgICAgeyBrZXk6ICdvdXRsaW5lJywgbGFiZWw6ICdPdXRsaW5lJyB9LFxuICAgICAgICAgIHsga2V5OiAnZGFuZ2VyJywgbGFiZWw6ICdEYW5nZXInIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGdyb3VwOiAnRGlzcGxheScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdhY3Rpb24nLFxuICAgICAgICBsYWJlbDogJ0FjdGlvbiBUeXBlJyxcbiAgICAgICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogJ2V4ZWN1dGUtcmVwb3J0JyxcbiAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgIHsga2V5OiAnZXhlY3V0ZS1yZXBvcnQnLCBsYWJlbDogJ0V4ZWN1dGUgUmVwb3J0JyB9LFxuICAgICAgICAgIHsga2V5OiAncmVzZXQnLCBsYWJlbDogJ1Jlc2V0IEZvcm0nIH0sXG4gICAgICAgICAgeyBrZXk6ICdjdXN0b20nLCBsYWJlbDogJ0N1c3RvbSBFdmVudCcgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZ3JvdXA6ICdBY3Rpb24nLFxuICAgICAgfSxcbiAgICBdLFxuICB9KTtcblxuICAvLyA3LiBLUEkgTWV0cmljIENhcmRcbiAgcmVnaXN0cnkucmVnaXN0ZXIoe1xuICAgIHR5cGU6ICdrcGktY2FyZCcsXG4gICAgZGlzcGxheU5hbWU6ICdLUEkgTWV0cmljIENhcmQnLFxuICAgIGNhdGVnb3J5OiAnZGlzcGxheScsXG4gICAgaWNvbjogJ21vbml0b3JpbmcnLFxuICAgIGNyZWF0ZURlZmF1bHRDb25maWc6ICgpID0+ICh7XG4gICAgICBpZDogZ2VuZXJhdGVJZCgna3BpJyksXG4gICAgICB0eXBlOiAna3BpLWNhcmQnLFxuICAgICAgbGFiZWw6ICdUb3RhbCBSZXZlbnVlJyxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgdGl0bGU6ICdUb3RhbCBSZXZlbnVlJyxcbiAgICAgICAgdmFsdWU6IDEyNTQwMCxcbiAgICAgICAgcHJlZml4OiAnJCcsXG4gICAgICAgIHRoZW1lOiAncHJpbWFyeScsXG4gICAgICAgIGljb246ICdkb2xsYXInLFxuICAgICAgICB0cmVuZFZhbHVlOiAxMi44LFxuICAgICAgICB0cmVuZERpcmVjdGlvbjogJ3VwJyxcbiAgICAgICAgdHJlbmRMYWJlbDogJ3ZzIGxhc3QgbW9udGgnXG4gICAgICB9LFxuICAgICAgbGF5b3V0OiB7XG4gICAgICAgIGNvbHVtblNwYW46IDMsXG4gICAgICB9XG4gICAgfSksXG4gICAgY29tcG9uZW50OiBScHRLcGlDYXJkQ29tcG9uZW50LFxuICAgIHByb3BlcnR5U2NoZW1hOiBbXG4gICAgICB7IGtleTogJ3RpdGxlJywgbGFiZWw6ICdNZXRyaWMgVGl0bGUnLCB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGdyb3VwOiAnR2VuZXJhbCcgfSxcbiAgICAgIHsga2V5OiAndmFsdWUnLCBsYWJlbDogJ1ZhbHVlJywgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBncm91cDogJ0dlbmVyYWwnIH0sXG4gICAgICB7IGtleTogJ3ByZWZpeCcsIGxhYmVsOiAnUHJlZml4IChlLmcuICQpJywgdHlwZTogJ3N0cmluZycsIGdyb3VwOiAnRGlzcGxheScgfSxcbiAgICAgIHsga2V5OiAnc3VmZml4JywgbGFiZWw6ICdTdWZmaXggKGUuZy4gJSknLCB0eXBlOiAnc3RyaW5nJywgZ3JvdXA6ICdEaXNwbGF5JyB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICd0aGVtZScsXG4gICAgICAgIGxhYmVsOiAnVGhlbWUgQWNjZW50JyxcbiAgICAgICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogJ3ByaW1hcnknLFxuICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgeyBrZXk6ICdwcmltYXJ5JywgbGFiZWw6ICdQcmltYXJ5IChCbHVlKScgfSxcbiAgICAgICAgICB7IGtleTogJ3N1Y2Nlc3MnLCBsYWJlbDogJ1N1Y2Nlc3MgKEdyZWVuKScgfSxcbiAgICAgICAgICB7IGtleTogJ3dhcm5pbmcnLCBsYWJlbDogJ1dhcm5pbmcgKEFtYmVyKScgfSxcbiAgICAgICAgICB7IGtleTogJ2RhbmdlcicsIGxhYmVsOiAnRGFuZ2VyIChSZWQpJyB9LFxuICAgICAgICAgIHsga2V5OiAnaW5mbycsIGxhYmVsOiAnSW5mbyAoQ3lhbiknIH0sXG4gICAgICAgICAgeyBrZXk6ICduZXV0cmFsJywgbGFiZWw6ICdOZXV0cmFsIChTbGF0ZSknIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGdyb3VwOiAnRGlzcGxheScsXG4gICAgICB9LFxuICAgICAgeyBrZXk6ICdpY29uJywgbGFiZWw6ICdJY29uIChlLmcuIGRvbGxhciwgY2hlY2ssIGNoYXJ0LWJhciwgYm94KScsIHR5cGU6ICdzdHJpbmcnLCBncm91cDogJ0Rpc3BsYXknIH0sXG4gICAgICB7IGtleTogJ3RyZW5kVmFsdWUnLCBsYWJlbDogJ1RyZW5kIFZhbHVlICglKScsIHR5cGU6ICdudW1iZXInLCBncm91cDogJ1RyZW5kJyB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICd0cmVuZERpcmVjdGlvbicsXG4gICAgICAgIGxhYmVsOiAnVHJlbmQgRGlyZWN0aW9uJyxcbiAgICAgICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogJ25ldXRyYWwnLFxuICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgeyBrZXk6ICd1cCcsIGxhYmVsOiAnVXAgKEdyb3d0aCknIH0sXG4gICAgICAgICAgeyBrZXk6ICdkb3duJywgbGFiZWw6ICdEb3duIChEZWNsaW5lKScgfSxcbiAgICAgICAgICB7IGtleTogJ25ldXRyYWwnLCBsYWJlbDogJ05ldXRyYWwnIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGdyb3VwOiAnVHJlbmQnLFxuICAgICAgfSxcbiAgICAgIHsga2V5OiAndHJlbmRMYWJlbCcsIGxhYmVsOiAnVHJlbmQgTGFiZWwnLCB0eXBlOiAnc3RyaW5nJywgZ3JvdXA6ICdUcmVuZCcgfSxcbiAgICBdLFxuICB9KTtcblxuICAvLyA4LiBDaGFydCBCcmlkZ2VcbiAgcmVnaXN0cnkucmVnaXN0ZXIoe1xuICAgIHR5cGU6ICdjaGFydCcsXG4gICAgZGlzcGxheU5hbWU6ICdDaGFydCBWaXN1YWxpemF0aW9uJyxcbiAgICBjYXRlZ29yeTogJ2Rpc3BsYXknLFxuICAgIGljb246ICdiYXJfY2hhcnQnLFxuICAgIGNyZWF0ZURlZmF1bHRDb25maWc6ICgpID0+ICh7XG4gICAgICBpZDogZ2VuZXJhdGVJZCgnY2hhcnQnKSxcbiAgICAgIHR5cGU6ICdjaGFydCcsXG4gICAgICBsYWJlbDogJ1BlcmZvcm1hbmNlIEJyZWFrZG93bicsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIHRpdGxlOiAnTW9udGhseSBQZXJmb3JtYW5jZScsXG4gICAgICAgIGNoYXJ0VHlwZTogJ2JhcicsXG4gICAgICAgIGRhdGE6IFtcbiAgICAgICAgICB7IGxhYmVsOiAnUTEnLCB2YWx1ZTogNDUgfSxcbiAgICAgICAgICB7IGxhYmVsOiAnUTInLCB2YWx1ZTogNjggfSxcbiAgICAgICAgICB7IGxhYmVsOiAnUTMnLCB2YWx1ZTogODUgfSxcbiAgICAgICAgICB7IGxhYmVsOiAnUTQnLCB2YWx1ZTogMTEwIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIGxheW91dDoge1xuICAgICAgICBjb2x1bW5TcGFuOiA2LFxuICAgICAgfVxuICAgIH0pLFxuICAgIGNvbXBvbmVudDogUmVwb3J0Q2hhcnRCcmlkZ2VDb21wb25lbnQsXG4gICAgcHJvcGVydHlTY2hlbWE6IFtcbiAgICAgIHsga2V5OiAndGl0bGUnLCBsYWJlbDogJ0NoYXJ0IFRpdGxlJywgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBncm91cDogJ0dlbmVyYWwnIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ2NoYXJ0VHlwZScsXG4gICAgICAgIGxhYmVsOiAnQ2hhcnQgVHlwZScsXG4gICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICBkZWZhdWx0VmFsdWU6ICdiYXInLFxuICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgeyBrZXk6ICdiYXInLCBsYWJlbDogJ0JhciBDaGFydCcgfSxcbiAgICAgICAgICB7IGtleTogJ2RvbnV0JywgbGFiZWw6ICdEb251dCBDaGFydCcgfSxcbiAgICAgICAgICB7IGtleTogJ2xpbmUnLCBsYWJlbDogJ0xpbmUgLyBBcmVhIENoYXJ0JyB9LFxuICAgICAgICBdLFxuICAgICAgICBncm91cDogJ0dlbmVyYWwnLFxuICAgICAgfSxcbiAgICBdLFxuICB9KTtcbn1cblxuXG4iXX0=
|
|
@@ -17,6 +17,7 @@ import { registerBuiltinComponents } from './primitives/register-builtins';
|
|
|
17
17
|
import { normalizeBwaysConfig, } from './core/config/bways-report-config';
|
|
18
18
|
/** Default configuration values. */
|
|
19
19
|
const DEFAULT_CONFIG = {
|
|
20
|
+
apiBaseUrl: '/api/reporting',
|
|
20
21
|
defaultPageSize: 25,
|
|
21
22
|
dateFormat: 'dd/MM/yyyy',
|
|
22
23
|
enableDesigner: false,
|
|
@@ -120,9 +121,7 @@ export const withMockAdapters = withLocalStorage;
|
|
|
120
121
|
function isBwaysReportConfig(arg) {
|
|
121
122
|
return (typeof arg === 'object' &&
|
|
122
123
|
arg !== null &&
|
|
123
|
-
'spEndpoint' in arg
|
|
124
|
-
'tablesEndpoint' in arg &&
|
|
125
|
-
'executeEndpoint' in arg);
|
|
124
|
+
['spEndpoint', 'tablesEndpoint', 'executeEndpoint', 'lookupEndpoint', 'reportsEndpoint', 'apisEndpoint', 'apiEndpoints', 'components', 'grid', 'chart', 'sessionProvider'].some(key => key in arg));
|
|
126
125
|
}
|
|
127
126
|
/**
|
|
128
127
|
* Provides the BWays-Report library to the Angular application.
|
|
@@ -169,6 +168,8 @@ function provideBwaysReportFromSimpleConfig(config) {
|
|
|
169
168
|
defaultPageSize: normalized.defaultPageSize,
|
|
170
169
|
dateFormat: normalized.dateFormat,
|
|
171
170
|
lookupTimeoutMs: normalized.lookupTimeoutMs,
|
|
171
|
+
executionTimeoutMs: normalized.executionTimeoutMs,
|
|
172
|
+
trustedApiOrigins: normalized.trustedApiOrigins,
|
|
172
173
|
enableDesigner: true,
|
|
173
174
|
allowedCategories: normalized.allowedCategories,
|
|
174
175
|
autoParameter: normalized.autoParameter,
|
|
@@ -203,6 +204,8 @@ function provideBwaysReportFromSimpleConfig(config) {
|
|
|
203
204
|
executeEndpoint: normalized.executeEndpoint,
|
|
204
205
|
lookupEndpoint: normalized.lookupEndpoint,
|
|
205
206
|
reportsEndpoint: normalized.reportsEndpoint,
|
|
207
|
+
apisEndpoint: normalized.apisEndpoint,
|
|
208
|
+
apiEndpoints: normalized.apiEndpoints,
|
|
206
209
|
},
|
|
207
210
|
},
|
|
208
211
|
// Endpoint-based adapters
|
|
@@ -210,12 +213,10 @@ function provideBwaysReportFromSimpleConfig(config) {
|
|
|
210
213
|
{ provide: ReportDataSourceAdapter, useClass: EndpointDataSourceAdapter },
|
|
211
214
|
{ provide: ReportLookupAdapter, useClass: EndpointLookupAdapter },
|
|
212
215
|
{ provide: MasterDataProvider, useClass: EndpointMasterDataAdapter },
|
|
213
|
-
//
|
|
216
|
+
// Database persistence is the default, using the reporting service reports route.
|
|
214
217
|
{
|
|
215
218
|
provide: ReportPersistenceAdapter,
|
|
216
|
-
useClass:
|
|
217
|
-
? EndpointPersistenceAdapter
|
|
218
|
-
: LocalStorageReportPersistenceAdapter,
|
|
219
|
+
useClass: EndpointPersistenceAdapter,
|
|
219
220
|
},
|
|
220
221
|
];
|
|
221
222
|
// Grid / Chart overrides
|
|
@@ -284,29 +285,10 @@ function provideBwaysReportFromOptions(options, features) {
|
|
|
284
285
|
}
|
|
285
286
|
// Unified merged configuration
|
|
286
287
|
providers.push({ provide: REPORTING_CONFIG, useValue: config });
|
|
287
|
-
//
|
|
288
|
-
if (!hasHttpFeature && !hasLocalFeature
|
|
288
|
+
// Offline adapters require an explicit feature; normal saves always reach the backend.
|
|
289
|
+
if (!hasHttpFeature && !hasLocalFeature) {
|
|
289
290
|
providers.push({ provide: ReportDataSourceAdapter, useClass: options.dataSourceAdapter ?? HttpReportDataSourceAdapter }, { provide: ReportPersistenceAdapter, useClass: options.persistenceAdapter ?? HttpReportPersistenceAdapter }, { provide: MasterDataProvider, useClass: options.masterDataProvider ?? HttpMasterDataAdapter }, { provide: ReportSchemaDiscoveryAdapter, useClass: options.schemaDiscoveryAdapter ?? HttpReportSchemaDiscoveryAdapter }, { provide: ReportLookupAdapter, useClass: options.lookupAdapter ?? HttpReportLookupAdapter });
|
|
290
291
|
}
|
|
291
|
-
else if (!hasHttpFeature && !hasLocalFeature) {
|
|
292
|
-
// If no backend apiBaseUrl and no feature passed, fallback to zero-backend sandbox mode
|
|
293
|
-
providers.push({
|
|
294
|
-
provide: ReportPersistenceAdapter,
|
|
295
|
-
useClass: options.persistenceAdapter ?? LocalStorageReportPersistenceAdapter,
|
|
296
|
-
}, {
|
|
297
|
-
provide: ReportDataSourceAdapter,
|
|
298
|
-
useClass: options.dataSourceAdapter ?? MockReportDataSourceAdapter,
|
|
299
|
-
}, {
|
|
300
|
-
provide: ReportSchemaDiscoveryAdapter,
|
|
301
|
-
useClass: options.schemaDiscoveryAdapter ?? HttpReportSchemaDiscoveryAdapter,
|
|
302
|
-
}, {
|
|
303
|
-
provide: ReportLookupAdapter,
|
|
304
|
-
useClass: options.lookupAdapter ?? HttpReportLookupAdapter,
|
|
305
|
-
}, {
|
|
306
|
-
provide: MasterDataProvider,
|
|
307
|
-
useClass: options.masterDataProvider ?? HttpMasterDataAdapter,
|
|
308
|
-
});
|
|
309
|
-
}
|
|
310
292
|
// Component overrides
|
|
311
293
|
if (options.gridComponent) {
|
|
312
294
|
providers.push({ provide: GRID_COMPONENT, useValue: options.gridComponent });
|
|
@@ -355,4 +337,4 @@ export const provideBwaysReporting = provideBwaysReport;
|
|
|
355
337
|
export const provideReporting = provideBwaysReport;
|
|
356
338
|
/** Semantic alias for BWays report providers */
|
|
357
339
|
export const bwaysReportProviders = provideBwaysReport;
|
|
358
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS1yZXBvcnRpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9wcm92aWRlLXJlcG9ydGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixNQUFNLEVBQ04sd0JBQXdCLEdBR3pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxlQUFlLEVBQ2YsY0FBYyxFQUNkLGdCQUFnQixHQUVqQixNQUFNLHNDQUFzQyxDQUFDO0FBQzlDLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsdUJBQXVCLEdBR3hCLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDdkYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDbEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDL0YsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDakcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDOUUsT0FBTyxFQUNMLDJCQUEyQixFQUMzQiw0QkFBNEIsRUFDNUIsdUJBQXVCLEVBQ3ZCLGdDQUFnQyxFQUNoQyxxQkFBcUIsRUFDckIsb0NBQW9DLEVBQ3BDLDJCQUEyQixFQUMzQiw4QkFBOEIsRUFDOUIseUJBQXlCLEVBQ3pCLHFCQUFxQixFQUNyQiwwQkFBMEIsRUFDMUIseUJBQXlCLEVBQ3pCLHNCQUFzQixHQUN2QixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNFLE9BQU8sRUFFTCxvQkFBb0IsR0FDckIsTUFBTSxtQ0FBbUMsQ0FBQztBQUUzQyxvQ0FBb0M7QUFDcEMsTUFBTSxjQUFjLEdBQW9CO0lBQ3RDLGVBQWUsRUFBRSxFQUFFO0lBQ25CLFVBQVUsRUFBRSxZQUFZO0lBQ3hCLGNBQWMsRUFBRSxLQUFLO0lBQ3JCLGFBQWEsRUFBRSxDQUFDO0lBQ2hCLGVBQWUsRUFBRSxNQUFNO0NBQ3hCLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLG9CQUdYO0FBSEQsV0FBWSxvQkFBb0I7SUFDOUIsK0VBQWdCLENBQUE7SUFDaEIsK0VBQWdCLENBQUE7QUFDbEIsQ0FBQyxFQUhXLG9CQUFvQixLQUFwQixvQkFBb0IsUUFHL0I7QUE0QkQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLE9BQTRCO0lBRTVCLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLE9BQU8sT0FBTyxDQUFDLFVBQVUsS0FBSyxRQUFRLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUNsSCxNQUFNLElBQUksS0FBSyxDQUNiLCtFQUErRTtZQUMvRSxrSEFBa0gsQ0FDbkgsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFeEQsT0FBTztRQUNMLEtBQUssRUFBRSxvQkFBb0IsQ0FBQyxZQUFZO1FBQ3hDLE9BQU8sRUFBRTtZQUNQLFVBQVUsRUFBRSxRQUFRO1lBQ3BCLEdBQUcsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLGVBQWUsRUFBRSxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUNqRjtRQUNELFVBQVUsRUFBRTtZQUNWO2dCQUNFLE9BQU8sRUFBRSxnQkFBZ0I7Z0JBQ3pCLFFBQVEsRUFBRTtvQkFDUixVQUFVLEVBQUUsUUFBUTtvQkFDcEIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxFQUFFLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2lCQUNqRjthQUNGO1lBQ0Q7Z0JBQ0UsT0FBTyxFQUFFLHVCQUF1QjtnQkFDaEMsUUFBUSxFQUFFLDJCQUEyQjthQUN0QztZQUNEO2dCQUNFLE9BQU8sRUFBRSx3QkFBd0I7Z0JBQ2pDLFFBQVEsRUFBRSw0QkFBNEI7YUFDdkM7WUFDRDtnQkFDRSxPQUFPLEVBQUUsa0JBQWtCO2dCQUMzQixRQUFRLEVBQUUscUJBQXFCO2FBQ2hDO1lBQ0Q7Z0JBQ0UsT0FBTyxFQUFFLDRCQUE0QjtnQkFDckMsUUFBUSxFQUFFLGdDQUFnQzthQUMzQztZQUNEO2dCQUNFLE9BQU8sRUFBRSxtQkFBbUI7Z0JBQzVCLFFBQVEsRUFBRSx1QkFBdUI7YUFDbEM7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSxnQkFBZ0I7SUFDOUIsT0FBTztRQUNMLEtBQUssRUFBRSxvQkFBb0IsQ0FBQyxZQUFZO1FBQ3hDLFVBQVUsRUFBRTtZQUNWO2dCQUNFLE9BQU8sRUFBRSx3QkFBd0I7Z0JBQ2pDLFFBQVEsRUFBRSxvQ0FBb0M7YUFDL0M7WUFDRDtnQkFDRSxPQUFPLEVBQUUsdUJBQXVCO2dCQUNoQyxRQUFRLEVBQUUsMkJBQTJCO2FBQ3RDO1NBQ0Y7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELGlDQUFpQztBQUNqQyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztBQTJEakQ7O0dBRUc7QUFDSCxTQUFTLG1CQUFtQixDQUMxQixHQUFrRDtJQUVsRCxPQUFPLENBQ0wsT0FBTyxHQUFHLEtBQUssUUFBUTtRQUN2QixHQUFHLEtBQUssSUFBSTtRQUNaLFlBQVksSUFBSSxHQUFHO1FBQ25CLGdCQUFnQixJQUFJLEdBQUc7UUFDdkIsaUJBQWlCLElBQUksR0FBRyxDQUN6QixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FDaEMsVUFBeUQsRUFBK0IsRUFDeEYsR0FBRyxRQUE0QjtJQUUvQixrRUFBa0U7SUFDbEUsSUFBSSxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ2pDLE9BQU8sa0NBQWtDLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELGtFQUFrRTtJQUNsRSxPQUFPLDZCQUE2QixDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUMxRCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLGtDQUFrQyxDQUFDLE1BQXlCO0lBQ25FLE1BQU0sVUFBVSxHQUFHLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRWhELE1BQU0sZUFBZSxHQUFvQjtRQUN2QyxHQUFHLGNBQWM7UUFDakIsZUFBZSxFQUFFLFVBQVUsQ0FBQyxlQUFlO1FBQzNDLFVBQVUsRUFBRSxVQUFVLENBQUMsVUFBVTtRQUNqQyxlQUFlLEVBQUUsVUFBVSxDQUFDLGVBQWU7UUFDM0MsY0FBYyxFQUFFLElBQUk7UUFDcEIsaUJBQWlCLEVBQUUsVUFBVSxDQUFDLGlCQUFpQjtRQUMvQyxhQUFhLEVBQUUsVUFBVSxDQUFDLGFBQWE7UUFDdkMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxTQUFTO0tBQ2hDLENBQUM7SUFFRixNQUFNLFNBQVMsR0FBZTtRQUM1QixpQ0FBaUM7UUFDakM7WUFDRSxPQUFPLEVBQUUsdUJBQXVCO1lBQ2hDLEtBQUssRUFBRSxJQUFJO1lBQ1gsUUFBUSxFQUFFLEdBQUcsRUFBRTtnQkFDYixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztnQkFDM0MseUJBQXlCLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3BDLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLE9BQU8sUUFBUSxLQUFLLFdBQVcsRUFBRSxDQUFDO29CQUNyRSxNQUFNLENBQUMsZ0JBQWdCLENBQ3JCLE9BQU8sRUFDUCxHQUFHLEVBQUU7d0JBQ0gsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQzt3QkFDeEMsSUFBSSxRQUFRLFlBQVksZ0JBQWdCLElBQUksUUFBUSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQzs0QkFDdkUsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO3dCQUNsQixDQUFDO29CQUNILENBQUMsRUFDRCxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FDbEIsQ0FBQztnQkFDSixDQUFDO1lBQ0gsQ0FBQztTQUNGO1FBRUQscUJBQXFCO1FBQ3JCLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUU7UUFFeEQsaUNBQWlDO1FBQ2pDO1lBQ0UsT0FBTyxFQUFFLHNCQUFzQjtZQUMvQixRQUFRLEVBQUU7Z0JBQ1IsVUFBVSxFQUFFLFVBQVUsQ0FBQyxVQUFVO2dCQUNqQyxjQUFjLEVBQUUsVUFBVSxDQUFDLGNBQWM7Z0JBQ3pDLGVBQWUsRUFBRSxVQUFVLENBQUMsZUFBZTtnQkFDM0MsY0FBYyxFQUFFLFVBQVUsQ0FBQyxjQUFjO2dCQUN6QyxlQUFlLEVBQUUsVUFBVSxDQUFDLGVBQWU7YUFDNUM7U0FDRjtRQUVELDBCQUEwQjtRQUMxQixFQUFFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxRQUFRLEVBQUUsOEJBQThCLEVBQUU7UUFDbkYsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLHlCQUF5QixFQUFFO1FBQ3pFLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRTtRQUNqRSxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUseUJBQXlCLEVBQUU7UUFFcEUsc0ZBQXNGO1FBQ3RGO1lBQ0UsT0FBTyxFQUFFLHdCQUF3QjtZQUNqQyxRQUFRLEVBQUUsVUFBVSxDQUFDLGVBQWU7Z0JBQ2xDLENBQUMsQ0FBQywwQkFBMEI7Z0JBQzVCLENBQUMsQ0FBQyxvQ0FBb0M7U0FDekM7S0FDRixDQUFDO0lBRUYseUJBQXlCO0lBQ3pCLElBQUksVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzdCLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBQ0QsSUFBSSxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDOUIsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFRCw2QkFBNkI7SUFDN0IsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLGVBQWUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDO0lBQ3ZFLElBQUksYUFBYSxFQUFFLENBQUM7UUFDbEIsSUFBSSxPQUFPLGFBQWEsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUN4QyxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1lBQ2pGLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ1osU0FBUyxDQUFDLElBQUksQ0FBQyxhQUEwQixDQUFDLENBQUM7Z0JBQzNDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsV0FBVyxFQUFFLGFBQTBCLEVBQUUsQ0FBQyxDQUFDO1lBQ2hHLENBQUM7aUJBQU0sQ0FBQztnQkFDTixTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFVBQVUsRUFBRSxhQUEwQixFQUFFLENBQUMsQ0FBQztZQUM5RixDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQy9FLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyx3QkFBd0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLDZCQUE2QixDQUNwQyxPQUFrQyxFQUNsQyxRQUE0QjtJQUU1QixNQUFNLE1BQU0sR0FBb0IsRUFBRSxHQUFHLGNBQWMsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO0lBQ2xFLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7UUFDL0IsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pDLENBQUM7SUFDSCxDQUFDO0lBQ0QsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdEIsTUFBTSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFlO1FBQzVCO1lBQ0UsT0FBTyxFQUFFLHVCQUF1QjtZQUNoQyxLQUFLLEVBQUUsSUFBSTtZQUNYLFFBQVEsRUFBRSxHQUFHLEVBQUU7Z0JBQ2IsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBQzNDLHlCQUF5QixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNwQyxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxPQUFPLFFBQVEsS0FBSyxXQUFXLEVBQUUsQ0FBQztvQkFDckUsTUFBTSxDQUFDLGdCQUFnQixDQUNyQixPQUFPLEVBQ1AsR0FBRyxFQUFFO3dCQUNILE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUM7d0JBQ3hDLElBQUksUUFBUSxZQUFZLGdCQUFnQixJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7NEJBQ3ZFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQzt3QkFDbEIsQ0FBQztvQkFDSCxDQUFDLEVBQ0QsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQ2xCLENBQUM7Z0JBQ0osQ0FBQztZQUNILENBQUM7U0FDRjtLQUNGLENBQUM7SUFFRixNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzNGLE1BQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssb0JBQW9CLENBQUMsWUFBWSxDQUFDLENBQUM7SUFFNUYseUZBQXlGO0lBQ3pGLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7UUFDL0IsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FDbEQsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEtBQUssZ0JBQWdCLENBQUMsQ0FDbEcsQ0FBQztRQUNGLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCwrQkFBK0I7SUFDL0IsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUVoRSw2RUFBNkU7SUFDN0UsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLGVBQWUsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDOUQsU0FBUyxDQUFDLElBQUksQ0FDWixFQUFFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLGlCQUFpQixJQUFJLDJCQUEyQixFQUFFLEVBQ3hHLEVBQUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsa0JBQWtCLElBQUksNEJBQTRCLEVBQUUsRUFDM0csRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxrQkFBa0IsSUFBSSxxQkFBcUIsRUFBRSxFQUM5RixFQUFFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLHNCQUFzQixJQUFJLGdDQUFnQyxFQUFFLEVBQ3ZILEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsYUFBYSxJQUFJLHVCQUF1QixFQUFFLENBQzdGLENBQUM7SUFDSixDQUFDO1NBQU0sSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQy9DLHdGQUF3RjtRQUN4RixTQUFTLENBQUMsSUFBSSxDQUNaO1lBQ0UsT0FBTyxFQUFFLHdCQUF3QjtZQUNqQyxRQUFRLEVBQUUsT0FBTyxDQUFDLGtCQUFrQixJQUFJLG9DQUFvQztTQUM3RSxFQUNEO1lBQ0UsT0FBTyxFQUFFLHVCQUF1QjtZQUNoQyxRQUFRLEVBQUUsT0FBTyxDQUFDLGlCQUFpQixJQUFJLDJCQUEyQjtTQUNuRSxFQUNEO1lBQ0UsT0FBTyxFQUFFLDRCQUE0QjtZQUNyQyxRQUFRLEVBQUUsT0FBTyxDQUFDLHNCQUFzQixJQUFJLGdDQUFnQztTQUM3RSxFQUNEO1lBQ0UsT0FBTyxFQUFFLG1CQUFtQjtZQUM1QixRQUFRLEVBQUUsT0FBTyxDQUFDLGFBQWEsSUFBSSx1QkFBdUI7U0FDM0QsRUFDRDtZQUNFLE9BQU8sRUFBRSxrQkFBa0I7WUFDM0IsUUFBUSxFQUFFLE9BQU8sQ0FBQyxrQkFBa0IsSUFBSSxxQkFBcUI7U0FDOUQsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELHNCQUFzQjtJQUN0QixJQUFJLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMxQixTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzNCLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRUQsd0NBQXdDO0lBQ3hDLElBQUksT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDOUIsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBRUQsSUFBSSxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMvQixTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0lBQ3hGLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQy9CLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7SUFDOUYsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDbkMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQztJQUN0RyxDQUFDO0lBRUQsSUFBSSxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDMUIsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVELG9DQUFvQztJQUNwQyxJQUFJLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ25DLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7SUFDakcsQ0FBQztJQUVELDJEQUEyRDtJQUMzRCxJQUFJLE9BQU8sT0FBTyxDQUFDLE9BQU8sS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUMxQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsT0FBb0IsRUFBRSxDQUFDLENBQUM7SUFDaEcsQ0FBQztTQUFNLElBQUksT0FBTyxDQUFDLE9BQU8sS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN6QyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNqRixDQUFDO1NBQU0sSUFBSSxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUN6QyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7U0FBTSxJQUFJLE9BQU8sQ0FBQyxjQUFjLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDaEQsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUVELE9BQU8sd0JBQXdCLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUVELG1DQUFtQztBQUNuQyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxrQkFBa0IsQ0FBQztBQUV4RCx1REFBdUQ7QUFDdkQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsa0JBQWtCLENBQUM7QUFFbkQsZ0RBQWdEO0FBQ2hELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSZXBvcnRpbmcgbGlicmFyeSByb290IHByb3ZpZGVyIGZ1bmN0aW9uIGFuZCBmZWF0dXJlIGZ1bmN0aW9ucy5cbiAqXG4gKiBDb25maWd1cmVzIHRoZSBsaWJyYXJ5LCBpdHMgdG9rZW5zLCBhbmQgcmVnaXN0ZXJzIGJ1aWx0LWluIHByaW1pdGl2ZXMuXG4gKi9cblxuaW1wb3J0IHtcbiAgRU5WSVJPTk1FTlRfSU5JVElBTElaRVIsXG4gIEVudmlyb25tZW50UHJvdmlkZXJzLFxuICBpbmplY3QsXG4gIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyxcbiAgUHJvdmlkZXIsXG4gIFR5cGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ0hBUlRfQ09NUE9ORU5ULFxuICBHUklEX0NPTVBPTkVOVCxcbiAgUkVQT1JUSU5HX0NPTkZJRyxcbiAgUmVwb3J0aW5nQ29uZmlnLFxufSBmcm9tICcuL2NvcmUvdG9rZW5zL3JlcG9ydGluZy1jb25maWcudG9rZW4nO1xuaW1wb3J0IHtcbiAgUkVQT1JUX1NFU1NJT05fQ09OVEVYVCxcbiAgUkVQT1JUX1NFU1NJT05fUFJPVklERVIsXG4gIFNlc3Npb25Db250ZXh0UHJvdmlkZXIsXG4gIFNlc3Npb25Db250ZXh0U291cmNlLFxufSBmcm9tICcuL2NvcmUvdG9rZW5zL3Nlc3Npb24tY29udGV4dC50b2tlbic7XG5pbXBvcnQgeyBSZXBvcnREYXRhU291cmNlQWRhcHRlciB9IGZyb20gJy4vZGF0YS1hY2Nlc3MvY29udHJhY3RzL2RhdGEtc291cmNlLmNvbnRyYWN0JztcbmltcG9ydCB7IE1hc3RlckRhdGFQcm92aWRlciB9IGZyb20gJy4vZGF0YS1hY2Nlc3MvY29udHJhY3RzL21hc3Rlci1kYXRhLnByb3ZpZGVyJztcbmltcG9ydCB7IFJlcG9ydFBlcnNpc3RlbmNlQWRhcHRlciB9IGZyb20gJy4vZGF0YS1hY2Nlc3MvY29udHJhY3RzL3JlcG9ydC1wZXJzaXN0ZW5jZS5jb250cmFjdCc7XG5pbXBvcnQgeyBSZXBvcnRTY2hlbWFEaXNjb3ZlcnlBZGFwdGVyIH0gZnJvbSAnLi9kYXRhLWFjY2Vzcy9jb250cmFjdHMvc2NoZW1hLWRpc2NvdmVyeS5jb250cmFjdCc7XG5pbXBvcnQgeyBSZXBvcnRMb29rdXBBZGFwdGVyIH0gZnJvbSAnLi9kYXRhLWFjY2Vzcy9jb250cmFjdHMvbG9va3VwLmNvbnRyYWN0JztcbmltcG9ydCB7XG4gIEh0dHBSZXBvcnREYXRhU291cmNlQWRhcHRlcixcbiAgSHR0cFJlcG9ydFBlcnNpc3RlbmNlQWRhcHRlcixcbiAgSHR0cFJlcG9ydExvb2t1cEFkYXB0ZXIsXG4gIEh0dHBSZXBvcnRTY2hlbWFEaXNjb3ZlcnlBZGFwdGVyLFxuICBIdHRwTWFzdGVyRGF0YUFkYXB0ZXIsXG4gIExvY2FsU3RvcmFnZVJlcG9ydFBlcnNpc3RlbmNlQWRhcHRlcixcbiAgTW9ja1JlcG9ydERhdGFTb3VyY2VBZGFwdGVyLFxuICBFbmRwb2ludFNjaGVtYURpc2NvdmVyeUFkYXB0ZXIsXG4gIEVuZHBvaW50RGF0YVNvdXJjZUFkYXB0ZXIsXG4gIEVuZHBvaW50TG9va3VwQWRhcHRlcixcbiAgRW5kcG9pbnRQZXJzaXN0ZW5jZUFkYXB0ZXIsXG4gIEVuZHBvaW50TWFzdGVyRGF0YUFkYXB0ZXIsXG4gIEJXQVlTX1JFUE9SVF9FTkRQT0lOVFMsXG59IGZyb20gJy4vZGF0YS1hY2Nlc3MvYWRhcHRlcnMnO1xuaW1wb3J0IHsgQ29tcG9uZW50UmVnaXN0cnkgfSBmcm9tICcuL2NvcmUvcmVnaXN0cnkvY29tcG9uZW50LXJlZ2lzdHJ5JztcbmltcG9ydCB7IHJlZ2lzdGVyQnVpbHRpbkNvbXBvbmVudHMgfSBmcm9tICcuL3ByaW1pdGl2ZXMvcmVnaXN0ZXItYnVpbHRpbnMnO1xuaW1wb3J0IHtcbiAgQndheXNSZXBvcnRDb25maWcsXG4gIG5vcm1hbGl6ZUJ3YXlzQ29uZmlnLFxufSBmcm9tICcuL2NvcmUvY29uZmlnL2J3YXlzLXJlcG9ydC1jb25maWcnO1xuXG4vKiogRGVmYXVsdCBjb25maWd1cmF0aW9uIHZhbHVlcy4gKi9cbmNvbnN0IERFRkFVTFRfQ09ORklHOiBSZXBvcnRpbmdDb25maWcgPSB7XG4gIGRlZmF1bHRQYWdlU2l6ZTogMjUsXG4gIGRhdGVGb3JtYXQ6ICdkZC9NTS95eXl5JyxcbiAgZW5hYmxlRGVzaWduZXI6IGZhbHNlLFxuICBzY2hlbWFWZXJzaW9uOiAxLFxuICBsb29rdXBUaW1lb3V0TXM6IDMwMDAwMCxcbn07XG5cbi8qKlxuICogS2luZHMgb2YgcmVwb3J0aW5nIGZlYXR1cmVzIGF2YWlsYWJsZSBpbiBgcHJvdmlkZUJ3YXlzUmVwb3J0YC5cbiAqL1xuZXhwb3J0IGVudW0gUmVwb3J0aW5nRmVhdHVyZUtpbmQge1xuICBIdHRwQWRhcHRlcnMgPSAwLFxuICBMb2NhbFN0b3JhZ2UgPSAxLFxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBmZWF0dXJlIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBgcHJvdmlkZUJ3YXlzUmVwb3J0KC4uLilgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydGluZ0ZlYXR1cmU8S2luZFQgZXh0ZW5kcyBSZXBvcnRpbmdGZWF0dXJlS2luZCA9IFJlcG9ydGluZ0ZlYXR1cmVLaW5kPiB7XG4gIMm1a2luZDogS2luZFQ7XG4gIMm1Y29uZmlnPzogUGFydGlhbDxSZXBvcnRpbmdDb25maWc+O1xuICDJtXByb3ZpZGVyczogUHJvdmlkZXJbXTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBjb25maWd1cmluZyBidWlsdC1pbiBIVFRQIGFkYXB0ZXJzIHZpYSBgd2l0aEh0dHBBZGFwdGVycyguLi4pYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIdHRwQWRhcHRlcnNPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBiYXNlIFVSTCBmb3IgdGhlIGJhY2tlbmQgcmVwb3J0aW5nIFJFU1QgQVBJIGVuZHBvaW50cy5cbiAgICogQGV4YW1wbGUgJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9hcGkvcmVwb3J0aW5nJ1xuICAgKi9cbiAgYXBpQmFzZVVybDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBjdXN0b20gdGltZW91dCBpbiBtaWxsaXNlY29uZHMgZm9yIGRhdGFiYXNlIGxvb2t1cCBxdWVyaWVzLlxuICAgKiBEZWZhdWx0cyB0byAzMDAwMDBtcyAoNSBtaW51dGVzKS5cbiAgICovXG4gIGxvb2t1cFRpbWVvdXRNcz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBDb25maWd1cmVzIHRoZSBidWlsdC1pbiBIVFRQIGFkYXB0ZXJzIGZvciBiYWNrZW5kIGV4ZWN1dGlvbiwgcGVyc2lzdGVuY2UsXG4gKiBzY2hlbWEgZGlzY292ZXJ5LCBsb29rdXAsIGFuZCBtYXN0ZXIgZGF0YSBxdWVyaWVzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBwcm92aWRlUmVwb3J0aW5nKFxuICogICB7IGRlZmF1bHRQYWdlU2l6ZTogNTAgfSxcbiAqICAgd2l0aEh0dHBBZGFwdGVycyh7IGFwaUJhc2VVcmw6ICdodHRwOi8vbG9jYWxob3N0OjMwMDAvYXBpL3JlcG9ydGluZycgfSlcbiAqIClcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aEh0dHBBZGFwdGVycyhcbiAgb3B0aW9uczogSHR0cEFkYXB0ZXJzT3B0aW9uc1xuKTogUmVwb3J0aW5nRmVhdHVyZTxSZXBvcnRpbmdGZWF0dXJlS2luZC5IdHRwQWRhcHRlcnM+IHtcbiAgaWYgKCFvcHRpb25zIHx8ICFvcHRpb25zLmFwaUJhc2VVcmwgfHwgdHlwZW9mIG9wdGlvbnMuYXBpQmFzZVVybCAhPT0gJ3N0cmluZycgfHwgb3B0aW9ucy5hcGlCYXNlVXJsLnRyaW0oKSA9PT0gJycpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgW2J3YXlzLXJlcG9ydF0gXCJhcGlCYXNlVXJsXCIgaXMgcmVxdWlyZWQgd2hlbiBjb25maWd1cmluZyB3aXRoSHR0cEFkYXB0ZXJzKCkuIGAgK1xuICAgICAgYFBsZWFzZSBwcm92aWRlIGEgdmFsaWQgYmFja2VuZCBVUkwsIGUuZy4gd2l0aEh0dHBBZGFwdGVycyh7IGFwaUJhc2VVcmw6ICdodHRwOi8vbG9jYWxob3N0OjMwMDAvYXBpL3JlcG9ydGluZycgfSlgXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGNsZWFuVXJsID0gb3B0aW9ucy5hcGlCYXNlVXJsLnJlcGxhY2UoL1xcLyskLywgJycpO1xuXG4gIHJldHVybiB7XG4gICAgybVraW5kOiBSZXBvcnRpbmdGZWF0dXJlS2luZC5IdHRwQWRhcHRlcnMsXG4gICAgybVjb25maWc6IHtcbiAgICAgIGFwaUJhc2VVcmw6IGNsZWFuVXJsLFxuICAgICAgLi4uKG9wdGlvbnMubG9va3VwVGltZW91dE1zID8geyBsb29rdXBUaW1lb3V0TXM6IG9wdGlvbnMubG9va3VwVGltZW91dE1zIH0gOiB7fSksXG4gICAgfSxcbiAgICDJtXByb3ZpZGVyczogW1xuICAgICAge1xuICAgICAgICBwcm92aWRlOiBSRVBPUlRJTkdfQ09ORklHLFxuICAgICAgICB1c2VWYWx1ZToge1xuICAgICAgICAgIGFwaUJhc2VVcmw6IGNsZWFuVXJsLFxuICAgICAgICAgIC4uLihvcHRpb25zLmxvb2t1cFRpbWVvdXRNcyA/IHsgbG9va3VwVGltZW91dE1zOiBvcHRpb25zLmxvb2t1cFRpbWVvdXRNcyB9IDoge30pLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcHJvdmlkZTogUmVwb3J0RGF0YVNvdXJjZUFkYXB0ZXIsXG4gICAgICAgIHVzZUNsYXNzOiBIdHRwUmVwb3J0RGF0YVNvdXJjZUFkYXB0ZXIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBwcm92aWRlOiBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIsXG4gICAgICAgIHVzZUNsYXNzOiBIdHRwUmVwb3J0UGVyc2lzdGVuY2VBZGFwdGVyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcHJvdmlkZTogTWFzdGVyRGF0YVByb3ZpZGVyLFxuICAgICAgICB1c2VDbGFzczogSHR0cE1hc3RlckRhdGFBZGFwdGVyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcHJvdmlkZTogUmVwb3J0U2NoZW1hRGlzY292ZXJ5QWRhcHRlcixcbiAgICAgICAgdXNlQ2xhc3M6IEh0dHBSZXBvcnRTY2hlbWFEaXNjb3ZlcnlBZGFwdGVyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcHJvdmlkZTogUmVwb3J0TG9va3VwQWRhcHRlcixcbiAgICAgICAgdXNlQ2xhc3M6IEh0dHBSZXBvcnRMb29rdXBBZGFwdGVyLFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xufVxuXG4vKipcbiAqIFplcm8tYmFja2VuZCBzYW5kYm94IG1vZGUgdXNpbmcgYnJvd3NlciBMb2NhbFN0b3JhZ2UgZm9yIHJlcG9ydCBkZWZpbml0aW9uc1xuICogYW5kIG1vY2sgcmVhbGlzdGljIGRhdGFzZXRzIGZvciBxdWVyeSBleGVjdXRpb24uXG4gKlxuICogSWRlYWwgZm9yIGxvY2FsIGRldmVsb3BtZW50LCBwcm90b3R5cGluZywgYW5kIG9mZmxpbmUgdGVzdGluZyB3aXRob3V0IHNwaW5uaW5nIHVwIGJhY2tlbmRzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBwcm92aWRlUmVwb3J0aW5nKHdpdGhMb2NhbFN0b3JhZ2UoKSlcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aExvY2FsU3RvcmFnZSgpOiBSZXBvcnRpbmdGZWF0dXJlPFJlcG9ydGluZ0ZlYXR1cmVLaW5kLkxvY2FsU3RvcmFnZT4ge1xuICByZXR1cm4ge1xuICAgIMm1a2luZDogUmVwb3J0aW5nRmVhdHVyZUtpbmQuTG9jYWxTdG9yYWdlLFxuICAgIMm1cHJvdmlkZXJzOiBbXG4gICAgICB7XG4gICAgICAgIHByb3ZpZGU6IFJlcG9ydFBlcnNpc3RlbmNlQWRhcHRlcixcbiAgICAgICAgdXNlQ2xhc3M6IExvY2FsU3RvcmFnZVJlcG9ydFBlcnNpc3RlbmNlQWRhcHRlcixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHByb3ZpZGU6IFJlcG9ydERhdGFTb3VyY2VBZGFwdGVyLFxuICAgICAgICB1c2VDbGFzczogTW9ja1JlcG9ydERhdGFTb3VyY2VBZGFwdGVyLFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xufVxuXG4vKiogQWxpYXMgZm9yIHdpdGhMb2NhbFN0b3JhZ2UgKi9cbmV4cG9ydCBjb25zdCB3aXRoTW9ja0FkYXB0ZXJzID0gd2l0aExvY2FsU3RvcmFnZTtcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGBwcm92aWRlQndheXNSZXBvcnQoKWAgKGFuZCBgcHJvdmlkZVJlcG9ydGluZygpYCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvdmlkZUJ3YXlzUmVwb3J0T3B0aW9ucyBleHRlbmRzIFBhcnRpYWw8UmVwb3J0aW5nQ29uZmlnPiB7XG4gIC8qKlxuICAgKiBUaGUgQW5ndWxhciBjb21wb25lbnQgdG8gdXNlIGZvciByZW5kZXJpbmcgcmVwb3J0IHJlc3VsdCBncmlkcy5cbiAgICogQldheXMtZ3JpZCBpcyB0aGUgcmVjb21tZW5kZWQgZGVmYXVsdC4gSG9zdCBjYW4gcHJvdmlkZSBhbnkgZ3JpZCBjb21wb25lbnQuXG4gICAqL1xuICBncmlkQ29tcG9uZW50PzogVHlwZTx1bmtub3duPjtcblxuICAvKipcbiAgICogVGhlIEFuZ3VsYXIgY29tcG9uZW50IHRvIHVzZSBmb3IgcmVuZGVyaW5nIHJlcG9ydCB2aXN1YWwgY2hhcnRzLlxuICAgKiBIb3N0IGNhbiBwcm92aWRlIHRoZWlyIHByZWZlcnJlZCBjaGFydCBjb21wb25lbnQsIG9yIHVzZSB0aGUgYnVpbHQtaW4gU1ZHIGNoYXJ0cy5cbiAgICovXG4gIGNoYXJ0Q29tcG9uZW50PzogVHlwZTx1bmtub3duPjtcblxuICAvKiogSG9zdCdzIGltcGxlbWVudGF0aW9uIG9mIHRoZSBkYXRhIHNvdXJjZSBhZGFwdGVyLiAqL1xuICBkYXRhU291cmNlQWRhcHRlcj86IFR5cGU8UmVwb3J0RGF0YVNvdXJjZUFkYXB0ZXI+O1xuXG4gIC8qKiBIb3N0J3MgaW1wbGVtZW50YXRpb24gb2YgdGhlIG1hc3RlciBkYXRhIHByb3ZpZGVyLiAqL1xuICBtYXN0ZXJEYXRhUHJvdmlkZXI/OiBUeXBlPE1hc3RlckRhdGFQcm92aWRlcj47XG5cbiAgLyoqIEhvc3QncyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgcGVyc2lzdGVuY2UgYWRhcHRlci4gKi9cbiAgcGVyc2lzdGVuY2VBZGFwdGVyPzogVHlwZTxSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXI+O1xuXG4gIC8qKiBIb3N0J3MgaW1wbGVtZW50YXRpb24gb2YgdGhlIHNjaGVtYSBkaXNjb3ZlcnkgYWRhcHRlci4gKi9cbiAgc2NoZW1hRGlzY292ZXJ5QWRhcHRlcj86IFR5cGU8UmVwb3J0U2NoZW1hRGlzY292ZXJ5QWRhcHRlcj47XG5cbiAgLyoqIEhvc3QncyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbG9va3VwIGFkYXB0ZXIuICovXG4gIGxvb2t1cEFkYXB0ZXI/OiBUeXBlPFJlcG9ydExvb2t1cEFkYXB0ZXI+O1xuXG4gIC8qKlxuICAgKiBJbmxpbmUgc2Vzc2lvbiBjb250ZXh0IHBhcmFtZXRlcnMgb3IgZmFjdG9yeSBmdW5jdGlvbjpcbiAgICogZS5nLiBgc2Vzc2lvbjogKCkgPT4gKHsgYnJhbmNoSWQ6IGF1dGguYnJhbmNoSWQoKSwgdXNlcjogYXV0aC51c2VyKCkgfSlgXG4gICAqL1xuICBzZXNzaW9uPzogU2Vzc2lvbkNvbnRleHRTb3VyY2UgfCAoKCkgPT4gUmVjb3JkPHN0cmluZywgdW5rbm93bj4pO1xuXG4gIC8qKlxuICAgKiBIb3N0IGFwcGxpY2F0aW9uJ3Mgc2Vzc2lvbiBjb250ZXh0IHBhcmFtZXRlcnMgKGUuZy4geyBicmFuY2hJZDogMSwgY29tcGFueUlkOiAxMCwgdXNlcklkOiAndXNyLTEnIH0pLlxuICAgKi9cbiAgc2Vzc2lvbkNvbnRleHQ/OiBTZXNzaW9uQ29udGV4dFNvdXJjZTtcblxuICAvKipcbiAgICogSG9zdCBhcHBsaWNhdGlvbiBzZXJ2aWNlIGNsYXNzIGltcGxlbWVudGluZyBgU2Vzc2lvbkNvbnRleHRQcm92aWRlcmAuXG4gICAqL1xuICBzZXNzaW9uQ29udGV4dFByb3ZpZGVyPzogVHlwZTxTZXNzaW9uQ29udGV4dFByb3ZpZGVyPjtcblxuICAvKipcbiAgICogRmFjdG9yeSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBTZXNzaW9uQ29udGV4dFNvdXJjZSB3aXRoIGRlcGVuZGVuY3kgaW5qZWN0aW9uIGNvbnRleHQuXG4gICAqL1xuICBzZXNzaW9uQ29udGV4dEZhY3Rvcnk/OiAoKSA9PiBTZXNzaW9uQ29udGV4dFNvdXJjZTtcbn1cblxuLyoqIEJhY2t3YXJkIGNvbXBhdGliaWxpdHkgYW5kIGFsdGVybmF0aXZlIG5hbWluZyBhbGlhc2VzICovXG5leHBvcnQgdHlwZSBQcm92aWRlUmVwb3J0aW5nT3B0aW9ucyA9IFByb3ZpZGVCd2F5c1JlcG9ydE9wdGlvbnM7XG5leHBvcnQgdHlwZSBQcm92aWRlQndheXNSZXBvcnRpbmdPcHRpb25zID0gUHJvdmlkZUJ3YXlzUmVwb3J0T3B0aW9ucztcblxuLyoqXG4gKiBUeXBlIGd1YXJkIHRvIGRldGVjdCB0aGUgc2ltcGxpZmllZCBgQndheXNSZXBvcnRDb25maWdgIHNoYXBlLlxuICovXG5mdW5jdGlvbiBpc0J3YXlzUmVwb3J0Q29uZmlnKFxuICBhcmc6IEJ3YXlzUmVwb3J0Q29uZmlnIHwgUHJvdmlkZUJ3YXlzUmVwb3J0T3B0aW9uc1xuKTogYXJnIGlzIEJ3YXlzUmVwb3J0Q29uZmlnIHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgYXJnID09PSAnb2JqZWN0JyAmJlxuICAgIGFyZyAhPT0gbnVsbCAmJlxuICAgICdzcEVuZHBvaW50JyBpbiBhcmcgJiZcbiAgICAndGFibGVzRW5kcG9pbnQnIGluIGFyZyAmJlxuICAgICdleGVjdXRlRW5kcG9pbnQnIGluIGFyZ1xuICApO1xufVxuXG4vKipcbiAqIFByb3ZpZGVzIHRoZSBCV2F5cy1SZXBvcnQgbGlicmFyeSB0byB0aGUgQW5ndWxhciBhcHBsaWNhdGlvbi5cbiAqXG4gKiAqKlNpbXBsZSBjb25maWcgKHJlY29tbWVuZGVkIGZvciBtb3N0IHByb2plY3RzKToqKlxuICogYGBgdHlwZXNjcmlwdFxuICogcHJvdmlkZUJ3YXlzUmVwb3J0KHtcbiAqICAgc3BFbmRwb2ludDogICAgICAnL2FwaS9yZXBvcnRpbmcvcHJvY2VkdXJlcycsXG4gKiAgIHRhYmxlc0VuZHBvaW50OiAgJy9hcGkvcmVwb3J0aW5nL3RhYmxlcycsXG4gKiAgIGV4ZWN1dGVFbmRwb2ludDogJy9hcGkvcmVwb3J0aW5nL2V4ZWN1dGUnLFxuICogICByZXBvcnRzRW5kcG9pbnQ6ICcvYXBpL3JlcG9ydGluZy9yZXBvcnRzJyxcbiAqICAgY29tcG9uZW50czogWydmb3JtSW5wdXRzJywgJ2FjdGlvbkJ1dHRvbnMnXSxcbiAqICAgc2Vzc2lvbjogKCkgPT4gaW5qZWN0KEF1dGhTZXJ2aWNlKS5zZXNzaW9uKCksXG4gKiB9KVxuICogYGBgXG4gKlxuICogKipBZHZhbmNlZCBjb25maWcgKGV4aXN0aW5nIGFkYXB0ZXIgcGF0dGVybik6KipcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHByb3ZpZGVCd2F5c1JlcG9ydChcbiAqICAgeyBhcGlCYXNlVXJsOiAnL2FwaS9yZXBvcnRpbmcnIH0sXG4gKiAgIHdpdGhIdHRwQWRhcHRlcnMoeyBhcGlCYXNlVXJsOiAnL2FwaS9yZXBvcnRpbmcnIH0pXG4gKiApXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEVpdGhlciBhIGBCd2F5c1JlcG9ydENvbmZpZ2AgKHNpbXBsZSkgb3IgYFByb3ZpZGVCd2F5c1JlcG9ydE9wdGlvbnNgIChhZHZhbmNlZCkuXG4gKiBAcGFyYW0gZmVhdHVyZXMgLSBPcHRpb25hbCBmZWF0dXJlcyBsaWtlIGB3aXRoSHR0cEFkYXB0ZXJzKC4uLilgIG9yIGB3aXRoTG9jYWxTdG9yYWdlKClgLlxuICogQHJldHVybnMgRW52aXJvbm1lbnQgcHJvdmlkZXJzIGZvciB0aGUgcmVwb3J0aW5nIGxpYnJhcnkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQndheXNSZXBvcnQoXG4gIG9wdGlvbnM6IEJ3YXlzUmVwb3J0Q29uZmlnIHwgUHJvdmlkZUJ3YXlzUmVwb3J0T3B0aW9ucyA9IHt9IGFzIFByb3ZpZGVCd2F5c1JlcG9ydE9wdGlvbnMsXG4gIC4uLmZlYXR1cmVzOiBSZXBvcnRpbmdGZWF0dXJlW11cbik6IEVudmlyb25tZW50UHJvdmlkZXJzIHtcbiAgLy8g4pSA4pSA4pSAIFNpbXBsZSBjb25maWcgcGF0aCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgaWYgKGlzQndheXNSZXBvcnRDb25maWcob3B0aW9ucykpIHtcbiAgICByZXR1cm4gcHJvdmlkZUJ3YXlzUmVwb3J0RnJvbVNpbXBsZUNvbmZpZyhvcHRpb25zKTtcbiAgfVxuXG4gIC8vIOKUgOKUgOKUgCBBZHZhbmNlZCAvIGxlZ2FjeSBjb25maWcgcGF0aCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgcmV0dXJuIHByb3ZpZGVCd2F5c1JlcG9ydEZyb21PcHRpb25zKG9wdGlvbnMsIGZlYXR1cmVzKTtcbn1cblxuLyoqXG4gKiBXaXJlcyB1cCBlbmRwb2ludC1iYXNlZCBhZGFwdGVycyBmcm9tIHRoZSBzaW1wbGlmaWVkIGBCd2F5c1JlcG9ydENvbmZpZ2AuXG4gKi9cbmZ1bmN0aW9uIHByb3ZpZGVCd2F5c1JlcG9ydEZyb21TaW1wbGVDb25maWcoY29uZmlnOiBCd2F5c1JlcG9ydENvbmZpZyk6IEVudmlyb25tZW50UHJvdmlkZXJzIHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZUJ3YXlzQ29uZmlnKGNvbmZpZyk7XG5cbiAgY29uc3QgcmVwb3J0aW5nQ29uZmlnOiBSZXBvcnRpbmdDb25maWcgPSB7XG4gICAgLi4uREVGQVVMVF9DT05GSUcsXG4gICAgZGVmYXVsdFBhZ2VTaXplOiBub3JtYWxpemVkLmRlZmF1bHRQYWdlU2l6ZSxcbiAgICBkYXRlRm9ybWF0OiBub3JtYWxpemVkLmRhdGVGb3JtYXQsXG4gICAgbG9va3VwVGltZW91dE1zOiBub3JtYWxpemVkLmxvb2t1cFRpbWVvdXRNcyxcbiAgICBlbmFibGVEZXNpZ25lcjogdHJ1ZSxcbiAgICBhbGxvd2VkQ2F0ZWdvcmllczogbm9ybWFsaXplZC5hbGxvd2VkQ2F0ZWdvcmllcyxcbiAgICBhdXRvUGFyYW1ldGVyOiBub3JtYWxpemVkLmF1dG9QYXJhbWV0ZXIsXG4gICAgcm91dGVCYXNlOiBub3JtYWxpemVkLnJvdXRlQmFzZSxcbiAgfTtcblxuICBjb25zdCBwcm92aWRlcnM6IFByb3ZpZGVyW10gPSBbXG4gICAgLy8gQnVpbHRpbiBjb21wb25lbnQgcmVnaXN0cmF0aW9uXG4gICAge1xuICAgICAgcHJvdmlkZTogRU5WSVJPTk1FTlRfSU5JVElBTElaRVIsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIHVzZVZhbHVlOiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlZ2lzdHJ5ID0gaW5qZWN0KENvbXBvbmVudFJlZ2lzdHJ5KTtcbiAgICAgICAgcmVnaXN0ZXJCdWlsdGluQ29tcG9uZW50cyhyZWdpc3RyeSk7XG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgICAnd2hlZWwnLFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBhY3RpdmVFbCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICAgIGlmIChhY3RpdmVFbCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQgJiYgYWN0aXZlRWwudHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICBhY3RpdmVFbC5ibHVyKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IHBhc3NpdmU6IHRydWUgfVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSxcblxuICAgIC8vIENvcmUgY29uZmlndXJhdGlvblxuICAgIHsgcHJvdmlkZTogUkVQT1JUSU5HX0NPTkZJRywgdXNlVmFsdWU6IHJlcG9ydGluZ0NvbmZpZyB9LFxuXG4gICAgLy8gRW5kcG9pbnQgVVJMcyBmb3IgdGhlIGFkYXB0ZXJzXG4gICAge1xuICAgICAgcHJvdmlkZTogQldBWVNfUkVQT1JUX0VORFBPSU5UUyxcbiAgICAgIHVzZVZhbHVlOiB7XG4gICAgICAgIHNwRW5kcG9pbnQ6IG5vcm1hbGl6ZWQuc3BFbmRwb2ludCxcbiAgICAgICAgdGFibGVzRW5kcG9pbnQ6IG5vcm1hbGl6ZWQudGFibGVzRW5kcG9pbnQsXG4gICAgICAgIGV4ZWN1dGVFbmRwb2ludDogbm9ybWFsaXplZC5leGVjdXRlRW5kcG9pbnQsXG4gICAgICAgIGxvb2t1cEVuZHBvaW50OiBub3JtYWxpemVkLmxvb2t1cEVuZHBvaW50LFxuICAgICAgICByZXBvcnRzRW5kcG9pbnQ6IG5vcm1hbGl6ZWQucmVwb3J0c0VuZHBvaW50LFxuICAgICAgfSxcbiAgICB9LFxuXG4gICAgLy8gRW5kcG9pbnQtYmFzZWQgYWRhcHRlcnNcbiAgICB7IHByb3ZpZGU6IFJlcG9ydFNjaGVtYURpc2NvdmVyeUFkYXB0ZXIsIHVzZUNsYXNzOiBFbmRwb2ludFNjaGVtYURpc2NvdmVyeUFkYXB0ZXIgfSxcbiAgICB7IHByb3ZpZGU6IFJlcG9ydERhdGFTb3VyY2VBZGFwdGVyLCB1c2VDbGFzczogRW5kcG9pbnREYXRhU291cmNlQWRhcHRlciB9LFxuICAgIHsgcHJvdmlkZTogUmVwb3J0TG9va3VwQWRhcHRlciwgdXNlQ2xhc3M6IEVuZHBvaW50TG9va3VwQWRhcHRlciB9LFxuICAgIHsgcHJvdmlkZTogTWFzdGVyRGF0YVByb3ZpZGVyLCB1c2VDbGFzczogRW5kcG9pbnRNYXN0ZXJEYXRhQWRhcHRlciB9LFxuXG4gICAgLy8gUGVyc2lzdGVuY2U6IHVzZSBlbmRwb2ludCBhZGFwdGVyIGlmIHJlcG9ydHNFbmRwb2ludCBpcyBzZXQsIG90aGVyd2lzZSBsb2NhbFN0b3JhZ2VcbiAgICB7XG4gICAgICBwcm92aWRlOiBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIsXG4gICAgICB1c2VDbGFzczogbm9ybWFsaXplZC5yZXBvcnRzRW5kcG9pbnRcbiAgICAgICAgPyBFbmRwb2ludFBlcnNpc3RlbmNlQWRhcHRlclxuICAgICAgICA6IExvY2FsU3RvcmFnZVJlcG9ydFBlcnNpc3RlbmNlQWRhcHRlcixcbiAgICB9LFxuICBdO1xuXG4gIC8vIEdyaWQgLyBDaGFydCBvdmVycmlkZXNcbiAgaWYgKG5vcm1hbGl6ZWQuZ3JpZENvbXBvbmVudCkge1xuICAgIHByb3ZpZGVycy5wdXNoKHsgcHJvdmlkZTogR1JJRF9DT01QT05FTlQsIHVzZVZhbHVlOiBub3JtYWxpemVkLmdyaWRDb21wb25lbnQgfSk7XG4gIH1cbiAgaWYgKG5vcm1hbGl6ZWQuY2hhcnRDb21wb25lbnQpIHtcbiAgICBwcm92aWRlcnMucHVzaCh7IHByb3ZpZGU6IENIQVJUX0NPTVBPTkVOVCwgdXNlVmFsdWU6IG5vcm1hbGl6ZWQuY2hhcnRDb21wb25lbnQgfSk7XG4gIH1cblxuICAvLyBTZXNzaW9uIGNvbnRleHQgLyBwcm92aWRlclxuICBjb25zdCBzZXNzaW9uVGFyZ2V0ID0gbm9ybWFsaXplZC5zZXNzaW9uUHJvdmlkZXIgPz8gbm9ybWFsaXplZC5zZXNzaW9uO1xuICBpZiAoc2Vzc2lvblRhcmdldCkge1xuICAgIGlmICh0eXBlb2Ygc2Vzc2lvblRhcmdldCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgaXNDbGFzcyA9IC9eY2xhc3NcXHMvLnRlc3QoRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoc2Vzc2lvblRhcmdldCkpO1xuICAgICAgaWYgKGlzQ2xhc3MpIHtcbiAgICAgICAgcHJvdmlkZXJzLnB1c2goc2Vzc2lvblRhcmdldCBhcyBUeXBlPGFueT4pO1xuICAgICAgICBwcm92aWRlcnMucHVzaCh7IHByb3ZpZGU6IFJFUE9SVF9TRVNTSU9OX1BST1ZJREVSLCB1c2VFeGlzdGluZzogc2Vzc2lvblRhcmdldCBhcyBUeXBlPGFueT4gfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm92aWRlcnMucHVzaCh7IHByb3ZpZGU6IFJFUE9SVF9TRVNTSU9OX0NPTlRFWFQsIHVzZUZhY3Rvcnk6IHNlc3Npb25UYXJnZXQgYXMgKCkgPT4gYW55IH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwcm92aWRlcnMucHVzaCh7IHByb3ZpZGU6IFJFUE9SVF9TRVNTSU9OX0NPTlRFWFQsIHVzZVZhbHVlOiBzZXNzaW9uVGFyZ2V0IH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMocHJvdmlkZXJzKTtcbn1cblxuLyoqXG4gKiBPcmlnaW5hbCBhZHZhbmNlZCBjb25maWcgcGF0aCDigJQgdW5jaGFuZ2VkIGJlaGF2aW9yLlxuICovXG5mdW5jdGlvbiBwcm92aWRlQndheXNSZXBvcnRGcm9tT3B0aW9ucyhcbiAgb3B0aW9uczogUHJvdmlkZUJ3YXlzUmVwb3J0T3B0aW9ucyxcbiAgZmVhdHVyZXM6IFJlcG9ydGluZ0ZlYXR1cmVbXVxuKTogRW52aXJvbm1lbnRQcm92aWRlcnMge1xuICBjb25zdCBjb25maWc6IFJlcG9ydGluZ0NvbmZpZyA9IHsgLi4uREVGQVVMVF9DT05GSUcsIC4uLm9wdGlvbnMgfTtcbiAgZm9yIChjb25zdCBmZWF0dXJlIG9mIGZlYXR1cmVzKSB7XG4gICAgaWYgKGZlYXR1cmUuybVjb25maWcpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24oY29uZmlnLCBmZWF0dXJlLsm1Y29uZmlnKTtcbiAgICB9XG4gIH1cbiAgaWYgKGNvbmZpZy5hcGlCYXNlVXJsKSB7XG4gICAgY29uZmlnLmFwaUJhc2VVcmwgPSBjb25maWcuYXBpQmFzZVVybC5yZXBsYWNlKC9cXC8rJC8sICcnKTtcbiAgfVxuXG4gIGNvbnN0IHByb3ZpZGVyczogUHJvdmlkZXJbXSA9IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBFTlZJUk9OTUVOVF9JTklUSUFMSVpFUixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlVmFsdWU6ICgpID0+IHtcbiAgICAgICAgY29uc3QgcmVnaXN0cnkgPSBpbmplY3QoQ29tcG9uZW50UmVnaXN0cnkpO1xuICAgICAgICByZWdpc3RlckJ1aWx0aW5Db21wb25lbnRzKHJlZ2lzdHJ5KTtcbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAgICd3aGVlbCcsXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZUVsID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICAgICAgICAgICAgaWYgKGFjdGl2ZUVsIGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCAmJiBhY3RpdmVFbC50eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgIGFjdGl2ZUVsLmJsdXIoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHsgcGFzc2l2ZTogdHJ1ZSB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9LFxuICBdO1xuXG4gIGNvbnN0IGhhc0h0dHBGZWF0dXJlID0gZmVhdHVyZXMuc29tZSgoZikgPT4gZi7JtWtpbmQgPT09IFJlcG9ydGluZ0ZlYXR1cmVLaW5kLkh0dHBBZGFwdGVycyk7XG4gIGNvbnN0IGhhc0xvY2FsRmVhdHVyZSA9IGZlYXR1cmVzLnNvbWUoKGYpID0+IGYuybVraW5kID09PSBSZXBvcnRpbmdGZWF0dXJlS2luZC5Mb2NhbFN0b3JhZ2UpO1xuXG4gIC8vIEFwcGVuZCBmZWF0dXJlIHByb3ZpZGVycyAoZXhjbHVkaW5nIHN0YW5kYWxvbmUgUkVQT1JUSU5HX0NPTkZJRyBzbyBtZXJnZWQgY29uZmlnIHdpbnMpXG4gIGZvciAoY29uc3QgZmVhdHVyZSBvZiBmZWF0dXJlcykge1xuICAgIGNvbnN0IG5vbkNvbmZpZ1Byb3ZpZGVycyA9IGZlYXR1cmUuybVwcm92aWRlcnMuZmlsdGVyKFxuICAgICAgKHApID0+ICEodHlwZW9mIHAgPT09ICdvYmplY3QnICYmIHAgIT09IG51bGwgJiYgJ3Byb3ZpZGUnIGluIHAgJiYgcC5wcm92aWRlID09PSBSRVBPUlRJTkdfQ09ORklHKVxuICAgICk7XG4gICAgcHJvdmlkZXJzLnB1c2goLi4ubm9uQ29uZmlnUHJvdmlkZXJzKTtcbiAgfVxuXG4gIC8vIFVuaWZpZWQgbWVyZ2VkIGNvbmZpZ3VyYXRpb25cbiAgcHJvdmlkZXJzLnB1c2goeyBwcm92aWRlOiBSRVBPUlRJTkdfQ09ORklHLCB1c2VWYWx1ZTogY29uZmlnIH0pO1xuXG4gIC8vIEF1dG8tcHJvdmlzaW9uIEhUVFAgYWRhcHRlcnMgaWYgYXBpQmFzZVVybCB3YXMgc3VwcGxpZWQgYXMgYSAxLWxpbmUgb3B0aW9uXG4gIGlmICghaGFzSHR0cEZlYXR1cmUgJiYgIWhhc0xvY2FsRmVhdHVyZSAmJiBvcHRpb25zLmFwaUJhc2VVcmwpIHtcbiAgICBwcm92aWRlcnMucHVzaChcbiAgICAgIHsgcHJvdmlkZTogUmVwb3J0RGF0YVNvdXJjZUFkYXB0ZXIsIHVzZUNsYXNzOiBvcHRpb25zLmRhdGFTb3VyY2VBZGFwdGVyID8/IEh0dHBSZXBvcnREYXRhU291cmNlQWRhcHRlciB9LFxuICAgICAgeyBwcm92aWRlOiBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIsIHVzZUNsYXNzOiBvcHRpb25zLnBlcnNpc3RlbmNlQWRhcHRlciA/PyBIdHRwUmVwb3J0UGVyc2lzdGVuY2VBZGFwdGVyIH0sXG4gICAgICB7IHByb3ZpZGU6IE1hc3RlckRhdGFQcm92aWRlciwgdXNlQ2xhc3M6IG9wdGlvbnMubWFzdGVyRGF0YVByb3ZpZGVyID8/IEh0dHBNYXN0ZXJEYXRhQWRhcHRlciB9LFxuICAgICAgeyBwcm92aWRlOiBSZXBvcnRTY2hlbWFEaXNjb3ZlcnlBZGFwdGVyLCB1c2VDbGFzczogb3B0aW9ucy5zY2hlbWFEaXNjb3ZlcnlBZGFwdGVyID8/IEh0dHBSZXBvcnRTY2hlbWFEaXNjb3ZlcnlBZGFwdGVyIH0sXG4gICAgICB7IHByb3ZpZGU6IFJlcG9ydExvb2t1cEFkYXB0ZXIsIHVzZUNsYXNzOiBvcHRpb25zLmxvb2t1cEFkYXB0ZXIgPz8gSHR0cFJlcG9ydExvb2t1cEFkYXB0ZXIgfVxuICAgICk7XG4gIH0gZWxzZSBpZiAoIWhhc0h0dHBGZWF0dXJlICYmICFoYXNMb2NhbEZlYXR1cmUpIHtcbiAgICAvLyBJZiBubyBiYWNrZW5kIGFwaUJhc2VVcmwgYW5kIG5vIGZlYXR1cmUgcGFzc2VkLCBmYWxsYmFjayB0byB6ZXJvLWJhY2tlbmQgc2FuZGJveCBtb2RlXG4gICAgcHJvdmlkZXJzLnB1c2goXG4gICAgICB7XG4gICAgICAgIHByb3ZpZGU6IFJlcG9ydFBlcnNpc3RlbmNlQWRhcHRlcixcbiAgICAgICAgdXNlQ2xhc3M6IG9wdGlvbnMucGVyc2lzdGVuY2VBZGFwdGVyID8/IExvY2FsU3RvcmFnZVJlcG9ydFBlcnNpc3RlbmNlQWRhcHRlcixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHByb3ZpZGU6IFJlcG9ydERhdGFTb3VyY2VBZGFwdGVyLFxuICAgICAgICB1c2VDbGFzczogb3B0aW9ucy5kYXRhU291cmNlQWRhcHRlciA/PyBNb2NrUmVwb3J0RGF0YVNvdXJjZUFkYXB0ZXIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBwcm92aWRlOiBSZXBvcnRTY2hlbWFEaXNjb3ZlcnlBZGFwdGVyLFxuICAgICAgICB1c2VDbGFzczogb3B0aW9ucy5zY2hlbWFEaXNjb3ZlcnlBZGFwdGVyID8/IEh0dHBSZXBvcnRTY2hlbWFEaXNjb3ZlcnlBZGFwdGVyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcHJvdmlkZTogUmVwb3J0TG9va3VwQWRhcHRlcixcbiAgICAgICAgdXNlQ2xhc3M6IG9wdGlvbnMubG9va3VwQWRhcHRlciA/PyBIdHRwUmVwb3J0TG9va3VwQWRhcHRlcixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHByb3ZpZGU6IE1hc3RlckRhdGFQcm92aWRlcixcbiAgICAgICAgdXNlQ2xhc3M6IG9wdGlvbnMubWFzdGVyRGF0YVByb3ZpZGVyID8/IEh0dHBNYXN0ZXJEYXRhQWRhcHRlcixcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgLy8gQ29tcG9uZW50IG92ZXJyaWRlc1xuICBpZiAob3B0aW9ucy5ncmlkQ29tcG9uZW50KSB7XG4gICAgcHJvdmlkZXJzLnB1c2goeyBwcm92aWRlOiBHUklEX0NPTVBPTkVOVCwgdXNlVmFsdWU6IG9wdGlvbnMuZ3JpZENvbXBvbmVudCB9KTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmNoYXJ0Q29tcG9uZW50KSB7XG4gICAgcHJvdmlkZXJzLnB1c2goeyBwcm92aWRlOiBDSEFSVF9DT01QT05FTlQsIHVzZVZhbHVlOiBvcHRpb25zLmNoYXJ0Q29tcG9uZW50IH0pO1xuICB9XG5cbiAgLy8gRXhwbGljaXQgYWRhcHRlciBvdmVycmlkZXMgYWx3YXlzIHdpblxuICBpZiAob3B0aW9ucy5kYXRhU291cmNlQWRhcHRlcikge1xuICAgIHByb3ZpZGVycy5wdXNoKHsgcHJvdmlkZTogUmVwb3J0RGF0YVNvdXJjZUFkYXB0ZXIsIHVzZUNsYXNzOiBvcHRpb25zLmRhdGFTb3VyY2VBZGFwdGVyIH0pO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMubWFzdGVyRGF0YVByb3ZpZGVyKSB7XG4gICAgcHJvdmlkZXJzLnB1c2goeyBwcm92aWRlOiBNYXN0ZXJEYXRhUHJvdmlkZXIsIHVzZUNsYXNzOiBvcHRpb25zLm1hc3RlckRhdGFQcm92aWRlciB9KTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLnBlcnNpc3RlbmNlQWRhcHRlcikge1xuICAgIHByb3ZpZGVycy5wdXNoKHsgcHJvdmlkZTogUmVwb3J0UGVyc2lzdGVuY2VBZGFwdGVyLCB1c2VDbGFzczogb3B0aW9ucy5wZXJzaXN0ZW5jZUFkYXB0ZXIgfSk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5zY2hlbWFEaXNjb3ZlcnlBZGFwdGVyKSB7XG4gICAgcHJvdmlkZXJzLnB1c2goeyBwcm92aWRlOiBSZXBvcnRTY2hlbWFEaXNjb3ZlcnlBZGFwdGVyLCB1c2VDbGFzczogb3B0aW9ucy5zY2hlbWFEaXNjb3ZlcnlBZGFwdGVyIH0pO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMubG9va3VwQWRhcHRlcikge1xuICAgIHByb3ZpZGVycy5wdXNoKHsgcHJvdmlkZTogUmVwb3J0TG9va3VwQWRhcHRlciwgdXNlQ2xhc3M6IG9wdGlvbnMubG9va3VwQWRhcHRlciB9KTtcbiAgfVxuXG4gIC8vIER5bmFtaWMgU2Vzc2lvbiBDb250ZXh0IFByb3ZpZGVyc1xuICBpZiAob3B0aW9ucy5zZXNzaW9uQ29udGV4dFByb3ZpZGVyKSB7XG4gICAgcHJvdmlkZXJzLnB1c2goeyBwcm92aWRlOiBSRVBPUlRfU0VTU0lPTl9QUk9WSURFUiwgdXNlQ2xhc3M6IG9wdGlvbnMuc2Vzc2lvbkNvbnRleHRQcm92aWRlciB9KTtcbiAgfVxuXG4gIC8vIEZsZXhpYmxlIGlubGluZSBzZXNzaW9uIHN5bnRheDogc2Vzc2lvbjogKCkgPT4gKHsgLi4uIH0pXG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5zZXNzaW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcHJvdmlkZXJzLnB1c2goeyBwcm92aWRlOiBSRVBPUlRfU0VTU0lPTl9DT05URVhULCB1c2VGYWN0b3J5OiBvcHRpb25zLnNlc3Npb24gYXMgKCkgPT4gYW55IH0pO1xuICB9IGVsc2UgaWYgKG9wdGlvbnMuc2Vzc2lvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcHJvdmlkZXJzLnB1c2goeyBwcm92aWRlOiBSRVBPUlRfU0VTU0lPTl9DT05URVhULCB1c2VWYWx1ZTogb3B0aW9ucy5zZXNzaW9uIH0pO1xuICB9IGVsc2UgaWYgKG9wdGlvbnMuc2Vzc2lvbkNvbnRleHRGYWN0b3J5KSB7XG4gICAgcHJvdmlkZXJzLnB1c2goeyBwcm92aWRlOiBSRVBPUlRfU0VTU0lPTl9DT05URVhULCB1c2VGYWN0b3J5OiBvcHRpb25zLnNlc3Npb25Db250ZXh0RmFjdG9yeSB9KTtcbiAgfSBlbHNlIGlmIChvcHRpb25zLnNlc3Npb25Db250ZXh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICBwcm92aWRlcnMucHVzaCh7IHByb3ZpZGU6IFJFUE9SVF9TRVNTSU9OX0NPTlRFWFQsIHVzZVZhbHVlOiBvcHRpb25zLnNlc3Npb25Db250ZXh0IH0pO1xuICB9XG5cbiAgcmV0dXJuIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhwcm92aWRlcnMpO1xufVxuXG4vKiogQWxpYXMgZm9yIHByb3ZpZGVCd2F5c1JlcG9ydCAqL1xuZXhwb3J0IGNvbnN0IHByb3ZpZGVCd2F5c1JlcG9ydGluZyA9IHByb3ZpZGVCd2F5c1JlcG9ydDtcblxuLyoqIEJhY2t3YXJkLWNvbXBhdGlibGUgYWxpYXMgZm9yIHByb3ZpZGVCd2F5c1JlcG9ydCAqL1xuZXhwb3J0IGNvbnN0IHByb3ZpZGVSZXBvcnRpbmcgPSBwcm92aWRlQndheXNSZXBvcnQ7XG5cbi8qKiBTZW1hbnRpYyBhbGlhcyBmb3IgQldheXMgcmVwb3J0IHByb3ZpZGVycyAqL1xuZXhwb3J0IGNvbnN0IGJ3YXlzUmVwb3J0UHJvdmlkZXJzID0gcHJvdmlkZUJ3YXlzUmVwb3J0O1xuIl19
|
|
340
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS1yZXBvcnRpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9wcm92aWRlLXJlcG9ydGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixNQUFNLEVBQ04sd0JBQXdCLEdBR3pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxlQUFlLEVBQ2YsY0FBYyxFQUNkLGdCQUFnQixHQUVqQixNQUFNLHNDQUFzQyxDQUFDO0FBQzlDLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsdUJBQXVCLEdBR3hCLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDdkYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDbEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDL0YsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDakcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDOUUsT0FBTyxFQUNMLDJCQUEyQixFQUMzQiw0QkFBNEIsRUFDNUIsdUJBQXVCLEVBQ3ZCLGdDQUFnQyxFQUNoQyxxQkFBcUIsRUFDckIsb0NBQW9DLEVBQ3BDLDJCQUEyQixFQUMzQiw4QkFBOEIsRUFDOUIseUJBQXlCLEVBQ3pCLHFCQUFxQixFQUNyQiwwQkFBMEIsRUFDMUIseUJBQXlCLEVBQ3pCLHNCQUFzQixHQUN2QixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNFLE9BQU8sRUFFTCxvQkFB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VSxFQUFFLENBQUM7UUFDMUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLE9BQW9CLEVBQUUsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7U0FBTSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDekMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDakYsQ0FBQztTQUFNLElBQUksT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDekMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQztJQUNqRyxDQUFDO1NBQU0sSUFBSSxPQUFPLENBQUMsY0FBYyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ2hELFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQ3hGLENBQUM7SUFFRCxPQUFPLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFFRCxtQ0FBbUM7QUFDbkMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsa0JBQWtCLENBQUM7QUFFeEQsdURBQXVEO0FBQ3ZELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLGtCQUFrQixDQUFDO0FBRW5ELGdEQUFnRDtBQUNoRCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVwb3J0aW5nIGxpYnJhcnkgcm9vdCBwcm92aWRlciBmdW5jdGlvbiBhbmQgZmVhdHVyZSBmdW5jdGlvbnMuXG4gKlxuICogQ29uZmlndXJlcyB0aGUgbGlicmFyeSwgaXRzIHRva2VucywgYW5kIHJlZ2lzdGVycyBidWlsdC1pbiBwcmltaXRpdmVzLlxuICovXG5cbmltcG9ydCB7XG4gIEVOVklST05NRU5UX0lOSVRJQUxJWkVSLFxuICBFbnZpcm9ubWVudFByb3ZpZGVycyxcbiAgaW5qZWN0LFxuICBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMsXG4gIFByb3ZpZGVyLFxuICBUeXBlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENIQVJUX0NPTVBPTkVOVCxcbiAgR1JJRF9DT01QT05FTlQsXG4gIFJFUE9SVElOR19DT05GSUcsXG4gIFJlcG9ydGluZ0NvbmZpZyxcbn0gZnJvbSAnLi9jb3JlL3Rva2Vucy9yZXBvcnRpbmctY29uZmlnLnRva2VuJztcbmltcG9ydCB7XG4gIFJFUE9SVF9TRVNTSU9OX0NPTlRFWFQsXG4gIFJFUE9SVF9TRVNTSU9OX1BST1ZJREVSLFxuICBTZXNzaW9uQ29udGV4dFByb3ZpZGVyLFxuICBTZXNzaW9uQ29udGV4dFNvdXJjZSxcbn0gZnJvbSAnLi9jb3JlL3Rva2Vucy9zZXNzaW9uLWNvbnRleHQudG9rZW4nO1xuaW1wb3J0IHsgUmVwb3J0RGF0YVNvdXJjZUFkYXB0ZXIgfSBmcm9tICcuL2RhdGEtYWNjZXNzL2NvbnRyYWN0cy9kYXRhLXNvdXJjZS5jb250cmFjdCc7XG5pbXBvcnQgeyBNYXN0ZXJEYXRhUHJvdmlkZXIgfSBmcm9tICcuL2RhdGEtYWNjZXNzL2NvbnRyYWN0cy9tYXN0ZXItZGF0YS5wcm92aWRlcic7XG5pbXBvcnQgeyBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIgfSBmcm9tICcuL2RhdGEtYWNjZXNzL2NvbnRyYWN0cy9yZXBvcnQtcGVyc2lzdGVuY2UuY29udHJhY3QnO1xuaW1wb3J0IHsgUmVwb3J0U2NoZW1hRGlzY292ZXJ5QWRhcHRlciB9IGZyb20gJy4vZGF0YS1hY2Nlc3MvY29udHJhY3RzL3NjaGVtYS1kaXNjb3ZlcnkuY29udHJhY3QnO1xuaW1wb3J0IHsgUmVwb3J0TG9va3VwQWRhcHRlciB9IGZyb20gJy4vZGF0YS1hY2Nlc3MvY29udHJhY3RzL2xvb2t1cC5jb250cmFjdCc7XG5pbXBvcnQge1xuICBIdHRwUmVwb3J0RGF0YVNvdXJjZUFkYXB0ZXIsXG4gIEh0dHBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIsXG4gIEh0dHBSZXBvcnRMb29rdXBBZGFwdGVyLFxuICBIdHRwUmVwb3J0U2NoZW1hRGlzY292ZXJ5QWRhcHRlcixcbiAgSHR0cE1hc3RlckRhdGFBZGFwdGVyLFxuICBMb2NhbFN0b3JhZ2VSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIsXG4gIE1vY2tSZXBvcnREYXRhU291cmNlQWRhcHRlcixcbiAgRW5kcG9pbnRTY2hlbWFEaXNjb3ZlcnlBZGFwdGVyLFxuICBFbmRwb2ludERhdGFTb3VyY2VBZGFwdGVyLFxuICBFbmRwb2ludExvb2t1cEFkYXB0ZXIsXG4gIEVuZHBvaW50UGVyc2lzdGVuY2VBZGFwdGVyLFxuICBFbmRwb2ludE1hc3RlckRhdGFBZGFwdGVyLFxuICBCV0FZU19SRVBPUlRfRU5EUE9JTlRTLFxufSBmcm9tICcuL2RhdGEtYWNjZXNzL2FkYXB0ZXJzJztcbmltcG9ydCB7IENvbXBvbmVudFJlZ2lzdHJ5IH0gZnJvbSAnLi9jb3JlL3JlZ2lzdHJ5L2NvbXBvbmVudC1yZWdpc3RyeSc7XG5pbXBvcnQgeyByZWdpc3RlckJ1aWx0aW5Db21wb25lbnRzIH0gZnJvbSAnLi9wcmltaXRpdmVzL3JlZ2lzdGVyLWJ1aWx0aW5zJztcbmltcG9ydCB7XG4gIEJ3YXlzUmVwb3J0Q29uZmlnLFxuICBub3JtYWxpemVCd2F5c0NvbmZpZyxcbn0gZnJvbSAnLi9jb3JlL2NvbmZpZy9id2F5cy1yZXBvcnQtY29uZmlnJztcblxuLyoqIERlZmF1bHQgY29uZmlndXJhdGlvbiB2YWx1ZXMuICovXG5jb25zdCBERUZBVUxUX0NPTkZJRzogUmVwb3J0aW5nQ29uZmlnID0ge1xuICBhcGlCYXNlVXJsOiAnL2FwaS9yZXBvcnRpbmcnLFxuICBkZWZhdWx0UGFnZVNpemU6IDI1LFxuICBkYXRlRm9ybWF0OiAnZGQvTU0veXl5eScsXG4gIGVuYWJsZURlc2lnbmVyOiBmYWxzZSxcbiAgc2NoZW1hVmVyc2lvbjogMSxcbiAgbG9va3VwVGltZW91dE1zOiAzMDAwMDAsXG59O1xuXG4vKipcbiAqIEtpbmRzIG9mIHJlcG9ydGluZyBmZWF0dXJlcyBhdmFpbGFibGUgaW4gYHByb3ZpZGVCd2F5c1JlcG9ydGAuXG4gKi9cbmV4cG9ydCBlbnVtIFJlcG9ydGluZ0ZlYXR1cmVLaW5kIHtcbiAgSHR0cEFkYXB0ZXJzID0gMCxcbiAgTG9jYWxTdG9yYWdlID0gMSxcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgZmVhdHVyZSB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gYHByb3ZpZGVCd2F5c1JlcG9ydCguLi4pYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRpbmdGZWF0dXJlPEtpbmRUIGV4dGVuZHMgUmVwb3J0aW5nRmVhdHVyZUtpbmQgPSBSZXBvcnRpbmdGZWF0dXJlS2luZD4ge1xuICDJtWtpbmQ6IEtpbmRUO1xuICDJtWNvbmZpZz86IFBhcnRpYWw8UmVwb3J0aW5nQ29uZmlnPjtcbiAgybVwcm92aWRlcnM6IFByb3ZpZGVyW107XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY29uZmlndXJpbmcgYnVpbHQtaW4gSFRUUCBhZGFwdGVycyB2aWEgYHdpdGhIdHRwQWRhcHRlcnMoLi4uKWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cEFkYXB0ZXJzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgYmFzZSBVUkwgZm9yIHRoZSBiYWNrZW5kIHJlcG9ydGluZyBSRVNUIEFQSSBlbmRwb2ludHMuXG4gICAqIEBleGFtcGxlICdodHRwOi8vbG9jYWxob3N0OjMwMDAvYXBpL3JlcG9ydGluZydcbiAgICovXG4gIGFwaUJhc2VVcmw6IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgY3VzdG9tIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciBkYXRhYmFzZSBsb29rdXAgcXVlcmllcy5cbiAgICogRGVmYXVsdHMgdG8gMzAwMDAwbXMgKDUgbWludXRlcykuXG4gICAqL1xuICBsb29rdXBUaW1lb3V0TXM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogQ29uZmlndXJlcyB0aGUgYnVpbHQtaW4gSFRUUCBhZGFwdGVycyBmb3IgYmFja2VuZCBleGVjdXRpb24sIHBlcnNpc3RlbmNlLFxuICogc2NoZW1hIGRpc2NvdmVyeSwgbG9va3VwLCBhbmQgbWFzdGVyIGRhdGEgcXVlcmllcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogcHJvdmlkZVJlcG9ydGluZyhcbiAqICAgeyBkZWZhdWx0UGFnZVNpemU6IDUwIH0sXG4gKiAgIHdpdGhIdHRwQWRhcHRlcnMoeyBhcGlCYXNlVXJsOiAnaHR0cDovL2xvY2FsaG9zdDozMDAwL2FwaS9yZXBvcnRpbmcnIH0pXG4gKiApXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhIdHRwQWRhcHRlcnMoXG4gIG9wdGlvbnM6IEh0dHBBZGFwdGVyc09wdGlvbnNcbik6IFJlcG9ydGluZ0ZlYXR1cmU8UmVwb3J0aW5nRmVhdHVyZUtpbmQuSHR0cEFkYXB0ZXJzPiB7XG4gIGlmICghb3B0aW9ucyB8fCAhb3B0aW9ucy5hcGlCYXNlVXJsIHx8IHR5cGVvZiBvcHRpb25zLmFwaUJhc2VVcmwgIT09ICdzdHJpbmcnIHx8IG9wdGlvbnMuYXBpQmFzZVVybC50cmltKCkgPT09ICcnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFtid2F5cy1yZXBvcnRdIFwiYXBpQmFzZVVybFwiIGlzIHJlcXVpcmVkIHdoZW4gY29uZmlndXJpbmcgd2l0aEh0dHBBZGFwdGVycygpLiBgICtcbiAgICAgIGBQbGVhc2UgcHJvdmlkZSBhIHZhbGlkIGJhY2tlbmQgVVJMLCBlLmcuIHdpdGhIdHRwQWRhcHRlcnMoeyBhcGlCYXNlVXJsOiAnaHR0cDovL2xvY2FsaG9zdDozMDAwL2FwaS9yZXBvcnRpbmcnIH0pYFxuICAgICk7XG4gIH1cblxuICBjb25zdCBjbGVhblVybCA9IG9wdGlvbnMuYXBpQmFzZVVybC5yZXBsYWNlKC9cXC8rJC8sICcnKTtcblxuICByZXR1cm4ge1xuICAgIMm1a2luZDogUmVwb3J0aW5nRmVhdHVyZUtpbmQuSHR0cEFkYXB0ZXJzLFxuICAgIMm1Y29uZmlnOiB7XG4gICAgICBhcGlCYXNlVXJsOiBjbGVhblVybCxcbiAgICAgIC4uLihvcHRpb25zLmxvb2t1cFRpbWVvdXRNcyA/IHsgbG9va3VwVGltZW91dE1zOiBvcHRpb25zLmxvb2t1cFRpbWVvdXRNcyB9IDoge30pLFxuICAgIH0sXG4gICAgybVwcm92aWRlcnM6IFtcbiAgICAgIHtcbiAgICAgICAgcHJvdmlkZTogUkVQT1JUSU5HX0NPTkZJRyxcbiAgICAgICAgdXNlVmFsdWU6IHtcbiAgICAgICAgICBhcGlCYXNlVXJsOiBjbGVhblVybCxcbiAgICAgICAgICAuLi4ob3B0aW9ucy5sb29rdXBUaW1lb3V0TXMgPyB7IGxvb2t1cFRpbWVvdXRNczogb3B0aW9ucy5sb29rdXBUaW1lb3V0TXMgfSA6IHt9KSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHByb3ZpZGU6IFJlcG9ydERhdGFTb3VyY2VBZGFwdGVyLFxuICAgICAgICB1c2VDbGFzczogSHR0cFJlcG9ydERhdGFTb3VyY2VBZGFwdGVyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcHJvdmlkZTogUmVwb3J0UGVyc2lzdGVuY2VBZGFwdGVyLFxuICAgICAgICB1c2VDbGFzczogSHR0cFJlcG9ydFBlcnNpc3RlbmNlQWRhcHRlcixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHByb3ZpZGU6IE1hc3RlckRhdGFQcm92aWRlcixcbiAgICAgICAgdXNlQ2xhc3M6IEh0dHBNYXN0ZXJEYXRhQWRhcHRlcixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHByb3ZpZGU6IFJlcG9ydFNjaGVtYURpc2NvdmVyeUFkYXB0ZXIsXG4gICAgICAgIHVzZUNsYXNzOiBIdHRwUmVwb3J0U2NoZW1hRGlzY292ZXJ5QWRhcHRlcixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHByb3ZpZGU6IFJlcG9ydExvb2t1cEFkYXB0ZXIsXG4gICAgICAgIHVzZUNsYXNzOiBIdHRwUmVwb3J0TG9va3VwQWRhcHRlcixcbiAgICAgIH0sXG4gICAgXSxcbiAgfTtcbn1cblxuLyoqXG4gKiBaZXJvLWJhY2tlbmQgc2FuZGJveCBtb2RlIHVzaW5nIGJyb3dzZXIgTG9jYWxTdG9yYWdlIGZvciByZXBvcnQgZGVmaW5pdGlvbnNcbiAqIGFuZCBtb2NrIHJlYWxpc3RpYyBkYXRhc2V0cyBmb3IgcXVlcnkgZXhlY3V0aW9uLlxuICpcbiAqIElkZWFsIGZvciBsb2NhbCBkZXZlbG9wbWVudCwgcHJvdG90eXBpbmcsIGFuZCBvZmZsaW5lIHRlc3Rpbmcgd2l0aG91dCBzcGlubmluZyB1cCBiYWNrZW5kcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogcHJvdmlkZVJlcG9ydGluZyh3aXRoTG9jYWxTdG9yYWdlKCkpXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhMb2NhbFN0b3JhZ2UoKTogUmVwb3J0aW5nRmVhdHVyZTxSZXBvcnRpbmdGZWF0dXJlS2luZC5Mb2NhbFN0b3JhZ2U+IHtcbiAgcmV0dXJuIHtcbiAgICDJtWtpbmQ6IFJlcG9ydGluZ0ZlYXR1cmVLaW5kLkxvY2FsU3RvcmFnZSxcbiAgICDJtXByb3ZpZGVyczogW1xuICAgICAge1xuICAgICAgICBwcm92aWRlOiBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIsXG4gICAgICAgIHVzZUNsYXNzOiBMb2NhbFN0b3JhZ2VSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBwcm92aWRlOiBSZXBvcnREYXRhU291cmNlQWRhcHRlcixcbiAgICAgICAgdXNlQ2xhc3M6IE1vY2tSZXBvcnREYXRhU291cmNlQWRhcHRlcixcbiAgICAgIH0sXG4gICAgXSxcbiAgfTtcbn1cblxuLyoqIEFsaWFzIGZvciB3aXRoTG9jYWxTdG9yYWdlICovXG5leHBvcnQgY29uc3Qgd2l0aE1vY2tBZGFwdGVycyA9IHdpdGhMb2NhbFN0b3JhZ2U7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBgcHJvdmlkZUJ3YXlzUmVwb3J0KClgIChhbmQgYHByb3ZpZGVSZXBvcnRpbmcoKWApLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb3ZpZGVCd2F5c1JlcG9ydE9wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPFJlcG9ydGluZ0NvbmZpZz4ge1xuICAvKipcbiAgICogVGhlIEFuZ3VsYXIgY29tcG9uZW50IHRvIHVzZSBmb3IgcmVuZGVyaW5nIHJlcG9ydCByZXN1bHQgZ3JpZHMuXG4gICAqIEJXYXlzLWdyaWQgaXMgdGhlIHJlY29tbWVuZGVkIGRlZmF1bHQuIEhvc3QgY2FuIHByb3ZpZGUgYW55IGdyaWQgY29tcG9uZW50LlxuICAgKi9cbiAgZ3JpZENvbXBvbmVudD86IFR5cGU8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFRoZSBBbmd1bGFyIGNvbXBvbmVudCB0byB1c2UgZm9yIHJlbmRlcmluZyByZXBvcnQgdmlzdWFsIGNoYXJ0cy5cbiAgICogSG9zdCBjYW4gcHJvdmlkZSB0aGVpciBwcmVmZXJyZWQgY2hhcnQgY29tcG9uZW50LCBvciB1c2UgdGhlIGJ1aWx0LWluIFNWRyBjaGFydHMuXG4gICAqL1xuICBjaGFydENvbXBvbmVudD86IFR5cGU8dW5rbm93bj47XG5cbiAgLyoqIEhvc3QncyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZGF0YSBzb3VyY2UgYWRhcHRlci4gKi9cbiAgZGF0YVNvdXJjZUFkYXB0ZXI/OiBUeXBlPFJlcG9ydERhdGFTb3VyY2VBZGFwdGVyPjtcblxuICAvKiogSG9zdCdzIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtYXN0ZXIgZGF0YSBwcm92aWRlci4gKi9cbiAgbWFzdGVyRGF0YVByb3ZpZGVyPzogVHlwZTxNYXN0ZXJEYXRhUHJvdmlkZXI+O1xuXG4gIC8qKiBIb3N0J3MgaW1wbGVtZW50YXRpb24gb2YgdGhlIHBlcnNpc3RlbmNlIGFkYXB0ZXIuICovXG4gIHBlcnNpc3RlbmNlQWRhcHRlcj86IFR5cGU8UmVwb3J0UGVyc2lzdGVuY2VBZGFwdGVyPjtcblxuICAvKiogSG9zdCdzIGltcGxlbWVudGF0aW9uIG9mIHRoZSBzY2hlbWEgZGlzY292ZXJ5IGFkYXB0ZXIuICovXG4gIHNjaGVtYURpc2NvdmVyeUFkYXB0ZXI/OiBUeXBlPFJlcG9ydFNjaGVtYURpc2NvdmVyeUFkYXB0ZXI+O1xuXG4gIC8qKiBIb3N0J3MgaW1wbGVtZW50YXRpb24gb2YgdGhlIGxvb2t1cCBhZGFwdGVyLiAqL1xuICBsb29rdXBBZGFwdGVyPzogVHlwZTxSZXBvcnRMb29rdXBBZGFwdGVyPjtcblxuICAvKipcbiAgICogSW5saW5lIHNlc3Npb24gY29udGV4dCBwYXJhbWV0ZXJzIG9yIGZhY3RvcnkgZnVuY3Rpb246XG4gICAqIGUuZy4gYHNlc3Npb246ICgpID0+ICh7IGJyYW5jaElkOiBhdXRoLmJyYW5jaElkKCksIHVzZXI6IGF1dGgudXNlcigpIH0pYFxuICAgKi9cbiAgc2Vzc2lvbj86IFNlc3Npb25Db250ZXh0U291cmNlIHwgKCgpID0+IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTtcblxuICAvKipcbiAgICogSG9zdCBhcHBsaWNhdGlvbidzIHNlc3Npb24gY29udGV4dCBwYXJhbWV0ZXJzIChlLmcuIHsgYnJhbmNoSWQ6IDEsIGNvbXBhbnlJZDogMTAsIHVzZXJJZDogJ3Vzci0xJyB9KS5cbiAgICovXG4gIHNlc3Npb25Db250ZXh0PzogU2Vzc2lvbkNvbnRleHRTb3VyY2U7XG5cbiAgLyoqXG4gICAqIEhvc3QgYXBwbGljYXRpb24gc2VydmljZSBjbGFzcyBpbXBsZW1lbnRpbmcgYFNlc3Npb25Db250ZXh0UHJvdmlkZXJgLlxuICAgKi9cbiAgc2Vzc2lvbkNvbnRleHRQcm92aWRlcj86IFR5cGU8U2Vzc2lvbkNvbnRleHRQcm92aWRlcj47XG5cbiAgLyoqXG4gICAqIEZhY3RvcnkgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgU2Vzc2lvbkNvbnRleHRTb3VyY2Ugd2l0aCBkZXBlbmRlbmN5IGluamVjdGlvbiBjb250ZXh0LlxuICAgKi9cbiAgc2Vzc2lvbkNvbnRleHRGYWN0b3J5PzogKCkgPT4gU2Vzc2lvbkNvbnRleHRTb3VyY2U7XG59XG5cbi8qKiBCYWNrd2FyZCBjb21wYXRpYmlsaXR5IGFuZCBhbHRlcm5hdGl2ZSBuYW1pbmcgYWxpYXNlcyAqL1xuZXhwb3J0IHR5cGUgUHJvdmlkZVJlcG9ydGluZ09wdGlvbnMgPSBQcm92aWRlQndheXNSZXBvcnRPcHRpb25zO1xuZXhwb3J0IHR5cGUgUHJvdmlkZUJ3YXlzUmVwb3J0aW5nT3B0aW9ucyA9IFByb3ZpZGVCd2F5c1JlcG9ydE9wdGlvbnM7XG5cbi8qKlxuICogVHlwZSBndWFyZCB0byBkZXRlY3QgdGhlIHNpbXBsaWZpZWQgYEJ3YXlzUmVwb3J0Q29uZmlnYCBzaGFwZS5cbiAqL1xuZnVuY3Rpb24gaXNCd2F5c1JlcG9ydENvbmZpZyhcbiAgYXJnOiBCd2F5c1JlcG9ydENvbmZpZyB8IFByb3ZpZGVCd2F5c1JlcG9ydE9wdGlvbnNcbik6IGFyZyBpcyBCd2F5c1JlcG9ydENvbmZpZyB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIGFyZyA9PT0gJ29iamVjdCcgJiZcbiAgICBhcmcgIT09IG51bGwgJiZcbiAgICBbJ3NwRW5kcG9pbnQnLCAndGFibGVzRW5kcG9pbnQnLCAnZXhlY3V0ZUVuZHBvaW50JywgJ2xvb2t1cEVuZHBvaW50JywgJ3JlcG9ydHNFbmRwb2ludCcsICdhcGlzRW5kcG9pbnQnLCAnYXBpRW5kcG9pbnRzJywgJ2NvbXBvbmVudHMnLCAnZ3JpZCcsICdjaGFydCcsICdzZXNzaW9uUHJvdmlkZXInXS5zb21lKGtleSA9PiBrZXkgaW4gYXJnKVxuICApO1xufVxuXG4vKipcbiAqIFByb3ZpZGVzIHRoZSBCV2F5cy1SZXBvcnQgbGlicmFyeSB0byB0aGUgQW5ndWxhciBhcHBsaWNhdGlvbi5cbiAqXG4gKiAqKlNpbXBsZSBjb25maWcgKHJlY29tbWVuZGVkIGZvciBtb3N0IHByb2plY3RzKToqKlxuICogYGBgdHlwZXNjcmlwdFxuICogcHJvdmlkZUJ3YXlzUmVwb3J0KHtcbiAqICAgc3BFbmRwb2ludDogICAgICAnL2FwaS9yZXBvcnRpbmcvcHJvY2VkdXJlcycsXG4gKiAgIHRhYmxlc0VuZHBvaW50OiAgJy9hcGkvcmVwb3J0aW5nL3RhYmxlcycsXG4gKiAgIGV4ZWN1dGVFbmRwb2ludDogJy9hcGkvcmVwb3J0aW5nL2V4ZWN1dGUnLFxuICogICByZXBvcnRzRW5kcG9pbnQ6ICcvYXBpL3JlcG9ydGluZy9yZXBvcnRzJyxcbiAqICAgY29tcG9uZW50czogWydmb3JtSW5wdXRzJywgJ2FjdGlvbkJ1dHRvbnMnXSxcbiAqICAgc2Vzc2lvbjogKCkgPT4gaW5qZWN0KEF1dGhTZXJ2aWNlKS5zZXNzaW9uKCksXG4gKiB9KVxuICogYGBgXG4gKlxuICogKipBZHZhbmNlZCBjb25maWcgKGV4aXN0aW5nIGFkYXB0ZXIgcGF0dGVybik6KipcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHByb3ZpZGVCd2F5c1JlcG9ydChcbiAqICAgeyBhcGlCYXNlVXJsOiAnL2FwaS9yZXBvcnRpbmcnIH0sXG4gKiAgIHdpdGhIdHRwQWRhcHRlcnMoeyBhcGlCYXNlVXJsOiAnL2FwaS9yZXBvcnRpbmcnIH0pXG4gKiApXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEVpdGhlciBhIGBCd2F5c1JlcG9ydENvbmZpZ2AgKHNpbXBsZSkgb3IgYFByb3ZpZGVCd2F5c1JlcG9ydE9wdGlvbnNgIChhZHZhbmNlZCkuXG4gKiBAcGFyYW0gZmVhdHVyZXMgLSBPcHRpb25hbCBmZWF0dXJlcyBsaWtlIGB3aXRoSHR0cEFkYXB0ZXJzKC4uLilgIG9yIGB3aXRoTG9jYWxTdG9yYWdlKClgLlxuICogQHJldHVybnMgRW52aXJvbm1lbnQgcHJvdmlkZXJzIGZvciB0aGUgcmVwb3J0aW5nIGxpYnJhcnkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQndheXNSZXBvcnQoXG4gIG9wdGlvbnM6IEJ3YXlzUmVwb3J0Q29uZmlnIHwgUHJvdmlkZUJ3YXlzUmVwb3J0T3B0aW9ucyA9IHt9IGFzIFByb3ZpZGVCd2F5c1JlcG9ydE9wdGlvbnMsXG4gIC4uLmZlYXR1cmVzOiBSZXBvcnRpbmdGZWF0dXJlW11cbik6IEVudmlyb25tZW50UHJvdmlkZXJzIHtcbiAgLy8g4pSA4pSA4pSAIFNpbXBsZSBjb25maWcgcGF0aCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgaWYgKGlzQndheXNSZXBvcnRDb25maWcob3B0aW9ucykpIHtcbiAgICByZXR1cm4gcHJvdmlkZUJ3YXlzUmVwb3J0RnJvbVNpbXBsZUNvbmZpZyhvcHRpb25zKTtcbiAgfVxuXG4gIC8vIOKUgOKUgOKUgCBBZHZhbmNlZCAvIGxlZ2FjeSBjb25maWcgcGF0aCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgcmV0dXJuIHByb3ZpZGVCd2F5c1JlcG9ydEZyb21PcHRpb25zKG9wdGlvbnMsIGZlYXR1cmVzKTtcbn1cblxuLyoqXG4gKiBXaXJlcyB1cCBlbmRwb2ludC1iYXNlZCBhZGFwdGVycyBmcm9tIHRoZSBzaW1wbGlmaWVkIGBCd2F5c1JlcG9ydENvbmZpZ2AuXG4gKi9cbmZ1bmN0aW9uIHByb3ZpZGVCd2F5c1JlcG9ydEZyb21TaW1wbGVDb25maWcoY29uZmlnOiBCd2F5c1JlcG9ydENvbmZpZyk6IEVudmlyb25tZW50UHJvdmlkZXJzIHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZUJ3YXlzQ29uZmlnKGNvbmZpZyk7XG5cbiAgY29uc3QgcmVwb3J0aW5nQ29uZmlnOiBSZXBvcnRpbmdDb25maWcgPSB7XG4gICAgLi4uREVGQVVMVF9DT05GSUcsXG4gICAgZGVmYXVsdFBhZ2VTaXplOiBub3JtYWxpemVkLmRlZmF1bHRQYWdlU2l6ZSxcbiAgICBkYXRlRm9ybWF0OiBub3JtYWxpemVkLmRhdGVGb3JtYXQsXG4gICAgbG9va3VwVGltZW91dE1zOiBub3JtYWxpemVkLmxvb2t1cFRpbWVvdXRNcyxcbiAgICBleGVjdXRpb25UaW1lb3V0TXM6IG5vcm1hbGl6ZWQuZXhlY3V0aW9uVGltZW91dE1zLFxuICAgIHRydXN0ZWRBcGlPcmlnaW5zOiBub3JtYWxpemVkLnRydXN0ZWRBcGlPcmlnaW5zLFxuICAgIGVuYWJsZURlc2lnbmVyOiB0cnVlLFxuICAgIGFsbG93ZWRDYXRlZ29yaWVzOiBub3JtYWxpemVkLmFsbG93ZWRDYXRlZ29yaWVzLFxuICAgIGF1dG9QYXJhbWV0ZXI6IG5vcm1hbGl6ZWQuYXV0b1BhcmFtZXRlcixcbiAgICByb3V0ZUJhc2U6IG5vcm1hbGl6ZWQucm91dGVCYXNlLFxuICB9O1xuXG4gIGNvbnN0IHByb3ZpZGVyczogUHJvdmlkZXJbXSA9IFtcbiAgICAvLyBCdWlsdGluIGNvbXBvbmVudCByZWdpc3RyYXRpb25cbiAgICB7XG4gICAgICBwcm92aWRlOiBFTlZJUk9OTUVOVF9JTklUSUFMSVpFUixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlVmFsdWU6ICgpID0+IHtcbiAgICAgICAgY29uc3QgcmVnaXN0cnkgPSBpbmplY3QoQ29tcG9uZW50UmVnaXN0cnkpO1xuICAgICAgICByZWdpc3RlckJ1aWx0aW5Db21wb25lbnRzKHJlZ2lzdHJ5KTtcbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAgICd3aGVlbCcsXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZUVsID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICAgICAgICAgICAgaWYgKGFjdGl2ZUVsIGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCAmJiBhY3RpdmVFbC50eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgIGFjdGl2ZUVsLmJsdXIoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHsgcGFzc2l2ZTogdHJ1ZSB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9LFxuXG4gICAgLy8gQ29yZSBjb25maWd1cmF0aW9uXG4gICAgeyBwcm92aWRlOiBSRVBPUlRJTkdfQ09ORklHLCB1c2VWYWx1ZTogcmVwb3J0aW5nQ29uZmlnIH0sXG5cbiAgICAvLyBFbmRwb2ludCBVUkxzIGZvciB0aGUgYWRhcHRlcnNcbiAgICB7XG4gICAgICBwcm92aWRlOiBCV0FZU19SRVBPUlRfRU5EUE9JTlRTLFxuICAgICAgdXNlVmFsdWU6IHtcbiAgICAgICAgc3BFbmRwb2ludDogbm9ybWFsaXplZC5zcEVuZHBvaW50LFxuICAgICAgICB0YWJsZXNFbmRwb2ludDogbm9ybWFsaXplZC50YWJsZXNFbmRwb2ludCxcbiAgICAgICAgZXhlY3V0ZUVuZHBvaW50OiBub3JtYWxpemVkLmV4ZWN1dGVFbmRwb2ludCxcbiAgICAgICAgbG9va3VwRW5kcG9pbnQ6IG5vcm1hbGl6ZWQubG9va3VwRW5kcG9pbnQsXG4gICAgICAgIHJlcG9ydHNFbmRwb2ludDogbm9ybWFsaXplZC5yZXBvcnRzRW5kcG9pbnQsXG4gICAgICAgIGFwaXNFbmRwb2ludDogbm9ybWFsaXplZC5hcGlzRW5kcG9pbnQsXG4gICAgICAgIGFwaUVuZHBvaW50czogbm9ybWFsaXplZC5hcGlFbmRwb2ludHMsXG4gICAgICB9LFxuICAgIH0sXG5cbiAgICAvLyBFbmRwb2ludC1iYXNlZCBhZGFwdGVyc1xuICAgIHsgcHJvdmlkZTogUmVwb3J0U2NoZW1hRGlzY292ZXJ5QWRhcHRlciwgdXNlQ2xhc3M6IEVuZHBvaW50U2NoZW1hRGlzY292ZXJ5QWRhcHRlciB9LFxuICAgIHsgcHJvdmlkZTogUmVwb3J0RGF0YVNvdXJjZUFkYXB0ZXIsIHVzZUNsYXNzOiBFbmRwb2ludERhdGFTb3VyY2VBZGFwdGVyIH0sXG4gICAgeyBwcm92aWRlOiBSZXBvcnRMb29rdXBBZGFwdGVyLCB1c2VDbGFzczogRW5kcG9pbnRMb29rdXBBZGFwdGVyIH0sXG4gICAgeyBwcm92aWRlOiBNYXN0ZXJEYXRhUHJvdmlkZXIsIHVzZUNsYXNzOiBFbmRwb2ludE1hc3RlckRhdGFBZGFwdGVyIH0sXG5cbiAgICAvLyBEYXRhYmFzZSBwZXJzaXN0ZW5jZSBpcyB0aGUgZGVmYXVsdCwgdXNpbmcgdGhlIHJlcG9ydGluZyBzZXJ2aWNlIHJlcG9ydHMgcm91dGUuXG4gICAge1xuICAgICAgcHJvdmlkZTogUmVwb3J0UGVyc2lzdGVuY2VBZGFwdGVyLFxuICAgICAgdXNlQ2xhc3M6IEVuZHBvaW50UGVyc2lzdGVuY2VBZGFwdGVyLFxuICAgIH0sXG4gIF07XG5cbiAgLy8gR3JpZCAvIENoYXJ0IG92ZXJyaWRlc1xuICBpZiAobm9ybWFsaXplZC5ncmlkQ29tcG9uZW50KSB7XG4gICAgcHJvdmlkZXJzLnB1c2goeyBwcm92aWRlOiBHUklEX0NPTVBPTkVOVCwgdXNlVmFsdWU6IG5vcm1hbGl6ZWQuZ3JpZENvbXBvbmVudCB9KTtcbiAgfVxuICBpZiAobm9ybWFsaXplZC5jaGFydENvbXBvbmVudCkge1xuICAgIHByb3ZpZGVycy5wdXNoKHsgcHJvdmlkZTogQ0hBUlRfQ09NUE9ORU5ULCB1c2VWYWx1ZTogbm9ybWFsaXplZC5jaGFydENvbXBvbmVudCB9KTtcbiAgfVxuXG4gIC8vIFNlc3Npb24gY29udGV4dCAvIHByb3ZpZGVyXG4gIGNvbnN0IHNlc3Npb25UYXJnZXQgPSBub3JtYWxpemVkLnNlc3Npb25Qcm92aWRlciA/PyBub3JtYWxpemVkLnNlc3Npb247XG4gIGlmIChzZXNzaW9uVGFyZ2V0KSB7XG4gICAgaWYgKHR5cGVvZiBzZXNzaW9uVGFyZ2V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjb25zdCBpc0NsYXNzID0gL15jbGFzc1xccy8udGVzdChGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChzZXNzaW9uVGFyZ2V0KSk7XG4gICAgICBpZiAoaXNDbGFzcykge1xuICAgICAgICBwcm92aWRlcnMucHVzaChzZXNzaW9uVGFyZ2V0IGFzIFR5cGU8YW55Pik7XG4gICAgICAgIHByb3ZpZGVycy5wdXNoKHsgcHJvdmlkZTogUkVQT1JUX1NFU1NJT05fUFJPVklERVIsIHVzZUV4aXN0aW5nOiBzZXNzaW9uVGFyZ2V0IGFzIFR5cGU8YW55PiB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByb3ZpZGVycy5wdXNoKHsgcHJvdmlkZTogUkVQT1JUX1NFU1NJT05fQ09OVEVYVCwgdXNlRmFjdG9yeTogc2Vzc2lvblRhcmdldCBhcyAoKSA9PiBhbnkgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb3ZpZGVycy5wdXNoKHsgcHJvdmlkZTogUkVQT1JUX1NFU1NJT05fQ09OVEVYVCwgdXNlVmFsdWU6IHNlc3Npb25UYXJnZXQgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhwcm92aWRlcnMpO1xufVxuXG4vKipcbiAqIE9yaWdpbmFsIGFkdmFuY2VkIGNvbmZpZyBwYXRoIOKAlCB1bmNoYW5nZWQgYmVoYXZpb3IuXG4gKi9cbmZ1bmN0aW9uIHByb3ZpZGVCd2F5c1JlcG9ydEZyb21PcHRpb25zKFxuICBvcHRpb25zOiBQcm92aWRlQndheXNSZXBvcnRPcHRpb25zLFxuICBmZWF0dXJlczogUmVwb3J0aW5nRmVhdHVyZVtdXG4pOiBFbnZpcm9ubWVudFByb3ZpZGVycyB7XG4gIGNvbnN0IGNvbmZpZzogUmVwb3J0aW5nQ29uZmlnID0geyAuLi5ERUZBVUxUX0NPTkZJRywgLi4ub3B0aW9ucyB9O1xuICBmb3IgKGNvbnN0IGZlYXR1cmUgb2YgZmVhdHVyZXMpIHtcbiAgICBpZiAoZmVhdHVyZS7JtWNvbmZpZykge1xuICAgICAgT2JqZWN0LmFzc2lnbihjb25maWcsIGZlYXR1cmUuybVjb25maWcpO1xuICAgIH1cbiAgfVxuICBpZiAoY29uZmlnLmFwaUJhc2VVcmwpIHtcbiAgICBjb25maWcuYXBpQmFzZVVybCA9IGNvbmZpZy5hcGlCYXNlVXJsLnJlcGxhY2UoL1xcLyskLywgJycpO1xuICB9XG5cbiAgY29uc3QgcHJvdmlkZXJzOiBQcm92aWRlcltdID0gW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEVOVklST05NRU5UX0lOSVRJQUxJWkVSLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VWYWx1ZTogKCkgPT4ge1xuICAgICAgICBjb25zdCByZWdpc3RyeSA9IGluamVjdChDb21wb25lbnRSZWdpc3RyeSk7XG4gICAgICAgIHJlZ2lzdGVyQnVpbHRpbkNvbXBvbmVudHMocmVnaXN0cnkpO1xuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAgICAgJ3doZWVsJyxcbiAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgYWN0aXZlRWwgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgICAgICAgICAgICBpZiAoYWN0aXZlRWwgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50ICYmIGFjdGl2ZUVsLnR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgYWN0aXZlRWwuYmx1cigpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyBwYXNzaXZlOiB0cnVlIH1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0sXG4gIF07XG5cbiAgY29uc3QgaGFzSHR0cEZlYXR1cmUgPSBmZWF0dXJlcy5zb21lKChmKSA9PiBmLsm1a2luZCA9PT0gUmVwb3J0aW5nRmVhdHVyZUtpbmQuSHR0cEFkYXB0ZXJzKTtcbiAgY29uc3QgaGFzTG9jYWxGZWF0dXJlID0gZmVhdHVyZXMuc29tZSgoZikgPT4gZi7JtWtpbmQgPT09IFJlcG9ydGluZ0ZlYXR1cmVLaW5kLkxvY2FsU3RvcmFnZSk7XG5cbiAgLy8gQXBwZW5kIGZlYXR1cmUgcHJvdmlkZXJzIChleGNsdWRpbmcgc3RhbmRhbG9uZSBSRVBPUlRJTkdfQ09ORklHIHNvIG1lcmdlZCBjb25maWcgd2lucylcbiAgZm9yIChjb25zdCBmZWF0dXJlIG9mIGZlYXR1cmVzKSB7XG4gICAgY29uc3Qgbm9uQ29uZmlnUHJvdmlkZXJzID0gZmVhdHVyZS7JtXByb3ZpZGVycy5maWx0ZXIoXG4gICAgICAocCkgPT4gISh0eXBlb2YgcCA9PT0gJ29iamVjdCcgJiYgcCAhPT0gbnVsbCAmJiAncHJvdmlkZScgaW4gcCAmJiBwLnByb3ZpZGUgPT09IFJFUE9SVElOR19DT05GSUcpXG4gICAgKTtcbiAgICBwcm92aWRlcnMucHVzaCguLi5ub25Db25maWdQcm92aWRlcnMpO1xuICB9XG5cbiAgLy8gVW5pZmllZCBtZXJnZWQgY29uZmlndXJhdGlvblxuICBwcm92aWRlcnMucHVzaCh7IHByb3ZpZGU6IFJFUE9SVElOR19DT05GSUcsIHVzZVZhbHVlOiBjb25maWcgfSk7XG5cbiAgLy8gT2ZmbGluZSBhZGFwdGVycyByZXF1aXJlIGFuIGV4cGxpY2l0IGZlYXR1cmU7IG5vcm1hbCBzYXZlcyBhbHdheXMgcmVhY2ggdGhlIGJhY2tlbmQuXG4gIGlmICghaGFzSHR0cEZlYXR1cmUgJiYgIWhhc0xvY2FsRmVhdHVyZSkge1xuICAgIHByb3ZpZGVycy5wdXNoKFxuICAgICAgeyBwcm92aWRlOiBSZXBvcnREYXRhU291cmNlQWRhcHRlciwgdXNlQ2xhc3M6IG9wdGlvbnMuZGF0YVNvdXJjZUFkYXB0ZXIgPz8gSHR0cFJlcG9ydERhdGFTb3VyY2VBZGFwdGVyIH0sXG4gICAgICB7IHByb3ZpZGU6IFJlcG9ydFBlcnNpc3RlbmNlQWRhcHRlciwgdXNlQ2xhc3M6IG9wdGlvbnMucGVyc2lzdGVuY2VBZGFwdGVyID8/IEh0dHBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIgfSxcbiAgICAgIHsgcHJvdmlkZTogTWFzdGVyRGF0YVByb3ZpZGVyLCB1c2VDbGFzczogb3B0aW9ucy5tYXN0ZXJEYXRhUHJvdmlkZXIgPz8gSHR0cE1hc3RlckRhdGFBZGFwdGVyIH0sXG4gICAgICB7IHByb3ZpZGU6IFJlcG9ydFNjaGVtYURpc2NvdmVyeUFkYXB0ZXIsIHVzZUNsYXNzOiBvcHRpb25zLnNjaGVtYURpc2NvdmVyeUFkYXB0ZXIgPz8gSHR0cFJlcG9ydFNjaGVtYURpc2NvdmVyeUFkYXB0ZXIgfSxcbiAgICAgIHsgcHJvdmlkZTogUmVwb3J0TG9va3VwQWRhcHRlciwgdXNlQ2xhc3M6IG9wdGlvbnMubG9va3VwQWRhcHRlciA/PyBIdHRwUmVwb3J0TG9va3VwQWRhcHRlciB9XG4gICAgKTtcbiAgfVxuXG4gIC8vIENvbXBvbmVudCBvdmVycmlkZXNcbiAgaWYgKG9wdGlvbnMuZ3JpZENvbXBvbmVudCkge1xuICAgIHByb3ZpZGVycy5wdXNoKHsgcHJvdmlkZTogR1JJRF9DT01QT05FTlQsIHVzZVZhbHVlOiBvcHRpb25zLmdyaWRDb21wb25lbnQgfSk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5jaGFydENvbXBvbmVudCkge1xuICAgIHByb3ZpZGVycy5wdXNoKHsgcHJvdmlkZTogQ0hBUlRfQ09NUE9ORU5ULCB1c2VWYWx1ZTogb3B0aW9ucy5jaGFydENvbXBvbmVudCB9KTtcbiAgfVxuXG4gIC8vIEV4cGxpY2l0IGFkYXB0ZXIgb3ZlcnJpZGVzIGFsd2F5cyB3aW5cbiAgaWYgKG9wdGlvbnMuZGF0YVNvdXJjZUFkYXB0ZXIpIHtcbiAgICBwcm92aWRlcnMucHVzaCh7IHByb3ZpZGU6IFJlcG9ydERhdGFTb3VyY2VBZGFwdGVyLCB1c2VDbGFzczogb3B0aW9ucy5kYXRhU291cmNlQWRhcHRlciB9KTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLm1hc3RlckRhdGFQcm92aWRlcikge1xuICAgIHByb3ZpZGVycy5wdXNoKHsgcHJvdmlkZTogTWFzdGVyRGF0YVByb3ZpZGVyLCB1c2VDbGFzczogb3B0aW9ucy5tYXN0ZXJEYXRhUHJvdmlkZXIgfSk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5wZXJzaXN0ZW5jZUFkYXB0ZXIpIHtcbiAgICBwcm92aWRlcnMucHVzaCh7IHByb3ZpZGU6IFJlcG9ydFBlcnNpc3RlbmNlQWRhcHRlciwgdXNlQ2xhc3M6IG9wdGlvbnMucGVyc2lzdGVuY2VBZGFwdGVyIH0pO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMuc2NoZW1hRGlzY292ZXJ5QWRhcHRlcikge1xuICAgIHByb3ZpZGVycy5wdXNoKHsgcHJvdmlkZTogUmVwb3J0U2NoZW1hRGlzY292ZXJ5QWRhcHRlciwgdXNlQ2xhc3M6IG9wdGlvbnMuc2NoZW1hRGlzY292ZXJ5QWRhcHRlciB9KTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmxvb2t1cEFkYXB0ZXIpIHtcbiAgICBwcm92aWRlcnMucHVzaCh7IHByb3ZpZGU6IFJlcG9ydExvb2t1cEFkYXB0ZXIsIHVzZUNsYXNzOiBvcHRpb25zLmxvb2t1cEFkYXB0ZXIgfSk7XG4gIH1cblxuICAvLyBEeW5hbWljIFNlc3Npb24gQ29udGV4dCBQcm92aWRlcnNcbiAgaWYgKG9wdGlvbnMuc2Vzc2lvbkNvbnRleHRQcm92aWRlcikge1xuICAgIHByb3ZpZGVycy5wdXNoKHsgcHJvdmlkZTogUkVQT1JUX1NFU1NJT05fUFJPVklERVIsIHVzZUNsYXNzOiBvcHRpb25zLnNlc3Npb25Db250ZXh0UHJvdmlkZXIgfSk7XG4gIH1cblxuICAvLyBGbGV4aWJsZSBpbmxpbmUgc2Vzc2lvbiBzeW50YXg6IHNlc3Npb246ICgpID0+ICh7IC4uLiB9KVxuICBpZiAodHlwZW9mIG9wdGlvbnMuc2Vzc2lvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHByb3ZpZGVycy5wdXNoKHsgcHJvdmlkZTogUkVQT1JUX1NFU1NJT05fQ09OVEVYVCwgdXNlRmFjdG9yeTogb3B0aW9ucy5zZXNzaW9uIGFzICgpID0+IGFueSB9KTtcbiAgfSBlbHNlIGlmIChvcHRpb25zLnNlc3Npb24gIT09IHVuZGVmaW5lZCkge1xuICAgIHByb3ZpZGVycy5wdXNoKHsgcHJvdmlkZTogUkVQT1JUX1NFU1NJT05fQ09OVEVYVCwgdXNlVmFsdWU6IG9wdGlvbnMuc2Vzc2lvbiB9KTtcbiAgfSBlbHNlIGlmIChvcHRpb25zLnNlc3Npb25Db250ZXh0RmFjdG9yeSkge1xuICAgIHByb3ZpZGVycy5wdXNoKHsgcHJvdmlkZTogUkVQT1JUX1NFU1NJT05fQ09OVEVYVCwgdXNlRmFjdG9yeTogb3B0aW9ucy5zZXNzaW9uQ29udGV4dEZhY3RvcnkgfSk7XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5zZXNzaW9uQ29udGV4dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcHJvdmlkZXJzLnB1c2goeyBwcm92aWRlOiBSRVBPUlRfU0VTU0lPTl9DT05URVhULCB1c2VWYWx1ZTogb3B0aW9ucy5zZXNzaW9uQ29udGV4dCB9KTtcbiAgfVxuXG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMocHJvdmlkZXJzKTtcbn1cblxuLyoqIEFsaWFzIGZvciBwcm92aWRlQndheXNSZXBvcnQgKi9cbmV4cG9ydCBjb25zdCBwcm92aWRlQndheXNSZXBvcnRpbmcgPSBwcm92aWRlQndheXNSZXBvcnQ7XG5cbi8qKiBCYWNrd2FyZC1jb21wYXRpYmxlIGFsaWFzIGZvciBwcm92aWRlQndheXNSZXBvcnQgKi9cbmV4cG9ydCBjb25zdCBwcm92aWRlUmVwb3J0aW5nID0gcHJvdmlkZUJ3YXlzUmVwb3J0O1xuXG4vKiogU2VtYW50aWMgYWxpYXMgZm9yIEJXYXlzIHJlcG9ydCBwcm92aWRlcnMgKi9cbmV4cG9ydCBjb25zdCBid2F5c1JlcG9ydFByb3ZpZGVycyA9IHByb3ZpZGVCd2F5c1JlcG9ydDtcbiJdfQ==
|