403Webshell
Server IP : 209.209.40.120  /  Your IP : 216.73.217.112
Web Server : Microsoft-IIS/10.0
System : Windows NT NEWWWW 10.0 build 17763 (Windows Server 2019) i586
User : NEWWWW$ ( 0)
PHP Version : 8.3.30
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  C:/Windows/SecureBoot/ExampleRolloutScripts/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/Windows/SecureBoot/ExampleRolloutScripts/Deploy-GPO-SecureBootCollection.ps1
<#
.SYNOPSIS
    GPO Deployment Script for Secure Boot Event Collection
    Creates and links a GPO to deploy the collection script as a scheduled task

.DESCRIPTION
    This script automates the deployment of Secure Boot event collection via Group Policy.
    It creates a GPO with:
    - A scheduled task that runs the collection script daily
    - Proper permissions for writing to the central share
    - WMI filters for targeting specific OS versions

.PARAMETER GPOName
    Name for the new GPO

.PARAMETER DomainName
    Target domain FQDN

.PARAMETER OUPath
    Distinguished Name of the OU(s) to link the GPO to.
    Accepts multiple OUs as an array. Not required if -AutoDetectOU is specified.

.PARAMETER AutoDetectOU
    Switch to interactively list and select OUs from Active Directory.
    When specified, -OUPath is optional.

.PARAMETER CollectionSharePath
    UNC path where collection results will be stored

.PARAMETER ScriptSourcePath
    Path where the collection script is stored (will be copied to SYSVOL)

.PARAMETER RandomDelayHours
    Number of hours to randomly spread script execution across endpoints.
    This prevents all machines from writing to the share simultaneously.
    Default: 4 hours. Valid range: 1-24 hours.
    
    Recommended values:
    - 1-10K devices: 4 hours (default)
    - 10K-50K devices: 8 hours
    - 50K+ devices: 12-24 hours

.EXAMPLE
    .\Deploy-GPO-SecureBootCollection.ps1 -DomainName "contoso.com" -OUPath "OU=Workstations,DC=contoso,DC=com"

.EXAMPLE
    .\Deploy-GPO-SecureBootCollection.ps1 -DomainName "contoso.com" -OUPath "OU=Workstations,DC=contoso,DC=com" -RandomDelayHours 8

.EXAMPLE
    .\Deploy-GPO-SecureBootCollection.ps1 -DomainName "contoso.com" -AutoDetectOU
    
    Lists all OUs in the domain and prompts for selection.

.EXAMPLE
    .\Deploy-GPO-SecureBootCollection.ps1 -DomainName "contoso.com" -OUPath @("OU=Workstations,DC=contoso,DC=com", "OU=Laptops,DC=contoso,DC=com")
    
    Links GPO to multiple OUs in a single run.

.NOTES
    Requires: Active Directory PowerShell module, Group Policy module
    Must be run with Domain Admin or delegated GPO creation rights
#>

[CmdletBinding()]
param(
    [Parameter(Mandatory = $false)]
    [string]$GPOName = "SecureBoot-EventCollection",
    
    [Parameter(Mandatory = $false)]
    [string]$DomainName,
    
    [Parameter(Mandatory = $false)]
    [string[]]$OUPath,
    
    [Parameter(Mandatory = $false)]
    [switch]$AutoDetectOU,
    
    [Parameter(Mandatory = $false)]
    [string]$CollectionSharePath = "\\$DomainName\NETLOGON\SecureBootLogs",
    
    [Parameter(Mandatory = $false)]
    [string]$ScriptSourcePath = ".\Detect-SecureBootCertUpdateStatus.ps1",
    
    [Parameter(Mandatory = $false)]
    [ValidateSet("Daily", "Weekly", "AtStartup")]
    [string]$Schedule = "Daily",
    
    [Parameter(Mandatory = $false)]
    [string]$ScheduleTime = "14:00",
    
    [Parameter(Mandatory = $false)]
    [ValidateRange(1, 24)]
    [int]$RandomDelayHours = 4
)

#Requires -Modules ActiveDirectory, GroupPolicy
#Requires -Version 5.1

$ErrorActionPreference = "Stop"
$DownloadUrl = "https://aka.ms/getsecureboot"
$DownloadSubPage = "Deployment and Monitoring Samples"

# ============================================================================
# DEPENDENCY VALIDATION
# ============================================================================

function Test-ScriptDependencies {
    param(
        [Parameter(Mandatory = $true)]
        [string]$ScriptDirectory,
        
        [Parameter(Mandatory = $true)]
        [string[]]$RequiredScripts
    )
    
    $missingScripts = @()
    
    foreach ($script in $RequiredScripts) {
        $scriptPath = Join-Path $ScriptDirectory $script
        if (-not (Test-Path $scriptPath)) {
            $missingScripts += $script
        }
    }
    
    if ($missingScripts.Count -gt 0) {
        Write-Host ""
        Write-Host ("=" * 70) -ForegroundColor Red
        Write-Host "  MISSING DEPENDENCIES" -ForegroundColor Red
        Write-Host ("=" * 70) -ForegroundColor Red
        Write-Host ""
        Write-Host "The following required scripts were not found:" -ForegroundColor Yellow
        foreach ($script in $missingScripts) {
            Write-Host "  - $script" -ForegroundColor White
        }
        Write-Host ""
        Write-Host "Please download the latest scripts from:" -ForegroundColor Cyan
        Write-Host "  URL: $DownloadUrl" -ForegroundColor White
        Write-Host "  Navigate to: '$DownloadSubPage'" -ForegroundColor White
        Write-Host ""
        Write-Host "Extract all scripts to the same directory and run again." -ForegroundColor Yellow
        Write-Host ""
        return $false
    }
    
    return $true
}

# The Detect script is required - it gets deployed to endpoints via GPO
$requiredScripts = @(
    "Detect-SecureBootCertUpdateStatus.ps1"
)

if (-not (Test-ScriptDependencies -ScriptDirectory $PSScriptRoot -RequiredScripts $requiredScripts)) {
    exit 1
}

# ============================================================================
# AUTO-DETECT DOMAIN NAME
# ============================================================================

if (-not $DomainName) {
    $DomainName = $env:USERDNSDOMAIN
    if (-not $DomainName) {
        # Try to get from AD module
        try {
            Import-Module ActiveDirectory -ErrorAction Stop
            $DomainName = (Get-ADDomain).DNSRoot
        } catch {
            Write-Host "ERROR: Could not auto-detect domain name." -ForegroundColor Red
            Write-Host "Please specify -DomainName parameter." -ForegroundColor Yellow
            Write-Host ""
            Write-Host "Example:" -ForegroundColor Gray
            Write-Host "  .\Deploy-GPO-SecureBootCollection.ps1 -DomainName contoso.com -AutoDetectOU" -ForegroundColor White
            exit 1
        }
    }
    Write-Host "Auto-detected domain: $DomainName" -ForegroundColor Green
}

