Private/Release-SpecPreviousComPort.ps1

function Release-SpecPreviousComPort {
    <#
    .SYNOPSIS
    Releases a previous COM port from the COM Name Arbiter database.
 
    .DESCRIPTION
    This function releases a previous COM port entry from the COM Name Arbiter database. It calculates the appropriate byte and bit positions, updates the binary array, and modifies the registry accordingly.
 
    .PARAMETER OldPort
    The previous COM port value to be released.
 
    .OUTPUTS
    System.Int32
    Returns 400 if the COM port is successfully released.
    Returns 401 if an error occurs during the release process.
 
    .EXAMPLE
    $statusCode = Release-SpecPreviousComPort -OldPort 3
    if ($statusCode -eq 400) {
        Write-Host "COM port released successfully."
    } elseif ($statusCode -eq 401) {
        Write-Host "Failed to release COM port."
    }
 
    .NOTES
    Author : owen.heaume
    Version : 1.0
    #>


    [CmdletBinding()]
    param (
        [Parameter(Mandatory = $true)]
        [int]$OldPort
    )

    Begin {
        $Byte = ($OldPort - ($OldPort % 8)) / 8
        $Bit = 8 - ($OldPort % 8)
        if ($Bit -eq 8) {
            $Bit = 0
            $Byte = $Byte - 1
        }
    }

    Process {
        try {
            $ComDB = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\COM Name Arbiter" -Name ComDB -ErrorAction Stop -ErrorVariable x
            $ComBinaryArray = ([convert]::ToString($ComDB.ComDB[$Byte], 2)).ToCharArray()
            while ($ComBinaryArray.Length -ne 8) {
                $ComBinaryArray = , "0" + $ComBinaryArray
            }
            $ComBinaryArray[$Bit] = "0"
            $ComBinary = [string]::Join("", $ComBinaryArray)
            $ComDB.ComDB[$Byte] = [convert]::ToInt32($ComBinary, 2)
            Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\COM Name Arbiter" -Name ComDB -Value ([byte[]]$ComDB.ComDB) -ErrorAction Stop -ErrorVariable x
            Write-Verbose "COM port released successfully.`n"
            return 400
        } catch {
            Write-Verbose "Unable to release previous port from COM database: $x"
            return 401
        }
    }
}

