VaporShell.AutoScaling.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 'AutoScalingLaunchConfigurationBlockDeviceMapping'"

class AutoScalingLaunchConfigurationBlockDeviceMapping : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAutoScalingLaunchConfigurationBlockDeviceMapping'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig-blockdev-mapping.html'

    hidden [object] $_deviceName
    hidden [object] $_ebs
    hidden [object] $_noDevice
    hidden [object] $_virtualName

    [string] $DeviceName
    [AutoScalingLaunchConfigurationBlockDevice] $Ebs
    [bool] $NoDevice
    [string] $VirtualName

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name DeviceName -Value {
            $this._deviceName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._deviceName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Ebs -Value {
            $this._ebs
        } -SecondValue {
            param([ValidateType(([AutoScalingLaunchConfigurationBlockDevice], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._ebs = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name NoDevice -Value {
            $this._noDevice
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._noDevice = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VirtualName -Value {
            $this._virtualName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._virtualName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'AutoScalingAutoScalingGroupLaunchTemplateOverrides'"

class AutoScalingAutoScalingGroupLaunchTemplateOverrides : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAutoScalingAutoScalingGroupLaunchTemplateOverrides'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-as-mixedinstancespolicy-launchtemplateoverrides.html'

    hidden [object] $_instanceType
    hidden [object] $_launchTemplateSpecification
    hidden [object] $_weightedCapacity

    [string] $InstanceType
    [AutoScalingAutoScalingGroupLaunchTemplateSpecification] $LaunchTemplateSpecification
    [string] $WeightedCapacity

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

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

Write-Verbose "Importing class 'AutoScalingScalingPolicyPredictiveScalingConfiguration'"

class AutoScalingScalingPolicyPredictiveScalingConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAutoScalingScalingPolicyPredictiveScalingConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predictivescalingconfiguration.html'

    hidden [object] $_maxCapacityBreachBehavior
    hidden [object] $_maxCapacityBuffer
    hidden [object] $_metricSpecifications
    hidden [object] $_mode
    hidden [object] $_schedulingBufferTime

    [string] $MaxCapacityBreachBehavior
    [int] $MaxCapacityBuffer
    [AutoScalingScalingPolicyPredictiveScalingMetricSpecification[]] $MetricSpecifications
    [string] $Mode
    [int] $SchedulingBufferTime

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxCapacityBreachBehavior -Value {
            $this._maxCapacityBreachBehavior
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maxCapacityBreachBehavior = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxCapacityBuffer -Value {
            $this._maxCapacityBuffer
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maxCapacityBuffer = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MetricSpecifications -Value {
            $this._metricSpecifications
        } -SecondValue {
            param([ValidateType(([AutoScalingScalingPolicyPredictiveScalingMetricSpecification], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._metricSpecifications = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Mode -Value {
            $this._mode
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._mode = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SchedulingBufferTime -Value {
            $this._schedulingBufferTime
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._schedulingBufferTime = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'AutoScalingScalingPolicyCustomizedMetricSpecification'"

class AutoScalingScalingPolicyCustomizedMetricSpecification : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAutoScalingScalingPolicyCustomizedMetricSpecification'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-customizedmetricspecification.html'

    hidden [object] $_dimensions
    hidden [object] $_metricName
    hidden [object] $_namespace
    hidden [object] $_statistic
    hidden [object] $_unit

    [AutoScalingScalingPolicyMetricDimension[]] $Dimensions
    [string] $MetricName
    [string] $Namespace
    [string] $Statistic
    [string] $Unit

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Dimensions -Value {
            $this._dimensions
        } -SecondValue {
            param([ValidateType(([AutoScalingScalingPolicyMetricDimension], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._dimensions = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MetricName -Value {
            $this._metricName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._metricName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Namespace -Value {
            $this._namespace
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._namespace = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Statistic -Value {
            $this._statistic
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._statistic = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Unit -Value {
            $this._unit
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._unit = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'AutoScalingLaunchConfigurationMetadataOptions'"

class AutoScalingLaunchConfigurationMetadataOptions : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAutoScalingLaunchConfigurationMetadataOptions'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-launchconfig-metadataoptions.html'

    hidden [object] $_httpEndpoint
    hidden [object] $_httpPutResponseHopLimit
    hidden [object] $_httpTokens

    [string] $HttpEndpoint
    [int] $HttpPutResponseHopLimit
    [string] $HttpTokens

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name HttpEndpoint -Value {
            $this._httpEndpoint
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._httpEndpoint = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HttpPutResponseHopLimit -Value {
            $this._httpPutResponseHopLimit
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._httpPutResponseHopLimit = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HttpTokens -Value {
            $this._httpTokens
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._httpTokens = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'AutoScalingScalingPolicyPredictiveScalingPredefinedMetricPair'"

class AutoScalingScalingPolicyPredictiveScalingPredefinedMetricPair : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAutoScalingScalingPolicyPredictiveScalingPredefinedMetricPair'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predictivescalingpredefinedmetricpair.html'

    hidden [object] $_predefinedMetricType
    hidden [object] $_resourceLabel

    [string] $PredefinedMetricType
    [string] $ResourceLabel

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

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

Write-Verbose "Importing class 'AutoScalingScalingPolicyMetricDimension'"

class AutoScalingScalingPolicyMetricDimension : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAutoScalingScalingPolicyMetricDimension'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-metricdimension.html'

    hidden [object] $_name
    hidden [object] $_value

    [string] $Name
    [string] $Value

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

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

Write-Verbose "Importing class 'AutoScalingScalingPolicyTargetTrackingConfiguration'"

class AutoScalingScalingPolicyTargetTrackingConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAutoScalingScalingPolicyTargetTrackingConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-targettrackingconfiguration.html'

    hidden [object] $_customizedMetricSpecification
    hidden [object] $_disableScaleIn
    hidden [object] $_predefinedMetricSpecification
    hidden [object] $_targetValue

    [AutoScalingScalingPolicyCustomizedMetricSpecification] $CustomizedMetricSpecification
    [bool] $DisableScaleIn
    [AutoScalingScalingPolicyPredefinedMetricSpecification] $PredefinedMetricSpecification
    [double] $TargetValue

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name CustomizedMetricSpecification -Value {
            $this._customizedMetricSpecification
        } -SecondValue {
            param([ValidateType(([AutoScalingScalingPolicyCustomizedMetricSpecification], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._customizedMetricSpecification = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DisableScaleIn -Value {
            $this._disableScaleIn
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._disableScaleIn = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PredefinedMetricSpecification -Value {
            $this._predefinedMetricSpecification
        } -SecondValue {
            param([ValidateType(([AutoScalingScalingPolicyPredefinedMetricSpecification], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._predefinedMetricSpecification = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetValue -Value {
            $this._targetValue
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._targetValue = $value
        }
    }

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

Write-Verbose "Importing class 'AutoScalingAutoScalingGroupMetricsCollection'"

class AutoScalingAutoScalingGroupMetricsCollection : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAutoScalingAutoScalingGroupMetricsCollection'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-metricscollection.html'

    hidden [object] $_granularity
    hidden [object] $_metrics

    [string] $Granularity
    [string[]] $Metrics

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

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

Write-Verbose "Importing class 'AutoScalingAutoScalingGroupInstancesDistribution'"

class AutoScalingAutoScalingGroupInstancesDistribution : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAutoScalingAutoScalingGroupInstancesDistribution'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-as-mixedinstancespolicy-instancesdistribution.html'

    hidden [object] $_onDemandAllocationStrategy
    hidden [object] $_onDemandBaseCapacity
    hidden [object] $_onDemandPercentageAboveBaseCapacity
    hidden [object] $_spotAllocationStrategy
    hidden [object] $_spotInstancePools
    hidden [object] $_spotMaxPrice

    [string] $OnDemandAllocationStrategy
    [int] $OnDemandBaseCapacity
    [int] $OnDemandPercentageAboveBaseCapacity
    [string] $SpotAllocationStrategy
    [int] $SpotInstancePools
    [string] $SpotMaxPrice

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name OnDemandAllocationStrategy -Value {
            $this._onDemandAllocationStrategy
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._onDemandAllocationStrategy = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OnDemandBaseCapacity -Value {
            $this._onDemandBaseCapacity
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._onDemandBaseCapacity = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OnDemandPercentageAboveBaseCapacity -Value {
            $this._onDemandPercentageAboveBaseCapacity
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._onDemandPercentageAboveBaseCapacity = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SpotAllocationStrategy -Value {
            $this._spotAllocationStrategy
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._spotAllocationStrategy = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SpotInstancePools -Value {
            $this._spotInstancePools
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._spotInstancePools = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SpotMaxPrice -Value {
            $this._spotMaxPrice
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._spotMaxPrice = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'AutoScalingAutoScalingGroupLifecycleHookSpecification'"

class AutoScalingAutoScalingGroupLifecycleHookSpecification : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAutoScalingAutoScalingGroupLifecycleHookSpecification'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-lifecyclehookspecification.html'

    hidden [object] $_defaultResult
    hidden [object] $_heartbeatTimeout
    hidden [object] $_lifecycleHookName
    hidden [object] $_lifecycleTransition
    hidden [object] $_notificationMetadata
    hidden [object] $_notificationTargetARN
    hidden [object] $_roleARN

    [string] $DefaultResult
    [int] $HeartbeatTimeout
    [string] $LifecycleHookName
    [string] $LifecycleTransition
    [string] $NotificationMetadata
    [string] $NotificationTargetARN
    [string] $RoleARN

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name DefaultResult -Value {
            $this._defaultResult
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._defaultResult = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HeartbeatTimeout -Value {
            $this._heartbeatTimeout
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._heartbeatTimeout = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LifecycleHookName -Value {
            $this._lifecycleHookName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._lifecycleHookName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LifecycleTransition -Value {
            $this._lifecycleTransition
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._lifecycleTransition = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name NotificationMetadata -Value {
            $this._notificationMetadata
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._notificationMetadata = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name NotificationTargetARN -Value {
            $this._notificationTargetARN
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._notificationTargetARN = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $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
            }
        }
    }

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

Write-Verbose "Importing class 'AutoScalingAutoScalingGroupLaunchTemplateSpecification'"

class AutoScalingAutoScalingGroupLaunchTemplateSpecification : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAutoScalingAutoScalingGroupLaunchTemplateSpecification'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplatespecification.html'

    hidden [object] $_launchTemplateId
    hidden [object] $_launchTemplateName
    hidden [object] $_version

    [string] $LaunchTemplateId
    [string] $LaunchTemplateName
    [string] $Version

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

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

Write-Verbose "Importing class 'AutoScalingScalingPolicyStepAdjustment'"

class AutoScalingScalingPolicyStepAdjustment : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAutoScalingScalingPolicyStepAdjustment'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-stepadjustments.html'

    hidden [object] $_metricIntervalLowerBound
    hidden [object] $_metricIntervalUpperBound
    hidden [object] $_scalingAdjustment

    [double] $MetricIntervalLowerBound
    [double] $MetricIntervalUpperBound
    [int] $ScalingAdjustment

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name MetricIntervalLowerBound -Value {
            $this._metricIntervalLowerBound
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._metricIntervalLowerBound = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MetricIntervalUpperBound -Value {
            $this._metricIntervalUpperBound
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._metricIntervalUpperBound = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ScalingAdjustment -Value {
            $this._scalingAdjustment
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._scalingAdjustment = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'AutoScalingAutoScalingGroupMixedInstancesPolicy'"

class AutoScalingAutoScalingGroupMixedInstancesPolicy : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAutoScalingAutoScalingGroupMixedInstancesPolicy'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-as-group-mixedinstancespolicy.html'

    hidden [object] $_instancesDistribution
    hidden [object] $_launchTemplate

    [AutoScalingAutoScalingGroupInstancesDistribution] $InstancesDistribution
    [AutoScalingAutoScalingGroupLaunchTemplate] $LaunchTemplate

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name InstancesDistribution -Value {
            $this._instancesDistribution
        } -SecondValue {
            param([ValidateType(([AutoScalingAutoScalingGroupInstancesDistribution], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._instancesDistribution = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LaunchTemplate -Value {
            $this._launchTemplate
        } -SecondValue {
            param([ValidateType(([AutoScalingAutoScalingGroupLaunchTemplate], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._launchTemplate = $value
        }
    }

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

Write-Verbose "Importing class 'AutoScalingAutoScalingGroupNotificationConfiguration'"

class AutoScalingAutoScalingGroupNotificationConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAutoScalingAutoScalingGroupNotificationConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-notificationconfigurations.html'

    hidden [object] $_notificationTypes
    hidden [object] $_topicARN

    [string[]] $NotificationTypes
    [string] $TopicARN

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

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

Write-Verbose "Importing class 'AutoScalingScalingPolicyPredictiveScalingPredefinedLoadMetric'"

class AutoScalingScalingPolicyPredictiveScalingPredefinedLoadMetric : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAutoScalingScalingPolicyPredictiveScalingPredefinedLoadMetric'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predictivescalingpredefinedloadmetric.html'

    hidden [object] $_predefinedMetricType
    hidden [object] $_resourceLabel

    [string] $PredefinedMetricType
    [string] $ResourceLabel

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

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

Write-Verbose "Importing class 'AutoScalingScalingPolicyPredefinedMetricSpecification'"

class AutoScalingScalingPolicyPredefinedMetricSpecification : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAutoScalingScalingPolicyPredefinedMetricSpecification'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predefinedmetricspecification.html'

    hidden [object] $_predefinedMetricType
    hidden [object] $_resourceLabel

    [string] $PredefinedMetricType
    [string] $ResourceLabel

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

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

Write-Verbose "Importing class 'AutoScalingScalingPolicyPredictiveScalingPredefinedScalingMetric'"

class AutoScalingScalingPolicyPredictiveScalingPredefinedScalingMetric : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAutoScalingScalingPolicyPredictiveScalingPredefinedScalingMetric'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predictivescalingpredefinedscalingmetric.html'

    hidden [object] $_predefinedMetricType
    hidden [object] $_resourceLabel

    [string] $PredefinedMetricType
    [string] $ResourceLabel

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

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

Write-Verbose "Importing class 'AutoScalingLaunchConfigurationBlockDevice'"

class AutoScalingLaunchConfigurationBlockDevice : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAutoScalingLaunchConfigurationBlockDevice'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig-blockdev-template.html'

    hidden [object] $_deleteOnTermination
    hidden [object] $_encrypted
    hidden [object] $_iops
    hidden [object] $_snapshotId
    hidden [object] $_throughput
    hidden [object] $_volumeSize
    hidden [object] $_volumeType

    [bool] $DeleteOnTermination
    [bool] $Encrypted
    [int] $Iops
    [string] $SnapshotId
    [int] $Throughput
    [int] $VolumeSize
    [string] $VolumeType

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name DeleteOnTermination -Value {
            $this._deleteOnTermination
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._deleteOnTermination = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Encrypted -Value {
            $this._encrypted
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._encrypted = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Iops -Value {
            $this._iops
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._iops = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SnapshotId -Value {
            $this._snapshotId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._snapshotId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Throughput -Value {
            $this._throughput
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._throughput = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VolumeSize -Value {
            $this._volumeSize
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._volumeSize = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VolumeType -Value {
            $this._volumeType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._volumeType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'AutoScalingScalingPolicyPredictiveScalingMetricSpecification'"

class AutoScalingScalingPolicyPredictiveScalingMetricSpecification : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAutoScalingScalingPolicyPredictiveScalingMetricSpecification'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predictivescalingmetricspecification.html'

    hidden [object] $_predefinedLoadMetricSpecification
    hidden [object] $_predefinedMetricPairSpecification
    hidden [object] $_predefinedScalingMetricSpecification
    hidden [object] $_targetValue

    [AutoScalingScalingPolicyPredictiveScalingPredefinedLoadMetric] $PredefinedLoadMetricSpecification
    [AutoScalingScalingPolicyPredictiveScalingPredefinedMetricPair] $PredefinedMetricPairSpecification
    [AutoScalingScalingPolicyPredictiveScalingPredefinedScalingMetric] $PredefinedScalingMetricSpecification
    [double] $TargetValue

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name PredefinedLoadMetricSpecification -Value {
            $this._predefinedLoadMetricSpecification
        } -SecondValue {
            param([ValidateType(([AutoScalingScalingPolicyPredictiveScalingPredefinedLoadMetric], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._predefinedLoadMetricSpecification = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PredefinedMetricPairSpecification -Value {
            $this._predefinedMetricPairSpecification
        } -SecondValue {
            param([ValidateType(([AutoScalingScalingPolicyPredictiveScalingPredefinedMetricPair], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._predefinedMetricPairSpecification = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PredefinedScalingMetricSpecification -Value {
            $this._predefinedScalingMetricSpecification
        } -SecondValue {
            param([ValidateType(([AutoScalingScalingPolicyPredictiveScalingPredefinedScalingMetric], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._predefinedScalingMetricSpecification = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetValue -Value {
            $this._targetValue
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._targetValue = $value
        }
    }

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

Write-Verbose "Importing class 'AutoScalingAutoScalingGroupLaunchTemplate'"

class AutoScalingAutoScalingGroupLaunchTemplate : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAutoScalingAutoScalingGroupLaunchTemplate'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-as-mixedinstancespolicy-launchtemplate.html'

    hidden [object] $_launchTemplateSpecification
    hidden [object] $_overrides

    [AutoScalingAutoScalingGroupLaunchTemplateSpecification] $LaunchTemplateSpecification
    [AutoScalingAutoScalingGroupLaunchTemplateOverrides[]] $Overrides

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name LaunchTemplateSpecification -Value {
            $this._launchTemplateSpecification
        } -SecondValue {
            param([ValidateType(([AutoScalingAutoScalingGroupLaunchTemplateSpecification], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._launchTemplateSpecification = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Overrides -Value {
            $this._overrides
        } -SecondValue {
            param([ValidateType(([AutoScalingAutoScalingGroupLaunchTemplateOverrides], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._overrides = $value
        }
    }

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

Write-Verbose "Importing class 'AutoScalingAutoScalingGroupTagProperty'"

class AutoScalingAutoScalingGroupTagProperty : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAutoScalingAutoScalingGroupTagProperty'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-tags.html'

    hidden [object] $_key
    hidden [object] $_propagateAtLaunch
    hidden [object] $_value

    [string] $Key
    [bool] $PropagateAtLaunch
    [string] $Value

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

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

Write-Verbose "Importing class 'AutoScalingScalingPolicy'"

class AutoScalingScalingPolicy : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSAutoScalingScalingPolicy'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-policy.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::AutoScaling::ScalingPolicy'
    [string] $AdjustmentType
    [string] $AutoScalingGroupName
    [string] $Cooldown
    [int] $EstimatedInstanceWarmup
    [string] $MetricAggregationType
    [int] $MinAdjustmentMagnitude
    [string] $PolicyType
    [AutoScalingScalingPolicyPredictiveScalingConfiguration] $PredictiveScalingConfiguration
    [int] $ScalingAdjustment
    [AutoScalingScalingPolicyStepAdjustment[]] $StepAdjustments
    [AutoScalingScalingPolicyTargetTrackingConfiguration] $TargetTrackingConfiguration
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name AdjustmentType -Value {
            $this.Properties['AdjustmentType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AdjustmentType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AutoScalingGroupName -Value {
            $this.Properties['AutoScalingGroupName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AutoScalingGroupName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Cooldown -Value {
            $this.Properties['Cooldown']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Cooldown'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EstimatedInstanceWarmup -Value {
            $this.Properties['EstimatedInstanceWarmup']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EstimatedInstanceWarmup'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MetricAggregationType -Value {
            $this.Properties['MetricAggregationType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MetricAggregationType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MinAdjustmentMagnitude -Value {
            $this.Properties['MinAdjustmentMagnitude']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MinAdjustmentMagnitude'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PolicyType -Value {
            $this.Properties['PolicyType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['PolicyType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PredictiveScalingConfiguration -Value {
            $this.Properties['PredictiveScalingConfiguration']
        } -SecondValue {
            param([ValidateType(([AutoScalingScalingPolicyPredictiveScalingConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['PredictiveScalingConfiguration'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ScalingAdjustment -Value {
            $this.Properties['ScalingAdjustment']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ScalingAdjustment'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StepAdjustments -Value {
            $this.Properties['StepAdjustments']
        } -SecondValue {
            param([ValidateType(([AutoScalingScalingPolicyStepAdjustment], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['StepAdjustments'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetTrackingConfiguration -Value {
            $this.Properties['TargetTrackingConfiguration']
        } -SecondValue {
            param([ValidateType(([AutoScalingScalingPolicyTargetTrackingConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['TargetTrackingConfiguration'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'AutoScalingAutoScalingGroup'"

class AutoScalingAutoScalingGroup : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSAutoScalingAutoScalingGroup'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html'

    hidden [string[]] $_attributes = @('LaunchConfigurationName','LaunchTemplateSpecification','MixedInstancesPolicy','PlacementGroup','VPCZoneIdentifier')
    hidden [object] $_condition

    [string] $Type = 'AWS::AutoScaling::AutoScalingGroup'
    [string] $AutoScalingGroupName
    [string[]] $AvailabilityZones
    [bool] $CapacityRebalance
    [string] $Context
    [string] $Cooldown
    [string] $DesiredCapacity
    [int] $HealthCheckGracePeriod
    [string] $HealthCheckType
    [string] $InstanceId
    [string] $LaunchConfigurationName
    [AutoScalingAutoScalingGroupLaunchTemplateSpecification] $LaunchTemplate
    [AutoScalingAutoScalingGroupLifecycleHookSpecification[]] $LifecycleHookSpecificationList
    [string[]] $LoadBalancerNames
    [int] $MaxInstanceLifetime
    [string] $MaxSize
    [AutoScalingAutoScalingGroupMetricsCollection[]] $MetricsCollection
    [string] $MinSize
    [AutoScalingAutoScalingGroupMixedInstancesPolicy] $MixedInstancesPolicy
    [bool] $NewInstancesProtectedFromScaleIn
    [AutoScalingAutoScalingGroupNotificationConfiguration[]] $NotificationConfigurations
    [string] $PlacementGroup
    [string] $ServiceLinkedRoleARN
    [AutoScalingAutoScalingGroupTagProperty[]] $Tags
    [string[]] $TargetGroupARNs
    [string[]] $TerminationPolicies
    [string[]] $VPCZoneIdentifier
    [VSJson] $Metadata
    [CreationPolicy] $CreationPolicy
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name AutoScalingGroupName -Value {
            $this.Properties['AutoScalingGroupName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AutoScalingGroupName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AvailabilityZones -Value {
            $this.Properties['AvailabilityZones']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['AvailabilityZones'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CapacityRebalance -Value {
            $this.Properties['CapacityRebalance']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['CapacityRebalance'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Context -Value {
            $this.Properties['Context']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Context'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Cooldown -Value {
            $this.Properties['Cooldown']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Cooldown'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DesiredCapacity -Value {
            $this.Properties['DesiredCapacity']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DesiredCapacity'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HealthCheckGracePeriod -Value {
            $this.Properties['HealthCheckGracePeriod']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['HealthCheckGracePeriod'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HealthCheckType -Value {
            $this.Properties['HealthCheckType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['HealthCheckType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InstanceId -Value {
            $this.Properties['InstanceId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['InstanceId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LaunchConfigurationName -Value {
            $this.Properties['LaunchConfigurationName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['LaunchConfigurationName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LaunchTemplate -Value {
            $this.Properties['LaunchTemplate']
        } -SecondValue {
            param([ValidateType(([AutoScalingAutoScalingGroupLaunchTemplateSpecification], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['LaunchTemplate'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LifecycleHookSpecificationList -Value {
            $this.Properties['LifecycleHookSpecificationList']
        } -SecondValue {
            param([ValidateType(([AutoScalingAutoScalingGroupLifecycleHookSpecification], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['LifecycleHookSpecificationList'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LoadBalancerNames -Value {
            $this.Properties['LoadBalancerNames']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['LoadBalancerNames'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxInstanceLifetime -Value {
            $this.Properties['MaxInstanceLifetime']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MaxInstanceLifetime'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxSize -Value {
            $this.Properties['MaxSize']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MaxSize'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MetricsCollection -Value {
            $this.Properties['MetricsCollection']
        } -SecondValue {
            param([ValidateType(([AutoScalingAutoScalingGroupMetricsCollection], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['MetricsCollection'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MinSize -Value {
            $this.Properties['MinSize']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MinSize'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MixedInstancesPolicy -Value {
            $this.Properties['MixedInstancesPolicy']
        } -SecondValue {
            param([ValidateType(([AutoScalingAutoScalingGroupMixedInstancesPolicy], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MixedInstancesPolicy'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name NewInstancesProtectedFromScaleIn -Value {
            $this.Properties['NewInstancesProtectedFromScaleIn']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['NewInstancesProtectedFromScaleIn'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name NotificationConfigurations -Value {
            $this.Properties['NotificationConfigurations']
        } -SecondValue {
            param([ValidateType(([AutoScalingAutoScalingGroupNotificationConfiguration], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['NotificationConfigurations'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PlacementGroup -Value {
            $this.Properties['PlacementGroup']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['PlacementGroup'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ServiceLinkedRoleARN -Value {
            $this.Properties['ServiceLinkedRoleARN']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ServiceLinkedRoleARN'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([ValidateType(([AutoScalingAutoScalingGroupTagProperty], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['Tags'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetGroupARNs -Value {
            $this.Properties['TargetGroupARNs']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['TargetGroupARNs'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TerminationPolicies -Value {
            $this.Properties['TerminationPolicies']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['TerminationPolicies'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VPCZoneIdentifier -Value {
            $this.Properties['VPCZoneIdentifier']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['VPCZoneIdentifier'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'AutoScalingScheduledAction'"

class AutoScalingScheduledAction : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSAutoScalingScheduledAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-scheduledaction.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::AutoScaling::ScheduledAction'
    [string] $AutoScalingGroupName
    [int] $DesiredCapacity
    [string] $EndTime
    [int] $MaxSize
    [int] $MinSize
    [string] $Recurrence
    [string] $StartTime
    [string] $TimeZone
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name AutoScalingGroupName -Value {
            $this.Properties['AutoScalingGroupName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AutoScalingGroupName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DesiredCapacity -Value {
            $this.Properties['DesiredCapacity']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DesiredCapacity'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EndTime -Value {
            $this.Properties['EndTime']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EndTime'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxSize -Value {
            $this.Properties['MaxSize']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MaxSize'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MinSize -Value {
            $this.Properties['MinSize']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MinSize'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Recurrence -Value {
            $this.Properties['Recurrence']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Recurrence'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StartTime -Value {
            $this.Properties['StartTime']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['StartTime'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TimeZone -Value {
            $this.Properties['TimeZone']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['TimeZone'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'AutoScalingLaunchConfiguration'"

class AutoScalingLaunchConfiguration : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSAutoScalingLaunchConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::AutoScaling::LaunchConfiguration'
    [bool] $AssociatePublicIpAddress
    [AutoScalingLaunchConfigurationBlockDeviceMapping[]] $BlockDeviceMappings
    [string] $ClassicLinkVPCId
    [string[]] $ClassicLinkVPCSecurityGroups
    [bool] $EbsOptimized
    [string] $IamInstanceProfile
    [string] $ImageId
    [string] $InstanceId
    [bool] $InstanceMonitoring
    [string] $InstanceType
    [string] $KernelId
    [string] $KeyName
    [string] $LaunchConfigurationName
    [AutoScalingLaunchConfigurationMetadataOptions] $MetadataOptions
    [string] $PlacementTenancy
    [string] $RamDiskId
    [string[]] $SecurityGroups
    [string] $SpotPrice
    [TransformUserData()] [UserData] $UserData
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name AssociatePublicIpAddress -Value {
            $this.Properties['AssociatePublicIpAddress']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AssociatePublicIpAddress'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BlockDeviceMappings -Value {
            $this.Properties['BlockDeviceMappings']
        } -SecondValue {
            param([ValidateType(([AutoScalingLaunchConfigurationBlockDeviceMapping], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['BlockDeviceMappings'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ClassicLinkVPCId -Value {
            $this.Properties['ClassicLinkVPCId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ClassicLinkVPCId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ClassicLinkVPCSecurityGroups -Value {
            $this.Properties['ClassicLinkVPCSecurityGroups']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['ClassicLinkVPCSecurityGroups'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EbsOptimized -Value {
            $this.Properties['EbsOptimized']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EbsOptimized'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IamInstanceProfile -Value {
            $this.Properties['IamInstanceProfile']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['IamInstanceProfile'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ImageId -Value {
            $this.Properties['ImageId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ImageId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InstanceId -Value {
            $this.Properties['InstanceId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['InstanceId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InstanceMonitoring -Value {
            $this.Properties['InstanceMonitoring']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['InstanceMonitoring'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InstanceType -Value {
            $this.Properties['InstanceType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['InstanceType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name KernelId -Value {
            $this.Properties['KernelId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['KernelId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name KeyName -Value {
            $this.Properties['KeyName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['KeyName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LaunchConfigurationName -Value {
            $this.Properties['LaunchConfigurationName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['LaunchConfigurationName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MetadataOptions -Value {
            $this.Properties['MetadataOptions']
        } -SecondValue {
            param([ValidateType(([AutoScalingLaunchConfigurationMetadataOptions], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MetadataOptions'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PlacementTenancy -Value {
            $this.Properties['PlacementTenancy']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['PlacementTenancy'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RamDiskId -Value {
            $this.Properties['RamDiskId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RamDiskId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SecurityGroups -Value {
            $this.Properties['SecurityGroups']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['SecurityGroups'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SpotPrice -Value {
            $this.Properties['SpotPrice']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SpotPrice'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UserData -Value {
            $this.Properties['UserData']
        } -SecondValue {
            param([TransformUserData()] [object] $value)
            $this.Properties['UserData'] = $value -as [UserData]
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'AutoScalingLifecycleHook'"

class AutoScalingLifecycleHook : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSAutoScalingLifecycleHook'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-lifecyclehook.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::AutoScaling::LifecycleHook'
    [string] $AutoScalingGroupName
    [string] $DefaultResult
    [int] $HeartbeatTimeout
    [string] $LifecycleHookName
    [string] $LifecycleTransition
    [string] $NotificationMetadata
    [string] $NotificationTargetARN
    [string] $RoleARN
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name AutoScalingGroupName -Value {
            $this.Properties['AutoScalingGroupName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AutoScalingGroupName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DefaultResult -Value {
            $this.Properties['DefaultResult']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DefaultResult'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HeartbeatTimeout -Value {
            $this.Properties['HeartbeatTimeout']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['HeartbeatTimeout'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LifecycleHookName -Value {
            $this.Properties['LifecycleHookName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['LifecycleHookName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LifecycleTransition -Value {
            $this.Properties['LifecycleTransition']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['LifecycleTransition'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name NotificationMetadata -Value {
            $this.Properties['NotificationMetadata']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['NotificationMetadata'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name NotificationTargetARN -Value {
            $this.Properties['NotificationTargetARN']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['NotificationTargetARN'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RoleARN -Value {
            $this.Properties['RoleARN']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RoleARN'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'AutoScalingWarmPool'"

class AutoScalingWarmPool : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSAutoScalingWarmPool'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-warmpool.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::AutoScaling::WarmPool'
    [string] $AutoScalingGroupName
    [int] $MaxGroupPreparedCapacity
    [int] $MinSize
    [string] $PoolState
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name AutoScalingGroupName -Value {
            $this.Properties['AutoScalingGroupName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AutoScalingGroupName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxGroupPreparedCapacity -Value {
            $this.Properties['MaxGroupPreparedCapacity']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MaxGroupPreparedCapacity'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MinSize -Value {
            $this.Properties['MinSize']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MinSize'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PoolState -Value {
            $this.Properties['PoolState']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['PoolState'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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