# Set CollectionSharePath default if not explicitly provided
if (-not $PSBoundParameters.ContainsKey('CollectionSharePath')) {
    $CollectionSharePath = "\\$DomainName\NETLOGON\SecureBootLogs"
}

Write-Host "============================================" -ForegroundColor Cyan
Write-Host "Secure Boot Collection - GPO Deployment" -ForegroundColor Cyan
Write-Host "============================================" -ForegroundColor Cyan

# Validate prerequisites
Write-Host "`n[1/6] Validating prerequisites..." -ForegroundColor Yellow

if (-not (Get-Module -ListAvailable -Name ActiveDirectory)) {
    throw "ActiveDirectory module not found. Install RSAT tools."
}

if (-not (Get-Module -ListAvailable -Name GroupPolicy)) {
    throw "GroupPolicy module not found. Install RSAT tools."
}

Import-Module ActiveDirectory
Import-Module GroupPolicy

# Validate domain connectivity
try {
    $domain = Get-ADDomain -Server $DomainName
    Write-Host "   Connected to domain: $($domain.DNSRoot)" -ForegroundColor Green
} catch {
    throw "Cannot connect to domain: $DomainName. Error: $_"
}

# Handle OU selection
if ($AutoDetectOU) {
    Write-Host "`n   Discovering OUs in domain..." -ForegroundColor Cyan
    $allOUs = Get-ADOrganizationalUnit -Filter * -Server $DomainName | 
        Sort-Object DistinguishedName |
        Select-Object @{N='Index';E={0}}, Name, DistinguishedName
    
    # Assign indices
    for ($i = 0; $i -lt $allOUs.Count; $i++) {
        $allOUs[$i].Index = $i + 1
    }
    
    Write-Host "`n   Available OUs:" -ForegroundColor Yellow
    Write-Host "   ---------------------------------------------------------------------" -ForegroundColor DarkGray
    $allOUs | ForEach-Object {
        Write-Host ("   {0,3}) {1}" -f $_.Index, $_.DistinguishedName) -ForegroundColor White
    }
    Write-Host "   ---------------------------------------------------------------------" -ForegroundColor DarkGray
    Write-Host "   Tip: Enter comma-separated numbers to select multiple OUs (e.g., 1,3,5)" -ForegroundColor DarkGray
    Write-Host "        Enter 'A' to select ALL OUs" -ForegroundColor DarkGray
    Write-Host ""
    
    $selection = Read-Host "   Select OU(s) to link GPO"
    
    if ($selection -eq 'A' -or $selection -eq 'a') {
        $OUPath = $allOUs.DistinguishedName
        Write-Host "   Selected ALL $($OUPath.Count) OUs" -ForegroundColor Green
    } else {
        $indices = $selection -split ',' | ForEach-Object { [int]$_.Trim() }
        $OUPath = @()
        foreach ($idx in $indices) {
            $selected = $allOUs | Where-Object { $_.Index -eq $idx }
            if ($selected) {
                $OUPath += $selected.DistinguishedName
            } else {
                Write-Warning "Invalid index: $idx - skipping"
            }
        }
    }
    
    if ($OUPath.Count -eq 0) {
        throw "No OUs selected. Aborting."
    }
    
    Write-Host "`n   Selected $($OUPath.Count) OU(s):" -ForegroundColor Green
    $OUPath | ForEach-Object { Write-Host "      - $_" -ForegroundColor Gray }
    
} elseif (-not $OUPath -or $OUPath.Count -eq 0) {
    throw "Either -OUPath or -AutoDetectOU must be specified."
} else {
    # Validate each OU exists
    foreach ($path in $OUPath) {
        try {
            $ou = Get-ADOrganizationalUnit -Identity $path -Server $DomainName
            Write-Host "   Target OU found: $($ou.Name)" -ForegroundColor Green
        } catch {
            throw "OU not found: $path"
        }
    }
}

# Validate source script exists
if (-not (Test-Path $ScriptSourcePath)) {
    throw "Collection script not found: $ScriptSourcePath"
}

# Step 2: Create collection share structure
Write-Host "`n[2/6] Setting up collection share..." -ForegroundColor Yellow

$sysvolScriptPath = "\\$DomainName\SYSVOL\$DomainName\Scripts\SecureBootCollection"

# Create SYSVOL script folder
if (-not (Test-Path $sysvolScriptPath)) {
    New-Item -ItemType Directory -Path $sysvolScriptPath -Force | Out-Null
    Write-Host "   Created SYSVOL script folder: $sysvolScriptPath" -ForegroundColor Green
}

# Copy collection script to SYSVOL
$destScript = Join-Path $sysvolScriptPath "Detect-SecureBootCertUpdateStatus.ps1"

# Remove existing destination if it's a directory (fix for Copy-Item bug)
if (Test-Path $destScript -PathType Container) {
    Remove-Item $destScript -Recurse -Force
}

Copy-Item -Path $ScriptSourcePath -Destination $destScript -Force
Write-Host "   Copied collection script to SYSVOL" -ForegroundColor Green

# Create a wrapper script that calls the main script with parameters
$wrapperScript = @"
# Secure Boot Event Collection Wrapper
# Auto-generated by Deploy-GPO-SecureBootCollection.ps1

`$ErrorActionPreference = 'SilentlyContinue'

# Configuration
`$CollectionShare = '$CollectionSharePath'
`$ScriptPath = '$sysvolScriptPath\Detect-SecureBootCertUpdateStatus.ps1'

# Run collection with -OutputPath parameter
if (Test-Path `$ScriptPath) {
    & `$ScriptPath -OutputPath `$CollectionShare
} else {
    Write-EventLog -LogName Application -Source "SecureBootCollection" -EventId 1001 -EntryType Error -Message "Collection script not found: `$ScriptPath"
}
"@

$wrapperPath = Join-Path $sysvolScriptPath "Run-SecureBootCollection.ps1"
$wrapperScript | Out-File -FilePath $wrapperPath -Encoding UTF8 -Force
Write-Host "   Created wrapper script" -ForegroundColor Green

# Create collection share (if on a file server)
Write-Host "   Collection share path: $CollectionSharePath" -ForegroundColor Cyan
Write-Host "   NOTE: Ensure this share exists with 'Domain Computers' write access" -ForegroundColor Yellow

