Cisco.UCS.DesiredStateConfiguration.psm1



Function Get-UcsConnection
{
 param(
            
        [parameter(Mandatory = $true,HelpMessage="Please specify using format: 'Name=<ipAddress> [`nNoSsl=<bool>][`nPort=<ushort>] [`nProxyAddress=<proxyAddress>] [`nUseProxyDefaultCredentials=<bool>]'")]
        [System.String]
        $UcsConnectionString,

        [parameter(Mandatory = $true)]
        [System.Management.Automation.PSCredential]
        $UcsCredentials,

        [System.Management.Automation.PSCredential]
        $WebProxyCredentials
        
        ) 
    Write-Verbose("Started execution of Get-UcsConnection() method")
    $handle=$null
    Import-Module "Cisco.UCSManager"
    $connMap=  ConvertFrom-StringData -StringData $UcsConnectionString
   # Write-Host($connMap)

    $ipAddress = $null
    $noSsl = $false
    $port = $null
    $proxyAddress = $null
    $useProxyDefaultCredentials = $false
    #Write-Host("check name key")
    if($connMap.ContainsKey("Name"))
    {
    # Write-Host("Name key is present")
        $ipAddress= $connMap["Name"]
    }
    if($connMap.ContainsKey("NoSsl"))
    {
        $noSsl=   [System.Boolean]::Parse($connMap["NoSsl"])
    }
    if($connMap.ContainsKey("Port"))
    {
        $port=$connMap["Port"] 
    }
    if($connMap.ContainsKey("ProxyAddress"))
    {
        $proxyAddress= $connMap["ProxyAddress"]
    }
    if($connMap.ContainsKey("UseProxyDefaultCredentials"))
    {
        $useProxyDefaultCredentials = [System.Boolean]::Parse($connMap["UseProxyDefaultCredentials"])
    }
  # Write-Host("IPAddress"+ $ipAddress)

    if([string]::IsNullOrEmpty($proxyAddress))
     {
        if(-not($noSsl) -and [string]::IsNullOrEmpty($port))
        {
            Write-Verbose("Using cmdlet Connect-Ucs $ipAddress -Credential $UcsCredentials.")
            $handle= Connect-Ucs $ipAddress -Credential $UcsCredentials
        }
        elseif($noSsl -and [string]::IsNullOrEmpty($port) )
        {
            Write-Verbose("Using cmdlet Connect-Ucs $ipAddress -Credential $UcsCredentials -NoSsl.")
            $handle= Connect-Ucs $ipAddress -Credential $UcsCredentials -NoSsl
        }

        elseif(-not ($noSsl) -and (-not [string]::IsNullOrEmpty($port)) )
        {
            Write-Verbose("Using cmdlet Connect-Ucs $ipAddress -Credential $UcsCredentials -Port $port.")
            $handle= Connect-Ucs $ipAddress -Credential $UcsCredentials -Port $port
        }

        elseif( $noSsl -and (-not [string]::IsNullOrEmpty($port)) )
        {
            Write-Verbose("Using cmdlet Connect-Ucs $ipAddress -Credential $UcsCredentials -Port $port -NoSsl")
            $handle= Connect-Ucs $ipAddress -Credential $UcsCredentials -Port $port -NoSsl
        }
       
    }
    else 
   
    {
        $proxy= New-Object 'System.Net.WebProxy'
        $proxy.Address = $proxyAddress
        if($WebProxyCredentials -ne $null)
        {
          $proxy.Credentials = $WebProxyCredentials
        }
        if($useProxyDefaultCredentials)
        {
            $proxy.UseDefaultCredentials = $true
        }
        else
        {
            $proxy.UseDefaultCredentials = $false
        }
           
        if(-not($noSsl) -and [string]::IsNullOrEmpty($port))
        {
            Write-Verbose("Using cmdlet Connect-Ucs $ipAddress -Credential $UcsCredentials -Proxy $proxy.")
            $handle= Connect-Ucs $ipAddress -Credential $UcsCredentials -Proxy $proxy
        }
        elseif($noSsl -and [string]::IsNullOrEmpty($port) )
        {
            Write-Verbose("Using cmdlet Connect-Ucs $ipAddress -Credential $UcsCredentials -NoSsl -Proxy $proxy.")
            $handle= Connect-Ucs $ipAddress -Credential $UcsCredentials -NoSsl -Proxy $proxy
        }
        elseif(-not ($noSsl) -and (-not [string]::IsNullOrEmpty($port)) )
        {
            Write-Verbose("Using cmdlet Connect-Ucs $ipAddress -Credential $UcsCredentials -Port $port -Proxy $proxy.")
            $handle= Connect-Ucs $ipAddress -Credential $UcsCredentials -Port $port -Proxy $proxy
        }
        elseif( $noSsl -and ($connMap.ContainsKey("Port")) )
        {
            Write-Verbose("Using cmdlet Connect-Ucs $ipAddress -Credential $UcsCredentials -Port $port -NoSsl -Proxy $proxy")
            $handle= Connect-Ucs $ipAddress -Credential $UcsCredentials -Port $port -NoSsl -Proxy $proxy
        }
    
    }
    

   
     Write-Verbose("Completed execution of Get-UcsConnection() method")

    return $handle
} 



