public/Find-VPASTargetValue.ps1

<#
.Synopsis
   COMPLETE CYBERARK QUERY
   CREATED BY: Vadim Melamed, EMAIL: vpasmodule@gmail.com
.DESCRIPTION
   USE THIS FUNCTION TO SEARCH FOR A TARGET VALUE IN ALL ASSETS LIKE SAFES, ACCOUNTS, PLATFORMS, MEMBERS, ETC.
.LINK
   https://vpasmodule.com/commands/Find-VPASTargetValue
.NOTES
   SelfHosted: TRUE
   PrivCloudStandard: TRUE
   SharedServices: TRUE
.PARAMETER token
   HashTable of data containing various pieces of login information (PVWA, LoginToken, HeaderType, etc).
   If -token is not passed, function will use last known hashtable generated by New-VPASToken
.PARAMETER SearchQuery
   Search string to find target resource via username, address, safe, platform, etc.
.PARAMETER SkipSafes
   Flag to ignore safes, getting safe data will be skipped
.PARAMETER SkipAccounts
   Flag to ignore accounts, getting account data will be skipped
.PARAMETER SkipPlatforms
   Flag to ignore platforms, getting platform data will be skipped
.PARAMETER SkipEPVUsers
   Flag to ignore EPVUsers, getting EPVUser data will be skipped
.PARAMETER SkipEPVGroups
   Flag to ignore EPVGroups, getting EPVGroup data will be skipped
.PARAMETER SkipApplications
   Flag to ignore applications, getting applicationID data will be skipped
.PARAMETER SkipRoles
   Flag to ignore roles, getting role data will be skipped
.PARAMETER SkipIdentities
   Flag to ignore identities, getting identity data will be skipped
.PARAMETER InputParameters
   HashTable of values containing the parameters required to make the API call
.PARAMETER ExportToCSV
   Output results to a CSV file found in AppData\Local\VPASModuleOutputs directory
.PARAMETER CSVDirectory
   Output directory where the exported CSV file will be saved to
   Default value: C:\Users\{CurrentUser}\AppData\Local\VPASModuleOutputs\ExportedCSVs
.EXAMPLE
   $Output = Find-VPASTargetValue -searchQuery {SEARCHQUERY VALUE}
.EXAMPLE
   $InputParameters = @{
        searchQuery = $true|$false
        SkipSafes = $true|$false
        SkipAccounts = $true|$false
        SkipPlatforms = $true|$false
        SkipEPVUsers = $true|$false
        SkipEPVGroups = $true|$false
        SkipApplications = $true|$false
        SkipRoles = $true|$false
        SkipIdentities = $true|$false
        ExportToCSV = $true|$false
        CSVDirectory = "C:\Temp"
   }
   $Output = Find-VPASTargetValue -InputParameters $InputParameters
