public/New-AppVentiXGlobalUserSetting.ps1
|
<#
.SYNOPSIS Creates an AppVentiX global user setting. .DESCRIPTION Adds one global user setting of the specified type to its file in the Configuration Store. The file is created when it does not exist yet. Existing entries are kept. Supported types: - UserStateRoaming: appends a RuleSet to AppVentiX-UserStateRoamingRules.xml. The rule set always gets a new Id, also when a rule set with the same name already exists. .PARAMETER Type Type of the global user setting. Valid values: UserStateRoaming. .PARAMETER Settings Hashtable or PSCustomObject with the setting data. UserStateRoaming: Name (mandatory), Description, Enabled (default True) and CaptureRules. CaptureRules is an array of hashtables or objects with Kind (Folder, File or Registry) and Path. Optional capture rule keys: Exclude, IncludeSubfolders (default True), Enabled (default True), Description. .PARAMETER MachineGroupFriendlyName One or more machine group friendly names to assign the setting to. Defaults to 'All Machine Groups'. .PARAMETER ConfigShare Path to the AppVentiX Configuration Store. Defaults to the module variable. .EXAMPLE New-AppVentiXGlobalUserSetting -Type UserStateRoaming -Settings @{ Name = "Notepad++" CaptureRules = @( @{ Kind = "Folder"; Path = "%APPDATA%\Notepad++" } @{ Kind = "Registry"; Path = "HKCU\Software\Notepad++" } ) } .LINK Import-IvantiWCGlobalSetting .NOTES Function : New-AppVentiXGlobalUserSetting Author : John Billekens Copyright : (c) John Billekens Consultancy & AppVentiX Version : 2026.915.1616 #> function New-AppVentiXGlobalUserSetting { [CmdletBinding()] param ( [Parameter(Mandatory = $true)] [ValidateSet("UserStateRoaming")] [string]$Type, [Parameter(Mandatory = $true)] [ValidateNotNull()] [PSCustomObject]$Settings, [Parameter(Mandatory = $false)] [string[]]$MachineGroupFriendlyName = @("All Machine Groups"), [Parameter(DontShow)] [ValidateNotNullOrEmpty()] [string]$ConfigShare = $Script:AppVentix.ConfigShare ) #region functions function Add-TextElement { param ( [System.Xml.XmlElement]$Parent, [string]$Name, [string]$Text ) $el = $XmlDoc.CreateElement($Name) $el.InnerText = $Text [void]$Parent.AppendChild($el) } #endregion functions if (Test-AppVentiXIsLicensed -ConfigShare $ConfigShare) { if ([string]::IsNullOrEmpty($Settings.Name)) { Write-Error "Settings must contain a Name." return } # Validate type specific settings switch ($Type) { "UserStateRoaming" { $Item = $Script:AppVentiX.UserStateRoamingRulesFilename $RootName = "UserStateRoamingRules" $CaptureRules = @() foreach ($rule in @($Settings.CaptureRules | Where-Object { $null -ne $_ })) { $kind = @("Folder", "File", "Registry") | Where-Object { $_ -ieq $rule.Kind } if (-not $kind -or [string]::IsNullOrEmpty($rule.Path)) { Write-Error "Invalid capture rule with Kind '$($rule.Kind)' and Path '$($rule.Path)' in '$($Settings.Name)'. Kind must be Folder, File or Registry and Path must not be empty." return } $CaptureRules += [ordered]@{ Kind = $kind Path = "$($rule.Path)" Exclude = "$($rule.Exclude)" IncludeSubfolders = [string]::IsNullOrEmpty("$($rule.IncludeSubfolders)") -or "$($rule.IncludeSubfolders)" -notin @("False", "0") Enabled = [string]::IsNullOrEmpty("$($rule.Enabled)") -or "$($rule.Enabled)" -notin @("False", "0") Description = "$($rule.Description)" } } } } # Resolve MachineGroups if ($MachineGroupFriendlyName -contains "All Machine Groups" -or $MachineGroupFriendlyName -contains "All") { $MachineGroups = @("All") $MachineGroupFriendlyNames = @("All Machine Groups") } else { $AvailableGroups = Get-AppVentiXMachineGroup -ConfigShare $ConfigShare $MachineGroups = @() $MachineGroupFriendlyNames = @() foreach ($Group in $MachineGroupFriendlyName) { $selectedGroup = $AvailableGroups | Where-Object { $_.FriendlyName -ieq $Group } if ($selectedGroup) { $MachineGroups += $selectedGroup.GroupName.ToString() $MachineGroupFriendlyNames += $selectedGroup.FriendlyName.ToString() } else { Write-Warning "Machine group '$Group' not found." } } if ($MachineGroups.Count -eq 0) { Write-Error "None of the specified machine groups were found: $($MachineGroupFriendlyName -join ', ')" return } } # Load or create the XML $Content = Get-AppVentiXConfigStoreItem -Item $Item -ConfigShare $ConfigShare $XmlDoc = New-Object System.Xml.XmlDocument if ([string]::IsNullOrEmpty($Content)) { Write-Verbose "$RootName item not found. Creating new item." $Root = $XmlDoc.CreateElement($RootName) $Root.SetAttribute("SchemaVersion", "1") [void]$XmlDoc.AppendChild($Root) } else { Write-Verbose "Loading $RootName XML." try { $XmlDoc.LoadXml($Content) } catch { Write-Error "Failed to load $RootName XML. Error: $($_.Exception.Message)" return } if ($null -eq $XmlDoc.DocumentElement -or $XmlDoc.DocumentElement.Name -ne $RootName) { Write-Error "Invalid XML structure: $RootName root element not found." return } $Root = $XmlDoc.DocumentElement } $SettingId = [guid]::NewGuid().ToString() $Now = (Get-Date).ToString("yyyy-MM-dd HH:mm:ss") switch ($Type) { "UserStateRoaming" { $RuleSetElement = $XmlDoc.CreateElement("RuleSet") Add-TextElement -Parent $RuleSetElement -Name "Id" -Text $SettingId Add-TextElement -Parent $RuleSetElement -Name "Name" -Text $Settings.Name Add-TextElement -Parent $RuleSetElement -Name "Description" -Text $Settings.Description Add-TextElement -Parent $RuleSetElement -Name "Enabled" -Text (ConvertTo-BooleanString -Value ("$($Settings.Enabled)" -notin @("False", "0"))) Add-TextElement -Parent $RuleSetElement -Name "CreatedDate" -Text $Now Add-TextElement -Parent $RuleSetElement -Name "LastModifiedDate" -Text $Now $MachineGroupsElement = $XmlDoc.CreateElement("MachineGroups") foreach ($Group in $MachineGroups) { Add-TextElement -Parent $MachineGroupsElement -Name "MachineGroup" -Text $Group } [void]$RuleSetElement.AppendChild($MachineGroupsElement) $MachineGroupFriendlyNamesElement = $XmlDoc.CreateElement("MachineGroupFriendlyNames") foreach ($GroupFriendlyName in $MachineGroupFriendlyNames) { Add-TextElement -Parent $MachineGroupFriendlyNamesElement -Name "FriendlyName" -Text $GroupFriendlyName } [void]$RuleSetElement.AppendChild($MachineGroupFriendlyNamesElement) [void]$RuleSetElement.AppendChild($XmlDoc.CreateElement("MachineMatchFilterIds")) $UserStateRoamingElement = $XmlDoc.CreateElement("UserStateRoaming") $UserStateRoamingElement.SetAttribute("Enabled", (ConvertTo-BooleanString -Value ($CaptureRules.Count -gt 0))) # Write a full end tag like the console, not a self-closing element $UserStateRoamingElement.IsEmpty = $false foreach ($RuleData in $CaptureRules) { $CaptureRuleElement = $XmlDoc.CreateElement("CaptureRule") Add-TextElement -Parent $CaptureRuleElement -Name "RuleId" -Text ([guid]::NewGuid().ToString()) Add-TextElement -Parent $CaptureRuleElement -Name "Kind" -Text $RuleData.Kind Add-TextElement -Parent $CaptureRuleElement -Name "Path" -Text $RuleData.Path Add-TextElement -Parent $CaptureRuleElement -Name "Exclude" -Text $RuleData.Exclude Add-TextElement -Parent $CaptureRuleElement -Name "IncludeSubfolders" -Text (ConvertTo-BooleanString -Value $RuleData.IncludeSubfolders) Add-TextElement -Parent $CaptureRuleElement -Name "Enabled" -Text (ConvertTo-BooleanString -Value $RuleData.Enabled) Add-TextElement -Parent $CaptureRuleElement -Name "Description" -Text $RuleData.Description [void]$UserStateRoamingElement.AppendChild($CaptureRuleElement) } [void]$RuleSetElement.AppendChild($UserStateRoamingElement) [void]$Root.AppendChild($RuleSetElement) $Details = "New User State Roaming rule set '$($Settings.Name)' [$SettingId] added with $($CaptureRules.Count) capture rule(s)." } } try { $XmlWriterSettings = New-Object System.Xml.XmlWriterSettings $XmlWriterSettings.Indent = $true $XmlWriterSettings.IndentChars = " " $XmlWriterSettings.NewLineChars = "`r`n" $XmlWriterSettings.Encoding = New-Object System.Text.UTF8Encoding($false) $XmlWriterSettings.OmitXmlDeclaration = $true Write-Verbose "Saving $RootName XML." $ms = New-Object System.IO.MemoryStream $XmlWriter = [System.Xml.XmlWriter]::Create($ms, $XmlWriterSettings) $XmlDoc.Save($XmlWriter) $XmlWriter.Close() Set-AppVentiXConfigStoreItem -Item $Item -Content $ms.ToArray() -ConfigShare $ConfigShare } catch { Write-Error "Failed to save $RootName XML. Error: $($_.Exception.Message)" return } Write-AppVentiXLogEntry -Feature UserSettings -Action $($MyInvocation.MyCommand.Name) -Details $Details Write-Output ( [PSCustomObject]@{ Id = $SettingId Name = $Settings.Name Type = $Type } ) } else { Write-Warning "AppVentiX is not licensed. Please provide a valid license to use this function." } } # SIG # Begin signature block # MII5zAYJKoZIhvcNAQcCoII5vTCCObkCAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCARkThgeYLrW5mB # yM70Ch9Oz4d7VXS6Aa/RboNrVm6JL6CCIfAwggXMMIIDtKADAgECAhBUmNLR1FsZ # lUgTecgRwIeZMA0GCSqGSIb3DQEBDAUAMHcxCzAJBgNVBAYTAlVTMR4wHAYDVQQK # ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xSDBGBgNVBAMTP01pY3Jvc29mdCBJZGVu # dGl0eSBWZXJpZmljYXRpb24gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgMjAy # MDAeFw0yMDA0MTYxODM2MTZaFw00NTA0MTYxODQ0NDBaMHcxCzAJBgNVBAYTAlVT # MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xSDBGBgNVBAMTP01pY3Jv # c29mdCBJZGVudGl0eSBWZXJpZmljYXRpb24gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRo # b3JpdHkgMjAyMDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALORKgeD # Bmf9np3gx8C3pOZCBH8Ppttf+9Va10Wg+3cL8IDzpm1aTXlT2KCGhFdFIMeiVPvH # or+Kx24186IVxC9O40qFlkkN/76Z2BT2vCcH7kKbK/ULkgbk/WkTZaiRcvKYhOuD # PQ7k13ESSCHLDe32R0m3m/nJxxe2hE//uKya13NnSYXjhr03QNAlhtTetcJtYmrV # qXi8LW9J+eVsFBT9FMfTZRY33stuvF4pjf1imxUs1gXmuYkyM6Nix9fWUmcIxC70 # ViueC4fM7Ke0pqrrBc0ZV6U6CwQnHJFnni1iLS8evtrAIMsEGcoz+4m+mOJyoHI1 # vnnhnINv5G0Xb5DzPQCGdTiO0OBJmrvb0/gwytVXiGhNctO/bX9x2P29Da6SZEi3 # W295JrXNm5UhhNHvDzI9e1eM80UHTHzgXhgONXaLbZ7LNnSrBfjgc10yVpRnlyUK # xjU9lJfnwUSLgP3B+PR0GeUw9gb7IVc+BhyLaxWGJ0l7gpPKWeh1R+g/OPTHU3mg # trTiXFHvvV84wRPmeAyVWi7FQFkozA8kwOy6CXcjmTimthzax7ogttc32H83rwjj # O3HbbnMbfZlysOSGM1l0tRYAe1BtxoYT2v3EOYI9JACaYNq6lMAFUSw0rFCZE4e7 # swWAsk0wAly4JoNdtGNz764jlU9gKL431VulAgMBAAGjVDBSMA4GA1UdDwEB/wQE # AwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTIftJqhSobyhmYBAcnz1AQ # T2ioojAQBgkrBgEEAYI3FQEEAwIBADANBgkqhkiG9w0BAQwFAAOCAgEAr2rd5hnn # LZRDGU7L6VCVZKUDkQKL4jaAOxWiUsIWGbZqWl10QzD0m/9gdAmxIR6QFm3FJI9c # Zohj9E/MffISTEAQiwGf2qnIrvKVG8+dBetJPnSgaFvlVixlHIJ+U9pW2UYXeZJF # xBA2CFIpF8svpvJ+1Gkkih6PsHMNzBxKq7Kq7aeRYwFkIqgyuH4yKLNncy2RtNwx # AQv3Rwqm8ddK7VZgxCwIo3tAsLx0J1KH1r6I3TeKiW5niB31yV2g/rarOoDXGpc8 # FzYiQR6sTdWD5jw4vU8w6VSp07YEwzJ2YbuwGMUrGLPAgNW3lbBeUU0i/OxYqujY # lLSlLu2S3ucYfCFX3VVj979tzR/SpncocMfiWzpbCNJbTsgAlrPhgzavhgplXHT2 # 6ux6anSg8Evu75SjrFDyh+3XOjCDyft9V77l4/hByuVkrrOj7FjshZrM77nq81YY # uVxzmq/FdxeDWds3GhhyVKVB0rYjdaNDmuV3fJZ5t0GNv+zcgKCf0Xd1WF81E+Al # GmcLfc4l+gcK5GEh2NQc5QfGNpn0ltDGFf5Ozdeui53bFv0ExpK91IjmqaOqu/dk # ODtfzAzQNb50GQOmxapMomE2gj4d8yu8l13bS3g7LfU772Aj6PXsCyM2la+YZr9T # 03u4aUoqlmZpxJTG9F9urJh4iIAGXKKy7aIwggalMIIEjaADAgECAhMzAAaUWe5z # +vRUV1LQAAAABpRZMA0GCSqGSIb3DQEBDAUAMFoxCzAJBgNVBAYTAlVTMR4wHAYD # VQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKzApBgNVBAMTIk1pY3Jvc29mdCBJ # RCBWZXJpZmllZCBDUyBFT0MgQ0EgMDQwHhcNMjYwOTIwMTYzODA1WhcNMjYwOTIz # MTYzODA1WjBoMQswCQYDVQQGEwJOTDEWMBQGA1UECBMNTm9vcmQtSG9sbGFuZDEP # MA0GA1UEBxMGSGVpbG9vMRcwFQYDVQQKEw5BcHBWZW50aVggQi5WLjEXMBUGA1UE # AxMOQXBwVmVudGlYIEIuVi4wggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIB # gQCSNxT5K2Gismucj1ubr+xlIYMEsmvq+X9oZGFTTldTcCbYWCBL9DWTLN8ySd+T # TpHhO+Jbqd2LdXft477h4bGDwwSfBBw59ErjBr/FOFMeDAopnRIEuJVWssRLVVrK # QipBLfDK7x7IV/WumONQvounLOT9BeLHTk2cmDK2ZNXdCW58efmSs9Cy3QgOxQj5 # kQ+zkZKjEy7RQXcbN24y+ggHmkEcTkTrizEHUBL0UNvjGSbz3DUQxnWGQb7gxdd0 # bxpJGgWEMUsfi8Z61QBwp0gN0KFArE/YeKI3O2Uafor9MC3PZDUTOE4ms3+aREA3 # H2Ps03Df7RH7ST2gKIYCXuyV/wimHNxU4ssijrMPZkj5c3pAA1gJ3hQ6I8jYKSW3 # RtnPL1YQkBVVtq3ZxUl0hCb0ME5tFcB8Fl9ca5WObf7ep0IYltcoRbzF6Oz7t+iO # W90LKE9OwNYChEZ9fs1+FoVy9FHZDsFDEsKjVUlz7UCKvAepaZ2zfsJTyv7W3d53 # xMcCAwEAAaOCAdQwggHQMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMDsG # A1UdJQQ0MDIGCisGAQQBgjdhAQAGCCsGAQUFBwMDBhorBgEEAYI3YaL8yC6uh9F6 # gZ2lyVCBwcKCJzAdBgNVHQ4EFgQUUw8WKOnVo/YRKJgvP8Gaxi+b9zwwHwYDVR0j # BBgwFoAUmvFUd3UMhxY3RqCs3nn59H/BeOkwZwYDVR0fBGAwXjBcoFqgWIZWaHR0 # cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jcmwvTWljcm9zb2Z0JTIwSUQl # MjBWZXJpZmllZCUyMENTJTIwRU9DJTIwQ0ElMjAwNC5jcmwwdAYIKwYBBQUHAQEE # aDBmMGQGCCsGAQUFBzAChlhodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3Bz # L2NlcnRzL01pY3Jvc29mdCUyMElEJTIwVmVyaWZpZWQlMjBDUyUyMEVPQyUyMENB # JTIwMDQuY3J0MFQGA1UdIARNMEswSQYEVR0gADBBMD8GCCsGAQUFBwIBFjNodHRw # Oi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL0RvY3MvUmVwb3NpdG9yeS5odG0w # DQYJKoZIhvcNAQEMBQADggIBAGQIvhCWFyyFmomYNOAy+UqXlo6x75UCOwL31EKv # zTRVwsvyqRZ2RTEonjRG2XjIIVJfOBU0mepTAt98oC6djuoEczv6sY6dQ5xTOK5O # 72oYp1pi6BMmOUZOEmUcsc1H6nxbqCX5eNnHACf4Th6MlMbQhZb9h4bMt6XJeNpw # 9XhRa+vY/NZ73aPviwS+PmhFlUSv25cN2yV8/fJ7x4LDgt29Bd6n7ZmJDhul+dZO # /1lGRBLeI47WhC5YRLRskpi9GXjU8WM8bm+BhORTzePftBabXRhcWznIU4Mxn1sG # 9PPqbqgHNgxInoP6LjMu8pfFLoTpwYQ0z5ac4vMEmQZh+wJA5OgBk9w3HNf073Ed # 0/zqRrhJ+aGik6nB3bofbVgAyLD8zPKOsIr3O+ST7DDae9jMjQ+4Td/kR5EZDPSz # 2kLqcs+LhYbVhs/R+hKrbVH1fjylMTjedWpR7Vd2BGpgmXM0MWtoaHTONuFBR66d # fO3O4NKTC3nNymkY/S74BQd1z0mFyV6MyyO7J/tR4wwaB7rwQqOtrHZPJOTymEdI # KhEdfM1wD8cUKRP1saEmb3nt26+8J1w3X2hI1lNGELKVlKTtQsFTn8zIFj8Dk2AQ # vBP7GFWrd7alDTmev0QNPnnxA6vWM/P5A1plXiuj8pJ/OnTG08eZF+9esuNn3LQQ # rOX8MIIGpTCCBI2gAwIBAgITMwAGlFnuc/r0VFdS0AAAAAaUWTANBgkqhkiG9w0B # AQwFADBaMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0 # aW9uMSswKQYDVQQDEyJNaWNyb3NvZnQgSUQgVmVyaWZpZWQgQ1MgRU9DIENBIDA0 # MB4XDTI2MDkyMDE2MzgwNVoXDTI2MDkyMzE2MzgwNVowaDELMAkGA1UEBhMCTkwx # FjAUBgNVBAgTDU5vb3JkLUhvbGxhbmQxDzANBgNVBAcTBkhlaWxvbzEXMBUGA1UE # ChMOQXBwVmVudGlYIEIuVi4xFzAVBgNVBAMTDkFwcFZlbnRpWCBCLlYuMIIBojAN # BgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAkjcU+SthorJrnI9bm6/sZSGDBLJr # 6vl/aGRhU05XU3Am2FggS/Q1kyzfMknfk06R4TviW6ndi3V37eO+4eGxg8MEnwQc # OfRK4wa/xThTHgwKKZ0SBLiVVrLES1VaykIqQS3wyu8eyFf1rpjjUL6Lpyzk/QXi # x05NnJgytmTV3QlufHn5krPQst0IDsUI+ZEPs5GSoxMu0UF3GzduMvoIB5pBHE5E # 64sxB1AS9FDb4xkm89w1EMZ1hkG+4MXXdG8aSRoFhDFLH4vGetUAcKdIDdChQKxP # 2HiiNztlGn6K/TAtz2Q1EzhOJrN/mkRANx9j7NNw3+0R+0k9oCiGAl7slf8Iphzc # VOLLIo6zD2ZI+XN6QANYCd4UOiPI2Cklt0bZzy9WEJAVVbat2cVJdIQm9DBObRXA # fBZfXGuVjm3+3qdCGJbXKEW8xejs+7fojlvdCyhPTsDWAoRGfX7NfhaFcvRR2Q7B # QxLCo1VJc+1AirwHqWmds37CU8r+1t3ed8THAgMBAAGjggHUMIIB0DAMBgNVHRMB # Af8EAjAAMA4GA1UdDwEB/wQEAwIHgDA7BgNVHSUENDAyBgorBgEEAYI3YQEABggr # BgEFBQcDAwYaKwYBBAGCN2Gi/MgurofReoGdpclQgcHCgicwHQYDVR0OBBYEFFMP # Fijp1aP2ESiYLz/BmsYvm/c8MB8GA1UdIwQYMBaAFJrxVHd1DIcWN0agrN55+fR/ # wXjpMGcGA1UdHwRgMF4wXKBaoFiGVmh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9w # a2lvcHMvY3JsL01pY3Jvc29mdCUyMElEJTIwVmVyaWZpZWQlMjBDUyUyMEVPQyUy # MENBJTIwMDQuY3JsMHQGCCsGAQUFBwEBBGgwZjBkBggrBgEFBQcwAoZYaHR0cDov # L3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jZXJ0cy9NaWNyb3NvZnQlMjBJRCUy # MFZlcmlmaWVkJTIwQ1MlMjBFT0MlMjBDQSUyMDA0LmNydDBUBgNVHSAETTBLMEkG # BFUdIAAwQTA/BggrBgEFBQcCARYzaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3Br # aW9wcy9Eb2NzL1JlcG9zaXRvcnkuaHRtMA0GCSqGSIb3DQEBDAUAA4ICAQBkCL4Q # lhcshZqJmDTgMvlKl5aOse+VAjsC99RCr800VcLL8qkWdkUxKJ40Rtl4yCFSXzgV # NJnqUwLffKAunY7qBHM7+rGOnUOcUziuTu9qGKdaYugTJjlGThJlHLHNR+p8W6gl # +XjZxwAn+E4ejJTG0IWW/YeGzLelyXjacPV4UWvr2PzWe92j74sEvj5oRZVEr9uX # DdslfP3ye8eCw4LdvQXep+2ZiQ4bpfnWTv9ZRkQS3iOO1oQuWES0bJKYvRl41PFj # PG5vgYTkU83j37QWm10YXFs5yFODMZ9bBvTz6m6oBzYMSJ6D+i4zLvKXxS6E6cGE # NM+WnOLzBJkGYfsCQOToAZPcNxzX9O9xHdP86ka4SfmhopOpwd26H21YAMiw/Mzy # jrCK9zvkk+ww2nvYzI0PuE3f5EeRGQz0s9pC6nLPi4WG1YbP0foSq21R9X48pTE4 # 3nVqUe1XdgRqYJlzNDFraGh0zjbhQUeunXztzuDSkwt5zcppGP0u+AUHdc9Jhcle # jMsjuyf7UeMMGge68EKjrax2TyTk8phHSCoRHXzNcA/HFCkT9bGhJm957duvvCdc # N19oSNZTRhCylZSk7ULBU5/MyBY/A5NgELwT+xhVq3e2pQ05nr9EDT558QOr1jPz # +QNaZV4ro/KSfzp0xtPHmRfvXrLjZ9y0EKzl/DCCBygwggUQoAMCAQICEzMAAAAX # J0UJC4uHr8YAAAAAABcwDQYJKoZIhvcNAQEMBQAwYzELMAkGA1UEBhMCVVMxHjAc # BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjE0MDIGA1UEAxMrTWljcm9zb2Z0 # IElEIFZlcmlmaWVkIENvZGUgU2lnbmluZyBQQ0EgMjAyMTAeFw0yNjAzMjYxODEx # MzFaFw0zMTAzMjYxODExMzFaMFoxCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNy # b3NvZnQgQ29ycG9yYXRpb24xKzApBgNVBAMTIk1pY3Jvc29mdCBJRCBWZXJpZmll # ZCBDUyBFT0MgQ0EgMDQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCC # x2T+Aw9mKgGVzJ+Tq0PMn49G3itIsYpbx7ClLSRHFe1RELdPcZ1sIqWOhsSfy6yy # qEapClGH9Je9FXA1cQgZvvpQbkg+QInVLr/0EPrVBCwrM96lbRI2PxNeCwXG9Lsy # W2hG6KQgintDmNCBo4zpDIr377plVdSliZm6UB7rHwmvBnR02QT6tnrqWq2ihzB6 # lRJVTEzuh0OafzIMeMnYM0+x+ve5EOLHdfiq+HXiMf9Jb7YLHtYgyHIiJA7bTWLq # FSLGaTh7ZlbxbsLXA91OOroEpv7OjzFuu3tkpC9FflA4Dp2Euq4+qPmxUqfGp+TX # 0gLRJp9NJOzzILjcTD3rkFFFbxUv1xyg6avivFDLtoKBhM2Td138umE1pNOacanu # SYtPHIeQHmB6haFi64avLBLwTTAm/Rbit860cFXR72wq+5Qh4hSmezHqKXERWPpV # Be+APrJ4Iqc+aPeMmIkoCWZQO22HnLNFUFSXjiwyIbgvlH/LIAJEqTafTzxDZgKh # lLU7zr6gwsq3WNpcYQI6NuxWnwh3VVDDyF7onQqKs5Ll7bleVN0Y8VvqgE45ppyB # bvwqN/Run5fMCCRz3aYMY0kZhKO92eP7t4zHqZ5bQMAgZ0tE2Pz/jb0wiykUF/Pc # oOqqk3vVLiRDYst6vd3GEMNzMpUUvQcvBG46+COIbwIDAQABo4IB3DCCAdgwDgYD # VR0PAQH/BAQDAgGGMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBSa8VR3dQyH # FjdGoKzeefn0f8F46TBUBgNVHSAETTBLMEkGBFUdIAAwQTA/BggrBgEFBQcCARYz # aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9Eb2NzL1JlcG9zaXRvcnku # aHRtMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMBIGA1UdEwEB/wQIMAYBAf8C # AQAwHwYDVR0jBBgwFoAU2UEpsA8PY2zvadf1zSmepEhqMOYwcAYDVR0fBGkwZzBl # oGOgYYZfaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jcmwvTWljcm9z # b2Z0JTIwSUQlMjBWZXJpZmllZCUyMENvZGUlMjBTaWduaW5nJTIwUENBJTIwMjAy # MS5jcmwwfQYIKwYBBQUHAQEEcTBvMG0GCCsGAQUFBzAChmFodHRwOi8vd3d3Lm1p # Y3Jvc29mdC5jb20vcGtpb3BzL2NlcnRzL01pY3Jvc29mdCUyMElEJTIwVmVyaWZp # ZWQlMjBDb2RlJTIwU2lnbmluZyUyMFBDQSUyMDIwMjEuY3J0MA0GCSqGSIb3DQEB # DAUAA4ICAQCQdVoZ/U0m38l2iKaZFlsxavptpoOLyaR1a9ZK2TSF1kOnFJhMDse6 # KkCgsveoiEjXTVc6Xt86IKHn76Nk5qZB0BXv2iMRQ2giAJmYvZcmstoZqfB2M3Kd # 5wnJhUJOtF/b6HsqSelY6nhrF06zor1lDmDQixBZcLB9zR1+RKQso1jekNxYuUk+ # HaN3k1S57qk0O//YbkwU0mELCW04N5vICMZx5T5c7Nq/7uLvbVhCdD7f2bZpA4U7 # vOkB1ooB4AaER3pjoJ0Mad5LFyi6Na9p9Zu/hrLeOjU5FItS5YxsqvlfXxAThJ17 # 6CmkYstKRmytSHZ7JhKRfV6e9Zftk/ODb/CK4pGVAVqsOf4337bQGrOHHCQ3IvN9 # gmnUuDh8JdvbheoWPHxIN1GB5sUiY584tXN7xdD8LCSsRqJvQ8e7a3gZWTgViugR # s1QWq+N0G9Nje6JHlN1CjJehge+H5PGktJja+juGEr0P+ukSkcL6qaZxFQTh3SDI # 71lvW++3bl/Ezd6SO8N9Udw+reoyvRHCyTiSsplZQSBTVJdPmo3qCpGuyHFtPo5C # Bn3/FPTiqJd3M9BHoqKd0G9Kmg6fGcAvFwnLNXA2kov727wRljL3ypfqL7iAT/Yn # pxul6RwHRlcOf9dDGg1RRvr92NP/CWVXIb68geR2rvU/NsfmtjF1wDCCB54wggWG # oAMCAQICEzMAAAAHh6M0o3uljhwAAAAAAAcwDQYJKoZIhvcNAQEMBQAwdzELMAkG # A1UEBhMCVVMxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjFIMEYGA1UE # AxM/TWljcm9zb2Z0IElkZW50aXR5IFZlcmlmaWNhdGlvbiBSb290IENlcnRpZmlj # YXRlIEF1dGhvcml0eSAyMDIwMB4XDTIxMDQwMTIwMDUyMFoXDTM2MDQwMTIwMTUy # MFowYzELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv # bjE0MDIGA1UEAxMrTWljcm9zb2Z0IElEIFZlcmlmaWVkIENvZGUgU2lnbmluZyBQ # Q0EgMjAyMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALLwwK8ZiCji # 3VR6TElsaQhVCbRS/3pK+MHrJSj3Zxd3KU3rlfL3qrZilYKJNqztA9OQacr1AwoN # cHbKBLbsQAhBnIB34zxf52bDpIO3NJlfIaTE/xrweLoQ71lzCHkD7A4As1Bs076I # u+mA6cQzsYYH/Cbl1icwQ6C65rU4V9NQhNUwgrx9rGQ//h890Q8JdjLLw0nV+ayQ # 2Fbkd242o9kH82RZsH3HEyqjAB5a8+Ae2nPIPc8sZU6ZE7iRrRZywRmrKDp5+Tcm # JX9MRff241UaOBs4NmHOyke8oU1TYrkxh+YeHgfWo5tTgkoSMoayqoDpHOLJs+qG # 8Tvh8SnifW2Jj3+ii11TS8/FGngEaNAWrbyfNrC69oKpRQXY9bGH6jn9NEJv9weF # xhTwyvx9OJLXmRGbAUXN1U9nf4lXezky6Uh/cgjkVd6CGUAf0K+Jw+GE/5VpIVbc # Nr9rNE50Sbmy/4RTCEGvOq3GhjITbCa4crCzTTHgYYjHs1NbOc6brH+eKpWLtr+b # Gecy9CrwQyx7S/BfYJ+ozst7+yZtG2wR461uckFu0t+gCwLdN0A6cFtSRtR8bvxV # FyWwTtgMMFRuBa3vmUOTnfKLsLefRaQcVTgRnzeLzdpt32cdYKp+dhr2ogc+qM6K # 4CBI5/j4VFyC4QFeUP2YAidLtvpXRRo3AgMBAAGjggI1MIICMTAOBgNVHQ8BAf8E # BAMCAYYwEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYEFNlBKbAPD2Ns72nX9c0p # nqRIajDmMFQGA1UdIARNMEswSQYEVR0gADBBMD8GCCsGAQUFBwIBFjNodHRwOi8v # d3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL0RvY3MvUmVwb3NpdG9yeS5odG0wGQYJ # KwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSME # GDAWgBTIftJqhSobyhmYBAcnz1AQT2ioojCBhAYDVR0fBH0wezB5oHegdYZzaHR0 # cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jcmwvTWljcm9zb2Z0JTIwSWRl # bnRpdHklMjBWZXJpZmljYXRpb24lMjBSb290JTIwQ2VydGlmaWNhdGUlMjBBdXRo # b3JpdHklMjAyMDIwLmNybDCBwwYIKwYBBQUHAQEEgbYwgbMwgYEGCCsGAQUFBzAC # hnVodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRzL01pY3Jvc29m # dCUyMElkZW50aXR5JTIwVmVyaWZpY2F0aW9uJTIwUm9vdCUyMENlcnRpZmljYXRl # JTIwQXV0aG9yaXR5JTIwMjAyMC5jcnQwLQYIKwYBBQUHMAGGIWh0dHA6Ly9vbmVv # Y3NwLm1pY3Jvc29mdC5jb20vb2NzcDANBgkqhkiG9w0BAQwFAAOCAgEAfyUqnv7U # q+rdZgrbVyNMul5skONbhls5fccPlmIbzi+OwVdPQ4H55v7VOInnmezQEeW4LqK0 # wja+fBznANbXLB0KrdMCbHQpbLvG6UA/Xv2pfpVIE1CRFfNF4XKO8XYEa3oW8oVH # +KZHgIQRIwAbyFKQ9iyj4aOWeAzwk+f9E5StNp5T8FG7/VEURIVWArbAzPt9ThVN # 3w1fAZkF7+YU9kbq1bCR2YD+MtunSQ1Rft6XG7b4e0ejRA7mB2IoX5hNh3UEauY0 # byxNRG+fT2MCEhQl9g2i2fs6VOG19CNep7SquKaBjhWmirYyANb0RJSLWjinMLXN # OAga10n8i9jqeprzSMU5ODmrMCJE12xS/NWShg/tuLjAsKP6SzYZ+1Ry358ZTFcx # 0FS/mx2vSoU8s8HRvy+rnXqyUJ9HBqS0DErVLjQwK8VtsBdekBmdTbQVoCgPCqr+ # PDPB3xajYnzevs7eidBsM71PINK2BoE2UfMwxCCX3mccFgx6UsQeRSdVVVNSyALQ # e6PT12418xon2iDGE81OGCreLzDcMAZnrUAx4XQLUz6ZTl65yPUiOh3k7Yww94lD # f+8oG2oZmDh5O1Qe38E+M3vhKwmzIeoB1dVLlz4i3IpaDcR+iuGjH2TdaC1ZOmBX # iCRKJLj4DT2uhJ04ji+tHD6n58vhavFIrmcxghcyMIIXLgIBATBxMFoxCzAJBgNV # BAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKzApBgNVBAMT # Ik1pY3Jvc29mdCBJRCBWZXJpZmllZCBDUyBFT0MgQ0EgMDQCEzMABpRZ7nP69FRX # UtAAAAAGlFkwDQYJYIZIAWUDBAIBBQCgXjAQBgorBgEEAYI3AgEMMQIwADAZBgkq # hkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAvBgkqhkiG9w0BCQQxIgQgRZk0TRBdL6Xk # moUINYOaYSLk19yhsuFwCTMhBJwLfwAwDQYJKoZIhvcNAQEBBQAEggGAJvGyl3hl # 4vsf50jrb3xb0y7C77ODF6MtBM18eypJJoe/WYuEBTKfizAADt5R9CUu9NzJqIpi # 0jEBAUGAxoU3MGrteM3BFdHJ0j9TptbyTKjW64/I+IwwcnzRcLtPkggdLuChekrm # fmEOek6JStCtI54vMepWyU8MtBgbcnFrLzh4L/O4ujlPbhllB9X75LnP8evFV23G # 0tQlXaqhHe6DRSebQL2BlrpFVfW63mRIUREcpvl9N5U6YgFacJUnVzCoTTsjhLe0 # 2Pr68/5fSdGgwbxXJvQZ68pFQOiPPFeefae90UCmP2UzKwlcY/buE3DGrFME9wdg # 9MSVD7Xw6HO9AEM7UIrXbAxfJXida6pWbMaIAlJmbRKlbNAI6R6SkRJDLHNaoPZJ # 15fL89E5FTvE0VK6SP+OvAaaJC5j/yCk4DrgKURN/C1vCHZzmTkao5OnoVkZ7UMx # 9CpqXo01ojgjroh5oLcubL8vKElohw+FWk8YOMcul97bOlvx26tF9ZdPoYIUsjCC # FK4GCisGAQQBgjcDAwExghSeMIIUmgYJKoZIhvcNAQcCoIIUizCCFIcCAQMxDzAN # BglghkgBZQMEAgEFADCCAWoGCyqGSIb3DQEJEAEEoIIBWQSCAVUwggFRAgEBBgor # BgEEAYRZCgMBMDEwDQYJYIZIAWUDBAIBBQAEIEWkX6Xy9NUP4HuzdzMUJ3zq5cej # CXssjQMsdmQqoXnEAgZqNTDiNIIYEzIwMjYwOTIyMTIwNjUyLjczN1owBIACAfSg # gemkgeYwgeMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYD # VQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xLTAr # BgNVBAsTJE1pY3Jvc29mdCBJcmVsYW5kIE9wZXJhdGlvbnMgTGltaXRlZDEnMCUG # A1UECxMeblNoaWVsZCBUU1MgRVNOOjQ5MUEtMDVFMC1EOTQ3MTUwMwYDVQQDEyxN # aWNyb3NvZnQgUHVibGljIFJTQSBUaW1lIFN0YW1waW5nIEF1dGhvcml0eaCCDykw # ggeCMIIFaqADAgECAhMzAAAABeXPD/9mLsmHAAAAAAAFMA0GCSqGSIb3DQEBDAUA # MHcxCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24x # SDBGBgNVBAMTP01pY3Jvc29mdCBJZGVudGl0eSBWZXJpZmljYXRpb24gUm9vdCBD # ZXJ0aWZpY2F0ZSBBdXRob3JpdHkgMjAyMDAeFw0yMDExMTkyMDMyMzFaFw0zNTEx # MTkyMDQyMzFaMGExCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y # cG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBQdWJsaWMgUlNBIFRpbWVzdGFt # cGluZyBDQSAyMDIwMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnnzn # UmP94MWfBX1jtQYioxwe1+eXM9ETBb1lRkd3kcFdcG9/sqtDlwxKoVIcaqDb+omF # io5DHC4RBcbyQHjXCwMk/l3TOYtgoBjxnG/eViS4sOx8y4gSq8Zg49REAf5huXhI # kQRKe3Qxs8Sgp02KHAznEa/Ssah8nWo5hJM1xznkRsFPu6rfDHeZeG1Wa1wISvlk # pOQooTULFm809Z0ZYlQ8Lp7i5F9YciFlyAKwn6yjN/kR4fkquUWfGmMopNq/B8U/ # pdoZkZZQbxNlqJOiBGgCWpx69uKqKhTPVi3gVErnc/qi+dR8A2MiAz0kN0nh7SqI # NGbmw5OIRC0EsZ31WF3Uxp3GgZwetEKxLms73KG/Z+MkeuaVDQQheangOEMGJ4pQ # ZH55ngI0Tdy1bi69INBV5Kn2HVJo9XxRYR/JPGAaM6xGl57Ei95HUw9NV/uC3yFj # rhc087qLJQawSC3xzY/EXzsT4I7sDbxOmM2rl4uKK6eEpurRduOQ2hTkmG1hSuWY # BunFGNv21Kt4N20AKmbeuSnGnsBCd2cjRKG79+TX+sTehawOoxfeOO/jR7wo3liw # kGdzPJYHgnJ54UxbckF914AqHOiEV7xTnD1a69w/UTxwjEugpIPMIIE67SFZ2PMo # 27xjlLAHWW3l1CEAFjLNHd3EQ79PUr8FUXetXr0CAwEAAaOCAhswggIXMA4GA1Ud # DwEB/wQEAwIBhjAQBgkrBgEEAYI3FQEEAwIBADAdBgNVHQ4EFgQUa2koOjUvSGNA # z3vYr0npPtk92yEwVAYDVR0gBE0wSzBJBgRVHSAAMEEwPwYIKwYBBQUHAgEWM2h0 # dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvRG9jcy9SZXBvc2l0b3J5Lmh0 # bTATBgNVHSUEDDAKBggrBgEFBQcDCDAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMA # QTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFMh+0mqFKhvKGZgEByfPUBBP # aKiiMIGEBgNVHR8EfTB7MHmgd6B1hnNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20v # cGtpb3BzL2NybC9NaWNyb3NvZnQlMjBJZGVudGl0eSUyMFZlcmlmaWNhdGlvbiUy # MFJvb3QlMjBDZXJ0aWZpY2F0ZSUyMEF1dGhvcml0eSUyMDIwMjAuY3JsMIGUBggr # BgEFBQcBAQSBhzCBhDCBgQYIKwYBBQUHMAKGdWh0dHA6Ly93d3cubWljcm9zb2Z0 # LmNvbS9wa2lvcHMvY2VydHMvTWljcm9zb2Z0JTIwSWRlbnRpdHklMjBWZXJpZmlj # YXRpb24lMjBSb290JTIwQ2VydGlmaWNhdGUlMjBBdXRob3JpdHklMjAyMDIwLmNy # dDANBgkqhkiG9w0BAQwFAAOCAgEAX4h2x35ttVoVdedMeGj6TuHYRJklFaW4sTQ5 # r+k77iB79cSLNe+GzRjv4pVjJviceW6AF6ycWoEYR0LYhaa0ozJLU5Yi+LCmcrdo # vkl53DNt4EXs87KDogYb9eGEndSpZ5ZM74LNvVzY0/nPISHz0Xva71QjD4h+8z2X # MOZzY7YQ0Psw+etyNZ1CesufU211rLslLKsO8F2aBs2cIo1k+aHOhrw9xw6JCWON # NboZ497mwYW5EfN0W3zL5s3ad4Xtm7yFM7Ujrhc0aqy3xL7D5FR2J7x9cLWMq7eb # 0oYioXhqV2tgFqbKHeDick+P8tHYIFovIP7YG4ZkJWag1H91KlELGWi3SLv10o4K # Gag42pswjybTi4toQcC/irAodDW8HNtX+cbz0sMptFJK+KObAnDFHEsukxD+7jFf # EV9Hh/+CSxKRsmnuiovCWIOb+H7DRon9TlxydiFhvu88o0w35JkNbJxTk4MhF/Kg # aXn0GxdH8elEa2Imq45gaa8D+mTm8LWVydt4ytxYP/bqjN49D9NZ81coE6aQWm88 # TwIf4R4YZbOpMKN0CyejaPNN41LGXHeCUMYmBx3PkP8ADHD1J2Cr/6tjuOOCztfp # +o9Nc+ZoIAkpUcA/X2gSMkgHAPUvIdtoSAHEUKiBhI6JQivRepyvWcl+JYbYbBh7 # pmgAXVswggefMIIFh6ADAgECAhMzAAAAWvYNZ4yF7d0IAAAAAABaMA0GCSqGSIb3 # DQEBDAUAMGExCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9y # YXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBQdWJsaWMgUlNBIFRpbWVzdGFtcGlu # ZyBDQSAyMDIwMB4XDTI2MDEwODE4NTkwM1oXDTI3MDEwNzE4NTkwM1owgeMxCzAJ # BgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25k # MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xLTArBgNVBAsTJE1pY3Jv # c29mdCBJcmVsYW5kIE9wZXJhdGlvbnMgTGltaXRlZDEnMCUGA1UECxMeblNoaWVs # ZCBUU1MgRVNOOjQ5MUEtMDVFMC1EOTQ3MTUwMwYDVQQDEyxNaWNyb3NvZnQgUHVi # bGljIFJTQSBUaW1lIFN0YW1waW5nIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEB # BQADggIPADCCAgoCggIBAO/0O0eWjgUb9rnHcQLRdfWPN4H+91a3YnlaP46E1m4u # D+JKx6csWMStX79fxLJUAqHJqQWE19UlNMhS9jEB32dAJ4yuWsHyUuM+dphjDz4E # 5jl4gYGZEmaOrKvNt+KqlFayyg/oTg3BlLRu4aBq8668A5qlHcfsuh6DdSqFID1i # xJFZzHrZFG1iGBG7U1Bn2ONLDo7jbwX5rMcPduTAUw/c7M3WhSxQBuZpQiz8RQGK # IqCKfIxgQkKdzpCpU0SWQOE/DgTXbz3c15KMRCdkGlL2zb+lnuSV4sseQm3qflZi # ZckLyn2xJI8ZXDkq+Ig+b/rsPPIfI8di228WvK1j67JXpyeVCaSUO9ErzlLnTrnj # QkeXVQIp73xuVBVrmvoTf/v4a7MnrmuKSyIXc5vJUHEGB345+O8omFt1w8b+Xg9D # 9PKIRqDPEv7HRk0C+Yvxu8FvHJvSocSIZK+v/FmKFOipYnpP76yAmJNnyheucShO # gk8QiU53USn/+AyMb7xW905gZnyNqb29HeVdQ175pDHJGEz8Cx5wiHeVliGz5hAB # ucFDylR9z3LSTmB6+3ZuIxeG9BZS46P6ANPkuVuD5m8wgc7GLLzg73CsDF09ukt8 # Uf8dTcMBX3ro+7/k9M6Xt8WPG7IL9v/4DvyMY03tkb9Y9Ri6HWavXRPYRCUePspP # AgMBAAGjggHLMIIBxzAdBgNVHQ4EFgQUjmOyQ6twMcP1ZbRytJxI4fnXmcIwHwYD # VR0jBBgwFoAUa2koOjUvSGNAz3vYr0npPtk92yEwbAYDVR0fBGUwYzBhoF+gXYZb # aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jcmwvTWljcm9zb2Z0JTIw # UHVibGljJTIwUlNBJTIwVGltZXN0YW1waW5nJTIwQ0ElMjAyMDIwLmNybDB5Bggr # BgEFBQcBAQRtMGswaQYIKwYBBQUHMAKGXWh0dHA6Ly93d3cubWljcm9zb2Z0LmNv # bS9wa2lvcHMvY2VydHMvTWljcm9zb2Z0JTIwUHVibGljJTIwUlNBJTIwVGltZXN0 # YW1waW5nJTIwQ0ElMjAyMDIwLmNydDAMBgNVHRMBAf8EAjAAMBYGA1UdJQEB/wQM # MAoGCCsGAQUFBwMIMA4GA1UdDwEB/wQEAwIHgDBmBgNVHSAEXzBdMFEGDCsGAQQB # gjdMg30BATBBMD8GCCsGAQUFBwIBFjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20v # cGtpb3BzL0RvY3MvUmVwb3NpdG9yeS5odG0wCAYGZ4EMAQQCMA0GCSqGSIb3DQEB # DAUAA4ICAQCAlM8r+t3hIb2h1lDTAx+iYkQlxFuU7QONeyIFIBZ29xvGl8pehKxE # rDzIniOpIX/eluUAwQKoaI0zwuKAdR0mrSHXCniMoLNko5W+5r7sXNamKX7QMV3B # fGOX3gi9qVfxyUe7AHXbqQ8KBQHNYCnNFtQQHgARrlYhtyAKol5ctM0CAc/y3oY7 # bTMsVJvnA5u7DVWPeXoST2KEMDeLBvJYq0IJZ6yMpDOWLZ4UP82bksyShIB/Xdaw # irIGLdseudryRxVMk313mAcjGRb59+Ittt6otVvYQWqH+PGrTUzEcez8aQuO3umo # NZjKuFoX5VsPP/gSZse+orhG3zfZk9IDyE3DfUFrhvkv6H0tijK1D0uIGhwMBWSm # 9ktQ6oeU+aurZFx3MI+LODnHsbRFZAy11uMvwKq+ZNC1Se4tIM1u9piWAhnTPoh6 # mULKikHOVhHaO953tkzDCtjsse5GUKOx9yg9nqHKWMgnODp62/uPPzC/yDEISrXC # cU7UB7tATr3zWNEdtM4d009iXWI6dV/SdcIIX44rpoLyCLw+nXjxp+fY/dygLO7U # dSQaVaUFVj3K2nVyuujPspt5Lunc5FvuYPqmi/z8kASmmwbiF+W0P0UTWFaC84MW # fU2h6MDg5s0oxmdNFK76jXr3wZfdSoV7FCKfq5GdeGoy5UwDQwMC0DGCA9QwggPQ # AgEBMHgwYTELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh # dGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFB1YmxpYyBSU0EgVGltZXN0YW1waW5n # IENBIDIwMjACEzMAAABa9g1njIXt3QgAAAAAAFowDQYJYIZIAWUDBAIBBQCgggEt # MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAvBgkqhkiG9w0BCQQxIgQgk+Qs # WdZKXEcSiwWzux3Q8LPCX7TRrM7iIKzpC9MOgDcwgd0GCyqGSIb3DQEJEAIvMYHN # MIHKMIHHMIGgBCBiuWRAi+p96PRsBt3TwW3jNozgPQS+Qco1CVm/NaU0QzB8MGWk # YzBhMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9u # MTIwMAYDVQQDEylNaWNyb3NvZnQgUHVibGljIFJTQSBUaW1lc3RhbXBpbmcgQ0Eg # MjAyMAITMwAAAFr2DWeMhe3dCAAAAAAAWjAiBCCez/V42XHO95Lh8SN6IDlVx7+P # s6bIUu1gNBQFPaJIjjANBgkqhkiG9w0BAQsFAASCAgDD9Y0NdJY7Th8SwIgTI6PJ # 327tVGFLCePawnUV00PHMRJRRT0pasNzYhTuQz90V7EGfIx1Q3I+1TuzMMgnV2J9 # JlPij5Mn+qT7HxlfBbBolzHOGEboa5spEGEs0EIKBhcd0pEsG81VNsAm7Ov4ObQD # tEa+alhw55yG1n/uXCt14Pq4MdYWLpWD43fhP50e4XLvBRwUYqvFI1Ys+W6E8NRu # cltfgbWPo4CJeomvphV+h4/KZUinlBRjANPGbcEDuOWUNT/01MSxBVFCFXq7n4J8 # lstVhlIEBoA9f8hxEpmDiNxgI9PC4wgBXpmmVFuYIqpDALvwo3tIhAxWg/jeAxxk # Hap7HtcjTbQ5ulDUvuLxcuU+txSlu9Y1qeDindDGHOoyDuMAvaF2Y7hMYhHbtym+ # WKr8ErOFezkXK5n2LJFPbJ+DwQXJF40uj7mORcwRcNOWQSCGfaThUI556Zs+hFMM # Wnqq+/bB4qJauLivPFXKW1+w42AX8OCavlwvqfvG+CT28tlB1issXU4ZAoIeRXAj # acdnY+sbvast0ic72ERZw8z/tBT7uLfyZOMOq/Q7SKkTB4IQTm6nq0CAUN7sZY9i # 8T7w3JpiPP2laaRWRy7eALeF5muAkf+D8pSo9j1cpWnthIZ8/d/z5wzwEv3q19dp # QOU7Dj9w+gjD0wJS/uyQWw== # SIG # End signature block |