exports/latest-2019-04-30/Update-AzStorageAccount.ps1

<#
.Synopsis
The update operation can be used to update the SKU, encryption, access tier, or tags for a storage account.
It can also be used to map the account to a custom domain.
Only one custom domain is supported per storage account; the replacement/change of custom domain is not supported.
In order to replace an old custom domain, the old value must be cleared/unregistered before a new value can be set.
The update of multiple properties is supported.
This call does not change the storage keys for the account.
If you want to change the storage account keys, use the regenerate keys operation.
The location and name of the storage account cannot be changed after creation.
.Description
The update operation can be used to update the SKU, encryption, access tier, or tags for a storage account.
It can also be used to map the account to a custom domain.
Only one custom domain is supported per storage account; the replacement/change of custom domain is not supported.
In order to replace an old custom domain, the old value must be cleared/unregistered before a new value can be set.
The update of multiple properties is supported.
This call does not change the storage keys for the account.
If you want to change the storage account keys, use the regenerate keys operation.
The location and name of the storage account cannot be changed after creation.
.Example
To view examples, please use the -Online parameter with Get-Help or navigate to: https://docs.microsoft.com/en-us/powershell/module/az.storage/update-azstorageaccount
.Inputs
Microsoft.Azure.PowerShell.Cmdlets.Storage.Models.IStorageIdentity
.Outputs
Microsoft.Azure.PowerShell.Cmdlets.Storage.Models.Api20190401.IStorageAccount
.Notes
COMPLEX PARAMETER PROPERTIES
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
INPUTOBJECT <IStorageIdentity>: Identity Parameter
  [AccountName <String>]: The name of the storage account within the specified resource group. Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only.
  [BlobServicesName <String>]: The name of the blob Service within the specified storage account. Blob Service Name must be 'default'
  [ContainerName <String>]: The name of the blob container within the specified storage account. Blob container names must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-) character must be immediately preceded and followed by a letter or number.
  [FileServicesName <String>]: The name of the file Service within the specified storage account. File Service Name must be "default"
  [Id <String>]: Resource identity path
  [ImmutabilityPolicyName <String>]: The name of the blob container immutabilityPolicy within the specified storage account. ImmutabilityPolicy Name must be 'default'
  [Location <String>]: The location of the Azure Storage resource.
  [ManagementPolicyName <ManagementPolicyName?>]: The name of the Storage Account Management Policy. It should always be 'default'
  [ResourceGroupName <String>]: The name of the resource group within the user's subscription. The name is case insensitive.
  [ShareName <String>]: The name of the file share within the specified storage account. File share names must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-) character must be immediately preceded and followed by a letter or number.
  [SubscriptionId <String>]: The ID of the target subscription.
 
NETWORKRULESETIPRULE <IIPRule[]>: Sets the IP ACL rules
  IPAddressOrRange <String>: Specifies the IP or IP range in CIDR format. Only IPV4 address is allowed.
  [Action <Action?>]: The action of IP ACL rule.
 
NETWORKRULESETVIRTUALNETWORKRULE <IVirtualNetworkRule[]>: Sets the virtual network rules
  VirtualNetworkResourceId <String>: Resource ID of a subnet, for example: /subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.Network/virtualNetworks/{vnetName}/subnets/{subnetName}.
  [Action <Action?>]: The action of virtual network rule.
  [State <State?>]: Gets the state of virtual network rule.
 
SKURESTRICTION <IRestriction[]>: The restrictions because of which SKU cannot be used. This is empty if there are no restrictions.
  [ReasonCode <ReasonCode?>]: The reason for the restriction. As of now this can be "QuotaId" or "NotAvailableForSubscription". Quota Id is set when the SKU has requiredQuotas parameter as the subscription does not belong to that quota. The "NotAvailableForSubscription" is related to capacity at DC.
.Link
https://docs.microsoft.com/en-us/powershell/module/az.storage/update-azstorageaccount
#>

