Microsoft.PowerShell.TextUtility.format.ps1xml

<Configuration>
    <ViewDefinitions>
        <View>
            <Name>Inline</Name>
            <ViewSelectedBy>
                <TypeName>Microsoft.PowerShell.TextUtility.CompareTextDiff</TypeName>
            </ViewSelectedBy>
            <CustomControl>
                <CustomEntries>
                    <CustomEntry>
                        <CustomItem>
                            <ExpressionBinding>
                                <ScriptBlock>
                                    Set-StrictMode -Off
 
                                    $deleteColor = "$([char]0x1b)[1;9;31m"
                                    $insertColor = "$([char]0x1b)[0;1;32m"
                                    $resetColor = "$([char]0x1b)[0m"
                                    $textBuilder = [System.Text.StringBuilder]::new()
                                    $newline = [System.Environment]::NewLine
 
                                    $addNewLine = $false
                                    if ($_.LeftFile) {
                                        $null = $textBuilder.Append("${deleteColor}File:${resetColor} $($_.LeftFile)${newline}")
                                        $addNewLine = $true
                                    }
 
                                    if ($_.RightFile) {
                                        $null = $textBuilder.Append("${insertColor}File:${resetColor} $($_.RightFile)${newline}")
                                        $addNewLine = $true
                                    }
 
                                    if ($addNewLine) {
                                        $null = $textBuilder.Append($newline)
                                    }
 
                                    foreach ($diff in $_.Diff) {
                                        $text = $diff.text
                                        switch ($diff.Operation)
                                        {
                                            "EQUAL" {
                                                $null = $textBuilder.Append($text)
                                            }
 
                                            "DELETE" {
                                                $null = $textBuilder.Append("${deleteColor}${text}${resetColor}")
                                            }
 
                                            "INSERT" {
                                                $null = $textBuilder.Append("${insertColor}${text}${resetColor}")
                                            }
                                        }
                                    }
 
                                    $textBuilder.ToString()
                                </ScriptBlock>
                            </ExpressionBinding>
                        </CustomItem>
                    </CustomEntry>
                </CustomEntries>
            </CustomControl>
        </View>
        <View>
            <Name>SideBySide</Name>
            <ViewSelectedBy>
                <TypeName>Microsoft.PowerShell.TextUtility.CompareTextDiff#SideBySide</TypeName>
            </ViewSelectedBy>
            <CustomControl>
                <CustomEntries>
                    <CustomEntry>
                        <CustomItem>
                            <ExpressionBinding>
                                <ScriptBlock>
                                    Set-StrictMode -Off
 
                                    $consoleWidth = 120
                                    try {
                                        if ([Console]::WindowWidth -ne 0) {
                                            $consoleWidth = [Console]::WindowWidth
                                        }
                                    }
                                    catch {
                                        # just use default if this fails because there isn't a real console
                                    }
 
                                    $deleteText = [System.Text.StringBuilder]::new()
                                    $insertText = [System.Text.StringBuilder]::new()
                                    $deleteColor = "$([char]0x1b)[1;9;31m"
                                    $insertColor = "$([char]0x1b)[0;1;32m"
                                    $resetColor = "$([char]0x1b)[0m"
                                    $ellipsis = [char]0x2026
                                    $newline = [System.Environment]::NewLine
 
                                    foreach ($diff in $_.Diff) {
                                        $text = $diff.text.Replace("`r","")
 
                                        switch ($diff.operation)
                                        {
                                            "EQUAL" {
                                                $text = $text.Replace("`n","`n${resetColor}")
                                                $null = $deleteText.Append("${resetColor}${text}")
                                                $null = $insertText.Append("${resetColor}${text}")
                                            }
 
                                            "DELETE" {
                                                $text = $text.Replace("`n","`n${deleteColor}")
                                                $null = $deleteText.Append("${deleteColor}${text}")
                                            }
 
                                            "INSERT" {
                                                $text = $text.Replace("`n","`n${insertColor}")
                                                $null = $insertText.Append("${insertColor}${text}")
                                            }
                                        }
                                    }
 
                                    function Remove-VT100([string] $text) {
                                        $text.Replace($deleteColor,"").Replace($insertColor,"").Replace($resetColor,"")
                                    }
 
                                    $leftLines = $deleteText.ToString().Split("`n")
                                    $rightLines = $insertText.ToString().Split("`n")
                                    $lines = $leftLines.Count
 
                                    if ($rightLines.Count -gt $lines) {
                                        $lines = $rightLines.Count
                                    }
 
                                    $linesWidth = ($lines + 1).ToString().Length
                                    # 5 chars for whitespace and pipe after line number and whitespace, pipe, whitespace separating left and right
                                    [int]$columnWidth = ($consoleWidth - $linesWidth - 5) / 2
 
                                    # find longest line and use that as the columnWidth if less than current
                                    $longestWidth = 0
                                    foreach ($line in $leftLines) {
                                        $line = Remove-VT100 -text $line
                                        if ($line.Length -gt $longestWidth) {
                                            $longestWidth = $line.Length
                                        }
                                    }
 
                                    if ($longestWidth -lt $columnWidth) {
                                        $columnWidth = $longestWidth
                                    }
 
                                    $textOutput = [System.Text.StringBuilder]::new()
 
                                    if ($_.LeftFile -or $_.RightFile) {
                                        $prefix = "File: "
                                        $null = $textOutput.Append("".PadLeft($linesWidth))
                                        $null = $textOutput.Append("${resetColor} | ")
                                        if ($_.LeftFile) {
                                            $leftFile = $_.LeftFile
                                            if ($leftFile.Length + $prefix.Length -gt $columnWidth) {
                                                $leftFile = $ellipsis + $leftFile.Remove(0, $leftFile.Length - $columnWidth + 1 + $prefix.Length)
                                            }
                                            else {
                                                $leftFile = $leftFile.PadRight($columnWidth - $prefix.Length)
                                            }
 
                                            $leftFile = "${deleteColor}${prefix}${resetColor}${leftFile}"
                                        }
                                        else {
                                            $leftFile = "".PadLeft($columnWidth)
                                        }
 
                                        if ($_.RightFile) {
                                            $rightFile = $_.RightFile
                                            if ($rightFile.Length + $prefix.Length -gt $columnWidth) {
                                                $rightFile = $ellipsis + $rightFile.Remove(0, $rightFile.Length - $columnWidth + 1 + $prefix.Length)
                                            }
 
                                            $rightFile = "${insertColor}${prefix}${resetColor}${rightFile}"
                                        }
 
                                        $null = $textOutput.Append($leftFile)
                                        $null = $textOutput.Append("${resetColor} | ")
                                        $null = $textOutput.Append($rightFile)
                                        $null = $textOutput.Append($newline)
                                        $null = $textOutput.Append("".PadLeft($linesWidth))
                                        $null = $textOutput.Append("${resetColor} | ")
                                        $null = $textOutput.Append("".PadLeft($columnWidth))
                                        $null = $textOutput.Append(" |")
                                        $null = $textOutput.Append($newline)
                                    }
 
                                    for ($i = 0; $i -lt $lines; $i++) {
                                        if ($i -ge $leftLines.Count) {
                                            $leftText = "".PadRight($columnWidth)
                                        }
                                        else {
                                            $lineLength = (Remove-VT100 -text $leftLines[$i]).Length
                                            if ($lineLength -gt $columnWidth) {
                                                $leftText = $leftLines[$i].Substring(0, $columnWidth - 1 + ($leftLines[$i].Length - $lineLength)) + $ellipsis
                                            }
                                            else {
                                                $leftText = $leftLines[$i] + "${resetColor}" + "".PadRight($columnWidth - $lineLength)
                                            }
                                        }
 
                                        if ($i -ge $rightLines.Count) {
                                            $rightText = ""
                                        }
                                        else {
                                            $lineLength = (Remove-VT100 -text $rightLines[$i]).Length
                                            if ($lineLength -gt $columnWidth) {
                                                $rightText = $rightLines[$i].Substring(0, $columnWidth - 1 + ($rightLines[$i].Length - $lineLength)) + $ellipsis
                                            }
                                            else {
                                                $rightText = $rightLines[$i]
                                            }
                                        }
 
                                        $lineNumber = ($i + 1).ToString()
                                        $null = $textOutput.Append($resetColor)
                                        $null = $textOutput.Append($lineNumber.PadLeft($linesWidth - $lineNumber.Length))
                                        $null = $textOutput.Append(" | ")
                                        $null = $textOutput.Append($leftText)
                                        $null = $textOutput.Append("${resetColor} | ")
                                        $null = $textOutput.Append($rightText)
                                        $null = $textOutput.Append($newline)
                                    }
 
                                    $null = $textOutput.Append("${resetColor}")
                                    $textOutput.ToString()
                                </ScriptBlock>
                            </ExpressionBinding>
                        </CustomItem>
                    </CustomEntry>
                </CustomEntries>
            </CustomControl>
        </View>
    </ViewDefinitions>