# Step 3: Create the GPO
Write-Host "`n[3/6] Creating Group Policy Object..." -ForegroundColor Yellow

# Check if GPO already exists
$existingGPO = Get-GPO -Name $GPOName -Domain $DomainName -ErrorAction SilentlyContinue

if ($existingGPO) {
    Write-Host "   GPO '$GPOName' already exists. Updating..." -ForegroundColor Yellow
    $gpo = $existingGPO
} else {
    $gpo = New-GPO -Name $GPOName -Domain $DomainName -Comment "Deploys Secure Boot event collection script to endpoints"
    Write-Host "   Created GPO: $GPOName" -ForegroundColor Green
}

# Step 4: Configure Scheduled Task via GPO Preferences
Write-Host "`n[4/6] Configuring scheduled task..." -ForegroundColor Yellow

# Build the scheduled task XML
# RandomDelay spreads execution across endpoints to prevent server overload
Write-Host "   Random delay: $RandomDelayHours hours (spreads load across fleet)" -ForegroundColor Cyan

$taskTrigger = switch ($Schedule) {
    "Daily" {
        @"
        <CalendarTrigger>
          <StartBoundary>2024-01-01T${ScheduleTime}:00</StartBoundary>
          <Enabled>true</Enabled>
          <ScheduleByDay>
            <DaysInterval>1</DaysInterval>
          </ScheduleByDay>
          <RandomDelay>PT${RandomDelayHours}H</RandomDelay>
        </CalendarTrigger>
"@
    }
    "Weekly" {
        @"
        <CalendarTrigger>
          <StartBoundary>2024-01-01T${ScheduleTime}:00</StartBoundary>
          <Enabled>true</Enabled>
          <ScheduleByWeek>
            <WeeksInterval>1</WeeksInterval>
            <DaysOfWeek>
              <Wednesday />
            </DaysOfWeek>
          </ScheduleByWeek>
          <RandomDelay>PT${RandomDelayHours}H</RandomDelay>
        </CalendarTrigger>
"@
    }
    "AtStartup" {
        # For startup triggers, use Delay to add random start time
        # Each machine will start between 5 and (5 + RandomDelayHours*60) minutes after boot
        $maxDelayMinutes = 5 + ($RandomDelayHours * 60)
        @"
        <BootTrigger>
          <Enabled>true</Enabled>
          <Delay>PT5M</Delay>
          <RandomDelay>PT${RandomDelayHours}H</RandomDelay>
        </BootTrigger>
"@
    }
}

$scheduledTaskXML = @"
<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.4" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Description>Collects Secure Boot event data for enterprise census</Description>
    <Author>Enterprise Security</Author>
  </RegistrationInfo>
  <Triggers>
    $taskTrigger
  </Triggers>
  <Principals>
    <Principal id="Author">
      <UserId>S-1-5-18</UserId>
      <RunLevel>HighestAvailable</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>true</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>true</RunOnlyIfNetworkAvailable>
    <IdleSettings>
      <StopOnIdleEnd>false</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
    <UseUnifiedSchedulingEngine>true</UseUnifiedSchedulingEngine>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>PT1H</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>powershell.exe</Command>
      <Arguments>-NoProfile -ExecutionPolicy Bypass -File "$wrapperPath"</Arguments>
    </Exec>
  </Actions>
</Task>
"@

# Save task XML to SYSVOL for reference/backup
$taskXmlPath = Join-Path $sysvolScriptPath "SecureBootCollection-Task.xml"
$scheduledTaskXML | Out-File -FilePath $taskXmlPath -Encoding Unicode -Force
Write-Host "   Saved scheduled task XML to SYSVOL (backup)" -ForegroundColor Green

# Inject scheduled task into GPO Preferences
Write-Host "   Injecting scheduled task into GPO Preferences..." -ForegroundColor Cyan

$gpoId = $gpo.Id.ToString()
$gpoPrefPath = "\\$DomainName\SYSVOL\$DomainName\Policies\{$gpoId}\Machine\Preferences\ScheduledTasks"

# Create Preferences folder structure
if (-not (Test-Path $gpoPrefPath)) {
    New-Item -ItemType Directory -Path $gpoPrefPath -Force | Out-Null
}

# Generate unique GUID for the task
$taskGuid = [guid]::NewGuid().ToString("B").ToUpper()

# Build GPO Preferences ScheduledTasks.xml format
# This is different from standard Task Scheduler XML - it's GPP format
$gppScheduledTasksXml = @"
<?xml version="1.0" encoding="utf-8"?>
<ScheduledTasks clsid="{CC63F200-7309-4ba0-B154-A71CD118DBCC}">
  <TaskV2 clsid="{D8896631-B747-47a7-84A6-C155337F3BC8}" name="SecureBoot-EventCollection" image="0" changed="$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')" uid="$taskGuid" userContext="0" removePolicy="0">
    <Properties action="C" name="SecureBoot-EventCollection" runAs="NT AUTHORITY\System" logonType="S4U">
      <Task version="1.3">
        <RegistrationInfo>
          <Author>Enterprise Security</Author>
          <Description>Collects Secure Boot certificate status for enterprise compliance monitoring</Description>
        </RegistrationInfo>
        <Principals>
          <Principal id="Author">
            <UserId>NT AUTHORITY\System</UserId>
            <LogonType>S4U</LogonType>
            <RunLevel>HighestAvailable</RunLevel>
          </Principal>
        </Principals>
        <Settings>
          <IdleSettings>
            <Duration>PT10M</Duration>
            <WaitTimeout>PT1H</WaitTimeout>
            <StopOnIdleEnd>false</StopOnIdleEnd>
            <RestartOnIdle>false</RestartOnIdle>
          </IdleSettings>
          <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
          <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
          <StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>
          <AllowHardTerminate>true</AllowHardTerminate>
          <StartWhenAvailable>true</StartWhenAvailable>
          <RunOnlyIfNetworkAvailable>true</RunOnlyIfNetworkAvailable>
          <AllowStartOnDemand>true</AllowStartOnDemand>
          <Enabled>true</Enabled>
          <Hidden>false</Hidden>
          <RunOnlyIfIdle>false</RunOnlyIfIdle>
          <WakeToRun>false</WakeToRun>
          <ExecutionTimeLimit>PT1H</ExecutionTimeLimit>
          <Priority>7</Priority>
        </Settings>
        <Triggers>
          $taskTrigger
        </Triggers>
        <Actions Context="Author">
          <Exec>
            <Command>powershell.exe</Command>
            <Arguments>-NoProfile -ExecutionPolicy Bypass -File "$wrapperPath"</Arguments>
          </Exec>
        </Actions>
      </Task>
    </Properties>
  </TaskV2>
