Sync-ProvAzureSubscription.ps1

<#PSScriptInfo
 
.VERSION 1.2.2
 
.GUID ce5dc6af-fd0d-4d95-84bb-c90f06d242ec
 
.AUTHOR Dragan Arambasic @ Provance Technologies
 
.COMPANYNAME Provance Technologies
 
.COPYRIGHT Provance Technologies
 
.TAGS Provance PCC AzureAutomation Azure
 
.LICENSEURI
 
.PROJECTURI https://www.provance.com
 
.ICONURI http://assetdesk.com/Images_for_KB_Articles/PROVANCE_FavIcon_mstile-310x310.png
 
.EXTERNALMODULEDEPENDENCIES
 
.REQUIREDSCRIPTS
 
.EXTERNALSCRIPTDEPENDENCIES
 
.RELEASENOTES
 
.PRIVATEDATA
 
#>



<#
.DESCRIPTION
   This runbook synchronizes an Azure Subscription to Provance ITSM Instance.
 
.INPUTS
    SubscriptionConnArray - comma separated array of the Azure connection names (connection type = PCC-Azure-Subscription)
    ITSMConn - name of the Azure connection (connection type = PCC-Provance-ITSM)
 
.OUTPUTS
   Output messages for debug purposes.
    
   AUTHOR:Provance Technologies, Inc
   LASTEDIT: July 10, 2018
#>


param(
    [Parameter(Mandatory=$true)]
    [ValidateNotNullOrEmpty()]
    [String] $SubscriptionConnArray,

    [Parameter(Mandatory=$true)]
    [ValidateNotNullOrEmpty()]
    [String] $ITSMConn,

    [Parameter(Mandatory=$false)]
    [ValidateNotNullOrEmpty()]
    [String] $AutomationAccountConn = 'ThisAutomationAccount'
)