</Configuration>
 
<!-- SIG # Begin signature block -->
<!-- MIIn0QYJKoZIhvcNAQcCoIInwjCCJ74CAQExDzANBglghkgBZQMEAgEFADB5Bgor -->
<!-- BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG -->
<!-- KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCALfsoJvU/jY3/t -->
<!-- GdiN4vSgaR8c5USY9hlvp0TVq8YWW6CCDYUwggYDMIID66ADAgECAhMzAAADTU6R -->
<!-- phoosHiPAAAAAANNMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNVBAYTAlVTMRMwEQYD -->
<!-- VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy -->
<!-- b3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25p -->
<!-- bmcgUENBIDIwMTEwHhcNMjMwMzE2MTg0MzI4WhcNMjQwMzE0MTg0MzI4WjB0MQsw -->
<!-- CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u -->
<!-- ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMR4wHAYDVQQDExVNaWNy -->
<!-- b3NvZnQgQ29ycG9yYXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB -->
<!-- AQDUKPcKGVa6cboGQU03ONbUKyl4WpH6Q2Xo9cP3RhXTOa6C6THltd2RfnjlUQG+ -->
<!-- Mwoy93iGmGKEMF/jyO2XdiwMP427j90C/PMY/d5vY31sx+udtbif7GCJ7jJ1vLzd -->
<!-- j28zV4r0FGG6yEv+tUNelTIsFmmSb0FUiJtU4r5sfCThvg8dI/F9Hh6xMZoVti+k -->
<!-- bVla+hlG8bf4s00VTw4uAZhjGTFCYFRytKJ3/mteg2qnwvHDOgV7QSdV5dWdd0+x -->
<!-- zcuG0qgd3oCCAjH8ZmjmowkHUe4dUmbcZfXsgWlOfc6DG7JS+DeJak1DvabamYqH -->
<!-- g1AUeZ0+skpkwrKwXTFwBRltAgMBAAGjggGCMIIBfjAfBgNVHSUEGDAWBgorBgEE -->
<!-- AYI3TAgBBggrBgEFBQcDAzAdBgNVHQ4EFgQUId2Img2Sp05U6XI04jli2KohL+8w -->
<!-- VAYDVR0RBE0wS6RJMEcxLTArBgNVBAsTJE1pY3Jvc29mdCBJcmVsYW5kIE9wZXJh -->
<!-- dGlvbnMgTGltaXRlZDEWMBQGA1UEBRMNMjMwMDEyKzUwMDUxNzAfBgNVHSMEGDAW -->
<!-- gBRIbmTlUAXTgqoXNzcitW2oynUClTBUBgNVHR8ETTBLMEmgR6BFhkNodHRwOi8v -->
<!-- d3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NybC9NaWNDb2RTaWdQQ0EyMDExXzIw -->
<!-- MTEtMDctMDguY3JsMGEGCCsGAQUFBwEBBFUwUzBRBggrBgEFBQcwAoZFaHR0cDov -->
<!-- L3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jZXJ0cy9NaWNDb2RTaWdQQ0EyMDEx -->
<!-- XzIwMTEtMDctMDguY3J0MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQELBQADggIB -->
<!-- ACMET8WuzLrDwexuTUZe9v2xrW8WGUPRQVmyJ1b/BzKYBZ5aU4Qvh5LzZe9jOExD -->
<!-- YUlKb/Y73lqIIfUcEO/6W3b+7t1P9m9M1xPrZv5cfnSCguooPDq4rQe/iCdNDwHT -->
<!-- 6XYW6yetxTJMOo4tUDbSS0YiZr7Mab2wkjgNFa0jRFheS9daTS1oJ/z5bNlGinxq -->
<!-- 2v8azSP/GcH/t8eTrHQfcax3WbPELoGHIbryrSUaOCphsnCNUqUN5FbEMlat5MuY -->
<!-- 94rGMJnq1IEd6S8ngK6C8E9SWpGEO3NDa0NlAViorpGfI0NYIbdynyOB846aWAjN -->
<!-- fgThIcdzdWFvAl/6ktWXLETn8u/lYQyWGmul3yz+w06puIPD9p4KPiWBkCesKDHv -->
<!-- XLrT3BbLZ8dKqSOV8DtzLFAfc9qAsNiG8EoathluJBsbyFbpebadKlErFidAX8KE -->
<!-- usk8htHqiSkNxydamL/tKfx3V/vDAoQE59ysv4r3pE+zdyfMairvkFNNw7cPn1kH -->
<!-- Gcww9dFSY2QwAxhMzmoM0G+M+YvBnBu5wjfxNrMRilRbxM6Cj9hKFh0YTwba6M7z -->
<!-- ntHHpX3d+nabjFm/TnMRROOgIXJzYbzKKaO2g1kWeyG2QtvIR147zlrbQD4X10Ab -->
<!-- rRg9CpwW7xYxywezj+iNAc+QmFzR94dzJkEPUSCJPsTFMIIHejCCBWKgAwIBAgIK -->
<!-- YQ6Q0gAAAAAAAzANBgkqhkiG9w0BAQsFADCBiDELMAkGA1UEBhMCVVMxEzARBgNV -->
<!-- BAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jv -->
<!-- c29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJvb3QgQ2VydGlm -->
<!-- aWNhdGUgQXV0aG9yaXR5IDIwMTEwHhcNMTEwNzA4MjA1OTA5WhcNMjYwNzA4MjEw -->
<!-- OTA5WjB+MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UE -->
<!-- BxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSgwJgYD -->
<!-- VQQDEx9NaWNyb3NvZnQgQ29kZSBTaWduaW5nIFBDQSAyMDExMIICIjANBgkqhkiG -->
<!-- 9w0BAQEFAAOCAg8AMIICCgKCAgEAq/D6chAcLq3YbqqCEE00uvK2WCGfQhsqa+la -->
<!-- UKq4BjgaBEm6f8MMHt03a8YS2AvwOMKZBrDIOdUBFDFC04kNeWSHfpRgJGyvnkmc -->
<!-- 6Whe0t+bU7IKLMOv2akrrnoJr9eWWcpgGgXpZnboMlImEi/nqwhQz7NEt13YxC4D -->
<!-- dato88tt8zpcoRb0RrrgOGSsbmQ1eKagYw8t00CT+OPeBw3VXHmlSSnnDb6gE3e+ -->
<!-- lD3v++MrWhAfTVYoonpy4BI6t0le2O3tQ5GD2Xuye4Yb2T6xjF3oiU+EGvKhL1nk -->
<!-- kDstrjNYxbc+/jLTswM9sbKvkjh+0p2ALPVOVpEhNSXDOW5kf1O6nA+tGSOEy/S6 -->
<!-- A4aN91/w0FK/jJSHvMAhdCVfGCi2zCcoOCWYOUo2z3yxkq4cI6epZuxhH2rhKEmd -->
<!-- X4jiJV3TIUs+UsS1Vz8kA/DRelsv1SPjcF0PUUZ3s/gA4bysAoJf28AVs70b1FVL -->
<!-- 5zmhD+kjSbwYuER8ReTBw3J64HLnJN+/RpnF78IcV9uDjexNSTCnq47f7Fufr/zd -->
<!-- sGbiwZeBe+3W7UvnSSmnEyimp31ngOaKYnhfsi+E11ecXL93KCjx7W3DKI8sj0A3 -->
<!-- T8HhhUSJxAlMxdSlQy90lfdu+HggWCwTXWCVmj5PM4TasIgX3p5O9JawvEagbJjS -->
<!-- 4NaIjAsCAwEAAaOCAe0wggHpMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBRI -->
<!-- bmTlUAXTgqoXNzcitW2oynUClTAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTAL -->
<!-- BgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBRyLToCMZBD -->
<!-- uRQFTuHqp8cx0SOJNDBaBgNVHR8EUzBRME+gTaBLhklodHRwOi8vY3JsLm1pY3Jv -->
<!-- c29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNSb29DZXJBdXQyMDExXzIwMTFf -->
<!-- MDNfMjIuY3JsMF4GCCsGAQUFBwEBBFIwUDBOBggrBgEFBQcwAoZCaHR0cDovL3d3 -->
<!-- dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0cy9NaWNSb29DZXJBdXQyMDExXzIwMTFf -->
<!-- MDNfMjIuY3J0MIGfBgNVHSAEgZcwgZQwgZEGCSsGAQQBgjcuAzCBgzA/BggrBgEF -->
<!-- BQcCARYzaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9kb2NzL3ByaW1h -->
<!-- cnljcHMuaHRtMEAGCCsGAQUFBwICMDQeMiAdAEwAZQBnAGEAbABfAHAAbwBsAGkA -->
<!-- YwB5AF8AcwB0AGEAdABlAG0AZQBuAHQALiAdMA0GCSqGSIb3DQEBCwUAA4ICAQBn -->
<!-- 8oalmOBUeRou09h0ZyKbC5YR4WOSmUKWfdJ5DJDBZV8uLD74w3LRbYP+vj/oCso7 -->
<!-- v0epo/Np22O/IjWll11lhJB9i0ZQVdgMknzSGksc8zxCi1LQsP1r4z4HLimb5j0b -->
<!-- pdS1HXeUOeLpZMlEPXh6I/MTfaaQdION9MsmAkYqwooQu6SpBQyb7Wj6aC6VoCo/ -->
<!-- KmtYSWMfCWluWpiW5IP0wI/zRive/DvQvTXvbiWu5a8n7dDd8w6vmSiXmE0OPQvy -->
<!-- CInWH8MyGOLwxS3OW560STkKxgrCxq2u5bLZ2xWIUUVYODJxJxp/sfQn+N4sOiBp -->
<!-- mLJZiWhub6e3dMNABQamASooPoI/E01mC8CzTfXhj38cbxV9Rad25UAqZaPDXVJi -->
<!-- hsMdYzaXht/a8/jyFqGaJ+HNpZfQ7l1jQeNbB5yHPgZ3BtEGsXUfFL5hYbXw3MYb -->
<!-- BL7fQccOKO7eZS/sl/ahXJbYANahRr1Z85elCUtIEJmAH9AAKcWxm6U/RXceNcbS -->
<!-- oqKfenoi+kiVH6v7RyOA9Z74v2u3S5fi63V4GuzqN5l5GEv/1rMjaHXmr/r8i+sL -->
<!-- gOppO6/8MO0ETI7f33VtY5E90Z1WTk+/gFcioXgRMiF670EKsT/7qMykXcGhiJtX -->
<!-- cVZOSEXAQsmbdlsKgEhr/Xmfwb1tbWrJUnMTDXpQzTGCGaIwghmeAgEBMIGVMH4x -->
<!-- CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt -->
<!-- b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01p -->
<!-- Y3Jvc29mdCBDb2RlIFNpZ25pbmcgUENBIDIwMTECEzMAAANNTpGmGiiweI8AAAAA -->
<!-- A00wDQYJYIZIAWUDBAIBBQCgga4wGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQw -->
<!-- HAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIEICXx -->
<!-- heVumux+/3RMbcHietvvYDWRw7NhHEcAL0/YYQMyMEIGCisGAQQBgjcCAQwxNDAy -->
<!-- oBSAEgBNAGkAYwByAG8AcwBvAGYAdKEagBhodHRwOi8vd3d3Lm1pY3Jvc29mdC5j -->
<!-- b20wDQYJKoZIhvcNAQEBBQAEggEAevZfTkpoPo3OO2uC5zBEjLPx5e7kYpBsJUSi -->
<!-- cIf27uMTK7R5t9gHVokMC3b0F7UIkf6am/PK3Ng0PBaiVHaPK+4R/Kzhl3LkyKMa -->
<!-- y8KoPHHgKqV0gQwnygzY+Ahx0Mk4CaUMpO7MJZ5A6PbIbi9FnGVWnOnXgMg9AYeO -->
<!-- rzAhfLrRYyuTlyIMQYOUsLlWXgLNos96GUOdHM//fUufqyakzqeER64pkybdUvIP -->
<!-- tiAfDvMNRMQzjOSlDeCYjyy26MO6WHf/ie8iubh9tWra6skWHQ28rPqZJ4VWvU8D -->
<!-- 8e/mg0i4jlsYObBLLwtO0t8fn+6FAaC417pyl4nqf/PZvydno6GCFywwghcoBgor -->
<!-- BgEEAYI3AwMBMYIXGDCCFxQGCSqGSIb3DQEHAqCCFwUwghcBAgEDMQ8wDQYJYIZI -->
<!-- AWUDBAIBBQAwggFZBgsqhkiG9w0BCRABBKCCAUgEggFEMIIBQAIBAQYKKwYBBAGE -->
<!-- WQoDATAxMA0GCWCGSAFlAwQCAQUABCA0YuPcGtPGMTQLsdBllvos9ppoNz17Fx/X -->
<!-- 06eX2arqPgIGZJLz+CnFGBMyMDIzMDYyODIyMDQ0OC44MDhaMASAAgH0oIHYpIHV -->
<!-- MIHSMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH -->
<!-- UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMS0wKwYDVQQL -->
<!-- EyRNaWNyb3NvZnQgSXJlbGFuZCBPcGVyYXRpb25zIExpbWl0ZWQxJjAkBgNVBAsT -->
<!-- HVRoYWxlcyBUU1MgRVNOOjA4NDItNEJFNi1DMjlBMSUwIwYDVQQDExxNaWNyb3Nv -->
<!-- ZnQgVGltZS1TdGFtcCBTZXJ2aWNloIIRezCCBycwggUPoAMCAQICEzMAAAGybkAD -->
<!-- f26plJIAAQAAAbIwDQYJKoZIhvcNAQELBQAwfDELMAkGA1UEBhMCVVMxEzARBgNV -->
<!-- BAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jv -->
<!-- c29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAg -->
<!-- UENBIDIwMTAwHhcNMjIwOTIwMjAyMjAxWhcNMjMxMjE0MjAyMjAxWjCB0jELMAkG -->
<!-- A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx -->
<!-- HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEtMCsGA1UECxMkTWljcm9z -->
<!-- b2Z0IElyZWxhbmQgT3BlcmF0aW9ucyBMaW1pdGVkMSYwJAYDVQQLEx1UaGFsZXMg -->
<!-- VFNTIEVTTjowODQyLTRCRTYtQzI5QTElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUt -->
<!-- U3RhbXAgU2VydmljZTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMqi -->
<!-- ZTIde/lQ4rC+Bml5f/Wuq/xKTxrfbG23HofmQ+qZAN4GyO73PF3y9OAfpt7Qf2jc -->
<!-- ldWOGUB+HzBuwllYyP3fx4MY8zvuAuB37FvoytnNC2DKnVrVlHOVcGUL9CnmhDNM -->
<!-- A2/nskjIf2IoiG9J0qLYr8duvHdQJ9Li2Pq9guySb9mvUL60ogslCO9gkh6FiEDw -->
<!-- MrwUr8Wja6jFpUTny8tg0N0cnCN2w4fKkp5qZcbUYFYicLSb/6A7pHCtX6xnjqwh -->
<!-- mJoib3vkKJyVxbuFLRhVXxH95b0LHeNhifn3jvo2j+/4QV10jEpXVW+iC9BsTtR6 -->
<!-- 9xvTjU51ZgP7BR4YDEWq7JsylSOv5B5THTDXRf184URzFhTyb8OZQKY7mqMh7c8J -->
<!-- 8w1sEM4XDUF2UZNy829NVCzG2tfdEXZaHxF8RmxpQYBxyhZwY1rotuIS+gfN2eq+ -->
<!-- hkAT3ipGn8/KmDwDtzAbnfuXjApgeZqwgcYJ8pDJ+y/xU6ouzJz1Bve5TTihkiA7 -->
<!-- wQsQe6R60Zk9dPdNzw0MK5niRzuQZAt4GI96FhjhlUWcUZOCkv/JXM/OGu/rgSpl -->
<!-- YwdmPLzzfDtXyuy/GCU5I4l08g6iifXypMgoYkkceOAAz4vx1x0BOnZWfI3fSwqN -->
<!-- UvoN7ncTT+MB4Vpvf1QBppjBAQUuvui6eCG0MCVNAgMBAAGjggFJMIIBRTAdBgNV -->
<!-- HQ4EFgQUmfIngFzZEZlPkjDOVluBSDDaanEwHwYDVR0jBBgwFoAUn6cVXQBeYl2D -->
<!-- 9OXSZacbUzUZ6XIwXwYDVR0fBFgwVjBUoFKgUIZOaHR0cDovL3d3dy5taWNyb3Nv -->
<!-- ZnQuY29tL3BraW9wcy9jcmwvTWljcm9zb2Z0JTIwVGltZS1TdGFtcCUyMFBDQSUy -->
<!-- MDIwMTAoMSkuY3JsMGwGCCsGAQUFBwEBBGAwXjBcBggrBgEFBQcwAoZQaHR0cDov -->
<!-- L3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jZXJ0cy9NaWNyb3NvZnQlMjBUaW1l -->
<!-- LVN0YW1wJTIwUENBJTIwMjAxMCgxKS5jcnQwDAYDVR0TAQH/BAIwADAWBgNVHSUB -->
<!-- Af8EDDAKBggrBgEFBQcDCDAOBgNVHQ8BAf8EBAMCB4AwDQYJKoZIhvcNAQELBQAD -->
<!-- ggIBANxHtu3FzIabaDbWqswdKBlAhKXRCN+5CSMiv2TYa4i2QuWIm+99piwAhDhA -->
<!-- Dfbqor1zyLi95Y6GQnvIWUgdeC7oL1ZtZye92zYK+EIfwYZmhS+CH4infAzUvscH -->
<!-- ZF3wlrJUfPUIDGVP0lCYVse9mguvG0dqkY4ayQPEHOvJubgZZaOdg/N8dInd6fGe -->
<!-- Oc+0DoGzB+LieObJ2Q0AtEt3XN3iX8Cp6+dZTX8xwE/LvhRwPpb/+nKshO7TVuve -->
<!-- nwdTwqB/LT6CNPaElwFeKxKrqRTPMbHeg+i+KnBLfwmhEXsMg2s1QX7JIxfvT96m -->
<!-- d0eiMjiMEO22LbOzmLMNd3LINowAnRBAJtX+3/e390B9sMGMHp+a1V+hgs62AopB -->
<!-- l0p/00li30DN5wEQ5If35Zk7b/T6pEx6rJUDYCti7zCbikjKTanBnOc99zGMlej5 -->
<!-- X+fC/k5ExUCrOs3/VzGRCZt5LvVQSdWqq/QMzTEmim4sbzASK9imEkjNtZZyvC1C -->
<!-- sUcD1voFktld4mKMjE+uDEV3IddD+DrRk94nVzNPSuZXewfVOnXHSeqG7xM3V7fl -->
<!-- 2aL4v1OhL2+JwO1Tx3B0irO1O9qbNdJk355bntd1RSVKgM22KFBHnoL7Js7pRhBi -->
<!-- aKmVTQGoOb+j1Qa7q+cixGo48Vh9k35BDsJS/DLoXFSPDl4mMIIHcTCCBVmgAwIB -->
<!-- AgITMwAAABXF52ueAptJmQAAAAAAFTANBgkqhkiG9w0BAQsFADCBiDELMAkGA1UE -->
<!-- BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAc -->
<!-- BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0 -->
<!-- IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTAwHhcNMjEwOTMwMTgyMjI1 -->
<!-- WhcNMzAwOTMwMTgzMjI1WjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGlu -->
<!-- Z3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv -->
<!-- cmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDCC -->
<!-- AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAOThpkzntHIhC3miy9ckeb0O -->
<!-- 1YLT/e6cBwfSqWxOdcjKNVf2AX9sSuDivbk+F2Az/1xPx2b3lVNxWuJ+Slr+uDZn -->
<!-- hUYjDLWNE893MsAQGOhgfWpSg0S3po5GawcU88V29YZQ3MFEyHFcUTE3oAo4bo3t -->
<!-- 1w/YJlN8OWECesSq/XJprx2rrPY2vjUmZNqYO7oaezOtgFt+jBAcnVL+tuhiJdxq -->
<!-- D89d9P6OU8/W7IVWTe/dvI2k45GPsjksUZzpcGkNyjYtcI4xyDUoveO0hyTD4MmP -->
<!-- frVUj9z6BVWYbWg7mka97aSueik3rMvrg0XnRm7KMtXAhjBcTyziYrLNueKNiOSW -->
<!-- rAFKu75xqRdbZ2De+JKRHh09/SDPc31BmkZ1zcRfNN0Sidb9pSB9fvzZnkXftnIv -->
<!-- 231fgLrbqn427DZM9ituqBJR6L8FA6PRc6ZNN3SUHDSCD/AQ8rdHGO2n6Jl8P0zb -->
<!-- r17C89XYcz1DTsEzOUyOArxCaC4Q6oRRRuLRvWoYWmEBc8pnol7XKHYC4jMYcten -->
<!-- IPDC+hIK12NvDMk2ZItboKaDIV1fMHSRlJTYuVD5C4lh8zYGNRiER9vcG9H9stQc -->
<!-- xWv2XFJRXRLbJbqvUAV6bMURHXLvjflSxIUXk8A8FdsaN8cIFRg/eKtFtvUeh17a -->
<!-- j54WcmnGrnu3tz5q4i6tAgMBAAGjggHdMIIB2TASBgkrBgEEAYI3FQEEBQIDAQAB -->
<!-- MCMGCSsGAQQBgjcVAgQWBBQqp1L+ZMSavoKRPEY1Kc8Q/y8E7jAdBgNVHQ4EFgQU -->
<!-- n6cVXQBeYl2D9OXSZacbUzUZ6XIwXAYDVR0gBFUwUzBRBgwrBgEEAYI3TIN9AQEw -->
<!-- QTA/BggrBgEFBQcCARYzaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9E -->
<!-- b2NzL1JlcG9zaXRvcnkuaHRtMBMGA1UdJQQMMAoGCCsGAQUFBwMIMBkGCSsGAQQB -->
<!-- gjcUAgQMHgoAUwB1AGIAQwBBMAsGA1UdDwQEAwIBhjAPBgNVHRMBAf8EBTADAQH/ -->
<!-- MB8GA1UdIwQYMBaAFNX2VsuP6KJcYmjRPZSQW9fOmhjEMFYGA1UdHwRPME0wS6BJ -->
<!-- oEeGRWh0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01p -->
<!-- Y1Jvb0NlckF1dF8yMDEwLTA2LTIzLmNybDBaBggrBgEFBQcBAQROMEwwSgYIKwYB -->
<!-- BQUHMAKGPmh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWljUm9v -->
<!-- Q2VyQXV0XzIwMTAtMDYtMjMuY3J0MA0GCSqGSIb3DQEBCwUAA4ICAQCdVX38Kq3h -->
<!-- LB9nATEkW+Geckv8qW/qXBS2Pk5HZHixBpOXPTEztTnXwnE2P9pkbHzQdTltuw8x -->
<!-- 5MKP+2zRoZQYIu7pZmc6U03dmLq2HnjYNi6cqYJWAAOwBb6J6Gngugnue99qb74p -->
<!-- y27YP0h1AdkY3m2CDPVtI1TkeFN1JFe53Z/zjj3G82jfZfakVqr3lbYoVSfQJL1A -->
<!-- oL8ZthISEV09J+BAljis9/kpicO8F7BUhUKz/AyeixmJ5/ALaoHCgRlCGVJ1ijbC -->
<!-- HcNhcy4sa3tuPywJeBTpkbKpW99Jo3QMvOyRgNI95ko+ZjtPu4b6MhrZlvSP9pEB -->
<!-- 9s7GdP32THJvEKt1MMU0sHrYUP4KWN1APMdUbZ1jdEgssU5HLcEUBHG/ZPkkvnNt -->
<!-- yo4JvbMBV0lUZNlz138eW0QBjloZkWsNn6Qo3GcZKCS6OEuabvshVGtqRRFHqfG3 -->
<!-- rsjoiV5PndLQTHa1V1QJsWkBRH58oWFsc/4Ku+xBZj1p/cvBQUl+fpO+y/g75LcV -->
<!-- v7TOPqUxUYS8vwLBgqJ7Fx0ViY1w/ue10CgaiQuPNtq6TPmb/wrpNPgkNWcr4A24 -->
<!-- 5oyZ1uEi6vAnQj0llOZ0dFtq0Z4+7X6gMTN9vMvpe784cETRkPHIqzqKOghif9lw -->
<!-- Y1NNje6CbaUFEMFxBmoQtB1VM1izoXBm8qGCAtcwggJAAgEBMIIBAKGB2KSB1TCB -->
<!-- 0jELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1Jl -->
<!-- ZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEtMCsGA1UECxMk -->
<!-- TWljcm9zb2Z0IElyZWxhbmQgT3BlcmF0aW9ucyBMaW1pdGVkMSYwJAYDVQQLEx1U -->
<!-- aGFsZXMgVFNTIEVTTjowODQyLTRCRTYtQzI5QTElMCMGA1UEAxMcTWljcm9zb2Z0 -->
<!-- IFRpbWUtU3RhbXAgU2VydmljZaIjCgEBMAcGBSsOAwIaAxUAjhJ+EeySRfn2KCNs -->
<!-- jn9cF9AUSTqggYMwgYCkfjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGlu -->
<!-- Z3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv -->
<!-- cmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDAN -->
<!-- BgkqhkiG9w0BAQUFAAIFAOhGq5UwIhgPMjAyMzA2MjgyMDUyMzdaGA8yMDIzMDYy -->
<!-- OTIwNTIzN1owdzA9BgorBgEEAYRZCgQBMS8wLTAKAgUA6EarlQIBADAKAgEAAgIH -->
<!-- KQIB/zAHAgEAAgITZjAKAgUA6Ef9FQIBADA2BgorBgEEAYRZCgQCMSgwJjAMBgor -->
<!-- BgEEAYRZCgMCoAowCAIBAAIDB6EgoQowCAIBAAIDAYagMA0GCSqGSIb3DQEBBQUA -->
<!-- A4GBABtoaJkAFzP3gyoRhjI2Fbl3bWv+ppyz850aRJzUa9t8fqPpc9Kz4iWtSPE3 -->
<!-- BBOk2LOR4lXItE4U391XeWXA/wL9CgEdYZKEaSxMLy7/fw5Yx1zLUM0Mam+cWrPA -->
<!-- tbiwje6TNH5y8AcSqEf19yptrCEBHkwaD7F9Za69b1sfuxwuMYIEDTCCBAkCAQEw -->
<!-- gZMwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcT -->
<!-- B1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UE -->
<!-- AxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTACEzMAAAGybkADf26plJIA -->
<!-- AQAAAbIwDQYJYIZIAWUDBAIBBQCgggFKMBoGCSqGSIb3DQEJAzENBgsqhkiG9w0B -->
<!-- CRABBDAvBgkqhkiG9w0BCQQxIgQghYscNi8Ao4bciwPgsQNJEulaDz0Ex2+sT2u1 -->
<!-- PoOdMCAwgfoGCyqGSIb3DQEJEAIvMYHqMIHnMIHkMIG9BCBTeM485+E+t4PEVieU -->
<!-- oFKX7PVyLo/nzu+htJPCG04+NTCBmDCBgKR+MHwxCzAJBgNVBAYTAlVTMRMwEQYD -->
<!-- VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy -->
<!-- b3NvZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1w -->
<!-- IFBDQSAyMDEwAhMzAAABsm5AA39uqZSSAAEAAAGyMCIEIAxNQVG4df7B8lfZJm1t -->
<!-- NnxRG+/AfTEsqDeiGZ3RmO64MA0GCSqGSIb3DQEBCwUABIICAFPb/sHtkDWv2tGS -->
<!-- niGBqjUy2a0PHv8izqLf4kKOrguYecEX3RNrzR6TKrjWhYJ+rJUG5qBmgHxdWUZI -->
<!-- o1r0i+oOJ/Y+c79uZHzXKYD46qYX1QFm4+JdUZ3XD+JRjSwM/m3XgEObq4o3us51 -->
<!-- Zj/cd+7QK1s6VvwdNxCzaCMrHCnOBELzpHeeJgg53tKoh0tleacG4sWp7cL/OYwd -->
<!-- QzisghBlG8zhBeDoZqaQ9UXejeSliu6MIgmZAGNl7CLJ6rk43qjqBudiSyNDC/gT -->
<!-- Y3Cti32XPeTK3MI6ijpDhvTqGnFjQUTa7i18qaVWRHhheA/bJpqkOXgzYE1Mkpuv -->
<!-- 4nw81+EcBY872IfwhZ5lTa5wHv7XNVJvKmR1b1N37wAXNgQvQTc5cvEuoz4LPj0x -->
<!-- rMYCUJg696BxhIVMbpvKJCqJ7BwHGl/Z+JHixf3/tc5PQGA7hn/Qbmkt1xOoReJD -->
<!-- 9WPkmFBv2YcH21j6DWVd8goJ5SmBUidE/jMcXc6nQy06ON1dXjaqb1jmGQOR/Z0T -->
<!-- EDr8Z4vUeAuJlQH9h941i6U1jdZWArU/8BQ7oSvlzFRbdSIli0gJH+HO6g5bmc8b -->
<!-- vS/EJjZYk0voqZzqYVNy8aRa4v+0pKLAiX+Nf8cEUS9pJjQHSUEc5RR/W9WIGJFl -->
<!-- WrxmdYFVpBajw9u9iyyHUJmjKFya -->
<!-- SIG # End signature block -->