From 5a1f7365d57f68f5054eb1db3c5b308d73119e75 Mon Sep 17 00:00:00 2001 From: Bill Long Date: Mon, 17 May 2021 09:30:01 -0700 Subject: [PATCH 01/34] Refactor SourceSideValidations * Output all test results as objects * Write all results to one file * -ShowPreviousResults to read the file and re-summarize the results * -SlowTraversal to traverse hierarchy one level at a time for very large hierarchies * -Repair to read the results file and fix whatever we can fix. Currently only fixes bad permissions. --- .../Get-BadDumpsterMappings.ps1 | 83 -------- .../SourceSideValidations/Get-FolderData.ps1 | 54 ++--- .../SourceSideValidations/Get-IpmSubtree.ps1 | 86 +++++--- .../SourceSideValidations/Get-ItemCount.ps1 | 37 +++- .../Get-LimitsExceeded.ps1 | 58 ------ .../Get-NonIpmSubtree.ps1 | 30 ++- .../Remove-InvalidPermission.ps1 | 51 ----- .../SourceSideValidations.ps1 | 195 +++++------------- .../Tests/DumpsterMapping/AllFunctions.ps1 | 2 + .../DumpsterMapping/Test-DumpsterMapping.ps1 | 112 ++++++++++ .../Write-TestDumpsterMappingResult.ps1 | 26 +++ .../Tests/Limit/AllFunctions.ps1 | 2 + .../Tests/Limit/Test-FolderLimit.ps1 | 82 ++++++++ .../Limit/Write-TestFolderLimitResult.ps1 | 44 ++++ .../Tests/MailEnabledFolder/AllFunctions.ps1 | 3 + .../Test-MailEnabledFolder.ps1} | 171 ++++++++++----- .../Update-TestMailEnabledFolderResult.ps1 | 30 +++ .../Write-TestMailEnabledFolderResult.ps1 | 52 +++++ .../Tests/New-TestResult.ps1 | 38 ++++ .../Tests/Permission/AllFunctions.ps1 | 4 + .../Permission/Repair-FolderPermission.ps1 | 55 +++++ .../Permission/Test-Permission.ps1} | 31 ++- .../Permission/Test-PermissionJob.ps1} | 25 ++- .../Permission/Write-TestPermissionResult.ps1 | 27 +++ 24 files changed, 824 insertions(+), 474 deletions(-) delete mode 100644 PublicFolders/src/SourceSideValidations/Get-BadDumpsterMappings.ps1 delete mode 100644 PublicFolders/src/SourceSideValidations/Get-LimitsExceeded.ps1 delete mode 100644 PublicFolders/src/SourceSideValidations/Remove-InvalidPermission.ps1 create mode 100644 PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/AllFunctions.ps1 create mode 100644 PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/Test-DumpsterMapping.ps1 create mode 100644 PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/Write-TestDumpsterMappingResult.ps1 create mode 100644 PublicFolders/src/SourceSideValidations/Tests/Limit/AllFunctions.ps1 create mode 100644 PublicFolders/src/SourceSideValidations/Tests/Limit/Test-FolderLimit.ps1 create mode 100644 PublicFolders/src/SourceSideValidations/Tests/Limit/Write-TestFolderLimitResult.ps1 create mode 100644 PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/AllFunctions.ps1 rename PublicFolders/src/SourceSideValidations/{Get-BadMailEnabledFolder.ps1 => Tests/MailEnabledFolder/Test-MailEnabledFolder.ps1} (50%) create mode 100644 PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Update-TestMailEnabledFolderResult.ps1 create mode 100644 PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Write-TestMailEnabledFolderResult.ps1 create mode 100644 PublicFolders/src/SourceSideValidations/Tests/New-TestResult.ps1 create mode 100644 PublicFolders/src/SourceSideValidations/Tests/Permission/AllFunctions.ps1 create mode 100644 PublicFolders/src/SourceSideValidations/Tests/Permission/Repair-FolderPermission.ps1 rename PublicFolders/src/SourceSideValidations/{Get-BadPermission.ps1 => Tests/Permission/Test-Permission.ps1} (51%) rename PublicFolders/src/SourceSideValidations/{Get-BadPermissionJob.ps1 => Tests/Permission/Test-PermissionJob.ps1} (73%) create mode 100644 PublicFolders/src/SourceSideValidations/Tests/Permission/Write-TestPermissionResult.ps1 diff --git a/PublicFolders/src/SourceSideValidations/Get-BadDumpsterMappings.ps1 b/PublicFolders/src/SourceSideValidations/Get-BadDumpsterMappings.ps1 deleted file mode 100644 index 8fbe53b2c8..0000000000 --- a/PublicFolders/src/SourceSideValidations/Get-BadDumpsterMappings.ps1 +++ /dev/null @@ -1,83 +0,0 @@ -function Get-BadDumpsterMappings { - [CmdletBinding()] - [OutputType([System.Object[]])] - param ( - [Parameter()] - [PSCustomObject] - $FolderData - ) - - begin { - $startTime = Get-Date - $progressCount = 0 - $badDumpsterMappings = @() - $sw = New-Object System.Diagnostics.Stopwatch - $sw.Start() - $progressParams = @{ - Activity = "Checking dumpster mappings" - Id = 2 - ParentId = 1 - } - } - - process { - $FolderData.IpmSubtree | ForEach-Object { - $progressCount++ - if ($sw.ElapsedMilliseconds -gt 1000) { - $sw.Restart() - Write-Progress @progressParams -Status $progressCount -PercentComplete ($progressCount * 100 / $FolderData.IpmSubtree.Count) - } - - if (-not (Test-DumpsterValid $_ $FolderData)) { - $badDumpsterMappings += $_ - } - } - - Write-Progress @progressParams -Status "Checking EFORMS dumpster mappings" - - $FolderData.NonIpmSubtree | Where-Object { $_.Identity -like "\NON_IPM_SUBTREE\EFORMS REGISTRY\*" } | ForEach-Object { - if (-not (Test-DumpsterValid $_ $FolderData)) { - $badDumpsterMappings += $_ - } - } - } - - end { - Write-Progress @progressParams -Completed - Write-Host "Get-BadDumpsterMappings duration" ((Get-Date) - $startTime) - return $badDumpsterMappings - } -} - -function Test-DumpsterValid { - [CmdletBinding()] - [OutputType([bool])] - param ( - [Parameter()] - [PSCustomObject] - $Folder, - - [Parameter()] - [PSCustomObject] - $FolderData - ) - - begin { - $valid = $true - } - - process { - $dumpster = $FolderData.NonIpmEntryIdDictionary[$Folder.DumpsterEntryId] - - if ($null -eq $dumpster -or - (-not $dumpster.Identity.StartsWith("\NON_IPM_SUBTREE\DUMPSTER_ROOT", "OrdinalIgnoreCase")) -or - $dumpster.DumpsterEntryId -ne $Folder.EntryId) { - - $valid = $false - } - } - - end { - return $valid - } -} diff --git a/PublicFolders/src/SourceSideValidations/Get-FolderData.ps1 b/PublicFolders/src/SourceSideValidations/Get-FolderData.ps1 index e6f145fc00..88e06a7b86 100644 --- a/PublicFolders/src/SourceSideValidations/Get-FolderData.ps1 +++ b/PublicFolders/src/SourceSideValidations/Get-FolderData.ps1 @@ -1,9 +1,17 @@ -function Get-FolderData { +. $PSScriptRoot\Get-IpmSubtree.ps1 +. $PSScriptRoot\Get-NonIpmSubtree.ps1 +. $PSScriptRoot\Get-ItemCount.ps1 + +function Get-FolderData { [CmdletBinding()] param ( [Parameter()] [bool] - $StartFresh = $true + $StartFresh = $true, + + [Parameter()] + [bool] + $SlowTraversal = $false ) begin { @@ -18,6 +26,7 @@ NonIpmEntryIdDictionary = @{} MailboxToServerMap = @{} ItemCounts = @() + ItemCountDictionary = @{} } } @@ -28,21 +37,24 @@ $folderData.ItemCounts = Import-Csv $PSScriptRoot\ItemCounts.csv } else { Add-JobQueueJob @{ - ArgumentList = $serverName + ArgumentList = $serverName, $SlowTraversal Name = "Get-IpmSubtree" ScriptBlock = ${Function:Get-IpmSubtree} } Add-JobQueueJob @{ - ArgumentList = $serverName + ArgumentList = $serverName, $SlowTraversal Name = "Get-NonIpmSubtree" ScriptBlock = ${Function:Get-NonIpmSubtree} } - Add-JobQueueJob @{ - ArgumentList = $serverName - Name = "Get-ItemCount" - ScriptBlock = ${Function:Get-ItemCount} + # If we're not doing slow traversal, we can get the stats concurrently with the other jobs + if (-not $SlowTraversal) { + Add-JobQueueJob @{ + ArgumentList = $serverName + Name = "Get-ItemCount" + ScriptBlock = ${Function:Get-ItemCount} + } } $completedJobs = Wait-QueuedJob @@ -50,34 +62,32 @@ foreach ($job in $completedJobs) { if ($null -ne $job.IpmSubtree) { $folderData.IpmSubtree = $job.IpmSubtree - $folderData.IpmSubtree | Export-Csv $PSScriptRoot\IpmSubtree.csv } if ($null -ne $job.NonIpmSubtree) { $folderData.NonIpmSubtree = $job.NonIpmSubtree - $folderData.NonIpmSubtree | Export-Csv $PSScriptRoot\NonIpmSubtree.csv } if ($null -ne $job.ItemCounts) { $folderData.ItemCounts = $job.ItemCounts - $folderData.ItemCounts | Export-Csv $PSScriptRoot\ItemCounts.csv } } + + # If we're doing slow traversal, we have to get the stats after we have the hierarchy + if ($SlowTraversal) { + $folderData.ItemCounts = (Get-ItemCount $serverName $folderData.IpmSubtree).ItemCounts + } } + $folderData.IpmSubtree | Export-Csv $PSScriptRoot\IpmSubtree.csv + $folderData.NonIpmSubtree | Export-Csv $PSScriptRoot\NonIpmSubtree.csv + $folderData.ItemCounts | Export-Csv $PSScriptRoot\ItemCounts.csv + $folderData.IpmSubtreeByMailbox = $folderData.IpmSubtree | Group-Object ContentMailbox $folderData.IpmSubtree | ForEach-Object { $folderData.ParentEntryIdCounts[$_.ParentEntryId] += 1 } $folderData.IpmSubtree | ForEach-Object { $folderData.EntryIdDictionary[$_.EntryId] = $_ } $folderData.NonIpmSubtree | ForEach-Object { $folderData.NonIpmEntryIdDictionary[$_.EntryId] = $_ } - $folderData.ItemCounts | ForEach-Object { - if ($_.ItemCount -gt 0) { - $folder = $folderData.EntryIdDictionary[$_.EntryId.ToString()] - - if ($null -ne $folder) { - $folder.ItemCount = $_.ItemCount - } - } - } + $folderData.ItemCounts | ForEach-Object { $folderData.ItemCountDictionary[$_.EntryId] = $_.ItemCount } } end { @@ -88,7 +98,3 @@ return $folderData } } - -. $PSScriptRoot\Get-IpmSubtree.ps1 -. $PSScriptRoot\Get-NonIpmSubtree.ps1 -. $PSScriptRoot\Get-ItemCount.ps1 diff --git a/PublicFolders/src/SourceSideValidations/Get-IpmSubtree.ps1 b/PublicFolders/src/SourceSideValidations/Get-IpmSubtree.ps1 index 1cd94a73a0..0503764e08 100644 --- a/PublicFolders/src/SourceSideValidations/Get-IpmSubtree.ps1 +++ b/PublicFolders/src/SourceSideValidations/Get-IpmSubtree.ps1 @@ -3,7 +3,11 @@ param ( [Parameter(Position = 0)] [string] - $Server + $Server, + + [Parameter(Position = 1)] + [bool] + $SlowTraversal = $false ) begin { @@ -17,44 +21,60 @@ $progressParams = @{ Activity = "Retrieving IPM_SUBTREE folders" } + + # This must be defined in the function scope because this function is runs as a job + function Get-FoldersRecursive { + [CmdletBinding()] + param ( + [Parameter(Position = 0)] + [object] + $Folder + ) + + $children = Get-PublicFolder $Folder.EntryId -GetChildren -ResultSize Unlimited + foreach ($child in $children) { + $child + Get-FoldersRecursive $child + } + } } process { - if (-not $startFresh -and (Test-Path $PSScriptRoot\IpmSubtree.csv)) { - Write-Progress @progressParams - $ipmSubtree = Import-Csv $PSScriptRoot\IpmSubtree.csv - } else { - $ipmSubtree = Get-PublicFolder -Recurse -ResultSize Unlimited | - Select-Object Identity, EntryId, ParentFolder, DumpsterEntryId, FolderPath, FolderSize, HasSubfolders, ContentMailboxName, MailEnabled, MailRecipientGuid | - ForEach-Object { - $progressCount++ - $currentFolder = $_.Identity.ToString() - try { - if ($sw.ElapsedMilliseconds -gt 1000) { - $sw.Restart() - Write-Progress @progressParams -Status $progressCount - } + $getCommand = { Get-PublicFolder -Recurse -ResultSize Unlimited } - [PSCustomObject]@{ - Identity = $_.Identity.ToString() - EntryId = $_.EntryId.ToString() - ParentEntryId = $_.ParentFolder.ToString() - DumpsterEntryId = if ($_.DumpsterEntryId) { $_.DumpsterEntryId.ToString() } else { $null } - FolderPathDepth = $_.FolderPath.Depth - FolderSize = $_.FolderSize - HasSubfolders = $_.HasSubfolders - ContentMailbox = $_.ContentMailboxName - MailEnabled = $_.MailEnabled - MailRecipientGuid = $_.MailRecipientGuid - ItemCount = 0 - } - } catch { - $errors++ - Write-Error -Message $currentFolder -Exception $_.Exception - break + if ($SlowTraversal) { + $getCommand = { $top = Get-PublicFolder "\"; $top; Get-FoldersRecursive $top } + } + + $ipmSubtree = Invoke-Command $getCommand | + Select-Object Identity, EntryId, ParentFolder, DumpsterEntryId, FolderPath, FolderSize, HasSubfolders, ContentMailboxName, MailEnabled, MailRecipientGuid | + ForEach-Object { + $progressCount++ + $currentFolder = $_.Identity.ToString() + try { + if ($sw.ElapsedMilliseconds -gt 1000) { + $sw.Restart() + Write-Progress @progressParams -Status $progressCount + } + + [PSCustomObject]@{ + Identity = $_.Identity.ToString() + EntryId = $_.EntryId.ToString() + ParentEntryId = $_.ParentFolder.ToString() + DumpsterEntryId = if ($_.DumpsterEntryId) { $_.DumpsterEntryId.ToString() } else { $null } + FolderPathDepth = $_.FolderPath.Depth + FolderSize = $_.FolderSize + HasSubfolders = $_.HasSubfolders + ContentMailbox = $_.ContentMailboxName + MailEnabled = $_.MailEnabled + MailRecipientGuid = $_.MailRecipientGuid } + } catch { + $errors++ + Write-Error -Message $currentFolder -Exception $_.Exception + break } - } + } } end { diff --git a/PublicFolders/src/SourceSideValidations/Get-ItemCount.ps1 b/PublicFolders/src/SourceSideValidations/Get-ItemCount.ps1 index 5333f5ebd2..3452cd7a3e 100644 --- a/PublicFolders/src/SourceSideValidations/Get-ItemCount.ps1 +++ b/PublicFolders/src/SourceSideValidations/Get-ItemCount.ps1 @@ -7,12 +7,19 @@ param ( [Parameter(Position = 0)] [string] - $Server + $Server, + + [Parameter(Position = 1)] + [object[]] + $FolderList = $null ) begin { $WarningPreference = "SilentlyContinue" - Import-PSSession (New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "http://$Server/powershell" -Authentication Kerberos) | Out-Null + if ($null -eq $FolderList) { + Import-PSSession (New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "http://$Server/powershell" -Authentication Kerberos) | Out-Null + } + $progressCount = 0 $sw = New-Object System.Diagnostics.Stopwatch $sw.Start() @@ -22,14 +29,28 @@ } process { - $itemCounts = Get-PublicFolderStatistics -ResultSize Unlimited | ForEach-Object { - $progressCount++ - if ($sw.ElapsedMilliseconds -gt 1000) { - $sw.Restart() - Write-Progress @progressParams -Status $progressCount + if ($null -eq $FolderList) { + $itemCounts = Get-PublicFolderStatistics -ResultSize Unlimited | ForEach-Object { + $progressCount++ + if ($sw.ElapsedMilliseconds -gt 1000) { + $sw.Restart() + Write-Progress @progressParams -Status $progressCount + } + + Select-Object -InputObject $_ -Property EntryId, ItemCount } + } else { + $itemCounts = New-Object System.Collections.ArrayList + foreach ($folder in $FolderList) { + $progressCount++ + if ($sw.ElapsedMilliseconds -gt 1000) { + $sw.Restart() + Write-Progress @progressParams -Status $progressCount + } - Select-Object -InputObject $_ -Property EntryId, ItemCount + $stats = Get-PublicFolderStatistics $folder.EntryId | Select-Object EntryId, ItemCount + $itemCounts.Add($stats) + } } } diff --git a/PublicFolders/src/SourceSideValidations/Get-LimitsExceeded.ps1 b/PublicFolders/src/SourceSideValidations/Get-LimitsExceeded.ps1 deleted file mode 100644 index 9c0067294c..0000000000 --- a/PublicFolders/src/SourceSideValidations/Get-LimitsExceeded.ps1 +++ /dev/null @@ -1,58 +0,0 @@ -function Get-LimitsExceeded { - <# - .SYNOPSIS - Flags folders that exceed the child count limit, depth limit, - or item limit. - #> - [CmdletBinding()] - param ( - [Parameter()] - [PSObject] - $FolderData - ) - - begin { - $startTime = Get-Date - $progressCount = 0 - $limitsExceeded = [PSCustomObject]@{ - ChildCount = @() - FolderPathDepth = @() - ItemCount = @() - } - $sw = New-Object System.Diagnostics.Stopwatch - $sw.Start() - $progressParams = @{ - Activity = "Checking limits" - Id = 2 - ParentId = 1 - } - } - - process { - $FolderData.IpmSubtree | ForEach-Object { - $progressCount++ - if ($sw.ElapsedMilliseconds -gt 1000) { - $sw.Restart() - Write-Progress @progressParams -Status $progressCount -PercentComplete ($progressCount * 100 / $FolderData.IpmSubtree.Count) - } - - if ($FolderData.ParentEntryIdCounts[$_.EntryId] -gt 10000) { - $limitsExceeded.ChildCount += $_.Identity.ToString() - } - - if ([int]$_.FolderPathDepth -gt 299) { - $limitsExceeded.FolderPathDepth += $_.Identity.ToString() - } - - if ($_.ItemCount -gt 1000000) { - $limitsExceeded.ItemCount += $_.Identity.ToString() - } - } - } - - end { - Write-Progress @progressParams -Completed - Write-Host "Get-LimitsExceeded duration" ((Get-Date) - $startTime) - return $limitsExceeded - } -} diff --git a/PublicFolders/src/SourceSideValidations/Get-NonIpmSubtree.ps1 b/PublicFolders/src/SourceSideValidations/Get-NonIpmSubtree.ps1 index 39ff65161b..be0b1aeb8f 100644 --- a/PublicFolders/src/SourceSideValidations/Get-NonIpmSubtree.ps1 +++ b/PublicFolders/src/SourceSideValidations/Get-NonIpmSubtree.ps1 @@ -3,7 +3,11 @@ param ( [Parameter(Position = 0)] [string] - $Server + $Server, + + [Parameter(Position = 1)] + [bool] + $SlowTraversal = $false ) begin { @@ -17,10 +21,32 @@ $progressParams = @{ Activity = "Retrieving NON_IPM_SUBTREE folders" } + + # This must be defined in the function scope because this function is runs as a job + function Get-FoldersRecursive { + [CmdletBinding()] + param ( + [Parameter(Position = 0)] + [object] + $Folder + ) + + $children = Get-PublicFolder $Folder.EntryId -GetChildren -ResultSize Unlimited + foreach ($child in $children) { + $child + Get-FoldersRecursive $child + } + } } process { - $nonIpmSubtree = Get-PublicFolder \non_ipm_subtree -Recurse -ResultSize Unlimited | + $getCommand = { Get-PublicFolder \non_ipm_subtree -Recurse -ResultSize Unlimited } + + if ($SlowTraversal) { + $getCommand = { $top = Get-PublicFolder "\non_ipm_subtree"; $top; Get-FoldersRecursive $top } + } + + $nonIpmSubtree = Invoke-Command $getCommand | Select-Object Identity, EntryId, DumpsterEntryId, MailEnabled | ForEach-Object { $progressCount++ diff --git a/PublicFolders/src/SourceSideValidations/Remove-InvalidPermission.ps1 b/PublicFolders/src/SourceSideValidations/Remove-InvalidPermission.ps1 deleted file mode 100644 index 1a55d37fe5..0000000000 --- a/PublicFolders/src/SourceSideValidations/Remove-InvalidPermission.ps1 +++ /dev/null @@ -1,51 +0,0 @@ -function Remove-InvalidPermission { - [CmdletBinding(SupportsShouldProcess)] - param ( - [Parameter()] - [string] - $CsvFile - ) - - begin { - - $progressParams = @{ - Activity = "Removing invalid permissions" - } - - $sw = New-Object System.Diagnostics.Stopwatch - $sw.Start() - } - - process { - - $badPermissions = Import-Csv $csvFile - $progressCount = 0 - $entryIdsProcessed = New-Object 'System.Collections.Generic.HashSet[string]' - foreach ($permission in $badPermissions) { - $progressCount++ - if ($sw.ElapsedMilliseconds -gt 1000) { - $sw.Restart() - Write-Progress @progressParams -Status "$progressCount / $($badPermissions.Count)" -PercentComplete ($progressCount * 100 / $badPermissions.Count) -CurrentOperation $permission.Identity - } - - if ($entryIdsProcessed.Add($permission.EntryId)) { - $permsOnFolder = Get-PublicFolderClientPermission -Identity $permission.EntryId - $permsOnFolder | ForEach-Object { - if ( - ($_.User.DisplayName -ne "Default") -and - ($_.User.DisplayName -ne "Anonymous") -and - ($null -eq $_.User.ADRecipient) -and - ($_.User.UserType -eq "Unknown") - ) { - if ($PSCmdlet.ShouldProcess("$($permission.Identity)", "Remove $($_.User.DisplayName)")) { - Write-Host "Removing $($_.User.DisplayName) from folder $($permission.Identity)" - $_ | Remove-PublicFolderClientPermission -Confirm:$false - } - } - } - } - } - } - - end {} -} diff --git a/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 b/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 index 1f334a279e..efbc577e85 100644 --- a/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 +++ b/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 @@ -4,27 +4,35 @@ param ( [bool] $StartFresh = $true, - [Parameter(Mandatory = $true, ParameterSetName = "RemoveInvalidPermissions")] + [Parameter(Mandatory = $false, ParameterSetName = "Default")] + [switch] + $SlowTraversal, + + [Parameter(Mandatory = $true, ParameterSetName = "Repair")] [Switch] - $RemoveInvalidPermissions, + $Repair, - [Parameter(ParameterSetName = "RemoveInvalidPermissions")] + [Parameter(Mandatory = $true, ParameterSetName = "ShowPreviousResults")] + [Switch] + $ShowPreviousResults, + + [Parameter(ParameterSetName = "Default")] + [Parameter(ParameterSetName = "Repair")] + [Parameter(ParameterSetName = "ShowPreviousResults")] [string] - $CsvFile = (Join-Path $PSScriptRoot "InvalidPermissions.csv"), + $ResultsFile = (Join-Path $PSScriptRoot "ValidationResults.csv"), [Parameter()] [switch] $SkipVersionCheck ) +. $PSScriptRoot\Tests\DumpsterMapping\AllFunctions.ps1 +. $PSScriptRoot\Tests\Limit\AllFunctions.ps1 +. $PSScriptRoot\Tests\MailEnabledFolder\AllFunctions.ps1 +. $PSScriptRoot\Tests\Permission\AllFunctions.ps1 . $PSScriptRoot\Get-FolderData.ps1 -. $PSScriptRoot\Get-LimitsExceeded.ps1 -. $PSScriptRoot\Get-BadDumpsterMappings.ps1 -. $PSScriptRoot\Get-BadPermission.ps1 -. $PSScriptRoot\Get-BadPermissionJob.ps1 . $PSScriptRoot\JobQueue.ps1 -. $PSScriptRoot\Remove-InvalidPermission.ps1 -. $PSScriptRoot\Get-BadMailEnabledFolder.ps1 . $PSScriptRoot\..\..\..\Shared\Test-ScriptVersion.ps1 if (-not $SkipVersionCheck) { @@ -35,12 +43,23 @@ if (-not $SkipVersionCheck) { } } -if ($RemoveInvalidPermissions) { - if (-not (Test-Path $CsvFile)) { - Write-Error "File not found: $CsvFile" +if ($ShowPreviousResults) { + $results = Import-Csv $ResultsFile + $results | Format-Table TestName, ResultType, Severity, FolderIdentity, ResultData -AutoSize + $results | Write-TestDumpsterMappingResult + $results | Write-TestFolderLimitResult + $results | Write-TestMailEnabledFolderResult + $results | Write-TestBadPermissionResult + return +} + +if ($Repair) { + if (-not (Test-Path $ResultsFile)) { + Write-Error "File not found: $ResultsFile. Please run without -Repair to generate a results file." } else { - Remove-InvalidPermission -CsvFile $CsvFile + Import-Csv $ResultsFile | Repair-FolderPermission } + return } @@ -62,7 +81,7 @@ $progressParams = @{ Write-Progress @progressParams -Status "Step 1 of 5" -$folderData = Get-FolderData -StartFresh $StartFresh +$folderData = Get-FolderData -StartFresh $StartFresh -SlowTraversal $SlowTraversal if ($folderData.IpmSubtree.Count -lt 1) { return @@ -93,148 +112,30 @@ if ($script:anyDatabaseDown) { Write-Progress @progressParams -Status "Step 2 of 5" -$badDumpsters = @(Get-BadDumpsterMappings -FolderData $folderData) +$badDumpsters = Test-DumpsterMapping -FolderData $folderData +$badDumpsters | Export-Csv $ResultsFile -NoTypeInformation Write-Progress @progressParams -Status "Step 3 of 5" -$limitsExceeded = Get-LimitsExceeded -FolderData $folderData +$limitsExceeded = Test-FolderLimit -FolderData $folderData +$limitsExceeded | Export-Csv $ResultsFile -NoTypeInformation -Append Write-Progress @progressParams -Status "Step 4 of 5" -$badMailEnabled = Get-BadMailEnabledFolder -FolderData $folderData +$badMailEnabled = Test-MailEnabledFolder -FolderData $folderData +$badMailEnabled | Export-Csv $ResultsFile -NoTypeInformation -Append Write-Progress @progressParams -Status "Step 5 of 5" -$badPermissions = @(Get-BadPermission -FolderData $folderData) +$badPermissions = Test-Permission -FolderData $folderData +$badPermissions | Export-Csv $ResultsFile -NoTypeInformation -Append # Output the results -if ($badMailEnabled.FoldersToMailDisable.Count -gt 0) { - $foldersToMailDisableFile = Join-Path $PSScriptRoot "FoldersToMailDisable.txt" - Set-Content -Path $foldersToMailDisableFile -Value $badMailEnabled.FoldersToMailDisable - - Write-Host - Write-Host $badMailEnabled.FoldersToMailDisable.Count "folders should be mail-disabled, either because the MailRecipientGuid" - Write-Host "does not exist, or because they are system folders. These are listed in the file called:" - Write-Host $foldersToMailDisableFile -ForegroundColor Green - Write-Host "After confirming the accuracy of the results, you can mail-disable them with the following command:" - Write-Host "Get-Content `"$foldersToMailDisableFile`" | % { Set-PublicFolder `$_ -MailEnabled `$false }" -ForegroundColor Green -} - -if ($badMailEnabled.MailPublicFoldersToDelete.Count -gt 0) { - $mailPublicFoldersToDeleteFile = Join-Path $PSScriptRoot "MailPublicFolderOrphans.txt" - Set-Content -Path $mailPublicFoldersToDeleteFile -Value $badMailEnabled.MailPublicFoldersToDelete - - Write-Host - Write-Host $badMailEnabled.MailPublicFoldersToDelete.Count "MailPublicFolders are orphans and should be deleted. They exist in Active Directory" - Write-Host "but are not linked to any public folder. These are listed in a file called:" - Write-Host $mailPublicFoldersToDeleteFile -ForegroundColor Green - Write-Host "After confirming the accuracy of the results, you can delete them with the following command:" - Write-Host "Get-Content `"$mailPublicFoldersToDeleteFile`" | % { `$folder = ([ADSI](`"LDAP://`$_`")); `$parent = ([ADSI]`"`$(`$folder.Parent)`"); `$parent.Children.Remove(`$folder) }" -ForegroundColor Green -} - -if ($badMailEnabled.MailPublicFolderDuplicates.Count -gt 0) { - $mailPublicFolderDuplicatesFile = Join-Path $PSScriptRoot "MailPublicFolderDuplicates.txt" - Set-Content -Path $mailPublicFolderDuplicatesFile -Value $badMailEnabled.MailPublicFolderDuplicates - - Write-Host - Write-Host $badMailEnabled.MailPublicFolderDuplicates.Count "MailPublicFolders are duplicates and should be deleted. They exist in Active Directory" - Write-Host "and point to a valid folder, but that folder points to some other directory object." - Write-Host "These are listed in a file called:" - Write-Host $mailPublicFolderDuplicatesFile -ForegroundColor Green - Write-Host "After confirming the accuracy of the results, you can delete them with the following command:" - Write-Host "Get-Content `"$mailPublicFolderDuplicatesFile`" | % { `$folder = ([ADSI](`"LDAP://`$_`")); `$parent = ([ADSI]`"`$(`$folder.Parent)`"); `$parent.Children.Remove(`$folder) }" -ForegroundColor Green - - if ($badMailEnabled.EmailAddressMergeCommands.Count -gt 0) { - $emailAddressMergeScriptFile = Join-Path $PSScriptRoot "AddAddressesFromDuplicates.ps1" - Set-Content -Path $emailAddressMergeScriptFile -Value $badMailEnabled.EmailAddressMergeCommands - Write-Host "The duplicates we are deleting contain email addresses that might still be in use." - Write-Host "To preserve these, we generated a script that will add these to the linked objects for those folders." - Write-Host "After deleting the duplicate objects using the command above, run the script as follows to" - Write-Host "populate these addresses:" - Write-Host ".\$emailAddressMergeScriptFile" -ForegroundColor Green - } -} - -if ($badMailEnabled.MailDisabledWithProxyGuid.Count -gt 0) { - $mailDisabledWithProxyGuidFile = Join-Path $PSScriptRoot "MailDisabledWithProxyGuid.txt" - Set-Content -Path $mailDisabledWithProxyGuidFile -Value $badMailEnabled.MailDisabledWithProxyGuid - - Write-Host - Write-Host $badMailEnabled.MailDisabledWithProxyGuid.Count "public folders have proxy GUIDs even though the folders are mail-disabled." - Write-Host "These folders should be mail-enabled. They can be mail-disabled again afterwards if desired." - Write-Host "To mail-enable these folders, run:" - Write-Host "Get-Content `"$mailDisabledWithProxyGuidFile`" | % { Enable-MailPublicFolder `$_ }" -ForegroundColor Green -} - -if ($badMailEnabled.MailPublicFoldersDisconnected.Count -gt 0) { - $mailPublicFoldersDisconnectedFile = Join-Path $PSScriptRoot "MailPublicFoldersDisconnected.txt" - Set-Content -Path $mailPublicFoldersDisconnectedFile -Value $badMailEnabled.MailPublicFoldersDisconnected - - Write-Host - Write-Host $badMailEnabled.MailPublicFoldersDisconnected.Count "MailPublicFolders are disconnected from their folders. This means they exist in" - Write-Host "Active Directory and the folders are probably functioning as mail-enabled folders," - Write-Host "even while the properties of the public folders themselves say they are not mail-enabled." - Write-Host "This can be complex to fix. Either the directory object should be deleted, or the public folder" - Write-Host "should be mail-enabled, or both. These directory objects are listed in a file called:" - Write-Host $mailPublicFoldersDisconnectedFile -ForegroundColor Green -} - -if ($badDumpsters.Count -gt 0) { - $badDumpsterFile = Join-Path $PSScriptRoot "BadDumpsterMappings.txt" - Set-Content -Path $badDumpsterFile -Value $badDumpsters - - Write-Host - Write-Host $badDumpsters.Count "folders have invalid dumpster mappings. These folders are listed in" - Write-Host "the following file:" - Write-Host $badDumpsterFile -ForegroundColor Green - Write-Host "The -ExcludeDumpsters switch can be used to skip these folders during migration, or the" - Write-Host "folders can be deleted." -} - -if ($limitsExceeded.ChildCount.Count -gt 0) { - $tooManyChildFoldersFile = Join-Path $PSScriptRoot "TooManyChildFolders.txt" - Set-Content -Path $tooManyChildFoldersFile -Value $limitsExceeded.ChildCount - - Write-Host - Write-Host $limitsExceeded.ChildCount.Count "folders have exceeded the child folder limit of 10,000. These folders are" - Write-Host "listed in the following file:" - Write-Host $tooManyChildFoldersFile -ForegroundColor Green - Write-Host "Under each of the listed folders, child folders should be relocated or deleted to reduce this number." -} - -if ($limitsExceeded.FolderPathDepth.Count -gt 0) { - $pathTooDeepFile = Join-Path $PSScriptRoot "PathTooDeep.txt" - Set-Content -Path $pathTooDeepFile -Value $limitsExceeded.FolderPathDepth - - Write-Host - Write-Host $limitsExceeded.FolderPathDepth.Count "folders have exceeded the path depth limit of 299. These folders are" - Write-Host "listed in the following file:" - Write-Host $pathTooDeepFile -ForegroundColor Green - Write-Host "These folders should be relocated to reduce the path depth, or deleted." -} - -if ($limitsExceeded.ItemCount.Count -gt 0) { - $tooManyItemsFile = Join-Path $PSScriptRoot "TooManyItems.txt" - Set-Content -Path $tooManyItemsFile -Value $limitsExceeded.ItemCount - - Write-Host - Write-Host $limitsExceeded.ItemCount.Count "folders exceed the maximum of 1 million items. These folders are listed" - Write-Host "in the following file:" - Write-Host $tooManyItemsFile - Write-Host "In each of these folders, items should be deleted to reduce the item count." -} - -if ($badPermissions.Count -gt 0) { - $badPermissionsFile = Join-Path $PSScriptRoot "InvalidPermissions.csv" - $badPermissions | Export-Csv -Path $badPermissionsFile -NoTypeInformation - - Write-Host - Write-Host $badPermissions.Count "invalid permissions were found. These are listed in the following CSV file:" - Write-Host $badPermissionsFile -ForegroundColor Green - Write-Host "The invalid permissions can be removed using the RemoveInvalidPermissions switch as follows:" - Write-Host ".\SourceSideValidations.ps1 -RemoveInvalidPermissions" -ForegroundColor Green -} +$badDumpsters | Write-TestDumpsterMappingResult +$limitsExceeded | Write-TestFolderLimitResult +$badMailEnabled | Write-TestMailEnabledFolderResult +$badPermissions | Write-TestBadPermissionResult $folderCountMigrationLimit = 250000 @@ -252,6 +153,10 @@ if ($folderData.IpmSubtree.Count -gt $folderCountMigrationLimit) { Write-Host "folders, or public folders may be deleted to reduce the number of folders." } +Write-Host +Write-Host "Validation results were written to file:" +Write-Host $ResultsFile -ForegroundColor Green + $private:endTime = Get-Date Write-Host diff --git a/PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/AllFunctions.ps1 b/PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/AllFunctions.ps1 new file mode 100644 index 0000000000..331b92ffc4 --- /dev/null +++ b/PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/AllFunctions.ps1 @@ -0,0 +1,2 @@ +. $PSScriptRoot\Test-DumpsterMapping.ps1 +. $PSScriptRoot\Write-TestDumpsterMappingResult.ps1 diff --git a/PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/Test-DumpsterMapping.ps1 b/PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/Test-DumpsterMapping.ps1 new file mode 100644 index 0000000000..670c468365 --- /dev/null +++ b/PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/Test-DumpsterMapping.ps1 @@ -0,0 +1,112 @@ +. $PSScriptRoot\..\New-TestResult.ps1 + +function Test-DumpsterMapping { + [CmdletBinding()] + [OutputType([System.Object[]])] + param ( + [Parameter()] + [PSCustomObject] + $FolderData + ) + + begin { + function Test-DumpsterValid { + [CmdletBinding()] + [OutputType([bool])] + param ( + [Parameter()] + [PSCustomObject] + $Folder, + + [Parameter()] + [PSCustomObject] + $FolderData + ) + + begin { + $valid = $true + } + + process { + $dumpster = $FolderData.NonIpmEntryIdDictionary[$Folder.DumpsterEntryId] + + if ($null -eq $dumpster -or + (-not $dumpster.Identity.StartsWith("\NON_IPM_SUBTREE\DUMPSTER_ROOT", "OrdinalIgnoreCase")) -or + $dumpster.DumpsterEntryId -ne $Folder.EntryId) { + + $valid = $false + } + } + + end { + return $valid + } + } + + function New-TestDumpsterMappingResult { + [CmdletBinding()] + param ( + [Parameter(Position = 0)] + [object] + $Folder + ) + + process { + $params = @{ + TestName = "DumpsterMapping" + ResultType = "BadDumpsterMapping" + Severity = "Error" + FolderIdentity = $Folder.Identity + FolderEntryId = $Folder.EntryId + } + + New-TestResult @params + } + } + + $startTime = Get-Date + $progressCount = 0 + $sw = New-Object System.Diagnostics.Stopwatch + $sw.Start() + $progressParams = @{ + Activity = "Checking dumpster mappings" + Id = 2 + ParentId = 1 + } + } + + process { + $FolderData.IpmSubtree | ForEach-Object { + $progressCount++ + if ($sw.ElapsedMilliseconds -gt 1000) { + $sw.Restart() + Write-Progress @progressParams -Status $progressCount -PercentComplete ($progressCount * 100 / $FolderData.IpmSubtree.Count) + } + + if (-not (Test-DumpsterValid $_ $FolderData)) { + New-TestDumpsterMappingResult $_ + } + } + + Write-Progress @progressParams -Status "Checking EFORMS dumpster mappings" + + $FolderData.NonIpmSubtree | Where-Object { $_.Identity -like "\NON_IPM_SUBTREE\EFORMS REGISTRY\*" } | ForEach-Object { + if (-not (Test-DumpsterValid $_ $FolderData)) { + New-TestDumpsterMappingResult $_ + } + } + } + + end { + Write-Progress @progressParams -Completed + + $params = @{ + TestName = "DumpsterMapping" + ResultType = "Duration" + Severity = "Information" + ResultData = ((Get-Date) - $startTime) + } + + New-TestResult @params + } +} diff --git a/PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/Write-TestDumpsterMappingResult.ps1 b/PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/Write-TestDumpsterMappingResult.ps1 new file mode 100644 index 0000000000..6a2a557bf9 --- /dev/null +++ b/PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/Write-TestDumpsterMappingResult.ps1 @@ -0,0 +1,26 @@ +function Write-TestDumpsterMappingResult { + [CmdletBinding()] + param ( + [Parameter(ValueFromPipeline = $true)] + [object] + $TestResult + ) + + begin { + $badDumpsters = [System.Collections.ArrayList]::new() + } + + process { + if ($TestResult.Name -eq "DumpsterMapping" -and $TestResult.ResultType -eq "BadDumpsterMapping") { + $badDumpsters += $TestResult + } + } + + end { + if ($badDumpsters.Count -gt 0) { + Write-Host + Write-Host $badDumpsters.Count "folders have invalid dumpster mappings." + Write-Host $badDumpsters[0].ActionRequired + } + } +} diff --git a/PublicFolders/src/SourceSideValidations/Tests/Limit/AllFunctions.ps1 b/PublicFolders/src/SourceSideValidations/Tests/Limit/AllFunctions.ps1 new file mode 100644 index 0000000000..456de626b2 --- /dev/null +++ b/PublicFolders/src/SourceSideValidations/Tests/Limit/AllFunctions.ps1 @@ -0,0 +1,2 @@ +. $PSScriptRoot\Test-FolderLimit.ps1 +. $PSScriptRoot\Write-TestFolderLimitResult.ps1 diff --git a/PublicFolders/src/SourceSideValidations/Tests/Limit/Test-FolderLimit.ps1 b/PublicFolders/src/SourceSideValidations/Tests/Limit/Test-FolderLimit.ps1 new file mode 100644 index 0000000000..c138cac681 --- /dev/null +++ b/PublicFolders/src/SourceSideValidations/Tests/Limit/Test-FolderLimit.ps1 @@ -0,0 +1,82 @@ +. $PSScriptRoot\..\New-TestResult.ps1 + +function Test-FolderLimit { + <# + .SYNOPSIS + Flags folders that exceed the child count limit, depth limit, + or item limit. + #> + [CmdletBinding()] + param ( + [Parameter()] + [PSObject] + $FolderData + ) + + begin { + $startTime = Get-Date + $progressCount = 0 + $limitsExceeded = [PSCustomObject]@{ + ChildCount = @() + FolderPathDepth = @() + ItemCount = @() + } + $sw = New-Object System.Diagnostics.Stopwatch + $sw.Start() + $progressParams = @{ + Activity = "Checking limits" + Id = 2 + ParentId = 1 + } + $testResultParams = @{ + TestName = "Limit" + Severity = "Error" + } + } + + process { + $FolderData.IpmSubtree | ForEach-Object { + $progressCount++ + if ($sw.ElapsedMilliseconds -gt 1000) { + $sw.Restart() + Write-Progress @progressParams -Status $progressCount -PercentComplete ($progressCount * 100 / $FolderData.IpmSubtree.Count) + } + + if ($FolderData.ParentEntryIdCounts[$_.EntryId] -gt 10000) { + $testResultParams.ResultType = "ChildCount" + $testResultParams.FolderIdentity = $_.Identity.ToString() + $testResultParams.FolderEntryId = $_.EntryId.ToString() + New-TestResult @testResultParams + } + + if ([int]$_.FolderPathDepth -gt 299) { + $testResultParams.ResultType = "FolderPathDepth" + $testResultParams.FolderIdentity = $_.Identity.ToString() + $testResultParams.FolderEntryId = $_.EntryId.ToString() + New-TestResult @testResultParams + } + + if ($FolderData.ItemCountDictionary[$_.EntryId] -gt 1000000) { + $testResultParams.ResultType = "ItemCount" + $testResultParams.FolderIdentity = $_.Identity.ToString() + $testResultParams.FolderEntryId = $_.EntryId.ToString() + New-TestResult @testResultParams + } + } + } + + end { + Write-Progress @progressParams -Completed + + $params = @{ + TestName = $testResultParams.TestName + ResultType = "Duration" + Severity = "Information" + FolderIdentity = "" + FolderEntryId = "" + ResultData = ((Get-Date) - $startTime) + } + + New-TestResult @params + } +} diff --git a/PublicFolders/src/SourceSideValidations/Tests/Limit/Write-TestFolderLimitResult.ps1 b/PublicFolders/src/SourceSideValidations/Tests/Limit/Write-TestFolderLimitResult.ps1 new file mode 100644 index 0000000000..20ca18d219 --- /dev/null +++ b/PublicFolders/src/SourceSideValidations/Tests/Limit/Write-TestFolderLimitResult.ps1 @@ -0,0 +1,44 @@ +function Write-TestFolderLimitResult { + [CmdletBinding()] + param ( + [Parameter(ValueFromPipeline = $true)] + [object] + $TestResult + ) + + begin { + $childCount = 0 + $folderPathDepth = 0 + $itemCount = 0 + } + + process { + if ($TestResult.TestName -eq "Limit") { + switch ($TestResult.ResultType) { + "ChildCount" { $childCount++ } + "FolderPathDepth" { $folderPathDepth++ } + "ItemCount" { $itemCount++ } + } + } + } + + end { + if ($childCount -gt 0) { + Write-Host + Write-Host $childCount "folders have exceeded the child folder limit of 10,000." + Write-Host "Under each of the listed folders, child folders should be relocated or deleted to reduce this number." + } + + if ($folderPathDepth -gt 0) { + Write-Host + Write-Host $folderPathDepth "folders have exceeded the path depth limit of 299. These folders are" + Write-Host "These folders should be relocated to reduce the path depth, or deleted." + } + + if ($itemCount -gt 0) { + Write-Host + Write-Host $itemCount "folders exceed the maximum of 1 million items." + Write-Host "In each of these folders, items should be deleted to reduce the item count." + } + } +} \ No newline at end of file diff --git a/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/AllFunctions.ps1 b/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/AllFunctions.ps1 new file mode 100644 index 0000000000..337a7542ca --- /dev/null +++ b/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/AllFunctions.ps1 @@ -0,0 +1,3 @@ +. $PSScriptRoot\Test-MailEnabledFolder.ps1 +. $PSScriptRoot\Update-TestMailEnabledFolderResult.ps1 +. $PSScriptRoot\Write-TestMailEnabledFolderResult.ps1 diff --git a/PublicFolders/src/SourceSideValidations/Get-BadMailEnabledFolder.ps1 b/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Test-MailEnabledFolder.ps1 similarity index 50% rename from PublicFolders/src/SourceSideValidations/Get-BadMailEnabledFolder.ps1 rename to PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Test-MailEnabledFolder.ps1 index d5cc4841a5..168884d021 100644 --- a/PublicFolders/src/SourceSideValidations/Get-BadMailEnabledFolder.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Test-MailEnabledFolder.ps1 @@ -1,4 +1,6 @@ -function Get-BadMailEnabledFolder { +. $PSScriptRoot\..\New-TestResult.ps1 + +function Test-MailEnabledFolder { [CmdletBinding()] [OutputType([PSCustomObject])] param ( @@ -8,6 +10,57 @@ ) begin { + function GetCommandToMergeEmailAddresses($publicFolder, $orphanedMailPublicFolder) { + $linkedMailPublicFolder = Get-PublicFolder $publicFolder.Identity | Get-MailPublicFolder + $emailAddressesOnGoodObject = @($linkedMailPublicFolder.EmailAddresses | Where-Object { $_.ToString().StartsWith("smtp:", "OrdinalIgnoreCase") } | ForEach-Object { $_.ToString().Substring($_.ToString().IndexOf(':') + 1) }) + $emailAddressesOnBadObject = @($orphanedMailPublicFolder.EmailAddresses | Where-Object { $_.ToString().StartsWith("smtp:", "OrdinalIgnoreCase") } | ForEach-Object { $_.ToString().Substring($_.ToString().IndexOf(':') + 1) }) + $emailAddressesToAdd = $emailAddressesOnBadObject | Where-Object { -not $emailAddressesOnGoodObject.Contains($_) } + $emailAddressesToAdd = $emailAddressesToAdd | ForEach-Object { "`"" + $_ + "`"" } + if ($emailAddressesToAdd.Count -gt 0) { + $emailAddressesToAddString = [string]::Join(",", $emailAddressesToAdd) + $command = "Get-PublicFolder `"$($publicFolder.Identity)`" | Get-MailPublicFolder | Set-MailPublicFolder -EmailAddresses @{add=$emailAddressesToAddString}" + return $command + } else { + return $null + } + } + + function New-TestMailEnabledFolderResult { + [CmdletBinding()] + param ( + [Parameter(Position = 0)] + [string] + $Identity, + + [Parameter(Position = 1)] + [string] + $EntryId, + + [Parameter(Position = 2)] + [ValidateSet("Duration", "MailEnabledSystemFolder", "MailEnabledWithNoADObject", "MailDisabledWithProxyGuid", "OrphanedMPF", "OrphanedMPFDuplicate", "OrphanedMPFDisconnected")] + [string] + $ResultType, + + [Parameter(Position = 3)] + [string] + $ResultData + ) + + $params = @{ + TestName = "MailEnabledFolder" + ResultType = $ResultType + Severity = "Error" + FolderIdentity = $Identity + FolderEntryId = $EntryId + } + + if ($null -ne $ResultData) { + $params.ResultData = $ResultData + } + + New-TestResult @params + } + $startTime = Get-Date $progressCount = 0 $sw = New-Object System.Diagnostics.Stopwatch @@ -20,12 +73,20 @@ } process { - $nonIpmSubtreeMailEnabled = @($FolderData.NonIpmSubtree | Where-Object { $_.MailEnabled -eq $true }) + $FolderData.NonIpmSubtree | Where-Object { $_.MailEnabled -eq $true } | ForEach-Object { New-TestMailEnabledFolderResult $_.Identity $_.EntryId "MailEnabledSystemFolder" } $ipmSubtreeMailEnabled = @($FolderData.IpmSubtree | Where-Object { $_.MailEnabled -eq $true }) $mailDisabledWithProxyGuid = @($FolderData.IpmSubtree | Where-Object { $_.MailEnabled -ne $true -and -not [string]::IsNullOrEmpty($_.MailRecipientGuid) -and [Guid]::Empty -ne $_.MailRecipientGuid } | ForEach-Object { $_.Identity.ToString() }) + $mailDisabledWithProxyGuid | ForEach-Object { + $params = @{ + Identity = $_.Identity + EntryId = $_.EntryId + ResultType = "MailDisabledWithProxyGuid" + } + + New-TestMailEnabledFolderResult @params + } - $mailEnabledFoldersWithNoADObject = @() $mailPublicFoldersLinked = New-Object 'System.Collections.Generic.Dictionary[string, object]' $progressParams.CurrentOperation = "Checking for missing AD objects" $startTimeForThisCheck = Get-Date @@ -39,7 +100,13 @@ } $result = Get-MailPublicFolder $ipmSubtreeMailEnabled[$i].Identity -ErrorAction SilentlyContinue if ($null -eq $result) { - $mailEnabledFoldersWithNoADObject += $ipmSubtreeMailEnabled[$i] + $params = @{ + Identity = $ipmSubtreeMailEnabled[$i].Identity + EntryId = $ipmSubtreeMailEnabled[$i].EntryId + ResultType = "MailEnabledWithNoADObject" + } + + New-TestMailEnabledFolderResult @params } else { $guidString = $result.Guid.ToString() if (-not $mailPublicFoldersLinked.ContainsKey($guidString)) { @@ -83,11 +150,6 @@ $byPartialEntryId = New-Object 'System.Collections.Generic.Dictionary[string, object]' $FolderData.IpmSubtree | ForEach-Object { $byPartialEntryId.Add($_.EntryId.ToString().Substring(44), $_) } - - $orphanedMPFsThatPointToAMailDisabledFolder = @() - $orphanedMPFsThatPointToAMailEnabledFolder = @() - $orphanedMPFsThatPointToNothing = @() - $emailAddressMergeCommands = @() $progressParams.CurrentOperation = "Checking for orphans that point to a valid folder" for ($i = 0; $i -lt $orphanedMailPublicFolders.Count; $i++) { if ($sw.ElapsedMilliseconds -gt 1000) { @@ -104,13 +166,23 @@ if ($pf.MailEnabled -eq $true) { $command = GetCommandToMergeEmailAddresses $pf $thisMPF - if ($null -ne $command) { - $emailAddressMergeCommands += $command + + $params = @{ + Identity = $thisMPF.DistinguishedName.Replace("/", "\/") + EntryId = "" + ResultType = "OrphanedMPFDuplicate" + ResultData = $command } - $orphanedMPFsThatPointToAMailEnabledFolder += $thisMPF + New-TestMailEnabledFolderResult @params } else { - $orphanedMPFsThatPointToAMailDisabledFolder += $thisMPF + $params = @{ + Identity = $thisMPF.DistinguishedName.Replace("/", "\/") + EntryId = "" + ResultType = "OrphanedMPFDisconnected" + } + + New-TestMailEnabledFolderResult @params } continue @@ -121,58 +193,51 @@ if ($pf.MailEnabled -eq $true) { $command = GetCommandToMergeEmailAddresses $pf $thisMPF + + $params = @{ + Identity = $thisMPF.DistinguishedName.Replace("/", "\/") + EntryId = "" + ResultType = "OrphanedMPFDuplicate" + } + if ($null -ne $command) { - $emailAddressMergeCommands += $command + $params.ResultData = $command } - $orphanedMPFsThatPointToAMailEnabledFolder += $thisMPF + New-TestMailEnabledFolderResult @params } else { - $orphanedMPFsThatPointToAMailDisabledFolder += $thisMPF + $params = @{ + Identity = $thisMPF.DistinguishedName.Replace("/", "\/") + EntryId = "" + ResultType = "OrphanedMPFDisconnected" + } + + New-TestMailEnabledFolderResult @params } } else { - $orphanedMPFsThatPointToNothing += $thisMPF + $params = @{ + Identity = $thisMPF.DistinguishedName.Replace("/", "\/") + EntryId = "" + ResultType = "OrphanedMPF" + } + + New-TestMailEnabledFolderResult @params } } } end { - Write-Verbose "$($ipmSubtreeMailEnabled.Count) public folders are mail-enabled." - Write-Verbose "$($mailPublicFoldersLinked.Keys.Count) folders are mail-enabled and are properly linked to an existing AD object." - Write-Verbose "$($nonIpmSubtreeMailEnabled.Count) System folders are mail-enabled." - Write-Verbose "$($mailEnabledFoldersWithNoADObject.Count) folders are mail-enabled with no AD object." - Write-Verbose "$($orphanedMailPublicFolders.Count) MailPublicFolders are orphaned." - Write-Verbose "$($orphanedMPFsThatPointToAMailEnabledFolder.Count) of those orphans point to mail-enabled folders that point to some other object." - Write-Verbose "$($orphanedMPFsThatPointToAMailDisabledFolder.Count) of those orphans point to mail-disabled folders." - - $foldersToMailDisable = @() - $nonIpmSubtreeMailEnabled | ForEach-Object { $foldersToMailDisable += $_.Identity.ToString() } - $mailEnabledFoldersWithNoADObject | ForEach-Object { $foldersToMailDisable += $_.Identity } - - [PSCustomObject]@{ - FoldersToMailDisable = $foldersToMailDisable - MailPublicFoldersToDelete = $orphanedMPFsThatPointToNothing | ForEach-Object { $_.DistinguishedName.Replace("/", "\/") } - MailPublicFolderDuplicates = $orphanedMPFsThatPointToAMailEnabledFolder | ForEach-Object { $mailPublicFolderDuplicates += $_.DistinguishedName } - EmailAddressMergeCommands = $emailAddressMergeCommands - MailDisabledWithProxyGuid = $mailDisabledWithProxyGuid - MailPublicFoldersDisconnected = $orphanedMPFsThatPointToAMailDisabledFolder | ForEach-Object { $mailPublicFoldersDisconnected += $_.DistinguishedName } - } - - Write-Host "Get-BadMailEnabledFolder duration" ((Get-Date) - $startTime) Write-Progress @progressParams -Completed - } -} -function GetCommandToMergeEmailAddresses($publicFolder, $orphanedMailPublicFolder) { - $linkedMailPublicFolder = Get-PublicFolder $publicFolder.Identity | Get-MailPublicFolder - $emailAddressesOnGoodObject = @($linkedMailPublicFolder.EmailAddresses | Where-Object { $_.ToString().StartsWith("smtp:", "OrdinalIgnoreCase") } | ForEach-Object { $_.ToString().Substring($_.ToString().IndexOf(':') + 1) }) - $emailAddressesOnBadObject = @($orphanedMailPublicFolder.EmailAddresses | Where-Object { $_.ToString().StartsWith("smtp:", "OrdinalIgnoreCase") } | ForEach-Object { $_.ToString().Substring($_.ToString().IndexOf(':') + 1) }) - $emailAddressesToAdd = $emailAddressesOnBadObject | Where-Object { -not $emailAddressesOnGoodObject.Contains($_) } - $emailAddressesToAdd = $emailAddressesToAdd | ForEach-Object { "`"" + $_ + "`"" } - if ($emailAddressesToAdd.Count -gt 0) { - $emailAddressesToAddString = [string]::Join(",", $emailAddressesToAdd) - $command = "Get-PublicFolder `"$($publicFolder.Identity)`" | Get-MailPublicFolder | Set-MailPublicFolder -EmailAddresses @{add=$emailAddressesToAddString}" - return $command - } else { - return $null + $params = @{ + TestName = "MailEnabledFolder" + ResultType = "Duration" + Severity = "Information" + FolderIdentity = "" + FolderEntryId = "" + ResultData = ((Get-Date) - $startTime) + } + + New-TestResult @params } } diff --git a/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Update-TestMailEnabledFolderResult.ps1 b/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Update-TestMailEnabledFolderResult.ps1 new file mode 100644 index 0000000000..374d3bcf0b --- /dev/null +++ b/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Update-TestMailEnabledFolderResult.ps1 @@ -0,0 +1,30 @@ +function Update-TestMailEnabledFolderResult { + [CmdletBinding()] + param ( + [Parameter(ValueFromPipeline = $true)] + [object] + $TestResult + ) + + process { + if ($TestResult.ResultType -eq "MailEnabledSystemFolder") { + Write-Host + Write-Host $group.Count "system folders are mail-enabled. These folders should be mail-disabled." + } elseif ($TestResult.ResultType -eq "MailEnabledWithNoADObject") { + Write-Host + Write-Host $group.Count "folders are mail-enabled, but have no AD object. These folders should be mail-disabled." + } elseif ($TestResult.ResultType -eq "MailDisabledWithProxyGuid") { + Write-Host + Write-Host $group.Count "folders are mail-disabled, but have proxy GUID values. These folders should be mail-enabled." + } elseif ($TestResult.ResultType -eq "OrphanedMPF") { + Write-Host + Write-Host $group.Count "mail public folders are orphaned. These directory objects should be deleted." + } elseif ($TestResult.ResultType -eq "OrphanedMPFDuplicate") { + Write-Host + Write-Host $group.Count "mail public folders point to public folders that point to a different directory object. These should be deleted. Their email addresses may be merged onto the linked object." + } elseif ($TestResult.ResultType -eq "OrphanedMPFDisconnected") { + Write-Host + Write-Host $group.Count "mail public folders point to public folders that are mail-disabled. These require manual intervention. Either the directory object should be deleted, or the folder should be mail-enabled, or both." + } + } +} diff --git a/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Write-TestMailEnabledFolderResult.ps1 b/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Write-TestMailEnabledFolderResult.ps1 new file mode 100644 index 0000000000..b124a80a21 --- /dev/null +++ b/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Write-TestMailEnabledFolderResult.ps1 @@ -0,0 +1,52 @@ +function Write-TestMailEnabledFolderResult { + [CmdletBinding()] + param ( + [Parameter(ValueFromPipeline = $true)] + [object] + $TestResult + ) + + begin { + $mailEnabledSystemFolder = 0 + $mailEnabledWithNoADObject = 0 + $mailDisabledWithProxyGuid = 0 + $orphanedMPF = 0 + $orphanedMPFDuplicate = 0 + $orphanedMPFDisconnected = 0 + } + + process { + if ($TestResult.TestName -eq "MailEnabledFolder") { + switch ($TestResult.ResultType) { + "MailEnabledSystemFolder" { $mailEnabledSystemFolder++ } + "MailEnabledWithNoADObject" { $mailEnabledWithNoADObject++ } + "MailDisabledWithProxyGuid" { $mailDisabledWithProxyGuid++ } + "OrphanedMPF" { $orphanedMPF++ } + "OrphanedMPFDuplicate" { $orphanedMPFDuplicate++ } + "OrphanedMPFDisconnected" { $orphanedMPFDisconnected++ } + } + } + } + + end { + if ($mailEnabledSystemFolder -gt 0) { + Write-Host + Write-Host $mailEnabledSystemFolder "system folders are mail-enabled. These folders should be mail-disabled." + } elseif ($mailEnabledWithNoADObject -gt 0) { + Write-Host + Write-Host $mailEnabledWithNoADObject "folders are mail-enabled, but have no AD object. These folders should be mail-disabled." + } elseif ($mailDisabledWithProxyGuid -gt 0) { + Write-Host + Write-Host $mailDisabledWithProxyGuid "folders are mail-disabled, but have proxy GUID values. These folders should be mail-enabled." + } elseif ($orphanedMPF -gt 0) { + Write-Host + Write-Host $orphanedMPF "mail public folders are orphaned. These directory objects should be deleted." + } elseif ($orphanedMPFDuplicate -gt 0) { + Write-Host + Write-Host $orphanedMPFDuplicate "mail public folders point to public folders that point to a different directory object. These should be deleted. Their email addresses may be merged onto the linked object." + } elseif ($orphanedMPFDisconnected -gt 0) { + Write-Host + Write-Host $orphanedMPFDisconnected "mail public folders point to public folders that are mail-disabled. These require manual intervention. Either the directory object should be deleted, or the folder should be mail-enabled, or both." + } + } +} diff --git a/PublicFolders/src/SourceSideValidations/Tests/New-TestResult.ps1 b/PublicFolders/src/SourceSideValidations/Tests/New-TestResult.ps1 new file mode 100644 index 0000000000..e725c8709b --- /dev/null +++ b/PublicFolders/src/SourceSideValidations/Tests/New-TestResult.ps1 @@ -0,0 +1,38 @@ +function New-TestResult { + [CmdletBinding()] + param ( + [Parameter(Mandatory = $true)] + [string] + $TestName, + + [Parameter(Mandatory = $true)] + [string] + $ResultType, + + [Parameter(Mandatory = $true)] + [ValidateSet("Information", "Warning", "Error")] + [string] + $Severity, + + [Parameter()] + [string] + $FolderIdentity, + + [Parameter()] + [string] + $FolderEntryId, + + [Parameter()] + [string] + $ResultData + ) + + [PSCustomObject]@{ + TestName = $TestName + ResultType = $ResultType + Severity = $Severity + FolderIdentity = $FolderIdentity + FolderEntryId = $FolderEntryId + ResultData = $ResultData + } +} \ No newline at end of file diff --git a/PublicFolders/src/SourceSideValidations/Tests/Permission/AllFunctions.ps1 b/PublicFolders/src/SourceSideValidations/Tests/Permission/AllFunctions.ps1 new file mode 100644 index 0000000000..12a9c6a55b --- /dev/null +++ b/PublicFolders/src/SourceSideValidations/Tests/Permission/AllFunctions.ps1 @@ -0,0 +1,4 @@ +. $PSScriptRoot\Test-Permission.ps1 +. $PSScriptRoot\Test-PermissionJob.ps1 +. $PSScriptRoot\Write-TestPermissionResult.ps1 +. $PSScriptRoot\Repair-FolderPermission.ps1 diff --git a/PublicFolders/src/SourceSideValidations/Tests/Permission/Repair-FolderPermission.ps1 b/PublicFolders/src/SourceSideValidations/Tests/Permission/Repair-FolderPermission.ps1 new file mode 100644 index 0000000000..919d3420e0 --- /dev/null +++ b/PublicFolders/src/SourceSideValidations/Tests/Permission/Repair-FolderPermission.ps1 @@ -0,0 +1,55 @@ +function Repair-FolderPermission { + [CmdletBinding(SupportsShouldProcess)] + param ( + [Parameter(ValueFromPipeline = $true)] + [object] + $TestResult + ) + + begin { + $progressParams = @{ + Activity = "Repairing folder permissions" + } + + $progressCount = 0 + $entryIdsProcessed = New-Object 'System.Collections.Generic.HashSet[string]' + $badPermissions = New-Object System.Collections.ArrayList + + $sw = New-Object System.Diagnostics.Stopwatch + $sw.Start() + } + + process { + if ($TestResult.TestName -eq "Permission" -and $TestResult.ResultType -eq "BadPermission") { + $badPermissions.Add($TestResult) + } + } + + end { + foreach ($result in $badPermissions) { + $progressCount++ + + if ($sw.ElapsedMilliseconds -gt 1000) { + $sw.Restart() + Write-Progress @progressParams -Status "$progressCount / $($badPermissions.Count)" -PercentComplete ($progressCount * 100 / $badPermissions.Count) -CurrentOperation $permission.Identity + } + + if ($entryIdsProcessed.Add($result.FolderEntryId)) { + $permsOnFolder = Get-PublicFolderClientPermission -Identity $result.FolderEntryId + foreach ($perm in $permsOnFolder) { + if ( + ($perm.User.DisplayName -ne "Default") -and + ($perm.User.DisplayName -ne "Anonymous") -and + ($null -eq $perm.User.ADRecipient) -and + ($perm.User.UserType -eq "Unknown") + ) { + if ($PSCmdlet.ShouldProcess("$($result.FolderIdentity)", "Remove $($perm.User.DisplayName)")) { + Write-Host "Removing $($perm.User.DisplayName) from folder $($result.FolderIdentity)" + $perm | Remove-PublicFolderClientPermission -Confirm:$false + } + } + } + } + } + } +} diff --git a/PublicFolders/src/SourceSideValidations/Get-BadPermission.ps1 b/PublicFolders/src/SourceSideValidations/Tests/Permission/Test-Permission.ps1 similarity index 51% rename from PublicFolders/src/SourceSideValidations/Get-BadPermission.ps1 rename to PublicFolders/src/SourceSideValidations/Tests/Permission/Test-Permission.ps1 index 4f8cd871de..059ab15f3e 100644 --- a/PublicFolders/src/SourceSideValidations/Get-BadPermission.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/Permission/Test-Permission.ps1 @@ -1,4 +1,7 @@ -function Get-BadPermission { +. $PSScriptRoot\Test-PermissionJob.ps1 +. $PSScriptRoot\..\New-TestResult.ps1 + +function Test-Permission { [CmdletBinding()] param ( [Parameter()] @@ -8,14 +11,13 @@ begin { $startTime = Get-Date - $badPermissions = @() } process { $folderData.IpmSubtreeByMailbox | ForEach-Object { $argumentList = $FolderData.MailboxToServerMap[$_.Name], $_.Name, $_.Group $name = $_.Name - $scriptBlock = ${Function:Get-BadPermissionJob} + $scriptBlock = ${Function:Test-BadPermissionJob} Add-JobQueueJob @{ ArgumentList = $argumentList Name = "$name Permissions Check" @@ -24,15 +26,28 @@ } $completedJobs = Wait-QueuedJob + + $params = @{ + TestName = "Permission" + ResultType = "BadPermission" + Severity = "Error" + } + foreach ($job in $completedJobs) { - if ($job.BadPermissions.Count -gt 0) { - $badPermissions = $badPermissions + $job.BadPermissions - } + $job } } end { - Write-Host "Get-BadPermission duration" ((Get-Date) - $startTime) - return $badPermissions + $params = @{ + TestName = "Permission" + ResultType = "Duration" + Severity = "Information" + FolderIdentity = "" + FolderEntryId = "" + ResultData = ((Get-Date) - $startTime) + } + + New-TestResult @params } } diff --git a/PublicFolders/src/SourceSideValidations/Get-BadPermissionJob.ps1 b/PublicFolders/src/SourceSideValidations/Tests/Permission/Test-PermissionJob.ps1 similarity index 73% rename from PublicFolders/src/SourceSideValidations/Get-BadPermissionJob.ps1 rename to PublicFolders/src/SourceSideValidations/Tests/Permission/Test-PermissionJob.ps1 index 26bc812afa..7201d1ea67 100644 --- a/PublicFolders/src/SourceSideValidations/Get-BadPermissionJob.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/Permission/Test-PermissionJob.ps1 @@ -1,4 +1,4 @@ -function Get-BadPermissionJob { +function Test-BadPermissionJob { [CmdletBinding()] [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSReviewUnusedParameter', '', Justification = 'Incorrect rule result')] param ( @@ -47,10 +47,14 @@ ($null -eq $_.User.ADRecipient) -and ($_.User.UserType.ToString() -eq "Unknown") ) { - $badPermissions += [PSCustomObject]@{ - Identity = $identity - EntryId = $entryId - User = $_.User.DisplayName + # We can't use New-TestResult here since we are inside a job + [PSCustomObject]@{ + TestName = "Permission" + ResultType = "BadPermission" + Severity = "Error" + FolderIdentity = $identity + FolderEntryId = $entryId + ResultData = $_.User.DisplayName } } } @@ -60,10 +64,13 @@ end { Write-Progress @progressParams -Completed $duration = ((Get-Date) - $startTime) - return [PSCustomObject]@{ - Count = $progressCount - Duration = $duration - BadPermissions = $badPermissions + [PSCustomObject]@{ + TestName = "Permission" + ResultType = "$Mailbox Duration" + Severity = "Information" + FolderIdentity = "" + FolderEntryId = "" + ResultData = ((Get-Date) - $startTime) } } } diff --git a/PublicFolders/src/SourceSideValidations/Tests/Permission/Write-TestPermissionResult.ps1 b/PublicFolders/src/SourceSideValidations/Tests/Permission/Write-TestPermissionResult.ps1 new file mode 100644 index 0000000000..a1c37e696d --- /dev/null +++ b/PublicFolders/src/SourceSideValidations/Tests/Permission/Write-TestPermissionResult.ps1 @@ -0,0 +1,27 @@ +function Write-TestBadPermissionResult { + [CmdletBinding()] + param ( + [Parameter(ValueFromPipeline = $true)] + [object] + $TestResult + ) + + begin { + $badPermissions = 0 + } + + process { + if ($TestResult.TestName -eq "Permission" -and $TestResult.ResultType -eq "BadPermission") { + $badPermissions++ + } + } + + end { + if ($badPermissions.Count -gt 0) { + Write-Host + Write-Host $badPermissions.Count "invalid permissions were found." + Write-Host "The invalid permissions can be removed using the RemoveInvalidPermissions switch as follows:" + Write-Host ".\SourceSideValidations.ps1 -Repair" -ForegroundColor Green + } + } +} \ No newline at end of file From 3143a689ec83ead895c434d55c5afa915e3f439b Mon Sep 17 00:00:00 2001 From: Bill Long Date: Thu, 20 May 2021 00:02:25 -0700 Subject: [PATCH 02/34] Resume after failure in SlowTraversal mode --- .../SourceSideValidations/Get-IpmSubtree.ps1 | 105 ++++++++++++------ .../Get-NonIpmSubtree.ps1 | 94 +++++++++++----- .../SourceSideValidations.ps1 | 13 +-- .../Write-TestMailEnabledFolderResult.ps1 | 20 +++- .../Permission/Write-TestPermissionResult.ps1 | 10 +- 5 files changed, 166 insertions(+), 76 deletions(-) diff --git a/PublicFolders/src/SourceSideValidations/Get-IpmSubtree.ps1 b/PublicFolders/src/SourceSideValidations/Get-IpmSubtree.ps1 index 0503764e08..6058da4a62 100644 --- a/PublicFolders/src/SourceSideValidations/Get-IpmSubtree.ps1 +++ b/PublicFolders/src/SourceSideValidations/Get-IpmSubtree.ps1 @@ -12,29 +12,41 @@ begin { $WarningPreference = "SilentlyContinue" - Import-PSSession (New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "http://$Server/powershell" -Authentication Kerberos) | Out-Null $progressCount = 0 - $errors = 0 - $ipmSubtree = @() + $maxRetries = 10 + $retryDelay = [TimeSpan]::FromMinutes(5) + $ipmSubtree = New-Object System.Collections.ArrayList $sw = New-Object System.Diagnostics.Stopwatch $sw.Start() $progressParams = @{ Activity = "Retrieving IPM_SUBTREE folders" } + # Only used for slow traversal to save progress in case of failure + $foldersProcessed = New-Object 'System.Collections.Generic.HashSet[string]' + # This must be defined in the function scope because this function is runs as a job function Get-FoldersRecursive { [CmdletBinding()] param ( [Parameter(Position = 0)] [object] - $Folder + $Folder, + + [Parameter(Position = 1)] + [object] + $FoldersProcessed ) $children = Get-PublicFolder $Folder.EntryId -GetChildren -ResultSize Unlimited foreach ($child in $children) { - $child - Get-FoldersRecursive $child + if (-not $FoldersProcessed.Contains($child.EntryId.ToString())) { + if ($child.HasSubfolders) { + Get-FoldersRecursive $child $FoldersProcessed + } + + $child + } } } } @@ -43,38 +55,67 @@ $getCommand = { Get-PublicFolder -Recurse -ResultSize Unlimited } if ($SlowTraversal) { - $getCommand = { $top = Get-PublicFolder "\"; $top; Get-FoldersRecursive $top } + $getCommand = { $top = Get-PublicFolder "\"; Get-FoldersRecursive $top $foldersProcessed; $top } } - $ipmSubtree = Invoke-Command $getCommand | - Select-Object Identity, EntryId, ParentFolder, DumpsterEntryId, FolderPath, FolderSize, HasSubfolders, ContentMailboxName, MailEnabled, MailRecipientGuid | - ForEach-Object { + $outputResultsScriptBlock = { + [CmdletBinding()] + param ( + [Parameter(ValueFromPipeline = $true)] + [object] + $Folder + ) + + process { $progressCount++ - $currentFolder = $_.Identity.ToString() - try { - if ($sw.ElapsedMilliseconds -gt 1000) { - $sw.Restart() - Write-Progress @progressParams -Status $progressCount - } + $currentFolder = $Folder.Identity.ToString() - [PSCustomObject]@{ - Identity = $_.Identity.ToString() - EntryId = $_.EntryId.ToString() - ParentEntryId = $_.ParentFolder.ToString() - DumpsterEntryId = if ($_.DumpsterEntryId) { $_.DumpsterEntryId.ToString() } else { $null } - FolderPathDepth = $_.FolderPath.Depth - FolderSize = $_.FolderSize - HasSubfolders = $_.HasSubfolders - ContentMailbox = $_.ContentMailboxName - MailEnabled = $_.MailEnabled - MailRecipientGuid = $_.MailRecipientGuid - } - } catch { - $errors++ - Write-Error -Message $currentFolder -Exception $_.Exception - break + if ($sw.ElapsedMilliseconds -gt 1000) { + $sw.Restart() + Write-Progress @progressParams -Status $progressCount + } + + $result = [PSCustomObject]@{ + Identity = $Folder.Identity.ToString() + EntryId = $Folder.EntryId.ToString() + ParentEntryId = $Folder.ParentFolder.ToString() + DumpsterEntryId = if ($Folder.DumpsterEntryId) { $Folder.DumpsterEntryId.ToString() } else { $null } + FolderPathDepth = $Folder.FolderPath.Depth + FolderSize = $Folder.FolderSize + HasSubfolders = $Folder.HasSubfolders + ContentMailbox = $Folder.ContentMailboxName + MailEnabled = $Folder.MailEnabled + MailRecipientGuid = $Folder.MailRecipientGuid } + + $null = $ipmSubtree.Add($result) + + $null = $foldersProcessed.Add($Folder.EntryId.ToString()) } + } + + for ($retryCount = 1; $retryCount -le $maxRetries; $retryCount++) { + try { + Get-PSSession | Remove-PSSession + Import-PSSession (New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "http://$Server/powershell" -Authentication Kerberos) -AllowClobber | Out-Null + Invoke-Command $getCommand | &$outputResultsScriptBlock + break + } catch { + if (-not $SlowTraversal) { + throw + } + + $sw.Restart() + while ($sw.ElapsedMilliseconds -lt $retryDelay.TotalMilliseconds) { + Write-Progress @progressParams -Status "Retry $retryCount of $maxRetries. Error: $($_.Message)" + Start-Sleep -Seconds 5 + $remainingMilliseconds = $retryDelay.TotalMilliseconds - $sw.ElapsedMilliseconds + if ($remainingMilliseconds -lt 0) { $remainingMilliseconds = 0 } + Write-Progress @progressParams -Status "Retry $retryCount of $maxRetries. Will retry in $([TimeSpan]::FromMilliseconds($remainingMilliseconds))" + Start-Sleep -Seconds 5 + } + } + } } end { diff --git a/PublicFolders/src/SourceSideValidations/Get-NonIpmSubtree.ps1 b/PublicFolders/src/SourceSideValidations/Get-NonIpmSubtree.ps1 index be0b1aeb8f..87264a428e 100644 --- a/PublicFolders/src/SourceSideValidations/Get-NonIpmSubtree.ps1 +++ b/PublicFolders/src/SourceSideValidations/Get-NonIpmSubtree.ps1 @@ -12,63 +12,103 @@ begin { $WarningPreference = "SilentlyContinue" - Import-PSSession (New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "http://$Server/powershell" -Authentication Kerberos) | Out-Null $progressCount = 0 - $errors = 0 - $nonIpmSubtree = @() + $maxRetries = 10 + $retryDelay = [timespan]::FromMinutes(5) + $nonIpmSubtree = New-Object System.Collections.ArrayList $sw = New-Object System.Diagnostics.Stopwatch $sw.Start() $progressParams = @{ Activity = "Retrieving NON_IPM_SUBTREE folders" } + # Only used for slow traversal to save progress in case of failure + $foldersProcessed = New-Object 'System.Collections.Generic.HashSet[string]' + # This must be defined in the function scope because this function is runs as a job function Get-FoldersRecursive { [CmdletBinding()] param ( [Parameter(Position = 0)] [object] - $Folder + $Folder, + + [Parameter(Position = 1)] + [object] + $FoldersProcessed ) $children = Get-PublicFolder $Folder.EntryId -GetChildren -ResultSize Unlimited foreach ($child in $children) { - $child - Get-FoldersRecursive $child + if (-not $FoldersProcessed.Contains($child.EntryId.ToString())) { + if ($child.HasSubfolders) { + Get-FoldersRecursive $child $FoldersProcessed + } + + $child + } } } } process { - $getCommand = { Get-PublicFolder \non_ipm_subtree -Recurse -ResultSize Unlimited } + $getCommand = { Get-PublicFolder "\non_ipm_subtree" -Recurse -ResultSize Unlimited } if ($SlowTraversal) { - $getCommand = { $top = Get-PublicFolder "\non_ipm_subtree"; $top; Get-FoldersRecursive $top } + $getCommand = { $top = Get-PublicFolder "\non_ipm_subtree"; Get-FoldersRecursive $top $foldersProcessed; $top } } - $nonIpmSubtree = Invoke-Command $getCommand | - Select-Object Identity, EntryId, DumpsterEntryId, MailEnabled | - ForEach-Object { + $outputResultsScriptBlock = { + [CmdletBinding()] + param ( + [Parameter(ValueFromPipeline = $true)] + [object] + $Folder + ) + + process { $progressCount++ - $currentFolder = $_.Identity.ToString() - try { - if ($sw.ElapsedMilliseconds -gt 1000) { - $sw.Restart() - Write-Progress @progressParams -Status $progressCount - } + $currentFolder = $Folder.Identity.ToString() + if ($sw.ElapsedMilliseconds -gt 1000) { + $sw.Restart() + Write-Progress @progressParams -Status $progressCount + } - [PSCustomObject]@{ - Identity = $_.Identity.ToString() - EntryId = $_.EntryId.ToString() - DumpsterEntryId = if ($_.DumpsterEntryId) { $_.DumpsterEntryId.ToString() } else { $null } - MailEnabled = $_.MailEnabled - } - } catch { - $errors++ - Write-Error -Message $currentFolder -Exception $_.Exception - break + $result = [PSCustomObject]@{ + Identity = $Folder.Identity.ToString() + EntryId = $Folder.EntryId.ToString() + DumpsterEntryId = if ($Folder.DumpsterEntryId) { $Folder.DumpsterEntryId.ToString() } else { $null } + MailEnabled = $Folder.MailEnabled + } + + $null = $nonIpmSubtree.Add($result) + + $null = $foldersProcessed.Add($Folder.EntryId.ToString()) + } + } + + for ($retryCount = 1; $retryCount -le $maxRetries; $retryCount++) { + try { + Get-PSSession | Remove-PSSession + Import-PSSession (New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "http://$Server/powershell" -Authentication Kerberos) -AllowClobber | Out-Null + Invoke-Command $getCommand | &$outputResultsScriptBlock + break + } catch { + if (-not $SlowTraversal) { + throw + } + + $sw.Restart() + while ($sw.ElapsedMilliseconds -lt $retryDelay.TotalMilliseconds) { + Write-Progress @progressParams -Status "Retry $retryCount of $maxRetries. Error: $($_.Message)" + Start-Sleep -Seconds 5 + $remainingMilliseconds = $retryDelay.TotalMilliseconds - $sw.ElapsedMilliseconds + if ($remainingMilliseconds -lt 0) { $remainingMilliseconds = 0 } + Write-Progress @progressParams -Status "Retry $retryCount of $maxRetries. Will retry in $([TimeSpan]::FromMilliseconds($remainingMilliseconds))" + Start-Sleep -Seconds 5 } } + } } end { diff --git a/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 b/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 index efbc577e85..60be459699 100644 --- a/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 +++ b/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 @@ -12,13 +12,13 @@ param ( [Switch] $Repair, - [Parameter(Mandatory = $true, ParameterSetName = "ShowPreviousResults")] + [Parameter(Mandatory = $true, ParameterSetName = "SummarizePreviousResults")] [Switch] - $ShowPreviousResults, + $SummarizePreviousResults, [Parameter(ParameterSetName = "Default")] [Parameter(ParameterSetName = "Repair")] - [Parameter(ParameterSetName = "ShowPreviousResults")] + [Parameter(ParameterSetName = "SummarizePreviousResults")] [string] $ResultsFile = (Join-Path $PSScriptRoot "ValidationResults.csv"), @@ -43,13 +43,12 @@ if (-not $SkipVersionCheck) { } } -if ($ShowPreviousResults) { +if ($SummarizePreviousResults) { $results = Import-Csv $ResultsFile - $results | Format-Table TestName, ResultType, Severity, FolderIdentity, ResultData -AutoSize $results | Write-TestDumpsterMappingResult $results | Write-TestFolderLimitResult $results | Write-TestMailEnabledFolderResult - $results | Write-TestBadPermissionResult + $results | Write-TestPermissionResult return } @@ -135,7 +134,7 @@ $badPermissions | Export-Csv $ResultsFile -NoTypeInformation -Append $badDumpsters | Write-TestDumpsterMappingResult $limitsExceeded | Write-TestFolderLimitResult $badMailEnabled | Write-TestMailEnabledFolderResult -$badPermissions | Write-TestBadPermissionResult +$badPermissions | Write-TestPermissionResult $folderCountMigrationLimit = 250000 diff --git a/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Write-TestMailEnabledFolderResult.ps1 b/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Write-TestMailEnabledFolderResult.ps1 index b124a80a21..3500503fe6 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Write-TestMailEnabledFolderResult.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Write-TestMailEnabledFolderResult.ps1 @@ -32,19 +32,29 @@ if ($mailEnabledSystemFolder -gt 0) { Write-Host Write-Host $mailEnabledSystemFolder "system folders are mail-enabled. These folders should be mail-disabled." - } elseif ($mailEnabledWithNoADObject -gt 0) { + } + + if ($mailEnabledWithNoADObject -gt 0) { Write-Host Write-Host $mailEnabledWithNoADObject "folders are mail-enabled, but have no AD object. These folders should be mail-disabled." - } elseif ($mailDisabledWithProxyGuid -gt 0) { + } + + if ($mailDisabledWithProxyGuid -gt 0) { Write-Host Write-Host $mailDisabledWithProxyGuid "folders are mail-disabled, but have proxy GUID values. These folders should be mail-enabled." - } elseif ($orphanedMPF -gt 0) { + } + + if ($orphanedMPF -gt 0) { Write-Host Write-Host $orphanedMPF "mail public folders are orphaned. These directory objects should be deleted." - } elseif ($orphanedMPFDuplicate -gt 0) { + } + + if ($orphanedMPFDuplicate -gt 0) { Write-Host Write-Host $orphanedMPFDuplicate "mail public folders point to public folders that point to a different directory object. These should be deleted. Their email addresses may be merged onto the linked object." - } elseif ($orphanedMPFDisconnected -gt 0) { + } + + if ($orphanedMPFDisconnected -gt 0) { Write-Host Write-Host $orphanedMPFDisconnected "mail public folders point to public folders that are mail-disabled. These require manual intervention. Either the directory object should be deleted, or the folder should be mail-enabled, or both." } diff --git a/PublicFolders/src/SourceSideValidations/Tests/Permission/Write-TestPermissionResult.ps1 b/PublicFolders/src/SourceSideValidations/Tests/Permission/Write-TestPermissionResult.ps1 index a1c37e696d..37485aa6bc 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/Permission/Write-TestPermissionResult.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/Permission/Write-TestPermissionResult.ps1 @@ -1,4 +1,4 @@ -function Write-TestBadPermissionResult { +function Write-TestPermissionResult { [CmdletBinding()] param ( [Parameter(ValueFromPipeline = $true)] @@ -7,19 +7,19 @@ ) begin { - $badPermissions = 0 + $badPermissionCount = 0 } process { if ($TestResult.TestName -eq "Permission" -and $TestResult.ResultType -eq "BadPermission") { - $badPermissions++ + $badPermissionCount++ } } end { - if ($badPermissions.Count -gt 0) { + if ($badPermissionCount -gt 0) { Write-Host - Write-Host $badPermissions.Count "invalid permissions were found." + Write-Host $badPermissionCount "invalid permissions were found." Write-Host "The invalid permissions can be removed using the RemoveInvalidPermissions switch as follows:" Write-Host ".\SourceSideValidations.ps1 -Repair" -ForegroundColor Green } From 1a4ec559b8b6ae395e1c5d06ffee784877ae59ed Mon Sep 17 00:00:00 2001 From: Bill Long Date: Tue, 1 Jun 2021 13:25:42 -0700 Subject: [PATCH 03/34] Use New-Object rather than ::new() --- .../Tests/DumpsterMapping/Write-TestDumpsterMappingResult.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/Write-TestDumpsterMappingResult.ps1 b/PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/Write-TestDumpsterMappingResult.ps1 index 6a2a557bf9..9baa0d1d5d 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/Write-TestDumpsterMappingResult.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/Write-TestDumpsterMappingResult.ps1 @@ -7,7 +7,7 @@ ) begin { - $badDumpsters = [System.Collections.ArrayList]::new() + $badDumpsters = New-Object System.Collections.ArrayList } process { From 270e322fd372520dfc66153c075899662975f290 Mon Sep 17 00:00:00 2001 From: Bill Long Date: Tue, 1 Jun 2021 14:10:09 -0700 Subject: [PATCH 04/34] Report errors during Get-ItemCount and retry --- .../SourceSideValidations/Get-FolderData.ps1 | 7 +++- .../SourceSideValidations/Get-ItemCount.ps1 | 42 +++++++++++++++++-- .../SourceSideValidations.ps1 | 10 ++++- 3 files changed, 54 insertions(+), 5 deletions(-) diff --git a/PublicFolders/src/SourceSideValidations/Get-FolderData.ps1 b/PublicFolders/src/SourceSideValidations/Get-FolderData.ps1 index 88e06a7b86..0eda1a64c5 100644 --- a/PublicFolders/src/SourceSideValidations/Get-FolderData.ps1 +++ b/PublicFolders/src/SourceSideValidations/Get-FolderData.ps1 @@ -27,6 +27,7 @@ function Get-FolderData { MailboxToServerMap = @{} ItemCounts = @() ItemCountDictionary = @{} + Errors = New-Object System.Collections.ArrayList } } @@ -75,7 +76,11 @@ function Get-FolderData { # If we're doing slow traversal, we have to get the stats after we have the hierarchy if ($SlowTraversal) { - $folderData.ItemCounts = (Get-ItemCount $serverName $folderData.IpmSubtree).ItemCounts + $itemCountResult = Get-ItemCount $serverName $folderData.IpmSubtree + $folderData.ItemCounts = $itemCountResult.ItemCounts + if ($itemCountResult.Errors.Count -gt 0) { + $folderData.Errors.AddRange($itemCountResult.Errors) + } } } diff --git a/PublicFolders/src/SourceSideValidations/Get-ItemCount.ps1 b/PublicFolders/src/SourceSideValidations/Get-ItemCount.ps1 index 3452cd7a3e..c35d0d7b30 100644 --- a/PublicFolders/src/SourceSideValidations/Get-ItemCount.ps1 +++ b/PublicFolders/src/SourceSideValidations/Get-ItemCount.ps1 @@ -1,7 +1,7 @@ function Get-ItemCount { <# .SYNOPSIS - Populates the ItemCount property on our PSCustomObjects. + Gets the item count for each folder. #> [CmdletBinding()] param ( @@ -20,12 +20,16 @@ Import-PSSession (New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "http://$Server/powershell" -Authentication Kerberos) | Out-Null } + $retryDelay = [TimeSpan]::FromMinutes(5) $progressCount = 0 $sw = New-Object System.Diagnostics.Stopwatch $sw.Start() $progressParams = @{ Activity = "Getting public folder statistics" } + + $itemCounts = New-Object System.Collections.ArrayList + $errors = New-Object System.Collections.ArrayList } process { @@ -48,8 +52,39 @@ Write-Progress @progressParams -Status $progressCount } - $stats = Get-PublicFolderStatistics $folder.EntryId | Select-Object EntryId, ItemCount - $itemCounts.Add($stats) + $maxRetries = 5 + for ($retryCount = 1; $retryCount -le $maxRetries; $retryCount++) { + try { + $stats = Get-PublicFolderStatistics $folder.EntryId | Select-Object EntryId, ItemCount + $itemCounts.Add($stats) + break + } catch { + # Only retry Kerberos errors + if ($_.ToString().Contains("Kerberos")) { + $sw.Restart() + while ($sw.ElapsedMilliseconds -lt $retryDelay.TotalMilliseconds) { + Write-Progress @progressParams -Status "Retry $retryCount of $maxRetries. Error: $($_.Message)" + Start-Sleep -Seconds 5 + $remainingMilliseconds = $retryDelay.TotalMilliseconds - $sw.ElapsedMilliseconds + if ($remainingMilliseconds -lt 0) { $remainingMilliseconds = 0 } + Write-Progress @progressParams -Status "Retry $retryCount of $maxRetries. Will retry in $([TimeSpan]::FromMilliseconds($remainingMilliseconds))" + Start-Sleep -Seconds 5 + } + } else { + $errorReport = @{ + TestName = "Get-ItemCount" + ResultType = "CouldNotGetItemCount" + Severity = "Error" + FolderIdentity = $folder.Identity + FolderEntryId = $folder.EntryId + ResultData = $_.ToString() + } + + $error = New-TestResult @errorReport + $errors.Add($error) + } + } + } } } } @@ -59,6 +94,7 @@ return [PSCustomObject]@{ ItemCounts = $itemCounts + Errors = $errors } } } diff --git a/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 b/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 index 60be459699..13db91d132 100644 --- a/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 +++ b/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 @@ -109,10 +109,18 @@ if ($script:anyDatabaseDown) { # Now we're ready to do the checks +if (Test-Path $ResultsFile) { + Remove-Item $ResultsFile +} + +if ($folderData.Errors.Count -gt 0) { + $folderData.Errors | Export-Csv $ResultsFile -NoTypeInformation +} + Write-Progress @progressParams -Status "Step 2 of 5" $badDumpsters = Test-DumpsterMapping -FolderData $folderData -$badDumpsters | Export-Csv $ResultsFile -NoTypeInformation +$badDumpsters | Export-Csv $ResultsFile -NoTypeInformation -Append Write-Progress @progressParams -Status "Step 3 of 5" From 5c67cc851fa956b750f82c54abeff4dbfdcc544b Mon Sep 17 00:00:00 2001 From: Bill Long Date: Tue, 1 Jun 2021 14:26:05 -0700 Subject: [PATCH 05/34] Report the hierarchy limits with the other results --- .../SourceSideValidations.ps1 | 16 -------------- .../Tests/Limit/Test-FolderLimit.ps1 | 15 +++++++++++++ .../Limit/Write-TestFolderLimitResult.ps1 | 21 +++++++++++++++++++ 3 files changed, 36 insertions(+), 16 deletions(-) diff --git a/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 b/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 index 13db91d132..08d7b1896b 100644 --- a/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 +++ b/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 @@ -144,22 +144,6 @@ $limitsExceeded | Write-TestFolderLimitResult $badMailEnabled | Write-TestMailEnabledFolderResult $badPermissions | Write-TestPermissionResult -$folderCountMigrationLimit = 250000 - -if ($folderData.IpmSubtree.Count -gt $folderCountMigrationLimit) { - Write-Host - Write-Host "There are $($folderData.IpmSubtree.Count) public folders in the hierarchy. This exceeds" - Write-Host "the supported migration limit of $folderCountMigrationLimit for Exchange Online. The number" - Write-Host "of public folders must be reduced prior to migrating to Exchange Online." -} elseif ($folderData.IpmSubtree.Count * 2 -gt $folderCountMigrationLimit) { - Write-Host - Write-Host "There are $($folderData.IpmSubtree.Count) public folders in the hierarchy. Because each of these" - Write-Host "has a dumpster folder, the total number of folders to migrate will be $($folderData.IpmSubtree.Count * 2)." - Write-Host "This exceeds the supported migration limit of $folderCountMigrationLimit for Exchange Online." - Write-Host "New-MigrationBatch can be run with the -ExcludeDumpsters switch to skip the dumpster" - Write-Host "folders, or public folders may be deleted to reduce the number of folders." -} - Write-Host Write-Host "Validation results were written to file:" Write-Host $ResultsFile -ForegroundColor Green diff --git a/PublicFolders/src/SourceSideValidations/Tests/Limit/Test-FolderLimit.ps1 b/PublicFolders/src/SourceSideValidations/Tests/Limit/Test-FolderLimit.ps1 index c138cac681..1f5bfd3e83 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/Limit/Test-FolderLimit.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/Limit/Test-FolderLimit.ps1 @@ -32,6 +32,7 @@ function Test-FolderLimit { TestName = "Limit" Severity = "Error" } + $folderCountMigrationLimit = 250000 } process { @@ -63,6 +64,20 @@ function Test-FolderLimit { New-TestResult @testResultParams } } + + if ($folderData.IpmSubtree.Count -gt $folderCountMigrationLimit) { + $testResultParams.ResultType = "HierarchyCount" + $testResultParams.FolderIdentity = "" + $testResultParams.FolderEntryId = "" + $testResultParams.ResultData = $folderData.IpmSubtree.Count + New-TestResult @testResultParams + } elseif ($folderData.IpmSubtree.Count * 2 -gt $folderCountMigrationLimit) { + $testResultParams.ResultType = "HierarchyAndDumpsterCount" + $testResultParams.FolderIdentity = "" + $testResultParams.FolderEntryId = "" + $testResultParams.ResultData = $folderData.IpmSubtree.Count + New-TestResult @testResultParams + } } end { diff --git a/PublicFolders/src/SourceSideValidations/Tests/Limit/Write-TestFolderLimitResult.ps1 b/PublicFolders/src/SourceSideValidations/Tests/Limit/Write-TestFolderLimitResult.ps1 index 20ca18d219..5b66644025 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/Limit/Write-TestFolderLimitResult.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/Limit/Write-TestFolderLimitResult.ps1 @@ -10,6 +10,9 @@ $childCount = 0 $folderPathDepth = 0 $itemCount = 0 + $hierarchyCount = $null + $hierarchyAndDumpsterCount = $null + $folderCountMigrationLimit = 250000 } process { @@ -18,6 +21,8 @@ "ChildCount" { $childCount++ } "FolderPathDepth" { $folderPathDepth++ } "ItemCount" { $itemCount++ } + "HierarchyCount" { $hierarchyCount = $TestResult.ResultData } + "HierarchyAndDumpsterCount" { $hierarchyAndDumpsterCount = $TestResult.ResultData } } } } @@ -40,5 +45,21 @@ Write-Host $itemCount "folders exceed the maximum of 1 million items." Write-Host "In each of these folders, items should be deleted to reduce the item count." } + + if ($null -ne $hierarchyCount) { + Write-Host + Write-Host "There are $hierarchyCount public folders in the hierarchy. This exceeds" + Write-Host "the supported migration limit of $folderCountMigrationLimit for Exchange Online. The number" + Write-Host "of public folders must be reduced prior to migrating to Exchange Online." + } + + if ($null -ne $hierarchyAndDumpsterCount) { + Write-Host + Write-Host "There are $hierarchyAndDumpsterCount public folders in the hierarchy. Because each of these" + Write-Host "has a dumpster folder, the total number of folders to migrate will be twice as many." + Write-Host "This exceeds the supported migration limit of $folderCountMigrationLimit for Exchange Online." + Write-Host "New-MigrationBatch can be run with the -ExcludeDumpsters switch to skip the dumpster" + Write-Host "folders, or public folders may be deleted to reduce the number of folders." + } } } \ No newline at end of file From 0a60eae5211d2abf7ae45f6ede2277cd0b0b2f69 Mon Sep 17 00:00:00 2001 From: Bill Long Date: Thu, 3 Jun 2021 17:23:35 -0700 Subject: [PATCH 06/34] Recreate the session on retry and report empty folders --- .../src/SourceSideValidations/Get-FolderData.ps1 | 13 +++++++------ .../src/SourceSideValidations/Get-ItemCount.ps1 | 4 +++- .../Tests/Limit/Test-FolderLimit.ps1 | 12 ++++++++++++ 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/PublicFolders/src/SourceSideValidations/Get-FolderData.ps1 b/PublicFolders/src/SourceSideValidations/Get-FolderData.ps1 index 0eda1a64c5..9a7b528fbe 100644 --- a/PublicFolders/src/SourceSideValidations/Get-FolderData.ps1 +++ b/PublicFolders/src/SourceSideValidations/Get-FolderData.ps1 @@ -78,15 +78,16 @@ function Get-FolderData { if ($SlowTraversal) { $itemCountResult = Get-ItemCount $serverName $folderData.IpmSubtree $folderData.ItemCounts = $itemCountResult.ItemCounts - if ($itemCountResult.Errors.Count -gt 0) { - $folderData.Errors.AddRange($itemCountResult.Errors) + foreach ($errorParam in $itemCountResult.Errors) { + $errorResult = New-TestResult @errorParam + $folderData.Errors.AddRange($errorResult) } } - } - $folderData.IpmSubtree | Export-Csv $PSScriptRoot\IpmSubtree.csv - $folderData.NonIpmSubtree | Export-Csv $PSScriptRoot\NonIpmSubtree.csv - $folderData.ItemCounts | Export-Csv $PSScriptRoot\ItemCounts.csv + $folderData.IpmSubtree | Export-Csv $PSScriptRoot\IpmSubtree.csv + $folderData.NonIpmSubtree | Export-Csv $PSScriptRoot\NonIpmSubtree.csv + $folderData.ItemCounts | Export-Csv $PSScriptRoot\ItemCounts.csv + } $folderData.IpmSubtreeByMailbox = $folderData.IpmSubtree | Group-Object ContentMailbox $folderData.IpmSubtree | ForEach-Object { $folderData.ParentEntryIdCounts[$_.ParentEntryId] += 1 } diff --git a/PublicFolders/src/SourceSideValidations/Get-ItemCount.ps1 b/PublicFolders/src/SourceSideValidations/Get-ItemCount.ps1 index c35d0d7b30..b40dca902d 100644 --- a/PublicFolders/src/SourceSideValidations/Get-ItemCount.ps1 +++ b/PublicFolders/src/SourceSideValidations/Get-ItemCount.ps1 @@ -70,6 +70,9 @@ Write-Progress @progressParams -Status "Retry $retryCount of $maxRetries. Will retry in $([TimeSpan]::FromMilliseconds($remainingMilliseconds))" Start-Sleep -Seconds 5 } + + Get-PSSession | Remove-PSSession + Import-PSSession (New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "http://$Server/powershell" -Authentication Kerberos) -AllowClobber | Out-Null } else { $errorReport = @{ TestName = "Get-ItemCount" @@ -80,7 +83,6 @@ ResultData = $_.ToString() } - $error = New-TestResult @errorReport $errors.Add($error) } } diff --git a/PublicFolders/src/SourceSideValidations/Tests/Limit/Test-FolderLimit.ps1 b/PublicFolders/src/SourceSideValidations/Tests/Limit/Test-FolderLimit.ps1 index 1f5bfd3e83..f3aab54f03 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/Limit/Test-FolderLimit.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/Limit/Test-FolderLimit.ps1 @@ -63,6 +63,18 @@ function Test-FolderLimit { $testResultParams.FolderEntryId = $_.EntryId.ToString() New-TestResult @testResultParams } + + # We have to do a string test against the False value here, because this might have been imported from CSV. + if ($FolderData.ItemCountDictionary[$_.EntryId] -eq 0 -and $_.HasSubfolders.ToString() -eq "False") { + $emptyFolderInformation = @{ + TestName = "Limit" + Severity = "Information" + ResultType = "EmptyFolder" + FolderIdentity = $_.Identity.ToString() + FolderEntryId = $_.EntryId.ToString() + } + New-TestResult @emptyFolderInformation + } } if ($folderData.IpmSubtree.Count -gt $folderCountMigrationLimit) { From 8c30e9b15bb10ac9deeef70a1fe154dda7e3f8ac Mon Sep 17 00:00:00 2001 From: Bill Long Date: Tue, 29 Jun 2021 09:44:11 -0700 Subject: [PATCH 07/34] Tie up some loose ends Abandon work on fixing things other than bad permissions. It's making things very complicated. Maybe we can revisit that in the future. For now, we're back to -RemoveInvalidPermissions to fix the one thing we can. Otherwise, we're outputting basically the same instructions as before on how to fix other problems. --- .../SourceSideValidations.ps1 | 28 ++++++++++------- .../Write-TestDumpsterMappingResult.ps1 | 6 ++-- .../Limit/Write-TestFolderLimitResult.ps1 | 5 +++- .../Tests/MailEnabledFolder/AllFunctions.ps1 | 1 - .../Test-MailEnabledFolder.ps1 | 8 ++--- .../Update-TestMailEnabledFolderResult.ps1 | 30 ------------------- .../Write-TestMailEnabledFolderResult.ps1 | 30 +++++++++++++++++-- .../Tests/Permission/AllFunctions.ps1 | 2 +- ...ssion.ps1 => Remove-InvalidPermission.ps1} | 2 +- .../Permission/Write-TestPermissionResult.ps1 | 2 +- 10 files changed, 59 insertions(+), 55 deletions(-) delete mode 100644 PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Update-TestMailEnabledFolderResult.ps1 rename PublicFolders/src/SourceSideValidations/Tests/Permission/{Repair-FolderPermission.ps1 => Remove-InvalidPermission.ps1} (98%) diff --git a/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 b/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 index 08d7b1896b..37f66dc7b5 100644 --- a/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 +++ b/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 @@ -8,23 +8,27 @@ param ( [switch] $SlowTraversal, - [Parameter(Mandatory = $true, ParameterSetName = "Repair")] - [Switch] - $Repair, + [Parameter(Mandatory = $true, ParameterSetName = "RemoveInvalidPermissions")] + [switch] + $RemoveInvalidPermissions, [Parameter(Mandatory = $true, ParameterSetName = "SummarizePreviousResults")] [Switch] $SummarizePreviousResults, [Parameter(ParameterSetName = "Default")] - [Parameter(ParameterSetName = "Repair")] + [Parameter(ParameterSetName = "RemoveInvalidPermissions")] [Parameter(ParameterSetName = "SummarizePreviousResults")] [string] $ResultsFile = (Join-Path $PSScriptRoot "ValidationResults.csv"), [Parameter()] [switch] - $SkipVersionCheck + $SkipVersionCheck, + + [Parameter()] + [switch] + $SkipPermissionValidation ) . $PSScriptRoot\Tests\DumpsterMapping\AllFunctions.ps1 @@ -52,11 +56,11 @@ if ($SummarizePreviousResults) { return } -if ($Repair) { +if ($RemoveInvalidPermissions) { if (-not (Test-Path $ResultsFile)) { - Write-Error "File not found: $ResultsFile. Please run without -Repair to generate a results file." + Write-Error "File not found: $ResultsFile. Please run without -RemoveInvalidPermissions to generate a results file." } else { - Import-Csv $ResultsFile | Repair-FolderPermission + Import-Csv $ResultsFile | Remove-InvalidPermission } return @@ -132,10 +136,12 @@ Write-Progress @progressParams -Status "Step 4 of 5" $badMailEnabled = Test-MailEnabledFolder -FolderData $folderData $badMailEnabled | Export-Csv $ResultsFile -NoTypeInformation -Append -Write-Progress @progressParams -Status "Step 5 of 5" +if (-not $SkipPermissionValidation) { + Write-Progress @progressParams -Status "Step 5 of 5" -$badPermissions = Test-Permission -FolderData $folderData -$badPermissions | Export-Csv $ResultsFile -NoTypeInformation -Append + $badPermissions = Test-Permission -FolderData $folderData + $badPermissions | Export-Csv $ResultsFile -NoTypeInformation -Append +} # Output the results diff --git a/PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/Write-TestDumpsterMappingResult.ps1 b/PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/Write-TestDumpsterMappingResult.ps1 index 9baa0d1d5d..69795c1e67 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/Write-TestDumpsterMappingResult.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/Write-TestDumpsterMappingResult.ps1 @@ -19,8 +19,10 @@ end { if ($badDumpsters.Count -gt 0) { Write-Host - Write-Host $badDumpsters.Count "folders have invalid dumpster mappings." - Write-Host $badDumpsters[0].ActionRequired + Write-Host $badDumpsters.Count "folders have invalid dumpster mappings. These folders" + Write-Host "are shown in the results CSV with a result type of BadDumpsterMapping." + Write-Host "The -ExcludeDumpsters switch can be used to skip these folders during migration, or the" + Write-Host "folders can be deleted." } } } diff --git a/PublicFolders/src/SourceSideValidations/Tests/Limit/Write-TestFolderLimitResult.ps1 b/PublicFolders/src/SourceSideValidations/Tests/Limit/Write-TestFolderLimitResult.ps1 index 5b66644025..0d62488419 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/Limit/Write-TestFolderLimitResult.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/Limit/Write-TestFolderLimitResult.ps1 @@ -31,18 +31,21 @@ if ($childCount -gt 0) { Write-Host Write-Host $childCount "folders have exceeded the child folder limit of 10,000." + Write-Host "These folders are shown in the results CSV with a result type of ChildCount." Write-Host "Under each of the listed folders, child folders should be relocated or deleted to reduce this number." } if ($folderPathDepth -gt 0) { Write-Host - Write-Host $folderPathDepth "folders have exceeded the path depth limit of 299. These folders are" + Write-Host $folderPathDepth "folders have exceeded the path depth limit of 299." + Write-Host "These folders are shown in the results CSV with a result type of FolderPathDepth." Write-Host "These folders should be relocated to reduce the path depth, or deleted." } if ($itemCount -gt 0) { Write-Host Write-Host $itemCount "folders exceed the maximum of 1 million items." + Write-Host "These folders are shown in the results CSV with a result type of ItemCount." Write-Host "In each of these folders, items should be deleted to reduce the item count." } diff --git a/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/AllFunctions.ps1 b/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/AllFunctions.ps1 index 337a7542ca..5c74fafd76 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/AllFunctions.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/AllFunctions.ps1 @@ -1,3 +1,2 @@ . $PSScriptRoot\Test-MailEnabledFolder.ps1 -. $PSScriptRoot\Update-TestMailEnabledFolderResult.ps1 . $PSScriptRoot\Write-TestMailEnabledFolderResult.ps1 diff --git a/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Test-MailEnabledFolder.ps1 b/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Test-MailEnabledFolder.ps1 index 168884d021..43f874f419 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Test-MailEnabledFolder.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Test-MailEnabledFolder.ps1 @@ -169,7 +169,7 @@ function Test-MailEnabledFolder { $params = @{ Identity = $thisMPF.DistinguishedName.Replace("/", "\/") - EntryId = "" + EntryId = $pf.EntryId ResultType = "OrphanedMPFDuplicate" ResultData = $command } @@ -178,7 +178,7 @@ function Test-MailEnabledFolder { } else { $params = @{ Identity = $thisMPF.DistinguishedName.Replace("/", "\/") - EntryId = "" + EntryId = $pf.EntryId ResultType = "OrphanedMPFDisconnected" } @@ -196,7 +196,7 @@ function Test-MailEnabledFolder { $params = @{ Identity = $thisMPF.DistinguishedName.Replace("/", "\/") - EntryId = "" + EntryId = $pf.EntryId ResultType = "OrphanedMPFDuplicate" } @@ -208,7 +208,7 @@ function Test-MailEnabledFolder { } else { $params = @{ Identity = $thisMPF.DistinguishedName.Replace("/", "\/") - EntryId = "" + EntryId = $pf.EntryId ResultType = "OrphanedMPFDisconnected" } diff --git a/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Update-TestMailEnabledFolderResult.ps1 b/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Update-TestMailEnabledFolderResult.ps1 deleted file mode 100644 index 374d3bcf0b..0000000000 --- a/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Update-TestMailEnabledFolderResult.ps1 +++ /dev/null @@ -1,30 +0,0 @@ -function Update-TestMailEnabledFolderResult { - [CmdletBinding()] - param ( - [Parameter(ValueFromPipeline = $true)] - [object] - $TestResult - ) - - process { - if ($TestResult.ResultType -eq "MailEnabledSystemFolder") { - Write-Host - Write-Host $group.Count "system folders are mail-enabled. These folders should be mail-disabled." - } elseif ($TestResult.ResultType -eq "MailEnabledWithNoADObject") { - Write-Host - Write-Host $group.Count "folders are mail-enabled, but have no AD object. These folders should be mail-disabled." - } elseif ($TestResult.ResultType -eq "MailDisabledWithProxyGuid") { - Write-Host - Write-Host $group.Count "folders are mail-disabled, but have proxy GUID values. These folders should be mail-enabled." - } elseif ($TestResult.ResultType -eq "OrphanedMPF") { - Write-Host - Write-Host $group.Count "mail public folders are orphaned. These directory objects should be deleted." - } elseif ($TestResult.ResultType -eq "OrphanedMPFDuplicate") { - Write-Host - Write-Host $group.Count "mail public folders point to public folders that point to a different directory object. These should be deleted. Their email addresses may be merged onto the linked object." - } elseif ($TestResult.ResultType -eq "OrphanedMPFDisconnected") { - Write-Host - Write-Host $group.Count "mail public folders point to public folders that are mail-disabled. These require manual intervention. Either the directory object should be deleted, or the folder should be mail-enabled, or both." - } - } -} diff --git a/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Write-TestMailEnabledFolderResult.ps1 b/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Write-TestMailEnabledFolderResult.ps1 index 3500503fe6..9fae2b305f 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Write-TestMailEnabledFolderResult.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Write-TestMailEnabledFolderResult.ps1 @@ -32,31 +32,55 @@ if ($mailEnabledSystemFolder -gt 0) { Write-Host Write-Host $mailEnabledSystemFolder "system folders are mail-enabled. These folders should be mail-disabled." + Write-Host "These folders are shown in the results CSV with a result type of MailEnabledSystemFolder." + Write-Host "After confirming the accuracy of the results, you can mail-disable them with the following command:" + Write-Host "Import-Csv .\ValidationResults.csv | ? ResultType -eq MailEnabledSystemFolder | % { Disable-MailPublicFolder $_.FolderIdentity }" -ForegroundColor Green } if ($mailEnabledWithNoADObject -gt 0) { Write-Host Write-Host $mailEnabledWithNoADObject "folders are mail-enabled, but have no AD object. These folders should be mail-disabled." + Write-Host "These folders are shown in the results CSV with a result type of MailEnabledWithNoADObject." + Write-Host "After confirming the accuracy of the results, you can mail-disable them with the following command:" + Write-Host "Import-Csv .\ValidationResults.csv | ? ResultType -eq MailEnabledWithNoADObject | % { Disable-MailPublicFolder $_.FolderIdentity }" -ForegroundColor Green } if ($mailDisabledWithProxyGuid -gt 0) { Write-Host Write-Host $mailDisabledWithProxyGuid "folders are mail-disabled, but have proxy GUID values. These folders should be mail-enabled." + Write-Host "These folders are shown in the results CSV with a result type of MailDisabledWithProxyGuid." + Write-Host "After confirming the accuracy of the results, you can mail-enable them with the following command:" + Write-Host "Import-Csv .\ValidationResults.csv | ? ResultType -eq MailDisabledWithProxyGuid | % { Enable-MailPublicFolder $_.FolderIdentity }" -ForegroundColor Green } if ($orphanedMPF -gt 0) { Write-Host - Write-Host $orphanedMPF "mail public folders are orphaned. These directory objects should be deleted." + Write-Host $orphanedMPF "mail public folders are orphaned. They exist in Active Directory" + Write-Host "but are not linked to any public folder. Therefore, they should be deleted." + Write-Host "These folders are shown in the results CSV with a result type of OrphanedMPF." + Write-Host "After confirming the accuracy of the results, you can delete them manually," + Write-Host "or use a command like this:" + Write-Host "Import-Csv .\ValidationResults.csv | ? ResultType -eq OrphanedMPF | % { `$folder = ([ADSI](`"LDAP://`$_`")); `$parent = ([ADSI]`"`$(`$folder.Parent)`"); `$parent.Children.Remove(`$folder) }" -ForegroundColor Green } if ($orphanedMPFDuplicate -gt 0) { Write-Host - Write-Host $orphanedMPFDuplicate "mail public folders point to public folders that point to a different directory object. These should be deleted. Their email addresses may be merged onto the linked object." + Write-Host $orphanedMPFDuplicate "mail public folders point to public folders that point to a different directory object." + Write-Host "These folders are shown in the results CSV with a result type of OrphanedMPFDuplicate." + Write-Host "These should be deleted. Their email addresses may be merged onto the linked object." + Write-Host "After confirming the accuracy of the results, you can delete them manually," + Write-Host "or use a command like this:" + Write-Host "Import-Csv .\ValidationResults.csv | ? ResultType -eq OrphanedMPFDuplicate | % { `$folder = ([ADSI](`"LDAP://`$(`$_.FolderIdentity)`")); `$parent = ([ADSI]`"`$(`$folder.Parent)`"); `$parent.Children.Remove(`$folder) }" -ForegroundColor Green + Write-Host "After these objects are deleted, the email addresses can be merged onto the linked objects:" + Write-Host "Import-Csv .\ValidationResults.csv | ? ResultType -eq OrphanedMPFDuplicate | % { Invoke-Expression `$_.ResultData }" -ForegroundColor Green } if ($orphanedMPFDisconnected -gt 0) { Write-Host - Write-Host $orphanedMPFDisconnected "mail public folders point to public folders that are mail-disabled. These require manual intervention. Either the directory object should be deleted, or the folder should be mail-enabled, or both." + Write-Host $orphanedMPFDisconnected "mail public folders point to public folders that are mail-disabled." + Write-Host "These require manual intervention. Either the directory object should be deleted, or the folder should be mail-enabled, or both." + Write-Host "Open the ValidationResults.csv and filter for ResultType of OrphanedMPFDisconnected to identify these folders." + Write-Host "The FolderIdentity provides the DN of the mail object. The FolderEntryId provides the EntryId of the folder." } } } diff --git a/PublicFolders/src/SourceSideValidations/Tests/Permission/AllFunctions.ps1 b/PublicFolders/src/SourceSideValidations/Tests/Permission/AllFunctions.ps1 index 12a9c6a55b..c1ad5750a1 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/Permission/AllFunctions.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/Permission/AllFunctions.ps1 @@ -1,4 +1,4 @@ . $PSScriptRoot\Test-Permission.ps1 . $PSScriptRoot\Test-PermissionJob.ps1 . $PSScriptRoot\Write-TestPermissionResult.ps1 -. $PSScriptRoot\Repair-FolderPermission.ps1 +. $PSScriptRoot\Remove-InvalidPermission.ps1 diff --git a/PublicFolders/src/SourceSideValidations/Tests/Permission/Repair-FolderPermission.ps1 b/PublicFolders/src/SourceSideValidations/Tests/Permission/Remove-InvalidPermission.ps1 similarity index 98% rename from PublicFolders/src/SourceSideValidations/Tests/Permission/Repair-FolderPermission.ps1 rename to PublicFolders/src/SourceSideValidations/Tests/Permission/Remove-InvalidPermission.ps1 index 919d3420e0..50fdc14385 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/Permission/Repair-FolderPermission.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/Permission/Remove-InvalidPermission.ps1 @@ -1,4 +1,4 @@ -function Repair-FolderPermission { +function Remove-InvalidPermission { [CmdletBinding(SupportsShouldProcess)] param ( [Parameter(ValueFromPipeline = $true)] diff --git a/PublicFolders/src/SourceSideValidations/Tests/Permission/Write-TestPermissionResult.ps1 b/PublicFolders/src/SourceSideValidations/Tests/Permission/Write-TestPermissionResult.ps1 index 37485aa6bc..2e5f9dd137 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/Permission/Write-TestPermissionResult.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/Permission/Write-TestPermissionResult.ps1 @@ -21,7 +21,7 @@ Write-Host Write-Host $badPermissionCount "invalid permissions were found." Write-Host "The invalid permissions can be removed using the RemoveInvalidPermissions switch as follows:" - Write-Host ".\SourceSideValidations.ps1 -Repair" -ForegroundColor Green + Write-Host ".\SourceSideValidations.ps1 -RemoveInvalidPermissions" -ForegroundColor Green } } } \ No newline at end of file From 7f328475b904f18e1fab7a3127d33c0c7683728b Mon Sep 17 00:00:00 2001 From: Bill Long Date: Mon, 26 Jul 2021 01:22:07 -0700 Subject: [PATCH 08/34] Fix path depth calculation --- PublicFolders/src/SourceSideValidations/Get-IpmSubtree.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PublicFolders/src/SourceSideValidations/Get-IpmSubtree.ps1 b/PublicFolders/src/SourceSideValidations/Get-IpmSubtree.ps1 index 6058da4a62..e25e416801 100644 --- a/PublicFolders/src/SourceSideValidations/Get-IpmSubtree.ps1 +++ b/PublicFolders/src/SourceSideValidations/Get-IpmSubtree.ps1 @@ -80,7 +80,7 @@ EntryId = $Folder.EntryId.ToString() ParentEntryId = $Folder.ParentFolder.ToString() DumpsterEntryId = if ($Folder.DumpsterEntryId) { $Folder.DumpsterEntryId.ToString() } else { $null } - FolderPathDepth = $Folder.FolderPath.Depth + FolderPathDepth = $Folder.Identity.ToString().Split("\").Count - 1 # Naive path depth implementation as Depth is not available without rehydration FolderSize = $Folder.FolderSize HasSubfolders = $Folder.HasSubfolders ContentMailbox = $Folder.ContentMailboxName From f80773dba8e99b6908741ff2b856793e28c99d62 Mon Sep 17 00:00:00 2001 From: Bill Long Date: Mon, 26 Jul 2021 06:44:16 -0700 Subject: [PATCH 09/34] Adjust BadPermission result summary --- .../Tests/Permission/Write-TestPermissionResult.ps1 | 1 + 1 file changed, 1 insertion(+) diff --git a/PublicFolders/src/SourceSideValidations/Tests/Permission/Write-TestPermissionResult.ps1 b/PublicFolders/src/SourceSideValidations/Tests/Permission/Write-TestPermissionResult.ps1 index 2e5f9dd137..a8d8ee3d36 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/Permission/Write-TestPermissionResult.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/Permission/Write-TestPermissionResult.ps1 @@ -20,6 +20,7 @@ if ($badPermissionCount -gt 0) { Write-Host Write-Host $badPermissionCount "invalid permissions were found." + Write-Host "These are shown in the results CSV with a result type of BadPermission." Write-Host "The invalid permissions can be removed using the RemoveInvalidPermissions switch as follows:" Write-Host ".\SourceSideValidations.ps1 -RemoveInvalidPermissions" -ForegroundColor Green } From be59270f189dc382fb5e6d7c4bd2d86defe315f8 Mon Sep 17 00:00:00 2001 From: Bill Long Date: Mon, 26 Jul 2021 07:51:57 -0700 Subject: [PATCH 10/34] Send completed jobs to the pipeline --- PublicFolders/src/SourceSideValidations/JobQueue.ps1 | 8 +------- .../Tests/Permission/Test-Permission.ps1 | 12 +----------- 2 files changed, 2 insertions(+), 18 deletions(-) diff --git a/PublicFolders/src/SourceSideValidations/JobQueue.ps1 b/PublicFolders/src/SourceSideValidations/JobQueue.ps1 index ba45bc77fb..5a1b9405da 100644 --- a/PublicFolders/src/SourceSideValidations/JobQueue.ps1 +++ b/PublicFolders/src/SourceSideValidations/JobQueue.ps1 @@ -52,7 +52,7 @@ function Wait-QueuedJob { } Write-Host $job.Name "job finished." Remove-Job $job -Force - $jobResults += $result + $result } $jobsRunning = @($jobsRunning | Where-Object { -not $justFinished.Contains($_) }) @@ -70,10 +70,4 @@ function Wait-QueuedJob { Start-Sleep 1 } } - - end { - $jobsToReturn = $jobResults - $jobResults = @() - return $jobsToReturn - } } diff --git a/PublicFolders/src/SourceSideValidations/Tests/Permission/Test-Permission.ps1 b/PublicFolders/src/SourceSideValidations/Tests/Permission/Test-Permission.ps1 index 059ab15f3e..eb315e712c 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/Permission/Test-Permission.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/Permission/Test-Permission.ps1 @@ -25,17 +25,7 @@ function Test-Permission { } } - $completedJobs = Wait-QueuedJob - - $params = @{ - TestName = "Permission" - ResultType = "BadPermission" - Severity = "Error" - } - - foreach ($job in $completedJobs) { - $job - } + Wait-QueuedJob } end { From 59aa05ac98ef4d9689e0e3c8056c7efd2bab3783 Mon Sep 17 00:00:00 2001 From: Bill Long Date: Mon, 26 Jul 2021 11:06:16 -0700 Subject: [PATCH 11/34] Multithreaded slow traversal item count --- .../SourceSideValidations/Get-FolderData.ps1 | 68 +++++++----- .../SourceSideValidations/Get-ItemCount.ps1 | 104 ++++++++++-------- .../Get-ItemCountJob.ps1 | 89 +++++++++++++++ 3 files changed, 188 insertions(+), 73 deletions(-) create mode 100644 PublicFolders/src/SourceSideValidations/Get-ItemCountJob.ps1 diff --git a/PublicFolders/src/SourceSideValidations/Get-FolderData.ps1 b/PublicFolders/src/SourceSideValidations/Get-FolderData.ps1 index 9a7b528fbe..6e985763e9 100644 --- a/PublicFolders/src/SourceSideValidations/Get-FolderData.ps1 +++ b/PublicFolders/src/SourceSideValidations/Get-FolderData.ps1 @@ -15,6 +15,7 @@ function Get-FolderData { ) begin { + Write-Verbose "$($MyInvocation.MyCommand) called." $startTime = Get-Date $serverName = (Get-Mailbox -PublicFolder (Get-OrganizationConfig).RootPublicFolderMailbox.HierarchyMailboxGuid.ToString()).ServerName $folderData = [PSCustomObject]@{ @@ -34,66 +35,79 @@ function Get-FolderData { process { if (-not $StartFresh -and (Test-Path $PSScriptRoot\IpmSubtree.csv)) { $folderData.IpmSubtree = Import-Csv $PSScriptRoot\IpmSubtree.csv - $folderData.NonIpmSubtree = Import-Csv $PSScriptRoot\NonIpmSubtree.csv - $folderData.ItemCounts = Import-Csv $PSScriptRoot\ItemCounts.csv } else { Add-JobQueueJob @{ ArgumentList = $serverName, $SlowTraversal Name = "Get-IpmSubtree" ScriptBlock = ${Function:Get-IpmSubtree} } + } + if (-not $StartFresh -and (Test-Path $PSScriptRoot\NonIpmSubtree.csv)) { + $folderData.NonIpmSubtree = Import-Csv $PSScriptRoot\NonIpmSubtree.csv + } else { Add-JobQueueJob @{ ArgumentList = $serverName, $SlowTraversal Name = "Get-NonIpmSubtree" ScriptBlock = ${Function:Get-NonIpmSubtree} } + } - # If we're not doing slow traversal, we can get the stats concurrently with the other jobs - if (-not $SlowTraversal) { + # If we're not doing slow traversal, we can get the stats concurrently with the other jobs + if (-not $SlowTraversal) { + if (-not $StartFresh -and (Test-Path $PSScriptRoot\ItemCounts.csv)) { + $folderData.ItemCounts = Import-Csv $PSScriptRoot\ItemCounts.csv + } else { Add-JobQueueJob @{ ArgumentList = $serverName Name = "Get-ItemCount" ScriptBlock = ${Function:Get-ItemCount} } } + } - $completedJobs = Wait-QueuedJob + $completedJobs = Wait-QueuedJob - foreach ($job in $completedJobs) { - if ($null -ne $job.IpmSubtree) { - $folderData.IpmSubtree = $job.IpmSubtree - } + foreach ($job in $completedJobs) { + if ($null -ne $job.IpmSubtree) { + $folderData.IpmSubtree = $job.IpmSubtree + } - if ($null -ne $job.NonIpmSubtree) { - $folderData.NonIpmSubtree = $job.NonIpmSubtree - } + if ($null -ne $job.NonIpmSubtree) { + $folderData.NonIpmSubtree = $job.NonIpmSubtree + } - if ($null -ne $job.ItemCounts) { - $folderData.ItemCounts = $job.ItemCounts - } + if ($null -ne $job.ItemCounts) { + $folderData.ItemCounts = $job.ItemCounts } + } - # If we're doing slow traversal, we have to get the stats after we have the hierarchy - if ($SlowTraversal) { - $itemCountResult = Get-ItemCount $serverName $folderData.IpmSubtree + $folderData.IpmSubtree | Export-Csv $PSScriptRoot\IpmSubtree.csv + $folderData.NonIpmSubtree | Export-Csv $PSScriptRoot\NonIpmSubtree.csv + + $folderData.IpmSubtreeByMailbox = $folderData.IpmSubtree | Group-Object ContentMailbox + $folderData.IpmSubtree | ForEach-Object { $folderData.ParentEntryIdCounts[$_.ParentEntryId] += 1 } + $folderData.IpmSubtree | ForEach-Object { $folderData.EntryIdDictionary[$_.EntryId] = $_ } + $folderData.NonIpmSubtree | ForEach-Object { $folderData.NonIpmEntryIdDictionary[$_.EntryId] = $_ } + + # If we're doing slow traversal, we have to get the stats after we have the hierarchy + # grouped by mailbox. + if ($SlowTraversal) { + if (-not $StartFresh -and (Test-Path $PSScriptRoot\ItemCounts.csv)) { + $folderData.ItemCounts = Import-Csv $PSScriptRoot\ItemCounts.csv + } else { + Write-Verbose "Starting slow traversal item count." + $itemCountResult = Get-ItemCount $serverName $folderData $folderData.ItemCounts = $itemCountResult.ItemCounts foreach ($errorParam in $itemCountResult.Errors) { $errorResult = New-TestResult @errorParam - $folderData.Errors.AddRange($errorResult) + $folderData.Errors.Add($errorResult) } } - - $folderData.IpmSubtree | Export-Csv $PSScriptRoot\IpmSubtree.csv - $folderData.NonIpmSubtree | Export-Csv $PSScriptRoot\NonIpmSubtree.csv - $folderData.ItemCounts | Export-Csv $PSScriptRoot\ItemCounts.csv } - $folderData.IpmSubtreeByMailbox = $folderData.IpmSubtree | Group-Object ContentMailbox - $folderData.IpmSubtree | ForEach-Object { $folderData.ParentEntryIdCounts[$_.ParentEntryId] += 1 } - $folderData.IpmSubtree | ForEach-Object { $folderData.EntryIdDictionary[$_.EntryId] = $_ } - $folderData.NonIpmSubtree | ForEach-Object { $folderData.NonIpmEntryIdDictionary[$_.EntryId] = $_ } $folderData.ItemCounts | ForEach-Object { $folderData.ItemCountDictionary[$_.EntryId] = $_.ItemCount } + $folderData.ItemCounts | Export-Csv $PSScriptRoot\ItemCounts.csv } end { diff --git a/PublicFolders/src/SourceSideValidations/Get-ItemCount.ps1 b/PublicFolders/src/SourceSideValidations/Get-ItemCount.ps1 index b40dca902d..45c39f073b 100644 --- a/PublicFolders/src/SourceSideValidations/Get-ItemCount.ps1 +++ b/PublicFolders/src/SourceSideValidations/Get-ItemCount.ps1 @@ -1,4 +1,6 @@ -function Get-ItemCount { +. .\Get-ItemCountJob.ps1 + +function Get-ItemCount { <# .SYNOPSIS Gets the item count for each folder. @@ -10,17 +12,17 @@ $Server, [Parameter(Position = 1)] - [object[]] - $FolderList = $null + [PSCustomObject] + $FolderData = $null ) begin { - $WarningPreference = "SilentlyContinue" - if ($null -eq $FolderList) { - Import-PSSession (New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "http://$Server/powershell" -Authentication Kerberos) | Out-Null + Write-Verbose "$($MyInvocation.MyCommand) called." + $progressFile = Join-Path $PSScriptRoot "ItemCountProgress.csv" + if (Test-Path $progressFile) { + Remove-Item $progressFile } - $retryDelay = [TimeSpan]::FromMinutes(5) $progressCount = 0 $sw = New-Object System.Diagnostics.Stopwatch $sw.Start() @@ -33,7 +35,9 @@ } process { - if ($null -eq $FolderList) { + if ($null -eq $FolderData) { + $WarningPreference = "SilentlyContinue" + Import-PSSession (New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "http://$Server/powershell" -Authentication Kerberos) | Out-Null $itemCounts = Get-PublicFolderStatistics -ResultSize Unlimited | ForEach-Object { $progressCount++ if ($sw.ElapsedMilliseconds -gt 1000) { @@ -44,49 +48,55 @@ Select-Object -InputObject $_ -Property EntryId, ItemCount } } else { - $itemCounts = New-Object System.Collections.ArrayList - foreach ($folder in $FolderList) { - $progressCount++ - if ($sw.ElapsedMilliseconds -gt 1000) { - $sw.Restart() - Write-Progress @progressParams -Status $progressCount + $batchSize = 10000 + $jobsToCreate = New-Object 'System.Collections.Generic.Dictionary[string, System.Collections.ArrayList]' + foreach ($group in $folderData.IpmSubtreeByMailbox) { + # MailboxToServerMap is not populated yet, so we can't use it here + $server = (Get-Mailbox $group.Name -PublicFolder).ServerName + [int]$mailboxBatchCount = ($group.Group.Count / $batchSize) + 1 + Write-Verbose "Creating $mailboxBatchCount item count jobs for $($group.Group.Count) folders in mailbox $($group.Name) on server $server." + $jobsForThisMailbox = New-Object System.Collections.ArrayList + for ($i = 0; $i -lt $mailboxBatchCount; $i++) { + $batch = $group.Group | Select-Object -First $batchSize -Skip ($batchSize * $i) + $argumentList = $server, $group.Name, $batch + $jobsForThisMailbox.Add(@{ + ArgumentList = $argumentList + Name = "Item Count $($group.Name) Job $($i + 1)" + ScriptBlock = ${Function:Get-ItemCountJob} + }) } - $maxRetries = 5 - for ($retryCount = 1; $retryCount -le $maxRetries; $retryCount++) { - try { - $stats = Get-PublicFolderStatistics $folder.EntryId | Select-Object EntryId, ItemCount - $itemCounts.Add($stats) - break - } catch { - # Only retry Kerberos errors - if ($_.ToString().Contains("Kerberos")) { - $sw.Restart() - while ($sw.ElapsedMilliseconds -lt $retryDelay.TotalMilliseconds) { - Write-Progress @progressParams -Status "Retry $retryCount of $maxRetries. Error: $($_.Message)" - Start-Sleep -Seconds 5 - $remainingMilliseconds = $retryDelay.TotalMilliseconds - $sw.ElapsedMilliseconds - if ($remainingMilliseconds -lt 0) { $remainingMilliseconds = 0 } - Write-Progress @progressParams -Status "Retry $retryCount of $maxRetries. Will retry in $([TimeSpan]::FromMilliseconds($remainingMilliseconds))" - Start-Sleep -Seconds 5 - } - - Get-PSSession | Remove-PSSession - Import-PSSession (New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "http://$Server/powershell" -Authentication Kerberos) -AllowClobber | Out-Null - } else { - $errorReport = @{ - TestName = "Get-ItemCount" - ResultType = "CouldNotGetItemCount" - Severity = "Error" - FolderIdentity = $folder.Identity - FolderEntryId = $folder.EntryId - ResultData = $_.ToString() - } + $jobsToCreate.Add($group.Name, $jobsForThisMailbox) + } - $errors.Add($error) - } + # Add the jobs by round-robin among the mailboxes so we don't execute all jobs + # for one mailbox in parallel unless we have to + $jobsAddedThisRound = 0 + $index = 0 + do { + $jobsAddedThisRound = 0 + foreach ($mailboxName in $jobsToCreate.Keys) { + $batchesForThisMailbox = $jobsToCreate[$mailboxName] + if ($batchesForThisMailbox.Count -gt $index) { + $jobParams = $batchesForThisMailbox[$index] + Add-JobQueueJob $jobParams + $jobsAddedThisRound++ } } + + $index++ + } while ($jobsAddedThisRound -gt 0) + + $foldersDone = 0 + Wait-QueuedJob | ForEach-Object { + $foldersDone += $_.ItemCounts.Count + Write-Verbose "Retrieved item counts for $foldersDone folders so far..." + $itemCounts.AddRange($_.ItemCounts) + $errors.AddRange($_.Errors) + + if ($_.ItemCounts.Count -gt 0) { + $_.ItemCounts | Export-Csv -Path $progressFile -Append + } } } } @@ -94,6 +104,8 @@ end { Write-Progress @progressParams -Completed + Remove-Item $progressFile + return [PSCustomObject]@{ ItemCounts = $itemCounts Errors = $errors diff --git a/PublicFolders/src/SourceSideValidations/Get-ItemCountJob.ps1 b/PublicFolders/src/SourceSideValidations/Get-ItemCountJob.ps1 new file mode 100644 index 0000000000..055e62b8ca --- /dev/null +++ b/PublicFolders/src/SourceSideValidations/Get-ItemCountJob.ps1 @@ -0,0 +1,89 @@ +function Get-ItemCountJob { + [CmdletBinding()] + param ( + [Parameter(Position = 0)] + [string] + $Server, + + [Parameter(Position = 1)] + [string] + $Mailbox, + + [Parameter(Position = 2)] + [PSCustomObject[]] + $Folders + ) + + begin { + $retryDelay = [TimeSpan]::FromMinutes(5) + $WarningPreference = "SilentlyContinue" + Import-PSSession (New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "http://$Server/powershell" -Authentication Kerberos) | Out-Null + $startTime = Get-Date + $progressCount = 0 + $sw = New-Object System.Diagnostics.Stopwatch + $sw.Start() + $progressParams = @{ + Activity = "Getting public folder statistics" + } + + $itemCounts = New-Object System.Collections.ArrayList + $errors = New-Object System.Collections.ArrayList + } + + process { + $itemCounts = New-Object System.Collections.ArrayList + foreach ($folder in $Folders) { + $progressCount++ + if ($sw.ElapsedMilliseconds -gt 1000) { + $sw.Restart() + Write-Progress @progressParams -Status $progressCount + } + + $maxRetries = 5 + for ($retryCount = 1; $retryCount -le $maxRetries; $retryCount++) { + try { + $stats = Get-PublicFolderStatistics $folder.EntryId | Select-Object EntryId, ItemCount + [void]$itemCounts.Add($stats) + break + } catch { + # Only retry Kerberos errors + if ($_.ToString().Contains("Kerberos")) { + $sw.Restart() + while ($sw.ElapsedMilliseconds -lt $retryDelay.TotalMilliseconds) { + Write-Progress @progressParams -Status "Retry $retryCount of $maxRetries. Error: $($_.Message)" + Start-Sleep -Seconds 5 + $remainingMilliseconds = $retryDelay.TotalMilliseconds - $sw.ElapsedMilliseconds + if ($remainingMilliseconds -lt 0) { $remainingMilliseconds = 0 } + Write-Progress @progressParams -Status "Retry $retryCount of $maxRetries. Will retry in $([TimeSpan]::FromMilliseconds($remainingMilliseconds))" + Start-Sleep -Seconds 5 + } + + Get-PSSession | Remove-PSSession + Import-PSSession (New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "http://$Server/powershell" -Authentication Kerberos) -AllowClobber | Out-Null + } else { + $errorReport = @{ + TestName = "Get-ItemCount" + ResultType = "CouldNotGetItemCount" + Severity = "Error" + FolderIdentity = $folder.Identity + FolderEntryId = $folder.EntryId + ResultData = $_.ToString() + } + + [void]$errors.Add($error) + } + } + } + } + } + + end { + Write-Progress @progressParams -Completed + $duration = ((Get-Date) - $startTime) + return [PSCustomObject]@{ + ItemCounts = $itemCounts + Errors = $errors + Duration = $duration + } + } +} From 1e910be7d060beb854ff4e271ebff4c628a3b1b2 Mon Sep 17 00:00:00 2001 From: Bill Long Date: Mon, 26 Jul 2021 19:37:23 -0700 Subject: [PATCH 12/34] Preserve previous validation results --- .../src/SourceSideValidations/SourceSideValidations.ps1 | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 b/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 index 37f66dc7b5..dd82c98177 100644 --- a/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 +++ b/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 @@ -58,7 +58,7 @@ if ($SummarizePreviousResults) { if ($RemoveInvalidPermissions) { if (-not (Test-Path $ResultsFile)) { - Write-Error "File not found: $ResultsFile. Please run without -RemoveInvalidPermissions to generate a results file." + Write-Error "File not found: $ResultsFile. Please specify -ResultsFile or run without -RemoveInvalidPermissions to generate a results file." } else { Import-Csv $ResultsFile | Remove-InvalidPermission } @@ -114,7 +114,10 @@ if ($script:anyDatabaseDown) { # Now we're ready to do the checks if (Test-Path $ResultsFile) { - Remove-Item $ResultsFile + $directory = [System.IO.Path]::GetDirectoryName($ResultsFile) + $fileName = [System.IO.Path]::GetFileNameWithoutExtension($ResultsFile) + $timeString = (Get-Item $ResultsFile).LastWriteTime.ToString("yyMMdd-HHmm") + Move-Item -Path $ResultsFile -Destination (Join-Path $directory "$($fileName)-$timeString.csv") } if ($folderData.Errors.Count -gt 0) { From 32d2f4fda292decae803ae136f124c8f9ce12935 Mon Sep 17 00:00:00 2001 From: Bill Long Date: Mon, 26 Jul 2021 21:24:22 -0700 Subject: [PATCH 13/34] CodeFormatter fixes --- PublicFolders/src/SourceSideValidations/Get-FolderData.ps1 | 2 +- PublicFolders/src/SourceSideValidations/Get-ItemCount.ps1 | 2 +- .../src/SourceSideValidations/Get-ItemCountJob.ps1 | 5 ++++- .../Tests/DumpsterMapping/AllFunctions.ps1 | 5 ++++- .../Tests/DumpsterMapping/Test-DumpsterMapping.ps1 | 5 ++++- .../DumpsterMapping/Write-TestDumpsterMappingResult.ps1 | 5 ++++- .../src/SourceSideValidations/Tests/Limit/AllFunctions.ps1 | 5 ++++- .../SourceSideValidations/Tests/Limit/Test-FolderLimit.ps1 | 5 ++++- .../Tests/Limit/Write-TestFolderLimitResult.ps1 | 7 +++++-- .../Tests/MailEnabledFolder/AllFunctions.ps1 | 5 ++++- .../Tests/MailEnabledFolder/Test-MailEnabledFolder.ps1 | 2 +- .../Write-TestMailEnabledFolderResult.ps1 | 5 ++++- .../src/SourceSideValidations/Tests/New-TestResult.ps1 | 7 +++++-- .../Tests/Permission/AllFunctions.ps1 | 5 ++++- .../Tests/Permission/Remove-InvalidPermission.ps1 | 5 ++++- .../Tests/Permission/Write-TestPermissionResult.ps1 | 7 +++++-- 16 files changed, 58 insertions(+), 19 deletions(-) diff --git a/PublicFolders/src/SourceSideValidations/Get-FolderData.ps1 b/PublicFolders/src/SourceSideValidations/Get-FolderData.ps1 index 3064329d33..f95fc99e15 100644 --- a/PublicFolders/src/SourceSideValidations/Get-FolderData.ps1 +++ b/PublicFolders/src/SourceSideValidations/Get-FolderData.ps1 @@ -1,4 +1,4 @@ -# Copyright (c) Microsoft Corporation. +# Copyright (c) Microsoft Corporation. # Licensed under the MIT License. . $PSScriptRoot\Get-IpmSubtree.ps1 diff --git a/PublicFolders/src/SourceSideValidations/Get-ItemCount.ps1 b/PublicFolders/src/SourceSideValidations/Get-ItemCount.ps1 index 0e74d07662..444687466c 100644 --- a/PublicFolders/src/SourceSideValidations/Get-ItemCount.ps1 +++ b/PublicFolders/src/SourceSideValidations/Get-ItemCount.ps1 @@ -1,4 +1,4 @@ -# Copyright (c) Microsoft Corporation. +# Copyright (c) Microsoft Corporation. # Licensed under the MIT License. . .\Get-ItemCountJob.ps1 diff --git a/PublicFolders/src/SourceSideValidations/Get-ItemCountJob.ps1 b/PublicFolders/src/SourceSideValidations/Get-ItemCountJob.ps1 index 055e62b8ca..a579825cf7 100644 --- a/PublicFolders/src/SourceSideValidations/Get-ItemCountJob.ps1 +++ b/PublicFolders/src/SourceSideValidations/Get-ItemCountJob.ps1 @@ -1,4 +1,7 @@ -function Get-ItemCountJob { +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. + +function Get-ItemCountJob { [CmdletBinding()] param ( [Parameter(Position = 0)] diff --git a/PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/AllFunctions.ps1 b/PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/AllFunctions.ps1 index 331b92ffc4..9fc5ea65ca 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/AllFunctions.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/AllFunctions.ps1 @@ -1,2 +1,5 @@ -. $PSScriptRoot\Test-DumpsterMapping.ps1 +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. + +. $PSScriptRoot\Test-DumpsterMapping.ps1 . $PSScriptRoot\Write-TestDumpsterMappingResult.ps1 diff --git a/PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/Test-DumpsterMapping.ps1 b/PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/Test-DumpsterMapping.ps1 index 670c468365..337c21b40c 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/Test-DumpsterMapping.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/Test-DumpsterMapping.ps1 @@ -1,4 +1,7 @@ -. $PSScriptRoot\..\New-TestResult.ps1 +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. + +. $PSScriptRoot\..\New-TestResult.ps1 function Test-DumpsterMapping { [CmdletBinding()] diff --git a/PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/Write-TestDumpsterMappingResult.ps1 b/PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/Write-TestDumpsterMappingResult.ps1 index 69795c1e67..b3f4c4573e 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/Write-TestDumpsterMappingResult.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/Write-TestDumpsterMappingResult.ps1 @@ -1,4 +1,7 @@ -function Write-TestDumpsterMappingResult { +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. + +function Write-TestDumpsterMappingResult { [CmdletBinding()] param ( [Parameter(ValueFromPipeline = $true)] diff --git a/PublicFolders/src/SourceSideValidations/Tests/Limit/AllFunctions.ps1 b/PublicFolders/src/SourceSideValidations/Tests/Limit/AllFunctions.ps1 index 456de626b2..5fb3a96a07 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/Limit/AllFunctions.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/Limit/AllFunctions.ps1 @@ -1,2 +1,5 @@ -. $PSScriptRoot\Test-FolderLimit.ps1 +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. + +. $PSScriptRoot\Test-FolderLimit.ps1 . $PSScriptRoot\Write-TestFolderLimitResult.ps1 diff --git a/PublicFolders/src/SourceSideValidations/Tests/Limit/Test-FolderLimit.ps1 b/PublicFolders/src/SourceSideValidations/Tests/Limit/Test-FolderLimit.ps1 index f3aab54f03..bbfae800d5 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/Limit/Test-FolderLimit.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/Limit/Test-FolderLimit.ps1 @@ -1,4 +1,7 @@ -. $PSScriptRoot\..\New-TestResult.ps1 +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. + +. $PSScriptRoot\..\New-TestResult.ps1 function Test-FolderLimit { <# diff --git a/PublicFolders/src/SourceSideValidations/Tests/Limit/Write-TestFolderLimitResult.ps1 b/PublicFolders/src/SourceSideValidations/Tests/Limit/Write-TestFolderLimitResult.ps1 index 0d62488419..3b056bd9f3 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/Limit/Write-TestFolderLimitResult.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/Limit/Write-TestFolderLimitResult.ps1 @@ -1,4 +1,7 @@ -function Write-TestFolderLimitResult { +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. + +function Write-TestFolderLimitResult { [CmdletBinding()] param ( [Parameter(ValueFromPipeline = $true)] @@ -65,4 +68,4 @@ Write-Host "folders, or public folders may be deleted to reduce the number of folders." } } -} \ No newline at end of file +} diff --git a/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/AllFunctions.ps1 b/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/AllFunctions.ps1 index 5c74fafd76..46dec529a5 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/AllFunctions.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/AllFunctions.ps1 @@ -1,2 +1,5 @@ -. $PSScriptRoot\Test-MailEnabledFolder.ps1 +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. + +. $PSScriptRoot\Test-MailEnabledFolder.ps1 . $PSScriptRoot\Write-TestMailEnabledFolderResult.ps1 diff --git a/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Test-MailEnabledFolder.ps1 b/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Test-MailEnabledFolder.ps1 index d026df5d96..5f76739865 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Test-MailEnabledFolder.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Test-MailEnabledFolder.ps1 @@ -1,4 +1,4 @@ -# Copyright (c) Microsoft Corporation. +# Copyright (c) Microsoft Corporation. # Licensed under the MIT License. . $PSScriptRoot\..\New-TestResult.ps1 diff --git a/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Write-TestMailEnabledFolderResult.ps1 b/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Write-TestMailEnabledFolderResult.ps1 index 9fae2b305f..06904c4bda 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Write-TestMailEnabledFolderResult.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Write-TestMailEnabledFolderResult.ps1 @@ -1,4 +1,7 @@ -function Write-TestMailEnabledFolderResult { +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. + +function Write-TestMailEnabledFolderResult { [CmdletBinding()] param ( [Parameter(ValueFromPipeline = $true)] diff --git a/PublicFolders/src/SourceSideValidations/Tests/New-TestResult.ps1 b/PublicFolders/src/SourceSideValidations/Tests/New-TestResult.ps1 index e725c8709b..9ef26a9d1f 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/New-TestResult.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/New-TestResult.ps1 @@ -1,4 +1,7 @@ -function New-TestResult { +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. + +function New-TestResult { [CmdletBinding()] param ( [Parameter(Mandatory = $true)] @@ -35,4 +38,4 @@ FolderEntryId = $FolderEntryId ResultData = $ResultData } -} \ No newline at end of file +} diff --git a/PublicFolders/src/SourceSideValidations/Tests/Permission/AllFunctions.ps1 b/PublicFolders/src/SourceSideValidations/Tests/Permission/AllFunctions.ps1 index c1ad5750a1..df045b2ec7 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/Permission/AllFunctions.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/Permission/AllFunctions.ps1 @@ -1,4 +1,7 @@ -. $PSScriptRoot\Test-Permission.ps1 +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. + +. $PSScriptRoot\Test-Permission.ps1 . $PSScriptRoot\Test-PermissionJob.ps1 . $PSScriptRoot\Write-TestPermissionResult.ps1 . $PSScriptRoot\Remove-InvalidPermission.ps1 diff --git a/PublicFolders/src/SourceSideValidations/Tests/Permission/Remove-InvalidPermission.ps1 b/PublicFolders/src/SourceSideValidations/Tests/Permission/Remove-InvalidPermission.ps1 index 50fdc14385..058fb9e3c1 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/Permission/Remove-InvalidPermission.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/Permission/Remove-InvalidPermission.ps1 @@ -1,4 +1,7 @@ -function Remove-InvalidPermission { +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. + +function Remove-InvalidPermission { [CmdletBinding(SupportsShouldProcess)] param ( [Parameter(ValueFromPipeline = $true)] diff --git a/PublicFolders/src/SourceSideValidations/Tests/Permission/Write-TestPermissionResult.ps1 b/PublicFolders/src/SourceSideValidations/Tests/Permission/Write-TestPermissionResult.ps1 index a8d8ee3d36..7efa254248 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/Permission/Write-TestPermissionResult.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/Permission/Write-TestPermissionResult.ps1 @@ -1,4 +1,7 @@ -function Write-TestPermissionResult { +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. + +function Write-TestPermissionResult { [CmdletBinding()] param ( [Parameter(ValueFromPipeline = $true)] @@ -25,4 +28,4 @@ Write-Host ".\SourceSideValidations.ps1 -RemoveInvalidPermissions" -ForegroundColor Green } } -} \ No newline at end of file +} From cef43be020e1345f7275a0aa20bf389d6be083cc Mon Sep 17 00:00:00 2001 From: Bill Long Date: Thu, 29 Jul 2021 13:50:32 -0700 Subject: [PATCH 14/34] Prevent unwanted output to pipeline --- .../src/SourceSideValidations/Get-ItemCount.ps1 | 12 ++++-------- .../src/SourceSideValidations/Get-ItemCountJob.ps1 | 3 ++- .../SourceSideValidations/SourceSideValidations.ps1 | 8 ++++---- 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/PublicFolders/src/SourceSideValidations/Get-ItemCount.ps1 b/PublicFolders/src/SourceSideValidations/Get-ItemCount.ps1 index 444687466c..3e0c9359de 100644 --- a/PublicFolders/src/SourceSideValidations/Get-ItemCount.ps1 +++ b/PublicFolders/src/SourceSideValidations/Get-ItemCount.ps1 @@ -62,14 +62,14 @@ function Get-ItemCount { for ($i = 0; $i -lt $mailboxBatchCount; $i++) { $batch = $group.Group | Select-Object -First $batchSize -Skip ($batchSize * $i) $argumentList = $server, $group.Name, $batch - $jobsForThisMailbox.Add(@{ + [void]$jobsForThisMailbox.Add(@{ ArgumentList = $argumentList Name = "Item Count $($group.Name) Job $($i + 1)" ScriptBlock = ${Function:Get-ItemCountJob} }) } - $jobsToCreate.Add($group.Name, $jobsForThisMailbox) + [void]$jobsToCreate.Add($group.Name, $jobsForThisMailbox) } # Add the jobs by round-robin among the mailboxes so we don't execute all jobs @@ -90,15 +90,13 @@ function Get-ItemCount { $index++ } while ($jobsAddedThisRound -gt 0) - $foldersDone = 0 Wait-QueuedJob | ForEach-Object { - $foldersDone += $_.ItemCounts.Count - Write-Verbose "Retrieved item counts for $foldersDone folders so far..." $itemCounts.AddRange($_.ItemCounts) $errors.AddRange($_.Errors) + Write-Verbose "Retrieved item counts for $($itemCounts.Count) folders so far. $($errors.Count) errors encountered." if ($_.ItemCounts.Count -gt 0) { - $_.ItemCounts | Export-Csv -Path $progressFile -Append + $_.ItemCounts | Export-Csv -Path $progressFile -Append -Force } } } @@ -107,8 +105,6 @@ function Get-ItemCount { end { Write-Progress @progressParams -Completed - Remove-Item $progressFile - return [PSCustomObject]@{ ItemCounts = $itemCounts Errors = $errors diff --git a/PublicFolders/src/SourceSideValidations/Get-ItemCountJob.ps1 b/PublicFolders/src/SourceSideValidations/Get-ItemCountJob.ps1 index a579825cf7..16e9f9517b 100644 --- a/PublicFolders/src/SourceSideValidations/Get-ItemCountJob.ps1 +++ b/PublicFolders/src/SourceSideValidations/Get-ItemCountJob.ps1 @@ -34,6 +34,7 @@ function Get-ItemCountJob { } process { + $ErrorActionPreference = "Stop" # So our try/catch works $itemCounts = New-Object System.Collections.ArrayList foreach ($folder in $Folders) { $progressCount++ @@ -73,7 +74,7 @@ function Get-ItemCountJob { ResultData = $_.ToString() } - [void]$errors.Add($error) + [void]$errors.Add($errorReport) } } } diff --git a/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 b/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 index 828670e662..b30036846f 100644 --- a/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 +++ b/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 @@ -73,13 +73,13 @@ $startTime = Get-Date $startingErrorCount = $Error.Count -Set-ADServerSettings -ViewEntireForest $true - -if ($Error.Count -gt $startingErrorCount) { - # If we already have errors, we're not running from the right shell. +if ($null -eq (Get-Command Set-ADServerSettings -ErrorAction:SilentlyContinue)) { + Write-Warning "Exchange Server cmdlets are not present in this shell." return } +Set-ADServerSettings -ViewEntireForest $true + $progressParams = @{ Activity = "Validating public folders" Id = 1 From 60d1c7d2b2a84c445e68597de82994bb61a09a98 Mon Sep 17 00:00:00 2001 From: Bill Long Date: Thu, 29 Jul 2021 13:51:23 -0700 Subject: [PATCH 15/34] Set debug config to interactive console for local debug --- .vscode/launch.json | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 .vscode/launch.json diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000000..c1b568acea --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,14 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "PowerShell: Interactive Session", + "type": "PowerShell", + "request": "launch", + "cwd": "" + } + ] +} \ No newline at end of file From 8262cfdfef120bdc41c4abd27b0b508abff2b3f1 Mon Sep 17 00:00:00 2001 From: Bill Long Date: Thu, 29 Jul 2021 19:46:15 -0700 Subject: [PATCH 16/34] Take pipeline input to New-TestResult --- .../SourceSideValidations/Tests/New-TestResult.ps1 | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/PublicFolders/src/SourceSideValidations/Tests/New-TestResult.ps1 b/PublicFolders/src/SourceSideValidations/Tests/New-TestResult.ps1 index 9ef26a9d1f..62ca9acf13 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/New-TestResult.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/New-TestResult.ps1 @@ -4,28 +4,28 @@ function New-TestResult { [CmdletBinding()] param ( - [Parameter(Mandatory = $true)] + [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true)] [string] $TestName, - [Parameter(Mandatory = $true)] + [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true)] [string] $ResultType, - [Parameter(Mandatory = $true)] + [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true)] [ValidateSet("Information", "Warning", "Error")] [string] $Severity, - [Parameter()] + [Parameter(ValueFromPipelineByPropertyName = $true)] [string] $FolderIdentity, - [Parameter()] + [Parameter(ValueFromPipelineByPropertyName = $true)] [string] $FolderEntryId, - [Parameter()] + [Parameter(ValueFromPipelineByPropertyName = $true)] [string] $ResultData ) From a29a7f70c15ce563ab52f9aa4ddff5d55c17882b Mon Sep 17 00:00:00 2001 From: Bill Long Date: Thu, 2 Sep 2021 19:59:13 -0700 Subject: [PATCH 17/34] PSScriptAnalyzer fixes --- .../SourceSideValidations/Get-IpmSubtree.ps1 | 1 - .../Get-NonIpmSubtree.ps1 | 1 - .../src/SourceSideValidations/JobQueue.ps1 | 1 - .../SourceSideValidations.ps1 | 2 -- .../DumpsterMapping/Test-DumpsterMapping.ps1 | 6 +++--- .../Tests/Limit/Test-FolderLimit.ps1 | 5 ----- .../Test-MailEnabledFolder.ps1 | 18 +++++++++--------- .../Tests/New-TestResult.ps1 | 17 ++++++++++------- .../Tests/Permission/Test-PermissionJob.ps1 | 2 -- 9 files changed, 22 insertions(+), 31 deletions(-) diff --git a/PublicFolders/src/SourceSideValidations/Get-IpmSubtree.ps1 b/PublicFolders/src/SourceSideValidations/Get-IpmSubtree.ps1 index fbc08ad3ec..2f17abd97f 100644 --- a/PublicFolders/src/SourceSideValidations/Get-IpmSubtree.ps1 +++ b/PublicFolders/src/SourceSideValidations/Get-IpmSubtree.ps1 @@ -71,7 +71,6 @@ function Get-IpmSubtree { process { $progressCount++ - $currentFolder = $Folder.Identity.ToString() if ($sw.ElapsedMilliseconds -gt 1000) { $sw.Restart() diff --git a/PublicFolders/src/SourceSideValidations/Get-NonIpmSubtree.ps1 b/PublicFolders/src/SourceSideValidations/Get-NonIpmSubtree.ps1 index d4df9f3d85..52cef1dbb3 100644 --- a/PublicFolders/src/SourceSideValidations/Get-NonIpmSubtree.ps1 +++ b/PublicFolders/src/SourceSideValidations/Get-NonIpmSubtree.ps1 @@ -71,7 +71,6 @@ function Get-NonIpmSubtree { process { $progressCount++ - $currentFolder = $Folder.Identity.ToString() if ($sw.ElapsedMilliseconds -gt 1000) { $sw.Restart() Write-Progress @progressParams -Status $progressCount diff --git a/PublicFolders/src/SourceSideValidations/JobQueue.ps1 b/PublicFolders/src/SourceSideValidations/JobQueue.ps1 index cd75db87dd..c8ff2a8e78 100644 --- a/PublicFolders/src/SourceSideValidations/JobQueue.ps1 +++ b/PublicFolders/src/SourceSideValidations/JobQueue.ps1 @@ -32,7 +32,6 @@ function Wait-QueuedJob { begin { $jobsRunning = @() - $jobResults = @() $jobQueueMaxConcurrency = 5 } diff --git a/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 b/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 index b30036846f..557f834a06 100644 --- a/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 +++ b/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 @@ -71,8 +71,6 @@ if ($RemoveInvalidPermissions) { $startTime = Get-Date -$startingErrorCount = $Error.Count - if ($null -eq (Get-Command Set-ADServerSettings -ErrorAction:SilentlyContinue)) { Write-Warning "Exchange Server cmdlets are not present in this shell." return diff --git a/PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/Test-DumpsterMapping.ps1 b/PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/Test-DumpsterMapping.ps1 index 337c21b40c..01adb44746 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/Test-DumpsterMapping.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/Test-DumpsterMapping.ps1 @@ -46,7 +46,7 @@ function Test-DumpsterMapping { } } - function New-TestDumpsterMappingResult { + function NewTestDumpsterMappingResult { [CmdletBinding()] param ( [Parameter(Position = 0)] @@ -87,7 +87,7 @@ function Test-DumpsterMapping { } if (-not (Test-DumpsterValid $_ $FolderData)) { - New-TestDumpsterMappingResult $_ + NewTestDumpsterMappingResult $_ } } @@ -95,7 +95,7 @@ function Test-DumpsterMapping { $FolderData.NonIpmSubtree | Where-Object { $_.Identity -like "\NON_IPM_SUBTREE\EFORMS REGISTRY\*" } | ForEach-Object { if (-not (Test-DumpsterValid $_ $FolderData)) { - New-TestDumpsterMappingResult $_ + NewTestDumpsterMappingResult $_ } } } diff --git a/PublicFolders/src/SourceSideValidations/Tests/Limit/Test-FolderLimit.ps1 b/PublicFolders/src/SourceSideValidations/Tests/Limit/Test-FolderLimit.ps1 index bbfae800d5..9e5442d6c4 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/Limit/Test-FolderLimit.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/Limit/Test-FolderLimit.ps1 @@ -19,11 +19,6 @@ function Test-FolderLimit { begin { $startTime = Get-Date $progressCount = 0 - $limitsExceeded = [PSCustomObject]@{ - ChildCount = @() - FolderPathDepth = @() - ItemCount = @() - } $sw = New-Object System.Diagnostics.Stopwatch $sw.Start() $progressParams = @{ diff --git a/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Test-MailEnabledFolder.ps1 b/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Test-MailEnabledFolder.ps1 index 5f76739865..da96be1e61 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Test-MailEnabledFolder.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/MailEnabledFolder/Test-MailEnabledFolder.ps1 @@ -28,7 +28,7 @@ function Test-MailEnabledFolder { } } - function New-TestMailEnabledFolderResult { + function NewTestMailEnabledFolderResult { [CmdletBinding()] param ( [Parameter(Position = 0)] @@ -76,7 +76,7 @@ function Test-MailEnabledFolder { } process { - $FolderData.NonIpmSubtree | Where-Object { $_.MailEnabled -eq $true } | ForEach-Object { New-TestMailEnabledFolderResult $_.Identity $_.EntryId "MailEnabledSystemFolder" } + $FolderData.NonIpmSubtree | Where-Object { $_.MailEnabled -eq $true } | ForEach-Object { NewTestMailEnabledFolderResult -Identity $_.Identity -EntryId $_.EntryId -ResultType "MailEnabledSystemFolder" } $ipmSubtreeMailEnabled = @($FolderData.IpmSubtree | Where-Object { $_.MailEnabled -eq $true }) $mailDisabledWithProxyGuid = @($FolderData.IpmSubtree | Where-Object { $_.MailEnabled -ne $true -and -not [string]::IsNullOrEmpty($_.MailRecipientGuid) -and [Guid]::Empty -ne $_.MailRecipientGuid } | ForEach-Object { $_.Identity.ToString() }) $mailDisabledWithProxyGuid | ForEach-Object { @@ -86,7 +86,7 @@ function Test-MailEnabledFolder { ResultType = "MailDisabledWithProxyGuid" } - New-TestMailEnabledFolderResult @params + NewTestMailEnabledFolderResult @params } @@ -109,7 +109,7 @@ function Test-MailEnabledFolder { ResultType = "MailEnabledWithNoADObject" } - New-TestMailEnabledFolderResult @params + NewTestMailEnabledFolderResult @params } else { $guidString = $result.Guid.ToString() if (-not $mailPublicFoldersLinked.ContainsKey($guidString)) { @@ -177,7 +177,7 @@ function Test-MailEnabledFolder { ResultData = $command } - New-TestMailEnabledFolderResult @params + NewTestMailEnabledFolderResult @params } else { $params = @{ Identity = $thisMPF.DistinguishedName.Replace("/", "\/") @@ -185,7 +185,7 @@ function Test-MailEnabledFolder { ResultType = "OrphanedMPFDisconnected" } - New-TestMailEnabledFolderResult @params + NewTestMailEnabledFolderResult @params } continue @@ -207,7 +207,7 @@ function Test-MailEnabledFolder { $params.ResultData = $command } - New-TestMailEnabledFolderResult @params + NewTestMailEnabledFolderResult @params } else { $params = @{ Identity = $thisMPF.DistinguishedName.Replace("/", "\/") @@ -215,7 +215,7 @@ function Test-MailEnabledFolder { ResultType = "OrphanedMPFDisconnected" } - New-TestMailEnabledFolderResult @params + NewTestMailEnabledFolderResult @params } } else { $params = @{ @@ -224,7 +224,7 @@ function Test-MailEnabledFolder { ResultType = "OrphanedMPF" } - New-TestMailEnabledFolderResult @params + NewTestMailEnabledFolderResult @params } } } diff --git a/PublicFolders/src/SourceSideValidations/Tests/New-TestResult.ps1 b/PublicFolders/src/SourceSideValidations/Tests/New-TestResult.ps1 index 62ca9acf13..defed0fc12 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/New-TestResult.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/New-TestResult.ps1 @@ -2,6 +2,7 @@ # Licensed under the MIT License. function New-TestResult { + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '', Justification = 'No state change.')] [CmdletBinding()] param ( [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true)] @@ -30,12 +31,14 @@ function New-TestResult { $ResultData ) - [PSCustomObject]@{ - TestName = $TestName - ResultType = $ResultType - Severity = $Severity - FolderIdentity = $FolderIdentity - FolderEntryId = $FolderEntryId - ResultData = $ResultData + process { + [PSCustomObject]@{ + TestName = $TestName + ResultType = $ResultType + Severity = $Severity + FolderIdentity = $FolderIdentity + FolderEntryId = $FolderEntryId + ResultData = $ResultData + } } } diff --git a/PublicFolders/src/SourceSideValidations/Tests/Permission/Test-PermissionJob.ps1 b/PublicFolders/src/SourceSideValidations/Tests/Permission/Test-PermissionJob.ps1 index c5f7ceda07..970fbe66d6 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/Permission/Test-PermissionJob.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/Permission/Test-PermissionJob.ps1 @@ -22,7 +22,6 @@ function Test-BadPermissionJob { Import-PSSession (New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "http://$Server/powershell" -Authentication Kerberos) | Out-Null $startTime = Get-Date $progressCount = 0 - $badPermissions = @() $sw = New-Object System.Diagnostics.Stopwatch $sw.Start() $progressParams = @{ @@ -65,7 +64,6 @@ function Test-BadPermissionJob { end { Write-Progress @progressParams -Completed - $duration = ((Get-Date) - $startTime) [PSCustomObject]@{ TestName = "Permission" ResultType = "$Mailbox Duration" From ec37d436cdd82f6c5382a7c6affadd63e5fabd5b Mon Sep 17 00:00:00 2001 From: Bill Long Date: Thu, 2 Sep 2021 21:21:53 -0700 Subject: [PATCH 18/34] Remove the item count progress file --- PublicFolders/src/SourceSideValidations/Get-ItemCount.ps1 | 8 -------- 1 file changed, 8 deletions(-) diff --git a/PublicFolders/src/SourceSideValidations/Get-ItemCount.ps1 b/PublicFolders/src/SourceSideValidations/Get-ItemCount.ps1 index 3e0c9359de..32e8332649 100644 --- a/PublicFolders/src/SourceSideValidations/Get-ItemCount.ps1 +++ b/PublicFolders/src/SourceSideValidations/Get-ItemCount.ps1 @@ -21,10 +21,6 @@ function Get-ItemCount { begin { Write-Verbose "$($MyInvocation.MyCommand) called." - $progressFile = Join-Path $PSScriptRoot "ItemCountProgress.csv" - if (Test-Path $progressFile) { - Remove-Item $progressFile - } $progressCount = 0 $sw = New-Object System.Diagnostics.Stopwatch @@ -94,10 +90,6 @@ function Get-ItemCount { $itemCounts.AddRange($_.ItemCounts) $errors.AddRange($_.Errors) Write-Verbose "Retrieved item counts for $($itemCounts.Count) folders so far. $($errors.Count) errors encountered." - - if ($_.ItemCounts.Count -gt 0) { - $_.ItemCounts | Export-Csv -Path $progressFile -Append -Force - } } } } From 23fb742a6644bff58c23009013836897a744d902 Mon Sep 17 00:00:00 2001 From: Bill Long Date: Fri, 3 Sep 2021 05:42:57 -0700 Subject: [PATCH 19/34] Add a little whitespace --- .../src/SourceSideValidations/SourceSideValidations.ps1 | 1 + 1 file changed, 1 insertion(+) diff --git a/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 b/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 index 557f834a06..17cbf030c7 100644 --- a/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 +++ b/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 @@ -56,6 +56,7 @@ if ($SummarizePreviousResults) { $results | Write-TestFolderLimitResult $results | Write-TestMailEnabledFolderResult $results | Write-TestPermissionResult + Write-Host return } From a16ca56af9dd1c8873486d2a3e69350208f66cf1 Mon Sep 17 00:00:00 2001 From: Bill Long Date: Fri, 3 Sep 2021 06:20:39 -0700 Subject: [PATCH 20/34] Add folder name check --- .../SourceSideValidations/Get-IpmSubtree.ps1 | 1 + .../SourceSideValidations.ps1 | 18 ++++-- .../Tests/Name/AllFunctions.ps1 | 5 ++ .../Tests/Name/Test-FolderName.ps1 | 60 +++++++++++++++++++ .../Tests/Name/Write-TestFolderNameResult.ps1 | 32 ++++++++++ 5 files changed, 111 insertions(+), 5 deletions(-) create mode 100644 PublicFolders/src/SourceSideValidations/Tests/Name/AllFunctions.ps1 create mode 100644 PublicFolders/src/SourceSideValidations/Tests/Name/Test-FolderName.ps1 create mode 100644 PublicFolders/src/SourceSideValidations/Tests/Name/Write-TestFolderNameResult.ps1 diff --git a/PublicFolders/src/SourceSideValidations/Get-IpmSubtree.ps1 b/PublicFolders/src/SourceSideValidations/Get-IpmSubtree.ps1 index 2f17abd97f..d29e95e3bc 100644 --- a/PublicFolders/src/SourceSideValidations/Get-IpmSubtree.ps1 +++ b/PublicFolders/src/SourceSideValidations/Get-IpmSubtree.ps1 @@ -78,6 +78,7 @@ function Get-IpmSubtree { } $result = [PSCustomObject]@{ + Name = $Folder.Name Identity = $Folder.Identity.ToString() EntryId = $Folder.EntryId.ToString() ParentEntryId = $Folder.ParentFolder.ToString() diff --git a/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 b/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 index 17cbf030c7..8bd1ad0207 100644 --- a/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 +++ b/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 @@ -36,6 +36,7 @@ param ( . $PSScriptRoot\Tests\DumpsterMapping\AllFunctions.ps1 . $PSScriptRoot\Tests\Limit\AllFunctions.ps1 +. $PSScriptRoot\Tests\Name\AllFunctions.ps1 . $PSScriptRoot\Tests\MailEnabledFolder\AllFunctions.ps1 . $PSScriptRoot\Tests\Permission\AllFunctions.ps1 . $PSScriptRoot\Get-FolderData.ps1 @@ -54,6 +55,7 @@ if ($SummarizePreviousResults) { $results = Import-Csv $ResultsFile $results | Write-TestDumpsterMappingResult $results | Write-TestFolderLimitResult + $results | Write-TestFolderNameResult $results | Write-TestMailEnabledFolderResult $results | Write-TestPermissionResult Write-Host @@ -84,7 +86,7 @@ $progressParams = @{ Id = 1 } -Write-Progress @progressParams -Status "Step 1 of 5" +Write-Progress @progressParams -Status "Step 1 of 6" $folderData = Get-FolderData -StartFresh $StartFresh -SlowTraversal $SlowTraversal @@ -126,23 +128,28 @@ if ($folderData.Errors.Count -gt 0) { $folderData.Errors | Export-Csv $ResultsFile -NoTypeInformation } -Write-Progress @progressParams -Status "Step 2 of 5" +Write-Progress @progressParams -Status "Step 2 of 6" $badDumpsters = Test-DumpsterMapping -FolderData $folderData $badDumpsters | Export-Csv $ResultsFile -NoTypeInformation -Append -Write-Progress @progressParams -Status "Step 3 of 5" +Write-Progress @progressParams -Status "Step 3 of 6" $limitsExceeded = Test-FolderLimit -FolderData $folderData $limitsExceeded | Export-Csv $ResultsFile -NoTypeInformation -Append -Write-Progress @progressParams -Status "Step 4 of 5" +Write-Progress @progressParams -Status "Step 4 of 6" + +$badNames = Test-FolderName -FolderData $folderData +$badNames | Export-Csv $ResultsFile -NoTypeInformation -Append + +Write-Progress @progressParams -Status "Step 5 of 6" $badMailEnabled = Test-MailEnabledFolder -FolderData $folderData $badMailEnabled | Export-Csv $ResultsFile -NoTypeInformation -Append if (-not $SkipPermissionValidation) { - Write-Progress @progressParams -Status "Step 5 of 5" + Write-Progress @progressParams -Status "Step 6 of 6" $badPermissions = Test-Permission -FolderData $folderData $badPermissions | Export-Csv $ResultsFile -NoTypeInformation -Append @@ -152,6 +159,7 @@ if (-not $SkipPermissionValidation) { $badDumpsters | Write-TestDumpsterMappingResult $limitsExceeded | Write-TestFolderLimitResult +$badNames | Write-TestFolderNameResult $badMailEnabled | Write-TestMailEnabledFolderResult $badPermissions | Write-TestPermissionResult diff --git a/PublicFolders/src/SourceSideValidations/Tests/Name/AllFunctions.ps1 b/PublicFolders/src/SourceSideValidations/Tests/Name/AllFunctions.ps1 new file mode 100644 index 0000000000..245075fd6f --- /dev/null +++ b/PublicFolders/src/SourceSideValidations/Tests/Name/AllFunctions.ps1 @@ -0,0 +1,5 @@ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. + +. $PSScriptRoot\Test-FolderName.ps1 +. $PSScriptRoot\Write-TestFolderNameResult.ps1 diff --git a/PublicFolders/src/SourceSideValidations/Tests/Name/Test-FolderName.ps1 b/PublicFolders/src/SourceSideValidations/Tests/Name/Test-FolderName.ps1 new file mode 100644 index 0000000000..5d1216cf93 --- /dev/null +++ b/PublicFolders/src/SourceSideValidations/Tests/Name/Test-FolderName.ps1 @@ -0,0 +1,60 @@ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. + +function Test-FolderName { + [CmdletBinding()] + param ( + [Parameter()] + [PSObject] + $FolderData + ) + + begin { + $startTime = Get-Date + $progressCount = 0 + $sw = New-Object System.Diagnostics.Stopwatch + $sw.Start() + $progressParams = @{ + Activity = "Checking names" + Id = 2 + ParentId = 1 + } + $testResultParams = @{ + TestName = "FolderName" + Severity = "Error" + ResultType = "SpecialCharacters" + } + } + + process { + $FolderData.IpmSubtree | ForEach-Object { + $progressCount++ + if ($sw.ElapsedMilliseconds -gt 1000) { + $sw.Restart() + Write-Progress @progressParams -Status $progressCount -PercentComplete ($progressCount * 100 / $FolderData.IpmSubtree.Count) + } + + if ($_.Name -match "@|/|\\") { + $testResultParams.FolderIdentity = $_.Identity.ToString() + $testResultParams.FolderEntryId = $_.EntryId.ToString() + $testResultParams.ResultData = $_.Name + New-TestResult @testResultParams + } + } + } + + end { + Write-Progress @progressParams -Completed + + $params = @{ + TestName = $testResultParams.TestName + ResultType = "Duration" + Severity = "Information" + FolderIdentity = "" + FolderEntryId = "" + ResultData = ((Get-Date) - $startTime) + } + + New-TestResult @params + } +} diff --git a/PublicFolders/src/SourceSideValidations/Tests/Name/Write-TestFolderNameResult.ps1 b/PublicFolders/src/SourceSideValidations/Tests/Name/Write-TestFolderNameResult.ps1 new file mode 100644 index 0000000000..c95ccdeef7 --- /dev/null +++ b/PublicFolders/src/SourceSideValidations/Tests/Name/Write-TestFolderNameResult.ps1 @@ -0,0 +1,32 @@ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. + +function Write-TestFolderNameResult { + [CmdletBinding()] + param ( + [Parameter(ValueFromPipeline = $true)] + [object] + $TestResult + ) + + begin { + $badNames = New-Object System.Collections.ArrayList + } + + process { + if ($TestResult.Name -eq "FolderName" -and $TestResult.ResultType -eq "SpecialCharacters") { + $badNames += $TestResult + } + } + + end { + if ($badNames.Count -gt 0) { + Write-Host + Write-Host $badNames.Count "folders have characters @, /, or \ in the folder name." + Write-Host "These are shown in the results CSV with a result type of SpecialCharacters." + Write-Host "These folders should be renamed prior to migrating. The following command" + Write-Host "can be used:" + Write-Host "Import-Csv .\ValidationResults.csv | ? ResultType -eq SpecialCharacters | % { Set-PublicFolder `$_.FolderEntryId -Name (`$_.ResultData -replace `"@|/|\\`") }" -ForegroundColor Green + } + } +} From ee2ebf457a2f3dd1a206cf15b78c5df51809b713 Mon Sep 17 00:00:00 2001 From: Bill Long Date: Fri, 3 Sep 2021 06:55:22 -0700 Subject: [PATCH 21/34] Allow specifying which tests to run --- .../SourceSideValidations.ps1 | 41 +++++++++++-------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 b/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 index 8bd1ad0207..8e0592dc5d 100644 --- a/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 +++ b/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 @@ -29,9 +29,10 @@ param ( [switch] $SkipVersionCheck, - [Parameter()] - [switch] - $SkipPermissionValidation + [Parameter(Mandatory = $false, ParameterSetName = "Default")] + [ValidateSet("Dumpsters", "Limits", "Names", "MailEnabled", "Permissions")] + [string[]] + $Tests = @("Dumpsters", "Limits", "Names", "MailEnabled", "Permissions") ) . $PSScriptRoot\Tests\DumpsterMapping\AllFunctions.ps1 @@ -128,27 +129,35 @@ if ($folderData.Errors.Count -gt 0) { $folderData.Errors | Export-Csv $ResultsFile -NoTypeInformation } -Write-Progress @progressParams -Status "Step 2 of 6" +if ("Dumpsters" -in $Tests) { + Write-Progress @progressParams -Status "Step 2 of 6" -$badDumpsters = Test-DumpsterMapping -FolderData $folderData -$badDumpsters | Export-Csv $ResultsFile -NoTypeInformation -Append + $badDumpsters = Test-DumpsterMapping -FolderData $folderData + $badDumpsters | Export-Csv $ResultsFile -NoTypeInformation -Append +} -Write-Progress @progressParams -Status "Step 3 of 6" +if ("Limits" -in $Tests) { + Write-Progress @progressParams -Status "Step 3 of 6" -$limitsExceeded = Test-FolderLimit -FolderData $folderData -$limitsExceeded | Export-Csv $ResultsFile -NoTypeInformation -Append + $limitsExceeded = Test-FolderLimit -FolderData $folderData + $limitsExceeded | Export-Csv $ResultsFile -NoTypeInformation -Append +} -Write-Progress @progressParams -Status "Step 4 of 6" +if ("Names" -in $Tests) { + Write-Progress @progressParams -Status "Step 4 of 6" -$badNames = Test-FolderName -FolderData $folderData -$badNames | Export-Csv $ResultsFile -NoTypeInformation -Append + $badNames = Test-FolderName -FolderData $folderData + $badNames | Export-Csv $ResultsFile -NoTypeInformation -Append +} -Write-Progress @progressParams -Status "Step 5 of 6" +if ("MailEnabled" -in $Tests) { + Write-Progress @progressParams -Status "Step 5 of 6" -$badMailEnabled = Test-MailEnabledFolder -FolderData $folderData -$badMailEnabled | Export-Csv $ResultsFile -NoTypeInformation -Append + $badMailEnabled = Test-MailEnabledFolder -FolderData $folderData + $badMailEnabled | Export-Csv $ResultsFile -NoTypeInformation -Append +} -if (-not $SkipPermissionValidation) { +if ("Permissions" -in $Tests) { Write-Progress @progressParams -Status "Step 6 of 6" $badPermissions = Test-Permission -FolderData $folderData From 0a7c57e1279b7361c371a86458b645b24cea0de4 Mon Sep 17 00:00:00 2001 From: Bill Long Date: Fri, 3 Sep 2021 06:55:36 -0700 Subject: [PATCH 22/34] Fix dumpster result bug --- .../Tests/DumpsterMapping/Write-TestDumpsterMappingResult.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/Write-TestDumpsterMappingResult.ps1 b/PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/Write-TestDumpsterMappingResult.ps1 index b3f4c4573e..a20029ab1b 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/Write-TestDumpsterMappingResult.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/DumpsterMapping/Write-TestDumpsterMappingResult.ps1 @@ -14,7 +14,7 @@ function Write-TestDumpsterMappingResult { } process { - if ($TestResult.Name -eq "DumpsterMapping" -and $TestResult.ResultType -eq "BadDumpsterMapping") { + if ($TestResult.TestName -eq "DumpsterMapping" -and $TestResult.ResultType -eq "BadDumpsterMapping") { $badDumpsters += $TestResult } } From e36366e27d755ade42fdd56437eb2966148f6f8b Mon Sep 17 00:00:00 2001 From: Bill Long Date: Fri, 3 Sep 2021 06:55:49 -0700 Subject: [PATCH 23/34] Fix name result bug --- .../Tests/Name/Write-TestFolderNameResult.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PublicFolders/src/SourceSideValidations/Tests/Name/Write-TestFolderNameResult.ps1 b/PublicFolders/src/SourceSideValidations/Tests/Name/Write-TestFolderNameResult.ps1 index c95ccdeef7..90218a2ed9 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/Name/Write-TestFolderNameResult.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/Name/Write-TestFolderNameResult.ps1 @@ -14,7 +14,7 @@ function Write-TestFolderNameResult { } process { - if ($TestResult.Name -eq "FolderName" -and $TestResult.ResultType -eq "SpecialCharacters") { + if ($TestResult.TestName -eq "FolderName" -and $TestResult.ResultType -eq "SpecialCharacters") { $badNames += $TestResult } } From d68f65a76b9cab327e193f98f8f32800203f4407 Mon Sep 17 00:00:00 2001 From: Bill Long Date: Fri, 3 Sep 2021 07:39:46 -0700 Subject: [PATCH 24/34] Accurately calculate folder path depth --- .../src/SourceSideValidations/Get-FolderData.ps1 | 12 ++++++++++++ .../src/SourceSideValidations/Get-IpmSubtree.ps1 | 1 - 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/PublicFolders/src/SourceSideValidations/Get-FolderData.ps1 b/PublicFolders/src/SourceSideValidations/Get-FolderData.ps1 index f95fc99e15..4dc2afe761 100644 --- a/PublicFolders/src/SourceSideValidations/Get-FolderData.ps1 +++ b/PublicFolders/src/SourceSideValidations/Get-FolderData.ps1 @@ -91,6 +91,18 @@ function Get-FolderData { $folderData.IpmSubtreeByMailbox = $folderData.IpmSubtree | Group-Object ContentMailbox $folderData.IpmSubtree | ForEach-Object { $folderData.ParentEntryIdCounts[$_.ParentEntryId] += 1 } $folderData.IpmSubtree | ForEach-Object { $folderData.EntryIdDictionary[$_.EntryId] = $_ } + # We can't count on $folder.Path.Depth being available in remote powershell, + # so we calculate the depth by walking the parent entry IDs. + $folderData.IpmSubtree | ForEach-Object { + $pathDepth = 1 + $parent = $folderData.EntryIdDictionary[$_.ParentEntryId] + while ($null -ne $parent) { + $pathDepth++ + $parent = $folderData.EntryIdDictionary[$parent.ParentEntryId] + } + + Add-Member -InputObject $_ -MemberType NoteProperty -Name FolderPathDepth -Value $pathDepth + } $folderData.NonIpmSubtree | ForEach-Object { $folderData.NonIpmEntryIdDictionary[$_.EntryId] = $_ } # If we're doing slow traversal, we have to get the stats after we have the hierarchy diff --git a/PublicFolders/src/SourceSideValidations/Get-IpmSubtree.ps1 b/PublicFolders/src/SourceSideValidations/Get-IpmSubtree.ps1 index d29e95e3bc..6086251a77 100644 --- a/PublicFolders/src/SourceSideValidations/Get-IpmSubtree.ps1 +++ b/PublicFolders/src/SourceSideValidations/Get-IpmSubtree.ps1 @@ -83,7 +83,6 @@ function Get-IpmSubtree { EntryId = $Folder.EntryId.ToString() ParentEntryId = $Folder.ParentFolder.ToString() DumpsterEntryId = if ($Folder.DumpsterEntryId) { $Folder.DumpsterEntryId.ToString() } else { $null } - FolderPathDepth = $Folder.Identity.ToString().Split("\").Count - 1 # Naive path depth implementation as Depth is not available without rehydration FolderSize = $Folder.FolderSize HasSubfolders = $Folder.HasSubfolders ContentMailbox = $Folder.ContentMailboxName From 0b5ac7736e6fda54482658756b6a3a2c1a7a6436 Mon Sep 17 00:00:00 2001 From: Bill Long Date: Fri, 3 Sep 2021 08:22:17 -0700 Subject: [PATCH 25/34] Fix path depth calculation off by one --- PublicFolders/src/SourceSideValidations/Get-FolderData.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PublicFolders/src/SourceSideValidations/Get-FolderData.ps1 b/PublicFolders/src/SourceSideValidations/Get-FolderData.ps1 index 4dc2afe761..74c8d0f84a 100644 --- a/PublicFolders/src/SourceSideValidations/Get-FolderData.ps1 +++ b/PublicFolders/src/SourceSideValidations/Get-FolderData.ps1 @@ -94,7 +94,7 @@ function Get-FolderData { # We can't count on $folder.Path.Depth being available in remote powershell, # so we calculate the depth by walking the parent entry IDs. $folderData.IpmSubtree | ForEach-Object { - $pathDepth = 1 + $pathDepth = 0 $parent = $folderData.EntryIdDictionary[$_.ParentEntryId] while ($null -ne $parent) { $pathDepth++ From 8e63842e7026e882ce25b4b9ca46d4ae08252e42 Mon Sep 17 00:00:00 2001 From: Bill Long Date: Fri, 3 Sep 2021 08:23:04 -0700 Subject: [PATCH 26/34] Report folders that are completely empty including their subfolders --- .../SourceSideValidations.ps1 | 3 +- .../Tests/Limit/Test-FolderLimit.ps1 | 53 +++++++++++-------- .../Limit/Write-TestFolderLimitResult.ps1 | 9 ++++ 3 files changed, 42 insertions(+), 23 deletions(-) diff --git a/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 b/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 index 8e0592dc5d..00a8e7e107 100644 --- a/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 +++ b/PublicFolders/src/SourceSideValidations/SourceSideValidations.ps1 @@ -139,7 +139,8 @@ if ("Dumpsters" -in $Tests) { if ("Limits" -in $Tests) { Write-Progress @progressParams -Status "Step 3 of 6" - $limitsExceeded = Test-FolderLimit -FolderData $folderData + # This test emits results in a weird order, so sort them. + $limitsExceeded = Test-FolderLimit -FolderData $folderData | Sort-Object FolderIdentity $limitsExceeded | Export-Csv $ResultsFile -NoTypeInformation -Append } diff --git a/PublicFolders/src/SourceSideValidations/Tests/Limit/Test-FolderLimit.ps1 b/PublicFolders/src/SourceSideValidations/Tests/Limit/Test-FolderLimit.ps1 index 9e5442d6c4..3f5d9e1002 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/Limit/Test-FolderLimit.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/Limit/Test-FolderLimit.ps1 @@ -31,48 +31,57 @@ function Test-FolderLimit { Severity = "Error" } $folderCountMigrationLimit = 250000 + $aggregateChildItemCounts = @{} } process { - $FolderData.IpmSubtree | ForEach-Object { + # We start from the deepest folders and work upwards so we can calculate the aggregate child + # counts in one pass + foreach ($folder in ($FolderData.IpmSubtree | Sort-Object FolderPathDepth -Descending)) { $progressCount++ if ($sw.ElapsedMilliseconds -gt 1000) { $sw.Restart() Write-Progress @progressParams -Status $progressCount -PercentComplete ($progressCount * 100 / $FolderData.IpmSubtree.Count) } - if ($FolderData.ParentEntryIdCounts[$_.EntryId] -gt 10000) { + [int]$itemCount = $FolderData.ItemCountDictionary[$folder.EntryId] + + $parent = $FolderData.EntryIdDictionary[$folder.ParentEntryId] + if ($null -ne $parent) { + $aggregateChildItemCounts[$parent.EntryId] += $itemCount + } + + if ($itemCount -lt 1 -and $aggregateChildItemCounts[$folder.EntryId] -lt 1 -and $folder.FolderPathDepth -gt 0) { + $emptyFolderInformation = @{ + TestName = "Limit" + Severity = "Information" + ResultType = "EmptyFolder" + FolderIdentity = $folder.Identity.ToString() + FolderEntryId = $folder.EntryId.ToString() + } + New-TestResult @emptyFolderInformation + } + + if ($FolderData.ParentEntryIdCounts[$folder.EntryId] -gt 10000) { $testResultParams.ResultType = "ChildCount" - $testResultParams.FolderIdentity = $_.Identity.ToString() - $testResultParams.FolderEntryId = $_.EntryId.ToString() + $testResultParams.FolderIdentity = $folder.Identity.ToString() + $testResultParams.FolderEntryId = $folder.EntryId.ToString() New-TestResult @testResultParams } - if ([int]$_.FolderPathDepth -gt 299) { + if ($folder.FolderPathDepth -gt 299) { $testResultParams.ResultType = "FolderPathDepth" - $testResultParams.FolderIdentity = $_.Identity.ToString() - $testResultParams.FolderEntryId = $_.EntryId.ToString() + $testResultParams.FolderIdentity = $folder.Identity.ToString() + $testResultParams.FolderEntryId = $folder.EntryId.ToString() New-TestResult @testResultParams } - if ($FolderData.ItemCountDictionary[$_.EntryId] -gt 1000000) { + if ($itemCount -gt 1000000) { $testResultParams.ResultType = "ItemCount" - $testResultParams.FolderIdentity = $_.Identity.ToString() - $testResultParams.FolderEntryId = $_.EntryId.ToString() + $testResultParams.FolderIdentity = $folder.Identity.ToString() + $testResultParams.FolderEntryId = $folder.EntryId.ToString() New-TestResult @testResultParams } - - # We have to do a string test against the False value here, because this might have been imported from CSV. - if ($FolderData.ItemCountDictionary[$_.EntryId] -eq 0 -and $_.HasSubfolders.ToString() -eq "False") { - $emptyFolderInformation = @{ - TestName = "Limit" - Severity = "Information" - ResultType = "EmptyFolder" - FolderIdentity = $_.Identity.ToString() - FolderEntryId = $_.EntryId.ToString() - } - New-TestResult @emptyFolderInformation - } } if ($folderData.IpmSubtree.Count -gt $folderCountMigrationLimit) { diff --git a/PublicFolders/src/SourceSideValidations/Tests/Limit/Write-TestFolderLimitResult.ps1 b/PublicFolders/src/SourceSideValidations/Tests/Limit/Write-TestFolderLimitResult.ps1 index 3b056bd9f3..3307808958 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/Limit/Write-TestFolderLimitResult.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/Limit/Write-TestFolderLimitResult.ps1 @@ -13,6 +13,7 @@ function Write-TestFolderLimitResult { $childCount = 0 $folderPathDepth = 0 $itemCount = 0 + $emptyFolders = 0 $hierarchyCount = $null $hierarchyAndDumpsterCount = $null $folderCountMigrationLimit = 250000 @@ -21,6 +22,7 @@ function Write-TestFolderLimitResult { process { if ($TestResult.TestName -eq "Limit") { switch ($TestResult.ResultType) { + "EmptyFolder" { $emptyFolders++ } "ChildCount" { $childCount++ } "FolderPathDepth" { $folderPathDepth++ } "ItemCount" { $itemCount++ } @@ -67,5 +69,12 @@ function Write-TestFolderLimitResult { Write-Host "New-MigrationBatch can be run with the -ExcludeDumpsters switch to skip the dumpster" Write-Host "folders, or public folders may be deleted to reduce the number of folders." } + + if ($emptyFolders -gt 0) { + Write-Host + Write-Host $emptyFolders "folders contain no items and have only empty subfolders." + Write-Host "These folders are shown in the results CSV with a result type of EmptyFolder." + Write-Host "These will not cause a migration issue, but they may be pruned if desired." + } } } From 851cccd930ab52dfa1e916b9946e150adcf8128f Mon Sep 17 00:00:00 2001 From: Bill Long Date: Fri, 3 Sep 2021 08:57:57 -0700 Subject: [PATCH 27/34] Replace problem characters with spaces --- .../Tests/Name/Write-TestFolderNameResult.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PublicFolders/src/SourceSideValidations/Tests/Name/Write-TestFolderNameResult.ps1 b/PublicFolders/src/SourceSideValidations/Tests/Name/Write-TestFolderNameResult.ps1 index 90218a2ed9..39bb06fb44 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/Name/Write-TestFolderNameResult.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/Name/Write-TestFolderNameResult.ps1 @@ -26,7 +26,7 @@ function Write-TestFolderNameResult { Write-Host "These are shown in the results CSV with a result type of SpecialCharacters." Write-Host "These folders should be renamed prior to migrating. The following command" Write-Host "can be used:" - Write-Host "Import-Csv .\ValidationResults.csv | ? ResultType -eq SpecialCharacters | % { Set-PublicFolder `$_.FolderEntryId -Name (`$_.ResultData -replace `"@|/|\\`") }" -ForegroundColor Green + Write-Host "Import-Csv .\ValidationResults.csv | ? ResultType -eq SpecialCharacters | % { Set-PublicFolder `$_.FolderEntryId -Name (`$_.ResultData -replace `"@|/|\\`", `" `").Trim() }" -ForegroundColor Green } } } From 6b333e5beeb0199b05b97ca2fb13172b505eb469 Mon Sep 17 00:00:00 2001 From: Bill Long Date: Fri, 3 Sep 2021 09:10:39 -0700 Subject: [PATCH 28/34] gitignore launch.json --- .vscode/.gitignore | 1 + .vscode/launch.json | 14 -------------- 2 files changed, 1 insertion(+), 14 deletions(-) create mode 100644 .vscode/.gitignore delete mode 100644 .vscode/launch.json diff --git a/.vscode/.gitignore b/.vscode/.gitignore new file mode 100644 index 0000000000..450a23404b --- /dev/null +++ b/.vscode/.gitignore @@ -0,0 +1 @@ +launch.json diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index c1b568acea..0000000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "name": "PowerShell: Interactive Session", - "type": "PowerShell", - "request": "launch", - "cwd": "" - } - ] -} \ No newline at end of file From 62c409fc40a30bdcfc2c2455f85ee1395a7737ef Mon Sep 17 00:00:00 2001 From: Bill Long Date: Fri, 3 Sep 2021 12:21:19 -0700 Subject: [PATCH 29/34] Remove unintended console output --- .../Tests/Permission/Remove-InvalidPermission.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PublicFolders/src/SourceSideValidations/Tests/Permission/Remove-InvalidPermission.ps1 b/PublicFolders/src/SourceSideValidations/Tests/Permission/Remove-InvalidPermission.ps1 index 058fb9e3c1..ac4edcfde4 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/Permission/Remove-InvalidPermission.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/Permission/Remove-InvalidPermission.ps1 @@ -24,7 +24,7 @@ function Remove-InvalidPermission { process { if ($TestResult.TestName -eq "Permission" -and $TestResult.ResultType -eq "BadPermission") { - $badPermissions.Add($TestResult) + [void]$badPermissions.Add($TestResult) } } From 87281e4a27e66f786f8c42ae41202822f4abe90e Mon Sep 17 00:00:00 2001 From: Bill Long Date: Fri, 3 Sep 2021 12:39:01 -0700 Subject: [PATCH 30/34] Move the export operations so they are only called when we actually get new data --- .../src/SourceSideValidations/Get-FolderData.ps1 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/PublicFolders/src/SourceSideValidations/Get-FolderData.ps1 b/PublicFolders/src/SourceSideValidations/Get-FolderData.ps1 index 74c8d0f84a..14e6baa402 100644 --- a/PublicFolders/src/SourceSideValidations/Get-FolderData.ps1 +++ b/PublicFolders/src/SourceSideValidations/Get-FolderData.ps1 @@ -74,20 +74,20 @@ function Get-FolderData { foreach ($job in $completedJobs) { if ($null -ne $job.IpmSubtree) { $folderData.IpmSubtree = $job.IpmSubtree + $folderData.IpmSubtree | Export-Csv $PSScriptRoot\IpmSubtree.csv } if ($null -ne $job.NonIpmSubtree) { $folderData.NonIpmSubtree = $job.NonIpmSubtree + $folderData.NonIpmSubtree | Export-Csv $PSScriptRoot\NonIpmSubtree.csv } if ($null -ne $job.ItemCounts) { $folderData.ItemCounts = $job.ItemCounts + $folderData.ItemCounts | Export-Csv $PSScriptRoot\ItemCounts.csv } } - $folderData.IpmSubtree | Export-Csv $PSScriptRoot\IpmSubtree.csv - $folderData.NonIpmSubtree | Export-Csv $PSScriptRoot\NonIpmSubtree.csv - $folderData.IpmSubtreeByMailbox = $folderData.IpmSubtree | Group-Object ContentMailbox $folderData.IpmSubtree | ForEach-Object { $folderData.ParentEntryIdCounts[$_.ParentEntryId] += 1 } $folderData.IpmSubtree | ForEach-Object { $folderData.EntryIdDictionary[$_.EntryId] = $_ } @@ -114,6 +114,7 @@ function Get-FolderData { Write-Verbose "Starting slow traversal item count." $itemCountResult = Get-ItemCount $serverName $folderData $folderData.ItemCounts = $itemCountResult.ItemCounts + $folderData.ItemCounts | Export-Csv $PSScriptRoot\ItemCounts.csv foreach ($errorParam in $itemCountResult.Errors) { $errorResult = New-TestResult @errorParam $folderData.Errors.Add($errorResult) @@ -122,7 +123,6 @@ function Get-FolderData { } $folderData.ItemCounts | ForEach-Object { $folderData.ItemCountDictionary[$_.EntryId] = $_.ItemCount } - $folderData.ItemCounts | Export-Csv $PSScriptRoot\ItemCounts.csv } end { From abeff172c32418eb0d28faa320f1605ba596e313 Mon Sep 17 00:00:00 2001 From: Bill Long Date: Fri, 3 Sep 2021 12:42:15 -0700 Subject: [PATCH 31/34] Faster approach to suppressing output --- PublicFolders/src/SourceSideValidations/Get-IpmSubtree.ps1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PublicFolders/src/SourceSideValidations/Get-IpmSubtree.ps1 b/PublicFolders/src/SourceSideValidations/Get-IpmSubtree.ps1 index 6086251a77..50338fa377 100644 --- a/PublicFolders/src/SourceSideValidations/Get-IpmSubtree.ps1 +++ b/PublicFolders/src/SourceSideValidations/Get-IpmSubtree.ps1 @@ -90,9 +90,9 @@ function Get-IpmSubtree { MailRecipientGuid = $Folder.MailRecipientGuid } - $null = $ipmSubtree.Add($result) + [void]$ipmSubtree.Add($result) - $null = $foldersProcessed.Add($Folder.EntryId.ToString()) + [void]$foldersProcessed.Add($Folder.EntryId.ToString()) } } From c4a22c32a425fdb81e69d799d0bb534a2c5fe074 Mon Sep 17 00:00:00 2001 From: Bill Long Date: Fri, 3 Sep 2021 12:44:44 -0700 Subject: [PATCH 32/34] Consistently use -AllowClobber --- PublicFolders/src/SourceSideValidations/Get-ItemCountJob.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PublicFolders/src/SourceSideValidations/Get-ItemCountJob.ps1 b/PublicFolders/src/SourceSideValidations/Get-ItemCountJob.ps1 index 16e9f9517b..a12569a337 100644 --- a/PublicFolders/src/SourceSideValidations/Get-ItemCountJob.ps1 +++ b/PublicFolders/src/SourceSideValidations/Get-ItemCountJob.ps1 @@ -20,7 +20,7 @@ function Get-ItemCountJob { begin { $retryDelay = [TimeSpan]::FromMinutes(5) $WarningPreference = "SilentlyContinue" - Import-PSSession (New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "http://$Server/powershell" -Authentication Kerberos) | Out-Null + Import-PSSession (New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "http://$Server/powershell" -Authentication Kerberos) -AllowClobber | Out-Null $startTime = Get-Date $progressCount = 0 $sw = New-Object System.Diagnostics.Stopwatch From 0c9788eea5f75d1d2402b5ea209dc37abb307fd9 Mon Sep 17 00:00:00 2001 From: Bill Long Date: Fri, 3 Sep 2021 12:45:57 -0700 Subject: [PATCH 33/34] Add missing import --- .../src/SourceSideValidations/Tests/Name/Test-FolderName.ps1 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/PublicFolders/src/SourceSideValidations/Tests/Name/Test-FolderName.ps1 b/PublicFolders/src/SourceSideValidations/Tests/Name/Test-FolderName.ps1 index 5d1216cf93..d4b28bf743 100644 --- a/PublicFolders/src/SourceSideValidations/Tests/Name/Test-FolderName.ps1 +++ b/PublicFolders/src/SourceSideValidations/Tests/Name/Test-FolderName.ps1 @@ -1,6 +1,8 @@ # Copyright (c) Microsoft Corporation. # Licensed under the MIT License. +. $PSScriptRoot\..\New-TestResult.ps1 + function Test-FolderName { [CmdletBinding()] param ( From e0ad3023cdbf6c494b242083e682ea7a5289aa93 Mon Sep 17 00:00:00 2001 From: Bill Long Date: Fri, 3 Sep 2021 12:46:29 -0700 Subject: [PATCH 34/34] Update docs for SSV --- docs/PublicFolders/SourceSideValidations.md | 96 ++++++++++++++++---- docs/PublicFolders/ssv1.png | Bin 0 -> 28024 bytes docs/PublicFolders/ssv10.png | Bin 0 -> 87427 bytes docs/PublicFolders/ssv2.png | Bin 0 -> 143593 bytes docs/PublicFolders/ssv3.png | Bin 0 -> 11181 bytes docs/PublicFolders/ssv4.png | Bin 0 -> 10057 bytes docs/PublicFolders/ssv5.png | Bin 0 -> 50797 bytes docs/PublicFolders/ssv6.png | Bin 0 -> 5525 bytes docs/PublicFolders/ssv7.png | Bin 0 -> 31531 bytes docs/PublicFolders/ssv8.png | Bin 0 -> 81050 bytes docs/PublicFolders/ssv9.png | Bin 0 -> 16571 bytes 11 files changed, 80 insertions(+), 16 deletions(-) create mode 100644 docs/PublicFolders/ssv1.png create mode 100644 docs/PublicFolders/ssv10.png create mode 100644 docs/PublicFolders/ssv2.png create mode 100644 docs/PublicFolders/ssv3.png create mode 100644 docs/PublicFolders/ssv4.png create mode 100644 docs/PublicFolders/ssv5.png create mode 100644 docs/PublicFolders/ssv6.png create mode 100644 docs/PublicFolders/ssv7.png create mode 100644 docs/PublicFolders/ssv8.png create mode 100644 docs/PublicFolders/ssv9.png diff --git a/docs/PublicFolders/SourceSideValidations.md b/docs/PublicFolders/SourceSideValidations.md index 6838eea043..f777f330d8 100644 --- a/docs/PublicFolders/SourceSideValidations.md +++ b/docs/PublicFolders/SourceSideValidations.md @@ -11,28 +11,92 @@ This script performs pre-migration public folder checks for Exchange 2013, 2016, ### Syntax -Typically, the script should be run with no parameters: - -`.\SourceSideValidations.ps1` +```powershell +SourceSideValidations.ps1 + [-StartFresh ] + [-SlowTraversal] + [-ResultsFile ] + [-SkipVersionCheck] + [-Tests ] + [] +SourceSideValidations.ps1 -RemoveInvalidPermissions + [-ResultsFile ] + [-SkipVersionCheck] + [] +SourceSideValidations.ps1 -SummarizePreviousResults + [-ResultsFile ] + [-SkipVersionCheck] + [] +``` ### Output -The script will generate one more of the following files, and it will display -examples that show how to use them. Examine the script output for those details. +The script will generate the following files. Usually the only one we care about is ValidationResults.csv. The others are purely for saving time on subsequent runs. File Name|Content|Use -|-|- IpmSubtree.csv|A subset of properties of all Public Folders|Running with -StartFresh $false loads this file instead of retrieving fresh data ItemCounts.csv|EntryID and item count of every folder|Running with -StartFresh $false loads this file instead of retrieving fresh data NonIpmSubtree.csv|A subset of properties of all System Folders|Running with -StartFresh $false loads this file instead of retrieving fresh data -FoldersToMailDisable.txt|Folders that should be mail-disabled, because they are system folders or because their mail objects are missing|Use with the command displayed in the script output to disable them -MailPublicFolderOrphans.txt|Mail objects that are not linked to any existing folder|Use with the command displayed in the script output to delete them -MailPublicFolderDuplicates.txt|Mail objects that point to folders which are linked to some other mail object|Use with the command displayed in the script output to delete them -AddAddressesFromDuplicates.ps1|Commands that add the email addresses from the folders listed in MailPublicFolderDuplicates.txt onto the mail objects currently linked to the folders|Run after deleting the duplicates to preserve the email addresses on the remaining valid mail object -MailDisabledWithProxyGuid.txt|Folders that are mail-disabled but have a mail object stamped on them|Pipe to Enable-MailPublicFolder using the syntax example shown in the script output to enable these -MailPublicFoldersDisconnected.txt|Mail objects that correspond to a valid, but mail-disabled, folder|These must be examined and corrected manually -BadDumpsterMappings.txt|Folders with invalid dumpster mappings|These folders can be deleted or the -ExcludeDumpsters switch can be used to skip the dumpsters during migration -TooManyChildFolders.txt|Folders that have too many child folders|Examine the list and manually reduce the number of child folders -PathTooDeep.txt|Folders that exceed the path depth limit|Examine the list and reduce the depth of these paths by moving or deleting folders -TooManyItems.txt|Folders that have too many items|Examine the list and manually reduce the number of items in these folders -InvalidPermissions.csv|Any invalid ACEs that were found|Use with -RemoveInvalidPermissions parameter to remove these +ValidationResults.csv|Information about any issues found. This is file we want to examine to understand any issues found.|The script will display a summary of what it found, and in many cases it will provide an example command that uses input from this file to fix the problem. + +### Examples + +Typically, the script should be run with no parameters: + +`.\SourceSideValidations.ps1` + +Run the script with no parameters. Progress indicators are displayed as it collects data and validates the results. + +![Picture of progress bars](ssv1.png) + +The final test, which checks permissions, will usually take much longer than the other tests. + +When all the tests are done, the script will provide a summary of what it found, along with example commands that will fix some issues. + +![Picture of summary](ssv2.png) + +In this example output, the script calls out four issues. + +First, it points out that we have 111,124 folders that are completely empty (this is a lab). Note that it says to look for a result type of EmptyFolder in the CSV. If we want to see the list of empty folders, we can open up ValidationResults.csv in Excel, filter for a ResultType of EmptyFolder, and then we see all those results: + +![Picture of empty folders in Excel](ssv3.png) + +For these folders, no action is required. The script is just giving us information. + +The next thing it calls out is that 4 folders have problematic characters in the name. The output tells us these have a ResultType of SpecialCharacters. Filtering for that in the CSV, we see the folders. + +![Picture of folders with bad characters in Excel](ssv4.png) + +Fortunately, the script gives us a command we can run to fix all the names. We can copy and paste the command it gave us, let it run, and then spot check the result. + +![Picture of folders with bad characters in Excel](ssv5.png) + +Now that the names are fixed, we move on to the next item. + +The script tells us we have a mail public folder object for a public folder that is mail-disabled. For this type of problem, we need to examine the folder and figure out what we want to do. The CSV file gives us the DN of the mail object and the entry ID of the folder, which we can use to examine the two objects. + +![Picture of folders with bad characters in Excel](ssv6.png) + +![Picture of folders with bad characters in Excel](ssv7.png) + +Well, the folder says MailEnabled is False, yet we have a MailPublicFolder which points to it. We need to decide whether we want the folder to receive email or not. For this lab, I decide I _do_ want the folder to be mail-enabled, so I remove the orphaned MailPublicFolder and then mail-enable the folder. + +![Picture of folders with bad characters in Excel](ssv8.png) + +I also confirm the new object has the same email address as the old one. This might need to be adjusted manually in some cases, but here I didn't have to. + +Finally, the script says I have 9,850 invalid permissions. Fortunately, this is another one that is easy to fix, as the script provides a command. + +![Picture of folders with bad characters in Excel](ssv9.png) + +This one is going to take a while. Once completed, I can rerun SourceSideValidations to make sure all the issues are resolved. + +If you close the shell and you need to see the summary results again, use the *-SummarizePreviousResults* switch. + +```powershell +.\SourceSideValidations -SummarizePreviousResults +``` +![Picture of folders with bad characters in Excel](ssv10.png) + +The script reads the output file and repeats the instructions on what to do. You can also summarize the results from previous runs, or point to files in other locations, by providing the *-ResultsFile* parameter. diff --git a/docs/PublicFolders/ssv1.png b/docs/PublicFolders/ssv1.png new file mode 100644 index 0000000000000000000000000000000000000000..0c4b053632e7676ddefdba45889489556ac2d4c7 GIT binary patch literal 28024 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"ULzpg)wWoyJ|?%*nqKM;IXhfFz3iT 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 PD9DkMQkJX{HwykgPOkpa literal 0 HcmV?d00001 diff --git a/docs/PublicFolders/ssv3.png b/docs/PublicFolders/ssv3.png new file mode 100644 index 0000000000000000000000000000000000000000..d7719373425f4b01bb1d416620988767f0549015 GIT binary patch literal 11181 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 literal 0 HcmV?d00001 diff --git a/docs/PublicFolders/ssv4.png b/docs/PublicFolders/ssv4.png new file mode 100644 index 0000000000000000000000000000000000000000..b85a38af152686b1c4188ecf20e6e27e68262af2 GIT binary patch literal 10057 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 literal 0 HcmV?d00001 diff --git a/docs/PublicFolders/ssv5.png b/docs/PublicFolders/ssv5.png new file mode 100644 index 0000000000000000000000000000000000000000..0b135597ca44d921f9e945eebba4c456e43c0e86 GIT binary patch literal 50797 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 MboFyt=akR{0L_oB=l}o! literal 0 HcmV?d00001 diff --git a/docs/PublicFolders/ssv6.png b/docs/PublicFolders/ssv6.png new file mode 100644 index 0000000000000000000000000000000000000000..26589d6ec050cd562a813ea5b0df9644bdcd44cd GIT binary patch literal 5525 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 XlkD31U`9&l00000NkvXXu0mjfJP?)s literal 0 HcmV?d00001 diff --git a/docs/PublicFolders/ssv7.png b/docs/PublicFolders/ssv7.png new file mode 100644 index 0000000000000000000000000000000000000000..6b0fd1982bb35ae45b6cc18bb61ef696de74692a GIT binary patch literal 31531 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

St7FMHhOY;R zvbDcSw2gM*DbLxbX;0g3uoAD*Nr(#B1}gAqvr%29=aN&amPv){Hna4{wu=XN9FrGj zpdRhbhcmuHL(|Ae-ck3>eAU@(C~78tV_75-bVpkMdwdKL=jo|=>ZTh%-dq&MzS|(e zLWwSP7Z7^faCGMLWu7GsSAU@yHn!V&siRV@^Rtn~lHMk*^6>p5g+Pwcbeo&*3NabfxoXNW5^9-#p1gf84)`w4iN49M zyQnNX1i6Uw4)nvgt7%P=g6)nhZ1{1cgJ5OPubASwNf*U=vx<;{3V$1SXmUq39XJOp)A)W^HhFeQ;(8nwXYXt3Eo5ZH2Me}zRAQ0m!4^rLr*1vnXT?W)&jeN^x}F!g z`gX6wT-$TM_I zO~kAqhAx^LVxa&5J9VjGtegs~&8%18WN2{cNaxsvwt|V}j+7CDEu+^jIdL`I?^VW? z*TN6Lt&t}`ug|3V$Xvw?J!iBEFNstnRV`(pi7;^n~IA>?DSW> ztb|P3Ijd+AYn#f~8pll8>)k@n7Z90R71}<><4&5*ClpumtTpaGwnhhY2aCFV&!S!C zBAu=&esf>1a+sQzIAWQD^s+s!=MXv@j-zEX#6j4K3eViJyY62u$AB2AMVv@&F2A*E zGuOB9bK0ZYqA*)x59g13u+l;PHE%F9^w}* z=%rDA-l31;*bS!AAIv2Cq4r$i`cq54>!e!5_r9BS2n0bVi-ZosGhgMMKeZv{zITjj zU1jtz6nNT9Dcx}}{o_B&ZL+*!mE6uMYf&$CirC4Xz+`$#1U=40lDvi#%?Rjxc|;y6 z25RB|CbhKoaJWO(mETtU*p$E!;B}K6;9=mqJ9CPoqrP&SB*H|{i=>V#Q51w#aulVb zmm8fbV^F^NDcw+BjGoBK5G1~feEO#p1Km_Nl58&#jHzAb_*b$Tn)G=AlMevw++PC@ zBKWXptEK$?e2(HV)~>dzZ~1=LD6i4cS0u@M%0emWj^5MO`=N)c&hOFVFw3?M2Q zZcIcrp8rN7SU=kY)6_V*HYZgO;jSb!1_LE|y0u|_oOHLX^LmBAz{_#g({lgY-+Cu^+*hb8t2*H61;ALs8@)x=YmAy0-U1p8<&5SRFcj2l67eC%w_^J)EJCEEqdvOj|ZNG_u#2&~iQffXYvnPr}ql$)bHADHln`T!l{9lHTh zO!OeA4ur__g9ox6Poe_@ON4o8vlA-K(xmRcv+ayp;dAQG{Eo! zo)T^GNE8XOD)mBAbu}^-txu{HkQr2xs=9_!SXRA(1ku{9Q?X$mX|Kn3;AI>4wR!F+ z&+9OsLhmiijX&Byl+MmjY1R|6n2M?(8I9ruK}Dr#CskBgnl>9c-^IwnSJnBsvgPBQ{`f3!c#rHReZ@UTg!BT2w47)PZzHL>FqF`)EH zej#!lX6gGGAL7*m++^?(7{|kzBm#S-zWWfh2RE=XC(@E96_65(33IbvC3Bo>t*G;5 zpGQ$wvuVNa1n93mekx_gMLqM8Ldq2kH?iT_Ysqz?ErP*f{`iHjn0qMy-GjGjo}fBc zqIUI((Cj2b{;q1rje~R{W`SAT^M$u)U710xGVPGA{gtUs)=HeDP8E=~D4U_tF=k1Y z#SWo~wzc+@;P)MGJnoy=UIO`6qKB3Zq~={xtr9|_Nb0sUH(rPRSUjUeT((=#)ReQ- zXi;yEN|~Ed*usQ>YH~rzp@z~rOeDV7Q?Be;&FkS)Wb^pt&4QiRO(&}IZ4D)>Dp~4> zo!GW@O-GqqMaV9+x>Q-O)I|MDOYE#Rwd4+{ zifCf|B6a0#S$t7yqJ<=LXgebowE%R_J?z22%)2emXb4*0FXv~V2;)}FSV@Rq z)fv-gfaFNc=ZmqlwDHc*ag_*sT)eKQ?vFyGjj2XAs<%&o_yl2!-h`eTC1Y&g6dUFvqwhgU17YV)FM%pO0X;uGL;Vp_~4|8lBjlM-kUfzkg5>(d|g{>kLdc^_E1}ZlkuPK zghBbW|D1!;zQGd7*}25BA%C81$Qv>)Ih>c?@xhqx^+;_SeHBFM7(XsdI#Ay`-9rHFkO|!&T62^P@I=y9F#o9bf+3S9=1F zIo{xPHrBe(Zrx|NPBIU>-6Je$TUGAi-vrsu^{p&HPR_G=_`T$_n-a8rMHcUUrS0b4 zesg{U^gf8*>61%u$gV^lJoic`A1YVI&+afe7z=Z|^7zEFr`4|8jh%~^8gF=C5a3(6 z<8fj5dYOqL|2!JsX17qfbM+s#aGd(;czx;S;D0||k2*d2z0CKpv^bG(38h88vM82R z5M5#{42HtgRkdp2VsGtf|9bV~Oux%*HL<6Y-Tt?IcddP#s+e5cB}UwDdcT`bIHWnb zRy34XLY@2S@^JwSVu^=*j{mYr8JcC!S7e1PT zP(aAwr`01)0L4>1WKi`p!tsNIau#IBOehmveym7kI$wRz!B)t-LORUEcY@ZMgF20v$)bc_l}?wE*BVxR&>BLY~k?dC0Y zCeshg{#+p{7gLOf@AfAC8Cv`C7w$J?Kr9(ztBZ9Sut`qLiy2h-Wg zL}T%FJ6`261l_bsiP1_j;zF$+=caRDCUb2j=R~Omu@>(DJGrs$phcs+C-dL>hqduZ z323cWh3@BR#TCGZ#J^<3_7&c@MbI6qh9SEYX&CEJzVeaD*^m8E%BW9d5iM#JHq-k? z_1XT$g{J7OZl-c>XyOVkE*4Q_s)PM?k(1D`lMO&{q_Jr;Nb6xTOAgdL=cT8^%nbu! z@}yn3>r8`$z2RpUV-Cby3=%Vyf<3S%vZ6xRS~m-JOt?h68ZFgASL_~zJGA#3Y=pkE zNj3aMAQ;Y?9&q%#*ze-;`^W<11kw;v%_?8X^m-UZ03a|t5W!+>v0q$Y)IoD*pw`ds zWIzDuhEZsCO5BNTdK9{4t|$!*-)j8JKNG0K)WBSPKyHAjJ8sGhCf%~^i;5OD5-Z=S zYh>s0DMZ4CvZ~irb{7jq5k}HNTi8%%S5|Pg>Ru(1E3neQ#G-Tr)kB6=^giTjHztcL zBaL`OGk&xm4gOhP;|y2Gc%G~A#8}YQGm|9-pTvQm1U926P}a1I;>&|AT=spDlt@wu zJ>xy3QGzTV^#uDKeStct_j@Fo8YBK#6XADjABw%f>Wt$L6wQL+=9m1|3At9^!+x^H zZC&pxDqSF)^S3cO0%Ot|UKgX;bV`&>M9o`kG{~X+d4U_c#|(*lPK<hHF9={9aAj4J?L75Xlzl?OBA6n=uE1LPLsF;vhkpX)9g#M zOezb^+Lz|mM-9EBc;FG-Nifk)iLi_@IJf_>zMKbb4JBEy85uT2_CN@B65e0mL<(q? zZwG&xRCiNG6)A*RPNXW7)PGYy1tY3hhiBt%_zrGGGofGds|8m`EL1KT2L4#iW*d|Y zod}(dkY^&b{#))IRMc@I(Z$>;xHF=O7{X3o9hHpwnRG(kcx0i)5Ei1P0b}%ck$eb4 zoj@+dG12d4!4P!S zQzJ2o?D_ShF|F(Ue$cUjDOizM=!#&*&#h1YXj;E{f2&?iAzEDAOEjR4I7xGsO^X~- zem1c$J3Pu1M)|~b`oanS3kI8P-!35I*mtY;kk2WrZFb%lQ8s=Z1Ij8#@sL(?TlQ`# zrzvN}>2HPv!4N)qC&OV6wzsWrkNfvO2r}L-v{9fnfqUU+*YX*TUUgp2bx4>s1-vMd zu9C}p0bwF!WUNF*5v3lz;BuA=z_&q?e*V5tN{B9knn-Kz zX2ENQ_c7Z3%jmJB`X(pe5!%?D6_!;tkh%E(Rrgi_aRqC;W^jk#?(S~E-8B&0t$_f+ z-QC@TJHg%ECAho0yPr<7_kYe@%+<_X%w5w>SFKg6x~jgnzW1q*XhNOGWvytvjdsVP zA7bfZd3|w2mS2jGG0sA2;*v;7b%;gNv(t)4_IC{uWAVXyZ_kh4$5Tpf5u43oiIY); z=rWE{(-?(ASQXU4NLA7#R>COHKqb_msx;}IBwBS(#ed3jKM8TVedy4QvsD`u*H0T8 zT*p&SG=NvP?tRAURDWA;rvau+jh*+hQKOV(EDIER?IaMJMRMKT+IKo%jm;&}SiFMc z`GpBY6oLxU-g04~49DevQ~oA(!skER%9iR^RUxENihD*Eh)ivwvqgv$(RrDBG5%`y zHQCr+TSonahc-s~P>DJL5ST#mObqC)3KJrI4$f-7k>Yy3wQ*p*Kk5>A20cW9q@P+Q zucnCoE(d_Ap5>e(2QM)$b+;%_>al@u^=7TI$*P;%UxkgY`c~HMlisE67M;W~z}ln8 zWw>WziLYZ;j_s}?x-cT8VOyTp^q^Koe8vw{T{XQT#D0~tYE~6Rw*&M+s&>rZNN?FZT4JRC*?CQ9v+)txm)vt26W#vqYnEKDem$U< z+2m;~yOuW1Zp4GcLL@AWA_vPIFdtGVX5JGJv7mzIE&YLji`m&!>Tt{K*+*bdrzBx( zvJm^we*fxMKzpp0#cgiPvJ@vv&g4*Rxu@|k;qA4RyC<_h@!AcbPm~Rd{Hj!|FEVA# z*Mb{qy1=+?F72k7#vq2Xn`y(V@j1C}u3|jQU1*OD2ZsYT-Egyn9ibLScJOC5J_KJH zWu-^UUQ9d|o~s*Xzm(;gdu8OR9L8;u5sSHS_n?x;F77hp4U71rN9k#o?pYA4Sc{Uggg(!th zqu0?WMmO!G5;pL9USU%r@tovZ61b~Qsi;~~%ZNp_yfqKYO+@jW)oq!1Jd_6STU4hk zj>Q)f@brFfo>{Kkhkbi|EpW7toX@u`BG1FNY$9!VhOwLA%v_65XBEhnF}PB$p`OfL zta{AjtJgw07Asl^NIJe#?O<5FcCgVxCo}7-^y*KN`Vm-SKtIj{G|E&jQ*GGRrw%!Q1)Xc%fB@qkhy3-kdrsG5jU|tkkY!}kFPDP;WaP0$T^y3o8 zlaL7UPM1G5UDbcnsteH8hjYv0Gt=T>PZhmM7cU(D6$5{I~OzTyqKfVf1 z_NV)}P-uKT)c_=*RMmRyxx=}Su4!>JvMC$mP6<9iKPP5O`4$E@pBDOXml^V6sJ)y~Jo_2i;QCy<$D6`^6`7o3o92YkB4V1fp>stJBYK^Zr#C5E8 zz{I+SF>kN;C}SnA_oD_KsSH`zTEc+m+eisUs|2%6bD_eElM8;Qot^ax7f|H4eb)$V zpb9R35tmJD=bjF!HLi33v4o2otZNIQiROCD{e7ji(H3^BsD0Qsqh`^(YyQ`-q6rqx zQbe+1lPuNW{CD9h(dE^SWjWX8eP+E9#R-A(zpdUuG3Gd+hIQ?$N7jeC&0dKBMn|jA zN$H;hEFbK`>7Ks(gMQZ-0NTbNjUoCRLk1cXIv<9vBnSmw^NA0%ISfWl$4fF=1(Eu< z%dv!GiSzSHvH@bB6=<>@qa6i~Qk!X$USIN(Kkk!}F1YI0<6wmr4;dv5n|`n*O;09B z9>bWe(B0C&P;T4qU?D`{$G#_f^HqC1!C@7uKA*hULlU^o6R(BGU)GcEj3nI=dJtgl zP*{k?=8MykmE2Z=SRCKfe=MWlo=hK`68w7lVj)?^w7# zw;m8G_%gZmSL+-vyb+tOrzQoiX_6CX%P}`8{Kg2hB3675WC)Vq&rAS}xNt}nj-%Dy zMaA&G4Osc@$r{fyZn4PWB}NM|GZ+vS9MFFfnTBjWO`$nF%nb9jgF{i|xshr-3ejMv zTEuf_2j-_NL!_cHzm}dNlq78fE&?iqZj$4`Jpq*!ik7*76yI{Ca;BV+0m@`?c4#dh zw+qfmv%2ojK3*GNY-SCd+Y~6oLK-rK*$CJPaDHhYv4r#=ye#8T>M&%ldS=Q7Z1Dbp(!h`FcupSO|KqZl2w-$b$A^PwyEc9}1jzwbFl`m%tOvQHi#6lf&ct9wz)1Ia!FsF2v>@elH*aSzE`iYvP z#7;&^SZECq!2LZQrQbHh}U@9keZT53p=DZyDkhj>rPi*{Wi{@Q7e0_&dS@2C7+qz1hbELKN5 zTq|eiN9M03tUY9y+^soYFgymoCb~!&aD)~wk)*{FeaQ*4CqMhGL>d*$s|g^~>$iZ}`Q>1#$eR~lnwBUw zVKP5Nr5=rk0-`Hf^O102{mV`Q55J4SZ&q4eoEf$of$_%vybk8W!H;pcT{h=l!@WT~BMnNu*;;#;2EyPNea4aqS=Th2CR2(a4rG zf+xQ@=U*>otc$$Mp#YZNmxEdNtq%8ol$p8?Yi4Tvmrg9`c~{Agoi@+CjL#A2tQRGe z$?Hv5BiJ_myDoT|CD0(?rzaQZ{1`6}=?J$(4<0*9<1TUNN9TL<2ggUr)1r{10&IcZ zW6`NfEI1KY=wGdGH7T*S2CY&KEv%r1xIe?%i0>wWEh_=66ytU{W(@}>We(r7UuWg2 zDGN8zXLx5AdBH@S-juzC&UMhb?JkpXU7H{bmK=qi;KQ>1SicM_GD~Iya)uV|w2qfi zKh*9|K@>%Q8H3#hlJ;|sYd)4%OQWlV-Ia$}iv@3e@FTm~f|t4psk3uthN(;fBrutY zrpq}Yic-^P&>UG`#0B{)@IH(j(DHD~g_6CtmGdcJ(LWc|T06L@D>WlqRx%}EGsfK( z&ZIGkRqOe~`VV&9`0OSAPFbtvrv~QLbk$m6m71x%h?Q0|HUz?#;v|wQuN#g^&%V%5 zDOGXQI$;bZnXsd&0+N+@y9H*TqDks#TMUX9V+=NJvr$XbVFDvPxy`F>Ncqt7V{!xf zI`a1&;6c20B$5(;P-&CV1})VJ^x_Z;6i->hec#NNf^v(`*zJD9fbTu!n06)+gCIcB z0;Ie_30sEK^8(V5p0lCwVU0d@j(cx|vQf-JTe#$5cHfJi2qyN#E#$|L1y(Rkh^nKX zL2#D_;7J&yLr->P^G?PZL~z9{5z`V&p|q2}aGDNsoCN-?UdZR_3N#(@rB?=aU(zEA z2c8GA`AI!ym=09F=VXDY!(h`yckE=e?mJf(@K3B z^XV}|1DUU4Gs#n|2F_s6lwh|pCePw(2y(D;MQ0sjGIDgaLeo<;ihu<>6@-qBA zeE|+?MTYBd{5Qirv@Byl<;?iBgu1`y#Jg09(#>T0oUdc>v#9lt;K;i8qCMK|8&^$Smtj~sO9dWpMgEm z0wtRa%3^BqHWLq-M)^WS^^<#N+=w&k@*su5S~4I1R{~K@ktK_lbHQ(5+n*}9xKr=@ zk@-4sl`&1=zjQq|)#t2?TJfzqaEY-PRJbm404UV!%o%3+l;A`Z#wQ8|BM*}&hz2Hx zd$C4Hvf9*bQDLke{rAmVZDql)%xj4Pr5o|N=FZFSJp1wWfoAO~$78IU*`6QrNOaKG z()OJ4YwEi4rqg-0Iy>V^`tSB*5&rR_iql@_*w-+2&WYm@gQ4o1%{_YuP40}6w8EyZ zqS>PUyWgl>_pv)W?b8B4D~2R_NoAI{hbccQ*k&rBsgkqYHLa&F&<1%9VVz+?j-C(L zs6K?wB?Vt437*E{yk{oP5-^rYvo=qOu$3T+(z85x{~^Pcsq#vWtyS|X>gy?5%+%Dl zX-t*KC~d$felbCy2l7JTvy&%FJX7dJi4dR)qgrWV&7~bWV|=;zkm(l4@90 z;Y0{^p!f3ym>tLWW)V*GK=cIO6b|@_Hh%D_dAWO4=x`A>!|S^aQIESk%l3oz2{%lf zR?cp!&Fi5xL0l~=dPeiLJ}H9}l)Zpjzu5WS>{#;fTtJ{YKxrd4;>xz4ar0?&NwB;4;L^M*rzq{du}dz%9dmd&sQt$S{VQ6Z|IBwaR|wo7cck zUYDpAI+b#h!*G zt`?}f*2LGBq8YCHia;*Y?GbHUHk;ZwOHJt0&-&73SstnnNk#s*wX0y*dekE0U6L+7 zNq(X8r7SQ=k`M82(9sjqyX_#keFObhApgK%XRwe~M^R@c8u6x`Fs5xc)%n%&t9Xhq zM)NIoMez6Q?W0{BVroWlV!n6U>Sswm$1?n69xZ1foM&|~aw7sEK)-VIE@uJwIHy^KA z^mdbAdq`NExGPyo6=D)xpj8B@Yzo{7AzOR?6p4e7P%}c4geX6Vwf1_D6B1sEpt~W3 zhKx8rQs=M(BIsFYty#J+b3>}t-Iu04|EIdE#B`8lgVBkgtwVOa&4IFcly{Uf9*naA zY@=U7tFV2rk;tR>6(8$I+b6ui4{8(cwhSa4J3iR%b^8XF>{}FbS=g2tj;4TrcIzsZ< zQLC&!_{VF?Uw@Z)Ma&#*7tq*Untw}@*L`x{=@8&i(N$}of#`V9`s8~BHQSn=O{mMT zH^P~v0o_u$YOIa~df^!d+z1oocTGjx@jeFtzMtn63Y|%oPkW?Y6HF5z9BqODz&XrW z?Bq~s26VS(HGSL(TxjU_15BIFXFfAX_xI*u1 zw&OgpynEERpRQvf<&DK{57s>ebuYbb5saP+vYJ?XH&I!(SU)ulQ#9T&t)>Llg3e)ambUqx&;zuPACPT4fL1ukl zzq!5q;q?vV32DSEhDY#jF|B|U{*co2qsMRcCMWVh5K?0Vj>)Aa1_>6h!#3ju6Sd)G zIJ=;L@kaSgZr4>{mww`Y-NvX;ejup&AgT&BB4rwh!6xaYTvO8bhj~}q&4s%+$r-&3 zWcPzsAzqBnBiIQa)yGp3?S==5*Lip6ActhD0uVXsG&ERf72i{b>oCRZIKCnZ@oh!rtXDsypy+C+K>&2G zmWTWJa?_X6D60H1rD1f+_@s>y5n;X}7(^m{kRSTVBSs_c)K2Rl0l(nP=6rE8QdU6t zwcFKdz_Wji@Bn7h6>{^UHM&v=dDB{m-d7GGy#3wrD-&y98P1ARMLNlsLvYSsx{3I4 z#t)Ducn1mX3CdgB7GD2VXWH&P2zB=H&l4e`xC8ZTQT+#`e5|qNKFG@x*RSWnuX{@s zF9?a4)M0fz0}PkYzh-zsHeclG)@2KGXqfksyx&W#BLJ%pW;~-O5|?lLw88(Ers6-> z@QPlN>{Pg}c)0)DRG?aOg<-H*5LkS8^Nn-IcfrQ^#yH00`oa)P;o=bC&pKDyf&-$g z%LMF9{8q(X=s%ihtN4h)%)j!thW19YAT95E#`&)VU`-Ovx5!15!PlZ%1h0A^n`W`j z%Lw4r-9O+z5K;NeET-^cMVNiMi{8!~v@I}tWrl3l(x2%`Wr+zrklN$LWynBe-?yit z`r90ouWtFFz?f_3iks-#MpM0G?`}H+1gf7=mcw!=eGJW>j(6jQSkJZL#H%+Lw;rBS zvqJ-#%0}xU9Y)7$h<@YM-S&LKDRDulNh`^b|3ORfRp{=#f4DQbVN?ul+gS)1@{K^p zWp~FuYgg|AKTd(?K)Gp{#UzKGN^L#`A(oq!yEwyFt#B9sK`Z$7pJ7D0^I;Vl_=n!TPaQm&pH`#Xx9YVf$R{c?iU0_w~+12D+m%?tLS zwXR23AO%R&xUn}i+v5ME(S5rcNT$^@o(DiwmqyV1wH~dfDze~8{uij-I zykVqR3%0xe*xL|6+@qPjAd!40XzPUQd?CAVyNL0)b`72F=7HVhIrep<9aLiu+|u8! zC#*?D3#v4-*or47BHQm9F0~x%d4m+y?8dKbC=7iZg|ZC=@DgZ|z)H{VoL|G*N&HL} z(gvc`zUBJzrT6LR`ChF&4R)>nhobgLd+wY$oJ2!G z99qq^trMP7;3)QGSAZ%@(T+p>0)1~coTfzQL zd-M8I#Xs6zVsGi&E5BjwD^=Zr9h91=`O;?>mIK5Su7fP^4;S!`Eo1>_1vc|N`=@3U zA~kPr@ca|0o~WS>_C@xbv5vj4cujPy-m;U7?F0=cmD1z9md!O1LeB( zRk^VHcw)PM@e|XTMsn_q5+}K*{GZSUh;)Ielrm`ZKKuhK6CZpWQ`!dx)4=zk!0)@D z{=Sm!IK>1b{QKVyIL4~}qjxKIUO)V9^>oBt zdK@Dc23^hO-|-9kqt$iI`787)Q04SRD<)kBP&X~MMfdNosgv~^TMm>N2AS#EwxxP5 z?`M;|U(GAJox>>IC?yCU{Dwea>==pclX|~cMyePEH*}q?g8mp5jCub`^C?AC7j%fT zjZlS-2gMetj#b)-c`Ov$o!7Xv5>`mD1;}NJ*KO>O(;MhDKzUdAigsV}5W0n{8&K`n z6umYL+n%JX$o|%BpYuh5f+Rb-$fE|tN>@;oY2u-ta?lg!xvji8!>96=>gNQ_) zmVnjw)(uU~9S@v9EtZfL;^WfX_i$Dloq6MW|0EM1{&=?pI8g?ExS6^#?D;j1Ct2gJ zTg6<=;mgPg+KEP}^HQGqmriQ=r!t)7Mgo>or9sGsm|kFh-^x-?XLxGLuoOkekE zdN4tPR*>0TmhqpqD3~wJtXuk3Zxd>!=ZZ-pd->c8Ix(I78|R&1Xo(k|EZGI1r0NcH z!(11ywg3Jgw70x=?mG){k!(Y}&9?VbrX7m-dMDk_Up;SL7c8qHl_csR&EpGkaf&Pj z5=RDjRBK)%{F>Pd*9e|MS^o<}k{?^!DublH%k>ZH;kvKhz%89Hcm4lt=}7bpchXvI zyzU~2#ZyCpZ8$(UZChc4UB(M+HMySvJzS#S4l|-lemvRCOcjt?P0f_KxkdpGI54ci1{A4!ZZDb$S@f9bfk*Im4Ttks%WZ2s{+huW9D8QTaL)af7UNKD4B)Lycy?cNk9f%=DyM z7lJt+u2x{Gz?$4K?3uBbAMnHKEBj=``@Y@LW4ZyRN~d-w_2o`09>C5 zJz?U!6@k_?Ba$MvabCJlb;uTkH!wd~$L#pFlt89M2+?b_Jku3txa})BIz9KKHqyrf zZar7eHc>evZU9TXJJk=8ewKA_Om*D6@>a-HK(bK5cVQ@;Sd!k_O{Q}xjU_B(pP zz+KnWAfz}Y--Yh_nIZyzPCMRI$rZ0nCyCoRtQE}U41C|Ot7h!5R9ifSPF&pQKL@cV z)!xO3Ze-rUG*WDKYHY@c4}m$ zA|5ImUkfn*noUP+wllN*J@}eFn?Sk^V!Z958N?5?AU*vxdpcHL zRM7nI7RHX84f|uc{Hzws%XRMtLBurjA{Q#Xq}s{IZ|@lmUYlO8txIeELq%&MXN`It zLIifdL$%MLh&dO08lDCQ2@(}3gCg{3Uxa`5pcA)SPaq8;*HvmiIIMsNR=Ve646J+H zOh#ho;yEl?4Vn0lef7?uiTLrr7#6hI*G)iFQKCGX;q2fU{ zpFk>dV%BR9hI#LiE}SH2H}V#=ZJS9^e&gyOLarz1#Jci+H?#SnHjN)Th>oy* zeeKe;y0*96e$F7F;KWke-yyCYOMQ^-c1xyDx#j3+7VlwUS}@4)LvMGabhP>Gn&hd) z46L#l``k{|`dd(U%ifP@XN-QZlg)wmeP(9N{HgsM#v{9iS_?BmG1gzE15F4?KH7W2 zW0$*!A=spjJ*26*m*RfAWM8&2T`Qr}w|~Az(h@$MwIMhhk0WgD4p9R!gXRb#gV@`^ zyhDBd8Q!v&!Sos}#OC}HG!CXU2ga2(C;3XoAnt5nB>i%K=Ah#F;2j9pi$|5Mdzn5x zf|c#Ui%M)|A-=wOUI4_cG5;u+0SR>9@i$2E#53X-e*TnNMNvU8{WxN!&~EYt=*~1& z^lUurGfn}6JTJHm1VZ382!MGiDT1fEuv{Vk(bty4SubO6X!HM0h)ll!BW}fzQ=1d~ z)eC#;Fg4=-kE0qKsg3{l2T*go#(#9uAah1Li<7@IC-ASr_Mz4=SB8I>Ief7sncn|> z(nH>g=9tJomGPb=ShFelA8;;;sLP|FEV12k34vKbw>1@eJ|b_aGkri@UR9r~ab#5xA=%`mf@4 z*$N6V1{?2FC-Mtv!2?x+KS;Vl)~ysYFPbk%q(U`AJ2bRJo>01Eyq8&I?+}nie{Rjx zX8Wk%hZcH}tNv@Me77Ri4$9Y)Mn{;yT7Hfr%+P%5h)33_K-RzakP+$Qi)4T~ls__V zze9^P{Sb7_iLad;Q|lU%uLYS@d1qxv__a;EEK2pCI!f8gekoLos%VxM9zeNECUr~y zKBSanoY+CHeXIjsUC3!nWgd@Dm9ynF_f_3)BSK4;6w8uj{t zw#o-m>Qbcl;<|*QuZPTs{rvk-45a4Z$eR^`Yy3h4K#ndl)Vv^ z{p1Kz_(_=c;%9Q5t6#-0#Ky4MxtuR}b-Huy+E>cy`cv3vsrR4I`R%>dD}O>R7O7dEhNSY2r{N^d1&#ykGYy`Qp>! z=;psF!_s5YM=c;!^jy-A+oWLJ=JZj;lfa4<>LTpaeP#Zy>iSpsJV7XoV$NWpRx$kZ z5N1GR1j6xEA+x;kX@s+5 zofKlD7=`0Oce*|m-z8SDKIfdo<%*N^2lZ6aP-8!&FYPdXQAt4yk`wGD{_FmglzX>P zGtz^gk4M?Lt{I7|p4tE7{-t7)+x}dU5Jw{gDEu5Gl_OagI8{;%9KwS#(@OU7QH3T8 z$*cZryloxk-Js`6H5?82GZ1hZD+4~s6t1&9yUkz4LD2u^xW(HrQ9!9rQ>g0%r#v{n>k&lK;R1v&Qy3)?Pd!W(caT&W-!NAhXT)#(Xs5Xs`Wo6 zQeflPP5^C`B>f*nBUJ#2N|l-dUYbBb^QBkhmf#U-g--W-Jq)@h_ugv>Z!Ym9R4EvG zXe#Q;=X)RyM5EE;ej0-IgZFA^v7z|eENHv8X6v>DX7tP4jsjz;_a31QUHduh^MRg+ z)2y7rZ@t&&fSp8Io0f-?f{!#F8>e2I-2CWZ+7tCAJ3}cNLTyFy<7`V~p z;`#gm;|I$zdVHSqrQJJrHg~Nrj5Y9fToI`jK^6ZY3RjdFp1PP88N5U^8`90n|5P^n z`N!lh3w7vtfb&{O^*M5c)Vuch2u4q}PhAW=8%4U)ZR3}{b#q%f=;t%lC!h)_U_Ynm zL-6^_v9C$Eb;l_YJSFu3|NT=bkG$AUez08+dhNF{*SBH4OqAH12XoHXtv$V{GT~Y= zM5C_Si}KEck(_?E8sLaR5YrU*WLmI=+q?+161ZHcU4#((}3EQ!y z#g763#O`k`6$a1sgR1)3iv1c3yv>IdqvJ|3d_uYu5ZkPSzPXpoSVK#Q$K1%qx?)cL zXWP<)Km#9!MkC7w8BxX0T{Hhb@u95sVM~Xc{=M>0SgvT;NIg~QM?%W)&v1ba-9snx ziyWQzb5_(+R&U?6WTbtEsJKPOtWG31#1r&vnbz2YAvNG*{_Y--?h9wuv*}Okr zXE9EpKiW;1m0QSZh)LCn%J^xfg?z(Xqn*=+*JKHz82CMakRW?p8v_p`mDqz!4?&I+ zKnAc{hY7=h!z5f|pARtjW8jM<>rmOMlu%`vlZ2*tA2AtJ!774Wi9)2Y+8`GW;2K;#mu&awxxQmYD?O&D?_1D-!#bNwnhG z0@R;h1x`98{i3WbTvfnIs_TkP1n10GkXp85#k|wBHZIR)CS>^@EXB}uqWMI7nAprw zgh)vc)6kT{!sC_U05K84S}1bm%#zB{V#=}=qGb4N2xvM{45+%4z`^qV#h(M8@ z(<_|tKZbIlxyU&XjGb~X{T5L@H(69^mBytuD`!hbnryDz=#a?6 z3%uXnU9eQN;vPo?WoD})CTi*2sVbEUa-(u3Y7);(X;E~X4XUHBy7@AS(`doo7wW2Q zyU{yP8!qcdBGG&=ulB!rPx~yrKcb^^vxCRfzLXT@(NRmxZf^(B?JH39&=2d-mv0$M zCPkt*O}#6ULl+Q{`HNBnmXZkxF-C|?*XO#_P^T&;##9VRk>`XuOIaign61-bd)4u8 zp6=9ldbKn_6B$onoO$eW<&dleNOCgQhy(?II0}3(%>XRZ`f>26)-3Cc*M9Rcr-n|or`pO8e6Dg3W|KnCP@p(|F#5? z5I|R-AQ~QDjb=)w;uTZquUq2v_|)l!(7JnQoGT0~0-HPMNsi5tpQf9xv0(HHCcx!% z$4H>{4F|47syAc_ECdF|^*3i%k~gkDR># z7pafJZzxVZV3d)Tq<^>0VFuW!#bsT8$b0rmy|vzRecU%DF={{kvL_Bq(|z*xcB>lf zcVrZ}U)(<^{ zQ`HU8tZKcfJ=mWDIY~>inCrTwft30ngX=+;9WZG`FiRNf<~G`Q#xs+)pVW6@g4EEJ z*0+_7vNOc)$!gi`(}D0PK2)A+Dv2Q)@db4u5M9K`K9UbC=uu^8HcnU$VwNDNR3fC} z6%nw>K&OZCisT0iYyk`&S1zF&H4I| zyINgumu+MR!(g+&%jkA`V8?T!Yi?cOf2+=3Xy_! z+Ddc9qk@7qFFV>W*(1Atn;$Vag#dV9j!a3-_uxb!dSoX^--e)1o>S!CqZj^^3}1V2 zMdxVJHccG?bt{Ca)rdP7hv+6PV{W)%-=@6421_kjFo`0V=l6w>sW?+sm@cztvQQw9 z)d@7dpD4ukyAPr%=wTG*qE`Z>L8daIa@<}9Q^#RK19{@DeDmO6*%MDcTUa7qST+}W zsu&VbBi!m)ntNwc><&}k%0w+0jtiT`fSv(O&4%v4T{ct))v}d6=o^6upDow~Eoufv z&rVFjdIlPX&6rPsXaou+9-0*1TpGxO4hvP9sce$*OgZ)`1Oud981&WV%fCB%Ad2^+ zFv37j3`CFoR%{`a=%AKhtfKI#PpMu8_H5Lk^yxDo=qMXg=y(wb^LzrrJlQ4tP(sPv zd{*xUD?0@)rk-w+=05ffB@2WBNdaU!z6l;xKmeHocJyB9d9Img_=zTH9oaG*$}**t z14|inq7y|gX`PrcgcUCSICg}<&&lY{4~5EgFH@;36gMq0$Pz2%w#166^#;-9>Rbm( z7t%bDr#~GiMc#*r`qsev^~BP<<4{985;f+pCB97PJUFEjNM7o@46qb8y(K zpRbyCsjB3$+R@!-9JE-Xwv%<6pIpZyJO^wX^=yeM0i*^oA}Ga|^_J)Aw~aw!a7p8O z4UhGh@3%dX5=lvlya9)2ie$$NOwj2i)I`*!E`$MP2=x$Qh96NXYHH}7)iQ0dBsDUG z)m6PA$fOkW*17TWK1L+a%XR8swBG+jl@xlC2EW?f9H-XJ30!8Yb%+@dQrM_&b&aGW z8r9VX+iR4%5Q6jv3~$^y`6yr~P4oc*1Pbneb96Kf3i}-;eJU;@$~-sgSc5X2BENRJcC&9}G#8p<-o_rHe>U38ZAwU*O(11EVo_G2 zbEDqX6@#J2kOoPR)FDO>#NdND;b6B8eGsJ$_M_^j0p@PXYrDH%!YTth_m~$_Dw^~} z=Cv82*QX8MhL&`ZU0i(~ zz}wN|8K|QI5=bkb=LnPOtsm9aY8U1MTF~mR2B6NatTxYRf2>jh731Y>J~%tG?fmo^ zqTr&=UQZ##=D$Nwr67fvrS!Wt3}3Cs4ENx7Y_8&obW1esmb-JXev<-E3VH6WGt^GL z?Uf>J;Ko3$xV*>XHL81p^IW|%LEBlxRwTv}J*&8xMoR3=M zk1yt{smU20Q!opBJQmaOJ5j&Rl_940ll(heZwQgx?%Tfp#`#j#a9!GJb2w8YlD~^| zyf&QC8df&dT9jaZDt=1GQ3{zEG>xW~wUD)2|b z&+fbHe7zGeTffU7<#>O{_!xF;1ca`()gJY3ydNfE>eG_tXP_foFdWlA0N!)&WHg`_ zKSMr3Kj%p091&3?Ykon^=%)&@PDlIFUWlxkEq2!6xjAR^`c_UJp8VVMK6b zXaDi{`t<#Sw`V^oVRq!z-iSgxA5u9r1}X!m!1J%Hck){kK=QQ8(?IK8d;a=(dIQIZ zva0c5&&tH>o@I8?h}OHu!fA!XPi`&}ia`j0+rMLUHw$+u@$RrE4(+Z_}G6j{%r(EcS!cAz{YHQdb zV&@rwe6s^o1uTc-5+LsE_Lz|OVGC2sFr}t20EIXVRtaS?7aLCVc6I5j59sTE$z@O1 z_1bFwSe?q!{UK&1m&6>&1hJr8PM=*|UE?Bi*@9Mg=3HNon_T_!Evo|z;USXn;`|7q zq8Y6LdkcGT$e;^C?z0&o(+U#|4N%|*CUWsb{066P<6bY5AzXWXv)QQ$2m}WOoIr7f2l`esIUv4i!==1_rj!cgRi>rf-g99I%>mseDGJ7LsC$b{imqbGm zPl5-j>WlWA^VQWxvLR^*N+$b=r?HQ{xGdL%f{hywDKTF(Vk=-aEC`06q@6;po&0Ky zeB)5hv-`=6&}|SZd%E-+z;URCVaj7XM4qu}#G;LEo-X3E-Z$?yWR5v`w!4!@X$hFlD-6>m!FNBQH+wT$79qSJ*!gsvR8e}r zq~Y-=UC4hBdj@Mjwm{rV-oeAov@^}3)!le(R=X$=N3n3cH{0${EIzjGFB`V)vJ*wt z@S0b50(qz`9jhE^f_`}WyT0+&pb!6|lgaE`uZ&Tesn;TWE0c!_U?|$!(_&al#>?q0 zoRPmSH(nMN} zj)vX4mSnSWJnu4X5TYDxUkZp+5`g3((4Ua!f~NHG-m51oaC6_Nm-gb)D`WQkr8jtG z8-|U#2Vi;oI>OA^{x}(4NvB=2DgM;`)!M6^?6sNir{I7uvwt@ZX>s~?1n%d;m*XSn zIX`AQChOilK2E+`YuNE&H16(zqNPzq@VyN_S!DquK(DAJIC-}A-v!eHP?1QBo8H!S zF&^`*n(reJ4VR<(r21*U2Wc$~ssF<>mn~Vi^ccpVACDt6M67zG|N5(ro7Sj-)aPSA zz5cZqC0+~mf!w%Sydy_RNzo8fv_e?l?|%U`^+d`5 literal 0 HcmV?d00001 diff --git a/docs/PublicFolders/ssv8.png b/docs/PublicFolders/ssv8.png new file mode 100644 index 0000000000000000000000000000000000000000..744db67987205a1133123b56787b9e2615e68417 GIT binary patch literal 81050 zcmcGVRdgM_vY^e(5Hm9~Gc!ZX%*@QV%@{K?#msTcj4?B9GsH3Dwmmubp8w2!nTJ_x z=AljEEhuCf3F`z)7}6w~xEx(tL4 z!Crp)%nxWYWF$%rqm7LagDU~h(t4Q|lbe~rdYN?4t^q>G4X3^^m4umrQHLE4Hb0mF zKlz?!{oi()6()Fsc0U8W9%rWW{pW;Ews=o=x;Td1NZwPrT=oYe5pkFe2r(QscV@^0 zz?ls?|2yv!tX|>Yg`K=eE`|tyrT$ekVj6Ox{%;v(6i9>2|8Ahu#T9q28|&ZIJDq%O1|G>olM>H5gH-qxz*MFJuR|Kd^w%Pu_HGI%nOnD{#V-zzA z-ZCPcvQNr7_wGsyW?rMjK->ip|An!KI10sVK=<_l`tN*99Dnf1LZNBCdh8)9jrmKC zNmHqV#r4zqOWx7MAL$9i6ZirHpKN);sm}vmbUrnZCZ309vp1g*_$?`=pFb!u+Qc0y zKVdJRRu#9g2S&tzVE4Xs2=D4A&%t1@3x%2oeGR=tgrBfbbWha@`d1a&$eCtx_SE@g zgGBw3+gl5KF!gC`Iw!3A3sIRmwfcGH;92!*7j`f!D4p=$9@x>j6o zcoyd)?Ap^2@+lPZF+iUcz{V{Dl}YX-9r~Q4Ogb_p4vmA;`$so6I1!Rj7q;r%%#GZO zG(9hBA!L^9dG$>>lG}IO+z(^l1cp3X3Kftvjxu-J4qW_r3N5R3 z%tO#{-Q)NYt$oD>ZutH+0iRDK+J57>=-$_5FJSaOsky4&|I;t1`x*WfXD|6>5v8?O&Y~zdSfrzgi4->Z*kgJI^VvB7V3PyQ{-oXHr;qAdonCkB>q% zVN}4xx?DH%p7EH)1pl+&M&{5EgGkwJbFkBb7tm}jg>1GL+|L+|jNu~sKnTV=?30g{ zi;FvYDRx<|&G}mBPGs)PW)K`Rg&3kaqZ`T_iH4zKU)-kxrzPS=>0c=IFbba-GebLk z>TU9<&t)Ai$rcmtSxTsFZ%GVL(Wfc=HL5>boE1q9y>l7CE1Sp5XR^emETz%KA2(yd z_yZuY3h)AJ!D@S3wXyY2Dk-Vr!q#(Bl)5R6(D4Z%rERQ^NA?<>Y?=onCmBXNXFUVI zfert;Qg>?UGP>bx{awXE!#CiXj<=329o&v+W{K)+{%bs{wQKXz_h2%^0NMBn+{fc~ z7&|7hk}alUMj-5P+xS$r0efOTtqzl%s+(sZ03H3tx-k^;#WnyWDFnu*wWJqpHzs^8 zadF;*p=`hS+56DNBl1h}2N7c_!F)DZnS!Piax%5<48LgjpYD5I3BH(zV&?ZtL!-CU zT5h4GNPMnFy+Y5^;J&Ih?iJnO^D1W)l%mBq?`x8Vx#8QIwq4o0^5?YZ>wzm_Yr65W z^;ukeukrRLE>h`;_aw`UELT9uD3&ym=d|on1{i2;Erb9|fcm3!P@7~3;8q;rk<3XQ zB$$ui0?`(=svJzR*Ii!MFX6zXz{rY_vb{qU$p}RNP&H&W$jgyRmu*oN_T4ytN#z~B z<@YE;UgB5w9Gqtz)*`%gZcP|fjSEhAMB_;p%foL$@vjtrONuO-83v9;kCB8Ao}TW7 ztbGY^i(+F(>!5j>0_`tA0>d#IkyC6921k-Iot=HryR>uKrnEYQpDGlqD0)c?8b@MK zABdk%TOI=reCn+VO1*sf3QZ(bV=H40aD7>i#~FY!XTxI+^#n1^t6IV55WwN*>QSTD z_>&gq9MZN9Vf&-#^dXM&Ei$6HdX$=opB$dI@=G)++qHfIo&vFYFW~1jg&}EQ$sdcO zf2xH?XZhJjk+43_5|K55vF51;KUNn)q8}R12B#N+)sJrYZy#agmM6PjM*Kz{x}vEJ z#vmC@6bhGHZTfId*f3fdF~L-?vCM%pTd%VxW%fQe(|VT8MtMgg zAJh8F)|PV4h#rcIV8|V8BcFMmT2TJ|ML+yWONRUN^uU@O(6d;={-j8II%bAA6w6%Z zDoxWc0EIx319SFr%2Y-o06llDkx24wA!)DN4j0!s%#*PO!@ zM#g;iiWS<3Yn>%L!^UQZ3KEOntX{i&V(40t-GNsSbMioQkVjUw+F<>THKK@tADV~u z`?%hdg|5IOS8q(Qp+b9r-EX$14Ex>J_|+Iu!<&;{MZqNf*)bvUh|c-B0kc1Du-vnj zq$1Di+@1PiA#ce%+%=m+;Dto_)6K30zOHN9pu3k3Ea zeaGh9i^E7#x?71!p!Hgry|JD+{IfQS`t*1C8LUb20pT5TjC2PrQO$oZ{Sj@$=4-zk zY{<(Q^avxEG!(}F!uNd3Pb);o`MCbM6dPVEqLvp#&Y;`j93CjkEBkTb&+@o`$cqYVozHbozDa2=tnGJ=7vSaw&81s|zj5AhqgMKRA7Xa$vhc>(VfcT( zh%9}I44;MTP9QDlBQLt`-IiRG$tAibrdm@bvR{O8*t>BZG52IkREx0Hm7L|BuNP@K zNWj?dX0hLs4^DlXlSfWL*k@iQNUyRrXBK;B*9D ze~5z5rYjMR32s+g+P3M)7%k0@8$U`36_7;sj^AG9Lrv&%+d>m!^`qxSly{npe}Tpt z#g@I%Lc&Yuti_b$*B|%|TGtiE?a9*SoD+Kr$LGuw{ne2Xl6HEl5j}6@cs!iy->qhz zF3zugP#{i8@Cb0dRh<5On~<8){jsKaEataPu)5$Qq+uf!^dcztS{j)Xp0XEtuwW5dTDStb63!&@2COU- zqk3fk`_EO7-&MWUa`8XkL96RQs8vLAT`KRrM^{$7B@dvtARt8)=IMO6ozU{5B;@5f zc<)cJ#36f$JTB~*KjnL0AA^8H;D(MMxqI*=equ=Q&n6mSsLhK~1!R}%S2DPp!$DT7 zBywFHP3)Tq>&<&GI8zqi7%at!olvgR)zF`wM~4D*Vsp!Jl)QFF)}PsKRGK1E>fRVN zsPiWRc0Jx@{1artHv_JITd$5yZk?_m`Qy=m3D@s&B?n;SZ6Y_JUbGoU=A>Bqa?Ccj z5}|9cu9MvaM5MQ=b)8S@l+-aJ4II0j&&w~;u4gvgz6KH{!S&HUv&E$E_uy+aj7C5zpYJy#%Yk>8n8S4Mj#$=)t@2BWkX5K{ z2>LDe7s~1izVMe!U&&K){MKr>mw&m}MZqm)|Jjk9#sS>)CB0(Ck+9U6RKw7)f!jbUWKCYVmP%TGK`E1LFr{m-|CvCjvu zr{LsZx~F-P4na{K`&ycA`yVN;dw`kPKkpe%IG=dKyH&3=9rS;ZQH=p;9loz}`R24e zFi2MLJX-uI0Vu3WD*WwzBNEX`K$7$^F7dz7691;5+wC9ZeXjhU$lL#6fS_kTS!nV7 z<`%8V0m^i2`JLVCA0qzbSu0c^Gm>iuvHlEQ{x`_ph{OiF9fXU}wlRHJ?)?M1pDJqa zXmr6+IH;R%w&jZ#ew79P!tZ}^@2CARF?qtQdcW;6+bhI1GSep{3$OdX?Ex7}FO_HM zKRs>#2csXOs}#rz_R#bVjg|iq>#TwtEaz?g^W(=q@Xd?HJQ5nXyZsMdm!L=%KJzC3 z`2l$)WBgCwU0p;7j{nW^e_8*3B=Y{}Q~19J|4!zA^a5G?J?Z|@7Y+XZF1GOhM@2|* zf`aQ{+=V0Tg|XlOJXW#m$$y3rZ@3F<$V$MdU!?7A$cm-Q_uVs9v{pZZf8akNria3> z6hZciqHz5-D3BPsr@B+z7i?$58&l%Hqn}^{T7RP?6-emFAS==d#KZpcI{A#M?;%W{) zXH89)Z=OYmhjZ@#I2$O_tWYJOe|fF(%Kro^B*uBYJKWuEt??uJ6k@i?y0ez=zr8o^ zGk1@9WR2zTt1|qtw?%a^vg*w2pYV_Y96%T0N~7nfE&(i$MmR$`r>*$2%I36j-T7gc z)jm}qZtvf&x`sHLkkn)?OVc~-WF&4+75cPpZss|}^u1o61Uax)%VT~>Y)Ch<>+m?^ z+Te8D(BbUAD}s{5dj1o(+6SVU&a;CBIaf&5M7&w}-q-^jWRC3=m zm2PF#L||@Q<$fh6A*a9P`7MB5OWUmny4#@~ujf#4AX zFb(W$Xrhq~Ktchi>*lYx=P0&Ox2}_L6VU#{gl4`T$CbEX>Tepj^pvm=F#@`ldpY;> zxG&|ebaV>#19&*=vYIEf>~sOCYPRwI2I@ zNLqX=Qhl^XBt1h+!WQk&Qk0Pm0OKWD6RM_@87{TVO<7(@Ne<(3k3_TTY!4Pa4+3D7 z2L@cEXyGKn{#x;h30W^{xTo|WIyO!&T0{1{*iv=MR|xl%a+rfuUQFu~52kTZ$#q?2 z+p~d2xLhQ4OFGMSG#zlJ`AZO@^Q5|(>wmz1+aPg($l+3F=VUA_1yOgrC~+*bzE z=1%BX@Ib65kvs!nDB4a8U!^M;`hCz=tE%`KWG9a#Ju^4@v9e0MKmm4840}+%3*pqb zNKUdb`AgGCdpx%d)p?l5Y7c)U3~T}=yx zW+6td0V>FtIxvnlq!L?Eaw#255LTDWQ_B2C{Y!FIB^NM_=O`i>Gz^(1o}PpWqe(L+ zEFX&br0VOUkzjVLK1Kyei!nIB>Yx*Vy_a6qetKgC)$m{OdSf+J2?FW@C0*jetG@hj#=%s_?NtH_oL{2t}>Z%PiuZlEi>$R;h zpeH1mCGuA8GsZCj)E#KhJ3jM`vWx`p4)%vt0&Mw7qksTXfu(>>1Z7Dv8RekseW|-R z1d*)IQ7V1~t)6tDSQwF>u4T&e!N|DJhUDkr=t$)m7SEoWaLWVGC3K9bfvBCa+r{tkqPaO@0Y+E{VZx6>yF z!#0Se%v)Iq;^lUW&E#andd*x>aE~9SS+4zWW~{W`91%9SoG)U!5RhM5s)yRB2xL4` zUe%S_2C7$q(twaG`ZCHcRvTfjBaZW(t7vDt|aJ6`k)kaRdGf&)QEhjOx=QRI#!A@tDC zbed+n2WhJ;)r3uwPl`8e3DX3>!>M#bo@eHh209Vsb6=vG;oTJkoIrd^Q|L3Si_fL! zB_FB~+&|X|Fxx6yItZNKCL@qC45w&b4sbS~5Q8@jL;CDvI>@!#oWo#nNUmU2;hZZ< z70hE$c@IPbVkeg18ZZxU0l+d{yar==xfD*MQpXvK9odtPf66)Q<1zy4EBMC|=@?5aS54H3kJf>t zncf2+g{m4IEc?`S>i6BjUW+d~PNG3^$4d}rRkD;_SP>te8#NWQ@&u_n!+j;EoUhiz zYsLhYQg#$n$=(x01pDg!+?ad7;sw?b6a1`@$NT_K$ueI7RcL6aQZs@cW$`=P3A*sY zoWPTjo*rJw7gp^No#&*!?74RRFzD-WRT%@g#0*h-_UyvBnGg(I&R-v#^rp!RV$l(d z{)feBZx5HAi_>KUR)KEH9YxU#YRt5Rz=40Q8erC}80~4fkM>(Z3;yQboWHjdyz}DK zymdaSUIoRiC{y!*-_5YmzsR9LRY|bv1omOI4~ki7`d~x0uj4uLg_I+^5&V{jF3)Ae z5aY>62X^RIojSSjQVG66OKwN+$q#4=`k}G z-!(HLqM$dEZ;HaicehzpC(Qf5GL@1~I|Rd=Y)^+kmQoHGgLNpGp0}lk^i=XqClFcb zK3s(AHe$fjl>3lo4h+gIyG@`As7tw3qa#z?+BB$4rYff4!FUdJ|CU-+d>4o}{Zgme zube^_RW3inu91bU{EbNiMvh`6&2+@{Fv9$?LykjLjB&sJrvL;OffmHo31&{8Y-mK`2q z;`@!9F8H^cl9d>H1!=)1E@vYdx-M)S&2g7~Z&|GBx9>UxQ>hD=MP(@fJv}Et(<``6 z>!jv-l!3`abl6gJ*DL@IC&Z#iuN+TtCjlZX*Tl+7x}S~V>HJ!j*UHi*D$!6Hmo;#Ln1eVJZzui>3=@_mQ5vI1)9iM}vgbfa*djCZ&aEwYJ zRncgxKvbRTY+$F8hA&)8Ha7YjN5;Me`q0w}^HOV_rn(a4W#q2Kb(n_gOKL z>+1&nPGS+(lwAr^6FsOZ8QqH7GD1yHGp!12d@2eO0QmBOmI+ppTw&VJuG%-qh-N!Z z?xHI`KKp2;8Yp@oXHUyERBE45cF8O;WD$HRCujZ*BYiqcq!OG3-Wgy24d{uJ$8-O^ zP<%p=K$ezAdCIIJg?`GwYH3c>3hxZP2F`>ZLl$|!&=j47p7tF51Kv(q`XH0Vzo>P9 z?B?SWXwJT7c*yPL!#hPefL5NZ)Ze?bPZ`Tg1p%p3`jI=!5^${FJfbXENBZV*Z z&*qjNts}J+*t3(tO)N>MqWNXQ!rLJnNi=jnm$e#ZbsJs8#0H#==L&ybUicy&vjiV9 z8Y~9_vV(rpAf6ltruFrlZgy!JfiuNb4vSdl(3-&!??t_hM^hi~dOyOmOcxaP718;T35D=bVFv#vRxw0M- zD5FvsE=nCv> zJY|L=W1>0WxAfJb`!m0y_mEEjgRd#_lfa)u@6W4R`BC<(X^g?yD$5|*@*`Lo3WWQa@`p(8$7 zMfjIDpFgpi2uSL77W?cKXHSLB!$BReB{IZ<#|KHyM5j_?NyJ0$_kmLx%Er8|JKK)S z4k~(?bJ{8*Z_jxS6@)Jaru#xToaE{Ycn2L=!aH$(nVkebmd29vq0k9i1B3QgS(13E zzbOXj_0BJ=`jG39Tj65&pWAX zh2`XX&;^W-32t-wQ#UA|4i(A5q9>=|X=E}Ac@A>XTN#wkG(WJe`22My#>iW zzi7SniBe~&kRlyUjFZA5IyW<(CeP`7HVF!q-@_)^aOU!3T_trAp9s-SBJRuOP`EDt zT?^;R?}Fu)U4aHiOq-7FBGgzboPcK?6+^QJzunu{`>|KCCIlYG6XCwwkzyJXBzf;m zH6*?VDe2TncS;i(86y(KHn&$qg;9ffrbsOLg^H?&p1L7R_rAC13>001`ss_iIO=Wq zM@lzYV4RUwvBhNh?-7#VzSig3uX7c6AN`(p8G-CT*&Lah4&U<5y%e$s-}_K!XX6_a z5kgDWuDAEN%rA_f&b`EAHw*>-kDuS%8~DPw@VGqfOy}eIG&1V+KDBP{yBI3#j5v?8 z6qn~V429n};d#O+H3xExIPRwCO3xxD@~@10+#bW^5T)DH7kWZx7c*uA|74ZA!3qi3 zdhJhTHm5v&Hl0q*HQ48RjEx!ZxO3l&j)Vpm!^nX_28wK1d-lgE7~^gbNu6m4YHotS zQ3YI0%SE zqBVyC0tK0QyeP!bInC-nkz?FZHv1^8}&iV=Gl0V^)DXFZ{8Mu z`?#m;XR?IXzBanF=9NDi57!xflo$6r`?^s#jNs3NKHz@X45V2vbfb)vYP@uGIgEA` z?rae&chuGLtuh%ro*8P2lqZJMFcxSC?xz%7^PN8sy}W|Pltl(FtcmTw@VnX>4S!lJ z#fDk`I4e?~mRB{J(GvZy35X1DPp3)kuTQe+bCZt8$iT@IERp+2ltYhx?-AQ;fA{sc z{fs65ahBg*rb_;!%R$D;VpG}c+|qEeQYG&mCnXg}_~|;M;GJ2Lh9>UJ1|pGD>h40A zs5HQT`zOm6qWKn~1QK1li?pPVi#Jd_a?YQ%yV=Q{`w0ROvet-l$H2FvNG1Nqa@R~o z{dO~bYDF%lvWW`1qw*?L+iS*i56>?cpnUo4TyMHZR4b~4#f&O{!60dB9Z{IOWaU-bSN^ojG3 zb6*5bvh5sg;E|~}Zu!+$tZ-5SZEW_~D6%fw=qUO(HXUAa<6`m{_10FKolKS3qNe^v z`Nr!?Qz=Q#q*s%?ugb>l@(7>0#>`IV*DHM)gr=<(;>` zLozJCqWsq5yI8Ca)-a%Ro|XuHICY2D@aDK^Simm6jz5|8IpC?y`__`WJ6RsD9sHB^ zIZWdfnNSPler8|lpXYf6?@hSl0{hQ3=~`Q zONYg>OqD>-pFah3ia|Z)f>R(*g^|S96h4)JQLFT$=sTn5y-IEMZ+|)|_PFNX`4;$b zM4KFwl;ZvdUKsWTqy<2I_g#<+)=QDkFdQubkmTdP_PD9g0QeWSey4&F%!_y zp;LId{SoHSM*QYaV=j>N$NSsO;mjONIPs8qhNdpDF)yKXn^n%(qfgRA%;h8NRHLdj zy|)v&_sCjU^M|2rL7BWqroy8R{3y>dJ3@<;y47lx{nNW}IRj{04)VJB={wW9ojcYfZSS zWA8f<5@l|b-&8vMsJX0i_5Pzrd3eR^Yco+_AdYaw`wa%-x>tYEFIEXNJwdSx8lN8C zU+f|Dy$ho2Y*$-9Zj-uPv~R+IzHxtSlB)Ea5OHND9`8Pw0m1h{UzngN!>nW()^ARd z9B3wvs(VP>0;ksgPRPiE*qs8yPO}G(anJY+#4g70-HXJ*)_B=Y`ayEmJWGy(w+h$K z0$hBa9|0y;n}3w8#TE%1_V_F%EW+X8+x6vjBfdH7|2cD0q``IHRA!IS26R@8V46`h zF9X#8k($S^p1}+|hpo)pfg!is`yrZ5@p5j<7ZA*fjS9GYLbuL|&k)l4EKTfv31>Zxr z#GbGe{IJpVr@TMp#@vwErp_U}cR|!E`-VPw_OTB-8o3BAYd zw6~^>xRp5Dpk)?_-w;2e$S@#gu0|NN2aBVfvf)$LovPu13feQEt=QM9JAUy0+BsxiKZDsbuu7IYuzk#e`rUvX5(B|fP%w_sVX?oHQh z=*pGZZaR^nrionQd^{S3u>F`C@=L_^uv;yi6ZGE8cI@7Hy`9{ZoD-+c+vtXxa?Cn4 zrEBf&zBq8!P~qL!v~x)sFPqubpQeyn8%=#-I%?^p#^HsiLaf~;6c0YeSgt7> zVHfHw^?jWV+)@B_w+VJ=OH@+H()a_u%Ls2Je9Ci_4-&TZ%XS zc=$TKPQl#MdPhCDqgRGoh-D%Nbl_Y845xaz`vW~g@%z+wN>Sic#Z>qAW*MmQkszk~ ziPBmTw(Hrfr|KagEULcM&bVUzn~RpVlbcs2Mfeng_>3Rdw9Vqu+9N|rS$x1Tc;E(C zWvi3lRT20MiIM%;AiiEKa%NaARLl#K?$`GZz;r%`8=cnxryjpjtAGXqf_nd(sGcY1v0$yRT8T zrKR1>DVH}D-W+jA!frz1MXOR~zteG(T=byaFTmGqu-Qqrt;X%s$Nuu7zrtPdaof*j zjdC^Lal+)D7g!8S01wKPHApCb@`XRN=vv} zSHz|yq+6EDCa1;Y)MMYqJzw7@YVfQomRF~`Ad4s}%uu01HIRc*U3tM-AZSu(zXZjK7da?=0`!n`4G-tQ>VUzc zph@Hs59RlBY1g}cPUt4}5k`R~INY}_1oZygV~AtOU+0U@5cTp#hsX*#Rm(-(kdtndiOOpb=oweT!@oNMi~tZJaogfL)4{G6b08a=HPoGgD(i$<0FnrrYTp@iQmw zcJr~&z1whYC7yCqxaLo_t!lm56kU4>c|o;wdQml9z<@5Bh>m{xShIjDV`Yilx|sQgLC3g;~j9A+>xvi(-QrTX4FHy8N9ML}IppdZc} zwHD!a-(P=US>ho_8?ogDQ0XgAL5N&C?rSLM((aNF6u5}dl(Of($h}YOBxAR0*xooS z61^CyNK5GsSHZz}^xeL%^W2*5!Z9c4E?h!BXXu_Zm;9A4Kp@RGf&%r4#Fh z9=@E8!o%4Wai5iuAZX!iXTY+!hf=|U-%yZbN{jo%Dv450iTPdB|5AL&#y=Z51obNk ze40;&P&qyr+YYA;<;F&O-t@wFHY@J4PgG%gPPqM|-tvw|X9ih9x!ub_?`0e4s5{n< zYT{63_xGT}1+3$F^?ce__O5iii$8s@cN9(pJf9blBX?hBeY}q-!WlXo;~M&T#ls^- zipOiH{VkBbt>P$dC(oN6)Oa!?LskP|YM<^-tP4L^eKF$@zRWOX1!mr_jgvKi7+0+w z=0GF09iDxG$Co?^g?2v=qoj7%wEFJW;iCDYDgCLqlu&&FU)gwe-;~vE2G^xV(h$GQ z@cF*<>(ew+b~((ovseYb=)Ya`X1%KKYkdD=Yz+F2w>3V<4`bq1wGbg79w5$)4XIsm znUa9~WGL_e*c_YtY%lT=3r)7K&6)xX*oNXN`Dx+}IX~Kq?HorMe_-S&(v)R4N?fz&#Jclf0tgqGA#A=L%p+&T- zLHuR%IO#!zfXV;!@dBsL&eZ6xMPRUeE#!IUk5lkoLd%t|fca?jOUr9U&%>CLM$~&m zrO5_ae4MABd8JG$Qd;@Kr662JMnll=8L7G{hN-VA6S*yi*)0qmAUSt35IsFO9^6L` z6&4pn!h)f3ADdUo)&O=coG){IaY9_6u#T0M4F0?E4dOLFmp#kw$$(U(j;w<3txR;ooeHK?#8xl+>QLdD zABohRgwHfWq711`{!bkZKecQ~J_BwhRc?>5dtJB~wvoZHscAO-Foe1fcn*_`=M@w+ z$`70aPfJT0Vy}MqnH+W!;2f*y-%M854a>{__FaS|nPs8PQftJ0a5tL64!;U0q>{16 zKocqnD$rtWe~p6O5quf&OtVs9EZ}Rr&ld@AmSc__5Dt2Iexvr}cfQF){4!U_^D?8- zVE^qhQh;{zhxh06My|qIlk<0-n~^YRW0An0hWLsZ%7h<#KRCY5cAcDqrGJRQH=(K!j#U|uxLL0GIUy7q|6Hl^Sj&Lr0t z_%x%dIj5U@7(y1?7dH=}j!4%se1zbddrE>-8F&XP z$-kB;{0N+HNW_D-?y|x_2khqH5H6u#4vvU`{}f8AHsml(QGY%No=)?C8q5Vug;KCh zPR>@0z03y#e2tezM)9(%lB>w8v@D%z)nj7WC~x_yE|Z; zkWjk=h~c}So;4`qsVslJVQCutGF1bkW5|A);B2OpzJo&6c)mdNje0KjVmWJ`Cb5+= zvR!Yy=|Of~Fv@onEh(AtKSut+`*uu@WwCs=^*)Ic- z`Z^a?SpmGAR2gL_ZMl#AU?9$hqw0Ju=<;>$y+nI1^NvA8={b}}jMTo8`#i@<1Y%;( ze`H0-86XmAtu+mTDyQIQNRj)+236FhLv+4!NJ`m-9olJBodGBp5EN!gzLv##^lGZd zpa~NtvZFNKa6`!_a-(54`2^O&%qGLbsk>w(+1XNvoPeuBBCGpC-=^`yH4SI?^c-qJ z$xhsdz$i?`aO=g`X2X5ez~7^kDejiR@|~^GLv>6VpP;MmVdE6D6B=S^@~Q@oa4IS& zMH*-BOMK}m6H7i9Ni<&c{qpyjp^hRjI_CoDfXvNZ4>~n!S7>BX@(N6ShZUf5{rwu4H4%P3->dIMz~W! zY=sv*W)Xb3suZPUx5DzbEM>Riy!Qev>NW#SdASvLpQ+jWCQruzRYJFh zj!K3{0`u*QMRck>g^#uB;2Y*StdGEcAQ^Y83{SD|kKzQlnrYO6@dybFY;OH5QsS?- z3~o7f*ECFMp^N320dX7>NC&4gqqC8D!lxve zPAY5tX$d?Zn-gsu^~fT3ssq5eX<2Nu+@NN<06gw-74xFdk>0?Gi=~5L+HPnli6-)g zfn=td2=torSB*m&e6CPcD@BdA+5kJKOsWb76#BGt$+d7@WJOgXY^2nkD$;|LWVw4J z521TBICA$?W!*)A{%SZEow}4@k`m1lW;GOXiZvas= zsh|*1MI(z6b(7M-@45h0EMzTQ*D&+*FVLGPv{~c4y-}Fwq7h4Q9{a#w=h%~S_?qx8XI)_zO;!6E z!!ID-1^FwyOsCmlp&14kBlin=T#Yhk{e_GrC83*Ebu?v&m`SO846zPip^v2~MbZ6m z-WoE4v{~OQ-tAa3L$N8(#Kog)m11%!hS|@q#6Z~U=m)29NG(2){7V;0^GoZEj|mn6 znwTr=Gdq^v39YsZ0E?0^i0=+Xb{R^Y=6ig^y=ejTNSN3tHhnm4U|w@{12o)#G25_gBAy>?l!eT~kC;&`xT~d11AjpN7 ztHZKM9!t-uwhUVa;Uq%Rsa{d%;8u!~-k_%-qy%3^oFsx-OK}ZUvkCHTR~@dG zVoScOT1006Tu=bg&fh9g?|I2Yw_FXXApIPM;l16+NA`PA{FM?4?uQFGiWllLteiy$ z4&$W1!D>mzNXMvZmBuOWw9*6uQNJ0}bnr+Qpj@+XljaP^gcwwXqg#)|6*Ra^-e zif@@Bl?2{lZ=OP)9uxZ-iV(|k^)N=7iTXvq1qG>Wz`LN6_i00hr;6cYljgdH_8nx&56`aP`Mg%grf5oSVj zksPMXcf|!;-f%UtvO_4Wk=hGejGr$ugD$(6q(P?w^0ME};IPdL!P1Iqa_TQ?dGWl=p9sNy<_aQJuE@lVOs;6i56k%r|F6%mg1_r>?w>G9s;FV=&zNLGAlTY(L9=!4|B#<8eWrl z(WY9gWWx;;dz3c@>n=J(T7bs*oaA&*r>>MXzI5Fj5Am%(NiS_2PrWMjGBiE5M9j2v z(lVi8a0?65MQv3rQdWMLLfYp-t_ZNyTv63s;a}8iCk2=2>rh6P84ioqmm`Crp-~1y z4|XWpmmJYMb5V>LVN<16WmAQ0l0pLmyp>jul{1DaoeSeD2E!_`FPNu|CZ@#)I5+8Ou_LYJjLPaSh$XuwzST!K_ zYnN5yV$nizfWlvpOmR8PQ`Ia>1kdqI4Cy?G*wZ=h4EI5s!N;dj1#`x3qjvjyt{iNa zi(f&^`JuXAKL8=*?E{zS?ukwEt;0v81OHwKVspO zjLbfZD;|;RKP%*Tr~pYEFRw^3DB{~+Dj6-2htl-rLOmHW@D$4ww{^aymW=I$%w&I< zlM%@t44_<^hTGYnu8ii9Qy0TYnIk75@Hd*R*ic;L!G4%Js0ETjxwiwOkTj?9i^urN zHh2IzhMSyen+@|ZGAK@y9!m0I!6;Ik9v0`L+ETd_AIv%Z_s`@apI=q1#9xHW^uJ4G zp|EeZ_!{zq^0f9vw}ilNV1gF0=J&K%_^W z1Xp5ZV(m&m`qD*M8OgBcjAasR{tBran>M{Y@;s`9$pj)`VR3G4q3HOX&6si%K#Wo70 zm(e0}HLK#1Qw*SODO44mKze-(QKf4RP`ps6N>dYb!jt2=MMloUXW%pvk1K`JA(r5X zlTc=*SZ}2)hV&BI2G2k0Itv@}D?}+^~r_K&(RZ z5*8Qv0k54DiB zLq)cxsAX~sU>T2m9$vHR+a-cJ<=_i}V7gPerj2S!kp?-me z^c~J>$g)@%$Tyk3Mn;pt&c!%DmV{6uDsm#O;l%JeE__-U#uiuMCnX_(TmW3qX^h2f zk^q9}TcRW#o#IDqoF}g-)OfPj`B>0%trOMIaF+)?xVji`PtfBnLFn zeTgeXKJI1~k)xX|;t)H&3=(@pqf#VARQHo0?2+jvkd$)b@F%9_&m73u*<+^_72ecQ z&JwzA)P$Bi(kfYg3KF!il|G{3k1|YVPfej!t_YEtPe&HWftMQcb26hVJQM-g3+ntN zrZA*}AIoocAPD5>0(ok5ABNwGQBzME@$~eRDn}x z#Vx7A0cDGe6hcICs^Hj3>40vH&Qtok_%}`e zrJj8KlQR~~K8vxzuYa+)@cK@AZgo>|ii`Q_38}QCWQ`;yBqh@`R(ha4a-bmSJStnY zb;llI+7UjMjB=%bG-3i;Eb`%JBxoR{CGj$vZCiMKul^KaACE$af+fh zIP>1mK71JBVU$C9MEOgg$+d(S1Y!m~4?sWohnrGejTuWPiC929v?G9vhyiy=^jrKK z9TtvKDKdrtY6?9Yl^#gdg&t4@DfG^sI6d$RLIC4VlcPe?eaxSll8nOUJx_8YU8ClJ zGU3hQXzKSSj-Y%IK!p@7C~;#33IhM=PhuqkkjIN25S=quIW~$w)eJgCS4}<4A*20> zj|&}qJc8Z{`yT@F@pSati7x&lfbSl?@u6svx7`g-e6noDqDAuy78Wd6_QO-hnLD}7 zAU_v7)K?W_Ty&T?BD+cLLex)GX0!w)DMiseRFP@6qT@?XJ+k4s6K^{A#N&_a(QBGc zRA{7!>o&dPN@5Y}2?46y;!ulu)YONm&NzV@2RbzkCILecI#wzX_RS_UIn0jrBe6*h zgWtpiGvLlc-UZquIHaaScL#JoJ&eJbb)b5kMdQ3pB5kw@TK=@0LC?>>>Y|poiVNbC zp-c_`tT$?q;oDZhpK3*HkS3;*(T&NF8KXUwtQ^V1Q^W%;o!jCV=!8cDtMm#cSUUtk z544fx1M~2ls3V~Ps;SF1MwB)+exx9_(Z59X&mA>E4@WdmGHAdLPPlmBiZq#>oOIEc zxz}CLg0t>$gQ1fm1r=7QtLC5O6-|BcVqo_KHK9g2p(IigQ()l9BqIcyO4=10v5jn? zh-$~pMnSWHB<q>9Q0Ug2)=a6VM7_FtecGH%cl25mArPXW}Q*qj4m(!vGkgC4U5Ii%+0 z1rvk~BXMu(-*Sp~^S2R|RqjkSH>X(Uwo1@Lbg%(!V3WwFiWwsU0x@`n#z|JH$f`4H zL;>hjdQc4M5IL!mg*qzqBa|!XsL81(-9Pc|s~bTK&LXiUCWd%K(g;xk8M3PM)Mu0d zu!3^o^u;NyXW|-ifB~+Ck*wDyJ{0oIXfLj%r=(v<^`Rx_1slRaN78IKdMIYfnnv9g zQ!NJPs&rd8CFzgvVA+hFy0tAFQMd3n&*@2-?5u|i7UrWM7tHwRyF{Ig%eI9^ikkM_W-HBBjzN8gI7oqn z_@~0+?G(L?h9*No(PaVNYtV<5kb#pC#icadrHB^DA>hoXUmNn*v%Lf^d39|x^dQ`e zIG=>@AN5NPFA^mCCvqK>KK~nlifTy_t!n2_i^dMR;{3Dv^f`6>TLZ=vKHE8Mli%k- zn+`ITmCPb`kVOop_++ap+1{mQHE%>Mlx5rDWUpfE+8nMZgI)0WlKn><>kVyLI-Qm6 z2?yD3dbuBy8>eS8JCveG2F-=D6e(R%0;#NmWwxw9^N{HMJ{BM4WLa_~613?h7ihpN z!YZxo#>_BudVe5zP0e86yg2OK^RIk!O=X%B-DAvch5H12@6Q%nBP3W|w+&ben0a&xhO)tzL>$z>rkWZS=$qUQ@r7_uX~?52?2@c0bn*Vl&j zJag#NE315w5WgAEqeGHEYjp`@a( z;3OWvfEBdu=8er9Id%4GId$tMsZ6hsJvm9xxyRbN?$2>oo;~2)PCc$)?K}PDSI%WY zGmxZ%+cM{M7|_~oCMPj_52}^fij`LeAOcBRuPO4=C}*WvYDSoq5Lfj2RLi5$ppIC8 zi6?H9l=J|z8Ze)o5(%cH_)$-=w!nsPy>@{-A)=jKTEmO3d z02~95;3Ysrc{y5wI%`7Z7)q6(WWez2Da?$d@;7^egJ2*vBta`7Z-Bb)pe=_PeTR=; zX3dL=r(!-|icwYNrFAkPH6n-g)F2CcvKvvwC1~~isNM?7AURSWBImGO-mF%QI0sp_ z=}Y!98``3$R$8QGvdEq^WI{luS~@d5dSftw7#Yd3N#zytq&I;mp7e}8VFP9P$L^FY zst;5VeDxZOdTMY#ma7r6qdHn>Jk1)~S$4*ZueGF2+x(>p3{-u3RhQni-(tY)dRe;U&bEy0DYLbbzpXQd^=L}1*a}sJODv;GM%5zw$CVI$c!oD9DHtgU zfAz>or*uA}Prv?yhF(1Ox1B*!Lkp^hm8mil4b@`>n1Wt{p4O^D`GvzeoHfoaRhVEE z1b_(X9u^4&)9s&ahMvKwL>@dZ@LVp3=us?>PnOL9`nK%WnJch{2! z4t-j>_@1`R+Ed1~k}c3f&t~KtT4CtHG%EQA6wm zc7@XX`lH$EZ6U+lhJk^prDw4<&t7}pkjr2Fp^CpHP2Aii;U!7pZ$k5?u;6YMsmNdv zwO;f3ydO%7m`Tara#j`srxI(Dmch(mGW3ZyYoK0bmx16+f9{pFh}>?-3s0T0^_kS#h z_W>KwX~gs=m9hPv%l8B;sitF??zil~jh{{#l$9a}cIE6|edp=7F4A(#jV(uB_uMGu z!>8H3ub0^nJs-t_6zvom+g zmRFNK*k(U-{3CO@RtV2pIblmv980X zJdr+j}>-NO^Gl$*NL1D=$yT@L5&bz<+ zB6gK0Dfx^?J{{f}rdv*1H|?5hKKzRXcPUk^uYUe6`{VJcBOe>sG93Q<@2NLm^Ufde zk@P_QzK_hkwew$UMRrQPy!(#3caev+yyk;vhqOXR*fJ1?TuOLb+Sf03y>lkG>2Sl? zC(moI$&$6?i8Dvfglj{5W4vo651;h;*%>K{zocIIs=NB%G24`xddvf#yk~v%lzhp> zC+13-e&2gnobp<%v0$V`RyQVi9H0ZJfbRQynH*NEPB%|}`S`-27rnMl^0F2ee)wt6 z;tQ{zupw08OG)YZ(C4>x)-gg&{_W$TL&yFo>E>CFe09v8cUzovN&9f#=vT6bJ=Zbi zmnowzczKoAv;xB>PQEDD40(K+WyQCje&<(mMrDhEpTFO4(a@nU{v5Hr%-8D9H(xk9 z@0OcC{C-DzYIffTrVT&NHtkB^pVKbA=7Sw(sLX~@rtv;}OmaL)0(f26(UGVp=>Fl< ziHk4+@QQExWa?QcN7U!CukPwUY7Pom>2UuiAFz*}RxZ8xxS*AySgPvro7x_u#QOHNzN6+KL8?FJlzXS&e9~6QY><|< z`2M5soJmiF`q~Y9;b#4#@qrs2Kdp&vRqU94|5fjO~o(6t2MRR z&vt%#0rRGNPa8e|#!j%ik(6KG9(vU$n^<=4?JvAEsI_KTZ34k{mFbrGchc(TPr7YB zipa(g78@*cbnQ2IuKQm3cp4*hfFuy=m(ST=XlOz44B4ELKps>amjcYgM!f6U-V*PHUTP{h_0 zmYR~fYgehs(r=kO?X1jH=HH!Ovh21q?q1FURWtyhDTek}On9TsgdTUyR6V*8CSS;x zn$~Od{(NXb0?z9~0!Qw`NjUpMXQD?i*M1$SvxZLS@2 zxBS5~_IfzeAe?fD$ zEO-_cy*MA0NoR5;j=J1DVYqiy@YtCl6nIM-S8}GrW8I)H|r!|R4 zx+jRy>}A&{72Z|p^bgA-y?ZWNXn!}L44#u4J@;&77_N07O3<3%F>XfQ`y^cWEl z|5E{ zmDu2M+rE0}R2*X9(Cz+3OAGQQ6x`kdK1ATS@hfIu*_744b@J50qInCxSnE?FX)N^ZD*A*Q@I-ALYG%&XP}VY)A7hzBVrx7mOZ4?>l7jS#NJ&`CvaBWit81`pO17(y0Tww#KDqH$C;_MJyL;NoFTM{QcbN7a!9Qyb(L6y|C<=p(oHw z#^}LNmYm5et5zSpb-3w+MNgk8ra-BqXGdN(Z_UKpIiDUi>$?1K2}@@c ze>}Puypha4BVSqY*r~1f4Q#$aL{6d_WQc`squ`2Q$J{b@>huxaag^@ud-ui_6EE%5 zIhDHT#%~tQfAq3ONFnP3$NyO{`e?*yF!;5}(-*&T4!h;+wO^oCi;$#!#>QO>a+p?U9x(8MUzbug#l1`b=JblrzVb=09?_+?b_vHcoqP z@t7;RLF=?u0{P}pO+Xnc8h-*d#;OB;O$6eHZqs;Jo9o_~`rJUOQ7Bc7PrUQ%$KEi0 z+Qa84eTGkcYNY39Ta?m0qYs9|)^S8SXG)Cdht$;(<@`}X9Q&gFp)Z(KyR^NsIK ze`JW-_r|HOTt*=$Jh}Lj8#QwitneW3%qD6FR7g z>cp^X2R>0>N4_;Oi=zkXwUBo>5|rX;;y6Y=E~$tgcM^?6ahzicj^z{=o^V_jC{8W0 z5@^Qf8-H8_Ahox^we!Ps#UbA#(LSgiepIiekmx3)tw@SS<1|1z>zYfOZCLQ*#>fuV z=c3LPpH28|E43oM;Dtvw^*;47rtX1bRJtM*p7GonZ~SVNvkGa~Z{>2<5r4mU-UX-h zJME65A9ug{V2`tgoH**ZQy=|dcfe@dqi^!Kk6!t)gr#ZBQ}WimpJz8Xz76u#cW?XJ zDw}=X(D%P8*;umE_@#Vnw(`^F@*TOM*^f_QGs+7h3t#+jT}!#j)2TU3pv;1MyfXV; zJ;HgrHS@q`D@6%Q0*2)HYMi=EuGC4C&-)4q$n?1wK`RIvctvv%<+<@lsy z{`4&8&V~cY=HK78EVR*JMFmr}uqV*5p0N{=%#aT~XH}^!2b-w77Czno$pU)C)7&k- zl*Wzput#Di4Q*HY@%V)i`cz};{MW{AJhA_U%q#Ib?$|KmQ|V0=^s)*JA0r+6^htZ~ zqu0MLVHxO=cfEP<)Z9irjz%7lT(-6Nz7t1G1xLQnn-9&%Y~A%JwnyzZv}@I@NmDm- zR`bR@^jD8Q(0?hjHkGanh2}ojf7}LZXRylidui~fFfFs)Hum0oK4GOSm|2mvXw^(B zWNTY6;61SGqc^~3 zx+>|r-nwsUX0x8C)i!JHtNQ+>OGX!B#JqFimS9@_98V-dOHN>ODSiC7mI?^QNu|{- zF;Hz|QpA_ls`0=v%NG=UF>6%d_7g7r=$o&~nQEOp{Md>)pHKVC@_~~%&pfiO+o=~b zwmH1BL1f+|pUX4Lm)QkxzyJLaAv4&qb5^+HseO_^{PfkIK(R!vzisS``3>5g2tF(4 z7XA=y*SpgZUi7i;j_%%g=Yn@v?n*M)=~tY%=aWxo&>eo}%Nz5=mXlAv0H%><5NK6| z@ET~PpF;0aa)<#7g^1EcEClcxj*>*OP4=bh%w}@1%C(A za>R6wl@rI-7Ou{!Yo*^dRY*4Z^zmtUt7m# z9{G#(lg7@zzQdl+KADO7BQrhkrH6kx?UZx=R?9IiR^^B+x6iIB^)b_+RZbP#{^mu4 zBD12;$y9?@AjaN|0s%;87Hiw&xTL@7UJHL=Eq9$2=E0CVEPGPJ=2vSLWcInW5zB36 z2a;@6w?ikqId}EEIScdh@-XyRI&=D}8Bcghx6*w(U$)up#?@=SUYK7z?ZdHS&S_ac zIVara)Lu#Nz5CMI?JN!6O6gk<&Ti21gbrw<&Z1t~viWmQ(5*M9XY6LZu0L+u+{v?c zqe6$amR6aH4z-nlL~7OVYy|bJonAyD%?*L1FQnW%FizJ@2^& z=1zZu#vNFt{K@3s`aXG4+f9G2*(yu*QZi5&rWE>JW5#bv^MFE+Pf1>#UQEnbmve6o zetP#?Khl?cv|wp~rPAv|B)fD|G21%%<$iCiw{}&9)L$!0S{i%8t*$@SJALA->vywc zRnm5iePCL{=ICb}bUnGI^=aR`d&3o z1iIcq=9i<|{;hrWi79Nzy-z=V?+`ZSiP$*%%#*uriaU)*YyiLZ_rF-9X2J-A)fi_p z7p-uPI95FC4BzA8$KT6YTd-_X!^ZR_3MbnS96~ccn6hbaT_s}XUA=leyTXwyUMfe0 z09S7OeWU%+j6>c0@ZjGzqGX(Mi)!NE2Xq7I-i#m10!LprcHWv_iwg3t-}Kbp-4YU{6;-lZ|@wp^-K{j}kiD*F1OKRI~&h3Ai7^$U6- znl3d_ziIdtF}E=*WF_n2=9xYIP=27N%XXVexy8!2{h}RzOjn9hp>6y1k8fx(UxnuT zWkio*udOg>C1B7D7?RFELLH%xP?y@YYKk87GYv^r{Xv7iTqLndlfN938Zk`;^5KnT zh2<(-W#KJKsdVfKC)+H@D!b=gAb-2=`+!QZ3sKBSl^WdX^I5GL9KWks&sV0+Uc6xScauMUX28+j^z7ps*!+2PZ~_{J0e6GH zydl|RH^}I{Uj8uz21+cY++bDPHUy44sv|BNl4+cC_F4gn@y};jhA$YY2!{A~ucJ5XVb^E|mdUnM39Zry`4LBLOS~RHBJAcS7kT|(`r(dUIL?gsO>kptgZiu2FYbBR&|6#+l zk!M_V#gnUB^l0A3qvkNRzItT)A-h{&^xDFA=I4F&?Ps4nH>6uuvxXfrLC319Ok$Q| zM+|yJh$_kcN{_}GruP2L{+?F**i8Pr$}ZXXqtdA(%|fkteZ()>#~Q&(*7n#-8*ZQa zIjhno^p*p0%N{$bRXC)W zVMD8sXaNwFLdXh5Y>1g1$?5sd!sYot|1o3Aq~9NIVQMHg*^GpZkXEweuOAtGiZqZ? ze)B1pzqW>jrN7iY(uv2N!dS#MyR|((t>U|#U_a8S5y|^b{@Zg4R(?D6iUc)XAqis>)IF+9-7NPf2?sd-t+Mw6EkgLICS1>6v-KR)v{B6fKNV|(=MG34rzw|}22ES(#~Jj?L>tqi=XO61useQSG3OPQ`+$I@%iKC6fXaE+Q&~1>gda= zcYHl&RY?^}$)A6&q4El9{$Gao9{Rz$Ek1wN#)_SveKDnqJ}D;~>;C?g(Suup=6O5V&g5_-D%6-Bf=o^pHt4 z5He|zs}+u*I;E$!^XeOa+`fjYB}IWeK|`U!w8H)!TToB-AaQb_{Fak0dj5y9P&@ze zo7wloc$ukIMOfL6AGPC;JRb33dT*T4$g%A)6WF|Q!%Z81b4~!5s;H4YjEK1EBQ083471;9Ov z*gOOL8sSrbJd1e+b?Cn?92!6WE?{hi`fs%K>{;>R4X1T%(YH^}GhbL%QL>w!id?mE zsXBMuwI|*@uvh1f0|pN~qfM7vUjCZ2oGEA33!41aBCD$WN%Q(`T5PYNQ$oe2XCOVA zfmVtxwycV6Et}g)Z9&t9*=8`{XIV$KOc|xrLe1v zq==;1Xp{;}^klkeR4GAURgnD_+L-*~(rX5vdD3ZJj_NmfVBe#<-tfv-zw$mnP^MRG@nuvP zWL2__r3;$LEvXC4vV*=PR`1Bxncsi623Jklv3nEGiX4Y?zg`54bjh#GIN9B63RxY+=E_%?UGnkg>U3z56aVSIH6Uu(+BlC z;=y%Z+b`REAtN*W!ANB=s2g;{26hDOY5dtw)5drQE(Ozd)dNEmER+5y%WI~zq>*)+ z9oGCTyZsTV->?3L`XWn_EFT}BG0l=f9z|8WkP{I0QXKJr+Q<}{C>;s9<#~!(F~v;F z*lldyz2ncKu`m8MhG2_Me!S3$FDr{vO$g6k)1X# z9aD@7Ys>8GKNcyA-?`?rTLum2dd%tPoYk*Qml3agN%a{Lpe9ibf;B}Ij`t`C{EW+_ z@2O&cmM&;29YOUa%?fGBTt7do`Iek4@J9L}mkT4868%bvYr`A5CqT*^=`-)vZxS*f&Ofp9ND+BUXa!#%uqVXU?O72hdTUshn+NsncFe#bXZ3H_b;PTyeg)lhH6xks z^3Z6(DBmJW-f|_WsVs~{Nf9klQWlL2TqUW$-E-Y}kN>eH^_!o5kt-{_yl~J?b;qSpWV8dg)@7y1_0v*wo41o_ z@d-+mRe3^&LY-lXuR)S8T2FSY^+l5XEJNF{ZE;h(g$ymH+aWE5WwvjTwD#MTJQi6s zZUVV!6IQLJ3sKX>_?M#nha2)sog_(EVIAv3GY9i)SkVmnsAf84o`mYQBh@XEsXv!LPMKNqG6!M|llj+08 zfF~TvFqgcx?1*7E4r(C!S1k#a%b!~x<5@$GRLIE)qgU42h8e1qj1WwfBI`^`x0!B- zBj{x?wu+#+emy^b>-AS&*CLH=M-4x1+y^J@T$R5T?Gj|SE0G}fvSrdkcCwGjbbpdz z#6};X-UDmzWm>B44Vs(Ll+E;XO9?jFu^=gs6T}b;93-cNxgGG6rx3z0$uxtqnH-QC z`lM5jYd8D$llxuLv(G7~^z3ujB%_>3sX6p80AD9AHtHd1c7wWjwO-0^+t=lEzo@Ml zPGLS;S)Q7TVHb={fL8m5k)>f(%FL6*DszklFBCVp=*mk#gcL;IP_6RhWTT4&W7xRX zXrKbm#I{3hZC>84;a3cAna+0Dtm?FP-tE3+>C&HAz|%Iot4#9yGn7grXbryhsZNW3 z_}nPTWQ$)fYJAzy0retbbQ%1cpSuF}8$kbIJ+w#igT4YIK)fR}KV$yRt=oUSVRfpn zo}rz8*GSKvh*E0Nk{LNWY5n%^vb&$t#;Qt_JfyHxPXsn9J)J3rELC~^{$Lfo@zk#+ zDQn-$E4lR2VXacwZV2B0op(;GSWx&A$VfKEUS&aPRR!S1|R`tu<3+ESfxZ>hmT8}^FjTI?3ju_O4)=MHTbX+diYlJGM z=w4aTs*)?I2tZI)>{44@GoxVVl|yf6OwNjA^?&=_W49FMk$+`YGJWO3)qRghIj>iP z*~>!}EbK8#vdo2Jmo^+e{QO21nGmMIOWEVgp*zb!HP?wiINxlATuWk}{kU+!?wf`V zZ=23`!(%%A?QtiT=M_Ldh!V1;iU`$uFrk3T8dDTA0 zA2|zSqRUR|(Wm=Kr`{h3e^!JX zDn~=6U1_aZm{&65is5ZiSt+y3{^Q;|VNVgShbb(p1>F0lyB7JhjBpi=icq;K*F3X% z-IaZ=^qHyIp;JarJ*$f;S9n-iMr6?|OPgJN{rS24!3f??%Y60gTk!YPN-YvWN#GA< zf)0d9<%|`6J2w5KORn(q7X#;9GxF5ZRRyb2?STNZJ3l}7yCsX>JX*CXr7BaYU~1vt z#a)^`_}a~thUE=ff%=`UfAS&dL8n)8b3JUHH~#(Hf!BD-%0iG)&A+kFQK$FodrI#< zJx@BN$2k}Gxbl_nt6;Gk2R+&4GzNh@@XNF$-J6C3+tdh1_&aUYdBTho_e25AK_wA zShU`W6$MTB#~pUPsCqrY9bGpin!(yYen`xK9x}uOs&~ztc^8fHqZXFmj2LqH{zmaJ zzz2%WY7qPUU>`X1WLgIrMfIEs`2h!!Z6f$|N44H&en5A0?(P0p?2b|*;`Gl^n?C;$ zKmTf=w!(sI+@*;4(6`Y2LIN7!PSyJ9o@+ll;`VV1R^=DW$)EM^mrtEn_1E8uhOw?u zA=7$E4}4~ehGA%L^s*<#!*sY59^NX*%+VqRwr=X6Oa2}*W%lClrx(r|B|ml3;PLA< z?*2+UWcr{KSsQwJ96eV}AE-vh5+;|T3=WQ0R#SAZ*OTc<>3a1;?|im+>RnfzZg;&Y ze}3_zC$DB@=q_n;1TKY--m3?bA5^U5u(7GiUNB)n!+Q%>k1twUT(scJ;=+PaXWFIP zh*xx4y!XOJ%QI<#9=R39?%m(M_Ew>N{0oa$eX?NQqUWw+w2IZhz|C(mKkrmbyFzAq zCDXR)l|MXi*}Dx!6f7((EXd2B{{EsT&JJyX+k|*LDhC--i$4V?Z&o3#Sls9k1GuPUsp$z@x8}1)JWyu#WoYy4W_3C*GrY(JZP-Udt zkb+ary7A9*rp{cnep>#*JGDngp8xtfT0AIO7$uckG_ZufC0ijo4IMB^SPQ5u#IMjZ z-Dro$NtzFHmm=Bcm02YG*?U`dWSw*Mg}cjG()xRDns&sE@6KPbuwd@oFWxJB{G9Tw zf9aA;x6l14mC2Q|4bx;>iW*ExGo+ut7Lp~{9Se&pK> zZ+zD6)2p%z^XC4^)Nqw7@07#q?!EkrBSws$_f>xJ?ED$;u6*R|s%<-n%>w{R6fQ*s z{42js8GOa23#ZRo^6T{c{89R2(9chv42lx6=KCuj=^rVrpcRExRo}fbw!rT4%JMan^JXu8=B&!Cf7M=$djTB;yjPl#up+NM z(Ej?#zKdTj_-yg={COYUp-dV5H3kJ3G>iL^D*N@f+f!Tj{Sbpc#6AfgIAU;g(6)8{PNfOlLpoGo=c&-V(3zmbL(+lPo=Pw%g{oUt||5<89 zb0{>W^yTNj{iKJp&Tg7+Aq`D(hQ{63;n{I1=Pj5~Q1n&7?Dy|hCO-T%^<>ny5^;t7 z`n#hCJx2+Lbe*p`LB{02m1_}}l$@d&<`$aR6`_{SQj;`qYI1$qI_}EbU;3uo%L^u@=rGy&g4*2*BkeX8vYf(jG`|66Kd7x!SVBNM*S!Mpov3IY9`J7!@kCKERxnF zD;pIzje0-EytE=cH7%V-Y>XjKc2-OAvR?qdu!3InHEKFbLo4DHn)fR}<0M+gPSYCv zRPlJ3!e5f-@PN!iq=^;g2 z1lJfS`@wh1D_;HZ;q&A)&Su-_=mI@a({xf&8jcX(PdTQhrSez}5GyOQ1@aY{k#9&` zV9ZT}Q6SUP2EUDUDm4cgTrm=lkj%-XXNo?LHZL!qG+Gy*qtWvqNeJai(bXJD_3#HM z=&2Z>2`G8$`83ulv$2RHK;9YO*S0D2b|#I#F-Y;IaY8A6Fw;m)@nmxiHqE5^mM#eL z`ljkWCV7NNO;}65_aaUk&_nH2ojHc&EGjHgfJUW&ipSUOK~$+_Mtz<;p?PK+(HC`` zmscR?KyMC%9;pnJWVularAkJX;ePCmW=5gtXA8*4Z7=NRvd@M<@neL&df^s=orZq$%WoE_moXT2WI&s>Zn~uw9=;vjc zeah2w7ftQO57SA@8A6{rm9IZb)K3n6l_^w*{q>vBajkILi36(7{MY#rui659R9BO{ zoTdl5;vB2Y-=rB*^VTEN(pQbQHlDVcXwp$A;*6+V4u6u=I0f8dK<>b!HDTx*a5if|3@IziTawPIpa*|UKIZaef57n!bv<%`~qtZbrElUM0hao95 zo8EVsju?D}5j~^f$rQZ`%VC{{f4(U1u{MHB6rU<`_B7@%+k}eo6YxSH6-;WpIJq90 zqPU?4>Tgtf3@D}pK}k!_;RK@E1!Sd@ctS0e_;$X99B>^|5ZM~VSyce;)CTrwgL5* zHr06z_Fix*BpoQ|&8f4*NqkKB6%zUh1sx@wf{vnycl)75a#?&Q|0?gKuZUE=%+kPLD$G4a9jI=qlZsQ6WyXvWNx20S4hb zSlA78pnRjiYEUE$s5A^ze9Vt=nFD1D!yL$kzLz1m05`~;n=#%6 z@=P7l*nud@#_4JCuky00hECHNbWffV3LqABr6d*S5&z`ApwM(Ub|^2XlgmuMG=W8t z1SoU5vo2)AFT^E@g#xPM@ndXGo;Xq^TIhlYy?8%yFVJHQ7}CXRObv)Di2x^p8LHykHb(UWrs)jz zo}O^2D_4Yb0R$CCE)rP~micR*vEf|TG+yO-3{)oClM$)b2IZ|&^*HCzmBr8Ab}Y1k zYl_E^09`?JQZ3~YzfqB5UlaUWDiS>i!mA>W zNx$Nl|2sf)q8SUy4I5fIe^V%=LDbj=I!-dwBb-M;wUOB3=^-;ka4vBmQ;bBA!Xbb@ zisFiBv6vzQ0kla_qEpmY{;ASLiU7hq+ySPStUDU=Ni4O~$oC6Z=70C(Y4j{TjlzhE z>ZPs(dD0K*P-Le_s*DyCec}mO=sE(Te37z51;vJQaiHod8Yz9lgUASCf*!RP+Hp`% z3g3-#=cH&n26_mk0z@|Sg;=UCl!Qu&$K$c7W2S*1(t>}KhYJVfLd3ZgH9d^OgMSUx z|2$$Yh1BrL-!|XVoF->ciDQfNC0bY~4h0a-UxTCZ*Wj3ZYAyz98T8#8MB=ykco?lA zK&?eQ6SZ2*_Yz?y(Wj_vnqL$ES(}#JA@|rMF`_B5%vYe(?P~!v3)`Z1&C&gAMlYyF zM+H{slU?-00YIMzvJLtMDf(9#F)^<7}9At)JeI!b2 znR39i+P?hWQ=8uH`~H{O7V(y>_yo|5^HEh~0v(X-I3aEFEMi(i&mr67!-W~W#xcf* z0Qd2TYuk))0TO^dIfBCDL}8D4=@4yH1jVGD%3vnSkw?&2{I{$C5T);($n?EczKCxx z2xc9&v5DNpF*NLeY67m%MwjSTw`Ln*de$HY)HV9@Dk7nZs9ZB*L%v846>+MPDaqg_ zL6Pww3ZyD}ry)uKA%aRAKmR!uxjq#OH4)X)uu!5Do$5kOVh)gAT;*Cqa{2_B z0&SuOQyOT|HqesjB5Dp5ExLaTwjr)@IG_rMCQIv?_0-!w|Lk;iyGiwY*N?x3x1aH+@k;K#+U{@o51XJw>Z>UeA6+opD zFD!~0?N6e~gzQle-MEaZX+tdfNB>hDMs*vyLX&~6P^w&e96Z3JOUq&UHA5L9{n=*#x(gF|EENP#dEJkcK!xCjbW^LY0Cd!qKsHWbin~Cyn$G(U1Hc zP<|NCrDQ6K-^;(ppwU!8H5)bHp#ci@2Vg@3{b)o-QUWew3`5_Z;Hu$6D=qH2kOJc~ zK3E{ca-*@43jVRtNWlxOdil31cueF*??`q)igzv`Jz~d?IKWSw2=K8q-RlX^h&>Sq z&}ilb;~$8{I~l;)5p;~Hz$Zc^jIAIrzea*VO`2cwI-?n=+n*+DTEgH4rJ`zn-75xs z2L=8mFbBNW@dF}>GmXZ73BZ-=G9|+x_>4lP@1@a(>PpjI;vz~0rGVf#?&wQx7^-4K z>kP9K2@xRtUSSADaJavkXXPRs7o{h#(OD;7J$Z{ zl+LHhszDtTdNXRLQP4-r)C4`m@edGx)N&{k!lRQz<*b$+a(TpD5Pg^wHJeI`+Ku8t zWJp7*r(pmI#H&s7Ev@Plyx#uvOJBxd-(M1vS-@XyuZ zfZlyTS1>@ph9hE*KjuIeLD(Sz{%!JBVselwag6N6w0Qi84I?VUj07X#mybdywd0#W zZS+NLzTq^!(-AQEhq0*?NDj(Hgp;P}L+rFFk$8w0EEFU%jz}CliESACF`E4&K50UN zXw`Dc7_8DGH#GoWK%u`7pQ2`V(45%lnO`ar5z5&^up<+JCXPgXChc>%ohvcy6~IBE zaaTBPsKX$JoiIY}i78lY4oGcC4I(%ZED=d@kq$we&vMnIhjWaELn1|VTns>H%Lv=S z3Yy&^{fJATgJZE#gTf9q6Xl8n$`=$U_u6N5Y6~MEnCcbiAt^;8Zcw;R`Es`DTOQS* zSRx(Ij$&5F7oc$3#6AX|5i}KnBt#$z%7Y4=sPZ2IR~s4u3CDw+1lUnx5|b(izg!0r zc!I8I@`bt@q7Vf*30KvqqO>fX7m0HYpk<+k#OopM5Fl=;csQfb7>-GG;v(h8J6+

S1EzLj*Ew*zt)$e*eK^uqqx87cjC6$r808s;#jaORW_D=cnQI(a zGzZT?SLv4Zp}M9=jF267_XdCj7(;L`1{>W2 zLGJ*5D4bTXM?n|)CID?HP&Ds@EP53OIZj-Y7=GEZ$rKZXp%`+6vk%9O?&)A4qo`qn z?h0@!1Z2diA_I#Sd)OGmcp`Sti02a;=1=v6Y4#Hd;#r|XUM$f9#}UZ!Pgx=a8z)5h zU~GgcgF+x;T(~%lKNCm)S{mjyt82L;=*Un1AJ`^AW?g>1QszetiR13$C}{q#Eu*UTF?Z{CuEXD$rUkggn# z4HW^r2wJPjOINZj4a$Vy!iPriEa;c1ww%KJI`Za3MPx_?s{v`DQ1Fy~Tk&`E-kUdX zap9N?Oapa5(M<)uNzw^7Jn%){)H9iV)*I7{3q~HJGzic-0V?yTxB}vo#Gp`dWnadc z$8us>0zlE){}4Q!?| z)yD#rn>MCo=Q4d~y3dEPyhkF>fZwiVs^s-Z@Dy}K_R_NheBQumeAG%E%c`gNPI_qK z>sQx@{es=r=yMT#^o*!7zbnW;MFbM~B?FB}aJGpMpEuC_CQGqeUp8^x!Y}ieEXpsM zoj3ovJI;k~BC>)JjC8nR(TchA3X2wgK5owK$N4}UBWjw-An^OF2vYc~|2$>Sp49oY zOCOoFv%IoQ<)&6)wpWKe_AxuaBwbO#0*tJwYUN(P^<5-c3RN-|WV&YCv2qV96;)yDKIv$Xivgba6q^{Jgv|w-4d* zkU6%DNc-VSmd~DFSeXC$xOsPU_A1C5?wmqvA#t6?sI*D6dPJ*ywpW+auLS>lD$6|d z83v*wOYnHS^kFRS4Oers)FPYe*0C*vG zL@yO(OB}{ANxHzlv#VP-hY@kP9|EEp7A54u#lHx$ZdxpS#K=j7{eB&NS^wis>3QlI zb36~df61{%Q`^=e+OJ#6N`je57^<6*NRk?{W!2W1l-(%EB4Jkk#Vx0tcjc{LRAJbz zXg-x@#zU;0Uy4}aJyvB|K#r*NLTwlpOH1JvPEpeuV(9GARGfzQRQYHD5r*f?@T66; zN;|VYM#MRu`WW(iBg~4hNK$%`g)mB{x6sggEJf>(=tXf>nM^k(?3~mcxAg3M+9{`> z(f6MBIu7{igAturhU{luE_q|>J1ys*bKz;HoZP+tRri)(^w`N7qwgR)?aGAs#5Bkw zGz?d&(q@&Ru&&a|ZTL5EtRkT>i_iy-8~Q_*p&~zB&aN{2;h>=eQ=yx08Bw@6n^r7x|t3_+fomm4eRXiLkOU{=+!TO)DAIv&-qdPwUtB z&UZVWvFiOBJFzUqYaV~`8&k)&ns?5H{rdDcq5shPDlUAqhlkdP(A)`#pzj0!CR`ke zR&GZ?KP0iLNLW)9T8B?Ph+^2Raasy9cPB&dBr@}v8HSR{Cmvw0oh_1_3VI#~8lp6}TS@TG)mNNT0HD%itsaz{l z^_*m|7ommtb$4O>!U1(~)iFia&1Y~AEa`s{4llnn|K*UZl`yYk&h}4GP5i+4CwqK= zQ3Yag4<^xm5R;sEi8l6w0i}!E_6FTRih&=-ogZe@%D_Ruk%4;ZzCuz_V^FR5#a6!TR74MB~Rv~AEOjC%-#w__3jg(P6{~^NW^@IzG_y!VeeCFU*_uVZlp-jXj%`B=5G0oEs

Ytvl{0iYV}2=y4F4KW;$Ql*Z#kmB{0~G92-!D#**e zBwK<>wle)W7eBt>)2Y)6W-VU1=E>vOc4k!?mZ5n(EPV8}NHrVjp>zH!H>f)KL|g;_d1(ctJq%mBf9gB&zc8HuPG-8+$0 z-R5s1+PE`v!^EP=^S@lMc;45u$8@PE(ai|W0A&U|XWds^G=Ig?m4&lD8h2Aiug)qf z48N8>_>ufiW=+qZx8j>`pY2(-9WDpC6tZNWV&KoZ%sF^l8uLTFu;R_=8-zy1SsVjs3NpNB7mRMZodXJqR1Y-J4 zQ1k&)K`OB!#l8|b)OihXjt>VYOQ+5qtl$R-As5l7JEyeqOzQ&0b)xM9|0-sqIE)&0 z;i68|dtgnw>pq_G+7Oxt=cZ0$`jyWt`{2d~Nxp6uPFuTj@xpsfrF##_m(Toi^2jdy zt#o=ae|xT$!P;Fu_nS%Q^T1T59`St9+A=id6o>QC;< z@}p6y8T7V0%}Z}w!NGY?E}C#-Tbga>Z}&?|tq*(OV$|b5JaR5hJuF4fY9g9q^aq<9 zd;SxKm9-l-e!(+m@Kc#Sw0+98&wrM8Z#Q=IRbyv9cP{rAC>lwp;Ex`CqYxVAbI=4s zaxQ;4BuBfeK3@FXAUZ-!Vp3{7^0_hRv0UbZkX`RxGxehjI@X7i)B2*1SAMx{!OLe+ z+@v8>m&_Vu~9u?>@P;JxQoa8Q0|%Pr17-QAn$Q>Mb+#7Yu95-%gp7NjYHe)sDRVxhICOY^Jjm z*8T49XT5uA`z9&$$RU`NS^H}zE`E{A%z2`&k^}?i(IAQ`u8C8wNPe*f4!j#BO4Kb= zA6^6eQZ3>Cg*bdXlDOEQX0h!>SzH&}VZ-616~%$kJh+^N0e7~;Uo$viVu?193qP&{ zu~>(QLr&><+B6uo()`i-`hN?Hoz-^hrta7BsY_oS9r?Z^#nE_kxflM5IN z27(_vKR2cONymG4V8n`Ht521UGG<6Sx2*LsR?b+d-0#xv!OuSXVhe8rdCxwwxkvvY zmQ-P^KepG!-WTtBCS0l7vQbjO=!psXScA%RPsFb=uL)xrE<>vF(!WD$z_YvK&%Ik; z%5;NiksaGbo1_=XzyK@sa5jC>k^?4=9!!sZ?^sg3%=%i&_3kMzWzD;GPBC;{txs>W zYBJlR zRQZG1E50kP&l*(xUAl+a>Avj+&z?GRI-=IAn)1r*M(+_&GKEQMB!(v*v-1k6sS^i6;Ft9Q1bcxV}Gh5C#9-{dA-naRWS0$>v!Heg>7eHy*y>vnu7Xjef7@} zeX0Z;LnRh1yCwQu0@4sYGB4&zD2Qu2#tuQ|3sVjU>LT<1+nla5xfB1J2!zG9|7sin ze+hNzKu~>SOe8&YbG~1oAZUwbS6fCxLh>)Z_X=R{@t{R zPYpg^&2H5B$mFCJDS_bcr912pQi`!PJq|5dv^1hhtu*+X=8%sw*s_fsZx6g9ug!VW z7tSmGV#(d@V8*-+TT%kapeOn1EsgZ_2L{J5X7uD}?A6ooRD9h6mD2CqE4}(3tM#-{ z$oRW7+9ye277BT+#n)fdvv0p%efpfzyZ5O*23&FCnGfu&;?p!7R+29qGH4yDU{=bi z%I*H)f|bQTZ=5=L!XKksNE$td$(UEQbn!X~g;hc%kL(RuRv2fj0zSlf_x5ie{O!~A zrI6FM5YeWOf68IVO=cK`>4^~8G)+s=oel?T_H|3Dl78P=;V1r6gW-7oLo687&Enw~ z^*r^|-hEGj0H=Zf?gJm(UPZYI*a2T86rq_7)n>Y6=Vtai3xUw)hZ`KN!3ZXThBSTuU$2Y1{|pC=rm zcWTC9(MtmomQB!O!l)kLo3lk1V<$D>$hIF4X+gd^6G|#li%$JN2pS6?fZf`g$(RU- z08kT~IQ}=_-;+xsV(K|KJ;k$n$QrH#qPF3`raq`Nsbfma&^blqSoq!t`#{ZHT)6nJ zg$(=r>n6AqnQ4a2@r8ADluB3tGTCjIj8(6a}f+_%>ab2`3L_{z}WruF=pL}D6Ej1~%D(66a< z2L%3w;;|LFZz35HU-J&_n{EC3+s*c*b$^FbyZ2>`zBQ(k1(axgWLOz6Zqkayg+;|h zg~dgAi>JS_Z1RZu^g$~)CW;0-oaB#$4X-Y1{P7l9%DHXKXnpF{y;?Rt>#TlFA6m<& z98{UR6yihNDuYV`m%ebNqfYIz^3Bm9Er*t6a$`)d;HGtxG{nR>pV$Zg z!lh8@>qy|=-{PqD&9@N$lh^$nN$q|rV{}JC=hm3>FP-_$r^}ZV7A-0+C@NmCc*Yyc zrreaPQ(_2pVK^7KcaDa z6pE$Da6i0;q0tOOgOSfau1>$M_Yuv{8Pvb&=(Q2appO@D5r{{>7y6-3DOP(GHog8D zLZKAVr=p<9<>M{|cgrj)I+B?GQn1(nI^dmf;^y?s@mnkbokq|8t3XWe6ERr?|FPKn zO}G!lTeiCB{1f^PIJ-pVA5%IQIGIKBJjlFxbRqj;&_EpaO$-;2T{U<}6tS}!2jciJ z!(pH{I5AwfIINHrU$QlK@h7=$AGxJZvauC?Q=hkAJgVf;4<GE>QH@YgSu4ZHWwW~Sy*4Fsm?mTlO{^d&%##nP?s z-~0NvER%-VUQ3hA3}&79?A-5)mb`q7VjCgFuwmYnCMoqpW?3>zwyYCx8{enPnt5Y> z%Q4j{e=cg*_@TFNs$_;1HUhaP-tfd@y_l^PUEQZ$?^Ap9>fNiy$$d{e>w<1Wp5N_d zmCOpIWPrnlTNdb^%*slbeuJenwah&o8#Gz>-I@$7J>(fQ>K0ZKp@$tjs<~^^I?12G zm>;L-JorfO(Fkai<)=dhRp7Wk=L0e=KU-_`$I^RWMTzn}Yuy@L!6q>D#V%-yS`C z_3nAnsV5D*p!>Pc?eei8Ga_l(@XwlT&rkB_R8}x6XeMb%^4f6=cU^SF^)1rj_o#y5~i=-Rh*i2?s+vTrhx!ZhW=?KX4&Tn;D9kt%du|T=jK9;gj{4DQQ7T zaU2uTiwbi{sS-E7<0Na_=o0nnPDe~<2LK-b5V7BsHi3Sf^EyyB{|6|b`?bp2j*PcpVrR}3` z`ta4kO)70u39O#d?bfjY{|Q$f`6H^fRfU*W6e> zZTNuaHw5YR5~iw}5yYmiE@?j5Q)-o`diq}U$StRJ4eEBXZY67SFyn{u9dG&w3g<(-=(jW_&Z+w-fKe|8H#O&rLdg;?&}Jt7J22J6x@!hra*v)W!5NaiUI&b@7LSlJ$yw|_K#(W&R|x%d1DJLRrdKmX|2y+N5-m68=I4Xk>z z`-9VUg+-$8^_62?Bk#5REX~gb-m~D^QeU)kSD^`=Ij8nIY1=xPgEWDaL5m8W00bV$Tc96#= zmh^NvUJ0C5EL!}9=o$YGU<}cy2%~V~p67#bY;^2I020skkDBoXaltMZMf~8uE>O%w z)D^o%%-W(M-`es^gqjY$1T=_fUPISOI zi!MeZ#2vbDaY#U?>U=gV_4XqCW+XSqFMWcD-y!$-o6$$CJWOfcP9g7sCf$#8KF3cJ z=uv2F@LivNaAh+UVLI$d^DMf@kS->>J@jNppnj8RWe((~@UK7x=ne${qB1Qe;9t)I zylM2CPOBp1)cU*;(1QdN2o}8Hh%cDPWSy@6ykOyd?PRj12$E#}DlJ`?A%LvV{R3T+ z==lUnD@iGh(kUHF$^sbySteoWi#x=I;sGUrRGJ;(P?$dh*OMDH<h;>+}qWn%n?~^<4ZqIF zcR%29cw~;+ve_pPIc}?&bZ`CzQ}J6ooG=QlNeU35(S$r&bxh}?*f{8EDMt^r#o<&? zJXAs=C{A`K4nj}^HU2I-aVa_r2RLz}SN4tCBO_yKq4Y&C`WRU?r?rEk^Nqf#73H_q z1PBxncpRd;7ZAv0-}`D^M0u#VSZ9>@@WdE&hJP>wWeV2!1HmEmf*M3snv!tw`2lA< zj!5(n`#9=OB4=~q;-3O8g?QqFWk30w69zK_tD(ZIz?P70bHd3kJHU0P0`jV;NL{Y_ zpzxP5{ZutgmaFZx*rC?aJqdCc&_qEQL7?TOg&7`6RTZzS@$Y?tYIPn+4A;Q}TZ?Yb z2}958mEk5Z)pyMB@rC*Ms~2nEN~gZrLFZPC5TPAN;A{ zi{b~488N=FAaC{P(_sD8Oh4$5keqD~etCQW?7=qt7Wf;E!vI?j!p?gwqEVyq5d<$o z221|xKsYq~3I{Poi$I7D!bG1WaW{g~gb7i_*9{fa03BI7WK;#=(6Dpr6c$K;%lLV(f;z(75*NM2CqNs}!#gA=!r9%i*!ufaPuZ|qsL{tI~AaLdrsfqLIR9wIq zV%ME0+@BEY=VBo|Mne<^N{esYl8ewd6^j6hfx3yRMoVM(1*#ns3I9$UzU>>a$Rd6< zz?q^*8hy%?ztq0w^>`p#Q9fV+bvfRv*c-9zqGHyFMoQw%f{P!2Rh-1djs}oYh48Vh zR#b;4#-KCs0VRt*x32WnAc;AX=#_YJ^MZ^r!6l$02hk(!1$7=kDXKRYF8(R1U5ebN z|8T+ps*b3tu=HLULZh}5j3d3%n`*ZcjnhFo z>NlP04I*UAQ2*h%h_*wYCC1nt#u~?n7EKD@hCWO!>OUY$s-}3!f>Q>8`i!O_(&bF1 zemp~*dSxn1CBL>5=o$8)7ClV(0(>-_16gQ_=0$PD@f;VK1CgK?Fh-n18}xB}l%R8!fCO=A z=!_!3kRG5*!I2mZ!U|dOOCLs$q9!H!p0|g->E@ghYABBL4=B2mIszEO1~wj9vs|EY@5B?qy*5KB1flu*2-zZ!zt z0U|MS+#wuWXc`$&SPgoTDpNh78Xp7qC!lzt+S+OI6I`WeP(qDsbVeHBdZ1$`7!b)4 zV@Ht?T6>gOICgO{h!Y5@Y4jkxpkG(|Y7lRT&AqKCAdE;$6r+WKQ?&mCAf2XBTX4=@ zxHvqhb}1S>^QRNWfkuguzn3NJOh?s(ZKX;Y1uU+p@ruIyG&7EC9v_pkVJdm!5LZ#Z zRh8ZzL2Z@;bm(gkbgu!G993S>MWawXI=Wztm8-LH%o_(2ugx&|FMA%q%)X%dCL1;dXeSe5|v1|NwBa3nHAXTqFP zFUUL0^(1j*(7fGi6iYrRYom}DkQ3Kn z(dt2qKILGVh(oV;cESO~lbMNHizC}+5ko~+&riL5A=Wrj_|q$dQTQTes_^+J|u8)1{uAvwQFTXl5)QiW~*yl^JoSwyov__R-M+})hU_$Ak!01Qji62_F4v^Lu6hUVgL!oEl!2qJL1h(=vRLV5@BL>w~CQS9)LK#2tnu+7~W z^uK8A!5})pgfgv$6F<5|!?>)~e4;reL{w*C!BN{q9~=Ys zQ>g#prrgJe2?X?R^cEyE?rOxfayo+fMjs8wf>~rv(e%)*S+vsGVGURC%N=(NJb2TI z=8kZk1|z)n(eMldeV#KeAR-@n5=8!B+=fG7l1D<~(m&-9RS|R{x+L-_=!!;Te&~%` zdy0lGHOjrL(gY&~gK-lvNSSm&T(>c#9cXcRAwK$*J`aO8*!TBQ-C3~+rq z+;QbQ5M0FpmdB$hG(U~hF#=o&(k}oait6!tF;?Sb;qQd$`C?v7_!o(|pnP+LMQW#T zxZ_27A+JZJiFzbSV1gqiBS+#{9Ef}zK#Hc<`7x*~9=|QA!qSOsgc9OF0&rKF#_go? z#LP%T^n+jscM$xGApBqxg&hO&fHWBKD&%_dOL3QZB7ROkbxJNSQ(R7s@2U2P@)hAI zI_eP60chYBr$RvZpu9*?O?B9Q!GHY5A@)3g4x_;ws31O?*Ayo*edkzKg>oqY4ardh zMJ>V+swTX)FpW`U4JARrJZS=W%IGmtp(lvlUjk*P=y-{U$o!nH@GTxrsqwuN@8CeW zBqYTV`XjK-eF3q7M~cKRN5NwzZqfMsC<^XOL2>v+=Y)7--pFw-XptG!D}aVWG;XA< zxMRpeUAQ=0sQ1)H^lrX}?BwUDk%eu2!&=sZv5rYyah1<^^M)?7`swYMhxu83It?^^ zY$e-;dTe^vzJ>bA+d5TI{GzT#TLzOFW^`dm{E-GhN8)sRES)v?dim-)*~=5rtpuI& z;s3Psz%S9N4t}a30y+=$IdspFcP*kd@HXdU2}E6rDAIF}J>j8^c6rc>*uQ*x)rl;n zG0CJLBd2Pgx^(#W`C zsNvCIp2Z~r3PicR;1IcipMTMVquuMfXkrEfwj~eaRCGhY zk#FsRv$qxDi?6{ceJLcKOOXlR#NG)NB@u_L2FIQ}`VYIJ+=l*FUvmP>hH4Z&o%v)h zA~v9};rr!Qw0H%D#WFLR^nGO|^k0tA`*&k6ll2sdc&`OW;PI1G^rR|3PtscXJupq2 zA9y5cfWIG%-;Lwnli_X=u}JX`4B-EyhyS!ID==dI?YnDEW?4B(fceOcWJ;7Qa8^ljn~NunZw&;Nd5h zOfD#TXZl;0C9}p7n4_-)d00}*Yu@~S?VSmL6vfqmtFJls-sQd&5l{i|0|9SiJRs_? zXe1a-jDaY4MHDs0Xkt_Z6%`M>H5xonQ8|LjAqa@Zc!CNjD4?LQ?6Sw~%=GcUSJg-L zO!w@}?xLdg(d=|rS698NuCDj0y1MF(`EPx&X#TthFFyvqb@Npxt)>6irxr3M46~gC zKM$aOU@tyM=UdjR^jSTA02aH ziIAcTUm~ARg69ZA038934P44LaEuVGxU`5&UQIU7gm7?ZA?qXf^YXa$H5e{fI}ojs znj%FI13c>(5BPzKLv1h1akOdRv4h%GRg3V83@|d#s<30hnh@(m27UJMd8g4MaQUDI z>l$7gYacVD2!tEkZ{muYdh64N2E!FpM?kcAF-^>Q|7m#V&cUR-D}HS0fT7#AK5)dt zpISAG&Oud(Ie}kkUNzga*4#dXKBO|K0ILE&!G$X@>6i{x)s*5AO~Y?TQA%i;L&Zlk z&H;^*+lFnoDz$Y*uE22 zY-_MSeRME*(%?Fj68=MC2j8~RnllRW6{P~ebWvg*)h@#(ZEBn`62i4_o>RSH9BlJ` z;fI~%l0xs>5f4`Dul@l-#_CyxkmBUfzkO{rrCz%X;)Y-eIek{mntu-{MQLD@QKa9` zw%(q6oK)6}MA;X#S!gBdp_9L|tSz%HailnNvGwIk2hh)e9w!>)EDBb9o3Wfvr1pSx^Zm)t*F(D>R#un&SknxGDfpat}co4>MZ zbf~W^YulEuCjTG!FVom(N~D~S3uY!hxcxA#w7U|))%00t6e$Y%6CrWiIzQ%yFRjfq z7%Nr1{joDaP8_l%Y4jT?Od%u}Yca?i2qh9B#Z^R#!L_O;YgG^scmprg1N>mW9b|BO z0u2jzrU`-D28A2yDH5w96+KD30#X8L0sruq7Cp!|@B)d0=L8Sf7C-MbFBXc(9mBfu-F{H$kyas`yf0PbDmi4w$G@F8aMJofyCB zpr#^XnF^^msr`9_8lO6@$D2iVcbY{~X(*oX_Iy83G zK}mSqE8wwP%8`x*UK!E_aS79MG_#H0`0E` zkWAMhIvl!T(!N3t{)waAnfz%v*(jN5=EweHSqZIo|FaL?>*@O@sRtc*S{be}LU39~ zd<{V4gh~`cD}q|Kv6iG0c##KGl2Dt#gSqH}bDoM0eEg21w#jOWG=5t&_^ES_T>QW( z|6F3==vI>?JC!O1Nns}=S}7e;l2jQfG8*cOP5QReQc6|GSt%{!qT~*^n=rK$_^^tg z4YXM$U8OB>!qQc(y`M z!Fx@+|2Fxc6HbS^l8y?XJ=-{$x~v&eiWoATTO5N(o5@;Io0OASc^g^^{$R?nX$BP> z)e|=UJK;x?3@8(+v|&m#y+k%3wgi#NSJk}r^}ZKB5}^}}%f)Im(o~ehjH36T5%V9+ z5kqR+Dy14}SXmeix=hw?d$aL?EABZKa|7Ciji$LRg43KoG3F% zDaZh+pfO+qyfg#>eoRTm3{5myNfTGN0VmoKq(d-Gjb^IWg5*GOEGQ^A@MA(jC5_Nh z)wN3AP^gK{Dzj7S>pnFU5p1jG3t^@ zDb|4c9(4@lP6{W`C&gG!iXlyIJ^&V$6IvRG(WLD*VC2F5rrkG5Iq3M)D`ZopmLOcN z*C};rC57)MOqD+W@EqYNAWR-U5pert*vDeaZ4_=d3p@caK-owo6hntZfnboP6sa<- zU!DKit>?UO+U}|plZs>A`|Wb+i&{xVlVL%gK#teLgJWqCMYbAivYt~MvQv+bUq^|Y ze*UMo|KY_m_LL+|D=O;PzuoVih3r$IN|Ae+B#pVR_JEqKo>Y{QT`=|eZ-HK000$@YvYB6YL2?XE$~P4xp-%4IOGmSy44Ls^Ir- zR!OSQS-&{snGbH6GrRqH1IlPfvMH&!*eO)L(2_G$9EhK8kobXf)SC>Z2F{ZurQSaK znESuF^s(EIfXkwXUia8PzBV~Q@_yLK!b|y3)mG9D> zA6;W@Y)I2~m;UJaIJ>05>T|pqr~yE8r;J#%a`)pVzGWppdvs|1SEJqr-$uixb^q>0_xjVZZF)}Zczvk_CmW#h3+2+#YVInEsENwz@* zGF`efl{QU#AgIRbFS)#Dd1Bo7{~dADU=t)RDM6E>IE7m&=U zCLWYu$&i2l-13izLi0A_ju?iUg#80hPRv-eU2iNWO`kn>QvH{Id>^OPi-6khq&Ohaz} z>u!5|`o-L>5+o$8H&$z!l5VU4TY(Pn0J9&os1lXI@&mP+sT!f`FbuGVq0DwYyGOsz zzj$>U_|%Pb%{C$zf!&aZ9QLnIKACI8#-9N6a#c$PpoySnDeDaoOW$-_ygAF(k!YID!GpI5#kTPlnm2mOnTT1twQJ=#lZuiX;=cMsVDk0d-d zxY4J^0aY`V7vn~E=RbnK^fMGZjYF&TBs_Is{nYQX=kR^soOR#U`Tu*p+eQC87C%@4 z`vqzx5SCtr!D5>OFi`GtRyZ%~L$H?2f;_T5-uGBh;c{Q?BUq_{57pB2CcJsycA? zvRg{7f^=z0$ptIVdH3m2Tgk>EUElLBbAGqx`pYBy^ph*r9Li$yxktL|z z46yOchUB)-U%TQcx&3Zu&MoPB&%WSWDc_~^q=||giOGZiw(@@mzHsJV9dIza8Z*j|eUhGlc<}(smE&rEWuxlGhSJERZ+<-L z!m*@?Y_Cg5(4GY7X%;*RlN~-ql1;F9F@81iwW&Y)*ow=p{9|b+xk;;xl*F1yL>l=k{G6{QSm4)Gb(e9I(*PsO;Dn&VemIZ49F#X9b>?Gj<``l^VWM z0-tcZbknvuP%*o3yF5^g4M+Y)l>gCY$K_h$*pT% z8+Vk_t`{vQ`(UYpax!!hekrUBxo+jV2fT3Rp0u3ogXQG!2l>hgCfKynX`{(9@q46( zefyoU?^|=GR?quzVaGrHV_>Sz&{L4z*o_CzG86|a5AYB4D3&V_2QmTdR%%n>cwb)* z*f`mm1@%hv6!Y0Ku@-{61kXlXO4Sf^>cbxv9rKrU?_X46Mbm}_4HyMYJ;YI|09Q`@ zF-3_~BBwT6=G_l{pdIm-wI7ZxF=8p5G^JG#K2B1pM*B@HBqL3`Ss_eIGK^jSKJS7r zhn7YwNuI6Ow<_8QMLV@tB3on*^3WRLnZAN1&7P$f2DFq^cKw+m$4^ zfM5qQ4Qu>>+m#1k9gHKBj-pK3F#Mi8UULi_XJ0X9IvIYAFe-ksK!w0crd!$=P(&3= z(IT~L{&8QV-#D`9FOenZk$bRVODB)gBo$gEP%+Z$?6t`~u)MN8e3hVRYV8*{+^g<+ z8JTyr^yVKRoFYkyNOJ1(1IXQfjY9pTk*Wu;T(|iDjM1d1My-w~I*?)HkL0thQDyTt zP+=?h=u1VCs^O$s__oupa9r`7b~4?^U)HvRJ@A6HAguw9z3BFyuRZc)Sx55N>mNvc z&pft>*stuNy2c>DGkwGd;_91z=!Usv<`t(10;< zvMB&!fx0tg8I7fce3UGWC`C%D5gP1CXzmO?_nf_6zyB|9d<|_RXoiftdwTbSj_3!w zs57Bbr1H8sg7^5COD69+@3AMUddN>Lc-QE4(tbFcOf~F=JE#Isk*MY1b}DpUb_SXh zOoxIz*w+9X(*QII0DhfaF1N5$;D%1DU|{VfOD5EHa357Y(yhJ=x%=)rj=$o*14uEb z(FQQYsHD_4T!*`k31I)&*eV%4Xrz-|E={}R?*3O_wTq-CYsi*bg`@}m`nP+|x&JSV zzBWq1Q2O$Udtc~&@KFQo;GH-;e1~X6*?VX&V|1uUq1wjW0RtMGU{8^;J!$&`^~&@C z9KqEz0Q}<%*u`Qd5tU!+B$vrg=a&DgareH^?T{m(4n`4J;EIK>`PNhhGK+63if5SEjvSWa*}&==$GdcONXM{?za%8v*VZo{2Ff?=yNp~jT%khYz;YU&QxznWL z5~-u5Rg$Rs^dPDD&kMWW_Jv-rTZ^xwv!p=*qTOpud@e2wg+rC&aiyK9cF?urCkIPq zmo4l%=?k+iZ7sYOn&(8Sf`_RA%Om6@-phCzZZ2dj7T7LD-zAT`=-f!!N-HH=X)Q5} z2x*Wz7OCX*KkxS2N2+UN^7-|XUM@N5wBt5wO_z;7sKf17-%KZyEt`7XO`A_UdkpDR z4Poo#`3rV?bU9j|v$nh*-~Hq&c!s5sHyzjU!M{wDBAqmI)21y^5M71;sNwTf@sL=W zUMQM)H@)T{+y_O)?xOx@JoD~?7w3&S_xVT0EmFRQd;>4EQ3l@8l)$J!E}D&@3>;^7 zEdb+i#6B|Y@PQkrKQWUX%zR?{#({@7Yf~(rbkuly#fmA@mUkO;w6H0DqS)n$7H2GQ z-~#(lYgj~=jC87zEE}JCsb8ESNgf5vUTdg$(W>QaXO{h<&#H z`^D#D$!`gncI`*~PB`wEKHI%ZsL&Xw7cg8&>r8OR^fE{6tgL;1+|94=e#G&ytFF7Z zLQbcwb}{|Xz9&@l{?okAYLli_z0&&cpS#ufEg$wNA??5T^N^!&@A636N?G+^|9d1M zdbDyk>_1NHW)mAI!n!U2*_2bH0lR{#6g5p!INk#&C8=&zyRF%_x+#V4k7d$GUit2$ zL5Cbp%^|z5iFvg#5y%F@ektN+cf_SZW>vy_w-Tf4OHy|(@f zJxNjt-5}e|8Jj;k^kB#zr@ju79^<1M59_5s`9YPzIXHv^u#!!DO@`9KfA)i^bn?x{ z4U88az_$>d{D#%M{F^=+c+e5xA5LRbIA+Fl-v@ytX;x0!shUpGXy1c#2}yRZ?73#! zs-`4KH?nf_?MH(ShH&7vqoJLdUZZ&6ulL^e)C<$0oLK26{`Sd$;isO^r%5)jfI>Vt zCA@<|#cW`w2(;}(uaP0+|`qkz@tQbpR>(x!10fnVv2F&KD$Yon} ztIs>z8tgpyPj2UosQ6Yjs*^Hf2**mA6Q-iyteq! zf#x8^iFBDIR*$O9?rp$l{OS)iC1t`K?Y(QGW)mj}T=tH0RqfJ=5i)yX{RUzlVr#Rr z!Rk4N-Y%a0e_!qzFTFPOvqD@#uZKzgq=^8`~_IVyD1;!myN$o=FUhpDXN4N@#zLQ7@`-I^r zsO+;L87)NjYC%4(8@~{PUQ)6#-GjSPd;AzFEtO|gaEqb`N+Dzw{1fM{1a-!{Op{CvO^L^a-LGF(EQ7dH&0SjbX zw5(dS>9%p+)!RAP_ZlFQ?R&MOwFR_8_Ck`a~BXzkd+)`$!`L zEvFYO_}49xhs$2GOuMs~Exi^t1gqq@>tdD7_AjGcikEQE&+up5@v#kto_=hw04>GE5jz+t4% z9-l=-K%>tr`AR)=(0gb;QrAaw2Jt9MfCiYi0q{rmcJ7z%rbe8^=T!|!UfC2=i4!{j z46za8s|rT&ZkU||1+IvP0#>8J_$Ojl98g!!rPPnh_Hd{og@AnK|_OSGCo&Hvv|6)oIJhC6a#SU_5LR= zC%x=oKslMUw0A7`F;ivx{>Cr~Cu+@?Nk*W;>K+Y?Wpc-{QKCQl>3F4hmt<~HtMIGv z(&hVbDofv1a6m=ULVN3%DR>0Q5QenTfmeQ}j*CpyN(0QkwhfQb7pi=K0GP8U4_9TS zOq6R}s-zupHSd!_EM5LYCA#4FEmx_5Y?zK5eu| zBty<{7uwHzPo*dO%+X?39T;y&ShFNA^F?ethJ0hK%*KhjnPt*^HQ4nJZX$L1wdbuJ zIj#RBqgP5kq+i@IGc{BrRpo?@{17(8J`Vo(oYmfPI7SN8Dcgxtkc&{ZBL||kBgT&qRy}GURfAzGC6UQeqX>B21x3* zl!!Y9JQt^yy33_{d^yPY`qA1!YKJcXyxAsP*W8IGB{xst2@Liy)$&hF>jmYwc?I0< zJj+Dj^GF5P43694BzroD^Y%`K*aP6d861 zg9Hw`$_GVWw9Ni{bo()wh8Rrm1k5V^a*89D^3D0iV&8$f&zD zSvd~UJa38A7Fty^r#zXr&81&p=<@j_>NP9*hCiz%+UDckGGTu!2k2{MQ^5%j=b&QB za*uG)V#+CV%3-6|G}c*Ao`Hsm6JFJJ{3p zHlNbCcC(v%^!;gL=Rdn=q@&m7sK~9Y;>IX!KTs^VzhQn2@RFGnZZ7%NVJ)ccY3oU}0_EI*U9omf7_4*%(e#u`a%1Z{JZP6e)rL9+;fy?_$j&_o56D;y_#K$#dEE$X)?Y7w2`n0*1Ut{k}w+WyUae+hKbeY}_~VQBcZKVBjk zgf|52AGs*B1M|n5-luRmB!9i} zxUgD;Vx);|c>wD3WuqLF;$&cO(y>M;QHz|YQ>Z9S^M*3e#I#;qRBh_ep%)~BDpFKcBuQeqqZ={g5hq*^w998QzE@cNYJfkYqf zoaYZ`{d>C$j_90mBW8I+Pz5t4_1Ul&jnnXp#px`qOrPI;75s(A#u_P$0F7!oCXOhj z3fwV#FQ)F{vGBSGRQ1nh?Wb*I&7EII&UM=^3Vj^67Xv-iJ<5yHY0F>t3SSR@=uM?P zPOS@)5V*c~j+>)$QqM=dK6ALOWz;CHDS8WJp!!(#&(gW7N@sKWH;@IMiZ4pZw0sq8 z*oQlKs6bqS<9X}r!+V_<(h7u{Y5BU8_OO~2BOSvxmsGIHzRGqhlI>T^8*oO;%-eX|K%%E;1O90rasZ>GC6O0VUV~#@D zo%vSkFO;Af#FW-ZR75iAYN<3aB-1+Zgkoqvp`!?Dk#dYAW^d*bSeO82nyoqqdC2Th z;CSp8h|)s7bFTbA8cRLb^xtDmau_8b--rh1lkR^j26;!lA-K~$6AwC)-y?ww_2FT-$) zjDo0(|3MVJx`KvQfUD9u8&|SCg3G_=d`vB1VC_+~B8Jwxm-;Jj%cfoXi^eatEl;*D zL@2uQ_!9KP6V9K>#5&Itr<0s36&6a_nyS;=0Oib_-mO*@!^u!@D#zD0lxhvg{4ifC zvw~gy7ob+cx%4DrHRsfqqtS308CB_JC?oTa4536^UkV`hiVSgol$(~dYa!N(XU^>i)K!xR261#{P zqt4H0lT2QQJpBcUT`c{_u7okpbhA+J1v>s$Zcgh-wY;N-{MBBCn2Shta_p8^&kH0a z+tTpu>e%MtNSo-QYiA@ zRs0R5rk8X6XFoj#ML?qcV_YnG7B%e~sU&8e+)was+&P&q=p?Cqe={v)*fZ3}Rrj5~Ji1qo2iB_u8t)}MucvL-n0-6LhRZkTw#(}mD zqGhK3iqZ*UU-Hk59Vfg>`bf;LqCFKC^mnBtkRUT4A1jVu*gGeFGp03;UPxWCq4i7aqBt6bvU+K#EdcJ>hGkU#+v|G(Rje)F@ zqK)aa!DF|B?bvX_*NG+Z;pXf%OG*=U*J)UbCPexvugVcmop8k@0QoR$_b`{0veikoP z`J7Zf2K=@pJlR0x7CQZ$#*~(l<9KfTRMM_4;u^eMstzNTs9q2Lv`h+iSqt5L--Ief zaT#ch%W8R zoWr8Eg{#Qr1!1w)=A_K?h+^u+pI&IXIxKjSb1mu^1wl({Df1)&$xCITRx!2=M$5BF zOOwX|bg*ni7JvxB?F@4FLi~W`ctYrBEp_v+TrLIBg!4#RwsTWOyxW}jnmoo*f%$LP z)eiW9^yL@^RI;go%gN~m%dk{C>o+&riPDlGoGOGAcznZb(@@pSMf9d`1xBiSMt3s_+A4E5)NTDL!#o z(%B*rlk+-I?l|sgD54js!OsPIFZU~b2qc7R$?QyjQkK0!2277V3&ekX%BPiT#2+pm ziqNL1ik=}4B(Dy7#TF=189Lr)SY4WHFTT<<7}3!Xp{79}O{k+#%+>h(?oKe>+-K2M zTW$y9%)O0GnsR2KYMcsHtE4}n##%aBa;K9z?fV%iohqZaM$jrkMeDRCwJ0if>riM% z*_f}vlk}xAo^t;-bMedSUd(GBBN^th3z*0s4ck+|xO(|}#;>PX?PcE>+%+}d)JCc~ zQVb5b`}m)@wx3=bVFY$FL*ec<2iLGeW3&jf1f5Uh{s)DYBRAF z(GQs(mk>~@EdpB)%$vS)+?CG%&MN0Qv0P;nJvKT@Y?7tcOh}2ixwuM%ArwP}3Hme^ zoHFgX18>WfR|3i4@J42);?!!i-oV9vzH9W5*jHZbu~KouFG;}3w~?g}-UI?DE;_~Y zO^u>NOIR?pNFpQ#HJhLNyE2?M3x4<=|N8AcM$AS5^_4ABisvZva#chy>MLC54nJN- z@hv*B<4+h;L^=iX9wdHa59v=LQ}8h%z4PTGIw9Y2{)~Ly7p^UnWI!2327Pb3GUr74 zp}`vUqO~eQ&P4ctNTbTBz+rBW|F#f-4}pd8UXBV~64GUk|K%P-9K~IxOt5v6jDg&F zo97g!FY?n#qq40XrO>`(72Vwdd=PJn#$B^%cTtg^1s*2G;!bC+wBN@z)CjaCXj2p< z`$#;MvS|wjpy#$OZBY0DOqI&4WrwSS#d3bJ)u7{W>RGIE{3`w4;6|=O=+!FzF4CEr zJpEkOMn5-n$@w|j16atD)eIDkA+_mLN^$>7PvZ!4AL}K&Ki$^$huXIMjh%?)l7PeX z=gre3D)CFP;#lo3*Nd^j`-wy_0dvvyo&rdNagD)}^^nb;l=dZ}1m*zd{8nHbvE2$v ztRD8I+f~e|`vNC5PfSuN0@ljkve-OV#q?Z1*!Y6jGlLYgt$%hwao?~9QA}x;HKTiF zqM|f!)El(<$=5=eW4gcx6qycji0lcPBcy290CWWKrKQ@^(nt;m?D{6#hBlTG+sxwf zdWWOR;q<`N@;Gxz&@%<7>}0~BC3toc&auJBFc6CFm@Cnhm2#7NRT_eQO1kZ+3c~Hh z)De``SvUpJIkYc26Bdc59|qaOf5R2bCy8zclMf>5+sq}*-owtiWg+kmOk0HNY-@bG za`ZDvwI3}!VhOxX4^lq;p6qFSX<`9ARtDVYFAPU>{_fnaZ!;q-)P8$+KoZXl#$zk`D^|?FOoe|aDM4|SvMYnhJ|;9KGQ@$M zj#(|eEvEZXA-(qR5}8trjb%wJ5zW1mlm%>|oEFS&aer#f=TVm>tlg0}qUSF-&cUnb zQ@GzG$??~rGMJyFQ)LC@exwil&8;5bHX93ex$iw#sVzWyp1K{SBVQS zs%f<6_K5|p0D;8_dlVtRGSv|ZlO!?8dGyvkD}T&(a{`%Q+``vOWQ1^YG7$vfDwWP= z`P|OODj_7+jusJa^y5vG>Z@FhTOq}M&!2pBDL79b6(`#5hesN;( zI}8AmYBu1F|MzZrSG$o4AEXE)b0LvGJj5?Vi?wJvWE8%0%qc5`8KD_}_V`5cq3kNu zf{@VAI*|78UKs2kH(CImZ;<+>T%)un_({jAxT(!kk&&M(UwXl;95z z4g_QsXXGRXF=Jj4Y9k?1QUKj=fUvdnEYZ>!Uq8|q|B<-U#$eURqlHOmctrmxk#OS09rcZmYvvAN6HpVsjKO-YU8n;(@e8RC#NtBw^ zFhfL0(GddU%(F0usMk6Chnk@*#gIecb|?3AN1JVl8Or0r?M4)~tV!JVotDpy^{WOb z0Dfk}X*Q2cO%(q;c0eg&vd^4=+e9CHVy4TFia6c&^gV|tewBua!@=KPzb_-H<&22K zYB(*o+=-BPu!;03k%-NC?>2Y+8~Y1?y^U$OD%rf6^PKSQUE;J^Ebs0*78hJS+2RHolfpIf~n=tBLn>Ll3w7a9LQ28Qq-;^5HAL)D9D zg*`i1z;2)7wNiQ`L7Uy&?BuCAtJP++SiN?HhEE|~U?9{d(f*i}4~w7+rINQ91V_Sr z-@dzkPVBMdbz#Z6{eE0l|E!TvQZ89ljdbq0(rzy*+JkJenDft6!tm48$~Kq|G{$fE z&QeJm%uYR)LiV8y|NTT4QJdMPm*`jvMZ`Vu5&K;G75F|Ibguq*X9&~7ZjG8H;|KPG zaiu)tO2w7`cSiDYolZ?`h0Re|`hk>)enV`gueh~dWad3DtdiloM?>IWh0;Qu;l>eAzkiJdA{IT$6)-a7=c0QB4t{VX8>yOaH8xknIsvVKOgd zp>p(Qh-PcuyPuN({#_De6FYy*2fETC*lz;Z|12$Kgw0Y=-&_=S^Ks>J$hQ})e?LT; zE^U8AUQ_(%OHd(2BJGv6j1!*!PMip-HC>}bxa>ba|Kn22sKngz=JwdKNywTldlp~I zx3Q`VXHDf+gViLG(_BoMKj*6VLW!9+O%9nrj7i(~DO&~~-Hc6ppVgS|c`jS&Vdjs4 zLj6GsNakqCl;n40@)u?^LdFDj77yy(cg{8>DCW0>&-FeaWQ1JHsfcW41)7LSw}Z+O zM!vQ1vP@IcsC65X)~uC0dxgU>rulf2>;3jb*g4G;rrX};uiZ@j30Vga?saj^-_+_FxsR3oN5wsE^H{AXKLX3-GrWUV~!CQ zgU-W6$oN1p=M^LzjI;qE(YBEOLgovr+Hk3VlM0oP32r<+kQI@nS_MqNY;i=nn;DU_ zlVACZGNB5^yY%NuPSd*chc|@Su-`hBxVM3o4MU;5!h`743ZsEVgX<2gKPP1%Hu1!r zYY)Lg2NfeBu5eveh8O6E#2Lb5mz=mPQeC}bT1x~#STNC6_VYCCpFSWdga1}bZ&G__zN=t1? zlkGfjXCp)TdJ$fS%|f6}6G73@l6sfkV48A=kYhyopUkoPeaiujL;H&K$up;Nmz9j- zuRA~O-%Y%C_A8DoYpAV4`vyvZjO-Jh;!p>o2jhguT9YpUx7lbq^nCBPhbbQiek-oe zs9Y%`nA$dmK-X43F9s1NgOV`Joy#1Qh&y*L6{}@-t81ojZ~0^W-Ww=JOTSAgePk3g z45UZ#ROfaW>sZ#2=p`OS58oHdXLUiRlNp}~=tGVe3Lxz13&lqxx+>{iPF9mp3!_t8 z)$?o6n)~+ax079(JYpOcboH95Jn9UJEldotAfRIl^%X((xr-GaK+@6*BclZ!dV5{i zq_LBB2)Q0uxg9Wth3+5ij9bZHFGO^9!G0+vj6}x{Tn;$eIXD`lF^Cw?#$nIGxpyR+ z%o111%c&yE#cB6kydI7yhsVK1q^(lPIicKvjMOJ3eg8@3>Gedlw3<+4uaqB>P#<3) zUhcYz@B+@4QI4n1WVDf53lV~bwTf!WVH^{`66Oy>5llr9O0D+A20Wwn_nBP#16ZJt z-@v`$jCgX9{gq_l`Y8*# zp)_*=B?G;~J{u<-Jx%T6cWmsXokgo?#64JN+z-Umn#pS|0O=1)((Z)R-tX@y8>5be zRNbkti62A_vGPH0kQK#GjPiN5Rcm2|cSId1fAcH2ORrKKnm-$oMZAoRm|0{pHr+Fo zzi%9Y&4g!Z?Y?e;-SK<)W5UXJ-PCcNAuD=)13GB>dU9~dZ-}nFDTaV5yx)5hF6jMO zTBX8wBc5^HN-Jd`?^{PUGw*^8$P4G_{uOIFS>3^8Wc$3V%#o>Jr&A1o3`f2|r3$kxufvk|u@UsTtg$ zwf!rP-Us3YHHd_?Dk{b9d6jQ+luS8x2WW=&VN~4jN>p~2%{P3h=g;g}C>M&U=&^M-+JMe6)u2*1+zft{8n8k z`fFA%c;8K<4HF}V@uB?w$keVlbb3_a6(CtyVVc!TtP>U3kX6g-k6DAXogPv1a z*EpJNXv*>>9Ix3V#i1`e3b<&GjFa&Fm1a7hwq5`;uaJq!sh!tcsvYw9mr%u{aUKJNP-@KUF&LXg9Bn#IM6B z4(W!tiSTeP<=E@Z5>D#xOhV>BCE4~G#l-WKiw^g{vc5@aNJ?dLeU-?1auE4&yM)bk2H4qY~%|XDs~Hc=UtqOqz2m0ah^N z3v8AIsYn|$OSJ%IK_L^pQ&IP9(I_pOV`!qQVM6#P!%b_31xGxh>&wZ(mwDtc?x2m$z}A(Yc6290e3sh0fIRa)eC-p?!Zj&k zxhAj+{9Hw0&w>Dnndq+Kx89yH`psXXW5zrsgpWq(e+2F}?@Whb7vHA$h~a!e_yl`! zpEcpl-f1-i3m7iN%PF+iD8)3@4Lt; z{eC%Ry`pKk-XTE25#5uuF6R`1hLo(LZjs`06qWK8;$m{xMhFV$7z>#9jdOTOd~~6g znQ02-z#qG3jf@lS%=BOba);p)h>@ykF^M6MEEU)3(slTmL^4BP%!?NGAc)qw!&lI- z;BZ}MeQ3Exn&(HQ{a5%Yb3g6uwO&zbrYJa+hma@6$^3y+!P-PFXaQjF*j?}lR*n&4 z8tbF@K8lCcT{H&TlGo=$L)wlr2DsiEw9z1;p1^i|Ay6O~;R?Cv2f>oTv3+16P!0TXn13V~`Wy=|6N3KLEmxW+n%6n+UC2>m0aiEn%?YAU5&MQsvydpd z67D<3`B*BRckqje>tR|U^2ib0@6PgE~>vB9H_o1_Jt5Md;zk6aj@ps_rpItRDpKG`|f#+a0U!FnhV&(RQx z!lCQJeUfmivyJdy3WKnUqN9rGhhw~T=h8F66zsvPEI22G`46NO0W}$CMxR{>{!1%h zLZPk<{r3e)+Ws94N|bi6^k3vFG7C2gUSGxJ0;g2KCg2T_xn;O#(9 zSH^Knl}!NiZw!oiANK*5R~1n6k}JiRkEIiClOWWG661;hF9zNhlqFEgF7jsT=+P$i zhu7^u{($n+2^KmnEiLU@9?+ypXazRjlbsy5Az-Hwlx8LXJw~gJ49bf}O z^v_VLE=`WxbLwUzPwU#@A8_y)EO`){;Zp(6N%%$%Z%Ar1N!-iY0lnG9@&Yxqb9I!+ zqLEndeqrs!Tc7_L9JGe)3%C^_iJBWY_olnS$PQ{o1 z*b}3lprA6_J{gdQ&23E-fV1Tb;uu;QwwjnfY@6Q$yf=%4@9sr%hlD*%6oA@t5lRp?&a)I%Uw{1}#616LD7l2J=^ zK`fVWy(cpCv5OWy6T_v`u)+bpNZ0Vg3mI}0T)rDW{==pDDcBqEuQF{{hF8vxZ(x?* z-m*uK^^SUH@3yrR@UqL8o38dzt`f=Jstuf~Y=1m%l!};r?i%IrXjjftxt7Vy-Rq#` z3{vrct^Ut53vk}9_qJz_UM~G`i#21#-wQS_{zARH&|XV_a3@dv{p&`A7w;!j{GKV! z6MysSSY^Gj0l0{+*1W0{2>l;UY9?m`ZIJFQm{za?oT2S)XB|t!6(xlDdFeUpj>2EJwclCnI%;9&g(3N4%8kMG&(ouf!e|4Jgin+W9k$Dqa)(zZbhI8pQ;9d~AyE|-G|o9!n@VWk&}&ABIfW}a06YlWaS zXBxciVdS({nf&1XdC)GB5XPx6gDHO9OqX(+@q2fdGJY^}Ea2N0r%{DcBNd_gZOn%r zH`O+3LT21x{saDjkHZyz(L9a_19rnRNqi+eg`zg3jbI!x1GNkl1QyJ6EsrtZ$dxpv zJ05SLB0B$h*_9G`SR@}0oK$fB>!w1l4$HnZZw>!1mQFr#U;AILC7)~|+vo-RAK#}N zW3Tgny_l}KUo_yqV`y%pmf{LzYh!O{rVg~~$!B%1qFLRUua%+V9qMhlA3?KQ-P8IN zj!e9)v?2p6ZO$C!a69%|@LIl`;(WNl0cFG$@T%GWOXE=={~sFPui$LGsGs%t>$W~! zO&l^Fm(mLNyCse>%E4%1sJ1Vi%A7pc&(5+}SEhV46-jYtp#g?&WjDcwq%Au_303Dtw2Pav{O)blDWz2y)hLS1A8c z$1}^QjF{(xjCDfffu7!hRmcuJztz6VD3(sLRdgCdp4k4;?qoMPrGe-r-n@ARCeVEu z%O8d83QiuMIw*@D{j-ota30@&+su^`UT?r71~Xa`mWFqC#6e=>M}~zJ|Bv{_oS*(x z`0h1TACg*I=eRoC0;NymN)z@WRNd&$cx&CTlu?ay^NMIxHLj{VWG*_W8yb|&AnuU1 zB2ry!F%GSZU_&Ivocq@j$^MS-{IOjDri?Eh`S$%=>Sj?pB))j?k*p?So}#F3Z392p zDImSAPzE}3wg8!h#PH*I=LJ43;#q#$Z{h79NnW@Yz8~e?oVsz=z5J~%`EgXEO-U;jT7g}2=VF|j%?ICf!+jQ~?O#NXMHScSAB7j%rz6U6yf)-3 zy9j(_?0Xq_#de1SjFK)xqLc#@y64kf_Cu#dLn1q%o#{E=1A1)~re%{xghHnADoZjC zJhlRG;KRes4?k8YZ1Odc!c~8~IV#!f566?W+-gHv13lRM++~Aj2rFh{;AK;@ITaiY zkLMBheHI_FR@rzvQ`p#EW)go?l6<~lCcF|kV7aRmHaPb?OZF?et{*VRZ)_DbHR=Qkv0ixwSljAvBWXTI^QS zamCA3s{hdXHN#_S`QNe>cq&dp)9N^uc>%D?> zv2+2Xk|3mVEE5rH>@so>VeEdWCMK61XOM8|g;b23Jp%3F2|Wb(y-qQHj#K$!6VNIu zf!Ks^lULK>Ra3Qp68Fbv4#)N2V8>>L(q}UEE08_BklkhYP{=2`~0(hMK5^HZ8V4fLVaHLk5?|#y zVxiLu6Go2V9iu@y=u1sE_zCn#GfoOJ28pfTRKu_9vNQGw<)v*qYCmukLNFQET?}gG z7q{vS91O%V)xFq@J`new3S|*KuIT$rl#)LBJY28*ymbW=u^=!yk%dQ+xNi9j5_kL0 zfBliihrpmEptA@)Y@~$L1*{n*`69q!lxzB@r64l$P{#@!fVbycYX3 zdzG2D$n=2^azny-mmF+30YRY6B!Y$C=*+Mwl{f7saUrg@2(XK*%q1rHyGRk!~eXn(wo%N&6qqA9J~ zl9_M0J&;Kt9MrzSVZD;Ywt0H}u>uhah;ImboBw_Wi9~hq&)&R^;PDfx5?{h_WlFY-3>E;W# zSZ?Kxsc07r!us>3LeRC8o)dSfNc!@lX8Vh`lQygWqrHi5*oU4G@`(O9@HhaF z+BfTtMNfmiU9jgfDQU?^_t4u$8Kj>BEDP3bsVNcLg!&I(|4V>!=#gcUl$r#IWzEt^ zpa2BUTZzMbpRxwmK(6JehRDm3OgHh9LR)hOd7=kAt?*CXupL4>iQQf(YF<%GDZzDp zY9ZZ%Dz+>H*W!>6*57*(gIQ<8mX>jOW(~86pQVdWuk>9=h<|@*Jl4AVy09Bs>OLMr zqjaTF27rh$5^}2_{Gb0&#D{m_h!xyHq;Iv>LoJ+*_`wrm3vsRFX>D4UF9QdWnE(-o zRVL`SmKa>eJMTcd)RO=SfE)in5<^=X)~gKe1ClxZb(Pjo(6Ucta$(kl&}T#p}nNAK75yc z*9-1%BQ9#Ye!)z|N8=8BCd-r^nD#Bl{=-NnB>Gud<1!!i9achWut$9g6$5darx|&e>(tWFu>%KHwNCN_2;+1h)Cc#py1W08itxox|__oZNrKcNO-x- zb__jZkuKWJ-J}tT^#{cZzeX879OL)9x%ag>95HE7RvzEM(cqO2k|%h-p?>1fRv~@tNFM?;P;y-v5D0nn@ z06>fSd`yDi3WiNh7P=(Ff$W4k5|`=jrCkpWH5l3mNdozR1@>vi^Uh~lDDrshX0NM`(`cSZQShnnw%_roh5cePMPJ+-UJJ2hP z;+vc-Ty5rm8hu~EyB4lp$WLLdfMx4 z1cdbul~H~RZk@^Pu@K&%-JM*2uV&J16b$w7NeTVM;2X)Akl5-WX|NH@;N z{kyMvNoRqu8(W2#`Htl`6DBJ@w&&Upxy7{W;yDyfrKnCy%+h!v(BM0)K4z! z0c?H`gZpUSz+MnCN>mgM4aNTt37`YAu0VlrOy$OynX@V#nU(IC(E5ebx_*m2H8f=Y zNpHx%4m$USsqMw22Q%&*gj{Ap#_9GK?W}CHFORf2mYnqlNscStUE6q4`_~P_jsvoQ zMaOk<_QI6P@!y)*sl(^7v3_mWb)(#R%vRZPFWgO#!qe{e_vKISJq`LKL7=n7sD}|c z=Z#8HmsT|^P33>IgtlM*S4$Y?;rhW7)dz5I^%5VWADlZ@ z`yp0Lczt9`Jm$>=0K&#GaKqs9zc1!PlholUgM;c{=;8+UujHK-F}&t);gzm4yiD-% zd87-A4~q(w!M(ru(xb?;TXLAiIkIl^B`sGRzu^c~{LseqiOhqnB|KxiIpiQ})M#95 zo2w2;l`nwu^IDfNnQ#EJcE4OHdlv>6LHrw>np!%1hV1|1{x4ijUQfh^PRFK@_XvS< z-JbE$f~cAMY51@Qx2l9Wv#}7Q(AH^nj-h~QHHR2Op<>)A_PU3tv|>qk2teR9VT@f# zUPK;|$DvU#%Hu=q=`(yVc^vBy?0<#1$c9uawCrH08uJo2)>brpA;#mB z4}>eoK)OoI$uYa|)%z+w1+;ZWAJfy?gtkKQs!3M4)*i`U;exC}xWeot7Wi2kd&hRVrn%^T5G0>#m77Rz=S(7K{ROyRChk#+J5Er;W`aHdORG{ zX4xX6EgV7^Z__t_o?&J4@$`RdX1YY8Q^3miCGWVA@(pcyQ?^e=!V8xBCLp2-pjx`W zTVXExc@c54^Mb34rN1xAu6}7Q;1K}`=#s2t5pH<@R%@SwA{rR8ter>4z5h`74UZ?-+ zTY|YUT3g)9?$d@pM;q7jCn6R9p3J?JM>~L#(k&<=Uc)y zvOOk6kVl-p2B+NBWCGFiW=z6s&Pb$0-@M#=TexUc1tICN@f4m!#J!@wzxr&<%>bNNYx#=VuTv~hKNCazi64Ccr-V=!2@UxQVs z;tDsi5BiJW)kck*^ZpMAe(s&Ew(Q@qUqR~U$2BBsoh~=_56~H@# zr??ES)M$iS?VdA}N)m-Y_^v+^h@7?OAC@$um&IMGEbLd|BlO$<@c)TKVXtSBU}*>U z{N_Nzw=Px;5&WeByUf+lH?&?^Txo0F@O2;r>08K@1+WZ;stbEnbQvGNF{#;_>?-er zP(zIZ-+UiWXeKu(tlpwFzz|^Uh&^&IT9yW{+<`u3zoz;&HU+yQeVoD*aQC^K0=*Yb zs5J6^vCcIT{DEs;rK9^kc=f6H>5N3<1YpIn1}P22A|_}87rL@5_omh zbEwRqEl2$UW0n6mjK##CoZ34PLo1IKt>~{U$v_{chu6D7Fi>qajJG=XQ|?Q`ghA!m@< zQN#DY5FW59bxkgxAE7ToL)GvOgAOrxOSf}G2^xO}cQ0Vc2|Z@Rn}B&3g~f09;{30L zpL;pH!HePIrT0Ov#uLK#lF58TH`iI~jH*nJ- zJBiuIlU{=!_kKquj*7hctPoz~UZHMB3oT|FeA0!yI&H%}k%r0nGbZ3UoDhPDt#llW zncJ)kye|=b-!RhM9EEyBiZ45Y?P|$*TzGhJcy|-^pq-i*Mp%8gI$)y2R1P1WAiC89 z!6So``<(}Os4+u?;nJwOR3?MQg-&$m4gtiA{x zyH`aZz8&Ovoc=$2&YN%Dm6e7jSkq6gv8 zoO4^S=@dbYAyF>Bo+iIo&9Xa_8IoBoOXf4YpnyMZGwjMvz{MMnfu6xy&Jf3&Mt8M= zXFFYQO`D!$)g_}8^Oz~{d?(wv6HWW?2~@cERK zxFh}rYMgRTXg|C%2GCGgNLLDP?H;Hrcx5{{o@n0)F*yg&}e~rc0En&behJTSQl|2vO$bXS7Cw_W4q<;?E z)e@=WEjnN1{w9X?O<}Xrsr-+P`OM(oBe^=Mj`)Ag%}D83|CU=VL0y<8`uD>kl?hDb z&vbvE{693|TsKJO zRK!_A|G6P7kTaCv<PLrKwbmE|C8H3yVj-Wx3K1tN)Za64muLH8W6n+R3D_;(u~Q{!gPaG~55%rzT@EtN(p9b*g5R>OU>E zhD;Lm5vTvRrXx5Q)c@B6um7|j@*C;DiC-Y(kjDNyHVv$_|JI%Of4WfL=U-G3+T;qg z{NE0t_;2d}(f3e4{HL%l!v7hi6$m4h|2+QxC!+;ZR26+xMOg*q+^FW$-`qhV!b~>0 z=Qv+0GUI;M)zRQwA1fRG7p2RAq#HjTl&t9?_la3lF)o*NFdHnCOg#?cFG?n6HlS}l z!C<*6o&CD3D3*Z3x5$_A(eFwQMy4^f_ra-$zaX6-$DG&W6J~$z<%jjpVA#t%u+>Hr z%qC4ZN-9YbkvdonD1NryOUAx0FdVM)`KXEbokXy4CcCY4m@|+6y#^7`fM9oD09MJ3 z{B3GyBCpIqFSoM8ZQ1ei%!8wgxJWoWp0J(#Wu zuSV|ta3&Wybl4l(&c%0|bYS-#f6O?IfaWY=4CE1sLFDd5jXRqY(g~pg&lo?+5jPO0 zHr5#K6eZYLdYBq6kFn5)CUbZ>SOx1n58Q_y=4mejEm?=zUuv&H@&c3~;wSzh_k@}L zNk3X&_W|2y!yJE(f&gQ-8a*#S)Palb?@4w87xlY%962aGVUnzWxnN35a8A$Z(;}d+ zH#x1!4~_KSor&6r5@mU1W3Z>rVrBUYpdkYLx~Zo{$oS#m`PV_r(5meZREWt18yxX_ z<9XI4?PcgpuVV|Gdk4kgdgdRPx^KUl{@CGXLe1rkwCwtvbL6FWC-g`Wmc|*024#%u z#@h{ew|yzH4HgH8!&U|z%Pr;xd@}E0QnQ?_^OMVb87BK{*81eJCiOScYFmH3e7n+x z=d)0@k>hyCd$5iR+8$C_`m?tLI(Mq7Jbg{>ThzRmh!lIPNqI7g*fS7?u#ka!amW1)nAX< z4js(4i3`k+!IX}O6t*oS?JpV$8XfrZl8(yJx7(`;hWEBg1Lr;a+k;2iF;31N{$P3E zZjR8wxbefnFy@K#ZO(|r^I0(-_zn*pC8eSgh}iWzyuGid-3ooRu#4|xhwQpf$KlNW zJ!ZiyG;k5^4acu|;uz=N^OnZ_KCrw0%6Ao%+0@IahQP+&Lp$+Pea|D*o)?+$cv8go z>)F(iOS>58vGZ$>R&TS#hsOeyEl|~0M*7|Zh2T`taijwzAwiAv0JuxX%%6_eo4Mg-4uKXucQb@Os&42x{I3$(NUK~DnJ6|BXU~b zVBNCctKT|{#?jF0Rw@R3uneS#S)M7gNE!@}3ctHsafc`O@a1sIcqpGq$A^^0U7DLE z>YrNRrM8=;7g$!HBtZJ12@WtQh%~2sA6Un6iQC-L==gpV=ssd7XalAp*}{8O!}DG8 zgg&}B5c$$T`;r&X*j)NJ``Ppo-W=Urn8Ci80*W7fAY+BVyWJxjl$EecJ(6~~>1-?B z#O?k7$ui|nm?>&Dly+mf*f3x%He&_5Esa)UlQhgY;s7V=7$?(QKNrJRjHEe+gj&X+ zAqK!q;XXAGGdz5kX4O96z^AU(i84N-iVb%uMb$f2`=F|8s`t~w8!|PN!?3>Qd}h!X zHUh0Q`{XNlatDzRXk#P8R15c$|Ez-KFSOGNIB%?L8a-Slbm)6X1TcP(a+PTaq7FSB zAClZ2(vhhs1e94j8vH37)JKhoweyhv#9>%O+ZGS)OLiVfO0pF;d5a|((GwxAx(W<{ zv5Gp*y@a!J;tt23#3Nc#vrv>a$a^i zra_Mb=-VM2?<9*rRuqO5PLu&blZEh*B4Jxx0b9-dqAP;28{F? zO5lxe%NwS`0K8pk!^or=5Ne^K~dm(yn93xE8Nc zUE!=h5FKFHM$bfzlG}o3fp&)e{3V1;3nvo`??WRus~MlTmpE)+z$c9r*#zb5Bg6xE z5N|HW8dM#0IEl10ik=)MkuY_{z)xI!2YOLkdV&x_nR_%?OehUj3=!4#IOV@^@Ho7( zyqvV|33eONO56@4puY}d(cN5#87funXy3GV);PJkQYTJdtgrfa#!;0Bb@8arO6Tl^ zxA`BEXblNR)J2OLZ9dK#trh;R6=*O#&qAijhOKtcN-#wc{!9r-b5R;oo;4cj(f9e2 z*oBp-LQW8=q5e}=Za`%psI{h?R80=WOV}Uxv1{`%9M|`Dy!nicbTl4oU6pZ8iBYVf z_YZ6DO5OZN+1P;fKt~QSQAlI$;;)gx6>vGW+wQcF{OJug0A;IO;cus8#5f4G808V- zGwp%%{lB@jp=@ASaeGhMFrfRTElJM;#7dZaZVDDtS-dX>ejHc>f$1MUND}KBP2VYD zEmRi?4;gK26Qb(Sa}uS0=+IW52Rd4w@l{A-hS+_ah&RQo4U;9WsFM8bCW2?HP7IU$ z=LYk5gv82gYe99&Q{aNH;vM%DSSOG4OzChM5MDS9MTf-tp@m<^$OAh}%$Y|A+>4QQ zesHSMkJY6(G=uaOIt~(C^D7wB5BUwdKVed2=AR>_h+S=PZ{N+>pDEv)X0C&t_t#(!=5<_VRx;eab4WI- zODr{0riyLN=o};iEt?7G?%)%6{mF~p;uc2j4m&*d>v`X4x|bnVOL8sY6w5w&?!pMM zDlzS5on`Dgu8af59G}V8z?XH4VUe+$DX;6wPv1Fkd7%#g=-O9B*x&&7-_^HkFvzga ztVT;hmQ}H!Cr~W(cH2e1QOZZ%qKU)1S{x<9vPAVLF4nZZkU7s9)`}2NHP-+tS2oHn3XGBrX&{rMT7#G` zjeQT572NmteAJ&^3$TwKw7uD%NdzKH7*R&5QEvwhI5IK0JvZVci2KmQTIzCtg)Rne z=NYa#Kjd;Ta$|=50Go2hc?XNd)~G6oI`VRM^a7MX9zou19BA$Y7SGyDZE2v4YFe(Z z(7OmaDV&OHy^t&$E}eScMhwzATU};eTg`;P->0#+rShz18e^0T_Zi7e=|rXg==c6b zkN+x0%w`|~Y>d?hRys;fI;`bhMH$yQD6U}U78dIx{ZeA(tGyCzwvSBIjzz|yPZKmG zT2i+cYq_VcHcs1n4?Xe(+?pZ+hp*lSI*<32;2=G&V|0TvaP-I(rsZYU14fHXzV_R% zi)oA=X2&;-=bJ3u_kV8j6@}gppnoxZLz?Mcvx<3tu%4Rm zJ!mdQ7R+>A-4b_YZWHk8yVZE-xL9vZWzJ$d%k|IJRnx+Orm%d&vA%5zo$7i% zKN-XEVLv!GR{2b26(kL$TW(?^Ps8?yv1E)o9DUBzR32rZWHF?Boa!~Y1z|)i|k73@9 zeWI91M(RHPC!Z&K64fRWxA$9jkgI9DLa@=!j;!{tlu9~jn;dtCZZnyg)`|NwCR&*ZzT&aN93~#J<+w0NEy(ma+ z9rR^?&i{LW@J;4rx|2icN!DWjD6SrSSgT-XVx2j6OM4$dEDmsdTl)VeO#6@lpzCf2-?Q6jZ8A0wwO zI<8mDM{#%xerqs;UC84$M_;QUh07_)J*+AcCFRSAEBqX7vFMobg`da~YHlf$t0@m_ z(B3d^?E)md-rhD3ufJvqbnAn*&9u&SH;4%?sR6#lGO0D<@__#H7HN#W2c(t0;ddUM ztLw;exY07o-;sEDIP9_hWy@{fZTz-tc1d(?)wzK4Q-qb?gsWeDB|+r(vvUtsHDtv| zGc5v_i)rn51Z`Yo+OC6P#FgkI9=RAvasp~^sM6ZX3bVd(Ak(9s+#e4~Rw@c8<QOjk zq<2WNUVrMjzg7T=7#U-#bX~7L#eKLdSFPN_CY8|TrVzO&qnj~ z8@L*sO1SCnkVP|sbUOOdIsEOVdH63g!WFoMG+}b^ec=J00n<9}E)Tp1I6LerKS-)u zpoxv|@p^Y>koMc=jJe=x-_b^i9v9GTAv2=OR->!3{&cg+uFu9(B8tvhCLQuxXphFn z+#kh;3w0Vkz5X`nzU}8Yso7+TF>o%EoIO8Uj4mv1Qs`+CE{?MEa(rF7@vk4-!_}t( zvK4GwLslv$?6ps|Chb4iopzcJWY?Zhj6Sv|e0%PnBBiXitWPd#4uSjLdVr#&n13W!9CO@yCY$|VzzQg z?H7W|=*RA?FdawRUzv5L-W) z{veSsqYO!~Jd;Ncrr{9B8$(PkCq9`NKxv(b_yKQEVcP@ac@qYCzz=2{og27aC9zY^ zWJ)6FG#v;X$9sI4G}U$5pmFRdL7byXzqc+`oBL!su)WZLT*4KEuU-=vh;yGG_Eqyq zWPi&7bzatu&O%F|cgU7)tlzdajDOMac}ocn$FI? z7ZABSJ;!yyZOX5B#_clQ1a_0V5z;Y{HX=1t(k7+rt#GBd9LkuROv@{sJ~Gin#xtjF zdKtS6l^MHj-rasxJoJ2vO13FW49iSPWR9Zx>ZLjm7kkK=ur=>-TLAqg+wUY3rho z6A76;OV*|kJ?qX13ItTluc=EA{+7l2&caoote-zPG(x9XAoH1#q;8mWDwB2ZX(DOi zH;Bg;7c9xfHxLL9^v#BrstfyBhiLJAW$R`NUGo<_u z`72o<*Q;G%)>|)>?}o`ESeou2P6p-cVFkYNKC*MheaY|Pue-D~H7h5v^{vz^y_xJV zdy0d6ftcwCVxJ0OiSYBQMR3dbzoQ#L+;SHBdoVjD;$;9 z0pRO0Hm+lszqxG=E($&1aPCbst)-_@X{~qZVAI*r(4D>{gnTP=q|#Qm9H}UFITfY+ znsWTPxs%Ok^n-tfNg~M3tGeuFWK&Nw_*jeC-u`eERX`#lQAGt+oedTKo9v01Z&EW; z*SGu1&qY&Rb?*4(WF?OM6me*lnspwi9_32(4-juP_`vU-50|UfE1!$q7*a>fYkRuS z`Zr^a^h8>;RjwbyiG^Iot``LdS*b>oe>YVSxXhw_0}?XUxeJFW?4MLB}u;wE*)l6lck!AYz;!ckTGK zG2V|kbN=oJz16GJh6OAXNFJm&V1jFYOT%iXuS;PtwZK^nU z)IS6UJm?+{?76k1{d=RXJ(-m>Z%$oO3h)quh>Tq~nr_p=w!RN@$7P`?`CD!fGvx9llA|vs7x&!Io zo)=nA326yk_W!8ux*W2VI$7&Bc`O+4DSbpw`O@G>6Na1p;H6 z3OyIgGcW4NKN$hCW95=oDkCmv3_cW)@Cl!%a__Th{oh_si}Sjg3^!6%VsP_34-Tl} z1AZxMtX)4B4mRR4``Nu0a>aoh=3_V(zx2B13Hh%qZ)V@Up0=uYH#pqyUr!h-_&da` zAqS_#e50zSr&j3SCd+F6OtSVcP3}3ZHzwrweh0of`#25!xvRmoYq5 zI(VvO_IAB`g=G=Co(=W3t*wqk?eIGvg#M%Ow%VyGkQ~Us@^T@#IG*kRr+<8cXTPC8 zq2?C^;W{OBwsE7WDbU+v8#w#fB16v)4|1yc0_yfci=*#O4Eea2)GW4? z4Y*sYEYA6L)H_y)^hYTQQw^&gzc%34j^Jf0VNR83#jzZ@Lzvh1l>WROH!(`~$H^c5 z9S)m?3QjF@yiYrY5#Ywye9O6br4iXW=JMWN#YK=k_@59P3kBZG~xyh=X zA=So#fyx)tE@>uhcoPUp>yJghoWy@e3{hXSKpPriV$0)R!e@Q=vn5X~p>+f>kXd0U ze{;x;g>$WAfh)tpqY8t7Y$V;{KUeDG2djc3D*zQG-`cpjXy|?TOGUUbGRo**#T^pm zI`Q6vx&p_tgHPu*9SRBtTsgP5LyOyje(bTgDjOg!Ylr9AP^Eip0>@?N?1Sfqxo!{%Y+FBew;gGlMQF)xkXA$#gU?~A zS%yt71ict5-YmBTMArbBpAh0PmTHkv{cjFK4bZR6~y3nPUxfLH5cdZ(~`}g>CS#=0w#G@ zW=xWLguNIegCD_;!~#Q-n^^(sjdMbaKIaj?0GEw0$G6(Aj4|QSixrecVU-$FaeYzUv-u9t1mj|dkqiKy0Iezc}R_?AZ;4H=isz) zhLfnS$zi_)N(!z9TJK0mT;iges4+3CQ5b4WJL3oVg-x5te~rREwd)hZ>432uNcr5b zcoc*sGSb8cn<5Ag1V>8=h_;0%74;Tzg790%3i2$X&jeP8tC`|^OQbW{e5_#&dK3jK zpMprB>?;_uNu^0GuphO6u+@$h;yTkN!-MQcnfgun#g;FGY9zT{I+fyH_KkQ9+#V64Bfc#4){vC;E}nCN8YUS?Jouh1fF?&0Z&R| zlT4H^YL1`_l%pXi*iq-?=H?A=^6oIFQFUGTU0elWKcWL9jrzXAkuuqxLYNkb1|(Z# z!USzQAF%!?5fL_-%U`ExS=&NIK|`nysO<&AMTYPca!4YTeHl2y%>~$yk`RZBw9M2| zEIc1hcS?=1u&Bs)4WS%@#niq|4?zgiu%p(FG<>X2<|e!d_?6J+eg=_q1M8=I2=cHuS|&ZWFSg9tQzDK5j*BD9KQxqsJ?no2lLi&07aO zRb>igro!n#Y0Dj+x>ivrt!WHgiBhMary@yGv=OjhJ+)aNEN*$MX{-n8F~p6U#{W^ z7t$3$jh^>C|M!;-Z{*T0$Fsg-V4|uP@MLLGDBJa-(ix}6bJafo%swGRMh^S7iwKaV z9Nm4IAAlBzVcipnKKXRwcr|&2@V14eLMs(Pck}^(B#+f3h4O)DQca!Pz+oB<6-j}! zZ#>>Dt>(0^RH?L_Y0j0cM^9$(oq11)1?e@dcdyzSwJs?$Z!Ef)^}dbC)n-+b)Yd! z1#XMYx40iySIq9ZoK=}VvLlP`pSq^5dOEgKEN0~^FW5`B*IYzigvqD!C#-Za5ofZi@~To(3hO2oClt@vMnmj^jK6x?<=#3wL=+Dj{M8LpNM&nGzGh!m6HdvWv~~vPCp{}> zDj;QO-TW=`;xNmCo`}U9T5=zou(@rU8I>N_;1*5qFW_L|yE*h~9qu}Fxi8}9R8;2) z40BS{{asP7o9Gg$2^X1FEPh0qkW7{Ul*^nwijYaW6P24yu0vs>G8qgSBznNrMJA(qGqX8 zQ18QaRbVz`s?fx1g0e$Ss__&~0?p(+U$n3FiZW=Km?f;Ee|8L!#ZfqTGOhO z;YLYdgOR#esRg-G@+mliF3h0@x1$iFD&*g`(0qCo5vAds>Nefg-8nEyns= zQ9*(eNwwMeD~rENSUlafk!wK@cg6NTtOpByk?kK@5qjI>Bbj9*Icar?q{_sFK_Z^A zQe(ejd(M8F8yIx@jAo(h`;cd1H67`zYJ09Q-GDwj&zwrsGWnlQK_5p)&zasONKb(} zPFIA8okp-hnJo^Z&QtvNdxrvURG&oXNZi*lQfl=Ja-l&orbof_(qfxKdpuW{Q7qCP<_QPj_X{wN?9Z{WhxN z-K3Cpau9AuD&lf^t?++V53d~LAXaz99?}sJ) z8wuNy8#??UJ*;{)a96U5B>3dD?ze&PD$#k38gjLc)YYC>A4UX6(PZSK-D&ORr)ztLV%W%2Hr<}N(uYWOe&XGe|A4CV1`=-IZg4(fg7$viy z7^Cix7yN`O@5D#X4?6k%r?YUgT~GaniSMEfI$frPa`89k%9KrDX*8v^8URbfd12Ub zA5|2R1?>g(n3W7{d)ByyVJ=xKj6pm?}Y){+=W4XYW}cQr_}q#=146A72E7 zLq4d{NboLOgEl`okA}Oi-LbXxHU5;e`erW|ATM&TWoXc{kdbJ5M6mpJs_}=U!{L-o zisUAIAdb&hvgai4NtUHipFHJLEaCgB?I(lxeMhN0mtFvc-_0srW!6U^u&Qd9YLV!2 z8?uyy?=^x0z4I~yliAB=FF?=ne8x<3Ro&VeOxzP;-n(Y!jbz_a(4T5;Ir8Gsq~JLb zt21LvN2_@je_K%LN>eMX9vU z-u!cZH$N13V`{~WKKfGi8AZvZWnP&yHKY>x_K9px<_K0w(#Sa7+=moM&v<>T)rjSJ z*a}O_^SrX2pV({G0kv#j8vBXOYk%|6dr{zhJI)y(e&N^4k(u{XZ~bl)Wlvi9a4~-n zQgcDbo}TUd?m9LBm`j@SN{k$k4OuwpEQgMAH3ICd7X!p{B?C?JPrl6=@uP zIZ-tm4SKN8UbOEpVg3$%-C@w#Bxw!oaj@-mS7LqNPX45_QcVTFJjWdzo#2VS{`R^= z$}V%xC=L_NbeEn}jDfnm<^Uyb)9J#Tdqk81qp*To4tw_djd>m30s5$^Bz1$<_1o3_%RD37a_0Y%J)2KaWX=HlLi7w_P0kE*=~KHmqgBcqqb82<2i-03A0mD*TN z4Sn%~;()Y?3S7Twq18o(>@d1!b7}Y$In#K&@P9IB z&0VN%bN=1ekw06TK%icutM`BkqpWKAoy6;oBafz#>g>y+UC!0%oK*~BMInb6dw^1uFO|@wW1k54(4QBrFBso# z2BN3lUdB$`I832q2tIYDCq~(u$Q99%F(`L&#+-Zyumfn3cy^C5U#J!ZyV}Emkw(2F zdc%ucVU{B8eQxm<8VGEz9aH@g!?z{`;TjbPE4C=hr8CV1x&%^XBwcrV3VRMl=(Msp0P z3dDZb(_L`-U-tbCgb`BIO~Z%8KciOH-#asDF9TDkPg;lRWf^vqy8skcoO)dta#17a zDP0{5UU&I^>s%SH61ij*kZKI0h%@Eq6UQ{YG;#ZbV|b@82z6AN1~6=I?wIS) z_I(J_`(w9$0+r7hv_iUi5pAm7Y;=(mmR!`H+qLQXNmsJq?J8Ph0v4wA)cfj&fvRb| zYWT0`Lbsg53bJ+)CTu_pIdCqIW(_Zg?f7urJJ;_xQlJ)uSA{Z>A<2PjkvWT-@|6Dl zuc1*fp~@ZZSdx3(4s1IWT&E*K2wR-5u|m-)6>@odXRSLZ`r-P-#^1z#KH(=Tc!T}c1lCxX5gt-E$(eS)LT7X+hQ{B@vSe=INw;VWcsaDJ%Cy*u3}PtN^fhE$D1WJorv!IvRlQGAlrbOvzV2o zFkPt_)~_Xe%0hNevrrtkLKhT#>vSy;ZF9){AvShlD}AGv7$AK-+Gw)yD01x;=mNx?hym- zZ*P?DoF#9(Few6jwyi6{>y9Bo7wZDFrmH0gTK^2H=)zs=zR^~`LPsF+AAJjMK0Jda z&JB{5yK+Clw|VCt!JFb`SwVl#zD|buEM@|~#R?C2(f0TE5H4XtB2QcB$xw`E_TlBlSqdm?<5d?QO2|{nBPimL&bh6G<5Tlv&pD58iQD$48yrRN`yUxnOoZM;Zw5FQDeB%> zYU}UM-Zb)AjfWaKW+|F{cesc?-5u)q*IS#!^m&GX+X#yw!lWLxMwnXbg4U2y*` zF{lkP!UbI|DVFHps8_+@k`MBb$8*mx0Kz{vH#gW3eJIi+XZyGq+x~a~(tq5@@_*VL z{czE*1@e5kC|xXWDQ(`nDb;N|A3xaCY&so;y{V12Z$AW`YcaV)@a>d$!0Ug0+nU2+ z&f@?T|6o~r*};A@ZexCa!HvyhcUg-{(|>;G*9f!ozP#ZrhlEcH<2U$=QR(~D?}_j} zcS{P1_B+V~pF`v=?JBmP<2~GSKWW98=#E6&W;w_GMp2O{c^UQ?ue*5>Hs7!`Th>&$ z!21ztAfhO5a%$j#69GbGA?R0B6gmGPnmN(`MgxRWWu~=BErp_a`d97eP zOf!^u*3o!WBfdadsSXfB%pXphr2!Cmo?9N?9~K&GyWXE)(Mw1ab}-}zh@rgjQAsIa z5R^reAb?@gR7$7g44Qy@xwH=z74h7_asOh}OssUtrTtk{GkE3=JA*)>bi{Zm0zB05 z1c?w~1Ph6P98$}9LSpelX{GjUjq+2g?{HM9eUJGKq0kGo$O{Ytkr*)DNkw*|{CEX0{3 zWid({`_Lanrk1>oIs%^ZB{)Yu;9!ZVkzuM9esf37Hq`hbTv7lF1qjoH+J#CCUO@dB zk@_*6dYnVItb&v(ZFWghqdJ9=bg^EdTM*gpuC5DiiI+H!un; z68-$u6J;!fffWY_J{moA29+UYC`BsRK_!IPmXv!v0Ht0m->{w3>T9XKtrRX6L<1t% zEv)iUs)$&Ki4nIQWBeeeSYy&($}1r}c2!v@k;<*85A-tA(Po)e!stz`N{WT%4=|@n zT@h$y(aK4@=a0~70iqL1U7QF#m;x|w*2ThFtIWB$2-tE+tk|cV8SFgS9tAE$k9jUA+g^YlY00stzEF&$h3I+x-3fgvog8)6gD08!c zp1@sHr9{DMrwL9#J5UxP3L;=&4e^Mt#?YXBct>e%7celC!GG@HqYmY!U|_<^GU6iY zo(AVRh~Ke>Q$Li1E^=^?2BE}VBlgM5BV@j6doaUb#awgXzXeLBm5|SUW+929szxK)uU6qWRtlhfvtbJfeXEg9}r7d4BQ1^Xu29+vRyr zd?p{8@bvQ8tiHa!hF|4{KyPhrZLpZbDj3orGw9|w;I_#~tPf!MyL*TF73=Rt3he); zjc{cR-yM5L{p(dI!vtf$oeKrl90iYw1lIYc{PW26R(Y^>sD`4eg+eusf(8`|6LV|zAgrpgiAPdSYvW19q}z6{%QH)`el!>YBexaJ>Z zjdkBBEb%QdcFfv|WuY!zQjsVZ#VW&l?8zvc?`7L{an%t7p|QlyOyqWoPu|k8P~R|r zZ&-d{dgzM{_oc#?XryufL>}8cI4gHn>XEuYfr1VCeOoF2_9I35*fjF3?>c{Pnq=Vd zF}h}EE4o6k%f55tl04I$&W8pMKm#yxW9dMix~6`5d5ZZslV%+Ks2RF?6?&5Z0>)hO zl$(e4+Yu2?5O_^Qk~iRKx-rDMn*xKEIey+%@k77BFpHMn`i#WZ%P=M?lrRt9YY?nd zie}u|&lRbKlJ1dQ9^1h0&^)4kaL?vIxK{YJ&DU$;!NXAu4Fns*K)SiHAZrYV3+09u z9MdilL9g)`5Wssk7ukoq5TWxK1}fMX505!+PVD>twiee@MYHBNs@VMmH3R<=n<1ttdDis|en{@7(sG1(1h`nJ= z5Dvwlplq<^q!c(KtdP+)pE z(1_4AzMD0v3SW8-t6cK?UN-7BdW1Ie&rEo{@Zv>?BnxV53b|Pe*c$W@Ob_n$v+#Z% zgw9UizI(D^m6u_0;Ue=R=6AiJvc}Efv93uc-_27t1&Vn2cI_`RBV5bo5o#(>{p4W_ zYV%D!8=%G+s0%>G@oxV~j>|EUdwl>OPcq(re6>427C~feLB?nZz*AS&__NWjc7eIA zDPjP7IXE;$*#Xt{dBVjo8VzCFY2=RY$<)mhYUn|3DCZL_Q2o*wVz(CY{F5FE-gxiP zbUi8%UFiF6+k5RduBhZ>8qsIq$jnw;tBZYV#Zl$KSb9%yO(|eqq!g2?F`ksmFn)I; znaXb?)`qA3Z#Kh>QN6B3~_Jel9MCI9t#jRz?-rK4x}!ocK9crKMgg6D>97 z*V8Gd1bi(?gc1vN)Dw=_kK388c!cW+#K)gJvfw|4@c5eW%#JoNam_7{_hgSXH^DGC z2i0~B&I??GJMpLe6Z{3_fSJ?3+4fMfimT~)0)bbz52sw0Dcj>G> zAGCr|0xBumw#eXtq(9EOhg@Y#{74cU`b@rFG-?3{5w$|6+XSqAeQKHlH z5Z-L0FWd;FoKJhZih?~j2USML&b2thT6m?Bi7r+m>)~_sunmRlV3%uC-QAZ5pknZF zn>_iVUAM*)>7VBV;Jy}KN@2jEzGdf67~IwUe0smlN{XaIRZY8-tHV);q1uK-^?rWP zMowoU^unPXYdaIS2p5^)qBAhrI0g#ak}TflEUyx>R{FnC5swidF3<6!X28Y$^ zCVHOi*Y{XbRwrze`N~=vzq_-Je*MU`fc@^mYRh=IC6KtrxI|U)ycu;O2 zJ#R%f&yR5OsPvtO)T_6Q_lK*F_h?Ra2e(BiPpNzJ66R~Ib~G|xwhNxs*2bs(2a6Qz zBPJ-k1BDMRx}86WzY%c;LsNIS13QU_F5Sb>Nu zCFqQs=3C02R1l#@4`uR|nnV;S8U6-^^HN-RuE@$xLy{-u%Nz$bJ4VA=<6in<`2%B9 zNV@}AH%pqNQPO$FFkylf2+c2RVa-PX$QQX1w|A>4IpZZV9>d}LD=nuSB%TnuEbJzB zdOOB<=!C%Vt6V($D}I?*H+?QNPJOyT;_tWs9}`S!Uxp2TR?M#F@nas%!#vMp0;h?y z@Cl#oryI{AxG^Q4_Ls-;Wqp+2skbkVKjvXS<@AJm!m*0@y@ER`GG`2idDNoR(J^kT zPGF=922&2;Ytx}%DGHSu>|V`Z3!2VkTyUkvPzCzGwz*pF)4(9)?EiB9E=falT6^WU zYZD(%xFsIsqt+F#-?MoM6sj}uas%skJ)7aH6C89HE@2vBm?uYkCMn49*^Rg}^znT* z|9~GJ%cDmvElZe@kS6vFHv>BD=;poM^Ipk1-%z3A%pIu|ZthYmE24T|in}Lc!o|1M z^50{L=mC+~iuVIxi)Z%n#tb>XZ9~(b9c)4YR7CDSJwl*>q}txxsE6kr%|kKT>b<9jXf9 z?`z|O@AaEb8Q2_c&<}@ z&g!&ZpBmP99jo)Kp5dVx7CGk7Jb4)h(|O8^1alyA@OT}zH}g8tAq5TZL@D$)eAf6M zT{&t56#MJpKn6tiPT9j^yWka=EVsToh{}|FUU32kCN^*PFfXZS%eRK-k%5OvCHbBP zq*MWDwB=!UA~3SrGm=J^70tQ!COl+?Qh;`J)Oev@1T7IY)8bBN_F)M!LxZ^ytCfy0 z-J*|qi1sp$S@YQ5=X?`|v4w>D?1J&uFQBC~-T;lsHs8aQy`_Bn{I~GcK_A`upSu7* zN+lt9N2b2`+~>EF?aZ@+Zm|n&G5ekuQrnpubPs*oqnn!}hYNV_XlheH_wvXy!Q#$^E+c0FgJC*)@UBptm+ zNRf$O4n9J859x-L5{)RMvKZTp_lN|k4)S~=h3gvZ*Uuwm#A15gDGRyna?5v-zif^z zAOqN2YW-2=5>1GK-p~46E246FgMz`NjTU-*R4ch=HhErk(dU!yjETw``EEm(tlBe| ztCm?yEA4kInM_tCMqw&w@>Ovj^w+yd5$MoqFY5agJ(=p-iFh=*aeSsUOTE2Q>6X?O ztPk1|T6op7$6On79jnsHeTA&3Alb*Fj0oal_iRe9=GLn_;V9OV2 zrO7gMm`(L&xqDjD^)LkW&6@`r&zT55MKym;`nNIbQ=`+W*;5hP5a!dIjQitR85!4h zL9>N8-=mRFTC3kkzq>gf-Tq;A2+hZRtXLru!xHTe3Mzlky}}l4vfz9+LsTRKjiaxa z(t^i?q1%Q`)~-wJYj@Ti@tP9%oO0Ol=%==t&UCqLXXDj?1m|H`r0o{Ui)vNj@HHf* zd?ed`Le~ldwlTx$`oRLwvMZqhChIqkIraYd!(sn$9dki(T*8+x2Ji=4gXy4!3VuhT zzg14uP_!|{NI-?jDIhZIB%JG~-st_Pw^8#CM>^f&dX<=J$$8;Xim<`XcU(Zj(BFCqa>gb4QxB8?JzBusFK$ese>oOfQmZ6qp^x|;lO5ay*&lX4N!ct*Qe`mekt*1=_F2W~)tp5c8e`0so&g$o#Y=*s#ABo-{3+I2D@uXj*&zZ zN##^wj}Z%KaWz@@f?IDSIB&diYXGh3!!9H>jFPb;gu`;2G|70l=JkE%x|a03Y7n+F z{Xysa+yoi!Uo~;aH3}fVaFoxH7L4Hvw#CC9L?~{~PL0ztBRgn*JH|x}VON0MgkpeK zhEGYdpN&h)M^;;A7wFUtRh&JpgNoM_Riu|sMlcfH)Z+diHt>0$_8J|(`BLg@cU>h{ zo6Wwo{0V;O~iIr~lLqbL!C+-WaI?Q=%8G`%!90wieM%S&D8}x-xEIq&2 zSsQiY&R`yWQ)JbF-(AoyO3$eaOi$Sqg7HCk$h$TnjJ7}W&A^h#kA%Sa}i92g^C!K|@5MoXXijNWg5UTK;FrBqK zYrlD0AmgHm`NfIX!eZkhf6_XRX|5dv+>|L*-|ND-p76W z#GnC96U!?|9dMLjj8d7RzV-uYy|RUQx}TSy$G4errjs$m^V-&e2y%uQDLGtNBfn8H z{37eA7p2zsHQ~6&Z!OY7|0WqL@6W}_JoES66Qi$1x1(&=CK*83lbN_#K|z%&sZ?P< z=IlD8Q8mGLWrj6Em0FUDW6YtEil z(N5yS+cn^wqO^4d&L2|atF@XB!_0KkHr!m}Az!F9yeGK6-6YIv!->Wxy7hTrA9IP0 zlJ0u?WX?6}M|(7tYwDTY#F}+yXfZqAH-m>E?G#}ro$J|)%Hhy|`A62p-`($7pMh2H zWTi=>I*66<5yZ^l7u!xr)O9bPDr9{-hTIXoBzg_;Ax}>X#K@q85rW19B7 z)|-M8Ka?l6>Kh?cwT5~-OztLAD(B?bW5)- zd+E27kLsH1gB{4X5r}o2JK1Vw{+EV%wl9M>hHvZ1%S0T7FiNwkM#cIeQNrYGuE>>r za|DmKLTv|E6l&%H0fU_CSb!iiX*WpM{u7+om&*Vh$B%UZKK-}YvVf=4&IOBr>n8f zd*cC&A8@2K)ccDkbPc)hQxALJZ{Q7i?_=01|d#!yKi?cVbe?J@ZHZ#IXszB#l_@4QeKO?tGo9-72b($+3xPL@2GerG9^z#h3XZu{#9E8DJa~igKMJ2iK z@gmH=QRKX{Kh4Rlnvq`)TO~GBe_xqCXle}C0#eh`{WH%I<`I@w5*N5mKGVA%>sy)B zL3awRW$^E;RCJ$QG-co}RMzGjquv!-v|hBiNh!%%uW$QVz;=5@1sjQ%RGsiyS9!

b?QD`jC=vauK3;GmHI5ZCkKAo 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 XZm2A;>Op@v045`$C|)aS6#V}HhrOO8 literal 0 HcmV?d00001