</ScheduledTasks>
"@

# Write GPP ScheduledTasks.xml to GPO
$gppXmlPath = Join-Path $gpoPrefPath "ScheduledTasks.xml"
$gppScheduledTasksXml | Out-File -FilePath $gppXmlPath -Encoding UTF8 -Force
Write-Host "   [OK] Scheduled task injected into GPO" -ForegroundColor Green
Write-Host "   Task schedule: $Schedule at $ScheduleTime with $RandomDelayHours hour random delay" -ForegroundColor Gray

# Step 5: Link GPO to OU(s)
Write-Host "`n[5/6] Linking GPO to OU(s)..." -ForegroundColor Yellow

$linkedCount = 0
$skippedCount = 0

foreach ($targetOU in $OUPath) {
    $existingLink = Get-GPInheritance -Target $targetOU -Domain $DomainName | 
        Select-Object -ExpandProperty GpoLinks | 
        Where-Object { $_.DisplayName -eq $GPOName }

    if (-not $existingLink) {
        New-GPLink -Name $GPOName -Target $targetOU -Domain $DomainName -LinkEnabled Yes | Out-Null
        Write-Host "   [OK] Linked to: $targetOU" -ForegroundColor Green
        $linkedCount++
    } else {
        Write-Host "   - Already linked: $targetOU" -ForegroundColor Yellow
        $skippedCount++
    }
}

Write-Host "`n   Summary: $linkedCount new links, $skippedCount already existed" -ForegroundColor Cyan

# Step 6: Create WMI Filter (optional - for Windows 10/11 only)
Write-Host "`n[6/6] Creating WMI filter..." -ForegroundColor Yellow

$wmiFilterName = "Windows 10 and 11 Workstations"
$wmiQuery = 'SELECT * FROM Win32_OperatingSystem WHERE Version LIKE "10.%" AND ProductType = "1"'

Write-Host @"
   
   [NOTE] OPTIONAL: Create WMI Filter in GPMC
   
   Filter Name: $wmiFilterName
   Query: $wmiQuery
   
   This filters the GPO to only apply to Windows 10/11 workstations.

"@ -ForegroundColor Yellow

# Summary
Write-Host "`n============================================" -ForegroundColor Cyan
Write-Host "DEPLOYMENT COMPLETE" -ForegroundColor Green
Write-Host "============================================" -ForegroundColor Cyan
Write-Host @"

Summary:
- GPO Name: $GPOName
- Target OU: $OUPath
- Collection Share: $CollectionSharePath
- Script Location: $sysvolScriptPath
- Schedule: $Schedule at $ScheduleTime

Next Steps:
1. Create the collection share with proper permissions:
   - Share: $CollectionSharePath
   - Permissions: Domain Computers (Write), Domain Admins (Full)

2. Complete the scheduled task configuration in GPMC (see instructions above)

3. Run 'gpupdate /force' on a test machine to verify deployment

4. Monitor collection results in: $CollectionSharePath

5. Run aggregation script to generate reports:
   .\Aggregate-SecureBootData.ps1 -InputPath "$CollectionSharePath"

"@ -ForegroundColor White

