functions/Get-Customer.ps1

<#
    .SYNOPSIS
    Get a list of all customers.
     
    .DESCRIPTION
    A list of all customers the user has been assigned to.
     
    .PARAMETER Filter
    Filter the list to show only matching customers, wildcards can be used. Customers are filterd based on the name of the customer.
 
    .PARAMETER CustomerId
    Shows the specific customer with this customer Id.
 
    .PARAMETER All
    Shows the all customers
     
    .PARAMETER AuthToken
    Either a session or an API key. If no AuthToken is provided the global Server-Eye session will be used if available.
 
    .EXAMPLE
    Get-SECustomer
 
    Name CustomerId CustomerNumber
    ---- ---------- --------------
    Systemmanager IT 4028e08a2e0ed329012e4ca526f705b1 75953213
    RT Privat aac53bb3-2733-4247-a9ff-3844c9130b6e 11710377
    SE Landheim 3a8000cc-e09c-44c1-99aa-41f85abd59a8 46570910
    Server-Eye Support 4028e08a3e65d9e5013e7a04e3ad009b 49511392
    Wortmann Demo (gesponsert) 3e2c14de-c28f-4297-826a-cc645b725be2 92131923
 
    .EXAMPLE
    Get-SECustomer -CustomerId "4028e08a2e0ed329012e4ca526f705b1"
 
    Name CustomerId CustomerNumber
    ---- ---------- --------------
    Systemmanager IT 4028e08a2e0ed329012e4ca526f705b1 75953213
 
    .EXAMPLE
    Get-SECustomer -Filter "Systemmanager*"
 
    Name CustomerId CustomerNumber
    ---- ---------- --------------
    Systemmanager IT 4028e08a2e0ed329012e4ca526f705b1 75953213
 
    .LINK
    https://api.server-eye.de/docs/2/
     
#>

function Get-Customer {
    [OutputType("ServerEye.Customer")]
    [CmdletBinding(DefaultParameterSetName = 'byFilter')]
    Param(
        [Parameter(Mandatory = $false, ParameterSetName = 'byFilter', Position = 0)]
        [string]$Filter,
        [Parameter(Mandatory = $false, ParameterSetName = 'byCustomerId')]
        [string]$CustomerId,
        [Parameter(Mandatory = $false, ParameterSetName = 'All')]
        [switch]$all,
        [Parameter(Mandatory = $false, ParameterSetName = 'byFilter')]
        [Parameter(ValueFromPipelineByPropertyName, Mandatory = $false, ParameterSetName = 'byCustomerId')]
        [Parameter(Mandatory = $false, ParameterSetName = 'All')]
        [alias("ApiKey", "Session")]
        $AuthToken
    )
    Begin {
        $AuthToken = Test-SEAuth -AuthToken $AuthToken
        if (!(Get-Typedata "ServerEye.Customer")) {
            $SECustomerTypeData = @{
                TypeName                  = "ServerEye.Customer"
                DefaultDisplayPropertySet = "Name", "CustomerId", "CustomerNumber"    
            }
            Update-TypeData @SECustomerTypeData
        }
        if (!$Global:ServerEyeCustomer) {
            $Global:ServerEyeCustomer = @()
        }


    }

    Process {
        if ($all.IsPresent -eq $true) {
            $Listcustomers = Get-SeApiCustomerList -AuthToken $AuthToken
            foreach ($ListCustomer in $ListCustomers) {
                Format-Customer -Customer $ListCustomer -AuthToken $AuthToken
            }
        }
        elseif ($CustomerId) {
            Format-Customer -Customer $CustomerId -AuthToken $AuthToken

        }
        else {
            $Nodecustomers = Get-SeApiMyNodesList -Filter customer -AuthToken $AuthToken
            foreach ($Nodecustomer in $Nodecustomers) {
                if ((-not $Filter) -or ($Nodecustomer.name -like $Filter)) {
                    Format-Customer -Customer $Nodecustomer -AuthToken $AuthToken
                }
            }
        }
    }
}

