AzStackHci.DiagnosticSettings.psd1
|
# # Module manifest for module 'AzStackHci.DiagnosticSettings' # # Generated by: Microsoft Corporation. # # Generated on: April 20th 2026. # @{ # Script module or binary module file associated with this manifest. RootModule = 'AzStackHci.DiagnosticSettings.psm1' # Version number of this module. ModuleVersion = '0.6.5' # Supported PSEditions of this module (Desktop, Core, CoreCLR, etc.) CompatiblePSEditions = @('Desktop', 'Core') # ID used to uniquely identify this module. GUID = '741476f0-267c-4a20-9830-c8478444638e' # Author of this module. Author = 'Microsoft Corporation' # Company or vendor of this module. CompanyName = 'Microsoft Corporation' # Copyright statement for this module. Copyright = '(c) 2026 Microsoft Corporation. All rights reserved.' # Description of the functionality provided by this module. Description = 'Microsoft Azure Local - Diagnostics settings and connectivity tests support module' # Minimum version of the Windows PowerShell engine required by this module. PowerShellVersion = '5.1' # Name of the Windows PowerShell host required by this module. # PowerShellHostName = '' # Minimum version of the Windows PowerShell host required by this module. # PowerShellHostVersion = '' # Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only. # DotNetFrameworkVersion = '' # Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only. # CLRVersion = '' # Processor architecture (None, X86, Amd64) required by this module. # ProcessorArchitecture = '' # Modules that must be imported into the global environment prior to importing this module #RequiredModules = '' # Assemblies that must be loaded prior to importing this module # RequiredAssemblies = @() # Script files (.ps1) that are run in the caller's environment prior to importing this module. # ScriptsToProcess = @() # Type files (.ps1xml) to be loaded when importing this module # TypesToProcess = @() # Format files (.ps1xml) to be loaded when importing this module # FormatsToProcess = @() # Modules to import as nested modules of the module specified in RootModule/ModuleToProcess # IMPORTANT: .ps1 files listed here are dot-sourced into the root module scope. # Private (internal) helpers are listed first, then Public (exported) functions. NestedModules = @( # Constants and module state initialization (loaded first) 'Private\AzStackHci.Constants.ps1', # Private helpers (loaded after constants - order matters) 'Private\AzStackHci.MemoryDump.Helpers.ps1', 'Private\AzStackHci.Connectivity.Helpers.ps1', 'Private\AzStackHci.Layer7.Helpers.ps1', 'Private\AzStackHci.DNS.Helpers.ps1', 'Private\AzStackHci.WildcardAndSubdomain.Helpers.ps1', 'Private\AzStackHci.HardwareOEM.Helpers.ps1', 'Private\AzStackHci.ModuleManagement.Helpers.ps1', 'Private\AzStackHci.Network.Helpers.ps1', 'Private\AzStackHci.Results.Helpers.ps1', 'Private\AzStackHci.OsConfigReport.Helpers.ps1', 'Private\AzStackHci.Utility.Helpers.ps1', # Public exported functions 'Public\AzStackHci.MemoryDumpSettings.ps1', 'Public\AzStackHci.PageFileSettings.ps1', 'Public\AzStackHci.UserModeCrashDumpSettings.ps1', 'Public\AzStackHci.SSLInspection.ps1', 'Public\AzStackHci.ClusterPerformance.ps1', 'Public\AzStackHci.ConnectivityTests.ps1', 'Public\AzStackHci.OsConfigSettings.ps1', 'Public\AzStackHci.PrivateLinkScope.ps1' ) # Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export. FunctionsToExport = @( 'Get-AzStackHciMemoryDumpSettings', 'Set-AzStackHciMemoryDumpSettings', 'Restore-AzStackHciMemoryDumpSettings', 'Get-AzStackHciPageFileSettings', 'Restore-AzStackHciPageFileSettings', 'Set-AzStackHciPageFileSettings', 'Set-AzStackHciPageFileSettingsMinimal', 'Get-AzStackHciUserModeCrashDumpSettings', 'Set-AzStackHciUserModeCrashDumpSettings', 'Restore-AzStackHciUserModeCrashDumpSettings', 'Test-AzStackHciSSLInspection', 'Send-ClusterPerformanceHistory', 'Test-AzureLocalConnectivity', 'Test-Layer7Connectivity', 'Test-TCPConnectivity', 'Get-AzStackHciOsConfigSettings', 'Test-ArcMachinePrivateLinkScopeEnabled' ) # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export. CmdletsToExport = @() # Variables to export from this module # Set to empty array to prevent leaking internal script-scoped variables to consumers VariablesToExport = @() # Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export. # AliasesToExport = '*' # DSC resources to export from this module # DscResourcesToExport = @() # List of all modules packaged with this module # ModuleList = @() # List of all files packaged with this module # FileList = @() # Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell. PrivateData = @{ PSData = @{ # Tags applied to this module. These help with module discovery in online galleries. Tags = @('Microsoft', 'AzStackHci', 'Diagnostic', 'Settings', 'Connectivity', 'AzureLocal') # A URL to the license for this module. LicenseUri = 'https://github.com/Azure/AzureLocal-Supportability/blob/main/LICENSE' # A URL to the main website for this project. ProjectUri = 'https://github.com/Azure/AzureLocal-Supportability' # A URL to an icon representing this module. # IconUri = '' # ReleaseNotes of this module — full history in CHANGELOG.md shipped with the module ReleaseNotes = @' ## v0.6.5 ### Module auto-update (Update-ModuleVersion, Test-AzureLocalConnectivity, Get-AzStackHciOsConfigSettings) improvements - Update-ModuleVersion refactored: default path is now notify-only (prints PSGallery URL and returns $false); install gated behind new -InstallUpdate switch. - Added -AutoUpdate switch to Test-AzureLocalConnectivity (opt-in install; default prints notice only) - Added -NoAutoUpdate and -AutoUpdate switches to Get-AzStackHciOsConfigSettings with identical three-mode dispatch ### Get-AzStackHciOsConfigSettings — safety fixes - Bug fix: -NoOutput no longer auto-answers "Y" to the delete-existing-ExportPath prompt. Now emits Write-Error with actionable guidance (clean up the folder or pass a different -ExportPath) and returns without deleting. - Timestamp precision bumped from yyyyMMdd-HHmm to yyyyMMdd-HHmmss — eliminates folder-name collisions on back-to-back runs within the same minute (which was the common trigger for the delete prompt) - Dropped redundant -Confirm on Remove-Item (Y/N Read-Host above it is the proper control; -Confirm caused hangs in non-interactive hosts) - Remote-node parent-folder cleanup now gated behind a ${ClusterName}_* prefix check; logs Write-Debug and skips if the parent leaf does not match ### Test-AzureLocalConnectivity — console output polish - Download speed summary now shows "X.X Megabits/second (or higher)" consistently across console, HTML, CSV and JSON outputs; "Failed" sentinel handled separately so the label is never nonsense - Console URL column in failed/successful/skipped tables now shows FQDN only (scheme, path and :port suffix stripped via existing Get-DomainFromURL helper) so Format-Table -AutoSize does not wrap on long URLs. HTML, CSV and JSON artifacts still emit the full URL exactly as tested. Wildcard URLs are unchanged. ### Global state: save & restore $ErrorActionPreference (Test-AzStackHciSSLInspection) - Previously set $ErrorActionPreference = "Stop" in begin {} but never restored it; mutated the caller's session - Now captures the caller's value in begin, wraps process in try/finally, restores in finally ### Port constants (Test-AzureLocalConnectivity, wildcard/subdomain exceptions) - Replaced hardcoded 443/80 literals with $script:PORT_HTTPS / $script:PORT_HTTP ### Global state: save & restore ServicePointManager settings (Test-Layer7Connectivity, Test-AzureLocalConnectivity) - SecurityProtocol and ServerCertificateValidationCallback are now captured in begin/process and restored in finally - Prevents mutating process-wide TLS / cert-validation state for other modules sharing the same session - TLS 1.2 is now added with -bor so existing TLS 1.3 support is preserved - Redirect Location header parse is now null/empty-guarded (replaces .Substring(0,1)) - Progress bars are cleared on function exit ### Backup file integrity (Memory Dump & UserMode Crash Dump settings) - Backups now include BackupSchemaVersion and a Checksum (SHA-256 of the canonical JSON payload) - Restore functions verify the checksum before applying settings and abort on mismatch (tamper/corruption detection) - Pre-v0.6.5 backups without a Checksum field are accepted with a Write-Warning ### Module version check (Get-LatestModuleVersion, Update-ModuleVersion) - Background Find-Module job now verifies termination after Remove-Job; emits a warning if the job lingered - Get-Module -ListAvailable results are now force-cast to arrays for consistent .Count / indexing behaviour - Stale-module cleanup ($StaleVersions) force-cast to array to avoid silent failures on single-result cases ### Empty catch blocks — diagnostic breadcrumbs - Converted empty catch { } blocks to catch { Write-Debug "..." } across MemoryDumpSettings, OsConfigSettings, UserModeCrashDumpSettings - Customers can now get diagnostic traces on rollback failures and missing cluster groups via -Debug ### Unit tests - Added "Backup file SHA-256 checksum" Describe block — canonical hashing, tamper detection, legacy-format handling - Added "Remove-PIIFromTranscriptFile return value" Describe block — verifies the new return contract - Skipped 4 Get-LatestModuleVersion tests that exercise removed unlisted-probing logic and mocks that do not propagate into Start-Job child processes (documented inline with -Skip reason) - Fixed Update-ModuleVersion stale-cleanup test to use a path matching the WindowsPowerShell\Modules safety regex ## v0.6.4 ### Bug Fixes - Test-NTPConnectivity: fixed NullArray exception extracting NTP server IP from w32tm.exe output. `-match` on a string array filters elements but does NOT populate `$Matches`, so `$Matches[1]` threw at runtime. Fix joins the array into a single string before matching: `($ntpResult -join "`n") -match '\[([^\]]+)\]'`. - Update-ModuleVersion: fixed false "Update may be incomplete" warning during auto-update. `Get-Module -Name <module>` can return multiple entries when nested modules are loaded, making `.Version` an `Object[]` that never equals the target `[version]`. Now selects the highest version entry. ### Tests - Added regression tests documenting `-match`/`$Matches` array vs string behaviour and verifying Test-NTPConnectivity IP extraction against realistic multi-line w32tm.exe output. ## v0.6.3 ### Set-AzStackHciPageFileSettingsMinimal (renamed) - Renamed from Set-AzStackHciPageFileMinimumSettings for consistency with other function names ### Set-AzStackHciMemoryDumpSettings — KernelDump Parameter Sets - Replaced AzureLocal parameter set with KernelDump and KernelDumpDedicated sets - Added -KernelDump mandatory switch for CrashDumpEnabled=2 (Kernel Memory Dump) - Added -DumpFilePath optional parameter (default C:\Windows\MEMORY.DMP) with drive and space validation - -DedicatedDumpFileDriveLetter is now mandatory in KernelDumpDedicated set (mutually exclusive with -DumpFilePath) - Updated cluster scriptblock to support all parameter set variations ### Get-AzStackHciOsConfigSettings — PassThru Support - Added -PassThru switch: returns PSCustomObject with JSON health summary for programmatic consumption - Enables silent automation: $results = Get-AzStackHciOsConfigSettings -Scope Cluster -NoOutput -PassThru - Returned object includes all health checks plus HTMLReportPath and JSONReportPath ### Test-AzureLocalConnectivity — Tiered RFC1918 Private Link Detection - RFC1918 detection now uses three-tier classification instead of one-size-fits-all warning - Tier 1 (Red/Critical): Arc endpoints (*.his.arc.azure.com, *.guestconfiguration.azure.com, *.dp.kubernetesconfiguration.azure.com) — NOT SUPPORTED for Azure Local - Tier 2 (Yellow/Warning): PaaS Private Link endpoints (Key Vault, Storage, ACR, SQL, Site Recovery, Backup, Service Bus) — proxy bypass required - Tier 3 (Yellow/Info): Other RFC1918 addresses — informational, check DNS configuration - Added proxy-aware messaging: when proxy detected, advises adding Private Link FQDNs to proxy bypass/exception list - Added PRIVATE_LINK_PROXY_BYPASS_ENDPOINTS constant for PaaS services supporting Private Link - Expanded PRIVATE_LINK_CRITICAL_ENDPOINTS to include *.his.arc.azure.com and *.dp.kubernetesconfiguration.azure.com - Result Note field now shows tier-specific prefix: "*Arc Private Link NOT SUPPORTED*", "*Private Link detected - add to proxy bypass list*", or "*Private Link detected*" - Summary output lists affected endpoints per tier with actionable guidance - Removed duplicate PrivateLink Note-update block that was running twice - Reference: https://learn.microsoft.com/en-us/azure/azure-local/concepts/firewall-requirements ### Test-AzureLocalConnectivity — KeyVault Placeholder Handling - Placeholder KeyVault endpoint shows Failed with descriptive Note, skips pointless DNS retries - Redirect loop guard changed from -eq to -ge for defensive bounds checking ### Get-AzStackHciOsConfigSettings — Power Plan and Report Rollup Fixes - Power Plan check now FAILs if active plan is not High Performance (not just cross-node consistency) - Added Knowledge link for Power Plan: slow performance when using power plans other than High Performance - Node tab Power Plan section shows error when not High Performance (rolls up to node/sub-tab indicators) - Fixed Summary tab icon not reflecting NetworkATC or Key Services failures ### Bug Fixes - Restore-AzStackHciMemoryDumpSettings: added bounds check before .Split()[1] in backup parsing (cluster + local) - Set-AzStackHciMemoryDumpSettings: added -ErrorAction Stop to Get-CimInstance in cluster scriptblock - Test-DownloadSpeedParallel: HttpWebResponse range probe closed in finally block (fixed socket leak) - Add-RedirectedUrlToResults: redirect Note now recorded even when original Note is empty - Test-AzureLocalConnectivity: certificate chain .ChainElements.Count guard before indexing - Test-Layer7Connectivity: HttpWebResponse disposed in finally block; Headers["Location"] syntax fixed - Import-Csv failure on malformed GitHub markdown now emits warning instead of silent empty results - Separated CERT_CAPTURE_TIMEOUT_TICKS (15s) from HTTP_TIMEOUT_SEC (60s) For full version history (including v0.6.2 and earlier) see CHANGELOG.md shipped with this module. '@ # External dependent modules of this module # ExternalModuleDependencies = '' } # End of PSData hashtable } # End of PrivateData hashtable # HelpInfo URI of this module HelpInfoURI = 'https://github.com/Azure/AzureLocal-Supportability/blob/main/TSG/Networking/Arc-Gateway-Outbound-Connectivity/Troubleshoot-Outbound-Connectivity.md' # Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. # DefaultCommandPrefix = '' } # Generated by: Microsoft Corporation. # SIG # Begin signature block # MIIoVQYJKoZIhvcNAQcCoIIoRjCCKEICAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCAvmQNCLfiaG7Zn # J/Bu01FeJkHlTg3W3DayyYJEfegxPKCCDYUwggYDMIID66ADAgECAhMzAAAEhJji # EuB4ozFdAAAAAASEMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNVBAYTAlVTMRMwEQYD # VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy # b3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25p # bmcgUENBIDIwMTEwHhcNMjUwNjE5MTgyMTM1WhcNMjYwNjE3MTgyMTM1WjB0MQsw # CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u # ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMR4wHAYDVQQDExVNaWNy # b3NvZnQgQ29ycG9yYXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB # AQDtekqMKDnzfsyc1T1QpHfFtr+rkir8ldzLPKmMXbRDouVXAsvBfd6E82tPj4Yz # aSluGDQoX3NpMKooKeVFjjNRq37yyT/h1QTLMB8dpmsZ/70UM+U/sYxvt1PWWxLj # MNIXqzB8PjG6i7H2YFgk4YOhfGSekvnzW13dLAtfjD0wiwREPvCNlilRz7XoFde5 # KO01eFiWeteh48qUOqUaAkIznC4XB3sFd1LWUmupXHK05QfJSmnei9qZJBYTt8Zh # ArGDh7nQn+Y1jOA3oBiCUJ4n1CMaWdDhrgdMuu026oWAbfC3prqkUn8LWp28H+2S # LetNG5KQZZwvy3Zcn7+PQGl5AgMBAAGjggGCMIIBfjAfBgNVHSUEGDAWBgorBgEE # AYI3TAgBBggrBgEFBQcDAzAdBgNVHQ4EFgQUBN/0b6Fh6nMdE4FAxYG9kWCpbYUw # VAYDVR0RBE0wS6RJMEcxLTArBgNVBAsTJE1pY3Jvc29mdCBJcmVsYW5kIE9wZXJh # dGlvbnMgTGltaXRlZDEWMBQGA1UEBRMNMjMwMDEyKzUwNTM2MjAfBgNVHSMEGDAW # gBRIbmTlUAXTgqoXNzcitW2oynUClTBUBgNVHR8ETTBLMEmgR6BFhkNodHRwOi8v # d3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NybC9NaWNDb2RTaWdQQ0EyMDExXzIw # MTEtMDctMDguY3JsMGEGCCsGAQUFBwEBBFUwUzBRBggrBgEFBQcwAoZFaHR0cDov # L3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jZXJ0cy9NaWNDb2RTaWdQQ0EyMDEx # XzIwMTEtMDctMDguY3J0MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQELBQADggIB # AGLQps1XU4RTcoDIDLP6QG3NnRE3p/WSMp61Cs8Z+JUv3xJWGtBzYmCINmHVFv6i # 8pYF/e79FNK6P1oKjduxqHSicBdg8Mj0k8kDFA/0eU26bPBRQUIaiWrhsDOrXWdL # m7Zmu516oQoUWcINs4jBfjDEVV4bmgQYfe+4/MUJwQJ9h6mfE+kcCP4HlP4ChIQB # UHoSymakcTBvZw+Qst7sbdt5KnQKkSEN01CzPG1awClCI6zLKf/vKIwnqHw/+Wvc # Ar7gwKlWNmLwTNi807r9rWsXQep1Q8YMkIuGmZ0a1qCd3GuOkSRznz2/0ojeZVYh # ZyohCQi1Bs+xfRkv/fy0HfV3mNyO22dFUvHzBZgqE5FbGjmUnrSr1x8lCrK+s4A+ # bOGp2IejOphWoZEPGOco/HEznZ5Lk6w6W+E2Jy3PHoFE0Y8TtkSE4/80Y2lBJhLj # 27d8ueJ8IdQhSpL/WzTjjnuYH7Dx5o9pWdIGSaFNYuSqOYxrVW7N4AEQVRDZeqDc # fqPG3O6r5SNsxXbd71DCIQURtUKss53ON+vrlV0rjiKBIdwvMNLQ9zK0jy77owDy # XXoYkQxakN2uFIBO1UNAvCYXjs4rw3SRmBX9qiZ5ENxcn/pLMkiyb68QdwHUXz+1 # fI6ea3/jjpNPz6Dlc/RMcXIWeMMkhup/XEbwu73U+uz/MIIHejCCBWKgAwIBAgIK # YQ6Q0gAAAAAAAzANBgkqhkiG9w0BAQsFADCBiDELMAkGA1UEBhMCVVMxEzARBgNV # BAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jv # c29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJvb3QgQ2VydGlm # aWNhdGUgQXV0aG9yaXR5IDIwMTEwHhcNMTEwNzA4MjA1OTA5WhcNMjYwNzA4MjEw # OTA5WjB+MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UE # BxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSgwJgYD # VQQDEx9NaWNyb3NvZnQgQ29kZSBTaWduaW5nIFBDQSAyMDExMIICIjANBgkqhkiG # 9w0BAQEFAAOCAg8AMIICCgKCAgEAq/D6chAcLq3YbqqCEE00uvK2WCGfQhsqa+la # UKq4BjgaBEm6f8MMHt03a8YS2AvwOMKZBrDIOdUBFDFC04kNeWSHfpRgJGyvnkmc # 6Whe0t+bU7IKLMOv2akrrnoJr9eWWcpgGgXpZnboMlImEi/nqwhQz7NEt13YxC4D # dato88tt8zpcoRb0RrrgOGSsbmQ1eKagYw8t00CT+OPeBw3VXHmlSSnnDb6gE3e+ # lD3v++MrWhAfTVYoonpy4BI6t0le2O3tQ5GD2Xuye4Yb2T6xjF3oiU+EGvKhL1nk # kDstrjNYxbc+/jLTswM9sbKvkjh+0p2ALPVOVpEhNSXDOW5kf1O6nA+tGSOEy/S6 # A4aN91/w0FK/jJSHvMAhdCVfGCi2zCcoOCWYOUo2z3yxkq4cI6epZuxhH2rhKEmd # X4jiJV3TIUs+UsS1Vz8kA/DRelsv1SPjcF0PUUZ3s/gA4bysAoJf28AVs70b1FVL # 5zmhD+kjSbwYuER8ReTBw3J64HLnJN+/RpnF78IcV9uDjexNSTCnq47f7Fufr/zd # sGbiwZeBe+3W7UvnSSmnEyimp31ngOaKYnhfsi+E11ecXL93KCjx7W3DKI8sj0A3 # T8HhhUSJxAlMxdSlQy90lfdu+HggWCwTXWCVmj5PM4TasIgX3p5O9JawvEagbJjS # 4NaIjAsCAwEAAaOCAe0wggHpMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBRI # bmTlUAXTgqoXNzcitW2oynUClTAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTAL # BgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBRyLToCMZBD # uRQFTuHqp8cx0SOJNDBaBgNVHR8EUzBRME+gTaBLhklodHRwOi8vY3JsLm1pY3Jv # c29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNSb29DZXJBdXQyMDExXzIwMTFf # MDNfMjIuY3JsMF4GCCsGAQUFBwEBBFIwUDBOBggrBgEFBQcwAoZCaHR0cDovL3d3 # dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0cy9NaWNSb29DZXJBdXQyMDExXzIwMTFf # MDNfMjIuY3J0MIGfBgNVHSAEgZcwgZQwgZEGCSsGAQQBgjcuAzCBgzA/BggrBgEF # BQcCARYzaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9kb2NzL3ByaW1h # cnljcHMuaHRtMEAGCCsGAQUFBwICMDQeMiAdAEwAZQBnAGEAbABfAHAAbwBsAGkA # YwB5AF8AcwB0AGEAdABlAG0AZQBuAHQALiAdMA0GCSqGSIb3DQEBCwUAA4ICAQBn # 8oalmOBUeRou09h0ZyKbC5YR4WOSmUKWfdJ5DJDBZV8uLD74w3LRbYP+vj/oCso7 # v0epo/Np22O/IjWll11lhJB9i0ZQVdgMknzSGksc8zxCi1LQsP1r4z4HLimb5j0b # pdS1HXeUOeLpZMlEPXh6I/MTfaaQdION9MsmAkYqwooQu6SpBQyb7Wj6aC6VoCo/ # KmtYSWMfCWluWpiW5IP0wI/zRive/DvQvTXvbiWu5a8n7dDd8w6vmSiXmE0OPQvy # CInWH8MyGOLwxS3OW560STkKxgrCxq2u5bLZ2xWIUUVYODJxJxp/sfQn+N4sOiBp # mLJZiWhub6e3dMNABQamASooPoI/E01mC8CzTfXhj38cbxV9Rad25UAqZaPDXVJi # hsMdYzaXht/a8/jyFqGaJ+HNpZfQ7l1jQeNbB5yHPgZ3BtEGsXUfFL5hYbXw3MYb # BL7fQccOKO7eZS/sl/ahXJbYANahRr1Z85elCUtIEJmAH9AAKcWxm6U/RXceNcbS # oqKfenoi+kiVH6v7RyOA9Z74v2u3S5fi63V4GuzqN5l5GEv/1rMjaHXmr/r8i+sL # gOppO6/8MO0ETI7f33VtY5E90Z1WTk+/gFcioXgRMiF670EKsT/7qMykXcGhiJtX # cVZOSEXAQsmbdlsKgEhr/Xmfwb1tbWrJUnMTDXpQzTGCGiYwghoiAgEBMIGVMH4x # CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt # b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01p # Y3Jvc29mdCBDb2RlIFNpZ25pbmcgUENBIDIwMTECEzMAAASEmOIS4HijMV0AAAAA # BIQwDQYJYIZIAWUDBAIBBQCgga4wGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQw # HAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIEICTy # i8YQYPC0zo5qdNRKwsIFxqx4EIS3vCZIOWAdaylIMEIGCisGAQQBgjcCAQwxNDAy # oBSAEgBNAGkAYwByAG8AcwBvAGYAdKEagBhodHRwOi8vd3d3Lm1pY3Jvc29mdC5j # b20wDQYJKoZIhvcNAQEBBQAEggEAkN1+Kj3pETh+4lg9WEb7BMKpVYucz1u94rBU # lh9Q8S1fJRWaHn0Huhv2N8nIVMmgjC5W/Gn+ulevdM9YPS3znY9pXNEcGNEp8Hu5 # 46k3VM8RhcgSo6goDh3H5FRkYozTGn/IsJ7wV6/96p0Essh7mRtwosGFqLJI7BHj # 2WXmA2Hmmlp++1XnoMCWJOF0EmStb4Lkg3Wmg1MELxJXF8RjPWDWRghj0NmavynU # YU76S7WIyIdHpx/GUmaDQ6vFyrbGHydlE5thjJ0QAgbC4aSCGOpTYeB2lWJqOGYS # XQoR/L7l8HD520L5PRwp0oGGxURoufqIQofGudjh9k5i/RQdy6GCF7AwghesBgor # BgEEAYI3AwMBMYIXnDCCF5gGCSqGSIb3DQEHAqCCF4kwgheFAgEDMQ8wDQYJYIZI # AWUDBAIBBQAwggFaBgsqhkiG9w0BCRABBKCCAUkEggFFMIIBQQIBAQYKKwYBBAGE # WQoDATAxMA0GCWCGSAFlAwQCAQUABCC1p18KqS5TKiAtqrr1CrT494FaITbvwcY/ # kyNXZArcagIGabyg4+8qGBMyMDI2MDQyMDE3MTU1Ny40MzVaMASAAgH0oIHZpIHW # MIHTMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH # UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMS0wKwYDVQQL # EyRNaWNyb3NvZnQgSXJlbGFuZCBPcGVyYXRpb25zIExpbWl0ZWQxJzAlBgNVBAsT # Hm5TaGllbGQgVFNTIEVTTjo1MjFBLTA1RTAtRDk0NzElMCMGA1UEAxMcTWljcm9z # b2Z0IFRpbWUtU3RhbXAgU2VydmljZaCCEf4wggcoMIIFEKADAgECAhMzAAACF3H7 # LqWvAR3qAAEAAAIXMA0GCSqGSIb3DQEBCwUAMHwxCzAJBgNVBAYTAlVTMRMwEQYD # VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy # b3NvZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1w # IFBDQSAyMDEwMB4XDTI1MDgxNDE4NDgyM1oXDTI2MTExMzE4NDgyM1owgdMxCzAJ # BgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25k # MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xLTArBgNVBAsTJE1pY3Jv # c29mdCBJcmVsYW5kIE9wZXJhdGlvbnMgTGltaXRlZDEnMCUGA1UECxMeblNoaWVs # ZCBUU1MgRVNOOjUyMUEtMDVFMC1EOTQ3MSUwIwYDVQQDExxNaWNyb3NvZnQgVGlt # ZS1TdGFtcCBTZXJ2aWNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA # wM82sEw+39vYR7iGCIFDnYNhRM+BzF2AYiq5dUpZpJFPRjCcipQ6RUbI+RAYNRAp # Exx5ygrXbaWtuwvqsqAVSWbU/W6fecujjILkPqn9pngtWRkfQgbYgvaXALl6PY2y # OH9f72MD+6AyxQenSpAMdUzY/Qk/jtjsHdFXVBe+tshlIkSJ3GZw8VVKqTg3GZEl # ztwbJWNtrhBEvhf6anxMegQMJP7tO8/BJ7ITs4/AV3D2bv8eHk81Y+fOmQ8mQ61W # Lq2wItvlzIT5bzelK9LvEycf5x1lXxAwEw5a7dpS+CKTanhtv+Q2mwebAybjf9io # 4k48stTaq1rtcrOiDwddqVm1S9e8h1TszXFzjLLvE9EmjnNfIewsY+RChUaHnY4F # FwwJEnEv/JS76oHT0oGdy7+J60fGOl7A1UoUyAkhpb2Bja+SwSIiHbQ4FDyJiLlZ # 6drZZ84MoJ852JSxM0hBjGO6FZlPO8iuNyk680Di8VnbSNpIdJN+DhlepeTUMBDH # qCmd0mVWRWZPm1pvgty93asNt/Ng6o4m2dnooWOdM3yKsJaWjyHqic9gfTrZBM+P # CXqeTaO1oEiaQ+h4w0nHVdV+XSvI2m1yN4iibqjm5HPaAO3OJ+OmNLftNVmr4Z6U # 2T6pIcLBysoKcDUvCqycXj4C/+n1KFBpDGdDMw9gmu8CAwEAAaOCAUkwggFFMB0G # A1UdDgQWBBRQrN9jlwNOoeE5ZQqnF5x8S1bJQzAfBgNVHSMEGDAWgBSfpxVdAF5i # XYP05dJlpxtTNRnpcjBfBgNVHR8EWDBWMFSgUqBQhk5odHRwOi8vd3d3Lm1pY3Jv # c29mdC5jb20vcGtpb3BzL2NybC9NaWNyb3NvZnQlMjBUaW1lLVN0YW1wJTIwUENB # JTIwMjAxMCgxKS5jcmwwbAYIKwYBBQUHAQEEYDBeMFwGCCsGAQUFBzAChlBodHRw # Oi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRzL01pY3Jvc29mdCUyMFRp # bWUtU3RhbXAlMjBQQ0ElMjAyMDEwKDEpLmNydDAMBgNVHRMBAf8EAjAAMBYGA1Ud # JQEB/wQMMAoGCCsGAQUFBwMIMA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQsF # AAOCAgEARmgFdhB7xIAIHEEg5I/5S+gx67aR6RiW8ZAwtE3mz8o0dyn+pIP+lidN # R1IKQQ0r+RjYgI9cZ6mbvAyvh3e2q/BV8rjHE3ud9PyYyq32euFgdZ3vX4b5QXeP # WlpBAYrdziR27rHz6WwpH5dZsSypbXDBbQkWkNl6g82yTy3AbBbKDXBdzxZsEaua # OplatK7Er4dhglKBex8JQ2dMSkSZweCNDXqd9r/9W2VdRZsDJKP/Xc4UyQlVsboB # otKtYESXFkjwR1HVsH+Q0C69/N5CP/Tq3YgI1ub4b9+3MJFKWhJXCcJGFZkcLwUm # YwoFg1XLo7DLJdGjrIH1jsI2NFXJFQHef6AdRe1ERvYQeqtyrBvxIvR+P/83FNYy # zx04inUT9TF2AwTOuqCC6Z67oNwR4pEEJyAIEREvkdhjjfWcgsk/nGTlfahvNY/S # OHrNRKo49KDlccNzRCJQyQ+D59r7/qebNSyQPTfwI9++jEY0Q/UWKVNLhio55GYB # seJ99s7NzkdxOr9Uftp597HEovbA69qGlZ3OpUE3H1RBGDVp/FvM2uXTum8LrMkP # Xx5Ap/kbPASsC9ju9oMCe2IEXO2SeD1aD3IqvAOdHFKHg1vpbPUQSWb6g2xfBV30 # wFcqaPYgzcbxPWPyZqK+S8l7zw64aO5hmJ7eQwoMfTu0Vay6r48wggdxMIIFWaAD # AgECAhMzAAAAFcXna54Cm0mZAAAAAAAVMA0GCSqGSIb3DQEBCwUAMIGIMQswCQYD # VQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEe # MBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTIwMAYDVQQDEylNaWNyb3Nv # ZnQgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgMjAxMDAeFw0yMTA5MzAxODIy # MjVaFw0zMDA5MzAxODMyMjVaMHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNo # aW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y # cG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEw # MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA5OGmTOe0ciELeaLL1yR5 # vQ7VgtP97pwHB9KpbE51yMo1V/YBf2xK4OK9uT4XYDP/XE/HZveVU3Fa4n5KWv64 # NmeFRiMMtY0Tz3cywBAY6GB9alKDRLemjkZrBxTzxXb1hlDcwUTIcVxRMTegCjhu # je3XD9gmU3w5YQJ6xKr9cmmvHaus9ja+NSZk2pg7uhp7M62AW36MEBydUv626GIl # 3GoPz130/o5Tz9bshVZN7928jaTjkY+yOSxRnOlwaQ3KNi1wjjHINSi947SHJMPg # yY9+tVSP3PoFVZhtaDuaRr3tpK56KTesy+uDRedGbsoy1cCGMFxPLOJiss254o2I # 5JasAUq7vnGpF1tnYN74kpEeHT39IM9zfUGaRnXNxF803RKJ1v2lIH1+/NmeRd+2 # ci/bfV+AutuqfjbsNkz2K26oElHovwUDo9Fzpk03dJQcNIIP8BDyt0cY7afomXw/ # TNuvXsLz1dhzPUNOwTM5TI4CvEJoLhDqhFFG4tG9ahhaYQFzymeiXtcodgLiMxhy # 16cg8ML6EgrXY28MyTZki1ugpoMhXV8wdJGUlNi5UPkLiWHzNgY1GIRH29wb0f2y # 1BzFa/ZcUlFdEtsluq9QBXpsxREdcu+N+VLEhReTwDwV2xo3xwgVGD94q0W29R6H # XtqPnhZyacaue7e3PmriLq0CAwEAAaOCAd0wggHZMBIGCSsGAQQBgjcVAQQFAgMB # AAEwIwYJKwYBBAGCNxUCBBYEFCqnUv5kxJq+gpE8RjUpzxD/LwTuMB0GA1UdDgQW # BBSfpxVdAF5iXYP05dJlpxtTNRnpcjBcBgNVHSAEVTBTMFEGDCsGAQQBgjdMg30B # ATBBMD8GCCsGAQUFBwIBFjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3Bz # L0RvY3MvUmVwb3NpdG9yeS5odG0wEwYDVR0lBAwwCgYIKwYBBQUHAwgwGQYJKwYB # BAGCNxQCBAweCgBTAHUAYgBDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQFMAMB # Af8wHwYDVR0jBBgwFoAU1fZWy4/oolxiaNE9lJBb186aGMQwVgYDVR0fBE8wTTBL # oEmgR4ZFaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwvcHJvZHVjdHMv # TWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMuY3JsMFoGCCsGAQUFBwEBBE4wTDBKBggr # BgEFBQcwAoY+aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0cy9NaWNS # b29DZXJBdXRfMjAxMC0wNi0yMy5jcnQwDQYJKoZIhvcNAQELBQADggIBAJ1Vffwq # reEsH2cBMSRb4Z5yS/ypb+pcFLY+TkdkeLEGk5c9MTO1OdfCcTY/2mRsfNB1OW27 # DzHkwo/7bNGhlBgi7ulmZzpTTd2YurYeeNg2LpypglYAA7AFvonoaeC6Ce5732pv # vinLbtg/SHUB2RjebYIM9W0jVOR4U3UkV7ndn/OOPcbzaN9l9qRWqveVtihVJ9Ak # vUCgvxm2EhIRXT0n4ECWOKz3+SmJw7wXsFSFQrP8DJ6LGYnn8AtqgcKBGUIZUnWK # NsIdw2FzLixre24/LAl4FOmRsqlb30mjdAy87JGA0j3mSj5mO0+7hvoyGtmW9I/2 # kQH2zsZ0/fZMcm8Qq3UwxTSwethQ/gpY3UA8x1RtnWN0SCyxTkctwRQEcb9k+SS+ # c23Kjgm9swFXSVRk2XPXfx5bRAGOWhmRaw2fpCjcZxkoJLo4S5pu+yFUa2pFEUep # 8beuyOiJXk+d0tBMdrVXVAmxaQFEfnyhYWxz/gq77EFmPWn9y8FBSX5+k77L+Dvk # txW/tM4+pTFRhLy/AsGConsXHRWJjXD+57XQKBqJC4822rpM+Zv/Cuk0+CQ1Zyvg # DbjmjJnW4SLq8CdCPSWU5nR0W2rRnj7tfqAxM328y+l7vzhwRNGQ8cirOoo6CGJ/ # 2XBjU02N7oJtpQUQwXEGahC0HVUzWLOhcGbyoYIDWTCCAkECAQEwggEBoYHZpIHW # MIHTMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH # UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMS0wKwYDVQQL # EyRNaWNyb3NvZnQgSXJlbGFuZCBPcGVyYXRpb25zIExpbWl0ZWQxJzAlBgNVBAsT # Hm5TaGllbGQgVFNTIEVTTjo1MjFBLTA1RTAtRDk0NzElMCMGA1UEAxMcTWljcm9z # b2Z0IFRpbWUtU3RhbXAgU2VydmljZaIjCgEBMAcGBSsOAwIaAxUAabKAFaKt2haU # dqkHfFYzAzfgSMuggYMwgYCkfjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2Fz # aGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENv # cnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAx # MDANBgkqhkiG9w0BAQsFAAIFAO2QpDUwIhgPMjAyNjA0MjAxMzEwMTNaGA8yMDI2 # MDQyMTEzMTAxM1owdzA9BgorBgEEAYRZCgQBMS8wLTAKAgUA7ZCkNQIBADAKAgEA # AgIlUQIB/zAHAgEAAgISnjAKAgUA7ZH1tQIBADA2BgorBgEEAYRZCgQCMSgwJjAM # BgorBgEEAYRZCgMCoAowCAIBAAIDB6EgoQowCAIBAAIDAYagMA0GCSqGSIb3DQEB # CwUAA4IBAQAaDEIZtyFgiqLXmpANyWgDXga9lK/wHsbPw6JHGUQCiUbwi+oeL1an # /8YThSON/5XRfOfCDOEMIIkTzxHQRMWb8O9YXeI+YSs5USvGOJCIiO7P7MjKHSfy # 5kSYtlQlkmmhEbjQccWOhb/9VDpjkgwlKO0L+nIibPV0f92Sd4olZdySgv0n04JB # 5YkVp3qeAr+LEVy27my2fhahr+zVGp5IZ23Y21boLMYD6NJ3WGud8vuihzj+eNNS # neHVS4eOvM2B1UUhgfpIAz5ZQ43qJjqXDIL66Hybqa+OgUE6BeiW8wXvU/y+vDrj # 3/2JuaNlxEbmv3ki4ZB//FI08Gba6LbFMYIEDTCCBAkCAQEwgZMwfDELMAkGA1UE # BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAc # BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0 # IFRpbWUtU3RhbXAgUENBIDIwMTACEzMAAAIXcfsupa8BHeoAAQAAAhcwDQYJYIZI # AWUDBAIBBQCgggFKMBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAvBgkqhkiG # 9w0BCQQxIgQgOCUqoLbA9OJyY8LYxeQ5j6GMfCCMNKRcUS2Cnrc3NGgwgfoGCyqG # SIb3DQEJEAIvMYHqMIHnMIHkMIG9BCDQ8lBgPl23yZ0SzUSt5phOIegHPywrkNwe # vxe2k+RaWzCBmDCBgKR+MHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5n # dG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9y # YXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwAhMz # AAACF3H7LqWvAR3qAAEAAAIXMCIEIHSiSmrgJh+4SUdY27rP0QsnkMS5BlyA0RRf # CiMVdIIhMA0GCSqGSIb3DQEBCwUABIICAFpJa6QGLRFzDkfpKD3LSXpPXKHRrvfP # dXkynyMVddV/yjKWjE4BEgpnRGU3xWF8vBDcJQnAwljvRpFt1lqW1mHAe49j0k3H # eIPTmegKQOABQqw9J8qnorcnz5Y2UfQFZZWegHZlSybselu8vGxxJ1ICx77/p05b # l4gNervzho9Qs7pRP19AsK+9pzVlPBZW835SZ3T6BgCGVWn1AUzDzl39GKJNIRQW # c8fxLg8es1snx80ieG6vqlFC6q6xlhvuRJ7VzMEuJIqEz6xtqLQpXZN3VEXDJ/bY # L1LRk8/ily904PpprAmX43xHAUSEKZZOjcIh2SMxSCyaskOx3h2WE5duX1rGNNlo # GLeyIgzZV5qAVI7JgxdNXchCRCcAELnCKAUftCMgBSfHvkBXA5jTYvetlXM6INOU # N7Tz9K/GpMG2qkqB1lfy6NWXonYMaX6QKL76F9Dw+QvVVdV428yNOYtxKgXyLd05 # iRwwKCmdW34A7liSaDUyjNayBaB3kA8Kj2zHKgcS1mctRPbMxPZRLsjbEmedH3pt # /4Tr1zBZaQTLb2IsPg/wZAumqHpAlhdybASac6GEMU5hEeYyuEhWsGQIohXywv/5 # GHidPdVOxl9GTieK7hYF4ZDCw2wzlkgNWgZOncF08L7WIe6H65xSDca+lY1CK8oz # BFkliuA+XBuI # SIG # End signature block |