Function Get-ImcConnection
{
 param(
            
        [parameter(Mandatory = $true,HelpMessage="Please specify using format: 'Name=<ipAddress> [`nNoSsl=<bool>][`nPort=<ushort>] [`nProxyAddress=<proxyAddress>] [`nUseProxyDefaultCredentials=<bool>]'")]
        [System.String]
        $ImcConnectionString,

        [parameter(Mandatory = $true)]
        [System.Management.Automation.PSCredential]
        $ImcCredentials,

        [System.Management.Automation.PSCredential]
        $WebProxyCredentials
        
        ) 
    Write-Verbose("Started execution of Get-ImcConnection() method")
    $handle=$null
    Import-Module "Cisco.IMC"
    $connMap=  ConvertFrom-StringData -StringData $ImcConnectionString
   # Write-Host($connMap)

    $ipAddress = $null
    $noSsl = $false
    $port = $null
    $proxyAddress = $null
    $useProxyDefaultCredentials = $false
    #Write-Host("check name key")
    if($connMap.ContainsKey("Name"))
    {
    # Write-Host("Name key is present")
        $ipAddress= $connMap["Name"]
    }
    if($connMap.ContainsKey("NoSsl"))
    {
        $noSsl=   [System.Boolean]::Parse($connMap["NoSsl"])
    }
    if($connMap.ContainsKey("Port"))
    {
        $port=$connMap["Port"] 
    }
    if($connMap.ContainsKey("ProxyAddress"))
    {
        $proxyAddress= $connMap["ProxyAddress"]
    }
    if($connMap.ContainsKey("UseProxyDefaultCredentials"))
    {
        $useProxyDefaultCredentials = [System.Boolean]::Parse($connMap["UseProxyDefaultCredentials"])
    }
  # Write-Host("IPAddress"+ $ipAddress)

    if([string]::IsNullOrEmpty($proxyAddress))
     {
        if(-not($noSsl) -and [string]::IsNullOrEmpty($port))
        {
            Write-Verbose("Using cmdlet Connect-Imc $ipAddress -Credential $ImcCredentials.")
            $handle= Connect-Imc $ipAddress -Credential $ImcCredentials
        }
        elseif($noSsl -and [string]::IsNullOrEmpty($port) )
        {
            Write-Verbose("Using cmdlet Connect-Imc $ipAddress -Credential $ImcCredentials -NoSsl.")
            $handle= Connect-Imc $ipAddress -Credential $ImcCredentials -NoSsl
        }

        elseif(-not ($noSsl) -and (-not [string]::IsNullOrEmpty($port)) )
        {
            Write-Verbose("Using cmdlet Connect-Imc $ipAddress -Credential $ImcCredentials -Port $port.")
            $handle= Connect-Imc $ipAddress -Credential $ImcCredentials -Port $port
        }

        elseif( $noSsl -and (-not [string]::IsNullOrEmpty($port)) )
        {
            Write-Verbose("Using cmdlet Connect-Imc $ipAddress -Credential $ImcCredentials -Port $port -NoSsl")
            $handle= Connect-Imc $ipAddress -Credential $ImcCredentials -Port $port -NoSsl
        }
       
    }
    else 
   
    {
        $proxy= New-Object 'System.Net.WebProxy'
        $proxy.Address = $proxyAddress
        if($WebProxyCredentials -ne $null)
        {
          $proxy.Credentials = $WebProxyCredentials
        }
        if($useProxyDefaultCredentials)
        {
            $proxy.UseDefaultCredentials = $true
        }
        else
        {
            $proxy.UseDefaultCredentials = $false
        }
           
        if(-not($noSsl) -and [string]::IsNullOrEmpty($port))
        {
            Write-Verbose("Using cmdlet Connect-Imc $ipAddress -Credential $ImcCredentials -Proxy $proxy.")
            $handle= Connect-Imc $ipAddress -Credential $ImcCredentials -Proxy $proxy
        }
        elseif($noSsl -and [string]::IsNullOrEmpty($port) )
        {
            Write-Verbose("Using cmdlet Connect-Imc $ipAddress -Credential $ImcCredentials -NoSsl -Proxy $proxy.")
            $handle= Connect-Imc $ipAddress -Credential $ImcCredentials -NoSsl -Proxy $proxy
        }
        elseif(-not ($noSsl) -and (-not [string]::IsNullOrEmpty($port)) )
        {
            Write-Verbose("Using cmdlet Connect-Imc $ipAddress -Credential $ImcCredentials -Port $port -Proxy $proxy.")
            $handle= Connect-Imc $ipAddress -Credential $ImcCredentials -Port $port -Proxy $proxy
        }
        elseif( $noSsl -and ($connMap.ContainsKey("Port")) )
        {
            Write-Verbose("Using cmdlet Connect-Imc $ipAddress -Credential $ImcCredentials -Port $port -NoSsl -Proxy $proxy")
            $handle= Connect-Imc $ipAddress -Credential $ImcCredentials -Port $port -NoSsl -Proxy $proxy
        }
    
    }
     Write-Verbose("Completed execution of Get-ImcConnection() method")

    return $handle
} 

