functions/Get-Installer.ps1

<#
    .SYNOPSIS
    Download the Server-Eye msi Files
 
    .DESCRIPTION
    Download the Server-Eye msi Files
 
    .PARAMETER path
    The path were the msi Files should be placed, if not given the current path in the PowerShell seesion will be used.
 
    .EXAMPLE
    Get-SEInstaller
         
        ___ ___
        / __| ___ _ ___ _____ _ _ ___| __| _ ___
        \__ \/ -_) '_\ V / -_) '_|___| _| || / -_)
        |___/\___|_| \_/\___|_| |___\_, \___|
                                        |__/
    getting current Server-Eye version... done
    current version: 808
    downloading ServerEye.Vendor... done
    downloading ServerEye.Core... done
 
    .EXAMPLE
    Get-SEInstaller -Path C:\temp\
        ___ ___
        / __| ___ _ ___ _____ _ _ ___| __| _ ___
        \__ \/ -_) '_\ V / -_) '_|___| _| || / -_)
        |___/\___|_| \_/\___|_| |___\_, \___|
                                        |__/
    getting current Server-Eye version... done
    current version: 808
    downloading ServerEye.Vendor... done
    downloading ServerEye.Core... done
 
    .LINK
    https://api.server-eye.de/docs/2/
 
#>

function Get-Installer {

    [CmdletBinding()]
    Param (
        [string]
        $Path
    )
    
    if ($Path -eq "") {
        $Path = (Resolve-Path .\).Path
    }


    
    $SE_baseDownloadUrl = "https://occ.server-eye.de/download"
    $SE_cloudIdentifier = "se"
    $SE_vendor = "Vendor.ServerEye"
        
    $oldBack = $host.privatedata.ProgressBackgroundColor;
    $oldFore = $host.privatedata.ProgressForegroundColor;
    
    $host.privatedata.ProgressForegroundColor = "DarkGray";
    $host.privatedata.ProgressBackgroundColor = "Gray";
    
    $AsciiArt_ServerEye = @"
      ___ ___
     / __| ___ _ ___ _____ _ _ ___| __| _ ___
     \__ \/ -_) '_\ V / -_) '_|___| _| || / -_)
     |___/\___|_| \_/\___|_| |___\_, \___|
                                      |__/
"@

    Write-Host $AsciiArt_ServerEye -ForegroundColor DarkYellow

    Write-Host " getting current Server-Eye version... " -NoNewLine
    $wc = new-object system.net.webclient
    $curVersion = $wc.DownloadString("$SE_baseDownloadUrl/$SE_cloudIdentifier/currentVersion")
    Write-Host "done" -ForegroundColor Green

    Write-Host " current version: " -NoNewLine
    Write-Host "$curVersion" -ForegroundColor DarkGray
    
    Write-Host " downloading ServerEye.Vendor... " -NoNewline
    DownloadSEFile "$SE_baseDownloadUrl/vendor/$SE_vendor/Vendor.msi"  "$Path/Vendor.msi"
    Write-Host "done" -ForegroundColor Green
    
    Write-Host " downloading ServerEye.Core... " -NoNewline
    DownloadSEFile "$SE_baseDownloadUrl/$curVersion/ServerEye.msi" "$Path/ServerEye.msi"
    Write-Host "done" -ForegroundColor Green
    
}

