public/cbb/New-MBSNBFFileBackupPlan.ps1
function New-MBSNBFFileBackupPlan { <# .SYNOPSIS Creates new file-level backup plan. .DESCRIPTION Creates File-Level backup plan. .PARAMETER Name Backup plan name. .PARAMETER StorageAccount Specify storage account object. Use Get-MBSStorageAccount cmdlet to list storages. Example: (Get-MBSStorageAccount -Name "AWS S3") .PARAMETER MasterPassword Master password. Should be specified if configuration is protected by master password. Use -MasterPassword (ConvertTo-SecureString -string "Your_Password" -AsPlainText -Force) .PARAMETER Schedule Specify schedule. Use New-MBSNBFPlanSchedule to create an object. .PARAMETER FullSchedule Specify force full schedule. Use New-MBSNBFPlanSchedule to create an object. .PARAMETER BackupPlanCommonOption Specify plan common options. Use New-MBSNBFBackupPlanCommonOption to create an object. .PARAMETER FastNTFSScan Enables you to speed up backup processing by using a low-level API to access NTFS structures when you need to back up a considerably large number of files that are stored on an NTFS-formatted device. Using this option automatically enables ForceUsingVSS option .PARAMETER BackupNTFSPermissions Backup NTFS permissions .PARAMETER ForceUsingVSS Force using VSS (Volume Shadow Copy Service) .PARAMETER UseShareReadWriteModeOnError Use share read/write mode on errors. Can help if file is open in share read/write mode .PARAMETER BackupEmptyFolders Backup empty folders .PARAMETER BackupOnlyAfter Backup files only after specific date. Example: "06/09/19 7:43 AM" .PARAMETER ExcludeSystemHiddenFiles Exclude system and hidden files from backup plan. .PARAMETER SkipFolder Skip folders. Example: -skipfolder ""bin,*temp*,My*"" .PARAMETER IncludeFilesMask Include files mask. Example: -IncludeFilesMask ""*.doc,*.xls"" .PARAMETER ExcludeFilesMask Exclude files mask. Example: -ExcludeFilesMask ""*.bak,*.tmp"" .PARAMETER IgnoreErrorPathNotFound Ignore errors path not found .PARAMETER BackupItem Backup file or directory. Example: "c:\temp\test.txt","c:\Work" .PARAMETER ExcludeItem Exclude file or directory. Example: "c:\temp\test.ps1","c:\Users" .PARAMETER GenerateDetailedReport Specify to generate detailed report .EXAMPLE New-MBSNBFFileBackupPlan -Name "File-level Plan" -StorageAccount (Get-MBSStorageAccount -ID aa3230dc-c20f-4ff3-83be-1cf6820de46b) -BackupItem "c:\temp\test.txt","c:\Work" -Schedule $schedule -BackupPlanCommonOption $commonOptions Create File-Level backup plan. .INPUTS None. .OUTPUTS None. .NOTES Author: MSP360 Onboarding Team .LINK https://mspbackups.com/AP/Help/powershell/cmdlets/backup-agent/new-mbsnbffilebackupplan #> [CmdletBinding()] param ( # [Parameter(Mandatory=$true, HelpMessage="Backup plan name.")] [string] $Name, # [Parameter(Mandatory=$true, HelpMessage="Specify storage account object. Use Get-MBSStorageAccount cmdlet to list storages. Example: (Get-MBSStorageAccount -Name ""AWS S3"")", ParameterSetName='FileLevel')] [MBS.Agent.StorageAccount] $StorageAccount, # [Parameter(Mandatory=$False, HelpMessage="Master password. Should be specified if configuration is protected by master password. Use -MasterPassword (ConvertTo-SecureString -string ""Your_Password"" -AsPlainText -Force)", ParameterSetName='FileLevel')] [SecureString] $MasterPassword, # ------------------------- Schedule ----------------------------- [Parameter(Mandatory=$False, HelpMessage="Specify schedule. Use New-MBSNBFPlanSchedule to create an object.", ParameterSetName='FileLevel')] [MBS.Agent.Plan.NBFIncrementalSchedule] $Schedule, # [Parameter(Mandatory=$False, HelpMessage="Specify force full schedule. Use New-MBSNBFPlanSchedule to create an object.", ParameterSetName='FileLevel')] [MBS.Agent.Plan.NBFFullSchedule] $FullSchedule, # ------------------------- BackupPlanCommonOption ----------------------------- [Parameter(Mandatory=$true, HelpMessage="Specify plan common options. Use New-MBSNBFBackupPlanCommonOption to create an object.", ParameterSetName='FileLevel')] [MBS.Agent.Plan.NBFBackupPlanCommonOption] $BackupPlanCommonOption, # --------------------------- File Backup settings ------------ # [Parameter(Mandatory=$False, HelpMessage='Enables you to speed up backup processing by using a low-level API to access NTFS structures when you need to back up a considerably large number of files that are stored on an NTFS-formatted device. Using this option automatically enables ForceUsingVSS option', ParameterSetName='FileLevel')] [Switch] $FastNTFSScan, # [Parameter(Mandatory=$False, HelpMessage="Backup NTFS permissions", ParameterSetName='FileLevel')] [Switch] $BackupNTFSPermissions, # [Parameter(Mandatory=$False, HelpMessage='Force using VSS (Volume Shadow Copy Service).', ParameterSetName='FileLevel')] [Switch] $ForceUsingVSS, # [Parameter(Mandatory=$False, HelpMessage='Back up EFS files as encrypted.', ParameterSetName='FileLevel')] [Switch] $KeepEFSEncryption, # [Parameter(Mandatory=$False, HelpMessage='Use share read/write mode on errors. Can help if file is open in share read/write mode.', ParameterSetName='FileLevel')] [Switch] $UseShareReadWriteModeOnError, # [Parameter(Mandatory=$False, HelpMessage='Backup empty folders.', ParameterSetName='FileLevel')] [Switch] $BackupEmptyFolders, # [Parameter(Mandatory=$False, HelpMessage="Backup files only after specific date. Example: ""06/09/19 7:43 AM""", ParameterSetName='FileLevel')] [datetime] $BackupOnlyAfter, # [Parameter(Mandatory=$False, HelpMessage='Exclude system and hidden files.', ParameterSetName='FileLevel')] [bool] $ExcludeSystemHiddenFiles=$true, # [Parameter(Mandatory=$False, HelpMessage="Skip folders. Example: -skipfolder ""bin,*temp*,My*""", ParameterSetName='FileLevel')] [string[]] $SkipFolder, # [Parameter(Mandatory=$False, HelpMessage="Include files mask. Example: -IncludeFilesMask ""*.doc,*.xls""", ParameterSetName='FileLevel')] [string[]] $IncludeFilesMask, # [Parameter(Mandatory=$False, HelpMessage="Exclude files mask. Example: -ExcludeFilesMask ""*.bak,*.tmp""", ParameterSetName='FileLevel')] [string[]] $ExcludeFilesMask, # [Parameter(Mandatory=$False, HelpMessage='Ignore errors path not found.', ParameterSetName='FileLevel')] [Switch] $IgnoreErrorPathNotFound, # #[Parameter(Mandatory=$False, HelpMessage="Backup file", ParameterSetName='FileLevel')] #[string[]] #$BackupFile, ## #[Parameter(Mandatory=$False, HelpMessage="Backup directory", ParameterSetName='FileLevel')] #[string[]] #$BackupDirectory, # [Parameter(Mandatory=$False, HelpMessage="Backup file or directory", ParameterSetName='FileLevel')] [System.Collections.Generic.List[string]] $BackupItem, # [Parameter(Mandatory=$False, HelpMessage="Exclude file or directory", ParameterSetName='FileLevel')] [System.Collections.Generic.List[string]] $ExcludeItem, # [Parameter(Mandatory=$False, HelpMessage='Specify to generate detailed report', ParameterSetName='FileLevel')] [Switch] $GenerateDetailedReport ) begin { if (-not($CBB = Get-MBSAgent)) { Break } if ([System.version](Get-MBSAgent).version -lt [System.version]"7.1.0.0") { Write-Error "Version $($CBB.version) is not supported. Please upgrade to the minimum supported version 7.1" Break } if (-Not(Test-MBSAgentMasterPassword)) { $MasterPassword = $null } else { if (-Not(Test-MBSAgentMasterPassword -CheckMasterPassword -MasterPassword $MasterPassword)) { $MasterPassword = Read-Host -AsSecureString -Prompt "Master Password" if (-Not(Test-MBSAgentMasterPassword -CheckMasterPassword -MasterPassword $MasterPassword)) { Write-Error "ERROR: Master password is not specified" Break } } } } process { $BackupPlan = New-Object -Type MBS.Agent.Plan.NBFFileLevelBackupPlan -Property @{ Name = $Name StorageAccount = $StorageAccount BackupPlanCommonOption = $BackupPlanCommonOption Schedule = $Schedule ForceFullSchedule = $FullSchedule BackupNTFSPermissions = $BackupNTFSPermissions FastNTFSScan = $FastNTFSScan ForceUsingVSS = $ForceUsingVSS KeepEFSEncryption = $KeepEFSEncryption UseShareReadWriteModeOnError = $UseShareReadWriteModeOnError BackupEmptyFolders = $BackupEmptyFolders BackupOnlyAfter = $BackupOnlyAfter ExcludeSystemHiddenFiles = $ExcludeSystemHiddenFiles SkipFolder = $SkipFolder IncludeFilesMask = $IncludeFilesMask ExcludeFilesMask = $ExcludeFilesMask IgnoreErrorPathNotFound = $IgnoreErrorPathNotFound BackupItem = $BackupItem ExcludeItem = $ExcludeItem GenerateDetailedReport = $GenerateDetailedReport } $BackupPlan.ID = New-MBSNBFBackupPlan -NBFFileLevelBackupPlan $BackupPlan -MasterPassword $MasterPassword return $BackupPlan } end { } } # SIG # Begin signature block # MIIs5gYJKoZIhvcNAQcCoIIs1zCCLNMCAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCDf9yl1RdfXsjRI # WwBPVph5AjLmQgSWD1Im2j70EkFMd6CCEekwggVvMIIEV6ADAgECAhBI/JO0YFWU # jTanyYqJ1pQWMA0GCSqGSIb3DQEBDAUAMHsxCzAJBgNVBAYTAkdCMRswGQYDVQQI # DBJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoM # EUNvbW9kbyBDQSBMaW1pdGVkMSEwHwYDVQQDDBhBQUEgQ2VydGlmaWNhdGUgU2Vy # dmljZXMwHhcNMjEwNTI1MDAwMDAwWhcNMjgxMjMxMjM1OTU5WjBWMQswCQYDVQQG # EwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMS0wKwYDVQQDEyRTZWN0aWdv # IFB1YmxpYyBDb2RlIFNpZ25pbmcgUm9vdCBSNDYwggIiMA0GCSqGSIb3DQEBAQUA # A4ICDwAwggIKAoICAQCN55QSIgQkdC7/FiMCkoq2rjaFrEfUI5ErPtx94jGgUW+s # hJHjUoq14pbe0IdjJImK/+8Skzt9u7aKvb0Ffyeba2XTpQxpsbxJOZrxbW6q5KCD # J9qaDStQ6Utbs7hkNqR+Sj2pcaths3OzPAsM79szV+W+NDfjlxtd/R8SPYIDdub7 # P2bSlDFp+m2zNKzBenjcklDyZMeqLQSrw2rq4C+np9xu1+j/2iGrQL+57g2extme # me/G3h+pDHazJyCh1rr9gOcB0u/rgimVcI3/uxXP/tEPNqIuTzKQdEZrRzUTdwUz # T2MuuC3hv2WnBGsY2HH6zAjybYmZELGt2z4s5KoYsMYHAXVn3m3pY2MeNn9pib6q # RT5uWl+PoVvLnTCGMOgDs0DGDQ84zWeoU4j6uDBl+m/H5x2xg3RpPqzEaDux5mcz # mrYI4IAFSEDu9oJkRqj1c7AGlfJsZZ+/VVscnFcax3hGfHCqlBuCF6yH6bbJDoEc # QNYWFyn8XJwYK+pF9e+91WdPKF4F7pBMeufG9ND8+s0+MkYTIDaKBOq3qgdGnA2T # OglmmVhcKaO5DKYwODzQRjY1fJy67sPV+Qp2+n4FG0DKkjXp1XrRtX8ArqmQqsV/ # AZwQsRb8zG4Y3G9i/qZQp7h7uJ0VP/4gDHXIIloTlRmQAOka1cKG8eOO7F/05QID # AQABo4IBEjCCAQ4wHwYDVR0jBBgwFoAUoBEKIz6W8Qfs4q8p74Klf9AwpLQwHQYD # VR0OBBYEFDLrkpr/NZZILyhAQnAgNpFcF4XmMA4GA1UdDwEB/wQEAwIBhjAPBgNV # HRMBAf8EBTADAQH/MBMGA1UdJQQMMAoGCCsGAQUFBwMDMBsGA1UdIAQUMBIwBgYE # VR0gADAIBgZngQwBBAEwQwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC5jb21v # ZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNAYIKwYBBQUHAQEE # KDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5jb21vZG9jYS5jb20wDQYJKoZI # hvcNAQEMBQADggEBABK/oe+LdJqYRLhpRrWrJAoMpIpnuDqBv0WKfVIHqI0fTiGF # OaNrXi0ghr8QuK55O1PNtPvYRL4G2VxjZ9RAFodEhnIq1jIV9RKDwvnhXRFAZ/ZC # J3LFI+ICOBpMIOLbAffNRk8monxmwFE2tokCVMf8WPtsAO7+mKYulaEMUykfb9gZ # pk+e96wJ6l2CxouvgKe9gUhShDHaMuwV5KZMPWw5c9QLhTkg4IUaaOGnSDip0TYl # d8GNGRbFiExmfS9jzpjoad+sPKhdnckcW67Y8y90z7h+9teDnRGWYpquRRPaf9xH # +9/DUp/mBlXpnYzyOmJRvOwkDynUWICE5EV7WtgwggYaMIIEAqADAgECAhBiHW0M # UgGeO5B5FSCJIRwKMA0GCSqGSIb3DQEBDAUAMFYxCzAJBgNVBAYTAkdCMRgwFgYD # VQQKEw9TZWN0aWdvIExpbWl0ZWQxLTArBgNVBAMTJFNlY3RpZ28gUHVibGljIENv # ZGUgU2lnbmluZyBSb290IFI0NjAeFw0yMTAzMjIwMDAwMDBaFw0zNjAzMjEyMzU5 # NTlaMFQxCzAJBgNVBAYTAkdCMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxKzAp # BgNVBAMTIlNlY3RpZ28gUHVibGljIENvZGUgU2lnbmluZyBDQSBSMzYwggGiMA0G # CSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCbK51T+jU/jmAGQ2rAz/V/9shTUxjI # ztNsfvxYB5UXeWUzCxEeAEZGbEN4QMgCsJLZUKhWThj/yPqy0iSZhXkZ6Pg2A2NV # DgFigOMYzB2OKhdqfWGVoYW3haT29PSTahYkwmMv0b/83nbeECbiMXhSOtbam+/3 # 6F09fy1tsB8je/RV0mIk8XL/tfCK6cPuYHE215wzrK0h1SWHTxPbPuYkRdkP05Zw # mRmTnAO5/arnY83jeNzhP06ShdnRqtZlV59+8yv+KIhE5ILMqgOZYAENHNX9SJDm # +qxp4VqpB3MV/h53yl41aHU5pledi9lCBbH9JeIkNFICiVHNkRmq4TpxtwfvjsUe # dyz8rNyfQJy/aOs5b4s+ac7IH60B+Ja7TVM+EKv1WuTGwcLmoU3FpOFMbmPj8pz4 # 4MPZ1f9+YEQIQty/NQd/2yGgW+ufflcZ/ZE9o1M7a5Jnqf2i2/uMSWymR8r2oQBM # dlyh2n5HirY4jKnFH/9gRvd+QOfdRrJZb1sCAwEAAaOCAWQwggFgMB8GA1UdIwQY # MBaAFDLrkpr/NZZILyhAQnAgNpFcF4XmMB0GA1UdDgQWBBQPKssghyi47G9IritU # pimqF6TNDDAOBgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADATBgNV # HSUEDDAKBggrBgEFBQcDAzAbBgNVHSAEFDASMAYGBFUdIAAwCAYGZ4EMAQQBMEsG # A1UdHwREMEIwQKA+oDyGOmh0dHA6Ly9jcmwuc2VjdGlnby5jb20vU2VjdGlnb1B1 # YmxpY0NvZGVTaWduaW5nUm9vdFI0Ni5jcmwwewYIKwYBBQUHAQEEbzBtMEYGCCsG # AQUFBzAChjpodHRwOi8vY3J0LnNlY3RpZ28uY29tL1NlY3RpZ29QdWJsaWNDb2Rl # U2lnbmluZ1Jvb3RSNDYucDdjMCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5zZWN0 # aWdvLmNvbTANBgkqhkiG9w0BAQwFAAOCAgEABv+C4XdjNm57oRUgmxP/BP6YdURh # w1aVcdGRP4Wh60BAscjW4HL9hcpkOTz5jUug2oeunbYAowbFC2AKK+cMcXIBD0Zd # OaWTsyNyBBsMLHqafvIhrCymlaS98+QpoBCyKppP0OcxYEdU0hpsaqBBIZOtBajj # cw5+w/KeFvPYfLF/ldYpmlG+vd0xqlqd099iChnyIMvY5HexjO2AmtsbpVn0OhNc # WbWDRF/3sBp6fWXhz7DcML4iTAWS+MVXeNLj1lJziVKEoroGs9Mlizg0bUMbOalO # hOfCipnx8CaLZeVme5yELg09Jlo8BMe80jO37PU8ejfkP9/uPak7VLwELKxAMcJs # zkyeiaerlphwoKx1uHRzNyE6bxuSKcutisqmKL5OTunAvtONEoteSiabkPVSZ2z7 # 6mKnzAfZxCl/3dq3dUNw4rg3sTCggkHSRqTqlLMS7gjrhTqBmzu1L90Y1KWN/Y5J # KdGvspbOrTfOXyXvmPL6E52z1NZJ6ctuMFBQZH3pwWvqURR8AgQdULUvrxjUYbHH # j95Ejza63zdrEcxWLDX6xWls/GDnVNueKjWUH3fTv1Y8Wdho698YADR7TNx8X8z2 # Bev6SivBBOHY+uqiirZtg0y9ShQoPzmCcn63Syatatvx157YK9hlcPmVoa1oDE5/ # L9Uo2bC5a4CH2RwwggZUMIIEvKADAgECAhBQGj1MeADxcRs/FOU26uyrMA0GCSqG # SIb3DQEBDAUAMFQxCzAJBgNVBAYTAkdCMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0 # ZWQxKzApBgNVBAMTIlNlY3RpZ28gUHVibGljIENvZGUgU2lnbmluZyBDQSBSMzYw # HhcNMjExMjAzMDAwMDAwWhcNMjQxMjAyMjM1OTU5WjBYMQswCQYDVQQGEwJVUzEV # MBMGA1UECAwMUGVubnN5bHZhbmlhMRgwFgYDVQQKDA9NU1BCeXRlcywgQ29ycC4x # GDAWBgNVBAMMD01TUEJ5dGVzLCBDb3JwLjCCAiIwDQYJKoZIhvcNAQEBBQADggIP # ADCCAgoCggIBAKNUOYUGihQGjTJdJ6k5Fm3+6QJGhj2wUbubiiqxJeqmW6616o5e # ExwiGSxPOqafJzOJNq0XOigb3OQhtdIR4bG38+JghFt8rZe/DxBmPBZDR9bD1hrk # 9vY714QhqvhIlUDXHnDUc9pnVGFfI945hRgaFHL77GQAEFyMvjNupOvT674/E8rI # gYKMQBwY0cqiuRQwr3FnRMmNhd8/5mqrZGglDT1JizOnpfFVgNJ0x4ev7mPYIF6T # rFGPwHsOOujzydmGgqvtGASEuz74A6arzYrhbjXv8XsEdT2tz6hHIpMwsgWMk6BD # KDCsSIl5oEmVbQNXKrC0k62/XpbWRd+i350k07kl1bdV+nbi1K62TyS+7eVxehC1 # gFp+Knob1aqAJD9sPBLdbN3E4FOB/rvOLP1i2IxAcTGirAyRkkUriD4LUSWO6pju # Qv2V4ZU/+K/3ZLXYCbIflzpDq6z9FmazK5csv99Coslv9s6lm9s1RRxgRBj5sn1q # Xe/5l0VbF7tG/cgBvt8aJBD0u8knujI17lDy1TGA77r/KKj65xSsxC6nm0RA9pTw # 0tz5OQ4ABYrH6TpdUBJz8m8cFgPipvyohN0RdE7InB3Nao11L1UHlnnL0SG1z5qQ # YU7BhvfiSu44pSY9/uTPmAPlNIj3MO5utjfMD+MX9u86d8h/DWwrvQZzAgMBAAGj # ggGcMIIBmDAfBgNVHSMEGDAWgBQPKssghyi47G9IritUpimqF6TNDDAdBgNVHQ4E # FgQU7XGG9N0fpUpnonmgh6+IzR3lGj0wDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB # /wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwMwEQYJYIZIAYb4QgEBBAQDAgQQMEoG # A1UdIARDMEEwNQYMKwYBBAGyMQECAQMCMCUwIwYIKwYBBQUHAgEWF2h0dHBzOi8v # c2VjdGlnby5jb20vQ1BTMAgGBmeBDAEEATBJBgNVHR8EQjBAMD6gPKA6hjhodHRw # Oi8vY3JsLnNlY3RpZ28uY29tL1NlY3RpZ29QdWJsaWNDb2RlU2lnbmluZ0NBUjM2 # LmNybDB5BggrBgEFBQcBAQRtMGswRAYIKwYBBQUHMAKGOGh0dHA6Ly9jcnQuc2Vj # dGlnby5jb20vU2VjdGlnb1B1YmxpY0NvZGVTaWduaW5nQ0FSMzYuY3J0MCMGCCsG # AQUFBzABhhdodHRwOi8vb2NzcC5zZWN0aWdvLmNvbTANBgkqhkiG9w0BAQwFAAOC # AYEAhLlUlrWxmB3MSCX9LcaY3p6jCnaeFR4chgRmhjdH+Gy5UyFpEq1/3X/Pv2Ih # GGnX0uVbXsQ90D/CwFk7bXCFUUblu4ldzNqjmnf+lcTtv/WJR9FTS9t79WdiWbuN # /YIEXVDERUGPC7v55aaJvXJbDS+4vYeJPAHl2xsvbARWui1nwBLOSVGTGk6T2Q6s # BnlHFToFc4UFtMhYUMf8L03jypocNGM9z6yamsOANd/dXt582U5DD0g7SVS2pyHD # Ot7UvVq6769TGZNwq9s1tFwQjm3IGz4DIO1ADMwoGLzqqalYQ1xq2JAqUq41hSlN # YHecLTjAOTwA81wv71XbZdARR0DfmpqdzdKkTbVucWhJFWL7clDQ0WzfAx1/ZsjR # t6X9p+XuLnJPMD3V5swX52ZCcB6LY3FyK7kgwNseH+Xqo+Ln7OtAs3Bwa/Cm9lbL # xYs8wkDitxFnpKFstyE7EE+wtEJkyszfLqjkmUCw/hjzX6I40hahbPCxaxdlv8+3 # drczMYIaUzCCGk8CAQEwaDBUMQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGln # byBMaW1pdGVkMSswKQYDVQQDEyJTZWN0aWdvIFB1YmxpYyBDb2RlIFNpZ25pbmcg # Q0EgUjM2AhBQGj1MeADxcRs/FOU26uyrMA0GCWCGSAFlAwQCAQUAoHwwEAYKKwYB # BAGCNwIBDDECMAAwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGC # NwIBCzEOMAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIEIP03INCcQKF8dEfg # aAT1Mp90Beh7JK2qmJuBQFxKGsi3MA0GCSqGSIb3DQEBAQUABIICAHwF3C3A04Yg # TK6ZyZkIG2eflHpAh0SDh4LGe+wslbCeJ2fDrz/gWsRQOb4vt+fiAlXcpGyE0YrY # 7La1/TtZ7qJrEq6RnRwobTO4uCZNpSgHdHSf47qd/OzvZ4bn41biUTsLhqQCPIrF # CPzne0O89bIuiKzyzdoM0NMw0B+f6kskB9VI7ZoygKtW7ivzmmGwH1/95uzTJT7v # BXirNn4l2AGhPC6xbo5G5cECxNseAhLHFIBFQBD8/i3RRW6Pz1xFF2rpuvpH77q+ # Zl+IjbBFFKXCE8ZkG34iAv9w0aLizEswWwrxfPECjW1Gk5dPETQq8qsqJCriEbsU # KnY56/zmbmVFC9PfGTzkRgh2VWXd3GqO8yUNa6MomsHBVHX/qs6IQZT6GBVJX0/A # Pgw0irIyT0Ee03w0j276lCJ2UkDlyqTUm0QC6uqwjY43gBFsWLZcUD9MOZA4GaIz # Yg818+ErEfad5FGFN0Zl+H9wrwN40KecKQBn1ZsuIq6UK/GA++Sk7LL+H8YOnvXO # crodIYwkkCukwjZf2IdZQBDxFfyffTUb9pRJPyCBFpeA6QsNRYZLH20d9P/h0myk # p6ZWzvhtW9fJ/JkacDahv7pPk0ogMMUGouKr+fYz0BIumGb6KW83wJWfkP5o+Ztp # ycKl4JQ/k47dmDSrCl0IpOQSmT5qKmUboYIXPjCCFzoGCisGAQQBgjcDAwExghcq # MIIXJgYJKoZIhvcNAQcCoIIXFzCCFxMCAQMxDzANBglghkgBZQMEAgEFADB4Bgsq # hkiG9w0BCRABBKBpBGcwZQIBAQYJYIZIAYb9bAcBMDEwDQYJYIZIAWUDBAIBBQAE # IC7XiDN6fl70PMsqbdc6FbeR2JjaIKVjrnvy9s5IiEI3AhEA+6xc6YGxGDVRp2ut # z4Te0RgPMjAyMzA1MTAxNzA0MzJaoIITBzCCBsAwggSooAMCAQICEAxNaXJLlPo8 # Kko9KQeAPVowDQYJKoZIhvcNAQELBQAwYzELMAkGA1UEBhMCVVMxFzAVBgNVBAoT # DkRpZ2lDZXJ0LCBJbmMuMTswOQYDVQQDEzJEaWdpQ2VydCBUcnVzdGVkIEc0IFJT # QTQwOTYgU0hBMjU2IFRpbWVTdGFtcGluZyBDQTAeFw0yMjA5MjEwMDAwMDBaFw0z # MzExMjEyMzU5NTlaMEYxCzAJBgNVBAYTAlVTMREwDwYDVQQKEwhEaWdpQ2VydDEk # MCIGA1UEAxMbRGlnaUNlcnQgVGltZXN0YW1wIDIwMjIgLSAyMIICIjANBgkqhkiG # 9w0BAQEFAAOCAg8AMIICCgKCAgEAz+ylJjrGqfJru43BDZrboegUhXQzGias0BxV # Hh42bbySVQxh9J0Jdz0Vlggva2Sk/QaDFteRkjgcMQKW+3KxlzpVrzPsYYrppijb # kGNcvYlT4DotjIdCriak5Lt4eLl6FuFWxsC6ZFO7KhbnUEi7iGkMiMbxvuAvfTux # ylONQIMe58tySSgeTIAehVbnhe3yYbyqOgd99qtu5Wbd4lz1L+2N1E2VhGjjgMtq # edHSEJFGKes+JvK0jM1MuWbIu6pQOA3ljJRdGVq/9XtAbm8WqJqclUeGhXk+DF5m # jBoKJL6cqtKctvdPbnjEKD+jHA9QBje6CNk1prUe2nhYHTno+EyREJZ+TeHdwq2l # fvgtGx/sK0YYoxn2Off1wU9xLokDEaJLu5i/+k/kezbvBkTkVf826uV8MefzwlLE # 5hZ7Wn6lJXPbwGqZIS1j5Vn1TS+QHye30qsU5Thmh1EIa/tTQznQZPpWz+D0CuYU # bWR4u5j9lMNzIfMvwi4g14Gs0/EH1OG92V1LbjGUKYvmQaRllMBY5eUuKZCmt2Fk # +tkgbBhRYLqmgQ8JJVPxvzvpqwcOagc5YhnJ1oV/E9mNec9ixezhe7nMZxMHmsF4 # 7caIyLBuMnnHC1mDjcbu9Sx8e47LZInxscS451NeX1XSfRkpWQNO+l3qRXMchH7X # zuLUOncCAwEAAaOCAYswggGHMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAA # MBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMIMCAGA1UdIAQZMBcwCAYGZ4EMAQQCMAsG # CWCGSAGG/WwHATAfBgNVHSMEGDAWgBS6FtltTYUvcyl2mi91jGogj57IbzAdBgNV # HQ4EFgQUYore0GH8jzEU7ZcLzT0qlBTfUpwwWgYDVR0fBFMwUTBPoE2gS4ZJaHR0 # cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZEc0UlNBNDA5NlNI # QTI1NlRpbWVTdGFtcGluZ0NBLmNybDCBkAYIKwYBBQUHAQEEgYMwgYAwJAYIKwYB # BQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBYBggrBgEFBQcwAoZMaHR0 # cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZEc0UlNBNDA5 # NlNIQTI1NlRpbWVTdGFtcGluZ0NBLmNydDANBgkqhkiG9w0BAQsFAAOCAgEAVaoq # GvNG83hXNzD8deNP1oUj8fz5lTmbJeb3coqYw3fUZPwV+zbCSVEseIhjVQlGOQD8 # adTKmyn7oz/AyQCbEx2wmIncePLNfIXNU52vYuJhZqMUKkWHSphCK1D8G7WeCDAJ # +uQt1wmJefkJ5ojOfRu4aqKbwVNgCeijuJ3XrR8cuOyYQfD2DoD75P/fnRCn6wC6 # X0qPGjpStOq/CUkVNTZZmg9U0rIbf35eCa12VIp0bcrSBWcrduv/mLImlTgZiEQU # 5QpZomvnIj5EIdI/HMCb7XxIstiSDJFPPGaUr10CU+ue4p7k0x+GAWScAMLpWnR1 # DT3heYi/HAGXyRkjgNc2Wl+WFrFjDMZGQDvOXTXUWT5Dmhiuw8nLw/ubE19qtcfg # 8wXDWd8nYiveQclTuf80EGf2JjKYe/5cQpSBlIKdrAqLxksVStOYkEVgM4DgI974 # A6T2RUflzrgDQkfoQTZxd639ouiXdE4u2h4djFrIHprVwvDGIqhPm73YHJpRxC+a # 9l+nJ5e6li6FV8Bg53hWf2rvwpWaSxECyIKcyRoFfLpxtU56mWz06J7UWpjIn7+N # uxhcQ/XQKujiYu54BNu90ftbCqhwfvCXhHjjCANdRyxjqCU4lwHSPzra5eX25pvc # fizM/xdMTQCi2NYBDriL7ubgclWJLCcZYfZ3AYwwggauMIIElqADAgECAhAHNje3 # JFR82Ees/ShmKl5bMA0GCSqGSIb3DQEBCwUAMGIxCzAJBgNVBAYTAlVTMRUwEwYD # VQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAf # BgNVBAMTGERpZ2lDZXJ0IFRydXN0ZWQgUm9vdCBHNDAeFw0yMjAzMjMwMDAwMDBa # Fw0zNzAzMjIyMzU5NTlaMGMxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2Vy # dCwgSW5jLjE7MDkGA1UEAxMyRGlnaUNlcnQgVHJ1c3RlZCBHNCBSU0E0MDk2IFNI # QTI1NiBUaW1lU3RhbXBpbmcgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK # AoICAQDGhjUGSbPBPXJJUVXHJQPE8pE3qZdRodbSg9GeTKJtoLDMg/la9hGhRBVC # X6SI82j6ffOciQt/nR+eDzMfUBMLJnOWbfhXqAJ9/UO0hNoR8XOxs+4rgISKIhjf # 69o9xBd/qxkrPkLcZ47qUT3w1lbU5ygt69OxtXXnHwZljZQp09nsad/ZkIdGAHvb # REGJ3HxqV3rwN3mfXazL6IRktFLydkf3YYMZ3V+0VAshaG43IbtArF+y3kp9zvU5 # EmfvDqVjbOSmxR3NNg1c1eYbqMFkdECnwHLFuk4fsbVYTXn+149zk6wsOeKlSNbw # sDETqVcplicu9Yemj052FVUmcJgmf6AaRyBD40NjgHt1biclkJg6OBGz9vae5jtb # 7IHeIhTZgirHkr+g3uM+onP65x9abJTyUpURK1h0QCirc0PO30qhHGs4xSnzyqqW # c0Jon7ZGs506o9UD4L/wojzKQtwYSH8UNM/STKvvmz3+DrhkKvp1KCRB7UK/BZxm # SVJQ9FHzNklNiyDSLFc1eSuo80VgvCONWPfcYd6T/jnA+bIwpUzX6ZhKWD7TA4j+ # s4/TXkt2ElGTyYwMO1uKIqjBJgj5FBASA31fI7tk42PgpuE+9sJ0sj8eCXbsq11G # deJgo1gJASgADoRU7s7pXcheMBK9Rp6103a50g5rmQzSM7TNsQIDAQABo4IBXTCC # AVkwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUuhbZbU2FL3MpdpovdYxq # II+eyG8wHwYDVR0jBBgwFoAU7NfjgtJxXWRM3y5nP+e6mK4cD08wDgYDVR0PAQH/ # BAQDAgGGMBMGA1UdJQQMMAoGCCsGAQUFBwMIMHcGCCsGAQUFBwEBBGswaTAkBggr # BgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEEGCCsGAQUFBzAChjVo # dHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVkUm9vdEc0 # LmNydDBDBgNVHR8EPDA6MDigNqA0hjJodHRwOi8vY3JsMy5kaWdpY2VydC5jb20v # RGlnaUNlcnRUcnVzdGVkUm9vdEc0LmNybDAgBgNVHSAEGTAXMAgGBmeBDAEEAjAL # BglghkgBhv1sBwEwDQYJKoZIhvcNAQELBQADggIBAH1ZjsCTtm+YqUQiAX5m1tgh # QuGwGC4QTRPPMFPOvxj7x1Bd4ksp+3CKDaopafxpwc8dB+k+YMjYC+VcW9dth/qE # ICU0MWfNthKWb8RQTGIdDAiCqBa9qVbPFXONASIlzpVpP0d3+3J0FNf/q0+KLHqr # hc1DX+1gtqpPkWaeLJ7giqzl/Yy8ZCaHbJK9nXzQcAp876i8dU+6WvepELJd6f8o # VInw1YpxdmXazPByoyP6wCeCRK6ZJxurJB4mwbfeKuv2nrF5mYGjVoarCkXJ38SN # oOeY+/umnXKvxMfBwWpx2cYTgAnEtp/Nh4cku0+jSbl3ZpHxcpzpSwJSpzd+k1Os # Ox0ISQ+UzTl63f8lY5knLD0/a6fxZsNBzU+2QJshIUDQtxMkzdwdeDrknq3lNHGS # 1yZr5Dhzq6YBT70/O3itTK37xJV77QpfMzmHQXh6OOmc4d0j/R0o08f56PGYX/sr # 2H7yRp11LB4nLCbbbxV7HhmLNriT1ObyF5lZynDwN7+YAN8gFk8n+2BnFqFmut1V # wDophrCYoCvtlUG3OtUVmDG0YgkPCr2B2RP+v6TR81fZvAT6gt4y3wSJ8ADNXcL5 # 0CN/AAvkdgIm2fBldkKmKYcJRyvmfxqkhQ/8mJb2VVQrH4D6wPIOK+XW+6kvRBVK # 5xMOHds3OBqhK/bt1nz8MIIFjTCCBHWgAwIBAgIQDpsYjvnQLefv21DiCEAYWjAN # BgkqhkiG9w0BAQwFADBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQg # SW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2Vy # dCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMjIwODAxMDAwMDAwWhcNMzExMTA5MjM1 # OTU5WjBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYD # VQQLExB3d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVk # IFJvb3QgRzQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN67 # 5F1KPDAiMGkz7MKnJS7JIT3yithZwuEppz1Yq3aaza57G4QNxDAf8xukOBbrVsaX # bR2rsnnyyhHS5F/WBTxSD1Ifxp4VpX6+n6lXFllVcq9ok3DCsrp1mWpzMpTREEQQ # Lt+C8weE5nQ7bXHiLQwb7iDVySAdYyktzuxeTsiT+CFhmzTrBcZe7FsavOvJz82s # NEBfsXpm7nfISKhmV1efVFiODCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4Da # tpGYQJB5w3jHtrHEtWoYOAMQjdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwh # TNS8rhsDdV14Ztk6MUSaM0C/CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98Fp # iHaYdj1ZXUJ2h4mXaXpI8OCiEhtmmnTK3kse5w5jrubU75KSOp493ADkRSWJtppE # GSt+wJS00mFt6zPZxd9LBADMfRyVw4/3IbKyEbe7f/LVjHAsQWCqsWMYRJUadmJ+ # 9oCw++hkpjPRiQfhvbfmQ6QYuKZ3AeEPlAwhHbJUKSWJbOUOUlFHdL4mrLZBdd56 # rF+NP8m800ERElvlEFDrMcXKchYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8 # oR7FwI+isX4KJpn15GkvmB0t9dmpsh3lGwIDAQABo4IBOjCCATYwDwYDVR0TAQH/ # BAUwAwEB/zAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wHwYDVR0jBBgw # FoAUReuir/SSy4IxLVGLp6chnfNtyA8wDgYDVR0PAQH/BAQDAgGGMHkGCCsGAQUF # BwEBBG0wazAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMG # CCsGAQUFBzAChjdodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRB # c3N1cmVkSURSb290Q0EuY3J0MEUGA1UdHwQ+MDwwOqA4oDaGNGh0dHA6Ly9jcmwz # LmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcmwwEQYDVR0g # BAowCDAGBgRVHSAAMA0GCSqGSIb3DQEBDAUAA4IBAQBwoL9DXFXnOF+go3QbPbYW # 1/e/Vwe9mqyhhyzshV6pGrsi+IcaaVQi7aSId229GhT0E0p6Ly23OO/0/4C5+KH3 # 8nLeJLxSA8hO0Cre+i1Wz/n096wwepqLsl7Uz9FDRJtDIeuWcqFItJnLnU+nBgMT # dydE1Od/6Fmo8L8vC6bp8jQ87PcDx4eo0kxAGTVGamlUsLihVo7spNU96LHc/RzY # 9HdaXFSMb++hUD38dglohJ9vytsgjTVgHAIDyyCwrFigDkBjxZgiwbJZ9VVrzyer # bHbObyMt9H5xaiNrIv8SuFQtJ37YOtnwtoeW/VvRXKwYw02fc7cBqZ9Xql4o4rmU # MYIDdjCCA3ICAQEwdzBjMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQs # IEluYy4xOzA5BgNVBAMTMkRpZ2lDZXJ0IFRydXN0ZWQgRzQgUlNBNDA5NiBTSEEy # NTYgVGltZVN0YW1waW5nIENBAhAMTWlyS5T6PCpKPSkHgD1aMA0GCWCGSAFlAwQC # AQUAoIHRMBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUx # DxcNMjMwNTEwMTcwNDMyWjArBgsqhkiG9w0BCRACDDEcMBowGDAWBBTzhyJNhjOC # kjWplLy9j5bp/hx8czAvBgkqhkiG9w0BCQQxIgQg7BiusC/jQQrFcPC86uw3sAaa # eWb6BeqlkIFevXSZwj0wNwYLKoZIhvcNAQkQAi8xKDAmMCQwIgQgx/ThvjIoiSCr # 4iY6vhrE/E/meBwtZNBMgHVXoCO1tvowDQYJKoZIhvcNAQEBBQAEggIAlGKXeNaU # JqBuD9qc4X5QreZQBajpdT6MQHTHY9wA2hpskuICIvk98ZbnDRnk1vIX9WnuaHav # 41E3jz3EB6lijWAgHr/UPBL5olSlAXCa+6l+n5Qw3cYTLczh7WtxfguYAUTyWX8h # JDXHTVi0F2tnIZSVnH1Yg9Rv0TrbW/QtjnPM/T/xxbVcPbh2y8NP+bDayjU6Howl # 1uwLJ58HZzMdXCww47enhxQO9CpOGZ9MgE7DpjZu7I/JJ4c9GQ4nOYQ7LzBjgzeW # jXqQ6eurbIiImia8D+xjrnJ7vSbKR6adR55EwVfW8blm5id93MdbHuTwFokY5HQt # yzsRLpimuhLXPz7bOF/55rmf97odq+v3MaaMoQZkAGCUaEjuF6hunvB5cqkd6TI/ # b7quxU+H9QtQOr/vYizXmsX3Rtxq8TP1IU0Jl1VOKKq21aid24lxFtYIJophNETB # ZxZ2+lq7oFzdWS6W3H0NgDN09ImGJT1oX641QgvfL2HSncvrddOh4PRALi70CBRO # J0owpjCKwiX5en+APV5s6nT7pwV1DYNchMmXRjAKigXYU6tuKPdXeIpuP2h6HXz+ # vhqkp05jM6+izqbYudlIFIO8TbPyT3XRfxLkrHhxKtYdcJ2FeSzc2wOCZDXCwRsi # DZmhIZfeZet4Oyc+f10I2XrjEgXZv43d+mo= # SIG # End signature block |