try
{   
    #################### S T A R T runbook ####################
    import-module Provance.CloudConnector

    $time = [DateTime]::UtcNow.ToString('u')
    Write-Output "Start runbook at: $time"             

    # get automation account info
    $thisAutomationAccount = Get-AutomationConnection -Name $AutomationAccountConn
    
    if ($thisAutomationAccount)
    {
        # get CRM user authentication context
        $itsmConnection = Get-AutomationConnection -Name $ITSMConn

        if ($itsmConnection)
        {
            # set the security protocol to TLS 1.2
            [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12

            # split string to array
            ForEach ($subscriptionConnName in ($SubscriptionConnArray.Split(","))) {
                # get subscription variables
                $subscriptionConnection = Get-AutomationConnection -Name $subscriptionConnName.Trim()

                if ($subscriptionConnection)
                {
                    $message = "Time: {0}, Processing Connection: {1}, Subscription Name: {2}, Id: {3}" -f [DateTime]::UtcNow.ToString('u'), $subscriptionConnName, $subscriptionConnection.SubscriptionName, $subscriptionConnection.SubscriptionId
                    Write-Output $message

                    $itsmConnectionObject = New-Object PSObject -Property $itsmConnection 
                    $subscriptionConnectionObject = New-Object PSObject -Property $subscriptionConnection 

                    $parameters = "Sync-ProvAzureSubscription -SubscriptionConnArray '{0}' -ITSMConn '{1}'" -f $subscriptionConnection, $ITSMConn

                    $job = New-Object PSObject -Property @{
                        JobId = $PsPrivateMetaData.JobId.Guid
                        RunbookName = "Sync-ProvAzureSubscription"
                        Parameters = $parameters
                        AAName = $thisAutomationAccount.AAName
                        AARGName = $thisAutomationAccount.AARGName
                        SubscriptionId = $thisAutomationAccount.SubscriptionId
                        SubscriptionName = $thisAutomationAccount.SubscriptionName
                        TenantFQDN = $thisAutomationAccount.TenantFQDN
                        TenantId = $thisAutomationAccount.TenantId
                    }

                    Sync-ProvAzureSubscription `
                        -Job $job `
                        -PccItsmConn $itsmConnectionObject `
                        -PccSubscriptionConn $subscriptionConnectionObject `
                        -Verbose
                }
                else
                {
                    throw "Name of the Azure subscription connection {0} is incorect" -f $subscriptionConnName.Trim()
                }
            }   
        }
        else
        {
            throw "Name of the ITSM connection {0} is incorect" -f $ITSMConn
        }
    }
    else
    {
        throw "Name of the Azure Automation Account connection {0} is incorect" -f $AutomationAccountConn
    }
} 
catch {
    $message = "Runbook Error: {0}" -f $_.Exception
    Write-Error -Message $message
    throw $_.Exception
}
finally {
    $time = [DateTime]::UtcNow.ToString('u')
    Write-Output "End of runbook at: $time"
}

# SIG # Begin signature block
# MIIaBQYJKoZIhvcNAQcCoIIZ9jCCGfICAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQURAfMZGMqIXQLOYTpUrLn+5Hm
# ti6gghSZMIIE0DCCA7igAwIBAgIBBzANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UE
# BhMCVVMxEDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAY
# BgNVBAoTEUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290
# IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTExMDUwMzA3MDAwMFoXDTMx
# MDUwMzA3MDAwMFowgbQxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMw
# EQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjEt
# MCsGA1UECxMkaHR0cDovL2NlcnRzLmdvZGFkZHkuY29tL3JlcG9zaXRvcnkvMTMw
# MQYDVQQDEypHbyBEYWRkeSBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IC0g
# RzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC54MsQ1K92vdSTYusw
# ZLiBCGzDBNliF44v/z5lz4/OYuY8UhzaFkVLVat4a2ODYpDOD2lsmcgaFItMzEUz
# 6ojcnqOvK/6AYZ15V8TPLvQ/MDxdR/yaFrzDN5ZBUY4RS1T4KL7QjL7wMDge87Am
# +GZHY23ecSZHjzhHU9FGHbTj3ADqRay9vHHZqm8A29vNMDp5T19MR/gd71vCxJ1g
# O7GyQ5HYpDNO6rPWJ0+tJYqlxvTV0KaudAVkV4i1RFXULSo6Pvi4vekyCgKUZMQW
# OlDxSq7neTOvDCAHf+jfBDnCaQJsY1L6d8EbyHSHyLmTGFBUNUtpTrw700kuH9zB
# 0lL7AgMBAAGjggEaMIIBFjAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB
# BjAdBgNVHQ4EFgQUQMK9J47MNIMwojPX+2yz8LQsgM4wHwYDVR0jBBgwFoAUOpqF
# BxBnKLbv9r0FQW4gwZTaD94wNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhho
# dHRwOi8vb2NzcC5nb2RhZGR5LmNvbS8wNQYDVR0fBC4wLDAqoCigJoYkaHR0cDov
# L2NybC5nb2RhZGR5LmNvbS9nZHJvb3QtZzIuY3JsMEYGA1UdIAQ/MD0wOwYEVR0g
# ADAzMDEGCCsGAQUFBwIBFiVodHRwczovL2NlcnRzLmdvZGFkZHkuY29tL3JlcG9z
# aXRvcnkvMA0GCSqGSIb3DQEBCwUAA4IBAQAIfmyTEMg4uJapkEv/oV9PBO9sPpyI
# BslQj6Zz91cxG7685C/b+LrTW+C05+Z5Yg4MotdqY3MxtfWoSKQ7CC2iXZDXtHwl
# TxFWMMS2RJ17LJ3lXubvDGGqv+QqG+6EnriDfcFDzkSnE3ANkR/0yBOtg2DZ2HKo
# cyQetawiDsoXiWJYRBuriSUBAA/NxBti21G00w9RKpv0vHP8ds42pM3Z2Czqrpv1
# KrKQ0U11GIo/ikGQI31bS/6kA1ibRrLDYGCD+H1QQc7CoZDDu+8CL9IVVO5EFdkK
# rqeKM+2xLXY2JtwE65/3YR8V3Idv7kaWKK2hJn0KCacuBKONvPi8BDABMIIFADCC
# A+igAwIBAgIBBzANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNV
# BAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJm
# aWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290
# IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTExMDUwMzA3MDAwMFoXDTMx
# MDUwMzA3MDAwMFowgcYxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMw
# EQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQgVGVjaG5vbG9n
# aWVzLCBJbmMuMTMwMQYDVQQLEypodHRwOi8vY2VydHMuc3RhcmZpZWxkdGVjaC5j
# b20vcmVwb3NpdG9yeS8xNDAyBgNVBAMTK1N0YXJmaWVsZCBTZWN1cmUgQ2VydGlm
# aWNhdGUgQXV0aG9yaXR5IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
# AoIBAQDlkGZL7PlGcakgg77pbL9KyUhpgXVObST2yxcT+LBxWYR6ayuFpDS1FuXL
# zOlBcCykLtb6Mn3hqN6UEKwxwcDYav9ZJ6t21vwLdGu4p64/xFT0tDFE3ZNWjKRM
# XpuJyySDm+JXfbfYEh/JhW300YDxUJuHrtQLEAX7J7oobRfpDtZNuTlVBv8KJAV+
# L8YdcmzUiymMV33a2etmGtNPp99/UsQwxaXJDgLFU793OGgGJMNmyDd+MB5FcSM1
# /5DYKp2N57CSTTx/KgqT3M0WRmX3YISLdkuRJ3MUkuDq7o8W6o0OPnYXv32JgIBE
# Q+ct4EMJddo26K3biTr1XRKOIwSDAgMBAAGjggEsMIIBKDAPBgNVHRMBAf8EBTAD
# AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUJUWBaFAmOD07LSy+zWrZtj2z
# ZmMwHwYDVR0jBBgwFoAUfAwyH6fZMH/EfWijYqihzqsHWycwOgYIKwYBBQUHAQEE
# LjAsMCoGCCsGAQUFBzABhh5odHRwOi8vb2NzcC5zdGFyZmllbGR0ZWNoLmNvbS8w
# OwYDVR0fBDQwMjAwoC6gLIYqaHR0cDovL2NybC5zdGFyZmllbGR0ZWNoLmNvbS9z
# ZnJvb3QtZzIuY3JsMEwGA1UdIARFMEMwQQYEVR0gADA5MDcGCCsGAQUFBwIBFito
# dHRwczovL2NlcnRzLnN0YXJmaWVsZHRlY2guY29tL3JlcG9zaXRvcnkvMA0GCSqG
# SIb3DQEBCwUAA4IBAQBWZcr+8z8KqJOLGMfeQ2kTNCC+Tl94qGuc22pNQdvBE+zc
# MQAiXvcAngzgNGU0+bE6TkjIEoGIXFs+CFN69xpk37hQYcxTUUApS8L0rjpf5Mqt
# JsxOYUPl/VemN3DOQyuwlMOS6eFfqhBJt2nk4NAfZKQrzR9voPiEJBjOeT2pkb9U
# GBOJmVQRDVXFJgt5T1ocbvlj2xSApAer+rKluYjdkf5lO6Sjeb6JTeHQsPTIFwwK
# lhR8Cbds4cLYVdQYoKpBaXAko7nv6VrcPuuUSvC33l8Odvr7+2kDRUBQ7nIMpBKG
# gc0T0U7EPMpODdIm8QC3tKai4W56gf0wrHofx1l7MIIFPDCCBCSgAwIBAgIJAKL+
# fJHNK7pMMA0GCSqGSIb3DQEBCwUAMIG0MQswCQYDVQQGEwJVUzEQMA4GA1UECBMH
# QXJpem9uYTETMBEGA1UEBxMKU2NvdHRzZGFsZTEaMBgGA1UEChMRR29EYWRkeS5j
# b20sIEluYy4xLTArBgNVBAsTJGh0dHA6Ly9jZXJ0cy5nb2RhZGR5LmNvbS9yZXBv
# c2l0b3J5LzEzMDEGA1UEAxMqR28gRGFkZHkgU2VjdXJlIENlcnRpZmljYXRlIEF1
# dGhvcml0eSAtIEcyMB4XDTE4MDkwNDIwMjUxOFoXDTE5MDkwNjE1NDIwMFowfTEL
# MAkGA1UEBhMCQ0ExDzANBgNVBAgTBlF1ZWJlYzERMA8GA1UEBxMIR2F0aW5lYXUx
# JDAiBgNVBAoTG1Byb3ZhbmNlIFRlY2hub2xvZ2llcywgSW5jLjEkMCIGA1UEAxMb
# UHJvdmFuY2UgVGVjaG5vbG9naWVzLCBJbmMuMIIBIjANBgkqhkiG9w0BAQEFAAOC
# AQ8AMIIBCgKCAQEA387wh3lw7AZ1+vuJBGK3wzkzttOb66ET+LVaIVfJwDfMKRcj
# iFAtF986YAJDW34jJWNBGdTbwstHiCkG73waXQRKpq8Y3rK/y5u/mq06iW5ZKRTx
# ZDWv8VgH69/l0pNWVJ6bVABhQz15Hv/+qIk+CpWu5eImdKdlvXHynoybhewIRRL5
# xwFCVQbFKozi0zzbgxX5go16HFcU+SyjkCmepB3Pks5B/r4nRCJRQCMvcBxWLlno
# os/lDRS841Ie807Vr1bddusm9I/V6iZxqzjWXa8YFmoPyqaEy4+dxreDtu79EfFp
# RIxt4LMOwFbYPg4qY5bDy38LMVmf/CMNp1DtiQIDAQABo4IBhTCCAYEwDAYDVR0T
# AQH/BAIwADATBgNVHSUEDDAKBggrBgEFBQcDAzAOBgNVHQ8BAf8EBAMCB4AwNQYD
# VR0fBC4wLDAqoCigJoYkaHR0cDovL2NybC5nb2RhZGR5LmNvbS9nZGlnMnM1LTQu
# Y3JsMF0GA1UdIARWMFQwSAYLYIZIAYb9bQEHFwIwOTA3BggrBgEFBQcCARYraHR0
# cDovL2NlcnRpZmljYXRlcy5nb2RhZGR5LmNvbS9yZXBvc2l0b3J5LzAIBgZngQwB
# BAEwdgYIKwYBBQUHAQEEajBoMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5nb2Rh
# ZGR5LmNvbS8wQAYIKwYBBQUHMAKGNGh0dHA6Ly9jZXJ0aWZpY2F0ZXMuZ29kYWRk
# eS5jb20vcmVwb3NpdG9yeS9nZGlnMi5jcnQwHwYDVR0jBBgwFoAUQMK9J47MNIMw
# ojPX+2yz8LQsgM4wHQYDVR0OBBYEFPKv/IzDT4ezLofdBdwMCaUobFX9MA0GCSqG
# SIb3DQEBCwUAA4IBAQCs/8STld+I5PNzULdArbNaYtLLYADoWbAlijYIyyTJH24b
# Y+1Li2NIWC2e7ojI7vlKdB8cYnkfwJhKvTfzvNWPGUkmkUPMXQCgC+l77cloxsth
# OiN9xsgqtDGoYOSkLV1RC2JtS6P58wpOtZHTE0H1S3XKuk81/XOyW5XpgmA0wnbs
# 1JPrSDRpi4IrIpJlrTbmEmIQvqko9OnuuwdoiWnPbzQ850Zox/LPURLUMJeo/ro2
# 3jxg2W/3oZ1kB64eCceYpk0JahO3ez+BKIgT6r9x+wf7PsUd4H4tVdcyW1aF/Ckp
# /eL/Xyn+qCKnLLgcPeuxTyvHUJJTGNBT2sngbmQTMIIFfTCCBGWgAwIBAgIJAO+V
# wvSA4xuTMA0GCSqGSIb3DQEBCwUAMIHGMQswCQYDVQQGEwJVUzEQMA4GA1UECBMH
# QXJpem9uYTETMBEGA1UEBxMKU2NvdHRzZGFsZTElMCMGA1UEChMcU3RhcmZpZWxk
# IFRlY2hub2xvZ2llcywgSW5jLjEzMDEGA1UECxMqaHR0cDovL2NlcnRzLnN0YXJm
# aWVsZHRlY2guY29tL3JlcG9zaXRvcnkvMTQwMgYDVQQDEytTdGFyZmllbGQgU2Vj
# dXJlIENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTE3MTExNDA3MDAwMFoX
# DTIyMTExNDA3MDAwMFowgYcxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25h
# MRMwEQYDVQQHEwpTY290dHNkYWxlMSQwIgYDVQQKExtTdGFyZmllbGQgVGVjaG5v
# bG9naWVzLCBMTEMxKzApBgNVBAMTIlN0YXJmaWVsZCBUaW1lc3RhbXAgQXV0aG9y
# aXR5IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDm730Ku3SP
# yEahtiafyThSMSvGVFw6JhBrYkQYOcH10SjiERRWLn3DD51isWZDIrkxmTdy/zEt
# 2m0qf2odGk7KRPeO7OMlEbeGS4Cc11H7OvxG6VSADFbYTkrgGREeDgFxPA8WzeaJ
# YFVwJq7kcoFSGN797hHOoYsd/GkD/iqnEjNfYRUcKdaH9b/Yzjwjte6uba5Iepls
# Nx0eXWU+zy7bff21Qb1HQ0P0VTuYCbviRJknhKOZKSGuNhQ9CFDzMQbcbsbyx3+o
# v/iMaIGp7NHNlk/4hR1rFFmMwPRT/m123J8xGpoYBPPMOHyk15bF/1laR3kAr3fh
# bj0OQoUOUFIBAgMBAAGjggGpMIIBpTAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQE
# AwIGwDAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDAdBgNVHQ4EFgQUnc8cgP4K1qL8
# WBg+p9NUQO7WFGEwHwYDVR0jBBgwFoAUJUWBaFAmOD07LSy+zWrZtj2zZmMwgYQG
# CCsGAQUFBwEBBHgwdjAqBggrBgEFBQcwAYYeaHR0cDovL29jc3Auc3RhcmZpZWxk
# dGVjaC5jb20vMEgGCCsGAQUFBzAChjxodHRwOi8vY3JsLnN0YXJmaWVsZHRlY2gu
# Y29tL3JlcG9zaXRvcnkvc2ZfaXNzdWluZ19jYS1nMi5jcnQwVAYDVR0fBE0wSzBJ
# oEegRYZDaHR0cDovL2NybC5zdGFyZmllbGR0ZWNoLmNvbS9yZXBvc2l0b3J5L21h
# c3RlcnN0YXJmaWVsZDJpc3N1aW5nLmNybDBQBgNVHSAESTBHMEUGC2CGSAGG/W4B
# BxcCMDYwNAYIKwYBBQUHAgEWKGh0dHA6Ly9jcmwuc3RhcmZpZWxkdGVjaC5jb20v
# cmVwb3NpdG9yeS8wDQYJKoZIhvcNAQELBQADggEBAFJGgfPKVmOa5BUYGkgzgZUH
# APDVCxA0oDWH0E5+lQB0DlDHgv5G6O4Ju2dqL9TAJfhRAS0i+PaXwLOWbz/yxZc9
# jpCNDbVWIRIZdxzXvR7dOSvRPgWFxW1Msip51ys9TQV2ybVAyA+CjVwuNOALYWrT
# 2ZhQBEp47lbsLRag4VwYpydVkbfKa4Egad+0V0SHQrWxwnMaj/7PT+b8WilhTxTR
# XNWlxRlQ+9wla5Sqwn5PwafeJwv6eGS6nKC00cRPDQ6WDCo46VhOjkmv50J+o93p
# 9LM2hkFuoRMrR5O3D8Zcg1jbab4rTDT+f+Wn5eYn9PwbYB7e4WMjRafylm5E3Hox
# ggTWMIIE0gIBATCBwjCBtDELMAkGA1UEBhMCVVMxEDAOBgNVBAgTB0FyaXpvbmEx
# EzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu
# MS0wKwYDVQQLEyRodHRwOi8vY2VydHMuZ29kYWRkeS5jb20vcmVwb3NpdG9yeS8x
# MzAxBgNVBAMTKkdvIERhZGR5IFNlY3VyZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkg
# LSBHMgIJAKL+fJHNK7pMMAkGBSsOAwIaBQCgeDAYBgorBgEEAYI3AgEMMQowCKAC
# gAChAoAAMBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQBgjcCAQsx
# DjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3DQEJBDEWBBSZiV7R6AEbRFQGLU69UcHK
# fHVMBDANBgkqhkiG9w0BAQEFAASCAQCeIZiqJNfJAwrJEZG4nqu9/pv/dj8DSLS8
# dt/GEeG3c3V/4KmuzmdKoaqVqCTQh39eeln1oDocaNTqFTRoMsPMYa25NI0sifzG
# Hu7siIe9hqP8iKizeIlB5aTa0z3wwtaH4HAr04/2p0nfXdQP6d8oixEW+vjzo1MD
# K8sBAnj/HahoqlPX8ANZrwBytxs+/+xHSqgflrx70O5fVpIjP2lRhfZzuWm/G3ML
# XfFUq3rXTZGesv1XwRtoSFowCWfZQ59CoZ9REHc/en9CXJQyiyzeqD/d+e4z3va/
# SpKUjaPlq3SB84I4DWC8dKBaC5mZ52nfF1ELx7YlJwP26u5mjDeIoYICbjCCAmoG
# CSqGSIb3DQEJBjGCAlswggJXAgEBMIHUMIHGMQswCQYDVQQGEwJVUzEQMA4GA1UE
# CBMHQXJpem9uYTETMBEGA1UEBxMKU2NvdHRzZGFsZTElMCMGA1UEChMcU3RhcmZp
# ZWxkIFRlY2hub2xvZ2llcywgSW5jLjEzMDEGA1UECxMqaHR0cDovL2NlcnRzLnN0
# YXJmaWVsZHRlY2guY29tL3JlcG9zaXRvcnkvMTQwMgYDVQQDEytTdGFyZmllbGQg
# U2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyAgkA75XC9IDjG5MwCQYF
# Kw4DAhoFAKBdMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkF
# MQ8XDTE4MTAxNTE5MDgwN1owIwYJKoZIhvcNAQkEMRYEFHrB37nVzCFeqQpkxYWv
# a1DA4oW7MA0GCSqGSIb3DQEBAQUABIIBAMjZmq6J3KnqfsxyuOhIFKJgrkrzRKhG
# Ew37vc5q1VQbM8Ab12lmFu/DgkyEb7OH2ImD+3Yu0UUqXU6UXhOr+mnEhBO/IO7G
# 6HtbFUt79lbYKdQRHiOvFoBLBu4U7/s0ptLmILO9Lew4cUJRoaB5SfpGlbX3VGzJ
# n4umJpCx1ZeKsS9zYhv+S0yDvZ5srsTNyN2fNreqAyrGj61MTGs4S7H0LQWwsGGb
# Ut+lNKvIXY5BbvN1iUO4egyTVg/1cEJSlgM6DYdz2novFxi+ZA1sNs0rJTZST9EO
# 8mug+asM+1k2L+ENPn7YBX6DAMU/awxM0yXbRl6eQoPwP/S35v/LZNY=
# SIG # End signature block