Files
2026-05-06 18:55:16 -05:00

2 lines
312 KiB
JavaScript

"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.CfnVirtualService=exports.CfnVirtualRouter=exports.CfnVirtualNode=exports.CfnVirtualGateway=exports.CfnRoute=exports.CfnMesh=exports.CfnGatewayRoute=void 0;var jsiiDeprecationWarnings=()=>{var tmp=require("../../.warnings.jsii.js");return jsiiDeprecationWarnings=()=>tmp,tmp};const JSII_RTTI_SYMBOL_1=Symbol.for("jsii.rtti");var cdk=()=>{var tmp=require("../../core/lib");return cdk=()=>tmp,tmp},cfn_parse=()=>{var tmp=require("../../core/lib/helpers-internal");return cfn_parse=()=>tmp,tmp},cdk_errors=()=>{var tmp=require("../../core/lib/errors");return cdk_errors=()=>tmp,tmp};class CfnGatewayRoute extends cdk().CfnResource{static[JSII_RTTI_SYMBOL_1]={fqn:"aws-cdk-lib.aws_appmesh.CfnGatewayRoute",version:"2.252.0"};static CFN_RESOURCE_TYPE_NAME="AWS::AppMesh::GatewayRoute";static _fromCloudFormation(scope,id,resourceAttributes,options){resourceAttributes=resourceAttributes||{};const resourceProperties=options.parser.parseValue(resourceAttributes.Properties),propsResult=CfnGatewayRoutePropsFromCloudFormation(resourceProperties);if(cdk().isResolvableObject(propsResult.value))throw new(cdk_errors()).ValidationError(cfn_parse().lit`UnexpectedIResolvable`,"Unexpected IResolvable",scope);const ret=new CfnGatewayRoute(scope,id,propsResult.value);for(const[propKey,propVal]of Object.entries(propsResult.extraProperties))ret.addPropertyOverride(propKey,propVal);return options.parser.handleAttributes(ret,resourceAttributes,id),ret}static isCfnGatewayRoute(x){return cdk().CfnResource.isCfnResource(x)&&x.cfnResourceType===CfnGatewayRoute.CFN_RESOURCE_TYPE_NAME}static arnForGatewayRoute(resource){try{jsiiDeprecationWarnings().aws_cdk_lib_interfaces_aws_appmesh_IGatewayRouteRef(resource)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.arnForGatewayRoute),error}return resource.gatewayRouteRef.gatewayRouteArn}_gatewayRouteName;_meshName;_meshOwner;_spec;tags;_tagsRaw;_virtualGatewayName;cfnPropertyNames={gatewayRouteName:"GatewayRouteName",meshName:"MeshName",meshOwner:"MeshOwner",spec:"Spec",tags:"Tags",virtualGatewayName:"VirtualGatewayName"};constructor(scope,id,props){super(scope,id,{type:CfnGatewayRoute.CFN_RESOURCE_TYPE_NAME,properties:props});try{jsiiDeprecationWarnings().aws_cdk_lib_aws_appmesh_CfnGatewayRouteProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,CfnGatewayRoute),error}cdk().requireProperty(props,"meshName",this),cdk().requireProperty(props,"spec",this),cdk().requireProperty(props,"virtualGatewayName",this),this._gatewayRouteName=props.gatewayRouteName,this._meshName=props.meshName,this._meshOwner=props.meshOwner,this._spec=props.spec,this.tags=new(cdk()).TagManager(cdk().TagType.STANDARD,"AWS::AppMesh::GatewayRoute",props.tags,{tagPropertyName:"tags"}),this._tagsRaw=props.tags,this._virtualGatewayName=props.virtualGatewayName}get gatewayRouteRef(){return{gatewayRouteArn:this.ref}}get gatewayRouteName(){return this._gatewayRouteName}set gatewayRouteName(value){cdk().traceProperty(this.node,"GatewayRouteName"),this._gatewayRouteName=value}get meshName(){return this._meshName}set meshName(value){cdk().traceProperty(this.node,"MeshName"),this._meshName=value}get meshOwner(){return this._meshOwner}set meshOwner(value){cdk().traceProperty(this.node,"MeshOwner"),this._meshOwner=value}get spec(){return this._spec}set spec(value){cdk().traceProperty(this.node,"Spec"),this._spec=value}get tagsRaw(){return this._tagsRaw}set tagsRaw(value){cdk().traceProperty(this.node,"Tags"),this._tagsRaw=value}get virtualGatewayName(){return this._virtualGatewayName}set virtualGatewayName(value){cdk().traceProperty(this.node,"VirtualGatewayName"),this._virtualGatewayName=value}get attrArn(){return cdk().Token.asString(this.getAtt("Arn",cdk().ResolutionTypeHint.STRING))}get attrGatewayRouteName(){return cdk().Token.asString(this.getAtt("GatewayRouteName",cdk().ResolutionTypeHint.STRING))}get attrId(){return cdk().Token.asString(this.getAtt("Id",cdk().ResolutionTypeHint.STRING))}get attrMeshName(){return cdk().Token.asString(this.getAtt("MeshName",cdk().ResolutionTypeHint.STRING))}get attrMeshOwner(){return cdk().Token.asString(this.getAtt("MeshOwner",cdk().ResolutionTypeHint.STRING))}get attrResourceOwner(){return cdk().Token.asString(this.getAtt("ResourceOwner",cdk().ResolutionTypeHint.STRING))}get attrUid(){return cdk().Token.asString(this.getAtt("Uid",cdk().ResolutionTypeHint.STRING))}get attrVirtualGatewayName(){return cdk().Token.asString(this.getAtt("VirtualGatewayName",cdk().ResolutionTypeHint.STRING))}get cfnProperties(){return{gatewayRouteName:this._gatewayRouteName,meshName:this._meshName,meshOwner:this._meshOwner,spec:this._spec,tags:this.tags.renderTags(),virtualGatewayName:this._virtualGatewayName}}inspect(inspector){try{jsiiDeprecationWarnings().aws_cdk_lib_TreeInspector(inspector)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.inspect),error}inspector.addAttribute("aws:cdk:cloudformation:type",CfnGatewayRoute.CFN_RESOURCE_TYPE_NAME),inspector.addAttribute("aws:cdk:cloudformation:logicalId",this._synthesizeLogicalId()),inspector.addAttribute("aws:cdk:cloudformation:props",this.cfnProperties)}renderProperties(props){return convertCfnGatewayRoutePropsToCloudFormation(props)}}exports.CfnGatewayRoute=CfnGatewayRoute;function CfnGatewayRouteGatewayRouteVirtualServicePropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("virtualServiceName",cdk().requiredValidator)(properties.virtualServiceName)),errors.collect(cdk().propertyValidator("virtualServiceName",cdk().validateString)(properties.virtualServiceName)),errors.wrap('supplied properties not correct for "GatewayRouteVirtualServiceProperty"')}function convertCfnGatewayRouteGatewayRouteVirtualServicePropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnGatewayRouteGatewayRouteVirtualServicePropertyValidator(properties).assertSuccess(),{VirtualServiceName:cdk().stringToCloudFormation(properties.virtualServiceName)}):properties}function CfnGatewayRouteGatewayRouteVirtualServicePropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("virtualServiceName","VirtualServiceName",properties.VirtualServiceName!=null?cfn_parse().FromCloudFormation.getString(properties.VirtualServiceName):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnGatewayRouteGatewayRouteTargetPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("port",cdk().validateNumber)(properties.port)),errors.collect(cdk().propertyValidator("virtualService",cdk().requiredValidator)(properties.virtualService)),errors.collect(cdk().propertyValidator("virtualService",CfnGatewayRouteGatewayRouteVirtualServicePropertyValidator)(properties.virtualService)),errors.wrap('supplied properties not correct for "GatewayRouteTargetProperty"')}function convertCfnGatewayRouteGatewayRouteTargetPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnGatewayRouteGatewayRouteTargetPropertyValidator(properties).assertSuccess(),{Port:cdk().numberToCloudFormation(properties.port),VirtualService:convertCfnGatewayRouteGatewayRouteVirtualServicePropertyToCloudFormation(properties.virtualService)}):properties}function CfnGatewayRouteGatewayRouteTargetPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("port","Port",properties.Port!=null?cfn_parse().FromCloudFormation.getNumber(properties.Port):void 0),ret.addPropertyResult("virtualService","VirtualService",properties.VirtualService!=null?CfnGatewayRouteGatewayRouteVirtualServicePropertyFromCloudFormation(properties.VirtualService):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnGatewayRouteHttpGatewayRoutePathRewritePropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("exact",cdk().validateString)(properties.exact)),errors.wrap('supplied properties not correct for "HttpGatewayRoutePathRewriteProperty"')}function convertCfnGatewayRouteHttpGatewayRoutePathRewritePropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnGatewayRouteHttpGatewayRoutePathRewritePropertyValidator(properties).assertSuccess(),{Exact:cdk().stringToCloudFormation(properties.exact)}):properties}function CfnGatewayRouteHttpGatewayRoutePathRewritePropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("exact","Exact",properties.Exact!=null?cfn_parse().FromCloudFormation.getString(properties.Exact):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnGatewayRouteGatewayRouteHostnameRewritePropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("defaultTargetHostname",cdk().validateString)(properties.defaultTargetHostname)),errors.wrap('supplied properties not correct for "GatewayRouteHostnameRewriteProperty"')}function convertCfnGatewayRouteGatewayRouteHostnameRewritePropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnGatewayRouteGatewayRouteHostnameRewritePropertyValidator(properties).assertSuccess(),{DefaultTargetHostname:cdk().stringToCloudFormation(properties.defaultTargetHostname)}):properties}function CfnGatewayRouteGatewayRouteHostnameRewritePropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("defaultTargetHostname","DefaultTargetHostname",properties.DefaultTargetHostname!=null?cfn_parse().FromCloudFormation.getString(properties.DefaultTargetHostname):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnGatewayRouteHttpGatewayRoutePrefixRewritePropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("defaultPrefix",cdk().validateString)(properties.defaultPrefix)),errors.collect(cdk().propertyValidator("value",cdk().validateString)(properties.value)),errors.wrap('supplied properties not correct for "HttpGatewayRoutePrefixRewriteProperty"')}function convertCfnGatewayRouteHttpGatewayRoutePrefixRewritePropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnGatewayRouteHttpGatewayRoutePrefixRewritePropertyValidator(properties).assertSuccess(),{DefaultPrefix:cdk().stringToCloudFormation(properties.defaultPrefix),Value:cdk().stringToCloudFormation(properties.value)}):properties}function CfnGatewayRouteHttpGatewayRoutePrefixRewritePropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("defaultPrefix","DefaultPrefix",properties.DefaultPrefix!=null?cfn_parse().FromCloudFormation.getString(properties.DefaultPrefix):void 0),ret.addPropertyResult("value","Value",properties.Value!=null?cfn_parse().FromCloudFormation.getString(properties.Value):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnGatewayRouteHttpGatewayRouteRewritePropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("hostname",CfnGatewayRouteGatewayRouteHostnameRewritePropertyValidator)(properties.hostname)),errors.collect(cdk().propertyValidator("path",CfnGatewayRouteHttpGatewayRoutePathRewritePropertyValidator)(properties.path)),errors.collect(cdk().propertyValidator("prefix",CfnGatewayRouteHttpGatewayRoutePrefixRewritePropertyValidator)(properties.prefix)),errors.wrap('supplied properties not correct for "HttpGatewayRouteRewriteProperty"')}function convertCfnGatewayRouteHttpGatewayRouteRewritePropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnGatewayRouteHttpGatewayRouteRewritePropertyValidator(properties).assertSuccess(),{Hostname:convertCfnGatewayRouteGatewayRouteHostnameRewritePropertyToCloudFormation(properties.hostname),Path:convertCfnGatewayRouteHttpGatewayRoutePathRewritePropertyToCloudFormation(properties.path),Prefix:convertCfnGatewayRouteHttpGatewayRoutePrefixRewritePropertyToCloudFormation(properties.prefix)}):properties}function CfnGatewayRouteHttpGatewayRouteRewritePropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("hostname","Hostname",properties.Hostname!=null?CfnGatewayRouteGatewayRouteHostnameRewritePropertyFromCloudFormation(properties.Hostname):void 0),ret.addPropertyResult("path","Path",properties.Path!=null?CfnGatewayRouteHttpGatewayRoutePathRewritePropertyFromCloudFormation(properties.Path):void 0),ret.addPropertyResult("prefix","Prefix",properties.Prefix!=null?CfnGatewayRouteHttpGatewayRoutePrefixRewritePropertyFromCloudFormation(properties.Prefix):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnGatewayRouteHttpGatewayRouteActionPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("rewrite",CfnGatewayRouteHttpGatewayRouteRewritePropertyValidator)(properties.rewrite)),errors.collect(cdk().propertyValidator("target",cdk().requiredValidator)(properties.target)),errors.collect(cdk().propertyValidator("target",CfnGatewayRouteGatewayRouteTargetPropertyValidator)(properties.target)),errors.wrap('supplied properties not correct for "HttpGatewayRouteActionProperty"')}function convertCfnGatewayRouteHttpGatewayRouteActionPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnGatewayRouteHttpGatewayRouteActionPropertyValidator(properties).assertSuccess(),{Rewrite:convertCfnGatewayRouteHttpGatewayRouteRewritePropertyToCloudFormation(properties.rewrite),Target:convertCfnGatewayRouteGatewayRouteTargetPropertyToCloudFormation(properties.target)}):properties}function CfnGatewayRouteHttpGatewayRouteActionPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("rewrite","Rewrite",properties.Rewrite!=null?CfnGatewayRouteHttpGatewayRouteRewritePropertyFromCloudFormation(properties.Rewrite):void 0),ret.addPropertyResult("target","Target",properties.Target!=null?CfnGatewayRouteGatewayRouteTargetPropertyFromCloudFormation(properties.Target):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnGatewayRouteHttpPathMatchPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("exact",cdk().validateString)(properties.exact)),errors.collect(cdk().propertyValidator("regex",cdk().validateString)(properties.regex)),errors.wrap('supplied properties not correct for "HttpPathMatchProperty"')}function convertCfnGatewayRouteHttpPathMatchPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnGatewayRouteHttpPathMatchPropertyValidator(properties).assertSuccess(),{Exact:cdk().stringToCloudFormation(properties.exact),Regex:cdk().stringToCloudFormation(properties.regex)}):properties}function CfnGatewayRouteHttpPathMatchPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("exact","Exact",properties.Exact!=null?cfn_parse().FromCloudFormation.getString(properties.Exact):void 0),ret.addPropertyResult("regex","Regex",properties.Regex!=null?cfn_parse().FromCloudFormation.getString(properties.Regex):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnGatewayRouteGatewayRouteRangeMatchPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("end",cdk().requiredValidator)(properties.end)),errors.collect(cdk().propertyValidator("end",cdk().validateNumber)(properties.end)),errors.collect(cdk().propertyValidator("start",cdk().requiredValidator)(properties.start)),errors.collect(cdk().propertyValidator("start",cdk().validateNumber)(properties.start)),errors.wrap('supplied properties not correct for "GatewayRouteRangeMatchProperty"')}function convertCfnGatewayRouteGatewayRouteRangeMatchPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnGatewayRouteGatewayRouteRangeMatchPropertyValidator(properties).assertSuccess(),{End:cdk().numberToCloudFormation(properties.end),Start:cdk().numberToCloudFormation(properties.start)}):properties}function CfnGatewayRouteGatewayRouteRangeMatchPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("end","End",properties.End!=null?cfn_parse().FromCloudFormation.getNumber(properties.End):void 0),ret.addPropertyResult("start","Start",properties.Start!=null?cfn_parse().FromCloudFormation.getNumber(properties.Start):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnGatewayRouteHttpGatewayRouteHeaderMatchPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("exact",cdk().validateString)(properties.exact)),errors.collect(cdk().propertyValidator("prefix",cdk().validateString)(properties.prefix)),errors.collect(cdk().propertyValidator("range",CfnGatewayRouteGatewayRouteRangeMatchPropertyValidator)(properties.range)),errors.collect(cdk().propertyValidator("regex",cdk().validateString)(properties.regex)),errors.collect(cdk().propertyValidator("suffix",cdk().validateString)(properties.suffix)),errors.wrap('supplied properties not correct for "HttpGatewayRouteHeaderMatchProperty"')}function convertCfnGatewayRouteHttpGatewayRouteHeaderMatchPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnGatewayRouteHttpGatewayRouteHeaderMatchPropertyValidator(properties).assertSuccess(),{Exact:cdk().stringToCloudFormation(properties.exact),Prefix:cdk().stringToCloudFormation(properties.prefix),Range:convertCfnGatewayRouteGatewayRouteRangeMatchPropertyToCloudFormation(properties.range),Regex:cdk().stringToCloudFormation(properties.regex),Suffix:cdk().stringToCloudFormation(properties.suffix)}):properties}function CfnGatewayRouteHttpGatewayRouteHeaderMatchPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("exact","Exact",properties.Exact!=null?cfn_parse().FromCloudFormation.getString(properties.Exact):void 0),ret.addPropertyResult("prefix","Prefix",properties.Prefix!=null?cfn_parse().FromCloudFormation.getString(properties.Prefix):void 0),ret.addPropertyResult("range","Range",properties.Range!=null?CfnGatewayRouteGatewayRouteRangeMatchPropertyFromCloudFormation(properties.Range):void 0),ret.addPropertyResult("regex","Regex",properties.Regex!=null?cfn_parse().FromCloudFormation.getString(properties.Regex):void 0),ret.addPropertyResult("suffix","Suffix",properties.Suffix!=null?cfn_parse().FromCloudFormation.getString(properties.Suffix):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnGatewayRouteHttpGatewayRouteHeaderPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("invert",cdk().validateBoolean)(properties.invert)),errors.collect(cdk().propertyValidator("match",CfnGatewayRouteHttpGatewayRouteHeaderMatchPropertyValidator)(properties.match)),errors.collect(cdk().propertyValidator("name",cdk().requiredValidator)(properties.name)),errors.collect(cdk().propertyValidator("name",cdk().validateString)(properties.name)),errors.wrap('supplied properties not correct for "HttpGatewayRouteHeaderProperty"')}function convertCfnGatewayRouteHttpGatewayRouteHeaderPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnGatewayRouteHttpGatewayRouteHeaderPropertyValidator(properties).assertSuccess(),{Invert:cdk().booleanToCloudFormation(properties.invert),Match:convertCfnGatewayRouteHttpGatewayRouteHeaderMatchPropertyToCloudFormation(properties.match),Name:cdk().stringToCloudFormation(properties.name)}):properties}function CfnGatewayRouteHttpGatewayRouteHeaderPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("invert","Invert",properties.Invert!=null?cfn_parse().FromCloudFormation.getBoolean(properties.Invert):void 0),ret.addPropertyResult("match","Match",properties.Match!=null?CfnGatewayRouteHttpGatewayRouteHeaderMatchPropertyFromCloudFormation(properties.Match):void 0),ret.addPropertyResult("name","Name",properties.Name!=null?cfn_parse().FromCloudFormation.getString(properties.Name):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnGatewayRouteGatewayRouteHostnameMatchPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("exact",cdk().validateString)(properties.exact)),errors.collect(cdk().propertyValidator("suffix",cdk().validateString)(properties.suffix)),errors.wrap('supplied properties not correct for "GatewayRouteHostnameMatchProperty"')}function convertCfnGatewayRouteGatewayRouteHostnameMatchPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnGatewayRouteGatewayRouteHostnameMatchPropertyValidator(properties).assertSuccess(),{Exact:cdk().stringToCloudFormation(properties.exact),Suffix:cdk().stringToCloudFormation(properties.suffix)}):properties}function CfnGatewayRouteGatewayRouteHostnameMatchPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("exact","Exact",properties.Exact!=null?cfn_parse().FromCloudFormation.getString(properties.Exact):void 0),ret.addPropertyResult("suffix","Suffix",properties.Suffix!=null?cfn_parse().FromCloudFormation.getString(properties.Suffix):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnGatewayRouteHttpQueryParameterMatchPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("exact",cdk().validateString)(properties.exact)),errors.wrap('supplied properties not correct for "HttpQueryParameterMatchProperty"')}function convertCfnGatewayRouteHttpQueryParameterMatchPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnGatewayRouteHttpQueryParameterMatchPropertyValidator(properties).assertSuccess(),{Exact:cdk().stringToCloudFormation(properties.exact)}):properties}function CfnGatewayRouteHttpQueryParameterMatchPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("exact","Exact",properties.Exact!=null?cfn_parse().FromCloudFormation.getString(properties.Exact):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnGatewayRouteQueryParameterPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("match",CfnGatewayRouteHttpQueryParameterMatchPropertyValidator)(properties.match)),errors.collect(cdk().propertyValidator("name",cdk().requiredValidator)(properties.name)),errors.collect(cdk().propertyValidator("name",cdk().validateString)(properties.name)),errors.wrap('supplied properties not correct for "QueryParameterProperty"')}function convertCfnGatewayRouteQueryParameterPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnGatewayRouteQueryParameterPropertyValidator(properties).assertSuccess(),{Match:convertCfnGatewayRouteHttpQueryParameterMatchPropertyToCloudFormation(properties.match),Name:cdk().stringToCloudFormation(properties.name)}):properties}function CfnGatewayRouteQueryParameterPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("match","Match",properties.Match!=null?CfnGatewayRouteHttpQueryParameterMatchPropertyFromCloudFormation(properties.Match):void 0),ret.addPropertyResult("name","Name",properties.Name!=null?cfn_parse().FromCloudFormation.getString(properties.Name):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnGatewayRouteHttpGatewayRouteMatchPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("headers",cdk().listValidator(CfnGatewayRouteHttpGatewayRouteHeaderPropertyValidator))(properties.headers)),errors.collect(cdk().propertyValidator("hostname",CfnGatewayRouteGatewayRouteHostnameMatchPropertyValidator)(properties.hostname)),errors.collect(cdk().propertyValidator("method",cdk().validateString)(properties.method)),errors.collect(cdk().propertyValidator("path",CfnGatewayRouteHttpPathMatchPropertyValidator)(properties.path)),errors.collect(cdk().propertyValidator("port",cdk().validateNumber)(properties.port)),errors.collect(cdk().propertyValidator("prefix",cdk().validateString)(properties.prefix)),errors.collect(cdk().propertyValidator("queryParameters",cdk().listValidator(CfnGatewayRouteQueryParameterPropertyValidator))(properties.queryParameters)),errors.wrap('supplied properties not correct for "HttpGatewayRouteMatchProperty"')}function convertCfnGatewayRouteHttpGatewayRouteMatchPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnGatewayRouteHttpGatewayRouteMatchPropertyValidator(properties).assertSuccess(),{Headers:cdk().listMapper(convertCfnGatewayRouteHttpGatewayRouteHeaderPropertyToCloudFormation)(properties.headers),Hostname:convertCfnGatewayRouteGatewayRouteHostnameMatchPropertyToCloudFormation(properties.hostname),Method:cdk().stringToCloudFormation(properties.method),Path:convertCfnGatewayRouteHttpPathMatchPropertyToCloudFormation(properties.path),Port:cdk().numberToCloudFormation(properties.port),Prefix:cdk().stringToCloudFormation(properties.prefix),QueryParameters:cdk().listMapper(convertCfnGatewayRouteQueryParameterPropertyToCloudFormation)(properties.queryParameters)}):properties}function CfnGatewayRouteHttpGatewayRouteMatchPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("headers","Headers",properties.Headers!=null?cfn_parse().FromCloudFormation.getArray(CfnGatewayRouteHttpGatewayRouteHeaderPropertyFromCloudFormation)(properties.Headers):void 0),ret.addPropertyResult("hostname","Hostname",properties.Hostname!=null?CfnGatewayRouteGatewayRouteHostnameMatchPropertyFromCloudFormation(properties.Hostname):void 0),ret.addPropertyResult("method","Method",properties.Method!=null?cfn_parse().FromCloudFormation.getString(properties.Method):void 0),ret.addPropertyResult("path","Path",properties.Path!=null?CfnGatewayRouteHttpPathMatchPropertyFromCloudFormation(properties.Path):void 0),ret.addPropertyResult("port","Port",properties.Port!=null?cfn_parse().FromCloudFormation.getNumber(properties.Port):void 0),ret.addPropertyResult("prefix","Prefix",properties.Prefix!=null?cfn_parse().FromCloudFormation.getString(properties.Prefix):void 0),ret.addPropertyResult("queryParameters","QueryParameters",properties.QueryParameters!=null?cfn_parse().FromCloudFormation.getArray(CfnGatewayRouteQueryParameterPropertyFromCloudFormation)(properties.QueryParameters):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnGatewayRouteHttpGatewayRoutePropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("action",cdk().requiredValidator)(properties.action)),errors.collect(cdk().propertyValidator("action",CfnGatewayRouteHttpGatewayRouteActionPropertyValidator)(properties.action)),errors.collect(cdk().propertyValidator("match",cdk().requiredValidator)(properties.match)),errors.collect(cdk().propertyValidator("match",CfnGatewayRouteHttpGatewayRouteMatchPropertyValidator)(properties.match)),errors.wrap('supplied properties not correct for "HttpGatewayRouteProperty"')}function convertCfnGatewayRouteHttpGatewayRoutePropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnGatewayRouteHttpGatewayRoutePropertyValidator(properties).assertSuccess(),{Action:convertCfnGatewayRouteHttpGatewayRouteActionPropertyToCloudFormation(properties.action),Match:convertCfnGatewayRouteHttpGatewayRouteMatchPropertyToCloudFormation(properties.match)}):properties}function CfnGatewayRouteHttpGatewayRoutePropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("action","Action",properties.Action!=null?CfnGatewayRouteHttpGatewayRouteActionPropertyFromCloudFormation(properties.Action):void 0),ret.addPropertyResult("match","Match",properties.Match!=null?CfnGatewayRouteHttpGatewayRouteMatchPropertyFromCloudFormation(properties.Match):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnGatewayRouteGrpcGatewayRouteRewritePropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("hostname",CfnGatewayRouteGatewayRouteHostnameRewritePropertyValidator)(properties.hostname)),errors.wrap('supplied properties not correct for "GrpcGatewayRouteRewriteProperty"')}function convertCfnGatewayRouteGrpcGatewayRouteRewritePropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnGatewayRouteGrpcGatewayRouteRewritePropertyValidator(properties).assertSuccess(),{Hostname:convertCfnGatewayRouteGatewayRouteHostnameRewritePropertyToCloudFormation(properties.hostname)}):properties}function CfnGatewayRouteGrpcGatewayRouteRewritePropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("hostname","Hostname",properties.Hostname!=null?CfnGatewayRouteGatewayRouteHostnameRewritePropertyFromCloudFormation(properties.Hostname):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnGatewayRouteGrpcGatewayRouteActionPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("rewrite",CfnGatewayRouteGrpcGatewayRouteRewritePropertyValidator)(properties.rewrite)),errors.collect(cdk().propertyValidator("target",cdk().requiredValidator)(properties.target)),errors.collect(cdk().propertyValidator("target",CfnGatewayRouteGatewayRouteTargetPropertyValidator)(properties.target)),errors.wrap('supplied properties not correct for "GrpcGatewayRouteActionProperty"')}function convertCfnGatewayRouteGrpcGatewayRouteActionPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnGatewayRouteGrpcGatewayRouteActionPropertyValidator(properties).assertSuccess(),{Rewrite:convertCfnGatewayRouteGrpcGatewayRouteRewritePropertyToCloudFormation(properties.rewrite),Target:convertCfnGatewayRouteGatewayRouteTargetPropertyToCloudFormation(properties.target)}):properties}function CfnGatewayRouteGrpcGatewayRouteActionPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("rewrite","Rewrite",properties.Rewrite!=null?CfnGatewayRouteGrpcGatewayRouteRewritePropertyFromCloudFormation(properties.Rewrite):void 0),ret.addPropertyResult("target","Target",properties.Target!=null?CfnGatewayRouteGatewayRouteTargetPropertyFromCloudFormation(properties.Target):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnGatewayRouteGatewayRouteMetadataMatchPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("exact",cdk().validateString)(properties.exact)),errors.collect(cdk().propertyValidator("prefix",cdk().validateString)(properties.prefix)),errors.collect(cdk().propertyValidator("range",CfnGatewayRouteGatewayRouteRangeMatchPropertyValidator)(properties.range)),errors.collect(cdk().propertyValidator("regex",cdk().validateString)(properties.regex)),errors.collect(cdk().propertyValidator("suffix",cdk().validateString)(properties.suffix)),errors.wrap('supplied properties not correct for "GatewayRouteMetadataMatchProperty"')}function convertCfnGatewayRouteGatewayRouteMetadataMatchPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnGatewayRouteGatewayRouteMetadataMatchPropertyValidator(properties).assertSuccess(),{Exact:cdk().stringToCloudFormation(properties.exact),Prefix:cdk().stringToCloudFormation(properties.prefix),Range:convertCfnGatewayRouteGatewayRouteRangeMatchPropertyToCloudFormation(properties.range),Regex:cdk().stringToCloudFormation(properties.regex),Suffix:cdk().stringToCloudFormation(properties.suffix)}):properties}function CfnGatewayRouteGatewayRouteMetadataMatchPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("exact","Exact",properties.Exact!=null?cfn_parse().FromCloudFormation.getString(properties.Exact):void 0),ret.addPropertyResult("prefix","Prefix",properties.Prefix!=null?cfn_parse().FromCloudFormation.getString(properties.Prefix):void 0),ret.addPropertyResult("range","Range",properties.Range!=null?CfnGatewayRouteGatewayRouteRangeMatchPropertyFromCloudFormation(properties.Range):void 0),ret.addPropertyResult("regex","Regex",properties.Regex!=null?cfn_parse().FromCloudFormation.getString(properties.Regex):void 0),ret.addPropertyResult("suffix","Suffix",properties.Suffix!=null?cfn_parse().FromCloudFormation.getString(properties.Suffix):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnGatewayRouteGrpcGatewayRouteMetadataPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("invert",cdk().validateBoolean)(properties.invert)),errors.collect(cdk().propertyValidator("match",CfnGatewayRouteGatewayRouteMetadataMatchPropertyValidator)(properties.match)),errors.collect(cdk().propertyValidator("name",cdk().requiredValidator)(properties.name)),errors.collect(cdk().propertyValidator("name",cdk().validateString)(properties.name)),errors.wrap('supplied properties not correct for "GrpcGatewayRouteMetadataProperty"')}function convertCfnGatewayRouteGrpcGatewayRouteMetadataPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnGatewayRouteGrpcGatewayRouteMetadataPropertyValidator(properties).assertSuccess(),{Invert:cdk().booleanToCloudFormation(properties.invert),Match:convertCfnGatewayRouteGatewayRouteMetadataMatchPropertyToCloudFormation(properties.match),Name:cdk().stringToCloudFormation(properties.name)}):properties}function CfnGatewayRouteGrpcGatewayRouteMetadataPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("invert","Invert",properties.Invert!=null?cfn_parse().FromCloudFormation.getBoolean(properties.Invert):void 0),ret.addPropertyResult("match","Match",properties.Match!=null?CfnGatewayRouteGatewayRouteMetadataMatchPropertyFromCloudFormation(properties.Match):void 0),ret.addPropertyResult("name","Name",properties.Name!=null?cfn_parse().FromCloudFormation.getString(properties.Name):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnGatewayRouteGrpcGatewayRouteMatchPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("hostname",CfnGatewayRouteGatewayRouteHostnameMatchPropertyValidator)(properties.hostname)),errors.collect(cdk().propertyValidator("metadata",cdk().listValidator(CfnGatewayRouteGrpcGatewayRouteMetadataPropertyValidator))(properties.metadata)),errors.collect(cdk().propertyValidator("port",cdk().validateNumber)(properties.port)),errors.collect(cdk().propertyValidator("serviceName",cdk().validateString)(properties.serviceName)),errors.wrap('supplied properties not correct for "GrpcGatewayRouteMatchProperty"')}function convertCfnGatewayRouteGrpcGatewayRouteMatchPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnGatewayRouteGrpcGatewayRouteMatchPropertyValidator(properties).assertSuccess(),{Hostname:convertCfnGatewayRouteGatewayRouteHostnameMatchPropertyToCloudFormation(properties.hostname),Metadata:cdk().listMapper(convertCfnGatewayRouteGrpcGatewayRouteMetadataPropertyToCloudFormation)(properties.metadata),Port:cdk().numberToCloudFormation(properties.port),ServiceName:cdk().stringToCloudFormation(properties.serviceName)}):properties}function CfnGatewayRouteGrpcGatewayRouteMatchPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("hostname","Hostname",properties.Hostname!=null?CfnGatewayRouteGatewayRouteHostnameMatchPropertyFromCloudFormation(properties.Hostname):void 0),ret.addPropertyResult("metadata","Metadata",properties.Metadata!=null?cfn_parse().FromCloudFormation.getArray(CfnGatewayRouteGrpcGatewayRouteMetadataPropertyFromCloudFormation)(properties.Metadata):void 0),ret.addPropertyResult("port","Port",properties.Port!=null?cfn_parse().FromCloudFormation.getNumber(properties.Port):void 0),ret.addPropertyResult("serviceName","ServiceName",properties.ServiceName!=null?cfn_parse().FromCloudFormation.getString(properties.ServiceName):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnGatewayRouteGrpcGatewayRoutePropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("action",cdk().requiredValidator)(properties.action)),errors.collect(cdk().propertyValidator("action",CfnGatewayRouteGrpcGatewayRouteActionPropertyValidator)(properties.action)),errors.collect(cdk().propertyValidator("match",cdk().requiredValidator)(properties.match)),errors.collect(cdk().propertyValidator("match",CfnGatewayRouteGrpcGatewayRouteMatchPropertyValidator)(properties.match)),errors.wrap('supplied properties not correct for "GrpcGatewayRouteProperty"')}function convertCfnGatewayRouteGrpcGatewayRoutePropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnGatewayRouteGrpcGatewayRoutePropertyValidator(properties).assertSuccess(),{Action:convertCfnGatewayRouteGrpcGatewayRouteActionPropertyToCloudFormation(properties.action),Match:convertCfnGatewayRouteGrpcGatewayRouteMatchPropertyToCloudFormation(properties.match)}):properties}function CfnGatewayRouteGrpcGatewayRoutePropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("action","Action",properties.Action!=null?CfnGatewayRouteGrpcGatewayRouteActionPropertyFromCloudFormation(properties.Action):void 0),ret.addPropertyResult("match","Match",properties.Match!=null?CfnGatewayRouteGrpcGatewayRouteMatchPropertyFromCloudFormation(properties.Match):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnGatewayRouteGatewayRouteSpecPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("grpcRoute",CfnGatewayRouteGrpcGatewayRoutePropertyValidator)(properties.grpcRoute)),errors.collect(cdk().propertyValidator("http2Route",CfnGatewayRouteHttpGatewayRoutePropertyValidator)(properties.http2Route)),errors.collect(cdk().propertyValidator("httpRoute",CfnGatewayRouteHttpGatewayRoutePropertyValidator)(properties.httpRoute)),errors.collect(cdk().propertyValidator("priority",cdk().validateNumber)(properties.priority)),errors.wrap('supplied properties not correct for "GatewayRouteSpecProperty"')}function convertCfnGatewayRouteGatewayRouteSpecPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnGatewayRouteGatewayRouteSpecPropertyValidator(properties).assertSuccess(),{GrpcRoute:convertCfnGatewayRouteGrpcGatewayRoutePropertyToCloudFormation(properties.grpcRoute),Http2Route:convertCfnGatewayRouteHttpGatewayRoutePropertyToCloudFormation(properties.http2Route),HttpRoute:convertCfnGatewayRouteHttpGatewayRoutePropertyToCloudFormation(properties.httpRoute),Priority:cdk().numberToCloudFormation(properties.priority)}):properties}function CfnGatewayRouteGatewayRouteSpecPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("grpcRoute","GrpcRoute",properties.GrpcRoute!=null?CfnGatewayRouteGrpcGatewayRoutePropertyFromCloudFormation(properties.GrpcRoute):void 0),ret.addPropertyResult("http2Route","Http2Route",properties.Http2Route!=null?CfnGatewayRouteHttpGatewayRoutePropertyFromCloudFormation(properties.Http2Route):void 0),ret.addPropertyResult("httpRoute","HttpRoute",properties.HttpRoute!=null?CfnGatewayRouteHttpGatewayRoutePropertyFromCloudFormation(properties.HttpRoute):void 0),ret.addPropertyResult("priority","Priority",properties.Priority!=null?cfn_parse().FromCloudFormation.getNumber(properties.Priority):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnGatewayRoutePropsValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("gatewayRouteName",cdk().validateString)(properties.gatewayRouteName)),errors.collect(cdk().propertyValidator("meshName",cdk().requiredValidator)(properties.meshName)),errors.collect(cdk().propertyValidator("meshName",cdk().validateString)(properties.meshName)),errors.collect(cdk().propertyValidator("meshOwner",cdk().validateString)(properties.meshOwner)),errors.collect(cdk().propertyValidator("spec",cdk().requiredValidator)(properties.spec)),errors.collect(cdk().propertyValidator("spec",CfnGatewayRouteGatewayRouteSpecPropertyValidator)(properties.spec)),errors.collect(cdk().propertyValidator("tags",cdk().listValidator(cdk().validateCfnTag))(properties.tags)),errors.collect(cdk().propertyValidator("virtualGatewayName",cdk().requiredValidator)(properties.virtualGatewayName)),errors.collect(cdk().propertyValidator("virtualGatewayName",cdk().validateString)(properties.virtualGatewayName)),errors.wrap('supplied properties not correct for "CfnGatewayRouteProps"')}function convertCfnGatewayRoutePropsToCloudFormation(properties){return cdk().canInspect(properties)?(CfnGatewayRoutePropsValidator(properties).assertSuccess(),{GatewayRouteName:cdk().stringToCloudFormation(properties.gatewayRouteName),MeshName:cdk().stringToCloudFormation(properties.meshName),MeshOwner:cdk().stringToCloudFormation(properties.meshOwner),Spec:convertCfnGatewayRouteGatewayRouteSpecPropertyToCloudFormation(properties.spec),Tags:cdk().listMapper(cdk().cfnTagToCloudFormation)(properties.tags),VirtualGatewayName:cdk().stringToCloudFormation(properties.virtualGatewayName)}):properties}function CfnGatewayRoutePropsFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("gatewayRouteName","GatewayRouteName",properties.GatewayRouteName!=null?cfn_parse().FromCloudFormation.getString(properties.GatewayRouteName):void 0),ret.addPropertyResult("meshName","MeshName",properties.MeshName!=null?cfn_parse().FromCloudFormation.getString(properties.MeshName):void 0),ret.addPropertyResult("meshOwner","MeshOwner",properties.MeshOwner!=null?cfn_parse().FromCloudFormation.getString(properties.MeshOwner):void 0),ret.addPropertyResult("spec","Spec",properties.Spec!=null?CfnGatewayRouteGatewayRouteSpecPropertyFromCloudFormation(properties.Spec):void 0),ret.addPropertyResult("tags","Tags",properties.Tags!=null?cfn_parse().FromCloudFormation.getArray(cfn_parse().FromCloudFormation.getCfnTag)(properties.Tags):void 0),ret.addPropertyResult("virtualGatewayName","VirtualGatewayName",properties.VirtualGatewayName!=null?cfn_parse().FromCloudFormation.getString(properties.VirtualGatewayName):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}class CfnMesh extends cdk().CfnResource{static[JSII_RTTI_SYMBOL_1]={fqn:"aws-cdk-lib.aws_appmesh.CfnMesh",version:"2.252.0"};static CFN_RESOURCE_TYPE_NAME="AWS::AppMesh::Mesh";static _fromCloudFormation(scope,id,resourceAttributes,options){resourceAttributes=resourceAttributes||{};const resourceProperties=options.parser.parseValue(resourceAttributes.Properties),propsResult=CfnMeshPropsFromCloudFormation(resourceProperties);if(cdk().isResolvableObject(propsResult.value))throw new(cdk_errors()).ValidationError(cfn_parse().lit`UnexpectedIResolvable`,"Unexpected IResolvable",scope);const ret=new CfnMesh(scope,id,propsResult.value);for(const[propKey,propVal]of Object.entries(propsResult.extraProperties))ret.addPropertyOverride(propKey,propVal);return options.parser.handleAttributes(ret,resourceAttributes,id),ret}static isCfnMesh(x){return cdk().CfnResource.isCfnResource(x)&&x.cfnResourceType===CfnMesh.CFN_RESOURCE_TYPE_NAME}static arnForMesh(resource){try{jsiiDeprecationWarnings().aws_cdk_lib_interfaces_aws_appmesh_IMeshRef(resource)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.arnForMesh),error}return resource.meshRef.meshArn}_meshName;_spec;tags;_tagsRaw;cfnPropertyNames={meshName:"MeshName",spec:"Spec",tags:"Tags"};constructor(scope,id,props={}){super(scope,id,{type:CfnMesh.CFN_RESOURCE_TYPE_NAME,properties:props});try{jsiiDeprecationWarnings().aws_cdk_lib_aws_appmesh_CfnMeshProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,CfnMesh),error}this._meshName=props.meshName,this._spec=props.spec,this.tags=new(cdk()).TagManager(cdk().TagType.STANDARD,"AWS::AppMesh::Mesh",props.tags,{tagPropertyName:"tags"}),this._tagsRaw=props.tags}get meshRef(){return{meshArn:this.ref}}get meshName(){return this._meshName}set meshName(value){cdk().traceProperty(this.node,"MeshName"),this._meshName=value}get spec(){return this._spec}set spec(value){cdk().traceProperty(this.node,"Spec"),this._spec=value}get tagsRaw(){return this._tagsRaw}set tagsRaw(value){cdk().traceProperty(this.node,"Tags"),this._tagsRaw=value}get attrArn(){return cdk().Token.asString(this.getAtt("Arn",cdk().ResolutionTypeHint.STRING))}get attrId(){return cdk().Token.asString(this.getAtt("Id",cdk().ResolutionTypeHint.STRING))}get attrMeshName(){return cdk().Token.asString(this.getAtt("MeshName",cdk().ResolutionTypeHint.STRING))}get attrMeshOwner(){return cdk().Token.asString(this.getAtt("MeshOwner",cdk().ResolutionTypeHint.STRING))}get attrResourceOwner(){return cdk().Token.asString(this.getAtt("ResourceOwner",cdk().ResolutionTypeHint.STRING))}get attrUid(){return cdk().Token.asString(this.getAtt("Uid",cdk().ResolutionTypeHint.STRING))}get cfnProperties(){return{meshName:this._meshName,spec:this._spec,tags:this.tags.renderTags()}}inspect(inspector){try{jsiiDeprecationWarnings().aws_cdk_lib_TreeInspector(inspector)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.inspect),error}inspector.addAttribute("aws:cdk:cloudformation:type",CfnMesh.CFN_RESOURCE_TYPE_NAME),inspector.addAttribute("aws:cdk:cloudformation:logicalId",this._synthesizeLogicalId()),inspector.addAttribute("aws:cdk:cloudformation:props",this.cfnProperties)}renderProperties(props){return convertCfnMeshPropsToCloudFormation(props)}}exports.CfnMesh=CfnMesh;function CfnMeshEgressFilterPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("type",cdk().requiredValidator)(properties.type)),errors.collect(cdk().propertyValidator("type",cdk().validateString)(properties.type)),errors.wrap('supplied properties not correct for "EgressFilterProperty"')}function convertCfnMeshEgressFilterPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnMeshEgressFilterPropertyValidator(properties).assertSuccess(),{Type:cdk().stringToCloudFormation(properties.type)}):properties}function CfnMeshEgressFilterPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("type","Type",properties.Type!=null?cfn_parse().FromCloudFormation.getString(properties.Type):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnMeshMeshServiceDiscoveryPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("ipPreference",cdk().validateString)(properties.ipPreference)),errors.wrap('supplied properties not correct for "MeshServiceDiscoveryProperty"')}function convertCfnMeshMeshServiceDiscoveryPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnMeshMeshServiceDiscoveryPropertyValidator(properties).assertSuccess(),{IpPreference:cdk().stringToCloudFormation(properties.ipPreference)}):properties}function CfnMeshMeshServiceDiscoveryPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("ipPreference","IpPreference",properties.IpPreference!=null?cfn_parse().FromCloudFormation.getString(properties.IpPreference):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnMeshMeshSpecPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("egressFilter",CfnMeshEgressFilterPropertyValidator)(properties.egressFilter)),errors.collect(cdk().propertyValidator("serviceDiscovery",CfnMeshMeshServiceDiscoveryPropertyValidator)(properties.serviceDiscovery)),errors.wrap('supplied properties not correct for "MeshSpecProperty"')}function convertCfnMeshMeshSpecPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnMeshMeshSpecPropertyValidator(properties).assertSuccess(),{EgressFilter:convertCfnMeshEgressFilterPropertyToCloudFormation(properties.egressFilter),ServiceDiscovery:convertCfnMeshMeshServiceDiscoveryPropertyToCloudFormation(properties.serviceDiscovery)}):properties}function CfnMeshMeshSpecPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("egressFilter","EgressFilter",properties.EgressFilter!=null?CfnMeshEgressFilterPropertyFromCloudFormation(properties.EgressFilter):void 0),ret.addPropertyResult("serviceDiscovery","ServiceDiscovery",properties.ServiceDiscovery!=null?CfnMeshMeshServiceDiscoveryPropertyFromCloudFormation(properties.ServiceDiscovery):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnMeshPropsValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("meshName",cdk().validateString)(properties.meshName)),errors.collect(cdk().propertyValidator("spec",CfnMeshMeshSpecPropertyValidator)(properties.spec)),errors.collect(cdk().propertyValidator("tags",cdk().listValidator(cdk().validateCfnTag))(properties.tags)),errors.wrap('supplied properties not correct for "CfnMeshProps"')}function convertCfnMeshPropsToCloudFormation(properties){return cdk().canInspect(properties)?(CfnMeshPropsValidator(properties).assertSuccess(),{MeshName:cdk().stringToCloudFormation(properties.meshName),Spec:convertCfnMeshMeshSpecPropertyToCloudFormation(properties.spec),Tags:cdk().listMapper(cdk().cfnTagToCloudFormation)(properties.tags)}):properties}function CfnMeshPropsFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("meshName","MeshName",properties.MeshName!=null?cfn_parse().FromCloudFormation.getString(properties.MeshName):void 0),ret.addPropertyResult("spec","Spec",properties.Spec!=null?CfnMeshMeshSpecPropertyFromCloudFormation(properties.Spec):void 0),ret.addPropertyResult("tags","Tags",properties.Tags!=null?cfn_parse().FromCloudFormation.getArray(cfn_parse().FromCloudFormation.getCfnTag)(properties.Tags):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}class CfnRoute extends cdk().CfnResource{static[JSII_RTTI_SYMBOL_1]={fqn:"aws-cdk-lib.aws_appmesh.CfnRoute",version:"2.252.0"};static CFN_RESOURCE_TYPE_NAME="AWS::AppMesh::Route";static _fromCloudFormation(scope,id,resourceAttributes,options){resourceAttributes=resourceAttributes||{};const resourceProperties=options.parser.parseValue(resourceAttributes.Properties),propsResult=CfnRoutePropsFromCloudFormation(resourceProperties);if(cdk().isResolvableObject(propsResult.value))throw new(cdk_errors()).ValidationError(cfn_parse().lit`UnexpectedIResolvable`,"Unexpected IResolvable",scope);const ret=new CfnRoute(scope,id,propsResult.value);for(const[propKey,propVal]of Object.entries(propsResult.extraProperties))ret.addPropertyOverride(propKey,propVal);return options.parser.handleAttributes(ret,resourceAttributes,id),ret}static isCfnRoute(x){return cdk().CfnResource.isCfnResource(x)&&x.cfnResourceType===CfnRoute.CFN_RESOURCE_TYPE_NAME}static arnForRoute(resource){try{jsiiDeprecationWarnings().aws_cdk_lib_interfaces_aws_appmesh_IRouteRef(resource)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.arnForRoute),error}return resource.routeRef.routeArn}_meshName;_meshOwner;_routeName;_spec;tags;_tagsRaw;_virtualRouterName;cfnPropertyNames={meshName:"MeshName",meshOwner:"MeshOwner",routeName:"RouteName",spec:"Spec",tags:"Tags",virtualRouterName:"VirtualRouterName"};constructor(scope,id,props){super(scope,id,{type:CfnRoute.CFN_RESOURCE_TYPE_NAME,properties:props});try{jsiiDeprecationWarnings().aws_cdk_lib_aws_appmesh_CfnRouteProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,CfnRoute),error}cdk().requireProperty(props,"meshName",this),cdk().requireProperty(props,"spec",this),cdk().requireProperty(props,"virtualRouterName",this),this._meshName=props.meshName,this._meshOwner=props.meshOwner,this._routeName=props.routeName,this._spec=props.spec,this.tags=new(cdk()).TagManager(cdk().TagType.STANDARD,"AWS::AppMesh::Route",props.tags,{tagPropertyName:"tags"}),this._tagsRaw=props.tags,this._virtualRouterName=props.virtualRouterName}get routeRef(){return{routeArn:this.ref}}get meshName(){return this._meshName}set meshName(value){cdk().traceProperty(this.node,"MeshName"),this._meshName=value}get meshOwner(){return this._meshOwner}set meshOwner(value){cdk().traceProperty(this.node,"MeshOwner"),this._meshOwner=value}get routeName(){return this._routeName}set routeName(value){cdk().traceProperty(this.node,"RouteName"),this._routeName=value}get spec(){return this._spec}set spec(value){cdk().traceProperty(this.node,"Spec"),this._spec=value}get tagsRaw(){return this._tagsRaw}set tagsRaw(value){cdk().traceProperty(this.node,"Tags"),this._tagsRaw=value}get virtualRouterName(){return this._virtualRouterName}set virtualRouterName(value){cdk().traceProperty(this.node,"VirtualRouterName"),this._virtualRouterName=value}get attrArn(){return cdk().Token.asString(this.getAtt("Arn",cdk().ResolutionTypeHint.STRING))}get attrId(){return cdk().Token.asString(this.getAtt("Id",cdk().ResolutionTypeHint.STRING))}get attrMeshName(){return cdk().Token.asString(this.getAtt("MeshName",cdk().ResolutionTypeHint.STRING))}get attrMeshOwner(){return cdk().Token.asString(this.getAtt("MeshOwner",cdk().ResolutionTypeHint.STRING))}get attrResourceOwner(){return cdk().Token.asString(this.getAtt("ResourceOwner",cdk().ResolutionTypeHint.STRING))}get attrRouteName(){return cdk().Token.asString(this.getAtt("RouteName",cdk().ResolutionTypeHint.STRING))}get attrUid(){return cdk().Token.asString(this.getAtt("Uid",cdk().ResolutionTypeHint.STRING))}get attrVirtualRouterName(){return cdk().Token.asString(this.getAtt("VirtualRouterName",cdk().ResolutionTypeHint.STRING))}get cfnProperties(){return{meshName:this._meshName,meshOwner:this._meshOwner,routeName:this._routeName,spec:this._spec,tags:this.tags.renderTags(),virtualRouterName:this._virtualRouterName}}inspect(inspector){try{jsiiDeprecationWarnings().aws_cdk_lib_TreeInspector(inspector)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.inspect),error}inspector.addAttribute("aws:cdk:cloudformation:type",CfnRoute.CFN_RESOURCE_TYPE_NAME),inspector.addAttribute("aws:cdk:cloudformation:logicalId",this._synthesizeLogicalId()),inspector.addAttribute("aws:cdk:cloudformation:props",this.cfnProperties)}renderProperties(props){return convertCfnRoutePropsToCloudFormation(props)}}exports.CfnRoute=CfnRoute;function CfnRouteWeightedTargetPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("port",cdk().validateNumber)(properties.port)),errors.collect(cdk().propertyValidator("virtualNode",cdk().requiredValidator)(properties.virtualNode)),errors.collect(cdk().propertyValidator("virtualNode",cdk().validateString)(properties.virtualNode)),errors.collect(cdk().propertyValidator("weight",cdk().requiredValidator)(properties.weight)),errors.collect(cdk().propertyValidator("weight",cdk().validateNumber)(properties.weight)),errors.wrap('supplied properties not correct for "WeightedTargetProperty"')}function convertCfnRouteWeightedTargetPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnRouteWeightedTargetPropertyValidator(properties).assertSuccess(),{Port:cdk().numberToCloudFormation(properties.port),VirtualNode:cdk().stringToCloudFormation(properties.virtualNode),Weight:cdk().numberToCloudFormation(properties.weight)}):properties}function CfnRouteWeightedTargetPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("port","Port",properties.Port!=null?cfn_parse().FromCloudFormation.getNumber(properties.Port):void 0),ret.addPropertyResult("virtualNode","VirtualNode",properties.VirtualNode!=null?cfn_parse().FromCloudFormation.getString(properties.VirtualNode):void 0),ret.addPropertyResult("weight","Weight",properties.Weight!=null?cfn_parse().FromCloudFormation.getNumber(properties.Weight):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnRouteHttpRouteActionPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("weightedTargets",cdk().requiredValidator)(properties.weightedTargets)),errors.collect(cdk().propertyValidator("weightedTargets",cdk().listValidator(CfnRouteWeightedTargetPropertyValidator))(properties.weightedTargets)),errors.wrap('supplied properties not correct for "HttpRouteActionProperty"')}function convertCfnRouteHttpRouteActionPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnRouteHttpRouteActionPropertyValidator(properties).assertSuccess(),{WeightedTargets:cdk().listMapper(convertCfnRouteWeightedTargetPropertyToCloudFormation)(properties.weightedTargets)}):properties}function CfnRouteHttpRouteActionPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("weightedTargets","WeightedTargets",properties.WeightedTargets!=null?cfn_parse().FromCloudFormation.getArray(CfnRouteWeightedTargetPropertyFromCloudFormation)(properties.WeightedTargets):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnRouteDurationPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("unit",cdk().requiredValidator)(properties.unit)),errors.collect(cdk().propertyValidator("unit",cdk().validateString)(properties.unit)),errors.collect(cdk().propertyValidator("value",cdk().requiredValidator)(properties.value)),errors.collect(cdk().propertyValidator("value",cdk().validateNumber)(properties.value)),errors.wrap('supplied properties not correct for "DurationProperty"')}function convertCfnRouteDurationPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnRouteDurationPropertyValidator(properties).assertSuccess(),{Unit:cdk().stringToCloudFormation(properties.unit),Value:cdk().numberToCloudFormation(properties.value)}):properties}function CfnRouteDurationPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("unit","Unit",properties.Unit!=null?cfn_parse().FromCloudFormation.getString(properties.Unit):void 0),ret.addPropertyResult("value","Value",properties.Value!=null?cfn_parse().FromCloudFormation.getNumber(properties.Value):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnRouteHttpTimeoutPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("idle",CfnRouteDurationPropertyValidator)(properties.idle)),errors.collect(cdk().propertyValidator("perRequest",CfnRouteDurationPropertyValidator)(properties.perRequest)),errors.wrap('supplied properties not correct for "HttpTimeoutProperty"')}function convertCfnRouteHttpTimeoutPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnRouteHttpTimeoutPropertyValidator(properties).assertSuccess(),{Idle:convertCfnRouteDurationPropertyToCloudFormation(properties.idle),PerRequest:convertCfnRouteDurationPropertyToCloudFormation(properties.perRequest)}):properties}function CfnRouteHttpTimeoutPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("idle","Idle",properties.Idle!=null?CfnRouteDurationPropertyFromCloudFormation(properties.Idle):void 0),ret.addPropertyResult("perRequest","PerRequest",properties.PerRequest!=null?CfnRouteDurationPropertyFromCloudFormation(properties.PerRequest):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnRouteHttpRetryPolicyPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("httpRetryEvents",cdk().listValidator(cdk().validateString))(properties.httpRetryEvents)),errors.collect(cdk().propertyValidator("maxRetries",cdk().requiredValidator)(properties.maxRetries)),errors.collect(cdk().propertyValidator("maxRetries",cdk().validateNumber)(properties.maxRetries)),errors.collect(cdk().propertyValidator("perRetryTimeout",cdk().requiredValidator)(properties.perRetryTimeout)),errors.collect(cdk().propertyValidator("perRetryTimeout",CfnRouteDurationPropertyValidator)(properties.perRetryTimeout)),errors.collect(cdk().propertyValidator("tcpRetryEvents",cdk().listValidator(cdk().validateString))(properties.tcpRetryEvents)),errors.wrap('supplied properties not correct for "HttpRetryPolicyProperty"')}function convertCfnRouteHttpRetryPolicyPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnRouteHttpRetryPolicyPropertyValidator(properties).assertSuccess(),{HttpRetryEvents:cdk().listMapper(cdk().stringToCloudFormation)(properties.httpRetryEvents),MaxRetries:cdk().numberToCloudFormation(properties.maxRetries),PerRetryTimeout:convertCfnRouteDurationPropertyToCloudFormation(properties.perRetryTimeout),TcpRetryEvents:cdk().listMapper(cdk().stringToCloudFormation)(properties.tcpRetryEvents)}):properties}function CfnRouteHttpRetryPolicyPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("httpRetryEvents","HttpRetryEvents",properties.HttpRetryEvents!=null?cfn_parse().FromCloudFormation.getArray(cfn_parse().FromCloudFormation.getString)(properties.HttpRetryEvents):void 0),ret.addPropertyResult("maxRetries","MaxRetries",properties.MaxRetries!=null?cfn_parse().FromCloudFormation.getNumber(properties.MaxRetries):void 0),ret.addPropertyResult("perRetryTimeout","PerRetryTimeout",properties.PerRetryTimeout!=null?CfnRouteDurationPropertyFromCloudFormation(properties.PerRetryTimeout):void 0),ret.addPropertyResult("tcpRetryEvents","TcpRetryEvents",properties.TcpRetryEvents!=null?cfn_parse().FromCloudFormation.getArray(cfn_parse().FromCloudFormation.getString)(properties.TcpRetryEvents):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnRouteHttpPathMatchPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("exact",cdk().validateString)(properties.exact)),errors.collect(cdk().propertyValidator("regex",cdk().validateString)(properties.regex)),errors.wrap('supplied properties not correct for "HttpPathMatchProperty"')}function convertCfnRouteHttpPathMatchPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnRouteHttpPathMatchPropertyValidator(properties).assertSuccess(),{Exact:cdk().stringToCloudFormation(properties.exact),Regex:cdk().stringToCloudFormation(properties.regex)}):properties}function CfnRouteHttpPathMatchPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("exact","Exact",properties.Exact!=null?cfn_parse().FromCloudFormation.getString(properties.Exact):void 0),ret.addPropertyResult("regex","Regex",properties.Regex!=null?cfn_parse().FromCloudFormation.getString(properties.Regex):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnRouteMatchRangePropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("end",cdk().requiredValidator)(properties.end)),errors.collect(cdk().propertyValidator("end",cdk().validateNumber)(properties.end)),errors.collect(cdk().propertyValidator("start",cdk().requiredValidator)(properties.start)),errors.collect(cdk().propertyValidator("start",cdk().validateNumber)(properties.start)),errors.wrap('supplied properties not correct for "MatchRangeProperty"')}function convertCfnRouteMatchRangePropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnRouteMatchRangePropertyValidator(properties).assertSuccess(),{End:cdk().numberToCloudFormation(properties.end),Start:cdk().numberToCloudFormation(properties.start)}):properties}function CfnRouteMatchRangePropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("end","End",properties.End!=null?cfn_parse().FromCloudFormation.getNumber(properties.End):void 0),ret.addPropertyResult("start","Start",properties.Start!=null?cfn_parse().FromCloudFormation.getNumber(properties.Start):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnRouteHeaderMatchMethodPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("exact",cdk().validateString)(properties.exact)),errors.collect(cdk().propertyValidator("prefix",cdk().validateString)(properties.prefix)),errors.collect(cdk().propertyValidator("range",CfnRouteMatchRangePropertyValidator)(properties.range)),errors.collect(cdk().propertyValidator("regex",cdk().validateString)(properties.regex)),errors.collect(cdk().propertyValidator("suffix",cdk().validateString)(properties.suffix)),errors.wrap('supplied properties not correct for "HeaderMatchMethodProperty"')}function convertCfnRouteHeaderMatchMethodPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnRouteHeaderMatchMethodPropertyValidator(properties).assertSuccess(),{Exact:cdk().stringToCloudFormation(properties.exact),Prefix:cdk().stringToCloudFormation(properties.prefix),Range:convertCfnRouteMatchRangePropertyToCloudFormation(properties.range),Regex:cdk().stringToCloudFormation(properties.regex),Suffix:cdk().stringToCloudFormation(properties.suffix)}):properties}function CfnRouteHeaderMatchMethodPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("exact","Exact",properties.Exact!=null?cfn_parse().FromCloudFormation.getString(properties.Exact):void 0),ret.addPropertyResult("prefix","Prefix",properties.Prefix!=null?cfn_parse().FromCloudFormation.getString(properties.Prefix):void 0),ret.addPropertyResult("range","Range",properties.Range!=null?CfnRouteMatchRangePropertyFromCloudFormation(properties.Range):void 0),ret.addPropertyResult("regex","Regex",properties.Regex!=null?cfn_parse().FromCloudFormation.getString(properties.Regex):void 0),ret.addPropertyResult("suffix","Suffix",properties.Suffix!=null?cfn_parse().FromCloudFormation.getString(properties.Suffix):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnRouteHttpRouteHeaderPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("invert",cdk().validateBoolean)(properties.invert)),errors.collect(cdk().propertyValidator("match",CfnRouteHeaderMatchMethodPropertyValidator)(properties.match)),errors.collect(cdk().propertyValidator("name",cdk().requiredValidator)(properties.name)),errors.collect(cdk().propertyValidator("name",cdk().validateString)(properties.name)),errors.wrap('supplied properties not correct for "HttpRouteHeaderProperty"')}function convertCfnRouteHttpRouteHeaderPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnRouteHttpRouteHeaderPropertyValidator(properties).assertSuccess(),{Invert:cdk().booleanToCloudFormation(properties.invert),Match:convertCfnRouteHeaderMatchMethodPropertyToCloudFormation(properties.match),Name:cdk().stringToCloudFormation(properties.name)}):properties}function CfnRouteHttpRouteHeaderPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("invert","Invert",properties.Invert!=null?cfn_parse().FromCloudFormation.getBoolean(properties.Invert):void 0),ret.addPropertyResult("match","Match",properties.Match!=null?CfnRouteHeaderMatchMethodPropertyFromCloudFormation(properties.Match):void 0),ret.addPropertyResult("name","Name",properties.Name!=null?cfn_parse().FromCloudFormation.getString(properties.Name):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnRouteHttpQueryParameterMatchPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("exact",cdk().validateString)(properties.exact)),errors.wrap('supplied properties not correct for "HttpQueryParameterMatchProperty"')}function convertCfnRouteHttpQueryParameterMatchPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnRouteHttpQueryParameterMatchPropertyValidator(properties).assertSuccess(),{Exact:cdk().stringToCloudFormation(properties.exact)}):properties}function CfnRouteHttpQueryParameterMatchPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("exact","Exact",properties.Exact!=null?cfn_parse().FromCloudFormation.getString(properties.Exact):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnRouteQueryParameterPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("match",CfnRouteHttpQueryParameterMatchPropertyValidator)(properties.match)),errors.collect(cdk().propertyValidator("name",cdk().requiredValidator)(properties.name)),errors.collect(cdk().propertyValidator("name",cdk().validateString)(properties.name)),errors.wrap('supplied properties not correct for "QueryParameterProperty"')}function convertCfnRouteQueryParameterPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnRouteQueryParameterPropertyValidator(properties).assertSuccess(),{Match:convertCfnRouteHttpQueryParameterMatchPropertyToCloudFormation(properties.match),Name:cdk().stringToCloudFormation(properties.name)}):properties}function CfnRouteQueryParameterPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("match","Match",properties.Match!=null?CfnRouteHttpQueryParameterMatchPropertyFromCloudFormation(properties.Match):void 0),ret.addPropertyResult("name","Name",properties.Name!=null?cfn_parse().FromCloudFormation.getString(properties.Name):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnRouteHttpRouteMatchPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("headers",cdk().listValidator(CfnRouteHttpRouteHeaderPropertyValidator))(properties.headers)),errors.collect(cdk().propertyValidator("method",cdk().validateString)(properties.method)),errors.collect(cdk().propertyValidator("path",CfnRouteHttpPathMatchPropertyValidator)(properties.path)),errors.collect(cdk().propertyValidator("port",cdk().validateNumber)(properties.port)),errors.collect(cdk().propertyValidator("prefix",cdk().validateString)(properties.prefix)),errors.collect(cdk().propertyValidator("queryParameters",cdk().listValidator(CfnRouteQueryParameterPropertyValidator))(properties.queryParameters)),errors.collect(cdk().propertyValidator("scheme",cdk().validateString)(properties.scheme)),errors.wrap('supplied properties not correct for "HttpRouteMatchProperty"')}function convertCfnRouteHttpRouteMatchPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnRouteHttpRouteMatchPropertyValidator(properties).assertSuccess(),{Headers:cdk().listMapper(convertCfnRouteHttpRouteHeaderPropertyToCloudFormation)(properties.headers),Method:cdk().stringToCloudFormation(properties.method),Path:convertCfnRouteHttpPathMatchPropertyToCloudFormation(properties.path),Port:cdk().numberToCloudFormation(properties.port),Prefix:cdk().stringToCloudFormation(properties.prefix),QueryParameters:cdk().listMapper(convertCfnRouteQueryParameterPropertyToCloudFormation)(properties.queryParameters),Scheme:cdk().stringToCloudFormation(properties.scheme)}):properties}function CfnRouteHttpRouteMatchPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("headers","Headers",properties.Headers!=null?cfn_parse().FromCloudFormation.getArray(CfnRouteHttpRouteHeaderPropertyFromCloudFormation)(properties.Headers):void 0),ret.addPropertyResult("method","Method",properties.Method!=null?cfn_parse().FromCloudFormation.getString(properties.Method):void 0),ret.addPropertyResult("path","Path",properties.Path!=null?CfnRouteHttpPathMatchPropertyFromCloudFormation(properties.Path):void 0),ret.addPropertyResult("port","Port",properties.Port!=null?cfn_parse().FromCloudFormation.getNumber(properties.Port):void 0),ret.addPropertyResult("prefix","Prefix",properties.Prefix!=null?cfn_parse().FromCloudFormation.getString(properties.Prefix):void 0),ret.addPropertyResult("queryParameters","QueryParameters",properties.QueryParameters!=null?cfn_parse().FromCloudFormation.getArray(CfnRouteQueryParameterPropertyFromCloudFormation)(properties.QueryParameters):void 0),ret.addPropertyResult("scheme","Scheme",properties.Scheme!=null?cfn_parse().FromCloudFormation.getString(properties.Scheme):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnRouteHttpRoutePropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("action",cdk().requiredValidator)(properties.action)),errors.collect(cdk().propertyValidator("action",CfnRouteHttpRouteActionPropertyValidator)(properties.action)),errors.collect(cdk().propertyValidator("match",cdk().requiredValidator)(properties.match)),errors.collect(cdk().propertyValidator("match",CfnRouteHttpRouteMatchPropertyValidator)(properties.match)),errors.collect(cdk().propertyValidator("retryPolicy",CfnRouteHttpRetryPolicyPropertyValidator)(properties.retryPolicy)),errors.collect(cdk().propertyValidator("timeout",CfnRouteHttpTimeoutPropertyValidator)(properties.timeout)),errors.wrap('supplied properties not correct for "HttpRouteProperty"')}function convertCfnRouteHttpRoutePropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnRouteHttpRoutePropertyValidator(properties).assertSuccess(),{Action:convertCfnRouteHttpRouteActionPropertyToCloudFormation(properties.action),Match:convertCfnRouteHttpRouteMatchPropertyToCloudFormation(properties.match),RetryPolicy:convertCfnRouteHttpRetryPolicyPropertyToCloudFormation(properties.retryPolicy),Timeout:convertCfnRouteHttpTimeoutPropertyToCloudFormation(properties.timeout)}):properties}function CfnRouteHttpRoutePropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("action","Action",properties.Action!=null?CfnRouteHttpRouteActionPropertyFromCloudFormation(properties.Action):void 0),ret.addPropertyResult("match","Match",properties.Match!=null?CfnRouteHttpRouteMatchPropertyFromCloudFormation(properties.Match):void 0),ret.addPropertyResult("retryPolicy","RetryPolicy",properties.RetryPolicy!=null?CfnRouteHttpRetryPolicyPropertyFromCloudFormation(properties.RetryPolicy):void 0),ret.addPropertyResult("timeout","Timeout",properties.Timeout!=null?CfnRouteHttpTimeoutPropertyFromCloudFormation(properties.Timeout):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnRouteGrpcRouteActionPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("weightedTargets",cdk().requiredValidator)(properties.weightedTargets)),errors.collect(cdk().propertyValidator("weightedTargets",cdk().listValidator(CfnRouteWeightedTargetPropertyValidator))(properties.weightedTargets)),errors.wrap('supplied properties not correct for "GrpcRouteActionProperty"')}function convertCfnRouteGrpcRouteActionPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnRouteGrpcRouteActionPropertyValidator(properties).assertSuccess(),{WeightedTargets:cdk().listMapper(convertCfnRouteWeightedTargetPropertyToCloudFormation)(properties.weightedTargets)}):properties}function CfnRouteGrpcRouteActionPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("weightedTargets","WeightedTargets",properties.WeightedTargets!=null?cfn_parse().FromCloudFormation.getArray(CfnRouteWeightedTargetPropertyFromCloudFormation)(properties.WeightedTargets):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnRouteGrpcTimeoutPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("idle",CfnRouteDurationPropertyValidator)(properties.idle)),errors.collect(cdk().propertyValidator("perRequest",CfnRouteDurationPropertyValidator)(properties.perRequest)),errors.wrap('supplied properties not correct for "GrpcTimeoutProperty"')}function convertCfnRouteGrpcTimeoutPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnRouteGrpcTimeoutPropertyValidator(properties).assertSuccess(),{Idle:convertCfnRouteDurationPropertyToCloudFormation(properties.idle),PerRequest:convertCfnRouteDurationPropertyToCloudFormation(properties.perRequest)}):properties}function CfnRouteGrpcTimeoutPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("idle","Idle",properties.Idle!=null?CfnRouteDurationPropertyFromCloudFormation(properties.Idle):void 0),ret.addPropertyResult("perRequest","PerRequest",properties.PerRequest!=null?CfnRouteDurationPropertyFromCloudFormation(properties.PerRequest):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnRouteGrpcRetryPolicyPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("grpcRetryEvents",cdk().listValidator(cdk().validateString))(properties.grpcRetryEvents)),errors.collect(cdk().propertyValidator("httpRetryEvents",cdk().listValidator(cdk().validateString))(properties.httpRetryEvents)),errors.collect(cdk().propertyValidator("maxRetries",cdk().requiredValidator)(properties.maxRetries)),errors.collect(cdk().propertyValidator("maxRetries",cdk().validateNumber)(properties.maxRetries)),errors.collect(cdk().propertyValidator("perRetryTimeout",cdk().requiredValidator)(properties.perRetryTimeout)),errors.collect(cdk().propertyValidator("perRetryTimeout",CfnRouteDurationPropertyValidator)(properties.perRetryTimeout)),errors.collect(cdk().propertyValidator("tcpRetryEvents",cdk().listValidator(cdk().validateString))(properties.tcpRetryEvents)),errors.wrap('supplied properties not correct for "GrpcRetryPolicyProperty"')}function convertCfnRouteGrpcRetryPolicyPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnRouteGrpcRetryPolicyPropertyValidator(properties).assertSuccess(),{GrpcRetryEvents:cdk().listMapper(cdk().stringToCloudFormation)(properties.grpcRetryEvents),HttpRetryEvents:cdk().listMapper(cdk().stringToCloudFormation)(properties.httpRetryEvents),MaxRetries:cdk().numberToCloudFormation(properties.maxRetries),PerRetryTimeout:convertCfnRouteDurationPropertyToCloudFormation(properties.perRetryTimeout),TcpRetryEvents:cdk().listMapper(cdk().stringToCloudFormation)(properties.tcpRetryEvents)}):properties}function CfnRouteGrpcRetryPolicyPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("grpcRetryEvents","GrpcRetryEvents",properties.GrpcRetryEvents!=null?cfn_parse().FromCloudFormation.getArray(cfn_parse().FromCloudFormation.getString)(properties.GrpcRetryEvents):void 0),ret.addPropertyResult("httpRetryEvents","HttpRetryEvents",properties.HttpRetryEvents!=null?cfn_parse().FromCloudFormation.getArray(cfn_parse().FromCloudFormation.getString)(properties.HttpRetryEvents):void 0),ret.addPropertyResult("maxRetries","MaxRetries",properties.MaxRetries!=null?cfn_parse().FromCloudFormation.getNumber(properties.MaxRetries):void 0),ret.addPropertyResult("perRetryTimeout","PerRetryTimeout",properties.PerRetryTimeout!=null?CfnRouteDurationPropertyFromCloudFormation(properties.PerRetryTimeout):void 0),ret.addPropertyResult("tcpRetryEvents","TcpRetryEvents",properties.TcpRetryEvents!=null?cfn_parse().FromCloudFormation.getArray(cfn_parse().FromCloudFormation.getString)(properties.TcpRetryEvents):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnRouteGrpcRouteMetadataMatchMethodPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("exact",cdk().validateString)(properties.exact)),errors.collect(cdk().propertyValidator("prefix",cdk().validateString)(properties.prefix)),errors.collect(cdk().propertyValidator("range",CfnRouteMatchRangePropertyValidator)(properties.range)),errors.collect(cdk().propertyValidator("regex",cdk().validateString)(properties.regex)),errors.collect(cdk().propertyValidator("suffix",cdk().validateString)(properties.suffix)),errors.wrap('supplied properties not correct for "GrpcRouteMetadataMatchMethodProperty"')}function convertCfnRouteGrpcRouteMetadataMatchMethodPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnRouteGrpcRouteMetadataMatchMethodPropertyValidator(properties).assertSuccess(),{Exact:cdk().stringToCloudFormation(properties.exact),Prefix:cdk().stringToCloudFormation(properties.prefix),Range:convertCfnRouteMatchRangePropertyToCloudFormation(properties.range),Regex:cdk().stringToCloudFormation(properties.regex),Suffix:cdk().stringToCloudFormation(properties.suffix)}):properties}function CfnRouteGrpcRouteMetadataMatchMethodPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("exact","Exact",properties.Exact!=null?cfn_parse().FromCloudFormation.getString(properties.Exact):void 0),ret.addPropertyResult("prefix","Prefix",properties.Prefix!=null?cfn_parse().FromCloudFormation.getString(properties.Prefix):void 0),ret.addPropertyResult("range","Range",properties.Range!=null?CfnRouteMatchRangePropertyFromCloudFormation(properties.Range):void 0),ret.addPropertyResult("regex","Regex",properties.Regex!=null?cfn_parse().FromCloudFormation.getString(properties.Regex):void 0),ret.addPropertyResult("suffix","Suffix",properties.Suffix!=null?cfn_parse().FromCloudFormation.getString(properties.Suffix):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnRouteGrpcRouteMetadataPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("invert",cdk().validateBoolean)(properties.invert)),errors.collect(cdk().propertyValidator("match",CfnRouteGrpcRouteMetadataMatchMethodPropertyValidator)(properties.match)),errors.collect(cdk().propertyValidator("name",cdk().requiredValidator)(properties.name)),errors.collect(cdk().propertyValidator("name",cdk().validateString)(properties.name)),errors.wrap('supplied properties not correct for "GrpcRouteMetadataProperty"')}function convertCfnRouteGrpcRouteMetadataPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnRouteGrpcRouteMetadataPropertyValidator(properties).assertSuccess(),{Invert:cdk().booleanToCloudFormation(properties.invert),Match:convertCfnRouteGrpcRouteMetadataMatchMethodPropertyToCloudFormation(properties.match),Name:cdk().stringToCloudFormation(properties.name)}):properties}function CfnRouteGrpcRouteMetadataPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("invert","Invert",properties.Invert!=null?cfn_parse().FromCloudFormation.getBoolean(properties.Invert):void 0),ret.addPropertyResult("match","Match",properties.Match!=null?CfnRouteGrpcRouteMetadataMatchMethodPropertyFromCloudFormation(properties.Match):void 0),ret.addPropertyResult("name","Name",properties.Name!=null?cfn_parse().FromCloudFormation.getString(properties.Name):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnRouteGrpcRouteMatchPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("metadata",cdk().listValidator(CfnRouteGrpcRouteMetadataPropertyValidator))(properties.metadata)),errors.collect(cdk().propertyValidator("methodName",cdk().validateString)(properties.methodName)),errors.collect(cdk().propertyValidator("port",cdk().validateNumber)(properties.port)),errors.collect(cdk().propertyValidator("serviceName",cdk().validateString)(properties.serviceName)),errors.wrap('supplied properties not correct for "GrpcRouteMatchProperty"')}function convertCfnRouteGrpcRouteMatchPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnRouteGrpcRouteMatchPropertyValidator(properties).assertSuccess(),{Metadata:cdk().listMapper(convertCfnRouteGrpcRouteMetadataPropertyToCloudFormation)(properties.metadata),MethodName:cdk().stringToCloudFormation(properties.methodName),Port:cdk().numberToCloudFormation(properties.port),ServiceName:cdk().stringToCloudFormation(properties.serviceName)}):properties}function CfnRouteGrpcRouteMatchPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("metadata","Metadata",properties.Metadata!=null?cfn_parse().FromCloudFormation.getArray(CfnRouteGrpcRouteMetadataPropertyFromCloudFormation)(properties.Metadata):void 0),ret.addPropertyResult("methodName","MethodName",properties.MethodName!=null?cfn_parse().FromCloudFormation.getString(properties.MethodName):void 0),ret.addPropertyResult("port","Port",properties.Port!=null?cfn_parse().FromCloudFormation.getNumber(properties.Port):void 0),ret.addPropertyResult("serviceName","ServiceName",properties.ServiceName!=null?cfn_parse().FromCloudFormation.getString(properties.ServiceName):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnRouteGrpcRoutePropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("action",cdk().requiredValidator)(properties.action)),errors.collect(cdk().propertyValidator("action",CfnRouteGrpcRouteActionPropertyValidator)(properties.action)),errors.collect(cdk().propertyValidator("match",cdk().requiredValidator)(properties.match)),errors.collect(cdk().propertyValidator("match",CfnRouteGrpcRouteMatchPropertyValidator)(properties.match)),errors.collect(cdk().propertyValidator("retryPolicy",CfnRouteGrpcRetryPolicyPropertyValidator)(properties.retryPolicy)),errors.collect(cdk().propertyValidator("timeout",CfnRouteGrpcTimeoutPropertyValidator)(properties.timeout)),errors.wrap('supplied properties not correct for "GrpcRouteProperty"')}function convertCfnRouteGrpcRoutePropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnRouteGrpcRoutePropertyValidator(properties).assertSuccess(),{Action:convertCfnRouteGrpcRouteActionPropertyToCloudFormation(properties.action),Match:convertCfnRouteGrpcRouteMatchPropertyToCloudFormation(properties.match),RetryPolicy:convertCfnRouteGrpcRetryPolicyPropertyToCloudFormation(properties.retryPolicy),Timeout:convertCfnRouteGrpcTimeoutPropertyToCloudFormation(properties.timeout)}):properties}function CfnRouteGrpcRoutePropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("action","Action",properties.Action!=null?CfnRouteGrpcRouteActionPropertyFromCloudFormation(properties.Action):void 0),ret.addPropertyResult("match","Match",properties.Match!=null?CfnRouteGrpcRouteMatchPropertyFromCloudFormation(properties.Match):void 0),ret.addPropertyResult("retryPolicy","RetryPolicy",properties.RetryPolicy!=null?CfnRouteGrpcRetryPolicyPropertyFromCloudFormation(properties.RetryPolicy):void 0),ret.addPropertyResult("timeout","Timeout",properties.Timeout!=null?CfnRouteGrpcTimeoutPropertyFromCloudFormation(properties.Timeout):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnRouteTcpRouteActionPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("weightedTargets",cdk().requiredValidator)(properties.weightedTargets)),errors.collect(cdk().propertyValidator("weightedTargets",cdk().listValidator(CfnRouteWeightedTargetPropertyValidator))(properties.weightedTargets)),errors.wrap('supplied properties not correct for "TcpRouteActionProperty"')}function convertCfnRouteTcpRouteActionPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnRouteTcpRouteActionPropertyValidator(properties).assertSuccess(),{WeightedTargets:cdk().listMapper(convertCfnRouteWeightedTargetPropertyToCloudFormation)(properties.weightedTargets)}):properties}function CfnRouteTcpRouteActionPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("weightedTargets","WeightedTargets",properties.WeightedTargets!=null?cfn_parse().FromCloudFormation.getArray(CfnRouteWeightedTargetPropertyFromCloudFormation)(properties.WeightedTargets):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnRouteTcpTimeoutPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("idle",CfnRouteDurationPropertyValidator)(properties.idle)),errors.wrap('supplied properties not correct for "TcpTimeoutProperty"')}function convertCfnRouteTcpTimeoutPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnRouteTcpTimeoutPropertyValidator(properties).assertSuccess(),{Idle:convertCfnRouteDurationPropertyToCloudFormation(properties.idle)}):properties}function CfnRouteTcpTimeoutPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("idle","Idle",properties.Idle!=null?CfnRouteDurationPropertyFromCloudFormation(properties.Idle):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnRouteTcpRouteMatchPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("port",cdk().validateNumber)(properties.port)),errors.wrap('supplied properties not correct for "TcpRouteMatchProperty"')}function convertCfnRouteTcpRouteMatchPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnRouteTcpRouteMatchPropertyValidator(properties).assertSuccess(),{Port:cdk().numberToCloudFormation(properties.port)}):properties}function CfnRouteTcpRouteMatchPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("port","Port",properties.Port!=null?cfn_parse().FromCloudFormation.getNumber(properties.Port):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnRouteTcpRoutePropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("action",cdk().requiredValidator)(properties.action)),errors.collect(cdk().propertyValidator("action",CfnRouteTcpRouteActionPropertyValidator)(properties.action)),errors.collect(cdk().propertyValidator("match",CfnRouteTcpRouteMatchPropertyValidator)(properties.match)),errors.collect(cdk().propertyValidator("timeout",CfnRouteTcpTimeoutPropertyValidator)(properties.timeout)),errors.wrap('supplied properties not correct for "TcpRouteProperty"')}function convertCfnRouteTcpRoutePropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnRouteTcpRoutePropertyValidator(properties).assertSuccess(),{Action:convertCfnRouteTcpRouteActionPropertyToCloudFormation(properties.action),Match:convertCfnRouteTcpRouteMatchPropertyToCloudFormation(properties.match),Timeout:convertCfnRouteTcpTimeoutPropertyToCloudFormation(properties.timeout)}):properties}function CfnRouteTcpRoutePropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("action","Action",properties.Action!=null?CfnRouteTcpRouteActionPropertyFromCloudFormation(properties.Action):void 0),ret.addPropertyResult("match","Match",properties.Match!=null?CfnRouteTcpRouteMatchPropertyFromCloudFormation(properties.Match):void 0),ret.addPropertyResult("timeout","Timeout",properties.Timeout!=null?CfnRouteTcpTimeoutPropertyFromCloudFormation(properties.Timeout):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnRouteRouteSpecPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("grpcRoute",CfnRouteGrpcRoutePropertyValidator)(properties.grpcRoute)),errors.collect(cdk().propertyValidator("http2Route",CfnRouteHttpRoutePropertyValidator)(properties.http2Route)),errors.collect(cdk().propertyValidator("httpRoute",CfnRouteHttpRoutePropertyValidator)(properties.httpRoute)),errors.collect(cdk().propertyValidator("priority",cdk().validateNumber)(properties.priority)),errors.collect(cdk().propertyValidator("tcpRoute",CfnRouteTcpRoutePropertyValidator)(properties.tcpRoute)),errors.wrap('supplied properties not correct for "RouteSpecProperty"')}function convertCfnRouteRouteSpecPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnRouteRouteSpecPropertyValidator(properties).assertSuccess(),{GrpcRoute:convertCfnRouteGrpcRoutePropertyToCloudFormation(properties.grpcRoute),Http2Route:convertCfnRouteHttpRoutePropertyToCloudFormation(properties.http2Route),HttpRoute:convertCfnRouteHttpRoutePropertyToCloudFormation(properties.httpRoute),Priority:cdk().numberToCloudFormation(properties.priority),TcpRoute:convertCfnRouteTcpRoutePropertyToCloudFormation(properties.tcpRoute)}):properties}function CfnRouteRouteSpecPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("grpcRoute","GrpcRoute",properties.GrpcRoute!=null?CfnRouteGrpcRoutePropertyFromCloudFormation(properties.GrpcRoute):void 0),ret.addPropertyResult("http2Route","Http2Route",properties.Http2Route!=null?CfnRouteHttpRoutePropertyFromCloudFormation(properties.Http2Route):void 0),ret.addPropertyResult("httpRoute","HttpRoute",properties.HttpRoute!=null?CfnRouteHttpRoutePropertyFromCloudFormation(properties.HttpRoute):void 0),ret.addPropertyResult("priority","Priority",properties.Priority!=null?cfn_parse().FromCloudFormation.getNumber(properties.Priority):void 0),ret.addPropertyResult("tcpRoute","TcpRoute",properties.TcpRoute!=null?CfnRouteTcpRoutePropertyFromCloudFormation(properties.TcpRoute):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnRoutePropsValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("meshName",cdk().requiredValidator)(properties.meshName)),errors.collect(cdk().propertyValidator("meshName",cdk().validateString)(properties.meshName)),errors.collect(cdk().propertyValidator("meshOwner",cdk().validateString)(properties.meshOwner)),errors.collect(cdk().propertyValidator("routeName",cdk().validateString)(properties.routeName)),errors.collect(cdk().propertyValidator("spec",cdk().requiredValidator)(properties.spec)),errors.collect(cdk().propertyValidator("spec",CfnRouteRouteSpecPropertyValidator)(properties.spec)),errors.collect(cdk().propertyValidator("tags",cdk().listValidator(cdk().validateCfnTag))(properties.tags)),errors.collect(cdk().propertyValidator("virtualRouterName",cdk().requiredValidator)(properties.virtualRouterName)),errors.collect(cdk().propertyValidator("virtualRouterName",cdk().validateString)(properties.virtualRouterName)),errors.wrap('supplied properties not correct for "CfnRouteProps"')}function convertCfnRoutePropsToCloudFormation(properties){return cdk().canInspect(properties)?(CfnRoutePropsValidator(properties).assertSuccess(),{MeshName:cdk().stringToCloudFormation(properties.meshName),MeshOwner:cdk().stringToCloudFormation(properties.meshOwner),RouteName:cdk().stringToCloudFormation(properties.routeName),Spec:convertCfnRouteRouteSpecPropertyToCloudFormation(properties.spec),Tags:cdk().listMapper(cdk().cfnTagToCloudFormation)(properties.tags),VirtualRouterName:cdk().stringToCloudFormation(properties.virtualRouterName)}):properties}function CfnRoutePropsFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("meshName","MeshName",properties.MeshName!=null?cfn_parse().FromCloudFormation.getString(properties.MeshName):void 0),ret.addPropertyResult("meshOwner","MeshOwner",properties.MeshOwner!=null?cfn_parse().FromCloudFormation.getString(properties.MeshOwner):void 0),ret.addPropertyResult("routeName","RouteName",properties.RouteName!=null?cfn_parse().FromCloudFormation.getString(properties.RouteName):void 0),ret.addPropertyResult("spec","Spec",properties.Spec!=null?CfnRouteRouteSpecPropertyFromCloudFormation(properties.Spec):void 0),ret.addPropertyResult("tags","Tags",properties.Tags!=null?cfn_parse().FromCloudFormation.getArray(cfn_parse().FromCloudFormation.getCfnTag)(properties.Tags):void 0),ret.addPropertyResult("virtualRouterName","VirtualRouterName",properties.VirtualRouterName!=null?cfn_parse().FromCloudFormation.getString(properties.VirtualRouterName):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}class CfnVirtualGateway extends cdk().CfnResource{static[JSII_RTTI_SYMBOL_1]={fqn:"aws-cdk-lib.aws_appmesh.CfnVirtualGateway",version:"2.252.0"};static CFN_RESOURCE_TYPE_NAME="AWS::AppMesh::VirtualGateway";static _fromCloudFormation(scope,id,resourceAttributes,options){resourceAttributes=resourceAttributes||{};const resourceProperties=options.parser.parseValue(resourceAttributes.Properties),propsResult=CfnVirtualGatewayPropsFromCloudFormation(resourceProperties);if(cdk().isResolvableObject(propsResult.value))throw new(cdk_errors()).ValidationError(cfn_parse().lit`UnexpectedIResolvable`,"Unexpected IResolvable",scope);const ret=new CfnVirtualGateway(scope,id,propsResult.value);for(const[propKey,propVal]of Object.entries(propsResult.extraProperties))ret.addPropertyOverride(propKey,propVal);return options.parser.handleAttributes(ret,resourceAttributes,id),ret}static isCfnVirtualGateway(x){return cdk().CfnResource.isCfnResource(x)&&x.cfnResourceType===CfnVirtualGateway.CFN_RESOURCE_TYPE_NAME}static arnForVirtualGateway(resource){try{jsiiDeprecationWarnings().aws_cdk_lib_interfaces_aws_appmesh_IVirtualGatewayRef(resource)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.arnForVirtualGateway),error}return resource.virtualGatewayRef.virtualGatewayArn}_meshName;_meshOwner;_spec;tags;_tagsRaw;_virtualGatewayName;cfnPropertyNames={meshName:"MeshName",meshOwner:"MeshOwner",spec:"Spec",tags:"Tags",virtualGatewayName:"VirtualGatewayName"};constructor(scope,id,props){super(scope,id,{type:CfnVirtualGateway.CFN_RESOURCE_TYPE_NAME,properties:props});try{jsiiDeprecationWarnings().aws_cdk_lib_aws_appmesh_CfnVirtualGatewayProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,CfnVirtualGateway),error}cdk().requireProperty(props,"meshName",this),cdk().requireProperty(props,"spec",this),this._meshName=props.meshName,this._meshOwner=props.meshOwner,this._spec=props.spec,this.tags=new(cdk()).TagManager(cdk().TagType.STANDARD,"AWS::AppMesh::VirtualGateway",props.tags,{tagPropertyName:"tags"}),this._tagsRaw=props.tags,this._virtualGatewayName=props.virtualGatewayName}get virtualGatewayRef(){return{virtualGatewayArn:this.ref}}get meshName(){return this._meshName}set meshName(value){cdk().traceProperty(this.node,"MeshName"),this._meshName=value}get meshOwner(){return this._meshOwner}set meshOwner(value){cdk().traceProperty(this.node,"MeshOwner"),this._meshOwner=value}get spec(){return this._spec}set spec(value){cdk().traceProperty(this.node,"Spec"),this._spec=value}get tagsRaw(){return this._tagsRaw}set tagsRaw(value){cdk().traceProperty(this.node,"Tags"),this._tagsRaw=value}get virtualGatewayName(){return this._virtualGatewayName}set virtualGatewayName(value){cdk().traceProperty(this.node,"VirtualGatewayName"),this._virtualGatewayName=value}get attrArn(){return cdk().Token.asString(this.getAtt("Arn",cdk().ResolutionTypeHint.STRING))}get attrId(){return cdk().Token.asString(this.getAtt("Id",cdk().ResolutionTypeHint.STRING))}get attrMeshName(){return cdk().Token.asString(this.getAtt("MeshName",cdk().ResolutionTypeHint.STRING))}get attrMeshOwner(){return cdk().Token.asString(this.getAtt("MeshOwner",cdk().ResolutionTypeHint.STRING))}get attrResourceOwner(){return cdk().Token.asString(this.getAtt("ResourceOwner",cdk().ResolutionTypeHint.STRING))}get attrUid(){return cdk().Token.asString(this.getAtt("Uid",cdk().ResolutionTypeHint.STRING))}get attrVirtualGatewayName(){return cdk().Token.asString(this.getAtt("VirtualGatewayName",cdk().ResolutionTypeHint.STRING))}get cfnProperties(){return{meshName:this._meshName,meshOwner:this._meshOwner,spec:this._spec,tags:this.tags.renderTags(),virtualGatewayName:this._virtualGatewayName}}inspect(inspector){try{jsiiDeprecationWarnings().aws_cdk_lib_TreeInspector(inspector)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.inspect),error}inspector.addAttribute("aws:cdk:cloudformation:type",CfnVirtualGateway.CFN_RESOURCE_TYPE_NAME),inspector.addAttribute("aws:cdk:cloudformation:logicalId",this._synthesizeLogicalId()),inspector.addAttribute("aws:cdk:cloudformation:props",this.cfnProperties)}renderProperties(props){return convertCfnVirtualGatewayPropsToCloudFormation(props)}}exports.CfnVirtualGateway=CfnVirtualGateway;function CfnVirtualGatewayJsonFormatRefPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("key",cdk().requiredValidator)(properties.key)),errors.collect(cdk().propertyValidator("key",cdk().validateString)(properties.key)),errors.collect(cdk().propertyValidator("value",cdk().requiredValidator)(properties.value)),errors.collect(cdk().propertyValidator("value",cdk().validateString)(properties.value)),errors.wrap('supplied properties not correct for "JsonFormatRefProperty"')}function convertCfnVirtualGatewayJsonFormatRefPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualGatewayJsonFormatRefPropertyValidator(properties).assertSuccess(),{Key:cdk().stringToCloudFormation(properties.key),Value:cdk().stringToCloudFormation(properties.value)}):properties}function CfnVirtualGatewayJsonFormatRefPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("key","Key",properties.Key!=null?cfn_parse().FromCloudFormation.getString(properties.Key):void 0),ret.addPropertyResult("value","Value",properties.Value!=null?cfn_parse().FromCloudFormation.getString(properties.Value):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualGatewayLoggingFormatPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("json",cdk().listValidator(CfnVirtualGatewayJsonFormatRefPropertyValidator))(properties.json)),errors.collect(cdk().propertyValidator("text",cdk().validateString)(properties.text)),errors.wrap('supplied properties not correct for "LoggingFormatProperty"')}function convertCfnVirtualGatewayLoggingFormatPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualGatewayLoggingFormatPropertyValidator(properties).assertSuccess(),{Json:cdk().listMapper(convertCfnVirtualGatewayJsonFormatRefPropertyToCloudFormation)(properties.json),Text:cdk().stringToCloudFormation(properties.text)}):properties}function CfnVirtualGatewayLoggingFormatPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("json","Json",properties.Json!=null?cfn_parse().FromCloudFormation.getArray(CfnVirtualGatewayJsonFormatRefPropertyFromCloudFormation)(properties.Json):void 0),ret.addPropertyResult("text","Text",properties.Text!=null?cfn_parse().FromCloudFormation.getString(properties.Text):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualGatewayVirtualGatewayFileAccessLogPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("format",CfnVirtualGatewayLoggingFormatPropertyValidator)(properties.format)),errors.collect(cdk().propertyValidator("path",cdk().requiredValidator)(properties.path)),errors.collect(cdk().propertyValidator("path",cdk().validateString)(properties.path)),errors.wrap('supplied properties not correct for "VirtualGatewayFileAccessLogProperty"')}function convertCfnVirtualGatewayVirtualGatewayFileAccessLogPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualGatewayVirtualGatewayFileAccessLogPropertyValidator(properties).assertSuccess(),{Format:convertCfnVirtualGatewayLoggingFormatPropertyToCloudFormation(properties.format),Path:cdk().stringToCloudFormation(properties.path)}):properties}function CfnVirtualGatewayVirtualGatewayFileAccessLogPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("format","Format",properties.Format!=null?CfnVirtualGatewayLoggingFormatPropertyFromCloudFormation(properties.Format):void 0),ret.addPropertyResult("path","Path",properties.Path!=null?cfn_parse().FromCloudFormation.getString(properties.Path):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualGatewayVirtualGatewayAccessLogPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("file",CfnVirtualGatewayVirtualGatewayFileAccessLogPropertyValidator)(properties.file)),errors.wrap('supplied properties not correct for "VirtualGatewayAccessLogProperty"')}function convertCfnVirtualGatewayVirtualGatewayAccessLogPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualGatewayVirtualGatewayAccessLogPropertyValidator(properties).assertSuccess(),{File:convertCfnVirtualGatewayVirtualGatewayFileAccessLogPropertyToCloudFormation(properties.file)}):properties}function CfnVirtualGatewayVirtualGatewayAccessLogPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("file","File",properties.File!=null?CfnVirtualGatewayVirtualGatewayFileAccessLogPropertyFromCloudFormation(properties.File):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualGatewayVirtualGatewayLoggingPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("accessLog",CfnVirtualGatewayVirtualGatewayAccessLogPropertyValidator)(properties.accessLog)),errors.wrap('supplied properties not correct for "VirtualGatewayLoggingProperty"')}function convertCfnVirtualGatewayVirtualGatewayLoggingPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualGatewayVirtualGatewayLoggingPropertyValidator(properties).assertSuccess(),{AccessLog:convertCfnVirtualGatewayVirtualGatewayAccessLogPropertyToCloudFormation(properties.accessLog)}):properties}function CfnVirtualGatewayVirtualGatewayLoggingPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("accessLog","AccessLog",properties.AccessLog!=null?CfnVirtualGatewayVirtualGatewayAccessLogPropertyFromCloudFormation(properties.AccessLog):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualGatewayVirtualGatewayHttp2ConnectionPoolPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("maxRequests",cdk().requiredValidator)(properties.maxRequests)),errors.collect(cdk().propertyValidator("maxRequests",cdk().validateNumber)(properties.maxRequests)),errors.wrap('supplied properties not correct for "VirtualGatewayHttp2ConnectionPoolProperty"')}function convertCfnVirtualGatewayVirtualGatewayHttp2ConnectionPoolPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualGatewayVirtualGatewayHttp2ConnectionPoolPropertyValidator(properties).assertSuccess(),{MaxRequests:cdk().numberToCloudFormation(properties.maxRequests)}):properties}function CfnVirtualGatewayVirtualGatewayHttp2ConnectionPoolPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("maxRequests","MaxRequests",properties.MaxRequests!=null?cfn_parse().FromCloudFormation.getNumber(properties.MaxRequests):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualGatewayVirtualGatewayHttpConnectionPoolPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("maxConnections",cdk().requiredValidator)(properties.maxConnections)),errors.collect(cdk().propertyValidator("maxConnections",cdk().validateNumber)(properties.maxConnections)),errors.collect(cdk().propertyValidator("maxPendingRequests",cdk().validateNumber)(properties.maxPendingRequests)),errors.wrap('supplied properties not correct for "VirtualGatewayHttpConnectionPoolProperty"')}function convertCfnVirtualGatewayVirtualGatewayHttpConnectionPoolPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualGatewayVirtualGatewayHttpConnectionPoolPropertyValidator(properties).assertSuccess(),{MaxConnections:cdk().numberToCloudFormation(properties.maxConnections),MaxPendingRequests:cdk().numberToCloudFormation(properties.maxPendingRequests)}):properties}function CfnVirtualGatewayVirtualGatewayHttpConnectionPoolPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("maxConnections","MaxConnections",properties.MaxConnections!=null?cfn_parse().FromCloudFormation.getNumber(properties.MaxConnections):void 0),ret.addPropertyResult("maxPendingRequests","MaxPendingRequests",properties.MaxPendingRequests!=null?cfn_parse().FromCloudFormation.getNumber(properties.MaxPendingRequests):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualGatewayVirtualGatewayGrpcConnectionPoolPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("maxRequests",cdk().requiredValidator)(properties.maxRequests)),errors.collect(cdk().propertyValidator("maxRequests",cdk().validateNumber)(properties.maxRequests)),errors.wrap('supplied properties not correct for "VirtualGatewayGrpcConnectionPoolProperty"')}function convertCfnVirtualGatewayVirtualGatewayGrpcConnectionPoolPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualGatewayVirtualGatewayGrpcConnectionPoolPropertyValidator(properties).assertSuccess(),{MaxRequests:cdk().numberToCloudFormation(properties.maxRequests)}):properties}function CfnVirtualGatewayVirtualGatewayGrpcConnectionPoolPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("maxRequests","MaxRequests",properties.MaxRequests!=null?cfn_parse().FromCloudFormation.getNumber(properties.MaxRequests):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualGatewayVirtualGatewayConnectionPoolPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("grpc",CfnVirtualGatewayVirtualGatewayGrpcConnectionPoolPropertyValidator)(properties.grpc)),errors.collect(cdk().propertyValidator("http",CfnVirtualGatewayVirtualGatewayHttpConnectionPoolPropertyValidator)(properties.http)),errors.collect(cdk().propertyValidator("http2",CfnVirtualGatewayVirtualGatewayHttp2ConnectionPoolPropertyValidator)(properties.http2)),errors.wrap('supplied properties not correct for "VirtualGatewayConnectionPoolProperty"')}function convertCfnVirtualGatewayVirtualGatewayConnectionPoolPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualGatewayVirtualGatewayConnectionPoolPropertyValidator(properties).assertSuccess(),{GRPC:convertCfnVirtualGatewayVirtualGatewayGrpcConnectionPoolPropertyToCloudFormation(properties.grpc),HTTP:convertCfnVirtualGatewayVirtualGatewayHttpConnectionPoolPropertyToCloudFormation(properties.http),HTTP2:convertCfnVirtualGatewayVirtualGatewayHttp2ConnectionPoolPropertyToCloudFormation(properties.http2)}):properties}function CfnVirtualGatewayVirtualGatewayConnectionPoolPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("grpc","GRPC",properties.GRPC!=null?CfnVirtualGatewayVirtualGatewayGrpcConnectionPoolPropertyFromCloudFormation(properties.GRPC):void 0),ret.addPropertyResult("http","HTTP",properties.HTTP!=null?CfnVirtualGatewayVirtualGatewayHttpConnectionPoolPropertyFromCloudFormation(properties.HTTP):void 0),ret.addPropertyResult("http2","HTTP2",properties.HTTP2!=null?CfnVirtualGatewayVirtualGatewayHttp2ConnectionPoolPropertyFromCloudFormation(properties.HTTP2):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualGatewayVirtualGatewayHealthCheckPolicyPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("healthyThreshold",cdk().requiredValidator)(properties.healthyThreshold)),errors.collect(cdk().propertyValidator("healthyThreshold",cdk().validateNumber)(properties.healthyThreshold)),errors.collect(cdk().propertyValidator("intervalMillis",cdk().requiredValidator)(properties.intervalMillis)),errors.collect(cdk().propertyValidator("intervalMillis",cdk().validateNumber)(properties.intervalMillis)),errors.collect(cdk().propertyValidator("path",cdk().validateString)(properties.path)),errors.collect(cdk().propertyValidator("port",cdk().validateNumber)(properties.port)),errors.collect(cdk().propertyValidator("protocol",cdk().requiredValidator)(properties.protocol)),errors.collect(cdk().propertyValidator("protocol",cdk().validateString)(properties.protocol)),errors.collect(cdk().propertyValidator("timeoutMillis",cdk().requiredValidator)(properties.timeoutMillis)),errors.collect(cdk().propertyValidator("timeoutMillis",cdk().validateNumber)(properties.timeoutMillis)),errors.collect(cdk().propertyValidator("unhealthyThreshold",cdk().requiredValidator)(properties.unhealthyThreshold)),errors.collect(cdk().propertyValidator("unhealthyThreshold",cdk().validateNumber)(properties.unhealthyThreshold)),errors.wrap('supplied properties not correct for "VirtualGatewayHealthCheckPolicyProperty"')}function convertCfnVirtualGatewayVirtualGatewayHealthCheckPolicyPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualGatewayVirtualGatewayHealthCheckPolicyPropertyValidator(properties).assertSuccess(),{HealthyThreshold:cdk().numberToCloudFormation(properties.healthyThreshold),IntervalMillis:cdk().numberToCloudFormation(properties.intervalMillis),Path:cdk().stringToCloudFormation(properties.path),Port:cdk().numberToCloudFormation(properties.port),Protocol:cdk().stringToCloudFormation(properties.protocol),TimeoutMillis:cdk().numberToCloudFormation(properties.timeoutMillis),UnhealthyThreshold:cdk().numberToCloudFormation(properties.unhealthyThreshold)}):properties}function CfnVirtualGatewayVirtualGatewayHealthCheckPolicyPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("healthyThreshold","HealthyThreshold",properties.HealthyThreshold!=null?cfn_parse().FromCloudFormation.getNumber(properties.HealthyThreshold):void 0),ret.addPropertyResult("intervalMillis","IntervalMillis",properties.IntervalMillis!=null?cfn_parse().FromCloudFormation.getNumber(properties.IntervalMillis):void 0),ret.addPropertyResult("path","Path",properties.Path!=null?cfn_parse().FromCloudFormation.getString(properties.Path):void 0),ret.addPropertyResult("port","Port",properties.Port!=null?cfn_parse().FromCloudFormation.getNumber(properties.Port):void 0),ret.addPropertyResult("protocol","Protocol",properties.Protocol!=null?cfn_parse().FromCloudFormation.getString(properties.Protocol):void 0),ret.addPropertyResult("timeoutMillis","TimeoutMillis",properties.TimeoutMillis!=null?cfn_parse().FromCloudFormation.getNumber(properties.TimeoutMillis):void 0),ret.addPropertyResult("unhealthyThreshold","UnhealthyThreshold",properties.UnhealthyThreshold!=null?cfn_parse().FromCloudFormation.getNumber(properties.UnhealthyThreshold):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualGatewaySubjectAlternativeNameMatchersPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("exact",cdk().listValidator(cdk().validateString))(properties.exact)),errors.wrap('supplied properties not correct for "SubjectAlternativeNameMatchersProperty"')}function convertCfnVirtualGatewaySubjectAlternativeNameMatchersPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualGatewaySubjectAlternativeNameMatchersPropertyValidator(properties).assertSuccess(),{Exact:cdk().listMapper(cdk().stringToCloudFormation)(properties.exact)}):properties}function CfnVirtualGatewaySubjectAlternativeNameMatchersPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("exact","Exact",properties.Exact!=null?cfn_parse().FromCloudFormation.getArray(cfn_parse().FromCloudFormation.getString)(properties.Exact):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualGatewaySubjectAlternativeNamesPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("match",cdk().requiredValidator)(properties.match)),errors.collect(cdk().propertyValidator("match",CfnVirtualGatewaySubjectAlternativeNameMatchersPropertyValidator)(properties.match)),errors.wrap('supplied properties not correct for "SubjectAlternativeNamesProperty"')}function convertCfnVirtualGatewaySubjectAlternativeNamesPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualGatewaySubjectAlternativeNamesPropertyValidator(properties).assertSuccess(),{Match:convertCfnVirtualGatewaySubjectAlternativeNameMatchersPropertyToCloudFormation(properties.match)}):properties}function CfnVirtualGatewaySubjectAlternativeNamesPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("match","Match",properties.Match!=null?CfnVirtualGatewaySubjectAlternativeNameMatchersPropertyFromCloudFormation(properties.Match):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualGatewayVirtualGatewayTlsValidationContextSdsTrustPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("secretName",cdk().requiredValidator)(properties.secretName)),errors.collect(cdk().propertyValidator("secretName",cdk().validateString)(properties.secretName)),errors.wrap('supplied properties not correct for "VirtualGatewayTlsValidationContextSdsTrustProperty"')}function convertCfnVirtualGatewayVirtualGatewayTlsValidationContextSdsTrustPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualGatewayVirtualGatewayTlsValidationContextSdsTrustPropertyValidator(properties).assertSuccess(),{SecretName:cdk().stringToCloudFormation(properties.secretName)}):properties}function CfnVirtualGatewayVirtualGatewayTlsValidationContextSdsTrustPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("secretName","SecretName",properties.SecretName!=null?cfn_parse().FromCloudFormation.getString(properties.SecretName):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualGatewayVirtualGatewayTlsValidationContextFileTrustPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("certificateChain",cdk().requiredValidator)(properties.certificateChain)),errors.collect(cdk().propertyValidator("certificateChain",cdk().validateString)(properties.certificateChain)),errors.wrap('supplied properties not correct for "VirtualGatewayTlsValidationContextFileTrustProperty"')}function convertCfnVirtualGatewayVirtualGatewayTlsValidationContextFileTrustPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualGatewayVirtualGatewayTlsValidationContextFileTrustPropertyValidator(properties).assertSuccess(),{CertificateChain:cdk().stringToCloudFormation(properties.certificateChain)}):properties}function CfnVirtualGatewayVirtualGatewayTlsValidationContextFileTrustPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("certificateChain","CertificateChain",properties.CertificateChain!=null?cfn_parse().FromCloudFormation.getString(properties.CertificateChain):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualGatewayVirtualGatewayListenerTlsValidationContextTrustPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("file",CfnVirtualGatewayVirtualGatewayTlsValidationContextFileTrustPropertyValidator)(properties.file)),errors.collect(cdk().propertyValidator("sds",CfnVirtualGatewayVirtualGatewayTlsValidationContextSdsTrustPropertyValidator)(properties.sds)),errors.wrap('supplied properties not correct for "VirtualGatewayListenerTlsValidationContextTrustProperty"')}function convertCfnVirtualGatewayVirtualGatewayListenerTlsValidationContextTrustPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualGatewayVirtualGatewayListenerTlsValidationContextTrustPropertyValidator(properties).assertSuccess(),{File:convertCfnVirtualGatewayVirtualGatewayTlsValidationContextFileTrustPropertyToCloudFormation(properties.file),SDS:convertCfnVirtualGatewayVirtualGatewayTlsValidationContextSdsTrustPropertyToCloudFormation(properties.sds)}):properties}function CfnVirtualGatewayVirtualGatewayListenerTlsValidationContextTrustPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("file","File",properties.File!=null?CfnVirtualGatewayVirtualGatewayTlsValidationContextFileTrustPropertyFromCloudFormation(properties.File):void 0),ret.addPropertyResult("sds","SDS",properties.SDS!=null?CfnVirtualGatewayVirtualGatewayTlsValidationContextSdsTrustPropertyFromCloudFormation(properties.SDS):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualGatewayVirtualGatewayListenerTlsValidationContextPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("subjectAlternativeNames",CfnVirtualGatewaySubjectAlternativeNamesPropertyValidator)(properties.subjectAlternativeNames)),errors.collect(cdk().propertyValidator("trust",cdk().requiredValidator)(properties.trust)),errors.collect(cdk().propertyValidator("trust",CfnVirtualGatewayVirtualGatewayListenerTlsValidationContextTrustPropertyValidator)(properties.trust)),errors.wrap('supplied properties not correct for "VirtualGatewayListenerTlsValidationContextProperty"')}function convertCfnVirtualGatewayVirtualGatewayListenerTlsValidationContextPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualGatewayVirtualGatewayListenerTlsValidationContextPropertyValidator(properties).assertSuccess(),{SubjectAlternativeNames:convertCfnVirtualGatewaySubjectAlternativeNamesPropertyToCloudFormation(properties.subjectAlternativeNames),Trust:convertCfnVirtualGatewayVirtualGatewayListenerTlsValidationContextTrustPropertyToCloudFormation(properties.trust)}):properties}function CfnVirtualGatewayVirtualGatewayListenerTlsValidationContextPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("subjectAlternativeNames","SubjectAlternativeNames",properties.SubjectAlternativeNames!=null?CfnVirtualGatewaySubjectAlternativeNamesPropertyFromCloudFormation(properties.SubjectAlternativeNames):void 0),ret.addPropertyResult("trust","Trust",properties.Trust!=null?CfnVirtualGatewayVirtualGatewayListenerTlsValidationContextTrustPropertyFromCloudFormation(properties.Trust):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualGatewayVirtualGatewayListenerTlsSdsCertificatePropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("secretName",cdk().requiredValidator)(properties.secretName)),errors.collect(cdk().propertyValidator("secretName",cdk().validateString)(properties.secretName)),errors.wrap('supplied properties not correct for "VirtualGatewayListenerTlsSdsCertificateProperty"')}function convertCfnVirtualGatewayVirtualGatewayListenerTlsSdsCertificatePropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualGatewayVirtualGatewayListenerTlsSdsCertificatePropertyValidator(properties).assertSuccess(),{SecretName:cdk().stringToCloudFormation(properties.secretName)}):properties}function CfnVirtualGatewayVirtualGatewayListenerTlsSdsCertificatePropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("secretName","SecretName",properties.SecretName!=null?cfn_parse().FromCloudFormation.getString(properties.SecretName):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualGatewayVirtualGatewayListenerTlsAcmCertificatePropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("certificateArn",cdk().requiredValidator)(properties.certificateArn)),errors.collect(cdk().propertyValidator("certificateArn",cdk().validateString)(properties.certificateArn)),errors.wrap('supplied properties not correct for "VirtualGatewayListenerTlsAcmCertificateProperty"')}function convertCfnVirtualGatewayVirtualGatewayListenerTlsAcmCertificatePropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualGatewayVirtualGatewayListenerTlsAcmCertificatePropertyValidator(properties).assertSuccess(),{CertificateArn:cdk().stringToCloudFormation(properties.certificateArn)}):properties}function CfnVirtualGatewayVirtualGatewayListenerTlsAcmCertificatePropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("certificateArn","CertificateArn",properties.CertificateArn!=null?cfn_parse().FromCloudFormation.getString(properties.CertificateArn):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualGatewayVirtualGatewayListenerTlsFileCertificatePropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("certificateChain",cdk().requiredValidator)(properties.certificateChain)),errors.collect(cdk().propertyValidator("certificateChain",cdk().validateString)(properties.certificateChain)),errors.collect(cdk().propertyValidator("privateKey",cdk().requiredValidator)(properties.privateKey)),errors.collect(cdk().propertyValidator("privateKey",cdk().validateString)(properties.privateKey)),errors.wrap('supplied properties not correct for "VirtualGatewayListenerTlsFileCertificateProperty"')}function convertCfnVirtualGatewayVirtualGatewayListenerTlsFileCertificatePropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualGatewayVirtualGatewayListenerTlsFileCertificatePropertyValidator(properties).assertSuccess(),{CertificateChain:cdk().stringToCloudFormation(properties.certificateChain),PrivateKey:cdk().stringToCloudFormation(properties.privateKey)}):properties}function CfnVirtualGatewayVirtualGatewayListenerTlsFileCertificatePropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("certificateChain","CertificateChain",properties.CertificateChain!=null?cfn_parse().FromCloudFormation.getString(properties.CertificateChain):void 0),ret.addPropertyResult("privateKey","PrivateKey",properties.PrivateKey!=null?cfn_parse().FromCloudFormation.getString(properties.PrivateKey):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualGatewayVirtualGatewayListenerTlsCertificatePropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("acm",CfnVirtualGatewayVirtualGatewayListenerTlsAcmCertificatePropertyValidator)(properties.acm)),errors.collect(cdk().propertyValidator("file",CfnVirtualGatewayVirtualGatewayListenerTlsFileCertificatePropertyValidator)(properties.file)),errors.collect(cdk().propertyValidator("sds",CfnVirtualGatewayVirtualGatewayListenerTlsSdsCertificatePropertyValidator)(properties.sds)),errors.wrap('supplied properties not correct for "VirtualGatewayListenerTlsCertificateProperty"')}function convertCfnVirtualGatewayVirtualGatewayListenerTlsCertificatePropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualGatewayVirtualGatewayListenerTlsCertificatePropertyValidator(properties).assertSuccess(),{ACM:convertCfnVirtualGatewayVirtualGatewayListenerTlsAcmCertificatePropertyToCloudFormation(properties.acm),File:convertCfnVirtualGatewayVirtualGatewayListenerTlsFileCertificatePropertyToCloudFormation(properties.file),SDS:convertCfnVirtualGatewayVirtualGatewayListenerTlsSdsCertificatePropertyToCloudFormation(properties.sds)}):properties}function CfnVirtualGatewayVirtualGatewayListenerTlsCertificatePropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("acm","ACM",properties.ACM!=null?CfnVirtualGatewayVirtualGatewayListenerTlsAcmCertificatePropertyFromCloudFormation(properties.ACM):void 0),ret.addPropertyResult("file","File",properties.File!=null?CfnVirtualGatewayVirtualGatewayListenerTlsFileCertificatePropertyFromCloudFormation(properties.File):void 0),ret.addPropertyResult("sds","SDS",properties.SDS!=null?CfnVirtualGatewayVirtualGatewayListenerTlsSdsCertificatePropertyFromCloudFormation(properties.SDS):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualGatewayVirtualGatewayListenerTlsPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("certificate",cdk().requiredValidator)(properties.certificate)),errors.collect(cdk().propertyValidator("certificate",CfnVirtualGatewayVirtualGatewayListenerTlsCertificatePropertyValidator)(properties.certificate)),errors.collect(cdk().propertyValidator("mode",cdk().requiredValidator)(properties.mode)),errors.collect(cdk().propertyValidator("mode",cdk().validateString)(properties.mode)),errors.collect(cdk().propertyValidator("validation",CfnVirtualGatewayVirtualGatewayListenerTlsValidationContextPropertyValidator)(properties.validation)),errors.wrap('supplied properties not correct for "VirtualGatewayListenerTlsProperty"')}function convertCfnVirtualGatewayVirtualGatewayListenerTlsPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualGatewayVirtualGatewayListenerTlsPropertyValidator(properties).assertSuccess(),{Certificate:convertCfnVirtualGatewayVirtualGatewayListenerTlsCertificatePropertyToCloudFormation(properties.certificate),Mode:cdk().stringToCloudFormation(properties.mode),Validation:convertCfnVirtualGatewayVirtualGatewayListenerTlsValidationContextPropertyToCloudFormation(properties.validation)}):properties}function CfnVirtualGatewayVirtualGatewayListenerTlsPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("certificate","Certificate",properties.Certificate!=null?CfnVirtualGatewayVirtualGatewayListenerTlsCertificatePropertyFromCloudFormation(properties.Certificate):void 0),ret.addPropertyResult("mode","Mode",properties.Mode!=null?cfn_parse().FromCloudFormation.getString(properties.Mode):void 0),ret.addPropertyResult("validation","Validation",properties.Validation!=null?CfnVirtualGatewayVirtualGatewayListenerTlsValidationContextPropertyFromCloudFormation(properties.Validation):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualGatewayVirtualGatewayPortMappingPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("port",cdk().requiredValidator)(properties.port)),errors.collect(cdk().propertyValidator("port",cdk().validateNumber)(properties.port)),errors.collect(cdk().propertyValidator("protocol",cdk().requiredValidator)(properties.protocol)),errors.collect(cdk().propertyValidator("protocol",cdk().validateString)(properties.protocol)),errors.wrap('supplied properties not correct for "VirtualGatewayPortMappingProperty"')}function convertCfnVirtualGatewayVirtualGatewayPortMappingPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualGatewayVirtualGatewayPortMappingPropertyValidator(properties).assertSuccess(),{Port:cdk().numberToCloudFormation(properties.port),Protocol:cdk().stringToCloudFormation(properties.protocol)}):properties}function CfnVirtualGatewayVirtualGatewayPortMappingPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("port","Port",properties.Port!=null?cfn_parse().FromCloudFormation.getNumber(properties.Port):void 0),ret.addPropertyResult("protocol","Protocol",properties.Protocol!=null?cfn_parse().FromCloudFormation.getString(properties.Protocol):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualGatewayVirtualGatewayListenerPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("connectionPool",CfnVirtualGatewayVirtualGatewayConnectionPoolPropertyValidator)(properties.connectionPool)),errors.collect(cdk().propertyValidator("healthCheck",CfnVirtualGatewayVirtualGatewayHealthCheckPolicyPropertyValidator)(properties.healthCheck)),errors.collect(cdk().propertyValidator("portMapping",cdk().requiredValidator)(properties.portMapping)),errors.collect(cdk().propertyValidator("portMapping",CfnVirtualGatewayVirtualGatewayPortMappingPropertyValidator)(properties.portMapping)),errors.collect(cdk().propertyValidator("tls",CfnVirtualGatewayVirtualGatewayListenerTlsPropertyValidator)(properties.tls)),errors.wrap('supplied properties not correct for "VirtualGatewayListenerProperty"')}function convertCfnVirtualGatewayVirtualGatewayListenerPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualGatewayVirtualGatewayListenerPropertyValidator(properties).assertSuccess(),{ConnectionPool:convertCfnVirtualGatewayVirtualGatewayConnectionPoolPropertyToCloudFormation(properties.connectionPool),HealthCheck:convertCfnVirtualGatewayVirtualGatewayHealthCheckPolicyPropertyToCloudFormation(properties.healthCheck),PortMapping:convertCfnVirtualGatewayVirtualGatewayPortMappingPropertyToCloudFormation(properties.portMapping),TLS:convertCfnVirtualGatewayVirtualGatewayListenerTlsPropertyToCloudFormation(properties.tls)}):properties}function CfnVirtualGatewayVirtualGatewayListenerPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("connectionPool","ConnectionPool",properties.ConnectionPool!=null?CfnVirtualGatewayVirtualGatewayConnectionPoolPropertyFromCloudFormation(properties.ConnectionPool):void 0),ret.addPropertyResult("healthCheck","HealthCheck",properties.HealthCheck!=null?CfnVirtualGatewayVirtualGatewayHealthCheckPolicyPropertyFromCloudFormation(properties.HealthCheck):void 0),ret.addPropertyResult("portMapping","PortMapping",properties.PortMapping!=null?CfnVirtualGatewayVirtualGatewayPortMappingPropertyFromCloudFormation(properties.PortMapping):void 0),ret.addPropertyResult("tls","TLS",properties.TLS!=null?CfnVirtualGatewayVirtualGatewayListenerTlsPropertyFromCloudFormation(properties.TLS):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualGatewayVirtualGatewayTlsValidationContextAcmTrustPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("certificateAuthorityArns",cdk().requiredValidator)(properties.certificateAuthorityArns)),errors.collect(cdk().propertyValidator("certificateAuthorityArns",cdk().listValidator(cdk().validateString))(properties.certificateAuthorityArns)),errors.wrap('supplied properties not correct for "VirtualGatewayTlsValidationContextAcmTrustProperty"')}function convertCfnVirtualGatewayVirtualGatewayTlsValidationContextAcmTrustPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualGatewayVirtualGatewayTlsValidationContextAcmTrustPropertyValidator(properties).assertSuccess(),{CertificateAuthorityArns:cdk().listMapper(cdk().stringToCloudFormation)(properties.certificateAuthorityArns)}):properties}function CfnVirtualGatewayVirtualGatewayTlsValidationContextAcmTrustPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("certificateAuthorityArns","CertificateAuthorityArns",properties.CertificateAuthorityArns!=null?cfn_parse().FromCloudFormation.getArray(cfn_parse().FromCloudFormation.getString)(properties.CertificateAuthorityArns):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualGatewayVirtualGatewayTlsValidationContextTrustPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("acm",CfnVirtualGatewayVirtualGatewayTlsValidationContextAcmTrustPropertyValidator)(properties.acm)),errors.collect(cdk().propertyValidator("file",CfnVirtualGatewayVirtualGatewayTlsValidationContextFileTrustPropertyValidator)(properties.file)),errors.collect(cdk().propertyValidator("sds",CfnVirtualGatewayVirtualGatewayTlsValidationContextSdsTrustPropertyValidator)(properties.sds)),errors.wrap('supplied properties not correct for "VirtualGatewayTlsValidationContextTrustProperty"')}function convertCfnVirtualGatewayVirtualGatewayTlsValidationContextTrustPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualGatewayVirtualGatewayTlsValidationContextTrustPropertyValidator(properties).assertSuccess(),{ACM:convertCfnVirtualGatewayVirtualGatewayTlsValidationContextAcmTrustPropertyToCloudFormation(properties.acm),File:convertCfnVirtualGatewayVirtualGatewayTlsValidationContextFileTrustPropertyToCloudFormation(properties.file),SDS:convertCfnVirtualGatewayVirtualGatewayTlsValidationContextSdsTrustPropertyToCloudFormation(properties.sds)}):properties}function CfnVirtualGatewayVirtualGatewayTlsValidationContextTrustPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("acm","ACM",properties.ACM!=null?CfnVirtualGatewayVirtualGatewayTlsValidationContextAcmTrustPropertyFromCloudFormation(properties.ACM):void 0),ret.addPropertyResult("file","File",properties.File!=null?CfnVirtualGatewayVirtualGatewayTlsValidationContextFileTrustPropertyFromCloudFormation(properties.File):void 0),ret.addPropertyResult("sds","SDS",properties.SDS!=null?CfnVirtualGatewayVirtualGatewayTlsValidationContextSdsTrustPropertyFromCloudFormation(properties.SDS):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualGatewayVirtualGatewayTlsValidationContextPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("subjectAlternativeNames",CfnVirtualGatewaySubjectAlternativeNamesPropertyValidator)(properties.subjectAlternativeNames)),errors.collect(cdk().propertyValidator("trust",cdk().requiredValidator)(properties.trust)),errors.collect(cdk().propertyValidator("trust",CfnVirtualGatewayVirtualGatewayTlsValidationContextTrustPropertyValidator)(properties.trust)),errors.wrap('supplied properties not correct for "VirtualGatewayTlsValidationContextProperty"')}function convertCfnVirtualGatewayVirtualGatewayTlsValidationContextPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualGatewayVirtualGatewayTlsValidationContextPropertyValidator(properties).assertSuccess(),{SubjectAlternativeNames:convertCfnVirtualGatewaySubjectAlternativeNamesPropertyToCloudFormation(properties.subjectAlternativeNames),Trust:convertCfnVirtualGatewayVirtualGatewayTlsValidationContextTrustPropertyToCloudFormation(properties.trust)}):properties}function CfnVirtualGatewayVirtualGatewayTlsValidationContextPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("subjectAlternativeNames","SubjectAlternativeNames",properties.SubjectAlternativeNames!=null?CfnVirtualGatewaySubjectAlternativeNamesPropertyFromCloudFormation(properties.SubjectAlternativeNames):void 0),ret.addPropertyResult("trust","Trust",properties.Trust!=null?CfnVirtualGatewayVirtualGatewayTlsValidationContextTrustPropertyFromCloudFormation(properties.Trust):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualGatewayVirtualGatewayClientTlsCertificatePropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("file",CfnVirtualGatewayVirtualGatewayListenerTlsFileCertificatePropertyValidator)(properties.file)),errors.collect(cdk().propertyValidator("sds",CfnVirtualGatewayVirtualGatewayListenerTlsSdsCertificatePropertyValidator)(properties.sds)),errors.wrap('supplied properties not correct for "VirtualGatewayClientTlsCertificateProperty"')}function convertCfnVirtualGatewayVirtualGatewayClientTlsCertificatePropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualGatewayVirtualGatewayClientTlsCertificatePropertyValidator(properties).assertSuccess(),{File:convertCfnVirtualGatewayVirtualGatewayListenerTlsFileCertificatePropertyToCloudFormation(properties.file),SDS:convertCfnVirtualGatewayVirtualGatewayListenerTlsSdsCertificatePropertyToCloudFormation(properties.sds)}):properties}function CfnVirtualGatewayVirtualGatewayClientTlsCertificatePropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("file","File",properties.File!=null?CfnVirtualGatewayVirtualGatewayListenerTlsFileCertificatePropertyFromCloudFormation(properties.File):void 0),ret.addPropertyResult("sds","SDS",properties.SDS!=null?CfnVirtualGatewayVirtualGatewayListenerTlsSdsCertificatePropertyFromCloudFormation(properties.SDS):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualGatewayVirtualGatewayClientPolicyTlsPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("certificate",CfnVirtualGatewayVirtualGatewayClientTlsCertificatePropertyValidator)(properties.certificate)),errors.collect(cdk().propertyValidator("enforce",cdk().validateBoolean)(properties.enforce)),errors.collect(cdk().propertyValidator("ports",cdk().listValidator(cdk().validateNumber))(properties.ports)),errors.collect(cdk().propertyValidator("validation",cdk().requiredValidator)(properties.validation)),errors.collect(cdk().propertyValidator("validation",CfnVirtualGatewayVirtualGatewayTlsValidationContextPropertyValidator)(properties.validation)),errors.wrap('supplied properties not correct for "VirtualGatewayClientPolicyTlsProperty"')}function convertCfnVirtualGatewayVirtualGatewayClientPolicyTlsPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualGatewayVirtualGatewayClientPolicyTlsPropertyValidator(properties).assertSuccess(),{Certificate:convertCfnVirtualGatewayVirtualGatewayClientTlsCertificatePropertyToCloudFormation(properties.certificate),Enforce:cdk().booleanToCloudFormation(properties.enforce),Ports:cdk().listMapper(cdk().numberToCloudFormation)(properties.ports),Validation:convertCfnVirtualGatewayVirtualGatewayTlsValidationContextPropertyToCloudFormation(properties.validation)}):properties}function CfnVirtualGatewayVirtualGatewayClientPolicyTlsPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("certificate","Certificate",properties.Certificate!=null?CfnVirtualGatewayVirtualGatewayClientTlsCertificatePropertyFromCloudFormation(properties.Certificate):void 0),ret.addPropertyResult("enforce","Enforce",properties.Enforce!=null?cfn_parse().FromCloudFormation.getBoolean(properties.Enforce):void 0),ret.addPropertyResult("ports","Ports",properties.Ports!=null?cfn_parse().FromCloudFormation.getArray(cfn_parse().FromCloudFormation.getNumber)(properties.Ports):void 0),ret.addPropertyResult("validation","Validation",properties.Validation!=null?CfnVirtualGatewayVirtualGatewayTlsValidationContextPropertyFromCloudFormation(properties.Validation):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualGatewayVirtualGatewayClientPolicyPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("tls",CfnVirtualGatewayVirtualGatewayClientPolicyTlsPropertyValidator)(properties.tls)),errors.wrap('supplied properties not correct for "VirtualGatewayClientPolicyProperty"')}function convertCfnVirtualGatewayVirtualGatewayClientPolicyPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualGatewayVirtualGatewayClientPolicyPropertyValidator(properties).assertSuccess(),{TLS:convertCfnVirtualGatewayVirtualGatewayClientPolicyTlsPropertyToCloudFormation(properties.tls)}):properties}function CfnVirtualGatewayVirtualGatewayClientPolicyPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("tls","TLS",properties.TLS!=null?CfnVirtualGatewayVirtualGatewayClientPolicyTlsPropertyFromCloudFormation(properties.TLS):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualGatewayVirtualGatewayBackendDefaultsPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("clientPolicy",CfnVirtualGatewayVirtualGatewayClientPolicyPropertyValidator)(properties.clientPolicy)),errors.wrap('supplied properties not correct for "VirtualGatewayBackendDefaultsProperty"')}function convertCfnVirtualGatewayVirtualGatewayBackendDefaultsPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualGatewayVirtualGatewayBackendDefaultsPropertyValidator(properties).assertSuccess(),{ClientPolicy:convertCfnVirtualGatewayVirtualGatewayClientPolicyPropertyToCloudFormation(properties.clientPolicy)}):properties}function CfnVirtualGatewayVirtualGatewayBackendDefaultsPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("clientPolicy","ClientPolicy",properties.ClientPolicy!=null?CfnVirtualGatewayVirtualGatewayClientPolicyPropertyFromCloudFormation(properties.ClientPolicy):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualGatewayVirtualGatewaySpecPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("backendDefaults",CfnVirtualGatewayVirtualGatewayBackendDefaultsPropertyValidator)(properties.backendDefaults)),errors.collect(cdk().propertyValidator("listeners",cdk().requiredValidator)(properties.listeners)),errors.collect(cdk().propertyValidator("listeners",cdk().listValidator(CfnVirtualGatewayVirtualGatewayListenerPropertyValidator))(properties.listeners)),errors.collect(cdk().propertyValidator("logging",CfnVirtualGatewayVirtualGatewayLoggingPropertyValidator)(properties.logging)),errors.wrap('supplied properties not correct for "VirtualGatewaySpecProperty"')}function convertCfnVirtualGatewayVirtualGatewaySpecPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualGatewayVirtualGatewaySpecPropertyValidator(properties).assertSuccess(),{BackendDefaults:convertCfnVirtualGatewayVirtualGatewayBackendDefaultsPropertyToCloudFormation(properties.backendDefaults),Listeners:cdk().listMapper(convertCfnVirtualGatewayVirtualGatewayListenerPropertyToCloudFormation)(properties.listeners),Logging:convertCfnVirtualGatewayVirtualGatewayLoggingPropertyToCloudFormation(properties.logging)}):properties}function CfnVirtualGatewayVirtualGatewaySpecPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("backendDefaults","BackendDefaults",properties.BackendDefaults!=null?CfnVirtualGatewayVirtualGatewayBackendDefaultsPropertyFromCloudFormation(properties.BackendDefaults):void 0),ret.addPropertyResult("listeners","Listeners",properties.Listeners!=null?cfn_parse().FromCloudFormation.getArray(CfnVirtualGatewayVirtualGatewayListenerPropertyFromCloudFormation)(properties.Listeners):void 0),ret.addPropertyResult("logging","Logging",properties.Logging!=null?CfnVirtualGatewayVirtualGatewayLoggingPropertyFromCloudFormation(properties.Logging):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualGatewayPropsValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("meshName",cdk().requiredValidator)(properties.meshName)),errors.collect(cdk().propertyValidator("meshName",cdk().validateString)(properties.meshName)),errors.collect(cdk().propertyValidator("meshOwner",cdk().validateString)(properties.meshOwner)),errors.collect(cdk().propertyValidator("spec",cdk().requiredValidator)(properties.spec)),errors.collect(cdk().propertyValidator("spec",CfnVirtualGatewayVirtualGatewaySpecPropertyValidator)(properties.spec)),errors.collect(cdk().propertyValidator("tags",cdk().listValidator(cdk().validateCfnTag))(properties.tags)),errors.collect(cdk().propertyValidator("virtualGatewayName",cdk().validateString)(properties.virtualGatewayName)),errors.wrap('supplied properties not correct for "CfnVirtualGatewayProps"')}function convertCfnVirtualGatewayPropsToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualGatewayPropsValidator(properties).assertSuccess(),{MeshName:cdk().stringToCloudFormation(properties.meshName),MeshOwner:cdk().stringToCloudFormation(properties.meshOwner),Spec:convertCfnVirtualGatewayVirtualGatewaySpecPropertyToCloudFormation(properties.spec),Tags:cdk().listMapper(cdk().cfnTagToCloudFormation)(properties.tags),VirtualGatewayName:cdk().stringToCloudFormation(properties.virtualGatewayName)}):properties}function CfnVirtualGatewayPropsFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("meshName","MeshName",properties.MeshName!=null?cfn_parse().FromCloudFormation.getString(properties.MeshName):void 0),ret.addPropertyResult("meshOwner","MeshOwner",properties.MeshOwner!=null?cfn_parse().FromCloudFormation.getString(properties.MeshOwner):void 0),ret.addPropertyResult("spec","Spec",properties.Spec!=null?CfnVirtualGatewayVirtualGatewaySpecPropertyFromCloudFormation(properties.Spec):void 0),ret.addPropertyResult("tags","Tags",properties.Tags!=null?cfn_parse().FromCloudFormation.getArray(cfn_parse().FromCloudFormation.getCfnTag)(properties.Tags):void 0),ret.addPropertyResult("virtualGatewayName","VirtualGatewayName",properties.VirtualGatewayName!=null?cfn_parse().FromCloudFormation.getString(properties.VirtualGatewayName):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}class CfnVirtualNode extends cdk().CfnResource{static[JSII_RTTI_SYMBOL_1]={fqn:"aws-cdk-lib.aws_appmesh.CfnVirtualNode",version:"2.252.0"};static CFN_RESOURCE_TYPE_NAME="AWS::AppMesh::VirtualNode";static _fromCloudFormation(scope,id,resourceAttributes,options){resourceAttributes=resourceAttributes||{};const resourceProperties=options.parser.parseValue(resourceAttributes.Properties),propsResult=CfnVirtualNodePropsFromCloudFormation(resourceProperties);if(cdk().isResolvableObject(propsResult.value))throw new(cdk_errors()).ValidationError(cfn_parse().lit`UnexpectedIResolvable`,"Unexpected IResolvable",scope);const ret=new CfnVirtualNode(scope,id,propsResult.value);for(const[propKey,propVal]of Object.entries(propsResult.extraProperties))ret.addPropertyOverride(propKey,propVal);return options.parser.handleAttributes(ret,resourceAttributes,id),ret}static isCfnVirtualNode(x){return cdk().CfnResource.isCfnResource(x)&&x.cfnResourceType===CfnVirtualNode.CFN_RESOURCE_TYPE_NAME}static arnForVirtualNode(resource){try{jsiiDeprecationWarnings().aws_cdk_lib_interfaces_aws_appmesh_IVirtualNodeRef(resource)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.arnForVirtualNode),error}return resource.virtualNodeRef.virtualNodeArn}_meshName;_meshOwner;_spec;tags;_tagsRaw;_virtualNodeName;cfnPropertyNames={meshName:"MeshName",meshOwner:"MeshOwner",spec:"Spec",tags:"Tags",virtualNodeName:"VirtualNodeName"};constructor(scope,id,props){super(scope,id,{type:CfnVirtualNode.CFN_RESOURCE_TYPE_NAME,properties:props});try{jsiiDeprecationWarnings().aws_cdk_lib_aws_appmesh_CfnVirtualNodeProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,CfnVirtualNode),error}cdk().requireProperty(props,"meshName",this),cdk().requireProperty(props,"spec",this),this._meshName=props.meshName,this._meshOwner=props.meshOwner,this._spec=props.spec,this.tags=new(cdk()).TagManager(cdk().TagType.STANDARD,"AWS::AppMesh::VirtualNode",props.tags,{tagPropertyName:"tags"}),this._tagsRaw=props.tags,this._virtualNodeName=props.virtualNodeName}get virtualNodeRef(){return{virtualNodeArn:this.ref}}get meshName(){return this._meshName}set meshName(value){cdk().traceProperty(this.node,"MeshName"),this._meshName=value}get meshOwner(){return this._meshOwner}set meshOwner(value){cdk().traceProperty(this.node,"MeshOwner"),this._meshOwner=value}get spec(){return this._spec}set spec(value){cdk().traceProperty(this.node,"Spec"),this._spec=value}get tagsRaw(){return this._tagsRaw}set tagsRaw(value){cdk().traceProperty(this.node,"Tags"),this._tagsRaw=value}get virtualNodeName(){return this._virtualNodeName}set virtualNodeName(value){cdk().traceProperty(this.node,"VirtualNodeName"),this._virtualNodeName=value}get attrArn(){return cdk().Token.asString(this.getAtt("Arn",cdk().ResolutionTypeHint.STRING))}get attrId(){return cdk().Token.asString(this.getAtt("Id",cdk().ResolutionTypeHint.STRING))}get attrMeshName(){return cdk().Token.asString(this.getAtt("MeshName",cdk().ResolutionTypeHint.STRING))}get attrMeshOwner(){return cdk().Token.asString(this.getAtt("MeshOwner",cdk().ResolutionTypeHint.STRING))}get attrResourceOwner(){return cdk().Token.asString(this.getAtt("ResourceOwner",cdk().ResolutionTypeHint.STRING))}get attrUid(){return cdk().Token.asString(this.getAtt("Uid",cdk().ResolutionTypeHint.STRING))}get attrVirtualNodeName(){return cdk().Token.asString(this.getAtt("VirtualNodeName",cdk().ResolutionTypeHint.STRING))}get cfnProperties(){return{meshName:this._meshName,meshOwner:this._meshOwner,spec:this._spec,tags:this.tags.renderTags(),virtualNodeName:this._virtualNodeName}}inspect(inspector){try{jsiiDeprecationWarnings().aws_cdk_lib_TreeInspector(inspector)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.inspect),error}inspector.addAttribute("aws:cdk:cloudformation:type",CfnVirtualNode.CFN_RESOURCE_TYPE_NAME),inspector.addAttribute("aws:cdk:cloudformation:logicalId",this._synthesizeLogicalId()),inspector.addAttribute("aws:cdk:cloudformation:props",this.cfnProperties)}renderProperties(props){return convertCfnVirtualNodePropsToCloudFormation(props)}}exports.CfnVirtualNode=CfnVirtualNode;function CfnVirtualNodeJsonFormatRefPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("key",cdk().requiredValidator)(properties.key)),errors.collect(cdk().propertyValidator("key",cdk().validateString)(properties.key)),errors.collect(cdk().propertyValidator("value",cdk().requiredValidator)(properties.value)),errors.collect(cdk().propertyValidator("value",cdk().validateString)(properties.value)),errors.wrap('supplied properties not correct for "JsonFormatRefProperty"')}function convertCfnVirtualNodeJsonFormatRefPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeJsonFormatRefPropertyValidator(properties).assertSuccess(),{Key:cdk().stringToCloudFormation(properties.key),Value:cdk().stringToCloudFormation(properties.value)}):properties}function CfnVirtualNodeJsonFormatRefPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("key","Key",properties.Key!=null?cfn_parse().FromCloudFormation.getString(properties.Key):void 0),ret.addPropertyResult("value","Value",properties.Value!=null?cfn_parse().FromCloudFormation.getString(properties.Value):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeLoggingFormatPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("json",cdk().listValidator(CfnVirtualNodeJsonFormatRefPropertyValidator))(properties.json)),errors.collect(cdk().propertyValidator("text",cdk().validateString)(properties.text)),errors.wrap('supplied properties not correct for "LoggingFormatProperty"')}function convertCfnVirtualNodeLoggingFormatPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeLoggingFormatPropertyValidator(properties).assertSuccess(),{Json:cdk().listMapper(convertCfnVirtualNodeJsonFormatRefPropertyToCloudFormation)(properties.json),Text:cdk().stringToCloudFormation(properties.text)}):properties}function CfnVirtualNodeLoggingFormatPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("json","Json",properties.Json!=null?cfn_parse().FromCloudFormation.getArray(CfnVirtualNodeJsonFormatRefPropertyFromCloudFormation)(properties.Json):void 0),ret.addPropertyResult("text","Text",properties.Text!=null?cfn_parse().FromCloudFormation.getString(properties.Text):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeFileAccessLogPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("format",CfnVirtualNodeLoggingFormatPropertyValidator)(properties.format)),errors.collect(cdk().propertyValidator("path",cdk().requiredValidator)(properties.path)),errors.collect(cdk().propertyValidator("path",cdk().validateString)(properties.path)),errors.wrap('supplied properties not correct for "FileAccessLogProperty"')}function convertCfnVirtualNodeFileAccessLogPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeFileAccessLogPropertyValidator(properties).assertSuccess(),{Format:convertCfnVirtualNodeLoggingFormatPropertyToCloudFormation(properties.format),Path:cdk().stringToCloudFormation(properties.path)}):properties}function CfnVirtualNodeFileAccessLogPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("format","Format",properties.Format!=null?CfnVirtualNodeLoggingFormatPropertyFromCloudFormation(properties.Format):void 0),ret.addPropertyResult("path","Path",properties.Path!=null?cfn_parse().FromCloudFormation.getString(properties.Path):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeAccessLogPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("file",CfnVirtualNodeFileAccessLogPropertyValidator)(properties.file)),errors.wrap('supplied properties not correct for "AccessLogProperty"')}function convertCfnVirtualNodeAccessLogPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeAccessLogPropertyValidator(properties).assertSuccess(),{File:convertCfnVirtualNodeFileAccessLogPropertyToCloudFormation(properties.file)}):properties}function CfnVirtualNodeAccessLogPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("file","File",properties.File!=null?CfnVirtualNodeFileAccessLogPropertyFromCloudFormation(properties.File):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeLoggingPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("accessLog",CfnVirtualNodeAccessLogPropertyValidator)(properties.accessLog)),errors.wrap('supplied properties not correct for "LoggingProperty"')}function convertCfnVirtualNodeLoggingPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeLoggingPropertyValidator(properties).assertSuccess(),{AccessLog:convertCfnVirtualNodeAccessLogPropertyToCloudFormation(properties.accessLog)}):properties}function CfnVirtualNodeLoggingPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("accessLog","AccessLog",properties.AccessLog!=null?CfnVirtualNodeAccessLogPropertyFromCloudFormation(properties.AccessLog):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeSubjectAlternativeNameMatchersPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("exact",cdk().listValidator(cdk().validateString))(properties.exact)),errors.wrap('supplied properties not correct for "SubjectAlternativeNameMatchersProperty"')}function convertCfnVirtualNodeSubjectAlternativeNameMatchersPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeSubjectAlternativeNameMatchersPropertyValidator(properties).assertSuccess(),{Exact:cdk().listMapper(cdk().stringToCloudFormation)(properties.exact)}):properties}function CfnVirtualNodeSubjectAlternativeNameMatchersPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("exact","Exact",properties.Exact!=null?cfn_parse().FromCloudFormation.getArray(cfn_parse().FromCloudFormation.getString)(properties.Exact):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeSubjectAlternativeNamesPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("match",cdk().requiredValidator)(properties.match)),errors.collect(cdk().propertyValidator("match",CfnVirtualNodeSubjectAlternativeNameMatchersPropertyValidator)(properties.match)),errors.wrap('supplied properties not correct for "SubjectAlternativeNamesProperty"')}function convertCfnVirtualNodeSubjectAlternativeNamesPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeSubjectAlternativeNamesPropertyValidator(properties).assertSuccess(),{Match:convertCfnVirtualNodeSubjectAlternativeNameMatchersPropertyToCloudFormation(properties.match)}):properties}function CfnVirtualNodeSubjectAlternativeNamesPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("match","Match",properties.Match!=null?CfnVirtualNodeSubjectAlternativeNameMatchersPropertyFromCloudFormation(properties.Match):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeTlsValidationContextSdsTrustPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("secretName",cdk().requiredValidator)(properties.secretName)),errors.collect(cdk().propertyValidator("secretName",cdk().validateString)(properties.secretName)),errors.wrap('supplied properties not correct for "TlsValidationContextSdsTrustProperty"')}function convertCfnVirtualNodeTlsValidationContextSdsTrustPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeTlsValidationContextSdsTrustPropertyValidator(properties).assertSuccess(),{SecretName:cdk().stringToCloudFormation(properties.secretName)}):properties}function CfnVirtualNodeTlsValidationContextSdsTrustPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("secretName","SecretName",properties.SecretName!=null?cfn_parse().FromCloudFormation.getString(properties.SecretName):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeTlsValidationContextAcmTrustPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("certificateAuthorityArns",cdk().requiredValidator)(properties.certificateAuthorityArns)),errors.collect(cdk().propertyValidator("certificateAuthorityArns",cdk().listValidator(cdk().validateString))(properties.certificateAuthorityArns)),errors.wrap('supplied properties not correct for "TlsValidationContextAcmTrustProperty"')}function convertCfnVirtualNodeTlsValidationContextAcmTrustPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeTlsValidationContextAcmTrustPropertyValidator(properties).assertSuccess(),{CertificateAuthorityArns:cdk().listMapper(cdk().stringToCloudFormation)(properties.certificateAuthorityArns)}):properties}function CfnVirtualNodeTlsValidationContextAcmTrustPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("certificateAuthorityArns","CertificateAuthorityArns",properties.CertificateAuthorityArns!=null?cfn_parse().FromCloudFormation.getArray(cfn_parse().FromCloudFormation.getString)(properties.CertificateAuthorityArns):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeTlsValidationContextFileTrustPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("certificateChain",cdk().requiredValidator)(properties.certificateChain)),errors.collect(cdk().propertyValidator("certificateChain",cdk().validateString)(properties.certificateChain)),errors.wrap('supplied properties not correct for "TlsValidationContextFileTrustProperty"')}function convertCfnVirtualNodeTlsValidationContextFileTrustPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeTlsValidationContextFileTrustPropertyValidator(properties).assertSuccess(),{CertificateChain:cdk().stringToCloudFormation(properties.certificateChain)}):properties}function CfnVirtualNodeTlsValidationContextFileTrustPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("certificateChain","CertificateChain",properties.CertificateChain!=null?cfn_parse().FromCloudFormation.getString(properties.CertificateChain):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeTlsValidationContextTrustPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("acm",CfnVirtualNodeTlsValidationContextAcmTrustPropertyValidator)(properties.acm)),errors.collect(cdk().propertyValidator("file",CfnVirtualNodeTlsValidationContextFileTrustPropertyValidator)(properties.file)),errors.collect(cdk().propertyValidator("sds",CfnVirtualNodeTlsValidationContextSdsTrustPropertyValidator)(properties.sds)),errors.wrap('supplied properties not correct for "TlsValidationContextTrustProperty"')}function convertCfnVirtualNodeTlsValidationContextTrustPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeTlsValidationContextTrustPropertyValidator(properties).assertSuccess(),{ACM:convertCfnVirtualNodeTlsValidationContextAcmTrustPropertyToCloudFormation(properties.acm),File:convertCfnVirtualNodeTlsValidationContextFileTrustPropertyToCloudFormation(properties.file),SDS:convertCfnVirtualNodeTlsValidationContextSdsTrustPropertyToCloudFormation(properties.sds)}):properties}function CfnVirtualNodeTlsValidationContextTrustPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("acm","ACM",properties.ACM!=null?CfnVirtualNodeTlsValidationContextAcmTrustPropertyFromCloudFormation(properties.ACM):void 0),ret.addPropertyResult("file","File",properties.File!=null?CfnVirtualNodeTlsValidationContextFileTrustPropertyFromCloudFormation(properties.File):void 0),ret.addPropertyResult("sds","SDS",properties.SDS!=null?CfnVirtualNodeTlsValidationContextSdsTrustPropertyFromCloudFormation(properties.SDS):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeTlsValidationContextPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("subjectAlternativeNames",CfnVirtualNodeSubjectAlternativeNamesPropertyValidator)(properties.subjectAlternativeNames)),errors.collect(cdk().propertyValidator("trust",cdk().requiredValidator)(properties.trust)),errors.collect(cdk().propertyValidator("trust",CfnVirtualNodeTlsValidationContextTrustPropertyValidator)(properties.trust)),errors.wrap('supplied properties not correct for "TlsValidationContextProperty"')}function convertCfnVirtualNodeTlsValidationContextPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeTlsValidationContextPropertyValidator(properties).assertSuccess(),{SubjectAlternativeNames:convertCfnVirtualNodeSubjectAlternativeNamesPropertyToCloudFormation(properties.subjectAlternativeNames),Trust:convertCfnVirtualNodeTlsValidationContextTrustPropertyToCloudFormation(properties.trust)}):properties}function CfnVirtualNodeTlsValidationContextPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("subjectAlternativeNames","SubjectAlternativeNames",properties.SubjectAlternativeNames!=null?CfnVirtualNodeSubjectAlternativeNamesPropertyFromCloudFormation(properties.SubjectAlternativeNames):void 0),ret.addPropertyResult("trust","Trust",properties.Trust!=null?CfnVirtualNodeTlsValidationContextTrustPropertyFromCloudFormation(properties.Trust):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeListenerTlsSdsCertificatePropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("secretName",cdk().requiredValidator)(properties.secretName)),errors.collect(cdk().propertyValidator("secretName",cdk().validateString)(properties.secretName)),errors.wrap('supplied properties not correct for "ListenerTlsSdsCertificateProperty"')}function convertCfnVirtualNodeListenerTlsSdsCertificatePropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeListenerTlsSdsCertificatePropertyValidator(properties).assertSuccess(),{SecretName:cdk().stringToCloudFormation(properties.secretName)}):properties}function CfnVirtualNodeListenerTlsSdsCertificatePropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("secretName","SecretName",properties.SecretName!=null?cfn_parse().FromCloudFormation.getString(properties.SecretName):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeListenerTlsFileCertificatePropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("certificateChain",cdk().requiredValidator)(properties.certificateChain)),errors.collect(cdk().propertyValidator("certificateChain",cdk().validateString)(properties.certificateChain)),errors.collect(cdk().propertyValidator("privateKey",cdk().requiredValidator)(properties.privateKey)),errors.collect(cdk().propertyValidator("privateKey",cdk().validateString)(properties.privateKey)),errors.wrap('supplied properties not correct for "ListenerTlsFileCertificateProperty"')}function convertCfnVirtualNodeListenerTlsFileCertificatePropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeListenerTlsFileCertificatePropertyValidator(properties).assertSuccess(),{CertificateChain:cdk().stringToCloudFormation(properties.certificateChain),PrivateKey:cdk().stringToCloudFormation(properties.privateKey)}):properties}function CfnVirtualNodeListenerTlsFileCertificatePropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("certificateChain","CertificateChain",properties.CertificateChain!=null?cfn_parse().FromCloudFormation.getString(properties.CertificateChain):void 0),ret.addPropertyResult("privateKey","PrivateKey",properties.PrivateKey!=null?cfn_parse().FromCloudFormation.getString(properties.PrivateKey):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeClientTlsCertificatePropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("file",CfnVirtualNodeListenerTlsFileCertificatePropertyValidator)(properties.file)),errors.collect(cdk().propertyValidator("sds",CfnVirtualNodeListenerTlsSdsCertificatePropertyValidator)(properties.sds)),errors.wrap('supplied properties not correct for "ClientTlsCertificateProperty"')}function convertCfnVirtualNodeClientTlsCertificatePropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeClientTlsCertificatePropertyValidator(properties).assertSuccess(),{File:convertCfnVirtualNodeListenerTlsFileCertificatePropertyToCloudFormation(properties.file),SDS:convertCfnVirtualNodeListenerTlsSdsCertificatePropertyToCloudFormation(properties.sds)}):properties}function CfnVirtualNodeClientTlsCertificatePropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("file","File",properties.File!=null?CfnVirtualNodeListenerTlsFileCertificatePropertyFromCloudFormation(properties.File):void 0),ret.addPropertyResult("sds","SDS",properties.SDS!=null?CfnVirtualNodeListenerTlsSdsCertificatePropertyFromCloudFormation(properties.SDS):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeClientPolicyTlsPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("certificate",CfnVirtualNodeClientTlsCertificatePropertyValidator)(properties.certificate)),errors.collect(cdk().propertyValidator("enforce",cdk().validateBoolean)(properties.enforce)),errors.collect(cdk().propertyValidator("ports",cdk().listValidator(cdk().validateNumber))(properties.ports)),errors.collect(cdk().propertyValidator("validation",cdk().requiredValidator)(properties.validation)),errors.collect(cdk().propertyValidator("validation",CfnVirtualNodeTlsValidationContextPropertyValidator)(properties.validation)),errors.wrap('supplied properties not correct for "ClientPolicyTlsProperty"')}function convertCfnVirtualNodeClientPolicyTlsPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeClientPolicyTlsPropertyValidator(properties).assertSuccess(),{Certificate:convertCfnVirtualNodeClientTlsCertificatePropertyToCloudFormation(properties.certificate),Enforce:cdk().booleanToCloudFormation(properties.enforce),Ports:cdk().listMapper(cdk().numberToCloudFormation)(properties.ports),Validation:convertCfnVirtualNodeTlsValidationContextPropertyToCloudFormation(properties.validation)}):properties}function CfnVirtualNodeClientPolicyTlsPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("certificate","Certificate",properties.Certificate!=null?CfnVirtualNodeClientTlsCertificatePropertyFromCloudFormation(properties.Certificate):void 0),ret.addPropertyResult("enforce","Enforce",properties.Enforce!=null?cfn_parse().FromCloudFormation.getBoolean(properties.Enforce):void 0),ret.addPropertyResult("ports","Ports",properties.Ports!=null?cfn_parse().FromCloudFormation.getArray(cfn_parse().FromCloudFormation.getNumber)(properties.Ports):void 0),ret.addPropertyResult("validation","Validation",properties.Validation!=null?CfnVirtualNodeTlsValidationContextPropertyFromCloudFormation(properties.Validation):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeClientPolicyPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("tls",CfnVirtualNodeClientPolicyTlsPropertyValidator)(properties.tls)),errors.wrap('supplied properties not correct for "ClientPolicyProperty"')}function convertCfnVirtualNodeClientPolicyPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeClientPolicyPropertyValidator(properties).assertSuccess(),{TLS:convertCfnVirtualNodeClientPolicyTlsPropertyToCloudFormation(properties.tls)}):properties}function CfnVirtualNodeClientPolicyPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("tls","TLS",properties.TLS!=null?CfnVirtualNodeClientPolicyTlsPropertyFromCloudFormation(properties.TLS):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeVirtualServiceBackendPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("clientPolicy",CfnVirtualNodeClientPolicyPropertyValidator)(properties.clientPolicy)),errors.collect(cdk().propertyValidator("virtualServiceName",cdk().requiredValidator)(properties.virtualServiceName)),errors.collect(cdk().propertyValidator("virtualServiceName",cdk().validateString)(properties.virtualServiceName)),errors.wrap('supplied properties not correct for "VirtualServiceBackendProperty"')}function convertCfnVirtualNodeVirtualServiceBackendPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeVirtualServiceBackendPropertyValidator(properties).assertSuccess(),{ClientPolicy:convertCfnVirtualNodeClientPolicyPropertyToCloudFormation(properties.clientPolicy),VirtualServiceName:cdk().stringToCloudFormation(properties.virtualServiceName)}):properties}function CfnVirtualNodeVirtualServiceBackendPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("clientPolicy","ClientPolicy",properties.ClientPolicy!=null?CfnVirtualNodeClientPolicyPropertyFromCloudFormation(properties.ClientPolicy):void 0),ret.addPropertyResult("virtualServiceName","VirtualServiceName",properties.VirtualServiceName!=null?cfn_parse().FromCloudFormation.getString(properties.VirtualServiceName):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeBackendPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("virtualService",CfnVirtualNodeVirtualServiceBackendPropertyValidator)(properties.virtualService)),errors.wrap('supplied properties not correct for "BackendProperty"')}function convertCfnVirtualNodeBackendPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeBackendPropertyValidator(properties).assertSuccess(),{VirtualService:convertCfnVirtualNodeVirtualServiceBackendPropertyToCloudFormation(properties.virtualService)}):properties}function CfnVirtualNodeBackendPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("virtualService","VirtualService",properties.VirtualService!=null?CfnVirtualNodeVirtualServiceBackendPropertyFromCloudFormation(properties.VirtualService):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeVirtualNodeTcpConnectionPoolPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("maxConnections",cdk().requiredValidator)(properties.maxConnections)),errors.collect(cdk().propertyValidator("maxConnections",cdk().validateNumber)(properties.maxConnections)),errors.wrap('supplied properties not correct for "VirtualNodeTcpConnectionPoolProperty"')}function convertCfnVirtualNodeVirtualNodeTcpConnectionPoolPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeVirtualNodeTcpConnectionPoolPropertyValidator(properties).assertSuccess(),{MaxConnections:cdk().numberToCloudFormation(properties.maxConnections)}):properties}function CfnVirtualNodeVirtualNodeTcpConnectionPoolPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("maxConnections","MaxConnections",properties.MaxConnections!=null?cfn_parse().FromCloudFormation.getNumber(properties.MaxConnections):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeVirtualNodeHttp2ConnectionPoolPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("maxRequests",cdk().requiredValidator)(properties.maxRequests)),errors.collect(cdk().propertyValidator("maxRequests",cdk().validateNumber)(properties.maxRequests)),errors.wrap('supplied properties not correct for "VirtualNodeHttp2ConnectionPoolProperty"')}function convertCfnVirtualNodeVirtualNodeHttp2ConnectionPoolPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeVirtualNodeHttp2ConnectionPoolPropertyValidator(properties).assertSuccess(),{MaxRequests:cdk().numberToCloudFormation(properties.maxRequests)}):properties}function CfnVirtualNodeVirtualNodeHttp2ConnectionPoolPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("maxRequests","MaxRequests",properties.MaxRequests!=null?cfn_parse().FromCloudFormation.getNumber(properties.MaxRequests):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeVirtualNodeHttpConnectionPoolPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("maxConnections",cdk().requiredValidator)(properties.maxConnections)),errors.collect(cdk().propertyValidator("maxConnections",cdk().validateNumber)(properties.maxConnections)),errors.collect(cdk().propertyValidator("maxPendingRequests",cdk().validateNumber)(properties.maxPendingRequests)),errors.wrap('supplied properties not correct for "VirtualNodeHttpConnectionPoolProperty"')}function convertCfnVirtualNodeVirtualNodeHttpConnectionPoolPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeVirtualNodeHttpConnectionPoolPropertyValidator(properties).assertSuccess(),{MaxConnections:cdk().numberToCloudFormation(properties.maxConnections),MaxPendingRequests:cdk().numberToCloudFormation(properties.maxPendingRequests)}):properties}function CfnVirtualNodeVirtualNodeHttpConnectionPoolPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("maxConnections","MaxConnections",properties.MaxConnections!=null?cfn_parse().FromCloudFormation.getNumber(properties.MaxConnections):void 0),ret.addPropertyResult("maxPendingRequests","MaxPendingRequests",properties.MaxPendingRequests!=null?cfn_parse().FromCloudFormation.getNumber(properties.MaxPendingRequests):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeVirtualNodeGrpcConnectionPoolPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("maxRequests",cdk().requiredValidator)(properties.maxRequests)),errors.collect(cdk().propertyValidator("maxRequests",cdk().validateNumber)(properties.maxRequests)),errors.wrap('supplied properties not correct for "VirtualNodeGrpcConnectionPoolProperty"')}function convertCfnVirtualNodeVirtualNodeGrpcConnectionPoolPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeVirtualNodeGrpcConnectionPoolPropertyValidator(properties).assertSuccess(),{MaxRequests:cdk().numberToCloudFormation(properties.maxRequests)}):properties}function CfnVirtualNodeVirtualNodeGrpcConnectionPoolPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("maxRequests","MaxRequests",properties.MaxRequests!=null?cfn_parse().FromCloudFormation.getNumber(properties.MaxRequests):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeVirtualNodeConnectionPoolPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("grpc",CfnVirtualNodeVirtualNodeGrpcConnectionPoolPropertyValidator)(properties.grpc)),errors.collect(cdk().propertyValidator("http",CfnVirtualNodeVirtualNodeHttpConnectionPoolPropertyValidator)(properties.http)),errors.collect(cdk().propertyValidator("http2",CfnVirtualNodeVirtualNodeHttp2ConnectionPoolPropertyValidator)(properties.http2)),errors.collect(cdk().propertyValidator("tcp",CfnVirtualNodeVirtualNodeTcpConnectionPoolPropertyValidator)(properties.tcp)),errors.wrap('supplied properties not correct for "VirtualNodeConnectionPoolProperty"')}function convertCfnVirtualNodeVirtualNodeConnectionPoolPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeVirtualNodeConnectionPoolPropertyValidator(properties).assertSuccess(),{GRPC:convertCfnVirtualNodeVirtualNodeGrpcConnectionPoolPropertyToCloudFormation(properties.grpc),HTTP:convertCfnVirtualNodeVirtualNodeHttpConnectionPoolPropertyToCloudFormation(properties.http),HTTP2:convertCfnVirtualNodeVirtualNodeHttp2ConnectionPoolPropertyToCloudFormation(properties.http2),TCP:convertCfnVirtualNodeVirtualNodeTcpConnectionPoolPropertyToCloudFormation(properties.tcp)}):properties}function CfnVirtualNodeVirtualNodeConnectionPoolPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("grpc","GRPC",properties.GRPC!=null?CfnVirtualNodeVirtualNodeGrpcConnectionPoolPropertyFromCloudFormation(properties.GRPC):void 0),ret.addPropertyResult("http","HTTP",properties.HTTP!=null?CfnVirtualNodeVirtualNodeHttpConnectionPoolPropertyFromCloudFormation(properties.HTTP):void 0),ret.addPropertyResult("http2","HTTP2",properties.HTTP2!=null?CfnVirtualNodeVirtualNodeHttp2ConnectionPoolPropertyFromCloudFormation(properties.HTTP2):void 0),ret.addPropertyResult("tcp","TCP",properties.TCP!=null?CfnVirtualNodeVirtualNodeTcpConnectionPoolPropertyFromCloudFormation(properties.TCP):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeDurationPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("unit",cdk().requiredValidator)(properties.unit)),errors.collect(cdk().propertyValidator("unit",cdk().validateString)(properties.unit)),errors.collect(cdk().propertyValidator("value",cdk().requiredValidator)(properties.value)),errors.collect(cdk().propertyValidator("value",cdk().validateNumber)(properties.value)),errors.wrap('supplied properties not correct for "DurationProperty"')}function convertCfnVirtualNodeDurationPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeDurationPropertyValidator(properties).assertSuccess(),{Unit:cdk().stringToCloudFormation(properties.unit),Value:cdk().numberToCloudFormation(properties.value)}):properties}function CfnVirtualNodeDurationPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("unit","Unit",properties.Unit!=null?cfn_parse().FromCloudFormation.getString(properties.Unit):void 0),ret.addPropertyResult("value","Value",properties.Value!=null?cfn_parse().FromCloudFormation.getNumber(properties.Value):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeTcpTimeoutPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("idle",CfnVirtualNodeDurationPropertyValidator)(properties.idle)),errors.wrap('supplied properties not correct for "TcpTimeoutProperty"')}function convertCfnVirtualNodeTcpTimeoutPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeTcpTimeoutPropertyValidator(properties).assertSuccess(),{Idle:convertCfnVirtualNodeDurationPropertyToCloudFormation(properties.idle)}):properties}function CfnVirtualNodeTcpTimeoutPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("idle","Idle",properties.Idle!=null?CfnVirtualNodeDurationPropertyFromCloudFormation(properties.Idle):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeHttpTimeoutPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("idle",CfnVirtualNodeDurationPropertyValidator)(properties.idle)),errors.collect(cdk().propertyValidator("perRequest",CfnVirtualNodeDurationPropertyValidator)(properties.perRequest)),errors.wrap('supplied properties not correct for "HttpTimeoutProperty"')}function convertCfnVirtualNodeHttpTimeoutPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeHttpTimeoutPropertyValidator(properties).assertSuccess(),{Idle:convertCfnVirtualNodeDurationPropertyToCloudFormation(properties.idle),PerRequest:convertCfnVirtualNodeDurationPropertyToCloudFormation(properties.perRequest)}):properties}function CfnVirtualNodeHttpTimeoutPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("idle","Idle",properties.Idle!=null?CfnVirtualNodeDurationPropertyFromCloudFormation(properties.Idle):void 0),ret.addPropertyResult("perRequest","PerRequest",properties.PerRequest!=null?CfnVirtualNodeDurationPropertyFromCloudFormation(properties.PerRequest):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeGrpcTimeoutPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("idle",CfnVirtualNodeDurationPropertyValidator)(properties.idle)),errors.collect(cdk().propertyValidator("perRequest",CfnVirtualNodeDurationPropertyValidator)(properties.perRequest)),errors.wrap('supplied properties not correct for "GrpcTimeoutProperty"')}function convertCfnVirtualNodeGrpcTimeoutPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeGrpcTimeoutPropertyValidator(properties).assertSuccess(),{Idle:convertCfnVirtualNodeDurationPropertyToCloudFormation(properties.idle),PerRequest:convertCfnVirtualNodeDurationPropertyToCloudFormation(properties.perRequest)}):properties}function CfnVirtualNodeGrpcTimeoutPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("idle","Idle",properties.Idle!=null?CfnVirtualNodeDurationPropertyFromCloudFormation(properties.Idle):void 0),ret.addPropertyResult("perRequest","PerRequest",properties.PerRequest!=null?CfnVirtualNodeDurationPropertyFromCloudFormation(properties.PerRequest):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeListenerTimeoutPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("grpc",CfnVirtualNodeGrpcTimeoutPropertyValidator)(properties.grpc)),errors.collect(cdk().propertyValidator("http",CfnVirtualNodeHttpTimeoutPropertyValidator)(properties.http)),errors.collect(cdk().propertyValidator("http2",CfnVirtualNodeHttpTimeoutPropertyValidator)(properties.http2)),errors.collect(cdk().propertyValidator("tcp",CfnVirtualNodeTcpTimeoutPropertyValidator)(properties.tcp)),errors.wrap('supplied properties not correct for "ListenerTimeoutProperty"')}function convertCfnVirtualNodeListenerTimeoutPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeListenerTimeoutPropertyValidator(properties).assertSuccess(),{GRPC:convertCfnVirtualNodeGrpcTimeoutPropertyToCloudFormation(properties.grpc),HTTP:convertCfnVirtualNodeHttpTimeoutPropertyToCloudFormation(properties.http),HTTP2:convertCfnVirtualNodeHttpTimeoutPropertyToCloudFormation(properties.http2),TCP:convertCfnVirtualNodeTcpTimeoutPropertyToCloudFormation(properties.tcp)}):properties}function CfnVirtualNodeListenerTimeoutPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("grpc","GRPC",properties.GRPC!=null?CfnVirtualNodeGrpcTimeoutPropertyFromCloudFormation(properties.GRPC):void 0),ret.addPropertyResult("http","HTTP",properties.HTTP!=null?CfnVirtualNodeHttpTimeoutPropertyFromCloudFormation(properties.HTTP):void 0),ret.addPropertyResult("http2","HTTP2",properties.HTTP2!=null?CfnVirtualNodeHttpTimeoutPropertyFromCloudFormation(properties.HTTP2):void 0),ret.addPropertyResult("tcp","TCP",properties.TCP!=null?CfnVirtualNodeTcpTimeoutPropertyFromCloudFormation(properties.TCP):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeHealthCheckPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("healthyThreshold",cdk().requiredValidator)(properties.healthyThreshold)),errors.collect(cdk().propertyValidator("healthyThreshold",cdk().validateNumber)(properties.healthyThreshold)),errors.collect(cdk().propertyValidator("intervalMillis",cdk().requiredValidator)(properties.intervalMillis)),errors.collect(cdk().propertyValidator("intervalMillis",cdk().validateNumber)(properties.intervalMillis)),errors.collect(cdk().propertyValidator("path",cdk().validateString)(properties.path)),errors.collect(cdk().propertyValidator("port",cdk().validateNumber)(properties.port)),errors.collect(cdk().propertyValidator("protocol",cdk().requiredValidator)(properties.protocol)),errors.collect(cdk().propertyValidator("protocol",cdk().validateString)(properties.protocol)),errors.collect(cdk().propertyValidator("timeoutMillis",cdk().requiredValidator)(properties.timeoutMillis)),errors.collect(cdk().propertyValidator("timeoutMillis",cdk().validateNumber)(properties.timeoutMillis)),errors.collect(cdk().propertyValidator("unhealthyThreshold",cdk().requiredValidator)(properties.unhealthyThreshold)),errors.collect(cdk().propertyValidator("unhealthyThreshold",cdk().validateNumber)(properties.unhealthyThreshold)),errors.wrap('supplied properties not correct for "HealthCheckProperty"')}function convertCfnVirtualNodeHealthCheckPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeHealthCheckPropertyValidator(properties).assertSuccess(),{HealthyThreshold:cdk().numberToCloudFormation(properties.healthyThreshold),IntervalMillis:cdk().numberToCloudFormation(properties.intervalMillis),Path:cdk().stringToCloudFormation(properties.path),Port:cdk().numberToCloudFormation(properties.port),Protocol:cdk().stringToCloudFormation(properties.protocol),TimeoutMillis:cdk().numberToCloudFormation(properties.timeoutMillis),UnhealthyThreshold:cdk().numberToCloudFormation(properties.unhealthyThreshold)}):properties}function CfnVirtualNodeHealthCheckPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("healthyThreshold","HealthyThreshold",properties.HealthyThreshold!=null?cfn_parse().FromCloudFormation.getNumber(properties.HealthyThreshold):void 0),ret.addPropertyResult("intervalMillis","IntervalMillis",properties.IntervalMillis!=null?cfn_parse().FromCloudFormation.getNumber(properties.IntervalMillis):void 0),ret.addPropertyResult("path","Path",properties.Path!=null?cfn_parse().FromCloudFormation.getString(properties.Path):void 0),ret.addPropertyResult("port","Port",properties.Port!=null?cfn_parse().FromCloudFormation.getNumber(properties.Port):void 0),ret.addPropertyResult("protocol","Protocol",properties.Protocol!=null?cfn_parse().FromCloudFormation.getString(properties.Protocol):void 0),ret.addPropertyResult("timeoutMillis","TimeoutMillis",properties.TimeoutMillis!=null?cfn_parse().FromCloudFormation.getNumber(properties.TimeoutMillis):void 0),ret.addPropertyResult("unhealthyThreshold","UnhealthyThreshold",properties.UnhealthyThreshold!=null?cfn_parse().FromCloudFormation.getNumber(properties.UnhealthyThreshold):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeListenerTlsValidationContextTrustPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("file",CfnVirtualNodeTlsValidationContextFileTrustPropertyValidator)(properties.file)),errors.collect(cdk().propertyValidator("sds",CfnVirtualNodeTlsValidationContextSdsTrustPropertyValidator)(properties.sds)),errors.wrap('supplied properties not correct for "ListenerTlsValidationContextTrustProperty"')}function convertCfnVirtualNodeListenerTlsValidationContextTrustPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeListenerTlsValidationContextTrustPropertyValidator(properties).assertSuccess(),{File:convertCfnVirtualNodeTlsValidationContextFileTrustPropertyToCloudFormation(properties.file),SDS:convertCfnVirtualNodeTlsValidationContextSdsTrustPropertyToCloudFormation(properties.sds)}):properties}function CfnVirtualNodeListenerTlsValidationContextTrustPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("file","File",properties.File!=null?CfnVirtualNodeTlsValidationContextFileTrustPropertyFromCloudFormation(properties.File):void 0),ret.addPropertyResult("sds","SDS",properties.SDS!=null?CfnVirtualNodeTlsValidationContextSdsTrustPropertyFromCloudFormation(properties.SDS):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeListenerTlsValidationContextPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("subjectAlternativeNames",CfnVirtualNodeSubjectAlternativeNamesPropertyValidator)(properties.subjectAlternativeNames)),errors.collect(cdk().propertyValidator("trust",cdk().requiredValidator)(properties.trust)),errors.collect(cdk().propertyValidator("trust",CfnVirtualNodeListenerTlsValidationContextTrustPropertyValidator)(properties.trust)),errors.wrap('supplied properties not correct for "ListenerTlsValidationContextProperty"')}function convertCfnVirtualNodeListenerTlsValidationContextPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeListenerTlsValidationContextPropertyValidator(properties).assertSuccess(),{SubjectAlternativeNames:convertCfnVirtualNodeSubjectAlternativeNamesPropertyToCloudFormation(properties.subjectAlternativeNames),Trust:convertCfnVirtualNodeListenerTlsValidationContextTrustPropertyToCloudFormation(properties.trust)}):properties}function CfnVirtualNodeListenerTlsValidationContextPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("subjectAlternativeNames","SubjectAlternativeNames",properties.SubjectAlternativeNames!=null?CfnVirtualNodeSubjectAlternativeNamesPropertyFromCloudFormation(properties.SubjectAlternativeNames):void 0),ret.addPropertyResult("trust","Trust",properties.Trust!=null?CfnVirtualNodeListenerTlsValidationContextTrustPropertyFromCloudFormation(properties.Trust):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeListenerTlsAcmCertificatePropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("certificateArn",cdk().requiredValidator)(properties.certificateArn)),errors.collect(cdk().propertyValidator("certificateArn",cdk().validateString)(properties.certificateArn)),errors.wrap('supplied properties not correct for "ListenerTlsAcmCertificateProperty"')}function convertCfnVirtualNodeListenerTlsAcmCertificatePropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeListenerTlsAcmCertificatePropertyValidator(properties).assertSuccess(),{CertificateArn:cdk().stringToCloudFormation(properties.certificateArn)}):properties}function CfnVirtualNodeListenerTlsAcmCertificatePropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("certificateArn","CertificateArn",properties.CertificateArn!=null?cfn_parse().FromCloudFormation.getString(properties.CertificateArn):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeListenerTlsCertificatePropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("acm",CfnVirtualNodeListenerTlsAcmCertificatePropertyValidator)(properties.acm)),errors.collect(cdk().propertyValidator("file",CfnVirtualNodeListenerTlsFileCertificatePropertyValidator)(properties.file)),errors.collect(cdk().propertyValidator("sds",CfnVirtualNodeListenerTlsSdsCertificatePropertyValidator)(properties.sds)),errors.wrap('supplied properties not correct for "ListenerTlsCertificateProperty"')}function convertCfnVirtualNodeListenerTlsCertificatePropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeListenerTlsCertificatePropertyValidator(properties).assertSuccess(),{ACM:convertCfnVirtualNodeListenerTlsAcmCertificatePropertyToCloudFormation(properties.acm),File:convertCfnVirtualNodeListenerTlsFileCertificatePropertyToCloudFormation(properties.file),SDS:convertCfnVirtualNodeListenerTlsSdsCertificatePropertyToCloudFormation(properties.sds)}):properties}function CfnVirtualNodeListenerTlsCertificatePropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("acm","ACM",properties.ACM!=null?CfnVirtualNodeListenerTlsAcmCertificatePropertyFromCloudFormation(properties.ACM):void 0),ret.addPropertyResult("file","File",properties.File!=null?CfnVirtualNodeListenerTlsFileCertificatePropertyFromCloudFormation(properties.File):void 0),ret.addPropertyResult("sds","SDS",properties.SDS!=null?CfnVirtualNodeListenerTlsSdsCertificatePropertyFromCloudFormation(properties.SDS):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeListenerTlsPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("certificate",cdk().requiredValidator)(properties.certificate)),errors.collect(cdk().propertyValidator("certificate",CfnVirtualNodeListenerTlsCertificatePropertyValidator)(properties.certificate)),errors.collect(cdk().propertyValidator("mode",cdk().requiredValidator)(properties.mode)),errors.collect(cdk().propertyValidator("mode",cdk().validateString)(properties.mode)),errors.collect(cdk().propertyValidator("validation",CfnVirtualNodeListenerTlsValidationContextPropertyValidator)(properties.validation)),errors.wrap('supplied properties not correct for "ListenerTlsProperty"')}function convertCfnVirtualNodeListenerTlsPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeListenerTlsPropertyValidator(properties).assertSuccess(),{Certificate:convertCfnVirtualNodeListenerTlsCertificatePropertyToCloudFormation(properties.certificate),Mode:cdk().stringToCloudFormation(properties.mode),Validation:convertCfnVirtualNodeListenerTlsValidationContextPropertyToCloudFormation(properties.validation)}):properties}function CfnVirtualNodeListenerTlsPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("certificate","Certificate",properties.Certificate!=null?CfnVirtualNodeListenerTlsCertificatePropertyFromCloudFormation(properties.Certificate):void 0),ret.addPropertyResult("mode","Mode",properties.Mode!=null?cfn_parse().FromCloudFormation.getString(properties.Mode):void 0),ret.addPropertyResult("validation","Validation",properties.Validation!=null?CfnVirtualNodeListenerTlsValidationContextPropertyFromCloudFormation(properties.Validation):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodePortMappingPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("port",cdk().requiredValidator)(properties.port)),errors.collect(cdk().propertyValidator("port",cdk().validateNumber)(properties.port)),errors.collect(cdk().propertyValidator("protocol",cdk().requiredValidator)(properties.protocol)),errors.collect(cdk().propertyValidator("protocol",cdk().validateString)(properties.protocol)),errors.wrap('supplied properties not correct for "PortMappingProperty"')}function convertCfnVirtualNodePortMappingPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodePortMappingPropertyValidator(properties).assertSuccess(),{Port:cdk().numberToCloudFormation(properties.port),Protocol:cdk().stringToCloudFormation(properties.protocol)}):properties}function CfnVirtualNodePortMappingPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("port","Port",properties.Port!=null?cfn_parse().FromCloudFormation.getNumber(properties.Port):void 0),ret.addPropertyResult("protocol","Protocol",properties.Protocol!=null?cfn_parse().FromCloudFormation.getString(properties.Protocol):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeOutlierDetectionPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("baseEjectionDuration",cdk().requiredValidator)(properties.baseEjectionDuration)),errors.collect(cdk().propertyValidator("baseEjectionDuration",CfnVirtualNodeDurationPropertyValidator)(properties.baseEjectionDuration)),errors.collect(cdk().propertyValidator("interval",cdk().requiredValidator)(properties.interval)),errors.collect(cdk().propertyValidator("interval",CfnVirtualNodeDurationPropertyValidator)(properties.interval)),errors.collect(cdk().propertyValidator("maxEjectionPercent",cdk().requiredValidator)(properties.maxEjectionPercent)),errors.collect(cdk().propertyValidator("maxEjectionPercent",cdk().validateNumber)(properties.maxEjectionPercent)),errors.collect(cdk().propertyValidator("maxServerErrors",cdk().requiredValidator)(properties.maxServerErrors)),errors.collect(cdk().propertyValidator("maxServerErrors",cdk().validateNumber)(properties.maxServerErrors)),errors.wrap('supplied properties not correct for "OutlierDetectionProperty"')}function convertCfnVirtualNodeOutlierDetectionPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeOutlierDetectionPropertyValidator(properties).assertSuccess(),{BaseEjectionDuration:convertCfnVirtualNodeDurationPropertyToCloudFormation(properties.baseEjectionDuration),Interval:convertCfnVirtualNodeDurationPropertyToCloudFormation(properties.interval),MaxEjectionPercent:cdk().numberToCloudFormation(properties.maxEjectionPercent),MaxServerErrors:cdk().numberToCloudFormation(properties.maxServerErrors)}):properties}function CfnVirtualNodeOutlierDetectionPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("baseEjectionDuration","BaseEjectionDuration",properties.BaseEjectionDuration!=null?CfnVirtualNodeDurationPropertyFromCloudFormation(properties.BaseEjectionDuration):void 0),ret.addPropertyResult("interval","Interval",properties.Interval!=null?CfnVirtualNodeDurationPropertyFromCloudFormation(properties.Interval):void 0),ret.addPropertyResult("maxEjectionPercent","MaxEjectionPercent",properties.MaxEjectionPercent!=null?cfn_parse().FromCloudFormation.getNumber(properties.MaxEjectionPercent):void 0),ret.addPropertyResult("maxServerErrors","MaxServerErrors",properties.MaxServerErrors!=null?cfn_parse().FromCloudFormation.getNumber(properties.MaxServerErrors):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeListenerPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("connectionPool",CfnVirtualNodeVirtualNodeConnectionPoolPropertyValidator)(properties.connectionPool)),errors.collect(cdk().propertyValidator("healthCheck",CfnVirtualNodeHealthCheckPropertyValidator)(properties.healthCheck)),errors.collect(cdk().propertyValidator("outlierDetection",CfnVirtualNodeOutlierDetectionPropertyValidator)(properties.outlierDetection)),errors.collect(cdk().propertyValidator("portMapping",cdk().requiredValidator)(properties.portMapping)),errors.collect(cdk().propertyValidator("portMapping",CfnVirtualNodePortMappingPropertyValidator)(properties.portMapping)),errors.collect(cdk().propertyValidator("tls",CfnVirtualNodeListenerTlsPropertyValidator)(properties.tls)),errors.collect(cdk().propertyValidator("timeout",CfnVirtualNodeListenerTimeoutPropertyValidator)(properties.timeout)),errors.wrap('supplied properties not correct for "ListenerProperty"')}function convertCfnVirtualNodeListenerPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeListenerPropertyValidator(properties).assertSuccess(),{ConnectionPool:convertCfnVirtualNodeVirtualNodeConnectionPoolPropertyToCloudFormation(properties.connectionPool),HealthCheck:convertCfnVirtualNodeHealthCheckPropertyToCloudFormation(properties.healthCheck),OutlierDetection:convertCfnVirtualNodeOutlierDetectionPropertyToCloudFormation(properties.outlierDetection),PortMapping:convertCfnVirtualNodePortMappingPropertyToCloudFormation(properties.portMapping),TLS:convertCfnVirtualNodeListenerTlsPropertyToCloudFormation(properties.tls),Timeout:convertCfnVirtualNodeListenerTimeoutPropertyToCloudFormation(properties.timeout)}):properties}function CfnVirtualNodeListenerPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("connectionPool","ConnectionPool",properties.ConnectionPool!=null?CfnVirtualNodeVirtualNodeConnectionPoolPropertyFromCloudFormation(properties.ConnectionPool):void 0),ret.addPropertyResult("healthCheck","HealthCheck",properties.HealthCheck!=null?CfnVirtualNodeHealthCheckPropertyFromCloudFormation(properties.HealthCheck):void 0),ret.addPropertyResult("outlierDetection","OutlierDetection",properties.OutlierDetection!=null?CfnVirtualNodeOutlierDetectionPropertyFromCloudFormation(properties.OutlierDetection):void 0),ret.addPropertyResult("portMapping","PortMapping",properties.PortMapping!=null?CfnVirtualNodePortMappingPropertyFromCloudFormation(properties.PortMapping):void 0),ret.addPropertyResult("timeout","Timeout",properties.Timeout!=null?CfnVirtualNodeListenerTimeoutPropertyFromCloudFormation(properties.Timeout):void 0),ret.addPropertyResult("tls","TLS",properties.TLS!=null?CfnVirtualNodeListenerTlsPropertyFromCloudFormation(properties.TLS):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeBackendDefaultsPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("clientPolicy",CfnVirtualNodeClientPolicyPropertyValidator)(properties.clientPolicy)),errors.wrap('supplied properties not correct for "BackendDefaultsProperty"')}function convertCfnVirtualNodeBackendDefaultsPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeBackendDefaultsPropertyValidator(properties).assertSuccess(),{ClientPolicy:convertCfnVirtualNodeClientPolicyPropertyToCloudFormation(properties.clientPolicy)}):properties}function CfnVirtualNodeBackendDefaultsPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("clientPolicy","ClientPolicy",properties.ClientPolicy!=null?CfnVirtualNodeClientPolicyPropertyFromCloudFormation(properties.ClientPolicy):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeDnsServiceDiscoveryPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("hostname",cdk().requiredValidator)(properties.hostname)),errors.collect(cdk().propertyValidator("hostname",cdk().validateString)(properties.hostname)),errors.collect(cdk().propertyValidator("ipPreference",cdk().validateString)(properties.ipPreference)),errors.collect(cdk().propertyValidator("responseType",cdk().validateString)(properties.responseType)),errors.wrap('supplied properties not correct for "DnsServiceDiscoveryProperty"')}function convertCfnVirtualNodeDnsServiceDiscoveryPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeDnsServiceDiscoveryPropertyValidator(properties).assertSuccess(),{Hostname:cdk().stringToCloudFormation(properties.hostname),IpPreference:cdk().stringToCloudFormation(properties.ipPreference),ResponseType:cdk().stringToCloudFormation(properties.responseType)}):properties}function CfnVirtualNodeDnsServiceDiscoveryPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("hostname","Hostname",properties.Hostname!=null?cfn_parse().FromCloudFormation.getString(properties.Hostname):void 0),ret.addPropertyResult("ipPreference","IpPreference",properties.IpPreference!=null?cfn_parse().FromCloudFormation.getString(properties.IpPreference):void 0),ret.addPropertyResult("responseType","ResponseType",properties.ResponseType!=null?cfn_parse().FromCloudFormation.getString(properties.ResponseType):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeAwsCloudMapInstanceAttributePropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("key",cdk().requiredValidator)(properties.key)),errors.collect(cdk().propertyValidator("key",cdk().validateString)(properties.key)),errors.collect(cdk().propertyValidator("value",cdk().requiredValidator)(properties.value)),errors.collect(cdk().propertyValidator("value",cdk().validateString)(properties.value)),errors.wrap('supplied properties not correct for "AwsCloudMapInstanceAttributeProperty"')}function convertCfnVirtualNodeAwsCloudMapInstanceAttributePropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeAwsCloudMapInstanceAttributePropertyValidator(properties).assertSuccess(),{Key:cdk().stringToCloudFormation(properties.key),Value:cdk().stringToCloudFormation(properties.value)}):properties}function CfnVirtualNodeAwsCloudMapInstanceAttributePropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("key","Key",properties.Key!=null?cfn_parse().FromCloudFormation.getString(properties.Key):void 0),ret.addPropertyResult("value","Value",properties.Value!=null?cfn_parse().FromCloudFormation.getString(properties.Value):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeAwsCloudMapServiceDiscoveryPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("attributes",cdk().listValidator(CfnVirtualNodeAwsCloudMapInstanceAttributePropertyValidator))(properties.attributes)),errors.collect(cdk().propertyValidator("ipPreference",cdk().validateString)(properties.ipPreference)),errors.collect(cdk().propertyValidator("namespaceName",cdk().requiredValidator)(properties.namespaceName)),errors.collect(cdk().propertyValidator("namespaceName",cdk().validateString)(properties.namespaceName)),errors.collect(cdk().propertyValidator("serviceName",cdk().requiredValidator)(properties.serviceName)),errors.collect(cdk().propertyValidator("serviceName",cdk().validateString)(properties.serviceName)),errors.wrap('supplied properties not correct for "AwsCloudMapServiceDiscoveryProperty"')}function convertCfnVirtualNodeAwsCloudMapServiceDiscoveryPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeAwsCloudMapServiceDiscoveryPropertyValidator(properties).assertSuccess(),{Attributes:cdk().listMapper(convertCfnVirtualNodeAwsCloudMapInstanceAttributePropertyToCloudFormation)(properties.attributes),IpPreference:cdk().stringToCloudFormation(properties.ipPreference),NamespaceName:cdk().stringToCloudFormation(properties.namespaceName),ServiceName:cdk().stringToCloudFormation(properties.serviceName)}):properties}function CfnVirtualNodeAwsCloudMapServiceDiscoveryPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("attributes","Attributes",properties.Attributes!=null?cfn_parse().FromCloudFormation.getArray(CfnVirtualNodeAwsCloudMapInstanceAttributePropertyFromCloudFormation)(properties.Attributes):void 0),ret.addPropertyResult("ipPreference","IpPreference",properties.IpPreference!=null?cfn_parse().FromCloudFormation.getString(properties.IpPreference):void 0),ret.addPropertyResult("namespaceName","NamespaceName",properties.NamespaceName!=null?cfn_parse().FromCloudFormation.getString(properties.NamespaceName):void 0),ret.addPropertyResult("serviceName","ServiceName",properties.ServiceName!=null?cfn_parse().FromCloudFormation.getString(properties.ServiceName):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeServiceDiscoveryPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("awsCloudMap",CfnVirtualNodeAwsCloudMapServiceDiscoveryPropertyValidator)(properties.awsCloudMap)),errors.collect(cdk().propertyValidator("dns",CfnVirtualNodeDnsServiceDiscoveryPropertyValidator)(properties.dns)),errors.wrap('supplied properties not correct for "ServiceDiscoveryProperty"')}function convertCfnVirtualNodeServiceDiscoveryPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeServiceDiscoveryPropertyValidator(properties).assertSuccess(),{AWSCloudMap:convertCfnVirtualNodeAwsCloudMapServiceDiscoveryPropertyToCloudFormation(properties.awsCloudMap),DNS:convertCfnVirtualNodeDnsServiceDiscoveryPropertyToCloudFormation(properties.dns)}):properties}function CfnVirtualNodeServiceDiscoveryPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("awsCloudMap","AWSCloudMap",properties.AWSCloudMap!=null?CfnVirtualNodeAwsCloudMapServiceDiscoveryPropertyFromCloudFormation(properties.AWSCloudMap):void 0),ret.addPropertyResult("dns","DNS",properties.DNS!=null?CfnVirtualNodeDnsServiceDiscoveryPropertyFromCloudFormation(properties.DNS):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodeVirtualNodeSpecPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("backendDefaults",CfnVirtualNodeBackendDefaultsPropertyValidator)(properties.backendDefaults)),errors.collect(cdk().propertyValidator("backends",cdk().listValidator(CfnVirtualNodeBackendPropertyValidator))(properties.backends)),errors.collect(cdk().propertyValidator("listeners",cdk().listValidator(CfnVirtualNodeListenerPropertyValidator))(properties.listeners)),errors.collect(cdk().propertyValidator("logging",CfnVirtualNodeLoggingPropertyValidator)(properties.logging)),errors.collect(cdk().propertyValidator("serviceDiscovery",CfnVirtualNodeServiceDiscoveryPropertyValidator)(properties.serviceDiscovery)),errors.wrap('supplied properties not correct for "VirtualNodeSpecProperty"')}function convertCfnVirtualNodeVirtualNodeSpecPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodeVirtualNodeSpecPropertyValidator(properties).assertSuccess(),{BackendDefaults:convertCfnVirtualNodeBackendDefaultsPropertyToCloudFormation(properties.backendDefaults),Backends:cdk().listMapper(convertCfnVirtualNodeBackendPropertyToCloudFormation)(properties.backends),Listeners:cdk().listMapper(convertCfnVirtualNodeListenerPropertyToCloudFormation)(properties.listeners),Logging:convertCfnVirtualNodeLoggingPropertyToCloudFormation(properties.logging),ServiceDiscovery:convertCfnVirtualNodeServiceDiscoveryPropertyToCloudFormation(properties.serviceDiscovery)}):properties}function CfnVirtualNodeVirtualNodeSpecPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("backendDefaults","BackendDefaults",properties.BackendDefaults!=null?CfnVirtualNodeBackendDefaultsPropertyFromCloudFormation(properties.BackendDefaults):void 0),ret.addPropertyResult("backends","Backends",properties.Backends!=null?cfn_parse().FromCloudFormation.getArray(CfnVirtualNodeBackendPropertyFromCloudFormation)(properties.Backends):void 0),ret.addPropertyResult("listeners","Listeners",properties.Listeners!=null?cfn_parse().FromCloudFormation.getArray(CfnVirtualNodeListenerPropertyFromCloudFormation)(properties.Listeners):void 0),ret.addPropertyResult("logging","Logging",properties.Logging!=null?CfnVirtualNodeLoggingPropertyFromCloudFormation(properties.Logging):void 0),ret.addPropertyResult("serviceDiscovery","ServiceDiscovery",properties.ServiceDiscovery!=null?CfnVirtualNodeServiceDiscoveryPropertyFromCloudFormation(properties.ServiceDiscovery):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualNodePropsValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("meshName",cdk().requiredValidator)(properties.meshName)),errors.collect(cdk().propertyValidator("meshName",cdk().validateString)(properties.meshName)),errors.collect(cdk().propertyValidator("meshOwner",cdk().validateString)(properties.meshOwner)),errors.collect(cdk().propertyValidator("spec",cdk().requiredValidator)(properties.spec)),errors.collect(cdk().propertyValidator("spec",CfnVirtualNodeVirtualNodeSpecPropertyValidator)(properties.spec)),errors.collect(cdk().propertyValidator("tags",cdk().listValidator(cdk().validateCfnTag))(properties.tags)),errors.collect(cdk().propertyValidator("virtualNodeName",cdk().validateString)(properties.virtualNodeName)),errors.wrap('supplied properties not correct for "CfnVirtualNodeProps"')}function convertCfnVirtualNodePropsToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualNodePropsValidator(properties).assertSuccess(),{MeshName:cdk().stringToCloudFormation(properties.meshName),MeshOwner:cdk().stringToCloudFormation(properties.meshOwner),Spec:convertCfnVirtualNodeVirtualNodeSpecPropertyToCloudFormation(properties.spec),Tags:cdk().listMapper(cdk().cfnTagToCloudFormation)(properties.tags),VirtualNodeName:cdk().stringToCloudFormation(properties.virtualNodeName)}):properties}function CfnVirtualNodePropsFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("meshName","MeshName",properties.MeshName!=null?cfn_parse().FromCloudFormation.getString(properties.MeshName):void 0),ret.addPropertyResult("meshOwner","MeshOwner",properties.MeshOwner!=null?cfn_parse().FromCloudFormation.getString(properties.MeshOwner):void 0),ret.addPropertyResult("spec","Spec",properties.Spec!=null?CfnVirtualNodeVirtualNodeSpecPropertyFromCloudFormation(properties.Spec):void 0),ret.addPropertyResult("tags","Tags",properties.Tags!=null?cfn_parse().FromCloudFormation.getArray(cfn_parse().FromCloudFormation.getCfnTag)(properties.Tags):void 0),ret.addPropertyResult("virtualNodeName","VirtualNodeName",properties.VirtualNodeName!=null?cfn_parse().FromCloudFormation.getString(properties.VirtualNodeName):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}class CfnVirtualRouter extends cdk().CfnResource{static[JSII_RTTI_SYMBOL_1]={fqn:"aws-cdk-lib.aws_appmesh.CfnVirtualRouter",version:"2.252.0"};static CFN_RESOURCE_TYPE_NAME="AWS::AppMesh::VirtualRouter";static _fromCloudFormation(scope,id,resourceAttributes,options){resourceAttributes=resourceAttributes||{};const resourceProperties=options.parser.parseValue(resourceAttributes.Properties),propsResult=CfnVirtualRouterPropsFromCloudFormation(resourceProperties);if(cdk().isResolvableObject(propsResult.value))throw new(cdk_errors()).ValidationError(cfn_parse().lit`UnexpectedIResolvable`,"Unexpected IResolvable",scope);const ret=new CfnVirtualRouter(scope,id,propsResult.value);for(const[propKey,propVal]of Object.entries(propsResult.extraProperties))ret.addPropertyOverride(propKey,propVal);return options.parser.handleAttributes(ret,resourceAttributes,id),ret}static isCfnVirtualRouter(x){return cdk().CfnResource.isCfnResource(x)&&x.cfnResourceType===CfnVirtualRouter.CFN_RESOURCE_TYPE_NAME}static arnForVirtualRouter(resource){try{jsiiDeprecationWarnings().aws_cdk_lib_interfaces_aws_appmesh_IVirtualRouterRef(resource)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.arnForVirtualRouter),error}return resource.virtualRouterRef.virtualRouterArn}_meshName;_meshOwner;_spec;tags;_tagsRaw;_virtualRouterName;cfnPropertyNames={meshName:"MeshName",meshOwner:"MeshOwner",spec:"Spec",tags:"Tags",virtualRouterName:"VirtualRouterName"};constructor(scope,id,props){super(scope,id,{type:CfnVirtualRouter.CFN_RESOURCE_TYPE_NAME,properties:props});try{jsiiDeprecationWarnings().aws_cdk_lib_aws_appmesh_CfnVirtualRouterProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,CfnVirtualRouter),error}cdk().requireProperty(props,"meshName",this),cdk().requireProperty(props,"spec",this),this._meshName=props.meshName,this._meshOwner=props.meshOwner,this._spec=props.spec,this.tags=new(cdk()).TagManager(cdk().TagType.STANDARD,"AWS::AppMesh::VirtualRouter",props.tags,{tagPropertyName:"tags"}),this._tagsRaw=props.tags,this._virtualRouterName=props.virtualRouterName}get virtualRouterRef(){return{virtualRouterArn:this.ref}}get meshName(){return this._meshName}set meshName(value){cdk().traceProperty(this.node,"MeshName"),this._meshName=value}get meshOwner(){return this._meshOwner}set meshOwner(value){cdk().traceProperty(this.node,"MeshOwner"),this._meshOwner=value}get spec(){return this._spec}set spec(value){cdk().traceProperty(this.node,"Spec"),this._spec=value}get tagsRaw(){return this._tagsRaw}set tagsRaw(value){cdk().traceProperty(this.node,"Tags"),this._tagsRaw=value}get virtualRouterName(){return this._virtualRouterName}set virtualRouterName(value){cdk().traceProperty(this.node,"VirtualRouterName"),this._virtualRouterName=value}get attrArn(){return cdk().Token.asString(this.getAtt("Arn",cdk().ResolutionTypeHint.STRING))}get attrId(){return cdk().Token.asString(this.getAtt("Id",cdk().ResolutionTypeHint.STRING))}get attrMeshName(){return cdk().Token.asString(this.getAtt("MeshName",cdk().ResolutionTypeHint.STRING))}get attrMeshOwner(){return cdk().Token.asString(this.getAtt("MeshOwner",cdk().ResolutionTypeHint.STRING))}get attrResourceOwner(){return cdk().Token.asString(this.getAtt("ResourceOwner",cdk().ResolutionTypeHint.STRING))}get attrUid(){return cdk().Token.asString(this.getAtt("Uid",cdk().ResolutionTypeHint.STRING))}get attrVirtualRouterName(){return cdk().Token.asString(this.getAtt("VirtualRouterName",cdk().ResolutionTypeHint.STRING))}get cfnProperties(){return{meshName:this._meshName,meshOwner:this._meshOwner,spec:this._spec,tags:this.tags.renderTags(),virtualRouterName:this._virtualRouterName}}inspect(inspector){try{jsiiDeprecationWarnings().aws_cdk_lib_TreeInspector(inspector)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.inspect),error}inspector.addAttribute("aws:cdk:cloudformation:type",CfnVirtualRouter.CFN_RESOURCE_TYPE_NAME),inspector.addAttribute("aws:cdk:cloudformation:logicalId",this._synthesizeLogicalId()),inspector.addAttribute("aws:cdk:cloudformation:props",this.cfnProperties)}renderProperties(props){return convertCfnVirtualRouterPropsToCloudFormation(props)}}exports.CfnVirtualRouter=CfnVirtualRouter;function CfnVirtualRouterPortMappingPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("port",cdk().requiredValidator)(properties.port)),errors.collect(cdk().propertyValidator("port",cdk().validateNumber)(properties.port)),errors.collect(cdk().propertyValidator("protocol",cdk().requiredValidator)(properties.protocol)),errors.collect(cdk().propertyValidator("protocol",cdk().validateString)(properties.protocol)),errors.wrap('supplied properties not correct for "PortMappingProperty"')}function convertCfnVirtualRouterPortMappingPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualRouterPortMappingPropertyValidator(properties).assertSuccess(),{Port:cdk().numberToCloudFormation(properties.port),Protocol:cdk().stringToCloudFormation(properties.protocol)}):properties}function CfnVirtualRouterPortMappingPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("port","Port",properties.Port!=null?cfn_parse().FromCloudFormation.getNumber(properties.Port):void 0),ret.addPropertyResult("protocol","Protocol",properties.Protocol!=null?cfn_parse().FromCloudFormation.getString(properties.Protocol):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualRouterVirtualRouterListenerPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("portMapping",cdk().requiredValidator)(properties.portMapping)),errors.collect(cdk().propertyValidator("portMapping",CfnVirtualRouterPortMappingPropertyValidator)(properties.portMapping)),errors.wrap('supplied properties not correct for "VirtualRouterListenerProperty"')}function convertCfnVirtualRouterVirtualRouterListenerPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualRouterVirtualRouterListenerPropertyValidator(properties).assertSuccess(),{PortMapping:convertCfnVirtualRouterPortMappingPropertyToCloudFormation(properties.portMapping)}):properties}function CfnVirtualRouterVirtualRouterListenerPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("portMapping","PortMapping",properties.PortMapping!=null?CfnVirtualRouterPortMappingPropertyFromCloudFormation(properties.PortMapping):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualRouterVirtualRouterSpecPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("listeners",cdk().requiredValidator)(properties.listeners)),errors.collect(cdk().propertyValidator("listeners",cdk().listValidator(CfnVirtualRouterVirtualRouterListenerPropertyValidator))(properties.listeners)),errors.wrap('supplied properties not correct for "VirtualRouterSpecProperty"')}function convertCfnVirtualRouterVirtualRouterSpecPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualRouterVirtualRouterSpecPropertyValidator(properties).assertSuccess(),{Listeners:cdk().listMapper(convertCfnVirtualRouterVirtualRouterListenerPropertyToCloudFormation)(properties.listeners)}):properties}function CfnVirtualRouterVirtualRouterSpecPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("listeners","Listeners",properties.Listeners!=null?cfn_parse().FromCloudFormation.getArray(CfnVirtualRouterVirtualRouterListenerPropertyFromCloudFormation)(properties.Listeners):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualRouterPropsValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("meshName",cdk().requiredValidator)(properties.meshName)),errors.collect(cdk().propertyValidator("meshName",cdk().validateString)(properties.meshName)),errors.collect(cdk().propertyValidator("meshOwner",cdk().validateString)(properties.meshOwner)),errors.collect(cdk().propertyValidator("spec",cdk().requiredValidator)(properties.spec)),errors.collect(cdk().propertyValidator("spec",CfnVirtualRouterVirtualRouterSpecPropertyValidator)(properties.spec)),errors.collect(cdk().propertyValidator("tags",cdk().listValidator(cdk().validateCfnTag))(properties.tags)),errors.collect(cdk().propertyValidator("virtualRouterName",cdk().validateString)(properties.virtualRouterName)),errors.wrap('supplied properties not correct for "CfnVirtualRouterProps"')}function convertCfnVirtualRouterPropsToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualRouterPropsValidator(properties).assertSuccess(),{MeshName:cdk().stringToCloudFormation(properties.meshName),MeshOwner:cdk().stringToCloudFormation(properties.meshOwner),Spec:convertCfnVirtualRouterVirtualRouterSpecPropertyToCloudFormation(properties.spec),Tags:cdk().listMapper(cdk().cfnTagToCloudFormation)(properties.tags),VirtualRouterName:cdk().stringToCloudFormation(properties.virtualRouterName)}):properties}function CfnVirtualRouterPropsFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("meshName","MeshName",properties.MeshName!=null?cfn_parse().FromCloudFormation.getString(properties.MeshName):void 0),ret.addPropertyResult("meshOwner","MeshOwner",properties.MeshOwner!=null?cfn_parse().FromCloudFormation.getString(properties.MeshOwner):void 0),ret.addPropertyResult("spec","Spec",properties.Spec!=null?CfnVirtualRouterVirtualRouterSpecPropertyFromCloudFormation(properties.Spec):void 0),ret.addPropertyResult("tags","Tags",properties.Tags!=null?cfn_parse().FromCloudFormation.getArray(cfn_parse().FromCloudFormation.getCfnTag)(properties.Tags):void 0),ret.addPropertyResult("virtualRouterName","VirtualRouterName",properties.VirtualRouterName!=null?cfn_parse().FromCloudFormation.getString(properties.VirtualRouterName):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}class CfnVirtualService extends cdk().CfnResource{static[JSII_RTTI_SYMBOL_1]={fqn:"aws-cdk-lib.aws_appmesh.CfnVirtualService",version:"2.252.0"};static CFN_RESOURCE_TYPE_NAME="AWS::AppMesh::VirtualService";static _fromCloudFormation(scope,id,resourceAttributes,options){resourceAttributes=resourceAttributes||{};const resourceProperties=options.parser.parseValue(resourceAttributes.Properties),propsResult=CfnVirtualServicePropsFromCloudFormation(resourceProperties);if(cdk().isResolvableObject(propsResult.value))throw new(cdk_errors()).ValidationError(cfn_parse().lit`UnexpectedIResolvable`,"Unexpected IResolvable",scope);const ret=new CfnVirtualService(scope,id,propsResult.value);for(const[propKey,propVal]of Object.entries(propsResult.extraProperties))ret.addPropertyOverride(propKey,propVal);return options.parser.handleAttributes(ret,resourceAttributes,id),ret}static isCfnVirtualService(x){return cdk().CfnResource.isCfnResource(x)&&x.cfnResourceType===CfnVirtualService.CFN_RESOURCE_TYPE_NAME}static arnForVirtualService(resource){try{jsiiDeprecationWarnings().aws_cdk_lib_interfaces_aws_appmesh_IVirtualServiceRef(resource)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.arnForVirtualService),error}return resource.virtualServiceRef.virtualServiceArn}_meshName;_meshOwner;_spec;tags;_tagsRaw;_virtualServiceName;cfnPropertyNames={meshName:"MeshName",meshOwner:"MeshOwner",spec:"Spec",tags:"Tags",virtualServiceName:"VirtualServiceName"};constructor(scope,id,props){super(scope,id,{type:CfnVirtualService.CFN_RESOURCE_TYPE_NAME,properties:props});try{jsiiDeprecationWarnings().aws_cdk_lib_aws_appmesh_CfnVirtualServiceProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,CfnVirtualService),error}cdk().requireProperty(props,"meshName",this),cdk().requireProperty(props,"spec",this),cdk().requireProperty(props,"virtualServiceName",this),this._meshName=props.meshName,this._meshOwner=props.meshOwner,this._spec=props.spec,this.tags=new(cdk()).TagManager(cdk().TagType.STANDARD,"AWS::AppMesh::VirtualService",props.tags,{tagPropertyName:"tags"}),this._tagsRaw=props.tags,this._virtualServiceName=props.virtualServiceName}get virtualServiceRef(){return{virtualServiceArn:this.ref}}get meshName(){return this._meshName}set meshName(value){cdk().traceProperty(this.node,"MeshName"),this._meshName=value}get meshOwner(){return this._meshOwner}set meshOwner(value){cdk().traceProperty(this.node,"MeshOwner"),this._meshOwner=value}get spec(){return this._spec}set spec(value){cdk().traceProperty(this.node,"Spec"),this._spec=value}get tagsRaw(){return this._tagsRaw}set tagsRaw(value){cdk().traceProperty(this.node,"Tags"),this._tagsRaw=value}get virtualServiceName(){return this._virtualServiceName}set virtualServiceName(value){cdk().traceProperty(this.node,"VirtualServiceName"),this._virtualServiceName=value}get attrArn(){return cdk().Token.asString(this.getAtt("Arn",cdk().ResolutionTypeHint.STRING))}get attrId(){return cdk().Token.asString(this.getAtt("Id",cdk().ResolutionTypeHint.STRING))}get attrMeshName(){return cdk().Token.asString(this.getAtt("MeshName",cdk().ResolutionTypeHint.STRING))}get attrMeshOwner(){return cdk().Token.asString(this.getAtt("MeshOwner",cdk().ResolutionTypeHint.STRING))}get attrResourceOwner(){return cdk().Token.asString(this.getAtt("ResourceOwner",cdk().ResolutionTypeHint.STRING))}get attrUid(){return cdk().Token.asString(this.getAtt("Uid",cdk().ResolutionTypeHint.STRING))}get attrVirtualServiceName(){return cdk().Token.asString(this.getAtt("VirtualServiceName",cdk().ResolutionTypeHint.STRING))}get cfnProperties(){return{meshName:this._meshName,meshOwner:this._meshOwner,spec:this._spec,tags:this.tags.renderTags(),virtualServiceName:this._virtualServiceName}}inspect(inspector){try{jsiiDeprecationWarnings().aws_cdk_lib_TreeInspector(inspector)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.inspect),error}inspector.addAttribute("aws:cdk:cloudformation:type",CfnVirtualService.CFN_RESOURCE_TYPE_NAME),inspector.addAttribute("aws:cdk:cloudformation:logicalId",this._synthesizeLogicalId()),inspector.addAttribute("aws:cdk:cloudformation:props",this.cfnProperties)}renderProperties(props){return convertCfnVirtualServicePropsToCloudFormation(props)}}exports.CfnVirtualService=CfnVirtualService;function CfnVirtualServiceVirtualNodeServiceProviderPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("virtualNodeName",cdk().requiredValidator)(properties.virtualNodeName)),errors.collect(cdk().propertyValidator("virtualNodeName",cdk().validateString)(properties.virtualNodeName)),errors.wrap('supplied properties not correct for "VirtualNodeServiceProviderProperty"')}function convertCfnVirtualServiceVirtualNodeServiceProviderPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualServiceVirtualNodeServiceProviderPropertyValidator(properties).assertSuccess(),{VirtualNodeName:cdk().stringToCloudFormation(properties.virtualNodeName)}):properties}function CfnVirtualServiceVirtualNodeServiceProviderPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("virtualNodeName","VirtualNodeName",properties.VirtualNodeName!=null?cfn_parse().FromCloudFormation.getString(properties.VirtualNodeName):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualServiceVirtualRouterServiceProviderPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("virtualRouterName",cdk().requiredValidator)(properties.virtualRouterName)),errors.collect(cdk().propertyValidator("virtualRouterName",cdk().validateString)(properties.virtualRouterName)),errors.wrap('supplied properties not correct for "VirtualRouterServiceProviderProperty"')}function convertCfnVirtualServiceVirtualRouterServiceProviderPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualServiceVirtualRouterServiceProviderPropertyValidator(properties).assertSuccess(),{VirtualRouterName:cdk().stringToCloudFormation(properties.virtualRouterName)}):properties}function CfnVirtualServiceVirtualRouterServiceProviderPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("virtualRouterName","VirtualRouterName",properties.VirtualRouterName!=null?cfn_parse().FromCloudFormation.getString(properties.VirtualRouterName):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualServiceVirtualServiceProviderPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("virtualNode",CfnVirtualServiceVirtualNodeServiceProviderPropertyValidator)(properties.virtualNode)),errors.collect(cdk().propertyValidator("virtualRouter",CfnVirtualServiceVirtualRouterServiceProviderPropertyValidator)(properties.virtualRouter)),errors.wrap('supplied properties not correct for "VirtualServiceProviderProperty"')}function convertCfnVirtualServiceVirtualServiceProviderPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualServiceVirtualServiceProviderPropertyValidator(properties).assertSuccess(),{VirtualNode:convertCfnVirtualServiceVirtualNodeServiceProviderPropertyToCloudFormation(properties.virtualNode),VirtualRouter:convertCfnVirtualServiceVirtualRouterServiceProviderPropertyToCloudFormation(properties.virtualRouter)}):properties}function CfnVirtualServiceVirtualServiceProviderPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("virtualNode","VirtualNode",properties.VirtualNode!=null?CfnVirtualServiceVirtualNodeServiceProviderPropertyFromCloudFormation(properties.VirtualNode):void 0),ret.addPropertyResult("virtualRouter","VirtualRouter",properties.VirtualRouter!=null?CfnVirtualServiceVirtualRouterServiceProviderPropertyFromCloudFormation(properties.VirtualRouter):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualServiceVirtualServiceSpecPropertyValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("provider",CfnVirtualServiceVirtualServiceProviderPropertyValidator)(properties.provider)),errors.wrap('supplied properties not correct for "VirtualServiceSpecProperty"')}function convertCfnVirtualServiceVirtualServiceSpecPropertyToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualServiceVirtualServiceSpecPropertyValidator(properties).assertSuccess(),{Provider:convertCfnVirtualServiceVirtualServiceProviderPropertyToCloudFormation(properties.provider)}):properties}function CfnVirtualServiceVirtualServiceSpecPropertyFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("provider","Provider",properties.Provider!=null?CfnVirtualServiceVirtualServiceProviderPropertyFromCloudFormation(properties.Provider):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}function CfnVirtualServicePropsValidator(properties){if(!cdk().canInspect(properties))return cdk().VALIDATION_SUCCESS;const errors=new(cdk()).ValidationResults;return properties&&typeof properties=="object"&&!Array.isArray(properties)||errors.collect(new(cdk()).ValidationResult("Expected an object, but received: "+JSON.stringify(properties))),errors.collect(cdk().propertyValidator("meshName",cdk().requiredValidator)(properties.meshName)),errors.collect(cdk().propertyValidator("meshName",cdk().validateString)(properties.meshName)),errors.collect(cdk().propertyValidator("meshOwner",cdk().validateString)(properties.meshOwner)),errors.collect(cdk().propertyValidator("spec",cdk().requiredValidator)(properties.spec)),errors.collect(cdk().propertyValidator("spec",CfnVirtualServiceVirtualServiceSpecPropertyValidator)(properties.spec)),errors.collect(cdk().propertyValidator("tags",cdk().listValidator(cdk().validateCfnTag))(properties.tags)),errors.collect(cdk().propertyValidator("virtualServiceName",cdk().requiredValidator)(properties.virtualServiceName)),errors.collect(cdk().propertyValidator("virtualServiceName",cdk().validateString)(properties.virtualServiceName)),errors.wrap('supplied properties not correct for "CfnVirtualServiceProps"')}function convertCfnVirtualServicePropsToCloudFormation(properties){return cdk().canInspect(properties)?(CfnVirtualServicePropsValidator(properties).assertSuccess(),{MeshName:cdk().stringToCloudFormation(properties.meshName),MeshOwner:cdk().stringToCloudFormation(properties.meshOwner),Spec:convertCfnVirtualServiceVirtualServiceSpecPropertyToCloudFormation(properties.spec),Tags:cdk().listMapper(cdk().cfnTagToCloudFormation)(properties.tags),VirtualServiceName:cdk().stringToCloudFormation(properties.virtualServiceName)}):properties}function CfnVirtualServicePropsFromCloudFormation(properties){if(cdk().isResolvableObject(properties))return new(cfn_parse()).FromCloudFormationResult(properties);if(properties=properties??{},!(properties&&typeof properties=="object"&&!Array.isArray(properties)))return new(cfn_parse()).FromCloudFormationResult(properties);const ret=new(cfn_parse()).FromCloudFormationPropertyObject;return ret.addPropertyResult("meshName","MeshName",properties.MeshName!=null?cfn_parse().FromCloudFormation.getString(properties.MeshName):void 0),ret.addPropertyResult("meshOwner","MeshOwner",properties.MeshOwner!=null?cfn_parse().FromCloudFormation.getString(properties.MeshOwner):void 0),ret.addPropertyResult("spec","Spec",properties.Spec!=null?CfnVirtualServiceVirtualServiceSpecPropertyFromCloudFormation(properties.Spec):void 0),ret.addPropertyResult("tags","Tags",properties.Tags!=null?cfn_parse().FromCloudFormation.getArray(cfn_parse().FromCloudFormation.getCfnTag)(properties.Tags):void 0),ret.addPropertyResult("virtualServiceName","VirtualServiceName",properties.VirtualServiceName!=null?cfn_parse().FromCloudFormation.getString(properties.VirtualServiceName):void 0),ret.addUnrecognizedPropertiesAsExtra(properties),ret}