# SIG # Begin signature block
# MIIsowYJKoZIhvcNAQcCoIIslDCCLJACAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCDwlME3brDfLwAZ
# 5Tf3a+2JOuJ/IrJFbh6P9VyQ8JhYjKCCE7owggWQMIIDeKADAgECAhAFmxtXno4h
# MuI5B72nd3VcMA0GCSqGSIb3DQEBDAUAMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
# EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNV
# BAMTGERpZ2lDZXJ0IFRydXN0ZWQgUm9vdCBHNDAeFw0xMzA4MDExMjAwMDBaFw0z
# ODAxMTUxMjAwMDBaMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJ
# bmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lDZXJ0
# IFRydXN0ZWQgUm9vdCBHNDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB
# AL/mkHNo3rvkXUo8MCIwaTPswqclLskhPfKK2FnC4SmnPVirdprNrnsbhA3EMB/z
# G6Q4FutWxpdtHauyefLKEdLkX9YFPFIPUh/GnhWlfr6fqVcWWVVyr2iTcMKyunWZ
# anMylNEQRBAu34LzB4TmdDttceItDBvuINXJIB1jKS3O7F5OyJP4IWGbNOsFxl7s
# Wxq868nPzaw0QF+xembud8hIqGZXV59UWI4MK7dPpzDZVu7Ke13jrclPXuU15zHL
# 2pNe3I6PgNq2kZhAkHnDeMe2scS1ahg4AxCN2NQ3pC4FfYj1gj4QkXCrVYJBMtfb
# BHMqbpEBfCFM1LyuGwN1XXhm2ToxRJozQL8I11pJpMLmqaBn3aQnvKFPObURWBf3
# JFxGj2T3wWmIdph2PVldQnaHiZdpekjw4KISG2aadMreSx7nDmOu5tTvkpI6nj3c
# AORFJYm2mkQZK37AlLTSYW3rM9nF30sEAMx9HJXDj/chsrIRt7t/8tWMcCxBYKqx
# YxhElRp2Yn72gLD76GSmM9GJB+G9t+ZDpBi4pncB4Q+UDCEdslQpJYls5Q5SUUd0
# viastkF13nqsX40/ybzTQRESW+UQUOsxxcpyFiIJ33xMdT9j7CFfxCBRa2+xq4aL
# T8LWRV+dIPyhHsXAj6KxfgommfXkaS+YHS312amyHeUbAgMBAAGjQjBAMA8GA1Ud
# EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTs1+OC0nFdZEzf
# Lmc/57qYrhwPTzANBgkqhkiG9w0BAQwFAAOCAgEAu2HZfalsvhfEkRvDoaIAjeNk
# aA9Wz3eucPn9mkqZucl4XAwMX+TmFClWCzZJXURj4K2clhhmGyMNPXnpbWvWVPjS
# PMFDQK4dUPVS/JA7u5iZaWvHwaeoaKQn3J35J64whbn2Z006Po9ZOSJTROvIXQPK
# 7VB6fWIhCoDIc2bRoAVgX+iltKevqPdtNZx8WorWojiZ83iL9E3SIAveBO6Mm0eB
# cg3AFDLvMFkuruBx8lbkapdvklBtlo1oepqyNhR6BvIkuQkRUNcIsbiJeoQjYUIp
# 5aPNoiBB19GcZNnqJqGLFNdMGbJQQXE9P01wI4YMStyB0swylIQNCAmXHE/A7msg
# dDDS4Dk0EIUhFQEI6FUy3nFJ2SgXUE3mvk3RdazQyvtBuEOlqtPDBURPLDab4vri
# RbgjU2wGb2dVf0a1TD9uKFp5JtKkqGKX0h7i7UqLvBv9R0oN32dmfrJbQdA75PQ7
# 9ARj6e/CVABRoIoqyc54zNXqhwQYs86vSYiv85KZtrPmYQ/ShQDnUBrkG5WdGaG5
# nLGbsQAe79APT0JsyQq87kP6OnGlyE0mpTX9iV28hWIdMtKgK1TtmlfB2/oQzxm3
# i0objwG2J5VT6LaJbVu8aNQj6ItRolb58KaAoNYes7wPD1N1KarqE3fk3oyBIa0H
# EEcRrYc9B9F1vM/zZn4wggawMIIEmKADAgECAhAIrUCyYNKcTJ9ezam9k67ZMA0G
# CSqGSIb3DQEBDAUAMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJ
# bmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lDZXJ0
# IFRydXN0ZWQgUm9vdCBHNDAeFw0yMTA0MjkwMDAwMDBaFw0zNjA0MjgyMzU5NTla
# MGkxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjFBMD8GA1UE
# AxM4RGlnaUNlcnQgVHJ1c3RlZCBHNCBDb2RlIFNpZ25pbmcgUlNBNDA5NiBTSEEz
# ODQgMjAyMSBDQTEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDVtC9C
# 0CiteLdd1TlZG7GIQvUzjOs9gZdwxbvEhSYwn6SOaNhc9es0JAfhS0/TeEP0F9ce
# 2vnS1WcaUk8OoVf8iJnBkcyBAz5NcCRks43iCH00fUyAVxJrQ5qZ8sU7H/Lvy0da
# E6ZMswEgJfMQ04uy+wjwiuCdCcBlp/qYgEk1hz1RGeiQIXhFLqGfLOEYwhrMxe6T
# SXBCMo/7xuoc82VokaJNTIIRSFJo3hC9FFdd6BgTZcV/sk+FLEikVoQ11vkunKoA
# FdE3/hoGlMJ8yOobMubKwvSnowMOdKWvObarYBLj6Na59zHh3K3kGKDYwSNHR7Oh
# D26jq22YBoMbt2pnLdK9RBqSEIGPsDsJ18ebMlrC/2pgVItJwZPt4bRc4G/rJvmM
# 1bL5OBDm6s6R9b7T+2+TYTRcvJNFKIM2KmYoX7BzzosmJQayg9Rc9hUZTO1i4F4z
# 8ujo7AqnsAMrkbI2eb73rQgedaZlzLvjSFDzd5Ea/ttQokbIYViY9XwCFjyDKK05
# huzUtw1T0PhH5nUwjewwk3YUpltLXXRhTT8SkXbev1jLchApQfDVxW0mdmgRQRNY
# mtwmKwH0iU1Z23jPgUo+QEdfyYFQc4UQIyFZYIpkVMHMIRroOBl8ZhzNeDhFMJlP
# /2NPTLuqDQhTQXxYPUez+rbsjDIJAsxsPAxWEQIDAQABo4IBWTCCAVUwEgYDVR0T
# AQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUaDfg67Y7+F8Rhvv+YXsIiGX0TkIwHwYD
# VR0jBBgwFoAU7NfjgtJxXWRM3y5nP+e6mK4cD08wDgYDVR0PAQH/BAQDAgGGMBMG
# A1UdJQQMMAoGCCsGAQUFBwMDMHcGCCsGAQUFBwEBBGswaTAkBggrBgEFBQcwAYYY
# aHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEEGCCsGAQUFBzAChjVodHRwOi8vY2Fj
# ZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVkUm9vdEc0LmNydDBDBgNV
# HR8EPDA6MDigNqA0hjJodHRwOi8vY3JsMy5kaWdpY2VydC5jb20vRGlnaUNlcnRU
# cnVzdGVkUm9vdEc0LmNybDAcBgNVHSAEFTATMAcGBWeBDAEDMAgGBmeBDAEEATAN
# BgkqhkiG9w0BAQwFAAOCAgEAOiNEPY0Idu6PvDqZ01bgAhql+Eg08yy25nRm95Ry
# sQDKr2wwJxMSnpBEn0v9nqN8JtU3vDpdSG2V1T9J9Ce7FoFFUP2cvbaF4HZ+N3HL
# IvdaqpDP9ZNq4+sg0dVQeYiaiorBtr2hSBh+3NiAGhEZGM1hmYFW9snjdufE5Btf
# Q/g+lP92OT2e1JnPSt0o618moZVYSNUa/tcnP/2Q0XaG3RywYFzzDaju4ImhvTnh
# OE7abrs2nfvlIVNaw8rpavGiPttDuDPITzgUkpn13c5UbdldAhQfQDN8A+KVssIh
# dXNSy0bYxDQcoqVLjc1vdjcshT8azibpGL6QB7BDf5WIIIJw8MzK7/0pNVwfiThV
# 9zeKiwmhywvpMRr/LhlcOXHhvpynCgbWJme3kuZOX956rEnPLqR0kq3bPKSchh/j
# wVYbKyP/j7XqiHtwa+aguv06P0WmxOgWkVKLQcBIhEuWTatEQOON8BUozu3xGFYH
# Ki8QxAwIZDwzj64ojDzLj4gLDb879M4ee47vtevLt/B3E+bnKD+sEq6lLyJsQfmC
# XBVmzGwOysWGw/YmMwwHS6DTBwJqakAwSEs0qFEgu60bhQjiWQ1tygVQK+pKHJ6l
# /aCnHwZ05/LWUpD9r4VIIflXO7ScA+2GRfS0YW6/aOImYIbqyK+p/pQd52MbOoZW
# eE4wggduMIIFVqADAgECAhAJoJUtTqC7i9+OKkwQKIGcMA0GCSqGSIb3DQEBCwUA
# MGkxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjFBMD8GA1UE
# AxM4RGlnaUNlcnQgVHJ1c3RlZCBHNCBDb2RlIFNpZ25pbmcgUlNBNDA5NiBTSEEz
# ODQgMjAyMSBDQTEwHhcNMjMwODA4MDAwMDAwWhcNMjUwODA3MjM1OTU5WjB2MQsw
# CQYDVQQGEwJHRzERMA8GA1UEBxMIR3Vlcm5zZXkxKTAnBgNVBAoTIFNwZWNzYXZl
# cnMgT3B0aWNhbCBHcm91cCBMaW1pdGVkMSkwJwYDVQQDEyBTcGVjc2F2ZXJzIE9w
# dGljYWwgR3JvdXAgTGltaXRlZDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC
# ggIBAOPMoe4VdNIy4/vGzO34XwI7nCi+OH1mZuy14lq6l2iYKfo7E2DFmtAkZiH/
# vP1rbJ1yytpuhuP51ujqHfqKJ9cikkMAhI9LjD69TP9DkAgsb1DsxcWTBgNeLpNc
# dvk5gqLD2PrR+yeMKdWLnydE+oavli/nk/btmmO6jwRqdAKUTXu8hCmDDJ35anVc
# EC50aGek2LAjSNw9pUQHI0TuwhQBj22bVRwPv3SqnxXmpi4Lvk/4aRGDWkJCciWI
# a26nF3inFre5LTh1Rp1jtIf3GteieEW/bPnyhy8sJuRhhPsCxtdGxTNSIGwNxhvU
# 6FKgW1vQC6p/kPb9doDK8MF8w2gN7jJkjT8QtCdthUuSwbvfa2iNg80hzOHJ/2Ep
# t8aCVVxZgHnuWZwP4uy+mzLoE/MVPo+LbtvUXOwi8tUjcK4m0wlvWjbouwuGA/dO
# ahZ1MuQh7+DHOXHdUhJwm0RPVE/tdkJoozx7PBaOocsTxCiFmIq6GD9sBPq2yB5I
# MXRxP0ORUtgE6bL/vfVwdB0u3iLI4xT+fwS0mHMqCrEVV1AkfH8jfFB6/hLvwYo2
# d1fnGPhlykCUEltgDehuPHA7edHP7F7gJsLMLsJn5+1z/PT+ZenhA7EY7ONvgNKl
# bR1p2Z2RlxGCCKTKhc2RJ5hvYQRxKL76zFr+23FUhgDjYahtAgMBAAGjggIDMIIB
# /zAfBgNVHSMEGDAWgBRoN+Drtjv4XxGG+/5hewiIZfROQjAdBgNVHQ4EFgQU7WId
# ep8KzsDOpdKUoMlbdIsx+ckwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQMMAoGCCsG
# AQUFBwMDMIG1BgNVHR8Ega0wgaowU6BRoE+GTWh0dHA6Ly9jcmwzLmRpZ2ljZXJ0
# LmNvbS9EaWdpQ2VydFRydXN0ZWRHNENvZGVTaWduaW5nUlNBNDA5NlNIQTM4NDIw
# MjFDQTEuY3JsMFOgUaBPhk1odHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNl
# cnRUcnVzdGVkRzRDb2RlU2lnbmluZ1JTQTQwOTZTSEEzODQyMDIxQ0ExLmNybDA+
# BgNVHSAENzA1MDMGBmeBDAEEATApMCcGCCsGAQUFBwIBFhtodHRwOi8vd3d3LmRp
# Z2ljZXJ0LmNvbS9DUFMwgZQGCCsGAQUFBwEBBIGHMIGEMCQGCCsGAQUFBzABhhho
# dHRwOi8vb2NzcC5kaWdpY2VydC5jb20wXAYIKwYBBQUHMAKGUGh0dHA6Ly9jYWNl
# cnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFRydXN0ZWRHNENvZGVTaWduaW5nUlNB
# NDA5NlNIQTM4NDIwMjFDQTEuY3J0MAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQAD
# ggIBAKWiLtlCokxJ3Z2lxExg3RLHEqYMrrZSQCud8jMJdkpJFn+YocIVY91pVFen
# LroZOXaPSG5q9KVEOQ1rOjKDNZbkI1k/AC6qY4b6ZcwrSWjKpZYhPdeaKixp+see
# MMv1HIZGBULIPv2ECsvYRXLBY2cMaFaDcT6zEJ2SwAlibWGsAffWCDmt+HDfvxCs
# zFKkUuVUmLRKAKVoRVY5bMI9TBp+BOLsj5aD8OgulHk6htiJ7rh8mDt4CksEk1yE
# e60BZiiyNTvcY/NdYyJc7onHkMguHDue6BMo6T8+3oTpuHYdddvvCeXGpGV9SG3M
# SwgRuOVo7GCiRyRqJjd1ekeOKjjgwbqUqCwfydDZ3neUv9f/lZ/RwMvvQctmc1jv
# DR2CoQ4tfMl7ISd3EmMRsDoQCk6SfV8AgC7ZpflVJRY5PZwxKB6lzy9lksdIs8IV
# 4ef3uwIPdsuRQhsmqVMkZahtLqWHXP4QdKFLRYR6yFHoJ13L4dhwaRbbpTFPDyrS
# LmSC7dbqYUlfQo23/yHMUKiG3+Tv+OELsbXaHC4DsKjl+3NxNRLOlq79AR5dNJJJ
# 1vXfvgihF+hmsEs/3oEVv8QHQdbLSBF8QBSZ1+icPagquysQguKwbzMAMTCpyEws
# LztEZyOIkkSuldBJxP6PdUcu6ywBry5uPEW06UbmfBtplI88MYIYPzCCGDsCAQEw
# fTBpMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xQTA/BgNV
# BAMTOERpZ2lDZXJ0IFRydXN0ZWQgRzQgQ29kZSBTaWduaW5nIFJTQTQwOTYgU0hB
# Mzg0IDIwMjEgQ0ExAhAJoJUtTqC7i9+OKkwQKIGcMA0GCWCGSAFlAwQCAQUAoIGg
# MBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgor
# BgEEAYI3AgEVMC8GCSqGSIb3DQEJBDEiBCDqBi4EJbk3XQ/nmhkqUFtZV67Odn9u
# GMdNPWtiFqvqizA0BgorBgEEAYI3AgEMMSYwJKACgAChHoAcaHR0cHM6Ly93d3cu
# c3BlY3NhdmVycy5jby51azANBgkqhkiG9w0BAQEFAASCAgDaH4+MUDJi/ugRFrN6
# bSXQsZtI0Xb5TRzS2ywJnPTlCnqyJJhIdTnfvTPMswqaIktv3bLCVAQVbnrLiaKu
# Dm8kHPATDCK4Wy+FECi8XY1hWl6NTWmfW2giM/A2y2AB1+3AiCEpbCm/FxIb86dt
# T1ypwZzFCOgtNo48gGG6wX1uaDtk70g5x/mlC8HjfilGVttjQ6bqjIlnkqRl4z6M
# FnnHjNEX1qPP3dOEqWwJdzZ0eJVb8Eygl7E0QKTC57OQVtODE8H+H59MbmTfiJQA
# lQ6XRKQJX2b+KTcvrEj8X+P+XV3KglzTyji/bOruF4rlIuWctM0FHrrgfnE1Qlxy
# B4FihMIK+TkdzDz3OwgI3lM8URxBXTZI0dKJV05viBvohNeZgKFWf1TLUZZgSEXd
# 9/CcN+9kb2GpvoysHd7sS4NDhYUOSXmzIHfR2y0/J8+SHWmWr7LWyabnHnZEh5/Y
# i5UsHjeCAhb1SXfPifL9kSWriUPtSWr9X87TSNCuGaJsipqSHpjNyF20Cp5jctSY
# J8kd2oJklIe38sNJOY2AEplY89dIaJ+oRcYzn9RGEnKiY0DnLbOrcDyo5FwDE0k5
# kpZzmRN8rqf7Tt6tpNZrHjLMjJKXfM788SUAfKKgvRNN+zZ2SrL9xcsHwXgwX6TC
# oel6l535dSspYMn9xz0hP3NV76GCFPAwghTsBgorBgEEAYI3AwMBMYIU3DCCFNgG
# CSqGSIb3DQEHAqCCFMkwghTFAgEDMQ0wCwYJYIZIAWUDBAIBMHcGCyqGSIb3DQEJ
# EAEEoGgEZjBkAgEBBgwrBgEEAYKpMAEDBgEwMTANBglghkgBZQMEAgEFAAQgQH83
# 8ipieqczvxtefxwy8lkgPfKWkzNEKw2o9OrRLB0CCEDTDh1EqXIDGA8yMDIzMDkw
# MTEyMDEyM1owAwIBAaCCEdkwggT5MIIC4aADAgECAhAa1gin1jS1zd6Xy6PM8NBL
# MA0GCSqGSIb3DQEBCwUAMHMxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEQ
# MA4GA1UEBwwHSG91c3RvbjERMA8GA1UECgwIU1NMIENvcnAxLzAtBgNVBAMMJlNT
# TC5jb20gVGltZXN0YW1waW5nIElzc3VpbmcgUlNBIENBIFIxMB4XDTIyMTIwOTE4
# MzA1MVoXDTMyMTIwNjE4MzA1MFowazELMAkGA1UEBhMCVVMxDjAMBgNVBAgMBVRl
# eGFzMRAwDgYDVQQHDAdIb3VzdG9uMREwDwYDVQQKDAhTU0wgQ29ycDEnMCUGA1UE
# AwweU1NMLmNvbSBUaW1lc3RhbXBpbmcgVW5pdCAyMDIyMFkwEwYHKoZIzj0CAQYI
# KoZIzj0DAQcDQgAE3nz6kiWUstk02cheBocqRK/WAmOOCkK/uP0dvuEDh8gMQi8m
# DCKJVS0M2qjskniOpyOI//i9Wgdyb/R3gT07uKOCAVowggFWMB8GA1UdIwQYMBaA
# FAydECWOmqcbmYdDzwh+4b2BkPTPMFEGCCsGAQUFBwEBBEUwQzBBBggrBgEFBQcw
# AoY1aHR0cDovL2NlcnQuc3NsLmNvbS9TU0wuY29tLXRpbWVTdGFtcGluZy1JLVJT
# QS1SMS5jZXIwUQYDVR0gBEowSDA8BgwrBgEEAYKpMAEDBgEwLDAqBggrBgEFBQcC
# ARYeaHR0cHM6Ly93d3cuc3NsLmNvbS9yZXBvc2l0b3J5MAgGBmeBDAEEAjAWBgNV
# HSUBAf8EDDAKBggrBgEFBQcDCDBGBgNVHR8EPzA9MDugOaA3hjVodHRwOi8vY3Js
# cy5zc2wuY29tL1NTTC5jb20tdGltZVN0YW1waW5nLUktUlNBLVIxLmNybDAdBgNV
# HQ4EFgQUBbqT0d/iFKwgKoZZMX8ocg6trF8wDgYDVR0PAQH/BAQDAgeAMA0GCSqG
# SIb3DQEBCwUAA4ICAQBaqLSWEGMNRGjMx5OTZSS2ic8Q39543mTUt4jKzr2TwDJy
# ccz3iFhqp3iOq8RnTsHsKkt4GHAj2ShGoNllU464QaRbTeaAnW52gkLlnCR739x9
# dODQYWLKpAqzMFqKNxNlHWsOPTwXmaGRTMpD62kxvyN1u+haD9QbsyPcYUhueg80
# Z95SMCIPNCYIprEQEiRMHMOCtlJNGtWjt4SfP0R4WexGdm0hEH8spuupFG7hrJLM
# c24LQkmaZO+ly30/q0jiC+UmPlgiIlXfha1D3y4RTEs8Y8G1bkQORS3XC+/qfZLk
# oIKVCPptn88K6KXV+hh6aeRH2HaVhmQ3QfUfn2yoiwueIG83drmwKxJ9UBzsHuSt
# al6o2K3pWrSGzZQOTVEuwSZpnI5S7YhjH6sP35knxjr6NZXtRxZ0RY9UCWF/a2JL
# tok7Yxkuo4lAJj+kNsorp5/JzVbYFGAqKw+TbIG5lRKs3HCCJCiJlvSMVhzkhRru
# NWbMKUhigwAXHavjXFFU8I4OkJbxot60LQFWSml1s222Uoke4TNAg7XD8FzynYW7
# XRpCZrwrwX19+e6u/nZpAd1x2C7XqMRHwpczETCfQChdKkoeoX+D04PVmy8BTQgp
# VkHjPQl7aYuRFg98LuQ5XyA6SJzcFGQzzq1TtAxrvfprHe9p2jD12U5fnL67/TCC
# BdgwggTAoAMCAQICEQDkJwSV9oyR1tDse0lOpN8cMA0GCSqGSIb3DQEBCwUAMH4x
# CzAJBgNVBAYTAlBMMSIwIAYDVQQKExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEu
# MScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxIjAgBgNV
# BAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMTgwOTExMDkyNjQ3WhcN
# MjMwOTExMDkyNjQ3WjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAO
# BgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UE
# AwwoU1NMLmNvbSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFJTQTCCAiIw
# DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAPkP3aMrfcvQKv7sZ4Wm5y4bunfh
# 4/WvpOz6Sl2RxFdHaxh3a3by/ZPkPQ/CFp4LZsNWlJ4Xg4XOVu/yFv0AYvUiCVTo
# ZRdOQbngT0aXqhvIuG5iXmmxX9sqAn78bMrzQdjt0Oj8P2FI7bADFB0QDksZ4LtO
# 7IZl/zbzXmcCC52GVWH9ejjt/uIZALdvoVBidXQ8oPrIJZK0bnoix/geoeOy3ZEx
# qysdBP+lSgQ36YWkMyv94tZVNHwZpEpox7Ko07fKoZOI68GXvIz5HdkihCR0xwQ9
# aqkpk8zruFvh/l8lqjRYyMEjVJ0bmBHDOJx+PYZspQ9AhnwC9FwCTyjLrnGfDzrI
# M/4RJTXq/LrFYD3ZfBjVsqnTdXgDciLKOsMf7yzlLqn6niy2UUb9rwPW6mBo6oUW
# NmuF6R7As93EJNyAKoFBbZQ+yODJgUEAnl6/f8UImKIYLEJAs/lvOCdLToD0PYFH
# 4Ih86hzOtXVcUS4cK38acijnALXRdMbX5J+tB5O2UzU1/Dfkw/ZdFr4hc96SCvig
# Y2q8lpJqPvi8ZVWb3vUNiSYE/CUapiVpy8JtynziWV+XrOvvLsi81xtZPCvM8hnI
# k2snYxnP/Okm+Mpxm3+T/jRnhE6Z6/yzeAkzcLpmpnbtG3PrGqUNxCITIJRWCk4s
# bE6x/c+cCbqiM+2HAgMBAAGjggFRMIIBTTASBgNVHRMBAf8ECDAGAQH/AgECMB0G
# A1UdDgQWBBTdBAkHovV6fVJTEpKV7jiAJQ2mWTAfBgNVHSMEGDAWgBQIds3LB/8k
# 9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYwNgYDVR0fBC8wLTAroCmgJ4Yl
# aHR0cDovL3NzbGNvbS5jcmwuY2VydHVtLnBsL2N0bmNhLmNybDBzBggrBgEFBQcB
# AQRnMGUwKQYIKwYBBQUHMAGGHWh0dHA6Ly9zc2xjb20ub2NzcC1jZXJ0dW0uY29t
# MDgGCCsGAQUFBzAChixodHRwOi8vc3NsY29tLnJlcG9zaXRvcnkuY2VydHVtLnBs
# L2N0bmNhLmNlcjA6BgNVHSAEMzAxMC8GBFUdIAAwJzAlBggrBgEFBQcCARYZaHR0
# cHM6Ly93d3cuY2VydHVtLnBsL0NQUzANBgkqhkiG9w0BAQsFAAOCAQEAH5WaI1Tu
# hcLz1G+56QSPRn8s9zLAp0OsBwDt4KlFLf0X4e0AQMivmKz1wBmtG6CXMEBs7Fv7
# o5NOjIliG3zwOl+nQs9YynVlnCJMv3Z7mJOcFYMzsQ7cUTiHfJWcEmmUHgB4dH7c
# wAZ3unAthyzXaJ3juoWtSfOPZLQVBoOSxpekQJOLrfFnlLS5WmdUPKgb2QXP5KT5
# iBIABoglhdRe7vOTV9aB+Cyu9/VRSKu2Yjp52+wu8j8UVjrI2cukok8lqNGbqy0w
# IFAHGm/x8ZQdOYNj6B/9SdDoHUayRoImvZyd4aJoQUhRbnr8NZb0VNK8K0TlR9d3
# gqVKq1+XM6skETCCBvwwggTkoAMCAQICEG1SGHCH6CNNhWAA0ICPk1YwDQYJKoZI
# hvcNAQELBQAwfDELMAkGA1UEBhMCVVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQH
# DAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xMTAvBgNVBAMMKFNT
# TC5jb20gUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBSU0EwHhcNMTkxMTEz
# MTg1MDA1WhcNMzQxMTEyMTg1MDA1WjBzMQswCQYDVQQGEwJVUzEOMAwGA1UECAwF
# VGV4YXMxEDAOBgNVBAcMB0hvdXN0b24xETAPBgNVBAoMCFNTTCBDb3JwMS8wLQYD
# VQQDDCZTU0wuY29tIFRpbWVzdGFtcGluZyBJc3N1aW5nIFJTQSBDQSBSMTCCAiIw
# DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK5REBPS+TwgoCCF3slQHGTJ4f3F
# 6TT/Cn8xSOhyWsVeqGH98Yf3UVz7t+bQwcITsD7CY6KoGP04OskBgareubfeMKcd
# KwIE1YBBjKhq4urwiOqxLUmVcvb2oM0wx3BnxQ3NBLu9ZkwMnjQlIY2mEwZMgDaq
# fZuiEa2BFzinXf3kRLKlQ5oa8ne3QU0vcG4qZvphy0xxBQXayqigzN3z2HQTq6N2
# 8EOjpnA2dajGPtiZ9aNJeDfcDka5j3KbhBkzk4RWCjx5vP8H6DKHIIs02GHgxv/j
# G8JMIxWY1isG+IaB09livKbxlvzhNAKZK5fQmUstrpYrVo7qqXAhJtv1tUaHzrp6
# QpuUL9dE/bSAC7UKO9xhyJSA1OsYWDx/wAmBA84JzX8IJ1olJjCEmlJ2F4o6dCAR
# KA2Zhk+EU4LogpowBReTlTW2NNwUKAW+8Cte0rhrMBZQ47Vjd92V0gEvouOTMtQJ
# gk2QVeqGwFVw8y4HSdQNa8sl8+Kay2MnyUXhLoQLFaeVaLs4SVXBOe3Ua1Gp5j3J
# 2+8Yue1T4V5wrsNuocNR3frpSt4yRIG3N68Bz1qqhk+eNUyO8WpXWlg6POZOJUdm
# 0BzzRsB8V7kst8nM8joOe03KqhunBN69Ckeo8M32qo07zeveRrDwD2P4dmJLDYBf
# lwZ1A/SQbS+HN+AHAgMBAAGjggGBMIIBfTASBgNVHRMBAf8ECDAGAQH/AgEAMB8G
# A1UdIwQYMBaAFN0ECQei9Xp9UlMSkpXuOIAlDaZZMIGDBggrBgEFBQcBAQR3MHUw
# UQYIKwYBBQUHMAKGRWh0dHA6Ly93d3cuc3NsLmNvbS9yZXBvc2l0b3J5L1NTTGNv
# bVJvb3RDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5UlNBLmNydDAgBggrBgEFBQcwAYYU
# aHR0cDovL29jc3BzLnNzbC5jb20wPwYDVR0gBDgwNjA0BgRVHSAAMCwwKgYIKwYB
# BQUHAgEWHmh0dHBzOi8vd3d3LnNzbC5jb20vcmVwb3NpdG9yeTATBgNVHSUEDDAK
# BggrBgEFBQcDCDA7BgNVHR8ENDAyMDCgLqAshipodHRwOi8vY3Jscy5zc2wuY29t
# L3NzbC5jb20tcnNhLVJvb3RDQS5jcmwwHQYDVR0OBBYEFAydECWOmqcbmYdDzwh+
# 4b2BkPTPMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAkhl1DaZa
# Qs8ZB9ny/JT6wJvwFelEllovcTPdUOUTe5mTdw/E+3JtV8u6ppyLRbpIHbYlMy20
# KJAychU6xdaci4BsP9oVNxSRMsEjfHKz7ARqPNdpclhYAINLjsFGMO1iUNbXiAsn
# F/xboNCgfeMcMYbLyQYkU6UMobv9isrtQZ8e0EAQNV7qXJn4W0KyuTt0P8iIv/5D
# dDpIUBIktDZcjz2KEW6B1gvvsKIM1esjYwWylAazBcQAake5pANMdSn8t1HdPKsi
# wuWfOguyRQazAX8oXz6SlZSIok0Lis9a02vGVtdhEaB0R3HxIyNRMMKWV1yuSeUX
# FuoexWav3GRPZC0WYb50SrW/l+wgrS8doetaMwyZon2L7ioYlIPSy1h9Dq/Q911P
# sSkbEZ3zrsB1roVnIfBu5BJp0xvQrQ/Q4LavuvCoFR7QFoypNrotbNYi2AGMZw5t
# d4zGZtCqUTPZi0BwSuRm+HRYAEMMThTwbJX/fYV1oC8mBN970yIvadIGKhh7+DmY
# dRJYBrL8inVFCZAK+YX2w1+qWEnCSPL/VTWJtSRMhQFfceDKbJC+pBNksvKzqkva
# 0J1ZyMj1i4vDfSuBmbz4rfzsvvJxS+quZDdkmW6MeXevWGBXvqzdbAw+AqTVsAQU
# yP6tFeKZIL4S/fSFdl2rIx2X+KXkqx3S+EYxggJZMIICVQIBATCBhzBzMQswCQYD
# VQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hvdXN0b24xETAPBgNV
# BAoMCFNTTCBDb3JwMS8wLQYDVQQDDCZTU0wuY29tIFRpbWVzdGFtcGluZyBJc3N1
# aW5nIFJTQSBDQSBSMQIQGtYIp9Y0tc3el8ujzPDQSzALBglghkgBZQMEAgGgggFh
# MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjMw
# OTAxMTIwMTIzWjAoBgkqhkiG9w0BCTQxGzAZMAsGCWCGSAFlAwQCAaEKBggqhkjO
# PQQDAjAvBgkqhkiG9w0BCQQxIgQgx//C0ntOlScaz3qSvCPmmNksqxIsN+4EZ7EL
# IncXlyAwgckGCyqGSIb3DQEJEAIvMYG5MIG2MIGzMIGwBCCNxcQlQtJPFc/1yBlu
# 1FqDaNTK1r3L5CGp3iNQnYvTIjCBizB3pHUwczELMAkGA1UEBhMCVVMxDjAMBgNV
# BAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMREwDwYDVQQKDAhTU0wgQ29ycDEv
# MC0GA1UEAwwmU1NMLmNvbSBUaW1lc3RhbXBpbmcgSXNzdWluZyBSU0EgQ0EgUjEC
# EBrWCKfWNLXN3pfLo8zw0EswCgYIKoZIzj0EAwIESDBGAiEAsL9Q1es2z+PQplyv
# 77X7HNr4xdF0upIvdEC40/+NVeMCIQCKieaBnl2/UD32H1gpHwAFfP+H2olR0l4l
# o7lihdBLlg==
# SIG # End signature block