@decaf-ts/integrations 0.5.1 → 0.6.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/dist/integrations.cjs +2 -2087
- package/dist/integrations.cjs.map +1 -0
- package/dist/integrations.js +2 -2356
- package/dist/integrations.js.map +1 -0
- package/docker/keycloak-broker-compose.yml +128 -0
- package/docker/traefik-broker.yml +51 -0
- package/eslint.config.js +1 -0
- package/lib/cjs/blob/azure/AzureBlobStoreService.cjs +2 -2
- package/lib/cjs/blob/azure/AzureBlobStoreService.cjs.map +1 -0
- package/lib/cjs/blob/azure/index.cjs +2 -2
- package/lib/cjs/blob/azure/index.cjs.map +1 -0
- package/lib/cjs/blob/core/BlobErrors.cjs +2 -2
- package/lib/cjs/blob/core/BlobErrors.cjs.map +1 -0
- package/lib/cjs/blob/core/BlobKey.cjs +2 -2
- package/lib/cjs/blob/core/BlobKey.cjs.map +1 -0
- package/lib/cjs/blob/core/BlobStoreFactory.cjs +2 -2
- package/lib/cjs/blob/core/BlobStoreFactory.cjs.map +1 -0
- package/lib/cjs/blob/core/BlobStoreService.cjs +2 -2
- package/lib/cjs/blob/core/BlobStoreService.cjs.map +1 -0
- package/lib/cjs/blob/core/BlobTypes.cjs +2 -2
- package/lib/cjs/blob/core/BlobTypes.cjs.map +1 -0
- package/lib/cjs/blob/core/BlobValue.cjs +2 -2
- package/lib/cjs/blob/core/BlobValue.cjs.map +1 -0
- package/lib/cjs/blob/core/index.cjs +2 -2
- package/lib/cjs/blob/core/index.cjs.map +1 -0
- package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs +2 -2
- package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs.map +1 -0
- package/lib/cjs/blob/gcp/index.cjs +2 -2
- package/lib/cjs/blob/gcp/index.cjs.map +1 -0
- package/lib/cjs/blob/index.cjs +2 -2
- package/lib/cjs/blob/index.cjs.map +1 -0
- package/lib/cjs/blob/ipfs/IpfsBlobStoreService.cjs +2 -2
- package/lib/cjs/blob/ipfs/IpfsBlobStoreService.cjs.map +1 -0
- package/lib/cjs/blob/ipfs/IpfsKeyIndex.cjs +2 -2
- package/lib/cjs/blob/ipfs/IpfsKeyIndex.cjs.map +1 -0
- package/lib/cjs/blob/ipfs/LocalJsonIpfsKeyIndex.cjs +2 -2
- package/lib/cjs/blob/ipfs/LocalJsonIpfsKeyIndex.cjs.map +1 -0
- package/lib/cjs/blob/ipfs/MemoryIpfsKeyIndex.cjs +2 -2
- package/lib/cjs/blob/ipfs/MemoryIpfsKeyIndex.cjs.map +1 -0
- package/lib/cjs/blob/ipfs/PostgresIpfsKeyIndex.cjs +2 -2
- package/lib/cjs/blob/ipfs/PostgresIpfsKeyIndex.cjs.map +1 -0
- package/lib/cjs/blob/ipfs/index.cjs +2 -2
- package/lib/cjs/blob/ipfs/index.cjs.map +1 -0
- package/lib/cjs/blob/local/LocalBlobStoreService.cjs +2 -2
- package/lib/cjs/blob/local/LocalBlobStoreService.cjs.map +1 -0
- package/lib/cjs/blob/local/index.cjs +2 -2
- package/lib/cjs/blob/local/index.cjs.map +1 -0
- package/lib/cjs/blob/memory/MemoryBlobStoreService.cjs +2 -2
- package/lib/cjs/blob/memory/MemoryBlobStoreService.cjs.map +1 -0
- package/lib/cjs/blob/memory/index.cjs +2 -2
- package/lib/cjs/blob/memory/index.cjs.map +1 -0
- package/lib/cjs/blob/s3/MinioBlobStoreService.cjs +2 -2
- package/lib/cjs/blob/s3/MinioBlobStoreService.cjs.map +1 -0
- package/lib/cjs/blob/s3/R2BlobStoreService.cjs +2 -2
- package/lib/cjs/blob/s3/R2BlobStoreService.cjs.map +1 -0
- package/lib/cjs/blob/s3/S3BlobStoreService.cjs +2 -2
- package/lib/cjs/blob/s3/S3BlobStoreService.cjs.map +1 -0
- package/lib/cjs/blob/s3/index.cjs +2 -2
- package/lib/cjs/blob/s3/index.cjs.map +1 -0
- package/lib/cjs/docker/DockerComposeService.cjs +2 -2
- package/lib/cjs/docker/DockerComposeService.cjs.map +1 -0
- package/lib/cjs/docker/index.cjs +2 -2
- package/lib/cjs/docker/index.cjs.map +1 -0
- package/lib/cjs/feature-flags/constants.cjs +2 -2
- package/lib/cjs/feature-flags/constants.cjs.map +1 -0
- package/lib/cjs/feature-flags/decorators.cjs +2 -2
- package/lib/cjs/feature-flags/decorators.cjs.map +1 -0
- package/lib/cjs/feature-flags/environment.cjs +2 -2
- package/lib/cjs/feature-flags/environment.cjs.map +1 -0
- package/lib/cjs/feature-flags/index.cjs +2 -2
- package/lib/cjs/feature-flags/index.cjs.map +1 -0
- package/lib/cjs/feature-flags/models/FeatureFlag.model.cjs +2 -2
- package/lib/cjs/feature-flags/models/FeatureFlag.model.cjs.map +1 -0
- package/lib/cjs/feature-flags/models/FeatureFlagAccess.model.cjs +2 -2
- package/lib/cjs/feature-flags/models/FeatureFlagAccess.model.cjs.map +1 -0
- package/lib/cjs/feature-flags/readers/FeatureFlagReader.cjs +2 -2
- package/lib/cjs/feature-flags/readers/FeatureFlagReader.cjs.map +1 -0
- package/lib/cjs/feature-flags/readers/index.cjs +2 -2
- package/lib/cjs/feature-flags/readers/index.cjs.map +1 -0
- package/lib/cjs/feature-flags/services/FeatureFlag.service.cjs +2 -2
- package/lib/cjs/feature-flags/services/FeatureFlag.service.cjs.map +1 -0
- package/lib/cjs/feature-flags/types.cjs +2 -2
- package/lib/cjs/feature-flags/types.cjs.map +1 -0
- package/lib/cjs/feature-flags/utils.cjs +2 -2
- package/lib/cjs/feature-flags/utils.cjs.map +1 -0
- package/lib/cjs/graph/engine/constants.cjs +2 -2
- package/lib/cjs/graph/engine/constants.cjs.map +1 -0
- package/lib/cjs/graph/engine/decorators.cjs +2 -2
- package/lib/cjs/graph/engine/decorators.cjs.map +1 -0
- package/lib/cjs/graph/engine/errors/GraphBreakSignal.cjs +2 -2
- package/lib/cjs/graph/engine/errors/GraphBreakSignal.cjs.map +1 -0
- package/lib/cjs/graph/engine/errors/GraphCycleError.cjs +2 -2
- package/lib/cjs/graph/engine/errors/GraphCycleError.cjs.map +1 -0
- package/lib/cjs/graph/engine/errors/GraphExecutionError.cjs +2 -2
- package/lib/cjs/graph/engine/errors/GraphExecutionError.cjs.map +1 -0
- package/lib/cjs/graph/engine/errors/GraphInputError.cjs +2 -2
- package/lib/cjs/graph/engine/errors/GraphInputError.cjs.map +1 -0
- package/lib/cjs/graph/engine/errors/GraphLoopLimitError.cjs +2 -2
- package/lib/cjs/graph/engine/errors/GraphLoopLimitError.cjs.map +1 -0
- package/lib/cjs/graph/engine/errors/GraphPinningError.cjs +2 -2
- package/lib/cjs/graph/engine/errors/GraphPinningError.cjs.map +1 -0
- package/lib/cjs/graph/engine/errors/GraphPortError.cjs +2 -2
- package/lib/cjs/graph/engine/errors/GraphPortError.cjs.map +1 -0
- package/lib/cjs/graph/engine/errors/GraphStoreError.cjs +2 -2
- package/lib/cjs/graph/engine/errors/GraphStoreError.cjs.map +1 -0
- package/lib/cjs/graph/engine/errors/GraphTopologyError.cjs +2 -2
- package/lib/cjs/graph/engine/errors/GraphTopologyError.cjs.map +1 -0
- package/lib/cjs/graph/engine/errors/index.cjs +2 -2
- package/lib/cjs/graph/engine/errors/index.cjs.map +1 -0
- package/lib/cjs/graph/engine/events/GraphExecutionEvent.cjs +2 -2
- package/lib/cjs/graph/engine/events/GraphExecutionEvent.cjs.map +1 -0
- package/lib/cjs/graph/engine/events/GraphExecutionEventEmitter.cjs +2 -2
- package/lib/cjs/graph/engine/events/GraphExecutionEventEmitter.cjs.map +1 -0
- package/lib/cjs/graph/engine/events/GraphExecutionEventFactory.cjs +2 -2
- package/lib/cjs/graph/engine/events/GraphExecutionEventFactory.cjs.map +1 -0
- package/lib/cjs/graph/engine/events/GraphExecutionObserver.cjs +2 -2
- package/lib/cjs/graph/engine/events/GraphExecutionObserver.cjs.map +1 -0
- package/lib/cjs/graph/engine/events/index.cjs +2 -2
- package/lib/cjs/graph/engine/events/index.cjs.map +1 -0
- package/lib/cjs/graph/engine/execution/BreakGraphNodeExecutor.cjs +5 -3
- package/lib/cjs/graph/engine/execution/BreakGraphNodeExecutor.cjs.map +1 -0
- package/lib/cjs/graph/engine/execution/CodeGraphNodeExecutor.cjs +2 -2
- package/lib/cjs/graph/engine/execution/CodeGraphNodeExecutor.cjs.map +1 -0
- package/lib/cjs/graph/engine/execution/CodeSandboxEvaluator.cjs +2 -2
- package/lib/cjs/graph/engine/execution/CodeSandboxEvaluator.cjs.map +1 -0
- package/lib/cjs/graph/engine/execution/GraphExecutionContext.cjs +2 -2
- package/lib/cjs/graph/engine/execution/GraphExecutionContext.cjs.map +1 -0
- package/lib/cjs/graph/engine/execution/GraphExecutionEngine.cjs +2 -2
- package/lib/cjs/graph/engine/execution/GraphExecutionEngine.cjs.map +1 -0
- package/lib/cjs/graph/engine/execution/GraphExecutionFrame.cjs +2 -2
- package/lib/cjs/graph/engine/execution/GraphExecutionFrame.cjs.map +1 -0
- package/lib/cjs/graph/engine/execution/GraphExecutionResult.cjs +2 -2
- package/lib/cjs/graph/engine/execution/GraphExecutionResult.cjs.map +1 -0
- package/lib/cjs/graph/engine/execution/GraphNodeExecutor.cjs +2 -2
- package/lib/cjs/graph/engine/execution/GraphNodeExecutor.cjs.map +1 -0
- package/lib/cjs/graph/engine/execution/IsolatedVmCodeSandboxEvaluator.cjs +2 -2
- package/lib/cjs/graph/engine/execution/IsolatedVmCodeSandboxEvaluator.cjs.map +1 -0
- package/lib/cjs/graph/engine/execution/LogGraphNodeExecutor.cjs +2 -2
- package/lib/cjs/graph/engine/execution/LogGraphNodeExecutor.cjs.map +1 -0
- package/lib/cjs/graph/engine/execution/SwitchGraphNodeExecutor.cjs +2 -2
- package/lib/cjs/graph/engine/execution/SwitchGraphNodeExecutor.cjs.map +1 -0
- package/lib/cjs/graph/engine/execution/index.cjs +2 -2
- package/lib/cjs/graph/engine/execution/index.cjs.map +1 -0
- package/lib/cjs/graph/engine/index.cjs +2 -2
- package/lib/cjs/graph/engine/index.cjs.map +1 -0
- package/lib/cjs/graph/engine/loops/ConditionExpressionEvaluator.cjs +2 -2
- package/lib/cjs/graph/engine/loops/ConditionExpressionEvaluator.cjs.map +1 -0
- package/lib/cjs/graph/engine/loops/ForeachGraphNodeExecutor.cjs +3 -3
- package/lib/cjs/graph/engine/loops/ForeachGraphNodeExecutor.cjs.map +1 -0
- package/lib/cjs/graph/engine/loops/GraphConditionEvaluator.cjs +2 -2
- package/lib/cjs/graph/engine/loops/GraphConditionEvaluator.cjs.map +1 -0
- package/lib/cjs/graph/engine/loops/GraphLoopExecutionContext.cjs +2 -2
- package/lib/cjs/graph/engine/loops/GraphLoopExecutionContext.cjs.map +1 -0
- package/lib/cjs/graph/engine/loops/UntilGraphNodeExecutor.cjs +2 -2
- package/lib/cjs/graph/engine/loops/UntilGraphNodeExecutor.cjs.map +1 -0
- package/lib/cjs/graph/engine/loops/WhileGraphNodeExecutor.cjs +2 -2
- package/lib/cjs/graph/engine/loops/WhileGraphNodeExecutor.cjs.map +1 -0
- package/lib/cjs/graph/engine/loops/index.cjs +2 -2
- package/lib/cjs/graph/engine/loops/index.cjs.map +1 -0
- package/lib/cjs/graph/engine/pinning/GraphPinningDependencyResolver.cjs +2 -2
- package/lib/cjs/graph/engine/pinning/GraphPinningDependencyResolver.cjs.map +1 -0
- package/lib/cjs/graph/engine/pinning/GraphPinningMetadata.cjs +2 -2
- package/lib/cjs/graph/engine/pinning/GraphPinningMetadata.cjs.map +1 -0
- package/lib/cjs/graph/engine/pinning/GraphPinningPolicy.cjs +2 -2
- package/lib/cjs/graph/engine/pinning/GraphPinningPolicy.cjs.map +1 -0
- package/lib/cjs/graph/engine/pinning/GraphPinningService.cjs +2 -2
- package/lib/cjs/graph/engine/pinning/GraphPinningService.cjs.map +1 -0
- package/lib/cjs/graph/engine/pinning/index.cjs +2 -2
- package/lib/cjs/graph/engine/pinning/index.cjs.map +1 -0
- package/lib/cjs/graph/engine/planning/GraphExecutionPlan.cjs +2 -2
- package/lib/cjs/graph/engine/planning/GraphExecutionPlan.cjs.map +1 -0
- package/lib/cjs/graph/engine/planning/GraphExecutionPlanEdge.cjs +2 -2
- package/lib/cjs/graph/engine/planning/GraphExecutionPlanEdge.cjs.map +1 -0
- package/lib/cjs/graph/engine/planning/GraphExecutionPlanLayer.cjs +2 -2
- package/lib/cjs/graph/engine/planning/GraphExecutionPlanLayer.cjs.map +1 -0
- package/lib/cjs/graph/engine/planning/GraphExecutionPlanNode.cjs +2 -2
- package/lib/cjs/graph/engine/planning/GraphExecutionPlanNode.cjs.map +1 -0
- package/lib/cjs/graph/engine/planning/GraphExecutionPlanner.cjs +2 -2
- package/lib/cjs/graph/engine/planning/GraphExecutionPlanner.cjs.map +1 -0
- package/lib/cjs/graph/engine/planning/GraphRelationResolver.cjs +2 -2
- package/lib/cjs/graph/engine/planning/GraphRelationResolver.cjs.map +1 -0
- package/lib/cjs/graph/engine/planning/GraphTopology.cjs +2 -2
- package/lib/cjs/graph/engine/planning/GraphTopology.cjs.map +1 -0
- package/lib/cjs/graph/engine/planning/index.cjs +2 -2
- package/lib/cjs/graph/engine/planning/index.cjs.map +1 -0
- package/lib/cjs/graph/engine/registry/GraphNodeExecutorRegistry.cjs +2 -2
- package/lib/cjs/graph/engine/registry/GraphNodeExecutorRegistry.cjs.map +1 -0
- package/lib/cjs/graph/engine/registry/GraphNodeExecutorResolver.cjs +2 -2
- package/lib/cjs/graph/engine/registry/GraphNodeExecutorResolver.cjs.map +1 -0
- package/lib/cjs/graph/engine/registry/index.cjs +2 -2
- package/lib/cjs/graph/engine/registry/index.cjs.map +1 -0
- package/lib/cjs/graph/engine/snapshots/GraphExecutionSnapshotMapper.cjs +2 -2
- package/lib/cjs/graph/engine/snapshots/GraphExecutionSnapshotMapper.cjs.map +1 -0
- package/lib/cjs/graph/engine/snapshots/index.cjs +2 -2
- package/lib/cjs/graph/engine/snapshots/index.cjs.map +1 -0
- package/lib/cjs/graph/engine/store/GraphCachedValue.cjs +2 -2
- package/lib/cjs/graph/engine/store/GraphCachedValue.cjs.map +1 -0
- package/lib/cjs/graph/engine/store/GraphValueKey.cjs +2 -2
- package/lib/cjs/graph/engine/store/GraphValueKey.cjs.map +1 -0
- package/lib/cjs/graph/engine/store/GraphValueStore.cjs +2 -2
- package/lib/cjs/graph/engine/store/GraphValueStore.cjs.map +1 -0
- package/lib/cjs/graph/engine/store/GraphValueStoreAdapter.cjs +2 -2
- package/lib/cjs/graph/engine/store/GraphValueStoreAdapter.cjs.map +1 -0
- package/lib/cjs/graph/engine/store/InMemoryGraphValueStoreAdapter.cjs +2 -2
- package/lib/cjs/graph/engine/store/InMemoryGraphValueStoreAdapter.cjs.map +1 -0
- package/lib/cjs/graph/engine/store/index.cjs +2 -2
- package/lib/cjs/graph/engine/store/index.cjs.map +1 -0
- package/lib/cjs/graph/engine/types.cjs +2 -2
- package/lib/cjs/graph/engine/types.cjs.map +1 -0
- package/lib/cjs/graph/engine/validation/GraphDefinitionValidator.cjs +2 -2
- package/lib/cjs/graph/engine/validation/GraphDefinitionValidator.cjs.map +1 -0
- package/lib/cjs/graph/engine/validation/GraphPortSchemaResolver.cjs +2 -2
- package/lib/cjs/graph/engine/validation/GraphPortSchemaResolver.cjs.map +1 -0
- package/lib/cjs/graph/engine/validation/GraphValueValidator.cjs +2 -2
- package/lib/cjs/graph/engine/validation/GraphValueValidator.cjs.map +1 -0
- package/lib/cjs/graph/engine/validation/index.cjs +2 -2
- package/lib/cjs/graph/engine/validation/index.cjs.map +1 -0
- package/lib/cjs/graph/index.cjs +2 -2
- package/lib/cjs/graph/index.cjs.map +1 -0
- package/lib/cjs/graph/shared/constants.cjs +2 -2
- package/lib/cjs/graph/shared/constants.cjs.map +1 -0
- package/lib/cjs/graph/shared/index.cjs +2 -2
- package/lib/cjs/graph/shared/index.cjs.map +1 -0
- package/lib/cjs/graph/shared/nodes/agent.cjs +2 -2
- package/lib/cjs/graph/shared/nodes/agent.cjs.map +1 -0
- package/lib/cjs/graph/shared/nodes/base.cjs +2 -2
- package/lib/cjs/graph/shared/nodes/base.cjs.map +1 -0
- package/lib/cjs/graph/shared/nodes/category-styles.cjs +2 -2
- package/lib/cjs/graph/shared/nodes/category-styles.cjs.map +1 -0
- package/lib/cjs/graph/shared/nodes/flow-control.cjs +2 -2
- package/lib/cjs/graph/shared/nodes/flow-control.cjs.map +1 -0
- package/lib/cjs/graph/shared/nodes/index.cjs +2 -2
- package/lib/cjs/graph/shared/nodes/index.cjs.map +1 -0
- package/lib/cjs/graph/shared/nodes/triggers.cjs +2 -2
- package/lib/cjs/graph/shared/nodes/triggers.cjs.map +1 -0
- package/lib/cjs/graph/shared/types.cjs +2 -2
- package/lib/cjs/graph/shared/types.cjs.map +1 -0
- package/lib/cjs/index.cjs +4 -4
- package/lib/cjs/index.cjs.map +1 -0
- package/lib/cjs/keycloak/broker.cjs +22 -0
- package/lib/cjs/keycloak/broker.cjs.map +1 -0
- package/lib/cjs/keycloak/index.cjs +3 -2
- package/lib/cjs/keycloak/index.cjs.map +1 -0
- package/lib/cjs/keycloak/services/KeycloakAuthService.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakAuthService.cjs.map +1 -0
- package/lib/cjs/keycloak/services/KeycloakClientService.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakClientService.cjs.map +1 -0
- package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs +71 -2
- package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs.map +1 -0
- package/lib/cjs/keycloak/services/KeycloakRealmService.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakRealmService.cjs.map +1 -0
- package/lib/cjs/keycloak/services/KeycloakRoleService.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakRoleService.cjs.map +1 -0
- package/lib/cjs/keycloak/services/KeycloakService.cjs +6 -2
- package/lib/cjs/keycloak/services/KeycloakService.cjs.map +1 -0
- package/lib/cjs/keycloak/services/KeycloakUserService.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakUserService.cjs.map +1 -0
- package/lib/cjs/keycloak/services/index.cjs +2 -2
- package/lib/cjs/keycloak/services/index.cjs.map +1 -0
- package/lib/cjs/keycloak/services/runtime.cjs +2 -2
- package/lib/cjs/keycloak/services/runtime.cjs.map +1 -0
- package/lib/cjs/keycloak/types.cjs +2 -2
- package/lib/cjs/keycloak/types.cjs.map +1 -0
- package/lib/cjs/kibana/builders/KibanaIndexBuilder.cjs +2 -2
- package/lib/cjs/kibana/builders/KibanaIndexBuilder.cjs.map +1 -0
- package/lib/cjs/kibana/builders/KibanaIndexBuilderCollection.cjs +2 -2
- package/lib/cjs/kibana/builders/KibanaIndexBuilderCollection.cjs.map +1 -0
- package/lib/cjs/kibana/builders/index.cjs +2 -2
- package/lib/cjs/kibana/builders/index.cjs.map +1 -0
- package/lib/cjs/kibana/helpers.cjs +2 -2
- package/lib/cjs/kibana/helpers.cjs.map +1 -0
- package/lib/cjs/kibana/index.cjs +2 -2
- package/lib/cjs/kibana/index.cjs.map +1 -0
- package/lib/cjs/kibana/services/KibanaAuthService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaAuthService.cjs.map +1 -0
- package/lib/cjs/kibana/services/KibanaDashboardService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaDashboardService.cjs.map +1 -0
- package/lib/cjs/kibana/services/KibanaDataViewService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaDataViewService.cjs.map +1 -0
- package/lib/cjs/kibana/services/KibanaRoleService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaRoleService.cjs.map +1 -0
- package/lib/cjs/kibana/services/KibanaService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaService.cjs.map +1 -0
- package/lib/cjs/kibana/services/KibanaSpaceService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaSpaceService.cjs.map +1 -0
- package/lib/cjs/kibana/services/KibanaUserService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaUserService.cjs.map +1 -0
- package/lib/cjs/kibana/services/index.cjs +2 -2
- package/lib/cjs/kibana/services/index.cjs.map +1 -0
- package/lib/cjs/kibana/services/runtime.cjs +2 -2
- package/lib/cjs/kibana/services/runtime.cjs.map +1 -0
- package/lib/cjs/kibana/types.cjs +2 -2
- package/lib/cjs/kibana/types.cjs.map +1 -0
- package/lib/cjs/loader/ObjectLoader.cjs +2 -2
- package/lib/cjs/loader/ObjectLoader.cjs.map +1 -0
- package/lib/cjs/loader/families.cjs +2 -2
- package/lib/cjs/loader/families.cjs.map +1 -0
- package/lib/cjs/loader/index.cjs +2 -2
- package/lib/cjs/loader/index.cjs.map +1 -0
- package/lib/cjs/loader/types.cjs +2 -2
- package/lib/cjs/loader/types.cjs.map +1 -0
- package/lib/cjs/namespaces/index.cjs +2 -2
- package/lib/cjs/namespaces/index.cjs.map +1 -0
- package/lib/cjs/namespaces/models/authorization-model.cjs +2 -2
- package/lib/cjs/namespaces/models/authorization-model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/effective-permission.model.cjs +2 -2
- package/lib/cjs/namespaces/models/effective-permission.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/group-membership.model.cjs +2 -2
- package/lib/cjs/namespaces/models/group-membership.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/group.model.cjs +2 -2
- package/lib/cjs/namespaces/models/group.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/index.cjs +2 -2
- package/lib/cjs/namespaces/models/index.cjs.map +1 -0
- package/lib/cjs/namespaces/models/inheritance-block.model.cjs +2 -2
- package/lib/cjs/namespaces/models/inheritance-block.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/org-unit-closure.model.cjs +2 -2
- package/lib/cjs/namespaces/models/org-unit-closure.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/org-unit-membership.model.cjs +2 -2
- package/lib/cjs/namespaces/models/org-unit-membership.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/org-unit-profile.model.cjs +2 -2
- package/lib/cjs/namespaces/models/org-unit-profile.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/org-unit.model.cjs +2 -2
- package/lib/cjs/namespaces/models/org-unit.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/permission.model.cjs +2 -2
- package/lib/cjs/namespaces/models/permission.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/principal.model.cjs +2 -2
- package/lib/cjs/namespaces/models/principal.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/protected-resource.model.cjs +2 -2
- package/lib/cjs/namespaces/models/protected-resource.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/resource-grant.model.cjs +2 -2
- package/lib/cjs/namespaces/models/resource-grant.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/role-assignment.model.cjs +2 -2
- package/lib/cjs/namespaces/models/role-assignment.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/role-permission.model.cjs +2 -2
- package/lib/cjs/namespaces/models/role-permission.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/role.model.cjs +2 -2
- package/lib/cjs/namespaces/models/role.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/storage-binding.model.cjs +2 -2
- package/lib/cjs/namespaces/models/storage-binding.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/tenant-membership.model.cjs +2 -2
- package/lib/cjs/namespaces/models/tenant-membership.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/tenant-profile.model.cjs +2 -2
- package/lib/cjs/namespaces/models/tenant-profile.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/tenant.model.cjs +2 -2
- package/lib/cjs/namespaces/models/tenant.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/user.model.cjs +2 -2
- package/lib/cjs/namespaces/models/user.model.cjs.map +1 -0
- package/lib/cjs/namespaces/org-based-authorization-system.cjs +2 -2
- package/lib/cjs/namespaces/org-based-authorization-system.cjs.map +1 -0
- package/lib/cjs/namespaces/org-based-authorization-system.models.cjs +2 -2
- package/lib/cjs/namespaces/org-based-authorization-system.models.cjs.map +1 -0
- package/lib/cjs/namespaces/org-based-authorization-system.services.cjs +2 -2
- package/lib/cjs/namespaces/org-based-authorization-system.services.cjs.map +1 -0
- package/lib/cjs/namespaces/services/authz.service.cjs +2 -2
- package/lib/cjs/namespaces/services/authz.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/bootstrap.service.cjs +2 -2
- package/lib/cjs/namespaces/services/bootstrap.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/effective-permission.service.cjs +2 -2
- package/lib/cjs/namespaces/services/effective-permission.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/group-membership.service.cjs +2 -2
- package/lib/cjs/namespaces/services/group-membership.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/group.service.cjs +2 -2
- package/lib/cjs/namespaces/services/group.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/index.cjs +2 -2
- package/lib/cjs/namespaces/services/index.cjs.map +1 -0
- package/lib/cjs/namespaces/services/inheritance-block.service.cjs +2 -2
- package/lib/cjs/namespaces/services/inheritance-block.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/org-unit-closure.service.cjs +2 -2
- package/lib/cjs/namespaces/services/org-unit-closure.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/org-unit-membership.service.cjs +2 -2
- package/lib/cjs/namespaces/services/org-unit-membership.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/org-unit-profile.service.cjs +2 -2
- package/lib/cjs/namespaces/services/org-unit-profile.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/org-unit.service.cjs +2 -2
- package/lib/cjs/namespaces/services/org-unit.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/permission.service.cjs +2 -2
- package/lib/cjs/namespaces/services/permission.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/principal.service.cjs +2 -2
- package/lib/cjs/namespaces/services/principal.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/protected-resource.service.cjs +2 -2
- package/lib/cjs/namespaces/services/protected-resource.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/resource-grant.service.cjs +2 -2
- package/lib/cjs/namespaces/services/resource-grant.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/resource-lifecycle.service.cjs +2 -2
- package/lib/cjs/namespaces/services/resource-lifecycle.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/role-assignment.service.cjs +2 -2
- package/lib/cjs/namespaces/services/role-assignment.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/role-permission.service.cjs +2 -2
- package/lib/cjs/namespaces/services/role-permission.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/role.service.cjs +2 -2
- package/lib/cjs/namespaces/services/role.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/storage-binding.service.cjs +2 -2
- package/lib/cjs/namespaces/services/storage-binding.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/system-management.service.cjs +2 -2
- package/lib/cjs/namespaces/services/system-management.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/tenant-membership.service.cjs +2 -2
- package/lib/cjs/namespaces/services/tenant-membership.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/tenant-profile.service.cjs +2 -2
- package/lib/cjs/namespaces/services/tenant-profile.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/tenant.service.cjs +2 -2
- package/lib/cjs/namespaces/services/tenant.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/user.service.cjs +2 -2
- package/lib/cjs/namespaces/services/user.service.cjs.map +1 -0
- package/lib/cjs/namespaces/types.cjs +2 -2
- package/lib/cjs/namespaces/types.cjs.map +1 -0
- package/lib/cjs/namespaces/utils.cjs +2 -2
- package/lib/cjs/namespaces/utils.cjs.map +1 -0
- package/lib/cjs/nest/decorators.cjs +2 -2
- package/lib/cjs/nest/decorators.cjs.map +1 -0
- package/lib/cjs/nest/graph/GraphExecutionController.cjs +2 -2
- package/lib/cjs/nest/graph/GraphExecutionController.cjs.map +1 -0
- package/lib/cjs/nest/graph/GraphExecutionModule.cjs +2 -2
- package/lib/cjs/nest/graph/GraphExecutionModule.cjs.map +1 -0
- package/lib/cjs/nest/graph/GraphExecutionResultModel.cjs +2 -2
- package/lib/cjs/nest/graph/GraphExecutionResultModel.cjs.map +1 -0
- package/lib/cjs/nest/graph/GraphExecutorRegistryFactory.cjs +2 -2
- package/lib/cjs/nest/graph/GraphExecutorRegistryFactory.cjs.map +1 -0
- package/lib/cjs/nest/graph/GraphResultService.cjs +2 -2
- package/lib/cjs/nest/graph/GraphResultService.cjs.map +1 -0
- package/lib/cjs/nest/graph/GraphWorkflowModel.cjs +2 -2
- package/lib/cjs/nest/graph/GraphWorkflowModel.cjs.map +1 -0
- package/lib/cjs/nest/graph/GraphWorkflowService.cjs +2 -2
- package/lib/cjs/nest/graph/GraphWorkflowService.cjs.map +1 -0
- package/lib/cjs/nest/graph/index.cjs +2 -2
- package/lib/cjs/nest/graph/index.cjs.map +1 -0
- package/lib/cjs/nest/graph/main.cjs +2 -2
- package/lib/cjs/nest/graph/main.cjs.map +1 -0
- package/lib/cjs/nest/index.cjs +2 -2
- package/lib/cjs/nest/index.cjs.map +1 -0
- package/lib/cjs/nest/keycloakAuthHandler.cjs +2 -2
- package/lib/cjs/nest/keycloakAuthHandler.cjs.map +1 -0
- package/lib/cjs/nest/keycloakModule.cjs +2 -2
- package/lib/cjs/nest/keycloakModule.cjs.map +1 -0
- package/lib/cjs/nest/logging.cjs +2 -2
- package/lib/cjs/nest/logging.cjs.map +1 -0
- package/lib/cjs/nest/types.cjs +2 -2
- package/lib/cjs/nest/types.cjs.map +1 -0
- package/lib/cjs/nest/utils.cjs +2 -2
- package/lib/cjs/nest/utils.cjs.map +1 -0
- package/lib/cjs/plugins/contract.cjs +2 -2
- package/lib/cjs/plugins/contract.cjs.map +1 -0
- package/lib/cjs/plugins/index.cjs +2 -2
- package/lib/cjs/plugins/index.cjs.map +1 -0
- package/lib/cjs/plugins/kibana/host.cjs +2 -2
- package/lib/cjs/plugins/kibana/host.cjs.map +1 -0
- package/lib/cjs/plugins/kibana/index.cjs +2 -2
- package/lib/cjs/plugins/kibana/index.cjs.map +1 -0
- package/lib/cjs/plugins/kibana/installer.cjs +2 -2
- package/lib/cjs/plugins/kibana/installer.cjs.map +1 -0
- package/lib/cjs/plugins/kibana/manifest.cjs +2 -2
- package/lib/cjs/plugins/kibana/manifest.cjs.map +1 -0
- package/lib/cjs/plugins/kibana/templates.cjs +2 -2
- package/lib/cjs/plugins/kibana/templates.cjs.map +1 -0
- package/lib/cjs/plugins/kibana/types.cjs +2 -2
- package/lib/cjs/plugins/kibana/types.cjs.map +1 -0
- package/lib/cjs/plugins/superset/host.cjs +2 -2
- package/lib/cjs/plugins/superset/host.cjs.map +1 -0
- package/lib/cjs/plugins/superset/index.cjs +2 -2
- package/lib/cjs/plugins/superset/index.cjs.map +1 -0
- package/lib/cjs/plugins/superset/installer.cjs +2 -2
- package/lib/cjs/plugins/superset/installer.cjs.map +1 -0
- package/lib/cjs/plugins/superset/manifest.cjs +2 -2
- package/lib/cjs/plugins/superset/manifest.cjs.map +1 -0
- package/lib/cjs/plugins/superset/templates.cjs +2 -2
- package/lib/cjs/plugins/superset/templates.cjs.map +1 -0
- package/lib/cjs/plugins/superset/types.cjs +2 -2
- package/lib/cjs/plugins/superset/types.cjs.map +1 -0
- package/lib/cjs/secrets/aws/AwsSecretService.cjs +2 -2
- package/lib/cjs/secrets/aws/AwsSecretService.cjs.map +1 -0
- package/lib/cjs/secrets/aws/AwsSecretServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/aws/AwsSecretServiceConfig.cjs.map +1 -0
- package/lib/cjs/secrets/aws/index.cjs +2 -2
- package/lib/cjs/secrets/aws/index.cjs.map +1 -0
- package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs +2 -2
- package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs.map +1 -0
- package/lib/cjs/secrets/azure/AzureKeyVaultSecretServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/azure/AzureKeyVaultSecretServiceConfig.cjs.map +1 -0
- package/lib/cjs/secrets/azure/index.cjs +2 -2
- package/lib/cjs/secrets/azure/index.cjs.map +1 -0
- package/lib/cjs/secrets/core/SecretErrors.cjs +2 -2
- package/lib/cjs/secrets/core/SecretErrors.cjs.map +1 -0
- package/lib/cjs/secrets/core/SecretName.cjs +2 -2
- package/lib/cjs/secrets/core/SecretName.cjs.map +1 -0
- package/lib/cjs/secrets/core/SecretReference.cjs +2 -2
- package/lib/cjs/secrets/core/SecretReference.cjs.map +1 -0
- package/lib/cjs/secrets/core/SecretSerialization.cjs +2 -2
- package/lib/cjs/secrets/core/SecretSerialization.cjs.map +1 -0
- package/lib/cjs/secrets/core/SecretService.cjs +2 -2
- package/lib/cjs/secrets/core/SecretService.cjs.map +1 -0
- package/lib/cjs/secrets/core/SecretTypes.cjs +2 -2
- package/lib/cjs/secrets/core/SecretTypes.cjs.map +1 -0
- package/lib/cjs/secrets/core/index.cjs +2 -2
- package/lib/cjs/secrets/core/index.cjs.map +1 -0
- package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs +2 -2
- package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs.map +1 -0
- package/lib/cjs/secrets/gcp/GcpSecretManagerServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/gcp/GcpSecretManagerServiceConfig.cjs.map +1 -0
- package/lib/cjs/secrets/gcp/index.cjs +2 -2
- package/lib/cjs/secrets/gcp/index.cjs.map +1 -0
- package/lib/cjs/secrets/index.cjs +2 -2
- package/lib/cjs/secrets/index.cjs.map +1 -0
- package/lib/cjs/secrets/model/ModelSecretCrypto.cjs +2 -2
- package/lib/cjs/secrets/model/ModelSecretCrypto.cjs.map +1 -0
- package/lib/cjs/secrets/model/ModelSecretService.cjs +2 -2
- package/lib/cjs/secrets/model/ModelSecretService.cjs.map +1 -0
- package/lib/cjs/secrets/model/ModelSecretServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/model/ModelSecretServiceConfig.cjs.map +1 -0
- package/lib/cjs/secrets/model/Secret.cjs +2 -2
- package/lib/cjs/secrets/model/Secret.cjs.map +1 -0
- package/lib/cjs/secrets/model/index.cjs +2 -2
- package/lib/cjs/secrets/model/index.cjs.map +1 -0
- package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs +2 -2
- package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs.map +1 -0
- package/lib/cjs/secrets/onepassword/OnePasswordSecretServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/onepassword/OnePasswordSecretServiceConfig.cjs.map +1 -0
- package/lib/cjs/secrets/onepassword/index.cjs +2 -2
- package/lib/cjs/secrets/onepassword/index.cjs.map +1 -0
- package/lib/cjs/secrets/vault/VaultSecretService.cjs +2 -2
- package/lib/cjs/secrets/vault/VaultSecretService.cjs.map +1 -0
- package/lib/cjs/secrets/vault/VaultSecretServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/vault/VaultSecretServiceConfig.cjs.map +1 -0
- package/lib/cjs/secrets/vault/index.cjs +2 -2
- package/lib/cjs/secrets/vault/index.cjs.map +1 -0
- package/lib/cjs/shared/runtime.cjs +2 -2
- package/lib/cjs/shared/runtime.cjs.map +1 -0
- package/lib/cjs/utils.cjs +2 -2
- package/lib/cjs/utils.cjs.map +1 -0
- package/lib/esm/blob/azure/AzureBlobStoreService.js +1 -1
- package/lib/esm/blob/azure/AzureBlobStoreService.js.map +1 -0
- package/lib/esm/blob/azure/index.js +1 -1
- package/lib/esm/blob/azure/index.js.map +1 -0
- package/lib/esm/blob/core/BlobErrors.js +1 -1
- package/lib/esm/blob/core/BlobErrors.js.map +1 -0
- package/lib/esm/blob/core/BlobKey.js +1 -1
- package/lib/esm/blob/core/BlobKey.js.map +1 -0
- package/lib/esm/blob/core/BlobStoreFactory.js +1 -1
- package/lib/esm/blob/core/BlobStoreFactory.js.map +1 -0
- package/lib/esm/blob/core/BlobStoreService.js +1 -1
- package/lib/esm/blob/core/BlobStoreService.js.map +1 -0
- package/lib/esm/blob/core/BlobTypes.js +1 -1
- package/lib/esm/blob/core/BlobTypes.js.map +1 -0
- package/lib/esm/blob/core/BlobValue.js +1 -1
- package/lib/esm/blob/core/BlobValue.js.map +1 -0
- package/lib/esm/blob/core/index.js +1 -1
- package/lib/esm/blob/core/index.js.map +1 -0
- package/lib/esm/blob/gcp/GcsBlobStoreService.js +1 -1
- package/lib/esm/blob/gcp/GcsBlobStoreService.js.map +1 -0
- package/lib/esm/blob/gcp/index.js +1 -1
- package/lib/esm/blob/gcp/index.js.map +1 -0
- package/lib/esm/blob/index.js +1 -1
- package/lib/esm/blob/index.js.map +1 -0
- package/lib/esm/blob/ipfs/IpfsBlobStoreService.js +1 -1
- package/lib/esm/blob/ipfs/IpfsBlobStoreService.js.map +1 -0
- package/lib/esm/blob/ipfs/IpfsKeyIndex.js +1 -1
- package/lib/esm/blob/ipfs/IpfsKeyIndex.js.map +1 -0
- package/lib/esm/blob/ipfs/LocalJsonIpfsKeyIndex.js +1 -1
- package/lib/esm/blob/ipfs/LocalJsonIpfsKeyIndex.js.map +1 -0
- package/lib/esm/blob/ipfs/MemoryIpfsKeyIndex.js +1 -1
- package/lib/esm/blob/ipfs/MemoryIpfsKeyIndex.js.map +1 -0
- package/lib/esm/blob/ipfs/PostgresIpfsKeyIndex.js +1 -1
- package/lib/esm/blob/ipfs/PostgresIpfsKeyIndex.js.map +1 -0
- package/lib/esm/blob/ipfs/index.js +1 -1
- package/lib/esm/blob/ipfs/index.js.map +1 -0
- package/lib/esm/blob/local/LocalBlobStoreService.js +1 -1
- package/lib/esm/blob/local/LocalBlobStoreService.js.map +1 -0
- package/lib/esm/blob/local/index.js +1 -1
- package/lib/esm/blob/local/index.js.map +1 -0
- package/lib/esm/blob/memory/MemoryBlobStoreService.js +1 -1
- package/lib/esm/blob/memory/MemoryBlobStoreService.js.map +1 -0
- package/lib/esm/blob/memory/index.js +1 -1
- package/lib/esm/blob/memory/index.js.map +1 -0
- package/lib/esm/blob/s3/MinioBlobStoreService.js +1 -1
- package/lib/esm/blob/s3/MinioBlobStoreService.js.map +1 -0
- package/lib/esm/blob/s3/R2BlobStoreService.js +1 -1
- package/lib/esm/blob/s3/R2BlobStoreService.js.map +1 -0
- package/lib/esm/blob/s3/S3BlobStoreService.js +1 -1
- package/lib/esm/blob/s3/S3BlobStoreService.js.map +1 -0
- package/lib/esm/blob/s3/index.js +1 -1
- package/lib/esm/blob/s3/index.js.map +1 -0
- package/lib/esm/docker/DockerComposeService.js +1 -1
- package/lib/esm/docker/DockerComposeService.js.map +1 -0
- package/lib/esm/docker/index.js +1 -1
- package/lib/esm/docker/index.js.map +1 -0
- package/lib/esm/feature-flags/constants.js +1 -1
- package/lib/esm/feature-flags/constants.js.map +1 -0
- package/lib/esm/feature-flags/decorators.js +1 -1
- package/lib/esm/feature-flags/decorators.js.map +1 -0
- package/lib/esm/feature-flags/environment.js +1 -1
- package/lib/esm/feature-flags/environment.js.map +1 -0
- package/lib/esm/feature-flags/index.js +1 -1
- package/lib/esm/feature-flags/index.js.map +1 -0
- package/lib/esm/feature-flags/models/FeatureFlag.model.js +1 -1
- package/lib/esm/feature-flags/models/FeatureFlag.model.js.map +1 -0
- package/lib/esm/feature-flags/models/FeatureFlagAccess.model.js +1 -1
- package/lib/esm/feature-flags/models/FeatureFlagAccess.model.js.map +1 -0
- package/lib/esm/feature-flags/readers/FeatureFlagReader.js +1 -1
- package/lib/esm/feature-flags/readers/FeatureFlagReader.js.map +1 -0
- package/lib/esm/feature-flags/readers/index.js +1 -1
- package/lib/esm/feature-flags/readers/index.js.map +1 -0
- package/lib/esm/feature-flags/services/FeatureFlag.service.js +1 -1
- package/lib/esm/feature-flags/services/FeatureFlag.service.js.map +1 -0
- package/lib/esm/feature-flags/types.js +1 -1
- package/lib/esm/feature-flags/types.js.map +1 -0
- package/lib/esm/feature-flags/utils.js +1 -1
- package/lib/esm/feature-flags/utils.js.map +1 -0
- package/lib/esm/graph/engine/constants.js +1 -1
- package/lib/esm/graph/engine/constants.js.map +1 -0
- package/lib/esm/graph/engine/decorators.js +1 -1
- package/lib/esm/graph/engine/decorators.js.map +1 -0
- package/lib/esm/graph/engine/errors/GraphBreakSignal.js +1 -1
- package/lib/esm/graph/engine/errors/GraphBreakSignal.js.map +1 -0
- package/lib/esm/graph/engine/errors/GraphCycleError.js +1 -1
- package/lib/esm/graph/engine/errors/GraphCycleError.js.map +1 -0
- package/lib/esm/graph/engine/errors/GraphExecutionError.js +1 -1
- package/lib/esm/graph/engine/errors/GraphExecutionError.js.map +1 -0
- package/lib/esm/graph/engine/errors/GraphInputError.js +1 -1
- package/lib/esm/graph/engine/errors/GraphInputError.js.map +1 -0
- package/lib/esm/graph/engine/errors/GraphLoopLimitError.js +1 -1
- package/lib/esm/graph/engine/errors/GraphLoopLimitError.js.map +1 -0
- package/lib/esm/graph/engine/errors/GraphPinningError.js +1 -1
- package/lib/esm/graph/engine/errors/GraphPinningError.js.map +1 -0
- package/lib/esm/graph/engine/errors/GraphPortError.js +1 -1
- package/lib/esm/graph/engine/errors/GraphPortError.js.map +1 -0
- package/lib/esm/graph/engine/errors/GraphStoreError.js +1 -1
- package/lib/esm/graph/engine/errors/GraphStoreError.js.map +1 -0
- package/lib/esm/graph/engine/errors/GraphTopologyError.js +1 -1
- package/lib/esm/graph/engine/errors/GraphTopologyError.js.map +1 -0
- package/lib/esm/graph/engine/errors/index.js +1 -1
- package/lib/esm/graph/engine/errors/index.js.map +1 -0
- package/lib/esm/graph/engine/events/GraphExecutionEvent.js +1 -1
- package/lib/esm/graph/engine/events/GraphExecutionEvent.js.map +1 -0
- package/lib/esm/graph/engine/events/GraphExecutionEventEmitter.js +1 -1
- package/lib/esm/graph/engine/events/GraphExecutionEventEmitter.js.map +1 -0
- package/lib/esm/graph/engine/events/GraphExecutionEventFactory.js +1 -1
- package/lib/esm/graph/engine/events/GraphExecutionEventFactory.js.map +1 -0
- package/lib/esm/graph/engine/events/GraphExecutionObserver.js +1 -1
- package/lib/esm/graph/engine/events/GraphExecutionObserver.js.map +1 -0
- package/lib/esm/graph/engine/events/index.js +1 -1
- package/lib/esm/graph/engine/events/index.js.map +1 -0
- package/lib/esm/graph/engine/execution/BreakGraphNodeExecutor.js +4 -2
- package/lib/esm/graph/engine/execution/BreakGraphNodeExecutor.js.map +1 -0
- package/lib/esm/graph/engine/execution/CodeGraphNodeExecutor.js +1 -1
- package/lib/esm/graph/engine/execution/CodeGraphNodeExecutor.js.map +1 -0
- package/lib/esm/graph/engine/execution/CodeSandboxEvaluator.js +1 -1
- package/lib/esm/graph/engine/execution/CodeSandboxEvaluator.js.map +1 -0
- package/lib/esm/graph/engine/execution/GraphExecutionContext.js +1 -1
- package/lib/esm/graph/engine/execution/GraphExecutionContext.js.map +1 -0
- package/lib/esm/graph/engine/execution/GraphExecutionEngine.js +1 -1
- package/lib/esm/graph/engine/execution/GraphExecutionEngine.js.map +1 -0
- package/lib/esm/graph/engine/execution/GraphExecutionFrame.js +1 -1
- package/lib/esm/graph/engine/execution/GraphExecutionFrame.js.map +1 -0
- package/lib/esm/graph/engine/execution/GraphExecutionResult.js +1 -1
- package/lib/esm/graph/engine/execution/GraphExecutionResult.js.map +1 -0
- package/lib/esm/graph/engine/execution/GraphNodeExecutor.js +1 -1
- package/lib/esm/graph/engine/execution/GraphNodeExecutor.js.map +1 -0
- package/lib/esm/graph/engine/execution/IsolatedVmCodeSandboxEvaluator.js +1 -1
- package/lib/esm/graph/engine/execution/IsolatedVmCodeSandboxEvaluator.js.map +1 -0
- package/lib/esm/graph/engine/execution/LogGraphNodeExecutor.js +1 -1
- package/lib/esm/graph/engine/execution/LogGraphNodeExecutor.js.map +1 -0
- package/lib/esm/graph/engine/execution/SwitchGraphNodeExecutor.js +1 -1
- package/lib/esm/graph/engine/execution/SwitchGraphNodeExecutor.js.map +1 -0
- package/lib/esm/graph/engine/execution/index.js +1 -1
- package/lib/esm/graph/engine/execution/index.js.map +1 -0
- package/lib/esm/graph/engine/index.js +1 -1
- package/lib/esm/graph/engine/index.js.map +1 -0
- package/lib/esm/graph/engine/loops/ConditionExpressionEvaluator.js +1 -1
- package/lib/esm/graph/engine/loops/ConditionExpressionEvaluator.js.map +1 -0
- package/lib/esm/graph/engine/loops/ForeachGraphNodeExecutor.js +2 -2
- package/lib/esm/graph/engine/loops/ForeachGraphNodeExecutor.js.map +1 -0
- package/lib/esm/graph/engine/loops/GraphConditionEvaluator.js +1 -1
- package/lib/esm/graph/engine/loops/GraphConditionEvaluator.js.map +1 -0
- package/lib/esm/graph/engine/loops/GraphLoopExecutionContext.js +1 -1
- package/lib/esm/graph/engine/loops/GraphLoopExecutionContext.js.map +1 -0
- package/lib/esm/graph/engine/loops/UntilGraphNodeExecutor.js +1 -1
- package/lib/esm/graph/engine/loops/UntilGraphNodeExecutor.js.map +1 -0
- package/lib/esm/graph/engine/loops/WhileGraphNodeExecutor.js +1 -1
- package/lib/esm/graph/engine/loops/WhileGraphNodeExecutor.js.map +1 -0
- package/lib/esm/graph/engine/loops/index.js +1 -1
- package/lib/esm/graph/engine/loops/index.js.map +1 -0
- package/lib/esm/graph/engine/pinning/GraphPinningDependencyResolver.js +1 -1
- package/lib/esm/graph/engine/pinning/GraphPinningDependencyResolver.js.map +1 -0
- package/lib/esm/graph/engine/pinning/GraphPinningMetadata.js +1 -1
- package/lib/esm/graph/engine/pinning/GraphPinningMetadata.js.map +1 -0
- package/lib/esm/graph/engine/pinning/GraphPinningPolicy.js +1 -1
- package/lib/esm/graph/engine/pinning/GraphPinningPolicy.js.map +1 -0
- package/lib/esm/graph/engine/pinning/GraphPinningService.js +1 -1
- package/lib/esm/graph/engine/pinning/GraphPinningService.js.map +1 -0
- package/lib/esm/graph/engine/pinning/index.js +1 -1
- package/lib/esm/graph/engine/pinning/index.js.map +1 -0
- package/lib/esm/graph/engine/planning/GraphExecutionPlan.js +1 -1
- package/lib/esm/graph/engine/planning/GraphExecutionPlan.js.map +1 -0
- package/lib/esm/graph/engine/planning/GraphExecutionPlanEdge.js +1 -1
- package/lib/esm/graph/engine/planning/GraphExecutionPlanEdge.js.map +1 -0
- package/lib/esm/graph/engine/planning/GraphExecutionPlanLayer.js +1 -1
- package/lib/esm/graph/engine/planning/GraphExecutionPlanLayer.js.map +1 -0
- package/lib/esm/graph/engine/planning/GraphExecutionPlanNode.js +1 -1
- package/lib/esm/graph/engine/planning/GraphExecutionPlanNode.js.map +1 -0
- package/lib/esm/graph/engine/planning/GraphExecutionPlanner.js +1 -1
- package/lib/esm/graph/engine/planning/GraphExecutionPlanner.js.map +1 -0
- package/lib/esm/graph/engine/planning/GraphRelationResolver.js +1 -1
- package/lib/esm/graph/engine/planning/GraphRelationResolver.js.map +1 -0
- package/lib/esm/graph/engine/planning/GraphTopology.js +1 -1
- package/lib/esm/graph/engine/planning/GraphTopology.js.map +1 -0
- package/lib/esm/graph/engine/planning/index.js +1 -1
- package/lib/esm/graph/engine/planning/index.js.map +1 -0
- package/lib/esm/graph/engine/registry/GraphNodeExecutorRegistry.js +1 -1
- package/lib/esm/graph/engine/registry/GraphNodeExecutorRegistry.js.map +1 -0
- package/lib/esm/graph/engine/registry/GraphNodeExecutorResolver.js +1 -1
- package/lib/esm/graph/engine/registry/GraphNodeExecutorResolver.js.map +1 -0
- package/lib/esm/graph/engine/registry/index.js +1 -1
- package/lib/esm/graph/engine/registry/index.js.map +1 -0
- package/lib/esm/graph/engine/snapshots/GraphExecutionSnapshotMapper.js +1 -1
- package/lib/esm/graph/engine/snapshots/GraphExecutionSnapshotMapper.js.map +1 -0
- package/lib/esm/graph/engine/snapshots/index.js +1 -1
- package/lib/esm/graph/engine/snapshots/index.js.map +1 -0
- package/lib/esm/graph/engine/store/GraphCachedValue.js +1 -1
- package/lib/esm/graph/engine/store/GraphCachedValue.js.map +1 -0
- package/lib/esm/graph/engine/store/GraphValueKey.js +1 -1
- package/lib/esm/graph/engine/store/GraphValueKey.js.map +1 -0
- package/lib/esm/graph/engine/store/GraphValueStore.js +1 -1
- package/lib/esm/graph/engine/store/GraphValueStore.js.map +1 -0
- package/lib/esm/graph/engine/store/GraphValueStoreAdapter.js +1 -1
- package/lib/esm/graph/engine/store/GraphValueStoreAdapter.js.map +1 -0
- package/lib/esm/graph/engine/store/InMemoryGraphValueStoreAdapter.js +1 -1
- package/lib/esm/graph/engine/store/InMemoryGraphValueStoreAdapter.js.map +1 -0
- package/lib/esm/graph/engine/store/index.js +1 -1
- package/lib/esm/graph/engine/store/index.js.map +1 -0
- package/lib/esm/graph/engine/types.js +1 -1
- package/lib/esm/graph/engine/types.js.map +1 -0
- package/lib/esm/graph/engine/validation/GraphDefinitionValidator.js +1 -1
- package/lib/esm/graph/engine/validation/GraphDefinitionValidator.js.map +1 -0
- package/lib/esm/graph/engine/validation/GraphPortSchemaResolver.js +1 -1
- package/lib/esm/graph/engine/validation/GraphPortSchemaResolver.js.map +1 -0
- package/lib/esm/graph/engine/validation/GraphValueValidator.js +1 -1
- package/lib/esm/graph/engine/validation/GraphValueValidator.js.map +1 -0
- package/lib/esm/graph/engine/validation/index.js +1 -1
- package/lib/esm/graph/engine/validation/index.js.map +1 -0
- package/lib/esm/graph/index.js +1 -1
- package/lib/esm/graph/index.js.map +1 -0
- package/lib/esm/graph/shared/constants.js +1 -1
- package/lib/esm/graph/shared/constants.js.map +1 -0
- package/lib/esm/graph/shared/index.js +1 -1
- package/lib/esm/graph/shared/index.js.map +1 -0
- package/lib/esm/graph/shared/nodes/agent.js +1 -1
- package/lib/esm/graph/shared/nodes/agent.js.map +1 -0
- package/lib/esm/graph/shared/nodes/base.js +1 -1
- package/lib/esm/graph/shared/nodes/base.js.map +1 -0
- package/lib/esm/graph/shared/nodes/category-styles.js +1 -1
- package/lib/esm/graph/shared/nodes/category-styles.js.map +1 -0
- package/lib/esm/graph/shared/nodes/flow-control.js +1 -1
- package/lib/esm/graph/shared/nodes/flow-control.js.map +1 -0
- package/lib/esm/graph/shared/nodes/index.js +1 -1
- package/lib/esm/graph/shared/nodes/index.js.map +1 -0
- package/lib/esm/graph/shared/nodes/triggers.js +1 -1
- package/lib/esm/graph/shared/nodes/triggers.js.map +1 -0
- package/lib/esm/graph/shared/types.js +1 -1
- package/lib/esm/graph/shared/types.js.map +1 -0
- package/lib/esm/index.js +3 -3
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/keycloak/broker.js +17 -0
- package/lib/esm/keycloak/broker.js.map +1 -0
- package/lib/esm/keycloak/index.js +2 -1
- package/lib/esm/keycloak/index.js.map +1 -0
- package/lib/esm/keycloak/services/KeycloakAuthService.js +1 -1
- package/lib/esm/keycloak/services/KeycloakAuthService.js.map +1 -0
- package/lib/esm/keycloak/services/KeycloakClientService.js +1 -1
- package/lib/esm/keycloak/services/KeycloakClientService.js.map +1 -0
- package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js +69 -1
- package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js.map +1 -0
- package/lib/esm/keycloak/services/KeycloakRealmService.js +1 -1
- package/lib/esm/keycloak/services/KeycloakRealmService.js.map +1 -0
- package/lib/esm/keycloak/services/KeycloakRoleService.js +1 -1
- package/lib/esm/keycloak/services/KeycloakRoleService.js.map +1 -0
- package/lib/esm/keycloak/services/KeycloakService.js +5 -1
- package/lib/esm/keycloak/services/KeycloakService.js.map +1 -0
- package/lib/esm/keycloak/services/KeycloakUserService.js +1 -1
- package/lib/esm/keycloak/services/KeycloakUserService.js.map +1 -0
- package/lib/esm/keycloak/services/index.js +1 -1
- package/lib/esm/keycloak/services/index.js.map +1 -0
- package/lib/esm/keycloak/services/runtime.js +1 -1
- package/lib/esm/keycloak/services/runtime.js.map +1 -0
- package/lib/esm/keycloak/types.js +1 -1
- package/lib/esm/keycloak/types.js.map +1 -0
- package/lib/esm/kibana/builders/KibanaIndexBuilder.js +1 -1
- package/lib/esm/kibana/builders/KibanaIndexBuilder.js.map +1 -0
- package/lib/esm/kibana/builders/KibanaIndexBuilderCollection.js +1 -1
- package/lib/esm/kibana/builders/KibanaIndexBuilderCollection.js.map +1 -0
- package/lib/esm/kibana/builders/index.js +1 -1
- package/lib/esm/kibana/builders/index.js.map +1 -0
- package/lib/esm/kibana/helpers.js +1 -1
- package/lib/esm/kibana/helpers.js.map +1 -0
- package/lib/esm/kibana/index.js +1 -1
- package/lib/esm/kibana/index.js.map +1 -0
- package/lib/esm/kibana/services/KibanaAuthService.js +1 -1
- package/lib/esm/kibana/services/KibanaAuthService.js.map +1 -0
- package/lib/esm/kibana/services/KibanaDashboardService.js +1 -1
- package/lib/esm/kibana/services/KibanaDashboardService.js.map +1 -0
- package/lib/esm/kibana/services/KibanaDataViewService.js +1 -1
- package/lib/esm/kibana/services/KibanaDataViewService.js.map +1 -0
- package/lib/esm/kibana/services/KibanaRoleService.js +1 -1
- package/lib/esm/kibana/services/KibanaRoleService.js.map +1 -0
- package/lib/esm/kibana/services/KibanaService.js +1 -1
- package/lib/esm/kibana/services/KibanaService.js.map +1 -0
- package/lib/esm/kibana/services/KibanaSpaceService.js +1 -1
- package/lib/esm/kibana/services/KibanaSpaceService.js.map +1 -0
- package/lib/esm/kibana/services/KibanaUserService.js +1 -1
- package/lib/esm/kibana/services/KibanaUserService.js.map +1 -0
- package/lib/esm/kibana/services/index.js +1 -1
- package/lib/esm/kibana/services/index.js.map +1 -0
- package/lib/esm/kibana/services/runtime.js +1 -1
- package/lib/esm/kibana/services/runtime.js.map +1 -0
- package/lib/esm/kibana/types.js +1 -1
- package/lib/esm/kibana/types.js.map +1 -0
- package/lib/esm/loader/ObjectLoader.js +1 -1
- package/lib/esm/loader/ObjectLoader.js.map +1 -0
- package/lib/esm/loader/families.js +1 -1
- package/lib/esm/loader/families.js.map +1 -0
- package/lib/esm/loader/index.js +1 -1
- package/lib/esm/loader/index.js.map +1 -0
- package/lib/esm/loader/types.js +1 -1
- package/lib/esm/loader/types.js.map +1 -0
- package/lib/esm/namespaces/index.js +1 -1
- package/lib/esm/namespaces/index.js.map +1 -0
- package/lib/esm/namespaces/models/authorization-model.js +1 -1
- package/lib/esm/namespaces/models/authorization-model.js.map +1 -0
- package/lib/esm/namespaces/models/effective-permission.model.js +1 -1
- package/lib/esm/namespaces/models/effective-permission.model.js.map +1 -0
- package/lib/esm/namespaces/models/group-membership.model.js +1 -1
- package/lib/esm/namespaces/models/group-membership.model.js.map +1 -0
- package/lib/esm/namespaces/models/group.model.js +1 -1
- package/lib/esm/namespaces/models/group.model.js.map +1 -0
- package/lib/esm/namespaces/models/index.js +1 -1
- package/lib/esm/namespaces/models/index.js.map +1 -0
- package/lib/esm/namespaces/models/inheritance-block.model.js +1 -1
- package/lib/esm/namespaces/models/inheritance-block.model.js.map +1 -0
- package/lib/esm/namespaces/models/org-unit-closure.model.js +1 -1
- package/lib/esm/namespaces/models/org-unit-closure.model.js.map +1 -0
- package/lib/esm/namespaces/models/org-unit-membership.model.js +1 -1
- package/lib/esm/namespaces/models/org-unit-membership.model.js.map +1 -0
- package/lib/esm/namespaces/models/org-unit-profile.model.js +1 -1
- package/lib/esm/namespaces/models/org-unit-profile.model.js.map +1 -0
- package/lib/esm/namespaces/models/org-unit.model.js +1 -1
- package/lib/esm/namespaces/models/org-unit.model.js.map +1 -0
- package/lib/esm/namespaces/models/permission.model.js +1 -1
- package/lib/esm/namespaces/models/permission.model.js.map +1 -0
- package/lib/esm/namespaces/models/principal.model.js +1 -1
- package/lib/esm/namespaces/models/principal.model.js.map +1 -0
- package/lib/esm/namespaces/models/protected-resource.model.js +1 -1
- package/lib/esm/namespaces/models/protected-resource.model.js.map +1 -0
- package/lib/esm/namespaces/models/resource-grant.model.js +1 -1
- package/lib/esm/namespaces/models/resource-grant.model.js.map +1 -0
- package/lib/esm/namespaces/models/role-assignment.model.js +1 -1
- package/lib/esm/namespaces/models/role-assignment.model.js.map +1 -0
- package/lib/esm/namespaces/models/role-permission.model.js +1 -1
- package/lib/esm/namespaces/models/role-permission.model.js.map +1 -0
- package/lib/esm/namespaces/models/role.model.js +1 -1
- package/lib/esm/namespaces/models/role.model.js.map +1 -0
- package/lib/esm/namespaces/models/storage-binding.model.js +1 -1
- package/lib/esm/namespaces/models/storage-binding.model.js.map +1 -0
- package/lib/esm/namespaces/models/tenant-membership.model.js +1 -1
- package/lib/esm/namespaces/models/tenant-membership.model.js.map +1 -0
- package/lib/esm/namespaces/models/tenant-profile.model.js +1 -1
- package/lib/esm/namespaces/models/tenant-profile.model.js.map +1 -0
- package/lib/esm/namespaces/models/tenant.model.js +1 -1
- package/lib/esm/namespaces/models/tenant.model.js.map +1 -0
- package/lib/esm/namespaces/models/user.model.js +1 -1
- package/lib/esm/namespaces/models/user.model.js.map +1 -0
- package/lib/esm/namespaces/org-based-authorization-system.js +1 -1
- package/lib/esm/namespaces/org-based-authorization-system.js.map +1 -0
- package/lib/esm/namespaces/org-based-authorization-system.models.js +1 -1
- package/lib/esm/namespaces/org-based-authorization-system.models.js.map +1 -0
- package/lib/esm/namespaces/org-based-authorization-system.services.js +1 -1
- package/lib/esm/namespaces/org-based-authorization-system.services.js.map +1 -0
- package/lib/esm/namespaces/services/authz.service.js +1 -1
- package/lib/esm/namespaces/services/authz.service.js.map +1 -0
- package/lib/esm/namespaces/services/bootstrap.service.js +1 -1
- package/lib/esm/namespaces/services/bootstrap.service.js.map +1 -0
- package/lib/esm/namespaces/services/effective-permission.service.js +1 -1
- package/lib/esm/namespaces/services/effective-permission.service.js.map +1 -0
- package/lib/esm/namespaces/services/group-membership.service.js +1 -1
- package/lib/esm/namespaces/services/group-membership.service.js.map +1 -0
- package/lib/esm/namespaces/services/group.service.js +1 -1
- package/lib/esm/namespaces/services/group.service.js.map +1 -0
- package/lib/esm/namespaces/services/index.js +1 -1
- package/lib/esm/namespaces/services/index.js.map +1 -0
- package/lib/esm/namespaces/services/inheritance-block.service.js +1 -1
- package/lib/esm/namespaces/services/inheritance-block.service.js.map +1 -0
- package/lib/esm/namespaces/services/org-unit-closure.service.js +1 -1
- package/lib/esm/namespaces/services/org-unit-closure.service.js.map +1 -0
- package/lib/esm/namespaces/services/org-unit-membership.service.js +1 -1
- package/lib/esm/namespaces/services/org-unit-membership.service.js.map +1 -0
- package/lib/esm/namespaces/services/org-unit-profile.service.js +1 -1
- package/lib/esm/namespaces/services/org-unit-profile.service.js.map +1 -0
- package/lib/esm/namespaces/services/org-unit.service.js +1 -1
- package/lib/esm/namespaces/services/org-unit.service.js.map +1 -0
- package/lib/esm/namespaces/services/permission.service.js +1 -1
- package/lib/esm/namespaces/services/permission.service.js.map +1 -0
- package/lib/esm/namespaces/services/principal.service.js +1 -1
- package/lib/esm/namespaces/services/principal.service.js.map +1 -0
- package/lib/esm/namespaces/services/protected-resource.service.js +1 -1
- package/lib/esm/namespaces/services/protected-resource.service.js.map +1 -0
- package/lib/esm/namespaces/services/resource-grant.service.js +1 -1
- package/lib/esm/namespaces/services/resource-grant.service.js.map +1 -0
- package/lib/esm/namespaces/services/resource-lifecycle.service.js +1 -1
- package/lib/esm/namespaces/services/resource-lifecycle.service.js.map +1 -0
- package/lib/esm/namespaces/services/role-assignment.service.js +1 -1
- package/lib/esm/namespaces/services/role-assignment.service.js.map +1 -0
- package/lib/esm/namespaces/services/role-permission.service.js +1 -1
- package/lib/esm/namespaces/services/role-permission.service.js.map +1 -0
- package/lib/esm/namespaces/services/role.service.js +1 -1
- package/lib/esm/namespaces/services/role.service.js.map +1 -0
- package/lib/esm/namespaces/services/storage-binding.service.js +1 -1
- package/lib/esm/namespaces/services/storage-binding.service.js.map +1 -0
- package/lib/esm/namespaces/services/system-management.service.js +1 -1
- package/lib/esm/namespaces/services/system-management.service.js.map +1 -0
- package/lib/esm/namespaces/services/tenant-membership.service.js +1 -1
- package/lib/esm/namespaces/services/tenant-membership.service.js.map +1 -0
- package/lib/esm/namespaces/services/tenant-profile.service.js +1 -1
- package/lib/esm/namespaces/services/tenant-profile.service.js.map +1 -0
- package/lib/esm/namespaces/services/tenant.service.js +1 -1
- package/lib/esm/namespaces/services/tenant.service.js.map +1 -0
- package/lib/esm/namespaces/services/user.service.js +1 -1
- package/lib/esm/namespaces/services/user.service.js.map +1 -0
- package/lib/esm/namespaces/types.js +1 -1
- package/lib/esm/namespaces/types.js.map +1 -0
- package/lib/esm/namespaces/utils.js +1 -1
- package/lib/esm/namespaces/utils.js.map +1 -0
- package/lib/esm/nest/decorators.js +1 -1
- package/lib/esm/nest/decorators.js.map +1 -0
- package/lib/esm/nest/graph/GraphExecutionController.js +1 -1
- package/lib/esm/nest/graph/GraphExecutionController.js.map +1 -0
- package/lib/esm/nest/graph/GraphExecutionModule.js +1 -1
- package/lib/esm/nest/graph/GraphExecutionModule.js.map +1 -0
- package/lib/esm/nest/graph/GraphExecutionResultModel.js +1 -1
- package/lib/esm/nest/graph/GraphExecutionResultModel.js.map +1 -0
- package/lib/esm/nest/graph/GraphExecutorRegistryFactory.js +1 -1
- package/lib/esm/nest/graph/GraphExecutorRegistryFactory.js.map +1 -0
- package/lib/esm/nest/graph/GraphResultService.js +1 -1
- package/lib/esm/nest/graph/GraphResultService.js.map +1 -0
- package/lib/esm/nest/graph/GraphWorkflowModel.js +1 -1
- package/lib/esm/nest/graph/GraphWorkflowModel.js.map +1 -0
- package/lib/esm/nest/graph/GraphWorkflowService.js +1 -1
- package/lib/esm/nest/graph/GraphWorkflowService.js.map +1 -0
- package/lib/esm/nest/graph/index.js +1 -1
- package/lib/esm/nest/graph/index.js.map +1 -0
- package/lib/esm/nest/graph/main.js +1 -1
- package/lib/esm/nest/graph/main.js.map +1 -0
- package/lib/esm/nest/index.js +1 -1
- package/lib/esm/nest/index.js.map +1 -0
- package/lib/esm/nest/keycloakAuthHandler.js +1 -1
- package/lib/esm/nest/keycloakAuthHandler.js.map +1 -0
- package/lib/esm/nest/keycloakModule.js +1 -1
- package/lib/esm/nest/keycloakModule.js.map +1 -0
- package/lib/esm/nest/logging.js +1 -1
- package/lib/esm/nest/logging.js.map +1 -0
- package/lib/esm/nest/types.js +1 -1
- package/lib/esm/nest/types.js.map +1 -0
- package/lib/esm/nest/utils.js +1 -1
- package/lib/esm/nest/utils.js.map +1 -0
- package/lib/esm/plugins/contract.js +1 -1
- package/lib/esm/plugins/contract.js.map +1 -0
- package/lib/esm/plugins/index.js +1 -1
- package/lib/esm/plugins/index.js.map +1 -0
- package/lib/esm/plugins/kibana/host.js +1 -1
- package/lib/esm/plugins/kibana/host.js.map +1 -0
- package/lib/esm/plugins/kibana/index.js +1 -1
- package/lib/esm/plugins/kibana/index.js.map +1 -0
- package/lib/esm/plugins/kibana/installer.js +1 -1
- package/lib/esm/plugins/kibana/installer.js.map +1 -0
- package/lib/esm/plugins/kibana/manifest.js +1 -1
- package/lib/esm/plugins/kibana/manifest.js.map +1 -0
- package/lib/esm/plugins/kibana/templates.js +1 -1
- package/lib/esm/plugins/kibana/templates.js.map +1 -0
- package/lib/esm/plugins/kibana/types.js +1 -1
- package/lib/esm/plugins/kibana/types.js.map +1 -0
- package/lib/esm/plugins/superset/host.js +1 -1
- package/lib/esm/plugins/superset/host.js.map +1 -0
- package/lib/esm/plugins/superset/index.js +1 -1
- package/lib/esm/plugins/superset/index.js.map +1 -0
- package/lib/esm/plugins/superset/installer.js +1 -1
- package/lib/esm/plugins/superset/installer.js.map +1 -0
- package/lib/esm/plugins/superset/manifest.js +1 -1
- package/lib/esm/plugins/superset/manifest.js.map +1 -0
- package/lib/esm/plugins/superset/templates.js +1 -1
- package/lib/esm/plugins/superset/templates.js.map +1 -0
- package/lib/esm/plugins/superset/types.js +1 -1
- package/lib/esm/plugins/superset/types.js.map +1 -0
- package/lib/esm/secrets/aws/AwsSecretService.js +1 -1
- package/lib/esm/secrets/aws/AwsSecretService.js.map +1 -0
- package/lib/esm/secrets/aws/AwsSecretServiceConfig.js +1 -1
- package/lib/esm/secrets/aws/AwsSecretServiceConfig.js.map +1 -0
- package/lib/esm/secrets/aws/index.js +1 -1
- package/lib/esm/secrets/aws/index.js.map +1 -0
- package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js +1 -1
- package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js.map +1 -0
- package/lib/esm/secrets/azure/AzureKeyVaultSecretServiceConfig.js +1 -1
- package/lib/esm/secrets/azure/AzureKeyVaultSecretServiceConfig.js.map +1 -0
- package/lib/esm/secrets/azure/index.js +1 -1
- package/lib/esm/secrets/azure/index.js.map +1 -0
- package/lib/esm/secrets/core/SecretErrors.js +1 -1
- package/lib/esm/secrets/core/SecretErrors.js.map +1 -0
- package/lib/esm/secrets/core/SecretName.js +1 -1
- package/lib/esm/secrets/core/SecretName.js.map +1 -0
- package/lib/esm/secrets/core/SecretReference.js +1 -1
- package/lib/esm/secrets/core/SecretReference.js.map +1 -0
- package/lib/esm/secrets/core/SecretSerialization.js +1 -1
- package/lib/esm/secrets/core/SecretSerialization.js.map +1 -0
- package/lib/esm/secrets/core/SecretService.js +1 -1
- package/lib/esm/secrets/core/SecretService.js.map +1 -0
- package/lib/esm/secrets/core/SecretTypes.js +1 -1
- package/lib/esm/secrets/core/SecretTypes.js.map +1 -0
- package/lib/esm/secrets/core/index.js +1 -1
- package/lib/esm/secrets/core/index.js.map +1 -0
- package/lib/esm/secrets/gcp/GcpSecretManagerService.js +1 -1
- package/lib/esm/secrets/gcp/GcpSecretManagerService.js.map +1 -0
- package/lib/esm/secrets/gcp/GcpSecretManagerServiceConfig.js +1 -1
- package/lib/esm/secrets/gcp/GcpSecretManagerServiceConfig.js.map +1 -0
- package/lib/esm/secrets/gcp/index.js +1 -1
- package/lib/esm/secrets/gcp/index.js.map +1 -0
- package/lib/esm/secrets/index.js +1 -1
- package/lib/esm/secrets/index.js.map +1 -0
- package/lib/esm/secrets/model/ModelSecretCrypto.js +1 -1
- package/lib/esm/secrets/model/ModelSecretCrypto.js.map +1 -0
- package/lib/esm/secrets/model/ModelSecretService.js +1 -1
- package/lib/esm/secrets/model/ModelSecretService.js.map +1 -0
- package/lib/esm/secrets/model/ModelSecretServiceConfig.js +1 -1
- package/lib/esm/secrets/model/ModelSecretServiceConfig.js.map +1 -0
- package/lib/esm/secrets/model/Secret.js +1 -1
- package/lib/esm/secrets/model/Secret.js.map +1 -0
- package/lib/esm/secrets/model/index.js +1 -1
- package/lib/esm/secrets/model/index.js.map +1 -0
- package/lib/esm/secrets/onepassword/OnePasswordSecretService.js +1 -1
- package/lib/esm/secrets/onepassword/OnePasswordSecretService.js.map +1 -0
- package/lib/esm/secrets/onepassword/OnePasswordSecretServiceConfig.js +1 -1
- package/lib/esm/secrets/onepassword/OnePasswordSecretServiceConfig.js.map +1 -0
- package/lib/esm/secrets/onepassword/index.js +1 -1
- package/lib/esm/secrets/onepassword/index.js.map +1 -0
- package/lib/esm/secrets/vault/VaultSecretService.js +1 -1
- package/lib/esm/secrets/vault/VaultSecretService.js.map +1 -0
- package/lib/esm/secrets/vault/VaultSecretServiceConfig.js +1 -1
- package/lib/esm/secrets/vault/VaultSecretServiceConfig.js.map +1 -0
- package/lib/esm/secrets/vault/index.js +1 -1
- package/lib/esm/secrets/vault/index.js.map +1 -0
- package/lib/esm/shared/runtime.js +1 -1
- package/lib/esm/shared/runtime.js.map +1 -0
- package/lib/esm/utils.js +1 -1
- package/lib/esm/utils.js.map +1 -0
- package/lib/types/index.d.cts +2 -2
- package/lib/types/index.d.mts +2 -2
- package/lib/types/keycloak/broker.d.cts +6 -0
- package/lib/types/keycloak/broker.d.mts +6 -0
- package/lib/types/keycloak/index.d.cts +1 -0
- package/lib/types/keycloak/index.d.mts +1 -0
- package/lib/types/keycloak/services/KeycloakIdentityProviderService.d.cts +4 -1
- package/lib/types/keycloak/services/KeycloakIdentityProviderService.d.mts +4 -1
- package/lib/types/keycloak/services/KeycloakService.d.cts +2 -1
- package/lib/types/keycloak/services/KeycloakService.d.mts +2 -1
- package/lib/types/keycloak/types.d.cts +52 -0
- package/lib/types/keycloak/types.d.mts +52 -0
- package/package.json +1 -1
|
@@ -228,5 +228,5 @@ exports.supersetDashboardEmbedPlugin = new SupersetDashboardEmbedPlugin();
|
|
|
228
228
|
function createSupersetDashboardEmbedPlugin(targetVersion) {
|
|
229
229
|
return new SupersetDashboardEmbedPlugin(targetVersion);
|
|
230
230
|
}
|
|
231
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFsbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BsdWdpbnMvc3VwZXJzZXQvaW5zdGFsbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQXNCLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDOUIsT0FBTyxLQUFLLElBQUksTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTlDLE9BQU8sRUFDTCw0QkFBNEIsRUFDNUIsMEJBQTBCLElBQUksVUFBVSxHQVN6Qyx5QkFBb0I7QUFDckIsT0FBTyxFQUNMLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsdUJBQXVCLEVBQ3ZCLHFCQUFxQixHQUN0QixzQkFBbUI7QUFDcEIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHVCQUFvQjtBQUVqRCx3REFBd0Q7QUFDeEQsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsVUFBVSxDQUFDO0FBZ0JyRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQUMsT0FBd0I7SUFDNUQsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSwwQkFBMEIsQ0FBQztJQUNoRSxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO0lBQ3JDLE1BQU0sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNqRCxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7UUFDNUIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMs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Q0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDL0IsQ0FBQztRQUVELE9BQU8sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVEOztPQUVHO0lBQ08sVUFBVSxDQUNsQixHQUFXLEVBQ1gsSUFBYyxFQUNkLEdBQVc7UUFFWCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLFFBQVEsQ0FDTixHQUFHLEVBQ0gsSUFBSSxFQUNKLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFDeEIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFO2dCQUN4QixNQUFNLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxFQUFFLEdBQUcsTUFBTSxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN2RCxJQUFJLEtBQUssRUFBRSxDQUFDO29CQUNWLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7b0JBQzNDLE9BQU87Z0JBQ1QsQ0FBQztnQkFDRCxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEIsQ0FBQyxDQUNGLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQUVELGtDQUFrQztBQUNsQyxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLDRCQUE0QixFQUFFLENBQUM7QUFFL0UsbURBQW1EO0FBQ25ELE1BQU0sVUFBVSxrQ0FBa0MsQ0FDaEQsYUFBcUI7SUFFckIsT0FBTyxJQUFJLDRCQUE0QixDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQ3pELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL3BsdWdpbnMvc3VwZXJzZXQvaW5zdGFsbGVyXG4gKiBAc3VtbWFyeSBTdXBlcnNldCBkYXNoYm9hcmQgZW1iZWQgcGx1Z2luIGluc3RhbGxlci5cbiAqIEBkZXNjcmlwdGlvbiBJbXBsZW1lbnRzIGBEYXNoYm9hcmRFbWJlZFBsdWdpbmAgZm9yIFN1cGVyc2V0IHVzaW5nIGFcbiAqIHBhdGNoLWFuZC1idWlsZCBzdHJhdGVneS4gRGVjYWYgaG9sZHMgcGF0Y2ggc2NyaXB0cyB0aGF0IG1vZGlmeSBTdXBlcnNldCdzXG4gKiBpbnRlcm5hbCBlbWJlZGRlZCBmcm9udGVuZCBhbmQgU0RLIHNvdXJjZSBmaWxlcyB0byBhZGQgYSBgc3dpdGNoRGFzaGJvYXJkYFxuICogbWV0aG9kLiBgaW5zdGFsbGAgbWF0ZXJpYWxpemVzIHRoZSBzY3JpcHRzLCBjbG9uZXMvdXNlcyBTdXBlcnNldCBzb3VyY2UsXG4gKiBhcHBsaWVzIHBhdGNoZXMsIGFuZCBidWlsZHMgKFNESyArIGZyb250ZW5kICsgb3B0aW9uYWxseSBEb2NrZXIgaW1hZ2UpLlxuICpcbiAqIFRoZSBzYW1lIGBEYXNoYm9hcmRFbWJlZFBsdWdpbmAgQVBJIGFzIEtpYmFuYSBpcyBleHBvc2VkLiBgc2VuZFN3aXRjaERhc2hib2FyZE1lc3NhZ2VgXG4gKiBkZWxlZ2F0ZXMgdG8gYHRhcmdldC5zd2l0Y2hEYXNoYm9hcmQoZGFzaGJvYXJkSWQsIGd1ZXN0VG9rZW4pYCAodGhlIFN1cGVyc2V0XG4gKiBTREsgaGFuZGxlKSBpbnN0ZWFkIG9mIGBwb3N0TWVzc2FnZWAuXG4gKi9cbmltcG9ydCB7IEludGVybmFsRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IFVuc3VwcG9ydGVkRXJyb3IsIE1heWJlQ29udGV4dHVhbEFyZyB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0ICogYXMgZnMgZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgZXhlY0ZpbGUgfSBmcm9tIFwibm9kZTpjaGlsZF9wcm9jZXNzXCI7XG5cbmltcG9ydCB7XG4gIGNyZWF0ZVN3aXRjaERhc2hib2FyZE1lc3NhZ2UsXG4gIHNlbmRTd2l0Y2hEYXNoYm9hcmRNZXNzYWdlIGFzIHNlbmRTaGFyZWQsXG4gIHR5cGUgRGFzaGJvYXJkRW1iZWRQbHVnaW4sXG4gIHR5cGUgRGFzaGJvYXJkRW1iZWRQbHVnaW5EZXNjcmlwdG9yLFxuICB0eXBlIEVtYmVkTWVzc2FnZVRhcmdldCxcbiAgdHlwZSBFbWJlZFVybE9wdGlvbnMsXG4gIHR5cGUgUGx1Z2luSW5zdGFsbE9wdGlvbnMsXG4gIHR5cGUgUGx1Z2luSW5zdGFsbFJlc3VsdCxcbiAgdHlwZSBTd2l0Y2hEYXNoYm9hcmRQYXlsb2FkLFxuICB0eXBlIFN3aXRjaERhc2hib2FyZE1lc3NhZ2UsXG59IGZyb20gXCIuLi9jb250cmFjdFwiO1xuaW1wb3J0IHtcbiAgU1VQRVJTRVRfQVBQX0lELFxuICBTVVBFUlNFVF9QTFVHSU5fSUQsXG4gIFNVUEVSU0VUX1BMVUdJTl9WRVJTSU9OLFxuICBidWlsZFN1cGVyc2V0TWFuaWZlc3QsXG59IGZyb20gXCIuL21hbmlmZXN0XCI7XG5pbXBvcnQgeyBzdXBlcnNldFBhdGNoRmlsZXMgfSBmcm9tIFwiLi90ZW1wbGF0ZXNcIjtcblxuLyoqIERlZmF1bHQgU3VwZXJzZXQgYmFzZSBwYXRoIHdoZW4gbm9uZSBpcyBwcm92aWRlZC4gKi9cbmV4cG9ydCBjb25zdCBTVVBFUlNFVF9ERUZBVUxUX0JBU0VfUEFUSCA9IFwic3VwZXJzZXRcIjtcblxuLyoqXG4gKiBFeHRlbnNpb24gb2YgYFBsdWdpbkluc3RhbGxPcHRpb25zYCBmb3IgU3VwZXJzZXQtc3BlY2lmaWMgYnVpbGQgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdXBlcnNldEluc3RhbGxPcHRpb25zIGV4dGVuZHMgUGx1Z2luSW5zdGFsbE9wdGlvbnMge1xuICAvKiogUGF0aCB0byBhbiBleGlzdGluZyBTdXBlcnNldCBzb3VyY2UgY2hlY2tvdXQuIElmIGFic2VudCwgdGhlIGluc3RhbGxlciBjbG9uZXMgdmlhIGdpdC4gKi9cbiAgc3VwZXJzZXRTb3VyY2VQYXRoPzogc3RyaW5nO1xuICAvKiogR2l0IFVSTCB0byBjbG9uZSBTdXBlcnNldCBmcm9tICh1c2VkIHdoZW4gYHN1cGVyc2V0U291cmNlUGF0aGAgaXMgYWJzZW50KS4gKi9cbiAgc3VwZXJzZXRHaXRVcmw/OiBzdHJpbmc7XG4gIC8qKiBHaXQgcmVmL2JyYW5jaC90YWcgdG8gY2hlY2tvdXQgYWZ0ZXIgY2xvbmluZy4gKi9cbiAgc3VwZXJzZXRHaXRSZWY/OiBzdHJpbmc7XG4gIC8qKiBEb2NrZXIgaW1hZ2UgdGFnIHRvIGJ1aWxkICh3aGVuIHByb3ZpZGVkLCBidWlsZHMgYSBEb2NrZXIgaW1hZ2UgaW5zdGVhZCBvZiBqdXN0IFNESytmcm9udGVuZCkuICovXG4gIGRvY2tlckltYWdlVGFnPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEJ1aWxkIHRoZSBTdXBlcnNldCBlbWJlZGRlZCBVUkwuXG4gKlxuICogRm9yIFN1cGVyc2V0LCB0aGUgYGRhc2hib2FyZElkYCBmaWVsZCBpbiBgRW1iZWRVcmxPcHRpb25zYCBpcyB0aGVcbiAqIGVtYmVkZGVkLWNvbmZpZ3VyYXRpb24gVVVJRCB1c2VkIGluIGAvZW1iZWRkZWQvOnV1aWRgLlxuICpcbiAqIEBleGFtcGxlXG4gKiAgIGJ1aWxkU3VwZXJzZXRFbWJlZFVybCh7IGhvc3Q6IFwic3VwZXJzZXQuZXhhbXBsZS5jb21cIiwgZGFzaGJvYXJkSWQ6IFwiYWJjLXV1aWRcIiwgcGFyZW50T3JpZ2luOiBcImh0dHBzOi8vYXBwLmV4YW1wbGUuY29tXCIgfSlcbiAqICAgLy8gPT4gXCIvL3N1cGVyc2V0LmV4YW1wbGUuY29tL3N1cGVyc2V0L2VtYmVkZGVkL2FiYy11dWlkP3BhcmVudE9yaWdpbj1odHRwcyUzQSUyRiUyRmFwcC5leGFtcGxlLmNvbVwiXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFN1cGVyc2V0RW1iZWRVcmwob3B0aW9uczogRW1iZWRVcmxPcHRpb25zKTogc3RyaW5nIHtcbiAgY29uc3QgYmFzZVBhdGggPSBvcHRpb25zLmJhc2VQYXRoID8/IFNVUEVSU0VUX0RFRkFVTFRfQkFTRV9QQVRIO1xuICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gIHBhcmFtcy5zZXQoXCJwYXJlbnRPcmlnaW5cIiwgb3B0aW9ucy5wYXJlbnRPcmlnaW4pO1xuICBpZiAob3B0aW9ucy52aWV3Py50aW1lUmFuZ2UpIHtcbiAgICBwYXJhbXMuc2V0KFwidGltZVJhbmdlXCIsIEpTT04uc3RyaW5naWZ5KG9wdGlvbnMudmlldy50aW1lUmFuZ2UpKTtcbiAgfVxuICByZXR1cm4gYC8vJHtvcHRpb25zLmhvc3R9LyR7YmFzZVBhdGh9L2VtYmVkZGVkLyR7b3B0aW9ucy5kYXNoYm9hcmRJZH0/JHtwYXJhbXMudG9TdHJpbmcoKX1gO1xufVxuXG4vKipcbiAqIEBjbGFzcyBTdXBlcnNldERhc2hib2FyZEVtYmVkUGx1Z2luXG4gKiBAc3VtbWFyeSBTdXBlcnNldCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYERhc2hib2FyZEVtYmVkUGx1Z2luYCBjb250cmFjdC5cbiAqIEBkZXNjcmlwdGlvbiBPcmctYWdub3N0aWMgbXVsdGktdGVuYW50IGRhc2hib2FyZCBlbWJlZCBwbHVnaW4gZm9yIFN1cGVyc2V0XG4gKiB1c2luZyBhIHBhdGNoLWFuZC1idWlsZCBzdHJhdGVneS4gU2FtZSBBUEkgYXMgYEtpYmFuYURhc2hib2FyZEVtYmVkUGx1Z2luYC5cbiAqL1xuZXhwb3J0IGNsYXNzIFN1cGVyc2V0RGFzaGJvYXJkRW1iZWRQbHVnaW4gaW1wbGVtZW50cyBEYXNoYm9hcmRFbWJlZFBsdWdpbiB7XG4gIHB1YmxpYyByZWFkb25seSBkZXNjcmlwdG9yOiBEYXNoYm9hcmRFbWJlZFBsdWdpbkRlc2NyaXB0b3I7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHRhcmdldFZlcnNpb246IHN0cmluZyA9IFwic3VwZXJzZXRcIikge1xuICAgIHRoaXMuZGVzY3JpcHRvciA9IHtcbiAgICAgIGlkOiBTVVBFUlNFVF9QTFVHSU5fSUQsXG4gICAgICBhcHBJZDogU1VQRVJTRVRfQVBQX0lELFxuICAgICAgdmVyc2lvbjogU1VQRVJTRVRfUExVR0lOX1ZFUlNJT04sXG4gICAgICB0YXJnZXRWZXJzaW9uLFxuICAgICAgdG9vbDogXCJzdXBlcnNldFwiLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgbWFuaWZlc3QodGFyZ2V0VmVyc2lvbjogc3RyaW5nID0gdGhpcy5kZXNjcmlwdG9yLnRhcmdldFZlcnNpb24pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgcmV0dXJuIGJ1aWxkU3VwZXJzZXRNYW5pZmVzdCh0YXJnZXRWZXJzaW9uKSBhcyB1bmtub3duIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICB9XG5cbiAgcHVibGljIGJ1aWxkRW1iZWRVcmwob3B0aW9uczogRW1iZWRVcmxPcHRpb25zKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYnVpbGRTdXBlcnNldEVtYmVkVXJsKG9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZVN3aXRjaERhc2hib2FyZE1lc3NhZ2UoXG4gICAgcGF5bG9hZDogU3dpdGNoRGFzaGJvYXJkUGF5bG9hZFxuICApOiBTd2l0Y2hEYXNoYm9hcmRNZXNzYWdlIHtcbiAgICByZXR1cm4gY3JlYXRlU3dpdGNoRGFzaGJvYXJkTWVzc2FnZShwYXlsb2FkKTtcbiAgfVxuXG4gIHB1YmxpYyBzZW5kU3dpdGNoRGFzaGJvYXJkTWVzc2FnZShcbiAgICB0YXJnZXQ6IEVtYmVkTWVzc2FnZVRhcmdldCxcbiAgICBwYXlsb2FkOiBTd2l0Y2hEYXNoYm9hcmRQYXlsb2FkLFxuICAgIHRhcmdldE9yaWdpbjogc3RyaW5nXG4gICk6IHZvaWQge1xuICAgIHNlbmRTaGFyZWQodGFyZ2V0LCBwYXlsb2FkLCB0YXJnZXRPcmlnaW4pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hdGVyaWFsaXplIHRoZSBwYXRjaCBhbmQgYnVpbGQgc2NyaXB0cyBpbnRvIGB0YXJnZXRQYXRoL2AsIGFuZCB3aGVuXG4gICAqIGBidWlsZGAgaXMgdHJ1ZSwgY2xvbmUvdXNlIFN1cGVyc2V0IHNvdXJjZSwgYXBwbHkgcGF0Y2hlcywgYW5kIGJ1aWxkXG4gICAqIChTREsgKyBmcm9udGVuZCArIG9wdGlvbmFsbHkgRG9ja2VyIGltYWdlKS5cbiAgICpcbiAgICogVW5saWtlIEtpYmFuYSAod2hpY2ggZ2VuZXJhdGVzIHBsdWdpbiBzb3VyY2UpLCBTdXBlcnNldCdzIFwicGx1Z2luXCIgaXMgYVxuICAgKiBwYXRjaC1hbmQtYnVpbGQgc3RyYXRlZ3k6IERlY2FmIGhvbGRzIHNjcmlwdHMgdGhhdCBtb2RpZnkgU3VwZXJzZXQnc1xuICAgKiBleGlzdGluZyBpbnRlcm5hbCBzb3VyY2UgZmlsZXMuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaW5zdGFsbChcbiAgICBvcHRpb25zOiBTdXBlcnNldEluc3RhbGxPcHRpb25zXG4gICk6IFByb21pc2U8UGx1Z2luSW5zdGFsbFJlc3VsdD4ge1xuICAgIGNvbnN0IGN0eCA9IG9wdGlvbnMuY29udGV4dCBhcyBNYXliZUNvbnRleHR1YWxBcmc8YW55PiB8IHVuZGVmaW5lZDtcbiAgICBpZiAoY3R4KSB7XG4gICAgICB2b2lkIGN0eDtcbiAgICB9XG4gICAgaWYgKCFvcHRpb25zLnRhcmdldFBhdGggfHwgb3B0aW9ucy50YXJnZXRQYXRoLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZEVycm9yKFwiaW5zdGFsbCB0YXJnZXRQYXRoIGlzIHJlcXVpcmVkXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IHRhcmdldFZlcnNpb24gPSBvcHRpb25zLnRhcmdldFZlcnNpb24gPz8gdGhpcy5kZXNjcmlwdG9yLnRhcmdldFZlcnNpb247XG4gICAgY29uc3QgcGx1Z2luRGlyID0gcGF0aC5yZXNvbHZlKFxuICAgICAgb3B0aW9ucy50YXJnZXRQYXRoLFxuICAgICAgU1VQRVJTRVRfQVBQX0lEXG4gICAgKTtcblxuICAgIGlmIChmcy5leGlzdHNTeW5jKHBsdWdpbkRpcikpIHtcbiAgICAgIGlmICghb3B0aW9ucy5vdmVyd3JpdGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgICAgYFBsdWdpbiBkaXJlY3RvcnkgYWxyZWFkeSBleGlzdHM6ICR7cGx1Z2luRGlyfSAodXNlIG92ZXJ3cml0ZTogdHJ1ZSlgXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBmcy5ybVN5bmMocGx1Z2luRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgZmlsZXMgPSBzdXBlcnNldFBhdGNoRmlsZXMoKTtcbiAgICBjb25zdCB3cml0dGVuOiBzdHJpbmdbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgY29uc3QgZnVsbFBhdGggPSBwYXRoLmpvaW4ocGx1Z2luRGlyLCBmaWxlLnBhdGgpO1xuICAgICAgZnMubWtkaXJTeW5jKHBhdGguZGlybmFtZShmdWxsUGF0aCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgZnMud3JpdGVGaWxlU3luYyhmdWxsUGF0aCwgZmlsZS5jb250ZW50LCBcInV0ZjhcIik7XG4gICAgICBpZiAoZmlsZS5leGVjdXRhYmxlKSB7XG4gICAgICAgIGZzLmNobW9kU3luYyhmdWxsUGF0aCwgMG83NTUpO1xuICAgICAgfVxuICAgICAgd3JpdHRlbi5wdXNoKGZpbGUucGF0aCk7XG4gICAgfVxuXG4gICAgbGV0IGJ1aWx0ID0gZmFsc2U7XG4gICAgbGV0IGJ1aWxkT3V0cHV0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBpZiAob3B0aW9ucy5idWlsZCkge1xuICAgICAgY29uc3Qgc3VwZXJzZXRSb290ID0gYXdhaXQgdGhpcy5yZXNvbHZlU3VwZXJzZXRSb290KHBsdWdpbkRpciwgb3B0aW9ucyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJ1blBhdGNoQW5kQnVpbGQoXG4gICAgICAgIHBsdWdpbkRpcixcbiAgICAgICAgc3VwZXJzZXRSb290LFxuICAgICAgICBvcHRpb25zXG4gICAgICApLmNhdGNoKChlcnI6IEVycm9yKSA9PiAoe1xuICAgICAgICBvazogZmFsc2UgYXMgY29uc3QsXG4gICAgICAgIG91dHB1dDogZXJyLm1lc3NhZ2UsXG4gICAgICB9KSk7XG4gICAgICBidWlsdCA9IHJlc3VsdC5vaztcbiAgICAgIGJ1aWxkT3V0cHV0ID0gcmVzdWx0Lm91dHB1dDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgcGx1Z2luUGF0aDogcGx1Z2luRGlyLFxuICAgICAgZGVzY3JpcHRvcjogeyAuLi50aGlzLmRlc2NyaXB0b3IsIHRhcmdldFZlcnNpb24gfSxcbiAgICAgIGZpbGVzOiB3cml0dGVuLFxuICAgICAgYnVpbHQsXG4gICAgICBidWlsZE91dHB1dCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgdGhlIFN1cGVyc2V0IHNvdXJjZSByb290OiB1c2UgYW4gZXhpc3RpbmcgY2hlY2tvdXQgb3IgY2xvbmUgdmlhIGdpdC5cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyByZXNvbHZlU3VwZXJzZXRSb290KFxuICAgIHBsdWdpbkRpcjogc3RyaW5nLFxuICAgIG9wdGlvbnM6IFN1cGVyc2V0SW5zdGFsbE9wdGlvbnNcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBpZiAob3B0aW9ucy5zdXBlcnNldFNvdXJjZVBhdGgpIHtcbiAgICAgIGNvbnN0IHJlc29sdmVkID0gcGF0aC5yZXNvbHZlKG9wdGlvbnMuc3VwZXJzZXRTb3VyY2VQYXRoKTtcbiAgICAgIGlmICghZnMuZXhpc3RzU3luYyhwYXRoLmpvaW4ocmVzb2x2ZWQsIFwic3VwZXJzZXQtZnJvbnRlbmRcIiwgXCJzcmNcIiwgXCJlbWJlZGRlZFwiLCBcImluZGV4LnRzeFwiKSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgICAgYFN1cGVyc2V0IHNvdXJjZSBub3QgZm91bmQgYXQ6ICR7cmVzb2x2ZWR9IChtaXNzaW5nIHN1cGVyc2V0LWZyb250ZW5kL3NyYy9lbWJlZGRlZC9pbmRleC50c3gpYFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc29sdmVkO1xuICAgIH1cblxuICAgIGNvbnN0IGdpdFVybCA9IG9wdGlvbnMuc3VwZXJzZXRHaXRVcmwgPz8gXCJodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL3N1cGVyc2V0LmdpdFwiO1xuICAgIGNvbnN0IGdpdFJlZiA9IG9wdGlvbnMuc3VwZXJzZXRHaXRSZWYgPz8gb3B0aW9ucy50YXJnZXRWZXJzaW9uID8/IFwiNi4xLjBcIjtcbiAgICBjb25zdCBjbG9uZURpciA9IHBhdGguam9pbihwbHVnaW5EaXIsIFwiLnN1cGVyc2V0LXNvdXJjZVwiKTtcblxuICAgIGlmIChmcy5leGlzdHNTeW5jKGNsb25lRGlyKSkge1xuICAgICAgZnMucm1TeW5jKGNsb25lRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5ydW5Db21tYW5kKFwiZ2l0XCIsIFtcImNsb25lXCIsIFwiLS1kZXB0aFwiLCBcIjFcIiwgXCItLWJyYW5jaFwiLCBnaXRSZWYsIGdpdFVybCwgY2xvbmVEaXJdLCBwbHVnaW5EaXIpO1xuICAgIHJldHVybiBjbG9uZURpcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBseSBwYXRjaGVzLCB2ZXJpZnksIGFuZCBidWlsZCAoU0RLICsgZnJvbnRlbmQgKyBvcHRpb25hbGx5IERvY2tlcikuXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgcnVuUGF0Y2hBbmRCdWlsZChcbiAgICBwbHVnaW5EaXI6IHN0cmluZyxcbiAgICBzdXBlcnNldFJvb3Q6IHN0cmluZyxcbiAgICBvcHRpb25zOiBTdXBlcnNldEluc3RhbGxPcHRpb25zXG4gICk6IFByb21pc2U8eyBvazogYm9vbGVhbjsgb3V0cHV0OiBzdHJpbmcgfT4ge1xuICAgIGNvbnN0IG91dHB1dHM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvLyAxLiBBcHBseSBwYXRjaFxuICAgIGNvbnN0IHBhdGNoUmVzdWx0ID0gYXdhaXQgdGhpcy5ydW5Db21tYW5kKFxuICAgICAgXCJweXRob24zXCIsXG4gICAgICBbcGF0aC5qb2luKHBsdWdpbkRpciwgXCJwYXRjaGVzXCIsIFwiYXBwbHlfc3VwZXJzZXRfNl8xX3BhdGNoLnB5XCIpLCBzdXBlcnNldFJvb3RdLFxuICAgICAgcGx1Z2luRGlyXG4gICAgKTtcbiAgICBvdXRwdXRzLnB1c2gocGF0Y2hSZXN1bHQpO1xuXG4gICAgLy8gMi4gVmVyaWZ5IHBhdGNoXG4gICAgY29uc3QgdmVyaWZ5UmVzdWx0ID0gYXdhaXQgdGhpcy5ydW5Db21tYW5kKFxuICAgICAgcGF0aC5qb2luKHBsdWdpbkRpciwgXCJwYXRjaGVzXCIsIFwidmVyaWZ5X3BhdGNoLnNoXCIpLFxuICAgICAgW3N1cGVyc2V0Um9vdF0sXG4gICAgICBwbHVnaW5EaXJcbiAgICApO1xuICAgIG91dHB1dHMucHVzaCh2ZXJpZnlSZXN1bHQpO1xuXG4gICAgLy8gMy4gQnVpbGQgKERvY2tlciBpbWFnZSBvciBTREsgKyBmcm9udGVuZClcbiAgICBpZiAob3B0aW9ucy5kb2NrZXJJbWFnZVRhZykge1xuICAgICAgY29uc3QgZG9ja2VyUmVzdWx0ID0gYXdhaXQgdGhpcy5ydW5Db21tYW5kKFxuICAgICAgICBwYXRoLmpvaW4ocGx1Z2luRGlyLCBcImJ1aWxkXCIsIFwiYnVpbGQtZG9ja2VyLWltYWdlLnNoXCIpLFxuICAgICAgICBbc3VwZXJzZXRSb290LCBvcHRpb25zLmRvY2tlckltYWdlVGFnXSxcbiAgICAgICAgcGx1Z2luRGlyXG4gICAgICApO1xuICAgICAgb3V0cHV0cy5wdXNoKGRvY2tlclJlc3VsdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHNka1Jlc3VsdCA9IGF3YWl0IHRoaXMucnVuQ29tbWFuZChcbiAgICAgICAgcGF0aC5qb2luKHBsdWdpbkRpciwgXCJidWlsZFwiLCBcImJ1aWxkLXNkay5zaFwiKSxcbiAgICAgICAgW3N1cGVyc2V0Um9vdF0sXG4gICAgICAgIHBsdWdpbkRpclxuICAgICAgKTtcbiAgICAgIG91dHB1dHMucHVzaChzZGtSZXN1bHQpO1xuXG4gICAgICBjb25zdCBmcm9udGVuZFJlc3VsdCA9IGF3YWl0IHRoaXMucnVuQ29tbWFuZChcbiAgICAgICAgcGF0aC5qb2luKHBsdWdpbkRpciwgXCJidWlsZFwiLCBcImJ1aWxkLXN1cGVyc2V0LWZyb250ZW5kLnNoXCIpLFxuICAgICAgICBbc3VwZXJzZXRSb290XSxcbiAgICAgICAgcGx1Z2luRGlyXG4gICAgICApO1xuICAgICAgb3V0cHV0cy5wdXNoKGZyb250ZW5kUmVzdWx0KTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBvazogdHJ1ZSwgb3V0cHV0OiBvdXRwdXRzLmpvaW4oXCJcXG5cIikgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW4gYSBjb21tYW5kIGFuZCBjYXB0dXJlIHN0ZG91dCtzdGRlcnIuXG4gICAqL1xuICBwcm90ZWN0ZWQgcnVuQ29tbWFuZChcbiAgICBjbWQ6IHN0cmluZyxcbiAgICBhcmdzOiBzdHJpbmdbXSxcbiAgICBjd2Q6IHN0cmluZ1xuICApOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBleGVjRmlsZShcbiAgICAgICAgY21kLFxuICAgICAgICBhcmdzLFxuICAgICAgICB7IGN3ZCwgdGltZW91dDogNjAwMDAwIH0sXG4gICAgICAgIChlcnJvciwgc3Rkb3V0LCBzdGRlcnIpID0+IHtcbiAgICAgICAgICBjb25zdCBvdXRwdXQgPSBgJHtzdGRvdXQgPz8gXCJcIn0ke3N0ZGVyciA/PyBcIlwifWAudHJpbSgpO1xuICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihvdXRwdXQgfHwgZXJyb3IubWVzc2FnZSkpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXNvbHZlKG91dHB1dCk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG4gIH1cbn1cblxuLyoqIERlZmF1bHQgc2luZ2xldG9uIGluc3RhbmNlLiAqL1xuZXhwb3J0IGNvbnN0IHN1cGVyc2V0RGFzaGJvYXJkRW1iZWRQbHVnaW4gPSBuZXcgU3VwZXJzZXREYXNoYm9hcmRFbWJlZFBsdWdpbigpO1xuXG4vKiogRmFjdG9yeSBhY2NlcHRpbmcgYSB0YXJnZXQgU3VwZXJzZXQgdmVyc2lvbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTdXBlcnNldERhc2hib2FyZEVtYmVkUGx1Z2luKFxuICB0YXJnZXRWZXJzaW9uOiBzdHJpbmdcbik6IFN1cGVyc2V0RGFzaGJvYXJkRW1iZWRQbHVnaW4ge1xuICByZXR1cm4gbmV3IFN1cGVyc2V0RGFzaGJvYXJkRW1iZWRQbHVnaW4odGFyZ2V0VmVyc2lvbik7XG59XG4iXX0=
|
|
232
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFsbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiaW5zdGFsbGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWlDQSxzREFRQztBQW1KRCxnRkFFQztBQTlMRDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCwyREFBd0Q7QUFDeEQseUNBQWtEO0FBQ2xELDRDQUE4QjtBQUM5QixnREFBa0M7QUFDbEMsMkRBQThDO0FBQzlDLGtEQUEyRztBQUMzRywrQ0FBcUg7QUFDckgsaURBQW9EO0FBQ3BELHdEQUF3RDtBQUMzQyxRQUFBLDBCQUEwQixHQUFHLFVBQVUsQ0FBQztBQUNyRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFnQixxQkFBcUIsQ0FBQyxPQUFPO0lBQ3pDLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksa0NBQTBCLENBQUM7SUFDaEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztJQUNyQyxNQUFNLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDakQsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQzFCLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFDRCxPQUFPLEtBQUssT0FBTyxDQUFDLElBQUksSUFBSSxRQUFRLGFBQWEsT0FBTyxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztBQUNoRyxDQUFDO0FBQ0Q7Ozs7O0dBS0c7QUFDSCxNQUFhLDRCQUE0QjtJQUNyQyxZQUFZLGFBQWEsR0FBRyxVQUFVO1FBQ2xDLElBQUksQ0FBQyxVQUFVLEdBQUc7WUFDZCxFQUFFLEVBQUUsZ0NBQWtCO1lB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R0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFO2dCQUNwRSxNQUFNLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxFQUFFLEdBQUcsTUFBTSxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN2RCxJQUFJLEtBQUssRUFBRSxDQUFDO29CQUNSLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7b0JBQzNDLE9BQU87Z0JBQ1gsQ0FBQztnQkFDRCxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDcEIsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDSjtBQXhJRCxvRUF3SUM7QUFDRCxrQ0FBa0M7QUFDckIsUUFBQSw0QkFBNEIsR0FBRyxJQUFJLDRCQUE0QixFQUFFLENBQUM7QUFDL0UsbURBQW1EO0FBQ25ELFNBQWdCLGtDQUFrQyxDQUFDLGFBQWE7SUFDNUQsT0FBTyxJQUFJLDRCQUE0QixDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFDRCxreXJCQUFreXJCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9wbHVnaW5zL3N1cGVyc2V0L2luc3RhbGxlclxuICogQHN1bW1hcnkgU3VwZXJzZXQgZGFzaGJvYXJkIGVtYmVkIHBsdWdpbiBpbnN0YWxsZXIuXG4gKiBAZGVzY3JpcHRpb24gSW1wbGVtZW50cyBgRGFzaGJvYXJkRW1iZWRQbHVnaW5gIGZvciBTdXBlcnNldCB1c2luZyBhXG4gKiBwYXRjaC1hbmQtYnVpbGQgc3RyYXRlZ3kuIERlY2FmIGhvbGRzIHBhdGNoIHNjcmlwdHMgdGhhdCBtb2RpZnkgU3VwZXJzZXQnc1xuICogaW50ZXJuYWwgZW1iZWRkZWQgZnJvbnRlbmQgYW5kIFNESyBzb3VyY2UgZmlsZXMgdG8gYWRkIGEgYHN3aXRjaERhc2hib2FyZGBcbiAqIG1ldGhvZC4gYGluc3RhbGxgIG1hdGVyaWFsaXplcyB0aGUgc2NyaXB0cywgY2xvbmVzL3VzZXMgU3VwZXJzZXQgc291cmNlLFxuICogYXBwbGllcyBwYXRjaGVzLCBhbmQgYnVpbGRzIChTREsgKyBmcm9udGVuZCArIG9wdGlvbmFsbHkgRG9ja2VyIGltYWdlKS5cbiAqXG4gKiBUaGUgc2FtZSBgRGFzaGJvYXJkRW1iZWRQbHVnaW5gIEFQSSBhcyBLaWJhbmEgaXMgZXhwb3NlZC4gYHNlbmRTd2l0Y2hEYXNoYm9hcmRNZXNzYWdlYFxuICogZGVsZWdhdGVzIHRvIGB0YXJnZXQuc3dpdGNoRGFzaGJvYXJkKGRhc2hib2FyZElkLCBndWVzdFRva2VuKWAgKHRoZSBTdXBlcnNldFxuICogU0RLIGhhbmRsZSkgaW5zdGVhZCBvZiBgcG9zdE1lc3NhZ2VgLlxuICovXG5pbXBvcnQgeyBJbnRlcm5hbEVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBVbnN1cHBvcnRlZEVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBleGVjRmlsZSB9IGZyb20gXCJub2RlOmNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCB7IGNyZWF0ZVN3aXRjaERhc2hib2FyZE1lc3NhZ2UsIHNlbmRTd2l0Y2hEYXNoYm9hcmRNZXNzYWdlIGFzIHNlbmRTaGFyZWQsIH0gZnJvbSBcIi4vLi4vY29udHJhY3QuanNcIjtcbmltcG9ydCB7IFNVUEVSU0VUX0FQUF9JRCwgU1VQRVJTRVRfUExVR0lOX0lELCBTVVBFUlNFVF9QTFVHSU5fVkVSU0lPTiwgYnVpbGRTdXBlcnNldE1hbmlmZXN0LCB9IGZyb20gXCIuL21hbmlmZXN0LmpzXCI7XG5pbXBvcnQgeyBzdXBlcnNldFBhdGNoRmlsZXMgfSBmcm9tIFwiLi90ZW1wbGF0ZXMuanNcIjtcbi8qKiBEZWZhdWx0IFN1cGVyc2V0IGJhc2UgcGF0aCB3aGVuIG5vbmUgaXMgcHJvdmlkZWQuICovXG5leHBvcnQgY29uc3QgU1VQRVJTRVRfREVGQVVMVF9CQVNFX1BBVEggPSBcInN1cGVyc2V0XCI7XG4vKipcbiAqIEJ1aWxkIHRoZSBTdXBlcnNldCBlbWJlZGRlZCBVUkwuXG4gKlxuICogRm9yIFN1cGVyc2V0LCB0aGUgYGRhc2hib2FyZElkYCBmaWVsZCBpbiBgRW1iZWRVcmxPcHRpb25zYCBpcyB0aGVcbiAqIGVtYmVkZGVkLWNvbmZpZ3VyYXRpb24gVVVJRCB1c2VkIGluIGAvZW1iZWRkZWQvOnV1aWRgLlxuICpcbiAqIEBleGFtcGxlXG4gKiAgIGJ1aWxkU3VwZXJzZXRFbWJlZFVybCh7IGhvc3Q6IFwic3VwZXJzZXQuZXhhbXBsZS5jb21cIiwgZGFzaGJvYXJkSWQ6IFwiYWJjLXV1aWRcIiwgcGFyZW50T3JpZ2luOiBcImh0dHBzOi8vYXBwLmV4YW1wbGUuY29tXCIgfSlcbiAqICAgLy8gPT4gXCIvL3N1cGVyc2V0LmV4YW1wbGUuY29tL3N1cGVyc2V0L2VtYmVkZGVkL2FiYy11dWlkP3BhcmVudE9yaWdpbj1odHRwcyUzQSUyRiUyRmFwcC5leGFtcGxlLmNvbVwiXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFN1cGVyc2V0RW1iZWRVcmwob3B0aW9ucykge1xuICAgIGNvbnN0IGJhc2VQYXRoID0gb3B0aW9ucy5iYXNlUGF0aCA/PyBTVVBFUlNFVF9ERUZBVUxUX0JBU0VfUEFUSDtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgcGFyYW1zLnNldChcInBhcmVudE9yaWdpblwiLCBvcHRpb25zLnBhcmVudE9yaWdpbik7XG4gICAgaWYgKG9wdGlvbnMudmlldz8udGltZVJhbmdlKSB7XG4gICAgICAgIHBhcmFtcy5zZXQoXCJ0aW1lUmFuZ2VcIiwgSlNPTi5zdHJpbmdpZnkob3B0aW9ucy52aWV3LnRpbWVSYW5nZSkpO1xuICAgIH1cbiAgICByZXR1cm4gYC8vJHtvcHRpb25zLmhvc3R9LyR7YmFzZVBhdGh9L2VtYmVkZGVkLyR7b3B0aW9ucy5kYXNoYm9hcmRJZH0/JHtwYXJhbXMudG9TdHJpbmcoKX1gO1xufVxuLyoqXG4gKiBAY2xhc3MgU3VwZXJzZXREYXNoYm9hcmRFbWJlZFBsdWdpblxuICogQHN1bW1hcnkgU3VwZXJzZXQgaW1wbGVtZW50YXRpb24gb2YgdGhlIGBEYXNoYm9hcmRFbWJlZFBsdWdpbmAgY29udHJhY3QuXG4gKiBAZGVzY3JpcHRpb24gT3JnLWFnbm9zdGljIG11bHRpLXRlbmFudCBkYXNoYm9hcmQgZW1iZWQgcGx1Z2luIGZvciBTdXBlcnNldFxuICogdXNpbmcgYSBwYXRjaC1hbmQtYnVpbGQgc3RyYXRlZ3kuIFNhbWUgQVBJIGFzIGBLaWJhbmFEYXNoYm9hcmRFbWJlZFBsdWdpbmAuXG4gKi9cbmV4cG9ydCBjbGFzcyBTdXBlcnNldERhc2hib2FyZEVtYmVkUGx1Z2luIHtcbiAgICBjb25zdHJ1Y3Rvcih0YXJnZXRWZXJzaW9uID0gXCJzdXBlcnNldFwiKSB7XG4gICAgICAgIHRoaXMuZGVzY3JpcHRvciA9IHtcbiAgICAgICAgICAgIGlkOiBTVVBFUlNFVF9QTFVHSU5fSUQsXG4gICAgICAgICAgICBhcHBJZDogU1VQRVJTRVRfQVBQX0lELFxuICAgICAgICAgICAgdmVyc2lvbjogU1VQRVJTRVRfUExVR0lOX1ZFUlNJT04sXG4gICAgICAgICAgICB0YXJnZXRWZXJzaW9uLFxuICAgICAgICAgICAgdG9vbDogXCJzdXBlcnNldFwiLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBtYW5pZmVzdCh0YXJnZXRWZXJzaW9uID0gdGhpcy5kZXNjcmlwdG9yLnRhcmdldFZlcnNpb24pIHtcbiAgICAgICAgcmV0dXJuIGJ1aWxkU3VwZXJzZXRNYW5pZmVzdCh0YXJnZXRWZXJzaW9uKTtcbiAgICB9XG4gICAgYnVpbGRFbWJlZFVybChvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiBidWlsZFN1cGVyc2V0RW1iZWRVcmwob3B0aW9ucyk7XG4gICAgfVxuICAgIGNyZWF0ZVN3aXRjaERhc2hib2FyZE1lc3NhZ2UocGF5bG9hZCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlU3dpdGNoRGFzaGJvYXJkTWVzc2FnZShwYXlsb2FkKTtcbiAgICB9XG4gICAgc2VuZFN3aXRjaERhc2hib2FyZE1lc3NhZ2UodGFyZ2V0LCBwYXlsb2FkLCB0YXJnZXRPcmlnaW4pIHtcbiAgICAgICAgc2VuZFNoYXJlZCh0YXJnZXQsIHBheWxvYWQsIHRhcmdldE9yaWdpbik7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE1hdGVyaWFsaXplIHRoZSBwYXRjaCBhbmQgYnVpbGQgc2NyaXB0cyBpbnRvIGB0YXJnZXRQYXRoL2AsIGFuZCB3aGVuXG4gICAgICogYGJ1aWxkYCBpcyB0cnVlLCBjbG9uZS91c2UgU3VwZXJzZXQgc291cmNlLCBhcHBseSBwYXRjaGVzLCBhbmQgYnVpbGRcbiAgICAgKiAoU0RLICsgZnJvbnRlbmQgKyBvcHRpb25hbGx5IERvY2tlciBpbWFnZSkuXG4gICAgICpcbiAgICAgKiBVbmxpa2UgS2liYW5hICh3aGljaCBnZW5lcmF0ZXMgcGx1Z2luIHNvdXJjZSksIFN1cGVyc2V0J3MgXCJwbHVnaW5cIiBpcyBhXG4gICAgICogcGF0Y2gtYW5kLWJ1aWxkIHN0cmF0ZWd5OiBEZWNhZiBob2xkcyBzY3JpcHRzIHRoYXQgbW9kaWZ5IFN1cGVyc2V0J3NcbiAgICAgKiBleGlzdGluZyBpbnRlcm5hbCBzb3VyY2UgZmlsZXMuXG4gICAgICovXG4gICAgYXN5bmMgaW5zdGFsbChvcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IGN0eCA9IG9wdGlvbnMuY29udGV4dDtcbiAgICAgICAgaWYgKGN0eCkge1xuICAgICAgICAgICAgdm9pZCBjdHg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFvcHRpb25zLnRhcmdldFBhdGggfHwgb3B0aW9ucy50YXJnZXRQYXRoLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZEVycm9yKFwiaW5zdGFsbCB0YXJnZXRQYXRoIGlzIHJlcXVpcmVkXCIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRhcmdldFZlcnNpb24gPSBvcHRpb25zLnRhcmdldFZlcnNpb24gPz8gdGhpcy5kZXNjcmlwdG9yLnRhcmdldFZlcnNpb247XG4gICAgICAgIGNvbnN0IHBsdWdpbkRpciA9IHBhdGgucmVzb2x2ZShvcHRpb25zLnRhcmdldFBhdGgsIFNVUEVSU0VUX0FQUF9JRCk7XG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHBsdWdpbkRpcikpIHtcbiAgICAgICAgICAgIGlmICghb3B0aW9ucy5vdmVyd3JpdGUpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgUGx1Z2luIGRpcmVjdG9yeSBhbHJlYWR5IGV4aXN0czogJHtwbHVnaW5EaXJ9ICh1c2Ugb3ZlcndyaXRlOiB0cnVlKWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnMucm1TeW5jKHBsdWdpbkRpciwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZpbGVzID0gc3VwZXJzZXRQYXRjaEZpbGVzKCk7XG4gICAgICAgIGNvbnN0IHdyaXR0ZW4gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICAgICAgICBjb25zdCBmdWxsUGF0aCA9IHBhdGguam9pbihwbHVnaW5EaXIsIGZpbGUucGF0aCk7XG4gICAgICAgICAgICBmcy5ta2RpclN5bmMocGF0aC5kaXJuYW1lKGZ1bGxQYXRoKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKGZ1bGxQYXRoLCBmaWxlLmNvbnRlbnQsIFwidXRmOFwiKTtcbiAgICAgICAgICAgIGlmIChmaWxlLmV4ZWN1dGFibGUpIHtcbiAgICAgICAgICAgICAgICBmcy5jaG1vZFN5bmMoZnVsbFBhdGgsIDBvNzU1KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdyaXR0ZW4ucHVzaChmaWxlLnBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBidWlsdCA9IGZhbHNlO1xuICAgICAgICBsZXQgYnVpbGRPdXRwdXQ7XG4gICAgICAgIGlmIChvcHRpb25zLmJ1aWxkKSB7XG4gICAgICAgICAgICBjb25zdCBzdXBlcnNldFJvb3QgPSBhd2FpdCB0aGlzLnJlc29sdmVTdXBlcnNldFJvb3QocGx1Z2luRGlyLCBvcHRpb25zKTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucnVuUGF0Y2hBbmRCdWlsZChwbHVnaW5EaXIsIHN1cGVyc2V0Um9vdCwgb3B0aW9ucykuY2F0Y2goKGVycikgPT4gKHtcbiAgICAgICAgICAgICAgICBvazogZmFsc2UsXG4gICAgICAgICAgICAgICAgb3V0cHV0OiBlcnIubWVzc2FnZSxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIGJ1aWx0ID0gcmVzdWx0Lm9rO1xuICAgICAgICAgICAgYnVpbGRPdXRwdXQgPSByZXN1bHQub3V0cHV0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwbHVnaW5QYXRoOiBwbHVnaW5EaXIsXG4gICAgICAgICAgICBkZXNjcmlwdG9yOiB7IC4uLnRoaXMuZGVzY3JpcHRvciwgdGFyZ2V0VmVyc2lvbiB9LFxuICAgICAgICAgICAgZmlsZXM6IHdyaXR0ZW4sXG4gICAgICAgICAgICBidWlsdCxcbiAgICAgICAgICAgIGJ1aWxkT3V0cHV0LFxuICAgICAgICB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXNvbHZlIHRoZSBTdXBlcnNldCBzb3VyY2Ugcm9vdDogdXNlIGFuIGV4aXN0aW5nIGNoZWNrb3V0IG9yIGNsb25lIHZpYSBnaXQuXG4gICAgICovXG4gICAgYXN5bmMgcmVzb2x2ZVN1cGVyc2V0Um9vdChwbHVnaW5EaXIsIG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMuc3VwZXJzZXRTb3VyY2VQYXRoKSB7XG4gICAgICAgICAgICBjb25zdCByZXNvbHZlZCA9IHBhdGgucmVzb2x2ZShvcHRpb25zLnN1cGVyc2V0U291cmNlUGF0aCk7XG4gICAgICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmMocGF0aC5qb2luKHJlc29sdmVkLCBcInN1cGVyc2V0LWZyb250ZW5kXCIsIFwic3JjXCIsIFwiZW1iZWRkZWRcIiwgXCJpbmRleC50c3hcIikpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYFN1cGVyc2V0IHNvdXJjZSBub3QgZm91bmQgYXQ6ICR7cmVzb2x2ZWR9IChtaXNzaW5nIHN1cGVyc2V0LWZyb250ZW5kL3NyYy9lbWJlZGRlZC9pbmRleC50c3gpYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZ2l0VXJsID0gb3B0aW9ucy5zdXBlcnNldEdpdFVybCA/PyBcImh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvc3VwZXJzZXQuZ2l0XCI7XG4gICAgICAgIGNvbnN0IGdpdFJlZiA9IG9wdGlvbnMuc3VwZXJzZXRHaXRSZWYgPz8gb3B0aW9ucy50YXJnZXRWZXJzaW9uID8/IFwiNi4xLjBcIjtcbiAgICAgICAgY29uc3QgY2xvbmVEaXIgPSBwYXRoLmpvaW4ocGx1Z2luRGlyLCBcIi5zdXBlcnNldC1zb3VyY2VcIik7XG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKGNsb25lRGlyKSkge1xuICAgICAgICAgICAgZnMucm1TeW5jKGNsb25lRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5ydW5Db21tYW5kKFwiZ2l0XCIsIFtcImNsb25lXCIsIFwiLS1kZXB0aFwiLCBcIjFcIiwgXCItLWJyYW5jaFwiLCBnaXRSZWYsIGdpdFVybCwgY2xvbmVEaXJdLCBwbHVnaW5EaXIpO1xuICAgICAgICByZXR1cm4gY2xvbmVEaXI7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEFwcGx5IHBhdGNoZXMsIHZlcmlmeSwgYW5kIGJ1aWxkIChTREsgKyBmcm9udGVuZCArIG9wdGlvbmFsbHkgRG9ja2VyKS5cbiAgICAgKi9cbiAgICBhc3luYyBydW5QYXRjaEFuZEJ1aWxkKHBsdWdpbkRpciwgc3VwZXJzZXRSb290LCBvcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IG91dHB1dHMgPSBbXTtcbiAgICAgICAgLy8gMS4gQXBwbHkgcGF0Y2hcbiAgICAgICAgY29uc3QgcGF0Y2hSZXN1bHQgPSBhd2FpdCB0aGlzLnJ1bkNvbW1hbmQoXCJweXRob24zXCIsIFtwYXRoLmpvaW4ocGx1Z2luRGlyLCBcInBhdGNoZXNcIiwgXCJhcHBseV9zdXBlcnNldF82XzFfcGF0Y2gucHlcIiksIHN1cGVyc2V0Um9vdF0sIHBsdWdpbkRpcik7XG4gICAgICAgIG91dHB1dHMucHVzaChwYXRjaFJlc3VsdCk7XG4gICAgICAgIC8vIDIuIFZlcmlmeSBwYXRjaFxuICAgICAgICBjb25zdCB2ZXJpZnlSZXN1bHQgPSBhd2FpdCB0aGlzLnJ1bkNvbW1hbmQocGF0aC5qb2luKHBsdWdpbkRpciwgXCJwYXRjaGVzXCIsIFwidmVyaWZ5X3BhdGNoLnNoXCIpLCBbc3VwZXJzZXRSb290XSwgcGx1Z2luRGlyKTtcbiAgICAgICAgb3V0cHV0cy5wdXNoKHZlcmlmeVJlc3VsdCk7XG4gICAgICAgIC8vIDMuIEJ1aWxkIChEb2NrZXIgaW1hZ2Ugb3IgU0RLICsgZnJvbnRlbmQpXG4gICAgICAgIGlmIChvcHRpb25zLmRvY2tlckltYWdlVGFnKSB7XG4gICAgICAgICAgICBjb25zdCBkb2NrZXJSZXN1bHQgPSBhd2FpdCB0aGlzLnJ1bkNvbW1hbmQocGF0aC5qb2luKHBsdWdpbkRpciwgXCJidWlsZFwiLCBcImJ1aWxkLWRvY2tlci1pbWFnZS5zaFwiKSwgW3N1cGVyc2V0Um9vdCwgb3B0aW9ucy5kb2NrZXJJbWFnZVRhZ10sIHBsdWdpbkRpcik7XG4gICAgICAgICAgICBvdXRwdXRzLnB1c2goZG9ja2VyUmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHNka1Jlc3VsdCA9IGF3YWl0IHRoaXMucnVuQ29tbWFuZChwYXRoLmpvaW4ocGx1Z2luRGlyLCBcImJ1aWxkXCIsIFwiYnVpbGQtc2RrLnNoXCIpLCBbc3VwZXJzZXRSb290XSwgcGx1Z2luRGlyKTtcbiAgICAgICAgICAgIG91dHB1dHMucHVzaChzZGtSZXN1bHQpO1xuICAgICAgICAgICAgY29uc3QgZnJvbnRlbmRSZXN1bHQgPSBhd2FpdCB0aGlzLnJ1bkNvbW1hbmQocGF0aC5qb2luKHBsdWdpbkRpciwgXCJidWlsZFwiLCBcImJ1aWxkLXN1cGVyc2V0LWZyb250ZW5kLnNoXCIpLCBbc3VwZXJzZXRSb290XSwgcGx1Z2luRGlyKTtcbiAgICAgICAgICAgIG91dHB1dHMucHVzaChmcm9udGVuZFJlc3VsdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgb2s6IHRydWUsIG91dHB1dDogb3V0cHV0cy5qb2luKFwiXFxuXCIpIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJ1biBhIGNvbW1hbmQgYW5kIGNhcHR1cmUgc3Rkb3V0K3N0ZGVyci5cbiAgICAgKi9cbiAgICBydW5Db21tYW5kKGNtZCwgYXJncywgY3dkKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBleGVjRmlsZShjbWQsIGFyZ3MsIHsgY3dkLCB0aW1lb3V0OiA2MDAwMDAgfSwgKGVycm9yLCBzdGRvdXQsIHN0ZGVycikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG91dHB1dCA9IGAke3N0ZG91dCA/PyBcIlwifSR7c3RkZXJyID8/IFwiXCJ9YC50cmltKCk7XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3Iob3V0cHV0IHx8IGVycm9yLm1lc3NhZ2UpKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXNvbHZlKG91dHB1dCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuLyoqIERlZmF1bHQgc2luZ2xldG9uIGluc3RhbmNlLiAqL1xuZXhwb3J0IGNvbnN0IHN1cGVyc2V0RGFzaGJvYXJkRW1iZWRQbHVnaW4gPSBuZXcgU3VwZXJzZXREYXNoYm9hcmRFbWJlZFBsdWdpbigpO1xuLyoqIEZhY3RvcnkgYWNjZXB0aW5nIGEgdGFyZ2V0IFN1cGVyc2V0IHZlcnNpb24uICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU3VwZXJzZXREYXNoYm9hcmRFbWJlZFBsdWdpbih0YXJnZXRWZXJzaW9uKSB7XG4gICAgcmV0dXJuIG5ldyBTdXBlcnNldERhc2hib2FyZEVtYmVkUGx1Z2luKHRhcmdldFZlcnNpb24pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYVc1emRHRnNiR1Z5TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dkxpNHZMaTR2YzNKakwzQnNkV2RwYm5NdmMzVndaWEp6WlhRdmFXNXpkR0ZzYkdWeUxuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCT3pzN096czdPenM3T3pzN1IwRlpSenRCUVVOSUxFOUJRVThzUlVGQlJTeGhRVUZoTEVWQlFVVXNUVUZCVFN4NVFrRkJlVUlzUTBGQlF6dEJRVU40UkN4UFFVRlBMRVZCUVVVc1owSkJRV2RDTEVWQlFYTkNMRTFCUVUwc1owSkJRV2RDTEVOQlFVTTdRVUZEZEVVc1QwRkJUeXhMUVVGTExFVkJRVVVzVFVGQlRTeFRRVUZUTEVOQlFVTTdRVUZET1VJc1QwRkJUeXhMUVVGTExFbEJRVWtzVFVGQlRTeFhRVUZYTEVOQlFVTTdRVUZEYkVNc1QwRkJUeXhGUVVGRkxGRkJRVkVzUlVGQlJTeE5RVUZOTEc5Q1FVRnZRaXhEUVVGRE8wRkJSVGxETEU5QlFVOHNSVUZEVEN3MFFrRkJORUlzUlVGRE5VSXNNRUpCUVRCQ0xFbEJRVWtzVlVGQlZTeEhRVk42UXl4NVFrRkJiMEk3UVVGRGNrSXNUMEZCVHl4RlFVTk1MR1ZCUVdVc1JVRkRaaXhyUWtGQmEwSXNSVUZEYkVJc2RVSkJRWFZDTEVWQlEzWkNMSEZDUVVGeFFpeEhRVU4wUWl4elFrRkJiVUk3UVVGRGNFSXNUMEZCVHl4RlFVRkZMR3RDUVVGclFpeEZRVUZGTEhWQ1FVRnZRanRCUVVWcVJDeDNSRUZCZDBRN1FVRkRlRVFzVFVGQlRTeERRVUZETEUxQlFVMHNNRUpCUVRCQ0xFZEJRVWNzVlVGQlZTeERRVUZETzBGQlowSnlSRHM3T3pzN096czdPMGRCVTBjN1FVRkRTQ3hOUVVGTkxGVkJRVlVzY1VKQlFYRkNMRU5CUVVNc1QwRkJkMEk3U1VGRE5VUXNUVUZCVFN4UlFVRlJMRWRCUVVjc1QwRkJUeXhEUVVGRExGRkJRVkVzU1VGQlNTd3dRa0ZCTUVJc1EwRkJRenRKUVVOb1JTeE5RVUZOTEUxQlFVMHNSMEZCUnl4SlFVRkpMR1ZCUVdVc1JVRkJSU3hEUVVGRE8wbEJRM0pETEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1kwRkJZeXhGUVVGRkxFOUJRVThzUTBGQlF5eFpRVUZaTEVOQlFVTXNRMEZCUXp0SlFVTnFSQ3hKUVVGSkxFOUJRVThzUTBGQlF5eEpRVUZKTEVWQlFVVXNVMEZCVXl4RlFVRkZMRU5CUVVNN1VVRkROVUlzVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4WFFVRlhMRVZCUVVVc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRGJFVXNRMEZCUXp0SlFVTkVMRTlCUVU4c1MwRkJTeXhQUVVGUExFTkJRVU1zU1VGQlNTeEpRVUZKTEZGQlFWRXNZVUZCWVN4UFFVRlBMRU5CUVVNc1YwRkJWeXhKUVVGSkxFMUJRVTBzUTBGQlF5eFJRVUZSTEVWQlFVVXNSVUZCUlN4RFFVRkRPMEZCUXpsR0xFTkJRVU03UVVGRlJEczdPenM3UjBGTFJ6dEJRVU5JTEUxQlFVMHNUMEZCVHl3MFFrRkJORUk3U1VGSGRrTXNXVUZCYlVJc1owSkJRWGRDTEZWQlFWVTdVVUZEYmtRc1NVRkJTU3hEUVVGRExGVkJRVlVzUjBGQlJ6dFpRVU5vUWl4RlFVRkZMRVZCUVVVc2EwSkJRV3RDTzFsQlEzUkNMRXRCUVVzc1JVRkJSU3hsUVVGbE8xbEJRM1JDTEU5QlFVOHNSVUZCUlN4MVFrRkJkVUk3V1VGRGFFTXNZVUZCWVR0WlFVTmlMRWxCUVVrc1JVRkJSU3hWUVVGVk8xTkJRMnBDTEVOQlFVTTdTVUZEU2l4RFFVRkRPMGxCUlUwc1VVRkJVU3hEUVVGRExHZENRVUYzUWl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExHRkJRV0U3VVVGRGJrVXNUMEZCVHl4eFFrRkJjVUlzUTBGQlF5eGhRVUZoTEVOQlFYVkRMRU5CUVVNN1NVRkRjRVlzUTBGQlF6dEpRVVZOTEdGQlFXRXNRMEZCUXl4UFFVRjNRanRSUVVNelF5eFBRVUZQTEhGQ1FVRnhRaXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzBsQlEzaERMRU5CUVVNN1NVRkZUU3cwUWtGQk5FSXNRMEZEYWtNc1QwRkJLMEk3VVVGRkwwSXNUMEZCVHl3MFFrRkJORUlzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0SlFVTXZReXhEUVVGRE8wbEJSVTBzTUVKQlFUQkNMRU5CUXk5Q0xFMUJRVEJDTEVWQlF6RkNMRTlCUVN0Q0xFVkJReTlDTEZsQlFXOUNPMUZCUlhCQ0xGVkJRVlVzUTBGQlF5eE5RVUZOTEVWQlFVVXNUMEZCVHl4RlFVRkZMRmxCUVZrc1EwRkJReXhEUVVGRE8wbEJRelZETEVOQlFVTTdTVUZGUkRzN096czdPenM3VDBGUlJ6dEpRVU5KTEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUTJ4Q0xFOUJRU3RDTzFGQlJTOUNMRTFCUVUwc1IwRkJSeXhIUVVGSExFOUJRVThzUTBGQlF5eFBRVUU0UXl4RFFVRkRPMUZCUTI1RkxFbEJRVWtzUjBGQlJ5eEZRVUZGTEVOQlFVTTdXVUZEVWl4TFFVRkxMRWRCUVVjc1EwRkJRenRSUVVOWUxFTkJRVU03VVVGRFJDeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVZVc1NVRkJTU3hQUVVGUExFTkJRVU1zVlVGQlZTeERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRTFCUVUwc1MwRkJTeXhEUVVGRExFVkJRVVVzUTBGQlF6dFpRVU5zUlN4TlFVRk5MRWxCUVVrc1owSkJRV2RDTEVOQlFVTXNaME5CUVdkRExFTkJRVU1zUTBGQlF6dFJRVU12UkN4RFFVRkRPMUZCUlVRc1RVRkJUU3hoUVVGaExFZEJRVWNzVDBGQlR5eERRVUZETEdGQlFXRXNTVUZCU1N4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExHRkJRV0VzUTBGQlF6dFJRVU0zUlN4TlFVRk5MRk5CUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVU0xUWl4UFFVRlBMRU5CUVVNc1ZVRkJWU3hGUVVOc1FpeGxRVUZsTEVOQlEyaENMRU5CUVVNN1VVRkZSaXhKUVVGSkxFVkJRVVVzUTBGQlF5eFZRVUZWTEVOQlFVTXNVMEZCVXl4RFFVRkRMRVZCUVVVc1EwRkJRenRaUVVNM1FpeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRE8yZENRVU4yUWl4TlFVRk5MRWxCUVVrc1lVRkJZU3hEUVVOeVFpeHZRMEZCYjBNc1UwRkJVeXgzUWtGQmQwSXNRMEZEZEVVc1EwRkJRenRaUVVOS0xFTkJRVU03V1VGRFJDeEZRVUZGTEVOQlFVTXNUVUZCVFN4RFFVRkRMRk5CUVZNc1JVRkJSU3hGUVVGRkxGTkJRVk1zUlVGQlJTeEpRVUZKTEVWQlFVVXNTMEZCU3l4RlFVRkZMRWxCUVVrc1JVRkJSU3hEUVVGRExFTkJRVU03VVVGRGVrUXNRMEZCUXp0UlFVVkVMRTFCUVUwc1MwRkJTeXhIUVVGSExHdENRVUZyUWl4RlFVRkZMRU5CUVVNN1VVRkRia01zVFVGQlRTeFBRVUZQTEVkQlFXRXNSVUZCUlN4RFFVRkRPMUZCUXpkQ0xFdEJRVXNzVFVGQlRTeEpRVUZKTEVsQlFVa3NTMEZCU3l4RlFVRkZMRU5CUVVNN1dVRkRla0lzVFVGQlRTeFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFVkJRVVVzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMWxCUTJwRUxFVkJRVVVzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhSUVVGUkxFTkJRVU1zUlVGQlJTeEZRVUZGTEZOQlFWTXNSVUZCUlN4SlFVRkpMRVZCUVVVc1EwRkJReXhEUVVGRE8xbEJRekZFTEVWQlFVVXNRMEZCUXl4aFFVRmhMRU5CUVVNc1VVRkJVU3hGUVVGRkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVWQlFVVXNUVUZCVFN4RFFVRkRMRU5CUVVNN1dVRkRha1FzU1VGQlNTeEpRVUZKTEVOQlFVTXNWVUZCVlN4RlFVRkZMRU5CUVVNN1owSkJRM0JDTEVWQlFVVXNRMEZCUXl4VFFVRlRMRU5CUVVNc1VVRkJVU3hGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzFsQlEyaERMRU5CUVVNN1dVRkRSQ3hQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRSUVVNeFFpeERRVUZETzFGQlJVUXNTVUZCU1N4TFFVRkxMRWRCUVVjc1MwRkJTeXhEUVVGRE8xRkJRMnhDTEVsQlFVa3NWMEZCSzBJc1EwRkJRenRSUVVWd1F5eEpRVUZKTEU5QlFVOHNRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJRenRaUVVOc1FpeE5RVUZOTEZsQlFWa3NSMEZCUnl4TlFVRk5MRWxCUVVrc1EwRkJReXh0UWtGQmJVSXNRMEZCUXl4VFFVRlRMRVZCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU03V1VGRGVFVXNUVUZCVFN4TlFVRk5MRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUTNoRExGTkJRVk1zUlVGRFZDeFpRVUZaTEVWQlExb3NUMEZCVHl4RFFVTlNMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUjBGQlZTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRPMmRDUVVOMlFpeEZRVUZGTEVWQlFVVXNTMEZCWXp0blFrRkRiRUlzVFVGQlRTeEZRVUZGTEVkQlFVY3NRMEZCUXl4UFFVRlBPMkZCUTNCQ0xFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEwb3NTMEZCU3l4SFFVRkhMRTFCUVUwc1EwRkJReXhGUVVGRkxFTkJRVU03V1VGRGJFSXNWMEZCVnl4SFFVRkhMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU03VVVGRE9VSXNRMEZCUXp0UlFVVkVMRTlCUVU4N1dVRkRUQ3hWUVVGVkxFVkJRVVVzVTBGQlV6dFpRVU55UWl4VlFVRlZMRVZCUVVVc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eFZRVUZWTEVWQlFVVXNZVUZCWVN4RlFVRkZPMWxCUTJwRUxFdEJRVXNzUlVGQlJTeFBRVUZQTzFsQlEyUXNTMEZCU3p0WlFVTk1MRmRCUVZjN1UwRkRXaXhEUVVGRE8wbEJRMG9zUTBGQlF6dEpRVVZFT3p0UFFVVkhPMGxCUTA4c1MwRkJTeXhEUVVGRExHMUNRVUZ0UWl4RFFVTnFReXhUUVVGcFFpeEZRVU5xUWl4UFFVRXJRanRSUVVVdlFpeEpRVUZKTEU5QlFVOHNRMEZCUXl4clFrRkJhMElzUlVGQlJTeERRVUZETzFsQlF5OUNMRTFCUVUwc1VVRkJVU3hIUVVGSExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRMR3RDUVVGclFpeERRVUZETEVOQlFVTTdXVUZETVVRc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVVzYlVKQlFXMUNMRVZCUVVVc1MwRkJTeXhGUVVGRkxGVkJRVlVzUlVGQlJTeFhRVUZYTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNN1owSkJRemRHTEUxQlFVMHNTVUZCU1N4aFFVRmhMRU5CUTNKQ0xHbERRVUZwUXl4UlFVRlJMSEZFUVVGeFJDeERRVU12Uml4RFFVRkRPMWxCUTBvc1EwRkJRenRaUVVORUxFOUJRVThzVVVGQlVTeERRVUZETzFGQlEyeENMRU5CUVVNN1VVRkZSQ3hOUVVGTkxFMUJRVTBzUjBGQlJ5eFBRVUZQTEVOQlFVTXNZMEZCWXl4SlFVRkpMSGREUVVGM1F5eERRVUZETzFGQlEyeEdMRTFCUVUwc1RVRkJUU3hIUVVGSExFOUJRVThzUTBGQlF5eGpRVUZqTEVsQlFVa3NUMEZCVHl4RFFVRkRMR0ZCUVdFc1NVRkJTU3hQUVVGUExFTkJRVU03VVVGRE1VVXNUVUZCVFN4UlFVRlJMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFRRVUZUTEVWQlFVVXNhMEpCUVd0Q0xFTkJRVU1zUTBGQlF6dFJRVVV4UkN4SlFVRkpMRVZCUVVVc1EwRkJReXhWUVVGVkxFTkJRVU1zVVVGQlVTeERRVUZETEVWQlFVVXNRMEZCUXp0WlFVTTFRaXhGUVVGRkxFTkJRVU1zVFVGQlRTeERRVUZETEZGQlFWRXNSVUZCUlN4RlFVRkZMRk5CUVZNc1JVRkJSU3hKUVVGSkxFVkJRVVVzUzBGQlN5eEZRVUZGTEVsQlFVa3NSVUZCUlN4RFFVRkRMRU5CUVVNN1VVRkRlRVFzUTBGQlF6dFJRVVZFTEUxQlFVMHNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF5eFBRVUZQTEVWQlFVVXNVMEZCVXl4RlFVRkZMRWRCUVVjc1JVRkJSU3hWUVVGVkxFVkJRVVVzVFVGQlRTeEZRVUZGTEUxQlFVMHNSVUZCUlN4UlFVRlJMRU5CUVVNc1JVRkJSU3hUUVVGVExFTkJRVU1zUTBGQlF6dFJRVU42Unl4UFFVRlBMRkZCUVZFc1EwRkJRenRKUVVOc1FpeERRVUZETzBsQlJVUTdPMDlCUlVjN1NVRkRUeXhMUVVGTExFTkJRVU1zWjBKQlFXZENMRU5CUXpsQ0xGTkJRV2xDTEVWQlEycENMRmxCUVc5Q0xFVkJRM0JDTEU5QlFTdENPMUZCUlM5Q0xFMUJRVTBzVDBGQlR5eEhRVUZoTEVWQlFVVXNRMEZCUXp0UlFVVTNRaXhwUWtGQmFVSTdVVUZEYWtJc1RVRkJUU3hYUVVGWExFZEJRVWNzVFVGQlRTeEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVTjJReXhUUVVGVExFVkJRMVFzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1JVRkJSU3hUUVVGVExFVkJRVVVzTmtKQlFUWkNMRU5CUVVNc1JVRkJSU3haUVVGWkxFTkJRVU1zUlVGRE9VVXNVMEZCVXl4RFFVTldMRU5CUVVNN1VVRkRSaXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRPMUZCUlRGQ0xHdENRVUZyUWp0UlFVTnNRaXhOUVVGTkxGbEJRVmtzUjBGQlJ5eE5RVUZOTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUTNoRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RlFVRkZMRk5CUVZNc1JVRkJSU3hwUWtGQmFVSXNRMEZCUXl4RlFVTnNSQ3hEUVVGRExGbEJRVmtzUTBGQlF5eEZRVU5rTEZOQlFWTXNRMEZEVml4RFFVRkRPMUZCUTBZc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNRMEZCUXp0UlFVVXpRaXcwUTBGQk5FTTdVVUZETlVNc1NVRkJTU3hQUVVGUExFTkJRVU1zWTBGQll5eEZRVUZGTEVOQlFVTTdXVUZETTBJc1RVRkJUU3haUVVGWkxFZEJRVWNzVFVGQlRTeEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVTjRReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNSVUZCUlN4UFFVRlBMRVZCUVVVc2RVSkJRWFZDTEVOQlFVTXNSVUZEZEVRc1EwRkJReXhaUVVGWkxFVkJRVVVzVDBGQlR5eERRVUZETEdOQlFXTXNRMEZCUXl4RlFVTjBReXhUUVVGVExFTkJRMVlzUTBGQlF6dFpRVU5HTEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU03VVVGRE4wSXNRMEZCUXp0aFFVRk5MRU5CUVVNN1dVRkRUaXhOUVVGTkxGTkJRVk1zUjBGQlJ5eE5RVUZOTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUTNKRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RlFVRkZMRTlCUVU4c1JVRkJSU3hqUVVGakxFTkJRVU1zUlVGRE4wTXNRMEZCUXl4WlFVRlpMRU5CUVVNc1JVRkRaQ3hUUVVGVExFTkJRMVlzUTBGQlF6dFpRVU5HTEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU03V1VGRmVFSXNUVUZCVFN4alFVRmpMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zVlVGQlZTeERRVU14UXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUlVGQlJTeFBRVUZQTEVWQlFVVXNORUpCUVRSQ0xFTkJRVU1zUlVGRE0wUXNRMEZCUXl4WlFVRlpMRU5CUVVNc1JVRkRaQ3hUUVVGVExFTkJRMVlzUTBGQlF6dFpRVU5HTEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFTkJRVU03VVVGREwwSXNRMEZCUXp0UlFVVkVMRTlCUVU4c1JVRkJSU3hGUVVGRkxFVkJRVVVzU1VGQlNTeEZRVUZGTEUxQlFVMHNSVUZCUlN4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTTdTVUZEYkVRc1EwRkJRenRKUVVWRU96dFBRVVZITzBsQlEwOHNWVUZCVlN4RFFVTnNRaXhIUVVGWExFVkJRMWdzU1VGQll5eEZRVU5rTEVkQlFWYzdVVUZGV0N4UFFVRlBMRWxCUVVrc1QwRkJUeXhEUVVGRExFTkJRVU1zVDBGQlR5eEZRVUZGTEUxQlFVMHNSVUZCUlN4RlFVRkZPMWxCUTNKRExGRkJRVkVzUTBGRFRpeEhRVUZITEVWQlEwZ3NTVUZCU1N4RlFVTktMRVZCUVVVc1IwRkJSeXhGUVVGRkxFOUJRVThzUlVGQlJTeE5RVUZOTEVWQlFVVXNSVUZEZUVJc1EwRkJReXhMUVVGTExFVkJRVVVzVFVGQlRTeEZRVUZGTEUxQlFVMHNSVUZCUlN4RlFVRkZPMmRDUVVONFFpeE5RVUZOTEUxQlFVMHNSMEZCUnl4SFFVRkhMRTFCUVUwc1NVRkJTU3hGUVVGRkxFZEJRVWNzVFVGQlRTeEpRVUZKTEVWQlFVVXNSVUZCUlN4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRE8yZENRVU4yUkN4SlFVRkpMRXRCUVVzc1JVRkJSU3hEUVVGRE8yOUNRVU5XTEUxQlFVMHNRMEZCUXl4SlFVRkpMRXRCUVVzc1EwRkJReXhOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNN2IwSkJRek5ETEU5QlFVODdaMEpCUTFRc1EwRkJRenRuUWtGRFJDeFBRVUZQTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1dVRkRiRUlzUTBGQlF5eERRVU5HTEVOQlFVTTdVVUZEU2l4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOTUxFTkJRVU03UTBGRFJqdEJRVVZFTEd0RFFVRnJRenRCUVVOc1F5eE5RVUZOTEVOQlFVTXNUVUZCVFN3MFFrRkJORUlzUjBGQlJ5eEpRVUZKTERSQ1FVRTBRaXhGUVVGRkxFTkJRVU03UVVGRkwwVXNiVVJCUVcxRU8wRkJRMjVFTEUxQlFVMHNWVUZCVlN4clEwRkJhME1zUTBGRGFFUXNZVUZCY1VJN1NVRkZja0lzVDBGQlR5eEpRVUZKTERSQ1FVRTBRaXhEUVVGRExHRkJRV0VzUTBGQlF5eERRVUZETzBGQlEzcEVMRU5CUVVNaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFQnRiMlIxYkdVZ2FXNTBaV2R5WVhScGIyNXpMM0JzZFdkcGJuTXZjM1Z3WlhKelpYUXZhVzV6ZEdGc2JHVnlYRzRnS2lCQWMzVnRiV0Z5ZVNCVGRYQmxjbk5sZENCa1lYTm9ZbTloY21RZ1pXMWlaV1FnY0d4MVoybHVJR2x1YzNSaGJHeGxjaTVjYmlBcUlFQmtaWE5qY21sd2RHbHZiaUJKYlhCc1pXMWxiblJ6SUdCRVlYTm9ZbTloY21SRmJXSmxaRkJzZFdkcGJtQWdabTl5SUZOMWNHVnljMlYwSUhWemFXNW5JR0ZjYmlBcUlIQmhkR05vTFdGdVpDMWlkV2xzWkNCemRISmhkR1ZuZVM0Z1JHVmpZV1lnYUc5c1pITWdjR0YwWTJnZ2MyTnlhWEIwY3lCMGFHRjBJRzF2WkdsbWVTQlRkWEJsY25ObGRDZHpYRzRnS2lCcGJuUmxjbTVoYkNCbGJXSmxaR1JsWkNCbWNtOXVkR1Z1WkNCaGJtUWdVMFJMSUhOdmRYSmpaU0JtYVd4bGN5QjBieUJoWkdRZ1lTQmdjM2RwZEdOb1JHRnphR0p2WVhKa1lGeHVJQ29nYldWMGFHOWtMaUJnYVc1emRHRnNiR0FnYldGMFpYSnBZV3hwZW1WeklIUm9aU0J6WTNKcGNIUnpMQ0JqYkc5dVpYTXZkWE5sY3lCVGRYQmxjbk5sZENCemIzVnlZMlVzWEc0Z0tpQmhjSEJzYVdWeklIQmhkR05vWlhNc0lHRnVaQ0JpZFdsc1pITWdLRk5FU3lBcklHWnliMjUwWlc1a0lDc2diM0IwYVc5dVlXeHNlU0JFYjJOclpYSWdhVzFoWjJVcExseHVJQ3BjYmlBcUlGUm9aU0J6WVcxbElHQkVZWE5vWW05aGNtUkZiV0psWkZCc2RXZHBibUFnUVZCSklHRnpJRXRwWW1GdVlTQnBjeUJsZUhCdmMyVmtMaUJnYzJWdVpGTjNhWFJqYUVSaGMyaGliMkZ5WkUxbGMzTmhaMlZnWEc0Z0tpQmtaV3hsWjJGMFpYTWdkRzhnWUhSaGNtZGxkQzV6ZDJsMFkyaEVZWE5vWW05aGNtUW9aR0Z6YUdKdllYSmtTV1FzSUdkMVpYTjBWRzlyWlc0cFlDQW9kR2hsSUZOMWNHVnljMlYwWEc0Z0tpQlRSRXNnYUdGdVpHeGxLU0JwYm5OMFpXRmtJRzltSUdCd2IzTjBUV1Z6YzJGblpXQXVYRzRnS2k5Y2JtbHRjRzl5ZENCN0lFbHVkR1Z5Ym1Gc1JYSnliM0lnZlNCbWNtOXRJRndpUUdSbFkyRm1MWFJ6TDJSaUxXUmxZMjl5WVhSdmNuTmNJanRjYm1sdGNHOXlkQ0I3SUZWdWMzVndjRzl5ZEdWa1JYSnliM0lzSUUxaGVXSmxRMjl1ZEdWNGRIVmhiRUZ5WnlCOUlHWnliMjBnWENKQVpHVmpZV1l0ZEhNdlkyOXlaVndpTzF4dWFXMXdiM0owSUNvZ1lYTWdabk1nWm5KdmJTQmNJbTV2WkdVNlpuTmNJanRjYm1sdGNHOXlkQ0FxSUdGeklIQmhkR2dnWm5KdmJTQmNJbTV2WkdVNmNHRjBhRndpTzF4dWFXMXdiM0owSUhzZ1pYaGxZMFpwYkdVZ2ZTQm1jbTl0SUZ3aWJtOWtaVHBqYUdsc1pGOXdjbTlqWlhOelhDSTdYRzVjYm1sdGNHOXlkQ0I3WEc0Z0lHTnlaV0YwWlZOM2FYUmphRVJoYzJoaWIyRnlaRTFsYzNOaFoyVXNYRzRnSUhObGJtUlRkMmwwWTJoRVlYTm9ZbTloY21STlpYTnpZV2RsSUdGeklITmxibVJUYUdGeVpXUXNYRzRnSUhSNWNHVWdSR0Z6YUdKdllYSmtSVzFpWldSUWJIVm5hVzRzWEc0Z0lIUjVjR1VnUkdGemFHSnZZWEprUlcxaVpXUlFiSFZuYVc1RVpYTmpjbWx3ZEc5eUxGeHVJQ0IwZVhCbElFVnRZbVZrVFdWemMyRm5aVlJoY21kbGRDeGNiaUFnZEhsd1pTQkZiV0psWkZWeWJFOXdkR2x2Ym5Nc1hHNGdJSFI1Y0dVZ1VHeDFaMmx1U1c1emRHRnNiRTl3ZEdsdmJuTXNYRzRnSUhSNWNHVWdVR3gxWjJsdVNXNXpkR0ZzYkZKbGMzVnNkQ3hjYmlBZ2RIbHdaU0JUZDJsMFkyaEVZWE5vWW05aGNtUlFZWGxzYjJGa0xGeHVJQ0IwZVhCbElGTjNhWFJqYUVSaGMyaGliMkZ5WkUxbGMzTmhaMlVzWEc1OUlHWnliMjBnWENJdUxpOWpiMjUwY21GamRGd2lPMXh1YVcxd2IzSjBJSHRjYmlBZ1UxVlFSVkpUUlZSZlFWQlFYMGxFTEZ4dUlDQlRWVkJGVWxORlZGOVFURlZIU1U1ZlNVUXNYRzRnSUZOVlVFVlNVMFZVWDFCTVZVZEpUbDlXUlZKVFNVOU9MRnh1SUNCaWRXbHNaRk4xY0dWeWMyVjBUV0Z1YVdabGMzUXNYRzU5SUdaeWIyMGdYQ0l1TDIxaGJtbG1aWE4wWENJN1hHNXBiWEJ2Y25RZ2V5QnpkWEJsY25ObGRGQmhkR05vUm1sc1pYTWdmU0JtY205dElGd2lMaTkwWlcxd2JHRjBaWE5jSWp0Y2JseHVMeW9xSUVSbFptRjFiSFFnVTNWd1pYSnpaWFFnWW1GelpTQndZWFJvSUhkb1pXNGdibTl1WlNCcGN5QndjbTkyYVdSbFpDNGdLaTljYm1WNGNHOXlkQ0JqYjI1emRDQlRWVkJGVWxORlZGOUVSVVpCVlV4VVgwSkJVMFZmVUVGVVNDQTlJRndpYzNWd1pYSnpaWFJjSWp0Y2JseHVMeW9xWEc0Z0tpQkZlSFJsYm5OcGIyNGdiMllnWUZCc2RXZHBia2x1YzNSaGJHeFBjSFJwYjI1ellDQm1iM0lnVTNWd1pYSnpaWFF0YzNCbFkybG1hV01nWW5WcGJHUWdZMjl1Wm1sbmRYSmhkR2x2Ymk1Y2JpQXFMMXh1Wlhod2IzSjBJR2x1ZEdWeVptRmpaU0JUZFhCbGNuTmxkRWx1YzNSaGJHeFBjSFJwYjI1eklHVjRkR1Z1WkhNZ1VHeDFaMmx1U1c1emRHRnNiRTl3ZEdsdmJuTWdlMXh1SUNBdktpb2dVR0YwYUNCMGJ5QmhiaUJsZUdsemRHbHVaeUJUZFhCbGNuTmxkQ0J6YjNWeVkyVWdZMmhsWTJ0dmRYUXVJRWxtSUdGaWMyVnVkQ3dnZEdobElHbHVjM1JoYkd4bGNpQmpiRzl1WlhNZ2RtbGhJR2RwZEM0Z0tpOWNiaUFnYzNWd1pYSnpaWFJUYjNWeVkyVlFZWFJvUHpvZ2MzUnlhVzVuTzF4dUlDQXZLaW9nUjJsMElGVlNUQ0IwYnlCamJHOXVaU0JUZFhCbGNuTmxkQ0JtY205dElDaDFjMlZrSUhkb1pXNGdZSE4xY0dWeWMyVjBVMjkxY21ObFVHRjBhR0FnYVhNZ1lXSnpaVzUwS1M0Z0tpOWNiaUFnYzNWd1pYSnpaWFJIYVhSVmNtdy9PaUJ6ZEhKcGJtYzdYRzRnSUM4cUtpQkhhWFFnY21WbUwySnlZVzVqYUM5MFlXY2dkRzhnWTJobFkydHZkWFFnWVdaMFpYSWdZMnh2Ym1sdVp5NGdLaTljYmlBZ2MzVndaWEp6WlhSSGFYUlNaV1kvT2lCemRISnBibWM3WEc0Z0lDOHFLaUJFYjJOclpYSWdhVzFoWjJVZ2RHRm5JSFJ2SUdKMWFXeGtJQ2gzYUdWdUlIQnliM1pwWkdWa0xDQmlkV2xzWkhNZ1lTQkViMk5yWlhJZ2FXMWhaMlVnYVc1emRHVmhaQ0J2WmlCcWRYTjBJRk5FU3l0bWNtOXVkR1Z1WkNrdUlDb3ZYRzRnSUdSdlkydGxja2x0WVdkbFZHRm5Qem9nYzNSeWFXNW5PMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFSjFhV3hrSUhSb1pTQlRkWEJsY25ObGRDQmxiV0psWkdSbFpDQlZVa3d1WEc0Z0tseHVJQ29nUm05eUlGTjFjR1Z5YzJWMExDQjBhR1VnWUdSaGMyaGliMkZ5WkVsa1lDQm1hV1ZzWkNCcGJpQmdSVzFpWldSVmNteFBjSFJwYjI1ellDQnBjeUIwYUdWY2JpQXFJR1Z0WW1Wa1pHVmtMV052Ym1acFozVnlZWFJwYjI0Z1ZWVkpSQ0IxYzJWa0lHbHVJR0F2WlcxaVpXUmtaV1F2T25WMWFXUmdMbHh1SUNwY2JpQXFJRUJsZUdGdGNHeGxYRzRnS2lBZ0lHSjFhV3hrVTNWd1pYSnpaWFJGYldKbFpGVnliQ2g3SUdodmMzUTZJRndpYzNWd1pYSnpaWFF1WlhoaGJYQnNaUzVqYjIxY0lpd2daR0Z6YUdKdllYSmtTV1E2SUZ3aVlXSmpMWFYxYVdSY0lpd2djR0Z5Wlc1MFQzSnBaMmx1T2lCY0ltaDBkSEJ6T2k4dllYQndMbVY0WVcxd2JHVXVZMjl0WENJZ2ZTbGNiaUFxSUNBZ0x5OGdQVDRnWENJdkwzTjFjR1Z5YzJWMExtVjRZVzF3YkdVdVkyOXRMM04xY0dWeWMyVjBMMlZ0WW1Wa1pHVmtMMkZpWXkxMWRXbGtQM0JoY21WdWRFOXlhV2RwYmoxb2RIUndjeVV6UVNVeVJpVXlSbUZ3Y0M1bGVHRnRjR3hsTG1OdmJWd2lYRzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCaWRXbHNaRk4xY0dWeWMyVjBSVzFpWldSVmNtd29iM0IwYVc5dWN6b2dSVzFpWldSVmNteFBjSFJwYjI1ektUb2djM1J5YVc1bklIdGNiaUFnWTI5dWMzUWdZbUZ6WlZCaGRHZ2dQU0J2Y0hScGIyNXpMbUpoYzJWUVlYUm9JRDgvSUZOVlVFVlNVMFZVWDBSRlJrRlZURlJmUWtGVFJWOVFRVlJJTzF4dUlDQmpiMjV6ZENCd1lYSmhiWE1nUFNCdVpYY2dWVkpNVTJWaGNtTm9VR0Z5WVcxektDazdYRzRnSUhCaGNtRnRjeTV6WlhRb1hDSndZWEpsYm5SUGNtbG5hVzVjSWl3Z2IzQjBhVzl1Y3k1d1lYSmxiblJQY21sbmFXNHBPMXh1SUNCcFppQW9iM0IwYVc5dWN5NTJhV1YzUHk1MGFXMWxVbUZ1WjJVcElIdGNiaUFnSUNCd1lYSmhiWE11YzJWMEtGd2lkR2x0WlZKaGJtZGxYQ0lzSUVwVFQwNHVjM1J5YVc1bmFXWjVLRzl3ZEdsdmJuTXVkbWxsZHk1MGFXMWxVbUZ1WjJVcEtUdGNiaUFnZlZ4dUlDQnlaWFIxY200Z1lDOHZKSHR2Y0hScGIyNXpMbWh2YzNSOUx5UjdZbUZ6WlZCaGRHaDlMMlZ0WW1Wa1pHVmtMeVI3YjNCMGFXOXVjeTVrWVhOb1ltOWhjbVJKWkgwL0pIdHdZWEpoYlhNdWRHOVRkSEpwYm1jb0tYMWdPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFQmpiR0Z6Y3lCVGRYQmxjbk5sZEVSaGMyaGliMkZ5WkVWdFltVmtVR3gxWjJsdVhHNGdLaUJBYzNWdGJXRnllU0JUZFhCbGNuTmxkQ0JwYlhCc1pXMWxiblJoZEdsdmJpQnZaaUIwYUdVZ1lFUmhjMmhpYjJGeVpFVnRZbVZrVUd4MVoybHVZQ0JqYjI1MGNtRmpkQzVjYmlBcUlFQmtaWE5qY21sd2RHbHZiaUJQY21jdFlXZHViM04wYVdNZ2JYVnNkR2t0ZEdWdVlXNTBJR1JoYzJoaWIyRnlaQ0JsYldKbFpDQndiSFZuYVc0Z1ptOXlJRk4xY0dWeWMyVjBYRzRnS2lCMWMybHVaeUJoSUhCaGRHTm9MV0Z1WkMxaWRXbHNaQ0J6ZEhKaGRHVm5lUzRnVTJGdFpTQkJVRWtnWVhNZ1lFdHBZbUZ1WVVSaGMyaGliMkZ5WkVWdFltVmtVR3gxWjJsdVlDNWNiaUFxTDF4dVpYaHdiM0owSUdOc1lYTnpJRk4xY0dWeWMyVjBSR0Z6YUdKdllYSmtSVzFpWldSUWJIVm5hVzRnYVcxd2JHVnRaVzUwY3lCRVlYTm9ZbTloY21SRmJXSmxaRkJzZFdkcGJpQjdYRzRnSUhCMVlteHBZeUJ5WldGa2IyNXNlU0JrWlhOamNtbHdkRzl5T2lCRVlYTm9ZbTloY21SRmJXSmxaRkJzZFdkcGJrUmxjMk55YVhCMGIzSTdYRzVjYmlBZ2NIVmliR2xqSUdOdmJuTjBjblZqZEc5eUtIUmhjbWRsZEZabGNuTnBiMjQ2SUhOMGNtbHVaeUE5SUZ3aWMzVndaWEp6WlhSY0lpa2dlMXh1SUNBZ0lIUm9hWE11WkdWelkzSnBjSFJ2Y2lBOUlIdGNiaUFnSUNBZ0lHbGtPaUJUVlZCRlVsTkZWRjlRVEZWSFNVNWZTVVFzWEc0Z0lDQWdJQ0JoY0hCSlpEb2dVMVZRUlZKVFJWUmZRVkJRWDBsRUxGeHVJQ0FnSUNBZ2RtVnljMmx2YmpvZ1UxVlFSVkpUUlZSZlVFeFZSMGxPWDFaRlVsTkpUMDRzWEc0Z0lDQWdJQ0IwWVhKblpYUldaWEp6YVc5dUxGeHVJQ0FnSUNBZ2RHOXZiRG9nWENKemRYQmxjbk5sZEZ3aUxGeHVJQ0FnSUgwN1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ2JXRnVhV1psYzNRb2RHRnlaMlYwVm1WeWMybHZiam9nYzNSeWFXNW5JRDBnZEdocGN5NWtaWE5qY21sd2RHOXlMblJoY21kbGRGWmxjbk5wYjI0cE9pQlNaV052Y21ROGMzUnlhVzVuTENCMWJtdHViM2R1UGlCN1hHNGdJQ0FnY21WMGRYSnVJR0oxYVd4a1UzVndaWEp6WlhSTllXNXBabVZ6ZENoMFlYSm5aWFJXWlhKemFXOXVLU0JoY3lCMWJtdHViM2R1SUdGeklGSmxZMjl5WkR4emRISnBibWNzSUhWdWEyNXZkMjQrTzF4dUlDQjlYRzVjYmlBZ2NIVmliR2xqSUdKMWFXeGtSVzFpWldSVmNtd29iM0IwYVc5dWN6b2dSVzFpWldSVmNteFBjSFJwYjI1ektUb2djM1J5YVc1bklIdGNiaUFnSUNCeVpYUjFjbTRnWW5WcGJHUlRkWEJsY25ObGRFVnRZbVZrVlhKc0tHOXdkR2x2Ym5NcE8xeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklHTnlaV0YwWlZOM2FYUmphRVJoYzJoaWIyRnlaRTFsYzNOaFoyVW9YRzRnSUNBZ2NHRjViRzloWkRvZ1UzZHBkR05vUkdGemFHSnZZWEprVUdGNWJHOWhaRnh1SUNBcE9pQlRkMmwwWTJoRVlYTm9ZbTloY21STlpYTnpZV2RsSUh0Y2JpQWdJQ0J5WlhSMWNtNGdZM0psWVhSbFUzZHBkR05vUkdGemFHSnZZWEprVFdWemMyRm5aU2h3WVhsc2IyRmtLVHRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJ6Wlc1a1UzZHBkR05vUkdGemFHSnZZWEprVFdWemMyRm5aU2hjYmlBZ0lDQjBZWEpuWlhRNklFVnRZbVZrVFdWemMyRm5aVlJoY21kbGRDeGNiaUFnSUNCd1lYbHNiMkZrT2lCVGQybDBZMmhFWVhOb1ltOWhjbVJRWVhsc2IyRmtMRnh1SUNBZ0lIUmhjbWRsZEU5eWFXZHBiam9nYzNSeWFXNW5YRzRnSUNrNklIWnZhV1FnZTF4dUlDQWdJSE5sYm1SVGFHRnlaV1FvZEdGeVoyVjBMQ0J3WVhsc2IyRmtMQ0IwWVhKblpYUlBjbWxuYVc0cE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRTFoZEdWeWFXRnNhWHBsSUhSb1pTQndZWFJqYUNCaGJtUWdZblZwYkdRZ2MyTnlhWEIwY3lCcGJuUnZJR0IwWVhKblpYUlFZWFJvTDJBc0lHRnVaQ0IzYUdWdVhHNGdJQ0FxSUdCaWRXbHNaR0FnYVhNZ2RISjFaU3dnWTJ4dmJtVXZkWE5sSUZOMWNHVnljMlYwSUhOdmRYSmpaU3dnWVhCd2JIa2djR0YwWTJobGN5d2dZVzVrSUdKMWFXeGtYRzRnSUNBcUlDaFRSRXNnS3lCbWNtOXVkR1Z1WkNBcklHOXdkR2x2Ym1Gc2JIa2dSRzlqYTJWeUlHbHRZV2RsS1M1Y2JpQWdJQ3BjYmlBZ0lDb2dWVzVzYVd0bElFdHBZbUZ1WVNBb2QyaHBZMmdnWjJWdVpYSmhkR1Z6SUhCc2RXZHBiaUJ6YjNWeVkyVXBMQ0JUZFhCbGNuTmxkQ2R6SUZ3aWNHeDFaMmx1WENJZ2FYTWdZVnh1SUNBZ0tpQndZWFJqYUMxaGJtUXRZblZwYkdRZ2MzUnlZWFJsWjNrNklFUmxZMkZtSUdodmJHUnpJSE5qY21sd2RITWdkR2hoZENCdGIyUnBabmtnVTNWd1pYSnpaWFFuYzF4dUlDQWdLaUJsZUdsemRHbHVaeUJwYm5SbGNtNWhiQ0J6YjNWeVkyVWdabWxzWlhNdVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ1lYTjVibU1nYVc1emRHRnNiQ2hjYmlBZ0lDQnZjSFJwYjI1ek9pQlRkWEJsY25ObGRFbHVjM1JoYkd4UGNIUnBiMjV6WEc0Z0lDazZJRkJ5YjIxcGMyVThVR3gxWjJsdVNXNXpkR0ZzYkZKbGMzVnNkRDRnZTF4dUlDQWdJR052Ym5OMElHTjBlQ0E5SUc5d2RHbHZibk11WTI5dWRHVjRkQ0JoY3lCTllYbGlaVU52Ym5SbGVIUjFZV3hCY21jOFlXNTVQaUI4SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0JwWmlBb1kzUjRLU0I3WEc0Z0lDQWdJQ0IyYjJsa0lHTjBlRHRjYmlBZ0lDQjlYRzRnSUNBZ2FXWWdLQ0Z2Y0hScGIyNXpMblJoY21kbGRGQmhkR2dnZkh3Z2IzQjBhVzl1Y3k1MFlYSm5aWFJRWVhSb0xuUnlhVzBvS1M1c1pXNW5kR2dnUFQwOUlEQXBJSHRjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJWYm5OMWNIQnZjblJsWkVWeWNtOXlLRndpYVc1emRHRnNiQ0IwWVhKblpYUlFZWFJvSUdseklISmxjWFZwY21Wa1hDSXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHTnZibk4wSUhSaGNtZGxkRlpsY25OcGIyNGdQU0J2Y0hScGIyNXpMblJoY21kbGRGWmxjbk5wYjI0Z1B6OGdkR2hwY3k1a1pYTmpjbWx3ZEc5eUxuUmhjbWRsZEZabGNuTnBiMjQ3WEc0Z0lDQWdZMjl1YzNRZ2NHeDFaMmx1UkdseUlEMGdjR0YwYUM1eVpYTnZiSFpsS0Z4dUlDQWdJQ0FnYjNCMGFXOXVjeTUwWVhKblpYUlFZWFJvTEZ4dUlDQWdJQ0FnVTFWUVJWSlRSVlJmUVZCUVgwbEVYRzRnSUNBZ0tUdGNibHh1SUNBZ0lHbG1JQ2htY3k1bGVHbHpkSE5UZVc1aktIQnNkV2RwYmtScGNpa3BJSHRjYmlBZ0lDQWdJR2xtSUNnaGIzQjBhVzl1Y3k1dmRtVnlkM0pwZEdVcElIdGNiaUFnSUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRWx1ZEdWeWJtRnNSWEp5YjNJb1hHNGdJQ0FnSUNBZ0lDQWdZRkJzZFdkcGJpQmthWEpsWTNSdmNua2dZV3h5WldGa2VTQmxlR2x6ZEhNNklDUjdjR3gxWjJsdVJHbHlmU0FvZFhObElHOTJaWEozY21sMFpUb2dkSEoxWlNsZ1hHNGdJQ0FnSUNBZ0lDazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQm1jeTV5YlZONWJtTW9jR3gxWjJsdVJHbHlMQ0I3SUhKbFkzVnljMmwyWlRvZ2RISjFaU3dnWm05eVkyVTZJSFJ5ZFdVZ2ZTazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1kyOXVjM1FnWm1sc1pYTWdQU0J6ZFhCbGNuTmxkRkJoZEdOb1JtbHNaWE1vS1R0Y2JpQWdJQ0JqYjI1emRDQjNjbWwwZEdWdU9pQnpkSEpwYm1kYlhTQTlJRnRkTzF4dUlDQWdJR1p2Y2lBb1kyOXVjM1FnWm1sc1pTQnZaaUJtYVd4bGN5a2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ1puVnNiRkJoZEdnZ1BTQndZWFJvTG1wdmFXNG9jR3gxWjJsdVJHbHlMQ0JtYVd4bExuQmhkR2dwTzF4dUlDQWdJQ0FnWm5NdWJXdGthWEpUZVc1aktIQmhkR2d1WkdseWJtRnRaU2htZFd4c1VHRjBhQ2tzSUhzZ2NtVmpkWEp6YVhabE9pQjBjblZsSUgwcE8xeHVJQ0FnSUNBZ1puTXVkM0pwZEdWR2FXeGxVM2x1WXlobWRXeHNVR0YwYUN3Z1ptbHNaUzVqYjI1MFpXNTBMQ0JjSW5WMFpqaGNJaWs3WEc0Z0lDQWdJQ0JwWmlBb1ptbHNaUzVsZUdWamRYUmhZbXhsS1NCN1hHNGdJQ0FnSUNBZ0lHWnpMbU5vYlc5a1UzbHVZeWhtZFd4c1VHRjBhQ3dnTUc4M05UVXBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdkM0pwZEhSbGJpNXdkWE5vS0dacGJHVXVjR0YwYUNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYkdWMElHSjFhV3gwSUQwZ1ptRnNjMlU3WEc0Z0lDQWdiR1YwSUdKMWFXeGtUM1YwY0hWME9pQnpkSEpwYm1jZ2ZDQjFibVJsWm1sdVpXUTdYRzVjYmlBZ0lDQnBaaUFvYjNCMGFXOXVjeTVpZFdsc1pDa2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ2MzVndaWEp6WlhSU2IyOTBJRDBnWVhkaGFYUWdkR2hwY3k1eVpYTnZiSFpsVTNWd1pYSnpaWFJTYjI5MEtIQnNkV2RwYmtScGNpd2diM0IwYVc5dWN5azdYRzRnSUNBZ0lDQmpiMjV6ZENCeVpYTjFiSFFnUFNCaGQyRnBkQ0IwYUdsekxuSjFibEJoZEdOb1FXNWtRblZwYkdRb1hHNGdJQ0FnSUNBZ0lIQnNkV2RwYmtScGNpeGNiaUFnSUNBZ0lDQWdjM1Z3WlhKelpYUlNiMjkwTEZ4dUlDQWdJQ0FnSUNCdmNIUnBiMjV6WEc0Z0lDQWdJQ0FwTG1OaGRHTm9LQ2hsY25JNklFVnljbTl5S1NBOVBpQW9lMXh1SUNBZ0lDQWdJQ0J2YXpvZ1ptRnNjMlVnWVhNZ1kyOXVjM1FzWEc0Z0lDQWdJQ0FnSUc5MWRIQjFkRG9nWlhKeUxtMWxjM05oWjJVc1hHNGdJQ0FnSUNCOUtTazdYRzRnSUNBZ0lDQmlkV2xzZENBOUlISmxjM1ZzZEM1dmF6dGNiaUFnSUNBZ0lHSjFhV3hrVDNWMGNIVjBJRDBnY21WemRXeDBMbTkxZEhCMWREdGNiaUFnSUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnZTF4dUlDQWdJQ0FnY0d4MVoybHVVR0YwYURvZ2NHeDFaMmx1UkdseUxGeHVJQ0FnSUNBZ1pHVnpZM0pwY0hSdmNqb2dleUF1TGk1MGFHbHpMbVJsYzJOeWFYQjBiM0lzSUhSaGNtZGxkRlpsY25OcGIyNGdmU3hjYmlBZ0lDQWdJR1pwYkdWek9pQjNjbWwwZEdWdUxGeHVJQ0FnSUNBZ1luVnBiSFFzWEc0Z0lDQWdJQ0JpZFdsc1pFOTFkSEIxZEN4Y2JpQWdJQ0I5TzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSmxjMjlzZG1VZ2RHaGxJRk4xY0dWeWMyVjBJSE52ZFhKalpTQnliMjkwT2lCMWMyVWdZVzRnWlhocGMzUnBibWNnWTJobFkydHZkWFFnYjNJZ1kyeHZibVVnZG1saElHZHBkQzVjYmlBZ0lDb3ZYRzRnSUhCeWIzUmxZM1JsWkNCaGMzbHVZeUJ5WlhOdmJIWmxVM1Z3WlhKelpYUlNiMjkwS0Z4dUlDQWdJSEJzZFdkcGJrUnBjam9nYzNSeWFXNW5MRnh1SUNBZ0lHOXdkR2x2Ym5NNklGTjFjR1Z5YzJWMFNXNXpkR0ZzYkU5d2RHbHZibk5jYmlBZ0tUb2dVSEp2YldselpUeHpkSEpwYm1jK0lIdGNiaUFnSUNCcFppQW9iM0IwYVc5dWN5NXpkWEJsY25ObGRGTnZkWEpqWlZCaGRHZ3BJSHRjYmlBZ0lDQWdJR052Ym5OMElISmxjMjlzZG1Wa0lEMGdjR0YwYUM1eVpYTnZiSFpsS0c5d2RHbHZibk11YzNWd1pYSnpaWFJUYjNWeVkyVlFZWFJvS1R0Y2JpQWdJQ0FnSUdsbUlDZ2habk11WlhocGMzUnpVM2x1WXlod1lYUm9MbXB2YVc0b2NtVnpiMngyWldRc0lGd2ljM1Z3WlhKelpYUXRabkp2Ym5SbGJtUmNJaXdnWENKemNtTmNJaXdnWENKbGJXSmxaR1JsWkZ3aUxDQmNJbWx1WkdWNExuUnplRndpS1NrcElIdGNiaUFnSUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRWx1ZEdWeWJtRnNSWEp5YjNJb1hHNGdJQ0FnSUNBZ0lDQWdZRk4xY0dWeWMyVjBJSE52ZFhKalpTQnViM1FnWm05MWJtUWdZWFE2SUNSN2NtVnpiMngyWldSOUlDaHRhWE56YVc1bklITjFjR1Z5YzJWMExXWnliMjUwWlc1a0wzTnlZeTlsYldKbFpHUmxaQzlwYm1SbGVDNTBjM2dwWUZ4dUlDQWdJQ0FnSUNBcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2NtVjBkWEp1SUhKbGMyOXNkbVZrTzF4dUlDQWdJSDFjYmx4dUlDQWdJR052Ym5OMElHZHBkRlZ5YkNBOUlHOXdkR2x2Ym5NdWMzVndaWEp6WlhSSGFYUlZjbXdnUHo4Z1hDSm9kSFJ3Y3pvdkwyZHBkR2gxWWk1amIyMHZZWEJoWTJobEwzTjFjR1Z5YzJWMExtZHBkRndpTzF4dUlDQWdJR052Ym5OMElHZHBkRkpsWmlBOUlHOXdkR2x2Ym5NdWMzVndaWEp6WlhSSGFYUlNaV1lnUHo4Z2IzQjBhVzl1Y3k1MFlYSm5aWFJXWlhKemFXOXVJRDgvSUZ3aU5pNHhMakJjSWp0Y2JpQWdJQ0JqYjI1emRDQmpiRzl1WlVScGNpQTlJSEJoZEdndWFtOXBiaWh3YkhWbmFXNUVhWElzSUZ3aUxuTjFjR1Z5YzJWMExYTnZkWEpqWlZ3aUtUdGNibHh1SUNBZ0lHbG1JQ2htY3k1bGVHbHpkSE5UZVc1aktHTnNiMjVsUkdseUtTa2dlMXh1SUNBZ0lDQWdabk11Y20xVGVXNWpLR05zYjI1bFJHbHlMQ0I3SUhKbFkzVnljMmwyWlRvZ2RISjFaU3dnWm05eVkyVTZJSFJ5ZFdVZ2ZTazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1lYZGhhWFFnZEdocGN5NXlkVzVEYjIxdFlXNWtLRndpWjJsMFhDSXNJRnRjSW1Oc2IyNWxYQ0lzSUZ3aUxTMWtaWEIwYUZ3aUxDQmNJakZjSWl3Z1hDSXRMV0p5WVc1amFGd2lMQ0JuYVhSU1pXWXNJR2RwZEZWeWJDd2dZMnh2Ym1WRWFYSmRMQ0J3YkhWbmFXNUVhWElwTzF4dUlDQWdJSEpsZEhWeWJpQmpiRzl1WlVScGNqdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJCY0hCc2VTQndZWFJqYUdWekxDQjJaWEpwWm5rc0lHRnVaQ0JpZFdsc1pDQW9VMFJMSUNzZ1puSnZiblJsYm1RZ0t5QnZjSFJwYjI1aGJHeDVJRVJ2WTJ0bGNpa3VYRzRnSUNBcUwxeHVJQ0J3Y205MFpXTjBaV1FnWVhONWJtTWdjblZ1VUdGMFkyaEJibVJDZFdsc1pDaGNiaUFnSUNCd2JIVm5hVzVFYVhJNklITjBjbWx1Wnl4Y2JpQWdJQ0J6ZFhCbGNuTmxkRkp2YjNRNklITjBjbWx1Wnl4Y2JpQWdJQ0J2Y0hScGIyNXpPaUJUZFhCbGNuTmxkRWx1YzNSaGJHeFBjSFJwYjI1elhHNGdJQ2s2SUZCeWIyMXBjMlU4ZXlCdmF6b2dZbTl2YkdWaGJqc2diM1YwY0hWME9pQnpkSEpwYm1jZ2ZUNGdlMXh1SUNBZ0lHTnZibk4wSUc5MWRIQjFkSE02SUhOMGNtbHVaMXRkSUQwZ1cxMDdYRzVjYmlBZ0lDQXZMeUF4TGlCQmNIQnNlU0J3WVhSamFGeHVJQ0FnSUdOdmJuTjBJSEJoZEdOb1VtVnpkV3gwSUQwZ1lYZGhhWFFnZEdocGN5NXlkVzVEYjIxdFlXNWtLRnh1SUNBZ0lDQWdYQ0p3ZVhSb2IyNHpYQ0lzWEc0Z0lDQWdJQ0JiY0dGMGFDNXFiMmx1S0hCc2RXZHBia1JwY2l3Z1hDSndZWFJqYUdWelhDSXNJRndpWVhCd2JIbGZjM1Z3WlhKelpYUmZObDh4WDNCaGRHTm9MbkI1WENJcExDQnpkWEJsY25ObGRGSnZiM1JkTEZ4dUlDQWdJQ0FnY0d4MVoybHVSR2x5WEc0Z0lDQWdLVHRjYmlBZ0lDQnZkWFJ3ZFhSekxuQjFjMmdvY0dGMFkyaFNaWE4xYkhRcE8xeHVYRzRnSUNBZ0x5OGdNaTRnVm1WeWFXWjVJSEJoZEdOb1hHNGdJQ0FnWTI5dWMzUWdkbVZ5YVdaNVVtVnpkV3gwSUQwZ1lYZGhhWFFnZEdocGN5NXlkVzVEYjIxdFlXNWtLRnh1SUNBZ0lDQWdjR0YwYUM1cWIybHVLSEJzZFdkcGJrUnBjaXdnWENKd1lYUmphR1Z6WENJc0lGd2lkbVZ5YVdaNVgzQmhkR05vTG5Ob1hDSXBMRnh1SUNBZ0lDQWdXM04xY0dWeWMyVjBVbTl2ZEYwc1hHNGdJQ0FnSUNCd2JIVm5hVzVFYVhKY2JpQWdJQ0FwTzF4dUlDQWdJRzkxZEhCMWRITXVjSFZ6YUNoMlpYSnBabmxTWlhOMWJIUXBPMXh1WEc0Z0lDQWdMeThnTXk0Z1FuVnBiR1FnS0VSdlkydGxjaUJwYldGblpTQnZjaUJUUkVzZ0t5Qm1jbTl1ZEdWdVpDbGNiaUFnSUNCcFppQW9iM0IwYVc5dWN5NWtiMk5yWlhKSmJXRm5aVlJoWnlrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnWkc5amEyVnlVbVZ6ZFd4MElEMGdZWGRoYVhRZ2RHaHBjeTV5ZFc1RGIyMXRZVzVrS0Z4dUlDQWdJQ0FnSUNCd1lYUm9MbXB2YVc0b2NHeDFaMmx1UkdseUxDQmNJbUoxYVd4a1hDSXNJRndpWW5WcGJHUXRaRzlqYTJWeUxXbHRZV2RsTG5Ob1hDSXBMRnh1SUNBZ0lDQWdJQ0JiYzNWd1pYSnpaWFJTYjI5MExDQnZjSFJwYjI1ekxtUnZZMnRsY2tsdFlXZGxWR0ZuWFN4Y2JpQWdJQ0FnSUNBZ2NHeDFaMmx1UkdseVhHNGdJQ0FnSUNBcE8xeHVJQ0FnSUNBZ2IzVjBjSFYwY3k1d2RYTm9LR1J2WTJ0bGNsSmxjM1ZzZENrN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJR052Ym5OMElITmthMUpsYzNWc2RDQTlJR0YzWVdsMElIUm9hWE11Y25WdVEyOXRiV0Z1WkNoY2JpQWdJQ0FnSUNBZ2NHRjBhQzVxYjJsdUtIQnNkV2RwYmtScGNpd2dYQ0ppZFdsc1pGd2lMQ0JjSW1KMWFXeGtMWE5rYXk1emFGd2lLU3hjYmlBZ0lDQWdJQ0FnVzNOMWNHVnljMlYwVW05dmRGMHNYRzRnSUNBZ0lDQWdJSEJzZFdkcGJrUnBjbHh1SUNBZ0lDQWdLVHRjYmlBZ0lDQWdJRzkxZEhCMWRITXVjSFZ6YUNoelpHdFNaWE4xYkhRcE8xeHVYRzRnSUNBZ0lDQmpiMjV6ZENCbWNtOXVkR1Z1WkZKbGMzVnNkQ0E5SUdGM1lXbDBJSFJvYVhNdWNuVnVRMjl0YldGdVpDaGNiaUFnSUNBZ0lDQWdjR0YwYUM1cWIybHVLSEJzZFdkcGJrUnBjaXdnWENKaWRXbHNaRndpTENCY0ltSjFhV3hrTFhOMWNHVnljMlYwTFdaeWIyNTBaVzVrTG5Ob1hDSXBMRnh1SUNBZ0lDQWdJQ0JiYzNWd1pYSnpaWFJTYjI5MFhTeGNiaUFnSUNBZ0lDQWdjR3gxWjJsdVJHbHlYRzRnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdiM1YwY0hWMGN5NXdkWE5vS0daeWIyNTBaVzVrVW1WemRXeDBLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z2V5QnZhem9nZEhKMVpTd2diM1YwY0hWME9pQnZkWFJ3ZFhSekxtcHZhVzRvWENKY1hHNWNJaWtnZlR0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNkVzRnWVNCamIyMXRZVzVrSUdGdVpDQmpZWEIwZFhKbElITjBaRzkxZEN0emRHUmxjbkl1WEc0Z0lDQXFMMXh1SUNCd2NtOTBaV04wWldRZ2NuVnVRMjl0YldGdVpDaGNiaUFnSUNCamJXUTZJSE4wY21sdVp5eGNiaUFnSUNCaGNtZHpPaUJ6ZEhKcGJtZGJYU3hjYmlBZ0lDQmpkMlE2SUhOMGNtbHVaMXh1SUNBcE9pQlFjbTl0YVhObFBITjBjbWx1Wno0Z2UxeHVJQ0FnSUhKbGRIVnliaUJ1WlhjZ1VISnZiV2x6WlNnb2NtVnpiMngyWlN3Z2NtVnFaV04wS1NBOVBpQjdYRzRnSUNBZ0lDQmxlR1ZqUm1sc1pTaGNiaUFnSUNBZ0lDQWdZMjFrTEZ4dUlDQWdJQ0FnSUNCaGNtZHpMRnh1SUNBZ0lDQWdJQ0I3SUdOM1pDd2dkR2x0Wlc5MWREb2dOakF3TURBd0lIMHNYRzRnSUNBZ0lDQWdJQ2hsY25KdmNpd2djM1JrYjNWMExDQnpkR1JsY25JcElEMCtJSHRjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J2ZFhSd2RYUWdQU0JnSkh0emRHUnZkWFFnUHo4Z1hDSmNJbjBrZTNOMFpHVnljaUEvUHlCY0lsd2lmV0F1ZEhKcGJTZ3BPMXh1SUNBZ0lDQWdJQ0FnSUdsbUlDaGxjbkp2Y2lrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WcVpXTjBLRzVsZHlCRmNuSnZjaWh2ZFhSd2RYUWdmSHdnWlhKeWIzSXViV1Z6YzJGblpTa3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1TzF4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0J5WlhOdmJIWmxLRzkxZEhCMWRDazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ2s3WEc0Z0lDQWdmU2s3WEc0Z0lIMWNibjFjYmx4dUx5b3FJRVJsWm1GMWJIUWdjMmx1WjJ4bGRHOXVJR2x1YzNSaGJtTmxMaUFxTDF4dVpYaHdiM0owSUdOdmJuTjBJSE4xY0dWeWMyVjBSR0Z6YUdKdllYSmtSVzFpWldSUWJIVm5hVzRnUFNCdVpYY2dVM1Z3WlhKelpYUkVZWE5vWW05aGNtUkZiV0psWkZCc2RXZHBiaWdwTzF4dVhHNHZLaW9nUm1GamRHOXllU0JoWTJObGNIUnBibWNnWVNCMFlYSm5aWFFnVTNWd1pYSnpaWFFnZG1WeWMybHZiaTRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCamNtVmhkR1ZUZFhCbGNuTmxkRVJoYzJoaWIyRnlaRVZ0WW1Wa1VHeDFaMmx1S0Z4dUlDQjBZWEpuWlhSV1pYSnphVzl1T2lCemRISnBibWRjYmlrNklGTjFjR1Z5YzJWMFJHRnphR0p2WVhKa1JXMWlaV1JRYkhWbmFXNGdlMXh1SUNCeVpYUjFjbTRnYm1WM0lGTjFjR1Z5YzJWMFJHRnphR0p2WVhKa1JXMWlaV1JRYkhWbmFXNG9kR0Z5WjJWMFZtVnljMmx2YmlrN1hHNTlYRzRpWFgwPSJdfQ==
|
|
231
|
+
//# sourceMappingURL=installer.js.map
|
|
232
|
+
//# sourceMappingURL=installer.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins/superset/installer.cjs","sourceRoot":"","sources":["plugins/superset/installer.js"],"names":[],"mappings":"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"}
|
|
@@ -31,5 +31,5 @@ function buildSupersetManifest(targetVersion = "superset") {
|
|
|
31
31
|
optionalPlugins: [],
|
|
32
32
|
};
|
|
33
33
|
}
|
|
34
|
-
//# sourceMappingURL=
|
|
35
|
-
//# sourceMappingURL=
|
|
34
|
+
//# sourceMappingURL=manifest.js.map
|
|
35
|
+
//# sourceMappingURL=manifest.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins/superset/manifest.cjs","sourceRoot":"","sources":["plugins/superset/manifest.js"],"names":[],"mappings":";;;AAcA,sDAaC;AA3BD;;;;;;GAMG;AACH,kDAAsD;AAqB7C,mGArBA,gCAAkB,OAqBA;AApBd,QAAA,kBAAkB,GAAG,2BAA2B,CAAC;AACjD,QAAA,eAAe,GAAG,8BAA8B,CAAC;AACjD,QAAA,uBAAuB,GAAG,OAAO,CAAC;AAC/C;;GAEG;AACH,SAAgB,qBAAqB,CAAC,aAAa,GAAG,UAAU;IAC5D,OAAO;QACH,EAAE,EAAE,0BAAkB;QACtB,OAAO,EAAE,+BAAuB;QAChC,aAAa;QACb,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,IAAI;QACZ,EAAE,EAAE,IAAI;QACR,aAAa,EAAE,QAAQ;QACvB,MAAM,EAAE,MAAM;QACd,eAAe,EAAE,EAAE;QACnB,eAAe,EAAE,EAAE;KACtB,CAAC;AACN,CAAC;AAED,oCAAoC"}
|
|
@@ -834,5 +834,5 @@ function supersetPatchFiles() {
|
|
|
834
834
|
{ path: "README.md", content: README },
|
|
835
835
|
];
|
|
836
836
|
}
|
|
837
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BsdWdpbnMvc3VwZXJzZXQvdGVtcGxhdGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsdUJBQXVCLEVBQUUsc0JBQW1CO0FBV3pFLE1BQU0sY0FBYyxHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQWdtQnRCLENBQUM7QUFFRixNQUFNLGVBQWUsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0F5Q3ZCLENBQUM7QUFFRixNQUFNLFlBQVksR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBMkJwQixDQUFDO0FBRUYsTUFBTSxpQkFBaUIsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FvQnpCLENBQUM7QUFFRixNQUFNLGtCQUFrQixHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBK0IxQixDQUFDO0FBRUYsTUFBTSxlQUFlLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBZ0N2QixDQUFDO0FBRUYsTUFBTSxNQUFNLEdBQUcsS0FBSyxrQkFBa0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7V0FxQzNCLHVCQUF1QjtDQUNqQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCO0lBQ2hDLE9BQU87UUFDTCxFQUFFLElBQUksRUFBRSxxQ0FBcUMsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7UUFDMUYsRUFBRSxJQUFJLEVBQUUseUJBQXlCLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFO1FBQy9FLEVBQUUsSUFBSSxFQUFFLG9CQUFvQixFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTtRQUN2RSxFQUFFLElBQUksRUFBRSxrQ0FBa0MsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTtRQUMxRixFQUFFLElBQUksRUFBRSwwQkFBMEIsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTtRQUNuRixFQUFFLElBQUksRUFBRSw2QkFBNkIsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7UUFDbkYsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7S0FDdkMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL3BsdWdpbnMvc3VwZXJzZXQvdGVtcGxhdGVzXG4gKiBAc3VtbWFyeSBQYXRjaCBhbmQgYnVpbGQgc2NyaXB0IHRlbXBsYXRlcyBmb3IgdGhlIFN1cGVyc2V0IGVtYmVkIHBsdWdpbi5cbiAqIEBkZXNjcmlwdGlvbiBIb2xkcyBhbGwgcGF0Y2ggc2NyaXB0cyAoUHl0aG9uICsgQmFzaCkgYW5kIGJ1aWxkIHNjcmlwdHMgYXNcbiAqIHN0cmluZyB0ZW1wbGF0ZXMuIFRoZXNlIGFyZSBtYXRlcmlhbGl6ZWQgb250byBkaXNrIGJ5IHRoZSBpbnN0YWxsZXIuIERlY2FmXG4gKiBkb2VzIG5vdCBnZW5lcmF0ZSBuZXcgU3VwZXJzZXQgc291cmNlIOKAlCBpdCBwYXRjaGVzIGV4aXN0aW5nIGludGVybmFsIGZpbGVzXG4gKiAoYHN1cGVyc2V0LWZyb250ZW5kL3NyYy9lbWJlZGRlZC9pbmRleC50c3hgIGFuZFxuICogYHN1cGVyc2V0LWVtYmVkZGVkLXNkay9zcmMvaW5kZXgudHNgKSBmb2xsb3dpbmcgdGhlIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvblxuICogZnJvbSBERUNBRi00MCDCpzkuXG4gKlxuICogVGhlIHBhdGNoIGFkZHMgYSBgc3dpdGNoRGFzaGJvYXJkYCBtZXRob2QgdG8gU3VwZXJzZXQncyBleGlzdGluZyBTd2l0Y2hib2FyZFxuICogY2hhbm5lbCwgcmVwbGFjaW5nIG9ubHkgYERhc2hib2FyZFBhZ2VgIHdoaWxlIGtlZXBpbmcgdGhlIGlmcmFtZSBlbGVtZW50LFxuICogZG9jdW1lbnQsIGNvbnRlbnRXaW5kb3csIFJlYWN0IHJ1bnRpbWUsIGFuZCBtZXNzYWdlIGNoYW5uZWwgYWxpdmUuXG4gKi9cbmltcG9ydCB7IFNVUEVSU0VUX1BMVUdJTl9JRCwgU1VQRVJTRVRfUExVR0lOX1ZFUlNJT04gfSBmcm9tIFwiLi9tYW5pZmVzdFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN1cGVyc2V0UGF0Y2hGaWxlIHtcbiAgLyoqIFJlbGF0aXZlIHBhdGggd2l0aGluIHRoZSB0YXJnZXQgZGlyZWN0b3J5LiAqL1xuICBwYXRoOiBzdHJpbmc7XG4gIC8qKiBGaWxlIGNvbnRlbnRzLiAqL1xuICBjb250ZW50OiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHRvIG1hcmsgdGhlIGZpbGUgZXhlY3V0YWJsZSBvbiBQT1NJWC4gKi9cbiAgZXhlY3V0YWJsZT86IGJvb2xlYW47XG59XG5cbmNvbnN0IEFQUExZX1BBVENIX1BZID0gYCMhL3Vzci9iaW4vZW52IHB5dGhvbjNcblxuZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhbm5vdGF0aW9uc1xuXG5pbXBvcnQgYXJncGFyc2VcbmltcG9ydCByZVxuaW1wb3J0IHN5c1xuZnJvbSBwYXRobGliIGltcG9ydCBQYXRoXG5cblxuRlJPTlRFTkRfRklMRSA9IFBhdGgoXCJzdXBlcnNldC1mcm9udGVuZC9zcmMvZW1iZWRkZWQvaW5kZXgudHN4XCIpXG5TREtfRklMRSA9IFBhdGgoXCJzdXBlcnNldC1lbWJlZGRlZC1zZGsvc3JjL2luZGV4LnRzXCIpXG5cblxuY2xhc3MgUGF0Y2hFcnJvcihSdW50aW1lRXJyb3IpOlxuICAgIHBhc3NcblxuXG5kZWYgcmVwbGFjZV9vbmNlKFxuICAgIGNvbnRlbnQ6IHN0cixcbiAgICBvbGQ6IHN0cixcbiAgICBuZXc6IHN0cixcbiAgICBkZXNjcmlwdGlvbjogc3RyLFxuKSAtPiBzdHI6XG4gICAgY291bnQgPSBjb250ZW50LmNvdW50KG9sZClcblxuICAgIGlmIGNvdW50ICE9IDE6XG4gICAgICAgIHJhaXNlIFBhdGNoRXJyb3IoXG4gICAgICAgICAgICBmXCJ7ZGVzY3JpcHRpb259OiBleHBlY3RlZCBleGFjdGx5IG9uZSBvY2N1cnJlbmNlLCBmb3VuZCB7Y291bnR9XCJcbiAgICAgICAgKVxuXG4gICAgcmV0dXJuIGNvbnRlbnQucmVwbGFjZShvbGQsIG5ldywgMSlcblxuXG5kZWYgcmVwbGFjZV9yZWdleF9vbmNlKFxuICAgIGNvbnRlbnQ6IHN0cixcbiAgICBwYXR0ZXJuOiByZS5QYXR0ZXJuW3N0cl0sXG4gICAgcmVwbGFjZW1lbnQ6IHN0cixcbiAgICBkZXNjcmlwdGlvbjogc3RyLFxuKSAtPiBzdHI6XG4gICAgdXBkYXRlZCwgY291bnQgPSBwYXR0ZXJuLnN1Ym4ocmVwbGFjZW1lbnQsIGNvbnRlbnQsIGNvdW50PTEpXG5cbiAgICBpZiBjb3VudCAhPSAxOlxuICAgICAgICByYWlzZSBQYXRjaEVycm9yKFxuICAgICAgICAgICAgZlwie2Rlc2NyaXB0aW9ufTogZXhwZWN0ZWQgZXhhY3RseSBvbmUgbWF0Y2gsIGZvdW5kIHtjb3VudH1cIlxuICAgICAgICApXG5cbiAgICByZXR1cm4gdXBkYXRlZFxuXG5cbmRlZiBwYXRjaF9yZWFjdF9pbXBvcnQoY29udGVudDogc3RyKSAtPiBzdHI6XG4gICAgcmVhY3RfaW1wb3J0X3BhdHRlcm4gPSByZS5jb21waWxlKFxuICAgICAgICByXCJpbXBvcnRcXFxccypcXFxce1xcXFxzKihbXn1dKylcXFxccypcXFxcfVxcXFxzKmZyb21cXFxccyoncmVhY3QnO1wiXG4gICAgKVxuXG4gICAgbWF0Y2ggPSByZWFjdF9pbXBvcnRfcGF0dGVybi5zZWFyY2goY29udGVudClcblxuICAgIGlmIG5vdCBtYXRjaDpcbiAgICAgICAgcmFpc2UgUGF0Y2hFcnJvcihcIkNvdWxkIG5vdCBsb2NhdGUgdGhlIG5hbWVkIFJlYWN0IGltcG9ydFwiKVxuXG4gICAgaW1wb3J0cyA9IFtcbiAgICAgICAgdmFsdWUuc3RyaXAoKVxuICAgICAgICBmb3IgdmFsdWUgaW4gbWF0Y2guZ3JvdXAoMSkucmVwbGFjZShcIlxcXFxuXCIsIFwiIFwiKS5zcGxpdChcIixcIilcbiAgICAgICAgaWYgdmFsdWUuc3RyaXAoKVxuICAgIF1cblxuICAgIHJlcXVpcmVkX2ltcG9ydHMgPSBbXCJsYXp5XCIsIFwiU3VzcGVuc2VcIiwgXCJ1c2VFZmZlY3RcIiwgXCJ1c2VTdGF0ZVwiXVxuXG4gICAgZm9yIHJlcXVpcmVkX2ltcG9ydCBpbiByZXF1aXJlZF9pbXBvcnRzOlxuICAgICAgICBpZiByZXF1aXJlZF9pbXBvcnQgbm90IGluIGltcG9ydHM6XG4gICAgICAgICAgICBpbXBvcnRzLmFwcGVuZChyZXF1aXJlZF9pbXBvcnQpXG5cbiAgICByZXBsYWNlbWVudCA9IChcbiAgICAgICAgXCJpbXBvcnQge1xcXFxuICBcIlxuICAgICAgICArIFwiLFxcXFxuICBcIi5qb2luKGltcG9ydHMpXG4gICAgICAgICsgXCIsXFxcXG59IGZyb20gJ3JlYWN0JztcIlxuICAgIClcblxuICAgIHJldHVybiAoXG4gICAgICAgIGNvbnRlbnRbOiBtYXRjaC5zdGFydCgpXVxuICAgICAgICArIHJlcGxhY2VtZW50XG4gICAgICAgICsgY29udGVudFttYXRjaC5lbmQoKSA6XVxuICAgIClcblxuXG5kZWYgbG9jYXRlX2VtYmVkZGVkX2NvbXBvbmVudChcbiAgICBjb250ZW50OiBzdHIsXG4pIC0+IHR1cGxlW3JlLk1hdGNoW3N0cl0sIHN0cl06XG4gICAgcGF0dGVybiA9IHJlLmNvbXBpbGUoXG4gICAgICAgIHJcImNvbnN0XFxcXHMrKFtBLVphLXowLTlfXSspXFxcXHMqPVxcXFxzKlxcXFwoXFxcXClcXFxccyo9PlxcXFxzKlxcXFx7Lio/XFxcXH07XFxcXHMqXCJcbiAgICAgICAgclwiKD89Y29uc3RcXFxccytFbWJlZGRlZFJvdXRlKVwiLFxuICAgICAgICByZS5ET1RBTEwsXG4gICAgKVxuXG4gICAgbWF0Y2ggPSBwYXR0ZXJuLnNlYXJjaChjb250ZW50KVxuXG4gICAgaWYgbWF0Y2g6XG4gICAgICAgIHJldHVybiBtYXRjaCwgbWF0Y2guZ3JvdXAoMSlcblxuICAgIHJhaXNlIFBhdGNoRXJyb3IoXG4gICAgICAgIFwiQ291bGQgbm90IGZpbmQgYW4gZW1iZWRkZWQgZGFzaGJvYXJkIGNvbXBvbmVudCBiZWZvcmUgRW1iZWRkZWRSb3V0ZVwiXG4gICAgKVxuXG5cbmRlZiBwYXRjaF9mcm9udGVuZChmcm9udGVuZF9wYXRoOiBQYXRoKSAtPiBOb25lOlxuICAgIGNvbnRlbnQgPSBmcm9udGVuZF9wYXRoLnJlYWRfdGV4dChlbmNvZGluZz1cInV0Zi04XCIpXG5cbiAgICBpZiBcIlNVUEVSU0VUX1NXSVRDSEFCTEVfRU1CRURfUEFUQ0hcIiBpbiBjb250ZW50OlxuICAgICAgICBwcmludChmXCJBbHJlYWR5IHBhdGNoZWQ6IHtmcm9udGVuZF9wYXRofVwiKVxuICAgICAgICByZXR1cm5cblxuICAgIGNvbnRlbnQgPSBwYXRjaF9yZWFjdF9pbXBvcnQoY29udGVudClcblxuICAgIGNvbXBvbmVudF9tYXRjaCwgY29tcG9uZW50X25hbWUgPSBsb2NhdGVfZW1iZWRkZWRfY29tcG9uZW50KFxuICAgICAgICBjb250ZW50XG4gICAgKVxuXG4gICAgcmVwbGFjZW1lbnRfY29tcG9uZW50ID0gXCJcIlwiLy8gU1VQRVJTRVRfU1dJVENIQUJMRV9FTUJFRF9QQVRDSFxuLy9cbi8vIEFsbG93cyB0aGUgZXhpc3RpbmcgZW1iZWRkZWQgU3VwZXJzZXQgZG9jdW1lbnQgdG8gcmVwbGFjZSBEYXNoYm9hcmRQYWdlXG4vLyB3aXRob3V0IG5hdmlnYXRpbmcgb3IgcmVjcmVhdGluZyB0aGUgaWZyYW1lLlxuLy9cbi8vIFNlY3VyaXR5OlxuLy8gLSBUaGlzIG1ldGhvZCBpcyBleHBvc2VkIG9ubHkgdGhyb3VnaCBTdXBlcnNldCdzIGV4aXN0aW5nIFN3aXRjaGJvYXJkXG4vLyAgIE1lc3NhZ2VDaGFubmVsLlxuLy8gLSBUaGUgaG9zdCBhcHBsaWNhdGlvbiBtdXN0IG9idGFpbiBhIGd1ZXN0IHRva2VuIGZvciB0aGUgdGFyZ2V0IGRhc2hib2FyZC5cbi8vIC0gU3VwZXJzZXQncyBub3JtYWwgQWxsb3dlZCBEb21haW5zIHZhbGlkYXRpb24gcmVtYWlucyBpbiBlZmZlY3QuXG5cbmludGVyZmFjZSBTd2l0Y2hEYXNoYm9hcmRQYXlsb2FkIHtcbiAgZGFzaGJvYXJkSWQ6IHN0cmluZztcbiAgZ3Vlc3RUb2tlbjogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgU3dpdGNoRGFzaGJvYXJkUmVzdWx0IHtcbiAgZGFzaGJvYXJkSWQ6IHN0cmluZztcbiAgYWNjZXB0ZWQ6IHRydWU7XG59XG5cbnR5cGUgRGFzaGJvYXJkU3dpdGNoSGFuZGxlciA9IChcbiAgcGF5bG9hZDogU3dpdGNoRGFzaGJvYXJkUGF5bG9hZCxcbikgPT4gUHJvbWlzZTxTd2l0Y2hEYXNoYm9hcmRSZXN1bHQ+O1xuXG5sZXQgZGFzaGJvYXJkU3dpdGNoSGFuZGxlcjogRGFzaGJvYXJkU3dpdGNoSGFuZGxlciB8IHVuZGVmaW5lZDtcblxuY29uc3QgX19DT01QT05FTlRfTkFNRV9fID0gKCkgPT4ge1xuICBjb25zdCB1aUNvbmZpZyA9IHVzZVVpQ29uZmlnKCk7XG5cbiAgY29uc3QgW2Rhc2hib2FyZElkLCBzZXREYXNoYm9hcmRJZF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihcbiAgICBib290c3RyYXBEYXRhLmVtYmVkZGVkIS5kYXNoYm9hcmRfaWQsXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkYXNoYm9hcmRTd2l0Y2hIYW5kbGVyID0gYXN5bmMgKHtcbiAgICAgIGRhc2hib2FyZElkOiByZXF1ZXN0ZWREYXNoYm9hcmRJZCxcbiAgICAgIGd1ZXN0VG9rZW4sXG4gICAgfTogU3dpdGNoRGFzaGJvYXJkUGF5bG9hZCkgPT4ge1xuICAgICAgY29uc3QgbmV4dERhc2hib2FyZElkID0gcmVxdWVzdGVkRGFzaGJvYXJkSWQudHJpbSgpO1xuXG4gICAgICBpZiAoIW5leHREYXNoYm9hcmRJZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ2Rhc2hib2FyZElkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICB0eXBlb2YgZ3Vlc3RUb2tlbiAhPT0gJ3N0cmluZycgfHxcbiAgICAgICAgZ3Vlc3RUb2tlbi50cmltKCkubGVuZ3RoID09PSAwXG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdndWVzdFRva2VuIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgc2V0RGFzaGJvYXJkSWQobnVsbCk7XG5cbiAgICAgIGRpc3BsYXllZFVuYXV0aG9yaXplZFRvYXN0ID0gZmFsc2U7XG5cbiAgICAgIHNldHVwR3Vlc3RDbGllbnQoZ3Vlc3RUb2tlbik7XG5cbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHJlc29sdmUoKSk7XG4gICAgICB9KTtcblxuICAgICAgc2V0RGFzaGJvYXJkSWQobmV4dERhc2hib2FyZElkKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGFzaGJvYXJkSWQ6IG5leHREYXNoYm9hcmRJZCxcbiAgICAgICAgYWNjZXB0ZWQ6IHRydWUsXG4gICAgICB9O1xuICAgIH07XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZGFzaGJvYXJkU3dpdGNoSGFuZGxlciA9IHVuZGVmaW5lZDtcbiAgICB9O1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXVpQ29uZmlnPy5lbWl0RGF0YU1hc2tzKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGxldCBwcmV2aW91c0RhdGFNYXNrID0gc3RvcmUuZ2V0U3RhdGUoKS5kYXRhTWFzaztcblxuICAgIHJldHVybiBzdG9yZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc3QgY3VycmVudERhdGFNYXNrID0gc3RvcmUuZ2V0U3RhdGUoKS5kYXRhTWFzaztcblxuICAgICAgaWYgKHByZXZpb3VzRGF0YU1hc2sgIT09IGN1cnJlbnREYXRhTWFzaykge1xuICAgICAgICBTd2l0Y2hib2FyZC5lbWl0KCdvYnNlcnZlRGF0YU1hc2snLCB7XG4gICAgICAgICAgLi4uY3VycmVudERhdGFNYXNrLFxuICAgICAgICAgIC4uLmdldERhdGFNYXNrQ2hhbmdlVHJpZ2dlcihcbiAgICAgICAgICAgIGN1cnJlbnREYXRhTWFzayxcbiAgICAgICAgICAgIHByZXZpb3VzRGF0YU1hc2ssXG4gICAgICAgICAgKSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcHJldmlvdXNEYXRhTWFzayA9IGN1cnJlbnREYXRhTWFzaztcbiAgICAgIH1cbiAgICB9KTtcbiAgfSwgW3VpQ29uZmlnPy5lbWl0RGF0YU1hc2tzXSk7XG5cbiAgaWYgKCFkYXNoYm9hcmRJZCkge1xuICAgIHJldHVybiA8TG9hZGluZyAvPjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPExhenlEYXNoYm9hcmRQYWdlXG4gICAgICBrZXk9e2Rhc2hib2FyZElkfVxuICAgICAgaWRPclNsdWc9e2Rhc2hib2FyZElkfVxuICAgIC8+XG4gICk7XG59O1xuXCJcIlwiLnJlcGxhY2UoXCJfX0NPTVBPTkVOVF9OQU1FX19cIiwgY29tcG9uZW50X25hbWUpXG5cbiAgICBjb250ZW50ID0gKFxuICAgICAgICBjb250ZW50WzogY29tcG9uZW50X21hdGNoLnN0YXJ0KCldXG4gICAgICAgICsgcmVwbGFjZW1lbnRfY29tcG9uZW50XG4gICAgICAgICsgY29udGVudFtjb21wb25lbnRfbWF0Y2guZW5kKCkgOl1cbiAgICApXG5cbiAgICBzd2l0Y2hib2FyZF9hbmNob3JfY2FuZGlkYXRlcyA9IFtcbiAgICAgICAgKFxuICAgICAgICAgICAgXCIgICAgU3dpdGNoYm9hcmQuZGVmaW5lTWV0aG9kKFwiXG4gICAgICAgICAgICBcIidnZXRTY3JvbGxTaXplJywgZW1iZWRkZWRBcGkuZ2V0U2Nyb2xsU2l6ZSk7XCJcbiAgICAgICAgKSxcbiAgICAgICAgKFxuICAgICAgICAgICAgXCIgICAgU3dpdGNoYm9hcmQuZGVmaW5lTWV0aG9kKFxcXFxuXCJcbiAgICAgICAgICAgIFwiICAgICAgJ2dldFNjcm9sbFNpemUnLFxcXFxuXCJcbiAgICAgICAgICAgIFwiICAgICAgZW1iZWRkZWRBcGkuZ2V0U2Nyb2xsU2l6ZSxcXFxcblwiXG4gICAgICAgICAgICBcIiAgICApO1wiXG4gICAgICAgICksXG4gICAgXVxuXG4gICAgc3dpdGNoYm9hcmRfbWV0aG9kID0gXCJcIlwiICAgIFN3aXRjaGJvYXJkLmRlZmluZU1ldGhvZChcbiAgICAgICdzd2l0Y2hEYXNoYm9hcmQnLFxuICAgICAgYXN5bmMgKFxuICAgICAgICBwYXlsb2FkOiBTd2l0Y2hEYXNoYm9hcmRQYXlsb2FkLFxuICAgICAgKTogUHJvbWlzZTxTd2l0Y2hEYXNoYm9hcmRSZXN1bHQ+ID0+IHtcbiAgICAgICAgaWYgKCFkYXNoYm9hcmRTd2l0Y2hIYW5kbGVyKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgJ1RoZSBlbWJlZGRlZCBkYXNoYm9hcmQgaXMgbm90IHJlYWR5IHRvIHN3aXRjaCcsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkYXNoYm9hcmRTd2l0Y2hIYW5kbGVyKHBheWxvYWQpO1xuICAgICAgfSxcbiAgICApO1xuXG5cIlwiXCJcblxuICAgIGFuY2hvcl9mb3VuZCA9IEZhbHNlXG5cbiAgICBmb3IgYW5jaG9yIGluIHN3aXRjaGJvYXJkX2FuY2hvcl9jYW5kaWRhdGVzOlxuICAgICAgICBpZiBjb250ZW50LmNvdW50KGFuY2hvcikgPT0gMTpcbiAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgYW5jaG9yLFxuICAgICAgICAgICAgICAgIHN3aXRjaGJvYXJkX21ldGhvZCArIGFuY2hvcixcbiAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgYW5jaG9yX2ZvdW5kID0gVHJ1ZVxuICAgICAgICAgICAgYnJlYWtcblxuICAgIGlmIG5vdCBhbmNob3JfZm91bmQ6XG4gICAgICAgIHJhaXNlIFBhdGNoRXJyb3IoXG4gICAgICAgICAgICBcIkNvdWxkIG5vdCBsb2NhdGUgdGhlIGdldFNjcm9sbFNpemUgU3dpdGNoYm9hcmQgbWV0aG9kXCJcbiAgICAgICAgKVxuXG4gICAgZnJvbnRlbmRfcGF0aC53cml0ZV90ZXh0KGNvbnRlbnQsIGVuY29kaW5nPVwidXRmLThcIilcbiAgICBwcmludChmXCJQYXRjaGVkOiB7ZnJvbnRlbmRfcGF0aH1cIilcblxuXG5kZWYgcGF0Y2hfZ3Vlc3RfdG9rZW5fZmV0Y2hfdHlwZShjb250ZW50OiBzdHIpIC0+IHN0cjpcbiAgICBjYW5kaWRhdGVzID0gW1xuICAgICAgICBcImV4cG9ydCB0eXBlIEd1ZXN0VG9rZW5GZXRjaEZuID0gKCkgPT4gUHJvbWlzZTxzdHJpbmc+O1wiLFxuICAgICAgICAoXG4gICAgICAgICAgICBcImV4cG9ydCB0eXBlIEd1ZXN0VG9rZW5GZXRjaEZuID0gXCJcbiAgICAgICAgICAgIFwiKCkgPT4gUHJvbWlzZTxzdHJpbmc+O1wiXG4gICAgICAgICksXG4gICAgXVxuXG4gICAgcmVwbGFjZW1lbnQgPSBcIlwiXCIvLyBTVVBFUlNFVF9TV0lUQ0hBQkxFX0VNQkVEX1NES19QQVRDSFxuLy9cbi8vIGRhc2hib2FyZElkIGlzIHVuZGVmaW5lZCBmb3IgdGhlIGluaXRpYWwgZGFzaGJvYXJkIGJvb3RzdHJhcC5cbi8vIEFmdGVyIGEgc3VjY2Vzc2Z1bCBkYXNoYm9hcmQgc3dpdGNoLCB0b2tlbiByZWZyZXNoZXMgcmVjZWl2ZSB0aGUgYWN0aXZlXG4vLyBkYXNoYm9hcmQgVVVJRC5cbmV4cG9ydCB0eXBlIEd1ZXN0VG9rZW5GZXRjaEZuID0gKFxuICBkYXNoYm9hcmRJZD86IHN0cmluZyxcbikgPT4gUHJvbWlzZTxzdHJpbmc+O1wiXCJcIlxuXG4gICAgZm9yIGNhbmRpZGF0ZSBpbiBjYW5kaWRhdGVzOlxuICAgICAgICBpZiBjb250ZW50LmNvdW50KGNhbmRpZGF0ZSkgPT0gMTpcbiAgICAgICAgICAgIHJldHVybiBjb250ZW50LnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgY2FuZGlkYXRlLFxuICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50LFxuICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICApXG5cbiAgICByYWlzZSBQYXRjaEVycm9yKFwiQ291bGQgbm90IGxvY2F0ZSBHdWVzdFRva2VuRmV0Y2hGblwiKVxuXG5cbmRlZiBwYXRjaF9lbWJlZGRlZF9kYXNoYm9hcmRfdHlwZShjb250ZW50OiBzdHIpIC0+IHN0cjpcbiAgICB0eXBlX3BhdHRlcm4gPSByZS5jb21waWxlKFxuICAgICAgICByXCIoZXhwb3J0XFxcXHMrKD86aW50ZXJmYWNlfHR5cGUpXFxcXHMrRW1iZWRkZWREYXNoYm9hcmRcIlxuICAgICAgICByXCIuKj9cXFxceykoLio/KShcXFxcblxcXFx9OylcIixcbiAgICAgICAgcmUuRE9UQUxMLFxuICAgIClcblxuICAgIG1hdGNoID0gdHlwZV9wYXR0ZXJuLnNlYXJjaChjb250ZW50KVxuXG4gICAgaWYgbm90IG1hdGNoOlxuICAgICAgICByYWlzZSBQYXRjaEVycm9yKFxuICAgICAgICAgICAgXCJDb3VsZCBub3QgbG9jYXRlIHRoZSBFbWJlZGRlZERhc2hib2FyZCBwdWJsaWMgdHlwZVwiXG4gICAgICAgIClcblxuICAgIGJvZHkgPSBtYXRjaC5ncm91cCgyKVxuXG4gICAgaWYgXCJzd2l0Y2hEYXNoYm9hcmQ6XCIgaW4gYm9keTpcbiAgICAgICAgcmV0dXJuIGNvbnRlbnRcblxuICAgIG1ldGhvZCA9IFwiXCJcIlxuICAvKipcbiAgICogUmVwbGFjZXMgRGFzaGJvYXJkUGFnZSBpbiB0aGUgZXhpc3RpbmcgaWZyYW1lIGRvY3VtZW50LlxuICAgKlxuICAgKiBUaGUgdmFsdWUgbXVzdCBiZSB0aGUgdGFyZ2V0IGRhc2hib2FyZCBVVUlEL2lkIGFjY2VwdGVkIGJ5XG4gICAqIERhc2hib2FyZFBhZ2UsIG5vdCB0aGUgZW1iZWRkZWQtY29uZmlndXJhdGlvbiBVVUlEIHVzZWQgaW4gdGhlXG4gICAqIGluaXRpYWwgL2VtYmVkZGVkLzp1dWlkIFVSTC5cbiAgICovXG4gIHN3aXRjaERhc2hib2FyZDogKFxuICAgIGRhc2hib2FyZElkOiBzdHJpbmcsXG4gICkgPT4gUHJvbWlzZTx7XG4gICAgZGFzaGJvYXJkSWQ6IHN0cmluZztcbiAgICBhY2NlcHRlZDogdHJ1ZTtcbiAgfT47XG5cIlwiXCJcblxuICAgIHVwZGF0ZWRfdHlwZSA9IChcbiAgICAgICAgbWF0Y2guZ3JvdXAoMSlcbiAgICAgICAgKyBib2R5LnJzdHJpcCgpXG4gICAgICAgICsgXCJcXFxcblwiXG4gICAgICAgICsgbWV0aG9kLnJzdHJpcCgpXG4gICAgICAgICsgbWF0Y2guZ3JvdXAoMylcbiAgICApXG5cbiAgICByZXR1cm4gKFxuICAgICAgICBjb250ZW50WzogbWF0Y2guc3RhcnQoKV1cbiAgICAgICAgKyB1cGRhdGVkX3R5cGVcbiAgICAgICAgKyBjb250ZW50W21hdGNoLmVuZCgpIDpdXG4gICAgKVxuXG5cbmRlZiBwYXRjaF9pbml0aWFsX2d1ZXN0X3Rva2VuX2ZldGNoKGNvbnRlbnQ6IHN0cikgLT4gc3RyOlxuICAgIGNhbmRpZGF0ZXMgPSBbXG4gICAgICAgIFwiZmV0Y2hHdWVzdFRva2VuKCksXCIsXG4gICAgICAgIFwiYXdhaXQgZmV0Y2hHdWVzdFRva2VuKCksXCIsXG4gICAgXVxuXG4gICAgZm9yIGNhbmRpZGF0ZSBpbiBjYW5kaWRhdGVzOlxuICAgICAgICBpZiBjb250ZW50LmNvdW50KGNhbmRpZGF0ZSkgPj0gMTpcbiAgICAgICAgICAgIHJldHVybiBjb250ZW50LnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgY2FuZGlkYXRlLFxuICAgICAgICAgICAgICAgIGNhbmRpZGF0ZS5yZXBsYWNlKFxuICAgICAgICAgICAgICAgICAgICBcImZldGNoR3Vlc3RUb2tlbigpXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiZmV0Y2hHdWVzdFRva2VuKHVuZGVmaW5lZClcIixcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICApXG5cbiAgICByYWlzZSBQYXRjaEVycm9yKFxuICAgICAgICBcIkNvdWxkIG5vdCBsb2NhdGUgdGhlIGluaXRpYWwgZmV0Y2hHdWVzdFRva2VuIGNhbGxcIlxuICAgIClcblxuXG5kZWYgcGF0Y2hfZ3Vlc3RfdG9rZW5fcmVmcmVzaChjb250ZW50OiBzdHIpIC0+IHN0cjpcbiAgICBwYXR0ZXJucyA9IFtcbiAgICAgICAgcmUuY29tcGlsZShcbiAgICAgICAgICAgIHJcImFzeW5jIGZ1bmN0aW9uIHJlZnJlc2hHdWVzdFRva2VuXFxcXChcXFxcKSBcXFxce1xcXFxzKlwiXG4gICAgICAgICAgICByXCJjb25zdCBuZXdHdWVzdFRva2VuID0gYXdhaXQgZmV0Y2hHdWVzdFRva2VuXFxcXChcXFxcKTtcXFxccypcIlxuICAgICAgICAgICAgclwib3VyUG9ydFxcXFwuZW1pdFxcXFwoXCJcbiAgICAgICAgICAgIHJcIidndWVzdFRva2VuJyxcXFxccypcXFxce1xcXFxzKmd1ZXN0VG9rZW46XFxcXHMqbmV3R3Vlc3RUb2tlblxcXFxzKlxcXFx9XCJcbiAgICAgICAgICAgIHJcIlxcXFwpO1xcXFxzKlwiXG4gICAgICAgICAgICByXCJzZXRUaW1lb3V0XFxcXChcIlxuICAgICAgICAgICAgclwicmVmcmVzaEd1ZXN0VG9rZW4sXFxcXHMqXCJcbiAgICAgICAgICAgIHJcImdldEd1ZXN0VG9rZW5SZWZyZXNoVGltaW5nXFxcXChuZXdHdWVzdFRva2VuXFxcXClcIlxuICAgICAgICAgICAgclwiXFxcXCk7XFxcXHMqXCJcbiAgICAgICAgICAgIHJcIlxcXFx9XCIsXG4gICAgICAgICAgICByZS5ET1RBTEwsXG4gICAgICAgICksXG4gICAgICAgIHJlLmNvbXBpbGUoXG4gICAgICAgICAgICByXCJjb25zdCByZWZyZXNoR3Vlc3RUb2tlbiA9IGFzeW5jIFxcXFwoXFxcXCkgPT4gXFxcXHtcXFxccypcIlxuICAgICAgICAgICAgclwiY29uc3QgbmV3R3Vlc3RUb2tlbiA9IGF3YWl0IGZldGNoR3Vlc3RUb2tlblxcXFwoXFxcXCk7XFxcXHMqXCJcbiAgICAgICAgICAgIHJcIm91clBvcnRcXFxcLmVtaXRcXFxcKFwiXG4gICAgICAgICAgICByXCInZ3Vlc3RUb2tlbicsXFxcXHMqXFxcXHtcXFxccypndWVzdFRva2VuOlxcXFxzKm5ld0d1ZXN0VG9rZW5cXFxccypcXFxcfVwiXG4gICAgICAgICAgICByXCJcXFxcKTtcXFxccypcIlxuICAgICAgICAgICAgclwic2V0VGltZW91dFxcXFwoXCJcbiAgICAgICAgICAgIHJcInJlZnJlc2hHdWVzdFRva2VuLFxcXFxzKlwiXG4gICAgICAgICAgICByXCJnZXRHdWVzdFRva2VuUmVmcmVzaFRpbWluZ1xcXFwobmV3R3Vlc3RUb2tlblxcXFwpXCJcbiAgICAgICAgICAgIHJcIlxcXFwpO1xcXFxzKlwiXG4gICAgICAgICAgICByXCJcXFxcfTtcIixcbiAgICAgICAgICAgIHJlLkRPVEFMTCxcbiAgICAgICAgKSxcbiAgICBdXG5cbiAgICByZXBsYWNlbWVudCA9IFwiXCJcImxldCBhY3RpdmVEYXNoYm9hcmRJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIGFzeW5jIGZ1bmN0aW9uIHJlZnJlc2hHdWVzdFRva2VuKCkge1xuICAgIGNvbnN0IG5ld0d1ZXN0VG9rZW4gPSBhd2FpdCBmZXRjaEd1ZXN0VG9rZW4oXG4gICAgICBhY3RpdmVEYXNoYm9hcmRJZCxcbiAgICApO1xuXG4gICAgb3VyUG9ydC5lbWl0KCdndWVzdFRva2VuJywge1xuICAgICAgZ3Vlc3RUb2tlbjogbmV3R3Vlc3RUb2tlbixcbiAgICB9KTtcblxuICAgIHNldFRpbWVvdXQoXG4gICAgICByZWZyZXNoR3Vlc3RUb2tlbixcbiAgICAgIGdldEd1ZXN0VG9rZW5SZWZyZXNoVGltaW5nKG5ld0d1ZXN0VG9rZW4pLFxuICAgICk7XG4gIH1cIlwiXCJcblxuICAgIGZvciBwYXR0ZXJuIGluIHBhdHRlcm5zOlxuICAgICAgICB1cGRhdGVkLCBjb3VudCA9IHBhdHRlcm4uc3VibihcbiAgICAgICAgICAgIHJlcGxhY2VtZW50LFxuICAgICAgICAgICAgY29udGVudCxcbiAgICAgICAgICAgIGNvdW50PTEsXG4gICAgICAgIClcblxuICAgICAgICBpZiBjb3VudCA9PSAxOlxuICAgICAgICAgICAgcmV0dXJuIHVwZGF0ZWRcblxuICAgIHJhaXNlIFBhdGNoRXJyb3IoXG4gICAgICAgIFwiQ291bGQgbm90IGxvY2F0ZSB0aGUgZ3Vlc3QtdG9rZW4gcmVmcmVzaCBmdW5jdGlvblwiXG4gICAgKVxuXG5cbmRlZiBwYXRjaF9zZGtfZnVuY3Rpb25zKGNvbnRlbnQ6IHN0cikgLT4gc3RyOlxuICAgIGFuY2hvcl9jYW5kaWRhdGVzID0gW1xuICAgICAgICAoXG4gICAgICAgICAgICBcIiAgY29uc3QgZ2V0U2Nyb2xsU2l6ZSA9ICgpID0+IFwiXG4gICAgICAgICAgICBcIm91clBvcnQuZ2V0PFNpemU+KCdnZXRTY3JvbGxTaXplJyk7XCJcbiAgICAgICAgKSxcbiAgICAgICAgKFxuICAgICAgICAgICAgXCIgIGNvbnN0IGdldFNjcm9sbFNpemUgPSAoKSA9PlxcXFxuXCJcbiAgICAgICAgICAgIFwiICAgIG91clBvcnQuZ2V0PFNpemU+KCdnZXRTY3JvbGxTaXplJyk7XCJcbiAgICAgICAgKSxcbiAgICBdXG5cbiAgICBzd2l0Y2hfZnVuY3Rpb24gPSBcIlwiXCIgIGNvbnN0IHN3aXRjaERhc2hib2FyZCA9IGFzeW5jIChcbiAgICBkYXNoYm9hcmRJZDogc3RyaW5nLFxuICApOiBQcm9taXNlPHtcbiAgICBkYXNoYm9hcmRJZDogc3RyaW5nO1xuICAgIGFjY2VwdGVkOiB0cnVlO1xuICB9PiA9PiB7XG4gICAgY29uc3Qgbm9ybWFsaXplZERhc2hib2FyZElkID0gZGFzaGJvYXJkSWQudHJpbSgpO1xuXG4gICAgaWYgKCFub3JtYWxpemVkRGFzaGJvYXJkSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ2Rhc2hib2FyZElkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgZ3Vlc3RUb2tlbiA9IGF3YWl0IGZldGNoR3Vlc3RUb2tlbihcbiAgICAgIG5vcm1hbGl6ZWREYXNoYm9hcmRJZCxcbiAgICApO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgb3VyUG9ydC5nZXQ8e1xuICAgICAgZGFzaGJvYXJkSWQ6IHN0cmluZztcbiAgICAgIGFjY2VwdGVkOiB0cnVlO1xuICAgIH0+KCdzd2l0Y2hEYXNoYm9hcmQnLCB7XG4gICAgICBkYXNoYm9hcmRJZDogbm9ybWFsaXplZERhc2hib2FyZElkLFxuICAgICAgZ3Vlc3RUb2tlbixcbiAgICB9KTtcblxuICAgIGFjdGl2ZURhc2hib2FyZElkID0gbm9ybWFsaXplZERhc2hib2FyZElkO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuXCJcIlwiXG5cbiAgICBmb3IgYW5jaG9yIGluIGFuY2hvcl9jYW5kaWRhdGVzOlxuICAgICAgICBpZiBjb250ZW50LmNvdW50KGFuY2hvcikgPT0gMTpcbiAgICAgICAgICAgIHJldHVybiBjb250ZW50LnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgYW5jaG9yLFxuICAgICAgICAgICAgICAgIHN3aXRjaF9mdW5jdGlvbiArIGFuY2hvcixcbiAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgKVxuXG4gICAgcmFpc2UgUGF0Y2hFcnJvcihcbiAgICAgICAgXCJDb3VsZCBub3QgbG9jYXRlIHRoZSBTREsgZ2V0U2Nyb2xsU2l6ZSBmdW5jdGlvblwiXG4gICAgKVxuXG5cbmRlZiBwYXRjaF9zZGtfcmV0dXJuX29iamVjdChjb250ZW50OiBzdHIpIC0+IHN0cjpcbiAgICBjYW5kaWRhdGVzID0gW1xuICAgICAgICBcIiAgICBzZXRUaGVtZU1vZGUsXFxcXG4gIH07XCIsXG4gICAgICAgIFwiICAgIHNldFRoZW1lTW9kZSxcXFxcbiAgICB1bm1vdW50LFxcXFxuICB9O1wiLFxuICAgICAgICBcIiAgICB1bm1vdW50LFxcXFxuICAgIHNldFRoZW1lTW9kZSxcXFxcbiAgfTtcIixcbiAgICBdXG5cbiAgICBmb3IgY2FuZGlkYXRlIGluIGNhbmRpZGF0ZXM6XG4gICAgICAgIGlmIGNvbnRlbnQuY291bnQoY2FuZGlkYXRlKSA9PSAxOlxuICAgICAgICAgICAgbGluZXMgPSBjYW5kaWRhdGUuc3BsaXRsaW5lcygpXG5cbiAgICAgICAgICAgIGNsb3NpbmcgPSBsaW5lcy5wb3AoKVxuICAgICAgICAgICAgYm9keSA9IFwiXFxcXG5cIi5qb2luKGxpbmVzKVxuXG4gICAgICAgICAgICByZXR1cm4gY29udGVudC5yZXBsYWNlKFxuICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSxcbiAgICAgICAgICAgICAgICBib2R5XG4gICAgICAgICAgICAgICAgKyBcIlxcXFxuXCJcbiAgICAgICAgICAgICAgICArIFwiICAgIHN3aXRjaERhc2hib2FyZCxcXFxcblwiXG4gICAgICAgICAgICAgICAgKyBjbG9zaW5nLFxuICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICApXG5cbiAgICByYWlzZSBQYXRjaEVycm9yKFxuICAgICAgICBcIkNvdWxkIG5vdCBsb2NhdGUgdGhlIEVtYmVkZGVkRGFzaGJvYXJkIHJldHVybiBvYmplY3RcIlxuICAgIClcblxuXG5kZWYgcGF0Y2hfc2RrKHNka19wYXRoOiBQYXRoKSAtPiBOb25lOlxuICAgIGNvbnRlbnQgPSBzZGtfcGF0aC5yZWFkX3RleHQoZW5jb2Rpbmc9XCJ1dGYtOFwiKVxuXG4gICAgaWYgXCJTVVBFUlNFVF9TV0lUQ0hBQkxFX0VNQkVEX1NES19QQVRDSFwiIGluIGNvbnRlbnQ6XG4gICAgICAgIHByaW50KGZcIkFscmVhZHkgcGF0Y2hlZDoge3Nka19wYXRofVwiKVxuICAgICAgICByZXR1cm5cblxuICAgIGNvbnRlbnQgPSBwYXRjaF9ndWVzdF90b2tlbl9mZXRjaF90eXBlKGNvbnRlbnQpXG4gICAgY29udGVudCA9IHBhdGNoX2VtYmVkZGVkX2Rhc2hib2FyZF90eXBlKGNvbnRlbnQpXG4gICAgY29udGVudCA9IHBhdGNoX2luaXRpYWxfZ3Vlc3RfdG9rZW5fZmV0Y2goY29udGVudClcbiAgICBjb250ZW50ID0gcGF0Y2hfZ3Vlc3RfdG9rZW5fcmVmcmVzaChjb250ZW50KVxuICAgIGNvbnRlbnQgPSBwYXRjaF9zZGtfZnVuY3Rpb25zKGNvbnRlbnQpXG4gICAgY29udGVudCA9IHBhdGNoX3Nka19yZXR1cm5fb2JqZWN0KGNvbnRlbnQpXG5cbiAgICBzZGtfcGF0aC53cml0ZV90ZXh0KGNvbnRlbnQsIGVuY29kaW5nPVwidXRmLThcIilcbiAgICBwcmludChmXCJQYXRjaGVkOiB7c2RrX3BhdGh9XCIpXG5cblxuZGVmIG1haW4oKSAtPiBpbnQ6XG4gICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoXG4gICAgICAgIGRlc2NyaXB0aW9uPShcbiAgICAgICAgICAgIFwiQXBwbHkgdGhlIHN3aXRjaGFibGUtZGFzaGJvYXJkIHBhdGNoIHRvIGEgXCJcbiAgICAgICAgICAgIFwiU3VwZXJzZXQgNi4xLnggc291cmNlIGNoZWNrb3V0LlwiXG4gICAgICAgIClcbiAgICApXG5cbiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KFxuICAgICAgICBcInN1cGVyc2V0X3Jvb3RcIixcbiAgICAgICAgdHlwZT1QYXRoLFxuICAgICAgICBoZWxwPVwiUGF0aCB0byB0aGUgQXBhY2hlIFN1cGVyc2V0IHNvdXJjZSBjaGVja291dFwiLFxuICAgIClcblxuICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpXG4gICAgcm9vdCA9IGFyZ3Muc3VwZXJzZXRfcm9vdC5yZXNvbHZlKClcblxuICAgIGZyb250ZW5kX3BhdGggPSByb290IC8gRlJPTlRFTkRfRklMRVxuICAgIHNka19wYXRoID0gcm9vdCAvIFNES19GSUxFXG5cbiAgICBtaXNzaW5nID0gW1xuICAgICAgICBwYXRoXG4gICAgICAgIGZvciBwYXRoIGluIFtmcm9udGVuZF9wYXRoLCBzZGtfcGF0aF1cbiAgICAgICAgaWYgbm90IHBhdGguZXhpc3RzKClcbiAgICBdXG5cbiAgICBpZiBtaXNzaW5nOlxuICAgICAgICBwcmludChcbiAgICAgICAgICAgIFwiVGhlIHRhcmdldCBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYSBjb21wYXRpYmxlIFwiXG4gICAgICAgICAgICBcIlN1cGVyc2V0IHNvdXJjZSBjaGVja291dC5cIixcbiAgICAgICAgICAgIGZpbGU9c3lzLnN0ZGVycixcbiAgICAgICAgKVxuXG4gICAgICAgIGZvciBtaXNzaW5nX3BhdGggaW4gbWlzc2luZzpcbiAgICAgICAgICAgIHByaW50KGZcIk1pc3Npbmc6IHttaXNzaW5nX3BhdGh9XCIsIGZpbGU9c3lzLnN0ZGVycilcblxuICAgICAgICByZXR1cm4gMlxuXG4gICAgdHJ5OlxuICAgICAgICBwYXRjaF9mcm9udGVuZChmcm9udGVuZF9wYXRoKVxuICAgICAgICBwYXRjaF9zZGsoc2RrX3BhdGgpXG4gICAgZXhjZXB0IFBhdGNoRXJyb3IgYXMgZXJyb3I6XG4gICAgICAgIHByaW50KGZcIlBhdGNoIGZhaWxlZDoge2Vycm9yfVwiLCBmaWxlPXN5cy5zdGRlcnIpXG4gICAgICAgIHJldHVybiAxXG5cbiAgICBwcmludChcIlBhdGNoIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuXCIpXG4gICAgcmV0dXJuIDBcblxuXG5pZiBfX25hbWVfXyA9PSBcIl9fbWFpbl9fXCI6XG4gICAgcmFpc2UgU3lzdGVtRXhpdChtYWluKCkpXG5gO1xuXG5jb25zdCBWRVJJRllfUEFUQ0hfU0ggPSBgIyEvdXNyL2Jpbi9lbnYgYmFzaFxuXG5zZXQgLWV1byBwaXBlZmFpbFxuXG5TVVBFUlNFVF9ST09UPVxcJHsxOj9Vc2FnZTogdmVyaWZ5X3BhdGNoLnNoIC9wYXRoL3RvL3N1cGVyc2V0fVxuXG5GUk9OVEVORF9GSUxFPVwiJFNVUEVSU0VUX1JPT1Qvc3VwZXJzZXQtZnJvbnRlbmQvc3JjL2VtYmVkZGVkL2luZGV4LnRzeFwiXG5TREtfRklMRT1cIiRTVVBFUlNFVF9ST09UL3N1cGVyc2V0LWVtYmVkZGVkLXNkay9zcmMvaW5kZXgudHNcIlxuXG50ZXN0IC1mIFwiJEZST05URU5EX0ZJTEVcIlxudGVzdCAtZiBcIiRTREtfRklMRVwiXG5cbmdyZXAgLXEgXFxcXFxuICBcIlNVUEVSU0VUX1NXSVRDSEFCTEVfRU1CRURfUEFUQ0hcIiBcXFxcXG4gIFwiJEZST05URU5EX0ZJTEVcIlxuXG5ncmVwIC1xIFxcXFxcbiAgXCInc3dpdGNoRGFzaGJvYXJkJ1wiIFxcXFxcbiAgXCIkRlJPTlRFTkRfRklMRVwiXG5cbmdyZXAgLXEgXFxcXFxuICBcImRhc2hib2FyZFN3aXRjaEhhbmRsZXJcIiBcXFxcXG4gIFwiJEZST05URU5EX0ZJTEVcIlxuXG5ncmVwIC1xIFxcXFxcbiAgXCJTVVBFUlNFVF9TV0lUQ0hBQkxFX0VNQkVEX1NES19QQVRDSFwiIFxcXFxcbiAgXCIkU0RLX0ZJTEVcIlxuXG5ncmVwIC1xIFxcXFxcbiAgXCJzd2l0Y2hEYXNoYm9hcmQ6XCIgXFxcXFxuICBcIiRTREtfRklMRVwiXG5cbmdyZXAgLXEgXFxcXFxuICBcImFjdGl2ZURhc2hib2FyZElkXCIgXFxcXFxuICBcIiRTREtfRklMRVwiXG5cbmdyZXAgLXEgXFxcXFxuICBcImZldGNoR3Vlc3RUb2tlbihcIiBcXFxcXG4gIFwiJFNES19GSUxFXCJcblxuZWNobyBcIlRoZSBzd2l0Y2hhYmxlLWRhc2hib2FyZCBwYXRjaCBpcyBwcmVzZW50LlwiXG5gO1xuXG5jb25zdCBCVUlMRF9TREtfU0ggPSBgIyEvdXNyL2Jpbi9lbnYgYmFzaFxuXG5zZXQgLWV1byBwaXBlZmFpbFxuXG5TVVBFUlNFVF9ST09UPVxcJHsxOj9Vc2FnZTogYnVpbGQtc2RrLnNoIC9wYXRoL3RvL3N1cGVyc2V0fVxuXG5TREtfUk9PVD1cIiRTVVBFUlNFVF9ST09UL3N1cGVyc2V0LWVtYmVkZGVkLXNka1wiXG5cbmlmIFsgISAtZiBcIiRTREtfUk9PVC9wYWNrYWdlLmpzb25cIiBdOyB0aGVuXG4gIGVjaG8gXCJNaXNzaW5nIFNESyBwYWNrYWdlOiAkU0RLX1JPT1RcIiA+JjJcbiAgZXhpdCAxXG5maVxuXG5jZCBcIiRTREtfUk9PVFwiXG5cbm5wbSBjaVxuXG5ucG0gcnVuIGJ1aWxkXG5cbmVjaG9cbmVjaG8gXCJFbWJlZGRlZCBTREsgYnVpbGQgY29tcGxldGVkLlwiXG5lY2hvIFwiT3V0cHV0IGRpcmVjdG9yeTpcIlxuZmluZCAuIFxcXFxcbiAgLW1heGRlcHRoIDIgXFxcXFxuICAtdHlwZSBkIFxcXFxcbiAgXFxcXCggLW5hbWUgZGlzdCAtbyAtbmFtZSBsaWIgXFxcXCkgXFxcXFxuICAtcHJpbnRcbmA7XG5cbmNvbnN0IEJVSUxEX0ZST05URU5EX1NIID0gYCMhL3Vzci9iaW4vZW52IGJhc2hcblxuc2V0IC1ldW8gcGlwZWZhaWxcblxuU1VQRVJTRVRfUk9PVD1cXCR7MTo/VXNhZ2U6IGJ1aWxkLXN1cGVyc2V0LWZyb250ZW5kLnNoIC9wYXRoL3RvL3N1cGVyc2V0fVxuXG5GUk9OVEVORF9ST09UPVwiJFNVUEVSU0VUX1JPT1Qvc3VwZXJzZXQtZnJvbnRlbmRcIlxuXG5pZiBbICEgLWYgXCIkRlJPTlRFTkRfUk9PVC9wYWNrYWdlLmpzb25cIiBdOyB0aGVuXG4gIGVjaG8gXCJNaXNzaW5nIFN1cGVyc2V0IGZyb250ZW5kOiAkRlJPTlRFTkRfUk9PVFwiID4mMlxuICBleGl0IDFcbmZpXG5cbmNkIFwiJEZST05URU5EX1JPT1RcIlxuXG5ucG0gY2lcblxubnBtIHJ1biBidWlsZFxuXG5lY2hvIFwiU3VwZXJzZXQgZnJvbnRlbmQgYnVpbGQgY29tcGxldGVkLlwiXG5gO1xuXG5jb25zdCBQQVRDSF9BTkRfQlVJTERfU0ggPSBgIyEvdXNyL2Jpbi9lbnYgYmFzaFxuXG5zZXQgLWV1byBwaXBlZmFpbFxuXG5TVVBFUlNFVF9ST09UPVxcJHsxOj9Vc2FnZTogcGF0Y2gtYW5kLWJ1aWxkLnNoIC9wYXRoL3RvL3N1cGVyc2V0fVxuXG5TQ1JJUFRfRElSPSQoXG4gIGNkIFwiJChkaXJuYW1lIFwiXFwke0JBU0hfU09VUkNFWzBdfVwiKVwiXG4gIHB3ZFxuKVxuXG5QUk9KRUNUX1JPT1Q9JChcbiAgY2QgXCIkU0NSSVBUX0RJUi8uLlwiXG4gIHB3ZFxuKVxuXG5weXRob24zIFxcXFxcbiAgXCIkUFJPSkVDVF9ST09UL3BhdGNoZXMvYXBwbHlfc3VwZXJzZXRfNl8xX3BhdGNoLnB5XCIgXFxcXFxuICBcIiRTVVBFUlNFVF9ST09UXCJcblxuXCIkUFJPSkVDVF9ST09UL3BhdGNoZXMvdmVyaWZ5X3BhdGNoLnNoXCIgXFxcXFxuICBcIiRTVVBFUlNFVF9ST09UXCJcblxuXCIkU0NSSVBUX0RJUi9idWlsZC1zZGsuc2hcIiBcXFxcXG4gIFwiJFNVUEVSU0VUX1JPT1RcIlxuXG5cIiRTQ1JJUFRfRElSL2J1aWxkLXN1cGVyc2V0LWZyb250ZW5kLnNoXCIgXFxcXFxuICBcIiRTVVBFUlNFVF9ST09UXCJcblxuZWNob1xuZWNobyBcIlBhdGNoIGFuZCBmcm9udGVuZCBidWlsZHMgY29tcGxldGVkLlwiXG5gO1xuXG5jb25zdCBCVUlMRF9ET0NLRVJfU0ggPSBgIyEvdXNyL2Jpbi9lbnYgYmFzaFxuXG5zZXQgLWV1byBwaXBlZmFpbFxuXG5TVVBFUlNFVF9ST09UPVxcJHsxOj9Vc2FnZTogYnVpbGQtZG9ja2VyLWltYWdlLnNoIC9wYXRoL3RvL3N1cGVyc2V0IFtpbWFnZS10YWddfVxuSU1BR0VfVEFHPVxcJHsyOi1sb2NhbC9zdXBlcnNldC1zd2l0Y2hhYmxlOjYuMS4wfVxuXG5TQ1JJUFRfRElSPSQoXG4gIGNkIFwiJChkaXJuYW1lIFwiXFwke0JBU0hfU09VUkNFWzBdfVwiKVwiXG4gIHB3ZFxuKVxuXG5QUk9KRUNUX1JPT1Q9JChcbiAgY2QgXCIkU0NSSVBUX0RJUi8uLlwiXG4gIHB3ZFxuKVxuXG5weXRob24zIFxcXFxcbiAgXCIkUFJPSkVDVF9ST09UL3BhdGNoZXMvYXBwbHlfc3VwZXJzZXRfNl8xX3BhdGNoLnB5XCIgXFxcXFxuICBcIiRTVVBFUlNFVF9ST09UXCJcblxuXCIkUFJPSkVDVF9ST09UL3BhdGNoZXMvdmVyaWZ5X3BhdGNoLnNoXCIgXFxcXFxuICBcIiRTVVBFUlNFVF9ST09UXCJcblxuY2QgXCIkU1VQRVJTRVRfUk9PVFwiXG5cbmRvY2tlciBidWlsZCBcXFxcXG4gIC0tdGFyZ2V0IGxlYW4gXFxcXFxuICAtLXRhZyBcIiRJTUFHRV9UQUdcIiBcXFxcXG4gIC5cblxuZWNobyBcIkJ1aWx0IERvY2tlciBpbWFnZTogJElNQUdFX1RBR1wiXG5gO1xuXG5jb25zdCBSRUFETUUgPSBgIyAke1NVUEVSU0VUX1BMVUdJTl9JRH1cblxuTXVsdGktdGVuYW50LCBvcmctYWdub3N0aWMgU3VwZXJzZXQgZGFzaGJvYXJkIGVtYmVkIHBsdWdpbiAocGF0Y2gtYW5kLWJ1aWxkIHN0cmF0ZWd5KS5cblxuVGhpcyBpcyBub3QgYSBnZW5lcmF0ZWQgcGx1Z2luIGxpa2UgdGhlIEtpYmFuYSB2YXJpYW50LiBJbnN0ZWFkLCBEZWNhZiBob2xkc1xucGF0Y2ggc2NyaXB0cyB0aGF0IG1vZGlmeSBTdXBlcnNldCdzIGludGVybmFsIGVtYmVkZGVkIGZyb250ZW5kIGFuZCBlbWJlZGRlZFxuU0RLIHNvdXJjZSBmaWxlcyB0byBhZGQgYSBcXGBzd2l0Y2hEYXNoYm9hcmRcXGAgbWV0aG9kLiBUaGUgZXhpc3RpbmcgaWZyYW1lXG5lbGVtZW50LCBkb2N1bWVudCwgY29udGVudFdpbmRvdywgUmVhY3QgcnVudGltZSwgYW5kIFN3aXRjaGJvYXJkIE1lc3NhZ2VDaGFubmVsXG5hcmUgcHJlc2VydmVkIGFjcm9zcyBkYXNoYm9hcmQgc3dpdGNoZXMuXG5cbiMjIFdoYXQgaXQgcGF0Y2hlc1xuXG4tIFxcYHN1cGVyc2V0LWZyb250ZW5kL3NyYy9lbWJlZGRlZC9pbmRleC50c3hcXGAg4oCUIGFkZHMgXFxgc3dpdGNoRGFzaGJvYXJkXFxgIHRvIHRoZVxuICBTd2l0Y2hib2FyZCBjaGFubmVsOyByZXBsYWNlcyBvbmx5IFxcYERhc2hib2FyZFBhZ2VcXGAuXG4tIFxcYHN1cGVyc2V0LWVtYmVkZGVkLXNkay9zcmMvaW5kZXgudHNcXGAg4oCUIGFkZHNcbiAgXFxgZW1iZWRkZWREYXNoYm9hcmQuc3dpdGNoRGFzaGJvYXJkKGRhc2hib2FyZElkKVxcYDsgcmVxdWVzdHMgYSBndWVzdCB0b2tlbiBmb3JcbiAgdGhlIHNlbGVjdGVkIGRhc2hib2FyZDsgcmVmcmVzaGVzIGZ1dHVyZSBndWVzdCB0b2tlbnMgZm9yIHRoZSBhY3RpdmUgZGFzaGJvYXJkLlxuXG4jIyBCdWlsZFxuXG5cXGBcXGBcXGBiYXNoXG4jIEFwcGx5IHBhdGNoICsgdmVyaWZ5ICsgYnVpbGQgU0RLICsgYnVpbGQgZnJvbnRlbmRcbmJ1aWxkL3BhdGNoLWFuZC1idWlsZC5zaCAvcGF0aC90by9zdXBlcnNldFxuXG4jIE9yIGJ1aWxkIGEgRG9ja2VyIGltYWdlXG5idWlsZC9idWlsZC1kb2NrZXItaW1hZ2Uuc2ggL3BhdGgvdG8vc3VwZXJzZXQgcmVnaXN0cnkuZXhhbXBsZS5jb20vc3VwZXJzZXQtc3dpdGNoYWJsZTo2LjEuMFxuXFxgXFxgXFxgXG5cblRoZSBwYXRjaGVkIFNESyBtdXN0IGJlIHBhY2tlZCBhbmQgaW5zdGFsbGVkIGludG8gdGhlIEFuZ3VsYXIgYXBwbGljYXRpb246XG5cblxcYFxcYFxcYGJhc2hcbmNkIC9wYXRoL3RvL3N1cGVyc2V0L3N1cGVyc2V0LWVtYmVkZGVkLXNka1xubnBtIGNpICYmIG5wbSBydW4gYnVpbGQgJiYgbnBtIHBhY2tcbmNkIC9wYXRoL3RvL2FuZ3VsYXItYXBwXG5ucG0gaW5zdGFsbCAvcGF0aC90by9zdXBlcnNldC9zdXBlcnNldC1lbWJlZGRlZC1zZGsvc3VwZXJzZXQtdWktZW1iZWRkZWQtc2RrLSoudGd6XG5cXGBcXGBcXGBcblxuVmVyc2lvbjogJHtTVVBFUlNFVF9QTFVHSU5fVkVSU0lPTn1cbmA7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZnVsbCBzZXQgb2YgcGF0Y2ggYW5kIGJ1aWxkIHNjcmlwdCBmaWxlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN1cGVyc2V0UGF0Y2hGaWxlcygpOiBTdXBlcnNldFBhdGNoRmlsZVtdIHtcbiAgcmV0dXJuIFtcbiAgICB7IHBhdGg6IFwicGF0Y2hlcy9hcHBseV9zdXBlcnNldF82XzFfcGF0Y2gucHlcIiwgY29udGVudDogQVBQTFlfUEFUQ0hfUFksIGV4ZWN1dGFibGU6IHRydWUgfSxcbiAgICB7IHBhdGg6IFwicGF0Y2hlcy92ZXJpZnlfcGF0Y2guc2hcIiwgY29udGVudDogVkVSSUZZX1BBVENIX1NILCBleGVjdXRhYmxlOiB0cnVlIH0sXG4gICAgeyBwYXRoOiBcImJ1aWxkL2J1aWxkLXNkay5zaFwiLCBjb250ZW50OiBCVUlMRF9TREtfU0gsIGV4ZWN1dGFibGU6IHRydWUgfSxcbiAgICB7IHBhdGg6IFwiYnVpbGQvYnVpbGQtc3VwZXJzZXQtZnJvbnRlbmQuc2hcIiwgY29udGVudDogQlVJTERfRlJPTlRFTkRfU0gsIGV4ZWN1dGFibGU6IHRydWUgfSxcbiAgICB7IHBhdGg6IFwiYnVpbGQvcGF0Y2gtYW5kLWJ1aWxkLnNoXCIsIGNvbnRlbnQ6IFBBVENIX0FORF9CVUlMRF9TSCwgZXhlY3V0YWJsZTogdHJ1ZSB9LFxuICAgIHsgcGF0aDogXCJidWlsZC9idWlsZC1kb2NrZXItaW1hZ2Uuc2hcIiwgY29udGVudDogQlVJTERfRE9DS0VSX1NILCBleGVjdXRhYmxlOiB0cnVlIH0sXG4gICAgeyBwYXRoOiBcIlJFQURNRS5tZFwiLCBjb250ZW50OiBSRUFETUUgfSxcbiAgXTtcbn1cbiJdfQ==
|
|
838
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGVtcGxhdGVzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBc3pCQSxnREFVQztBQWgwQkQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILCtDQUE0RTtBQUM1RSxNQUFNLGNBQWMsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FnbUJ0QixDQUFDO0FBQ0YsTUFBTSxlQUFlLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBeUN2QixDQUFDO0FBQ0YsTUFBTSxZQUFZLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQTJCcEIsQ0FBQztBQUNGLE1BQU0saUJBQWlCLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBb0J6QixDQUFDO0FBQ0YsTUFBTSxrQkFBa0IsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQStCMUIsQ0FBQztBQUNGLE1BQU0sZUFBZSxHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQWdDdkIsQ0FBQztBQUNGLE1BQU0sTUFBTSxHQUFHLEtBQUssZ0NBQWtCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1dBcUMzQixxQ0FBdUI7Q0FDakMsQ0FBQztBQUNGOztHQUVHO0FBQ0gsU0FBZ0Isa0JBQWtCO0lBQzlCLE9BQU87UUFDSCxFQUFFLElBQUksRUFBRSxxQ0FBcUMsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7UUFDMUYsRUFBRSxJQUFJLEVBQUUseUJBQXlCLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFO1FBQy9FLEVBQUUsSUFBSSxFQUFFLG9CQUFvQixFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTtRQUN2RSxFQUFFLElBQUksRUFBRSxrQ0FBa0MsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTtRQUMxRixFQUFFLElBQUksRUFBRSwwQkFBMEIsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTtRQUNuRixFQUFFLElBQUksRUFBRSw2QkFBNkIsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7UUFDbkYsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7S0FDekMsQ0FBQztBQUNOLENBQUM7QUFDRCwweCtCQUEweCtCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9wbHVnaW5zL3N1cGVyc2V0L3RlbXBsYXRlc1xuICogQHN1bW1hcnkgUGF0Y2ggYW5kIGJ1aWxkIHNjcmlwdCB0ZW1wbGF0ZXMgZm9yIHRoZSBTdXBlcnNldCBlbWJlZCBwbHVnaW4uXG4gKiBAZGVzY3JpcHRpb24gSG9sZHMgYWxsIHBhdGNoIHNjcmlwdHMgKFB5dGhvbiArIEJhc2gpIGFuZCBidWlsZCBzY3JpcHRzIGFzXG4gKiBzdHJpbmcgdGVtcGxhdGVzLiBUaGVzZSBhcmUgbWF0ZXJpYWxpemVkIG9udG8gZGlzayBieSB0aGUgaW5zdGFsbGVyLiBEZWNhZlxuICogZG9lcyBub3QgZ2VuZXJhdGUgbmV3IFN1cGVyc2V0IHNvdXJjZSDigJQgaXQgcGF0Y2hlcyBleGlzdGluZyBpbnRlcm5hbCBmaWxlc1xuICogKGBzdXBlcnNldC1mcm9udGVuZC9zcmMvZW1iZWRkZWQvaW5kZXgudHN4YCBhbmRcbiAqIGBzdXBlcnNldC1lbWJlZGRlZC1zZGsvc3JjL2luZGV4LnRzYCkgZm9sbG93aW5nIHRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb25cbiAqIGZyb20gREVDQUYtNDAgwqc5LlxuICpcbiAqIFRoZSBwYXRjaCBhZGRzIGEgYHN3aXRjaERhc2hib2FyZGAgbWV0aG9kIHRvIFN1cGVyc2V0J3MgZXhpc3RpbmcgU3dpdGNoYm9hcmRcbiAqIGNoYW5uZWwsIHJlcGxhY2luZyBvbmx5IGBEYXNoYm9hcmRQYWdlYCB3aGlsZSBrZWVwaW5nIHRoZSBpZnJhbWUgZWxlbWVudCxcbiAqIGRvY3VtZW50LCBjb250ZW50V2luZG93LCBSZWFjdCBydW50aW1lLCBhbmQgbWVzc2FnZSBjaGFubmVsIGFsaXZlLlxuICovXG5pbXBvcnQgeyBTVVBFUlNFVF9QTFVHSU5fSUQsIFNVUEVSU0VUX1BMVUdJTl9WRVJTSU9OIH0gZnJvbSBcIi4vbWFuaWZlc3QuanNcIjtcbmNvbnN0IEFQUExZX1BBVENIX1BZID0gYCMhL3Vzci9iaW4vZW52IHB5dGhvbjNcblxuZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhbm5vdGF0aW9uc1xuXG5pbXBvcnQgYXJncGFyc2VcbmltcG9ydCByZVxuaW1wb3J0IHN5c1xuZnJvbSBwYXRobGliIGltcG9ydCBQYXRoXG5cblxuRlJPTlRFTkRfRklMRSA9IFBhdGgoXCJzdXBlcnNldC1mcm9udGVuZC9zcmMvZW1iZWRkZWQvaW5kZXgudHN4XCIpXG5TREtfRklMRSA9IFBhdGgoXCJzdXBlcnNldC1lbWJlZGRlZC1zZGsvc3JjL2luZGV4LnRzXCIpXG5cblxuY2xhc3MgUGF0Y2hFcnJvcihSdW50aW1lRXJyb3IpOlxuICAgIHBhc3NcblxuXG5kZWYgcmVwbGFjZV9vbmNlKFxuICAgIGNvbnRlbnQ6IHN0cixcbiAgICBvbGQ6IHN0cixcbiAgICBuZXc6IHN0cixcbiAgICBkZXNjcmlwdGlvbjogc3RyLFxuKSAtPiBzdHI6XG4gICAgY291bnQgPSBjb250ZW50LmNvdW50KG9sZClcblxuICAgIGlmIGNvdW50ICE9IDE6XG4gICAgICAgIHJhaXNlIFBhdGNoRXJyb3IoXG4gICAgICAgICAgICBmXCJ7ZGVzY3JpcHRpb259OiBleHBlY3RlZCBleGFjdGx5IG9uZSBvY2N1cnJlbmNlLCBmb3VuZCB7Y291bnR9XCJcbiAgICAgICAgKVxuXG4gICAgcmV0dXJuIGNvbnRlbnQucmVwbGFjZShvbGQsIG5ldywgMSlcblxuXG5kZWYgcmVwbGFjZV9yZWdleF9vbmNlKFxuICAgIGNvbnRlbnQ6IHN0cixcbiAgICBwYXR0ZXJuOiByZS5QYXR0ZXJuW3N0cl0sXG4gICAgcmVwbGFjZW1lbnQ6IHN0cixcbiAgICBkZXNjcmlwdGlvbjogc3RyLFxuKSAtPiBzdHI6XG4gICAgdXBkYXRlZCwgY291bnQgPSBwYXR0ZXJuLnN1Ym4ocmVwbGFjZW1lbnQsIGNvbnRlbnQsIGNvdW50PTEpXG5cbiAgICBpZiBjb3VudCAhPSAxOlxuICAgICAgICByYWlzZSBQYXRjaEVycm9yKFxuICAgICAgICAgICAgZlwie2Rlc2NyaXB0aW9ufTogZXhwZWN0ZWQgZXhhY3RseSBvbmUgbWF0Y2gsIGZvdW5kIHtjb3VudH1cIlxuICAgICAgICApXG5cbiAgICByZXR1cm4gdXBkYXRlZFxuXG5cbmRlZiBwYXRjaF9yZWFjdF9pbXBvcnQoY29udGVudDogc3RyKSAtPiBzdHI6XG4gICAgcmVhY3RfaW1wb3J0X3BhdHRlcm4gPSByZS5jb21waWxlKFxuICAgICAgICByXCJpbXBvcnRcXFxccypcXFxce1xcXFxzKihbXn1dKylcXFxccypcXFxcfVxcXFxzKmZyb21cXFxccyoncmVhY3QnO1wiXG4gICAgKVxuXG4gICAgbWF0Y2ggPSByZWFjdF9pbXBvcnRfcGF0dGVybi5zZWFyY2goY29udGVudClcblxuICAgIGlmIG5vdCBtYXRjaDpcbiAgICAgICAgcmFpc2UgUGF0Y2hFcnJvcihcIkNvdWxkIG5vdCBsb2NhdGUgdGhlIG5hbWVkIFJlYWN0IGltcG9ydFwiKVxuXG4gICAgaW1wb3J0cyA9IFtcbiAgICAgICAgdmFsdWUuc3RyaXAoKVxuICAgICAgICBmb3IgdmFsdWUgaW4gbWF0Y2guZ3JvdXAoMSkucmVwbGFjZShcIlxcXFxuXCIsIFwiIFwiKS5zcGxpdChcIixcIilcbiAgICAgICAgaWYgdmFsdWUuc3RyaXAoKVxuICAgIF1cblxuICAgIHJlcXVpcmVkX2ltcG9ydHMgPSBbXCJsYXp5XCIsIFwiU3VzcGVuc2VcIiwgXCJ1c2VFZmZlY3RcIiwgXCJ1c2VTdGF0ZVwiXVxuXG4gICAgZm9yIHJlcXVpcmVkX2ltcG9ydCBpbiByZXF1aXJlZF9pbXBvcnRzOlxuICAgICAgICBpZiByZXF1aXJlZF9pbXBvcnQgbm90IGluIGltcG9ydHM6XG4gICAgICAgICAgICBpbXBvcnRzLmFwcGVuZChyZXF1aXJlZF9pbXBvcnQpXG5cbiAgICByZXBsYWNlbWVudCA9IChcbiAgICAgICAgXCJpbXBvcnQge1xcXFxuICBcIlxuICAgICAgICArIFwiLFxcXFxuICBcIi5qb2luKGltcG9ydHMpXG4gICAgICAgICsgXCIsXFxcXG59IGZyb20gJ3JlYWN0JztcIlxuICAgIClcblxuICAgIHJldHVybiAoXG4gICAgICAgIGNvbnRlbnRbOiBtYXRjaC5zdGFydCgpXVxuICAgICAgICArIHJlcGxhY2VtZW50XG4gICAgICAgICsgY29udGVudFttYXRjaC5lbmQoKSA6XVxuICAgIClcblxuXG5kZWYgbG9jYXRlX2VtYmVkZGVkX2NvbXBvbmVudChcbiAgICBjb250ZW50OiBzdHIsXG4pIC0+IHR1cGxlW3JlLk1hdGNoW3N0cl0sIHN0cl06XG4gICAgcGF0dGVybiA9IHJlLmNvbXBpbGUoXG4gICAgICAgIHJcImNvbnN0XFxcXHMrKFtBLVphLXowLTlfXSspXFxcXHMqPVxcXFxzKlxcXFwoXFxcXClcXFxccyo9PlxcXFxzKlxcXFx7Lio/XFxcXH07XFxcXHMqXCJcbiAgICAgICAgclwiKD89Y29uc3RcXFxccytFbWJlZGRlZFJvdXRlKVwiLFxuICAgICAgICByZS5ET1RBTEwsXG4gICAgKVxuXG4gICAgbWF0Y2ggPSBwYXR0ZXJuLnNlYXJjaChjb250ZW50KVxuXG4gICAgaWYgbWF0Y2g6XG4gICAgICAgIHJldHVybiBtYXRjaCwgbWF0Y2guZ3JvdXAoMSlcblxuICAgIHJhaXNlIFBhdGNoRXJyb3IoXG4gICAgICAgIFwiQ291bGQgbm90IGZpbmQgYW4gZW1iZWRkZWQgZGFzaGJvYXJkIGNvbXBvbmVudCBiZWZvcmUgRW1iZWRkZWRSb3V0ZVwiXG4gICAgKVxuXG5cbmRlZiBwYXRjaF9mcm9udGVuZChmcm9udGVuZF9wYXRoOiBQYXRoKSAtPiBOb25lOlxuICAgIGNvbnRlbnQgPSBmcm9udGVuZF9wYXRoLnJlYWRfdGV4dChlbmNvZGluZz1cInV0Zi04XCIpXG5cbiAgICBpZiBcIlNVUEVSU0VUX1NXSVRDSEFCTEVfRU1CRURfUEFUQ0hcIiBpbiBjb250ZW50OlxuICAgICAgICBwcmludChmXCJBbHJlYWR5IHBhdGNoZWQ6IHtmcm9udGVuZF9wYXRofVwiKVxuICAgICAgICByZXR1cm5cblxuICAgIGNvbnRlbnQgPSBwYXRjaF9yZWFjdF9pbXBvcnQoY29udGVudClcblxuICAgIGNvbXBvbmVudF9tYXRjaCwgY29tcG9uZW50X25hbWUgPSBsb2NhdGVfZW1iZWRkZWRfY29tcG9uZW50KFxuICAgICAgICBjb250ZW50XG4gICAgKVxuXG4gICAgcmVwbGFjZW1lbnRfY29tcG9uZW50ID0gXCJcIlwiLy8gU1VQRVJTRVRfU1dJVENIQUJMRV9FTUJFRF9QQVRDSFxuLy9cbi8vIEFsbG93cyB0aGUgZXhpc3RpbmcgZW1iZWRkZWQgU3VwZXJzZXQgZG9jdW1lbnQgdG8gcmVwbGFjZSBEYXNoYm9hcmRQYWdlXG4vLyB3aXRob3V0IG5hdmlnYXRpbmcgb3IgcmVjcmVhdGluZyB0aGUgaWZyYW1lLlxuLy9cbi8vIFNlY3VyaXR5OlxuLy8gLSBUaGlzIG1ldGhvZCBpcyBleHBvc2VkIG9ubHkgdGhyb3VnaCBTdXBlcnNldCdzIGV4aXN0aW5nIFN3aXRjaGJvYXJkXG4vLyAgIE1lc3NhZ2VDaGFubmVsLlxuLy8gLSBUaGUgaG9zdCBhcHBsaWNhdGlvbiBtdXN0IG9idGFpbiBhIGd1ZXN0IHRva2VuIGZvciB0aGUgdGFyZ2V0IGRhc2hib2FyZC5cbi8vIC0gU3VwZXJzZXQncyBub3JtYWwgQWxsb3dlZCBEb21haW5zIHZhbGlkYXRpb24gcmVtYWlucyBpbiBlZmZlY3QuXG5cbmludGVyZmFjZSBTd2l0Y2hEYXNoYm9hcmRQYXlsb2FkIHtcbiAgZGFzaGJvYXJkSWQ6IHN0cmluZztcbiAgZ3Vlc3RUb2tlbjogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgU3dpdGNoRGFzaGJvYXJkUmVzdWx0IHtcbiAgZGFzaGJvYXJkSWQ6IHN0cmluZztcbiAgYWNjZXB0ZWQ6IHRydWU7XG59XG5cbnR5cGUgRGFzaGJvYXJkU3dpdGNoSGFuZGxlciA9IChcbiAgcGF5bG9hZDogU3dpdGNoRGFzaGJvYXJkUGF5bG9hZCxcbikgPT4gUHJvbWlzZTxTd2l0Y2hEYXNoYm9hcmRSZXN1bHQ+O1xuXG5sZXQgZGFzaGJvYXJkU3dpdGNoSGFuZGxlcjogRGFzaGJvYXJkU3dpdGNoSGFuZGxlciB8IHVuZGVmaW5lZDtcblxuY29uc3QgX19DT01QT05FTlRfTkFNRV9fID0gKCkgPT4ge1xuICBjb25zdCB1aUNvbmZpZyA9IHVzZVVpQ29uZmlnKCk7XG5cbiAgY29uc3QgW2Rhc2hib2FyZElkLCBzZXREYXNoYm9hcmRJZF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihcbiAgICBib290c3RyYXBEYXRhLmVtYmVkZGVkIS5kYXNoYm9hcmRfaWQsXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkYXNoYm9hcmRTd2l0Y2hIYW5kbGVyID0gYXN5bmMgKHtcbiAgICAgIGRhc2hib2FyZElkOiByZXF1ZXN0ZWREYXNoYm9hcmRJZCxcbiAgICAgIGd1ZXN0VG9rZW4sXG4gICAgfTogU3dpdGNoRGFzaGJvYXJkUGF5bG9hZCkgPT4ge1xuICAgICAgY29uc3QgbmV4dERhc2hib2FyZElkID0gcmVxdWVzdGVkRGFzaGJvYXJkSWQudHJpbSgpO1xuXG4gICAgICBpZiAoIW5leHREYXNoYm9hcmRJZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ2Rhc2hib2FyZElkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICB0eXBlb2YgZ3Vlc3RUb2tlbiAhPT0gJ3N0cmluZycgfHxcbiAgICAgICAgZ3Vlc3RUb2tlbi50cmltKCkubGVuZ3RoID09PSAwXG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdndWVzdFRva2VuIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgc2V0RGFzaGJvYXJkSWQobnVsbCk7XG5cbiAgICAgIGRpc3BsYXllZFVuYXV0aG9yaXplZFRvYXN0ID0gZmFsc2U7XG5cbiAgICAgIHNldHVwR3Vlc3RDbGllbnQoZ3Vlc3RUb2tlbik7XG5cbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHJlc29sdmUoKSk7XG4gICAgICB9KTtcblxuICAgICAgc2V0RGFzaGJvYXJkSWQobmV4dERhc2hib2FyZElkKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGFzaGJvYXJkSWQ6IG5leHREYXNoYm9hcmRJZCxcbiAgICAgICAgYWNjZXB0ZWQ6IHRydWUsXG4gICAgICB9O1xuICAgIH07XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZGFzaGJvYXJkU3dpdGNoSGFuZGxlciA9IHVuZGVmaW5lZDtcbiAgICB9O1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXVpQ29uZmlnPy5lbWl0RGF0YU1hc2tzKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGxldCBwcmV2aW91c0RhdGFNYXNrID0gc3RvcmUuZ2V0U3RhdGUoKS5kYXRhTWFzaztcblxuICAgIHJldHVybiBzdG9yZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc3QgY3VycmVudERhdGFNYXNrID0gc3RvcmUuZ2V0U3RhdGUoKS5kYXRhTWFzaztcblxuICAgICAgaWYgKHByZXZpb3VzRGF0YU1hc2sgIT09IGN1cnJlbnREYXRhTWFzaykge1xuICAgICAgICBTd2l0Y2hib2FyZC5lbWl0KCdvYnNlcnZlRGF0YU1hc2snLCB7XG4gICAgICAgICAgLi4uY3VycmVudERhdGFNYXNrLFxuICAgICAgICAgIC4uLmdldERhdGFNYXNrQ2hhbmdlVHJpZ2dlcihcbiAgICAgICAgICAgIGN1cnJlbnREYXRhTWFzayxcbiAgICAgICAgICAgIHByZXZpb3VzRGF0YU1hc2ssXG4gICAgICAgICAgKSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcHJldmlvdXNEYXRhTWFzayA9IGN1cnJlbnREYXRhTWFzaztcbiAgICAgIH1cbiAgICB9KTtcbiAgfSwgW3VpQ29uZmlnPy5lbWl0RGF0YU1hc2tzXSk7XG5cbiAgaWYgKCFkYXNoYm9hcmRJZCkge1xuICAgIHJldHVybiA8TG9hZGluZyAvPjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPExhenlEYXNoYm9hcmRQYWdlXG4gICAgICBrZXk9e2Rhc2hib2FyZElkfVxuICAgICAgaWRPclNsdWc9e2Rhc2hib2FyZElkfVxuICAgIC8+XG4gICk7XG59O1xuXCJcIlwiLnJlcGxhY2UoXCJfX0NPTVBPTkVOVF9OQU1FX19cIiwgY29tcG9uZW50X25hbWUpXG5cbiAgICBjb250ZW50ID0gKFxuICAgICAgICBjb250ZW50WzogY29tcG9uZW50X21hdGNoLnN0YXJ0KCldXG4gICAgICAgICsgcmVwbGFjZW1lbnRfY29tcG9uZW50XG4gICAgICAgICsgY29udGVudFtjb21wb25lbnRfbWF0Y2guZW5kKCkgOl1cbiAgICApXG5cbiAgICBzd2l0Y2hib2FyZF9hbmNob3JfY2FuZGlkYXRlcyA9IFtcbiAgICAgICAgKFxuICAgICAgICAgICAgXCIgICAgU3dpdGNoYm9hcmQuZGVmaW5lTWV0aG9kKFwiXG4gICAgICAgICAgICBcIidnZXRTY3JvbGxTaXplJywgZW1iZWRkZWRBcGkuZ2V0U2Nyb2xsU2l6ZSk7XCJcbiAgICAgICAgKSxcbiAgICAgICAgKFxuICAgICAgICAgICAgXCIgICAgU3dpdGNoYm9hcmQuZGVmaW5lTWV0aG9kKFxcXFxuXCJcbiAgICAgICAgICAgIFwiICAgICAgJ2dldFNjcm9sbFNpemUnLFxcXFxuXCJcbiAgICAgICAgICAgIFwiICAgICAgZW1iZWRkZWRBcGkuZ2V0U2Nyb2xsU2l6ZSxcXFxcblwiXG4gICAgICAgICAgICBcIiAgICApO1wiXG4gICAgICAgICksXG4gICAgXVxuXG4gICAgc3dpdGNoYm9hcmRfbWV0aG9kID0gXCJcIlwiICAgIFN3aXRjaGJvYXJkLmRlZmluZU1ldGhvZChcbiAgICAgICdzd2l0Y2hEYXNoYm9hcmQnLFxuICAgICAgYXN5bmMgKFxuICAgICAgICBwYXlsb2FkOiBTd2l0Y2hEYXNoYm9hcmRQYXlsb2FkLFxuICAgICAgKTogUHJvbWlzZTxTd2l0Y2hEYXNoYm9hcmRSZXN1bHQ+ID0+IHtcbiAgICAgICAgaWYgKCFkYXNoYm9hcmRTd2l0Y2hIYW5kbGVyKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgJ1RoZSBlbWJlZGRlZCBkYXNoYm9hcmQgaXMgbm90IHJlYWR5IHRvIHN3aXRjaCcsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkYXNoYm9hcmRTd2l0Y2hIYW5kbGVyKHBheWxvYWQpO1xuICAgICAgfSxcbiAgICApO1xuXG5cIlwiXCJcblxuICAgIGFuY2hvcl9mb3VuZCA9IEZhbHNlXG5cbiAgICBmb3IgYW5jaG9yIGluIHN3aXRjaGJvYXJkX2FuY2hvcl9jYW5kaWRhdGVzOlxuICAgICAgICBpZiBjb250ZW50LmNvdW50KGFuY2hvcikgPT0gMTpcbiAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgYW5jaG9yLFxuICAgICAgICAgICAgICAgIHN3aXRjaGJvYXJkX21ldGhvZCArIGFuY2hvcixcbiAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgYW5jaG9yX2ZvdW5kID0gVHJ1ZVxuICAgICAgICAgICAgYnJlYWtcblxuICAgIGlmIG5vdCBhbmNob3JfZm91bmQ6XG4gICAgICAgIHJhaXNlIFBhdGNoRXJyb3IoXG4gICAgICAgICAgICBcIkNvdWxkIG5vdCBsb2NhdGUgdGhlIGdldFNjcm9sbFNpemUgU3dpdGNoYm9hcmQgbWV0aG9kXCJcbiAgICAgICAgKVxuXG4gICAgZnJvbnRlbmRfcGF0aC53cml0ZV90ZXh0KGNvbnRlbnQsIGVuY29kaW5nPVwidXRmLThcIilcbiAgICBwcmludChmXCJQYXRjaGVkOiB7ZnJvbnRlbmRfcGF0aH1cIilcblxuXG5kZWYgcGF0Y2hfZ3Vlc3RfdG9rZW5fZmV0Y2hfdHlwZShjb250ZW50OiBzdHIpIC0+IHN0cjpcbiAgICBjYW5kaWRhdGVzID0gW1xuICAgICAgICBcImV4cG9ydCB0eXBlIEd1ZXN0VG9rZW5GZXRjaEZuID0gKCkgPT4gUHJvbWlzZTxzdHJpbmc+O1wiLFxuICAgICAgICAoXG4gICAgICAgICAgICBcImV4cG9ydCB0eXBlIEd1ZXN0VG9rZW5GZXRjaEZuID0gXCJcbiAgICAgICAgICAgIFwiKCkgPT4gUHJvbWlzZTxzdHJpbmc+O1wiXG4gICAgICAgICksXG4gICAgXVxuXG4gICAgcmVwbGFjZW1lbnQgPSBcIlwiXCIvLyBTVVBFUlNFVF9TV0lUQ0hBQkxFX0VNQkVEX1NES19QQVRDSFxuLy9cbi8vIGRhc2hib2FyZElkIGlzIHVuZGVmaW5lZCBmb3IgdGhlIGluaXRpYWwgZGFzaGJvYXJkIGJvb3RzdHJhcC5cbi8vIEFmdGVyIGEgc3VjY2Vzc2Z1bCBkYXNoYm9hcmQgc3dpdGNoLCB0b2tlbiByZWZyZXNoZXMgcmVjZWl2ZSB0aGUgYWN0aXZlXG4vLyBkYXNoYm9hcmQgVVVJRC5cbmV4cG9ydCB0eXBlIEd1ZXN0VG9rZW5GZXRjaEZuID0gKFxuICBkYXNoYm9hcmRJZD86IHN0cmluZyxcbikgPT4gUHJvbWlzZTxzdHJpbmc+O1wiXCJcIlxuXG4gICAgZm9yIGNhbmRpZGF0ZSBpbiBjYW5kaWRhdGVzOlxuICAgICAgICBpZiBjb250ZW50LmNvdW50KGNhbmRpZGF0ZSkgPT0gMTpcbiAgICAgICAgICAgIHJldHVybiBjb250ZW50LnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgY2FuZGlkYXRlLFxuICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50LFxuICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICApXG5cbiAgICByYWlzZSBQYXRjaEVycm9yKFwiQ291bGQgbm90IGxvY2F0ZSBHdWVzdFRva2VuRmV0Y2hGblwiKVxuXG5cbmRlZiBwYXRjaF9lbWJlZGRlZF9kYXNoYm9hcmRfdHlwZShjb250ZW50OiBzdHIpIC0+IHN0cjpcbiAgICB0eXBlX3BhdHRlcm4gPSByZS5jb21waWxlKFxuICAgICAgICByXCIoZXhwb3J0XFxcXHMrKD86aW50ZXJmYWNlfHR5cGUpXFxcXHMrRW1iZWRkZWREYXNoYm9hcmRcIlxuICAgICAgICByXCIuKj9cXFxceykoLio/KShcXFxcblxcXFx9OylcIixcbiAgICAgICAgcmUuRE9UQUxMLFxuICAgIClcblxuICAgIG1hdGNoID0gdHlwZV9wYXR0ZXJuLnNlYXJjaChjb250ZW50KVxuXG4gICAgaWYgbm90IG1hdGNoOlxuICAgICAgICByYWlzZSBQYXRjaEVycm9yKFxuICAgICAgICAgICAgXCJDb3VsZCBub3QgbG9jYXRlIHRoZSBFbWJlZGRlZERhc2hib2FyZCBwdWJsaWMgdHlwZVwiXG4gICAgICAgIClcblxuICAgIGJvZHkgPSBtYXRjaC5ncm91cCgyKVxuXG4gICAgaWYgXCJzd2l0Y2hEYXNoYm9hcmQ6XCIgaW4gYm9keTpcbiAgICAgICAgcmV0dXJuIGNvbnRlbnRcblxuICAgIG1ldGhvZCA9IFwiXCJcIlxuICAvKipcbiAgICogUmVwbGFjZXMgRGFzaGJvYXJkUGFnZSBpbiB0aGUgZXhpc3RpbmcgaWZyYW1lIGRvY3VtZW50LlxuICAgKlxuICAgKiBUaGUgdmFsdWUgbXVzdCBiZSB0aGUgdGFyZ2V0IGRhc2hib2FyZCBVVUlEL2lkIGFjY2VwdGVkIGJ5XG4gICAqIERhc2hib2FyZFBhZ2UsIG5vdCB0aGUgZW1iZWRkZWQtY29uZmlndXJhdGlvbiBVVUlEIHVzZWQgaW4gdGhlXG4gICAqIGluaXRpYWwgL2VtYmVkZGVkLzp1dWlkIFVSTC5cbiAgICovXG4gIHN3aXRjaERhc2hib2FyZDogKFxuICAgIGRhc2hib2FyZElkOiBzdHJpbmcsXG4gICkgPT4gUHJvbWlzZTx7XG4gICAgZGFzaGJvYXJkSWQ6IHN0cmluZztcbiAgICBhY2NlcHRlZDogdHJ1ZTtcbiAgfT47XG5cIlwiXCJcblxuICAgIHVwZGF0ZWRfdHlwZSA9IChcbiAgICAgICAgbWF0Y2guZ3JvdXAoMSlcbiAgICAgICAgKyBib2R5LnJzdHJpcCgpXG4gICAgICAgICsgXCJcXFxcblwiXG4gICAgICAgICsgbWV0aG9kLnJzdHJpcCgpXG4gICAgICAgICsgbWF0Y2guZ3JvdXAoMylcbiAgICApXG5cbiAgICByZXR1cm4gKFxuICAgICAgICBjb250ZW50WzogbWF0Y2guc3RhcnQoKV1cbiAgICAgICAgKyB1cGRhdGVkX3R5cGVcbiAgICAgICAgKyBjb250ZW50W21hdGNoLmVuZCgpIDpdXG4gICAgKVxuXG5cbmRlZiBwYXRjaF9pbml0aWFsX2d1ZXN0X3Rva2VuX2ZldGNoKGNvbnRlbnQ6IHN0cikgLT4gc3RyOlxuICAgIGNhbmRpZGF0ZXMgPSBbXG4gICAgICAgIFwiZmV0Y2hHdWVzdFRva2VuKCksXCIsXG4gICAgICAgIFwiYXdhaXQgZmV0Y2hHdWVzdFRva2VuKCksXCIsXG4gICAgXVxuXG4gICAgZm9yIGNhbmRpZGF0ZSBpbiBjYW5kaWRhdGVzOlxuICAgICAgICBpZiBjb250ZW50LmNvdW50KGNhbmRpZGF0ZSkgPj0gMTpcbiAgICAgICAgICAgIHJldHVybiBjb250ZW50LnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgY2FuZGlkYXRlLFxuICAgICAgICAgICAgICAgIGNhbmRpZGF0ZS5yZXBsYWNlKFxuICAgICAgICAgICAgICAgICAgICBcImZldGNoR3Vlc3RUb2tlbigpXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiZmV0Y2hHdWVzdFRva2VuKHVuZGVmaW5lZClcIixcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICApXG5cbiAgICByYWlzZSBQYXRjaEVycm9yKFxuICAgICAgICBcIkNvdWxkIG5vdCBsb2NhdGUgdGhlIGluaXRpYWwgZmV0Y2hHdWVzdFRva2VuIGNhbGxcIlxuICAgIClcblxuXG5kZWYgcGF0Y2hfZ3Vlc3RfdG9rZW5fcmVmcmVzaChjb250ZW50OiBzdHIpIC0+IHN0cjpcbiAgICBwYXR0ZXJucyA9IFtcbiAgICAgICAgcmUuY29tcGlsZShcbiAgICAgICAgICAgIHJcImFzeW5jIGZ1bmN0aW9uIHJlZnJlc2hHdWVzdFRva2VuXFxcXChcXFxcKSBcXFxce1xcXFxzKlwiXG4gICAgICAgICAgICByXCJjb25zdCBuZXdHdWVzdFRva2VuID0gYXdhaXQgZmV0Y2hHdWVzdFRva2VuXFxcXChcXFxcKTtcXFxccypcIlxuICAgICAgICAgICAgclwib3VyUG9ydFxcXFwuZW1pdFxcXFwoXCJcbiAgICAgICAgICAgIHJcIidndWVzdFRva2VuJyxcXFxccypcXFxce1xcXFxzKmd1ZXN0VG9rZW46XFxcXHMqbmV3R3Vlc3RUb2tlblxcXFxzKlxcXFx9XCJcbiAgICAgICAgICAgIHJcIlxcXFwpO1xcXFxzKlwiXG4gICAgICAgICAgICByXCJzZXRUaW1lb3V0XFxcXChcIlxuICAgICAgICAgICAgclwicmVmcmVzaEd1ZXN0VG9rZW4sXFxcXHMqXCJcbiAgICAgICAgICAgIHJcImdldEd1ZXN0VG9rZW5SZWZyZXNoVGltaW5nXFxcXChuZXdHdWVzdFRva2VuXFxcXClcIlxuICAgICAgICAgICAgclwiXFxcXCk7XFxcXHMqXCJcbiAgICAgICAgICAgIHJcIlxcXFx9XCIsXG4gICAgICAgICAgICByZS5ET1RBTEwsXG4gICAgICAgICksXG4gICAgICAgIHJlLmNvbXBpbGUoXG4gICAgICAgICAgICByXCJjb25zdCByZWZyZXNoR3Vlc3RUb2tlbiA9IGFzeW5jIFxcXFwoXFxcXCkgPT4gXFxcXHtcXFxccypcIlxuICAgICAgICAgICAgclwiY29uc3QgbmV3R3Vlc3RUb2tlbiA9IGF3YWl0IGZldGNoR3Vlc3RUb2tlblxcXFwoXFxcXCk7XFxcXHMqXCJcbiAgICAgICAgICAgIHJcIm91clBvcnRcXFxcLmVtaXRcXFxcKFwiXG4gICAgICAgICAgICByXCInZ3Vlc3RUb2tlbicsXFxcXHMqXFxcXHtcXFxccypndWVzdFRva2VuOlxcXFxzKm5ld0d1ZXN0VG9rZW5cXFxccypcXFxcfVwiXG4gICAgICAgICAgICByXCJcXFxcKTtcXFxccypcIlxuICAgICAgICAgICAgclwic2V0VGltZW91dFxcXFwoXCJcbiAgICAgICAgICAgIHJcInJlZnJlc2hHdWVzdFRva2VuLFxcXFxzKlwiXG4gICAgICAgICAgICByXCJnZXRHdWVzdFRva2VuUmVmcmVzaFRpbWluZ1xcXFwobmV3R3Vlc3RUb2tlblxcXFwpXCJcbiAgICAgICAgICAgIHJcIlxcXFwpO1xcXFxzKlwiXG4gICAgICAgICAgICByXCJcXFxcfTtcIixcbiAgICAgICAgICAgIHJlLkRPVEFMTCxcbiAgICAgICAgKSxcbiAgICBdXG5cbiAgICByZXBsYWNlbWVudCA9IFwiXCJcImxldCBhY3RpdmVEYXNoYm9hcmRJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIGFzeW5jIGZ1bmN0aW9uIHJlZnJlc2hHdWVzdFRva2VuKCkge1xuICAgIGNvbnN0IG5ld0d1ZXN0VG9rZW4gPSBhd2FpdCBmZXRjaEd1ZXN0VG9rZW4oXG4gICAgICBhY3RpdmVEYXNoYm9hcmRJZCxcbiAgICApO1xuXG4gICAgb3VyUG9ydC5lbWl0KCdndWVzdFRva2VuJywge1xuICAgICAgZ3Vlc3RUb2tlbjogbmV3R3Vlc3RUb2tlbixcbiAgICB9KTtcblxuICAgIHNldFRpbWVvdXQoXG4gICAgICByZWZyZXNoR3Vlc3RUb2tlbixcbiAgICAgIGdldEd1ZXN0VG9rZW5SZWZyZXNoVGltaW5nKG5ld0d1ZXN0VG9rZW4pLFxuICAgICk7XG4gIH1cIlwiXCJcblxuICAgIGZvciBwYXR0ZXJuIGluIHBhdHRlcm5zOlxuICAgICAgICB1cGRhdGVkLCBjb3VudCA9IHBhdHRlcm4uc3VibihcbiAgICAgICAgICAgIHJlcGxhY2VtZW50LFxuICAgICAgICAgICAgY29udGVudCxcbiAgICAgICAgICAgIGNvdW50PTEsXG4gICAgICAgIClcblxuICAgICAgICBpZiBjb3VudCA9PSAxOlxuICAgICAgICAgICAgcmV0dXJuIHVwZGF0ZWRcblxuICAgIHJhaXNlIFBhdGNoRXJyb3IoXG4gICAgICAgIFwiQ291bGQgbm90IGxvY2F0ZSB0aGUgZ3Vlc3QtdG9rZW4gcmVmcmVzaCBmdW5jdGlvblwiXG4gICAgKVxuXG5cbmRlZiBwYXRjaF9zZGtfZnVuY3Rpb25zKGNvbnRlbnQ6IHN0cikgLT4gc3RyOlxuICAgIGFuY2hvcl9jYW5kaWRhdGVzID0gW1xuICAgICAgICAoXG4gICAgICAgICAgICBcIiAgY29uc3QgZ2V0U2Nyb2xsU2l6ZSA9ICgpID0+IFwiXG4gICAgICAgICAgICBcIm91clBvcnQuZ2V0PFNpemU+KCdnZXRTY3JvbGxTaXplJyk7XCJcbiAgICAgICAgKSxcbiAgICAgICAgKFxuICAgICAgICAgICAgXCIgIGNvbnN0IGdldFNjcm9sbFNpemUgPSAoKSA9PlxcXFxuXCJcbiAgICAgICAgICAgIFwiICAgIG91clBvcnQuZ2V0PFNpemU+KCdnZXRTY3JvbGxTaXplJyk7XCJcbiAgICAgICAgKSxcbiAgICBdXG5cbiAgICBzd2l0Y2hfZnVuY3Rpb24gPSBcIlwiXCIgIGNvbnN0IHN3aXRjaERhc2hib2FyZCA9IGFzeW5jIChcbiAgICBkYXNoYm9hcmRJZDogc3RyaW5nLFxuICApOiBQcm9taXNlPHtcbiAgICBkYXNoYm9hcmRJZDogc3RyaW5nO1xuICAgIGFjY2VwdGVkOiB0cnVlO1xuICB9PiA9PiB7XG4gICAgY29uc3Qgbm9ybWFsaXplZERhc2hib2FyZElkID0gZGFzaGJvYXJkSWQudHJpbSgpO1xuXG4gICAgaWYgKCFub3JtYWxpemVkRGFzaGJvYXJkSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ2Rhc2hib2FyZElkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgZ3Vlc3RUb2tlbiA9IGF3YWl0IGZldGNoR3Vlc3RUb2tlbihcbiAgICAgIG5vcm1hbGl6ZWREYXNoYm9hcmRJZCxcbiAgICApO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgb3VyUG9ydC5nZXQ8e1xuICAgICAgZGFzaGJvYXJkSWQ6IHN0cmluZztcbiAgICAgIGFjY2VwdGVkOiB0cnVlO1xuICAgIH0+KCdzd2l0Y2hEYXNoYm9hcmQnLCB7XG4gICAgICBkYXNoYm9hcmRJZDogbm9ybWFsaXplZERhc2hib2FyZElkLFxuICAgICAgZ3Vlc3RUb2tlbixcbiAgICB9KTtcblxuICAgIGFjdGl2ZURhc2hib2FyZElkID0gbm9ybWFsaXplZERhc2hib2FyZElkO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuXCJcIlwiXG5cbiAgICBmb3IgYW5jaG9yIGluIGFuY2hvcl9jYW5kaWRhdGVzOlxuICAgICAgICBpZiBjb250ZW50LmNvdW50KGFuY2hvcikgPT0gMTpcbiAgICAgICAgICAgIHJldHVybiBjb250ZW50LnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgYW5jaG9yLFxuICAgICAgICAgICAgICAgIHN3aXRjaF9mdW5jdGlvbiArIGFuY2hvcixcbiAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgKVxuXG4gICAgcmFpc2UgUGF0Y2hFcnJvcihcbiAgICAgICAgXCJDb3VsZCBub3QgbG9jYXRlIHRoZSBTREsgZ2V0U2Nyb2xsU2l6ZSBmdW5jdGlvblwiXG4gICAgKVxuXG5cbmRlZiBwYXRjaF9zZGtfcmV0dXJuX29iamVjdChjb250ZW50OiBzdHIpIC0+IHN0cjpcbiAgICBjYW5kaWRhdGVzID0gW1xuICAgICAgICBcIiAgICBzZXRUaGVtZU1vZGUsXFxcXG4gIH07XCIsXG4gICAgICAgIFwiICAgIHNldFRoZW1lTW9kZSxcXFxcbiAgICB1bm1vdW50LFxcXFxuICB9O1wiLFxuICAgICAgICBcIiAgICB1bm1vdW50LFxcXFxuICAgIHNldFRoZW1lTW9kZSxcXFxcbiAgfTtcIixcbiAgICBdXG5cbiAgICBmb3IgY2FuZGlkYXRlIGluIGNhbmRpZGF0ZXM6XG4gICAgICAgIGlmIGNvbnRlbnQuY291bnQoY2FuZGlkYXRlKSA9PSAxOlxuICAgICAgICAgICAgbGluZXMgPSBjYW5kaWRhdGUuc3BsaXRsaW5lcygpXG5cbiAgICAgICAgICAgIGNsb3NpbmcgPSBsaW5lcy5wb3AoKVxuICAgICAgICAgICAgYm9keSA9IFwiXFxcXG5cIi5qb2luKGxpbmVzKVxuXG4gICAgICAgICAgICByZXR1cm4gY29udGVudC5yZXBsYWNlKFxuICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSxcbiAgICAgICAgICAgICAgICBib2R5XG4gICAgICAgICAgICAgICAgKyBcIlxcXFxuXCJcbiAgICAgICAgICAgICAgICArIFwiICAgIHN3aXRjaERhc2hib2FyZCxcXFxcblwiXG4gICAgICAgICAgICAgICAgKyBjbG9zaW5nLFxuICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICApXG5cbiAgICByYWlzZSBQYXRjaEVycm9yKFxuICAgICAgICBcIkNvdWxkIG5vdCBsb2NhdGUgdGhlIEVtYmVkZGVkRGFzaGJvYXJkIHJldHVybiBvYmplY3RcIlxuICAgIClcblxuXG5kZWYgcGF0Y2hfc2RrKHNka19wYXRoOiBQYXRoKSAtPiBOb25lOlxuICAgIGNvbnRlbnQgPSBzZGtfcGF0aC5yZWFkX3RleHQoZW5jb2Rpbmc9XCJ1dGYtOFwiKVxuXG4gICAgaWYgXCJTVVBFUlNFVF9TV0lUQ0hBQkxFX0VNQkVEX1NES19QQVRDSFwiIGluIGNvbnRlbnQ6XG4gICAgICAgIHByaW50KGZcIkFscmVhZHkgcGF0Y2hlZDoge3Nka19wYXRofVwiKVxuICAgICAgICByZXR1cm5cblxuICAgIGNvbnRlbnQgPSBwYXRjaF9ndWVzdF90b2tlbl9mZXRjaF90eXBlKGNvbnRlbnQpXG4gICAgY29udGVudCA9IHBhdGNoX2VtYmVkZGVkX2Rhc2hib2FyZF90eXBlKGNvbnRlbnQpXG4gICAgY29udGVudCA9IHBhdGNoX2luaXRpYWxfZ3Vlc3RfdG9rZW5fZmV0Y2goY29udGVudClcbiAgICBjb250ZW50ID0gcGF0Y2hfZ3Vlc3RfdG9rZW5fcmVmcmVzaChjb250ZW50KVxuICAgIGNvbnRlbnQgPSBwYXRjaF9zZGtfZnVuY3Rpb25zKGNvbnRlbnQpXG4gICAgY29udGVudCA9IHBhdGNoX3Nka19yZXR1cm5fb2JqZWN0KGNvbnRlbnQpXG5cbiAgICBzZGtfcGF0aC53cml0ZV90ZXh0KGNvbnRlbnQsIGVuY29kaW5nPVwidXRmLThcIilcbiAgICBwcmludChmXCJQYXRjaGVkOiB7c2RrX3BhdGh9XCIpXG5cblxuZGVmIG1haW4oKSAtPiBpbnQ6XG4gICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoXG4gICAgICAgIGRlc2NyaXB0aW9uPShcbiAgICAgICAgICAgIFwiQXBwbHkgdGhlIHN3aXRjaGFibGUtZGFzaGJvYXJkIHBhdGNoIHRvIGEgXCJcbiAgICAgICAgICAgIFwiU3VwZXJzZXQgNi4xLnggc291cmNlIGNoZWNrb3V0LlwiXG4gICAgICAgIClcbiAgICApXG5cbiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KFxuICAgICAgICBcInN1cGVyc2V0X3Jvb3RcIixcbiAgICAgICAgdHlwZT1QYXRoLFxuICAgICAgICBoZWxwPVwiUGF0aCB0byB0aGUgQXBhY2hlIFN1cGVyc2V0IHNvdXJjZSBjaGVja291dFwiLFxuICAgIClcblxuICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpXG4gICAgcm9vdCA9IGFyZ3Muc3VwZXJzZXRfcm9vdC5yZXNvbHZlKClcblxuICAgIGZyb250ZW5kX3BhdGggPSByb290IC8gRlJPTlRFTkRfRklMRVxuICAgIHNka19wYXRoID0gcm9vdCAvIFNES19GSUxFXG5cbiAgICBtaXNzaW5nID0gW1xuICAgICAgICBwYXRoXG4gICAgICAgIGZvciBwYXRoIGluIFtmcm9udGVuZF9wYXRoLCBzZGtfcGF0aF1cbiAgICAgICAgaWYgbm90IHBhdGguZXhpc3RzKClcbiAgICBdXG5cbiAgICBpZiBtaXNzaW5nOlxuICAgICAgICBwcmludChcbiAgICAgICAgICAgIFwiVGhlIHRhcmdldCBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYSBjb21wYXRpYmxlIFwiXG4gICAgICAgICAgICBcIlN1cGVyc2V0IHNvdXJjZSBjaGVja291dC5cIixcbiAgICAgICAgICAgIGZpbGU9c3lzLnN0ZGVycixcbiAgICAgICAgKVxuXG4gICAgICAgIGZvciBtaXNzaW5nX3BhdGggaW4gbWlzc2luZzpcbiAgICAgICAgICAgIHByaW50KGZcIk1pc3Npbmc6IHttaXNzaW5nX3BhdGh9XCIsIGZpbGU9c3lzLnN0ZGVycilcblxuICAgICAgICByZXR1cm4gMlxuXG4gICAgdHJ5OlxuICAgICAgICBwYXRjaF9mcm9udGVuZChmcm9udGVuZF9wYXRoKVxuICAgICAgICBwYXRjaF9zZGsoc2RrX3BhdGgpXG4gICAgZXhjZXB0IFBhdGNoRXJyb3IgYXMgZXJyb3I6XG4gICAgICAgIHByaW50KGZcIlBhdGNoIGZhaWxlZDoge2Vycm9yfVwiLCBmaWxlPXN5cy5zdGRlcnIpXG4gICAgICAgIHJldHVybiAxXG5cbiAgICBwcmludChcIlBhdGNoIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuXCIpXG4gICAgcmV0dXJuIDBcblxuXG5pZiBfX25hbWVfXyA9PSBcIl9fbWFpbl9fXCI6XG4gICAgcmFpc2UgU3lzdGVtRXhpdChtYWluKCkpXG5gO1xuY29uc3QgVkVSSUZZX1BBVENIX1NIID0gYCMhL3Vzci9iaW4vZW52IGJhc2hcblxuc2V0IC1ldW8gcGlwZWZhaWxcblxuU1VQRVJTRVRfUk9PVD1cXCR7MTo/VXNhZ2U6IHZlcmlmeV9wYXRjaC5zaCAvcGF0aC90by9zdXBlcnNldH1cblxuRlJPTlRFTkRfRklMRT1cIiRTVVBFUlNFVF9ST09UL3N1cGVyc2V0LWZyb250ZW5kL3NyYy9lbWJlZGRlZC9pbmRleC50c3hcIlxuU0RLX0ZJTEU9XCIkU1VQRVJTRVRfUk9PVC9zdXBlcnNldC1lbWJlZGRlZC1zZGsvc3JjL2luZGV4LnRzXCJcblxudGVzdCAtZiBcIiRGUk9OVEVORF9GSUxFXCJcbnRlc3QgLWYgXCIkU0RLX0ZJTEVcIlxuXG5ncmVwIC1xIFxcXFxcbiAgXCJTVVBFUlNFVF9TV0lUQ0hBQkxFX0VNQkVEX1BBVENIXCIgXFxcXFxuICBcIiRGUk9OVEVORF9GSUxFXCJcblxuZ3JlcCAtcSBcXFxcXG4gIFwiJ3N3aXRjaERhc2hib2FyZCdcIiBcXFxcXG4gIFwiJEZST05URU5EX0ZJTEVcIlxuXG5ncmVwIC1xIFxcXFxcbiAgXCJkYXNoYm9hcmRTd2l0Y2hIYW5kbGVyXCIgXFxcXFxuICBcIiRGUk9OVEVORF9GSUxFXCJcblxuZ3JlcCAtcSBcXFxcXG4gIFwiU1VQRVJTRVRfU1dJVENIQUJMRV9FTUJFRF9TREtfUEFUQ0hcIiBcXFxcXG4gIFwiJFNES19GSUxFXCJcblxuZ3JlcCAtcSBcXFxcXG4gIFwic3dpdGNoRGFzaGJvYXJkOlwiIFxcXFxcbiAgXCIkU0RLX0ZJTEVcIlxuXG5ncmVwIC1xIFxcXFxcbiAgXCJhY3RpdmVEYXNoYm9hcmRJZFwiIFxcXFxcbiAgXCIkU0RLX0ZJTEVcIlxuXG5ncmVwIC1xIFxcXFxcbiAgXCJmZXRjaEd1ZXN0VG9rZW4oXCIgXFxcXFxuICBcIiRTREtfRklMRVwiXG5cbmVjaG8gXCJUaGUgc3dpdGNoYWJsZS1kYXNoYm9hcmQgcGF0Y2ggaXMgcHJlc2VudC5cIlxuYDtcbmNvbnN0IEJVSUxEX1NES19TSCA9IGAjIS91c3IvYmluL2VudiBiYXNoXG5cbnNldCAtZXVvIHBpcGVmYWlsXG5cblNVUEVSU0VUX1JPT1Q9XFwkezE6P1VzYWdlOiBidWlsZC1zZGsuc2ggL3BhdGgvdG8vc3VwZXJzZXR9XG5cblNES19ST09UPVwiJFNVUEVSU0VUX1JPT1Qvc3VwZXJzZXQtZW1iZWRkZWQtc2RrXCJcblxuaWYgWyAhIC1mIFwiJFNES19ST09UL3BhY2thZ2UuanNvblwiIF07IHRoZW5cbiAgZWNobyBcIk1pc3NpbmcgU0RLIHBhY2thZ2U6ICRTREtfUk9PVFwiID4mMlxuICBleGl0IDFcbmZpXG5cbmNkIFwiJFNES19ST09UXCJcblxubnBtIGNpXG5cbm5wbSBydW4gYnVpbGRcblxuZWNob1xuZWNobyBcIkVtYmVkZGVkIFNESyBidWlsZCBjb21wbGV0ZWQuXCJcbmVjaG8gXCJPdXRwdXQgZGlyZWN0b3J5OlwiXG5maW5kIC4gXFxcXFxuICAtbWF4ZGVwdGggMiBcXFxcXG4gIC10eXBlIGQgXFxcXFxuICBcXFxcKCAtbmFtZSBkaXN0IC1vIC1uYW1lIGxpYiBcXFxcKSBcXFxcXG4gIC1wcmludFxuYDtcbmNvbnN0IEJVSUxEX0ZST05URU5EX1NIID0gYCMhL3Vzci9iaW4vZW52IGJhc2hcblxuc2V0IC1ldW8gcGlwZWZhaWxcblxuU1VQRVJTRVRfUk9PVD1cXCR7MTo/VXNhZ2U6IGJ1aWxkLXN1cGVyc2V0LWZyb250ZW5kLnNoIC9wYXRoL3RvL3N1cGVyc2V0fVxuXG5GUk9OVEVORF9ST09UPVwiJFNVUEVSU0VUX1JPT1Qvc3VwZXJzZXQtZnJvbnRlbmRcIlxuXG5pZiBbICEgLWYgXCIkRlJPTlRFTkRfUk9PVC9wYWNrYWdlLmpzb25cIiBdOyB0aGVuXG4gIGVjaG8gXCJNaXNzaW5nIFN1cGVyc2V0IGZyb250ZW5kOiAkRlJPTlRFTkRfUk9PVFwiID4mMlxuICBleGl0IDFcbmZpXG5cbmNkIFwiJEZST05URU5EX1JPT1RcIlxuXG5ucG0gY2lcblxubnBtIHJ1biBidWlsZFxuXG5lY2hvIFwiU3VwZXJzZXQgZnJvbnRlbmQgYnVpbGQgY29tcGxldGVkLlwiXG5gO1xuY29uc3QgUEFUQ0hfQU5EX0JVSUxEX1NIID0gYCMhL3Vzci9iaW4vZW52IGJhc2hcblxuc2V0IC1ldW8gcGlwZWZhaWxcblxuU1VQRVJTRVRfUk9PVD1cXCR7MTo/VXNhZ2U6IHBhdGNoLWFuZC1idWlsZC5zaCAvcGF0aC90by9zdXBlcnNldH1cblxuU0NSSVBUX0RJUj0kKFxuICBjZCBcIiQoZGlybmFtZSBcIlxcJHtCQVNIX1NPVVJDRVswXX1cIilcIlxuICBwd2RcbilcblxuUFJPSkVDVF9ST09UPSQoXG4gIGNkIFwiJFNDUklQVF9ESVIvLi5cIlxuICBwd2RcbilcblxucHl0aG9uMyBcXFxcXG4gIFwiJFBST0pFQ1RfUk9PVC9wYXRjaGVzL2FwcGx5X3N1cGVyc2V0XzZfMV9wYXRjaC5weVwiIFxcXFxcbiAgXCIkU1VQRVJTRVRfUk9PVFwiXG5cblwiJFBST0pFQ1RfUk9PVC9wYXRjaGVzL3ZlcmlmeV9wYXRjaC5zaFwiIFxcXFxcbiAgXCIkU1VQRVJTRVRfUk9PVFwiXG5cblwiJFNDUklQVF9ESVIvYnVpbGQtc2RrLnNoXCIgXFxcXFxuICBcIiRTVVBFUlNFVF9ST09UXCJcblxuXCIkU0NSSVBUX0RJUi9idWlsZC1zdXBlcnNldC1mcm9udGVuZC5zaFwiIFxcXFxcbiAgXCIkU1VQRVJTRVRfUk9PVFwiXG5cbmVjaG9cbmVjaG8gXCJQYXRjaCBhbmQgZnJvbnRlbmQgYnVpbGRzIGNvbXBsZXRlZC5cIlxuYDtcbmNvbnN0IEJVSUxEX0RPQ0tFUl9TSCA9IGAjIS91c3IvYmluL2VudiBiYXNoXG5cbnNldCAtZXVvIHBpcGVmYWlsXG5cblNVUEVSU0VUX1JPT1Q9XFwkezE6P1VzYWdlOiBidWlsZC1kb2NrZXItaW1hZ2Uuc2ggL3BhdGgvdG8vc3VwZXJzZXQgW2ltYWdlLXRhZ119XG5JTUFHRV9UQUc9XFwkezI6LWxvY2FsL3N1cGVyc2V0LXN3aXRjaGFibGU6Ni4xLjB9XG5cblNDUklQVF9ESVI9JChcbiAgY2QgXCIkKGRpcm5hbWUgXCJcXCR7QkFTSF9TT1VSQ0VbMF19XCIpXCJcbiAgcHdkXG4pXG5cblBST0pFQ1RfUk9PVD0kKFxuICBjZCBcIiRTQ1JJUFRfRElSLy4uXCJcbiAgcHdkXG4pXG5cbnB5dGhvbjMgXFxcXFxuICBcIiRQUk9KRUNUX1JPT1QvcGF0Y2hlcy9hcHBseV9zdXBlcnNldF82XzFfcGF0Y2gucHlcIiBcXFxcXG4gIFwiJFNVUEVSU0VUX1JPT1RcIlxuXG5cIiRQUk9KRUNUX1JPT1QvcGF0Y2hlcy92ZXJpZnlfcGF0Y2guc2hcIiBcXFxcXG4gIFwiJFNVUEVSU0VUX1JPT1RcIlxuXG5jZCBcIiRTVVBFUlNFVF9ST09UXCJcblxuZG9ja2VyIGJ1aWxkIFxcXFxcbiAgLS10YXJnZXQgbGVhbiBcXFxcXG4gIC0tdGFnIFwiJElNQUdFX1RBR1wiIFxcXFxcbiAgLlxuXG5lY2hvIFwiQnVpbHQgRG9ja2VyIGltYWdlOiAkSU1BR0VfVEFHXCJcbmA7XG5jb25zdCBSRUFETUUgPSBgIyAke1NVUEVSU0VUX1BMVUdJTl9JRH1cblxuTXVsdGktdGVuYW50LCBvcmctYWdub3N0aWMgU3VwZXJzZXQgZGFzaGJvYXJkIGVtYmVkIHBsdWdpbiAocGF0Y2gtYW5kLWJ1aWxkIHN0cmF0ZWd5KS5cblxuVGhpcyBpcyBub3QgYSBnZW5lcmF0ZWQgcGx1Z2luIGxpa2UgdGhlIEtpYmFuYSB2YXJpYW50LiBJbnN0ZWFkLCBEZWNhZiBob2xkc1xucGF0Y2ggc2NyaXB0cyB0aGF0IG1vZGlmeSBTdXBlcnNldCdzIGludGVybmFsIGVtYmVkZGVkIGZyb250ZW5kIGFuZCBlbWJlZGRlZFxuU0RLIHNvdXJjZSBmaWxlcyB0byBhZGQgYSBcXGBzd2l0Y2hEYXNoYm9hcmRcXGAgbWV0aG9kLiBUaGUgZXhpc3RpbmcgaWZyYW1lXG5lbGVtZW50LCBkb2N1bWVudCwgY29udGVudFdpbmRvdywgUmVhY3QgcnVudGltZSwgYW5kIFN3aXRjaGJvYXJkIE1lc3NhZ2VDaGFubmVsXG5hcmUgcHJlc2VydmVkIGFjcm9zcyBkYXNoYm9hcmQgc3dpdGNoZXMuXG5cbiMjIFdoYXQgaXQgcGF0Y2hlc1xuXG4tIFxcYHN1cGVyc2V0LWZyb250ZW5kL3NyYy9lbWJlZGRlZC9pbmRleC50c3hcXGAg4oCUIGFkZHMgXFxgc3dpdGNoRGFzaGJvYXJkXFxgIHRvIHRoZVxuICBTd2l0Y2hib2FyZCBjaGFubmVsOyByZXBsYWNlcyBvbmx5IFxcYERhc2hib2FyZFBhZ2VcXGAuXG4tIFxcYHN1cGVyc2V0LWVtYmVkZGVkLXNkay9zcmMvaW5kZXgudHNcXGAg4oCUIGFkZHNcbiAgXFxgZW1iZWRkZWREYXNoYm9hcmQuc3dpdGNoRGFzaGJvYXJkKGRhc2hib2FyZElkKVxcYDsgcmVxdWVzdHMgYSBndWVzdCB0b2tlbiBmb3JcbiAgdGhlIHNlbGVjdGVkIGRhc2hib2FyZDsgcmVmcmVzaGVzIGZ1dHVyZSBndWVzdCB0b2tlbnMgZm9yIHRoZSBhY3RpdmUgZGFzaGJvYXJkLlxuXG4jIyBCdWlsZFxuXG5cXGBcXGBcXGBiYXNoXG4jIEFwcGx5IHBhdGNoICsgdmVyaWZ5ICsgYnVpbGQgU0RLICsgYnVpbGQgZnJvbnRlbmRcbmJ1aWxkL3BhdGNoLWFuZC1idWlsZC5zaCAvcGF0aC90by9zdXBlcnNldFxuXG4jIE9yIGJ1aWxkIGEgRG9ja2VyIGltYWdlXG5idWlsZC9idWlsZC1kb2NrZXItaW1hZ2Uuc2ggL3BhdGgvdG8vc3VwZXJzZXQgcmVnaXN0cnkuZXhhbXBsZS5jb20vc3VwZXJzZXQtc3dpdGNoYWJsZTo2LjEuMFxuXFxgXFxgXFxgXG5cblRoZSBwYXRjaGVkIFNESyBtdXN0IGJlIHBhY2tlZCBhbmQgaW5zdGFsbGVkIGludG8gdGhlIEFuZ3VsYXIgYXBwbGljYXRpb246XG5cblxcYFxcYFxcYGJhc2hcbmNkIC9wYXRoL3RvL3N1cGVyc2V0L3N1cGVyc2V0LWVtYmVkZGVkLXNka1xubnBtIGNpICYmIG5wbSBydW4gYnVpbGQgJiYgbnBtIHBhY2tcbmNkIC9wYXRoL3RvL2FuZ3VsYXItYXBwXG5ucG0gaW5zdGFsbCAvcGF0aC90by9zdXBlcnNldC9zdXBlcnNldC1lbWJlZGRlZC1zZGsvc3VwZXJzZXQtdWktZW1iZWRkZWQtc2RrLSoudGd6XG5cXGBcXGBcXGBcblxuVmVyc2lvbjogJHtTVVBFUlNFVF9QTFVHSU5fVkVSU0lPTn1cbmA7XG4vKipcbiAqIFJldHVybnMgdGhlIGZ1bGwgc2V0IG9mIHBhdGNoIGFuZCBidWlsZCBzY3JpcHQgZmlsZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdXBlcnNldFBhdGNoRmlsZXMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgeyBwYXRoOiBcInBhdGNoZXMvYXBwbHlfc3VwZXJzZXRfNl8xX3BhdGNoLnB5XCIsIGNvbnRlbnQ6IEFQUExZX1BBVENIX1BZLCBleGVjdXRhYmxlOiB0cnVlIH0sXG4gICAgICAgIHsgcGF0aDogXCJwYXRjaGVzL3ZlcmlmeV9wYXRjaC5zaFwiLCBjb250ZW50OiBWRVJJRllfUEFUQ0hfU0gsIGV4ZWN1dGFibGU6IHRydWUgfSxcbiAgICAgICAgeyBwYXRoOiBcImJ1aWxkL2J1aWxkLXNkay5zaFwiLCBjb250ZW50OiBCVUlMRF9TREtfU0gsIGV4ZWN1dGFibGU6IHRydWUgfSxcbiAgICAgICAgeyBwYXRoOiBcImJ1aWxkL2J1aWxkLXN1cGVyc2V0LWZyb250ZW5kLnNoXCIsIGNvbnRlbnQ6IEJVSUxEX0ZST05URU5EX1NILCBleGVjdXRhYmxlOiB0cnVlIH0sXG4gICAgICAgIHsgcGF0aDogXCJidWlsZC9wYXRjaC1hbmQtYnVpbGQuc2hcIiwgY29udGVudDogUEFUQ0hfQU5EX0JVSUxEX1NILCBleGVjdXRhYmxlOiB0cnVlIH0sXG4gICAgICAgIHsgcGF0aDogXCJidWlsZC9idWlsZC1kb2NrZXItaW1hZ2Uuc2hcIiwgY29udGVudDogQlVJTERfRE9DS0VSX1NILCBleGVjdXRhYmxlOiB0cnVlIH0sXG4gICAgICAgIHsgcGF0aDogXCJSRUFETUUubWRcIiwgY29udGVudDogUkVBRE1FIH0sXG4gICAgXTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRHVnRjR3hoZEdWekxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZMaTR2TGk0dmMzSmpMM0JzZFdkcGJuTXZjM1Z3WlhKelpYUXZkR1Z0Y0d4aGRHVnpMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQk96czdPenM3T3pzN096czdPMGRCWVVjN1FVRkRTQ3hQUVVGUExFVkJRVVVzYTBKQlFXdENMRVZCUVVVc2RVSkJRWFZDTEVWQlFVVXNjMEpCUVcxQ08wRkJWM3BGTEUxQlFVMHNZMEZCWXl4SFFVRkhPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3p0RFFXZHRRblJDTEVOQlFVTTdRVUZGUml4TlFVRk5MR1ZCUVdVc1IwRkJSenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN1EwRjVRM1pDTEVOQlFVTTdRVUZGUml4TlFVRk5MRmxCUVZrc1IwRkJSenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPME5CTWtKd1FpeERRVUZETzBGQlJVWXNUVUZCVFN4cFFrRkJhVUlzUjBGQlJ6czdPenM3T3pzN096czdPenM3T3pzN096czdRMEZ2UW5wQ0xFTkJRVU03UVVGRlJpeE5RVUZOTEd0Q1FVRnJRaXhIUVVGSE96czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPME5CSzBJeFFpeERRVUZETzBGQlJVWXNUVUZCVFN4bFFVRmxMRWRCUVVjN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPME5CWjBOMlFpeERRVUZETzBGQlJVWXNUVUZCVFN4TlFVRk5MRWRCUVVjc1MwRkJTeXhyUWtGQmEwSTdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdWMEZ4UXpOQ0xIVkNRVUYxUWp0RFFVTnFReXhEUVVGRE8wRkJSVVk3TzBkQlJVYzdRVUZEU0N4TlFVRk5MRlZCUVZVc2EwSkJRV3RDTzBsQlEyaERMRTlCUVU4N1VVRkRUQ3hGUVVGRkxFbEJRVWtzUlVGQlJTeHhRMEZCY1VNc1JVRkJSU3hQUVVGUExFVkJRVVVzWTBGQll5eEZRVUZGTEZWQlFWVXNSVUZCUlN4SlFVRkpMRVZCUVVVN1VVRkRNVVlzUlVGQlJTeEpRVUZKTEVWQlFVVXNlVUpCUVhsQ0xFVkJRVVVzVDBGQlR5eEZRVUZGTEdWQlFXVXNSVUZCUlN4VlFVRlZMRVZCUVVVc1NVRkJTU3hGUVVGRk8xRkJReTlGTEVWQlFVVXNTVUZCU1N4RlFVRkZMRzlDUVVGdlFpeEZRVUZGTEU5QlFVOHNSVUZCUlN4WlFVRlpMRVZCUVVVc1ZVRkJWU3hGUVVGRkxFbEJRVWtzUlVGQlJUdFJRVU4yUlN4RlFVRkZMRWxCUVVrc1JVRkJSU3hyUTBGQmEwTXNSVUZCUlN4UFFVRlBMRVZCUVVVc2FVSkJRV2xDTEVWQlFVVXNWVUZCVlN4RlFVRkZMRWxCUVVrc1JVRkJSVHRSUVVNeFJpeEZRVUZGTEVsQlFVa3NSVUZCUlN3d1FrRkJNRUlzUlVGQlJTeFBRVUZQTEVWQlFVVXNhMEpCUVd0Q0xFVkJRVVVzVlVGQlZTeEZRVUZGTEVsQlFVa3NSVUZCUlR0UlFVTnVSaXhGUVVGRkxFbEJRVWtzUlVGQlJTdzJRa0ZCTmtJc1JVRkJSU3hQUVVGUExFVkJRVVVzWlVGQlpTeEZRVUZGTEZWQlFWVXNSVUZCUlN4SlFVRkpMRVZCUVVVN1VVRkRia1lzUlVGQlJTeEpRVUZKTEVWQlFVVXNWMEZCVnl4RlFVRkZMRTlCUVU4c1JVRkJSU3hOUVVGTkxFVkJRVVU3UzBGRGRrTXNRMEZCUXp0QlFVTktMRU5CUVVNaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFQnRiMlIxYkdVZ2FXNTBaV2R5WVhScGIyNXpMM0JzZFdkcGJuTXZjM1Z3WlhKelpYUXZkR1Z0Y0d4aGRHVnpYRzRnS2lCQWMzVnRiV0Z5ZVNCUVlYUmphQ0JoYm1RZ1luVnBiR1FnYzJOeWFYQjBJSFJsYlhCc1lYUmxjeUJtYjNJZ2RHaGxJRk4xY0dWeWMyVjBJR1Z0WW1Wa0lIQnNkV2RwYmk1Y2JpQXFJRUJrWlhOamNtbHdkR2x2YmlCSWIyeGtjeUJoYkd3Z2NHRjBZMmdnYzJOeWFYQjBjeUFvVUhsMGFHOXVJQ3NnUW1GemFDa2dZVzVrSUdKMWFXeGtJSE5qY21sd2RITWdZWE5jYmlBcUlITjBjbWx1WnlCMFpXMXdiR0YwWlhNdUlGUm9aWE5sSUdGeVpTQnRZWFJsY21saGJHbDZaV1FnYjI1MGJ5QmthWE5ySUdKNUlIUm9aU0JwYm5OMFlXeHNaWEl1SUVSbFkyRm1YRzRnS2lCa2IyVnpJRzV2ZENCblpXNWxjbUYwWlNCdVpYY2dVM1Z3WlhKelpYUWdjMjkxY21ObElPS0FsQ0JwZENCd1lYUmphR1Z6SUdWNGFYTjBhVzVuSUdsdWRHVnlibUZzSUdacGJHVnpYRzRnS2lBb1lITjFjR1Z5YzJWMExXWnliMjUwWlc1a0wzTnlZeTlsYldKbFpHUmxaQzlwYm1SbGVDNTBjM2hnSUdGdVpGeHVJQ29nWUhOMWNHVnljMlYwTFdWdFltVmtaR1ZrTFhOa2F5OXpjbU12YVc1a1pYZ3VkSE5nS1NCbWIyeHNiM2RwYm1jZ2RHaGxJSEpsWm1WeVpXNWpaU0JwYlhCc1pXMWxiblJoZEdsdmJseHVJQ29nWm5KdmJTQkVSVU5CUmkwME1DRENwemt1WEc0Z0tseHVJQ29nVkdobElIQmhkR05vSUdGa1pITWdZU0JnYzNkcGRHTm9SR0Z6YUdKdllYSmtZQ0J0WlhSb2IyUWdkRzhnVTNWd1pYSnpaWFFuY3lCbGVHbHpkR2x1WnlCVGQybDBZMmhpYjJGeVpGeHVJQ29nWTJoaGJtNWxiQ3dnY21Wd2JHRmphVzVuSUc5dWJIa2dZRVJoYzJoaWIyRnlaRkJoWjJWZ0lIZG9hV3hsSUd0bFpYQnBibWNnZEdobElHbG1jbUZ0WlNCbGJHVnRaVzUwTEZ4dUlDb2daRzlqZFcxbGJuUXNJR052Ym5SbGJuUlhhVzVrYjNjc0lGSmxZV04wSUhKMWJuUnBiV1VzSUdGdVpDQnRaWE56WVdkbElHTm9ZVzV1Wld3Z1lXeHBkbVV1WEc0Z0tpOWNibWx0Y0c5eWRDQjdJRk5WVUVWU1UwVlVYMUJNVlVkSlRsOUpSQ3dnVTFWUVJWSlRSVlJmVUV4VlIwbE9YMVpGVWxOSlQwNGdmU0JtY205dElGd2lMaTl0WVc1cFptVnpkRndpTzF4dVhHNWxlSEJ2Y25RZ2FXNTBaWEptWVdObElGTjFjR1Z5YzJWMFVHRjBZMmhHYVd4bElIdGNiaUFnTHlvcUlGSmxiR0YwYVhabElIQmhkR2dnZDJsMGFHbHVJSFJvWlNCMFlYSm5aWFFnWkdseVpXTjBiM0o1TGlBcUwxeHVJQ0J3WVhSb09pQnpkSEpwYm1jN1hHNGdJQzhxS2lCR2FXeGxJR052Ym5SbGJuUnpMaUFxTDF4dUlDQmpiMjUwWlc1ME9pQnpkSEpwYm1jN1hHNGdJQzhxS2lCWGFHVjBhR1Z5SUhSdklHMWhjbXNnZEdobElHWnBiR1VnWlhobFkzVjBZV0pzWlNCdmJpQlFUMU5KV0M0Z0tpOWNiaUFnWlhobFkzVjBZV0pzWlQ4NklHSnZiMnhsWVc0N1hHNTlYRzVjYm1OdmJuTjBJRUZRVUV4WlgxQkJWRU5JWDFCWklEMGdZQ01oTDNWemNpOWlhVzR2Wlc1MklIQjVkR2h2YmpOY2JseHVabkp2YlNCZlgyWjFkSFZ5WlY5ZklHbHRjRzl5ZENCaGJtNXZkR0YwYVc5dWMxeHVYRzVwYlhCdmNuUWdZWEpuY0dGeWMyVmNibWx0Y0c5eWRDQnlaVnh1YVcxd2IzSjBJSE41YzF4dVpuSnZiU0J3WVhSb2JHbGlJR2x0Y0c5eWRDQlFZWFJvWEc1Y2JseHVSbEpQVGxSRlRrUmZSa2xNUlNBOUlGQmhkR2dvWENKemRYQmxjbk5sZEMxbWNtOXVkR1Z1WkM5emNtTXZaVzFpWldSa1pXUXZhVzVrWlhndWRITjRYQ0lwWEc1VFJFdGZSa2xNUlNBOUlGQmhkR2dvWENKemRYQmxjbk5sZEMxbGJXSmxaR1JsWkMxelpHc3ZjM0pqTDJsdVpHVjRMblJ6WENJcFhHNWNibHh1WTJ4aGMzTWdVR0YwWTJoRmNuSnZjaWhTZFc1MGFXMWxSWEp5YjNJcE9seHVJQ0FnSUhCaGMzTmNibHh1WEc1a1pXWWdjbVZ3YkdGalpWOXZibU5sS0Z4dUlDQWdJR052Ym5SbGJuUTZJSE4wY2l4Y2JpQWdJQ0J2YkdRNklITjBjaXhjYmlBZ0lDQnVaWGM2SUhOMGNpeGNiaUFnSUNCa1pYTmpjbWx3ZEdsdmJqb2djM1J5TEZ4dUtTQXRQaUJ6ZEhJNlhHNGdJQ0FnWTI5MWJuUWdQU0JqYjI1MFpXNTBMbU52ZFc1MEtHOXNaQ2xjYmx4dUlDQWdJR2xtSUdOdmRXNTBJQ0U5SURFNlhHNGdJQ0FnSUNBZ0lISmhhWE5sSUZCaGRHTm9SWEp5YjNJb1hHNGdJQ0FnSUNBZ0lDQWdJQ0JtWENKN1pHVnpZM0pwY0hScGIyNTlPaUJsZUhCbFkzUmxaQ0JsZUdGamRHeDVJRzl1WlNCdlkyTjFjbkpsYm1ObExDQm1iM1Z1WkNCN1kyOTFiblI5WENKY2JpQWdJQ0FnSUNBZ0tWeHVYRzRnSUNBZ2NtVjBkWEp1SUdOdmJuUmxiblF1Y21Wd2JHRmpaU2h2YkdRc0lHNWxkeXdnTVNsY2JseHVYRzVrWldZZ2NtVndiR0ZqWlY5eVpXZGxlRjl2Ym1ObEtGeHVJQ0FnSUdOdmJuUmxiblE2SUhOMGNpeGNiaUFnSUNCd1lYUjBaWEp1T2lCeVpTNVFZWFIwWlhKdVczTjBjbDBzWEc0Z0lDQWdjbVZ3YkdGalpXMWxiblE2SUhOMGNpeGNiaUFnSUNCa1pYTmpjbWx3ZEdsdmJqb2djM1J5TEZ4dUtTQXRQaUJ6ZEhJNlhHNGdJQ0FnZFhCa1lYUmxaQ3dnWTI5MWJuUWdQU0J3WVhSMFpYSnVMbk4xWW00b2NtVndiR0ZqWlcxbGJuUXNJR052Ym5SbGJuUXNJR052ZFc1MFBURXBYRzVjYmlBZ0lDQnBaaUJqYjNWdWRDQWhQU0F4T2x4dUlDQWdJQ0FnSUNCeVlXbHpaU0JRWVhSamFFVnljbTl5S0Z4dUlDQWdJQ0FnSUNBZ0lDQWdabHdpZTJSbGMyTnlhWEIwYVc5dWZUb2daWGh3WldOMFpXUWdaWGhoWTNSc2VTQnZibVVnYldGMFkyZ3NJR1p2ZFc1a0lIdGpiM1Z1ZEgxY0lseHVJQ0FnSUNBZ0lDQXBYRzVjYmlBZ0lDQnlaWFIxY200Z2RYQmtZWFJsWkZ4dVhHNWNibVJsWmlCd1lYUmphRjl5WldGamRGOXBiWEJ2Y25Rb1kyOXVkR1Z1ZERvZ2MzUnlLU0F0UGlCemRISTZYRzRnSUNBZ2NtVmhZM1JmYVcxd2IzSjBYM0JoZEhSbGNtNGdQU0J5WlM1amIyMXdhV3hsS0Z4dUlDQWdJQ0FnSUNCeVhDSnBiWEJ2Y25SY1hGeGNjeXBjWEZ4Y2UxeGNYRnh6S2loYlhuMWRLeWxjWEZ4Y2N5cGNYRnhjZlZ4Y1hGeHpLbVp5YjIxY1hGeGNjeW9uY21WaFkzUW5PMXdpWEc0Z0lDQWdLVnh1WEc0Z0lDQWdiV0YwWTJnZ1BTQnlaV0ZqZEY5cGJYQnZjblJmY0dGMGRHVnliaTV6WldGeVkyZ29ZMjl1ZEdWdWRDbGNibHh1SUNBZ0lHbG1JRzV2ZENCdFlYUmphRHBjYmlBZ0lDQWdJQ0FnY21GcGMyVWdVR0YwWTJoRmNuSnZjaWhjSWtOdmRXeGtJRzV2ZENCc2IyTmhkR1VnZEdobElHNWhiV1ZrSUZKbFlXTjBJR2x0Y0c5eWRGd2lLVnh1WEc0Z0lDQWdhVzF3YjNKMGN5QTlJRnRjYmlBZ0lDQWdJQ0FnZG1Gc2RXVXVjM1J5YVhBb0tWeHVJQ0FnSUNBZ0lDQm1iM0lnZG1Gc2RXVWdhVzRnYldGMFkyZ3VaM0p2ZFhBb01Ta3VjbVZ3YkdGalpTaGNJbHhjWEZ4dVhDSXNJRndpSUZ3aUtTNXpjR3hwZENoY0lpeGNJaWxjYmlBZ0lDQWdJQ0FnYVdZZ2RtRnNkV1V1YzNSeWFYQW9LVnh1SUNBZ0lGMWNibHh1SUNBZ0lISmxjWFZwY21Wa1gybHRjRzl5ZEhNZ1BTQmJYQ0pzWVhwNVhDSXNJRndpVTNWemNHVnVjMlZjSWl3Z1hDSjFjMlZGWm1abFkzUmNJaXdnWENKMWMyVlRkR0YwWlZ3aVhWeHVYRzRnSUNBZ1ptOXlJSEpsY1hWcGNtVmtYMmx0Y0c5eWRDQnBiaUJ5WlhGMWFYSmxaRjlwYlhCdmNuUnpPbHh1SUNBZ0lDQWdJQ0JwWmlCeVpYRjFhWEpsWkY5cGJYQnZjblFnYm05MElHbHVJR2x0Y0c5eWRITTZYRzRnSUNBZ0lDQWdJQ0FnSUNCcGJYQnZjblJ6TG1Gd2NHVnVaQ2h5WlhGMWFYSmxaRjlwYlhCdmNuUXBYRzVjYmlBZ0lDQnlaWEJzWVdObGJXVnVkQ0E5SUNoY2JpQWdJQ0FnSUNBZ1hDSnBiWEJ2Y25RZ2UxeGNYRnh1SUNCY0lseHVJQ0FnSUNBZ0lDQXJJRndpTEZ4Y1hGeHVJQ0JjSWk1cWIybHVLR2x0Y0c5eWRITXBYRzRnSUNBZ0lDQWdJQ3NnWENJc1hGeGNYRzU5SUdaeWIyMGdKM0psWVdOMEp6dGNJbHh1SUNBZ0lDbGNibHh1SUNBZ0lISmxkSFZ5YmlBb1hHNGdJQ0FnSUNBZ0lHTnZiblJsYm5SYk9pQnRZWFJqYUM1emRHRnlkQ2dwWFZ4dUlDQWdJQ0FnSUNBcklISmxjR3hoWTJWdFpXNTBYRzRnSUNBZ0lDQWdJQ3NnWTI5dWRHVnVkRnR0WVhSamFDNWxibVFvS1NBNlhWeHVJQ0FnSUNsY2JseHVYRzVrWldZZ2JHOWpZWFJsWDJWdFltVmtaR1ZrWDJOdmJYQnZibVZ1ZENoY2JpQWdJQ0JqYjI1MFpXNTBPaUJ6ZEhJc1hHNHBJQzArSUhSMWNHeGxXM0psTGsxaGRHTm9XM04wY2wwc0lITjBjbDA2WEc0Z0lDQWdjR0YwZEdWeWJpQTlJSEpsTG1OdmJYQnBiR1VvWEc0Z0lDQWdJQ0FnSUhKY0ltTnZibk4wWEZ4Y1hITXJLRnRCTFZwaExYb3dMVGxmWFNzcFhGeGNYSE1xUFZ4Y1hGeHpLbHhjWEZ3b1hGeGNYQ2xjWEZ4Y2N5bzlQbHhjWEZ4ektseGNYRng3TGlvL1hGeGNYSDA3WEZ4Y1hITXFYQ0pjYmlBZ0lDQWdJQ0FnY2x3aUtEODlZMjl1YzNSY1hGeGNjeXRGYldKbFpHUmxaRkp2ZFhSbEtWd2lMRnh1SUNBZ0lDQWdJQ0J5WlM1RVQxUkJURXdzWEc0Z0lDQWdLVnh1WEc0Z0lDQWdiV0YwWTJnZ1BTQndZWFIwWlhKdUxuTmxZWEpqYUNoamIyNTBaVzUwS1Z4dVhHNGdJQ0FnYVdZZ2JXRjBZMmc2WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJ0WVhSamFDd2diV0YwWTJndVozSnZkWEFvTVNsY2JseHVJQ0FnSUhKaGFYTmxJRkJoZEdOb1JYSnliM0lvWEc0Z0lDQWdJQ0FnSUZ3aVEyOTFiR1FnYm05MElHWnBibVFnWVc0Z1pXMWlaV1JrWldRZ1pHRnphR0p2WVhKa0lHTnZiWEJ2Ym1WdWRDQmlaV1p2Y21VZ1JXMWlaV1JrWldSU2IzVjBaVndpWEc0Z0lDQWdLVnh1WEc1Y2JtUmxaaUJ3WVhSamFGOW1jbTl1ZEdWdVpDaG1jbTl1ZEdWdVpGOXdZWFJvT2lCUVlYUm9LU0F0UGlCT2IyNWxPbHh1SUNBZ0lHTnZiblJsYm5RZ1BTQm1jbTl1ZEdWdVpGOXdZWFJvTG5KbFlXUmZkR1Y0ZENobGJtTnZaR2x1WnoxY0luVjBaaTA0WENJcFhHNWNiaUFnSUNCcFppQmNJbE5WVUVWU1UwVlVYMU5YU1ZSRFNFRkNURVZmUlUxQ1JVUmZVRUZVUTBoY0lpQnBiaUJqYjI1MFpXNTBPbHh1SUNBZ0lDQWdJQ0J3Y21sdWRDaG1YQ0pCYkhKbFlXUjVJSEJoZEdOb1pXUTZJSHRtY205dWRHVnVaRjl3WVhSb2ZWd2lLVnh1SUNBZ0lDQWdJQ0J5WlhSMWNtNWNibHh1SUNBZ0lHTnZiblJsYm5RZ1BTQndZWFJqYUY5eVpXRmpkRjlwYlhCdmNuUW9ZMjl1ZEdWdWRDbGNibHh1SUNBZ0lHTnZiWEJ2Ym1WdWRGOXRZWFJqYUN3Z1kyOXRjRzl1Wlc1MFgyNWhiV1VnUFNCc2IyTmhkR1ZmWlcxaVpXUmtaV1JmWTI5dGNHOXVaVzUwS0Z4dUlDQWdJQ0FnSUNCamIyNTBaVzUwWEc0Z0lDQWdLVnh1WEc0Z0lDQWdjbVZ3YkdGalpXMWxiblJmWTI5dGNHOXVaVzUwSUQwZ1hDSmNJbHdpTHk4Z1UxVlFSVkpUUlZSZlUxZEpWRU5JUVVKTVJWOUZUVUpGUkY5UVFWUkRTRnh1THk5Y2JpOHZJRUZzYkc5M2N5QjBhR1VnWlhocGMzUnBibWNnWlcxaVpXUmtaV1FnVTNWd1pYSnpaWFFnWkc5amRXMWxiblFnZEc4Z2NtVndiR0ZqWlNCRVlYTm9ZbTloY21SUVlXZGxYRzR2THlCM2FYUm9iM1YwSUc1aGRtbG5ZWFJwYm1jZ2IzSWdjbVZqY21WaGRHbHVaeUIwYUdVZ2FXWnlZVzFsTGx4dUx5OWNiaTh2SUZObFkzVnlhWFI1T2x4dUx5OGdMU0JVYUdseklHMWxkR2h2WkNCcGN5QmxlSEJ2YzJWa0lHOXViSGtnZEdoeWIzVm5hQ0JUZFhCbGNuTmxkQ2R6SUdWNGFYTjBhVzVuSUZOM2FYUmphR0p2WVhKa1hHNHZMeUFnSUUxbGMzTmhaMlZEYUdGdWJtVnNMbHh1THk4Z0xTQlVhR1VnYUc5emRDQmhjSEJzYVdOaGRHbHZiaUJ0ZFhOMElHOWlkR0ZwYmlCaElHZDFaWE4wSUhSdmEyVnVJR1p2Y2lCMGFHVWdkR0Z5WjJWMElHUmhjMmhpYjJGeVpDNWNiaTh2SUMwZ1UzVndaWEp6WlhRbmN5QnViM0p0WVd3Z1FXeHNiM2RsWkNCRWIyMWhhVzV6SUhaaGJHbGtZWFJwYjI0Z2NtVnRZV2x1Y3lCcGJpQmxabVpsWTNRdVhHNWNibWx1ZEdWeVptRmpaU0JUZDJsMFkyaEVZWE5vWW05aGNtUlFZWGxzYjJGa0lIdGNiaUFnWkdGemFHSnZZWEprU1dRNklITjBjbWx1Wnp0Y2JpQWdaM1ZsYzNSVWIydGxiam9nYzNSeWFXNW5PMXh1ZlZ4dVhHNXBiblJsY21aaFkyVWdVM2RwZEdOb1JHRnphR0p2WVhKa1VtVnpkV3gwSUh0Y2JpQWdaR0Z6YUdKdllYSmtTV1E2SUhOMGNtbHVaenRjYmlBZ1lXTmpaWEIwWldRNklIUnlkV1U3WEc1OVhHNWNiblI1Y0dVZ1JHRnphR0p2WVhKa1UzZHBkR05vU0dGdVpHeGxjaUE5SUNoY2JpQWdjR0Y1Ykc5aFpEb2dVM2RwZEdOb1JHRnphR0p2WVhKa1VHRjViRzloWkN4Y2Jpa2dQVDRnVUhKdmJXbHpaVHhUZDJsMFkyaEVZWE5vWW05aGNtUlNaWE4xYkhRK08xeHVYRzVzWlhRZ1pHRnphR0p2WVhKa1UzZHBkR05vU0dGdVpHeGxjam9nUkdGemFHSnZZWEprVTNkcGRHTm9TR0Z1Wkd4bGNpQjhJSFZ1WkdWbWFXNWxaRHRjYmx4dVkyOXVjM1FnWDE5RFQwMVFUMDVGVGxSZlRrRk5SVjlmSUQwZ0tDa2dQVDRnZTF4dUlDQmpiMjV6ZENCMWFVTnZibVpwWnlBOUlIVnpaVlZwUTI5dVptbG5LQ2s3WEc1Y2JpQWdZMjl1YzNRZ1cyUmhjMmhpYjJGeVpFbGtMQ0J6WlhSRVlYTm9ZbTloY21SSlpGMGdQU0IxYzJWVGRHRjBaVHh6ZEhKcGJtY2dmQ0J1ZFd4c1BpaGNiaUFnSUNCaWIyOTBjM1J5WVhCRVlYUmhMbVZ0WW1Wa1pHVmtJUzVrWVhOb1ltOWhjbVJmYVdRc1hHNGdJQ2s3WEc1Y2JpQWdkWE5sUldabVpXTjBLQ2dwSUQwK0lIdGNiaUFnSUNCa1lYTm9ZbTloY21SVGQybDBZMmhJWVc1a2JHVnlJRDBnWVhONWJtTWdLSHRjYmlBZ0lDQWdJR1JoYzJoaWIyRnlaRWxrT2lCeVpYRjFaWE4wWldSRVlYTm9ZbTloY21SSlpDeGNiaUFnSUNBZ0lHZDFaWE4wVkc5clpXNHNYRzRnSUNBZ2ZUb2dVM2RwZEdOb1JHRnphR0p2WVhKa1VHRjViRzloWkNrZ1BUNGdlMXh1SUNBZ0lDQWdZMjl1YzNRZ2JtVjRkRVJoYzJoaWIyRnlaRWxrSUQwZ2NtVnhkV1Z6ZEdWa1JHRnphR0p2WVhKa1NXUXVkSEpwYlNncE8xeHVYRzRnSUNBZ0lDQnBaaUFvSVc1bGVIUkVZWE5vWW05aGNtUkpaQ2tnZTF4dUlDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvWEc0Z0lDQWdJQ0FnSUNBZ0oyUmhjMmhpYjJGeVpFbGtJRzExYzNRZ1ltVWdZU0J1YjI0dFpXMXdkSGtnYzNSeWFXNW5KeXhjYmlBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ2FXWWdLRnh1SUNBZ0lDQWdJQ0IwZVhCbGIyWWdaM1ZsYzNSVWIydGxiaUFoUFQwZ0ozTjBjbWx1WnljZ2ZIeGNiaUFnSUNBZ0lDQWdaM1ZsYzNSVWIydGxiaTUwY21sdEtDa3ViR1Z1WjNSb0lEMDlQU0F3WEc0Z0lDQWdJQ0FwSUh0Y2JpQWdJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0Z4dUlDQWdJQ0FnSUNBZ0lDZG5kV1Z6ZEZSdmEyVnVJRzExYzNRZ1ltVWdZU0J1YjI0dFpXMXdkSGtnYzNSeWFXNW5KeXhjYmlBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ2MyVjBSR0Z6YUdKdllYSmtTV1FvYm5Wc2JDazdYRzVjYmlBZ0lDQWdJR1JwYzNCc1lYbGxaRlZ1WVhWMGFHOXlhWHBsWkZSdllYTjBJRDBnWm1Gc2MyVTdYRzVjYmlBZ0lDQWdJSE5sZEhWd1IzVmxjM1JEYkdsbGJuUW9aM1ZsYzNSVWIydGxiaWs3WEc1Y2JpQWdJQ0FnSUdGM1lXbDBJRzVsZHlCUWNtOXRhWE5sUEhadmFXUStLSEpsYzI5c2RtVWdQVDRnZTF4dUlDQWdJQ0FnSUNCM2FXNWtiM2N1Y21WeGRXVnpkRUZ1YVcxaGRHbHZia1p5WVcxbEtDZ3BJRDArSUhKbGMyOXNkbVVvS1NrN1hHNGdJQ0FnSUNCOUtUdGNibHh1SUNBZ0lDQWdjMlYwUkdGemFHSnZZWEprU1dRb2JtVjRkRVJoYzJoaWIyRnlaRWxrS1R0Y2JseHVJQ0FnSUNBZ2NtVjBkWEp1SUh0Y2JpQWdJQ0FnSUNBZ1pHRnphR0p2WVhKa1NXUTZJRzVsZUhSRVlYTm9ZbTloY21SSlpDeGNiaUFnSUNBZ0lDQWdZV05qWlhCMFpXUTZJSFJ5ZFdVc1hHNGdJQ0FnSUNCOU8xeHVJQ0FnSUgwN1hHNWNiaUFnSUNCeVpYUjFjbTRnS0NrZ1BUNGdlMXh1SUNBZ0lDQWdaR0Z6YUdKdllYSmtVM2RwZEdOb1NHRnVaR3hsY2lBOUlIVnVaR1ZtYVc1bFpEdGNiaUFnSUNCOU8xeHVJQ0I5TENCYlhTazdYRzVjYmlBZ2RYTmxSV1ptWldOMEtDZ3BJRDArSUh0Y2JpQWdJQ0JwWmlBb0lYVnBRMjl1Wm1sblB5NWxiV2wwUkdGMFlVMWhjMnR6S1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnZFc1a1pXWnBibVZrTzF4dUlDQWdJSDFjYmx4dUlDQWdJR3hsZENCd2NtVjJhVzkxYzBSaGRHRk5ZWE5ySUQwZ2MzUnZjbVV1WjJWMFUzUmhkR1VvS1M1a1lYUmhUV0Z6YXp0Y2JseHVJQ0FnSUhKbGRIVnliaUJ6ZEc5eVpTNXpkV0p6WTNKcFltVW9LQ2tnUFQ0Z2UxeHVJQ0FnSUNBZ1kyOXVjM1FnWTNWeWNtVnVkRVJoZEdGTllYTnJJRDBnYzNSdmNtVXVaMlYwVTNSaGRHVW9LUzVrWVhSaFRXRnphenRjYmx4dUlDQWdJQ0FnYVdZZ0tIQnlaWFpwYjNWelJHRjBZVTFoYzJzZ0lUMDlJR04xY25KbGJuUkVZWFJoVFdGemF5a2dlMXh1SUNBZ0lDQWdJQ0JUZDJsMFkyaGliMkZ5WkM1bGJXbDBLQ2R2WW5ObGNuWmxSR0YwWVUxaGMyc25MQ0I3WEc0Z0lDQWdJQ0FnSUNBZ0xpNHVZM1Z5Y21WdWRFUmhkR0ZOWVhOckxGeHVJQ0FnSUNBZ0lDQWdJQzR1TG1kbGRFUmhkR0ZOWVhOclEyaGhibWRsVkhKcFoyZGxjaWhjYmlBZ0lDQWdJQ0FnSUNBZ0lHTjFjbkpsYm5SRVlYUmhUV0Z6YXl4Y2JpQWdJQ0FnSUNBZ0lDQWdJSEJ5WlhacGIzVnpSR0YwWVUxaGMyc3NYRzRnSUNBZ0lDQWdJQ0FnS1N4Y2JpQWdJQ0FnSUNBZ2ZTazdYRzVjYmlBZ0lDQWdJQ0FnY0hKbGRtbHZkWE5FWVhSaFRXRnpheUE5SUdOMWNuSmxiblJFWVhSaFRXRnphenRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlLVHRjYmlBZ2ZTd2dXM1ZwUTI5dVptbG5QeTVsYldsMFJHRjBZVTFoYzJ0elhTazdYRzVjYmlBZ2FXWWdLQ0ZrWVhOb1ltOWhjbVJKWkNrZ2UxeHVJQ0FnSUhKbGRIVnliaUE4VEc5aFpHbHVaeUF2UGp0Y2JpQWdmVnh1WEc0Z0lISmxkSFZ5YmlBb1hHNGdJQ0FnUEV4aGVubEVZWE5vWW05aGNtUlFZV2RsWEc0Z0lDQWdJQ0JyWlhrOWUyUmhjMmhpYjJGeVpFbGtmVnh1SUNBZ0lDQWdhV1JQY2xOc2RXYzllMlJoYzJoaWIyRnlaRWxrZlZ4dUlDQWdJQzgrWEc0Z0lDazdYRzU5TzF4dVhDSmNJbHdpTG5KbGNHeGhZMlVvWENKZlgwTlBUVkJQVGtWT1ZGOU9RVTFGWDE5Y0lpd2dZMjl0Y0c5dVpXNTBYMjVoYldVcFhHNWNiaUFnSUNCamIyNTBaVzUwSUQwZ0tGeHVJQ0FnSUNBZ0lDQmpiMjUwWlc1MFd6b2dZMjl0Y0c5dVpXNTBYMjFoZEdOb0xuTjBZWEowS0NsZFhHNGdJQ0FnSUNBZ0lDc2djbVZ3YkdGalpXMWxiblJmWTI5dGNHOXVaVzUwWEc0Z0lDQWdJQ0FnSUNzZ1kyOXVkR1Z1ZEZ0amIyMXdiMjVsYm5SZmJXRjBZMmd1Wlc1a0tDa2dPbDFjYmlBZ0lDQXBYRzVjYmlBZ0lDQnpkMmwwWTJoaWIyRnlaRjloYm1Ob2IzSmZZMkZ1Wkdsa1lYUmxjeUE5SUZ0Y2JpQWdJQ0FnSUNBZ0tGeHVJQ0FnSUNBZ0lDQWdJQ0FnWENJZ0lDQWdVM2RwZEdOb1ltOWhjbVF1WkdWbWFXNWxUV1YwYUc5a0tGd2lYRzRnSUNBZ0lDQWdJQ0FnSUNCY0lpZG5aWFJUWTNKdmJHeFRhWHBsSnl3Z1pXMWlaV1JrWldSQmNHa3VaMlYwVTJOeWIyeHNVMmw2WlNrN1hDSmNiaUFnSUNBZ0lDQWdLU3hjYmlBZ0lDQWdJQ0FnS0Z4dUlDQWdJQ0FnSUNBZ0lDQWdYQ0lnSUNBZ1UzZHBkR05vWW05aGNtUXVaR1ZtYVc1bFRXVjBhRzlrS0Z4Y1hGeHVYQ0pjYmlBZ0lDQWdJQ0FnSUNBZ0lGd2lJQ0FnSUNBZ0oyZGxkRk5qY205c2JGTnBlbVVuTEZ4Y1hGeHVYQ0pjYmlBZ0lDQWdJQ0FnSUNBZ0lGd2lJQ0FnSUNBZ1pXMWlaV1JrWldSQmNHa3VaMlYwVTJOeWIyeHNVMmw2WlN4Y1hGeGNibHdpWEc0Z0lDQWdJQ0FnSUNBZ0lDQmNJaUFnSUNBcE8xd2lYRzRnSUNBZ0lDQWdJQ2tzWEc0Z0lDQWdYVnh1WEc0Z0lDQWdjM2RwZEdOb1ltOWhjbVJmYldWMGFHOWtJRDBnWENKY0lsd2lJQ0FnSUZOM2FYUmphR0p2WVhKa0xtUmxabWx1WlUxbGRHaHZaQ2hjYmlBZ0lDQWdJQ2R6ZDJsMFkyaEVZWE5vWW05aGNtUW5MRnh1SUNBZ0lDQWdZWE41Ym1NZ0tGeHVJQ0FnSUNBZ0lDQndZWGxzYjJGa09pQlRkMmwwWTJoRVlYTm9ZbTloY21SUVlYbHNiMkZrTEZ4dUlDQWdJQ0FnS1RvZ1VISnZiV2x6WlR4VGQybDBZMmhFWVhOb1ltOWhjbVJTWlhOMWJIUStJRDArSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLQ0ZrWVhOb1ltOWhjbVJUZDJsMFkyaElZVzVrYkdWeUtTQjdYRzRnSUNBZ0lDQWdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLRnh1SUNBZ0lDQWdJQ0FnSUNBZ0oxUm9aU0JsYldKbFpHUmxaQ0JrWVhOb1ltOWhjbVFnYVhNZ2JtOTBJSEpsWVdSNUlIUnZJSE4zYVhSamFDY3NYRzRnSUNBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmtZWE5vWW05aGNtUlRkMmwwWTJoSVlXNWtiR1Z5S0hCaGVXeHZZV1FwTzF4dUlDQWdJQ0FnZlN4Y2JpQWdJQ0FwTzF4dVhHNWNJbHdpWENKY2JseHVJQ0FnSUdGdVkyaHZjbDltYjNWdVpDQTlJRVpoYkhObFhHNWNiaUFnSUNCbWIzSWdZVzVqYUc5eUlHbHVJSE4zYVhSamFHSnZZWEprWDJGdVkyaHZjbDlqWVc1a2FXUmhkR1Z6T2x4dUlDQWdJQ0FnSUNCcFppQmpiMjUwWlc1MExtTnZkVzUwS0dGdVkyaHZjaWtnUFQwZ01UcGNiaUFnSUNBZ0lDQWdJQ0FnSUdOdmJuUmxiblFnUFNCamIyNTBaVzUwTG5KbGNHeGhZMlVvWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWVc1amFHOXlMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSE4zYVhSamFHSnZZWEprWDIxbGRHaHZaQ0FySUdGdVkyaHZjaXhjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0F4TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdLVnh1SUNBZ0lDQWdJQ0FnSUNBZ1lXNWphRzl5WDJadmRXNWtJRDBnVkhKMVpWeHVJQ0FnSUNBZ0lDQWdJQ0FnWW5KbFlXdGNibHh1SUNBZ0lHbG1JRzV2ZENCaGJtTm9iM0pmWm05MWJtUTZYRzRnSUNBZ0lDQWdJSEpoYVhObElGQmhkR05vUlhKeWIzSW9YRzRnSUNBZ0lDQWdJQ0FnSUNCY0lrTnZkV3hrSUc1dmRDQnNiMk5oZEdVZ2RHaGxJR2RsZEZOamNtOXNiRk5wZW1VZ1UzZHBkR05vWW05aGNtUWdiV1YwYUc5a1hDSmNiaUFnSUNBZ0lDQWdLVnh1WEc0Z0lDQWdabkp2Ym5SbGJtUmZjR0YwYUM1M2NtbDBaVjkwWlhoMEtHTnZiblJsYm5Rc0lHVnVZMjlrYVc1blBWd2lkWFJtTFRoY0lpbGNiaUFnSUNCd2NtbHVkQ2htWENKUVlYUmphR1ZrT2lCN1puSnZiblJsYm1SZmNHRjBhSDFjSWlsY2JseHVYRzVrWldZZ2NHRjBZMmhmWjNWbGMzUmZkRzlyWlc1ZlptVjBZMmhmZEhsd1pTaGpiMjUwWlc1ME9pQnpkSElwSUMwK0lITjBjanBjYmlBZ0lDQmpZVzVrYVdSaGRHVnpJRDBnVzF4dUlDQWdJQ0FnSUNCY0ltVjRjRzl5ZENCMGVYQmxJRWQxWlhOMFZHOXJaVzVHWlhSamFFWnVJRDBnS0NrZ1BUNGdVSEp2YldselpUeHpkSEpwYm1jK08xd2lMRnh1SUNBZ0lDQWdJQ0FvWEc0Z0lDQWdJQ0FnSUNBZ0lDQmNJbVY0Y0c5eWRDQjBlWEJsSUVkMVpYTjBWRzlyWlc1R1pYUmphRVp1SUQwZ1hDSmNiaUFnSUNBZ0lDQWdJQ0FnSUZ3aUtDa2dQVDRnVUhKdmJXbHpaVHh6ZEhKcGJtYytPMXdpWEc0Z0lDQWdJQ0FnSUNrc1hHNGdJQ0FnWFZ4dVhHNGdJQ0FnY21Wd2JHRmpaVzFsYm5RZ1BTQmNJbHdpWENJdkx5QlRWVkJGVWxORlZGOVRWMGxVUTBoQlFreEZYMFZOUWtWRVgxTkVTMTlRUVZSRFNGeHVMeTljYmk4dklHUmhjMmhpYjJGeVpFbGtJR2x6SUhWdVpHVm1hVzVsWkNCbWIzSWdkR2hsSUdsdWFYUnBZV3dnWkdGemFHSnZZWEprSUdKdmIzUnpkSEpoY0M1Y2JpOHZJRUZtZEdWeUlHRWdjM1ZqWTJWemMyWjFiQ0JrWVhOb1ltOWhjbVFnYzNkcGRHTm9MQ0IwYjJ0bGJpQnlaV1p5WlhOb1pYTWdjbVZqWldsMlpTQjBhR1VnWVdOMGFYWmxYRzR2THlCa1lYTm9ZbTloY21RZ1ZWVkpSQzVjYm1WNGNHOXlkQ0IwZVhCbElFZDFaWE4wVkc5clpXNUdaWFJqYUVadUlEMGdLRnh1SUNCa1lYTm9ZbTloY21SSlpEODZJSE4wY21sdVp5eGNiaWtnUFQ0Z1VISnZiV2x6WlR4emRISnBibWMrTzF3aVhDSmNJbHh1WEc0Z0lDQWdabTl5SUdOaGJtUnBaR0YwWlNCcGJpQmpZVzVrYVdSaGRHVnpPbHh1SUNBZ0lDQWdJQ0JwWmlCamIyNTBaVzUwTG1OdmRXNTBLR05oYm1ScFpHRjBaU2tnUFQwZ01UcGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJqYjI1MFpXNTBMbkpsY0d4aFkyVW9YRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMkZ1Wkdsa1lYUmxMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsY0d4aFkyVnRaVzUwTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSURFc1hHNGdJQ0FnSUNBZ0lDQWdJQ0FwWEc1Y2JpQWdJQ0J5WVdselpTQlFZWFJqYUVWeWNtOXlLRndpUTI5MWJHUWdibTkwSUd4dlkyRjBaU0JIZFdWemRGUnZhMlZ1Um1WMFkyaEdibHdpS1Z4dVhHNWNibVJsWmlCd1lYUmphRjlsYldKbFpHUmxaRjlrWVhOb1ltOWhjbVJmZEhsd1pTaGpiMjUwWlc1ME9pQnpkSElwSUMwK0lITjBjanBjYmlBZ0lDQjBlWEJsWDNCaGRIUmxjbTRnUFNCeVpTNWpiMjF3YVd4bEtGeHVJQ0FnSUNBZ0lDQnlYQ0lvWlhod2IzSjBYRnhjWEhNcktEODZhVzUwWlhKbVlXTmxmSFI1Y0dVcFhGeGNYSE1yUlcxaVpXUmtaV1JFWVhOb1ltOWhjbVJjSWx4dUlDQWdJQ0FnSUNCeVhDSXVLajljWEZ4Y2V5a29MaW8vS1NoY1hGeGNibHhjWEZ4OU95bGNJaXhjYmlBZ0lDQWdJQ0FnY21VdVJFOVVRVXhNTEZ4dUlDQWdJQ2xjYmx4dUlDQWdJRzFoZEdOb0lEMGdkSGx3WlY5d1lYUjBaWEp1TG5ObFlYSmphQ2hqYjI1MFpXNTBLVnh1WEc0Z0lDQWdhV1lnYm05MElHMWhkR05vT2x4dUlDQWdJQ0FnSUNCeVlXbHpaU0JRWVhSamFFVnljbTl5S0Z4dUlDQWdJQ0FnSUNBZ0lDQWdYQ0pEYjNWc1pDQnViM1FnYkc5allYUmxJSFJvWlNCRmJXSmxaR1JsWkVSaGMyaGliMkZ5WkNCd2RXSnNhV01nZEhsd1pWd2lYRzRnSUNBZ0lDQWdJQ2xjYmx4dUlDQWdJR0p2WkhrZ1BTQnRZWFJqYUM1bmNtOTFjQ2d5S1Z4dVhHNGdJQ0FnYVdZZ1hDSnpkMmwwWTJoRVlYTm9ZbTloY21RNlhDSWdhVzRnWW05a2VUcGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHTnZiblJsYm5SY2JseHVJQ0FnSUcxbGRHaHZaQ0E5SUZ3aVhDSmNJbHh1SUNBdktpcGNiaUFnSUNvZ1VtVndiR0ZqWlhNZ1JHRnphR0p2WVhKa1VHRm5aU0JwYmlCMGFHVWdaWGhwYzNScGJtY2dhV1p5WVcxbElHUnZZM1Z0Wlc1MExseHVJQ0FnS2x4dUlDQWdLaUJVYUdVZ2RtRnNkV1VnYlhWemRDQmlaU0IwYUdVZ2RHRnlaMlYwSUdSaGMyaGliMkZ5WkNCVlZVbEVMMmxrSUdGalkyVndkR1ZrSUdKNVhHNGdJQ0FxSUVSaGMyaGliMkZ5WkZCaFoyVXNJRzV2ZENCMGFHVWdaVzFpWldSa1pXUXRZMjl1Wm1sbmRYSmhkR2x2YmlCVlZVbEVJSFZ6WldRZ2FXNGdkR2hsWEc0Z0lDQXFJR2x1YVhScFlXd2dMMlZ0WW1Wa1pHVmtMenAxZFdsa0lGVlNUQzVjYmlBZ0lDb3ZYRzRnSUhOM2FYUmphRVJoYzJoaWIyRnlaRG9nS0Z4dUlDQWdJR1JoYzJoaWIyRnlaRWxrT2lCemRISnBibWNzWEc0Z0lDa2dQVDRnVUhKdmJXbHpaVHg3WEc0Z0lDQWdaR0Z6YUdKdllYSmtTV1E2SUhOMGNtbHVaenRjYmlBZ0lDQmhZMk5sY0hSbFpEb2dkSEoxWlR0Y2JpQWdmVDQ3WEc1Y0lsd2lYQ0pjYmx4dUlDQWdJSFZ3WkdGMFpXUmZkSGx3WlNBOUlDaGNiaUFnSUNBZ0lDQWdiV0YwWTJndVozSnZkWEFvTVNsY2JpQWdJQ0FnSUNBZ0t5QmliMlI1TG5KemRISnBjQ2dwWEc0Z0lDQWdJQ0FnSUNzZ1hDSmNYRnhjYmx3aVhHNGdJQ0FnSUNBZ0lDc2diV1YwYUc5a0xuSnpkSEpwY0NncFhHNGdJQ0FnSUNBZ0lDc2diV0YwWTJndVozSnZkWEFvTXlsY2JpQWdJQ0FwWEc1Y2JpQWdJQ0J5WlhSMWNtNGdLRnh1SUNBZ0lDQWdJQ0JqYjI1MFpXNTBXem9nYldGMFkyZ3VjM1JoY25Rb0tWMWNiaUFnSUNBZ0lDQWdLeUIxY0dSaGRHVmtYM1I1Y0dWY2JpQWdJQ0FnSUNBZ0t5QmpiMjUwWlc1MFcyMWhkR05vTG1WdVpDZ3BJRHBkWEc0Z0lDQWdLVnh1WEc1Y2JtUmxaaUJ3WVhSamFGOXBibWwwYVdGc1gyZDFaWE4wWDNSdmEyVnVYMlpsZEdOb0tHTnZiblJsYm5RNklITjBjaWtnTFQ0Z2MzUnlPbHh1SUNBZ0lHTmhibVJwWkdGMFpYTWdQU0JiWEc0Z0lDQWdJQ0FnSUZ3aVptVjBZMmhIZFdWemRGUnZhMlZ1S0Nrc1hDSXNYRzRnSUNBZ0lDQWdJRndpWVhkaGFYUWdabVYwWTJoSGRXVnpkRlJ2YTJWdUtDa3NYQ0lzWEc0Z0lDQWdYVnh1WEc0Z0lDQWdabTl5SUdOaGJtUnBaR0YwWlNCcGJpQmpZVzVrYVdSaGRHVnpPbHh1SUNBZ0lDQWdJQ0JwWmlCamIyNTBaVzUwTG1OdmRXNTBLR05oYm1ScFpHRjBaU2tnUGowZ01UcGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJqYjI1MFpXNTBMbkpsY0d4aFkyVW9YRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMkZ1Wkdsa1lYUmxMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR05oYm1ScFpHRjBaUzV5WlhCc1lXTmxLRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCY0ltWmxkR05vUjNWbGMzUlViMnRsYmlncFhDSXNYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUZ3aVptVjBZMmhIZFdWemRGUnZhMlZ1S0hWdVpHVm1hVzVsWkNsY0lpeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXBMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJREVzWEc0Z0lDQWdJQ0FnSUNBZ0lDQXBYRzVjYmlBZ0lDQnlZV2x6WlNCUVlYUmphRVZ5Y205eUtGeHVJQ0FnSUNBZ0lDQmNJa052ZFd4a0lHNXZkQ0JzYjJOaGRHVWdkR2hsSUdsdWFYUnBZV3dnWm1WMFkyaEhkV1Z6ZEZSdmEyVnVJR05oYkd4Y0lseHVJQ0FnSUNsY2JseHVYRzVrWldZZ2NHRjBZMmhmWjNWbGMzUmZkRzlyWlc1ZmNtVm1jbVZ6YUNoamIyNTBaVzUwT2lCemRISXBJQzArSUhOMGNqcGNiaUFnSUNCd1lYUjBaWEp1Y3lBOUlGdGNiaUFnSUNBZ0lDQWdjbVV1WTI5dGNHbHNaU2hjYmlBZ0lDQWdJQ0FnSUNBZ0lISmNJbUZ6ZVc1aklHWjFibU4wYVc5dUlISmxabkpsYzJoSGRXVnpkRlJ2YTJWdVhGeGNYQ2hjWEZ4Y0tTQmNYRnhjZTF4Y1hGeHpLbHdpWEc0Z0lDQWdJQ0FnSUNBZ0lDQnlYQ0pqYjI1emRDQnVaWGRIZFdWemRGUnZhMlZ1SUQwZ1lYZGhhWFFnWm1WMFkyaEhkV1Z6ZEZSdmEyVnVYRnhjWENoY1hGeGNLVHRjWEZ4Y2N5cGNJbHh1SUNBZ0lDQWdJQ0FnSUNBZ2Nsd2liM1Z5VUc5eWRGeGNYRnd1WlcxcGRGeGNYRndvWENKY2JpQWdJQ0FnSUNBZ0lDQWdJSEpjSWlkbmRXVnpkRlJ2YTJWdUp5eGNYRnhjY3lwY1hGeGNlMXhjWEZ4ekttZDFaWE4wVkc5clpXNDZYRnhjWEhNcWJtVjNSM1ZsYzNSVWIydGxibHhjWEZ4ektseGNYRng5WENKY2JpQWdJQ0FnSUNBZ0lDQWdJSEpjSWx4Y1hGd3BPMXhjWEZ4ektsd2lYRzRnSUNBZ0lDQWdJQ0FnSUNCeVhDSnpaWFJVYVcxbGIzVjBYRnhjWENoY0lseHVJQ0FnSUNBZ0lDQWdJQ0FnY2x3aWNtVm1jbVZ6YUVkMVpYTjBWRzlyWlc0c1hGeGNYSE1xWENKY2JpQWdJQ0FnSUNBZ0lDQWdJSEpjSW1kbGRFZDFaWE4wVkc5clpXNVNaV1p5WlhOb1ZHbHRhVzVuWEZ4Y1hDaHVaWGRIZFdWemRGUnZhMlZ1WEZ4Y1hDbGNJbHh1SUNBZ0lDQWdJQ0FnSUNBZ2Nsd2lYRnhjWENrN1hGeGNYSE1xWENKY2JpQWdJQ0FnSUNBZ0lDQWdJSEpjSWx4Y1hGeDlYQ0lzWEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaUzVFVDFSQlRFd3NYRzRnSUNBZ0lDQWdJQ2tzWEc0Z0lDQWdJQ0FnSUhKbExtTnZiWEJwYkdVb1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WENKamIyNXpkQ0J5WldaeVpYTm9SM1ZsYzNSVWIydGxiaUE5SUdGemVXNWpJRnhjWEZ3b1hGeGNYQ2tnUFQ0Z1hGeGNYSHRjWEZ4Y2N5cGNJbHh1SUNBZ0lDQWdJQ0FnSUNBZ2Nsd2lZMjl1YzNRZ2JtVjNSM1ZsYzNSVWIydGxiaUE5SUdGM1lXbDBJR1psZEdOb1IzVmxjM1JVYjJ0bGJseGNYRndvWEZ4Y1hDazdYRnhjWEhNcVhDSmNiaUFnSUNBZ0lDQWdJQ0FnSUhKY0ltOTFjbEJ2Y25SY1hGeGNMbVZ0YVhSY1hGeGNLRndpWEc0Z0lDQWdJQ0FnSUNBZ0lDQnlYQ0luWjNWbGMzUlViMnRsYmljc1hGeGNYSE1xWEZ4Y1hIdGNYRnhjY3lwbmRXVnpkRlJ2YTJWdU9seGNYRnh6S201bGQwZDFaWE4wVkc5clpXNWNYRnhjY3lwY1hGeGNmVndpWEc0Z0lDQWdJQ0FnSUNBZ0lDQnlYQ0pjWEZ4Y0tUdGNYRnhjY3lwY0lseHVJQ0FnSUNBZ0lDQWdJQ0FnY2x3aWMyVjBWR2x0Wlc5MWRGeGNYRndvWENKY2JpQWdJQ0FnSUNBZ0lDQWdJSEpjSW5KbFpuSmxjMmhIZFdWemRGUnZhMlZ1TEZ4Y1hGeHpLbHdpWEc0Z0lDQWdJQ0FnSUNBZ0lDQnlYQ0puWlhSSGRXVnpkRlJ2YTJWdVVtVm1jbVZ6YUZScGJXbHVaMXhjWEZ3b2JtVjNSM1ZsYzNSVWIydGxibHhjWEZ3cFhDSmNiaUFnSUNBZ0lDQWdJQ0FnSUhKY0lseGNYRndwTzF4Y1hGeHpLbHdpWEc0Z0lDQWdJQ0FnSUNBZ0lDQnlYQ0pjWEZ4Y2ZUdGNJaXhjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxMa1JQVkVGTVRDeGNiaUFnSUNBZ0lDQWdLU3hjYmlBZ0lDQmRYRzVjYmlBZ0lDQnlaWEJzWVdObGJXVnVkQ0E5SUZ3aVhDSmNJbXhsZENCaFkzUnBkbVZFWVhOb1ltOWhjbVJKWkRvZ2MzUnlhVzVuSUh3Z2RXNWtaV1pwYm1Wa08xeHVYRzRnSUdGemVXNWpJR1oxYm1OMGFXOXVJSEpsWm5KbGMyaEhkV1Z6ZEZSdmEyVnVLQ2tnZTF4dUlDQWdJR052Ym5OMElHNWxkMGQxWlhOMFZHOXJaVzRnUFNCaGQyRnBkQ0JtWlhSamFFZDFaWE4wVkc5clpXNG9YRzRnSUNBZ0lDQmhZM1JwZG1WRVlYTm9ZbTloY21SSlpDeGNiaUFnSUNBcE8xeHVYRzRnSUNBZ2IzVnlVRzl5ZEM1bGJXbDBLQ2RuZFdWemRGUnZhMlZ1Snl3Z2UxeHVJQ0FnSUNBZ1ozVmxjM1JVYjJ0bGJqb2dibVYzUjNWbGMzUlViMnRsYml4Y2JpQWdJQ0I5S1R0Y2JseHVJQ0FnSUhObGRGUnBiV1Z2ZFhRb1hHNGdJQ0FnSUNCeVpXWnlaWE5vUjNWbGMzUlViMnRsYml4Y2JpQWdJQ0FnSUdkbGRFZDFaWE4wVkc5clpXNVNaV1p5WlhOb1ZHbHRhVzVuS0c1bGQwZDFaWE4wVkc5clpXNHBMRnh1SUNBZ0lDazdYRzRnSUgxY0lsd2lYQ0pjYmx4dUlDQWdJR1p2Y2lCd1lYUjBaWEp1SUdsdUlIQmhkSFJsY201ek9seHVJQ0FnSUNBZ0lDQjFjR1JoZEdWa0xDQmpiM1Z1ZENBOUlIQmhkSFJsY200dWMzVmliaWhjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxjR3hoWTJWdFpXNTBMRnh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVkR1Z1ZEN4Y2JpQWdJQ0FnSUNBZ0lDQWdJR052ZFc1MFBURXNYRzRnSUNBZ0lDQWdJQ2xjYmx4dUlDQWdJQ0FnSUNCcFppQmpiM1Z1ZENBOVBTQXhPbHh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhWd1pHRjBaV1JjYmx4dUlDQWdJSEpoYVhObElGQmhkR05vUlhKeWIzSW9YRzRnSUNBZ0lDQWdJRndpUTI5MWJHUWdibTkwSUd4dlkyRjBaU0IwYUdVZ1ozVmxjM1F0ZEc5clpXNGdjbVZtY21WemFDQm1kVzVqZEdsdmJsd2lYRzRnSUNBZ0tWeHVYRzVjYm1SbFppQndZWFJqYUY5elpHdGZablZ1WTNScGIyNXpLR052Ym5SbGJuUTZJSE4wY2lrZ0xUNGdjM1J5T2x4dUlDQWdJR0Z1WTJodmNsOWpZVzVrYVdSaGRHVnpJRDBnVzF4dUlDQWdJQ0FnSUNBb1hHNGdJQ0FnSUNBZ0lDQWdJQ0JjSWlBZ1kyOXVjM1FnWjJWMFUyTnliMnhzVTJsNlpTQTlJQ2dwSUQwK0lGd2lYRzRnSUNBZ0lDQWdJQ0FnSUNCY0ltOTFjbEJ2Y25RdVoyVjBQRk5wZW1VK0tDZG5aWFJUWTNKdmJHeFRhWHBsSnlrN1hDSmNiaUFnSUNBZ0lDQWdLU3hjYmlBZ0lDQWdJQ0FnS0Z4dUlDQWdJQ0FnSUNBZ0lDQWdYQ0lnSUdOdmJuTjBJR2RsZEZOamNtOXNiRk5wZW1VZ1BTQW9LU0E5UGx4Y1hGeHVYQ0pjYmlBZ0lDQWdJQ0FnSUNBZ0lGd2lJQ0FnSUc5MWNsQnZjblF1WjJWMFBGTnBlbVUrS0NkblpYUlRZM0p2Ykd4VGFYcGxKeWs3WENKY2JpQWdJQ0FnSUNBZ0tTeGNiaUFnSUNCZFhHNWNiaUFnSUNCemQybDBZMmhmWm5WdVkzUnBiMjRnUFNCY0lsd2lYQ0lnSUdOdmJuTjBJSE4zYVhSamFFUmhjMmhpYjJGeVpDQTlJR0Z6ZVc1aklDaGNiaUFnSUNCa1lYTm9ZbTloY21SSlpEb2djM1J5YVc1bkxGeHVJQ0FwT2lCUWNtOXRhWE5sUEh0Y2JpQWdJQ0JrWVhOb1ltOWhjbVJKWkRvZ2MzUnlhVzVuTzF4dUlDQWdJR0ZqWTJWd2RHVmtPaUIwY25WbE8xeHVJQ0I5UGlBOVBpQjdYRzRnSUNBZ1kyOXVjM1FnYm05eWJXRnNhWHBsWkVSaGMyaGliMkZ5WkVsa0lEMGdaR0Z6YUdKdllYSmtTV1F1ZEhKcGJTZ3BPMXh1WEc0Z0lDQWdhV1lnS0NGdWIzSnRZV3hwZW1Wa1JHRnphR0p2WVhKa1NXUXBJSHRjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpaGNiaUFnSUNBZ0lDQWdKMlJoYzJoaWIyRnlaRWxrSUcxMWMzUWdZbVVnWVNCdWIyNHRaVzF3ZEhrZ2MzUnlhVzVuSnl4Y2JpQWdJQ0FnSUNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWTI5dWMzUWdaM1ZsYzNSVWIydGxiaUE5SUdGM1lXbDBJR1psZEdOb1IzVmxjM1JVYjJ0bGJpaGNiaUFnSUNBZ0lHNXZjbTFoYkdsNlpXUkVZWE5vWW05aGNtUkpaQ3hjYmlBZ0lDQXBPMXh1WEc0Z0lDQWdZMjl1YzNRZ2NtVnpkV3gwSUQwZ1lYZGhhWFFnYjNWeVVHOXlkQzVuWlhROGUxeHVJQ0FnSUNBZ1pHRnphR0p2WVhKa1NXUTZJSE4wY21sdVp6dGNiaUFnSUNBZ0lHRmpZMlZ3ZEdWa09pQjBjblZsTzF4dUlDQWdJSDArS0NkemQybDBZMmhFWVhOb1ltOWhjbVFuTENCN1hHNGdJQ0FnSUNCa1lYTm9ZbTloY21SSlpEb2dibTl5YldGc2FYcGxaRVJoYzJoaWIyRnlaRWxrTEZ4dUlDQWdJQ0FnWjNWbGMzUlViMnRsYml4Y2JpQWdJQ0I5S1R0Y2JseHVJQ0FnSUdGamRHbDJaVVJoYzJoaWIyRnlaRWxrSUQwZ2JtOXliV0ZzYVhwbFpFUmhjMmhpYjJGeVpFbGtPMXh1WEc0Z0lDQWdjbVYwZFhKdUlISmxjM1ZzZER0Y2JpQWdmVHRjYmx4dVhDSmNJbHdpWEc1Y2JpQWdJQ0JtYjNJZ1lXNWphRzl5SUdsdUlHRnVZMmh2Y2w5allXNWthV1JoZEdWek9seHVJQ0FnSUNBZ0lDQnBaaUJqYjI1MFpXNTBMbU52ZFc1MEtHRnVZMmh2Y2lrZ1BUMGdNVHBjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCamIyNTBaVzUwTG5KbGNHeGhZMlVvWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWVc1amFHOXlMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSE4zYVhSamFGOW1kVzVqZEdsdmJpQXJJR0Z1WTJodmNpeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXhMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0tWeHVYRzRnSUNBZ2NtRnBjMlVnVUdGMFkyaEZjbkp2Y2loY2JpQWdJQ0FnSUNBZ1hDSkRiM1ZzWkNCdWIzUWdiRzlqWVhSbElIUm9aU0JUUkVzZ1oyVjBVMk55YjJ4c1UybDZaU0JtZFc1amRHbHZibHdpWEc0Z0lDQWdLVnh1WEc1Y2JtUmxaaUJ3WVhSamFGOXpaR3RmY21WMGRYSnVYMjlpYW1WamRDaGpiMjUwWlc1ME9pQnpkSElwSUMwK0lITjBjanBjYmlBZ0lDQmpZVzVrYVdSaGRHVnpJRDBnVzF4dUlDQWdJQ0FnSUNCY0lpQWdJQ0J6WlhSVWFHVnRaVTF2WkdVc1hGeGNYRzRnSUgwN1hDSXNYRzRnSUNBZ0lDQWdJRndpSUNBZ0lITmxkRlJvWlcxbFRXOWtaU3hjWEZ4Y2JpQWdJQ0IxYm0xdmRXNTBMRnhjWEZ4dUlDQjlPMXdpTEZ4dUlDQWdJQ0FnSUNCY0lpQWdJQ0IxYm0xdmRXNTBMRnhjWEZ4dUlDQWdJSE5sZEZSb1pXMWxUVzlrWlN4Y1hGeGNiaUFnZlR0Y0lpeGNiaUFnSUNCZFhHNWNiaUFnSUNCbWIzSWdZMkZ1Wkdsa1lYUmxJR2x1SUdOaGJtUnBaR0YwWlhNNlhHNGdJQ0FnSUNBZ0lHbG1JR052Ym5SbGJuUXVZMjkxYm5Rb1kyRnVaR2xrWVhSbEtTQTlQU0F4T2x4dUlDQWdJQ0FnSUNBZ0lDQWdiR2x1WlhNZ1BTQmpZVzVrYVdSaGRHVXVjM0JzYVhSc2FXNWxjeWdwWEc1Y2JpQWdJQ0FnSUNBZ0lDQWdJR05zYjNOcGJtY2dQU0JzYVc1bGN5NXdiM0FvS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdZbTlrZVNBOUlGd2lYRnhjWEc1Y0lpNXFiMmx1S0d4cGJtVnpLVnh1WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1kyOXVkR1Z1ZEM1eVpYQnNZV05sS0Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOaGJtUnBaR0YwWlN4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCaWIyUjVYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdLeUJjSWx4Y1hGeHVYQ0pjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FySUZ3aUlDQWdJSE4zYVhSamFFUmhjMmhpYjJGeVpDeGNYRnhjYmx3aVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0t5QmpiRzl6YVc1bkxGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lERXNYRzRnSUNBZ0lDQWdJQ0FnSUNBcFhHNWNiaUFnSUNCeVlXbHpaU0JRWVhSamFFVnljbTl5S0Z4dUlDQWdJQ0FnSUNCY0lrTnZkV3hrSUc1dmRDQnNiMk5oZEdVZ2RHaGxJRVZ0WW1Wa1pHVmtSR0Z6YUdKdllYSmtJSEpsZEhWeWJpQnZZbXBsWTNSY0lseHVJQ0FnSUNsY2JseHVYRzVrWldZZ2NHRjBZMmhmYzJScktITmthMTl3WVhSb09pQlFZWFJvS1NBdFBpQk9iMjVsT2x4dUlDQWdJR052Ym5SbGJuUWdQU0J6Wkd0ZmNHRjBhQzV5WldGa1gzUmxlSFFvWlc1amIyUnBibWM5WENKMWRHWXRPRndpS1Z4dVhHNGdJQ0FnYVdZZ1hDSlRWVkJGVWxORlZGOVRWMGxVUTBoQlFreEZYMFZOUWtWRVgxTkVTMTlRUVZSRFNGd2lJR2x1SUdOdmJuUmxiblE2WEc0Z0lDQWdJQ0FnSUhCeWFXNTBLR1pjSWtGc2NtVmhaSGtnY0dGMFkyaGxaRG9nZTNOa2ExOXdZWFJvZlZ3aUtWeHVJQ0FnSUNBZ0lDQnlaWFIxY201Y2JseHVJQ0FnSUdOdmJuUmxiblFnUFNCd1lYUmphRjluZFdWemRGOTBiMnRsYmw5bVpYUmphRjkwZVhCbEtHTnZiblJsYm5RcFhHNGdJQ0FnWTI5dWRHVnVkQ0E5SUhCaGRHTm9YMlZ0WW1Wa1pHVmtYMlJoYzJoaWIyRnlaRjkwZVhCbEtHTnZiblJsYm5RcFhHNGdJQ0FnWTI5dWRHVnVkQ0E5SUhCaGRHTm9YMmx1YVhScFlXeGZaM1ZsYzNSZmRHOXJaVzVmWm1WMFkyZ29ZMjl1ZEdWdWRDbGNiaUFnSUNCamIyNTBaVzUwSUQwZ2NHRjBZMmhmWjNWbGMzUmZkRzlyWlc1ZmNtVm1jbVZ6YUNoamIyNTBaVzUwS1Z4dUlDQWdJR052Ym5SbGJuUWdQU0J3WVhSamFGOXpaR3RmWm5WdVkzUnBiMjV6S0dOdmJuUmxiblFwWEc0Z0lDQWdZMjl1ZEdWdWRDQTlJSEJoZEdOb1gzTmthMTl5WlhSMWNtNWZiMkpxWldOMEtHTnZiblJsYm5RcFhHNWNiaUFnSUNCelpHdGZjR0YwYUM1M2NtbDBaVjkwWlhoMEtHTnZiblJsYm5Rc0lHVnVZMjlrYVc1blBWd2lkWFJtTFRoY0lpbGNiaUFnSUNCd2NtbHVkQ2htWENKUVlYUmphR1ZrT2lCN2MyUnJYM0JoZEdoOVhDSXBYRzVjYmx4dVpHVm1JRzFoYVc0b0tTQXRQaUJwYm5RNlhHNGdJQ0FnY0dGeWMyVnlJRDBnWVhKbmNHRnljMlV1UVhKbmRXMWxiblJRWVhKelpYSW9YRzRnSUNBZ0lDQWdJR1JsYzJOeWFYQjBhVzl1UFNoY2JpQWdJQ0FnSUNBZ0lDQWdJRndpUVhCd2JIa2dkR2hsSUhOM2FYUmphR0ZpYkdVdFpHRnphR0p2WVhKa0lIQmhkR05vSUhSdklHRWdYQ0pjYmlBZ0lDQWdJQ0FnSUNBZ0lGd2lVM1Z3WlhKelpYUWdOaTR4TG5nZ2MyOTFjbU5sSUdOb1pXTnJiM1YwTGx3aVhHNGdJQ0FnSUNBZ0lDbGNiaUFnSUNBcFhHNWNiaUFnSUNCd1lYSnpaWEl1WVdSa1gyRnlaM1Z0Wlc1MEtGeHVJQ0FnSUNBZ0lDQmNJbk4xY0dWeWMyVjBYM0p2YjNSY0lpeGNiaUFnSUNBZ0lDQWdkSGx3WlQxUVlYUm9MRnh1SUNBZ0lDQWdJQ0JvWld4d1BWd2lVR0YwYUNCMGJ5QjBhR1VnUVhCaFkyaGxJRk4xY0dWeWMyVjBJSE52ZFhKalpTQmphR1ZqYTI5MWRGd2lMRnh1SUNBZ0lDbGNibHh1SUNBZ0lHRnlaM01nUFNCd1lYSnpaWEl1Y0dGeWMyVmZZWEpuY3lncFhHNGdJQ0FnY205dmRDQTlJR0Z5WjNNdWMzVndaWEp6WlhSZmNtOXZkQzV5WlhOdmJIWmxLQ2xjYmx4dUlDQWdJR1p5YjI1MFpXNWtYM0JoZEdnZ1BTQnliMjkwSUM4Z1JsSlBUbFJGVGtSZlJrbE1SVnh1SUNBZ0lITmthMTl3WVhSb0lEMGdjbTl2ZENBdklGTkVTMTlHU1V4RlhHNWNiaUFnSUNCdGFYTnphVzVuSUQwZ1cxeHVJQ0FnSUNBZ0lDQndZWFJvWEc0Z0lDQWdJQ0FnSUdadmNpQndZWFJvSUdsdUlGdG1jbTl1ZEdWdVpGOXdZWFJvTENCelpHdGZjR0YwYUYxY2JpQWdJQ0FnSUNBZ2FXWWdibTkwSUhCaGRHZ3VaWGhwYzNSektDbGNiaUFnSUNCZFhHNWNiaUFnSUNCcFppQnRhWE56YVc1bk9seHVJQ0FnSUNBZ0lDQndjbWx1ZENoY2JpQWdJQ0FnSUNBZ0lDQWdJRndpVkdobElIUmhjbWRsZENCa2IyVnpJRzV2ZENCaGNIQmxZWElnZEc4Z1ltVWdZU0JqYjIxd1lYUnBZbXhsSUZ3aVhHNGdJQ0FnSUNBZ0lDQWdJQ0JjSWxOMWNHVnljMlYwSUhOdmRYSmpaU0JqYUdWamEyOTFkQzVjSWl4Y2JpQWdJQ0FnSUNBZ0lDQWdJR1pwYkdVOWMzbHpMbk4wWkdWeWNpeGNiaUFnSUNBZ0lDQWdLVnh1WEc0Z0lDQWdJQ0FnSUdadmNpQnRhWE56YVc1blgzQmhkR2dnYVc0Z2JXbHpjMmx1WnpwY2JpQWdJQ0FnSUNBZ0lDQWdJSEJ5YVc1MEtHWmNJazFwYzNOcGJtYzZJSHR0YVhOemFXNW5YM0JoZEdoOVhDSXNJR1pwYkdVOWMzbHpMbk4wWkdWeWNpbGNibHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdNbHh1WEc0Z0lDQWdkSEo1T2x4dUlDQWdJQ0FnSUNCd1lYUmphRjltY205dWRHVnVaQ2htY205dWRHVnVaRjl3WVhSb0tWeHVJQ0FnSUNBZ0lDQndZWFJqYUY5elpHc29jMlJyWDNCaGRHZ3BYRzRnSUNBZ1pYaGpaWEIwSUZCaGRHTm9SWEp5YjNJZ1lYTWdaWEp5YjNJNlhHNGdJQ0FnSUNBZ0lIQnlhVzUwS0daY0lsQmhkR05vSUdaaGFXeGxaRG9nZTJWeWNtOXlmVndpTENCbWFXeGxQWE41Y3k1emRHUmxjbklwWEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUF4WEc1Y2JpQWdJQ0J3Y21sdWRDaGNJbEJoZEdOb0lHTnZiWEJzWlhSbFpDQnpkV05qWlhOelpuVnNiSGt1WENJcFhHNGdJQ0FnY21WMGRYSnVJREJjYmx4dVhHNXBaaUJmWDI1aGJXVmZYeUE5UFNCY0lsOWZiV0ZwYmw5ZlhDSTZYRzRnSUNBZ2NtRnBjMlVnVTNsemRHVnRSWGhwZENodFlXbHVLQ2twWEc1Z08xeHVYRzVqYjI1emRDQldSVkpKUmxsZlVFRlVRMGhmVTBnZ1BTQmdJeUV2ZFhOeUwySnBiaTlsYm5ZZ1ltRnphRnh1WEc1elpYUWdMV1YxYnlCd2FYQmxabUZwYkZ4dVhHNVRWVkJGVWxORlZGOVNUMDlVUFZ4Y0pIc3hPajlWYzJGblpUb2dkbVZ5YVdaNVgzQmhkR05vTG5Ob0lDOXdZWFJvTDNSdkwzTjFjR1Z5YzJWMGZWeHVYRzVHVWs5T1ZFVk9SRjlHU1V4RlBWd2lKRk5WVUVWU1UwVlVYMUpQVDFRdmMzVndaWEp6WlhRdFpuSnZiblJsYm1RdmMzSmpMMlZ0WW1Wa1pHVmtMMmx1WkdWNExuUnplRndpWEc1VFJFdGZSa2xNUlQxY0lpUlRWVkJGVWxORlZGOVNUMDlVTDNOMWNHVnljMlYwTFdWdFltVmtaR1ZrTFhOa2F5OXpjbU12YVc1a1pYZ3VkSE5jSWx4dVhHNTBaWE4wSUMxbUlGd2lKRVpTVDA1VVJVNUVYMFpKVEVWY0lseHVkR1Z6ZENBdFppQmNJaVJUUkV0ZlJrbE1SVndpWEc1Y2JtZHlaWEFnTFhFZ1hGeGNYRnh1SUNCY0lsTlZVRVZTVTBWVVgxTlhTVlJEU0VGQ1RFVmZSVTFDUlVSZlVFRlVRMGhjSWlCY1hGeGNYRzRnSUZ3aUpFWlNUMDVVUlU1RVgwWkpURVZjSWx4dVhHNW5jbVZ3SUMxeElGeGNYRnhjYmlBZ1hDSW5jM2RwZEdOb1JHRnphR0p2WVhKa0oxd2lJRnhjWEZ4Y2JpQWdYQ0lrUmxKUFRsUkZUa1JmUmtsTVJWd2lYRzVjYm1keVpYQWdMWEVnWEZ4Y1hGeHVJQ0JjSW1SaGMyaGliMkZ5WkZOM2FYUmphRWhoYm1Sc1pYSmNJaUJjWEZ4Y1hHNGdJRndpSkVaU1QwNVVSVTVFWDBaSlRFVmNJbHh1WEc1bmNtVndJQzF4SUZ4Y1hGeGNiaUFnWENKVFZWQkZVbE5GVkY5VFYwbFVRMGhCUWt4RlgwVk5Ra1ZFWDFORVMxOVFRVlJEU0Z3aUlGeGNYRnhjYmlBZ1hDSWtVMFJMWDBaSlRFVmNJbHh1WEc1bmNtVndJQzF4SUZ4Y1hGeGNiaUFnWENKemQybDBZMmhFWVhOb1ltOWhjbVE2WENJZ1hGeGNYRnh1SUNCY0lpUlRSRXRmUmtsTVJWd2lYRzVjYm1keVpYQWdMWEVnWEZ4Y1hGeHVJQ0JjSW1GamRHbDJaVVJoYzJoaWIyRnlaRWxrWENJZ1hGeGNYRnh1SUNCY0lpUlRSRXRmUmtsTVJWd2lYRzVjYm1keVpYQWdMWEVnWEZ4Y1hGeHVJQ0JjSW1abGRHTm9SM1ZsYzNSVWIydGxiaWhjSWlCY1hGeGNYRzRnSUZ3aUpGTkVTMTlHU1V4RlhDSmNibHh1WldOb2J5QmNJbFJvWlNCemQybDBZMmhoWW14bExXUmhjMmhpYjJGeVpDQndZWFJqYUNCcGN5QndjbVZ6Wlc1MExsd2lYRzVnTzF4dVhHNWpiMjV6ZENCQ1ZVbE1SRjlUUkV0ZlUwZ2dQU0JnSXlFdmRYTnlMMkpwYmk5bGJuWWdZbUZ6YUZ4dVhHNXpaWFFnTFdWMWJ5QndhWEJsWm1GcGJGeHVYRzVUVlZCRlVsTkZWRjlTVDA5VVBWeGNKSHN4T2o5VmMyRm5aVG9nWW5WcGJHUXRjMlJyTG5Ob0lDOXdZWFJvTDNSdkwzTjFjR1Z5YzJWMGZWeHVYRzVUUkV0ZlVrOVBWRDFjSWlSVFZWQkZVbE5GVkY5U1QwOVVMM04xY0dWeWMyVjBMV1Z0WW1Wa1pHVmtMWE5rYTF3aVhHNWNibWxtSUZzZ0lTQXRaaUJjSWlSVFJFdGZVazlQVkM5d1lXTnJZV2RsTG1wemIyNWNJaUJkT3lCMGFHVnVYRzRnSUdWamFHOGdYQ0pOYVhOemFXNW5JRk5FU3lCd1lXTnJZV2RsT2lBa1UwUkxYMUpQVDFSY0lpQStKakpjYmlBZ1pYaHBkQ0F4WEc1bWFWeHVYRzVqWkNCY0lpUlRSRXRmVWs5UFZGd2lYRzVjYm01d2JTQmphVnh1WEc1dWNHMGdjblZ1SUdKMWFXeGtYRzVjYm1WamFHOWNibVZqYUc4Z1hDSkZiV0psWkdSbFpDQlRSRXNnWW5WcGJHUWdZMjl0Y0d4bGRHVmtMbHdpWEc1bFkyaHZJRndpVDNWMGNIVjBJR1JwY21WamRHOXllVHBjSWx4dVptbHVaQ0F1SUZ4Y1hGeGNiaUFnTFcxaGVHUmxjSFJvSURJZ1hGeGNYRnh1SUNBdGRIbHdaU0JrSUZ4Y1hGeGNiaUFnWEZ4Y1hDZ2dMVzVoYldVZ1pHbHpkQ0F0YnlBdGJtRnRaU0JzYVdJZ1hGeGNYQ2tnWEZ4Y1hGeHVJQ0F0Y0hKcGJuUmNibUE3WEc1Y2JtTnZibk4wSUVKVlNVeEVYMFpTVDA1VVJVNUVYMU5JSUQwZ1lDTWhMM1Z6Y2k5aWFXNHZaVzUySUdKaGMyaGNibHh1YzJWMElDMWxkVzhnY0dsd1pXWmhhV3hjYmx4dVUxVlFSVkpUUlZSZlVrOVBWRDFjWENSN01Uby9WWE5oWjJVNklHSjFhV3hrTFhOMWNHVnljMlYwTFdaeWIyNTBaVzVrTG5Ob0lDOXdZWFJvTDNSdkwzTjFjR1Z5YzJWMGZWeHVYRzVHVWs5T1ZFVk9SRjlTVDA5VVBWd2lKRk5WVUVWU1UwVlVYMUpQVDFRdmMzVndaWEp6WlhRdFpuSnZiblJsYm1SY0lseHVYRzVwWmlCYklDRWdMV1lnWENJa1JsSlBUbFJGVGtSZlVrOVBWQzl3WVdOcllXZGxMbXB6YjI1Y0lpQmRPeUIwYUdWdVhHNGdJR1ZqYUc4Z1hDSk5hWE56YVc1bklGTjFjR1Z5YzJWMElHWnliMjUwWlc1a09pQWtSbEpQVGxSRlRrUmZVazlQVkZ3aUlENG1NbHh1SUNCbGVHbDBJREZjYm1acFhHNWNibU5rSUZ3aUpFWlNUMDVVUlU1RVgxSlBUMVJjSWx4dVhHNXVjRzBnWTJsY2JseHVibkJ0SUhKMWJpQmlkV2xzWkZ4dVhHNWxZMmh2SUZ3aVUzVndaWEp6WlhRZ1puSnZiblJsYm1RZ1luVnBiR1FnWTI5dGNHeGxkR1ZrTGx3aVhHNWdPMXh1WEc1amIyNXpkQ0JRUVZSRFNGOUJUa1JmUWxWSlRFUmZVMGdnUFNCZ0l5RXZkWE55TDJKcGJpOWxibllnWW1GemFGeHVYRzV6WlhRZ0xXVjFieUJ3YVhCbFptRnBiRnh1WEc1VFZWQkZVbE5GVkY5U1QwOVVQVnhjSkhzeE9qOVZjMkZuWlRvZ2NHRjBZMmd0WVc1a0xXSjFhV3hrTG5Ob0lDOXdZWFJvTDNSdkwzTjFjR1Z5YzJWMGZWeHVYRzVUUTFKSlVGUmZSRWxTUFNRb1hHNGdJR05rSUZ3aUpDaGthWEp1WVcxbElGd2lYRndrZTBKQlUwaGZVMDlWVWtORld6QmRmVndpS1Z3aVhHNGdJSEIzWkZ4dUtWeHVYRzVRVWs5S1JVTlVYMUpQVDFROUpDaGNiaUFnWTJRZ1hDSWtVME5TU1ZCVVgwUkpVaTh1TGx3aVhHNGdJSEIzWkZ4dUtWeHVYRzV3ZVhSb2IyNHpJRnhjWEZ4Y2JpQWdYQ0lrVUZKUFNrVkRWRjlTVDA5VUwzQmhkR05vWlhNdllYQndiSGxmYzNWd1pYSnpaWFJmTmw4eFgzQmhkR05vTG5CNVhDSWdYRnhjWEZ4dUlDQmNJaVJUVlZCRlVsTkZWRjlTVDA5VVhDSmNibHh1WENJa1VGSlBTa1ZEVkY5U1QwOVVMM0JoZEdOb1pYTXZkbVZ5YVdaNVgzQmhkR05vTG5Ob1hDSWdYRnhjWEZ4dUlDQmNJaVJUVlZCRlVsTkZWRjlTVDA5VVhDSmNibHh1WENJa1UwTlNTVkJVWDBSSlVpOWlkV2xzWkMxelpHc3VjMmhjSWlCY1hGeGNYRzRnSUZ3aUpGTlZVRVZTVTBWVVgxSlBUMVJjSWx4dVhHNWNJaVJUUTFKSlVGUmZSRWxTTDJKMWFXeGtMWE4xY0dWeWMyVjBMV1p5YjI1MFpXNWtMbk5vWENJZ1hGeGNYRnh1SUNCY0lpUlRWVkJGVWxORlZGOVNUMDlVWENKY2JseHVaV05vYjF4dVpXTm9ieUJjSWxCaGRHTm9JR0Z1WkNCbWNtOXVkR1Z1WkNCaWRXbHNaSE1nWTI5dGNHeGxkR1ZrTGx3aVhHNWdPMXh1WEc1amIyNXpkQ0JDVlVsTVJGOUVUME5MUlZKZlUwZ2dQU0JnSXlFdmRYTnlMMkpwYmk5bGJuWWdZbUZ6YUZ4dVhHNXpaWFFnTFdWMWJ5QndhWEJsWm1GcGJGeHVYRzVUVlZCRlVsTkZWRjlTVDA5VVBWeGNKSHN4T2o5VmMyRm5aVG9nWW5WcGJHUXRaRzlqYTJWeUxXbHRZV2RsTG5Ob0lDOXdZWFJvTDNSdkwzTjFjR1Z5YzJWMElGdHBiV0ZuWlMxMFlXZGRmVnh1U1UxQlIwVmZWRUZIUFZ4Y0pIc3lPaTFzYjJOaGJDOXpkWEJsY25ObGRDMXpkMmwwWTJoaFlteGxPall1TVM0d2ZWeHVYRzVUUTFKSlVGUmZSRWxTUFNRb1hHNGdJR05rSUZ3aUpDaGthWEp1WVcxbElGd2lYRndrZTBKQlUwaGZVMDlWVWtORld6QmRmVndpS1Z3aVhHNGdJSEIzWkZ4dUtWeHVYRzVRVWs5S1JVTlVYMUpQVDFROUpDaGNiaUFnWTJRZ1hDSWtVME5TU1ZCVVgwUkpVaTh1TGx3aVhHNGdJSEIzWkZ4dUtWeHVYRzV3ZVhSb2IyNHpJRnhjWEZ4Y2JpQWdYQ0lrVUZKUFNrVkRWRjlTVDA5VUwzQmhkR05vWlhNdllYQndiSGxmYzNWd1pYSnpaWFJmTmw4eFgzQmhkR05vTG5CNVhDSWdYRnhjWEZ4dUlDQmNJaVJUVlZCRlVsTkZWRjlTVDA5VVhDSmNibHh1WENJa1VGSlBTa1ZEVkY5U1QwOVVMM0JoZEdOb1pYTXZkbVZ5YVdaNVgzQmhkR05vTG5Ob1hDSWdYRnhjWEZ4dUlDQmNJaVJUVlZCRlVsTkZWRjlTVDA5VVhDSmNibHh1WTJRZ1hDSWtVMVZRUlZKVFJWUmZVazlQVkZ3aVhHNWNibVJ2WTJ0bGNpQmlkV2xzWkNCY1hGeGNYRzRnSUMwdGRHRnlaMlYwSUd4bFlXNGdYRnhjWEZ4dUlDQXRMWFJoWnlCY0lpUkpUVUZIUlY5VVFVZGNJaUJjWEZ4Y1hHNGdJQzVjYmx4dVpXTm9ieUJjSWtKMWFXeDBJRVJ2WTJ0bGNpQnBiV0ZuWlRvZ0pFbE5RVWRGWDFSQlIxd2lYRzVnTzF4dVhHNWpiMjV6ZENCU1JVRkVUVVVnUFNCZ0l5QWtlMU5WVUVWU1UwVlVYMUJNVlVkSlRsOUpSSDFjYmx4dVRYVnNkR2t0ZEdWdVlXNTBMQ0J2Y21jdFlXZHViM04wYVdNZ1UzVndaWEp6WlhRZ1pHRnphR0p2WVhKa0lHVnRZbVZrSUhCc2RXZHBiaUFvY0dGMFkyZ3RZVzVrTFdKMWFXeGtJSE4wY21GMFpXZDVLUzVjYmx4dVZHaHBjeUJwY3lCdWIzUWdZU0JuWlc1bGNtRjBaV1FnY0d4MVoybHVJR3hwYTJVZ2RHaGxJRXRwWW1GdVlTQjJZWEpwWVc1MExpQkpibk4wWldGa0xDQkVaV05oWmlCb2IyeGtjMXh1Y0dGMFkyZ2djMk55YVhCMGN5QjBhR0YwSUcxdlpHbG1lU0JUZFhCbGNuTmxkQ2R6SUdsdWRHVnlibUZzSUdWdFltVmtaR1ZrSUdaeWIyNTBaVzVrSUdGdVpDQmxiV0psWkdSbFpGeHVVMFJMSUhOdmRYSmpaU0JtYVd4bGN5QjBieUJoWkdRZ1lTQmNYR0J6ZDJsMFkyaEVZWE5vWW05aGNtUmNYR0FnYldWMGFHOWtMaUJVYUdVZ1pYaHBjM1JwYm1jZ2FXWnlZVzFsWEc1bGJHVnRaVzUwTENCa2IyTjFiV1Z1ZEN3Z1kyOXVkR1Z1ZEZkcGJtUnZkeXdnVW1WaFkzUWdjblZ1ZEdsdFpTd2dZVzVrSUZOM2FYUmphR0p2WVhKa0lFMWxjM05oWjJWRGFHRnVibVZzWEc1aGNtVWdjSEpsYzJWeWRtVmtJR0ZqY205emN5QmtZWE5vWW05aGNtUWdjM2RwZEdOb1pYTXVYRzVjYmlNaklGZG9ZWFFnYVhRZ2NHRjBZMmhsYzF4dVhHNHRJRnhjWUhOMWNHVnljMlYwTFdaeWIyNTBaVzVrTDNOeVl5OWxiV0psWkdSbFpDOXBibVJsZUM1MGMzaGNYR0FnNG9DVUlHRmtaSE1nWEZ4Z2MzZHBkR05vUkdGemFHSnZZWEprWEZ4Z0lIUnZJSFJvWlZ4dUlDQlRkMmwwWTJoaWIyRnlaQ0JqYUdGdWJtVnNPeUJ5WlhCc1lXTmxjeUJ2Ym14NUlGeGNZRVJoYzJoaWIyRnlaRkJoWjJWY1hHQXVYRzR0SUZ4Y1lITjFjR1Z5YzJWMExXVnRZbVZrWkdWa0xYTmtheTl6Y21NdmFXNWtaWGd1ZEhOY1hHQWc0b0NVSUdGa1pITmNiaUFnWEZ4Z1pXMWlaV1JrWldSRVlYTm9ZbTloY21RdWMzZHBkR05vUkdGemFHSnZZWEprS0dSaGMyaGliMkZ5WkVsa0tWeGNZRHNnY21WeGRXVnpkSE1nWVNCbmRXVnpkQ0IwYjJ0bGJpQm1iM0pjYmlBZ2RHaGxJSE5sYkdWamRHVmtJR1JoYzJoaWIyRnlaRHNnY21WbWNtVnphR1Z6SUdaMWRIVnlaU0JuZFdWemRDQjBiMnRsYm5NZ1ptOXlJSFJvWlNCaFkzUnBkbVVnWkdGemFHSnZZWEprTGx4dVhHNGpJeUJDZFdsc1pGeHVYRzVjWEdCY1hHQmNYR0JpWVhOb1hHNGpJRUZ3Y0d4NUlIQmhkR05vSUNzZ2RtVnlhV1o1SUNzZ1luVnBiR1FnVTBSTElDc2dZblZwYkdRZ1puSnZiblJsYm1SY2JtSjFhV3hrTDNCaGRHTm9MV0Z1WkMxaWRXbHNaQzV6YUNBdmNHRjBhQzkwYnk5emRYQmxjbk5sZEZ4dVhHNGpJRTl5SUdKMWFXeGtJR0VnUkc5amEyVnlJR2x0WVdkbFhHNWlkV2xzWkM5aWRXbHNaQzFrYjJOclpYSXRhVzFoWjJVdWMyZ2dMM0JoZEdndmRHOHZjM1Z3WlhKelpYUWdjbVZuYVhOMGNua3VaWGhoYlhCc1pTNWpiMjB2YzNWd1pYSnpaWFF0YzNkcGRHTm9ZV0pzWlRvMkxqRXVNRnh1WEZ4Z1hGeGdYRnhnWEc1Y2JsUm9aU0J3WVhSamFHVmtJRk5FU3lCdGRYTjBJR0psSUhCaFkydGxaQ0JoYm1RZ2FXNXpkR0ZzYkdWa0lHbHVkRzhnZEdobElFRnVaM1ZzWVhJZ1lYQndiR2xqWVhScGIyNDZYRzVjYmx4Y1lGeGNZRnhjWUdKaGMyaGNibU5rSUM5d1lYUm9MM1J2TDNOMWNHVnljMlYwTDNOMWNHVnljMlYwTFdWdFltVmtaR1ZrTFhOa2ExeHVibkJ0SUdOcElDWW1JRzV3YlNCeWRXNGdZblZwYkdRZ0ppWWdibkJ0SUhCaFkydGNibU5rSUM5d1lYUm9MM1J2TDJGdVozVnNZWEl0WVhCd1hHNXVjRzBnYVc1emRHRnNiQ0F2Y0dGMGFDOTBieTl6ZFhCbGNuTmxkQzl6ZFhCbGNuTmxkQzFsYldKbFpHUmxaQzF6WkdzdmMzVndaWEp6WlhRdGRXa3RaVzFpWldSa1pXUXRjMlJyTFNvdWRHZDZYRzVjWEdCY1hHQmNYR0JjYmx4dVZtVnljMmx2YmpvZ0pIdFRWVkJGVWxORlZGOVFURlZIU1U1ZlZrVlNVMGxQVG4xY2JtQTdYRzVjYmk4cUtseHVJQ29nVW1WMGRYSnVjeUIwYUdVZ1puVnNiQ0J6WlhRZ2IyWWdjR0YwWTJnZ1lXNWtJR0oxYVd4a0lITmpjbWx3ZENCbWFXeGxjeTVjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlITjFjR1Z5YzJWMFVHRjBZMmhHYVd4bGN5Z3BPaUJUZFhCbGNuTmxkRkJoZEdOb1JtbHNaVnRkSUh0Y2JpQWdjbVYwZFhKdUlGdGNiaUFnSUNCN0lIQmhkR2c2SUZ3aWNHRjBZMmhsY3k5aGNIQnNlVjl6ZFhCbGNuTmxkRjgyWHpGZmNHRjBZMmd1Y0hsY0lpd2dZMjl1ZEdWdWREb2dRVkJRVEZsZlVFRlVRMGhmVUZrc0lHVjRaV04xZEdGaWJHVTZJSFJ5ZFdVZ2ZTeGNiaUFnSUNCN0lIQmhkR2c2SUZ3aWNHRjBZMmhsY3k5MlpYSnBabmxmY0dGMFkyZ3VjMmhjSWl3Z1kyOXVkR1Z1ZERvZ1ZrVlNTVVpaWDFCQlZFTklYMU5JTENCbGVHVmpkWFJoWW14bE9pQjBjblZsSUgwc1hHNGdJQ0FnZXlCd1lYUm9PaUJjSW1KMWFXeGtMMkoxYVd4a0xYTmtheTV6YUZ3aUxDQmpiMjUwWlc1ME9pQkNWVWxNUkY5VFJFdGZVMGdzSUdWNFpXTjFkR0ZpYkdVNklIUnlkV1VnZlN4Y2JpQWdJQ0I3SUhCaGRHZzZJRndpWW5WcGJHUXZZblZwYkdRdGMzVndaWEp6WlhRdFpuSnZiblJsYm1RdWMyaGNJaXdnWTI5dWRHVnVkRG9nUWxWSlRFUmZSbEpQVGxSRlRrUmZVMGdzSUdWNFpXTjFkR0ZpYkdVNklIUnlkV1VnZlN4Y2JpQWdJQ0I3SUhCaGRHZzZJRndpWW5WcGJHUXZjR0YwWTJndFlXNWtMV0oxYVd4a0xuTm9YQ0lzSUdOdmJuUmxiblE2SUZCQlZFTklYMEZPUkY5Q1ZVbE1SRjlUU0N3Z1pYaGxZM1YwWVdKc1pUb2dkSEoxWlNCOUxGeHVJQ0FnSUhzZ2NHRjBhRG9nWENKaWRXbHNaQzlpZFdsc1pDMWtiMk5yWlhJdGFXMWhaMlV1YzJoY0lpd2dZMjl1ZEdWdWREb2dRbFZKVEVSZlJFOURTMFZTWDFOSUxDQmxlR1ZqZFhSaFlteGxPaUIwY25WbElIMHNYRzRnSUNBZ2V5QndZWFJvT2lCY0lsSkZRVVJOUlM1dFpGd2lMQ0JqYjI1MFpXNTBPaUJTUlVGRVRVVWdmU3hjYmlBZ1hUdGNibjFjYmlKZGZRPT0iXX0=
|
|
837
|
+
//# sourceMappingURL=templates.js.map
|
|
838
|
+
//# sourceMappingURL=templates.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins/superset/templates.cjs","sourceRoot":"","sources":["plugins/superset/templates.js"],"names":[],"mappings":";;AAszBA,gDAUC;AAh0BD;;;;;;;;;;;;;GAaG;AACH,+CAA4E;AAC5E,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgmBtB,CAAC;AACF,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCvB,CAAC;AACF,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BpB,CAAC;AACF,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;CAoBzB,CAAC;AACF,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+B1B,CAAC;AACF,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCvB,CAAC;AACF,MAAM,MAAM,GAAG,KAAK,gCAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAqC3B,qCAAuB;CACjC,CAAC;AACF;;GAEG;AACH,SAAgB,kBAAkB;IAC9B,OAAO;QACH,EAAE,IAAI,EAAE,qCAAqC,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE;QAC1F,EAAE,IAAI,EAAE,yBAAyB,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,IAAI,EAAE;QAC/E,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE;QACvE,EAAE,IAAI,EAAE,kCAAkC,EAAE,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,IAAI,EAAE;QAC1F,EAAE,IAAI,EAAE,0BAA0B,EAAE,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,IAAI,EAAE;QACnF,EAAE,IAAI,EAAE,6BAA6B,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,IAAI,EAAE;QACnF,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE;KACzC,CAAC;AACN,CAAC;AACD,qCAAqC"}
|
|
@@ -35,5 +35,5 @@ Object.defineProperty(exports, "supersetDashboardEmbedPlugin", { enumerable: tru
|
|
|
35
35
|
Object.defineProperty(exports, "createSupersetDashboardEmbedPlugin", { enumerable: true, get: function () { return installer_js_1.createSupersetDashboardEmbedPlugin; } });
|
|
36
36
|
Object.defineProperty(exports, "buildSupersetEmbedUrl", { enumerable: true, get: function () { return installer_js_1.buildSupersetEmbedUrl; } });
|
|
37
37
|
Object.defineProperty(exports, "SUPERSET_DEFAULT_BASE_PATH", { enumerable: true, get: function () { return installer_js_1.SUPERSET_DEFAULT_BASE_PATH; } });
|
|
38
|
-
//# sourceMappingURL=
|
|
39
|
-
//# sourceMappingURL=
|
|
38
|
+
//# sourceMappingURL=types.js.map
|
|
39
|
+
//# sourceMappingURL=types.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins/superset/types.cjs","sourceRoot":"","sources":["plugins/superset/types.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA;;;;;GAKG;AACH,mDAAiC;AACjC,6CAAqH;AAA5G,iHAAA,kBAAkB,OAAA;AAAE,8GAAA,eAAe,OAAA;AAAE,sHAAA,uBAAuB,OAAA;AAAE,oHAAA,qBAAqB,OAAA;AAC5F,+CAAoD;AAA3C,kHAAA,kBAAkB,OAAA;AAC3B,+CAAoL;AAA3K,4HAAA,4BAA4B,OAAA;AAAE,4HAAA,4BAA4B,OAAA;AAAE,kIAAA,kCAAkC,OAAA;AAAE,qHAAA,qBAAqB,OAAA;AAAE,0HAAA,0BAA0B,OAAA;AAC1J,iCAAiC"}
|