RemoteWrench.psm1
|
# Copyright: (c) 2026, Jordan Borean (@jborean93) <jborean93@gmail.com> # MIT License (see LICENSE or https://opensource.org/licenses/MIT) using namespace System.IO using namespace System.Management.Automation using namespace System.Reflection # Resolve the cmdlet through $ExecutionContext to ensure we don't load a # shadowed version of Import-Module. $importModule = $ExecutionContext.InvokeCommand.GetCommand( 'Microsoft.PowerShell.Core\Import-Module', [CommandTypes]::Cmdlet) $moduleName = [Path]::GetFileNameWithoutExtension($PSCommandPath) $innerMod = if ($PSVersionTable.PSEdition -eq 'Desktop') { # Windows PowerShell has no AssemblyLoadContext, the module assembly is # imported directly and its dependencies load in the same context as # every other module. Avoiding conflicts with them is best effort. $modulePath = [Path]::Combine($PSScriptRoot, 'bin', 'net472', "$moduleName.dll") & $importModule -Name $modulePath -ErrorAction Stop -PassThru } else { $loaderName = "$moduleName.Loader.LoadContext" $loaderPath = [Path]::Combine($PSScriptRoot, 'bin', 'net8.0', "$moduleName.Loader.dll") $isReload = $true $loaderType = $loaderName -as [type] if (-not $loaderType) { $isReload = $false $null = [Assembly]::LoadFrom($loaderPath) $loaderType = $loaderName -as [type] } elseif ($loaderType.Assembly.Location -ne $loaderPath) { # Assemblies cannot be unloaded so once a version of this module is loaded # in the process it is the only one that can be used. $msg = "Cannot import $moduleName from '$PSScriptRoot' as a different copy is already loaded in this process " + "from '$($loaderType.Assembly.Location)'. Start a new PowerShell process to use this copy." $err = [ErrorRecord]::new( [InvalidOperationException]::new($msg), 'ModuleAlreadyLoadedFromDifferentPath', [ErrorCategory]::ResourceExists, $PSScriptRoot) throw $err } $mainModule = $loaderType::Initialize($moduleName) & $importModule -Assembly $mainModule -PassThru:$isReload } if ($innerMod) { # The cmdlets of a module imported in this script are not exported from # this module unless added here. On pwsh this is only needed on a reload, # Import-Module in an assembly will pick up a cached instance and not call # the same path to set the nested module's cmdlets to the current module # scope. # https://github.com/PowerShell/PowerShell/issues/20710 $addExportedCmdlet = [PSModuleInfo].GetMethod( 'AddExportedCmdlet', [BindingFlags]'Instance, NonPublic') $addExportedAlias = [PSModuleInfo].GetMethod( 'AddExportedAlias', [BindingFlags]'Instance, NonPublic') foreach ($cmd in $innerMod.ExportedCmdlets.Values) { $addExportedCmdlet.Invoke($ExecutionContext.SessionState.Module, @(, $cmd)) } foreach ($alias in $innerMod.ExportedAliases.Values) { $addExportedAlias.Invoke($ExecutionContext.SessionState.Module, @(, $alias)) } } # SIG # Begin signature block # MIIw1AYJKoZIhvcNAQcCoIIwxTCCMMECAQMxDTALBglghkgBZQMEAgEwewYKKwYB # BAGCNwIBBKBtBGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCCujVb9zeSmEro+ # bvliHGlzeCXSQMYspnpExpai58L7FKCCFXUwggajMIIEi6ADAgECAhMzAAg69Td6 # kxNse69GAAAACDr1MA0GCSqGSIb3DQEBDAUAMFoxCzAJBgNVBAYTAlVTMR4wHAYD # VQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKzApBgNVBAMTIk1pY3Jvc29mdCBJ # RCBWZXJpZmllZCBDUyBFT0MgQ0EgMDMwHhcNMjYxMDEzMDI0OTE3WhcNMjYxMDE2 # MDI0OTE3WjBlMQswCQYDVQQGEwJBVTETMBEGA1UECBMKUXVlZW5zbGFuZDERMA8G # A1UEBxMIQnJpc2JhbmUxFjAUBgNVBAoTDUpvcmRhbiBCb3JlYW4xFjAUBgNVBAMT # DUpvcmRhbiBCb3JlYW4wggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCG # hMCzQwaZCP1QE0dzmy6j1iQ5Bs7Bd0omWRyWZzcfgWddu24yJ79b+m1lykxRbERL # 2t2zIXuea3SMHR70iNb3WlKCEBMBS2nEkq4eipDaLsZvZpB8bZRWJDVpCco5/Wty # CR1JDMZUUtjMTBeFzPYM6cmXW6mvCZQgYXJZeYd8UKC18OMXT1jTNTcB3us5NYRs # V83wm0x8sZY+NTfCQdGwyzHdtbnQV4khBSMuBynIywD7dk+eoJaP6rhPcwN0B9IY # 4H6aECjx9LBXx/cNFLfrN/SqNyfKx/nocSJfTXVbHaMq+jcPgPA+SgqPRQ/b0521 # PNc0TzC20x+OX1DQLAw95Ej9YfcGKywSDMyN7bhXHbI4uo+h5sd1ik01Iz7JMFCB # FMuuZWSF6fYh2COGyY5Ksl+e6g+F49+5dvpXO7xCkFpMGzevYppWEFcqeLYFxBma # 6F+z8vpzg0iSpr9CnyfspjpFYT6QaaX4VZFtlJBc+h7YwExjBZhpKEgugRmABj0C # AwEAAaOCAdUwggHRMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMDwGA1Ud # JQQ1MDMGCisGAQQBgjdhAQAGCCsGAQUFBwMDBhsrBgEEAYI3YcD1uzmDxbqHboKj # 0bsfgZfH91YwHQYDVR0OBBYEFO2BhyDu77dgDkZl53M5PpgB36zBMB8GA1UdIwQY # MBaAFGtepTTDBcViSiFajqtzYGLUrGOFMGcGA1UdHwRgMF4wXKBaoFiGVmh0dHA6 # Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01pY3Jvc29mdCUyMElEJTIw # VmVyaWZpZWQlMjBDUyUyMEVPQyUyMENBJTIwMDMuY3JsMHQGCCsGAQUFBwEBBGgw # ZjBkBggrBgEFBQcwAoZYaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9j # ZXJ0cy9NaWNyb3NvZnQlMjBJRCUyMFZlcmlmaWVkJTIwQ1MlMjBFT0MlMjBDQSUy # MDAzLmNydDBUBgNVHSAETTBLMEkGBFUdIAAwQTA/BggrBgEFBQcCARYzaHR0cDov # L3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9Eb2NzL1JlcG9zaXRvcnkuaHRtMA0G # CSqGSIb3DQEBDAUAA4ICAQDL/RmeYDPPrA2XYSr9MacKvorbD3IzdCCOtxmoasTj # qP4luE8w33bYEx3R6eolhwyCwgF0YQobrRh9ndTsh158aYJi7Kw/JghxyfhiSU3a # p3eAmj2EZkArxXBc64p9n/faWo5SChxV7JqNrY+N+6crr33N9uJ4DkMwAi6IbAq8 # YYitpEgLgIGDRpZcnySmiZGFPTt9tPAu2LwI9CkfZEfdzb1mjBFINqEHYzuwLDq7 # SmiEbiDirctCAKVPgejJWeibwrHt3Jy8smle6HHmmaqoSRsnAqDEs199MXOUSysF # lqfrAengdpbUDWjbSKq4FR9wjpDGJsVOsZ7jFpcreZvJg0EqyvgHDC//kIap5sFN # 8fvignsgJt7pO/+hvY85MRQFrIKPMcw9n4aehy5F2s6gGww9K8+v8Sa+rO2NHK+D # B0Fyty1HpQNzsV5kmHj0RvODiuHzjvEyluq/ssm5ZXA1Pug9WDOh+xH7jcJ7vwZv # QaZPovdor0vXFmxmYXM8QPmgtLm8TGUS0zNrUtuzwSNlWUEs3IDQTVilaSa+f6zi # lVtc/f5d2R/5YauNbw2xEGmnTlJ09uj0ke8cumkU4eTRBamGjUchhLjG4Qgfgz4U # NmW0OKxUtuvvI7o4J5qbOnFvkUSieUpQf2fsASOqJSctNgWGiwk7yOoMIMEFWqbH # bDCCBygwggUQoAMCAQICEzMAAAAVBT5uGY6TKdkAAAAAABUwDQYJKoZIhvcNAQEM # BQAwYzELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv # bjE0MDIGA1UEAxMrTWljcm9zb2Z0IElEIFZlcmlmaWVkIENvZGUgU2lnbmluZyBQ # Q0EgMjAyMTAeFw0yNjAzMjYxODExMjhaFw0zMTAzMjYxODExMjhaMFoxCzAJBgNV # BAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKzApBgNVBAMT # Ik1pY3Jvc29mdCBJRCBWZXJpZmllZCBDUyBFT0MgQ0EgMDMwggIiMA0GCSqGSIb3 # DQEBAQUAA4ICDwAwggIKAoICAQDg9Ms9AqovDnMePvMOe+KybhCd8+lokzYORlS3 # kBVXseecbyGwBcsenlm5bLtMGPjiIFLzBQF+ghlVV/U29q5GcdeEEBCHTTGhL2ko # IrLc4UrliMRcbv9mOMtR/l7/xAmv0Fx4BJHn1dHt37fvrBqXmKjKfGf5DpyO/+hn # V7TEreMtS19iO+bjZ/9Hnpg3PCk0e7YSbRTFkx97FZwRWpC4s3NepRfRXQh/WMAj # 7JmsYeVZohi4TF5yW2JMrJZqwHcyzJZYtD2Hlno5ZEJkdiZcEaxHOobmwO06Z1J9 # c23ps9PGIhGaq1sKLEAz9Doc5rLkYWGteDrscKhAp2kIc/oYlH9Ij6BkOqqgWINE # kEtC8ZNG1Mak+h3o65aj0iQKmdxW7IZaHO5cuyoMi+KtYfXeIIg3sVIbS2EL8kUt # sDGdEqNqAq/isqTi1jXqLe6iKp1ni1SPdvPW9G03CTsYF68b/yuIQRwbdoBCXemM # NJCS0dorCRY4b2WAAy4ng7SANcEgrBgZf535+QfLU5hGzrKjIpbMabauWb5FKWUK # kMsPcXFkXRWO4noKPm4KWlFypqOpbJ/KONVReIlxHQRegAOBzIhRB7gr9IDQ1sc2 # MgOgQ+xVGW4oq4HD0mfAiwiyLskZrkaQ7JoanYjBNcR9RS26YxAVbcBtLitFTzCI # Eg5ZdQIDAQABo4IB3DCCAdgwDgYDVR0PAQH/BAQDAgGGMBAGCSsGAQQBgjcVAQQD # AgEAMB0GA1UdDgQWBBRrXqU0wwXFYkohWo6rc2Bi1KxjhTBUBgNVHSAETTBLMEkG # BFUdIAAwQTA/BggrBgEFBQcCARYzaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3Br # aW9wcy9Eb2NzL1JlcG9zaXRvcnkuaHRtMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIA # QwBBMBIGA1UdEwEB/wQIMAYBAf8CAQAwHwYDVR0jBBgwFoAU2UEpsA8PY2zvadf1 # zSmepEhqMOYwcAYDVR0fBGkwZzBloGOgYYZfaHR0cDovL3d3dy5taWNyb3NvZnQu # Y29tL3BraW9wcy9jcmwvTWljcm9zb2Z0JTIwSUQlMjBWZXJpZmllZCUyMENvZGUl # MjBTaWduaW5nJTIwUENBJTIwMjAyMS5jcmwwfQYIKwYBBQUHAQEEcTBvMG0GCCsG # AQUFBzAChmFodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRzL01p # Y3Jvc29mdCUyMElEJTIwVmVyaWZpZWQlMjBDb2RlJTIwU2lnbmluZyUyMFBDQSUy # MDIwMjEuY3J0MA0GCSqGSIb3DQEBDAUAA4ICAQBdbiI8zwXLX8glJEh/8Q22UMCU # hWBO46Z9FPhwOR3mdlqRVLkYOon/MczUwrjDhx3X99SPH5PSflkGoTvnO9ZWHM5Y # FVYpO7NYuB+mfVSGAGZwiGOASWk0i2B7vn9nElJJmoiXxugfH5YdBsrUgTt0AFNX # kzmqTgk+S1Hxb1u/0HCqEHVZPk2A/6eJXYbtpRM5Fcz00jisUl9BRZgSebODV85b # BzOveqyC3f0PnHCxRJNhMb8xP/sB/VI7pf2rheSV7zqUSv8vn/fIMblXeaVIlpqo # q8SP9BJMjE/CoVXJxnkZQRM1Fa7kN9yztvReOhxSgPgpZx/Xl/jkwyEFVJTBfBp3 # sTgfIc/pmqv2ehtakL2AEj78EmOPQohxJT3wyX+P78GA25tLpAvzj3RMMHd8z18Z # uuVi+60MAzGpOASH1L8Nlr3fZRZnQO+pyye2DCvYmHaIfdUgYJqn7noxxGVv89+R # aETh1tgCDvwNpFCSG7vl5A4ako+2fx409r9TWjXC7Oif1IQ5ZJzB4Rf8GvBiHYjv # MmHpledp1FGRLdSRFVpC3/OKpZY6avIqZp7+8pP/WQP903DdgrvAT6W4xPOBxXPa # 4tGksN3SuqJaiFYHSNyeBufn8iseujW4IbBSbHD4BPqbF3qZ+7nG9d/d/G2/Lx4k # H9cCmBfmsZdSkHmukDCCB54wggWGoAMCAQICEzMAAAAHh6M0o3uljhwAAAAAAAcw # DQYJKoZIhvcNAQEMBQAwdzELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1pY3Jvc29m # dCBDb3Jwb3JhdGlvbjFIMEYGA1UEAxM/TWljcm9zb2Z0IElkZW50aXR5IFZlcmlm # aWNhdGlvbiBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAyMDIwMB4XDTIxMDQw # MTIwMDUyMFoXDTM2MDQwMTIwMTUyMFowYzELMAkGA1UEBhMCVVMxHjAcBgNVBAoT # FU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjE0MDIGA1UEAxMrTWljcm9zb2Z0IElEIFZl # cmlmaWVkIENvZGUgU2lnbmluZyBQQ0EgMjAyMTCCAiIwDQYJKoZIhvcNAQEBBQAD # ggIPADCCAgoCggIBALLwwK8ZiCji3VR6TElsaQhVCbRS/3pK+MHrJSj3Zxd3KU3r # lfL3qrZilYKJNqztA9OQacr1AwoNcHbKBLbsQAhBnIB34zxf52bDpIO3NJlfIaTE # /xrweLoQ71lzCHkD7A4As1Bs076Iu+mA6cQzsYYH/Cbl1icwQ6C65rU4V9NQhNUw # grx9rGQ//h890Q8JdjLLw0nV+ayQ2Fbkd242o9kH82RZsH3HEyqjAB5a8+Ae2nPI # Pc8sZU6ZE7iRrRZywRmrKDp5+TcmJX9MRff241UaOBs4NmHOyke8oU1TYrkxh+Ye # HgfWo5tTgkoSMoayqoDpHOLJs+qG8Tvh8SnifW2Jj3+ii11TS8/FGngEaNAWrbyf # NrC69oKpRQXY9bGH6jn9NEJv9weFxhTwyvx9OJLXmRGbAUXN1U9nf4lXezky6Uh/ # cgjkVd6CGUAf0K+Jw+GE/5VpIVbcNr9rNE50Sbmy/4RTCEGvOq3GhjITbCa4crCz # TTHgYYjHs1NbOc6brH+eKpWLtr+bGecy9CrwQyx7S/BfYJ+ozst7+yZtG2wR461u # ckFu0t+gCwLdN0A6cFtSRtR8bvxVFyWwTtgMMFRuBa3vmUOTnfKLsLefRaQcVTgR # nzeLzdpt32cdYKp+dhr2ogc+qM6K4CBI5/j4VFyC4QFeUP2YAidLtvpXRRo3AgMB # AAGjggI1MIICMTAOBgNVHQ8BAf8EBAMCAYYwEAYJKwYBBAGCNxUBBAMCAQAwHQYD # VR0OBBYEFNlBKbAPD2Ns72nX9c0pnqRIajDmMFQGA1UdIARNMEswSQYEVR0gADBB # MD8GCCsGAQUFBwIBFjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL0Rv # Y3MvUmVwb3NpdG9yeS5odG0wGQYJKwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwDwYD # VR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBTIftJqhSobyhmYBAcnz1AQT2ioojCB # hAYDVR0fBH0wezB5oHegdYZzaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9w # cy9jcmwvTWljcm9zb2Z0JTIwSWRlbnRpdHklMjBWZXJpZmljYXRpb24lMjBSb290 # JTIwQ2VydGlmaWNhdGUlMjBBdXRob3JpdHklMjAyMDIwLmNybDCBwwYIKwYBBQUH # AQEEgbYwgbMwgYEGCCsGAQUFBzAChnVodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20v # cGtpb3BzL2NlcnRzL01pY3Jvc29mdCUyMElkZW50aXR5JTIwVmVyaWZpY2F0aW9u # JTIwUm9vdCUyMENlcnRpZmljYXRlJTIwQXV0aG9yaXR5JTIwMjAyMC5jcnQwLQYI # KwYBBQUHMAGGIWh0dHA6Ly9vbmVvY3NwLm1pY3Jvc29mdC5jb20vb2NzcDANBgkq # hkiG9w0BAQwFAAOCAgEAfyUqnv7Uq+rdZgrbVyNMul5skONbhls5fccPlmIbzi+O # wVdPQ4H55v7VOInnmezQEeW4LqK0wja+fBznANbXLB0KrdMCbHQpbLvG6UA/Xv2p # fpVIE1CRFfNF4XKO8XYEa3oW8oVH+KZHgIQRIwAbyFKQ9iyj4aOWeAzwk+f9E5St # Np5T8FG7/VEURIVWArbAzPt9ThVN3w1fAZkF7+YU9kbq1bCR2YD+MtunSQ1Rft6X # G7b4e0ejRA7mB2IoX5hNh3UEauY0byxNRG+fT2MCEhQl9g2i2fs6VOG19CNep7Sq # uKaBjhWmirYyANb0RJSLWjinMLXNOAga10n8i9jqeprzSMU5ODmrMCJE12xS/NWS # hg/tuLjAsKP6SzYZ+1Ry358ZTFcx0FS/mx2vSoU8s8HRvy+rnXqyUJ9HBqS0DErV # LjQwK8VtsBdekBmdTbQVoCgPCqr+PDPB3xajYnzevs7eidBsM71PINK2BoE2UfMw # xCCX3mccFgx6UsQeRSdVVVNSyALQe6PT12418xon2iDGE81OGCreLzDcMAZnrUAx # 4XQLUz6ZTl65yPUiOh3k7Yww94lDf+8oG2oZmDh5O1Qe38E+M3vhKwmzIeoB1dVL # lz4i3IpaDcR+iuGjH2TdaC1ZOmBXiCRKJLj4DT2uhJ04ji+tHD6n58vhavFIrmcx # ghq1MIIasQIBATBxMFoxCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQg # Q29ycG9yYXRpb24xKzApBgNVBAMTIk1pY3Jvc29mdCBJRCBWZXJpZmllZCBDUyBF # T0MgQ0EgMDMCEzMACDr1N3qTE2x7r0YAAAAIOvUwCwYJYIZIAWUDBAIBoHwwEAYK # KwYBBAGCNwIBDDECMAAwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYB # BAGCNwIBCzEOMAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIEILgMN4HcONlb # IT4H5ZK0/VZ14uJNf4G3TftA0r3uZyYkMAsGCSqGSIb3DQEBAQSCAYBeKMXtmqMG # FYQRaanUNNynVitWjBes2CRKykrEgd9/GPcEsITvKSgDXRSLv2DMBFWx4FKPyOVc # 3bwO3lgycKqrVASAaWpJmbyd7rRWQE2Q4IcPk2U9jpAQOoG5ZFu/GYWWWchfkNUT # Sppf8LyEBMDCcUHPBWW+kRB4r11fa6IDOMCKcPgRqbGzcrOseE7VSnFoQDFoMmKr # /abKtfstGjKGoINqhQ3CBrU2RSU0U7IvPtRhPtFX/Y+w6kTTq5YqFvZlGE+fGxdd # swIygkf6a2Aee8t7q69EqpJbyYHjZjpxqkmE/NTB+1xdpxmVhtZbFVoadaBj4+T5 # NEaxkVgS0TpKNMrJKZh8CLAyvcPgaHHGfxvtPt/92l46gBDH5Pn9b1wBtvbAeaQr # FrOlW7RDw5P7YqLzahGxSmDH2ph7NxMidj17YXqm4vktFrEcc3RyYpg4jqDm62cp # /5/3EE+ieJsh4c4YJ47/pLMVDUyyv2GtpUZbAs5vuuYmVnc2jThei1qhghgbMIIY # FwYKKwYBBAGCNwMDATGCGAcwghgDBgkqhkiG9w0BBwKgghf0MIIX8AIBAzEPMA0G # CWCGSAFlAwQCAQUAMIIBaQYLKoZIhvcNAQkQAQSgggFYBIIBVDCCAVACAQEGCisG # AQQBhFkKAwEwMTANBglghkgBZQMEAgEFAAQgqMGXTLMXcoY60A119Ih2Pgds1b5m # 5uSf/MulID5Ly/ACBmrJPbRAjhgRMjAyNjEwMTQyMjE3NDEuOVowBIACAfQCBzUU # 9lWJv+iggeGkgd4wgdsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9u # MRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp # b24xJTAjBgNVBAsTHE1pY3Jvc29mdCBBbWVyaWNhIE9wZXJhdGlvbnMxJzAlBgNV # BAsTHm5TaGllbGQgVFNTIEVTTjo3RDAwLTA1RTAtRDk0NzE1MDMGA1UEAxMsTWlj # cm9zb2Z0IFB1YmxpYyBSU0EgVGltZSBTdGFtcGluZyBBdXRob3JpdHmggg8hMIIH # gjCCBWqgAwIBAgITMwAAAAXlzw//Zi7JhwAAAAAABTANBgkqhkiG9w0BAQwFADB3 # MQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMUgw # RgYDVQQDEz9NaWNyb3NvZnQgSWRlbnRpdHkgVmVyaWZpY2F0aW9uIFJvb3QgQ2Vy # dGlmaWNhdGUgQXV0aG9yaXR5IDIwMjAwHhcNMjAxMTE5MjAzMjMxWhcNMzUxMTE5 # MjA0MjMxWjBhMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv # cmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUHVibGljIFJTQSBUaW1lc3RhbXBp # bmcgQ0EgMjAyMDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJ5851Jj # /eDFnwV9Y7UGIqMcHtfnlzPREwW9ZUZHd5HBXXBvf7KrQ5cMSqFSHGqg2/qJhYqO # QxwuEQXG8kB41wsDJP5d0zmLYKAY8Zxv3lYkuLDsfMuIEqvGYOPURAH+Ybl4SJEE # Snt0MbPEoKdNihwM5xGv0rGofJ1qOYSTNcc55EbBT7uq3wx3mXhtVmtcCEr5ZKTk # KKE1CxZvNPWdGWJUPC6e4uRfWHIhZcgCsJ+sozf5EeH5KrlFnxpjKKTavwfFP6Xa # GZGWUG8TZaiTogRoAlqcevbiqioUz1Yt4FRK53P6ovnUfANjIgM9JDdJ4e0qiDRm # 5sOTiEQtBLGd9Vhd1MadxoGcHrRCsS5rO9yhv2fjJHrmlQ0EIXmp4DhDBieKUGR+ # eZ4CNE3ctW4uvSDQVeSp9h1SaPV8UWEfyTxgGjOsRpeexIveR1MPTVf7gt8hY64X # NPO6iyUGsEgt8c2PxF87E+CO7A28TpjNq5eLiiunhKbq0XbjkNoU5JhtYUrlmAbp # xRjb9tSreDdtACpm3rkpxp7AQndnI0Shu/fk1/rE3oWsDqMX3jjv40e8KN5YsJBn # czyWB4JyeeFMW3JBfdeAKhzohFe8U5w9WuvcP1E8cIxLoKSDzCCBOu0hWdjzKNu8 # Y5SwB1lt5dQhABYyzR3dxEO/T1K/BVF3rV69AgMBAAGjggIbMIICFzAOBgNVHQ8B # Af8EBAMCAYYwEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYEFGtpKDo1L0hjQM97 # 2K9J6T7ZPdshMFQGA1UdIARNMEswSQYEVR0gADBBMD8GCCsGAQUFBwIBFjNodHRw # Oi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL0RvY3MvUmVwb3NpdG9yeS5odG0w # EwYDVR0lBAwwCgYIKwYBBQUHAwgwGQYJKwYBBAGCNxQCBAweCgBTAHUAYgBDAEEw # DwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBTIftJqhSobyhmYBAcnz1AQT2io # ojCBhAYDVR0fBH0wezB5oHegdYZzaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3Br # aW9wcy9jcmwvTWljcm9zb2Z0JTIwSWRlbnRpdHklMjBWZXJpZmljYXRpb24lMjBS # b290JTIwQ2VydGlmaWNhdGUlMjBBdXRob3JpdHklMjAyMDIwLmNybDCBlAYIKwYB # BQUHAQEEgYcwgYQwgYEGCCsGAQUFBzAChnVodHRwOi8vd3d3Lm1pY3Jvc29mdC5j # b20vcGtpb3BzL2NlcnRzL01pY3Jvc29mdCUyMElkZW50aXR5JTIwVmVyaWZpY2F0 # aW9uJTIwUm9vdCUyMENlcnRpZmljYXRlJTIwQXV0aG9yaXR5JTIwMjAyMC5jcnQw # DQYJKoZIhvcNAQEMBQADggIBAF+Idsd+bbVaFXXnTHho+k7h2ESZJRWluLE0Oa/p # O+4ge/XEizXvhs0Y7+KVYyb4nHlugBesnFqBGEdC2IWmtKMyS1OWIviwpnK3aL5J # edwzbeBF7POyg6IGG/XhhJ3UqWeWTO+Czb1c2NP5zyEh89F72u9UIw+IfvM9lzDm # c2O2END7MPnrcjWdQnrLn1Ntday7JSyrDvBdmgbNnCKNZPmhzoa8PccOiQljjTW6 # GePe5sGFuRHzdFt8y+bN2neF7Zu8hTO1I64XNGqst8S+w+RUdie8fXC1jKu3m9KG # IqF4aldrYBamyh3g4nJPj/LR2CBaLyD+2BuGZCVmoNR/dSpRCxlot0i79dKOChmo # ONqbMI8m04uLaEHAv4qwKHQ1vBzbV/nG89LDKbRSSvijmwJwxRxLLpMQ/u4xXxFf # R4f/gksSkbJp7oqLwliDm/h+w0aJ/U5ccnYhYb7vPKNMN+SZDWycU5ODIRfyoGl5 # 9BsXR/HpRGtiJquOYGmvA/pk5vC1lcnbeMrcWD/26ozePQ/TWfNXKBOmkFpvPE8C # H+EeGGWzqTCjdAsno2jzTeNSxlx3glDGJgcdz5D/AAxw9Sdgq/+rY7jjgs7X6fqP # TXPmaCAJKVHAP19oEjJIBwD1LyHbaEgBxFCogYSOiUIr0Xqcr1nJfiWG2GwYe6Zo # AF1bMIIHlzCCBX+gAwIBAgITMwAAAF8q5PgjRbwaSQAAAAAAXzANBgkqhkiG9w0B # AQwFADBhMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0 # aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUHVibGljIFJTQSBUaW1lc3RhbXBpbmcg # Q0EgMjAyMDAeFw0yNjA5MTcxODU3MjVaFw0yNzA5MTQxODU3MjVaMIHbMQswCQYD # VQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEe # MBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSUwIwYDVQQLExxNaWNyb3Nv # ZnQgQW1lcmljYSBPcGVyYXRpb25zMScwJQYDVQQLEx5uU2hpZWxkIFRTUyBFU046 # N0QwMC0wNUUwLUQ5NDcxNTAzBgNVBAMTLE1pY3Jvc29mdCBQdWJsaWMgUlNBIFRp # bWUgU3RhbXBpbmcgQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC # CgKCAgEA51SXw150uzdVDaSg9y81N0KF1++mAwWpNpRQgF8rEc9NWiswhKtKgRer # h+PjXSHbiwIqlZvX4u6VwRDdNmNo2oBRfieExGrTNw56kaLCB31wVvyBMt5Lxi4h # kIc21Ek+poAzU9EhRgsUr7MYJQLKcBL07GGX3/PGdSrLNTkgxaUz/2oZvcmS4f8q # qoVBOUh22ia7QFJHPUOa12moxGmze28Fu9+Jxto8kLEZ9Gs9K2CTYrLxs6KSP10W # wjouAj2fSgqH2POob3euigzLwpmj6Yh+KdJu0NYBNfoEBTJLV7kPx5HoZXkSf/Yz # 3h9G9XQNFcNibTqtpkR8PpdjYMdRJvnoEVa/8vrfc5sbuYrJkVeZ9H16HVUGDsDH # WPvLn1MSxMTg4Td3Jv6Y5tnAnl/yHxiQFlE1zW/c2fKfYvD+ZcSeKEYvUTmp31/b # Z0V8pmEOD9IL3gECb7a6cGhsMZvpzg6WUNpW66CwL/m5MXLEzrM0qJNnYUF1RkaQ # 8IYuGYzdJPf06i0Cu/deEsiZLbhkCcZG3WVj/JuBjYQiKl8OKwqs//Qawn7OcyxU # 1cWL3J37x6Pta6CyKrxZ2rriFBMgIDJHJIDJ4kwPinvlkUDbwLnjo0hs0Smi903e # mDdG9IH/vXGzPSiFIveh+5sg3eiXYbklkfHYZOM5mRP5sE6GXV0CAwEAAaOCAcsw # ggHHMB0GA1UdDgQWBBRSh08N0S56eMV5ovb2CoDv/Dla3DAfBgNVHSMEGDAWgBRr # aSg6NS9IY0DPe9ivSek+2T3bITBsBgNVHR8EZTBjMGGgX6BdhltodHRwOi8vd3d3 # Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NybC9NaWNyb3NvZnQlMjBQdWJsaWMlMjBS # U0ElMjBUaW1lc3RhbXBpbmclMjBDQSUyMDIwMjAuY3JsMHkGCCsGAQUFBwEBBG0w # azBpBggrBgEFBQcwAoZdaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9j # ZXJ0cy9NaWNyb3NvZnQlMjBQdWJsaWMlMjBSU0ElMjBUaW1lc3RhbXBpbmclMjBD # QSUyMDIwMjAuY3J0MAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUH # AwgwDgYDVR0PAQH/BAQDAgeAMGYGA1UdIARfMF0wUQYMKwYBBAGCN0yDfQEBMEEw # PwYIKwYBBQUHAgEWM2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvRG9j # cy9SZXBvc2l0b3J5Lmh0bTAIBgZngQwBBAIwDQYJKoZIhvcNAQEMBQADggIBADGi # VwzuujXhCimnfTFpNUQoBQkG0A1fWl4/K4oqFCh6/JK+xZdA42GNGoIZ5Qbxls4c # MTDHfECHr+A5ZzIZ9AZODvHkPrvTAbtK3wdaykDvbWLC+LP0SZp3HpeaqX39+MSo # jslm+AoqpqwQB0xazBrZ/eS2AhaoKNXd0coLhJ9EnwzhO0/C7FgGG+uLWS5qBQ77 # 66vpguEjbftNivU5odo9YXlPuPbmhHRJwBchZSFbLNV/9Jdce6nDzdG519o7sOJw # zAISLDTlhXN2ezH4NqRIpFYo9O2qvjNXfNDoopqHoeg0BoDPacdouiJTrZ4F2FyY # S1lwQWrY1CS362zukhFWelBiOk8HCxfyXLPnkrKKIdxIegEVHz/2IzchxQVc9jk2 # d+mUZdUPSGyaYZBAGYYY/XdV5/7G6vC3WoZ4ducToCSzhI4k3p8TlfnsgMaSuQ2/ # MryubX7w6jvPx0+NXhYuS9ROcy2Sgt846q+zAzhWM2aFapwmf/aGvUItPjiEcdNk # EfwThGLhlO2p+NFDA8eWAX69VCNigGAUhey9PFJkbYstbLExGTLEJB2mmWPplSdQ # NjiKP1zE5k9lxWydqP9UswvvYMce9QmhL1dZoUye7Y0BuDzUnAaPoKJje3JD9u0d # YDTUdxqi7D0FZbI4Q0jl4C5L9UtGwfKqLhMdFcMjMYIHRjCCB0ICAQEweDBhMQsw # CQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTIwMAYD # VQQDEylNaWNyb3NvZnQgUHVibGljIFJTQSBUaW1lc3RhbXBpbmcgQ0EgMjAyMAIT # MwAAAF8q5PgjRbwaSQAAAAAAXzANBglghkgBZQMEAgEFAKCCBJ8wEQYLKoZIhvcN # AQkQAg8xAgUAMBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0B # CQUxDxcNMjYxMDE0MjIxNzQxWjAvBgkqhkiG9w0BCQQxIgQgxOWZ/8p8T9cGbe+K # ITT+/WOHo7veojvJhbX+LqNiuM8wgbkGCyqGSIb3DQEJEAIvMYGpMIGmMIGjMIGg # BCBs9gl+q1f0gODShST0SrC3UF5snHnW4n8wXlLHWy4lwzB8MGWkYzBhMQswCQYD # VQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTIwMAYDVQQD # EylNaWNyb3NvZnQgUHVibGljIFJTQSBUaW1lc3RhbXBpbmcgQ0EgMjAyMAITMwAA # AF8q5PgjRbwaSQAAAAAAXzCCA2EGCyqGSIb3DQEJEAISMYIDUDCCA0yhggNIMIID # RDCCAiwCAQEwggEJoYHhpIHeMIHbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2Fz # aGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENv # cnBvcmF0aW9uMSUwIwYDVQQLExxNaWNyb3NvZnQgQW1lcmljYSBPcGVyYXRpb25z # MScwJQYDVQQLEx5uU2hpZWxkIFRTUyBFU046N0QwMC0wNUUwLUQ5NDcxNTAzBgNV # BAMTLE1pY3Jvc29mdCBQdWJsaWMgUlNBIFRpbWUgU3RhbXBpbmcgQXV0aG9yaXR5 # oiMKAQEwBwYFKw4DAhoDFQBxCTre8Ly7mMuvAIjyU0vuhvLsb6BnMGWkYzBhMQsw # CQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTIwMAYD # VQQDEylNaWNyb3NvZnQgUHVibGljIFJTQSBUaW1lc3RhbXBpbmcgQ0EgMjAyMDAN # BgkqhkiG9w0BAQsFAAIFAO56U60wIhgPMjAyNjEwMTQxOTE3MDFaGA8yMDI2MTAx # NTE5MTcwMVowdzA9BgorBgEEAYRZCgQBMS8wLTAKAgUA7npTrQIBADAKAgEAAgIK # FQIB/zAHAgEAAgISRzAKAgUA7nulLQIBADA2BgorBgEEAYRZCgQCMSgwJjAMBgor # BgEEAYRZCgMCoAowCAIBAAIDB6EgoQowCAIBAAIDAYagMA0GCSqGSIb3DQEBCwUA # A4IBAQB9NDBYh+KNZWmb6qHdWgUkbM9l7GIIEzWX07A+Sl2CjFiuQRAgc8WLRv6e # 4T73Se/+Z8bhnw5JW+FBTE5ws0S1kShQKOSPpBffYZ+Ws7Zp5npRYwYrARl+PTgR # gqSGzlQySfmY3ygq/Va06HtSP04CbwWzDhvy8MwJk3S72eG9fLqaRvS1WxYlGbjc # kmaC+y+zQs6/HU489t2stgvTJX8hYFh3JFOvUmpl6wrTJivNyeEV5dp7nKzdlx2y # BSvYp1XLtHiGvNFFutDUVJWUEa4AXEpEQ/y6/2EP2PmwJl0flOMi/AkUei3KKuwK # v0fWKJw7XARl+w89WW6MrsG0sBqzMA0GCSqGSIb3DQEBAQUABIICAM8TfrhA1DXr # LQYCYShX9Ut1dy+nunaIA6FnoQMFBU1pYhIumLKa9DwmPj458K5j5lamPzfdVjdd # PSbAsCsMQPSmcVvCs/iA66vrsv87qglOdEioVbsTSeE+YdMybI+VknZkvSaqwJKo # zVHYztg+BGynZDESxe0S6B7Ya6pIgvA1W27jjXDJA2JnlAnMx4b2FaaTLrQV/z8f # Rmj0kjK96L82b8H2GEN7/Rc3lmf807bGN+O+6iWoliduDYqmVsxwnhrtx55s8zB4 # +HUCDfDP7c4W99z0kCXEbAOYVoOqwnRJOHMIvp2kFMs529rJnmGCNXOH+k08oHvu # nNatc/4jmGsIFObZhz6Jy630YQw8CxmrdGfgePq4lK/qxlDrd43/ho3n48xANrWZ # MWxIM+WUaZrbE7WKZuHrDhhgfcke0Isec7ZSlmvCodo8SxT8pQgJ72rxk73sPznC # 6hP3JcsoVMfORjbEFDgYK76nk2BwFDmu8BAnc4pNIVPhPtzvaMYevlukdy/GtX+s # 3/vHpisTv5NNkqtUkcCokOZr5H4YIUm90ZOW49dsrT0TCCq3l+DcS+OGRQ08HsWB # X9As9npLn4gOhQCppaINnNS5hNaKhKRctkeeUh4QO65/2yhqUQoPqG7cyzokEBe7 # M7mv6TJcnKKuGKUXkzALoXbudtrvO1Dh # SIG # End signature block |