diff --git a/.github/workflows/create-botbuilder-parity-issues.yml b/.github/workflows/create-botbuilder-parity-issues.yml index 784548d6bf..c24fdcf33f 100644 --- a/.github/workflows/create-botbuilder-parity-issues.yml +++ b/.github/workflows/create-botbuilder-parity-issues.yml @@ -45,6 +45,8 @@ jobs: runs-on: ubuntu-latest if: github.event.pull_request.merged == true needs: encode + permissions: + issues: write strategy: matrix: diff --git a/build/onebranch/ci-api-validation-steps.yml b/build/onebranch/ci-api-validation-steps.yml new file mode 100644 index 0000000000..dfb8d1cbf1 --- /dev/null +++ b/build/onebranch/ci-api-validation-steps.yml @@ -0,0 +1,129 @@ +steps: +- task: DownloadPipelineArtifact@2 + displayName: 'Download BotBuilderDLLs from Artifacts' + inputs: + artifactName: 'BotBuilderDLLs-Debug-Windows-netcoreapp31' + targetPath: '$(System.ArtifactsDirectory)/OutputDlls' + +- task: DownloadPipelineArtifact@2 + displayName: 'Download ContractDlls from Artifacts' + inputs: + artifactName: 'ContractDlls' + targetPath: '$(System.ArtifactsDirectory)/ContractDlls' + +- powershell: | + Write-Host "The following API compatibility issues are suppressed:"; + Get-Content "ApiCompatBaseline.txt"; + displayName: 'Show API compat issue suppressions in ApiCompatBaseline.txt' + continueOnError: true + +- task: SOUTHWORKS.binaries-comparer.custom-build-release-task.binaries-comparer@0 + displayName: 'Compare Binaries' + inputs: + contractsRootFolder: '$(System.ArtifactsDirectory)/ContractDlls' + contractsFileName: '$(PackageName).dll' + implFolder: '$(System.ArtifactsDirectory)/OutputDlls' + failOnIssue: false + resolveFx: false + generateLog: true + outputFilename: '$(PackageName).$(ApiContractVersion).CompatResults.txt' + outputFolder: '$(Build.ArtifactStagingDirectory)' + useBaseline: true + baselineFile: ApiCompatBaseline.txt + continueOnError: false + +- powershell: | + $filePath = "$(Build.ArtifactStagingDirectory)\$(PackageName).$(ApiContractVersion).CompatResults.txt" + $nugetLink = "compared against [version $(ApiContractVersion)](https://www.nuget.org/packages/$(PackageName)/$(ApiContractVersion))."; + Write-Host "Compatibility Check:"; + + if (-not (Test-Path $filePath)) { + $content = "The binary compatibility report for library '$(PackageName)' wasn't generated. This may have happened because the NuGet library '$(PackageName)' for version '$(ApiContractVersion)' was unavailable or a connectivity issue." + New-Item -Path '$(Build.ArtifactStagingDirectory)' -Name '$(PackageName).$(ApiContractVersion).CompatResults.txt' -ItemType "file" -Value $content + $content; + Write-Host "##vso[task.complete result=Failed;]"; + return; + } + + $baseline = Get-Content $filePath -Raw; + Write-Host "`n[Compare binaries task]"; + Write-Host "`nOriginal result:"; + $baseline; + + # When the Api Compat task has Binary compatibility issues, this process will filter out the Classes + # and then validates if still exists remaining issues. + if ($baseline.ToString().Trim().StartsWith(':x:')) { + Write-Host "`n[Class exclusion]"; + $excludeClasses = "$($env:ApiCompatExcludeClasses)".Trim().Split(',') | Where-Object { ($_.Trim().Length -gt 0) } | ForEach-Object { $_.Trim() }; + + if ($excludeClasses) { + Write-Host "`nList of classes to exclude:"; + $excludeClasses | ForEach-Object { " - " + $_ } + } + else { + Write-Host "`nThere are no classes to exclude."; + } + + $content = ($baseline -split '|<\/details\>'); + $header = $content[0].SubString($content[0].IndexOf('Binary') - 1).Trim(); + $issues = $content[1].Trim(); + $issues = ($issues -replace '```', '').Split([Environment]::NewLine); + + # Filter out issues based on Class name. + $issues = @( + $issues | Where-Object { + $line = $_; + if (-not $line.Trim()) { + return $false; + } + if ($excludeClasses) { + foreach ($class in $excludeClasses) { + $pattern = "'$class"; + if ($line -match $pattern) { + return $false; + } + } + } + return $true; + } | ForEach-Object { $_.Trim() } + ) + + # Creates new file content. + if ($issues) { + $newFile = @(); + $newfile += ":x: $($issues.Length) $header $nugetLink"; + $newFile += '
'; + $newFile += ""; + $newFile += '```'; + $newfile += $issues; + $newFile += '```'; + $newFile += ""; + $newFile += '
'; + + $newFile = $newFile -join [Environment]::NewLine; + Write-Host "##vso[task.complete result=Failed;]"; + } + else { + $newFile = ":heavy_check_mark: No Binary Compatibility issues for **$(PackageName)** $nugetLink"; + } + + $baseline = $newFile; + [system.io.file]::WriteAllText($filePath, $baseline); + Write-Host "`nProcessed result:"; + $baseline; + } + displayName: 'Compatibility Check' + continueOnError: false + condition: succeededOrFailed() + +- task: PublishBuildArtifacts@1 + displayName: 'Publish Compat Results artifact' + inputs: + ArtifactName: '$(PackageName).$(ApiContractVersion).CompatResults' + condition: succeededOrFailed() + +- script: | + dir .. /s + displayName: 'Dir workspace' + continueOnError: true + condition: succeededOrFailed() diff --git a/build/onebranch/ci-build-steps.yml b/build/onebranch/ci-build-steps.yml new file mode 100644 index 0000000000..ad4cf8eced --- /dev/null +++ b/build/onebranch/ci-build-steps.yml @@ -0,0 +1,44 @@ +steps: +- powershell: 'gci env:* | sort-object name | Format-Table -AutoSize -Wrap' + displayName: 'Display env vars' + +# Variables ReleasePackageVersion and PreviewPackageVersion are consumed by projects in Microsoft.Bot.Builder.sln. +# For the signed build, they should be settable at queue time. To set that up, define the variables in Azure on the Variables tab. +- task: NuGetToolInstaller@1 + displayName: 'Use NuGet ' + +- template: sdk_dotnet_v4_org-feed-setup-steps.yml + +- task: NuGetToolInstaller@1 + displayName: 'Use NuGet latest' + +- task: NuGetCommand@2 + inputs: + command: 'restore' + feedsToUse: 'config' + nugetConfigPath: 'nuget.config' + restoreSolution: '$(Parameters.solution)' + displayName: 'NuGet restore' + +- task: VSBuild@1 + displayName: 'Build solution Microsoft.Bot.Builder.sln' + inputs: + solution: '$(Parameters.solution)' + vsVersion: 17.0 + msbuildArgs: '$(MSBuildArguments)' + platform: '$(BuildPlatform)' + configuration: '$(BuildConfiguration)' + maximumCpuCount: true + logProjectEvents: false + +#- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0 +# displayName: 'Component Detection' +# inputs: +# failOnAlert: true + +#- script: | +# cd .. +# dir *.* /s +# displayName: 'Dir workspace' +# continueOnError: true +# condition: succeededOrFailed() diff --git a/build/onebranch/ci-component-detection-steps.yml b/build/onebranch/ci-component-detection-steps.yml new file mode 100644 index 0000000000..258426b12d --- /dev/null +++ b/build/onebranch/ci-component-detection-steps.yml @@ -0,0 +1,8 @@ +steps: +- task: ComponentGovernanceComponentDetection@0 + displayName: Component Detection + inputs: + scanType: "Register" + verbosity: "Verbose" + alertWarningLevel: "High" + failOnAlert: true diff --git a/build/onebranch/ci-post-to-github-steps.yml b/build/onebranch/ci-post-to-github-steps.yml new file mode 100644 index 0000000000..e870edc924 --- /dev/null +++ b/build/onebranch/ci-post-to-github-steps.yml @@ -0,0 +1,38 @@ +steps: +- task: DownloadBuildArtifacts@0 + displayName: 'Download compat results artifact' + inputs: + downloadType: specific + itemPattern: '**\*.txt' + downloadPath: '$(System.ArtifactsDirectory)\ApiCompat' + +- task: CopyFiles@2 + displayName: 'Copy results for publish to Artifacts' + inputs: + SourceFolder: '$(System.ArtifactsDirectory)\ApiCompat' + Contents: '**\*.txt' + TargetFolder: '$(System.ArtifactsDirectory)\ApiCompatibilityResults' + flattenFolders: true + +- task: PublishPipelineArtifact@1 + inputs: + artifactName: 'ApiCompatibilityResults' + targetPath: '$(System.ArtifactsDirectory)\ApiCompatibilityResults' + displayName: 'Publish compat results to Artifacts' + continueOnError: true + +- task: SOUTHWORKS.github-pr-comment.custom-publish-comment-task.github-pr-comment@0 + displayName: 'Publish compat results to GitHub' + inputs: + userToken: '$(GitHubCommentApiKey)' + bodyFilePath: '$(System.ArtifactsDirectory)\ApiCompat' + getSubFolders: true + keepCommentHistory: false + # Skip for forks, as secret tokens are not available to them. + condition: and(succeeded(), eq(variables['Build.Reason'], 'PullRequest'), ne(variables['System.PullRequest.IsFork'], 'True')) + +- script: | + dir .. /s + displayName: 'Dir workspace' + continueOnError: true + condition: succeededOrFailed() diff --git a/build/onebranch/ci-test-steps.yml b/build/onebranch/ci-test-steps.yml new file mode 100644 index 0000000000..061a1168a9 --- /dev/null +++ b/build/onebranch/ci-test-steps.yml @@ -0,0 +1,106 @@ +#variables: +# DotNetCoverallsToken: define this in Azure +# PublishCoverage: (optional) set to true in the calling template. +steps: +- powershell: | + Remove-Item CodeCoverage -Force -Recurse -ErrorAction Ignore + New-Item CodeCoverage -ItemType Directory -Force + displayName: 'Create Code Coverage directory' + +- task: NodeTool@0 + displayName: 'install Node.js v14.x' + inputs: + versionSpec: '14.x' + +- task: Npm@1 + displayName: 'install botframework-cli to set up for Schema merge tests' + inputs: + command: custom + verbose: false + customCommand: 'install -g @microsoft/botframework-cli@next' + +- task: UseDotNet@2 + displayName: "Install .NET Core 3.1.415" + continueOnError: true + inputs: + packageType: "sdk" + version: 3.1.415 + condition: and(succeeded(), eq(variables['BuildConfiguration'],'Release-Windows'), eq(variables['BuildTarget'],'netcoreapp31')) + +- task: DotNetCoreCLI@2 + displayName: 'dotnet test (release) 3.1' + inputs: + command: test + projects: | + Tests/**/*Tests.csproj + + arguments: '-v n -f netcoreapp3.1 --configuration release --no-build --no-restore --filter "TestCategory!=IgnoreInAutomatedBuild&TestCategory!=FunctionalTests" --collect:"Code Coverage" --settings $(Build.SourcesDirectory)\CodeCoverage.runsettings' + condition: and(succeeded(), eq(variables['BuildConfiguration'],'Release-Windows'), eq(variables['BuildTarget'],'netcoreapp31')) + +- task: DotNetCoreCLI@2 + displayName: 'dotnet test (release) 6.0' + inputs: + command: test + projects: | + Tests/**/*Tests.csproj + + arguments: '-v n -f net6.0 --configuration release --no-build --no-restore --filter "TestCategory!=IgnoreInAutomatedBuild&TestCategory!=FunctionalTests" --collect:"Code Coverage" --settings $(Build.SourcesDirectory)\CodeCoverage.runsettings' + condition: and(succeeded(), eq(variables['BuildConfiguration'],'Release-Windows'), eq(variables['BuildTarget'],'net6')) + +- powershell: | + # This task copies the code coverage file created by dotnet test into a well known location. In all + # checks I've done, dotnet test ALWAYS outputs the coverage file to the temp directory. + # My attempts to override this and have it go directly to the CodeCoverage directory have + # all failed, so I'm just doing the copy here. (cmullins) + + Get-ChildItem -Path "D:\a\_temp" -Include "*.coverage" -Recurse | Copy-Item -Destination CodeCoverage + displayName: 'Copy .coverage Files to CodeCoverage folder' + condition: and(succeeded(), eq(variables['PublishCoverage'], 'true')) + +- powershell: 'echo ''##vso[task.setvariable variable=CoverallsToken]$(DotNetCoverallsToken)''' + displayName: 'Set CoverallsToken for PublishToCoveralls.ps1 if token exists' + continueOnError: true + condition: and(succeeded(), eq(variables['PublishCoverage'], 'true')) + +- powershell: | + dotnet nuget remove source SDK_Dotnet_V4_org + displayName: Remove SDK_Dotnet_V4_org feed source reference from nuget.config + continueOnError: true + condition: and(succeeded(), eq(variables['PublishCoverage'], 'true'), ne(variables['System.PullRequest.IsFork'], 'True')) + +- task: PowerShell@2 + displayName: 'Upload Coverage Files to Coveralls.io https://coveralls.io/github/microsoft/botbuilder-dotnet' + inputs: + targetType: filePath + filePath: '$(Build.SourcesDirectory)\build\PublishToCoveralls.ps1' + arguments: '-pathToCoverageFiles "$(Build.SourcesDirectory)\CodeCoverage" -serviceName "CI-PR build"' + continueOnError: true + # Skip for forks because it errors: "Couldn't find a repository matching this job." + condition: and(succeeded(), eq(variables['PublishCoverage'], 'true'), ne(variables['System.PullRequest.IsFork'], 'True')) + +- powershell: | + New-Item -ItemType directory -Path "outputLibraries\" -Force + + $buildTarget = $env:BuildConfiguration.Split("-")[0]; + + $env:PackagesToValidate.Split(",") | ForEach { + $library = $_.Trim() + Write-Host $library + + Get-ChildItem -Path "*/$library/bin/$buildTarget/netstandard2.0/$library.dll" -Recurse | Copy-Item -Destination 'outputLibraries\' -Force + Get-ChildItem -Path "*/*/$library/bin/$buildTarget/netstandard2.0/$library.dll" -Recurse | Copy-Item -Destination 'outputLibraries\' -Force + } + displayName: 'Copy DLLs to outputLibraries folder' + +- task: PublishPipelineArtifact@0 + displayName: 'Publish Microsoft.Bot.Builder DLLs artifact' + inputs: + artifactName: 'BotBuilderDLLs-$(BuildConfiguration)-$(BuildTarget)' + targetPath: outputLibraries + continueOnError: true + +- script: | + dir .. /s + displayName: 'Dir workspace' + continueOnError: true + condition: succeededOrFailed() diff --git a/build/onebranch/ci.yml b/build/onebranch/ci.yml new file mode 100644 index 0000000000..1e19de1c40 --- /dev/null +++ b/build/onebranch/ci.yml @@ -0,0 +1,43 @@ +#variables: +# BuildConfiguration: Release-Windows +# TestConfiguration: Release +# BuildPlatform: any cpu +# MSBuildArguments: -p:PublishRepositoryUrl=true -p:GeneratePackages=true -p:IncludeSymbols=true -p:SymbolPackageFormat=snupkg +# Packaging.EnableSBOMSigning: true +# Parameters.solution: Microsoft.Bot.Builder.sln +## PreviewPackageVersion: 4.8.0-preview-$(Build.BuildNumber) # Consumed by projects in Microsoft.Bot.Builder.sln. Define this in Azure to be settable at queue time. +## ReleasePackageVersion: 4.8.0-preview-$(Build.BuildNumber) # Consumed by projects in Microsoft.Bot.Builder.sln. Define this in Azure to be settable at queue time. +## SDK_Dotnet_V4_org_Url: define this in Azure + +steps: + - powershell: | + # Replace {DateStamp} and {CommitHash} tokens with the actual values in vars ReleasePackageVersion and PreviewPackageVersion + $dateStamp = (Get-Date -format "yyyyMMdd"); + $commitHash = "$(Build.SourceVersion)".SubString(0,7); + + "Raw ReleasePackageVersion = $(ReleasePackageVersion)"; + $v = "$(ReleasePackageVersion)".Replace("{DateStamp}",$dateStamp).Replace("{CommitHash}",$commitHash); + Write-Host "##vso[task.setvariable variable=ReleasePackageVersion;]$v"; + "Resolved ReleasePackageVersion = $v"; + + "Raw PreviewPackageVersion = $(PreviewPackageVersion)"; + $ppv = "$(PreviewPackageVersion)".Replace("{DateStamp}",$dateStamp).Replace("{CommitHash}",$commitHash); + Write-Host "##vso[task.setvariable variable=PreviewPackageVersion;]$ppv"; + "Resolved PreviewPackageVersion = $ppv"; + displayName: 'Resolve package version variables' + + - task: colinsalmcorner.colinsalmcorner-buildtasks.tag-build-task.tagBuildOrRelease@0 + displayName: 'Tag build with release and preview versions' + inputs: + tags: | + Release: $(ReleasePackageVersion) + Preview: $(PreviewPackageVersion) + continueOnError: true + + - template: ci-build-steps.yml + - template: sign-steps.yml + +# - task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0 +# displayName: 'Component Detection' +# inputs: +# failOnAlert: false diff --git a/build/onebranch/onebranch-dotnet-signed.yml b/build/onebranch/onebranch-dotnet-signed.yml new file mode 100644 index 0000000000..d255ccec1f --- /dev/null +++ b/build/onebranch/onebranch-dotnet-signed.yml @@ -0,0 +1,73 @@ +################################################################################# +# OneBranch Pipelines # +# This pipeline was created by EasyStart from a sample located at: # +# https://aka.ms/obpipelines/easystart/samples # +# Documentation: https://aka.ms/obpipelines # +# Yaml Schema: https://aka.ms/obpipelines/yaml/schema # +# Retail Tasks: https://aka.ms/obpipelines/tasks # +# Support: https://aka.ms/onebranchsup # +################################################################################# +# https://aka.ms/obpipelines/triggers +trigger: none # ci trigger is set in ADO + +variables: + Codeql.TSAEnabled: true # Needed for Security Development Lifecycle (SDL) requirements http://aka.ms/codeql + WindowsContainerImage: onebranch.azurecr.io/windows/ltsc2019/vse2022:latest # for Windows jobs + LinuxContainerImage: cdpxlinux.azurecr.io/user/lsg-linux/lsg-yocto-project:latest # for Linux jobs + IsOfficialBuild: True + BuildConfiguration: Release-Windows + TestConfiguration: Release + BuildPlatform: any cpu + MSBuildArguments: -p:PublishRepositoryUrl=true -p:GeneratePackages=true -p:IncludeSymbols=true -p:SymbolPackageFormat=snupkg + Packaging.EnableSBOMSigning: true + Parameters.solution: Microsoft.Bot.Builder.sln +# PreviewPackageVersion: 4.8.0-preview-$(Build.BuildNumber) # Consumed by projects in Microsoft.Bot.Builder.sln. Define this in Azure to be settable at queue time. +# ReleasePackageVersion: 4.8.0-preview-$(Build.BuildNumber) # Consumed by projects in Microsoft.Bot.Builder.sln. Define this in Azure to be settable at queue time. +# SDK_Dotnet_V4_org_Url: define this in Azure + +name: $(Date:yyyyMMdd).$(Build.BuildId) + +resources: + repositories: + - repository: templates + type: git + name: OneBranch.Pipelines/GovernedTemplates + ref: refs/heads/main + +extends: + template: v2/OneBranch.Official.CrossPlat.yml@templates + parameters: + globalSdl: # https://aka.ms/obpipelines/sdl + tsa: + enabled: true # SDL results of official builds ar uploaded to TSA by default. + codeql: + tsaEnabled: true + compiled: + enabled: true + policheck: + break: false # always break the build on policheck issues. You can disable it by setting to 'false' + suppression: + suppressionFile: $(Build.SourcesDirectory)\.gdn\global.gdnsuppress + suppressionSet: default + git: + persistCredentials: true + stages: + - stage: build + jobs: + - job: main + pool: + type: windows # read more about custom job pool types at https://aka.ms/obpipelines/yaml/jobs + variables: + ob_outputDirectory: '$(Build.SourcesDirectory)\out' + ob_symbolsPublishing_enabled: true # Default is false + ob_symbolsPublishing_symbolsFolder: '$(Build.SourcesDirectory)/libraries' # Default is ob_outputDirectory + ob_symbolsPublishing_searchPattern: '**/bin/Debug/netstandard2.0/*.pdb' # Default is **/*.pdb + ob_symbolsPublishing_indexSources: true # Default is true + ob_sdl_tsa_configFile: '$(Build.SourcesDirectory)\.config\tsaoptions.json' + ob_sdl_binskim_scanOutputDirectoryOnly: true + LGTM_INDEX_FILTERS: 'exclude: **/dotnet*.js,**/underscore*.js,**/doctools.js' # excluding javascript files that come from .net blazor framework and vcpkg(for installing Brotli) as we consider these framework and dependency safe + # ob_sdl_suppression_suppressionFile: $(Build.SourcesDirectory)\.gdn\job.gdnsuppress + # ob_sdl_suppression_suppressionSet: default + steps: + - template: build/onebranch/ci.yml@self + \ No newline at end of file diff --git a/build/onebranch/pr.yml b/build/onebranch/pr.yml new file mode 100644 index 0000000000..4c01e03e65 --- /dev/null +++ b/build/onebranch/pr.yml @@ -0,0 +1,181 @@ +# +# Replaces the classic BotBuilder-DotNet-master-CI-PR +# + +# "name" here defines the build number format. Build number is accessed via $(Build.BuildNumber) +name: $(Build.BuildId) + +pool: + vmImage: $[ coalesce( variables['VMImage'], 'windows-latest' ) ] # or 'windows-latest' + demands: + - msbuild + - visualstudio + +trigger: none # ci trigger is set in ADO +pr: none # pr trigger is set in ADO + +variables: + ApiContractVersion: 4.6.3 + PackagesToValidate: Microsoft.Bot.Builder.AI.Luis,Microsoft.Bot.Builder.AI.QnA,Microsoft.Bot.Builder.ApplicationInsights,Microsoft.Bot.Builder.Azure,Microsoft.Bot.Builder.Dialogs,Microsoft.Bot.Builder.Integration.ApplicationInsights.Core,Microsoft.Bot.Builder.Integration.AspNet.Core,Microsoft.Bot.Builder.TemplateManager,Microsoft.Bot.Builder.Testing,Microsoft.Bot.Builder,Microsoft.Bot.Configuration,Microsoft.Bot.Connector,Microsoft.Bot.Schema,Microsoft.Bot.Streaming + BuildConfiguration: Debug-Windows + BuildPlatform: any cpu + IsBuildServer: true # This is consumed by tests\Microsoft.Bot.Builder.Dialogs.Declarative.Tests\SchemaTestsFixture.cs. + MSBuildArguments: -p:SignAssembly=false -p:delaySign=false + Parameters.solution: Microsoft.Bot.Builder.sln + PreviewPackageVersion: 4.9.0-preview-$(Build.BuildNumber) # This is consumed by projects in Microsoft.Bot.Builder.sln. + ReleasePackageVersion: 4.9.0-preview-$(Build.BuildNumber) # This is consumed by projects in Microsoft.Bot.Builder.sln. + runCodesignValidationInjection: false # Disables unnecessary CodeSign Validation step + system_accesstoken: $(System.AccessToken) + LGTM.UploadSnapshot: true + Semmle.SkipAnalysis: true +# ApiCompatExcludeClasses: (optional) define this in Azure + DisableApiCompatibityValidation: true +# DotNetCoverallsToken: define this in Azure +# GitHubCommentApiKey: define this in Azure +# SDK_Dotnet_V4_org_Url: define this in Azure + +# The following 2 stages run multi-configuration, multi-agent parallel jobs. +# Debug-Windows/Release-Windows => Builds everything in Debug/Release + the ASP.NET Desktop. +# Debug/Release => would build all .NET Standard libs and test them. +# The .NET 4.X asp.net integrations libraries do not build and test on non-windows boxes. +# If we drop support for .NET 4.x then we can drop to just Debug/Release. +stages: +- stage: Build + jobs: + - job: Debug_Windows_Configuration_31 + variables: + BuildConfiguration: Debug-Windows + BuildTarget: 'netcoreapp31' # set the TargetFramework property for tests to use netcoreapp3.1 + steps: + - template: ci-build-steps.yml + - template: ci-test-steps.yml + - template: ci-component-detection-steps.yml + - job: Debug_Windows_Configuration_6 + variables: + BuildConfiguration: Debug-Windows + BuildTarget: 'net6' # set the TargetFramework property for tests to use net6.0 + steps: + - template: ci-build-steps.yml + - template: ci-test-steps.yml + - template: ci-component-detection-steps.yml + - job: Release_Windows_Configuration_31 + variables: + BuildConfiguration: Release-Windows + BuildTarget: 'netcoreapp31' # set the TargetFramework property for tests to use netcoreapp3.1 + steps: + - template: ci-build-steps.yml + - template: ci-test-steps.yml + - template: ci-component-detection-steps.yml + - job: Release_Windows_Configuration_6 + variables: + BuildConfiguration: Release-Windows + BuildTarget: 'net6' # set the TargetFramework property for tests to use net6.0 + PublishCoverage: true + steps: + - template: ci-build-steps.yml + - template: ci-test-steps.yml + - template: ci-component-detection-steps.yml + +- stage: API_Compatibility_Validation + dependsOn: Build + condition: and(succeeded(), ne(variables['DisableApiCompatibityValidation'], 'true')) + variables: + skipComponentGovernanceDetection: true # the task is already injected into the build jobs, so unnecessary here. + jobs: + - job: generate_multiconfig_var + steps: + # Download contract .dlls from nuget.org. + - powershell: | + $PackageNames = "$(PackagesToValidate)"; + $ApiContractVersion = "$(ApiContractVersion)"; + $TempContractInstallDirectory = ".\TempContractInstallDir"; + $OutputDirectory = ".\ContractDlls"; + + Write-Host "`nDownloading packages version $ApiContractVersion."; + + New-Item -ItemType directory -Path $OutputDirectory -Force | Out-Null; + + $Names = $PackageNames.Split(','); + + foreach ($Name in $Names) { + "---- $Name ------------------"; + nuget install $Name -Version $ApiContractVersion -OutputDirectory $TempContractInstallDirectory -DirectDownload -NonInteractive; + + if ($LASTEXITCODE -eq 0) { + Copy-Item "$TempContractInstallDirectory\$Name.$ApiContractVersion\lib\netstandard2.0\$Name.dll" $OutputDirectory; + } + else { + Write-Host "##vso[task.complete result=Failed;]"; + } + } + displayName: 'Download Contract DLLs to ContractDlls folder' + continueOnError: true + + - task: PublishPipelineArtifact@0 + inputs: + artifactName: 'ContractDlls' + targetPath: ContractDlls + displayName: 'Push to ContractDlls in Artifacts' + continueOnError: true + + - powershell: | + $multiconfig = '{'; + if ("$(Build.Reason)" -in ('Schedule', 'Manual')) { + $env:PackagesToValidate.Split(",") | ForEach { + $library = $_.Trim() + $threadName = $library -replace "Microsoft.", ""; + $multiconfig += "'" + $threadName + "':{'PackageName':'" + $library + "'}, "; + } + } + else { + $updatedFiles = $(git diff HEAD HEAD~ --name-only) + + $updatedFiles | ForEach-Object { + $changedLibrary = '' + Switch -Wildcard ($_) { + '*/Microsoft.Bot.Builder.AI.Luis/*' { $changedLibrary = 'Microsoft.Bot.Builder.AI.Luis' } + '*/Microsoft.Bot.Builder.AI.QnA/*' { $changedLibrary = 'Microsoft.Bot.Builder.AI.QnA' } + '*/Microsoft.Bot.Builder.ApplicationInsights/*' { $changedLibrary = 'Microsoft.Bot.Builder.ApplicationInsights' } + '*/Microsoft.Bot.Builder.Azure/*' { $changedLibrary = 'Microsoft.Bot.Builder.Azure' } + '*/Microsoft.Bot.Builder.Dialogs/*' { $changedLibrary = 'Microsoft.Bot.Builder.Dialogs' } + '*/Microsoft.Bot.Builder.Integration.ApplicationInsights.Core/*' { $changedLibrary = 'Microsoft.Bot.Builder.Integration.ApplicationInsights.Core' } + '*/Microsoft.Bot.Builder.Integration.AspNet.Core/*' { $changedLibrary = 'Microsoft.Bot.Builder.Integration.AspNet.Core' } + '*/Microsoft.Bot.Builder.TemplateManager/*' { $changedLibrary = 'Microsoft.Bot.Builder.TemplateManager' } + '*/Microsoft.Bot.Builder.Testing/*' { $changedLibrary = 'Microsoft.Bot.Builder.Testing' } + '*/Microsoft.Bot.Builder/*' { $changedLibrary = 'Microsoft.Bot.Builder' } + '*/Microsoft.Bot.Configuration/*' { $changedLibrary = 'Microsoft.Bot.Configuration' } + '*/Microsoft.Bot.Connector/*' { $changedLibrary = 'Microsoft.Bot.Connector' } + '*/Microsoft.Bot.Schema/*' { $changedLibrary = 'Microsoft.Bot.Schema' } + '*/Microsoft.Bot.Streaming/*' { $changedLibrary = 'Microsoft.Bot.Streaming' } + } + if ($changedLibrary.Length -gt 0) { + Write-Host $changedLibrary + $threadName = $changedLibrary.Split(".")[-1]; + $multiconfig += "'" + $threadName + "':{'PackageName':'" + $changedLibrary + "'}, "; + } + } + } + $multiconfig = $multiconfig.TrimEnd(' ').TrimEnd(',') + "}"; + echo 'Matrix variable:' + echo $multiconfig + "##vso[task.setVariable variable=MULTICONFIG;isOutput=true]$multiconfig" + name: generate_var + displayName: Generate matrix variable + + - job: check_api_for + dependsOn: generate_multiconfig_var + condition: ne(dependencies.generate_multiconfig_var.outputs['generate_var.MULTICONFIG'], '{}') + timeoutInMinutes: 10 + strategy: + maxParallel: 10 + matrix: $[ dependencies.generate_multiconfig_var.outputs['generate_var.MULTICONFIG'] ] + steps: + - template: ci-api-validation-steps.yml + + - job: post_results_to_gitHub + dependsOn: check_api_for + condition: ne(dependencies.generate_multiconfig_var.outputs['generate_var.MULTICONFIG'], '{}') + variables: + BuildConfiguration: Release-Windows + steps: + - template: ci-post-to-github-steps.yml diff --git a/build/onebranch/sdk_dotnet_v4_org-feed-setup-steps.yml b/build/onebranch/sdk_dotnet_v4_org-feed-setup-steps.yml new file mode 100644 index 0000000000..bb620e3d62 --- /dev/null +++ b/build/onebranch/sdk_dotnet_v4_org-feed-setup-steps.yml @@ -0,0 +1,33 @@ +# Create nuget.config for resolving dependencies exclusively from SDK_Dotnet_V4_org feed. +# Resolve from nuget.org when PR is from a fork, as forks do not have access to our private feed. +steps: +- powershell: | + if ("$(System.PullRequest.IsFork)" -eq 'True') { + $key = "nuget.org"; + $value = "https://api.nuget.org/v3/index.json"; + Write-Host 'System.PullRequest.IsFork = True'; + } + else { + $key = "SDK_Dotnet_V4_org"; + $value = "$(SDK_Dotnet_V4_org_Url)"; + } + + $file = "$(Build.SourcesDirectory)\nuget.config"; + + $content = @" + + + + + + + + + + + + "@; + + New-Item -Path $file -ItemType "file" -Value $content -Force; + '-------------'; get-content "$file"; '==================='; + displayName: Create nuget.config for SDK_Dotnet_V4_org feed \ No newline at end of file diff --git a/build/onebranch/sign-steps.yml b/build/onebranch/sign-steps.yml new file mode 100644 index 0000000000..18aa75a5ec --- /dev/null +++ b/build/onebranch/sign-steps.yml @@ -0,0 +1,10 @@ +steps: +- task: onebranch.pipeline.signing@1 + displayName: "Sign output" + inputs: + command: "sign" + signing_profile: "external_distribution" + signing_environment: "azure-ado" + files_to_sign: "**/*.exe;**/*.dll;**/*.ps1;**/*.psm1" + search_root: "libraries" + diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/Microsoft.BotFramework.CSharp.CoreBot.nuspec b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/Microsoft.BotFramework.CSharp.CoreBot.nuspec index f99f37631b..4e50a0a694 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/Microsoft.BotFramework.CSharp.CoreBot.nuspec +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/Microsoft.BotFramework.CSharp.CoreBot.nuspec @@ -2,7 +2,7 @@ Microsoft.Bot.Framework.CSharp.CoreBot - 4.18.1 + 4.22.0 A .NET Core Template for Microsoft Bot Framework v4. Will let you quickly set up a conversational AI bot with core features every bot is likely to use. diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/.template.config/template.json b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/.template.config/template.json index 473f91664b..d144487133 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/.template.config/template.json +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/.template.config/template.json @@ -12,7 +12,7 @@ "defaultName": "CoreBot", "groupIdentity": "Microsoft.BotFramework.CSharp.CoreBot", "identity": "Microsoft.BotFramework.CSharp.CoreBot", - "name": "Bot Framework Core Bot (v4.18.1)", + "name": "Bot Framework Core Bot (v4.22.0)", "preferNameDirectory": true, "sourceName": "Microsoft.BotFramework.CoreBot", "shortName": "corebot", @@ -26,7 +26,7 @@ "type": "generated", "generator": "constant", "parameters": { - "value": "v4.18.1" + "value": "v4.22.0" }, "replaces": "__vX.X.X__" }, diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Bots/DialogAndWelcomeBotTests.cs b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Bots/DialogAndWelcomeBotTests.cs index d635da7e5a..6d6948f4d0 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Bots/DialogAndWelcomeBotTests.cs +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Bots/DialogAndWelcomeBotTests.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with CoreBot .NET Template version __vX.X.X__ +// Generated with CoreBot .NET Template version __vX.X.X__ using System.Collections.Generic; using System.Linq; diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Bots/DialogBotTests.cs b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Bots/DialogBotTests.cs index 09b34812bf..8bfcea9ae8 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Bots/DialogBotTests.cs +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Bots/DialogBotTests.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with CoreBot .NET Template version __vX.X.X__ +// Generated with CoreBot .NET Template version __vX.X.X__ using System; using System.Threading; diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Common/BotTestBase.cs b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Common/BotTestBase.cs index 36844c9ef5..40c0f9367f 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Common/BotTestBase.cs +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Common/BotTestBase.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with CoreBot .NET Template version __vX.X.X__ +// Generated with CoreBot .NET Template version __vX.X.X__ using System; using System.IO; diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Common/SimpleMockFactory.cs b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Common/SimpleMockFactory.cs index 92fdc64bb9..e9daf16b3e 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Common/SimpleMockFactory.cs +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Common/SimpleMockFactory.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with CoreBot .NET Template version __vX.X.X__ +// Generated with CoreBot .NET Template version __vX.X.X__ using System.Threading; using System.Threading.Tasks; diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Controllers/BotControllerTests.cs b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Controllers/BotControllerTests.cs index 55d11c68cf..0431706521 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Controllers/BotControllerTests.cs +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Controllers/BotControllerTests.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with CoreBot .NET Template version __vX.X.X__ +// Generated with CoreBot .NET Template version __vX.X.X__ using System.Threading; using System.Threading.Tasks; diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/CoreBot.Tests.csproj b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/CoreBot.Tests.csproj index 1029b87bb4..747fafa73b 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/CoreBot.Tests.csproj +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/CoreBot.Tests.csproj @@ -22,8 +22,8 @@ - - + + diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Dialogs/BookingDialogTests.cs b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Dialogs/BookingDialogTests.cs index 87f7d076f8..79e59493d5 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Dialogs/BookingDialogTests.cs +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Dialogs/BookingDialogTests.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with CoreBot .NET Template version __vX.X.X__ +// Generated with CoreBot .NET Template version __vX.X.X__ using System.Threading.Tasks; using CoreBot.Dialogs; diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Dialogs/CancelAndHelpDialogTests.cs b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Dialogs/CancelAndHelpDialogTests.cs index ef69ad7725..55364de15c 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Dialogs/CancelAndHelpDialogTests.cs +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Dialogs/CancelAndHelpDialogTests.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with CoreBot .NET Template version __vX.X.X__ +// Generated with CoreBot .NET Template version __vX.X.X__ using System; using System.Threading; diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Dialogs/DateResolverDialogTests.cs b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Dialogs/DateResolverDialogTests.cs index 75c406456b..6f7dc4f150 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Dialogs/DateResolverDialogTests.cs +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Dialogs/DateResolverDialogTests.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with CoreBot .NET Template version __vX.X.X__ +// Generated with CoreBot .NET Template version __vX.X.X__ using System.Threading.Tasks; using CoreBot.Dialogs; diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Dialogs/MainDialogTests.cs b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Dialogs/MainDialogTests.cs index c1d16c14c8..bd494c9fac 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Dialogs/MainDialogTests.cs +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Dialogs/MainDialogTests.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with CoreBot .NET Template version __vX.X.X__ +// Generated with CoreBot .NET Template version __vX.X.X__ using System; using System.Collections.Generic; diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Dialogs/TestData/BookingDialogTestCase.cs b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Dialogs/TestData/BookingDialogTestCase.cs index 9826a3729a..225598a903 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Dialogs/TestData/BookingDialogTestCase.cs +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Dialogs/TestData/BookingDialogTestCase.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with CoreBot .NET Template version __vX.X.X__ +// Generated with CoreBot .NET Template version __vX.X.X__ using CoreBot; diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Dialogs/TestData/BookingDialogTestsDataGenerator.cs b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Dialogs/TestData/BookingDialogTestsDataGenerator.cs index b5917ed65c..89e20ee64c 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Dialogs/TestData/BookingDialogTestsDataGenerator.cs +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Dialogs/TestData/BookingDialogTestsDataGenerator.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with CoreBot .NET Template version __vX.X.X__ +// Generated with CoreBot .NET Template version __vX.X.X__ using System; using System.Collections.Generic; diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Dialogs/TestData/DateResolverDialogTestCase.cs b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Dialogs/TestData/DateResolverDialogTestCase.cs index a853cd753d..dc349d0e03 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Dialogs/TestData/DateResolverDialogTestCase.cs +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Dialogs/TestData/DateResolverDialogTestCase.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with CoreBot .NET Template version __vX.X.X__ +// Generated with CoreBot .NET Template version __vX.X.X__ namespace CoreBot.Tests.Dialogs.TestData { diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Dialogs/TestData/DateResolverDialogTestsDataGenerator.cs b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Dialogs/TestData/DateResolverDialogTestsDataGenerator.cs index 6e87d8b664..12a6d6d047 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Dialogs/TestData/DateResolverDialogTestsDataGenerator.cs +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot.Tests/Dialogs/TestData/DateResolverDialogTestsDataGenerator.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with CoreBot .NET Template version __vX.X.X__ +// Generated with CoreBot .NET Template version __vX.X.X__ using System; using System.Collections.Generic; diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/AdapterWithErrorHandler.cs b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/AdapterWithErrorHandler.cs index 09fc9d939f..d0e53fd610 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/AdapterWithErrorHandler.cs +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/AdapterWithErrorHandler.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with CoreBot .NET Template version __vX.X.X__ +// Generated with CoreBot .NET Template version __vX.X.X__ using System; using Microsoft.Bot.Builder; diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/BookingDetails.cs b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/BookingDetails.cs index 324a3fd829..26c2658d17 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/BookingDetails.cs +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/BookingDetails.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with CoreBot .NET Template version __vX.X.X__ +// Generated with CoreBot .NET Template version __vX.X.X__ namespace CoreBot { diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/Bots/DialogAndWelcomeBot.cs b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/Bots/DialogAndWelcomeBot.cs index 53b138e630..f7b6f25cea 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/Bots/DialogAndWelcomeBot.cs +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/Bots/DialogAndWelcomeBot.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with CoreBot .NET Template version __vX.X.X__ +// Generated with CoreBot .NET Template version __vX.X.X__ using System.Collections.Generic; using System.IO; diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/Bots/DialogBot.cs b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/Bots/DialogBot.cs index 60953cdbc1..74c461da5d 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/Bots/DialogBot.cs +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/Bots/DialogBot.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with CoreBot .NET Template version __vX.X.X__ +// Generated with CoreBot .NET Template version __vX.X.X__ using System.Threading; using System.Threading.Tasks; diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/CognitiveModels/FlightBookingEx.cs b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/CognitiveModels/FlightBookingEx.cs index 14a1a2793e..c91618b5d6 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/CognitiveModels/FlightBookingEx.cs +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/CognitiveModels/FlightBookingEx.cs @@ -1,5 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using System.Linq; diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/Controllers/BotController.cs b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/Controllers/BotController.cs index 52d1431b17..78aa6b772c 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/Controllers/BotController.cs +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/Controllers/BotController.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with CoreBot .NET Template version __vX.X.X__ +// Generated with CoreBot .NET Template version __vX.X.X__ using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/CoreBot.csproj b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/CoreBot.csproj index e83878db70..49ff5d4629 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/CoreBot.csproj +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/CoreBot.csproj @@ -15,9 +15,9 @@ - - - + + + diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/Dialogs/BookingDialog.cs b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/Dialogs/BookingDialog.cs index c285d0b92f..ccd1b35a67 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/Dialogs/BookingDialog.cs +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/Dialogs/BookingDialog.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with CoreBot .NET Template version __vX.X.X__ +// Generated with CoreBot .NET Template version __vX.X.X__ using System.Threading; using System.Threading.Tasks; diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/Dialogs/CancelAndHelpDialog.cs b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/Dialogs/CancelAndHelpDialog.cs index c46bd6f912..8a6665e130 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/Dialogs/CancelAndHelpDialog.cs +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/Dialogs/CancelAndHelpDialog.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with CoreBot .NET Template version __vX.X.X__ +// Generated with CoreBot .NET Template version __vX.X.X__ using System.Threading; using System.Threading.Tasks; diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/Dialogs/DateResolverDialog.cs b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/Dialogs/DateResolverDialog.cs index 9d7da418d2..229e79414c 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/Dialogs/DateResolverDialog.cs +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/Dialogs/DateResolverDialog.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with CoreBot .NET Template version __vX.X.X__ +// Generated with CoreBot .NET Template version __vX.X.X__ using System.Collections.Generic; using System.Threading; diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/Dialogs/MainDialog.cs b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/Dialogs/MainDialog.cs index f0b553e3b4..3e0aa7cacb 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/Dialogs/MainDialog.cs +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/Dialogs/MainDialog.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with CoreBot .NET Template version __vX.X.X__ +// Generated with CoreBot .NET Template version __vX.X.X__ using System; using System.Collections.Generic; diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/FlightBookingRecognizer.cs b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/FlightBookingRecognizer.cs index e9c628ffac..0a982dee9f 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/FlightBookingRecognizer.cs +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/FlightBookingRecognizer.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with CoreBot .NET Template version __vX.X.X__ +// Generated with CoreBot .NET Template version __vX.X.X__ using System.Threading; using System.Threading.Tasks; diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/Program.cs b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/Program.cs index c9626f0b62..2065bfe308 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/Program.cs +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/Program.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with CoreBot .NET Template version __vX.X.X__ +// Generated with CoreBot .NET Template version __vX.X.X__ using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Hosting; diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/Startup.cs b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/Startup.cs index 7499c8b30d..ea6248aa8d 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/Startup.cs +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.CoreBot/content/CoreBot/Startup.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with CoreBot .NET Template version __vX.X.X__ +// Generated with CoreBot .NET Template version __vX.X.X__ using CoreBot.Bots; using CoreBot.Dialogs; diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EchoBot/Microsoft.BotFramework.CSharp.EchoBot.nuspec b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EchoBot/Microsoft.BotFramework.CSharp.EchoBot.nuspec index b99a56ec09..63772a9ba7 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EchoBot/Microsoft.BotFramework.CSharp.EchoBot.nuspec +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EchoBot/Microsoft.BotFramework.CSharp.EchoBot.nuspec @@ -2,7 +2,7 @@ Microsoft.Bot.Framework.CSharp.EchoBot - 4.18.1 + 4.22.0 A .NET Core Template for Microsoft Bot Framework v4. Will let you quickly set up a bot that simply "echoes" back to the user anything the user says to the bot. This is a little more than "Hello World!" diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EchoBot/content/.template.config/template.json b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EchoBot/content/.template.config/template.json index d66a786ba1..a69d513994 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EchoBot/content/.template.config/template.json +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EchoBot/content/.template.config/template.json @@ -11,7 +11,7 @@ "defaultName": "EchoBot", "groupIdentity": "Microsoft.BotFramework.CSharp.EchoBot", "identity": "Microsoft.BotFramework.CSharp.EchoBot", - "name": "Bot Framework Echo Bot (v4.18.1)", + "name": "Bot Framework Echo Bot (v4.22.0)", "preferNameDirectory": true, "sourceName": "Microsoft.BotFramework.EchoBot", "shortName": "echobot", @@ -25,7 +25,7 @@ "type": "generated", "generator": "constant", "parameters": { - "value": "v4.18.1" + "value": "v4.22.0" }, "replaces": "__vX.X.X__" }, diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EchoBot/content/AdapterWithErrorHandler.cs b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EchoBot/content/AdapterWithErrorHandler.cs index 179f6ee50d..caa37afbf7 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EchoBot/content/AdapterWithErrorHandler.cs +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EchoBot/content/AdapterWithErrorHandler.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with EchoBot .NET Template version __vX.X.X__ +// Generated with EchoBot .NET Template version __vX.X.X__ using Microsoft.Bot.Builder.Integration.AspNet.Core; using Microsoft.Bot.Builder.TraceExtensions; diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EchoBot/content/Bots/EchoBot.cs b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EchoBot/content/Bots/EchoBot.cs index 28eac917d9..2e6666a81d 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EchoBot/content/Bots/EchoBot.cs +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EchoBot/content/Bots/EchoBot.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with EchoBot .NET Template version __vX.X.X__ +// Generated with EchoBot .NET Template version __vX.X.X__ using System.Collections.Generic; using System.Threading; diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EchoBot/content/Controllers/BotController.cs b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EchoBot/content/Controllers/BotController.cs index b70538586b..d9cc7a9e33 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EchoBot/content/Controllers/BotController.cs +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EchoBot/content/Controllers/BotController.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with EchoBot .NET Template version __vX.X.X__ +// Generated with EchoBot .NET Template version __vX.X.X__ using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EchoBot/content/Microsoft.BotFramework.EchoBot.csproj b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EchoBot/content/Microsoft.BotFramework.EchoBot.csproj index 5b22d10544..5fd86bb4f3 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EchoBot/content/Microsoft.BotFramework.EchoBot.csproj +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EchoBot/content/Microsoft.BotFramework.EchoBot.csproj @@ -7,7 +7,7 @@ - + diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EchoBot/content/Program.cs b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EchoBot/content/Program.cs index 6ad5c992bf..2b89051e66 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EchoBot/content/Program.cs +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EchoBot/content/Program.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with EchoBot .NET Template version __vX.X.X__ +// Generated with EchoBot .NET Template version __vX.X.X__ using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Hosting; diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EchoBot/content/Startup.cs b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EchoBot/content/Startup.cs index a133a77a6e..efda137852 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EchoBot/content/Startup.cs +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EchoBot/content/Startup.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with EchoBot .NET Template version __vX.X.X__ +// Generated with EchoBot .NET Template version __vX.X.X__ using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EmptyBot/Microsoft.BotFramework.CSharp.EmptyBot.nuspec b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EmptyBot/Microsoft.BotFramework.CSharp.EmptyBot.nuspec index a685404f2e..464b3af86b 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EmptyBot/Microsoft.BotFramework.CSharp.EmptyBot.nuspec +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EmptyBot/Microsoft.BotFramework.CSharp.EmptyBot.nuspec @@ -2,7 +2,7 @@ Microsoft.Bot.Framework.CSharp.EmptyBot - 4.18.1 + 4.22.0 A .NET Core Template for Microsoft Bot Framework v4. A good template if you are familiar with Bot Framework v4, and simple want a basic skeleton project. diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EmptyBot/content/.template.config/template.json b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EmptyBot/content/.template.config/template.json index 03186ee321..ab549fbf5f 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EmptyBot/content/.template.config/template.json +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EmptyBot/content/.template.config/template.json @@ -11,7 +11,7 @@ "defaultName": "EmptyBot", "groupIdentity": "Microsoft.BotFramework.CSharp.EmptyBot", "identity": "Microsoft.BotFramework.CSharp.EmptyBot", - "name": "Bot Framework Empty Bot (v4.18.1)", + "name": "Bot Framework Empty Bot (v4.22.0)", "preferNameDirectory": true, "sourceName": "Microsoft.BotFramework.EmptyBot", "shortName": "emptybot", @@ -25,7 +25,7 @@ "type": "generated", "generator": "constant", "parameters": { - "value": "v4.18.1" + "value": "v4.22.0" }, "replaces": "__vX.X.X__" }, diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EmptyBot/content/AdapterWithErrorHandler.cs b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EmptyBot/content/AdapterWithErrorHandler.cs index a86ed5c93f..731ccf18aa 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EmptyBot/content/AdapterWithErrorHandler.cs +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EmptyBot/content/AdapterWithErrorHandler.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with EmptyBot .NET Template version __vX.X.X__ +// Generated with EmptyBot .NET Template version __vX.X.X__ using Microsoft.Bot.Builder.Integration.AspNet.Core; using Microsoft.Bot.Builder.TraceExtensions; diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EmptyBot/content/Controllers/BotController.cs b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EmptyBot/content/Controllers/BotController.cs index 7712ec04f9..3a92a9d039 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EmptyBot/content/Controllers/BotController.cs +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EmptyBot/content/Controllers/BotController.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with EmptyBot .NET Template version __vX.X.X__ +// Generated with EmptyBot .NET Template version __vX.X.X__ using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EmptyBot/content/EmptyBot.cs b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EmptyBot/content/EmptyBot.cs index dbe3a15d13..0873d5cf41 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EmptyBot/content/EmptyBot.cs +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EmptyBot/content/EmptyBot.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with EmptyBot .NET Template version __vX.X.X__ +// Generated with EmptyBot .NET Template version __vX.X.X__ using System.Collections.Generic; using System.Threading; diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EmptyBot/content/Microsoft.BotFramework.EmptyBot.csproj b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EmptyBot/content/Microsoft.BotFramework.EmptyBot.csproj index b1865d9a30..ad2b6db81e 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EmptyBot/content/Microsoft.BotFramework.EmptyBot.csproj +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EmptyBot/content/Microsoft.BotFramework.EmptyBot.csproj @@ -8,7 +8,7 @@ - + diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EmptyBot/content/Program.cs b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EmptyBot/content/Program.cs index 255a032d32..6af065fd88 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EmptyBot/content/Program.cs +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EmptyBot/content/Program.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with EmptyBot .NET Template version __vX.X.X__ +// Generated with EmptyBot .NET Template version __vX.X.X__ using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Hosting; diff --git a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EmptyBot/content/Startup.cs b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EmptyBot/content/Startup.cs index 62d9beed35..da7ca2cd10 100644 --- a/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EmptyBot/content/Startup.cs +++ b/generators/dotnet-templates/Microsoft.BotFramework.CSharp.EmptyBot/content/Startup.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with EmptyBot .NET Template version __vX.X.X__ +// Generated with EmptyBot .NET Template version __vX.X.X__ using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; diff --git a/generators/dotnet-templates/README.md b/generators/dotnet-templates/README.md index c072f660af..98160c9fd0 100644 --- a/generators/dotnet-templates/README.md +++ b/generators/dotnet-templates/README.md @@ -250,13 +250,13 @@ nuget pack Microsoft.BotFramework.CSharp.CoreBot The `nuget pack` command will build a package using a filename convention that includes the value of the `version` tag of the project's `.nuspec` file. For example, a `.nuspec` file that has the following `version` tag specified: ```xml - 4.18.1 + 4.22.0 ``` -Given the example above with `.nuspec` `version` of 4.18.1, running `nuget pack Microsoft.BotFramework.CSharp.EchoBot` will create a NuGet package named `Microsoft.Bot.Framework.CSharp.EchoBot.4.18.1.nupkg`. We'll use this NuGet package name in subsequent steps. +Given the example above with `.nuspec` `version` of 4.22.0, running `nuget pack Microsoft.BotFramework.CSharp.EchoBot` will create a NuGet package named `Microsoft.Bot.Framework.CSharp.EchoBot.4.22.0.nupkg`. We'll use this NuGet package name in subsequent steps. ```bash # install the locally built .nupkg (EchoBot template, assuming 4.9.0 version tag) -dotnet new -i ./Microsoft.Bot.Framework.CSharp.EchoBot.4.18.1.nupkg +dotnet new -i ./Microsoft.Bot.Framework.CSharp.EchoBot.4.22.0.nupkg ``` To see a list of currently installed templates. With this command you should now see the locally build and installed NuGet package. diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/HOW_TO_VERSION.md b/generators/vsix-vs-win/BotBuilderVSIX-V4/HOW_TO_VERSION.md index c0edc48ee5..2dc799bc30 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/HOW_TO_VERSION.md +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/HOW_TO_VERSION.md @@ -17,7 +17,7 @@ The `.vstemplate` files have a `` tag that ```xml - <<<-HAND-CRAFTED-semver + <<<-HAND-CRAFTED-semver ``` diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/AdapterWithErrorHandler.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/AdapterWithErrorHandler.cs index 46db42e7e2..e2fe8de777 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/AdapterWithErrorHandler.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/AdapterWithErrorHandler.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using System; using Microsoft.Bot.Builder; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/BookingDetails.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/BookingDetails.cs index 291ac02ed0..7b9e348da2 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/BookingDetails.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/BookingDetails.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ namespace $safeprojectname$ { diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/Bots/DialogAndWelcomeBot.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/Bots/DialogAndWelcomeBot.cs index e83d422dad..81ed0f1c8b 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/Bots/DialogAndWelcomeBot.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/Bots/DialogAndWelcomeBot.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using System.Collections.Generic; using System.IO; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/Bots/DialogBot.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/Bots/DialogBot.cs index a4c389d85f..92b0ac3cde 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/Bots/DialogBot.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/Bots/DialogBot.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using System.Threading; using System.Threading.Tasks; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/CognitiveModels/FlightBookingEx.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/CognitiveModels/FlightBookingEx.cs index dfb6849b26..bbbbc46bde 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/CognitiveModels/FlightBookingEx.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/CognitiveModels/FlightBookingEx.cs @@ -1,5 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using System.Linq; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/Controllers/BotController.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/Controllers/BotController.cs index abe8872f0d..c34180142c 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/Controllers/BotController.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/Controllers/BotController.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/CoreBot.csproj b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/CoreBot.csproj index 02bac937d0..8a1e17e1fe 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/CoreBot.csproj +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/CoreBot.csproj @@ -15,9 +15,9 @@ - - - + + + diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/CoreBot.vstemplate b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/CoreBot.vstemplate index 72f7cff599..5adc0edb2a 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/CoreBot.vstemplate +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/CoreBot.vstemplate @@ -23,7 +23,7 @@ - + diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/Dialogs/BookingDialog.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/Dialogs/BookingDialog.cs index d414047584..1df0076048 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/Dialogs/BookingDialog.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/Dialogs/BookingDialog.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using System.Threading; using System.Threading.Tasks; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/Dialogs/CancelAndHelpDialog.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/Dialogs/CancelAndHelpDialog.cs index c242b5d229..0e9c039446 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/Dialogs/CancelAndHelpDialog.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/Dialogs/CancelAndHelpDialog.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using System.Threading; using System.Threading.Tasks; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/Dialogs/DateResolverDialog.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/Dialogs/DateResolverDialog.cs index bfac5c460c..eebdbb6a7a 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/Dialogs/DateResolverDialog.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/Dialogs/DateResolverDialog.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using System.Collections.Generic; using System.Threading; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/Dialogs/MainDialog.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/Dialogs/MainDialog.cs index ab596fd4ce..46d65c2760 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/Dialogs/MainDialog.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/Dialogs/MainDialog.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using System; using System.Collections.Generic; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/FlightBookingRecognizer.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/FlightBookingRecognizer.cs index 094ec705e1..5f50672409 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/FlightBookingRecognizer.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/FlightBookingRecognizer.cs @@ -1,5 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using System.Threading; using System.Threading.Tasks; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/Program.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/Program.cs index eaeca0ac5f..dd8e0ff397 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/Program.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/Program.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Hosting; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/Startup.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/Startup.cs index 0caf2e2a1f..7ca1d29da1 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/Startup.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBot/Startup.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Bots/DialogAndWelcomeBotTests.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Bots/DialogAndWelcomeBotTests.cs index 5671e9e320..6589617366 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Bots/DialogAndWelcomeBotTests.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Bots/DialogAndWelcomeBotTests.cs @@ -1,5 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using System.Collections.Generic; using System.Linq; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Bots/DialogBotTests.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Bots/DialogBotTests.cs index e83238fb8f..0e95e8be0b 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Bots/DialogBotTests.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Bots/DialogBotTests.cs @@ -1,5 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using System; using System.Threading; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Common/BotTestBase.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Common/BotTestBase.cs index 698092beb1..6bfa89fbbb 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Common/BotTestBase.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Common/BotTestBase.cs @@ -1,5 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using System; using System.IO; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Common/SimpleMockFactory.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Common/SimpleMockFactory.cs index 0855813b12..05c1cffb7e 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Common/SimpleMockFactory.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Common/SimpleMockFactory.cs @@ -1,5 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using System.Threading; using System.Threading.Tasks; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Controllers/BotControllerTests.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Controllers/BotControllerTests.cs index 4d6bf86634..d1bc18d79b 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Controllers/BotControllerTests.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Controllers/BotControllerTests.cs @@ -1,5 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using System.Threading; using System.Threading.Tasks; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/CoreBot.Tests.csproj b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/CoreBot.Tests.csproj index b9a27a50d6..0410765459 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/CoreBot.Tests.csproj +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/CoreBot.Tests.csproj @@ -22,7 +22,7 @@ - + diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/CoreBot.tests.vstemplate b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/CoreBot.tests.vstemplate index 7bcc01ad17..7b182e9d7e 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/CoreBot.tests.vstemplate +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/CoreBot.tests.vstemplate @@ -24,7 +24,7 @@ - + diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Dialogs/BookingDialogTests.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Dialogs/BookingDialogTests.cs index 87a2841c74..10a40c301a 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Dialogs/BookingDialogTests.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Dialogs/BookingDialogTests.cs @@ -1,5 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using System.Threading.Tasks; using $ext_safeprojectname$.Tests.Common; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Dialogs/CancelAndHelpDialogTests.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Dialogs/CancelAndHelpDialogTests.cs index 65a5fe8453..420b6330e8 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Dialogs/CancelAndHelpDialogTests.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Dialogs/CancelAndHelpDialogTests.cs @@ -1,5 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using System; using System.Threading; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Dialogs/DateResolverDialogTests.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Dialogs/DateResolverDialogTests.cs index 80fc2980fc..2480c3eca8 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Dialogs/DateResolverDialogTests.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Dialogs/DateResolverDialogTests.cs @@ -1,5 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using System.Threading.Tasks; using $ext_safeprojectname$.Tests.Common; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Dialogs/MainDialogTests.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Dialogs/MainDialogTests.cs index 60b25ea490..8b6f8ff221 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Dialogs/MainDialogTests.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Dialogs/MainDialogTests.cs @@ -1,5 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using System; using System.Collections.Generic; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Dialogs/TestData/BookingDialogTestCase.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Dialogs/TestData/BookingDialogTestCase.cs index c8c9e5f0ea..29a822dbc6 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Dialogs/TestData/BookingDialogTestCase.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Dialogs/TestData/BookingDialogTestCase.cs @@ -1,5 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using $ext_safeprojectname$; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Dialogs/TestData/BookingDialogTestsDataGenerator.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Dialogs/TestData/BookingDialogTestsDataGenerator.cs index 0bb149447e..db9b0271a3 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Dialogs/TestData/BookingDialogTestsDataGenerator.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Dialogs/TestData/BookingDialogTestsDataGenerator.cs @@ -1,5 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using System; using System.Collections.Generic; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Dialogs/TestData/DateResolverDialogTestCase.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Dialogs/TestData/DateResolverDialogTestCase.cs index f8156b7018..e2da8f0356 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Dialogs/TestData/DateResolverDialogTestCase.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Dialogs/TestData/DateResolverDialogTestCase.cs @@ -1,5 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ namespace $ext_safeprojectname$.Tests.Dialogs.TestData { diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Dialogs/TestData/DateResolverDialogTestsDataGenerator.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Dialogs/TestData/DateResolverDialogTestsDataGenerator.cs index 4bebbae750..453ef9733b 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Dialogs/TestData/DateResolverDialogTestsDataGenerator.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot.tests/Dialogs/TestData/DateResolverDialogTestsDataGenerator.cs @@ -1,5 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using System; using System.Collections.Generic; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/AdapterWithErrorHandler.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/AdapterWithErrorHandler.cs index 46db42e7e2..e2fe8de777 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/AdapterWithErrorHandler.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/AdapterWithErrorHandler.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using System; using Microsoft.Bot.Builder; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/BookingDetails.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/BookingDetails.cs index 150d8c8530..ecb0860388 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/BookingDetails.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/BookingDetails.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ namespace $ext_safeprojectname$ { diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/Bots/DialogAndWelcomeBot.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/Bots/DialogAndWelcomeBot.cs index e2d0ef9e68..4324c64c98 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/Bots/DialogAndWelcomeBot.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/Bots/DialogAndWelcomeBot.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using System.Collections.Generic; using System.IO; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/Bots/DialogBot.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/Bots/DialogBot.cs index 74954bf808..498e6a4d95 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/Bots/DialogBot.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/Bots/DialogBot.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using System.Threading; using System.Threading.Tasks; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/CognitiveModels/FlightBookingEx.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/CognitiveModels/FlightBookingEx.cs index e69feb2813..dac42e0d73 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/CognitiveModels/FlightBookingEx.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/CognitiveModels/FlightBookingEx.cs @@ -1,5 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using System.Linq; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/Controllers/BotController.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/Controllers/BotController.cs index 485bbf72e7..b8883d0e02 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/Controllers/BotController.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/Controllers/BotController.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/CoreBot.csproj b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/CoreBot.csproj index be6ea9376d..50975eb554 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/CoreBot.csproj +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/CoreBot.csproj @@ -15,9 +15,9 @@ - - - + + + diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/CoreBot.vstemplate b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/CoreBot.vstemplate index 186004b6ef..f81b4daa72 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/CoreBot.vstemplate +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/CoreBot.vstemplate @@ -24,7 +24,7 @@ - + diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/Dialogs/BookingDialog.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/Dialogs/BookingDialog.cs index 6408553df4..0fdc8d44cd 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/Dialogs/BookingDialog.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/Dialogs/BookingDialog.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using System.Threading; using System.Threading.Tasks; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/Dialogs/CancelAndHelpDialog.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/Dialogs/CancelAndHelpDialog.cs index 35f211b6d6..8815207947 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/Dialogs/CancelAndHelpDialog.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/Dialogs/CancelAndHelpDialog.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using System.Threading; using System.Threading.Tasks; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/Dialogs/DateResolverDialog.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/Dialogs/DateResolverDialog.cs index 9780d89709..a2baedc1c4 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/Dialogs/DateResolverDialog.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/Dialogs/DateResolverDialog.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using System.Collections.Generic; using System.Threading; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/Dialogs/MainDialog.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/Dialogs/MainDialog.cs index 88b60989eb..ac125577d4 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/Dialogs/MainDialog.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/Dialogs/MainDialog.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using System; using System.Collections.Generic; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/FlightBookingRecognizer.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/FlightBookingRecognizer.cs index ad90fd082d..4198e0c2be 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/FlightBookingRecognizer.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/FlightBookingRecognizer.cs @@ -1,5 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using System.Threading; using System.Threading.Tasks; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/Program.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/Program.cs index e214f64e9a..850107363c 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/Program.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/Program.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Hosting; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/Startup.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/Startup.cs index 2606731b07..dc239a437e 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/Startup.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBot/Startup.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBotWithTests.vstemplate b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBotWithTests.vstemplate index 5bfd8daefe..7f1477608e 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBotWithTests.vstemplate +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/CoreBotWithTests/CoreBotWithTests.vstemplate @@ -23,7 +23,7 @@ - + diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EchoBot/AdapterWithErrorHandler.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EchoBot/AdapterWithErrorHandler.cs index b7d1a653f9..17813448fa 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EchoBot/AdapterWithErrorHandler.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EchoBot/AdapterWithErrorHandler.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using Microsoft.Bot.Builder.Integration.AspNet.Core; using Microsoft.Bot.Builder.TraceExtensions; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EchoBot/Bots/EchoBot.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EchoBot/Bots/EchoBot.cs index 2c68ff68d2..192cc87b06 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EchoBot/Bots/EchoBot.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EchoBot/Bots/EchoBot.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio EchoBot v$templateversion$ +// Generated with Bot Builder V4 SDK Template for Visual Studio EchoBot v$templateversion$ using System.Collections.Generic; using System.Threading; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EchoBot/Controllers/BotController.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EchoBot/Controllers/BotController.cs index c0e4eb4961..cb85c17cf9 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EchoBot/Controllers/BotController.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EchoBot/Controllers/BotController.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio EchoBot v$templateversion$ +// Generated with Bot Builder V4 SDK Template for Visual Studio EchoBot v$templateversion$ using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EchoBot/EchoBot.csproj b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EchoBot/EchoBot.csproj index 12d32013f3..224f9d1db4 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EchoBot/EchoBot.csproj +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EchoBot/EchoBot.csproj @@ -7,7 +7,7 @@ - + diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EchoBot/EchoBot.vstemplate b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EchoBot/EchoBot.vstemplate index 4eacbcdd2d..8d88e4a4b0 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EchoBot/EchoBot.vstemplate +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EchoBot/EchoBot.vstemplate @@ -23,7 +23,7 @@ - + diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EchoBot/Program.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EchoBot/Program.cs index 85765b2286..197a52f765 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EchoBot/Program.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EchoBot/Program.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio EchoBot v$templateversion$ +// Generated with Bot Builder V4 SDK Template for Visual Studio EchoBot v$templateversion$ using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Hosting; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EchoBot/Startup.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EchoBot/Startup.cs index 08a12e616e..027ac7e1fd 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EchoBot/Startup.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EchoBot/Startup.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio EchoBot v$templateversion$ +// Generated with Bot Builder V4 SDK Template for Visual Studio EchoBot v$templateversion$ using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EmptyBot/AdapterWithErrorHandler.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EmptyBot/AdapterWithErrorHandler.cs index b7d1a653f9..17813448fa 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EmptyBot/AdapterWithErrorHandler.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EmptyBot/AdapterWithErrorHandler.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using Microsoft.Bot.Builder.Integration.AspNet.Core; using Microsoft.Bot.Builder.TraceExtensions; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EmptyBot/Controllers/BotController.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EmptyBot/Controllers/BotController.cs index 04b719b4f5..057c64e23e 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EmptyBot/Controllers/BotController.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EmptyBot/Controllers/BotController.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio EmptyBot v$templateversion$ +// Generated with Bot Builder V4 SDK Template for Visual Studio EmptyBot v$templateversion$ using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EmptyBot/EmptyBot.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EmptyBot/EmptyBot.cs index bb8e48ede2..bbdafcd507 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EmptyBot/EmptyBot.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EmptyBot/EmptyBot.cs @@ -1,5 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. +// Generated with Bot Builder V4 SDK Template for Visual Studio CoreBot v$templateversion$ using System.Collections.Generic; using System.Threading; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EmptyBot/EmptyBot.csproj b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EmptyBot/EmptyBot.csproj index 12d32013f3..224f9d1db4 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EmptyBot/EmptyBot.csproj +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EmptyBot/EmptyBot.csproj @@ -7,7 +7,7 @@ - + diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EmptyBot/EmptyBot.vstemplate b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EmptyBot/EmptyBot.vstemplate index 3d5b0d6709..4653c900ad 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EmptyBot/EmptyBot.vstemplate +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EmptyBot/EmptyBot.vstemplate @@ -23,7 +23,7 @@ - + diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EmptyBot/Program.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EmptyBot/Program.cs index 6dd9983da9..e7d49103f6 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EmptyBot/Program.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EmptyBot/Program.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio EmptyBot v$templateversion$ +// Generated with Bot Builder V4 SDK Template for Visual Studio EmptyBot v$templateversion$ using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Hosting; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EmptyBot/Startup.cs b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EmptyBot/Startup.cs index 399e93acaf..3e6801a438 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EmptyBot/Startup.cs +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/UncompressedProjectTemplates/EmptyBot/Startup.cs @@ -1,7 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio EmptyBot v$templateversion$ +// Generated with Bot Builder V4 SDK Template for Visual Studio EmptyBot v$templateversion$ using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; diff --git a/generators/vsix-vs-win/BotBuilderVSIX-V4/source.extension.vsixmanifest b/generators/vsix-vs-win/BotBuilderVSIX-V4/source.extension.vsixmanifest index b09172033e..4f8cf37c1e 100644 --- a/generators/vsix-vs-win/BotBuilderVSIX-V4/source.extension.vsixmanifest +++ b/generators/vsix-vs-win/BotBuilderVSIX-V4/source.extension.vsixmanifest @@ -1,7 +1,7 @@ - + Bot Framework v4 SDK Templates for Visual Studio Templates for Microsoft Bot Framework v4. Will let you quickly create a bot that uses core AI capabilities. https://aka.ms/BotBuilderOverview diff --git a/global.json b/global.json new file mode 100644 index 0000000000..75f5044ab6 --- /dev/null +++ b/global.json @@ -0,0 +1,10 @@ +{ + "sdk": { + "version": "6.x", + "rollForward": "latestFeature" + }, + "msbuild-sdks": { + "Microsoft.Build.CentralPackageVersions": "2.0.147", + "Microsoft.Build.Traversal": "3.0.54" + } +} \ No newline at end of file diff --git a/libraries/Microsoft.Bot.Builder.Azure.Blobs/BlobsStorage.cs b/libraries/Microsoft.Bot.Builder.Azure.Blobs/BlobsStorage.cs index f0267976e1..18e503416d 100644 --- a/libraries/Microsoft.Bot.Builder.Azure.Blobs/BlobsStorage.cs +++ b/libraries/Microsoft.Bot.Builder.Azure.Blobs/BlobsStorage.cs @@ -277,8 +277,10 @@ internal BlobsStorage(BlobContainerClient containerClient, JsonSerializer jsonSe await streamWriter.FlushAsync().ConfigureAwait(false); memoryStream.Seek(0, SeekOrigin.Begin); + var blobHttpHeaders = new BlobHttpHeaders(); + blobHttpHeaders.ContentType = "application/json"; - await blobReference.UploadAsync(memoryStream, conditions: accessCondition, transferOptions: _storageTransferOptions, cancellationToken: cancellationToken).ConfigureAwait(false); + await blobReference.UploadAsync(memoryStream, conditions: accessCondition, transferOptions: _storageTransferOptions, cancellationToken: cancellationToken, httpHeaders: blobHttpHeaders).ConfigureAwait(false); } catch (RequestFailedException ex) when (ex.Status == (int)HttpStatusCode.BadRequest diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Declarative/Microsoft.Bot.Builder.Dialogs.Declarative.csproj b/libraries/Microsoft.Bot.Builder.Dialogs.Declarative/Microsoft.Bot.Builder.Dialogs.Declarative.csproj index b682d20135..a41a4a414a 100644 --- a/libraries/Microsoft.Bot.Builder.Dialogs.Declarative/Microsoft.Bot.Builder.Dialogs.Declarative.csproj +++ b/libraries/Microsoft.Bot.Builder.Dialogs.Declarative/Microsoft.Bot.Builder.Dialogs.Declarative.csproj @@ -38,7 +38,7 @@ - + diff --git a/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParser.cs b/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParser.cs index 05b9f41f87..b9c082bc6b 100644 --- a/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParser.cs +++ b/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParser.cs @@ -45,27 +45,28 @@ public const int ESCAPE_CHARACTER=31, EXPRESSION=32, TEXT=33, NEWLINE_IN_ENTITY=34, COMPOSITE_ENTITY=35, REGEX_ENTITY=36, ENTITY_TEXT=37, COLON_MARK=38, NEWLINE_IN_QNA=39, QNA_TEXT=40; public const int - RULE_file = 0, RULE_paragraph = 1, RULE_newline = 2, RULE_errorString = 3, - RULE_nestedIntentSection = 4, RULE_nestedIntentNameLine = 5, RULE_nestedIntentName = 6, - RULE_nameIdentifier = 7, RULE_nestedIntentBodyDefinition = 8, RULE_subIntentDefinition = 9, - RULE_simpleIntentSection = 10, RULE_intentDefinition = 11, RULE_intentNameLine = 12, - RULE_intentName = 13, RULE_intentBody = 14, RULE_normalIntentBody = 15, - RULE_normalIntentString = 16, RULE_newEntitySection = 17, RULE_newEntityDefinition = 18, - RULE_newEntityListbody = 19, RULE_newEntityLine = 20, RULE_newCompositeDefinition = 21, - RULE_newRegexDefinition = 22, RULE_newEntityType = 23, RULE_newEntityRoles = 24, - RULE_newEntityUsesFeatures = 25, RULE_newEntityRoleOrFeatures = 26, RULE_newEntityName = 27, - RULE_newEntityNameWithWS = 28, RULE_entitySection = 29, RULE_entityDefinition = 30, - RULE_entityLine = 31, RULE_entityName = 32, RULE_entityType = 33, RULE_compositeEntityIdentifier = 34, - RULE_regexEntityIdentifier = 35, RULE_entityListBody = 36, RULE_normalItemString = 37, - RULE_importSection = 38, RULE_importDefinition = 39, RULE_referenceSection = 40, - RULE_referenceDefinition = 41, RULE_qnaSection = 42, RULE_qnaDefinition = 43, - RULE_qnaSourceInfo = 44, RULE_qnaIdMark = 45, RULE_qnaQuestion = 46, RULE_questionText = 47, - RULE_moreQuestionsBody = 48, RULE_moreQuestion = 49, RULE_errorQuestionString = 50, - RULE_qnaAnswerBody = 51, RULE_filterSection = 52, RULE_promptSection = 53, - RULE_filterLine = 54, RULE_errorFilterLine = 55, RULE_multiLineAnswer = 56, - RULE_modelInfoSection = 57, RULE_modelInfoDefinition = 58; + RULE_file = 0, RULE_paragraph = 1, RULE_newline = 2, RULE_commentDefinition = 3, + RULE_errorString = 4, RULE_nestedIntentSection = 5, RULE_nestedIntentNameLine = 6, + RULE_nestedIntentName = 7, RULE_nameIdentifier = 8, RULE_nestedIntentBodyDefinition = 9, + RULE_subIntentDefinition = 10, RULE_simpleIntentSection = 11, RULE_intentDefinition = 12, + RULE_intentNameLine = 13, RULE_intentName = 14, RULE_intentBody = 15, + RULE_normalIntentBody = 16, RULE_normalIntentString = 17, RULE_newEntitySection = 18, + RULE_newEntityDefinition = 19, RULE_newEntityListbody = 20, RULE_newEntityLine = 21, + RULE_newCompositeDefinition = 22, RULE_newRegexDefinition = 23, RULE_newEntityType = 24, + RULE_newEntityRoles = 25, RULE_newEntityUsesFeatures = 26, RULE_newEntityRoleOrFeatures = 27, + RULE_newEntityName = 28, RULE_newEntityNameWithWS = 29, RULE_entitySection = 30, + RULE_entityDefinition = 31, RULE_entityLine = 32, RULE_entityName = 33, + RULE_entityType = 34, RULE_compositeEntityIdentifier = 35, RULE_regexEntityIdentifier = 36, + RULE_entityListBody = 37, RULE_normalItemString = 38, RULE_importSection = 39, + RULE_importDefinition = 40, RULE_referenceSection = 41, RULE_referenceDefinition = 42, + RULE_qnaSection = 43, RULE_qnaDefinition = 44, RULE_qnaSourceInfo = 45, + RULE_qnaIdMark = 46, RULE_qnaQuestion = 47, RULE_questionText = 48, RULE_moreQuestionsBody = 49, + RULE_moreQuestion = 50, RULE_errorQuestionString = 51, RULE_qnaAnswerBody = 52, + RULE_filterSection = 53, RULE_promptSection = 54, RULE_filterLine = 55, + RULE_errorFilterLine = 56, RULE_multiLineAnswer = 57, RULE_modelInfoSection = 58, + RULE_modelInfoDefinition = 59; public static readonly string[] ruleNames = { - "file", "paragraph", "newline", "errorString", "nestedIntentSection", + "file", "paragraph", "newline", "commentDefinition", "errorString", "nestedIntentSection", "nestedIntentNameLine", "nestedIntentName", "nameIdentifier", "nestedIntentBodyDefinition", "subIntentDefinition", "simpleIntentSection", "intentDefinition", "intentNameLine", "intentName", "intentBody", "normalIntentBody", "normalIntentString", @@ -138,6 +139,9 @@ [System.Diagnostics.DebuggerNonUserCode] public ParagraphContext[] paragraph() { [System.Diagnostics.DebuggerNonUserCode] public ParagraphContext paragraph(int i) { return GetRuleContext(i); } + [System.Diagnostics.DebuggerNonUserCode] public CommentDefinitionContext commentDefinition() { + return GetRuleContext(0); + } public FileContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { @@ -165,31 +169,67 @@ public override TResult Accept(IParseTreeVisitor visitor) { public FileContext file() { FileContext _localctx = new FileContext(Context, State); EnterRule(_localctx, 0, RULE_file); + int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 119; + State = 128; ErrorHandler.Sync(this); - _alt = 1+1; - do { - switch (_alt) { - case 1+1: - { - { - State = 118; - paragraph(); - } + switch (TokenStream.LA(1)) { + case WS: + case NEWLINE: + case QNA_SOURCE_INFO: + case MODEL_INFO: + case QNA: + case HASH: + case DOLLAR: + case AT: + case IMPORT: + case REFERENCE: + case QNA_ID_MARK: + { + State = 121; + ErrorHandler.Sync(this); + _alt = 1+1; + do { + switch (_alt) { + case 1+1: + { + { + State = 120; + paragraph(); + } + } + break; + default: + throw new NoViableAltException(this); } - break; - default: - throw new NoViableAltException(this); + State = 123; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,0,Context); + } while ( _alt!=1 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ); } - State = 121; + break; + case Eof: + case COMMENT: + { + State = 126; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,0,Context); - } while ( _alt!=1 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ); - State = 123; + _la = TokenStream.LA(1); + if (_la==COMMENT) { + { + State = 125; + commentDefinition(); + } + } + + } + break; + default: + throw new NoViableAltException(this); + } + State = 130; Match(Eof); } } @@ -258,69 +298,69 @@ public ParagraphContext paragraph() { ParagraphContext _localctx = new ParagraphContext(Context, State); EnterRule(_localctx, 2, RULE_paragraph); try { - State = 134; + State = 141; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,1,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,3,Context) ) { case 1: EnterOuterAlt(_localctx, 1); { - State = 125; + State = 132; Match(NEWLINE); } break; case 2: EnterOuterAlt(_localctx, 2); { - State = 126; + State = 133; nestedIntentSection(); } break; case 3: EnterOuterAlt(_localctx, 3); { - State = 127; + State = 134; simpleIntentSection(); } break; case 4: EnterOuterAlt(_localctx, 4); { - State = 128; + State = 135; entitySection(); } break; case 5: EnterOuterAlt(_localctx, 5); { - State = 129; + State = 136; newEntitySection(); } break; case 6: EnterOuterAlt(_localctx, 6); { - State = 130; + State = 137; importSection(); } break; case 7: EnterOuterAlt(_localctx, 7); { - State = 131; + State = 138; referenceSection(); } break; case 8: EnterOuterAlt(_localctx, 8); { - State = 132; + State = 139; qnaSection(); } break; case 9: EnterOuterAlt(_localctx, 9); { - State = 133; + State = 140; modelInfoSection(); } break; @@ -375,21 +415,21 @@ public NewlineContext newline() { try { EnterOuterAlt(_localctx, 1); { - State = 139; + State = 146; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 136; + State = 143; Match(WS); } } - State = 141; + State = 148; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 142; + State = 149; _la = TokenStream.LA(1); if ( !(_la==Eof || _la==NEWLINE) ) { ErrorHandler.RecoverInline(this); @@ -411,6 +451,65 @@ public NewlineContext newline() { return _localctx; } + public partial class CommentDefinitionContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COMMENT() { return GetToken(LUFileParser.COMMENT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode NEWLINE() { return GetToken(LUFileParser.NEWLINE, 0); } + public CommentDefinitionContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_commentDefinition; } } + [System.Diagnostics.DebuggerNonUserCode] + public override void EnterRule(IParseTreeListener listener) { + ILUFileParserListener typedListener = listener as ILUFileParserListener; + if (typedListener != null) typedListener.EnterCommentDefinition(this); + } + [System.Diagnostics.DebuggerNonUserCode] + public override void ExitRule(IParseTreeListener listener) { + ILUFileParserListener typedListener = listener as ILUFileParserListener; + if (typedListener != null) typedListener.ExitCommentDefinition(this); + } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ILUFileParserVisitor typedVisitor = visitor as ILUFileParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitCommentDefinition(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public CommentDefinitionContext commentDefinition() { + CommentDefinitionContext _localctx = new CommentDefinitionContext(Context, State); + EnterRule(_localctx, 6, RULE_commentDefinition); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 151; + Match(COMMENT); + State = 153; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==NEWLINE) { + { + State = 152; + Match(NEWLINE); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + public partial class ErrorStringContext : ParserRuleContext { [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] WS() { return GetTokens(LUFileParser.WS); } [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode WS(int i) { @@ -446,13 +545,13 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ErrorStringContext errorString() { ErrorStringContext _localctx = new ErrorStringContext(Context, State); - EnterRule(_localctx, 6, RULE_errorString); + EnterRule(_localctx, 8, RULE_errorString); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 145; + State = 156; ErrorHandler.Sync(this); _alt = 1; do { @@ -460,7 +559,7 @@ public ErrorStringContext errorString() { case 1: { { - State = 144; + State = 155; _la = TokenStream.LA(1); if ( !(_la==WS || _la==INVALID_TOKEN_DEFAULT_MODE) ) { ErrorHandler.RecoverInline(this); @@ -475,9 +574,9 @@ public ErrorStringContext errorString() { default: throw new NoViableAltException(this); } - State = 147; + State = 158; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,3,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,6,Context); } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ); } } @@ -525,13 +624,13 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NestedIntentSectionContext nestedIntentSection() { NestedIntentSectionContext _localctx = new NestedIntentSectionContext(Context, State); - EnterRule(_localctx, 8, RULE_nestedIntentSection); + EnterRule(_localctx, 10, RULE_nestedIntentSection); try { EnterOuterAlt(_localctx, 1); { - State = 149; + State = 160; nestedIntentNameLine(); - State = 150; + State = 161; nestedIntentBodyDefinition(); } } @@ -581,42 +680,42 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NestedIntentNameLineContext nestedIntentNameLine() { NestedIntentNameLineContext _localctx = new NestedIntentNameLineContext(Context, State); - EnterRule(_localctx, 10, RULE_nestedIntentNameLine); + EnterRule(_localctx, 12, RULE_nestedIntentNameLine); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 155; + State = 166; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 152; + State = 163; Match(WS); } } - State = 157; + State = 168; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 158; + State = 169; Match(HASH); - State = 162; + State = 173; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 159; + State = 170; Match(WS); } } - State = 164; + State = 175; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 165; + State = 176; nestedIntentName(); } } @@ -668,31 +767,31 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NestedIntentNameContext nestedIntentName() { NestedIntentNameContext _localctx = new NestedIntentNameContext(Context, State); - EnterRule(_localctx, 12, RULE_nestedIntentName); + EnterRule(_localctx, 14, RULE_nestedIntentName); try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 167; + State = 178; nameIdentifier(); - State = 172; + State = 183; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,7,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,10,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { - State = 170; + State = 181; ErrorHandler.Sync(this); switch (TokenStream.LA(1)) { case WS: { - State = 168; + State = 179; Match(WS); } break; case IDENTIFIER: { - State = 169; + State = 180; nameIdentifier(); } break; @@ -701,9 +800,9 @@ public NestedIntentNameContext nestedIntentName() { } } } - State = 174; + State = 185; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,7,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,10,Context); } } } @@ -753,26 +852,26 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NameIdentifierContext nameIdentifier() { NameIdentifierContext _localctx = new NameIdentifierContext(Context, State); - EnterRule(_localctx, 14, RULE_nameIdentifier); + EnterRule(_localctx, 16, RULE_nameIdentifier); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 175; + State = 186; Match(IDENTIFIER); - State = 180; + State = 191; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==DOT) { { { - State = 176; + State = 187; Match(DOT); - State = 177; + State = 188; Match(IDENTIFIER); } } - State = 182; + State = 193; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } @@ -822,12 +921,12 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NestedIntentBodyDefinitionContext nestedIntentBodyDefinition() { NestedIntentBodyDefinitionContext _localctx = new NestedIntentBodyDefinitionContext(Context, State); - EnterRule(_localctx, 16, RULE_nestedIntentBodyDefinition); + EnterRule(_localctx, 18, RULE_nestedIntentBodyDefinition); try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 184; + State = 195; ErrorHandler.Sync(this); _alt = 1; do { @@ -835,7 +934,7 @@ public NestedIntentBodyDefinitionContext nestedIntentBodyDefinition() { case 1: { { - State = 183; + State = 194; subIntentDefinition(); } } @@ -843,9 +942,9 @@ public NestedIntentBodyDefinitionContext nestedIntentBodyDefinition() { default: throw new NoViableAltException(this); } - State = 186; + State = 197; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,9,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,12,Context); } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ); } } @@ -895,28 +994,28 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public SubIntentDefinitionContext subIntentDefinition() { SubIntentDefinitionContext _localctx = new SubIntentDefinitionContext(Context, State); - EnterRule(_localctx, 18, RULE_subIntentDefinition); + EnterRule(_localctx, 20, RULE_subIntentDefinition); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 191; + State = 202; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 188; + State = 199; Match(WS); } } - State = 193; + State = 204; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 194; + State = 205; Match(HASH); - State = 195; + State = 206; simpleIntentSection(); } } @@ -961,11 +1060,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public SimpleIntentSectionContext simpleIntentSection() { SimpleIntentSectionContext _localctx = new SimpleIntentSectionContext(Context, State); - EnterRule(_localctx, 20, RULE_simpleIntentSection); + EnterRule(_localctx, 22, RULE_simpleIntentSection); try { EnterOuterAlt(_localctx, 1); { - State = 197; + State = 208; intentDefinition(); } } @@ -1013,18 +1112,18 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public IntentDefinitionContext intentDefinition() { IntentDefinitionContext _localctx = new IntentDefinitionContext(Context, State); - EnterRule(_localctx, 22, RULE_intentDefinition); + EnterRule(_localctx, 24, RULE_intentDefinition); try { EnterOuterAlt(_localctx, 1); { - State = 199; + State = 210; intentNameLine(); - State = 201; + State = 212; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,11,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,14,Context) ) { case 1: { - State = 200; + State = 211; intentBody(); } break; @@ -1080,52 +1179,52 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public IntentNameLineContext intentNameLine() { IntentNameLineContext _localctx = new IntentNameLineContext(Context, State); - EnterRule(_localctx, 24, RULE_intentNameLine); + EnterRule(_localctx, 26, RULE_intentNameLine); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 206; + State = 217; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 203; + State = 214; Match(WS); } } - State = 208; + State = 219; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 209; + State = 220; Match(HASH); - State = 211; + State = 222; ErrorHandler.Sync(this); _la = TokenStream.LA(1); if (_la==HASH) { { - State = 210; + State = 221; Match(HASH); } } - State = 216; + State = 227; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 213; + State = 224; Match(WS); } } - State = 218; + State = 229; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 219; + State = 230; intentName(); } } @@ -1177,31 +1276,31 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public IntentNameContext intentName() { IntentNameContext _localctx = new IntentNameContext(Context, State); - EnterRule(_localctx, 26, RULE_intentName); + EnterRule(_localctx, 28, RULE_intentName); try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 221; + State = 232; nameIdentifier(); - State = 226; + State = 237; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,16,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,19,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { - State = 224; + State = 235; ErrorHandler.Sync(this); switch (TokenStream.LA(1)) { case WS: { - State = 222; + State = 233; Match(WS); } break; case IDENTIFIER: { - State = 223; + State = 234; nameIdentifier(); } break; @@ -1210,9 +1309,9 @@ public IntentNameContext intentName() { } } } - State = 228; + State = 239; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,16,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,19,Context); } } } @@ -1261,28 +1360,28 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public IntentBodyContext intentBody() { IntentBodyContext _localctx = new IntentBodyContext(Context, State); - EnterRule(_localctx, 28, RULE_intentBody); + EnterRule(_localctx, 30, RULE_intentBody); try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 232; + State = 243; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,17,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,20,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - State = 229; + State = 240; Match(WS); } } } - State = 234; + State = 245; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,17,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,20,Context); } - State = 235; + State = 246; normalIntentBody(); } } @@ -1346,50 +1445,50 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NormalIntentBodyContext normalIntentBody() { NormalIntentBodyContext _localctx = new NormalIntentBodyContext(Context, State); - EnterRule(_localctx, 30, RULE_normalIntentBody); + EnterRule(_localctx, 32, RULE_normalIntentBody); try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 240; + State = 251; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,18,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,21,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - State = 237; + State = 248; Match(WS); } } } - State = 242; + State = 253; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,18,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,21,Context); } - State = 247; + State = 258; ErrorHandler.Sync(this); _alt = 1; do { switch (_alt) { case 1: { - State = 247; + State = 258; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,19,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,22,Context) ) { case 1: { { - State = 243; + State = 254; normalIntentString(); - State = 244; + State = 255; newline(); } } break; case 2: { - State = 246; + State = 257; errorString(); } break; @@ -1399,9 +1498,9 @@ public NormalIntentBodyContext normalIntentBody() { default: throw new NoViableAltException(this); } - State = 249; + State = 260; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,20,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,23,Context); } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ); } } @@ -1460,36 +1559,36 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NormalIntentStringContext normalIntentString() { NormalIntentStringContext _localctx = new NormalIntentStringContext(Context, State); - EnterRule(_localctx, 32, RULE_normalIntentString); + EnterRule(_localctx, 34, RULE_normalIntentString); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 254; + State = 265; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 251; + State = 262; Match(WS); } } - State = 256; + State = 267; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 257; + State = 268; Match(DASH); - State = 261; + State = 272; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,22,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,25,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - State = 258; + State = 269; _la = TokenStream.LA(1); if ( !(((_la) & ~0x3f) == 0 && ((1L << _la) & 15032385538L) != 0) ) { ErrorHandler.RecoverInline(this); @@ -1501,9 +1600,9 @@ public NormalIntentStringContext normalIntentString() { } } } - State = 263; + State = 274; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,22,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,25,Context); } } } @@ -1548,11 +1647,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NewEntitySectionContext newEntitySection() { NewEntitySectionContext _localctx = new NewEntitySectionContext(Context, State); - EnterRule(_localctx, 34, RULE_newEntitySection); + EnterRule(_localctx, 36, RULE_newEntitySection); try { EnterOuterAlt(_localctx, 1); { - State = 264; + State = 275; newEntityDefinition(); } } @@ -1600,18 +1699,18 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NewEntityDefinitionContext newEntityDefinition() { NewEntityDefinitionContext _localctx = new NewEntityDefinitionContext(Context, State); - EnterRule(_localctx, 36, RULE_newEntityDefinition); + EnterRule(_localctx, 38, RULE_newEntityDefinition); try { EnterOuterAlt(_localctx, 1); { - State = 266; + State = 277; newEntityLine(); - State = 268; + State = 279; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,23,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,26,Context) ) { case 1: { - State = 267; + State = 278; newEntityListbody(); } break; @@ -1674,34 +1773,34 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NewEntityListbodyContext newEntityListbody() { NewEntityListbodyContext _localctx = new NewEntityListbodyContext(Context, State); - EnterRule(_localctx, 38, RULE_newEntityListbody); + EnterRule(_localctx, 40, RULE_newEntityListbody); try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 274; + State = 285; ErrorHandler.Sync(this); _alt = 1; do { switch (_alt) { case 1: { - State = 274; + State = 285; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,24,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,27,Context) ) { case 1: { { - State = 270; + State = 281; normalItemString(); - State = 271; + State = 282; newline(); } } break; case 2: { - State = 273; + State = 284; errorString(); } break; @@ -1711,9 +1810,9 @@ public NewEntityListbodyContext newEntityListbody() { default: throw new NoViableAltException(this); } - State = 276; + State = 287; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,25,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,28,Context); } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ); } } @@ -1785,192 +1884,192 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NewEntityLineContext newEntityLine() { NewEntityLineContext _localctx = new NewEntityLineContext(Context, State); - EnterRule(_localctx, 40, RULE_newEntityLine); + EnterRule(_localctx, 42, RULE_newEntityLine); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 281; + State = 292; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 278; + State = 289; Match(WS); } } - State = 283; + State = 294; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 284; + State = 295; Match(AT); - State = 288; + State = 299; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,27,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,30,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - State = 285; + State = 296; Match(WS); } } } - State = 290; + State = 301; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,27,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,30,Context); } - State = 292; + State = 303; ErrorHandler.Sync(this); _la = TokenStream.LA(1); if (_la==NEW_ENTITY_TYPE_IDENTIFIER) { { - State = 291; + State = 302; newEntityType(); } } - State = 297; + State = 308; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,29,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,32,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - State = 294; + State = 305; Match(WS); } } } - State = 299; + State = 310; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,29,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,32,Context); } - State = 302; + State = 313; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,30,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,33,Context) ) { case 1: { - State = 300; + State = 311; newEntityName(); } break; case 2: { - State = 301; + State = 312; newEntityNameWithWS(); } break; } - State = 307; + State = 318; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,31,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,34,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - State = 304; + State = 315; Match(WS); } } } - State = 309; + State = 320; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,31,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,34,Context); } - State = 311; + State = 322; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,32,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,35,Context) ) { case 1: { - State = 310; + State = 321; newEntityRoles(); } break; } - State = 316; + State = 327; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,33,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,36,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - State = 313; + State = 324; Match(WS); } } } - State = 318; + State = 329; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,33,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,36,Context); } - State = 320; + State = 331; ErrorHandler.Sync(this); _la = TokenStream.LA(1); if (_la==HAS_FEATURES_LABEL) { { - State = 319; + State = 330; newEntityUsesFeatures(); } } - State = 325; + State = 336; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,35,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,38,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - State = 322; + State = 333; Match(WS); } } } - State = 327; + State = 338; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,35,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,38,Context); } - State = 329; + State = 340; ErrorHandler.Sync(this); _la = TokenStream.LA(1); if (_la==EQUAL) { { - State = 328; + State = 339; Match(EQUAL); } } - State = 334; + State = 345; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,37,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,40,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - State = 331; + State = 342; Match(WS); } } } - State = 336; + State = 347; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,37,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,40,Context); } - State = 339; + State = 350; ErrorHandler.Sync(this); switch (TokenStream.LA(1)) { case NEW_COMPOSITE_ENTITY: { - State = 337; + State = 348; newCompositeDefinition(); } break; case NEW_REGEX_ENTITY: { - State = 338; + State = 349; newRegexDefinition(); } break; @@ -1981,7 +2080,7 @@ public NewEntityLineContext newEntityLine() { default: break; } - State = 341; + State = 352; newline(); } } @@ -2024,11 +2123,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NewCompositeDefinitionContext newCompositeDefinition() { NewCompositeDefinitionContext _localctx = new NewCompositeDefinitionContext(Context, State); - EnterRule(_localctx, 42, RULE_newCompositeDefinition); + EnterRule(_localctx, 44, RULE_newCompositeDefinition); try { EnterOuterAlt(_localctx, 1); { - State = 343; + State = 354; Match(NEW_COMPOSITE_ENTITY); } } @@ -2071,11 +2170,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NewRegexDefinitionContext newRegexDefinition() { NewRegexDefinitionContext _localctx = new NewRegexDefinitionContext(Context, State); - EnterRule(_localctx, 44, RULE_newRegexDefinition); + EnterRule(_localctx, 46, RULE_newRegexDefinition); try { EnterOuterAlt(_localctx, 1); { - State = 345; + State = 356; Match(NEW_REGEX_ENTITY); } } @@ -2118,11 +2217,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NewEntityTypeContext newEntityType() { NewEntityTypeContext _localctx = new NewEntityTypeContext(Context, State); - EnterRule(_localctx, 46, RULE_newEntityType); + EnterRule(_localctx, 48, RULE_newEntityType); try { EnterOuterAlt(_localctx, 1); { - State = 347; + State = 358; Match(NEW_ENTITY_TYPE_IDENTIFIER); } } @@ -2172,36 +2271,36 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NewEntityRolesContext newEntityRoles() { NewEntityRolesContext _localctx = new NewEntityRolesContext(Context, State); - EnterRule(_localctx, 48, RULE_newEntityRoles); + EnterRule(_localctx, 50, RULE_newEntityRoles); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 350; + State = 361; ErrorHandler.Sync(this); _la = TokenStream.LA(1); if (_la==HAS_ROLES_LABEL) { { - State = 349; + State = 360; Match(HAS_ROLES_LABEL); } } - State = 355; + State = 366; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 352; + State = 363; Match(WS); } } - State = 357; + State = 368; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 358; + State = 369; newEntityRoleOrFeatures(); } } @@ -2251,28 +2350,28 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NewEntityUsesFeaturesContext newEntityUsesFeatures() { NewEntityUsesFeaturesContext _localctx = new NewEntityUsesFeaturesContext(Context, State); - EnterRule(_localctx, 50, RULE_newEntityUsesFeatures); + EnterRule(_localctx, 52, RULE_newEntityUsesFeatures); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 360; + State = 371; Match(HAS_FEATURES_LABEL); - State = 364; + State = 375; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 361; + State = 372; Match(WS); } } - State = 366; + State = 377; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 367; + State = 378; newEntityRoleOrFeatures(); } } @@ -2330,13 +2429,13 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NewEntityRoleOrFeaturesContext newEntityRoleOrFeatures() { NewEntityRoleOrFeaturesContext _localctx = new NewEntityRoleOrFeaturesContext(Context, State); - EnterRule(_localctx, 52, RULE_newEntityRoleOrFeatures); + EnterRule(_localctx, 54, RULE_newEntityRoleOrFeatures); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 369; + State = 380; _la = TokenStream.LA(1); if ( !(_la==NEW_ENTITY_IDENTIFIER || _la==NEW_ENTITY_IDENTIFIER_WITH_WS) ) { ErrorHandler.RecoverInline(this); @@ -2345,44 +2444,44 @@ public NewEntityRoleOrFeaturesContext newEntityRoleOrFeatures() { ErrorHandler.ReportMatch(this); Consume(); } - State = 386; + State = 397; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,44,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,47,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - State = 373; + State = 384; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 370; + State = 381; Match(WS); } } - State = 375; + State = 386; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 376; + State = 387; Match(COMMA); - State = 380; + State = 391; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 377; + State = 388; Match(WS); } } - State = 382; + State = 393; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 383; + State = 394; _la = TokenStream.LA(1); if ( !(_la==NEW_ENTITY_IDENTIFIER || _la==NEW_ENTITY_IDENTIFIER_WITH_WS) ) { ErrorHandler.RecoverInline(this); @@ -2394,9 +2493,9 @@ public NewEntityRoleOrFeaturesContext newEntityRoleOrFeatures() { } } } - State = 388; + State = 399; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,44,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,47,Context); } } } @@ -2444,33 +2543,33 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NewEntityNameContext newEntityName() { NewEntityNameContext _localctx = new NewEntityNameContext(Context, State); - EnterRule(_localctx, 54, RULE_newEntityName); + EnterRule(_localctx, 56, RULE_newEntityName); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 389; + State = 400; Match(NEW_ENTITY_IDENTIFIER); - State = 397; + State = 408; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,46,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,49,Context) ) { case 1: { - State = 393; + State = 404; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 390; + State = 401; Match(WS); } } - State = 395; + State = 406; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 396; + State = 407; Match(PHRASE_LIST_LABEL); } break; @@ -2521,33 +2620,33 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NewEntityNameWithWSContext newEntityNameWithWS() { NewEntityNameWithWSContext _localctx = new NewEntityNameWithWSContext(Context, State); - EnterRule(_localctx, 56, RULE_newEntityNameWithWS); + EnterRule(_localctx, 58, RULE_newEntityNameWithWS); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 399; + State = 410; Match(NEW_ENTITY_IDENTIFIER_WITH_WS); - State = 407; + State = 418; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,48,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,51,Context) ) { case 1: { - State = 403; + State = 414; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 400; + State = 411; Match(WS); } } - State = 405; + State = 416; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 406; + State = 417; Match(PHRASE_LIST_LABEL); } break; @@ -2595,11 +2694,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public EntitySectionContext entitySection() { EntitySectionContext _localctx = new EntitySectionContext(Context, State); - EnterRule(_localctx, 58, RULE_entitySection); + EnterRule(_localctx, 60, RULE_entitySection); try { EnterOuterAlt(_localctx, 1); { - State = 409; + State = 420; entityDefinition(); } } @@ -2647,18 +2746,18 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public EntityDefinitionContext entityDefinition() { EntityDefinitionContext _localctx = new EntityDefinitionContext(Context, State); - EnterRule(_localctx, 60, RULE_entityDefinition); + EnterRule(_localctx, 62, RULE_entityDefinition); try { EnterOuterAlt(_localctx, 1); { - State = 411; + State = 422; entityLine(); - State = 413; + State = 424; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,49,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,52,Context) ) { case 1: { - State = 412; + State = 423; entityListBody(); } break; @@ -2715,53 +2814,53 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public EntityLineContext entityLine() { EntityLineContext _localctx = new EntityLineContext(Context, State); - EnterRule(_localctx, 62, RULE_entityLine); + EnterRule(_localctx, 64, RULE_entityLine); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 418; + State = 429; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 415; + State = 426; Match(WS); } } - State = 420; + State = 431; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 421; + State = 432; Match(DOLLAR); - State = 423; + State = 434; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,51,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,54,Context) ) { case 1: { - State = 422; + State = 433; entityName(); } break; } - State = 426; + State = 437; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,52,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,55,Context) ) { case 1: { - State = 425; + State = 436; Match(COLON_MARK); } break; } - State = 429; + State = 440; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,53,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,56,Context) ) { case 1: { - State = 428; + State = 439; entityType(); } break; @@ -2814,13 +2913,13 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public EntityNameContext entityName() { EntityNameContext _localctx = new EntityNameContext(Context, State); - EnterRule(_localctx, 64, RULE_entityName); + EnterRule(_localctx, 66, RULE_entityName); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 432; + State = 443; ErrorHandler.Sync(this); _alt = 1; do { @@ -2828,7 +2927,7 @@ public EntityNameContext entityName() { case 1: { { - State = 431; + State = 442; _la = TokenStream.LA(1); if ( !(_la==WS || _la==ENTITY_TEXT) ) { ErrorHandler.RecoverInline(this); @@ -2843,9 +2942,9 @@ public EntityNameContext entityName() { default: throw new NoViableAltException(this); } - State = 434; + State = 445; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,54,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,57,Context); } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ); } } @@ -2911,48 +3010,48 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public EntityTypeContext entityType() { EntityTypeContext _localctx = new EntityTypeContext(Context, State); - EnterRule(_localctx, 66, RULE_entityType); + EnterRule(_localctx, 68, RULE_entityType); try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 441; + State = 452; ErrorHandler.Sync(this); _alt = 1; do { switch (_alt) { case 1: { - State = 441; + State = 452; ErrorHandler.Sync(this); switch (TokenStream.LA(1)) { case COMPOSITE_ENTITY: { - State = 436; + State = 447; compositeEntityIdentifier(); } break; case REGEX_ENTITY: { - State = 437; + State = 448; regexEntityIdentifier(); } break; case ENTITY_TEXT: { - State = 438; + State = 449; Match(ENTITY_TEXT); } break; case COLON_MARK: { - State = 439; + State = 450; Match(COLON_MARK); } break; case WS: { - State = 440; + State = 451; Match(WS); } break; @@ -2964,9 +3063,9 @@ public EntityTypeContext entityType() { default: throw new NoViableAltException(this); } - State = 443; + State = 454; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,56,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,59,Context); } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ); } } @@ -3009,11 +3108,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public CompositeEntityIdentifierContext compositeEntityIdentifier() { CompositeEntityIdentifierContext _localctx = new CompositeEntityIdentifierContext(Context, State); - EnterRule(_localctx, 68, RULE_compositeEntityIdentifier); + EnterRule(_localctx, 70, RULE_compositeEntityIdentifier); try { EnterOuterAlt(_localctx, 1); { - State = 445; + State = 456; Match(COMPOSITE_ENTITY); } } @@ -3056,11 +3155,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public RegexEntityIdentifierContext regexEntityIdentifier() { RegexEntityIdentifierContext _localctx = new RegexEntityIdentifierContext(Context, State); - EnterRule(_localctx, 70, RULE_regexEntityIdentifier); + EnterRule(_localctx, 72, RULE_regexEntityIdentifier); try { EnterOuterAlt(_localctx, 1); { - State = 447; + State = 458; Match(REGEX_ENTITY); } } @@ -3120,34 +3219,34 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public EntityListBodyContext entityListBody() { EntityListBodyContext _localctx = new EntityListBodyContext(Context, State); - EnterRule(_localctx, 72, RULE_entityListBody); + EnterRule(_localctx, 74, RULE_entityListBody); try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 453; + State = 464; ErrorHandler.Sync(this); _alt = 1; do { switch (_alt) { case 1: { - State = 453; + State = 464; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,57,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,60,Context) ) { case 1: { { - State = 449; + State = 460; normalItemString(); - State = 450; + State = 461; newline(); } } break; case 2: { - State = 452; + State = 463; errorString(); } break; @@ -3157,9 +3256,9 @@ public EntityListBodyContext entityListBody() { default: throw new NoViableAltException(this); } - State = 455; + State = 466; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,58,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,61,Context); } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ); } } @@ -3218,36 +3317,36 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NormalItemStringContext normalItemString() { NormalItemStringContext _localctx = new NormalItemStringContext(Context, State); - EnterRule(_localctx, 74, RULE_normalItemString); + EnterRule(_localctx, 76, RULE_normalItemString); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 460; + State = 471; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 457; + State = 468; Match(WS); } } - State = 462; + State = 473; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 463; + State = 474; Match(DASH); - State = 467; + State = 478; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,60,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,63,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - State = 464; + State = 475; _la = TokenStream.LA(1); if ( !(((_la) & ~0x3f) == 0 && ((1L << _la) & 15032385538L) != 0) ) { ErrorHandler.RecoverInline(this); @@ -3259,9 +3358,9 @@ public NormalItemStringContext normalItemString() { } } } - State = 469; + State = 480; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,60,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,63,Context); } } } @@ -3306,11 +3405,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ImportSectionContext importSection() { ImportSectionContext _localctx = new ImportSectionContext(Context, State); - EnterRule(_localctx, 76, RULE_importSection); + EnterRule(_localctx, 78, RULE_importSection); try { EnterOuterAlt(_localctx, 1); { - State = 470; + State = 481; importDefinition(); } } @@ -3357,43 +3456,43 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ImportDefinitionContext importDefinition() { ImportDefinitionContext _localctx = new ImportDefinitionContext(Context, State); - EnterRule(_localctx, 78, RULE_importDefinition); + EnterRule(_localctx, 80, RULE_importDefinition); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 475; + State = 486; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 472; + State = 483; Match(WS); } } - State = 477; + State = 488; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 478; + State = 489; Match(IMPORT); - State = 482; + State = 493; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,62,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,65,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - State = 479; + State = 490; Match(WS); } } } - State = 484; + State = 495; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,62,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,65,Context); } } } @@ -3438,11 +3537,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ReferenceSectionContext referenceSection() { ReferenceSectionContext _localctx = new ReferenceSectionContext(Context, State); - EnterRule(_localctx, 80, RULE_referenceSection); + EnterRule(_localctx, 82, RULE_referenceSection); try { EnterOuterAlt(_localctx, 1); { - State = 485; + State = 496; referenceDefinition(); } } @@ -3489,43 +3588,43 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ReferenceDefinitionContext referenceDefinition() { ReferenceDefinitionContext _localctx = new ReferenceDefinitionContext(Context, State); - EnterRule(_localctx, 82, RULE_referenceDefinition); + EnterRule(_localctx, 84, RULE_referenceDefinition); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 490; + State = 501; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 487; + State = 498; Match(WS); } } - State = 492; + State = 503; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 493; + State = 504; Match(REFERENCE); - State = 497; + State = 508; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,64,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,67,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - State = 494; + State = 505; Match(WS); } } } - State = 499; + State = 510; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,64,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,67,Context); } } } @@ -3570,11 +3669,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public QnaSectionContext qnaSection() { QnaSectionContext _localctx = new QnaSectionContext(Context, State); - EnterRule(_localctx, 84, RULE_qnaSection); + EnterRule(_localctx, 86, RULE_qnaSection); try { EnterOuterAlt(_localctx, 1); { - State = 500; + State = 511; qnaDefinition(); } } @@ -3634,42 +3733,42 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public QnaDefinitionContext qnaDefinition() { QnaDefinitionContext _localctx = new QnaDefinitionContext(Context, State); - EnterRule(_localctx, 86, RULE_qnaDefinition); + EnterRule(_localctx, 88, RULE_qnaDefinition); try { EnterOuterAlt(_localctx, 1); { - State = 503; + State = 514; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,65,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,68,Context) ) { case 1: { - State = 502; + State = 513; qnaSourceInfo(); } break; } - State = 506; + State = 517; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,66,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,69,Context) ) { case 1: { - State = 505; + State = 516; qnaIdMark(); } break; } - State = 508; + State = 519; qnaQuestion(); - State = 509; + State = 520; moreQuestionsBody(); - State = 510; + State = 521; qnaAnswerBody(); - State = 512; + State = 523; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,67,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,70,Context) ) { case 1: { - State = 511; + State = 522; promptSection(); } break; @@ -3719,26 +3818,26 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public QnaSourceInfoContext qnaSourceInfo() { QnaSourceInfoContext _localctx = new QnaSourceInfoContext(Context, State); - EnterRule(_localctx, 88, RULE_qnaSourceInfo); + EnterRule(_localctx, 90, RULE_qnaSourceInfo); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 517; + State = 528; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 514; + State = 525; Match(WS); } } - State = 519; + State = 530; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 520; + State = 531; Match(QNA_SOURCE_INFO); } } @@ -3785,26 +3884,26 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public QnaIdMarkContext qnaIdMark() { QnaIdMarkContext _localctx = new QnaIdMarkContext(Context, State); - EnterRule(_localctx, 90, RULE_qnaIdMark); + EnterRule(_localctx, 92, RULE_qnaIdMark); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 525; + State = 536; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 522; + State = 533; Match(WS); } } - State = 527; + State = 538; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 528; + State = 539; Match(QNA_ID_MARK); } } @@ -3854,28 +3953,28 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public QnaQuestionContext qnaQuestion() { QnaQuestionContext _localctx = new QnaQuestionContext(Context, State); - EnterRule(_localctx, 92, RULE_qnaQuestion); + EnterRule(_localctx, 94, RULE_qnaQuestion); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 533; + State = 544; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 530; + State = 541; Match(WS); } } - State = 535; + State = 546; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 536; + State = 547; Match(QNA); - State = 537; + State = 548; questionText(); } } @@ -3921,22 +4020,22 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public QuestionTextContext questionText() { QuestionTextContext _localctx = new QuestionTextContext(Context, State); - EnterRule(_localctx, 94, RULE_questionText); + EnterRule(_localctx, 96, RULE_questionText); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 542; + State = 553; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==QNA_TEXT) { { { - State = 539; + State = 550; Match(QNA_TEXT); } } - State = 544; + State = 555; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } @@ -4002,42 +4101,42 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public MoreQuestionsBodyContext moreQuestionsBody() { MoreQuestionsBodyContext _localctx = new MoreQuestionsBodyContext(Context, State); - EnterRule(_localctx, 96, RULE_moreQuestionsBody); + EnterRule(_localctx, 98, RULE_moreQuestionsBody); try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 548; + State = 559; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,72,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,75,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - State = 545; + State = 556; Match(WS); } } } - State = 550; + State = 561; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,72,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,75,Context); } - State = 557; + State = 568; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,74,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,77,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { - State = 555; + State = 566; ErrorHandler.Sync(this); switch (TokenStream.LA(1)) { case DASH: { { - State = 551; + State = 562; moreQuestion(); - State = 552; + State = 563; newline(); } } @@ -4045,7 +4144,7 @@ public MoreQuestionsBodyContext moreQuestionsBody() { case WS: case INVALID_TOKEN_DEFAULT_MODE: { - State = 554; + State = 565; errorQuestionString(); } break; @@ -4054,9 +4153,9 @@ public MoreQuestionsBodyContext moreQuestionsBody() { } } } - State = 559; + State = 570; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,74,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,77,Context); } } } @@ -4107,22 +4206,22 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public MoreQuestionContext moreQuestion() { MoreQuestionContext _localctx = new MoreQuestionContext(Context, State); - EnterRule(_localctx, 98, RULE_moreQuestion); + EnterRule(_localctx, 100, RULE_moreQuestion); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 560; + State = 571; Match(DASH); - State = 564; + State = 575; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,75,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,78,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - State = 561; + State = 572; _la = TokenStream.LA(1); if ( !(_la==WS || _la==TEXT) ) { ErrorHandler.RecoverInline(this); @@ -4134,9 +4233,9 @@ public MoreQuestionContext moreQuestion() { } } } - State = 566; + State = 577; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,75,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,78,Context); } } } @@ -4186,13 +4285,13 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ErrorQuestionStringContext errorQuestionString() { ErrorQuestionStringContext _localctx = new ErrorQuestionStringContext(Context, State); - EnterRule(_localctx, 100, RULE_errorQuestionString); + EnterRule(_localctx, 102, RULE_errorQuestionString); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 568; + State = 579; ErrorHandler.Sync(this); _alt = 1; do { @@ -4200,7 +4299,7 @@ public ErrorQuestionStringContext errorQuestionString() { case 1: { { - State = 567; + State = 578; _la = TokenStream.LA(1); if ( !(_la==WS || _la==INVALID_TOKEN_DEFAULT_MODE) ) { ErrorHandler.RecoverInline(this); @@ -4215,9 +4314,9 @@ public ErrorQuestionStringContext errorQuestionString() { default: throw new NoViableAltException(this); } - State = 570; + State = 581; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,76,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,79,Context); } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ); } } @@ -4265,27 +4364,27 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public QnaAnswerBodyContext qnaAnswerBody() { QnaAnswerBodyContext _localctx = new QnaAnswerBodyContext(Context, State); - EnterRule(_localctx, 102, RULE_qnaAnswerBody); + EnterRule(_localctx, 104, RULE_qnaAnswerBody); try { EnterOuterAlt(_localctx, 1); { - State = 580; + State = 591; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,79,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,82,Context) ) { case 1: { { - State = 573; + State = 584; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,77,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,80,Context) ) { case 1: { - State = 572; + State = 583; filterSection(); } break; } - State = 575; + State = 586; multiLineAnswer(); } } @@ -4293,14 +4392,14 @@ public QnaAnswerBodyContext qnaAnswerBody() { case 2: { { - State = 576; + State = 587; multiLineAnswer(); - State = 578; + State = 589; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,78,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,81,Context) ) { case 1: { - State = 577; + State = 588; filterSection(); } break; @@ -4366,47 +4465,47 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public FilterSectionContext filterSection() { FilterSectionContext _localctx = new FilterSectionContext(Context, State); - EnterRule(_localctx, 104, RULE_filterSection); + EnterRule(_localctx, 106, RULE_filterSection); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 585; + State = 596; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 582; + State = 593; Match(WS); } } - State = 587; + State = 598; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 588; + State = 599; Match(FILTER_MARK); - State = 591; + State = 602; ErrorHandler.Sync(this); _alt = 1; do { switch (_alt) { case 1: { - State = 591; + State = 602; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,81,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,84,Context) ) { case 1: { - State = 589; + State = 600; filterLine(); } break; case 2: { - State = 590; + State = 601; errorFilterLine(); } break; @@ -4416,9 +4515,9 @@ public FilterSectionContext filterSection() { default: throw new NoViableAltException(this); } - State = 593; + State = 604; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,82,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,85,Context); } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ); } } @@ -4477,47 +4576,47 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public PromptSectionContext promptSection() { PromptSectionContext _localctx = new PromptSectionContext(Context, State); - EnterRule(_localctx, 106, RULE_promptSection); + EnterRule(_localctx, 108, RULE_promptSection); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 598; + State = 609; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 595; + State = 606; Match(WS); } } - State = 600; + State = 611; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 601; + State = 612; Match(PROMPT_MARK); - State = 604; + State = 615; ErrorHandler.Sync(this); _alt = 1; do { switch (_alt) { case 1: { - State = 604; + State = 615; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,84,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,87,Context) ) { case 1: { - State = 602; + State = 613; filterLine(); } break; case 2: { - State = 603; + State = 614; errorFilterLine(); } break; @@ -4527,9 +4626,9 @@ public PromptSectionContext promptSection() { default: throw new NoViableAltException(this); } - State = 606; + State = 617; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,85,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,88,Context); } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ); } } @@ -4583,36 +4682,36 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public FilterLineContext filterLine() { FilterLineContext _localctx = new FilterLineContext(Context, State); - EnterRule(_localctx, 108, RULE_filterLine); + EnterRule(_localctx, 110, RULE_filterLine); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 611; + State = 622; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 608; + State = 619; Match(WS); } } - State = 613; + State = 624; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 614; + State = 625; Match(DASH); - State = 618; + State = 629; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,87,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,90,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - State = 615; + State = 626; _la = TokenStream.LA(1); if ( !(_la==WS || _la==TEXT) ) { ErrorHandler.RecoverInline(this); @@ -4624,11 +4723,11 @@ public FilterLineContext filterLine() { } } } - State = 620; + State = 631; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,87,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,90,Context); } - State = 621; + State = 632; newline(); } } @@ -4678,13 +4777,13 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ErrorFilterLineContext errorFilterLine() { ErrorFilterLineContext _localctx = new ErrorFilterLineContext(Context, State); - EnterRule(_localctx, 110, RULE_errorFilterLine); + EnterRule(_localctx, 112, RULE_errorFilterLine); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 624; + State = 635; ErrorHandler.Sync(this); _alt = 1; do { @@ -4692,7 +4791,7 @@ public ErrorFilterLineContext errorFilterLine() { case 1: { { - State = 623; + State = 634; _la = TokenStream.LA(1); if ( !(_la==WS || _la==INVALID_TOKEN_DEFAULT_MODE) ) { ErrorHandler.RecoverInline(this); @@ -4707,9 +4806,9 @@ public ErrorFilterLineContext errorFilterLine() { default: throw new NoViableAltException(this); } - State = 626; + State = 637; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,88,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,91,Context); } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ); } } @@ -4756,26 +4855,26 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public MultiLineAnswerContext multiLineAnswer() { MultiLineAnswerContext _localctx = new MultiLineAnswerContext(Context, State); - EnterRule(_localctx, 112, RULE_multiLineAnswer); + EnterRule(_localctx, 114, RULE_multiLineAnswer); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 631; + State = 642; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 628; + State = 639; Match(WS); } } - State = 633; + State = 644; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 634; + State = 645; Match(MULTI_LINE_TEXT); } } @@ -4820,11 +4919,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ModelInfoSectionContext modelInfoSection() { ModelInfoSectionContext _localctx = new ModelInfoSectionContext(Context, State); - EnterRule(_localctx, 114, RULE_modelInfoSection); + EnterRule(_localctx, 116, RULE_modelInfoSection); try { EnterOuterAlt(_localctx, 1); { - State = 636; + State = 647; modelInfoDefinition(); } } @@ -4871,26 +4970,26 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ModelInfoDefinitionContext modelInfoDefinition() { ModelInfoDefinitionContext _localctx = new ModelInfoDefinitionContext(Context, State); - EnterRule(_localctx, 116, RULE_modelInfoDefinition); + EnterRule(_localctx, 118, RULE_modelInfoDefinition); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 641; + State = 652; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 638; + State = 649; Match(WS); } } - State = 643; + State = 654; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 644; + State = 655; Match(MODEL_INFO); } } @@ -4906,7 +5005,7 @@ public ModelInfoDefinitionContext modelInfoDefinition() { } private static int[] _serializedATN = { - 4,1,40,647,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7, + 4,1,40,658,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7, 7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14, 2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21, 2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7,28, @@ -4914,218 +5013,222 @@ public ModelInfoDefinitionContext modelInfoDefinition() { 2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,42,7,42, 2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49, 2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56, - 2,57,7,57,2,58,7,58,1,0,4,0,120,8,0,11,0,12,0,121,1,0,1,0,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,3,1,135,8,1,1,2,5,2,138,8,2,10,2,12,2,141,9,2, - 1,2,1,2,1,3,4,3,146,8,3,11,3,12,3,147,1,4,1,4,1,4,1,5,5,5,154,8,5,10,5, - 12,5,157,9,5,1,5,1,5,5,5,161,8,5,10,5,12,5,164,9,5,1,5,1,5,1,6,1,6,1,6, - 5,6,171,8,6,10,6,12,6,174,9,6,1,7,1,7,1,7,5,7,179,8,7,10,7,12,7,182,9, - 7,1,8,4,8,185,8,8,11,8,12,8,186,1,9,5,9,190,8,9,10,9,12,9,193,9,9,1,9, - 1,9,1,9,1,10,1,10,1,11,1,11,3,11,202,8,11,1,12,5,12,205,8,12,10,12,12, - 12,208,9,12,1,12,1,12,3,12,212,8,12,1,12,5,12,215,8,12,10,12,12,12,218, - 9,12,1,12,1,12,1,13,1,13,1,13,5,13,225,8,13,10,13,12,13,228,9,13,1,14, - 5,14,231,8,14,10,14,12,14,234,9,14,1,14,1,14,1,15,5,15,239,8,15,10,15, - 12,15,242,9,15,1,15,1,15,1,15,1,15,4,15,248,8,15,11,15,12,15,249,1,16, - 5,16,253,8,16,10,16,12,16,256,9,16,1,16,1,16,5,16,260,8,16,10,16,12,16, - 263,9,16,1,17,1,17,1,18,1,18,3,18,269,8,18,1,19,1,19,1,19,1,19,4,19,275, - 8,19,11,19,12,19,276,1,20,5,20,280,8,20,10,20,12,20,283,9,20,1,20,1,20, - 5,20,287,8,20,10,20,12,20,290,9,20,1,20,3,20,293,8,20,1,20,5,20,296,8, - 20,10,20,12,20,299,9,20,1,20,1,20,3,20,303,8,20,1,20,5,20,306,8,20,10, - 20,12,20,309,9,20,1,20,3,20,312,8,20,1,20,5,20,315,8,20,10,20,12,20,318, - 9,20,1,20,3,20,321,8,20,1,20,5,20,324,8,20,10,20,12,20,327,9,20,1,20,3, - 20,330,8,20,1,20,5,20,333,8,20,10,20,12,20,336,9,20,1,20,1,20,3,20,340, - 8,20,1,20,1,20,1,21,1,21,1,22,1,22,1,23,1,23,1,24,3,24,351,8,24,1,24,5, - 24,354,8,24,10,24,12,24,357,9,24,1,24,1,24,1,25,1,25,5,25,363,8,25,10, - 25,12,25,366,9,25,1,25,1,25,1,26,1,26,5,26,372,8,26,10,26,12,26,375,9, - 26,1,26,1,26,5,26,379,8,26,10,26,12,26,382,9,26,1,26,5,26,385,8,26,10, - 26,12,26,388,9,26,1,27,1,27,5,27,392,8,27,10,27,12,27,395,9,27,1,27,3, - 27,398,8,27,1,28,1,28,5,28,402,8,28,10,28,12,28,405,9,28,1,28,3,28,408, - 8,28,1,29,1,29,1,30,1,30,3,30,414,8,30,1,31,5,31,417,8,31,10,31,12,31, - 420,9,31,1,31,1,31,3,31,424,8,31,1,31,3,31,427,8,31,1,31,3,31,430,8,31, - 1,32,4,32,433,8,32,11,32,12,32,434,1,33,1,33,1,33,1,33,1,33,4,33,442,8, - 33,11,33,12,33,443,1,34,1,34,1,35,1,35,1,36,1,36,1,36,1,36,4,36,454,8, - 36,11,36,12,36,455,1,37,5,37,459,8,37,10,37,12,37,462,9,37,1,37,1,37,5, - 37,466,8,37,10,37,12,37,469,9,37,1,38,1,38,1,39,5,39,474,8,39,10,39,12, - 39,477,9,39,1,39,1,39,5,39,481,8,39,10,39,12,39,484,9,39,1,40,1,40,1,41, - 5,41,489,8,41,10,41,12,41,492,9,41,1,41,1,41,5,41,496,8,41,10,41,12,41, - 499,9,41,1,42,1,42,1,43,3,43,504,8,43,1,43,3,43,507,8,43,1,43,1,43,1,43, - 1,43,3,43,513,8,43,1,44,5,44,516,8,44,10,44,12,44,519,9,44,1,44,1,44,1, - 45,5,45,524,8,45,10,45,12,45,527,9,45,1,45,1,45,1,46,5,46,532,8,46,10, - 46,12,46,535,9,46,1,46,1,46,1,46,1,47,5,47,541,8,47,10,47,12,47,544,9, - 47,1,48,5,48,547,8,48,10,48,12,48,550,9,48,1,48,1,48,1,48,1,48,5,48,556, - 8,48,10,48,12,48,559,9,48,1,49,1,49,5,49,563,8,49,10,49,12,49,566,9,49, - 1,50,4,50,569,8,50,11,50,12,50,570,1,51,3,51,574,8,51,1,51,1,51,1,51,3, - 51,579,8,51,3,51,581,8,51,1,52,5,52,584,8,52,10,52,12,52,587,9,52,1,52, - 1,52,1,52,4,52,592,8,52,11,52,12,52,593,1,53,5,53,597,8,53,10,53,12,53, - 600,9,53,1,53,1,53,1,53,4,53,605,8,53,11,53,12,53,606,1,54,5,54,610,8, - 54,10,54,12,54,613,9,54,1,54,1,54,5,54,617,8,54,10,54,12,54,620,9,54,1, - 54,1,54,1,55,4,55,625,8,55,11,55,12,55,626,1,56,5,56,630,8,56,10,56,12, - 56,633,9,56,1,56,1,56,1,57,1,57,1,58,5,58,640,8,58,10,58,12,58,643,9,58, - 1,58,1,58,1,58,1,121,0,59,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32, - 34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80, - 82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,0,6,1,1, - 2,2,2,0,1,1,17,17,2,0,1,1,31,33,1,0,26,27,2,0,1,1,37,37,2,0,1,1,33,33, - 690,0,119,1,0,0,0,2,134,1,0,0,0,4,139,1,0,0,0,6,145,1,0,0,0,8,149,1,0, - 0,0,10,155,1,0,0,0,12,167,1,0,0,0,14,175,1,0,0,0,16,184,1,0,0,0,18,191, - 1,0,0,0,20,197,1,0,0,0,22,199,1,0,0,0,24,206,1,0,0,0,26,221,1,0,0,0,28, - 232,1,0,0,0,30,240,1,0,0,0,32,254,1,0,0,0,34,264,1,0,0,0,36,266,1,0,0, - 0,38,274,1,0,0,0,40,281,1,0,0,0,42,343,1,0,0,0,44,345,1,0,0,0,46,347,1, - 0,0,0,48,350,1,0,0,0,50,360,1,0,0,0,52,369,1,0,0,0,54,389,1,0,0,0,56,399, - 1,0,0,0,58,409,1,0,0,0,60,411,1,0,0,0,62,418,1,0,0,0,64,432,1,0,0,0,66, - 441,1,0,0,0,68,445,1,0,0,0,70,447,1,0,0,0,72,453,1,0,0,0,74,460,1,0,0, - 0,76,470,1,0,0,0,78,475,1,0,0,0,80,485,1,0,0,0,82,490,1,0,0,0,84,500,1, - 0,0,0,86,503,1,0,0,0,88,517,1,0,0,0,90,525,1,0,0,0,92,533,1,0,0,0,94,542, - 1,0,0,0,96,548,1,0,0,0,98,560,1,0,0,0,100,568,1,0,0,0,102,580,1,0,0,0, - 104,585,1,0,0,0,106,598,1,0,0,0,108,611,1,0,0,0,110,624,1,0,0,0,112,631, - 1,0,0,0,114,636,1,0,0,0,116,641,1,0,0,0,118,120,3,2,1,0,119,118,1,0,0, - 0,120,121,1,0,0,0,121,122,1,0,0,0,121,119,1,0,0,0,122,123,1,0,0,0,123, - 124,5,0,0,1,124,1,1,0,0,0,125,135,5,2,0,0,126,135,3,8,4,0,127,135,3,20, - 10,0,128,135,3,58,29,0,129,135,3,34,17,0,130,135,3,76,38,0,131,135,3,80, - 40,0,132,135,3,84,42,0,133,135,3,114,57,0,134,125,1,0,0,0,134,126,1,0, - 0,0,134,127,1,0,0,0,134,128,1,0,0,0,134,129,1,0,0,0,134,130,1,0,0,0,134, - 131,1,0,0,0,134,132,1,0,0,0,134,133,1,0,0,0,135,3,1,0,0,0,136,138,5,1, - 0,0,137,136,1,0,0,0,138,141,1,0,0,0,139,137,1,0,0,0,139,140,1,0,0,0,140, - 142,1,0,0,0,141,139,1,0,0,0,142,143,7,0,0,0,143,5,1,0,0,0,144,146,7,1, - 0,0,145,144,1,0,0,0,146,147,1,0,0,0,147,145,1,0,0,0,147,148,1,0,0,0,148, - 7,1,0,0,0,149,150,3,10,5,0,150,151,3,16,8,0,151,9,1,0,0,0,152,154,5,1, - 0,0,153,152,1,0,0,0,154,157,1,0,0,0,155,153,1,0,0,0,155,156,1,0,0,0,156, - 158,1,0,0,0,157,155,1,0,0,0,158,162,5,7,0,0,159,161,5,1,0,0,160,159,1, - 0,0,0,161,164,1,0,0,0,162,160,1,0,0,0,162,163,1,0,0,0,163,165,1,0,0,0, - 164,162,1,0,0,0,165,166,3,12,6,0,166,11,1,0,0,0,167,172,3,14,7,0,168,171, - 5,1,0,0,169,171,3,14,7,0,170,168,1,0,0,0,170,169,1,0,0,0,171,174,1,0,0, - 0,172,170,1,0,0,0,172,173,1,0,0,0,173,13,1,0,0,0,174,172,1,0,0,0,175,180, - 5,29,0,0,176,177,5,30,0,0,177,179,5,29,0,0,178,176,1,0,0,0,179,182,1,0, - 0,0,180,178,1,0,0,0,180,181,1,0,0,0,181,15,1,0,0,0,182,180,1,0,0,0,183, - 185,3,18,9,0,184,183,1,0,0,0,185,186,1,0,0,0,186,184,1,0,0,0,186,187,1, - 0,0,0,187,17,1,0,0,0,188,190,5,1,0,0,189,188,1,0,0,0,190,193,1,0,0,0,191, - 189,1,0,0,0,191,192,1,0,0,0,192,194,1,0,0,0,193,191,1,0,0,0,194,195,5, - 7,0,0,195,196,3,20,10,0,196,19,1,0,0,0,197,198,3,22,11,0,198,21,1,0,0, - 0,199,201,3,24,12,0,200,202,3,28,14,0,201,200,1,0,0,0,201,202,1,0,0,0, - 202,23,1,0,0,0,203,205,5,1,0,0,204,203,1,0,0,0,205,208,1,0,0,0,206,204, - 1,0,0,0,206,207,1,0,0,0,207,209,1,0,0,0,208,206,1,0,0,0,209,211,5,7,0, - 0,210,212,5,7,0,0,211,210,1,0,0,0,211,212,1,0,0,0,212,216,1,0,0,0,213, - 215,5,1,0,0,214,213,1,0,0,0,215,218,1,0,0,0,216,214,1,0,0,0,216,217,1, - 0,0,0,217,219,1,0,0,0,218,216,1,0,0,0,219,220,3,26,13,0,220,25,1,0,0,0, - 221,226,3,14,7,0,222,225,5,1,0,0,223,225,3,14,7,0,224,222,1,0,0,0,224, - 223,1,0,0,0,225,228,1,0,0,0,226,224,1,0,0,0,226,227,1,0,0,0,227,27,1,0, - 0,0,228,226,1,0,0,0,229,231,5,1,0,0,230,229,1,0,0,0,231,234,1,0,0,0,232, - 230,1,0,0,0,232,233,1,0,0,0,233,235,1,0,0,0,234,232,1,0,0,0,235,236,3, - 30,15,0,236,29,1,0,0,0,237,239,5,1,0,0,238,237,1,0,0,0,239,242,1,0,0,0, - 240,238,1,0,0,0,240,241,1,0,0,0,241,247,1,0,0,0,242,240,1,0,0,0,243,244, - 3,32,16,0,244,245,3,4,2,0,245,248,1,0,0,0,246,248,3,6,3,0,247,243,1,0, - 0,0,247,246,1,0,0,0,248,249,1,0,0,0,249,247,1,0,0,0,249,250,1,0,0,0,250, - 31,1,0,0,0,251,253,5,1,0,0,252,251,1,0,0,0,253,256,1,0,0,0,254,252,1,0, - 0,0,254,255,1,0,0,0,255,257,1,0,0,0,256,254,1,0,0,0,257,261,5,8,0,0,258, - 260,7,2,0,0,259,258,1,0,0,0,260,263,1,0,0,0,261,259,1,0,0,0,261,262,1, - 0,0,0,262,33,1,0,0,0,263,261,1,0,0,0,264,265,3,36,18,0,265,35,1,0,0,0, - 266,268,3,40,20,0,267,269,3,38,19,0,268,267,1,0,0,0,268,269,1,0,0,0,269, - 37,1,0,0,0,270,271,3,74,37,0,271,272,3,4,2,0,272,275,1,0,0,0,273,275,3, - 6,3,0,274,270,1,0,0,0,274,273,1,0,0,0,275,276,1,0,0,0,276,274,1,0,0,0, - 276,277,1,0,0,0,277,39,1,0,0,0,278,280,5,1,0,0,279,278,1,0,0,0,280,283, - 1,0,0,0,281,279,1,0,0,0,281,282,1,0,0,0,282,284,1,0,0,0,283,281,1,0,0, - 0,284,288,5,10,0,0,285,287,5,1,0,0,286,285,1,0,0,0,287,290,1,0,0,0,288, - 286,1,0,0,0,288,289,1,0,0,0,289,292,1,0,0,0,290,288,1,0,0,0,291,293,3, - 46,23,0,292,291,1,0,0,0,292,293,1,0,0,0,293,297,1,0,0,0,294,296,5,1,0, - 0,295,294,1,0,0,0,296,299,1,0,0,0,297,295,1,0,0,0,297,298,1,0,0,0,298, - 302,1,0,0,0,299,297,1,0,0,0,300,303,3,54,27,0,301,303,3,56,28,0,302,300, - 1,0,0,0,302,301,1,0,0,0,302,303,1,0,0,0,303,307,1,0,0,0,304,306,5,1,0, - 0,305,304,1,0,0,0,306,309,1,0,0,0,307,305,1,0,0,0,307,308,1,0,0,0,308, - 311,1,0,0,0,309,307,1,0,0,0,310,312,3,48,24,0,311,310,1,0,0,0,311,312, - 1,0,0,0,312,316,1,0,0,0,313,315,5,1,0,0,314,313,1,0,0,0,315,318,1,0,0, - 0,316,314,1,0,0,0,316,317,1,0,0,0,317,320,1,0,0,0,318,316,1,0,0,0,319, - 321,3,50,25,0,320,319,1,0,0,0,320,321,1,0,0,0,321,325,1,0,0,0,322,324, - 5,1,0,0,323,322,1,0,0,0,324,327,1,0,0,0,325,323,1,0,0,0,325,326,1,0,0, - 0,326,329,1,0,0,0,327,325,1,0,0,0,328,330,5,18,0,0,329,328,1,0,0,0,329, - 330,1,0,0,0,330,334,1,0,0,0,331,333,5,1,0,0,332,331,1,0,0,0,333,336,1, - 0,0,0,334,332,1,0,0,0,334,335,1,0,0,0,335,339,1,0,0,0,336,334,1,0,0,0, - 337,340,3,42,21,0,338,340,3,44,22,0,339,337,1,0,0,0,339,338,1,0,0,0,339, - 340,1,0,0,0,340,341,1,0,0,0,341,342,3,4,2,0,342,41,1,0,0,0,343,344,5,24, - 0,0,344,43,1,0,0,0,345,346,5,25,0,0,346,45,1,0,0,0,347,348,5,22,0,0,348, - 47,1,0,0,0,349,351,5,20,0,0,350,349,1,0,0,0,350,351,1,0,0,0,351,355,1, - 0,0,0,352,354,5,1,0,0,353,352,1,0,0,0,354,357,1,0,0,0,355,353,1,0,0,0, - 355,356,1,0,0,0,356,358,1,0,0,0,357,355,1,0,0,0,358,359,3,52,26,0,359, - 49,1,0,0,0,360,364,5,21,0,0,361,363,5,1,0,0,362,361,1,0,0,0,363,366,1, - 0,0,0,364,362,1,0,0,0,364,365,1,0,0,0,365,367,1,0,0,0,366,364,1,0,0,0, - 367,368,3,52,26,0,368,51,1,0,0,0,369,386,7,3,0,0,370,372,5,1,0,0,371,370, - 1,0,0,0,372,375,1,0,0,0,373,371,1,0,0,0,373,374,1,0,0,0,374,376,1,0,0, - 0,375,373,1,0,0,0,376,380,5,19,0,0,377,379,5,1,0,0,378,377,1,0,0,0,379, - 382,1,0,0,0,380,378,1,0,0,0,380,381,1,0,0,0,381,383,1,0,0,0,382,380,1, - 0,0,0,383,385,7,3,0,0,384,373,1,0,0,0,385,388,1,0,0,0,386,384,1,0,0,0, - 386,387,1,0,0,0,387,53,1,0,0,0,388,386,1,0,0,0,389,397,5,26,0,0,390,392, - 5,1,0,0,391,390,1,0,0,0,392,395,1,0,0,0,393,391,1,0,0,0,393,394,1,0,0, - 0,394,396,1,0,0,0,395,393,1,0,0,0,396,398,5,23,0,0,397,393,1,0,0,0,397, - 398,1,0,0,0,398,55,1,0,0,0,399,407,5,27,0,0,400,402,5,1,0,0,401,400,1, - 0,0,0,402,405,1,0,0,0,403,401,1,0,0,0,403,404,1,0,0,0,404,406,1,0,0,0, - 405,403,1,0,0,0,406,408,5,23,0,0,407,403,1,0,0,0,407,408,1,0,0,0,408,57, - 1,0,0,0,409,410,3,60,30,0,410,59,1,0,0,0,411,413,3,62,31,0,412,414,3,72, - 36,0,413,412,1,0,0,0,413,414,1,0,0,0,414,61,1,0,0,0,415,417,5,1,0,0,416, - 415,1,0,0,0,417,420,1,0,0,0,418,416,1,0,0,0,418,419,1,0,0,0,419,421,1, - 0,0,0,420,418,1,0,0,0,421,423,5,9,0,0,422,424,3,64,32,0,423,422,1,0,0, - 0,423,424,1,0,0,0,424,426,1,0,0,0,425,427,5,38,0,0,426,425,1,0,0,0,426, - 427,1,0,0,0,427,429,1,0,0,0,428,430,3,66,33,0,429,428,1,0,0,0,429,430, - 1,0,0,0,430,63,1,0,0,0,431,433,7,4,0,0,432,431,1,0,0,0,433,434,1,0,0,0, - 434,432,1,0,0,0,434,435,1,0,0,0,435,65,1,0,0,0,436,442,3,68,34,0,437,442, - 3,70,35,0,438,442,5,37,0,0,439,442,5,38,0,0,440,442,5,1,0,0,441,436,1, - 0,0,0,441,437,1,0,0,0,441,438,1,0,0,0,441,439,1,0,0,0,441,440,1,0,0,0, - 442,443,1,0,0,0,443,441,1,0,0,0,443,444,1,0,0,0,444,67,1,0,0,0,445,446, - 5,35,0,0,446,69,1,0,0,0,447,448,5,36,0,0,448,71,1,0,0,0,449,450,3,74,37, - 0,450,451,3,4,2,0,451,454,1,0,0,0,452,454,3,6,3,0,453,449,1,0,0,0,453, - 452,1,0,0,0,454,455,1,0,0,0,455,453,1,0,0,0,455,456,1,0,0,0,456,73,1,0, - 0,0,457,459,5,1,0,0,458,457,1,0,0,0,459,462,1,0,0,0,460,458,1,0,0,0,460, - 461,1,0,0,0,461,463,1,0,0,0,462,460,1,0,0,0,463,467,5,8,0,0,464,466,7, - 2,0,0,465,464,1,0,0,0,466,469,1,0,0,0,467,465,1,0,0,0,467,468,1,0,0,0, - 468,75,1,0,0,0,469,467,1,0,0,0,470,471,3,78,39,0,471,77,1,0,0,0,472,474, - 5,1,0,0,473,472,1,0,0,0,474,477,1,0,0,0,475,473,1,0,0,0,475,476,1,0,0, - 0,476,478,1,0,0,0,477,475,1,0,0,0,478,482,5,11,0,0,479,481,5,1,0,0,480, - 479,1,0,0,0,481,484,1,0,0,0,482,480,1,0,0,0,482,483,1,0,0,0,483,79,1,0, - 0,0,484,482,1,0,0,0,485,486,3,82,41,0,486,81,1,0,0,0,487,489,5,1,0,0,488, - 487,1,0,0,0,489,492,1,0,0,0,490,488,1,0,0,0,490,491,1,0,0,0,491,493,1, - 0,0,0,492,490,1,0,0,0,493,497,5,12,0,0,494,496,5,1,0,0,495,494,1,0,0,0, - 496,499,1,0,0,0,497,495,1,0,0,0,497,498,1,0,0,0,498,83,1,0,0,0,499,497, - 1,0,0,0,500,501,3,86,43,0,501,85,1,0,0,0,502,504,3,88,44,0,503,502,1,0, - 0,0,503,504,1,0,0,0,504,506,1,0,0,0,505,507,3,90,45,0,506,505,1,0,0,0, - 506,507,1,0,0,0,507,508,1,0,0,0,508,509,3,92,46,0,509,510,3,96,48,0,510, - 512,3,102,51,0,511,513,3,106,53,0,512,511,1,0,0,0,512,513,1,0,0,0,513, - 87,1,0,0,0,514,516,5,1,0,0,515,514,1,0,0,0,516,519,1,0,0,0,517,515,1,0, - 0,0,517,518,1,0,0,0,518,520,1,0,0,0,519,517,1,0,0,0,520,521,5,3,0,0,521, - 89,1,0,0,0,522,524,5,1,0,0,523,522,1,0,0,0,524,527,1,0,0,0,525,523,1,0, - 0,0,525,526,1,0,0,0,526,528,1,0,0,0,527,525,1,0,0,0,528,529,5,14,0,0,529, - 91,1,0,0,0,530,532,5,1,0,0,531,530,1,0,0,0,532,535,1,0,0,0,533,531,1,0, - 0,0,533,534,1,0,0,0,534,536,1,0,0,0,535,533,1,0,0,0,536,537,5,6,0,0,537, - 538,3,94,47,0,538,93,1,0,0,0,539,541,5,40,0,0,540,539,1,0,0,0,541,544, - 1,0,0,0,542,540,1,0,0,0,542,543,1,0,0,0,543,95,1,0,0,0,544,542,1,0,0,0, - 545,547,5,1,0,0,546,545,1,0,0,0,547,550,1,0,0,0,548,546,1,0,0,0,548,549, - 1,0,0,0,549,557,1,0,0,0,550,548,1,0,0,0,551,552,3,98,49,0,552,553,3,4, - 2,0,553,556,1,0,0,0,554,556,3,100,50,0,555,551,1,0,0,0,555,554,1,0,0,0, - 556,559,1,0,0,0,557,555,1,0,0,0,557,558,1,0,0,0,558,97,1,0,0,0,559,557, - 1,0,0,0,560,564,5,8,0,0,561,563,7,5,0,0,562,561,1,0,0,0,563,566,1,0,0, - 0,564,562,1,0,0,0,564,565,1,0,0,0,565,99,1,0,0,0,566,564,1,0,0,0,567,569, - 7,1,0,0,568,567,1,0,0,0,569,570,1,0,0,0,570,568,1,0,0,0,570,571,1,0,0, - 0,571,101,1,0,0,0,572,574,3,104,52,0,573,572,1,0,0,0,573,574,1,0,0,0,574, - 575,1,0,0,0,575,581,3,112,56,0,576,578,3,112,56,0,577,579,3,104,52,0,578, - 577,1,0,0,0,578,579,1,0,0,0,579,581,1,0,0,0,580,573,1,0,0,0,580,576,1, - 0,0,0,581,103,1,0,0,0,582,584,5,1,0,0,583,582,1,0,0,0,584,587,1,0,0,0, - 585,583,1,0,0,0,585,586,1,0,0,0,586,588,1,0,0,0,587,585,1,0,0,0,588,591, - 5,13,0,0,589,592,3,108,54,0,590,592,3,110,55,0,591,589,1,0,0,0,591,590, - 1,0,0,0,592,593,1,0,0,0,593,591,1,0,0,0,593,594,1,0,0,0,594,105,1,0,0, - 0,595,597,5,1,0,0,596,595,1,0,0,0,597,600,1,0,0,0,598,596,1,0,0,0,598, - 599,1,0,0,0,599,601,1,0,0,0,600,598,1,0,0,0,601,604,5,16,0,0,602,605,3, - 108,54,0,603,605,3,110,55,0,604,602,1,0,0,0,604,603,1,0,0,0,605,606,1, - 0,0,0,606,604,1,0,0,0,606,607,1,0,0,0,607,107,1,0,0,0,608,610,5,1,0,0, - 609,608,1,0,0,0,610,613,1,0,0,0,611,609,1,0,0,0,611,612,1,0,0,0,612,614, - 1,0,0,0,613,611,1,0,0,0,614,618,5,8,0,0,615,617,7,5,0,0,616,615,1,0,0, - 0,617,620,1,0,0,0,618,616,1,0,0,0,618,619,1,0,0,0,619,621,1,0,0,0,620, - 618,1,0,0,0,621,622,3,4,2,0,622,109,1,0,0,0,623,625,7,1,0,0,624,623,1, - 0,0,0,625,626,1,0,0,0,626,624,1,0,0,0,626,627,1,0,0,0,627,111,1,0,0,0, - 628,630,5,1,0,0,629,628,1,0,0,0,630,633,1,0,0,0,631,629,1,0,0,0,631,632, - 1,0,0,0,632,634,1,0,0,0,633,631,1,0,0,0,634,635,5,15,0,0,635,113,1,0,0, - 0,636,637,3,116,58,0,637,115,1,0,0,0,638,640,5,1,0,0,639,638,1,0,0,0,640, - 643,1,0,0,0,641,639,1,0,0,0,641,642,1,0,0,0,642,644,1,0,0,0,643,641,1, - 0,0,0,644,645,5,4,0,0,645,117,1,0,0,0,91,121,134,139,147,155,162,170,172, - 180,186,191,201,206,211,216,224,226,232,240,247,249,254,261,268,274,276, - 281,288,292,297,302,307,311,316,320,325,329,334,339,350,355,364,373,380, - 386,393,397,403,407,413,418,423,426,429,434,441,443,453,455,460,467,475, - 482,490,497,503,506,512,517,525,533,542,548,555,557,564,570,573,578,580, - 585,591,593,598,604,606,611,618,626,631,641 + 2,57,7,57,2,58,7,58,2,59,7,59,1,0,4,0,122,8,0,11,0,12,0,123,1,0,3,0,127, + 8,0,3,0,129,8,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,142,8, + 1,1,2,5,2,145,8,2,10,2,12,2,148,9,2,1,2,1,2,1,3,1,3,3,3,154,8,3,1,4,4, + 4,157,8,4,11,4,12,4,158,1,5,1,5,1,5,1,6,5,6,165,8,6,10,6,12,6,168,9,6, + 1,6,1,6,5,6,172,8,6,10,6,12,6,175,9,6,1,6,1,6,1,7,1,7,1,7,5,7,182,8,7, + 10,7,12,7,185,9,7,1,8,1,8,1,8,5,8,190,8,8,10,8,12,8,193,9,8,1,9,4,9,196, + 8,9,11,9,12,9,197,1,10,5,10,201,8,10,10,10,12,10,204,9,10,1,10,1,10,1, + 10,1,11,1,11,1,12,1,12,3,12,213,8,12,1,13,5,13,216,8,13,10,13,12,13,219, + 9,13,1,13,1,13,3,13,223,8,13,1,13,5,13,226,8,13,10,13,12,13,229,9,13,1, + 13,1,13,1,14,1,14,1,14,5,14,236,8,14,10,14,12,14,239,9,14,1,15,5,15,242, + 8,15,10,15,12,15,245,9,15,1,15,1,15,1,16,5,16,250,8,16,10,16,12,16,253, + 9,16,1,16,1,16,1,16,1,16,4,16,259,8,16,11,16,12,16,260,1,17,5,17,264,8, + 17,10,17,12,17,267,9,17,1,17,1,17,5,17,271,8,17,10,17,12,17,274,9,17,1, + 18,1,18,1,19,1,19,3,19,280,8,19,1,20,1,20,1,20,1,20,4,20,286,8,20,11,20, + 12,20,287,1,21,5,21,291,8,21,10,21,12,21,294,9,21,1,21,1,21,5,21,298,8, + 21,10,21,12,21,301,9,21,1,21,3,21,304,8,21,1,21,5,21,307,8,21,10,21,12, + 21,310,9,21,1,21,1,21,3,21,314,8,21,1,21,5,21,317,8,21,10,21,12,21,320, + 9,21,1,21,3,21,323,8,21,1,21,5,21,326,8,21,10,21,12,21,329,9,21,1,21,3, + 21,332,8,21,1,21,5,21,335,8,21,10,21,12,21,338,9,21,1,21,3,21,341,8,21, + 1,21,5,21,344,8,21,10,21,12,21,347,9,21,1,21,1,21,3,21,351,8,21,1,21,1, + 21,1,22,1,22,1,23,1,23,1,24,1,24,1,25,3,25,362,8,25,1,25,5,25,365,8,25, + 10,25,12,25,368,9,25,1,25,1,25,1,26,1,26,5,26,374,8,26,10,26,12,26,377, + 9,26,1,26,1,26,1,27,1,27,5,27,383,8,27,10,27,12,27,386,9,27,1,27,1,27, + 5,27,390,8,27,10,27,12,27,393,9,27,1,27,5,27,396,8,27,10,27,12,27,399, + 9,27,1,28,1,28,5,28,403,8,28,10,28,12,28,406,9,28,1,28,3,28,409,8,28,1, + 29,1,29,5,29,413,8,29,10,29,12,29,416,9,29,1,29,3,29,419,8,29,1,30,1,30, + 1,31,1,31,3,31,425,8,31,1,32,5,32,428,8,32,10,32,12,32,431,9,32,1,32,1, + 32,3,32,435,8,32,1,32,3,32,438,8,32,1,32,3,32,441,8,32,1,33,4,33,444,8, + 33,11,33,12,33,445,1,34,1,34,1,34,1,34,1,34,4,34,453,8,34,11,34,12,34, + 454,1,35,1,35,1,36,1,36,1,37,1,37,1,37,1,37,4,37,465,8,37,11,37,12,37, + 466,1,38,5,38,470,8,38,10,38,12,38,473,9,38,1,38,1,38,5,38,477,8,38,10, + 38,12,38,480,9,38,1,39,1,39,1,40,5,40,485,8,40,10,40,12,40,488,9,40,1, + 40,1,40,5,40,492,8,40,10,40,12,40,495,9,40,1,41,1,41,1,42,5,42,500,8,42, + 10,42,12,42,503,9,42,1,42,1,42,5,42,507,8,42,10,42,12,42,510,9,42,1,43, + 1,43,1,44,3,44,515,8,44,1,44,3,44,518,8,44,1,44,1,44,1,44,1,44,3,44,524, + 8,44,1,45,5,45,527,8,45,10,45,12,45,530,9,45,1,45,1,45,1,46,5,46,535,8, + 46,10,46,12,46,538,9,46,1,46,1,46,1,47,5,47,543,8,47,10,47,12,47,546,9, + 47,1,47,1,47,1,47,1,48,5,48,552,8,48,10,48,12,48,555,9,48,1,49,5,49,558, + 8,49,10,49,12,49,561,9,49,1,49,1,49,1,49,1,49,5,49,567,8,49,10,49,12,49, + 570,9,49,1,50,1,50,5,50,574,8,50,10,50,12,50,577,9,50,1,51,4,51,580,8, + 51,11,51,12,51,581,1,52,3,52,585,8,52,1,52,1,52,1,52,3,52,590,8,52,3,52, + 592,8,52,1,53,5,53,595,8,53,10,53,12,53,598,9,53,1,53,1,53,1,53,4,53,603, + 8,53,11,53,12,53,604,1,54,5,54,608,8,54,10,54,12,54,611,9,54,1,54,1,54, + 1,54,4,54,616,8,54,11,54,12,54,617,1,55,5,55,621,8,55,10,55,12,55,624, + 9,55,1,55,1,55,5,55,628,8,55,10,55,12,55,631,9,55,1,55,1,55,1,56,4,56, + 636,8,56,11,56,12,56,637,1,57,5,57,641,8,57,10,57,12,57,644,9,57,1,57, + 1,57,1,58,1,58,1,59,5,59,651,8,59,10,59,12,59,654,9,59,1,59,1,59,1,59, + 1,123,0,60,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42, + 44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90, + 92,94,96,98,100,102,104,106,108,110,112,114,116,118,0,6,1,1,2,2,2,0,1, + 1,17,17,2,0,1,1,31,33,1,0,26,27,2,0,1,1,37,37,2,0,1,1,33,33,703,0,128, + 1,0,0,0,2,141,1,0,0,0,4,146,1,0,0,0,6,151,1,0,0,0,8,156,1,0,0,0,10,160, + 1,0,0,0,12,166,1,0,0,0,14,178,1,0,0,0,16,186,1,0,0,0,18,195,1,0,0,0,20, + 202,1,0,0,0,22,208,1,0,0,0,24,210,1,0,0,0,26,217,1,0,0,0,28,232,1,0,0, + 0,30,243,1,0,0,0,32,251,1,0,0,0,34,265,1,0,0,0,36,275,1,0,0,0,38,277,1, + 0,0,0,40,285,1,0,0,0,42,292,1,0,0,0,44,354,1,0,0,0,46,356,1,0,0,0,48,358, + 1,0,0,0,50,361,1,0,0,0,52,371,1,0,0,0,54,380,1,0,0,0,56,400,1,0,0,0,58, + 410,1,0,0,0,60,420,1,0,0,0,62,422,1,0,0,0,64,429,1,0,0,0,66,443,1,0,0, + 0,68,452,1,0,0,0,70,456,1,0,0,0,72,458,1,0,0,0,74,464,1,0,0,0,76,471,1, + 0,0,0,78,481,1,0,0,0,80,486,1,0,0,0,82,496,1,0,0,0,84,501,1,0,0,0,86,511, + 1,0,0,0,88,514,1,0,0,0,90,528,1,0,0,0,92,536,1,0,0,0,94,544,1,0,0,0,96, + 553,1,0,0,0,98,559,1,0,0,0,100,571,1,0,0,0,102,579,1,0,0,0,104,591,1,0, + 0,0,106,596,1,0,0,0,108,609,1,0,0,0,110,622,1,0,0,0,112,635,1,0,0,0,114, + 642,1,0,0,0,116,647,1,0,0,0,118,652,1,0,0,0,120,122,3,2,1,0,121,120,1, + 0,0,0,122,123,1,0,0,0,123,124,1,0,0,0,123,121,1,0,0,0,124,129,1,0,0,0, + 125,127,3,6,3,0,126,125,1,0,0,0,126,127,1,0,0,0,127,129,1,0,0,0,128,121, + 1,0,0,0,128,126,1,0,0,0,129,130,1,0,0,0,130,131,5,0,0,1,131,1,1,0,0,0, + 132,142,5,2,0,0,133,142,3,10,5,0,134,142,3,22,11,0,135,142,3,60,30,0,136, + 142,3,36,18,0,137,142,3,78,39,0,138,142,3,82,41,0,139,142,3,86,43,0,140, + 142,3,116,58,0,141,132,1,0,0,0,141,133,1,0,0,0,141,134,1,0,0,0,141,135, + 1,0,0,0,141,136,1,0,0,0,141,137,1,0,0,0,141,138,1,0,0,0,141,139,1,0,0, + 0,141,140,1,0,0,0,142,3,1,0,0,0,143,145,5,1,0,0,144,143,1,0,0,0,145,148, + 1,0,0,0,146,144,1,0,0,0,146,147,1,0,0,0,147,149,1,0,0,0,148,146,1,0,0, + 0,149,150,7,0,0,0,150,5,1,0,0,0,151,153,5,5,0,0,152,154,5,2,0,0,153,152, + 1,0,0,0,153,154,1,0,0,0,154,7,1,0,0,0,155,157,7,1,0,0,156,155,1,0,0,0, + 157,158,1,0,0,0,158,156,1,0,0,0,158,159,1,0,0,0,159,9,1,0,0,0,160,161, + 3,12,6,0,161,162,3,18,9,0,162,11,1,0,0,0,163,165,5,1,0,0,164,163,1,0,0, + 0,165,168,1,0,0,0,166,164,1,0,0,0,166,167,1,0,0,0,167,169,1,0,0,0,168, + 166,1,0,0,0,169,173,5,7,0,0,170,172,5,1,0,0,171,170,1,0,0,0,172,175,1, + 0,0,0,173,171,1,0,0,0,173,174,1,0,0,0,174,176,1,0,0,0,175,173,1,0,0,0, + 176,177,3,14,7,0,177,13,1,0,0,0,178,183,3,16,8,0,179,182,5,1,0,0,180,182, + 3,16,8,0,181,179,1,0,0,0,181,180,1,0,0,0,182,185,1,0,0,0,183,181,1,0,0, + 0,183,184,1,0,0,0,184,15,1,0,0,0,185,183,1,0,0,0,186,191,5,29,0,0,187, + 188,5,30,0,0,188,190,5,29,0,0,189,187,1,0,0,0,190,193,1,0,0,0,191,189, + 1,0,0,0,191,192,1,0,0,0,192,17,1,0,0,0,193,191,1,0,0,0,194,196,3,20,10, + 0,195,194,1,0,0,0,196,197,1,0,0,0,197,195,1,0,0,0,197,198,1,0,0,0,198, + 19,1,0,0,0,199,201,5,1,0,0,200,199,1,0,0,0,201,204,1,0,0,0,202,200,1,0, + 0,0,202,203,1,0,0,0,203,205,1,0,0,0,204,202,1,0,0,0,205,206,5,7,0,0,206, + 207,3,22,11,0,207,21,1,0,0,0,208,209,3,24,12,0,209,23,1,0,0,0,210,212, + 3,26,13,0,211,213,3,30,15,0,212,211,1,0,0,0,212,213,1,0,0,0,213,25,1,0, + 0,0,214,216,5,1,0,0,215,214,1,0,0,0,216,219,1,0,0,0,217,215,1,0,0,0,217, + 218,1,0,0,0,218,220,1,0,0,0,219,217,1,0,0,0,220,222,5,7,0,0,221,223,5, + 7,0,0,222,221,1,0,0,0,222,223,1,0,0,0,223,227,1,0,0,0,224,226,5,1,0,0, + 225,224,1,0,0,0,226,229,1,0,0,0,227,225,1,0,0,0,227,228,1,0,0,0,228,230, + 1,0,0,0,229,227,1,0,0,0,230,231,3,28,14,0,231,27,1,0,0,0,232,237,3,16, + 8,0,233,236,5,1,0,0,234,236,3,16,8,0,235,233,1,0,0,0,235,234,1,0,0,0,236, + 239,1,0,0,0,237,235,1,0,0,0,237,238,1,0,0,0,238,29,1,0,0,0,239,237,1,0, + 0,0,240,242,5,1,0,0,241,240,1,0,0,0,242,245,1,0,0,0,243,241,1,0,0,0,243, + 244,1,0,0,0,244,246,1,0,0,0,245,243,1,0,0,0,246,247,3,32,16,0,247,31,1, + 0,0,0,248,250,5,1,0,0,249,248,1,0,0,0,250,253,1,0,0,0,251,249,1,0,0,0, + 251,252,1,0,0,0,252,258,1,0,0,0,253,251,1,0,0,0,254,255,3,34,17,0,255, + 256,3,4,2,0,256,259,1,0,0,0,257,259,3,8,4,0,258,254,1,0,0,0,258,257,1, + 0,0,0,259,260,1,0,0,0,260,258,1,0,0,0,260,261,1,0,0,0,261,33,1,0,0,0,262, + 264,5,1,0,0,263,262,1,0,0,0,264,267,1,0,0,0,265,263,1,0,0,0,265,266,1, + 0,0,0,266,268,1,0,0,0,267,265,1,0,0,0,268,272,5,8,0,0,269,271,7,2,0,0, + 270,269,1,0,0,0,271,274,1,0,0,0,272,270,1,0,0,0,272,273,1,0,0,0,273,35, + 1,0,0,0,274,272,1,0,0,0,275,276,3,38,19,0,276,37,1,0,0,0,277,279,3,42, + 21,0,278,280,3,40,20,0,279,278,1,0,0,0,279,280,1,0,0,0,280,39,1,0,0,0, + 281,282,3,76,38,0,282,283,3,4,2,0,283,286,1,0,0,0,284,286,3,8,4,0,285, + 281,1,0,0,0,285,284,1,0,0,0,286,287,1,0,0,0,287,285,1,0,0,0,287,288,1, + 0,0,0,288,41,1,0,0,0,289,291,5,1,0,0,290,289,1,0,0,0,291,294,1,0,0,0,292, + 290,1,0,0,0,292,293,1,0,0,0,293,295,1,0,0,0,294,292,1,0,0,0,295,299,5, + 10,0,0,296,298,5,1,0,0,297,296,1,0,0,0,298,301,1,0,0,0,299,297,1,0,0,0, + 299,300,1,0,0,0,300,303,1,0,0,0,301,299,1,0,0,0,302,304,3,48,24,0,303, + 302,1,0,0,0,303,304,1,0,0,0,304,308,1,0,0,0,305,307,5,1,0,0,306,305,1, + 0,0,0,307,310,1,0,0,0,308,306,1,0,0,0,308,309,1,0,0,0,309,313,1,0,0,0, + 310,308,1,0,0,0,311,314,3,56,28,0,312,314,3,58,29,0,313,311,1,0,0,0,313, + 312,1,0,0,0,313,314,1,0,0,0,314,318,1,0,0,0,315,317,5,1,0,0,316,315,1, + 0,0,0,317,320,1,0,0,0,318,316,1,0,0,0,318,319,1,0,0,0,319,322,1,0,0,0, + 320,318,1,0,0,0,321,323,3,50,25,0,322,321,1,0,0,0,322,323,1,0,0,0,323, + 327,1,0,0,0,324,326,5,1,0,0,325,324,1,0,0,0,326,329,1,0,0,0,327,325,1, + 0,0,0,327,328,1,0,0,0,328,331,1,0,0,0,329,327,1,0,0,0,330,332,3,52,26, + 0,331,330,1,0,0,0,331,332,1,0,0,0,332,336,1,0,0,0,333,335,5,1,0,0,334, + 333,1,0,0,0,335,338,1,0,0,0,336,334,1,0,0,0,336,337,1,0,0,0,337,340,1, + 0,0,0,338,336,1,0,0,0,339,341,5,18,0,0,340,339,1,0,0,0,340,341,1,0,0,0, + 341,345,1,0,0,0,342,344,5,1,0,0,343,342,1,0,0,0,344,347,1,0,0,0,345,343, + 1,0,0,0,345,346,1,0,0,0,346,350,1,0,0,0,347,345,1,0,0,0,348,351,3,44,22, + 0,349,351,3,46,23,0,350,348,1,0,0,0,350,349,1,0,0,0,350,351,1,0,0,0,351, + 352,1,0,0,0,352,353,3,4,2,0,353,43,1,0,0,0,354,355,5,24,0,0,355,45,1,0, + 0,0,356,357,5,25,0,0,357,47,1,0,0,0,358,359,5,22,0,0,359,49,1,0,0,0,360, + 362,5,20,0,0,361,360,1,0,0,0,361,362,1,0,0,0,362,366,1,0,0,0,363,365,5, + 1,0,0,364,363,1,0,0,0,365,368,1,0,0,0,366,364,1,0,0,0,366,367,1,0,0,0, + 367,369,1,0,0,0,368,366,1,0,0,0,369,370,3,54,27,0,370,51,1,0,0,0,371,375, + 5,21,0,0,372,374,5,1,0,0,373,372,1,0,0,0,374,377,1,0,0,0,375,373,1,0,0, + 0,375,376,1,0,0,0,376,378,1,0,0,0,377,375,1,0,0,0,378,379,3,54,27,0,379, + 53,1,0,0,0,380,397,7,3,0,0,381,383,5,1,0,0,382,381,1,0,0,0,383,386,1,0, + 0,0,384,382,1,0,0,0,384,385,1,0,0,0,385,387,1,0,0,0,386,384,1,0,0,0,387, + 391,5,19,0,0,388,390,5,1,0,0,389,388,1,0,0,0,390,393,1,0,0,0,391,389,1, + 0,0,0,391,392,1,0,0,0,392,394,1,0,0,0,393,391,1,0,0,0,394,396,7,3,0,0, + 395,384,1,0,0,0,396,399,1,0,0,0,397,395,1,0,0,0,397,398,1,0,0,0,398,55, + 1,0,0,0,399,397,1,0,0,0,400,408,5,26,0,0,401,403,5,1,0,0,402,401,1,0,0, + 0,403,406,1,0,0,0,404,402,1,0,0,0,404,405,1,0,0,0,405,407,1,0,0,0,406, + 404,1,0,0,0,407,409,5,23,0,0,408,404,1,0,0,0,408,409,1,0,0,0,409,57,1, + 0,0,0,410,418,5,27,0,0,411,413,5,1,0,0,412,411,1,0,0,0,413,416,1,0,0,0, + 414,412,1,0,0,0,414,415,1,0,0,0,415,417,1,0,0,0,416,414,1,0,0,0,417,419, + 5,23,0,0,418,414,1,0,0,0,418,419,1,0,0,0,419,59,1,0,0,0,420,421,3,62,31, + 0,421,61,1,0,0,0,422,424,3,64,32,0,423,425,3,74,37,0,424,423,1,0,0,0,424, + 425,1,0,0,0,425,63,1,0,0,0,426,428,5,1,0,0,427,426,1,0,0,0,428,431,1,0, + 0,0,429,427,1,0,0,0,429,430,1,0,0,0,430,432,1,0,0,0,431,429,1,0,0,0,432, + 434,5,9,0,0,433,435,3,66,33,0,434,433,1,0,0,0,434,435,1,0,0,0,435,437, + 1,0,0,0,436,438,5,38,0,0,437,436,1,0,0,0,437,438,1,0,0,0,438,440,1,0,0, + 0,439,441,3,68,34,0,440,439,1,0,0,0,440,441,1,0,0,0,441,65,1,0,0,0,442, + 444,7,4,0,0,443,442,1,0,0,0,444,445,1,0,0,0,445,443,1,0,0,0,445,446,1, + 0,0,0,446,67,1,0,0,0,447,453,3,70,35,0,448,453,3,72,36,0,449,453,5,37, + 0,0,450,453,5,38,0,0,451,453,5,1,0,0,452,447,1,0,0,0,452,448,1,0,0,0,452, + 449,1,0,0,0,452,450,1,0,0,0,452,451,1,0,0,0,453,454,1,0,0,0,454,452,1, + 0,0,0,454,455,1,0,0,0,455,69,1,0,0,0,456,457,5,35,0,0,457,71,1,0,0,0,458, + 459,5,36,0,0,459,73,1,0,0,0,460,461,3,76,38,0,461,462,3,4,2,0,462,465, + 1,0,0,0,463,465,3,8,4,0,464,460,1,0,0,0,464,463,1,0,0,0,465,466,1,0,0, + 0,466,464,1,0,0,0,466,467,1,0,0,0,467,75,1,0,0,0,468,470,5,1,0,0,469,468, + 1,0,0,0,470,473,1,0,0,0,471,469,1,0,0,0,471,472,1,0,0,0,472,474,1,0,0, + 0,473,471,1,0,0,0,474,478,5,8,0,0,475,477,7,2,0,0,476,475,1,0,0,0,477, + 480,1,0,0,0,478,476,1,0,0,0,478,479,1,0,0,0,479,77,1,0,0,0,480,478,1,0, + 0,0,481,482,3,80,40,0,482,79,1,0,0,0,483,485,5,1,0,0,484,483,1,0,0,0,485, + 488,1,0,0,0,486,484,1,0,0,0,486,487,1,0,0,0,487,489,1,0,0,0,488,486,1, + 0,0,0,489,493,5,11,0,0,490,492,5,1,0,0,491,490,1,0,0,0,492,495,1,0,0,0, + 493,491,1,0,0,0,493,494,1,0,0,0,494,81,1,0,0,0,495,493,1,0,0,0,496,497, + 3,84,42,0,497,83,1,0,0,0,498,500,5,1,0,0,499,498,1,0,0,0,500,503,1,0,0, + 0,501,499,1,0,0,0,501,502,1,0,0,0,502,504,1,0,0,0,503,501,1,0,0,0,504, + 508,5,12,0,0,505,507,5,1,0,0,506,505,1,0,0,0,507,510,1,0,0,0,508,506,1, + 0,0,0,508,509,1,0,0,0,509,85,1,0,0,0,510,508,1,0,0,0,511,512,3,88,44,0, + 512,87,1,0,0,0,513,515,3,90,45,0,514,513,1,0,0,0,514,515,1,0,0,0,515,517, + 1,0,0,0,516,518,3,92,46,0,517,516,1,0,0,0,517,518,1,0,0,0,518,519,1,0, + 0,0,519,520,3,94,47,0,520,521,3,98,49,0,521,523,3,104,52,0,522,524,3,108, + 54,0,523,522,1,0,0,0,523,524,1,0,0,0,524,89,1,0,0,0,525,527,5,1,0,0,526, + 525,1,0,0,0,527,530,1,0,0,0,528,526,1,0,0,0,528,529,1,0,0,0,529,531,1, + 0,0,0,530,528,1,0,0,0,531,532,5,3,0,0,532,91,1,0,0,0,533,535,5,1,0,0,534, + 533,1,0,0,0,535,538,1,0,0,0,536,534,1,0,0,0,536,537,1,0,0,0,537,539,1, + 0,0,0,538,536,1,0,0,0,539,540,5,14,0,0,540,93,1,0,0,0,541,543,5,1,0,0, + 542,541,1,0,0,0,543,546,1,0,0,0,544,542,1,0,0,0,544,545,1,0,0,0,545,547, + 1,0,0,0,546,544,1,0,0,0,547,548,5,6,0,0,548,549,3,96,48,0,549,95,1,0,0, + 0,550,552,5,40,0,0,551,550,1,0,0,0,552,555,1,0,0,0,553,551,1,0,0,0,553, + 554,1,0,0,0,554,97,1,0,0,0,555,553,1,0,0,0,556,558,5,1,0,0,557,556,1,0, + 0,0,558,561,1,0,0,0,559,557,1,0,0,0,559,560,1,0,0,0,560,568,1,0,0,0,561, + 559,1,0,0,0,562,563,3,100,50,0,563,564,3,4,2,0,564,567,1,0,0,0,565,567, + 3,102,51,0,566,562,1,0,0,0,566,565,1,0,0,0,567,570,1,0,0,0,568,566,1,0, + 0,0,568,569,1,0,0,0,569,99,1,0,0,0,570,568,1,0,0,0,571,575,5,8,0,0,572, + 574,7,5,0,0,573,572,1,0,0,0,574,577,1,0,0,0,575,573,1,0,0,0,575,576,1, + 0,0,0,576,101,1,0,0,0,577,575,1,0,0,0,578,580,7,1,0,0,579,578,1,0,0,0, + 580,581,1,0,0,0,581,579,1,0,0,0,581,582,1,0,0,0,582,103,1,0,0,0,583,585, + 3,106,53,0,584,583,1,0,0,0,584,585,1,0,0,0,585,586,1,0,0,0,586,592,3,114, + 57,0,587,589,3,114,57,0,588,590,3,106,53,0,589,588,1,0,0,0,589,590,1,0, + 0,0,590,592,1,0,0,0,591,584,1,0,0,0,591,587,1,0,0,0,592,105,1,0,0,0,593, + 595,5,1,0,0,594,593,1,0,0,0,595,598,1,0,0,0,596,594,1,0,0,0,596,597,1, + 0,0,0,597,599,1,0,0,0,598,596,1,0,0,0,599,602,5,13,0,0,600,603,3,110,55, + 0,601,603,3,112,56,0,602,600,1,0,0,0,602,601,1,0,0,0,603,604,1,0,0,0,604, + 602,1,0,0,0,604,605,1,0,0,0,605,107,1,0,0,0,606,608,5,1,0,0,607,606,1, + 0,0,0,608,611,1,0,0,0,609,607,1,0,0,0,609,610,1,0,0,0,610,612,1,0,0,0, + 611,609,1,0,0,0,612,615,5,16,0,0,613,616,3,110,55,0,614,616,3,112,56,0, + 615,613,1,0,0,0,615,614,1,0,0,0,616,617,1,0,0,0,617,615,1,0,0,0,617,618, + 1,0,0,0,618,109,1,0,0,0,619,621,5,1,0,0,620,619,1,0,0,0,621,624,1,0,0, + 0,622,620,1,0,0,0,622,623,1,0,0,0,623,625,1,0,0,0,624,622,1,0,0,0,625, + 629,5,8,0,0,626,628,7,5,0,0,627,626,1,0,0,0,628,631,1,0,0,0,629,627,1, + 0,0,0,629,630,1,0,0,0,630,632,1,0,0,0,631,629,1,0,0,0,632,633,3,4,2,0, + 633,111,1,0,0,0,634,636,7,1,0,0,635,634,1,0,0,0,636,637,1,0,0,0,637,635, + 1,0,0,0,637,638,1,0,0,0,638,113,1,0,0,0,639,641,5,1,0,0,640,639,1,0,0, + 0,641,644,1,0,0,0,642,640,1,0,0,0,642,643,1,0,0,0,643,645,1,0,0,0,644, + 642,1,0,0,0,645,646,5,15,0,0,646,115,1,0,0,0,647,648,3,118,59,0,648,117, + 1,0,0,0,649,651,5,1,0,0,650,649,1,0,0,0,651,654,1,0,0,0,652,650,1,0,0, + 0,652,653,1,0,0,0,653,655,1,0,0,0,654,652,1,0,0,0,655,656,5,4,0,0,656, + 119,1,0,0,0,94,123,126,128,141,146,153,158,166,173,181,183,191,197,202, + 212,217,222,227,235,237,243,251,258,260,265,272,279,285,287,292,299,303, + 308,313,318,322,327,331,336,340,345,350,361,366,375,384,391,397,404,408, + 414,418,424,429,434,437,440,445,452,454,464,466,471,478,486,493,501,508, + 514,517,523,528,536,544,553,559,566,568,575,581,584,589,591,596,602,604, + 609,615,617,622,629,637,642,652 }; public static readonly ATN _ATN = diff --git a/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParser.interp b/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParser.interp index 639b9a581a..481811f9ed 100644 --- a/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParser.interp +++ b/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParser.interp @@ -88,6 +88,7 @@ rule names: file paragraph newline +commentDefinition errorString nestedIntentSection nestedIntentNameLine @@ -147,4 +148,4 @@ modelInfoDefinition atn: -[4, 1, 40, 647, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 1, 0, 4, 0, 120, 8, 0, 11, 0, 12, 0, 121, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 135, 8, 1, 1, 2, 5, 2, 138, 8, 2, 10, 2, 12, 2, 141, 9, 2, 1, 2, 1, 2, 1, 3, 4, 3, 146, 8, 3, 11, 3, 12, 3, 147, 1, 4, 1, 4, 1, 4, 1, 5, 5, 5, 154, 8, 5, 10, 5, 12, 5, 157, 9, 5, 1, 5, 1, 5, 5, 5, 161, 8, 5, 10, 5, 12, 5, 164, 9, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 5, 6, 171, 8, 6, 10, 6, 12, 6, 174, 9, 6, 1, 7, 1, 7, 1, 7, 5, 7, 179, 8, 7, 10, 7, 12, 7, 182, 9, 7, 1, 8, 4, 8, 185, 8, 8, 11, 8, 12, 8, 186, 1, 9, 5, 9, 190, 8, 9, 10, 9, 12, 9, 193, 9, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 3, 11, 202, 8, 11, 1, 12, 5, 12, 205, 8, 12, 10, 12, 12, 12, 208, 9, 12, 1, 12, 1, 12, 3, 12, 212, 8, 12, 1, 12, 5, 12, 215, 8, 12, 10, 12, 12, 12, 218, 9, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 5, 13, 225, 8, 13, 10, 13, 12, 13, 228, 9, 13, 1, 14, 5, 14, 231, 8, 14, 10, 14, 12, 14, 234, 9, 14, 1, 14, 1, 14, 1, 15, 5, 15, 239, 8, 15, 10, 15, 12, 15, 242, 9, 15, 1, 15, 1, 15, 1, 15, 1, 15, 4, 15, 248, 8, 15, 11, 15, 12, 15, 249, 1, 16, 5, 16, 253, 8, 16, 10, 16, 12, 16, 256, 9, 16, 1, 16, 1, 16, 5, 16, 260, 8, 16, 10, 16, 12, 16, 263, 9, 16, 1, 17, 1, 17, 1, 18, 1, 18, 3, 18, 269, 8, 18, 1, 19, 1, 19, 1, 19, 1, 19, 4, 19, 275, 8, 19, 11, 19, 12, 19, 276, 1, 20, 5, 20, 280, 8, 20, 10, 20, 12, 20, 283, 9, 20, 1, 20, 1, 20, 5, 20, 287, 8, 20, 10, 20, 12, 20, 290, 9, 20, 1, 20, 3, 20, 293, 8, 20, 1, 20, 5, 20, 296, 8, 20, 10, 20, 12, 20, 299, 9, 20, 1, 20, 1, 20, 3, 20, 303, 8, 20, 1, 20, 5, 20, 306, 8, 20, 10, 20, 12, 20, 309, 9, 20, 1, 20, 3, 20, 312, 8, 20, 1, 20, 5, 20, 315, 8, 20, 10, 20, 12, 20, 318, 9, 20, 1, 20, 3, 20, 321, 8, 20, 1, 20, 5, 20, 324, 8, 20, 10, 20, 12, 20, 327, 9, 20, 1, 20, 3, 20, 330, 8, 20, 1, 20, 5, 20, 333, 8, 20, 10, 20, 12, 20, 336, 9, 20, 1, 20, 1, 20, 3, 20, 340, 8, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 22, 1, 22, 1, 23, 1, 23, 1, 24, 3, 24, 351, 8, 24, 1, 24, 5, 24, 354, 8, 24, 10, 24, 12, 24, 357, 9, 24, 1, 24, 1, 24, 1, 25, 1, 25, 5, 25, 363, 8, 25, 10, 25, 12, 25, 366, 9, 25, 1, 25, 1, 25, 1, 26, 1, 26, 5, 26, 372, 8, 26, 10, 26, 12, 26, 375, 9, 26, 1, 26, 1, 26, 5, 26, 379, 8, 26, 10, 26, 12, 26, 382, 9, 26, 1, 26, 5, 26, 385, 8, 26, 10, 26, 12, 26, 388, 9, 26, 1, 27, 1, 27, 5, 27, 392, 8, 27, 10, 27, 12, 27, 395, 9, 27, 1, 27, 3, 27, 398, 8, 27, 1, 28, 1, 28, 5, 28, 402, 8, 28, 10, 28, 12, 28, 405, 9, 28, 1, 28, 3, 28, 408, 8, 28, 1, 29, 1, 29, 1, 30, 1, 30, 3, 30, 414, 8, 30, 1, 31, 5, 31, 417, 8, 31, 10, 31, 12, 31, 420, 9, 31, 1, 31, 1, 31, 3, 31, 424, 8, 31, 1, 31, 3, 31, 427, 8, 31, 1, 31, 3, 31, 430, 8, 31, 1, 32, 4, 32, 433, 8, 32, 11, 32, 12, 32, 434, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 4, 33, 442, 8, 33, 11, 33, 12, 33, 443, 1, 34, 1, 34, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 4, 36, 454, 8, 36, 11, 36, 12, 36, 455, 1, 37, 5, 37, 459, 8, 37, 10, 37, 12, 37, 462, 9, 37, 1, 37, 1, 37, 5, 37, 466, 8, 37, 10, 37, 12, 37, 469, 9, 37, 1, 38, 1, 38, 1, 39, 5, 39, 474, 8, 39, 10, 39, 12, 39, 477, 9, 39, 1, 39, 1, 39, 5, 39, 481, 8, 39, 10, 39, 12, 39, 484, 9, 39, 1, 40, 1, 40, 1, 41, 5, 41, 489, 8, 41, 10, 41, 12, 41, 492, 9, 41, 1, 41, 1, 41, 5, 41, 496, 8, 41, 10, 41, 12, 41, 499, 9, 41, 1, 42, 1, 42, 1, 43, 3, 43, 504, 8, 43, 1, 43, 3, 43, 507, 8, 43, 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 513, 8, 43, 1, 44, 5, 44, 516, 8, 44, 10, 44, 12, 44, 519, 9, 44, 1, 44, 1, 44, 1, 45, 5, 45, 524, 8, 45, 10, 45, 12, 45, 527, 9, 45, 1, 45, 1, 45, 1, 46, 5, 46, 532, 8, 46, 10, 46, 12, 46, 535, 9, 46, 1, 46, 1, 46, 1, 46, 1, 47, 5, 47, 541, 8, 47, 10, 47, 12, 47, 544, 9, 47, 1, 48, 5, 48, 547, 8, 48, 10, 48, 12, 48, 550, 9, 48, 1, 48, 1, 48, 1, 48, 1, 48, 5, 48, 556, 8, 48, 10, 48, 12, 48, 559, 9, 48, 1, 49, 1, 49, 5, 49, 563, 8, 49, 10, 49, 12, 49, 566, 9, 49, 1, 50, 4, 50, 569, 8, 50, 11, 50, 12, 50, 570, 1, 51, 3, 51, 574, 8, 51, 1, 51, 1, 51, 1, 51, 3, 51, 579, 8, 51, 3, 51, 581, 8, 51, 1, 52, 5, 52, 584, 8, 52, 10, 52, 12, 52, 587, 9, 52, 1, 52, 1, 52, 1, 52, 4, 52, 592, 8, 52, 11, 52, 12, 52, 593, 1, 53, 5, 53, 597, 8, 53, 10, 53, 12, 53, 600, 9, 53, 1, 53, 1, 53, 1, 53, 4, 53, 605, 8, 53, 11, 53, 12, 53, 606, 1, 54, 5, 54, 610, 8, 54, 10, 54, 12, 54, 613, 9, 54, 1, 54, 1, 54, 5, 54, 617, 8, 54, 10, 54, 12, 54, 620, 9, 54, 1, 54, 1, 54, 1, 55, 4, 55, 625, 8, 55, 11, 55, 12, 55, 626, 1, 56, 5, 56, 630, 8, 56, 10, 56, 12, 56, 633, 9, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 5, 58, 640, 8, 58, 10, 58, 12, 58, 643, 9, 58, 1, 58, 1, 58, 1, 58, 1, 121, 0, 59, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 0, 6, 1, 1, 2, 2, 2, 0, 1, 1, 17, 17, 2, 0, 1, 1, 31, 33, 1, 0, 26, 27, 2, 0, 1, 1, 37, 37, 2, 0, 1, 1, 33, 33, 690, 0, 119, 1, 0, 0, 0, 2, 134, 1, 0, 0, 0, 4, 139, 1, 0, 0, 0, 6, 145, 1, 0, 0, 0, 8, 149, 1, 0, 0, 0, 10, 155, 1, 0, 0, 0, 12, 167, 1, 0, 0, 0, 14, 175, 1, 0, 0, 0, 16, 184, 1, 0, 0, 0, 18, 191, 1, 0, 0, 0, 20, 197, 1, 0, 0, 0, 22, 199, 1, 0, 0, 0, 24, 206, 1, 0, 0, 0, 26, 221, 1, 0, 0, 0, 28, 232, 1, 0, 0, 0, 30, 240, 1, 0, 0, 0, 32, 254, 1, 0, 0, 0, 34, 264, 1, 0, 0, 0, 36, 266, 1, 0, 0, 0, 38, 274, 1, 0, 0, 0, 40, 281, 1, 0, 0, 0, 42, 343, 1, 0, 0, 0, 44, 345, 1, 0, 0, 0, 46, 347, 1, 0, 0, 0, 48, 350, 1, 0, 0, 0, 50, 360, 1, 0, 0, 0, 52, 369, 1, 0, 0, 0, 54, 389, 1, 0, 0, 0, 56, 399, 1, 0, 0, 0, 58, 409, 1, 0, 0, 0, 60, 411, 1, 0, 0, 0, 62, 418, 1, 0, 0, 0, 64, 432, 1, 0, 0, 0, 66, 441, 1, 0, 0, 0, 68, 445, 1, 0, 0, 0, 70, 447, 1, 0, 0, 0, 72, 453, 1, 0, 0, 0, 74, 460, 1, 0, 0, 0, 76, 470, 1, 0, 0, 0, 78, 475, 1, 0, 0, 0, 80, 485, 1, 0, 0, 0, 82, 490, 1, 0, 0, 0, 84, 500, 1, 0, 0, 0, 86, 503, 1, 0, 0, 0, 88, 517, 1, 0, 0, 0, 90, 525, 1, 0, 0, 0, 92, 533, 1, 0, 0, 0, 94, 542, 1, 0, 0, 0, 96, 548, 1, 0, 0, 0, 98, 560, 1, 0, 0, 0, 100, 568, 1, 0, 0, 0, 102, 580, 1, 0, 0, 0, 104, 585, 1, 0, 0, 0, 106, 598, 1, 0, 0, 0, 108, 611, 1, 0, 0, 0, 110, 624, 1, 0, 0, 0, 112, 631, 1, 0, 0, 0, 114, 636, 1, 0, 0, 0, 116, 641, 1, 0, 0, 0, 118, 120, 3, 2, 1, 0, 119, 118, 1, 0, 0, 0, 120, 121, 1, 0, 0, 0, 121, 122, 1, 0, 0, 0, 121, 119, 1, 0, 0, 0, 122, 123, 1, 0, 0, 0, 123, 124, 5, 0, 0, 1, 124, 1, 1, 0, 0, 0, 125, 135, 5, 2, 0, 0, 126, 135, 3, 8, 4, 0, 127, 135, 3, 20, 10, 0, 128, 135, 3, 58, 29, 0, 129, 135, 3, 34, 17, 0, 130, 135, 3, 76, 38, 0, 131, 135, 3, 80, 40, 0, 132, 135, 3, 84, 42, 0, 133, 135, 3, 114, 57, 0, 134, 125, 1, 0, 0, 0, 134, 126, 1, 0, 0, 0, 134, 127, 1, 0, 0, 0, 134, 128, 1, 0, 0, 0, 134, 129, 1, 0, 0, 0, 134, 130, 1, 0, 0, 0, 134, 131, 1, 0, 0, 0, 134, 132, 1, 0, 0, 0, 134, 133, 1, 0, 0, 0, 135, 3, 1, 0, 0, 0, 136, 138, 5, 1, 0, 0, 137, 136, 1, 0, 0, 0, 138, 141, 1, 0, 0, 0, 139, 137, 1, 0, 0, 0, 139, 140, 1, 0, 0, 0, 140, 142, 1, 0, 0, 0, 141, 139, 1, 0, 0, 0, 142, 143, 7, 0, 0, 0, 143, 5, 1, 0, 0, 0, 144, 146, 7, 1, 0, 0, 145, 144, 1, 0, 0, 0, 146, 147, 1, 0, 0, 0, 147, 145, 1, 0, 0, 0, 147, 148, 1, 0, 0, 0, 148, 7, 1, 0, 0, 0, 149, 150, 3, 10, 5, 0, 150, 151, 3, 16, 8, 0, 151, 9, 1, 0, 0, 0, 152, 154, 5, 1, 0, 0, 153, 152, 1, 0, 0, 0, 154, 157, 1, 0, 0, 0, 155, 153, 1, 0, 0, 0, 155, 156, 1, 0, 0, 0, 156, 158, 1, 0, 0, 0, 157, 155, 1, 0, 0, 0, 158, 162, 5, 7, 0, 0, 159, 161, 5, 1, 0, 0, 160, 159, 1, 0, 0, 0, 161, 164, 1, 0, 0, 0, 162, 160, 1, 0, 0, 0, 162, 163, 1, 0, 0, 0, 163, 165, 1, 0, 0, 0, 164, 162, 1, 0, 0, 0, 165, 166, 3, 12, 6, 0, 166, 11, 1, 0, 0, 0, 167, 172, 3, 14, 7, 0, 168, 171, 5, 1, 0, 0, 169, 171, 3, 14, 7, 0, 170, 168, 1, 0, 0, 0, 170, 169, 1, 0, 0, 0, 171, 174, 1, 0, 0, 0, 172, 170, 1, 0, 0, 0, 172, 173, 1, 0, 0, 0, 173, 13, 1, 0, 0, 0, 174, 172, 1, 0, 0, 0, 175, 180, 5, 29, 0, 0, 176, 177, 5, 30, 0, 0, 177, 179, 5, 29, 0, 0, 178, 176, 1, 0, 0, 0, 179, 182, 1, 0, 0, 0, 180, 178, 1, 0, 0, 0, 180, 181, 1, 0, 0, 0, 181, 15, 1, 0, 0, 0, 182, 180, 1, 0, 0, 0, 183, 185, 3, 18, 9, 0, 184, 183, 1, 0, 0, 0, 185, 186, 1, 0, 0, 0, 186, 184, 1, 0, 0, 0, 186, 187, 1, 0, 0, 0, 187, 17, 1, 0, 0, 0, 188, 190, 5, 1, 0, 0, 189, 188, 1, 0, 0, 0, 190, 193, 1, 0, 0, 0, 191, 189, 1, 0, 0, 0, 191, 192, 1, 0, 0, 0, 192, 194, 1, 0, 0, 0, 193, 191, 1, 0, 0, 0, 194, 195, 5, 7, 0, 0, 195, 196, 3, 20, 10, 0, 196, 19, 1, 0, 0, 0, 197, 198, 3, 22, 11, 0, 198, 21, 1, 0, 0, 0, 199, 201, 3, 24, 12, 0, 200, 202, 3, 28, 14, 0, 201, 200, 1, 0, 0, 0, 201, 202, 1, 0, 0, 0, 202, 23, 1, 0, 0, 0, 203, 205, 5, 1, 0, 0, 204, 203, 1, 0, 0, 0, 205, 208, 1, 0, 0, 0, 206, 204, 1, 0, 0, 0, 206, 207, 1, 0, 0, 0, 207, 209, 1, 0, 0, 0, 208, 206, 1, 0, 0, 0, 209, 211, 5, 7, 0, 0, 210, 212, 5, 7, 0, 0, 211, 210, 1, 0, 0, 0, 211, 212, 1, 0, 0, 0, 212, 216, 1, 0, 0, 0, 213, 215, 5, 1, 0, 0, 214, 213, 1, 0, 0, 0, 215, 218, 1, 0, 0, 0, 216, 214, 1, 0, 0, 0, 216, 217, 1, 0, 0, 0, 217, 219, 1, 0, 0, 0, 218, 216, 1, 0, 0, 0, 219, 220, 3, 26, 13, 0, 220, 25, 1, 0, 0, 0, 221, 226, 3, 14, 7, 0, 222, 225, 5, 1, 0, 0, 223, 225, 3, 14, 7, 0, 224, 222, 1, 0, 0, 0, 224, 223, 1, 0, 0, 0, 225, 228, 1, 0, 0, 0, 226, 224, 1, 0, 0, 0, 226, 227, 1, 0, 0, 0, 227, 27, 1, 0, 0, 0, 228, 226, 1, 0, 0, 0, 229, 231, 5, 1, 0, 0, 230, 229, 1, 0, 0, 0, 231, 234, 1, 0, 0, 0, 232, 230, 1, 0, 0, 0, 232, 233, 1, 0, 0, 0, 233, 235, 1, 0, 0, 0, 234, 232, 1, 0, 0, 0, 235, 236, 3, 30, 15, 0, 236, 29, 1, 0, 0, 0, 237, 239, 5, 1, 0, 0, 238, 237, 1, 0, 0, 0, 239, 242, 1, 0, 0, 0, 240, 238, 1, 0, 0, 0, 240, 241, 1, 0, 0, 0, 241, 247, 1, 0, 0, 0, 242, 240, 1, 0, 0, 0, 243, 244, 3, 32, 16, 0, 244, 245, 3, 4, 2, 0, 245, 248, 1, 0, 0, 0, 246, 248, 3, 6, 3, 0, 247, 243, 1, 0, 0, 0, 247, 246, 1, 0, 0, 0, 248, 249, 1, 0, 0, 0, 249, 247, 1, 0, 0, 0, 249, 250, 1, 0, 0, 0, 250, 31, 1, 0, 0, 0, 251, 253, 5, 1, 0, 0, 252, 251, 1, 0, 0, 0, 253, 256, 1, 0, 0, 0, 254, 252, 1, 0, 0, 0, 254, 255, 1, 0, 0, 0, 255, 257, 1, 0, 0, 0, 256, 254, 1, 0, 0, 0, 257, 261, 5, 8, 0, 0, 258, 260, 7, 2, 0, 0, 259, 258, 1, 0, 0, 0, 260, 263, 1, 0, 0, 0, 261, 259, 1, 0, 0, 0, 261, 262, 1, 0, 0, 0, 262, 33, 1, 0, 0, 0, 263, 261, 1, 0, 0, 0, 264, 265, 3, 36, 18, 0, 265, 35, 1, 0, 0, 0, 266, 268, 3, 40, 20, 0, 267, 269, 3, 38, 19, 0, 268, 267, 1, 0, 0, 0, 268, 269, 1, 0, 0, 0, 269, 37, 1, 0, 0, 0, 270, 271, 3, 74, 37, 0, 271, 272, 3, 4, 2, 0, 272, 275, 1, 0, 0, 0, 273, 275, 3, 6, 3, 0, 274, 270, 1, 0, 0, 0, 274, 273, 1, 0, 0, 0, 275, 276, 1, 0, 0, 0, 276, 274, 1, 0, 0, 0, 276, 277, 1, 0, 0, 0, 277, 39, 1, 0, 0, 0, 278, 280, 5, 1, 0, 0, 279, 278, 1, 0, 0, 0, 280, 283, 1, 0, 0, 0, 281, 279, 1, 0, 0, 0, 281, 282, 1, 0, 0, 0, 282, 284, 1, 0, 0, 0, 283, 281, 1, 0, 0, 0, 284, 288, 5, 10, 0, 0, 285, 287, 5, 1, 0, 0, 286, 285, 1, 0, 0, 0, 287, 290, 1, 0, 0, 0, 288, 286, 1, 0, 0, 0, 288, 289, 1, 0, 0, 0, 289, 292, 1, 0, 0, 0, 290, 288, 1, 0, 0, 0, 291, 293, 3, 46, 23, 0, 292, 291, 1, 0, 0, 0, 292, 293, 1, 0, 0, 0, 293, 297, 1, 0, 0, 0, 294, 296, 5, 1, 0, 0, 295, 294, 1, 0, 0, 0, 296, 299, 1, 0, 0, 0, 297, 295, 1, 0, 0, 0, 297, 298, 1, 0, 0, 0, 298, 302, 1, 0, 0, 0, 299, 297, 1, 0, 0, 0, 300, 303, 3, 54, 27, 0, 301, 303, 3, 56, 28, 0, 302, 300, 1, 0, 0, 0, 302, 301, 1, 0, 0, 0, 302, 303, 1, 0, 0, 0, 303, 307, 1, 0, 0, 0, 304, 306, 5, 1, 0, 0, 305, 304, 1, 0, 0, 0, 306, 309, 1, 0, 0, 0, 307, 305, 1, 0, 0, 0, 307, 308, 1, 0, 0, 0, 308, 311, 1, 0, 0, 0, 309, 307, 1, 0, 0, 0, 310, 312, 3, 48, 24, 0, 311, 310, 1, 0, 0, 0, 311, 312, 1, 0, 0, 0, 312, 316, 1, 0, 0, 0, 313, 315, 5, 1, 0, 0, 314, 313, 1, 0, 0, 0, 315, 318, 1, 0, 0, 0, 316, 314, 1, 0, 0, 0, 316, 317, 1, 0, 0, 0, 317, 320, 1, 0, 0, 0, 318, 316, 1, 0, 0, 0, 319, 321, 3, 50, 25, 0, 320, 319, 1, 0, 0, 0, 320, 321, 1, 0, 0, 0, 321, 325, 1, 0, 0, 0, 322, 324, 5, 1, 0, 0, 323, 322, 1, 0, 0, 0, 324, 327, 1, 0, 0, 0, 325, 323, 1, 0, 0, 0, 325, 326, 1, 0, 0, 0, 326, 329, 1, 0, 0, 0, 327, 325, 1, 0, 0, 0, 328, 330, 5, 18, 0, 0, 329, 328, 1, 0, 0, 0, 329, 330, 1, 0, 0, 0, 330, 334, 1, 0, 0, 0, 331, 333, 5, 1, 0, 0, 332, 331, 1, 0, 0, 0, 333, 336, 1, 0, 0, 0, 334, 332, 1, 0, 0, 0, 334, 335, 1, 0, 0, 0, 335, 339, 1, 0, 0, 0, 336, 334, 1, 0, 0, 0, 337, 340, 3, 42, 21, 0, 338, 340, 3, 44, 22, 0, 339, 337, 1, 0, 0, 0, 339, 338, 1, 0, 0, 0, 339, 340, 1, 0, 0, 0, 340, 341, 1, 0, 0, 0, 341, 342, 3, 4, 2, 0, 342, 41, 1, 0, 0, 0, 343, 344, 5, 24, 0, 0, 344, 43, 1, 0, 0, 0, 345, 346, 5, 25, 0, 0, 346, 45, 1, 0, 0, 0, 347, 348, 5, 22, 0, 0, 348, 47, 1, 0, 0, 0, 349, 351, 5, 20, 0, 0, 350, 349, 1, 0, 0, 0, 350, 351, 1, 0, 0, 0, 351, 355, 1, 0, 0, 0, 352, 354, 5, 1, 0, 0, 353, 352, 1, 0, 0, 0, 354, 357, 1, 0, 0, 0, 355, 353, 1, 0, 0, 0, 355, 356, 1, 0, 0, 0, 356, 358, 1, 0, 0, 0, 357, 355, 1, 0, 0, 0, 358, 359, 3, 52, 26, 0, 359, 49, 1, 0, 0, 0, 360, 364, 5, 21, 0, 0, 361, 363, 5, 1, 0, 0, 362, 361, 1, 0, 0, 0, 363, 366, 1, 0, 0, 0, 364, 362, 1, 0, 0, 0, 364, 365, 1, 0, 0, 0, 365, 367, 1, 0, 0, 0, 366, 364, 1, 0, 0, 0, 367, 368, 3, 52, 26, 0, 368, 51, 1, 0, 0, 0, 369, 386, 7, 3, 0, 0, 370, 372, 5, 1, 0, 0, 371, 370, 1, 0, 0, 0, 372, 375, 1, 0, 0, 0, 373, 371, 1, 0, 0, 0, 373, 374, 1, 0, 0, 0, 374, 376, 1, 0, 0, 0, 375, 373, 1, 0, 0, 0, 376, 380, 5, 19, 0, 0, 377, 379, 5, 1, 0, 0, 378, 377, 1, 0, 0, 0, 379, 382, 1, 0, 0, 0, 380, 378, 1, 0, 0, 0, 380, 381, 1, 0, 0, 0, 381, 383, 1, 0, 0, 0, 382, 380, 1, 0, 0, 0, 383, 385, 7, 3, 0, 0, 384, 373, 1, 0, 0, 0, 385, 388, 1, 0, 0, 0, 386, 384, 1, 0, 0, 0, 386, 387, 1, 0, 0, 0, 387, 53, 1, 0, 0, 0, 388, 386, 1, 0, 0, 0, 389, 397, 5, 26, 0, 0, 390, 392, 5, 1, 0, 0, 391, 390, 1, 0, 0, 0, 392, 395, 1, 0, 0, 0, 393, 391, 1, 0, 0, 0, 393, 394, 1, 0, 0, 0, 394, 396, 1, 0, 0, 0, 395, 393, 1, 0, 0, 0, 396, 398, 5, 23, 0, 0, 397, 393, 1, 0, 0, 0, 397, 398, 1, 0, 0, 0, 398, 55, 1, 0, 0, 0, 399, 407, 5, 27, 0, 0, 400, 402, 5, 1, 0, 0, 401, 400, 1, 0, 0, 0, 402, 405, 1, 0, 0, 0, 403, 401, 1, 0, 0, 0, 403, 404, 1, 0, 0, 0, 404, 406, 1, 0, 0, 0, 405, 403, 1, 0, 0, 0, 406, 408, 5, 23, 0, 0, 407, 403, 1, 0, 0, 0, 407, 408, 1, 0, 0, 0, 408, 57, 1, 0, 0, 0, 409, 410, 3, 60, 30, 0, 410, 59, 1, 0, 0, 0, 411, 413, 3, 62, 31, 0, 412, 414, 3, 72, 36, 0, 413, 412, 1, 0, 0, 0, 413, 414, 1, 0, 0, 0, 414, 61, 1, 0, 0, 0, 415, 417, 5, 1, 0, 0, 416, 415, 1, 0, 0, 0, 417, 420, 1, 0, 0, 0, 418, 416, 1, 0, 0, 0, 418, 419, 1, 0, 0, 0, 419, 421, 1, 0, 0, 0, 420, 418, 1, 0, 0, 0, 421, 423, 5, 9, 0, 0, 422, 424, 3, 64, 32, 0, 423, 422, 1, 0, 0, 0, 423, 424, 1, 0, 0, 0, 424, 426, 1, 0, 0, 0, 425, 427, 5, 38, 0, 0, 426, 425, 1, 0, 0, 0, 426, 427, 1, 0, 0, 0, 427, 429, 1, 0, 0, 0, 428, 430, 3, 66, 33, 0, 429, 428, 1, 0, 0, 0, 429, 430, 1, 0, 0, 0, 430, 63, 1, 0, 0, 0, 431, 433, 7, 4, 0, 0, 432, 431, 1, 0, 0, 0, 433, 434, 1, 0, 0, 0, 434, 432, 1, 0, 0, 0, 434, 435, 1, 0, 0, 0, 435, 65, 1, 0, 0, 0, 436, 442, 3, 68, 34, 0, 437, 442, 3, 70, 35, 0, 438, 442, 5, 37, 0, 0, 439, 442, 5, 38, 0, 0, 440, 442, 5, 1, 0, 0, 441, 436, 1, 0, 0, 0, 441, 437, 1, 0, 0, 0, 441, 438, 1, 0, 0, 0, 441, 439, 1, 0, 0, 0, 441, 440, 1, 0, 0, 0, 442, 443, 1, 0, 0, 0, 443, 441, 1, 0, 0, 0, 443, 444, 1, 0, 0, 0, 444, 67, 1, 0, 0, 0, 445, 446, 5, 35, 0, 0, 446, 69, 1, 0, 0, 0, 447, 448, 5, 36, 0, 0, 448, 71, 1, 0, 0, 0, 449, 450, 3, 74, 37, 0, 450, 451, 3, 4, 2, 0, 451, 454, 1, 0, 0, 0, 452, 454, 3, 6, 3, 0, 453, 449, 1, 0, 0, 0, 453, 452, 1, 0, 0, 0, 454, 455, 1, 0, 0, 0, 455, 453, 1, 0, 0, 0, 455, 456, 1, 0, 0, 0, 456, 73, 1, 0, 0, 0, 457, 459, 5, 1, 0, 0, 458, 457, 1, 0, 0, 0, 459, 462, 1, 0, 0, 0, 460, 458, 1, 0, 0, 0, 460, 461, 1, 0, 0, 0, 461, 463, 1, 0, 0, 0, 462, 460, 1, 0, 0, 0, 463, 467, 5, 8, 0, 0, 464, 466, 7, 2, 0, 0, 465, 464, 1, 0, 0, 0, 466, 469, 1, 0, 0, 0, 467, 465, 1, 0, 0, 0, 467, 468, 1, 0, 0, 0, 468, 75, 1, 0, 0, 0, 469, 467, 1, 0, 0, 0, 470, 471, 3, 78, 39, 0, 471, 77, 1, 0, 0, 0, 472, 474, 5, 1, 0, 0, 473, 472, 1, 0, 0, 0, 474, 477, 1, 0, 0, 0, 475, 473, 1, 0, 0, 0, 475, 476, 1, 0, 0, 0, 476, 478, 1, 0, 0, 0, 477, 475, 1, 0, 0, 0, 478, 482, 5, 11, 0, 0, 479, 481, 5, 1, 0, 0, 480, 479, 1, 0, 0, 0, 481, 484, 1, 0, 0, 0, 482, 480, 1, 0, 0, 0, 482, 483, 1, 0, 0, 0, 483, 79, 1, 0, 0, 0, 484, 482, 1, 0, 0, 0, 485, 486, 3, 82, 41, 0, 486, 81, 1, 0, 0, 0, 487, 489, 5, 1, 0, 0, 488, 487, 1, 0, 0, 0, 489, 492, 1, 0, 0, 0, 490, 488, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, 493, 1, 0, 0, 0, 492, 490, 1, 0, 0, 0, 493, 497, 5, 12, 0, 0, 494, 496, 5, 1, 0, 0, 495, 494, 1, 0, 0, 0, 496, 499, 1, 0, 0, 0, 497, 495, 1, 0, 0, 0, 497, 498, 1, 0, 0, 0, 498, 83, 1, 0, 0, 0, 499, 497, 1, 0, 0, 0, 500, 501, 3, 86, 43, 0, 501, 85, 1, 0, 0, 0, 502, 504, 3, 88, 44, 0, 503, 502, 1, 0, 0, 0, 503, 504, 1, 0, 0, 0, 504, 506, 1, 0, 0, 0, 505, 507, 3, 90, 45, 0, 506, 505, 1, 0, 0, 0, 506, 507, 1, 0, 0, 0, 507, 508, 1, 0, 0, 0, 508, 509, 3, 92, 46, 0, 509, 510, 3, 96, 48, 0, 510, 512, 3, 102, 51, 0, 511, 513, 3, 106, 53, 0, 512, 511, 1, 0, 0, 0, 512, 513, 1, 0, 0, 0, 513, 87, 1, 0, 0, 0, 514, 516, 5, 1, 0, 0, 515, 514, 1, 0, 0, 0, 516, 519, 1, 0, 0, 0, 517, 515, 1, 0, 0, 0, 517, 518, 1, 0, 0, 0, 518, 520, 1, 0, 0, 0, 519, 517, 1, 0, 0, 0, 520, 521, 5, 3, 0, 0, 521, 89, 1, 0, 0, 0, 522, 524, 5, 1, 0, 0, 523, 522, 1, 0, 0, 0, 524, 527, 1, 0, 0, 0, 525, 523, 1, 0, 0, 0, 525, 526, 1, 0, 0, 0, 526, 528, 1, 0, 0, 0, 527, 525, 1, 0, 0, 0, 528, 529, 5, 14, 0, 0, 529, 91, 1, 0, 0, 0, 530, 532, 5, 1, 0, 0, 531, 530, 1, 0, 0, 0, 532, 535, 1, 0, 0, 0, 533, 531, 1, 0, 0, 0, 533, 534, 1, 0, 0, 0, 534, 536, 1, 0, 0, 0, 535, 533, 1, 0, 0, 0, 536, 537, 5, 6, 0, 0, 537, 538, 3, 94, 47, 0, 538, 93, 1, 0, 0, 0, 539, 541, 5, 40, 0, 0, 540, 539, 1, 0, 0, 0, 541, 544, 1, 0, 0, 0, 542, 540, 1, 0, 0, 0, 542, 543, 1, 0, 0, 0, 543, 95, 1, 0, 0, 0, 544, 542, 1, 0, 0, 0, 545, 547, 5, 1, 0, 0, 546, 545, 1, 0, 0, 0, 547, 550, 1, 0, 0, 0, 548, 546, 1, 0, 0, 0, 548, 549, 1, 0, 0, 0, 549, 557, 1, 0, 0, 0, 550, 548, 1, 0, 0, 0, 551, 552, 3, 98, 49, 0, 552, 553, 3, 4, 2, 0, 553, 556, 1, 0, 0, 0, 554, 556, 3, 100, 50, 0, 555, 551, 1, 0, 0, 0, 555, 554, 1, 0, 0, 0, 556, 559, 1, 0, 0, 0, 557, 555, 1, 0, 0, 0, 557, 558, 1, 0, 0, 0, 558, 97, 1, 0, 0, 0, 559, 557, 1, 0, 0, 0, 560, 564, 5, 8, 0, 0, 561, 563, 7, 5, 0, 0, 562, 561, 1, 0, 0, 0, 563, 566, 1, 0, 0, 0, 564, 562, 1, 0, 0, 0, 564, 565, 1, 0, 0, 0, 565, 99, 1, 0, 0, 0, 566, 564, 1, 0, 0, 0, 567, 569, 7, 1, 0, 0, 568, 567, 1, 0, 0, 0, 569, 570, 1, 0, 0, 0, 570, 568, 1, 0, 0, 0, 570, 571, 1, 0, 0, 0, 571, 101, 1, 0, 0, 0, 572, 574, 3, 104, 52, 0, 573, 572, 1, 0, 0, 0, 573, 574, 1, 0, 0, 0, 574, 575, 1, 0, 0, 0, 575, 581, 3, 112, 56, 0, 576, 578, 3, 112, 56, 0, 577, 579, 3, 104, 52, 0, 578, 577, 1, 0, 0, 0, 578, 579, 1, 0, 0, 0, 579, 581, 1, 0, 0, 0, 580, 573, 1, 0, 0, 0, 580, 576, 1, 0, 0, 0, 581, 103, 1, 0, 0, 0, 582, 584, 5, 1, 0, 0, 583, 582, 1, 0, 0, 0, 584, 587, 1, 0, 0, 0, 585, 583, 1, 0, 0, 0, 585, 586, 1, 0, 0, 0, 586, 588, 1, 0, 0, 0, 587, 585, 1, 0, 0, 0, 588, 591, 5, 13, 0, 0, 589, 592, 3, 108, 54, 0, 590, 592, 3, 110, 55, 0, 591, 589, 1, 0, 0, 0, 591, 590, 1, 0, 0, 0, 592, 593, 1, 0, 0, 0, 593, 591, 1, 0, 0, 0, 593, 594, 1, 0, 0, 0, 594, 105, 1, 0, 0, 0, 595, 597, 5, 1, 0, 0, 596, 595, 1, 0, 0, 0, 597, 600, 1, 0, 0, 0, 598, 596, 1, 0, 0, 0, 598, 599, 1, 0, 0, 0, 599, 601, 1, 0, 0, 0, 600, 598, 1, 0, 0, 0, 601, 604, 5, 16, 0, 0, 602, 605, 3, 108, 54, 0, 603, 605, 3, 110, 55, 0, 604, 602, 1, 0, 0, 0, 604, 603, 1, 0, 0, 0, 605, 606, 1, 0, 0, 0, 606, 604, 1, 0, 0, 0, 606, 607, 1, 0, 0, 0, 607, 107, 1, 0, 0, 0, 608, 610, 5, 1, 0, 0, 609, 608, 1, 0, 0, 0, 610, 613, 1, 0, 0, 0, 611, 609, 1, 0, 0, 0, 611, 612, 1, 0, 0, 0, 612, 614, 1, 0, 0, 0, 613, 611, 1, 0, 0, 0, 614, 618, 5, 8, 0, 0, 615, 617, 7, 5, 0, 0, 616, 615, 1, 0, 0, 0, 617, 620, 1, 0, 0, 0, 618, 616, 1, 0, 0, 0, 618, 619, 1, 0, 0, 0, 619, 621, 1, 0, 0, 0, 620, 618, 1, 0, 0, 0, 621, 622, 3, 4, 2, 0, 622, 109, 1, 0, 0, 0, 623, 625, 7, 1, 0, 0, 624, 623, 1, 0, 0, 0, 625, 626, 1, 0, 0, 0, 626, 624, 1, 0, 0, 0, 626, 627, 1, 0, 0, 0, 627, 111, 1, 0, 0, 0, 628, 630, 5, 1, 0, 0, 629, 628, 1, 0, 0, 0, 630, 633, 1, 0, 0, 0, 631, 629, 1, 0, 0, 0, 631, 632, 1, 0, 0, 0, 632, 634, 1, 0, 0, 0, 633, 631, 1, 0, 0, 0, 634, 635, 5, 15, 0, 0, 635, 113, 1, 0, 0, 0, 636, 637, 3, 116, 58, 0, 637, 115, 1, 0, 0, 0, 638, 640, 5, 1, 0, 0, 639, 638, 1, 0, 0, 0, 640, 643, 1, 0, 0, 0, 641, 639, 1, 0, 0, 0, 641, 642, 1, 0, 0, 0, 642, 644, 1, 0, 0, 0, 643, 641, 1, 0, 0, 0, 644, 645, 5, 4, 0, 0, 645, 117, 1, 0, 0, 0, 91, 121, 134, 139, 147, 155, 162, 170, 172, 180, 186, 191, 201, 206, 211, 216, 224, 226, 232, 240, 247, 249, 254, 261, 268, 274, 276, 281, 288, 292, 297, 302, 307, 311, 316, 320, 325, 329, 334, 339, 350, 355, 364, 373, 380, 386, 393, 397, 403, 407, 413, 418, 423, 426, 429, 434, 441, 443, 453, 455, 460, 467, 475, 482, 490, 497, 503, 506, 512, 517, 525, 533, 542, 548, 555, 557, 564, 570, 573, 578, 580, 585, 591, 593, 598, 604, 606, 611, 618, 626, 631, 641] \ No newline at end of file +[4, 1, 40, 658, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 1, 0, 4, 0, 122, 8, 0, 11, 0, 12, 0, 123, 1, 0, 3, 0, 127, 8, 0, 3, 0, 129, 8, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 142, 8, 1, 1, 2, 5, 2, 145, 8, 2, 10, 2, 12, 2, 148, 9, 2, 1, 2, 1, 2, 1, 3, 1, 3, 3, 3, 154, 8, 3, 1, 4, 4, 4, 157, 8, 4, 11, 4, 12, 4, 158, 1, 5, 1, 5, 1, 5, 1, 6, 5, 6, 165, 8, 6, 10, 6, 12, 6, 168, 9, 6, 1, 6, 1, 6, 5, 6, 172, 8, 6, 10, 6, 12, 6, 175, 9, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 5, 7, 182, 8, 7, 10, 7, 12, 7, 185, 9, 7, 1, 8, 1, 8, 1, 8, 5, 8, 190, 8, 8, 10, 8, 12, 8, 193, 9, 8, 1, 9, 4, 9, 196, 8, 9, 11, 9, 12, 9, 197, 1, 10, 5, 10, 201, 8, 10, 10, 10, 12, 10, 204, 9, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 3, 12, 213, 8, 12, 1, 13, 5, 13, 216, 8, 13, 10, 13, 12, 13, 219, 9, 13, 1, 13, 1, 13, 3, 13, 223, 8, 13, 1, 13, 5, 13, 226, 8, 13, 10, 13, 12, 13, 229, 9, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 5, 14, 236, 8, 14, 10, 14, 12, 14, 239, 9, 14, 1, 15, 5, 15, 242, 8, 15, 10, 15, 12, 15, 245, 9, 15, 1, 15, 1, 15, 1, 16, 5, 16, 250, 8, 16, 10, 16, 12, 16, 253, 9, 16, 1, 16, 1, 16, 1, 16, 1, 16, 4, 16, 259, 8, 16, 11, 16, 12, 16, 260, 1, 17, 5, 17, 264, 8, 17, 10, 17, 12, 17, 267, 9, 17, 1, 17, 1, 17, 5, 17, 271, 8, 17, 10, 17, 12, 17, 274, 9, 17, 1, 18, 1, 18, 1, 19, 1, 19, 3, 19, 280, 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 4, 20, 286, 8, 20, 11, 20, 12, 20, 287, 1, 21, 5, 21, 291, 8, 21, 10, 21, 12, 21, 294, 9, 21, 1, 21, 1, 21, 5, 21, 298, 8, 21, 10, 21, 12, 21, 301, 9, 21, 1, 21, 3, 21, 304, 8, 21, 1, 21, 5, 21, 307, 8, 21, 10, 21, 12, 21, 310, 9, 21, 1, 21, 1, 21, 3, 21, 314, 8, 21, 1, 21, 5, 21, 317, 8, 21, 10, 21, 12, 21, 320, 9, 21, 1, 21, 3, 21, 323, 8, 21, 1, 21, 5, 21, 326, 8, 21, 10, 21, 12, 21, 329, 9, 21, 1, 21, 3, 21, 332, 8, 21, 1, 21, 5, 21, 335, 8, 21, 10, 21, 12, 21, 338, 9, 21, 1, 21, 3, 21, 341, 8, 21, 1, 21, 5, 21, 344, 8, 21, 10, 21, 12, 21, 347, 9, 21, 1, 21, 1, 21, 3, 21, 351, 8, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 25, 3, 25, 362, 8, 25, 1, 25, 5, 25, 365, 8, 25, 10, 25, 12, 25, 368, 9, 25, 1, 25, 1, 25, 1, 26, 1, 26, 5, 26, 374, 8, 26, 10, 26, 12, 26, 377, 9, 26, 1, 26, 1, 26, 1, 27, 1, 27, 5, 27, 383, 8, 27, 10, 27, 12, 27, 386, 9, 27, 1, 27, 1, 27, 5, 27, 390, 8, 27, 10, 27, 12, 27, 393, 9, 27, 1, 27, 5, 27, 396, 8, 27, 10, 27, 12, 27, 399, 9, 27, 1, 28, 1, 28, 5, 28, 403, 8, 28, 10, 28, 12, 28, 406, 9, 28, 1, 28, 3, 28, 409, 8, 28, 1, 29, 1, 29, 5, 29, 413, 8, 29, 10, 29, 12, 29, 416, 9, 29, 1, 29, 3, 29, 419, 8, 29, 1, 30, 1, 30, 1, 31, 1, 31, 3, 31, 425, 8, 31, 1, 32, 5, 32, 428, 8, 32, 10, 32, 12, 32, 431, 9, 32, 1, 32, 1, 32, 3, 32, 435, 8, 32, 1, 32, 3, 32, 438, 8, 32, 1, 32, 3, 32, 441, 8, 32, 1, 33, 4, 33, 444, 8, 33, 11, 33, 12, 33, 445, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 4, 34, 453, 8, 34, 11, 34, 12, 34, 454, 1, 35, 1, 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 4, 37, 465, 8, 37, 11, 37, 12, 37, 466, 1, 38, 5, 38, 470, 8, 38, 10, 38, 12, 38, 473, 9, 38, 1, 38, 1, 38, 5, 38, 477, 8, 38, 10, 38, 12, 38, 480, 9, 38, 1, 39, 1, 39, 1, 40, 5, 40, 485, 8, 40, 10, 40, 12, 40, 488, 9, 40, 1, 40, 1, 40, 5, 40, 492, 8, 40, 10, 40, 12, 40, 495, 9, 40, 1, 41, 1, 41, 1, 42, 5, 42, 500, 8, 42, 10, 42, 12, 42, 503, 9, 42, 1, 42, 1, 42, 5, 42, 507, 8, 42, 10, 42, 12, 42, 510, 9, 42, 1, 43, 1, 43, 1, 44, 3, 44, 515, 8, 44, 1, 44, 3, 44, 518, 8, 44, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 524, 8, 44, 1, 45, 5, 45, 527, 8, 45, 10, 45, 12, 45, 530, 9, 45, 1, 45, 1, 45, 1, 46, 5, 46, 535, 8, 46, 10, 46, 12, 46, 538, 9, 46, 1, 46, 1, 46, 1, 47, 5, 47, 543, 8, 47, 10, 47, 12, 47, 546, 9, 47, 1, 47, 1, 47, 1, 47, 1, 48, 5, 48, 552, 8, 48, 10, 48, 12, 48, 555, 9, 48, 1, 49, 5, 49, 558, 8, 49, 10, 49, 12, 49, 561, 9, 49, 1, 49, 1, 49, 1, 49, 1, 49, 5, 49, 567, 8, 49, 10, 49, 12, 49, 570, 9, 49, 1, 50, 1, 50, 5, 50, 574, 8, 50, 10, 50, 12, 50, 577, 9, 50, 1, 51, 4, 51, 580, 8, 51, 11, 51, 12, 51, 581, 1, 52, 3, 52, 585, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 590, 8, 52, 3, 52, 592, 8, 52, 1, 53, 5, 53, 595, 8, 53, 10, 53, 12, 53, 598, 9, 53, 1, 53, 1, 53, 1, 53, 4, 53, 603, 8, 53, 11, 53, 12, 53, 604, 1, 54, 5, 54, 608, 8, 54, 10, 54, 12, 54, 611, 9, 54, 1, 54, 1, 54, 1, 54, 4, 54, 616, 8, 54, 11, 54, 12, 54, 617, 1, 55, 5, 55, 621, 8, 55, 10, 55, 12, 55, 624, 9, 55, 1, 55, 1, 55, 5, 55, 628, 8, 55, 10, 55, 12, 55, 631, 9, 55, 1, 55, 1, 55, 1, 56, 4, 56, 636, 8, 56, 11, 56, 12, 56, 637, 1, 57, 5, 57, 641, 8, 57, 10, 57, 12, 57, 644, 9, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 5, 59, 651, 8, 59, 10, 59, 12, 59, 654, 9, 59, 1, 59, 1, 59, 1, 59, 1, 123, 0, 60, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 0, 6, 1, 1, 2, 2, 2, 0, 1, 1, 17, 17, 2, 0, 1, 1, 31, 33, 1, 0, 26, 27, 2, 0, 1, 1, 37, 37, 2, 0, 1, 1, 33, 33, 703, 0, 128, 1, 0, 0, 0, 2, 141, 1, 0, 0, 0, 4, 146, 1, 0, 0, 0, 6, 151, 1, 0, 0, 0, 8, 156, 1, 0, 0, 0, 10, 160, 1, 0, 0, 0, 12, 166, 1, 0, 0, 0, 14, 178, 1, 0, 0, 0, 16, 186, 1, 0, 0, 0, 18, 195, 1, 0, 0, 0, 20, 202, 1, 0, 0, 0, 22, 208, 1, 0, 0, 0, 24, 210, 1, 0, 0, 0, 26, 217, 1, 0, 0, 0, 28, 232, 1, 0, 0, 0, 30, 243, 1, 0, 0, 0, 32, 251, 1, 0, 0, 0, 34, 265, 1, 0, 0, 0, 36, 275, 1, 0, 0, 0, 38, 277, 1, 0, 0, 0, 40, 285, 1, 0, 0, 0, 42, 292, 1, 0, 0, 0, 44, 354, 1, 0, 0, 0, 46, 356, 1, 0, 0, 0, 48, 358, 1, 0, 0, 0, 50, 361, 1, 0, 0, 0, 52, 371, 1, 0, 0, 0, 54, 380, 1, 0, 0, 0, 56, 400, 1, 0, 0, 0, 58, 410, 1, 0, 0, 0, 60, 420, 1, 0, 0, 0, 62, 422, 1, 0, 0, 0, 64, 429, 1, 0, 0, 0, 66, 443, 1, 0, 0, 0, 68, 452, 1, 0, 0, 0, 70, 456, 1, 0, 0, 0, 72, 458, 1, 0, 0, 0, 74, 464, 1, 0, 0, 0, 76, 471, 1, 0, 0, 0, 78, 481, 1, 0, 0, 0, 80, 486, 1, 0, 0, 0, 82, 496, 1, 0, 0, 0, 84, 501, 1, 0, 0, 0, 86, 511, 1, 0, 0, 0, 88, 514, 1, 0, 0, 0, 90, 528, 1, 0, 0, 0, 92, 536, 1, 0, 0, 0, 94, 544, 1, 0, 0, 0, 96, 553, 1, 0, 0, 0, 98, 559, 1, 0, 0, 0, 100, 571, 1, 0, 0, 0, 102, 579, 1, 0, 0, 0, 104, 591, 1, 0, 0, 0, 106, 596, 1, 0, 0, 0, 108, 609, 1, 0, 0, 0, 110, 622, 1, 0, 0, 0, 112, 635, 1, 0, 0, 0, 114, 642, 1, 0, 0, 0, 116, 647, 1, 0, 0, 0, 118, 652, 1, 0, 0, 0, 120, 122, 3, 2, 1, 0, 121, 120, 1, 0, 0, 0, 122, 123, 1, 0, 0, 0, 123, 124, 1, 0, 0, 0, 123, 121, 1, 0, 0, 0, 124, 129, 1, 0, 0, 0, 125, 127, 3, 6, 3, 0, 126, 125, 1, 0, 0, 0, 126, 127, 1, 0, 0, 0, 127, 129, 1, 0, 0, 0, 128, 121, 1, 0, 0, 0, 128, 126, 1, 0, 0, 0, 129, 130, 1, 0, 0, 0, 130, 131, 5, 0, 0, 1, 131, 1, 1, 0, 0, 0, 132, 142, 5, 2, 0, 0, 133, 142, 3, 10, 5, 0, 134, 142, 3, 22, 11, 0, 135, 142, 3, 60, 30, 0, 136, 142, 3, 36, 18, 0, 137, 142, 3, 78, 39, 0, 138, 142, 3, 82, 41, 0, 139, 142, 3, 86, 43, 0, 140, 142, 3, 116, 58, 0, 141, 132, 1, 0, 0, 0, 141, 133, 1, 0, 0, 0, 141, 134, 1, 0, 0, 0, 141, 135, 1, 0, 0, 0, 141, 136, 1, 0, 0, 0, 141, 137, 1, 0, 0, 0, 141, 138, 1, 0, 0, 0, 141, 139, 1, 0, 0, 0, 141, 140, 1, 0, 0, 0, 142, 3, 1, 0, 0, 0, 143, 145, 5, 1, 0, 0, 144, 143, 1, 0, 0, 0, 145, 148, 1, 0, 0, 0, 146, 144, 1, 0, 0, 0, 146, 147, 1, 0, 0, 0, 147, 149, 1, 0, 0, 0, 148, 146, 1, 0, 0, 0, 149, 150, 7, 0, 0, 0, 150, 5, 1, 0, 0, 0, 151, 153, 5, 5, 0, 0, 152, 154, 5, 2, 0, 0, 153, 152, 1, 0, 0, 0, 153, 154, 1, 0, 0, 0, 154, 7, 1, 0, 0, 0, 155, 157, 7, 1, 0, 0, 156, 155, 1, 0, 0, 0, 157, 158, 1, 0, 0, 0, 158, 156, 1, 0, 0, 0, 158, 159, 1, 0, 0, 0, 159, 9, 1, 0, 0, 0, 160, 161, 3, 12, 6, 0, 161, 162, 3, 18, 9, 0, 162, 11, 1, 0, 0, 0, 163, 165, 5, 1, 0, 0, 164, 163, 1, 0, 0, 0, 165, 168, 1, 0, 0, 0, 166, 164, 1, 0, 0, 0, 166, 167, 1, 0, 0, 0, 167, 169, 1, 0, 0, 0, 168, 166, 1, 0, 0, 0, 169, 173, 5, 7, 0, 0, 170, 172, 5, 1, 0, 0, 171, 170, 1, 0, 0, 0, 172, 175, 1, 0, 0, 0, 173, 171, 1, 0, 0, 0, 173, 174, 1, 0, 0, 0, 174, 176, 1, 0, 0, 0, 175, 173, 1, 0, 0, 0, 176, 177, 3, 14, 7, 0, 177, 13, 1, 0, 0, 0, 178, 183, 3, 16, 8, 0, 179, 182, 5, 1, 0, 0, 180, 182, 3, 16, 8, 0, 181, 179, 1, 0, 0, 0, 181, 180, 1, 0, 0, 0, 182, 185, 1, 0, 0, 0, 183, 181, 1, 0, 0, 0, 183, 184, 1, 0, 0, 0, 184, 15, 1, 0, 0, 0, 185, 183, 1, 0, 0, 0, 186, 191, 5, 29, 0, 0, 187, 188, 5, 30, 0, 0, 188, 190, 5, 29, 0, 0, 189, 187, 1, 0, 0, 0, 190, 193, 1, 0, 0, 0, 191, 189, 1, 0, 0, 0, 191, 192, 1, 0, 0, 0, 192, 17, 1, 0, 0, 0, 193, 191, 1, 0, 0, 0, 194, 196, 3, 20, 10, 0, 195, 194, 1, 0, 0, 0, 196, 197, 1, 0, 0, 0, 197, 195, 1, 0, 0, 0, 197, 198, 1, 0, 0, 0, 198, 19, 1, 0, 0, 0, 199, 201, 5, 1, 0, 0, 200, 199, 1, 0, 0, 0, 201, 204, 1, 0, 0, 0, 202, 200, 1, 0, 0, 0, 202, 203, 1, 0, 0, 0, 203, 205, 1, 0, 0, 0, 204, 202, 1, 0, 0, 0, 205, 206, 5, 7, 0, 0, 206, 207, 3, 22, 11, 0, 207, 21, 1, 0, 0, 0, 208, 209, 3, 24, 12, 0, 209, 23, 1, 0, 0, 0, 210, 212, 3, 26, 13, 0, 211, 213, 3, 30, 15, 0, 212, 211, 1, 0, 0, 0, 212, 213, 1, 0, 0, 0, 213, 25, 1, 0, 0, 0, 214, 216, 5, 1, 0, 0, 215, 214, 1, 0, 0, 0, 216, 219, 1, 0, 0, 0, 217, 215, 1, 0, 0, 0, 217, 218, 1, 0, 0, 0, 218, 220, 1, 0, 0, 0, 219, 217, 1, 0, 0, 0, 220, 222, 5, 7, 0, 0, 221, 223, 5, 7, 0, 0, 222, 221, 1, 0, 0, 0, 222, 223, 1, 0, 0, 0, 223, 227, 1, 0, 0, 0, 224, 226, 5, 1, 0, 0, 225, 224, 1, 0, 0, 0, 226, 229, 1, 0, 0, 0, 227, 225, 1, 0, 0, 0, 227, 228, 1, 0, 0, 0, 228, 230, 1, 0, 0, 0, 229, 227, 1, 0, 0, 0, 230, 231, 3, 28, 14, 0, 231, 27, 1, 0, 0, 0, 232, 237, 3, 16, 8, 0, 233, 236, 5, 1, 0, 0, 234, 236, 3, 16, 8, 0, 235, 233, 1, 0, 0, 0, 235, 234, 1, 0, 0, 0, 236, 239, 1, 0, 0, 0, 237, 235, 1, 0, 0, 0, 237, 238, 1, 0, 0, 0, 238, 29, 1, 0, 0, 0, 239, 237, 1, 0, 0, 0, 240, 242, 5, 1, 0, 0, 241, 240, 1, 0, 0, 0, 242, 245, 1, 0, 0, 0, 243, 241, 1, 0, 0, 0, 243, 244, 1, 0, 0, 0, 244, 246, 1, 0, 0, 0, 245, 243, 1, 0, 0, 0, 246, 247, 3, 32, 16, 0, 247, 31, 1, 0, 0, 0, 248, 250, 5, 1, 0, 0, 249, 248, 1, 0, 0, 0, 250, 253, 1, 0, 0, 0, 251, 249, 1, 0, 0, 0, 251, 252, 1, 0, 0, 0, 252, 258, 1, 0, 0, 0, 253, 251, 1, 0, 0, 0, 254, 255, 3, 34, 17, 0, 255, 256, 3, 4, 2, 0, 256, 259, 1, 0, 0, 0, 257, 259, 3, 8, 4, 0, 258, 254, 1, 0, 0, 0, 258, 257, 1, 0, 0, 0, 259, 260, 1, 0, 0, 0, 260, 258, 1, 0, 0, 0, 260, 261, 1, 0, 0, 0, 261, 33, 1, 0, 0, 0, 262, 264, 5, 1, 0, 0, 263, 262, 1, 0, 0, 0, 264, 267, 1, 0, 0, 0, 265, 263, 1, 0, 0, 0, 265, 266, 1, 0, 0, 0, 266, 268, 1, 0, 0, 0, 267, 265, 1, 0, 0, 0, 268, 272, 5, 8, 0, 0, 269, 271, 7, 2, 0, 0, 270, 269, 1, 0, 0, 0, 271, 274, 1, 0, 0, 0, 272, 270, 1, 0, 0, 0, 272, 273, 1, 0, 0, 0, 273, 35, 1, 0, 0, 0, 274, 272, 1, 0, 0, 0, 275, 276, 3, 38, 19, 0, 276, 37, 1, 0, 0, 0, 277, 279, 3, 42, 21, 0, 278, 280, 3, 40, 20, 0, 279, 278, 1, 0, 0, 0, 279, 280, 1, 0, 0, 0, 280, 39, 1, 0, 0, 0, 281, 282, 3, 76, 38, 0, 282, 283, 3, 4, 2, 0, 283, 286, 1, 0, 0, 0, 284, 286, 3, 8, 4, 0, 285, 281, 1, 0, 0, 0, 285, 284, 1, 0, 0, 0, 286, 287, 1, 0, 0, 0, 287, 285, 1, 0, 0, 0, 287, 288, 1, 0, 0, 0, 288, 41, 1, 0, 0, 0, 289, 291, 5, 1, 0, 0, 290, 289, 1, 0, 0, 0, 291, 294, 1, 0, 0, 0, 292, 290, 1, 0, 0, 0, 292, 293, 1, 0, 0, 0, 293, 295, 1, 0, 0, 0, 294, 292, 1, 0, 0, 0, 295, 299, 5, 10, 0, 0, 296, 298, 5, 1, 0, 0, 297, 296, 1, 0, 0, 0, 298, 301, 1, 0, 0, 0, 299, 297, 1, 0, 0, 0, 299, 300, 1, 0, 0, 0, 300, 303, 1, 0, 0, 0, 301, 299, 1, 0, 0, 0, 302, 304, 3, 48, 24, 0, 303, 302, 1, 0, 0, 0, 303, 304, 1, 0, 0, 0, 304, 308, 1, 0, 0, 0, 305, 307, 5, 1, 0, 0, 306, 305, 1, 0, 0, 0, 307, 310, 1, 0, 0, 0, 308, 306, 1, 0, 0, 0, 308, 309, 1, 0, 0, 0, 309, 313, 1, 0, 0, 0, 310, 308, 1, 0, 0, 0, 311, 314, 3, 56, 28, 0, 312, 314, 3, 58, 29, 0, 313, 311, 1, 0, 0, 0, 313, 312, 1, 0, 0, 0, 313, 314, 1, 0, 0, 0, 314, 318, 1, 0, 0, 0, 315, 317, 5, 1, 0, 0, 316, 315, 1, 0, 0, 0, 317, 320, 1, 0, 0, 0, 318, 316, 1, 0, 0, 0, 318, 319, 1, 0, 0, 0, 319, 322, 1, 0, 0, 0, 320, 318, 1, 0, 0, 0, 321, 323, 3, 50, 25, 0, 322, 321, 1, 0, 0, 0, 322, 323, 1, 0, 0, 0, 323, 327, 1, 0, 0, 0, 324, 326, 5, 1, 0, 0, 325, 324, 1, 0, 0, 0, 326, 329, 1, 0, 0, 0, 327, 325, 1, 0, 0, 0, 327, 328, 1, 0, 0, 0, 328, 331, 1, 0, 0, 0, 329, 327, 1, 0, 0, 0, 330, 332, 3, 52, 26, 0, 331, 330, 1, 0, 0, 0, 331, 332, 1, 0, 0, 0, 332, 336, 1, 0, 0, 0, 333, 335, 5, 1, 0, 0, 334, 333, 1, 0, 0, 0, 335, 338, 1, 0, 0, 0, 336, 334, 1, 0, 0, 0, 336, 337, 1, 0, 0, 0, 337, 340, 1, 0, 0, 0, 338, 336, 1, 0, 0, 0, 339, 341, 5, 18, 0, 0, 340, 339, 1, 0, 0, 0, 340, 341, 1, 0, 0, 0, 341, 345, 1, 0, 0, 0, 342, 344, 5, 1, 0, 0, 343, 342, 1, 0, 0, 0, 344, 347, 1, 0, 0, 0, 345, 343, 1, 0, 0, 0, 345, 346, 1, 0, 0, 0, 346, 350, 1, 0, 0, 0, 347, 345, 1, 0, 0, 0, 348, 351, 3, 44, 22, 0, 349, 351, 3, 46, 23, 0, 350, 348, 1, 0, 0, 0, 350, 349, 1, 0, 0, 0, 350, 351, 1, 0, 0, 0, 351, 352, 1, 0, 0, 0, 352, 353, 3, 4, 2, 0, 353, 43, 1, 0, 0, 0, 354, 355, 5, 24, 0, 0, 355, 45, 1, 0, 0, 0, 356, 357, 5, 25, 0, 0, 357, 47, 1, 0, 0, 0, 358, 359, 5, 22, 0, 0, 359, 49, 1, 0, 0, 0, 360, 362, 5, 20, 0, 0, 361, 360, 1, 0, 0, 0, 361, 362, 1, 0, 0, 0, 362, 366, 1, 0, 0, 0, 363, 365, 5, 1, 0, 0, 364, 363, 1, 0, 0, 0, 365, 368, 1, 0, 0, 0, 366, 364, 1, 0, 0, 0, 366, 367, 1, 0, 0, 0, 367, 369, 1, 0, 0, 0, 368, 366, 1, 0, 0, 0, 369, 370, 3, 54, 27, 0, 370, 51, 1, 0, 0, 0, 371, 375, 5, 21, 0, 0, 372, 374, 5, 1, 0, 0, 373, 372, 1, 0, 0, 0, 374, 377, 1, 0, 0, 0, 375, 373, 1, 0, 0, 0, 375, 376, 1, 0, 0, 0, 376, 378, 1, 0, 0, 0, 377, 375, 1, 0, 0, 0, 378, 379, 3, 54, 27, 0, 379, 53, 1, 0, 0, 0, 380, 397, 7, 3, 0, 0, 381, 383, 5, 1, 0, 0, 382, 381, 1, 0, 0, 0, 383, 386, 1, 0, 0, 0, 384, 382, 1, 0, 0, 0, 384, 385, 1, 0, 0, 0, 385, 387, 1, 0, 0, 0, 386, 384, 1, 0, 0, 0, 387, 391, 5, 19, 0, 0, 388, 390, 5, 1, 0, 0, 389, 388, 1, 0, 0, 0, 390, 393, 1, 0, 0, 0, 391, 389, 1, 0, 0, 0, 391, 392, 1, 0, 0, 0, 392, 394, 1, 0, 0, 0, 393, 391, 1, 0, 0, 0, 394, 396, 7, 3, 0, 0, 395, 384, 1, 0, 0, 0, 396, 399, 1, 0, 0, 0, 397, 395, 1, 0, 0, 0, 397, 398, 1, 0, 0, 0, 398, 55, 1, 0, 0, 0, 399, 397, 1, 0, 0, 0, 400, 408, 5, 26, 0, 0, 401, 403, 5, 1, 0, 0, 402, 401, 1, 0, 0, 0, 403, 406, 1, 0, 0, 0, 404, 402, 1, 0, 0, 0, 404, 405, 1, 0, 0, 0, 405, 407, 1, 0, 0, 0, 406, 404, 1, 0, 0, 0, 407, 409, 5, 23, 0, 0, 408, 404, 1, 0, 0, 0, 408, 409, 1, 0, 0, 0, 409, 57, 1, 0, 0, 0, 410, 418, 5, 27, 0, 0, 411, 413, 5, 1, 0, 0, 412, 411, 1, 0, 0, 0, 413, 416, 1, 0, 0, 0, 414, 412, 1, 0, 0, 0, 414, 415, 1, 0, 0, 0, 415, 417, 1, 0, 0, 0, 416, 414, 1, 0, 0, 0, 417, 419, 5, 23, 0, 0, 418, 414, 1, 0, 0, 0, 418, 419, 1, 0, 0, 0, 419, 59, 1, 0, 0, 0, 420, 421, 3, 62, 31, 0, 421, 61, 1, 0, 0, 0, 422, 424, 3, 64, 32, 0, 423, 425, 3, 74, 37, 0, 424, 423, 1, 0, 0, 0, 424, 425, 1, 0, 0, 0, 425, 63, 1, 0, 0, 0, 426, 428, 5, 1, 0, 0, 427, 426, 1, 0, 0, 0, 428, 431, 1, 0, 0, 0, 429, 427, 1, 0, 0, 0, 429, 430, 1, 0, 0, 0, 430, 432, 1, 0, 0, 0, 431, 429, 1, 0, 0, 0, 432, 434, 5, 9, 0, 0, 433, 435, 3, 66, 33, 0, 434, 433, 1, 0, 0, 0, 434, 435, 1, 0, 0, 0, 435, 437, 1, 0, 0, 0, 436, 438, 5, 38, 0, 0, 437, 436, 1, 0, 0, 0, 437, 438, 1, 0, 0, 0, 438, 440, 1, 0, 0, 0, 439, 441, 3, 68, 34, 0, 440, 439, 1, 0, 0, 0, 440, 441, 1, 0, 0, 0, 441, 65, 1, 0, 0, 0, 442, 444, 7, 4, 0, 0, 443, 442, 1, 0, 0, 0, 444, 445, 1, 0, 0, 0, 445, 443, 1, 0, 0, 0, 445, 446, 1, 0, 0, 0, 446, 67, 1, 0, 0, 0, 447, 453, 3, 70, 35, 0, 448, 453, 3, 72, 36, 0, 449, 453, 5, 37, 0, 0, 450, 453, 5, 38, 0, 0, 451, 453, 5, 1, 0, 0, 452, 447, 1, 0, 0, 0, 452, 448, 1, 0, 0, 0, 452, 449, 1, 0, 0, 0, 452, 450, 1, 0, 0, 0, 452, 451, 1, 0, 0, 0, 453, 454, 1, 0, 0, 0, 454, 452, 1, 0, 0, 0, 454, 455, 1, 0, 0, 0, 455, 69, 1, 0, 0, 0, 456, 457, 5, 35, 0, 0, 457, 71, 1, 0, 0, 0, 458, 459, 5, 36, 0, 0, 459, 73, 1, 0, 0, 0, 460, 461, 3, 76, 38, 0, 461, 462, 3, 4, 2, 0, 462, 465, 1, 0, 0, 0, 463, 465, 3, 8, 4, 0, 464, 460, 1, 0, 0, 0, 464, 463, 1, 0, 0, 0, 465, 466, 1, 0, 0, 0, 466, 464, 1, 0, 0, 0, 466, 467, 1, 0, 0, 0, 467, 75, 1, 0, 0, 0, 468, 470, 5, 1, 0, 0, 469, 468, 1, 0, 0, 0, 470, 473, 1, 0, 0, 0, 471, 469, 1, 0, 0, 0, 471, 472, 1, 0, 0, 0, 472, 474, 1, 0, 0, 0, 473, 471, 1, 0, 0, 0, 474, 478, 5, 8, 0, 0, 475, 477, 7, 2, 0, 0, 476, 475, 1, 0, 0, 0, 477, 480, 1, 0, 0, 0, 478, 476, 1, 0, 0, 0, 478, 479, 1, 0, 0, 0, 479, 77, 1, 0, 0, 0, 480, 478, 1, 0, 0, 0, 481, 482, 3, 80, 40, 0, 482, 79, 1, 0, 0, 0, 483, 485, 5, 1, 0, 0, 484, 483, 1, 0, 0, 0, 485, 488, 1, 0, 0, 0, 486, 484, 1, 0, 0, 0, 486, 487, 1, 0, 0, 0, 487, 489, 1, 0, 0, 0, 488, 486, 1, 0, 0, 0, 489, 493, 5, 11, 0, 0, 490, 492, 5, 1, 0, 0, 491, 490, 1, 0, 0, 0, 492, 495, 1, 0, 0, 0, 493, 491, 1, 0, 0, 0, 493, 494, 1, 0, 0, 0, 494, 81, 1, 0, 0, 0, 495, 493, 1, 0, 0, 0, 496, 497, 3, 84, 42, 0, 497, 83, 1, 0, 0, 0, 498, 500, 5, 1, 0, 0, 499, 498, 1, 0, 0, 0, 500, 503, 1, 0, 0, 0, 501, 499, 1, 0, 0, 0, 501, 502, 1, 0, 0, 0, 502, 504, 1, 0, 0, 0, 503, 501, 1, 0, 0, 0, 504, 508, 5, 12, 0, 0, 505, 507, 5, 1, 0, 0, 506, 505, 1, 0, 0, 0, 507, 510, 1, 0, 0, 0, 508, 506, 1, 0, 0, 0, 508, 509, 1, 0, 0, 0, 509, 85, 1, 0, 0, 0, 510, 508, 1, 0, 0, 0, 511, 512, 3, 88, 44, 0, 512, 87, 1, 0, 0, 0, 513, 515, 3, 90, 45, 0, 514, 513, 1, 0, 0, 0, 514, 515, 1, 0, 0, 0, 515, 517, 1, 0, 0, 0, 516, 518, 3, 92, 46, 0, 517, 516, 1, 0, 0, 0, 517, 518, 1, 0, 0, 0, 518, 519, 1, 0, 0, 0, 519, 520, 3, 94, 47, 0, 520, 521, 3, 98, 49, 0, 521, 523, 3, 104, 52, 0, 522, 524, 3, 108, 54, 0, 523, 522, 1, 0, 0, 0, 523, 524, 1, 0, 0, 0, 524, 89, 1, 0, 0, 0, 525, 527, 5, 1, 0, 0, 526, 525, 1, 0, 0, 0, 527, 530, 1, 0, 0, 0, 528, 526, 1, 0, 0, 0, 528, 529, 1, 0, 0, 0, 529, 531, 1, 0, 0, 0, 530, 528, 1, 0, 0, 0, 531, 532, 5, 3, 0, 0, 532, 91, 1, 0, 0, 0, 533, 535, 5, 1, 0, 0, 534, 533, 1, 0, 0, 0, 535, 538, 1, 0, 0, 0, 536, 534, 1, 0, 0, 0, 536, 537, 1, 0, 0, 0, 537, 539, 1, 0, 0, 0, 538, 536, 1, 0, 0, 0, 539, 540, 5, 14, 0, 0, 540, 93, 1, 0, 0, 0, 541, 543, 5, 1, 0, 0, 542, 541, 1, 0, 0, 0, 543, 546, 1, 0, 0, 0, 544, 542, 1, 0, 0, 0, 544, 545, 1, 0, 0, 0, 545, 547, 1, 0, 0, 0, 546, 544, 1, 0, 0, 0, 547, 548, 5, 6, 0, 0, 548, 549, 3, 96, 48, 0, 549, 95, 1, 0, 0, 0, 550, 552, 5, 40, 0, 0, 551, 550, 1, 0, 0, 0, 552, 555, 1, 0, 0, 0, 553, 551, 1, 0, 0, 0, 553, 554, 1, 0, 0, 0, 554, 97, 1, 0, 0, 0, 555, 553, 1, 0, 0, 0, 556, 558, 5, 1, 0, 0, 557, 556, 1, 0, 0, 0, 558, 561, 1, 0, 0, 0, 559, 557, 1, 0, 0, 0, 559, 560, 1, 0, 0, 0, 560, 568, 1, 0, 0, 0, 561, 559, 1, 0, 0, 0, 562, 563, 3, 100, 50, 0, 563, 564, 3, 4, 2, 0, 564, 567, 1, 0, 0, 0, 565, 567, 3, 102, 51, 0, 566, 562, 1, 0, 0, 0, 566, 565, 1, 0, 0, 0, 567, 570, 1, 0, 0, 0, 568, 566, 1, 0, 0, 0, 568, 569, 1, 0, 0, 0, 569, 99, 1, 0, 0, 0, 570, 568, 1, 0, 0, 0, 571, 575, 5, 8, 0, 0, 572, 574, 7, 5, 0, 0, 573, 572, 1, 0, 0, 0, 574, 577, 1, 0, 0, 0, 575, 573, 1, 0, 0, 0, 575, 576, 1, 0, 0, 0, 576, 101, 1, 0, 0, 0, 577, 575, 1, 0, 0, 0, 578, 580, 7, 1, 0, 0, 579, 578, 1, 0, 0, 0, 580, 581, 1, 0, 0, 0, 581, 579, 1, 0, 0, 0, 581, 582, 1, 0, 0, 0, 582, 103, 1, 0, 0, 0, 583, 585, 3, 106, 53, 0, 584, 583, 1, 0, 0, 0, 584, 585, 1, 0, 0, 0, 585, 586, 1, 0, 0, 0, 586, 592, 3, 114, 57, 0, 587, 589, 3, 114, 57, 0, 588, 590, 3, 106, 53, 0, 589, 588, 1, 0, 0, 0, 589, 590, 1, 0, 0, 0, 590, 592, 1, 0, 0, 0, 591, 584, 1, 0, 0, 0, 591, 587, 1, 0, 0, 0, 592, 105, 1, 0, 0, 0, 593, 595, 5, 1, 0, 0, 594, 593, 1, 0, 0, 0, 595, 598, 1, 0, 0, 0, 596, 594, 1, 0, 0, 0, 596, 597, 1, 0, 0, 0, 597, 599, 1, 0, 0, 0, 598, 596, 1, 0, 0, 0, 599, 602, 5, 13, 0, 0, 600, 603, 3, 110, 55, 0, 601, 603, 3, 112, 56, 0, 602, 600, 1, 0, 0, 0, 602, 601, 1, 0, 0, 0, 603, 604, 1, 0, 0, 0, 604, 602, 1, 0, 0, 0, 604, 605, 1, 0, 0, 0, 605, 107, 1, 0, 0, 0, 606, 608, 5, 1, 0, 0, 607, 606, 1, 0, 0, 0, 608, 611, 1, 0, 0, 0, 609, 607, 1, 0, 0, 0, 609, 610, 1, 0, 0, 0, 610, 612, 1, 0, 0, 0, 611, 609, 1, 0, 0, 0, 612, 615, 5, 16, 0, 0, 613, 616, 3, 110, 55, 0, 614, 616, 3, 112, 56, 0, 615, 613, 1, 0, 0, 0, 615, 614, 1, 0, 0, 0, 616, 617, 1, 0, 0, 0, 617, 615, 1, 0, 0, 0, 617, 618, 1, 0, 0, 0, 618, 109, 1, 0, 0, 0, 619, 621, 5, 1, 0, 0, 620, 619, 1, 0, 0, 0, 621, 624, 1, 0, 0, 0, 622, 620, 1, 0, 0, 0, 622, 623, 1, 0, 0, 0, 623, 625, 1, 0, 0, 0, 624, 622, 1, 0, 0, 0, 625, 629, 5, 8, 0, 0, 626, 628, 7, 5, 0, 0, 627, 626, 1, 0, 0, 0, 628, 631, 1, 0, 0, 0, 629, 627, 1, 0, 0, 0, 629, 630, 1, 0, 0, 0, 630, 632, 1, 0, 0, 0, 631, 629, 1, 0, 0, 0, 632, 633, 3, 4, 2, 0, 633, 111, 1, 0, 0, 0, 634, 636, 7, 1, 0, 0, 635, 634, 1, 0, 0, 0, 636, 637, 1, 0, 0, 0, 637, 635, 1, 0, 0, 0, 637, 638, 1, 0, 0, 0, 638, 113, 1, 0, 0, 0, 639, 641, 5, 1, 0, 0, 640, 639, 1, 0, 0, 0, 641, 644, 1, 0, 0, 0, 642, 640, 1, 0, 0, 0, 642, 643, 1, 0, 0, 0, 643, 645, 1, 0, 0, 0, 644, 642, 1, 0, 0, 0, 645, 646, 5, 15, 0, 0, 646, 115, 1, 0, 0, 0, 647, 648, 3, 118, 59, 0, 648, 117, 1, 0, 0, 0, 649, 651, 5, 1, 0, 0, 650, 649, 1, 0, 0, 0, 651, 654, 1, 0, 0, 0, 652, 650, 1, 0, 0, 0, 652, 653, 1, 0, 0, 0, 653, 655, 1, 0, 0, 0, 654, 652, 1, 0, 0, 0, 655, 656, 5, 4, 0, 0, 656, 119, 1, 0, 0, 0, 94, 123, 126, 128, 141, 146, 153, 158, 166, 173, 181, 183, 191, 197, 202, 212, 217, 222, 227, 235, 237, 243, 251, 258, 260, 265, 272, 279, 285, 287, 292, 299, 303, 308, 313, 318, 322, 327, 331, 336, 340, 345, 350, 361, 366, 375, 384, 391, 397, 404, 408, 414, 418, 424, 429, 434, 437, 440, 445, 452, 454, 464, 466, 471, 478, 486, 493, 501, 508, 514, 517, 523, 528, 536, 544, 553, 559, 566, 568, 575, 581, 584, 589, 591, 596, 602, 604, 609, 615, 617, 622, 629, 637, 642, 652] \ No newline at end of file diff --git a/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParserBaseListener.cs b/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParserBaseListener.cs index 3ef9f599bd..cfda46e9da 100644 --- a/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParserBaseListener.cs +++ b/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParserBaseListener.cs @@ -72,6 +72,18 @@ public virtual void EnterNewline([NotNull] LUFileParser.NewlineContext context) /// The parse tree. public virtual void ExitNewline([NotNull] LUFileParser.NewlineContext context) { } /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterCommentDefinition([NotNull] LUFileParser.CommentDefinitionContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitCommentDefinition([NotNull] LUFileParser.CommentDefinitionContext context) { } + /// /// Enter a parse tree produced by . /// The default implementation does nothing. /// diff --git a/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParserBaseVisitor.cs b/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParserBaseVisitor.cs index 0a0afd5f70..4ed46140b1 100644 --- a/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParserBaseVisitor.cs +++ b/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParserBaseVisitor.cs @@ -65,6 +65,16 @@ public partial class LUFileParserBaseVisitor : AbstractParseTreeVisitor< /// The visitor result. public virtual Result VisitNewline([NotNull] LUFileParser.NewlineContext context) { return VisitChildren(context); } /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitCommentDefinition([NotNull] LUFileParser.CommentDefinitionContext context) { return VisitChildren(context); } + /// /// Visit a parse tree produced by . /// /// The default implementation returns the result of calling diff --git a/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParserListener.cs b/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParserListener.cs index 91a6339330..eb1877bd78 100644 --- a/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParserListener.cs +++ b/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParserListener.cs @@ -61,6 +61,16 @@ public interface ILUFileParserListener : IParseTreeListener { /// The parse tree. void ExitNewline([NotNull] LUFileParser.NewlineContext context); /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterCommentDefinition([NotNull] LUFileParser.CommentDefinitionContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitCommentDefinition([NotNull] LUFileParser.CommentDefinitionContext context); + /// /// Enter a parse tree produced by . /// /// The parse tree. diff --git a/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParserVisitor.cs b/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParserVisitor.cs index 04fb2c9fc4..c7eb84327c 100644 --- a/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParserVisitor.cs +++ b/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParserVisitor.cs @@ -50,6 +50,12 @@ public interface ILUFileParserVisitor : IParseTreeVisitor { /// The visitor result. Result VisitNewline([NotNull] LUFileParser.NewlineContext context); /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitCommentDefinition([NotNull] LUFileParser.CommentDefinitionContext context); + /// /// Visit a parse tree produced by . /// /// The parse tree. diff --git a/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/LUFileParser.g4 b/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/LUFileParser.g4 index c23e44e9db..e654c29377 100644 --- a/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/LUFileParser.g4 +++ b/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/LUFileParser.g4 @@ -3,7 +3,7 @@ parser grammar LUFileParser; options { tokenVocab=LUFileLexer; } file - : paragraph+? EOF + : (paragraph+? | commentDefinition?) EOF ; paragraph @@ -25,6 +25,10 @@ newline : WS* (NEWLINE | EOF) ; +commentDefinition + : COMMENT NEWLINE? + ; + errorString : (WS|INVALID_TOKEN_DEFAULT_MODE)+ ; diff --git a/release.csproj b/release.csproj new file mode 100644 index 0000000000..4040b2f203 --- /dev/null +++ b/release.csproj @@ -0,0 +1,10 @@ + + + + + true + + + + + \ No newline at end of file diff --git a/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/AllComments.json b/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/AllComments.json new file mode 100644 index 0000000000..e83475d3bb --- /dev/null +++ b/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/AllComments.json @@ -0,0 +1,5 @@ +{ + "sections": [], + "content": "> This is a comment\n> This is another comment", + "errors": [] +} \ No newline at end of file diff --git a/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/AllComments.txt b/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/AllComments.txt new file mode 100644 index 0000000000..c6593bdb00 --- /dev/null +++ b/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/AllComments.txt @@ -0,0 +1,2 @@ +> This is a comment +> This is another comment \ No newline at end of file diff --git a/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/testLU278.json b/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/testLU278.json index 8e6602a698..ed876a60f6 100644 --- a/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/testLU278.json +++ b/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/testLU278.json @@ -1 +1,463 @@ -{"Sections":[{"Errors":[],"SectionType":"simpleIntentSection","Id":"simpleIntentSection_getUserName","Body":"- call me {name:userName}\r\n- I'm {name:userName}\r\n- my name is {name:userName}\r\n","UtteranceAndEntitiesMap":[{"utterance":"call me {name:userName}","entities":[{"type":"patternAnyEntities","entity":"name","role":"userName"}],"errorMsgs":[],"contextText":"- call me {name:userName}","range":{"Start":{"Line":3,"Character":0},"End":{"Line":3,"Character":25}}},{"utterance":"I'm {name:userName}","entities":[{"type":"patternAnyEntities","entity":"name","role":"userName"}],"errorMsgs":[],"contextText":"- I'm {name:userName}","range":{"Start":{"Line":4,"Character":0},"End":{"Line":4,"Character":21}}},{"utterance":"my name is {name:userName}","entities":[{"type":"patternAnyEntities","entity":"name","role":"userName"}],"errorMsgs":[],"contextText":"- my name is {name:userName}","range":{"Start":{"Line":5,"Character":0},"End":{"Line":5,"Character":28}}}],"Entities":[],"Name":"getUserName","IntentNameLine":"# getUserName","Range":{"Start":{"Line":2,"Character":0},"End":{"Line":6,"Character":0}}},{"Errors":[],"SectionType":"simpleIntentSection","Id":"simpleIntentSection_getUserFirstName","Body":"> this is another role for the same 'name' entity\r\n- [[my] first name is] {name:userFirstName}\r\n","UtteranceAndEntitiesMap":[{"utterance":"[[my] first name is] {name:userFirstName}","entities":[{"type":"patternAnyEntities","entity":"name","role":"userFirstName"}],"errorMsgs":[],"contextText":"- [[my] first name is] {name:userFirstName}","range":{"Start":{"Line":9,"Character":0},"End":{"Line":9,"Character":43}}}],"Entities":[],"Name":"getUserFirstName","IntentNameLine":"# getUserFirstName","Range":{"Start":{"Line":7,"Character":0},"End":{"Line":10,"Character":0}}},{"Errors":[],"SectionType":"simpleIntentSection","Id":"simpleIntentSection_BookFlight","Body":"> roles can be specified for list entity types as well - in this case fromCity and toCity are added as roles to the 'city' list entity defined further below\r\n- book flight from {city:fromCity} to {city:toCity}\r\n- [can you] get me a flight from {city:fromCity} to {city:toCity}\r\n- get me a flight to {city:toCity}\r\n- I need to fly from {city:fromCity}\r\n\r\n$city:Seattle=\r\n- Seattle\r\n- Tacoma\r\n- SeaTac\r\n- SEA\r\n\r\n$city:Portland=\r\n- Portland\r\n- PDX\r\n","UtteranceAndEntitiesMap":[{"utterance":"book flight from {city:fromCity} to {city:toCity}","entities":[{"type":"patternAnyEntities","entity":"city","role":"fromCity"},{"type":"patternAnyEntities","entity":"city","role":"toCity"}],"errorMsgs":[],"contextText":"- book flight from {city:fromCity} to {city:toCity}","range":{"Start":{"Line":13,"Character":0},"End":{"Line":13,"Character":51}}},{"utterance":"[can you] get me a flight from {city:fromCity} to {city:toCity}","entities":[{"type":"patternAnyEntities","entity":"city","role":"fromCity"},{"type":"patternAnyEntities","entity":"city","role":"toCity"}],"errorMsgs":[],"contextText":"- [can you] get me a flight from {city:fromCity} to {city:toCity}","range":{"Start":{"Line":14,"Character":0},"End":{"Line":14,"Character":65}}},{"utterance":"get me a flight to {city:toCity}","entities":[{"type":"patternAnyEntities","entity":"city","role":"toCity"}],"errorMsgs":[],"contextText":"- get me a flight to {city:toCity}","range":{"Start":{"Line":15,"Character":0},"End":{"Line":15,"Character":34}}},{"utterance":"I need to fly from {city:fromCity}","entities":[{"type":"patternAnyEntities","entity":"city","role":"fromCity"}],"errorMsgs":[],"contextText":"- I need to fly from {city:fromCity}","range":{"Start":{"Line":16,"Character":0},"End":{"Line":16,"Character":36}}}],"Entities":[{"Errors":[],"SectionType":"entitySection","Id":"entitySection_city","Body":"","Name":"city","Type":"Seattle=","SynonymsOrPhraseList":["Seattle","Tacoma","SeaTac","SEA"],"Range":{"Start":{"Line":18,"Character":0},"End":{"Line":22,"Character":6}}},{"Errors":[],"SectionType":"entitySection","Id":"entitySection_city","Body":"","Name":"city","Type":"Portland=","SynonymsOrPhraseList":["Portland","PDX"],"Range":{"Start":{"Line":24,"Character":0},"End":{"Line":26,"Character":6}}}],"Name":"BookFlight","IntentNameLine":"# BookFlight","Range":{"Start":{"Line":11,"Character":0},"End":{"Line":27,"Character":0}}},{"Errors":[],"SectionType":"simpleIntentSection","Id":"simpleIntentSection_setAlarm","Body":"> prebuilt entitities can have roles as well.\r\n- create alarm for {datetimeV2:startTime}\r\n","UtteranceAndEntitiesMap":[{"utterance":"create alarm for {datetimeV2:startTime}","entities":[{"type":"patternAnyEntities","entity":"datetimeV2","role":"startTime"}],"errorMsgs":[],"contextText":"- create alarm for {datetimeV2:startTime}","range":{"Start":{"Line":30,"Character":0},"End":{"Line":30,"Character":41}}}],"Entities":[],"Name":"setAlarm","IntentNameLine":"# setAlarm","Range":{"Start":{"Line":28,"Character":0},"End":{"Line":31,"Character":0}}},{"Errors":[],"SectionType":"simpleIntentSection","Id":"simpleIntentSection_deleteAlarm","Body":"- remove the {datetimeV2:deleteTime} alarm\r\n\r\n> This is just defining datetimeV2 as a prebuilt entity type. If an explicit type is not specified, by default entities in patterns will be set to pattern.any entity type\r\n$PREBUILT:datetimeV2\r\n","UtteranceAndEntitiesMap":[{"utterance":"remove the {datetimeV2:deleteTime} alarm","entities":[{"type":"patternAnyEntities","entity":"datetimeV2","role":"deleteTime"}],"errorMsgs":[],"contextText":"- remove the {datetimeV2:deleteTime} alarm","range":{"Start":{"Line":33,"Character":0},"End":{"Line":33,"Character":42}}}],"Entities":[{"Errors":[],"SectionType":"entitySection","Id":"entitySection_PREBUILT","Body":"","Name":"PREBUILT","Type":"datetimeV2","SynonymsOrPhraseList":[],"Range":{"Start":{"Line":36,"Character":0},"End":{"Line":36,"Character":20}}}],"Name":"deleteAlarm","IntentNameLine":"# deleteAlarm","Range":{"Start":{"Line":32,"Character":0},"End":{"Line":37,"Character":0}}},{"Errors":[],"SectionType":"simpleIntentSection","Id":"simpleIntentSection_randomTestIntent","Body":"- test {entity:foo}\r\n\r\n$entity: simple\r\n\r\n","UtteranceAndEntitiesMap":[{"utterance":"test {entity:foo}","entities":[{"type":"patternAnyEntities","entity":"entity","role":"foo"}],"errorMsgs":[],"contextText":"- test {entity:foo}","range":{"Start":{"Line":39,"Character":0},"End":{"Line":39,"Character":19}}}],"Entities":[{"Errors":[],"SectionType":"entitySection","Id":"entitySection_entity","Body":"","Name":"entity","Type":"simple","SynonymsOrPhraseList":[],"Range":{"Start":{"Line":41,"Character":0},"End":{"Line":41,"Character":15}}}],"Name":"randomTestIntent","IntentNameLine":"# randomTestIntent","Range":{"Start":{"Line":38,"Character":0},"End":{"Line":43,"Character":0}}}],"Content":"> You can use roles in patterns using the entityName:role notation.\n# getUserName\n- call me {name:userName}\n- I'm {name:userName}\n- my name is {name:userName}\n\n# getUserFirstName\n> this is another role for the same 'name' entity\n- [[my] first name is] {name:userFirstName}\n\n# BookFlight\n> roles can be specified for list entity types as well - in this case fromCity and toCity are added as roles to the 'city' list entity defined further below\n- book flight from {city:fromCity} to {city:toCity}\n- [can you] get me a flight from {city:fromCity} to {city:toCity}\n- get me a flight to {city:toCity}\n- I need to fly from {city:fromCity}\n\n$city:Seattle=\n- Seattle\n- Tacoma\n- SeaTac\n- SEA\n\n$city:Portland=\n- Portland\n- PDX\n\n# setAlarm\n> prebuilt entitities can have roles as well.\n- create alarm for {datetimeV2:startTime}\n\n# deleteAlarm\n- remove the {datetimeV2:deleteTime} alarm\n\n> This is just defining datetimeV2 as a prebuilt entity type. If an explicit type is not specified, by default entities in patterns will be set to pattern.any entity type\n$PREBUILT:datetimeV2\n\n# randomTestIntent\n- test {entity:foo}\n\n$entity: simple\n\n","Errors":[]} \ No newline at end of file +{ + "Sections": [ + { + "Errors": [], + "SectionType": "simpleIntentSection", + "Id": "simpleIntentSection_getUserName", + "Body": "- call me {name:userName}\r\n- I'm {name:userName}\r\n- my name is {name:userName}\r\n", + "UtteranceAndEntitiesMap": [ + { + "utterance": "call me {name:userName}", + "entities": [ + { + "type": "patternAnyEntities", + "entity": "name", + "role": "userName" + } + ], + "errorMsgs": [], + "contextText": "- call me {name:userName}", + "range": { + "Start": { + "Line": 3, + "Character": 0 + }, + "End": { + "Line": 3, + "Character": 25 + } + } + }, + { + "utterance": "I'm {name:userName}", + "entities": [ + { + "type": "patternAnyEntities", + "entity": "name", + "role": "userName" + } + ], + "errorMsgs": [], + "contextText": "- I'm {name:userName}", + "range": { + "Start": { + "Line": 4, + "Character": 0 + }, + "End": { + "Line": 4, + "Character": 21 + } + } + }, + { + "utterance": "my name is {name:userName}", + "entities": [ + { + "type": "patternAnyEntities", + "entity": "name", + "role": "userName" + } + ], + "errorMsgs": [], + "contextText": "- my name is {name:userName}", + "range": { + "Start": { + "Line": 5, + "Character": 0 + }, + "End": { + "Line": 5, + "Character": 28 + } + } + } + ], + "Entities": [], + "Name": "getUserName", + "IntentNameLine": "# getUserName", + "Range": { + "Start": { + "Line": 2, + "Character": 0 + }, + "End": { + "Line": 6, + "Character": 0 + } + } + }, + { + "Errors": [], + "SectionType": "simpleIntentSection", + "Id": "simpleIntentSection_getUserFirstName", + "Body": "> this is another role for the same 'name' entity\r\n- [[my] first name is] {name:userFirstName}\r\n", + "UtteranceAndEntitiesMap": [ + { + "utterance": "[[my] first name is] {name:userFirstName}", + "entities": [ + { + "type": "patternAnyEntities", + "entity": "name", + "role": "userFirstName" + } + ], + "errorMsgs": [], + "contextText": "- [[my] first name is] {name:userFirstName}", + "range": { + "Start": { + "Line": 9, + "Character": 0 + }, + "End": { + "Line": 9, + "Character": 43 + } + } + } + ], + "Entities": [], + "Name": "getUserFirstName", + "IntentNameLine": "# getUserFirstName", + "Range": { + "Start": { + "Line": 7, + "Character": 0 + }, + "End": { + "Line": 10, + "Character": 0 + } + } + }, + { + "Errors": [], + "SectionType": "simpleIntentSection", + "Id": "simpleIntentSection_BookFlight", + "Body": "> roles can be specified for list entity types as well - in this case fromCity and toCity are added as roles to the 'city' list entity defined further below\r\n- book flight from {city:fromCity} to {city:toCity}\r\n- [can you] get me a flight from {city:fromCity} to {city:toCity}\r\n- get me a flight to {city:toCity}\r\n- I need to fly from {city:fromCity}\r\n\r\n$city:Seattle=\r\n- Seattle\r\n- Tacoma\r\n- SeaTac\r\n- SEA\r\n\r\n$city:Portland=\r\n- Portland\r\n- PDX\r\n", + "UtteranceAndEntitiesMap": [ + { + "utterance": "book flight from {city:fromCity} to {city:toCity}", + "entities": [ + { + "type": "patternAnyEntities", + "entity": "city", + "role": "fromCity" + }, + { + "type": "patternAnyEntities", + "entity": "city", + "role": "toCity" + } + ], + "errorMsgs": [], + "contextText": "- book flight from {city:fromCity} to {city:toCity}", + "range": { + "Start": { + "Line": 13, + "Character": 0 + }, + "End": { + "Line": 13, + "Character": 51 + } + } + }, + { + "utterance": "[can you] get me a flight from {city:fromCity} to {city:toCity}", + "entities": [ + { + "type": "patternAnyEntities", + "entity": "city", + "role": "fromCity" + }, + { + "type": "patternAnyEntities", + "entity": "city", + "role": "toCity" + } + ], + "errorMsgs": [], + "contextText": "- [can you] get me a flight from {city:fromCity} to {city:toCity}", + "range": { + "Start": { + "Line": 14, + "Character": 0 + }, + "End": { + "Line": 14, + "Character": 65 + } + } + }, + { + "utterance": "get me a flight to {city:toCity}", + "entities": [ + { + "type": "patternAnyEntities", + "entity": "city", + "role": "toCity" + } + ], + "errorMsgs": [], + "contextText": "- get me a flight to {city:toCity}", + "range": { + "Start": { + "Line": 15, + "Character": 0 + }, + "End": { + "Line": 15, + "Character": 34 + } + } + }, + { + "utterance": "I need to fly from {city:fromCity}", + "entities": [ + { + "type": "patternAnyEntities", + "entity": "city", + "role": "fromCity" + } + ], + "errorMsgs": [], + "contextText": "- I need to fly from {city:fromCity}", + "range": { + "Start": { + "Line": 16, + "Character": 0 + }, + "End": { + "Line": 16, + "Character": 36 + } + } + } + ], + "Entities": [ + { + "Errors": [], + "SectionType": "entitySection", + "Id": "entitySection_city", + "Body": "", + "Name": "city", + "Type": "Seattle=", + "SynonymsOrPhraseList": [ "Seattle", "Tacoma", "SeaTac", "SEA" ], + "Range": { + "Start": { + "Line": 18, + "Character": 0 + }, + "End": { + "Line": 22, + "Character": 6 + } + } + }, + { + "Errors": [], + "SectionType": "entitySection", + "Id": "entitySection_city", + "Body": "", + "Name": "city", + "Type": "Portland=", + "SynonymsOrPhraseList": [ "Portland", "PDX" ], + "Range": { + "Start": { + "Line": 24, + "Character": 0 + }, + "End": { + "Line": 26, + "Character": 6 + } + } + } + ], + "Name": "BookFlight", + "IntentNameLine": "# BookFlight", + "Range": { + "Start": { + "Line": 11, + "Character": 0 + }, + "End": { + "Line": 27, + "Character": 0 + } + } + }, + { + "Errors": [], + "SectionType": "simpleIntentSection", + "Id": "simpleIntentSection_setAlarm", + "Body": "> prebuilt entitities can have roles as well.\r\n- create alarm for {datetimeV2:startTime}\r\n", + "UtteranceAndEntitiesMap": [ + { + "utterance": "create alarm for {datetimeV2:startTime}", + "entities": [ + { + "type": "patternAnyEntities", + "entity": "datetimeV2", + "role": "startTime" + } + ], + "errorMsgs": [], + "contextText": "- create alarm for {datetimeV2:startTime}", + "range": { + "Start": { + "Line": 30, + "Character": 0 + }, + "End": { + "Line": 30, + "Character": 41 + } + } + } + ], + "Entities": [], + "Name": "setAlarm", + "IntentNameLine": "# setAlarm", + "Range": { + "Start": { + "Line": 28, + "Character": 0 + }, + "End": { + "Line": 31, + "Character": 0 + } + } + }, + { + "Errors": [], + "SectionType": "simpleIntentSection", + "Id": "simpleIntentSection_deleteAlarm", + "Body": "- remove the {datetimeV2:deleteTime} alarm\r\n\r\n> This is just defining datetimeV2 as a prebuilt entity type. If an explicit type is not specified, by default entities in patterns will be set to pattern.any entity type\r\n$PREBUILT:datetimeV2\r\n", + "UtteranceAndEntitiesMap": [ + { + "utterance": "remove the {datetimeV2:deleteTime} alarm", + "entities": [ + { + "type": "patternAnyEntities", + "entity": "datetimeV2", + "role": "deleteTime" + } + ], + "errorMsgs": [], + "contextText": "- remove the {datetimeV2:deleteTime} alarm", + "range": { + "Start": { + "Line": 33, + "Character": 0 + }, + "End": { + "Line": 33, + "Character": 42 + } + } + } + ], + "Entities": [ + { + "Errors": [], + "SectionType": "entitySection", + "Id": "entitySection_PREBUILT", + "Body": "", + "Name": "PREBUILT", + "Type": "datetimeV2", + "SynonymsOrPhraseList": [], + "Range": { + "Start": { + "Line": 36, + "Character": 0 + }, + "End": { + "Line": 36, + "Character": 20 + } + } + } + ], + "Name": "deleteAlarm", + "IntentNameLine": "# deleteAlarm", + "Range": { + "Start": { + "Line": 32, + "Character": 0 + }, + "End": { + "Line": 37, + "Character": 0 + } + } + }, + { + "Errors": [], + "SectionType": "simpleIntentSection", + "Id": "simpleIntentSection_randomTestIntent", + "Body": "- test {entity:foo}\r\n\r\n$entity: simple\r\n\r\n", + "UtteranceAndEntitiesMap": [ + { + "utterance": "test {entity:foo}", + "entities": [ + { + "type": "patternAnyEntities", + "entity": "entity", + "role": "foo" + } + ], + "errorMsgs": [], + "contextText": "- test {entity:foo}", + "range": { + "Start": { + "Line": 39, + "Character": 0 + }, + "End": { + "Line": 39, + "Character": 19 + } + } + } + ], + "Entities": [ + { + "Errors": [], + "SectionType": "entitySection", + "Id": "entitySection_entity", + "Body": "", + "Name": "entity", + "Type": "simple", + "SynonymsOrPhraseList": [], + "Range": { + "Start": { + "Line": 41, + "Character": 0 + }, + "End": { + "Line": 41, + "Character": 15 + } + } + } + ], + "Name": "randomTestIntent", + "IntentNameLine": "# randomTestIntent", + "Range": { + "Start": { + "Line": 38, + "Character": 0 + }, + "End": { + "Line": 43, + "Character": 0 + } + } + } + ], + "Content": "> You can use roles in patterns using the entityName:role notation.\n# getUserName\n- call me {name:userName}\n- I'm {name:userName}\n- my name is {name:userName}\n\n# getUserFirstName\n> this is another role for the same 'name' entity\n- [[my] first name is] {name:userFirstName}\n\n# BookFlight\n> roles can be specified for list entity types as well - in this case fromCity and toCity are added as roles to the 'city' list entity defined further below\n- book flight from {city:fromCity} to {city:toCity}\n- [can you] get me a flight from {city:fromCity} to {city:toCity}\n- get me a flight to {city:toCity}\n- I need to fly from {city:fromCity}\n\n$city:Seattle=\n- Seattle\n- Tacoma\n- SeaTac\n- SEA\n\n$city:Portland=\n- Portland\n- PDX\n\n# setAlarm\n> prebuilt entitities can have roles as well.\n- create alarm for {datetimeV2:startTime}\n\n# deleteAlarm\n- remove the {datetimeV2:deleteTime} alarm\n\n> This is just defining datetimeV2 as a prebuilt entity type. If an explicit type is not specified, by default entities in patterns will be set to pattern.any entity type\n$PREBUILT:datetimeV2\n\n# randomTestIntent\n- test {entity:foo}\n\n$entity: simple\n\n", + "Errors": [] +} \ No newline at end of file diff --git a/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Microsoft.Bot.Builder.Parsers.LU.Tests.csproj b/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Microsoft.Bot.Builder.Parsers.LU.Tests.csproj index b6e81e972b..c6bfe45d6e 100644 --- a/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Microsoft.Bot.Builder.Parsers.LU.Tests.csproj +++ b/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Microsoft.Bot.Builder.Parsers.LU.Tests.csproj @@ -20,6 +20,12 @@ + + Always + + + Always + Always diff --git a/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Parser/LuParserTests.cs b/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Parser/LuParserTests.cs index 8ecbf00b96..ab77ce38e5 100644 --- a/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Parser/LuParserTests.cs +++ b/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Parser/LuParserTests.cs @@ -18,6 +18,7 @@ public class LuParserTests [InlineData("LU_Sections")] [InlineData("SectionsLU")] [InlineData("ImportAllLu")] + [InlineData("AllComments")] public void ParseLuContent(string fileName) { // var luContent = "# Help"+ Environment.NewLine + "- help" + Environment.NewLine + "- I need help" + Environment.NewLine + "- please help";