terraconstructs 0.2.4 → 0.2.6
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/.jsii +3099 -2917
- package/CLAUDE.md +6 -6
- package/README.md +1 -1
- package/lib/asset-staging.js +3 -3
- package/lib/aws/arn.js +5 -5
- package/lib/aws/aws-asset-manager.js +9 -9
- package/lib/aws/aws-construct.js +1 -1
- package/lib/aws/aws-stack.d.ts +19 -4
- package/lib/aws/aws-stack.js +43 -18
- package/lib/aws/aws-tags.d.ts +1 -1
- package/lib/aws/aws-tags.js +5 -5
- package/lib/aws/cloudwatch/actions/appscaling.js +1 -1
- package/lib/aws/cloudwatch/actions/ec2.js +1 -1
- package/lib/aws/cloudwatch/actions/lambda.js +2 -2
- package/lib/aws/cloudwatch/actions/sns.js +1 -1
- package/lib/aws/cloudwatch/actions/ssm.js +2 -2
- package/lib/aws/cloudwatch/alarm-base.js +1 -1
- package/lib/aws/cloudwatch/alarm-rule.js +1 -1
- package/lib/aws/cloudwatch/alarm-status-widget.js +1 -1
- package/lib/aws/cloudwatch/alarm.d.ts +1 -1
- package/lib/aws/cloudwatch/alarm.js +10 -10
- package/lib/aws/cloudwatch/composite-alarm.d.ts +1 -1
- package/lib/aws/cloudwatch/composite-alarm.js +7 -7
- package/lib/aws/cloudwatch/dashboard.d.ts +1 -1
- package/lib/aws/cloudwatch/dashboard.js +7 -7
- package/lib/aws/cloudwatch/data-protection-policy.d.ts +1 -1
- package/lib/aws/cloudwatch/data-protection-policy.js +5 -5
- package/lib/aws/cloudwatch/graph.js +8 -8
- package/lib/aws/cloudwatch/layout.js +3 -3
- package/lib/aws/cloudwatch/log-destinations/kinesis.js +1 -1
- package/lib/aws/cloudwatch/log-destinations/lambda.js +1 -1
- package/lib/aws/cloudwatch/log-group.d.ts +1 -1
- package/lib/aws/cloudwatch/log-group.js +7 -7
- package/lib/aws/cloudwatch/log-query.js +1 -1
- package/lib/aws/cloudwatch/log-stream.d.ts +1 -1
- package/lib/aws/cloudwatch/log-stream.js +3 -3
- package/lib/aws/cloudwatch/metric-filter.d.ts +1 -1
- package/lib/aws/cloudwatch/metric-filter.js +3 -3
- package/lib/aws/cloudwatch/metric.js +6 -6
- package/lib/aws/cloudwatch/pattern.js +3 -3
- package/lib/aws/cloudwatch/policy.d.ts +1 -1
- package/lib/aws/cloudwatch/policy.js +3 -3
- package/lib/aws/cloudwatch/private/drop-empty-object-at-the-end-of-an-array-token.d.ts +1 -1
- package/lib/aws/cloudwatch/private/drop-empty-object-at-the-end-of-an-array-token.js +1 -1
- package/lib/aws/cloudwatch/private/env-tokens.js +6 -6
- package/lib/aws/cloudwatch/query-definition.d.ts +1 -1
- package/lib/aws/cloudwatch/query-definition.js +4 -4
- package/lib/aws/cloudwatch/stats.js +1 -1
- package/lib/aws/cloudwatch/subscription-filter.d.ts +1 -1
- package/lib/aws/cloudwatch/subscription-filter.js +6 -6
- package/lib/aws/cloudwatch/text.js +1 -1
- package/lib/aws/cloudwatch/variable.js +3 -3
- package/lib/aws/cloudwatch/widget.js +1 -1
- package/lib/aws/compute/access-log.d.ts +1 -1
- package/lib/aws/compute/access-log.js +5 -5
- package/lib/aws/compute/activity.d.ts +1 -1
- package/lib/aws/compute/activity.js +5 -5
- package/lib/aws/compute/alb/application-listener-action.d.ts +1 -1
- package/lib/aws/compute/alb/application-listener-action.js +5 -5
- package/lib/aws/compute/alb/application-listener-certificate.js +3 -3
- package/lib/aws/compute/alb/application-listener-rule.js +9 -9
- package/lib/aws/compute/alb/application-listener.js +5 -5
- package/lib/aws/compute/alb/application-load-balancer.js +8 -8
- package/lib/aws/compute/alb/application-target-group.js +7 -7
- package/lib/aws/compute/alb/conditions.js +3 -3
- package/lib/aws/compute/alb/trust-store-revocation.js +3 -3
- package/lib/aws/compute/alb/trust-store.js +7 -7
- package/lib/aws/compute/api-definition.js +9 -9
- package/lib/aws/compute/api-key.js +6 -6
- package/lib/aws/compute/architecture.js +1 -1
- package/lib/aws/compute/aspects/require-imdsv2-aspect.d.ts +1 -1
- package/lib/aws/compute/aspects/require-imdsv2-aspect.js +6 -6
- package/lib/aws/compute/authorizer.js +1 -1
- package/lib/aws/compute/authorizers/identity-source.js +1 -1
- package/lib/aws/compute/authorizers/lambda.d.ts +1 -1
- package/lib/aws/compute/authorizers/lambda.js +6 -6
- package/lib/aws/compute/base-path-mapping.js +5 -5
- package/lib/aws/compute/base-scalable-attribute.js +1 -1
- package/lib/aws/compute/bastion-host.js +4 -4
- package/lib/aws/compute/chain.js +1 -1
- package/lib/aws/compute/client-vpn-authorization-rule.js +3 -3
- package/lib/aws/compute/client-vpn-endpoint.d.ts +1 -1
- package/lib/aws/compute/client-vpn-endpoint.js +9 -9
- package/lib/aws/compute/client-vpn-route.d.ts +1 -1
- package/lib/aws/compute/client-vpn-route.js +4 -4
- package/lib/aws/compute/code.d.ts +3 -3
- package/lib/aws/compute/code.js +15 -15
- package/lib/aws/compute/condition.js +1 -1
- package/lib/aws/compute/connections.js +1 -1
- package/lib/aws/compute/cors.js +1 -1
- package/lib/aws/compute/deployment.js +5 -5
- package/lib/aws/compute/domain-name.js +5 -5
- package/lib/aws/compute/event-invoke-config.d.ts +1 -1
- package/lib/aws/compute/event-invoke-config.js +3 -3
- package/lib/aws/compute/event-source-filter.js +2 -2
- package/lib/aws/compute/event-source-mapping.js +7 -7
- package/lib/aws/compute/event-sources/s3-onfailure-destination.js +1 -1
- package/lib/aws/compute/event-sources/s3.js +1 -1
- package/lib/aws/compute/event-sources/sqs-dlq.js +1 -1
- package/lib/aws/compute/event-sources/sqs.js +5 -5
- package/lib/aws/compute/fields.d.ts +1 -1
- package/lib/aws/compute/fields.js +12 -12
- package/lib/aws/compute/function-alias.d.ts +1 -1
- package/lib/aws/compute/function-alias.js +3 -3
- package/lib/aws/compute/function-base.d.ts +1 -1
- package/lib/aws/compute/function-base.js +10 -9
- package/lib/aws/compute/function-destinations/event-bridge.js +1 -1
- package/lib/aws/compute/function-destinations/function.js +1 -1
- package/lib/aws/compute/function-destinations/sqs.js +1 -1
- package/lib/aws/compute/function-nodejs/bundling.js +6 -6
- package/lib/aws/compute/function-nodejs/function.js +4 -4
- package/lib/aws/compute/function-url.d.ts +1 -1
- package/lib/aws/compute/function-url.js +3 -3
- package/lib/aws/compute/function-vpc-config.generated.d.ts +5 -5
- package/lib/aws/compute/function-vpc-config.generated.js +1 -1
- package/lib/aws/compute/function.d.ts +2 -2
- package/lib/aws/compute/function.js +9 -9
- package/lib/aws/compute/gateway-response.d.ts +1 -1
- package/lib/aws/compute/gateway-response.js +4 -4
- package/lib/aws/compute/handler.js +1 -1
- package/lib/aws/compute/instance-types.js +1 -1
- package/lib/aws/compute/instance.d.ts +1 -1
- package/lib/aws/compute/instance.js +9 -9
- package/lib/aws/compute/integration.js +4 -4
- package/lib/aws/compute/integrations/aws.js +3 -3
- package/lib/aws/compute/integrations/http.js +1 -1
- package/lib/aws/compute/integrations/lambda.js +5 -5
- package/lib/aws/compute/integrations/mock.js +1 -1
- package/lib/aws/compute/integrations/stepfunctions.js +4 -4
- package/lib/aws/compute/ip-addresses.d.ts +1 -1
- package/lib/aws/compute/ip-addresses.js +10 -10
- package/lib/aws/compute/ipam.d.ts +1 -1
- package/lib/aws/compute/ipam.js +5 -5
- package/lib/aws/compute/key-pair.d.ts +1 -1
- package/lib/aws/compute/key-pair.js +6 -6
- package/lib/aws/compute/lambda-api.js +1 -1
- package/lib/aws/compute/launch-template.d.ts +1 -1
- package/lib/aws/compute/launch-template.js +12 -12
- package/lib/aws/compute/lb-shared/base-listener.js +9 -9
- package/lib/aws/compute/lb-shared/base-load-balancer.d.ts +2 -2
- package/lib/aws/compute/lb-shared/base-load-balancer.js +12 -12
- package/lib/aws/compute/lb-shared/base-target-group.d.ts +1 -1
- package/lib/aws/compute/lb-shared/base-target-group.js +15 -15
- package/lib/aws/compute/lb-shared/lb-listener-config.generated.d.ts +34 -34
- package/lib/aws/compute/lb-shared/lb-listener-config.generated.js +1 -1
- package/lib/aws/compute/lb-shared/lb-target-group-attachment-config.generated.d.ts +11 -6
- package/lib/aws/compute/lb-shared/lb-target-group-attachment-config.generated.js +1 -1
- package/lib/aws/compute/lb-shared/listener-action.d.ts +1 -1
- package/lib/aws/compute/lb-shared/listener-action.js +1 -1
- package/lib/aws/compute/lb-shared/listener-certificate.js +1 -1
- package/lib/aws/compute/lb-shared/load-balancer-targets.js +2 -2
- package/lib/aws/compute/lb-shared/util.js +5 -5
- package/lib/aws/compute/lb-targets/alb-target.js +3 -3
- package/lib/aws/compute/lb-targets/instance-target.js +2 -2
- package/lib/aws/compute/lb-targets/ip-target.js +1 -1
- package/lib/aws/compute/lb-targets/lambda-target.js +1 -1
- package/lib/aws/compute/load-balancer.d.ts +1 -1
- package/lib/aws/compute/load-balancer.js +8 -8
- package/lib/aws/compute/machine-image/amazon-linux-2022.js +2 -2
- package/lib/aws/compute/machine-image/amazon-linux-2023.js +2 -2
- package/lib/aws/compute/machine-image/amazon-linux2.js +2 -2
- package/lib/aws/compute/machine-image/common.js +1 -1
- package/lib/aws/compute/machine-image/machine-image.js +10 -10
- package/lib/aws/compute/method.js +6 -6
- package/lib/aws/compute/model.js +5 -5
- package/lib/aws/compute/nat.js +10 -10
- package/lib/aws/compute/network-acl-types.js +2 -2
- package/lib/aws/compute/network-acl.d.ts +1 -1
- package/lib/aws/compute/network-acl.js +5 -5
- package/lib/aws/compute/nlb/network-listener-action.d.ts +1 -1
- package/lib/aws/compute/nlb/network-listener-action.js +2 -2
- package/lib/aws/compute/nlb/network-listener-certificate.js +2 -2
- package/lib/aws/compute/nlb/network-listener.js +5 -5
- package/lib/aws/compute/nlb/network-load-balancer.js +6 -6
- package/lib/aws/compute/nlb/network-target-group.js +4 -4
- package/lib/aws/compute/peer.js +7 -7
- package/lib/aws/compute/placement-group.d.ts +1 -1
- package/lib/aws/compute/placement-group.js +3 -3
- package/lib/aws/compute/port.js +5 -5
- package/lib/aws/compute/prefix-list.d.ts +1 -1
- package/lib/aws/compute/prefix-list.js +5 -5
- package/lib/aws/compute/private/context-stub.js +7 -7
- package/lib/aws/compute/private/ebs-util.d.ts +1 -1
- package/lib/aws/compute/private/ebs-util.js +3 -3
- package/lib/aws/compute/private/json-path.d.ts +1 -1
- package/lib/aws/compute/private/json-path.js +8 -8
- package/lib/aws/compute/requestvalidator.js +3 -3
- package/lib/aws/compute/resource.js +5 -5
- package/lib/aws/compute/restapi.d.ts +1 -1
- package/lib/aws/compute/restapi.js +11 -11
- package/lib/aws/compute/route.d.ts +1 -1
- package/lib/aws/compute/route.js +12 -12
- package/lib/aws/compute/runtime.js +3 -3
- package/lib/aws/compute/scalable-target.d.ts +1 -1
- package/lib/aws/compute/scalable-target.js +3 -3
- package/lib/aws/compute/schedule.js +4 -4
- package/lib/aws/compute/security-group.js +12 -12
- package/lib/aws/compute/stage.d.ts +1 -1
- package/lib/aws/compute/stage.js +6 -6
- package/lib/aws/compute/state-graph.js +1 -1
- package/lib/aws/compute/state-machine-fragment.js +1 -1
- package/lib/aws/compute/state-machine.d.ts +2 -2
- package/lib/aws/compute/state-machine.js +8 -8
- package/lib/aws/compute/states/choice.js +1 -1
- package/lib/aws/compute/states/custom-state.js +5 -5
- package/lib/aws/compute/states/distributed-map/item-batcher.js +1 -1
- package/lib/aws/compute/states/distributed-map/item-reader.js +5 -5
- package/lib/aws/compute/states/distributed-map/result-writer.js +1 -1
- package/lib/aws/compute/states/distributed-map.js +4 -4
- package/lib/aws/compute/states/fail.js +4 -4
- package/lib/aws/compute/states/map-base.js +4 -4
- package/lib/aws/compute/states/map.js +1 -1
- package/lib/aws/compute/states/parallel.js +1 -1
- package/lib/aws/compute/states/pass.js +2 -2
- package/lib/aws/compute/states/state.js +4 -4
- package/lib/aws/compute/states/succeed.js +1 -1
- package/lib/aws/compute/states/task-base.js +2 -2
- package/lib/aws/compute/states/task.js +1 -1
- package/lib/aws/compute/states/wait.js +2 -2
- package/lib/aws/compute/step-scaling-action.js +5 -5
- package/lib/aws/compute/step-scaling-policy.js +7 -7
- package/lib/aws/compute/stepfunctions-api.js +2 -2
- package/lib/aws/compute/subnet-v2.d.ts +1 -1
- package/lib/aws/compute/subnet-v2.js +5 -5
- package/lib/aws/compute/subnet.js +4 -4
- package/lib/aws/compute/target-tracking-scaling-policy.js +3 -3
- package/lib/aws/compute/task-credentials.js +1 -1
- package/lib/aws/compute/task-input.js +1 -1
- package/lib/aws/compute/tasks/aws-sdk/call-aws-service.js +5 -5
- package/lib/aws/compute/tasks/eventbridge/put-events.js +1 -1
- package/lib/aws/compute/tasks/http/invoke.js +1 -1
- package/lib/aws/compute/tasks/lambda/invoke.js +1 -1
- package/lib/aws/compute/tasks/sqs/send-message.js +1 -1
- package/lib/aws/compute/tasks/stepfunctions/invoke-activity.js +1 -1
- package/lib/aws/compute/tasks/stepfunctions/start-execution.js +1 -1
- package/lib/aws/compute/types.js +1 -1
- package/lib/aws/compute/usage-plan.js +5 -5
- package/lib/aws/compute/user-data.d.ts +2 -2
- package/lib/aws/compute/user-data.js +10 -10
- package/lib/aws/compute/volume.d.ts +1 -1
- package/lib/aws/compute/volume.js +7 -7
- package/lib/aws/compute/vpc-endpoint-service.js +3 -3
- package/lib/aws/compute/vpc-endpoint.d.ts +1 -1
- package/lib/aws/compute/vpc-endpoint.js +13 -13
- package/lib/aws/compute/vpc-flow-logs.d.ts +1 -1
- package/lib/aws/compute/vpc-flow-logs.js +8 -8
- package/lib/aws/compute/vpc-link.js +5 -5
- package/lib/aws/compute/vpc-v2-base.js +6 -6
- package/lib/aws/compute/vpc-v2.d.ts +2 -2
- package/lib/aws/compute/vpc-v2.js +4 -4
- package/lib/aws/compute/vpc.d.ts +1 -1
- package/lib/aws/compute/vpc.js +24 -22
- package/lib/aws/compute/vpn.js +8 -8
- package/lib/aws/context-provider.js +4 -4
- package/lib/aws/edge/certificate.d.ts +1 -1
- package/lib/aws/edge/certificate.js +6 -6
- package/lib/aws/edge/distribution.d.ts +1 -1
- package/lib/aws/edge/distribution.js +9 -9
- package/lib/aws/edge/dns-alias-record-targets.d.ts +1 -1
- package/lib/aws/edge/dns-alias-record-targets.js +7 -7
- package/lib/aws/edge/dns-record.d.ts +1 -1
- package/lib/aws/edge/dns-record.js +19 -19
- package/lib/aws/edge/dns-zone.d.ts +2 -2
- package/lib/aws/edge/dns-zone.js +5 -5
- package/lib/aws/edge/function.d.ts +1 -1
- package/lib/aws/edge/function.js +4 -4
- package/lib/aws/edge/key-value-store.d.ts +1 -1
- package/lib/aws/edge/key-value-store.js +6 -6
- package/lib/aws/edge/origin.d.ts +1 -1
- package/lib/aws/edge/origin.js +6 -6
- package/lib/aws/edge/response-headers-policy.d.ts +1 -1
- package/lib/aws/edge/response-headers-policy.js +6 -6
- package/lib/aws/encryption/alias.d.ts +1 -1
- package/lib/aws/encryption/alias.js +8 -8
- package/lib/aws/encryption/key.d.ts +1 -1
- package/lib/aws/encryption/key.js +6 -6
- package/lib/aws/encryption/via-service-principal.js +1 -1
- package/lib/aws/iam/grant.js +3 -3
- package/lib/aws/iam/group.js +5 -5
- package/lib/aws/iam/instance-profile.d.ts +1 -1
- package/lib/aws/iam/instance-profile.js +3 -3
- package/lib/aws/iam/managed-policy.d.ts +1 -1
- package/lib/aws/iam/managed-policy.js +3 -3
- package/lib/aws/iam/oidc-provider.d.ts +1 -1
- package/lib/aws/iam/oidc-provider.js +3 -3
- package/lib/aws/iam/policy-document-config.generated.d.ts +9 -9
- package/lib/aws/iam/policy-document-config.generated.js +1 -1
- package/lib/aws/iam/policy-document.d.ts +1 -1
- package/lib/aws/iam/policy-document.js +5 -5
- package/lib/aws/iam/policy-statement-props.generated.d.ts +8 -8
- package/lib/aws/iam/policy-statement-props.generated.js +1 -1
- package/lib/aws/iam/policy-statement.d.ts +1 -1
- package/lib/aws/iam/policy-statement.js +8 -8
- package/lib/aws/iam/policy.js +3 -3
- package/lib/aws/iam/principals.js +25 -25
- package/lib/aws/iam/private/imported-role.js +3 -3
- package/lib/aws/iam/private/postprocess-policy-document.d.ts +1 -1
- package/lib/aws/iam/private/postprocess-policy-document.js +1 -1
- package/lib/aws/iam/private/util.d.ts +1 -1
- package/lib/aws/iam/private/util.js +5 -5
- package/lib/aws/iam/role.d.ts +1 -1
- package/lib/aws/iam/role.js +6 -6
- package/lib/aws/iam/saml-provider.d.ts +1 -1
- package/lib/aws/iam/saml-provider.js +6 -6
- package/lib/aws/iam/unknown-principal.js +4 -4
- package/lib/aws/iam/user.js +3 -3
- package/lib/aws/network/network.d.ts +1 -1
- package/lib/aws/network/network.js +1 -1
- package/lib/aws/network/simple-ipv4-vpc.js +12 -12
- package/lib/aws/network/subnet-group.d.ts +1 -1
- package/lib/aws/network/subnet-group.js +5 -5
- package/lib/aws/network/subnet.d.ts +1 -1
- package/lib/aws/network/subnet.js +6 -6
- package/lib/aws/notify/archive.d.ts +1 -1
- package/lib/aws/notify/archive.js +3 -3
- package/lib/aws/notify/connection.d.ts +1 -1
- package/lib/aws/notify/connection.js +5 -5
- package/lib/aws/notify/event-bus.d.ts +1 -1
- package/lib/aws/notify/event-bus.js +10 -10
- package/lib/aws/notify/event-pattern.d.ts +1 -1
- package/lib/aws/notify/event-pattern.js +5 -5
- package/lib/aws/notify/input.d.ts +1 -1
- package/lib/aws/notify/input.js +12 -12
- package/lib/aws/notify/kinesis-stream.d.ts +1 -1
- package/lib/aws/notify/kinesis-stream.js +7 -7
- package/lib/aws/notify/notification-rule.js +8 -8
- package/lib/aws/notify/policy.js +3 -3
- package/lib/aws/notify/queue-base.js +1 -1
- package/lib/aws/notify/queue-policy.js +3 -3
- package/lib/aws/notify/queue.d.ts +1 -1
- package/lib/aws/notify/queue.js +8 -8
- package/lib/aws/notify/resource-policy.js +3 -3
- package/lib/aws/notify/rule.d.ts +1 -1
- package/lib/aws/notify/rule.js +6 -6
- package/lib/aws/notify/schedule.js +4 -4
- package/lib/aws/notify/sns-grants.generated.js +1 -1
- package/lib/aws/notify/sqs-grants.generated.js +1 -1
- package/lib/aws/notify/subscription-filter.js +1 -1
- package/lib/aws/notify/subscription.js +6 -6
- package/lib/aws/notify/subscriptions/email.js +1 -1
- package/lib/aws/notify/subscriptions/lambda.js +4 -4
- package/lib/aws/notify/subscriptions/sms.js +1 -1
- package/lib/aws/notify/subscriptions/sqs.js +4 -4
- package/lib/aws/notify/subscriptions/url.js +4 -4
- package/lib/aws/notify/target.d.ts +1 -1
- package/lib/aws/notify/target.js +1 -1
- package/lib/aws/notify/targets/event-bus.js +1 -1
- package/lib/aws/notify/targets/function.js +1 -1
- package/lib/aws/notify/targets/log-group.js +2 -2
- package/lib/aws/notify/targets/sqs.js +1 -1
- package/lib/aws/notify/targets/state-machine.js +1 -1
- package/lib/aws/notify/targets/util.js +3 -3
- package/lib/aws/notify/topic-base.js +4 -4
- package/lib/aws/notify/topic.js +7 -7
- package/lib/aws/provider-config.generated.d.ts +42 -36
- package/lib/aws/provider-config.generated.js +1 -1
- package/lib/aws/region-lookup.js +4 -4
- package/lib/aws/storage/assets/image-asset.js +8 -8
- package/lib/aws/storage/assets/s3.js +1 -1
- package/lib/aws/storage/auth-token.js +2 -2
- package/lib/aws/storage/billing.js +1 -1
- package/lib/aws/storage/bucket-notifications.d.ts +1 -1
- package/lib/aws/storage/bucket-notifications.js +8 -8
- package/lib/aws/storage/bucket-policy.d.ts +1 -1
- package/lib/aws/storage/bucket-policy.js +3 -3
- package/lib/aws/storage/bucket-source.d.ts +1 -1
- package/lib/aws/storage/bucket-source.js +7 -7
- package/lib/aws/storage/bucket.d.ts +1 -1
- package/lib/aws/storage/bucket.js +8 -8
- package/lib/aws/storage/capacity.js +1 -1
- package/lib/aws/storage/cors-config.generated.d.ts +5 -5
- package/lib/aws/storage/cors-config.generated.js +1 -1
- package/lib/aws/storage/cors-rule-config.generated.d.ts +5 -5
- package/lib/aws/storage/cors-rule-config.generated.js +1 -1
- package/lib/aws/storage/ecr-repository.js +11 -11
- package/lib/aws/storage/encryption.d.ts +1 -1
- package/lib/aws/storage/encryption.js +5 -5
- package/lib/aws/storage/lifecycle-config.generated.d.ts +9 -9
- package/lib/aws/storage/lifecycle-config.generated.js +1 -1
- package/lib/aws/storage/notification-targets/function.js +2 -2
- package/lib/aws/storage/notification-targets/queue.js +4 -4
- package/lib/aws/storage/origin-access-identity.d.ts +2 -2
- package/lib/aws/storage/origin-access-identity.js +3 -3
- package/lib/aws/storage/parameter-util.js +5 -5
- package/lib/aws/storage/parameter.d.ts +2 -2
- package/lib/aws/storage/parameter.js +16 -16
- package/lib/aws/storage/stream-grants.js +1 -1
- package/lib/aws/storage/table-grants.js +1 -1
- package/lib/aws/storage/table.d.ts +1 -1
- package/lib/aws/storage/table.js +10 -10
- package/lib/aws/storage/website-config.generated.d.ts +8 -8
- package/lib/aws/storage/website-config.generated.js +1 -1
- package/lib/bundling.js +5 -5
- package/lib/construct-base.d.ts +1 -1
- package/lib/construct-base.js +10 -10
- package/lib/duration.js +9 -9
- package/lib/errors.js +1 -1
- package/lib/expiration.js +1 -1
- package/lib/fs/ignore.js +4 -4
- package/lib/fs/index.js +1 -1
- package/lib/private/terraform-dependables-aspect.d.ts +1 -1
- package/lib/private/terraform-dependables-aspect.js +6 -6
- package/lib/private/unique-resource-name.js +3 -3
- package/lib/size.js +6 -6
- package/lib/stack-base.d.ts +2 -2
- package/lib/stack-base.js +16 -16
- package/lib/terra-func.d.ts +1 -1
- package/lib/terra-func.js +18 -18
- package/lib/time-zone.js +1 -1
- package/lib/token.js +5 -5
- package/package.json +17 -17
- package/setup.js +2 -2
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
exports.Bundling = void 0;
|
|
5
5
|
const os = require("os");
|
|
6
6
|
const path = require("path");
|
|
7
|
-
const
|
|
7
|
+
const cdktn_1 = require("cdktn");
|
|
8
8
|
const __1 = require("..");
|
|
9
9
|
const package_installation_1 = require("./package-installation");
|
|
10
10
|
const package_manager_1 = require("./package-manager");
|
|
@@ -80,24 +80,24 @@ class Bundling {
|
|
|
80
80
|
// and the sdk is not explicitly bundled
|
|
81
81
|
if (externals.length && isV2Runtime) {
|
|
82
82
|
// "aws-cdk-lib/aws-lambda-nodejs:runtimeUpdateSdkV2Breakage",
|
|
83
|
-
|
|
83
|
+
cdktn_1.Annotations.of(scope).addWarning("Be aware that the NodeJS runtime of Node 16 will be deprecated by Lambda on June 12, 2024. Lambda runtimes Node 18 and higher include SDKv3 and not SDKv2. Updating your Lambda runtime will require bundling the SDK, or updating all SDK calls in your handler code to use SDKv3 (which is not a trivial update). Please account for this added complexity and update as soon as possible.");
|
|
84
84
|
}
|
|
85
85
|
// Warn users if they are trying to rely on global versions of the SDK that aren't available in
|
|
86
86
|
// their environment.
|
|
87
87
|
if (isV2Runtime &&
|
|
88
88
|
externals.some((pkgName) => pkgName.startsWith("@aws-sdk/"))) {
|
|
89
89
|
// "@aws-cdk/aws-lambda-nodejs:sdkV3NotInRuntime",
|
|
90
|
-
|
|
90
|
+
cdktn_1.Annotations.of(scope).addWarning("If you are relying on AWS SDK v3 to be present in the Lambda environment already, please explicitly configure a NodeJS runtime of Node 18 or higher.");
|
|
91
91
|
}
|
|
92
92
|
else if (!isV2Runtime && externals.includes("aws-sdk")) {
|
|
93
93
|
// "@aws-cdk/aws-lambda-nodejs:sdkV2NotInRuntime",
|
|
94
|
-
|
|
94
|
+
cdktn_1.Annotations.of(scope).addWarning("If you are relying on AWS SDK v2 to be present in the Lambda environment already, please explicitly configure a NodeJS runtime of Node 16 or lower.");
|
|
95
95
|
}
|
|
96
96
|
// Warn users if they are using a runtime that may change and are excluding any dependencies from
|
|
97
97
|
// bundling.
|
|
98
98
|
if (externals.length && props.runtime?.isVariable) {
|
|
99
99
|
// "@aws-cdk/aws-lambda-nodejs:variableRuntimeExternals",
|
|
100
|
-
|
|
100
|
+
cdktn_1.Annotations.of(scope).addWarning("When using NODEJS_LATEST the runtime version may change as new runtimes are released, this may affect the availability of packages shipped with the environment. Ensure that any external dependencies are available through layers or specify a specific runtime version.");
|
|
101
101
|
}
|
|
102
102
|
this.externals = [
|
|
103
103
|
...externals,
|
|
@@ -402,4 +402,4 @@ function isEsmRuntime(runtime) {
|
|
|
402
402
|
return r.family === runtime.family && r.name === runtime.name;
|
|
403
403
|
});
|
|
404
404
|
}
|
|
405
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVuZGxpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXdzL2NvbXB1dGUvZnVuY3Rpb24tbm9kZWpzL2J1bmRsaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxzR0FBc0c7OztBQUV0Ryx5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLGlDQUFvQztBQUVwQywwQkFBNEQ7QUFDNUQsaUVBQTZEO0FBQzdELHVEQUE2RDtBQUM3RCxtQ0FBdUU7QUFDdkUsaUNBTWdCO0FBQ2hCLDBEQUFzRDtBQUN0RCw0Q0FBZ0Q7QUFDaEQsZ0RBTTJCO0FBRTNCLE1BQU0scUJBQXFCLEdBQUcsR0FBRyxDQUFDO0FBQ2xDLE1BQU0sdUJBQXVCLEdBQUcsTUFBTSxDQUFDO0FBMkN2Qzs7R0FFRztBQUNILE1BQWEsUUFBUTtJQUNuQjs7T0FFRztJQUNJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBaUIsRUFBRSxPQUFzQjtRQUM1RCxPQUFPLFFBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRTtZQUN6QyxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7WUFDNUIsYUFBYSxFQUFFLE9BQU8sQ0FBQyxTQUFTO2dCQUM5QixDQUFDLENBQUMsc0JBQWEsQ0FBQyxNQUFNO2dCQUN0QixDQUFDLENBQUMsc0JBQWEsQ0FBQyxNQUFNO1lBQ3hCLFFBQVEsRUFBRSxJQUFJLFFBQVEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDO1NBQ3ZDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxNQUFNLENBQUMsNkJBQTZCO1FBQ3pDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLENBQUM7SUFDdkMsQ0FBQztJQUVNLE1BQU0sQ0FBQyx5QkFBeUI7UUFDckMsSUFBSSxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUM7SUFDbkMsQ0FBQztJQTBCRCxZQUNFLEtBQWlCLEVBQ0EsS0FBb0I7UUFBcEIsVUFBSyxHQUFMLEtBQUssQ0FBZTtR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QUssR0FBRyxDQUFDLENBQUM7UUFDakMsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDeEIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxZQUFZLENBQUMsT0FBZ0I7SUFDcEMsTUFBTSxtQkFBbUIsR0FBRztRQUMxQixXQUFPLENBQUMsTUFBTTtRQUNkLFdBQU8sQ0FBQyxVQUFVO1FBQ2xCLFdBQU8sQ0FBQyxXQUFXO1FBQ25CLFdBQU8sQ0FBQyxXQUFXO1FBQ25CLFdBQU8sQ0FBQyxXQUFXO1FBQ25CLFdBQU8sQ0FBQyxXQUFXO0tBQ3BCLENBQUM7SUFFRixPQUFPLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDckMsT0FBTyxDQUFDLENBQUMsTUFBTSxLQUFLLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBQ2hFLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE4Ni4wL3BhY2thZ2VzL2F3cy1jZGstbGliL2F3cy1sYW1iZGEtbm9kZWpzL2xpYi9idW5kbGluZy50c1xuXG5pbXBvcnQgKiBhcyBvcyBmcm9tIFwib3NcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IEFubm90YXRpb25zIH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBJQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IEFyY2hpdGVjdHVyZSwgQXNzZXRDb2RlLCBDb2RlLCBSdW50aW1lIH0gZnJvbSBcIi4uXCI7XG5pbXBvcnQgeyBQYWNrYWdlSW5zdGFsbGF0aW9uIH0gZnJvbSBcIi4vcGFja2FnZS1pbnN0YWxsYXRpb25cIjtcbmltcG9ydCB7IExvY2tGaWxlLCBQYWNrYWdlTWFuYWdlciB9IGZyb20gXCIuL3BhY2thZ2UtbWFuYWdlclwiO1xuaW1wb3J0IHsgQnVuZGxpbmdPcHRpb25zLCBPdXRwdXRGb3JtYXQsIFNvdXJjZU1hcE1vZGUgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHtcbiAgZXhlYyxcbiAgZXh0cmFjdERlcGVuZGVuY2llcyxcbiAgZmluZFVwLFxuICBnZXRUc2NvbmZpZ0NvbXBpbGVyT3B0aW9ucyxcbiAgaXNTZGtWMlJ1bnRpbWUsXG59IGZyb20gXCIuL3V0aWxcIjtcbmltcG9ydCB7IEFzc2V0U3RhZ2luZyB9IGZyb20gXCIuLi8uLi8uLi9hc3NldC1zdGFnaW5nXCI7XG5pbXBvcnQgeyBBc3NldEhhc2hUeXBlIH0gZnJvbSBcIi4uLy4uLy4uL2Fzc2V0c1wiO1xuaW1wb3J0IHtcbiAgQnVuZGxpbmdGaWxlQWNjZXNzLFxuICBCdW5kbGluZ09wdGlvbnMgYXMgQ29yZUJ1bmRsaW5nT3B0aW9ucyxcbiAgRG9ja2VySW1hZ2UsXG4gIERvY2tlclZvbHVtZSxcbiAgSUxvY2FsQnVuZGxpbmcsXG59IGZyb20gXCIuLi8uLi8uLi9idW5kbGluZ1wiO1xuXG5jb25zdCBFU0JVSUxEX01BSk9SX1ZFUlNJT04gPSBcIjBcIjtcbmNvbnN0IEVTQlVJTERfREVGQVVMVF9WRVJTSU9OID0gXCIwLjIxXCI7XG5cbi8qKlxuICogQnVuZGxpbmcgcHJvcGVydGllc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1bmRsaW5nUHJvcHMgZXh0ZW5kcyBCdW5kbGluZ09wdGlvbnMge1xuICAvKipcbiAgICogUGF0aCB0byBsb2NrIGZpbGVcbiAgICovXG4gIHJlYWRvbmx5IGRlcHNMb2NrRmlsZVBhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogRW50cnkgZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgZW50cnk6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJ1bnRpbWUgb2YgdGhlIGxhbWJkYSBmdW5jdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgcnVudGltZTogUnVudGltZTtcblxuICAvKipcbiAgICogVGhlIHN5c3RlbSBhcmNoaXRlY3R1cmUgb2YgdGhlIGxhbWJkYSBmdW5jdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgYXJjaGl0ZWN0dXJlOiBBcmNoaXRlY3R1cmU7XG5cbiAgLyoqXG4gICAqIFBhdGggdG8gcHJvamVjdCByb290XG4gICAqL1xuICByZWFkb25seSBwcm9qZWN0Um9vdDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSdW4gY29tcGlsYXRpb24gdXNpbmcgYHRzY2AgYmVmb3JlIGJ1bmRsaW5nXG4gICAqL1xuICByZWFkb25seSBwcmVDb21waWxhdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoaWNoIG9wdGlvbiB0byB1c2UgdG8gY29weSB0aGUgc291cmNlIGZpbGVzIHRvIHRoZSBkb2NrZXIgY29udGFpbmVyIGFuZCBvdXRwdXQgZmlsZXMgYmFja1xuICAgKiBAZGVmYXVsdCAtIEJ1bmRsaW5nRmlsZUFjY2Vzcy5CSU5EX01PVU5UXG4gICAqL1xuICByZWFkb25seSBidW5kbGluZ0ZpbGVBY2Nlc3M/OiBCdW5kbGluZ0ZpbGVBY2Nlc3M7XG59XG5cbi8qKlxuICogQnVuZGxpbmcgd2l0aCBlc2J1aWxkXG4gKi9cbmV4cG9ydCBjbGFzcyBCdW5kbGluZyBpbXBsZW1lbnRzIENvcmVCdW5kbGluZ09wdGlvbnMge1xuICAvKipcbiAgICogZXNidWlsZCBidW5kbGVkIExhbWJkYSBhc3NldCBjb2RlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGJ1bmRsZShzY29wZTogSUNvbnN0cnVjdCwgb3B0aW9uczogQnVuZGxpbmdQcm9wcyk6IEFzc2V0Q29kZSB7XG4gICAgcmV0dXJuIENvZGUuZnJvbUFzc2V0KG9wdGlvbnMucHJvamVjdFJvb3QsIHtcbiAgICAgIGFzc2V0SGFzaDogb3B0aW9ucy5hc3NldEhhc2gsXG4gICAgICBhc3NldEhhc2hUeXBlOiBvcHRpb25zLmFzc2V0SGFzaFxuICAgICAgICA/IEFzc2V0SGFzaFR5cGUuQ1VTVE9NXG4gICAgICAgIDogQXNzZXRIYXNoVHlwZS5PVVRQVVQsXG4gICAgICBidW5kbGluZzogbmV3IEJ1bmRsaW5nKHNjb3BlLCBvcHRpb25zKSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY2xlYXJFc2J1aWxkSW5zdGFsbGF0aW9uQ2FjaGUoKTogdm9pZCB7XG4gICAgdGhpcy5lc2J1aWxkSW5zdGFsbGF0aW9uID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjbGVhclRzY0luc3RhbGxhdGlvbkNhY2hlKCk6IHZvaWQge1xuICAgIHRoaXMudHNjSW5zdGFsbGF0aW9uID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZXNidWlsZEluc3RhbGxhdGlvbj86IFBhY2thZ2VJbnN0YWxsYXRpb247XG4gIHByaXZhdGUgc3RhdGljIHRzY0luc3RhbGxhdGlvbj86IFBhY2thZ2VJbnN0YWxsYXRpb247XG5cbiAgLy8gQ29yZSBidW5kbGluZyBvcHRpb25zXG4gIHB1YmxpYyByZWFkb25seSBpbWFnZTogRG9ja2VySW1hZ2U7XG4gIHB1YmxpYyByZWFkb25seSBlbnRyeXBvaW50Pzogc3RyaW5nW107XG4gIHB1YmxpYyByZWFkb25seSBjb21tYW5kOiBzdHJpbmdbXTtcbiAgcHVibGljIHJlYWRvbmx5IHZvbHVtZXM/OiBEb2NrZXJWb2x1bWVbXTtcbiAgcHVibGljIHJlYWRvbmx5IHZvbHVtZXNGcm9tPzogc3RyaW5nW107XG4gIHB1YmxpYyByZWFkb25seSBlbnZpcm9ubWVudD86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIHB1YmxpYyByZWFkb25seSB3b3JraW5nRGlyZWN0b3J5OiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSB1c2VyPzogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VjdXJpdHlPcHQ/OiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBuZXR3b3JrPzogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgbG9jYWw/OiBJTG9jYWxCdW5kbGluZztcbiAgcHVibGljIHJlYWRvbmx5IGJ1bmRsaW5nRmlsZUFjY2Vzcz86IEJ1bmRsaW5nRmlsZUFjY2VzcztcblxuICBwcml2YXRlIHJlYWRvbmx5IHByb2plY3RSb290OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVsYXRpdmVFbnRyeVBhdGg6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSByZWxhdGl2ZVRzY29uZmlnUGF0aD86IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSByZWxhdGl2ZURlcHNMb2NrRmlsZVBhdGg6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBleHRlcm5hbHM6IHN0cmluZ1tdO1xuICBwcml2YXRlIHJlYWRvbmx5IHBhY2thZ2VNYW5hZ2VyOiBQYWNrYWdlTWFuYWdlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogSUNvbnN0cnVjdCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBCdW5kbGluZ1Byb3BzLFxuICApIHtcbiAgICB0aGlzLnBhY2thZ2VNYW5hZ2VyID0gUGFja2FnZU1hbmFnZXIuZnJvbUxvY2tGaWxlKFxuICAgICAgcHJvcHMuZGVwc0xvY2tGaWxlUGF0aCxcbiAgICAgIHByb3BzLmxvZ0xldmVsLFxuICAgICk7XG5cbiAgICBCdW5kbGluZy5lc2J1aWxkSW5zdGFsbGF0aW9uID1cbiAgICAgIEJ1bmRsaW5nLmVzYnVpbGRJbnN0YWxsYXRpb24gPz8gUGFja2FnZUluc3RhbGxhdGlvbi5kZXRlY3QoXCJlc2J1aWxkXCIpO1xuICAgIEJ1bmRsaW5nLnRzY0luc3RhbGxhdGlvbiA9XG4gICAgICBCdW5kbGluZy50c2NJbnN0YWxsYXRpb24gPz8gUGFja2FnZUluc3RhbGxhdGlvbi5kZXRlY3QoXCJ0eXBlc2NyaXB0XCIpO1xuXG4gICAgdGhpcy5wcm9qZWN0Um9vdCA9IHByb3BzLnByb2plY3RSb290O1xuICAgIHRoaXMucmVsYXRpdmVFbnRyeVBhdGggPSBwYXRoLnJlbGF0aXZlKFxuICAgICAgdGhpcy5wcm9qZWN0Um9vdCxcbiAgICAgIHBhdGgucmVzb2x2ZShwcm9wcy5lbnRyeSksXG4gICAgKTtcbiAgICB0aGlzLnJlbGF0aXZlRGVwc0xvY2tGaWxlUGF0aCA9IHBhdGgucmVsYXRpdmUoXG4gICAgICB0aGlzLnByb2plY3RSb290LFxuICAgICAgcGF0aC5yZXNvbHZlKHByb3BzLmRlcHNMb2NrRmlsZVBhdGgpLFxuICAgICk7XG5cbiAgICBpZiAodGhpcy5yZWxhdGl2ZURlcHNMb2NrRmlsZVBhdGguaW5jbHVkZXMoXCIuLlwiKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgRXhwZWN0ZWQgZGVwc0xvY2tGaWxlUGF0aDogJHtwcm9wcy5kZXBzTG9ja0ZpbGVQYXRofSB0byBiZSB1bmRlciBwcm9qZWN0Um9vdDogJHt0aGlzLnByb2plY3RSb290fSAoJHt0aGlzLnJlbGF0aXZlRGVwc0xvY2tGaWxlUGF0aH0pYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnRzY29uZmlnKSB7XG4gICAgICB0aGlzLnJlbGF0aXZlVHNjb25maWdQYXRoID0gcGF0aC5yZWxhdGl2ZShcbiAgICAgICAgdGhpcy5wcm9qZWN0Um9vdCxcbiAgICAgICAgcGF0aC5yZXNvbHZlKHByb3BzLnRzY29uZmlnKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnByZUNvbXBpbGF0aW9uICYmICEvXFwudHN4PyQvLnRlc3QocHJvcHMuZW50cnkpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJwcmVDb21waWxhdGlvbiBjYW4gb25seSBiZSB1c2VkIHdpdGggdHlwZXNjcmlwdCBmaWxlc1wiKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuZm9ybWF0ID09PSBPdXRwdXRGb3JtYXQuRVNNICYmICFpc0VzbVJ1bnRpbWUocHJvcHMucnVudGltZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEVDTUFTY3JpcHQgbW9kdWxlIG91dHB1dCBmb3JtYXQgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgJHtwcm9wcy5ydW50aW1lLm5hbWV9IHJ1bnRpbWVgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGb3IgTGFtYmRhIHJ1bnRpbWUgdGhhdCB1c2VzIEFXUyBTREsgdjMsIHdlIG5lZWQgdG8gcmVtb3ZlIGJvdGggYGF3cy1zZGsvKmAgbW9kdWxlc1xuICAgICAqIGFuZCBgc21pdGh5LypgIG1vZHVsZXMgdG8gcHJldmVudCB2ZXJzaW9uIG1pc21hdGNoZXMuXG4gICAgICpcbiAgICAgKiBJc3N1ZSByZWZlcmVuY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9pc3N1ZXMvMzE2MTAjaXNzdWVjb21tZW50LTIzODk5ODMzNDdcbiAgICAgKi9cbiAgICBjb25zdCBzZGtWM0V4dGVybmFscyA9IFtcIkBhd3Mtc2RrLypcIiwgXCJAc21pdGh5LypcIl07XG4gICAgLy8gTW9kdWxlcyB0byBleHRlcm5hbGl6ZSB3aGVuIHVzaW5nIGEgY29uc3RhbnQga25vd24gdmVyc2lvbiBvZiB0aGUgcnVudGltZS5cbiAgICAvLyBNYXJrIGF3cy1zZGsgYXMgZXh0ZXJuYWwgYnkgZGVmYXVsdCAoYXZhaWxhYmxlIGluIHRoZSBydW50aW1lKVxuICAgIGNvbnN0IGlzVjJSdW50aW1lID0gaXNTZGtWMlJ1bnRpbWUocHJvcHMucnVudGltZSk7XG4gICAgY29uc3QgdmVyc2lvbmVkRXh0ZXJuYWxzID0gaXNWMlJ1bnRpbWUgPyBbXCJhd3Mtc2RrXCJdIDogc2RrVjNFeHRlcm5hbHM7XG4gICAgLy8gRG9uJ3QgYXV0b21hdGljYWxseSBleHRlcm5hbGl6ZSBhbnkgZGVwZW5kZW5jaWVzIHdoZW4gdXNpbmcgYSBgbGF0ZXN0YCBydW50aW1lIHdoaWNoIG1heVxuICAgIC8vIHVwZGF0ZSB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLlxuICAgIC8vIERvbid0IGF1dG9tYXRpY2FsbHkgZXh0ZXJuYWxpemUgYXdzIHNkayBpZiBgYnVuZGxlQXdzU0RLYCBpcyB0cnVlIHNvIGl0IGNhbiBiZVxuICAgIC8vIGluY2x1ZGUgaW4gdGhlIGJ1bmRsZSBhc3NldFxuICAgIGNvbnN0IGRlZmF1bHRFeHRlcm5hbHMgPVxuICAgICAgcHJvcHMucnVudGltZT8uaXNWYXJpYWJsZSB8fCBwcm9wcy5idW5kbGVBd3NTREsgPyBbXSA6IHZlcnNpb25lZEV4dGVybmFscztcblxuICAgIGNvbnN0IGV4dGVybmFscyA9IHByb3BzLmV4dGVybmFsTW9kdWxlcyA/PyBkZWZhdWx0RXh0ZXJuYWxzO1xuXG4gICAgLy8gd2FybiB1c2VycyBpZiB0aGV5IGFyZSB1c2luZyBhIHJ1bnRpbWUgdGhhdCBkb2VzIG5vdCBzdXBwb3J0IHNkayB2MlxuICAgIC8vIGFuZCB0aGUgc2RrIGlzIG5vdCBleHBsaWNpdGx5IGJ1bmRsZWRcbiAgICBpZiAoZXh0ZXJuYWxzLmxlbmd0aCAmJiBpc1YyUnVudGltZSkge1xuICAgICAgLy8gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqczpydW50aW1lVXBkYXRlU2RrVjJCcmVha2FnZVwiLFxuICAgICAgQW5ub3RhdGlvbnMub2Yoc2NvcGUpLmFkZFdhcm5pbmcoXG4gICAgICAgIFwiQmUgYXdhcmUgdGhhdCB0aGUgTm9kZUpTIHJ1bnRpbWUgb2YgTm9kZSAxNiB3aWxsIGJlIGRlcHJlY2F0ZWQgYnkgTGFtYmRhIG9uIEp1bmUgMTIsIDIwMjQuIExhbWJkYSBydW50aW1lcyBOb2RlIDE4IGFuZCBoaWdoZXIgaW5jbHVkZSBTREt2MyBhbmQgbm90IFNES3YyLiBVcGRhdGluZyB5b3VyIExhbWJkYSBydW50aW1lIHdpbGwgcmVxdWlyZSBidW5kbGluZyB0aGUgU0RLLCBvciB1cGRhdGluZyBhbGwgU0RLIGNhbGxzIGluIHlvdXIgaGFuZGxlciBjb2RlIHRvIHVzZSBTREt2MyAod2hpY2ggaXMgbm90IGEgdHJpdmlhbCB1cGRhdGUpLiBQbGVhc2UgYWNjb3VudCBmb3IgdGhpcyBhZGRlZCBjb21wbGV4aXR5IGFuZCB1cGRhdGUgYXMgc29vbiBhcyBwb3NzaWJsZS5cIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gV2FybiB1c2VycyBpZiB0aGV5IGFyZSB0cnlpbmcgdG8gcmVseSBvbiBnbG9iYWwgdmVyc2lvbnMgb2YgdGhlIFNESyB0aGF0IGFyZW4ndCBhdmFpbGFibGUgaW5cbiAgICAvLyB0aGVpciBlbnZpcm9ubWVudC5cbiAgICBpZiAoXG4gICAgICBpc1YyUnVudGltZSAmJlxuICAgICAgZXh0ZXJuYWxzLnNvbWUoKHBrZ05hbWUpID0+IHBrZ05hbWUuc3RhcnRzV2l0aChcIkBhd3Mtc2RrL1wiKSlcbiAgICApIHtcbiAgICAgIC8vIFwiQGF3cy1jZGsvYXdzLWxhbWJkYS1ub2RlanM6c2RrVjNOb3RJblJ1bnRpbWVcIixcbiAgICAgIEFubm90YXRpb25zLm9mKHNjb3BlKS5hZGRXYXJuaW5nKFxuICAgICAgICBcIklmIHlvdSBhcmUgcmVseWluZyBvbiBBV1MgU0RLIHYzIHRvIGJlIHByZXNlbnQgaW4gdGhlIExhbWJkYSBlbnZpcm9ubWVudCBhbHJlYWR5LCBwbGVhc2UgZXhwbGljaXRseSBjb25maWd1cmUgYSBOb2RlSlMgcnVudGltZSBvZiBOb2RlIDE4IG9yIGhpZ2hlci5cIixcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICghaXNWMlJ1bnRpbWUgJiYgZXh0ZXJuYWxzLmluY2x1ZGVzKFwiYXdzLXNka1wiKSkge1xuICAgICAgLy8gXCJAYXdzLWNkay9hd3MtbGFtYmRhLW5vZGVqczpzZGtWMk5vdEluUnVudGltZVwiLFxuICAgICAgQW5ub3RhdGlvbnMub2Yoc2NvcGUpLmFkZFdhcm5pbmcoXG4gICAgICAgIFwiSWYgeW91IGFyZSByZWx5aW5nIG9uIEFXUyBTREsgdjIgdG8gYmUgcHJlc2VudCBpbiB0aGUgTGFtYmRhIGVudmlyb25tZW50IGFscmVhZHksIHBsZWFzZSBleHBsaWNpdGx5IGNvbmZpZ3VyZSBhIE5vZGVKUyBydW50aW1lIG9mIE5vZGUgMTYgb3IgbG93ZXIuXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFdhcm4gdXNlcnMgaWYgdGhleSBhcmUgdXNpbmcgYSBydW50aW1lIHRoYXQgbWF5IGNoYW5nZSBhbmQgYXJlIGV4Y2x1ZGluZyBhbnkgZGVwZW5kZW5jaWVzIGZyb21cbiAgICAvLyBidW5kbGluZy5cbiAgICBpZiAoZXh0ZXJuYWxzLmxlbmd0aCAmJiBwcm9wcy5ydW50aW1lPy5pc1ZhcmlhYmxlKSB7XG4gICAgICAvLyBcIkBhd3MtY2RrL2F3cy1sYW1iZGEtbm9kZWpzOnZhcmlhYmxlUnVudGltZUV4dGVybmFsc1wiLFxuICAgICAgQW5ub3RhdGlvbnMub2Yoc2NvcGUpLmFkZFdhcm5pbmcoXG4gICAgICAgIFwiV2hlbiB1c2luZyBOT0RFSlNfTEFURVNUIHRoZSBydW50aW1lIHZlcnNpb24gbWF5IGNoYW5nZSBhcyBuZXcgcnVudGltZXMgYXJlIHJlbGVhc2VkLCB0aGlzIG1heSBhZmZlY3QgdGhlIGF2YWlsYWJpbGl0eSBvZiBwYWNrYWdlcyBzaGlwcGVkIHdpdGggdGhlIGVudmlyb25tZW50LiBFbnN1cmUgdGhhdCBhbnkgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzIGFyZSBhdmFpbGFibGUgdGhyb3VnaCBsYXllcnMgb3Igc3BlY2lmeSBhIHNwZWNpZmljIHJ1bnRpbWUgdmVyc2lvbi5cIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5leHRlcm5hbHMgPSBbXG4gICAgICAuLi5leHRlcm5hbHMsXG4gICAgICAuLi4ocHJvcHMubm9kZU1vZHVsZXMgPz8gW10pLCAvLyBNYXJrIHRoZSBtb2R1bGVzIHRoYXQgd2UgYXJlIGdvaW5nIHRvIGluc3RhbGwgYXMgZXh0ZXJuYWxzIGFsc29cbiAgICBdO1xuXG4gICAgLy8gRG9ja2VyIGJ1bmRsaW5nXG4gICAgY29uc3Qgc2hvdWxkQnVpbGRJbWFnZSA9XG4gICAgICBwcm9wcy5mb3JjZURvY2tlckJ1bmRsaW5nIHx8ICFCdW5kbGluZy5lc2J1aWxkSW5zdGFsbGF0aW9uO1xuICAgIHRoaXMuaW1hZ2UgPSBzaG91bGRCdWlsZEltYWdlXG4gICAgICA/IChwcm9wcy5kb2NrZXJJbWFnZSA/P1xuICAgICAgICBEb2NrZXJJbWFnZS5mcm9tQnVpbGQocGF0aC5qb2luKF9fZGlybmFtZSksIHtcbiAgICAgICAgICBidWlsZEFyZ3M6IHtcbiAgICAgICAgICAgIC4uLihwcm9wcy5idWlsZEFyZ3MgPz8ge30pLFxuICAgICAgICAgICAgLy8gSWYgcnVudGltZSBpc24ndCBwYXNzZWQgdXNlIHJlZ2lvbmFsIGRlZmF1bHQsIGxvd2VzdCBjb21tb24gZGVub21pbmF0b3IgaXMgbm9kZTE4XG4gICAgICAgICAgICBJTUFHRTogcHJvcHMucnVudGltZS5idW5kbGluZ0ltYWdlLmltYWdlLFxuICAgICAgICAgICAgRVNCVUlMRF9WRVJTSU9OOiBwcm9wcy5lc2J1aWxkVmVyc2lvbiA/PyBFU0JVSUxEX0RFRkFVTFRfVkVSU0lPTixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBsYXRmb3JtOiBwcm9wcy5hcmNoaXRlY3R1cmUuZG9ja2VyUGxhdGZvcm0sXG4gICAgICAgIH0pKVxuICAgICAgOiBEb2NrZXJJbWFnZS5mcm9tUmVnaXN0cnkoXCJkdW1teVwiKTsgLy8gRG8gbm90IGJ1aWxkIGlmIHdlIGRvbid0IG5lZWQgdG9cblxuICAgIGNvbnN0IGJ1bmRsaW5nQ29tbWFuZCA9IHRoaXMuY3JlYXRlQnVuZGxpbmdDb21tYW5kKHtcbiAgICAgIGlucHV0RGlyOiBBc3NldFN0YWdpbmcuQlVORExJTkdfSU5QVVRfRElSLFxuICAgICAgb3V0cHV0RGlyOiBBc3NldFN0YWdpbmcuQlVORExJTkdfT1VUUFVUX0RJUixcbiAgICAgIGVzYnVpbGRSdW5uZXI6IFwiZXNidWlsZFwiLCAvLyBlc2J1aWxkIGlzIGluc3RhbGxlZCBnbG9iYWxseSBpbiB0aGUgZG9ja2VyIGltYWdlXG4gICAgICB0c2NSdW5uZXI6IFwidHNjXCIsIC8vIHRzYyBpcyBpbnN0YWxsZWQgZ2xvYmFsbHkgaW4gdGhlIGRvY2tlciBpbWFnZVxuICAgICAgb3NQbGF0Zm9ybTogXCJsaW51eFwiLCAvLyBsaW51eCBkb2NrZXIgaW1hZ2VcbiAgICB9KTtcbiAgICB0aGlzLmNvbW1hbmQgPSBwcm9wcy5jb21tYW5kID8/IFtcImJhc2hcIiwgXCItY1wiLCBidW5kbGluZ0NvbW1hbmRdO1xuICAgIHRoaXMuZW52aXJvbm1lbnQgPSBwcm9wcy5lbnZpcm9ubWVudDtcbiAgICAvLyBCdW5kbGluZyBzZXRzIHRoZSB3b3JraW5nIGRpcmVjdG9yeSB0byBBc3NldFN0YWdpbmcuQlVORExJTkdfSU5QVVRfRElSXG4gICAgLy8gYW5kIHdlIHdhbnQgdG8gZm9yY2UgbnB4IHRvIHVzZSB0aGUgZ2xvYmFsbHkgaW5zdGFsbGVkIGVzYnVpbGQuXG4gICAgdGhpcy53b3JraW5nRGlyZWN0b3J5ID0gcHJvcHMud29ya2luZ0RpcmVjdG9yeSA/PyBcIi9cIjtcbiAgICB0aGlzLmVudHJ5cG9pbnQgPSBwcm9wcy5lbnRyeXBvaW50O1xuICAgIHRoaXMudm9sdW1lcyA9IHByb3BzLnZvbHVtZXM7XG4gICAgdGhpcy52b2x1bWVzRnJvbSA9IHByb3BzLnZvbHVtZXNGcm9tO1xuICAgIHRoaXMudXNlciA9IHByb3BzLnVzZXI7XG4gICAgdGhpcy5zZWN1cml0eU9wdCA9IHByb3BzLnNlY3VyaXR5T3B0O1xuICAgIHRoaXMubmV0d29yayA9IHByb3BzLm5ldHdvcms7XG4gICAgdGhpcy5idW5kbGluZ0ZpbGVBY2Nlc3MgPSBwcm9wcy5idW5kbGluZ0ZpbGVBY2Nlc3M7XG5cbiAgICAvLyBMb2NhbCBidW5kbGluZ1xuICAgIGlmICghcHJvcHMuZm9yY2VEb2NrZXJCdW5kbGluZykge1xuICAgICAgLy8gb25seSBpZiBEb2NrZXIgaXMgbm90IGZvcmNlZFxuICAgICAgdGhpcy5sb2NhbCA9IHRoaXMuZ2V0TG9jYWxCdW5kbGluZ1Byb3ZpZGVyKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVCdW5kbGluZ0NvbW1hbmQob3B0aW9uczogQnVuZGxpbmdDb21tYW5kT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgY29uc3QgcGF0aEpvaW4gPSBvc1BhdGhKb2luKG9wdGlvbnMub3NQbGF0Zm9ybSk7XG4gICAgbGV0IHJlbGF0aXZlRW50cnlQYXRoID0gcGF0aEpvaW4ob3B0aW9ucy5pbnB1dERpciwgdGhpcy5yZWxhdGl2ZUVudHJ5UGF0aCk7XG4gICAgbGV0IHRzY0NvbW1hbmQgPSBcIlwiO1xuXG4gICAgaWYgKHRoaXMucHJvcHMucHJlQ29tcGlsYXRpb24pIHtcbiAgICAgIGNvbnN0IHRzY29uZmlnID1cbiAgICAgICAgdGhpcy5wcm9wcy50c2NvbmZpZyA/P1xuICAgICAgICBmaW5kVXAoXCJ0c2NvbmZpZy5qc29uXCIsIHBhdGguZGlybmFtZSh0aGlzLnByb3BzLmVudHJ5KSk7XG4gICAgICBpZiAoIXRzY29uZmlnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBcIkNhbm5vdCBmaW5kIGEgYHRzY29uZmlnLmpzb25gIGJ1dCBgcHJlQ29tcGlsYXRpb25gIGlzIHNldCB0byBgdHJ1ZWAsIHBsZWFzZSBzcGVjaWZ5IGl0IHZpYSBgdHNjb25maWdgXCIsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBjb25zdCBjb21waWxlck9wdGlvbnMgPSBnZXRUc2NvbmZpZ0NvbXBpbGVyT3B0aW9ucyh0c2NvbmZpZyk7XG4gICAgICB0c2NDb21tYW5kID0gYCR7b3B0aW9ucy50c2NSdW5uZXJ9IFwiJHtyZWxhdGl2ZUVudHJ5UGF0aH1cIiAke2NvbXBpbGVyT3B0aW9uc31gO1xuICAgICAgcmVsYXRpdmVFbnRyeVBhdGggPSByZWxhdGl2ZUVudHJ5UGF0aC5yZXBsYWNlKC9cXC50cyh4PykkLywgXCIuanMkMVwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBsb2FkZXJzID0gT2JqZWN0LmVudHJpZXModGhpcy5wcm9wcy5sb2FkZXIgPz8ge30pO1xuICAgIGNvbnN0IGRlZmluZXMgPSBPYmplY3QuZW50cmllcyh0aGlzLnByb3BzLmRlZmluZSA/PyB7fSk7XG5cbiAgICBpZiAodGhpcy5wcm9wcy5zb3VyY2VNYXAgPT09IGZhbHNlICYmIHRoaXMucHJvcHMuc291cmNlTWFwTW9kZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwic291cmNlTWFwTW9kZSBjYW5ub3QgYmUgdXNlZCB3aGVuIHNvdXJjZU1hcCBpcyBmYWxzZVwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBzb3VyY2VNYXBFbmFibGVkID0gdGhpcy5wcm9wcy5zb3VyY2VNYXBNb2RlID8/IHRoaXMucHJvcHMuc291cmNlTWFwO1xuICAgIGNvbnN0IHNvdXJjZU1hcE1vZGUgPSB0aGlzLnByb3BzLnNvdXJjZU1hcE1vZGUgPz8gU291cmNlTWFwTW9kZS5ERUZBVUxUO1xuICAgIGNvbnN0IHNvdXJjZU1hcFZhbHVlID1cbiAgICAgIHNvdXJjZU1hcE1vZGUgPT09IFNvdXJjZU1hcE1vZGUuREVGQVVMVFxuICAgICAgICA/IFwiXCJcbiAgICAgICAgOiBgPSR7dGhpcy5wcm9wcy5zb3VyY2VNYXBNb2RlfWA7XG4gICAgY29uc3Qgc291cmNlc0NvbnRlbnQgPSB0aGlzLnByb3BzLnNvdXJjZXNDb250ZW50ID8/IHRydWU7XG5cbiAgICBjb25zdCBvdXRGaWxlID1cbiAgICAgIHRoaXMucHJvcHMuZm9ybWF0ID09PSBPdXRwdXRGb3JtYXQuRVNNID8gXCJpbmRleC5tanNcIiA6IFwiaW5kZXguanNcIjtcbiAgICBjb25zdCBlc2J1aWxkQ29tbWFuZDogc3RyaW5nW10gPSBbXG4gICAgICBvcHRpb25zLmVzYnVpbGRSdW5uZXIsXG4gICAgICBcIi0tYnVuZGxlXCIsXG4gICAgICBgXCIke3JlbGF0aXZlRW50cnlQYXRofVwiYCxcbiAgICAgIGAtLXRhcmdldD0ke3RoaXMucHJvcHMudGFyZ2V0ID8/IHRvVGFyZ2V0KHRoaXMucHJvcHMucnVudGltZSl9YCxcbiAgICAgIFwiLS1wbGF0Zm9ybT1ub2RlXCIsXG4gICAgICAuLi4odGhpcy5wcm9wcy5mb3JtYXQgPyBbYC0tZm9ybWF0PSR7dGhpcy5wcm9wcy5mb3JtYXR9YF0gOiBbXSksXG4gICAgICBgLS1vdXRmaWxlPVwiJHtwYXRoSm9pbihvcHRpb25zLm91dHB1dERpciwgb3V0RmlsZSl9XCJgLFxuICAgICAgLi4uKHRoaXMucHJvcHMubWluaWZ5ID8gW1wiLS1taW5pZnlcIl0gOiBbXSksXG4gICAgICAuLi4oc291cmNlTWFwRW5hYmxlZCA/IFtgLS1zb3VyY2VtYXAke3NvdXJjZU1hcFZhbHVlfWBdIDogW10pLFxuICAgICAgLi4uKHNvdXJjZXNDb250ZW50ID8gW10gOiBbYC0tc291cmNlcy1jb250ZW50PSR7c291cmNlc0NvbnRlbnR9YF0pLFxuICAgICAgLi4udGhpcy5leHRlcm5hbHMubWFwKChleHRlcm5hbCkgPT4gYC0tZXh0ZXJuYWw6JHtleHRlcm5hbH1gKSxcbiAgICAgIC4uLmxvYWRlcnMubWFwKChbZXh0LCBuYW1lXSkgPT4gYC0tbG9hZGVyOiR7ZXh0fT0ke25hbWV9YCksXG4gICAgICAuLi5kZWZpbmVzLm1hcChcbiAgICAgICAgKFtrZXksIHZhbHVlXSkgPT4gYC0tZGVmaW5lOiR7a2V5fT0ke0pTT04uc3RyaW5naWZ5KHZhbHVlKX1gLFxuICAgICAgKSxcbiAgICAgIC4uLih0aGlzLnByb3BzLmxvZ0xldmVsID8gW2AtLWxvZy1sZXZlbD0ke3RoaXMucHJvcHMubG9nTGV2ZWx9YF0gOiBbXSksXG4gICAgICAuLi4odGhpcy5wcm9wcy5rZWVwTmFtZXMgPyBbXCItLWtlZXAtbmFtZXNcIl0gOiBbXSksXG4gICAgICAuLi4odGhpcy5yZWxhdGl2ZVRzY29uZmlnUGF0aFxuICAgICAgICA/IFtcbiAgICAgICAgICAgIGAtLXRzY29uZmlnPVwiJHtwYXRoSm9pbihvcHRpb25zLmlucHV0RGlyLCB0aGlzLnJlbGF0aXZlVHNjb25maWdQYXRoKX1cImAsXG4gICAgICAgICAgXVxuICAgICAgICA6IFtdKSxcbiAgICAgIC4uLih0aGlzLnByb3BzLm1ldGFmaWxlXG4gICAgICAgID8gW2AtLW1ldGFmaWxlPVwiJHtwYXRoSm9pbihvcHRpb25zLm91dHB1dERpciwgXCJpbmRleC5tZXRhLmpzb25cIil9XCJgXVxuICAgICAgICA6IFtdKSxcbiAgICAgIC4uLih0aGlzLnByb3BzLmJhbm5lclxuICAgICAgICA/IFtgLS1iYW5uZXI6anM9JHtKU09OLnN0cmluZ2lmeSh0aGlzLnByb3BzLmJhbm5lcil9YF1cbiAgICAgICAgOiBbXSksXG4gICAgICAuLi4odGhpcy5wcm9wcy5mb290ZXJcbiAgICAgICAgPyBbYC0tZm9vdGVyOmpzPSR7SlNPTi5zdHJpbmdpZnkodGhpcy5wcm9wcy5mb290ZXIpfWBdXG4gICAgICAgIDogW10pLFxuICAgICAgLi4uKHRoaXMucHJvcHMubWFpbkZpZWxkc1xuICAgICAgICA/IFtgLS1tYWluLWZpZWxkcz0ke3RoaXMucHJvcHMubWFpbkZpZWxkcy5qb2luKFwiLFwiKX1gXVxuICAgICAgICA6IFtdKSxcbiAgICAgIC4uLih0aGlzLnByb3BzLmluamVjdFxuICAgICAgICA/IHRoaXMucHJvcHMuaW5qZWN0Lm1hcCgoaSkgPT4gYC0taW5qZWN0OlwiJHtpfVwiYClcbiAgICAgICAgOiBbXSksXG4gICAgICAuLi4odGhpcy5wcm9wcy5lc2J1aWxkQXJncyA/IFt0b0NsaUFyZ3ModGhpcy5wcm9wcy5lc2J1aWxkQXJncyldIDogW10pLFxuICAgIF07XG5cbiAgICBsZXQgZGVwc0NvbW1hbmQgPSBcIlwiO1xuICAgIGlmICh0aGlzLnByb3BzLm5vZGVNb2R1bGVzKSB7XG4gICAgICAvLyBGaW5kICdwYWNrYWdlLmpzb24nIGNsb3Nlc3QgdG8gZW50cnkgZm9sZGVyLCB3ZSBhcmUgZ29pbmcgdG8gZXh0cmFjdCB0aGVcbiAgICAgIC8vIG1vZHVsZXMgdmVyc2lvbnMgZnJvbSBpdC5cbiAgICAgIGNvbnN0IHBrZ1BhdGggPSBmaW5kVXAoXCJwYWNrYWdlLmpzb25cIiwgcGF0aC5kaXJuYW1lKHRoaXMucHJvcHMuZW50cnkpKTtcbiAgICAgIGlmICghcGtnUGF0aCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgXCJDYW5ub3QgZmluZCBhIGBwYWNrYWdlLmpzb25gIGluIHRoaXMgcHJvamVjdC4gVXNpbmcgYG5vZGVNb2R1bGVzYCByZXF1aXJlcyBhIGBwYWNrYWdlLmpzb25gLlwiLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBEZXRlcm1pbmUgZGVwZW5kZW5jaWVzIHZlcnNpb25zLCBsb2NrIGZpbGUgYW5kIGluc3RhbGxlclxuICAgICAgY29uc3QgZGVwZW5kZW5jaWVzID0gZXh0cmFjdERlcGVuZGVuY2llcyhwa2dQYXRoLCB0aGlzLnByb3BzLm5vZGVNb2R1bGVzKTtcbiAgICAgIGNvbnN0IG9zQ29tbWFuZCA9IG5ldyBPc0NvbW1hbmQob3B0aW9ucy5vc1BsYXRmb3JtKTtcblxuICAgICAgY29uc3QgbG9ja0ZpbGVQYXRoID0gcGF0aEpvaW4oXG4gICAgICAgIG9wdGlvbnMuaW5wdXREaXIsXG4gICAgICAgIHRoaXMucmVsYXRpdmVEZXBzTG9ja0ZpbGVQYXRoID8/IHRoaXMucGFja2FnZU1hbmFnZXIubG9ja0ZpbGUsXG4gICAgICApO1xuXG4gICAgICBjb25zdCBpc1BucG0gPSB0aGlzLnBhY2thZ2VNYW5hZ2VyLmxvY2tGaWxlID09PSBMb2NrRmlsZS5QTlBNO1xuICAgICAgY29uc3QgaXNCdW4gPSB0aGlzLnBhY2thZ2VNYW5hZ2VyLmxvY2tGaWxlID09PSBMb2NrRmlsZS5CVU47XG5cbiAgICAgIC8vIENyZWF0ZSBkdW1teSBwYWNrYWdlLmpzb24sIGNvcHkgbG9jayBmaWxlIGlmIGFueSBhbmQgdGhlbiBpbnN0YWxsXG4gICAgICBkZXBzQ29tbWFuZCA9IGNoYWluKFtcbiAgICAgICAgaXNQbnBtXG4gICAgICAgICAgPyBvc0NvbW1hbmQud3JpdGUoXG4gICAgICAgICAgICAgIHBhdGhKb2luKG9wdGlvbnMub3V0cHV0RGlyLCBcInBucG0td29ya3NwYWNlLnlhbWxcIiksXG4gICAgICAgICAgICAgIFwiXCIsXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiBcIlwiLCAvLyBFbnN1cmUgbm9kZV9tb2R1bGVzIGRpcmVjdG9yeSBpcyBpbnN0YWxsZWQgbG9jYWxseSBieSBjcmVhdGluZyBsb2NhbCAncG5wbS13b3Jrc3BhY2UueWFtbCcgZmlsZVxuICAgICAgICBvc0NvbW1hbmQud3JpdGVKc29uKHBhdGhKb2luKG9wdGlvbnMub3V0cHV0RGlyLCBcInBhY2thZ2UuanNvblwiKSwge1xuICAgICAgICAgIGRlcGVuZGVuY2llcyxcbiAgICAgICAgfSksXG4gICAgICAgIG9zQ29tbWFuZC5jb3B5KFxuICAgICAgICAgIGxvY2tGaWxlUGF0aCxcbiAgICAgICAgICBwYXRoSm9pbihvcHRpb25zLm91dHB1dERpciwgdGhpcy5wYWNrYWdlTWFuYWdlci5sb2NrRmlsZSksXG4gICAgICAgICksXG4gICAgICAgIG9zQ29tbWFuZC5jaGFuZ2VEaXJlY3Rvcnkob3B0aW9ucy5vdXRwdXREaXIpLFxuICAgICAgICB0aGlzLnBhY2thZ2VNYW5hZ2VyLmluc3RhbGxDb21tYW5kLmpvaW4oXCIgXCIpLFxuICAgICAgICBpc1BucG1cbiAgICAgICAgICA/IG9zQ29tbWFuZC5yZW1vdmUoXG4gICAgICAgICAgICAgIHBhdGhKb2luKG9wdGlvbnMub3V0cHV0RGlyLCBcIm5vZGVfbW9kdWxlc1wiLCBcIi5tb2R1bGVzLnlhbWxcIiksXG4gICAgICAgICAgICAgIHRydWUsXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiBcIlwiLCAvLyBSZW1vdmUgJy5tb2R1bGVzLnlhbWwnIGZpbGUgd2hpY2ggY2hhbmdlcyBvbiBlYWNoIGRlcGxveW1lbnRcbiAgICAgICAgaXNCdW5cbiAgICAgICAgICA/IG9zQ29tbWFuZC5yZW1vdmVEaXIoXG4gICAgICAgICAgICAgIHBhdGhKb2luKG9wdGlvbnMub3V0cHV0RGlyLCBcIm5vZGVfbW9kdWxlc1wiLCBcIi5jYWNoZVwiKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IFwiXCIsIC8vIFJlbW92ZSBub2RlX21vZHVsZXMvLmNhY2hlIGZvbGRlciBzaW5jZSB5b3UgY2FuJ3QgZGlzYWJsZSBpdHMgY3JlYXRpb25cbiAgICAgIF0pO1xuICAgIH1cblxuICAgIHJldHVybiBjaGFpbihbXG4gICAgICAuLi4odGhpcy5wcm9wcy5jb21tYW5kSG9va3M/LmJlZm9yZUJ1bmRsaW5nKFxuICAgICAgICBvcHRpb25zLmlucHV0RGlyLFxuICAgICAgICBvcHRpb25zLm91dHB1dERpcixcbiAgICAgICkgPz8gW10pLFxuICAgICAgdHNjQ29tbWFuZCxcbiAgICAgIGVzYnVpbGRDb21tYW5kLmpvaW4oXCIgXCIpLFxuICAgICAgLi4uKCh0aGlzLnByb3BzLm5vZGVNb2R1bGVzICYmXG4gICAgICAgIHRoaXMucHJvcHMuY29tbWFuZEhvb2tzPy5iZWZvcmVJbnN0YWxsKFxuICAgICAgICAgIG9wdGlvbnMuaW5wdXREaXIsXG4gICAgICAgICAgb3B0aW9ucy5vdXRwdXREaXIsXG4gICAgICAgICkpID8/XG4gICAgICAgIFtdKSxcbiAgICAgIGRlcHNDb21tYW5kLFxuICAgICAgLi4uKHRoaXMucHJvcHMuY29tbWFuZEhvb2tzPy5hZnRlckJ1bmRsaW5nKFxuICAgICAgICBvcHRpb25zLmlucHV0RGlyLFxuICAgICAgICBvcHRpb25zLm91dHB1dERpcixcbiAgICAgICkgPz8gW10pLFxuICAgIF0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMb2NhbEJ1bmRsaW5nUHJvdmlkZXIoKTogSUxvY2FsQnVuZGxpbmcge1xuICAgIGNvbnN0IG9zUGxhdGZvcm0gPSBvcy5wbGF0Zm9ybSgpO1xuICAgIGNvbnN0IGNyZWF0ZUxvY2FsQ29tbWFuZCA9IChcbiAgICAgIG91dHB1dERpcjogc3RyaW5nLFxuICAgICAgZXNidWlsZDogUGFja2FnZUluc3RhbGxhdGlvbixcbiAgICAgIHRzYz86IFBhY2thZ2VJbnN0YWxsYXRpb24sXG4gICAgKSA9PlxuICAgICAgdGhpcy5jcmVhdGVCdW5kbGluZ0NvbW1hbmQoe1xuICAgICAgICBpbnB1dERpcjogdGhpcy5wcm9qZWN0Um9vdCxcbiAgICAgICAgb3V0cHV0RGlyLFxuICAgICAgICBlc2J1aWxkUnVubmVyOiBlc2J1aWxkLmlzTG9jYWxcbiAgICAgICAgICA/IHRoaXMucGFja2FnZU1hbmFnZXIucnVuQmluQ29tbWFuZChcImVzYnVpbGRcIilcbiAgICAgICAgICA6IFwiZXNidWlsZFwiLFxuICAgICAgICB0c2NSdW5uZXI6XG4gICAgICAgICAgdHNjICYmXG4gICAgICAgICAgKHRzYy5pc0xvY2FsID8gdGhpcy5wYWNrYWdlTWFuYWdlci5ydW5CaW5Db21tYW5kKFwidHNjXCIpIDogXCJ0c2NcIiksXG4gICAgICAgIG9zUGxhdGZvcm0sXG4gICAgICB9KTtcbiAgICBjb25zdCBlbnZpcm9ubWVudCA9IHRoaXMucHJvcHMuZW52aXJvbm1lbnQgPz8ge307XG4gICAgY29uc3QgY3dkID0gdGhpcy5wcm9qZWN0Um9vdDtcblxuICAgIHJldHVybiB7XG4gICAgICB0cnlCdW5kbGUob3V0cHV0RGlyOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCFCdW5kbGluZy5lc2J1aWxkSW5zdGFsbGF0aW9uKSB7XG4gICAgICAgICAgcHJvY2Vzcy5zdGRlcnIud3JpdGUoXG4gICAgICAgICAgICBcImVzYnVpbGQgY2Fubm90IHJ1biBsb2NhbGx5LiBTd2l0Y2hpbmcgdG8gRG9ja2VyIGJ1bmRsaW5nLlxcblwiLFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICFCdW5kbGluZy5lc2J1aWxkSW5zdGFsbGF0aW9uLnZlcnNpb24uc3RhcnRzV2l0aChcbiAgICAgICAgICAgIGAke0VTQlVJTERfTUFKT1JfVkVSU0lPTn0uYCxcbiAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBFeHBlY3RlZCBlc2J1aWxkIHZlcnNpb24gJHtFU0JVSUxEX01BSk9SX1ZFUlNJT059LnggYnV0IGdvdCAke0J1bmRsaW5nLmVzYnVpbGRJbnN0YWxsYXRpb24udmVyc2lvbn1gLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsb2NhbENvbW1hbmQgPSBjcmVhdGVMb2NhbENvbW1hbmQoXG4gICAgICAgICAgb3V0cHV0RGlyLFxuICAgICAgICAgIEJ1bmRsaW5nLmVzYnVpbGRJbnN0YWxsYXRpb24sXG4gICAgICAgICAgQnVuZGxpbmcudHNjSW5zdGFsbGF0aW9uLFxuICAgICAgICApO1xuXG4gICAgICAgIGV4ZWMoXG4gICAgICAgICAgb3NQbGF0Zm9ybSA9PT0gXCJ3aW4zMlwiID8gXCJjbWRcIiA6IFwiYmFzaFwiLFxuICAgICAgICAgIFtvc1BsYXRmb3JtID09PSBcIndpbjMyXCIgPyBcIi9jXCIgOiBcIi1jXCIsIGxvY2FsQ29tbWFuZF0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgZW52OiB7IC4uLnByb2Nlc3MuZW52LCAuLi5lbnZpcm9ubWVudCB9LFxuICAgICAgICAgICAgc3RkaW86IFtcbiAgICAgICAgICAgICAgLy8gc2hvdyBvdXRwdXRcbiAgICAgICAgICAgICAgXCJpZ25vcmVcIiwgLy8gaWdub3JlIHN0ZGlvXG4gICAgICAgICAgICAgIHByb2Nlc3Muc3RkZXJyLCAvLyByZWRpcmVjdCBzdGRvdXQgdG8gc3RkZXJyXG4gICAgICAgICAgICAgIFwiaW5oZXJpdFwiLCAvLyBpbmhlcml0IHN0ZGVyclxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGN3ZCxcbiAgICAgICAgICAgIHdpbmRvd3NWZXJiYXRpbUFyZ3VtZW50czogb3NQbGF0Zm9ybSA9PT0gXCJ3aW4zMlwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cblxuaW50ZXJmYWNlIEJ1bmRsaW5nQ29tbWFuZE9wdGlvbnMge1xuICByZWFkb25seSBpbnB1dERpcjogc3RyaW5nO1xuICByZWFkb25seSBvdXRwdXREaXI6IHN0cmluZztcbiAgcmVhZG9ubHkgZXNidWlsZFJ1bm5lcjogc3RyaW5nO1xuICByZWFkb25seSB0c2NSdW5uZXI/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG9zUGxhdGZvcm06IE5vZGVKUy5QbGF0Zm9ybTtcbn1cblxuLyoqXG4gKiBPUyBhZ25vc3RpYyBjb21tYW5kXG4gKi9cbmNsYXNzIE9zQ29tbWFuZCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgb3NQbGF0Zm9ybTogTm9kZUpTLlBsYXRmb3JtKSB7fVxuXG4gIHB1YmxpYyB3cml0ZShmaWxlUGF0aDogc3RyaW5nLCBkYXRhOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLm9zUGxhdGZvcm0gPT09IFwid2luMzJcIikge1xuICAgICAgaWYgKCFkYXRhKSB7XG4gICAgICAgIC8vIGlmIGBkYXRhYCBpcyBlbXB0eSwgZWNobyBhIGJsYW5rIGxpbmUsIG90aGVyd2lzZSB0aGUgZmlsZSB3aWxsIGNvbnRhaW4gYSBgXmAgY2hhcmFjdGVyXG4gICAgICAgIHJldHVybiBgZWNoby4gPiBcIiR7ZmlsZVBhdGh9XCJgO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGBlY2hvIF4ke2RhdGF9XiA+IFwiJHtmaWxlUGF0aH1cImA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGBlY2hvICcke2RhdGF9JyA+IFwiJHtmaWxlUGF0aH1cImA7XG4gIH1cblxuICBwdWJsaWMgd3JpdGVKc29uKGZpbGVQYXRoOiBzdHJpbmcsIGRhdGE6IGFueSk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3RyaW5naWZpZWREYXRhID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gICAgcmV0dXJuIHRoaXMud3JpdGUoZmlsZVBhdGgsIHN0cmluZ2lmaWVkRGF0YSk7XG4gIH1cblxuICBwdWJsaWMgY29weShzcmM6IHN0cmluZywgZGVzdDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5vc1BsYXRmb3JtID09PSBcIndpbjMyXCIpIHtcbiAgICAgIHJldHVybiBgY29weSBcIiR7c3JjfVwiIFwiJHtkZXN0fVwiYDtcbiAgICB9XG5cbiAgICByZXR1cm4gYGNwIFwiJHtzcmN9XCIgXCIke2Rlc3R9XCJgO1xuICB9XG5cbiAgcHVibGljIGNoYW5nZURpcmVjdG9yeShkaXI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBjZCBcIiR7ZGlyfVwiYDtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmUoZmlsZVBhdGg6IHN0cmluZywgZm9yY2U6IGJvb2xlYW4gPSBmYWxzZSk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMub3NQbGF0Zm9ybSA9PT0gXCJ3aW4zMlwiKSB7XG4gICAgICByZXR1cm4gYGRlbCBcIiR7ZmlsZVBhdGh9XCJgO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdHMgPSBmb3JjZSA/IFtcIi1mXCJdIDogW107XG4gICAgcmV0dXJuIGBybSAke29wdHMuam9pbihcIiBcIil9IFwiJHtmaWxlUGF0aH1cImA7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlRGlyKGRpcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5vc1BsYXRmb3JtID09PSBcIndpbjMyXCIpIHtcbiAgICAgIHJldHVybiBgcm1kaXIgL3MgL3EgXCIke2Rpcn1cImA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGBybSAtcmYgXCIke2Rpcn1cImA7XG4gIH1cbn1cblxuLyoqXG4gKiBDaGFpbiBjb21tYW5kc1xuICovXG5mdW5jdGlvbiBjaGFpbihjb21tYW5kczogc3RyaW5nW10pOiBzdHJpbmcge1xuICByZXR1cm4gY29tbWFuZHMuZmlsdGVyKChjKSA9PiAhIWMpLmpvaW4oXCIgJiYgXCIpO1xufVxuXG4vKipcbiAqIFBsYXRmb3JtIHNwZWNpZmljIHBhdGggam9pblxuICovXG5mdW5jdGlvbiBvc1BhdGhKb2luKHBsYXRmb3JtOiBOb2RlSlMuUGxhdGZvcm0pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICguLi5wYXRoczogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIGNvbnN0IGpvaW5lZCA9IHBhdGguam9pbiguLi5wYXRocyk7XG4gICAgLy8gSWYgd2UgYXJlIG9uIHdpbjMyIGJ1dCBuZWVkIHBvc2l4IHN0eWxlIHBhdGhzXG4gICAgaWYgKG9zLnBsYXRmb3JtKCkgPT09IFwid2luMzJcIiAmJiBwbGF0Zm9ybSAhPT0gXCJ3aW4zMlwiKSB7XG4gICAgICByZXR1cm4gam9pbmVkLnJlcGxhY2UoL1xcXFwvZywgXCIvXCIpO1xuICAgIH1cbiAgICByZXR1cm4gam9pbmVkO1xuICB9O1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgcnVudGltZSB0byBhbiBlc2J1aWxkIG5vZGUgdGFyZ2V0XG4gKi9cbmZ1bmN0aW9uIHRvVGFyZ2V0KHJ1bnRpbWU6IFJ1bnRpbWUpOiBzdHJpbmcge1xuICBjb25zdCBtYXRjaCA9IHJ1bnRpbWUubmFtZS5tYXRjaCgvbm9kZWpzKFxcZCspLyk7XG5cbiAgaWYgKCFtYXRjaCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBleHRyYWN0IHZlcnNpb24gZnJvbSBydW50aW1lLlwiKTtcbiAgfVxuXG4gIHJldHVybiBgbm9kZSR7bWF0Y2hbMV19YDtcbn1cblxuZnVuY3Rpb24gdG9DbGlBcmdzKGVzYnVpbGRBcmdzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IGJvb2xlYW4gfSk6IHN0cmluZyB7XG4gIGNvbnN0IGFyZ3MgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICBjb25zdCByZVNwZWNpZmllZEtleXMgPSBbXG4gICAgXCItLWFsaWFzXCIsXG4gICAgXCItLWRyb3BcIixcbiAgICBcIi0tcHVyZVwiLFxuICAgIFwiLS1sb2ctb3ZlcnJpZGVcIixcbiAgICBcIi0tb3V0LWV4dGVuc2lvblwiLFxuICBdO1xuXG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGVzYnVpbGRBcmdzKSkge1xuICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gXCJcIikge1xuICAgICAgYXJncy5wdXNoKGtleSk7XG4gICAgfSBlbHNlIGlmIChyZVNwZWNpZmllZEtleXMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgYXJncy5wdXNoKGAke2tleX06XCIke3ZhbHVlfVwiYCk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSkge1xuICAgICAgYXJncy5wdXNoKGAke2tleX09XCIke3ZhbHVlfVwiYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFyZ3Muam9pbihcIiBcIik7XG59XG5cbi8qKlxuICogRGV0ZWN0IGlmIGEgZ2l2ZW4gTm9kZS5qcyBydW50aW1lIHN1cHBvcnRzIEVTTSAoRUNNQVNjcmlwdCBtb2R1bGVzKVxuICovXG5mdW5jdGlvbiBpc0VzbVJ1bnRpbWUocnVudGltZTogUnVudGltZSk6IGJvb2xlYW4ge1xuICBjb25zdCB1bnN1cHBvcnRlZFJ1bnRpbWVzID0gW1xuICAgIFJ1bnRpbWUuTk9ERUpTLFxuICAgIFJ1bnRpbWUuTk9ERUpTXzRfMyxcbiAgICBSdW50aW1lLk5PREVKU182XzEwLFxuICAgIFJ1bnRpbWUuTk9ERUpTXzhfMTAsXG4gICAgUnVudGltZS5OT0RFSlNfMTBfWCxcbiAgICBSdW50aW1lLk5PREVKU18xMl9YLFxuICBdO1xuXG4gIHJldHVybiAhdW5zdXBwb3J0ZWRSdW50aW1lcy5zb21lKChyKSA9PiB7XG4gICAgcmV0dXJuIHIuZmFtaWx5ID09PSBydW50aW1lLmZhbWlseSAmJiByLm5hbWUgPT09IHJ1bnRpbWUubmFtZTtcbiAgfSk7XG59XG4iXX0=
|
|
405
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVuZGxpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXdzL2NvbXB1dGUvZnVuY3Rpb24tbm9kZWpzL2J1bmRsaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxzR0FBc0c7OztBQUV0Ryx5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLGlDQUFvQztBQUVwQywwQkFBNEQ7QUFDNUQsaUVBQTZEO0FBQzdELHVEQUE2RDtBQUM3RCxtQ0FBdUU7QUFDdkUsaUNBTWdCO0FBQ2hCLDBEQUFzRDtBQUN0RCw0Q0FBZ0Q7QUFDaEQsZ0RBTTJCO0FBRTNCLE1BQU0scUJBQXFCLEdBQUcsR0FBRyxDQUFDO0FBQ2xDLE1BQU0sdUJBQXVCLEdBQUcsTUFBTSxDQUFDO0FBMkN2Qzs7R0FFRztBQUNILE1BQWEsUUFBUTtJQUNuQjs7T0FFRztJQUNJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBaUIsRUFBRSxPQUFzQjtRQUM1RCxPQUFPLFFBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRTtZQUN6QyxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7WUFDNUIsYUFBYSxFQUFFLE9BQU8sQ0FBQyxTQUFTO2dCQUM5QixDQUFDLENBQUMsc0JBQWEsQ0FBQyxNQUFNO2dCQUN0QixDQUFDLENBQUMsc0JBQWEsQ0FBQyxNQUFNO1lBQ3hCLFFBQVEsRUFBRSxJQUFJLFFBQVEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDO1NBQ3ZDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxNQUFNLENBQUMsNkJBQTZCO1FBQ3pDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLENBQUM7SUFDdkMsQ0FBQztJQUVNLE1BQU0sQ0FBQyx5QkFBeUI7UUFDckMsSUFBSSxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUM7SUFDbkMsQ0FBQztJQTBCRCxZQUNFLEtBQWlCLEVBQ0EsS0FBb0I7UUFBcEIsVUFBSyxHQUFMLEtBQUssQ0FBZTtR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QUssR0FBRyxDQUFDLENBQUM7UUFDakMsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDeEIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxZQUFZLENBQUMsT0FBZ0I7SUFDcEMsTUFBTSxtQkFBbUIsR0FBRztRQUMxQixXQUFPLENBQUMsTUFBTTtRQUNkLFdBQU8sQ0FBQyxVQUFVO1FBQ2xCLFdBQU8sQ0FBQyxXQUFXO1FBQ25CLFdBQU8sQ0FBQyxXQUFXO1FBQ25CLFdBQU8sQ0FBQyxXQUFXO1FBQ25CLFdBQU8sQ0FBQyxXQUFXO0tBQ3BCLENBQUM7SUFFRixPQUFPLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDckMsT0FBTyxDQUFDLENBQUMsTUFBTSxLQUFLLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBQ2hFLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE4Ni4wL3BhY2thZ2VzL2F3cy1jZGstbGliL2F3cy1sYW1iZGEtbm9kZWpzL2xpYi9idW5kbGluZy50c1xuXG5pbXBvcnQgKiBhcyBvcyBmcm9tIFwib3NcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IEFubm90YXRpb25zIH0gZnJvbSBcImNka3RuXCI7XG5pbXBvcnQgeyBJQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IEFyY2hpdGVjdHVyZSwgQXNzZXRDb2RlLCBDb2RlLCBSdW50aW1lIH0gZnJvbSBcIi4uXCI7XG5pbXBvcnQgeyBQYWNrYWdlSW5zdGFsbGF0aW9uIH0gZnJvbSBcIi4vcGFja2FnZS1pbnN0YWxsYXRpb25cIjtcbmltcG9ydCB7IExvY2tGaWxlLCBQYWNrYWdlTWFuYWdlciB9IGZyb20gXCIuL3BhY2thZ2UtbWFuYWdlclwiO1xuaW1wb3J0IHsgQnVuZGxpbmdPcHRpb25zLCBPdXRwdXRGb3JtYXQsIFNvdXJjZU1hcE1vZGUgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHtcbiAgZXhlYyxcbiAgZXh0cmFjdERlcGVuZGVuY2llcyxcbiAgZmluZFVwLFxuICBnZXRUc2NvbmZpZ0NvbXBpbGVyT3B0aW9ucyxcbiAgaXNTZGtWMlJ1bnRpbWUsXG59IGZyb20gXCIuL3V0aWxcIjtcbmltcG9ydCB7IEFzc2V0U3RhZ2luZyB9IGZyb20gXCIuLi8uLi8uLi9hc3NldC1zdGFnaW5nXCI7XG5pbXBvcnQgeyBBc3NldEhhc2hUeXBlIH0gZnJvbSBcIi4uLy4uLy4uL2Fzc2V0c1wiO1xuaW1wb3J0IHtcbiAgQnVuZGxpbmdGaWxlQWNjZXNzLFxuICBCdW5kbGluZ09wdGlvbnMgYXMgQ29yZUJ1bmRsaW5nT3B0aW9ucyxcbiAgRG9ja2VySW1hZ2UsXG4gIERvY2tlclZvbHVtZSxcbiAgSUxvY2FsQnVuZGxpbmcsXG59IGZyb20gXCIuLi8uLi8uLi9idW5kbGluZ1wiO1xuXG5jb25zdCBFU0JVSUxEX01BSk9SX1ZFUlNJT04gPSBcIjBcIjtcbmNvbnN0IEVTQlVJTERfREVGQVVMVF9WRVJTSU9OID0gXCIwLjIxXCI7XG5cbi8qKlxuICogQnVuZGxpbmcgcHJvcGVydGllc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1bmRsaW5nUHJvcHMgZXh0ZW5kcyBCdW5kbGluZ09wdGlvbnMge1xuICAvKipcbiAgICogUGF0aCB0byBsb2NrIGZpbGVcbiAgICovXG4gIHJlYWRvbmx5IGRlcHNMb2NrRmlsZVBhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogRW50cnkgZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgZW50cnk6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJ1bnRpbWUgb2YgdGhlIGxhbWJkYSBmdW5jdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgcnVudGltZTogUnVudGltZTtcblxuICAvKipcbiAgICogVGhlIHN5c3RlbSBhcmNoaXRlY3R1cmUgb2YgdGhlIGxhbWJkYSBmdW5jdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgYXJjaGl0ZWN0dXJlOiBBcmNoaXRlY3R1cmU7XG5cbiAgLyoqXG4gICAqIFBhdGggdG8gcHJvamVjdCByb290XG4gICAqL1xuICByZWFkb25seSBwcm9qZWN0Um9vdDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSdW4gY29tcGlsYXRpb24gdXNpbmcgYHRzY2AgYmVmb3JlIGJ1bmRsaW5nXG4gICAqL1xuICByZWFkb25seSBwcmVDb21waWxhdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoaWNoIG9wdGlvbiB0byB1c2UgdG8gY29weSB0aGUgc291cmNlIGZpbGVzIHRvIHRoZSBkb2NrZXIgY29udGFpbmVyIGFuZCBvdXRwdXQgZmlsZXMgYmFja1xuICAgKiBAZGVmYXVsdCAtIEJ1bmRsaW5nRmlsZUFjY2Vzcy5CSU5EX01PVU5UXG4gICAqL1xuICByZWFkb25seSBidW5kbGluZ0ZpbGVBY2Nlc3M/OiBCdW5kbGluZ0ZpbGVBY2Nlc3M7XG59XG5cbi8qKlxuICogQnVuZGxpbmcgd2l0aCBlc2J1aWxkXG4gKi9cbmV4cG9ydCBjbGFzcyBCdW5kbGluZyBpbXBsZW1lbnRzIENvcmVCdW5kbGluZ09wdGlvbnMge1xuICAvKipcbiAgICogZXNidWlsZCBidW5kbGVkIExhbWJkYSBhc3NldCBjb2RlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGJ1bmRsZShzY29wZTogSUNvbnN0cnVjdCwgb3B0aW9uczogQnVuZGxpbmdQcm9wcyk6IEFzc2V0Q29kZSB7XG4gICAgcmV0dXJuIENvZGUuZnJvbUFzc2V0KG9wdGlvbnMucHJvamVjdFJvb3QsIHtcbiAgICAgIGFzc2V0SGFzaDogb3B0aW9ucy5hc3NldEhhc2gsXG4gICAgICBhc3NldEhhc2hUeXBlOiBvcHRpb25zLmFzc2V0SGFzaFxuICAgICAgICA/IEFzc2V0SGFzaFR5cGUuQ1VTVE9NXG4gICAgICAgIDogQXNzZXRIYXNoVHlwZS5PVVRQVVQsXG4gICAgICBidW5kbGluZzogbmV3IEJ1bmRsaW5nKHNjb3BlLCBvcHRpb25zKSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY2xlYXJFc2J1aWxkSW5zdGFsbGF0aW9uQ2FjaGUoKTogdm9pZCB7XG4gICAgdGhpcy5lc2J1aWxkSW5zdGFsbGF0aW9uID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjbGVhclRzY0luc3RhbGxhdGlvbkNhY2hlKCk6IHZvaWQge1xuICAgIHRoaXMudHNjSW5zdGFsbGF0aW9uID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZXNidWlsZEluc3RhbGxhdGlvbj86IFBhY2thZ2VJbnN0YWxsYXRpb247XG4gIHByaXZhdGUgc3RhdGljIHRzY0luc3RhbGxhdGlvbj86IFBhY2thZ2VJbnN0YWxsYXRpb247XG5cbiAgLy8gQ29yZSBidW5kbGluZyBvcHRpb25zXG4gIHB1YmxpYyByZWFkb25seSBpbWFnZTogRG9ja2VySW1hZ2U7XG4gIHB1YmxpYyByZWFkb25seSBlbnRyeXBvaW50Pzogc3RyaW5nW107XG4gIHB1YmxpYyByZWFkb25seSBjb21tYW5kOiBzdHJpbmdbXTtcbiAgcHVibGljIHJlYWRvbmx5IHZvbHVtZXM/OiBEb2NrZXJWb2x1bWVbXTtcbiAgcHVibGljIHJlYWRvbmx5IHZvbHVtZXNGcm9tPzogc3RyaW5nW107XG4gIHB1YmxpYyByZWFkb25seSBlbnZpcm9ubWVudD86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIHB1YmxpYyByZWFkb25seSB3b3JraW5nRGlyZWN0b3J5OiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSB1c2VyPzogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VjdXJpdHlPcHQ/OiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBuZXR3b3JrPzogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgbG9jYWw/OiBJTG9jYWxCdW5kbGluZztcbiAgcHVibGljIHJlYWRvbmx5IGJ1bmRsaW5nRmlsZUFjY2Vzcz86IEJ1bmRsaW5nRmlsZUFjY2VzcztcblxuICBwcml2YXRlIHJlYWRvbmx5IHByb2plY3RSb290OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVsYXRpdmVFbnRyeVBhdGg6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSByZWxhdGl2ZVRzY29uZmlnUGF0aD86IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSByZWxhdGl2ZURlcHNMb2NrRmlsZVBhdGg6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBleHRlcm5hbHM6IHN0cmluZ1tdO1xuICBwcml2YXRlIHJlYWRvbmx5IHBhY2thZ2VNYW5hZ2VyOiBQYWNrYWdlTWFuYWdlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogSUNvbnN0cnVjdCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBCdW5kbGluZ1Byb3BzLFxuICApIHtcbiAgICB0aGlzLnBhY2thZ2VNYW5hZ2VyID0gUGFja2FnZU1hbmFnZXIuZnJvbUxvY2tGaWxlKFxuICAgICAgcHJvcHMuZGVwc0xvY2tGaWxlUGF0aCxcbiAgICAgIHByb3BzLmxvZ0xldmVsLFxuICAgICk7XG5cbiAgICBCdW5kbGluZy5lc2J1aWxkSW5zdGFsbGF0aW9uID1cbiAgICAgIEJ1bmRsaW5nLmVzYnVpbGRJbnN0YWxsYXRpb24gPz8gUGFja2FnZUluc3RhbGxhdGlvbi5kZXRlY3QoXCJlc2J1aWxkXCIpO1xuICAgIEJ1bmRsaW5nLnRzY0luc3RhbGxhdGlvbiA9XG4gICAgICBCdW5kbGluZy50c2NJbnN0YWxsYXRpb24gPz8gUGFja2FnZUluc3RhbGxhdGlvbi5kZXRlY3QoXCJ0eXBlc2NyaXB0XCIpO1xuXG4gICAgdGhpcy5wcm9qZWN0Um9vdCA9IHByb3BzLnByb2plY3RSb290O1xuICAgIHRoaXMucmVsYXRpdmVFbnRyeVBhdGggPSBwYXRoLnJlbGF0aXZlKFxuICAgICAgdGhpcy5wcm9qZWN0Um9vdCxcbiAgICAgIHBhdGgucmVzb2x2ZShwcm9wcy5lbnRyeSksXG4gICAgKTtcbiAgICB0aGlzLnJlbGF0aXZlRGVwc0xvY2tGaWxlUGF0aCA9IHBhdGgucmVsYXRpdmUoXG4gICAgICB0aGlzLnByb2plY3RSb290LFxuICAgICAgcGF0aC5yZXNvbHZlKHByb3BzLmRlcHNMb2NrRmlsZVBhdGgpLFxuICAgICk7XG5cbiAgICBpZiAodGhpcy5yZWxhdGl2ZURlcHNMb2NrRmlsZVBhdGguaW5jbHVkZXMoXCIuLlwiKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgRXhwZWN0ZWQgZGVwc0xvY2tGaWxlUGF0aDogJHtwcm9wcy5kZXBzTG9ja0ZpbGVQYXRofSB0byBiZSB1bmRlciBwcm9qZWN0Um9vdDogJHt0aGlzLnByb2plY3RSb290fSAoJHt0aGlzLnJlbGF0aXZlRGVwc0xvY2tGaWxlUGF0aH0pYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnRzY29uZmlnKSB7XG4gICAgICB0aGlzLnJlbGF0aXZlVHNjb25maWdQYXRoID0gcGF0aC5yZWxhdGl2ZShcbiAgICAgICAgdGhpcy5wcm9qZWN0Um9vdCxcbiAgICAgICAgcGF0aC5yZXNvbHZlKHByb3BzLnRzY29uZmlnKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnByZUNvbXBpbGF0aW9uICYmICEvXFwudHN4PyQvLnRlc3QocHJvcHMuZW50cnkpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJwcmVDb21waWxhdGlvbiBjYW4gb25seSBiZSB1c2VkIHdpdGggdHlwZXNjcmlwdCBmaWxlc1wiKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuZm9ybWF0ID09PSBPdXRwdXRGb3JtYXQuRVNNICYmICFpc0VzbVJ1bnRpbWUocHJvcHMucnVudGltZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEVDTUFTY3JpcHQgbW9kdWxlIG91dHB1dCBmb3JtYXQgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgJHtwcm9wcy5ydW50aW1lLm5hbWV9IHJ1bnRpbWVgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGb3IgTGFtYmRhIHJ1bnRpbWUgdGhhdCB1c2VzIEFXUyBTREsgdjMsIHdlIG5lZWQgdG8gcmVtb3ZlIGJvdGggYGF3cy1zZGsvKmAgbW9kdWxlc1xuICAgICAqIGFuZCBgc21pdGh5LypgIG1vZHVsZXMgdG8gcHJldmVudCB2ZXJzaW9uIG1pc21hdGNoZXMuXG4gICAgICpcbiAgICAgKiBJc3N1ZSByZWZlcmVuY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9pc3N1ZXMvMzE2MTAjaXNzdWVjb21tZW50LTIzODk5ODMzNDdcbiAgICAgKi9cbiAgICBjb25zdCBzZGtWM0V4dGVybmFscyA9IFtcIkBhd3Mtc2RrLypcIiwgXCJAc21pdGh5LypcIl07XG4gICAgLy8gTW9kdWxlcyB0byBleHRlcm5hbGl6ZSB3aGVuIHVzaW5nIGEgY29uc3RhbnQga25vd24gdmVyc2lvbiBvZiB0aGUgcnVudGltZS5cbiAgICAvLyBNYXJrIGF3cy1zZGsgYXMgZXh0ZXJuYWwgYnkgZGVmYXVsdCAoYXZhaWxhYmxlIGluIHRoZSBydW50aW1lKVxuICAgIGNvbnN0IGlzVjJSdW50aW1lID0gaXNTZGtWMlJ1bnRpbWUocHJvcHMucnVudGltZSk7XG4gICAgY29uc3QgdmVyc2lvbmVkRXh0ZXJuYWxzID0gaXNWMlJ1bnRpbWUgPyBbXCJhd3Mtc2RrXCJdIDogc2RrVjNFeHRlcm5hbHM7XG4gICAgLy8gRG9uJ3QgYXV0b21hdGljYWxseSBleHRlcm5hbGl6ZSBhbnkgZGVwZW5kZW5jaWVzIHdoZW4gdXNpbmcgYSBgbGF0ZXN0YCBydW50aW1lIHdoaWNoIG1heVxuICAgIC8vIHVwZGF0ZSB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLlxuICAgIC8vIERvbid0IGF1dG9tYXRpY2FsbHkgZXh0ZXJuYWxpemUgYXdzIHNkayBpZiBgYnVuZGxlQXdzU0RLYCBpcyB0cnVlIHNvIGl0IGNhbiBiZVxuICAgIC8vIGluY2x1ZGUgaW4gdGhlIGJ1bmRsZSBhc3NldFxuICAgIGNvbnN0IGRlZmF1bHRFeHRlcm5hbHMgPVxuICAgICAgcHJvcHMucnVudGltZT8uaXNWYXJpYWJsZSB8fCBwcm9wcy5idW5kbGVBd3NTREsgPyBbXSA6IHZlcnNpb25lZEV4dGVybmFscztcblxuICAgIGNvbnN0IGV4dGVybmFscyA9IHByb3BzLmV4dGVybmFsTW9kdWxlcyA/PyBkZWZhdWx0RXh0ZXJuYWxzO1xuXG4gICAgLy8gd2FybiB1c2VycyBpZiB0aGV5IGFyZSB1c2luZyBhIHJ1bnRpbWUgdGhhdCBkb2VzIG5vdCBzdXBwb3J0IHNkayB2MlxuICAgIC8vIGFuZCB0aGUgc2RrIGlzIG5vdCBleHBsaWNpdGx5IGJ1bmRsZWRcbiAgICBpZiAoZXh0ZXJuYWxzLmxlbmd0aCAmJiBpc1YyUnVudGltZSkge1xuICAgICAgLy8gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqczpydW50aW1lVXBkYXRlU2RrVjJCcmVha2FnZVwiLFxuICAgICAgQW5ub3RhdGlvbnMub2Yoc2NvcGUpLmFkZFdhcm5pbmcoXG4gICAgICAgIFwiQmUgYXdhcmUgdGhhdCB0aGUgTm9kZUpTIHJ1bnRpbWUgb2YgTm9kZSAxNiB3aWxsIGJlIGRlcHJlY2F0ZWQgYnkgTGFtYmRhIG9uIEp1bmUgMTIsIDIwMjQuIExhbWJkYSBydW50aW1lcyBOb2RlIDE4IGFuZCBoaWdoZXIgaW5jbHVkZSBTREt2MyBhbmQgbm90IFNES3YyLiBVcGRhdGluZyB5b3VyIExhbWJkYSBydW50aW1lIHdpbGwgcmVxdWlyZSBidW5kbGluZyB0aGUgU0RLLCBvciB1cGRhdGluZyBhbGwgU0RLIGNhbGxzIGluIHlvdXIgaGFuZGxlciBjb2RlIHRvIHVzZSBTREt2MyAod2hpY2ggaXMgbm90IGEgdHJpdmlhbCB1cGRhdGUpLiBQbGVhc2UgYWNjb3VudCBmb3IgdGhpcyBhZGRlZCBjb21wbGV4aXR5IGFuZCB1cGRhdGUgYXMgc29vbiBhcyBwb3NzaWJsZS5cIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gV2FybiB1c2VycyBpZiB0aGV5IGFyZSB0cnlpbmcgdG8gcmVseSBvbiBnbG9iYWwgdmVyc2lvbnMgb2YgdGhlIFNESyB0aGF0IGFyZW4ndCBhdmFpbGFibGUgaW5cbiAgICAvLyB0aGVpciBlbnZpcm9ubWVudC5cbiAgICBpZiAoXG4gICAgICBpc1YyUnVudGltZSAmJlxuICAgICAgZXh0ZXJuYWxzLnNvbWUoKHBrZ05hbWUpID0+IHBrZ05hbWUuc3RhcnRzV2l0aChcIkBhd3Mtc2RrL1wiKSlcbiAgICApIHtcbiAgICAgIC8vIFwiQGF3cy1jZGsvYXdzLWxhbWJkYS1ub2RlanM6c2RrVjNOb3RJblJ1bnRpbWVcIixcbiAgICAgIEFubm90YXRpb25zLm9mKHNjb3BlKS5hZGRXYXJuaW5nKFxuICAgICAgICBcIklmIHlvdSBhcmUgcmVseWluZyBvbiBBV1MgU0RLIHYzIHRvIGJlIHByZXNlbnQgaW4gdGhlIExhbWJkYSBlbnZpcm9ubWVudCBhbHJlYWR5LCBwbGVhc2UgZXhwbGljaXRseSBjb25maWd1cmUgYSBOb2RlSlMgcnVudGltZSBvZiBOb2RlIDE4IG9yIGhpZ2hlci5cIixcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICghaXNWMlJ1bnRpbWUgJiYgZXh0ZXJuYWxzLmluY2x1ZGVzKFwiYXdzLXNka1wiKSkge1xuICAgICAgLy8gXCJAYXdzLWNkay9hd3MtbGFtYmRhLW5vZGVqczpzZGtWMk5vdEluUnVudGltZVwiLFxuICAgICAgQW5ub3RhdGlvbnMub2Yoc2NvcGUpLmFkZFdhcm5pbmcoXG4gICAgICAgIFwiSWYgeW91IGFyZSByZWx5aW5nIG9uIEFXUyBTREsgdjIgdG8gYmUgcHJlc2VudCBpbiB0aGUgTGFtYmRhIGVudmlyb25tZW50IGFscmVhZHksIHBsZWFzZSBleHBsaWNpdGx5IGNvbmZpZ3VyZSBhIE5vZGVKUyBydW50aW1lIG9mIE5vZGUgMTYgb3IgbG93ZXIuXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFdhcm4gdXNlcnMgaWYgdGhleSBhcmUgdXNpbmcgYSBydW50aW1lIHRoYXQgbWF5IGNoYW5nZSBhbmQgYXJlIGV4Y2x1ZGluZyBhbnkgZGVwZW5kZW5jaWVzIGZyb21cbiAgICAvLyBidW5kbGluZy5cbiAgICBpZiAoZXh0ZXJuYWxzLmxlbmd0aCAmJiBwcm9wcy5ydW50aW1lPy5pc1ZhcmlhYmxlKSB7XG4gICAgICAvLyBcIkBhd3MtY2RrL2F3cy1sYW1iZGEtbm9kZWpzOnZhcmlhYmxlUnVudGltZUV4dGVybmFsc1wiLFxuICAgICAgQW5ub3RhdGlvbnMub2Yoc2NvcGUpLmFkZFdhcm5pbmcoXG4gICAgICAgIFwiV2hlbiB1c2luZyBOT0RFSlNfTEFURVNUIHRoZSBydW50aW1lIHZlcnNpb24gbWF5IGNoYW5nZSBhcyBuZXcgcnVudGltZXMgYXJlIHJlbGVhc2VkLCB0aGlzIG1heSBhZmZlY3QgdGhlIGF2YWlsYWJpbGl0eSBvZiBwYWNrYWdlcyBzaGlwcGVkIHdpdGggdGhlIGVudmlyb25tZW50LiBFbnN1cmUgdGhhdCBhbnkgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzIGFyZSBhdmFpbGFibGUgdGhyb3VnaCBsYXllcnMgb3Igc3BlY2lmeSBhIHNwZWNpZmljIHJ1bnRpbWUgdmVyc2lvbi5cIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5leHRlcm5hbHMgPSBbXG4gICAgICAuLi5leHRlcm5hbHMsXG4gICAgICAuLi4ocHJvcHMubm9kZU1vZHVsZXMgPz8gW10pLCAvLyBNYXJrIHRoZSBtb2R1bGVzIHRoYXQgd2UgYXJlIGdvaW5nIHRvIGluc3RhbGwgYXMgZXh0ZXJuYWxzIGFsc29cbiAgICBdO1xuXG4gICAgLy8gRG9ja2VyIGJ1bmRsaW5nXG4gICAgY29uc3Qgc2hvdWxkQnVpbGRJbWFnZSA9XG4gICAgICBwcm9wcy5mb3JjZURvY2tlckJ1bmRsaW5nIHx8ICFCdW5kbGluZy5lc2J1aWxkSW5zdGFsbGF0aW9uO1xuICAgIHRoaXMuaW1hZ2UgPSBzaG91bGRCdWlsZEltYWdlXG4gICAgICA/IChwcm9wcy5kb2NrZXJJbWFnZSA/P1xuICAgICAgICBEb2NrZXJJbWFnZS5mcm9tQnVpbGQocGF0aC5qb2luKF9fZGlybmFtZSksIHtcbiAgICAgICAgICBidWlsZEFyZ3M6IHtcbiAgICAgICAgICAgIC4uLihwcm9wcy5idWlsZEFyZ3MgPz8ge30pLFxuICAgICAgICAgICAgLy8gSWYgcnVudGltZSBpc24ndCBwYXNzZWQgdXNlIHJlZ2lvbmFsIGRlZmF1bHQsIGxvd2VzdCBjb21tb24gZGVub21pbmF0b3IgaXMgbm9kZTE4XG4gICAgICAgICAgICBJTUFHRTogcHJvcHMucnVudGltZS5idW5kbGluZ0ltYWdlLmltYWdlLFxuICAgICAgICAgICAgRVNCVUlMRF9WRVJTSU9OOiBwcm9wcy5lc2J1aWxkVmVyc2lvbiA/PyBFU0JVSUxEX0RFRkFVTFRfVkVSU0lPTixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBsYXRmb3JtOiBwcm9wcy5hcmNoaXRlY3R1cmUuZG9ja2VyUGxhdGZvcm0sXG4gICAgICAgIH0pKVxuICAgICAgOiBEb2NrZXJJbWFnZS5mcm9tUmVnaXN0cnkoXCJkdW1teVwiKTsgLy8gRG8gbm90IGJ1aWxkIGlmIHdlIGRvbid0IG5lZWQgdG9cblxuICAgIGNvbnN0IGJ1bmRsaW5nQ29tbWFuZCA9IHRoaXMuY3JlYXRlQnVuZGxpbmdDb21tYW5kKHtcbiAgICAgIGlucHV0RGlyOiBBc3NldFN0YWdpbmcuQlVORExJTkdfSU5QVVRfRElSLFxuICAgICAgb3V0cHV0RGlyOiBBc3NldFN0YWdpbmcuQlVORExJTkdfT1VUUFVUX0RJUixcbiAgICAgIGVzYnVpbGRSdW5uZXI6IFwiZXNidWlsZFwiLCAvLyBlc2J1aWxkIGlzIGluc3RhbGxlZCBnbG9iYWxseSBpbiB0aGUgZG9ja2VyIGltYWdlXG4gICAgICB0c2NSdW5uZXI6IFwidHNjXCIsIC8vIHRzYyBpcyBpbnN0YWxsZWQgZ2xvYmFsbHkgaW4gdGhlIGRvY2tlciBpbWFnZVxuICAgICAgb3NQbGF0Zm9ybTogXCJsaW51eFwiLCAvLyBsaW51eCBkb2NrZXIgaW1hZ2VcbiAgICB9KTtcbiAgICB0aGlzLmNvbW1hbmQgPSBwcm9wcy5jb21tYW5kID8/IFtcImJhc2hcIiwgXCItY1wiLCBidW5kbGluZ0NvbW1hbmRdO1xuICAgIHRoaXMuZW52aXJvbm1lbnQgPSBwcm9wcy5lbnZpcm9ubWVudDtcbiAgICAvLyBCdW5kbGluZyBzZXRzIHRoZSB3b3JraW5nIGRpcmVjdG9yeSB0byBBc3NldFN0YWdpbmcuQlVORExJTkdfSU5QVVRfRElSXG4gICAgLy8gYW5kIHdlIHdhbnQgdG8gZm9yY2UgbnB4IHRvIHVzZSB0aGUgZ2xvYmFsbHkgaW5zdGFsbGVkIGVzYnVpbGQuXG4gICAgdGhpcy53b3JraW5nRGlyZWN0b3J5ID0gcHJvcHMud29ya2luZ0RpcmVjdG9yeSA/PyBcIi9cIjtcbiAgICB0aGlzLmVudHJ5cG9pbnQgPSBwcm9wcy5lbnRyeXBvaW50O1xuICAgIHRoaXMudm9sdW1lcyA9IHByb3BzLnZvbHVtZXM7XG4gICAgdGhpcy52b2x1bWVzRnJvbSA9IHByb3BzLnZvbHVtZXNGcm9tO1xuICAgIHRoaXMudXNlciA9IHByb3BzLnVzZXI7XG4gICAgdGhpcy5zZWN1cml0eU9wdCA9IHByb3BzLnNlY3VyaXR5T3B0O1xuICAgIHRoaXMubmV0d29yayA9IHByb3BzLm5ldHdvcms7XG4gICAgdGhpcy5idW5kbGluZ0ZpbGVBY2Nlc3MgPSBwcm9wcy5idW5kbGluZ0ZpbGVBY2Nlc3M7XG5cbiAgICAvLyBMb2NhbCBidW5kbGluZ1xuICAgIGlmICghcHJvcHMuZm9yY2VEb2NrZXJCdW5kbGluZykge1xuICAgICAgLy8gb25seSBpZiBEb2NrZXIgaXMgbm90IGZvcmNlZFxuICAgICAgdGhpcy5sb2NhbCA9IHRoaXMuZ2V0TG9jYWxCdW5kbGluZ1Byb3ZpZGVyKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVCdW5kbGluZ0NvbW1hbmQob3B0aW9uczogQnVuZGxpbmdDb21tYW5kT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgY29uc3QgcGF0aEpvaW4gPSBvc1BhdGhKb2luKG9wdGlvbnMub3NQbGF0Zm9ybSk7XG4gICAgbGV0IHJlbGF0aXZlRW50cnlQYXRoID0gcGF0aEpvaW4ob3B0aW9ucy5pbnB1dERpciwgdGhpcy5yZWxhdGl2ZUVudHJ5UGF0aCk7XG4gICAgbGV0IHRzY0NvbW1hbmQgPSBcIlwiO1xuXG4gICAgaWYgKHRoaXMucHJvcHMucHJlQ29tcGlsYXRpb24pIHtcbiAgICAgIGNvbnN0IHRzY29uZmlnID1cbiAgICAgICAgdGhpcy5wcm9wcy50c2NvbmZpZyA/P1xuICAgICAgICBmaW5kVXAoXCJ0c2NvbmZpZy5qc29uXCIsIHBhdGguZGlybmFtZSh0aGlzLnByb3BzLmVudHJ5KSk7XG4gICAgICBpZiAoIXRzY29uZmlnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBcIkNhbm5vdCBmaW5kIGEgYHRzY29uZmlnLmpzb25gIGJ1dCBgcHJlQ29tcGlsYXRpb25gIGlzIHNldCB0byBgdHJ1ZWAsIHBsZWFzZSBzcGVjaWZ5IGl0IHZpYSBgdHNjb25maWdgXCIsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBjb25zdCBjb21waWxlck9wdGlvbnMgPSBnZXRUc2NvbmZpZ0NvbXBpbGVyT3B0aW9ucyh0c2NvbmZpZyk7XG4gICAgICB0c2NDb21tYW5kID0gYCR7b3B0aW9ucy50c2NSdW5uZXJ9IFwiJHtyZWxhdGl2ZUVudHJ5UGF0aH1cIiAke2NvbXBpbGVyT3B0aW9uc31gO1xuICAgICAgcmVsYXRpdmVFbnRyeVBhdGggPSByZWxhdGl2ZUVudHJ5UGF0aC5yZXBsYWNlKC9cXC50cyh4PykkLywgXCIuanMkMVwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBsb2FkZXJzID0gT2JqZWN0LmVudHJpZXModGhpcy5wcm9wcy5sb2FkZXIgPz8ge30pO1xuICAgIGNvbnN0IGRlZmluZXMgPSBPYmplY3QuZW50cmllcyh0aGlzLnByb3BzLmRlZmluZSA/PyB7fSk7XG5cbiAgICBpZiAodGhpcy5wcm9wcy5zb3VyY2VNYXAgPT09IGZhbHNlICYmIHRoaXMucHJvcHMuc291cmNlTWFwTW9kZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwic291cmNlTWFwTW9kZSBjYW5ub3QgYmUgdXNlZCB3aGVuIHNvdXJjZU1hcCBpcyBmYWxzZVwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBzb3VyY2VNYXBFbmFibGVkID0gdGhpcy5wcm9wcy5zb3VyY2VNYXBNb2RlID8/IHRoaXMucHJvcHMuc291cmNlTWFwO1xuICAgIGNvbnN0IHNvdXJjZU1hcE1vZGUgPSB0aGlzLnByb3BzLnNvdXJjZU1hcE1vZGUgPz8gU291cmNlTWFwTW9kZS5ERUZBVUxUO1xuICAgIGNvbnN0IHNvdXJjZU1hcFZhbHVlID1cbiAgICAgIHNvdXJjZU1hcE1vZGUgPT09IFNvdXJjZU1hcE1vZGUuREVGQVVMVFxuICAgICAgICA/IFwiXCJcbiAgICAgICAgOiBgPSR7dGhpcy5wcm9wcy5zb3VyY2VNYXBNb2RlfWA7XG4gICAgY29uc3Qgc291cmNlc0NvbnRlbnQgPSB0aGlzLnByb3BzLnNvdXJjZXNDb250ZW50ID8/IHRydWU7XG5cbiAgICBjb25zdCBvdXRGaWxlID1cbiAgICAgIHRoaXMucHJvcHMuZm9ybWF0ID09PSBPdXRwdXRGb3JtYXQuRVNNID8gXCJpbmRleC5tanNcIiA6IFwiaW5kZXguanNcIjtcbiAgICBjb25zdCBlc2J1aWxkQ29tbWFuZDogc3RyaW5nW10gPSBbXG4gICAgICBvcHRpb25zLmVzYnVpbGRSdW5uZXIsXG4gICAgICBcIi0tYnVuZGxlXCIsXG4gICAgICBgXCIke3JlbGF0aXZlRW50cnlQYXRofVwiYCxcbiAgICAgIGAtLXRhcmdldD0ke3RoaXMucHJvcHMudGFyZ2V0ID8/IHRvVGFyZ2V0KHRoaXMucHJvcHMucnVudGltZSl9YCxcbiAgICAgIFwiLS1wbGF0Zm9ybT1ub2RlXCIsXG4gICAgICAuLi4odGhpcy5wcm9wcy5mb3JtYXQgPyBbYC0tZm9ybWF0PSR7dGhpcy5wcm9wcy5mb3JtYXR9YF0gOiBbXSksXG4gICAgICBgLS1vdXRmaWxlPVwiJHtwYXRoSm9pbihvcHRpb25zLm91dHB1dERpciwgb3V0RmlsZSl9XCJgLFxuICAgICAgLi4uKHRoaXMucHJvcHMubWluaWZ5ID8gW1wiLS1taW5pZnlcIl0gOiBbXSksXG4gICAgICAuLi4oc291cmNlTWFwRW5hYmxlZCA/IFtgLS1zb3VyY2VtYXAke3NvdXJjZU1hcFZhbHVlfWBdIDogW10pLFxuICAgICAgLi4uKHNvdXJjZXNDb250ZW50ID8gW10gOiBbYC0tc291cmNlcy1jb250ZW50PSR7c291cmNlc0NvbnRlbnR9YF0pLFxuICAgICAgLi4udGhpcy5leHRlcm5hbHMubWFwKChleHRlcm5hbCkgPT4gYC0tZXh0ZXJuYWw6JHtleHRlcm5hbH1gKSxcbiAgICAgIC4uLmxvYWRlcnMubWFwKChbZXh0LCBuYW1lXSkgPT4gYC0tbG9hZGVyOiR7ZXh0fT0ke25hbWV9YCksXG4gICAgICAuLi5kZWZpbmVzLm1hcChcbiAgICAgICAgKFtrZXksIHZhbHVlXSkgPT4gYC0tZGVmaW5lOiR7a2V5fT0ke0pTT04uc3RyaW5naWZ5KHZhbHVlKX1gLFxuICAgICAgKSxcbiAgICAgIC4uLih0aGlzLnByb3BzLmxvZ0xldmVsID8gW2AtLWxvZy1sZXZlbD0ke3RoaXMucHJvcHMubG9nTGV2ZWx9YF0gOiBbXSksXG4gICAgICAuLi4odGhpcy5wcm9wcy5rZWVwTmFtZXMgPyBbXCItLWtlZXAtbmFtZXNcIl0gOiBbXSksXG4gICAgICAuLi4odGhpcy5yZWxhdGl2ZVRzY29uZmlnUGF0aFxuICAgICAgICA/IFtcbiAgICAgICAgICAgIGAtLXRzY29uZmlnPVwiJHtwYXRoSm9pbihvcHRpb25zLmlucHV0RGlyLCB0aGlzLnJlbGF0aXZlVHNjb25maWdQYXRoKX1cImAsXG4gICAgICAgICAgXVxuICAgICAgICA6IFtdKSxcbiAgICAgIC4uLih0aGlzLnByb3BzLm1ldGFmaWxlXG4gICAgICAgID8gW2AtLW1ldGFmaWxlPVwiJHtwYXRoSm9pbihvcHRpb25zLm91dHB1dERpciwgXCJpbmRleC5tZXRhLmpzb25cIil9XCJgXVxuICAgICAgICA6IFtdKSxcbiAgICAgIC4uLih0aGlzLnByb3BzLmJhbm5lclxuICAgICAgICA/IFtgLS1iYW5uZXI6anM9JHtKU09OLnN0cmluZ2lmeSh0aGlzLnByb3BzLmJhbm5lcil9YF1cbiAgICAgICAgOiBbXSksXG4gICAgICAuLi4odGhpcy5wcm9wcy5mb290ZXJcbiAgICAgICAgPyBbYC0tZm9vdGVyOmpzPSR7SlNPTi5zdHJpbmdpZnkodGhpcy5wcm9wcy5mb290ZXIpfWBdXG4gICAgICAgIDogW10pLFxuICAgICAgLi4uKHRoaXMucHJvcHMubWFpbkZpZWxkc1xuICAgICAgICA/IFtgLS1tYWluLWZpZWxkcz0ke3RoaXMucHJvcHMubWFpbkZpZWxkcy5qb2luKFwiLFwiKX1gXVxuICAgICAgICA6IFtdKSxcbiAgICAgIC4uLih0aGlzLnByb3BzLmluamVjdFxuICAgICAgICA/IHRoaXMucHJvcHMuaW5qZWN0Lm1hcCgoaSkgPT4gYC0taW5qZWN0OlwiJHtpfVwiYClcbiAgICAgICAgOiBbXSksXG4gICAgICAuLi4odGhpcy5wcm9wcy5lc2J1aWxkQXJncyA/IFt0b0NsaUFyZ3ModGhpcy5wcm9wcy5lc2J1aWxkQXJncyldIDogW10pLFxuICAgIF07XG5cbiAgICBsZXQgZGVwc0NvbW1hbmQgPSBcIlwiO1xuICAgIGlmICh0aGlzLnByb3BzLm5vZGVNb2R1bGVzKSB7XG4gICAgICAvLyBGaW5kICdwYWNrYWdlLmpzb24nIGNsb3Nlc3QgdG8gZW50cnkgZm9sZGVyLCB3ZSBhcmUgZ29pbmcgdG8gZXh0cmFjdCB0aGVcbiAgICAgIC8vIG1vZHVsZXMgdmVyc2lvbnMgZnJvbSBpdC5cbiAgICAgIGNvbnN0IHBrZ1BhdGggPSBmaW5kVXAoXCJwYWNrYWdlLmpzb25cIiwgcGF0aC5kaXJuYW1lKHRoaXMucHJvcHMuZW50cnkpKTtcbiAgICAgIGlmICghcGtnUGF0aCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgXCJDYW5ub3QgZmluZCBhIGBwYWNrYWdlLmpzb25gIGluIHRoaXMgcHJvamVjdC4gVXNpbmcgYG5vZGVNb2R1bGVzYCByZXF1aXJlcyBhIGBwYWNrYWdlLmpzb25gLlwiLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBEZXRlcm1pbmUgZGVwZW5kZW5jaWVzIHZlcnNpb25zLCBsb2NrIGZpbGUgYW5kIGluc3RhbGxlclxuICAgICAgY29uc3QgZGVwZW5kZW5jaWVzID0gZXh0cmFjdERlcGVuZGVuY2llcyhwa2dQYXRoLCB0aGlzLnByb3BzLm5vZGVNb2R1bGVzKTtcbiAgICAgIGNvbnN0IG9zQ29tbWFuZCA9IG5ldyBPc0NvbW1hbmQob3B0aW9ucy5vc1BsYXRmb3JtKTtcblxuICAgICAgY29uc3QgbG9ja0ZpbGVQYXRoID0gcGF0aEpvaW4oXG4gICAgICAgIG9wdGlvbnMuaW5wdXREaXIsXG4gICAgICAgIHRoaXMucmVsYXRpdmVEZXBzTG9ja0ZpbGVQYXRoID8/IHRoaXMucGFja2FnZU1hbmFnZXIubG9ja0ZpbGUsXG4gICAgICApO1xuXG4gICAgICBjb25zdCBpc1BucG0gPSB0aGlzLnBhY2thZ2VNYW5hZ2VyLmxvY2tGaWxlID09PSBMb2NrRmlsZS5QTlBNO1xuICAgICAgY29uc3QgaXNCdW4gPSB0aGlzLnBhY2thZ2VNYW5hZ2VyLmxvY2tGaWxlID09PSBMb2NrRmlsZS5CVU47XG5cbiAgICAgIC8vIENyZWF0ZSBkdW1teSBwYWNrYWdlLmpzb24sIGNvcHkgbG9jayBmaWxlIGlmIGFueSBhbmQgdGhlbiBpbnN0YWxsXG4gICAgICBkZXBzQ29tbWFuZCA9IGNoYWluKFtcbiAgICAgICAgaXNQbnBtXG4gICAgICAgICAgPyBvc0NvbW1hbmQud3JpdGUoXG4gICAgICAgICAgICAgIHBhdGhKb2luKG9wdGlvbnMub3V0cHV0RGlyLCBcInBucG0td29ya3NwYWNlLnlhbWxcIiksXG4gICAgICAgICAgICAgIFwiXCIsXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiBcIlwiLCAvLyBFbnN1cmUgbm9kZV9tb2R1bGVzIGRpcmVjdG9yeSBpcyBpbnN0YWxsZWQgbG9jYWxseSBieSBjcmVhdGluZyBsb2NhbCAncG5wbS13b3Jrc3BhY2UueWFtbCcgZmlsZVxuICAgICAgICBvc0NvbW1hbmQud3JpdGVKc29uKHBhdGhKb2luKG9wdGlvbnMub3V0cHV0RGlyLCBcInBhY2thZ2UuanNvblwiKSwge1xuICAgICAgICAgIGRlcGVuZGVuY2llcyxcbiAgICAgICAgfSksXG4gICAgICAgIG9zQ29tbWFuZC5jb3B5KFxuICAgICAgICAgIGxvY2tGaWxlUGF0aCxcbiAgICAgICAgICBwYXRoSm9pbihvcHRpb25zLm91dHB1dERpciwgdGhpcy5wYWNrYWdlTWFuYWdlci5sb2NrRmlsZSksXG4gICAgICAgICksXG4gICAgICAgIG9zQ29tbWFuZC5jaGFuZ2VEaXJlY3Rvcnkob3B0aW9ucy5vdXRwdXREaXIpLFxuICAgICAgICB0aGlzLnBhY2thZ2VNYW5hZ2VyLmluc3RhbGxDb21tYW5kLmpvaW4oXCIgXCIpLFxuICAgICAgICBpc1BucG1cbiAgICAgICAgICA/IG9zQ29tbWFuZC5yZW1vdmUoXG4gICAgICAgICAgICAgIHBhdGhKb2luKG9wdGlvbnMub3V0cHV0RGlyLCBcIm5vZGVfbW9kdWxlc1wiLCBcIi5tb2R1bGVzLnlhbWxcIiksXG4gICAgICAgICAgICAgIHRydWUsXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiBcIlwiLCAvLyBSZW1vdmUgJy5tb2R1bGVzLnlhbWwnIGZpbGUgd2hpY2ggY2hhbmdlcyBvbiBlYWNoIGRlcGxveW1lbnRcbiAgICAgICAgaXNCdW5cbiAgICAgICAgICA/IG9zQ29tbWFuZC5yZW1vdmVEaXIoXG4gICAgICAgICAgICAgIHBhdGhKb2luKG9wdGlvbnMub3V0cHV0RGlyLCBcIm5vZGVfbW9kdWxlc1wiLCBcIi5jYWNoZVwiKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IFwiXCIsIC8vIFJlbW92ZSBub2RlX21vZHVsZXMvLmNhY2hlIGZvbGRlciBzaW5jZSB5b3UgY2FuJ3QgZGlzYWJsZSBpdHMgY3JlYXRpb25cbiAgICAgIF0pO1xuICAgIH1cblxuICAgIHJldHVybiBjaGFpbihbXG4gICAgICAuLi4odGhpcy5wcm9wcy5jb21tYW5kSG9va3M/LmJlZm9yZUJ1bmRsaW5nKFxuICAgICAgICBvcHRpb25zLmlucHV0RGlyLFxuICAgICAgICBvcHRpb25zLm91dHB1dERpcixcbiAgICAgICkgPz8gW10pLFxuICAgICAgdHNjQ29tbWFuZCxcbiAgICAgIGVzYnVpbGRDb21tYW5kLmpvaW4oXCIgXCIpLFxuICAgICAgLi4uKCh0aGlzLnByb3BzLm5vZGVNb2R1bGVzICYmXG4gICAgICAgIHRoaXMucHJvcHMuY29tbWFuZEhvb2tzPy5iZWZvcmVJbnN0YWxsKFxuICAgICAgICAgIG9wdGlvbnMuaW5wdXREaXIsXG4gICAgICAgICAgb3B0aW9ucy5vdXRwdXREaXIsXG4gICAgICAgICkpID8/XG4gICAgICAgIFtdKSxcbiAgICAgIGRlcHNDb21tYW5kLFxuICAgICAgLi4uKHRoaXMucHJvcHMuY29tbWFuZEhvb2tzPy5hZnRlckJ1bmRsaW5nKFxuICAgICAgICBvcHRpb25zLmlucHV0RGlyLFxuICAgICAgICBvcHRpb25zLm91dHB1dERpcixcbiAgICAgICkgPz8gW10pLFxuICAgIF0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMb2NhbEJ1bmRsaW5nUHJvdmlkZXIoKTogSUxvY2FsQnVuZGxpbmcge1xuICAgIGNvbnN0IG9zUGxhdGZvcm0gPSBvcy5wbGF0Zm9ybSgpO1xuICAgIGNvbnN0IGNyZWF0ZUxvY2FsQ29tbWFuZCA9IChcbiAgICAgIG91dHB1dERpcjogc3RyaW5nLFxuICAgICAgZXNidWlsZDogUGFja2FnZUluc3RhbGxhdGlvbixcbiAgICAgIHRzYz86IFBhY2thZ2VJbnN0YWxsYXRpb24sXG4gICAgKSA9PlxuICAgICAgdGhpcy5jcmVhdGVCdW5kbGluZ0NvbW1hbmQoe1xuICAgICAgICBpbnB1dERpcjogdGhpcy5wcm9qZWN0Um9vdCxcbiAgICAgICAgb3V0cHV0RGlyLFxuICAgICAgICBlc2J1aWxkUnVubmVyOiBlc2J1aWxkLmlzTG9jYWxcbiAgICAgICAgICA/IHRoaXMucGFja2FnZU1hbmFnZXIucnVuQmluQ29tbWFuZChcImVzYnVpbGRcIilcbiAgICAgICAgICA6IFwiZXNidWlsZFwiLFxuICAgICAgICB0c2NSdW5uZXI6XG4gICAgICAgICAgdHNjICYmXG4gICAgICAgICAgKHRzYy5pc0xvY2FsID8gdGhpcy5wYWNrYWdlTWFuYWdlci5ydW5CaW5Db21tYW5kKFwidHNjXCIpIDogXCJ0c2NcIiksXG4gICAgICAgIG9zUGxhdGZvcm0sXG4gICAgICB9KTtcbiAgICBjb25zdCBlbnZpcm9ubWVudCA9IHRoaXMucHJvcHMuZW52aXJvbm1lbnQgPz8ge307XG4gICAgY29uc3QgY3dkID0gdGhpcy5wcm9qZWN0Um9vdDtcblxuICAgIHJldHVybiB7XG4gICAgICB0cnlCdW5kbGUob3V0cHV0RGlyOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCFCdW5kbGluZy5lc2J1aWxkSW5zdGFsbGF0aW9uKSB7XG4gICAgICAgICAgcHJvY2Vzcy5zdGRlcnIud3JpdGUoXG4gICAgICAgICAgICBcImVzYnVpbGQgY2Fubm90IHJ1biBsb2NhbGx5LiBTd2l0Y2hpbmcgdG8gRG9ja2VyIGJ1bmRsaW5nLlxcblwiLFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICFCdW5kbGluZy5lc2J1aWxkSW5zdGFsbGF0aW9uLnZlcnNpb24uc3RhcnRzV2l0aChcbiAgICAgICAgICAgIGAke0VTQlVJTERfTUFKT1JfVkVSU0lPTn0uYCxcbiAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBFeHBlY3RlZCBlc2J1aWxkIHZlcnNpb24gJHtFU0JVSUxEX01BSk9SX1ZFUlNJT059LnggYnV0IGdvdCAke0J1bmRsaW5nLmVzYnVpbGRJbnN0YWxsYXRpb24udmVyc2lvbn1gLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsb2NhbENvbW1hbmQgPSBjcmVhdGVMb2NhbENvbW1hbmQoXG4gICAgICAgICAgb3V0cHV0RGlyLFxuICAgICAgICAgIEJ1bmRsaW5nLmVzYnVpbGRJbnN0YWxsYXRpb24sXG4gICAgICAgICAgQnVuZGxpbmcudHNjSW5zdGFsbGF0aW9uLFxuICAgICAgICApO1xuXG4gICAgICAgIGV4ZWMoXG4gICAgICAgICAgb3NQbGF0Zm9ybSA9PT0gXCJ3aW4zMlwiID8gXCJjbWRcIiA6IFwiYmFzaFwiLFxuICAgICAgICAgIFtvc1BsYXRmb3JtID09PSBcIndpbjMyXCIgPyBcIi9jXCIgOiBcIi1jXCIsIGxvY2FsQ29tbWFuZF0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgZW52OiB7IC4uLnByb2Nlc3MuZW52LCAuLi5lbnZpcm9ubWVudCB9LFxuICAgICAgICAgICAgc3RkaW86IFtcbiAgICAgICAgICAgICAgLy8gc2hvdyBvdXRwdXRcbiAgICAgICAgICAgICAgXCJpZ25vcmVcIiwgLy8gaWdub3JlIHN0ZGlvXG4gICAgICAgICAgICAgIHByb2Nlc3Muc3RkZXJyLCAvLyByZWRpcmVjdCBzdGRvdXQgdG8gc3RkZXJyXG4gICAgICAgICAgICAgIFwiaW5oZXJpdFwiLCAvLyBpbmhlcml0IHN0ZGVyclxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGN3ZCxcbiAgICAgICAgICAgIHdpbmRvd3NWZXJiYXRpbUFyZ3VtZW50czogb3NQbGF0Zm9ybSA9PT0gXCJ3aW4zMlwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cblxuaW50ZXJmYWNlIEJ1bmRsaW5nQ29tbWFuZE9wdGlvbnMge1xuICByZWFkb25seSBpbnB1dERpcjogc3RyaW5nO1xuICByZWFkb25seSBvdXRwdXREaXI6IHN0cmluZztcbiAgcmVhZG9ubHkgZXNidWlsZFJ1bm5lcjogc3RyaW5nO1xuICByZWFkb25seSB0c2NSdW5uZXI/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG9zUGxhdGZvcm06IE5vZGVKUy5QbGF0Zm9ybTtcbn1cblxuLyoqXG4gKiBPUyBhZ25vc3RpYyBjb21tYW5kXG4gKi9cbmNsYXNzIE9zQ29tbWFuZCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgb3NQbGF0Zm9ybTogTm9kZUpTLlBsYXRmb3JtKSB7fVxuXG4gIHB1YmxpYyB3cml0ZShmaWxlUGF0aDogc3RyaW5nLCBkYXRhOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLm9zUGxhdGZvcm0gPT09IFwid2luMzJcIikge1xuICAgICAgaWYgKCFkYXRhKSB7XG4gICAgICAgIC8vIGlmIGBkYXRhYCBpcyBlbXB0eSwgZWNobyBhIGJsYW5rIGxpbmUsIG90aGVyd2lzZSB0aGUgZmlsZSB3aWxsIGNvbnRhaW4gYSBgXmAgY2hhcmFjdGVyXG4gICAgICAgIHJldHVybiBgZWNoby4gPiBcIiR7ZmlsZVBhdGh9XCJgO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGBlY2hvIF4ke2RhdGF9XiA+IFwiJHtmaWxlUGF0aH1cImA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGBlY2hvICcke2RhdGF9JyA+IFwiJHtmaWxlUGF0aH1cImA7XG4gIH1cblxuICBwdWJsaWMgd3JpdGVKc29uKGZpbGVQYXRoOiBzdHJpbmcsIGRhdGE6IGFueSk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3RyaW5naWZpZWREYXRhID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gICAgcmV0dXJuIHRoaXMud3JpdGUoZmlsZVBhdGgsIHN0cmluZ2lmaWVkRGF0YSk7XG4gIH1cblxuICBwdWJsaWMgY29weShzcmM6IHN0cmluZywgZGVzdDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5vc1BsYXRmb3JtID09PSBcIndpbjMyXCIpIHtcbiAgICAgIHJldHVybiBgY29weSBcIiR7c3JjfVwiIFwiJHtkZXN0fVwiYDtcbiAgICB9XG5cbiAgICByZXR1cm4gYGNwIFwiJHtzcmN9XCIgXCIke2Rlc3R9XCJgO1xuICB9XG5cbiAgcHVibGljIGNoYW5nZURpcmVjdG9yeShkaXI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBjZCBcIiR7ZGlyfVwiYDtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmUoZmlsZVBhdGg6IHN0cmluZywgZm9yY2U6IGJvb2xlYW4gPSBmYWxzZSk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMub3NQbGF0Zm9ybSA9PT0gXCJ3aW4zMlwiKSB7XG4gICAgICByZXR1cm4gYGRlbCBcIiR7ZmlsZVBhdGh9XCJgO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdHMgPSBmb3JjZSA/IFtcIi1mXCJdIDogW107XG4gICAgcmV0dXJuIGBybSAke29wdHMuam9pbihcIiBcIil9IFwiJHtmaWxlUGF0aH1cImA7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlRGlyKGRpcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5vc1BsYXRmb3JtID09PSBcIndpbjMyXCIpIHtcbiAgICAgIHJldHVybiBgcm1kaXIgL3MgL3EgXCIke2Rpcn1cImA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGBybSAtcmYgXCIke2Rpcn1cImA7XG4gIH1cbn1cblxuLyoqXG4gKiBDaGFpbiBjb21tYW5kc1xuICovXG5mdW5jdGlvbiBjaGFpbihjb21tYW5kczogc3RyaW5nW10pOiBzdHJpbmcge1xuICByZXR1cm4gY29tbWFuZHMuZmlsdGVyKChjKSA9PiAhIWMpLmpvaW4oXCIgJiYgXCIpO1xufVxuXG4vKipcbiAqIFBsYXRmb3JtIHNwZWNpZmljIHBhdGggam9pblxuICovXG5mdW5jdGlvbiBvc1BhdGhKb2luKHBsYXRmb3JtOiBOb2RlSlMuUGxhdGZvcm0pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICguLi5wYXRoczogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIGNvbnN0IGpvaW5lZCA9IHBhdGguam9pbiguLi5wYXRocyk7XG4gICAgLy8gSWYgd2UgYXJlIG9uIHdpbjMyIGJ1dCBuZWVkIHBvc2l4IHN0eWxlIHBhdGhzXG4gICAgaWYgKG9zLnBsYXRmb3JtKCkgPT09IFwid2luMzJcIiAmJiBwbGF0Zm9ybSAhPT0gXCJ3aW4zMlwiKSB7XG4gICAgICByZXR1cm4gam9pbmVkLnJlcGxhY2UoL1xcXFwvZywgXCIvXCIpO1xuICAgIH1cbiAgICByZXR1cm4gam9pbmVkO1xuICB9O1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgcnVudGltZSB0byBhbiBlc2J1aWxkIG5vZGUgdGFyZ2V0XG4gKi9cbmZ1bmN0aW9uIHRvVGFyZ2V0KHJ1bnRpbWU6IFJ1bnRpbWUpOiBzdHJpbmcge1xuICBjb25zdCBtYXRjaCA9IHJ1bnRpbWUubmFtZS5tYXRjaCgvbm9kZWpzKFxcZCspLyk7XG5cbiAgaWYgKCFtYXRjaCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBleHRyYWN0IHZlcnNpb24gZnJvbSBydW50aW1lLlwiKTtcbiAgfVxuXG4gIHJldHVybiBgbm9kZSR7bWF0Y2hbMV19YDtcbn1cblxuZnVuY3Rpb24gdG9DbGlBcmdzKGVzYnVpbGRBcmdzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IGJvb2xlYW4gfSk6IHN0cmluZyB7XG4gIGNvbnN0IGFyZ3MgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICBjb25zdCByZVNwZWNpZmllZEtleXMgPSBbXG4gICAgXCItLWFsaWFzXCIsXG4gICAgXCItLWRyb3BcIixcbiAgICBcIi0tcHVyZVwiLFxuICAgIFwiLS1sb2ctb3ZlcnJpZGVcIixcbiAgICBcIi0tb3V0LWV4dGVuc2lvblwiLFxuICBdO1xuXG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGVzYnVpbGRBcmdzKSkge1xuICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gXCJcIikge1xuICAgICAgYXJncy5wdXNoKGtleSk7XG4gICAgfSBlbHNlIGlmIChyZVNwZWNpZmllZEtleXMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgYXJncy5wdXNoKGAke2tleX06XCIke3ZhbHVlfVwiYCk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSkge1xuICAgICAgYXJncy5wdXNoKGAke2tleX09XCIke3ZhbHVlfVwiYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFyZ3Muam9pbihcIiBcIik7XG59XG5cbi8qKlxuICogRGV0ZWN0IGlmIGEgZ2l2ZW4gTm9kZS5qcyBydW50aW1lIHN1cHBvcnRzIEVTTSAoRUNNQVNjcmlwdCBtb2R1bGVzKVxuICovXG5mdW5jdGlvbiBpc0VzbVJ1bnRpbWUocnVudGltZTogUnVudGltZSk6IGJvb2xlYW4ge1xuICBjb25zdCB1bnN1cHBvcnRlZFJ1bnRpbWVzID0gW1xuICAgIFJ1bnRpbWUuTk9ERUpTLFxuICAgIFJ1bnRpbWUuTk9ERUpTXzRfMyxcbiAgICBSdW50aW1lLk5PREVKU182XzEwLFxuICAgIFJ1bnRpbWUuTk9ERUpTXzhfMTAsXG4gICAgUnVudGltZS5OT0RFSlNfMTBfWCxcbiAgICBSdW50aW1lLk5PREVKU18xMl9YLFxuICBdO1xuXG4gIHJldHVybiAhdW5zdXBwb3J0ZWRSdW50aW1lcy5zb21lKChyKSA9PiB7XG4gICAgcmV0dXJuIHIuZmFtaWx5ID09PSBydW50aW1lLmZhbWlseSAmJiByLm5hbWUgPT09IHJ1bnRpbWUubmFtZTtcbiAgfSk7XG59XG4iXX0=
|
|
@@ -5,7 +5,7 @@ exports.NodejsFunction = void 0;
|
|
|
5
5
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
6
|
const fs = require("fs");
|
|
7
7
|
const path = require("path");
|
|
8
|
-
const
|
|
8
|
+
const cdktn_1 = require("cdktn");
|
|
9
9
|
const bundling_1 = require("./bundling");
|
|
10
10
|
const package_manager_1 = require("./package-manager");
|
|
11
11
|
const util_1 = require("./util");
|
|
@@ -64,7 +64,7 @@ class NodejsFunction extends function_1.LambdaFunction {
|
|
|
64
64
|
else {
|
|
65
65
|
if (props.awsSdkConnectionReuse) {
|
|
66
66
|
// "aws-cdk-lib/aws-lambda-nodejs:unusedSdkEvironmentVariable",
|
|
67
|
-
|
|
67
|
+
cdktn_1.Annotations.of(scope).addWarning("The AWS_NODEJS_CONNECTION_REUSE_ENABLED environment variable does not exist in SDK v3. You have explicitly set `awsSdkConnectionReuse`; please make sure this is intentional.");
|
|
68
68
|
this.addEnvironment("AWS_NODEJS_CONNECTION_REUSE_ENABLED", "1");
|
|
69
69
|
}
|
|
70
70
|
}
|
|
@@ -72,7 +72,7 @@ class NodejsFunction extends function_1.LambdaFunction {
|
|
|
72
72
|
}
|
|
73
73
|
exports.NodejsFunction = NodejsFunction;
|
|
74
74
|
_a = JSII_RTTI_SYMBOL_1;
|
|
75
|
-
NodejsFunction[_a] = { fqn: "terraconstructs.aws.compute.NodejsFunction", version: "0.2.
|
|
75
|
+
NodejsFunction[_a] = { fqn: "terraconstructs.aws.compute.NodejsFunction", version: "0.2.6" };
|
|
76
76
|
/**
|
|
77
77
|
* default to NODEJS_LATEST.
|
|
78
78
|
*/
|
|
@@ -172,4 +172,4 @@ function findDefiningFile() {
|
|
|
172
172
|
}
|
|
173
173
|
return sites[definingIndex].getFileName();
|
|
174
174
|
}
|
|
175
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXdzL2NvbXB1dGUvZnVuY3Rpb24tbm9kZWpzL2Z1bmN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3QixpQ0FBb0M7QUFFcEMseUNBQXNDO0FBQ3RDLHVEQUE2QztBQUU3QyxpQ0FBbUU7QUFDbkUsa0RBQStDO0FBRS9DLDBDQUE4RDtBQUM5RCx3Q0FBb0Q7QUFrR3BEOztHQUVHO0FBQ0gsTUFBYSxjQUFlLFNBQVEseUJBQWM7SUFDaEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUE2QixFQUFFO1FBQ3ZFLElBQUksS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyx1QkFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25FLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQztRQUMzRCxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWxDLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM3QixJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQ2IsNEdBQTRHO29CQUMxRyxnSEFBZ0g7b0JBQ2hILDBFQUEwRSxDQUM3RSxDQUFDO1lBQ0osQ0FBQztZQUVELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO2dCQUNmLEdBQUcsS0FBSztnQkFDUixPQUFPO2dCQUNQLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtnQkFDaEIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO2FBQ3ZCLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04scUJBQXFCO1lBQ3JCLE1BQU0sS0FBSyxHQUFH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NEIsYUFBYSxLQUFLLGFBQWEsS0FBSyxjQUFjLEtBQUssY0FBYyxLQUFLLGNBQWMsT0FBTyxjQUFjLEVBQUUsQ0FDNUksQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsZ0JBQWdCO0lBQ3ZCLElBQUksYUFBaUMsQ0FBQztJQUN0QyxNQUFNLEtBQUssR0FBRyxJQUFBLGdCQUFTLEdBQUUsQ0FBQztJQUMxQixLQUFLLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7UUFDNUMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQztZQUNoRCxpRUFBaUU7WUFDakUsYUFBYSxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDMUIsTUFBTTtRQUNSLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQzVDLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDNUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgQW5ub3RhdGlvbnMgfSBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBCdW5kbGluZyB9IGZyb20gXCIuL2J1bmRsaW5nXCI7XG5pbXBvcnQgeyBMb2NrRmlsZSB9IGZyb20gXCIuL3BhY2thZ2UtbWFuYWdlclwiO1xuaW1wb3J0IHsgQnVuZGxpbmdPcHRpb25zIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IGNhbGxzaXRlcywgZmluZFVwTXVsdGlwbGUsIGlzU2RrVjJSdW50aW1lIH0gZnJvbSBcIi4vdXRpbFwiO1xuaW1wb3J0IHsgQXJjaGl0ZWN0dXJlIH0gZnJvbSBcIi4uL2FyY2hpdGVjdHVyZVwiO1xuaW1wb3J0IHsgQ29kZSB9IGZyb20gXCIuLi9jb2RlXCI7XG5pbXBvcnQgeyBGdW5jdGlvbk9wdGlvbnMsIExhbWJkYUZ1bmN0aW9uIH0gZnJvbSBcIi4uL2Z1bmN0aW9uXCI7XG5pbXBvcnQgeyBSdW50aW1lLCBSdW50aW1lRmFtaWx5IH0gZnJvbSBcIi4uL3J1bnRpbWVcIjtcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhIE5vZGVqc0Z1bmN0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm9kZWpzRnVuY3Rpb25Qcm9wcyBleHRlbmRzIEZ1bmN0aW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBQYXRoIHRvIHRoZSBlbnRyeSBmaWxlIChKYXZhU2NyaXB0IG9yIFR5cGVTY3JpcHQpLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlcml2ZWQgZnJvbSB0aGUgbmFtZSBvZiB0aGUgZGVmaW5pbmcgZmlsZSBhbmQgdGhlIGNvbnN0cnVjdCdzIGlkLlxuICAgKiBJZiB0aGUgYE5vZGVqc0Z1bmN0aW9uYCBpcyBkZWZpbmVkIGluIGBzdGFjay50c2Agd2l0aCBgbXktaGFuZGxlcmAgYXMgaWRcbiAgICogKGBuZXcgTm9kZWpzRnVuY3Rpb24odGhpcywgJ215LWhhbmRsZXInKWApLCB0aGUgY29uc3RydWN0IHdpbGwgbG9vayBhdCBgc3RhY2subXktaGFuZGxlci50c2BcbiAgICogYW5kIGBzdGFjay5teS1oYW5kbGVyLmpzYC5cbiAgICovXG4gIHJlYWRvbmx5IGVudHJ5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZXhwb3J0ZWQgaGFuZGxlciBpbiB0aGUgZW50cnkgZmlsZS5cbiAgICpcbiAgICogKiBJZiB0aGUgYGNvZGVgIHByb3BlcnR5IGlzIHN1cHBsaWVkLCB0aGVuIHlvdSBtdXN0IGluY2x1ZGUgdGhlIGBoYW5kbGVyYCBwcm9wZXJ0eS4gVGhlIGhhbmRsZXIgc2hvdWxkIGJlIHRoZSBuYW1lIG9mIHRoZSBmaWxlXG4gICAqIHRoYXQgY29udGFpbnMgdGhlIGV4cG9ydGVkIGhhbmRsZXIgYW5kIHRoZSBmdW5jdGlvbiB0aGF0IHNob3VsZCBiZSBjYWxsZWQgd2hlbiB0aGUgQVdTIExhbWJkYSBpcyBpbnZva2VkLiBGb3IgZXhhbXBsZSwgaWZcbiAgICogeW91IGhhZCBhIGZpbGUgY2FsbGVkIGBteUxhbWJkYS5qc2AgYW5kIHRoZSBmdW5jdGlvbiB0byBiZSBpbnZva2VkIHdhcyBgbXlIYW5kbGVyYCwgdGhlbiB5b3Ugc2hvdWxkIGlucHV0IGBoYW5kbGVyYCBwcm9wZXJ0eSBhcyBgbXlMYW1iZGEubXlIYW5kbGVyYC5cbiAgICpcbiAgICogKiBJZiB0aGUgYGNvZGVgIHByb3BlcnR5IGlzIG5vdCBzdXBwbGllZCBhbmQgdGhlIGhhbmRsZXIgaW5wdXQgZG9lcyBub3QgY29udGFpbiBhIGAuYCwgdGhlbiB0aGUgaGFuZGxlciBpcyBwcmVmaXhlZCB3aXRoIGBpbmRleC5gIChpbmRleCBwZXJpb2QpLiBPdGhlcndpc2UsXG4gICAqIHRoZSBoYW5kbGVyIHByb3BlcnR5IGlzIG5vdCBtb2RpZmllZC5cbiAgICpcbiAgICogQGRlZmF1bHQgaGFuZGxlclxuICAgKi9cbiAgcmVhZG9ubHkgaGFuZGxlcj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJ1bnRpbWUgZW52aXJvbm1lbnQuIE9ubHkgcnVudGltZXMgb2YgdGhlIE5vZGUuanMgZmFtaWx5IGFyZVxuICAgKiBzdXBwb3J0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBSdW50aW1lLk5PREVKU19MQVRFU1RgXG4gICAqL1xuICByZWFkb25seSBydW50aW1lPzogUnVudGltZTtcblxuICAvKipcbiAgICogVGhlIGBBV1NfTk9ERUpTX0NPTk5FQ1RJT05fUkVVU0VfRU5BQkxFRGAgZW52aXJvbm1lbnQgdmFyaWFibGUgZG9lcyBub3QgZXhpc3QgaW4gdGhlIEFXUyBTREsgZm9yIEphdmFTY3JpcHQgdjMuXG4gICAqXG4gICAqIFRoaXMgcHJvcCB3aWxsIGJlIGRlcHJlY2F0ZWQgd2hlbiB0aGUgTGFtYmRhIE5vZGUxNiBydW50aW1lIGlzIGRlcHJlY2F0ZWQgb24gSnVuZSAxMiwgMjAyNC5cbiAgICogU2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sYW1iZGEvbGF0ZXN0L2RnL2xhbWJkYS1ydW50aW1lcy5odG1sI3J1bnRpbWUtc3VwcG9ydC1wb2xpY3lcbiAgICpcbiAgICogSW5mbyBmb3IgTm9kZSAxNiBydW50aW1lcyAvIFNESyB2MiB1c2VyczpcbiAgICpcbiAgICogV2hldGhlciB0byBhdXRvbWF0aWNhbGx5IHJldXNlIFRDUCBjb25uZWN0aW9ucyB3aGVuIHdvcmtpbmcgd2l0aCB0aGUgQVdTXG4gICAqIFNESyBmb3IgSmF2YVNjcmlwdCB2Mi5cbiAgICpcbiAgICogVGhpcyBzZXRzIHRoZSBgQVdTX05PREVKU19DT05ORUNUSU9OX1JFVVNFX0VOQUJMRURgIGVudmlyb25tZW50IHZhcmlhYmxlXG4gICAqIHRvIGAxYC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc2RrLWZvci1qYXZhc2NyaXB0L3YzL2RldmVsb3Blci1ndWlkZS9ub2RlLXJldXNpbmctY29ubmVjdGlvbnMuaHRtbFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGZhbHNlIChvYnNvbGV0ZSkgZm9yIHJ1bnRpbWVzID49IE5vZGUgMTgsIHRydWUgZm9yIHJ1bnRpbWVzIDw9IE5vZGUgMTYuXG4gICAqL1xuICByZWFkb25seSBhd3NTZGtDb25uZWN0aW9uUmV1c2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0byB0aGUgZGVwZW5kZW5jaWVzIGxvY2sgZmlsZSAoYHlhcm4ubG9ja2AsIGBwbnBtLWxvY2sueWFtbGAsIGBidW4ubG9ja2JgIG9yIGBwYWNrYWdlLWxvY2suanNvbmApLlxuICAgKlxuICAgKiBUaGlzIHdpbGwgYmUgdXNlZCBhcyB0aGUgc291cmNlIGZvciB0aGUgdm9sdW1lIG1vdW50ZWQgaW4gdGhlIERvY2tlclxuICAgKiBjb250YWluZXIuXG4gICAqXG4gICAqIE1vZHVsZXMgc3BlY2lmaWVkIGluIGBub2RlTW9kdWxlc2Agd2lsbCBiZSBpbnN0YWxsZWQgdXNpbmcgdGhlIHJpZ2h0XG4gICAqIGluc3RhbGxlciAoYHlhcm5gLCBgcG5wbWAsIGBidW5gIG9yIGBucG1gKSBhbG9uZyB3aXRoIHRoaXMgbG9jayBmaWxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBwYXRoIGlzIGZvdW5kIGJ5IHdhbGtpbmcgdXAgcGFyZW50IGRpcmVjdG9yaWVzIHNlYXJjaGluZyBmb3JcbiAgICogICBhIGB5YXJuLmxvY2tgLCBgcG5wbS1sb2NrLnlhbWxgLCBgYnVuLmxvY2tiYCBvciBgcGFja2FnZS1sb2NrLmpzb25gIGZpbGVcbiAgICovXG4gIHJlYWRvbmx5IGRlcHNMb2NrRmlsZVBhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJ1bmRsaW5nIG9wdGlvbnNcbiAgICpcbiAgICogQGRlZmF1bHQgLSB1c2UgZGVmYXVsdCBidW5kbGluZyBvcHRpb25zOiBubyBtaW5pZnksIG5vIHNvdXJjZW1hcCwgYWxsXG4gICAqICAgbW9kdWxlcyBhcmUgYnVuZGxlZC5cbiAgICovXG4gIHJlYWRvbmx5IGJ1bmRsaW5nPzogQnVuZGxpbmdPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgcHJvamVjdCBjb25maWcgZmlsZXMgKGBwYWNrYWdlLmpzb25gIG9yIGB0c2NvbmZpZy5qc29uYClcbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGBkZXBzTG9ja0ZpbGVQYXRoYFxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVjdFJvb3Q/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjb2RlIHRoYXQgd2lsbCBiZSBkZXBsb3llZCB0byB0aGUgTGFtYmRhIEhhbmRsZXIuIElmIGluY2x1ZGVkLCB0aGVuIHByb3BlcnRpZXMgcmVsYXRlZCB0b1xuICAgKiBidW5kbGluZyBvZiB0aGUgY29kZSBhcmUgaWdub3JlZC5cbiAgICpcbiAgICogKiBJZiB0aGUgYGNvZGVgIGZpZWxkIGlzIHNwZWNpZmllZCwgdGhlbiB5b3UgbXVzdCBpbmNsdWRlIHRoZSBgaGFuZGxlcmAgcHJvcGVydHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIGNvZGUgaXMgYnVuZGxlZCBieSBlc2J1aWxkXG4gICAqL1xuICByZWFkb25seSBjb2RlPzogQ29kZTtcbn1cblxuLyoqXG4gKiBBIE5vZGUuanMgTGFtYmRhIGZ1bmN0aW9uIGJ1bmRsZWQgdXNpbmcgZXNidWlsZFxuICovXG5leHBvcnQgY2xhc3MgTm9kZWpzRnVuY3Rpb24gZXh0ZW5kcyBMYW1iZGFGdW5jdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBOb2RlanNGdW5jdGlvblByb3BzID0ge30pIHtcbiAgICBpZiAocHJvcHMucnVudGltZSAmJiBwcm9wcy5ydW50aW1lLmZhbWlseSAhPT0gUnVudGltZUZhbWlseS5OT0RFSlMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk9ubHkgYE5PREVKU2AgcnVudGltZXMgYXJlIHN1cHBvcnRlZC5cIik7XG4gICAgfVxuXG4gICAgY29uc3QgcnVudGltZSA9IGdldFJ1bnRpbWUocHJvcHMpO1xuXG4gICAgaWYgKHByb3BzLmNvZGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHByb3BzLmhhbmRsZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgXCJDYW5ub3QgZGV0ZXJtaW5lIGhhbmRsZXIgd2hlbiBgY29kZWAgcHJvcGVydHkgaXMgc3BlY2lmaWVkLiBVc2UgYGhhbmRsZXJgIHByb3BlcnR5IHRvIHNwZWNpZnkgYSBoYW5kbGVyLlxcblwiICtcbiAgICAgICAgICAgIFwiVGhlIGhhbmRsZXIgc2hvdWxkIGJlIHRoZSBuYW1lIG9mIHRoZSBleHBvcnRlZCBmdW5jdGlvbiB0byBiZSBpbnZva2VkIGFuZCB0aGUgZmlsZSBjb250YWluaW5nIHRoYXQgZnVuY3Rpb24uXFxuXCIgK1xuICAgICAgICAgICAgXCJGb3IgZXhhbXBsZSwgaGFuZGxlciBzaG91bGQgYmUgc3BlY2lmaWVkIGluIHRoZSBmb3JtIGBteUZpbGUubXlGdW5jdGlvbmBcIixcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAgIC4uLnByb3BzLFxuICAgICAgICBydW50aW1lLFxuICAgICAgICBjb2RlOiBwcm9wcy5jb2RlLFxuICAgICAgICBoYW5kbGVyOiBwcm9wcy5oYW5kbGVyLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEVudHJ5IGFuZCBkZWZhdWx0c1xuICAgICAgY29uc3QgZW50cnkgPSBwYXRoLnJlc29sdmUoZmluZEVudHJ5KGlkLCBwcm9wcy5lbnRyeSkpO1xuICAgICAgY29uc3QgYXJjaGl0ZWN0dXJlID0gcHJvcHMuYXJjaGl0ZWN0dXJlID8/IEFyY2hpdGVjdHVyZS5YODZfNjQ7XG4gICAgICBjb25zdCBkZXBzTG9ja0ZpbGVQYXRoID0gZmluZExvY2tGaWxlKHByb3BzLmRlcHNMb2NrRmlsZVBhdGgpO1xuICAgICAgY29uc3QgcHJvamVjdFJvb3QgPSBwcm9wcy5wcm9qZWN0Um9vdCA/PyBwYXRoLmRpcm5hbWUoZGVwc0xvY2tGaWxlUGF0aCk7XG4gICAgICBjb25zdCBoYW5kbGVyID0gcHJvcHMuaGFuZGxlciA/PyBcImhhbmRsZXJcIjtcblxuICAgICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAgIC4uLnByb3BzLFxuICAgICAgICBydW50aW1lLFxuICAgICAgICBjb2RlOiBCdW5kbGluZy5idW5kbGUoc2NvcGUsIHtcbiAgICAgICAgICAuLi4ocHJvcHMuYnVuZGxpbmcgPz8ge30pLFxuICAgICAgICAgIGVudHJ5LFxuICAgICAgICAgIHJ1bnRpbWUsXG4gICAgICAgICAgYXJjaGl0ZWN0dXJlLFxuICAgICAgICAgIGRlcHNMb2NrRmlsZVBhdGgsXG4gICAgICAgICAgcHJvamVjdFJvb3QsXG4gICAgICAgIH0pLFxuICAgICAgICBoYW5kbGVyOlxuICAgICAgICAgIGhhbmRsZXIuaW5kZXhPZihcIi5cIikgIT09IC0xID8gYCR7aGFuZGxlcn1gIDogYGluZGV4LiR7aGFuZGxlcn1gLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gRW5hYmxlIGNvbm5lY3Rpb24gcmV1c2UgZm9yIGF3cy1zZGsgdjIsIGRvIG5vdCBzZXQgZm9yIHNkayB2M1xuICAgIGlmIChpc1Nka1YyUnVudGltZShydW50aW1lKSkge1xuICAgICAgaWYgKHByb3BzLmF3c1Nka0Nvbm5lY3Rpb25SZXVzZSA/PyB0cnVlKSB7XG4gICAgICAgIHRoaXMuYWRkRW52aXJvbm1lbnQoXCJBV1NfTk9ERUpTX0NPTk5FQ1RJT05fUkVVU0VfRU5BQkxFRFwiLCBcIjFcIik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwcm9wcy5hd3NTZGtDb25uZWN0aW9uUmV1c2UpIHtcbiAgICAgICAgLy8gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqczp1bnVzZWRTZGtFdmlyb25tZW50VmFyaWFibGVcIixcbiAgICAgICAgQW5ub3RhdGlvbnMub2Yoc2NvcGUpLmFkZFdhcm5pbmcoXG4gICAgICAgICAgXCJUaGUgQVdTX05PREVKU19DT05ORUNUSU9OX1JFVVNFX0VOQUJMRUQgZW52aXJvbm1lbnQgdmFyaWFibGUgZG9lcyBub3QgZXhpc3QgaW4gU0RLIHYzLiBZb3UgaGF2ZSBleHBsaWNpdGx5IHNldCBgYXdzU2RrQ29ubmVjdGlvblJldXNlYDsgcGxlYXNlIG1ha2Ugc3VyZSB0aGlzIGlzIGludGVudGlvbmFsLlwiLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmFkZEVudmlyb25tZW50KFwiQVdTX05PREVKU19DT05ORUNUSU9OX1JFVVNFX0VOQUJMRURcIiwgXCIxXCIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIGRlZmF1bHQgdG8gTk9ERUpTX0xBVEVTVC5cbiAqL1xuZnVuY3Rpb24gZ2V0UnVudGltZShwcm9wczogTm9kZWpzRnVuY3Rpb25Qcm9wcyk6IFJ1bnRpbWUge1xuICByZXR1cm4gcHJvcHMucnVudGltZSA/PyBSdW50aW1lLk5PREVKU19MQVRFU1Q7XG59XG5cbi8qKlxuICogQ2hlY2tzIGdpdmVuIGxvY2sgZmlsZSBvciBzZWFyY2hlcyBmb3IgYSBsb2NrIGZpbGVcbiAqL1xuZnVuY3Rpb24gZmluZExvY2tGaWxlKGRlcHNMb2NrRmlsZVBhdGg/OiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoZGVwc0xvY2tGaWxlUGF0aCkge1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhkZXBzTG9ja0ZpbGVQYXRoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBMb2NrIGZpbGUgYXQgJHtkZXBzTG9ja0ZpbGVQYXRofSBkb2Vzbid0IGV4aXN0YCk7XG4gICAgfVxuXG4gICAgaWYgKCFmcy5zdGF0U3luYyhkZXBzTG9ja0ZpbGVQYXRoKS5pc0ZpbGUoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiYGRlcHNMb2NrRmlsZVBhdGhgIHNob3VsZCBwb2ludCB0byBhIGZpbGVcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhdGgucmVzb2x2ZShkZXBzTG9ja0ZpbGVQYXRoKTtcbiAgfVxuXG4gIGNvbnN0IGxvY2tGaWxlcyA9IGZpbmRVcE11bHRpcGxlKFtcbiAgICBMb2NrRmlsZS5QTlBNLFxuICAgIExvY2tGaWxlLllBUk4sXG4gICAgTG9ja0ZpbGUuQlVOLFxuICAgIExvY2tGaWxlLk5QTSxcbiAgXSk7XG5cbiAgaWYgKGxvY2tGaWxlcy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBcIkNhbm5vdCBmaW5kIGEgcGFja2FnZSBsb2NrIGZpbGUgKGBwbnBtLWxvY2sueWFtbGAsIGB5YXJuLmxvY2tgLCBgYnVuLmxvY2tiYCBvciBgcGFja2FnZS1sb2NrLmpzb25gKS4gUGxlYXNlIHNwZWNpZnkgaXQgd2l0aCBgZGVwc0xvY2tGaWxlUGF0aGAuXCIsXG4gICAgKTtcbiAgfVxuICBpZiAobG9ja0ZpbGVzLmxlbmd0aCA+IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgTXVsdGlwbGUgcGFja2FnZSBsb2NrIGZpbGVzIGZvdW5kOiAke2xvY2tGaWxlcy5qb2luKFwiLCBcIil9LiBQbGVhc2Ugc3BlY2lmeSB0aGUgZGVzaXJlZCBvbmUgd2l0aCBcXGBkZXBzTG9ja0ZpbGVQYXRoXFxgLmAsXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBsb2NrRmlsZXNbMF07XG59XG5cbi8qKlxuICogU2VhcmNoZXMgZm9yIGFuIGVudHJ5IGZpbGUuIFByZWZlcmVuY2Ugb3JkZXIgaXMgdGhlIGZvbGxvd2luZzpcbiAqIDEuIEdpdmVuIGVudHJ5IGZpbGVcbiAqIDIuIEEgLnRzIGZpbGUgbmFtZWQgYXMgdGhlIGRlZmluaW5nIGZpbGUgd2l0aCBpZCBhcyBzdWZmaXggKGRlZmluaW5nLWZpbGUuaWQudHMpXG4gKiAzLiBBIC5qcyBmaWxlIG5hbWUgYXMgdGhlIGRlZmluaW5nIGZpbGUgd2l0aCBpZCBhcyBzdWZmaXggKGRlZmluaW5nLWZpbGUuaWQuanMpXG4gKiA0LiBBIC5tanMgZmlsZSBuYW1lIGFzIHRoZSBkZWZpbmluZyBmaWxlIHdpdGggaWQgYXMgc3VmZml4IChkZWZpbmluZy1maWxlLmlkLm1qcylcbiAqIDUuIEEgLm10cyBmaWxlIG5hbWUgYXMgdGhlIGRlZmluaW5nIGZpbGUgd2l0aCBpZCBhcyBzdWZmaXggKGRlZmluaW5nLWZpbGUuaWQubXRzKVxuICogNi4gQSAuY3RzIGZpbGUgbmFtZSBhcyB0aGUgZGVmaW5pbmcgZmlsZSB3aXRoIGlkIGFzIHN1ZmZpeCAoZGVmaW5pbmctZmlsZS5pZC5jdHMpXG4gKiA3LiBBIC5janMgZmlsZSBuYW1lIGFzIHRoZSBkZWZpbmluZyBmaWxlIHdpdGggaWQgYXMgc3VmZml4IChkZWZpbmluZy1maWxlLmlkLmNqcylcbiAqL1xuZnVuY3Rpb24gZmluZEVudHJ5KGlkOiBzdHJpbmcsIGVudHJ5Pzogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKGVudHJ5KSB7XG4gICAgaWYgKCEvXFwuKGpzeD98dHN4P3xjanN8Y3RzfG1qc3xtdHMpJC8udGVzdChlbnRyeSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJPbmx5IEphdmFTY3JpcHQgb3IgVHlwZVNjcmlwdCBlbnRyeSBmaWxlcyBhcmUgc3VwcG9ydGVkLlwiLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKGVudHJ5KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBlbnRyeSBmaWxlIGF0ICR7ZW50cnl9YCk7XG4gICAgfVxuICAgIHJldHVybiBlbnRyeTtcbiAgfVxuXG4gIGNvbnN0IGRlZmluaW5nRmlsZSA9IGZpbmREZWZpbmluZ0ZpbGUoKTtcbiAgY29uc3QgZXh0bmFtZSA9IHBhdGguZXh0bmFtZShkZWZpbmluZ0ZpbGUpO1xuXG4gIGNvbnN0IHRzSGFuZGxlckZpbGUgPSBkZWZpbmluZ0ZpbGUucmVwbGFjZShcbiAgICBuZXcgUmVnRXhwKGAke2V4dG5hbWV9JGApLFxuICAgIGAuJHtpZH0udHNgLFxuICApO1xuICBpZiAoZnMuZXhpc3RzU3luYyh0c0hhbmRsZXJGaWxlKSkge1xuICAgIHJldHVybiB0c0hhbmRsZXJGaWxlO1xuICB9XG5cbiAgY29uc3QganNIYW5kbGVyRmlsZSA9IGRlZmluaW5nRmlsZS5yZXBsYWNlKFxuICAgIG5ldyBSZWdFeHAoYCR7ZXh0bmFtZX0kYCksXG4gICAgYC4ke2lkfS5qc2AsXG4gICk7XG4gIGlmIChmcy5leGlzdHNTeW5jKGpzSGFuZGxlckZpbGUpKSB7XG4gICAgcmV0dXJuIGpzSGFuZGxlckZpbGU7XG4gIH1cblxuICBjb25zdCBtanNIYW5kbGVyRmlsZSA9IGRlZmluaW5nRmlsZS5yZXBsYWNlKFxuICAgIG5ldyBSZWdFeHAoYCR7ZXh0bmFtZX0kYCksXG4gICAgYC4ke2lkfS5tanNgLFxuICApO1xuICBpZiAoZnMuZXhpc3RzU3luYyhtanNIYW5kbGVyRmlsZSkpIHtcbiAgICByZXR1cm4gbWpzSGFuZGxlckZpbGU7XG4gIH1cblxuICBjb25zdCBtdHNIYW5kbGVyRmlsZSA9IGRlZmluaW5nRmlsZS5yZXBsYWNlKFxuICAgIG5ldyBSZWdFeHAoYCR7ZXh0bmFtZX0kYCksXG4gICAgYC4ke2lkfS5tdHNgLFxuICApO1xuICBpZiAoZnMuZXhpc3RzU3luYyhtdHNIYW5kbGVyRmlsZSkpIHtcbiAgICByZXR1cm4gbXRzSGFuZGxlckZpbGU7XG4gIH1cblxuICBjb25zdCBjdHNIYW5kbGVyRmlsZSA9IGRlZmluaW5nRmlsZS5yZXBsYWNlKFxuICAgIG5ldyBSZWdFeHAoYCR7ZXh0bmFtZX0kYCksXG4gICAgYC4ke2lkfS5jdHNgLFxuICApO1xuICBpZiAoZnMuZXhpc3RzU3luYyhjdHNIYW5kbGVyRmlsZSkpIHtcbiAgICByZXR1cm4gY3RzSGFuZGxlckZpbGU7XG4gIH1cblxuICBjb25zdCBjanNIYW5kbGVyRmlsZSA9IGRlZmluaW5nRmlsZS5yZXBsYWNlKFxuICAgIG5ldyBSZWdFeHAoYCR7ZXh0bmFtZX0kYCksXG4gICAgYC4ke2lkfS5janNgLFxuICApO1xuICBpZiAoZnMuZXhpc3RzU3luYyhjanNIYW5kbGVyRmlsZSkpIHtcbiAgICByZXR1cm4gY2pzSGFuZGxlckZpbGU7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgYENhbm5vdCBmaW5kIGhhbmRsZXIgZmlsZSAke3RzSGFuZGxlckZpbGV9LCAke2pzSGFuZGxlckZpbGV9LCAke21qc0hhbmRsZXJGaWxlfSwgJHttdHNIYW5kbGVyRmlsZX0sICR7Y3RzSGFuZGxlckZpbGV9IG9yICR7Y2pzSGFuZGxlckZpbGV9YCxcbiAgKTtcbn1cblxuLyoqXG4gKiBGaW5kcyB0aGUgbmFtZSBvZiB0aGUgZmlsZSB3aGVyZSB0aGUgYE5vZGVqc0Z1bmN0aW9uYCBpcyBkZWZpbmVkXG4gKi9cbmZ1bmN0aW9uIGZpbmREZWZpbmluZ0ZpbGUoKTogc3RyaW5nIHtcbiAgbGV0IGRlZmluaW5nSW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgY29uc3Qgc2l0ZXMgPSBjYWxsc2l0ZXMoKTtcbiAgZm9yIChjb25zdCBbaW5kZXgsIHNpdGVdIG9mIHNpdGVzLmVudHJpZXMoKSkge1xuICAgIGlmIChzaXRlLmdldEZ1bmN0aW9uTmFtZSgpID09PSBcIk5vZGVqc0Z1bmN0aW9uXCIpIHtcbiAgICAgIC8vIFRoZSBuZXh0IHNpdGUgaXMgdGhlIHNpdGUgd2hlcmUgdGhlIE5vZGVqc0Z1bmN0aW9uIHdhcyBjcmVhdGVkXG4gICAgICBkZWZpbmluZ0luZGV4ID0gaW5kZXggKyAxO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFkZWZpbmluZ0luZGV4IHx8ICFzaXRlc1tkZWZpbmluZ0luZGV4XSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIGRlZmluaW5nIGZpbGUuXCIpO1xuICB9XG5cbiAgcmV0dXJuIHNpdGVzW2RlZmluaW5nSW5kZXhdLmdldEZpbGVOYW1lKCk7XG59XG4iXX0=
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXdzL2NvbXB1dGUvZnVuY3Rpb24tbm9kZWpzL2Z1bmN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3QixpQ0FBb0M7QUFFcEMseUNBQXNDO0FBQ3RDLHVEQUE2QztBQUU3QyxpQ0FBbUU7QUFDbkUsa0RBQStDO0FBRS9DLDBDQUE4RDtBQUM5RCx3Q0FBb0Q7QUFrR3BEOztHQUVHO0FBQ0gsTUFBYSxjQUFlLFNBQVEseUJBQWM7SUFDaEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUE2QixFQUFFO1FBQ3ZFLElBQUksS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyx1QkFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25FLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQztRQUMzRCxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWxDLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM3QixJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQ2IsNEdBQTRHO29CQUMxRyxnSEFBZ0g7b0JBQ2hILDBFQUEwRSxDQUM3RSxDQUFDO1lBQ0osQ0FBQztZQUVELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO2dCQUNmLEdBQUcsS0FBSztnQkFDUixPQUFPO2dCQUNQLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtnQkFDaEIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO2FBQ3ZCLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04scUJBQXFCO1lBQ3JCLE1BQU0sS0FBSyxHQUFH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NEIsYUFBYSxLQUFLLGFBQWEsS0FBSyxjQUFjLEtBQUssY0FBYyxLQUFLLGNBQWMsT0FBTyxjQUFjLEVBQUUsQ0FDNUksQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsZ0JBQWdCO0lBQ3ZCLElBQUksYUFBaUMsQ0FBQztJQUN0QyxNQUFNLEtBQUssR0FBRyxJQUFBLGdCQUFTLEdBQUUsQ0FBQztJQUMxQixLQUFLLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7UUFDNUMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQztZQUNoRCxpRUFBaUU7WUFDakUsYUFBYSxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDMUIsTUFBTTtRQUNSLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQzVDLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDNUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgQW5ub3RhdGlvbnMgfSBmcm9tIFwiY2RrdG5cIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBCdW5kbGluZyB9IGZyb20gXCIuL2J1bmRsaW5nXCI7XG5pbXBvcnQgeyBMb2NrRmlsZSB9IGZyb20gXCIuL3BhY2thZ2UtbWFuYWdlclwiO1xuaW1wb3J0IHsgQnVuZGxpbmdPcHRpb25zIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IGNhbGxzaXRlcywgZmluZFVwTXVsdGlwbGUsIGlzU2RrVjJSdW50aW1lIH0gZnJvbSBcIi4vdXRpbFwiO1xuaW1wb3J0IHsgQXJjaGl0ZWN0dXJlIH0gZnJvbSBcIi4uL2FyY2hpdGVjdHVyZVwiO1xuaW1wb3J0IHsgQ29kZSB9IGZyb20gXCIuLi9jb2RlXCI7XG5pbXBvcnQgeyBGdW5jdGlvbk9wdGlvbnMsIExhbWJkYUZ1bmN0aW9uIH0gZnJvbSBcIi4uL2Z1bmN0aW9uXCI7XG5pbXBvcnQgeyBSdW50aW1lLCBSdW50aW1lRmFtaWx5IH0gZnJvbSBcIi4uL3J1bnRpbWVcIjtcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhIE5vZGVqc0Z1bmN0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm9kZWpzRnVuY3Rpb25Qcm9wcyBleHRlbmRzIEZ1bmN0aW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBQYXRoIHRvIHRoZSBlbnRyeSBmaWxlIChKYXZhU2NyaXB0IG9yIFR5cGVTY3JpcHQpLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlcml2ZWQgZnJvbSB0aGUgbmFtZSBvZiB0aGUgZGVmaW5pbmcgZmlsZSBhbmQgdGhlIGNvbnN0cnVjdCdzIGlkLlxuICAgKiBJZiB0aGUgYE5vZGVqc0Z1bmN0aW9uYCBpcyBkZWZpbmVkIGluIGBzdGFjay50c2Agd2l0aCBgbXktaGFuZGxlcmAgYXMgaWRcbiAgICogKGBuZXcgTm9kZWpzRnVuY3Rpb24odGhpcywgJ215LWhhbmRsZXInKWApLCB0aGUgY29uc3RydWN0IHdpbGwgbG9vayBhdCBgc3RhY2subXktaGFuZGxlci50c2BcbiAgICogYW5kIGBzdGFjay5teS1oYW5kbGVyLmpzYC5cbiAgICovXG4gIHJlYWRvbmx5IGVudHJ5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZXhwb3J0ZWQgaGFuZGxlciBpbiB0aGUgZW50cnkgZmlsZS5cbiAgICpcbiAgICogKiBJZiB0aGUgYGNvZGVgIHByb3BlcnR5IGlzIHN1cHBsaWVkLCB0aGVuIHlvdSBtdXN0IGluY2x1ZGUgdGhlIGBoYW5kbGVyYCBwcm9wZXJ0eS4gVGhlIGhhbmRsZXIgc2hvdWxkIGJlIHRoZSBuYW1lIG9mIHRoZSBmaWxlXG4gICAqIHRoYXQgY29udGFpbnMgdGhlIGV4cG9ydGVkIGhhbmRsZXIgYW5kIHRoZSBmdW5jdGlvbiB0aGF0IHNob3VsZCBiZSBjYWxsZWQgd2hlbiB0aGUgQVdTIExhbWJkYSBpcyBpbnZva2VkLiBGb3IgZXhhbXBsZSwgaWZcbiAgICogeW91IGhhZCBhIGZpbGUgY2FsbGVkIGBteUxhbWJkYS5qc2AgYW5kIHRoZSBmdW5jdGlvbiB0byBiZSBpbnZva2VkIHdhcyBgbXlIYW5kbGVyYCwgdGhlbiB5b3Ugc2hvdWxkIGlucHV0IGBoYW5kbGVyYCBwcm9wZXJ0eSBhcyBgbXlMYW1iZGEubXlIYW5kbGVyYC5cbiAgICpcbiAgICogKiBJZiB0aGUgYGNvZGVgIHByb3BlcnR5IGlzIG5vdCBzdXBwbGllZCBhbmQgdGhlIGhhbmRsZXIgaW5wdXQgZG9lcyBub3QgY29udGFpbiBhIGAuYCwgdGhlbiB0aGUgaGFuZGxlciBpcyBwcmVmaXhlZCB3aXRoIGBpbmRleC5gIChpbmRleCBwZXJpb2QpLiBPdGhlcndpc2UsXG4gICAqIHRoZSBoYW5kbGVyIHByb3BlcnR5IGlzIG5vdCBtb2RpZmllZC5cbiAgICpcbiAgICogQGRlZmF1bHQgaGFuZGxlclxuICAgKi9cbiAgcmVhZG9ubHkgaGFuZGxlcj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJ1bnRpbWUgZW52aXJvbm1lbnQuIE9ubHkgcnVudGltZXMgb2YgdGhlIE5vZGUuanMgZmFtaWx5IGFyZVxuICAgKiBzdXBwb3J0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBSdW50aW1lLk5PREVKU19MQVRFU1RgXG4gICAqL1xuICByZWFkb25seSBydW50aW1lPzogUnVudGltZTtcblxuICAvKipcbiAgICogVGhlIGBBV1NfTk9ERUpTX0NPTk5FQ1RJT05fUkVVU0VfRU5BQkxFRGAgZW52aXJvbm1lbnQgdmFyaWFibGUgZG9lcyBub3QgZXhpc3QgaW4gdGhlIEFXUyBTREsgZm9yIEphdmFTY3JpcHQgdjMuXG4gICAqXG4gICAqIFRoaXMgcHJvcCB3aWxsIGJlIGRlcHJlY2F0ZWQgd2hlbiB0aGUgTGFtYmRhIE5vZGUxNiBydW50aW1lIGlzIGRlcHJlY2F0ZWQgb24gSnVuZSAxMiwgMjAyNC5cbiAgICogU2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sYW1iZGEvbGF0ZXN0L2RnL2xhbWJkYS1ydW50aW1lcy5odG1sI3J1bnRpbWUtc3VwcG9ydC1wb2xpY3lcbiAgICpcbiAgICogSW5mbyBmb3IgTm9kZSAxNiBydW50aW1lcyAvIFNESyB2MiB1c2VyczpcbiAgICpcbiAgICogV2hldGhlciB0byBhdXRvbWF0aWNhbGx5IHJldXNlIFRDUCBjb25uZWN0aW9ucyB3aGVuIHdvcmtpbmcgd2l0aCB0aGUgQVdTXG4gICAqIFNESyBmb3IgSmF2YVNjcmlwdCB2Mi5cbiAgICpcbiAgICogVGhpcyBzZXRzIHRoZSBgQVdTX05PREVKU19DT05ORUNUSU9OX1JFVVNFX0VOQUJMRURgIGVudmlyb25tZW50IHZhcmlhYmxlXG4gICAqIHRvIGAxYC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc2RrLWZvci1qYXZhc2NyaXB0L3YzL2RldmVsb3Blci1ndWlkZS9ub2RlLXJldXNpbmctY29ubmVjdGlvbnMuaHRtbFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGZhbHNlIChvYnNvbGV0ZSkgZm9yIHJ1bnRpbWVzID49IE5vZGUgMTgsIHRydWUgZm9yIHJ1bnRpbWVzIDw9IE5vZGUgMTYuXG4gICAqL1xuICByZWFkb25seSBhd3NTZGtDb25uZWN0aW9uUmV1c2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0byB0aGUgZGVwZW5kZW5jaWVzIGxvY2sgZmlsZSAoYHlhcm4ubG9ja2AsIGBwbnBtLWxvY2sueWFtbGAsIGBidW4ubG9ja2JgIG9yIGBwYWNrYWdlLWxvY2suanNvbmApLlxuICAgKlxuICAgKiBUaGlzIHdpbGwgYmUgdXNlZCBhcyB0aGUgc291cmNlIGZvciB0aGUgdm9sdW1lIG1vdW50ZWQgaW4gdGhlIERvY2tlclxuICAgKiBjb250YWluZXIuXG4gICAqXG4gICAqIE1vZHVsZXMgc3BlY2lmaWVkIGluIGBub2RlTW9kdWxlc2Agd2lsbCBiZSBpbnN0YWxsZWQgdXNpbmcgdGhlIHJpZ2h0XG4gICAqIGluc3RhbGxlciAoYHlhcm5gLCBgcG5wbWAsIGBidW5gIG9yIGBucG1gKSBhbG9uZyB3aXRoIHRoaXMgbG9jayBmaWxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBwYXRoIGlzIGZvdW5kIGJ5IHdhbGtpbmcgdXAgcGFyZW50IGRpcmVjdG9yaWVzIHNlYXJjaGluZyBmb3JcbiAgICogICBhIGB5YXJuLmxvY2tgLCBgcG5wbS1sb2NrLnlhbWxgLCBgYnVuLmxvY2tiYCBvciBgcGFja2FnZS1sb2NrLmpzb25gIGZpbGVcbiAgICovXG4gIHJlYWRvbmx5IGRlcHNMb2NrRmlsZVBhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJ1bmRsaW5nIG9wdGlvbnNcbiAgICpcbiAgICogQGRlZmF1bHQgLSB1c2UgZGVmYXVsdCBidW5kbGluZyBvcHRpb25zOiBubyBtaW5pZnksIG5vIHNvdXJjZW1hcCwgYWxsXG4gICAqICAgbW9kdWxlcyBhcmUgYnVuZGxlZC5cbiAgICovXG4gIHJlYWRvbmx5IGJ1bmRsaW5nPzogQnVuZGxpbmdPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgcHJvamVjdCBjb25maWcgZmlsZXMgKGBwYWNrYWdlLmpzb25gIG9yIGB0c2NvbmZpZy5qc29uYClcbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGBkZXBzTG9ja0ZpbGVQYXRoYFxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVjdFJvb3Q/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjb2RlIHRoYXQgd2lsbCBiZSBkZXBsb3llZCB0byB0aGUgTGFtYmRhIEhhbmRsZXIuIElmIGluY2x1ZGVkLCB0aGVuIHByb3BlcnRpZXMgcmVsYXRlZCB0b1xuICAgKiBidW5kbGluZyBvZiB0aGUgY29kZSBhcmUgaWdub3JlZC5cbiAgICpcbiAgICogKiBJZiB0aGUgYGNvZGVgIGZpZWxkIGlzIHNwZWNpZmllZCwgdGhlbiB5b3UgbXVzdCBpbmNsdWRlIHRoZSBgaGFuZGxlcmAgcHJvcGVydHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIGNvZGUgaXMgYnVuZGxlZCBieSBlc2J1aWxkXG4gICAqL1xuICByZWFkb25seSBjb2RlPzogQ29kZTtcbn1cblxuLyoqXG4gKiBBIE5vZGUuanMgTGFtYmRhIGZ1bmN0aW9uIGJ1bmRsZWQgdXNpbmcgZXNidWlsZFxuICovXG5leHBvcnQgY2xhc3MgTm9kZWpzRnVuY3Rpb24gZXh0ZW5kcyBMYW1iZGFGdW5jdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBOb2RlanNGdW5jdGlvblByb3BzID0ge30pIHtcbiAgICBpZiAocHJvcHMucnVudGltZSAmJiBwcm9wcy5ydW50aW1lLmZhbWlseSAhPT0gUnVudGltZUZhbWlseS5OT0RFSlMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk9ubHkgYE5PREVKU2AgcnVudGltZXMgYXJlIHN1cHBvcnRlZC5cIik7XG4gICAgfVxuXG4gICAgY29uc3QgcnVudGltZSA9IGdldFJ1bnRpbWUocHJvcHMpO1xuXG4gICAgaWYgKHByb3BzLmNvZGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHByb3BzLmhhbmRsZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgXCJDYW5ub3QgZGV0ZXJtaW5lIGhhbmRsZXIgd2hlbiBgY29kZWAgcHJvcGVydHkgaXMgc3BlY2lmaWVkLiBVc2UgYGhhbmRsZXJgIHByb3BlcnR5IHRvIHNwZWNpZnkgYSBoYW5kbGVyLlxcblwiICtcbiAgICAgICAgICAgIFwiVGhlIGhhbmRsZXIgc2hvdWxkIGJlIHRoZSBuYW1lIG9mIHRoZSBleHBvcnRlZCBmdW5jdGlvbiB0byBiZSBpbnZva2VkIGFuZCB0aGUgZmlsZSBjb250YWluaW5nIHRoYXQgZnVuY3Rpb24uXFxuXCIgK1xuICAgICAgICAgICAgXCJGb3IgZXhhbXBsZSwgaGFuZGxlciBzaG91bGQgYmUgc3BlY2lmaWVkIGluIHRoZSBmb3JtIGBteUZpbGUubXlGdW5jdGlvbmBcIixcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAgIC4uLnByb3BzLFxuICAgICAgICBydW50aW1lLFxuICAgICAgICBjb2RlOiBwcm9wcy5jb2RlLFxuICAgICAgICBoYW5kbGVyOiBwcm9wcy5oYW5kbGVyLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEVudHJ5IGFuZCBkZWZhdWx0c1xuICAgICAgY29uc3QgZW50cnkgPSBwYXRoLnJlc29sdmUoZmluZEVudHJ5KGlkLCBwcm9wcy5lbnRyeSkpO1xuICAgICAgY29uc3QgYXJjaGl0ZWN0dXJlID0gcHJvcHMuYXJjaGl0ZWN0dXJlID8/IEFyY2hpdGVjdHVyZS5YODZfNjQ7XG4gICAgICBjb25zdCBkZXBzTG9ja0ZpbGVQYXRoID0gZmluZExvY2tGaWxlKHByb3BzLmRlcHNMb2NrRmlsZVBhdGgpO1xuICAgICAgY29uc3QgcHJvamVjdFJvb3QgPSBwcm9wcy5wcm9qZWN0Um9vdCA/PyBwYXRoLmRpcm5hbWUoZGVwc0xvY2tGaWxlUGF0aCk7XG4gICAgICBjb25zdCBoYW5kbGVyID0gcHJvcHMuaGFuZGxlciA/PyBcImhhbmRsZXJcIjtcblxuICAgICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAgIC4uLnByb3BzLFxuICAgICAgICBydW50aW1lLFxuICAgICAgICBjb2RlOiBCdW5kbGluZy5idW5kbGUoc2NvcGUsIHtcbiAgICAgICAgICAuLi4ocHJvcHMuYnVuZGxpbmcgPz8ge30pLFxuICAgICAgICAgIGVudHJ5LFxuICAgICAgICAgIHJ1bnRpbWUsXG4gICAgICAgICAgYXJjaGl0ZWN0dXJlLFxuICAgICAgICAgIGRlcHNMb2NrRmlsZVBhdGgsXG4gICAgICAgICAgcHJvamVjdFJvb3QsXG4gICAgICAgIH0pLFxuICAgICAgICBoYW5kbGVyOlxuICAgICAgICAgIGhhbmRsZXIuaW5kZXhPZihcIi5cIikgIT09IC0xID8gYCR7aGFuZGxlcn1gIDogYGluZGV4LiR7aGFuZGxlcn1gLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gRW5hYmxlIGNvbm5lY3Rpb24gcmV1c2UgZm9yIGF3cy1zZGsgdjIsIGRvIG5vdCBzZXQgZm9yIHNkayB2M1xuICAgIGlmIChpc1Nka1YyUnVudGltZShydW50aW1lKSkge1xuICAgICAgaWYgKHByb3BzLmF3c1Nka0Nvbm5lY3Rpb25SZXVzZSA/PyB0cnVlKSB7XG4gICAgICAgIHRoaXMuYWRkRW52aXJvbm1lbnQoXCJBV1NfTk9ERUpTX0NPTk5FQ1RJT05fUkVVU0VfRU5BQkxFRFwiLCBcIjFcIik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwcm9wcy5hd3NTZGtDb25uZWN0aW9uUmV1c2UpIHtcbiAgICAgICAgLy8gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqczp1bnVzZWRTZGtFdmlyb25tZW50VmFyaWFibGVcIixcbiAgICAgICAgQW5ub3RhdGlvbnMub2Yoc2NvcGUpLmFkZFdhcm5pbmcoXG4gICAgICAgICAgXCJUaGUgQVdTX05PREVKU19DT05ORUNUSU9OX1JFVVNFX0VOQUJMRUQgZW52aXJvbm1lbnQgdmFyaWFibGUgZG9lcyBub3QgZXhpc3QgaW4gU0RLIHYzLiBZb3UgaGF2ZSBleHBsaWNpdGx5IHNldCBgYXdzU2RrQ29ubmVjdGlvblJldXNlYDsgcGxlYXNlIG1ha2Ugc3VyZSB0aGlzIGlzIGludGVudGlvbmFsLlwiLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmFkZEVudmlyb25tZW50KFwiQVdTX05PREVKU19DT05ORUNUSU9OX1JFVVNFX0VOQUJMRURcIiwgXCIxXCIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIGRlZmF1bHQgdG8gTk9ERUpTX0xBVEVTVC5cbiAqL1xuZnVuY3Rpb24gZ2V0UnVudGltZShwcm9wczogTm9kZWpzRnVuY3Rpb25Qcm9wcyk6IFJ1bnRpbWUge1xuICByZXR1cm4gcHJvcHMucnVudGltZSA/PyBSdW50aW1lLk5PREVKU19MQVRFU1Q7XG59XG5cbi8qKlxuICogQ2hlY2tzIGdpdmVuIGxvY2sgZmlsZSBvciBzZWFyY2hlcyBmb3IgYSBsb2NrIGZpbGVcbiAqL1xuZnVuY3Rpb24gZmluZExvY2tGaWxlKGRlcHNMb2NrRmlsZVBhdGg/OiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoZGVwc0xvY2tGaWxlUGF0aCkge1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhkZXBzTG9ja0ZpbGVQYXRoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBMb2NrIGZpbGUgYXQgJHtkZXBzTG9ja0ZpbGVQYXRofSBkb2Vzbid0IGV4aXN0YCk7XG4gICAgfVxuXG4gICAgaWYgKCFmcy5zdGF0U3luYyhkZXBzTG9ja0ZpbGVQYXRoKS5pc0ZpbGUoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiYGRlcHNMb2NrRmlsZVBhdGhgIHNob3VsZCBwb2ludCB0byBhIGZpbGVcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhdGgucmVzb2x2ZShkZXBzTG9ja0ZpbGVQYXRoKTtcbiAgfVxuXG4gIGNvbnN0IGxvY2tGaWxlcyA9IGZpbmRVcE11bHRpcGxlKFtcbiAgICBMb2NrRmlsZS5QTlBNLFxuICAgIExvY2tGaWxlLllBUk4sXG4gICAgTG9ja0ZpbGUuQlVOLFxuICAgIExvY2tGaWxlLk5QTSxcbiAgXSk7XG5cbiAgaWYgKGxvY2tGaWxlcy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBcIkNhbm5vdCBmaW5kIGEgcGFja2FnZSBsb2NrIGZpbGUgKGBwbnBtLWxvY2sueWFtbGAsIGB5YXJuLmxvY2tgLCBgYnVuLmxvY2tiYCBvciBgcGFja2FnZS1sb2NrLmpzb25gKS4gUGxlYXNlIHNwZWNpZnkgaXQgd2l0aCBgZGVwc0xvY2tGaWxlUGF0aGAuXCIsXG4gICAgKTtcbiAgfVxuICBpZiAobG9ja0ZpbGVzLmxlbmd0aCA+IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgTXVsdGlwbGUgcGFja2FnZSBsb2NrIGZpbGVzIGZvdW5kOiAke2xvY2tGaWxlcy5qb2luKFwiLCBcIil9LiBQbGVhc2Ugc3BlY2lmeSB0aGUgZGVzaXJlZCBvbmUgd2l0aCBcXGBkZXBzTG9ja0ZpbGVQYXRoXFxgLmAsXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBsb2NrRmlsZXNbMF07XG59XG5cbi8qKlxuICogU2VhcmNoZXMgZm9yIGFuIGVudHJ5IGZpbGUuIFByZWZlcmVuY2Ugb3JkZXIgaXMgdGhlIGZvbGxvd2luZzpcbiAqIDEuIEdpdmVuIGVudHJ5IGZpbGVcbiAqIDIuIEEgLnRzIGZpbGUgbmFtZWQgYXMgdGhlIGRlZmluaW5nIGZpbGUgd2l0aCBpZCBhcyBzdWZmaXggKGRlZmluaW5nLWZpbGUuaWQudHMpXG4gKiAzLiBBIC5qcyBmaWxlIG5hbWUgYXMgdGhlIGRlZmluaW5nIGZpbGUgd2l0aCBpZCBhcyBzdWZmaXggKGRlZmluaW5nLWZpbGUuaWQuanMpXG4gKiA0LiBBIC5tanMgZmlsZSBuYW1lIGFzIHRoZSBkZWZpbmluZyBmaWxlIHdpdGggaWQgYXMgc3VmZml4IChkZWZpbmluZy1maWxlLmlkLm1qcylcbiAqIDUuIEEgLm10cyBmaWxlIG5hbWUgYXMgdGhlIGRlZmluaW5nIGZpbGUgd2l0aCBpZCBhcyBzdWZmaXggKGRlZmluaW5nLWZpbGUuaWQubXRzKVxuICogNi4gQSAuY3RzIGZpbGUgbmFtZSBhcyB0aGUgZGVmaW5pbmcgZmlsZSB3aXRoIGlkIGFzIHN1ZmZpeCAoZGVmaW5pbmctZmlsZS5pZC5jdHMpXG4gKiA3LiBBIC5janMgZmlsZSBuYW1lIGFzIHRoZSBkZWZpbmluZyBmaWxlIHdpdGggaWQgYXMgc3VmZml4IChkZWZpbmluZy1maWxlLmlkLmNqcylcbiAqL1xuZnVuY3Rpb24gZmluZEVudHJ5KGlkOiBzdHJpbmcsIGVudHJ5Pzogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKGVudHJ5KSB7XG4gICAgaWYgKCEvXFwuKGpzeD98dHN4P3xjanN8Y3RzfG1qc3xtdHMpJC8udGVzdChlbnRyeSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJPbmx5IEphdmFTY3JpcHQgb3IgVHlwZVNjcmlwdCBlbnRyeSBmaWxlcyBhcmUgc3VwcG9ydGVkLlwiLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKGVudHJ5KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBlbnRyeSBmaWxlIGF0ICR7ZW50cnl9YCk7XG4gICAgfVxuICAgIHJldHVybiBlbnRyeTtcbiAgfVxuXG4gIGNvbnN0IGRlZmluaW5nRmlsZSA9IGZpbmREZWZpbmluZ0ZpbGUoKTtcbiAgY29uc3QgZXh0bmFtZSA9IHBhdGguZXh0bmFtZShkZWZpbmluZ0ZpbGUpO1xuXG4gIGNvbnN0IHRzSGFuZGxlckZpbGUgPSBkZWZpbmluZ0ZpbGUucmVwbGFjZShcbiAgICBuZXcgUmVnRXhwKGAke2V4dG5hbWV9JGApLFxuICAgIGAuJHtpZH0udHNgLFxuICApO1xuICBpZiAoZnMuZXhpc3RzU3luYyh0c0hhbmRsZXJGaWxlKSkge1xuICAgIHJldHVybiB0c0hhbmRsZXJGaWxlO1xuICB9XG5cbiAgY29uc3QganNIYW5kbGVyRmlsZSA9IGRlZmluaW5nRmlsZS5yZXBsYWNlKFxuICAgIG5ldyBSZWdFeHAoYCR7ZXh0bmFtZX0kYCksXG4gICAgYC4ke2lkfS5qc2AsXG4gICk7XG4gIGlmIChmcy5leGlzdHNTeW5jKGpzSGFuZGxlckZpbGUpKSB7XG4gICAgcmV0dXJuIGpzSGFuZGxlckZpbGU7XG4gIH1cblxuICBjb25zdCBtanNIYW5kbGVyRmlsZSA9IGRlZmluaW5nRmlsZS5yZXBsYWNlKFxuICAgIG5ldyBSZWdFeHAoYCR7ZXh0bmFtZX0kYCksXG4gICAgYC4ke2lkfS5tanNgLFxuICApO1xuICBpZiAoZnMuZXhpc3RzU3luYyhtanNIYW5kbGVyRmlsZSkpIHtcbiAgICByZXR1cm4gbWpzSGFuZGxlckZpbGU7XG4gIH1cblxuICBjb25zdCBtdHNIYW5kbGVyRmlsZSA9IGRlZmluaW5nRmlsZS5yZXBsYWNlKFxuICAgIG5ldyBSZWdFeHAoYCR7ZXh0bmFtZX0kYCksXG4gICAgYC4ke2lkfS5tdHNgLFxuICApO1xuICBpZiAoZnMuZXhpc3RzU3luYyhtdHNIYW5kbGVyRmlsZSkpIHtcbiAgICByZXR1cm4gbXRzSGFuZGxlckZpbGU7XG4gIH1cblxuICBjb25zdCBjdHNIYW5kbGVyRmlsZSA9IGRlZmluaW5nRmlsZS5yZXBsYWNlKFxuICAgIG5ldyBSZWdFeHAoYCR7ZXh0bmFtZX0kYCksXG4gICAgYC4ke2lkfS5jdHNgLFxuICApO1xuICBpZiAoZnMuZXhpc3RzU3luYyhjdHNIYW5kbGVyRmlsZSkpIHtcbiAgICByZXR1cm4gY3RzSGFuZGxlckZpbGU7XG4gIH1cblxuICBjb25zdCBjanNIYW5kbGVyRmlsZSA9IGRlZmluaW5nRmlsZS5yZXBsYWNlKFxuICAgIG5ldyBSZWdFeHAoYCR7ZXh0bmFtZX0kYCksXG4gICAgYC4ke2lkfS5janNgLFxuICApO1xuICBpZiAoZnMuZXhpc3RzU3luYyhjanNIYW5kbGVyRmlsZSkpIHtcbiAgICByZXR1cm4gY2pzSGFuZGxlckZpbGU7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgYENhbm5vdCBmaW5kIGhhbmRsZXIgZmlsZSAke3RzSGFuZGxlckZpbGV9LCAke2pzSGFuZGxlckZpbGV9LCAke21qc0hhbmRsZXJGaWxlfSwgJHttdHNIYW5kbGVyRmlsZX0sICR7Y3RzSGFuZGxlckZpbGV9IG9yICR7Y2pzSGFuZGxlckZpbGV9YCxcbiAgKTtcbn1cblxuLyoqXG4gKiBGaW5kcyB0aGUgbmFtZSBvZiB0aGUgZmlsZSB3aGVyZSB0aGUgYE5vZGVqc0Z1bmN0aW9uYCBpcyBkZWZpbmVkXG4gKi9cbmZ1bmN0aW9uIGZpbmREZWZpbmluZ0ZpbGUoKTogc3RyaW5nIHtcbiAgbGV0IGRlZmluaW5nSW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgY29uc3Qgc2l0ZXMgPSBjYWxsc2l0ZXMoKTtcbiAgZm9yIChjb25zdCBbaW5kZXgsIHNpdGVdIG9mIHNpdGVzLmVudHJpZXMoKSkge1xuICAgIGlmIChzaXRlLmdldEZ1bmN0aW9uTmFtZSgpID09PSBcIk5vZGVqc0Z1bmN0aW9uXCIpIHtcbiAgICAgIC8vIFRoZSBuZXh0IHNpdGUgaXMgdGhlIHNpdGUgd2hlcmUgdGhlIE5vZGVqc0Z1bmN0aW9uIHdhcyBjcmVhdGVkXG4gICAgICBkZWZpbmluZ0luZGV4ID0gaW5kZXggKyAxO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFkZWZpbmluZ0luZGV4IHx8ICFzaXRlc1tkZWZpbmluZ0luZGV4XSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIGRlZmluaW5nIGZpbGUuXCIpO1xuICB9XG5cbiAgcmV0dXJuIHNpdGVzW2RlZmluaW5nSW5kZXhdLmdldEZpbGVOYW1lKCk7XG59XG4iXX0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { lambdaFunctionUrl } from "@
|
|
1
|
+
import { lambdaFunctionUrl } from "@cdktn/provider-aws";
|
|
2
2
|
import { Construct } from "constructs";
|
|
3
3
|
import { IAwsConstruct, AwsConstructBase } from "../aws-construct";
|
|
4
4
|
import { IFunction } from "./function-base";
|
|
@@ -3,7 +3,7 @@ var _a;
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.FunctionUrl = exports.HttpMethod = exports.InvokeMode = exports.FunctionUrlAuthType = void 0;
|
|
5
5
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
-
const provider_aws_1 = require("@
|
|
6
|
+
const provider_aws_1 = require("@cdktn/provider-aws");
|
|
7
7
|
const aws_construct_1 = require("../aws-construct");
|
|
8
8
|
const iam = require("../iam");
|
|
9
9
|
/**
|
|
@@ -144,5 +144,5 @@ class FunctionUrl extends aws_construct_1.AwsConstructBase {
|
|
|
144
144
|
}
|
|
145
145
|
exports.FunctionUrl = FunctionUrl;
|
|
146
146
|
_a = JSII_RTTI_SYMBOL_1;
|
|
147
|
-
FunctionUrl[_a] = { fqn: "terraconstructs.aws.compute.FunctionUrl", version: "0.2.
|
|
148
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24tdXJsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9jb21wdXRlL2Z1bmN0aW9uLXVybC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHNEQUF3RDtBQUV4RCxvREFBbUU7QUFJbkUsOEJBQThCO0FBRTlCOztHQUVHO0FBQ0gsSUFBWSxtQkFVWDtBQVZELFdBQVksbUJBQW1CO0lBQzdCOztPQUVHO0lBQ0gsMENBQW1CLENBQUE7SUFFbkI7O09BRUc7SUFDSCxvQ0FBYSxDQUFBO0FBQ2YsQ0FBQyxFQVZXLG1CQUFtQixtQ0FBbkIsbUJBQW1CLFFBVTlCO0FBRUQ7O0dBRUc7QUFDSCxJQUFZLFVBY1g7QUFkRCxXQUFZLFVBQVU7SUFDcEI7Ozs7T0FJRztJQUNILG1DQUFxQixDQUFBO0lBRXJCOzs7O09BSUc7SUFDSCxpREFBbUMsQ0FBQTtBQUNyQyxDQUFDLEVBZFcsVUFBVSwwQkFBVixVQUFVLFFBY3JCO0FBRUQ7O0dBRUc7QUFDSCxJQUFZLFVBaUNYO0FBakNELFdBQVksVUFBVTtJQUNwQjs7T0FFRztJQUNILHlCQUFXLENBQUE7SUFDWDs7T0FFRztJQUNILHlCQUFXLENBQUE7SUFDWDs7T0FFRztJQUNILDJCQUFhLENBQUE7SUFDYjs7T0FFRztJQUNILDJCQUFhLENBQUE7SUFDYjs7T0FFRztJQUNILCtCQUFpQixDQUFBO0lBQ2pCOztPQUVHO0lBQ0gsNkJBQWUsQ0FBQTtJQUNmOztPQUVHO0lBQ0gsaUNBQW1CLENBQUE7SUFDbkI7O09BRUc7SUFDSCx1QkFBUyxDQUFBO0FBQ1gsQ0FBQyxFQWpDVyxVQUFVLDBCQUFWLFVBQVUsUUFpQ3JCO0FBZ0lEOzs7O0dBSUc7QUFDSCxNQUFhLFdBQVksU0FBUSxnQ0FBZ0I7SUFFL0MsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO0lBQ2pDLENBQUM7SUFtQkQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF1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LElBQUksQ0FBQyxnQkFBZ0I7WUFDdkMsWUFBWSxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQ2pDLFlBQVksRUFBRSxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztZQUNyRCxZQUFZLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDakMsYUFBYSxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQ2xDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRTtTQUNqQyxDQUFDO0lBQ0osQ0FBQzs7QUE3Rkgsa0NBOEZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbGFtYmRhRnVuY3Rpb25VcmwgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF3c1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IElBd3NDb25zdHJ1Y3QsIEF3c0NvbnN0cnVjdEJhc2UgfSBmcm9tIFwiLi4vYXdzLWNvbnN0cnVjdFwiO1xuaW1wb3J0IHsgSUFsaWFzIH0gZnJvbSBcIi4vZnVuY3Rpb24tYWxpYXNcIjtcbmltcG9ydCB7IElGdW5jdGlvbiB9IGZyb20gXCIuL2Z1bmN0aW9uLWJhc2VcIjtcbmltcG9ydCB7IER1cmF0aW9uIH0gZnJvbSBcIi4uLy4uL2R1cmF0aW9uXCI7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSBcIi4uL2lhbVwiO1xuXG4vKipcbiAqIFRoZSBhdXRoIHR5cGVzIGZvciBhIGZ1bmN0aW9uIHVybFxuICovXG5leHBvcnQgZW51bSBGdW5jdGlvblVybEF1dGhUeXBlIHtcbiAgLyoqXG4gICAqIFJlc3RyaWN0IGFjY2VzcyB0byBhdXRoZW50aWNhdGVkIElBTSB1c2VycyBvbmx5XG4gICAqL1xuICBBV1NfSUFNID0gXCJBV1NfSUFNXCIsXG5cbiAgLyoqXG4gICAqIEJ5cGFzcyBJQU0gYXV0aGVudGljYXRpb24gdG8gY3JlYXRlIGEgcHVibGljIGVuZHBvaW50XG4gICAqL1xuICBOT05FID0gXCJOT05FXCIsXG59XG5cbi8qKlxuICogVGhlIGludm9rZSBtb2RlcyBmb3IgYSBMYW1iZGEgZnVuY3Rpb25cbiAqL1xuZXhwb3J0IGVudW0gSW52b2tlTW9kZSB7XG4gIC8qKlxuICAgKiBEZWZhdWx0IG9wdGlvbi4gTGFtYmRhIGludm9rZXMgeW91ciBmdW5jdGlvbiB1c2luZyB0aGUgSW52b2tlIEFQSSBvcGVyYXRpb24uXG4gICAqIEludm9jYXRpb24gcmVzdWx0cyBhcmUgYXZhaWxhYmxlIHdoZW4gdGhlIHBheWxvYWQgaXMgY29tcGxldGUuXG4gICAqIFRoZSBtYXhpbXVtIHBheWxvYWQgc2l6ZSBpcyA2IE1CLlxuICAgKi9cbiAgQlVGRkVSRUQgPSBcIkJVRkZFUkVEXCIsXG5cbiAgLyoqXG4gICAqIFlvdXIgZnVuY3Rpb24gc3RyZWFtcyBwYXlsb2FkIHJlc3VsdHMgYXMgdGhleSBiZWNvbWUgYXZhaWxhYmxlLlxuICAgKiBMYW1iZGEgaW52b2tlcyB5b3VyIGZ1bmN0aW9uIHVzaW5nIHRoZSBJbnZva2VXaXRoUmVzcG9uc2VTdHJlYW0gQVBJIG9wZXJhdGlvbi5cbiAgICogVGhlIG1heGltdW0gcmVzcG9uc2UgcGF5bG9hZCBzaXplIGlzIDIwIE1CLCBob3dldmVyLCB5b3UgY2FuIHJlcXVlc3QgYSBxdW90YSBpbmNyZWFzZS5cbiAgICovXG4gIFJFU1BPTlNFX1NUUkVBTSA9IFwiUkVTUE9OU0VfU1RSRUFNXCIsXG59XG5cbi8qKlxuICogQWxsIGh0dHAgcmVxdWVzdCBtZXRob2RzXG4gKi9cbmV4cG9ydCBlbnVtIEh0dHBNZXRob2Qge1xuICAvKipcbiAgICogVGhlIEdFVCBtZXRob2QgcmVxdWVzdHMgYSByZXByZXNlbnRhdGlvbiBvZiB0aGUgc3BlY2lmaWVkIHJlc291cmNlLlxuICAgKi9cbiAgR0VUID0gXCJHRVRcIixcbiAgLyoqXG4gICAqIFRoZSBQVVQgbWV0aG9kIHJlcGxhY2VzIGFsbCBjdXJyZW50IHJlcHJlc2VudGF0aW9ucyBvZiB0aGUgdGFyZ2V0IHJlc291cmNlIHdpdGggdGhlIHJlcXVlc3QgcGF5bG9hZC5cbiAgICovXG4gIFBVVCA9IFwiUFVUXCIsXG4gIC8qKlxuICAgKiBUaGUgSEVBRCBtZXRob2QgYXNrcyBmb3IgYSByZXNwb25zZSBpZGVudGljYWwgdG8gdGhhdCBvZiBhIEdFVCByZXF1ZXN0LCBidXQgd2l0aG91dCB0aGUgcmVzcG9uc2UgYm9keS5cbiAgICovXG4gIEhFQUQgPSBcIkhFQURcIixcbiAgLyoqXG4gICAqIFRoZSBQT1NUIG1ldGhvZCBpcyB1c2VkIHRvIHN1Ym1pdCBhbiBlbnRpdHkgdG8gdGhlIHNwZWNpZmllZCByZXNvdXJjZSwgb2Z0ZW4gY2F1c2luZyBhIGNoYW5nZSBpbiBzdGF0ZSBvciBzaWRlIGVmZmVjdHMgb24gdGhlIHNlcnZlci5cbiAgICovXG4gIFBPU1QgPSBcIlBPU1RcIixcbiAgLyoqXG4gICAqIFRoZSBERUxFVEUgbWV0aG9kIGRlbGV0ZXMgdGhlIHNwZWNpZmllZCByZXNvdXJjZS5cbiAgICovXG4gIERFTEVURSA9IFwiREVMRVRFXCIsXG4gIC8qKlxuICAgKiBUaGUgUEFUQ0ggbWV0aG9kIGFwcGxpZXMgcGFydGlhbCBtb2RpZmljYXRpb25zIHRvIGEgcmVzb3VyY2UuXG4gICAqL1xuICBQQVRDSCA9IFwiUEFUQ0hcIixcbiAgLyoqXG4gICAqIFRoZSBPUFRJT05TIG1ldGhvZCBkZXNjcmliZXMgdGhlIGNvbW11bmljYXRpb24gb3B0aW9ucyBmb3IgdGhlIHRhcmdldCByZXNvdXJjZS5cbiAgICovXG4gIE9QVElPTlMgPSBcIk9QVElPTlNcIixcbiAgLyoqXG4gICAqIFRoZSB3aWxkY2FyZCBlbnRyeSB0byBhbGxvdyBhbGwgbWV0aG9kcy5cbiAgICovXG4gIEFMTCA9IFwiKlwiLFxufVxuXG4vKipcbiAqIFNwZWNpZmllcyBhIGNyb3NzLW9yaWdpbiBhY2Nlc3MgcHJvcGVydHkgZm9yIGEgZnVuY3Rpb24gVVJMXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnVuY3Rpb25VcmxDb3JzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGFsbG93IGNvb2tpZXMgb3Igb3RoZXIgY3JlZGVudGlhbHMgaW4gcmVxdWVzdHMgdG8geW91ciBmdW5jdGlvbiBVUkwuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBhbGxvd0NyZWRlbnRpYWxzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSGVhZGVycyB0aGF0IGFyZSBzcGVjaWZpZWQgaW4gdGhlIEFjY2Vzcy1Db250cm9sLVJlcXVlc3QtSGVhZGVycyBoZWFkZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gaGVhZGVycyBhbGxvd2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dlZEhlYWRlcnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQW4gSFRUUCBtZXRob2QgdGhhdCB5b3UgYWxsb3cgdGhlIG9yaWdpbiB0byBleGVjdXRlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFtIdHRwTWV0aG9kLkFMTF1cbiAgICovXG4gIHJlYWRvbmx5IGFsbG93ZWRNZXRob2RzPzogSHR0cE1ldGhvZFtdO1xuXG4gIC8qKlxuICAgKiBPbmUgb3IgbW9yZSBvcmlnaW5zIHlvdSB3YW50IGN1c3RvbWVycyB0byBiZSBhYmxlIHRvIGFjY2VzcyB0aGUgYnVja2V0IGZyb20uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gb3JpZ2lucyBhbGxvd2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dlZE9yaWdpbnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogT25lIG9yIG1vcmUgaGVhZGVycyBpbiB0aGUgcmVzcG9uc2UgdGhhdCB5b3Ugd2FudCBjdXN0b21lcnMgdG8gYmUgYWJsZSB0byBhY2Nlc3MgZnJvbSB0aGVpciBhcHBsaWNhdGlvbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gaGVhZGVycyBleHBvc2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgZXhwb3NlZEhlYWRlcnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIHRpbWUgaW4gc2Vjb25kcyB0aGF0IHlvdXIgYnJvd3NlciBpcyB0byBjYWNoZSB0aGUgcHJlZmxpZ2h0IHJlc3BvbnNlIGZvciB0aGUgc3BlY2lmaWVkIHJlc291cmNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEJyb3dzZXIgZGVmYXVsdCBvZiA1IHNlY29uZHMuXG4gICAqL1xuICByZWFkb25seSBtYXhBZ2U/OiBEdXJhdGlvbjtcbn1cblxuLyoqXG4gKiBPdXRwdXRzIHRoYXQgY2FuIGJlIGV4cG9zZWQgdGhyb3VnaCB0aGUgZ3JpZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uVXJsT3V0cHV0cyB7XG4gIC8qKlxuICAgKiBUaGUgdXJsIG9mIHRoZSBMYW1iZGEgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSB1cmw6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgZnVuY3Rpb24gdGhpcyBVUkwgcmVmZXJzIHRvXG4gICAqL1xuICByZWFkb25seSBmdW5jdGlvbkFybjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgTGFtYmRhIGZ1bmN0aW9uIFVybFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElGdW5jdGlvblVybCBleHRlbmRzIElBd3NDb25zdHJ1Y3Qge1xuICAvKiogc3Ryb25nbHkgdHlwZWQgRnVuY3Rpb25VcmxPdXRwdXRzICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uVXJsT3V0cHV0czogRnVuY3Rpb25VcmxPdXRwdXRzO1xuXG4gIC8qKlxuICAgKiBUaGUgdXJsIG9mIHRoZSBMYW1iZGEgZnVuY3Rpb24uXG4gICAqXG4gICAqIEBhdHRyaWJ1dGUgRnVuY3Rpb25VcmxcbiAgICovXG4gIHJlYWRvbmx5IHVybDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBmdW5jdGlvbiB0aGlzIFVSTCByZWZlcnMgdG9cbiAgICpcbiAgICogQGF0dHJpYnV0ZSBGdW5jdGlvbkFyblxuICAgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb25Bcm46IHN0cmluZztcblxuICAvKipcbiAgICogR3JhbnQgdGhlIGdpdmVuIGlkZW50aXR5IHBlcm1pc3Npb25zIHRvIGludm9rZSB0aGlzIExhbWJkYSBGdW5jdGlvbiBVUkxcbiAgICovXG4gIGdyYW50SW52b2tlVXJsKGlkZW50aXR5OiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcbn1cblxuLyoqXG4gKiBPcHRpb25zIHRvIGFkZCBhIHVybCB0byBhIExhbWJkYSBmdW5jdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uVXJsT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBhdXRoZW50aWNhdGlvbiB0aGF0IHlvdXIgZnVuY3Rpb24gVVJMIHVzZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IEZ1bmN0aW9uVXJsQXV0aFR5cGUuQVdTX0lBTVxuICAgKi9cbiAgcmVhZG9ubHkgYXV0aFR5cGU/OiBGdW5jdGlvblVybEF1dGhUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgY3Jvc3Mtb3JpZ2luIHJlc291cmNlIHNoYXJpbmcgKENPUlMpIHNldHRpbmdzIGZvciB5b3VyIGZ1bmN0aW9uIFVSTC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBDT1JTIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICByZWFkb25seSBjb3JzPzogRnVuY3Rpb25VcmxDb3JzT3B0aW9ucztcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgaW52b2NhdGlvbiBtb2RlIHRoYXQgeW91ciBMYW1iZGEgZnVuY3Rpb24gdXNlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgSW52b2tlTW9kZS5CVUZGRVJFRFxuICAgKi9cbiAgcmVhZG9ubHkgaW52b2tlTW9kZT86IEludm9rZU1vZGU7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYSBGdW5jdGlvblVybFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uVXJsUHJvcHMgZXh0ZW5kcyBGdW5jdGlvblVybE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIHRvIHdoaWNoIHRoaXMgdXJsIHJlZmVycy5cbiAgICogSXQgY2FuIGFsc28gYmUgYW4gYEFsaWFzYCBidXQgbm90IGEgYFZlcnNpb25gLlxuICAgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb246IElGdW5jdGlvbjtcbn1cblxuLyoqXG4gKiBEZWZpbmVzIGEgTGFtYmRhIGZ1bmN0aW9uIHVybFxuICpcbiAqIEByZXNvdXJjZSBhd3NfbGFtYmRhX2Z1bmN0aW9uX3VybFxuICovXG5leHBvcnQgY2xhc3MgRnVuY3Rpb25VcmwgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlIGltcGxlbWVudHMgSUZ1bmN0aW9uVXJsIHtcbiAgcHVibGljIHJlYWRvbmx5IGZ1bmN0aW9uVXJsT3V0cHV0czogRnVuY3Rpb25VcmxPdXRwdXRzO1xuICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZnVuY3Rpb25VcmxPdXRwdXRzO1xuICB9XG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogbGFtYmRhRnVuY3Rpb25VcmwuTGFtYmRhRnVuY3Rpb25Vcmw7XG4gIC8qKlxuICAgKiBUaGUgdXJsIG9mIHRoZSBMYW1iZGEgZnVuY3Rpb24uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdXJsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGZ1bmN0aW9uIHRoaXMgVVJMIHJlZmVycyB0b1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGZ1bmN0aW9uQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhdXRoZW50aWNhdGlvbiB0eXBlIHVzZWQgZm9yIHRoaXMgRnVuY3Rpb24gVVJMXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXV0aFR5cGU6IEZ1bmN0aW9uVXJsQXV0aFR5cGU7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBmdW5jdGlvbjogSUZ1bmN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBGdW5jdGlvblVybFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIC8vIElmIHRoZSB0YXJnZXQgZnVuY3Rpb24gaXMgYW4gYWxpYXMsIHRoZW4gaXQgbXVzdCBiZSBjb25maWd1cmVkIHVzaW5nIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uXG4gICAgLy8gQVJOLCBhbmQgdGhlIGFsaWFzIG5hbWUgYXMgYSBxdWFsaWZpZXIuXG4gICAgY29uc3QgeyB0YXJnZXRGdW5jdGlvbiwgYWxpYXMgfSA9IHRoaXMuaW5zdGFuY2VPZkFsaWFzKHByb3BzLmZ1bmN0aW9uKVxuICAgICAgPyB7IHRhcmdldEZ1bmN0aW9uOiBwcm9wcy5mdW5jdGlvbi5sYW1iZGEsIGFsaWFzOiBwcm9wcy5mdW5jdGlvbiB9XG4gICAgICA6IHsgdGFyZ2V0RnVuY3Rpb246IHByb3BzLmZ1bmN0aW9uLCBhbGlhczogdW5kZWZpbmVkIH07XG5cbiAgICB0aGlzLmF1dGhUeXBlID0gcHJvcHMuYXV0aFR5cGUgPz8gRnVuY3Rpb25VcmxBdXRoVHlwZS5BV1NfSUFNO1xuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBsYW1iZGFGdW5jdGlvblVybC5MYW1iZGFGdW5jdGlvblVybCh0aGlzLCBcIlJlc291cmNlXCIsIHtcbiAgICAgIGF1dGhvcml6YXRpb25UeXBlOiB0aGlzLmF1dGhUeXBlLFxuICAgICAgY29yczogcHJvcHMuY29ycyA/IHRoaXMucmVuZGVyQ29ycyhwcm9wcy5jb3JzKSA6IHVuZGVmaW5lZCxcbiAgICAgIGludm9rZU1vZGU6IHByb3BzLmludm9rZU1vZGUsXG4gICAgICBmdW5jdGlvbk5hbWU6IHRhcmdldEZ1bmN0aW9uLmZ1bmN0aW9uQXJuLCAvLyBUaGUgbmFtZSAob3IgQVJOKSBvZiB0aGUgTGFtYmRhIGZ1bmN0aW9uLlxuICAgICAgcXVhbGlmaWVyOiBhbGlhcz8uYWxpYXNOYW1lLFxuICAgIH0pO1xuICAgIC8vIFRoZSBhbGlhc05hbWUgaXMgYSByZXF1aXJlZCBwaHlzaWNhbCBuYW1lLCBzbyB1c2luZyBpdCBkb2VzIG5vdCBpbXBseSBhIGRlcGVuZGVuY3ksIHNvIHdlXG4gICAgLy8gbXVzdCBcIm1hbnVhbGx5XCIgcmVnaXN0ZXIgdGhlIGRlcGVuZGVuY3ksIG9yIGVsc2UgVEYgbWF5IGF0dGVtcHQgdG8gdXNlIGJlZm9yZSBpdCBleGlzdHMuXG4gICAgaWYgKGFsaWFzPy5ub2RlLmRlZmF1bHRDaGlsZCAhPSBudWxsKSB7XG4gICAgICB0aGlzLnJlc291cmNlLm5vZGUuYWRkRGVwZW5kZW5jeShhbGlhcy5ub2RlLmRlZmF1bHRDaGlsZCk7XG4gICAgfVxuXG4gICAgdGhpcy51cmwgPSB0aGlzLnJlc291cmNlLmZ1bmN0aW9uVXJsO1xuICAgIHRoaXMuZnVuY3Rpb25Bcm4gPSB0aGlzLnJlc291cmNlLmZ1bmN0aW9uQXJuO1xuICAgIHRoaXMuZnVuY3Rpb24gPSBwcm9wcy5mdW5jdGlvbjtcblxuICAgIGlmIChwcm9wcy5hdXRoVHlwZSA9PT0gRnVuY3Rpb25VcmxBdXRoVHlwZS5OT05FKSB7XG4gICAgICBwcm9wcy5mdW5jdGlvbi5hZGRQZXJtaXNzaW9uKFwiaW52b2tlLWZ1bmN0aW9uLXVybFwiLCB7XG4gICAgICAgIHByaW5jaXBhbDogbmV3IGlhbS5BbnlQcmluY2lwYWwoKSxcbiAgICAgICAgYWN0aW9uOiBcImxhbWJkYTpJbnZva2VGdW5jdGlvblVybFwiLFxuICAgICAgICBmdW5jdGlvblVybEF1dGhUeXBlOiBwcm9wcy5hdXRoVHlwZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmZ1bmN0aW9uVXJsT3V0cHV0cyA9IHtcbiAgICAgIHVybDogdGhpcy51cmwsXG4gICAgICBmdW5jdGlvbkFybjogdGhpcy5mdW5jdGlvbkFybixcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGdyYW50SW52b2tlVXJsKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5mdW5jdGlvbi5ncmFudEludm9rZVVybChncmFudGVlKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5zdGFuY2VPZkFsaWFzKGZuOiBJRnVuY3Rpb24pOiBmbiBpcyBJQWxpYXMge1xuICAgIHJldHVybiBcImFsaWFzTmFtZVwiIGluIGZuO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJDb3JzKFxuICAgIGNvcnM6IEZ1bmN0aW9uVXJsQ29yc09wdGlvbnMsXG4gICk6IGxhbWJkYUZ1bmN0aW9uVXJsLkxhbWJkYUZ1bmN0aW9uVXJsQ29ycyB7XG4gICAgaWYgKFxuICAgICAgY29ycy5tYXhBZ2UgJiZcbiAgICAgICFjb3JzLm1heEFnZS5pc1VucmVzb2x2ZWQoKSAmJlxuICAgICAgY29ycy5tYXhBZ2UudG9TZWNvbmRzKCkgPiA4NjQwMFxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgRnVuY3Rpb25VcmwgQ09SUyBtYXhBZ2Ugc2hvdWxkIGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byA4NjQwMCBzZWNzIChnb3QgJHtjb3JzLm1heEFnZS50b1NlY29uZHMoKX0pYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFsbG93Q3JlZGVudGlhbHM6IGNvcnMuYWxsb3dDcmVkZW50aWFscyxcbiAgICAgIGFsbG93SGVhZGVyczogY29ycy5hbGxvd2VkSGVhZGVycyxcbiAgICAgIGFsbG93TWV0aG9kczogY29ycy5hbGxvd2VkTWV0aG9kcyA/PyBbSHR0cE1ldGhvZC5BTExdLFxuICAgICAgYWxsb3dPcmlnaW5zOiBjb3JzLmFsbG93ZWRPcmlnaW5zLFxuICAgICAgZXhwb3NlSGVhZGVyczogY29ycy5leHBvc2VkSGVhZGVycyxcbiAgICAgIG1heEFnZTogY29ycy5tYXhBZ2U/LnRvU2Vjb25kcygpLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
147
|
+
FunctionUrl[_a] = { fqn: "terraconstructs.aws.compute.FunctionUrl", version: "0.2.6" };
|
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24tdXJsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9jb21wdXRlL2Z1bmN0aW9uLXVybC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHNEQUF3RDtBQUV4RCxvREFBbUU7QUFJbkUsOEJBQThCO0FBRTlCOztHQUVHO0FBQ0gsSUFBWSxtQkFVWDtBQVZELFdBQVksbUJBQW1CO0lBQzdCOztPQUVHO0lBQ0gsMENBQW1CLENBQUE7SUFFbkI7O09BRUc7SUFDSCxvQ0FBYSxDQUFBO0FBQ2YsQ0FBQyxFQVZXLG1CQUFtQixtQ0FBbkIsbUJBQW1CLFFBVTlCO0FBRUQ7O0dBRUc7QUFDSCxJQUFZLFVBY1g7QUFkRCxXQUFZLFVBQVU7SUFDcEI7Ozs7T0FJRztJQUNILG1DQUFxQixDQUFBO0lBRXJCOzs7O09BSUc7SUFDSCxpREFBbUMsQ0FBQTtBQUNyQyxDQUFDLEVBZFcsVUFBVSwwQkFBVixVQUFVLFFBY3JCO0FBRUQ7O0dBRUc7QUFDSCxJQUFZLFVBaUNYO0FBakNELFdBQVksVUFBVTtJQUNwQjs7T0FFRztJQUNILHlCQUFXLENBQUE7SUFDWDs7T0FFRztJQUNILHlCQUFXLENBQUE7SUFDWDs7T0FFRztJQUNILDJCQUFhLENBQUE7SUFDYjs7T0FFRztJQUNILDJCQUFhLENBQUE7SUFDYjs7T0FFRztJQUNILCtCQUFpQixDQUFBO0lBQ2pCOztPQUVHO0lBQ0gsNkJBQWUsQ0FBQTtJQUNmOztPQUVHO0lBQ0gsaUNBQW1CLENBQUE7SUFDbkI7O09BRUc7SUFDSCx1QkFBUyxDQUFBO0FBQ1gsQ0FBQyxFQWpDVyxVQUFVLDBCQUFWLFVBQVUsUUFpQ3JCO0FBZ0lEOzs7O0dBSUc7QUFDSCxNQUFhLFdBQVksU0FBUSxnQ0FBZ0I7SUFFL0MsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO0lBQ2pDLENBQUM7SUFtQkQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF1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LElBQUksQ0FBQyxnQkFBZ0I7WUFDdkMsWUFBWSxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQ2pDLFlBQVksRUFBRSxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztZQUNyRCxZQUFZLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDakMsYUFBYSxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQ2xDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRTtTQUNqQyxDQUFDO0lBQ0osQ0FBQzs7QUE3Rkgsa0NBOEZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbGFtYmRhRnVuY3Rpb25VcmwgfSBmcm9tIFwiQGNka3RuL3Byb3ZpZGVyLWF3c1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IElBd3NDb25zdHJ1Y3QsIEF3c0NvbnN0cnVjdEJhc2UgfSBmcm9tIFwiLi4vYXdzLWNvbnN0cnVjdFwiO1xuaW1wb3J0IHsgSUFsaWFzIH0gZnJvbSBcIi4vZnVuY3Rpb24tYWxpYXNcIjtcbmltcG9ydCB7IElGdW5jdGlvbiB9IGZyb20gXCIuL2Z1bmN0aW9uLWJhc2VcIjtcbmltcG9ydCB7IER1cmF0aW9uIH0gZnJvbSBcIi4uLy4uL2R1cmF0aW9uXCI7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSBcIi4uL2lhbVwiO1xuXG4vKipcbiAqIFRoZSBhdXRoIHR5cGVzIGZvciBhIGZ1bmN0aW9uIHVybFxuICovXG5leHBvcnQgZW51bSBGdW5jdGlvblVybEF1dGhUeXBlIHtcbiAgLyoqXG4gICAqIFJlc3RyaWN0IGFjY2VzcyB0byBhdXRoZW50aWNhdGVkIElBTSB1c2VycyBvbmx5XG4gICAqL1xuICBBV1NfSUFNID0gXCJBV1NfSUFNXCIsXG5cbiAgLyoqXG4gICAqIEJ5cGFzcyBJQU0gYXV0aGVudGljYXRpb24gdG8gY3JlYXRlIGEgcHVibGljIGVuZHBvaW50XG4gICAqL1xuICBOT05FID0gXCJOT05FXCIsXG59XG5cbi8qKlxuICogVGhlIGludm9rZSBtb2RlcyBmb3IgYSBMYW1iZGEgZnVuY3Rpb25cbiAqL1xuZXhwb3J0IGVudW0gSW52b2tlTW9kZSB7XG4gIC8qKlxuICAgKiBEZWZhdWx0IG9wdGlvbi4gTGFtYmRhIGludm9rZXMgeW91ciBmdW5jdGlvbiB1c2luZyB0aGUgSW52b2tlIEFQSSBvcGVyYXRpb24uXG4gICAqIEludm9jYXRpb24gcmVzdWx0cyBhcmUgYXZhaWxhYmxlIHdoZW4gdGhlIHBheWxvYWQgaXMgY29tcGxldGUuXG4gICAqIFRoZSBtYXhpbXVtIHBheWxvYWQgc2l6ZSBpcyA2IE1CLlxuICAgKi9cbiAgQlVGRkVSRUQgPSBcIkJVRkZFUkVEXCIsXG5cbiAgLyoqXG4gICAqIFlvdXIgZnVuY3Rpb24gc3RyZWFtcyBwYXlsb2FkIHJlc3VsdHMgYXMgdGhleSBiZWNvbWUgYXZhaWxhYmxlLlxuICAgKiBMYW1iZGEgaW52b2tlcyB5b3VyIGZ1bmN0aW9uIHVzaW5nIHRoZSBJbnZva2VXaXRoUmVzcG9uc2VTdHJlYW0gQVBJIG9wZXJhdGlvbi5cbiAgICogVGhlIG1heGltdW0gcmVzcG9uc2UgcGF5bG9hZCBzaXplIGlzIDIwIE1CLCBob3dldmVyLCB5b3UgY2FuIHJlcXVlc3QgYSBxdW90YSBpbmNyZWFzZS5cbiAgICovXG4gIFJFU1BPTlNFX1NUUkVBTSA9IFwiUkVTUE9OU0VfU1RSRUFNXCIsXG59XG5cbi8qKlxuICogQWxsIGh0dHAgcmVxdWVzdCBtZXRob2RzXG4gKi9cbmV4cG9ydCBlbnVtIEh0dHBNZXRob2Qge1xuICAvKipcbiAgICogVGhlIEdFVCBtZXRob2QgcmVxdWVzdHMgYSByZXByZXNlbnRhdGlvbiBvZiB0aGUgc3BlY2lmaWVkIHJlc291cmNlLlxuICAgKi9cbiAgR0VUID0gXCJHRVRcIixcbiAgLyoqXG4gICAqIFRoZSBQVVQgbWV0aG9kIHJlcGxhY2VzIGFsbCBjdXJyZW50IHJlcHJlc2VudGF0aW9ucyBvZiB0aGUgdGFyZ2V0IHJlc291cmNlIHdpdGggdGhlIHJlcXVlc3QgcGF5bG9hZC5cbiAgICovXG4gIFBVVCA9IFwiUFVUXCIsXG4gIC8qKlxuICAgKiBUaGUgSEVBRCBtZXRob2QgYXNrcyBmb3IgYSByZXNwb25zZSBpZGVudGljYWwgdG8gdGhhdCBvZiBhIEdFVCByZXF1ZXN0LCBidXQgd2l0aG91dCB0aGUgcmVzcG9uc2UgYm9keS5cbiAgICovXG4gIEhFQUQgPSBcIkhFQURcIixcbiAgLyoqXG4gICAqIFRoZSBQT1NUIG1ldGhvZCBpcyB1c2VkIHRvIHN1Ym1pdCBhbiBlbnRpdHkgdG8gdGhlIHNwZWNpZmllZCByZXNvdXJjZSwgb2Z0ZW4gY2F1c2luZyBhIGNoYW5nZSBpbiBzdGF0ZSBvciBzaWRlIGVmZmVjdHMgb24gdGhlIHNlcnZlci5cbiAgICovXG4gIFBPU1QgPSBcIlBPU1RcIixcbiAgLyoqXG4gICAqIFRoZSBERUxFVEUgbWV0aG9kIGRlbGV0ZXMgdGhlIHNwZWNpZmllZCByZXNvdXJjZS5cbiAgICovXG4gIERFTEVURSA9IFwiREVMRVRFXCIsXG4gIC8qKlxuICAgKiBUaGUgUEFUQ0ggbWV0aG9kIGFwcGxpZXMgcGFydGlhbCBtb2RpZmljYXRpb25zIHRvIGEgcmVzb3VyY2UuXG4gICAqL1xuICBQQVRDSCA9IFwiUEFUQ0hcIixcbiAgLyoqXG4gICAqIFRoZSBPUFRJT05TIG1ldGhvZCBkZXNjcmliZXMgdGhlIGNvbW11bmljYXRpb24gb3B0aW9ucyBmb3IgdGhlIHRhcmdldCByZXNvdXJjZS5cbiAgICovXG4gIE9QVElPTlMgPSBcIk9QVElPTlNcIixcbiAgLyoqXG4gICAqIFRoZSB3aWxkY2FyZCBlbnRyeSB0byBhbGxvdyBhbGwgbWV0aG9kcy5cbiAgICovXG4gIEFMTCA9IFwiKlwiLFxufVxuXG4vKipcbiAqIFNwZWNpZmllcyBhIGNyb3NzLW9yaWdpbiBhY2Nlc3MgcHJvcGVydHkgZm9yIGEgZnVuY3Rpb24gVVJMXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnVuY3Rpb25VcmxDb3JzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGFsbG93IGNvb2tpZXMgb3Igb3RoZXIgY3JlZGVudGlhbHMgaW4gcmVxdWVzdHMgdG8geW91ciBmdW5jdGlvbiBVUkwuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBhbGxvd0NyZWRlbnRpYWxzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSGVhZGVycyB0aGF0IGFyZSBzcGVjaWZpZWQgaW4gdGhlIEFjY2Vzcy1Db250cm9sLVJlcXVlc3QtSGVhZGVycyBoZWFkZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gaGVhZGVycyBhbGxvd2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dlZEhlYWRlcnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQW4gSFRUUCBtZXRob2QgdGhhdCB5b3UgYWxsb3cgdGhlIG9yaWdpbiB0byBleGVjdXRlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFtIdHRwTWV0aG9kLkFMTF1cbiAgICovXG4gIHJlYWRvbmx5IGFsbG93ZWRNZXRob2RzPzogSHR0cE1ldGhvZFtdO1xuXG4gIC8qKlxuICAgKiBPbmUgb3IgbW9yZSBvcmlnaW5zIHlvdSB3YW50IGN1c3RvbWVycyB0byBiZSBhYmxlIHRvIGFjY2VzcyB0aGUgYnVja2V0IGZyb20uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gb3JpZ2lucyBhbGxvd2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dlZE9yaWdpbnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogT25lIG9yIG1vcmUgaGVhZGVycyBpbiB0aGUgcmVzcG9uc2UgdGhhdCB5b3Ugd2FudCBjdXN0b21lcnMgdG8gYmUgYWJsZSB0byBhY2Nlc3MgZnJvbSB0aGVpciBhcHBsaWNhdGlvbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gaGVhZGVycyBleHBvc2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgZXhwb3NlZEhlYWRlcnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIHRpbWUgaW4gc2Vjb25kcyB0aGF0IHlvdXIgYnJvd3NlciBpcyB0byBjYWNoZSB0aGUgcHJlZmxpZ2h0IHJlc3BvbnNlIGZvciB0aGUgc3BlY2lmaWVkIHJlc291cmNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEJyb3dzZXIgZGVmYXVsdCBvZiA1IHNlY29uZHMuXG4gICAqL1xuICByZWFkb25seSBtYXhBZ2U/OiBEdXJhdGlvbjtcbn1cblxuLyoqXG4gKiBPdXRwdXRzIHRoYXQgY2FuIGJlIGV4cG9zZWQgdGhyb3VnaCB0aGUgZ3JpZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uVXJsT3V0cHV0cyB7XG4gIC8qKlxuICAgKiBUaGUgdXJsIG9mIHRoZSBMYW1iZGEgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSB1cmw6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgZnVuY3Rpb24gdGhpcyBVUkwgcmVmZXJzIHRvXG4gICAqL1xuICByZWFkb25seSBmdW5jdGlvbkFybjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgTGFtYmRhIGZ1bmN0aW9uIFVybFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElGdW5jdGlvblVybCBleHRlbmRzIElBd3NDb25zdHJ1Y3Qge1xuICAvKiogc3Ryb25nbHkgdHlwZWQgRnVuY3Rpb25VcmxPdXRwdXRzICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uVXJsT3V0cHV0czogRnVuY3Rpb25VcmxPdXRwdXRzO1xuXG4gIC8qKlxuICAgKiBUaGUgdXJsIG9mIHRoZSBMYW1iZGEgZnVuY3Rpb24uXG4gICAqXG4gICAqIEBhdHRyaWJ1dGUgRnVuY3Rpb25VcmxcbiAgICovXG4gIHJlYWRvbmx5IHVybDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBmdW5jdGlvbiB0aGlzIFVSTCByZWZlcnMgdG9cbiAgICpcbiAgICogQGF0dHJpYnV0ZSBGdW5jdGlvbkFyblxuICAgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb25Bcm46IHN0cmluZztcblxuICAvKipcbiAgICogR3JhbnQgdGhlIGdpdmVuIGlkZW50aXR5IHBlcm1pc3Npb25zIHRvIGludm9rZSB0aGlzIExhbWJkYSBGdW5jdGlvbiBVUkxcbiAgICovXG4gIGdyYW50SW52b2tlVXJsKGlkZW50aXR5OiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcbn1cblxuLyoqXG4gKiBPcHRpb25zIHRvIGFkZCBhIHVybCB0byBhIExhbWJkYSBmdW5jdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uVXJsT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBhdXRoZW50aWNhdGlvbiB0aGF0IHlvdXIgZnVuY3Rpb24gVVJMIHVzZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IEZ1bmN0aW9uVXJsQXV0aFR5cGUuQVdTX0lBTVxuICAgKi9cbiAgcmVhZG9ubHkgYXV0aFR5cGU/OiBGdW5jdGlvblVybEF1dGhUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgY3Jvc3Mtb3JpZ2luIHJlc291cmNlIHNoYXJpbmcgKENPUlMpIHNldHRpbmdzIGZvciB5b3VyIGZ1bmN0aW9uIFVSTC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBDT1JTIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICByZWFkb25seSBjb3JzPzogRnVuY3Rpb25VcmxDb3JzT3B0aW9ucztcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgaW52b2NhdGlvbiBtb2RlIHRoYXQgeW91ciBMYW1iZGEgZnVuY3Rpb24gdXNlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgSW52b2tlTW9kZS5CVUZGRVJFRFxuICAgKi9cbiAgcmVhZG9ubHkgaW52b2tlTW9kZT86IEludm9rZU1vZGU7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYSBGdW5jdGlvblVybFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uVXJsUHJvcHMgZXh0ZW5kcyBGdW5jdGlvblVybE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIHRvIHdoaWNoIHRoaXMgdXJsIHJlZmVycy5cbiAgICogSXQgY2FuIGFsc28gYmUgYW4gYEFsaWFzYCBidXQgbm90IGEgYFZlcnNpb25gLlxuICAgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb246IElGdW5jdGlvbjtcbn1cblxuLyoqXG4gKiBEZWZpbmVzIGEgTGFtYmRhIGZ1bmN0aW9uIHVybFxuICpcbiAqIEByZXNvdXJjZSBhd3NfbGFtYmRhX2Z1bmN0aW9uX3VybFxuICovXG5leHBvcnQgY2xhc3MgRnVuY3Rpb25VcmwgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlIGltcGxlbWVudHMgSUZ1bmN0aW9uVXJsIHtcbiAgcHVibGljIHJlYWRvbmx5IGZ1bmN0aW9uVXJsT3V0cHV0czogRnVuY3Rpb25VcmxPdXRwdXRzO1xuICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZnVuY3Rpb25VcmxPdXRwdXRzO1xuICB9XG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogbGFtYmRhRnVuY3Rpb25VcmwuTGFtYmRhRnVuY3Rpb25Vcmw7XG4gIC8qKlxuICAgKiBUaGUgdXJsIG9mIHRoZSBMYW1iZGEgZnVuY3Rpb24uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdXJsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGZ1bmN0aW9uIHRoaXMgVVJMIHJlZmVycyB0b1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGZ1bmN0aW9uQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhdXRoZW50aWNhdGlvbiB0eXBlIHVzZWQgZm9yIHRoaXMgRnVuY3Rpb24gVVJMXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXV0aFR5cGU6IEZ1bmN0aW9uVXJsQXV0aFR5cGU7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBmdW5jdGlvbjogSUZ1bmN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBGdW5jdGlvblVybFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIC8vIElmIHRoZSB0YXJnZXQgZnVuY3Rpb24gaXMgYW4gYWxpYXMsIHRoZW4gaXQgbXVzdCBiZSBjb25maWd1cmVkIHVzaW5nIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uXG4gICAgLy8gQVJOLCBhbmQgdGhlIGFsaWFzIG5hbWUgYXMgYSBxdWFsaWZpZXIuXG4gICAgY29uc3QgeyB0YXJnZXRGdW5jdGlvbiwgYWxpYXMgfSA9IHRoaXMuaW5zdGFuY2VPZkFsaWFzKHByb3BzLmZ1bmN0aW9uKVxuICAgICAgPyB7IHRhcmdldEZ1bmN0aW9uOiBwcm9wcy5mdW5jdGlvbi5sYW1iZGEsIGFsaWFzOiBwcm9wcy5mdW5jdGlvbiB9XG4gICAgICA6IHsgdGFyZ2V0RnVuY3Rpb246IHByb3BzLmZ1bmN0aW9uLCBhbGlhczogdW5kZWZpbmVkIH07XG5cbiAgICB0aGlzLmF1dGhUeXBlID0gcHJvcHMuYXV0aFR5cGUgPz8gRnVuY3Rpb25VcmxBdXRoVHlwZS5BV1NfSUFNO1xuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBsYW1iZGFGdW5jdGlvblVybC5MYW1iZGFGdW5jdGlvblVybCh0aGlzLCBcIlJlc291cmNlXCIsIHtcbiAgICAgIGF1dGhvcml6YXRpb25UeXBlOiB0aGlzLmF1dGhUeXBlLFxuICAgICAgY29yczogcHJvcHMuY29ycyA/IHRoaXMucmVuZGVyQ29ycyhwcm9wcy5jb3JzKSA6IHVuZGVmaW5lZCxcbiAgICAgIGludm9rZU1vZGU6IHByb3BzLmludm9rZU1vZGUsXG4gICAgICBmdW5jdGlvbk5hbWU6IHRhcmdldEZ1bmN0aW9uLmZ1bmN0aW9uQXJuLCAvLyBUaGUgbmFtZSAob3IgQVJOKSBvZiB0aGUgTGFtYmRhIGZ1bmN0aW9uLlxuICAgICAgcXVhbGlmaWVyOiBhbGlhcz8uYWxpYXNOYW1lLFxuICAgIH0pO1xuICAgIC8vIFRoZSBhbGlhc05hbWUgaXMgYSByZXF1aXJlZCBwaHlzaWNhbCBuYW1lLCBzbyB1c2luZyBpdCBkb2VzIG5vdCBpbXBseSBhIGRlcGVuZGVuY3ksIHNvIHdlXG4gICAgLy8gbXVzdCBcIm1hbnVhbGx5XCIgcmVnaXN0ZXIgdGhlIGRlcGVuZGVuY3ksIG9yIGVsc2UgVEYgbWF5IGF0dGVtcHQgdG8gdXNlIGJlZm9yZSBpdCBleGlzdHMuXG4gICAgaWYgKGFsaWFzPy5ub2RlLmRlZmF1bHRDaGlsZCAhPSBudWxsKSB7XG4gICAgICB0aGlzLnJlc291cmNlLm5vZGUuYWRkRGVwZW5kZW5jeShhbGlhcy5ub2RlLmRlZmF1bHRDaGlsZCk7XG4gICAgfVxuXG4gICAgdGhpcy51cmwgPSB0aGlzLnJlc291cmNlLmZ1bmN0aW9uVXJsO1xuICAgIHRoaXMuZnVuY3Rpb25Bcm4gPSB0aGlzLnJlc291cmNlLmZ1bmN0aW9uQXJuO1xuICAgIHRoaXMuZnVuY3Rpb24gPSBwcm9wcy5mdW5jdGlvbjtcblxuICAgIGlmIChwcm9wcy5hdXRoVHlwZSA9PT0gRnVuY3Rpb25VcmxBdXRoVHlwZS5OT05FKSB7XG4gICAgICBwcm9wcy5mdW5jdGlvbi5hZGRQZXJtaXNzaW9uKFwiaW52b2tlLWZ1bmN0aW9uLXVybFwiLCB7XG4gICAgICAgIHByaW5jaXBhbDogbmV3IGlhbS5BbnlQcmluY2lwYWwoKSxcbiAgICAgICAgYWN0aW9uOiBcImxhbWJkYTpJbnZva2VGdW5jdGlvblVybFwiLFxuICAgICAgICBmdW5jdGlvblVybEF1dGhUeXBlOiBwcm9wcy5hdXRoVHlwZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmZ1bmN0aW9uVXJsT3V0cHV0cyA9IHtcbiAgICAgIHVybDogdGhpcy51cmwsXG4gICAgICBmdW5jdGlvbkFybjogdGhpcy5mdW5jdGlvbkFybixcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGdyYW50SW52b2tlVXJsKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5mdW5jdGlvbi5ncmFudEludm9rZVVybChncmFudGVlKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5zdGFuY2VPZkFsaWFzKGZuOiBJRnVuY3Rpb24pOiBmbiBpcyBJQWxpYXMge1xuICAgIHJldHVybiBcImFsaWFzTmFtZVwiIGluIGZuO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJDb3JzKFxuICAgIGNvcnM6IEZ1bmN0aW9uVXJsQ29yc09wdGlvbnMsXG4gICk6IGxhbWJkYUZ1bmN0aW9uVXJsLkxhbWJkYUZ1bmN0aW9uVXJsQ29ycyB7XG4gICAgaWYgKFxuICAgICAgY29ycy5tYXhBZ2UgJiZcbiAgICAgICFjb3JzLm1heEFnZS5pc1VucmVzb2x2ZWQoKSAmJlxuICAgICAgY29ycy5tYXhBZ2UudG9TZWNvbmRzKCkgPiA4NjQwMFxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgRnVuY3Rpb25VcmwgQ09SUyBtYXhBZ2Ugc2hvdWxkIGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byA4NjQwMCBzZWNzIChnb3QgJHtjb3JzLm1heEFnZS50b1NlY29uZHMoKX0pYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFsbG93Q3JlZGVudGlhbHM6IGNvcnMuYWxsb3dDcmVkZW50aWFscyxcbiAgICAgIGFsbG93SGVhZGVyczogY29ycy5hbGxvd2VkSGVhZGVycyxcbiAgICAgIGFsbG93TWV0aG9kczogY29ycy5hbGxvd2VkTWV0aG9kcyA/PyBbSHR0cE1ldGhvZC5BTExdLFxuICAgICAgYWxsb3dPcmlnaW5zOiBjb3JzLmFsbG93ZWRPcmlnaW5zLFxuICAgICAgZXhwb3NlSGVhZGVyczogY29ycy5leHBvc2VkSGVhZGVycyxcbiAgICAgIG1heEFnZTogY29ycy5tYXhBZ2U/LnRvU2Vjb25kcygpLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { IResolvable } from '
|
|
2
|
-
import type { securityGroup } from '@
|
|
1
|
+
import type { IResolvable } from 'cdktn';
|
|
2
|
+
import type { securityGroup } from '@cdktn/provider-aws';
|
|
3
3
|
/**
|
|
4
4
|
* Config for network connectivity to AWS resources in a VPC, specify a list
|
|
5
5
|
* of security groups and subnets in the VPC.
|
|
@@ -9,17 +9,17 @@ import type { securityGroup } from '@cdktf/provider-aws';
|
|
|
9
9
|
*/
|
|
10
10
|
export interface VpcConfig {
|
|
11
11
|
/**
|
|
12
|
-
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.
|
|
12
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.52.0/docs/resources/lambda_function#ipv6_allowed_for_dual_stack LambdaFunction#ipv6_allowed_for_dual_stack}.
|
|
13
13
|
* @stability stable
|
|
14
14
|
*/
|
|
15
15
|
readonly ipv6AllowedForDualStack?: boolean | IResolvable;
|
|
16
16
|
/**
|
|
17
|
-
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.
|
|
17
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.52.0/docs/resources/lambda_function#subnet_ids LambdaFunction#subnet_ids}.
|
|
18
18
|
* @stability stable
|
|
19
19
|
*/
|
|
20
20
|
readonly subnetIds: Array<string>;
|
|
21
21
|
/**
|
|
22
|
-
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.
|
|
22
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.52.0/docs/resources/lambda_function#security_group_ids LambdaFunction#security_group_ids}.
|
|
23
23
|
* @default created
|
|
24
24
|
* @stability stable
|
|
25
25
|
*/
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24tdnBjLWNvbmZpZy5nZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2NvbXB1dGUvZnVuY3Rpb24tdnBjLWNvbmZpZy5nZW5lcmF0ZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8vIH5+
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24tdnBjLWNvbmZpZy5nZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2NvbXB1dGUvZnVuY3Rpb24tdnBjLWNvbmZpZy5nZW5lcmF0ZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8vIH5+IEdlbmVyYXRlZCBieSBwcm9qZW4uIFRvIG1vZGlmeSwgZWRpdCAucHJvamVucmMudHMgYW5kIHJ1biBcIm5weCBwcm9qZW5cIi5cbmltcG9ydCB0eXBlIHsgSVJlc29sdmFibGUgfSBmcm9tICdjZGt0bic7XG5pbXBvcnQgdHlwZSB7IHNlY3VyaXR5R3JvdXAgfSBmcm9tICdAY2RrdG4vcHJvdmlkZXItYXdzJztcblxuLyoqXG4gKiBDb25maWcgZm9yIG5ldHdvcmsgY29ubmVjdGl2aXR5IHRvIEFXUyByZXNvdXJjZXMgaW4gYSBWUEMsIHNwZWNpZnkgYSBsaXN0XG4gKiBvZiBzZWN1cml0eSBncm91cHMgYW5kIHN1Ym5ldHMgaW4gdGhlIFZQQy5cbiAqIFdoZW4geW91IGNvbm5lY3QgYSBmdW5jdGlvbiB0byBhIFZQQywgaXQgY2FuIG9ubHkgYWNjZXNzIHJlc291cmNlcyBhbmQgdGhlIGludGVybmV0IHRocm91Z2ggdGhhdCBWUEMuXG4gKlxuICogU2VlIFtWUEMgU2V0dGluZ3NdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sYW1iZGEvbGF0ZXN0L2RnL2NvbmZpZ3VyYXRpb24tdnBjLmh0bWwpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZwY0NvbmZpZyB7XG4gIC8qKlxuICAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXdzLzYuNTIuMC9kb2NzL3Jlc291cmNlcy9sYW1iZGFfZnVuY3Rpb24jaXB2Nl9hbGxvd2VkX2Zvcl9kdWFsX3N0YWNrIExhbWJkYUZ1bmN0aW9uI2lwdjZfYWxsb3dlZF9mb3JfZHVhbF9zdGFja30uXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBpcHY2QWxsb3dlZEZvckR1YWxTdGFjaz86IGJvb2xlYW4gfCBJUmVzb2x2YWJsZTtcbiAgLyoqXG4gICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9hd3MvNi41Mi4wL2RvY3MvcmVzb3VyY2VzL2xhbWJkYV9mdW5jdGlvbiNzdWJuZXRfaWRzIExhbWJkYUZ1bmN0aW9uI3N1Ym5ldF9pZHN9LlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0SWRzOiBBcnJheTxzdHJpbmc+O1xuICAvKipcbiAgICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvaGFzaGljb3JwL2F3cy82LjUyLjAvZG9jcy9yZXNvdXJjZXMvbGFtYmRhX2Z1bmN0aW9uI3NlY3VyaXR5X2dyb3VwX2lkcyBMYW1iZGFGdW5jdGlvbiNzZWN1cml0eV9ncm91cF9pZHN9LlxuICAgKiBAZGVmYXVsdCBjcmVhdGVkXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3VwSWRzPzogQXJyYXk8c3RyaW5nPjtcbiAgLyoqXG4gICAqIEVncmVzcyBydWxlcywgdXNlZCBmb3IgY3JlYXRlZCBzZWN1cml0eUdyb3VwIGlmIGBzZWN1cml0eUdyb3VwSWRzYCBhcmUgbm90IHByb3ZpZGVkXG4gICAqIEBkZWZhdWx0IGVncmVzcyB3b3JsZFxuICAgKi9cbiAgcmVhZG9ubHkgZWdyZXNzPzogQXJyYXk8c2VjdXJpdHlHcm91cC5TZWN1cml0eUdyb3VwRWdyZXNzPjtcbiAgLyoqXG4gICAqIFRoZSBWUEMgSUQsIHJlcXVpcmVkIGlmIGBzZWN1cml0eUdyb3VwSWRzYCBhcmUgbm90IHByb3ZpZGVkXG4gICAqL1xuICByZWFkb25seSB2cGNJZD86IHN0cmluZztcbn1cbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { lambdaFunction, cloudwatchLogGroup, securityGroup, lambdaEventSourceMapping } from "@
|
|
2
|
-
import { IResolvable } from "
|
|
1
|
+
import { lambdaFunction, cloudwatchLogGroup, securityGroup, lambdaEventSourceMapping } from "@cdktn/provider-aws";
|
|
2
|
+
import { IResolvable } from "cdktn";
|
|
3
3
|
import { Construct } from "constructs";
|
|
4
4
|
import { RetentionDays } from "../log-retention";
|
|
5
5
|
import { Architecture } from "./architecture";
|