function Update-AzStorageAccount {
[OutputType([Microsoft.Azure.PowerShell.Cmdlets.Storage.Models.Api20190401.IStorageAccount])]
[CmdletBinding(DefaultParameterSetName='UpdateExpanded1', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
[Microsoft.Azure.PowerShell.Cmdlets.Storage.Profile('latest-2019-04-30')]
param(
    [Parameter(ParameterSetName='UpdateExpanded1', Mandatory)]
    [Parameter(ParameterSetName='UpdateExpanded1KeyVaultEncryption', Mandatory)]
    [Parameter(ParameterSetName='UpdateExpanded1StorageEncryption', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Category('Path')]
    [System.String]
    # The name of the storage account within the specified resource group.
    # Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only.
    ${Name},

    [Parameter(ParameterSetName='UpdateExpanded1', Mandatory)]
    [Parameter(ParameterSetName='UpdateExpanded1KeyVaultEncryption', Mandatory)]
    [Parameter(ParameterSetName='UpdateExpanded1StorageEncryption', Mandatory)]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Category('Path')]
    [System.String]
    # The name of the resource group within the user's subscription.
    # The name is case insensitive.
    ${ResourceGroupName},

    [Parameter(ParameterSetName='UpdateExpanded1')]
    [Parameter(ParameterSetName='UpdateExpanded1KeyVaultEncryption')]
    [Parameter(ParameterSetName='UpdateExpanded1StorageEncryption')]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Category('Path')]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')]
    [System.String]
    # The ID of the target subscription.
    ${SubscriptionId},

    [Parameter(ParameterSetName='UpdateViaIdentityExpanded1KeyVaultEncryption', Mandatory, ValueFromPipeline)]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded1StorageEncryption', Mandatory, ValueFromPipeline)]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded1', Mandatory, ValueFromPipeline)]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Category('Path')]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Models.IStorageIdentity]
    # Identity Parameter
    # To construct, see NOTES section for INPUTOBJECT properties and create a hash table.
    ${InputObject},

    [Parameter(Mandatory)]
    [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.Storage.Support.SkuName])]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Support.SkuName]
    # Gets or sets the SKU name.
    # Required for account creation; optional for update.
    # Note that in older versions, SKU name was called accountType.
    ${SkuName},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # Specify IdentityType as 'SystemAssigned'
    ${AssignIdentity},

    [Parameter()]
    [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.Storage.Support.AccessTier])]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Support.AccessTier]
    # Required for storage accounts where kind = BlobStorage.
    # The access tier used for billing.
    ${AccessTier},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # A boolean indicating whether or not the service encrypts the data as it is stored.
    ${EncryptBlobService},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Category('Body')]
    [System.String]
    # Gets or sets the custom domain name assigned to the storage account.
    # Name is the CNAME source.
    ${CustomDomainName},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # Enables Azure Files AAD Integration for SMB if sets to true.
    ${EnableAzureFilesAadIntegration},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # Allows https traffic only to storage service if sets to true.
    ${EnableHttpsTrafficOnly},

    [Parameter(ParameterSetName='UpdateExpanded1')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded1')]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    ${NoEncryption},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # A boolean indicating whether or not the service encrypts the data as it is stored.
    ${EncryptFileService},

    [Parameter()]
    [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.Storage.Support.Kind])]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Support.Kind]
    # Optional.
    # Indicates the type of storage account.
    # Currently only StorageV2 value supported by server.
    ${Kind},

    [Parameter()]
    [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.Storage.Support.Bypass])]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Support.Bypass]
    # Specifies whether traffic is bypassed for Logging/Metrics/AzureServices.
    # Possible values are any combination of Logging|Metrics|AzureServices (For example, "Logging, Metrics"), or None to bypass none of those traffics.
    ${NetworkRuleSetBypass},

    [Parameter()]
    [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.Storage.Support.DefaultAction])]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Support.DefaultAction]
    # Specifies the default action of allow or deny when no other rules match.
    ${NetworkRuleSetDefaultAction},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Models.Api20171001.IIPRule[]]
    # Sets the IP ACL rules
    # To construct, see NOTES section for NETWORKRULESETIPRULE properties and create a hash table.
    ${NetworkRuleSetIPRule},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Models.Api20171001.IVirtualNetworkRule[]]
    # Sets the virtual network rules
    # To construct, see NOTES section for NETWORKRULESETVIRTUALNETWORKRULE properties and create a hash table.
    ${NetworkRuleSetVirtualNetworkRule},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # A boolean indicating whether or not the service encrypts the data as it is stored.
    ${EncryptQueueService},

    [Parameter()]
    [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.Storage.Support.Kind])]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Support.Kind]
    # Indicates the type of storage account.
    ${SkuKind},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Category('Body')]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Models.Api20171001.IRestriction[]]
    # The restrictions because of which SKU cannot be used.
    # This is empty if there are no restrictions.
    # To construct, see NOTES section for SKURESTRICTION properties and create a hash table.
    ${SkuRestriction},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # A boolean indicating whether or not the service encrypts the data as it is stored.
    ${EncryptTableService},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Category('Body')]
    [System.Collections.Hashtable]
    # Gets or sets a list of key value pairs that describe the resource.
    # These tags can be used in viewing and grouping this resource (across resource groups).
    # A maximum of 15 tags can be provided for a resource.
    # Each tag must have a key no greater in length than 128 characters and a value no greater in length than 256 characters.
    ${Tag},

    [Parameter()]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # Indicates whether indirect CName validation is enabled.
    # Default value is false.
    # This should only be set on updates.
    ${UseSubDomain},

    [Parameter(ParameterSetName='UpdateExpanded1KeyVaultEncryption')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded1KeyVaultEncryption')]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    ${KeyVaultEncryption},

    [Parameter(ParameterSetName='UpdateExpanded1KeyVaultEncryption')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded1KeyVaultEncryption')]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Category('Body')]
    [System.String]
    # The name of KeyVault key.
    ${KeyName},

    [Parameter(ParameterSetName='UpdateExpanded1KeyVaultEncryption')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded1KeyVaultEncryption')]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Category('Body')]
    [System.String]
    # The Uri of KeyVault.
    ${KeyVaultUri},

    [Parameter(ParameterSetName='UpdateExpanded1KeyVaultEncryption')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded1KeyVaultEncryption')]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Category('Body')]
    [System.String]
    # The version of KeyVault key.
    ${KeyVersion},

    [Parameter(ParameterSetName='UpdateExpanded1StorageEncryption')]
    [Parameter(ParameterSetName='UpdateViaIdentityExpanded1StorageEncryption')]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    ${StorageEncryption},

    [Parameter()]
    [Alias('AzureRMContext', 'AzureCredential')]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Category('Azure')]
    [System.Management.Automation.PSObject]
    # The credentials, account, tenant, and subscription used for communication with Azure.
    ${DefaultProfile},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Category('Runtime')]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Category('Runtime')]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [Microsoft.Azure.PowerShell.Cmdlets.Storage.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName
        $mapping = @{
            UpdateExpanded1 = 'Az.Storage.custom\Update-AzStorageAccount';
            UpdateExpanded1KeyVaultEncryption = 'Az.Storage.custom\Update-AzStorageAccount';
            UpdateExpanded1StorageEncryption = 'Az.Storage.custom\Update-AzStorageAccount';
            UpdateViaIdentityExpanded1KeyVaultEncryption = 'Az.Storage.custom\Update-AzStorageAccount';
            UpdateViaIdentityExpanded1StorageEncryption = 'Az.Storage.custom\Update-AzStorageAccount';
            UpdateViaIdentityExpanded1 = 'Az.Storage.custom\Update-AzStorageAccount';
        }
        if (('UpdateExpanded1', 'UpdateExpanded1KeyVaultEncryption', 'UpdateExpanded1StorageEncryption') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) {
            $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id
        }
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {
        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {
        throw
    }
}

end {
    try {
        $steppablePipeline.End()
    } catch {
        throw
    }
}
}

# SIG # Begin signature block
# MIIjhQYJKoZIhvcNAQcCoIIjdjCCI3ICAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCDwAp0AaUXD2u/Y
# gwUiJzv321gq+kC6Pt5KJiuyBk7iR6CCDYEwggX/MIID56ADAgECAhMzAAABUZ6N
# j0Bxow5BAAAAAAFRMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNVBAYTAlVTMRMwEQYD
# VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy
# b3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25p
# bmcgUENBIDIwMTEwHhcNMTkwNTAyMjEzNzQ2WhcNMjAwNTAyMjEzNzQ2WjB0MQsw
# CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u
# ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMR4wHAYDVQQDExVNaWNy
# b3NvZnQgQ29ycG9yYXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
# AQCVWsaGaUcdNB7xVcNmdfZiVBhYFGcn8KMqxgNIvOZWNH9JYQLuhHhmJ5RWISy1
# oey3zTuxqLbkHAdmbeU8NFMo49Pv71MgIS9IG/EtqwOH7upan+lIq6NOcw5fO6Os
# +12R0Q28MzGn+3y7F2mKDnopVu0sEufy453gxz16M8bAw4+QXuv7+fR9WzRJ2CpU
# 62wQKYiFQMfew6Vh5fuPoXloN3k6+Qlz7zgcT4YRmxzx7jMVpP/uvK6sZcBxQ3Wg
# B/WkyXHgxaY19IAzLq2QiPiX2YryiR5EsYBq35BP7U15DlZtpSs2wIYTkkDBxhPJ
# IDJgowZu5GyhHdqrst3OjkSRAgMBAAGjggF+MIIBejAfBgNVHSUEGDAWBgorBgEE
# AYI3TAgBBggrBgEFBQcDAzAdBgNVHQ4EFgQUV4Iarkq57esagu6FUBb270Zijc8w
# UAYDVR0RBEkwR6RFMEMxKTAnBgNVBAsTIE1pY3Jvc29mdCBPcGVyYXRpb25zIFB1
# ZXJ0byBSaWNvMRYwFAYDVQQFEw0yMzAwMTIrNDU0MTM1MB8GA1UdIwQYMBaAFEhu
# ZOVQBdOCqhc3NyK1bajKdQKVMFQGA1UdHwRNMEswSaBHoEWGQ2h0dHA6Ly93d3cu
# bWljcm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01pY0NvZFNpZ1BDQTIwMTFfMjAxMS0w
# Ny0wOC5jcmwwYQYIKwYBBQUHAQEEVTBTMFEGCCsGAQUFBzAChkVodHRwOi8vd3d3
# Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRzL01pY0NvZFNpZ1BDQTIwMTFfMjAx
# MS0wNy0wOC5jcnQwDAYDVR0TAQH/BAIwADANBgkqhkiG9w0BAQsFAAOCAgEAWg+A
# rS4Anq7KrogslIQnoMHSXUPr/RqOIhJX+32ObuY3MFvdlRElbSsSJxrRy/OCCZdS
# se+f2AqQ+F/2aYwBDmUQbeMB8n0pYLZnOPifqe78RBH2fVZsvXxyfizbHubWWoUf
# NW/FJlZlLXwJmF3BoL8E2p09K3hagwz/otcKtQ1+Q4+DaOYXWleqJrJUsnHs9UiL
# crVF0leL/Q1V5bshob2OTlZq0qzSdrMDLWdhyrUOxnZ+ojZ7UdTY4VnCuogbZ9Zs
# 9syJbg7ZUS9SVgYkowRsWv5jV4lbqTD+tG4FzhOwcRQwdb6A8zp2Nnd+s7VdCuYF
# sGgI41ucD8oxVfcAMjF9YX5N2s4mltkqnUe3/htVrnxKKDAwSYliaux2L7gKw+bD
# 1kEZ/5ozLRnJ3jjDkomTrPctokY/KaZ1qub0NUnmOKH+3xUK/plWJK8BOQYuU7gK
# YH7Yy9WSKNlP7pKj6i417+3Na/frInjnBkKRCJ/eYTvBH+s5guezpfQWtU4bNo/j
# 8Qw2vpTQ9w7flhH78Rmwd319+YTmhv7TcxDbWlyteaj4RK2wk3pY1oSz2JPE5PNu
# Nmd9Gmf6oePZgy7Ii9JLLq8SnULV7b+IP0UXRY9q+GdRjM2AEX6msZvvPCIoG0aY
# HQu9wZsKEK2jqvWi8/xdeeeSI9FN6K1w4oVQM4Mwggd6MIIFYqADAgECAgphDpDS
# AAAAAAADMA0GCSqGSIb3DQEBCwUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMK
# V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0
# IENvcnBvcmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUm9vdCBDZXJ0aWZpY2F0
# ZSBBdXRob3JpdHkgMjAxMTAeFw0xMTA3MDgyMDU5MDlaFw0yNjA3MDgyMTA5MDla
# MH4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdS
# ZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMT
# H01pY3Jvc29mdCBDb2RlIFNpZ25pbmcgUENBIDIwMTEwggIiMA0GCSqGSIb3DQEB
# AQUAA4ICDwAwggIKAoICAQCr8PpyEBwurdhuqoIQTTS68rZYIZ9CGypr6VpQqrgG
# OBoESbp/wwwe3TdrxhLYC/A4wpkGsMg51QEUMULTiQ15ZId+lGAkbK+eSZzpaF7S
# 35tTsgosw6/ZqSuuegmv15ZZymAaBelmdugyUiYSL+erCFDPs0S3XdjELgN1q2jz
# y23zOlyhFvRGuuA4ZKxuZDV4pqBjDy3TQJP4494HDdVceaVJKecNvqATd76UPe/7
# 4ytaEB9NViiienLgEjq3SV7Y7e1DkYPZe7J7hhvZPrGMXeiJT4Qa8qEvWeSQOy2u
# M1jFtz7+MtOzAz2xsq+SOH7SnYAs9U5WkSE1JcM5bmR/U7qcD60ZI4TL9LoDho33
# X/DQUr+MlIe8wCF0JV8YKLbMJyg4JZg5SjbPfLGSrhwjp6lm7GEfauEoSZ1fiOIl
# XdMhSz5SxLVXPyQD8NF6Wy/VI+NwXQ9RRnez+ADhvKwCgl/bwBWzvRvUVUvnOaEP
# 6SNJvBi4RHxF5MHDcnrgcuck379GmcXvwhxX24ON7E1JMKerjt/sW5+v/N2wZuLB
# l4F77dbtS+dJKacTKKanfWeA5opieF+yL4TXV5xcv3coKPHtbcMojyyPQDdPweGF
# RInECUzF1KVDL3SV9274eCBYLBNdYJWaPk8zhNqwiBfenk70lrC8RqBsmNLg1oiM
# CwIDAQABo4IB7TCCAekwEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYEFEhuZOVQ
# BdOCqhc3NyK1bajKdQKVMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMAsGA1Ud
# DwQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFHItOgIxkEO5FAVO
# 4eqnxzHRI4k0MFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9jcmwubWljcm9zb2Z0
# LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY1Jvb0NlckF1dDIwMTFfMjAxMV8wM18y
# Mi5jcmwwXgYIKwYBBQUHAQEEUjBQME4GCCsGAQUFBzAChkJodHRwOi8vd3d3Lm1p
# Y3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1Jvb0NlckF1dDIwMTFfMjAxMV8wM18y
# Mi5jcnQwgZ8GA1UdIASBlzCBlDCBkQYJKwYBBAGCNy4DMIGDMD8GCCsGAQUFBwIB
# FjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2RvY3MvcHJpbWFyeWNw
# cy5odG0wQAYIKwYBBQUHAgIwNB4yIB0ATABlAGcAYQBsAF8AcABvAGwAaQBjAHkA
# XwBzAHQAYQB0AGUAbQBlAG4AdAAuIB0wDQYJKoZIhvcNAQELBQADggIBAGfyhqWY
# 4FR5Gi7T2HRnIpsLlhHhY5KZQpZ90nkMkMFlXy4sPvjDctFtg/6+P+gKyju/R6mj
# 82nbY78iNaWXXWWEkH2LRlBV2AySfNIaSxzzPEKLUtCw/WvjPgcuKZvmPRul1LUd
# d5Q54ulkyUQ9eHoj8xN9ppB0g430yyYCRirCihC7pKkFDJvtaPpoLpWgKj8qa1hJ
# Yx8JaW5amJbkg/TAj/NGK978O9C9Ne9uJa7lryft0N3zDq+ZKJeYTQ49C/IIidYf
# wzIY4vDFLc5bnrRJOQrGCsLGra7lstnbFYhRRVg4MnEnGn+x9Cf43iw6IGmYslmJ
# aG5vp7d0w0AFBqYBKig+gj8TTWYLwLNN9eGPfxxvFX1Fp3blQCplo8NdUmKGwx1j
# NpeG39rz+PIWoZon4c2ll9DuXWNB41sHnIc+BncG0QaxdR8UvmFhtfDcxhsEvt9B
# xw4o7t5lL+yX9qFcltgA1qFGvVnzl6UJS0gQmYAf0AApxbGbpT9Fdx41xtKiop96
# eiL6SJUfq/tHI4D1nvi/a7dLl+LrdXga7Oo3mXkYS//WsyNodeav+vyL6wuA6mk7
# r/ww7QRMjt/fdW1jkT3RnVZOT7+AVyKheBEyIXrvQQqxP/uozKRdwaGIm1dxVk5I
# RcBCyZt2WwqASGv9eZ/BvW1taslScxMNelDNMYIVWjCCFVYCAQEwgZUwfjELMAkG
# A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx
# HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEoMCYGA1UEAxMfTWljcm9z
# b2Z0IENvZGUgU2lnbmluZyBQQ0EgMjAxMQITMwAAAVGejY9AcaMOQQAAAAABUTAN
# BglghkgBZQMEAgEFAKCBrjAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgor
# BgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAvBgkqhkiG9w0BCQQxIgQg7r3G2kKn
# azeHphDyM347kNCU+5eipwXANuNjiDzKNEQwQgYKKwYBBAGCNwIBDDE0MDKgFIAS
# AE0AaQBjAHIAbwBzAG8AZgB0oRqAGGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbTAN
# BgkqhkiG9w0BAQEFAASCAQCALAjhQvmPFg+PdGMvPDDtcD12O3Fw+9PNLVkgULEd
# pROE2HckpEEWOGwd7ieb/0PIycFe54sc6Arrb1vdQoGAn19kfC0Zote+Fzfef4Se
# brPmlvYQlJB+Lg0K2PKvUiyVKvqxGWJ+pf6UJiu5Hg4VO/hy4xdLreEL9hCdUI1t
# UNNaW0xQ8az2Hn1sTjLbJ6E4GVhGsiAxvGM99ziuecxu25SY3MWfN+Y3XeDFixDS
# SZYWDT+Bwsz0CloRDbtfJV4x7HFJZGcyl8Xurb0MxFhTpjPTlJSt2qsPHqVRIT0F
# kEyIwx1xco68aI8pgfWC6ehyME8CnWsvqR4S/Pt95cdFoYIS5DCCEuAGCisGAQQB
# gjcDAwExghLQMIISzAYJKoZIhvcNAQcCoIISvTCCErkCAQMxDzANBglghkgBZQME
# AgEFADCCAVAGCyqGSIb3DQEJEAEEoIIBPwSCATswggE3AgEBBgorBgEEAYRZCgMB
# MDEwDQYJYIZIAWUDBAIBBQAEIMyEobJvf2QpW9FnNiP0ko4SJlOSwOiVVEMOxwW4
# eIcNAgZdjjv399AYEjIwMTkxMDA4MTIwNzIyLjk1WjAEgAIB9KCB0KSBzTCByjEL
# MAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1v
# bmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjElMCMGA1UECxMcTWlj
# cm9zb2Z0IEFtZXJpY2EgT3BlcmF0aW9uczEmMCQGA1UECxMdVGhhbGVzIFRTUyBF
# U046RUFDRS1FMzE2LUM5MUQxJTAjBgNVBAMTHE1pY3Jvc29mdCBUaW1lLVN0YW1w
# IFNlcnZpY2Wggg48MIIE8TCCA9mgAwIBAgITMwAAAPF0xdGu4z2bPQAAAAAA8TAN
# BgkqhkiG9w0BAQsFADB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv
# bjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0
# aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDAeFw0x
# ODEwMjQyMTE0MjNaFw0yMDAxMTAyMTE0MjNaMIHKMQswCQYDVQQGEwJVUzETMBEG
# A1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWlj
# cm9zb2Z0IENvcnBvcmF0aW9uMSUwIwYDVQQLExxNaWNyb3NvZnQgQW1lcmljYSBP
# cGVyYXRpb25zMSYwJAYDVQQLEx1UaGFsZXMgVFNTIEVTTjpFQUNFLUUzMTYtQzkx
# RDElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2VydmljZTCCASIwDQYJ
# KoZIhvcNAQEBBQADggEPADCCAQoCggEBAKirhahYWBHDuc8sHVK2vBin/+2xzcxY
# jY3BE9+jEcK3CkkddH2Y2xOQ8bp+d17I79wlEJ4EfUFKCAjWOXPw9Un5JXiROA4U
# g97PoCsnwN84ut2zrw1XRhKVuPuzxnczAi1sHUNypsYT4cCOFqCmS+icjnujgUp9
# RQmypud4bVamn6nXWJsyI41xWvbg8qgQrcByDlZZJx2tY9z144vGvs9fSe35J8N/
# xCxA+mQrjs+/QsJGGnqFaHuMmfQHs43dqwMHE2E8AzdC/mc8g6gxn3U4iFfceoGw
# vN+IYUsrFtIDIiCWIX6XsjOiln0henFmveZgikRSgd37KgKOgzUVG80CAwEAAaOC
# ARswggEXMB0GA1UdDgQWBBRmxOPp9NX/zKz70RGa+4vG2r+XUjAfBgNVHSMEGDAW
# gBTVYzpcijGQ80N7fEYbxTNoWoVtVTBWBgNVHR8ETzBNMEugSaBHhkVodHRwOi8v
# Y3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNUaW1TdGFQQ0Ff
# MjAxMC0wNy0wMS5jcmwwWgYIKwYBBQUHAQEETjBMMEoGCCsGAQUFBzAChj5odHRw
# Oi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1RpbVN0YVBDQV8yMDEw
# LTA3LTAxLmNydDAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoGCCsGAQUFBwMIMA0G
# CSqGSIb3DQEBCwUAA4IBAQA6tWeHAEj6+L8APYx5GWUdjCDVtQI/mwU4ADmQYBUY
# OINwIMM8Z46IyMk9kO8CbdcINB2RgkLNHXytEcr78TvrOz37f+8CmoBlVL6Qmr2p
# J4W+62PKHYUbjYX8VQ5r7hpX0mqTxNbRD1EFUKvDuVTGKAEuf5f0Ezt8kmsW2OmH
# sai/59xCPn31HVeCKz0F8NfziHUMX0KPXRNXyV9FFoPgifQ1Pq8NUeyr8wXvmX0Y
# j+WMR74ZHFoy1u7WuIFPSkNFmT8tVjyJPCtqeXq3xqJXZNj6m4oUJNuFSrW2gAwj
# PhF52mQCGdY3svFrv7UgJ2E0Gm0kkOYaqhS7hcDUUJx9MIIGcTCCBFmgAwIBAgIK
# YQmBKgAAAAAAAjANBgkqhkiG9w0BAQsFADCBiDELMAkGA1UEBhMCVVMxEzARBgNV
# BAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jv
# c29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJvb3QgQ2VydGlm
# aWNhdGUgQXV0aG9yaXR5IDIwMTAwHhcNMTAwNzAxMjEzNjU1WhcNMjUwNzAxMjE0
# NjU1WjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UE
# BxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYD
# VQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDCCASIwDQYJKoZIhvcN
# AQEBBQADggEPADCCAQoCggEBAKkdDbx3EYo6IOz8E5f1+n9plGt0VBDVpQoAgoX7
# 7XxoSyxfxcPlYcJ2tz5mK1vwFVMnBDEfQRsalR3OCROOfGEwWbEwRA/xYIiEVEMM
# 1024OAizQt2TrNZzMFcmgqNFDdDq9UeBzb8kYDJYYEbyWEeGMoQedGFnkV+BVLHP
# k0ySwcSmXdFhE24oxhr5hoC732H8RsEnHSRnEnIaIYqvS2SJUGKxXf13Hz3wV3Ws
# vYpCTUBR0Q+cBj5nf/VmwAOWRH7v0Ev9buWayrGo8noqCjHw2k4GkbaICDXoeByw
# 6ZnNPOcvRLqn9NxkvaQBwSAJk3jN/LzAyURdXhacAQVPIk0CAwEAAaOCAeYwggHi
# MBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBTVYzpcijGQ80N7fEYbxTNoWoVt
# VTAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0T
# AQH/BAUwAwEB/zAfBgNVHSMEGDAWgBTV9lbLj+iiXGJo0T2UkFvXzpoYxDBWBgNV
# HR8ETzBNMEugSaBHhkVodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9w
# cm9kdWN0cy9NaWNSb29DZXJBdXRfMjAxMC0wNi0yMy5jcmwwWgYIKwYBBQUHAQEE
# TjBMMEoGCCsGAQUFBzAChj5odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2Nl
# cnRzL01pY1Jvb0NlckF1dF8yMDEwLTA2LTIzLmNydDCBoAYDVR0gAQH/BIGVMIGS
# MIGPBgkrBgEEAYI3LgMwgYEwPQYIKwYBBQUHAgEWMWh0dHA6Ly93d3cubWljcm9z
# b2Z0LmNvbS9QS0kvZG9jcy9DUFMvZGVmYXVsdC5odG0wQAYIKwYBBQUHAgIwNB4y
# IB0ATABlAGcAYQBsAF8AUABvAGwAaQBjAHkAXwBTAHQAYQB0AGUAbQBlAG4AdAAu
# IB0wDQYJKoZIhvcNAQELBQADggIBAAfmiFEN4sbgmD+BcQM9naOhIW+z66bM9TG+
# zwXiqf76V20ZMLPCxWbJat/15/B4vceoniXj+bzta1RXCCtRgkQS+7lTjMz0YBKK
# dsxAQEGb3FwX/1z5Xhc1mCRWS3TvQhDIr79/xn/yN31aPxzymXlKkVIArzgPF/Uv
# eYFl2am1a+THzvbKegBvSzBEJCI8z+0DpZaPWSm8tv0E4XCfMkon/VWvL/625Y4z
# u2JfmttXQOnxzplmkIz/amJ/3cVKC5Em4jnsGUpxY517IW3DnKOiPPp/fZZqkHim
# bdLhnPkd/DjYlPTGpQqWhqS9nhquBEKDuLWAmyI4ILUl5WTs9/S/fmNZJQ96LjlX
# dqJxqgaKD4kWumGnEcua2A5HmoDF0M2n0O99g/DhO3EJ3110mCIIYdqwUB5vvfHh
# AN/nMQekkzr3ZUd46PioSKv33nJ+YWtvd6mBy6cJrDm77MbL2IK0cs0d9LiFAR6A
# +xuJKlQ5slvayA1VmXqHczsI5pgt6o3gMy4SKfXAL1QnIffIrE7aKLixqduWsqdC
# osnPGUFN4Ib5KpqjEWYw07t0MkvfY3v1mYovG8chr1m1rtxEPJdQcdeh0sVV42ne
# V8HR3jDA/czmTfsNv11P6Z0eGTgvvM9YBS7vDaBQNdrvCScc1bN+NR4Iuto229Nf
# j950iEkSoYICzjCCAjcCAQEwgfihgdCkgc0wgcoxCzAJBgNVBAYTAlVTMRMwEQYD
# VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy
# b3NvZnQgQ29ycG9yYXRpb24xJTAjBgNVBAsTHE1pY3Jvc29mdCBBbWVyaWNhIE9w
# ZXJhdGlvbnMxJjAkBgNVBAsTHVRoYWxlcyBUU1MgRVNOOkVBQ0UtRTMxNi1DOTFE
# MSUwIwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBTZXJ2aWNloiMKAQEwBwYF
# Kw4DAhoDFQC8U52UrCelTmFF2EckI3y8VfIzXKCBgzCBgKR+MHwxCzAJBgNVBAYT
# AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYD
# VQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBU
# aW1lLVN0YW1wIFBDQSAyMDEwMA0GCSqGSIb3DQEBBQUAAgUA4UaSFjAiGA8yMDE5
# MTAwODEyNDE1OFoYDzIwMTkxMDA5MTI0MTU4WjB3MD0GCisGAQQBhFkKBAExLzAt
# MAoCBQDhRpIWAgEAMAoCAQACAgKUAgH/MAcCAQACAhGZMAoCBQDhR+OWAgEAMDYG
# CisGAQQBhFkKBAIxKDAmMAwGCisGAQQBhFkKAwKgCjAIAgEAAgMHoSChCjAIAgEA
# AgMBhqAwDQYJKoZIhvcNAQEFBQADgYEAfcnp7lfZKT02/30e9aWxZ/+unsxqQ+7p
# qx2Zdk71WuMBWWCzW2YKGywC+ITs8G8CnguXGrRJwjp77k+wMr7QFjUBJ1+4bhTd
# gyMeXWAjtELWuWzDimag9fxBnFrwDsBRwi5a5H3Ol3eZGzGwsSy23BkWEPX+2Fr2
# JlTsGjOdKbExggMNMIIDCQIBATCBkzB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMK
# V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0
# IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0Eg
# MjAxMAITMwAAAPF0xdGu4z2bPQAAAAAA8TANBglghkgBZQMEAgEFAKCCAUowGgYJ
# KoZIhvcNAQkDMQ0GCyqGSIb3DQEJEAEEMC8GCSqGSIb3DQEJBDEiBCDMd+SOPtpY
# GcZF0blwBDqolnmWYcDZSkgEr9YYZqHOuTCB+gYLKoZIhvcNAQkQAi8xgeowgecw
# geQwgb0EIIXA2ZapAtn7wCKsR2oqb7xcoTciGtGmwnQMZWXfONh3MIGYMIGApH4w
# fDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1Jl
# ZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMd
# TWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTACEzMAAADxdMXRruM9mz0AAAAA
# APEwIgQgHbZWqnXTy8Ei3i5PQgFsxUs1j3BmemYph68emwftCpUwDQYJKoZIhvcN
# AQELBQAEggEAL2ehBlXdsw26PC6+zsyTMPPlL5qaf6aoJjRnRn+qlyVGCCd8aU9n
# sXcnBjj8JeTK6oj07OM8Bn3xGUM/Kio735i1cDMc+KGMZ8Ed9iq5lgpgomcnK5qj
# TGd37dO205FrvYs9xsFYVty/Teb7nSyXT4qtXJAEBGrZNKPHPxiiLGbxBlt5M3ar
# dp4O0P7vdZJhcSKAYcD8ITa9gjIYvn9Qp7XXacbLTVR1De1HxPbqTRKI28Kpbp5o
# JlAjSnwFVMtk1ZA9dBDaPUdLnEDpN1Zd0TU9zwlTUZ7aA1/73TQ+K8nE5vys2gyS
# GU2GgGXT8D3RkxMOKO9NQMCo8yL5fbEl4g==
# SIG # End signature block