PSSwagger.Constants.ps1
######################################################################################### # # Copyright (c) Microsoft Corporation. All rights reserved. # # Licensed under the MIT license. # # PSSwagger Module # ######################################################################################### $helpDescStr = @' .SYNOPSIS $synopsis .DESCRIPTION $description '@ $parameterAttributeString = '[Parameter(Mandatory = $isParamMandatory$ParameterSetPropertyString)]' $parameterDefString = @' $AllParameterSetsString$ValidateSetDefinition $paramType$paramName$parameterDefaultValueOption, '@ $parameterDefaultValueString = ' = $parameterDefaultValue' $DynamicAssemblyGenerationBlock = @' `$dllFullName = Join-Path -Path `$ClrPath -ChildPath '$DllFileName' if(-not (Test-Path -Path `$dllFullName -PathType Leaf)) { . (Join-Path -Path `$PSScriptRoot -ChildPath 'AssemblyGenerationHelpers.ps1') New-SDKAssembly -AssemblyFileName '$DllFileName' -IsAzureSDK:`$$UseAzureCSharpGenerator } '@ $RootModuleContents = @' Microsoft.PowerShell.Core\Set-StrictMode -Version Latest # If the user supplied -Prefix to Import-Module, that applies to the nested module as well # Force import the nested module again without -Prefix if (-not (Get-Command Get-OperatingSystemInfo -Module PSSwaggerUtility -ErrorAction Ignore)) { Import-Module PSSwaggerUtility -Force } if ((Get-OperatingSystemInfo).IsCore) { $testCoreModuleRequirements`$clr = 'coreclr' } else { $testFullModuleRequirements`$clr = 'fullclr' } `$ClrPath = Join-Path -Path `$PSScriptRoot -ChildPath 'ref' | Join-Path -ChildPath `$clr $DynamicAssemblyGenerationCode `$allDllsPath = Join-Path -Path `$ClrPath -ChildPath '*.dll' if (Test-Path -Path `$ClrPath -PathType Container) { Get-ChildItem -Path `$allDllsPath -File | ForEach-Object { Add-Type -Path `$_.FullName -ErrorAction SilentlyContinue } } . (Join-Path -Path `$PSScriptRoot -ChildPath 'New-ServiceClient.ps1') `$allPs1FilesPath = Join-Path -Path `$PSScriptRoot -ChildPath '$GeneratedCommandsName' | Join-Path -ChildPath '*.ps1' Get-ChildItem -Path `$allPs1FilesPath -Recurse -File | ForEach-Object { . `$_.FullName} '@ $advFnSignatureForDefintion = @' <# $commandHelp $paramHelp #> function $commandName { param($paramblock ) $body } '@ $AsJobParameterString = @' [Parameter(Mandatory = $false)] [switch] $AsJob '@ $advFnSignatureForPath = @' <# $commandHelp $paramHelp #> function $commandName { $outputTypeBlock[CmdletBinding(DefaultParameterSetName='$DefaultParameterSetName')] param($ParamBlockReplaceStr ) Begin { $dependencyInitFunction `$tracerObject = `$null if (('continue' -eq `$DebugPreference) -or ('inquire' -eq `$DebugPreference)) { `$oldDebugPreference = `$global:DebugPreference `$global:DebugPreference = "continue" `$tracerObject = New-PSSwaggerClientTracing Register-PSSwaggerClientTracing -TracerObject `$tracerObject } } Process { $body $PathFunctionBody } End { if (`$tracerObject) { `$global:DebugPreference = `$oldDebugPreference Unregister-PSSwaggerClientTracing -TracerObject `$tracerObject } } } '@ $helpParamStr = @' .PARAMETER $parameterName $pDescription '@ $oDataExpressionBlockStr = @' `$oDataQuery = "" $oDataExpression `$oDataQuery = `$oDataQuery.Trim("&") '@ $parameterGroupCreateExpression = @' `$$groupName = New-Object -TypeName $fullGroupName '@ $parameterGroupPropertyExpression = @' if (`$PSBoundParameters.ContainsKey('$parameterGroupPropertyName')) { `$$groupName.$parameterGroupPropertyName = `$$parameterGroupPropertyName } '@ $constructFlattenedParameter = @' `$flattenedParameters = $flattenedParametersListStr `$utilityCmdParams = @{} `$flattenedParameters | ForEach-Object { if(`$PSBoundParameters.ContainsKey(`$_)) { `$utilityCmdParams[`$_] = `$PSBoundParameters[`$_] } } `$$SwaggerOperationParameterName = New-$($FlattenedParamType)Object @utilityCmdParams '@ $functionBodyStr = @' `$ErrorActionPreference = 'Stop' `$NewServiceClient_params = @{ FullClientTypeName = '$FullClientTypeName' } $( if($AuthenticationCommand){ " `$NewServiceClient_params['AuthenticationCommand'] = @' $AuthenticationCommand `'@ " if($AuthenticationCommandArgumentName){ " `$NewServiceClient_params['AuthenticationCommandArgumentList'] = `$$AuthenticationCommandArgumentName" } } if($AddHttpClientHandler){ " `$NewServiceClient_params['AddHttpClientHandler'] = `$true `$NewServiceClient_params['Credential'] = `$Credential" } if($hostOverrideCommand){ " `$NewServiceClient_params['HostOverrideCommand'] = @' $hostOverrideCommand `'@" } if($GlobalParameters) { ' $GlobalParameterHashtable = @{} ' foreach($parameter in $GlobalParameters) { " `$GlobalParameterHashtable['$parameter'] = `$null if(`$PSBoundParameters.ContainsKey('$parameter')) { `$GlobalParameterHashtable['$parameter'] = `$PSBoundParameters['$parameter'] } " } " `$NewServiceClient_params['GlobalParameterHashtable'] = `$GlobalParameterHashtable " } ) $clientName = New-ServiceClient @NewServiceClient_params $oDataExpressionBlock $parameterGroupsExpressionBlock $flattenedParametersBlock `$skippedCount = 0 `$returnedCount = 0 $parameterSetBasedMethodStr else { Write-Verbose -Message 'Failed to map parameter set to operation method.' throw 'Module failed to find operation to execute.' } '@ $parameterSetBasedMethodStrIfCase = @' if ('$operationId' -eq `$PsCmdlet.ParameterSetName) { $additionalConditionStart$methodBlock$additionalConditionEnd } '@ $parameterSetBasedMethodStrElseIfCase = @' elseif ('$operationId' -eq `$PsCmdlet.ParameterSetName ) { $additionalConditionStart$methodBlock$additionalConditionEnd } '@ $methodBlockFunctionCall = @' Write-Verbose -Message 'Performing operation $methodName on $clientName.' `$taskResult = $clientName$operations.$methodName($ParamList) '@ $methodBlockCmdletCall = @' Write-Verbose -Message 'Calling cmdlet $Cmdlet.' $Cmdlet $CmdletArgs `$taskResult = `$null '@ $getTaskResultBlock = @' `$result = `$null `$ErrorActionPreference = 'Stop' `$null = `$taskResult.AsyncWaitHandle.WaitOne() Write-Debug -Message "`$(`$taskResult | Out-String)" if((Get-Member -InputObject `$taskResult -Name 'Result') -and `$taskResult.Result -and (Get-Member -InputObject `$taskResult.Result -Name 'Body') -and `$taskResult.Result.Body) { Write-Verbose -Message 'Operation completed successfully.' `$result = `$taskResult.Result.Body Write-Debug -Message "`$(`$result | Out-String)" $resultBlockStr } elseif(`$taskResult.IsFaulted) { Write-Verbose -Message 'Operation failed.' if (`$taskResult.Exception) { if ((Get-Member -InputObject `$taskResult.Exception -Name 'InnerExceptions') -and `$taskResult.Exception.InnerExceptions) { foreach (`$ex in `$taskResult.Exception.InnerExceptions) { Write-Error -Exception `$ex } } elseif ((Get-Member -InputObject `$taskResult.Exception -Name 'InnerException') -and `$taskResult.Exception.InnerException) { Write-Error -Exception `$taskResult.Exception.InnerException } else { Write-Error -Exception `$taskResult.Exception } } } elseif (`$taskResult.IsCanceled) { Write-Verbose -Message 'Operation got cancelled.' Throw 'Operation got cancelled.' } else { Write-Verbose -Message 'Operation completed successfully.' } '@ $resultBlockWithSkipAndTop = @' if (`$result -is [$pageType]) { foreach (`$item in `$result) { if (`$skippedCount++ -lt `$Skip) { } else { if ((`$Top -eq -1) -or (`$returnedCount++ -lt `$Top)) { `$item } else { break } } } } else { `$result } '@ $resultBlockWithTop = @' if (`$result -is [$pageType]) { foreach (`$item in `$result) { if ((`$Top -eq -1) -or (`$returnedCount++ -lt `$Top)) { `$item } else { break } } } else { `$result } '@ $resultBlockWithSkip = @' if (`$result -is [$pageType]) { foreach (`$item in `$result) { if (`$skippedCount++ -lt `$Skip) { } else { `$item } } } else { `$result } '@ $resultBlockNoPaging = @' $result '@ $PathFunctionBodyAsJob = @' Write-Verbose -Message "Waiting for the operation to complete." `$PSSwaggerJobScriptBlock = { [CmdletBinding()] param( [Parameter(Mandatory = `$true)] [System.Threading.Tasks.Task] `$TaskResult ) if (`$TaskResult) { $getTaskResult $pagingBlock } } `$PSCommonParameters = Get-PSCommonParameter -CallerPSBoundParameters `$PSBoundParameters if(`$AsJob) { `$ScriptBlockParameters = New-Object -TypeName 'System.Collections.Generic.Dictionary[string,object]' `$ScriptBlockParameters['TaskResult'] = `$TaskResult `$ScriptBlockParameters['AsJob'] = `$AsJob `$PSCommonParameters.GetEnumerator() | ForEach-Object { `$ScriptBlockParameters[`$_.Name] = `$_.Value } Start-PSSwaggerJobHelper -ScriptBlock `$PSSwaggerJobScriptBlock `` -CallerPSBoundParameters `$ScriptBlockParameters `` -CallerPSCmdlet `$PSCmdlet `` @PSCommonParameters } else { Invoke-Command -ScriptBlock `$PSSwaggerJobScriptBlock `` -ArgumentList `$taskResult `` @PSCommonParameters } '@ $PathFunctionBodySynch = @' if (`$TaskResult) { $getTaskResult $pagingBlock } '@ $PagingBlockStrFunctionCallWithTop = @' Write-Verbose -Message 'Flattening paged results.' # Get the next page iff 1) there is a next page and 2) any result in the next page would be returned while (`$result -and (Get-Member -InputObject `$result -Name '$NextLinkName') -and `$result.'$NextLinkName' -and ((`$Top -eq -1) -or (`$returnedCount -lt `$Top))) { Write-Debug -Message "Retrieving next page: `$(`$result.'$NextLinkName')" `$taskResult = $clientName$pagingOperations.$pagingOperationName(`$result.'$NextLinkName') $getTaskResult } '@ $PagingBlockStrFunctionCall = @' Write-Verbose -Message 'Flattening paged results.' while (`$result -and (Get-Member -InputObject `$result -Name '$NextLinkName') -and `$result.'$NextLinkName') { Write-Debug -Message "Retrieving next page: `$(`$result.'$NextLinkName')" `$taskResult = $clientName$pagingOperations.$pagingOperationName(`$result.'$NextLinkName') $getTaskResult } '@ $PagingBlockStrCmdletCallWithTop = @' Write-Verbose -Message 'Flattening paged results.' # Get the next page iff 1) there is a next page and 2) any result in the next page would be returned while (`$result -and (Get-Member -InputObject `$result -Name '$NextLinkName') -and `$result.'$NextLinkName' -and ((`$Top -eq -1) -or (`$returnedCount -lt `$Top))) { Write-Debug -Message "Retrieving next page: `$(`$result.'$NextLinkName')" $Cmdlet $CmdletArgs } '@ $PagingBlockStrCmdletCall = @' Write-Verbose -Message 'Flattening paged results.' while (`$result -and (Get-Member -InputObject `$result -Name '$NextLinkName') -and `$result.'$NextLinkName') { Write-Debug -Message "Retrieving next page: `$(`$result.'$NextLinkName')" $Cmdlet $CmdletArgs } '@ $ValidateSetDefinitionString = @' [ValidateSet($ValidateSetString)] '@ $successReturn = @' Write-Verbose "Operation completed with return code: `$responseStatusCode." $result = $taskResult.Result.Body Write-Verbose -Message "$($result | Out-String)" $result '@ $responseBodySwitchCase = @' switch (`$responseStatusCode) { {200..299 -contains `$responseStatusCode} { $successReturn }$failWithDesc Default {Write-Error -Message "Status: `$responseStatusCode received."} } '@ $failCase = @' {`$responseStatusCode} { $responseStatusValue {$failureDescription} } '@ $outputTypeStr = @' [OutputType([$fullPathDataType])] '@ $createObjectStr = @' `$Object = New-Object -TypeName $DefinitionTypeName `$PSBoundParameters.GetEnumerator() | ForEach-Object { if(Get-Member -InputObject `$Object -Name `$_.Key -MemberType Property) { `$Object.`$(`$_.Key) = `$_.Value } } if(Get-Member -InputObject `$Object -Name Validate -MemberType Method) { `$Object.Validate() } return `$Object '@ $GeneratedCommandsName = 'Generated.PowerShell.Commands' $FormatViewDefinitionStr = @' <?xml version="1.0" encoding="utf-8" ?> {4} <Configuration> <ViewDefinitions> <View> <Name>{0}</Name> <ViewSelectedBy> <TypeName>{1}</TypeName> </ViewSelectedBy> <TableControl> <TableHeaders> {2} </TableHeaders> <TableRowEntries> <TableRowEntry> <TableColumnItems> {3} </TableColumnItems> </TableRowEntry> </TableRowEntries> </TableControl> </View> </ViewDefinitions> </Configuration> '@ $TableColumnItemStr = @' <TableColumnItem> <PropertyName>{0}</PropertyName> </TableColumnItem> '@ $TableColumnHeaderStr = @' <TableColumnHeader> <Width>{0}</Width> </TableColumnHeader> '@ $LastTableColumnHeaderStr = @' <TableColumnHeader/> '@ $DefaultGeneratedFileHeader = @' Code generated by Microsoft (R) PSSwagger {0} Changes may cause incorrect behavior and will be lost if the code is regenerated. '@ $PSCommentFormatString = "<# {0} #> " $XmlCommentFormatString = "<!-- {0} --> " $DefaultGeneratedFileHeaderWithoutVersion = @' Code generated by Microsoft (R) PSSwagger Changes may cause incorrect behavior and will be lost if the code is regenerated. '@ $MicrosoftApacheLicenseHeader = @' Copyright (c) Microsoft and contributors. All rights reserved. Licensed under the Apache License, Version 2.0 (the ""License""); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. '@ $MicrosoftMitLicenseHeader = @' Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT License. See License.txt in the project root for license information. '@ # SIG # Begin signature block # MIIarQYJKoZIhvcNAQcCoIIanjCCGpoCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB # gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR # AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUbkgL/UlcG5297ZBC169NLCLQ # bpqgghWAMIIEwjCCA6qgAwIBAgITMwAAALu2dyRxSiAAIAAAAAAAuzANBgkqhkiG # 9w0BAQUFADB3MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4G # A1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSEw # HwYDVQQDExhNaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EwHhcNMTYwOTA3MTc1ODQ3 # WhcNMTgwOTA3MTc1ODQ3WjCBsjELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp # bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw # b3JhdGlvbjEMMAoGA1UECxMDQU9DMScwJQYDVQQLEx5uQ2lwaGVyIERTRSBFU046 # MERFOC0yREM1LTNDQTkxJTAjBgNVBAMTHE1pY3Jvc29mdCBUaW1lLVN0YW1wIFNl # cnZpY2UwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC48+U38sLxQNu8 # OO1wnT9mKeHv+f/jxafTFXzx9VF59IK/n/jLv4HIXt8ucy3KjBTM5Jf6D0nQlI4h # Sizjrn6lO61q+V8oZiYYhjgR258rg8MDIrPpZMxK6OmD0d1wtksHW1cG21YKg5jg # idT2hmQBpiL9Cra3ccY5keu0kl6OfZFoj4DF0i0JRVFSy1C9gKP4H950XIjlA2Yo # TWN0LuHEHYMvwD1mOpAq2dVwPZh6xeNnpV8U/qLneyb9I/SqY/87tsZCn4FH7R3x # 0TgK2eRwpWXfwGbUb1R/UTLd20aQ+my4NWwSsndeG+0vsYwaF40heB2lo1ThmByr # OTBmEosTAgMBAAGjggEJMIIBBTAdBgNVHQ4EFgQUj9yNX+4+R8GZ7rcy4MdnJHXO # KkswHwYDVR0jBBgwFoAUIzT42VJGcArtQPt2+7MrsMM1sw8wVAYDVR0fBE0wSzBJ # oEegRYZDaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwvcHJvZHVjdHMv # TWljcm9zb2Z0VGltZVN0YW1wUENBLmNybDBYBggrBgEFBQcBAQRMMEowSAYIKwYB # BQUHMAKGPGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWljcm9z # b2Z0VGltZVN0YW1wUENBLmNydDATBgNVHSUEDDAKBggrBgEFBQcDCDANBgkqhkiG # 9w0BAQUFAAOCAQEAcMI8Q0PxQVvxZSD1fjszuD6VF/qPZjKZj9WLTjWjZT2k9lzG # yvSL7vy9J7lnyMATrbm5ptqAfdonNygLaBm05MnrIvgPJYK89wyTIyS1u71ro7z+ # EVrGPaKZiD+WvH8SWP+OWZQNf55fEL8tZo+a1oHm3lUARi5rR916OQvb4UnCENyV # g8IfmupnwpxHcmIBUWZtTKAuKmuX/c8G2z4KJ8WhruYjPDWYQXJrQ5t7PhZa19Ge # kOOtigge9EKIAWhZUJkw9fnfRm2IFX0gWtOzRXVNhR109ISacbNxd0oUboRYHmlq # wGrOz64/3SDdOeN7PjvLwFmThuoXIsxrjQD8ODCCBOswggPToAMCAQICEzMAAAF4 # JVq1zSPGX5UAAQAAAXgwDQYJKoZIhvcNAQEFBQAweTELMAkGA1UEBhMCVVMxEzAR # BgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1p # Y3Jvc29mdCBDb3Jwb3JhdGlvbjEjMCEGA1UEAxMaTWljcm9zb2Z0IENvZGUgU2ln # bmluZyBQQ0EwHhcNMTcwODExMjAxMTE1WhcNMTgwODExMjAxMTE1WjCBgjELMAkG # A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx # HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEMMAoGA1UECxMDQU9DMR4w # HAYDVQQDExVNaWNyb3NvZnQgQ29ycG9yYXRpb24wggEiMA0GCSqGSIb3DQEBAQUA # A4IBDwAwggEKAoIBAQCZbh1TVaudsrIbXUPPB9c8S+E+dKSbskHKYlG6SGTH8jhT # hpuvGiAO87F2b9GHVN+DvszaMkGy/xQgHaGEJLfpnb3kpakic7E0bjDHdG4KnHRb # no/wfUkGLfS79o+cw//RY8Ck6yE+0czDBcxp0Gbw5JyGP+KFqvzRR/3Tv3nt/5x0 # 5ZnEOHYP+eDVikDvn/DH+oxxtiCfX3tkvtm/yX4eOb47YdmYKQjCgz2+Nil/lupY # vU0QFIjvke3jshqQINDng/vO9ys2qA0ex/q5hlLKQTST99dGoM86Ge6F723ReToq # KnGLN8kiCG7uNapOAIQrpCHZq96CVumiaA5ZvxU9AgMBAAGjggFgMIIBXDATBgNV # HSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUjuhtD3FD7tk/RKloJFX05cpgLjcw # UQYDVR0RBEowSKRGMEQxDDAKBgNVBAsTA0FPQzE0MDIGA1UEBRMrMjI5ODAzKzFh # YmY5ZTVmLWNlZDAtNDJlNi1hNjVkLWQ5MzUwOTU5ZmUwZTAfBgNVHSMEGDAWgBTL # EejK0rQWWAHJNy4zFha5TJoKHzBWBgNVHR8ETzBNMEugSaBHhkVodHRwOi8vY3Js # Lm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNDb2RTaWdQQ0FfMDgt # MzEtMjAxMC5jcmwwWgYIKwYBBQUHAQEETjBMMEoGCCsGAQUFBzAChj5odHRwOi8v # d3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY0NvZFNpZ1BDQV8wOC0zMS0y # MDEwLmNydDANBgkqhkiG9w0BAQUFAAOCAQEAYnG/oHG/xgZYR8NAMHZ/vE9GM0e4 # 7YdhuTea2uY7pSGwM707wp8Wan0Fa6evK1PWfcd/XNOh2BpEv5o8RmKDoEsG0ECP # 13Jug7cklfKreBVHQ+Djg43VVFLZpuo7aOAVK6wjlcnpPUtn+SfH9K0aM2FjDKVJ # FW6XFKXBat5R+Zp6uOxWTxpSeMTeDC5zF6IY6ogR1uzU+9EQoRlAvkwX6po+exEL # nMLr4++P+fqOxIU+PODIoB8ijClAqwwKvLlMPa3qlrNHt+LweTMu7lvGC/RA18wU # zzXAeomuZ03blUw+bkOiVgWOk4S0RN7EnW7zjJV8gd/+G2dbToUi1cB/fTCCBbww # ggOkoAMCAQICCmEzJhoAAAAAADEwDQYJKoZIhvcNAQEFBQAwXzETMBEGCgmSJomT # 8ixkARkWA2NvbTEZMBcGCgmSJomT8ixkARkWCW1pY3Jvc29mdDEtMCsGA1UEAxMk # TWljcm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTEwMDgzMTIy # MTkzMloXDTIwMDgzMTIyMjkzMloweTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldh # c2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBD # b3Jwb3JhdGlvbjEjMCEGA1UEAxMaTWljcm9zb2Z0IENvZGUgU2lnbmluZyBQQ0Ew # ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCycllcGTBkvx2aYCAgQpl2 # U2w+G9ZvzMvx6mv+lxYQ4N86dIMaty+gMuz/3sJCTiPVcgDbNVcKicquIEn08Gis # TUuNpb15S3GbRwfa/SXfnXWIz6pzRH/XgdvzvfI2pMlcRdyvrT3gKGiXGqelcnNW # 8ReU5P01lHKg1nZfHndFg4U4FtBzWwW6Z1KNpbJpL9oZC/6SdCnidi9U3RQwWfjS # jWL9y8lfRjFQuScT5EAwz3IpECgixzdOPaAyPZDNoTgGhVxOVoIoKgUyt0vXT2Pn # 0i1i8UU956wIAPZGoZ7RW4wmU+h6qkryRs83PDietHdcpReejcsRj1Y8wawJXwPT # AgMBAAGjggFeMIIBWjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTLEejK0rQW # WAHJNy4zFha5TJoKHzALBgNVHQ8EBAMCAYYwEgYJKwYBBAGCNxUBBAUCAwEAATAj # BgkrBgEEAYI3FQIEFgQU/dExTtMmipXhmGA7qDFvpjy82C0wGQYJKwYBBAGCNxQC # BAweCgBTAHUAYgBDAEEwHwYDVR0jBBgwFoAUDqyCYEBWJ5flJRP8KuEKU5VZ5KQw # UAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraS9j # cmwvcHJvZHVjdHMvbWljcm9zb2Z0cm9vdGNlcnQuY3JsMFQGCCsGAQUFBwEBBEgw # RjBEBggrBgEFBQcwAoY4aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0 # cy9NaWNyb3NvZnRSb290Q2VydC5jcnQwDQYJKoZIhvcNAQEFBQADggIBAFk5Pn8m # Rq/rb0CxMrVq6w4vbqhJ9+tfde1MOy3XQ60L/svpLTGjI8x8UJiAIV2sPS9MuqKo # VpzjcLu4tPh5tUly9z7qQX/K4QwXaculnCAt+gtQxFbNLeNK0rxw56gNogOlVuC4 # iktX8pVCnPHz7+7jhh80PLhWmvBTI4UqpIIck+KUBx3y4k74jKHK6BOlkU7IG9KP # cpUqcW2bGvgc8FPWZ8wi/1wdzaKMvSeyeWNWRKJRzfnpo1hW3ZsCRUQvX/TartSC # Mm78pJUT5Otp56miLL7IKxAOZY6Z2/Wi+hImCWU4lPF6H0q70eFW6NB4lhhcyTUW # X92THUmOLb6tNEQc7hAVGgBd3TVbIc6YxwnuhQ6MT20OE049fClInHLR82zKwexw # o1eSV32UjaAbSANa98+jZwp0pTbtLS8XyOZyNxL0b7E8Z4L5UrKNMxZlHg6K3RDe # ZPRvzkbU0xfpecQEtNP7LN8fip6sCvsTJ0Ct5PnhqX9GuwdgR2VgQE6wQuxO7bN2 # edgKNAltHIAxH+IOVN3lofvlRxCtZJj/UBYufL8FIXrilUEnacOTj5XJjdibIa4N # XJzwoq6GaIMMai27dmsAHZat8hZ79haDJLmIz2qoRzEvmtzjcT3XAH5iR9HOiMm4 # GPoOco3Boz2vAkBq/2mbluIQqBC0N1AI1sM9MIIGBzCCA++gAwIBAgIKYRZoNAAA # AAAAHDANBgkqhkiG9w0BAQUFADBfMRMwEQYKCZImiZPyLGQBGRYDY29tMRkwFwYK # CZImiZPyLGQBGRYJbWljcm9zb2Z0MS0wKwYDVQQDEyRNaWNyb3NvZnQgUm9vdCBD # ZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDcwNDAzMTI1MzA5WhcNMjEwNDAzMTMw # MzA5WjB3MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UE # BxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSEwHwYD # VQQDExhNaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EwggEiMA0GCSqGSIb3DQEBAQUA # A4IBDwAwggEKAoIBAQCfoWyx39tIkip8ay4Z4b3i48WZUSNQrc7dGE4kD+7Rp9FM # rXQwIBHrB9VUlRVJlBtCkq6YXDAm2gBr6Hu97IkHD/cOBJjwicwfyzMkh53y9Gcc # LPx754gd6udOo6HBI1PKjfpFzwnQXq/QsEIEovmmbJNn1yjcRlOwhtDlKEYuJ6yG # T1VSDOQDLPtqkJAwbofzWTCd+n7Wl7PoIZd++NIT8wi3U21StEWQn0gASkdmEScp # ZqiX5NMGgUqi+YSnEUcUCYKfhO1VeP4Bmh1QCIUAEDBG7bfeI0a7xC1Un68eeEEx # d8yb3zuDk6FhArUdDbH895uyAc4iS1T/+QXDwiALAgMBAAGjggGrMIIBpzAPBgNV # HRMBAf8EBTADAQH/MB0GA1UdDgQWBBQjNPjZUkZwCu1A+3b7syuwwzWzDzALBgNV # HQ8EBAMCAYYwEAYJKwYBBAGCNxUBBAMCAQAwgZgGA1UdIwSBkDCBjYAUDqyCYEBW # J5flJRP8KuEKU5VZ5KShY6RhMF8xEzARBgoJkiaJk/IsZAEZFgNjb20xGTAXBgoJ # kiaJk/IsZAEZFgltaWNyb3NvZnQxLTArBgNVBAMTJE1pY3Jvc29mdCBSb290IENl # cnRpZmljYXRlIEF1dGhvcml0eYIQea0WoUqgpa1Mc1j0BxMuZTBQBgNVHR8ESTBH # MEWgQ6BBhj9odHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0 # cy9taWNyb3NvZnRyb290Y2VydC5jcmwwVAYIKwYBBQUHAQEESDBGMEQGCCsGAQUF # BzAChjhodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY3Jvc29m # dFJvb3RDZXJ0LmNydDATBgNVHSUEDDAKBggrBgEFBQcDCDANBgkqhkiG9w0BAQUF # AAOCAgEAEJeKw1wDRDbd6bStd9vOeVFNAbEudHFbbQwTq86+e4+4LtQSooxtYrhX # AstOIBNQmd16QOJXu69YmhzhHQGGrLt48ovQ7DsB7uK+jwoFyI1I4vBTFd1Pq5Lk # 541q1YDB5pTyBi+FA+mRKiQicPv2/OR4mS4N9wficLwYTp2OawpylbihOZxnLcVR # DupiXD8WmIsgP+IHGjL5zDFKdjE9K3ILyOpwPf+FChPfwgphjvDXuBfrTot/xTUr # XqO/67x9C0J71FNyIe4wyrt4ZVxbARcKFA7S2hSY9Ty5ZlizLS/n+YWGzFFW6J1w # lGysOUzU9nm/qhh6YinvopspNAZ3GmLJPR5tH4LwC8csu89Ds+X57H2146SodDW4 # TsVxIxImdgs8UoxxWkZDFLyzs7BNZ8ifQv+AeSGAnhUwZuhCEl4ayJ4iIdBD6Svp # u/RIzCzU2DKATCYqSCRfWupW76bemZ3KOm+9gSd0BhHudiG/m4LBJ1S2sWo9iaF2 # YbRuoROmv6pH8BJv/YoybLL+31HIjCPJZr2dHYcSZAI9La9Zj7jkIeW1sMpjtHhU # BdRBLlCslLCleKuzoJZ1GtmShxN1Ii8yqAhuoFuMJb+g74TKIdbrHk/Jmu5J4PcB # ZW+JC33Iacjmbuqnl84xKf8OxVtc2E0bodj6L54/LlUWa8kTo/0xggSXMIIEkwIB # ATCBkDB5MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UE # BxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSMwIQYD # VQQDExpNaWNyb3NvZnQgQ29kZSBTaWduaW5nIFBDQQITMwAAAXglWrXNI8ZflQAB # AAABeDAJBgUrDgMCGgUAoIGwMBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwG # CisGAQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3DQEJBDEWBBTSfU64 # J5PMAp5p4DGjvamDVN1H2TBQBgorBgEEAYI3AgEMMUIwQKAWgBQAUABvAHcAZQBy # AFMAaABlAGwAbKEmgCRodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vUG93ZXJTaGVs # bCAwDQYJKoZIhvcNAQEBBQAEggEADRgdqdrg0CnXzxo6W2jKCFiijVU/rNbsgymM # OCtsodIFN+rsgpjL1ckPa2k85riecEorCm465Uw4B4hD50HqvlUX521mCp3eu4Rv # bER6JpcsiS8fsUIJd9TJwldDbFEklGKDotQlkZjceuyiSkjnwBoPo3a/t/LBoGqK # T6uCusa3ZYA4t9JzsWUm1mIKVjWFRGFjBklM31AqW4HM/A52V7t63I82ORSHymLN # PPN61YORdN8Xcq4+gbH7MuFfCUFA6+oMrCtbzpfzr/CH3ZOdl1KkVigoVRcmwrCC # TDXfvnWd1yN43u3MhukquFbkMDER/Sc/AWZSR7GxNbfLUfnR/KGCAigwggIkBgkq # hkiG9w0BCQYxggIVMIICEQIBATCBjjB3MQswCQYDVQQGEwJVUzETMBEGA1UECBMK # V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0 # IENvcnBvcmF0aW9uMSEwHwYDVQQDExhNaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EC # EzMAAAC7tnckcUogACAAAAAAALswCQYFKw4DAhoFAKBdMBgGCSqGSIb3DQEJAzEL # BgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTE3MTAxMDIwNDc1M1owIwYJKoZI # hvcNAQkEMRYEFEUAW3xtSwQndzuytZNn2WRJojESMA0GCSqGSIb3DQEBBQUABIIB # AA4jUbUq4iPt5owiJsDuosS2Muxf6vbKPyGQKnsHoMDkuBrYtCh/rMlUHkAv6qN0 # 5rnuGOm/byc7yLFVYtRpYgzBEqSf8azb0JBq64jgXPCMFJHODUV9T9tDunaf9L7D # 0hyEitvx7a+zlPA8dK9F6uehaGKurXjGYaGHGrZJvSfxhbjD0GSkoptS4ZXYh+G+ # VR3ctRm5zmUImY3DksVsYYGIxL0Thjuq33gXf/yoePAtiG6RyqEZFDapJhblZpeu # PiGiHewhvjdr4K4PW6GuDP7jhGvdBC/ekmtf7fr6riMUQzbAa2+M4dDf9xpUbZ7m # hBID8OECV0GYxWlG5Y57q8w= # SIG # End signature block |