function DownloadSEFile {
    [CmdletBinding()]
    Param (
        [string]
        $Url,
          
        [string]
        $TargetFile
    )
      
    try {
        $uri = New-Object "System.Uri" "$url"
        $request = [System.Net.HttpWebRequest]::Create($uri)
        $request.set_Timeout(15000) #15 second timeout
        $response = $request.GetResponse()
        $totalLength = [System.Math]::Floor($response.get_ContentLength() / 1024)
        $responseStream = $response.GetResponseStream()
        $targetStream = New-Object -TypeName System.IO.FileStream -ArgumentList $targetFile, Create
        $buffer = new-object byte[] 10KB
        $count = $responseStream.Read($buffer, 0, $buffer.length)
        $downloadedBytes = $count
          
        while ($count -gt 0) {
            $targetStream.Write($buffer, 0, $count)
            $count = $responseStream.Read($buffer, 0, $buffer.length)
            $downloadedBytes = $downloadedBytes + $count
            Write-Progress -activity "Downloading file '$($url.split('/') | Select-Object -Last 1)'" -status "Downloaded ($([System.Math]::Floor($downloadedBytes/1024))K of $($totalLength)K): " -PercentComplete ((([System.Math]::Floor($downloadedBytes / 1024)) / $totalLength) * 100)
        }
          
        Write-Progress -activity "Finished downloading file '$($url.split('/') | Select-Object -Last 1)'" -Status "Done" -Completed
          
        $targetStream.Flush()
        $targetStream.Close()
        $targetStream.Dispose()
        $responseStream.Dispose()
          
    }
    catch {
          
        Write-Host -Message "Error downloading: $Url - Interrupting execution - $($_.Exception.Message)" -EventID 666 -EntryType Error
    }
} 
# SIG # Begin signature block
# MIIlRQYJKoZIhvcNAQcCoIIlNjCCJTICAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUyMb6ypUlbEAeE3rexn/nQvpf
# 6nuggh8uMIIFVTCCBD2gAwIBAgIQNi6d2QZSadlgoaqpVGQMODANBgkqhkiG9w0B
# AQsFADB8MQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVy
# MRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxJDAi
# BgNVBAMTG1NlY3RpZ28gUlNBIENvZGUgU2lnbmluZyBDQTAeFw0xOTAzMTQwMDAw
# MDBaFw0yMTAzMTMyMzU5NTlaMIGnMQswCQYDVQQGEwJERTEOMAwGA1UEEQwFNjY1
# NzExETAPBgNVBAgMCFNhYXJsYW5kMRIwEAYDVQQHDAlFcHBlbGJvcm4xGTAXBgNV
# BAkMEEtvc3NtYW5zdHJhc3NlIDcxIjAgBgNVBAoMGUtyw6RtZXIgSVQgU29sdXRp
# b25zIEdtYkgxIjAgBgNVBAMMGUtyw6RtZXIgSVQgU29sdXRpb25zIEdtYkgwggEi
# MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCz5/2ukRz5+MhkBio6esyRFg6h
# W1ehLJre46pO2p19epAe6/gCnjQlMXIAM2Ydpsnt8Z8LEUKrVrGGODQvLQ6fsrNF
# 4FDPhj4zc5H5wHI/SOMBu1u6DNtWvJKJ/UBfnkk9CbrRzkzGeSVZ81TiXT+J43+V
# NhXtJ9jX19tcLE3VnyaCQFn4psVwF6zfQPYOyhP+7iRvSgzEGM0vz5oi9Sp4Uqbw
# sus2e4oZ+fT74iCFj9fYXeP/o1fKOiV2iFbk4cVMBIw1hNCNkW9d88C7yivtH4E5
# 6mYYXl5SOk2k4KOACaPjpEI4IZfcoJ/yLKFjzyzyg2u90poEJ7SZinNScFAJAgMB
# AAGjggGlMIIBoTAfBgNVHSMEGDAWgBQO4TqoUzox1Yq+wbutZxoDha00DjAdBgNV
# HQ4EFgQUkgffFDW7uWc8B0iUnOE4laGEiJcwDgYDVR0PAQH/BAQDAgeAMAwGA1Ud
# EwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwMwEQYJYIZIAYb4QgEBBAQDAgQQ
# MEAGA1UdIAQ5MDcwNQYMKwYBBAGyMQECAQMCMCUwIwYIKwYBBQUHAgEWF2h0dHBz
# Oi8vc2VjdGlnby5jb20vQ1BTMEMGA1UdHwQ8MDowOKA2oDSGMmh0dHA6Ly9jcmwu
# c2VjdGlnby5jb20vU2VjdGlnb1JTQUNvZGVTaWduaW5nQ0EuY3JsMHMGCCsGAQUF
# BwEBBGcwZTA+BggrBgEFBQcwAoYyaHR0cDovL2NydC5zZWN0aWdvLmNvbS9TZWN0
# aWdvUlNBQ29kZVNpZ25pbmdDQS5jcnQwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3Nw
# LnNlY3RpZ28uY29tMB0GA1UdEQQWMBSBEmluZm9Aa3JhZW1lci1pdC5kZTANBgkq
# hkiG9w0BAQsFAAOCAQEABItcE+38EnSo1FiIAtLUfD1pLKcYEjGDoIlsgWuruo1+
# Zgh0+di0uubTvL3p5JKvysy4bydzKyxLiAbU+2M2c6t1NIaZ6yyvxp3Y1RQf72II
# cDqrIprzmfbEKm2VW1wAgqggl3wzsI9hdFNJxIc6/DmB3Z+U63g8aV4yheqifoXE
# tTKLy6wr4OmSMnxp133BOOJ+SwshgyOAkWEOS7I0zz6w7ojTMOizwBP7ExUYPc+N
# KiqbNthrZ3MitfVn2BdAQrq738yd7AZvKKWU8MJjQT5rNY131V4L873FE7ecUi82
# 1egW8R1y7+Y934/RIBRMKFD+KqQG98QMyG6zw92RbDCCBd4wggPGoAMCAQICEAH9
# bTD8o8pRqBu8ZA41Ay0wDQYJKoZIhvcNAQEMBQAwgYgxCzAJBgNVBAYTAlVTMRMw
# EQYDVQQIEwpOZXcgSmVyc2V5MRQwEgYDVQQHEwtKZXJzZXkgQ2l0eTEeMBwGA1UE
# ChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMS4wLAYDVQQDEyVVU0VSVHJ1c3QgUlNB
# IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEwMDIwMTAwMDAwMFoXDTM4MDEx
# ODIzNTk1OVowgYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5MRQw
# EgYDVQQHEwtKZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3
# b3JrMS4wLAYDVQQDEyVVU0VSVHJ1c3QgUlNBIENlcnRpZmljYXRpb24gQXV0aG9y
# aXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAgBJlFzYOw9sIs9Cs
# Vw127c0n00ytUINh4qogTQktZAnczomfzD2p7PbPwdzx07HWezcoEStH2jnGvDoZ
# tF+mvX2do2NCtnbyqTsrkfjib9DsFiCQCT7i6HTJGLSR1GJk23+jBvGIGGqQIjy8
# /hPwhxR79uQfjtTkUcYRZ0YIUcuGFFQ/vDP+fmyc/xadGL1RjjWmp2bIcmfbIWax
# 1Jt4A8BQOujM8Ny8nkz+rwWWNR9XWrf/zvk9tyy29lTdyOcSOk2uTIq3XJq0tyA9
# yn8iNK5+O2hmAUTnAU5GU5szYPeUvlM3kHND8zLDU+/bqv50TmnHa4xgk97Exwzf
# 4TKuzJM7UXiVZ4vuPVb+DNBpDxsP8yUmazNt925H+nND5X4OpWaxKXwyhGNVicQN
# wZNUMBkTrNN9N6frXTpsNVzbQdcS2qlJC9/YgIoJk2KOtWbPJYjNhLixP6Q5D9kC
# nusSTJV882sFqV4Wg8y4Z+LoE53MW4LTTLPtW//e5XOsIzstAL81VXQJSdhJWBp/
# kjbmUZIO8yZ9HE0XvMnsQybQv0FfQKlERPSZ51eHnlAfV1SoPv10Yy+xUGUJ5lhC
# LkMaTLTwJUdZ+gQek9QmRkpQgbLevni3/GcV4clXhB4PY9bpYrrWX1Uu6lzGKAgE
# JTm4Diup8kyXHAc/DVL17e8vgg8CAwEAAaNCMEAwHQYDVR0OBBYEFFN5v1qqK0rP
# VIDh2JvAnfKyA2bLMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0G
# CSqGSIb3DQEBDAUAA4ICAQBc1HwNz/cBfUGZZQxzxVKfy/jPmQZ/G9pDFZ+eAlVX
# lhTxUjwnh5Qo7R86ATeidvxTUMCEm8ZrTrqMIU+ijlVikfNpFdi8iOPEqgv976jp
# S1UqBiBtVXgpGe5fMFxLJBFV/ySabl4qK+4LTZ9/9wE4lBSVQwcJ+2Cp7hyrEoyg
# ml6nmGpZbYs/CPvI0UWvGBVkkBIPcyguxeIkTvxY7PD0Rf4is+svjtLZRWEFwZdv
# qHZyj4uMNq+/DQXOcY3mpm8fbKZxYsXY0INyDPFnEYkMnBNMcjTfvNVx36px3eG5
# bIw8El1l2r1XErZDa//l3k1mEVHPma7sF7bocZGM3kn+3TVxohUnlBzPYeMmu2+j
# ZyUhXebdHQsuaBs7gq/sg2eF1JhRdLG5mYCJ/394GVx5SmAukkCuTDcqLMnHYsgO
# Xfc2W8rgJSUBtN0aB5x3AD/Q3NXsPdT6uz/MhdZvf6kt37kC9/WXmrU12sNnsIdK
# qSieI47/XCdr4bBP8wfuAC7UWYfLUkGV6vRH1+5kQVV8jVkCld1incK57loodISl
# m7eQxwwH3/WJNnQy1ijBsLAL4JxMwxzW/ONptUdGgS+igqvTY0RwxI3/LTO6rY97
# tXCIrj4Zz0Ao2PzIkLtdmSL1UuZYxR+IMUPuiB3Xxo48Q2odpxjefT0W8WL5ypCo
# /TCCBfUwggPdoAMCAQICEB2iSDBvmyYY0ILgln0z02owDQYJKoZIhvcNAQEMBQAw
# gYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5MRQwEgYDVQQHEwtK
# ZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMS4wLAYD
# VQQDEyVVU0VSVHJ1c3QgUlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTE4
# MTEwMjAwMDAwMFoXDTMwMTIzMTIzNTk1OVowfDELMAkGA1UEBhMCR0IxGzAZBgNV
# BAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYGA1UE
# ChMPU2VjdGlnbyBMaW1pdGVkMSQwIgYDVQQDExtTZWN0aWdvIFJTQSBDb2RlIFNp
# Z25pbmcgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCGIo0yhXoY
# n0nwli9jCB4t3HyfFM/jJrYlZilAhlRGdDFixRDtsocnppnLlTDAVvWkdcapDlBi
# pVGREGrgS2Ku/fD4GKyn/+4uMyD6DBmJqGx7rQDDYaHcaWVtH24nlteXUYam9Cfl
# fGqLlR5bYNV+1xaSnAAvaPeX7Wpyvjg7Y96Pv25MQV0SIAhZ6DnNj9LWzwa0VwW2
# TqE+V2sfmLzEYtYbC43HZhtKn52BxHJAteJf7wtF/6POF6YtVbC3sLxUap28jVZT
# xvC6eVBJLPcDuf4vZTXyIuosB69G2flGHNyMfHEo8/6nxhTdVZFuihEN3wYklX0P
# p6F8OtqGNWHTAgMBAAGjggFkMIIBYDAfBgNVHSMEGDAWgBRTeb9aqitKz1SA4dib
# wJ3ysgNmyzAdBgNVHQ4EFgQUDuE6qFM6MdWKvsG7rWcaA4WtNA4wDgYDVR0PAQH/
# BAQDAgGGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0lBBYwFAYIKwYBBQUHAwMG
# CCsGAQUFBwMIMBEGA1UdIAQKMAgwBgYEVR0gADBQBgNVHR8ESTBHMEWgQ6BBhj9o
# dHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVNFUlRydXN0UlNBQ2VydGlmaWNhdGlv
# bkF1dGhvcml0eS5jcmwwdgYIKwYBBQUHAQEEajBoMD8GCCsGAQUFBzAChjNodHRw
# Oi8vY3J0LnVzZXJ0cnVzdC5jb20vVVNFUlRydXN0UlNBQWRkVHJ1c3RDQS5jcnQw
# JQYIKwYBBQUHMAGGGWh0dHA6Ly9vY3NwLnVzZXJ0cnVzdC5jb20wDQYJKoZIhvcN
# AQEMBQADggIBAE1jUO1HNEphpNveaiqMm/EAAB4dYns61zLC9rPgY7P7YQCImhtt
# EAcET7646ol4IusPRuzzRl5ARokS9At3WpwqQTr81vTr5/cVlTPDoYMot94v5JT3
# hTODLUpASL+awk9KsY8k9LOBN9O3ZLCmI2pZaFJCX/8E6+F0ZXkI9amT3mtxQJmW
# unjxucjiwwgWsatjWsgVgG10Xkp1fqW4w2y1z99KeYdcx0BNYzX2MNPPtQoOCwR/
# oEuuu6Ol0IQAkz5TXTSlADVpbL6fICUQDRn7UJBhvjmPeo5N9p8OHv4HURJmgyYZ
# SJXOSsnBf/M6BZv5b9+If8AjntIeQ3pFMcGcTanwWbJZGehqjSkEAnd8S0vNcL46
# slVaeD68u28DECV3FTSK+TbMQ5Lkuk/xYpMoJVcp+1EZx6ElQGqEV8aynbG8HAra
# fGd+fS7pKEwYfsR7MUFxmksp7As9V1DSyt39ngVR5UR43QHesXWYDVQk/fBO4+L4
# g71yuss9Ou7wXheSaG3IYfmm8SoKC6W59J7umDIFhZ7r+YMp08Ysfb06dy6LN0Kg
# aoLtO0qqlBCk4Q34F8W2WnkzGJLjtXX4oemOCiUe5B7xn1qHI/+fpFGe+zmAEc3b
# tcSnqIBv5VPU4OOiwtJbGvoyJi1qV3AcPKRYLqPzW0sH3DJZ84enGm1YMIIG7DCC
# BNSgAwIBAgIQMA9vrN1mmHR8qUY2p3gtuTANBgkqhkiG9w0BAQwFADCBiDELMAkG
# A1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBD
# aXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVT
# RVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTkwNTAyMDAw
# MDAwWhcNMzgwMTE4MjM1OTU5WjB9MQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl
# YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0
# aWdvIExpbWl0ZWQxJTAjBgNVBAMTHFNlY3RpZ28gUlNBIFRpbWUgU3RhbXBpbmcg
# Q0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDIGwGv2Sx+iJl9AZg/
# IJC9nIAhVJO5z6A+U++zWsB21hoEpc5Hg7XrxMxJNMvzRWW5+adkFiYJ+9UyUnku
# yWPCE5u2hj8BBZJmbyGr1XEQeYf0RirNxFrJ29ddSU1yVg/cyeNTmDoqHvzOWEnT
# v/M5u7mkI0Ks0BXDf56iXNc48RaycNOjxN+zxXKsLgp3/A2UUrf8H5VzJD0BKLwP
# DU+zkQGObp0ndVXRFzs0IXuXAZSvf4DP0REKV4TJf1bgvUacgr6Unb+0ILBgfrhN
# 9Q0/29DqhYyKVnHRLZRMyIw80xSinL0m/9NTIMdgaZtYClT0Bef9Maz5yIUXx7gp
# GaQpL0bj3duRX58/Nj4OMGcrRrc1r5a+2kxgzKi7nw0U1BjEMJh0giHPYla1IXMS
# Hv2qyghYh3ekFesZVf/QOVQtJu5FGjpvzdeE8NfwKMVPZIMC1Pvi3vG8Aij0bdon
# igbSlofe6GsO8Ft96XZpkyAcSpcsdxkrk5WYnJee647BeFbGRCXfBhKaBi2fA179
# g6JTZ8qx+o2hZMmIklnLqEbAyfKm/31X2xJ2+opBJNQb/HKlFKLUrUMcpEmLQTkU
# Ax4p+hulIq6lw02C0I3aa7fb9xhAV3PwcaP7Sn1FNsH3jYL6uckNU4B9+rY5WDLv
# bxhQiddPnTO9GrWdod6VQXqngwIDAQABo4IBWjCCAVYwHwYDVR0jBBgwFoAUU3m/
# WqorSs9UgOHYm8Cd8rIDZsswHQYDVR0OBBYEFBqh+GEZIA/DQXdFKI7RNV8GEgRV
# MA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMBMGA1UdJQQMMAoG
# CCsGAQUFBwMIMBEGA1UdIAQKMAgwBgYEVR0gADBQBgNVHR8ESTBHMEWgQ6BBhj9o
# dHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVNFUlRydXN0UlNBQ2VydGlmaWNhdGlv
# bkF1dGhvcml0eS5jcmwwdgYIKwYBBQUHAQEEajBoMD8GCCsGAQUFBzAChjNodHRw
# Oi8vY3J0LnVzZXJ0cnVzdC5jb20vVVNFUlRydXN0UlNBQWRkVHJ1c3RDQS5jcnQw
# JQYIKwYBBQUHMAGGGWh0dHA6Ly9vY3NwLnVzZXJ0cnVzdC5jb20wDQYJKoZIhvcN
# AQEMBQADggIBAG1UgaUzXRbhtVOBkXXfA3oyCy0lhBGysNsqfSoF9bw7J/RaoLlJ
# WZApbGHLtVDb4n35nwDvQMOt0+LkVvlYQc/xQuUQff+wdB+PxlwJ+TNe6qAcJlhc
# 87QRD9XVw+K81Vh4v0h24URnbY+wQxAPjeT5OGK/EwHFhaNMxcyyUzCVpNb0llYI
# uM1cfwGWvnJSajtCN3wWeDmTk5SbsdyybUFtZ83Jb5A9f0VywRsj1sJVhGbks8Vm
# Bvbz1kteraMrQoohkv6ob1olcGKBc2NeoLvY3NdK0z2vgwY4Eh0khy3k/ALWPncE
# vAQ2ted3y5wujSMYuaPCRx3wXdahc1cFaJqnyTdlHb7qvNhCg0MFpYumCf/RoZSm
# Tqo9CfUFbLfSZFrYKiLCS53xOV5M3kg9mzSWmglfjv33sVKRzj+J9hyhtal1H3G/
# W0NdZT1QgW6r8NDT/LKzH7aZlib0PHmLXGTMze4nmuWgwAxyh8FuTVrTHurwROYy
# bxzrF06Uw3hlIDsPQaof6aFBnf6xuKBlKjTg3qj5PObBMLvAoGMs/FwWAKjQxH/q
# EZ0eBsambTJdtDgJK0kHqv3sMNrxpy/Pt/360KOE2See+wFmd7lWEOEgbsausfm2
# usg1XTN2jvF8IAwqd661ogKGuinutFoAsYyr4/kKyVRd1LlqdJ69SK6YMIIHBjCC
# BO6gAwIBAgIQPRo1cjAVgmMw0BNxfoJBCDANBgkqhkiG9w0BAQwFADB9MQswCQYD
# VQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdT
# YWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxJTAjBgNVBAMTHFNlY3Rp
# Z28gUlNBIFRpbWUgU3RhbXBpbmcgQ0EwHhcNMTkwNTAyMDAwMDAwWhcNMzAwODAx
# MjM1OTU5WjCBhDELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl
# c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEYMBYGA1UECgwPU2VjdGlnbyBMaW1pdGVk
# MSwwKgYDVQQDDCNTZWN0aWdvIFJTQSBUaW1lIFN0YW1waW5nIFNpZ25lciAjMTCC
# AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMtRUP9W/vx4Y3ABk1qeGPQ7
# U/YHryFs9aIPfR1wLYR0SIucipUFPVmE+ZGAeVEs2Yq3wQuaugqKzWZPA4sBuzDK
# q73bwE8SXvwKzOJFsAE4irtN59QcVJjtOVjPW8IvRZgxCvk1OLgxLm20Hjly4bgq
# vp+MjBqlRq4LK0yZ/ixL/Ci5IjpmF9CqVoohwPOWJLTQhSZruvBvZJh5pq29XNhT
# aysK1nKKhUbjDRgG2sZ7QVY2mxU+8WoRoPdm9RjQgFVjh2hm6w55VYJco+1JuHGG
# npM3sGuj6mJso66W6Ln9i6vG9llbADxXIBgtcAOnnO+S63mhx13sfLSPS9/rXfyj
# IN2SOOVqUTprhZxMoJgIaVsG5yoZ0JWTiztrigUJKdjW2tvjcvpcSi97FVaGMr9/
# BQmdLSrPUOHmYSDbxwaAXE4URr6uV3Giqmwwkxx+d8sG6VfNkfXVM3Ic4drKbuvz
# D+x5W7snnuge/i/yu3/p5dBn67gNfKQrWQOLle0iKM36LDvHFhGv49axUGdpxY71
# edCt/4fM+H+q+aLtYfjIjWnasfRRketnV9FkEetkywO9SVU6RUMYLCVs0S8MLW/1
# QTUkoPJjWRZf2aTpLE7buzESxm34W24D3MsVjxuNcuzbDxWQ1hJO7uIAMSWTNW9q
# W6USY0ABirlpiDqIuA8ZAgMBAAGjggF4MIIBdDAfBgNVHSMEGDAWgBQaofhhGSAP
# w0F3RSiO0TVfBhIEVTAdBgNVHQ4EFgQUb02GB9gyJ54sKdLQEwOAgd0FgykwDgYD
# VR0PAQH/BAQDAgbAMAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUH
# AwgwQAYDVR0gBDkwNzA1BgwrBgEEAbIxAQIBAwgwJTAjBggrBgEFBQcCARYXaHR0
# cHM6Ly9zZWN0aWdvLmNvbS9DUFMwRAYDVR0fBD0wOzA5oDegNYYzaHR0cDovL2Ny
# bC5zZWN0aWdvLmNvbS9TZWN0aWdvUlNBVGltZVN0YW1waW5nQ0EuY3JsMHQGCCsG
# AQUFBwEBBGgwZjA/BggrBgEFBQcwAoYzaHR0cDovL2NydC5zZWN0aWdvLmNvbS9T
# ZWN0aWdvUlNBVGltZVN0YW1waW5nQ0EuY3J0MCMGCCsGAQUFBzABhhdodHRwOi8v
# b2NzcC5zZWN0aWdvLmNvbTANBgkqhkiG9w0BAQwFAAOCAgEAwGjts9jUUJvv03XL
# Dzv3JNN6N0WNLO8W+1GpLB+1JbWKn10LwhsgdI1mDzbLqvY2DQ9+j0tKdENlrA0q
# 9grta23FCTjtABv45dymCkAFR++Eygm8Q2aDv5/t24490UFksXACLQNXWxhvHCzL
# HrIA6LoJL1uBBDW5qWNtjgjFGNHhIaz5EgoUwBLbfiWdrB0QwFqlg9IfGmZV/Jsq
# 4uw3V47l35Yw+MCTC0MY+QJvqVGvuFcK8xwHaTmPN5xt15GupS5J6Ures9CMvzmQ
# DcCBzvAqBzoMpi1R0nLzU8b5ve/vDGlJd58sVsTpoQg9B67FHtaEIse8fUMbWDhi
# TtEFJYTFQvgfL/bb+quMVOxFimwSTTBaUuWkFwki5u9v9V+GQ9+hLb1KRpKggZYs
# YZd/QG/YP4w1WqvRxqA7hWZUgO8fGvXxm7ChJ32y5wvP9i2cWBOUqYb8RVKiKG1/
# dA9SkUl66RL4qTuwkv19kRTpW21IlPLIlu4FOLPF7DA/4QcgBLHYi7z9sz5v8gJT
# BvSg7cmacqOXXwD7y2PQ6M10/XXJ1DZFunsSWXLt5/J6UAB4+EOaRtjfv1TUXrHH
# 0bwbg/Qr5wvoR8hTnswarPb6inVTbCCFqdW4arokjoorCJGfNwQc9m+i3TSqkf/G
# FS4eQhoJKU/0xs3ikaLTQAyOeOMxggWBMIIFfQIBATCBkDB8MQswCQYDVQQGEwJH
# QjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3Jk
# MRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxJDAiBgNVBAMTG1NlY3RpZ28gUlNB
# IENvZGUgU2lnbmluZyBDQQIQNi6d2QZSadlgoaqpVGQMODAJBgUrDgMCGgUAoHgw
# GAYKKwYBBAGCNwIBDDEKMAigAoAAoQKAADAZBgkqhkiG9w0BCQMxDAYKKwYBBAGC
# NwIBBDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAjBgkqhkiG9w0BCQQx
# FgQUBi06S8vWF+iG8iIu/CiSVU3+ohAwDQYJKoZIhvcNAQEBBQAEggEAb4Vl9T6t
# 2FrjqIbM2nsrCmP8ORXpS9snJ9t2Xc1vqMTrrQfMOSWz4u2v4+WE6Ji+y4NoL9RE
# EPjW5LVwKibNTi/vXBpNvLIMUsgVXsqpG2qsFFNwhvVR7I/n7YzhLjRBLqM1taQi
# DKwfHfiuRtyh4Wno3Ro8CGE58+d6zEZ+5DH+38Nl+hJK3GfE+6KIg3usHpOapCn9
# WdoZnZsIeUV/tuvpQhXlRHoBU2VGwYxK2DjOhjmsIF53P4l5zh2EkyyTprj3oZ/M
# GPNRKz6+kMt3E2xd6Q7hEjY81PA41j73ZPl2gs6Dn/ArAKjmgJ4v+wp841asIEAy
# rpg8udZp4OsRhqGCA0swggNHBgkqhkiG9w0BCQYxggM4MIIDNAIBATCBkTB9MQsw
# CQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQH
# EwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxJTAjBgNVBAMTHFNl
# Y3RpZ28gUlNBIFRpbWUgU3RhbXBpbmcgQ0ECED0aNXIwFYJjMNATcX6CQQgwDQYJ
# YIZIAWUDBAICBQCgeTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3
# DQEJBTEPFw0yMDA5MTgxMTIwMzJaMD8GCSqGSIb3DQEJBDEyBDAV6HYLQzxEk6xx
# a5LbURQARU5Fkq2n4bD2WkAKXBDQveDvRREU3AwObbYrnUxOF90wDQYJKoZIhvcN
# AQEBBQAEggIAgiFtmIDCzbMda6U5WLRgXoaolDbD8oWHzZqmWsjbC4G9LKqT4uVd
# Gf1YK3EHdlI7dRI7PRHYFxNWEqMzbpCKZ2sT1wd4Sw1CLcw2IeHn0GxDAx5mu3SX
# qNR1DYaeFDmunKhFhhsYrC65ip+az0PDtAip5g349g2n15mYRUXpvjN25bL2q1qQ
# JzTAy4dFxe2FP4YXlsCUJRv68JaIhxFe64GlYtK1HTPVLTcIpW2yiYnaut0QG2/J
# NLAEEH15EVb3ZrcqnJMpu8vI0AqB3JHbeuKmlJqN+0KvaM1vMDKLD78r9x6um6Xq
# EZo7EA1CX8wpghajQMoLIK0ih1sU0ymiaDuHoyB5T9DjQCeTh/Mi8g144JWBL1H/
# 8xIkOKN/4ig3SZX57q9M8TWkC5Gj60J6oUd8Y5F8ha0TrCAhiEqyqTC5k/sH7w6a
# XhK4sxdzMUU59hwP6vOlYVWu/Wx9jb4VL46Gu5Is7w2FYK1lxcph27qfLcTviPAl
# 4CVdjNqVWW5tSOpKWvt43E17j4td4r2MM8dgFUG7uIrH6qeyyICvkLb5RwhV2QPc
# U4BFMYw7miLImDkWAxScPWLmr0ME4/VT49lQwzl0+asGtN5J0yPSRDSSU0Svlolz
# WvrsTyYXBMwEcZOrUkvw9FIPukkWZBO7jtwfsx1NV7gCzxWoWLiYjVU=
# SIG # End signature block