2atCrm.psm1
#Requires -Version 4.0 -Modules 2atGeneral $PSDefaultParameterValues.Clear() Set-StrictMode -Version 2.0 Import-Module (Join-Path -Path $PSScriptRoot -ChildPath Microsoft.Xrm.Sdk.dll) Import-Module (Join-Path -Path $PSScriptRoot -ChildPath Microsoft.Crm.Sdk.Proxy.dll) Import-Module 2atGeneral Function Get-OrgServiceProxy { Param ( [Parameter(Mandatory=$true)] $OrgServiceUri, [Parameter(Mandatory=$true)] $Credentials ) Get-CallerPreference -Cmdlet $PSCmdlet -SessionState $ExecutionContext.SessionState if ($Credentials -is [PSCredential]) { $Credentials = $Credentials.GetNetworkCredential() } if ($Credentials -is [System.Net.NetworkCredential]) { $ccred = New-Object System.ServiceModel.Description.ClientCredentials $ccred.UserName.UserName = $Credentials.UserName $ccred.UserName.Password = $Credentials.Password $Credentials = $ccred } if ($Credentials -isnot [System.ServiceModel.Description.ClientCredentials]) { throw "Session credentials specified are of an unsupported type: $($Credentials.GetType().FullName), please use either a PSCredential, a NetworkCredential or a ClientCredentials" } Write-Verbose "Creating Proxy for uri: $OrgServiceUri and user: $($Credentials.UserName.UserName)" New-Object Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy($OrgServiceUri, $null, $Credentials, $null) } Function Get-CrmRecord { Param ( [Parameter(Mandatory=$true)] [Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy] $OrgServiceProxy, [Parameter(Mandatory=$true)] [string] $FetchXml ) Get-CallerPreference -Cmdlet $PSCmdlet -SessionState $ExecutionContext.SessionState $OrgServiceProxy.RetrieveMultiple((New-Object Microsoft.Xrm.Sdk.Query.FetchExpression($FetchXml))).Entities } Function New-CrmRecord { Param ( [Parameter(Mandatory=$true)] [Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy] $OrgServiceProxy, [Parameter(Mandatory=$true)] [string] $Entity, $Attributes ) Get-CallerPreference -Cmdlet $PSCmdlet -SessionState $ExecutionContext.SessionState Write-Debug "New-CrmRecord: About to create $Entity" $e = New-Object Microsoft.Xrm.Sdk.Entity($Entity) $Attributes.Keys | %{ $e[$_]=$Attributes[$_] } $n = $OrgServiceProxy.Create($e) $c = New-Object Microsoft.Xrm.Sdk.Query.ColumnSet $Attributes.Keys | %{ $c.Columns.Add($_) } $OrgServiceProxy.Retrieve($Entity, $n, $c) } Function Edit-CrmRecord { Param ( [Parameter(Mandatory=$true)] [Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy] $OrgServiceProxy, [Microsoft.Xrm.Sdk.Entity] $Record, $AttributeUpdates ) $u = New-Object Microsoft.Xrm.Sdk.Entity($Record.LogicalName) $u["$($Record.LogicalName)id"]=$Record["$($Record.LogicalName)id"] $AttributeUpdates.Keys | %{ $u[$_]=$AttributeUpdates[$_] } $OrgServiceProxy.Update($u) $c = New-Object Microsoft.Xrm.Sdk.Query.ColumnSet $Record.Attributes.Keys | %{ $c.Columns.Add($_) } $AttributeUpdates.Keys | %{ $c.Columns.Add($_) } $OrgServiceProxy.Retrieve($Record.LogicalName, $Record.Id, $c) } Function New-CrmListMember { Param ( [Parameter(Mandatory=$true)] [Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy] $OrgServiceProxy, [Parameter(Mandatory=$true)] [Guid] $ListId, [Parameter(Mandatory=$true)] [Guid] $MemberId ) Get-CallerPreference -Cmdlet $PSCmdlet -SessionState $ExecutionContext.SessionState Write-Debug "New-CrmListMember: About to add member $MemberId to list $ListId" $m = New-Object Microsoft.Crm.Sdk.Messages.AddMemberListRequest $m.EntityId = $MemberId $m.ListId = $ListId [void]$OrgServiceProxy.Execute($m) } Function Close-CrmRecord { Param ( [Parameter(Mandatory=$true)] [Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy] $OrgServiceProxy, [Microsoft.Xrm.Sdk.Entity] $Record ) Get-CallerPreference -Cmdlet $PSCmdlet -SessionState $ExecutionContext.SessionState Write-Debug "Close-CrmRecord: about to close $($Record.LogicalName) with id=$($Record.Id)" $r = New-Object Microsoft.Crm.Sdk.Messages.SetStateRequest $r.EntityMoniker = New-Object Microsoft.Xrm.Sdk.EntityReference($Record.LogicalName, $Record.Id) $r.State = New-Object Microsoft.Xrm.Sdk.OptionSetValue(1) # State 1: Closed $r.Status = New-Object Microsoft.Xrm.Sdk.OptionSetValue(2) # Status 2: Closed [void]$OrgServiceProxy.Execute($r) } Export-ModuleMember -Function Close-* Export-ModuleMember -Function New-* Export-ModuleMember -Function Edit-* Export-ModuleMember -Function Get-* # SIG # Begin signature block # MIIhkgYJKoZIhvcNAQcCoIIhgzCCIX8CAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCDCPfqPUsRFkeQ2 # KVFxmldK7oGRVTGF78i+haPQV9Sl1aCCCzswggU+MIIEJqADAgECAhEAqJN8Yygl # wn+qXuDcSIPe2DANBgkqhkiG9w0BAQsFADB8MQswCQYDVQQGEwJHQjEbMBkGA1UE # CBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQK # Ew9TZWN0aWdvIExpbWl0ZWQxJDAiBgNVBAMTG1NlY3RpZ28gUlNBIENvZGUgU2ln # bmluZyBDQTAeFw0yMDAxMTQwMDAwMDBaFw0yMzAxMTMyMzU5NTlaMIGTMQswCQYD # VQQGEwJOTDEQMA4GA1UEEQwHMzU0MiBEWjEQMA4GA1UECAwHVXRyZWNodDEQMA4G # A1UEBwwHVXRyZWNodDEVMBMGA1UECQwMRW5lcmdpZXdlZyAxMREwDwYDVQQKDAgy # QVQgQi5WLjERMA8GA1UECwwIMkFUIEIuVi4xETAPBgNVBAMMCDJBVCBCLlYuMIIB # IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7B3qmM2NegEBT98lBoJ3KIat # aTnIxwJlqGZ3nCxBOei/N5IUZ/13hKnv2oMROLIetXlS4GuIvti0WcLFKUYNg/py # lu6PNuD3K8jE3LeRtFITWRwXzKZ3ilNVRloXZk1/5fYjkfLKcDmbbVCAUCIQ3Bbh # 1cYuH0SjhNDLN0Hts9AtDiwvctLyGNRYi+HufGb57S4UU9dTK+Hvip3U0aMIBZyZ # Hzuqj00yVil9hUpWGglxeH0ckfMqdZYBbPv6vYbleMwdYZY8HxNiTZbSv3LyS6Pq # LOsu02GOx/d1rvI7saBNXrBvnlpbzlqFNEZiUqVtl/0tHKlh1VbISOyJvuY1ZwID # AQABo4IBoTCCAZ0wHwYDVR0jBBgwFoAUDuE6qFM6MdWKvsG7rWcaA4WtNA4wHQYD # VR0OBBYEFEqzfXL17Ad4IUDMSREpM/CPgUgQMA4GA1UdDwEB/wQEAwIHgDAMBgNV # HRMBAf8EAjAAMBMGA1UdJQQMMAoGCCsGAQUFBwMDMBEGCWCGSAGG+EIBAQQEAwIE # EDBABgNVHSAEOTA3MDUGDCsGAQQBsjEBAgEDAjAlMCMGCCsGAQUFBwIBFhdodHRw # czovL3NlY3RpZ28uY29tL0NQUzBDBgNVHR8EPDA6MDigNqA0hjJodHRwOi8vY3Js # LnNlY3RpZ28uY29tL1NlY3RpZ29SU0FDb2RlU2lnbmluZ0NBLmNybDBzBggrBgEF # BQcBAQRnMGUwPgYIKwYBBQUHMAKGMmh0dHA6Ly9jcnQuc2VjdGlnby5jb20vU2Vj # dGlnb1JTQUNvZGVTaWduaW5nQ0EuY3J0MCMGCCsGAQUFBzABhhdodHRwOi8vb2Nz # cC5zZWN0aWdvLmNvbTAZBgNVHREEEjAQgQ5zdXBwb3J0QDJhdC5ubDANBgkqhkiG # 9w0BAQsFAAOCAQEAJHhpIziMjuJmh+214Fx+I+rHFqzw2jW5wET3nFT1RNkDAC0Z # VsKDER15FJG5aAeCS9fMaQ5g0luvuNGybCAqevMtWPOAadXmpa/MXDPIl1mBW9cN # QJJbGMcQcxmVWeZGJXr3nt2F80FzeTazI0SkHw6PBrhX0oIOtL1/NSwtpJHFJJUF # LPXYKDR3ir2KskMR3m1dQWhJoa02qnaDPRoQSycVUU5P1zZLwO1fXHP0FMb4XUsD # E7meYRspTUF6oKckQ/Eoe/gBnlLaz478l0ufT0aHgpVvutWk9bypOQa6z7Mmexs5 # Zl8mjEEF0zQ7t9K4PYLV7arZJXgzHPouZgw8gjCCBfUwggPdoAMCAQICEB2iSDBv # myYY0ILgln0z02owDQYJKoZIhvcNAQEMBQAwgYgxCzAJBgNVBAYTAlVTMRMwEQYD # VQQIEwpOZXcgSmVyc2V5MRQwEgYDVQQHEwtKZXJzZXkgQ2l0eTEeMBwGA1UEChMV # VGhlIFVTRVJUUlVTVCBOZXR3b3JrMS4wLAYDVQQDEyVVU0VSVHJ1c3QgUlNBIENl # cnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTE4MTEwMjAwMDAwMFoXDTMwMTIzMTIz # NTk1OVowfDELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3Rl # cjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMSQw # IgYDVQQDExtTZWN0aWdvIFJTQSBDb2RlIFNpZ25pbmcgQ0EwggEiMA0GCSqGSIb3 # DQEBAQUAA4IBDwAwggEKAoIBAQCGIo0yhXoYn0nwli9jCB4t3HyfFM/jJrYlZilA # hlRGdDFixRDtsocnppnLlTDAVvWkdcapDlBipVGREGrgS2Ku/fD4GKyn/+4uMyD6 # DBmJqGx7rQDDYaHcaWVtH24nlteXUYam9CflfGqLlR5bYNV+1xaSnAAvaPeX7Wpy # vjg7Y96Pv25MQV0SIAhZ6DnNj9LWzwa0VwW2TqE+V2sfmLzEYtYbC43HZhtKn52B # xHJAteJf7wtF/6POF6YtVbC3sLxUap28jVZTxvC6eVBJLPcDuf4vZTXyIuosB69G # 2flGHNyMfHEo8/6nxhTdVZFuihEN3wYklX0Pp6F8OtqGNWHTAgMBAAGjggFkMIIB # YDAfBgNVHSMEGDAWgBRTeb9aqitKz1SA4dibwJ3ysgNmyzAdBgNVHQ4EFgQUDuE6 # qFM6MdWKvsG7rWcaA4WtNA4wDgYDVR0PAQH/BAQDAgGGMBIGA1UdEwEB/wQIMAYB # Af8CAQAwHQYDVR0lBBYwFAYIKwYBBQUHAwMGCCsGAQUFBwMIMBEGA1UdIAQKMAgw # BgYEVR0gADBQBgNVHR8ESTBHMEWgQ6BBhj9odHRwOi8vY3JsLnVzZXJ0cnVzdC5j # b20vVVNFUlRydXN0UlNBQ2VydGlmaWNhdGlvbkF1dGhvcml0eS5jcmwwdgYIKwYB # BQUHAQEEajBoMD8GCCsGAQUFBzAChjNodHRwOi8vY3J0LnVzZXJ0cnVzdC5jb20v # VVNFUlRydXN0UlNBQWRkVHJ1c3RDQS5jcnQwJQYIKwYBBQUHMAGGGWh0dHA6Ly9v # Y3NwLnVzZXJ0cnVzdC5jb20wDQYJKoZIhvcNAQEMBQADggIBAE1jUO1HNEphpNve # aiqMm/EAAB4dYns61zLC9rPgY7P7YQCImhttEAcET7646ol4IusPRuzzRl5ARokS # 9At3WpwqQTr81vTr5/cVlTPDoYMot94v5JT3hTODLUpASL+awk9KsY8k9LOBN9O3 # ZLCmI2pZaFJCX/8E6+F0ZXkI9amT3mtxQJmWunjxucjiwwgWsatjWsgVgG10Xkp1 # fqW4w2y1z99KeYdcx0BNYzX2MNPPtQoOCwR/oEuuu6Ol0IQAkz5TXTSlADVpbL6f # ICUQDRn7UJBhvjmPeo5N9p8OHv4HURJmgyYZSJXOSsnBf/M6BZv5b9+If8AjntIe # Q3pFMcGcTanwWbJZGehqjSkEAnd8S0vNcL46slVaeD68u28DECV3FTSK+TbMQ5Lk # uk/xYpMoJVcp+1EZx6ElQGqEV8aynbG8HArafGd+fS7pKEwYfsR7MUFxmksp7As9 # V1DSyt39ngVR5UR43QHesXWYDVQk/fBO4+L4g71yuss9Ou7wXheSaG3IYfmm8SoK # C6W59J7umDIFhZ7r+YMp08Ysfb06dy6LN0KgaoLtO0qqlBCk4Q34F8W2WnkzGJLj # tXX4oemOCiUe5B7xn1qHI/+fpFGe+zmAEc3btcSnqIBv5VPU4OOiwtJbGvoyJi1q # V3AcPKRYLqPzW0sH3DJZ84enGm1YMYIVrTCCFakCAQEwgZEwfDELMAkGA1UEBhMC # R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9y # ZDEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMSQwIgYDVQQDExtTZWN0aWdvIFJT # QSBDb2RlIFNpZ25pbmcgQ0ECEQCok3xjKCXCf6pe4NxIg97YMA0GCWCGSAFlAwQC # AQUAoHwwEAYKKwYBBAGCNwIBDDECMAAwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcC # AQQwHAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIE # IEoHgJudIW6Tps4hAevmw2djlQD+I1wt6br2hHnN511RMA0GCSqGSIb3DQEBAQUA # BIIBABGd3/aGkASxfzWPn0VHY4KwQdaFZkhUvOkFRQlinc4difP7XmZE90taAQ6g # W0IsXUL8AOsfoaQw/WLCm565/AVLDKQyZ3FMTc8zSiSrftyZw0nkmkxM9w/RuFeo # WS5qMLkcYnIpprPpoAPdObO1U5KUcm+pHBOouPx9BbXQVfM0mbEwV9x3OYDKm6lt # XB59NRTJCkJxuOGiw9DDsuyiOcGf0nxNcIVD2Ai2w3uMjU7KQPZdcncDtMFoORkD # ZY2bQaqiQ2Abt/XwRo9rNxrFuJOJY6Wv2oMSdJIW71DSDYin1DhnByRjOjlfg+T0 # lD2KK7O+DB+oxHd/FWcsIH+WyVahghNuMIITagYKKwYBBAGCNwMDATGCE1owghNW # BgkqhkiG9w0BBwKgghNHMIITQwIBAzEPMA0GCWCGSAFlAwQCAQUAMIIBDQYLKoZI # hvcNAQkQAQSggf0EgfowgfcCAQEGCisGAQQBsjECAQEwMTANBglghkgBZQMEAgEF # AAQgEIfr8QTF52YDwAqlmidG5H+NSwJeCJQFLkCZMdbV1/oCFQCRzORzATYanx7h # 5s6Zrb7zSqyMNBgPMjAyMDAxMTUxMDE5NTZaoIGKpIGHMIGEMQswCQYDVQQGEwJH # QjEbMBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3Jk # MRgwFgYDVQQKDA9TZWN0aWdvIExpbWl0ZWQxLDAqBgNVBAMMI1NlY3RpZ28gUlNB # IFRpbWUgU3RhbXBpbmcgU2lnbmVyICMxoIIN+jCCBwYwggTuoAMCAQICED0aNXIw # FYJjMNATcX6CQQgwDQYJKoZIhvcNAQEMBQAwfTELMAkGA1UEBhMCR0IxGzAZBgNV # BAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYGA1UE # ChMPU2VjdGlnbyBMaW1pdGVkMSUwIwYDVQQDExxTZWN0aWdvIFJTQSBUaW1lIFN0 # YW1waW5nIENBMB4XDTE5MDUwMjAwMDAwMFoXDTMwMDgwMTIzNTk1OVowgYQxCzAJ # BgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcM # B1NhbGZvcmQxGDAWBgNVBAoMD1NlY3RpZ28gTGltaXRlZDEsMCoGA1UEAwwjU2Vj # dGlnbyBSU0EgVGltZSBTdGFtcGluZyBTaWduZXIgIzEwggIiMA0GCSqGSIb3DQEB # AQUAA4ICDwAwggIKAoICAQDLUVD/Vv78eGNwAZNanhj0O1P2B68hbPWiD30dcC2E # dEiLnIqVBT1ZhPmRgHlRLNmKt8ELmroKis1mTwOLAbswyqu928BPEl78CsziRbAB # OIq7TefUHFSY7TlYz1vCL0WYMQr5NTi4MS5ttB45cuG4Kr6fjIwapUauCytMmf4s # S/wouSI6ZhfQqlaKIcDzliS00IUma7rwb2SYeaatvVzYU2srCtZyioVG4w0YBtrG # e0FWNpsVPvFqEaD3ZvUY0IBVY4doZusOeVWCXKPtSbhxhp6TN7Bro+pibKOului5 # /YurxvZZWwA8VyAYLXADp5zvkut5ocdd7Hy0j0vf6138oyDdkjjlalE6a4WcTKCY # CGlbBucqGdCVk4s7a4oFCSnY1trb43L6XEovexVWhjK/fwUJnS0qz1Dh5mEg28cG # gFxOFEa+rldxoqpsMJMcfnfLBulXzZH11TNyHOHaym7r8w/seVu7J57oHv4v8rt/ # 6eXQZ+u4DXykK1kDi5XtIijN+iw7xxYRr+PWsVBnacWO9XnQrf+HzPh/qvmi7WH4 # yI1p2rH0UZHrZ1fRZBHrZMsDvUlVOkVDGCwlbNEvDC1v9UE1JKDyY1kWX9mk6SxO # 27sxEsZt+FtuA9zLFY8bjXLs2w8VkNYSTu7iADElkzVvalulEmNAAYq5aYg6iLgP # GQIDAQABo4IBeDCCAXQwHwYDVR0jBBgwFoAUGqH4YRkgD8NBd0UojtE1XwYSBFUw # HQYDVR0OBBYEFG9NhgfYMieeLCnS0BMDgIHdBYMpMA4GA1UdDwEB/wQEAwIGwDAM # BgNVHRMBAf8EAjAAMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMIMEAGA1UdIAQ5MDcw # NQYMKwYBBAGyMQECAQMIMCUwIwYIKwYBBQUHAgEWF2h0dHBzOi8vc2VjdGlnby5j # b20vQ1BTMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwuc2VjdGlnby5jb20v # U2VjdGlnb1JTQVRpbWVTdGFtcGluZ0NBLmNybDB0BggrBgEFBQcBAQRoMGYwPwYI # KwYBBQUHMAKGM2h0dHA6Ly9jcnQuc2VjdGlnby5jb20vU2VjdGlnb1JTQVRpbWVT # dGFtcGluZ0NBLmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5j # b20wDQYJKoZIhvcNAQEMBQADggIBAMBo7bPY1FCb79N1yw879yTTejdFjSzvFvtR # qSwftSW1ip9dC8IbIHSNZg82y6r2Ng0Pfo9LSnRDZawNKvYK7WttxQk47QAb+OXc # pgpABUfvhMoJvENmg7+f7duOPdFBZLFwAi0DV1sYbxwsyx6yAOi6CS9bgQQ1ualj # bY4IxRjR4SGs+RIKFMAS234lnawdEMBapYPSHxpmVfybKuLsN1eO5d+WMPjAkwtD # GPkCb6lRr7hXCvMcB2k5jzecbdeRrqUuSelK3rPQjL85kA3Agc7wKgc6DKYtUdJy # 81PG+b3v7wxpSXefLFbE6aEIPQeuxR7WhCLHvH1DG1g4Yk7RBSWExUL4Hy/22/qr # jFTsRYpsEk0wWlLlpBcJIubvb/VfhkPfoS29SkaSoIGWLGGXf0Bv2D+MNVqr0cag # O4VmVIDvHxr18ZuwoSd9sucLz/YtnFgTlKmG/EVSoihtf3QPUpFJeukS+Kk7sJL9 # fZEU6VttSJTyyJbuBTizxewwP+EHIASx2Iu8/bM+b/ICUwb0oO3JmnKjl18A+8tj # 0OjNdP11ydQ2Rbp7Elly7efyelAAePhDmkbY379U1F6xx9G8G4P0K+cL6EfIU57M # Gqz2+op1U2wghanVuGq6JI6KKwiRnzcEHPZvot00qpH/xhUuHkIaCSlP9MbN4pGi # 00AMjnjjMIIG7DCCBNSgAwIBAgIQMA9vrN1mmHR8qUY2p3gtuTANBgkqhkiG9w0B # AQwFADCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNV # BAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsx # LjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw # HhcNMTkwNTAyMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjB9MQswCQYDVQQGEwJHQjEb # MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgw # FgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxJTAjBgNVBAMTHFNlY3RpZ28gUlNBIFRp # bWUgU3RhbXBpbmcgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDI # GwGv2Sx+iJl9AZg/IJC9nIAhVJO5z6A+U++zWsB21hoEpc5Hg7XrxMxJNMvzRWW5 # +adkFiYJ+9UyUnkuyWPCE5u2hj8BBZJmbyGr1XEQeYf0RirNxFrJ29ddSU1yVg/c # yeNTmDoqHvzOWEnTv/M5u7mkI0Ks0BXDf56iXNc48RaycNOjxN+zxXKsLgp3/A2U # Urf8H5VzJD0BKLwPDU+zkQGObp0ndVXRFzs0IXuXAZSvf4DP0REKV4TJf1bgvUac # gr6Unb+0ILBgfrhN9Q0/29DqhYyKVnHRLZRMyIw80xSinL0m/9NTIMdgaZtYClT0 # Bef9Maz5yIUXx7gpGaQpL0bj3duRX58/Nj4OMGcrRrc1r5a+2kxgzKi7nw0U1BjE # MJh0giHPYla1IXMSHv2qyghYh3ekFesZVf/QOVQtJu5FGjpvzdeE8NfwKMVPZIMC # 1Pvi3vG8Aij0bdonigbSlofe6GsO8Ft96XZpkyAcSpcsdxkrk5WYnJee647BeFbG # RCXfBhKaBi2fA179g6JTZ8qx+o2hZMmIklnLqEbAyfKm/31X2xJ2+opBJNQb/HKl # FKLUrUMcpEmLQTkUAx4p+hulIq6lw02C0I3aa7fb9xhAV3PwcaP7Sn1FNsH3jYL6 # uckNU4B9+rY5WDLvbxhQiddPnTO9GrWdod6VQXqngwIDAQABo4IBWjCCAVYwHwYD # VR0jBBgwFoAUU3m/WqorSs9UgOHYm8Cd8rIDZsswHQYDVR0OBBYEFBqh+GEZIA/D # QXdFKI7RNV8GEgRVMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEA # MBMGA1UdJQQMMAoGCCsGAQUFBwMIMBEGA1UdIAQKMAgwBgYEVR0gADBQBgNVHR8E # STBHMEWgQ6BBhj9odHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVNFUlRydXN0UlNB # Q2VydGlmaWNhdGlvbkF1dGhvcml0eS5jcmwwdgYIKwYBBQUHAQEEajBoMD8GCCsG # AQUFBzAChjNodHRwOi8vY3J0LnVzZXJ0cnVzdC5jb20vVVNFUlRydXN0UlNBQWRk # VHJ1c3RDQS5jcnQwJQYIKwYBBQUHMAGGGWh0dHA6Ly9vY3NwLnVzZXJ0cnVzdC5j # b20wDQYJKoZIhvcNAQEMBQADggIBAG1UgaUzXRbhtVOBkXXfA3oyCy0lhBGysNsq # fSoF9bw7J/RaoLlJWZApbGHLtVDb4n35nwDvQMOt0+LkVvlYQc/xQuUQff+wdB+P # xlwJ+TNe6qAcJlhc87QRD9XVw+K81Vh4v0h24URnbY+wQxAPjeT5OGK/EwHFhaNM # xcyyUzCVpNb0llYIuM1cfwGWvnJSajtCN3wWeDmTk5SbsdyybUFtZ83Jb5A9f0Vy # wRsj1sJVhGbks8VmBvbz1kteraMrQoohkv6ob1olcGKBc2NeoLvY3NdK0z2vgwY4 # Eh0khy3k/ALWPncEvAQ2ted3y5wujSMYuaPCRx3wXdahc1cFaJqnyTdlHb7qvNhC # g0MFpYumCf/RoZSmTqo9CfUFbLfSZFrYKiLCS53xOV5M3kg9mzSWmglfjv33sVKR # zj+J9hyhtal1H3G/W0NdZT1QgW6r8NDT/LKzH7aZlib0PHmLXGTMze4nmuWgwAxy # h8FuTVrTHurwROYybxzrF06Uw3hlIDsPQaof6aFBnf6xuKBlKjTg3qj5PObBMLvA # oGMs/FwWAKjQxH/qEZ0eBsambTJdtDgJK0kHqv3sMNrxpy/Pt/360KOE2See+wFm # d7lWEOEgbsausfm2usg1XTN2jvF8IAwqd661ogKGuinutFoAsYyr4/kKyVRd1Llq # dJ69SK6YMYIEHDCCBBgCAQEwgZEwfTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdy # ZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYGA1UEChMPU2Vj # dGlnbyBMaW1pdGVkMSUwIwYDVQQDExxTZWN0aWdvIFJTQSBUaW1lIFN0YW1waW5n # IENBAhA9GjVyMBWCYzDQE3F+gkEIMA0GCWCGSAFlAwQCAQUAoIIBWzAaBgkqhkiG # 9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTIwMDExNTEwMTk1 # NlowLwYJKoZIhvcNAQkEMSIEIM3Q8R7m7GAuF/yISzcB71s2mOcSTaFUT/O57J+i # WvCZMIHtBgsqhkiG9w0BCRACDDGB3TCB2jCB1zAWBBQlyKxzTkhQt/jZE5GoG5JJ # NmWfYTCBvAQUAtZbleKDcMFXAJX6iPkj3ZN/rY8wgaMwgY6kgYswgYgxCzAJBgNV # BAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5MRQwEgYDVQQHEwtKZXJzZXkgQ2l0 # eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMS4wLAYDVQQDEyVVU0VS # VHJ1c3QgUlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5AhAwD2+s3WaYdHypRjan # eC25MA0GCSqGSIb3DQEBAQUABIICAFzjZcnmB6sHM0rVftltjDX6aq6roQSpAmc8 # sqDztLRIoibrksqvAmISQgjHWjqFg48ToGzfA/RoNHlwE8rc/VuUnJkotL+dPEiF # y+YaT2p8OGEBXBuTHrvYBTYYCejQo6m7+geKJAgWhj6WzYuR1Aa/o0Zccun4Vedx # XW7fH+dMONTpxxusZivYKD0xsnVvFRjS/mV8N+zOHrME1+QQOSNU4BubS/ZEu4nF # wL7n5/QzgywWdKDELpKqg7+NRRNOsNOJEM+vxH+l3C1W5XG3G1dJET4tEY6xLhvO # 3AvojyzONJ54u9ORCT3peEogsS1B1lEoHNjgtWNy0dWkSkdvRfdk3igmoyiOOLqP # 6KxGtkmYNSR2Yx7zWSpEl8dt97f8/E6J9uoOU3cPDNM3hybnJkDm30oCjTRAYCYJ # nlH3ZnNNLDYm5yW1GbMKTYuI5HmEfgb4eyq3a2AvsVAXwkEz+QVRELofai0XY3Xc # oymX728ttb29Abn2lr/AhTawlxnurvY+MhiwCoN98DIvP7JgL41sT6X/rOCo2spz # 9ZnCf6Gimo5hX3agiRmnucI+sy6k3lbNAvTEQsXzFE86vWjizMkqxXgdV3A7kssY # dDfi8TZ8Snv+rjOq4nwyO/T54H6m0JXloZxqdURc13TfCIGcXcuE+mE1IfFBTHPv # TPt6ABoI # SIG # End signature block |