@decaf-ts/integrations 0.3.12 → 0.4.1-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 +11 -3
- package/dist/integrations.cjs +445 -7
- package/dist/integrations.js +479 -8
- package/jest.config.cjs +1 -1
- package/lib/cjs/feature-flags/constants.cjs +16 -0
- package/lib/cjs/feature-flags/decorators.cjs +65 -0
- package/lib/cjs/feature-flags/environment.cjs +26 -0
- package/lib/cjs/feature-flags/index.cjs +31 -0
- package/lib/cjs/feature-flags/models/FeatureFlag.model.cjs +81 -0
- package/lib/cjs/feature-flags/models/FeatureFlagAccess.model.cjs +78 -0
- package/lib/cjs/feature-flags/readers/FeatureFlagReader.cjs +25 -0
- package/lib/cjs/feature-flags/readers/index.cjs +19 -0
- package/lib/cjs/feature-flags/services/FeatureFlag.service.cjs +259 -0
- package/lib/cjs/feature-flags/types.cjs +4 -0
- package/lib/cjs/feature-flags/utils.cjs +141 -0
- package/lib/cjs/graph/engine/execution/SwitchGraphNodeExecutor.cjs +9 -9
- package/lib/cjs/graph/shared/nodes/flow-control.cjs +4 -3
- package/lib/cjs/graph/shared/types.cjs +2 -2
- package/lib/cjs/index.cjs +6 -5
- package/lib/cjs/kibana/builders/KibanaIndexBuilder.cjs +329 -0
- package/lib/cjs/kibana/builders/KibanaIndexBuilderCollection.cjs +37 -0
- package/lib/cjs/kibana/builders/index.cjs +20 -0
- package/lib/cjs/kibana/helpers.cjs +20 -16
- package/lib/cjs/kibana/index.cjs +3 -2
- package/lib/cjs/kibana/types.cjs +11 -2
- package/lib/cjs/loader/ObjectLoader.cjs +154 -0
- package/lib/cjs/loader/families.cjs +78 -0
- package/lib/cjs/loader/index.cjs +28 -0
- package/lib/cjs/loader/types.cjs +4 -0
- package/lib/cjs/nest/decorators.cjs +17 -0
- package/lib/cjs/nest/index.cjs +3 -3
- package/lib/cjs/nest/keycloakAuthHandler.cjs +74 -35
- package/lib/cjs/nest/keycloakModule.cjs +7 -10
- package/lib/cjs/nest/types.cjs +2 -2
- package/lib/cjs/nest/utils.cjs +58 -50
- package/lib/cjs/plugins/contract.cjs +76 -0
- package/lib/cjs/plugins/index.cjs +35 -0
- package/lib/cjs/plugins/kibana/host.cjs +24 -0
- package/lib/cjs/plugins/kibana/index.cjs +38 -0
- package/lib/cjs/plugins/kibana/installer.cjs +180 -0
- package/lib/cjs/plugins/kibana/manifest.cjs +33 -0
- package/lib/cjs/plugins/kibana/templates.cjs +503 -0
- package/lib/cjs/plugins/kibana/types.cjs +33 -0
- package/lib/cjs/plugins/superset/host.cjs +26 -0
- package/lib/cjs/plugins/superset/index.cjs +40 -0
- package/lib/cjs/plugins/superset/installer.cjs +232 -0
- package/lib/cjs/plugins/superset/manifest.cjs +35 -0
- package/lib/cjs/plugins/superset/templates.cjs +844 -0
- package/lib/cjs/plugins/superset/types.cjs +39 -0
- package/lib/esm/feature-flags/constants.js +12 -0
- package/lib/esm/feature-flags/decorators.js +49 -0
- package/lib/esm/feature-flags/environment.js +18 -0
- package/lib/esm/feature-flags/index.js +14 -0
- package/lib/esm/feature-flags/models/FeatureFlag.model.js +72 -0
- package/lib/esm/feature-flags/models/FeatureFlagAccess.model.js +69 -0
- package/lib/esm/feature-flags/readers/FeatureFlagReader.js +19 -0
- package/lib/esm/feature-flags/readers/index.js +2 -0
- package/lib/esm/feature-flags/services/FeatureFlag.service.js +250 -0
- package/lib/esm/feature-flags/types.js +2 -0
- package/lib/esm/feature-flags/utils.js +126 -0
- package/lib/esm/graph/engine/execution/SwitchGraphNodeExecutor.js +8 -8
- package/lib/esm/graph/shared/nodes/flow-control.js +3 -2
- package/lib/esm/graph/shared/types.js +1 -1
- package/lib/esm/index.js +5 -4
- package/lib/esm/kibana/builders/KibanaIndexBuilder.js +319 -0
- package/lib/esm/kibana/builders/KibanaIndexBuilderCollection.js +32 -0
- package/lib/esm/kibana/builders/index.js +3 -0
- package/lib/esm/kibana/helpers.js +19 -15
- package/lib/esm/kibana/index.js +2 -1
- package/lib/esm/kibana/types.js +13 -2
- package/lib/esm/loader/ObjectLoader.js +115 -0
- package/lib/esm/loader/families.js +66 -0
- package/lib/esm/loader/index.js +11 -0
- package/lib/esm/loader/types.js +2 -0
- package/lib/esm/nest/decorators.js +12 -0
- package/lib/esm/nest/index.js +2 -2
- package/lib/esm/nest/keycloakAuthHandler.js +67 -35
- package/lib/esm/nest/keycloakModule.js +7 -10
- package/lib/esm/nest/types.js +1 -1
- package/lib/esm/nest/utils.js +55 -46
- package/lib/esm/plugins/contract.js +68 -0
- package/lib/esm/plugins/index.js +18 -0
- package/lib/esm/plugins/kibana/host.js +19 -0
- package/lib/esm/plugins/kibana/index.js +14 -0
- package/lib/esm/plugins/kibana/installer.js +140 -0
- package/lib/esm/plugins/kibana/manifest.js +32 -0
- package/lib/esm/plugins/kibana/templates.js +499 -0
- package/lib/esm/plugins/kibana/types.js +10 -0
- package/lib/esm/plugins/superset/host.js +21 -0
- package/lib/esm/plugins/superset/index.js +16 -0
- package/lib/esm/plugins/superset/installer.js +192 -0
- package/lib/esm/plugins/superset/manifest.js +30 -0
- package/lib/esm/plugins/superset/templates.js +840 -0
- package/lib/esm/plugins/superset/types.js +11 -0
- package/lib/types/feature-flags/constants.d.cts +11 -0
- package/lib/types/feature-flags/constants.d.mts +11 -0
- package/lib/types/feature-flags/decorators.d.cts +11 -0
- package/lib/types/feature-flags/decorators.d.mts +11 -0
- package/lib/types/feature-flags/environment.d.cts +11 -0
- package/lib/types/feature-flags/environment.d.mts +11 -0
- package/lib/types/feature-flags/index.d.cts +13 -0
- package/lib/types/feature-flags/index.d.mts +13 -0
- package/lib/types/feature-flags/models/FeatureFlag.model.d.cts +16 -0
- package/lib/types/feature-flags/models/FeatureFlag.model.d.mts +16 -0
- package/lib/types/feature-flags/models/FeatureFlagAccess.model.d.cts +15 -0
- package/lib/types/feature-flags/models/FeatureFlagAccess.model.d.mts +15 -0
- package/lib/types/feature-flags/readers/FeatureFlagReader.d.cts +10 -0
- package/lib/types/feature-flags/readers/FeatureFlagReader.d.mts +10 -0
- package/lib/types/feature-flags/readers/index.d.cts +1 -0
- package/lib/types/feature-flags/readers/index.d.mts +1 -0
- package/lib/types/feature-flags/services/FeatureFlag.service.d.cts +43 -0
- package/lib/types/feature-flags/services/FeatureFlag.service.d.mts +43 -0
- package/lib/types/feature-flags/types.d.cts +39 -0
- package/lib/types/feature-flags/types.d.mts +39 -0
- package/lib/types/feature-flags/utils.d.cts +13 -0
- package/lib/types/feature-flags/utils.d.mts +13 -0
- package/lib/types/graph/engine/execution/SwitchGraphNodeExecutor.d.cts +2 -2
- package/lib/types/graph/engine/execution/SwitchGraphNodeExecutor.d.mts +2 -2
- package/lib/types/graph/shared/types.d.cts +3 -3
- package/lib/types/graph/shared/types.d.mts +3 -3
- package/lib/types/index.d.cts +3 -2
- package/lib/types/index.d.mts +3 -2
- package/lib/types/kibana/builders/KibanaIndexBuilder.d.cts +67 -0
- package/lib/types/kibana/builders/KibanaIndexBuilder.d.mts +67 -0
- package/lib/types/kibana/builders/KibanaIndexBuilderCollection.d.cts +17 -0
- package/lib/types/kibana/builders/KibanaIndexBuilderCollection.d.mts +17 -0
- package/lib/types/kibana/builders/index.d.cts +2 -0
- package/lib/types/kibana/builders/index.d.mts +2 -0
- package/lib/types/kibana/index.d.cts +1 -0
- package/lib/types/kibana/index.d.mts +1 -0
- package/lib/types/kibana/types.d.cts +11 -0
- package/lib/types/kibana/types.d.mts +11 -0
- package/lib/types/loader/ObjectLoader.d.cts +27 -0
- package/lib/types/loader/ObjectLoader.d.mts +27 -0
- package/lib/types/loader/families.d.cts +34 -0
- package/lib/types/loader/families.d.mts +34 -0
- package/lib/types/loader/index.d.cts +10 -0
- package/lib/types/loader/index.d.mts +10 -0
- package/lib/types/loader/types.d.cts +24 -0
- package/lib/types/loader/types.d.mts +24 -0
- package/lib/types/nest/decorators.d.cts +8 -0
- package/lib/types/nest/decorators.d.mts +8 -0
- package/lib/types/nest/index.d.cts +1 -1
- package/lib/types/nest/index.d.mts +1 -1
- package/lib/types/nest/keycloakAuthHandler.d.cts +19 -42
- package/lib/types/nest/keycloakAuthHandler.d.mts +19 -42
- package/lib/types/nest/keycloakModule.d.cts +3 -5
- package/lib/types/nest/keycloakModule.d.mts +3 -5
- package/lib/types/nest/types.d.cts +2 -0
- package/lib/types/nest/types.d.mts +2 -0
- package/lib/types/nest/utils.d.cts +3 -4
- package/lib/types/nest/utils.d.mts +3 -4
- package/lib/types/plugins/contract.d.cts +180 -0
- package/lib/types/plugins/contract.d.mts +180 -0
- package/lib/types/plugins/index.d.cts +17 -0
- package/lib/types/plugins/index.d.mts +17 -0
- package/lib/types/plugins/kibana/host.d.cts +18 -0
- package/lib/types/plugins/kibana/host.d.mts +18 -0
- package/lib/types/plugins/kibana/index.d.cts +13 -0
- package/lib/types/plugins/kibana/index.d.mts +13 -0
- package/lib/types/plugins/kibana/installer.d.cts +45 -0
- package/lib/types/plugins/kibana/installer.d.mts +45 -0
- package/lib/types/plugins/kibana/manifest.d.cts +31 -0
- package/lib/types/plugins/kibana/manifest.d.mts +31 -0
- package/lib/types/plugins/kibana/templates.d.cts +12 -0
- package/lib/types/plugins/kibana/templates.d.mts +12 -0
- package/lib/types/plugins/kibana/types.d.cts +9 -0
- package/lib/types/plugins/kibana/types.d.mts +9 -0
- package/lib/types/plugins/superset/host.d.cts +20 -0
- package/lib/types/plugins/superset/host.d.mts +20 -0
- package/lib/types/plugins/superset/index.d.cts +15 -0
- package/lib/types/plugins/superset/index.d.mts +15 -0
- package/lib/types/plugins/superset/installer.d.cts +70 -0
- package/lib/types/plugins/superset/installer.d.mts +70 -0
- package/lib/types/plugins/superset/manifest.d.cts +28 -0
- package/lib/types/plugins/superset/manifest.d.mts +28 -0
- package/lib/types/plugins/superset/templates.d.cts +12 -0
- package/lib/types/plugins/superset/templates.d.mts +12 -0
- package/lib/types/plugins/superset/types.d.cts +10 -0
- package/lib/types/plugins/superset/types.d.mts +10 -0
- package/package.json +62 -3
- package/plugins/kibana/.gitignore +16 -0
- package/plugins/kibana/Dockerfile +19 -0
- package/plugins/kibana/docker-compose.yml +50 -0
- package/plugins/kibana/host/index.html +101 -0
- package/plugins/kibana/setup-dashboards.sh +84 -0
- package/plugins/superset/.gitignore +17 -0
- package/plugins/superset/Dockerfile +79 -0
- package/plugins/superset/docker-compose.yml +62 -0
- package/plugins/superset/host/index.html +168 -0
- package/plugins/superset/setup-dashboards.sh +106 -0
- package/plugins/superset/superset_config.py +49 -0
- package/lib/cjs/nest/authService.cjs +0 -91
- package/lib/esm/nest/authService.js +0 -86
- package/lib/types/nest/authService.d.cts +0 -63
- package/lib/types/nest/authService.d.mts +0 -63
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ3JhcGgvc2hhcmVkL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL2dyYXBoL3NoYXJlZC90eXBlc1xuICogQHN1bW1hcnkgRnJvbnRlbmQtc2FmZSBncmFwaCB0eXBlIGRlY2xhcmF0aW9ucy5cbiAqIEBkZXNjcmlwdGlvbiBUeXBlIGFsaWFzZXMgYW5kIGludGVyZmFjZXMgdGhhdCBhcmUgc2FmZSB0byBpbXBvcnQgZnJvbSBhXG4gKiBmcm9udGVuZCBidW5kbGUuIFRoZXNlIHR5cGVzIGRlc2NyaWJlIGRlY2xhcmF0aXZlIGdyYXBoIG1ldGFkYXRhIChsb29wXG4gKiBjb25kaXRpb24gRFNMLCBzd2l0Y2ggY2FzZXMsIG5vZGUgbWV0YWRhdGEgcGF0Y2hlcykgYW5kIHRoZSBleGVjdXRpb24tZXZlbnRcbiAqIGRhdGEgY29udHJhY3QgY29uc3VtZWQgYnkgdGhlIGZyb250ZW5kIHZpYSBTU0Ug4oCUIG5vIGVuZ2luZSBydW50aW1lXG4gKiBkZXBlbmRlbmN5LlxuICovXG5pbXBvcnQgdHlwZSB7IEdyYXBoUG9ydERlZmluaXRpb24gfSBmcm9tIFwiQGRlY2FmLXRzL3VpLWRlY29yYXRvcnMvZ3JhcGhcIjtcblxuaW1wb3J0IHR5cGUgeyBHcmFwaEV4ZWN1dGlvbkV2ZW50VHlwZSwgR3JhcGhFeGVjdXRpb25TdGF0dXMgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuLyoqXG4gKiBBIHZhbHVlIHJlZmVyZW5jZSBpbnNpZGUgYSB7QGxpbmsgQ29uZGl0aW9uRXhwcmVzc2lvbn0uXG4gKlxuICogLSBgeyBjb25zdDogeCB9YCDigJQgYSBsaXRlcmFsIGNvbnN0YW50LlxuICogLSBgeyBwYXRoOiBcImEuYlwiIH1gIOKAlCBhIGRvdHRlZCBwYXRoIHJlc29sdmVkIGFnYWluc3QgdGhlIGN1cnJlbnQgbG9vcCBzdGF0ZS5cbiAqIC0gYHsgc3RlcDogXCJub2RlSWRcIiwgcGF0aDogXCJvdXRcIiB9YCDigJQgYSBjcm9zcy1ub2RlIHJlZmVyZW5jZSAocmVzb2x2ZWQgZnJvbVxuICogICB0aGUgZXhlY3V0aW9uIHN0YXRlIGluIHYxOyByZXNlcnZlZCBmb3IgZnV0dXJlIG11bHRpLXN0ZXAgZXZhbHVhdGlvbikuXG4gKi9cbmV4cG9ydCB0eXBlIEV4cHJWYWx1ZSA9XG4gIHwgeyBjb25zdDogdW5rbm93biB9XG4gIHwgeyBwYXRoOiBzdHJpbmcgfVxuICB8IHsgc3RlcDogc3RyaW5nOyBwYXRoOiBzdHJpbmcgfTtcblxuLyoqXG4gKiBEZWNsYXJhdGl2ZSwgc2VyaWFsaXphYmxlIGNvbmRpdGlvbiBleHByZXNzaW9uIERTTCAoQUxGUkVELTUgwqc4IC8gREVDQUYtMzIgwqcyMi4zKS5cbiAqXG4gKiBUaGUgZW5naW5lJ3MgYEdyYXBoQ29uZGl0aW9uRXZhbHVhdG9yYCByZWNvZ25pc2VzIHRoaXMgRFNMIHdoZW4gdGhlXG4gKiBjb25kaXRpb24gb2JqZWN0IGNhcnJpZXMgYW4gYG9wYCBmaWVsZCBhbmQgZGlzcGF0Y2hlcyB0byB0aGVcbiAqIGBDb25kaXRpb25FeHByZXNzaW9uRXZhbHVhdG9yYC5cbiAqL1xuZXhwb3J0IHR5cGUgQ29uZGl0aW9uRXhwcmVzc2lvbiA9XG4gIHwgeyBvcDogXCJlcVwiOyBsZWZ0OiBFeHByVmFsdWU7IHJpZ2h0OiBFeHByVmFsdWUgfVxuICB8IHsgb3A6IFwibmVxXCI7IGxlZnQ6IEV4cHJWYWx1ZTsgcmlnaHQ6IEV4cHJWYWx1ZSB9XG4gIHwgeyBvcDogXCJndFwiOyBsZWZ0OiBFeHByVmFsdWU7IHJpZ2h0OiBFeHByVmFsdWUgfVxuICB8IHsgb3A6IFwiZ3RlXCI7IGxlZnQ6IEV4cHJWYWx1ZTsgcmlnaHQ6IEV4cHJWYWx1ZSB9XG4gIHwgeyBvcDogXCJsdFwiOyBsZWZ0OiBFeHByVmFsdWU7IHJpZ2h0OiBFeHByVmFsdWUgfVxuICB8IHsgb3A6IFwibHRlXCI7IGxlZnQ6IEV4cHJWYWx1ZTsgcmlnaHQ6IEV4cHJWYWx1ZSB9XG4gIHwgeyBvcDogXCJhbmRcIjsgY29uZGl0aW9uczogQ29uZGl0aW9uRXhwcmVzc2lvbltdIH1cbiAgfCB7IG9wOiBcIm9yXCI7IGNvbmRpdGlvbnM6IENvbmRpdGlvbkV4cHJlc3Npb25bXSB9XG4gIHwgeyBvcDogXCJub3RcIjsgY29uZGl0aW9uOiBDb25kaXRpb25FeHByZXNzaW9uIH1cbiAgfCB7IG9wOiBcImV4aXN0c1wiOyB2YWx1ZTogRXhwclZhbHVlIH07XG5cbi8qKlxuICogQSBjb2RlLWJhc2VkIGNvbmRpdGlvbiBldmFsdWF0ZWQgaW4gYSByZXN0cmljdGVkIFZNIHNhbmRib3ggKMKnMjIuNCkuXG4gKlxuICogVGhlIGVuZ2luZSBkb2VzIE5PVCBpbXBsZW1lbnQgdGhlIHNhbmRib3ggZGlyZWN0bHkg4oCUIGEgcGx1Z2dhYmxlXG4gKiBgQ29kZVNhbmRib3hFdmFsdWF0b3JgIG11c3QgYmUgcmVnaXN0ZXJlZCBmb3IgY29kZSBjb25kaXRpb25zIHRvIHdvcmsuXG4gKiBUaGUgY29kZSBtdXN0IGZvbGxvdyB0aGUgc2FtZSByZXN0cmljdGlvbnMgYXMgdGhlIENvZGUgTm9kZSAowqcyMi40KTpcbiAqIG5vIHN5c3RlbSBBUEkgYWNjZXNzLCBwbGFjZWhvbGRlciBzeW50YXggZm9yIHdvcmtmbG93IGRhdGEgcmVmZXJlbmNlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb2RlQ29uZGl0aW9uIHtcbiAgdHlwZTogXCJjb2RlXCI7XG4gIGNvZGU6IHN0cmluZztcbiAgbGFuZ3VhZ2U/
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ3JhcGgvc2hhcmVkL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL2dyYXBoL3NoYXJlZC90eXBlc1xuICogQHN1bW1hcnkgRnJvbnRlbmQtc2FmZSBncmFwaCB0eXBlIGRlY2xhcmF0aW9ucy5cbiAqIEBkZXNjcmlwdGlvbiBUeXBlIGFsaWFzZXMgYW5kIGludGVyZmFjZXMgdGhhdCBhcmUgc2FmZSB0byBpbXBvcnQgZnJvbSBhXG4gKiBmcm9udGVuZCBidW5kbGUuIFRoZXNlIHR5cGVzIGRlc2NyaWJlIGRlY2xhcmF0aXZlIGdyYXBoIG1ldGFkYXRhIChsb29wXG4gKiBjb25kaXRpb24gRFNMLCBzd2l0Y2ggY2FzZXMsIG5vZGUgbWV0YWRhdGEgcGF0Y2hlcykgYW5kIHRoZSBleGVjdXRpb24tZXZlbnRcbiAqIGRhdGEgY29udHJhY3QgY29uc3VtZWQgYnkgdGhlIGZyb250ZW5kIHZpYSBTU0Ug4oCUIG5vIGVuZ2luZSBydW50aW1lXG4gKiBkZXBlbmRlbmN5LlxuICovXG5pbXBvcnQgdHlwZSB7IEdyYXBoUG9ydERlZmluaXRpb24gfSBmcm9tIFwiQGRlY2FmLXRzL3VpLWRlY29yYXRvcnMvZ3JhcGhcIjtcblxuaW1wb3J0IHR5cGUgeyBHcmFwaEV4ZWN1dGlvbkV2ZW50VHlwZSwgR3JhcGhFeGVjdXRpb25TdGF0dXMgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuLyoqXG4gKiBBIHZhbHVlIHJlZmVyZW5jZSBpbnNpZGUgYSB7QGxpbmsgQ29uZGl0aW9uRXhwcmVzc2lvbn0uXG4gKlxuICogLSBgeyBjb25zdDogeCB9YCDigJQgYSBsaXRlcmFsIGNvbnN0YW50LlxuICogLSBgeyBwYXRoOiBcImEuYlwiIH1gIOKAlCBhIGRvdHRlZCBwYXRoIHJlc29sdmVkIGFnYWluc3QgdGhlIGN1cnJlbnQgbG9vcCBzdGF0ZS5cbiAqIC0gYHsgc3RlcDogXCJub2RlSWRcIiwgcGF0aDogXCJvdXRcIiB9YCDigJQgYSBjcm9zcy1ub2RlIHJlZmVyZW5jZSAocmVzb2x2ZWQgZnJvbVxuICogICB0aGUgZXhlY3V0aW9uIHN0YXRlIGluIHYxOyByZXNlcnZlZCBmb3IgZnV0dXJlIG11bHRpLXN0ZXAgZXZhbHVhdGlvbikuXG4gKi9cbmV4cG9ydCB0eXBlIEV4cHJWYWx1ZSA9XG4gIHwgeyBjb25zdDogdW5rbm93biB9XG4gIHwgeyBwYXRoOiBzdHJpbmcgfVxuICB8IHsgc3RlcDogc3RyaW5nOyBwYXRoOiBzdHJpbmcgfTtcblxuLyoqXG4gKiBEZWNsYXJhdGl2ZSwgc2VyaWFsaXphYmxlIGNvbmRpdGlvbiBleHByZXNzaW9uIERTTCAoQUxGUkVELTUgwqc4IC8gREVDQUYtMzIgwqcyMi4zKS5cbiAqXG4gKiBUaGUgZW5naW5lJ3MgYEdyYXBoQ29uZGl0aW9uRXZhbHVhdG9yYCByZWNvZ25pc2VzIHRoaXMgRFNMIHdoZW4gdGhlXG4gKiBjb25kaXRpb24gb2JqZWN0IGNhcnJpZXMgYW4gYG9wYCBmaWVsZCBhbmQgZGlzcGF0Y2hlcyB0byB0aGVcbiAqIGBDb25kaXRpb25FeHByZXNzaW9uRXZhbHVhdG9yYC5cbiAqL1xuZXhwb3J0IHR5cGUgQ29uZGl0aW9uRXhwcmVzc2lvbiA9XG4gIHwgeyBvcDogXCJlcVwiOyBsZWZ0OiBFeHByVmFsdWU7IHJpZ2h0OiBFeHByVmFsdWUgfVxuICB8IHsgb3A6IFwibmVxXCI7IGxlZnQ6IEV4cHJWYWx1ZTsgcmlnaHQ6IEV4cHJWYWx1ZSB9XG4gIHwgeyBvcDogXCJndFwiOyBsZWZ0OiBFeHByVmFsdWU7IHJpZ2h0OiBFeHByVmFsdWUgfVxuICB8IHsgb3A6IFwiZ3RlXCI7IGxlZnQ6IEV4cHJWYWx1ZTsgcmlnaHQ6IEV4cHJWYWx1ZSB9XG4gIHwgeyBvcDogXCJsdFwiOyBsZWZ0OiBFeHByVmFsdWU7IHJpZ2h0OiBFeHByVmFsdWUgfVxuICB8IHsgb3A6IFwibHRlXCI7IGxlZnQ6IEV4cHJWYWx1ZTsgcmlnaHQ6IEV4cHJWYWx1ZSB9XG4gIHwgeyBvcDogXCJhbmRcIjsgY29uZGl0aW9uczogQ29uZGl0aW9uRXhwcmVzc2lvbltdIH1cbiAgfCB7IG9wOiBcIm9yXCI7IGNvbmRpdGlvbnM6IENvbmRpdGlvbkV4cHJlc3Npb25bXSB9XG4gIHwgeyBvcDogXCJub3RcIjsgY29uZGl0aW9uOiBDb25kaXRpb25FeHByZXNzaW9uIH1cbiAgfCB7IG9wOiBcImV4aXN0c1wiOyB2YWx1ZTogRXhwclZhbHVlIH07XG5cbi8qKlxuICogQSBjb2RlLWJhc2VkIGNvbmRpdGlvbiBldmFsdWF0ZWQgaW4gYSByZXN0cmljdGVkIFZNIHNhbmRib3ggKMKnMjIuNCkuXG4gKlxuICogVGhlIGVuZ2luZSBkb2VzIE5PVCBpbXBsZW1lbnQgdGhlIHNhbmRib3ggZGlyZWN0bHkg4oCUIGEgcGx1Z2dhYmxlXG4gKiBgQ29kZVNhbmRib3hFdmFsdWF0b3JgIG11c3QgYmUgcmVnaXN0ZXJlZCBmb3IgY29kZSBjb25kaXRpb25zIHRvIHdvcmsuXG4gKiBUaGUgY29kZSBtdXN0IGZvbGxvdyB0aGUgc2FtZSByZXN0cmljdGlvbnMgYXMgdGhlIENvZGUgTm9kZSAowqcyMi40KTpcbiAqIG5vIHN5c3RlbSBBUEkgYWNjZXNzLCBwbGFjZWhvbGRlciBzeW50YXggZm9yIHdvcmtmbG93IGRhdGEgcmVmZXJlbmNlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb2RlQ29uZGl0aW9uIHtcbiAgdHlwZTogXCJjb2RlXCI7XG4gIGNvZGU6IHN0cmluZztcbiAgbGFuZ3VhZ2U/OiBcImphdmFzY3JpcHRcIiB8IFwidHlwZXNjcmlwdFwiO1xufVxuXG4vKipcbiAqIEEgY29uZGl0aW9uIG9uIGEgU3dpdGNoIGNhc2Ug4oCUIGVpdGhlciBhIGRlY2xhcmF0aXZlXG4gKiB7QGxpbmsgQ29uZGl0aW9uRXhwcmVzc2lvbn0gKGdyYXBoaWNhbCBtb2RlKSBvciBhIHtAbGluayBDb2RlQ29uZGl0aW9ufVxuICogKGNvZGUgbW9kZSkuXG4gKi9cbmV4cG9ydCB0eXBlIFN3aXRjaENhc2VDb25kaXRpb24gPSBDb25kaXRpb25FeHByZXNzaW9uIHwgQ29kZUNvbmRpdGlvbjtcblxuLyoqXG4gKiBBIHNpbmdsZSBjYXNlIGluIGEgU3dpdGNoIG5vZGUuXG4gKlxuICogRWFjaCBjYXNlIHBhaXJzIGEgY29uZGl0aW9uIHdpdGggYSBkZWRpY2F0ZWQgb3V0cHV0IHBvcnQuIFdoZW4gdGhlXG4gKiBjb25kaXRpb24gZXZhbHVhdGVzIHRvIGB0cnVlYCwgdGhlIGlucHV0IGlzIHJvdXRlZCB0byBgb3V0cHV0UG9ydGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3dpdGNoQ2FzZSB7XG4gIGlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGNvbmRpdGlvbjogU3dpdGNoQ2FzZUNvbmRpdGlvbjtcbiAgb3V0cHV0UG9ydDogc3RyaW5nO1xufVxuXG4vKipcbiAqIE1ldGFkYXRhIGZvciBhIFN3aXRjaCBub2RlLCBzdG9yZWQgaW4gYG1ldGFkYXRhLnN3aXRjaGAuXG4gKlxuICogV2hlbiBgaGFzRGVmYXVsdGAgaXMgYGZhbHNlYCAodGhlIGRlZmF1bHQpLCB0aGUgYGRlZmF1bHRgIG91dHB1dCBwb3J0IGlzXG4gKiBoaWRkZW4gYW5kIHRoZSBleGVjdXRvciB0aHJvd3MgYSBgR3JhcGhFeGVjdXRpb25FcnJvcmAgd2hlbiBubyBjYXNlXG4gKiBtYXRjaGVzLiBXaGVuIGBoYXNEZWZhdWx0YCBpcyBgdHJ1ZWAsIHRoZSBgZGVmYXVsdGAgb3V0cHV0IHBvcnQgaXMgdmlzaWJsZVxuICogYW5kIHJlY2VpdmVzIHRoZSBpbnB1dCB3aGVuIG5vIGNhc2UgbWF0Y2hlcyAoREVDQUYtMzQgwqc2LjIpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN3aXRjaE5vZGVNZXRhZGF0YSB7XG4gIGNhc2VzOiBTd2l0Y2hDYXNlW107XG4gIGRlZmF1bHRQb3J0Pzogc3RyaW5nO1xuICBoYXNEZWZhdWx0PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBUaGUgcmVzdWx0IG9mIGFwcGx5aW5nIGEgbWV0YWRhdGEgY2hhbmdlIHRvIGEgbm9kZS4gRWFjaCBjb25jcmV0ZSBub2RlXG4gKiBjbGFzcyB0aGF0IG92ZXJyaWRlcyBgR3JhcGhOb2RlLmFwcGx5TWV0YWRhdGEoKWAgcmV0dXJucyB0aGlzIHNvIHRoZVxuICogcmVuZGVyZXIgY2FuIHVwZGF0ZSB0aGUgZGlhZ3JhbSBtb2RlbCDigJQgdGhlIG5vZGUgb3ducyBpdHMgcG9ydHMsIGl0c1xuICogc2l6ZSwgYW5kIGFueSBkYXRhIHBhdGNoZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm9kZU1ldGFkYXRhQ2hhbmdlIHtcbiAgcG9ydHM6IEdyYXBoUG9ydERlZmluaXRpb25bXTtcbiAgc2l6ZTogeyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9O1xuICBkYXRhUGF0Y2g6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vKipcbiAqIFNlcmlhbGl6ZWQgZXJyb3IgcGF5bG9hZCBpbmNsdWRlZCBpbiBleGVjdXRpb24gZXZlbnRzIGFuZCByZXN1bHRzLlxuICpcbiAqIEZyb250ZW5kLXNhZmU6IHRoZSBmcm9udGVuZCByZWNlaXZlcyB0aGlzIG92ZXIgU1NFIHdoZW4gYSBub2RlIG9yIHdvcmtmbG93XG4gKiBmYWlscyBhbmQgbmVlZHMgdG8gcmVuZGVyIHRoZSBlcnJvciBkZXRhaWxzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdyYXBoRXhlY3V0aW9uRXJyb3JQYXlsb2FkIHtcbiAgbmFtZTogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHN0YWNrPzogc3RyaW5nO1xuICBjb2RlPzogc3RyaW5nO1xuICBkZXRhaWxzPzogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBBIHNpbmdsZSBldmVudCBlbWl0dGVkIGR1cmluZyBncmFwaCBleGVjdXRpb24uXG4gKlxuICogRnJvbnRlbmQtc2FmZTogdGhlIGZyb250ZW5kIGNvbnN1bWVzIHRoZXNlIGV2ZW50cyBvdmVyIHRoZSBTU0UgZW5kcG9pbnRcbiAqIChgR0VUIC9ncmFwaC9ldmVudHNgKSBhbmQgbWFwcyB0aGVtIHRvIFVJIHN0YXRlIHVwZGF0ZXMgdmlhXG4gKiBgR3JhcGhFeGVjdXRpb25TdGF0ZU1hcHBlcmAuIFRoZSBgdGltZXN0YW1wYCBpcyBzZXJpYWxpc2VkIGFzIGFuIElTTyBzdHJpbmdcbiAqIG92ZXIgdGhlIHdpcmU7IHRoZSBmcm9udGVuZCBkZXNlcmlhbGlzZXMgaXQgYmFjayB0byBhIGBEYXRlYCB3aGVuIG1hcHBpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3JhcGhFeGVjdXRpb25FdmVudCB7XG4gIGlkOiBzdHJpbmc7XG4gIHNlcXVlbmNlOiBudW1iZXI7XG4gIHJ1bklkOiBzdHJpbmc7XG4gIHBhcmVudFJ1bklkPzogc3RyaW5nO1xuICB3b3JrZmxvd0lkOiBzdHJpbmc7XG4gIHR5cGU6IEdyYXBoRXhlY3V0aW9uRXZlbnRUeXBlO1xuICB0aW1lc3RhbXA6IERhdGU7XG4gIG5vZGVJZD86IHN0cmluZztcbiAgZWRnZUlkPzogc3RyaW5nO1xuICBwb3J0Pzogc3RyaW5nO1xuICBpdGVyYXRpb24/OiBudW1iZXI7XG4gIHBhdGg6IHN0cmluZ1tdO1xuICBzdGF0dXM/OiBHcmFwaEV4ZWN1dGlvblN0YXR1cztcbiAgcGF5bG9hZD86IHVua25vd247XG4gIGVycm9yPzogR3JhcGhFeGVjdXRpb25FcnJvclBheWxvYWQ7XG4gIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG4iXX0=
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLHMwTkFBczBOIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHt9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZEhsd1pYTXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTh1TGk4dUxpOXpjbU12WjNKaGNHZ3ZjMmhoY21Wa0wzUjVjR1Z6TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFQnRiMlIxYkdVZ2FXNTBaV2R5WVhScGIyNXpMMmR5WVhCb0wzTm9ZWEpsWkM5MGVYQmxjMXh1SUNvZ1FITjFiVzFoY25rZ1JuSnZiblJsYm1RdGMyRm1aU0JuY21Gd2FDQjBlWEJsSUdSbFkyeGhjbUYwYVc5dWN5NWNiaUFxSUVCa1pYTmpjbWx3ZEdsdmJpQlVlWEJsSUdGc2FXRnpaWE1nWVc1a0lHbHVkR1Z5Wm1GalpYTWdkR2hoZENCaGNtVWdjMkZtWlNCMGJ5QnBiWEJ2Y25RZ1puSnZiU0JoWEc0Z0tpQm1jbTl1ZEdWdVpDQmlkVzVrYkdVdUlGUm9aWE5sSUhSNWNHVnpJR1JsYzJOeWFXSmxJR1JsWTJ4aGNtRjBhWFpsSUdkeVlYQm9JRzFsZEdGa1lYUmhJQ2hzYjI5d1hHNGdLaUJqYjI1a2FYUnBiMjRnUkZOTUxDQnpkMmwwWTJnZ1kyRnpaWE1zSUc1dlpHVWdiV1YwWVdSaGRHRWdjR0YwWTJobGN5a2dZVzVrSUhSb1pTQmxlR1ZqZFhScGIyNHRaWFpsYm5SY2JpQXFJR1JoZEdFZ1kyOXVkSEpoWTNRZ1kyOXVjM1Z0WldRZ1lua2dkR2hsSUdaeWIyNTBaVzVrSUhacFlTQlRVMFVnNG9DVUlHNXZJR1Z1WjJsdVpTQnlkVzUwYVcxbFhHNGdLaUJrWlhCbGJtUmxibU41TGx4dUlDb3ZYRzVwYlhCdmNuUWdkSGx3WlNCN0lFZHlZWEJvVUc5eWRFUmxabWx1YVhScGIyNGdmU0JtY205dElGd2lRR1JsWTJGbUxYUnpMM1ZwTFdSbFkyOXlZWFJ2Y25NdlozSmhjR2hjSWp0Y2JseHVhVzF3YjNKMElIUjVjR1VnZXlCSGNtRndhRVY0WldOMWRHbHZia1YyWlc1MFZIbHdaU3dnUjNKaGNHaEZlR1ZqZFhScGIyNVRkR0YwZFhNZ2ZTQm1jbTl0SUZ3aUxpOWpiMjV6ZEdGdWRITmNJanRjYmx4dUx5b3FYRzRnS2lCQklIWmhiSFZsSUhKbFptVnlaVzVqWlNCcGJuTnBaR1VnWVNCN1FHeHBibXNnUTI5dVpHbDBhVzl1Ulhod2NtVnpjMmx2Ym4wdVhHNGdLbHh1SUNvZ0xTQmdleUJqYjI1emREb2dlQ0I5WUNEaWdKUWdZU0JzYVhSbGNtRnNJR052Ym5OMFlXNTBMbHh1SUNvZ0xTQmdleUJ3WVhSb09pQmNJbUV1WWx3aUlIMWdJT0tBbENCaElHUnZkSFJsWkNCd1lYUm9JSEpsYzI5c2RtVmtJR0ZuWVdsdWMzUWdkR2hsSUdOMWNuSmxiblFnYkc5dmNDQnpkR0YwWlM1Y2JpQXFJQzBnWUhzZ2MzUmxjRG9nWENKdWIyUmxTV1JjSWl3Z2NHRjBhRG9nWENKdmRYUmNJaUI5WUNEaWdKUWdZU0JqY205emN5MXViMlJsSUhKbFptVnlaVzVqWlNBb2NtVnpiMngyWldRZ1puSnZiVnh1SUNvZ0lDQjBhR1VnWlhobFkzVjBhVzl1SUhOMFlYUmxJR2x1SUhZeE95QnlaWE5sY25abFpDQm1iM0lnWm5WMGRYSmxJRzExYkhScExYTjBaWEFnWlhaaGJIVmhkR2x2YmlrdVhHNGdLaTljYm1WNGNHOXlkQ0IwZVhCbElFVjRjSEpXWVd4MVpTQTlYRzRnSUh3Z2V5QmpiMjV6ZERvZ2RXNXJibTkzYmlCOVhHNGdJSHdnZXlCd1lYUm9PaUJ6ZEhKcGJtY2dmVnh1SUNCOElIc2djM1JsY0RvZ2MzUnlhVzVuT3lCd1lYUm9PaUJ6ZEhKcGJtY2dmVHRjYmx4dUx5b3FYRzRnS2lCRVpXTnNZWEpoZEdsMlpTd2djMlZ5YVdGc2FYcGhZbXhsSUdOdmJtUnBkR2x2YmlCbGVIQnlaWE56YVc5dUlFUlRUQ0FvUVV4R1VrVkVMVFVnd3FjNElDOGdSRVZEUVVZdE16SWd3cWN5TWk0ektTNWNiaUFxWEc0Z0tpQlVhR1VnWlc1bmFXNWxKM01nWUVkeVlYQm9RMjl1WkdsMGFXOXVSWFpoYkhWaGRHOXlZQ0J5WldOdloyNXBjMlZ6SUhSb2FYTWdSRk5NSUhkb1pXNGdkR2hsWEc0Z0tpQmpiMjVrYVhScGIyNGdiMkpxWldOMElHTmhjbkpwWlhNZ1lXNGdZRzl3WUNCbWFXVnNaQ0JoYm1RZ1pHbHpjR0YwWTJobGN5QjBieUIwYUdWY2JpQXFJR0JEYjI1a2FYUnBiMjVGZUhCeVpYTnphVzl1UlhaaGJIVmhkRzl5WUM1Y2JpQXFMMXh1Wlhod2IzSjBJSFI1Y0dVZ1EyOXVaR2wwYVc5dVJYaHdjbVZ6YzJsdmJpQTlYRzRnSUh3Z2V5QnZjRG9nWENKbGNWd2lPeUJzWldaME9pQkZlSEJ5Vm1Gc2RXVTdJSEpwWjJoME9pQkZlSEJ5Vm1Gc2RXVWdmVnh1SUNCOElIc2diM0E2SUZ3aWJtVnhYQ0k3SUd4bFpuUTZJRVY0Y0hKV1lXeDFaVHNnY21sbmFIUTZJRVY0Y0hKV1lXeDFaU0I5WEc0Z0lId2dleUJ2Y0RvZ1hDSm5kRndpT3lCc1pXWjBPaUJGZUhCeVZtRnNkV1U3SUhKcFoyaDBPaUJGZUhCeVZtRnNkV1VnZlZ4dUlDQjhJSHNnYjNBNklGd2laM1JsWENJN0lHeGxablE2SUVWNGNISldZV3gxWlRzZ2NtbG5hSFE2SUVWNGNISldZV3gxWlNCOVhHNGdJSHdnZXlCdmNEb2dYQ0pzZEZ3aU95QnNaV1owT2lCRmVIQnlWbUZzZFdVN0lISnBaMmgwT2lCRmVIQnlWbUZzZFdVZ2ZWeHVJQ0I4SUhzZ2IzQTZJRndpYkhSbFhDSTdJR3hsWm5RNklFVjRjSEpXWVd4MVpUc2djbWxuYUhRNklFVjRjSEpXWVd4MVpTQjlYRzRnSUh3Z2V5QnZjRG9nWENKaGJtUmNJanNnWTI5dVpHbDBhVzl1Y3pvZ1EyOXVaR2wwYVc5dVJYaHdjbVZ6YzJsdmJsdGRJSDFjYmlBZ2ZDQjdJRzl3T2lCY0ltOXlYQ0k3SUdOdmJtUnBkR2x2Ym5NNklFTnZibVJwZEdsdmJrVjRjSEpsYzNOcGIyNWJYU0I5WEc0Z0lId2dleUJ2Y0RvZ1hDSnViM1JjSWpzZ1kyOXVaR2wwYVc5dU9pQkRiMjVrYVhScGIyNUZlSEJ5WlhOemFXOXVJSDFjYmlBZ2ZDQjdJRzl3T2lCY0ltVjRhWE4wYzF3aU95QjJZV3gxWlRvZ1JYaHdjbFpoYkhWbElIMDdYRzVjYmk4cUtseHVJQ29nUVNCamIyUmxMV0poYzJWa0lHTnZibVJwZEdsdmJpQmxkbUZzZFdGMFpXUWdhVzRnWVNCeVpYTjBjbWxqZEdWa0lGWk5JSE5oYm1SaWIzZ2dLTUtuTWpJdU5Da3VYRzRnS2x4dUlDb2dWR2hsSUdWdVoybHVaU0JrYjJWeklFNVBWQ0JwYlhCc1pXMWxiblFnZEdobElITmhibVJpYjNnZ1pHbHlaV04wYkhrZzRvQ1VJR0VnY0d4MVoyZGhZbXhsWEc0Z0tpQmdRMjlrWlZOaGJtUmliM2hGZG1Gc2RXRjBiM0pnSUcxMWMzUWdZbVVnY21WbmFYTjBaWEpsWkNCbWIzSWdZMjlrWlNCamIyNWthWFJwYjI1eklIUnZJSGR2Y21zdVhHNGdLaUJVYUdVZ1kyOWtaU0J0ZFhOMElHWnZiR3h2ZHlCMGFHVWdjMkZ0WlNCeVpYTjBjbWxqZEdsdmJuTWdZWE1nZEdobElFTnZaR1VnVG05a1pTQW93cWN5TWk0MEtUcGNiaUFxSUc1dklITjVjM1JsYlNCQlVFa2dZV05qWlhOekxDQndiR0ZqWldodmJHUmxjaUJ6ZVc1MFlYZ2dabTl5SUhkdmNtdG1iRzkzSUdSaGRHRWdjbVZtWlhKbGJtTmxjeTVjYmlBcUwxeHVaWGh3YjNKMElHbHVkR1Z5Wm1GalpTQkRiMlJsUTI5dVpHbDBhVzl1SUh0Y2JpQWdkSGx3WlRvZ1hDSmpiMlJsWENJN1hHNGdJR052WkdVNklITjBjbWx1Wnp0Y2JpQWdiR0Z1WjNWaFoyVS9PaUJjSW1waGRtRnpZM0pwY0hSY0lpQjhJRndpZEhsd1pYTmpjbWx3ZEZ3aU8xeHVmVnh1WEc0dktpcGNiaUFxSUVFZ1kyOXVaR2wwYVc5dUlHOXVJR0VnVTNkcGRHTm9JR05oYzJVZzRvQ1VJR1ZwZEdobGNpQmhJR1JsWTJ4aGNtRjBhWFpsWEc0Z0tpQjdRR3hwYm1zZ1EyOXVaR2wwYVc5dVJYaHdjbVZ6YzJsdmJuMGdLR2R5WVhCb2FXTmhiQ0J0YjJSbEtTQnZjaUJoSUh0QWJHbHVheUJEYjJSbFEyOXVaR2wwYVc5dWZWeHVJQ29nS0dOdlpHVWdiVzlrWlNrdVhHNGdLaTljYm1WNGNHOXlkQ0IwZVhCbElGTjNhWFJqYUVOaGMyVkRiMjVrYVhScGIyNGdQU0JEYjI1a2FYUnBiMjVGZUhCeVpYTnphVzl1SUh3Z1EyOWtaVU52Ym1ScGRHbHZianRjYmx4dUx5b3FYRzRnS2lCQklITnBibWRzWlNCallYTmxJR2x1SUdFZ1UzZHBkR05vSUc1dlpHVXVYRzRnS2x4dUlDb2dSV0ZqYUNCallYTmxJSEJoYVhKeklHRWdZMjl1WkdsMGFXOXVJSGRwZEdnZ1lTQmtaV1JwWTJGMFpXUWdiM1YwY0hWMElIQnZjblF1SUZkb1pXNGdkR2hsWEc0Z0tpQmpiMjVrYVhScGIyNGdaWFpoYkhWaGRHVnpJSFJ2SUdCMGNuVmxZQ3dnZEdobElHbHVjSFYwSUdseklISnZkWFJsWkNCMGJ5QmdiM1YwY0hWMFVHOXlkR0F1WEc0Z0tpOWNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdVM2RwZEdOb1EyRnpaU0I3WEc0Z0lHbGtPaUJ6ZEhKcGJtYzdYRzRnSUd4aFltVnNPaUJ6ZEhKcGJtYzdYRzRnSUdOdmJtUnBkR2x2YmpvZ1UzZHBkR05vUTJGelpVTnZibVJwZEdsdmJqdGNiaUFnYjNWMGNIVjBVRzl5ZERvZ2MzUnlhVzVuTzF4dWZWeHVYRzR2S2lwY2JpQXFJRTFsZEdGa1lYUmhJR1p2Y2lCaElGTjNhWFJqYUNCdWIyUmxMQ0J6ZEc5eVpXUWdhVzRnWUcxbGRHRmtZWFJoTG5OM2FYUmphR0F1WEc0Z0tseHVJQ29nVjJobGJpQmdhR0Z6UkdWbVlYVnNkR0FnYVhNZ1lHWmhiSE5sWUNBb2RHaGxJR1JsWm1GMWJIUXBMQ0IwYUdVZ1lHUmxabUYxYkhSZ0lHOTFkSEIxZENCd2IzSjBJR2x6WEc0Z0tpQm9hV1JrWlc0Z1lXNWtJSFJvWlNCbGVHVmpkWFJ2Y2lCMGFISnZkM01nWVNCZ1IzSmhjR2hGZUdWamRYUnBiMjVGY25KdmNtQWdkMmhsYmlCdWJ5QmpZWE5sWEc0Z0tpQnRZWFJqYUdWekxpQlhhR1Z1SUdCb1lYTkVaV1poZFd4MFlDQnBjeUJnZEhKMVpXQXNJSFJvWlNCZ1pHVm1ZWFZzZEdBZ2IzVjBjSFYwSUhCdmNuUWdhWE1nZG1semFXSnNaVnh1SUNvZ1lXNWtJSEpsWTJWcGRtVnpJSFJvWlNCcGJuQjFkQ0IzYUdWdUlHNXZJR05oYzJVZ2JXRjBZMmhsY3lBb1JFVkRRVVl0TXpRZ3dxYzJMaklwTGx4dUlDb3ZYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRk4zYVhSamFFNXZaR1ZOWlhSaFpHRjBZU0I3WEc0Z0lHTmhjMlZ6T2lCVGQybDBZMmhEWVhObFcxMDdYRzRnSUdSbFptRjFiSFJRYjNKMFB6b2djM1J5YVc1bk8xeHVJQ0JvWVhORVpXWmhkV3gwUHpvZ1ltOXZiR1ZoYmp0Y2JuMWNibHh1THlvcVhHNGdLaUJVYUdVZ2NtVnpkV3gwSUc5bUlHRndjR3g1YVc1bklHRWdiV1YwWVdSaGRHRWdZMmhoYm1kbElIUnZJR0VnYm05a1pTNGdSV0ZqYUNCamIyNWpjbVYwWlNCdWIyUmxYRzRnS2lCamJHRnpjeUIwYUdGMElHOTJaWEp5YVdSbGN5QmdSM0poY0doT2IyUmxMbUZ3Y0d4NVRXVjBZV1JoZEdFb0tXQWdjbVYwZFhKdWN5QjBhR2x6SUhOdklIUm9aVnh1SUNvZ2NtVnVaR1Z5WlhJZ1kyRnVJSFZ3WkdGMFpTQjBhR1VnWkdsaFozSmhiU0J0YjJSbGJDRGlnSlFnZEdobElHNXZaR1VnYjNkdWN5QnBkSE1nY0c5eWRITXNJR2wwYzF4dUlDb2djMmw2WlN3Z1lXNWtJR0Z1ZVNCa1lYUmhJSEJoZEdOb1pYTXVYRzRnS2k5Y2JtVjRjRzl5ZENCcGJuUmxjbVpoWTJVZ1RtOWtaVTFsZEdGa1lYUmhRMmhoYm1kbElIdGNiaUFnY0c5eWRITTZJRWR5WVhCb1VHOXlkRVJsWm1sdWFYUnBiMjViWFR0Y2JpQWdjMmw2WlRvZ2V5QjNhV1IwYURvZ2JuVnRZbVZ5T3lCb1pXbG5hSFE2SUc1MWJXSmxjaUI5TzF4dUlDQmtZWFJoVUdGMFkyZzZJRkpsWTI5eVpEeHpkSEpwYm1jc0lIVnVhMjV2ZDI0K08xeHVmVnh1WEc0dktpcGNiaUFxSUZObGNtbGhiR2w2WldRZ1pYSnliM0lnY0dGNWJHOWhaQ0JwYm1Oc2RXUmxaQ0JwYmlCbGVHVmpkWFJwYjI0Z1pYWmxiblJ6SUdGdVpDQnlaWE4xYkhSekxseHVJQ3BjYmlBcUlFWnliMjUwWlc1a0xYTmhabVU2SUhSb1pTQm1jbTl1ZEdWdVpDQnlaV05sYVhabGN5QjBhR2x6SUc5MlpYSWdVMU5GSUhkb1pXNGdZU0J1YjJSbElHOXlJSGR2Y210bWJHOTNYRzRnS2lCbVlXbHNjeUJoYm1RZ2JtVmxaSE1nZEc4Z2NtVnVaR1Z5SUhSb1pTQmxjbkp2Y2lCa1pYUmhhV3h6TGx4dUlDb3ZYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRWR5WVhCb1JYaGxZM1YwYVc5dVJYSnliM0pRWVhsc2IyRmtJSHRjYmlBZ2JtRnRaVG9nYzNSeWFXNW5PMXh1SUNCdFpYTnpZV2RsT2lCemRISnBibWM3WEc0Z0lITjBZV05yUHpvZ2MzUnlhVzVuTzF4dUlDQmpiMlJsUHpvZ2MzUnlhVzVuTzF4dUlDQmtaWFJoYVd4elB6b2dkVzVyYm05M2JqdGNibjFjYmx4dUx5b3FYRzRnS2lCQklITnBibWRzWlNCbGRtVnVkQ0JsYldsMGRHVmtJR1IxY21sdVp5Qm5jbUZ3YUNCbGVHVmpkWFJwYjI0dVhHNGdLbHh1SUNvZ1JuSnZiblJsYm1RdGMyRm1aVG9nZEdobElHWnliMjUwWlc1a0lHTnZibk4xYldWeklIUm9aWE5sSUdWMlpXNTBjeUJ2ZG1WeUlIUm9aU0JUVTBVZ1pXNWtjRzlwYm5SY2JpQXFJQ2hnUjBWVUlDOW5jbUZ3YUM5bGRtVnVkSE5nS1NCaGJtUWdiV0Z3Y3lCMGFHVnRJSFJ2SUZWSklITjBZWFJsSUhWd1pHRjBaWE1nZG1saFhHNGdLaUJnUjNKaGNHaEZlR1ZqZFhScGIyNVRkR0YwWlUxaGNIQmxjbUF1SUZSb1pTQmdkR2x0WlhOMFlXMXdZQ0JwY3lCelpYSnBZV3hwYzJWa0lHRnpJR0Z1SUVsVFR5QnpkSEpwYm1kY2JpQXFJRzkyWlhJZ2RHaGxJSGRwY21VN0lIUm9aU0JtY205dWRHVnVaQ0JrWlhObGNtbGhiR2x6WlhNZ2FYUWdZbUZqYXlCMGJ5QmhJR0JFWVhSbFlDQjNhR1Z1SUcxaGNIQnBibWN1WEc0Z0tpOWNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdSM0poY0doRmVHVmpkWFJwYjI1RmRtVnVkQ0I3WEc0Z0lHbGtPaUJ6ZEhKcGJtYzdYRzRnSUhObGNYVmxibU5sT2lCdWRXMWlaWEk3WEc0Z0lISjFia2xrT2lCemRISnBibWM3WEc0Z0lIQmhjbVZ1ZEZKMWJrbGtQem9nYzNSeWFXNW5PMXh1SUNCM2IzSnJabXh2ZDBsa09pQnpkSEpwYm1jN1hHNGdJSFI1Y0dVNklFZHlZWEJvUlhobFkzVjBhVzl1UlhabGJuUlVlWEJsTzF4dUlDQjBhVzFsYzNSaGJYQTZJRVJoZEdVN1hHNGdJRzV2WkdWSlpEODZJSE4wY21sdVp6dGNiaUFnWldSblpVbGtQem9nYzNSeWFXNW5PMXh1SUNCd2IzSjBQem9nYzNSeWFXNW5PMXh1SUNCcGRHVnlZWFJwYjI0L09pQnVkVzFpWlhJN1hHNGdJSEJoZEdnNklITjBjbWx1WjF0ZE8xeHVJQ0J6ZEdGMGRYTS9PaUJIY21Gd2FFVjRaV04xZEdsdmJsTjBZWFIxY3p0Y2JpQWdjR0Y1Ykc5aFpEODZJSFZ1YTI1dmQyNDdYRzRnSUdWeWNtOXlQem9nUjNKaGNHaEZlR1ZqZFhScGIyNUZjbkp2Y2xCaGVXeHZZV1E3WEc0Z0lHMWxkR0ZrWVhSaFB6b2dVbVZqYjNKa1BITjBjbWx1Wnl3Z2RXNXJibTkzYmo0N1hHNTlYRzRpWFgwPSJdfQ==
|
package/lib/cjs/index.cjs
CHANGED
|
@@ -22,9 +22,10 @@ exports.PACKAGE_NAME = exports.FULL_VERSION = exports.COMMIT = exports.VERSION =
|
|
|
22
22
|
*/
|
|
23
23
|
__exportStar(require("./utils.cjs"), exports);
|
|
24
24
|
__exportStar(require("./namespaces/index.cjs"), exports);
|
|
25
|
-
|
|
26
|
-
exports.
|
|
27
|
-
exports.
|
|
25
|
+
__exportStar(require("./feature-flags/index.cjs"), exports);
|
|
26
|
+
exports.VERSION = "0.4.0";
|
|
27
|
+
exports.COMMIT = "7e1a5ac";
|
|
28
|
+
exports.FULL_VERSION = "0.4.0-7e1a5ac";
|
|
28
29
|
exports.PACKAGE_NAME = "@decaf-ts/integrations";
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILDJCQUF3QjtBQUN4QixzQ0FBNkI7QUFDN0IseUNBQWdDO0FBRWhDLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBVyxhQUFhLENBQUM7QUFFN0MsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQztBQUVuQyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFXLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnNcbiAqIEBzdW1tYXJ5IFBhY2thZ2UgZW50cnkgcG9pbnQgZm9yIHNoYXJlZCBpbnRlZ3JhdGlvbiBoZWxwZXJzLlxuICogQGRlc2NyaXB0aW9uIEV4cG9zZXMgdGhlIHBhY2thZ2UgdXRpbGl0aWVzIGFuZCBidWlsZC10aW1lIHZlcnNpb24gbWV0YWRhdGEgZm9yIGBAZGVjYWYtdHMvaW50ZWdyYXRpb25zYC5cbiAqL1xuZXhwb3J0ICogZnJvbSBcIi4vdXRpbHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL25hbWVzcGFjZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2ZlYXR1cmUtZmxhZ3NcIjtcblxuZXhwb3J0IGNvbnN0IFZFUlNJT046IHN0cmluZyA9IFwiIyNWRVJTSU9OIyNcIjtcblxuZXhwb3J0IGNvbnN0IENPTU1JVCA9IFwiIyNDT01NSVQjI1wiO1xuXG5leHBvcnQgY29uc3QgRlVMTF9WRVJTSU9OID0gXCIjI0ZVTExfVkVSU0lPTiMjXCI7XG5cbmV4cG9ydCBjb25zdCBQQUNLQUdFX05BTUU6IHN0cmluZyA9IFwiIyNQQUNLQUdFIyNcIjtcbiJdfQ==
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7O0dBSUc7QUFDSCw2Q0FBMkI7QUFDM0Isd0RBQXNDO0FBQ3RDLDJEQUF5QztBQUM1QixRQUFBLE9BQU8sR0FBRyxhQUFhLENBQUM7QUFDeEIsUUFBQSxNQUFNLEdBQUcsWUFBWSxDQUFDO0FBQ3RCLFFBQUEsWUFBWSxHQUFHLGtCQUFrQixDQUFDO0FBQ2xDLFFBQUEsWUFBWSxHQUFHLGFBQWEsQ0FBQztBQUMxQyxrcUNBQWtxQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnNcbiAqIEBzdW1tYXJ5IFBhY2thZ2UgZW50cnkgcG9pbnQgZm9yIHNoYXJlZCBpbnRlZ3JhdGlvbiBoZWxwZXJzLlxuICogQGRlc2NyaXB0aW9uIEV4cG9zZXMgdGhlIHBhY2thZ2UgdXRpbGl0aWVzIGFuZCBidWlsZC10aW1lIHZlcnNpb24gbWV0YWRhdGEgZm9yIGBAZGVjYWYtdHMvaW50ZWdyYXRpb25zYC5cbiAqL1xuZXhwb3J0ICogZnJvbSBcIi4vdXRpbHMuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL25hbWVzcGFjZXMvaW5kZXguanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2ZlYXR1cmUtZmxhZ3MvaW5kZXguanNcIjtcbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gXCIjI1ZFUlNJT04jI1wiO1xuZXhwb3J0IGNvbnN0IENPTU1JVCA9IFwiIyNDT01NSVQjI1wiO1xuZXhwb3J0IGNvbnN0IEZVTExfVkVSU0lPTiA9IFwiIyNGVUxMX1ZFUlNJT04jI1wiO1xuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfTkFNRSA9IFwiIyNQQUNLQUdFIyNcIjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWFXNWtaWGd1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SXVMaTh1TGk5emNtTXZhVzVrWlhndWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJRVUU3T3pzN1IwRkpSenRCUVVOSUxESkNRVUYzUWp0QlFVTjRRaXh6UTBGQk5rSTdRVUZETjBJc2VVTkJRV2RETzBGQlJXaERMRTFCUVUwc1EwRkJReXhOUVVGTkxFOUJRVThzUjBGQlZ5eGhRVUZoTEVOQlFVTTdRVUZGTjBNc1RVRkJUU3hEUVVGRExFMUJRVTBzVFVGQlRTeEhRVUZITEZsQlFWa3NRMEZCUXp0QlFVVnVReXhOUVVGTkxFTkJRVU1zVFVGQlRTeFpRVUZaTEVkQlFVY3NhMEpCUVd0Q0xFTkJRVU03UVVGRkwwTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1dVRkJXU3hIUVVGWExHRkJRV0VzUTBGQlF5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dRRzF2WkhWc1pTQnBiblJsWjNKaGRHbHZibk5jYmlBcUlFQnpkVzF0WVhKNUlGQmhZMnRoWjJVZ1pXNTBjbmtnY0c5cGJuUWdabTl5SUhOb1lYSmxaQ0JwYm5SbFozSmhkR2x2YmlCb1pXeHdaWEp6TGx4dUlDb2dRR1JsYzJOeWFYQjBhVzl1SUVWNGNHOXpaWE1nZEdobElIQmhZMnRoWjJVZ2RYUnBiR2wwYVdWeklHRnVaQ0JpZFdsc1pDMTBhVzFsSUhabGNuTnBiMjRnYldWMFlXUmhkR0VnWm05eUlHQkFaR1ZqWVdZdGRITXZhVzUwWldkeVlYUnBiMjV6WUM1Y2JpQXFMMXh1Wlhod2IzSjBJQ29nWm5KdmJTQmNJaTR2ZFhScGJITmNJanRjYm1WNGNHOXlkQ0FxSUdaeWIyMGdYQ0l1TDI1aGJXVnpjR0ZqWlhOY0lqdGNibVY0Y0c5eWRDQXFJR1p5YjIwZ1hDSXVMMlpsWVhSMWNtVXRabXhoWjNOY0lqdGNibHh1Wlhod2IzSjBJR052Ym5OMElGWkZVbE5KVDA0NklITjBjbWx1WnlBOUlGd2lJeU5XUlZKVFNVOU9JeU5jSWp0Y2JseHVaWGh3YjNKMElHTnZibk4wSUVOUFRVMUpWQ0E5SUZ3aUl5TkRUMDFOU1ZRakkxd2lPMXh1WEc1bGVIQnZjblFnWTI5dWMzUWdSbFZNVEY5V1JWSlRTVTlPSUQwZ1hDSWpJMFpWVEV4ZlZrVlNVMGxQVGlNalhDSTdYRzVjYm1WNGNHOXlkQ0JqYjI1emRDQlFRVU5MUVVkRlgwNUJUVVU2SUhOMGNtbHVaeUE5SUZ3aUl5TlFRVU5MUVVkRkl5TmNJanRjYmlKZGZRPT0iXX0=
|
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KibanaIndexBuilder = void 0;
|
|
4
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
5
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
6
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
7
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
8
|
+
else
|
|
9
|
+
for (var i = decorators.length - 1; i >= 0; i--)
|
|
10
|
+
if (d = decorators[i])
|
|
11
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
12
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
13
|
+
};
|
|
14
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
15
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
|
|
16
|
+
return Reflect.metadata(k, v);
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* @module integrations/kibana/builders/KibanaIndexBuilder
|
|
20
|
+
* @summary Fluent builder for Kibana index pattern (data view) configurations.
|
|
21
|
+
* @description Implements the project Builder Pattern (constitution §2):
|
|
22
|
+
* extends `Model`, uses `@decaf-ts/decorator-validation` decorators, fluent
|
|
23
|
+
* `setX(): this` methods, and a terminal `build()` that validates via
|
|
24
|
+
* `hasErrors()` and returns a `KibanaDataViewConfig`.
|
|
25
|
+
*
|
|
26
|
+
* Supports three base matching modes:
|
|
27
|
+
* - `EXACT` — single, fully-qualified index name (no wildcards).
|
|
28
|
+
* - `PREFIX` — wildcard pattern (e.g. `filebeat-pla-demo-*`).
|
|
29
|
+
* - `LOGGER_GENERATED` — derives index name segments from a log pattern
|
|
30
|
+
* compiled via `compileLogPattern()` and rendered via
|
|
31
|
+
* `logParameterRegistry.render()`.
|
|
32
|
+
*
|
|
33
|
+
* **Compounding:** Logger-generated segments can be compounded with ANY
|
|
34
|
+
* base matching mode. When `logPattern` + `logPayload` are provided
|
|
35
|
+
* alongside EXACT or PREFIX mode, the rendered segments are appended to
|
|
36
|
+
* the base index name and a trailing `*` is added.
|
|
37
|
+
*/
|
|
38
|
+
const decorator_validation_1 = require("@decaf-ts/decorator-validation");
|
|
39
|
+
const db_decorators_1 = require("@decaf-ts/db-decorators");
|
|
40
|
+
const decoration_1 = require("@decaf-ts/decoration");
|
|
41
|
+
const logging_1 = require("@decaf-ts/logging");
|
|
42
|
+
const types_js_1 = require("./../types.cjs");
|
|
43
|
+
class KibanaIndexBuilder extends decorator_validation_1.Model {
|
|
44
|
+
constructor(arg) {
|
|
45
|
+
super(arg);
|
|
46
|
+
// ── Matching strategy ──
|
|
47
|
+
this.matchMode = types_js_1.KibanaIndexMatchMode.PREFIX;
|
|
48
|
+
// ── Separator ──
|
|
49
|
+
this.separator = "-";
|
|
50
|
+
// ── Data View fields (map to KibanaDataViewConfig) ──
|
|
51
|
+
this.id = "";
|
|
52
|
+
this.name = "";
|
|
53
|
+
decorator_validation_1.Model.fromModel(this, arg);
|
|
54
|
+
}
|
|
55
|
+
// ── Fluent setters: matching strategy ──
|
|
56
|
+
setMatchMode(mode) {
|
|
57
|
+
this.matchMode = mode;
|
|
58
|
+
return this;
|
|
59
|
+
}
|
|
60
|
+
setPrefix(prefix) {
|
|
61
|
+
this.prefix = prefix;
|
|
62
|
+
return this;
|
|
63
|
+
}
|
|
64
|
+
setExactIndexName(name) {
|
|
65
|
+
this.exactIndexName = name;
|
|
66
|
+
return this;
|
|
67
|
+
}
|
|
68
|
+
setLogPattern(pattern) {
|
|
69
|
+
this.logPattern = pattern;
|
|
70
|
+
return this;
|
|
71
|
+
}
|
|
72
|
+
setLogPayload(payload) {
|
|
73
|
+
this.logPayload = payload;
|
|
74
|
+
return this;
|
|
75
|
+
}
|
|
76
|
+
setSeparator(sep) {
|
|
77
|
+
this.separator = sep;
|
|
78
|
+
return this;
|
|
79
|
+
}
|
|
80
|
+
// ── Fluent setters: data view fields ──
|
|
81
|
+
setId(id) {
|
|
82
|
+
this.id = id;
|
|
83
|
+
return this;
|
|
84
|
+
}
|
|
85
|
+
setName(name) {
|
|
86
|
+
this.name = name;
|
|
87
|
+
return this;
|
|
88
|
+
}
|
|
89
|
+
setTimeFieldName(field) {
|
|
90
|
+
this.timeFieldName = field;
|
|
91
|
+
return this;
|
|
92
|
+
}
|
|
93
|
+
setNamespaces(ns) {
|
|
94
|
+
this.namespaces = ns;
|
|
95
|
+
return this;
|
|
96
|
+
}
|
|
97
|
+
setSourceFilters(filters) {
|
|
98
|
+
this.sourceFilters = filters;
|
|
99
|
+
return this;
|
|
100
|
+
}
|
|
101
|
+
setRuntimeFieldMap(map) {
|
|
102
|
+
this.runtimeFieldMap = map;
|
|
103
|
+
return this;
|
|
104
|
+
}
|
|
105
|
+
setFieldAttrs(attrs) {
|
|
106
|
+
this.fieldAttrs = attrs;
|
|
107
|
+
return this;
|
|
108
|
+
}
|
|
109
|
+
setAllowNoIndex(allow) {
|
|
110
|
+
this.allowNoIndex = allow;
|
|
111
|
+
return this;
|
|
112
|
+
}
|
|
113
|
+
// ── Build ──
|
|
114
|
+
build() {
|
|
115
|
+
const errs = this.hasErrors();
|
|
116
|
+
if (errs)
|
|
117
|
+
throw new db_decorators_1.ValidationError(errs);
|
|
118
|
+
const title = this.composeTitle();
|
|
119
|
+
return {
|
|
120
|
+
id: this.id,
|
|
121
|
+
name: this.name,
|
|
122
|
+
title,
|
|
123
|
+
timeFieldName: this.timeFieldName,
|
|
124
|
+
namespaces: this.namespaces,
|
|
125
|
+
sourceFilters: this.sourceFilters,
|
|
126
|
+
runtimeFieldMap: this.runtimeFieldMap,
|
|
127
|
+
fieldAttrs: this.fieldAttrs,
|
|
128
|
+
allowNoIndex: this.allowNoIndex,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
// ── Title composition ──
|
|
132
|
+
composeTitle() {
|
|
133
|
+
const baseSegments = this.composeBaseSegments();
|
|
134
|
+
const loggerSegments = this.composeLoggerGeneratedSegments();
|
|
135
|
+
if (loggerSegments.length > 0) {
|
|
136
|
+
const allSegments = [...baseSegments, ...loggerSegments];
|
|
137
|
+
return allSegments.join(this.separator) + this.separator + "*";
|
|
138
|
+
}
|
|
139
|
+
switch (this.matchMode) {
|
|
140
|
+
case types_js_1.KibanaIndexMatchMode.EXACT:
|
|
141
|
+
return baseSegments[0];
|
|
142
|
+
case types_js_1.KibanaIndexMatchMode.PREFIX: {
|
|
143
|
+
const base = baseSegments[0];
|
|
144
|
+
return base.endsWith(this.separator)
|
|
145
|
+
? `${base}*`
|
|
146
|
+
: `${base}${this.separator}*`;
|
|
147
|
+
}
|
|
148
|
+
case types_js_1.KibanaIndexMatchMode.LOGGER_GENERATED:
|
|
149
|
+
if (baseSegments.length === 0) {
|
|
150
|
+
throw new db_decorators_1.ValidationError([
|
|
151
|
+
{
|
|
152
|
+
property: "prefix",
|
|
153
|
+
message: "prefix is required for LOGGER_GENERATED mode when no logPattern is set",
|
|
154
|
+
constraints: {},
|
|
155
|
+
},
|
|
156
|
+
]);
|
|
157
|
+
}
|
|
158
|
+
return baseSegments.join(this.separator) + this.separator + "*";
|
|
159
|
+
default:
|
|
160
|
+
throw new db_decorators_1.InternalError(`Unsupported match mode: ${this.matchMode}`);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
composeBaseSegments() {
|
|
164
|
+
switch (this.matchMode) {
|
|
165
|
+
case types_js_1.KibanaIndexMatchMode.EXACT:
|
|
166
|
+
if (!this.exactIndexName ||
|
|
167
|
+
this.exactIndexName.trim().length === 0) {
|
|
168
|
+
throw new db_decorators_1.ValidationError([
|
|
169
|
+
{
|
|
170
|
+
property: "exactIndexName",
|
|
171
|
+
message: "exactIndexName is required for EXACT match mode",
|
|
172
|
+
constraints: {},
|
|
173
|
+
},
|
|
174
|
+
]);
|
|
175
|
+
}
|
|
176
|
+
if (this.exactIndexName.includes("*")) {
|
|
177
|
+
throw new db_decorators_1.ValidationError([
|
|
178
|
+
{
|
|
179
|
+
property: "exactIndexName",
|
|
180
|
+
message: "exactIndexName must not contain wildcards (*) in EXACT match mode",
|
|
181
|
+
constraints: {},
|
|
182
|
+
},
|
|
183
|
+
]);
|
|
184
|
+
}
|
|
185
|
+
return [this.exactIndexName.trim()];
|
|
186
|
+
case types_js_1.KibanaIndexMatchMode.PREFIX:
|
|
187
|
+
if (!this.prefix || this.prefix.trim().length === 0) {
|
|
188
|
+
throw new db_decorators_1.ValidationError([
|
|
189
|
+
{
|
|
190
|
+
property: "prefix",
|
|
191
|
+
message: "prefix is required for PREFIX match mode",
|
|
192
|
+
constraints: {},
|
|
193
|
+
},
|
|
194
|
+
]);
|
|
195
|
+
}
|
|
196
|
+
return [this.prefix.trim()];
|
|
197
|
+
case types_js_1.KibanaIndexMatchMode.LOGGER_GENERATED:
|
|
198
|
+
return this.prefix && this.prefix.trim().length > 0
|
|
199
|
+
? [this.prefix.trim()]
|
|
200
|
+
: [];
|
|
201
|
+
default:
|
|
202
|
+
throw new db_decorators_1.InternalError(`Unsupported match mode: ${this.matchMode}`);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
composeLoggerGeneratedSegments() {
|
|
206
|
+
if (!this.logPattern)
|
|
207
|
+
return [];
|
|
208
|
+
if (!this.logPayload) {
|
|
209
|
+
throw new db_decorators_1.ValidationError([
|
|
210
|
+
{
|
|
211
|
+
property: "logPayload",
|
|
212
|
+
message: "logPayload is required when logPattern is set",
|
|
213
|
+
constraints: {},
|
|
214
|
+
},
|
|
215
|
+
]);
|
|
216
|
+
}
|
|
217
|
+
const definition = (0, logging_1.compileLogPattern)(this.logPattern);
|
|
218
|
+
const fullPayload = this.buildFullPayload(this.logPayload);
|
|
219
|
+
const rendered = logging_1.logParameterRegistry.render(fullPayload, definition.keys);
|
|
220
|
+
const segments = [];
|
|
221
|
+
for (const key of definition.keys) {
|
|
222
|
+
const value = rendered[key];
|
|
223
|
+
if (value && value.trim().length > 0) {
|
|
224
|
+
segments.push(value.trim());
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
if (segments.length === 0 &&
|
|
228
|
+
this.matchMode === types_js_1.KibanaIndexMatchMode.LOGGER_GENERATED) {
|
|
229
|
+
throw new db_decorators_1.ValidationError([
|
|
230
|
+
{
|
|
231
|
+
property: "logPattern",
|
|
232
|
+
message: "No segments were rendered from the provided logPattern and payload",
|
|
233
|
+
constraints: {},
|
|
234
|
+
},
|
|
235
|
+
]);
|
|
236
|
+
}
|
|
237
|
+
return segments;
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Fill missing LogParameterPayload fields with sensible defaults
|
|
241
|
+
* so partial payloads can be accepted from the caller.
|
|
242
|
+
*/
|
|
243
|
+
buildFullPayload(partial) {
|
|
244
|
+
return {
|
|
245
|
+
config: partial.config ?? {},
|
|
246
|
+
level: partial.level ?? "info",
|
|
247
|
+
context: partial.context ?? [],
|
|
248
|
+
timestamp: partial.timestamp ?? new Date().toISOString(),
|
|
249
|
+
app: partial.app ?? "",
|
|
250
|
+
separator: partial.separator ?? this.separator,
|
|
251
|
+
correlationId: partial.correlationId ?? "",
|
|
252
|
+
rawMessage: partial.rawMessage ?? "",
|
|
253
|
+
filteredMessage: partial.filteredMessage ?? "",
|
|
254
|
+
meta: partial.meta,
|
|
255
|
+
metaString: partial.metaString,
|
|
256
|
+
stack: partial.stack,
|
|
257
|
+
stackLabel: partial.stackLabel,
|
|
258
|
+
applyTheme: partial.applyTheme ??
|
|
259
|
+
((value) => value),
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
exports.KibanaIndexBuilder = KibanaIndexBuilder;
|
|
264
|
+
__decorate([
|
|
265
|
+
(0, decorator_validation_1.required)(),
|
|
266
|
+
(0, decorator_validation_1.option)(types_js_1.KibanaIndexMatchMode),
|
|
267
|
+
__metadata("design:type", String)
|
|
268
|
+
], KibanaIndexBuilder.prototype, "matchMode", void 0);
|
|
269
|
+
__decorate([
|
|
270
|
+
(0, decoration_1.prop)(),
|
|
271
|
+
(0, decorator_validation_1.minlength)(1),
|
|
272
|
+
__metadata("design:type", String)
|
|
273
|
+
], KibanaIndexBuilder.prototype, "prefix", void 0);
|
|
274
|
+
__decorate([
|
|
275
|
+
(0, decoration_1.prop)(),
|
|
276
|
+
(0, decorator_validation_1.minlength)(1),
|
|
277
|
+
__metadata("design:type", String)
|
|
278
|
+
], KibanaIndexBuilder.prototype, "exactIndexName", void 0);
|
|
279
|
+
__decorate([
|
|
280
|
+
(0, decoration_1.prop)(),
|
|
281
|
+
(0, decorator_validation_1.minlength)(1),
|
|
282
|
+
__metadata("design:type", String)
|
|
283
|
+
], KibanaIndexBuilder.prototype, "logPattern", void 0);
|
|
284
|
+
__decorate([
|
|
285
|
+
(0, decoration_1.prop)(),
|
|
286
|
+
__metadata("design:type", Object)
|
|
287
|
+
], KibanaIndexBuilder.prototype, "logPayload", void 0);
|
|
288
|
+
__decorate([
|
|
289
|
+
(0, decoration_1.prop)(),
|
|
290
|
+
__metadata("design:type", String)
|
|
291
|
+
], KibanaIndexBuilder.prototype, "separator", void 0);
|
|
292
|
+
__decorate([
|
|
293
|
+
(0, decorator_validation_1.required)(),
|
|
294
|
+
(0, decorator_validation_1.minlength)(1),
|
|
295
|
+
__metadata("design:type", String)
|
|
296
|
+
], KibanaIndexBuilder.prototype, "id", void 0);
|
|
297
|
+
__decorate([
|
|
298
|
+
(0, decorator_validation_1.required)(),
|
|
299
|
+
(0, decorator_validation_1.minlength)(1),
|
|
300
|
+
__metadata("design:type", String)
|
|
301
|
+
], KibanaIndexBuilder.prototype, "name", void 0);
|
|
302
|
+
__decorate([
|
|
303
|
+
(0, decoration_1.prop)(),
|
|
304
|
+
__metadata("design:type", String)
|
|
305
|
+
], KibanaIndexBuilder.prototype, "timeFieldName", void 0);
|
|
306
|
+
__decorate([
|
|
307
|
+
(0, decoration_1.prop)(),
|
|
308
|
+
(0, decorator_validation_1.list)(() => String),
|
|
309
|
+
__metadata("design:type", Array)
|
|
310
|
+
], KibanaIndexBuilder.prototype, "namespaces", void 0);
|
|
311
|
+
__decorate([
|
|
312
|
+
(0, decoration_1.prop)(),
|
|
313
|
+
(0, decorator_validation_1.list)(() => Object),
|
|
314
|
+
__metadata("design:type", Array)
|
|
315
|
+
], KibanaIndexBuilder.prototype, "sourceFilters", void 0);
|
|
316
|
+
__decorate([
|
|
317
|
+
(0, decoration_1.prop)(),
|
|
318
|
+
__metadata("design:type", Object)
|
|
319
|
+
], KibanaIndexBuilder.prototype, "runtimeFieldMap", void 0);
|
|
320
|
+
__decorate([
|
|
321
|
+
(0, decoration_1.prop)(),
|
|
322
|
+
__metadata("design:type", Object)
|
|
323
|
+
], KibanaIndexBuilder.prototype, "fieldAttrs", void 0);
|
|
324
|
+
__decorate([
|
|
325
|
+
(0, decoration_1.prop)(),
|
|
326
|
+
__metadata("design:type", Boolean)
|
|
327
|
+
], KibanaIndexBuilder.prototype, "allowNoIndex", void 0);
|
|
328
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiS2liYW5hSW5kZXhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2tpYmFuYS9idWlsZGVycy9LaWJhbmFJbmRleEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFDSCxPQUFPLEVBQ0wsSUFBSSxFQUNKLEtBQUssRUFFTCxNQUFNLEVBQ04sUUFBUSxFQUNSLFNBQVMsR0FDVixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVDLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsb0JBQW9CLEdBRXJCLE1BQU0sbUJBQW1CLENBQUM7QUFFM0IsT0FBTyxFQUF3QixvQkFBb0IsRUFBRSxzQkFBaUI7QUFFdEUsTUFBTSxPQUFPLGtCQUFtQixTQUFRLEtBQUs7SUF3RDNDLFlBQVksR0FBa0M7UUFDNUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBeERiLDBCQUEwQjtRQUcxQixjQUFTLEdBQXlCLG9CQUFvQixDQUFDLE1BQU0sQ0FBQztRQW1COUQsa0JBQWtCO1FBRWxCLGNBQVMsR0FBVyxHQUFHLENBQUM7UUFFeEIsdURBQXVEO1FBR3ZELE9BQUUsR0FBVyxFQUFFLENBQUM7UUFJaEIsU0FBSSxHQUFXLEVBQUUsQ0FBQztRQXdCaEIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELDBDQUEwQztJQUMxQyxZQUFZLENBQUMsSUFBMEI7UUFDckMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsU0FBUyxDQUFDLE1BQWM7UUFDdEIsSUFBSSxDQUFD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Q0FBQyxLQUFLLENBQUM7U0FDN0IsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXRUQztJQUZDLFFBQVEsRUFBRTtJQUNWLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQzs7cURBQ2lDO0FBSzlEO0lBRkMsSUFBSSxFQUFFO0lBQ04sU0FBUyxDQUFDLENBQUMsQ0FBQzs7a0RBQ0c7QUFJaEI7SUFGQyxJQUFJLEVBQUU7SUFDTixTQUFTLENBQUMsQ0FBQyxDQUFDOzswREFDVztBQUt4QjtJQUZDLElBQUksRUFBRTtJQUNOLFNBQVMsQ0FBQyxDQUFDLENBQUM7O3NEQUNPO0FBR3BCO0lBREMsSUFBSSxFQUFFOztzREFDbUM7QUFJMUM7SUFEQyxJQUFJLEVBQUU7O3FEQUNpQjtBQUt4QjtJQUZDLFFBQVEsRUFBRTtJQUNWLFNBQVMsQ0FBQyxDQUFDLENBQUM7OzhDQUNHO0FBSWhCO0lBRkMsUUFBUSxFQUFFO0lBQ1YsU0FBUyxDQUFDLENBQUMsQ0FBQzs7Z0RBQ0s7QUFHbEI7SUFEQyxJQUFJLEVBQUU7O3lEQUNnQjtBQUl2QjtJQUZDLElBQUksRUFBRTtJQUNOLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7O3NEQUNHO0FBSXRCO0lBRkMsSUFBSSxFQUFFO0lBQ04sSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQzs4QkFDSCxLQUFLO3lEQUFvQjtBQUd6QztJQURDLElBQUksRUFBRTs7MkRBQ21DO0FBRzFDO0lBREMsSUFBSSxFQUFFOztzREFDOEI7QUFHckM7SUFEQyxJQUFJLEVBQUU7O3dEQUNnQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMva2liYW5hL2J1aWxkZXJzL0tpYmFuYUluZGV4QnVpbGRlclxuICogQHN1bW1hcnkgRmx1ZW50IGJ1aWxkZXIgZm9yIEtpYmFuYSBpbmRleCBwYXR0ZXJuIChkYXRhIHZpZXcpIGNvbmZpZ3VyYXRpb25zLlxuICogQGRlc2NyaXB0aW9uIEltcGxlbWVudHMgdGhlIHByb2plY3QgQnVpbGRlciBQYXR0ZXJuIChjb25zdGl0dXRpb24gwqcyKTpcbiAqIGV4dGVuZHMgYE1vZGVsYCwgdXNlcyBgQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uYCBkZWNvcmF0b3JzLCBmbHVlbnRcbiAqIGBzZXRYKCk6IHRoaXNgIG1ldGhvZHMsIGFuZCBhIHRlcm1pbmFsIGBidWlsZCgpYCB0aGF0IHZhbGlkYXRlcyB2aWFcbiAqIGBoYXNFcnJvcnMoKWAgYW5kIHJldHVybnMgYSBgS2liYW5hRGF0YVZpZXdDb25maWdgLlxuICpcbiAqIFN1cHBvcnRzIHRocmVlIGJhc2UgbWF0Y2hpbmcgbW9kZXM6XG4gKiAtIGBFWEFDVGAg4oCUIHNpbmdsZSwgZnVsbHktcXVhbGlmaWVkIGluZGV4IG5hbWUgKG5vIHdpbGRjYXJkcykuXG4gKiAtIGBQUkVGSVhgIOKAlCB3aWxkY2FyZCBwYXR0ZXJuIChlLmcuIGBmaWxlYmVhdC1wbGEtZGVtby0qYCkuXG4gKiAtIGBMT0dHRVJfR0VORVJBVEVEYCDigJQgZGVyaXZlcyBpbmRleCBuYW1lIHNlZ21lbnRzIGZyb20gYSBsb2cgcGF0dGVyblxuICogICBjb21waWxlZCB2aWEgYGNvbXBpbGVMb2dQYXR0ZXJuKClgIGFuZCByZW5kZXJlZCB2aWFcbiAqICAgYGxvZ1BhcmFtZXRlclJlZ2lzdHJ5LnJlbmRlcigpYC5cbiAqXG4gKiAqKkNvbXBvdW5kaW5nOioqIExvZ2dlci1nZW5lcmF0ZWQgc2VnbWVudHMgY2FuIGJlIGNvbXBvdW5kZWQgd2l0aCBBTllcbiAqIGJhc2UgbWF0Y2hpbmcgbW9kZS4gV2hlbiBgbG9nUGF0dGVybmAgKyBgbG9nUGF5bG9hZGAgYXJlIHByb3ZpZGVkXG4gKiBhbG9uZ3NpZGUgRVhBQ1Qgb3IgUFJFRklYIG1vZGUsIHRoZSByZW5kZXJlZCBzZWdtZW50cyBhcmUgYXBwZW5kZWQgdG9cbiAqIHRoZSBiYXNlIGluZGV4IG5hbWUgYW5kIGEgdHJhaWxpbmcgYCpgIGlzIGFkZGVkLlxuICovXG5pbXBvcnQge1xuICBsaXN0LFxuICBNb2RlbCxcbiAgTW9kZWxBcmcsXG4gIG9wdGlvbixcbiAgcmVxdWlyZWQsXG4gIG1pbmxlbmd0aCxcbn0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgSW50ZXJuYWxFcnJvciwgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBwcm9wIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5pbXBvcnQge1xuICBjb21waWxlTG9nUGF0dGVybixcbiAgbG9nUGFyYW1ldGVyUmVnaXN0cnksXG4gIHR5cGUgTG9nUGFyYW1ldGVyUGF5bG9hZCxcbn0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nXCI7XG5cbmltcG9ydCB7IEtpYmFuYURhdGFWaWV3Q29uZmlnLCBLaWJhbmFJbmRleE1hdGNoTW9kZSB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG5leHBvcnQgY2xhc3MgS2liYW5hSW5kZXhCdWlsZGVyIGV4dGVuZHMgTW9kZWwge1xuICAvLyDilIDilIAgTWF0Y2hpbmcgc3RyYXRlZ3kg4pSA4pSAXG4gIEByZXF1aXJlZCgpXG4gIEBvcHRpb24oS2liYW5hSW5kZXhNYXRjaE1vZGUpXG4gIG1hdGNoTW9kZTogS2liYW5hSW5kZXhNYXRjaE1vZGUgPSBLaWJhbmFJbmRleE1hdGNoTW9kZS5QUkVGSVg7XG5cbiAgLy8g4pSA4pSAIEluZGV4IG5hbWUgc2VnbWVudHMg4pSA4pSAXG4gIEBwcm9wKClcbiAgQG1pbmxlbmd0aCgxKVxuICBwcmVmaXg/OiBzdHJpbmc7XG5cbiAgQHByb3AoKVxuICBAbWlubGVuZ3RoKDEpXG4gIGV4YWN0SW5kZXhOYW1lPzogc3RyaW5nO1xuXG4gIC8vIOKUgOKUgCBMb2dnZXItZ2VuZXJhdGVkIGNvbXBvdW5kaW5nIOKUgOKUgFxuICBAcHJvcCgpXG4gIEBtaW5sZW5ndGgoMSlcbiAgbG9nUGF0dGVybj86IHN0cmluZztcblxuICBAcHJvcCgpXG4gIGxvZ1BheWxvYWQ/OiBQYXJ0aWFsPExvZ1BhcmFtZXRlclBheWxvYWQ+O1xuXG4gIC8vIOKUgOKUgCBTZXBhcmF0b3Ig4pSA4pSAXG4gIEBwcm9wKClcbiAgc2VwYXJhdG9yOiBzdHJpbmcgPSBcIi1cIjtcblxuICAvLyDilIDilIAgRGF0YSBWaWV3IGZpZWxkcyAobWFwIHRvIEtpYmFuYURhdGFWaWV3Q29uZmlnKSDilIDilIBcbiAgQHJlcXVpcmVkKClcbiAgQG1pbmxlbmd0aCgxKVxuICBpZDogc3RyaW5nID0gXCJcIjtcblxuICBAcmVxdWlyZWQoKVxuICBAbWlubGVuZ3RoKDEpXG4gIG5hbWU6IHN0cmluZyA9IFwiXCI7XG5cbiAgQHByb3AoKVxuICB0aW1lRmllbGROYW1lPzogc3RyaW5nO1xuXG4gIEBwcm9wKClcbiAgQGxpc3QoKCkgPT4gU3RyaW5nKVxuICBuYW1lc3BhY2VzPzogc3RyaW5nW107XG5cbiAgQHByb3AoKVxuICBAbGlzdCgoKSA9PiBPYmplY3QpXG4gIHNvdXJjZUZpbHRlcnM/OiBBcnJheTx7IHZhbHVlOiBzdHJpbmcgfT47XG5cbiAgQHByb3AoKVxuICBydW50aW1lRmllbGRNYXA/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICBAcHJvcCgpXG4gIGZpZWxkQXR0cnM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICBAcHJvcCgpXG4gIGFsbG93Tm9JbmRleD86IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoYXJnPzogTW9kZWxBcmc8S2liYW5hSW5kZXhCdWlsZGVyPikge1xuICAgIHN1cGVyKGFyZyk7XG4gICAgTW9kZWwuZnJvbU1vZGVsKHRoaXMsIGFyZyk7XG4gIH1cblxuICAvLyDilIDilIAgRmx1ZW50IHNldHRlcnM6IG1hdGNoaW5nIHN0cmF0ZWd5IOKUgOKUgFxuICBzZXRNYXRjaE1vZGUobW9kZTogS2liYW5hSW5kZXhNYXRjaE1vZGUpOiB0aGlzIHtcbiAgICB0aGlzLm1hdGNoTW9kZSA9IG1vZGU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXRQcmVmaXgocHJlZml4OiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLnByZWZpeCA9IHByZWZpeDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNldEV4YWN0SW5kZXhOYW1lKG5hbWU6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMuZXhhY3RJbmRleE5hbWUgPSBuYW1lO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0TG9nUGF0dGVybihwYXR0ZXJuOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLmxvZ1BhdHRlcm4gPSBwYXR0ZXJuO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0TG9nUGF5bG9hZChwYXlsb2FkOiBQYXJ0aWFsPExvZ1BhcmFtZXRlclBheWxvYWQ+KTogdGhpcyB7XG4gICAgdGhpcy5sb2dQYXlsb2FkID0gcGF5bG9hZDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNldFNlcGFyYXRvcihzZXA6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMuc2VwYXJhdG9yID0gc2VwO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8g4pSA4pSAIEZsdWVudCBzZXR0ZXJzOiBkYXRhIHZpZXcgZmllbGRzIOKUgOKUgFxuICBzZXRJZChpZDogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0TmFtZShuYW1lOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0VGltZUZpZWxkTmFtZShmaWVsZDogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy50aW1lRmllbGROYW1lID0gZmllbGQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXROYW1lc3BhY2VzKG5zOiBzdHJpbmdbXSk6IHRoaXMge1xuICAgIHRoaXMubmFtZXNwYWNlcyA9IG5zO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0U291cmNlRmlsdGVycyhcbiAgICBmaWx0ZXJzOiBBcnJheTx7IHZhbHVlOiBzdHJpbmcgfT4sXG4gICk6IHRoaXMge1xuICAgIHRoaXMuc291cmNlRmlsdGVycyA9IGZpbHRlcnM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXRSdW50aW1lRmllbGRNYXAobWFwOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHRoaXMge1xuICAgIHRoaXMucnVudGltZUZpZWxkTWFwID0gbWFwO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0RmllbGRBdHRycyhhdHRyczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB0aGlzIHtcbiAgICB0aGlzLmZpZWxkQXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNldEFsbG93Tm9JbmRleChhbGxvdzogYm9vbGVhbik6IHRoaXMge1xuICAgIHRoaXMuYWxsb3dOb0luZGV4ID0gYWxsb3c7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyDilIDilIAgQnVpbGQg4pSA4pSAXG4gIGJ1aWxkKCk6IEtpYmFuYURhdGFWaWV3Q29uZmlnIHtcbiAgICBjb25zdCBlcnJzID0gdGhpcy5oYXNFcnJvcnMoKTtcbiAgICBpZiAoZXJycykgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihlcnJzKTtcblxuICAgIGNvbnN0IHRpdGxlID0gdGhpcy5jb21wb3NlVGl0bGUoKTtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICB0aXRsZSxcbiAgICAgIHRpbWVGaWVsZE5hbWU6IHRoaXMudGltZUZpZWxkTmFtZSxcbiAgICAgIG5hbWVzcGFjZXM6IHRoaXMubmFtZXNwYWNlcyxcbiAgICAgIHNvdXJjZUZpbHRlcnM6IHRoaXMuc291cmNlRmlsdGVycyxcbiAgICAgIHJ1bnRpbWVGaWVsZE1hcDogdGhpcy5ydW50aW1lRmllbGRNYXAsXG4gICAgICBmaWVsZEF0dHJzOiB0aGlzLmZpZWxkQXR0cnMsXG4gICAgICBhbGxvd05vSW5kZXg6IHRoaXMuYWxsb3dOb0luZGV4LFxuICAgIH07XG4gIH1cblxuICAvLyDilIDilIAgVGl0bGUgY29tcG9zaXRpb24g4pSA4pSAXG4gIHByb3RlY3RlZCBjb21wb3NlVGl0bGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBiYXNlU2VnbWVudHMgPSB0aGlzLmNvbXBvc2VCYXNlU2VnbWVudHMoKTtcbiAgICBjb25zdCBsb2dnZXJTZWdtZW50cyA9IHRoaXMuY29tcG9zZUxvZ2dlckdlbmVyYXRlZFNlZ21lbnRzKCk7XG5cbiAgICBpZiAobG9nZ2VyU2VnbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgYWxsU2VnbWVudHMgPSBbLi4uYmFzZVNlZ21lbnRzLCAuLi5sb2dnZXJTZWdtZW50c107XG4gICAgICByZXR1cm4gYWxsU2VnbWVudHMuam9pbih0aGlzLnNlcGFyYXRvcikgKyB0aGlzLnNlcGFyYXRvciArIFwiKlwiO1xuICAgIH1cblxuICAgIHN3aXRjaCAodGhpcy5tYXRjaE1vZGUpIHtcbiAgICAgIGNhc2UgS2liYW5hSW5kZXhNYXRjaE1vZGUuRVhBQ1Q6XG4gICAgICAgIHJldHVybiBiYXNlU2VnbWVudHNbMF07XG4gICAgICBjYXNlIEtpYmFuYUluZGV4TWF0Y2hNb2RlLlBSRUZJWDoge1xuICAgICAgICBjb25zdCBiYXNlID0gYmFzZVNlZ21lbnRzWzBdO1xuICAgICAgICByZXR1cm4gYmFzZS5lbmRzV2l0aCh0aGlzLnNlcGFyYXRvcilcbiAgICAgICAgICA/IGAke2Jhc2V9KmBcbiAgICAgICAgICA6IGAke2Jhc2V9JHt0aGlzLnNlcGFyYXRvcn0qYDtcbiAgICAgIH1cbiAgICAgIGNhc2UgS2liYW5hSW5kZXhNYXRjaE1vZGUuTE9HR0VSX0dFTkVSQVRFRDpcbiAgICAgICAgaWYgKGJhc2VTZWdtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcHJvcGVydHk6IFwicHJlZml4XCIsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgXCJwcmVmaXggaXMgcmVxdWlyZWQgZm9yIExPR0dFUl9HRU5FUkFURUQgbW9kZSB3aGVuIG5vIGxvZ1BhdHRlcm4gaXMgc2V0XCIsXG4gICAgICAgICAgICAgIGNvbnN0cmFpbnRzOiB7fSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJhc2VTZWdtZW50cy5qb2luKHRoaXMuc2VwYXJhdG9yKSArIHRoaXMuc2VwYXJhdG9yICsgXCIqXCI7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgICBgVW5zdXBwb3J0ZWQgbWF0Y2ggbW9kZTogJHt0aGlzLm1hdGNoTW9kZX1gLFxuICAgICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBjb21wb3NlQmFzZVNlZ21lbnRzKCk6IHN0cmluZ1tdIHtcbiAgICBzd2l0Y2ggKHRoaXMubWF0Y2hNb2RlKSB7XG4gICAgICBjYXNlIEtpYmFuYUluZGV4TWF0Y2hNb2RlLkVYQUNUOlxuICAgICAgICBpZiAoXG4gICAgICAgICAgIXRoaXMuZXhhY3RJbmRleE5hbWUgfHxcbiAgICAgICAgICB0aGlzLmV4YWN0SW5kZXhOYW1lLnRyaW0oKS5sZW5ndGggPT09IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHByb3BlcnR5OiBcImV4YWN0SW5kZXhOYW1lXCIsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgXCJleGFjdEluZGV4TmFtZSBpcyByZXF1aXJlZCBmb3IgRVhBQ1QgbWF0Y2ggbW9kZVwiLFxuICAgICAgICAgICAgICBjb25zdHJhaW50czoge30sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmV4YWN0SW5kZXhOYW1lLmluY2x1ZGVzKFwiKlwiKSkge1xuICAgICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBwcm9wZXJ0eTogXCJleGFjdEluZGV4TmFtZVwiLFxuICAgICAgICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICAgICAgIFwiZXhhY3RJbmRleE5hbWUgbXVzdCBub3QgY29udGFpbiB3aWxkY2FyZHMgKCopIGluIEVYQUNUIG1hdGNoIG1vZGVcIixcbiAgICAgICAgICAgICAgY29uc3RyYWludHM6IHt9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW3RoaXMuZXhhY3RJbmRleE5hbWUudHJpbSgpXTtcbiAgICAgIGNhc2UgS2liYW5hSW5kZXhNYXRjaE1vZGUuUFJFRklYOlxuICAgICAgICBpZiAoIXRoaXMucHJlZml4IHx8IHRoaXMucHJlZml4LnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcHJvcGVydHk6IFwicHJlZml4XCIsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgXCJwcmVmaXggaXMgcmVxdWlyZWQgZm9yIFBSRUZJWCBtYXRjaCBtb2RlXCIsXG4gICAgICAgICAgICAgIGNvbnN0cmFpbnRzOiB7fSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFt0aGlzLnByZWZpeC50cmltKCldO1xuICAgICAgY2FzZSBLaWJhbmFJbmRleE1hdGNoTW9kZS5MT0dHRVJfR0VORVJBVEVEOlxuICAgICAgICByZXR1cm4gdGhpcy5wcmVmaXggJiYgdGhpcy5wcmVmaXgudHJpbSgpLmxlbmd0aCA+IDBcbiAgICAgICAgICA/IFt0aGlzLnByZWZpeC50cmltKCldXG4gICAgICAgICAgOiBbXTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICAgIGBVbnN1cHBvcnRlZCBtYXRjaCBtb2RlOiAke3RoaXMubWF0Y2hNb2RlfWAsXG4gICAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGNvbXBvc2VMb2dnZXJHZW5lcmF0ZWRTZWdtZW50cygpOiBzdHJpbmdbXSB7XG4gICAgaWYgKCF0aGlzLmxvZ1BhdHRlcm4pIHJldHVybiBbXTtcblxuICAgIGlmICghdGhpcy5sb2dQYXlsb2FkKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3BlcnR5OiBcImxvZ1BheWxvYWRcIixcbiAgICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICAgXCJsb2dQYXlsb2FkIGlzIHJlcXVpcmVkIHdoZW4gbG9nUGF0dGVybiBpcyBzZXRcIixcbiAgICAgICAgICBjb25zdHJhaW50czoge30sXG4gICAgICAgIH0sXG4gICAgICBdKTtcbiAgICB9XG5cbiAgICBjb25zdCBkZWZpbml0aW9uID0gY29tcGlsZUxvZ1BhdHRlcm4odGhpcy5sb2dQYXR0ZXJuKTtcbiAgICBjb25zdCBmdWxsUGF5bG9hZCA9IHRoaXMuYnVpbGRGdWxsUGF5bG9hZCh0aGlzLmxvZ1BheWxvYWQpO1xuICAgIGNvbnN0IHJlbmRlcmVkID0gbG9nUGFyYW1ldGVyUmVnaXN0cnkucmVuZGVyKFxuICAgICAgZnVsbFBheWxvYWQsXG4gICAgICBkZWZpbml0aW9uLmtleXMsXG4gICAgKTtcblxuICAgIGNvbnN0IHNlZ21lbnRzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIGRlZmluaXRpb24ua2V5cykge1xuICAgICAgY29uc3QgdmFsdWUgPSByZW5kZXJlZFtrZXldO1xuICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLnRyaW0oKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHNlZ21lbnRzLnB1c2godmFsdWUudHJpbSgpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBzZWdtZW50cy5sZW5ndGggPT09IDAgJiZcbiAgICAgIHRoaXMubWF0Y2hNb2RlID09PSBLaWJhbmFJbmRleE1hdGNoTW9kZS5MT0dHRVJfR0VORVJBVEVEXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3BlcnR5OiBcImxvZ1BhdHRlcm5cIixcbiAgICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICAgXCJObyBzZWdtZW50cyB3ZXJlIHJlbmRlcmVkIGZyb20gdGhlIHByb3ZpZGVkIGxvZ1BhdHRlcm4gYW5kIHBheWxvYWRcIixcbiAgICAgICAgICBjb25zdHJhaW50czoge30sXG4gICAgICAgIH0sXG4gICAgICBdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2VnbWVudHM7XG4gIH1cblxuICAvKipcbiAgICogRmlsbCBtaXNzaW5nIExvZ1BhcmFtZXRlclBheWxvYWQgZmllbGRzIHdpdGggc2Vuc2libGUgZGVmYXVsdHNcbiAgICogc28gcGFydGlhbCBwYXlsb2FkcyBjYW4gYmUgYWNjZXB0ZWQgZnJvbSB0aGUgY2FsbGVyLlxuICAgKi9cbiAgcHJvdGVjdGVkIGJ1aWxkRnVsbFBheWxvYWQoXG4gICAgcGFydGlhbDogUGFydGlhbDxMb2dQYXJhbWV0ZXJQYXlsb2FkPixcbiAgKTogTG9nUGFyYW1ldGVyUGF5bG9hZCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbmZpZzogcGFydGlhbC5jb25maWcgPz8gKHt9IGFzIGFueSksXG4gICAgICBsZXZlbDogcGFydGlhbC5sZXZlbCA/PyAoXCJpbmZvXCIgYXMgYW55KSxcbiAgICAgIGNvbnRleHQ6IHBhcnRpYWwuY29udGV4dCA/PyBbXSxcbiAgICAgIHRpbWVzdGFtcDogcGFydGlhbC50aW1lc3RhbXAgPz8gbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgYXBwOiBwYXJ0aWFsLmFwcCA/PyBcIlwiLFxuICAgICAgc2VwYXJhdG9yOiBwYXJ0aWFsLnNlcGFyYXRvciA/PyB0aGlzLnNlcGFyYXRvcixcbiAgICAgIGNvcnJlbGF0aW9uSWQ6IHBhcnRpYWwuY29ycmVsYXRpb25JZCA/PyBcIlwiLFxuICAgICAgcmF3TWVzc2FnZTogcGFydGlhbC5yYXdNZXNzYWdlID8/IFwiXCIsXG4gICAgICBmaWx0ZXJlZE1lc3NhZ2U6IHBhcnRpYWwuZmlsdGVyZWRNZXNzYWdlID8/IFwiXCIsXG4gICAgICBtZXRhOiBwYXJ0aWFsLm1ldGEsXG4gICAgICBtZXRhU3RyaW5nOiBwYXJ0aWFsLm1ldGFTdHJpbmcsXG4gICAgICBzdGFjazogcGFydGlhbC5zdGFjayxcbiAgICAgIHN0YWNrTGFiZWw6IHBhcnRpYWwuc3RhY2tMYWJlbCxcbiAgICAgIGFwcGx5VGhlbWU6XG4gICAgICAgIHBhcnRpYWwuYXBwbHlUaGVtZSA/P1xuICAgICAgICAoKHZhbHVlOiBzdHJpbmcpID0+IHZhbHVlKSxcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
329
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiS2liYW5hSW5kZXhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiS2liYW5hSW5kZXhCdWlsZGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLElBQUksVUFBVSxHQUFHLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUk7SUFDakYsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM3SCxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsSUFBSSxPQUFPLE9BQU8sQ0FBQyxRQUFRLEtBQUssVUFBVTtRQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDOztRQUMxSCxLQUFLLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQUUsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxF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QztDQUNuQyxFQUFFLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxlQUFlLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUMxRCxVQUFVLENBQUM7SUFDUCxJQUFBLGlCQUFJLEdBQUU7SUFDTixVQUFVLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQztDQUNwQyxFQUFFLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzVELFVBQVUsQ0FBQztJQUNQLElBQUEsaUJBQUksR0FBRTtJQUNOLFVBQVUsQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDO0NBQ3BDLEVBQUUsa0JBQWtCLENBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3ZELFVBQVUsQ0FBQztJQUNQLElBQUEsaUJBQUksR0FBRTtJQUNOLFVBQVUsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDO0NBQ3JDLEVBQUUsa0JBQWtCLENBQUMsU0FBUyxFQUFFLGNBQWMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3pELGsyckJBQWsyckIiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19kZWNvcmF0ZSA9ICh0aGlzICYmIHRoaXMuX19kZWNvcmF0ZSkgfHwgZnVuY3Rpb24gKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xuICAgIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcbn07XG52YXIgX19tZXRhZGF0YSA9ICh0aGlzICYmIHRoaXMuX19tZXRhZGF0YSkgfHwgZnVuY3Rpb24gKGssIHYpIHtcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEoaywgdik7XG59O1xuLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9raWJhbmEvYnVpbGRlcnMvS2liYW5hSW5kZXhCdWlsZGVyXG4gKiBAc3VtbWFyeSBGbHVlbnQgYnVpbGRlciBmb3IgS2liYW5hIGluZGV4IHBhdHRlcm4gKGRhdGEgdmlldykgY29uZmlndXJhdGlvbnMuXG4gKiBAZGVzY3JpcHRpb24gSW1wbGVtZW50cyB0aGUgcHJvamVjdCBCdWlsZGVyIFBhdHRlcm4gKGNvbnN0aXR1dGlvbiDCpzIpOlxuICogZXh0ZW5kcyBgTW9kZWxgLCB1c2VzIGBAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25gIGRlY29yYXRvcnMsIGZsdWVudFxuICogYHNldFgoKTogdGhpc2AgbWV0aG9kcywgYW5kIGEgdGVybWluYWwgYGJ1aWxkKClgIHRoYXQgdmFsaWRhdGVzIHZpYVxuICogYGhhc0Vycm9ycygpYCBhbmQgcmV0dXJucyBhIGBLaWJhbmFEYXRhVmlld0NvbmZpZ2AuXG4gKlxuICogU3VwcG9ydHMgdGhyZWUgYmFzZSBtYXRjaGluZyBtb2RlczpcbiAqIC0gYEVYQUNUYCDigJQgc2luZ2xlLCBmdWxseS1xdWFsaWZpZWQgaW5kZXggbmFtZSAobm8gd2lsZGNhcmRzKS5cbiAqIC0gYFBSRUZJWGAg4oCUIHdpbGRjYXJkIHBhdHRlcm4gKGUuZy4gYGZpbGViZWF0LXBsYS1kZW1vLSpgKS5cbiAqIC0gYExPR0dFUl9HRU5FUkFURURgIOKAlCBkZXJpdmVzIGluZGV4IG5hbWUgc2VnbWVudHMgZnJvbSBhIGxvZyBwYXR0ZXJuXG4gKiAgIGNvbXBpbGVkIHZpYSBgY29tcGlsZUxvZ1BhdHRlcm4oKWAgYW5kIHJlbmRlcmVkIHZpYVxuICogICBgbG9nUGFyYW1ldGVyUmVnaXN0cnkucmVuZGVyKClgLlxuICpcbiAqICoqQ29tcG91bmRpbmc6KiogTG9nZ2VyLWdlbmVyYXRlZCBzZWdtZW50cyBjYW4gYmUgY29tcG91bmRlZCB3aXRoIEFOWVxuICogYmFzZSBtYXRjaGluZyBtb2RlLiBXaGVuIGBsb2dQYXR0ZXJuYCArIGBsb2dQYXlsb2FkYCBhcmUgcHJvdmlkZWRcbiAqIGFsb25nc2lkZSBFWEFDVCBvciBQUkVGSVggbW9kZSwgdGhlIHJlbmRlcmVkIHNlZ21lbnRzIGFyZSBhcHBlbmRlZCB0b1xuICogdGhlIGJhc2UgaW5kZXggbmFtZSBhbmQgYSB0cmFpbGluZyBgKmAgaXMgYWRkZWQuXG4gKi9cbmltcG9ydCB7IGxpc3QsIE1vZGVsLCBvcHRpb24sIHJlcXVpcmVkLCBtaW5sZW5ndGgsIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgSW50ZXJuYWxFcnJvciwgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBwcm9wIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5pbXBvcnQgeyBjb21waWxlTG9nUGF0dGVybiwgbG9nUGFyYW1ldGVyUmVnaXN0cnksIH0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nXCI7XG5pbXBvcnQgeyBLaWJhbmFJbmRleE1hdGNoTW9kZSB9IGZyb20gXCIuLy4uL3R5cGVzLmpzXCI7XG5leHBvcnQgY2xhc3MgS2liYW5hSW5kZXhCdWlsZGVyIGV4dGVuZHMgTW9kZWwge1xuICAgIGNvbnN0cnVjdG9yKGFyZykge1xuICAgICAgICBzdXBlcihhcmcpO1xuICAgICAgICAvLyDilIDilIAgTWF0Y2hpbmcgc3RyYXRlZ3kg4pSA4pSAXG4gICAgICAgIHRoaXMubWF0Y2hNb2RlID0gS2liYW5hSW5kZXhNYXRjaE1vZGUuUFJFRklYO1xuICAgICAgICAvLyDilIDilIAgU2VwYXJhdG9yIOKUgOKUgFxuICAgICAgICB0aGlzLnNlcGFyYXRvciA9IFwiLVwiO1xuICAgICAgICAvLyDilIDilIAgRGF0YSBWaWV3IGZpZWxkcyAobWFwIHRvIEtpYmFuYURhdGFWaWV3Q29uZmlnKSDilIDilIBcbiAgICAgICAgdGhpcy5pZCA9IFwiXCI7XG4gICAgICAgIHRoaXMubmFtZSA9IFwiXCI7XG4gICAgICAgIE1vZGVsLmZyb21Nb2RlbCh0aGlzLCBhcmcpO1xuICAgIH1cbiAgICAvLyDilIDilIAgRmx1ZW50IHNldHRlcnM6IG1hdGNoaW5nIHN0cmF0ZWd5IOKUgOKUgFxuICAgIHNldE1hdGNoTW9kZShtb2RlKSB7XG4gICAgICAgIHRoaXMubWF0Y2hNb2RlID0gbW9kZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIHNldFByZWZpeChwcmVmaXgpIHtcbiAgICAgICAgdGhpcy5wcmVmaXggPSBwcmVmaXg7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBzZXRFeGFjdEluZGV4TmFtZShuYW1lKSB7XG4gICAgICAgIHRoaXMuZXhhY3RJbmRleE5hbWUgPSBuYW1lO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgc2V0TG9nUGF0dGVybihwYXR0ZXJuKSB7XG4gICAgICAgIHRoaXMubG9nUGF0dGVybiA9IHBhdHRlcm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBzZXRMb2dQYXlsb2FkKHBheWxvYWQpIHtcbiAgICAgICAgdGhpcy5sb2dQYXlsb2FkID0gcGF5bG9hZDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIHNldFNlcGFyYXRvcihzZXApIHtcbiAgICAgICAgdGhpcy5zZXBhcmF0b3IgPSBzZXA7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvLyDilIDilIAgRmx1ZW50IHNldHRlcnM6IGRhdGEgdmlldyBmaWVsZHMg4pSA4pSAXG4gICAgc2V0SWQoaWQpIHtcbiAgICAgICAgdGhpcy5pZCA9IGlkO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgc2V0TmFtZShuYW1lKSB7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBzZXRUaW1lRmllbGROYW1lKGZpZWxkKSB7XG4gICAgICAgIHRoaXMudGltZUZpZWxkTmFtZSA9IGZpZWxkO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgc2V0TmFtZXNwYWNlcyhucykge1xuICAgICAgICB0aGlzLm5hbWVzcGFjZXMgPSBucztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIHNldFNvdXJjZUZpbHRlcnMoZmlsdGVycykge1xuICAgICAgICB0aGlzLnNvdXJjZUZpbHRlcnMgPSBmaWx0ZXJzO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgc2V0UnVudGltZUZpZWxkTWFwKG1hcCkge1xuICAgICAgICB0aGlzLnJ1bnRpbWVGaWVsZE1hcCA9IG1hcDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIHNldEZpZWxkQXR0cnMoYXR0cnMpIHtcbiAgICAgICAgdGhpcy5maWVsZEF0dHJzID0gYXR0cnM7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBzZXRBbGxvd05vSW5kZXgoYWxsb3cpIHtcbiAgICAgICAgdGhpcy5hbGxvd05vSW5kZXggPSBhbGxvdztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8vIOKUgOKUgCBCdWlsZCDilIDilIBcbiAgICBidWlsZCgpIHtcbiAgICAgICAgY29uc3QgZXJycyA9IHRoaXMuaGFzRXJyb3JzKCk7XG4gICAgICAgIGlmIChlcnJzKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihlcnJzKTtcbiAgICAgICAgY29uc3QgdGl0bGUgPSB0aGlzLmNvbXBvc2VUaXRsZSgpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICAgICAgICB0aXRsZSxcbiAgICAgICAgICAgIHRpbWVGaWVsZE5hbWU6IHRoaXMudGltZUZpZWxkTmFtZSxcbiAgICAgICAgICAgIG5hbWVzcGFjZXM6IHRoaXMubmFtZXNwYWNlcyxcbiAgICAgICAgICAgIHNvdXJjZUZpbHRlcnM6IHRoaXMuc291cmNlRmlsdGVycyxcbiAgICAgICAgICAgIHJ1bnRpbWVGaWVsZE1hcDogdGhpcy5ydW50aW1lRmllbGRNYXAsXG4gICAgICAgICAgICBmaWVsZEF0dHJzOiB0aGlzLmZpZWxkQXR0cnMsXG4gICAgICAgICAgICBhbGxvd05vSW5kZXg6IHRoaXMuYWxsb3dOb0luZGV4LFxuICAgICAgICB9O1xuICAgIH1cbiAgICAvLyDilIDilIAgVGl0bGUgY29tcG9zaXRpb24g4pSA4pSAXG4gICAgY29tcG9zZVRpdGxlKCkge1xuICAgICAgICBjb25zdCBiYXNlU2VnbWVudHMgPSB0aGlzLmNvbXBvc2VCYXNlU2VnbWVudHMoKTtcbiAgICAgICAgY29uc3QgbG9nZ2VyU2VnbWVudHMgPSB0aGlzLmNvbXBvc2VMb2dnZXJHZW5lcmF0ZWRTZWdtZW50cygpO1xuICAgICAgICBpZiAobG9nZ2VyU2VnbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgYWxsU2VnbWVudHMgPSBbLi4uYmFzZVNlZ21lbnRzLCAuLi5sb2dnZXJTZWdtZW50c107XG4gICAgICAgICAgICByZXR1cm4gYWxsU2VnbWVudHMuam9pbih0aGlzLnNlcGFyYXRvcikgKyB0aGlzLnNlcGFyYXRvciArIFwiKlwiO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAodGhpcy5tYXRjaE1vZGUpIHtcbiAgICAgICAgICAgIGNhc2UgS2liYW5hSW5kZXhNYXRjaE1vZGUuRVhBQ1Q6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGJhc2VTZWdtZW50c1swXTtcbiAgICAgICAgICAgIGNhc2UgS2liYW5hSW5kZXhNYXRjaE1vZGUuUFJFRklYOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmFzZSA9IGJhc2VTZWdtZW50c1swXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYmFzZS5lbmRzV2l0aCh0aGlzLnNlcGFyYXRvcilcbiAgICAgICAgICAgICAgICAgICAgPyBgJHtiYXNlfSpgXG4gICAgICAgICAgICAgICAgICAgIDogYCR7YmFzZX0ke3RoaXMuc2VwYXJhdG9yfSpgO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLaWJhbmFJbmRleE1hdGNoTW9kZS5MT0dHRVJfR0VORVJBVEVEOlxuICAgICAgICAgICAgICAgIGlmIChiYXNlU2VnbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcInByZWZpeFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IFwicHJlZml4IGlzIHJlcXVpcmVkIGZvciBMT0dHRVJfR0VORVJBVEVEIG1vZGUgd2hlbiBubyBsb2dQYXR0ZXJuIGlzIHNldFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRzOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYmFzZVNlZ21lbnRzLmpvaW4odGhpcy5zZXBhcmF0b3IpICsgdGhpcy5zZXBhcmF0b3IgKyBcIipcIjtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYFVuc3VwcG9ydGVkIG1hdGNoIG1vZGU6ICR7dGhpcy5tYXRjaE1vZGV9YCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29tcG9zZUJhc2VTZWdtZW50cygpIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLm1hdGNoTW9kZSkge1xuICAgICAgICAgICAgY2FzZSBLaWJhbmFJbmRleE1hdGNoTW9kZS5FWEFDVDpcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZXhhY3RJbmRleE5hbWUgfHxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5leGFjdEluZGV4TmFtZS50cmltKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcImV4YWN0SW5kZXhOYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogXCJleGFjdEluZGV4TmFtZSBpcyByZXF1aXJlZCBmb3IgRVhBQ1QgbWF0Y2ggbW9kZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRzOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5leGFjdEluZGV4TmFtZS5pbmNsdWRlcyhcIipcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IFwiZXhhY3RJbmRleE5hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBcImV4YWN0SW5kZXhOYW1lIG11c3Qgbm90IGNvbnRhaW4gd2lsZGNhcmRzICgqKSBpbiBFWEFDVCBtYXRjaCBtb2RlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RyYWludHM6IHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBbdGhpcy5leGFjdEluZGV4TmFtZS50cmltKCldO1xuICAgICAgICAgICAgY2FzZSBLaWJhbmFJbmRleE1hdGNoTW9kZS5QUkVGSVg6XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnByZWZpeCB8fCB0aGlzLnByZWZpeC50cmltKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiBcInByZWZpeFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IFwicHJlZml4IGlzIHJlcXVpcmVkIGZvciBQUkVGSVggbWF0Y2ggbW9kZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRzOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gW3RoaXMucHJlZml4LnRyaW0oKV07XG4gICAgICAgICAgICBjYXNlIEtpYmFuYUluZGV4TWF0Y2hNb2RlLkxPR0dFUl9HRU5FUkFURUQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJlZml4ICYmIHRoaXMucHJlZml4LnRyaW0oKS5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgICAgID8gW3RoaXMucHJlZml4LnRyaW0oKV1cbiAgICAgICAgICAgICAgICAgICAgOiBbXTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYFVuc3VwcG9ydGVkIG1hdGNoIG1vZGU6ICR7dGhpcy5tYXRjaE1vZGV9YCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29tcG9zZUxvZ2dlckdlbmVyYXRlZFNlZ21lbnRzKCkge1xuICAgICAgICBpZiAoIXRoaXMubG9nUGF0dGVybilcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgaWYgKCF0aGlzLmxvZ1BheWxvYWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IFwibG9nUGF5bG9hZFwiLFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBcImxvZ1BheWxvYWQgaXMgcmVxdWlyZWQgd2hlbiBsb2dQYXR0ZXJuIGlzIHNldFwiLFxuICAgICAgICAgICAgICAgICAgICBjb25zdHJhaW50czoge30sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRlZmluaXRpb24gPSBjb21waWxlTG9nUGF0dGVybih0aGlzLmxvZ1BhdHRlcm4pO1xuICAgICAgICBjb25zdCBmdWxsUGF5bG9hZCA9IHRoaXMuYnVpbGRGdWxsUGF5bG9hZCh0aGlzLmxvZ1BheWxvYWQpO1xuICAgICAgICBjb25zdCByZW5kZXJlZCA9IGxvZ1BhcmFtZXRlclJlZ2lzdHJ5LnJlbmRlcihmdWxsUGF5bG9hZCwgZGVmaW5pdGlvbi5rZXlzKTtcbiAgICAgICAgY29uc3Qgc2VnbWVudHMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgZGVmaW5pdGlvbi5rZXlzKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHJlbmRlcmVkW2tleV07XG4gICAgICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUudHJpbSgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBzZWdtZW50cy5wdXNoKHZhbHVlLnRyaW0oKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNlZ21lbnRzLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAgICAgdGhpcy5tYXRjaE1vZGUgPT09IEtpYmFuYUluZGV4TWF0Y2hNb2RlLkxPR0dFUl9HRU5FUkFURUQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IFwibG9nUGF0dGVyblwiLFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBcIk5vIHNlZ21lbnRzIHdlcmUgcmVuZGVyZWQgZnJvbSB0aGUgcHJvdmlkZWQgbG9nUGF0dGVybiBhbmQgcGF5bG9hZFwiLFxuICAgICAgICAgICAgICAgICAgICBjb25zdHJhaW50czoge30sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZWdtZW50cztcbiAgICB9XG4gICAgLyoqXG4gICAgICogRmlsbCBtaXNzaW5nIExvZ1BhcmFtZXRlclBheWxvYWQgZmllbGRzIHdpdGggc2Vuc2libGUgZGVmYXVsdHNcbiAgICAgKiBzbyBwYXJ0aWFsIHBheWxvYWRzIGNhbiBiZSBhY2NlcHRlZCBmcm9tIHRoZSBjYWxsZXIuXG4gICAgICovXG4gICAgYnVpbGRGdWxsUGF5bG9hZChwYXJ0aWFsKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb25maWc6IHBhcnRpYWwuY29uZmlnID8/IHt9LFxuICAgICAgICAgICAgbGV2ZWw6IHBhcnRpYWwubGV2ZWwgPz8gXCJpbmZvXCIsXG4gICAgICAgICAgICBjb250ZXh0OiBwYXJ0aWFsLmNvbnRleHQgPz8gW10sXG4gICAgICAgICAgICB0aW1lc3RhbXA6IHBhcnRpYWwudGltZXN0YW1wID8/IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgICAgIGFwcDogcGFydGlhbC5hcHAgPz8gXCJcIixcbiAgICAgICAgICAgIHNlcGFyYXRvcjogcGFydGlhbC5zZXBhcmF0b3IgPz8gdGhpcy5zZXBhcmF0b3IsXG4gICAgICAgICAgICBjb3JyZWxhdGlvbklkOiBwYXJ0aWFsLmNvcnJlbGF0aW9uSWQgPz8gXCJcIixcbiAgICAgICAgICAgIHJhd01lc3NhZ2U6IHBhcnRpYWwucmF3TWVzc2FnZSA/PyBcIlwiLFxuICAgICAgICAgICAgZmlsdGVyZWRNZXNzYWdlOiBwYXJ0aWFsLmZpbHRlcmVkTWVzc2FnZSA/PyBcIlwiLFxuICAgICAgICAgICAgbWV0YTogcGFydGlhbC5tZXRhLFxuICAgICAgICAgICAgbWV0YVN0cmluZzogcGFydGlhbC5tZXRhU3RyaW5nLFxuICAgICAgICAgICAgc3RhY2s6IHBhcnRpYWwuc3RhY2ssXG4gICAgICAgICAgICBzdGFja0xhYmVsOiBwYXJ0aWFsLnN0YWNrTGFiZWwsXG4gICAgICAgICAgICBhcHBseVRoZW1lOiBwYXJ0aWFsLmFwcGx5VGhlbWUgPz9cbiAgICAgICAgICAgICAgICAoKHZhbHVlKSA9PiB2YWx1ZSksXG4gICAgICAgIH07XG4gICAgfVxufVxuX19kZWNvcmF0ZShbXG4gICAgcmVxdWlyZWQoKSxcbiAgICBvcHRpb24oS2liYW5hSW5kZXhNYXRjaE1vZGUpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBTdHJpbmcpXG5dLCBLaWJhbmFJbmRleEJ1aWxkZXIucHJvdG90eXBlLCBcIm1hdGNoTW9kZVwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgcHJvcCgpLFxuICAgIG1pbmxlbmd0aCgxKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgU3RyaW5nKVxuXSwgS2liYW5hSW5kZXhCdWlsZGVyLnByb3RvdHlwZSwgXCJwcmVmaXhcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIHByb3AoKSxcbiAgICBtaW5sZW5ndGgoMSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIFN0cmluZylcbl0sIEtpYmFuYUluZGV4QnVpbGRlci5wcm90b3R5cGUsIFwiZXhhY3RJbmRleE5hbWVcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIHByb3AoKSxcbiAgICBtaW5sZW5ndGgoMSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIFN0cmluZylcbl0sIEtpYmFuYUluZGV4QnVpbGRlci5wcm90b3R5cGUsIFwibG9nUGF0dGVyblwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgcHJvcCgpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBPYmplY3QpXG5dLCBLaWJhbmFJbmRleEJ1aWxkZXIucHJvdG90eXBlLCBcImxvZ1BheWxvYWRcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIHByb3AoKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgU3RyaW5nKVxuXSwgS2liYW5hSW5kZXhCdWlsZGVyLnByb3RvdHlwZSwgXCJzZXBhcmF0b3JcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIHJlcXVpcmVkKCksXG4gICAgbWlubGVuZ3RoKDEpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBTdHJpbmcpXG5dLCBLaWJhbmFJbmRleEJ1aWxkZXIucHJvdG90eXBlLCBcImlkXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICByZXF1aXJlZCgpLFxuICAgIG1pbmxlbmd0aCgxKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgU3RyaW5nKVxuXSwgS2liYW5hSW5kZXhCdWlsZGVyLnByb3RvdHlwZSwgXCJuYW1lXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICBwcm9wKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIFN0cmluZylcbl0sIEtpYmFuYUluZGV4QnVpbGRlci5wcm90b3R5cGUsIFwidGltZUZpZWxkTmFtZVwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgcHJvcCgpLFxuICAgIGxpc3QoKCkgPT4gU3RyaW5nKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgQXJyYXkpXG5dLCBLaWJhbmFJbmRleEJ1aWxkZXIucHJvdG90eXBlLCBcIm5hbWVzcGFjZXNcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIHByb3AoKSxcbiAgICBsaXN0KCgpID0+IE9iamVjdCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIEFycmF5KVxuXSwgS2liYW5hSW5kZXhCdWlsZGVyLnByb3RvdHlwZSwgXCJzb3VyY2VGaWx0ZXJzXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICBwcm9wKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIE9iamVjdClcbl0sIEtpYmFuYUluZGV4QnVpbGRlci5wcm90b3R5cGUsIFwicnVudGltZUZpZWxkTWFwXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICBwcm9wKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIE9iamVjdClcbl0sIEtpYmFuYUluZGV4QnVpbGRlci5wcm90b3R5cGUsIFwiZmllbGRBdHRyc1wiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgcHJvcCgpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBCb29sZWFuKVxuXSwgS2liYW5hSW5kZXhCdWlsZGVyLnByb3RvdHlwZSwgXCJhbGxvd05vSW5kZXhcIiwgdm9pZCAwKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVMybGlZVzVoU1c1a1pYaENkV2xzWkdWeUxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZMaTR2TGk0dmMzSmpMMnRwWW1GdVlTOWlkV2xzWkdWeWN5OUxhV0poYm1GSmJtUmxlRUoxYVd4a1pYSXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3T3pzN096czdPMEZCUVVFN096czdPenM3T3pzN096czdPenM3T3pzN1IwRnRRa2M3UVVGRFNDeFBRVUZQTEVWQlEwd3NTVUZCU1N4RlFVTktMRXRCUVVzc1JVRkZUQ3hOUVVGTkxFVkJRMDRzVVVGQlVTeEZRVU5TTEZOQlFWTXNSMEZEVml4TlFVRk5MR2REUVVGblF5eERRVUZETzBGQlEzaERMRTlCUVU4c1JVRkJSU3hoUVVGaExFVkJRVVVzWlVGQlpTeEZRVUZGTEUxQlFVMHNlVUpCUVhsQ0xFTkJRVU03UVVGRGVrVXNUMEZCVHl4RlFVRkZMRWxCUVVrc1JVRkJSU3hOUVVGTkxITkNRVUZ6UWl4RFFVRkRPMEZCUXpWRExFOUJRVThzUlVGRFRDeHBRa0ZCYVVJc1JVRkRha0lzYjBKQlFXOUNMRWRCUlhKQ0xFMUJRVTBzYlVKQlFXMUNMRU5CUVVNN1FVRkZNMElzVDBGQlR5eEZRVUYzUWl4dlFrRkJiMElzUlVGQlJTeHpRa0ZCYVVJN1FVRkZkRVVzVFVGQlRTeFBRVUZQTEd0Q1FVRnRRaXhUUVVGUkxFdEJRVXM3U1VGM1JETkRMRmxCUVZrc1IwRkJhME03VVVGRE5VTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJlRVJpTERCQ1FVRXdRanRSUVVjeFFpeGpRVUZUTEVkQlFYbENMRzlDUVVGdlFpeERRVUZETEUxQlFVMHNRMEZCUXp0UlFXMUNPVVFzYTBKQlFXdENPMUZCUld4Q0xHTkJRVk1zUjBGQlZ5eEhRVUZITEVOQlFVTTdVVUZGZUVJc2RVUkJRWFZFTzFGQlIzWkVMRTlCUVVVc1IwRkJWeXhGUVVGRkxFTkJRVU03VVVGSmFFSXNVMEZCU1N4SFFVRlhMRVZCUVVVc1EwRkJRenRSUVhkQ2FFSXNTMEZCU3l4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZETjBJc1EwRkJRenRKUVVWRUxEQkRRVUV3UXp0SlFVTXhReXhaUVVGWkxFTkJRVU1zU1VGQk1FSTdVVUZEY2tNc1NVRkJTU3hEUVVGRExGTkJRVk1zUjBGQlJ5eEpRVUZKTEVOQlFVTTdVVUZEZEVJc1QwRkJUeXhKUVVGSkxFTkJRVU03U1VGRFpDeERRVUZETzBsQlJVUXNVMEZCVXl4RFFVRkRMRTFCUVdNN1VVRkRkRUlzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4TlFVRk5MRU5CUVVNN1VVRkRja0lzVDBGQlR5eEpRVUZKTEVOQlFVTTdTVUZEWkN4RFFVRkRPMGxCUlVRc2FVSkJRV2xDTEVOQlFVTXNTVUZCV1R0UlFVTTFRaXhKUVVGSkxFTkJRVU1zWTBGQll5eEhRVUZITEVsQlFVa3NRMEZCUXp0UlFVTXpRaXhQUVVGUExFbEJRVWtzUTBGQlF6dEpRVU5rTEVOQlFVTTdTVUZGUkN4aFFVRmhMRU5CUVVNc1QwRkJaVHRSUVVNelFpeEpRVUZKTEVOQlFVTXNWVUZCVlN4SFFVRkhMRTlCUVU4c1EwRkJRenRSUVVNeFFpeFBRVUZQTEVsQlFVa3NRMEZCUXp0SlFVTmtMRU5CUVVNN1NVRkZSQ3hoUVVGaExFTkJRVU1zVDBGQmNVTTdVVUZEYWtRc1NVRkJTU3hEUVVGRExGVkJRVlVzUjBGQlJ5eFBRVUZQTEVOQlFVTTdVVUZETVVJc1QwRkJUeXhKUVVGSkxFTkJRVU03U1VGRFpDeERRVUZETzBsQlJVUXNXVUZCV1N4RFFVRkRMRWRCUVZjN1VVRkRkRUlzU1VGQlNTeERRVUZETEZOQlFWTXNSMEZCUnl4SFFVRkhMRU5CUVVNN1VVRkRja0lzVDBGQlR5eEpRVUZKTEVOQlFVTTdTVUZEWkN4RFFVRkRPMGxCUlVRc2VVTkJRWGxETzBsQlEzcERMRXRCUVVzc1EwRkJReXhGUVVGVk8xRkJRMlFzU1VGQlNTeERRVUZETEVWQlFVVXNSMEZCUnl4RlFVRkZMRU5CUVVNN1VVRkRZaXhQUVVGUExFbEJRVWtzUTBGQlF6dEpRVU5rTEVOQlFVTTdTVUZGUkN4UFFVRlBMRU5CUVVNc1NVRkJXVHRSUVVOc1FpeEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVOcVFpeFBRVUZQTEVsQlFVa3NRMEZCUXp0SlFVTmtMRU5CUVVNN1NVRkZSQ3huUWtGQlowSXNRMEZCUXl4TFFVRmhPMUZCUXpWQ0xFbEJRVWtzUTBGQlF5eGhRVUZoTEVkQlFVY3NTMEZCU3l4RFFVRkRPMUZCUXpOQ0xFOUJRVThzU1VGQlNTeERRVUZETzBsQlEyUXNRMEZCUXp0SlFVVkVMR0ZCUVdFc1EwRkJReXhGUVVGWk8xRkJRM2hDTEVsQlFVa3NRMEZCUXl4VlFVRlZMRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJRM0pDTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJRc1EwRkJRenRKUVVWRUxHZENRVUZuUWl4RFFVTmtMRTlCUVdsRE8xRkJSV3BETEVsQlFVa3NRMEZCUXl4aFFVRmhMRWRCUVVjc1QwRkJUeXhEUVVGRE8xRkJRemRDTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJRc1EwRkJRenRKUVVWRUxHdENRVUZyUWl4RFFVRkRMRWRCUVRSQ08xRkJRemRETEVsQlFVa3NRMEZCUXl4bFFVRmxMRWRCUVVjc1IwRkJSeXhEUVVGRE8xRkJRek5DTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJRc1EwRkJRenRKUVVWRUxHRkJRV0VzUTBGQlF5eExRVUU0UWp0UlFVTXhReXhKUVVGSkxFTkJRVU1zVlVGQlZTeEhRVUZITEV0QlFVc3NRMEZCUXp0UlFVTjRRaXhQUVVGUExFbEJRVWtzUTBGQlF6dEpRVU5rTEVOQlFVTTdTVUZGUkN4bFFVRmxMRU5CUVVNc1MwRkJZenRSUVVNMVFpeEpRVUZKTEVOQlFVTXNXVUZCV1N4SFFVRkhMRXRCUVVzc1EwRkJRenRSUVVNeFFpeFBRVUZQTEVsQlFVa3NRMEZCUXp0SlFVTmtMRU5CUVVNN1NVRkZSQ3hqUVVGak8wbEJRMlFzUzBGQlN6dFJRVU5JTEUxQlFVMHNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhUUVVGVExFVkJRVVVzUTBGQlF6dFJRVU01UWl4SlFVRkpMRWxCUVVrN1dVRkJSU3hOUVVGTkxFbEJRVWtzWlVGQlpTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUlRGRExFMUJRVTBzUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4WlFVRlpMRVZCUVVVc1EwRkJRenRSUVVOc1F5eFBRVUZQTzFsQlEwd3NSVUZCUlN4RlFVRkZMRWxCUVVrc1EwRkJReXhGUVVGRk8xbEJRMWdzU1VGQlNTeEZRVUZGTEVsQlFVa3NRMEZCUXl4SlFVRkpPMWxCUTJZc1MwRkJTenRaUVVOTUxHRkJRV0VzUlVGQlJTeEpRVUZKTEVOQlFVTXNZVUZCWVR0WlFVTnFReXhWUVVGVkxFVkJRVVVzU1VGQlNTeERRVUZETEZWQlFWVTdXVUZETTBJc1lVRkJZU3hGUVVGRkxFbEJRVWtzUTBGQlF5eGhRVUZoTzFsQlEycERMR1ZCUVdVc1JVRkJSU3hKUVVGSkxFTkJRVU1zWlVGQlpUdFpRVU55UXl4VlFVRlZMRVZCUVVVc1NVRkJTU3hEUVVGRExGVkJRVlU3V1VGRE0wSXNXVUZCV1N4RlFVRkZMRWxCUVVrc1EwRkJReXhaUVVGWk8xTkJRMmhETEVOQlFVTTdTVUZEU2l4RFFVRkRPMGxCUlVRc01FSkJRVEJDTzBsQlEyaENMRmxCUVZrN1VVRkRjRUlzVFVGQlRTeFpRVUZaTEVkQlFVY3NTVUZCU1N4RFFVRkRMRzFDUVVGdFFpeEZRVUZGTEVOQlFVTTdVVUZEYUVRc1RVRkJUU3hqUVVGakxFZEJRVWNzU1VGQlNTeERRVUZETERoQ1FVRTRRaXhGUVVGRkxFTkJRVU03VVVGRk4wUXNTVUZCU1N4alFVRmpMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETzFsQlF6bENMRTFCUVUwc1YwRkJWeXhIUVVGSExFTkJRVU1zUjBGQlJ5eFpRVUZaTEVWQlFVVXNSMEZCUnl4alFVRmpMRU5CUVVNc1EwRkJRenRaUVVONlJDeFBRVUZQTEZkQlFWY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4VFFVRlRMRWRCUVVjc1IwRkJSeXhEUVVGRE8xRkJRMnBGTEVOQlFVTTdVVUZGUkN4UlFVRlJMRWxCUVVrc1EwRkJReXhUUVVGVExFVkJRVVVzUTBGQlF6dFpRVU4yUWl4TFFVRkxMRzlDUVVGdlFpeERRVUZETEV0QlFVczdaMEpCUXpkQ0xFOUJRVThzV1VGQldTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNwQ0xFdEJRVXNzYjBKQlFXOUNMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZEYWtNc1RVRkJUU3hKUVVGSkxFZEJRVWNzV1VGQldTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVNM1FpeFBRVUZQTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF6dHZRa0ZEYkVNc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeEhRVUZITzI5Q1FVTmFMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVMEZCVXl4SFFVRkhMRU5CUVVNN1dVRkRiRU1zUTBGQlF6dFpRVU5FTEV0QlFVc3NiMEpCUVc5Q0xFTkJRVU1zWjBKQlFXZENPMmRDUVVONFF5eEpRVUZKTEZsQlFWa3NRMEZCUXl4TlFVRk5MRXRCUVVzc1EwRkJReXhGUVVGRkxFTkJRVU03YjBKQlF6bENMRTFCUVUwc1NVRkJTU3hsUVVGbExFTkJRVU03ZDBKQlEzaENPelJDUVVORkxGRkJRVkVzUlVGQlJTeFJRVUZST3pSQ1FVTnNRaXhQUVVGUExFVkJRMHdzZDBWQlFYZEZPelJDUVVNeFJTeFhRVUZYTEVWQlFVVXNSVUZCUlR0NVFrRkRhRUk3Y1VKQlEwWXNRMEZCUXl4RFFVRkRPMmRDUVVOTUxFTkJRVU03WjBKQlEwUXNUMEZCVHl4WlFVRlpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1UwRkJVeXhIUVVGSExFZEJRVWNzUTBGQlF6dFpRVU5zUlR0blFrRkRSU3hOUVVGTkxFbEJRVWtzWVVGQllTeERRVU55UWl3eVFrRkJNa0lzU1VGQlNTeERRVUZETEZOQlFWTXNSVUZCUlN4RFFVTTFReXhEUVVGRE8xRkJRMDRzUTBGQlF6dEpRVU5JTEVOQlFVTTdTVUZGVXl4dFFrRkJiVUk3VVVGRE0wSXNVVUZCVVN4SlFVRkpMRU5CUVVNc1UwRkJVeXhGUVVGRkxFTkJRVU03V1VGRGRrSXNTMEZCU3l4dlFrRkJiMElzUTBGQlF5eExRVUZMTzJkQ1FVTTNRaXhKUVVORkxFTkJRVU1zU1VGQlNTeERRVUZETEdOQlFXTTdiMEpCUTNCQ0xFbEJRVWtzUTBGQlF5eGpRVUZqTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1RVRkJUU3hMUVVGTExFTkJRVU1zUlVGRGRrTXNRMEZCUXp0dlFrRkRSQ3hOUVVGTkxFbEJRVWtzWlVGQlpTeERRVUZETzNkQ1FVTjRRanMwUWtGRFJTeFJRVUZSTEVWQlFVVXNaMEpCUVdkQ096UkNRVU14UWl4UFFVRlBMRVZCUTB3c2FVUkJRV2xFT3pSQ1FVTnVSQ3hYUVVGWExFVkJRVVVzUlVGQlJUdDVRa0ZEYUVJN2NVSkJRMFlzUTBGQlF5eERRVUZETzJkQ1FVTk1MRU5CUVVNN1owSkJRMFFzU1VGQlNTeEpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRkZCUVZFc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETzI5Q1FVTjBReXhOUVVGTkxFbEJRVWtzWlVGQlpTeERRVUZETzNkQ1FVTjRRanMwUWtGRFJTeFJRVUZSTEVWQlFVVXNaMEpCUVdkQ096UkNRVU14UWl4UFFVRlBMRVZCUTB3c2JVVkJRVzFGT3pSQ1FVTnlSU3hYUVVGWExFVkJRVVVzUlVGQlJUdDVRa0ZEYUVJN2NVSkJRMFlzUTBGQlF5eERRVUZETzJkQ1FVTk1MRU5CUVVNN1owSkJRMFFzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4alFVRmpMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU1zUTBGQlF6dFpRVU4wUXl4TFFVRkxMRzlDUVVGdlFpeERRVUZETEUxQlFVMDdaMEpCUXpsQ0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTXNUVUZCVFN4TFFVRkxMRU5CUVVNc1JVRkJSU3hEUVVGRE8yOUNRVU53UkN4TlFVRk5MRWxCUVVrc1pVRkJaU3hEUVVGRE8zZENRVU40UWpzMFFrRkRSU3hSUVVGUkxFVkJRVVVzVVVGQlVUczBRa0ZEYkVJc1QwRkJUeXhGUVVOTUxEQkRRVUV3UXpzMFFrRkROVU1zVjBGQlZ5eEZRVUZGTEVWQlFVVTdlVUpCUTJoQ08zRkNRVU5HTEVOQlFVTXNRMEZCUXp0blFrRkRUQ3hEUVVGRE8yZENRVU5FTEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETEVOQlFVTTdXVUZET1VJc1MwRkJTeXh2UWtGQmIwSXNRMEZCUXl4blFrRkJaMEk3WjBKQlEzaERMRTlCUVU4c1NVRkJTU3hEUVVGRExFMUJRVTBzU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETzI5Q1FVTnFSQ3hEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRE8yOUNRVU4wUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRE8xbEJRMVE3WjBKQlEwVXNUVUZCVFN4SlFVRkpMR0ZCUVdFc1EwRkRja0lzTWtKQlFUSkNMRWxCUVVrc1EwRkJReXhUUVVGVExFVkJRVVVzUTBGRE5VTXNRMEZCUXp0UlFVTk9MRU5CUVVNN1NVRkRTQ3hEUVVGRE8wbEJSVk1zT0VKQlFUaENPMUZCUTNSRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNWVUZCVlR0WlFVRkZMRTlCUVU4c1JVRkJSU3hEUVVGRE8xRkJSV2hETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFTkJRVU03V1VGRGNrSXNUVUZCVFN4SlFVRkpMR1ZCUVdVc1EwRkJRenRuUWtGRGVFSTdiMEpCUTBVc1VVRkJVU3hGUVVGRkxGbEJRVms3YjBKQlEzUkNMRTlCUVU4c1JVRkRUQ3dyUTBGQkswTTdiMEpCUTJwRUxGZEJRVmNzUlVGQlJTeEZRVUZGTzJsQ1FVTm9RanRoUVVOR0xFTkJRVU1zUTBGQlF6dFJRVU5NTEVOQlFVTTdVVUZGUkN4TlFVRk5MRlZCUVZVc1IwRkJSeXhwUWtGQmFVSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU03VVVGRGRFUXNUVUZCVFN4WFFVRlhMRWRCUVVjc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF6dFJRVU16UkN4TlFVRk5MRkZCUVZFc1IwRkJSeXh2UWtGQmIwSXNRMEZCUXl4TlFVRk5MRU5CUXpGRExGZEJRVmNzUlVGRFdDeFZRVUZWTEVOQlFVTXNTVUZCU1N4RFFVTm9RaXhEUVVGRE8xRkJSVVlzVFVGQlRTeFJRVUZSTEVkQlFXRXNSVUZCUlN4RFFVRkRPMUZCUXpsQ0xFdEJRVXNzVFVGQlRTeEhRVUZITEVsQlFVa3NWVUZCVlN4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRE8xbEJRMnhETEUxQlFVMHNTMEZCU3l4SFFVRkhMRkZCUVZFc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFpRVU0xUWl4SlFVRkpMRXRCUVVzc1NVRkJTU3hMUVVGTExFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRE8yZENRVU55UXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXl4RFFVRkRPMWxCUXpsQ0xFTkJRVU03VVVGRFNDeERRVUZETzFGQlJVUXNTVUZEUlN4UlFVRlJMRU5CUVVNc1RVRkJUU3hMUVVGTExFTkJRVU03V1VGRGNrSXNTVUZCU1N4RFFVRkRMRk5CUVZNc1MwRkJTeXh2UWtGQmIwSXNRMEZCUXl4blFrRkJaMElzUlVGRGVFUXNRMEZCUXp0WlFVTkVMRTFCUVUwc1NVRkJTU3hsUVVGbExFTkJRVU03WjBKQlEzaENPMjlDUVVORkxGRkJRVkVzUlVGQlJTeFpRVUZaTzI5Q1FVTjBRaXhQUVVGUExFVkJRMHdzYjBWQlFXOUZPMjlDUVVOMFJTeFhRVUZYTEVWQlFVVXNSVUZCUlR0cFFrRkRhRUk3WVVGRFJpeERRVUZETEVOQlFVTTdVVUZEVEN4RFFVRkRPMUZCUlVRc1QwRkJUeXhSUVVGUkxFTkJRVU03U1VGRGJFSXNRMEZCUXp0SlFVVkVPenM3VDBGSFJ6dEpRVU5QTEdkQ1FVRm5RaXhEUVVONFFpeFBRVUZ4UXp0UlFVVnlReXhQUVVGUE8xbEJRMHdzVFVGQlRTeEZRVUZGTEU5QlFVOHNRMEZCUXl4TlFVRk5MRWxCUVVzc1JVRkJWVHRaUVVOeVF5eExRVUZMTEVWQlFVVXNUMEZCVHl4RFFVRkRMRXRCUVVzc1NVRkJTeXhOUVVGak8xbEJRM1pETEU5QlFVOHNSVUZCUlN4UFFVRlBMRU5CUVVNc1QwRkJUeXhKUVVGSkxFVkJRVVU3V1VGRE9VSXNVMEZCVXl4RlFVRkZMRTlCUVU4c1EwRkJReXhUUVVGVExFbEJRVWtzU1VGQlNTeEpRVUZKTEVWQlFVVXNRMEZCUXl4WFFVRlhMRVZCUVVVN1dVRkRlRVFzUjBGQlJ5eEZRVUZGTEU5QlFVOHNRMEZCUXl4SFFVRkhMRWxCUVVrc1JVRkJSVHRaUVVOMFFpeFRRVUZUTEVWQlFVVXNUMEZCVHl4RFFVRkRMRk5CUVZNc1NVRkJTU3hKUVVGSkxFTkJRVU1zVTBGQlV6dFpRVU01UXl4aFFVRmhMRVZCUVVVc1QwRkJUeXhEUVVGRExHRkJRV0VzU1VGQlNTeEZRVUZGTzFsQlF6RkRMRlZCUVZVc1JVRkJSU3hQUVVGUExFTkJRVU1zVlVGQlZTeEpRVUZKTEVWQlFVVTdXVUZEY0VNc1pVRkJaU3hGUVVGRkxFOUJRVThzUTBGQlF5eGxRVUZsTEVsQlFVa3NSVUZCUlR0WlFVTTVReXhKUVVGSkxFVkJRVVVzVDBGQlR5eERRVUZETEVsQlFVazdXVUZEYkVJc1ZVRkJWU3hGUVVGRkxFOUJRVThzUTBGQlF5eFZRVUZWTzFsQlF6bENMRXRCUVVzc1JVRkJSU3hQUVVGUExFTkJRVU1zUzBGQlN6dFpRVU53UWl4VlFVRlZMRVZCUVVVc1QwRkJUeXhEUVVGRExGVkJRVlU3V1VGRE9VSXNWVUZCVlN4RlFVTlNMRTlCUVU4c1EwRkJReXhWUVVGVk8yZENRVU5zUWl4RFFVRkRMRU5CUVVNc1MwRkJZU3hGUVVGRkxFVkJRVVVzUTBGQlF5eExRVUZMTEVOQlFVTTdVMEZETjBJc1EwRkJRenRKUVVOS0xFTkJRVU03UTBGRFJqdEJRWFJVUXp0SlFVWkRMRkZCUVZFc1JVRkJSVHRKUVVOV0xFMUJRVTBzUTBGQlF5eHZRa0ZCYjBJc1EwRkJRenM3Y1VSQlEybERPMEZCU3psRU8wbEJSa01zU1VGQlNTeEZRVUZGTzBsQlEwNHNVMEZCVXl4RFFVRkRMRU5CUVVNc1EwRkJRenM3YTBSQlEwYzdRVUZKYUVJN1NVRkdReXhKUVVGSkxFVkJRVVU3U1VGRFRpeFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRPenN3UkVGRFZ6dEJRVXQ0UWp0SlFVWkRMRWxCUVVrc1JVRkJSVHRKUVVOT0xGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTTdPM05FUVVOUE8wRkJSM0JDTzBsQlJFTXNTVUZCU1N4RlFVRkZPenR6UkVGRGJVTTdRVUZKTVVNN1NVRkVReXhKUVVGSkxFVkJRVVU3TzNGRVFVTnBRanRCUVV0NFFqdEpRVVpETEZGQlFWRXNSVUZCUlR0SlFVTldMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU03T3poRFFVTkhPMEZCU1doQ08wbEJSa01zVVVGQlVTeEZRVUZGTzBsQlExWXNVMEZCVXl4RFFVRkRMRU5CUVVNc1EwRkJRenM3WjBSQlEwczdRVUZIYkVJN1NVRkVReXhKUVVGSkxFVkJRVVU3TzNsRVFVTm5RanRCUVVsMlFqdEpRVVpETEVsQlFVa3NSVUZCUlR0SlFVTk9MRWxCUVVrc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eE5RVUZOTEVOQlFVTTdPM05FUVVOSE8wRkJTWFJDTzBsQlJrTXNTVUZCU1N4RlFVRkZPMGxCUTA0c1NVRkJTU3hEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEUxQlFVMHNRMEZCUXpzNFFrRkRTQ3hMUVVGTE8zbEVRVUZ2UWp0QlFVZDZRenRKUVVSRExFbEJRVWtzUlVGQlJUczdNa1JCUTIxRE8wRkJSekZETzBsQlJFTXNTVUZCU1N4RlFVRkZPenR6UkVGRE9FSTdRVUZIY2tNN1NVRkVReXhKUVVGSkxFVkJRVVU3TzNkRVFVTm5RaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUUcxdlpIVnNaU0JwYm5SbFozSmhkR2x2Ym5NdmEybGlZVzVoTDJKMWFXeGtaWEp6TDB0cFltRnVZVWx1WkdWNFFuVnBiR1JsY2x4dUlDb2dRSE4xYlcxaGNua2dSbXgxWlc1MElHSjFhV3hrWlhJZ1ptOXlJRXRwWW1GdVlTQnBibVJsZUNCd1lYUjBaWEp1SUNoa1lYUmhJSFpwWlhjcElHTnZibVpwWjNWeVlYUnBiMjV6TGx4dUlDb2dRR1JsYzJOeWFYQjBhVzl1SUVsdGNHeGxiV1Z1ZEhNZ2RHaGxJSEJ5YjJwbFkzUWdRblZwYkdSbGNpQlFZWFIwWlhKdUlDaGpiMjV6ZEdsMGRYUnBiMjRnd3FjeUtUcGNiaUFxSUdWNGRHVnVaSE1nWUUxdlpHVnNZQ3dnZFhObGN5QmdRR1JsWTJGbUxYUnpMMlJsWTI5eVlYUnZjaTEyWVd4cFpHRjBhVzl1WUNCa1pXTnZjbUYwYjNKekxDQm1iSFZsYm5SY2JpQXFJR0J6WlhSWUtDazZJSFJvYVhOZ0lHMWxkR2h2WkhNc0lHRnVaQ0JoSUhSbGNtMXBibUZzSUdCaWRXbHNaQ2dwWUNCMGFHRjBJSFpoYkdsa1lYUmxjeUIyYVdGY2JpQXFJR0JvWVhORmNuSnZjbk1vS1dBZ1lXNWtJSEpsZEhWeWJuTWdZU0JnUzJsaVlXNWhSR0YwWVZacFpYZERiMjVtYVdkZ0xseHVJQ3BjYmlBcUlGTjFjSEJ2Y25SeklIUm9jbVZsSUdKaGMyVWdiV0YwWTJocGJtY2diVzlrWlhNNlhHNGdLaUF0SUdCRldFRkRWR0FnNG9DVUlITnBibWRzWlN3Z1puVnNiSGt0Y1hWaGJHbG1hV1ZrSUdsdVpHVjRJRzVoYldVZ0tHNXZJSGRwYkdSallYSmtjeWt1WEc0Z0tpQXRJR0JRVWtWR1NWaGdJT0tBbENCM2FXeGtZMkZ5WkNCd1lYUjBaWEp1SUNobExtY3VJR0JtYVd4bFltVmhkQzF3YkdFdFpHVnRieTBxWUNrdVhHNGdLaUF0SUdCTVQwZEhSVkpmUjBWT1JWSkJWRVZFWUNEaWdKUWdaR1Z5YVhabGN5QnBibVJsZUNCdVlXMWxJSE5sWjIxbGJuUnpJR1p5YjIwZ1lTQnNiMmNnY0dGMGRHVnlibHh1SUNvZ0lDQmpiMjF3YVd4bFpDQjJhV0VnWUdOdmJYQnBiR1ZNYjJkUVlYUjBaWEp1S0NsZ0lHRnVaQ0J5Wlc1a1pYSmxaQ0IyYVdGY2JpQXFJQ0FnWUd4dloxQmhjbUZ0WlhSbGNsSmxaMmx6ZEhKNUxuSmxibVJsY2lncFlDNWNiaUFxWEc0Z0tpQXFLa052YlhCdmRXNWthVzVuT2lvcUlFeHZaMmRsY2kxblpXNWxjbUYwWldRZ2MyVm5iV1Z1ZEhNZ1kyRnVJR0psSUdOdmJYQnZkVzVrWldRZ2QybDBhQ0JCVGxsY2JpQXFJR0poYzJVZ2JXRjBZMmhwYm1jZ2JXOWtaUzRnVjJobGJpQmdiRzluVUdGMGRHVnlibUFnS3lCZ2JHOW5VR0Y1Ykc5aFpHQWdZWEpsSUhCeWIzWnBaR1ZrWEc0Z0tpQmhiRzl1WjNOcFpHVWdSVmhCUTFRZ2IzSWdVRkpGUmtsWUlHMXZaR1VzSUhSb1pTQnlaVzVrWlhKbFpDQnpaV2R0Wlc1MGN5QmhjbVVnWVhCd1pXNWtaV1FnZEc5Y2JpQXFJSFJvWlNCaVlYTmxJR2x1WkdWNElHNWhiV1VnWVc1a0lHRWdkSEpoYVd4cGJtY2dZQ3BnSUdseklHRmtaR1ZrTGx4dUlDb3ZYRzVwYlhCdmNuUWdlMXh1SUNCc2FYTjBMRnh1SUNCTmIyUmxiQ3hjYmlBZ1RXOWtaV3hCY21jc1hHNGdJRzl3ZEdsdmJpeGNiaUFnY21WeGRXbHlaV1FzWEc0Z0lHMXBibXhsYm1kMGFDeGNibjBnWm5KdmJTQmNJa0JrWldOaFppMTBjeTlrWldOdmNtRjBiM0l0ZG1Gc2FXUmhkR2x2Ymx3aU8xeHVhVzF3YjNKMElIc2dTVzUwWlhKdVlXeEZjbkp2Y2l3Z1ZtRnNhV1JoZEdsdmJrVnljbTl5SUgwZ1puSnZiU0JjSWtCa1pXTmhaaTEwY3k5a1lpMWtaV052Y21GMGIzSnpYQ0k3WEc1cGJYQnZjblFnZXlCd2NtOXdJSDBnWm5KdmJTQmNJa0JrWldOaFppMTBjeTlrWldOdmNtRjBhVzl1WENJN1hHNXBiWEJ2Y25RZ2UxeHVJQ0JqYjIxd2FXeGxURzluVUdGMGRHVnliaXhjYmlBZ2JHOW5VR0Z5WVcxbGRHVnlVbVZuYVhOMGNua3NYRzRnSUhSNWNHVWdURzluVUdGeVlXMWxkR1Z5VUdGNWJHOWhaQ3hjYm4wZ1puSnZiU0JjSWtCa1pXTmhaaTEwY3k5c2IyZG5hVzVuWENJN1hHNWNibWx0Y0c5eWRDQjdJRXRwWW1GdVlVUmhkR0ZXYVdWM1EyOXVabWxuTENCTGFXSmhibUZKYm1SbGVFMWhkR05vVFc5a1pTQjlJR1p5YjIwZ1hDSXVMaTkwZVhCbGMxd2lPMXh1WEc1bGVIQnZjblFnWTJ4aGMzTWdTMmxpWVc1aFNXNWtaWGhDZFdsc1pHVnlJR1Y0ZEdWdVpITWdUVzlrWld3Z2UxeHVJQ0F2THlEaWxJRGlsSUFnVFdGMFkyaHBibWNnYzNSeVlYUmxaM2tnNHBTQTRwU0FYRzRnSUVCeVpYRjFhWEpsWkNncFhHNGdJRUJ2Y0hScGIyNG9TMmxpWVc1aFNXNWtaWGhOWVhSamFFMXZaR1VwWEc0Z0lHMWhkR05vVFc5a1pUb2dTMmxpWVc1aFNXNWtaWGhOWVhSamFFMXZaR1VnUFNCTGFXSmhibUZKYm1SbGVFMWhkR05vVFc5a1pTNVFVa1ZHU1ZnN1hHNWNiaUFnTHk4ZzRwU0E0cFNBSUVsdVpHVjRJRzVoYldVZ2MyVm5iV1Z1ZEhNZzRwU0E0cFNBWEc0Z0lFQndjbTl3S0NsY2JpQWdRRzFwYm14bGJtZDBhQ2d4S1Z4dUlDQndjbVZtYVhnL09pQnpkSEpwYm1jN1hHNWNiaUFnUUhCeWIzQW9LVnh1SUNCQWJXbHViR1Z1WjNSb0tERXBYRzRnSUdWNFlXTjBTVzVrWlhoT1lXMWxQem9nYzNSeWFXNW5PMXh1WEc0Z0lDOHZJT0tVZ09LVWdDQk1iMmRuWlhJdFoyVnVaWEpoZEdWa0lHTnZiWEJ2ZFc1a2FXNW5JT0tVZ09LVWdGeHVJQ0JBY0hKdmNDZ3BYRzRnSUVCdGFXNXNaVzVuZEdnb01TbGNiaUFnYkc5blVHRjBkR1Z5Ymo4NklITjBjbWx1Wnp0Y2JseHVJQ0JBY0hKdmNDZ3BYRzRnSUd4dloxQmhlV3h2WVdRL09pQlFZWEowYVdGc1BFeHZaMUJoY21GdFpYUmxjbEJoZVd4dllXUStPMXh1WEc0Z0lDOHZJT0tVZ09LVWdDQlRaWEJoY21GMGIzSWc0cFNBNHBTQVhHNGdJRUJ3Y205d0tDbGNiaUFnYzJWd1lYSmhkRzl5T2lCemRISnBibWNnUFNCY0lpMWNJanRjYmx4dUlDQXZMeURpbElEaWxJQWdSR0YwWVNCV2FXVjNJR1pwWld4a2N5QW9iV0Z3SUhSdklFdHBZbUZ1WVVSaGRHRldhV1YzUTI5dVptbG5LU0RpbElEaWxJQmNiaUFnUUhKbGNYVnBjbVZrS0NsY2JpQWdRRzFwYm14bGJtZDBhQ2d4S1Z4dUlDQnBaRG9nYzNSeWFXNW5JRDBnWENKY0lqdGNibHh1SUNCQWNtVnhkV2x5WldRb0tWeHVJQ0JBYldsdWJHVnVaM1JvS0RFcFhHNGdJRzVoYldVNklITjBjbWx1WnlBOUlGd2lYQ0k3WEc1Y2JpQWdRSEJ5YjNBb0tWeHVJQ0IwYVcxbFJtbGxiR1JPWVcxbFB6b2djM1J5YVc1bk8xeHVYRzRnSUVCd2NtOXdLQ2xjYmlBZ1FHeHBjM1FvS0NrZ1BUNGdVM1J5YVc1bktWeHVJQ0J1WVcxbGMzQmhZMlZ6UHpvZ2MzUnlhVzVuVzEwN1hHNWNiaUFnUUhCeWIzQW9LVnh1SUNCQWJHbHpkQ2dvS1NBOVBpQlBZbXBsWTNRcFhHNGdJSE52ZFhKalpVWnBiSFJsY25NL09pQkJjbkpoZVR4N0lIWmhiSFZsT2lCemRISnBibWNnZlQ0N1hHNWNiaUFnUUhCeWIzQW9LVnh1SUNCeWRXNTBhVzFsUm1sbGJHUk5ZWEEvT2lCU1pXTnZjbVE4YzNSeWFXNW5MQ0IxYm10dWIzZHVQanRjYmx4dUlDQkFjSEp2Y0NncFhHNGdJR1pwWld4a1FYUjBjbk0vT2lCU1pXTnZjbVE4YzNSeWFXNW5MQ0IxYm10dWIzZHVQanRjYmx4dUlDQkFjSEp2Y0NncFhHNGdJR0ZzYkc5M1RtOUpibVJsZUQ4NklHSnZiMnhsWVc0N1hHNWNiaUFnWTI5dWMzUnlkV04wYjNJb1lYSm5Qem9nVFc5a1pXeEJjbWM4UzJsaVlXNWhTVzVrWlhoQ2RXbHNaR1Z5UGlrZ2UxeHVJQ0FnSUhOMWNHVnlLR0Z5WnlrN1hHNGdJQ0FnVFc5a1pXd3Vabkp2YlUxdlpHVnNLSFJvYVhNc0lHRnlaeWs3WEc0Z0lIMWNibHh1SUNBdkx5RGlsSURpbElBZ1JteDFaVzUwSUhObGRIUmxjbk02SUcxaGRHTm9hVzVuSUhOMGNtRjBaV2Q1SU9LVWdPS1VnRnh1SUNCelpYUk5ZWFJqYUUxdlpHVW9iVzlrWlRvZ1MybGlZVzVoU1c1a1pYaE5ZWFJqYUUxdlpHVXBPaUIwYUdseklIdGNiaUFnSUNCMGFHbHpMbTFoZEdOb1RXOWtaU0E5SUcxdlpHVTdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTTdYRzRnSUgxY2JseHVJQ0J6WlhSUWNtVm1hWGdvY0hKbFptbDRPaUJ6ZEhKcGJtY3BPaUIwYUdseklIdGNiaUFnSUNCMGFHbHpMbkJ5WldacGVDQTlJSEJ5WldacGVEdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN6dGNiaUFnZlZ4dVhHNGdJSE5sZEVWNFlXTjBTVzVrWlhoT1lXMWxLRzVoYldVNklITjBjbWx1WnlrNklIUm9hWE1nZTF4dUlDQWdJSFJvYVhNdVpYaGhZM1JKYm1SbGVFNWhiV1VnUFNCdVlXMWxPMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpPMXh1SUNCOVhHNWNiaUFnYzJWMFRHOW5VR0YwZEdWeWJpaHdZWFIwWlhKdU9pQnpkSEpwYm1jcE9pQjBhR2x6SUh0Y2JpQWdJQ0IwYUdsekxteHZaMUJoZEhSbGNtNGdQU0J3WVhSMFpYSnVPMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpPMXh1SUNCOVhHNWNiaUFnYzJWMFRHOW5VR0Y1Ykc5aFpDaHdZWGxzYjJGa09pQlFZWEowYVdGc1BFeHZaMUJoY21GdFpYUmxjbEJoZVd4dllXUStLVG9nZEdocGN5QjdYRzRnSUNBZ2RHaHBjeTVzYjJkUVlYbHNiMkZrSUQwZ2NHRjViRzloWkR0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3p0Y2JpQWdmVnh1WEc0Z0lITmxkRk5sY0dGeVlYUnZjaWh6WlhBNklITjBjbWx1WnlrNklIUm9hWE1nZTF4dUlDQWdJSFJvYVhNdWMyVndZWEpoZEc5eUlEMGdjMlZ3TzF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TzF4dUlDQjlYRzVjYmlBZ0x5OGc0cFNBNHBTQUlFWnNkV1Z1ZENCelpYUjBaWEp6T2lCa1lYUmhJSFpwWlhjZ1ptbGxiR1J6SU9LVWdPS1VnRnh1SUNCelpYUkpaQ2hwWkRvZ2MzUnlhVzVuS1RvZ2RHaHBjeUI3WEc0Z0lDQWdkR2hwY3k1cFpDQTlJR2xrTzF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TzF4dUlDQjlYRzVjYmlBZ2MyVjBUbUZ0WlNodVlXMWxPaUJ6ZEhKcGJtY3BPaUIwYUdseklIdGNiaUFnSUNCMGFHbHpMbTVoYldVZ1BTQnVZVzFsTzF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TzF4dUlDQjlYRzVjYmlBZ2MyVjBWR2x0WlVacFpXeGtUbUZ0WlNobWFXVnNaRG9nYzNSeWFXNW5LVG9nZEdocGN5QjdYRzRnSUNBZ2RHaHBjeTUwYVcxbFJtbGxiR1JPWVcxbElEMGdabWxsYkdRN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNN1hHNGdJSDFjYmx4dUlDQnpaWFJPWVcxbGMzQmhZMlZ6S0c1ek9pQnpkSEpwYm1kYlhTazZJSFJvYVhNZ2UxeHVJQ0FnSUhSb2FYTXVibUZ0WlhOd1lXTmxjeUE5SUc1ek8xeHVJQ0FnSUhKbGRIVnliaUIwYUdsek8xeHVJQ0I5WEc1Y2JpQWdjMlYwVTI5MWNtTmxSbWxzZEdWeWN5aGNiaUFnSUNCbWFXeDBaWEp6T2lCQmNuSmhlVHg3SUhaaGJIVmxPaUJ6ZEhKcGJtY2dmVDRzWEc0Z0lDazZJSFJvYVhNZ2UxeHVJQ0FnSUhSb2FYTXVjMjkxY21ObFJtbHNkR1Z5Y3lBOUlHWnBiSFJsY25NN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNN1hHNGdJSDFjYmx4dUlDQnpaWFJTZFc1MGFXMWxSbWxsYkdSTllYQW9iV0Z3T2lCU1pXTnZjbVE4YzNSeWFXNW5MQ0IxYm10dWIzZHVQaWs2SUhSb2FYTWdlMXh1SUNBZ0lIUm9hWE11Y25WdWRHbHRaVVpwWld4a1RXRndJRDBnYldGd08xeHVJQ0FnSUhKbGRIVnliaUIwYUdsek8xeHVJQ0I5WEc1Y2JpQWdjMlYwUm1sbGJHUkJkSFJ5Y3loaGRIUnljem9nVW1WamIzSmtQSE4wY21sdVp5d2dkVzVyYm05M2JqNHBPaUIwYUdseklIdGNiaUFnSUNCMGFHbHpMbVpwWld4a1FYUjBjbk1nUFNCaGRIUnljenRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjenRjYmlBZ2ZWeHVYRzRnSUhObGRFRnNiRzkzVG05SmJtUmxlQ2hoYkd4dmR6b2dZbTl2YkdWaGJpazZJSFJvYVhNZ2UxeHVJQ0FnSUhSb2FYTXVZV3hzYjNkT2IwbHVaR1Y0SUQwZ1lXeHNiM2M3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE03WEc0Z0lIMWNibHh1SUNBdkx5RGlsSURpbElBZ1FuVnBiR1FnNHBTQTRwU0FYRzRnSUdKMWFXeGtLQ2s2SUV0cFltRnVZVVJoZEdGV2FXVjNRMjl1Wm1sbklIdGNiaUFnSUNCamIyNXpkQ0JsY25KeklEMGdkR2hwY3k1b1lYTkZjbkp2Y25Nb0tUdGNiaUFnSUNCcFppQW9aWEp5Y3lrZ2RHaHliM2NnYm1WM0lGWmhiR2xrWVhScGIyNUZjbkp2Y2lobGNuSnpLVHRjYmx4dUlDQWdJR052Ym5OMElIUnBkR3hsSUQwZ2RHaHBjeTVqYjIxd2IzTmxWR2wwYkdVb0tUdGNiaUFnSUNCeVpYUjFjbTRnZTF4dUlDQWdJQ0FnYVdRNklIUm9hWE11YVdRc1hHNGdJQ0FnSUNCdVlXMWxPaUIwYUdsekxtNWhiV1VzWEc0Z0lDQWdJQ0IwYVhSc1pTeGNiaUFnSUNBZ0lIUnBiV1ZHYVdWc1pFNWhiV1U2SUhSb2FYTXVkR2x0WlVacFpXeGtUbUZ0WlN4Y2JpQWdJQ0FnSUc1aGJXVnpjR0ZqWlhNNklIUm9hWE11Ym1GdFpYTndZV05sY3l4Y2JpQWdJQ0FnSUhOdmRYSmpaVVpwYkhSbGNuTTZJSFJvYVhNdWMyOTFjbU5sUm1sc2RHVnljeXhjYmlBZ0lDQWdJSEoxYm5ScGJXVkdhV1ZzWkUxaGNEb2dkR2hwY3k1eWRXNTBhVzFsUm1sbGJHUk5ZWEFzWEc0Z0lDQWdJQ0JtYVdWc1pFRjBkSEp6T2lCMGFHbHpMbVpwWld4a1FYUjBjbk1zWEc0Z0lDQWdJQ0JoYkd4dmQwNXZTVzVrWlhnNklIUm9hWE11WVd4c2IzZE9iMGx1WkdWNExGeHVJQ0FnSUgwN1hHNGdJSDFjYmx4dUlDQXZMeURpbElEaWxJQWdWR2wwYkdVZ1kyOXRjRzl6YVhScGIyNGc0cFNBNHBTQVhHNGdJSEJ5YjNSbFkzUmxaQ0JqYjIxd2IzTmxWR2wwYkdVb0tUb2djM1J5YVc1bklIdGNiaUFnSUNCamIyNXpkQ0JpWVhObFUyVm5iV1Z1ZEhNZ1BTQjBhR2x6TG1OdmJYQnZjMlZDWVhObFUyVm5iV1Z1ZEhNb0tUdGNiaUFnSUNCamIyNXpkQ0JzYjJkblpYSlRaV2R0Wlc1MGN5QTlJSFJvYVhNdVkyOXRjRzl6WlV4dloyZGxja2RsYm1WeVlYUmxaRk5sWjIxbGJuUnpLQ2s3WEc1Y2JpQWdJQ0JwWmlBb2JHOW5aMlZ5VTJWbmJXVnVkSE11YkdWdVozUm9JRDRnTUNrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnWVd4c1UyVm5iV1Z1ZEhNZ1BTQmJMaTR1WW1GelpWTmxaMjFsYm5SekxDQXVMaTVzYjJkblpYSlRaV2R0Wlc1MGMxMDdYRzRnSUNBZ0lDQnlaWFIxY200Z1lXeHNVMlZuYldWdWRITXVhbTlwYmloMGFHbHpMbk5sY0dGeVlYUnZjaWtnS3lCMGFHbHpMbk5sY0dGeVlYUnZjaUFySUZ3aUtsd2lPMXh1SUNBZ0lIMWNibHh1SUNBZ0lITjNhWFJqYUNBb2RHaHBjeTV0WVhSamFFMXZaR1VwSUh0Y2JpQWdJQ0FnSUdOaGMyVWdTMmxpWVc1aFNXNWtaWGhOWVhSamFFMXZaR1V1UlZoQlExUTZYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmlZWE5sVTJWbmJXVnVkSE5iTUYwN1hHNGdJQ0FnSUNCallYTmxJRXRwWW1GdVlVbHVaR1Y0VFdGMFkyaE5iMlJsTGxCU1JVWkpXRG9nZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0JpWVhObElEMGdZbUZ6WlZObFoyMWxiblJ6V3pCZE8xeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1ltRnpaUzVsYm1SelYybDBhQ2gwYUdsekxuTmxjR0Z5WVhSdmNpbGNiaUFnSUNBZ0lDQWdJQ0EvSUdBa2UySmhjMlY5S21CY2JpQWdJQ0FnSUNBZ0lDQTZJR0FrZTJKaGMyVjlKSHQwYUdsekxuTmxjR0Z5WVhSdmNuMHFZRHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJR05oYzJVZ1MybGlZVzVoU1c1a1pYaE5ZWFJqYUUxdlpHVXVURTlIUjBWU1gwZEZUa1ZTUVZSRlJEcGNiaUFnSUNBZ0lDQWdhV1lnS0dKaGMyVlRaV2R0Wlc1MGN5NXNaVzVuZEdnZ1BUMDlJREFwSUh0Y2JpQWdJQ0FnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dWbUZzYVdSaGRHbHZia1Z5Y205eUtGdGNiaUFnSUNBZ0lDQWdJQ0FnSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnY0hKdmNHVnlkSGs2SUZ3aWNISmxabWw0WENJc1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUcxbGMzTmhaMlU2WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWENKd2NtVm1hWGdnYVhNZ2NtVnhkV2x5WldRZ1ptOXlJRXhQUjBkRlVsOUhSVTVGVWtGVVJVUWdiVzlrWlNCM2FHVnVJRzV2SUd4dloxQmhkSFJsY200Z2FYTWdjMlYwWENJc1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBjbUZwYm5Sek9pQjdmU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lIMHNYRzRnSUNBZ0lDQWdJQ0FnWFNrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHSmhjMlZUWldkdFpXNTBjeTVxYjJsdUtIUm9hWE11YzJWd1lYSmhkRzl5S1NBcklIUm9hWE11YzJWd1lYSmhkRzl5SUNzZ1hDSXFYQ0k3WEc0Z0lDQWdJQ0JrWldaaGRXeDBPbHh1SUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnU1c1MFpYSnVZV3hGY25KdmNpaGNiaUFnSUNBZ0lDQWdJQ0JnVlc1emRYQndiM0owWldRZ2JXRjBZMmdnYlc5a1pUb2dKSHQwYUdsekxtMWhkR05vVFc5a1pYMWdMRnh1SUNBZ0lDQWdJQ0FwTzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUhCeWIzUmxZM1JsWkNCamIyMXdiM05sUW1GelpWTmxaMjFsYm5SektDazZJSE4wY21sdVoxdGRJSHRjYmlBZ0lDQnpkMmwwWTJnZ0tIUm9hWE11YldGMFkyaE5iMlJsS1NCN1hHNGdJQ0FnSUNCallYTmxJRXRwWW1GdVlVbHVaR1Y0VFdGMFkyaE5iMlJsTGtWWVFVTlVPbHh1SUNBZ0lDQWdJQ0JwWmlBb1hHNGdJQ0FnSUNBZ0lDQWdJWFJvYVhNdVpYaGhZM1JKYm1SbGVFNWhiV1VnZkh4Y2JpQWdJQ0FnSUNBZ0lDQjBhR2x6TG1WNFlXTjBTVzVrWlhoT1lXMWxMblJ5YVcwb0tTNXNaVzVuZEdnZ1BUMDlJREJjYmlBZ0lDQWdJQ0FnS1NCN1hHNGdJQ0FnSUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRlpoYkdsa1lYUnBiMjVGY25KdmNpaGJYRzRnSUNBZ0lDQWdJQ0FnSUNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUhCeWIzQmxjblI1T2lCY0ltVjRZV04wU1c1a1pYaE9ZVzFsWENJc1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUcxbGMzTmhaMlU2WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWENKbGVHRmpkRWx1WkdWNFRtRnRaU0JwY3lCeVpYRjFhWEpsWkNCbWIzSWdSVmhCUTFRZ2JXRjBZMmdnYlc5a1pWd2lMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQmpiMjV6ZEhKaGFXNTBjem9nZTMwc1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5TEZ4dUlDQWdJQ0FnSUNBZ0lGMHBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUdsbUlDaDBhR2x6TG1WNFlXTjBTVzVrWlhoT1lXMWxMbWx1WTJ4MVpHVnpLRndpS2x3aUtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUhSb2NtOTNJRzVsZHlCV1lXeHBaR0YwYVc5dVJYSnliM0lvVzF4dUlDQWdJQ0FnSUNBZ0lDQWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQndjbTl3WlhKMGVUb2dYQ0psZUdGamRFbHVaR1Y0VG1GdFpWd2lMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQnRaWE56WVdkbE9seHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lGd2laWGhoWTNSSmJtUmxlRTVoYldVZ2JYVnpkQ0J1YjNRZ1kyOXVkR0ZwYmlCM2FXeGtZMkZ5WkhNZ0tDb3BJR2x1SUVWWVFVTlVJRzFoZEdOb0lHMXZaR1ZjSWl4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWMzUnlZV2x1ZEhNNklIdDlMRnh1SUNBZ0lDQWdJQ0FnSUNBZ2ZTeGNiaUFnSUNBZ0lDQWdJQ0JkS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1czUm9hWE11WlhoaFkzUkpibVJsZUU1aGJXVXVkSEpwYlNncFhUdGNiaUFnSUNBZ0lHTmhjMlVnUzJsaVlXNWhTVzVrWlhoTllYUmphRTF2WkdVdVVGSkZSa2xZT2x4dUlDQWdJQ0FnSUNCcFppQW9JWFJvYVhNdWNISmxabWw0SUh4OElIUm9hWE11Y0hKbFptbDRMblJ5YVcwb0tTNXNaVzVuZEdnZ1BUMDlJREFwSUh0Y2JpQWdJQ0FnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dWbUZzYVdSaGRHbHZia1Z5Y205eUtGdGNiaUFnSUNBZ0lDQWdJQ0FnSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnY0hKdmNHVnlkSGs2SUZ3aWNISmxabWw0WENJc1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUcxbGMzTmhaMlU2WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWENKd2NtVm1hWGdnYVhNZ2NtVnhkV2x5WldRZ1ptOXlJRkJTUlVaSldDQnRZWFJqYUNCdGIyUmxYQ0lzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJR052Ym5OMGNtRnBiblJ6T2lCN2ZTeGNiaUFnSUNBZ0lDQWdJQ0FnSUgwc1hHNGdJQ0FnSUNBZ0lDQWdYU2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUZ0MGFHbHpMbkJ5WldacGVDNTBjbWx0S0NsZE8xeHVJQ0FnSUNBZ1kyRnpaU0JMYVdKaGJtRkpibVJsZUUxaGRHTm9UVzlrWlM1TVQwZEhSVkpmUjBWT1JWSkJWRVZFT2x4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZEdocGN5NXdjbVZtYVhnZ0ppWWdkR2hwY3k1d2NtVm1hWGd1ZEhKcGJTZ3BMbXhsYm1kMGFDQStJREJjYmlBZ0lDQWdJQ0FnSUNBL0lGdDBhR2x6TG5CeVpXWnBlQzUwY21sdEtDbGRYRzRnSUNBZ0lDQWdJQ0FnT2lCYlhUdGNiaUFnSUNBZ0lHUmxabUYxYkhRNlhHNGdJQ0FnSUNBZ0lIUm9jbTkzSUc1bGR5QkpiblJsY201aGJFVnljbTl5S0Z4dUlDQWdJQ0FnSUNBZ0lHQlZibk4xY0hCdmNuUmxaQ0J0WVhSamFDQnRiMlJsT2lBa2UzUm9hWE11YldGMFkyaE5iMlJsZldBc1hHNGdJQ0FnSUNBZ0lDazdYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JpQWdjSEp2ZEdWamRHVmtJR052YlhCdmMyVk1iMmRuWlhKSFpXNWxjbUYwWldSVFpXZHRaVzUwY3lncE9pQnpkSEpwYm1kYlhTQjdYRzRnSUNBZ2FXWWdLQ0YwYUdsekxteHZaMUJoZEhSbGNtNHBJSEpsZEhWeWJpQmJYVHRjYmx4dUlDQWdJR2xtSUNnaGRHaHBjeTVzYjJkUVlYbHNiMkZrS1NCN1hHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1ZtRnNhV1JoZEdsdmJrVnljbTl5S0Z0Y2JpQWdJQ0FnSUNBZ2UxeHVJQ0FnSUNBZ0lDQWdJSEJ5YjNCbGNuUjVPaUJjSW14dloxQmhlV3h2WVdSY0lpeGNiaUFnSUNBZ0lDQWdJQ0J0WlhOellXZGxPbHh1SUNBZ0lDQWdJQ0FnSUNBZ1hDSnNiMmRRWVhsc2IyRmtJR2x6SUhKbGNYVnBjbVZrSUhkb1pXNGdiRzluVUdGMGRHVnliaUJwY3lCelpYUmNJaXhjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkSEpoYVc1MGN6b2dlMzBzWEc0Z0lDQWdJQ0FnSUgwc1hHNGdJQ0FnSUNCZEtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCamIyNXpkQ0JrWldacGJtbDBhVzl1SUQwZ1kyOXRjR2xzWlV4dloxQmhkSFJsY200b2RHaHBjeTVzYjJkUVlYUjBaWEp1S1R0Y2JpQWdJQ0JqYjI1emRDQm1kV3hzVUdGNWJHOWhaQ0E5SUhSb2FYTXVZblZwYkdSR2RXeHNVR0Y1Ykc5aFpDaDBhR2x6TG14dloxQmhlV3h2WVdRcE8xeHVJQ0FnSUdOdmJuTjBJSEpsYm1SbGNtVmtJRDBnYkc5blVHRnlZVzFsZEdWeVVtVm5hWE4wY25rdWNtVnVaR1Z5S0Z4dUlDQWdJQ0FnWm5Wc2JGQmhlV3h2WVdRc1hHNGdJQ0FnSUNCa1pXWnBibWwwYVc5dUxtdGxlWE1zWEc0Z0lDQWdLVHRjYmx4dUlDQWdJR052Ym5OMElITmxaMjFsYm5Sek9pQnpkSEpwYm1kYlhTQTlJRnRkTzF4dUlDQWdJR1p2Y2lBb1kyOXVjM1FnYTJWNUlHOW1JR1JsWm1sdWFYUnBiMjR1YTJWNWN5a2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ2RtRnNkV1VnUFNCeVpXNWtaWEpsWkZ0clpYbGRPMXh1SUNBZ0lDQWdhV1lnS0haaGJIVmxJQ1ltSUhaaGJIVmxMblJ5YVcwb0tTNXNaVzVuZEdnZ1BpQXdLU0I3WEc0Z0lDQWdJQ0FnSUhObFoyMWxiblJ6TG5CMWMyZ29kbUZzZFdVdWRISnBiU2dwS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb1hHNGdJQ0FnSUNCelpXZHRaVzUwY3k1c1pXNW5kR2dnUFQwOUlEQWdKaVpjYmlBZ0lDQWdJSFJvYVhNdWJXRjBZMmhOYjJSbElEMDlQU0JMYVdKaGJtRkpibVJsZUUxaGRHTm9UVzlrWlM1TVQwZEhSVkpmUjBWT1JWSkJWRVZFWEc0Z0lDQWdLU0I3WEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnVm1Gc2FXUmhkR2x2YmtWeWNtOXlLRnRjYmlBZ0lDQWdJQ0FnZTF4dUlDQWdJQ0FnSUNBZ0lIQnliM0JsY25SNU9pQmNJbXh2WjFCaGRIUmxjbTVjSWl4Y2JpQWdJQ0FnSUNBZ0lDQnRaWE56WVdkbE9seHVJQ0FnSUNBZ0lDQWdJQ0FnWENKT2J5QnpaV2R0Wlc1MGN5QjNaWEpsSUhKbGJtUmxjbVZrSUdaeWIyMGdkR2hsSUhCeWIzWnBaR1ZrSUd4dloxQmhkSFJsY200Z1lXNWtJSEJoZVd4dllXUmNJaXhjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkSEpoYVc1MGN6b2dlMzBzWEc0Z0lDQWdJQ0FnSUgwc1hHNGdJQ0FnSUNCZEtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnYzJWbmJXVnVkSE03WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1JtbHNiQ0J0YVhOemFXNW5JRXh2WjFCaGNtRnRaWFJsY2xCaGVXeHZZV1FnWm1sbGJHUnpJSGRwZEdnZ2MyVnVjMmxpYkdVZ1pHVm1ZWFZzZEhOY2JpQWdJQ29nYzI4Z2NHRnlkR2xoYkNCd1lYbHNiMkZrY3lCallXNGdZbVVnWVdOalpYQjBaV1FnWm5KdmJTQjBhR1VnWTJGc2JHVnlMbHh1SUNBZ0tpOWNiaUFnY0hKdmRHVmpkR1ZrSUdKMWFXeGtSblZzYkZCaGVXeHZZV1FvWEc0Z0lDQWdjR0Z5ZEdsaGJEb2dVR0Z5ZEdsaGJEeE1iMmRRWVhKaGJXVjBaWEpRWVhsc2IyRmtQaXhjYmlBZ0tUb2dURzluVUdGeVlXMWxkR1Z5VUdGNWJHOWhaQ0I3WEc0Z0lDQWdjbVYwZFhKdUlIdGNiaUFnSUNBZ0lHTnZibVpwWnpvZ2NHRnlkR2xoYkM1amIyNW1hV2NnUHo4Z0tIdDlJR0Z6SUdGdWVTa3NYRzRnSUNBZ0lDQnNaWFpsYkRvZ2NHRnlkR2xoYkM1c1pYWmxiQ0EvUHlBb1hDSnBibVp2WENJZ1lYTWdZVzU1S1N4Y2JpQWdJQ0FnSUdOdmJuUmxlSFE2SUhCaGNuUnBZV3d1WTI5dWRHVjRkQ0EvUHlCYlhTeGNiaUFnSUNBZ0lIUnBiV1Z6ZEdGdGNEb2djR0Z5ZEdsaGJDNTBhVzFsYzNSaGJYQWdQejhnYm1WM0lFUmhkR1VvS1M1MGIwbFRUMU4wY21sdVp5Z3BMRnh1SUNBZ0lDQWdZWEJ3T2lCd1lYSjBhV0ZzTG1Gd2NDQS9QeUJjSWx3aUxGeHVJQ0FnSUNBZ2MyVndZWEpoZEc5eU9pQndZWEowYVdGc0xuTmxjR0Z5WVhSdmNpQS9QeUIwYUdsekxuTmxjR0Z5WVhSdmNpeGNiaUFnSUNBZ0lHTnZjbkpsYkdGMGFXOXVTV1E2SUhCaGNuUnBZV3d1WTI5eWNtVnNZWFJwYjI1SlpDQS9QeUJjSWx3aUxGeHVJQ0FnSUNBZ2NtRjNUV1Z6YzJGblpUb2djR0Z5ZEdsaGJDNXlZWGROWlhOellXZGxJRDgvSUZ3aVhDSXNYRzRnSUNBZ0lDQm1hV3gwWlhKbFpFMWxjM05oWjJVNklIQmhjblJwWVd3dVptbHNkR1Z5WldSTlpYTnpZV2RsSUQ4L0lGd2lYQ0lzWEc0Z0lDQWdJQ0J0WlhSaE9pQndZWEowYVdGc0xtMWxkR0VzWEc0Z0lDQWdJQ0J0WlhSaFUzUnlhVzVuT2lCd1lYSjBhV0ZzTG0xbGRHRlRkSEpwYm1jc1hHNGdJQ0FnSUNCemRHRmphem9nY0dGeWRHbGhiQzV6ZEdGamF5eGNiaUFnSUNBZ0lITjBZV05yVEdGaVpXdzZJSEJoY25ScFlXd3VjM1JoWTJ0TVlXSmxiQ3hjYmlBZ0lDQWdJR0Z3Y0d4NVZHaGxiV1U2WEc0Z0lDQWdJQ0FnSUhCaGNuUnBZV3d1WVhCd2JIbFVhR1Z0WlNBL1AxeHVJQ0FnSUNBZ0lDQW9LSFpoYkhWbE9pQnpkSEpwYm1jcElEMCtJSFpoYkhWbEtTeGNiaUFnSUNCOU8xeHVJQ0I5WEc1OVhHNGlYWDA9Il19
|