.OUTPUTS
   If successful:
   {
    ...
        (
            ExtraInfo @{safeNumber=124; location=\; creator=; olacEnabled=False; numberOfVersionsRetention=; numberOfDaysRetention=7;...
            Condition vadim matched on safe creator: vadim@vman.com
            Asset Safe
            Value testsafe001
        ),
    ...
   }
   ---
   $false if failed
#>

function Find-VPASTargetValue{
    [OutputType('System.Object','System.Collections.Hashtable',[bool])]
    [CmdletBinding(DefaultParameterSetName='Set1')]
    Param(
        [Parameter(Mandatory=$true,ParameterSetName='Set1',ValueFromPipelineByPropertyName=$true,HelpMessage="Enter wildcard search to query for Safes (for example: Win_)")]
        [String]$searchQuery,

        [Parameter(Mandatory=$false,ParameterSetName='Set1',ValueFromPipelineByPropertyName=$true)]
        [Switch]$SkipSafes,

        [Parameter(Mandatory=$false,ParameterSetName='Set1',ValueFromPipelineByPropertyName=$true)]
        [Switch]$SkipAccounts,

        [Parameter(Mandatory=$false,ParameterSetName='Set1',ValueFromPipelineByPropertyName=$true)]
        [Switch]$SkipPlatforms,

        [Parameter(Mandatory=$false,ParameterSetName='Set1',ValueFromPipelineByPropertyName=$true)]
        [Switch]$SkipEPVUsers,

        [Parameter(Mandatory=$false,ParameterSetName='Set1',ValueFromPipelineByPropertyName=$true)]
        [Switch]$SkipEPVGroups,

        [Parameter(Mandatory=$false,ParameterSetName='Set1',ValueFromPipelineByPropertyName=$true)]
        [Switch]$SkipApplications,

        [Parameter(Mandatory=$false,ParameterSetName='Set1',ValueFromPipelineByPropertyName=$true)]
        [Switch]$SkipRoles,

        [Parameter(Mandatory=$false,ParameterSetName='Set1',ValueFromPipelineByPropertyName=$true)]
        [Switch]$SkipIdentities,

        [Parameter(Mandatory=$false,ParameterSetName='Set1',ValueFromPipelineByPropertyName=$true)]
        [Switch]$ExportToCSV,

        [Parameter(Mandatory=$false,ParameterSetName='Set1',ValueFromPipelineByPropertyName=$true)]
        [String]$CSVDirectory,

        [Parameter(Mandatory=$true,ParameterSetName='InputParameters',ValueFromPipelineByPropertyName=$true,HelpMessage="Hashtable of parameters required to make API call, refer to get-help -examples for valid inputs")]
        [hashtable]$InputParameters,

        [Parameter(Mandatory=$false,ValueFromPipelineByPropertyName=$true)]
        [hashtable]$token
    )

    Begin{
        $tokenval,$sessionval,$PVWA,$Header,$ISPSS,$IdentityURL,$EnableTextRecorder,$AuditTimeStamp,$NoSSL,$VaultVersion,$HideWarnings,$AuthenticatedAs,$SubDomain,$EnableTroubleshooting = Get-VPASSession -token $token
        $CommandName = $MyInvocation.MyCommand.Name
        $log = Write-VPASTextRecorder -inputval $CommandName -token $token -LogType COMMAND
    }
    Process{
        try{
            if($PSCmdlet.ParameterSetName -eq "InputParameters"){
                $KeyHash = @{
                    set1 = @{
                        AcceptableKeys = @("searchQuery","SkipSafes","SkipAccounts","SkipPlatforms","SkipEPVUsers","SkipEPVGroups","SkipApplications","SkipRoles","SkipIdentities","ExportToCSV","CSVDirectory")
                        MandatoryKeys = @("searchQuery")
                    }
                }
                $CheckSet = Test-VPASHashtableKeysHelper -InputHash $InputParameters -KeyHash $KeyHash

                if(!$CheckSet){
                    $log = Write-VPASTextRecorder -inputval "FAILED TO FIND TARGET PARAMETER SET" -token $token -LogType MISC
                    Write-Verbose "FAILED TO FIND TARGET PARAMETER SET"
                    Write-VPASOutput -str "FAILED TO FIND TARGET PARAMETER SET...VIEW EXAMPLES BELOW:" -type E
                    $examples = Write-VPASExampleHelper -CommandName $CommandName
                    return $false
                }
                else{
                    foreach($key in $InputParameters.Keys){
                        Set-Variable -Name $key -Value $InputParameters.$key
                    }
                }
            }
        }catch{
            $log = Write-VPASTextRecorder -inputval $_ -token $token -LogType ERROR
            $log = Write-VPASTextRecorder -inputval "REST API COMMAND RETURNED: FALSE" -token $token -LogType MISC
            Write-Verbose "FAILED TO RETRIEVE TARGET VALUES"
            Write-VPASOutput -str $_ -type E
            return $false
        }

        try{
            $outputmatrix = @()

            #SAFES
            if($SkipSafes){
                Write-VPASOutput -str "Step1) Pulling all safes and safe members...SKIPPING" -type M
            }
            else{
                Write-VPASOutput -str "Step1) Pulling all safes and safe members" -type DY
                write-verbose "PULLING ALL SAFES..."
                $AllSafes = Get-VPASAllSafes
                foreach($safe in $AllSafes.value){
                    $safename = $safe.safeName
                    $safecreator = $safe.creator.name
                    $safedescription = $safe.description

                    if($safename -match $searchQuery){
                        $outhash = @{
                            Asset = "Safe"
                            Value = $safename
                            Condition = "$searchQuery matched on safe name: $safename"
                            ExtraInfo = $safe
                        }
                        $outputmatrix += $outhash
                    }
                    if($safedescription -match $searchQuery){
                        $outhash = @{
                            Asset = "Safe"
                            Value = $safename
                            Condition = "$searchQuery matched on safe description: $safedescription"
                            ExtraInfo = $safe
                        }
                        $outputmatrix += $outhash
                    }
                    if($safecreator -match $searchQuery){
                        $outhash = @{
                            Asset = "Safe"
                            Value = $safename
                            Condition = "$searchQuery matched on safe creator: $safecreator"
                            ExtraInfo = $safe
                        }
                        $outputmatrix += $outhash
                    }

                    #SAFE MEMBERS
                    $AllSafeMembers = Get-VPASSafeMembers -safe $safename -IncludePredefinedMembers
                    foreach($mem in $AllSafeMembers.value){
                        $targetmember = $mem.memberName
                        if($targetmember -match $searchQuery){
                            $outhash = @{
                                Asset = "SafeMember"
                                Value = $safename
                                Condition = "$searchQuery matched on safe member: $targetmember on safe: $safename"
                                ExtraInfo = $safe
                            }
                            $outputmatrix += $outhash
                        }
                    }
                }
            }

            #ACCOUNTS
            if($SkipAccounts){
                Write-VPASOutput -str "Step2) Pulling all account objects and properties...SKIPPING" -type M
            }
            else{
                Write-VPASOutput -str "Step2) Pulling all account objects and properties" -type DY
                write-verbose "PULLING ALL ACCOUNTS..."
                $AllAccounts = Get-VPASAllAccounts
                foreach($acct in $AllAccounts.value){
                    $acctname = $acct.name
                    $acctaddress = $acct.address
                    $acctusername = $acct.userName
                    $acctAllProps = $acct.platformAccountProperties.psobject.Properties.name

                    if($acctname -match $searchQuery){
                        $outhash = @{
                            Asset = "Account"
                            Value = $acctname
                            Condition = "$searchQuery matched on account name: $acctname"
                            ExtraInfo = $acct
                        }
                        $outputmatrix += $outhash
                    }
                    if($acctaddress -match $searchQuery){
                        $outhash = @{
                            Asset = "Account"
                            Value = $acctname
                            Condition = "$searchQuery matched on account address: $acctaddress"
                            ExtraInfo = $acct
                        }
                        $outputmatrix += $outhash
                    }
                    if($acctusername -match $searchQuery){
                        $outhash = @{
                            Asset = "Account"
                            Value = $acctname
                            Condition = "$searchQuery matched on account username: $acctusername"
                            ExtraInfo = $acct
                        }
                        $outputmatrix += $outhash
                    }
                    foreach($prop in $acctAllProps){
                        if($prop -ne "Length"){
                            $propval = $acct.platformAccountProperties.$prop

                            if($propval -match $searchQuery){
                                $outhash = @{
                                    Asset = "Account"
                                    Value = $acctname
                                    Condition = "$searchQuery matched on account property: $prop"
                                    ExtraInfo = $acct
                                }
                                $outputmatrix += $outhash
                            }
                        }
                    }
                }
            }

            #PLATFORMS
            if($SkipPlatforms){
                Write-VPASOutput -str "Step3) Pulling all platform details...SKIPPING" -type M
            }
            else{
                Write-VPASOutput -str "Step3) Pulling all platform details" -type DY
                write-verbose "PULLING ALL PLATFORMS..."
                $AllPlatforms = Get-VPASAllPlatforms
                foreach($plat in $AllPlatforms.Platforms){
                    $platID = $plat.general.id
                    $platName = $plat.general.name
                    $platDescription = $plat.general.description
                    $platRequired = @()
                    $platOptional = @()

                    foreach($prop in $plat.properties.required){
                        $platRequired += $prop.name
                        $platRequired += $prop.displayName
                    }
                    foreach($prop in $plat.properties.optional){
                        $platOptional += $prop.name
                        $platOptional += $prop.displayName
                    }

                    $AllowedSafes = $plat.credentialsManagement.allowedSafes

                    if($platID -match $searchQuery){
                        $outhash = @{
                            Asset = "Platform"
                            Value = $platID
                            Condition = "$searchQuery matched on Platform ID: $platID"
                            ExtraInfo = $plat
                        }
                        $outputmatrix += $outhash
                    }
                    if($platName -match $searchQuery){
                        $outhash = @{
                            Asset = "Platform"
                            Value = $platID
                            Condition = "$searchQuery matched on Platform Name: $platName"
                            ExtraInfo = $plat
                        }
                        $outputmatrix += $outhash
                    }
                    if($platDescription -match $searchQuery){
                        $outhash = @{
                            Asset = "Platform"
                            Value = $platID
                            Condition = "$searchQuery matched on Platform Description: $platDescription"
                            ExtraInfo = $plat
                        }
                        $outputmatrix += $outhash
                    }
                    if($AllowedSafes -match $searchQuery){
                        $outhash = @{
                            Asset = "Platform"
                            Value = $platID
                            Condition = "$searchQuery matched on Platform Allowed Safes: $AllowedSafes"
                            ExtraInfo = $plat
                        }
                        $outputmatrix += $outhash
                    }
                    foreach($prop in $platRequired){
                        if($prop -match $searchQuery){
                            $outhash = @{
                                Asset = "Platform"
                                Value = $platID
                                Condition = "$searchQuery matched on Platform Required Property: $prop"
                                ExtraInfo = $plat
                            }
                            $outputmatrix += $outhash
                        }
                    }
                    foreach($prop in $platOptional){
                        if($prop -match $searchQuery){
                            $outhash = @{
                                Asset = "Platform"
                                Value = $platID
                                Condition = "$searchQuery matched on Platform Optional Property: $prop"
                                ExtraInfo = $plat
                            }
                            $outputmatrix += $outhash
                        }
                    }
                }
            }

            #EPVUSERS
            if($SkipEPVUsers){
                Write-VPASOutput -str "Step4) Pulling all epv users...SKIPPING" -type M
            }
            else{
                Write-VPASOutput -str "Step4) Pulling all epv users" -type DY
                write-verbose "PULLING ALL EPVUSERS..."
                $AllEPVUsers = Get-VPASAllEPVUsers
                foreach($epvuser in $AllEPVUsers.Users){
                    $epvusername = $epvuser.username
                    $epvfirstname = $epvuser.personalDetails.firstName
                    $epvlastname = $epvuser.personalDetails.lastName

                    if($epvusername -match $searchQuery){
                        $outhash = @{
                            Asset = "EPVUser"
                            Value = $epvusername
                            Condition = "$searchQuery matched on EPV Username: $epvusername"
                            ExtraInfo = $epvuser
                        }
                        $outputmatrix += $outhash
                    }
                    if($epvfirstname -match $searchQuery){
                        $outhash = @{
                            Asset = "EPVUser"
                            Value = $epvusername
                            Condition = "$searchQuery matched on EPV Firstname: $epvfirstname"
                            ExtraInfo = $epvuser
                        }
                        $outputmatrix += $outhash
                    }
                    if($epvlastname -match $searchQuery){
                        $outhash = @{
                            Asset = "EPVUser"
                            Value = $epvusername
                            Condition = "$searchQuery matched on EPV Lastname: $epvlastname"
                            ExtraInfo = $epvuser
                        }
                        $outputmatrix += $outhash
                    }
                }
            }

            #EPV GROUPS
            if($SkipEPVGroups){
                Write-VPASOutput -str "Step5) Pulling all epv groups...SKIPPING" -type M
            }
            else{
                Write-VPASOutput -str "Step5) Pulling all epv groups" -type DY
                write-verbose "PULLING ALL EPVGROUPS..."
                $AllEPVGroups = Get-VPASAllEPVGroups
                foreach($epvgroup in $AllEPVGroups.value){
                    $epvgroupname = $epvgroup.groupName
                    $epvgroupdescription = $epvgroup.description

                    if($epvgroupname -match $searchQuery){
                        $outhash = @{
                            Asset = "EPVGroup"
                            Value = $epvgroupname
                            Condition = "$searchQuery matched on EPV Group Name: $epvgroupname"
                            ExtraInfo = $epvgroup
                        }
                        $outputmatrix += $outhash
                    }
                    if($epvgroupdescription -match $searchQuery){
                        $outhash = @{
                            Asset = "EPVGroup"
                            Value = $epvgroupname
                            Condition = "$searchQuery matched on EPV Group Description: $epvgroupdescription"
                            ExtraInfo = $epvgroup
                        }
                        $outputmatrix += $outhash
                    }
                }
            }

            #APPLICATION IDS
            if($SkipApplications){
                Write-VPASOutput -str "Step6) Pulling all applicationIDs and application authentication methods...SKIPPING" -type M
            }
            else{
                Write-VPASOutput -str "Step6) Pulling all applicationIDs and application authentication methods" -type DY
                write-verbose "PULLING ALL APPLICATIONS..."
                $AllApplications = Get-VPASAllApplications
                foreach($app in $AllApplications){
                    $appAppID = $app.AppID
                    $appBusinessOwnerEmail = $app.BusinessOwnerEmail
                    $appBusinessOwnerFName = $app.BusinessOwnerFName
                    $appBusinessOwnerLName = $app.BusinessOwnerLName
                    $appDescription = $app.Description


                    if($appAppID -match $searchQuery){
                        $outhash = @{
                            Asset = "ApplicationID"
                            Value = $appAppID
                            Condition = "$searchQuery matched on Application ID: $appAppID"
                            ExtraInfo = $app
                        }
                        $outputmatrix += $outhash
                    }
                    if($appBusinessOwnerEmail -match $searchQuery){
                        $outhash = @{
                            Asset = "ApplicationID"
                            Value = $appAppID
                            Condition = "$searchQuery matched on Application Email: $appBusinessOwnerEmail"
                            ExtraInfo = $app
                        }
                        $outputmatrix += $outhash
                    }
                    if($appBusinessOwnerFName -match $searchQuery){
                        $outhash = @{
                            Asset = "ApplicationID"
                            Value = $appAppID
                            Condition = "$searchQuery matched on Application Firstname: $appBusinessOwnerFName"
                            ExtraInfo = $app
                        }
                        $outputmatrix += $outhash
                    }
                    if($appBusinessOwnerLName -match $searchQuery){
                        $outhash = @{
                            Asset = "ApplicationID"
                            Value = $appAppID
                            Condition = "$searchQuery matched on Application Lastname: $appBusinessOwnerLName"
                            ExtraInfo = $app
                        }
                        $outputmatrix += $outhash
                    }
                    if($appDescription -match $searchQuery){
                        $outhash = @{
                            Asset = "ApplicationID"
                            Value = $appAppID
                            Condition = "$searchQuery matched on Application Description: $appDescription"
                            ExtraInfo = $app
                        }
                        $outputmatrix += $outhash
                    }

                    $AllApplicationAuths = Get-VPASApplicationAuthentications -AppID $appAppID
                    foreach($auth in $AllApplicationAuths.authentication){
                        $AuthValue = $auth.AuthValue
                        $Comment = $auth.Comment

                        if($AuthValue -match $searchQuery){
                            $outhash = @{
                                Asset = "ApplicationIDAuth"
                                Value = $appAppID
                                Condition = "$searchQuery matched on Application Authentication Value: $AuthValue"
                                ExtraInfo = $app
                            }
                            $outputmatrix += $outhash
                        }
                        if($Comment -match $searchQuery){
                            $outhash = @{
                                Asset = "ApplicationIDAuth"
                                Value = $appAppID
                                Condition = "$searchQuery matched on Application Authentication Comment: $Comment"
                                ExtraInfo = $app
                            }
                            $outputmatrix += $outhash
                        }
                    }
                }
            }

            #ROLES (IF ISPSS)
            if($ISPSS){
                if($SkipRoles){
                    Write-VPASOutput -str "Step7) Pulling all roles from Identity...SKIPPING" -type M
                }
                else{
                    Write-VPASOutput -str "Step7) Pulling all roles from Identity" -type DY
                    Write-Verbose "PULLING ALL ROLES"
                    $AllRoles = Get-VPASIdentityAllRoles
                    foreach($role in $AllRoles.Value){
                        $roleID = $role.ID
                        $roleName = $role.Name
                        $roleDescription = $role.Description

                        if($roleID -match $searchQuery){
                            $outhash = @{
                                Asset = "Role"
                                Value = $roleName
                                Condition = "$searchQuery matched on Role ID: $roleID"
                                ExtraInfo = $role
                            }
                            $outputmatrix += $outhash
                        }
                        if($roleName -match $searchQuery){
                            $outhash = @{
                                Asset = "Role"
                                Value = $roleName
                                Condition = "$searchQuery matched on Role Name: $roleName"
                                ExtraInfo = $role
                            }
                            $outputmatrix += $outhash
                        }
                        if($roleDescription -match $searchQuery){
                            $outhash = @{
                                Asset = "Role"
                                Value = $roleName
                                Condition = "$searchQuery matched on Role Description: $roleDescription"
                                ExtraInfo = $role
                            }
                            $outputmatrix += $outhash
                        }
                    }
                }

                if($SkipIdentities){
                    Write-VPASOutput -str "Step8) Pulling all Identity objects from Identity...SKIPPING" -type M
                }
                else{
                    Write-VPASOutput -str "Step8) Pulling all Identity objects from Identity" -type DY
                    Write-Verbose "PULLING ALL IDENTITIES"
                    $AllUsers = Get-VPASIdentityAllUsers
                    foreach($user in $AllUsers.Results.row){
                        $userDisplay = $user.DisplayName
                        $userName = $user.Name
                        $userMail = $user.Mail
                        $userDescription = $user.Description

                        if($userDisplay -match $searchQuery){
                            $outhash = @{
                                Asset = "Identity"
                                Value = $userName
                                Condition = "$searchQuery matched on Identity DisplayName: $userDisplay"
                                ExtraInfo = $user
                            }
                            $outputmatrix += $outhash
                        }
                        if($userName -match $searchQuery){
                            $outhash = @{
                                Asset = "Identity"
                                Value = $userName
                                Condition = "$searchQuery matched on Identity Name: $userName"
                                ExtraInfo = $user
                            }
                            $outputmatrix += $outhash
                        }
                        if($userMail -match $searchQuery){
                            $outhash = @{
                                Asset = "Identity"
                                Value = $userName
                                Condition = "$searchQuery matched on Identity Email: $userMail"
                                ExtraInfo = $user
                            }
                            $outputmatrix += $outhash
                        }
                        if($userDescription -match $searchQuery){
                            $outhash = @{
                                Asset = "Identity"
                                Value = $userName
                                Condition = "$searchQuery matched on Identity Description: $userDescription"
                                ExtraInfo = $user
                            }
                            $outputmatrix += $outhash
                        }
                    }
                }
            }

            if($ExportToCSV){
                $runexport = Write-VPASExportCSV -Data $outputmatrix -CommandName $CommandName -CSVDirectory $CSVDirectory
            }
            return $outputmatrix
        }catch{
            $log = Write-VPASTextRecorder -inputval $_ -token $token -LogType ERROR
            $log = Write-VPASTextRecorder -inputval "REST API COMMAND RETURNED: FALSE" -token $token -LogType MISC
            Write-Verbose "FAILED TO RETRIEVE SAFES"
            Write-VPASOutput -str $_ -type E
            return $false
        }
    }
    End{
        $log = Write-VPASTextRecorder -inputval $CommandName -token $token -LogType DIVIDER
    }
}

# SIG # Begin signature block
# MIIroAYJKoZIhvcNAQcCoIIrkTCCK40CAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUExWPLTs5QThSwhHxwd00TynF
# XpSggiTbMIIFbzCCBFegAwIBAgIQSPyTtGBVlI02p8mKidaUFjANBgkqhkiG9w0B
# AQwFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVy
# MRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEh
# MB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTIxMDUyNTAwMDAw
# MFoXDTI4MTIzMTIzNTk1OVowVjELMAkGA1UEBhMCR0IxGDAWBgNVBAoTD1NlY3Rp
# Z28gTGltaXRlZDEtMCsGA1UEAxMkU2VjdGlnbyBQdWJsaWMgQ29kZSBTaWduaW5n
# IFJvb3QgUjQ2MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAjeeUEiIE
# JHQu/xYjApKKtq42haxH1CORKz7cfeIxoFFvrISR41KKteKW3tCHYySJiv/vEpM7
# fbu2ir29BX8nm2tl06UMabG8STma8W1uquSggyfamg0rUOlLW7O4ZDakfko9qXGr
# YbNzszwLDO/bM1flvjQ345cbXf0fEj2CA3bm+z9m0pQxafptszSswXp43JJQ8mTH
# qi0Eq8Nq6uAvp6fcbtfo/9ohq0C/ue4NnsbZnpnvxt4fqQx2sycgoda6/YDnAdLv
# 64IplXCN/7sVz/7RDzaiLk8ykHRGa0c1E3cFM09jLrgt4b9lpwRrGNhx+swI8m2J
# mRCxrds+LOSqGLDGBwF1Z95t6WNjHjZ/aYm+qkU+blpfj6Fby50whjDoA7NAxg0P
# OM1nqFOI+rgwZfpvx+cdsYN0aT6sxGg7seZnM5q2COCABUhA7vaCZEao9XOwBpXy
# bGWfv1VbHJxXGsd4RnxwqpQbghesh+m2yQ6BHEDWFhcp/FycGCvqRfXvvdVnTyhe
# Be6QTHrnxvTQ/PrNPjJGEyA2igTqt6oHRpwNkzoJZplYXCmjuQymMDg80EY2NXyc
# uu7D1fkKdvp+BRtAypI16dV60bV/AK6pkKrFfwGcELEW/MxuGNxvYv6mUKe4e7id
# FT/+IAx1yCJaE5UZkADpGtXChvHjjuxf9OUCAwEAAaOCARIwggEOMB8GA1UdIwQY
# MBaAFKARCiM+lvEH7OKvKe+CpX/QMKS0MB0GA1UdDgQWBBQy65Ka/zWWSC8oQEJw
# IDaRXBeF5jAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zATBgNVHSUE
# DDAKBggrBgEFBQcDAzAbBgNVHSAEFDASMAYGBFUdIAAwCAYGZ4EMAQQBMEMGA1Ud
# HwQ8MDowOKA2oDSGMmh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL0FBQUNlcnRpZmlj
# YXRlU2VydmljZXMuY3JsMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAYYYaHR0
# cDovL29jc3AuY29tb2RvY2EuY29tMA0GCSqGSIb3DQEBDAUAA4IBAQASv6Hvi3Sa
# mES4aUa1qyQKDKSKZ7g6gb9Fin1SB6iNH04hhTmja14tIIa/ELiueTtTzbT72ES+
# BtlcY2fUQBaHRIZyKtYyFfUSg8L54V0RQGf2QidyxSPiAjgaTCDi2wH3zUZPJqJ8
# ZsBRNraJAlTH/Fj7bADu/pimLpWhDFMpH2/YGaZPnvesCepdgsaLr4CnvYFIUoQx
# 2jLsFeSmTD1sOXPUC4U5IOCFGmjhp0g4qdE2JXfBjRkWxYhMZn0vY86Y6GnfrDyo
# XZ3JHFuu2PMvdM+4fvbXg50RlmKarkUT2n/cR/vfw1Kf5gZV6Z2M8jpiUbzsJA8p
# 1FiAhORFe1rYMIIGFDCCA/ygAwIBAgIQeiOu2lNplg+RyD5c9MfjPzANBgkqhkiG
# 9w0BAQwFADBXMQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVk
# MS4wLAYDVQQDEyVTZWN0aWdvIFB1YmxpYyBUaW1lIFN0YW1waW5nIFJvb3QgUjQ2
# MB4XDTIxMDMyMjAwMDAwMFoXDTM2MDMyMTIzNTk1OVowVTELMAkGA1UEBhMCR0Ix
# GDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDEsMCoGA1UEAxMjU2VjdGlnbyBQdWJs
# aWMgVGltZSBTdGFtcGluZyBDQSBSMzYwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAw
# ggGKAoIBgQDNmNhDQatugivs9jN+JjTkiYzT7yISgFQ+7yavjA6Bg+OiIjPm/N/t
# 3nC7wYUrUlY3mFyI32t2o6Ft3EtxJXCc5MmZQZ8AxCbh5c6WzeJDB9qkQVa46xiY
# Epc81KnBkAWgsaXnLURoYZzksHIzzCNxtIXnb9njZholGw9djnjkTdAA83abEOHQ
# 4ujOGIaBhPXG2NdV8TNgFWZ9BojlAvflxNMCOwkCnzlH4oCw5+4v1nssWeN1y4+R
# laOywwRMUi54fr2vFsU5QPrgb6tSjvEUh1EC4M29YGy/SIYM8ZpHadmVjbi3Pl8h
# JiTWw9jiCKv31pcAaeijS9fc6R7DgyyLIGflmdQMwrNRxCulVq8ZpysiSYNi79tw
# 5RHWZUEhnRfs/hsp/fwkXsynu1jcsUX+HuG8FLa2BNheUPtOcgw+vHJcJ8HnJCrc
# UWhdFczf8O+pDiyGhVYX+bDDP3GhGS7TmKmGnbZ9N+MpEhWmbiAVPbgkqykSkzyY
# Vr15OApZYK8CAwEAAaOCAVwwggFYMB8GA1UdIwQYMBaAFPZ3at0//QET/xahbIIC
# L9AKPRQlMB0GA1UdDgQWBBRfWO1MMXqiYUKNUoC6s2GXGaIymzAOBgNVHQ8BAf8E
# BAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADATBgNVHSUEDDAKBggrBgEFBQcDCDAR
# BgNVHSAECjAIMAYGBFUdIAAwTAYDVR0fBEUwQzBBoD+gPYY7aHR0cDovL2NybC5z
# ZWN0aWdvLmNvbS9TZWN0aWdvUHVibGljVGltZVN0YW1waW5nUm9vdFI0Ni5jcmww
# fAYIKwYBBQUHAQEEcDBuMEcGCCsGAQUFBzAChjtodHRwOi8vY3J0LnNlY3RpZ28u
# Y29tL1NlY3RpZ29QdWJsaWNUaW1lU3RhbXBpbmdSb290UjQ2LnA3YzAjBggrBgEF
# BQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20wDQYJKoZIhvcNAQEMBQADggIB
# ABLXeyCtDjVYDJ6BHSVY/UwtZ3Svx2ImIfZVVGnGoUaGdltoX4hDskBMZx5NY5L6
# SCcwDMZhHOmbyMhyOVJDwm1yrKYqGDHWzpwVkFJ+996jKKAXyIIaUf5JVKjccev3
# w16mNIUlNTkpJEor7edVJZiRJVCAmWAaHcw9zP0hY3gj+fWp8MbOocI9Zn78xvm9
# XKGBp6rEs9sEiq/pwzvg2/KjXE2yWUQIkms6+yslCRqNXPjEnBnxuUB1fm6bPAV+
# Tsr/Qrd+mOCJemo06ldon4pJFbQd0TQVIMLv5koklInHvyaf6vATJP4DfPtKzSBP
# kKlOtyaFTAjD2Nu+di5hErEVVaMqSVbfPzd6kNXOhYm23EWm6N2s2ZHCHVhlUgHa
# C4ACMRCgXjYfQEDtYEK54dUwPJXV7icz0rgCzs9VI29DwsjVZFpO4ZIVR33LwXyP
# DbYFkLqYmgHjR3tKVkhh9qKV2WCmBuC27pIOx6TYvyqiYbntinmpOqh/QPAnhDge
# xKG9GX/n1PggkGi9HCapZp8fRwg8RftwS21Ln61euBG0yONM6noD2XQPrFwpm3Gc
# uqJMf0o8LLrFkSLRQNwxPDDkWXhW+gZswbaiie5fd/W2ygcto78XCSPfFWveUOSZ
# 5SqK95tBO8aTHmEa4lpJVD7HrTEn9jb1EGvxOb1cnn0CMIIGGjCCBAKgAwIBAgIQ
# Yh1tDFIBnjuQeRUgiSEcCjANBgkqhkiG9w0BAQwFADBWMQswCQYDVQQGEwJHQjEY
# MBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMS0wKwYDVQQDEyRTZWN0aWdvIFB1Ymxp
# YyBDb2RlIFNpZ25pbmcgUm9vdCBSNDYwHhcNMjEwMzIyMDAwMDAwWhcNMzYwMzIx
# MjM1OTU5WjBUMQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVk
# MSswKQYDVQQDEyJTZWN0aWdvIFB1YmxpYyBDb2RlIFNpZ25pbmcgQ0EgUjM2MIIB
# ojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAmyudU/o1P45gBkNqwM/1f/bI
# U1MYyM7TbH78WAeVF3llMwsRHgBGRmxDeEDIArCS2VCoVk4Y/8j6stIkmYV5Gej4
# NgNjVQ4BYoDjGMwdjioXan1hlaGFt4Wk9vT0k2oWJMJjL9G//N523hAm4jF4UjrW
# 2pvv9+hdPX8tbbAfI3v0VdJiJPFy/7XwiunD7mBxNtecM6ytIdUlh08T2z7mJEXZ
# D9OWcJkZk5wDuf2q52PN43jc4T9OkoXZ0arWZVeffvMr/iiIROSCzKoDmWABDRzV
# /UiQ5vqsaeFaqQdzFf4ed8peNWh1OaZXnYvZQgWx/SXiJDRSAolRzZEZquE6cbcH
# 747FHncs/Kzcn0Ccv2jrOW+LPmnOyB+tAfiWu01TPhCr9VrkxsHC5qFNxaThTG5j
# 4/Kc+ODD2dX/fmBECELcvzUHf9shoFvrn35XGf2RPaNTO2uSZ6n9otv7jElspkfK
# 9qEATHZcodp+R4q2OIypxR//YEb3fkDn3UayWW9bAgMBAAGjggFkMIIBYDAfBgNV
# HSMEGDAWgBQy65Ka/zWWSC8oQEJwIDaRXBeF5jAdBgNVHQ4EFgQUDyrLIIcouOxv
# SK4rVKYpqhekzQwwDgYDVR0PAQH/BAQDAgGGMBIGA1UdEwEB/wQIMAYBAf8CAQAw
# EwYDVR0lBAwwCgYIKwYBBQUHAwMwGwYDVR0gBBQwEjAGBgRVHSAAMAgGBmeBDAEE
# ATBLBgNVHR8ERDBCMECgPqA8hjpodHRwOi8vY3JsLnNlY3RpZ28uY29tL1NlY3Rp
# Z29QdWJsaWNDb2RlU2lnbmluZ1Jvb3RSNDYuY3JsMHsGCCsGAQUFBwEBBG8wbTBG
# BggrBgEFBQcwAoY6aHR0cDovL2NydC5zZWN0aWdvLmNvbS9TZWN0aWdvUHVibGlj
# Q29kZVNpZ25pbmdSb290UjQ2LnA3YzAjBggrBgEFBQcwAYYXaHR0cDovL29jc3Au
# c2VjdGlnby5jb20wDQYJKoZIhvcNAQEMBQADggIBAAb/guF3YzZue6EVIJsT/wT+
# mHVEYcNWlXHRkT+FoetAQLHI1uBy/YXKZDk8+Y1LoNqHrp22AKMGxQtgCivnDHFy
# AQ9GXTmlk7MjcgQbDCx6mn7yIawsppWkvfPkKaAQsiqaT9DnMWBHVNIabGqgQSGT
# rQWo43MOfsPynhbz2Hyxf5XWKZpRvr3dMapandPfYgoZ8iDL2OR3sYztgJrbG6VZ
# 9DoTXFm1g0Rf97Aaen1l4c+w3DC+IkwFkvjFV3jS49ZSc4lShKK6BrPTJYs4NG1D
# GzmpToTnwoqZ8fAmi2XlZnuchC4NPSZaPATHvNIzt+z1PHo35D/f7j2pO1S8BCys
# QDHCbM5Mnomnq5aYcKCsdbh0czchOm8bkinLrYrKpii+Tk7pwL7TjRKLXkomm5D1
# Umds++pip8wH2cQpf93at3VDcOK4N7EwoIJB0kak6pSzEu4I64U6gZs7tS/dGNSl
# jf2OSSnRr7KWzq03zl8l75jy+hOds9TWSenLbjBQUGR96cFr6lEUfAIEHVC1L68Y
# 1GGxx4/eRI82ut83axHMViw1+sVpbPxg51Tbnio1lB93079WPFnYaOvfGAA0e0zc
# fF/M9gXr+korwQTh2Prqooq2bYNMvUoUKD85gnJ+t0smrWrb8dee2CvYZXD5laGt
# aAxOfy/VKNmwuWuAh9kcMIIGRzCCBK+gAwIBAgIQacs5SDkvNuif0aEmZmr03jAN
# BgkqhkiG9w0BAQwFADBUMQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBM
# aW1pdGVkMSswKQYDVQQDEyJTZWN0aWdvIFB1YmxpYyBDb2RlIFNpZ25pbmcgQ0Eg
# UjM2MB4XDTI1MDEyOTAwMDAwMFoXDTI4MDEyOTIzNTk1OVowXjELMAkGA1UEBhMC
# VVMxEzARBgNVBAgMCk5ldyBKZXJzZXkxHDAaBgNVBAoME0N5YmVyTWVsIENvbnN1
# bHRpbmcxHDAaBgNVBAMME0N5YmVyTWVsIENvbnN1bHRpbmcwggIiMA0GCSqGSIb3
# DQEBAQUAA4ICDwAwggIKAoICAQDBQmSvdfamF8o0CJr4vbHCcJ4rwx6T1HR3d32u
# 4aIf9v9p/GV4nFdG4PP9SMjWw7Nx9CLFqGPpkw7aDU2IxwpfPYExDzkCj2pgiyeV
# KlL0itTlPocb6i1cZLe/WHV7aUkGkVlfvyYIqdJ9uw711dhNWmMhlqo+/qyp+gpK
# qaiFHm6mWNVg2KLTH5Pu38cBoGhS1tn7mlQbtALNjehkpFw2AAntEIBzM3ZEg9WB
# xQlgYY0yAPkydYbJfTEOEFJqHUPTSV46jx22Jb9dl0cEIPsGrCp+Jo5Ugusp9oZE
# CZ8bGt7Vc9jYoIWGpqcRDq1JZFNCSVvNE4N3ECGjq6W3kYW7ot0CP1DkpJ93a5wr
# ksQ6bvYGUy3lghkMvzjkkq/NVUDEVcdNR7PsUFf654vSw+iLINZ+9kYg+Znplfnd
# T/JSMJDAaWkM5oLu6+ao0774QWrsHOttz7M8EDU+3PntYHglwWoej6qXIFRurgXd
# wAXXyXYcSmkOTbPqrjSwsbs8CuSwGqebbRSDKfjRzDqQ9D1AZ/JHHaaUkBbAYBsV
# MrvypDSrP/1o37mt4Zky28BnEp5ztEGp0HJ44X4rFVWWz+BfeuZWcVUcGKW2YFHo
# bNwGmJ/OanLvlnmtpZIRLF9ZkbzCHHomi+RId4g3fc3FsGxKqEW9Vj8PCumwKc6L
# UwZU4wIDAQABo4IBiTCCAYUwHwYDVR0jBBgwFoAUDyrLIIcouOxvSK4rVKYpqhek
# zQwwHQYDVR0OBBYEFCiCHmEfvPkU1uIc2sPugFDBq88SMA4GA1UdDwEB/wQEAwIH
# gDAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoGCCsGAQUFBwMDMEoGA1UdIARDMEEw
# NQYMKwYBBAGyMQECAQMCMCUwIwYIKwYBBQUHAgEWF2h0dHBzOi8vc2VjdGlnby5j
# b20vQ1BTMAgGBmeBDAEEATBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLnNl
# Y3RpZ28uY29tL1NlY3RpZ29QdWJsaWNDb2RlU2lnbmluZ0NBUjM2LmNybDB5Bggr
# BgEFBQcBAQRtMGswRAYIKwYBBQUHMAKGOGh0dHA6Ly9jcnQuc2VjdGlnby5jb20v
# U2VjdGlnb1B1YmxpY0NvZGVTaWduaW5nQ0FSMzYuY3J0MCMGCCsGAQUFBzABhhdo
# dHRwOi8vb2NzcC5zZWN0aWdvLmNvbTANBgkqhkiG9w0BAQwFAAOCAYEAmLUUP/C5
# nHN/qX27dIrfNezHdUul/uhOA5CwNkD7P4pvLJButR/S1OmvozuzJJTce6824Iyl
# nXkRwUFj04XLbodkBL7+YwQ5ml7CjdDSVo+sI/38jcEQ6FgosV/TTJSiFAgqMNwk
# x/kSzvQ1/Ufp5YVKggCXGJ4VitIzl5nMbzzu35G/uy4vmCQfh0KPYUTJYiRsF6Z3
# XJiIVtYrEwN/ikif/WFGrzsFj1OOWHNn5qDOP80xExmRS09z/wdZE9RdjPv5fYLn
# KWy1+GQ/w1vzg/l2vUXIgBV0MxalUfTP4V9Spsodrb+noPXiCy5n+6hy9yCf3EQb
# 3G1n8rT/a454fLSijMm6bhrgBRqhPUUtn6ZIBdEJzJUI6ftuXrQnB/U7zf32xcTT
# AW7WPem7DFK/4JrSaxiXcSkxQ4kXJDVoDPUJdpb0c5XdWVJO0DCkB35ONEIoqT6V
# jEIjLPSw9UXE420r1OIpV8FRJqrW4Fr5RUveEUlyF+FyygVOYZECNsjRMIIGXTCC
# BMWgAwIBAgIQOlJqLITOVeYdZfzMEtjpiTANBgkqhkiG9w0BAQwFADBVMQswCQYD
# VQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMSwwKgYDVQQDEyNTZWN0
# aWdvIFB1YmxpYyBUaW1lIFN0YW1waW5nIENBIFIzNjAeFw0yNDAxMTUwMDAwMDBa
# Fw0zNTA0MTQyMzU5NTlaMG4xCzAJBgNVBAYTAkdCMRMwEQYDVQQIEwpNYW5jaGVz
# dGVyMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxMDAuBgNVBAMTJ1NlY3RpZ28g
# UHVibGljIFRpbWUgU3RhbXBpbmcgU2lnbmVyIFIzNTCCAiIwDQYJKoZIhvcNAQEB
# BQADggIPADCCAgoCggIBAI3RZ/TBSJu9/ThJOk1hgZvD2NxFpWEENo0GnuOYloD1
# 1BlbmKCGtcY0xiMrsN7LlEgcyoshtP3P2J/vneZhuiMmspY7hk/Q3l0FPZPBllo9
# vwT6GpoNnxXLZz7HU2ITBsTNOs9fhbdAWr/Mm8MNtYov32osvjYYlDNfefnBajrQ
# qSV8Wf5ZvbaY5lZhKqQJUaXxpi4TXZKohLgxU7g9RrFd477j7jxilCU2ptz+d1OC
# zNFAsXgyPEM+NEMPUz2q+ktNlxMZXPF9WLIhOhE3E8/oNSJkNTqhcBGsbDI/1qCU
# 9fBhuSojZ0u5/1+IjMG6AINyI6XLxM8OAGQmaMB8gs2IZxUTOD7jTFR2HE1xoL7q
# vSO4+JHtvNceHu//dGeVm5Pdkay3Et+YTt9EwAXBsd0PPmC0cuqNJNcOI0XnwjE+
# 2+Zk8bauVz5ir7YHz7mlj5Bmf7W8SJ8jQwO2IDoHHFC46ePg+eoNors0QrC0PWnO
# gDeMkW6gmLBtq3CEOSDU8iNicwNsNb7ABz0W1E3qlSw7jTmNoGCKCgVkLD2FaMs2
# qAVVOjuUxvmtWMn1pIFVUvZ1yrPIVbYt1aTld2nrmh544Auh3tgggy/WluoLXlHt
# AJgvFwrVsKXj8ekFt0TmaPL0lHvQEe5jHbufhc05lvCtdwbfBl/2ARSTuy1s8CgF
# AgMBAAGjggGOMIIBijAfBgNVHSMEGDAWgBRfWO1MMXqiYUKNUoC6s2GXGaIymzAd
# BgNVHQ4EFgQUaO+kMklptlI4HepDOSz0FGqeDIUwDgYDVR0PAQH/BAQDAgbAMAwG
# A1UdEwEB/wQCMAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwgwSgYDVR0gBEMwQTA1
# BgwrBgEEAbIxAQIBAwgwJTAjBggrBgEFBQcCARYXaHR0cHM6Ly9zZWN0aWdvLmNv
# bS9DUFMwCAYGZ4EMAQQCMEoGA1UdHwRDMEEwP6A9oDuGOWh0dHA6Ly9jcmwuc2Vj
# dGlnby5jb20vU2VjdGlnb1B1YmxpY1RpbWVTdGFtcGluZ0NBUjM2LmNybDB6Bggr
# BgEFBQcBAQRuMGwwRQYIKwYBBQUHMAKGOWh0dHA6Ly9jcnQuc2VjdGlnby5jb20v
# U2VjdGlnb1B1YmxpY1RpbWVTdGFtcGluZ0NBUjM2LmNydDAjBggrBgEFBQcwAYYX
# aHR0cDovL29jc3Auc2VjdGlnby5jb20wDQYJKoZIhvcNAQEMBQADggGBALDcLsn6
# TzZMii/2yU/V7xhPH58Oxr/+EnrZjpIyvYTz2u/zbL+fzB7lbrPml8ERajOVbuda
# n6x08J1RMXD9hByq+yEfpv1G+z2pmnln5XucfA9MfzLMrCArNNMbUjVcRcsAr18e
# eZeloN5V4jwrovDeLOdZl0tB7fOX5F6N2rmXaNTuJR8yS2F+EWaL5VVg+RH8FelX
# tRvVDLJZ5uqSNIckdGa/eUFhtDKTTz9LtOUh46v2JD5Q3nt8mDhAjTKp2fo/KJ6F
# LWdKAvApGzjpPwDqFeJKf+kJdoBKd2zQuwzk5Wgph9uA46VYK8p/BTJJahKCuGdy
# KFIFfEfakC4NXa+vwY4IRp49lzQPLo7WticqMaaqb8hE2QmCFIyLOvWIg4837bd+
# 60FcCGbHwmL/g1ObIf0rRS9ceK4DY9rfBnHFH2v1d4hRVvZXyCVlrL7ZQuVzjjkL
# MK9VJlXTVkHpuC8K5S4HHTv2AJx6mOdkMJwS4gLlJ7gXrIVpnxG+aIniGDCCBoIw
# ggRqoAMCAQICEDbCsL18Gzrno7PdNsvJdWgwDQYJKoZIhvcNAQEMBQAwgYgxCzAJ
# BgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5MRQwEgYDVQQHEwtKZXJzZXkg
# Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMS4wLAYDVQQDEyVV
# U0VSVHJ1c3QgUlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTIxMDMyMjAw
# MDAwMFoXDTM4MDExODIzNTk1OVowVzELMAkGA1UEBhMCR0IxGDAWBgNVBAoTD1Nl
# Y3RpZ28gTGltaXRlZDEuMCwGA1UEAxMlU2VjdGlnbyBQdWJsaWMgVGltZSBTdGFt
# cGluZyBSb290IFI0NjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAIid
# 2LlFZ50d3ei5JoGaVFTAfEkFm8xaFQ/ZlBBEtEFAgXcUmanU5HYsyAhTXiDQkiUv
# pVdYqZ1uYoZEMgtHES1l1Cc6HaqZzEbOOp6YiTx63ywTon434aXVydmhx7Dx4IBr
# Aou7hNGsKioIBPy5GMN7KmgYmuu4f92sKKjbxqohUSfjk1mJlAjthgF7Hjx4vvyV
# DQGsd5KarLW5d73E3ThobSkob2SL48LpUR/O627pDchxll+bTSv1gASn/hp6IuHJ
# orEu6EopoB1CNFp/+HpTXeNARXUmdRMKbnXWflq+/g36NJXB35ZvxQw6zid61qmr
# lD/IbKJA6COw/8lFSPQwBP1ityZdwuCysCKZ9ZjczMqbUcLFyq6KdOpuzVDR3ZUw
# xDKL1wCAxgL2Mpz7eZbrb/JWXiOcNzDpQsmwGQ6Stw8tTCqPumhLRPb7YkzM8/6N
# nWH3T9ClmcGSF22LEyJYNWCHrQqYubNeKolzqUbCqhSqmr/UdUeb49zYHr7ALL8b
# AJyPDmubNqMtuaobKASBqP84uhqcRY/pjnYd+V5/dcu9ieERjiRKKsxCG1t6tG9o
# j7liwPddXEcYGOUiWLm742st50jGwTzxbMpepmOP1mLnJskvZaN5e45NuzAHteOR
# lsSuDt5t4BBRCJL+5EZnnw0ezntk9R8QJyAkL6/bAgMBAAGjggEWMIIBEjAfBgNV
# HSMEGDAWgBRTeb9aqitKz1SA4dibwJ3ysgNmyzAdBgNVHQ4EFgQU9ndq3T/9ARP/
# FqFsggIv0Ao9FCUwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wEwYD
# VR0lBAwwCgYIKwYBBQUHAwgwEQYDVR0gBAowCDAGBgRVHSAAMFAGA1UdHwRJMEcw
# RaBDoEGGP2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0
# aWZpY2F0aW9uQXV0aG9yaXR5LmNybDA1BggrBgEFBQcBAQQpMCcwJQYIKwYBBQUH
# MAGGGWh0dHA6Ly9vY3NwLnVzZXJ0cnVzdC5jb20wDQYJKoZIhvcNAQEMBQADggIB
# AA6+ZUHtaES45aHF1BGH5Lc7JYzrftrIF5Ht2PFDxKKFOct/awAEWgHQMVHol9ZL
# Syd/pYMbaC0IZ+XBW9xhdkkmUV/KbUOiL7g98M/yzRyqUOZ1/IY7Ay0YbMniIibJ
# rPcgFp73WDnRDKtVutShPSZQZAdtFwXnuiWl8eFARK3PmLqEm9UsVX+55DbVIz33
# Mbhba0HUTEYv3yJ1fwKGxPBsP/MgTECimh7eXomvMm0/GPxX2uhwCcs/YLxDnBdV
# VlxvDjHjO1cuwbOpkiJGHmLXXVNbsdXUC2xBrq9fLrfe8IBsA4hopwsCj8hTuwKX
# JlSTrZcPRVSccP5i9U28gZ7OMzoJGlxZ5384OKm0r568Mo9TYrqzKeKZgFo0fj2/
# 0iHbj55hc20jfxvK3mQi+H7xpbzxZOFGm/yVQkpo+ffv5gdhp+hv1GDsvJOtJinJ
# mgGbBFZIThbqI+MHvAmMmkfb3fTxmSkop2mSJL1Y2x/955S29Gu0gSJIkc3z30vU
# /iXrMpWx2tS7UVfVP+5tKuzGtgkP7d/doqDrLF1u6Ci3TpjAZdeLLlRQZm867eVe
# XED58LXd1Dk6UvaAhvmWYXoiLz4JA5gPBcz7J311uahxCweNxE+xxxR3kT0WKzAS
# o5G/PyDez6NHdIUKBeE3jDPs2ACc6CkJ1Sji4PKWVT0/MYIGLzCCBisCAQEwaDBU
# MQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMSswKQYDVQQD
# EyJTZWN0aWdvIFB1YmxpYyBDb2RlIFNpZ25pbmcgQ0EgUjM2AhBpyzlIOS826J/R
# oSZmavTeMAkGBSsOAwIaBQCgeDAYBgorBgEEAYI3AgEMMQowCKACgAChAoAAMBkG
# CSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgorBgEE
# AYI3AgEVMCMGCSqGSIb3DQEJBDEWBBQAg4ote/XgDyVxtXIRuJjOGYdpKTANBgkq
# hkiG9w0BAQEFAASCAgBgRTvX5xL5YncJLBrYlIWJD+3bz3mIwNYK3gavs0Pm5EiD
# /TF63fJv8KNlVfVx8tLhrX778KbDylojxq2sGbBykX5emgDZjKyRr8HBqfrj2JLB
# lpTAgYUsJPv1sPSwFPYAfwg4WAb65992G+XdypsdxXIKZNLMbrzWRbjwkA70yFV1
# TFfaal33k0wuzohb/3qTEO2uo1znwS+B58a90CW9FXGha4RMJccVJoO1iM+mP0xn
# +pZUTAbAcIvCu9R9HA9qcLKdMl74SX9HVp/1vWV+U4d1Qrp5pcTx8+rJ7/px1CD+
# AgDQO4N7Nx6BRE86pa186ruIxB1cK5rIRjrJlOhQjA5cmxMhZYrBfuG3SmbKDEtZ
# bpVFOY5uOAfIEQXB1l10jIMXQoKrjJbTf8gRAa3drTIndMRbTQsgGHk3u1cbItK1
# 52rcWaOlymeaArAi+085oCBbXPOwZ7gyA9c+hJQf6XINjm69ehZxl6keTzjuBVqc
# 27lMBhZGioTNdDAyYyMR7VvnjJVOh4rFINPlrsDo0UaUngDC8A4Hozf64CgNx561
# vB4koVV3MXknLO81Vss9Xk+z/uuVkagpwujEncKT5KnZGeSuwllXCUVro/VyyGJ5
# kAMfyikzRkTI0kH6TOadB+4PKPLPdOmGecVoFOwBrEpq00VdXfWSEtgYGk1PuKGC
# AyIwggMeBgkqhkiG9w0BCQYxggMPMIIDCwIBATBpMFUxCzAJBgNVBAYTAkdCMRgw
# FgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxLDAqBgNVBAMTI1NlY3RpZ28gUHVibGlj
# IFRpbWUgU3RhbXBpbmcgQ0EgUjM2AhA6UmoshM5V5h1l/MwS2OmJMA0GCWCGSAFl
# AwQCAgUAoHkwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUx
# DxcNMjUwMjA1MTQwOTU0WjA/BgkqhkiG9w0BCQQxMgQwkjqBcl9UCwzhfjatJ46c
# qH1/DZKIYMn7iEhK2pkrNdhLB09dmedz8SE9k+xHD3ToMA0GCSqGSIb3DQEBAQUA
# BIICAG0IKy0vMyQIwr7TF581tLn0QqW5tEl+0iIb0j4iI2bSK+91js9a+kw92rQg
# oWoTNwhmd90jPtXS9Zmi3J9qTzZZR2OTlf3C4QFfsfn/WQZmmfXFNDWXmtHaXctw
# BthGeHGm+5TMN3gEZ5mZkrAoeHHhk2AtHDaHz9ehg7tVjFhtD2LlVfQtfRrgTJUW
# /08Ge7W+11KDMOZULbdHAg7Mw6j3HgRqQSHzIQw6OLDHq3y5i1YKGybFqYm0bAmf
# ZA4sMXen52Pl5YFDxFtQzowODQxxWvWrokiijZyzFetNvD+C8OvKwM8fUM4xricg
# JIaVMKlDo+yGj1A7LBkpPFq/tsGdh92zW14yi7HOB2Ijr5SJNXZ4enCN6ShWOL8+
# u0a5XZwK9LsCHue5vdFeHxz8byB5OTtFuLw/L2ss0fPvWQMB6eJ20yDielIPRnoU
# hV0CieRAIi5HHUNfjIccgExEUo24ofhHUHj81DBogHa2hmTlVQOBrLJmC+85BrgM
# NSdEnUpmTFPrxc0rSUnhAcLXIqsDE/mqCboa7/LZE3YQApVT9xMPUVeaDyoVhdm1
# wpfR1PLJ94UvfCJt8zyKzYsA7KvHCZLw635Pm6wVumIFt+llAjCo+EgJNIL22q8l
# PDyMR4GDDJidXCUwIsRPcBSUdxUUjg0trzGIQXkTPVHqf7Py
# SIG # End signature block