# SIG # Begin signature block
# MIIYyQYJKoZIhvcNAQcCoIIYujCCGLYCAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCB9jU1LF3GyQK/+
# GdcRzuJ7Wtd695CO7Mky+p5SHn5QvKCCExAwggQVMIIC/aADAgECAgsEAAAAAAEx
# icZQBDANBgkqhkiG9w0BAQsFADBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3Qg
# Q0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
# bjAeFw0xMTA4MDIxMDAwMDBaFw0yOTAzMjkxMDAwMDBaMFsxCzAJBgNVBAYTAkJF
# MRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTEwLwYDVQQDEyhHbG9iYWxTaWdu
# IFRpbWVzdGFtcGluZyBDQSAtIFNIQTI1NiAtIEcyMIIBIjANBgkqhkiG9w0BAQEF
# AAOCAQ8AMIIBCgKCAQEAqpuOw6sRUSUBtpaU4k/YwQj2RiPZRcWVl1urGr/SbFfJ
# MwYfoA/GPH5TSHq/nYeer+7DjEfhQuzj46FKbAwXxKbBuc1b8R5EiY7+C94hWBPu
# TcjFZwscsrPxNHaRossHbTfFoEcmAhWkkJGpeZ7X61edK3wi2BTX8QceeCI2a3d5
# r6/5f45O4bUIMf3q7UtxYowj8QM5j0R5tnYDV56tLwhG3NKMvPSOdM7IaGlRdhGL
# D10kWxlUPSbMQI2CJxtZIH1Z9pOAjvgqOP1roEBlH1d2zFuOBE8sqNuEUBNPxtyL
# ufjdaUyI65x7MCb8eli7WbwUcpKBV7d2ydiACoBuCQIDAQABo4HoMIHlMA4GA1Ud
# DwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBSSIadKlV1k
# sJu0HuYAN0fmnUErTDBHBgNVHSAEQDA+MDwGBFUdIAAwNDAyBggrBgEFBQcCARYm
# aHR0cHM6Ly93d3cuZ2xvYmFsc2lnbi5jb20vcmVwb3NpdG9yeS8wNgYDVR0fBC8w
# LTAroCmgJ4YlaHR0cDovL2NybC5nbG9iYWxzaWduLm5ldC9yb290LXIzLmNybDAf
# BgNVHSMEGDAWgBSP8Et/qC5FJK5NUPpjmove4t0bvDANBgkqhkiG9w0BAQsFAAOC
# AQEABFaCSnzQzsm/NmbRvjWek2yX6AbOMRhZ+WxBX4AuwEIluBjH/NSxN8RooM8o
# agN0S2OXhXdhO9cv4/W9M6KSfREfnops7yyw9GKNNnPRFjbxvF7stICYePzSdnno
# 4SGU4B/EouGqZ9uznHPlQCLPOc7b5neVp7uyy/YZhp2fyNSYBbJxb051rvE9ZGo7
# Xk5GpipdCJLxo/MddL9iDSOMXCo4ldLA1c3PiNofKLW6gWlkKrWmotVzr9xG2wSu
# kdduxZi61EfEVnSAR3hYjL7vK/3sbL/RlPe/UOB74JD9IBh4GCJdCC6MHKCX8x2Z
# faOdkdMGRE4EbnocIOM28LZQuTCCBLkwggOhoAMCAQICEhEh7ZAYyqknt2JsUmuQ
# bZP1ZzANBgkqhkiG9w0BAQsFADBbMQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xv
# YmFsU2lnbiBudi1zYTExMC8GA1UEAxMoR2xvYmFsU2lnbiBUaW1lc3RhbXBpbmcg
# Q0EgLSBTSEEyNTYgLSBHMjAeFw0xNjA1MjQwMDAwMDBaFw0yNzA2MjQwMDAwMDBa
# MGkxCzAJBgNVBAYTAlNHMR8wHQYDVQQKExZHTU8gR2xvYmFsU2lnbiBQdGUgTHRk
# MTkwNwYDVQQDEzBHbG9iYWxTaWduIFRTQSBmb3IgTVMgQXV0aGVudGljb2RlIGFk
# dmFuY2VkIC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZeGGh
# lq4S/6P/J/ZEYHtqVi1n41+fMZIqSO35BYQObU4iVsrYmZeOacqfew8IyCoraNEo
# YSuf5Cbuurj3sOxeahviWLW0vR0J7c3oPdRm/74iIm02Js8ReJfpVQAow+k3Tr0Z
# 5ReESLIcIa3sc9LzqKfpX+g1zoUTpyKbrILp/vFfxBJasfcMQObSoOBNaNDtDAwQ
# HY8FX2RV+bsoRwYM2AY/N8MmNiWMew8niFw4MaUB9l5k3oPAFFzg59JezI3qI4AZ
# KrNiLmDHqmfWs0DuUn9WDO/ZBdeVIF2FFUDPXpGVUZ5GGheRvsHAB3WyS/c2usVU
# bF+KG/sNKGHIifAVAgMBAAGjggFnMIIBYzAOBgNVHQ8BAf8EBAMCB4AwTAYDVR0g
# BEUwQzBBBgkrBgEEAaAyAR4wNDAyBggrBgEFBQcCARYmaHR0cHM6Ly93d3cuZ2xv
# YmFsc2lnbi5jb20vcmVwb3NpdG9yeS8wCQYDVR0TBAIwADAWBgNVHSUBAf8EDDAK
# BggrBgEFBQcDCDBGBgNVHR8EPzA9MDugOaA3hjVodHRwOi8vY3JsLmdsb2JhbHNp
# Z24uY29tL2dzL2dzdGltZXN0YW1waW5nc2hhMmcyLmNybDBYBggrBgEFBQcBAQRM
# MEowSAYIKwYBBQUHMAKGPGh0dHA6Ly9zZWN1cmUuZ2xvYmFsc2lnbi5jb20vY2Fj
# ZXJ0L2dzdGltZXN0YW1waW5nc2hhMmcyLmNydDAdBgNVHQ4EFgQU1Ie4jeblQDyd
# WgZjxkWE2d27HMMwHwYDVR0jBBgwFoAUkiGnSpVdZLCbtB7mADdH5p1BK0wwDQYJ
# KoZIhvcNAQELBQADggEBABoNyP1vM0bImb43n4V/cnSxcc06JzuIVi37tGenLYff
# KO1667xpZdausb09yZuHFFrHHYfznXWCVD+Vd3XztEpqa5bvGaLH9y7tkBvUEY3K
# So2uf3J3uV/eUfQhPuWkZzteLiDC8ZeeeurddHqy+0MEr/rotNESYXqW6WWOT20i
# pdcM56kNGJ+29yN/LRgAntrES7Pn4QJwQPw9RSrLhph3XeDyLHewBRqkAkZruhsR
# C+rn5sHU7jMjMgCappWM+ioqyY2tZC+Lvtf/OvNDj84v1ky7ta8SgXko9x+7hRCK
# P8nTyPi0c2TE5yBMWRvKiTTR7MKKCtZ51dovtPZ1554wggTZMIIDwaADAgECAhAg
# dYM+s4RF6K1Qb3IlJSFAMA0GCSqGSIb3DQEBCwUAMH8xCzAJBgNVBAYTAlVTMR0w
# GwYDVQQKExRTeW1hbnRlYyBDb3Jwb3JhdGlvbjEfMB0GA1UECxMWU3ltYW50ZWMg
# VHJ1c3QgTmV0d29yazEwMC4GA1UEAxMnU3ltYW50ZWMgQ2xhc3MgMyBTSEEyNTYg
# Q29kZSBTaWduaW5nIENBMB4XDTE2MTEwOTAwMDAwMFoXDTE5MTEyNjIzNTk1OVow
# cTELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExETAPBgNVBAcMCFNh
# biBKb3NlMRwwGgYDVQQKDBNDaXNjbyBTeXN0ZW1zLCBJbmMuMRwwGgYDVQQDDBND
# aXNjbyBTeXN0ZW1zLCBJbmMuMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
# AQEAsuVUjhvmUZmLRkdteMgyU8Mu8XoLvGMcle2lHnNO9rGdA2+Oz7nviMATnvJG
# MXHCYqpaqjIcqhI07dieXGNST9u4OTjeb9AjWq2uz7XiLgqKneWYzYg4l4Wx0vGm
# w9ZIN1qS8WrLP4fVbXbrpfjYTku1ST0ouq38I/X21sDiRvISxJGMl9D5m+6BTKTY
# 1hNnwZqKsk+veV33GWzsY4jgm0Ix+q/Z6WFRHnS8z1h5zrqKXgY2BLgB/fdLPY7Z
# cDc5zPTaSbtd1LmxMisdlKOkClASa66AkGbbBhDSXA6V01sxbrVUD+8yw5HxjSkB
# dvaGiv163Z50O9jbUZhAKjeTBQIDAQABo4IBXTCCAVkwCQYDVR0TBAIwADAOBgNV
# HQ8BAf8EBAMCB4AwKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL3N2LnN5bWNiLmNv
# bS9zdi5jcmwwYQYDVR0gBFowWDBWBgZngQwBBAEwTDAjBggrBgEFBQcCARYXaHR0
# cHM6Ly9kLnN5bWNiLmNvbS9jcHMwJQYIKwYBBQUHAgIwGQwXaHR0cHM6Ly9kLnN5
# bWNiLmNvbS9ycGEwEwYDVR0lBAwwCgYIKwYBBQUHAwMwVwYIKwYBBQUHAQEESzBJ
# MB8GCCsGAQUFBzABhhNodHRwOi8vc3Yuc3ltY2QuY29tMCYGCCsGAQUFBzAChhpo
# dHRwOi8vc3Yuc3ltY2IuY29tL3N2LmNydDAfBgNVHSMEGDAWgBSWO1PweTOXr32D
# 7y4rzMq3hh5yZjAdBgNVHQ4EFgQUwmh+ziCvAomdQWbz+MKGFJTJWoAwDQYJKoZI
# hvcNAQELBQADggEBACgChN6Dp2LOyxEkn3a3TpgUR0j47OO/XZHDxjVD9Int6bCI
# WoXKlD1j+U9L0uSBfHMgVYFeYLEWw8+kZCHRIb7nqib7ahmSPboTami7bfzaYFJF
# b8ZttE+gYYM9Dgfa5/keTiu7gCr9EZqQliTcHXS7S8xkBgqijmoc8MgN1M9Npg6U
# /PKH7tMdIlYI6qUK9JCx3hsADBqsk791vtC8gNUS3e0CyWX/M4BZNBUW7ys2Ohpd
# YcWjwnYm4Wu9wCDOgDP02yXx/9f9midjg7UVV4D5Ngh1+kg8mWRHW2wmLW0knvi6
# wpPlXhnR1fwlWAniCdO2MKfxgL3FaKFQ8NqlyNAwggVZMIIEQaADAgECAhA9eNf5
# dklgsmF99PAeyoYqMA0GCSqGSIb3DQEBCwUAMIHKMQswCQYDVQQGEwJVUzEXMBUG
# A1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5l
# dHdvcmsxOjA4BgNVBAsTMShjKSAyMDA2IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1
# dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVi
# bGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHNTAeFw0xMzEy
# MTAwMDAwMDBaFw0yMzEyMDkyMzU5NTlaMH8xCzAJBgNVBAYTAlVTMR0wGwYDVQQK
# ExRTeW1hbnRlYyBDb3Jwb3JhdGlvbjEfMB0GA1UECxMWU3ltYW50ZWMgVHJ1c3Qg
# TmV0d29yazEwMC4GA1UEAxMnU3ltYW50ZWMgQ2xhc3MgMyBTSEEyNTYgQ29kZSBT
# aWduaW5nIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAl4MeABav
# LLHSCMTXaJNRYB5x9uJHtNtYTSNiarS/WhtR96MNGHdou9g2qy8hUNqe8+dfJ04L
# wpfICXCTqdpcDU6kDZGgtOwUzpFyVC7Oo9tE6VIbP0E8ykrkqsDoOatTzCHQzM9/
# m+bCzFhqghXuPTbPHMWXBySO8Xu+MS09bty1mUKfS2GVXxxw7hd924vlYYl4x2gb
# rxF4GpiuxFVHU9mzMtahDkZAxZeSitFTp5lbhTVX0+qTYmEgCscwdyQRTWKDtrp7
# aIIx7mXK3/nVjbI13Iwrb2pyXGCEnPIMlF7AVlIASMzT+KV93i/XE+Q4qITVRrgT
# hsIbnepaON2b2wIDAQABo4IBgzCCAX8wLwYIKwYBBQUHAQEEIzAhMB8GCCsGAQUF
# BzABhhNodHRwOi8vczIuc3ltY2IuY29tMBIGA1UdEwEB/wQIMAYBAf8CAQAwbAYD
# VR0gBGUwYzBhBgtghkgBhvhFAQcXAzBSMCYGCCsGAQUFBwIBFhpodHRwOi8vd3d3
# LnN5bWF1dGguY29tL2NwczAoBggrBgEFBQcCAjAcGhpodHRwOi8vd3d3LnN5bWF1
# dGguY29tL3JwYTAwBgNVHR8EKTAnMCWgI6Ahhh9odHRwOi8vczEuc3ltY2IuY29t
# L3BjYTMtZzUuY3JsMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDAzAOBgNV
# HQ8BAf8EBAMCAQYwKQYDVR0RBCIwIKQeMBwxGjAYBgNVBAMTEVN5bWFudGVjUEtJ
# LTEtNTY3MB0GA1UdDgQWBBSWO1PweTOXr32D7y4rzMq3hh5yZjAfBgNVHSMEGDAW
# gBR/02Wnwt3su/AwCfNDOfoCrzMxMzANBgkqhkiG9w0BAQsFAAOCAQEAE4UaHmmp
# N/egvaSvfh1hU/6djF4MpnUeeBcj3f3sGgNVOftxlcdlWqeOMNJEWmHbcG/aIQXC
# LnO6SfHRk/5dyc1eA+CJnj90Htf3OIup1s+7NS8zWKiSVtHITTuC5nmEFvwosLFH
# 8x2iPu6H2aZ/pFalP62ELinefLyoqqM9BAHqupOiDlAiKRdMh+Q6EV/WpCWJmwVr
# L7TJAUwnewusGQUioGAVP9rJ+01Mj/tyZ3f9J5THujUOiEn+jf0or0oSvQ2zlwXe
# RAwV+jYrA9zBUAHxoRFdFOXivSdLVL4rhF4PpsN0BQrvl8OJIrEfd/O9zUPU8Uyp
# P7WLhK9k8tAUITGCBQ8wggULAgEBMIGTMH8xCzAJBgNVBAYTAlVTMR0wGwYDVQQK
# ExRTeW1hbnRlYyBDb3Jwb3JhdGlvbjEfMB0GA1UECxMWU3ltYW50ZWMgVHJ1c3Qg
# TmV0d29yazEwMC4GA1UEAxMnU3ltYW50ZWMgQ2xhc3MgMyBTSEEyNTYgQ29kZSBT
# aWduaW5nIENBAhAgdYM+s4RF6K1Qb3IlJSFAMA0GCWCGSAFlAwQCAQUAoIGEMBgG
# CisGAQQBgjcCAQwxCjAIoAKAAKECgAAwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcC
# AQQwHAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIE
# ILuncVcZF+HB0sCKbWAiBejKD9VvbBc5J9zcigRZBTNgMA0GCSqGSIb3DQEBAQUA
# BIIBABqpqiB3jRkBkWlGThUDH3+peImXPTX0hMhgVMJWrrsfCxHcwsY06okN+iLC
# ArSXDHfWe4GEMouulwri+nxhLhDahBzWPNxBUx99s3SRqytVOoeb51urV3wQuZKX
# eqxq+SrSqYlVNhNWkL6Njlw1ky6sx5vv+aQhAy4wAUTf858Zm7/tRaW6l2wDdptJ
# 8KzNgQrKujV7OHeYe149UOGqWNiRGK7NoVVY4DIxCty8ZxTQvcm4gj7Lk1QNWyd3
# /jXSyi+10uSYwrtGxSiA6SNuyqylKNKI1i8xayKeU07Hs5CdmrKLW1o/I/SzF30H
# dst0LVBmqCQ8Rgr0OBC71v0YtluhggLFMIICwQYJKoZIhvcNAQkGMYICsjCCAq4C
# AQEwcTBbMQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEx
# MC8GA1UEAxMoR2xvYmFsU2lnbiBUaW1lc3RhbXBpbmcgQ0EgLSBTSEEyNTYgLSBH
# MgISESHtkBjKqSe3YmxSa5Btk/VnMA0GCWCGSAFlAwQCAQUAoIIBEjAYBgkqhkiG
# 9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xNzExMTQxNzE2NDla
# MC8GCSqGSIb3DQEJBDEiBCBj7PJTybDDS8vSiDJNAMe6oWDw25W5oAf8AFofpGGW
# CjCBpgYLKoZIhvcNAQkQAgwxgZYwgZMwgZAwgY0EFDfAQYyoSAu6zgLgAOyIRq09
# tpHsMHUwX6RdMFsxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52
# LXNhMTEwLwYDVQQDEyhHbG9iYWxTaWduIFRpbWVzdGFtcGluZyBDQSAtIFNIQTI1
# NiAtIEcyAhIRIe2QGMqpJ7dibFJrkG2T9WcwDQYJKoZIhvcNAQEBBQAEggEAaMS9
# Bo5rhluZqrouGsQ/keq3UnRvV1asoqy6YbpO7SDSIOzP8g5/CWBs09ZlDbz8GhdM
# zuYst4y1fTpfWoTAhuXaQ/b1R9t53aDXyao7QfKTVSHl5Rg9oU4wvrU2deJN/MWe
# tLwZbVK+d9v2leBtQI+G79wJ++ctSxAaOmnu2U0Dr2034ToNhCeT/aNkWLbfMO66
# PngRmw2vRmffhSFhYB8PGDP5yj6Cz8MS5P6h8fCeGoyUm8Szq7qweWQcAR8I/a0T
# 4OKtPUISkjSw9hNEj6gaFx5GThT8URX3cBzlmEpKnirdyWythnRIaCQF0CzNy8hd
# +ZE52i4xg5Gmm1yZkA==
# SIG # End signature block