function Format-Customer {
    [CmdletBinding()]
    param (
        $Customer,
        [Parameter(ValueFromPipelineByPropertyName, Mandatory = $false)]
        [alias("ApiKey", "Session")]
        $AuthToken
    )
    if ($Customer.gettype() -eq [String]) {
        $Customer = Get-CachedCustomer -customerID $Customer -authtoken $AuthToken
    }elseif ($customer.ID) {
        $Customer = Get-CachedCustomer -customerID $Customer.id  -authtoken $AuthToken
    }
    Write-Debug $customer
    [PSCustomObject]@{
        PSTypeName             = "ServerEye.Customer"
        Name                   = $customer.companyName
        CustomerId             = $customer.cId
        CustomerNumber         = $customer.customerNumberExtern
        customerNumberIntern   = $customer.customerNumberIntern
        Street                 = $customer.street
        StreetNumber           = $customer.streetNumber
        ZipCode                = $customer.zipCode
        City                   = $customer.city
        country                = $customer.country
        email                  = $customer.email
        phone                  = $customer.phone
        distributor            = $customer.distributor
        distributorInformation = $customer.distributorInformation
        customData             = $customer.customData
        properties             = $customer.properties
        licenses               = $customer.licenses
    }
}
# SIG # Begin signature block
# MIIu4gYJKoZIhvcNAQcCoIIu0zCCLs8CAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUbaIkQpluejqUfEBzf/eBZZI0
# QCCggiicMIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQG
# EwJHQjEbMBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxm
# b3JkMRowGAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UEAwwYQUFBIENl
# cnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1
# OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQ
# MA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAf
# BgNVBAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEB
# BQADggEPADCCAQoCggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686td
# UIoWMQuaBtDFcCLNSS1UY8y2bmhGC1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJ
# VfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUsi14HZGWCwEiwqJH5YZ92IFCo
# kcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszWY19zjNoFmag4
# qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH
# Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNV
# HQ4EFgQUoBEKIz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1Ud
# EwEB/wQFMAMBAf8wewYDVR0fBHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9j
# YS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNqA0oDKGMGh0dHA6Ly9j
# cmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDANBgkqhkiG
# 9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm7l3s
# Ag9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2
# LX1rzNLzRt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8
# tqtlbgT2G9w84FoVxp7Z8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs
# 1OUIJqsil2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XX
# vi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbjCCBW8wggRXoAMCAQICEEj8k7Rg
# VZSNNqfJionWlBYwDQYJKoZIhvcNAQEMBQAwezELMAkGA1UEBhMCR0IxGzAZBgNV
# BAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UE
# CgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNVBAMMGEFBQSBDZXJ0aWZpY2F0ZSBT
# ZXJ2aWNlczAeFw0yMTA1MjUwMDAwMDBaFw0yODEyMzEyMzU5NTlaMFYxCzAJBgNV
# BAYTAkdCMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxLTArBgNVBAMTJFNlY3Rp
# Z28gUHVibGljIENvZGUgU2lnbmluZyBSb290IFI0NjCCAiIwDQYJKoZIhvcNAQEB
# BQADggIPADCCAgoCggIBAI3nlBIiBCR0Lv8WIwKSirauNoWsR9QjkSs+3H3iMaBR
# b6yEkeNSirXilt7Qh2MkiYr/7xKTO327toq9vQV/J5trZdOlDGmxvEk5mvFtbqrk
# oIMn2poNK1DpS1uzuGQ2pH5KPalxq2Gzc7M8Cwzv2zNX5b40N+OXG139HxI9ggN2
# 5vs/ZtKUMWn6bbM0rMF6eNySUPJkx6otBKvDaurgL6en3G7X6P/aIatAv7nuDZ7G
# 2Z6Z78beH6kMdrMnIKHWuv2A5wHS7+uCKZVwjf+7Fc/+0Q82oi5PMpB0RmtHNRN3
# BTNPYy64LeG/ZacEaxjYcfrMCPJtiZkQsa3bPizkqhiwxgcBdWfebeljYx42f2mJ
# vqpFPm5aX4+hW8udMIYw6AOzQMYNDzjNZ6hTiPq4MGX6b8fnHbGDdGk+rMRoO7Hm
# ZzOatgjggAVIQO72gmRGqPVzsAaV8mxln79VWxycVxrHeEZ8cKqUG4IXrIfptskO
# gRxA1hYXKfxcnBgr6kX1773VZ08oXgXukEx658b00Pz6zT4yRhMgNooE6reqB0ac
# DZM6CWaZWFwpo7kMpjA4PNBGNjV8nLruw9X5Cnb6fgUbQMqSNenVetG1fwCuqZCq
# xX8BnBCxFvzMbhjcb2L+plCnuHu4nRU//iAMdcgiWhOVGZAA6RrVwobx447sX/Tl
# AgMBAAGjggESMIIBDjAfBgNVHSMEGDAWgBSgEQojPpbxB+zirynvgqV/0DCktDAd
# BgNVHQ4EFgQUMuuSmv81lkgvKEBCcCA2kVwXheYwDgYDVR0PAQH/BAQDAgGGMA8G
# A1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYBBQUHAwMwGwYDVR0gBBQwEjAG
# BgRVHSAAMAgGBmeBDAEEATBDBgNVHR8EPDA6MDigNqA0hjJodHRwOi8vY3JsLmNv
# bW9kb2NhLmNvbS9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDA0BggrBgEFBQcB
# AQQoMCYwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmNvbW9kb2NhLmNvbTANBgkq
# hkiG9w0BAQwFAAOCAQEAEr+h74t0mphEuGlGtaskCgykime4OoG/RYp9UgeojR9O
# IYU5o2teLSCGvxC4rnk7U820+9hEvgbZXGNn1EAWh0SGcirWMhX1EoPC+eFdEUBn
# 9kIncsUj4gI4Gkwg4tsB981GTyaifGbAUTa2iQJUx/xY+2wA7v6Ypi6VoQxTKR9v
# 2BmmT573rAnqXYLGi6+Ap72BSFKEMdoy7BXkpkw9bDlz1AuFOSDghRpo4adIOKnR
# NiV3wY0ZFsWITGZ9L2POmOhp36w8qF2dyRxbrtjzL3TPuH7214OdEZZimq5FE9p/
# 3Ef738NSn+YGVemdjPI6YlG87CQPKdRYgITkRXta2DCCBdIwggQ6oAMCAQICEQC3
# hK8bsDEjswfwAlUoGMUIMA0GCSqGSIb3DQEBDAUAMFQxCzAJBgNVBAYTAkdCMRgw
# FgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxKzApBgNVBAMTIlNlY3RpZ28gUHVibGlj
# IENvZGUgU2lnbmluZyBDQSBSMzYwHhcNMjMwMzIxMDAwMDAwWhcNMjUwMzIwMjM1
# OTU5WjBoMQswCQYDVQQGEwJERTERMA8GA1UECAwIU2FhcmxhbmQxIjAgBgNVBAoM
# GUtyw6RtZXIgSVQgU29sdXRpb25zIEdtYkgxIjAgBgNVBAMMGUtyw6RtZXIgSVQg
# U29sdXRpb25zIEdtYkgwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDT
# H/TMSn4rSnHOZjwUP2kGzD93pkzF6qxtBuqHIXHRVyo6+T1mhFrGD35pzjDmGaqj
# a7heZan1yQF5Y9D/m9ckfJFzbeS1f+sGKkU1ZV/YEUsicOgKHKQ6SQBRWOjMmZft
# PnVkQiGmtDd/zy7MBYmdFCJHMvWqKQQfuDWFJO3nCPfSQ1wNWG6FTfywqIFaJNN1
# ytGb1idiL039QhXXnFD3iLCSog+imaZ6Wj9HLAOyCQ9w72C/eHN1iWhVnh1oFkNi
# g9b0EGObHgxYmg8cly6Jntqc6uhptVxzLMehmbhJ+jw92NoohAG9XrFlbtN8Fc7x
# e1rUt4XgvZnVfa4dEiWolgbJhDRsqtE1wsnhXY2prFE1AqhDykfT8aEx3byuv3a2
# IpxF7x0wzpoj3WRe492K9Pn2gIEDTJg1YINaOf41WA8Z8kWv+//Kp/Hqyc0lGb1b
# UM7gkVX0YowM7y8lWouqOV73VUI+wd94ETGrlxYb/UOuex+ZoJzmelhege8Lc7kC
# AwEAAaOCAYkwggGFMB8GA1UdIwQYMBaAFA8qyyCHKLjsb0iuK1SmKaoXpM0MMB0G
# A1UdDgQWBBQl9gPVw/AoEEo6c51A3Y77YrisfjAOBgNVHQ8BAf8EBAMCB4AwDAYD
# VR0TAQH/BAIwADATBgNVHSUEDDAKBggrBgEFBQcDAzBKBgNVHSAEQzBBMDUGDCsG
# AQQBsjEBAgEDAjAlMCMGCCsGAQUFBwIBFhdodHRwczovL3NlY3RpZ28uY29tL0NQ
# UzAIBgZngQwBBAEwSQYDVR0fBEIwQDA+oDygOoY4aHR0cDovL2NybC5zZWN0aWdv
# LmNvbS9TZWN0aWdvUHVibGljQ29kZVNpZ25pbmdDQVIzNi5jcmwweQYIKwYBBQUH
# AQEEbTBrMEQGCCsGAQUFBzAChjhodHRwOi8vY3J0LnNlY3RpZ28uY29tL1NlY3Rp
# Z29QdWJsaWNDb2RlU2lnbmluZ0NBUjM2LmNydDAjBggrBgEFBQcwAYYXaHR0cDov
# L29jc3Auc2VjdGlnby5jb20wDQYJKoZIhvcNAQEMBQADggGBAFPJOJKmNMi/Lo5U
# OPXXjgQ7PVcBwRKTNiqScDJo8rU3/meYIjat/LRexYEWi7szclq4I01t+MSdgJYU
# oXlp2SAwvTp2oxMEeuUgv4OgxEpWB8e5EOYzJjYJDdGHKzTZ6Ay8dFn6/+WPjDzL
# VZDUqsbdbiho/oKjmYOFw3qhLt4M5znbeaHgGRRwqxu8kQUio1CroT4dTyqYpeHo
# ePICW2zEsYl9h2LJ0jXWPzPv7qXf47bjW/Envgop5Zpf7U9dLpwT6TqombyypwOJ
# zDGbvbxFt0lDZN89L/HPyCxftzf3+V6YARV32wY10U88eMyy8hhvl53bsF3BCPHn
# fEHit5LzS/4oD58E9pShIgO3+zVEMNOIhFKE29DF1HwcKrdzXmpJamsZnSK8LOLn
# ZSuqYiMOl/IwN9fhZqdszCruK4UvYpz0ynrHNeA7VhaRaqH10fmqPe2MSPXL7Zbt
# JDK4TPOtwJQyT6LCUktfl3naE2vcecgz0oG6U+Vh5JCumNVoDzCCBhQwggP8oAMC
# AQICEHojrtpTaZYPkcg+XPTH4z8wDQYJKoZIhvcNAQEMBQAwVzELMAkGA1UEBhMC
# R0IxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDEuMCwGA1UEAxMlU2VjdGlnbyBQ
# dWJsaWMgVGltZSBTdGFtcGluZyBSb290IFI0NjAeFw0yMTAzMjIwMDAwMDBaFw0z
# NjAzMjEyMzU5NTlaMFUxCzAJBgNVBAYTAkdCMRgwFgYDVQQKEw9TZWN0aWdvIExp
# bWl0ZWQxLDAqBgNVBAMTI1NlY3RpZ28gUHVibGljIFRpbWUgU3RhbXBpbmcgQ0Eg
# UjM2MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAzZjYQ0GrboIr7PYz
# fiY05ImM0+8iEoBUPu8mr4wOgYPjoiIz5vzf7d5wu8GFK1JWN5hciN9rdqOhbdxL
# cSVwnOTJmUGfAMQm4eXOls3iQwfapEFWuOsYmBKXPNSpwZAFoLGl5y1EaGGc5LBy
# M8wjcbSF52/Z42YaJRsPXY545E3QAPN2mxDh0OLozhiGgYT1xtjXVfEzYBVmfQaI
# 5QL35cTTAjsJAp85R+KAsOfuL9Z7LFnjdcuPkZWjssMETFIueH69rxbFOUD64G+r
# Uo7xFIdRAuDNvWBsv0iGDPGaR2nZlY24tz5fISYk1sPY4gir99aXAGnoo0vX3Oke
# w4MsiyBn5ZnUDMKzUcQrpVavGacrIkmDYu/bcOUR1mVBIZ0X7P4bKf38JF7Mp7tY
# 3LFF/h7hvBS2tgTYXlD7TnIMPrxyXCfB5yQq3FFoXRXM3/DvqQ4shoVWF/mwwz9x
# oRku05iphp22fTfjKRIVpm4gFT24JKspEpM8mFa9eTgKWWCvAgMBAAGjggFcMIIB
# WDAfBgNVHSMEGDAWgBT2d2rdP/0BE/8WoWyCAi/QCj0UJTAdBgNVHQ4EFgQUX1jt
# TDF6omFCjVKAurNhlxmiMpswDgYDVR0PAQH/BAQDAgGGMBIGA1UdEwEB/wQIMAYB
# Af8CAQAwEwYDVR0lBAwwCgYIKwYBBQUHAwgwEQYDVR0gBAowCDAGBgRVHSAAMEwG
# A1UdHwRFMEMwQaA/oD2GO2h0dHA6Ly9jcmwuc2VjdGlnby5jb20vU2VjdGlnb1B1
# YmxpY1RpbWVTdGFtcGluZ1Jvb3RSNDYuY3JsMHwGCCsGAQUFBwEBBHAwbjBHBggr
# BgEFBQcwAoY7aHR0cDovL2NydC5zZWN0aWdvLmNvbS9TZWN0aWdvUHVibGljVGlt
# ZVN0YW1waW5nUm9vdFI0Ni5wN2MwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLnNl
# Y3RpZ28uY29tMA0GCSqGSIb3DQEBDAUAA4ICAQAS13sgrQ41WAyegR0lWP1MLWd0
# r8diJiH2VVRpxqFGhnZbaF+IQ7JATGceTWOS+kgnMAzGYRzpm8jIcjlSQ8Jtcqym
# Khgx1s6cFZBSfvfeoyigF8iCGlH+SVSo3HHr98NepjSFJTU5KSRKK+3nVSWYkSVQ
# gJlgGh3MPcz9IWN4I/n1qfDGzqHCPWZ+/Mb5vVyhgaeqxLPbBIqv6cM74Nvyo1xN
# sllECJJrOvsrJQkajVz4xJwZ8blAdX5umzwFfk7K/0K3fpjgiXpqNOpXaJ+KSRW0
# HdE0FSDC7+ZKJJSJx78mn+rwEyT+A3z7Ss0gT5CpTrcmhUwIw9jbvnYuYRKxFVWj
# KklW3z83epDVzoWJttxFpujdrNmRwh1YZVIB2guAAjEQoF42H0BA7WBCueHVMDyV
# 1e4nM9K4As7PVSNvQ8LI1WRaTuGSFUd9y8F8jw22BZC6mJoB40d7SlZIYfaildlg
# pgbgtu6SDsek2L8qomG57Yp5qTqof0DwJ4Q4HsShvRl/59T4IJBovRwmqWafH0cI
# PEX7cEttS5+tXrgRtMjjTOp6A9l0D6xcKZtxnLqiTH9KPCy6xZEi0UDcMTww5Fl4
# VvoGbMG2oonuX3f1tsoHLaO/Fwkj3xVr3lDkmeUqivebQTvGkx5hGuJaSVQ+x60x
# J/Y29RBr8Tm9XJ59AjCCBhowggQCoAMCAQICEGIdbQxSAZ47kHkVIIkhHAowDQYJ
# KoZIhvcNAQEMBQAwVjELMAkGA1UEBhMCR0IxGDAWBgNVBAoTD1NlY3RpZ28gTGlt
# aXRlZDEtMCsGA1UEAxMkU2VjdGlnbyBQdWJsaWMgQ29kZSBTaWduaW5nIFJvb3Qg
# UjQ2MB4XDTIxMDMyMjAwMDAwMFoXDTM2MDMyMTIzNTk1OVowVDELMAkGA1UEBhMC
# R0IxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDErMCkGA1UEAxMiU2VjdGlnbyBQ
# dWJsaWMgQ29kZSBTaWduaW5nIENBIFIzNjCCAaIwDQYJKoZIhvcNAQEBBQADggGP
# ADCCAYoCggGBAJsrnVP6NT+OYAZDasDP9X/2yFNTGMjO02x+/FgHlRd5ZTMLER4A
# RkZsQ3hAyAKwktlQqFZOGP/I+rLSJJmFeRno+DYDY1UOAWKA4xjMHY4qF2p9YZWh
# hbeFpPb09JNqFiTCYy/Rv/zedt4QJuIxeFI61tqb7/foXT1/LW2wHyN79FXSYiTx
# cv+18Irpw+5gcTbXnDOsrSHVJYdPE9s+5iRF2Q/TlnCZGZOcA7n9qudjzeN43OE/
# TpKF2dGq1mVXn37zK/4oiETkgsyqA5lgAQ0c1f1IkOb6rGnhWqkHcxX+HnfKXjVo
# dTmmV52L2UIFsf0l4iQ0UgKJUc2RGarhOnG3B++OxR53LPys3J9AnL9o6zlviz5p
# zsgfrQH4lrtNUz4Qq/Va5MbBwuahTcWk4UxuY+PynPjgw9nV/35gRAhC3L81B3/b
# IaBb659+Vxn9kT2jUztrkmep/aLb+4xJbKZHyvahAEx2XKHafkeKtjiMqcUf/2BG
# 935A591GsllvWwIDAQABo4IBZDCCAWAwHwYDVR0jBBgwFoAUMuuSmv81lkgvKEBC
# cCA2kVwXheYwHQYDVR0OBBYEFA8qyyCHKLjsb0iuK1SmKaoXpM0MMA4GA1UdDwEB
# /wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMBMGA1UdJQQMMAoGCCsGAQUFBwMD
# MBsGA1UdIAQUMBIwBgYEVR0gADAIBgZngQwBBAEwSwYDVR0fBEQwQjBAoD6gPIY6
# aHR0cDovL2NybC5zZWN0aWdvLmNvbS9TZWN0aWdvUHVibGljQ29kZVNpZ25pbmdS
# b290UjQ2LmNybDB7BggrBgEFBQcBAQRvMG0wRgYIKwYBBQUHMAKGOmh0dHA6Ly9j
# cnQuc2VjdGlnby5jb20vU2VjdGlnb1B1YmxpY0NvZGVTaWduaW5nUm9vdFI0Ni5w
# N2MwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLnNlY3RpZ28uY29tMA0GCSqGSIb3
# DQEBDAUAA4ICAQAG/4Lhd2M2bnuhFSCbE/8E/ph1RGHDVpVx0ZE/haHrQECxyNbg
# cv2FymQ5PPmNS6Dah66dtgCjBsULYAor5wxxcgEPRl05pZOzI3IEGwwsepp+8iGs
# LKaVpL3z5CmgELIqmk/Q5zFgR1TSGmxqoEEhk60FqONzDn7D8p4W89h8sX+V1ima
# Ub693TGqWp3T32IKGfIgy9jkd7GM7YCa2xulWfQ6E1xZtYNEX/ewGnp9ZeHPsNww
# viJMBZL4xVd40uPWUnOJUoSiugaz0yWLODRtQxs5qU6E58KKmfHwJotl5WZ7nIQu
# DT0mWjwEx7zSM7fs9Tx6N+Q/3+49qTtUvAQsrEAxwmzOTJ6Jp6uWmHCgrHW4dHM3
# ITpvG5Ipy62KyqYovk5O6cC+040Si15KJpuQ9VJnbPvqYqfMB9nEKX/d2rd1Q3Di
# uDexMKCCQdJGpOqUsxLuCOuFOoGbO7Uv3RjUpY39jkkp0a+yls6tN85fJe+Y8voT
# nbPU1knpy24wUFBkfenBa+pRFHwCBB1QtS+vGNRhsceP3kSPNrrfN2sRzFYsNfrF
# aWz8YOdU254qNZQfd9O/VjxZ2Gjr3xgANHtM3HxfzPYF6/pKK8EE4dj66qKKtm2D
# TL1KFCg/OYJyfrdLJq1q2/HXntgr2GVw+ZWhrWgMTn8v1SjZsLlrgIfZHDCCBl0w
# ggTFoAMCAQICEDpSaiyEzlXmHWX8zBLY6YkwDQYJKoZIhvcNAQEMBQAwVTELMAkG
# A1UEBhMCR0IxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDEsMCoGA1UEAxMjU2Vj
# dGlnbyBQdWJsaWMgVGltZSBTdGFtcGluZyBDQSBSMzYwHhcNMjQwMTE1MDAwMDAw
# WhcNMzUwNDE0MjM1OTU5WjBuMQswCQYDVQQGEwJHQjETMBEGA1UECBMKTWFuY2hl
# c3RlcjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTAwLgYDVQQDEydTZWN0aWdv
# IFB1YmxpYyBUaW1lIFN0YW1waW5nIFNpZ25lciBSMzUwggIiMA0GCSqGSIb3DQEB
# AQUAA4ICDwAwggIKAoICAQCN0Wf0wUibvf04STpNYYGbw9jcRaVhBDaNBp7jmJaA
# 9dQZW5ighrXGNMYjK7Dey5RIHMqLIbT9z9if753mYbojJrKWO4ZP0N5dBT2TwZZa
# Pb8E+hqaDZ8Vy2c+x1NiEwbEzTrPX4W3QFq/zJvDDbWKL99qLL42GJQzX3n5wWo6
# 0KklfFn+Wb22mOZWYSqkCVGl8aYuE12SqIS4MVO4PUaxXeO+4+48YpQlNqbc/ndT
# gszRQLF4MjxDPjRDD1M9qvpLTZcTGVzxfViyIToRNxPP6DUiZDU6oXARrGwyP9ag
# lPXwYbkqI2dLuf9fiIzBugCDciOly8TPDgBkJmjAfILNiGcVEzg+40xUdhxNcaC+
# 6r0juPiR7bzXHh7v/3RnlZuT3ZGstxLfmE7fRMAFwbHdDz5gtHLqjSTXDiNF58Ix
# PtvmZPG2rlc+Yq+2B8+5pY+QZn+1vEifI0MDtiA6BxxQuOnj4PnqDaK7NEKwtD1p
# zoA3jJFuoJiwbatwhDkg1PIjYnMDbDW+wAc9FtRN6pUsO405jaBgigoFZCw9hWjL
# NqgFVTo7lMb5rVjJ9aSBVVL2dcqzyFW2LdWk5Xdp65oeeOALod7YIIMv1pbqC15R
# 7QCYLxcK1bCl4/HpBbdE5mjy9JR70BHuYx27n4XNOZbwrXcG3wZf9gEUk7stbPAo
# BQIDAQABo4IBjjCCAYowHwYDVR0jBBgwFoAUX1jtTDF6omFCjVKAurNhlxmiMpsw
# HQYDVR0OBBYEFGjvpDJJabZSOB3qQzks9BRqngyFMA4GA1UdDwEB/wQEAwIGwDAM
# BgNVHRMBAf8EAjAAMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMIMEoGA1UdIARDMEEw
# NQYMKwYBBAGyMQECAQMIMCUwIwYIKwYBBQUHAgEWF2h0dHBzOi8vc2VjdGlnby5j
# b20vQ1BTMAgGBmeBDAEEAjBKBgNVHR8EQzBBMD+gPaA7hjlodHRwOi8vY3JsLnNl
# Y3RpZ28uY29tL1NlY3RpZ29QdWJsaWNUaW1lU3RhbXBpbmdDQVIzNi5jcmwwegYI
# KwYBBQUHAQEEbjBsMEUGCCsGAQUFBzAChjlodHRwOi8vY3J0LnNlY3RpZ28uY29t
# L1NlY3RpZ29QdWJsaWNUaW1lU3RhbXBpbmdDQVIzNi5jcnQwIwYIKwYBBQUHMAGG
# F2h0dHA6Ly9vY3NwLnNlY3RpZ28uY29tMA0GCSqGSIb3DQEBDAUAA4IBgQCw3C7J
# +k82TIov9slP1e8YTx+fDsa//hJ62Y6SMr2E89rv82y/n8we5W6z5pfBEWozlW7n
# Wp+sdPCdUTFw/YQcqvshH6b9Rvs9qZp5Z+V7nHwPTH8yzKwgKzTTG1I1XEXLAK9f
# HnmXpaDeVeI8K6Lw3iznWZdLQe3zl+Rejdq5l2jU7iUfMkthfhFmi+VVYPkR/BXp
# V7Ub1QyyWebqkjSHJHRmv3lBYbQyk08/S7TlIeOr9iQ+UN57fJg4QI0yqdn6Pyie
# hS1nSgLwKRs46T8A6hXiSn/pCXaASnds0LsM5OVoKYfbgOOlWCvKfwUySWoSgrhn
# cihSBXxH2pAuDV2vr8GOCEaePZc0Dy6O1rYnKjGmqm/IRNkJghSMizr1iIOPN+23
# futBXAhmx8Ji/4NTmyH9K0UvXHiuA2Pa3wZxxR9r9XeIUVb2V8glZay+2ULlc445
# CzCvVSZV01ZB6bgvCuUuBx079gCcepjnZDCcEuIC5Se4F6yFaZ8RvmiJ4hgwggaC
# MIIEaqADAgECAhA2wrC9fBs656Oz3TbLyXVoMA0GCSqGSIb3DQEBDAUAMIGIMQsw
# CQYDVQQGEwJVUzETMBEGA1UECBMKTmV3IEplcnNleTEUMBIGA1UEBxMLSmVyc2V5
# IENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEuMCwGA1UEAxMl
# VVNFUlRydXN0IFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0yMTAzMjIw
# MDAwMDBaFw0zODAxMTgyMzU5NTlaMFcxCzAJBgNVBAYTAkdCMRgwFgYDVQQKEw9T
# ZWN0aWdvIExpbWl0ZWQxLjAsBgNVBAMTJVNlY3RpZ28gUHVibGljIFRpbWUgU3Rh
# bXBpbmcgUm9vdCBSNDYwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCI
# ndi5RWedHd3ouSaBmlRUwHxJBZvMWhUP2ZQQRLRBQIF3FJmp1OR2LMgIU14g0JIl
# L6VXWKmdbmKGRDILRxEtZdQnOh2qmcxGzjqemIk8et8sE6J+N+Gl1cnZocew8eCA
# awKLu4TRrCoqCAT8uRjDeypoGJrruH/drCio28aqIVEn45NZiZQI7YYBex48eL78
# lQ0BrHeSmqy1uXe9xN04aG0pKG9ki+PC6VEfzutu6Q3IcZZfm00r9YAEp/4aeiLh
# yaKxLuhKKaAdQjRaf/h6U13jQEV1JnUTCm511n5avv4N+jSVwd+Wb8UMOs4netap
# q5Q/yGyiQOgjsP/JRUj0MAT9YrcmXcLgsrAimfWY3MzKm1HCxcquinTqbs1Q0d2V
# MMQyi9cAgMYC9jKc+3mW62/yVl4jnDcw6ULJsBkOkrcPLUwqj7poS0T2+2JMzPP+
# jZ1h90/QpZnBkhdtixMiWDVgh60KmLmzXiqJc6lGwqoUqpq/1HVHm+Pc2B6+wCy/
# GwCcjw5rmzajLbmqGygEgaj/OLoanEWP6Y52Hflef3XLvYnhEY4kSirMQhtberRv
# aI+5YsD3XVxHGBjlIli5u+NrLedIxsE88WzKXqZjj9Zi5ybJL2WjeXuOTbswB7Xj
# kZbErg7ebeAQUQiS/uRGZ58NHs57ZPUfECcgJC+v2wIDAQABo4IBFjCCARIwHwYD
# VR0jBBgwFoAUU3m/WqorSs9UgOHYm8Cd8rIDZsswHQYDVR0OBBYEFPZ3at0//QET
# /xahbIICL9AKPRQlMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MBMG
# A1UdJQQMMAoGCCsGAQUFBwMIMBEGA1UdIAQKMAgwBgYEVR0gADBQBgNVHR8ESTBH
# MEWgQ6BBhj9odHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVNFUlRydXN0UlNBQ2Vy
# dGlmaWNhdGlvbkF1dGhvcml0eS5jcmwwNQYIKwYBBQUHAQEEKTAnMCUGCCsGAQUF
# BzABhhlodHRwOi8vb2NzcC51c2VydHJ1c3QuY29tMA0GCSqGSIb3DQEBDAUAA4IC
# AQAOvmVB7WhEuOWhxdQRh+S3OyWM637ayBeR7djxQ8SihTnLf2sABFoB0DFR6JfW
# S0snf6WDG2gtCGflwVvcYXZJJlFfym1Doi+4PfDP8s0cqlDmdfyGOwMtGGzJ4iIm
# yaz3IBae91g50QyrVbrUoT0mUGQHbRcF57olpfHhQEStz5i6hJvVLFV/ueQ21SM9
# 9zG4W2tB1ExGL98idX8ChsTwbD/zIExAopoe3l6JrzJtPxj8V9rocAnLP2C8Q5wX
# VVZcbw4x4ztXLsGzqZIiRh5i111TW7HV1AtsQa6vXy633vCAbAOIaKcLAo/IU7sC
# lyZUk62XD0VUnHD+YvVNvIGezjM6CRpcWed/ODiptK+evDKPU2K6synimYBaNH49
# v9Ih24+eYXNtI38byt5kIvh+8aW88WThRpv8lUJKaPn37+YHYafob9Rg7LyTrSYp
# yZoBmwRWSE4W6iPjB7wJjJpH29308ZkpKKdpkiS9WNsf/eeUtvRrtIEiSJHN899L
# 1P4l6zKVsdrUu1FX1T/ubSrsxrYJD+3f3aKg6yxdbugot06YwGXXiy5UUGZvOu3l
# XlxA+fC13dQ5OlL2gIb5lmF6Ii8+CQOYDwXM+yd9dbmocQsHjcRPsccUd5E9Fisw
# EqORvz8g3s+jR3SFCgXhN4wz7NgAnOgpCdUo4uDyllU9PzGCBbAwggWsAgEBMGkw
# VDELMAkGA1UEBhMCR0IxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDErMCkGA1UE
# AxMiU2VjdGlnbyBQdWJsaWMgQ29kZSBTaWduaW5nIENBIFIzNgIRALeErxuwMSOz
# B/ACVSgYxQgwCQYFKw4DAhoFAKB4MBgGCisGAQQBgjcCAQwxCjAIoAKAAKECgAAw
# GQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEOMAwGCisG
# AQQBgjcCARUwIwYJKoZIhvcNAQkEMRYEFMDkXKs44Ynk8M99NXlln5wExaKcMA0G
# CSqGSIb3DQEBAQUABIIBgAft6tNI7C2EEn9SnnHNpfYxZOiw4XUMlMS9Gkt3/AXG
# p1hixz6EXgA6yQQGiIni6gZkrIgtVB82RQyI/LloYApnOIg+LMFOpuZMcK060qgW
# kupENlfbq7zuUd/2UwsrZl2qmOcKeLi9+1Zm7tuyaZV85ByKCi47xEKHSbwTkxSH
# qac0255tp2d4tAcbP3FpEpJ6qv9svfoGKSKkMXInotm5lQXu01nVQeBJ9TutmLgN
# q2B4FhKAsP01to6sIl9xDRjmJTuwT8zdFyPtXtuTf3Inbq04pH+XXQwR33NHa5kA
# SdgN9UAfJ6TyOC5I9d+4J81Uue01A0bnweA3nxVH2UU0jkVSDF5Ju/+Cf18byh7/
# 8gMehrYMz6H1HH2hML6A3gV5qCCyegTZpqHThO3MAkoQwVfr32v4phDAOeFOp6/+
# Pl1pl0LE2+qpr98AFNzGHn/UTmGE+UEzjj+N5Q+NA71HJr5v/SICFWRhjHN56mC9
# Nnim31juX9JblYgWw7ZeTKGCAyIwggMeBgkqhkiG9w0BCQYxggMPMIIDCwIBATBp
# MFUxCzAJBgNVBAYTAkdCMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxLDAqBgNV
# BAMTI1NlY3RpZ28gUHVibGljIFRpbWUgU3RhbXBpbmcgQ0EgUjM2AhA6UmoshM5V
# 5h1l/MwS2OmJMA0GCWCGSAFlAwQCAgUAoHkwGAYJKoZIhvcNAQkDMQsGCSqGSIb3
# DQEHATAcBgkqhkiG9w0BCQUxDxcNMjQwOTMwMTM1NTE0WjA/BgkqhkiG9w0BCQQx
# MgQwqaZXCTjNq//Izyqdc14+lbQjOSCLZx5tXOKbvUaJSFJNHBEPLQvsmQnYCH20
# vdOpMA0GCSqGSIb3DQEBAQUABIICAFQqvWWxcHPu8A2Ghzook2hm+UQmcEyyOYBl
# tGDICcYJmH1FwE/im//TX5FM2LCXFxk1WpH8WeoGZVUaYNTM1DijaQMRRDte1N8r
# Gw3gi4YcoSmkiRMgerJgFXAL8sVX6sbhF9m/9OLAp3qXKWU0h1pEj6P56uwklZ4j
# Z3/5Ord0Ek9sfzi3G4NiY1urwmxHbcU2UfZU7O5n0qtbUSeVowYIpBW7MfkOiBq+
# OEha+oA8+EZw3gQ1EUTestEV4DeZRj6sA9cpSYJNsR39XUCOUohoCYndIBpLG/hc
# so+UKFD/dJOvd2N5lmmRj6FH4HL97x21euTW8A9DlLzLUTHGPbEGid/VlmwdkSDi
# i4DbYJmMC9qX6jAf7jbD+JYCLyxhD6VAzC7Lh4HIxZN1u+yhuSd9ye6kFyopgHna
# iXXkqWt+hxSR7cWOshc1ElN6RsmH5OX0QPZ/ImR1c6mB0zmZFW0H65x3XA1kYjL2
# DU9yt2MIMr1In9jkhj4vsSOBPnV15RkarELsaDwbWIVkp/JlOZNTyOoAZ7P9gvB8
# BBpPRe1xHjjYlF9jhlaPe40OXJK0bBhXeO1O7nhB783nxb92xLDbfkm5KZYEU92s
# Y9NSAsB3k6s6DjtVnHrhfXMuXDaigOlLpq6Jt/Whr/Q+HwNgNztDNkDK7uDrefMp
# dHk6fMEF
# SIG # End signature block