TcXaeMgmt.psm1
|
# # Script module for module 'TcXaeMgmt' # Set-StrictMode -Version Latest # Summary: TcXaeMgmt is supported on Windows PowerShell 5.1 or later and PowerShell 6.0+ / 7.0+ $isCore = ($PSVersionTable.Keys -contains "PSEdition") -and ($PSVersionTable.PSEdition -ne 'Desktop') Write-Verbose "IsCore: $isCore" $psVersion = $PSVersionTable.PSVersion Write-Verbose "PSVersion: $psVersion" if ($psVersion -ge [Version]'7.6') { $script:Framework = 'net10.0' #Actually, still use the net80 to minimize footprint $script:FrameworkToRemove = 'net462','net60','net80' } elseif ($psVersion -ge [Version]'7.5') { $script:Framework = 'net8.0' #Actually, still use the net80 to minimize footprint $script:FrameworkToRemove = 'net462','net60','net10' } elseif ($psVersion -ge [Version]'7.4') { $script:Framework = 'net8.0' $script:FrameworkToRemove = 'net462','net80','net10' } elseif ($psVersion -ge [Version]'7.3') { $script:Framework = 'net6.0' $script:FrameworkToRemove = 'net462','net80','net10' } elseif ($psVersion -ge [Version]'7.2') { $script:Framework = 'netstandard2.0' $script:FrameworkToRemove = 'net462','net80','net10' } elseif ($psVersion -ge [Version]'7.0') { $script:Framework = 'netstandard2.0' $script:FrameworkToRemove = 'net462','net80','net10' } elseif ($psVersion -ge [Version]'6.0') { $script:Framework = 'netstandard2.0' $script:FrameworkToRemove = 'net462','net80','net10' } else { #$script:Framework = 'netstandard2.0' $script:Framework = 'net462' #$script:FrameworkToRemove = 'net462','net80' $script:FrameworkToRemove = 'netstandard2.0','net80','net10' } # Set up some helper variables to make it easier to work with the module $script:PSModule = $ExecutionContext.SessionState.Module $script:PSModuleRoot = $script:PSModule.ModuleBase $script:PSMainAssembly = 'TwinCAT.Management.dll' ## CONSTRUCT A PATH TO THE CORRECT ASSEMBLY $pathToAssembly = [io.path]::combine($PSScriptRoot, $script:Framework, $script:PSMainAssembly) $pathToFramework = Join-Path -Path $script:PSModuleRoot -ChildPath $script:Framework $pathToAssembly = Join-Path -Path $pathToFramework -ChildPath $script:PSMainAssembly ## Remove framework binaries that are not needed #$FrameworkToRemovePath = Join-Path -Path $script:PSModuleRoot -ChildPath $script:FrameworkToRemove #if (Test-Path $FrameworkToRemovePath) #{ # Remove-Item $FrameworkToRemovePath -Force -Recurse #} # NOW LOAD THE APPROPRIATE ASSEMBLY Write-Verbose "Loading assembly '$pathToAssembly'" $importedModule = Import-Module -Name $pathToAssembly -force -PassThru # Type adapters (DynamicValuePropertyAdapter) are now registered by # ModuleAssemblyInitializer.OnImport() inside the binary module. #Set-Alias # New-Alias -Name AdsRead -Value Read-TcValue -Scope Global -Force # New-Alias -Name AdsWrite -Value Write-TcValue -Scope Global -Force # New-Alias -Name AdsReadWrite -Value Send-TcReadWrite -Scope Global -Force # SIG # Begin signature block # MIIoWwYJKoZIhvcNAQcCoIIoTDCCKEgCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB # gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR # AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUfF2yj9jKU3/bAw7EOd1fd1JZ # yyKggiF9MIIFjTCCBHWgAwIBAgIQDpsYjvnQLefv21DiCEAYWjANBgkqhkiG9w0B # AQwFADBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYD # VQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVk # IElEIFJvb3QgQ0EwHhcNMjIwODAxMDAwMDAwWhcNMzExMTA5MjM1OTU5WjBiMQsw # CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu # ZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQw # ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz # 7MKnJS7JIT3yithZwuEppz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS # 5F/WBTxSD1Ifxp4VpX6+n6lXFllVcq9ok3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7 # bXHiLQwb7iDVySAdYyktzuxeTsiT+CFhmzTrBcZe7FsavOvJz82sNEBfsXpm7nfI # SKhmV1efVFiODCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGYQJB5w3jH # trHEtWoYOAMQjdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14 # Ztk6MUSaM0C/CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2 # h4mXaXpI8OCiEhtmmnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt # 6zPZxd9LBADMfRyVw4/3IbKyEbe7f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPR # iQfhvbfmQ6QYuKZ3AeEPlAwhHbJUKSWJbOUOUlFHdL4mrLZBdd56rF+NP8m800ER # ElvlEFDrMcXKchYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8oR7FwI+isX4K # Jpn15GkvmB0t9dmpsh3lGwIDAQABo4IBOjCCATYwDwYDVR0TAQH/BAUwAwEB/zAd # BgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wHwYDVR0jBBgwFoAUReuir/SS # y4IxLVGLp6chnfNtyA8wDgYDVR0PAQH/BAQDAgGGMHkGCCsGAQUFBwEBBG0wazAk # BggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMGCCsGAQUFBzAC # hjdodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURS # b290Q0EuY3J0MEUGA1UdHwQ+MDwwOqA4oDaGNGh0dHA6Ly9jcmwzLmRpZ2ljZXJ0 # LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcmwwEQYDVR0gBAowCDAGBgRV # HSAAMA0GCSqGSIb3DQEBDAUAA4IBAQBwoL9DXFXnOF+go3QbPbYW1/e/Vwe9mqyh # hyzshV6pGrsi+IcaaVQi7aSId229GhT0E0p6Ly23OO/0/4C5+KH38nLeJLxSA8hO # 0Cre+i1Wz/n096wwepqLsl7Uz9FDRJtDIeuWcqFItJnLnU+nBgMTdydE1Od/6Fmo # 8L8vC6bp8jQ87PcDx4eo0kxAGTVGamlUsLihVo7spNU96LHc/RzY9HdaXFSMb++h # UD38dglohJ9vytsgjTVgHAIDyyCwrFigDkBjxZgiwbJZ9VVrzyerbHbObyMt9H5x # aiNrIv8SuFQtJ37YOtnwtoeW/VvRXKwYw02fc7cBqZ9Xql4o4rmUMIIGsDCCBJig # AwIBAgIQCK1AsmDSnEyfXs2pvZOu2TANBgkqhkiG9w0BAQwFADBiMQswCQYDVQQG # EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl # cnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwHhcNMjEw # NDI5MDAwMDAwWhcNMzYwNDI4MjM1OTU5WjBpMQswCQYDVQQGEwJVUzEXMBUGA1UE # ChMORGlnaUNlcnQsIEluYy4xQTA/BgNVBAMTOERpZ2lDZXJ0IFRydXN0ZWQgRzQg # Q29kZSBTaWduaW5nIFJTQTQwOTYgU0hBMzg0IDIwMjEgQ0ExMIICIjANBgkqhkiG # 9w0BAQEFAAOCAg8AMIICCgKCAgEA1bQvQtAorXi3XdU5WRuxiEL1M4zrPYGXcMW7 # xIUmMJ+kjmjYXPXrNCQH4UtP03hD9BfXHtr50tVnGlJPDqFX/IiZwZHMgQM+TXAk # ZLON4gh9NH1MgFcSa0OamfLFOx/y78tHWhOmTLMBICXzENOLsvsI8IrgnQnAZaf6 # mIBJNYc9URnokCF4RS6hnyzhGMIazMXuk0lwQjKP+8bqHPNlaJGiTUyCEUhSaN4Q # vRRXXegYE2XFf7JPhSxIpFaENdb5LpyqABXRN/4aBpTCfMjqGzLmysL0p6MDDnSl # rzm2q2AS4+jWufcx4dyt5Big2MEjR0ezoQ9uo6ttmAaDG7dqZy3SvUQakhCBj7A7 # CdfHmzJawv9qYFSLScGT7eG0XOBv6yb5jNWy+TgQ5urOkfW+0/tvk2E0XLyTRSiD # NipmKF+wc86LJiUGsoPUXPYVGUztYuBeM/Lo6OwKp7ADK5GyNnm+960IHnWmZcy7 # 40hQ83eRGv7bUKJGyGFYmPV8AhY8gyitOYbs1LcNU9D4R+Z1MI3sMJN2FKZbS110 # YU0/EpF23r9Yy3IQKUHw1cVtJnZoEUETWJrcJisB9IlNWdt4z4FKPkBHX8mBUHOF # ECMhWWCKZFTBzCEa6DgZfGYczXg4RTCZT/9jT0y7qg0IU0F8WD1Hs/q27IwyCQLM # bDwMVhECAwEAAaOCAVkwggFVMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYE # FGg34Ou2O/hfEYb7/mF7CIhl9E5CMB8GA1UdIwQYMBaAFOzX44LScV1kTN8uZz/n # upiuHA9PMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAKBggrBgEFBQcDAzB3Bggr # BgEFBQcBAQRrMGkwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNv # bTBBBggrBgEFBQcwAoY1aHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lD # ZXJ0VHJ1c3RlZFJvb3RHNC5jcnQwQwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2Ny # bDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZFJvb3RHNC5jcmwwHAYDVR0g # BBUwEzAHBgVngQwBAzAIBgZngQwBBAEwDQYJKoZIhvcNAQEMBQADggIBADojRD2N # CHbuj7w6mdNW4AIapfhINPMstuZ0ZveUcrEAyq9sMCcTEp6QRJ9L/Z6jfCbVN7w6 # XUhtldU/SfQnuxaBRVD9nL22heB2fjdxyyL3WqqQz/WTauPrINHVUHmImoqKwba9 # oUgYftzYgBoRGRjNYZmBVvbJ43bnxOQbX0P4PpT/djk9ntSZz0rdKOtfJqGVWEjV # Gv7XJz/9kNF2ht0csGBc8w2o7uCJob054ThO2m67Np375SFTWsPK6Wrxoj7bQ7gz # yE84FJKZ9d3OVG3ZXQIUH0AzfAPilbLCIXVzUstG2MQ0HKKlS43Nb3Y3LIU/Gs4m # 6Ri+kAewQ3+ViCCCcPDMyu/9KTVcH4k4Vfc3iosJocsL6TEa/y4ZXDlx4b6cpwoG # 1iZnt5LmTl/eeqxJzy6kdJKt2zyknIYf48FWGysj/4+16oh7cGvmoLr9Oj9FpsTo # FpFSi0HASIRLlk2rREDjjfAVKM7t8RhWByovEMQMCGQ8M4+uKIw8y4+ICw2/O/TO # HnuO77Xry7fwdxPm5yg/rBKupS8ibEH5glwVZsxsDsrFhsP2JjMMB0ug0wcCampA # MEhLNKhRILutG4UI4lkNbcoFUCvqShyepf2gpx8GdOfy1lKQ/a+FSCH5Vzu0nAPt # hkX0tGFuv2jiJmCG6sivqf6UHedjGzqGVnhOMIIGtDCCBJygAwIBAgIQDcesVwX/ # IZkuQEMiDDpJhjANBgkqhkiG9w0BAQsFADBiMQswCQYDVQQGEwJVUzEVMBMGA1UE # ChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEwHwYD # VQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwHhcNMjUwNTA3MDAwMDAwWhcN # MzgwMTE0MjM1OTU5WjBpMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQs # IEluYy4xQTA/BgNVBAMTOERpZ2lDZXJ0IFRydXN0ZWQgRzQgVGltZVN0YW1waW5n # IFJTQTQwOTYgU0hBMjU2IDIwMjUgQ0ExMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A # MIICCgKCAgEAtHgx0wqYQXK+PEbAHKx126NGaHS0URedTa2NDZS1mZaDLFTtQ2oR # jzUXMmxCqvkbsDpz4aH+qbxeLho8I6jY3xL1IusLopuW2qftJYJaDNs1+JH7Z+Qd # SKWM06qchUP+AbdJgMQB3h2DZ0Mal5kYp77jYMVQXSZH++0trj6Ao+xh/AS7sQRu # QL37QXbDhAktVJMQbzIBHYJBYgzWIjk8eDrYhXDEpKk7RdoX0M980EpLtlrNyHw0 # Xm+nt5pnYJU3Gmq6bNMI1I7Gb5IBZK4ivbVCiZv7PNBYqHEpNVWC2ZQ8BbfnFRQV # ESYOszFI2Wv82wnJRfN20VRS3hpLgIR4hjzL0hpoYGk81coWJ+KdPvMvaB0WkE/2 # qHxJ0ucS638ZxqU14lDnki7CcoKCz6eum5A19WZQHkqUJfdkDjHkccpL6uoG8pbF # 0LJAQQZxst7VvwDDjAmSFTUms+wV/FbWBqi7fTJnjq3hj0XbQcd8hjj/q8d6ylgx # CZSKi17yVp2NL+cnT6Toy+rN+nM8M7LnLqCrO2JP3oW//1sfuZDKiDEb1AQ8es9X # r/u6bDTnYCTKIsDq1BtmXUqEG1NqzJKS4kOmxkYp2WyODi7vQTCBZtVFJfVZ3j7O # gWmnhFr4yUozZtqgPrHRVHhGNKlYzyjlroPxul+bgIspzOwbtmsgY1MCAwEAAaOC # AV0wggFZMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFO9vU0rp5AZ8esri # kFb2L9RJ7MtOMB8GA1UdIwQYMBaAFOzX44LScV1kTN8uZz/nupiuHA9PMA4GA1Ud # DwEB/wQEAwIBhjATBgNVHSUEDDAKBggrBgEFBQcDCDB3BggrBgEFBQcBAQRrMGkw # JAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBBBggrBgEFBQcw # AoY1aHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZFJv # b3RHNC5jcnQwQwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybDMuZGlnaWNlcnQu # Y29tL0RpZ2lDZXJ0VHJ1c3RlZFJvb3RHNC5jcmwwIAYDVR0gBBkwFzAIBgZngQwB # BAIwCwYJYIZIAYb9bAcBMA0GCSqGSIb3DQEBCwUAA4ICAQAXzvsWgBz+Bz0RdnEw # vb4LyLU0pn/N0IfFiBowf0/Dm1wGc/Do7oVMY2mhXZXjDNJQa8j00DNqhCT3t+s8 # G0iP5kvN2n7Jd2E4/iEIUBO41P5F448rSYJ59Ib61eoalhnd6ywFLerycvZTAz40 # y8S4F3/a+Z1jEMK/DMm/axFSgoR8n6c3nuZB9BfBwAQYK9FHaoq2e26MHvVY9gCD # A/JYsq7pGdogP8HRtrYfctSLANEBfHU16r3J05qX3kId+ZOczgj5kjatVB+NdADV # ZKON/gnZruMvNYY2o1f4MXRJDMdTSlOLh0HCn2cQLwQCqjFbqrXuvTPSegOOzr4E # Wj7PtspIHBldNE2K9i697cvaiIo2p61Ed2p8xMJb82Yosn0z4y25xUbI7GIN/TpV # fHIqQ6Ku/qjTY6hc3hsXMrS+U0yy+GWqAXam4ToWd2UQ1KYT70kZjE4YtL8Pbzg0 # c1ugMZyZZd/BdHLiRu7hAWE6bTEm4XYRkA6Tl4KSFLFk43esaUeqGkH/wyW4N7Oi # gizwJWeukcyIPbAvjSabnf7+Pu0VrFgoiovRDiyx3zEdmcif/sYQsfch28bZeUz2 # rtY/9TCA6TD8dC3JE3rYkrhLULy7Dc90G6e8BlqmyIjlgp2+VqsS9/wQD7yFylIz # 0scmbKvFoW2jNrbM1pD2T7m3XDCCBu0wggTVoAMCAQICEAqA7xhLjfEFgtHEdqeV # dGgwDQYJKoZIhvcNAQELBQAwaTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkRpZ2lD # ZXJ0LCBJbmMuMUEwPwYDVQQDEzhEaWdpQ2VydCBUcnVzdGVkIEc0IFRpbWVTdGFt # cGluZyBSU0E0MDk2IFNIQTI1NiAyMDI1IENBMTAeFw0yNTA2MDQwMDAwMDBaFw0z # NjA5MDMyMzU5NTlaMGMxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwg # SW5jLjE7MDkGA1UEAxMyRGlnaUNlcnQgU0hBMjU2IFJTQTQwOTYgVGltZXN0YW1w # IFJlc3BvbmRlciAyMDI1IDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC # AQDQRqwtEsae0OquYFazK1e6b1H/hnAKAd/KN8wZQjBjMqiZ3xTWcfsLwOvRxUwX # cGx8AUjni6bz52fGTfr6PHRNv6T7zsf1Y/E3IU8kgNkeECqVQ+3bzWYesFtkepEr # vUSbf+EIYLkrLKd6qJnuzK8Vcn0DvbDMemQFoxQ2Dsw4vEjoT1FpS54dNApZfKY6 # 1HAldytxNM89PZXUP/5wWWURK+IfxiOg8W9lKMqzdIo7VA1R0V3Zp3DjjANwqAf4 # lEkTlCDQ0/fKJLKLkzGBTpx6EYevvOi7XOc4zyh1uSqgr6UnbksIcFJqLbkIXIPb # cNmA98Oskkkrvt6lPAw/p4oDSRZreiwB7x9ykrjS6GS3NR39iTTFS+ENTqW8m6TH # uOmHHjQNC3zbJ6nJ6SXiLSvw4Smz8U07hqF+8CTXaETkVWz0dVVZw7knh1WZXOLH # gDvundrAtuvz0D3T+dYaNcwafsVCGZKUhQPL1naFKBy1p6llN3QgshRta6Eq4B40 # h5avMcpi54wm0i2ePZD5pPIssoszQyF4//3DoK2O65Uck5Wggn8O2klETsJ7u8xE # ehGifgJYi+6I03UuT1j7FnrqVrOzaQoVJOeeStPeldYRNMmSF3voIgMFtNGh86w3 # ISHNm0IaadCKCkUe2LnwJKa8TIlwCUNVwppwn4D3/Pt5pwIDAQABo4IBlTCCAZEw # DAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQU5Dv88jHt/f3X85FxYxlQQ89hjOgwHwYD # VR0jBBgwFoAU729TSunkBnx6yuKQVvYv1Ensy04wDgYDVR0PAQH/BAQDAgeAMBYG # A1UdJQEB/wQMMAoGCCsGAQUFBwMIMIGVBggrBgEFBQcBAQSBiDCBhTAkBggrBgEF # BQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMF0GCCsGAQUFBzAChlFodHRw # Oi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVkRzRUaW1lU3Rh # bXBpbmdSU0E0MDk2U0hBMjU2MjAyNUNBMS5jcnQwXwYDVR0fBFgwVjBUoFKgUIZO # aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZEc0VGltZVN0 # YW1waW5nUlNBNDA5NlNIQTI1NjIwMjVDQTEuY3JsMCAGA1UdIAQZMBcwCAYGZ4EM # AQQCMAsGCWCGSAGG/WwHATANBgkqhkiG9w0BAQsFAAOCAgEAZSqt8RwnBLmuYEHs # 0QhEnmNAciH45PYiT9s1i6UKtW+FERp8FgXRGQ/YAavXzWjZhY+hIfP2JkQ38U+w # tJPBVBajYfrbIYG+Dui4I4PCvHpQuPqFgqp1PzC/ZRX4pvP/ciZmUnthfAEP1HSh # TrY+2DE5qjzvZs7JIIgt0GCFD9ktx0LxxtRQ7vllKluHWiKk6FxRPyUPxAAYH2Vy # 1lNM4kzekd8oEARzFAWgeW3az2xejEWLNN4eKGxDJ8WDl/FQUSntbjZ80FU3i54t # px5F/0Kr15zW/mJAxZMVBrTE2oi0fcI8VMbtoRAmaaslNXdCG1+lqvP4FbrQ6IwS # BXkZagHLhFU9HCrG/syTRLLhAezu/3Lr00GrJzPQFnCEH1Y58678IgmfORBPC1JK # kYaEt2OdDh4GmO0/5cHelAK2/gTlQJINqDr6JfwyYHXSd+V08X1JUPvB4ILfJdmL # +66Gp3CSBXG6IwXMZUXBhtCyIaehr0XkBoDIGMUG1dUtwq1qmcwbdUfcSYCn+Own # cVUXf53VJUNOaMWMts0VlRYxe5nK+At+DI96HAlXHAL5SlfYxJ7La54i71McVWRP # 66bW+yERNpbJCjyCYG2j+bdpxo/1Cy4uPcU3AWVPGrbn5PhDBf3Froguzzhk++am # i+r3Qrx5bIbY3TVzgiFI7Gq3zWcwggeLMIIFc6ADAgECAhABsox0MFiT1Kfo21d9 # Xk/JMA0GCSqGSIb3DQEBCwUAMGkxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdp # Q2VydCwgSW5jLjFBMD8GA1UEAxM4RGlnaUNlcnQgVHJ1c3RlZCBHNCBDb2RlIFNp # Z25pbmcgUlNBNDA5NiBTSEEzODQgMjAyMSBDQTEwHhcNMjUwNjI2MDAwMDAwWhcN # MjgwNzI1MjM1OTU5WjCBkjELMAkGA1UEBhMCREUxHDAaBgNVBAgTE05vcmRyaGVp # bi1XZXN0ZmFsZW4xDTALBgNVBAcTBFZlcmwxKjAoBgNVBAoMIUJlY2tob2ZmIEF1 # dG9tYXRpb24gR21iSCAmIENvLiBLRzEqMCgGA1UEAwwhQmVja2hvZmYgQXV0b21h # dGlvbiBHbWJIICYgQ28uIEtHMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC # AgEAnghlHWhdnmsvxvNTJIP7X311plydWIHbKeVH2tAmXywtPqBsVCw4ms4MqmJ/ # lBVtEMujamxNzKnL/hX63LQZKcxTdf99ZvfEAGmSHiwMS7Fn3TecWRcfUid9sV+i # wm0jxejjVlNVOc/GPk8rEbJmYZi7v9G0m/ntASU1RHy2NO3U9YsHrjI3sX2e4mPr # nrT+Hmpvk0zPRBWvzIEMLDifnLfnAXYsbVpkcaUe8bIvSIeH8sPA7D9Q6zKbzXRW # LNWVeRtWtmMe7YJNdE2IKepQMlhHeLyJvpxcz7cL0mDkQKq68d4tvCor9e6aetuV # RWMyYKQZowQWYQdFepqUAsQ7FJRk7QFOgQBTFRwCJDpWOTmXePE+tJ3BzNa6vrNU # 2/3Y1ZPmTg28mCCoq+kxmjGD6yGoPJqCLE5iUqwcXNK2WnARQqEo+nE7JJeJA6wX # JRJ9AnYyfOYAcxmV2Hed7GiMqjE+V7R1IsAoMq7OZg8viOMTCDZf59Dx4F8kgC4+ # I6Kb1jtnTFY6xeCXLj7Iy3qUcUwDEfOUvWpbo92P2qKU2xpUxHj5AV1vs5hSmfTS # hUzJRkWQXlywhjdOrqSK2t6NxTJDJ9SoHA7RpJ2fmppmHqYzIX3vJGZU0vvG1KQg # jRUVDL/AjgM+WLhwPk4kj7BJbo+h59oBvk4oCN+EMmSUnPsCAwEAAaOCAgMwggH/ # MB8GA1UdIwQYMBaAFGg34Ou2O/hfEYb7/mF7CIhl9E5CMB0GA1UdDgQWBBRPV3lf # 5n0dAEgO9cwvIZuYA5xkbTA+BgNVHSAENzA1MDMGBmeBDAEEATApMCcGCCsGAQUF # BwIBFhtodHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMwDgYDVR0PAQH/BAQDAgeA # MBMGA1UdJQQMMAoGCCsGAQUFBwMDMIG1BgNVHR8Ega0wgaowU6BRoE+GTWh0dHA6 # Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFRydXN0ZWRHNENvZGVTaWduaW5n # UlNBNDA5NlNIQTM4NDIwMjFDQTEuY3JsMFOgUaBPhk1odHRwOi8vY3JsNC5kaWdp # Y2VydC5jb20vRGlnaUNlcnRUcnVzdGVkRzRDb2RlU2lnbmluZ1JTQTQwOTZTSEEz # ODQyMDIxQ0ExLmNybDCBlAYIKwYBBQUHAQEEgYcwgYQwJAYIKwYBBQUHMAGGGGh0 # dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBcBggrBgEFBQcwAoZQaHR0cDovL2NhY2Vy # dHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZEc0Q29kZVNpZ25pbmdSU0E0 # MDk2U0hBMzg0MjAyMUNBMS5jcnQwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOC # AgEAV2BM2k+awES3eZW9IFIORVFYvp+eGUYGjxVLG/xA8HsiHwnxoddEbdSk+sli # //qIymIEhGewKfFJ0/IzZIwA4fZfSWcwe0Rn6tI8bsJs39d2RjhRMN1gjox+ccPs # jvQ8Qo59sZg/NuAJVKRGGCU+fDL9ZDwPpOIyHZeefu28O5w/Z1AcKcGH7tzo86cY # TwyD3nlGqu6QDMlfMuSEcT1Sa8CxlkX5FxALGB7ULshdqlR4Vg7pLN8zrVdRtBjj # tgiQ8sYuFbY+EE0oW2IoYHBQhJRvnnOxJ21m0N8zvt0XBwAnTSIAka4s+kUl3Aui # DPSKkx+phZ6No+7SzIwqJ8zW6sAJH/RqcNIb0oWp0aRjTK3Dx4bf8G8hfKuVrwYG # 2sY32JKG1+GMXyMRIuTDJYzFyiKK/b+yXwyODV5LUSLCYt8WOTbQ9TCXow0Pww5/ # +1m2wy0658nq8lUAsotbxSGipVXMpWw6O3F6O6yHIsdF/vzqKkX5PiipL4sXT7UQ # pwGZniwpjtAUVzQQuhvjClaMwGjw+7QOoRoOxtn69CTGkE/khrKOfVODwmY0Oo6y # e/s+2CcbqkMj+HWOqy/826s2A6zT6M//OaO8BmMoqwfF5UXl/Suqxktq80+rDp3X # O9Qu3Le33Tt+wr9I9QDOS1FrGrlaFfONrQb1ND4JC5MnhngxggZIMIIGRAIBATB9 # MGkxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjFBMD8GA1UE # AxM4RGlnaUNlcnQgVHJ1c3RlZCBHNCBDb2RlIFNpZ25pbmcgUlNBNDA5NiBTSEEz # ODQgMjAyMSBDQTECEAGyjHQwWJPUp+jbV31eT8kwCQYFKw4DAhoFAKB4MBgGCisG # AQQBgjcCAQwxCjAIoAKAAKECgAAwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQw # HAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwIwYJKoZIhvcNAQkEMRYEFA/R # QbS82rBcf/JvN3enSUPz6KvVMA0GCSqGSIb3DQEBAQUABIICAFYHUh26hSUvHVOf # 9qXjNWRq+keo7CJzvCZ4AOMVDUE217y5HT0wGj2ZJP//GNpw2TZVnSS0aW3IytJi # GEPR/JJ8aMgnx/DISOwHkWpapRSdlbGzM9HFCZ7ZZ3ZvyONXadOiz1m50Ai3ZH5q # uH7Ds2rRbEsJ7ndXBInpY/nD90AwAo0XNW4iCqQB7/s26DGtgesFnAx9KL/i4NBj # 1g7mYuZDGMB1Hj2o7bZLY1W1210JMrQLQMXhca6OOOf+PR6mtVBMzDIB7Hdksk6R # T0AHDh0hHEwRk8D4GqIUA7Y1W2FlxAzuoRzjdKV56DjHl3JUJBf1cOKXywvCKzd5 # VOfSO2j+3RRO8JGJtK1o2XiioKFug0phg8EPaGsmgMTxUhS7/7yO/4YUDy4zg663 # 8ymmADXGUXrZb4Im3d6O7ykyUj1WRw59/NpDhR1138dB49a6Lxdt+BQprfc+CKDe # t1s7bLjJy/vwLa7PQlC/lVz9t7F6eMoepkUJ0EDqlc2JAIHVy+EEskAbO3QMmqe/ # L8ejtZgYbRWpIXSfapNgclko04WfV2YKvu+Fqt7ltg8JY7cmO8i1xEqomBnn3mlv # Ybk3EXQJa7DgEmBWyCbt7O6QJ74mSAFgAl7zYPvI7k8tny+qMdwvHvig6g3YSoxX # rhQqsp0d9KC669a819KOmwgTMg77oYIDJjCCAyIGCSqGSIb3DQEJBjGCAxMwggMP # AgEBMH0waTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkRpZ2lDZXJ0LCBJbmMuMUEw # PwYDVQQDEzhEaWdpQ2VydCBUcnVzdGVkIEc0IFRpbWVTdGFtcGluZyBSU0E0MDk2 # IFNIQTI1NiAyMDI1IENBMQIQCoDvGEuN8QWC0cR2p5V0aDANBglghkgBZQMEAgEF # AKBpMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTI2 # MDYwMjE3MDQyNVowLwYJKoZIhvcNAQkEMSIEIGPsMPrIIuSXmpeEr1eZPe31KarC # GDzqvIWpIXhbwGi2MA0GCSqGSIb3DQEBAQUABIICAM79WZF69+5Mbv3Mm6XCQ74l # d1qUfYqu8DAEQsVmFQxBpbDU/99u7s02SrS2X1/6FHXrBUJMSznykcIjZAyDuwVi # l0MWQpAPiuQXVqjmw1gCztSsqArbnjK7Ni3jfd5/wB0dnxqeCN1l3rnQi0aCWGZb # DC4fwLTiBSorhNh1YAa9qNFxFCLIRUrxTMcXP957xzEhX+o+qHqsW93B0TD+8tr2 # 8XGaRXOgiFVWOGumBiTFry7DaA1EZ2zZrmrrEY+4qQF0LgAXHlYeYbooYAVjc7wt # nILx7NlDyJphsdezzxh7b9ChhGyInrOtV0ORBnj6gIFOM6EilOn02JyVqWrNfTEH # 0XHdPBA7JalJwcPfi4Yp8kVsYj4rwWOo7BLIa1TlhfbD0OBu4ZeNA11shjWq30YF # uFtsifHSmJ+paaiGmTSNRFbetB++YmF66sFX8FxWKXgGyCs0ojVEDeaiCHoXEo5M # 8gQT94XdVoe86PAIhtccxNH4uFyORYWo3dX3fyJ3L36XBJ+KTRYXq4OZWeaJstg1 # ifPh6x6mcgg0fW3bFiZbq8Uvj2/+7MHR0mgEfo/Ik+DFsK0GdJmbebsN3nIH+XOZ # tNiA2G9H2PfBRSUDwBN9e8HrSauhesmEJXB4J7NEcHpYOHW3lVyYXBlaF9luMt8K # gIlC0/WLSCZt8XlmzKgK # SIG # End signature block |