VaporShell.CloudFront.Classes.ps1

using namespace System
using namespace System.Collections
using namespace System.Collections.Generic
using namespace System.IO
using namespace System.Management.Automation
[CmdletBinding()]
Param()

Write-Verbose "Importing class 'CloudFrontOriginRequestPolicyOriginRequestPolicyConfig'"

class CloudFrontOriginRequestPolicyOriginRequestPolicyConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontOriginRequestPolicyOriginRequestPolicyConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-originrequestpolicy-originrequestpolicyconfig.html'

    hidden [object] $_comment
    hidden [object] $_cookiesConfig
    hidden [object] $_headersConfig
    hidden [object] $_name
    hidden [object] $_queryStringsConfig

    [string] $Comment
    [CloudFrontOriginRequestPolicyCookiesConfig] $CookiesConfig
    [CloudFrontOriginRequestPolicyHeadersConfig] $HeadersConfig
    [string] $Name
    [CloudFrontOriginRequestPolicyQueryStringsConfig] $QueryStringsConfig

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Comment -Value {
            $this._comment
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._comment = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CookiesConfig -Value {
            $this._cookiesConfig
        } -SecondValue {
            param([ValidateType(([CloudFrontOriginRequestPolicyCookiesConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cookiesConfig = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HeadersConfig -Value {
            $this._headersConfig
        } -SecondValue {
            param([ValidateType(([CloudFrontOriginRequestPolicyHeadersConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._headersConfig = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this._name
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._name = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name QueryStringsConfig -Value {
            $this._queryStringsConfig
        } -SecondValue {
            param([ValidateType(([CloudFrontOriginRequestPolicyQueryStringsConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._queryStringsConfig = $value
        }
    }

    CloudFrontOriginRequestPolicyOriginRequestPolicyConfig() : base() {}
    CloudFrontOriginRequestPolicyOriginRequestPolicyConfig([IDictionary] $props) : base($props) {}
    CloudFrontOriginRequestPolicyOriginRequestPolicyConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontResponseHeadersPolicyXSSProtection'"

class CloudFrontResponseHeadersPolicyXSSProtection : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontResponseHeadersPolicyXSSProtection'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-responseheaderspolicy-xssprotection.html'

    hidden [object] $_modeBlock
    hidden [object] $_override
    hidden [object] $_protection
    hidden [object] $_reportUri

    [bool] $ModeBlock
    [bool] $Override
    [bool] $Protection
    [string] $ReportUri

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ModeBlock -Value {
            $this._modeBlock
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._modeBlock = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Override -Value {
            $this._override
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._override = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Protection -Value {
            $this._protection
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._protection = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ReportUri -Value {
            $this._reportUri
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._reportUri = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    CloudFrontResponseHeadersPolicyXSSProtection() : base() {}
    CloudFrontResponseHeadersPolicyXSSProtection([IDictionary] $props) : base($props) {}
    CloudFrontResponseHeadersPolicyXSSProtection([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontResponseHeadersPolicyResponseHeadersPolicyConfig'"

class CloudFrontResponseHeadersPolicyResponseHeadersPolicyConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontResponseHeadersPolicyResponseHeadersPolicyConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-responseheaderspolicy-responseheaderspolicyconfig.html'

    hidden [object] $_comment
    hidden [object] $_corsConfig
    hidden [object] $_customHeadersConfig
    hidden [object] $_name
    hidden [object] $_securityHeadersConfig

    [string] $Comment
    [CloudFrontResponseHeadersPolicyCorsConfig] $CorsConfig
    [CloudFrontResponseHeadersPolicyCustomHeadersConfig] $CustomHeadersConfig
    [string] $Name
    [CloudFrontResponseHeadersPolicySecurityHeadersConfig] $SecurityHeadersConfig

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Comment -Value {
            $this._comment
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._comment = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CorsConfig -Value {
            $this._corsConfig
        } -SecondValue {
            param([ValidateType(([CloudFrontResponseHeadersPolicyCorsConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._corsConfig = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CustomHeadersConfig -Value {
            $this._customHeadersConfig
        } -SecondValue {
            param([ValidateType(([CloudFrontResponseHeadersPolicyCustomHeadersConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._customHeadersConfig = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this._name
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._name = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SecurityHeadersConfig -Value {
            $this._securityHeadersConfig
        } -SecondValue {
            param([ValidateType(([CloudFrontResponseHeadersPolicySecurityHeadersConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._securityHeadersConfig = $value
        }
    }

    CloudFrontResponseHeadersPolicyResponseHeadersPolicyConfig() : base() {}
    CloudFrontResponseHeadersPolicyResponseHeadersPolicyConfig([IDictionary] $props) : base($props) {}
    CloudFrontResponseHeadersPolicyResponseHeadersPolicyConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontStreamingDistributionS3Origin'"

class CloudFrontStreamingDistributionS3Origin : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontStreamingDistributionS3Origin'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-streamingdistribution-s3origin.html'

    hidden [object] $_domainName
    hidden [object] $_originAccessIdentity

    [string] $DomainName
    [string] $OriginAccessIdentity

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name DomainName -Value {
            $this._domainName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._domainName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OriginAccessIdentity -Value {
            $this._originAccessIdentity
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._originAccessIdentity = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    CloudFrontStreamingDistributionS3Origin() : base() {}
    CloudFrontStreamingDistributionS3Origin([IDictionary] $props) : base($props) {}
    CloudFrontStreamingDistributionS3Origin([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontDistributionLegacyS3Origin'"

class CloudFrontDistributionLegacyS3Origin : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontDistributionLegacyS3Origin'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-legacys3origin.html'

    hidden [object] $_originAccessIdentity
    hidden [object] $_dNSName

    [string] $OriginAccessIdentity
    [string] $DNSName

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name OriginAccessIdentity -Value {
            $this._originAccessIdentity
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._originAccessIdentity = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DNSName -Value {
            $this._dNSName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._dNSName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    CloudFrontDistributionLegacyS3Origin() : base() {}
    CloudFrontDistributionLegacyS3Origin([IDictionary] $props) : base($props) {}
    CloudFrontDistributionLegacyS3Origin([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontDistributionCustomOriginConfig'"

class CloudFrontDistributionCustomOriginConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontDistributionCustomOriginConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-customoriginconfig.html'

    hidden [object] $_originReadTimeout
    hidden [object] $_hTTPSPort
    hidden [object] $_originKeepaliveTimeout
    hidden [object] $_originSSLProtocols
    hidden [object] $_hTTPPort
    hidden [object] $_originProtocolPolicy

    [int] $OriginReadTimeout
    [int] $HTTPSPort
    [int] $OriginKeepaliveTimeout
    [string[]] $OriginSSLProtocols
    [int] $HTTPPort
    [string] $OriginProtocolPolicy

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name OriginReadTimeout -Value {
            $this._originReadTimeout
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._originReadTimeout = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HTTPSPort -Value {
            $this._hTTPSPort
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._hTTPSPort = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OriginKeepaliveTimeout -Value {
            $this._originKeepaliveTimeout
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._originKeepaliveTimeout = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OriginSSLProtocols -Value {
            $this._originSSLProtocols
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._originSSLProtocols = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HTTPPort -Value {
            $this._hTTPPort
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._hTTPPort = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OriginProtocolPolicy -Value {
            $this._originProtocolPolicy
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._originProtocolPolicy = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    CloudFrontDistributionCustomOriginConfig() : base() {}
    CloudFrontDistributionCustomOriginConfig([IDictionary] $props) : base($props) {}
    CloudFrontDistributionCustomOriginConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontDistributionOriginGroupMembers'"

class CloudFrontDistributionOriginGroupMembers : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontDistributionOriginGroupMembers'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-origingroupmembers.html'

    hidden [object] $_quantity
    hidden [object] $_items

    [int] $Quantity
    [CloudFrontDistributionOriginGroupMember[]] $Items

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Quantity -Value {
            $this._quantity
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._quantity = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Items -Value {
            $this._items
        } -SecondValue {
            param([ValidateType(([CloudFrontDistributionOriginGroupMember], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._items = $value
        }
    }

    CloudFrontDistributionOriginGroupMembers() : base() {}
    CloudFrontDistributionOriginGroupMembers([IDictionary] $props) : base($props) {}
    CloudFrontDistributionOriginGroupMembers([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontCachePolicyParametersInCacheKeyAndForwardedToOrigin'"

class CloudFrontCachePolicyParametersInCacheKeyAndForwardedToOrigin : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontCachePolicyParametersInCacheKeyAndForwardedToOrigin'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachepolicy-parametersincachekeyandforwardedtoorigin.html'

    hidden [object] $_cookiesConfig
    hidden [object] $_enableAcceptEncodingBrotli
    hidden [object] $_enableAcceptEncodingGzip
    hidden [object] $_headersConfig
    hidden [object] $_queryStringsConfig

    [CloudFrontCachePolicyCookiesConfig] $CookiesConfig
    [bool] $EnableAcceptEncodingBrotli
    [bool] $EnableAcceptEncodingGzip
    [CloudFrontCachePolicyHeadersConfig] $HeadersConfig
    [CloudFrontCachePolicyQueryStringsConfig] $QueryStringsConfig

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name CookiesConfig -Value {
            $this._cookiesConfig
        } -SecondValue {
            param([ValidateType(([CloudFrontCachePolicyCookiesConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cookiesConfig = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EnableAcceptEncodingBrotli -Value {
            $this._enableAcceptEncodingBrotli
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._enableAcceptEncodingBrotli = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EnableAcceptEncodingGzip -Value {
            $this._enableAcceptEncodingGzip
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._enableAcceptEncodingGzip = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HeadersConfig -Value {
            $this._headersConfig
        } -SecondValue {
            param([ValidateType(([CloudFrontCachePolicyHeadersConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._headersConfig = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name QueryStringsConfig -Value {
            $this._queryStringsConfig
        } -SecondValue {
            param([ValidateType(([CloudFrontCachePolicyQueryStringsConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._queryStringsConfig = $value
        }
    }

    CloudFrontCachePolicyParametersInCacheKeyAndForwardedToOrigin() : base() {}
    CloudFrontCachePolicyParametersInCacheKeyAndForwardedToOrigin([IDictionary] $props) : base($props) {}
    CloudFrontCachePolicyParametersInCacheKeyAndForwardedToOrigin([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontRealtimeLogConfigEndPoint'"

class CloudFrontRealtimeLogConfigEndPoint : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontRealtimeLogConfigEndPoint'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-realtimelogconfig-endpoint.html'

    hidden [object] $_kinesisStreamConfig
    hidden [object] $_streamType

    [CloudFrontRealtimeLogConfigKinesisStreamConfig] $KinesisStreamConfig
    [string] $StreamType

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name KinesisStreamConfig -Value {
            $this._kinesisStreamConfig
        } -SecondValue {
            param([ValidateType(([CloudFrontRealtimeLogConfigKinesisStreamConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._kinesisStreamConfig = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StreamType -Value {
            $this._streamType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._streamType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    CloudFrontRealtimeLogConfigEndPoint() : base() {}
    CloudFrontRealtimeLogConfigEndPoint([IDictionary] $props) : base($props) {}
    CloudFrontRealtimeLogConfigEndPoint([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontDistributionViewerCertificate'"

class CloudFrontDistributionViewerCertificate : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontDistributionViewerCertificate'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-viewercertificate.html'

    hidden [object] $_iamCertificateId
    hidden [object] $_sslSupportMethod
    hidden [object] $_minimumProtocolVersion
    hidden [object] $_cloudFrontDefaultCertificate
    hidden [object] $_acmCertificateArn

    [string] $IamCertificateId
    [string] $SslSupportMethod
    [string] $MinimumProtocolVersion
    [bool] $CloudFrontDefaultCertificate
    [string] $AcmCertificateArn

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name IamCertificateId -Value {
            $this._iamCertificateId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._iamCertificateId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SslSupportMethod -Value {
            $this._sslSupportMethod
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sslSupportMethod = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MinimumProtocolVersion -Value {
            $this._minimumProtocolVersion
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._minimumProtocolVersion = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CloudFrontDefaultCertificate -Value {
            $this._cloudFrontDefaultCertificate
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cloudFrontDefaultCertificate = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AcmCertificateArn -Value {
            $this._acmCertificateArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._acmCertificateArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    CloudFrontDistributionViewerCertificate() : base() {}
    CloudFrontDistributionViewerCertificate([IDictionary] $props) : base($props) {}
    CloudFrontDistributionViewerCertificate([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontDistributionCustomErrorResponse'"

class CloudFrontDistributionCustomErrorResponse : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontDistributionCustomErrorResponse'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-customerrorresponse.html'

    hidden [object] $_responseCode
    hidden [object] $_errorCachingMinTTL
    hidden [object] $_errorCode
    hidden [object] $_responsePagePath

    [int] $ResponseCode
    [double] $ErrorCachingMinTTL
    [int] $ErrorCode
    [string] $ResponsePagePath

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResponseCode -Value {
            $this._responseCode
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._responseCode = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ErrorCachingMinTTL -Value {
            $this._errorCachingMinTTL
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._errorCachingMinTTL = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ErrorCode -Value {
            $this._errorCode
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._errorCode = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResponsePagePath -Value {
            $this._responsePagePath
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._responsePagePath = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    CloudFrontDistributionCustomErrorResponse() : base() {}
    CloudFrontDistributionCustomErrorResponse([IDictionary] $props) : base($props) {}
    CloudFrontDistributionCustomErrorResponse([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontStreamingDistributionStreamingDistributionConfig'"

class CloudFrontStreamingDistributionStreamingDistributionConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontStreamingDistributionStreamingDistributionConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-streamingdistribution-streamingdistributionconfig.html'

    hidden [object] $_logging
    hidden [object] $_comment
    hidden [object] $_priceClass
    hidden [object] $_s3Origin
    hidden [object] $_enabled
    hidden [object] $_aliases
    hidden [object] $_trustedSigners

    [CloudFrontStreamingDistributionLogging] $Logging
    [string] $Comment
    [string] $PriceClass
    [CloudFrontStreamingDistributionS3Origin] $S3Origin
    [bool] $Enabled
    [string[]] $Aliases
    [CloudFrontStreamingDistributionTrustedSigners] $TrustedSigners

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Logging -Value {
            $this._logging
        } -SecondValue {
            param([ValidateType(([CloudFrontStreamingDistributionLogging], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._logging = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Comment -Value {
            $this._comment
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._comment = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PriceClass -Value {
            $this._priceClass
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._priceClass = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name S3Origin -Value {
            $this._s3Origin
        } -SecondValue {
            param([ValidateType(([CloudFrontStreamingDistributionS3Origin], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._s3Origin = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Enabled -Value {
            $this._enabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._enabled = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Aliases -Value {
            $this._aliases
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._aliases = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TrustedSigners -Value {
            $this._trustedSigners
        } -SecondValue {
            param([ValidateType(([CloudFrontStreamingDistributionTrustedSigners], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._trustedSigners = $value
        }
    }

    CloudFrontStreamingDistributionStreamingDistributionConfig() : base() {}
    CloudFrontStreamingDistributionStreamingDistributionConfig([IDictionary] $props) : base($props) {}
    CloudFrontStreamingDistributionStreamingDistributionConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontDistributionOriginGroupMember'"

class CloudFrontDistributionOriginGroupMember : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontDistributionOriginGroupMember'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-origingroupmember.html'

    hidden [object] $_originId

    [string] $OriginId

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name OriginId -Value {
            $this._originId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._originId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    CloudFrontDistributionOriginGroupMember() : base() {}
    CloudFrontDistributionOriginGroupMember([IDictionary] $props) : base($props) {}
    CloudFrontDistributionOriginGroupMember([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontResponseHeadersPolicyAccessControlAllowHeaders'"

class CloudFrontResponseHeadersPolicyAccessControlAllowHeaders : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontResponseHeadersPolicyAccessControlAllowHeaders'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-responseheaderspolicy-accesscontrolallowheaders.html'

    hidden [object] $_items

    [string[]] $Items

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Items -Value {
            $this._items
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._items = @($value)
        }
    }

    CloudFrontResponseHeadersPolicyAccessControlAllowHeaders() : base() {}
    CloudFrontResponseHeadersPolicyAccessControlAllowHeaders([IDictionary] $props) : base($props) {}
    CloudFrontResponseHeadersPolicyAccessControlAllowHeaders([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontDistributionCacheBehavior'"

class CloudFrontDistributionCacheBehavior : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontDistributionCacheBehavior'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-cachebehavior.html'

    hidden [object] $_compress
    hidden [object] $_functionAssociations
    hidden [object] $_lambdaFunctionAssociations
    hidden [object] $_targetOriginId
    hidden [object] $_viewerProtocolPolicy
    hidden [object] $_responseHeadersPolicyId
    hidden [object] $_realtimeLogConfigArn
    hidden [object] $_trustedSigners
    hidden [object] $_defaultTTL
    hidden [object] $_fieldLevelEncryptionId
    hidden [object] $_trustedKeyGroups
    hidden [object] $_allowedMethods
    hidden [object] $_pathPattern
    hidden [object] $_cachedMethods
    hidden [object] $_smoothStreaming
    hidden [object] $_forwardedValues
    hidden [object] $_originRequestPolicyId
    hidden [object] $_minTTL
    hidden [object] $_cachePolicyId
    hidden [object] $_maxTTL

    [bool] $Compress
    [CloudFrontDistributionFunctionAssociation[]] $FunctionAssociations
    [CloudFrontDistributionLambdaFunctionAssociation[]] $LambdaFunctionAssociations
    [string] $TargetOriginId
    [string] $ViewerProtocolPolicy
    [string] $ResponseHeadersPolicyId
    [string] $RealtimeLogConfigArn
    [string[]] $TrustedSigners
    [double] $DefaultTTL
    [string] $FieldLevelEncryptionId
    [string[]] $TrustedKeyGroups
    [string[]] $AllowedMethods
    [string] $PathPattern
    [string[]] $CachedMethods
    [bool] $SmoothStreaming
    [CloudFrontDistributionForwardedValues] $ForwardedValues
    [string] $OriginRequestPolicyId
    [double] $MinTTL
    [string] $CachePolicyId
    [double] $MaxTTL

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Compress -Value {
            $this._compress
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._compress = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name FunctionAssociations -Value {
            $this._functionAssociations
        } -SecondValue {
            param([ValidateType(([CloudFrontDistributionFunctionAssociation], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._functionAssociations = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LambdaFunctionAssociations -Value {
            $this._lambdaFunctionAssociations
        } -SecondValue {
            param([ValidateType(([CloudFrontDistributionLambdaFunctionAssociation], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._lambdaFunctionAssociations = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetOriginId -Value {
            $this._targetOriginId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._targetOriginId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ViewerProtocolPolicy -Value {
            $this._viewerProtocolPolicy
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._viewerProtocolPolicy = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResponseHeadersPolicyId -Value {
            $this._responseHeadersPolicyId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._responseHeadersPolicyId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RealtimeLogConfigArn -Value {
            $this._realtimeLogConfigArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._realtimeLogConfigArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TrustedSigners -Value {
            $this._trustedSigners
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._trustedSigners = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DefaultTTL -Value {
            $this._defaultTTL
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._defaultTTL = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name FieldLevelEncryptionId -Value {
            $this._fieldLevelEncryptionId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._fieldLevelEncryptionId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TrustedKeyGroups -Value {
            $this._trustedKeyGroups
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._trustedKeyGroups = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AllowedMethods -Value {
            $this._allowedMethods
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._allowedMethods = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PathPattern -Value {
            $this._pathPattern
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._pathPattern = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CachedMethods -Value {
            $this._cachedMethods
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._cachedMethods = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SmoothStreaming -Value {
            $this._smoothStreaming
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._smoothStreaming = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ForwardedValues -Value {
            $this._forwardedValues
        } -SecondValue {
            param([ValidateType(([CloudFrontDistributionForwardedValues], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._forwardedValues = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OriginRequestPolicyId -Value {
            $this._originRequestPolicyId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._originRequestPolicyId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MinTTL -Value {
            $this._minTTL
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._minTTL = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CachePolicyId -Value {
            $this._cachePolicyId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cachePolicyId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxTTL -Value {
            $this._maxTTL
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maxTTL = $value
        }
    }

    CloudFrontDistributionCacheBehavior() : base() {}
    CloudFrontDistributionCacheBehavior([IDictionary] $props) : base($props) {}
    CloudFrontDistributionCacheBehavior([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontStreamingDistributionTrustedSigners'"

class CloudFrontStreamingDistributionTrustedSigners : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontStreamingDistributionTrustedSigners'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-streamingdistribution-trustedsigners.html'

    hidden [object] $_enabled
    hidden [object] $_awsAccountNumbers

    [bool] $Enabled
    [string[]] $AwsAccountNumbers

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Enabled -Value {
            $this._enabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._enabled = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AwsAccountNumbers -Value {
            $this._awsAccountNumbers
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._awsAccountNumbers = @($value)
        }
    }

    CloudFrontStreamingDistributionTrustedSigners() : base() {}
    CloudFrontStreamingDistributionTrustedSigners([IDictionary] $props) : base($props) {}
    CloudFrontStreamingDistributionTrustedSigners([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontDistributionDefaultCacheBehavior'"

class CloudFrontDistributionDefaultCacheBehavior : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontDistributionDefaultCacheBehavior'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-defaultcachebehavior.html'

    hidden [object] $_compress
    hidden [object] $_functionAssociations
    hidden [object] $_lambdaFunctionAssociations
    hidden [object] $_targetOriginId
    hidden [object] $_viewerProtocolPolicy
    hidden [object] $_responseHeadersPolicyId
    hidden [object] $_realtimeLogConfigArn
    hidden [object] $_trustedSigners
    hidden [object] $_defaultTTL
    hidden [object] $_fieldLevelEncryptionId
    hidden [object] $_trustedKeyGroups
    hidden [object] $_allowedMethods
    hidden [object] $_cachedMethods
    hidden [object] $_smoothStreaming
    hidden [object] $_forwardedValues
    hidden [object] $_originRequestPolicyId
    hidden [object] $_minTTL
    hidden [object] $_cachePolicyId
    hidden [object] $_maxTTL

    [bool] $Compress
    [CloudFrontDistributionFunctionAssociation[]] $FunctionAssociations
    [CloudFrontDistributionLambdaFunctionAssociation[]] $LambdaFunctionAssociations
    [string] $TargetOriginId
    [string] $ViewerProtocolPolicy
    [string] $ResponseHeadersPolicyId
    [string] $RealtimeLogConfigArn
    [string[]] $TrustedSigners
    [double] $DefaultTTL
    [string] $FieldLevelEncryptionId
    [string[]] $TrustedKeyGroups
    [string[]] $AllowedMethods
    [string[]] $CachedMethods
    [bool] $SmoothStreaming
    [CloudFrontDistributionForwardedValues] $ForwardedValues
    [string] $OriginRequestPolicyId
    [double] $MinTTL
    [string] $CachePolicyId
    [double] $MaxTTL

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Compress -Value {
            $this._compress
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._compress = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name FunctionAssociations -Value {
            $this._functionAssociations
        } -SecondValue {
            param([ValidateType(([CloudFrontDistributionFunctionAssociation], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._functionAssociations = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LambdaFunctionAssociations -Value {
            $this._lambdaFunctionAssociations
        } -SecondValue {
            param([ValidateType(([CloudFrontDistributionLambdaFunctionAssociation], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._lambdaFunctionAssociations = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetOriginId -Value {
            $this._targetOriginId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._targetOriginId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ViewerProtocolPolicy -Value {
            $this._viewerProtocolPolicy
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._viewerProtocolPolicy = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResponseHeadersPolicyId -Value {
            $this._responseHeadersPolicyId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._responseHeadersPolicyId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RealtimeLogConfigArn -Value {
            $this._realtimeLogConfigArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._realtimeLogConfigArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TrustedSigners -Value {
            $this._trustedSigners
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._trustedSigners = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DefaultTTL -Value {
            $this._defaultTTL
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._defaultTTL = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name FieldLevelEncryptionId -Value {
            $this._fieldLevelEncryptionId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._fieldLevelEncryptionId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TrustedKeyGroups -Value {
            $this._trustedKeyGroups
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._trustedKeyGroups = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AllowedMethods -Value {
            $this._allowedMethods
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._allowedMethods = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CachedMethods -Value {
            $this._cachedMethods
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._cachedMethods = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SmoothStreaming -Value {
            $this._smoothStreaming
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._smoothStreaming = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ForwardedValues -Value {
            $this._forwardedValues
        } -SecondValue {
            param([ValidateType(([CloudFrontDistributionForwardedValues], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._forwardedValues = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OriginRequestPolicyId -Value {
            $this._originRequestPolicyId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._originRequestPolicyId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MinTTL -Value {
            $this._minTTL
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._minTTL = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CachePolicyId -Value {
            $this._cachePolicyId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cachePolicyId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxTTL -Value {
            $this._maxTTL
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maxTTL = $value
        }
    }

    CloudFrontDistributionDefaultCacheBehavior() : base() {}
    CloudFrontDistributionDefaultCacheBehavior([IDictionary] $props) : base($props) {}
    CloudFrontDistributionDefaultCacheBehavior([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontDistributionRestrictions'"

class CloudFrontDistributionRestrictions : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontDistributionRestrictions'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-restrictions.html'

    hidden [object] $_geoRestriction

    [CloudFrontDistributionGeoRestriction] $GeoRestriction

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name GeoRestriction -Value {
            $this._geoRestriction
        } -SecondValue {
            param([ValidateType(([CloudFrontDistributionGeoRestriction], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._geoRestriction = $value
        }
    }

    CloudFrontDistributionRestrictions() : base() {}
    CloudFrontDistributionRestrictions([IDictionary] $props) : base($props) {}
    CloudFrontDistributionRestrictions([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontResponseHeadersPolicyCustomHeader'"

class CloudFrontResponseHeadersPolicyCustomHeader : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontResponseHeadersPolicyCustomHeader'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-responseheaderspolicy-customheader.html'

    hidden [object] $_header
    hidden [object] $_override
    hidden [object] $_value

    [string] $Header
    [bool] $Override
    [string] $Value

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Header -Value {
            $this._header
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._header = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Override -Value {
            $this._override
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._override = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Value -Value {
            $this._value
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._value = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    CloudFrontResponseHeadersPolicyCustomHeader() : base() {}
    CloudFrontResponseHeadersPolicyCustomHeader([IDictionary] $props) : base($props) {}
    CloudFrontResponseHeadersPolicyCustomHeader([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontFunctionFunctionConfig'"

class CloudFrontFunctionFunctionConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontFunctionFunctionConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-function-functionconfig.html'

    hidden [object] $_comment
    hidden [object] $_runtime

    [string] $Comment
    [string] $Runtime

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Comment -Value {
            $this._comment
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._comment = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Runtime -Value {
            $this._runtime
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._runtime = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    CloudFrontFunctionFunctionConfig() : base() {}
    CloudFrontFunctionFunctionConfig([IDictionary] $props) : base($props) {}
    CloudFrontFunctionFunctionConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontDistributionOriginGroupFailoverCriteria'"

class CloudFrontDistributionOriginGroupFailoverCriteria : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontDistributionOriginGroupFailoverCriteria'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-origingroupfailovercriteria.html'

    hidden [object] $_statusCodes

    [CloudFrontDistributionStatusCodes] $StatusCodes

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name StatusCodes -Value {
            $this._statusCodes
        } -SecondValue {
            param([ValidateType(([CloudFrontDistributionStatusCodes], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._statusCodes = $value
        }
    }

    CloudFrontDistributionOriginGroupFailoverCriteria() : base() {}
    CloudFrontDistributionOriginGroupFailoverCriteria([IDictionary] $props) : base($props) {}
    CloudFrontDistributionOriginGroupFailoverCriteria([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontResponseHeadersPolicySecurityHeadersConfig'"

class CloudFrontResponseHeadersPolicySecurityHeadersConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontResponseHeadersPolicySecurityHeadersConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-responseheaderspolicy-securityheadersconfig.html'

    hidden [object] $_contentSecurityPolicy
    hidden [object] $_contentTypeOptions
    hidden [object] $_frameOptions
    hidden [object] $_referrerPolicy
    hidden [object] $_strictTransportSecurity
    hidden [object] $_xSSProtection

    [CloudFrontResponseHeadersPolicyContentSecurityPolicy] $ContentSecurityPolicy
    [CloudFrontResponseHeadersPolicyContentTypeOptions] $ContentTypeOptions
    [CloudFrontResponseHeadersPolicyFrameOptions] $FrameOptions
    [CloudFrontResponseHeadersPolicyReferrerPolicy] $ReferrerPolicy
    [CloudFrontResponseHeadersPolicyStrictTransportSecurity] $StrictTransportSecurity
    [CloudFrontResponseHeadersPolicyXSSProtection] $XSSProtection

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ContentSecurityPolicy -Value {
            $this._contentSecurityPolicy
        } -SecondValue {
            param([ValidateType(([CloudFrontResponseHeadersPolicyContentSecurityPolicy], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._contentSecurityPolicy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ContentTypeOptions -Value {
            $this._contentTypeOptions
        } -SecondValue {
            param([ValidateType(([CloudFrontResponseHeadersPolicyContentTypeOptions], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._contentTypeOptions = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name FrameOptions -Value {
            $this._frameOptions
        } -SecondValue {
            param([ValidateType(([CloudFrontResponseHeadersPolicyFrameOptions], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._frameOptions = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ReferrerPolicy -Value {
            $this._referrerPolicy
        } -SecondValue {
            param([ValidateType(([CloudFrontResponseHeadersPolicyReferrerPolicy], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._referrerPolicy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StrictTransportSecurity -Value {
            $this._strictTransportSecurity
        } -SecondValue {
            param([ValidateType(([CloudFrontResponseHeadersPolicyStrictTransportSecurity], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._strictTransportSecurity = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name XSSProtection -Value {
            $this._xSSProtection
        } -SecondValue {
            param([ValidateType(([CloudFrontResponseHeadersPolicyXSSProtection], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._xSSProtection = $value
        }
    }

    CloudFrontResponseHeadersPolicySecurityHeadersConfig() : base() {}
    CloudFrontResponseHeadersPolicySecurityHeadersConfig([IDictionary] $props) : base($props) {}
    CloudFrontResponseHeadersPolicySecurityHeadersConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontFunctionFunctionMetadata'"

class CloudFrontFunctionFunctionMetadata : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontFunctionFunctionMetadata'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-function-functionmetadata.html'

    hidden [object] $_functionARN

    [string] $FunctionARN

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name FunctionARN -Value {
            $this._functionARN
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._functionARN = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    CloudFrontFunctionFunctionMetadata() : base() {}
    CloudFrontFunctionFunctionMetadata([IDictionary] $props) : base($props) {}
    CloudFrontFunctionFunctionMetadata([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontDistributionS3OriginConfig'"

class CloudFrontDistributionS3OriginConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontDistributionS3OriginConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-s3originconfig.html'

    hidden [object] $_originAccessIdentity

    [string] $OriginAccessIdentity

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name OriginAccessIdentity -Value {
            $this._originAccessIdentity
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._originAccessIdentity = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    CloudFrontDistributionS3OriginConfig() : base() {}
    CloudFrontDistributionS3OriginConfig([IDictionary] $props) : base($props) {}
    CloudFrontDistributionS3OriginConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontResponseHeadersPolicyCustomHeadersConfig'"

class CloudFrontResponseHeadersPolicyCustomHeadersConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontResponseHeadersPolicyCustomHeadersConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-responseheaderspolicy-customheadersconfig.html'

    hidden [object] $_items

    [CloudFrontResponseHeadersPolicyCustomHeader[]] $Items

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Items -Value {
            $this._items
        } -SecondValue {
            param([ValidateType(([CloudFrontResponseHeadersPolicyCustomHeader], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._items = $value
        }
    }

    CloudFrontResponseHeadersPolicyCustomHeadersConfig() : base() {}
    CloudFrontResponseHeadersPolicyCustomHeadersConfig([IDictionary] $props) : base($props) {}
    CloudFrontResponseHeadersPolicyCustomHeadersConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontDistributionLogging'"

class CloudFrontDistributionLogging : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontDistributionLogging'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-logging.html'

    hidden [object] $_includeCookies
    hidden [object] $_bucket
    hidden [object] $_prefix

    [bool] $IncludeCookies
    [string] $Bucket
    [string] $Prefix

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name IncludeCookies -Value {
            $this._includeCookies
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._includeCookies = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Bucket -Value {
            $this._bucket
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._bucket = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Prefix -Value {
            $this._prefix
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._prefix = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    CloudFrontDistributionLogging() : base() {}
    CloudFrontDistributionLogging([IDictionary] $props) : base($props) {}
    CloudFrontDistributionLogging([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontOriginRequestPolicyHeadersConfig'"

class CloudFrontOriginRequestPolicyHeadersConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontOriginRequestPolicyHeadersConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-originrequestpolicy-headersconfig.html'

    hidden [object] $_headerBehavior
    hidden [object] $_headers

    [string] $HeaderBehavior
    [string[]] $Headers

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name HeaderBehavior -Value {
            $this._headerBehavior
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._headerBehavior = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Headers -Value {
            $this._headers
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._headers = @($value)
        }
    }

    CloudFrontOriginRequestPolicyHeadersConfig() : base() {}
    CloudFrontOriginRequestPolicyHeadersConfig([IDictionary] $props) : base($props) {}
    CloudFrontOriginRequestPolicyHeadersConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontDistributionFunctionAssociation'"

class CloudFrontDistributionFunctionAssociation : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontDistributionFunctionAssociation'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-functionassociation.html'

    hidden [object] $_functionARN
    hidden [object] $_eventType

    [string] $FunctionARN
    [string] $EventType

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name FunctionARN -Value {
            $this._functionARN
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._functionARN = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EventType -Value {
            $this._eventType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._eventType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    CloudFrontDistributionFunctionAssociation() : base() {}
    CloudFrontDistributionFunctionAssociation([IDictionary] $props) : base($props) {}
    CloudFrontDistributionFunctionAssociation([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontDistributionCookies'"

class CloudFrontDistributionCookies : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontDistributionCookies'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-cookies.html'

    hidden [object] $_whitelistedNames
    hidden [object] $_forward

    [string[]] $WhitelistedNames
    [string] $Forward

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name WhitelistedNames -Value {
            $this._whitelistedNames
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._whitelistedNames = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Forward -Value {
            $this._forward
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._forward = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    CloudFrontDistributionCookies() : base() {}
    CloudFrontDistributionCookies([IDictionary] $props) : base($props) {}
    CloudFrontDistributionCookies([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontCachePolicyHeadersConfig'"

class CloudFrontCachePolicyHeadersConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontCachePolicyHeadersConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachepolicy-headersconfig.html'

    hidden [object] $_headerBehavior
    hidden [object] $_headers

    [string] $HeaderBehavior
    [string[]] $Headers

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name HeaderBehavior -Value {
            $this._headerBehavior
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._headerBehavior = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Headers -Value {
            $this._headers
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._headers = @($value)
        }
    }

    CloudFrontCachePolicyHeadersConfig() : base() {}
    CloudFrontCachePolicyHeadersConfig([IDictionary] $props) : base($props) {}
    CloudFrontCachePolicyHeadersConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontKeyGroupKeyGroupConfig'"

class CloudFrontKeyGroupKeyGroupConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontKeyGroupKeyGroupConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-keygroup-keygroupconfig.html'

    hidden [object] $_comment
    hidden [object] $_items
    hidden [object] $_name

    [string] $Comment
    [string[]] $Items
    [string] $Name

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Comment -Value {
            $this._comment
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._comment = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Items -Value {
            $this._items
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._items = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this._name
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._name = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    CloudFrontKeyGroupKeyGroupConfig() : base() {}
    CloudFrontKeyGroupKeyGroupConfig([IDictionary] $props) : base($props) {}
    CloudFrontKeyGroupKeyGroupConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontCachePolicyCachePolicyConfig'"

class CloudFrontCachePolicyCachePolicyConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontCachePolicyCachePolicyConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachepolicy-cachepolicyconfig.html'

    hidden [object] $_comment
    hidden [object] $_defaultTTL
    hidden [object] $_maxTTL
    hidden [object] $_minTTL
    hidden [object] $_name
    hidden [object] $_parametersInCacheKeyAndForwardedToOrigin

    [string] $Comment
    [double] $DefaultTTL
    [double] $MaxTTL
    [double] $MinTTL
    [string] $Name
    [CloudFrontCachePolicyParametersInCacheKeyAndForwardedToOrigin] $ParametersInCacheKeyAndForwardedToOrigin

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Comment -Value {
            $this._comment
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._comment = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DefaultTTL -Value {
            $this._defaultTTL
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._defaultTTL = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxTTL -Value {
            $this._maxTTL
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maxTTL = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MinTTL -Value {
            $this._minTTL
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._minTTL = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this._name
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._name = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ParametersInCacheKeyAndForwardedToOrigin -Value {
            $this._parametersInCacheKeyAndForwardedToOrigin
        } -SecondValue {
            param([ValidateType(([CloudFrontCachePolicyParametersInCacheKeyAndForwardedToOrigin], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._parametersInCacheKeyAndForwardedToOrigin = $value
        }
    }

    CloudFrontCachePolicyCachePolicyConfig() : base() {}
    CloudFrontCachePolicyCachePolicyConfig([IDictionary] $props) : base($props) {}
    CloudFrontCachePolicyCachePolicyConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontDistributionDistributionConfig'"

class CloudFrontDistributionDistributionConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontDistributionDistributionConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-distributionconfig.html'

    hidden [object] $_logging
    hidden [object] $_comment
    hidden [object] $_defaultRootObject
    hidden [object] $_origins
    hidden [object] $_viewerCertificate
    hidden [object] $_priceClass
    hidden [object] $_customOrigin
    hidden [object] $_s3Origin
    hidden [object] $_defaultCacheBehavior
    hidden [object] $_customErrorResponses
    hidden [object] $_originGroups
    hidden [object] $_enabled
    hidden [object] $_aliases
    hidden [object] $_iPV6Enabled
    hidden [object] $_cNAMEs
    hidden [object] $_webACLId
    hidden [object] $_httpVersion
    hidden [object] $_restrictions
    hidden [object] $_cacheBehaviors

    [CloudFrontDistributionLogging] $Logging
    [string] $Comment
    [string] $DefaultRootObject
    [CloudFrontDistributionOrigin[]] $Origins
    [CloudFrontDistributionViewerCertificate] $ViewerCertificate
    [string] $PriceClass
    [CloudFrontDistributionLegacyCustomOrigin] $CustomOrigin
    [CloudFrontDistributionLegacyS3Origin] $S3Origin
    [CloudFrontDistributionDefaultCacheBehavior] $DefaultCacheBehavior
    [CloudFrontDistributionCustomErrorResponse[]] $CustomErrorResponses
    [CloudFrontDistributionOriginGroups] $OriginGroups
    [bool] $Enabled
    [string[]] $Aliases
    [bool] $IPV6Enabled
    [string[]] $CNAMEs
    [string] $WebACLId
    [string] $HttpVersion
    [CloudFrontDistributionRestrictions] $Restrictions
    [CloudFrontDistributionCacheBehavior[]] $CacheBehaviors

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Logging -Value {
            $this._logging
        } -SecondValue {
            param([ValidateType(([CloudFrontDistributionLogging], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._logging = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Comment -Value {
            $this._comment
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._comment = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DefaultRootObject -Value {
            $this._defaultRootObject
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._defaultRootObject = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Origins -Value {
            $this._origins
        } -SecondValue {
            param([ValidateType(([CloudFrontDistributionOrigin], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._origins = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ViewerCertificate -Value {
            $this._viewerCertificate
        } -SecondValue {
            param([ValidateType(([CloudFrontDistributionViewerCertificate], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._viewerCertificate = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PriceClass -Value {
            $this._priceClass
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._priceClass = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CustomOrigin -Value {
            $this._customOrigin
        } -SecondValue {
            param([ValidateType(([CloudFrontDistributionLegacyCustomOrigin], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._customOrigin = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name S3Origin -Value {
            $this._s3Origin
        } -SecondValue {
            param([ValidateType(([CloudFrontDistributionLegacyS3Origin], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._s3Origin = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DefaultCacheBehavior -Value {
            $this._defaultCacheBehavior
        } -SecondValue {
            param([ValidateType(([CloudFrontDistributionDefaultCacheBehavior], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._defaultCacheBehavior = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CustomErrorResponses -Value {
            $this._customErrorResponses
        } -SecondValue {
            param([ValidateType(([CloudFrontDistributionCustomErrorResponse], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._customErrorResponses = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OriginGroups -Value {
            $this._originGroups
        } -SecondValue {
            param([ValidateType(([CloudFrontDistributionOriginGroups], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._originGroups = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Enabled -Value {
            $this._enabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._enabled = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Aliases -Value {
            $this._aliases
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._aliases = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IPV6Enabled -Value {
            $this._iPV6Enabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._iPV6Enabled = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CNAMEs -Value {
            $this._cNAMEs
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._cNAMEs = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name WebACLId -Value {
            $this._webACLId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._webACLId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HttpVersion -Value {
            $this._httpVersion
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._httpVersion = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Restrictions -Value {
            $this._restrictions
        } -SecondValue {
            param([ValidateType(([CloudFrontDistributionRestrictions], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._restrictions = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CacheBehaviors -Value {
            $this._cacheBehaviors
        } -SecondValue {
            param([ValidateType(([CloudFrontDistributionCacheBehavior], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._cacheBehaviors = $value
        }
    }

    CloudFrontDistributionDistributionConfig() : base() {}
    CloudFrontDistributionDistributionConfig([IDictionary] $props) : base($props) {}
    CloudFrontDistributionDistributionConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontDistributionOriginCustomHeader'"

class CloudFrontDistributionOriginCustomHeader : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontDistributionOriginCustomHeader'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-origincustomheader.html'

    hidden [object] $_headerValue
    hidden [object] $_headerName

    [string] $HeaderValue
    [string] $HeaderName

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name HeaderValue -Value {
            $this._headerValue
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._headerValue = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HeaderName -Value {
            $this._headerName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._headerName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    CloudFrontDistributionOriginCustomHeader() : base() {}
    CloudFrontDistributionOriginCustomHeader([IDictionary] $props) : base($props) {}
    CloudFrontDistributionOriginCustomHeader([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontDistributionOriginGroup'"

class CloudFrontDistributionOriginGroup : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontDistributionOriginGroup'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-origingroup.html'

    hidden [object] $_id
    hidden [object] $_failoverCriteria
    hidden [object] $_members

    [string] $Id
    [CloudFrontDistributionOriginGroupFailoverCriteria] $FailoverCriteria
    [CloudFrontDistributionOriginGroupMembers] $Members

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Id -Value {
            $this._id
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._id = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name FailoverCriteria -Value {
            $this._failoverCriteria
        } -SecondValue {
            param([ValidateType(([CloudFrontDistributionOriginGroupFailoverCriteria], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._failoverCriteria = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Members -Value {
            $this._members
        } -SecondValue {
            param([ValidateType(([CloudFrontDistributionOriginGroupMembers], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._members = $value
        }
    }

    CloudFrontDistributionOriginGroup() : base() {}
    CloudFrontDistributionOriginGroup([IDictionary] $props) : base($props) {}
    CloudFrontDistributionOriginGroup([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig'"

class CloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cloudfrontoriginaccessidentity-cloudfrontoriginaccessidentityconfig.html'

    hidden [object] $_comment

    [string] $Comment

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Comment -Value {
            $this._comment
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._comment = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    CloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig() : base() {}
    CloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig([IDictionary] $props) : base($props) {}
    CloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontDistributionOriginGroups'"

class CloudFrontDistributionOriginGroups : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontDistributionOriginGroups'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-origingroups.html'

    hidden [object] $_quantity
    hidden [object] $_items

    [int] $Quantity
    [CloudFrontDistributionOriginGroup[]] $Items

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Quantity -Value {
            $this._quantity
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._quantity = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Items -Value {
            $this._items
        } -SecondValue {
            param([ValidateType(([CloudFrontDistributionOriginGroup], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._items = $value
        }
    }

    CloudFrontDistributionOriginGroups() : base() {}
    CloudFrontDistributionOriginGroups([IDictionary] $props) : base($props) {}
    CloudFrontDistributionOriginGroups([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontResponseHeadersPolicyAccessControlExposeHeaders'"

class CloudFrontResponseHeadersPolicyAccessControlExposeHeaders : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontResponseHeadersPolicyAccessControlExposeHeaders'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-responseheaderspolicy-accesscontrolexposeheaders.html'

    hidden [object] $_items

    [string[]] $Items

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Items -Value {
            $this._items
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._items = @($value)
        }
    }

    CloudFrontResponseHeadersPolicyAccessControlExposeHeaders() : base() {}
    CloudFrontResponseHeadersPolicyAccessControlExposeHeaders([IDictionary] $props) : base($props) {}
    CloudFrontResponseHeadersPolicyAccessControlExposeHeaders([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontDistributionGeoRestriction'"

class CloudFrontDistributionGeoRestriction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontDistributionGeoRestriction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-georestriction.html'

    hidden [object] $_locations
    hidden [object] $_restrictionType

    [string[]] $Locations
    [string] $RestrictionType

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Locations -Value {
            $this._locations
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._locations = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RestrictionType -Value {
            $this._restrictionType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._restrictionType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    CloudFrontDistributionGeoRestriction() : base() {}
    CloudFrontDistributionGeoRestriction([IDictionary] $props) : base($props) {}
    CloudFrontDistributionGeoRestriction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontResponseHeadersPolicyCorsConfig'"

class CloudFrontResponseHeadersPolicyCorsConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontResponseHeadersPolicyCorsConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-responseheaderspolicy-corsconfig.html'

    hidden [object] $_accessControlAllowCredentials
    hidden [object] $_accessControlAllowHeaders
    hidden [object] $_accessControlAllowMethods
    hidden [object] $_accessControlAllowOrigins
    hidden [object] $_accessControlExposeHeaders
    hidden [object] $_accessControlMaxAgeSec
    hidden [object] $_originOverride

    [bool] $AccessControlAllowCredentials
    [CloudFrontResponseHeadersPolicyAccessControlAllowHeaders] $AccessControlAllowHeaders
    [CloudFrontResponseHeadersPolicyAccessControlAllowMethods] $AccessControlAllowMethods
    [CloudFrontResponseHeadersPolicyAccessControlAllowOrigins] $AccessControlAllowOrigins
    [CloudFrontResponseHeadersPolicyAccessControlExposeHeaders] $AccessControlExposeHeaders
    [int] $AccessControlMaxAgeSec
    [bool] $OriginOverride

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name AccessControlAllowCredentials -Value {
            $this._accessControlAllowCredentials
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._accessControlAllowCredentials = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AccessControlAllowHeaders -Value {
            $this._accessControlAllowHeaders
        } -SecondValue {
            param([ValidateType(([CloudFrontResponseHeadersPolicyAccessControlAllowHeaders], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._accessControlAllowHeaders = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AccessControlAllowMethods -Value {
            $this._accessControlAllowMethods
        } -SecondValue {
            param([ValidateType(([CloudFrontResponseHeadersPolicyAccessControlAllowMethods], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._accessControlAllowMethods = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AccessControlAllowOrigins -Value {
            $this._accessControlAllowOrigins
        } -SecondValue {
            param([ValidateType(([CloudFrontResponseHeadersPolicyAccessControlAllowOrigins], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._accessControlAllowOrigins = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AccessControlExposeHeaders -Value {
            $this._accessControlExposeHeaders
        } -SecondValue {
            param([ValidateType(([CloudFrontResponseHeadersPolicyAccessControlExposeHeaders], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._accessControlExposeHeaders = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AccessControlMaxAgeSec -Value {
            $this._accessControlMaxAgeSec
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._accessControlMaxAgeSec = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OriginOverride -Value {
            $this._originOverride
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._originOverride = $value
        }
    }

    CloudFrontResponseHeadersPolicyCorsConfig() : base() {}
    CloudFrontResponseHeadersPolicyCorsConfig([IDictionary] $props) : base($props) {}
    CloudFrontResponseHeadersPolicyCorsConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontResponseHeadersPolicyAccessControlAllowMethods'"

class CloudFrontResponseHeadersPolicyAccessControlAllowMethods : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontResponseHeadersPolicyAccessControlAllowMethods'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-responseheaderspolicy-accesscontrolallowmethods.html'

    hidden [object] $_items

    [string[]] $Items

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Items -Value {
            $this._items
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._items = @($value)
        }
    }

    CloudFrontResponseHeadersPolicyAccessControlAllowMethods() : base() {}
    CloudFrontResponseHeadersPolicyAccessControlAllowMethods([IDictionary] $props) : base($props) {}
    CloudFrontResponseHeadersPolicyAccessControlAllowMethods([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontStreamingDistributionLogging'"

class CloudFrontStreamingDistributionLogging : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontStreamingDistributionLogging'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-streamingdistribution-logging.html'

    hidden [object] $_bucket
    hidden [object] $_enabled
    hidden [object] $_prefix

    [string] $Bucket
    [bool] $Enabled
    [string] $Prefix

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Bucket -Value {
            $this._bucket
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._bucket = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Enabled -Value {
            $this._enabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._enabled = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Prefix -Value {
            $this._prefix
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._prefix = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    CloudFrontStreamingDistributionLogging() : base() {}
    CloudFrontStreamingDistributionLogging([IDictionary] $props) : base($props) {}
    CloudFrontStreamingDistributionLogging([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontResponseHeadersPolicyReferrerPolicy'"

class CloudFrontResponseHeadersPolicyReferrerPolicy : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontResponseHeadersPolicyReferrerPolicy'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-responseheaderspolicy-referrerpolicy.html'

    hidden [object] $_override
    hidden [object] $_referrerPolicy

    [bool] $Override
    [string] $ReferrerPolicy

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Override -Value {
            $this._override
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._override = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ReferrerPolicy -Value {
            $this._referrerPolicy
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._referrerPolicy = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    CloudFrontResponseHeadersPolicyReferrerPolicy() : base() {}
    CloudFrontResponseHeadersPolicyReferrerPolicy([IDictionary] $props) : base($props) {}
    CloudFrontResponseHeadersPolicyReferrerPolicy([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontDistributionLambdaFunctionAssociation'"

class CloudFrontDistributionLambdaFunctionAssociation : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontDistributionLambdaFunctionAssociation'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-lambdafunctionassociation.html'

    hidden [object] $_includeBody
    hidden [object] $_eventType
    hidden [object] $_lambdaFunctionARN

    [bool] $IncludeBody
    [string] $EventType
    [string] $LambdaFunctionARN

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name IncludeBody -Value {
            $this._includeBody
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._includeBody = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EventType -Value {
            $this._eventType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._eventType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LambdaFunctionARN -Value {
            $this._lambdaFunctionARN
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._lambdaFunctionARN = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    CloudFrontDistributionLambdaFunctionAssociation() : base() {}
    CloudFrontDistributionLambdaFunctionAssociation([IDictionary] $props) : base($props) {}
    CloudFrontDistributionLambdaFunctionAssociation([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontOriginRequestPolicyCookiesConfig'"

class CloudFrontOriginRequestPolicyCookiesConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontOriginRequestPolicyCookiesConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-originrequestpolicy-cookiesconfig.html'

    hidden [object] $_cookieBehavior
    hidden [object] $_cookies

    [string] $CookieBehavior
    [string[]] $Cookies

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name CookieBehavior -Value {
            $this._cookieBehavior
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cookieBehavior = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Cookies -Value {
            $this._cookies
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._cookies = @($value)
        }
    }

    CloudFrontOriginRequestPolicyCookiesConfig() : base() {}
    CloudFrontOriginRequestPolicyCookiesConfig([IDictionary] $props) : base($props) {}
    CloudFrontOriginRequestPolicyCookiesConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontDistributionLegacyCustomOrigin'"

class CloudFrontDistributionLegacyCustomOrigin : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontDistributionLegacyCustomOrigin'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-legacycustomorigin.html'

    hidden [object] $_hTTPSPort
    hidden [object] $_originSSLProtocols
    hidden [object] $_dNSName
    hidden [object] $_hTTPPort
    hidden [object] $_originProtocolPolicy

    [int] $HTTPSPort
    [string[]] $OriginSSLProtocols
    [string] $DNSName
    [int] $HTTPPort
    [string] $OriginProtocolPolicy

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name HTTPSPort -Value {
            $this._hTTPSPort
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._hTTPSPort = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OriginSSLProtocols -Value {
            $this._originSSLProtocols
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._originSSLProtocols = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DNSName -Value {
            $this._dNSName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._dNSName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HTTPPort -Value {
            $this._hTTPPort
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._hTTPPort = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OriginProtocolPolicy -Value {
            $this._originProtocolPolicy
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._originProtocolPolicy = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    CloudFrontDistributionLegacyCustomOrigin() : base() {}
    CloudFrontDistributionLegacyCustomOrigin([IDictionary] $props) : base($props) {}
    CloudFrontDistributionLegacyCustomOrigin([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontResponseHeadersPolicyFrameOptions'"

class CloudFrontResponseHeadersPolicyFrameOptions : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontResponseHeadersPolicyFrameOptions'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-responseheaderspolicy-frameoptions.html'

    hidden [object] $_frameOption
    hidden [object] $_override

    [string] $FrameOption
    [bool] $Override

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name FrameOption -Value {
            $this._frameOption
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._frameOption = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Override -Value {
            $this._override
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._override = $value
        }
    }

    CloudFrontResponseHeadersPolicyFrameOptions() : base() {}
    CloudFrontResponseHeadersPolicyFrameOptions([IDictionary] $props) : base($props) {}
    CloudFrontResponseHeadersPolicyFrameOptions([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontDistributionOrigin'"

class CloudFrontDistributionOrigin : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontDistributionOrigin'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-origin.html'

    hidden [object] $_connectionTimeout
    hidden [object] $_connectionAttempts
    hidden [object] $_originCustomHeaders
    hidden [object] $_domainName
    hidden [object] $_originShield
    hidden [object] $_s3OriginConfig
    hidden [object] $_originPath
    hidden [object] $_id
    hidden [object] $_customOriginConfig

    [int] $ConnectionTimeout
    [int] $ConnectionAttempts
    [CloudFrontDistributionOriginCustomHeader[]] $OriginCustomHeaders
    [string] $DomainName
    [CloudFrontDistributionOriginShield] $OriginShield
    [CloudFrontDistributionS3OriginConfig] $S3OriginConfig
    [string] $OriginPath
    [string] $Id
    [CloudFrontDistributionCustomOriginConfig] $CustomOriginConfig

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ConnectionTimeout -Value {
            $this._connectionTimeout
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._connectionTimeout = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ConnectionAttempts -Value {
            $this._connectionAttempts
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._connectionAttempts = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OriginCustomHeaders -Value {
            $this._originCustomHeaders
        } -SecondValue {
            param([ValidateType(([CloudFrontDistributionOriginCustomHeader], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._originCustomHeaders = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DomainName -Value {
            $this._domainName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._domainName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OriginShield -Value {
            $this._originShield
        } -SecondValue {
            param([ValidateType(([CloudFrontDistributionOriginShield], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._originShield = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name S3OriginConfig -Value {
            $this._s3OriginConfig
        } -SecondValue {
            param([ValidateType(([CloudFrontDistributionS3OriginConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._s3OriginConfig = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OriginPath -Value {
            $this._originPath
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._originPath = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Id -Value {
            $this._id
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._id = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CustomOriginConfig -Value {
            $this._customOriginConfig
        } -SecondValue {
            param([ValidateType(([CloudFrontDistributionCustomOriginConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._customOriginConfig = $value
        }
    }

    CloudFrontDistributionOrigin() : base() {}
    CloudFrontDistributionOrigin([IDictionary] $props) : base($props) {}
    CloudFrontDistributionOrigin([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontResponseHeadersPolicyContentSecurityPolicy'"

class CloudFrontResponseHeadersPolicyContentSecurityPolicy : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontResponseHeadersPolicyContentSecurityPolicy'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-responseheaderspolicy-contentsecuritypolicy.html'

    hidden [object] $_contentSecurityPolicy
    hidden [object] $_override

    [string] $ContentSecurityPolicy
    [bool] $Override

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ContentSecurityPolicy -Value {
            $this._contentSecurityPolicy
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._contentSecurityPolicy = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Override -Value {
            $this._override
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._override = $value
        }
    }

    CloudFrontResponseHeadersPolicyContentSecurityPolicy() : base() {}
    CloudFrontResponseHeadersPolicyContentSecurityPolicy([IDictionary] $props) : base($props) {}
    CloudFrontResponseHeadersPolicyContentSecurityPolicy([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'CloudFrontPublicKeyPublicKeyConfig'"

class CloudFrontPublicKeyPublicKeyConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontPublicKeyPublicKeyConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-publickey-publickeyconfig.html'

    hidden [object] $_callerReference
    hidden [object] $_comment
    hidden [object] $_encodedKey
    hidden [object] $_name

    [string] $CallerReference
    [string] $Comment
    [string] $EncodedKey
    [string] $Name

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name CallerReference -Value {
            $this._callerReference
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._callerReference = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Comment -Value {
            $this._comment
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._comment = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EncodedKey -Value {
            $this._encodedKey
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._encodedKey = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value