# SIG # Begin signature block
# MIIpzwYJKoZIhvcNAQcCoIIpwDCCKbwCAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCDkaOlBD0VVm0R/
# hcG0gPPU0PF8QwchqAtFlhqhktt7BaCCDdYwgga9MIIEpaADAgECAhMzAAAAHEif
# gd+hsLd3AAAAAAAcMA0GCSqGSIb3DQEBDAUAMIGIMQswCQYDVQQGEwJVUzETMBEG
# A1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWlj
# cm9zb2Z0IENvcnBvcmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUm9vdCBDZXJ0
# aWZpY2F0ZSBBdXRob3JpdHkgMjAxMDAeFw0yNDA4MDgyMTM2MjNaFw0zNTA2MjMy
# MjA0MDFaMF8xCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9y
# YXRpb24xMDAuBgNVBAMTJ01pY3Jvc29mdCBXaW5kb3dzIENvZGUgU2lnbmluZyBQ
# Q0EgMjAyNDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJp9a30nwXYq
# Lq7j1TT/zCtt7vxU+CCj+7BkifS/B2gXKGU7OV9SXRJGP1yFs5p6jpsYi4cYzF56
# AV0AEmmEjV8wT2lvPU5BhN3wV30HqYPIYEj5P3WXf0kXD9fvjUf1GAtXEriJ8w7A
# LNaVEm9Rs4ePA0ZsYHaCbU5kBUJQDXv76hafOcQgdFCA3I3zYtfzX2vOwx87uDOa
# CuyKORZih9c3zTf+TLC5QYLyhVMBnDXEHDOrvaw92DSyIqpdgRWpufzqDFy1egVj
# koXZhb+9pZ9heUzNXTXhOoXzexh6YzAL4flBWm+Bc1hQyESenEvBJznV+25u3h77
# jjgMUY44+WXQ4u9qddDe/U5SeAaKRvvibmi4z7QRpLvZsla0CPiOUGz00Do5sfkC
# 0EwlsSzfM3+8A9rsyFVOgWDVPzt98OJP2EoaEOq8GE9GCoN2i7/4C2FCwff1BSCT
# JWZO1Wcr2MteJE6UxGV+ihA8nN51YPKD2dYGoewrXvRzC/1HoUeSvlZf0mf9GHEt
# vvkbJVRRo6PBf0md5t87Vb1mM/fIp1eypyaxmXkgpcBwuylsOq2kSVOJ5wBPoaEs
# sJkeMcKnEuuu++UKdDHlS0DtsYjN0QnOucvTdSsdvhzKOSjJF3XVqr9f2C945LXT
# 5rxKIHUIEDBcNYU6BKDDH6rfpKOOCSilAgMBAAGjggFGMIIBQjAOBgNVHQ8BAf8E
# BAMCAYYwEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYEFB6C3w7XjLPXAjSDDtqr
# rWW5r7jsMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMA8GA1UdEwEB/wQFMAMB
# Af8wHwYDVR0jBBgwFoAU1fZWy4/oolxiaNE9lJBb186aGMQwVgYDVR0fBE8wTTBL
# oEmgR4ZFaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwvcHJvZHVjdHMv
# TWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMuY3JsMFoGCCsGAQUFBwEBBE4wTDBKBggr
# BgEFBQcwAoY+aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0cy9NaWNS
# b29DZXJBdXRfMjAxMC0wNi0yMy5jcnQwDQYJKoZIhvcNAQEMBQADggIBAENf+N8/
# u+mUjDtc9btoA52RBc0XVDSBMQBMqxu56hXHBwuctUWs1XBqDDMIFCHu9c6Y/UF+
# TN8EIgjnujApKYmHP4f4EM3ARSmlzrpF5ozOJx0BA5FUv1jmpdf/2ZbqpvCxlxv/
# G1R4KjrSmmqPHzs6igw3b7RTbj7BxIS8fOIkwYWQhB2fLjlg+3HSrDGPFIhpIJWV
# amMIR7a72OGonjdf45rspwqIHuynZU4avy9ruB/Rhhbwm+fMb8BMecIaTmkohx/E
# ZZ5GNWcN6oTYW3G2BM3B3YznWkl9t4shP60fMue+2ksdHGWSE8EVTdSmGUdj0jrU
# c46lGVFJISF3/MxcxnlNeP1Khyr+ZzT4Ets/I7mufpaLnLalzMR2zIuhGOAWWswe
# sbjtFzkVUFgDR2SW903I0XKlbPEA6q8epHGJ9roxh85nsEKcBNUw4Scp68KCqSpF
# BaKiyV1skd+l8U50WNePMb9Bzz0OfASal8v5sQG+DW01kN+I+RKUIbM5I50wJjiH
# ymQFNDsbobFx9I95mCEEPU7fUZ3VT/HOUVbkmX7ltIC/eQAu5GO8fu+ceETMybvb
# oxUM4dYNC+PzooUxfmC0DuKRwB21bX9+acuIBkxIm4Ed3O19w1VLoA7UNOUuJ7z6
# NQ2W/+q7cnfOPl2QVL4qlgCblUT2vmQpllV3MIIHETCCBPmgAwIBAgITMwAAASPV
# jwJDBgPuLgAAAAABIzANBgkqhkiG9w0BAQwFADBfMQswCQYDVQQGEwJVUzEeMBwG
# A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTAwLgYDVQQDEydNaWNyb3NvZnQg
# V2luZG93cyBDb2RlIFNpZ25pbmcgUENBIDIwMjQwHhcNMjYwMzA1MTk1ODI2WhcN
# MjcwMzAzMTk1ODI2WjB0MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv
# bjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0
# aW9uMR4wHAYDVQQDExVNaWNyb3NvZnQgQ29ycG9yYXRpb24wggIiMA0GCSqGSIb3
# DQEBAQUAA4ICDwAwggIKAoICAQDRofDhyqNp9ilU2DM6Ctcq1F931sSAyfMEmR3c
# E/fpq4C15SQYoNRfyQ1YXmcjtfWjaAB4Dsqr+po0Q6IXSERF31/leCtiRtPrS8/1
# T9FA9AeOUTaFYyqHRz1M4MVeTwu89ZHo9xR26SVQmOHbFWLinZzlBV9WUJxfz0TN
# MdWwAXzxnY9nln8Fn3Y0BnCXU8V3wjeCCAxoqM0v2gPG25eNn665gv7Zt3zh3vQY
# hDkb48hXJPi4DvCrpBVwCd0Iv2Sgt4qftn5STyqhdu5WWqva+pk+Sa71Db9OAy6b
# L640bGmzlUek1LAP97Ey8exl0c9azmLEQB97q4JRvhCSeejBM96a8Y6ccrrfhg/h
# ZJEOka1eIDJxCuKdZaWCec0v+V7oI3RStJu1BEcF9d4FQaDSaWDAbDxqXUm1fHUJ
# 9Xqky1yftpTfKFw3/gqsyXV44PE7EVHwwTCAGE5Z+skXRt4HEHuIhcOGxIFbH3nA
# l5KvFxopRs2zExvh2WheW8Pu79sr3baamlQA2v4k9FqJl4k1RfwO5e0/9CKyDZ6c
# ck/lV8zHM7PJtNtQUHc1FoyZ78GSlX6UFiJxDWzUzPbIHMcV4PSBV8/O7bs5h/bx
# r3B4PxjIpWUztZhzXBhU9vhUjQgOX5ZLV7bmSJ+IrxtaN+5w2Nsewt9N+mfUUFyK
# Av38uQIDAQABo4IBrzCCAaswDgYDVR0PAQH/BAQDAgeAMB8GA1UdJQQYMBYGCisG
# AQQBgjc9BgEGCCsGAQUFBwMDMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFNlj7H2k
# ZtpiMmz55wigojWkWZZSMEUGA1UdEQQ+MDykOjA4MR4wHAYDVQQLExVNaWNyb3Nv
# ZnQgQ29ycG9yYXRpb24xFjAUBgNVBAUTDTIzMDg2NSs1MDY5NTYwHwYDVR0jBBgw
# FoAUHoLfDteMs9cCNIMO2qutZbmvuOwwagYDVR0fBGMwYTBfoF2gW4ZZaHR0cDov
# L3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jcmwvTWljcm9zb2Z0JTIwV2luZG93
# cyUyMENvZGUlMjBTaWduaW5nJTIwUENBJTIwMjAyNC5jcmwwdwYIKwYBBQUHAQEE
# azBpMGcGCCsGAQUFBzAChltodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3Bz
# L2NlcnRzL01pY3Jvc29mdCUyMFdpbmRvd3MlMjBDb2RlJTIwU2lnbmluZyUyMFBD
# QSUyMDIwMjQuY3J0MA0GCSqGSIb3DQEBDAUAA4ICAQAu6aVarz1Rb5/9eAD9oHOw
# QS4jDknbBYnDwLcgMy/h995knuPL6/5K0XSUICUrjU3/bL56UD1tVwXsRehrHMkR
# kgOMQk+7eH+Xvp6cyyTxwgIM7xy5YSf3VmJD3GI87lkGUqPFFOqGWjzZc3e/UQU7
# VbN4Elh4zJeKOdokXNuE3a5U1lAr1hnD6WpfIHO2nzGUHVSXDLMktWKMO89pMgLh
# 6BXHdx1cAth+ugl86sdXC+VxCQJ28a2JvNq5RQcEBEuqSISe3/YRWYRTSLqhn8ea
# v4lK4n+3fnAy2bmz76Z7UJ92X5KgTaHD+r8cvXmssFH3UbOj6EtE+c4SPNaFdIUW
# GJyZBhLbThhlh1QlbTg0X47GhI89qZ/lxuYeEDYbPGaDry/KpMoUQxU+l49iQ6zd
# kWSPGczB4ZDVRSrkDqz2K70tIvFaz8YfMhzTy5hhMNGvonCcguaFTgUsxr+OrvGC
# WadOV/pZ3BcRafKvBDX+ney3HFcUByI3VPzIU7saoUbcujqTVA6GeNSybo8AI+71
# 9omBObyf2lriZb9a2/oVe5SiKhH/BDQVn+14Q26UxrUA/8zVOlzJS5eJQYhkHM9h
# /Y2Nnmr2xLtFN0vW/aad7i104dVRaTLMBzbKIlCBOruBjM87frQc2Ncfb5Kme4u9
# o6GQVZf3kVy+p8uv8YgnQTGCG08wghtLAgEBMHYwXzELMAkGA1UEBhMCVVMxHjAc
# BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEwMC4GA1UEAxMnTWljcm9zb2Z0
# IFdpbmRvd3MgQ29kZSBTaWduaW5nIFBDQSAyMDI0AhMzAAABI9WPAkMGA+4uAAAA
# AAEjMA0GCWCGSAFlAwQCAQUAoIH6MBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEE
# MC8GCSqGSIb3DQEJBDEiBCB5Z/DqeZfULmSNLNDIQleqZPMALJBeLpWxBgPRUW2W
# GTBQBgorBgEEAYI3CgMcMUIMQDRBNjhBQkREQjA1RkVBRThCRDgyMkM1NjlBMUMw
# OTFGMzI2Q0JBMUQ2MjNFODYxMEI3RUZCRDdDODc0QUM3MTkwWgYKKwYBBAGCNwIB
# DDFMMEqgJIAiAE0AaQBjAHIAbwBzAG8AZgB0ACAAVwBpAG4AZABvAHcAc6EigCBo
# dHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vd2luZG93czANBgkqhkiG9w0BAQEFAASC
# AgBu15TOpdv4a2bnoVmNYNLPn3kBUF7ubu9CYaXzsWO0NwQmPxpA+wQO4nQ4s2Cu
# bb813iMDxnIINnBVnEdLwPiar6WlUjYjX6XeAXSuUKvOamn2e0ySYvmDuchigRPn
# dx4avEi5iGzfKA5a8I3wjWcq9wS5pcX9r7UyDLUBg2CPIH/Fal7Er0Fa0QrAKFTl
# XEKcVtWOGaddlUwI7qfaKgx7ltO3DtEqtv31MCVBR+RmElxnicykaaicw+IcuoH3
# 736kXye1QNBW8+ThkzpuahX3uYME37bzIiKdWxuz1+8YYPAxUjIroIglV4aV8hZx
# powIeMn2eo8PGoqJZFKB2X+TpBI+k7kt5fBQuRiAOxE1BqDBcZ+g7A6RHGq98wrU
# ocoCNyC8Bb9O3dmD35iviirQzAyy/V7UHLYH18Vr32PPc3PGnD23ozhQc+gR3mKa
# hl/5+qdR5oJkFGC46zvvi8cQQ0Z3G15M1F+1nkxd7doAXIcU+fKdvvSeCatmoYhe
# wUHJEJQ0Cq1n/WeluvXPSNakJRt2LX/xTchBJUq/0YthAa+sSi7t3BaBb8eydygz
# YPzECj0W0kgQMztNcn0oGwRBRQtWeyWK2l+blgEUOhfFG4jtGf/u/AQaDQXDWG2d
# 8GA7MBGWhJqyShPlH9vxFJfmNKLD2gNqVn8NG8YoduM7AKGCF60wghepBgorBgEE
# AYI3AwMBMYIXmTCCF5UGCSqGSIb3DQEHAqCCF4YwgheCAgEDMQ8wDQYJYIZIAWUD
# BAIBBQAwggFaBgsqhkiG9w0BCRABBKCCAUkEggFFMIIBQQIBAQYKKwYBBAGEWQoD
# ATAxMA0GCWCGSAFlAwQCAQUABCCpm7T6Z3/eHlsNbSEYwFRjdudVBz3jrVtyPACl
# cdU86AIGahCU1+WqGBMyMDI2MDYwNjA4MzU1NC43NjNaMASAAgH0oIHZpIHWMIHT
# MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVk
# bW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMS0wKwYDVQQLEyRN
# aWNyb3NvZnQgSXJlbGFuZCBPcGVyYXRpb25zIExpbWl0ZWQxJzAlBgNVBAsTHm5T
# aGllbGQgVFNTIEVTTjoyRDFBLTA1RTAtRDk0NzElMCMGA1UEAxMcTWljcm9zb2Z0
# IFRpbWUtU3RhbXAgU2VydmljZaCCEfswggcoMIIFEKADAgECAhMzAAACEtEIBjzK
# GE+qAAEAAAISMA0GCSqGSIb3DQEBCwUAMHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQI
# EwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3Nv
# ZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBD
# QSAyMDEwMB4XDTI1MDgxNDE4NDgxNVoXDTI2MTExMzE4NDgxNVowgdMxCzAJBgNV
# BAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4w
# HAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xLTArBgNVBAsTJE1pY3Jvc29m
# dCBJcmVsYW5kIE9wZXJhdGlvbnMgTGltaXRlZDEnMCUGA1UECxMeblNoaWVsZCBU
# U1MgRVNOOjJEMUEtMDVFMC1EOTQ3MSUwIwYDVQQDExxNaWNyb3NvZnQgVGltZS1T
# dGFtcCBTZXJ2aWNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAr0zT
# oDkpWQtsZekS0cV0quDdKSTGkovvBaZH0OAIEi0O3CcO77JiX8c4Epq9uibHVZZ1
# W/LoufE172vkRXO+QYNtWWorECJ2AcZQ10bpAltkhZNiXlVJ8L3QzhKgrXrmMkm2
# J+/g81U23JPcO4wXHEftonT3wpd//936rjmwxMm7NkbsygbJf+4AVBMNr4aMPQhB
# d76od0KMB6WrvyEGOOU0893OFufS5EDey4n44WgaxJE0Vnv3/OOvuOw5Kp1KPqjj
# YJ+L9ywLuBMtcDfLpNQO/h1eFEoMrbiEM67TOfNlXfxbDz4MlsYvLioxgd2Xzey1
# QxrV1+i+JyVDJMiSe9gKOuzpiQQFE19DUPgsidyjLTzXEhSVLBlRor0eCVf7gC6R
# fk8NY3rO2sggOL79vU5FuDKTh/sIOtcUHeHC42jBGB+tfdKC1KOBR+UlN9aOzg8m
# pUNI2FgqQvirVP9ppbeMUfvp2wA9voyTiRWvDgzCxo8xlJ1nscYTHIQrmkF9j/Ca
# 0IDmt8fvOn64nnlJOGUYZYHMC1l0xtgkYTE1ESUqqkawKk7iqbxdnLyycS+dR+za
# xPudMDLrQFz8lgfy9obk0D8HC2dzhWpYNn5hdkoPEzgCqQUOp8v3Qj/sd4anyupe
# 5KoCkjABOP3yhSQ4W9Z+DrJnhM/rbsXC7oTv26cCAwEAAaOCAUkwggFFMB0GA1Ud
# DgQWBBRSBblSxb5cYKYOwvd/VfoXOfu33jAfBgNVHSMEGDAWgBSfpxVdAF5iXYP0
# 5dJlpxtTNRnpcjBfBgNVHR8EWDBWMFSgUqBQhk5odHRwOi8vd3d3Lm1pY3Jvc29m
# dC5jb20vcGtpb3BzL2NybC9NaWNyb3NvZnQlMjBUaW1lLVN0YW1wJTIwUENBJTIw
# MjAxMCgxKS5jcmwwbAYIKwYBBQUHAQEEYDBeMFwGCCsGAQUFBzAChlBodHRwOi8v
# d3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRzL01pY3Jvc29mdCUyMFRpbWUt
# U3RhbXAlMjBQQ0ElMjAyMDEwKDEpLmNydDAMBgNVHRMBAf8EAjAAMBYGA1UdJQEB
# /wQMMAoGCCsGAQUFBwMIMA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQsFAAOC
# AgEAXnSAkmX79Rc7lxS1wOozXJ7V0ou5DntVcOJplIkDjvEN8BIQph4U+gSOLZuV
# ReP/z9YdUiUkcPwL1PM245/kEX1EegpxNc8HDA6hKCHg0ALNEcuxnGOlgKLokXfU
# er1D5hiW8PABM9R+neiteTgPaaRlJFvGTYvotc0uqGiES5hMQhL8RNFhpS9RcIWH
# tnQGEnrdOUvCAhs4FeViawcmLTKv+1870c/MeTHi0QDdeR+7/Wg4qhkJ2k1iEHJd
# mYf8rIV0NRBZcdRTTdHee35SXP5neNCfAkjDIuZycRud6jzPLCNLiNYzGXBswzJy
# gj4EeSORT7wMvaFuKeRAXoXC3wwYvgIsI1zn3DGY625Y+yZSi8UNSNHuri36Zv9a
# +Q4vJwDpYK36S0TB2pf7xLiiH32nk7YK73Rg98W6fZ2INuzYzZ7Ghgvfffkj4EUX
# g1E0EffY1pEqkbpDTP7h/DBqtzoPXsyw2MUh+7yvWcq2BGZSuca6CY6X4ioMuc5P
# WpsmvOOli7ARNA7Ab8kKdCc2gNDLacglsweZEc9/VQB6hls/b6Kk32nkwuHExKla
# eoSVrKB5U9xlp1+c8J/7GJj4Rw7AiQ8tcp+WmfyD8KxX2QlKbDi4SUjnglv4617R
# 8+a/cDWJyaMt8279Wn7f2yMedN7kfGIQ5SZj66RdhdlZOq8wggdxMIIFWaADAgEC
# AhMzAAAAFcXna54Cm0mZAAAAAAAVMA0GCSqGSIb3DQEBCwUAMIGIMQswCQYDVQQG
# EwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwG
# A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQg
# Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgMjAxMDAeFw0yMTA5MzAxODIyMjVa
# Fw0zMDA5MzAxODMyMjVaMHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5n
# dG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9y
# YXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwMIIC
# IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA5OGmTOe0ciELeaLL1yR5vQ7V
# gtP97pwHB9KpbE51yMo1V/YBf2xK4OK9uT4XYDP/XE/HZveVU3Fa4n5KWv64NmeF
# RiMMtY0Tz3cywBAY6GB9alKDRLemjkZrBxTzxXb1hlDcwUTIcVxRMTegCjhuje3X
# D9gmU3w5YQJ6xKr9cmmvHaus9ja+NSZk2pg7uhp7M62AW36MEBydUv626GIl3GoP
# z130/o5Tz9bshVZN7928jaTjkY+yOSxRnOlwaQ3KNi1wjjHINSi947SHJMPgyY9+
# tVSP3PoFVZhtaDuaRr3tpK56KTesy+uDRedGbsoy1cCGMFxPLOJiss254o2I5Jas
# AUq7vnGpF1tnYN74kpEeHT39IM9zfUGaRnXNxF803RKJ1v2lIH1+/NmeRd+2ci/b
# fV+AutuqfjbsNkz2K26oElHovwUDo9Fzpk03dJQcNIIP8BDyt0cY7afomXw/TNuv
# XsLz1dhzPUNOwTM5TI4CvEJoLhDqhFFG4tG9ahhaYQFzymeiXtcodgLiMxhy16cg
# 8ML6EgrXY28MyTZki1ugpoMhXV8wdJGUlNi5UPkLiWHzNgY1GIRH29wb0f2y1BzF
# a/ZcUlFdEtsluq9QBXpsxREdcu+N+VLEhReTwDwV2xo3xwgVGD94q0W29R6HXtqP
# nhZyacaue7e3PmriLq0CAwEAAaOCAd0wggHZMBIGCSsGAQQBgjcVAQQFAgMBAAEw
# IwYJKwYBBAGCNxUCBBYEFCqnUv5kxJq+gpE8RjUpzxD/LwTuMB0GA1UdDgQWBBSf
# pxVdAF5iXYP05dJlpxtTNRnpcjBcBgNVHSAEVTBTMFEGDCsGAQQBgjdMg30BATBB
# MD8GCCsGAQUFBwIBFjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL0Rv
# Y3MvUmVwb3NpdG9yeS5odG0wEwYDVR0lBAwwCgYIKwYBBQUHAwgwGQYJKwYBBAGC
# NxQCBAweCgBTAHUAYgBDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8w
# HwYDVR0jBBgwFoAU1fZWy4/oolxiaNE9lJBb186aGMQwVgYDVR0fBE8wTTBLoEmg
# R4ZFaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwvcHJvZHVjdHMvTWlj
# Um9vQ2VyQXV0XzIwMTAtMDYtMjMuY3JsMFoGCCsGAQUFBwEBBE4wTDBKBggrBgEF
# BQcwAoY+aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0cy9NaWNSb29D
# ZXJBdXRfMjAxMC0wNi0yMy5jcnQwDQYJKoZIhvcNAQELBQADggIBAJ1VffwqreEs
# H2cBMSRb4Z5yS/ypb+pcFLY+TkdkeLEGk5c9MTO1OdfCcTY/2mRsfNB1OW27DzHk
# wo/7bNGhlBgi7ulmZzpTTd2YurYeeNg2LpypglYAA7AFvonoaeC6Ce5732pvvinL
# btg/SHUB2RjebYIM9W0jVOR4U3UkV7ndn/OOPcbzaN9l9qRWqveVtihVJ9AkvUCg
# vxm2EhIRXT0n4ECWOKz3+SmJw7wXsFSFQrP8DJ6LGYnn8AtqgcKBGUIZUnWKNsId
# w2FzLixre24/LAl4FOmRsqlb30mjdAy87JGA0j3mSj5mO0+7hvoyGtmW9I/2kQH2
# zsZ0/fZMcm8Qq3UwxTSwethQ/gpY3UA8x1RtnWN0SCyxTkctwRQEcb9k+SS+c23K
# jgm9swFXSVRk2XPXfx5bRAGOWhmRaw2fpCjcZxkoJLo4S5pu+yFUa2pFEUep8beu
# yOiJXk+d0tBMdrVXVAmxaQFEfnyhYWxz/gq77EFmPWn9y8FBSX5+k77L+DvktxW/
# tM4+pTFRhLy/AsGConsXHRWJjXD+57XQKBqJC4822rpM+Zv/Cuk0+CQ1ZyvgDbjm
# jJnW4SLq8CdCPSWU5nR0W2rRnj7tfqAxM328y+l7vzhwRNGQ8cirOoo6CGJ/2XBj
# U02N7oJtpQUQwXEGahC0HVUzWLOhcGbyoYIDVjCCAj4CAQEwggEBoYHZpIHWMIHT
# MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVk
# bW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMS0wKwYDVQQLEyRN
# aWNyb3NvZnQgSXJlbGFuZCBPcGVyYXRpb25zIExpbWl0ZWQxJzAlBgNVBAsTHm5T
# aGllbGQgVFNTIEVTTjoyRDFBLTA1RTAtRDk0NzElMCMGA1UEAxMcTWljcm9zb2Z0
# IFRpbWUtU3RhbXAgU2VydmljZaIjCgEBMAcGBSsOAwIaAxUA5VHBr4h00EN7jUdQ
# 33SE+qbk/8CggYMwgYCkfjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGlu
# Z3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv
# cmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDAN
# BgkqhkiG9w0BAQsFAAIFAO3OL7YwIhgPMjAyNjA2MDYwNTMzNDJaGA8yMDI2MDYw
# NzA1MzM0MlowdDA6BgorBgEEAYRZCgQBMSwwKjAKAgUA7c4vtgIBADAHAgEAAgIf
# VTAHAgEAAgITRDAKAgUA7c+BNgIBADA2BgorBgEEAYRZCgQCMSgwJjAMBgorBgEE
# AYRZCgMCoAowCAIBAAIDB6EgoQowCAIBAAIDAYagMA0GCSqGSIb3DQEBCwUAA4IB
# AQBf3P8+isRYtXhtzhATvtUKFocdCu7OzJuA66VrxIZ5s1sNYvxjFn+65x2ZBxiz
# KHK5HrdHSkzPkC2aIqh3Mka+XF+kHqMhsvNlhkX4FocflzPYG1RGyI4ASfS6gXRY
# E0L2SReoWsZdNZfAzF5vjRdo4NuGzpcPJpmkQPlcujfZoEmPURE5oTp2UCeFGcYw
# eJNxdm/VRDkOX9zHVESeZlZ3+VpPJli/QR+w6fGjg2RhCK/D0ob0JF7LUFNlyKFS
# uG/iPIKYMs6/5U2HqRo3nyXxH6ahm6g6T4sWFTHJUeGp20LSxLEowYa6EIXKJjrN
# 1Vq2XRScBbAwwE922weuF5+bMYIEDTCCBAkCAQEwgZMwfDELMAkGA1UEBhMCVVMx
# EzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoT
# FU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUt
# U3RhbXAgUENBIDIwMTACEzMAAAIS0QgGPMoYT6oAAQAAAhIwDQYJYIZIAWUDBAIB
# BQCgggFKMBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAvBgkqhkiG9w0BCQQx
# IgQg1MFpCjh3q89oUWTJfko0jfQ9hDtFf0TiiAPRbCE6JbowgfoGCyqGSIb3DQEJ
# EAIvMYHqMIHnMIHkMIG9BCBz+X5GvO7WngknH4BZeYU+BzBL1Jy5oJ8wVlTNIxfY
# gzCBmDCBgKR+MHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAw
# DgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24x
# JjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwAhMzAAACEtEI
# BjzKGE+qAAEAAAISMCIEINEKYYL/TA4xZY1+nup8qQNXXV7VMfD7tONzrNgNJfwD
# MA0GCSqGSIb3DQEBCwUABIICAKNwmG4J86MOzpvAOYSZ91QL/cQtqIX27oMbIles
# 48i1XmC4vbaUfeBzDEAb7Fnqkh65jvFtVC7jJdFDZdemXAOHyml8Eloqy2S6f+jx
# 8c33atYjqo333Pp7JPXx7bs0vC+MFK3kSkuLRrxpd8PSqI+Dg6kSJSymGqfa2Owf
# nPkRw5ti1eYK/9CqGnU7c5B/BftC9KmmNmdYpxcOoyM0mQJ/F+b2iA9qiiJHkqg7
# GJz8+v9mhYTNQAWnsULzawAFjWsl9jJCO+1bf5oHjnMJrQJ9kdgqbVkKo5k3vDwb
# 5IcQ5p7j6qekVLH2aA1I7fG+8KpEU+jvfI0agE9wpShtbZpnLwaSXzegU1gbLYmn
# ZJ4zgFhx9nUOCODA3+BBr6cLf6TjNv1sxY/T8D56bDX4K5th3P+7aBa/exLaKU91
# 1GcP75eNmGdPGGYe6L1x8NvOImCMu4D5ymKrEGX+wmr8bFVv1cyJbW46kpYPhFQ2
# BNaC2bS+OrVPwgoY9OB9vu6DMJloM/IUMSklaXi1zwyJbsMe8XrNlq3Uq0TV/Vlf
# k5MJEUMUTFABnDz1C2om3sySn8bMOb5eIIhWW0CqJJ+P3joqW9a+YVIYgA4tOlSt
# YXufmxWCjsOiEeTIvzhg5k8L2PEYQJ4FWsR6r5sfvll03CTsh6H8fuKO7Ckni2cS
# CXrK
# SIG # End signature block

Youez - 2016 - github.com/yon3zu
LinuXploit