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 '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 '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 '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 '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] $_defaultCacheBehavior
    hidden [object] $_customErrorResponses
    hidden [object] $_originGroups
    hidden [object] $_enabled
    hidden [object] $_aliases
    hidden [object] $_iPV6Enabled
    hidden [object] $_webACLId
    hidden [object] $_httpVersion
    hidden [object] $_restrictions
    hidden [object] $_cacheBehaviors

    [CloudFrontDistributionLogging] $Logging
    [string] $Comment
    [string] $DefaultRootObject
    [CloudFrontDistributionOrigin[]] $Origins
    [CloudFrontDistributionViewerCertificate] $ViewerCertificate
    [string] $PriceClass
    [CloudFrontDistributionDefaultCacheBehavior] $DefaultCacheBehavior
    [CloudFrontDistributionCustomErrorResponse[]] $CustomErrorResponses
    [CloudFrontDistributionOriginGroups] $OriginGroups
    [bool] $Enabled
    [string[]] $Aliases
    [bool] $IPV6Enabled
    [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 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 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 '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 '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 '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 '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 '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 '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 '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 '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 '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 '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] $_lambdaFunctionAssociations
    hidden [object] $_targetOriginId
    hidden [object] $_viewerProtocolPolicy
    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
    [CloudFrontDistributionLambdaFunctionAssociation[]] $LambdaFunctionAssociations
    [string] $TargetOriginId
    [string] $ViewerProtocolPolicy
    [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 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 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] $_lambdaFunctionAssociations
    hidden [object] $_targetOriginId
    hidden [object] $_viewerProtocolPolicy
    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
    [CloudFrontDistributionLambdaFunctionAssociation[]] $LambdaFunctionAssociations
    [string] $TargetOriginId
    [string] $ViewerProtocolPolicy
    [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 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 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 '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] $_originCustomHeaders
    hidden [object] $_connectionAttempts
    hidden [object] $_domainName
    hidden [object] $_originShield
    hidden [object] $_s3OriginConfig
    hidden [object] $_originPath
    hidden [object] $_id
    hidden [object] $_customOriginConfig

    [int] $ConnectionTimeout
    [CloudFrontDistributionOriginCustomHeader[]] $OriginCustomHeaders
    [int] $ConnectionAttempts
    [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 OriginCustomHeaders -Value {
            $this._originCustomHeaders
        } -SecondValue {
            param([ValidateType(([CloudFrontDistributionOriginCustomHeader], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._originCustomHeaders = $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 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 '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 {
            $this._name
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._name = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'CloudFrontDistributionStatusCodes'"

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

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

    [int] $Quantity
    [int[]] $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(([int], [string], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._items = if ($cast = @($value) -as [int]) {
                $cast
            }
            else {
                @($value)
            }
        }
    }

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

Write-Verbose "Importing class 'CloudFrontOriginRequestPolicyQueryStringsConfig'"

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

    hidden [object] $_queryStringBehavior
    hidden [object] $_queryStrings

    [string] $QueryStringBehavior
    [string[]] $QueryStrings

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

    CloudFrontOriginRequestPolicyQueryStringsConfig() : base() {}
    CloudFrontOriginRequestPolicyQueryStringsConfig([IDictionary] $props) : base($props) {}
    CloudFrontOriginRequestPolicyQueryStringsConfig([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 'CloudFrontDistributionForwardedValues'"

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

    hidden [object] $_cookies
    hidden [object] $_headers
    hidden [object] $_queryString
    hidden [object] $_queryStringCacheKeys

    [CloudFrontDistributionCookies] $Cookies
    [string[]] $Headers
    [bool] $QueryString
    [string[]] $QueryStringCacheKeys

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Cookies -Value {
            $this._cookies
        } -SecondValue {
            param([ValidateType(([CloudFrontDistributionCookies], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cookies = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Headers -Value {
            $this._headers
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._headers = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name QueryString -Value {
            $this._queryString
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._queryString = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name QueryStringCacheKeys -Value {
            $this._queryStringCacheKeys
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._queryStringCacheKeys = @($value)
        }
    }

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

Write-Verbose "Importing class 'CloudFrontDistributionOriginShield'"

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

    hidden [object] $_originShieldRegion
    hidden [object] $_enabled

    [string] $OriginShieldRegion
    [bool] $Enabled

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name OriginShieldRegion -Value {
            $this._originShieldRegion
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._originShieldRegion = 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
        }
    }

    CloudFrontDistributionOriginShield() : base() {}
    CloudFrontDistributionOriginShield([IDictionary] $props) : base($props) {}
    CloudFrontDistributionOriginShield([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 'CloudFrontRealtimeLogConfigKinesisStreamConfig'"

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

    hidden [object] $_roleArn
    hidden [object] $_streamArn

    [string] $RoleArn
    [string] $StreamArn

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

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

Write-Verbose "Importing class 'CloudFrontCachePolicyQueryStringsConfig'"

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

    hidden [object] $_queryStringBehavior
    hidden [object] $_queryStrings

    [string] $QueryStringBehavior
    [string[]] $QueryStrings

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

    CloudFrontCachePolicyQueryStringsConfig() : base() {}
    CloudFrontCachePolicyQueryStringsConfig([IDictionary] $props) : base($props) {}
    CloudFrontCachePolicyQueryStringsConfig([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 'CloudFrontCachePolicyCookiesConfig'"

class CloudFrontCachePolicyCookiesConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSCloudFrontCachePolicyCookiesConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachepolicy-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)
        }
    }

    CloudFrontCachePolicyCookiesConfig() : base() {}
    CloudFrontCachePolicyCookiesConfig([IDictionary] $props) : base($props) {}
    CloudFrontCachePolicyCookiesConfig([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] $_dNSName
    hidden [object] $_originAccessIdentity

    [string] $DNSName
    [string] $OriginAccessIdentity

    hidden [void] _addAccessors() {
        $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 OriginAccessIdentity -Value {
            $this._originAccessIdentity
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._originAccessIdentity = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    CloudFrontDistributionLegacyS3Origin() : base() {}
    CloudFrontDistributionLegacyS3Origin([IDictionary] $props) : base($props) {}
    CloudFrontDistributionLegacyS3Origin([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] $_dNSName
    hidden [object] $_hTTPPort
    hidden [object] $_hTTPSPort
    hidden [object] $_originProtocolPolicy
    hidden [object] $_originSSLProtocols

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

    hidden [void] _addAccessors() {
        $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 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 OriginProtocolPolicy -Value {
            $this._originProtocolPolicy
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._originProtocolPolicy = if ($value -is [int]) {
                $value.ToString()
            }
            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)
        }
    }

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

Write-Verbose "Importing class 'CloudFrontKeyGroup'"

class CloudFrontKeyGroup : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSCloudFrontKeyGroup'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-keygroup.html'

    hidden [string[]] $_attributes = @('Id','LastModifiedTime')
    hidden [object] $_condition

    [string] $Type = 'AWS::CloudFront::KeyGroup'
    [CloudFrontKeyGroupKeyGroupConfig] $KeyGroupConfig
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name KeyGroupConfig -Value {
            $this.Properties['KeyGroupConfig']
        } -SecondValue {
            param([ValidateType(([CloudFrontKeyGroupKeyGroupConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['KeyGroupConfig'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'CloudFrontStreamingDistribution'"

class CloudFrontStreamingDistribution : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSCloudFrontStreamingDistribution'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-streamingdistribution.html'

    hidden [string[]] $_attributes = @('DomainName')
    hidden [object] $_condition

    [string] $Type = 'AWS::CloudFront::StreamingDistribution'
    [CloudFrontStreamingDistributionStreamingDistributionConfig] $StreamingDistributionConfig
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name StreamingDistributionConfig -Value {
            $this.Properties['StreamingDistributionConfig']
        } -SecondValue {
            param([ValidateType(([CloudFrontStreamingDistributionStreamingDistributionConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['StreamingDistributionConfig'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this.Properties['Tags'] = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'CloudFrontCachePolicy'"

class CloudFrontCachePolicy : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSCloudFrontCachePolicy'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-cachepolicy.html'

    hidden [string[]] $_attributes = @('Id','LastModifiedTime')
    hidden [object] $_condition

    [string] $Type = 'AWS::CloudFront::CachePolicy'
    [CloudFrontCachePolicyCachePolicyConfig] $CachePolicyConfig
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name CachePolicyConfig -Value {
            $this.Properties['CachePolicyConfig']
        } -SecondValue {
            param([ValidateType(([CloudFrontCachePolicyCachePolicyConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['CachePolicyConfig'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'CloudFrontDistribution'"

class CloudFrontDistribution : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSCloudFrontDistribution'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-distribution.html'

    hidden [string[]] $_attributes = @('DomainName')
    hidden [object] $_condition

    [string] $Type = 'AWS::CloudFront::Distribution'
    [CloudFrontDistributionDistributionConfig] $DistributionConfig
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name DistributionConfig -Value {
            $this.Properties['DistributionConfig']
        } -SecondValue {
            param([ValidateType(([CloudFrontDistributionDistributionConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DistributionConfig'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this.Properties['Tags'] = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'CloudFrontCloudFrontOriginAccessIdentity'"

class CloudFrontCloudFrontOriginAccessIdentity : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSCloudFrontCloudFrontOriginAccessIdentity'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-cloudfrontoriginaccessidentity.html'

    hidden [string[]] $_attributes = @('S3CanonicalUserId')
    hidden [object] $_condition

    [string] $Type = 'AWS::CloudFront::CloudFrontOriginAccessIdentity'
    [CloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig] $CloudFrontOriginAccessIdentityConfig
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name CloudFrontOriginAccessIdentityConfig -Value {
            $this.Properties['CloudFrontOriginAccessIdentityConfig']
        } -SecondValue {
            param([ValidateType(([CloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['CloudFrontOriginAccessIdentityConfig'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'CloudFrontRealtimeLogConfig'"

class CloudFrontRealtimeLogConfig : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSCloudFrontRealtimeLogConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-realtimelogconfig.html'

    hidden [string[]] $_attributes = @('Arn')
    hidden [object] $_condition

    [string] $Type = 'AWS::CloudFront::RealtimeLogConfig'
    [CloudFrontRealtimeLogConfigEndPoint[]] $EndPoints
    [string[]] $Fields
    [string] $Name
    [double] $SamplingRate
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name EndPoints -Value {
            $this.Properties['EndPoints']
        } -SecondValue {
            param([ValidateType(([CloudFrontRealtimeLogConfigEndPoint], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['EndPoints'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Fields -Value {
            $this.Properties['Fields']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['Fields'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SamplingRate -Value {
            $this.Properties['SamplingRate']
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SamplingRate'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'CloudFrontOriginRequestPolicy'"

class CloudFrontOriginRequestPolicy : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSCloudFrontOriginRequestPolicy'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-originrequestpolicy.html'

    hidden [string[]] $_attributes = @('Id','LastModifiedTime')
    hidden [object] $_condition

    [string] $Type = 'AWS::CloudFront::OriginRequestPolicy'
    [CloudFrontOriginRequestPolicyOriginRequestPolicyConfig] $OriginRequestPolicyConfig
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name OriginRequestPolicyConfig -Value {
            $this.Properties['OriginRequestPolicyConfig']
        } -SecondValue {
            param([ValidateType(([CloudFrontOriginRequestPolicyOriginRequestPolicyConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['OriginRequestPolicyConfig'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'CloudFrontPublicKey'"

class CloudFrontPublicKey : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSCloudFrontPublicKey'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-publickey.html'

    hidden [string[]] $_attributes = @('CreatedTime','Id')
    hidden [object] $_condition

    [string] $Type = 'AWS::CloudFront::PublicKey'
    [CloudFrontPublicKeyPublicKeyConfig] $PublicKeyConfig
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name PublicKeyConfig -Value {
            $this.Properties['PublicKeyConfig']
        } -SecondValue {
            param([ValidateType(([CloudFrontPublicKeyPublicKeyConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['PublicKeyConfig'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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