DSCResources/DCPP_USBConfiguration/DCPP_USBConfiguration.psm1
# Import the helper functions Import-Module $PSScriptRoot\..\..\Misc\helper.psm1 -Verbose:$false function Get-TargetResource { [CmdletBinding()] [OutputType([System.Collections.Hashtable])] param ( [parameter(Mandatory = $true)] [System.String] $Category ) #Write-Verbose "Use this cmdlet to deliver information about command processing." #Write-Debug "Use this cmdlet to write debug information while troubleshooting." <# $returnValue = @{ Category = [System.String] MultiCoreSupport = [System.String] IntelSpeedStep = [System.String] CStates = [System.String] IntelTurboBoost = [System.String] HyperThreadControl = [System.String] Password = [System.String] SecurePassword = [System.String] PathToKey = [System.String] } $returnValue #> # Check if module DellBIOSprovider is already loaded. If not, load it. try{ $bool = Confirm-DellPSDrive -verbose } catch { write-Verbose $_ $msg = "Get-TargetResource: $($_.Exception.Message)" Write-DellEventLog -Message $msg -EventID 1 -EntryType 'Error' write-Verbose "Exiting Get-TargetResource" return } if ($bool) { Write-Verbose "Dell PS-Drive DellSmbios is found." } else{ $Message = “Get-TargetResource: Module DellBiosProvider was imported correctly." Write-DellEventLog -Message $Message -EventID 2 } $Get = get-childitem -path @("DellSmbios:\" + $Category) # Removing Verbose and Debug from output $PSBoundParameters.Remove("Verbose") | out-null $PSBoundParameters.Remove("Debug") | out-null $out = @{} $Get | foreach-Object {$out.Add($_.Attribute, $_.CurrentValue)} $out.add('Category', $Category ) $out } function Set-TargetResource { [CmdletBinding()] param ( [parameter(Mandatory = $true)] [System.String] $Category, [ValidateSet("Enabled","Disabled","EnabledWithNoUSBBoot")] [System.String] $UsbEmu, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPortsInternal, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPortsExternal, [ValidateSet("Enabled","Disabled")] [System.String] $Usb30, [ValidateSet("Enabled","Disabled")] [System.String] $DisableDockingStationDevicesexceptvideo, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPortsSide, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPortsFront, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPortsRear1, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPortsRear2, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPortsRear3, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPortsRear4, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPortsRear5, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPortsRear6, [ValidateSet("Enabled","Disabled")] [System.String] $USBPort06, [ValidateSet("Enabled","Disabled")] [System.String] $USBPort07, [ValidateSet("Enabled","Disabled")] [System.String] $USBPort08, [ValidateSet("Enabled","Disabled")] [System.String] $USBPort09, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPortsSide1, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPortsSide2, [ValidateSet("Enabled","Disabled")] [System.String] $USBPort12, [ValidateSet("Enabled","Disabled")] [System.String] $USBPort13, [ValidateSet("Enabled","Disabled")] [System.String] $USBPort14, [ValidateSet("Enabled","Disabled")] [System.String] $USBPort15, [ValidateSet("Enabled","Disabled")] [System.String] $USBPort16, [ValidateSet("Enabled","Disabled")] [System.String] $USBPort17, [ValidateSet("Enabled","Disabled")] [System.String] $USBPort18, [ValidateSet("Enabled","Disabled")] [System.String] $USBPort19, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPortsFront1, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPortsFront2, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPortsFront3, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPortsFront4, [ValidateSet("Enabled","Disabled")] [System.String] $USBPort24, [ValidateSet("Enabled","Disabled")] [System.String] $USBPort25, [ValidateSet("Enabled","Disabled")] [System.String] $USBPort26, [ValidateSet("Enabled","Disabled")] [System.String] $USBPort27, [ValidateSet("Enabled","Disabled")] [System.String] $USBPort28, [ValidateSet("Enabled","Disabled")] [System.String] $USBPort29, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPortsRear, [ValidateSet("Enabled","Disabled")] [System.String] $RearUSB3_0Ports, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPortsInternal2, [ValidateSet("Enabled","Disabled")] [System.String] $ThunderboltPorts, [ValidateSet("NoSec","UserAuth","SecConn","DpOnly")] [System.String] $ThunderboltSecLvl, [ValidateSet("Enabled","Disabled")] [System.String] $ThunderboltBoot, [ValidateSet("Enabled","Disabled")] [System.String] $ThunderboltPreboot, [ValidateSet("Enabled","Disabled")] [System.String] $AlwaysAllowDellDocks, [ValidateSet("Enabled","Disabled")] [System.String] $UsbRearDual, [ValidateSet("Enabled","Disabled")] [System.String] $UsbRearDual2Stack, [ValidateSet("Enabled","Disabled")] [System.String] $UsbRearQuad, [ValidateSet("Enabled","Disabled")] [System.String] $FrontUsbPortCollection, [ValidateSet("Enabled","Disabled")] [System.String] $RearUsb3Ports, [System.String] $Password, [System.String] $SecurePassword, [System.String] $PathToKey ) if (-not(CheckModuleLoaded)) { Write-Verbose -Message 'Required module DellBiosProvider does not exist. Exiting.' return $true } $DellPSDrive = get-psdrive -name Dellsmbios if ( !$DellPSDrive) { $Message = "Drive DellSmbios is not found. Exiting." Write-Verbose $Message Write-DellEventLog -Message $Message -EventID 3 -EntryType "Error" return $true } $attributes_desired = $PSBoundParameters $atts = $attributes_desired $pathToCategory = $DellPSDrive.Name + ':\' + $atts["Category"] Dir $pathToCategory -verbose $atts.Remove("Verbose") | out-null $atts.Remove("Category") | out-null $atts.Remove("Debug") | out-null $securePwd=$atts["SecurePassword"] $passwordSet=$atts["Password"] $atts.Remove("Password") | Out-Null $atts.Remove("SecurePassword") | Out-Null $pathToKey=$atts["PathToKey"] if(-Not [string]::IsNullOrEmpty($pathToKey)) { if(Test-Path $pathToKey) { $key=Get-Content $pathToKey } else { $key="" } } $atts.Remove("PathToKey") | Out-Null #foreach($a in Import-Csv((Get-DellBIOSEncryptionKey))) #{ # $key+=$a # } $atts.Keys | foreach-object { # $atts[$_] $path="" if($($_) -eq "RearUSB3_0Ports") { $path = $pathToCategory + '\' + "RearUSB3.0Ports" } else { $path = $pathToCategory + '\' + $($_) } $value = $atts[$_] if(-Not [string]::IsNullOrEmpty($securePwd)) { $pasvar=ConvertTo-SecureString $securePwd.ToString() -Key $key Set-Item -path $path -value $value -verbose -ErrorVariable ev -ErrorAction SilentlyContinue -PasswordSecure $pasvar } elseif(-Not [string]::IsNullOrEmpty($passwordSet)) { Set-Item -path $path -value $value -verbose -ErrorVariable ev -ErrorAction SilentlyContinue -Password $passwordSet } else { Set-Item -path $path -value $value -verbose -ErrorVariable ev -ErrorAction SilentlyContinue } if ( $ev) { $cmdline = $ExecutionContext.InvokeCommand.ExpandString($ev.InvocationInfo.Line) $Message = "An error occured in executing " + $cmdline + "`nError message: $($ev.ErrorDetails)" Write-Verbose $Message Write-DellEventLog -Message $Message -EventID 5 -EntryType "Error" } } } function Test-TargetResource { [CmdletBinding()] [OutputType([System.Boolean])] param ( [parameter(Mandatory = $true)] [System.String] $Category, [ValidateSet("Enabled","Disabled","EnabledWithNoUSBBoot")] [System.String] $UsbEmu, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPortsInternal, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPortsExternal, [ValidateSet("Enabled","Disabled")] [System.String] $Usb30, [ValidateSet("Enabled","Disabled")] [System.String] $DisableDockingStationDevicesexceptvideo, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPortsSide, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPortsFront, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPortsRear1, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPortsRear2, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPortsRear3, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPortsRear4, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPortsRear5, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPortsRear6, [ValidateSet("Enabled","Disabled")] [System.String] $USBPort06, [ValidateSet("Enabled","Disabled")] [System.String] $USBPort07, [ValidateSet("Enabled","Disabled")] [System.String] $USBPort08, [ValidateSet("Enabled","Disabled")] [System.String] $USBPort09, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPortsSide1, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPortsSide2, [ValidateSet("Enabled","Disabled")] [System.String] $USBPort12, [ValidateSet("Enabled","Disabled")] [System.String] $USBPort13, [ValidateSet("Enabled","Disabled")] [System.String] $USBPort14, [ValidateSet("Enabled","Disabled")] [System.String] $USBPort15, [ValidateSet("Enabled","Disabled")] [System.String] $USBPort16, [ValidateSet("Enabled","Disabled")] [System.String] $USBPort17, [ValidateSet("Enabled","Disabled")] [System.String] $USBPort18, [ValidateSet("Enabled","Disabled")] [System.String] $USBPort19, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPortsFront1, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPortsFront2, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPortsFront3, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPortsFront4, [ValidateSet("Enabled","Disabled")] [System.String] $USBPort24, [ValidateSet("Enabled","Disabled")] [System.String] $USBPort25, [ValidateSet("Enabled","Disabled")] [System.String] $USBPort26, [ValidateSet("Enabled","Disabled")] [System.String] $USBPort27, [ValidateSet("Enabled","Disabled")] [System.String] $USBPort28, [ValidateSet("Enabled","Disabled")] [System.String] $USBPort29, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPortsRear, [ValidateSet("Enabled","Disabled")] [System.String] $RearUSB3_0Ports, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPortsInternal2, [ValidateSet("Enabled","Disabled")] [System.String] $FrontUsbPortCollection, [ValidateSet("Enabled","Disabled")] [System.String] $ThunderboltPorts, [ValidateSet("NoSec","UserAuth","SecConn","DpOnly")] [System.String] $ThunderboltSecLvl, [ValidateSet("Enabled","Disabled")] [System.String] $ThunderboltBoot, [ValidateSet("Enabled","Disabled")] [System.String] $ThunderboltPreboot, [ValidateSet("Enabled","Disabled")] [System.String] $AlwaysAllowDellDocks, [ValidateSet("Enabled","Disabled")] [System.String] $UsbRearDual, [ValidateSet("Enabled","Disabled")] [System.String] $UsbRearDual2Stack, [ValidateSet("Enabled","Disabled")] [System.String] $UsbRearQuad, [ValidateSet("Enabled","Disabled")] [System.String] $FrontUsbPortCollection, [ValidateSet("Enabled","Disabled")] [System.String] $RearUsb3Ports, [System.String] $Password, [System.String] $SecurePassword, [System.String] $PathToKey ) $Get = Get-TargetResource $PSBoundParameters['Category'] -verbose New-DellEventLog $PSBoundParameters.Remove("Verbose") | out-null $PSBoundParameters.Remove("Debug") | out-null $PSBoundParameters.Remove("Category") | out-null $PSBoundParameters.Remove("Password") | out-null $PSBoundParameters.Remove("SecurePassword") | out-null $attributes_desired = $PSBoundParameters $bool = $true foreach ($config_att in $PSBoundParameters.GetEnumerator()) { if ($Get.ContainsKey($config_att.Key)) { $currentvalue="" if($config_att.Key -match "RearUSB3_0Ports") { $currentvalue = $Get["RearUSB3.0Ports"] } else { $currentvalue = $Get[$config_att.Key] } $currentvalue_nospace = $currentvalue -replace " ", "" if ($config_att.Value -ne $currentvalue_nospace){ $bool = $false $drift = "`nCurrentValue: $currentvalue_nospace`nDesiredValue: $($config_att.value)" $message = "Configuration is drifted in category $Category for $($config_att.Key). $drift" write-verbose $message Write-DellEventLog -Message $message -EventID 4 -EntryType Warning } else { write-Debug "Configuration is same for $config_att." } } else { $message = "Unsupported attribute $($config_att)" Write-Verbose $message } } return $bool } Export-ModuleMember -Function *-TargetResource # SIG # Begin signature block # MIIVSQYJKoZIhvcNAQcCoIIVOjCCFTYCAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCBMoU61WYqkjzMl # NFbNJk/L15Zs45zgy4+hMDM6ctS2CqCCCiMwggTCMIIDqqADAgECAhANhLMrA8kb # dRADSKysMihfMA0GCSqGSIb3DQEBCwUAMH8xCzAJBgNVBAYTAlVTMR0wGwYDVQQK # ExRTeW1hbnRlYyBDb3Jwb3JhdGlvbjEfMB0GA1UECxMWU3ltYW50ZWMgVHJ1c3Qg # TmV0d29yazEwMC4GA1UEAxMnU3ltYW50ZWMgQ2xhc3MgMyBTSEEyNTYgQ29kZSBT # aWduaW5nIENBMB4XDTE2MDEyMDAwMDAwMFoXDTE5MDIxODIzNTk1OVowWjELMAkG # A1UEBhMCVVMxDjAMBgNVBAgTBVRleGFzMRMwEQYDVQQHEwpSb3VuZCBSb2NrMRIw # EAYDVQQKFAlEZWxsIEluYy4xEjAQBgNVBAMUCURlbGwgSW5jLjCCASIwDQYJKoZI # hvcNAQEBBQADggEPADCCAQoCggEBAIiB7p20xoJ8RMmDhIKNR/g0X6OhJWWiaLL6 # OY8sCfY9B8BhCOKzCgNQU+g5Jdu5GZ+J7G8S7evlJfhskLH4fhkGYjn4a1sPw/mD # m/qMaE4n9WLaRourdOIIWgYftCGmjrlpTq7d4rYZ+Oo+iaQTR1OIrnJ7UbV6YYKp # /buZ3pcrWAB7ox3UDeH/UigGP+QIix5mQrRmQLgZyJkg5V9EB/m2HYmQ+w13VNIf # adxPklaF1sNMJTRwzKzqZru4N7goue63NAu8COhQ9+c8MIom+VjDVuDR01UY25vQ # IVJ8Sbk3ORD20Eb6a7ZxVb29Lkn6/cOccCf6tuAe7sd9skZAbJsCAwEAAaOCAV0w # ggFZMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgeAMCsGA1UdHwQkMCIwIKAeoByG # Gmh0dHA6Ly9zdi5zeW1jYi5jb20vc3YuY3JsMGEGA1UdIARaMFgwVgYGZ4EMAQQB # MEwwIwYIKwYBBQUHAgEWF2h0dHBzOi8vZC5zeW1jYi5jb20vY3BzMCUGCCsGAQUF # BwICMBkMF2h0dHBzOi8vZC5zeW1jYi5jb20vcnBhMBMGA1UdJQQMMAoGCCsGAQUF # BwMDMFcGCCsGAQUFBwEBBEswSTAfBggrBgEFBQcwAYYTaHR0cDovL3N2LnN5bWNk # LmNvbTAmBggrBgEFBQcwAoYaaHR0cDovL3N2LnN5bWNiLmNvbS9zdi5jcnQwHwYD # VR0jBBgwFoAUljtT8Hkzl699g+8uK8zKt4YecmYwHQYDVR0OBBYEFIb5/xrKh87H # XzS6cRL1o7LqbfaDMA0GCSqGSIb3DQEBCwUAA4IBAQCFWAnqZghMKytZjfSKt94F # eB/VfyFl+3tWhPN8SFkXUdIDljd3t5dggtIYAc7TPKfOr8JngIRQmM0lOyj/bzOM # Chdb8nEbKV4R6krbF423gSVFcYoZsiCoqV2An5OrnnRDPPmgWs5wJvgwk/iGeEYE # /DQE8J0hWVr4tTQVKRaCBM4DVfK4Z2Mp5BAewp9jxvDS/cuguTQdQP+mtYxmkkXU # SyTq+olOm8YVPAw0tpRGbZjPdxK2++EIeVrTL7jscqhuMx8d985A4corhmQdZ7Un # qTurFTSdgqxqZeJiYVFqhp1c9wbCwFuCSTyJiissW+BC4lt+N2oFOSieit7gnmP8 # MIIFWTCCBEGgAwIBAgIQPXjX+XZJYLJhffTwHsqGKjANBgkqhkiG9w0BAQsFADCB # yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL # ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp # U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW # ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0 # aG9yaXR5IC0gRzUwHhcNMTMxMjEwMDAwMDAwWhcNMjMxMjA5MjM1OTU5WjB/MQsw # CQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNV # BAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxMDAuBgNVBAMTJ1N5bWFudGVjIENs # YXNzIDMgU0hBMjU2IENvZGUgU2lnbmluZyBDQTCCASIwDQYJKoZIhvcNAQEBBQAD # ggEPADCCAQoCggEBAJeDHgAWryyx0gjE12iTUWAecfbiR7TbWE0jYmq0v1obUfej # DRh3aLvYNqsvIVDanvPnXydOC8KXyAlwk6naXA1OpA2RoLTsFM6RclQuzqPbROlS # Gz9BPMpK5KrA6DmrU8wh0MzPf5vmwsxYaoIV7j02zxzFlwckjvF7vjEtPW7ctZlC # n0thlV8ccO4XfduL5WGJeMdoG68ReBqYrsRVR1PZszLWoQ5GQMWXkorRU6eZW4U1 # V9Pqk2JhIArHMHckEU1ig7a6e2iCMe5lyt/51Y2yNdyMK29qclxghJzyDJRewFZS # AEjM0/ilfd4v1xPkOKiE1Ua4E4bCG53qWjjdm9sCAwEAAaOCAYMwggF/MC8GCCsG # AQUFBwEBBCMwITAfBggrBgEFBQcwAYYTaHR0cDovL3MyLnN5bWNiLmNvbTASBgNV # HRMBAf8ECDAGAQH/AgEAMGwGA1UdIARlMGMwYQYLYIZIAYb4RQEHFwMwUjAmBggr # BgEFBQcCARYaaHR0cDovL3d3dy5zeW1hdXRoLmNvbS9jcHMwKAYIKwYBBQUHAgIw # HBoaaHR0cDovL3d3dy5zeW1hdXRoLmNvbS9ycGEwMAYDVR0fBCkwJzAloCOgIYYf # aHR0cDovL3MxLnN5bWNiLmNvbS9wY2EzLWc1LmNybDAdBgNVHSUEFjAUBggrBgEF # BQcDAgYIKwYBBQUHAwMwDgYDVR0PAQH/BAQDAgEGMCkGA1UdEQQiMCCkHjAcMRow # GAYDVQQDExFTeW1hbnRlY1BLSS0xLTU2NzAdBgNVHQ4EFgQUljtT8Hkzl699g+8u # K8zKt4YecmYwHwYDVR0jBBgwFoAUf9Nlp8Ld7LvwMAnzQzn6Aq8zMTMwDQYJKoZI # hvcNAQELBQADggEBABOFGh5pqTf3oL2kr34dYVP+nYxeDKZ1HngXI9397BoDVTn7 # cZXHZVqnjjDSRFph23Bv2iEFwi5zuknx0ZP+XcnNXgPgiZ4/dB7X9ziLqdbPuzUv # M1ioklbRyE07guZ5hBb8KLCxR/Mdoj7uh9mmf6RWpT+thC4p3ny8qKqjPQQB6rqT # og5QIikXTIfkOhFf1qQliZsFay+0yQFMJ3sLrBkFIqBgFT/ayftNTI/7cmd3/SeU # x7o1DohJ/o39KK9KEr0Ns5cF3kQMFfo2KwPcwVAB8aERXRTl4r0nS1S+K4ReD6bD # dAUK75fDiSKxH3fzvc1D1PFMqT+1i4SvZPLQFCExggp8MIIKeAIBATCBkzB/MQsw # CQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNV # BAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxMDAuBgNVBAMTJ1N5bWFudGVjIENs # YXNzIDMgU0hBMjU2IENvZGUgU2lnbmluZyBDQQIQDYSzKwPJG3UQA0isrDIoXzAN # BglghkgBZQMEAgEFAKCBrDAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgor # BgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAvBgkqhkiG9w0BCQQxIgQgBHhWZ6BJ # iYYto4oQv9Z7Jgd8P8fzVCzBS7n7MX5fQ5EwQAYKKwYBBAGCNwIBDDEyMDCgFoAU # AEQAZQBsAGwALAAgAEkAbgBjAC6hFoAUaHR0cDovL3d3dy5kZWxsLmNvbSAwDQYJ # KoZIhvcNAQEBBQAEggEANqNyVGs8/V8Zjt2F3j4rPy813wd24Ep9Y1fdCwZpFJuy # sTSBImF1cf8HQRNbKI6Jkmo5ESfmRwa+8HdS7N2uXL1Xjxk8D+1BA+nCf6s3LERq # G3RVOqb0yb/cngzIY3STWCfN2HTnWLKgJ2mtV4qAT8gtm8ppYQbKTSm9Uw1XEEjL # if6XmGCxjg3lwahqaytzNu03PU8eRXUZFGEQphCm75qHsxGz44IwFaz947ioXman # EYK80cQWISkla9ScCxMLW8LQs/PPpth7AnW+0Ju0dya0aGQB37xVz3Htzl3RHeov # rdzlnVR3aBzWx4zUGInhoya4RbNvJmRv3QDL5z/ojKGCCAowgggGBgorBgEEAYI3 # AwMBMYIH9jCCB/IGCSqGSIb3DQEHAqCCB+MwggffAgEDMQ8wDQYJYIZIAWUDBAIB # BQAwbQYLKoZIhvcNAQkQAQSgXgRcMFoCAQEGCmCGSAGG/W4BBxgwMTANBglghkgB # ZQMEAgEFAAQg/lIVHtsAyB57RGGr8Ll2NkVLGY8jxP3hRFuiiu4HPLECBRnc4rHH # GA8yMDE3MTEyMjA4NDgzMlqgggTxMIIE7TCCA9WgAwIBAgIIPG49fSM2JU0wDQYJ # KoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMw # EQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQgVGVjaG5vbG9n # aWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB # dXRob3JpdHkgLSBHMjAeFw0xNjEyMTMwNzAwMDBaFw0yMTEyMTMwNzAwMDBaMIGI # MQswCQYDVQQGEwJVUzEQMA4GA1UECBMHQXJpem9uYTETMBEGA1UEBxMKU2NvdHRz # ZGFsZTElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjErMCkG # A1UEAxMiU3RhcmZpZWxkIFRpbWVzdGFtcCBBdXRob3JpdHkgLSBHMjCCASIwDQYJ # KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMMSt+zDfQd/+EDESIH4xIOLzJkCgOFq # yWKYMsVjvYH7vCdlU0EAGu2AlzYiIjKbaGYLbQFtOf+ohaiLl6ewX04FImdW6c97 # 5Uoie+XnMGYOVySnWHIXv/q6fFX7Rgwh50vOMCDuKHCCpx3MrYU5g0kP3J+Psv9j # E2Nc0jkOeHQadrpVTo8HGCWoz7XCLFIfCdjjWkoDLu4B0/9yehNaC+ZwrOy9cnUE # NhnE/+0WMIoUdOLkD/Eq24ATVBVXBe7Q3o4/7hzYWPoABigrHpB6q1u1ILpB+Ze2 # K3rdWz4t93k+yqCybnZVFKuJZy53VS4PDszfiRHfIEZo2TZGBgIVfX8CAwEAAaOC # AVAwggFMMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgbAMBYGA1UdJQEB/wQM # MAoGCCsGAQUFBwMIMB0GA1UdDgQWBBTFhkohftnytX2hAaysXl3+FYL3vzAfBgNV # HSMEGDAWgBR8DDIfp9kwf8R9aKNiqKHOqwdbJzA6BggrBgEFBQcBAQQuMCwwKgYI # KwYBBQUHMAGGHmh0dHA6Ly9vY3NwLnN0YXJmaWVsZHRlY2guY29tLzBGBgNVHR8E # PzA9MDugOaA3hjVodHRwOi8vY3JsLnN0YXJmaWVsZHRlY2guY29tL3JlcG9zaXRv # cnkvc2Zyb290LWcyLmNybDBQBgNVHSAESTBHMEUGC2CGSAGG/W4BBxcCMDYwNAYI # KwYBBQUHAgEWKGh0dHA6Ly9jcmwuc3RhcmZpZWxkdGVjaC5jb20vcmVwb3NpdG9y # eS8wDQYJKoZIhvcNAQELBQADggEBAC1Tnm2HG1bh1d39Qe2NWq9CxxtZRHG3BR0h # jgVznfEgv9I7fSQrnKbuE1q03r7BkLyZ57qQPIHN7Sm/DtfRpQ/XzO3V/SKcXcHp # LSZNjCX38cTr4Bpnk0TzQFtCYiFGjEY66pvDLKOLdkpXqfdZjxCyhpAArlcH9EhO # HEMjXDgJnurEtSG4G5RpS1/hA6BDI6+v/rgTCEuKUVCVMwkUWF5+elrNt2UN2SJA # uwRwoYddTw3w68FU6YlPydL9DGxdS8UzP4udpfkuZGekvHm2nikbD+4J7NDXm4k9 # c2NzMwbdVlg7LDCoqVntapOQqZS4XMqSD6/eo/X14FBwhx4tB60xggJjMIICXwIB # ATCBnDCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcT # ClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIElu # Yy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0 # eSAtIEcyAgg8bj19IzYlTTANBglghkgBZQMEAgEFAKCBmDAaBgkqhkiG9w0BCQMx # DQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTE3MTEyMjA4NDgzMlowKwYL # KoZIhvcNAQkQAgwxHDAaMBgwFgQUcUS1PxpdOR3drHG2ByGQjJsb8/YwLwYJKoZI # hvcNAQkEMSIEIO0Gj6k+QmGA3UXFhn/Paz5lso3/QChFVk0zgvyhEIYoMA0GCSqG # SIb3DQEBAQUABIIBAAxkl0QD9Pu2/1S8yTcAxNL7jXUAnph5q5q2rFyR/dGEUsrw # jUum9mYiG9ylfko6Hj6ulwmm5rdOXVOWFlPvSNM6uAuM/ShrSCL83khWTW5aOhsm # U/VAAwUebeKcBwctSiKOuijop+50rR92NdYDt17WGXd8KCR4Lys0jxvxqKg9vFgj # r5vM0+v5OB30vYAujEr/29NnYtsz1q+9s2GWImU3PIC3A+vaJ0hYSWRhfwD1RDIj # FLhEjmDCHl1szZ18aElCdp0v5wNJ6IiSaGSZNg48ry8ujRgIZqC7nEDc92cGzCK7 # SX1iFq0fvedGdgjf/e/pBDlvSyQhcCoUWlT8HvI= # SIG # End signature block |