aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRob Mensching <rob@firegiant.com>2021-12-19 12:13:43 -0800
committerRob Mensching <rob@firegiant.com>2021-12-30 12:51:23 -0800
commita63024bb9c9bf431ab20b5653ae605503147aeec (patch)
tree7d3bf3103ae2b985b598afcb823fe91df9707a93 /src
parent0aee408e0b07b92d90ede67800616f7f278a3dc4 (diff)
downloadwix-a63024bb9c9bf431ab20b5653ae605503147aeec.tar.gz
wix-a63024bb9c9bf431ab20b5653ae605503147aeec.tar.bz2
wix-a63024bb9c9bf431ab20b5653ae605503147aeec.zip
Integration tests for wixproj Sdk-style builds
Diffstat (limited to 'src')
-rw-r--r--src/test/burn/TestData/TestBA/TestBAWixlib_x64/testbawixlib_x64.wixproj11
-rw-r--r--src/test/test.cmd4
-rw-r--r--src/test/wix/Directory.Build.props11
-rw-r--r--src/test/wix/Directory.Build.targets6
-rw-r--r--src/test/wix/TestData/CsprojClassLibraryMultiTarget/Class1.cs6
-rw-r--r--src/test/wix/TestData/CsprojClassLibraryMultiTarget/CsprojClassLibraryMultiTarget.csproj11
-rw-r--r--src/test/wix/TestData/CsprojClassLibraryNetCore/Class1.cs8
-rw-r--r--src/test/wix/TestData/CsprojClassLibraryNetCore/CsprojClassLibraryNetCore.csproj7
-rw-r--r--src/test/wix/TestData/CsprojClassLibraryNetFx/Class1.cs12
-rw-r--r--src/test/wix/TestData/CsprojClassLibraryNetFx/CsprojClassLibraryNetFx.csproj54
-rw-r--r--src/test/wix/TestData/CsprojClassLibraryNetFx/Properties/AssemblyInfo.cs36
-rw-r--r--src/test/wix/TestData/CsprojConsoleNetCore/CsprojConsoleNetCore.csproj13
-rw-r--r--src/test/wix/TestData/CsprojConsoleNetCore/CsprojConsoleNetCore.sln25
-rw-r--r--src/test/wix/TestData/CsprojConsoleNetCore/Program.cs12
-rw-r--r--src/test/wix/TestData/CsprojConsoleNetCore/out.xml16133
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetCore/CsprojWebApplicationNetCore.csproj11
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Error.cshtml26
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Error.cshtml.cs31
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Index.cshtml10
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Index.cshtml.cs25
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Privacy.cshtml8
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Privacy.cshtml.cs24
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Shared/_Layout.cshtml50
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Shared/_ValidationScriptsPartial.cshtml2
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/_ViewImports.cshtml3
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/_ViewStart.cshtml3
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetCore/Program.cs26
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetCore/Properties/launchSettings.json27
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetCore/Startup.cs52
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetCore/appsettings.Development.json9
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetCore/appsettings.json10
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/css/site.css71
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/favicon.icobin0 -> 32038 bytes
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/js/site.js4
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/bootstrap/LICENSE22
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/bootstrap/dist/css/bootstrap.css10038
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/bootstrap/dist/js/bootstrap.js4435
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt12
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js432
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/jquery-validation/LICENSE.md22
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/jquery-validation/dist/additional-methods.js1158
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/jquery-validation/dist/jquery.validate.js1601
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/jquery/LICENSE.txt36
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/jquery/dist/jquery.js10872
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/App_Start/BundleConfig.cs30
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/App_Start/FilterConfig.cs13
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/App_Start/RouteConfig.cs23
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/Content/Site.css24
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/Content/bootstrap-theme.css587
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/Content/bootstrap.css6834
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/Controllers/HomeController.cs30
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/CsprojWebApplicationNetFx.csproj219
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/Global.asax1
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/Global.asax.cs21
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/Properties/AssemblyInfo.cs35
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/bootstrap.js2580
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/bootstrap.min.js6
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery-3.4.1.intellisense.js2670
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery-3.4.1.js10598
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery-3.4.1.min.js2
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery-3.4.1.min.map1
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery-3.4.1.slim.js8495
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery-3.4.1.slim.min.js2
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery-3.4.1.slim.min.map1
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery.validate-vsdoc.js1288
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery.validate.js1601
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery.validate.min.js4
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery.validate.unobtrusive.js432
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery.validate.unobtrusive.min.js5
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/modernizr-2.8.3.js1406
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/Views/Home/About.cshtml7
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/Views/Home/Contact.cshtml17
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/Views/Home/Index.cshtml31
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/Views/Shared/Error.cshtml13
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/Views/Shared/_Layout.cshtml42
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/Views/Web.config43
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/Views/_ViewStart.cshtml3
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/Web.Debug.config30
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/Web.Release.config31
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/Web.config55
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/favicon.icobin0 -> 32038 bytes
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/fonts/glyphicons-halflings-regular.svg288
-rw-r--r--src/test/wix/TestData/CsprojWebApplicationNetFx/packages.config17
-rw-r--r--src/test/wix/TestData/CsprojWindowsFormsNetFx/App.config6
-rw-r--r--src/test/wix/TestData/CsprojWindowsFormsNetFx/CsprojWindowsFormsNetFx.csproj86
-rw-r--r--src/test/wix/TestData/CsprojWindowsFormsNetFx/Form1.Designer.cs41
-rw-r--r--src/test/wix/TestData/CsprojWindowsFormsNetFx/Form1.cs20
-rw-r--r--src/test/wix/TestData/CsprojWindowsFormsNetFx/Program.cs22
-rw-r--r--src/test/wix/TestData/CsprojWindowsFormsNetFx/Properties/AssemblyInfo.cs36
-rw-r--r--src/test/wix/TestData/CsprojWindowsFormsNetFx/Properties/Resources.Designer.cs70
-rw-r--r--src/test/wix/TestData/CsprojWindowsFormsNetFx/Properties/Resources.resx117
-rw-r--r--src/test/wix/TestData/CsprojWindowsFormsNetFx/Properties/Settings.Designer.cs29
-rw-r--r--src/test/wix/TestData/CsprojWindowsFormsNetFx/Properties/Settings.settings7
-rw-r--r--src/test/wix/TestData/CsprojWpfNetCore/App.xaml9
-rw-r--r--src/test/wix/TestData/CsprojWpfNetCore/App.xaml.cs17
-rw-r--r--src/test/wix/TestData/CsprojWpfNetCore/AssemblyInfo.cs10
-rw-r--r--src/test/wix/TestData/CsprojWpfNetCore/CsprojWpfNetCore.csproj14
-rw-r--r--src/test/wix/TestData/CsprojWpfNetCore/MainWindow.xaml12
-rw-r--r--src/test/wix/TestData/CsprojWpfNetCore/MainWindow.xaml.cs28
-rw-r--r--src/test/wix/TestData/Directory.Build.props9
-rw-r--r--src/test/wix/TestData/Directory.Build.targets9
-rw-r--r--src/test/wix/TestData/Directory.Packages.props9
-rw-r--r--src/test/wix/TestData/TestProjects.sln191
-rw-r--r--src/test/wix/TestData/VcxprojConsoleApplication/VcxprojConsoleApplication.cpp20
-rw-r--r--src/test/wix/TestData/VcxprojConsoleApplication/VcxprojConsoleApplication.vcxproj147
-rw-r--r--src/test/wix/TestData/VcxprojConsoleApplication/VcxprojConsoleApplication.vcxproj.filters22
-rw-r--r--src/test/wix/TestData/VcxprojDll/VcxprojDll.vcxproj174
-rw-r--r--src/test/wix/TestData/VcxprojDll/VcxprojDll.vcxproj.filters33
-rw-r--r--src/test/wix/TestData/VcxprojDll/dllmain.cpp19
-rw-r--r--src/test/wix/TestData/VcxprojDll/framework.h5
-rw-r--r--src/test/wix/TestData/VcxprojDll/pch.cpp5
-rw-r--r--src/test/wix/TestData/VcxprojDll/pch.h13
-rw-r--r--src/test/wix/TestData/VcxprojStaticLib/VcxprojStaticLib.cpp10
-rw-r--r--src/test/wix/TestData/VcxprojStaticLib/VcxprojStaticLib.vcxproj169
-rw-r--r--src/test/wix/TestData/VcxprojStaticLib/VcxprojStaticLib.vcxproj.filters33
-rw-r--r--src/test/wix/TestData/VcxprojStaticLib/framework.h3
-rw-r--r--src/test/wix/TestData/VcxprojStaticLib/pch.cpp5
-rw-r--r--src/test/wix/TestData/VcxprojStaticLib/pch.h13
-rw-r--r--src/test/wix/TestData/VcxprojWindowsApp/Resource.h30
-rw-r--r--src/test/wix/TestData/VcxprojWindowsApp/VcxprojWindowsApp.cpp180
-rw-r--r--src/test/wix/TestData/VcxprojWindowsApp/VcxprojWindowsApp.h3
-rw-r--r--src/test/wix/TestData/VcxprojWindowsApp/VcxprojWindowsApp.icobin0 -> 46227 bytes
-rw-r--r--src/test/wix/TestData/VcxprojWindowsApp/VcxprojWindowsApp.rcbin0 -> 7008 bytes
-rw-r--r--src/test/wix/TestData/VcxprojWindowsApp/VcxprojWindowsApp.vcxproj160
-rw-r--r--src/test/wix/TestData/VcxprojWindowsApp/VcxprojWindowsApp.vcxproj.filters49
-rw-r--r--src/test/wix/TestData/VcxprojWindowsApp/framework.h15
-rw-r--r--src/test/wix/TestData/VcxprojWindowsApp/small.icobin0 -> 46227 bytes
-rw-r--r--src/test/wix/TestData/VcxprojWindowsApp/targetver.h6
-rw-r--r--src/test/wix/TestData/WixprojLibraryVcxprojDll/Library.wxs11
-rw-r--r--src/test/wix/TestData/WixprojLibraryVcxprojDll/WixprojLibraryVcxprojDll.wixproj11
-rw-r--r--src/test/wix/TestData/WixprojLibraryVcxprojDll/go.cmd27
-rw-r--r--src/test/wix/TestData/WixprojModuleCsprojWinFormsNetFx/Module.wxs8
-rw-r--r--src/test/wix/TestData/WixprojModuleCsprojWinFormsNetFx/WixprojModuleCsprojWinFormsNetFx.wixproj19
-rw-r--r--src/test/wix/TestData/WixprojModuleCsprojWinFormsNetFx/go.cmd36
-rw-r--r--src/test/wix/TestData/WixprojPackageCsprojWebApplicationNetCore/Package.wxs18
-rw-r--r--src/test/wix/TestData/WixprojPackageCsprojWebApplicationNetCore/WixprojPackageCsprojWebApplicationNetCore.wixproj18
-rw-r--r--src/test/wix/TestData/WixprojPackageCsprojWebApplicationNetCore/go.cmd23
-rw-r--r--src/test/wix/TestData/WixprojPackageVcxprojWindowsApp/Package.en-us.wxl11
-rw-r--r--src/test/wix/TestData/WixprojPackageVcxprojWindowsApp/Package.ja-jp.wxl11
-rw-r--r--src/test/wix/TestData/WixprojPackageVcxprojWindowsApp/Package.wxs22
-rw-r--r--src/test/wix/TestData/WixprojPackageVcxprojWindowsApp/WixprojPackageVcxprojWindowsApp.wixproj11
-rw-r--r--src/test/wix/TestData/WixprojPackageVcxprojWindowsApp/go.cmd44
-rw-r--r--src/test/wix/TestData/WixprojPackageVcxprojWindowsAppMultiArch/Package.wxs23
-rw-r--r--src/test/wix/TestData/WixprojPackageVcxprojWindowsAppMultiArch/WixprojPackageVcxprojWindowsAppMultiArch.wixproj10
-rw-r--r--src/test/wix/WixE2E/WixE2E.csproj26
-rw-r--r--src/test/wix/WixE2E/WixE2EFixture.cs79
-rw-r--r--src/test/wix/WixE2ETests.sln22
-rw-r--r--src/test/wix/WixE2ETests.v3.ncrunchsolution6
148 files changed, 85145 insertions, 1 deletions
diff --git a/src/test/burn/TestData/TestBA/TestBAWixlib_x64/testbawixlib_x64.wixproj b/src/test/burn/TestData/TestBA/TestBAWixlib_x64/testbawixlib_x64.wixproj
index 9055382f..9bba3d8f 100644
--- a/src/test/burn/TestData/TestBA/TestBAWixlib_x64/testbawixlib_x64.wixproj
+++ b/src/test/burn/TestData/TestBA/TestBAWixlib_x64/testbawixlib_x64.wixproj
@@ -13,6 +13,17 @@
13 </ItemGroup> 13 </ItemGroup>
14 <ItemGroup> 14 <ItemGroup>
15 <ProjectReference Include="..\..\..\TestBA\TestBA_x64.csproj" /> 15 <ProjectReference Include="..\..\..\TestBA\TestBA_x64.csproj" />
16 <!-- An alternative to the above line is to explicitly reference projects with
17 the required target framework. Since we want all target frameworks built,
18 the above line is shorter.
19 <ProjectReference Include="..\..\..\TestBA\TestBA_x64.csproj">
20 <SetTargetFramework>TargetFramework=net35</SetTargetFramework>
21 </ProjectReference>
22 <ProjectReference Include="..\..\..\TestBA\TestBA_x64.csproj">
23 <SetTargetFramework>TargetFramework=net5.0-windows</SetTargetFramework>
24 </ProjectReference>
25 -->
26
16 <ProjectReference Include="..\..\..\TestExe\TestExe_x64.csproj" /> 27 <ProjectReference Include="..\..\..\TestExe\TestExe_x64.csproj" />
17 <ProjectReference Include="..\..\..\WixToolset.WixBA\WixToolset.WixBA_x64.csproj" /> 28 <ProjectReference Include="..\..\..\WixToolset.WixBA\WixToolset.WixBA_x64.csproj" />
18 </ItemGroup> 29 </ItemGroup>
diff --git a/src/test/test.cmd b/src/test/test.cmd
index 45df99bc..a4103f03 100644
--- a/src/test/test.cmd
+++ b/src/test/test.cmd
@@ -10,7 +10,9 @@
10@if not "%RuntimeTestsEnabled%"=="true" echo Build integration tests %_C% 10@if not "%RuntimeTestsEnabled%"=="true" echo Build integration tests %_C%
11@if "%RuntimeTestsEnabled%"=="true" set _T=test&echo Run integration tests %_C% 11@if "%RuntimeTestsEnabled%"=="true" set _T=test&echo Run integration tests %_C%
12 12
13@call burn\test_burn.cmd %_C% %_T% 13@call burn\test_burn.cmd %_C% %_T% || exit /b
14
15dotnet test wix -c %_C% --nologo -v m || exit /b
14 16
15@popd 17@popd
16@endlocal 18@endlocal
diff --git a/src/test/wix/Directory.Build.props b/src/test/wix/Directory.Build.props
new file mode 100644
index 00000000..4c6ebb3e
--- /dev/null
+++ b/src/test/wix/Directory.Build.props
@@ -0,0 +1,11 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3<Project>
4 <PropertyGroup>
5 <SegmentName>IntegrationWix</SegmentName>
6 <SignOutput>false</SignOutput>
7 </PropertyGroup>
8
9 <Import Project="..\..\Directory.Build.props" />
10 <Import Project="Directory$(MSBuildProjectExtension).props" Condition=" Exists('Directory$(MSBuildProjectExtension).props') " />
11</Project>
diff --git a/src/test/wix/Directory.Build.targets b/src/test/wix/Directory.Build.targets
new file mode 100644
index 00000000..4e97b6ca
--- /dev/null
+++ b/src/test/wix/Directory.Build.targets
@@ -0,0 +1,6 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3<Project>
4 <Import Project="..\..\Directory.Build.targets" />
5 <Import Project="Directory$(MSBuildProjectExtension).targets" Condition=" Exists('Directory$(MSBuildProjectExtension).targets') " />
6</Project>
diff --git a/src/test/wix/TestData/CsprojClassLibraryMultiTarget/Class1.cs b/src/test/wix/TestData/CsprojClassLibraryMultiTarget/Class1.cs
new file mode 100644
index 00000000..f09710ab
--- /dev/null
+++ b/src/test/wix/TestData/CsprojClassLibraryMultiTarget/Class1.cs
@@ -0,0 +1,6 @@
1namespace CsprojClassLibraryMultiTarget
2{
3 public class Class1
4 {
5 }
6} \ No newline at end of file
diff --git a/src/test/wix/TestData/CsprojClassLibraryMultiTarget/CsprojClassLibraryMultiTarget.csproj b/src/test/wix/TestData/CsprojClassLibraryMultiTarget/CsprojClassLibraryMultiTarget.csproj
new file mode 100644
index 00000000..9920b616
--- /dev/null
+++ b/src/test/wix/TestData/CsprojClassLibraryMultiTarget/CsprojClassLibraryMultiTarget.csproj
@@ -0,0 +1,11 @@
1<Project Sdk="Microsoft.NET.Sdk">
2
3 <PropertyGroup>
4 <TargetFrameworks>net48;net5.0</TargetFrameworks>
5 </PropertyGroup>
6
7 <ItemGroup>
8 <ProjectReference Include="..\CsprojClassLibraryNetCore\CsprojClassLibraryNetCore.csproj" />
9 </ItemGroup>
10
11</Project>
diff --git a/src/test/wix/TestData/CsprojClassLibraryNetCore/Class1.cs b/src/test/wix/TestData/CsprojClassLibraryNetCore/Class1.cs
new file mode 100644
index 00000000..83cf1b25
--- /dev/null
+++ b/src/test/wix/TestData/CsprojClassLibraryNetCore/Class1.cs
@@ -0,0 +1,8 @@
1using System;
2
3namespace CsprojClassLibraryNetCore
4{
5 public class Class1
6 {
7 }
8}
diff --git a/src/test/wix/TestData/CsprojClassLibraryNetCore/CsprojClassLibraryNetCore.csproj b/src/test/wix/TestData/CsprojClassLibraryNetCore/CsprojClassLibraryNetCore.csproj
new file mode 100644
index 00000000..9f5c4f4a
--- /dev/null
+++ b/src/test/wix/TestData/CsprojClassLibraryNetCore/CsprojClassLibraryNetCore.csproj
@@ -0,0 +1,7 @@
1<Project Sdk="Microsoft.NET.Sdk">
2
3 <PropertyGroup>
4 <TargetFramework>netstandard2.0</TargetFramework>
5 </PropertyGroup>
6
7</Project>
diff --git a/src/test/wix/TestData/CsprojClassLibraryNetFx/Class1.cs b/src/test/wix/TestData/CsprojClassLibraryNetFx/Class1.cs
new file mode 100644
index 00000000..2bf3bf59
--- /dev/null
+++ b/src/test/wix/TestData/CsprojClassLibraryNetFx/Class1.cs
@@ -0,0 +1,12 @@
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using System.Threading.Tasks;
6
7namespace CsprojClassLibraryNetFx
8{
9 public class Class1
10 {
11 }
12}
diff --git a/src/test/wix/TestData/CsprojClassLibraryNetFx/CsprojClassLibraryNetFx.csproj b/src/test/wix/TestData/CsprojClassLibraryNetFx/CsprojClassLibraryNetFx.csproj
new file mode 100644
index 00000000..e776bc4b
--- /dev/null
+++ b/src/test/wix/TestData/CsprojClassLibraryNetFx/CsprojClassLibraryNetFx.csproj
@@ -0,0 +1,54 @@
1<?xml version="1.0" encoding="utf-8"?>
2<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3 <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
4 <PropertyGroup>
5 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
6 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
7 <ProjectGuid>984d615d-adb1-49b4-ae0b-4496ed963881</ProjectGuid>
8 <OutputType>Library</OutputType>
9 <AppDesignerFolder>Properties</AppDesignerFolder>
10 <RootNamespace>CsprojClassLibraryNetFx</RootNamespace>
11 <AssemblyName>CsprojClassLibraryNetFx</AssemblyName>
12 <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
13 <FileAlignment>512</FileAlignment>
14 <Deterministic>true</Deterministic>
15 </PropertyGroup>
16 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
17 <DebugSymbols>true</DebugSymbols>
18 <DebugType>full</DebugType>
19 <Optimize>false</Optimize>
20 <OutputPath>bin\Debug\</OutputPath>
21 <DefineConstants>DEBUG;TRACE</DefineConstants>
22 <ErrorReport>prompt</ErrorReport>
23 <WarningLevel>4</WarningLevel>
24 </PropertyGroup>
25 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
26 <DebugType>pdbonly</DebugType>
27 <Optimize>true</Optimize>
28 <OutputPath>bin\Release\</OutputPath>
29 <DefineConstants>TRACE</DefineConstants>
30 <ErrorReport>prompt</ErrorReport>
31 <WarningLevel>4</WarningLevel>
32 </PropertyGroup>
33 <ItemGroup>
34 <Reference Include="System"/>
35
36 <Reference Include="System.Core"/>
37 <Reference Include="System.Xml.Linq"/>
38 <Reference Include="System.Data.DataSetExtensions"/>
39
40
41 <Reference Include="Microsoft.CSharp"/>
42
43 <Reference Include="System.Data"/>
44
45 <Reference Include="System.Net.Http"/>
46
47 <Reference Include="System.Xml"/>
48 </ItemGroup>
49 <ItemGroup>
50 <Compile Include="Class1.cs" />
51 <Compile Include="Properties\AssemblyInfo.cs" />
52 </ItemGroup>
53 <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
54 </Project>
diff --git a/src/test/wix/TestData/CsprojClassLibraryNetFx/Properties/AssemblyInfo.cs b/src/test/wix/TestData/CsprojClassLibraryNetFx/Properties/AssemblyInfo.cs
new file mode 100644
index 00000000..732ebc0c
--- /dev/null
+++ b/src/test/wix/TestData/CsprojClassLibraryNetFx/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
1using System.Reflection;
2using System.Runtime.CompilerServices;
3using System.Runtime.InteropServices;
4
5// General Information about an assembly is controlled through the following
6// set of attributes. Change these attribute values to modify the information
7// associated with an assembly.
8[assembly: AssemblyTitle("CsprojClassLibraryNetFx")]
9[assembly: AssemblyDescription("")]
10[assembly: AssemblyConfiguration("")]
11[assembly: AssemblyCompany("")]
12[assembly: AssemblyProduct("CsprojClassLibraryNetFx")]
13[assembly: AssemblyCopyright("Copyright © 2021")]
14[assembly: AssemblyTrademark("")]
15[assembly: AssemblyCulture("")]
16
17// Setting ComVisible to false makes the types in this assembly not visible
18// to COM components. If you need to access a type in this assembly from
19// COM, set the ComVisible attribute to true on that type.
20[assembly: ComVisible(false)]
21
22// The following GUID is for the ID of the typelib if this project is exposed to COM
23[assembly: Guid("984d615d-adb1-49b4-ae0b-4496ed963881")]
24
25// Version information for an assembly consists of the following four values:
26//
27// Major Version
28// Minor Version
29// Build Number
30// Revision
31//
32// You can specify all the values or you can default the Build and Revision Numbers
33// by using the '*' as shown below:
34// [assembly: AssemblyVersion("1.0.*")]
35[assembly: AssemblyVersion("1.0.0.0")]
36[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/src/test/wix/TestData/CsprojConsoleNetCore/CsprojConsoleNetCore.csproj b/src/test/wix/TestData/CsprojConsoleNetCore/CsprojConsoleNetCore.csproj
new file mode 100644
index 00000000..8fceff91
--- /dev/null
+++ b/src/test/wix/TestData/CsprojConsoleNetCore/CsprojConsoleNetCore.csproj
@@ -0,0 +1,13 @@
1<Project Sdk="Microsoft.NET.Sdk">
2
3 <PropertyGroup>
4 <OutputType>Exe</OutputType>
5 <TargetFramework>netcoreapp3.1</TargetFramework>
6 <RuntimeIdentifiers>win-x86</RuntimeIdentifiers>
7 </PropertyGroup>
8
9 <ItemGroup>
10 <ProjectReference Include="..\CsprojClassLibraryNetCore\CsprojClassLibraryNetCore.csproj" />
11 </ItemGroup>
12
13</Project>
diff --git a/src/test/wix/TestData/CsprojConsoleNetCore/CsprojConsoleNetCore.sln b/src/test/wix/TestData/CsprojConsoleNetCore/CsprojConsoleNetCore.sln
new file mode 100644
index 00000000..47005cdc
--- /dev/null
+++ b/src/test/wix/TestData/CsprojConsoleNetCore/CsprojConsoleNetCore.sln
@@ -0,0 +1,25 @@
1
2Microsoft Visual Studio Solution File, Format Version 12.00
3# Visual Studio Version 16
4VisualStudioVersion = 16.0.31911.196
5MinimumVisualStudioVersion = 10.0.40219.1
6Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CsprojConsoleNetCore", "CsprojConsoleNetCore.csproj", "{A87A6E98-EE6A-4688-8716-E2378AC7BB75}"
7EndProject
8Global
9 GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 Debug|Any CPU = Debug|Any CPU
11 Release|Any CPU = Release|Any CPU
12 EndGlobalSection
13 GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 {A87A6E98-EE6A-4688-8716-E2378AC7BB75}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15 {A87A6E98-EE6A-4688-8716-E2378AC7BB75}.Debug|Any CPU.Build.0 = Debug|Any CPU
16 {A87A6E98-EE6A-4688-8716-E2378AC7BB75}.Release|Any CPU.ActiveCfg = Release|Any CPU
17 {A87A6E98-EE6A-4688-8716-E2378AC7BB75}.Release|Any CPU.Build.0 = Release|Any CPU
18 EndGlobalSection
19 GlobalSection(SolutionProperties) = preSolution
20 HideSolutionNode = FALSE
21 EndGlobalSection
22 GlobalSection(ExtensibilityGlobals) = postSolution
23 SolutionGuid = {9D5D5A46-18B1-4B8B-BC4B-DBD4EFC8215D}
24 EndGlobalSection
25EndGlobal
diff --git a/src/test/wix/TestData/CsprojConsoleNetCore/Program.cs b/src/test/wix/TestData/CsprojConsoleNetCore/Program.cs
new file mode 100644
index 00000000..ebfacee6
--- /dev/null
+++ b/src/test/wix/TestData/CsprojConsoleNetCore/Program.cs
@@ -0,0 +1,12 @@
1using System;
2
3namespace CsprojConsoleNetCore
4{
5 class Program
6 {
7 static void Main(string[] args)
8 {
9 Console.WriteLine("Hello World!");
10 }
11 }
12}
diff --git a/src/test/wix/TestData/CsprojConsoleNetCore/out.xml b/src/test/wix/TestData/CsprojConsoleNetCore/out.xml
new file mode 100644
index 00000000..115aa053
--- /dev/null
+++ b/src/test/wix/TestData/CsprojConsoleNetCore/out.xml
@@ -0,0 +1,16133 @@
1<!--
2============================================================================================================================================
3D:\src\wix4\src\test\wix\TestProjects\CsprojConsoleNetCore\CsprojConsoleNetCore.csproj
4============================================================================================================================================
5-->
6<Project DefaultTargets="Build">
7 <!--
8============================================================================================================================================
9 <Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk">
10 This import was added implicitly because the Project element's Sdk attribute specified "Microsoft.NET.Sdk".
11
12C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\Sdk\Sdk.props
13============================================================================================================================================
14-->
15 <!--
16***********************************************************************************************
17Sdk.props
18
19WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
20 created a backup copy. Incorrect changes to this file will make it
21 impossible to load or build your projects from the command-line or the IDE.
22
23Copyright (c) .NET Foundation. All rights reserved.
24***********************************************************************************************
25-->
26 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
27 <!--
28 Indicate to other targets that Microsoft.NET.Sdk is being used.
29
30 This must be set here (as early as possible, before Microsoft.Common.props)
31 so that everything that follows can depend on it.
32
33 In particular, Directory.Build.props and nuget package props need to be able
34 to use this flag and they are imported by Microsoft.Common.props.
35 -->
36 <UsingMicrosoftNETSdk>true</UsingMicrosoftNETSdk>
37 <!--
38 Indicate whether the set of SDK defaults that makes SDK style project concise are being used.
39 For example: globbing, importing msbuild common targets.
40
41 Similar to the property above, it must be set here.
42 -->
43 <UsingNETSdkDefaults>true</UsingNETSdkDefaults>
44 </PropertyGroup>
45 <PropertyGroup Condition="'$(MSBuildProjectFullPath)' == '$(ProjectToOverrideProjectExtensionsPath)'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
46 <MSBuildProjectExtensionsPath>$(ProjectExtensionsPathForSpecifiedProject)</MSBuildProjectExtensionsPath>
47 </PropertyGroup>
48 <!--<Import Project="$(AlternateCommonProps)" Condition="'$(AlternateCommonProps)' != ''" />-->
49 <!--
50============================================================================================================================================
51 <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="'$(AlternateCommonProps)' == ''">
52
53C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Microsoft.Common.props
54============================================================================================================================================
55-->
56 <!--
57***********************************************************************************************
58Microsoft.Common.props
59
60WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
61 created a backup copy. Incorrect changes to this file will make it
62 impossible to load or build your projects from the command-line or the IDE.
63
64Copyright (C) Microsoft Corporation. All rights reserved.
65***********************************************************************************************
66-->
67 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
68 <ImportByWildcardBeforeMicrosoftCommonProps Condition="'$(ImportByWildcardBeforeMicrosoftCommonProps)' == ''">true</ImportByWildcardBeforeMicrosoftCommonProps>
69 <ImportByWildcardAfterMicrosoftCommonProps Condition="'$(ImportByWildcardAfterMicrosoftCommonProps)' == ''">true</ImportByWildcardAfterMicrosoftCommonProps>
70 <ImportUserLocationsByWildcardBeforeMicrosoftCommonProps Condition="'$(ImportUserLocationsByWildcardBeforeMicrosoftCommonProps)' == ''">true</ImportUserLocationsByWildcardBeforeMicrosoftCommonProps>
71 <ImportUserLocationsByWildcardAfterMicrosoftCommonProps Condition="'$(ImportUserLocationsByWildcardAfterMicrosoftCommonProps)' == ''">true</ImportUserLocationsByWildcardAfterMicrosoftCommonProps>
72 <ImportDirectoryBuildProps Condition="'$(ImportDirectoryBuildProps)' == ''">true</ImportDirectoryBuildProps>
73 </PropertyGroup>
74 <!--
75 Determine the path to the directory build props file if the user did not disable $(ImportDirectoryBuildProps) and
76 they did not already specify an absolute path to use via $(DirectoryBuildPropsPath)
77 -->
78 <PropertyGroup Condition="'$(ImportDirectoryBuildProps)' == 'true' and '$(DirectoryBuildPropsPath)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
79 <_DirectoryBuildPropsFile Condition="'$(_DirectoryBuildPropsFile)' == ''">Directory.Build.props</_DirectoryBuildPropsFile>
80 <_DirectoryBuildPropsBasePath Condition="'$(_DirectoryBuildPropsBasePath)' == ''">$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), '$(_DirectoryBuildPropsFile)'))</_DirectoryBuildPropsBasePath>
81 <DirectoryBuildPropsPath Condition="'$(_DirectoryBuildPropsBasePath)' != '' and '$(_DirectoryBuildPropsFile)' != ''">$([System.IO.Path]::Combine('$(_DirectoryBuildPropsBasePath)', '$(_DirectoryBuildPropsFile)'))</DirectoryBuildPropsPath>
82 </PropertyGroup>
83 <!--
84============================================================================================================================================
85 <Import Project="$(DirectoryBuildPropsPath)" Condition="'$(ImportDirectoryBuildProps)' == 'true' and exists('$(DirectoryBuildPropsPath)')">
86
87D:\src\wix4\src\test\wix\TestProjects\Directory.Build.props
88============================================================================================================================================
89-->
90 <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
91 <!--
92 This file prevents the import of WiX standard Directory.Build.props
93 from the root src directory
94 -->
95 <!--
96============================================================================================================================================
97 </Import>
98
99C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Microsoft.Common.props
100============================================================================================================================================
101-->
102 <!--
103 Prepare to import project extensions which usually come from packages. Package management systems will create a file at:
104 $(MSBuildProjectExtensionsPath)\$(MSBuildProjectFile).<SomethingUnique>.props
105
106 Each package management system should use a unique moniker to avoid collisions. It is a wild-card import so the package
107 management system can write out multiple files but the order of the import is alphabetic because MSBuild sorts the list.
108 -->
109 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
110 <!--
111 The declaration of $(BaseIntermediateOutputPath) had to be moved up from Microsoft.Common.CurrentVersion.targets
112 in order for the $(MSBuildProjectExtensionsPath) to use it as a default.
113 -->
114 <BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'=='' ">obj\</BaseIntermediateOutputPath>
115 <BaseIntermediateOutputPath Condition="!HasTrailingSlash('$(BaseIntermediateOutputPath)')">$(BaseIntermediateOutputPath)\</BaseIntermediateOutputPath>
116 <_InitialBaseIntermediateOutputPath>$(BaseIntermediateOutputPath)</_InitialBaseIntermediateOutputPath>
117 <MSBuildProjectExtensionsPath Condition="'$(MSBuildProjectExtensionsPath)' == '' ">$(BaseIntermediateOutputPath)</MSBuildProjectExtensionsPath>
118 <!--
119 Import paths that are relative default to be relative to the importing file. However, since MSBuildExtensionsPath
120 defaults to BaseIntermediateOutputPath we expect it to be relative to the project directory. So if the path is relative
121 it needs to be made absolute based on the project directory.
122 -->
123 <MSBuildProjectExtensionsPath Condition="'$([System.IO.Path]::IsPathRooted($(MSBuildProjectExtensionsPath)))' == 'false'">$([System.IO.Path]::Combine('$(MSBuildProjectDirectory)', '$(MSBuildProjectExtensionsPath)'))</MSBuildProjectExtensionsPath>
124 <MSBuildProjectExtensionsPath Condition="!HasTrailingSlash('$(MSBuildProjectExtensionsPath)')">$(MSBuildProjectExtensionsPath)\</MSBuildProjectExtensionsPath>
125 <ImportProjectExtensionProps Condition="'$(ImportProjectExtensionProps)' == ''">true</ImportProjectExtensionProps>
126 <_InitialMSBuildProjectExtensionsPath Condition=" '$(ImportProjectExtensionProps)' == 'true' ">$(MSBuildProjectExtensionsPath)</_InitialMSBuildProjectExtensionsPath>
127 </PropertyGroup>
128 <!--<Import Project="$(MSBuildProjectExtensionsPath)$(MSBuildProjectFile).*.props" Condition="'$(ImportProjectExtensionProps)' == 'true' and exists('$(MSBuildProjectExtensionsPath)')" />-->
129 <!--
130 Import wildcard "ImportBefore" props files if we're actually in a 12.0+ project (rather than a project being
131 treated as 4.0)
132 -->
133 <!--<ImportGroup Condition="'$(MSBuildAssemblyVersion)' != ''">-->
134 <!--
135 Wildcard imports come from $(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props.d folder.
136 This is very similar to the same extension point used in Microsoft.Common.targets, which is located in
137 the $(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.targets\ directory. Unfortunately, there
138 is already a file named "Microsoft.Common.props" in this directory so we have to have a slightly different
139 directory name to hold extensions.
140 -->
141 <!--<Import Project="$(MSBuildUserExtensionsPath)\$(MSBuildToolsVersion)\Imports\Microsoft.Common.props\ImportBefore\*" Condition="'$(ImportUserLocationsByWildcardBeforeMicrosoftCommonProps)' == 'true' and exists('$(MSBuildUserExtensionsPath)\$(MSBuildToolsVersion)\Imports\Microsoft.Common.props\ImportBefore')" />-->
142 <!--
143============================================================================================================================================
144 <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Imports\Microsoft.Common.props\ImportBefore\*" Condition="'$(ImportByWildcardBeforeMicrosoftCommonProps)' == 'true' and exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Imports\Microsoft.Common.props\ImportBefore')">
145
146C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Imports\Microsoft.Common.props\ImportBefore\Microsoft.NuGet.ImportBefore.props
147============================================================================================================================================
148-->
149 <!--
150***********************************************************************************************
151Microsoft.NuGet.ImportBefore.props
152
153WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
154 created a backup copy. Incorrect changes to this file will make it
155 impossible to load or build your projects from the command-line or the IDE.
156
157Copyright (c) .NET Foundation. All rights reserved.
158***********************************************************************************************
159-->
160 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
161 <NuGetProps Condition="'$(NuGetProps)'==''">$(MSBuildExtensionsPath)\Microsoft\NuGet\$(VisualStudioVersion)\Microsoft.NuGet.props</NuGetProps>
162 </PropertyGroup>
163 <!--
164============================================================================================================================================
165 <Import Project="$(NuGetProps)" Condition="Exists('$(NuGetProps)') and '$(SkipImportNuGetProps)' != 'true'">
166
167C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\NuGet\16.0\Microsoft.NuGet.props
168============================================================================================================================================
169-->
170 <!--
171***********************************************************************************************
172Microsoft.NuGet.props
173
174WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
175 created a backup copy. Incorrect changes to this file will make it
176 impossible to load or build your projects from the command-line or the IDE.
177
178Copyright (c) .NET Foundation. All rights reserved.
179***********************************************************************************************
180-->
181 <!--<Import Project="$(MSBuildProjectDirectory)\$(MSBuildProjectName).nuget.props" Condition="Exists('$(MSBuildProjectDirectory)\$(MSBuildProjectName).nuget.props') AND '$(IncludeNuGetImports)' != 'false'" />-->
182 <!--
183============================================================================================================================================
184 </Import>
185
186C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Imports\Microsoft.Common.props\ImportBefore\Microsoft.NuGet.ImportBefore.props
187============================================================================================================================================
188-->
189 <!--
190============================================================================================================================================
191 </Import>
192
193C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Microsoft.Common.props
194============================================================================================================================================
195-->
196 <!--</ImportGroup>-->
197 <!--
198 In VS 2010 SP1 and VS 2012, both supported for asset compatibility, the MSBuild installed
199 as part of them did not enforce using the local ToolsVersion (4.0) in all cases, but instead
200 just used whatever ToolsVersion was in the project file if it existed on the machine, and
201 only forced 4.0 if that ToolsVersion did not exist.
202
203 Moving forward, we do want to enforce a single acting ToolsVersion per version of Visual Studio,
204 but in order to approximate this behavior on VS 2010 SP1 and VS 2012 as well, we've redirected
205 the targets: If we're building using 4.X MSBuild (which doesn't define the new reserved
206 property, MSBuildAssemblyVersion), we'll point right back at the 4.0 targets, which still exist
207 as part of the .NET Framework. Only if we're using the new MSBuild will we point to the current
208 targets.
209 -->
210 <PropertyGroup Condition="'$(MSBuildAssemblyVersion)' == '' and ('$(VisualStudioVersion)' != '' and '$(VisualStudioVersion)' &gt;= '12.0')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
211 <!--
212 Reset VisualStudioVersion if it's 12.0+: Should be 10.0 if VS 2010 is installed or 11.0 otherwise,
213 but since we don't have a good way of telling whether VS 2010 is installed, make it 11.0 if
214 VS 2012 is installed or 10.0 otherwise. The reset should be safe because if it was already
215 set to something (e.g. 11.0 in a VS 2012 command prompt) then MSBuild's internal
216 VisualStudioVersion-defaulting code should never come into the picture, so the only way it could
217 be 12.0+ when building a TV 12.0 project (because we're in this file) using MSBuild 4.5 (because
218 MSBuildAssemblyVersion hasn't been set) is if it's a TV 12.0 project on an empty command prompt.
219 -->
220 <VisualStudioVersion Condition="Exists('$(MSBuildExtensionsPath)\4.0\Microsoft.Common.props')">11.0</VisualStudioVersion>
221 <VisualStudioVersion Condition="!Exists('$(MSBuildExtensionsPath)\4.0\Microsoft.Common.props')">10.0</VisualStudioVersion>
222 </PropertyGroup>
223 <!-- If building using 4.X MSBuild, we want to act like this project is TV 4.0, so override
224 the custom extensibility target locations with the hard-coded 4.0 equivalent. -->
225 <PropertyGroup Condition="'$(MSBuildAssemblyVersion)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
226 <CustomBeforeMicrosoftCommonProps Condition="'$(CustomBeforeMicrosoftCommonProps)'==''">$(MSBuildExtensionsPath)\v4.0\Custom.Before.$(MSBuildThisFile)</CustomBeforeMicrosoftCommonProps>
227 <CustomAfterMicrosoftCommonProps Condition="'$(CustomAfterMicrosoftCommonProps)'==''">$(MSBuildExtensionsPath)\v4.0\Custom.After.$(MSBuildThisFile)</CustomAfterMicrosoftCommonProps>
228 </PropertyGroup>
229 <!-- If building using 4.X MSBuild, we want to act like this project is TV 4.0, so import
230 Microsoft.Common.props from the 4.0 location, and make sure everything else in here is
231 set up such that if it's defaulted to something there, it won't be overridden here. -->
232 <!--<Import Project="$(MSBuildExtensionsPath)\4.0\Microsoft.Common.props" Condition="'$(MSBuildAssemblyVersion)' == '' and Exists('$(MSBuildExtensionsPath)\4.0\Microsoft.Common.props')" />-->
233 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
234 <CustomBeforeMicrosoftCommonProps Condition="'$(CustomBeforeMicrosoftCommonProps)'==''">$(MSBuildExtensionsPath)\v$(MSBuildToolsVersion)\Custom.Before.$(MSBuildThisFile)</CustomBeforeMicrosoftCommonProps>
235 <CustomAfterMicrosoftCommonProps Condition="'$(CustomAfterMicrosoftCommonProps)'==''">$(MSBuildExtensionsPath)\v$(MSBuildToolsVersion)\Custom.After.$(MSBuildThisFile)</CustomAfterMicrosoftCommonProps>
236 </PropertyGroup>
237 <!--
238 Only import the extension targets if we're actually in a 12.0 project here (rather than one we're attempting
239 to treat as 4.0) OR if the Dev11 Microsoft.Common.props don't exist. If it's a 12.0 project we're redirecting
240 to 4.0 and the Dev11 Microsoft.Common.props do exist, the extension targets will have been imported already
241 so there's no need to import them twice.
242 -->
243 <!--<Import Project="$(CustomBeforeMicrosoftCommonProps)" Condition="'$(CustomBeforeMicrosoftCommonProps)' != '' and Exists('$(CustomBeforeMicrosoftCommonProps)') and ('$(MSBuildAssemblyVersion)' != '' or !Exists('$(MSBuildExtensionsPath)\4.0\Microsoft.Common.props'))" />-->
244 <!-- This is used to determine whether Microsoft.Common.targets needs to import
245 Microsoft.Common.props itself, or whether it has been imported previously,
246 e.g. by the project itself. -->
247 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
248 <MicrosoftCommonPropsHasBeenImported>true</MicrosoftCommonPropsHasBeenImported>
249 </PropertyGroup>
250 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
251 <Configuration Condition=" '$(Configuration)' == '' and '$(DefaultProjectConfiguration)' != '' ">$(DefaultProjectConfiguration)</Configuration>
252 <Platform Condition=" '$(Platform)' == '' and '$(DefaultProjectPlatform)' != '' ">$(DefaultProjectPlatform)</Platform>
253 </PropertyGroup>
254 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
255 <WMSJSProject Condition="'$(WMSJSProject)' == ''">WJProject</WMSJSProject>
256 <WMSJSProjectDirectory Condition="'$(WMSJSProjectDirectory)' == ''">JavaScript</WMSJSProjectDirectory>
257 </PropertyGroup>
258 <!--<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.VisualStudioVersion.v*.Common.props" Condition="'$(VisualStudioVersion)' == ''" />-->
259 <!--
260 Only import the extension targets if we're actually in a 12.0 project here (rather than one we're attempting
261 to treat as 4.0) OR if the Dev11 Microsoft.Common.props don't exist. If it's a 12.0 project we're redirecting
262 to 4.0 and the Dev11 Microsoft.Common.props do exist, the extension targets will have been imported already
263 so there's no need to import them twice.
264 -->
265 <!--<Import Project="$(CustomAfterMicrosoftCommonProps)" Condition="'$(CustomAfterMicrosoftCommonProps)' != '' and Exists('$(CustomAfterMicrosoftCommonProps)') and ('$(MSBuildAssemblyVersion)' != '' or !Exists('$(MSBuildExtensionsPath)\4.0\Microsoft.Common.props'))" />-->
266 <!--
267 Import wildcard "ImportAfter" props files if we're actually in a 12.0+ project (rather than a project being
268 treated as 4.0)
269 -->
270 <!--<ImportGroup Condition="'$(MSBuildAssemblyVersion)' != ''">-->
271 <!--<Import Project="$(MSBuildUserExtensionsPath)\$(MSBuildToolsVersion)\Imports\Microsoft.Common.props\ImportAfter\*" Condition="'$(ImportUserLocationsByWildcardAfterMicrosoftCommonProps)' == 'true' and exists('$(MSBuildUserExtensionsPath)\$(MSBuildToolsVersion)\Imports\Microsoft.Common.props\ImportAfter')" />-->
272 <!--<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Imports\Microsoft.Common.props\ImportAfter\*" Condition="'$(ImportByWildcardAfterMicrosoftCommonProps)' == 'true' and exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Imports\Microsoft.Common.props\ImportAfter')" />-->
273 <!--</ImportGroup>-->
274 <!--
275 Import NuGet.props file.
276 -->
277 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
278 <MSBuildUseVisualStudioDirectoryLayout Condition="'$(MSBuildUseVisualStudioDirectoryLayout)'==''">$([MSBuild]::IsRunningFromVisualStudio())</MSBuildUseVisualStudioDirectoryLayout>
279 <NuGetPropsFile Condition="'$(NuGetPropsFile)'=='' and '$(MSBuildUseVisualStudioDirectoryLayout)'=='true'">$(MSBuildToolsPath32)\..\..\..\Common7\IDE\CommonExtensions\Microsoft\NuGet\NuGet.props</NuGetPropsFile>
280 <NuGetPropsFile Condition="'$(NuGetPropsFile)'==''">$(MSBuildToolsPath)\NuGet.props</NuGetPropsFile>
281 </PropertyGroup>
282 <!--
283============================================================================================================================================
284 <Import Project="$(NuGetPropsFile)" Condition="Exists('$(NuGetPropsFile)')">
285
286C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\NuGet\NuGet.props
287============================================================================================================================================
288-->
289 <!--
290***********************************************************************************************
291NuGet.props
292
293WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
294 created a backup copy. Incorrect changes to this file will make it
295 impossible to load or build your projects from the command-line or the IDE.
296
297Copyright (c) .NET Foundation. All rights reserved.
298***********************************************************************************************
299-->
300 <!--
301 Import 'Directory.Packages.props' which will contain centralized packages for all the projects and solutions under
302 the directory in which the file is present. This is similar to 'Directory.Build.props/targets' logic which is present
303 in the common props/targets which serve a similar purpose.
304 -->
305 <PropertyGroup>
306 <ImportDirectoryPackagesProps Condition="'$(ImportDirectoryPackagesProps)' == ''">true</ImportDirectoryPackagesProps>
307 </PropertyGroup>
308 <!--
309 Determine the path to the 'Directory.Packages.props' file, if the user did not disable $(ImportDirectoryPackagesProps) and
310 they did not already specify an absolute path to use via $(DirectoryPackagesPropsPath)
311 -->
312 <PropertyGroup Condition="'$(ImportDirectoryPackagesProps)' == 'true' and '$(DirectoryPackagesPropsPath)' == ''">
313 <_DirectoryPackagesPropsFile Condition="'$(_DirectoryPackagesPropsFile)' == ''">Directory.Packages.props</_DirectoryPackagesPropsFile>
314 <_DirectoryPackagesPropsBasePath Condition="'$(_DirectoryPackagesPropsBasePath)' == ''">$([MSBuild]::GetDirectoryNameOfFileAbove('$(MSBuildProjectDirectory)', '$(_DirectoryPackagesPropsFile)'))</_DirectoryPackagesPropsBasePath>
315 <DirectoryPackagesPropsPath Condition="'$(_DirectoryPackagesPropsBasePath)' != '' and '$(_DirectoryPackagesPropsFile)' != ''">$([MSBuild]::NormalizePath('$(_DirectoryPackagesPropsBasePath)', '$(_DirectoryPackagesPropsFile)'))</DirectoryPackagesPropsPath>
316 </PropertyGroup>
317 <!--
318============================================================================================================================================
319 <Import Project="$(DirectoryPackagesPropsPath)" Condition="'$(ImportDirectoryPackagesProps)' == 'true' and '$(DirectoryPackagesPropsPath)' != '' and Exists('$(DirectoryPackagesPropsPath)')">
320
321D:\src\wix4\src\test\wix\TestProjects\Directory.Packages.props
322============================================================================================================================================
323-->
324 <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
325 <!--
326 This file prevents the import of WiX standard Directory.Packages.props
327 from the root src directory
328 -->
329 <!--
330============================================================================================================================================
331 </Import>
332
333C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\NuGet\NuGet.props
334============================================================================================================================================
335-->
336 <PropertyGroup Condition="'$(ImportDirectoryPackagesProps)' == 'true' and '$(DirectoryPackagesPropsPath)' != '' and Exists('$(DirectoryPackagesPropsPath)')">
337 <CentralPackageVersionsFileImported>true</CentralPackageVersionsFileImported>
338 </PropertyGroup>
339 <!--
340============================================================================================================================================
341 </Import>
342
343C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Microsoft.Common.props
344============================================================================================================================================
345-->
346 <PropertyGroup Condition=" '$(MSBuildLogVerboseTaskParameters)' != 'true' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
347 <DisableLogTaskParameter_ConvertToAbsolutePath_Path>true</DisableLogTaskParameter_ConvertToAbsolutePath_Path>
348 <DisableLogTaskParameter_FindUnderPath_OutOfPath>true</DisableLogTaskParameter_FindUnderPath_OutOfPath>
349 <DisableLogTaskParameter_RemoveDuplicates_Inputs>true</DisableLogTaskParameter_RemoveDuplicates_Inputs>
350 <DisableLogTaskParameterItemMetadata_ConvertToAbsolutePath_AbsolutePaths>true</DisableLogTaskParameterItemMetadata_ConvertToAbsolutePath_AbsolutePaths>
351 <DisableLogTaskParameterItemMetadata_Copy_CopiedFiles>true</DisableLogTaskParameterItemMetadata_Copy_CopiedFiles>
352 <DisableLogTaskParameterItemMetadata_Copy_DestinationFiles>true</DisableLogTaskParameterItemMetadata_Copy_DestinationFiles>
353 <DisableLogTaskParameterItemMetadata_Copy_SourceFiles>true</DisableLogTaskParameterItemMetadata_Copy_SourceFiles>
354 <DisableLogTaskParameterItemMetadata_FindUnderPath_Files>true</DisableLogTaskParameterItemMetadata_FindUnderPath_Files>
355 <DisableLogTaskParameterItemMetadata_FindUnderPath_InPath>true</DisableLogTaskParameterItemMetadata_FindUnderPath_InPath>
356 <DisableLogTaskParameterItemMetadata_GenerateResource_FilesWritten>true</DisableLogTaskParameterItemMetadata_GenerateResource_FilesWritten>
357 <DisableLogTaskParameterItemMetadata_Hash_ItemsToHash>true</DisableLogTaskParameterItemMetadata_Hash_ItemsToHash>
358 <DisableLogTaskParameterItemMetadata_RemoveDuplicates_Filtered>true</DisableLogTaskParameterItemMetadata_RemoveDuplicates_Filtered>
359 <DisableLogTaskParameterItemMetadata_WriteLinesToFile_Lines>true</DisableLogTaskParameterItemMetadata_WriteLinesToFile_Lines>
360 </PropertyGroup>
361 <!--
362============================================================================================================================================
363 </Import>
364
365C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\Sdk\Sdk.props
366============================================================================================================================================
367-->
368 <!--
369============================================================================================================================================
370 <Import Project="$(MSBuildThisFileDirectory)..\targets\Microsoft.NET.Sdk.props">
371
372C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.props
373============================================================================================================================================
374-->
375 <!--
376***********************************************************************************************
377Microsoft.NET.Sdk.props
378
379WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
380 created a backup copy. Incorrect changes to this file will make it
381 impossible to load or build your projects from the command-line or the IDE.
382
383Copyright (c) .NET Foundation. All rights reserved.
384***********************************************************************************************
385-->
386 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
387 <!-- This property disables the conflict resolution logic from the Microsoft.Packaging.Tools package, which is superceded by the logic here in the SDK -->
388 <DisableHandlePackageFileConflicts>true</DisableHandlePackageFileConflicts>
389 </PropertyGroup>
390 <!-- Default configuration and platform to Debug|AnyCPU-->
391 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
392 <Configurations Condition=" '$(Configurations)' == '' ">Debug;Release</Configurations>
393 <Platforms Condition=" '$(Platforms)' == '' ">AnyCPU</Platforms>
394 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
395 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
396 </PropertyGroup>
397 <!-- User-facing configuration-agnostic defaults -->
398 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
399 <OutputType Condition=" '$(OutputType)' == '' ">Library</OutputType>
400 <FileAlignment Condition=" '$(FileAlignment)' == '' ">512</FileAlignment>
401 <ErrorReport Condition=" '$(ErrorReport)' == '' ">prompt</ErrorReport>
402 <AssemblyName Condition=" '$(AssemblyName)' == '' ">$(MSBuildProjectName)</AssemblyName>
403 <RootNamespace Condition=" '$(RootNamespace)' == '' ">$(MSBuildProjectName.Replace(" ", "_"))</RootNamespace>
404 <Deterministic Condition=" '$(Deterministic)' == '' ">true</Deterministic>
405 </PropertyGroup>
406 <!-- User-facing configuration-specific defaults -->
407 <PropertyGroup Condition=" '$(Configuration)' == 'Debug' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
408 <DebugSymbols Condition=" '$(DebugSymbols)' == '' ">true</DebugSymbols>
409 <Optimize Condition=" '$(Optimize)' == '' ">false</Optimize>
410 </PropertyGroup>
411 <PropertyGroup Condition=" '$(Configuration)' == 'Release' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
412 <Optimize Condition=" '$(Optimize)' == '' ">true</Optimize>
413 </PropertyGroup>
414 <!-- User-facing platform-specific defaults -->
415 <!--
416 NOTE:
417
418 * We cannot compare against $(Platform) directly as that will give VS cause to instantiate extra
419 configurations, for each combination, which leads to performance problems and clutter in the sln
420 in the common AnyCPU-only case.
421
422 * We cannot just set $(PlatformTarget) to $(Platform) here because $(Platform) can be set to anything
423 at the solution level, but there are a fixed set valid $(PlatformTarget) values that can be passed
424 to the compiler. It is up to the user to explicitly set PlatformTarget to non-AnyCPU (if desired)
425 outside the 1:1 defaults below.
426 -->
427 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
428 <_PlatformWithoutConfigurationInference>$(Platform)</_PlatformWithoutConfigurationInference>
429 </PropertyGroup>
430 <PropertyGroup Condition=" '$(_PlatformWithoutConfigurationInference)' == 'x64' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
431 <PlatformTarget Condition=" '$(PlatformTarget)' == '' ">x64</PlatformTarget>
432 </PropertyGroup>
433 <PropertyGroup Condition=" '$(_PlatformWithoutConfigurationInference)' == 'x86' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
434 <PlatformTarget Condition=" '$(PlatformTarget)' == '' ">x86</PlatformTarget>
435 </PropertyGroup>
436 <PropertyGroup Condition=" '$(_PlatformWithoutConfigurationInference)' == 'ARM' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
437 <PlatformTarget Condition=" '$(PlatformTarget)' == '' ">ARM</PlatformTarget>
438 </PropertyGroup>
439 <!-- Default settings for all projects built with this Sdk package -->
440 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
441 <DebugType Condition=" '$(DebugType)' == '' ">portable</DebugType>
442 <!-- This will turn off the base UWP-specific 'ResolveNuGetPackages' target -->
443 <ResolveNuGetPackages>false</ResolveNuGetPackages>
444 <!-- Skip import of Microsoft.NuGet.props and Microsoft.NuGet.targets -->
445 <SkipImportNuGetProps>true</SkipImportNuGetProps>
446 <SkipImportNuGetBuildTargets>true</SkipImportNuGetBuildTargets>
447 <!-- NuGet should always restore .NET SDK projects with "PackageReference" style restore. Setting this property will
448 cause the right thing to happen even if there aren't any PackageReference items in the project, such as when
449 a project targets .NET Framework and doesn't have any direct package dependencies. -->
450 <RestoreProjectStyle>PackageReference</RestoreProjectStyle>
451 <!-- Exclude GAC, registry, output directory from search paths. -->
452 <AssemblySearchPaths Condition=" '$(AssemblySearchPaths)' == '' ">{CandidateAssemblyFiles};{HintPathFromItem};{TargetFrameworkDirectory};{RawFileName}</AssemblySearchPaths>
453 <DesignTimeAssemblySearchPaths Condition=" '$(DesignTimeAssemblySearchPaths)' == '' ">$(AssemblySearchPaths)</DesignTimeAssemblySearchPaths>
454 <AllowUnsafeBlocks Condition="'$(AllowUnsafeBlocks)'==''">false</AllowUnsafeBlocks>
455 <TreatWarningsAsErrors Condition="'$(TreatWarningsAsErrors)'==''">false</TreatWarningsAsErrors>
456 <Prefer32Bit Condition="'$(Prefer32Bit)'==''">false</Prefer32Bit>
457 <SignAssembly Condition="'$(SignAssembly)'==''">false</SignAssembly>
458 <DelaySign Condition="'$(DelaySign)'==''">false</DelaySign>
459 <GeneratePackageOnBuild Condition="'$(GeneratePackageOnBuild)'==''">false</GeneratePackageOnBuild>
460 <PackageRequireLicenseAcceptance Condition="'$(PackageRequireLicenseAcceptance)'==''">false</PackageRequireLicenseAcceptance>
461 <DebugSymbols Condition="'$(DebugSymbols)'==''">false</DebugSymbols>
462 <CheckForOverflowUnderflow Condition="'$(CheckForOverflowUnderflow)'==''">false</CheckForOverflowUnderflow>
463 <AutomaticallyUseReferenceAssemblyPackages Condition="'$(AutomaticallyUseReferenceAssemblyPackages)'==''">true</AutomaticallyUseReferenceAssemblyPackages>
464 <MicrosoftNETFrameworkReferenceAssembliesLatestPackageVersion>1.0.2</MicrosoftNETFrameworkReferenceAssembliesLatestPackageVersion>
465 <CopyConflictingTransitiveContent>false</CopyConflictingTransitiveContent>
466 <MSBuildCopyContentTransitively Condition="'$(MSBuildCopyContentTransitively)' == ''">true</MSBuildCopyContentTransitively>
467 <ResolveAssemblyReferenceOutputUnresolvedAssemblyConflicts Condition="'$(ResolveAssemblyReferenceOutputUnresolvedAssemblyConflicts)' == ''">true</ResolveAssemblyReferenceOutputUnresolvedAssemblyConflicts>
468 <!-- Uncomment this once https://github.com/Microsoft/visualfsharp/issues/3207 gets fixed -->
469 <!-- <WarningsAsErrors>$(WarningsAsErrors);NU1605</WarningsAsErrors> -->
470 </PropertyGroup>
471 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
472 <!-- Path to project that the .NET CLI will build in order to generate deps.json files for .NET CLI tools -->
473 <ToolDepsJsonGeneratorProject>$(MSBuildThisFileDirectory)GenerateDeps\GenerateDeps.proj</ToolDepsJsonGeneratorProject>
474 </PropertyGroup>
475 <!-- Default item includes (globs and implicit references) -->
476 <!--
477============================================================================================================================================
478 <Import Project="Microsoft.NET.Sdk.DefaultItems.props">
479
480C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.DefaultItems.props
481============================================================================================================================================
482-->
483 <!--
484***********************************************************************************************
485Microsoft.NET.Sdk.DefaultItems.props
486
487WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
488 created a backup copy. Incorrect changes to this file will make it
489 impossible to load or build your projects from the command-line or the IDE.
490
491Copyright (c) .NET Foundation. All rights reserved.
492***********************************************************************************************
493-->
494 <PropertyGroup Condition="'$(NETCoreSdkBundledVersionsProps)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
495 <NETCoreSdkBundledVersionsProps>$(MSBuildThisFileDirectory)..\..\..\Microsoft.NETCoreSdk.BundledVersions.props</NETCoreSdkBundledVersionsProps>
496 </PropertyGroup>
497 <!--
498============================================================================================================================================
499 <Import Project="$(NETCoreSdkBundledVersionsProps)" Condition="Exists('$(NETCoreSdkBundledVersionsProps)')">
500
501C:\Program Files\dotnet\sdk\6.0.100\Microsoft.NETCoreSdk.BundledVersions.props
502============================================================================================================================================
503-->
504 <!--
505***********************************************************************************************
506Microsoft.NETCoreSdk.BundledVersions.props
507
508WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
509 created a backup copy. Incorrect changes to this file will make it
510 impossible to load or build your projects from the command-line or the IDE.
511
512Copyright (c) .NET Foundation. All rights reserved.
513***********************************************************************************************
514-->
515 <PropertyGroup>
516 <NetCoreRoot Condition="'$(NetCoreRoot)' == ''">$([MSBuild]::NormalizePath('$(MSBuildThisFileDirectory)..\..\'))</NetCoreRoot>
517 <NetCoreTargetingPackRoot Condition="'$(NetCoreTargetingPackRoot)' == ''">$([MSBuild]::EnsureTrailingSlash('$(NetCoreRoot)'))packs</NetCoreTargetingPackRoot>
518 <NETCoreAppMaximumVersion>6.0</NETCoreAppMaximumVersion>
519 <BundledNETCoreAppTargetFrameworkVersion>6.0</BundledNETCoreAppTargetFrameworkVersion>
520 <BundledNETCoreAppPackageVersion>6.0.0</BundledNETCoreAppPackageVersion>
521 <BundledNETStandardTargetFrameworkVersion>2.1</BundledNETStandardTargetFrameworkVersion>
522 <BundledNETStandardPackageVersion>2.1.0</BundledNETStandardPackageVersion>
523 <BundledNETCorePlatformsPackageVersion>6.0.0</BundledNETCorePlatformsPackageVersion>
524 <BundledRuntimeIdentifierGraphFile>$(MSBuildThisFileDirectory)RuntimeIdentifierGraph.json</BundledRuntimeIdentifierGraphFile>
525 <NETCoreSdkVersion>6.0.100</NETCoreSdkVersion>
526 <NETCoreSdkRuntimeIdentifier>win-x64</NETCoreSdkRuntimeIdentifier>
527 <NETCoreSdkPortableRuntimeIdentifier>win-x64</NETCoreSdkPortableRuntimeIdentifier>
528 <_NETCoreSdkIsPreview>false</_NETCoreSdkIsPreview>
529 </PropertyGroup>
530 <ItemGroup>
531 <ImplicitPackageReferenceVersion Include="Microsoft.NETCore.App" TargetFrameworkVersion="1.0" DefaultVersion="1.0.5" LatestVersion="1.0.16" />
532 <ImplicitPackageReferenceVersion Include="Microsoft.NETCore.App" TargetFrameworkVersion="1.1" DefaultVersion="1.1.2" LatestVersion="1.1.13" />
533 <ImplicitPackageReferenceVersion Include="Microsoft.NETCore.App" TargetFrameworkVersion="2.0" DefaultVersion="2.0.0" LatestVersion="2.0.9" />
534 <ImplicitPackageReferenceVersion Include="Microsoft.NETCore.App" TargetFrameworkVersion="2.1" DefaultVersion="2.1.0" LatestVersion="2.1.30" />
535 <ImplicitPackageReferenceVersion Include="Microsoft.NETCore.App" TargetFrameworkVersion="2.2" DefaultVersion="2.2.0" LatestVersion="2.2.8" />
536 <ImplicitPackageReferenceVersion Include="Microsoft.AspNetCore.App" TargetFrameworkVersion="2.1" DefaultVersion="2.1.1" LatestVersion="2.1.30" />
537 <ImplicitPackageReferenceVersion Include="Microsoft.AspNetCore.All" TargetFrameworkVersion="2.1" DefaultVersion="2.1.1" LatestVersion="2.1.30" />
538 <ImplicitPackageReferenceVersion Include="Microsoft.AspNetCore.App" TargetFrameworkVersion="2.2" DefaultVersion="2.2.0" LatestVersion="2.2.8" />
539 <ImplicitPackageReferenceVersion Include="Microsoft.AspNetCore.All" TargetFrameworkVersion="2.2" DefaultVersion="2.2.0" LatestVersion="2.2.8" />
540 <!-- .NET 6.0 -->
541 <KnownFrameworkReference Include="Microsoft.NETCore.App" TargetFramework="net6.0" RuntimeFrameworkName="Microsoft.NETCore.App" DefaultRuntimeFrameworkVersion="6.0.0" LatestRuntimeFrameworkVersion="6.0.0" TargetingPackName="Microsoft.NETCore.App.Ref" TargetingPackVersion="6.0.0" RuntimePackNamePatterns="Microsoft.NETCore.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="linux-arm;linux-arm64;linux-musl-arm64;linux-musl-x64;linux-x64;osx-x64;rhel.6-x64;tizen.4.0.0-armel;tizen.5.0.0-armel;win-arm;win-arm64;win-x64;win-x86;linux-musl-arm;osx-arm64;maccatalyst-x64;maccatalyst-arm64;linux-s390x" />
542 <KnownAppHostPack Include="Microsoft.NETCore.App" TargetFramework="net6.0" AppHostPackNamePattern="Microsoft.NETCore.App.Host.**RID**" AppHostPackVersion="6.0.0" AppHostRuntimeIdentifiers="linux-arm;linux-arm64;linux-musl-arm64;linux-musl-x64;linux-x64;osx-x64;rhel.6-x64;tizen.4.0.0-armel;tizen.5.0.0-armel;win-arm;win-arm64;win-x64;win-x86;linux-musl-arm;osx-arm64;linux-s390x" />
543 <KnownCrossgen2Pack Include="Microsoft.NETCore.App.Crossgen2" TargetFramework="net6.0" Crossgen2PackNamePattern="Microsoft.NETCore.App.Crossgen2.**RID**" Crossgen2PackVersion="6.0.0" Crossgen2RuntimeIdentifiers="linux-musl-x64;linux-x64;win-x64;linux-arm;linux-arm64;linux-musl-arm;linux-musl-arm64;osx-arm64;osx-x64;win-arm;win-arm64;win-x86" />
544 <KnownRuntimePack Include="Microsoft.NETCore.App" TargetFramework="net6.0" RuntimeFrameworkName="Microsoft.NETCore.App" LatestRuntimeFrameworkVersion="6.0.0" RuntimePackNamePatterns="Microsoft.NETCore.App.Runtime.Mono.**RID**" RuntimePackRuntimeIdentifiers="linux-arm;linux-arm64;linux-musl-arm64;linux-musl-x64;linux-x64;osx-x64;rhel.6-x64;win-arm;win-arm64;win-x64;win-x86;linux-musl-arm;osx-arm64;maccatalyst-x64;maccatalyst-arm64;linux-s390x;browser-wasm;ios-arm64;ios-arm;iossimulator-arm64;iossimulator-x64;iossimulator-x86;tvos-arm64;tvossimulator-arm64;tvossimulator-x64;android-arm64;android-arm;android-x64;android-x86" RuntimePackLabels="Mono" />
545 <KnownFrameworkReference Include="Microsoft.WindowsDesktop.App" TargetFramework="net6.0" RuntimeFrameworkName="Microsoft.WindowsDesktop.App" DefaultRuntimeFrameworkVersion="6.0.0" LatestRuntimeFrameworkVersion="6.0.0" TargetingPackName="Microsoft.WindowsDesktop.App.Ref" TargetingPackVersion="6.0.0" RuntimePackNamePatterns="Microsoft.WindowsDesktop.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="win-x64;win-x86;win-arm64" IsWindowsOnly="true" />
546 <KnownFrameworkReference Include="Microsoft.WindowsDesktop.App.WPF" TargetFramework="net6.0" RuntimeFrameworkName="Microsoft.WindowsDesktop.App" DefaultRuntimeFrameworkVersion="6.0.0" LatestRuntimeFrameworkVersion="6.0.0" TargetingPackName="Microsoft.WindowsDesktop.App.Ref" TargetingPackVersion="6.0.0" RuntimePackNamePatterns="Microsoft.WindowsDesktop.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="win-x64;win-x86;win-arm64" IsWindowsOnly="true" Profile="WPF" />
547 <KnownFrameworkReference Include="Microsoft.WindowsDesktop.App.WindowsForms" TargetFramework="net6.0" RuntimeFrameworkName="Microsoft.WindowsDesktop.App" DefaultRuntimeFrameworkVersion="6.0.0" LatestRuntimeFrameworkVersion="6.0.0" TargetingPackName="Microsoft.WindowsDesktop.App.Ref" TargetingPackVersion="6.0.0" RuntimePackNamePatterns="Microsoft.WindowsDesktop.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="win-x64;win-x86;win-arm64" IsWindowsOnly="true" Profile="WindowsForms" />
548 <KnownFrameworkReference Include="Microsoft.AspNetCore.App" TargetFramework="net6.0" RuntimeFrameworkName="Microsoft.AspNetCore.App" DefaultRuntimeFrameworkVersion="6.0.0" LatestRuntimeFrameworkVersion="6.0.0" TargetingPackName="Microsoft.AspNetCore.App.Ref" TargetingPackVersion="6.0.0" RuntimePackNamePatterns="Microsoft.AspNetCore.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="win-x64;win-x86;win-arm;osx-x64;linux-musl-x64;linux-musl-arm64;linux-x64;linux-arm;linux-arm64;linux-musl-arm;win-arm64;osx-arm64;linux-s390x" />
549 <KnownFrameworkReference Include="Microsoft.Windows.SDK.NET.Ref" TargetFramework="net6.0-windows10.0.17763.0" RuntimeFrameworkName="Microsoft.Windows.SDK.NET.Ref" DefaultRuntimeFrameworkVersion="10.0.17763.21" LatestRuntimeFrameworkVersion="10.0.17763.21" TargetingPackName="Microsoft.Windows.SDK.NET.Ref" TargetingPackVersion="10.0.17763.21" RuntimePackAlwaysCopyLocal="true" RuntimePackNamePatterns="Microsoft.Windows.SDK.NET.Ref" RuntimePackRuntimeIdentifiers="any" IsWindowsOnly="true" />
550 <KnownFrameworkReference Include="Microsoft.Windows.SDK.NET.Ref" TargetFramework="net6.0-windows10.0.18362.0" RuntimeFrameworkName="Microsoft.Windows.SDK.NET.Ref" DefaultRuntimeFrameworkVersion="10.0.18362.21" LatestRuntimeFrameworkVersion="10.0.18362.21" TargetingPackName="Microsoft.Windows.SDK.NET.Ref" TargetingPackVersion="10.0.18362.21" RuntimePackAlwaysCopyLocal="true" RuntimePackNamePatterns="Microsoft.Windows.SDK.NET.Ref" RuntimePackRuntimeIdentifiers="any" IsWindowsOnly="true" />
551 <KnownFrameworkReference Include="Microsoft.Windows.SDK.NET.Ref" TargetFramework="net6.0-windows10.0.19041.0" RuntimeFrameworkName="Microsoft.Windows.SDK.NET.Ref" DefaultRuntimeFrameworkVersion="10.0.19041.21" LatestRuntimeFrameworkVersion="10.0.19041.21" TargetingPackName="Microsoft.Windows.SDK.NET.Ref" TargetingPackVersion="10.0.19041.21" RuntimePackAlwaysCopyLocal="true" RuntimePackNamePatterns="Microsoft.Windows.SDK.NET.Ref" RuntimePackRuntimeIdentifiers="any" IsWindowsOnly="true" />
552 <!-- .NET 5.0 -->
553 <KnownFrameworkReference Include="Microsoft.NETCore.App" TargetFramework="net5.0" RuntimeFrameworkName="Microsoft.NETCore.App" DefaultRuntimeFrameworkVersion="5.0.0" LatestRuntimeFrameworkVersion="5.0.12" TargetingPackName="Microsoft.NETCore.App.Ref" TargetingPackVersion="5.0.0" RuntimePackNamePatterns="Microsoft.NETCore.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="linux-arm;linux-arm64;linux-musl-arm64;linux-musl-x64;linux-x64;osx-x64;rhel.6-x64;tizen.4.0.0-armel;tizen.5.0.0-armel;win-arm;win-arm64;win-x64;win-x86;linux-musl-arm;browser-wasm" IsTrimmable="true" />
554 <KnownAppHostPack Include="Microsoft.NETCore.App" TargetFramework="net5.0" AppHostPackNamePattern="Microsoft.NETCore.App.Host.**RID**" AppHostPackVersion="5.0.12" AppHostRuntimeIdentifiers="linux-arm;linux-arm64;linux-musl-arm64;linux-musl-x64;linux-x64;osx-x64;rhel.6-x64;tizen.4.0.0-armel;tizen.5.0.0-armel;win-arm;win-arm64;win-x64;win-x86;linux-musl-arm" />
555 <KnownCrossgen2Pack Include="Microsoft.NETCore.App.Crossgen2" TargetFramework="net5.0" Crossgen2PackNamePattern="Microsoft.NETCore.App.Crossgen2.**RID**" Crossgen2PackVersion="5.0.12" Crossgen2RuntimeIdentifiers="linux-musl-x64;linux-x64;win-x64" />
556 <KnownFrameworkReference Include="Microsoft.WindowsDesktop.App" TargetFramework="net5.0" RuntimeFrameworkName="Microsoft.WindowsDesktop.App" DefaultRuntimeFrameworkVersion="5.0.0" LatestRuntimeFrameworkVersion="5.0.12" TargetingPackName="Microsoft.WindowsDesktop.App.Ref" TargetingPackVersion="5.0.0" RuntimePackNamePatterns="Microsoft.WindowsDesktop.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="win-x64;win-x86" IsWindowsOnly="true" />
557 <KnownFrameworkReference Include="Microsoft.WindowsDesktop.App.WPF" TargetFramework="net5.0" RuntimeFrameworkName="Microsoft.WindowsDesktop.App" DefaultRuntimeFrameworkVersion="5.0.0" LatestRuntimeFrameworkVersion="5.0.12" TargetingPackName="Microsoft.WindowsDesktop.App.Ref" TargetingPackVersion="5.0.0" RuntimePackNamePatterns="Microsoft.WindowsDesktop.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="win-x64;win-x86" IsWindowsOnly="true" Profile="WPF" />
558 <KnownFrameworkReference Include="Microsoft.WindowsDesktop.App.WindowsForms" TargetFramework="net5.0" RuntimeFrameworkName="Microsoft.WindowsDesktop.App" DefaultRuntimeFrameworkVersion="5.0.0" LatestRuntimeFrameworkVersion="5.0.12" TargetingPackName="Microsoft.WindowsDesktop.App.Ref" TargetingPackVersion="5.0.0" RuntimePackNamePatterns="Microsoft.WindowsDesktop.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="win-x64;win-x86" IsWindowsOnly="true" Profile="WindowsForms" />
559 <KnownFrameworkReference Include="Microsoft.AspNetCore.App" TargetFramework="net5.0" RuntimeFrameworkName="Microsoft.AspNetCore.App" DefaultRuntimeFrameworkVersion="5.0.0" LatestRuntimeFrameworkVersion="5.0.12" TargetingPackName="Microsoft.AspNetCore.App.Ref" TargetingPackVersion="5.0.0" RuntimePackNamePatterns="Microsoft.AspNetCore.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="win-x64;win-x86;win-arm;osx-x64;linux-musl-x64;linux-musl-arm64;linux-x64;linux-arm;linux-arm64;linux-musl-arm;win-arm64" />
560 <KnownFrameworkReference Include="Microsoft.Windows.SDK.NET.Ref" TargetFramework="net5.0-windows10.0.17763.0" RuntimeFrameworkName="Microsoft.Windows.SDK.NET.Ref" DefaultRuntimeFrameworkVersion="10.0.17763.21" LatestRuntimeFrameworkVersion="10.0.17763.21" TargetingPackName="Microsoft.Windows.SDK.NET.Ref" TargetingPackVersion="10.0.17763.21" RuntimePackAlwaysCopyLocal="true" RuntimePackNamePatterns="Microsoft.Windows.SDK.NET.Ref" RuntimePackRuntimeIdentifiers="any" IsWindowsOnly="true" />
561 <KnownFrameworkReference Include="Microsoft.Windows.SDK.NET.Ref" TargetFramework="net5.0-windows10.0.18362.0" RuntimeFrameworkName="Microsoft.Windows.SDK.NET.Ref" DefaultRuntimeFrameworkVersion="10.0.18362.21" LatestRuntimeFrameworkVersion="10.0.18362.21" TargetingPackName="Microsoft.Windows.SDK.NET.Ref" TargetingPackVersion="10.0.18362.21" RuntimePackAlwaysCopyLocal="true" RuntimePackNamePatterns="Microsoft.Windows.SDK.NET.Ref" RuntimePackRuntimeIdentifiers="any" IsWindowsOnly="true" />
562 <KnownFrameworkReference Include="Microsoft.Windows.SDK.NET.Ref" TargetFramework="net5.0-windows10.0.19041.0" RuntimeFrameworkName="Microsoft.Windows.SDK.NET.Ref" DefaultRuntimeFrameworkVersion="10.0.19041.21" LatestRuntimeFrameworkVersion="10.0.19041.21" TargetingPackName="Microsoft.Windows.SDK.NET.Ref" TargetingPackVersion="10.0.19041.21" RuntimePackAlwaysCopyLocal="true" RuntimePackNamePatterns="Microsoft.Windows.SDK.NET.Ref" RuntimePackRuntimeIdentifiers="any" IsWindowsOnly="true" />
563 <!-- .NET Core 3.1 -->
564 <KnownFrameworkReference Include="Microsoft.NETCore.App" TargetFramework="netcoreapp3.1" RuntimeFrameworkName="Microsoft.NETCore.App" DefaultRuntimeFrameworkVersion="3.1.0" LatestRuntimeFrameworkVersion="3.1.21" TargetingPackName="Microsoft.NETCore.App.Ref" TargetingPackVersion="3.1.0" RuntimePackNamePatterns="Microsoft.NETCore.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="linux-arm;linux-arm64;linux-musl-arm64;linux-musl-x64;linux-x64;osx-x64;rhel.6-x64;tizen.4.0.0-armel;tizen.5.0.0-armel;win-arm;win-arm64;win-x64;win-x86" IsTrimmable="true" />
565 <KnownAppHostPack Include="Microsoft.NETCore.App" TargetFramework="netcoreapp3.1" AppHostPackNamePattern="Microsoft.NETCore.App.Host.**RID**" AppHostPackVersion="3.1.21" AppHostRuntimeIdentifiers="linux-arm;linux-arm64;linux-musl-arm64;linux-musl-x64;linux-x64;osx-x64;rhel.6-x64;tizen.4.0.0-armel;tizen.5.0.0-armel;win-arm;win-arm64;win-x64;win-x86" />
566 <KnownFrameworkReference Include="Microsoft.WindowsDesktop.App" TargetFramework="netcoreapp3.1" RuntimeFrameworkName="Microsoft.WindowsDesktop.App" DefaultRuntimeFrameworkVersion="3.1.0" LatestRuntimeFrameworkVersion="3.1.21" TargetingPackName="Microsoft.WindowsDesktop.App.Ref" TargetingPackVersion="3.1.0" RuntimePackNamePatterns="Microsoft.WindowsDesktop.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="win-x64;win-x86" IsWindowsOnly="true" />
567 <KnownFrameworkReference Include="Microsoft.WindowsDesktop.App.WPF" TargetFramework="netcoreapp3.1" RuntimeFrameworkName="Microsoft.WindowsDesktop.App" DefaultRuntimeFrameworkVersion="3.1.0" LatestRuntimeFrameworkVersion="3.1.21" TargetingPackName="Microsoft.WindowsDesktop.App.Ref" TargetingPackVersion="3.1.0" RuntimePackNamePatterns="Microsoft.WindowsDesktop.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="win-x64;win-x86" IsWindowsOnly="true" Profile="WPF" />
568 <KnownFrameworkReference Include="Microsoft.WindowsDesktop.App.WindowsForms" TargetFramework="netcoreapp3.1" RuntimeFrameworkName="Microsoft.WindowsDesktop.App" DefaultRuntimeFrameworkVersion="3.1.0" LatestRuntimeFrameworkVersion="3.1.21" TargetingPackName="Microsoft.WindowsDesktop.App.Ref" TargetingPackVersion="3.1.0" RuntimePackNamePatterns="Microsoft.WindowsDesktop.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="win-x64;win-x86" IsWindowsOnly="true" Profile="WindowsForms" />
569 <KnownFrameworkReference Include="Microsoft.AspNetCore.App" TargetFramework="netcoreapp3.1" RuntimeFrameworkName="Microsoft.AspNetCore.App" DefaultRuntimeFrameworkVersion="3.1.0" LatestRuntimeFrameworkVersion="3.1.21" TargetingPackName="Microsoft.AspNetCore.App.Ref" TargetingPackVersion="3.1.10" RuntimePackNamePatterns="Microsoft.AspNetCore.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="win-x64;win-x86;win-arm;osx-x64;linux-musl-x64;linux-musl-arm64;linux-x64;linux-arm;linux-arm64" />
570 <!-- .NET Core 3.0 -->
571 <KnownFrameworkReference Include="Microsoft.NETCore.App" TargetFramework="netcoreapp3.0" RuntimeFrameworkName="Microsoft.NETCore.App" DefaultRuntimeFrameworkVersion="3.0.0" LatestRuntimeFrameworkVersion="3.0.3" TargetingPackName="Microsoft.NETCore.App.Ref" TargetingPackVersion="3.0.0" RuntimePackNamePatterns="Microsoft.NETCore.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="linux-arm;linux-arm64;linux-musl-arm64;linux-musl-x64;linux-x64;osx-x64;rhel.6-x64;tizen.4.0.0-armel;tizen.5.0.0-armel;win-arm;win-arm64;win-x64;win-x86" IsTrimmable="true" />
572 <KnownAppHostPack Include="Microsoft.NETCore.App" TargetFramework="netcoreapp3.0" AppHostPackNamePattern="Microsoft.NETCore.App.Host.**RID**" AppHostPackVersion="3.0.3" AppHostRuntimeIdentifiers="linux-arm;linux-arm64;linux-musl-arm64;linux-musl-x64;linux-x64;osx-x64;rhel.6-x64;tizen.4.0.0-armel;tizen.5.0.0-armel;win-arm;win-arm64;win-x64;win-x86" />
573 <KnownFrameworkReference Include="Microsoft.WindowsDesktop.App" TargetFramework="netcoreapp3.0" RuntimeFrameworkName="Microsoft.WindowsDesktop.App" DefaultRuntimeFrameworkVersion="3.0.0" LatestRuntimeFrameworkVersion="3.0.3" TargetingPackName="Microsoft.WindowsDesktop.App.Ref" TargetingPackVersion="3.0.0" RuntimePackNamePatterns="Microsoft.WindowsDesktop.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="win-x64;win-x86" IsWindowsOnly="true" />
574 <KnownFrameworkReference Include="Microsoft.WindowsDesktop.App.WPF" TargetFramework="netcoreapp3.0" RuntimeFrameworkName="Microsoft.WindowsDesktop.App" DefaultRuntimeFrameworkVersion="3.0.0" LatestRuntimeFrameworkVersion="3.0.3" TargetingPackName="Microsoft.WindowsDesktop.App.Ref" TargetingPackVersion="3.0.0" RuntimePackNamePatterns="Microsoft.WindowsDesktop.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="win-x64;win-x86" IsWindowsOnly="true" Profile="WPF" />
575 <KnownFrameworkReference Include="Microsoft.WindowsDesktop.App.WindowsForms" TargetFramework="netcoreapp3.0" RuntimeFrameworkName="Microsoft.WindowsDesktop.App" DefaultRuntimeFrameworkVersion="3.0.0" LatestRuntimeFrameworkVersion="3.0.3" TargetingPackName="Microsoft.WindowsDesktop.App.Ref" TargetingPackVersion="3.0.0" RuntimePackNamePatterns="Microsoft.WindowsDesktop.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="win-x64;win-x86" IsWindowsOnly="true" Profile="WindowsForms" />
576 <KnownFrameworkReference Include="Microsoft.AspNetCore.App" TargetFramework="netcoreapp3.0" RuntimeFrameworkName="Microsoft.AspNetCore.App" DefaultRuntimeFrameworkVersion="3.0.0" LatestRuntimeFrameworkVersion="3.0.3" TargetingPackName="Microsoft.AspNetCore.App.Ref" TargetingPackVersion="3.0.1" RuntimePackNamePatterns="Microsoft.AspNetCore.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="win-x64;win-x86;win-arm;osx-x64;linux-musl-x64;linux-musl-arm64;linux-x64;linux-arm;linux-arm64" />
577 <KnownFrameworkReference Include="NETStandard.Library" TargetFramework="netstandard2.1" TargetingPackName="NETStandard.Library.Ref" TargetingPackVersion="2.1.0" />
578 <!-- Supported Windows versions -->
579 <WindowsSdkSupportedTargetPlatformVersion Include="10.0.22000.0" WindowsSdkPackageVersion="10.0.22000.21" MinimumNETVersion="5.0" />
580 <WindowsSdkSupportedTargetPlatformVersion Include="10.0.20348.0" WindowsSdkPackageVersion="10.0.20348.21" MinimumNETVersion="5.0" />
581 <WindowsSdkSupportedTargetPlatformVersion Include="10.0.19041.0" WindowsSdkPackageVersion="10.0.19041.21" MinimumNETVersion="5.0" />
582 <WindowsSdkSupportedTargetPlatformVersion Include="10.0.18362.0" WindowsSdkPackageVersion="10.0.18362.21" MinimumNETVersion="5.0" />
583 <WindowsSdkSupportedTargetPlatformVersion Include="10.0.17763.0" WindowsSdkPackageVersion="10.0.17763.21" MinimumNETVersion="5.0" />
584 <WindowsSdkSupportedTargetPlatformVersion Include="8.0" />
585 <WindowsSdkSupportedTargetPlatformVersion Include="7.0" />
586 </ItemGroup>
587 <!--
588============================================================================================================================================
589 </Import>
590
591C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.DefaultItems.props
592============================================================================================================================================
593-->
594 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
595 <!-- Set RuntimeIdentifier graph for NuGet (this needs to be after NETCoreSdkBundledVersionsProps is imported, as that's where
596 BundledRuntimeIdentifierGraphFile is set. -->
597 <RuntimeIdentifierGraphPath Condition="'$(RuntimeIdentifierGraphPath)' == ''">$(BundledRuntimeIdentifierGraphFile)</RuntimeIdentifierGraphPath>
598 </PropertyGroup>
599 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
600 <!-- Disable web SDK implicit package versions for ASP.NET packages, since the .NET SDK now handles that -->
601 <EnableWebSdkImplicitPackageVersions>false</EnableWebSdkImplicitPackageVersions>
602 </PropertyGroup>
603 <ItemGroup Condition=" '$(EnableDefaultItems)' == 'true' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
604 <Compile Include="**/*$(DefaultLanguageSourceExtension)" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" Condition=" '$(EnableDefaultCompileItems)' == 'true' " />
605 <EmbeddedResource Include="**/*.resx" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" Condition=" '$(EnableDefaultEmbeddedResourceItems)' == 'true' " />
606 </ItemGroup>
607 <ItemGroup Condition=" '$(EnableDefaultItems)' == 'true' And '$(EnableDefaultNoneItems)' == 'true' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
608 <None Include="**/*" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" />
609 <None Remove="**/*$(DefaultLanguageSourceExtension)" />
610 <None Remove="**/*.resx" />
611 </ItemGroup>
612 <!-- Automatically reference NETStandard.Library or Microsoft.NETCore.App package if targeting the corresponding target framework.
613 We can refer here in the .props file to properties set in the .targets files because items and their conditions are
614 evaluated in the second pass of evaluation, after all properties have been evaluated. -->
615 <ItemGroup Condition=" '$(DisableImplicitFrameworkReferences)' != 'true' and '$(TargetFrameworkIdentifier)' == '.NETStandard' And '$(_TargetFrameworkVersionWithoutV)' &lt; '2.1'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
616 <PackageReference Include="NETStandard.Library" Version="$(NETStandardImplicitPackageVersion)" IsImplicitlyDefined="true" />
617 <!-- If targeting .NET Standard 2.0 or higher, then don't include a dependency on NETStandard.Library in the package produced by pack -->
618 <PackageReference Update="NETStandard.Library" Condition=" ('$(_TargetFrameworkVersionWithoutV)' != '') And ('$(_TargetFrameworkVersionWithoutV)' &gt;= '2.0') " PrivateAssets="All" Publish="true" />
619 </ItemGroup>
620 <ItemGroup Condition=" '$(DisableImplicitFrameworkReferences)' != 'true' and '$(TargetFrameworkIdentifier)' == '.NETStandard' And '$(_TargetFrameworkVersionWithoutV)' &gt;= '2.1'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
621 <FrameworkReference Include="NETStandard.Library" IsImplicitlyDefined="true" Pack="false" PrivateAssets="All" />
622 </ItemGroup>
623 <ItemGroup Condition=" '$(DisableImplicitFrameworkReferences)' != 'true' and '$(TargetFrameworkIdentifier)' == '.NETCoreApp'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
624 <!-- Use implicit PackageReference for Microsoft.NETCore.App on versions prior to 3.0. For 3.0 or higher, use
625 an implicit FrameworkReference -->
626 <PackageReference Include="Microsoft.NETCore.App" IsImplicitlyDefined="true" Condition="('$(_TargetFrameworkVersionWithoutV)' != '') And ('$(_TargetFrameworkVersionWithoutV)' &lt; '3.0')" />
627 <!-- For targeting .NET Core 2.0 or higher, don't include a dependency on Microsoft.NETCore.App in the package produced by pack.
628 Packing an DotnetCliTool should include the Microsoft.NETCore.App package dependency. -->
629 <PackageReference Update="Microsoft.NETCore.App" Condition="('$(_TargetFrameworkVersionWithoutV)' != '') And ('$(_TargetFrameworkVersionWithoutV)' &gt;= '2.0') And ('$(PackageType)' != 'DotnetCliTool')" PrivateAssets="All" Publish="true" />
630 <FrameworkReference Include="Microsoft.NETCore.App" IsImplicitlyDefined="true" Pack="false" PrivateAssets="All" Condition="('$(_TargetFrameworkVersionWithoutV)' != '') And ('$(_TargetFrameworkVersionWithoutV)' &gt;= '3.0')" />
631 <!-- Allow opt-in to Mono runtime pack for .NET 6.0 or higher -->
632 <FrameworkReference Update="Microsoft.NETCore.App" RuntimePackLabels="Mono" Condition="'$(UseMonoRuntime)' == 'true' And ('$(_TargetFrameworkVersionWithoutV)' != '') And ('$(_TargetFrameworkVersionWithoutV)' &gt;= '6.0')" />
633 </ItemGroup>
634 <!--
635============================================================================================================================================
636 </Import>
637
638C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.props
639============================================================================================================================================
640-->
641 <!-- Put workload resolution behind a feature flag. It can be enabled either by setting the MSBuildEnableWorkloadResolver environment variable to true, or by
642 putting an EnableWorkloadResolver.sentinel file beside the MSBuild SDK resolver DLL -->
643 <PropertyGroup Condition="'$(MSBuildEnableWorkloadResolver)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
644 <__DisableWorkloadResolverSentinelPath Condition="'$(MSBuildRuntimeType)' == 'Core'">$(MSBuildBinPath)\DisableWorkloadResolver.sentinel</__DisableWorkloadResolverSentinelPath>
645 <__DisableWorkloadResolverSentinelPath Condition="'$(MSBuildRuntimeType)' != 'Core'">$(MSBuildBinPath)\SdkResolvers\Microsoft.DotNet.MSBuildSdkResolver\DisableWorkloadResolver.sentinel</__DisableWorkloadResolverSentinelPath>
646 <MSBuildEnableWorkloadResolver Condition="!Exists('$(__DisableWorkloadResolverSentinelPath)')">true</MSBuildEnableWorkloadResolver>
647 </PropertyGroup>
648 <!-- Import workload props -->
649 <!--
650============================================================================================================================================
651 <Import Project="Microsoft.NET.Sdk.ImportWorkloads.props" Condition="'$(MSBuildEnableWorkloadResolver)' == 'true'">
652
653C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.ImportWorkloads.props
654============================================================================================================================================
655-->
656 <!--
657***********************************************************************************************
658Microsoft.NET.Sdk.ImportWorkloads.props
659
660WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
661 created a backup copy. Incorrect changes to this file will make it
662 impossible to load or build your projects from the command-line or the IDE.
663
664Copyright (c) .NET Foundation. All rights reserved.
665***********************************************************************************************
666-->
667 <!-- Import workload props -->
668 <!--<Import Project="AutoImport.props" Sdk="Microsoft.NET.SDK.WorkloadAutoImportPropsLocator" />-->
669 <!--
670============================================================================================================================================
671 </Import>
672
673C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.props
674============================================================================================================================================
675-->
676 <!-- List of supported .NET Core and .NET Standard TFMs -->
677 <!--
678============================================================================================================================================
679 <Import Project="Microsoft.NET.SupportedTargetFrameworks.props">
680
681C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.SupportedTargetFrameworks.props
682============================================================================================================================================
683-->
684 <!--
685***********************************************************************************************
686Microsoft.NET.SupportedTargetFrameworks.targets
687
688WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
689 created a backup copy. Incorrect changes to this file will make it
690 impossible to load or build your projects from the command-line or the IDE.
691
692Copyright (c) .NET Foundation. All rights reserved.
693***********************************************************************************************
694-->
695 <!-- This file contains a list of the TFMs that are supported by this SDK for .NET Core, .NET Standard, and .NET Framework.
696 This is used by VS to show the list of frameworks to which projects can be retargeted. -->
697 <!-- .NET Core App -->
698 <ItemGroup>
699 <SupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v1.0" DisplayName=".NET Core 1.0" Alias="netcoreapp1.0" />
700 <SupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v1.1" DisplayName=".NET Core 1.1" Alias="netcoreapp1.1" />
701 <SupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v2.0" DisplayName=".NET Core 2.0" Alias="netcoreapp2.0" />
702 <SupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v2.1" DisplayName=".NET Core 2.1" Alias="netcoreapp2.1" />
703 <SupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v2.2" DisplayName=".NET Core 2.2" Alias="netcoreapp2.2" />
704 <SupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v3.0" DisplayName=".NET Core 3.0" Alias="netcoreapp3.0" />
705 <SupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v3.1" DisplayName=".NET Core 3.1" Alias="netcoreapp3.1" />
706 <SupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v5.0" DisplayName=".NET 5.0" Alias="net5.0" />
707 <SupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v6.0" DisplayName=".NET 6.0" Alias="net6.0" Condition="$([MSBuild]::VersionGreaterThanOrEquals($(MSBuildVersion), '17.0'))" />
708 </ItemGroup>
709 <!-- .NET Standard -->
710 <ItemGroup>
711 <SupportedNETStandardTargetFramework Include=".NETStandard,Version=v1.0" DisplayName=".NET Standard 1.0" Alias="netstandard1.0" />
712 <SupportedNETStandardTargetFramework Include=".NETStandard,Version=v1.1" DisplayName=".NET Standard 1.1" Alias="netstandard1.1" />
713 <SupportedNETStandardTargetFramework Include=".NETStandard,Version=v1.2" DisplayName=".NET Standard 1.2" Alias="netstandard1.2" />
714 <SupportedNETStandardTargetFramework Include=".NETStandard,Version=v1.3" DisplayName=".NET Standard 1.3" Alias="netstandard1.3" />
715 <SupportedNETStandardTargetFramework Include=".NETStandard,Version=v1.4" DisplayName=".NET Standard 1.4" Alias="netstandard1.4" />
716 <SupportedNETStandardTargetFramework Include=".NETStandard,Version=v1.5" DisplayName=".NET Standard 1.5" Alias="netstandard1.5" />
717 <SupportedNETStandardTargetFramework Include=".NETStandard,Version=v1.6" DisplayName=".NET Standard 1.6" Alias="netstandard1.6" />
718 <SupportedNETStandardTargetFramework Include=".NETStandard,Version=v2.0" DisplayName=".NET Standard 2.0" Alias="netstandard2.0" />
719 <SupportedNETStandardTargetFramework Include=".NETStandard,Version=v2.1" DisplayName=".NET Standard 2.1" Alias="netstandard2.1" />
720 </ItemGroup>
721 <!-- .NET Framework -->
722 <ItemGroup>
723 <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v2.0" DisplayName=".NET Framework 2.0" Alias="net20" />
724 <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v3.0" DisplayName=".NET Framework 3.0" Alias="net30" />
725 <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v3.5" DisplayName=".NET Framework 3.5" Alias="net35" />
726 <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v4.0" DisplayName=".NET Framework 4.0" Alias="net40" />
727 <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v4.5" DisplayName=".NET Framework 4.5" Alias="net45" />
728 <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v4.5.1" DisplayName=".NET Framework 4.5.1" Alias="net451" />
729 <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v4.5.2" DisplayName=".NET Framework 4.5.2" Alias="net452" />
730 <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v4.6" DisplayName=".NET Framework 4.6" Alias="net46" />
731 <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v4.6.1" DisplayName=".NET Framework 4.6.1" Alias="net461" />
732 <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v4.6.2" DisplayName=".NET Framework 4.6.2" Alias="net462" />
733 <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v4.7" DisplayName=".NET Framework 4.7" Alias="net47" />
734 <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v4.7.1" DisplayName=".NET Framework 4.7.1" Alias="net471" />
735 <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v4.7.2" DisplayName=".NET Framework 4.7.2" Alias="net472" />
736 <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v4.8" DisplayName=".NET Framework 4.8" Alias="net48" />
737 </ItemGroup>
738 <!-- All supported target frameworks -->
739 <ItemGroup>
740 <SupportedTargetFramework Include="@(SupportedNETCoreAppTargetFramework);@(SupportedNETStandardTargetFramework);@(SupportedNETFrameworkTargetFramework)" />
741 </ItemGroup>
742 <!--
743============================================================================================================================================
744 </Import>
745
746C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.props
747============================================================================================================================================
748-->
749 <!-- List of supported target platforms -->
750 <!--
751============================================================================================================================================
752 <Import Project="Microsoft.NET.SupportedPlatforms.props">
753
754C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.SupportedPlatforms.props
755============================================================================================================================================
756-->
757 <!--
758***********************************************************************************************
759Microsoft.NET.SupportedPlatforms.props
760
761WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
762 created a backup copy. Incorrect changes to this file will make it
763 impossible to load or build your projects from the command-line or the IDE.
764
765Copyright (c) .NET Foundation. All rights reserved.
766***********************************************************************************************
767-->
768 <ItemGroup>
769 <!-- Platforms supported by this SDK for analyzer warnings. Spec: https://github.com/dotnet/designs/blob/main/accepted/2020/platform-exclusion/platform-exclusion.md -->
770 <SupportedPlatform Include="Linux" />
771 <SupportedPlatform Include="macOS" />
772 <SupportedPlatform Include="Windows" />
773 </ItemGroup>
774 <!--
775============================================================================================================================================
776 </Import>
777
778C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.props
779============================================================================================================================================
780-->
781 <!-- List of supported .NET windows target platform versions -->
782 <!--
783============================================================================================================================================
784 <Import Project="Microsoft.NET.WindowsSdkSupportedTargetPlatforms.props">
785
786C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.WindowsSdkSupportedTargetPlatforms.props
787============================================================================================================================================
788-->
789 <!--
790***********************************************************************************************
791Microsoft.NET.WindowsSdkSupportedTargetPlatforms.props
792
793WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
794 created a backup copy. Incorrect changes to this file will make it
795 impossible to load or build your projects from the command-line or the IDE.
796
797Copyright (c) .NET Foundation. All rights reserved.
798***********************************************************************************************
799-->
800 <!-- This file contains a list of the windows target platform versions that are supported by this SDK for .NET. Supported versions are processed in _NormalizeTargetPlatformVersion -->
801 <!-- These will be added to the BundledVersions.props that's generated in dotnet/installer. So only add them here if we don't have that change yet -->
802 <ItemGroup Condition="'@(WindowsSdkSupportedTargetPlatformVersion)' == ''">
803 <WindowsSdkSupportedTargetPlatformVersion Include="10.0.19041.0" WindowsSdkPackageVersion="10.0.19041.16" MinimumNETVersion="5.0" />
804 <WindowsSdkSupportedTargetPlatformVersion Include="10.0.18362.0" WindowsSdkPackageVersion="10.0.18362.16" MinimumNETVersion="5.0" />
805 <WindowsSdkSupportedTargetPlatformVersion Include="10.0.17763.0" WindowsSdkPackageVersion="10.0.17763.16" MinimumNETVersion="5.0" />
806 <WindowsSdkSupportedTargetPlatformVersion Include="8.0" />
807 <WindowsSdkSupportedTargetPlatformVersion Include="7.0" />
808 </ItemGroup>
809 <ItemGroup>
810 <SdkSupportedTargetPlatformVersion Condition="'$(TargetPlatformIdentifier)' == 'Windows'" Include="@(WindowsSdkSupportedTargetPlatformVersion)" />
811 </ItemGroup>
812 <!--
813============================================================================================================================================
814 </Import>
815
816C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.props
817============================================================================================================================================
818-->
819 <!--
820============================================================================================================================================
821 <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Sdk.CSharp.props" Condition="'$(MSBuildProjectExtension)' == '.csproj'">
822
823C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.CSharp.props
824============================================================================================================================================
825-->
826 <!--
827***********************************************************************************************
828Microsoft.NET.Sdk.CSharp.props
829
830WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
831 created a backup copy. Incorrect changes to this file will make it
832 impossible to load or build your projects from the command-line or the IDE.
833
834Copyright (c) .NET Foundation. All rights reserved.
835***********************************************************************************************
836-->
837 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
838 <WarningLevel Condition=" '$(WarningLevel)' == '' ">4</WarningLevel>
839 <NoWarn Condition=" '$(NoWarn)' == '' ">1701;1702</NoWarn>
840 <!-- Remove the line below once https://github.com/Microsoft/visualfsharp/issues/3207 gets fixed -->
841 <WarningsAsErrors>$(WarningsAsErrors);NU1605</WarningsAsErrors>
842 </PropertyGroup>
843 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
844 <DefineConstants Condition=" '$(DefineConstants)' != '' ">$(DefineConstants);</DefineConstants>
845 <DefineConstants>$(DefineConstants)TRACE</DefineConstants>
846 </PropertyGroup>
847 <!-- Implicit imports -->
848 <ItemGroup Condition="'$(ImplicitUsings)' == 'true' Or '$(ImplicitUsings)' == 'enable'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
849 <Using Include="System" />
850 <Using Include="System.Collections.Generic" />
851 <Using Include="System.IO" />
852 <Using Include="System.Linq" />
853 <Using Include="System.Net.Http" />
854 <Using Include="System.Threading" />
855 <Using Include="System.Threading.Tasks" />
856 </ItemGroup>
857 <!--
858============================================================================================================================================
859 </Import>
860
861C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.props
862============================================================================================================================================
863-->
864 <!--<Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Sdk.VisualBasic.props" Condition="'$(MSBuildProjectExtension)' == '.vbproj'" />-->
865 <!--<Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Sdk.FSharp.props" Condition="'$(MSBuildProjectExtension)' == '.fsproj'" />-->
866 <!--
867============================================================================================================================================
868 <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.ILLink.props">
869
870C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.ILLink.props
871============================================================================================================================================
872-->
873 <!--
874***********************************************************************************************
875Microsoft.NET.ILLink.props
876
877WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
878 created a backup copy. Incorrect changes to this file will make it
879 impossible to load or build your projects from the command-line or the IDE.
880
881Copyright (c) .NET Foundation. All rights reserved.
882***********************************************************************************************
883-->
884 <!--
885============================================================================================================================================
886 <Import Project="Sdk.props" Sdk="Microsoft.NET.ILLink.Tasks">
887
888C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.ILLink.Tasks\Sdk\Sdk.props
889============================================================================================================================================
890-->
891 <!--
892***********************************************************************************************
893Sdk.props
894
895WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
896 created a backup copy. Incorrect changes to this file will make it
897 impossible to load or build your projects from the command-line or the IDE.
898
899Copyright (c) .NET Foundation. All rights reserved.
900***********************************************************************************************
901-->
902 <!-- Only import the build props if the ILLink.Tasks package isn't referenced via NuGet. -->
903 <!--
904============================================================================================================================================
905 <Import Project="$(MSBuildThisFileDirectory)..\build\Microsoft.NET.ILLink.Tasks.props" Condition="'$(UsingILLinkTasksSdk)' != 'true'">
906
907C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.ILLink.Tasks\build\Microsoft.NET.ILLink.Tasks.props
908============================================================================================================================================
909-->
910 <!--
911***********************************************************************************************
912Microsoft.NET.ILLink.Tasks.props
913
914WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
915 created a backup copy. Incorrect changes to this file will make it
916 impossible to load or build your projects from the command-line or the IDE.
917
918Copyright (c) .NET Foundation. All rights reserved.
919***********************************************************************************************
920-->
921 <PropertyGroup>
922 <UsingILLinkTasksSdk>true</UsingILLinkTasksSdk>
923 <ILLinkTasksAssembly Condition="'$(MSBuildRuntimeType)' == 'Core'">$(MSBuildThisFileDirectory)..\tools\net6.0\ILLink.Tasks.dll</ILLinkTasksAssembly>
924 <ILLinkTasksAssembly Condition="'$(MSBuildRuntimeType)' != 'Core'">$(MSBuildThisFileDirectory)..\tools\net472\ILLink.Tasks.dll</ILLinkTasksAssembly>
925 </PropertyGroup>
926 <!--
927============================================================================================================================================
928 </Import>
929
930C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.ILLink.Tasks\Sdk\Sdk.props
931============================================================================================================================================
932-->
933 <!--
934============================================================================================================================================
935 </Import>
936
937C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.ILLink.props
938============================================================================================================================================
939-->
940 <!--
941============================================================================================================================================
942 </Import>
943
944C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.props
945============================================================================================================================================
946-->
947 <!--
948============================================================================================================================================
949 <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Compatibility.props">
950
951C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Compatibility.props
952============================================================================================================================================
953-->
954 <!-- Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the MIT license. -->
955 <PropertyGroup>
956 <DotNetCompatibilityAssembly Condition="'$(MSBuildRuntimeType)' != 'Core'">$(MSBuildThisFileDirectory)..\tools\net472\Microsoft.DotNet.Compatibility.dll</DotNetCompatibilityAssembly>
957 <DotNetCompatibilityAssembly Condition="'$(MSBuildRuntimeType)' == 'Core'">$(MSBuildThisFileDirectory)..\tools\net6.0\Microsoft.DotNet.Compatibility.dll</DotNetCompatibilityAssembly>
958 </PropertyGroup>
959 <!--
960============================================================================================================================================
961 </Import>
962
963C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.props
964============================================================================================================================================
965-->
966 <!--
967============================================================================================================================================
968 <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.PackTool.props">
969
970C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.PackTool.props
971============================================================================================================================================
972-->
973 <!--
974***********************************************************************************************
975Microsoft.NET.PackTool.props
976
977WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
978 created a backup copy. Incorrect changes to this file will make it
979 impossible to load or build your projects from the command-line or the IDE.
980
981Copyright (c) .NET Foundation. All rights reserved.
982***********************************************************************************************
983-->
984 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
985 <TargetsForTfmSpecificContentInPackage>$(TargetsForTfmSpecificContentInPackage);PackTool</TargetsForTfmSpecificContentInPackage>
986 </PropertyGroup>
987 <!--
988============================================================================================================================================
989 </Import>
990
991C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.props
992============================================================================================================================================
993-->
994 <!--
995============================================================================================================================================
996 <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.PackProjectTool.props">
997
998C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.PackProjectTool.props
999============================================================================================================================================
1000-->
1001 <!--
1002***********************************************************************************************
1003Microsoft.NET.PackProjectTool.props
1004
1005WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
1006 created a backup copy. Incorrect changes to this file will make it
1007 impossible to load or build your projects from the command-line or the IDE.
1008
1009Copyright (c) .NET Foundation. All rights reserved.
1010***********************************************************************************************
1011-->
1012 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1013 <TargetsForTfmSpecificContentInPackage>$(TargetsForTfmSpecificContentInPackage);_PackProjectToolValidation</TargetsForTfmSpecificContentInPackage>
1014 </PropertyGroup>
1015 <!--
1016============================================================================================================================================
1017 </Import>
1018
1019C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.props
1020============================================================================================================================================
1021-->
1022 <!--
1023============================================================================================================================================
1024 <Import Project="$(MSBuildThisFileDirectory)../../Microsoft.NET.Sdk.WindowsDesktop/targets/Microsoft.NET.Sdk.WindowsDesktop.props" Condition="Exists('$(MSBuildThisFileDirectory)../../Microsoft.NET.Sdk.WindowsDesktop/targets/Microsoft.NET.Sdk.WindowsDesktop.props')">
1025
1026C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk.WindowsDesktop\targets\Microsoft.NET.Sdk.WindowsDesktop.props
1027============================================================================================================================================
1028-->
1029 <ItemGroup Condition=" '$(_EnableWindowsDesktopGlobbing)' == 'true' ">
1030 <ApplicationDefinition Include="App.xaml" Condition="'$(EnableDefaultApplicationDefinition)' != 'false' And Exists('$(MSBuildProjectDirectory)/App.xaml') And '$(MSBuildProjectExtension)' == '.csproj'">
1031 <Generator>MSBuild:Compile</Generator>
1032 <XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime>
1033 </ApplicationDefinition>
1034 <ApplicationDefinition Include="Application.xaml" Condition="'$(EnableDefaultApplicationDefinition)' != 'false' And Exists('$(MSBuildProjectDirectory)/Application.xaml') And '$(MSBuildProjectExtension)' == '.vbproj'">
1035 <Generator>MSBuild:Compile</Generator>
1036 <XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime>
1037 </ApplicationDefinition>
1038 <Page Include="**/*.xaml" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder);@(ApplicationDefinition)" Condition="'$(EnableDefaultPageItems)' != 'false'">
1039 <Generator>MSBuild:Compile</Generator>
1040 <XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime>
1041 </Page>
1042 <!--
1043 See https://github.com/dotnet/wpf/issues/685
1044 Visual Studio would prefer that we remove **/*.xaml instead of
1045 being more precise.
1046
1047 <None Remove="@(Page)"
1048 Condition="'$(EnableDefaultPageItems)' != 'false'" />
1049 <None Remove="@(ApplicationDefinition)"
1050 Condition="'$(EnableDefaultApplicationDefinition)' != 'false'" />
1051 -->
1052 <None Remove="**/*.xaml" Condition="'$(EnableDefaultApplicationDefinition)' != 'false' And '$(EnableDefaultPageItems)' != 'false'" />
1053 </ItemGroup>
1054 <ItemGroup Condition=" '$(_EnableWindowsDesktopNetCoreFrameworkReferences)' == 'true' ">
1055 <FrameworkReference Include="Microsoft.WindowsDesktop.App" IsImplicitlyDefined="true" Condition="('$(UseWPF)' == 'true') And ('$(UseWindowsForms)' == 'true')" />
1056 <FrameworkReference Include="Microsoft.WindowsDesktop.App.WPF" IsImplicitlyDefined="true" Condition="('$(UseWPF)' == 'true') And ('$(UseWindowsForms)' != 'true')" />
1057 <FrameworkReference Include="Microsoft.WindowsDesktop.App.WindowsForms" IsImplicitlyDefined="true" Condition="('$(UseWPF)' != 'true') And ('$(UseWindowsForms)' == 'true')" />
1058 </ItemGroup>
1059 <!--
1060 Traditionally, Visual Studio has supplied these references for .NET Framework based
1061 WPF Projects:
1062
1063 .NET 3.x: PresentationCore, PresentationFramework, WindowsBase
1064 .NET 4.x: PresentationCore, PresentationFramework, WindowsBase, System.Xaml
1065
1066
1067 Microsoft.NET.WindowsDesktop.SDK will supply the following references to .NET Framework based
1068 WPF Projects:
1069
1070 .NET 3.x: PresentationCore, PresentationFramework, WindowsBase
1071
1072 .NET 4.0: PresentationCore, PresentationFramework, WindowsBase, System.Xaml,
1073 UIAutomationClient, UIAutomationClientSideProviders, UIAutomationProvider, UIAutomationTypes
1074
1075 .NET 4.5+: PresentationCore, PresentationFramework, WindowsBase, System.Xaml,
1076 UIAutomationClient, UIAutomationClientSideProviders, UIAutomationProvider, UIAutomationTypes
1077 System.Windows.Controls.Ribbon
1078 -->
1079 <ItemGroup Condition=" '$(_EnableWindowsDesktopNETFrameworkImplicitReference)' == 'true' ">
1080 <!--
1081 The following 3 _WpfCommonNetFxReference items normally require Condition="'$(_TargetFrameworkVersionValue)' >= '3.0'", since
1082 they are supported on .NET Framework 3.0 and above.
1083
1084 This condition is implicitly satisfied by '$(_TargetFrameworkVersionValue)' >= '$(_WindowsDesktopSdkTargetFrameworkVersionFloor)'
1085 in the outer ItemGroup
1086 -->
1087 <_WpfCommonNetFxReference Include="WindowsBase" />
1088 <_WpfCommonNetFxReference Include="PresentationCore" />
1089 <_WpfCommonNetFxReference Include="PresentationFramework" />
1090 <_WpfCommonNetFxReference Include="System.Xaml" Condition="'$(_TargetFrameworkVersionValue)' != '' And '$(_TargetFrameworkVersionValue)' &gt;= '4.0'">
1091 <RequiredTargetFramework>4.0</RequiredTargetFramework>
1092 </_WpfCommonNetFxReference>
1093 <_WpfCommonNetFxReference Include="UIAutomationClient" Condition="'$(_TargetFrameworkVersionValue)' != '' And '$(_TargetFrameworkVersionValue)' &gt;= '4.0'" />
1094 <_WpfCommonNetFxReference Include="UIAutomationClientSideProviders" Condition="'$(_TargetFrameworkVersionValue)' != '' And '$(_TargetFrameworkVersionValue)' &gt;= '4.0'" />
1095 <_WpfCommonNetFxReference Include="UIAutomationProvider" Condition="'$(_TargetFrameworkVersionValue)' != '' And '$(_TargetFrameworkVersionValue)' &gt;= '4.0'" />
1096 <_WpfCommonNetFxReference Include="UIAutomationTypes" Condition="'$(_TargetFrameworkVersionValue)' != '' And '$(_TargetFrameworkVersionValue)' &gt;= '4.0'" />
1097 <_WpfCommonNetFxReference Include="System.Windows.Controls.Ribbon" Condition="'$(_TargetFrameworkVersionValue)' != '' And '$(_TargetFrameworkVersionValue)' &gt;= '4.5'" />
1098 </ItemGroup>
1099 <ItemGroup Condition=" '$(_EnableWindowsDesktopNETFrameworkImplicitReference)' == 'true' ">
1100 <_SDKImplicitReference Include="@(_WpfCommonNetFxReference)" Condition="'$(UseWPF)' == 'true'" />
1101 <_SDKImplicitReference Include="System.Windows.Forms" Condition="('$(UseWindowsForms)' == 'true') " />
1102 <_SDKImplicitReference Include="WindowsFormsIntegration" Condition=" ('$(UseWindowsForms)' == 'true') And ('$(UseWPF)' == 'true') " />
1103 </ItemGroup>
1104 <!--
1105 Supported (and unsupported) TargetFrameworks
1106
1107 Visual Studio Project System determines the list of valid TargetFrameworks to show
1108 in the Project properties by querying SupportedTargetFramework values.
1109
1110 The Project System does not refer to this list at this time for .NET Framework TFM's.
1111 -->
1112 <!--
1113 When WindowsDesktop SDK is used without setting UseWPF or UseWindowsForms, it shows a (suppressible) warning and functions much
1114 like Microsoft.NET.Sdk
1115
1116 Likewise, when WindowsDesktop SDK is used with a netcore TFM that is less than 3.0, it will simply act as if it were an
1117 Microsoft.NET.Sdk project (and show a suppressible build-time warning).
1118
1119 Detect these situations and skip updates to @(SupportedTargetFramework) etc.
1120 -->
1121 <ItemGroup Condition=" '$(_RemoveUnsupportedTargetFrameworksForWindowsDesktop)' == 'true' ">
1122 <!--
1123 Windows Forms and WPF are supported only on .NET Core 3.0+
1124 -->
1125 <_UnsupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v1.0" />
1126 <_UnsupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v1.1" />
1127 <_UnsupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v2.0" />
1128 <_UnsupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v2.1" />
1129 <_UnsupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v2.2" />
1130 <!--
1131 Windows Forms and WPF are not supported an any .NET Standard targets
1132 -->
1133 <_UnsupportedNETStandardTargetFramework Include="@(SupportedNETStandardTargetFramework)" />
1134 <!--
1135 Windows Forms was supported since .NET Framework 1.0, and is currently supported on
1136 .NET Framework 2.0+.
1137
1138 WPF is supported on .NET Framework and WPF are supported on .NET Framework 3.0+
1139
1140 In practice, the WindowsDesktop SDK is only supported on .NET Framework 3.0+ - this is controlled
1141 by $(_WindowsDesktopSdkTargetFrameworkVersionFloor), defined as 3.0, which applies to both .NETFramework
1142 and .NETCore.
1143
1144 Here, we will encode .NET Framework 3.0 as the lowest supported version for both Windows Forms and WPF.
1145
1146 The SDK does not define versions < 2.0 in @(SupportedNETFrameworkTargetFramework) list, so none of those
1147 need to be excluded here - removing 2.0 would suffice.
1148 -->
1149 <_UnsupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v2.0" />
1150 <SupportedNETCoreAppTargetFramework Remove="@(_UnsupportedNETCoreAppTargetFramework)" />
1151 <SupportedNETStandardTargetFramework Remove="@(_UnsupportedNETStandardTargetFramework)" />
1152 <SupportedNETFrameworkTargetFramework Remove="@(_UnsupportedNETFrameworkTargetFramework)" />
1153 <SupportedTargetFramework Remove="@(_UnsupportedNETCoreAppTargetFramework);@(_UnsupportedNETStandardTargetFramework);@(_UnsupportedNETFrameworkTargetFramework)" />
1154 </ItemGroup>
1155 <!--
1156 Import Windows Forms props.
1157 These come via the Windows Forms transport package, that can be found under
1158 https://github.com/dotnet/winforms/tree/main/pkg/Microsoft.Private.Winforms/sdk
1159 -->
1160 <!--
1161============================================================================================================================================
1162 <Import Project="Microsoft.NET.Sdk.WindowsDesktop.WindowsForms.props">
1163
1164C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk.WindowsDesktop\targets\Microsoft.NET.Sdk.WindowsDesktop.WindowsForms.props
1165============================================================================================================================================
1166-->
1167 <!--
1168 This props file comes from dotnet/winforms. It gets ingested by dotnet/wpf and processed by
1169 packaging/Microsoft.NET.Sdk.WindowsDesktop project.
1170
1171 It is referenced via Microsoft.NET.Sdk.WindowsDesktop/targets/Microsoft.NET.Sdk.WindowsDesktop.props.
1172 -->
1173 <!--
1174 ============================================================
1175 GenerateImplicitNamespaceImports
1176 Generates implicit namespace imports source to intermediate directory for Windows Forms projects
1177 ============================================================
1178 -->
1179 <ItemGroup Condition="'$(UseWindowsForms)' == 'true' and ('$(ImplicitUsings)' == 'true' or '$(ImplicitUsings)' == 'enable')">
1180 <!--
1181 SDK defines the following global usings:
1182 * System
1183 * System.Collections.Generic
1184 * System.Linq
1185 * System.Threading.Tasks
1186 -->
1187 <Using Include="System.Drawing" />
1188 <Using Include="System.Windows.Forms" />
1189 </ItemGroup>
1190 <!-- Windows Forms source generator and analyzers -->
1191 <!--
1192============================================================================================================================================
1193 <Import Project="System.Windows.Forms.Analyzers.props">
1194
1195C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk.WindowsDesktop\targets\System.Windows.Forms.Analyzers.props
1196============================================================================================================================================
1197-->
1198 <!--
1199 This props file comes from dotnet/winforms. It gets ingested by dotnet/wpf and processed by
1200 packaging/Microsoft.NET.Sdk.WindowsDesktop project.
1201
1202 It is referenced via Microsoft.NET.Sdk.WindowsDesktop.WindowsForms.props.
1203 -->
1204 <!-- Import for Windows Forms applications or when developing/testing locally -->
1205 <ItemGroup Condition="('$(UseWindowsForms)' == 'true') or ('$(ResolveWinFormsAnalyzersFromSdkRefPack)' == 'false')">
1206 <!-- Known Application properties -->
1207 <CompilerVisibleProperty Include="ApplicationManifest" />
1208 <CompilerVisibleProperty Include="StartupObject" />
1209 <!--
1210 Custom Application properties
1211 See for more details: https://github.com/dotnet/designs/blob/main/accepted/2021/winforms/streamline-application-bootstrap.md#msbuild-properties
1212 -->
1213 <CompilerVisibleProperty Include="ApplicationDefaultFont" />
1214 <CompilerVisibleProperty Include="ApplicationHighDpiMode" />
1215 <CompilerVisibleProperty Include="ApplicationUseCompatibleTextRendering" />
1216 <CompilerVisibleProperty Include="ApplicationVisualStyles" />
1217 <!-- If there is an app.manifest - let the generator explore it -->
1218 <AdditionalFiles Include="$(ApplicationManifest)" Condition="'$(ApplicationManifest)' != ''" />
1219 </ItemGroup>
1220 <!--
1221============================================================================================================================================
1222 </Import>
1223
1224C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk.WindowsDesktop\targets\Microsoft.NET.Sdk.WindowsDesktop.WindowsForms.props
1225============================================================================================================================================
1226-->
1227 <!--
1228============================================================================================================================================
1229 </Import>
1230
1231C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk.WindowsDesktop\targets\Microsoft.NET.Sdk.WindowsDesktop.props
1232============================================================================================================================================
1233-->
1234 <!--
1235============================================================================================================================================
1236 <Import Project="Microsoft.NET.Sdk.WindowsDesktop.WPF.props">
1237
1238C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk.WindowsDesktop\targets\Microsoft.NET.Sdk.WindowsDesktop.WPF.props
1239============================================================================================================================================
1240-->
1241 <!--
1242 Generates implicit global namespace imports file <projectname>.ImplicitGlobalNamespaceImports.cs.
1243 -->
1244 <ItemGroup Condition="'$(UseWPF)' == 'true' and ('$(ImplicitUsings)' == 'true' or '$(ImplicitUsings)' == 'enable')">
1245 <Using Remove="System.IO" />
1246 <Using Remove="System.Net.Http" />
1247 </ItemGroup>
1248 <!--
1249============================================================================================================================================
1250 </Import>
1251
1252C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk.WindowsDesktop\targets\Microsoft.NET.Sdk.WindowsDesktop.props
1253============================================================================================================================================
1254-->
1255 <!--
1256============================================================================================================================================
1257 </Import>
1258
1259C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.props
1260============================================================================================================================================
1261-->
1262 <!--
1263============================================================================================================================================
1264 <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Windows.props">
1265
1266C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Windows.props
1267============================================================================================================================================
1268-->
1269 <!--
1270***********************************************************************************************
1271Microsoft.NET.Windows.props
1272
1273WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
1274 created a backup copy. Incorrect changes to this file will make it
1275 impossible to load or build your projects from the command-line or the IDE.
1276
1277Copyright (c) .NET Foundation. All rights reserved.
1278***********************************************************************************************
1279-->
1280 <ItemGroup Condition=" '$(IncludeWindowsSDKRefFrameworkReferences)' == 'true' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1281 <FrameworkReference Include="Microsoft.Windows.SDK.NET.Ref" IsImplicitlyDefined="true" Pack="false" PrivateAssets="All" />
1282 </ItemGroup>
1283 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1284 <MicrosoftNETWindowsWorkloadInstalled>true</MicrosoftNETWindowsWorkloadInstalled>
1285 <!--https://github.com/dotnet/sdk/issues/12403-->
1286 <_TargetFrameworkVersionValue>0.0</_TargetFrameworkVersionValue>
1287 <_WindowsDesktopSdkTargetFrameworkVersionFloor>3.0</_WindowsDesktopSdkTargetFrameworkVersionFloor>
1288 </PropertyGroup>
1289 <!--
1290============================================================================================================================================
1291 </Import>
1292
1293C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.props
1294============================================================================================================================================
1295-->
1296 <!--
1297============================================================================================================================================
1298 </Import>
1299
1300C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\Sdk\Sdk.props
1301============================================================================================================================================
1302-->
1303 <!--
1304============================================================================================================================================
1305 </Import>
1306
1307D:\src\wix4\src\test\wix\TestProjects\CsprojConsoleNetCore\CsprojConsoleNetCore.csproj
1308============================================================================================================================================
1309-->
1310 <PropertyGroup>
1311 <OutputType>Exe</OutputType>
1312 <TargetFramework>netcoreapp3.1</TargetFramework>
1313 </PropertyGroup>
1314 <ItemGroup>
1315 <ProjectReference Include="..\CsprojClassLibraryNetCore\CsprojClassLibraryNetCore.csproj" />
1316 </ItemGroup>
1317 <!--
1318============================================================================================================================================
1319 <Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk">
1320 This import was added implicitly because the Project element's Sdk attribute specified "Microsoft.NET.Sdk".
1321
1322C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\Sdk\Sdk.targets
1323============================================================================================================================================
1324-->
1325 <!--
1326***********************************************************************************************
1327Sdk.targets
1328
1329WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
1330 created a backup copy. Incorrect changes to this file will make it
1331 impossible to load or build your projects from the command-line or the IDE.
1332
1333Copyright (c) .NET Foundation. All rights reserved.
1334***********************************************************************************************
1335-->
1336 <!-- Using the same property as Microsoft.CSharp.targets and presumably Microsoft.VisualBasic.targets here -->
1337 <PropertyGroup Condition="'$(TargetFrameworks)' != '' and '$(TargetFramework)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1338 <IsCrossTargetingBuild>true</IsCrossTargetingBuild>
1339 </PropertyGroup>
1340 <!--<Import Project="$(MSBuildThisFileDirectory)..\targets\Microsoft.NET.Sdk.BeforeCommonCrossTargeting.targets" Condition="'$(IsCrossTargetingBuild)' == 'true'" />-->
1341 <!--
1342============================================================================================================================================
1343 <Import Project="$(MSBuildThisFileDirectory)..\targets\Microsoft.NET.Sdk.BeforeCommon.targets" Condition="'$(IsCrossTargetingBuild)' != 'true'">
1344
1345C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.BeforeCommon.targets
1346============================================================================================================================================
1347-->
1348 <!--
1349***********************************************************************************************
1350Microsoft.NET.Sdk.BeforeCommon.targets
1351
1352WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
1353 created a backup copy. Incorrect changes to this file will make it
1354 impossible to load or build your projects from the command-line or the IDE.
1355
1356Copyright (c) .NET Foundation. All rights reserved.
1357***********************************************************************************************
1358-->
1359 <!-- For projects that aren't using Microsoft.NET.Sdk, these props files won't have been imported yet.
1360 So import them here. -->
1361 <!--<ImportGroup Condition="'$(UsingNETSdkDefaults)' != 'true'">-->
1362 <!--<Import Project="Microsoft.NET.Sdk.DefaultItems.props" />-->
1363 <!--<Import Project="Microsoft.NET.SupportedTargetFrameworks.props" />-->
1364 <!--<Import Project="Microsoft.NET.SupportedPlatforms.props" />-->
1365 <!--<Import Project="Microsoft.NET.WindowsSdkSupportedTargetPlatforms.props" />-->
1366 <!--</ImportGroup>-->
1367 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1368 <_IsExecutable Condition="'$(OutputType)' == 'Exe' or '$(OutputType)'=='WinExe'">true</_IsExecutable>
1369 </PropertyGroup>
1370 <PropertyGroup Condition="'$(HasRuntimeOutput)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1371 <HasRuntimeOutput>$(_IsExecutable)</HasRuntimeOutput>
1372 <_UsingDefaultForHasRuntimeOutput>true</_UsingDefaultForHasRuntimeOutput>
1373 </PropertyGroup>
1374 <!--
1375============================================================================================================================================
1376 <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.DefaultAssemblyInfo.targets" Condition="'$(UsingNETSdkDefaults)' == 'true'">
1377
1378C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.DefaultAssemblyInfo.targets
1379============================================================================================================================================
1380-->
1381 <!--
1382***********************************************************************************************
1383Microsoft.NET.DefaultAssemblyInfo.targets
1384
1385WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
1386 created a backup copy. Incorrect changes to this file will make it
1387 impossible to load or build your projects from the command-line or the IDE.
1388
1389Copyright (c) .NET Foundation. All rights reserved.
1390***********************************************************************************************
1391-->
1392 <PropertyGroup Condition=" '$(Version)' == '' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1393 <VersionPrefix Condition=" '$(VersionPrefix)' == '' ">1.0.0</VersionPrefix>
1394 <Version Condition=" '$(VersionSuffix)' != '' ">$(VersionPrefix)-$(VersionSuffix)</Version>
1395 <Version Condition=" '$(Version)' == '' ">$(VersionPrefix)</Version>
1396 </PropertyGroup>
1397 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1398 <Authors Condition=" '$(Authors)'=='' ">$(AssemblyName)</Authors>
1399 <Company Condition=" '$(Company)'=='' ">$(Authors)</Company>
1400 <AssemblyTitle Condition=" '$(AssemblyTitle)' == '' ">$(AssemblyName)</AssemblyTitle>
1401 <Product Condition=" '$(Product)' == ''">$(AssemblyName)</Product>
1402 </PropertyGroup>
1403 <!--
1404============================================================================================================================================
1405 </Import>
1406
1407C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.BeforeCommon.targets
1408============================================================================================================================================
1409-->
1410 <!-- Set default intermediate and output paths -->
1411 <!--
1412============================================================================================================================================
1413 <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.DefaultOutputPaths.targets" Condition="'$(UsingNETSdkDefaults)' == 'true'">
1414
1415C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.DefaultOutputPaths.targets
1416============================================================================================================================================
1417-->
1418 <!--
1419***********************************************************************************************
1420Microsoft.NET.DefaultOutputPaths.targets
1421
1422WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
1423 created a backup copy. Incorrect changes to this file will make it
1424 impossible to load or build your projects from the command-line or the IDE.
1425
1426Copyright (c) .NET Foundation. All rights reserved.
1427***********************************************************************************************
1428-->
1429 <!--
1430 Apply the same default output paths as Microsoft.Common.targets now since we're running before them,
1431 but need to adjust them and/or make decisions in terms of them.
1432
1433 Also note that common targets only set a default OutputPath if neither configuration nor
1434 platform were set by the user. This was used to validate that a valid configuration is passed,
1435 assuming the convention maintained by VS that every Configuration|Platform combination had
1436 an explicit OutputPath. Since we now want to support leaner project files with less
1437 duplication and more automatic defaults, we always set a default OutputPath and can no
1438 longer depend on that convention for validation. Getting validation re-enabled with a
1439 different mechanism is tracked by https://github.com/dotnet/sdk/issues/350
1440 -->
1441 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1442 <Configuration Condition="'$(Configuration)'==''">Debug</Configuration>
1443 <Platform Condition="'$(Platform)'==''">AnyCPU</Platform>
1444 <PlatformName Condition="'$(PlatformName)' == ''">$(Platform)</PlatformName>
1445 <BaseOutputPath Condition="'$(BaseOutputPath)' == ''">bin\</BaseOutputPath>
1446 <BaseOutputPath Condition="!HasTrailingSlash('$(BaseOutputPath)')">$(BaseOutputPath)\</BaseOutputPath>
1447 <OutputPath Condition="'$(OutputPath)' == '' and '$(PlatformName)' == 'AnyCPU'">$(BaseOutputPath)$(Configuration)\</OutputPath>
1448 <OutputPath Condition="'$(OutputPath)' == '' and '$(PlatformName)' != 'AnyCPU'">$(BaseOutputPath)$(PlatformName)\$(Configuration)\</OutputPath>
1449 <OutputPath Condition="!HasTrailingSlash('$(OutputPath)')">$(OutputPath)\</OutputPath>
1450 <BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)' == ''">obj\</BaseIntermediateOutputPath>
1451 <BaseIntermediateOutputPath Condition="!HasTrailingSlash('$(BaseIntermediateOutputPath)')">$(BaseIntermediateOutputPath)\</BaseIntermediateOutputPath>
1452 <IntermediateOutputPath Condition=" $(IntermediateOutputPath) == '' and '$(PlatformName)' == 'AnyCPU' ">$(BaseIntermediateOutputPath)$(Configuration)\</IntermediateOutputPath>
1453 <IntermediateOutputPath Condition=" $(IntermediateOutputPath) == '' and '$(PlatformName)' != 'AnyCPU' ">$(BaseIntermediateOutputPath)$(PlatformName)\$(Configuration)\</IntermediateOutputPath>
1454 <IntermediateOutputPath Condition="!HasTrailingSlash('$(IntermediateOutputPath)')">$(IntermediateOutputPath)\</IntermediateOutputPath>
1455 </PropertyGroup>
1456 <!-- Set the package output path (for nuget pack target) now, before the TargetFramework is appended -->
1457 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1458 <PackageOutputPath Condition="'$(PackageOutputPath)' == ''">$(OutputPath)</PackageOutputPath>
1459 </PropertyGroup>
1460 <!--
1461============================================================================================================================================
1462 </Import>
1463
1464C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.BeforeCommon.targets
1465============================================================================================================================================
1466-->
1467 <!-- Before any additional SDK targets are imported, import the publish profile.
1468 This allows the publish profile to set properties like RuntimeIdentifier and them be
1469 respected by the SDK. -->
1470 <!--
1471============================================================================================================================================
1472 <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Sdk.ImportPublishProfile.targets" Condition="'$(PublishProfileImported)' != 'true'">
1473
1474C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.ImportPublishProfile.targets
1475============================================================================================================================================
1476-->
1477 <!--
1478***********************************************************************************************
1479Microsoft.NET.Sdk.ImportPublishProfile.targets
1480
1481WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
1482 created a backup copy. Incorrect changes to this file will make it
1483 impossible to load or build your projects from the command-line or the IDE.
1484
1485Copyright (c) .NET Foundation. All rights reserved.
1486***********************************************************************************************
1487-->
1488 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1489 <!-- Default to having imported the publish profile so the Web SDK doesn't also attempt to do so. -->
1490 <PublishProfileImported>true</PublishProfileImported>
1491 <_PublishProfileDesignerFolder Condition="'$(AppDesignerFolder)' != ''">$(AppDesignerFolder)</_PublishProfileDesignerFolder>
1492 <_PublishProfileDesignerFolder Condition="'$(_PublishProfileDesignerFolder)' == ''">Properties</_PublishProfileDesignerFolder>
1493 <_PublishProfileRootFolder Condition="'$(_PublishProfileRootFolder)' == ''">$(MSBuildProjectDirectory)\$(_PublishProfileDesignerFolder)\PublishProfiles\</_PublishProfileRootFolder>
1494 <PublishProfileName Condition="'$(PublishProfileName)' == '' and '$(PublishProfile)' != ''">$([System.IO.Path]::GetFileNameWithoutExtension($(PublishProfile)))</PublishProfileName>
1495 <PublishProfileFullPath Condition="'$(PublishProfileFullPath)' == '' and '$(PublishProfileName)' != ''">$(_PublishProfileRootFolder)$(PublishProfileName).pubxml</PublishProfileFullPath>
1496 <WebPublishProfileFile Condition="'$(WebPublishProfileFile)' == '' and Exists('$(PublishProfileFullPath)')">$(PublishProfileFullPath)</WebPublishProfileFile>
1497 <!-- If the publish profile doesn't exist, mark as not imported.
1498 This allows the Web SDK to import some default profiles that come with the Web SDK.
1499 Publishing in Visual Studio sets `WebPublishProfileFile` as a global property.
1500 Therefore, check that `ProjectToOverrideProjectExtensionsPath` is equal to `MSBuildProjectFullPath`
1501 to limit the import to the project being published. -->
1502 <PublishProfileImported Condition="('$(ProjectToOverrideProjectExtensionsPath)' != '' and&#xD;&#xA; '$(ProjectToOverrideProjectExtensionsPath)' != '$(MSBuildProjectFullPath)') or&#xD;&#xA; '$(WebPublishProfileFile)' == '' or&#xD;&#xA; !Exists('$(WebPublishProfileFile)')">false</PublishProfileImported>
1503 </PropertyGroup>
1504 <!--<Import Project="$(WebPublishProfileFile)" Condition="'$(PublishProfileImported)' == 'true'" />-->
1505 <!--<Import Project="$(WebPublishProfileFile).user" Condition="'$(PublishProfileImported)' == 'true' and Exists('$(WebPublishProfileFile).user')" />-->
1506 <!--
1507============================================================================================================================================
1508 </Import>
1509
1510C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.BeforeCommon.targets
1511============================================================================================================================================
1512-->
1513 <!--
1514 Expand TargetFramework to TargetFrameworkIdentifier and TargetFrameworkVersion,
1515 and adjust intermediate and output paths to include it.
1516 -->
1517 <!--
1518============================================================================================================================================
1519 <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.TargetFrameworkInference.targets">
1520
1521C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.TargetFrameworkInference.targets
1522============================================================================================================================================
1523-->
1524 <!--
1525***********************************************************************************************
1526Microsoft.NET.TargetFrameworkInference.targets
1527
1528WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
1529 created a backup copy. Incorrect changes to this file will make it
1530 impossible to load or build your projects from the command-line or the IDE.
1531
1532Copyright (c) .NET Foundation. All rights reserved.
1533***********************************************************************************************
1534-->
1535 <!--
1536 Note that this file is only included when $(TargetFramework) is set and so we do not need to check that here.
1537
1538 Common targets require that $(TargetFrameworkIdentifier) and $(TargetFrameworkVersion) are set by static evaluation
1539 before they are imported. In common cases (currently netstandard, netcoreapp, or net), we infer them from the short
1540 names given via TargetFramework to allow for terseness and lack of duplication in project files.
1541
1542 For other cases, the user must supply them manually.
1543
1544 For cases where inference is supported, the user need only specify the targets in TargetFrameworks, e.g:
1545 <PropertyGroup>
1546 <TargetFrameworks>net45;netstandard1.0</TargetFrameworks>
1547 </PropertyGroup>
1548
1549 For cases where inference is not supported, identifier, version and profile can be specified explicitly as follows:
1550 <PropertyGroup>
1551 <TargetFrameworks>portable-net451+win81;xyz1.0</TargetFrameworks>
1552 <PropertyGroup>
1553 <PropertyGroup Condition="'$(TargetFramework)' == 'portable-net451+win81'">
1554 <TargetFrameworkIdentifier>.NETPortable</TargetFrameworkIdentifier>
1555 <TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
1556 <TargetFrameworkProfile>Profile44</TargetFrameworkProfile>
1557 </PropertyGroup>
1558 <PropertyGroup Condition="'$(TargetFramework)' == 'xyz1.0'">
1559 <TargetFrameworkIdentifier>Xyz</TargetFrameworkVersion>
1560 <PropertyGroup>
1561
1562 Note in the xyz1.0 case, which is meant to demonstrate a framework we don't yet recognize, we can still
1563 infer the version of 1.0. The user can also override it as always we honor a TargetFrameworkIdentifier
1564 or TargetFrameworkVersion that is already set.
1565 -->
1566 <!-- Hook for importing custom target framework parsing -->
1567 <!--<Import Project="$(BeforeTargetFrameworkInferenceTargets)" Condition="$(BeforeTargetFrameworkInferenceTargets) != ''" />-->
1568 <!--
1569 Parse TargetFramework properties.
1570 -->
1571 <PropertyGroup Condition="'$(TargetFramework)' != '' and ('$(TargetFrameworkIdentifier)' == '' or '$(TargetFrameworkVersion)' == '')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1572 <TargetFrameworkIdentifier>$([MSBuild]::GetTargetFrameworkIdentifier('$(TargetFramework)'))</TargetFrameworkIdentifier>
1573 <TargetFrameworkVersion>v$([MSBuild]::GetTargetFrameworkVersion('$(TargetFramework)', 2))</TargetFrameworkVersion>
1574 </PropertyGroup>
1575 <!--
1576 Parse TargetPlatform properties.
1577 -->
1578 <PropertyGroup Condition="'$(TargetFramework)' != '' and ('$(TargetPlatformIdentifier)' == '' or '$(TargetPlatformVersion)' == '')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1579 <TargetPlatformIdentifier Condition="'$(TargetPlatformIdentifier)' == ''">$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)'))</TargetPlatformIdentifier>
1580 <TargetPlatformVersion Condition="'$(TargetPlatformIdentifier)' == 'Windows'">$([MSBuild]::GetTargetPlatformVersion('$(TargetFramework)', 4))</TargetPlatformVersion>
1581 <TargetPlatformVersion Condition="'$(TargetPlatformVersion)' == '' or ('$(TargetPlatformIdentifier)' == 'Windows' and !$([MSBuild]::VersionGreaterThanOrEquals($(TargetPlatformVersion), 10.0)))">$([MSBuild]::GetTargetPlatformVersion('$(TargetFramework)', 2))</TargetPlatformVersion>
1582 <TargetPlatformVersion Condition="$([MSBuild]::VersionEquals($(TargetPlatformVersion), 0.0))" />
1583 <!-- Normalize casing of windows to Windows -->
1584 <TargetPlatformIdentifier Condition="'$(TargetPlatformIdentifier)' == 'Windows'">Windows</TargetPlatformIdentifier>
1585 </PropertyGroup>
1586 <!--
1587 Trigger an error if we're unable to infer the framework identifier and version.
1588
1589 We have to evaluate this here and not in the target because by the time the target runs,
1590 Microsoft.Common.targets will have defaulted to .NETFramework,Version=v4.0
1591 -->
1592 <PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == '' or '$(TargetFrameworkIdentifier)' == 'Unsupported' or '$(TargetFrameworkVersion)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1593 <_UnsupportedTargetFrameworkError>true</_UnsupportedTargetFrameworkError>
1594 </PropertyGroup>
1595 <!--
1596 NOTE: We must not validate the TFM before restore target runs as it prevents adding additional TFM
1597 support from being provided by a nuget package such as MSBuild.Sdk.Extras.
1598
1599 We run before RunResolvePackageDependencies and GetReferenceAssemblyPaths so that design-time builds
1600 which do not currently invoke _CheckForInvalidConfigurationAndPlatform, will not trigger spurious
1601 errors that are only consequences of the root cause identified here.
1602 -->
1603 <Target Name="_CheckForUnsupportedTargetFramework" BeforeTargets="_CheckForInvalidConfigurationAndPlatform;RunResolvePackageDependencies;GetFrameworkPaths;GetReferenceAssemblyPaths;Restore" Condition="'$(_UnsupportedTargetFrameworkError)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1604 <NETSdkError Condition="!$(TargetFramework.Contains(';'))" ResourceName="CannotInferTargetFrameworkIdentifierAndVersion" FormatArguments="$([MSBuild]::Escape('$(TargetFramework)'))" />
1605 <NETSdkError Condition="$(TargetFramework.Contains(';'))" ResourceName="TargetFrameworkWithSemicolon" FormatArguments="$([MSBuild]::Escape('$(TargetFramework)'))" />
1606 </Target>
1607 <!-- Skip this target for design time builds when there are missing workload packs.
1608 This will prevent design time builds from failing and therefore allow
1609 Visual Studio to collect the workloads from the GetSuggestedWorkloads target -->
1610 <Target Name="_CheckForUnsupportedTargetPlatformIdentifier" BeforeTargets="_CheckForInvalidConfigurationAndPlatform;RunResolvePackageDependencies;GetFrameworkPaths;GetReferenceAssemblyPaths;CollectPackageReferences" Condition="'$(TargetPlatformIdentifier)' != '' and '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), 5.0)) And ('$(DesignTimeBuild)' != 'true' Or '@(MissingWorkloadPack)' == '')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1611 <PropertyGroup>
1612 <TargetPlatformSupported Condition="'$(TargetPlatformIdentifier)' == 'Windows'">true</TargetPlatformSupported>
1613 </PropertyGroup>
1614 <NETSdkError Condition="'$(TargetPlatformSupported)' != 'true'" ResourceName="UnsupportedTargetPlatformIdentifier" FormatArguments="$(TargetPlatformIdentifier)" />
1615 </Target>
1616 <UsingTask TaskName="AllowEmptyTelemetry" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
1617 <Target Name="_CollectTargetFrameworkForTelemetry" AfterTargets="_CheckForUnsupportedTargetFramework" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1618 <AllowEmptyTelemetry EventName="targetframeworkeval" EventData="TargetFrameworkVersion=$([MSBuild]::Escape('$(TargetFrameworkMoniker)'));RuntimeIdentifier=$(RuntimeIdentifier);SelfContained=$(SelfContained);UseApphost=$(UseApphost);OutputType=$(OutputType)" />
1619 </Target>
1620 <!--
1621 Don't leave TargetFrameworkVersion empty if it still hasn't been determined. We will trigger the error above,
1622 but we need this to be a valid version so that our error message does not get pre-empted by failure to interpret
1623 version comparison expressions, which is currently unrecoverable in VS.
1624
1625 Also don't leave TargetFrameworkIdentifier unset as it will be defaulted to .NETFramework by common targets, which
1626 can cause restore (which we cannot block, see above) to silently succeed for empty TargetFramework.
1627 -->
1628 <PropertyGroup Condition="'$(TargetFrameworkVersion)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1629 <TargetFrameworkVersion>v0.0</TargetFrameworkVersion>
1630 </PropertyGroup>
1631 <PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1632 <TargetFrameworkIdentifier>_</TargetFrameworkIdentifier>
1633 </PropertyGroup>
1634 <!--
1635 Trigger an error if targeting a higher version of .NET Core or .NET Standard than is supported by the current SDK.
1636 -->
1637 <Target Name="_CheckForUnsupportedNETCoreVersion" BeforeTargets="_CheckForInvalidConfigurationAndPlatform;Restore;CollectPackageReferences" Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' And '$(NETCoreAppMaximumVersion)' != ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1638 <NETSdkError Condition="'$(_TargetFrameworkVersionWithoutV)' &gt; '$(NETCoreAppMaximumVersion)'" ResourceName="UnsupportedTargetFrameworkVersion" FormatArguments=".NET;$(_TargetFrameworkVersionWithoutV);$(NETCoreAppMaximumVersion)" />
1639 </Target>
1640 <!--
1641 Trigger an error if C++ project targeting a lower version of .NET Core than 3.1.
1642 -->
1643 <Target Name="_CheckForUnsupportedCppNETCoreVersion" BeforeTargets="_CheckForInvalidConfigurationAndPlatform;Restore;CollectPackageReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1644 <NETSdkError Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and '$(_TargetFrameworkVersionWithoutV)' &lt; '3.1' and ('$(Language)' == 'C++' and '$(_EnablePackageReferencesInVCProjects)' != 'true')" ResourceName="CppRequiresTFMVersion31" />
1645 </Target>
1646 <!--C++/CLI has its own logic of determine TargetPlatformIdentifier and TargetPlatformVersion-->
1647 <PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), 5.0)) and ('$(Language)' != 'C++' or '$(_EnablePackageReferencesInVCProjects)' == 'true')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1648 <_EnableDefaultWindowsPlatform>false</_EnableDefaultWindowsPlatform>
1649 <UseOSWinMdReferences>false</UseOSWinMdReferences>
1650 </PropertyGroup>
1651 <PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETStandard' And '$(NETStandardMaximumVersion)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1652 <NETStandardMaximumVersion>2.1</NETStandardMaximumVersion>
1653 </PropertyGroup>
1654 <Target Name="_CheckForUnsupportedNETStandardVersion" BeforeTargets="_CheckForInvalidConfigurationAndPlatform;Restore;CollectPackageReferences" Condition="'$(TargetFrameworkIdentifier)' == '.NETStandard' And '$(NETStandardMaximumVersion)' != ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1655 <NETSdkError Condition="'$(_TargetFrameworkVersionWithoutV)' &gt; '$(NETStandardMaximumVersion)'" ResourceName="UnsupportedTargetFrameworkVersion" FormatArguments=".NET Standard;$(_TargetFrameworkVersionWithoutV);$(NETStandardMaximumVersion)" />
1656 </Target>
1657 <Target Name="_CheckForUnsupportedTargetFrameworkAndFeatureCombination" BeforeTargets="_CheckForInvalidConfigurationAndPlatform;Restore;CollectPackageReferences" Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1658 <NETSdkError Condition="'$(UsingNETSdkDefaults)' != 'true'" ResourceName="NETFrameworkWithoutUsingNETSdkDefaults" />
1659 </Target>
1660 <Target Name="_CheckForSupportedOSPlatformVersionHigherThanTargetPlatformVersion" BeforeTargets="_CheckForInvalidConfigurationAndPlatform" Condition="'$(TargetPlatformVersion)' != '' and '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), 5.0))" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1661 <NETSdkError Condition="'$(SupportedOSPlatformVersion)' != '' and $(TargetPlatformVersion) != '' and $([MSBuild]::VersionGreaterThan($(SupportedOSPlatformVersion), $(TargetPlatformVersion)))" ResourceName="CannotHaveSupportedOSPlatformVersionHigherThanTargetPlatformVersion" FormatArguments="$(SupportedOSPlatformVersion);$(TargetPlatformVersion)" />
1662 </Target>
1663 <!--C++/CLI targets rely on the patch version of the Windows SDK version as TargetPlatformVersion. Skip the normalization.-->
1664 <Target Name="_NormalizeTargetPlatformVersion" BeforeTargets="ProcessFrameworkReferences" Condition="'$(TargetPlatformVersion)' != '' and '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), 5.0)) and ('$(Language)' != 'C++' or '$(_EnablePackageReferencesInVCProjects)' == 'true')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1665 <ItemGroup>
1666 <_ValidTargetPlatformVersion Include="@(SdkSupportedTargetPlatformVersion)" Condition="'@(SdkSupportedTargetPlatformVersion)' != '' and $([MSBuild]::VersionEquals(%(Identity), $(TargetPlatformVersion)))" />
1667 </ItemGroup>
1668 <PropertyGroup>
1669 <TargetPlatformVersion Condition="'@(_ValidTargetPlatformVersion)' != '' and '@(_ValidTargetPlatformVersion-&gt;Count())' == '1' and '@(_ValidTargetPlatformVersion)' != '$(TargetPlatformVersion)'">@(_ValidTargetPlatformVersion)</TargetPlatformVersion>
1670 </PropertyGroup>
1671 </Target>
1672 <Target Name="_CheckForInvalidTargetPlatformVersion" BeforeTargets="_CheckForInvalidConfigurationAndPlatform" DependsOnTargets="_NormalizeTargetPlatformVersion" Condition="'$(TargetPlatformVersion)' != '' and '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), 5.0)) and ('$(Language)' != 'C++' or '$(_EnablePackageReferencesInVCProjects)' == 'true')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1673 <PropertyGroup>
1674 <TargetPlatformVersionSupported Condition="'$(TargetPlatformVersionSupported)' == '' and '@(_ValidTargetPlatformVersion)' != ''">true</TargetPlatformVersionSupported>
1675 <_ValidTargetPlatformVersions Condition="'@(SdkSupportedTargetPlatformVersion)' != ''">@(SdkSupportedTargetPlatformVersion, '%0a')</_ValidTargetPlatformVersions>
1676 <_ValidTargetPlatformVersions Condition="'@(SdkSupportedTargetPlatformVersion)' == ''">None</_ValidTargetPlatformVersions>
1677 </PropertyGroup>
1678 <NetSdkError Condition="'$(TargetPlatformVersionSupported)' != 'true'" ResourceName="InvalidTargetPlatformVersion" FormatArguments="$(TargetPlatformVersion);$(TargetPlatformIdentifier);$(_ValidTargetPlatformVersions)" />
1679 </Target>
1680 <!-- Exclude files from OutputPath and IntermediateOutputPath from default item globs. Use the value
1681 of these properties before the TargetFramework is appended, so that if these values are specified
1682 in the project file, the specified value will be used for the exclude. -->
1683 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1684 <DefaultItemExcludes>$(DefaultItemExcludes);$(OutputPath)/**</DefaultItemExcludes>
1685 <DefaultItemExcludes>$(DefaultItemExcludes);$(IntermediateOutputPath)/**</DefaultItemExcludes>
1686 </PropertyGroup>
1687 <!-- Projects which don't use Microsoft.NET.Sdk will typically define the OutputPath directly (usually in a
1688 Configuration-specific PropertyGroup), so in that case we won't append to it by default. -->
1689 <PropertyGroup Condition="'$(UsingNETSdkDefaults)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1690 <AppendTargetFrameworkToOutputPath Condition="'$(AppendTargetFrameworkToOutputPath)' == ''">true</AppendTargetFrameworkToOutputPath>
1691 </PropertyGroup>
1692 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1693 <ProduceReferenceAssembly Condition="'$(ProduceReferenceAssembly)' == '' and '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), 5.0)) and ('$(ProduceOnlyReferenceAssembly)' != 'true')">true</ProduceReferenceAssembly>
1694 </PropertyGroup>
1695 <!--
1696 Append $(TargetFramework) directory to output and intermediate paths to prevent bin clashes between
1697 targets.
1698 -->
1699 <PropertyGroup Condition="'$(AppendTargetFrameworkToOutputPath)' == 'true' and '$(TargetFramework)' != '' and '$(_UnsupportedTargetFrameworkError)' != 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1700 <IntermediateOutputPath>$(IntermediateOutputPath)$(TargetFramework.ToLowerInvariant())\</IntermediateOutputPath>
1701 <OutputPath>$(OutputPath)$(TargetFramework.ToLowerInvariant())\</OutputPath>
1702 </PropertyGroup>
1703 <!--
1704============================================================================================================================================
1705 </Import>
1706
1707C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.BeforeCommon.targets
1708============================================================================================================================================
1709-->
1710 <!-- Related issue: https://github.com/dotnet/sdk/issues/12324-->
1711 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1712 <!-- Import winfx targets when we're targeting .NETFramework and not importing the newer WindowsDesktop targets via `UseWPF`. -->
1713 <ImportFrameworkWinFXTargets Condition="'$(ImportFrameworkWinFXTargets)' == '' and '$(UseWPF)' != 'true' and '$(TargetFrameworkIdentifier)' == '.NETFramework'">true</ImportFrameworkWinFXTargets>
1714 <!-- Otherwise, don't import. -->
1715 <ImportFrameworkWinFXTargets Condition="'$(ImportFrameworkWinFXTargets)' == ''">false</ImportFrameworkWinFXTargets>
1716 </PropertyGroup>
1717 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1718 <_TargetFrameworkVersionWithoutV>$(TargetFrameworkVersion.TrimStart('vV'))</_TargetFrameworkVersionWithoutV>
1719 </PropertyGroup>
1720 <!--
1721 Import targets from RazorSDK if referenced
1722 Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.BeforeCommon.targets
1723 Sdks\Microsoft.NET.Sdk.Razor\targets\Microsoft.NET.Sdk.Razor.BeforeCommon.targets
1724 -->
1725 <!--<Import Project="$(MSBuildThisFileDirectory)..\..\Microsoft.NET.Sdk.Razor\targets\Microsoft.NET.Sdk.Razor.BeforeCommon.targets" Condition="'$(UsingMicrosoftNETSdkRazor)' == 'true'" />-->
1726 <!-- Import workload targets -->
1727 <!--
1728============================================================================================================================================
1729 <Import Project="Microsoft.NET.Sdk.ImportWorkloads.targets" Condition="'$(MSBuildEnableWorkloadResolver)' == 'true'">
1730
1731C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.ImportWorkloads.targets
1732============================================================================================================================================
1733-->
1734 <!--
1735***********************************************************************************************
1736Microsoft.NET.Sdk.ImportWorkloads.targets
1737
1738WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
1739 created a backup copy. Incorrect changes to this file will make it
1740 impossible to load or build your projects from the command-line or the IDE.
1741
1742Copyright (c) .NET Foundation. All rights reserved.
1743***********************************************************************************************
1744-->
1745 <!-- Workload support -->
1746 <!-- Import workload manifests -->
1747 <!--
1748============================================================================================================================================
1749 <Import Project="WorkloadManifest.targets" Sdk="Microsoft.NET.SDK.WorkloadManifestTargetsLocator">
1750
1751C:\Program Files\dotnet\sdk-manifests\6.0.100\microsoft.net.sdk.android\WorkloadManifest.targets
1752============================================================================================================================================
1753-->
1754 <!--<Import Project="Sdk.targets" Sdk="Microsoft.Android.Sdk" Condition=" '$(TargetPlatformIdentifier)' == 'android' " />-->
1755 <!--<Import Project="Sdk.targets" Sdk="Microsoft.Android.Sdk.BundleTool" Condition=" '$(TargetPlatformIdentifier)' == 'android' " />-->
1756 <ItemGroup Condition=" '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), '6.0')) ">
1757 <SdkSupportedTargetPlatformIdentifier Include="android" DisplayName="Android" />
1758 </ItemGroup>
1759 <!--
1760============================================================================================================================================
1761 </Import>
1762============================================================================================================================================
1763-->
1764 <!--
1765============================================================================================================================================
1766 <Import Project="WorkloadManifest.targets" Sdk="Microsoft.NET.SDK.WorkloadManifestTargetsLocator">
1767
1768C:\Program Files\dotnet\sdk-manifests\6.0.100\microsoft.net.sdk.ios\WorkloadManifest.targets
1769============================================================================================================================================
1770-->
1771 <!--<Import Project="Sdk.props" Sdk="Microsoft.iOS.Sdk" Condition="'$(TargetPlatformIdentifier)' == 'iOS'" />-->
1772 <!--<Import Project="Sdk.props" Sdk="Microsoft.iOS.Windows.Sdk" Condition=" '$(TargetPlatformIdentifier)' == 'iOS' and $([MSBuild]::IsOSPlatform('windows'))" />-->
1773 <ItemGroup Condition=" '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), '6.0')) ">
1774 <SdkSupportedTargetPlatformIdentifier Include="ios" DisplayName="iOS" />
1775 </ItemGroup>
1776 <!--
1777============================================================================================================================================
1778 </Import>
1779============================================================================================================================================
1780-->
1781 <!--
1782============================================================================================================================================
1783 <Import Project="WorkloadManifest.targets" Sdk="Microsoft.NET.SDK.WorkloadManifestTargetsLocator">
1784
1785C:\Program Files\dotnet\sdk-manifests\6.0.100\microsoft.net.sdk.maccatalyst\WorkloadManifest.targets
1786============================================================================================================================================
1787-->
1788 <!--<Import Project="Sdk.props" Sdk="Microsoft.MacCatalyst.Sdk" Condition="'$(TargetPlatformIdentifier)' == 'MacCatalyst'" />-->
1789 <ItemGroup Condition=" '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), '6.0')) ">
1790 <SdkSupportedTargetPlatformIdentifier Include="maccatalyst" DisplayName="Mac Catalyst" />
1791 </ItemGroup>
1792 <!--
1793============================================================================================================================================
1794 </Import>
1795============================================================================================================================================
1796-->
1797 <!--
1798============================================================================================================================================
1799 <Import Project="WorkloadManifest.targets" Sdk="Microsoft.NET.SDK.WorkloadManifestTargetsLocator">
1800
1801C:\Program Files\dotnet\sdk-manifests\6.0.100\microsoft.net.sdk.macos\WorkloadManifest.targets
1802============================================================================================================================================
1803-->
1804 <!--<Import Project="Sdk.props" Sdk="Microsoft.macOS.Sdk" Condition="'$(TargetPlatformIdentifier)' == 'macOS'" />-->
1805 <ItemGroup Condition=" '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), '6.0')) ">
1806 <SdkSupportedTargetPlatformIdentifier Include="macos" DisplayName="macOS" />
1807 </ItemGroup>
1808 <!--
1809============================================================================================================================================
1810 </Import>
1811============================================================================================================================================
1812-->
1813 <!--
1814============================================================================================================================================
1815 <Import Project="WorkloadManifest.targets" Sdk="Microsoft.NET.SDK.WorkloadManifestTargetsLocator">
1816
1817C:\Program Files\dotnet\sdk-manifests\6.0.100\microsoft.net.sdk.maui\WorkloadManifest.targets
1818============================================================================================================================================
1819-->
1820 <ItemGroup Condition=" '$(UseMaui)' == 'true' or '$(UseMauiCore)' == 'true' ">
1821 <ProjectCapability Include="UseMauiCore" />
1822 <ProjectCapability Condition=" '$(UseMaui)' == 'true' " Include="UseMaui" />
1823 </ItemGroup>
1824 <!--<Import Project="Sdk.targets" Sdk="Microsoft.Maui.Sdk" Condition=" '$(UseMaui)' == 'true' or '$(UseMauiCore)' == 'true' or '$(UseMauiEssentials)' == 'true' or '$(UseMauiAssets)' == 'true' " />-->
1825 <!--
1826============================================================================================================================================
1827 </Import>
1828============================================================================================================================================
1829-->
1830 <!--
1831============================================================================================================================================
1832 <Import Project="WorkloadManifest.targets" Sdk="Microsoft.NET.SDK.WorkloadManifestTargetsLocator">
1833
1834C:\Program Files\dotnet\sdk-manifests\6.0.100\microsoft.net.sdk.tvos\WorkloadManifest.targets
1835============================================================================================================================================
1836-->
1837 <!--<Import Project="Sdk.props" Sdk="Microsoft.tvOS.Sdk" Condition="'$(TargetPlatformIdentifier)' == 'tvOS'" />-->
1838 <ItemGroup Condition=" '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), '6.0')) ">
1839 <SdkSupportedTargetPlatformIdentifier Include="tvos" DisplayName="tvOS" />
1840 </ItemGroup>
1841 <!--
1842============================================================================================================================================
1843 </Import>
1844============================================================================================================================================
1845-->
1846 <!--
1847============================================================================================================================================
1848 <Import Project="WorkloadManifest.targets" Sdk="Microsoft.NET.SDK.WorkloadManifestTargetsLocator">
1849
1850C:\Program Files\dotnet\sdk-manifests\6.0.100\microsoft.net.workload.emscripten\WorkloadManifest.targets
1851============================================================================================================================================
1852-->
1853 <PropertyGroup Condition="'$(RuntimeIdentifier)' == 'browser-wasm'">
1854 <BrowserWorkloadDisabled Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and !$([MSBuild]::VersionGreaterThanOrEquals('$(TargetFrameworkVersion)', '6.0'))">true</BrowserWorkloadDisabled>
1855 </PropertyGroup>
1856 <PropertyGroup Condition="'$(RuntimeIdentifier)' == 'browser-wasm' and '$(BrowserWorkloadDisabled)' == 'true'">
1857 <_NativeBuildNeeded Condition="'$(RunAOTCompilation)' == 'true'">true</_NativeBuildNeeded>
1858 <WorkloadDisabledWithReason Condition="'$(_NativeBuildNeeded)' == 'true'">WebAssembly workloads (required for AOT) are only supported for projects targeting net6.0+</WorkloadDisabledWithReason>
1859 </PropertyGroup>
1860 <PropertyGroup Condition="'$(RuntimeIdentifier)' == 'browser-wasm' and '$(BrowserWorkloadDisabled)' != 'true'">
1861 <UsingBrowserRuntimeWorkload Condition="'$(RunAOTCompilation)' == 'true' or '$(UsingMicrosoftNETSdkBlazorWebAssembly)' != 'true'">true</UsingBrowserRuntimeWorkload>
1862 <UsingBrowserRuntimeWorkload Condition="'$(UsingBrowserRuntimeWorkload)' == ''">$(WasmNativeWorkload)</UsingBrowserRuntimeWorkload>
1863 </PropertyGroup>
1864 <PropertyGroup Condition="'$(BrowserWorkloadDisabled)' == 'true'">
1865 <UsingBrowserRuntimeWorkload>false</UsingBrowserRuntimeWorkload>
1866 <WasmNativeWorkload>false</WasmNativeWorkload>
1867 </PropertyGroup>
1868 <!--<ImportGroup Condition="'$(RuntimeIdentifier)' == 'browser-wasm' and '$(UsingBrowserRuntimeWorkload)' == 'true'">-->
1869 <!--<Import Project="Sdk.props" Sdk="Microsoft.NET.Runtime.Emscripten.Python" Condition="!$([MSBuild]::IsOsPlatform('Linux'))" />-->
1870 <!--<Import Project="Sdk.props" Sdk="Microsoft.NET.Runtime.Emscripten.Node" />-->
1871 <!--<Import Project="Sdk.props" Sdk="Microsoft.NET.Runtime.Emscripten.Sdk" />-->
1872 <!--</ImportGroup>-->
1873 <!--
1874============================================================================================================================================
1875 </Import>
1876============================================================================================================================================
1877-->
1878 <!--
1879============================================================================================================================================
1880 <Import Project="WorkloadManifest.targets" Sdk="Microsoft.NET.SDK.WorkloadManifestTargetsLocator">
1881
1882C:\Program Files\dotnet\sdk-manifests\6.0.100\microsoft.net.workload.mono.toolchain\WorkloadManifest.targets
1883============================================================================================================================================
1884-->
1885 <PropertyGroup>
1886 <RuntimePackInWorkloadVersion>6.0.0</RuntimePackInWorkloadVersion>
1887 <BrowserWorkloadDisabled Condition="'$(BrowserWorkloadDisabled)' == '' and&#xA; '$(RuntimeIdentifier)' == 'browser-wasm' and&#xA; '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and&#xA; !$([MSBuild]::VersionGreaterThanOrEquals('$(TargetFrameworkVersion)', '6.0'))">true</BrowserWorkloadDisabled>
1888 </PropertyGroup>
1889 <PropertyGroup Condition="'$(RuntimeIdentifier)' == 'browser-wasm' AND '$(UsingBrowserRuntimeWorkload)' == ''">
1890 <!-- $(WasmBuildNative)==true is needed to enable workloads, when using native references, without AOT -->
1891 <UsingBrowserRuntimeWorkload Condition="'$(RunAOTCompilation)' == 'true' or '$(WasmBuildNative)' == 'true' or '$(UsingMicrosoftNETSdkBlazorWebAssembly)' != 'true'">true</UsingBrowserRuntimeWorkload>
1892 <UsingBrowserRuntimeWorkload Condition="'$(UsingBrowserRuntimeWorkload)' == ''">$(WasmNativeWorkload)</UsingBrowserRuntimeWorkload>
1893 </PropertyGroup>
1894 <PropertyGroup Condition="'$(BrowserWorkloadDisabled)' == 'true'">
1895 <UsingBrowserRuntimeWorkload>false</UsingBrowserRuntimeWorkload>
1896 <WasmNativeWorkload>false</WasmNativeWorkload>
1897 </PropertyGroup>
1898 <PropertyGroup Condition="'$(UsingMicrosoftNETSdkBlazorWebAssembly)' == 'true' and '$(UsingBrowserRuntimeWorkload)' == 'true'">
1899 <WasmGenerateAppBundle>false</WasmGenerateAppBundle>
1900 <UsingBlazorAOTWorkloadManifest>true</UsingBlazorAOTWorkloadManifest>
1901 </PropertyGroup>
1902 <!--<Import Project="Sdk.props" Sdk="Microsoft.NET.Runtime.MonoAOTCompiler.Task" Condition="'$(RunAOTCompilation)' == 'true' and '$(BrowserWorkloadDisabled)' != 'true'" />-->
1903 <!--<ImportGroup Condition="'$(TargetPlatformIdentifier)' == 'android'">-->
1904 <!--<Import Project="Sdk.props" Sdk="Microsoft.NET.Runtime.MonoTargets.Sdk" />-->
1905 <!--<Import Project="Sdk.targets" Sdk="Microsoft.NET.Runtime.MonoTargets.Sdk" />-->
1906 <!--</ImportGroup>-->
1907 <!--<ImportGroup Condition="'$(TargetPlatformIdentifier)' == 'android' and '$(RunAOTCompilation)' == 'true'">-->
1908 <!--<Import Project="Sdk.props" Sdk="Microsoft.NETCore.App.Runtime.AOT.Cross.android-x86" />-->
1909 <!--<Import Project="Sdk.props" Sdk="Microsoft.NETCore.App.Runtime.AOT.Cross.android-x64" />-->
1910 <!--<Import Project="Sdk.props" Sdk="Microsoft.NETCore.App.Runtime.AOT.Cross.android-arm" />-->
1911 <!--<Import Project="Sdk.props" Sdk="Microsoft.NETCore.App.Runtime.AOT.Cross.android-arm64" />-->
1912 <!--</ImportGroup>-->
1913 <!--<ImportGroup Condition="'$(TargetPlatformIdentifier)' == 'macOS'">-->
1914 <!--<Import Project="Sdk.props" Sdk="Microsoft.NET.Runtime.MonoTargets.Sdk" />-->
1915 <!--<Import Project="Sdk.targets" Sdk="Microsoft.NET.Runtime.MonoTargets.Sdk" />-->
1916 <!--</ImportGroup>-->
1917 <!--
1918 <ImportGroup Condition="'$(TargetPlatformIdentifier)' == 'macOS' and $([MSBuild]::IsOSPlatform('osx'))">
1919 <Import Project="Sdk.props" Sdk="Microsoft.NETCore.App.Runtime.AOT.Cross.osx-arm64" />
1920 <Import Project="Sdk.props" Sdk="Microsoft.NETCore.App.Runtime.AOT.Cross.osx-x64" />
1921 </ImportGroup>
1922 -->
1923 <!--<ImportGroup Condition="'$(TargetPlatformIdentifier)' == 'ios'">-->
1924 <!--<Import Project="Sdk.props" Sdk="Microsoft.NET.Runtime.MonoTargets.Sdk" />-->
1925 <!--<Import Project="Sdk.targets" Sdk="Microsoft.NET.Runtime.MonoTargets.Sdk" />-->
1926 <!--</ImportGroup>-->
1927 <!--<ImportGroup Condition="'$(TargetPlatformIdentifier)' == 'ios' and $([MSBuild]::IsOSPlatform('osx'))">-->
1928 <!--<Import Project="Sdk.props" Sdk="Microsoft.NETCore.App.Runtime.AOT.Cross.ios-arm" />-->
1929 <!--<Import Project="Sdk.props" Sdk="Microsoft.NETCore.App.Runtime.AOT.Cross.ios-arm64" />-->
1930 <!--<Import Project="Sdk.props" Sdk="Microsoft.NETCore.App.Runtime.AOT.Cross.iossimulator-arm64" />-->
1931 <!--<Import Project="Sdk.props" Sdk="Microsoft.NETCore.App.Runtime.AOT.Cross.iossimulator-x64" />-->
1932 <!--<Import Project="Sdk.props" Sdk="Microsoft.NETCore.App.Runtime.AOT.Cross.iossimulator-x86" />-->
1933 <!--</ImportGroup>-->
1934 <!--<ImportGroup Condition="'$(TargetPlatformIdentifier)' == 'maccatalyst'">-->
1935 <!--<Import Project="Sdk.props" Sdk="Microsoft.NET.Runtime.MonoTargets.Sdk" />-->
1936 <!--<Import Project="Sdk.targets" Sdk="Microsoft.NET.Runtime.MonoTargets.Sdk" />-->
1937 <!--</ImportGroup>-->
1938 <!--<ImportGroup Condition="'$(TargetPlatformIdentifier)' == 'maccatalyst' and $([MSBuild]::IsOSPlatform('osx'))">-->
1939 <!--<Import Project="Sdk.props" Sdk="Microsoft.NETCore.App.Runtime.AOT.Cross.maccatalyst-arm64" />-->
1940 <!--<Import Project="Sdk.props" Sdk="Microsoft.NETCore.App.Runtime.AOT.Cross.maccatalyst-x64" />-->
1941 <!--</ImportGroup>-->
1942 <!--<ImportGroup Condition="'$(TargetPlatformIdentifier)' == 'tvos'">-->
1943 <!--<Import Project="Sdk.props" Sdk="Microsoft.NET.Runtime.MonoTargets.Sdk" />-->
1944 <!--<Import Project="Sdk.targets" Sdk="Microsoft.NET.Runtime.MonoTargets.Sdk" />-->
1945 <!--</ImportGroup>-->
1946 <!--<ImportGroup Condition="'$(TargetPlatformIdentifier)' == 'tvos' and $([MSBuild]::IsOSPlatform('osx'))">-->
1947 <!--<Import Project="Sdk.props" Sdk="Microsoft.NETCore.App.Runtime.AOT.Cross.tvos-arm64" />-->
1948 <!--<Import Project="Sdk.props" Sdk="Microsoft.NETCore.App.Runtime.AOT.Cross.tvossimulator-arm64" />-->
1949 <!--<Import Project="Sdk.props" Sdk="Microsoft.NETCore.App.Runtime.AOT.Cross.tvossimulator-x64" />-->
1950 <!--</ImportGroup>-->
1951 <!--<ImportGroup Condition="'$(RuntimeIdentifier)' == 'browser-wasm' and '$(UsingBrowserRuntimeWorkload)' == 'true'">-->
1952 <!--<Import Project="Sdk.props" Sdk="Microsoft.NET.Runtime.MonoTargets.Sdk" />-->
1953 <!--<Import Project="Sdk.targets" Sdk="Microsoft.NET.Runtime.WebAssembly.Sdk" />-->
1954 <!--<Import Project="Sdk.props" Sdk="Microsoft.NETCore.App.Runtime.AOT.Cross.browser-wasm" />-->
1955 <!--<Import Project="Sdk.targets" Sdk="Microsoft.NET.Runtime.MonoTargets.Sdk" />-->
1956 <!--</ImportGroup>-->
1957 <PropertyGroup Condition="'$(TargetPlatformIdentifier)' == 'android' or '$(TargetPlatformIdentifier)' == 'macOS' or '$(TargetPlatformIdentifier)' == 'ios' or '$(TargetPlatformIdentifier)' == 'maccatalyst' or '$(TargetPlatformIdentifier)' == 'tvos' or ('$(RuntimeIdentifier)' == 'browser-wasm' and '$(UsingBrowserRuntimeWorkload)' == 'true')">
1958 <_MonoWorkloadTargetsMobile>true</_MonoWorkloadTargetsMobile>
1959 <_MonoWorkloadRuntimePackPackageVersion>$(RuntimePackInWorkloadVersion)</_MonoWorkloadRuntimePackPackageVersion>
1960 </PropertyGroup>
1961 <ItemGroup Condition="'$(_MonoWorkloadTargetsMobile)' == 'true'">
1962 <MonoRuntimePackRids Include="&#xA; linux-x64;&#xA; win-x64;&#xA; osx-x64;&#xA; osx-arm64;&#xA; maccatalyst-x64;&#xA; maccatalyst-arm64;&#xA; browser-wasm;&#xA; ios-arm64;&#xA; ios-arm;&#xA; iossimulator-arm64;&#xA; iossimulator-x64;&#xA; iossimulator-x86;&#xA; tvos-arm64;&#xA; tvossimulator-arm64;&#xA; tvossimulator-x64;&#xA; android-arm64;&#xA; android-arm;&#xA; android-x64;&#xA; android-x86;&#xA; " />
1963 <KnownRuntimePack Remove="Microsoft.NETCore.App" />
1964 <KnownRuntimePack Include="Microsoft.NETCore.App" TargetFramework="net6.0" RuntimeFrameworkName="Microsoft.NETCore.App" LatestRuntimeFrameworkVersion="$(_MonoWorkloadRuntimePackPackageVersion)" RuntimePackNamePatterns="Microsoft.NETCore.App.Runtime.Mono.**RID**" RuntimePackRuntimeIdentifiers="@(MonoRuntimePackRids, '%3B')" RuntimePackLabels="Mono" />
1965 </ItemGroup>
1966 <!-- we can't condition sdk imports on the item @(NativeFileReference). Instead, explicitly check before the build
1967 and emit a warning -->
1968 <Target Name="_CheckBrowserWorkloadNeededButNotAvailable" Condition="'$(RuntimeIdentifier)' == 'browser-wasm' and '$(BrowserWorkloadDisabled)' != 'true' and '$(WasmNativeWorkload)' != 'true'" BeforeTargets="Build">
1969 <Warning Condition="@(NativeFileReference-&gt;Count()) &gt; 0" Text="%40(NativeFileReference) is not empty, but the native references won't be linked in, because neither %24(WasmBuildNative), nor %24(RunAOTCompilation) are 'true'. NativeFileReference=@(NativeFileReference)" />
1970 </Target>
1971 <Target Name="_ErrorDisabledWorkload" Condition="'$(BrowserWorkloadDisabled)' == 'true'" BeforeTargets="Build">
1972 <Error Condition="'$(RunAOTCompilation)' == 'true'" Text="WebAssembly workloads, required for AOT, are only supported for projects targeting net6.0+ . Set %24(RunAOTCompilation)=false to disable it." />
1973 <Error Condition="@(NativeFileReference-&gt;Count()) &gt; 0" Text="WebAssembly workloads, required for linking native files (from %40(NativeFileReference)), are only supported for projects targeting net6.0+ ." />
1974 </Target>
1975 <!--
1976============================================================================================================================================
1977 </Import>
1978
1979C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.ImportWorkloads.targets
1980============================================================================================================================================
1981-->
1982 <UsingTask TaskName="ShowMissingWorkloads" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
1983 <Target Name="GetSuggestedWorkloads" Returns="@(SuggestedWorkload)" Condition="@(MissingWorkloadPack) != ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1984 <ShowMissingWorkloads MissingWorkloadPacks="@(MissingWorkloadPack)" NetCoreRoot="$(NetCoreRoot)" NETCoreSdkVersion="$(NETCoreSdkVersion)" GenerateErrorsForMissingWorkloads="false">
1985 <Output TaskParameter="SuggestedWorkloads" ItemName="SuggestedWorkload" />
1986 </ShowMissingWorkloads>
1987 </Target>
1988 <!-- Skip this target for design time builds when there are missing workload packs.
1989 This will prevent design time builds from failing and therefore allow
1990 Visual Studio to collect the workloads from the GetSuggestedWorkloads target -->
1991 <Target Name="_CheckForMissingWorkload" BeforeTargets="_CheckForInvalidConfigurationAndPlatform;_CheckForUnsupportedTargetPlatformIdentifier" Condition="'@(MissingWorkloadPack)' != '' And '$(DesignTimeBuild)' != 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1992 <ShowMissingWorkloads MissingWorkloadPacks="@(MissingWorkloadPack)" NetCoreRoot="$(NetCoreRoot)" NETCoreSdkVersion="$(NETCoreSdkVersion)" GenerateErrorsForMissingWorkloads="true" />
1993 </Target>
1994 <!-- This target is not part of the build. Only used by dotnet workload restore command. Global property "SkipResolvePackageAssets"
1995 need to be set to "true" to avoid requiring restore (which would likely fail if the required workloads aren't already installed).-->
1996 <Target Name="_GetRequiredWorkloads" DependsOnTargets="GetSuggestedWorkloads;PrepareProjectReferences" Returns="@(_ResolvedSuggestedWorkload)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1997 <MSBuild Projects="@(_MSBuildProjectReferenceExistent)" Targets="_GetRequiredWorkloads" BuildInParallel="$(BuildInParallel)" Condition="'%(_MSBuildProjectReferenceExistent.BuildReference)' == 'true' and '@(_MSBuildProjectReferenceExistent)' != ''" RemoveProperties="%(_MSBuildProjectReferenceExistent.GlobalPropertiesToRemove)$(_GlobalPropertiesToRemoveFromProjectReferences);TargetFramework;TargetFrameworks">
1998 <Output TaskParameter="TargetOutputs" ItemName="SuggestedWorkloadFromReference" />
1999 </MSBuild>
2000 <ItemGroup>
2001 <_ResolvedSuggestedWorkload Include="@(SuggestedWorkload)" />
2002 <_ResolvedSuggestedWorkload Include="@(SuggestedWorkloadFromReference)" />
2003 </ItemGroup>
2004 </Target>
2005 <!--
2006============================================================================================================================================
2007 </Import>
2008
2009C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.BeforeCommon.targets
2010============================================================================================================================================
2011-->
2012 <!--
2013 Use RuntimeIdentifier to determine PlatformTarget.
2014 Also, enforce that RuntimeIdentifier is always specified for .NETFramework executables.
2015 -->
2016 <!--
2017============================================================================================================================================
2018 <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.RuntimeIdentifierInference.targets">
2019
2020C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInference.targets
2021============================================================================================================================================
2022-->
2023 <!--
2024***********************************************************************************************
2025Microsoft.NET.RuntimeIdentifierInference.targets
2026
2027WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
2028 created a backup copy. Incorrect changes to this file will make it
2029 impossible to load or build your projects from the command-line or the IDE.
2030
2031Copyright (c) .NET Foundation. All rights reserved.
2032***********************************************************************************************
2033-->
2034 <!--
2035 .NET Framework cannot load native package dependencies dynamically
2036 based on the current architecture. We must have a RID to resolve
2037 and copy native dependencies to the output directory.
2038
2039 When building a .NET Framework exe on Windows and not given a RID,
2040 we'll pick either win7-x64 or win7-x86 (based on PlatformTarget)
2041 if we're not given an explicit RID. However, if after resolving
2042 NuGet assets we find no copy-local native dependencies, we will
2043 emit the binary as AnyCPU.
2044
2045 Note that we must set the RID here early (to be seen during NuGet
2046 restore) in order for the project.assets.json to include the
2047 native dependencies that will let us make the final call on
2048 AnyCPU or platform-specific.
2049
2050 This allows these common cases to work without requiring mention
2051 of RuntimeIdentifier in the user project PlatformTarget:
2052
2053 1. Building an AnyCPU .NET Framework application on any host OS
2054 with no native NuGet dependencies.
2055
2056 2. Building an x86 or x64 .NET Framework application on and for
2057 Windows with native NuGet dependencies that do not require
2058 greater than win7.
2059
2060 However, any other combination of host operating system, CPU
2061 architecture, and minimum Windows version will require some
2062 manual intervention in the project file to set up the right
2063 RID. (**)
2064
2065 (*) Building NET4x from non-Windows is still not fully supported:
2066 https://github.com/dotnet/sdk/issues/335) The point above is
2067 that this code would not have to change to make the first
2068 scenario work on non-Windows hosts.
2069
2070 (**) https://github.com/dotnet/sdk/issues/840 tracks improving
2071 the default RID selection here to make more non-AnyCPU scenarios
2072 work without user intervention. The current static evaluation
2073 requirement limits us.
2074 -->
2075 <PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework' and&#xD;&#xA; '$(HasRuntimeOutput)' == 'true' and&#xD;&#xA; $([MSBuild]::IsOSPlatform(`Windows`))and&#xD;&#xA; '$(RuntimeIdentifier)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2076 <_UsingDefaultRuntimeIdentifier>true</_UsingDefaultRuntimeIdentifier>
2077 <RuntimeIdentifier Condition="'$(PlatformTarget)' == 'x64'">win7-x64</RuntimeIdentifier>
2078 <RuntimeIdentifier Condition="'$(PlatformTarget)' == 'x86' or '$(PlatformTarget)' == ''">win7-x86</RuntimeIdentifier>
2079 </PropertyGroup>
2080 <PropertyGroup Condition="'$(UseCurrentRuntimeIdentifier)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2081 <RuntimeIdentifier>$(NETCoreSdkRuntimeIdentifier)</RuntimeIdentifier>
2082 </PropertyGroup>
2083 <PropertyGroup Condition="'$(PlatformTarget)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2084 <_UsingDefaultPlatformTarget>true</_UsingDefaultPlatformTarget>
2085 </PropertyGroup>
2086 <!-- Determine PlatformTarget (if not already set) from runtime identifier. -->
2087 <Choose xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2088 <When Condition="'$(PlatformTarget)' != '' or '$(RuntimeIdentifier)' == ''" />
2089 <When Condition="$(RuntimeIdentifier.EndsWith('-x86')) or $(RuntimeIdentifier.Contains('-x86-'))">
2090 <PropertyGroup>
2091 <PlatformTarget>x86</PlatformTarget>
2092 </PropertyGroup>
2093 </When>
2094 <When Condition="$(RuntimeIdentifier.EndsWith('-x64')) or $(RuntimeIdentifier.Contains('-x64-'))">
2095 <PropertyGroup>
2096 <PlatformTarget>x64</PlatformTarget>
2097 </PropertyGroup>
2098 </When>
2099 <When Condition="$(RuntimeIdentifier.EndsWith('-arm')) or $(RuntimeIdentifier.Contains('-arm-'))">
2100 <PropertyGroup>
2101 <PlatformTarget>arm</PlatformTarget>
2102 </PropertyGroup>
2103 </When>
2104 <When Condition="$(RuntimeIdentifier.EndsWith('-arm64')) or $(RuntimeIdentifier.Contains('-arm64-'))">
2105 <PropertyGroup>
2106 <PlatformTarget>arm64</PlatformTarget>
2107 </PropertyGroup>
2108 </When>
2109 <Otherwise>
2110 <PropertyGroup>
2111 <PlatformTarget>AnyCPU</PlatformTarget>
2112 </PropertyGroup>
2113 </Otherwise>
2114 </Choose>
2115 <!--
2116 SelfContained was not an option in .NET Core SDK 1.0.
2117 Default SelfContained based on the RuntimeIdentifier, so projects don't have to explicitly set SelfContained.
2118 This avoids a breaking change from 1.0 behavior.
2119 -->
2120 <PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and '$(HasRuntimeOutput)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2121 <SelfContained Condition="'$(SelfContained)' == '' and '$(RuntimeIdentifier)' != ''">true</SelfContained>
2122 <SelfContained Condition="'$(SelfContained)' == ''">false</SelfContained>
2123 <_RuntimeIdentifierUsesAppHost Condition="$(RuntimeIdentifier.StartsWith('ios')) or $(RuntimeIdentifier.StartsWith('tvos')) or $(RuntimeIdentifier.StartsWith('maccatalyst')) or $(RuntimeIdentifier.StartsWith('android')) or $(RuntimeIdentifier.StartsWith('browser'))">false</_RuntimeIdentifierUsesAppHost>
2124 <_RuntimeIdentifierUsesAppHost Condition="'$(_RuntimeIdentifierUsesAppHost)' == ''">true</_RuntimeIdentifierUsesAppHost>
2125 <UseAppHost Condition="'$(UseAppHost)' == '' and&#xD;&#xA; '$(_RuntimeIdentifierUsesAppHost)' == 'true' and&#xD;&#xA; ('$(SelfContained)' == 'true' or&#xD;&#xA; ('$(RuntimeIdentifier)' != '' and '$(_TargetFrameworkVersionWithoutV)' &gt;= '2.1') or&#xD;&#xA; '$(_TargetFrameworkVersionWithoutV)' &gt;= '3.0')">true</UseAppHost>
2126 <UseAppHost Condition="'$(UseAppHost)' == ''">false</UseAppHost>
2127 </PropertyGroup>
2128 <!-- Only use the default apphost if building without a RID and without a deps file path (used by GenerateDeps.proj for CLI tools). -->
2129 <PropertyGroup Condition="'$(DefaultAppHostRuntimeIdentifier)' == '' and&#xD;&#xA; '$(RuntimeIdentifier)' == '' and&#xD;&#xA; (('$(UseAppHost)' == 'true' and '$(ProjectDepsFilePath)' == '') or&#xD;&#xA; ('$(EnableComHosting)' == 'true' and '$(_IsExecutable)' != 'true') or&#xD;&#xA; '$(UseIJWHost)' == 'true')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2130 <DefaultAppHostRuntimeIdentifier>$(NETCoreSdkRuntimeIdentifier)</DefaultAppHostRuntimeIdentifier>
2131 <DefaultAppHostRuntimeIdentifier Condition="$(DefaultAppHostRuntimeIdentifier.StartsWith('win')) and '$(PlatformTarget)' == 'x64'">win-x64</DefaultAppHostRuntimeIdentifier>
2132 <DefaultAppHostRuntimeIdentifier Condition="$(DefaultAppHostRuntimeIdentifier.StartsWith('win')) and '$(PlatformTarget)' == 'x86'">win-x86</DefaultAppHostRuntimeIdentifier>
2133 <DefaultAppHostRuntimeIdentifier Condition="$(DefaultAppHostRuntimeIdentifier.StartsWith('win')) and '$(PlatformTarget)' == 'ARM'">win-arm</DefaultAppHostRuntimeIdentifier>
2134 <DefaultAppHostRuntimeIdentifier Condition="$(DefaultAppHostRuntimeIdentifier.StartsWith('win')) and '$(PlatformTarget)' == 'ARM64'">win-arm64</DefaultAppHostRuntimeIdentifier>
2135 <!-- If we are running on an M1 with a native SDK and the TFM is < 6.0, we have to use a x64 apphost since there are no osx-arm64 apphosts previous to .NET 6.0. -->
2136 <DefaultAppHostRuntimeIdentifier Condition="$(DefaultAppHostRuntimeIdentifier.EndsWith('arm64')) and&#xD;&#xA; $(DefaultAppHostRuntimeIdentifier.StartsWith('osx')) and&#xD;&#xA; $([MSBuild]::VersionLessThan('$(_TargetFrameworkVersionWithoutV)', '6.0'))">$(DefaultAppHostRuntimeIdentifier.Replace("arm64", "x64"))</DefaultAppHostRuntimeIdentifier>
2137 <!-- If we are running on win-arm64 and the TFM is < 5.0, we have to use a x64 apphost since there are no win-arm64 apphosts previous to .NET 5.0. -->
2138 <DefaultAppHostRuntimeIdentifier Condition="$(DefaultAppHostRuntimeIdentifier.EndsWith('arm64')) and&#xD;&#xA; $(DefaultAppHostRuntimeIdentifier.StartsWith('win')) and&#xD;&#xA; $([MSBuild]::VersionLessThan('$(_TargetFrameworkVersionWithoutV)', '5.0'))">$(DefaultAppHostRuntimeIdentifier.Replace("arm64", "x64"))</DefaultAppHostRuntimeIdentifier>
2139 </PropertyGroup>
2140 <Target Name="_CheckForUnsupportedAppHostUsage" BeforeTargets="_CheckForInvalidConfigurationAndPlatform" Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and '$(HasRuntimeOutput)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2141 <NETSdkError Condition="'$(SelfContained)' == 'true' and '$(RuntimeIdentifier)' == ''" ResourceName="CannotHaveSelfContainedWithoutRuntimeIdentifier" />
2142 <NETSdkError Condition="'$(SelfContained)' == 'true' and '$(UseAppHost)' != 'true' and '$(_RuntimeIdentifierUsesAppHost)' == 'true'" ResourceName="CannotUseSelfContainedWithoutAppHost" />
2143 <NETSdkError Condition="'$(SelfContained)' != 'true' and '$(UseAppHost)' == 'true' and '$(_TargetFrameworkVersionWithoutV)' &lt; '2.1'" ResourceName="FrameworkDependentAppHostRequiresVersion21" />
2144 <NETSdkError Condition="'$(PublishSingleFile)' == 'true' and '$(_TargetFrameworkVersionWithoutV)' &lt; '3.0'" ResourceName="PublishSingleFileRequiresVersion30" />
2145 <NETSdkError Condition="'$(PublishSingleFile)' == 'true' and $(RuntimeIdentifier.StartsWith('win7-'))" ResourceName="SingleFileWin7Incompatible" FormatArguments="$(RuntimeIdentifier)" />
2146 <!-- The TFM version checks for PublishReadyToRun PublishTrimmed only generate warnings in .Net core 3.1
2147 because we do not want the behavior to be a breaking change compared to version 3.0 -->
2148 <NETSdkWarning Condition="'$(PublishReadyToRun)' == 'true' and '$(_TargetFrameworkVersionWithoutV)' &lt; '3.0'" ResourceName="PublishReadyToRunRequiresVersion30" />
2149 <NETSdkWarning Condition="'$(PublishTrimmed)' == 'true' and '$(_TargetFrameworkVersionWithoutV)' &lt; '3.0'" ResourceName="PublishTrimmedRequiresVersion30" />
2150 <!-- Generate Trimming warnings for WinForms and Wpf applications-->
2151 <NetSdkError Condition="('$(UseWindowsForms)' == 'true') and ('$(PublishTrimmed)' == 'true') and ('$(_SuppressWinFormsTrimError)' != 'true')" ResourceName="TrimmingWindowsFormsIsNotSupported" />
2152 <NetSdkError Condition="('$(UseWpf)' == 'true') and ('$(PublishTrimmed)' == 'true') and ('$(_SuppressWpfTrimError)' != 'true')" ResourceName="TrimmingWpfIsNotSupported" />
2153 </Target>
2154 <Target Name="_CheckForUnsupportedHostingUsage" BeforeTargets="_CheckForInvalidConfigurationAndPlatform" Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2155 <NETSdkWarning Condition="'$(SelfContained)' == 'true' and '$(EnableComHosting)' == 'true'" ResourceName="NoSupportComSelfContained" />
2156 </Target>
2157 <Target Name="_CheckForMismatchingPlatform" BeforeTargets="_CheckForInvalidConfigurationAndPlatform" Condition="'$(RuntimeIdentifier)' != '' and '$(PlatformTarget)' != ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2158 <NETSdkError Condition="'$(PlatformTarget)' != 'AnyCPU' and !$(RuntimeIdentifier.ToUpperInvariant().Contains($(PlatformTarget.ToUpperInvariant())))" ResourceName="CannotHaveRuntimeIdentifierPlatformMismatchPlatformTarget" FormatArguments="$(RuntimeIdentifier);$(PlatformTarget)" />
2159 </Target>
2160 <Target Name="_CheckForLanguageAndFeatureCombinationSupport" BeforeTargets="_CheckForInvalidConfigurationAndPlatform;ProcessFrameworkReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2161 <NETSdkError Condition="('$(Language)' == 'C++' and '$(_EnablePackageReferencesInVCProjects)' != 'true') and $(OutputType) != 'library' and '$(TargetFrameworkIdentifier)' == '.NETCoreApp'" ResourceName="NoSupportCppNonDynamicLibraryDotnetCore" />
2162 <NETSdkError Condition="('$(Language)' == 'C++' and '$(_EnablePackageReferencesInVCProjects)' != 'true') and $(EnableComHosting) == 'true'" ResourceName="NoSupportCppEnableComHosting" />
2163 <NETSdkError Condition="('$(Language)' == 'C++' and '$(_EnablePackageReferencesInVCProjects)' != 'true') and $(SelfContained) == 'true'" ResourceName="NoSupportCppSelfContained" />
2164 </Target>
2165 <Target Name="_CheckForNETCoreSdkIsPreview" BeforeTargets="_CheckForInvalidConfigurationAndPlatform" Condition=" '$(_NETCoreSdkIsPreview)' == 'true' AND '$(SuppressNETCoreSdkPreviewMessage)' != 'true' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2166 <ShowPreviewMessage />
2167 </Target>
2168 <!-- Projects which don't use Microsoft.NET.Sdk will typically define the OutputPath directly (usually in a
2169 Configuration-specific PropertyGroup), so in that case we won't append to it by default. -->
2170 <PropertyGroup Condition="'$(UsingNETSdkDefaults)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2171 <!-- Projects can opt out of having the RID appended to the output path by setting this to false. -->
2172 <AppendRuntimeIdentifierToOutputPath Condition="'$(AppendRuntimeIdentifierToOutputPath)' == ''">true</AppendRuntimeIdentifierToOutputPath>
2173 </PropertyGroup>
2174 <!--
2175 Append $(RuntimeIdentifier) directory to output and intermediate paths to prevent bin clashes between
2176 targets.
2177
2178 But do not append the implicit default runtime identifier for .NET Framework apps as that would
2179 append a RID the user never mentioned in the path and do so even in the AnyCPU case.
2180 -->
2181 <PropertyGroup Condition="'$(AppendRuntimeIdentifierToOutputPath)' == 'true' and '$(RuntimeIdentifier)' != '' and '$(_UsingDefaultRuntimeIdentifier)' != 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2182 <IntermediateOutputPath>$(IntermediateOutputPath)$(RuntimeIdentifier)\</IntermediateOutputPath>
2183 <OutputPath>$(OutputPath)$(RuntimeIdentifier)\</OutputPath>
2184 </PropertyGroup>
2185 <UsingTask TaskName="Microsoft.NET.Build.Tasks.GetDefaultPlatformTargetForNetFramework" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
2186 <!--
2187 Switch our default .NETFramework CPU architecture choice back to AnyCPU before
2188 compiling the exe if no copy-local native dependencies were resolved from NuGet
2189 -->
2190 <Target Name="AdjustDefaultPlatformTargetForNetFrameworkExeWithNoNativeCopyLocalItems" AfterTargets="ResolvePackageAssets" BeforeTargets="CoreCompile" Condition="'$(_UsingDefaultPlatformTarget)' == 'true' and&#xD;&#xA; '$(_UsingDefaultRuntimeIdentifier)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2191 <GetDefaultPlatformTargetForNetFramework PackageDependencies="@(PackageDependencies)" NativeCopyLocalItems="@(NativeCopyLocalItems)">
2192 <Output TaskParameter="DefaultPlatformTarget" PropertyName="PlatformTarget" />
2193 </GetDefaultPlatformTargetForNetFramework>
2194 </Target>
2195 <!--
2196============================================================================================================================================
2197 </Import>
2198
2199C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.BeforeCommon.targets
2200============================================================================================================================================
2201-->
2202 <!-- Checks for EOL frameworks -->
2203 <!--
2204============================================================================================================================================
2205 <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.EolTargetFrameworks.targets">
2206
2207C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.EolTargetFrameworks.targets
2208============================================================================================================================================
2209-->
2210 <!--
2211***********************************************************************************************
2212Microsoft.NET.EolTargetFrameworks.targets
2213
2214WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
2215 created a backup copy. Incorrect changes to this file will make it
2216 impossible to load or build your projects from the command-line or the IDE.
2217
2218Copyright (c) .NET Foundation. All rights reserved.
2219***********************************************************************************************
2220-->
2221 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2222 <!-- Default the check to true, but allow developers to turn the warning off. -->
2223 <CheckEolTargetFramework Condition="'$(CheckEolTargetFramework)' == ''">true</CheckEolTargetFramework>
2224 </PropertyGroup>
2225 <!--
2226 .NET Core framework versions that are currently considered to be end-of-life (EOL). These versions will not be targeted to
2227 receive servicing updates and security fixes.
2228 -->
2229 <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2230 <_EolNetCoreTargetFrameworkVersions Include="1.0;1.1;2.0;2.1;2.2;3.0" />
2231 </ItemGroup>
2232 <Target Name="_CheckForEolTargetFrameworks" AfterTargets="_CheckForUnsupportedNETCoreVersion" Condition="'@(_EolNetCoreTargetFrameworkVersions-&gt;AnyHaveMetadataValue('Identity', '$(_TargetFrameworkVersionWithoutV)'))' and '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and '$(CheckEolTargetFramework)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2233 <NETSdkWarning ResourceName="TargetFrameworkIsEol" FormatArguments="$(TargetFramework.ToLowerInvariant());https://aka.ms/dotnet-core-support" />
2234 </Target>
2235 <!--
2236============================================================================================================================================
2237 </Import>
2238
2239C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.BeforeCommon.targets
2240============================================================================================================================================
2241-->
2242 <!-- Check if the Target Framework is coreclr based -->
2243 <PropertyGroup Condition="'$(_IsNETCoreOrNETStandard)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2244 <_IsNETCoreOrNETStandard Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp'">true</_IsNETCoreOrNETStandard>
2245 <_IsNETCoreOrNETStandard Condition="'$(TargetFrameworkIdentifier)' == '.NETStandard'">true</_IsNETCoreOrNETStandard>
2246 </PropertyGroup>
2247 <!-- Unification / automatic binding redirect logic -->
2248 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2249 <DesignTimeAutoUnify Condition="'$(DesignTimeAutoUnify)' == ''">true</DesignTimeAutoUnify>
2250 <AutoUnifyAssemblyReferences Condition="'$(AutoUnifyAssemblyReferences)' == '' and $(OutputType) == 'Library'">true</AutoUnifyAssemblyReferences>
2251 <AutoUnifyAssemblyReferences Condition="'$(AutoUnifyAssemblyReferences)' == '' and '$(_IsNETCoreOrNETStandard)' == 'true'">true</AutoUnifyAssemblyReferences>
2252 </PropertyGroup>
2253 <PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework' and '$(HasRuntimeOutput)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2254 <AutoGenerateBindingRedirects Condition="'$(AutoGenerateBindingRedirects)' == ''">true</AutoGenerateBindingRedirects>
2255 </PropertyGroup>
2256 <!-- Default settings for .NET Core and .NET Standard build logic -->
2257 <PropertyGroup Condition="'$(_IsNETCoreOrNETStandard)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2258 <GenerateDependencyFile Condition=" '$(GenerateDependencyFile)' == '' ">true</GenerateDependencyFile>
2259 <!-- Assembly and file versions of runtime assets should be written to the deps.json by default, to support
2260 runtime minor version roll-forward: https://github.com/dotnet/core-setup/issues/3546 -->
2261 <IncludeFileVersionsInDependencyFile Condition="'$(IncludeFileVersionsInDependencyFile)' == ''">true</IncludeFileVersionsInDependencyFile>
2262 <!-- Force .dll extension for .NETCoreApp and .NETStandard projects even if output type is exe. -->
2263 <TargetExt Condition="'$(TargetExt)' == ''">.dll</TargetExt>
2264 <!-- Disable the use of FrameworkPathOverride in Microsoft.Common.CurrentVersion.targets which can slow down evaluation. FrameworkPathOverride
2265 is not needed for NETStandard or NETCore since references come from NuGet packages-->
2266 <EnableFrameworkPathOverride Condition="'$(EnableFrameworkPathOverride)' == ''">false</EnableFrameworkPathOverride>
2267 </PropertyGroup>
2268 <!-- Regardless of platform, enable dependency file generation if PreserveCompilationContext is set. -->
2269 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2270 <GenerateDependencyFile Condition="'$(GenerateDependencyFile)' == ''">$(PreserveCompilationContext)</GenerateDependencyFile>
2271 </PropertyGroup>
2272 <!-- Set PublishDir here, before Microsoft.Common.targets, to avoid a competing default there. -->
2273 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2274 <PublishDirName Condition="'$(PublishDirName)' == ''">publish</PublishDirName>
2275 <!-- ensure the PublishDir is RID specific-->
2276 <PublishDir Condition="'$(PublishDir)' == '' and&#xD;&#xA; '$(AppendRuntimeIdentifierToOutputPath)' != 'true' and&#xD;&#xA; '$(RuntimeIdentifier)' != '' and&#xD;&#xA; '$(_UsingDefaultRuntimeIdentifier)' != 'true'">$(OutputPath)$(RuntimeIdentifier)\$(PublishDirName)\</PublishDir>
2277 <PublishDir Condition="'$(PublishDir)' == ''">$(OutputPath)$(PublishDirName)\</PublishDir>
2278 </PropertyGroup>
2279 <!--
2280 Sets RestoreAdditionalProjectSources or RestoreAdditionalProjectFallbackFolders to the SDK Offline Cache based
2281 on the TargetFramework.
2282 -->
2283 <!--
2284============================================================================================================================================
2285 <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.NuGetOfflineCache.targets">
2286
2287C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.NuGetOfflineCache.targets
2288============================================================================================================================================
2289-->
2290 <!--
2291***********************************************************************************************
2292Microsoft.NET.NuGetOfflineCache.targets
2293
2294WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
2295 created a backup copy. Incorrect changes to this file will make it
2296 impossible to load or build your projects from the command-line or the IDE.
2297
2298Copyright (c) .NET Foundation. All rights reserved.
2299***********************************************************************************************
2300-->
2301 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2302 <_NugetFallbackFolder>$(MSBuildThisFileDirectory)..\..\..\..\NuGetFallbackFolder</_NugetFallbackFolder>
2303 <_IsNETCore1x Condition=" '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and '$(_TargetFrameworkVersionWithoutV)' &lt; '2.0' ">true</_IsNETCore1x>
2304 <_WorkloadLibraryPacksFolder Condition="'$(_WorkloadLibraryPacksFolder)' == ''">$([MSBuild]::EnsureTrailingSlash('$(NetCoreRoot)'))library-packs</_WorkloadLibraryPacksFolder>
2305 </PropertyGroup>
2306 <PropertyGroup Condition=" '$(DisableImplicitNuGetFallbackFolder)' != 'true' and Exists($(_NugetFallbackFolder)) " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2307 <RestoreAdditionalProjectSources Condition=" '$(_IsNETCore1x)' == 'true' and '$(DisableImplicit1xNuGetFallbackFolder)' != 'true' ">$(RestoreAdditionalProjectSources);$(_NugetFallbackFolder)</RestoreAdditionalProjectSources>
2308 <RestoreAdditionalProjectFallbackFoldersExcludes Condition=" '$(_IsNETCore1x)' == 'true' ">$(RestoreAdditionalProjectFallbackFoldersExcludes);$(_NugetFallbackFolder)</RestoreAdditionalProjectFallbackFoldersExcludes>
2309 <RestoreAdditionalProjectFallbackFolders Condition=" '$(_IsNETCore1x)' != 'true' ">$(RestoreAdditionalProjectFallbackFolders);$(_NugetFallbackFolder)</RestoreAdditionalProjectFallbackFolders>
2310 </PropertyGroup>
2311 <PropertyGroup Condition=" '$(DisableImplicitLibraryPacksFolder)' != 'true' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2312 <RestoreAdditionalProjectSources Condition="Exists('$(_WorkloadLibraryPacksFolder)')">$(RestoreAdditionalProjectSources);$(_WorkloadLibraryPacksFolder)</RestoreAdditionalProjectSources>
2313 </PropertyGroup>
2314 <!--
2315============================================================================================================================================
2316 </Import>
2317
2318C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.BeforeCommon.targets
2319============================================================================================================================================
2320-->
2321 <ItemGroup Condition=" '$(DisableImplicitFrameworkReferences)' != 'true' and '$(TargetFrameworkIdentifier)' == '.NETFramework'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2322 <_SDKImplicitReference Include="System" />
2323 <_SDKImplicitReference Include="System.Data" />
2324 <_SDKImplicitReference Include="System.Drawing" />
2325 <_SDKImplicitReference Include="System.Xml" />
2326 <!-- When doing greater than/less than comparisons between strings, MSBuild will try to parse the strings as Version objects and compare them as
2327 such if the parse succeeds. -->
2328 <!-- Framework assemblies introduced in .NET 3.5 -->
2329 <_SDKImplicitReference Include="System.Core" Condition=" '$(_TargetFrameworkVersionWithoutV)' &gt;= '3.5' " />
2330 <_SDKImplicitReference Include="System.Runtime.Serialization" Condition=" '$(_TargetFrameworkVersionWithoutV)' &gt;= '3.5' " />
2331 <_SDKImplicitReference Include="System.Xml.Linq" Condition=" '$(_TargetFrameworkVersionWithoutV)' &gt;= '3.5' " />
2332 <!-- Framework assemblies introduced in .NET 4.0 -->
2333 <_SDKImplicitReference Include="System.Numerics" Condition=" '$(_TargetFrameworkVersionWithoutV)' &gt;= '4.0' " />
2334 <!-- Framework assemblies introduced in .NET 4.5 -->
2335 <_SDKImplicitReference Include="System.IO.Compression.FileSystem" Condition=" '$(_TargetFrameworkVersionWithoutV)' &gt;= '4.5' " />
2336 <!-- Don't automatically reference System.IO.Compression or System.Net.Http to help avoid hitting https://github.com/Microsoft/msbuild/issues/1329. -->
2337 <!--<Reference Include="System.IO.Compression" Condition=" '$(_TargetFrameworkVersionWithoutV)' >= '4.5' "/>
2338 <_SDKImplicitReference Include="System.Net.Http" Condition=" '$(_TargetFrameworkVersionWithoutV)' >= '4.5' "/>-->
2339 <_SDKImplicitReference Update="@(_SDKImplicitReference)" Pack="false" IsImplicitlyDefined="true" />
2340 <!-- Don't duplicate any references that are explicit in the project file. This means that if you do want to include a framework assembly in your
2341 NuGet package, you can just add the Reference to your project file. -->
2342 <_SDKImplicitReference Remove="@(Reference)" />
2343 <!-- Add the implicit references to @(Reference) -->
2344 <Reference Include="@(_SDKImplicitReference)" />
2345 </ItemGroup>
2346 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2347 <!-- Prevent System.Core reference from being added separately (see Microsoft.NETFramework.CurrentVersion.props) -->
2348 <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>
2349 </PropertyGroup>
2350 <PropertyGroup Condition="'$(DisableImplicitAssetTargetFallback)' != 'true' and '$(_IsNETCoreOrNETStandard)' == 'true' and '$(_TargetFrameworkVersionWithoutV)' &gt;= '2.0'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2351 <AssetTargetFallback>$(AssetTargetFallback);net461;net462;net47;net471;net472;net48</AssetTargetFallback>
2352 </PropertyGroup>
2353 <!-- Add conditional compilation symbols for the target framework (for example NET461, NETSTANDARD2_0, NETCOREAPP1_0) -->
2354 <PropertyGroup Condition=" '$(DisableImplicitFrameworkDefines)' != 'true' and '$(TargetFrameworkIdentifier)' != '.NETPortable' and '$(TargetFrameworkIdentifier)' != ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2355 <_FrameworkIdentifierForImplicitDefine>$(TargetFrameworkIdentifier.Replace('.', '').ToUpperInvariant())</_FrameworkIdentifierForImplicitDefine>
2356 <_FrameworkIdentifierForImplicitDefine Condition=" '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), 5.0)) ">NET</_FrameworkIdentifierForImplicitDefine>
2357 <VersionlessImplicitFrameworkDefine>$(_FrameworkIdentifierForImplicitDefine)</VersionlessImplicitFrameworkDefine>
2358 <_FrameworkIdentifierForImplicitDefine Condition=" '$(TargetFrameworkIdentifier)' == '.NETFramework'">NET</_FrameworkIdentifierForImplicitDefine>
2359 <_FrameworkVersionForImplicitDefine>$(TargetFrameworkVersion.TrimStart('vV'))</_FrameworkVersionForImplicitDefine>
2360 <_FrameworkVersionForImplicitDefine>$(_FrameworkVersionForImplicitDefine.Replace('.', '_'))</_FrameworkVersionForImplicitDefine>
2361 <_FrameworkVersionForImplicitDefine Condition=" '$(TargetFrameworkIdentifier)' == '.NETFramework'">$(_FrameworkVersionForImplicitDefine.Replace('_', ''))</_FrameworkVersionForImplicitDefine>
2362 <ImplicitFrameworkDefine>$(_FrameworkIdentifierForImplicitDefine)$(_FrameworkVersionForImplicitDefine)</ImplicitFrameworkDefine>
2363 <BackwardsCompatFrameworkDefine Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), 5.0))">$(TargetFrameworkIdentifier.Replace('.', '').ToUpperInvariant())</BackwardsCompatFrameworkDefine>
2364 </PropertyGroup>
2365 <!-- Add conditional compilation symbols for the target platform (for example ANDROID, IOS, WINDOWS) -->
2366 <Target Name="GenerateTargetPlatformDefineConstants" Condition=" '$(DisableImplicitFrameworkDefines)' != 'true' and '$(TargetPlatformIdentifier)' != '' and '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), 5.0)) " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2367 <PropertyGroup>
2368 <_PlatformIdentifierForImplicitDefine>$(TargetPlatformIdentifier.ToUpperInvariant())</_PlatformIdentifierForImplicitDefine>
2369 <_PlatformVersionForImplicitDefine>$(TargetPlatformVersion.Replace('.', '_'))</_PlatformVersionForImplicitDefine>
2370 </PropertyGroup>
2371 <ItemGroup>
2372 <_ImplicitDefineConstant Include="$(_PlatformIdentifierForImplicitDefine)" />
2373 <_ImplicitDefineConstant Include="$(_PlatformIdentifierForImplicitDefine)$(_PlatformVersionForImplicitDefine)" />
2374 </ItemGroup>
2375 </Target>
2376 <!-- Add OR_GREATER compilation symbols for target frameworks with .NET Framework, .NET Standard, .NET Core, and .NET -->
2377 <Target Name="GenerateNETCompatibleDefineConstants" Condition=" '$(DisableImplicitFrameworkDefines)' != 'true' and ('$(TargetFrameworkIdentifier)' == '.NETCoreApp' or '$(TargetFrameworkIdentifier)' == '.NETFramework' or '$(TargetFrameworkIdentifier)' == '.NETStandard')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2378 <ItemGroup>
2379 <_SupportedFrameworkVersions Include="@(SupportedNETCoreAppTargetFramework-&gt;'%(Identity)'-&gt;TrimStart('.NETCoreApp,Version=v'))" Condition=" '$(TargetFrameworkIdentifier)' == '.NETCoreApp' " />
2380 <_SupportedFrameworkVersions Include="@(SupportedNETFrameworkTargetFramework-&gt;'%(Identity)'-&gt;TrimStart('.NETFramework,Version=v'))" Condition=" '$(TargetFrameworkIdentifier)' == '.NETFramework' " />
2381 <_SupportedFrameworkVersions Include="@(SupportedNETStandardTargetFramework-&gt;'%(Identity)'-&gt;TrimStart('.NETStandard,Version=v'))" Condition=" '$(TargetFrameworkIdentifier)' == '.NETStandard' " />
2382 <_CompatibleFrameworkVersions Include="@(_SupportedFrameworkVersions)" Condition=" $([MSBuild]::VersionLessThanOrEquals(%(Identity), $(TargetFrameworkVersion))) " />
2383 <_FormattedCompatibleFrameworkVersions Include="@(_CompatibleFrameworkVersions)" Condition=" '$(TargetFrameworkIdentifier)' == '.NETCoreApp' or '$(TargetFrameworkIdentifier)' == '.NETStandard' " />
2384 <_FormattedCompatibleFrameworkVersions Include="@(_CompatibleFrameworkVersions-&gt;'%(Identity)'-&gt;Replace('.', ''))" Condition=" '$(TargetFrameworkIdentifier)' == '.NETFramework' " />
2385 <_ImplicitDefineConstant Include="@(_FormattedCompatibleFrameworkVersions-&gt;'$(_FrameworkIdentifierForImplicitDefine)%(Identity)_OR_GREATER'-&gt;Replace('.', '_'))" Condition=" '$(TargetFrameworkIdentifier)' != '.NETCoreApp' or $([MSBuild]::VersionGreaterThanOrEquals(%(_FormattedCompatibleFrameworkVersions.Identity), 5.0)) " />
2386 <_ImplicitDefineConstant Include="@(_FormattedCompatibleFrameworkVersions-&gt;'NETCOREAPP%(Identity)_OR_GREATER'-&gt;Replace('.', '_'))" Condition=" '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionLessThan(%(_FormattedCompatibleFrameworkVersions.Identity), 5.0)) " />
2387 </ItemGroup>
2388 </Target>
2389 <!-- Add OR_GREATER compilation symbols for target platforms. -->
2390 <Target Name="GeneratePlatformCompatibleDefineConstants" Condition=" '$(DisableImplicitFrameworkDefines)' != 'true' and '$(TargetPlatformIdentifier)' != '' and '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), 5.0)) " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2391 <ItemGroup>
2392 <_SupportedPlatformCompatibleVersions Include="@(SdkSupportedTargetPlatformVersion)" Condition=" %(Identity) != '' and $([MSBuild]::VersionLessThanOrEquals(%(Identity), $(TargetPlatformVersion))) " />
2393 <_ImplicitDefineConstant Include="@(_SupportedPlatformCompatibleVersions-&gt;'$(TargetPlatformIdentifier.ToUpper())%(Identity)_OR_GREATER'-&gt;Replace('.', '_'))" />
2394 </ItemGroup>
2395 </Target>
2396 <!-- Add implicitly defined preprocessor symbols to DefineConstants -->
2397 <Target Name="AddImplicitDefineConstants" Condition=" '$(DisableImplicitFrameworkDefines)' != 'true' " DependsOnTargets="GenerateTargetPlatformDefineConstants;GenerateNETCompatibleDefineConstants;GeneratePlatformCompatibleDefineConstants" BeforeTargets="CoreCompile" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2398 <PropertyGroup>
2399 <DefineConstants Condition=" '@(_ImplicitDefineConstant)' != '' ">$(DefineConstants);@(_ImplicitDefineConstant)</DefineConstants>
2400 <FinalDefineConstants Condition=" '@(_ImplicitDefineConstant)' != '' and '$(Language)' == 'VB' ">$(FinalDefineConstants),@(_ImplicitDefineConstant->'%(Identity)=-1', ',')</FinalDefineConstants>
2401 </PropertyGroup>
2402 </Target>
2403 <!-- Handle XML documentation file settings -->
2404 <PropertyGroup Condition="'$(GenerateDocumentationFile)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2405 <GenerateDocumentationFile Condition="'$(DocumentationFile)' == ''">false</GenerateDocumentationFile>
2406 <GenerateDocumentationFile Condition="'$(DocumentationFile)' != ''">true</GenerateDocumentationFile>
2407 </PropertyGroup>
2408 <PropertyGroup Condition="'$(GenerateDocumentationFile)' == 'true' and '$(DocumentationFile)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2409 <DocumentationFile Condition="'$(MSBuildProjectExtension)' == '.vbproj'">$(AssemblyName).xml</DocumentationFile>
2410 <DocumentationFile Condition="'$(MSBuildProjectExtension)' != '.vbproj'">$(IntermediateOutputPath)$(AssemblyName).xml</DocumentationFile>
2411 </PropertyGroup>
2412 <PropertyGroup Condition="'$(GenerateDocumentationFile)' != 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2413 <DocumentationFile />
2414 </PropertyGroup>
2415 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2416 <PublishDocumentationFiles Condition="'$(PublishDocumentationFiles)' == ''">true</PublishDocumentationFiles>
2417 <PublishDocumentationFile Condition="'$(PublishDocumentationFile)' == '' and '$(PublishDocumentationFiles)' == 'true'">true</PublishDocumentationFile>
2418 <PublishReferencesDocumentationFiles Condition="'$(PublishReferencesDocumentationFiles)' == '' and '$(PublishDocumentationFiles)' == 'true'">true</PublishReferencesDocumentationFiles>
2419 </PropertyGroup>
2420 <!-- Add a project capability so that the project properties in the IDE can show the option to generate an XML documentation file without specifying the filename -->
2421 <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2422 <ProjectCapability Include="GenerateDocumentationFile" />
2423 </ItemGroup>
2424 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2425 <IsNetCoreAppTargetingLatestTFM Condition="'$(IsNetCoreAppTargetingLatestTFM)' == '' and '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and '$(_TargetFrameworkVersionWithoutV)' == '$(NETCoreAppMaximumVersion)'">true</IsNetCoreAppTargetingLatestTFM>
2426 </PropertyGroup>
2427 <!--
2428============================================================================================================================================
2429 </Import>
2430
2431C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\Sdk\Sdk.targets
2432============================================================================================================================================
2433-->
2434 <PropertyGroup Condition="'$(LanguageTargets)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2435 <LanguageTargets Condition="'$(MSBuildProjectExtension)' == '.csproj'">$(MSBuildToolsPath)\Microsoft.CSharp.targets</LanguageTargets>
2436 <LanguageTargets Condition="'$(MSBuildProjectExtension)' == '.vbproj'">$(MSBuildToolsPath)\Microsoft.VisualBasic.targets</LanguageTargets>
2437 <LanguageTargets Condition="'$(MSBuildProjectExtension)' == '.fsproj'">$(MSBuildThisFileDirectory)..\targets\Microsoft.NET.Sdk.FSharpTargetsShim.targets</LanguageTargets>
2438 <!-- If LanguageTargets isn't otherwise set, then just import the common targets. This should allow the restore target to run,
2439 which could bring in NuGet packages that set the LanguageTargets to something else. This means support for different
2440 languages could either be supplied via an SDK or via a NuGet package. -->
2441 <LanguageTargets Condition="'$(LanguageTargets)' == ''">$(MSBuildToolsPath)\Microsoft.Common.targets</LanguageTargets>
2442 </PropertyGroup>
2443 <!-- REMARK: Dont remove/rename, the LanguageTargets property is used by F# to hook inside the project's sdk
2444 using Sdk attribute (from .NET Core Sdk 1.0.0-preview4) -->
2445 <!--
2446============================================================================================================================================
2447 <Import Project="$(LanguageTargets)">
2448
2449C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.CSharp.targets
2450============================================================================================================================================
2451-->
2452 <!--
2453***********************************************************************************************
2454Microsoft.CSharp.targets
2455
2456WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
2457 created a backup copy. Incorrect changes to this file will make it
2458 impossible to load or build your projects from the command-line or the IDE.
2459
2460This file defines the steps in the standard build process specific for C# .NET projects.
2461For example, it contains the step that actually calls the C# compiler. The remainder
2462of the build process is defined in Microsoft.Common.targets, which is imported by
2463this file.
2464
2465Copyright (C) Microsoft Corporation. All rights reserved.
2466***********************************************************************************************
2467-->
2468 <!--
2469 In VS 2010 SP1 and VS 2012, both supported for asset compatibility, the MSBuild installed
2470 as part of them did not enforce using the local ToolsVersion (4.0) in all cases, but instead
2471 just used whatever ToolsVersion was in the project file if it existed on the machine, and
2472 only forced 4.0 if that ToolsVersion did not exist.
2473
2474 Moving forward, we do want to enforce a single acting ToolsVersion per version of Visual Studio,
2475 but in order to approximate this behavior on VS 2010 SP1 and VS 2012 as well, we've redirected
2476 the targets: If we're building using 4.X MSBuild (which doesn't define the new reserved
2477 property, MSBuildAssemblyVersion), we'll point right back at the 4.0 targets, which still exist
2478 as part of the .NET Framework. Only if we're using the new MSBuild will we point to the current
2479 targets.
2480 -->
2481 <Choose xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2482 <When Condition="'$(MSBuildAssemblyVersion)' == ''">
2483 <PropertyGroup>
2484 <CSharpTargetsPath>$(MSBuildFrameworkToolsPath)\Microsoft.CSharp.targets</CSharpTargetsPath>
2485 <!-- Same condition as in .NET 4.5 C# targets so that we can override the behavior where it defaults to
2486 MSBuildToolsPath, which would be incorrect in this case -->
2487 <CscToolPath Condition="'$(CscToolPath)' == '' and '$(BuildingInsideVisualStudio)' != 'true'">$(MsBuildFrameworkToolsPath)</CscToolPath>
2488 </PropertyGroup>
2489 </When>
2490 <When Condition="'$(IsCrossTargetingBuild)' == 'true'">
2491 <PropertyGroup>
2492 <CSharpTargetsPath>$(MSBuildToolsPath)\Microsoft.CSharp.CrossTargeting.targets</CSharpTargetsPath>
2493 </PropertyGroup>
2494 </When>
2495 <Otherwise>
2496 <PropertyGroup>
2497 <CSharpTargetsPath>$(MSBuildToolsPath)\Microsoft.CSharp.CurrentVersion.targets</CSharpTargetsPath>
2498 </PropertyGroup>
2499 </Otherwise>
2500 </Choose>
2501 <PropertyGroup Condition="'$(MSBuildAssemblyVersion)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2502 <!--
2503 Overrides for the Microsoft.Common.targets extension targets. Used to make sure that only the imports we specify
2504 (hard-coded to 4.0 locations) are used, not the 12.0 locations that would be used by default. Defined here because
2505 Microsoft.CSharp.targets imports Microsoft.Common.targets from the current directory rather than using MSBuildToolsPath,
2506 so defining these in Microsoft.Common.targets alone would not suffice for C# projects.
2507
2508 NOTE: This logic is duplicated in Microsoft.VisualBasic.targets (VB has the same problem) and in Microsoft.Common.targets
2509 (for anyone who DOES import it directly), so for any changes to this logic in this file, please also edit the other two.
2510 -->
2511 <ImportByWildcardBefore40MicrosoftCommonTargets Condition="'$(ImportByWildcardBefore40MicrosoftCommonTargets)' == ''">$(ImportByWildcardBeforeMicrosoftCommonTargets)</ImportByWildcardBefore40MicrosoftCommonTargets>
2512 <ImportByWildcardBefore40MicrosoftCommonTargets Condition="'$(ImportByWildcardBefore40MicrosoftCommonTargets)' == ''">true</ImportByWildcardBefore40MicrosoftCommonTargets>
2513 <ImportByWildcardAfter40MicrosoftCommonTargets Condition="'$(ImportByWildcardAfter40MicrosoftCommonTargets)' == ''">$(ImportByWildcardAfterMicrosoftCommonTargets)</ImportByWildcardAfter40MicrosoftCommonTargets>
2514 <ImportByWildcardAfter40MicrosoftCommonTargets Condition="'$(ImportByWildcardAfter40MicrosoftCommonTargets)' == ''">true</ImportByWildcardAfter40MicrosoftCommonTargets>
2515 <ImportUserLocationsByWildcardBefore40MicrosoftCommonTargets Condition="'$(ImportUserLocationsByWildcardBefore40MicrosoftCommonTargets)' == ''">$(ImportUserLocationsByWildcardBeforeMicrosoftCommonTargets)</ImportUserLocationsByWildcardBefore40MicrosoftCommonTargets>
2516 <ImportUserLocationsByWildcardBefore40MicrosoftCommonTargets Condition="'$(ImportUserLocationsByWildcardBefore40MicrosoftCommonTargets)' == ''">true</ImportUserLocationsByWildcardBefore40MicrosoftCommonTargets>
2517 <ImportUserLocationsByWildcardAfter40MicrosoftCommonTargets Condition="'$(ImportUserLocationsByWildcardAfter40MicrosoftCommonTargets)' == ''">$(ImportUserLocationsByWildcardAfterMicrosoftCommonTargets)</ImportUserLocationsByWildcardAfter40MicrosoftCommonTargets>
2518 <ImportUserLocationsByWildcardAfter40MicrosoftCommonTargets Condition="'$(ImportUserLocationsByWildcardAfter40MicrosoftCommonTargets)' == ''">true</ImportUserLocationsByWildcardAfter40MicrosoftCommonTargets>
2519 <ImportByWildcardBeforeMicrosoftCommonTargets>false</ImportByWildcardBeforeMicrosoftCommonTargets>
2520 <ImportByWildcardAfterMicrosoftCommonTargets>false</ImportByWildcardAfterMicrosoftCommonTargets>
2521 <ImportUserLocationsByWildcardBeforeMicrosoftCommonTargets>false</ImportUserLocationsByWildcardBeforeMicrosoftCommonTargets>
2522 <ImportUserLocationsByWildcardAfterMicrosoftCommonTargets>false</ImportUserLocationsByWildcardAfterMicrosoftCommonTargets>
2523 <CustomBeforeMicrosoftCommonTargets Condition="'$(CustomBeforeMicrosoftCommonTargets)' == ''">$(MSBuildExtensionsPath)\v4.0\Custom.Before.Microsoft.Common.targets</CustomBeforeMicrosoftCommonTargets>
2524 <CustomAfterMicrosoftCommonTargets Condition="'$(CustomAfterMicrosoftCommonTargets)' == ''">$(MSBuildExtensionsPath)\v4.0\Custom.After.Microsoft.Common.targets</CustomAfterMicrosoftCommonTargets>
2525 <!-- Overrides for the Microsoft.CSharp.targets extension targets -->
2526 <ImportByWildcardBefore40MicrosoftCSharpTargets Condition="'$(ImportByWildcardBefore40MicrosoftCSharpTargets)' == ''">$(ImportByWildcardBeforeMicrosoftCSharpTargets)</ImportByWildcardBefore40MicrosoftCSharpTargets>
2527 <ImportByWildcardBefore40MicrosoftCSharpTargets Condition="'$(ImportByWildcardBefore40MicrosoftCSharpTargets)' == ''">true</ImportByWildcardBefore40MicrosoftCSharpTargets>
2528 <ImportByWildcardAfter40MicrosoftCSharpTargets Condition="'$(ImportByWildcardAfter40MicrosoftCSharpTargets)' == ''">$(ImportByWildcardAfterMicrosoftCSharpTargets)</ImportByWildcardAfter40MicrosoftCSharpTargets>
2529 <ImportByWildcardAfter40MicrosoftCSharpTargets Condition="'$(ImportByWildcardAfter40MicrosoftCSharpTargets)' == ''">true</ImportByWildcardAfter40MicrosoftCSharpTargets>
2530 <ImportUserLocationsByWildcardBefore40MicrosoftCSharpTargets Condition="'$(ImportUserLocationsByWildcardBefore40MicrosoftCSharpTargets)' == ''">$(ImportUserLocationsByWildcardBeforeMicrosoftCSharpTargets)</ImportUserLocationsByWildcardBefore40MicrosoftCSharpTargets>
2531 <ImportUserLocationsByWildcardBefore40MicrosoftCSharpTargets Condition="'$(ImportUserLocationsByWildcardBefore40MicrosoftCSharpTargets)' == ''">true</ImportUserLocationsByWildcardBefore40MicrosoftCSharpTargets>
2532 <ImportUserLocationsByWildcardAfter40MicrosoftCSharpTargets Condition="'$(ImportUserLocationsByWildcardAfter40MicrosoftCSharpTargets)' == ''">$(ImportUserLocationsByWildcardAfterMicrosoftCSharpTargets)</ImportUserLocationsByWildcardAfter40MicrosoftCSharpTargets>
2533 <ImportUserLocationsByWildcardAfter40MicrosoftCSharpTargets Condition="'$(ImportUserLocationsByWildcardAfter40MicrosoftCSharpTargets)' == ''">true</ImportUserLocationsByWildcardAfter40MicrosoftCSharpTargets>
2534 <ImportByWildcardBeforeMicrosoftCSharpTargets>false</ImportByWildcardBeforeMicrosoftCSharpTargets>
2535 <ImportByWildcardAfterMicrosoftCSharpTargets>false</ImportByWildcardAfterMicrosoftCSharpTargets>
2536 <ImportUserLocationsByWildcardBeforeMicrosoftCSharpTargets>false</ImportUserLocationsByWildcardBeforeMicrosoftCSharpTargets>
2537 <ImportUserLocationsByWildcardAfterMicrosoftCSharpTargets>false</ImportUserLocationsByWildcardAfterMicrosoftCSharpTargets>
2538 <CustomBeforeMicrosoftCSharpTargets Condition="'$(CustomBeforeMicrosoftCSharpTargets)' == ''">$(MSBuildExtensionsPath)\v4.0\Custom.Before.Microsoft.CSharp.targets</CustomBeforeMicrosoftCSharpTargets>
2539 <CustomAfterMicrosoftCSharpTargets Condition="'$(CustomAfterMicrosoftCSharpTargets)' == ''">$(MSBuildExtensionsPath)\v4.0\Custom.After.Microsoft.CSharp.targets</CustomAfterMicrosoftCSharpTargets>
2540 </PropertyGroup>
2541 <PropertyGroup Condition="'$(MSBuildAssemblyVersion)' == '' and ('$(TargetFrameworkIdentifier)' == '.NETFramework' or '$(TargetFrameworkIdentifier)' == 'Silverlight' or ('$(TargetFrameworkIdentifier)' == '' and ('$(TargetRuntime)' == 'Managed' or '$(TargetRuntime)' == '')))" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2542 <!--
2543 Overrides for the Microsoft.NETFramework.props extension targets. Used to make sure that only the imports we specify
2544 (hard-coded to 4.0 locations) are used, not the 12.0 locations that would be used by default. Required because
2545 Microsoft.Common.targets imports it from the current directory, so we don't get a chance to redirect these in its
2546 own redirection targets.
2547
2548 NOTE: This logic is duplicated in Microsoft.VisualBasic.targets and in Microsoft.Common.targets because VB and C#
2549 import Microsoft.Common.targets from the current directory and thus don't get the benefit of these redirections either,
2550 so for any changes to this logic in this file, please also edit the other two.
2551 -->
2552 <ImportByWildcardBefore40MicrosoftNetFrameworkProps Condition="'$(ImportByWildcardBefore40MicrosoftNetFrameworkProps)' == ''">$(ImportByWildcardBeforeMicrosoftNetFrameworkProps)</ImportByWildcardBefore40MicrosoftNetFrameworkProps>
2553 <ImportByWildcardBefore40MicrosoftNetFrameworkProps Condition="'$(ImportByWildcardBefore40MicrosoftNetFrameworkProps)' == ''">true</ImportByWildcardBefore40MicrosoftNetFrameworkProps>
2554 <ImportByWildcardAfter40MicrosoftNetFrameworkProps Condition="'$(ImportByWildcardAfter40MicrosoftNetFrameworkProps)' == ''">$(ImportByWildcardAfterMicrosoftNetFrameworkProps)</ImportByWildcardAfter40MicrosoftNetFrameworkProps>
2555 <ImportByWildcardAfter40MicrosoftNetFrameworkProps Condition="'$(ImportByWildcardAfter40MicrosoftNetFrameworkProps)' == ''">true</ImportByWildcardAfter40MicrosoftNetFrameworkProps>
2556 <ImportUserLocationsByWildcardBefore40MicrosoftNetFrameworkProps Condition="'$(ImportUserLocationsByWildcardBefore40MicrosoftNetFrameworkProps)' == ''">$(ImportUserLocationsByWildcardBeforeMicrosoftNetFrameworkProps)</ImportUserLocationsByWildcardBefore40MicrosoftNetFrameworkProps>
2557 <ImportUserLocationsByWildcardBefore40MicrosoftNetFrameworkProps Condition="'$(ImportUserLocationsByWildcardBefore40MicrosoftNetFrameworkProps)' == ''">true</ImportUserLocationsByWildcardBefore40MicrosoftNetFrameworkProps>
2558 <ImportUserLocationsByWildcardAfter40MicrosoftNetFrameworkProps Condition="'$(ImportUserLocationsByWildcardAfter40MicrosoftNetFrameworkProps)' == ''">$(ImportUserLocationsByWildcardAfterMicrosoftNetFrameworkProps)</ImportUserLocationsByWildcardAfter40MicrosoftNetFrameworkProps>
2559 <ImportUserLocationsByWildcardAfter40MicrosoftNetFrameworkProps Condition="'$(ImportUserLocationsByWildcardAfter40MicrosoftNetFrameworkProps)' == ''">true</ImportUserLocationsByWildcardAfter40MicrosoftNetFrameworkProps>
2560 <ImportByWildcardBeforeMicrosoftNetFrameworkProps>false</ImportByWildcardBeforeMicrosoftNetFrameworkProps>
2561 <ImportByWildcardAfterMicrosoftNetFrameworkProps>false</ImportByWildcardAfterMicrosoftNetFrameworkProps>
2562 <ImportUserLocationsByWildcardBeforeMicrosoftNetFrameworkProps>false</ImportUserLocationsByWildcardBeforeMicrosoftNetFrameworkProps>
2563 <ImportUserLocationsByWildcardAfterMicrosoftNetFrameworkProps>false</ImportUserLocationsByWildcardAfterMicrosoftNetFrameworkProps>
2564 </PropertyGroup>
2565 <!--<ImportGroup Condition="'$(MSBuildAssemblyVersion)' == ''">-->
2566 <!--<Import Project="$(MSBuildUserExtensionsPath)\4.0\Microsoft.CSharp.targets\ImportBefore\*" Condition="'$(ImportUserLocationsByWildcardBefore40MicrosoftCSharpTargets)' == 'true' and exists('$(MSBuildUserExtensionsPath)\4.0\Microsoft.CSharp.targets\ImportBefore')" />-->
2567 <!--<Import Project="$(MSBuildExtensionsPath)\4.0\Microsoft.CSharp.targets\ImportBefore\*" Condition="'$(ImportByWildcardBefore40MicrosoftCSharpTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\4.0\Microsoft.CSharp.targets\ImportBefore')" />-->
2568 <!--</ImportGroup>-->
2569 <!-- Really should be imported right before Microsoft.Common.targets, but because Microsoft.CSharp.targets imports
2570 Microsoft.Common.targets from the current directory rather than using MSBuildToolsPath (which would redirect to our
2571 targets), we're stuck doing it this way instead. -->
2572 <!--<ImportGroup Condition="'$(MSBuildAssemblyVersion)' == ''">-->
2573 <!--<Import Project="$(MSBuildUserExtensionsPath)\4.0\Microsoft.Common.targets\ImportBefore\*" Condition="'$(ImportUserLocationsByWildcardBefore40MicrosoftCommonTargets)' == 'true' and exists('$(MSBuildUserExtensionsPath)\4.0\Microsoft.Common.targets\ImportBefore')" />-->
2574 <!--<Import Project="$(MSBuildExtensionsPath)\4.0\Microsoft.Common.targets\ImportBefore\*" Condition="'$(ImportByWildcardBefore40MicrosoftCommonTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\4.0\Microsoft.Common.targets\ImportBefore')" />-->
2575 <!--</ImportGroup>-->
2576 <!-- Really should be imported right before Microsoft.NETFramework.props, but because Microsoft.CSharp.targets imports
2577 Microsoft.Common.targets from the current directory rather than using MSBuildToolsPath (which would redirect to our
2578 targets), and Microsoft.Common.targets does likewise with Microsoft.NETFramework.props, we're stuck doing it this
2579 way instead. -->
2580 <!--<ImportGroup Condition="'$(MSBuildAssemblyVersion)' == ''">-->
2581 <!--<Import Project="$(MSBuildUserExtensionsPath)\4.0\Microsoft.NETFramework.props\ImportBefore\*" Condition="'$(ImportUserLocationsByWildcardBefore40MicrosoftNetFrameworkProps)' == 'true' and exists('$(MSBuildUserExtensionsPath)\4.0\Microsoft.NETFramework.props\ImportBefore')" />-->
2582 <!--<Import Project="$(MSBuildExtensionsPath)\4.0\Microsoft.NETFramework.props\ImportBefore\*" Condition="'$(ImportByWildcardBefore40MicrosoftNetFrameworkProps)' == 'true' and exists('$(MSBuildExtensionsPath)\4.0\Microsoft.NETFramework.props\ImportBefore')" />-->
2583 <!--</ImportGroup>-->
2584 <!--
2585============================================================================================================================================
2586 <Import Project="$(MSBuildToolsPath)\Microsoft.Managed.Before.targets">
2587
2588C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.Managed.Before.targets
2589============================================================================================================================================
2590-->
2591 <!--
2592***********************************************************************************************
2593WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
2594 created a backup copy. Incorrect changes to this file will make it
2595 impossible to load or build your projects from the command-line or the IDE.
2596
2597This file defines common build logic for all managed languaged: C#, VisualBasic, F#
2598It is imported before the common targets have been imported.
2599
2600Copyright (C) Microsoft Corporation. All rights reserved.
2601***********************************************************************************************
2602-->
2603 <!--
2604 We are doing a cross-targeting build if there is a non-empty list of target frameworks specified
2605 and there is no current target framework being built individually. In that case, a multitargeting
2606 project file like Microsoft.<language>.CrossTargeting.targets gets imported.
2607 -->
2608 <PropertyGroup Condition="'$(TargetFrameworks)' != '' and '$(TargetFramework)' == ''">
2609 <IsCrossTargetingBuild>true</IsCrossTargetingBuild>
2610 </PropertyGroup>
2611 <!--
2612============================================================================================================================================
2613 </Import>
2614
2615C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.CSharp.targets
2616============================================================================================================================================
2617-->
2618 <!--
2619============================================================================================================================================
2620 <Import Project="$(CSharpTargetsPath)">
2621
2622C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.CSharp.CurrentVersion.targets
2623============================================================================================================================================
2624-->
2625 <!--
2626***********************************************************************************************
2627Microsoft.CSharp.CurrentVersion.targets
2628
2629WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
2630 created a backup copy. Incorrect changes to this file will make it
2631 impossible to load or build your projects from the command-line or the IDE.
2632
2633This file defines the steps in the standard build process specific for C# .NET projects.
2634For example, it contains the step that actually calls the C# compiler. The remainder
2635of the build process is defined in Microsoft.Common.targets, which is imported by
2636this file.
2637
2638Copyright (C) Microsoft Corporation. All rights reserved.
2639***********************************************************************************************
2640-->
2641 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2642 <ImportByWildcardBeforeMicrosoftCSharpTargets Condition="'$(ImportByWildcardBeforeMicrosoftCSharpTargets)' == ''">true</ImportByWildcardBeforeMicrosoftCSharpTargets>
2643 <ImportByWildcardAfterMicrosoftCSharpTargets Condition="'$(ImportByWildcardAfterMicrosoftCSharpTargets)' == ''">true</ImportByWildcardAfterMicrosoftCSharpTargets>
2644 <ImportUserLocationsByWildcardBeforeMicrosoftCSharpTargets Condition="'$(ImportUserLocationsByWildcardBeforeMicrosoftCSharpTargets)' == ''">true</ImportUserLocationsByWildcardBeforeMicrosoftCSharpTargets>
2645 <ImportUserLocationsByWildcardAfterMicrosoftCSharpTargets Condition="'$(ImportUserLocationsByWildcardAfterMicrosoftCSharpTargets)' == ''">true</ImportUserLocationsByWildcardAfterMicrosoftCSharpTargets>
2646 </PropertyGroup>
2647 <!--<Import Project="$(MSBuildUserExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.CSharp.targets\ImportBefore\*" Condition="'$(ImportUserLocationsByWildcardBeforeMicrosoftCSharpTargets)' == 'true' and exists('$(MSBuildUserExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.CSharp.targets\ImportBefore')" />-->
2648 <!--<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.CSharp.targets\ImportBefore\*" Condition="'$(ImportByWildcardBeforeMicrosoftCSharpTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.CSharp.targets\ImportBefore')" />-->
2649 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2650 <CustomBeforeMicrosoftCSharpTargets Condition="'$(CustomBeforeMicrosoftCSharpTargets)'==''">$(MSBuildExtensionsPath)\v$(MSBuildToolsVersion)\Custom.Before.Microsoft.CSharp.targets</CustomBeforeMicrosoftCSharpTargets>
2651 <CustomAfterMicrosoftCSharpTargets Condition="'$(CustomAfterMicrosoftCSharpTargets)'==''">$(MSBuildExtensionsPath)\v$(MSBuildToolsVersion)\Custom.After.Microsoft.CSharp.targets</CustomAfterMicrosoftCSharpTargets>
2652 </PropertyGroup>
2653 <!--<Import Project="$(CustomBeforeMicrosoftCSharpTargets)" Condition="'$(CustomBeforeMicrosoftCSharpTargets)' != '' and Exists('$(CustomBeforeMicrosoftCSharpTargets)')" />-->
2654 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2655 <DefaultLanguageSourceExtension>.cs</DefaultLanguageSourceExtension>
2656 <Language>C#</Language>
2657 <TargetRuntime>Managed</TargetRuntime>
2658 <AlwaysUseNumericalSuffixInItemNames>true</AlwaysUseNumericalSuffixInItemNames>
2659 <DefineCommonItemSchemas Condition=" '$(DefineCommonItemSchemas)' == '' ">true</DefineCommonItemSchemas>
2660 <DefineCommonReferenceSchemas Condition=" '$(DefineCommonReferenceSchemas)' == '' ">true</DefineCommonReferenceSchemas>
2661 <DefineCommonCapabilities Condition=" '$(DefineCommonCapabilities)' == '' ">true</DefineCommonCapabilities>
2662 <SynthesizeLinkMetadata Condition=" '$(SynthesizeLinkMetadata)' == '' and '$(HasSharedItems)' == 'true' ">true</SynthesizeLinkMetadata>
2663 <DefaultProjectTypeGuid Condition=" '$(DefaultProjectTypeGuid)' == '' ">{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</DefaultProjectTypeGuid>
2664 <AppDesignerFolder Condition="'$(AppDesignerFolder)' == ''">Properties</AppDesignerFolder>
2665 </PropertyGroup>
2666 <ItemGroup Condition=" '$(DefineCSharpItemSchemas)' != 'false' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2667 <PropertyPageSchema Include="$(CommonXamlResourcesDirectory)CSharp.ProjectItemsSchema.xaml;" />
2668 <PropertyPageSchema Include="$(CommonXamlResourcesDirectory)CSharp.xaml;">
2669 <Context>File</Context>
2670 </PropertyPageSchema>
2671 <PropertyPageSchema Include="$(CommonXamlResourcesDirectory)CSharp.BrowseObject.xaml;">
2672 <Context>BrowseObject</Context>
2673 </PropertyPageSchema>
2674 <ProjectCapability Include="CSharp;Managed" />
2675 </ItemGroup>
2676 <ItemGroup Condition=" '$(DefineCommonCapabilities)' == 'true' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2677 <ProjectCapability Include="ReferencesFolder;LanguageService" />
2678 </ItemGroup>
2679 <!--
2680 The CreateManifestResourceNames target create the manifest resource names from the .RESX
2681 files.
2682
2683 [IN]
2684 @(EmbeddedResource) - The list of EmbeddedResource items that have been pre-processed to add metadata about resource type
2685 Expected Metadata "Type" can either be "Resx" or "Non-Resx"
2686
2687 [OUT]
2688 @(EmbeddedResource) - EmbeddedResource items with metadata
2689
2690 For C# applications the transformation is like:
2691
2692 Resources1.resx => RootNamespace.Resources1 => Build into main assembly
2693 SubFolder\Resources1.resx => RootNamespace.SubFolder.Resources1 => Build into main assembly
2694 Resources1.fr.resx => RootNamespace.Resources1.fr => Build into satellite assembly
2695 Resources1.notaculture.resx => RootNamespace.Resources1.notaculture => Build into main assembly
2696
2697 For other project systems, this transformation may be different.
2698 -->
2699 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2700 <CreateManifestResourceNamesDependsOn />
2701 </PropertyGroup>
2702 <Target Name="CreateManifestResourceNames" Condition="'@(EmbeddedResource)' != ''" DependsOnTargets="$(CreateManifestResourceNamesDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2703 <ItemGroup>
2704 <_Temporary Remove="@(_Temporary)" />
2705 </ItemGroup>
2706 <!-- Create manifest names for culture and non-culture Resx files, and for non-culture Non-Resx resources -->
2707 <CreateCSharpManifestResourceName ResourceFiles="@(EmbeddedResource)" RootNamespace="$(RootNamespace)" UseDependentUponConvention="$(EmbeddedResourceUseDependentUponConvention)" Condition="'%(EmbeddedResource.ManifestResourceName)' == '' and ('%(EmbeddedResource.WithCulture)' == 'false' or '%(EmbeddedResource.Type)' == 'Resx')">
2708 <Output TaskParameter="ResourceFilesWithManifestResourceNames" ItemName="_Temporary" />
2709 </CreateCSharpManifestResourceName>
2710 <!-- Create manifest names for all culture non-resx resources -->
2711 <CreateCSharpManifestResourceName ResourceFiles="@(EmbeddedResource)" RootNamespace="$(RootNamespace)" PrependCultureAsDirectory="false" UseDependentUponConvention="$(EmbeddedResourceUseDependentUponConvention)" Condition="'%(EmbeddedResource.ManifestResourceName)' == '' and '%(EmbeddedResource.WithCulture)' == 'true' and '%(EmbeddedResource.Type)' == 'Non-Resx'">
2712 <Output TaskParameter="ResourceFilesWithManifestResourceNames" ItemName="_Temporary" />
2713 </CreateCSharpManifestResourceName>
2714 <ItemGroup>
2715 <EmbeddedResource Remove="@(EmbeddedResource)" Condition="'%(EmbeddedResource.ManifestResourceName)' == ''" />
2716 <EmbeddedResource Include="@(_Temporary)" />
2717 <_Temporary Remove="@(_Temporary)" />
2718 </ItemGroup>
2719 </Target>
2720 <Target Name="ResolveCodeAnalysisRuleSet" Condition="'$(CodeAnalysisRuleSet)' != ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2721 <ResolveCodeAnalysisRuleSet CodeAnalysisRuleSet="$(CodeAnalysisRuleSet)" CodeAnalysisRuleSetDirectories="$(CodeAnalysisRuleSetDirectories)" MSBuildProjectDirectory="$(MSBuildProjectDirectory)">
2722 <Output TaskParameter="ResolvedCodeAnalysisRuleSet" PropertyName="ResolvedCodeAnalysisRuleSet" />
2723 </ResolveCodeAnalysisRuleSet>
2724 </Target>
2725 <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2726 <!-- Activate CPS projects to track folder names in namespace. -->
2727 <ProjectCapability Include="RelativePathDerivedDefaultNamespace" />
2728 </ItemGroup>
2729 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2730 <!-- Provide a facility to override UseHostCompilerIfAvailable-->
2731 <UseHostCompilerIfAvailable Condition=" '$(UseHostCompilerIfAvailable)' == ''">true</UseHostCompilerIfAvailable>
2732 </PropertyGroup>
2733 <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2734 <DocFileItem Include="$(DocumentationFile)" Condition="'$(DocumentationFile)'!=''" />
2735 </ItemGroup>
2736 <ItemGroup Condition="'$(_DebugSymbolsProduced)' == 'true' and '$(PdbFile)' != ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2737 <_DebugSymbolsIntermediatePathTemporary Include="$(PdbFile)" />
2738 <!-- Add any missing .pdb extension, as the compiler does -->
2739 <_DebugSymbolsIntermediatePath Include="@(_DebugSymbolsIntermediatePathTemporary->'%(RootDir)%(Directory)%(Filename).pdb')" />
2740 </ItemGroup>
2741 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2742 <CoreCompileDependsOn>$(CoreCompileDependsOn);_ComputeNonExistentFileProperty;ResolveCodeAnalysisRuleSet</CoreCompileDependsOn>
2743 <ExportWinMDFile Condition="'$(ExportWinMDFile)' == '' and '$(OutputType)' == 'WinMDObj'">true</ExportWinMDFile>
2744 </PropertyGroup>
2745 <!--
2746 The XamlPreCompile target must remain identical to
2747 the CoreCompile target in Microsoft.CSharp.Core.targets.
2748 Any updates to one must be made to the other.
2749-->
2750 <Target Name="XamlPreCompile" Inputs="$(MSBuildAllProjects);&#xD;&#xA; @(Compile);&#xD;&#xA; @(_CoreCompileResourceInputs);&#xD;&#xA; $(ApplicationIcon);&#xD;&#xA; $(AssemblyOriginatorKeyFile);&#xD;&#xA; @(ReferencePath);&#xD;&#xA; @(CompiledLicenseFile);&#xD;&#xA; @(LinkResource);&#xD;&#xA; @(EmbeddedDocumentation);&#xD;&#xA; $(Win32Resource);&#xD;&#xA; $(Win32Manifest);&#xD;&#xA; @(CustomAdditionalCompileInputs);&#xD;&#xA; @(Page);&#xD;&#xA; @(ApplicationDefinition);&#xD;&#xA; $(ResolvedCodeAnalysisRuleSet)" Outputs="@(DocFileItem);&#xD;&#xA; @(XamlIntermediateAssembly);&#xD;&#xA; @(_DebugSymbolsIntermediatePath);&#xD;&#xA; $(NonExistentFile);&#xD;&#xA; @(CustomAdditionalCompileOutputs)" Condition="'@(Page)' != '' Or '@(ApplicationDefinition)' != ''" Returns="" DependsOnTargets="$(CoreCompileDependsOn);GenerateMSBuildEditorConfigFile" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2751 <!-- These two compiler warnings are raised when a reference is bound to a different version
2752 than specified in the assembly reference version number. MSBuild raises the same warning in this case,
2753 so the compiler warning would be redundant. -->
2754 <PropertyGroup Condition="('$(TargetFrameworkVersion)' != 'v1.0') and ('$(TargetFrameworkVersion)' != 'v1.1')">
2755 <NoWarn>$(NoWarn);1701;1702</NoWarn>
2756 </PropertyGroup>
2757 <PropertyGroup>
2758 <!-- To match historical behavior, when inside VS11+ disable the warning from csc.exe indicating that no sources were passed in-->
2759 <NoWarn Condition=" '$(BuildingInsideVisualStudio)' == 'true' and '$(VisualStudioVersion)' != '' and '$(VisualStudioVersion)' &gt; '10.0' ">$(NoWarn);2008</NoWarn>
2760 </PropertyGroup>
2761 <ItemGroup Condition="'$(TargetingClr2Framework)'=='true'">
2762 <ReferencePath>
2763 <EmbedInteropTypes />
2764 </ReferencePath>
2765 </ItemGroup>
2766 <PropertyGroup>
2767 <!-- If the user has specified AppConfigForCompiler, we'll use it. If they have not, but they set UseAppConfigForCompiler,
2768 then we'll use AppConfig -->
2769 <AppConfigForCompiler Condition="'$(AppConfigForCompiler)' == '' and '$(UseAppConfigForCompiler)' == 'true'">$(AppConfig)</AppConfigForCompiler>
2770 <!-- If we are targeting winmdobj we want to specifically the pdbFile property since we do not want it to collide with the output of winmdexp-->
2771 <PdbFile Condition="'$(PdbFile)' == '' and '$(OutputType)' == 'winmdobj' and '$(_DebugSymbolsProduced)' == 'true'">$(IntermediateOutputPath)$(TargetName).compile.pdb</PdbFile>
2772 </PropertyGroup>
2773 <!-- Prefer32Bit was introduced in .NET 4.5. Set it to false if we are targeting 4.0 -->
2774 <PropertyGroup Condition="('$(TargetFrameworkVersion)' == 'v4.0')">
2775 <Prefer32Bit>false</Prefer32Bit>
2776 </PropertyGroup>
2777 <ItemGroup Condition="('$(AdditionalFileItemNames)' != '')">
2778 <AdditionalFileItems Include="$(AdditionalFileItemNames)" />
2779 <AdditionalFiles Include="@(%(AdditionalFileItems.Identity))" />
2780 </ItemGroup>
2781 <PropertyGroup Condition="'$(UseSharedCompilation)' == ''">
2782 <UseSharedCompilation>true</UseSharedCompilation>
2783 </PropertyGroup>
2784 <!-- Condition is to filter out the _CoreCompileResourceInputs so that it doesn't pass in culture resources to the compiler -->
2785 <Csc Condition=" '%(_CoreCompileResourceInputs.WithCulture)' != 'true' " AdditionalLibPaths="$(AdditionalLibPaths)" AddModules="@(AddModules)" AdditionalFiles="@(AdditionalFiles)" AllowUnsafeBlocks="$(AllowUnsafeBlocks)" AnalyzerConfigFiles="@(EditorConfigFiles)" Analyzers="@(Analyzer)" ApplicationConfiguration="$(AppConfigForCompiler)" BaseAddress="$(BaseAddress)" CheckForOverflowUnderflow="$(CheckForOverflowUnderflow)" CodeAnalysisRuleSet="$(ResolvedCodeAnalysisRuleSet)" CodePage="$(CodePage)" DebugType="$(DebugType)" DefineConstants="$(DefineConstants)" DelaySign="$(DelaySign)" DisabledWarnings="$(NoWarn)" DocumentationFile="@(DocFileItem)" EmitDebugInformation="$(DebugSymbols)" EnvironmentVariables="$(CscEnvironment)" ErrorEndLocation="$(ErrorEndLocation)" ErrorLog="$(ErrorLog)" ErrorReport="$(ErrorReport)" FileAlignment="$(FileAlignment)" GenerateFullPaths="$(GenerateFullPaths)" HighEntropyVA="$(HighEntropyVA)" KeyContainer="$(KeyContainerName)" KeyFile="$(KeyOriginatorFile)" LangVersion="$(LangVersion)" LinkResources="@(LinkResource)" MainEntryPoint="$(StartupObject)" ModuleAssemblyName="$(ModuleAssemblyName)" NoConfig="true" NoLogo="$(NoLogo)" NoStandardLib="$(NoCompilerStandardLib)" NoWin32Manifest="$(NoWin32Manifest)" Nullable="$(Nullable)" Optimize="$(Optimize)" OutputAssembly="@(XamlIntermediateAssembly)" PdbFile="$(PdbFile)" Platform="$(PlatformTarget)" Prefer32Bit="$(Prefer32Bit)" PreferredUILang="$(PreferredUILang)" References="@(ReferencePath)" ReportAnalyzer="$(ReportAnalyzer)" Resources="@(_CoreCompileResourceInputs);@(CompiledLicenseFile)" ResponseFiles="$(CompilerResponseFile)" SkipAnalyzers="$(_SkipAnalyzers)" Sources="@(Compile)" SubsystemVersion="$(SubsystemVersion)" TargetType="$(OutputType)" ToolExe="$(CscToolExe)" ToolPath="$(CscToolPath)" TreatWarningsAsErrors="$(TreatWarningsAsErrors)" UseHostCompilerIfAvailable="$(UseHostCompilerIfAvailable)" UseSharedCompilation="$(UseSharedCompilation)" Utf8Output="$(Utf8Output)" VsSessionGuid="$(VsSessionGuid)" WarningLevel="$(WarningLevel)" WarningsAsErrors="$(WarningsAsErrors)" WarningsNotAsErrors="$(WarningsNotAsErrors)" Win32Icon="$(ApplicationIcon)" Win32Manifest="$(Win32Manifest)" Win32Resource="$(Win32Resource)" />
2786 <!-- Only Applicable to the regular CoreCompile:
2787 <ItemGroup>
2788 <_CoreCompileResourceInputs Remove="@(_CoreCompileResourceInputs)" />
2789 </ItemGroup>
2790
2791 <CallTarget Targets="$(TargetsTriggeredByCompilation)" Condition="'$(TargetsTriggeredByCompilation)' != ''"/>
2792-->
2793 <OnError Condition="'$(OnXamlPreCompileErrorTarget)' != ''" ExecuteTargets="$(OnXamlPreCompileErrorTarget)" />
2794 </Target>
2795 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2796 <!-- Design-time builds require a newer version than 1.0 to succeed, so override back to inbox in that case -->
2797 <CSharpCoreTargetsPath Condition="'$(CSharpCoreTargetsPath)' == '' or ('$(DesignTimeBuild)' == 'true' and $(CSharpCoreTargetsPath.Contains('Microsoft.Net.Compilers.1.0.0')))">$(RoslynTargetsPath)\Microsoft.CSharp.Core.targets</CSharpCoreTargetsPath>
2798 </PropertyGroup>
2799 <!--
2800============================================================================================================================================
2801 <Import Project="$(CSharpCoreTargetsPath)">
2802
2803C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Roslyn\Microsoft.CSharp.Core.targets
2804============================================================================================================================================
2805-->
2806 <!-- Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the MIT license. See the LICENSE file in the project root for more information. -->
2807 <!--
2808============================================================================================================================================
2809 <Import Project="Microsoft.Managed.Core.targets">
2810
2811C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Roslyn\Microsoft.Managed.Core.targets
2812============================================================================================================================================
2813-->
2814 <!-- Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the MIT license. See the LICENSE file in the project root for more information. -->
2815 <!--
2816 Common targets for managed compilers.
2817 -->
2818 <UsingTask TaskName="Microsoft.CodeAnalysis.BuildTasks.MapSourceRoots" AssemblyFile="$(MSBuildThisFileDirectory)Microsoft.Build.Tasks.CodeAnalysis.dll" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
2819 <Target Name="ShimReferencePathsWhenCommonTargetsDoesNotUnderstandReferenceAssemblies" BeforeTargets="CoreCompile" Condition="'@(ReferencePathWithRefAssemblies)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2820 <!--
2821 FindReferenceAssembliesForReferences target in Common targets populate this item
2822 since dev15.3. The compiler targets may be used (via NuGet package) on earlier MSBuilds.
2823 If the ReferencePathWithRefAssemblies item is not populated, just use ReferencePaths
2824 (implementation assemblies) as they are.
2825
2826 Since XAML inner build runs CoreCompile directly (instead of Compile target),
2827 it also doesn't invoke FindReferenceAssembliesForReferences listed in CompileDependsOn.
2828 In that case we also populate ReferencePathWithRefAssemblies with implementation assemblies.
2829 -->
2830 <ItemGroup>
2831 <ReferencePathWithRefAssemblies Include="@(ReferencePath)" />
2832 </ItemGroup>
2833 </Target>
2834 <Target Name="_BeforeVBCSCoreCompile" DependsOnTargets="ShimReferencePathsWhenCommonTargetsDoesNotUnderstandReferenceAssemblies" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2835 <ItemGroup Condition="'$(TargetingClr2Framework)' == 'true'">
2836 <ReferencePathWithRefAssemblies>
2837 <EmbedInteropTypes />
2838 </ReferencePathWithRefAssemblies>
2839 </ItemGroup>
2840 <!-- Prefer32Bit was introduced in .NET 4.5. Set it to false if we are targeting 4.0 -->
2841 <PropertyGroup Condition="('$(TargetFrameworkVersion)' == 'v4.0')">
2842 <Prefer32Bit>false</Prefer32Bit>
2843 </PropertyGroup>
2844 <!-- TODO: Remove this ItemGroup once it has been moved to "_GenerateCompileInputs" target in Microsoft.Common.CurrentVersion.targets.
2845 https://github.com/dotnet/roslyn/issues/12223 -->
2846 <ItemGroup Condition="('$(AdditionalFileItemNames)' != '')">
2847 <AdditionalFileItems Include="$(AdditionalFileItemNames)" />
2848 <AdditionalFiles Include="@(%(AdditionalFileItems.Identity))" />
2849 </ItemGroup>
2850 <PropertyGroup Condition="'$(UseSharedCompilation)' == ''">
2851 <UseSharedCompilation>true</UseSharedCompilation>
2852 </PropertyGroup>
2853 </Target>
2854 <Target Name="_ComputeSkipAnalyzers" BeforeTargets="CoreCompile" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2855 <!-- First, force clear non-user facing property '_SkipAnalyzers'. -->
2856 <PropertyGroup>
2857 <_SkipAnalyzers />
2858 </PropertyGroup>
2859 <!--
2860 Then, determine if '_SkipAnalyzers' needs to be 'true' based on user facing property 'RunAnalyzers'.
2861 If 'RunAnalyzers' is not set, then fallback to user facing property 'RunAnalyzersDuringBuild'.
2862 Latter property allows users to disable analyzers only for non-design time builds.
2863 Design time builds are background builds inside Visual Studio,
2864 see details here: https://github.com/dotnet/project-system/blob/main/docs/design-time-builds.md.
2865 Setting 'RunAnalyzersDuringBuild' to false, without setting 'RunAnalyzers', allows users to
2866 continue running analyzers in the background in Visual Studio while typing (i.e. intellisense),
2867 while disabling analyzer execution on explicitly invoked non-design time builds.
2868 -->
2869 <PropertyGroup Condition="'$(RunAnalyzers)' == 'false' or&#xD;&#xA; ('$(RunAnalyzers)' == '' and '$(RunAnalyzersDuringBuild)' == 'false')">
2870 <_SkipAnalyzers>true</_SkipAnalyzers>
2871 </PropertyGroup>
2872 </Target>
2873 <!--
2874 ========================
2875 .editorconfig Support
2876 ========================
2877
2878 -->
2879 <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2880 <_AllDirectoriesAbove Include="@(Compile-&gt;GetPathsOfAllDirectoriesAbove())" Condition="'$(DiscoverEditorConfigFiles)' != 'false' or '$(DiscoverGlobalAnalyzerConfigFiles)' != 'false'" />
2881 <!-- Work around a GetPathsOfAllDirectoriesAbove() bug where it can return multiple equivalent paths when the
2882 compilation includes linked files with relative paths - https://github.com/microsoft/msbuild/issues/4392 -->
2883 <PotentialEditorConfigFiles Include="@(_AllDirectoriesAbove-&gt;'%(FullPath)'-&gt;Distinct()-&gt;Combine('.editorconfig'))" Condition="'$(DiscoverEditorConfigFiles)' != 'false'" />
2884 <EditorConfigFiles Include="@(PotentialEditorConfigFiles-&gt;Exists())" Condition="'$(DiscoverEditorConfigFiles)' != 'false'" />
2885 <GlobalAnalyzerConfigFiles Include="@(_AllDirectoriesAbove-&gt;'%(FullPath)'-&gt;Distinct()-&gt;Combine('.globalconfig'))" Condition="'$(DiscoverGlobalAnalyzerConfigFiles)' != 'false'" />
2886 <EditorConfigFiles Include="@(GlobalAnalyzerConfigFiles-&gt;Exists())" Condition="'$(DiscoverGlobalAnalyzerConfigFiles)' != 'false'" />
2887 </ItemGroup>
2888 <!--
2889 ========================
2890 Property/metadata global .editorconfig Support
2891 ========================
2892
2893 Generates a global editor config that contains the evaluation of requested MSBuild properties and item metadata
2894
2895 Requested properties/items are requested via item groups like:
2896
2897 <CompilerVisibleProperty Include="PropertyNameToEval" />
2898 <CompilerVisibleItemMetadata Include="ItemType" MetadataName="MetadataToRetrieve" />
2899 -->
2900 <UsingTask TaskName="Microsoft.CodeAnalysis.BuildTasks.GenerateMSBuildEditorConfig" AssemblyFile="$(MSBuildThisFileDirectory)Microsoft.Build.Tasks.CodeAnalysis.dll" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
2901 <Target Name="GenerateMSBuildEditorConfigFile" BeforeTargets="BeforeCompile;CoreCompile" DependsOnTargets="PrepareForBuild;GenerateMSBuildEditorConfigFileShouldRun;GenerateMSBuildEditorConfigFileCore" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
2902 <Target Name="GenerateMSBuildEditorConfigFileShouldRun" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2903 <PropertyGroup>
2904 <GeneratedMSBuildEditorConfigFile Condition="'$(GeneratedMSBuildEditorConfigFile)' == ''">$(IntermediateOutputPath)$(MSBuildProjectName).GeneratedMSBuildEditorConfig.editorconfig</GeneratedMSBuildEditorConfigFile>
2905 <GenerateMSBuildEditorConfigFile Condition="'$(GenerateMSBuildEditorConfigFile)' == ''">true</GenerateMSBuildEditorConfigFile>
2906 <_GeneratedEditorConfigHasItems Condition="'@(CompilerVisibleItemMetadata-&gt;Count())' != '0'">true</_GeneratedEditorConfigHasItems>
2907 <_GeneratedEditorConfigShouldRun Condition="'$(GenerateMSBuildEditorConfigFile)' == 'true' and ('$(_GeneratedEditorConfigHasItems)' == 'true' or '@(CompilerVisibleProperty-&gt;Count())' != '0')">true</_GeneratedEditorConfigShouldRun>
2908 </PropertyGroup>
2909 </Target>
2910 <Target Name="GenerateMSBuildEditorConfigFileCore" Condition="'$(_GeneratedEditorConfigShouldRun)' == 'true'" Outputs="$(GeneratedMSBuildEditorConfigFile)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2911 <ItemGroup>
2912 <!-- Collect requested properties, and eval their value -->
2913 <_GeneratedEditorConfigProperty Include="@(CompilerVisibleProperty)">
2914 <Value>$(%(CompilerVisibleProperty.Identity))</Value>
2915 </_GeneratedEditorConfigProperty>
2916 <!-- Collect the requested items and remember which metadata is wanted -->
2917 <_GeneratedEditorConfigMetadata Include="@(%(CompilerVisibleItemMetadata.Identity))" Condition="'$(_GeneratedEditorConfigHasItems)' == 'true'">
2918 <ItemType>%(Identity)</ItemType>
2919 <MetadataName>%(CompilerVisibleItemMetadata.MetadataName)</MetadataName>
2920 </_GeneratedEditorConfigMetadata>
2921 <!-- Record that we'll write a file, and add it to the analyzerconfig inputs -->
2922 <FileWrites Include="$(GeneratedMSBuildEditorConfigFile)" />
2923 <EditorConfigFiles Include="$(GeneratedMSBuildEditorConfigFile)" />
2924 </ItemGroup>
2925 <!-- Transform the collected properties and items into an editor config file -->
2926 <GenerateMSBuildEditorConfig PropertyItems="@(_GeneratedEditorConfigProperty)" MetadataItems="@(_GeneratedEditorConfigMetadata)">
2927 <Output TaskParameter="ConfigFileContents" PropertyName="_GeneratedEditorConfigFileContent" />
2928 </GenerateMSBuildEditorConfig>
2929 <!-- Write the output to the generated file, if it's changed -->
2930 <WriteLinesToFile Lines="$(_GeneratedEditorConfigFileContent)" File="$(GeneratedMSBuildEditorConfigFile)" Overwrite="True" WriteOnlyWhenDifferent="True" />
2931 </Target>
2932 <!--
2933 ========================
2934 DeterministicSourcePaths
2935 ========================
2936
2937 Unless specified otherwise enable deterministic source root (PathMap) when building deterministically on CI server, but not for local builds.
2938 In order for the debugger to find source files when debugging a locally built binary the PDB must contain original, unmapped local paths.
2939 -->
2940 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2941 <DeterministicSourcePaths Condition="'$(DeterministicSourcePaths)' == '' and '$(Deterministic)' == 'true' and '$(ContinuousIntegrationBuild)' == 'true'">true</DeterministicSourcePaths>
2942 </PropertyGroup>
2943 <!--
2944 ==========
2945 SourceRoot
2946 ==========
2947
2948 All source files of the project are expected to be located under one of the directories specified by SourceRoot item group.
2949 This target collects all SourceRoots from various sources.
2950
2951 This target calculates final local path for each SourceRoot and sets SourceRoot.MappedPath metadata accordingly.
2952 The final path is a path with deterministic prefix when DeterministicSourcePaths is true, and the original path otherwise.
2953 In addition, the target validates and deduplicates the SourceRoot items.
2954
2955 InitializeSourceControlInformation is an msbuild target that ensures the SourceRoot items are populated from source control.
2956 The target is available only if SourceControlInformationFeatureSupported is true.
2957
2958 A consumer of SourceRoot.MappedPath metadata, such as Source Link generator, shall depend on this target.
2959 -->
2960 <Target Name="InitializeSourceRootMappedPaths" DependsOnTargets="_InitializeSourceRootMappedPathsFromSourceControl" Returns="@(SourceRoot)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2961 <ItemGroup Condition="'@(_MappedSourceRoot)' != ''">
2962 <_MappedSourceRoot Remove="@(_MappedSourceRoot)" />
2963 </ItemGroup>
2964 <Microsoft.CodeAnalysis.BuildTasks.MapSourceRoots SourceRoots="@(SourceRoot)" Deterministic="$(DeterministicSourcePaths)">
2965 <Output TaskParameter="MappedSourceRoots" ItemName="_MappedSourceRoot" />
2966 </Microsoft.CodeAnalysis.BuildTasks.MapSourceRoots>
2967 <ItemGroup>
2968 <SourceRoot Remove="@(SourceRoot)" />
2969 <SourceRoot Include="@(_MappedSourceRoot)" />
2970 </ItemGroup>
2971 </Target>
2972 <!--
2973 Declare that target InitializeSourceRootMappedPaths that populates MappedPaths metadata on SourceRoot items is available.
2974 -->
2975 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2976 <SourceRootMappedPathsFeatureSupported>true</SourceRootMappedPathsFeatureSupported>
2977 </PropertyGroup>
2978 <!--
2979 If InitializeSourceControlInformation target isn't supported, we just continue without invoking that synchronization target.
2980 We'll proceed with SourceRoot (and other source control properties) provided by the user (or blank).
2981 -->
2982 <Target Name="_InitializeSourceRootMappedPathsFromSourceControl" DependsOnTargets="InitializeSourceControlInformation" Condition="'$(SourceControlInformationFeatureSupported)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
2983 <!--
2984 =======
2985 PathMap
2986 =======
2987
2988 If DeterministicSourcePaths is true sets PathMap based on SourceRoot.MappedPaths.
2989
2990 This target requires SourceRoot to be initialized in order to calculate the PathMap.
2991 If SourceRoot doesn't contain any top-level roots an error is reported.
2992 -->
2993 <Target Name="_SetPathMapFromSourceRoots" DependsOnTargets="InitializeSourceRootMappedPaths" BeforeTargets="CoreCompile" Condition="'$(DeterministicSourcePaths)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2994 <ItemGroup>
2995 <_TopLevelSourceRoot Include="@(SourceRoot)" Condition="'%(SourceRoot.NestedRoot)' == ''">
2996 <EscapedKey>$([MSBuild]::ValueOrDefault('%(Identity)', '').Replace(',', ',,').Replace('=', '=='))</EscapedKey>
2997 <EscapedValue>$([MSBuild]::ValueOrDefault('%(MappedPath)', '').Replace(',', ',,').Replace('=', '=='))</EscapedValue>
2998 </_TopLevelSourceRoot>
2999 </ItemGroup>
3000 <PropertyGroup Condition="'@(_TopLevelSourceRoot)' != ''">
3001 <!--
3002 Prepend the SourceRoot.MappedPath values to PathMap, if it already has a value.
3003 For each emitted source path the compiler applies the first mapping that matches the path.
3004 PathMap values set previously will thus only be applied if the mapping provided by
3005 SourceRoot.MappedPath doesn't match. Since SourceRoot.MappedPath is also used by SourceLink
3006 preferring it over manually set PathMap ensures that PathMap is consistent with SourceLink.
3007 -->
3008 <PathMap>@(_TopLevelSourceRoot->'%(EscapedKey)=%(EscapedValue)', ','),$(PathMap)</PathMap>
3009 </PropertyGroup>
3010 </Target>
3011 <!--
3012 =======
3013 CopyAdditionalFiles
3014 =======
3015
3016 If a user requests that any @(AdditionalFiles) items are copied to the output directory
3017 we add them to the @(None) group to ensure they will be copied.
3018 -->
3019 <Target Name="CopyAdditionalFiles" BeforeTargets="AssignTargetPaths" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3020 <ItemGroup>
3021 <None Include="@(AdditionalFiles)" Condition="'%(AdditionalFiles.CopyToOutputDirectory)' != ''" />
3022 </ItemGroup>
3023 </Target>
3024 <!--
3025 ========================
3026 CompilerGeneratedFilesOutputPath
3027 ========================
3028
3029 Controls output of generated files.
3030
3031 CompilerGeneratedFilesOutputPath controls the location the files will be output to.
3032 The compiler will not emit any generated files when the path is empty, and defaults to a /generated directory in $(IntermediateOutputPath) if $(IntermediateOutputPath) has a value.
3033 EmitCompilerGeneratedFiles allows the user to control if anything is emitted by clearing the property when not true.
3034 When EmitCompilerGeneratedFiles is true, we ensure that CompilerGeneatedFilesOutputPath has a value and issue a warning if not.
3035 We will create CompilerGeneratedFilesOutputPath if it does not exist.
3036 -->
3037 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3038 <EmitCompilerGeneratedFiles Condition="'$(EmitCompilerGeneratedFiles)' == ''">false</EmitCompilerGeneratedFiles>
3039 <CompilerGeneratedFilesOutputPath Condition="'$(EmitCompilerGeneratedFiles)' != 'true'" />
3040 <CompilerGeneratedFilesOutputPath Condition="'$(EmitCompilerGeneratedFiles)' == 'true' and '$(CompilerGeneratedFilesOutputPath)' == '' and '$(IntermediateOutputPath)' != ''">$(IntermediateOutputPath)/generated</CompilerGeneratedFilesOutputPath>
3041 </PropertyGroup>
3042 <Target Name="CreateCompilerGeneratedFilesOutputPath" BeforeTargets="CoreCompile" Condition="'$(EmitCompilerGeneratedFiles)' == 'true' and !('$(DesignTimeBuild)' == 'true' OR '$(BuildingProject)' != 'true')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3043 <Warning Condition="'$(CompilerGeneratedFilesOutputPath)' == ''" Text="EmitCompilerGeneratedFiles was true, but no CompilerGeneratedFilesOutputPath was provided. CompilerGeneratedFilesOutputPath must be set in order to emit generated files." />
3044 <MakeDir Condition="'$(CompilerGeneratedFilesOutputPath)' != ''" Directories="$(CompilerGeneratedFilesOutputPath)" />
3045 </Target>
3046 <!--
3047 ========================
3048 Component Debugger Support
3049 ========================
3050
3051 Add the specified VS capability if a user indicates this project supports component debugging
3052 -->
3053 <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3054 <ProjectCapability Include="RoslynComponent" Condition="'$(IsRoslynComponent)' == 'true'" />
3055 </ItemGroup>
3056 <!--
3057============================================================================================================================================
3058 </Import>
3059
3060C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Roslyn\Microsoft.CSharp.Core.targets
3061============================================================================================================================================
3062-->
3063 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3064 <!-- .NETCoreApp < 3.0, .NETStandard < 2.1, or any other target framework -->
3065 <_MaxSupportedLangVersion Condition="('$(TargetFrameworkIdentifier)' != '.NETCoreApp' OR '$(_TargetFrameworkVersionWithoutV)' &lt; '3.0') AND&#xD;&#xA; ('$(TargetFrameworkIdentifier)' != '.NETStandard' OR '$(_TargetFrameworkVersionWithoutV)' &lt; '2.1')">7.3</_MaxSupportedLangVersion>
3066 <!-- .NETCoreApp < 5.0, .NETStandard == 2.1 -->
3067 <_MaxSupportedLangVersion Condition="(('$(TargetFrameworkIdentifier)' == '.NETCoreApp' AND '$(_TargetFrameworkVersionWithoutV)' &lt; '5.0') OR&#xD;&#xA; ('$(TargetFrameworkIdentifier)' == '.NETStandard' AND '$(_TargetFrameworkVersionWithoutV)' == '2.1')) AND&#xD;&#xA; '$(_MaxSupportedLangVersion)' == ''">8.0</_MaxSupportedLangVersion>
3068 <!-- .NETCoreApp == 5.0 -->
3069 <_MaxSupportedLangVersion Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' AND '$(_TargetFrameworkVersionWithoutV)' == '5.0' AND&#xD;&#xA; '$(_MaxSupportedLangVersion)' == ''">9.0</_MaxSupportedLangVersion>
3070 <MaxSupportedLangVersion>$(_MaxSupportedLangVersion)</MaxSupportedLangVersion>
3071 <LangVersion Condition="'$(LangVersion)' == '' AND '$(_MaxSupportedLangVersion)' != ''">$(_MaxSupportedLangVersion)</LangVersion>
3072 </PropertyGroup>
3073 <Target Name="CoreCompile" Inputs="$(MSBuildAllProjects);&#xD;&#xA; @(Compile);&#xD;&#xA; @(_CoreCompileResourceInputs);&#xD;&#xA; $(ApplicationIcon);&#xD;&#xA; $(AssemblyOriginatorKeyFile);&#xD;&#xA; @(ReferencePathWithRefAssemblies);&#xD;&#xA; @(CompiledLicenseFile);&#xD;&#xA; @(LinkResource);&#xD;&#xA; @(EmbeddedDocumentation);&#xD;&#xA; $(Win32Resource);&#xD;&#xA; $(Win32Manifest);&#xD;&#xA; @(CustomAdditionalCompileInputs);&#xD;&#xA; $(ResolvedCodeAnalysisRuleSet);&#xD;&#xA; @(AdditionalFiles);&#xD;&#xA; @(EmbeddedFiles);&#xD;&#xA; @(EditorConfigFiles)" Outputs="@(DocFileItem);&#xD;&#xA; @(IntermediateAssembly);&#xD;&#xA; @(IntermediateRefAssembly);&#xD;&#xA; @(_DebugSymbolsIntermediatePath);&#xD;&#xA; $(NonExistentFile);&#xD;&#xA; @(CustomAdditionalCompileOutputs)" Returns="@(CscCommandLineArgs)" DependsOnTargets="$(CoreCompileDependsOn);_BeforeVBCSCoreCompile" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3074 <!-- These two compiler warnings are raised when a reference is bound to a different version
3075 than specified in the assembly reference version number. MSBuild raises the same warning in this case,
3076 so the compiler warning would be redundant. -->
3077 <PropertyGroup Condition="('$(TargetFrameworkVersion)' != 'v1.0') and ('$(TargetFrameworkVersion)' != 'v1.1')">
3078 <NoWarn>$(NoWarn);1701;1702</NoWarn>
3079 </PropertyGroup>
3080 <PropertyGroup>
3081 <!-- To match historical behavior, when inside VS11+ disable the warning from csc.exe indicating that no sources were passed in-->
3082 <NoWarn Condition="'$(BuildingInsideVisualStudio)' == 'true' AND '$(VisualStudioVersion)' != '' AND '$(VisualStudioVersion)' &gt; '10.0'">$(NoWarn);2008</NoWarn>
3083 </PropertyGroup>
3084 <PropertyGroup>
3085 <!-- If the user has specified AppConfigForCompiler, we'll use it. If they have not, but they set UseAppConfigForCompiler,
3086 then we'll use AppConfig -->
3087 <AppConfigForCompiler Condition="'$(AppConfigForCompiler)' == '' AND '$(UseAppConfigForCompiler)' == 'true'">$(AppConfig)</AppConfigForCompiler>
3088 <!-- If we are targeting winmdobj we want to specifically the pdbFile property since we do not want it to collide with the output of winmdexp-->
3089 <PdbFile Condition="'$(PdbFile)' == '' AND '$(OutputType)' == 'winmdobj' AND '$(_DebugSymbolsProduced)' == 'true'">$(IntermediateOutputPath)$(TargetName).compile.pdb</PdbFile>
3090 </PropertyGroup>
3091 <!-- Condition is to filter out the _CoreCompileResourceInputs so that it doesn't pass in culture resources to the compiler -->
3092 <Csc Condition="'%(_CoreCompileResourceInputs.WithCulture)' != 'true'" AdditionalLibPaths="$(AdditionalLibPaths)" AddModules="@(AddModules)" AdditionalFiles="@(AdditionalFiles)" AllowUnsafeBlocks="$(AllowUnsafeBlocks)" AnalyzerConfigFiles="@(EditorConfigFiles)" Analyzers="@(Analyzer)" ApplicationConfiguration="$(AppConfigForCompiler)" BaseAddress="$(BaseAddress)" CheckForOverflowUnderflow="$(CheckForOverflowUnderflow)" ChecksumAlgorithm="$(ChecksumAlgorithm)" CodeAnalysisRuleSet="$(ResolvedCodeAnalysisRuleSet)" CodePage="$(CodePage)" DebugType="$(DebugType)" DefineConstants="$(DefineConstants)" DelaySign="$(DelaySign)" DisabledWarnings="$(NoWarn)" DisableSdkPath="$(DisableSdkPath)" DocumentationFile="@(DocFileItem)" EmbedAllSources="$(EmbedAllSources)" EmbeddedFiles="@(EmbeddedFiles)" EmitDebugInformation="$(DebugSymbols)" EnvironmentVariables="$(CscEnvironment)" ErrorEndLocation="$(ErrorEndLocation)" ErrorLog="$(ErrorLog)" ErrorReport="$(ErrorReport)" Features="$(Features)" FileAlignment="$(FileAlignment)" GeneratedFilesOutputPath="$(CompilerGeneratedFilesOutputPath)" GenerateFullPaths="$(GenerateFullPaths)" HighEntropyVA="$(HighEntropyVA)" Instrument="$(Instrument)" KeyContainer="$(KeyContainerName)" KeyFile="$(KeyOriginatorFile)" LangVersion="$(LangVersion)" LinkResources="@(LinkResource)" MainEntryPoint="$(StartupObject)" ModuleAssemblyName="$(ModuleAssemblyName)" NoConfig="true" NoLogo="$(NoLogo)" NoStandardLib="$(NoCompilerStandardLib)" NoWin32Manifest="$(NoWin32Manifest)" Nullable="$(Nullable)" Optimize="$(Optimize)" Deterministic="$(Deterministic)" PublicSign="$(PublicSign)" OutputAssembly="@(IntermediateAssembly)" OutputRefAssembly="@(IntermediateRefAssembly)" PdbFile="$(PdbFile)" Platform="$(PlatformTarget)" Prefer32Bit="$(Prefer32Bit)" PreferredUILang="$(PreferredUILang)" ProvideCommandLineArgs="$(ProvideCommandLineArgs)" References="@(ReferencePathWithRefAssemblies)" RefOnly="$(ProduceOnlyReferenceAssembly)" ReportAnalyzer="$(ReportAnalyzer)" Resources="@(_CoreCompileResourceInputs);@(CompiledLicenseFile)" ResponseFiles="$(CompilerResponseFile)" RuntimeMetadataVersion="$(RuntimeMetadataVersion)" SharedCompilationId="$(SharedCompilationId)" SkipAnalyzers="$(_SkipAnalyzers)" SkipCompilerExecution="$(SkipCompilerExecution)" Sources="@(Compile)" SubsystemVersion="$(SubsystemVersion)" TargetType="$(OutputType)" ToolExe="$(CscToolExe)" ToolPath="$(CscToolPath)" TreatWarningsAsErrors="$(TreatWarningsAsErrors)" UseHostCompilerIfAvailable="$(UseHostCompilerIfAvailable)" UseSharedCompilation="$(UseSharedCompilation)" Utf8Output="$(Utf8Output)" VsSessionGuid="$(VsSessionGuid)" WarningLevel="$(WarningLevel)" WarningsAsErrors="$(WarningsAsErrors)" WarningsNotAsErrors="$(WarningsNotAsErrors)" Win32Icon="$(ApplicationIcon)" Win32Manifest="$(Win32Manifest)" Win32Resource="$(Win32Resource)" PathMap="$(PathMap)" SourceLink="$(SourceLink)">
3093 <Output TaskParameter="CommandLineArgs" ItemName="CscCommandLineArgs" />
3094 </Csc>
3095 <ItemGroup>
3096 <_CoreCompileResourceInputs Remove="@(_CoreCompileResourceInputs)" />
3097 </ItemGroup>
3098 <CallTarget Targets="$(TargetsTriggeredByCompilation)" Condition="'$(TargetsTriggeredByCompilation)' != ''" />
3099 </Target>
3100 <!--
3101============================================================================================================================================
3102 </Import>
3103
3104C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.CSharp.CurrentVersion.targets
3105============================================================================================================================================
3106-->
3107 <!-- Import design time targets for Roslyn Project System. These are only available if Visual Studio is installed. -->
3108 <!-- Import design time targets before the common targets, which import targets from Nuget. -->
3109 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3110 <CSharpDesignTimeTargetsPath Condition="'$(CSharpDesignTimeTargetsPath)'==''">$(MSBuildExtensionsPath)\Microsoft\VisualStudio\Managed\Microsoft.CSharp.DesignTime.targets</CSharpDesignTimeTargetsPath>
3111 </PropertyGroup>
3112 <!--
3113============================================================================================================================================
3114 <Import Project="$(CSharpDesignTimeTargetsPath)" Condition="'$(CSharpDesignTimeTargetsPath)' != '' and Exists('$(CSharpDesignTimeTargetsPath)')">
3115
3116C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\VisualStudio\Managed\Microsoft.CSharp.DesignTime.targets
3117============================================================================================================================================
3118-->
3119 <!--
3120
3121 This file contains Visual Studio and designer-related properties and items for C# projects.
3122
3123-->
3124 <!--
3125============================================================================================================================================
3126 <Import Project="Microsoft.Managed.DesignTime.targets">
3127
3128C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\VisualStudio\Managed\Microsoft.Managed.DesignTime.targets
3129============================================================================================================================================
3130-->
3131 <!--
3132
3133 This file contains Visual Studio and designer-related properties and items for managed projects.
3134
3135-->
3136 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3137 <!-- Turn off capabilities from Microsoft.Common.CurrentVersions.targets and explicitly include the ones we want. The list below
3138 currently matches what is in common targets, but removes BuildWindowsDesktopTarget -->
3139 <DefineCommonItemSchemas>false</DefineCommonItemSchemas>
3140 <DefineCommonCapabilities>false</DefineCommonCapabilities>
3141 <DefineCommonReferenceSchemas>false</DefineCommonReferenceSchemas>
3142 <DefineCommonManagedCapabilities Condition=" '$(DefineCommonManagedCapabilities)' == '' ">true</DefineCommonManagedCapabilities>
3143 <DefineCommonManagedItemSchemas Condition=" '$(DefineCommonManagedItemSchemas)' == '' ">true</DefineCommonManagedItemSchemas>
3144 <DefineCommonManagedReferenceSchemas Condition=" '$(DefineCommonManagedReferenceSchemas)' == '' ">true</DefineCommonManagedReferenceSchemas>
3145 <!--This property sets the default output types supported by the project system.-->
3146 <SupportedOutputTypes Condition="'$(SupportedOutputTypes)' == ''">Exe;WinExe;Library</SupportedOutputTypes>
3147 <SuppressOutOfDateMessageOnBuild Condition="'$(SuppressOutOfDateMessageOnBuild)' == ''">true</SuppressOutOfDateMessageOnBuild>
3148 <!-- Tells CPS which target to run for the Package solution build type -->
3149 <PackageAction Condition="'$(PackageAction)' == ''">Pack</PackageAction>
3150 </PropertyGroup>
3151 <PropertyGroup Condition="'$(AssemblyReferenceTabs)' == '' And '$(UsingMicrosoftNETSdk)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3152 <!-- You cannot choose individual framework assemblies in .NET Core/.NET Standard, and AssemblyFoldersEx
3153 is not supported, so completely opt out of the Assembly category in Reference Manager by default. -->
3154 <AssemblyReferenceTabs>0</AssemblyReferenceTabs>
3155 <!-- However, .NET Framework supports choosing individual framework assemblies, so opt into that tab -->
3156 <AssemblyReferenceTabs Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework'">TAB_ASSEMBLY_FRAMEWORK</AssemblyReferenceTabs>
3157 </PropertyGroup>
3158 <!--
3159 Rule files that don't need localization go in the neutral directory to save duplicating files into each language
3160 -->
3161 <PropertyGroup Condition="'$(ManagedXamlNeutralResourcesDirectory)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3162 <ManagedXamlNeutralResourcesDirectory>$(MSBuildThisFileDirectory)</ManagedXamlNeutralResourcesDirectory>
3163 </PropertyGroup>
3164 <!--
3165 Locate the approriate localized xaml resources based on the language ID or name.
3166
3167 The logic here matches the resource manager sufficiently to handle the fixed set of
3168 possible VS languages and directories on disk.
3169
3170 We cannot respect the exact probe order of the resource manager as this has to evaluate statically
3171 and we have only LangName and LangID and no access to System.Globalization API.
3172 -->
3173 <PropertyGroup Condition="'$(ManagedXamlResourcesDirectory)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3174 <!-- 1. Probe for exact match against LangName. (e.g. pt-BR) -->
3175 <ManagedXamlResourcesDirectory>$(MSBuildThisFileDirectory)$(LangName)</ManagedXamlResourcesDirectory>
3176 <!-- 2. Handle special cases of languages which would not match above or below. -->
3177 <ManagedXamlResourcesDirectory Condition="!Exists('$(ManagedXamlResourcesDirectory)') and '$(LangID)' == '2052'">$(MSBuildThisFileDirectory)zh-Hans</ManagedXamlResourcesDirectory>
3178 <ManagedXamlResourcesDirectory Condition="!Exists('$(ManagedXamlResourcesDirectory)') and '$(LangID)' == '1028'">$(MSBuildThisFileDirectory)zh-Hant</ManagedXamlResourcesDirectory>
3179 <!-- 3. Probe for parent by taking portion the portion before the hyphen (e.g. fr-FR -> fr) -->
3180 <ManagedXamlResourcesDirectory Condition="!Exists('$(ManagedXamlResourcesDirectory)')">$(MSBuildThisFileDirectory)$(LangName.Split('-')[0])</ManagedXamlResourcesDirectory>
3181 <!-- 4. Fall back to neutral resources if all of the above fail -->
3182 <ManagedXamlResourcesDirectory Condition="!Exists('$(ManagedXamlResourcesDirectory)')">$(ManagedXamlNeutralResourcesDirectory)</ManagedXamlResourcesDirectory>
3183 </PropertyGroup>
3184 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3185 <ManagedXamlResourcesDirectory Condition="!HasTrailingSlash('$(ManagedXamlResourcesDirectory)')">$(ManagedXamlResourcesDirectory)\</ManagedXamlResourcesDirectory>
3186 <DebuggerFlavor Condition="'$(DebuggerFlavor)' == ''">ProjectDebugger</DebuggerFlavor>
3187 </PropertyGroup>
3188 <!-- Project Capabilities -->
3189 <!-- Capabilities shared between shared projects & binary-producing projects. -->
3190 <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3191 <ProjectCapability Include=".NET" />
3192 </ItemGroup>
3193 <!-- Capabilities for binary producing projects -->
3194 <ItemGroup Condition="'$(DefineCommonManagedCapabilities)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3195 <ProjectCapability Include="UseFileGlobs" />
3196 <ProjectCapability Include="DynamicDependentFile" />
3197 <ProjectCapability Include="ConfigurableFileNesting" />
3198 <!-- DependenciesTree capability lights up a Dependencies tree node and its sub node providers-->
3199 <ProjectCapability Include="DependenciesTree" />
3200 <ProjectCapability Include="ProjectImportsTree" />
3201 <ProjectCapability Include="LaunchProfiles" />
3202 <ProjectCapability Include="NoGeneralDependentFileIcon" />
3203 <ProjectCapability Include="PackageReferences" Condition="'$(RestoreProjectStyle)' == 'PackageReference'" />
3204 <!--
3205 List of capabilities below is adding back common capabilities defined in imported targets.
3206 We disabled them with the property DefineCommonCapabilities=false to get rid of default
3207 References capability, but everything else we want back.
3208 -->
3209 <ProjectCapability Include="&#xD;&#xA; AssemblyReferences;&#xD;&#xA; ProjectReferences; &#xD;&#xA; WinRTReferences;&#xD;&#xA; OutputGroups;&#xD;&#xA; AllTargetOutputGroups;&#xD;&#xA; VisualStudioWellKnownOutputGroups;&#xD;&#xA; SingleFileGenerators;&#xD;&#xA; DeclaredSourceItems;&#xD;&#xA; UserSourceItems;&#xD;&#xA; SupportAvailableItemName;&#xD;&#xA; IntegratedConsoleDebugging;&#xD;&#xA; DisableBuiltInDebuggerServices;&#xD;&#xA; PersistDesignTimeDataOutOfProject;" />
3210 <!-- COM references are not supported in .NET Core before 3.0 -->
3211 <ProjectCapability Include="COMReferences" Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework' Or ('$(TargetFrameworkIdentifier)' == '.NETCoreApp' And '$(_TargetFrameworkVersionWithoutV)' &gt;= '3.0')" />
3212 <!-- Settings page capability -->
3213 <ProjectCapability Include="AppSettings" Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework' Or '$(UseWPF)' == 'true' Or '$(UseWindowsForms)' == 'true' " />
3214 <!-- Publish capability enables the Publish command for the Project -->
3215 <ProjectCapability Include="Publish" />
3216 <ProjectCapability Include="FolderPublish" />
3217 <!-- All Microsoft.NET.Sdk Exe projects, except WPF and WinForms exes, can be published to app service -->
3218 <ProjectCapability Include="AppServicePublish" Condition="'$(OutputType)' == 'Exe'" />
3219 <!-- Capabilities for WPF and WinForms -->
3220 <ProjectCapability Include="WPF" Condition="'$(UseWPF)' == 'true'" />
3221 <ProjectCapability Include="WindowsForms" Condition="'$(UseWindowsForms)' == 'true'" />
3222 <ProjectCapability Include="DataSourceWindow" Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework' Or ('$(TargetFrameworkIdentifier)' == '.NETCoreApp' And '$(_TargetFrameworkVersionWithoutV)' &gt;= '3.0')" />
3223 </ItemGroup>
3224 <!-- Common Project System rules that override rules defined in msbuild. These are exact copy of the rules defined in msbuild. -->
3225 <ItemGroup Condition="'$(DefineCommonManagedItemSchemas)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3226 <!-- Files/Folders schema -->
3227 <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)ProjectItemsSchema.xaml">
3228 <Context>Project</Context>
3229 </PropertyPageSchema>
3230 <!-- Files/Folders -->
3231 <PropertyPageSchema Include="$(ManagedXamlNeutralResourcesDirectory)Compile.xaml;">
3232 <Context>File</Context>
3233 </PropertyPageSchema>
3234 <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)Compile.BrowseObject.xaml;">
3235 <Context>BrowseObject</Context>
3236 </PropertyPageSchema>
3237 <PropertyPageSchema Include="$(ManagedXamlNeutralResourcesDirectory)Content.xaml">
3238 <Context>File</Context>
3239 </PropertyPageSchema>
3240 <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)Content.BrowseObject.xaml">
3241 <Context>BrowseObject</Context>
3242 </PropertyPageSchema>
3243 <PropertyPageSchema Include="$(ManagedXamlNeutralResourcesDirectory)EmbeddedResource.xaml">
3244 <Context>File</Context>
3245 </PropertyPageSchema>
3246 <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)EmbeddedResource.BrowseObject.xaml">
3247 <Context>BrowseObject</Context>
3248 </PropertyPageSchema>
3249 <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)Folder.xaml">
3250 <Context>File;BrowseObject</Context>
3251 </PropertyPageSchema>
3252 <PropertyPageSchema Include="$(ManagedXamlNeutralResourcesDirectory)None.xaml">
3253 <Context>File</Context>
3254 </PropertyPageSchema>
3255 <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)None.BrowseObject.xaml">
3256 <Context>BrowseObject</Context>
3257 </PropertyPageSchema>
3258 <PropertyPageSchema Include="$(ManagedXamlNeutralResourcesDirectory)DebuggerGeneral.xaml">
3259 <Context>Project</Context>
3260 </PropertyPageSchema>
3261 <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)ApplicationPropertyPage.xaml">
3262 <Context>Project</Context>
3263 </PropertyPageSchema>
3264 <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)BuildPropertyPage.xaml">
3265 <Context>Project</Context>
3266 </PropertyPageSchema>
3267 <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)DebugPropertyPage.xaml">
3268 <Context>Project</Context>
3269 </PropertyPageSchema>
3270 <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)PackagePropertyPage.xaml">
3271 <Context>Project</Context>
3272 </PropertyPageSchema>
3273 <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)ExecutableDebugPropertyPage.xaml">
3274 <Context>Project</Context>
3275 </PropertyPageSchema>
3276 <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)ProjectDebugPropertyPage.xaml">
3277 <Context>Project</Context>
3278 </PropertyPageSchema>
3279 <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)GeneralBrowseObject.xaml">
3280 <Context>BrowseObject</Context>
3281 </PropertyPageSchema>
3282 <PropertyPageSchema Include="$(ManagedXamlNeutralResourcesDirectory)GeneralConfiguredBrowseObject.xaml">
3283 <Context>ConfiguredBrowseObject</Context>
3284 </PropertyPageSchema>
3285 <PropertyPageSchema Include="$(ManagedXamlNeutralResourcesDirectory)ProjectDebugger.xaml">
3286 <Context>Project</Context>
3287 </PropertyPageSchema>
3288 </ItemGroup>
3289 <ItemGroup Condition="'$(DefineCommonManagedReferenceSchemas)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3290 <!-- Assembly references -->
3291 <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)AssemblyReference.xaml">
3292 <Context>Project;BrowseObject</Context>
3293 </PropertyPageSchema>
3294 <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)ResolvedAssemblyReference.xaml">
3295 <Context>ProjectSubscriptionService;BrowseObject</Context>
3296 </PropertyPageSchema>
3297 <!-- COM references -->
3298 <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)COMReference.xaml">
3299 <Context>Project;BrowseObject</Context>
3300 </PropertyPageSchema>
3301 <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)ResolvedCOMReference.xaml">
3302 <Context>ProjectSubscriptionService;BrowseObject</Context>
3303 </PropertyPageSchema>
3304 <!-- Framework references -->
3305 <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)FrameworkReference.xaml">
3306 <Context>Project;BrowseObject</Context>
3307 </PropertyPageSchema>
3308 <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)ResolvedFrameworkReference.xaml">
3309 <Context>ProjectSubscriptionService;BrowseObject</Context>
3310 </PropertyPageSchema>
3311 <!-- Project references -->
3312 <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)ProjectReference.xaml">
3313 <Context>Project;BrowseObject</Context>
3314 </PropertyPageSchema>
3315 <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)ResolvedProjectReference.xaml">
3316 <Context>ProjectSubscriptionService;BrowseObject</Context>
3317 </PropertyPageSchema>
3318 <!-- Sdk references -->
3319 <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)SdkReference.xaml">
3320 <Context>Project;ProjectSubscriptionService;BrowseObject</Context>
3321 </PropertyPageSchema>
3322 <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)ResolvedSdkReference.xaml">
3323 <Context>ProjectSubscriptionService;BrowseObject</Context>
3324 </PropertyPageSchema>
3325 <!-- Package references -->
3326 <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)PackageReference.xaml">
3327 <Context>ProjectSubscriptionService;BrowseObject</Context>
3328 </PropertyPageSchema>
3329 <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)ResolvedPackageReference.xaml">
3330 <Context>ProjectSubscriptionService;BrowseObject</Context>
3331 </PropertyPageSchema>
3332 <!-- Analyzer references -->
3333 <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)AnalyzerReference.xaml">
3334 <Context>Project;ProjectSubscriptionService;BrowseObject</Context>
3335 </PropertyPageSchema>
3336 <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)ResolvedAnalyzerReference.xaml">
3337 <Context>ProjectSubscriptionService;BrowseObject</Context>
3338 </PropertyPageSchema>
3339 </ItemGroup>
3340 <!-- List of external files that trigger re-evaluation & design-time builds when they are added or removed, or edited -->
3341 <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3342 <!-- Potential Editor config locations, we only want to trigger design-time builds on removal/addition and not edits -->
3343 <AdditionalDesignTimeBuildInput Include="@(PotentialEditorConfigFiles)" ContentSensitive="false" />
3344 </ItemGroup>
3345 <!-- Find all potential locations of "global.json" starting from the Solution directory and walking backwards -->
3346 <ItemGroup Condition="'$(UsingMicrosoftNETSdk)' == 'true' and '$(SolutionDir)' != ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3347 <_GlobalJsonStartingDir Include="$(SolutionDir)" />
3348 <_PotentialContainingGlobalJsonDir Include="@(_GlobalJsonStartingDir-&gt;GetPathsOfAllDirectoriesAbove())" />
3349 <AdditionalDesignTimeBuildInput Include="@(_PotentialContainingGlobalJsonDir-&gt;Combine('global.json'))" ContentSensitive="true" />
3350 </ItemGroup>
3351 <!--
3352 EmbeddedFiles are source files to be embedded to the PDB.
3353 We need to set Visible to false in order to not display duplicate entries in project UI.
3354 -->
3355 <ItemDefinitionGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3356 <EmbeddedFiles>
3357 <Visible>false</Visible>
3358 </EmbeddedFiles>
3359 </ItemDefinitionGroup>
3360 <!-- Targets -->
3361 <!-- For a newly created project with no packages restored, Design time build complains that there is no ResolvePackageDependenciesDesignTime
3362 target, that is available only after restoring the .Net Core SDK targets. This No-op target will satisfy the check and will get overriden
3363 once the actual targets are available after package restore-->
3364 <Target Name="ResolvePackageDependenciesDesignTime" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
3365 <Target Name="CollectSDKReferencesDesignTime" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
3366 <Target Name="CollectResolvedSDKReferencesDesignTime" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
3367 <Target Name="ResolveFrameworkReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
3368 <Target Name="ResolveProjectReferencesDesignTime2" Returns="@(_ProjectReferencesFromRAR2);@(_ProjectReferencesWithoutOutputAssembly)" DependsOnTargets="ResolveProjectReferences;ResolveAssemblyReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3369 <!-- This is similar to ResolveProjectReferencesDesignTime, except it also returns projects that do not get
3370 resolved (hence do not appear in ReferencePath) because ReferenceOutputAssembly is set to false. -->
3371 <ItemGroup>
3372 <!-- We need to do this here because we only want project references which have passed through RAR and have
3373 not been unresolved due to violating some multi-targeting rule which means we need to pull the project
3374 references out of the referencepath item because they will only exist there if they were correctly
3375 resolved. -->
3376 <_ProjectReferencesFromRAR2 Include="@(ReferencePath-&gt;WithMetadataValue('ReferenceSourceTarget', 'ProjectReference'))">
3377 <OriginalItemSpec>%(ReferencePath.ProjectReferenceOriginalItemSpec)</OriginalItemSpec>
3378 </_ProjectReferencesFromRAR2>
3379 <_ProjectReferencesWithoutOutputAssembly Include="@(ProjectReference-&gt;WithMetadataValue('ReferenceOutputAssembly', 'false'))">
3380 <OriginalItemSpec>%(ProjectReference.Identity)</OriginalItemSpec>
3381 </_ProjectReferencesWithoutOutputAssembly>
3382 </ItemGroup>
3383 </Target>
3384 <Target Name="ResolveFrameworkReferencesDesignTime" Returns="@(ResolvedFrameworkReference)" DependsOnTargets="ResolveFrameworkReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
3385 <!-- This target is used to collect the PackageReferences in the project. This target can be overriden to add\remove packagereferences before they are
3386 sent to NuGet to be restored.-->
3387 <Target Name="CollectPackageReferences" Returns="@(PackageReference)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
3388 <!-- Validates that the correct properties have been set for design-time compiles -->
3389 <Target Name="_CheckCompileDesignTimePrerequisite" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3390 <Error Condition="'$(SkipCompilerExecution)|$(ProvideCommandLineArgs)' != 'true|true'" Text="SkipCompilerExecution and ProvideCommandLineArgs should be set before calling the CompileDesignTime target" />
3391 </Target>
3392 <!-- This target collects all Analyzers in the project. -->
3393 <Target Name="CollectAnalyzersDesignTime" DependsOnTargets="CompileDesignTime" Returns="@(Analyzer)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
3394 <!-- This target collects all the resolved references that are used to actually compile. -->
3395 <Target Name="CollectResolvedCompilationReferencesDesignTime" DependsOnTargets="CompileDesignTime" Returns="@(ReferencePathWithRefAssemblies)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
3396 <!-- This target collects all the extra inputs for the up to date check. -->
3397 <Target Name="CollectUpToDateCheckInputDesignTime" DependsOnTargets="CompileDesignTime" Returns="@(UpToDateCheckInput)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
3398 <!-- This target collects all the extra outputs for the up to date check. -->
3399 <Target Name="CollectUpToDateCheckOutputDesignTime" DependsOnTargets="CompileDesignTime" Returns="@(UpToDateCheckOutput)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
3400 <!-- This target collects all the things built by the project for the up to date check. -->
3401 <!-- See CopyFileToOutputDirectory target -->
3402 <Target Name="CollectUpToDateCheckBuiltDesignTime" DependsOnTargets="CompileDesignTime" Returns="@(UpToDateCheckBuilt)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3403 <ItemGroup>
3404 <!-- Assembly output, bin and obj -->
3405 <UpToDateCheckBuilt Condition="'$(CopyBuildOutputToOutputDirectory)' != 'false' and '$(SkipCopyBuildProduct)' != 'true'" Include="$(TargetPath)" />
3406 <UpToDateCheckBuilt Include="@(IntermediateAssembly)" />
3407 <!-- Documentation file, bin and obj -->
3408 <UpToDateCheckBuilt Condition="'$(_DocumentationFileProduced)'=='true'" Include="@(FinalDocFile)" />
3409 <UpToDateCheckBuilt Condition="'$(_DocumentationFileProduced)'=='true'" Include="@(DocFileItem)" />
3410 <!-- Symbols, bin and obj -->
3411 <UpToDateCheckBuilt Condition="'$(_DebugSymbolsProduced)'=='true'" Include="@(_DebugSymbolsIntermediatePath)" />
3412 <UpToDateCheckBuilt Condition="'$(_DebugSymbolsProduced)'=='true' and '$(SkipCopyingSymbolsToOutputDirectory)' != 'true' and '$(CopyOutputSymbolsToOutputDirectory)' != 'false'" Include="@(_DebugSymbolsOutputPath)" />
3413 <!-- app.config -->
3414 <!-- The property AppConfig, created in PrepareForBuild, is used instead of AppConfigWithTargetPath because GenerateSupportedRuntime
3415 rewrites AppConfigWithTargetPath to point to the intermediate filename. This is needed because Fast up-to-date needs to compare
3416 the timestamp of the source filename (AppConfig) with destination filename.
3417 https://github.com/microsoft/msbuild/blob/64c8e4a18e7cf7f064fbad304ea7ed877cdaa0a1/src/Tasks/Microsoft.Common.CurrentVersion.targets#L1109-L1122 -->
3418 <UpToDateCheckBuilt Condition=" '@(AppConfigWithTargetPath)' != '' " Include="@(AppConfigWithTargetPath->'$(OutDir)%(TargetPath)')" Original="$(AppConfig)" />
3419 </ItemGroup>
3420 </Target>
3421 <!--
3422============================================================================================================================================
3423 </Import>
3424
3425C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\VisualStudio\Managed\Microsoft.CSharp.DesignTime.targets
3426============================================================================================================================================
3427-->
3428 <!-- Properties -->
3429 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3430 <AppDesignerFolder Condition="'$(AppDesignerFolder)' == ''">Properties</AppDesignerFolder>
3431 <AppDesignerFolderContentsVisibleOnlyInShowAllFiles Condition="'$(AppDesignerFolderContentsVisibleOnlyInShowAllFiles)' == ''">false</AppDesignerFolderContentsVisibleOnlyInShowAllFiles>
3432 <LanguageServiceName Condition="'$(LanguageServiceName)' == ''">C#</LanguageServiceName>
3433 <LanguageServiceId Condition="'$(LanguageServiceId)'==''">{694DD9B6-B865-4C5B-AD85-86356E9C88DC}</LanguageServiceId>
3434 <TemplateLanguage Condition="'$(TemplateLanguage)' == ''">CSharp</TemplateLanguage>
3435 <AddItemTemplatesGuid Condition="'$(AddItemTemplatesGuid)' == ''">{FAE04EC0-301F-11d3-BF4B-00C04F79EFBC}</AddItemTemplatesGuid>
3436 <CmdUIContextGuid Condition="'$(CmdUIContextGuid)' == ''">{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}</CmdUIContextGuid>
3437 <GeneratorsTypeGuid Condition="'$(GeneratorsTypeGuid)' == ''">{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}</GeneratorsTypeGuid>
3438 <DesignerFunctionVisibility Condition="'$(DesignerFunctionVisibility)' == ''">Private</DesignerFunctionVisibility>
3439 <DesignerVariableNaming Condition="'$(DesignerVariableNaming)' == ''">Camel</DesignerVariableNaming>
3440 <DesignerHiddenCodeGeneration Condition="'$(DesignerHiddenCodeGeneration)' == ''">Declarations</DesignerHiddenCodeGeneration>
3441 <!-- Turn off rules and capabilities that are defined in MSBuild so that we can import our own below -->
3442 <DefineCSharpItemSchemas>false</DefineCSharpItemSchemas>
3443 </PropertyGroup>
3444 <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3445 <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)ProjectItemsSchema.CSharp.xaml;" />
3446 <ProjectCapability Include="&#xD;&#xA; CSharp;&#xD;&#xA; Managed;&#xD;&#xA; ClassDesigner;&#xD;&#xA; SharedProjectReferences;" />
3447 </ItemGroup>
3448 <ItemGroup Condition="'$(DefineCommonManagedItemSchemas)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3449 <PropertyPageSchema Include="$(ManagedXamlNeutralResourcesDirectory)EditorConfigFiles.xaml">
3450 <Context>File</Context>
3451 </PropertyPageSchema>
3452 <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)EditorConfigFiles.BrowseObject.xaml">
3453 <Context>BrowseObject</Context>
3454 </PropertyPageSchema>
3455 </ItemGroup>
3456 <!-- Targets -->
3457 <!-- Returns Csc command-line arguments for the language service -->
3458 <Target Name="CompileDesignTime" Returns="@(_CompilerCommandLineArgs)" DependsOnTargets="_CheckCompileDesignTimePrerequisite;Compile" Condition="'$(IsCrossTargetingBuild)' != 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3459 <ItemGroup>
3460 <_CompilerCommandLineArgs Include="@(CscCommandLineArgs)" />
3461 </ItemGroup>
3462 </Target>
3463 <!--
3464============================================================================================================================================
3465 </Import>
3466
3467C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.CSharp.CurrentVersion.targets
3468============================================================================================================================================
3469-->
3470 <!--
3471============================================================================================================================================
3472 <Import Project="Microsoft.Common.targets">
3473
3474C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.Common.targets
3475============================================================================================================================================
3476-->
3477 <!--
3478***********************************************************************************************
3479Microsoft.Common.targets
3480
3481WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
3482 created a backup copy. Incorrect changes to this file will make it
3483 impossible to load or build your projects from the command-line or the IDE.
3484
3485This file defines the steps in the standard build process for .NET projects. It
3486contains all the steps that are common among the different .NET languages, such as
3487Visual Basic, and Visual C#.
3488
3489Copyright (C) Microsoft Corporation. All rights reserved.
3490***********************************************************************************************
3491-->
3492 <!--
3493 In VS 2010 SP1 and VS 2012, both supported for asset compatibility, the MSBuild installed
3494 as part of them did not enforce using the local ToolsVersion (4.0) in all cases, but instead
3495 just used whatever ToolsVersion was in the project file if it existed on the machine, and
3496 only forced 4.0 if that ToolsVersion did not exist.
3497
3498 Moving forward, we do want to enforce a single acting ToolsVersion per version of Visual Studio,
3499 but in order to approximate this behavior on VS 2010 SP1 and VS 2012 as well, we've redirected
3500 the targets: If we're building using 4.X MSBuild (which doesn't define the new reserved
3501 property, MSBuildAssemblyVersion), we'll point right back at the 4.0 targets, which still exist
3502 as part of the .NET Framework. Only if we're using the new MSBuild will we point to the current
3503 targets.
3504 -->
3505 <Choose xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3506 <When Condition="'$(MSBuildAssemblyVersion)' == ''">
3507 <PropertyGroup>
3508 <CommonTargetsPath>$(MSBuildFrameworkToolsPath)\Microsoft.Common.targets</CommonTargetsPath>
3509 </PropertyGroup>
3510 </When>
3511 <Otherwise>
3512 <PropertyGroup>
3513 <CommonTargetsPath>$(MSBuildToolsPath)\Microsoft.Common.CurrentVersion.targets</CommonTargetsPath>
3514 </PropertyGroup>
3515 </Otherwise>
3516 </Choose>
3517 <PropertyGroup Condition="'$(MSBuildAssemblyVersion)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3518 <!--
3519 Overrides for the Microsoft.Common.targets extension targets. Used to make sure that only the imports we specify
3520 (hard-coded to 4.0 locations) are used, not the 12.0 locations that would be used by default.
3521
3522 NOTE: This logic is duplicated in Microsoft.VisualBasic.targets and in Microsoft.CSharp.targets because those two files
3523 import Microsoft.Common.targets from the current directory and thus don't get the benefit of the redirections, so for
3524 any changes to this logic in this file, please also edit the other two.
3525 -->
3526 <ImportByWildcardBefore40MicrosoftCommonTargets Condition="'$(ImportByWildcardBefore40MicrosoftCommonTargets)' == ''">$(ImportByWildcardBeforeMicrosoftCommonTargets)</ImportByWildcardBefore40MicrosoftCommonTargets>
3527 <ImportByWildcardBefore40MicrosoftCommonTargets Condition="'$(ImportByWildcardBefore40MicrosoftCommonTargets)' == ''">true</ImportByWildcardBefore40MicrosoftCommonTargets>
3528 <ImportByWildcardAfter40MicrosoftCommonTargets Condition="'$(ImportByWildcardAfter40MicrosoftCommonTargets)' == ''">$(ImportByWildcardAfterMicrosoftCommonTargets)</ImportByWildcardAfter40MicrosoftCommonTargets>
3529 <ImportByWildcardAfter40MicrosoftCommonTargets Condition="'$(ImportByWildcardAfter40MicrosoftCommonTargets)' == ''">true</ImportByWildcardAfter40MicrosoftCommonTargets>
3530 <ImportUserLocationsByWildcardBefore40MicrosoftCommonTargets Condition="'$(ImportUserLocationsByWildcardBefore40MicrosoftCommonTargets)' == ''">$(ImportUserLocationsByWildcardBeforeMicrosoftCommonTargets)</ImportUserLocationsByWildcardBefore40MicrosoftCommonTargets>
3531 <ImportUserLocationsByWildcardBefore40MicrosoftCommonTargets Condition="'$(ImportUserLocationsByWildcardBefore40MicrosoftCommonTargets)' == ''">true</ImportUserLocationsByWildcardBefore40MicrosoftCommonTargets>
3532 <ImportUserLocationsByWildcardAfter40MicrosoftCommonTargets Condition="'$(ImportUserLocationsByWildcardAfter40MicrosoftCommonTargets)' == ''">$(ImportUserLocationsByWildcardAfterMicrosoftCommonTargets)</ImportUserLocationsByWildcardAfter40MicrosoftCommonTargets>
3533 <ImportUserLocationsByWildcardAfter40MicrosoftCommonTargets Condition="'$(ImportUserLocationsByWildcardAfter40MicrosoftCommonTargets)' == ''">true</ImportUserLocationsByWildcardAfter40MicrosoftCommonTargets>
3534 <ImportByWildcardBeforeMicrosoftCommonTargets>false</ImportByWildcardBeforeMicrosoftCommonTargets>
3535 <ImportByWildcardAfterMicrosoftCommonTargets>false</ImportByWildcardAfterMicrosoftCommonTargets>
3536 <ImportUserLocationsByWildcardBeforeMicrosoftCommonTargets>false</ImportUserLocationsByWildcardBeforeMicrosoftCommonTargets>
3537 <ImportUserLocationsByWildcardAfterMicrosoftCommonTargets>false</ImportUserLocationsByWildcardAfterMicrosoftCommonTargets>
3538 <CustomBeforeMicrosoftCommonTargets Condition="'$(CustomBeforeMicrosoftCommonTargets)' == ''">$(MSBuildExtensionsPath)\v4.0\Custom.Before.Microsoft.Common.targets</CustomBeforeMicrosoftCommonTargets>
3539 <CustomAfterMicrosoftCommonTargets Condition="'$(CustomAfterMicrosoftCommonTargets)' == ''">$(MSBuildExtensionsPath)\v4.0\Custom.After.Microsoft.Common.targets</CustomAfterMicrosoftCommonTargets>
3540 </PropertyGroup>
3541 <PropertyGroup Condition="'$(MSBuildAssemblyVersion)' == '' and ('$(TargetFrameworkIdentifier)' == '.NETFramework' or '$(TargetFrameworkIdentifier)' == 'Silverlight' or ('$(TargetFrameworkIdentifier)' == '' and ('$(TargetRuntime)' == 'Managed' or '$(TargetRuntime)' == '')))" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3542 <!--
3543 Overrides for the Microsoft.NETFramework.props extension targets. Used to make sure that only the imports we specify
3544 (hard-coded to 4.0 locations) are used, not the 12.0 locations that would be used by default. Required because
3545 Microsoft.Common.targets imports it from the current directory, so we don't get a chance to redirect these in its
3546 own redirection targets.
3547
3548 NOTE: This logic is duplicated in Microsoft.VisualBasic.targets and in Microsoft.CSharp.targets because those two files
3549 import Microsoft.Common.targets from the current directory and thus don't get the benefit of these redirections either,
3550 so for any changes to this logic in this file, please also edit the other two.
3551 -->
3552 <ImportByWildcardBefore40MicrosoftNetFrameworkProps Condition="'$(ImportByWildcardBefore40MicrosoftNetFrameworkProps)' == ''">$(ImportByWildcardBeforeMicrosoftNetFrameworkProps)</ImportByWildcardBefore40MicrosoftNetFrameworkProps>
3553 <ImportByWildcardBefore40MicrosoftNetFrameworkProps Condition="'$(ImportByWildcardBefore40MicrosoftNetFrameworkProps)' == ''">true</ImportByWildcardBefore40MicrosoftNetFrameworkProps>
3554 <ImportByWildcardAfter40MicrosoftNetFrameworkProps Condition="'$(ImportByWildcardAfter40MicrosoftNetFrameworkProps)' == ''">$(ImportByWildcardAfterMicrosoftNetFrameworkProps)</ImportByWildcardAfter40MicrosoftNetFrameworkProps>
3555 <ImportByWildcardAfter40MicrosoftNetFrameworkProps Condition="'$(ImportByWildcardAfter40MicrosoftNetFrameworkProps)' == ''">true</ImportByWildcardAfter40MicrosoftNetFrameworkProps>
3556 <ImportUserLocationsByWildcardBefore40MicrosoftNetFrameworkProps Condition="'$(ImportUserLocationsByWildcardBefore40MicrosoftNetFrameworkProps)' == ''">$(ImportUserLocationsByWildcardBeforeMicrosoftNetFrameworkProps)</ImportUserLocationsByWildcardBefore40MicrosoftNetFrameworkProps>
3557 <ImportUserLocationsByWildcardBefore40MicrosoftNetFrameworkProps Condition="'$(ImportUserLocationsByWildcardBefore40MicrosoftNetFrameworkProps)' == ''">true</ImportUserLocationsByWildcardBefore40MicrosoftNetFrameworkProps>
3558 <ImportUserLocationsByWildcardAfter40MicrosoftNetFrameworkProps Condition="'$(ImportUserLocationsByWildcardAfter40MicrosoftNetFrameworkProps)' == ''">$(ImportUserLocationsByWildcardAfterMicrosoftNetFrameworkProps)</ImportUserLocationsByWildcardAfter40MicrosoftNetFrameworkProps>
3559 <ImportUserLocationsByWildcardAfter40MicrosoftNetFrameworkProps Condition="'$(ImportUserLocationsByWildcardAfter40MicrosoftNetFrameworkProps)' == ''">true</ImportUserLocationsByWildcardAfter40MicrosoftNetFrameworkProps>
3560 <ImportByWildcardBeforeMicrosoftNetFrameworkProps>false</ImportByWildcardBeforeMicrosoftNetFrameworkProps>
3561 <ImportByWildcardAfterMicrosoftNetFrameworkProps>false</ImportByWildcardAfterMicrosoftNetFrameworkProps>
3562 <ImportUserLocationsByWildcardBeforeMicrosoftNetFrameworkProps>false</ImportUserLocationsByWildcardBeforeMicrosoftNetFrameworkProps>
3563 <ImportUserLocationsByWildcardAfterMicrosoftNetFrameworkProps>false</ImportUserLocationsByWildcardAfterMicrosoftNetFrameworkProps>
3564 </PropertyGroup>
3565 <!--<ImportGroup Condition="'$(MSBuildAssemblyVersion)' == ''">-->
3566 <!--<Import Project="$(MSBuildUserExtensionsPath)\4.0\Microsoft.Common.targets\ImportBefore\*" Condition="'$(ImportUserLocationsByWildcardBefore40MicrosoftCommonTargets)' == 'true' and exists('$(MSBuildUserExtensionsPath)\4.0\Microsoft.Common.targets\ImportBefore')" />-->
3567 <!--<Import Project="$(MSBuildExtensionsPath)\4.0\Microsoft.Common.targets\ImportBefore\*" Condition="'$(ImportByWildcardBefore40MicrosoftCommonTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\4.0\Microsoft.Common.targets\ImportBefore')" />-->
3568 <!--</ImportGroup>-->
3569 <!--<ImportGroup Condition="'$(MSBuildAssemblyVersion)' == ''">-->
3570 <!--<Import Project="$(MSBuildUserExtensionsPath)\4.0\Microsoft.NETFramework.props\ImportBefore\*" Condition="'$(ImportUserLocationsByWildcardBefore40MicrosoftNetFrameworkProps)' == 'true' and exists('$(MSBuildUserExtensionsPath)\4.0\Microsoft.NETFramework.props\ImportBefore')" />-->
3571 <!--<Import Project="$(MSBuildExtensionsPath)\4.0\Microsoft.NETFramework.props\ImportBefore\*" Condition="'$(ImportByWildcardBefore40MicrosoftNetFrameworkProps)' == 'true' and exists('$(MSBuildExtensionsPath)\4.0\Microsoft.NETFramework.props\ImportBefore')" />-->
3572 <!--</ImportGroup>-->
3573 <!--
3574============================================================================================================================================
3575 <Import Project="$(CommonTargetsPath)">
3576
3577C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets
3578============================================================================================================================================
3579-->
3580 <!--
3581***********************************************************************************************
3582Microsoft.Common.CurrentVersion.targets
3583
3584WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
3585 created a backup copy. Incorrect changes to this file will make it
3586 impossible to load or build your projects from the command-line or the IDE.
3587
3588This file defines the steps in the standard build process for .NET projects. It
3589contains all the steps that are common among the different .NET languages, such as
3590Visual Basic, and Visual C#.
3591
3592Copyright (C) Microsoft Corporation. All rights reserved.
3593***********************************************************************************************
3594-->
3595 <!--<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="'$(MicrosoftCommonPropsHasBeenImported)' != 'true' and Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />-->
3596 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3597 <ImportByWildcardBeforeMicrosoftCommonTargets Condition="'$(ImportByWildcardBeforeMicrosoftCommonTargets)' == ''">true</ImportByWildcardBeforeMicrosoftCommonTargets>
3598 <ImportByWildcardAfterMicrosoftCommonTargets Condition="'$(ImportByWildcardAfterMicrosoftCommonTargets)' == ''">true</ImportByWildcardAfterMicrosoftCommonTargets>
3599 <ImportUserLocationsByWildcardBeforeMicrosoftCommonTargets Condition="'$(ImportUserLocationsByWildcardBeforeMicrosoftCommonTargets)' == ''">true</ImportUserLocationsByWildcardBeforeMicrosoftCommonTargets>
3600 <ImportUserLocationsByWildcardAfterMicrosoftCommonTargets Condition="'$(ImportUserLocationsByWildcardAfterMicrosoftCommonTargets)' == ''">true</ImportUserLocationsByWildcardAfterMicrosoftCommonTargets>
3601 </PropertyGroup>
3602 <!--<Import Project="$(MSBuildUserExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.targets\ImportBefore\*" Condition="'$(ImportUserLocationsByWildcardBeforeMicrosoftCommonTargets)' == 'true' and exists('$(MSBuildUserExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.targets\ImportBefore')" />-->
3603 <!--
3604============================================================================================================================================
3605 <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.targets\ImportBefore\*" Condition="'$(ImportByWildcardBeforeMicrosoftCommonTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.targets\ImportBefore')">
3606
3607C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Microsoft.Common.targets\ImportBefore\Microsoft.Cpp.VCLibs120Universal.targets
3608============================================================================================================================================
3609-->
3610 <!--
3611***********************************************************************************************
3612Microsoft.cpp.VCLibs120Universal.targets
3613
3614WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
3615 created a backup copy. Incorrect changes to this file will make it
3616 impossible to load or build your projects from the command-line or the IDE.
3617
3618Copyright (C) Microsoft Corporation. All rights reserved.
3619***********************************************************************************************
3620-->
3621 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3622 <_GenerateAppxManifestDependsOn>$(_GenerateAppxManifestDependsOn);_FixVCLibs120References</_GenerateAppxManifestDependsOn>
3623 </PropertyGroup>
3624 <Target Name="_FixVCLibs120References" Condition="'$(AppxPackage)' == 'true' and '$(TargetPlatformIdentifier)' == 'UAP'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3625 <!-- Check if VC libs 120 reference is found, If found remove it-->
3626 <ItemGroup>
3627 <VCLibs120Ref Include="'%(PackagingOutputs.SDKName)'" Condition="'%(PackagingOutputs.SDKName)' == 'Microsoft.VCLibs, Version=12.0'" />
3628 </ItemGroup>
3629 <ItemGroup Condition="'@(VCLibs120Ref)' != ''">
3630 <PackagingOutputs Remove="@(PackagingOutputs)" Condition="'%(PackagingOutputs.SDKName)' == 'Microsoft.VCLibs, Version=12.0'" />
3631 </ItemGroup>
3632 <!-- Get the resolved SDK reference item for Microsoft.VCLibs.120, Version=14.0 and add that to the packaging output -->
3633 <GetInstalledSDKLocations SDKDirectoryRoots="$(SDKReferenceDirectoryRoot)" SDKExtensionDirectoryRoots="$(SDKExtensionDirectoryRoot)" SDKRegistryRoot="$(SDKReferenceRegistryRoot)" TargetPlatformVersion="$(TargetPlatformVersion)" TargetPlatformIdentifier="$(TargetPlatformIdentifier)" Condition="'@(InstalledSDKLocations)' == '' and '@(VCLibs120Ref)' != ''">
3634 <Output TaskParameter="InstalledSDKs" ItemName="InstalledSDKLocations" />
3635 </GetInstalledSDKLocations>
3636 <ResolveSDKReference SDKReferences="Microsoft.VCLibs.120, Version=14.0" RuntimeReferenceOnlySDKDependencies="@(RuntimeReferenceOnlySDKDependencies)" References="@(Reference)" TargetPlatformVersion="$(TargetPlatformVersion)" TargetPlatformIdentifier="$(TargetPlatformIdentifier)" WarnOnMissingPlatformVersion="$(SDKReferenceWarnOnMissingMaxPlatformVersion)" ProjectName="$(MSBuildProjectName)" TargetedSDKConfiguration="$(TargetedSDKConfiguration)" TargetedSDKArchitecture="$(TargetedSDKArchitecture)" InstalledSDKs="@(InstalledSDKLocations)" LogResolutionErrorsAsWarnings="$(LogSDKReferenceResolutionErrorsAsWarnings)" Prefer32Bit="$(Prefer32Bit)" ContinueOnError="$(ContinueOnError)" Condition="'@(VCLibs120Ref)' != ''">
3637 <Output TaskParameter="ResolvedSDKReferences" ItemName="VCLibs12UniversalReference" />
3638 </ResolveSDKReference>
3639 <ItemGroup Condition="'@(VCLibs120Ref)' != '' and '@(VCLibs12UniversalReference)' != '' ">
3640 <PackagingOutputs Include="@(VCLibs12UniversalReference)">
3641 <OutputGroup>GetResolvedSDKReferences</OutputGroup>
3642 </PackagingOutputs>
3643 </ItemGroup>
3644 </Target>
3645 <!-- This target adds reference to the Microsoft.UniversalCRT.Debug Extension SDK for UWP apps that :
3646 reference the Microsoft.VCLibs.14.00.Debug framework package
3647 Needs to run after the GetPackagingOutputs so that it is not added if a UCRT Debug reference is already present in the parent or referenced projects. -->
3648 <Target Name="_AddVCLibs140UniversalCrtDebugReference" AfterTargets="GetPackagingOutputs" Condition="'$(DisableImplicitUCRTReference)' == '' and '$(AppxPackage)' == 'true' and '$(TargetPlatformIdentifier)' == 'UAP'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3649 <!-- ******************************************************************************
3650 This item group queries the application project for the following traits:
3651 a. Microsoft.VCLibs, Version=14.0, Configuration=Debug is referenced by the project or its referenced projects
3652 b. This project or its referenced projects already reference Microsoft.UniversalCRT.Debug, Version=<Any>
3653 ******************************************************************************* -->
3654 <ItemGroup>
3655 <VCLibs140UCRTRef Include="'%(PackagingOutputs.SDKName)'" Condition="'%(PackagingOutputs.SDKName)' == 'Microsoft.VCLibs, Version=14.0' and ('%(PackagingOutputs.TargetedSDKConfiguration)' == 'Debug' or '$(Configuration)'=='Debug')" />
3656 <HasUCRTRef Include="'%(PackagingOutputs.SDKName)'" Condition="$([System.String]::new('%(PackagingOutputs.SDKName)').StartsWith('Microsoft.UniversalCRT.Debug, Version='))" />
3657 </ItemGroup>
3658 <!-- Add UCRT Debug reference if one is not already specified and the project (or referenced projects) have a reference to VCLibs140 framework package -->
3659 <PropertyGroup>
3660 <AddUCRTRef Condition="'@(HasUCRTRef)'=='' and '@(VCLibs140UCRTRef)'!=''">true</AddUCRTRef>
3661 </PropertyGroup>
3662 <!-- Get the resolved SDK reference item for Microsoft.UniversalCRT.Debug, Version=<TPV> and add that to the packaging output -->
3663 <GetInstalledSDKLocations SDKDirectoryRoots="$(SDKReferenceDirectoryRoot)" SDKExtensionDirectoryRoots="$(SDKExtensionDirectoryRoot)" SDKRegistryRoot="$(SDKReferenceRegistryRoot)" TargetPlatformVersion="$(TargetPlatformVersion)" TargetPlatformIdentifier="$(TargetPlatformIdentifier)" Condition="'@(InstalledSDKLocations)' == '' and '$(AddUCRTRef)'=='true'">
3664 <Output TaskParameter="InstalledSDKs" ItemName="InstalledSDKLocations" />
3665 </GetInstalledSDKLocations>
3666 <!-- Find the Microsoft.Ucrt.Debug ESDK, based upon TPV. This package is installed by the Windows 10 SDK, so there should always be a matching
3667 ESDK for given TPV value -->
3668 <ResolveSDKReference Condition="'$(AddUCRTRef)'=='true'" SDKReferences="Microsoft.UniversalCRT.Debug, Version=$(TargetPlatformVersion)" RuntimeReferenceOnlySDKDependencies="@(RuntimeReferenceOnlySDKDependencies)" References="@(Reference)" TargetPlatformVersion="$(TargetPlatformVersion)" TargetPlatformIdentifier="$(TargetPlatformIdentifier)" WarnOnMissingPlatformVersion="$(SDKReferenceWarnOnMissingMaxPlatformVersion)" ProjectName="$(MSBuildProjectName)" TargetedSDKConfiguration="$(TargetedSDKConfiguration)" TargetedSDKArchitecture="$(TargetedSDKArchitecture)" InstalledSDKs="@(InstalledSDKLocations)" LogResolutionErrorsAsWarnings="$(LogSDKReferenceResolutionErrorsAsWarnings)" Prefer32Bit="$(Prefer32Bit)" ContinueOnError="$(ContinueOnError)">
3669 <Output TaskParameter="ResolvedSDKReferences" ItemName="UniversalCrtDebugReference" />
3670 </ResolveSDKReference>
3671 <!-- Add the resolved ucrtbased.dll to the packaging output -->
3672 <ItemGroup>
3673 <PackagingOutputs Condition="'$(AddUCRTRef)' == 'true'" Include="@(UniversalCrtDebugReference->'%(Identity)\redist\Debug\%(TargetedSDKArchitecture)\ucrtbased.dll')">
3674 <OutputGroup>SDKRedistOutputGroup</OutputGroup>
3675 <ProjectName>$(MSBuildProjectName)</ProjectName>
3676 <TargetPath>ucrtbased.dll</TargetPath>
3677 </PackagingOutputs>
3678 </ItemGroup>
3679 </Target>
3680 <!--
3681============================================================================================================================================
3682 </Import>
3683============================================================================================================================================
3684-->
3685 <!--
3686============================================================================================================================================
3687 <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.targets\ImportBefore\*" Condition="'$(ImportByWildcardBeforeMicrosoftCommonTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.targets\ImportBefore')">
3688
3689C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Microsoft.Common.targets\ImportBefore\Microsoft.Net.CoreRuntime.ImportBefore.targets
3690============================================================================================================================================
3691-->
3692 <!--
3693***********************************************************************************************
3694Microsoft.Net.CoreRuntime.ImportBefore.targets
3695
3696WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
3697 created a backup copy. Incorrect changes to this file will make it
3698 impossible to load or build your projects from the command-line or the IDE.
3699
3700Copyright (C) Microsoft Corporation. All rights reserved.
3701***********************************************************************************************
3702-->
3703 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3704 <NetfxCoreRuntimeSettingsTargets Condition="'$(NetfxCoreRuntimeSettingsTargets)'==''">$(ProgramFiles)\MSBuild\15.0\.Net\CoreRuntime\Microsoft.Net.CoreRuntime.Settings.targets</NetfxCoreRuntimeSettingsTargets>
3705 </PropertyGroup>
3706 <!--<Import Project="$(NetfxCoreRuntimeSettingsTargets)" Condition="'$(TargetPlatformIdentifier)' == 'UAP' and '$(AppxPackage)' == 'true' and exists('$(NetfxCoreRuntimeSettingsTargets)')" />-->
3707 <!--
3708============================================================================================================================================
3709 </Import>
3710============================================================================================================================================
3711-->
3712 <!--
3713============================================================================================================================================
3714 <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.targets\ImportBefore\*" Condition="'$(ImportByWildcardBeforeMicrosoftCommonTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.targets\ImportBefore')">
3715
3716C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Microsoft.Common.targets\ImportBefore\Microsoft.NetNative.ImportBefore.targets
3717============================================================================================================================================
3718-->
3719 <!--
3720***********************************************************************************************
3721Microsoft.NetNative.ImportBefore.targets
3722
3723WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
3724 created a backup copy. Incorrect changes to this file will make it
3725 impossible to load or build your projects from the command-line or the IDE.
3726
3727Copyright (C) Microsoft Corporation. All rights reserved.
3728***********************************************************************************************
3729-->
3730 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3731 <_ProjectNPlatformSupported Condition="'$(TargetPlatformIdentifier)' == 'UAP'">true</_ProjectNPlatformSupported>
3732 <_ProjectNProjectSupported Condition="'$(AppxPackage)' == 'true'">true</_ProjectNProjectSupported>
3733 <!-- Denotes that Microsoft .Net Native is supported by this kind of project so corresponding UI elements should be visible -->
3734 <CanUseProjectN Condition="'$(_ProjectNPlatformSupported)' == 'true' and '$(_ProjectNProjectSupported)' == 'true'">true</CanUseProjectN>
3735 <UseDotNetNativeToolchain Condition="'$(UseDotNetNativeToolchain)' == ''">$(UseProjectNToolchain)</UseDotNetNativeToolchain>
3736 <ProjectNProfileEnabled Condition="'$(CanUseProjectN)'=='true'">true</ProjectNProfileEnabled>
3737 <ProjectNSettingsTargets Condition="'$(ProjectNSettingsTargets)'==''">$(ProgramFiles)\MSBuild\15.0\.Net\.NetNative\15.0.24211\Microsoft.NetNative.Settings.targets</ProjectNSettingsTargets>
3738 </PropertyGroup>
3739 <!--<Import Project="$(ProjectNSettingsTargets)" Condition="'$(ProjectNProfileEnabled)' == 'true' and exists('$(ProjectNSettingsTargets)')" />-->
3740 <!--
3741============================================================================================================================================
3742 </Import>
3743
3744C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets
3745============================================================================================================================================
3746-->
3747 <!--<Import Project="$(MSBuildProjectFullPath).user" Condition="Exists('$(MSBuildProjectFullPath).user')" />-->
3748 <!-- VS10 without SP1 and without VS11 will not have VisualStudioVersion set, so do that here -->
3749 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3750 <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
3751 </PropertyGroup>
3752 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3753 <CustomBeforeMicrosoftCommonTargets Condition="'$(CustomBeforeMicrosoftCommonTargets)'==''">$(MSBuildExtensionsPath)\v$(MSBuildToolsVersion)\Custom.Before.Microsoft.Common.targets</CustomBeforeMicrosoftCommonTargets>
3754 <CustomAfterMicrosoftCommonTargets Condition="'$(CustomAfterMicrosoftCommonTargets)'==''">$(MSBuildExtensionsPath)\v$(MSBuildToolsVersion)\Custom.After.Microsoft.Common.targets</CustomAfterMicrosoftCommonTargets>
3755 <ReportingServicesTargets Condition="'$(ReportingServicesTargets)'==''">$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\ReportingServices\Microsoft.ReportingServices.targets</ReportingServicesTargets>
3756 </PropertyGroup>
3757 <!--<Import Project="$(CustomBeforeMicrosoftCommonTargets)" Condition="'$(CustomBeforeMicrosoftCommonTargets)' != '' and Exists('$(CustomBeforeMicrosoftCommonTargets)')" />-->
3758 <!-- By default, we are creating a managed app because .NET 2.0 projects did not have this property. -->
3759 <PropertyGroup Condition="'$(TargetRuntime)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3760 <TargetRuntime>Managed</TargetRuntime>
3761 </PropertyGroup>
3762 <!-- Because .NET 2.0 apps did not set TargetFrameworkIdentifier, we need to set it for them here by default. If
3763 the runtime is set to Managed, we also need to set these. Otherwise they should be blank (for instance Javascript or
3764 Native apps) because they do not target a .NET Framework. -->
3765 <PropertyGroup Condition="'$(TargetRuntime)' == 'Managed'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3766 <TargetFrameworkIdentifier Condition="'$(TargetFrameworkIdentifier)' == ''">.NETFramework</TargetFrameworkIdentifier>
3767 <TargetFrameworkVersion Condition=" '$(TargetFrameworkVersion)' == '' ">v4.0</TargetFrameworkVersion>
3768 </PropertyGroup>
3769 <!-- AvailablePlatforms is the list of platform targets available. -->
3770 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3771 <AvailablePlatforms Condition="'$(VisualStudioVersion)' == '10.0' or '$(VisualStudioVersion)' == ''">Any CPU,x86,x64,Itanium</AvailablePlatforms>
3772 <AvailablePlatforms Condition="'$(VisualStudioVersion)' != '' and '$(VisualStudioVersion)' &gt; '10.0'">Any CPU,x86,x64</AvailablePlatforms>
3773 </PropertyGroup>
3774 <!-- Import depends on if it is .NETCore. Imports for .NETFramework is a superset of that for .NETCore-->
3775 <!--<Import Project="Microsoft.NETFramework.props" Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework' or '$(TargetFrameworkIdentifier)' == 'Silverlight'" />-->
3776 <!--
3777============================================================================================================================================
3778 <Import Project="Microsoft.NET.props" Condition="'$(TargetFrameworkIdentifier)' == '.NETStandard' or '$(TargetFrameworkIdentifier)' == '.NETCoreApp'">
3779
3780C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.NET.props
3781============================================================================================================================================
3782-->
3783 <!--
3784***********************************************************************************************
3785Microsoft.NET.props
3786
3787WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
3788 created a backup copy. Incorrect changes to this file will make it
3789 impossible to load or build your projects from the command-line or the IDE.
3790
3791This file contains .NET-specific properties, and items. This file is imported for .NET Core, .NET Standard, and .NET Framework projects.
3792these two files are used to encapsulate the multi-targeting and framework specific build process.
3793
3794Copyright (C) Microsoft Corporation. All rights reserved.
3795***********************************************************************************************
3796-->
3797 <!--
3798 ============================================================
3799 GetToolPaths
3800 Get the paths for the .NET Framework and .NET Core tools and sdk tools directories.
3801 This does not need to be a target since all of the values are availiable at project evaluation time.
3802 ============================================================
3803 -->
3804 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3805 <TargetFrameworkSDKToolsDirectory Condition=" '$(TargetFrameworkSDKToolsDirectory)' == '' ">$(SDK40ToolsPath)</TargetFrameworkSDKToolsDirectory>
3806 </PropertyGroup>
3807 <!--
3808 ============================================================
3809 SetHighEntropyVA
3810 Set HighEntropyVA according to the TargetFramework
3811 ============================================================
3812 -->
3813 <PropertyGroup Condition="('$(TargetFrameworkIdentifier)' == '.NETFramework' and '$(TargetingClr2Framework)' != 'true' and '$(TargetFrameworkVersion)' != 'v4.0') or '$(TargetFrameworkIdentifier)' == '.NETCoreApp' or '$(TargetFrameworkIdentifier)' == '.NETStandard'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3814 <HighEntropyVA Condition="'$(HighEntropyVA)' == ''">true</HighEntropyVA>
3815 </PropertyGroup>
3816 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3817 <HighEntropyVA Condition="'$(HighEntropyVA)' == ''">false</HighEntropyVA>
3818 </PropertyGroup>
3819 <!--
3820============================================================================================================================================
3821 </Import>
3822
3823C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets
3824============================================================================================================================================
3825-->
3826 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3827 <!-- Generates full paths for the 'File' property in errors, warnings and messages in many targets -->
3828 <GenerateFullPaths Condition="'$(GenerateFullPaths)' == ''">true</GenerateFullPaths>
3829 <!-- Yield optimization properties -->
3830 <YieldDuringToolExecution Condition="'$(YieldDuringToolExecution)' == ''">true</YieldDuringToolExecution>
3831 </PropertyGroup>
3832 <PropertyGroup Condition="'$(TargetFrameworkIdentifier)' != '' and '$(TargetFrameworkVersion)' != ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3833 <TargetFrameworkMoniker Condition="'$(TargetFrameworkMoniker)' == '' and '$([System.String]::IsNullOrWhitespace($(TargetFrameworkProfile)))' != 'true'">$(TargetFrameworkIdentifier),Version=$(TargetFrameworkVersion),Profile=$(TargetFrameworkProfile)</TargetFrameworkMoniker>
3834 <TargetFrameworkMoniker Condition="'$(TargetFrameworkMoniker)' == ''">$(TargetFrameworkIdentifier),Version=$(TargetFrameworkVersion)</TargetFrameworkMoniker>
3835 <!-- When working off a packaged reference assemblies, do not go to machine-global locations. This property is target-framework-specific, so it cannot be overridden in msbuild.exe.config once and for all. -->
3836 <FrameworkPathOverride Condition="'$(EnableFrameworkPathOverride)' != 'false' And '$(FrameworkPathOverride)' == '' And Exists('$(TargetFrameworkRootPath)$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)')">$(TargetFrameworkRootPath)$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)</FrameworkPathOverride>
3837 <!-- The FrameworkPathOverride is required for the inproc visual basic compiler to initialize when targeting target frameworks less than 4.0. If .net 2.0 is not installed then the property value above will not provide the location
3838 of mscorlib. This is also true if the build author overrides this property to some other directory which does not contain mscorlib.dll. In the case we cannot find mscorlib.dll at the correct location
3839 we need to find a directory which does contain mscorlib to allow the inproc compiler to initialize and give us the chance to show certain dialogs in the IDE (which only happen after initialization).-->
3840 <FrameworkPathOverride Condition="'$(EnableFrameworkPathOverride)' != 'false' And '$(FrameworkPathOverride)' == ''">$([Microsoft.Build.Utilities.ToolLocationHelper]::GetPathToStandardLibraries($(TargetFrameworkIdentifier), $(TargetFrameworkVersion), $(TargetFrameworkProfile), $(PlatformTarget), $(TargetFrameworkRootPath), $(TargetFrameworkFallbackSearchPaths)))</FrameworkPathOverride>
3841 <FrameworkPathOverride Condition="'$(EnableFrameworkPathOverride)' != 'false' And !Exists('$(FrameworkPathOverride)\mscorlib.dll')">$(MSBuildFrameworkToolsPath)</FrameworkPathOverride>
3842 </PropertyGroup>
3843 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3844 <TargetPlatformIdentifier Condition="'$(TargetPlatformIdentifier)' == '' and '$(_EnableDefaultWindowsPlatform)' != 'false'">Windows</TargetPlatformIdentifier>
3845 <TargetPlatformVersion Condition="'$(TargetPlatformVersion)' == '' and '$(_EnableDefaultWindowsPlatform)' != 'false'">7.0</TargetPlatformVersion>
3846 <TargetPlatformSdkPath Condition="'$(TargetPlatformSdkPath)' == '' and '$(TargetPlatformSdkRootOverride)' != ''">$(TargetPlatformSdkRootOverride)\</TargetPlatformSdkPath>
3847 <TargetPlatformSdkPath Condition="'$(TargetPlatformSdkPath)' == '' and '$(TargetPlatformIdentifier)' == 'Windows' and $([MSBuild]::IsOSPlatform('Windows')) and '$(MSBuildRuntimeType)' != 'Core'">$([MSBuild]::GetRegistryValueFromView('HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SDKs\Windows\v$(TargetPlatformVersion)', InstallationFolder, null, RegistryView.Registry32, RegistryView.Default))</TargetPlatformSdkPath>
3848 <TargetPlatformSdkPath Condition="'$(TargetPlatformSdkPath)' == ''">$([Microsoft.Build.Utilities.ToolLocationHelper]::GetPlatformSDKLocation($(TargetPlatformIdentifier), $(TargetPlatformVersion)))</TargetPlatformSdkPath>
3849 <TargetPlatformSdkMetadataLocation Condition="'$(TargetPlatformSdkMetadataLocation)' == '' and Exists('$(TargetPlatformSdkPath)')">$(TargetPlatformSdkPath)Windows Metadata</TargetPlatformSdkMetadataLocation>
3850 <TargetPlatformSdkMetadataLocation Condition="Exists('$(TargetPlatformSdkPath)') and ('$(TargetPlatformSdkMetadataLocation)' == '' or !Exists('$(TargetPlatformSdkMetadataLocation)'))">$(TargetPlatformSdkPath)References\CommonConfiguration\Neutral</TargetPlatformSdkMetadataLocation>
3851 <TargetPlatformWinMDLocation Condition="'$(TargetPlatformWinMDLocation)' == '' and Exists('$(TargetPlatformSdkMetadataLocation)')">$(TargetPlatformSdkMetadataLocation)</TargetPlatformWinMDLocation>
3852 <UseOSWinMdReferences Condition="'$(UseOSWinMdReferences)' == '' and ('$(TargetPlatformWinMDLocation)' == '' and '$(TargetPlatformIdentifier)' == 'Windows' and '$(TargetPlatformVersion)' &gt; '7.0')">true</UseOSWinMdReferences>
3853 <TargetPlatformWinMDLocation Condition="'$(UseOsWinMdReferences)' == 'true'">$(WinDir)\System32\WinMetadata</TargetPlatformWinMDLocation>
3854 <TargetPlatformMoniker Condition="'$(TargetPlatformMoniker)' == '' and '$(TargetPlatformIdentifier)' != '' and '$(TargetPlatformVersion)' != ''">$(TargetPlatformIdentifier),Version=$(TargetPlatformVersion)</TargetPlatformMoniker>
3855 <TargetPlatformDisplayName Condition="'$(TargetPlatformDisplayName)' == ''">$([Microsoft.Build.Utilities.ToolLocationHelper]::GetPlatformSDKDisplayName($(TargetPlatformIdentifier), $(TargetPlatformVersion)))</TargetPlatformDisplayName>
3856 </PropertyGroup>
3857 <!--
3858 Several properties must be set in the main project file, before using this .TARGETS file.
3859 However, if the properties are not set, we pick some defaults.
3860
3861 OutDir:
3862 Indicates the final output location for the project or solution. When building a solution,
3863 OutDir can be used to gather multiple project outputs in one location. In addition,
3864 OutDir is included in AssemblySearchPaths used for resolving references.
3865
3866 BaseOutputPath:
3867 This is the top level folder where all configuration specific output folders will be created.
3868 Default value is bin\
3869
3870 OutputPath:
3871 This is the full Output Path, and is derived from BaseOutputPath, if none specified
3872 (eg. bin\Debug). If this property is overridden, then setting BaseOutputPath has no effect.
3873
3874 For Legacy projects using only Common targets, this property is usually specified in the project file
3875 and is used to initialize OutDir. Some SDKs including the .NET SDK derive this automatically.
3876 OutDir and OutputPath are distinguished for legacy reasons, and OutDir should be used if at all possible.
3877
3878 BaseIntermediateOutputPath:
3879 This is the top level folder where all configuration specific intermediate output folders will be created.
3880 Default value is obj\
3881
3882 IntermediateOutputPath:
3883 This is the full intermediate Output Path, and is derived from BaseIntermediateOutputPath, if none specified
3884 (eg. obj\Debug). If this property is overridden, then setting BaseIntermediateOutputPath has no effect.
3885
3886 Ensure any and all path property has a trailing slash, so it can be concatenated.
3887 -->
3888 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3889 <!-- Example, AnyCPU -->
3890 <_OriginalPlatform>$(Platform)</_OriginalPlatform>
3891 <!-- Example, Debug -->
3892 <_OriginalConfiguration>$(Configuration)</_OriginalConfiguration>
3893 <!-- Check whether OutputPath was specified for valid Configuration/Platform combination -->
3894 <_OutputPathWasMissing Condition="'$(_OriginalPlatform)' != '' and '$(_OriginalConfiguration)' != '' and '$(OutputPath)' == ''">true</_OutputPathWasMissing>
3895 <!-- Check whether BaseOutputPath was specified -->
3896 <BaseOutputPathWasSpecified Condition="'$(BaseOutputPath)' != ''">true</BaseOutputPathWasSpecified>
3897 </PropertyGroup>
3898 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3899 <Platform Condition="'$(Platform)' == ''">AnyCPU</Platform>
3900 <PlatformName Condition="'$(PlatformName)' == ''">$(Platform)</PlatformName>
3901 <Configuration Condition="'$(Configuration)' == ''">Debug</Configuration>
3902 <ConfigurationName Condition="'$(ConfigurationName)' == ''">$(Configuration)</ConfigurationName>
3903 <BaseOutputPath Condition="'$(BaseOutputPath)' == ''">bin\</BaseOutputPath>
3904 <BaseOutputPath Condition="!HasTrailingSlash('$(BaseOutputPath)')">$(BaseOutputPath)\</BaseOutputPath>
3905 <OutputPath Condition="'$(OutputPath)' == '' and '$(PlatformName)' == 'AnyCPU'">$(BaseOutputPath)$(Configuration)\</OutputPath>
3906 <OutputPath Condition="'$(OutputPath)' == '' and '$(PlatformName)' != 'AnyCPU'">$(BaseOutputPath)$(PlatformName)\$(Configuration)\</OutputPath>
3907 <OutputPath Condition="!HasTrailingSlash('$(OutputPath)')">$(OutputPath)\</OutputPath>
3908 <BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)' == ''">obj\</BaseIntermediateOutputPath>
3909 <BaseIntermediateOutputPath Condition="!HasTrailingSlash('$(BaseIntermediateOutputPath)')">$(BaseIntermediateOutputPath)\</BaseIntermediateOutputPath>
3910 <IntermediateOutputPath Condition="'$(IntermediateOutputPath)' == '' and '$(PlatformName)' == 'AnyCPU'">$(BaseIntermediateOutputPath)$(Configuration)\</IntermediateOutputPath>
3911 <IntermediateOutputPath Condition="'$(IntermediateOutputPath)' == '' and '$(PlatformName)' != 'AnyCPU'">$(BaseIntermediateOutputPath)$(PlatformName)\$(Configuration)\</IntermediateOutputPath>
3912 <IntermediateOutputPath Condition="!HasTrailingSlash('$(IntermediateOutputPath)')">$(IntermediateOutputPath)\</IntermediateOutputPath>
3913 </PropertyGroup>
3914 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3915 <!-- Determine OutputType property from the legacy TargetType property -->
3916 <OutputType Condition=" '$(TargetType)' != ''">$(TargetType)</OutputType>
3917 <OutputType Condition=" '$(TargetType)' == 'Container' or '$(TargetType)' == 'DocumentContainer' ">library</OutputType>
3918 <OutputType Condition=" '$(OutputType)' == '' ">exe</OutputType>
3919 <DebugSymbols Condition=" '$(ConfigurationName)' == 'Debug' and '$(DebugSymbols)' == '' and '$(DebugType)'==''">true</DebugSymbols>
3920 <!-- Whether or not a .pdb file is produced. -->
3921 <_DebugSymbolsProduced>false</_DebugSymbolsProduced>
3922 <_DebugSymbolsProduced Condition="'$(DebugSymbols)'=='true'">true</_DebugSymbolsProduced>
3923 <_DebugSymbolsProduced Condition="'$(DebugType)'=='none'">false</_DebugSymbolsProduced>
3924 <_DebugSymbolsProduced Condition="'$(DebugType)'=='pdbonly'">true</_DebugSymbolsProduced>
3925 <_DebugSymbolsProduced Condition="'$(DebugType)'=='full'">true</_DebugSymbolsProduced>
3926 <_DebugSymbolsProduced Condition="'$(DebugType)'=='portable'">true</_DebugSymbolsProduced>
3927 <_DebugSymbolsProduced Condition="'$(DebugType)'=='embedded'">false</_DebugSymbolsProduced>
3928 <_DebugSymbolsProduced Condition="'$(ProduceOnlyReferenceAssembly)'=='true'">false</_DebugSymbolsProduced>
3929 <!-- Whether or not a .xml file is produced. -->
3930 <_DocumentationFileProduced>true</_DocumentationFileProduced>
3931 <_DocumentationFileProduced Condition="'$(DocumentationFile)'==''">false</_DocumentationFileProduced>
3932 <!-- Whether or not a reference assembly is produced. -->
3933 <ProduceReferenceAssembly Condition="'$(ProduceReferenceAssembly)' == ''">false</ProduceReferenceAssembly>
3934 </PropertyGroup>
3935 <!--
3936 For Legacy projects that define properties per Configuration/Platform combination, the validity of an
3937 invalid combination is determined by the non-empty value of the 'OutputPath' property specified under
3938 the IDE generated Configuration/Platform specific 'PropertyGroup' section.
3939
3940 If 'BaseOutputPath' is specified, we can skip the validation, since, we assume the 'OutputPath' property
3941 will be derived (e.g.: from the 'BaseOutputPath' property).
3942 -->
3943 <PropertyGroup Condition="'$(BaseOutputPathWasSpecified)' != 'true' and '$(_OutputPathWasMissing)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3944 <!--
3945 When 'OutputPath' is missing or empty (along with non-existent 'BaseOutputPath') at this point means,
3946 we're in legacy mode and we shall assume the current Configuration/Platform combination as invalid.
3947 Whether this is considered an error or a warning depends on the value of $(SkipInvalidConfigurations).
3948 -->
3949 <_InvalidConfigurationError Condition=" '$(SkipInvalidConfigurations)' != 'true' ">true</_InvalidConfigurationError>
3950 <_InvalidConfigurationWarning Condition=" '$(SkipInvalidConfigurations)' == 'true' ">true</_InvalidConfigurationWarning>
3951 </PropertyGroup>
3952 <!--
3953 IDE Macros available from both integrated builds and from command line builds.
3954 The following properties are 'macros' that are available via IDE for
3955 pre and post build steps.
3956 -->
3957 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3958 <TargetExt Condition="'$(TargetExt)' == '' and '$(OutputType)'=='exe'">.exe</TargetExt>
3959 <TargetExt Condition="'$(TargetExt)' == '' and '$(OutputType)'=='winexe'">.exe</TargetExt>
3960 <TargetExt Condition="'$(TargetExt)' == '' and '$(OutputType)'=='appcontainerexe'">.exe</TargetExt>
3961 <TargetExt Condition="'$(TargetExt)' == '' and '$(OutputType)'=='library'">.dll</TargetExt>
3962 <TargetExt Condition="'$(TargetExt)' == '' and '$(OutputType)'=='module'">.netmodule</TargetExt>
3963 <TargetExt Condition="'$(TargetExt)' == '' and '$(OutputType)'=='winmdobj'">.winmdobj</TargetExt>
3964 </PropertyGroup>
3965 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3966 <!-- Required for enabling Team Build for packaging app package-generating projects -->
3967 <OutDirWasSpecified Condition=" '$(OutDir)'!='' and '$(OutDirWasSpecified)'=='' ">true</OutDirWasSpecified>
3968 <OutDir Condition=" '$(OutDir)' == '' ">$(OutputPath)</OutDir>
3969 <!-- Example, bin\Debug\ -->
3970 <!-- Ensure OutDir has a trailing slash, so it can be concatenated -->
3971 <OutDir Condition="'$(OutDir)' != '' and !HasTrailingSlash('$(OutDir)')">$(OutDir)\</OutDir>
3972 <ProjectName Condition=" '$(ProjectName)' == '' ">$(MSBuildProjectName)</ProjectName>
3973 <!-- Example, MyProject -->
3974 <!-- For projects that generate app packages or ones that want a per-project output directory, update OutDir to include the project name -->
3975 <OutDir Condition="'$(OutDir)' != '' and '$(OutDirWasSpecified)' == 'true' and (('$(WindowsAppContainer)' == 'true' and '$(GenerateProjectSpecificOutputFolder)' != 'false') or '$(GenerateProjectSpecificOutputFolder)' == 'true')">$(OutDir)$(ProjectName)\</OutDir>
3976 <AssemblyName Condition=" '$(AssemblyName)'=='' ">$(MSBuildProjectName)</AssemblyName>
3977 <TargetName Condition="'$(TargetName)' == '' and '$(OutputType)' == 'winmdobj' and '$(RootNamespace)' != ''">$(RootNamespace)</TargetName>
3978 <TargetName Condition=" '$(TargetName)' == '' ">$(AssemblyName)</TargetName>
3979 <!-- Example, MyAssembly -->
3980 <ProjectFileName Condition=" '$(ProjectFileName)' == '' ">$(MSBuildProjectFile)</ProjectFileName>
3981 <!-- Example, MyProject.csproj -->
3982 <ProjectExt Condition=" '$(ProjectExt)' == '' ">$(MSBuildProjectExtension)</ProjectExt>
3983 <!-- Example, .csproj -->
3984 <WinMDExpOutputWindowsMetadataFilename Condition="'$(WinMDExpOutputWindowsMetadataFilename)' == '' and '$(OutputType)' == 'winmdobj'">$(TargetName).winmd</WinMDExpOutputWindowsMetadataFilename>
3985 <TargetFileName Condition=" '$(TargetFileName)' == '' and '$(OutputType)' == 'winmdobj'">$(WinMDExpOutputWindowsMetadataFilename)</TargetFileName>
3986 <TargetFileName Condition=" '$(TargetFileName)' == '' ">$(TargetName)$(TargetExt)</TargetFileName>
3987 <!-- Example, MyAssembly.dll -->
3988 </PropertyGroup>
3989 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3990 <!--
3991 The PublishableProject property is used when invoking the publish target on a solution that
3992 contains multiple projects. The property determines which projects should be published, and
3993 which projects should be skipped in the publish target. By default any "Windows Application"
3994 or "Console Application" project type is publishable. However, a project that would otherwise
3995 be published can be skipped by defining the PublishableProject property in the project itself.
3996 -->
3997 <_DeploymentPublishableProjectDefault Condition="'$(OutputType)'=='winexe' or '$(OutputType)'=='exe' or '$(OutputType)'=='appcontainerexe'">true</_DeploymentPublishableProjectDefault>
3998 <PublishableProject Condition="'$(PublishableProject)'==''">$(_DeploymentPublishableProjectDefault)</PublishableProject>
3999 <_DeploymentTargetApplicationManifestFileName Condition="'$(OutputType)'=='library'">Native.$(AssemblyName).manifest</_DeploymentTargetApplicationManifestFileName>
4000 <!-- Example, Native.MyAssembly.manifest -->
4001 <_DeploymentTargetApplicationManifestFileName Condition="'$(OutputType)'=='winexe'">$(TargetFileName).manifest</_DeploymentTargetApplicationManifestFileName>
4002 <!-- Example, MyAssembly.exe.manifest -->
4003 <_DeploymentTargetApplicationManifestFileName Condition="'$(OutputType)'=='exe'">$(TargetFileName).manifest</_DeploymentTargetApplicationManifestFileName>
4004 <!-- Example, MyAssembly.exe.manifest -->
4005 <_DeploymentTargetApplicationManifestFileName Condition="'$(OutputType)'=='appcontainerexe'">$(TargetFileName).manifest</_DeploymentTargetApplicationManifestFileName>
4006 <!-- Example, MyAssembly.exe.manifest -->
4007 <TargetDeployManifestFileName Condition="'$(TargetDeployManifestFileName)' == '' and '$(HostInBrowser)' != 'true'">$(AssemblyName).application</TargetDeployManifestFileName>
4008 <!-- Example, MyAssembly.application -->
4009 <TargetDeployManifestFileName Condition="'$(TargetDeployManifestFileName)' == '' and '$(HostInBrowser)' == 'true'">$(AssemblyName).xbap</TargetDeployManifestFileName>
4010 <!-- Example, MyAssembly.xbap -->
4011 <GenerateClickOnceManifests Condition="'$(OutputType)'=='winexe' or '$(OutputType)'=='exe' or '$(OutputType)'=='appcontainerexe'">$(GenerateManifests)</GenerateClickOnceManifests>
4012 <_DeploymentApplicationManifestIdentity Condition="'$(OutputType)'=='library'">Native.$(AssemblyName)</_DeploymentApplicationManifestIdentity>
4013 <_DeploymentApplicationManifestIdentity Condition="'$(OutputType)'=='winexe'">$(AssemblyName).exe</_DeploymentApplicationManifestIdentity>
4014 <_DeploymentApplicationManifestIdentity Condition="'$(OutputType)'=='exe'">$(AssemblyName).exe</_DeploymentApplicationManifestIdentity>
4015 <_DeploymentApplicationManifestIdentity Condition="'$(OutputType)'=='appcontainerexe'">$(AssemblyName).exe</_DeploymentApplicationManifestIdentity>
4016 <_DeploymentDeployManifestIdentity Condition="'$(HostInBrowser)' != 'true'">$(AssemblyName).application</_DeploymentDeployManifestIdentity>
4017 <_DeploymentDeployManifestIdentity Condition="'$(HostInBrowser)' == 'true'">$(AssemblyName).xbap</_DeploymentDeployManifestIdentity>
4018 <_DeploymentFileMappingExtension Condition="'$(MapFileExtensions)'=='true'">.deploy</_DeploymentFileMappingExtension>
4019 <_DeploymentFileMappingExtension Condition="'$(MapFileExtensions)'!='true'" />
4020 <_DeploymentBuiltUpdateInterval Condition="'$(UpdatePeriodically)'=='true'">$(UpdateInterval)</_DeploymentBuiltUpdateInterval>
4021 <_DeploymentBuiltUpdateIntervalUnits Condition="'$(UpdatePeriodically)'=='true'">$(UpdateIntervalUnits)</_DeploymentBuiltUpdateIntervalUnits>
4022 <_DeploymentBuiltUpdateInterval Condition="'$(UpdatePeriodically)'!='true'">0</_DeploymentBuiltUpdateInterval>
4023 <_DeploymentBuiltUpdateIntervalUnits Condition="'$(UpdatePeriodically)'!='true'">Days</_DeploymentBuiltUpdateIntervalUnits>
4024 <_DeploymentBuiltMinimumRequiredVersion Condition="'$(UpdateRequired)'=='true' and '$(Install)'=='true'">$(MinimumRequiredVersion)</_DeploymentBuiltMinimumRequiredVersion>
4025 <_DeploymentLauncherBased Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp'">true</_DeploymentLauncherBased>
4026 <MaxTargetPath Condition="'$(MaxTargetPath)'==''">100</MaxTargetPath>
4027 </PropertyGroup>
4028 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4029 <!--
4030 By default, GenerateApplicationManifest puts all satellite assemblies to the manifest
4031 record by default by setting TargetCulture to *.
4032 -->
4033 <TargetCulture Condition="'$(TargetCulture)'==''">*</TargetCulture>
4034 <FallbackCulture Condition="'$(UICulture)'!='' and '$(FallbackCulture)'==''">$(UICulture)</FallbackCulture>
4035 </PropertyGroup>
4036 <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4037 <!-- Not used any more-->
4038 <_OutputPathItem Include="$(OutDir)" />
4039 <_UnmanagedRegistrationCache Include="$(BaseIntermediateOutputPath)$(MSBuildProjectFile).UnmanagedRegistration.cache" />
4040 <_ResolveComReferenceCache Include="$(IntermediateOutputPath)$(MSBuildProjectFile).ResolveComReference.cache" />
4041 </ItemGroup>
4042 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4043 <!-- Example, C:\MyProjects\MyProject\bin\Debug\ -->
4044 <!--
4045 Condition intentionally omitted on this one, because it causes problems
4046 when we pick up the value of an environment variable named TargetDir
4047 -->
4048 <TargetDir Condition="'$(OutDir)' != ''">$([MSBuild]::Escape($([System.IO.Path]::GetFullPath(`$([System.IO.Path]::Combine(`$(MSBuildProjectDirectory)`, `$(OutDir)`))`))))</TargetDir>
4049 <!-- Example, C:\MyProjects\MyProject\bin\Debug\MyAssembly.dll -->
4050 <TargetPath Condition=" '$(TargetPath)' == '' ">$(TargetDir)$(TargetFileName)</TargetPath>
4051 <TargetRefPath Condition=" '$(TargetRefPath)' == '' and '$(ProduceReferenceAssembly)' == 'true' ">$([MSBuild]::NormalizePath($(TargetDir), 'ref', $(TargetFileName)))</TargetRefPath>
4052 <!-- Example, C:\MyProjects\MyProject\ -->
4053 <ProjectDir Condition=" '$(ProjectDir)' == '' ">$([MSBuild]::EnsureTrailingSlash($(MSBuildProjectDirectory)))</ProjectDir>
4054 <!-- Example, C:\MyProjects\MyProject\MyProject.csproj -->
4055 <ProjectPath Condition=" '$(ProjectPath)' == '' ">$(ProjectDir)$(ProjectFileName)</ProjectPath>
4056 </PropertyGroup>
4057 <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4058 <!-- This is not used here but remains for backwards compatibility -->
4059 <AppConfigFileDestination Include="$(OutDir)$(TargetFileName).config" />
4060 </ItemGroup>
4061 <!--
4062 IDE Macros available only from integrated builds.
4063 The following properties are 'macros' that are available via IDE for
4064 pre and post build steps. However, they are not defined when directly building
4065 a project from the command line, only when building a solution.
4066 -->
4067 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4068 <DevEnvDir Condition="'$(DevEnvDir)'==''">*Undefined*</DevEnvDir>
4069 <SolutionName Condition="'$(SolutionName)'==''">*Undefined*</SolutionName>
4070 <!-- Example, MySolution -->
4071 <SolutionFileName Condition="'$(SolutionFileName)'==''">*Undefined*</SolutionFileName>
4072 <!-- Example, MySolution.sln -->
4073 <SolutionPath Condition="'$(SolutionPath)'==''">*Undefined*</SolutionPath>
4074 <!-- Example, f:\MySolutions\MySolution\MySolution.sln -->
4075 <SolutionDir Condition="'$(SolutionDir)'==''">*Undefined*</SolutionDir>
4076 <!-- Example, f:\MySolutions\MySolution\ -->
4077 <SolutionExt Condition="'$(SolutionExt)'==''">*Undefined*</SolutionExt>
4078 <!-- Example, .sln -->
4079 </PropertyGroup>
4080 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4081 <GenerateBindingRedirectsOutputType Condition="'$(OutputType)'=='exe' or '$(OutputType)'=='winexe'">true</GenerateBindingRedirectsOutputType>
4082 <!-- It would be a breaking change to automatically turn on binding redirects for existing projects, so turn them on only when opting into a new framework. -->
4083 <AutoGenerateBindingRedirects Condition="'$(AutoGenerateBindingRedirects)' == '' and '$(TargetFrameworkIdentifier)' == '.NETFramework' and '$(TargetFrameworkVersion.TrimStart(vV))' &gt;= '4.7.2'">true</AutoGenerateBindingRedirects>
4084 </PropertyGroup>
4085 <PropertyGroup Condition="'$(AutoUnifyAssemblyReferences)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4086 <AutoUnifyAssemblyReferences>true</AutoUnifyAssemblyReferences>
4087 <AutoUnifyAssemblyReferences Condition="'$(GenerateBindingRedirectsOutputType)' == 'true' and '$(AutoGenerateBindingRedirects)' != 'true'">false</AutoUnifyAssemblyReferences>
4088 </PropertyGroup>
4089 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4090 <CleanFile Condition="'$(CleanFile)'==''">$(MSBuildProjectFile).FileListAbsolute.txt</CleanFile>
4091 <!-- During DesignTime Builds, skip project reference build as Design time is only queueing information.-->
4092 <BuildProjectReferences Condition="'$(BuildProjectReferences)' == '' and '$(DesignTimeBuild)' == 'true'">false</BuildProjectReferences>
4093 <!-- By default we will build (and if applicable, clean) all project references. But this can be used to disable that-->
4094 <BuildProjectReferences Condition="'$(BuildProjectReferences)' == ''">true</BuildProjectReferences>
4095 <BuildInParallel Condition="'$(BuildInParallel)' == ''">true</BuildInParallel>
4096 <_ResolveReferenceDependencies Condition="'$(_ResolveReferenceDependencies)' == ''">false</_ResolveReferenceDependencies>
4097 <_GetChildProjectCopyToOutputDirectoryItems Condition="'$(_GetChildProjectCopyToOutputDirectoryItems)' == ''">true</_GetChildProjectCopyToOutputDirectoryItems>
4098 <OverwriteReadOnlyFiles Condition="'$(OverwriteReadOnlyFiles)' == ''">false</OverwriteReadOnlyFiles>
4099 <ComReferenceNoClassMembers Condition="'$(ComReferenceNoClassMembers)' == ''">false</ComReferenceNoClassMembers>
4100 </PropertyGroup>
4101 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4102 <_GenerateBindingRedirectsIntermediateAppConfig>$(IntermediateOutputPath)$(TargetFileName).config</_GenerateBindingRedirectsIntermediateAppConfig>
4103 </PropertyGroup>
4104 <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4105 <IntermediateAssembly Include="$(IntermediateOutputPath)$(TargetName)$(TargetExt)" />
4106 <FinalDocFile Include="@(DocFileItem->'$(OutDir)%(Filename)%(Extension)')" />
4107 <CopyUpToDateMarker Include="$([MSBuild]::NormalizePath('$(MSBuildProjectDirectory)', '$(IntermediateOutputPath)', '$(MSBuildProjectFile).CopyComplete'))" />
4108 </ItemGroup>
4109 <ItemGroup Condition="'$(ProduceReferenceAssembly)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4110 <IntermediateRefAssembly Include="$(IntermediateOutputPath)ref\$(TargetName)$(TargetExt)" Condition="'@(IntermediateRefAssembly)' == ''" />
4111 <CreateDirectory Include="@(IntermediateRefAssembly->'%(RootDir)%(Directory)')" />
4112 <CreateDirectory Include="$(OutDir)ref" />
4113 </ItemGroup>
4114 <ItemGroup Condition="'$(_DebugSymbolsProduced)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4115 <_DebugSymbolsIntermediatePath Include="$(IntermediateOutputPath)$(TargetName).compile.pdb" Condition="'$(OutputType)' == 'winmdobj' and '@(_DebugSymbolsIntermediatePath)' == ''" />
4116 <_DebugSymbolsIntermediatePath Include="$(IntermediateOutputPath)$(TargetName).pdb" Condition="'$(OutputType)' != 'winmdobj' and '@(_DebugSymbolsIntermediatePath)' == ''" />
4117 <_DebugSymbolsOutputPath Include="@(_DebugSymbolsIntermediatePath->'$(OutDir)%(Filename)%(Extension)')" />
4118 </ItemGroup>
4119 <PropertyGroup Condition="'$(_DebugSymbolsProduced)' == 'true' and '$(OutputType)' == 'winmdobj'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4120 <WinMDExpOutputPdb Condition="'$(WinMDExpOutputPdb)' == ''">$(IntermediateOutputPath)$(TargetName).pdb</WinMDExpOutputPdb>
4121 <_WinMDDebugSymbolsOutputPath>$([System.IO.Path]::Combine('$(OutDir)', $([System.IO.Path]::GetFileName('$(WinMDExpOutputPdb)'))))</_WinMDDebugSymbolsOutputPath>
4122 </PropertyGroup>
4123 <PropertyGroup Condition="'$(OutputType)' == 'winmdobj' and '$(DocumentationFile)'!=''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4124 <WinMDOutputDocumentationFile Condition="'$(WinMDOutputDocumentationFile)' == ''">$(IntermediateOutputPath)$(TargetName).xml</WinMDOutputDocumentationFile>
4125 <_WinMDDocFileOutputPath>$([System.IO.Path]::Combine('$(OutDir)', $([System.IO.Path]::GetFileName('$(WinMDOutputDocumentationFile)'))))</_WinMDDocFileOutputPath>
4126 </PropertyGroup>
4127 <PropertyGroup Condition="'$(WinMDExpOutputWindowsMetadataFilename)' != ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4128 <_IntermediateWindowsMetadataPath>$(IntermediateOutputPath)$(WinMDExpOutputWindowsMetadataFilename)</_IntermediateWindowsMetadataPath>
4129 <_WindowsMetadataOutputPath>$(OutDir)$(WinMDExpOutputWindowsMetadataFilename)</_WindowsMetadataOutputPath>
4130 </PropertyGroup>
4131 <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4132 <!-- Create an item for entry point of the ClickOnce application (Example: WindowsApplication1.exe) -->
4133 <_DeploymentManifestEntryPoint Include="@(IntermediateAssembly)">
4134 <TargetPath>$(TargetFileName)</TargetPath>
4135 </_DeploymentManifestEntryPoint>
4136 <!-- Create an item for the application icon if one exists in the project (Example: app.ico) -->
4137 <!-- NOTE: The item Include and the Exists function are operating relative to the PROJECT (.csproj, .vbproj etc.) directory in this case -->
4138 <_DeploymentManifestIconFile Include="$(ApplicationIcon)" Condition="Exists('$(ApplicationIcon)')">
4139 <TargetPath>$(ApplicationIcon)</TargetPath>
4140 </_DeploymentManifestIconFile>
4141 <!-- Create an item for the output application manifest (Example: WindowsApplication1.exe.manifeset) -->
4142 <ApplicationManifest Include="$(IntermediateOutputPath)$(_DeploymentTargetApplicationManifestFileName)">
4143 <TargetPath>$(_DeploymentTargetApplicationManifestFileName)</TargetPath>
4144 </ApplicationManifest>
4145 <!-- Create an item for the final application manifest (Example: WindowsApplication1.exe.manifeset)
4146 This item represents the final output application manifest used for project-to-project
4147 references and for copying to the publish output location. -->
4148 <_ApplicationManifestFinal Include="$(OutDir)$(_DeploymentTargetApplicationManifestFileName)">
4149 <TargetPath>$(_DeploymentTargetApplicationManifestFileName)</TargetPath>
4150 </_ApplicationManifestFinal>
4151 <!-- Create an item for the output deploy manifest (Example: WindowsApplication1.application) -->
4152 <DeployManifest Include="$(IntermediateOutputPath)$(TargetDeployManifestFileName)">
4153 <TargetPath>$(TargetDeployManifestFileName)</TargetPath>
4154 </DeployManifest>
4155 <!-- Create an item for the intermediate trust info file -->
4156 <_DeploymentIntermediateTrustInfoFile Include="$(IntermediateOutputPath)$(TargetName).TrustInfo.xml" Condition="'$(TargetZone)'!=''" />
4157 </ItemGroup>
4158 <!--
4159 Determine the <deploymentProvider> (_DeploymentUrl) for the ClickOnce deployment manifest.
4160 Prefer the UpdateUrl, falling back to InstallUrl or PublishUrl if not specified.
4161 If the UpdateUrl is specified then _DeploymentUrl is always set to the UpdateUrl.
4162 Otherwise, only set the _DeploymentUrl if it's an installed app and updates are enabled.
4163 -->
4164 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4165 <_DeploymentUrl Condition="'$(_DeploymentUrl)'==''">$(UpdateUrl)</_DeploymentUrl>
4166 <_DeploymentUrl Condition="'$(_DeploymentUrl)'==''">$(InstallUrl)</_DeploymentUrl>
4167 <_DeploymentUrl Condition="'$(_DeploymentUrl)'==''">$(PublishUrl)</_DeploymentUrl>
4168 <_DeploymentUrl Condition="!('$(UpdateUrl)'=='') and '$(Install)'=='false'" />
4169 <_DeploymentUrl Condition="'$(_DeploymentUrl)'!=''">$(_DeploymentUrl)$(TargetDeployManifestFileName)</_DeploymentUrl>
4170 <!--
4171 Need to explicitly blank out the _DeploymentUrl when it's not used. Otherwise an
4172 inappropriate value may be used. For example a local path from the PublishUrl
4173 is something we never want to see in the manifest because it means you could
4174 only install the app from that machine.
4175 -->
4176 <_DeploymentUrl Condition="'$(UpdateUrl)'=='' and !('$(Install)'=='true' and '$(UpdateEnabled)'=='true')" />
4177 <_DeploymentUrl Condition="'$(ExcludeDeploymentUrl)'=='true'" />
4178 </PropertyGroup>
4179 <!-- Determine the URLs for the bootstrapper. -->
4180 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4181 <_DeploymentApplicationUrl Condition="'$(IsWebBootstrapper)'=='true'">$(InstallUrl)</_DeploymentApplicationUrl>
4182 <_DeploymentApplicationUrl Condition="'$(IsWebBootstrapper)'=='true' and '$(InstallUrl)'==''">$(PublishUrl)</_DeploymentApplicationUrl>
4183 <_DeploymentComponentsUrl Condition="'$(BootstrapperComponentsLocation)'=='Absolute'">$(BootstrapperComponentsUrl)</_DeploymentComponentsUrl>
4184 </PropertyGroup>
4185 <!-- Output location for publish target. -->
4186 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4187 <PublishDir Condition="'$(PublishDir)' != '' and !HasTrailingSlash('$(PublishDir)')">$(PublishDir)\</PublishDir>
4188 <PublishDir Condition="'$(PublishDir)'==''">$(OutputPath)app.publish\</PublishDir>
4189 </PropertyGroup>
4190 <!--
4191 ProcessorArchitecture is the target processor architecture.
4192 -->
4193 <PropertyGroup Condition="'$(ProcessorArchitecture)'==''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4194 <!--
4195 If ProcessorArchitecture is not set, set it to PlatformTarget
4196 Note: if $(PlatformTarget) is also blank resolve assembly reference defaults to msil which is the
4197 desired behavior in this case
4198 -->
4199 <ProcessorArchitecture>$(PlatformTarget)</ProcessorArchitecture>
4200 <!--
4201 If Processor architecture is not set and PlatformTarget is a known target translate the
4202 PlatformTarget into something ResolveAssemblyReference knows about
4203 -->
4204 <ProcessorArchitecture Condition=" '$(PlatformTarget)' == 'AnyCpu' ">msil</ProcessorArchitecture>
4205 <ProcessorArchitecture Condition=" '$(PlatformTarget)' == 'x64' ">amd64</ProcessorArchitecture>
4206 <ProcessorArchitecture Condition=" '$(PlatformTarget)' == 'Itanium' ">ia64</ProcessorArchitecture>
4207 <ProcessorArchitecture Condition=" '$(PlatformTarget)' == 'x86' ">x86</ProcessorArchitecture>
4208 <ProcessorArchitecture Condition=" '$(PlatformTarget)' == 'ARM' ">arm</ProcessorArchitecture>
4209 </PropertyGroup>
4210 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4211 <ConsiderPlatformAsProcessorArchitecture Condition="'$(ConsiderPlatformAsProcessorArchitecture)' == ''">true</ConsiderPlatformAsProcessorArchitecture>
4212 </PropertyGroup>
4213 <PropertyGroup Condition="'$(ProcessorArchitecture)' == '' and '$(ConsiderPlatformAsProcessorArchitecture)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4214 <!-- We need to do this here because if we were to just compare against platform visual would parse them out as available platforms which may not be the case -->
4215 <ProcessorArchitectureAsPlatform>$(Platform)</ProcessorArchitectureAsPlatform>
4216 <ProcessorArchitecture Condition=" '$(ProcessorArchitectureAsPlatform)' == 'AnyCpu' or '$(ProcessorArchitectureAsPlatform)' == 'Any Cpu'">msil</ProcessorArchitecture>
4217 <ProcessorArchitecture Condition=" '$(ProcessorArchitectureAsPlatform)' == 'x64' or '$(ProcessorArchitectureAsPlatform)' == 'amd64'">amd64</ProcessorArchitecture>
4218 <ProcessorArchitecture Condition=" '$(ProcessorArchitectureAsPlatform)' == 'Itanium' ">ia64</ProcessorArchitecture>
4219 <ProcessorArchitecture Condition=" '$(ProcessorArchitectureAsPlatform)' == 'x86' or '$(ProcessorArchitectureAsPlatform)' == 'win32'">x86</ProcessorArchitecture>
4220 <ProcessorArchitecture Condition=" '$(ProcessorArchitectureAsPlatform)' == 'ARM' ">arm</ProcessorArchitecture>
4221 <!--For compatibility with the 4.0 behavior, if not set above, default to the environment. To override this, set ProcessorArchitecture explicitly. We also need to disable the warning since we do not know if what the environment is set to is correct-->
4222 <ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch Condition="'$(ProcessorArchitecture)'==''">None</ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
4223 <ProcessorArchitecture Condition="'$(ProcessorArchitecture)'==''">$(PROCESSOR_ARCHITECTURE)</ProcessorArchitecture>
4224 </PropertyGroup>
4225 <!-- Sensible defaults for the most-commonly-desired MSBuildRuntime and MSBuildArchitecture values. The Core and Mono runtimes do not currently support specifying task architecture or runtime.
4226 If support for out-of-proc task execution is added on other runtimes, make sure each task's logic is checked against the current state of support. -->
4227 <PropertyGroup Condition="'$(DisableOutOfProcTaskHost)' == '' and '$(MSBuildRuntimeType)' == 'Full'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4228 <TargetFrameworkAsMSBuildRuntime Condition="'$(TargetFrameworkVersion)' == 'v2.0' or '$(TargetFrameworkVersion)' == 'v3.0' or '$(TargetFrameworkVersion)' == 'v3.5'">CLR2</TargetFrameworkAsMSBuildRuntime>
4229 <TargetFrameworkAsMSBuildRuntime Condition="'$(TargetFrameworkVersion)' == 'v4.0' or '$(TargetFrameworkVersion)' == 'v4.5'">CLR4</TargetFrameworkAsMSBuildRuntime>
4230 <TargetFrameworkAsMSBuildRuntime Condition="'$(TargetFrameworkAsMSBuildRuntime)' == ''">CurrentRuntime</TargetFrameworkAsMSBuildRuntime>
4231 <PlatformTargetAsMSBuildArchitectureExplicitlySet Condition="'$(PlatformTargetAsMSBuildArchitecture)' != ''">true</PlatformTargetAsMSBuildArchitectureExplicitlySet>
4232 <PlatformTargetAsMSBuildArchitectureExplicitlySet Condition="'$(PlatformTargetAsMSBuildArchitecture)' == ''">false</PlatformTargetAsMSBuildArchitectureExplicitlySet>
4233 <PlatformTargetAsMSBuildArchitecture Condition="'$(PlatformTarget)' == 'x86' or ('$(PlatformTarget)' == 'x64' and '$(MSBuildExtensionsPath64)' != '')">$(PlatformTarget)</PlatformTargetAsMSBuildArchitecture>
4234 <PlatformTargetAsMSBuildArchitecture Condition="'$(PlatformTarget)' == 'arm'">x86</PlatformTargetAsMSBuildArchitecture>
4235 <PlatformTargetAsMSBuildArchitecture Condition="('$(PlatformTarget)' == 'ia64' and '$(MSBuildExtensionsPath64)' != '')">x64</PlatformTargetAsMSBuildArchitecture>
4236 <PlatformTargetAsMSBuildArchitecture Condition="'$(PlatformTargetAsMSBuildArchitecture)' == ''">CurrentArchitecture</PlatformTargetAsMSBuildArchitecture>
4237 </PropertyGroup>
4238 <!-- Flavor is the project flavor. For example, Client, Smart Devices, SQL Server, etc. -->
4239 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4240 <ProjectFlavor Condition="'$(ProjectFlavor)'==''">Client</ProjectFlavor>
4241 </PropertyGroup>
4242 <!--
4243 The default for compilers is to not delay-sign. If $(DelaySign) is false, let the compiler
4244 use its default rather than forcing a no-delay-sign flag to be passed in. This is so that
4245 attributes in the source code can override this decision.
4246 -->
4247 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4248 <DelaySign Condition="'$(SignAssembly)' != 'true'">false</DelaySign>
4249 <DelaySign Condition="'$(DelaySign)'!='true'" />
4250 </PropertyGroup>
4251 <!-- These properties control web reference proxy generation. -->
4252 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4253 <WebReference_EnableProperties Condition=" '$(WebReference_EnableProperties)' == '' ">true</WebReference_EnableProperties>
4254 <WebReference_EnableSQLTypes Condition=" '$(WebReference_EnableSQLTypes)' == '' ">true</WebReference_EnableSQLTypes>
4255 <WebReference_EnableLegacyEventingModel Condition=" '$(WebReference_EnableLegacyEventingModel)' == '' ">false</WebReference_EnableLegacyEventingModel>
4256 </PropertyGroup>
4257 <!--
4258 These parameters control where to look in the registry for directories to search for
4259 assemblies in the assembly resolution tasks.
4260 -->
4261 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4262 <AssemblyFoldersSuffix Condition=" '$(AssemblyFoldersSuffix)' == '' ">AssemblyFoldersEx</AssemblyFoldersSuffix>
4263 <FrameworkRegistryBase Condition=" '$(FrameworkRegistryBase)' == '' ">Software\Microsoft\$(TargetFrameworkIdentifier)</FrameworkRegistryBase>
4264 <TargetPlatformRegistryBase Condition="'$(TargetPlatformRegistryBase)' == ''">Software\Microsoft\Microsoft SDKs\$(TargetPlatformIdentifier)</TargetPlatformRegistryBase>
4265 <AssemblyFoldersConfigFile Condition="'$(AssemblyFoldersConfigFile)' == ''">$(MSBuildToolsPath32)\AssemblyFolders.config</AssemblyFoldersConfigFile>
4266 <AssemblyFoldersConfigFileSearchPath Condition="Exists('$(AssemblyFoldersConfigFile)')">{AssemblyFoldersFromConfig:$(AssemblyFoldersConfigFile),$(TargetFrameworkVersion)};</AssemblyFoldersConfigFileSearchPath>
4267 <!--
4268 The SearchPaths property is set to find assemblies in the following order:
4269
4270 (1) Files from current project - indicated by {CandidateAssemblyFiles}
4271 (2) $(ReferencePath) - the reference path property, which comes from the .USER file.
4272 (3) The hintpath from the referenced item itself, indicated by {HintPathFromItem}.
4273 (4) The directory of MSBuild's "target" runtime from GetFrameworkPath.
4274 The "target" runtime folder is the folder of the runtime that MSBuild is a part of.
4275 (5) Registered assembly folders, indicated by {Registry:*,*,*}
4276 (6) Assembly folders from AssemblyFolders.config file (provided by Visual Studio Dev15+).
4277 (7) Legacy registered assembly folders, indicated by {AssemblyFolders}
4278 (8) Resolve to the GAC.
4279 (9) Treat the reference's Include as if it were a real file name.
4280 (10) Look in the application's output folder (like bin\debug)
4281 -->
4282 <AssemblySearchPaths Condition=" '$(AssemblySearchPaths)' == ''">
4283 {CandidateAssemblyFiles};
4284 $(ReferencePath);
4285 {HintPathFromItem};
4286 {TargetFrameworkDirectory};
4287 $(AssemblyFoldersConfigFileSearchPath)
4288 {Registry:$(FrameworkRegistryBase),$(TargetFrameworkVersion),$(AssemblyFoldersSuffix)$(AssemblyFoldersExConditions)};
4289 {AssemblyFolders};
4290 {GAC};
4291 {RawFileName};
4292 $(OutDir)
4293 </AssemblySearchPaths>
4294 <!--
4295 These are the extensions that assembly reference resolution will consider for resolution.
4296 Add new extensions here if you want to add new file types to consider (for example, .metadata_dll).
4297 Put the most likely extensions first for reference resolution speed.
4298 -->
4299 <AllowedReferenceAssemblyFileExtensions Condition=" '$(AllowedReferenceAssemblyFileExtensions)' == '' ">
4300 .winmd;
4301 .dll;
4302 .exe
4303 </AllowedReferenceAssemblyFileExtensions>
4304 <!--
4305 These are the extensions that reference resolution will consider when looking for files related
4306 to resolved references. Add new extensions here if you want to add new file types to consider.
4307 -->
4308 <AllowedReferenceRelatedFileExtensions Condition=" '$(AllowedReferenceRelatedFileExtensions)' == '' ">
4309 .pdb;
4310 .xml;
4311 .pri;
4312 .dll.config;
4313 .exe.config
4314 </AllowedReferenceRelatedFileExtensions>
4315 <!--
4316 These names are used when determining which TargetFramework subset to use. If the any of the FullReferenceAssemblyNames
4317 are seen in the list of client subsets, RAR will assume that no client subset is being used. The list is semicolon seperated
4318 For example : Full;Complete;AllThere
4319 -->
4320 <FullReferenceAssemblyNames Condition="'$(FullReferenceAssemblyNames)' == ''">Full</FullReferenceAssemblyNames>
4321 </PropertyGroup>
4322 <!-- ContinueOnError takes 3 values: WarnAndContinue (true), ErrorAndStop (false), and ErrorAndContinue.
4323 Default to ErrorAndStop, since that matches the behaviour in previous versions, and what users
4324 typically expect -->
4325 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4326 <ContinueOnError Condition="'$(ContinueOnError)' == ''">false</ContinueOnError>
4327 </PropertyGroup>
4328 <!-- Users familiar with how some other repos work try to use NoWarn with MSBuild in place of MSBuildWarningsAsMessages. -->
4329 <PropertyGroup Condition="$([MSBuild]::AreFeaturesEnabled('16.8'))" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4330 <MSBuildWarningsAsMessages Condition="'$(MSBuildWarningsAsMessages)'==''">$(NoWarn)</MSBuildWarningsAsMessages>
4331 <MSBuildWarningsAsErrors Condition="'$(MSBuildWarningsAsErrors)'==''">$(WarningsAsErrors)</MSBuildWarningsAsErrors>
4332 </PropertyGroup>
4333 <!-- Common Project System support -->
4334 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4335 <CommonXamlResourcesDirectory Condition=" '$(CommonXamlResourcesDirectory)' == '' ">$(MSBuildThisFileDirectory)$(LangName)\</CommonXamlResourcesDirectory>
4336 </PropertyGroup>
4337 <!-- We need to fallback to en-US in case the xaml rules are not localized (possibly happen on community languages). -->
4338 <PropertyGroup Condition="!Exists('$(CommonXamlResourcesDirectory)')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4339 <CommonXamlResourcesDirectory>$(MSBuildThisFileDirectory)en-US\</CommonXamlResourcesDirectory>
4340 </PropertyGroup>
4341 <ItemGroup Condition=" '$(DefineCommonItemSchemas)' == 'true' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4342 <PropertyPageSchema Include="$(CommonXamlResourcesDirectory)ProjectItemsSchema.xaml" />
4343 <PropertyPageSchema Include="&#xD;&#xA; $(CommonXamlResourcesDirectory)General.xaml;&#xD;&#xA; $(CommonXamlResourcesDirectory)Debugger_General.xaml">
4344 <Context>Project</Context>
4345 </PropertyPageSchema>
4346 <PropertyPageSchema Include="$(CommonXamlResourcesDirectory)General.BrowseObject.xaml">
4347 <Context>BrowseObject</Context>
4348 </PropertyPageSchema>
4349 <PropertyPageSchema Include="$(CommonXamlResourcesDirectory)General_File.xaml">
4350 <Context>File</Context>
4351 </PropertyPageSchema>
4352 <PropertyPageSchema Include="$(CommonXamlResourcesDirectory)SCC.xaml">
4353 <Context>Invisible</Context>
4354 </PropertyPageSchema>
4355 <PropertyPageSchema Include="&#xD;&#xA; $(CommonXamlResourcesDirectory)Folder.xaml;&#xD;&#xA; $(CommonXamlResourcesDirectory)None.xaml;&#xD;&#xA; $(CommonXamlResourcesDirectory)Content.xaml;&#xD;&#xA; $(CommonXamlResourcesDirectory)EmbeddedResource.xaml;&#xD;&#xA; ">
4356 <Context>File;BrowseObject</Context>
4357 </PropertyPageSchema>
4358 <PropertyPageSchema Include="$(CommonXamlResourcesDirectory)SpecialFolder.xaml;">
4359 <Context>File;ProjectSubscriptionService</Context>
4360 </PropertyPageSchema>
4361 </ItemGroup>
4362 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4363 <DefineCommonReferenceSchemas Condition=" '$(DefineCommonReferenceSchemas)' == '' ">$(DefineCommonItemSchemas)</DefineCommonReferenceSchemas>
4364 </PropertyGroup>
4365 <ItemGroup Condition=" '$(DefineCommonReferenceSchemas)' == 'true' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4366 <!-- Assembly references -->
4367 <PropertyPageSchema Include="$(CommonXamlResourcesDirectory)assemblyreference.xaml">
4368 <Context>;BrowseObject</Context>
4369 </PropertyPageSchema>
4370 <PropertyPageSchema Include="$(CommonXamlResourcesDirectory)ResolvedAssemblyReference.xaml">
4371 <Context>ProjectSubscriptionService;BrowseObject</Context>
4372 </PropertyPageSchema>
4373 <!-- COM references -->
4374 <PropertyPageSchema Include="$(CommonXamlResourcesDirectory)COMReference.xaml">
4375 <Context>;BrowseObject</Context>
4376 </PropertyPageSchema>
4377 <PropertyPageSchema Include="$(CommonXamlResourcesDirectory)ResolvedCOMReference.xaml">
4378 <Context>ProjectSubscriptionService;BrowseObject</Context>
4379 </PropertyPageSchema>
4380 <!-- Project references -->
4381 <PropertyPageSchema Include="$(CommonXamlResourcesDirectory)ProjectReference.xaml">
4382 <Context>;BrowseObject</Context>
4383 </PropertyPageSchema>
4384 <PropertyPageSchema Include="$(CommonXamlResourcesDirectory)ResolvedProjectReference.xaml">
4385 <Context>ProjectSubscriptionService;BrowseObject</Context>
4386 </PropertyPageSchema>
4387 </ItemGroup>
4388 <ItemGroup Condition=" '$(DefineCommonCapabilities)' == 'true' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4389 <ProjectCapability Include="&#xD;&#xA; AssemblyReferences;&#xD;&#xA; COMReferences;&#xD;&#xA; ProjectReferences;&#xD;&#xA; SharedProjectReferences;&#xD;&#xA; OutputGroups;&#xD;&#xA; AllTargetOutputGroups;&#xD;&#xA; VisualStudioWellKnownOutputGroups;&#xD;&#xA; SingleFileGenerators;&#xD;&#xA; DeclaredSourceItems;&#xD;&#xA; UserSourceItems;&#xD;&#xA; " />
4390 <ProjectCapability Condition=" '$(TargetPlatformIdentifier)' == 'Windows' and '$(TargetPlatformVersion)' &lt; 8.0 " Include="BuildWindowsDesktopTarget" />
4391 </ItemGroup>
4392 <ItemDefinitionGroup Condition=" '$(DefineExplicitDefaults)' == 'true' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4393 <None>
4394 <CopyToOutputDirectory>Never</CopyToOutputDirectory>
4395 </None>
4396 <Content>
4397 <CopyToOutputDirectory>Never</CopyToOutputDirectory>
4398 </Content>
4399 <Compile>
4400 <CopyToOutputDirectory>Never</CopyToOutputDirectory>
4401 </Compile>
4402 <EmbeddedResource>
4403 <CopyToOutputDirectory>Never</CopyToOutputDirectory>
4404 </EmbeddedResource>
4405 </ItemDefinitionGroup>
4406 <!--
4407 Target that allows targets consuming source control confirmation to establish a dependency on targets producing this information.
4408
4409 Any target that reads SourceRevisionId, PrivateRepositoryUrl, SourceRoot, and other source control properties and items
4410 should depend on this target and be conditioned on '$(SourceControlInformationFeatureSupported)' == 'true'.
4411
4412 SourceRevisionId property uniquely identifies the source control revision of the repository the project belongs to.
4413 For Git repositories this id is a commit hash, for TFVC repositories it's the changeset number, etc.
4414
4415 PrivateRepositoryUrl property stores the URL of the repository supplied by the CI server or retrieved from source control manager.
4416 Targets consuming this property shall not publish its value implicitly as it might inadvertently reveal an internal URL.
4417 Instead, they shall only do so if the project sets PublishRepositoryUrl property to true. For example, the NuGet Pack target
4418 may include the repository URL in the nuspec file generated for NuGet package produced by the project if PublishRepositoryUrl is true.
4419
4420 SourceRoot item group lists all source roots that the project source files reside under and their mapping to source control server URLs,
4421 if available. This includes both source files under source control as well as source files in source packages. SourceRoot items are
4422 used by compilers to determine path map in deterministic build and by SourceLink provider, which maps local paths to URLs of source files
4423 stored on the source control server.
4424
4425 Source control information provider that sets these properties and items shall execute before this target (by including
4426 InitializeSourceControlInformation in its BeforeTargets) and set source control properties and items that haven't been initialized yet.
4427 -->
4428 <Target Name="InitializeSourceControlInformation" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4429 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4430 <SourceControlInformationFeatureSupported>true</SourceControlInformationFeatureSupported>
4431 </PropertyGroup>
4432 <!--
4433 ***********************************************************************************************
4434 ***********************************************************************************************
4435 Build Section
4436 ***********************************************************************************************
4437 ***********************************************************************************************
4438 -->
4439 <Target Name="_AddOutputPathToGlobalPropertiesToRemove" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4440 <PropertyGroup>
4441 <_GlobalPropertiesToRemoveFromProjectReferences Condition="'$(PassOutputPathToReferencedProjects)'=='false'">$(_GlobalPropertiesToRemoveFromProjectReferences);OutputPath</_GlobalPropertiesToRemoveFromProjectReferences>
4442 </PropertyGroup>
4443 </Target>
4444 <!--
4445 ============================================================
4446 _CheckForInvalidConfigurationAndPlatform
4447
4448 This target checks for errors in statically defined properties. By setting BeforeTargets, we try
4449 to ensure that the target runs before any build related targets.
4450 If your target requires this check and is running as a BeforeTargets of one of the first targets
4451 of $(BuildDependsOn), $(RebuildDependsOn), or $(CleanDependsOn) you will need to set your DependsOn
4452 to this target.
4453 ============================================================
4454 -->
4455 <Target Name="_CheckForInvalidConfigurationAndPlatform" BeforeTargets="$(BuildDependsOn);Build;$(RebuildDependsOn);Rebuild;$(CleanDependsOn);Clean" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4456 <PropertyGroup>
4457 <_InvalidConfigurationMessageText>The BaseOutputPath/OutputPath property is not set for project '$(MSBuildProjectFile)'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='$(_OriginalConfiguration)' Platform='$(_OriginalPlatform)'.</_InvalidConfigurationMessageText>
4458 <_InvalidConfigurationMessageText Condition="'$(BuildingInsideVisualStudio)' == 'true'">$(_InvalidConfigurationMessageText) This error may also appear if some other project is trying to follow a project-to-project reference to this project, this project has been unloaded or is not included in the solution, and the referencing project does not build using the same or an equivalent Configuration or Platform.</_InvalidConfigurationMessageText>
4459 <_InvalidConfigurationMessageText Condition="'$(BuildingInsideVisualStudio)' != 'true'">$(_InvalidConfigurationMessageText) You may be seeing this message because you are trying to build a project without a solution file, and have specified a non-default Configuration or Platform that doesn't exist for this project.</_InvalidConfigurationMessageText>
4460 </PropertyGroup>
4461 <Error Condition=" '$(_InvalidConfigurationError)' == 'true' " Text="$(_InvalidConfigurationMessageText)" />
4462 <Warning Condition=" '$(_InvalidConfigurationWarning)' == 'true' " Text="$(_InvalidConfigurationMessageText)" />
4463 <Message Condition="'$(DesignTimeBuild)' != 'true'" Text="Configuration=$(Configuration)" Importance="Low" />
4464 <Message Condition="'$(DesignTimeBuild)' != 'true'" Text="Platform=$(Platform)" Importance="Low" />
4465 <!-- Although we try to ensure a trailing slash, it's possible to circumvent this if the property is set on the command line -->
4466 <Error Condition="'$(OutDir)' != '' and !HasTrailingSlash('$(OutDir)')" Text="The OutDir property must end with a trailing slash." />
4467 <Error Condition="'$(IntermediateOutputPath)' != '' and !HasTrailingSlash('$(IntermediateOutputPath)')" Text="The IntermediateOutputPath must end with a trailing slash." />
4468 <Error Condition="'$(BaseIntermediateOutputPath)' != '' and !HasTrailingSlash('$(BaseIntermediateOutputPath)')" Text="The BaseIntermediateOutputPath must end with a trailing slash." />
4469 <!-- Also update the value of PlatformTargetAsMSBuildArchitecture per the value of Prefer32Bit. We are doing
4470 this here because Prefer32Bit may be set anywhere in the targets, so we can't depend on it having the
4471 correct value when we're trying to figure out PlatformTargetAsMSBuildArchitecture -->
4472 <PropertyGroup Condition="'$(Prefer32Bit)' == 'true' and ('$(PlatformTarget)' == 'AnyCPU' or '$(PlatformTarget)' == '') and '$(PlatformTargetAsMSBuildArchitectureExplicitlySet)' != 'true'">
4473 <PlatformTargetAsMSBuildArchitecture>x86</PlatformTargetAsMSBuildArchitecture>
4474 </PropertyGroup>
4475 <!--
4476 Log an error if the user set MSBuildProjectExtensionsPath in the body of a project. In an SDK style project
4477 if you set a value in the body, the value is not used by the top implicit import but is used by the bottom.
4478 This can lead to confusing behavior and builds can fail for obscure reasons.
4479 -->
4480 <Error Condition=" '$(_InitialMSBuildProjectExtensionsPath)' != '' And '$(MSBuildProjectExtensionsPath)' != '$(_InitialMSBuildProjectExtensionsPath)' " Code="MSB3540" Text="The value of the property &quot;MSBuildProjectExtensionsPath&quot; was modified after it was used by MSBuild which can lead to unexpected build results. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650" />
4481 <!--
4482 Log a warning if:
4483 1. $(EnableBaseIntermediateOutputPathMismatchWarning) is 'true'
4484 2. $(BaseIntermediateOutputPath) was set in the body of a project after its default value was set in Microsoft.Common.props
4485 3. $(BaseIntermediateOutputPath) is not the same as $(MSBuildProjectExtensionsPath)
4486
4487 Similar to the error above, there are cases when users set $(BaseIntermediateOutputPath) in the body of their project and things build but only by coincidence.
4488 MSBuild does not know if $(BaseIntermediateOutputPath) changing would cause problems so tools like NuGet must set $(EnableBaseIntermediateOutputPathMismatchWarning)
4489 to 'true'.
4490 -->
4491 <Warning Condition=" '$(EnableBaseIntermediateOutputPathMismatchWarning)' == 'true' And '$(_InitialBaseIntermediateOutputPath)' != '$(BaseIntermediateOutputPath)' And '$(BaseIntermediateOutputPath)' != '$(MSBuildProjectExtensionsPath)' " Code="MSB3539" Text="The value of the property &quot;BaseIntermediateOutputPath&quot; was modified after it was used by MSBuild which can lead to unexpected build results. Tools such as NuGet will write outputs to the path specified by the &quot;MSBuildProjectExtensionsPath&quot; instead. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650" />
4492 </Target>
4493 <!--
4494 ============================================================
4495 Build
4496
4497 The main build entry point.
4498 ============================================================
4499 -->
4500 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4501 <BuildDependsOn>
4502 BeforeBuild;
4503 CoreBuild;
4504 AfterBuild
4505 </BuildDependsOn>
4506 </PropertyGroup>
4507 <Target Name="Build" Condition=" '$(_InvalidConfigurationWarning)' != 'true' " DependsOnTargets="$(BuildDependsOn)" Returns="@(TargetPathWithTargetPlatformMoniker)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4508 <!--
4509 ============================================================
4510 BeforeBuild
4511
4512 Redefine this target in your project in order to run tasks just before Build
4513 ============================================================
4514 -->
4515 <Target Name="BeforeBuild" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4516 <!--
4517 ============================================================
4518 AfterBuild
4519
4520 Redefine this target in your project in order to run tasks just after Build
4521 ============================================================
4522 -->
4523 <Target Name="AfterBuild" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4524 <!--
4525 ============================================================
4526 CoreBuild
4527
4528 The core build step calls each of the build targets.
4529 ============================================================
4530 -->
4531 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4532 <CoreBuildDependsOn>
4533 BuildOnlySettings;
4534 PrepareForBuild;
4535 PreBuildEvent;
4536 ResolveReferences;
4537 PrepareResources;
4538 ResolveKeySource;
4539 Compile;
4540 ExportWindowsMDFile;
4541 UnmanagedUnregistration;
4542 GenerateSerializationAssemblies;
4543 CreateSatelliteAssemblies;
4544 GenerateManifests;
4545 GetTargetPath;
4546 PrepareForRun;
4547 UnmanagedRegistration;
4548 IncrementalClean;
4549 PostBuildEvent
4550 </CoreBuildDependsOn>
4551 </PropertyGroup>
4552 <Target Name="CoreBuild" DependsOnTargets="$(CoreBuildDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4553 <OnError ExecuteTargets="_TimeStampAfterCompile;PostBuildEvent" Condition="'$(RunPostBuildEvent)'=='Always' or '$(RunPostBuildEvent)'=='OnOutputUpdated'" />
4554 <OnError ExecuteTargets="_CleanRecordFileWrites" />
4555 </Target>
4556 <!--
4557 ============================================================
4558 Rebuild
4559
4560 Delete all intermediate and final build outputs, and then build the project from scratch.
4561 ============================================================
4562 -->
4563 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4564 <_ProjectDefaultTargets Condition="'$(MSBuildProjectDefaultTargets)' != ''">$(MSBuildProjectDefaultTargets)</_ProjectDefaultTargets>
4565 <_ProjectDefaultTargets Condition="'$(MSBuildProjectDefaultTargets)' == ''">Build</_ProjectDefaultTargets>
4566 <RebuildDependsOn>
4567 BeforeRebuild;
4568 Clean;
4569 $(_ProjectDefaultTargets);
4570 AfterRebuild;
4571 </RebuildDependsOn>
4572 <RebuildDependsOn Condition=" '$(MSBuildProjectDefaultTargets)' == 'Rebuild' ">
4573 BeforeRebuild;
4574 Clean;
4575 Build;
4576 AfterRebuild;
4577 </RebuildDependsOn>
4578 </PropertyGroup>
4579 <Target Name="Rebuild" Condition=" '$(_InvalidConfigurationWarning)' != 'true' " DependsOnTargets="$(RebuildDependsOn)" Returns="$(TargetPath)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4580 <!--
4581 ============================================================
4582 BeforeRebuild
4583
4584 Redefine this target in your project in order to run tasks just before Rebuild
4585 ============================================================
4586 -->
4587 <Target Name="BeforeRebuild" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4588 <!--
4589 ============================================================
4590 AfterRebuild
4591
4592 Redefine this target in your project in order to run tasks just after Rebuild
4593 ============================================================
4594 -->
4595 <Target Name="AfterRebuild" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4596 <!--
4597 ============================================================
4598 BuildGenerateSources
4599
4600 Redefine this target in your project in order to run tasks for BuildGenerateSources
4601
4602 Set BuildPassReferences to enable P2P builds
4603 ============================================================
4604 -->
4605 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4606 <BuildGenerateSourcesAction>Build</BuildGenerateSourcesAction>
4607 </PropertyGroup>
4608 <Target Name="BuildGenerateSources" DependsOnTargets="BuildGenerateSourcesTraverse;$(BuildGenerateSourcesAction)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4609 <Target Name="BuildGenerateSourcesTraverse" DependsOnTargets="PrepareProjectReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4610 <MSBuild Projects="@(_MSBuildProjectReferenceExistent)" Targets="BuildGenerateSources" BuildInParallel="$(BuildInParallel)" Properties="%(_MSBuildProjectReferenceExistent.SetConfiguration); %(_MSBuildProjectReferenceExistent.SetPlatform); %(_MSBuildProjectReferenceExistent.SetTargetFramework);" Condition="'$(BuildPassReferences)' == 'true' and '@(ProjectReferenceWithConfiguration)' != '' and '@(_MSBuildProjectReferenceExistent)' != '' and '%(_MSBuildProjectReferenceExistent.BuildReference)' == 'true'" ContinueOnError="!$(BuildingProject)" RemoveProperties="%(_MSBuildProjectReferenceExistent.GlobalPropertiesToRemove)$(_GlobalPropertiesToRemoveFromProjectReferences)" />
4611 </Target>
4612 <!--
4613 ============================================================
4614 BuildCompile
4615
4616 Redefine this target in your project in order to run tasks for BuildCompile
4617 ============================================================
4618 -->
4619 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4620 <BuildCompileAction>Build</BuildCompileAction>
4621 </PropertyGroup>
4622 <Target Name="BuildCompile" DependsOnTargets="BuildCompileTraverse;$(BuildCompileAction)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4623 <Target Name="BuildCompileTraverse" DependsOnTargets="PrepareProjectReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4624 <MSBuild Projects="@(_MSBuildProjectReferenceExistent)" Targets="BuildCompile" BuildInParallel="$(BuildInParallel)" Properties="%(_MSBuildProjectReferenceExistent.SetConfiguration); %(_MSBuildProjectReferenceExistent.SetPlatform); %(_MSBuildProjectReferenceExistent.SetTargetFramework)" Condition="'$(BuildPassReferences)' == 'true' and '@(ProjectReferenceWithConfiguration)' != '' and '@(_MSBuildProjectReferenceExistent)' != '' and '%(_MSBuildProjectReferenceExistent.BuildReference)' == 'true'" ContinueOnError="!$(BuildingProject)" RemoveProperties="%(_MSBuildProjectReferenceExistent.GlobalPropertiesToRemove)$(_GlobalPropertiesToRemoveFromProjectReferences)" />
4625 </Target>
4626 <!--
4627 ============================================================
4628 BuildLink
4629
4630 Redefine this target in your project in order to run tasks for BuildLink
4631 ============================================================
4632 -->
4633 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4634 <BuildLinkAction>Build</BuildLinkAction>
4635 </PropertyGroup>
4636 <Target Name="BuildLink" DependsOnTargets="BuildLinkTraverse;$(BuildLinkAction)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4637 <Target Name="BuildLinkTraverse" DependsOnTargets="PrepareProjectReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4638 <MSBuild Projects="@(_MSBuildProjectReferenceExistent)" Targets="BuildLink" BuildInParallel="$(BuildInParallel)" Properties="%(_MSBuildProjectReferenceExistent.SetConfiguration); %(_MSBuildProjectReferenceExistent.SetPlatform); %(_MSBuildProjectReferenceExistent.SetTargetFramework)" Condition="'$(BuildPassReferences)' == 'true' and '@(ProjectReferenceWithConfiguration)' != '' and '@(_MSBuildProjectReferenceExistent)' != '' and '%(_MSBuildProjectReferenceExistent.BuildReference)' == 'true'" ContinueOnError="!$(BuildingProject)" RemoveProperties="%(_MSBuildProjectReferenceExistent.GlobalPropertiesToRemove)$(_GlobalPropertiesToRemoveFromProjectReferences)" />
4639 </Target>
4640 <!--
4641 ============================================================
4642 CopyRunEnvironmentFiles
4643
4644 Copy environment files necessary to run the user's app to the final directory.
4645 This is a public target that can be invoked by an IDE.
4646
4647 This may be used by an IDE to make the app.config file available for running
4648 the target app.
4649 ============================================================
4650 -->
4651 <Target Name="CopyRunEnvironmentFiles" DependsOnTargets="PrepareForBuild;SetWin32ManifestProperties;_CopyAppConfigFile;_CleanRecordFileWrites" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4652 <!--
4653 ============================================================
4654 Run
4655
4656 Run the final build output if it is a .EXE
4657 ============================================================
4658 -->
4659 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4660 <RunDependsOn />
4661 </PropertyGroup>
4662 <Target Name="Run" DependsOnTargets="$(RunDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4663 <Error Text="Cannot run '$(TargetPath)' because project output type is not '.exe'" Condition="'$(TargetExt)'!='.exe'" />
4664 <Exec Command="$(TargetPath) $(StartArguments)" WorkingDirectory="$(OutDir)" Condition=" '$(StartWorkingDirectory)' == '' " />
4665 <Exec Command="$(TargetPath) $(StartArguments)" WorkingDirectory="$(StartWorkingDirectory)" Condition=" '$(StartWorkingDirectory)' != '' " />
4666 </Target>
4667 <!--
4668 ***********************************************************************************************
4669 ***********************************************************************************************
4670 BuildOnlySettings Section
4671 ***********************************************************************************************
4672 ***********************************************************************************************
4673 -->
4674 <!--
4675 ============================================================
4676 BuildOnlySettings
4677
4678 This target is called only when doing a real build. It is specifically not called during project load.
4679 ============================================================
4680 -->
4681 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4682 <BuildingProject>false</BuildingProject>
4683 </PropertyGroup>
4684 <Target Name="BuildOnlySettings" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4685 <PropertyGroup>
4686 <BuildingProject>true</BuildingProject>
4687 </PropertyGroup>
4688 </Target>
4689 <!--
4690 ***********************************************************************************************
4691 ***********************************************************************************************
4692 PrepareForBuild Section
4693 ***********************************************************************************************
4694 ***********************************************************************************************
4695 -->
4696 <!--
4697 ============================================================
4698 PrepareForBuild
4699
4700 Prepare the prerequisites for building.
4701 ============================================================
4702 -->
4703 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4704 <PrepareForBuildDependsOn>$(PrepareForBuildDependsOn);GetFrameworkPaths;GetReferenceAssemblyPaths;AssignLinkMetadata</PrepareForBuildDependsOn>
4705 </PropertyGroup>
4706 <Target Name="PrepareForBuild" DependsOnTargets="$(PrepareForBuildDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4707 <ItemGroup>
4708 <AppConfigWithTargetPath Include="$(AppConfig)" Condition="'$(AppConfig)'!=''">
4709 <TargetPath>$(TargetFileName).config</TargetPath>
4710 </AppConfigWithTargetPath>
4711 </ItemGroup>
4712 <FindAppConfigFile PrimaryList="@(None)" SecondaryList="@(Content)" TargetPath="$(TargetFileName).config" Condition="'$(AppConfig)'==''">
4713 <Output TaskParameter="AppConfigFile" ItemName="AppConfigWithTargetPath" />
4714 <Output TaskParameter="AppConfigFile" PropertyName="AppConfig" />
4715 </FindAppConfigFile>
4716 <!-- Create the directories for intermediate and final build products, and any other arbitrary directories. -->
4717 <!-- We are going to continue on error here so that if the tree is read only we will still get intellisense -->
4718 <MakeDir Directories="$(OutDir);$(IntermediateOutputPath);@(DocFileItem->'%(RelativeDir)');@(CreateDirectory)" ContinueOnError="True" />
4719 </Target>
4720 <!--
4721 ============================================================
4722 GetFrameworkPaths
4723
4724 Get the paths for the .NET Framework installation directory
4725
4726 These paths are not used directly by this .targets file but are available for pre and
4727 post build steps.
4728 ============================================================
4729 -->
4730 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4731 <Framework40Dir>@(_TargetFramework40DirectoryItem)</Framework40Dir>
4732 <Framework35Dir>@(_TargetFramework35DirectoryItem)</Framework35Dir>
4733 <Framework30Dir>@(_TargetFramework30DirectoryItem)</Framework30Dir>
4734 <Framework20Dir>@(_TargetFramework20DirectoryItem)</Framework20Dir>
4735 <!-- Note we need to make the 4.0 FrameworkDir point to the 2.0 location by default since we shipped msbuild 4.0 that way and to change it would be a breaking change.-->
4736 <FrameworkDir Condition="'$(FrameworkDir)' == '' and ('$(TargetFrameworkVersion)' == 'v2.0' or '$(TargetFrameworkVersion)' == 'v3.5' or '$(TargetFrameworkVersion)' == 'v4.0')">@(_TargetFramework20DirectoryItem)</FrameworkDir>
4737 <FrameworkDir Condition="'$(FrameworkDir)' == ''">@(_TargetFramework40DirectoryItem)</FrameworkDir>
4738 <TargetedFrameworkDir Condition="'$(TargetedFrameworkDir)' == ''">@(_TargetedFrameworkDirectoryItem)</TargetedFrameworkDir>
4739 <FrameworkSDKDir Condition="'$(FrameworkSDKDir)' == ''">@(_TargetFrameworkSDKDirectoryItem)</FrameworkSDKDir>
4740 <GetFrameworkPathsDependsOn />
4741 </PropertyGroup>
4742 <!-- This is a generally overriden target, for example it is overriden in the Microsoft.NETFramework.targets file -->
4743 <Target Name="GetFrameworkPaths" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4744 <!--
4745 ============================================================
4746 GetReferenceAssemblyPaths
4747
4748 Get the paths for the Reference Assemblies for the known versions of the
4749 .NET Framework.
4750
4751 These paths are used by the build process in order to resolve the correct
4752 assemblies from the various directories, and to support multi-targeting
4753 ============================================================
4754 -->
4755 <Target Name="GetReferenceAssemblyPaths" DependsOnTargets="$(GetReferenceAssemblyPathsDependsOn);GetFrameworkPaths" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4756 <!-- if TargetFrameworkDirectory doesn't have a custom value, clear it out; that way we can get reference paths and target framework directories all in the right order -->
4757 <PropertyGroup>
4758 <TargetFrameworkDirectory Condition="'@(_CombinedTargetFrameworkDirectoriesItem)' == '$(TargetFrameworkDirectory)'" />
4759 </PropertyGroup>
4760 <!-- By default if there is no root path set then the task will assume it is Program Files\Reference Assemblies\Microsoft\Framework-->
4761 <GetReferenceAssemblyPaths Condition="'$(TargetFrameworkMoniker)' != '' and ('$(_TargetFrameworkDirectories)' == '' or '$(_FullFrameworkReferenceAssemblyPaths)' == '')" TargetFrameworkMoniker="$(TargetFrameworkMoniker)" RootPath="$(TargetFrameworkRootPath)" TargetFrameworkFallbackSearchPaths="$(TargetFrameworkFallbackSearchPaths)" BypassFrameworkInstallChecks="$(BypassFrameworkInstallChecks)">
4762 <Output TaskParameter="ReferenceAssemblyPaths" PropertyName="_TargetFrameworkDirectories" />
4763 <Output TaskParameter="FullFrameworkReferenceAssemblyPaths" PropertyName="_FullFrameworkReferenceAssemblyPaths" />
4764 <Output TaskParameter="TargetFrameworkMonikerDisplayName" PropertyName="TargetFrameworkMonikerDisplayName" Condition="'$(TargetFrameworkMonikerDisplayName)' == ''" />
4765 </GetReferenceAssemblyPaths>
4766 <PropertyGroup>
4767 <TargetFrameworkDirectory>$(_TargetFrameworkDirectories);$(TargetFrameworkDirectory);$(WinFXAssemblyDirectory)</TargetFrameworkDirectory>
4768 <TargetFrameworkDirectory Condition="'$(TargetPlatformWinMDLocation)' != '' and Exists('$(TargetPlatformWinMDLocation)')">$(TargetFrameworkDirectory);$(TargetPlatformWinMDLocation)</TargetFrameworkDirectory>
4769 </PropertyGroup>
4770 <!-- Remove the AssemblyFolders if no target framework directories could be found. This is to prevent us from
4771 resolving from the assemblyfolders global location if we are not acutally targeting a framework-->
4772 <PropertyGroup>
4773 <RemoveAssemblyFoldersIfNoTargetFramework Condition="'$(RemoveAssemblyFoldersIfNoTargetFramework)' == ''">true</RemoveAssemblyFoldersIfNoTargetFramework>
4774 </PropertyGroup>
4775 <PropertyGroup Condition="'$(_TargetFrameworkDirectories)' == '' and '$(AssemblySearchPaths)' != '' and '$(RemoveAssemblyFoldersIfNoTargetFramework)' == 'true'">
4776 <AssemblySearchPaths>$(AssemblySearchPaths.Replace('{AssemblyFolders}', '').Split(';'))</AssemblySearchPaths>
4777 </PropertyGroup>
4778 <ItemGroup Condition="'$(ImplicitlyExpandDesignTimeFacades)' == 'true'">
4779 <DesignTimeFacadeDirectoryRoots Include="$(TargetFrameworkDirectory)" />
4780 <DesignTimeFacadeDirectories Include="%(DesignTimeFacadeDirectoryRoots.Identity)Facades\" Condition="Exists('%(DesignTimeFacadeDirectoryRoots.Identity)Facades\')" />
4781 </ItemGroup>
4782 <PropertyGroup Condition="'@(DesignTimeFacadeDirectories)' != ''">
4783 <TargetFrameworkDirectory>$(TargetFrameworkDirectory);@(DesignTimeFacadeDirectories)</TargetFrameworkDirectory>
4784 </PropertyGroup>
4785 <PropertyGroup Condition="'$(_TargetFrameworkDirectories)' == ''">
4786 <TargetFrameworkProfile />
4787 </PropertyGroup>
4788 </Target>
4789 <!-- Returns target framework moniker. E.g. ".NETFramework,Version=v4.0.1" -->
4790 <Target Name="GetTargetFrameworkMoniker" Returns="$(TargetFrameworkMoniker)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4791 <!-- Returns target framework moniker display name. E.g. ".NET Framework 4 Platform Update 1 (KB2478063)" -->
4792 <Target Name="GetTargetFrameworkMonikerDisplayName" DependsOnTargets="GetFrameworkPaths;GetReferenceAssemblyPaths" Returns="$(TargetFrameworkMonikerDisplayName)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4793 <!-- Returns semicolon separated list of target framework directories.
4794 E.g "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0.1\;C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\" -->
4795 <Target Name="GetTargetFrameworkDirectories" DependsOnTargets="GetFrameworkPaths;GetReferenceAssemblyPaths" Returns="$(TargetFrameworkDirectory)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4796 <!--
4797 ============================================================
4798 AssignLinkMetadata
4799
4800 For items of a certain set of whitelisted types, make sure that
4801 if they are defined in a file other than the project file, that
4802 they have "Link" metadata set to an appropriate default.
4803 ============================================================
4804 -->
4805 <Target Name="AssignLinkMetadata" Condition=" '$(SynthesizeLinkMetadata)' == 'true' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4806 <!-- NONE ITEMS -->
4807 <AssignLinkMetadata Items="@(None)" Condition="'@(None)' != '' and '%(None.DefiningProjectFullPath)' != '$(MSBuildProjectFullPath)'">
4808 <Output TaskParameter="OutputItems" ItemName="_Temp" />
4809 </AssignLinkMetadata>
4810 <ItemGroup>
4811 <None Remove="@(_Temp)" />
4812 <None Include="@(_Temp)" />
4813 <_Temp Remove="@(_Temp)" />
4814 </ItemGroup>
4815 <!-- CONTENT ITEMS -->
4816 <AssignLinkMetadata Items="@(Content)" Condition="'@(Content)' != '' and '%(Content.DefiningProjectFullPath)' != '$(MSBuildProjectFullPath)'">
4817 <Output TaskParameter="OutputItems" ItemName="_Temp" />
4818 </AssignLinkMetadata>
4819 <ItemGroup>
4820 <Content Remove="@(_Temp)" />
4821 <Content Include="@(_Temp)" />
4822 <_Temp Remove="@(_Temp)" />
4823 </ItemGroup>
4824 <!-- PAGE ITEMS -->
4825 <AssignLinkMetadata Items="@(Page)" Condition="'@(Page)' != '' and '%(Page.DefiningProjectFullPath)' != '$(MSBuildProjectFullPath)'">
4826 <Output TaskParameter="OutputItems" ItemName="_Temp" />
4827 </AssignLinkMetadata>
4828 <ItemGroup>
4829 <Page Remove="@(_Temp)" />
4830 <Page Include="@(_Temp)" />
4831 <_Temp Remove="@(_Temp)" />
4832 </ItemGroup>
4833 <!-- APPLICATIONDEFINITION ITEMS -->
4834 <AssignLinkMetadata Items="@(ApplicationDefinition)" Condition="'@(ApplicationDefinition)' != '' and '%(ApplicationDefinition.DefiningProjectFullPath)' != '$(MSBuildProjectFullPath)'">
4835 <Output TaskParameter="OutputItems" ItemName="_Temp" />
4836 </AssignLinkMetadata>
4837 <ItemGroup>
4838 <ApplicationDefinition Remove="@(_Temp)" />
4839 <ApplicationDefinition Include="@(_Temp)" />
4840 <_Temp Remove="@(_Temp)" />
4841 </ItemGroup>
4842 <!-- EMBEDDEDRESOURCE ITEMS -->
4843 <AssignLinkMetadata Items="@(EmbeddedResource)" Condition="'@(EmbeddedResource)' != '' and '%(EmbeddedResource.DefiningProjectFullPath)' != '$(MSBuildProjectFullPath)'">
4844 <Output TaskParameter="OutputItems" ItemName="_Temp" />
4845 </AssignLinkMetadata>
4846 <ItemGroup>
4847 <EmbeddedResource Remove="@(_Temp)" />
4848 <EmbeddedResource Include="@(_Temp)" />
4849 <_Temp Remove="@(_Temp)" />
4850 </ItemGroup>
4851 </Target>
4852 <!--
4853 ***********************************************************************************************
4854 ***********************************************************************************************
4855 PreBuildEvent Section
4856 ***********************************************************************************************
4857 ***********************************************************************************************
4858 -->
4859 <!--
4860 ============================================================
4861 PreBuildEvent
4862
4863 Run the pre-build event if there is one.
4864 ============================================================
4865 -->
4866 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4867 <PreBuildEventDependsOn />
4868 </PropertyGroup>
4869 <Target Name="PreBuildEvent" Condition="'$(PreBuildEvent)'!=''" DependsOnTargets="$(PreBuildEventDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4870 <Exec WorkingDirectory="$(OutDir)" Command="$(PreBuildEvent)" />
4871 </Target>
4872 <!--
4873 ***********************************************************************************************
4874 ***********************************************************************************************
4875 UnmanagedUnregistration Section
4876 ***********************************************************************************************
4877 ***********************************************************************************************
4878 -->
4879 <!--
4880 ============================================================
4881 UnmanagedUnregistration
4882
4883 If the main assembly had previously been registered for COM interop, unregister it now.
4884 We will re-register the new version after it has been built.
4885 ============================================================
4886 -->
4887 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4888 <UnmanagedUnregistrationDependsOn />
4889 </PropertyGroup>
4890 <Target Name="UnmanagedUnregistration" Condition="(('$(_AssemblyTimestampBeforeCompile)' != '$(_AssemblyTimestampAfterCompile)' or '$(RegisterForComInterop)' != 'true' or '$(OutputType)' != 'library') or&#xD;&#xA; ('$(_AssemblyTimestampBeforeCompile)' == '')) and&#xD;&#xA; Exists('@(_UnmanagedRegistrationCache)')" DependsOnTargets="$(UnmanagedUnregistrationDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4891 <PropertyGroup>
4892 <UnregisterAssemblyMSBuildArchitecture Condition="'$(UnregisterAssemblyMSBuildArchitecture)' == ''">$(PlatformTargetAsMSBuildArchitecture)</UnregisterAssemblyMSBuildArchitecture>
4893 </PropertyGroup>
4894 <PropertyGroup Condition="'$(TargetFrameworkAsMSBuildRuntime)' != '' and '$(UnregisterAssemblyMSBuildArchitecture)' != ''">
4895 <!-- Falling back to the current runtime if we are targeting CLR2 and the task host doesn't exist will lead to
4896 incorrect behavior in some cases, but it's the same incorrect behavior as Visual Studio 2010, and thus better
4897 than causing build breaks on upgrade to Win8 the way not doing so would. For more details, see the
4898 corresponding comment in GenerateResource. -->
4899 <UnregisterAssemblyMSBuildRuntime Condition="'$(UnregisterAssemblyMSBuildRuntime)' == '' and&#xD;&#xA; $([MSBuild]::DoesTaskHostExist(`$(TargetFrameworkAsMSBuildRuntime)`, `$(UnregisterAssemblyMSBuildArchitecture)`))">$(TargetFrameworkAsMSBuildRuntime)</UnregisterAssemblyMSBuildRuntime>
4900 <!-- If the targeted runtime doesn't exist, fall back to current -->
4901 <UnregisterAssemblyMSBuildRuntime Condition="'$(UnregisterAssemblyMSBuildRuntime)' == ''">CurrentRuntime</UnregisterAssemblyMSBuildRuntime>
4902 </PropertyGroup>
4903 <UnregisterAssembly AssemblyListFile="@(_UnmanagedRegistrationCache)" MSBuildArchitecture="$(UnregisterAssemblyMSBuildArchitecture)" MSBuildRuntime="$(UnregisterAssemblyMSBuildRuntime)" />
4904 </Target>
4905 <!--
4906 ***********************************************************************************************
4907 ***********************************************************************************************
4908 ResolveReferences Section
4909 ***********************************************************************************************
4910 ***********************************************************************************************
4911 -->
4912 <!--
4913 ============================================================
4914 GetTargetFrameworkVersion
4915
4916 This stand-alone target returns the target framework version (i.e. v3.5, v4.0, etc.)
4917 that would be used if we built this project.
4918
4919 ============================================================
4920 -->
4921 <Target Name="GetTargetFrameworkVersion" Returns="$(TargetFrameworkVersion)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4922 <!--
4923 ============================================================
4924 ResolveReferences
4925 ============================================================
4926 -->
4927 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4928 <ResolveReferencesDependsOn>
4929 BeforeResolveReferences;
4930 AssignProjectConfiguration;
4931 ResolveProjectReferences;
4932 FindInvalidProjectReferences;
4933 ResolveNativeReferences;
4934 ResolveAssemblyReferences;
4935 GenerateBindingRedirects;
4936 ResolveComReferences;
4937 AfterResolveReferences
4938 </ResolveReferencesDependsOn>
4939 </PropertyGroup>
4940 <Target Name="ResolveReferences" Returns="@(ReferencePath)" DependsOnTargets="$(ResolveReferencesDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4941 <!--
4942 ============================================================
4943 BeforeResolveReferences
4944
4945 Redefine this target in your project in order to run tasks just before ResolveReferences
4946 ============================================================
4947 -->
4948 <Target Name="BeforeResolveReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4949 <!--
4950 ============================================================
4951 AfterResolveReferences
4952
4953 Redefine this target in your project in order to run tasks just after ResolveReferences
4954 ============================================================
4955 -->
4956 <Target Name="AfterResolveReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4957 <!--
4958 ============================================================
4959 AssignProjectConfiguration
4960
4961 Assigns the appropriate configuration to each project in the list of project references passed in.
4962 Adds to the project references passed in any project references implied by dependencies expressed in the solution file, if any.
4963
4964 [IN]
4965 @(ProjectReference) - the list of all project references
4966
4967 [OUT]
4968 @(ProjectReferenceWithConfiguration) - the list of project references (MSBuild and potentially VSIP projects)
4969 with metadata values FullConfiguration, Configuration, Platform,
4970 SetConfiguration, and SetPlatform
4971 ============================================================
4972 -->
4973 <Target Name="AssignProjectConfiguration" Condition="'$(CurrentSolutionConfigurationContents)' != '' or '@(ProjectReference)'!=''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4974 <PropertyGroup>
4975 <OnlyReferenceAndBuildProjectsEnabledInSolutionConfiguration Condition="'$(OnlyReferenceAndBuildProjectsEnabledInSolutionConfiguration)' == ''">true</OnlyReferenceAndBuildProjectsEnabledInSolutionConfiguration>
4976 <ShouldUnsetParentConfigurationAndPlatform Condition="'$(ShouldUnsetParentConfigurationAndPlatform)' == '' and ('$(BuildingInsideVisualStudio)' == 'true' or '$(BuildingSolutionFile)' == 'true')">true</ShouldUnsetParentConfigurationAndPlatform>
4977 <ShouldUnsetParentConfigurationAndPlatform Condition="'$(ShouldUnsetParentConfigurationAndPlatform)' == ''">false</ShouldUnsetParentConfigurationAndPlatform>
4978 <!-- Web Application projects can "secretly" reference Silverlight projects, which can take project dependencies on that same Web Application. If the project
4979 dependencies are promoted to project references, this ends up creating a situation where we have a circular reference between the two projects. We don't
4980 want this to happen, so just turn off synthetic project reference generation for Silverlight projects. -->
4981 <AddSyntheticProjectReferencesForSolutionDependencies Condition="'$(AddSyntheticProjectReferencesForSolutionDependencies)' == '' and '$(TargetFrameworkIdentifier)' == 'Silverlight'">false</AddSyntheticProjectReferencesForSolutionDependencies>
4982 <!-- Inside VS, we do not need to add synthetic references, as VS already organizes the build per any solution-level dependencies; we only do this on the command line-->
4983 <AddSyntheticProjectReferencesForSolutionDependencies Condition="'$(AddSyntheticProjectReferencesForSolutionDependencies)' == '' and '$(BuildingInsideVisualStudio)' != 'true'">true</AddSyntheticProjectReferencesForSolutionDependencies>
4984 </PropertyGroup>
4985 <!-- Assign a project configuration to each project reference if we're building a solution file. -->
4986 <AssignProjectConfiguration ProjectReferences="@(ProjectReference)" CurrentProject="$(MSBuildProjectFullPath)" CurrentProjectConfiguration="$(Configuration)" CurrentProjectPlatform="$(Platform)" DefaultToVcxPlatformMapping="$(DefaultToVcxPlatformMapping)" VcxToDefaultPlatformMapping="$(VcxToDefaultPlatformMapping)" OutputType="$(OutputType)" ResolveConfigurationPlatformUsingMappings="false" SolutionConfigurationContents="$(CurrentSolutionConfigurationContents)" AddSyntheticProjectReferencesForSolutionDependencies="$(AddSyntheticProjectReferencesForSolutionDependencies)" OnlyReferenceAndBuildProjectsEnabledInSolutionConfiguration="$(OnlyReferenceAndBuildProjectsEnabledInSolutionConfiguration)" ShouldUnsetParentConfigurationAndPlatform="$(ShouldUnsetParentConfigurationAndPlatform)">
4987 <!-- EMITTED FOR COMPATIBILITY REASONS ONLY. CONSUME PROJECTREFERENCEWITHCONFIGURATION INSTEAD -->
4988 <Output TaskParameter="AssignedProjects" ItemName="_ProjectReferenceWithConfiguration" />
4989 <Output TaskParameter="UnassignedProjects" ItemName="_ProjectReferenceWithConfiguration" />
4990 <Output TaskParameter="AssignedProjects" ItemName="ProjectReferenceWithConfiguration" />
4991 <Output TaskParameter="UnassignedProjects" ItemName="ProjectReferenceWithConfiguration" />
4992 </AssignProjectConfiguration>
4993 <ItemGroup>
4994 <_ProjectReferenceWithConfiguration>
4995 <BuildReference Condition="'%(_ProjectReferenceWithConfiguration.BuildReference)' == ''">true</BuildReference>
4996 <ReferenceOutputAssembly Condition="'%(_ProjectReferenceWithConfiguration.ReferenceOutputAssembly)' == ''">true</ReferenceOutputAssembly>
4997 </_ProjectReferenceWithConfiguration>
4998 <ProjectReferenceWithConfiguration>
4999 <BuildReference Condition="'%(ProjectReferenceWithConfiguration.BuildReference)' == ''">true</BuildReference>
5000 <ReferenceOutputAssembly Condition="'%(ProjectReferenceWithConfiguration.ReferenceOutputAssembly)' == ''">true</ReferenceOutputAssembly>
5001 </ProjectReferenceWithConfiguration>
5002 </ItemGroup>
5003 </Target>
5004 <!--
5005 ============================================================
5006 _SplitProjectReferencesByFileExistence
5007
5008 Split referenced projects into two lists: those that exist on
5009 disk and those that don't.
5010 ============================================================
5011 -->
5012 <Target Name="_SplitProjectReferencesByFileExistence" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5013 <!--
5014 Use this task for matching projects with pre-resolved project outputs set by the IDE
5015 if building inside the IDE. The IDE only includes non-MSBuild projects in the output list. We'll
5016 use MSBuild to resolve MSBuild projects.
5017 This task will resolve VSIP (3rd party) project references and create a new item list with only project references
5018 to projects in the MSBuild format.
5019 -->
5020 <ResolveNonMSBuildProjectOutput ProjectReferences="@(ProjectReferenceWithConfiguration)" PreresolvedProjectOutputs="$(VSIDEResolvedNonMSBuildProjectOutputs)" Condition="'$(BuildingInsideVisualStudio)'=='true' and '@(ProjectReferenceWithConfiguration)'!=''">
5021 <Output TaskParameter="ResolvedOutputPaths" ItemName="_ResolvedProjectReferencePaths" />
5022 <Output TaskParameter="UnresolvedProjectReferences" ItemName="_MSBuildProjectReference" />
5023 </ResolveNonMSBuildProjectOutput>
5024 <!--
5025 If building from the command line, simply copy the ProjectReferenceWithConfiguration item list to _MSBuildProjectReference,
5026 since we have to assume all projects are in the MSBuild format. We have no way of building
5027 VSIP (3rd party) projects from the command line.
5028 -->
5029 <ItemGroup>
5030 <_MSBuildProjectReference Include="@(ProjectReferenceWithConfiguration)" Condition="'$(BuildingInsideVisualStudio)'!='true' and '@(ProjectReferenceWithConfiguration)'!=''" />
5031 </ItemGroup>
5032 <!-- Break the project list into two lists: those that exist on disk and those that don't. -->
5033 <ItemGroup>
5034 <_MSBuildProjectReferenceExistent Include="@(_MSBuildProjectReference)" Condition="Exists('%(Identity)')" />
5035 <_MSBuildProjectReferenceNonexistent Include="@(_MSBuildProjectReference)" Condition="!Exists('%(Identity)')" />
5036 </ItemGroup>
5037 </Target>
5038 <!--
5039 ====================================================================================
5040 _GetProjectReferenceTargetFrameworkProperties
5041
5042 Builds the GetTargetFrameworks target of all existent project references to get a list
5043 of all supported TargetFrameworks of the referenced projects. Calls the
5044 GetReferenceNearestTargetFrameworkTask to determine the closest match for each project.
5045 This allows a cross-targeting project to select how it should be configured to build
5046 against the most appropriate target for the referring target framework.
5047
5048 ======================================================================================
5049 -->
5050 <Target Name="_GetProjectReferenceTargetFrameworkProperties" DependsOnTargets="_AddOutputPathToGlobalPropertiesToRemove" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5051 <!--
5052 Select the moniker to send to each project reference if not already set. NugetTargetMoniker (NTM) is preferred by default over
5053 TargetFrameworkMoniker (TFM) because it is required to disambiguate the UWP case where TFM is fixed at .NETCore,Version=v5.0 and
5054 has floating NTM=UAP,Version=vX.Y.Z. However, in other cases (classic PCLs), NTM contains multiple values and that will cause the MSBuild
5055 invocation below to fail by passing invalid properties. Therefore we do not use the NTM if it contains a semicolon.
5056 -->
5057 <PropertyGroup Condition="'$(ReferringTargetFrameworkForProjectReferences)' == ''">
5058 <ReferringTargetFrameworkForProjectReferences Condition="'$(NuGetTargetMoniker)' != '' and !$(NuGetTargetMoniker.Contains(';'))">$(NuGetTargetMoniker)</ReferringTargetFrameworkForProjectReferences>
5059 <ReferringTargetFrameworkForProjectReferences Condition="'$(NuGetTargetMoniker)' == ''">$(TargetFrameworkMoniker)</ReferringTargetFrameworkForProjectReferences>
5060 </PropertyGroup>
5061 <!--
5062 Honor SkipGetTargetFrameworkProperties=true metadata on project references
5063 to mean that the project reference is known not to target multiple frameworks
5064 and the mechanism here for selecting the best one can be skipped as an optimization.
5065
5066 We give this treatment to .vcxproj by default since no .vcxproj can target more
5067 than one framework currently. The user must specify exactly one TargetFramework.
5068
5069 vcxproj files compile down to OS-specific binaries, either native or .NET. In the
5070 _GetProjectReferenceTargetFrameworkProperties target of Microsoft.Common.CurrentVersion.targets,
5071 SkipTargetFrameworkProperties is set to true for vcxproj to account for that.
5072
5073 This means we do not fill the Item _ProjectReferenceTargetFrameworkPossibilities or, by extension,
5074 the AnnotatedProjects Item.
5075
5076 For single-targeted projects, we normally decorate the AnnotatedProjects Item with
5077 UndefineProperties metadata specifying that TargetFramework should be undefined. Because it
5078 isn't defined properly at that stage, however, this does not happen, and TargetFramework is
5079 defined at this point in addition to having been defined globally. Currently, this is always
5080 true for vcxproj.
5081
5082 MSBuild permits building the same project twice as long as it has different sets of global properties.
5083 Because the TargetFramework global property is not being removed as expected by the multitargeting
5084 part of MSBuild, the engine recognizes that there are differences and builds it twice. This can
5085 become more noticeable if the projects build in parallel, since they could try to access the same
5086 resources and conflict, failing the build. Note, however, that building the same project twice in
5087 this way is always wrong even if it seems minor because they do not conflict, and the second build is
5088 relatively fast.
5089 -->
5090 <ItemGroup>
5091 <_MSBuildProjectReferenceExistent Condition="'%(_MSBuildProjectReferenceExistent.SkipGetTargetFrameworkProperties)' == '' and ('%(Extension)' == '.vcxproj' or '%(Extension)' == '.nativeproj')">
5092 <SkipGetTargetFrameworkProperties>true</SkipGetTargetFrameworkProperties>
5093 <UndefineProperties>%(_MSBuildProjectReferenceExistent.UndefineProperties);TargetFramework</UndefineProperties>
5094 </_MSBuildProjectReferenceExistent>
5095 </ItemGroup>
5096 <!--
5097 Allow project references to specify which target framework properties to set and their values
5098 without consulting the referenced project. This has two use cases:
5099
5100 1. A caller may wish to pick a compatible but sub-optimal target framework. For example,
5101 to unit test the .NETStandard implementation using a .NETFramework caller even though
5102 there is also a .NETFramework implementation.
5103
5104 2. As an escape hatch for cases where the compatibility check performed by
5105 GetTargetFrameworkProperties is faulty.
5106 -->
5107 <ItemGroup>
5108 <_MSBuildProjectReferenceExistent Condition="'%(_MSBuildProjectReferenceExistent.SetTargetFramework)' != ''">
5109 <SkipGetTargetFrameworkProperties>true</SkipGetTargetFrameworkProperties>
5110 </_MSBuildProjectReferenceExistent>
5111 </ItemGroup>
5112 <!--
5113 Get reference target framework lists.
5114 Note: A future optimization could cache the closest match and set the target framework on
5115 this MSBuild task invocation. This would (optimistically) save an evaluation of the referenced
5116 project when the answer is the same.
5117 -->
5118 <MSBuild Projects="@(_MSBuildProjectReferenceExistent)" Targets="GetTargetFrameworks" BuildInParallel="$(BuildInParallel)" Properties="%(_MSBuildProjectReferenceExistent.SetConfiguration); %(_MSBuildProjectReferenceExistent.SetPlatform)" ContinueOnError="!$(BuildingProject)" RemoveProperties="%(_MSBuildProjectReferenceExistent.GlobalPropertiesToRemove);TargetFramework;RuntimeIdentifier$(_GlobalPropertiesToRemoveFromProjectReferences)" Condition="'%(_MSBuildProjectReferenceExistent.SkipGetTargetFrameworkProperties)' != 'true'" SkipNonexistentTargets="true">
5119 <Output TaskParameter="TargetOutputs" ItemName="_ProjectReferenceTargetFrameworkPossibilities" />
5120 </MSBuild>
5121 <ItemGroup>
5122 <!--
5123 Preserve the ItemSpec value on the _ProjectReferenceTargetFrameworkPossibilities. Because relative paths in another project
5124 context would be incorrect, the MSBuild task invocation needs expands the project reference paths in the MSBuild task above.
5125 This is generally OK, but if the list is copied the OriginalItemSpec can become the expanded value and cause issues correlating
5126 a project reference back to an Item instance.
5127 -->
5128 <_ProjectReferenceTargetFrameworkPossibilitiesOriginalItemSpec Include="@(_ProjectReferenceTargetFrameworkPossibilities->'%(OriginalItemSpec)')" />
5129 <_ProjectReferenceTargetFrameworkPossibilities Remove="@(_ProjectReferenceTargetFrameworkPossibilities)" />
5130 <_ProjectReferenceTargetFrameworkPossibilities Include="@(_ProjectReferenceTargetFrameworkPossibilitiesOriginalItemSpec)" />
5131 </ItemGroup>
5132 <!-- For each reference, get closest match -->
5133 <!-- Pass the CurrentProjectTargetPlatform parameter to the task only if GetReferenceNearestTargetFrameworkTaskSupportsTargetPlatformParameter is true. This means
5134 that we are using a version of NuGet which supports that parameter on this task. -->
5135 <GetReferenceNearestTargetFrameworkTask AnnotatedProjectReferences="@(_ProjectReferenceTargetFrameworkPossibilities)" CurrentProjectTargetFramework="$(ReferringTargetFrameworkForProjectReferences)" CurrentProjectTargetPlatform="$(TargetPlatformMoniker)" CurrentProjectName="$(MSBuildProjectName)" FallbackTargetFrameworks="$(AssetTargetFallback)" Condition="'@(_ProjectReferenceTargetFrameworkPossibilities-&gt;Count())' != '0' and '$(ReferringTargetFrameworkForProjectReferences)' != ''&#xD;&#xA; And '$(GetReferenceNearestTargetFrameworkTaskSupportsTargetPlatformParameter)' == 'true'">
5136 <Output ItemName="AnnotatedProjects" TaskParameter="AssignedProjects" />
5137 </GetReferenceNearestTargetFrameworkTask>
5138 <GetReferenceNearestTargetFrameworkTask AnnotatedProjectReferences="@(_ProjectReferenceTargetFrameworkPossibilities)" CurrentProjectTargetFramework="$(ReferringTargetFrameworkForProjectReferences)" CurrentProjectName="$(MSBuildProjectName)" FallbackTargetFrameworks="$(AssetTargetFallback)" Condition="'@(_ProjectReferenceTargetFrameworkPossibilities-&gt;Count())' != '0' and '$(ReferringTargetFrameworkForProjectReferences)' != ''&#xD;&#xA; And '$(GetReferenceNearestTargetFrameworkTaskSupportsTargetPlatformParameter)' != 'true'">
5139 <Output ItemName="AnnotatedProjects" TaskParameter="AssignedProjects" />
5140 </GetReferenceNearestTargetFrameworkTask>
5141 <ItemGroup>
5142 <!--
5143 If the task was skipped or the current TargetFramework is empty, AnnotatedProjects will be empty.
5144 In this case, copy _ProjectReferenceTargetFrameworkPossibilities as is. See:
5145 https://github.com/dotnet/sdk/issues/416
5146 -->
5147 <AnnotatedProjects Include="@(_ProjectReferenceTargetFrameworkPossibilities)" Condition="'$(ReferringTargetFrameworkForProjectReferences)' == ''" />
5148 <!-- If the NearestTargetFramework property was set and the project multi-targets, SetTargetFramework must be set. -->
5149 <AnnotatedProjects Condition="'@(AnnotatedProjects)' == '%(Identity)' and '%(AnnotatedProjects.NearestTargetFramework)' != '' and '%(AnnotatedProjects.HasSingleTargetFramework)' != 'true'">
5150 <SetTargetFramework>TargetFramework=%(AnnotatedProjects.NearestTargetFramework)</SetTargetFramework>
5151 </AnnotatedProjects>
5152 <!--
5153 If the NearestTargetFramework property was not set or the project has a single TargetFramework, we need to Undefine
5154 TargetFramework to avoid another project evaluation.
5155 -->
5156 <AnnotatedProjects Condition="'@(AnnotatedProjects)' == '%(Identity)' and ('%(AnnotatedProjects.NearestTargetFramework)' == '' or '%(AnnotatedProjects.HasSingleTargetFramework)' == 'true')">
5157 <UndefineProperties>%(AnnotatedProjects.UndefineProperties);TargetFramework</UndefineProperties>
5158 </AnnotatedProjects>
5159 <!-- If the project is RID agnostic, undefine the RuntimeIdentifier property to avoid another evaluation. -->
5160 <AnnotatedProjects Condition="'@(AnnotatedProjects)' == '%(Identity)' and '%(AnnotatedProjects.IsRidAgnostic)' == 'true'">
5161 <UndefineProperties>%(AnnotatedProjects.UndefineProperties);RuntimeIdentifier</UndefineProperties>
5162 </AnnotatedProjects>
5163 <!--
5164 Remove the items we've touched from _MSBuildProjectReferenceExistent. This will leave all projects where
5165 SkipGetTargetFrameworkProperties was set. Then add all AnnotatedProjects back.
5166 -->
5167 <_MSBuildProjectReferenceExistent Remove="@(_MSBuildProjectReferenceExistent)" Condition="'%(_MSBuildProjectReferenceExistent.SkipGetTargetFrameworkProperties)' != 'true'" />
5168 <_MSBuildProjectReferenceExistent Include="@(AnnotatedProjects)" />
5169 </ItemGroup>
5170 </Target>
5171 <Target Name="GetTargetFrameworks" DependsOnTargets="GetTargetFrameworksWithPlatformForSingleTargetFramework" Returns="@(_ThisProjectBuildMetadata)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5172 <Error Condition="'$(IsCrossTargetingBuild)' == 'true'" Text="Internal MSBuild error: Non-CrossTargeting GetTargetFrameworks target should not be used in cross targeting (outer) build" />
5173 <CombineXmlElements RootElementName="AdditionalProjectProperties" XmlElements="@(_TargetFrameworkInfo->'%(AdditionalPropertiesFromProject)')">
5174 <Output TaskParameter="Result" PropertyName="_AdditionalPropertiesFromProject" />
5175 </CombineXmlElements>
5176 <ItemGroup>
5177 <_ThisProjectBuildMetadata Include="$(MSBuildProjectFullPath)">
5178 <TargetFrameworks>@(_TargetFrameworkInfo)</TargetFrameworks>
5179 <TargetFrameworkMonikers>@(_TargetFrameworkInfo->'%(TargetFrameworkMonikers)')</TargetFrameworkMonikers>
5180 <TargetPlatformMonikers>@(_TargetFrameworkInfo->'%(TargetPlatformMonikers)')</TargetPlatformMonikers>
5181 <AdditionalPropertiesFromProject>$(_AdditionalPropertiesFromProject)</AdditionalPropertiesFromProject>
5182 <HasSingleTargetFramework>true</HasSingleTargetFramework>
5183 <!-- indicate to caller that project is RID agnostic so that a global property RuntimeIdentifier value can be removed -->
5184 <IsRidAgnostic>false</IsRidAgnostic>
5185 <IsRidAgnostic Condition=" '$(RuntimeIdentifier)' == '' and '$(RuntimeIdentifiers)' == '' ">true</IsRidAgnostic>
5186 </_ThisProjectBuildMetadata>
5187 </ItemGroup>
5188 </Target>
5189 <Target Name="GetTargetFrameworksWithPlatformForSingleTargetFramework" Returns="@(_TargetFrameworkInfo)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5190 <ItemGroup>
5191 <_AdditionalTargetFrameworkInfoPropertyWithValue Include="@(AdditionalTargetFrameworkInfoProperty)">
5192 <Value>$(%(AdditionalTargetFrameworkInfoProperty.Identity))</Value>
5193 </_AdditionalTargetFrameworkInfoPropertyWithValue>
5194 </ItemGroup>
5195 <CombineTargetFrameworkInfoProperties RootElementName="$(TargetFramework)" PropertiesAndValues="@(_AdditionalTargetFrameworkInfoPropertyWithValue)">
5196 <Output TaskParameter="Result" PropertyName="_AdditionalTargetFrameworkInfoProperties" />
5197 </CombineTargetFrameworkInfoProperties>
5198 <ItemGroup>
5199 <_TargetFrameworkInfo Include="$(TargetFramework)">
5200 <TargetFrameworks>$(TargetFramework)</TargetFrameworks>
5201 <TargetFrameworkMonikers>$(TargetFrameworkMoniker)</TargetFrameworkMonikers>
5202 <TargetPlatformMonikers>$(TargetPlatformMoniker)</TargetPlatformMonikers>
5203 <TargetPlatformMonikers Condition="'$(TargetPlatformMoniker)' == ''">None</TargetPlatformMonikers>
5204 <AdditionalPropertiesFromProject>$(_AdditionalTargetFrameworkInfoProperties)</AdditionalPropertiesFromProject>
5205 </_TargetFrameworkInfo>
5206 </ItemGroup>
5207 </Target>
5208 <!--
5209 ============================================================
5210 GetTargetFrameworkProperties
5211
5212 Overrridden by cross-targeting projects to return the set of
5213 properties (in the form "key1=value1;...keyN=valueN") needed
5214 to build it with the best target for the referring project's
5215 target framework.
5216
5217 The referring project's $(TargetFrameworkMoniker) is passed
5218 in as $(ReferringTargetFramework)
5219 -->
5220 <Target Name="GetTargetFrameworkProperties" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
5221 <!--
5222 ============================================================
5223 PrepareProjectReferences
5224
5225 Prepares project references for consumption by other targets.
5226
5227 [IN]
5228 @(ProjectReference) - The list of project references.
5229
5230 [OUT]
5231 @(ProjectReferenceWithConfiguration) - Project references with apporpriate metadata
5232 @(_MSBuildProjectReferenceExistent) - Subset of @(ProjectReferenceWithConfiguration) that exist
5233 with added SetTargetFramework metadata for cross-targeting
5234 @(_MSBuildProjectReferenceNonExistent) - Subset of @(ProjectReferenceWithConfiguration) that do not exist
5235 ============================================================
5236 -->
5237 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5238 <PrepareProjectReferencesDependsOn>
5239 AssignProjectConfiguration;
5240 _SplitProjectReferencesByFileExistence;
5241 _GetProjectReferenceTargetFrameworkProperties
5242 </PrepareProjectReferencesDependsOn>
5243 </PropertyGroup>
5244 <Target Name="PrepareProjectReferences" DependsOnTargets="$(PrepareProjectReferencesDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
5245 <!--
5246 ============================================================
5247 ResolveProjectReferences
5248
5249 Build referenced projects:
5250
5251 [IN]
5252 @(ProjectReferenceWithConfiguration) - The list of project references.
5253
5254 [OUT]
5255 @(_ResolvedNativeProjectReferencePaths) - Paths to referenced native projects.
5256 @(_ResolvedProjectReferencePaths) - Paths to referenced managed projects.
5257 ============================================================
5258 -->
5259 <!-- By default, the outputs of project references are passed to the compiler -->
5260 <ItemDefinitionGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5261 <ProjectReference>
5262 <!-- Target to build in the project reference; by default, this property is blank, indicating the default targets-->
5263 <Targets>$(ProjectReferenceBuildTargets)</Targets>
5264 <!-- Extra item type to emit outputs of the destination into. Defaults to blank. To emit only into this list, set the ReferenceOutputAssembly metadata to false as well. -->
5265 <OutputItemType />
5266 <ReferenceSourceTarget>ProjectReference</ReferenceSourceTarget>
5267 </ProjectReference>
5268 </ItemDefinitionGroup>
5269 <Target Name="ResolveProjectReferences" DependsOnTargets="PrepareProjectReferences" Returns="@(_ResolvedNativeProjectReferencePaths);@(_ResolvedProjectReferencePaths)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5270 <!--
5271 When building this project from the IDE, just gather the referenced build outputs.
5272 The IDE will already have built the project, so there's no need to do it again here.
5273
5274 The ContinueOnError setting is here so that, during project load, as
5275 much information as possible will be passed to the compilers.
5276 -->
5277 <MSBuild Projects="@(_MSBuildProjectReferenceExistent)" Targets="GetTargetPath" BuildInParallel="$(BuildInParallel)" Properties="%(_MSBuildProjectReferenceExistent.SetConfiguration); %(_MSBuildProjectReferenceExistent.SetPlatform); %(_MSBuildProjectReferenceExistent.SetTargetFramework)" Condition="'%(_MSBuildProjectReferenceExistent.BuildReference)' == 'true' and '@(ProjectReferenceWithConfiguration)' != '' and ('$(BuildingInsideVisualStudio)' == 'true' or '$(BuildProjectReferences)' != 'true') and '$(VisualStudioVersion)' != '10.0' and '@(_MSBuildProjectReferenceExistent)' != ''" ContinueOnError="!$(BuildingProject)" RemoveProperties="%(_MSBuildProjectReferenceExistent.GlobalPropertiesToRemove)$(_GlobalPropertiesToRemoveFromProjectReferences)">
5278 <Output TaskParameter="TargetOutputs" ItemName="_ResolvedProjectReferencePaths" Condition="'%(_MSBuildProjectReferenceExistent.ReferenceOutputAssembly)'=='true'" />
5279 <Output TaskParameter="TargetOutputs" ItemName="%(_MSBuildProjectReferenceExistent.OutputItemType)" Condition="'%(_MSBuildProjectReferenceExistent.OutputItemType)' != ''" />
5280 </MSBuild>
5281 <!--
5282 Build referenced projects when building from the command line.
5283 -->
5284 <MSBuild Projects="@(_MSBuildProjectReferenceExistent)" Targets="%(_MSBuildProjectReferenceExistent.Targets)" BuildInParallel="$(BuildInParallel)" Properties="%(_MSBuildProjectReferenceExistent.SetConfiguration); %(_MSBuildProjectReferenceExistent.SetPlatform); %(_MSBuildProjectReferenceExistent.SetTargetFramework)" Condition="'%(_MSBuildProjectReferenceExistent.BuildReference)' == 'true' and '@(ProjectReferenceWithConfiguration)' != '' and '$(BuildingInsideVisualStudio)' != 'true' and '$(BuildProjectReferences)' == 'true' and '@(_MSBuildProjectReferenceExistent)' != ''" ContinueOnError="$(ContinueOnError)" RemoveProperties="%(_MSBuildProjectReferenceExistent.GlobalPropertiesToRemove)$(_GlobalPropertiesToRemoveFromProjectReferences)">
5285 <Output TaskParameter="TargetOutputs" ItemName="_ResolvedProjectReferencePaths" Condition="'%(_MSBuildProjectReferenceExistent.ReferenceOutputAssembly)'=='true' or '$(DesignTimeBuild)' == 'true'" />
5286 <Output TaskParameter="TargetOutputs" ItemName="%(_MSBuildProjectReferenceExistent.OutputItemType)" Condition="'%(_MSBuildProjectReferenceExistent.OutputItemType)' != ''" />
5287 </MSBuild>
5288 <!--
5289 Get manifest items from the (non-exe) built project references (to feed them into ResolveNativeReference).
5290 -->
5291 <MSBuild Projects="@(_MSBuildProjectReferenceExistent)" Targets="GetNativeManifest" BuildInParallel="$(BuildInParallel)" Properties="%(_MSBuildProjectReferenceExistent.SetConfiguration); %(_MSBuildProjectReferenceExistent.SetPlatform); %(_MSBuildProjectReferenceExistent.SetTargetFramework)" Condition="'%(_MSBuildProjectReferenceExistent.BuildReference)' == 'true' and '@(ProjectReferenceWithConfiguration)' != '' and '$(BuildingProject)' == 'true' and '@(_MSBuildProjectReferenceExistent)' != ''" ContinueOnError="$(ContinueOnError)" SkipNonexistentTargets="true" RemoveProperties="%(_MSBuildProjectReferenceExistent.GlobalPropertiesToRemove)$(_GlobalPropertiesToRemoveFromProjectReferences)">
5292 <Output TaskParameter="TargetOutputs" ItemName="NativeReference" Condition="'%(_MSBuildProjectReferenceExistent.ReferenceOutputAssembly)' == 'true'" />
5293 </MSBuild>
5294 <ItemGroup>
5295 <_ResolvedProjectReferencePaths Remove="@(_ResolvedProjectReferencePaths)" Condition="'%(_ResolvedProjectReferencePaths.ResolveableAssembly)' == 'false'" />
5296 <!--
5297 Copy OriginalItemSpec to OriginalProjectReferenceItemSpec, so that when ResolveAssemblyReferences
5298 takes these items and resolves them to ReferencePath, we can still recover the _real_ OriginalItemSpec
5299 for the unresolved reference items.
5300 -->
5301 <_ResolvedProjectReferencePaths>
5302 <OriginalProjectReferenceItemSpec>%(_ResolvedProjectReferencePaths.OriginalItemSpec)</OriginalProjectReferenceItemSpec>
5303 </_ResolvedProjectReferencePaths>
5304 </ItemGroup>
5305 <!-- Issue a warning for each non-existent project. -->
5306 <Warning Text="The referenced project '%(_MSBuildProjectReferenceNonexistent.Identity)' does not exist." Condition="'@(ProjectReferenceWithConfiguration)' != '' and '@(_MSBuildProjectReferenceNonexistent)' != ''" />
5307 </Target>
5308 <Target Name="ResolveProjectReferencesDesignTime" Returns="@(_ProjectReferencesFromRAR);@(_ResolvedNativeProjectReferencePaths)" DependsOnTargets="ResolveProjectReferences;ResolveAssemblyReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5309 <!-- We need to do this here because we only want project references which have passed through rar and have not been unresolved due to violating some MT rule
5310 which means we need to pull the project references out of the referencepath item because they will only exist there if they were correctly resolved.
5311 -->
5312 <ItemGroup>
5313 <_ProjectReferencesFromRAR Include="@(ReferencePath-&gt;WithMetadataValue('ReferenceSourceTarget', 'ProjectReference'))">
5314 <OriginalItemSpec>%(ReferencePath.ProjectReferenceOriginalItemSpec)</OriginalItemSpec>
5315 </_ProjectReferencesFromRAR>
5316 </ItemGroup>
5317 </Target>
5318 <Target Name="ExpandSDKReferencesDesignTime" Returns="@(ReferencesFromSDK)" DependsOnTargets="ExpandSDKReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
5319 <!--
5320 ============================================================
5321 GetTargetPath
5322
5323 This target returns an item containing the build product (i.e. EXE, DLL)
5324 that would be produced if we built this project, with some relevant
5325 metadata.
5326 ============================================================
5327 -->
5328 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5329 <GetTargetPathDependsOn>$(GetTargetPathDependsOn)</GetTargetPathDependsOn>
5330 </PropertyGroup>
5331 <Target Name="GetTargetPath" DependsOnTargets="$(GetTargetPathDependsOn)" Returns="@(TargetPathWithTargetPlatformMoniker)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
5332 <!--
5333 ============================================================
5334 GetTargetPathWithTargetPlatformMoniker
5335
5336 This stand-alone target returns the name and version of the target platform for this project.
5337
5338 NOTE: The ProjectReference protocol uses only GetTargetPath. Computing the item
5339 in this target allows projects to override GetTargetPath without having to reimplement
5340 the details of the metadata computation.
5341 ============================================================
5342 -->
5343 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5344 <GetTargetPathWithTargetPlatformMonikerDependsOn>$(GetTargetPathDependsOn)</GetTargetPathWithTargetPlatformMonikerDependsOn>
5345 </PropertyGroup>
5346 <!--NOTE: since an overridden GetTargetPath might not include a DependsOn
5347 for this target, it's safer to establish the dependency here with a
5348 BeforeTargets. -->
5349 <Target Name="GetTargetPathWithTargetPlatformMoniker" BeforeTargets="GetTargetPath" DependsOnTargets="$(GetTargetPathWithTargetPlatformMonikerDependsOn)" Returns="@(TargetPathWithTargetPlatformMoniker)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5350 <ItemGroup>
5351 <TargetPathWithTargetPlatformMoniker Include="$(TargetPath)">
5352 <TargetPlatformMoniker>$(TargetPlatformMoniker)</TargetPlatformMoniker>
5353 <TargetPlatformIdentifier>$(TargetPlatformIdentifier)</TargetPlatformIdentifier>
5354 <TargetFrameworkIdentifier>$(TargetFrameworkIdentifier)</TargetFrameworkIdentifier>
5355 <TargetFrameworkVersion>$(TargetFrameworkVersion.TrimStart('vV'))</TargetFrameworkVersion>
5356 <ReferenceAssembly Condition="'$(ProduceReferenceAssembly)' == 'true'">$(TargetRefPath)</ReferenceAssembly>
5357 <CopyUpToDateMarker>@(CopyUpToDateMarker)</CopyUpToDateMarker>
5358 </TargetPathWithTargetPlatformMoniker>
5359 </ItemGroup>
5360 </Target>
5361 <!--
5362 ============================================================
5363 GetNativeManifest
5364
5365 Compute the manifest item for this project.
5366
5367 [IN]
5368 $(_DeploymentApplicationManifestIdentity) - the manifest identity
5369 @(ApplicationManifest) - the original application manifest item
5370
5371 [OUT]
5372 @(ComputedApplicationManifest) - application manifest item with full hint path, if generated
5373 ============================================================
5374 -->
5375 <Target Name="GetNativeManifest" Returns="@(ComputedApplicationManifest)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5376 <ItemGroup>
5377 <ComputedApplicationManifest Include="$(_DeploymentApplicationManifestIdentity)" Condition="'$(OutputType)'!='winexe' and '$(OutputType)'!='exe' and '$(OutputType)'!='appcontainerexe' and Exists('%(_ApplicationManifestFinal.FullPath)')">
5378 <HintPath>%(_ApplicationManifestFinal.FullPath)</HintPath>
5379 </ComputedApplicationManifest>
5380 </ItemGroup>
5381 </Target>
5382 <!--
5383 ============================================================
5384 ResolveNativeReferences
5385
5386 Resolve native references
5387
5388 [IN]
5389 @(NativeReference) - The manifest reference (or list of manifest references)
5390
5391 [OUT]
5392 @(NativeReferenceFile) - List of manifest files referenced.
5393 @(_DeploymentNativePrerequisite) - List of native assembly prerequisites contained in the manifest.
5394 @(ComClassReference) - List of COM components contained in the manifest.
5395 @(COMReferenceFromNative) List of type libraries contained in the manifest.
5396 @(COMFileReference) - List of loose files contained in the manifest.
5397 @(_DeploymentLooseManifestFile) - List of extra files that should be published.
5398 ============================================================
5399 -->
5400 <Target Name="ResolveNativeReferences" Condition="'@(NativeReference)'!=''" DependsOnTargets="ResolveProjectReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5401 <ResolveNativeReference NativeReferences="@(NativeReference)" AdditionalSearchPaths="$(ReferencePath);$(OutDir)">
5402 <Output TaskParameter="ContainingReferenceFiles" ItemName="NativeReferenceFile" />
5403 <Output TaskParameter="ContainedPrerequisiteAssemblies" ItemName="_DeploymentNativePrerequisite" />
5404 <Output TaskParameter="ContainedComComponents" ItemName="ComClassReference" />
5405 <Output TaskParameter="ContainedTypeLibraries" ItemName="COMReferenceFromNative" />
5406 <Output TaskParameter="ContainedLooseTlbFiles" ItemName="COMFileReference" />
5407 <Output TaskParameter="ContainedLooseEtcFiles" ItemName="_DeploymentLooseManifestFile" />
5408 </ResolveNativeReference>
5409 </Target>
5410 <!--
5411 ============================================================
5412
5413 ResolveAssemblyReferences
5414
5415 Given the list of assemblies, find the closure of all assemblies that they depend on. These are
5416 what we need to copy to the output directory.
5417
5418 [IN]
5419 @(Reference) - List of assembly references as fusion names.
5420 @(_ResolvedProjectReferencePaths) - List of project references produced by projects that this project depends on.
5421
5422 The 'Private' attribute on the reference corresponds to the Copy Local flag in IDE.
5423 The 'Private' flag can have three possible values:
5424 - 'True' means the reference should be Copied Local
5425 - 'False' means the reference should not be Copied Local
5426 - [Missing] means this task will decide whether to treat this reference as CopyLocal or not.
5427
5428 [OUT]
5429 @(ReferencePath) - Paths to resolved primary files.
5430 @(ReferenceDependencyPaths) - Paths to resolved dependency files.
5431 @(_ReferenceRelatedPaths) - Paths to .xmls and .pdbs.
5432 @(ReferenceSatellitePaths) - Paths to satellites.
5433 @(_ReferenceSerializationAssemblyPaths) - Paths to XML serialization assemblies created by sgen.
5434 @(_ReferenceScatterPaths) - Paths to scatter files.
5435 @(ReferenceCopyLocalPaths) - Paths to files that should be copied to the local directory.
5436 ============================================================
5437 -->
5438 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5439 <ResolveAssemblyReferencesDependsOn>
5440 ResolveProjectReferences;
5441 FindInvalidProjectReferences;
5442 GetFrameworkPaths;
5443 GetReferenceAssemblyPaths;
5444 PrepareForBuild;
5445 ResolveSDKReferences;
5446 ExpandSDKReferences;
5447 </ResolveAssemblyReferencesDependsOn>
5448 </PropertyGroup>
5449 <Target Name="ResolveAssemblyReferences" Returns="@(ReferencePath)" DependsOnTargets="$(ResolveAssemblyReferencesDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5450 <ItemGroup>
5451 <_ReferenceInstalledAssemblyDirectory Include="$(TargetFrameworkDirectory)" />
5452 <_ReferenceInstalledAssemblySubsets Include="$(TargetFrameworkSubset)" />
5453 </ItemGroup>
5454 <!--
5455 Only read and write cache file at build time, skip it for load time because its more
5456 expensive to write the newly created cache file.
5457 -->
5458 <PropertyGroup>
5459 <ResolveAssemblyReferencesStateFile Condition="'$(DisableRarCache)'!='true' and '$(ResolveAssemblyReferencesStateFile)' == ''">$(IntermediateOutputPath)$(MSBuildProjectFile).AssemblyReference.cache</ResolveAssemblyReferencesStateFile>
5460 </PropertyGroup>
5461 <!-- Make an App.Config item that exists when AutoUnify is false. -->
5462 <ItemGroup>
5463 <_ResolveAssemblyReferencesApplicationConfigFileForExes Include="@(AppConfigWithTargetPath)" Condition="'$(AutoGenerateBindingRedirects)'=='true' or '$(AutoUnifyAssemblyReferences)'=='false'" />
5464 </ItemGroup>
5465 <PropertyGroup>
5466 <!-- Default in task is true -->
5467 <_FindDependencies Condition="'$(BuildingProject)' != 'true' and '$(_ResolveReferenceDependencies)' != 'true'">false</_FindDependencies>
5468 <ResolveAssemblyReferencesSilent Condition="'$(ResolveAssemblyReferencesSilent)' == '' and '$(TraceDesignTime)' != 'true' and '$(BuildingProject)' == 'false'">true</ResolveAssemblyReferencesSilent>
5469 <ResolveAssemblyReferencesSilent Condition="'$(ResolveAssemblyReferencesSilent)' == ''">false</ResolveAssemblyReferencesSilent>
5470 <ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch Condition="'$(ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch)' == ''">Warning</ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
5471 <ResolveAssemblyReferencesFindRelatedSatellites Condition="'$(ResolveAssemblyReferencesFindRelatedSatellites)' == ''">$(BuildingProject)</ResolveAssemblyReferencesFindRelatedSatellites>
5472 <ResolveAssemblyReferencesFindSerializationAssemblies Condition="'$(ResolveAssemblyReferencesFindSerializationAssemblies)' == ''">$(BuildingProject)</ResolveAssemblyReferencesFindSerializationAssemblies>
5473 <ResolveAssemblyReferencesFindRelatedFiles Condition="'$(ResolveAssemblyReferencesFindRelatedFiles)' == ''">$(BuildingProject)</ResolveAssemblyReferencesFindRelatedFiles>
5474 <ResolveAssemblyReferenceOutputUnresolvedAssemblyConflicts Condition="'$(ResolveAssemblyReferenceOutputUnresolvedAssemblyConflicts)' == ''">false</ResolveAssemblyReferenceOutputUnresolvedAssemblyConflicts>
5475 </PropertyGroup>
5476 <ItemGroup>
5477 <!-- Remove any references which we have added as explicit reference so that we do not get duplicates. We need to make sure we do not have duplicates
5478 because this confuses the IDE when it tries to compare the list of references passed in to the list of resolved references. If it does not match then the
5479 ide will show one of the references as not resolved, this will not break the build but is a display issue -->
5480 <Reference Remove="$(AdditionalExplicitAssemblyReferences)" />
5481 <Reference Include="$(AdditionalExplicitAssemblyReferences)">
5482 <Implicit>true</Implicit>
5483 </Reference>
5484 </ItemGroup>
5485 <!--
5486 Normally, as an optimization, finding dependencies of references marked with ExternallyResolved=true metadata is skipped.
5487 However, skipping that step breaks binding redirect generation when there are conflicting versions within the externally
5488 resolved graph.
5489 -->
5490 <PropertyGroup Condition="'$(FindDependenciesOfExternallyResolvedReferences)' == ''">
5491 <FindDependenciesOfExternallyResolvedReferences>false</FindDependenciesOfExternallyResolvedReferences>
5492 <FindDependenciesOfExternallyResolvedReferences Condition="'$(AutoGenerateBindingRedirects)' == 'true'">true</FindDependenciesOfExternallyResolvedReferences>
5493 </PropertyGroup>
5494 <ResolveAssemblyReference Assemblies="@(Reference)" AssemblyFiles="@(_ResolvedProjectReferencePaths);@(_ExplicitReference)" TargetFrameworkDirectories="@(_ReferenceInstalledAssemblyDirectory)" InstalledAssemblyTables="@(InstalledAssemblyTables);@(RedistList)" IgnoreDefaultInstalledAssemblyTables="$(IgnoreDefaultInstalledAssemblyTables)" IgnoreDefaultInstalledAssemblySubsetTables="$(IgnoreInstalledAssemblySubsetTables)" CandidateAssemblyFiles="@(Content);@(None)" SearchPaths="$(AssemblySearchPaths)" AllowedAssemblyExtensions="$(AllowedReferenceAssemblyFileExtensions)" AllowedRelatedFileExtensions="$(AllowedReferenceRelatedFileExtensions)" TargetProcessorArchitecture="$(ProcessorArchitecture)" AppConfigFile="@(_ResolveAssemblyReferencesApplicationConfigFileForExes)" AutoUnify="$(AutoUnifyAssemblyReferences)" SupportsBindingRedirectGeneration="$(GenerateBindingRedirectsOutputType)" IgnoreVersionForFrameworkReferences="$(IgnoreVersionForFrameworkReferences)" FindDependencies="$(_FindDependencies)" FindSatellites="$(ResolveAssemblyReferencesFindRelatedSatellites)" FindSerializationAssemblies="$(ResolveAssemblyReferencesFindSerializationAssemblies)" FindRelatedFiles="$(ResolveAssemblyReferencesFindRelatedFiles)" Silent="$(ResolveAssemblyReferencesSilent)" TargetFrameworkVersion="$(TargetFrameworkVersion)" TargetFrameworkMoniker="$(TargetFrameworkMoniker)" TargetFrameworkMonikerDisplayName="$(TargetFrameworkMonikerDisplayName)" TargetedRuntimeVersion="$(TargetedRuntimeVersion)" StateFile="$(ResolveAssemblyReferencesStateFile)" AssemblyInformationCachePaths="$(AssemblyInformationCachePaths)" AssemblyInformationCacheOutputPath="$(AssemblyInformationCacheOutputPath)" InstalledAssemblySubsetTables="@(InstalledAssemblySubsetTables)" TargetFrameworkSubsets="@(_ReferenceInstalledAssemblySubsets)" FullTargetFrameworkSubsetNames="$(FullReferenceAssemblyNames)" FullFrameworkFolders="$(_FullFrameworkReferenceAssemblyPaths)" FullFrameworkAssemblyTables="@(FullFrameworkAssemblyTables)" ProfileName="$(TargetFrameworkProfile)" LatestTargetFrameworkDirectories="@(LatestTargetFrameworkDirectories)" CopyLocalDependenciesWhenParentReferenceInGac="$(CopyLocalDependenciesWhenParentReferenceInGac)" DoNotCopyLocalIfInGac="$(DoNotCopyLocalIfInGac)" ResolvedSDKReferences="@(ResolvedSDKReference)" WarnOrErrorOnTargetArchitectureMismatch="$(ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch)" IgnoreTargetFrameworkAttributeVersionMismatch="$(ResolveAssemblyReferenceIgnoreTargetFrameworkAttributeVersionMismatch)" FindDependenciesOfExternallyResolvedReferences="$(FindDependenciesOfExternallyResolvedReferences)" ContinueOnError="$(ContinueOnError)" OutputUnresolvedAssemblyConflicts="$(ResolveAssemblyReferenceOutputUnresolvedAssemblyConflicts)" Condition="'@(Reference)'!='' or '@(_ResolvedProjectReferencePaths)'!='' or '@(_ExplicitReference)' != ''">
5495 <Output TaskParameter="ResolvedFiles" ItemName="ReferencePath" />
5496 <Output TaskParameter="ResolvedFiles" ItemName="_ResolveAssemblyReferenceResolvedFiles" />
5497 <Output TaskParameter="ResolvedDependencyFiles" ItemName="ReferenceDependencyPaths" />
5498 <Output TaskParameter="RelatedFiles" ItemName="_ReferenceRelatedPaths" />
5499 <Output TaskParameter="SatelliteFiles" ItemName="ReferenceSatellitePaths" />
5500 <Output TaskParameter="SerializationAssemblyFiles" ItemName="_ReferenceSerializationAssemblyPaths" />
5501 <Output TaskParameter="ScatterFiles" ItemName="_ReferenceScatterPaths" />
5502 <Output TaskParameter="CopyLocalFiles" ItemName="ReferenceCopyLocalPaths" />
5503 <Output TaskParameter="SuggestedRedirects" ItemName="SuggestedBindingRedirects" />
5504 <Output TaskParameter="FilesWritten" ItemName="FileWrites" />
5505 <Output TaskParameter="DependsOnSystemRuntime" PropertyName="DependsOnSystemRuntime" />
5506 <Output TaskParameter="DependsOnNETStandard" PropertyName="_DependsOnNETStandard" />
5507 <Output TaskParameter="UnresolvedAssemblyConflicts" ItemName="ResolveAssemblyReferenceUnresolvedAssemblyConflicts" />
5508 </ResolveAssemblyReference>
5509 </Target>
5510 <!--
5511 ============================================================
5512
5513 FindReferenceAssembliesForReferences
5514
5515 Given the list of references, create a list of assemblies to pass to the compiler that
5516 includes reference assemblies rather than implementation assemblies where possible.
5517
5518 [IN]
5519 @(ReferencePath) - List of assembly references as resolved paths with ReferenceAssembly metadata
5520
5521 [OUT]
5522 @(ReferencePathWithRefAssemblies) - Paths to resolved reference (or implementation) assemblies.
5523 ============================================================
5524 -->
5525 <Target Name="FindReferenceAssembliesForReferences" DependsOnTargets="ResolveReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5526 <ItemGroup>
5527 <!-- Reference assemblies are not produced in all cases, but it's easier to consume them
5528 if this metadatum is always populated. Ensure that it points to the implementation
5529 assembly unless already specified. -->
5530 <ReferencePath Condition="'%(ReferencePath.ReferenceAssembly)' == ''">
5531 <ReferenceAssembly>%(FullPath)</ReferenceAssembly>
5532 </ReferencePath>
5533 <ReferencePathWithRefAssemblies Include="@(ReferencePath->'%(ReferenceAssembly)')" Condition="'$(CompileUsingReferenceAssemblies)' != 'false'">
5534 <OriginalPath Condition="'%(ReferencePath.Identity)' != '@(ReferencePath->'%(ReferenceAssembly)')'">%(ReferencePath.Identity)</OriginalPath>
5535 </ReferencePathWithRefAssemblies>
5536 <ReferencePathWithRefAssemblies Include="@(ReferencePath)" Condition="'$(CompileUsingReferenceAssemblies)' == 'false'" />
5537 </ItemGroup>
5538 </Target>
5539 <!--
5540 ====================================================================================================
5541
5542 GenerateBindingRedirects
5543 Inject the binding redirects into the app config file based on suggested redirects as output from
5544 ResolveAssemblyReferences.
5545
5546 [IN]
5547 @(AppConfigWithTargetPath) - Path to the source app config file. This can be null if the project
5548 doesn't contain an app config file.
5549 $(TargetFileName) - The file name of the build target.
5550
5551 [OUT]
5552 @(OutputAppConfigFile) - Path to the output app config file in the intermediate directory.
5553
5554 ====================================================================================================
5555 -->
5556 <Target Name="GenerateBindingRedirects" Inputs="$(MSBuildAllProjects);@(AppConfigFile);$(ResolveAssemblyReferencesStateFile);$(IntermediateOutputPath);@(SuggestedBindingRedirects)" Outputs="$(_GenerateBindingRedirectsIntermediateAppConfig)" Condition="'$(AutoGenerateBindingRedirects)' == 'true' and '$(GenerateBindingRedirectsOutputType)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5557 <GenerateBindingRedirects AppConfigFile="@(AppConfigWithTargetPath)" TargetName="$(TargetFileName).config" OutputAppConfigFile="$(_GenerateBindingRedirectsIntermediateAppConfig)" SuggestedRedirects="@(SuggestedBindingRedirects)">
5558 <Output TaskParameter="OutputAppConfigFile" ItemName="FileWrites" />
5559 </GenerateBindingRedirects>
5560 </Target>
5561 <!--
5562 ====================================================================================================
5563
5564 GenerateBindingRedirectsUpdateAppConfig
5565 Updates the project to use the generated app.config content. This needs to run regardless of
5566 inputs/outputs so it is seperate from GenerateBindingRedirects.
5567 ====================================================================================================
5568 -->
5569 <Target Name="GenerateBindingRedirectsUpdateAppConfig" AfterTargets="GenerateBindingRedirects" Condition="'$(AutoGenerateBindingRedirects)' == 'true' and '$(GenerateBindingRedirectsOutputType)' == 'true' and Exists('$(_GenerateBindingRedirectsIntermediateAppConfig)')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5570 <PropertyGroup>
5571 <AppConfig>$(_GenerateBindingRedirectsIntermediateAppConfig)</AppConfig>
5572 </PropertyGroup>
5573 <ItemGroup>
5574 <AppConfigWithTargetPath Remove="@(AppConfigWithTargetPath)" />
5575 <AppConfigWithTargetPath Include="$(AppConfig)">
5576 <TargetPath>$(TargetFileName).config</TargetPath>
5577 </AppConfigWithTargetPath>
5578 </ItemGroup>
5579 </Target>
5580 <!--
5581 ===========================================================================================
5582 GetInstalledSDKs
5583
5584 Gets the list of SDKs installed in the SDKDirectoryRoot and SDKRegistryRoot locations
5585
5586 These paths are used by the ResolveSDKReference task and the ResolveAssemblyReference task.
5587 ===========================================================================================
5588 -->
5589 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5590 <SDKReferenceRegistryRoot Condition="'$(SDKReferenceRegistryRoot)' == ''">Software\Microsoft\Microsoft SDKs</SDKReferenceRegistryRoot>
5591 <SDKReferenceDirectoryRoot Condition="'$(SDKReferenceDirectoryRoot)' == ''">$(LocalAppData)\Microsoft SDKs;$(MSBuildProgramFiles32)\Microsoft SDKs</SDKReferenceDirectoryRoot>
5592 <!-- Manifest driven extension SDK locations -->
5593 <SDKExtensionDirectoryRoot Condition="'$(SDKExtensionDirectoryRoot)' == '' and '$(SDKIdentifier)' != ''">$(MSBuildProgramFiles32)\Microsoft SDKs\Windows Kits\10;$(MSBuildProgramFiles32)\Windows Kits\10</SDKExtensionDirectoryRoot>
5594 <!-- UAP projects by default should support Windows 8.1 SDKs -->
5595 <SupportWindows81SDKs Condition="'$(SupportWindows81SDKs)' == '' and '$(Support81SDKs)' != 'false' and '$(TargetPlatformIdentifier)' == 'UAP'">true</SupportWindows81SDKs>
5596 <TargetPlatformIdentifierWindows81 Condition="'$(TargetPlatformIdentifierWindows81)' == '' and '$(SupportWindows81SDKs)' == 'true'">Windows</TargetPlatformIdentifierWindows81>
5597 <TargetPlatformVersionWindows81 Condition="'$(TargetPlatformVersionWindows81)' == '' and '$(SupportWindows81SDKs)' == 'true'">8.1</TargetPlatformVersionWindows81>
5598 <!-- Desktop and phone SDKs often have the exact same identifiers, don't enable phone by default -->
5599 <SupportWindowsPhone81SDKs Condition="'$(SupportWindowsPhone81SDKs)' == '' and '$(Support81SDKs)' != 'false' and '$(TargetPlatformIdentifier)' == 'UAP'">false</SupportWindowsPhone81SDKs>
5600 <TargetPlatformIdentifierWindowsPhone81 Condition="'$(TargetPlatformIdentifierWindowsPhone81)' == '' and '$(SupportWindowsPhone81SDKs)' == 'true'">WindowsPhoneApp</TargetPlatformIdentifierWindowsPhone81>
5601 <TargetPlatformVersionWindowsPhone81 Condition="'$(TargetPlatformVersionWindowsPhone81)' == '' and '$(SupportWindowsPhone81SDKs)' == 'true'">8.1</TargetPlatformVersionWindowsPhone81>
5602 </PropertyGroup>
5603 <Target Name="GetInstalledSDKLocations" Condition="'@(SDKReference)' != ''" DependsOnTargets="$(GetInstalledSDKLocationsDependsOn)" Returns="@(InstalledSDKLocations)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5604 <GetInstalledSDKLocations SDKDirectoryRoots="$(SDKReferenceDirectoryRoot)" SDKExtensionDirectoryRoots="$(SDKExtensionDirectoryRoot)" SDKRegistryRoot="$(SDKReferenceRegistryRoot)" TargetPlatformVersion="$(TargetPlatformVersion)" TargetPlatformIdentifier="$(TargetPlatformIdentifier)">
5605 <Output TaskParameter="InstalledSDKs" ItemName="InstalledSDKLocations" />
5606 </GetInstalledSDKLocations>
5607 <!-- Also lookup 8.1 SDKs if requested -->
5608 <GetInstalledSDKLocations SDKDirectoryRoots="$(SDKReferenceDirectoryRoot)" SDKExtensionDirectoryRoots="" SDKRegistryRoot="$(SDKReferenceRegistryRoot)" TargetPlatformVersion="$(TargetPlatformVersionWindows81)" TargetPlatformIdentifier="$(TargetPlatformIdentifierWindows81)" Condition="'$(SupportWindows81SDKs)' == 'true' and '$(TargetPlatformIdentifierWindows81)' != '' and '$(TargetPlatformVersionWindows81)' != ''" WarnWhenNoSDKsFound="false">
5609 <Output TaskParameter="InstalledSDKs" ItemName="InstalledSDKLocations" />
5610 </GetInstalledSDKLocations>
5611 <GetInstalledSDKLocations SDKDirectoryRoots="$(SDKReferenceDirectoryRoot)" SDKExtensionDirectoryRoots="" SDKRegistryRoot="$(SDKReferenceRegistryRoot)" TargetPlatformVersion="$(TargetPlatformVersionWindowsPhone81)" TargetPlatformIdentifier="$(TargetPlatformIdentifierWindowsPhone81)" Condition="'$(SupportWindowsPhone81SDKs)' == 'true' and '$(TargetPlatformIdentifierWindowsPhone81)' != '' and '$(TargetPlatformVersionWindowsPhone81)' != ''" WarnWhenNoSDKsFound="false">
5612 <Output TaskParameter="InstalledSDKs" ItemName="InstalledSDKLocations" />
5613 </GetInstalledSDKLocations>
5614 </Target>
5615 <!--
5616 ============================================================
5617
5618 ResolveSDKReferences
5619
5620 Given a list of SDKReference items and a list of resolved winmd files which may contain metadata as to which sdk they came from
5621 we need to find the sdk root folders on disk and populate a ResolvedSDKReference item which has the full path to the SDK ROOT
5622 and the sdk identity as a piece of metadata.
5623
5624 [IN]
5625 @(SDKReference) - List of sdk references (the identity in the sdk manifest file).
5626 @(ReferencePath) -List of resolved assemblies, we are interested in the ones which have IsWinMDFile set to true.
5627
5628 [OUT]
5629 @(ResolvedSDKReference) - Full path to the root of the SDK
5630 ============================================================
5631 -->
5632 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5633 <ResolveSDKReferencesDependsOn>
5634 GetInstalledSDKLocations
5635 </ResolveSDKReferencesDependsOn>
5636 </PropertyGroup>
5637 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5638 <TargetedSDKConfiguration Condition="'$(TargetedSDKConfiguration)' == '' and '_$(Configuration)' == '_Debug'">Debug</TargetedSDKConfiguration>
5639 <TargetedSDKConfiguration Condition="'$(TargetedSDKConfiguration)' == '' and '_$(Configuration)' == '_Release'">Retail</TargetedSDKConfiguration>
5640 <TargetedSDKConfiguration Condition="'$(TargetedSDKConfiguration)' == ''">Retail</TargetedSDKConfiguration>
5641 <TargetedSDKArchitecture Condition="'$(TargetedSDKArchitecture)' == ''">$(ProcessorArchitecture)</TargetedSDKArchitecture>
5642 <TargetedSDKArchitecture Condition="'$(TargetedSDKArchitecture)' == ''">Neutral</TargetedSDKArchitecture>
5643 </PropertyGroup>
5644 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5645 <ShouldMarkCertainSDKReferencesAsRuntimeOnly Condition="'$(ShouldMarkCertainSDKReferencesAsRuntimeOnly)' == ''">true</ShouldMarkCertainSDKReferencesAsRuntimeOnly>
5646 </PropertyGroup>
5647 <ItemGroup Condition="'$(ShouldMarkCertainSDKReferencesAsRuntimeOnly)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5648 <!-- Dependencies that are specified as runtime-only dependencies. Therefore the associated files are not used to build Appx package. -->
5649 <!-- TODO: Do we need to do anything like this for the new SDK? -->
5650 <RuntimeReferenceOnlySDKDependencies Condition="'$(TargetPlatformVersion)' == '8.1'" Include="Microsoft.VCLibs, Version=11.0" />
5651 </ItemGroup>
5652 <Target Name="ResolveSDKReferences" Returns="@(ResolvedSDKReference)" DependsOnTargets="$(ResolveSDKReferencesDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5653 <ResolveSDKReference SDKReferences="@(SDKReference)" RuntimeReferenceOnlySDKDependencies="@(RuntimeReferenceOnlySDKDependencies)" References="@(Reference)" TargetPlatformVersion="$(TargetPlatformVersion)" TargetPlatformIdentifier="$(TargetPlatformIdentifier)" WarnOnMissingPlatformVersion="$(SDKReferenceWarnOnMissingMaxPlatformVersion)" ProjectName="$(MSBuildProjectName)" TargetedSDKConfiguration="$(TargetedSDKConfiguration)" TargetedSDKArchitecture="$(TargetedSDKArchitecture)" InstalledSDKs="@(InstalledSDKLocations)" LogResolutionErrorsAsWarnings="$(LogSDKReferenceResolutionErrorsAsWarnings)" Prefer32Bit="$(Prefer32Bit)" ContinueOnError="$(ContinueOnError)" Condition="'@(SDKReference)'!=''">
5654 <Output TaskParameter="ResolvedSDKReferences" ItemName="ResolvedSDKReference" />
5655 </ResolveSDKReference>
5656 </Target>
5657 <Target Name="ResolveSDKReferencesDesignTime" Returns="@(ResolvedSDKReference)" DependsOnTargets="ResolveSDKReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
5658 <!--
5659 ============================================================
5660
5661 FindInvalidProjectReferences
5662
5663 Find project to project references with target platform version higher than the one used by the current project and
5664 creates a list of invalid references to be unresolved. It issues a warning for each invalid reference.
5665
5666 [IN]
5667 $(TargetPlatformVersion) - Project's target platform version
5668 @(_ProjectReferenceTargetPlatformMonikers) - List of monikers of all referenced projects gathered by the helper
5669 target GetTargetPlatformMonikers.
5670
5671 [OUT]
5672 @(InvalidProjectReferences) - List of invalid project references
5673
5674 ============================================================
5675 -->
5676 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5677 <FindInvalidProjectReferencesDependsOn>
5678 GetReferenceTargetPlatformMonikers
5679 </FindInvalidProjectReferencesDependsOn>
5680 </PropertyGroup>
5681 <Target Name="FindInvalidProjectReferences" Condition="'$(FindInvalidProjectReferences)' == 'true'" DependsOnTargets="$(FindInvalidProjectReferencesDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5682 <FindInvalidProjectReferences TargetPlatformVersion="$(TargetPlatformVersion)" TargetPlatformIdentifier="$(TargetPlatformIdentifier)" ProjectReferences="@(TargetPathWithTargetPlatformMoniker)">
5683 <Output TaskParameter="InvalidReferences" ItemName="InvalidProjectReferences" />
5684 </FindInvalidProjectReferences>
5685 <ItemGroup>
5686 <_ResolvedProjectReferencePaths Remove="@(InvalidProjectReferences)" />
5687 </ItemGroup>
5688 </Target>
5689 <Target Name="GetReferenceTargetPlatformMonikers" DependsOnTargets="PrepareProjectReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5690 <MSBuild Projects="@(_MSBuildProjectReferenceExistent)" Properties="%(_MSBuildProjectReferenceExistent.SetConfiguration); %(_MSBuildProjectReferenceExistent.SetPlatform); %(_MSBuildProjectReferenceExistent.SetTargetFramework)" Targets="GetTargetPathWithTargetPlatformMoniker" BuildInParallel="$(BuildInParallel)" ContinueOnError="!$(BuildingProject)" RemoveProperties="%(_MSBuildProjectReferenceExistent.GlobalPropertiesToRemove)$(_GlobalPropertiesToRemoveFromProjectReferences)">
5691 <Output TaskParameter="TargetOutputs" ItemName="TargetPathWithTargetPlatformMoniker" />
5692 </MSBuild>
5693 </Target>
5694 <!--
5695 ============================================================
5696
5697 ExpandSDKReferences
5698
5699 After we have resolved the sdk refrence we need to make sure that we automatically include the references which are part of the SDK (both winmd and dll)
5700 as part of the assemblies passed to the compiler.
5701
5702 Project systems or project which do not want to reference all dlls or winmd files should override this target to do nothing.
5703 ============================================================
5704 -->
5705 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5706 <ExpandSDKReferencesDependsOn>
5707 ResolveSDKReferences
5708 </ExpandSDKReferencesDependsOn>
5709 <ExpandSDKAllowedReferenceExtensions Condition="'$(ExpandSDKAllowedReferenceExtensions)' == ''">
5710 .winmd;
5711 .dll
5712 </ExpandSDKAllowedReferenceExtensions>
5713 </PropertyGroup>
5714 <Target Name="ExpandSDKReferences" Returns="@(ReferencesFromSDK)" DependsOnTargets="$(ExpandSDKReferencesDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5715 <GetSDKReferenceFiles ResolvedSDKReferences="@(ResolvedSDKReference)" ReferenceExtensions="$(ExpandSDKAllowedReferenceExtensions)" TargetSDKIdentifier="$(SDKIdentifier)" TargetSDKVersion="$(SDKVersion)" TargetPlatformIdentifier="$(TargetPlatformIdentifier)" TargetPlatformVersion="$(TargetPlatformVersion)" LogRedistFilesList="$(GetSDKReferenceFilesLogRedistFilesList)" LogRedistConflictWithinSDKAsWarning="$(GetSDKReferenceFilesLogRedistConflictsWithinSDKAsWarning)" LogRedistConflictBetweenSDKsAsWarning="$(GetSDKReferenceFilesLogRedistConflictsBetweenSDKsAsWarning)" LogReferencesList="$(GetSDKReferenceFilesLogReferencesList)" LogReferenceConflictWithinSDKAsWarning="$(GetSDKReferenceFilesLogReferenceConflictsWithinSDKAsWarning)" LogReferenceConflictBetweenSDKsAsWarning="$(GetSDKReferenceFilesLogReferenceConflictsBetweenSDKsAsWarning)" CacheFileFolderPath="$(GetSDKReferenceFilesCacheFolder)" LogCacheFileExceptions="$(GetSDKReferenceFilesLogCacheFileExceptions)" Condition="'@(ResolvedSDKReference)'!=''">
5716 <Output TaskParameter="References" ItemName="ReferencePath" />
5717 <Output TaskParameter="References" ItemName="ReferencesFromSDK" />
5718 <Output TaskParameter="References" ItemName="_ResolveAssemblyReferenceResolvedFiles" />
5719 <Output TaskParameter="CopyLocalFiles" ItemName="ReferenceCopyLocalPaths" />
5720 <Output TaskParameter="RedistFiles" ItemName="ResolvedRedistFiles" />
5721 </GetSDKReferenceFiles>
5722 </Target>
5723 <!--
5724 ============================================================
5725
5726 ExportWindowsMDFile
5727
5728 When a project is generating a a winmd file through c# or vb, ect the compiler will create a WinMDModule file. This file needs to be run
5729 through the winmdexp tool in order to generate the resulting WinMD file.
5730
5731 ===========================================================
5732 -->
5733 <Target Name="ExportWindowsMDFile" DependsOnTargets="Compile" Condition="'$(ExportWinMDFile)' == 'true'" Inputs="@(IntermediateAssembly);@(DocFileItem);@(_DebugSymbolsIntermediatePath);@(ReferencePathWithRefAssemblies);$(MSBuildAllProjects)" Outputs="$(_IntermediateWindowsMetadataPath);$(WinMDExpOutputPdb);$(WinMDOutputDocumentationFile)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5734 <PropertyGroup>
5735 <!-- Will be copied by the "copy WinMD artifacts" step instead -->
5736 <CopyBuildOutputToOutputDirectory>false</CopyBuildOutputToOutputDirectory>
5737 <CopyOutputSymbolsToOutputDirectory>false</CopyOutputSymbolsToOutputDirectory>
5738 <CopyDocumentationFileToOutputDirectory>false</CopyDocumentationFileToOutputDirectory>
5739 <WinMdExpToolPath Condition="'$(WinMdExpToolPath)' == ''">$(TargetFrameworkSDKToolsDirectory)</WinMdExpToolPath>
5740 <WinMdExpUTF8Ouput Condition="'$(WinMdExpUTF8Ouput)' == ''">true</WinMdExpUTF8Ouput>
5741 </PropertyGroup>
5742 <WinMDExp WinMDModule="@(IntermediateAssembly)" References="@(ReferencePathWithRefAssemblies)" DisabledWarnings="$(WinMdExpNoWarn)" InputDocumentationFile="@(DocFileItem)" OutputDocumentationFile="$(WinMDOutputDocumentationFile)" TreatWarningsAsErrors="$(TreatWarningsAsErrors)" InputPDBFile="@(_DebugSymbolsIntermediatePath)" OutputPDBFile="$(WinMDExpOutputPdb)" OutputWindowsMetadataFile="$(_IntermediateWindowsMetadataPath)" EnvironmentVariables="$(WinMDExpEnvironment)" UTF8Output="$(WinMdExpUTF8Ouput)" SdkToolsPath="$(WinMdExpToolPath)" AssemblyUnificationPolicy="$(WinMDExpAssemblyUnificationPolicy)">
5743 <Output TaskParameter="OutputWindowsMetadataFile" ItemName="FileWrites" />
5744 </WinMDExp>
5745 <ItemGroup>
5746 <WinMDExpArtifacts Include="$(_IntermediateWindowsMetadataPath)" />
5747 <WinMDExpArtifacts Include="$(WinMDOutputDocumentationFile)" />
5748 <WinMDExpArtifacts Include="$(WinMDExpOutputPdb)" />
5749 <FileWrites Include="$(WinMDOutputDocumentationFile);$(WinMDExpOutputPdb)" />
5750 </ItemGroup>
5751 </Target>
5752 <Target Name="ResolveAssemblyReferencesDesignTime" Returns="@(_ReferencesFromRAR)" DependsOnTargets="ResolveProjectReferences;ResolveAssemblyReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5753 <!-- We need to do this here because we only want references which have been passed into rar but are not project to project references. -->
5754 <ItemGroup>
5755 <_ReferencesFromRAR Include="@(ReferencePath-&gt;WithMetadataValue('ReferenceSourceTarget', 'ResolveAssemblyReference'))" />
5756 </ItemGroup>
5757 </Target>
5758 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5759 <ProjectDesignTimeAssemblyResolutionSearchPaths Condition=" '$(ProjectDesignTimeAssemblyResolutionSearchPaths)' == '' ">
5760 {CandidateAssemblyFiles};
5761 $(ReferencePath);
5762 {HintPathFromItem};
5763 {TargetFrameworkDirectory};
5764 {Registry:$(FrameworkRegistryBase),$(TargetFrameworkVersion),$(AssemblyFoldersSuffix)$(AssemblyFoldersExConditions)};
5765 {RawFileName};
5766 $(TargetDir)
5767 </ProjectDesignTimeAssemblyResolutionSearchPaths>
5768 </PropertyGroup>
5769 <!--
5770 ==============================================================
5771
5772 DesignTimeResolveAssemblyReferences
5773
5774 Given the list of assemblies, resolve their reference paths.
5775 This target is called by Visual Studio at run time in order to filter references
5776 according to the targeted framework.
5777
5778 [IN]
5779 @(DesignTimeReference) - List of assembly references as simple/fusion names.
5780
5781 [OUT]
5782 @(ReferencePath) - Paths to resolved primary files.
5783
5784 ==============================================================
5785 -->
5786 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5787 <DesignTimeResolveAssemblyReferencesDependsOn>
5788 GetFrameworkPaths;
5789 GetReferenceAssemblyPaths;
5790 ResolveReferences
5791 </DesignTimeResolveAssemblyReferencesDependsOn>
5792 </PropertyGroup>
5793 <Target Name="DesignTimeResolveAssemblyReferences" Condition="'$(DesignTimeReference)'!=''" DependsOnTargets="$(DesignTimeResolveAssemblyReferencesDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5794 <ItemGroup>
5795 <_DesignTimeReferenceInstalledAssemblyDirectory Include="$(TargetFrameworkDirectory)" />
5796 </ItemGroup>
5797 <PropertyGroup>
5798 <DesignTimeResolveAssemblyReferencesStateFile Condition="'$(DisableRarCache)'!='true'">$(IntermediateOutputPath)$(MSBuildProjectFile)DesignTimeResolveAssemblyReferences.cache</DesignTimeResolveAssemblyReferencesStateFile>
5799 </PropertyGroup>
5800 <PropertyGroup>
5801 <DesignTimeAssemblySearchPaths Condition=" '$(DesignTimeAssemblySearchPaths)' == '' ">
5802 {CandidateAssemblyFiles};
5803 $(ReferencePath);
5804 {HintPathFromItem};
5805 {TargetFrameworkDirectory};
5806 {Registry:$(FrameworkRegistryBase),$(TargetFrameworkVersion),$(AssemblyFoldersSuffix)$(AssemblyFoldersExConditions)};
5807 {RawFileName};
5808 $(OutDir)
5809 </DesignTimeAssemblySearchPaths>
5810 </PropertyGroup>
5811 <PropertyGroup>
5812 <DesignTimeFindDependencies Condition=" '$(DesignTimeFindDependencies)' == '' ">false</DesignTimeFindDependencies>
5813 <DesignTimeIgnoreVersionForFrameworkReferences Condition=" '$(DesignTimeIgnoreVersionForFrameworkReferences)' == '' ">false</DesignTimeIgnoreVersionForFrameworkReferences>
5814 <DesignTimeFindSatellites Condition=" '$(DesignTimeFindSatellites)' == '' ">false</DesignTimeFindSatellites>
5815 <DesignTimeFindSerializationAssemblies Condition=" '$(DesignTimeFindSerializationAssemblies)' == '' ">false</DesignTimeFindSerializationAssemblies>
5816 <DesignTimeFindRelatedFiles Condition=" '$(DesignTimeFindRelatedFiles)' == '' ">false</DesignTimeFindRelatedFiles>
5817 <DesignTimeSilentResolution Condition=" '$(DesignTimeSilentResolution)' == '' and '$(TraceDesignTime)' != 'true'">true</DesignTimeSilentResolution>
5818 <DesignTimeAutoUnify Condition="'$(DesignTimeAutoUnify)' == ''">false</DesignTimeAutoUnify>
5819 </PropertyGroup>
5820 <ItemGroup>
5821 <_DesignTimeReferenceAssemblies Include="$(DesignTimeReference)" />
5822 </ItemGroup>
5823 <ItemGroup>
5824 <_RARResolvedReferencePath Include="@(ReferencePath)" />
5825 <ReferencePath Remove="@(ReferencePath)" />
5826 </ItemGroup>
5827 <ResolveAssemblyReference Assemblies="@(_DesignTimeReferenceAssemblies)" TargetFrameworkDirectories="@(_DesignTimeReferenceInstalledAssemblyDirectory)" SearchPaths="$(DesignTimeAssemblySearchPaths)" AllowedAssemblyExtensions="$(AllowedReferenceAssemblyFileExtensions)" TargetProcessorArchitecture="$(ProcessorArchitecture)" CandidateAssemblyFiles="@(Content);@(None);@(_RARResolvedReferencePath)" FindDependencies="$(DesignTimeFindDependencies)" AutoUnify="$(DesignTimeAutoUnify)" IgnoreVersionForFrameworkReferences="$(DesignTimeIgnoreVersionForFrameworkReferences)" FindSatellites="$(DesignTimeFindSatellites)" FindSerializationAssemblies="$(DesignTimeFindSerializationAssemblies)" FindRelatedFiles="$(DesignTimeFindRelatedFiles)" Silent="$(DesignTimeSilentResolution)" TargetFrameworkVersion="$(TargetFrameworkVersion)" TargetFrameworkMoniker="$(TargetFrameworkMoniker)" TargetFrameworkMonikerDisplayName="$(TargetFrameworkMonikerDisplayName)" TargetedRuntimeVersion="$(TargetedRuntimeVersion)" StateFile="$(DesignTimeResolveAssemblyReferencesStateFile)" InstalledAssemblySubsetTables="@(InstalledAssemblySubsetTables)" IgnoreDefaultInstalledAssemblySubsetTables="$(IgnoreInstalledAssemblySubsetTables)" TargetFrameworkSubsets="@(_ReferenceInstalledAssemblySubsets)" FullTargetFrameworkSubsetNames="$(FullReferenceAssemblyNames)" FullFrameworkFolders="$(_FullFrameworkReferenceAssemblyPaths)" FullFrameworkAssemblyTables="@(FullFrameworkAssemblyTables)" ProfileName="$(TargetFrameworkProfile)" ResolvedSDKReferences="@(ResolvedSDKReference)" IgnoreTargetFrameworkAttributeVersionMismatch="$(DesignTimeIgnoreTargetFrameworkAttributeVersionMismatch)">
5828 <Output TaskParameter="ResolvedFiles" ItemName="DesignTimeReferencePath" />
5829 <Output TaskParameter="FilesWritten" ItemName="FileWrites" />
5830 </ResolveAssemblyReference>
5831 </Target>
5832 <!--
5833 ============================================================
5834 ResolveComReferences
5835
5836 Resolve COM references
5837
5838 [IN]
5839 @(COMReference) - The list of COM references
5840 $(InteropOutputPath) - The output directory in which to generate wrapper assemblies
5841 When $(InteropOutputPath) is not set, then it defaults to $(IntermediateOutputPath).
5842
5843 [OUT]
5844 @(ReferencePath) - Paths to referenced wrappers.
5845
5846 If ResolveComReferences is invoked from the IDE, PrepareForBuild may need to run to create directories.
5847 ============================================================
5848 -->
5849 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5850 <ComReferenceExecuteAsTool Condition="'$(ComReferenceExecuteAsTool)'==''">false</ComReferenceExecuteAsTool>
5851 </PropertyGroup>
5852 <Target Name="ResolveComReferences" Condition="'@(COMReference)'!='' or '@(COMFileReference)'!=''" Returns="@(ReferencePath)" DependsOnTargets="PrepareForBuild;ResolveKeySource;ResolveAssemblyReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5853 <PropertyGroup Condition=" '$(InteropOutputPath)' == '' ">
5854 <InteropOutputPath>$(IntermediateOutputPath)</InteropOutputPath>
5855 </PropertyGroup>
5856 <MakeDir Directories="$(InteropOutputPath)" />
5857 <!--
5858 Note: This task should not be batched, since it relies on having all the COM references fed into it at once.
5859 -->
5860 <PropertyGroup>
5861 <ResolveComReferenceMSBuildArchitecture Condition="'$(ResolveComReferenceMSBuildArchitecture)' == ''">$(PlatformTargetAsMSBuildArchitecture)</ResolveComReferenceMSBuildArchitecture>
5862 <ResolveComReferenceToolPath Condition="'$(ResolveComReferenceToolPath)' == ''">$(TargetFrameworkSDKToolsDirectory)</ResolveComReferenceToolPath>
5863 <ResolveComReferenceSilent Condition="'$(ResolveComReferenceSilent)' == ''">false</ResolveComReferenceSilent>
5864 </PropertyGroup>
5865 <ResolveComReference TypeLibNames="@(COMReference)" TypeLibFiles="@(COMFileReference)" ResolvedAssemblyReferences="@(ReferencePath)" WrapperOutputDirectory="$(InteropOutputPath)" IncludeVersionInInteropName="$(IncludeVersionInInteropName)" KeyContainer="$(KeyContainerName)" KeyFile="$(KeyOriginatorFile)" DelaySign="$(DelaySign)" StateFile="@(_ResolveComReferenceCache)" TargetFrameworkVersion="$(TargetFrameworkVersion)" TargetProcessorArchitecture="$(ProcessorArchitecture)" NoClassMembers="$(ComReferenceNoClassMembers)" Silent="$(ResolveComReferenceSilent)" EnvironmentVariables="$(ResolveComReferenceEnvironment)" SdkToolsPath="$(ResolveComReferenceToolPath)" ExecuteAsTool="$(ComReferenceExecuteAsTool)" MSBuildArchitecture="$(ResolveComReferenceMSBuildArchitecture)" ContinueOnError="$(ContinueOnError)">
5866 <Output TaskParameter="ResolvedFiles" ItemName="ReferencePath" />
5867 <Output TaskParameter="ResolvedFiles" ItemName="ComReferenceWrappers" />
5868 <Output TaskParameter="ResolvedFiles" ItemName="FileWrites" />
5869 <!-- This output list only includes items with Isolated attribute set to True. It's done by the task itself. -->
5870 <Output TaskParameter="ResolvedModules" ItemName="ResolvedIsolatedComModules" />
5871 </ResolveComReference>
5872 <ItemGroup>
5873 <FileWrites Include="@(_ResolveComReferenceCache)" />
5874 <ReferenceComWrappersToCopyLocal Include="@(ComReferenceWrappers)" Condition="'%(ComReferenceWrappers.CopyLocal)'!='false'" />
5875 </ItemGroup>
5876 </Target>
5877 <Target Name="ResolveComReferencesDesignTime" Returns="@(ComReferenceWrappers)" DependsOnTargets="ResolveComReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
5878 <!--
5879 ============================================================
5880 ResolveFrameworkReferences
5881
5882 Overrridden by Microsoft.NET.Sdk to return
5883 ResolvedFrameworkReference items in order to populate the
5884 Frameworks node of the Solution Explorer in the IDE.
5885 -->
5886 <Target Name="ResolveFrameworkReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
5887 <!--
5888 ***********************************************************************************************
5889 ***********************************************************************************************
5890 PrepareResources Section
5891 ***********************************************************************************************
5892 ***********************************************************************************************
5893 -->
5894 <!--
5895 ============================================================
5896 PrepareResources
5897
5898 Prepare resources for the Compile step.
5899 ============================================================
5900 -->
5901 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5902 <PrepareResourcesDependsOn>
5903 $(PrepareResourcesDependsOn);
5904 PrepareResourceNames;
5905 ResGen;
5906 CompileLicxFiles
5907 </PrepareResourcesDependsOn>
5908 </PropertyGroup>
5909 <Target Name="PrepareResources" DependsOnTargets="$(PrepareResourcesDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
5910 <!--
5911 ============================================================
5912 PrepareResourceNames
5913
5914 Prepare the names of resource files.
5915 ============================================================
5916 -->
5917 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5918 <PrepareResourceNamesDependsOn>
5919 AssignTargetPaths;
5920 SplitResourcesByCulture;
5921 CreateManifestResourceNames;
5922 CreateCustomManifestResourceNames
5923 </PrepareResourceNamesDependsOn>
5924 </PropertyGroup>
5925 <Target Name="PrepareResourceNames" DependsOnTargets="$(PrepareResourceNamesDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
5926 <!--
5927 ============================================================
5928 AssignTargetPaths
5929
5930 This target creates <TargetPath> tags for items. <TargetPath> is a relative folder plus filename
5931 for the destination of this item.
5932 ============================================================
5933 -->
5934 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5935 <AssignTargetPathsDependsOn />
5936 </PropertyGroup>
5937 <Target Name="AssignTargetPaths" DependsOnTargets="$(AssignTargetPathsDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5938 <ItemGroup>
5939 <_Temporary Remove="@(_Temporary)" />
5940 </ItemGroup>
5941 <!-- AssignTargetPath generates TargetPath metadata that is consumed by CreateManifestResourceNames target for manifest name generation -->
5942 <AssignTargetPath Files="@(EmbeddedResource)" RootFolder="$(MSBuildProjectDirectory)">
5943 <Output TaskParameter="AssignedFiles" ItemName="_Temporary" />
5944 </AssignTargetPath>
5945 <ItemGroup>
5946 <!-- Replace items in EmbeddedResource with the items emitted by the AssignTargetPath task that have the TargetPath metadata -->
5947 <EmbeddedResource Remove="@(_Temporary)" />
5948 <EmbeddedResource Include="@(_Temporary)" />
5949 <_Temporary Remove="@(_Temporary)" />
5950 </ItemGroup>
5951 <AssignTargetPath Files="@(Content)" RootFolder="$(MSBuildProjectDirectory)">
5952 <Output TaskParameter="AssignedFiles" ItemName="ContentWithTargetPath" />
5953 </AssignTargetPath>
5954 <AssignTargetPath Files="@(None)" RootFolder="$(MSBuildProjectDirectory)">
5955 <Output TaskParameter="AssignedFiles" ItemName="_NoneWithTargetPath" />
5956 </AssignTargetPath>
5957 <AssignTargetPath Files="@(BaseApplicationManifest)" RootFolder="$(MSBuildProjectDirectory)">
5958 <Output TaskParameter="AssignedFiles" ItemName="_DeploymentBaseManifestWithTargetPath" />
5959 </AssignTargetPath>
5960 <AssignTargetPath Files="@(None)" RootFolder="$(MSBuildProjectDirectory)" Condition="'@(_DeploymentBaseManifestWithTargetPath)'=='' and '%(None.Extension)'=='.manifest'">
5961 <Output TaskParameter="AssignedFiles" ItemName="_DeploymentBaseManifestWithTargetPath" />
5962 </AssignTargetPath>
5963 </Target>
5964 <!--
5965 ============================================================
5966 GetItemTargetPaths
5967
5968 This target returns all items that have TargetPath metadata assigned by the AssignTargetPaths target.
5969 ============================================================
5970 -->
5971 <Target Name="GetItemTargetPaths" DependsOnTargets="AssignTargetPaths" Returns="&#xD;&#xA; @(EmbeddedResource);&#xD;&#xA; @(ContentWithTargetPath);&#xD;&#xA; @(_NoneWithTargetPath);&#xD;&#xA; @(_DeploymentBaseManifestWithTargetPath);&#xD;&#xA; " xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
5972 <!--
5973 ============================================================
5974 SplitResourcesByCulture
5975
5976 Split EmbeddedResource items into five lists based on whether
5977 they are resx files, licx files or other resources and whether they should be localized. Also adds Type and Culture
5978 metadata. Type indicates whether the resource is "Resx" or "Non-Resx".
5979
5980 [IN]/[OUT]
5981 @(EmbeddedResource) - The raw list of resources.
5982
5983 [OUT]
5984 @(_LicxFile) - The EmbeddedResource items with extension equal to '.licx'.
5985 ============================================================
5986 -->
5987 <Target Name="SplitResourcesByCulture" DependsOnTargets="AssignTargetPaths" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5988 <Warning Condition="'@(ResxWithNoCulture)'!=''" Code="MSB9000" Text="ResxWithNoCulture item type is deprecated. Use EmbeddedResource items instead." />
5989 <Warning Condition="'@(ResxWithCulture)'!=''" Code="MSB9001" Text="ResxWithCulture item type is deprecated. Use EmbeddedResource items instead." />
5990 <Warning Condition="'@(NonResxWithCulture)'!=''" Code="MSB9002" Text="NonResxWithCulture item type is deprecated. Use EmbeddedResource items instead." />
5991 <Warning Condition="'@(NonResxWithNoCulture)'!=''" Code="MSB9003" Text="NonResxWithNoCulture item type is deprecated. Use EmbeddedResource items instead." />
5992 <ItemGroup>
5993 <_LicxFile Include="@(EmbeddedResource)" Condition="'%(Extension)'=='.licx'" />
5994 <!-- CONSUMED FOR COMPATIBILITY REASONS ONLY. EMIT EMBEDDEDRESOURCE INSTEAD -->
5995 <EmbeddedResource Include="@(ResxWithNoCulture);@(ResxWithCulture)">
5996 <Type>Resx</Type>
5997 </EmbeddedResource>
5998 <EmbeddedResource Include="@(NonResxWithCulture);@(NonResxWithNoCulture)">
5999 <Type>Non-Resx</Type>
6000 </EmbeddedResource>
6001 </ItemGroup>
6002 <AssignCulture Files="@(EmbeddedResource)" Condition="'%(Extension)'!='.licx'">
6003 <!-- Create the list of culture resx and embedded resource files -->
6004 <Output TaskParameter="AssignedFilesWithCulture" ItemName="_MixedResourceWithCulture" />
6005 <!-- Create the list of non-culture resx and embedded resource files -->
6006 <Output TaskParameter="AssignedFilesWithNoCulture" ItemName="_MixedResourceWithNoCulture" />
6007 </AssignCulture>
6008 <ItemGroup>
6009 <!-- Remove EmbeddedResource items that we have processed already
6010 i.e. either Licx, or resources that don't have culture info -->
6011 <EmbeddedResource Remove="@(_MixedResourceWithCulture)" />
6012 <EmbeddedResource Remove="@(_MixedResourceWithNoCulture)" />
6013 <EmbeddedResource Remove="@(_LicxFile)" />
6014 <!-- Add back everything except Licx, so that we have culture info -->
6015 <EmbeddedResource Include="@(_MixedResourceWithNoCulture);@(_MixedResourceWithCulture)" Condition="'%(Extension)'=='.resx' or '%(Extension)'=='.restext'">
6016 <Type Condition="'%(_MixedResourceWithNoCulture.Type)'=='' and '%(_MixedResourceWithCulture.Type)'==''">Resx</Type>
6017 </EmbeddedResource>
6018 <EmbeddedResource Include="@(_MixedResourceWithNoCulture);@(_MixedResourceWithCulture)" Condition="'%(Extension)'!='.resx' and '%(Extension)'!='.restext'">
6019 <Type Condition="'%(_MixedResourceWithNoCulture.Type)'=='' and '%(_MixedResourceWithCulture.Type)'==''">Non-Resx</Type>
6020 </EmbeddedResource>
6021 <!-- EMITTED FOR COMPATIBILITY REASONS ONLY. CONSUME EMBEDDEDRESOURCE INSTEAD -->
6022 <ResxWithNoCulture Remove="@(ResxWithNoCulture)" />
6023 <NonResxWithNoCulture Remove="@(NonResxWithNoCulture)" />
6024 <ResxWithCulture Remove="@(ResxWithCulture)" />
6025 <NonResxWithCulture Remove="@(NonResxWithCulture)" />
6026 <ResxWithNoCulture Include="@(_MixedResourceWithNoCulture)" Condition="'%(WithCulture)'=='false' and ('%(Extension)'=='.resx' or '%(Extension)'=='.restext')" />
6027 <NonResxWithNoCulture Include="@(_MixedResourceWithNoCulture)" Condition="'%(WithCulture)'=='false' and ('%(Extension)'!='.resx' and '%(Extension)'!='.restext')" />
6028 <ResxWithCulture Include="@(_MixedResourceWithCulture)" Condition="'%(WithCulture)'=='true' and ('%(Extension)'=='.resx' or '%(Extension)'=='.restext')" />
6029 <NonResxWithCulture Include="@(_MixedResourceWithCulture)" Condition="'%(WithCulture)'=='true' and ('%(Extension)'!='.resx' and '%(Extension)'!='.restext')" />
6030 <!-- Clean up temporary lists -->
6031 <_MixedResourceWithNoCulture Remove="@(_MixedResourceWithNoCulture)" />
6032 <_MixedResourceWithCulture Remove="@(_MixedResourceWithCulture)" />
6033 </ItemGroup>
6034 </Target>
6035 <!--
6036 =======================================================================
6037 CreateCustomManifestResourceNames
6038
6039 Allows custom manifest resource name generation tasks to plug
6040 into the build process
6041 =======================================================================
6042 -->
6043 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6044 <CreateCustomManifestResourceNamesDependsOn />
6045 </PropertyGroup>
6046 <Target Name="CreateCustomManifestResourceNames" DependsOnTargets="$(CreateCustomManifestResourceNamesDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
6047 <!--
6048 ============================================================
6049 ResGen
6050
6051 Run GenerateResource on the given resx files.
6052
6053 ============================================================
6054 -->
6055 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6056 <ResGenDependsOn>ResolveAssemblyReferences;SplitResourcesByCulture;BeforeResGen;CoreResGen;AfterResGen</ResGenDependsOn>
6057 <CoreResGenDependsOn>FindReferenceAssembliesForReferences</CoreResGenDependsOn>
6058 <UseSourcePath Condition="'$(UseSourcePath)'==''">true</UseSourcePath>
6059 <ResGenExecuteAsTool Condition="'$(ResGenExecuteAsTool)'==''">false</ResGenExecuteAsTool>
6060 </PropertyGroup>
6061 <Target Name="ResGen" DependsOnTargets="$(ResGenDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
6062 <!--
6063 ============================================================
6064 BeforeResGen
6065
6066 Redefine this target in your project in order to run tasks just before Resgen.
6067 ============================================================
6068 -->
6069 <Target Name="BeforeResGen" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
6070 <!--
6071 ============================================================
6072 AfterResGen
6073
6074 Redefine this target in your project in order to run tasks just after Resgen.
6075 ============================================================
6076 -->
6077 <Target Name="AfterResGen" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
6078 <!--
6079 ============================================================
6080 CoreResGen
6081 ============================================================
6082 -->
6083 <Target Name="CoreResGen" DependsOnTargets="$(CoreResGenDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6084 <ItemGroup>
6085 <_Temporary Remove="@(_Temporary)" />
6086 </ItemGroup>
6087 <PropertyGroup>
6088 <GenerateResourceMSBuildArchitecture Condition="'$(GenerateResourceMSBuildArchitecture)' == ''">$(PlatformTargetAsMSBuildArchitecture)</GenerateResourceMSBuildArchitecture>
6089 <ResgenToolPath Condition="'$(ResgenToolPath)' == ''">$(TargetFrameworkSDKToolsDirectory)</ResgenToolPath>
6090 </PropertyGroup>
6091 <PropertyGroup Condition="'$(TargetFrameworkAsMSBuildRuntime)' != '' and '$(GenerateResourceMSBuildArchitecture)' != ''">
6092 <!-- In the general case, we want to fail to run the task if the task host it's requesting doesn't exist, because we'd rather let the
6093 user know there's something wrong than just silently generate something that's probably not quite right. However, in a few
6094 circumstances, there are tasks that are already aware of runtime / bitness concerns, in which case even if we go ahead and run
6095 the more recent version of the task, it should be able to generate something correct. GenerateResource is one such task, so
6096 we check for the existence of the targeted task host so that we can use it preferentially, but if it can't be found, we'll fall
6097 back to the current task since it's still mostly correct.
6098
6099 In particular, we need to do this because otherwise people with Dev10 on a machine that they upgrade to Win8 will be broken:
6100 they'll have ResGen from the 7.0A SDK installed, so launching ResGen will still work, but the CLR2 task host is only installed by
6101 the 8.0A SDK, which they won't have installed, and thus without this fallback mechanism, their projects targeting v3.5 will
6102 suddenly start failing to build.-->
6103 <GenerateResourceMSBuildRuntime Condition="'$(GenerateResourceMSBuildRuntime)' == '' and&#xD;&#xA; $([MSBuild]::DoesTaskHostExist(`$(TargetFrameworkAsMSBuildRuntime)`, `$(GenerateResourceMSBuildArchitecture)`))">$(TargetFrameworkAsMSBuildRuntime)</GenerateResourceMSBuildRuntime>
6104 <!-- If the targeted runtime doesn't exist, fall back to current -->
6105 <GenerateResourceMSBuildRuntime Condition="'$(GenerateResourceMSBuildRuntime)' == ''">CurrentRuntime</GenerateResourceMSBuildRuntime>
6106 </PropertyGroup>
6107 <!-- 4.0 task has some new parameters that we want to make use of if we're targeting 4.0 -->
6108 <GenerateResource Sources="@(EmbeddedResource)" UseSourcePath="$(UseSourcePath)" References="@(ReferencePathWithRefAssemblies)" UsePreserializedResources="$(GenerateResourceUsePreserializedResources)" AdditionalInputs="$(MSBuildAllProjects)" NeverLockTypeAssemblies="$(GenerateResourceNeverLockTypeAssemblies)" StateFile="$(IntermediateOutputPath)$(MSBuildProjectFile).GenerateResource.cache" StronglyTypedClassName="%(EmbeddedResource.StronglyTypedClassName)" StronglyTypedFileName="%(EmbeddedResource.StronglyTypedFileName)" StronglyTypedLanguage="%(EmbeddedResource.StronglyTypedLanguage)" StronglyTypedNamespace="%(EmbeddedResource.StronglyTypedNamespace)" StronglyTypedManifestPrefix="%(EmbeddedResource.StronglyTypedManifestPrefix)" PublicClass="%(EmbeddedResource.PublicClass)" OutputResources="@(EmbeddedResource->'$(IntermediateOutputPath)%(ManifestResourceName).resources')" Condition="'%(EmbeddedResource.Type)' == 'Resx' and '%(EmbeddedResource.GenerateResource)' != 'false' and '$(GenerateResourceMSBuildRuntime)' != 'CLR2'" SdkToolsPath="$(ResgenToolPath)" ExecuteAsTool="$(ResGenExecuteAsTool)" EnvironmentVariables="$(ResGenEnvironment)" MSBuildRuntime="$(GenerateResourceMSBuildRuntime)" MSBuildArchitecture="$(GenerateResourceMSBuildArchitecture)">
6109 <Output TaskParameter="FilesWritten" ItemName="FileWrites" />
6110 <Output TaskParameter="StronglyTypedFileName" ItemName="Compile" />
6111 <!-- Gather Sources as an output since it will contain OutputResource metadata indicating the final output resource that it was compiled into -->
6112 <Output TaskParameter="Sources" ItemName="_Temporary" />
6113 </GenerateResource>
6114 <!-- But we can't use those parameters if we're targeting 3.5, since we're using the 3.5 task -->
6115 <GenerateResource Sources="@(EmbeddedResource)" UseSourcePath="$(UseSourcePath)" References="@(ReferencePath)" AdditionalInputs="$(MSBuildAllProjects)" NeverLockTypeAssemblies="$(GenerateResourceNeverLockTypeAssemblies)" StateFile="$(IntermediateOutputPath)$(MSBuildProjectFile).GenerateResource.cache" StronglyTypedClassName="%(EmbeddedResource.StronglyTypedClassName)" StronglyTypedFileName="%(EmbeddedResource.StronglyTypedFileName)" StronglyTypedLanguage="%(EmbeddedResource.StronglyTypedLanguage)" StronglyTypedNamespace="%(EmbeddedResource.StronglyTypedNamespace)" StronglyTypedManifestPrefix="%(EmbeddedResource.StronglyTypedManifestPrefix)" PublicClass="%(EmbeddedResource.PublicClass)" OutputResources="@(EmbeddedResource->'$(IntermediateOutputPath)%(ManifestResourceName).resources')" MSBuildRuntime="$(GenerateResourceMSBuildRuntime)" MSBuildArchitecture="$(GenerateResourceMSBuildArchitecture)" Condition="'%(EmbeddedResource.Type)' == 'Resx' and '%(EmbeddedResource.GenerateResource)' != 'false' and '$(GenerateResourceMSBuildRuntime)' == 'CLR2'">
6116 <Output TaskParameter="FilesWritten" ItemName="FileWrites" />
6117 <Output TaskParameter="StronglyTypedFileName" ItemName="Compile" />
6118 <!-- Gather Sources as an output since it will contain OutputResource metadata indicating the final output resource that it was compiled into -->
6119 <Output TaskParameter="Sources" ItemName="_Temporary" />
6120 </GenerateResource>
6121 <ItemGroup>
6122 <EmbeddedResource Remove="@(_Temporary)" />
6123 <!-- Add back the Sources list (with OutputResource metadata) that we output from GenerateResource into EmbeddedResource -->
6124 <EmbeddedResource Include="@(_Temporary)" />
6125 <_Temporary Remove="@(_Temporary)" />
6126 <!-- EMITTED FOR COMPATIBILITY REASONS ONLY. CONSUME EMBEDDEDRESOURCE INSTEAD -->
6127 <ManifestResourceWithNoCulture Include="@(EmbeddedResource->'%(OutputResource)')" Condition="'%(EmbeddedResource.WithCulture)'=='false' and '%(EmbeddedResource.Type)' == 'Resx'">
6128 <EmittedForCompatibilityOnly>true</EmittedForCompatibilityOnly>
6129 </ManifestResourceWithNoCulture>
6130 <ManifestNonResxWithNoCultureOnDisk Include="@(EmbeddedResource)" Condition="'%(EmbeddedResource.WithCulture)'=='false' and '%(EmbeddedResource.Type)' == 'Non-Resx'">
6131 <EmittedForCompatibilityOnly>true</EmittedForCompatibilityOnly>
6132 </ManifestNonResxWithNoCultureOnDisk>
6133 <!-- EMITTED FOR COMPATIBILITY REASONS ONLY. CONSUME EMBEDDEDRESOURCE INSTEAD -->
6134 <ManifestResourceWithCulture Include="@(EmbeddedResource->'%(OutputResource)')" Condition="'%(EmbeddedResource.WithCulture)'=='true' and '%(EmbeddedResource.Type)' == 'Resx'">
6135 <EmittedForCompatibilityOnly>true</EmittedForCompatibilityOnly>
6136 </ManifestResourceWithCulture>
6137 <ManifestNonResxWithCultureOnDisk Include="@(EmbeddedResource)" Condition="'%(EmbeddedResource.WithCulture)'=='true' and '%(EmbeddedResource.Type)' == 'Non-Resx'">
6138 <EmittedForCompatibilityOnly>true</EmittedForCompatibilityOnly>
6139 </ManifestNonResxWithCultureOnDisk>
6140 </ItemGroup>
6141 </Target>
6142 <!--
6143 ============================================================
6144 CompileLicxFiles
6145
6146 Compile .licx files (containing information about licensed controls used by the application) into .licenses files.
6147
6148 [IN]
6149 @(_LicxFile) - The list of .licx files in the project (usually there will be just one)
6150
6151 [OUT]
6152 @(CompiledLicenseFile) - The list of compiled .licenses files (there will be just one)
6153 ============================================================
6154 -->
6155 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6156 <CompileLicxFilesDependsOn />
6157 </PropertyGroup>
6158 <Target Name="CompileLicxFiles" Condition="'@(_LicxFile)'!=''" DependsOnTargets="$(CompileLicxFilesDependsOn)" Inputs="$(MSBuildAllProjects);@(_LicxFile);@(ReferencePathWithRefAssemblies);@(ReferenceDependencyPaths)" Outputs="$(IntermediateOutputPath)$(TargetFileName).licenses" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6159 <PropertyGroup>
6160 <LCMSBuildArchitecture Condition="'$(LCMSBuildArchitecture)' == ''">$(PlatformTargetAsMSBuildArchitecture)</LCMSBuildArchitecture>
6161 </PropertyGroup>
6162 <LC Sources="@(_LicxFile)" LicenseTarget="$(TargetFileName)" OutputDirectory="$(IntermediateOutputPath)" OutputLicense="$(IntermediateOutputPath)$(TargetFileName).licenses" ReferencedAssemblies="@(ReferencePathWithRefAssemblies);@(ReferenceDependencyPaths)" NoLogo="$(NoLogo)" ToolPath="$(LCToolPath)" SdkToolsPath="$(TargetFrameworkSDKToolsDirectory)" EnvironmentVariables="$(LCEnvironment)" MSBuildArchitecture="$(LCMSBuildArchitecture)" TargetFrameworkVersion="$(TargetFrameworkVersion)">
6163 <Output TaskParameter="OutputLicense" ItemName="CompiledLicenseFile" />
6164 <Output TaskParameter="OutputLicense" ItemName="FileWrites" />
6165 </LC>
6166 </Target>
6167 <!--
6168 ***********************************************************************************************
6169 ***********************************************************************************************
6170 ResolveKeySource Section
6171 ***********************************************************************************************
6172 ***********************************************************************************************
6173 -->
6174 <!--
6175 ============================================================
6176 ResolveKeySource
6177
6178 Resolve the strong name key used to sign the assembly as well as the certificate used to
6179 sign the ClickOnce manifests.
6180
6181 [IN]
6182 $(AssemblyOriginatorKeyFile) - The file used to sign the assembly (.snk or .pfx)
6183 $(ManifestCertificateThumbprint) - The thumbprint used to locate the certificate in the
6184 user's certificate store.
6185 $(ManifestKeyFile) - The key file that contains the certificate in case the
6186 certificate is not in the user's store.
6187
6188 [OUT]
6189 $(ResolvedAssemblyKeyFile) - Key used to sign the assembly
6190 $(_DeploymentResolvedManifestCertificateThumbprint) - Certificate used to sign the manifests
6191 ============================================================
6192 -->
6193 <Target Name="ResolveKeySource" Condition="$(SignManifests) == 'true' or $(SignAssembly) == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6194 <ResolveKeySource KeyFile="$(AssemblyOriginatorKeyFile)" CertificateThumbprint="$(ManifestCertificateThumbprint)" CertificateFile="$(ManifestKeyFile)" SuppressAutoClosePasswordPrompt="$(BuildingInsideVisualStudio)" ShowImportDialogDespitePreviousFailures="$(BuildingProject)" ContinueOnError="!$(BuildingProject)">
6195 <Output TaskParameter="ResolvedKeyFile" PropertyName="KeyOriginatorFile" Condition=" '$(SignAssembly)' == 'true' " />
6196 <Output TaskParameter="ResolvedKeyContainer" PropertyName="KeyContainerName" Condition=" '$(SignAssembly)' == 'true' " />
6197 <Output TaskParameter="ResolvedThumbprint" PropertyName="_DeploymentResolvedManifestCertificateThumbprint" Condition=" '$(SignManifests)' == 'true' " />
6198 </ResolveKeySource>
6199 </Target>
6200 <!--
6201 ***********************************************************************************************
6202 ***********************************************************************************************
6203 Compile Section
6204 ***********************************************************************************************
6205 ***********************************************************************************************
6206 -->
6207 <!--
6208 ============================================================
6209 Compile
6210 ============================================================
6211 -->
6212 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6213 <CompileDependsOn>
6214 ResolveReferences;
6215 ResolveKeySource;
6216 SetWin32ManifestProperties;
6217 FindReferenceAssembliesForReferences;
6218 _GenerateCompileInputs;
6219 BeforeCompile;
6220 _TimeStampBeforeCompile;
6221 _GenerateCompileDependencyCache;
6222 CoreCompile;
6223 _TimeStampAfterCompile;
6224 AfterCompile;
6225 </CompileDependsOn>
6226 </PropertyGroup>
6227 <Target Name="Compile" DependsOnTargets="$(CompileDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
6228 <!--
6229 ============================================================
6230 _GenerateCompileInputs
6231
6232 Create the _CoreCompileResourceInputs list of inputs to the CoreCompile target.
6233 ============================================================
6234 -->
6235 <Target Name="_GenerateCompileInputs" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6236 <Warning Condition="'@(ManifestResourceWithNoCulture)'!='' and '%(ManifestResourceWithNoCulture.EmittedForCompatibilityOnly)'==''" Code="MSB9004" Text="ManifestResourceWithNoCulture item type is deprecated. Emit EmbeddedResource items instead, with metadata WithCulture='false', Type='Resx', and optional LogicalName." />
6237 <Warning Condition="'@(ManifestNonResxWithNoCultureOnDisk)'!='' and '%(ManifestNonResxWithNoCultureOnDisk.EmittedForCompatibilityOnly)'==''" Code="MSB9005" Text="ManifestNonResxWithNoCultureOnDisk item type is deprecated. Emit EmbeddedResource items instead, with metadata WithCulture='false', Type='Non-Resx', and optional LogicalName." />
6238 <ItemGroup>
6239 <!-- _CoreCompileResourceInputs is the list of TLDA inputs that should trigger CoreCompile, and are listed as inputs to that target -->
6240 <_CoreCompileResourceInputs Include="@(EmbeddedResource->'%(OutputResource)')" Condition="'%(EmbeddedResource.WithCulture)' == 'false' and '%(EmbeddedResource.Type)' == 'Resx'" />
6241 <_CoreCompileResourceInputs Include="@(EmbeddedResource)" Condition="'%(EmbeddedResource.WithCulture)' == 'false' and '%(EmbeddedResource.Type)' == 'Non-Resx' " />
6242 <!-- CONSUMED FOR COMPATIBILITY REASONS ONLY. EMIT EMBEDDEDRESOURCE INSTEAD -->
6243 <_CoreCompileResourceInputs Include="@(ManifestResourceWithNoCulture)" Condition="'%(ManifestResourceWithNoCulture.EmittedForCompatibilityOnly)'==''">
6244 <Type>Resx</Type>
6245 <WithCulture>false</WithCulture>
6246 </_CoreCompileResourceInputs>
6247 <_CoreCompileResourceInputs Include="@(ManifestNonResxWithNoCultureOnDisk)" Condition="'%(ManifestNonResxWithNoCultureOnDisk.EmittedForCompatibilityOnly)'==''">
6248 <Type>Non-Resx</Type>
6249 <WithCulture>false</WithCulture>
6250 </_CoreCompileResourceInputs>
6251 </ItemGroup>
6252 </Target>
6253 <!--
6254 ============================================================
6255 GenerateTargetFrameworkMonikerAttribute
6256
6257 Emit the target framework moniker attribute as a code fragment into a temporary source file for the compiler.
6258 ============================================================
6259 -->
6260 <PropertyGroup Condition="'$(TargetFrameworkMoniker)' != ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6261 <!-- Do not clean if we are going to default the path to the temp directory -->
6262 <TargetFrameworkMonikerAssemblyAttributesFileClean Condition="'$(TargetFrameworkMonikerAssemblyAttributesFileClean)' == '' and '$(TargetFrameworkMonikerAssemblyAttributesPath)' != ''">true</TargetFrameworkMonikerAssemblyAttributesFileClean>
6263 <TargetFrameworkMonikerAssemblyAttributesPath Condition="'$(TargetFrameworkMonikerAssemblyAttributesPath)' == ''">$([System.IO.Path]::Combine('$(IntermediateOutputPath)','$(TargetFrameworkMoniker).AssemblyAttributes$(DefaultLanguageSourceExtension)'))</TargetFrameworkMonikerAssemblyAttributesPath>
6264 </PropertyGroup>
6265 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6266 <GenerateTargetFrameworkAttribute Condition="'$(GenerateTargetFrameworkAttribute)' == '' and '$(TargetFrameworkMoniker)' != '' and '$(TargetingClr2Framework)' != 'true'">true</GenerateTargetFrameworkAttribute>
6267 </PropertyGroup>
6268 <ItemGroup Condition="'$(TargetFrameworkMonikerAssemblyAttributesFileClean)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6269 <Clean Include="$(TargetFrameworkMonikerAssemblyAttributesPath)" />
6270 </ItemGroup>
6271 <Target Name="GenerateTargetFrameworkMonikerAttribute" BeforeTargets="BeforeCompile" DependsOnTargets="PrepareForBuild;GetReferenceAssemblyPaths" Inputs="$(MSBuildToolsPath)\Microsoft.Common.targets" Outputs="$(TargetFrameworkMonikerAssemblyAttributesPath)" Condition="'$(GenerateTargetFrameworkAttribute)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6272 <!-- This is a file shared between projects so we have to take care to handle simultaneous writes (by ContinueOnError)
6273 and a race between clean from one project and build from another (by not adding to FilesWritten so it doesn't clean) -->
6274 <WriteLinesToFile File="$(TargetFrameworkMonikerAssemblyAttributesPath)" Lines="$(TargetFrameworkMonikerAssemblyAttributeText)" Overwrite="true" ContinueOnError="true" Condition="'@(Compile)' != '' and '$(TargetFrameworkMonikerAssemblyAttributeText)' != ''" />
6275 <ItemGroup Condition="'@(Compile)' != '' and '$(TargetFrameworkMonikerAssemblyAttributeText)' != ''">
6276 <Compile Include="$(TargetFrameworkMonikerAssemblyAttributesPath)" />
6277 <!-- Do not put in FileWrites: this is a file shared between projects in %temp%, and cleaning it would create a race between projects during rebuild -->
6278 </ItemGroup>
6279 </Target>
6280 <!--
6281 ============================================================
6282 GenerateAdditionalSources
6283
6284 Emit any specified code fragments into a temporary source file for the compiler.
6285 ============================================================
6286 -->
6287 <PropertyGroup Condition="'$(AssemblyAttributesPath)' != ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6288 <GenerateAdditionalSources Condition="'$(GenerateAdditionalSources)' == ''">true</GenerateAdditionalSources>
6289 </PropertyGroup>
6290 <ItemGroup Condition="'$(AssemblyAttributesPath)' != ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6291 <Clean Include="$(AssemblyAttributesPath)" Condition="'$(AssemblyAttributesFileClean)' != 'false'" />
6292 </ItemGroup>
6293 <Target Name="GenerateAdditionalSources" BeforeTargets="BeforeCompile" DependsOnTargets="PrepareForBuild;GetReferenceAssemblyPaths" Inputs="$(MSBuildAllProjects)" Outputs="$(AssemblyAttributesPath)" Condition="'@(AssemblyAttributes)' != '' and '$(GenerateAdditionalSources)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6294 <WriteCodeFragment AssemblyAttributes="@(AssemblyAttributes)" OutputFile="$(AssemblyAttributesPath)" Language="$(Language)">
6295 <Output TaskParameter="OutputFile" ItemName="Compile" />
6296 <Output TaskParameter="OutputFile" ItemName="FileWrites" />
6297 </WriteCodeFragment>
6298 </Target>
6299 <!--
6300 ============================================================
6301 BeforeCompile
6302
6303 Redefine this target in your project in order to run tasks just before Compile.
6304 ============================================================
6305 -->
6306 <Target Name="BeforeCompile" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
6307 <!--
6308 ============================================================
6309 AfterCompile
6310
6311 Redefine this target in your project in order to run tasks just after Compile.
6312 ============================================================
6313 -->
6314 <Target Name="AfterCompile" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
6315 <!--
6316 ============================================================
6317 _TimeStampBeforeCompile
6318
6319 If post-build events are set to fire "OnOutputUpdated", then take before
6320 and after timestamps so that we can compare them.
6321 ============================================================
6322 -->
6323 <Target Name="_TimeStampBeforeCompile" Condition="'$(RunPostBuildEvent)'=='OnOutputUpdated' or ('$(RegisterForComInterop)'=='true' and '$(OutputType)'=='library')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6324 <PropertyGroup>
6325 <_AssemblyTimestampBeforeCompile>%(IntermediateAssembly.ModifiedTime)</_AssemblyTimestampBeforeCompile>
6326 </PropertyGroup>
6327 </Target>
6328 <!--
6329 ============================================================
6330 _GenerateCompileDependencyCache
6331
6332 Generate a file used to track compiler dependencies between incremental build
6333 executions. This handles cases where items are added or removed from a glob (e.g.
6334 <Compile Include="**\*.cs" />) and can't otherwise be detected with timestamp
6335 comparisons. The file contains a hash of compiler inputs that are known to
6336 contribute to incremental build inconsistencies.
6337 ============================================================
6338 -->
6339 <Target Name="_GenerateCompileDependencyCache" Condition="'$(DesignTimeBuild)' != 'true' and '$(BuildingProject)' == 'true'" DependsOnTargets="ResolveAssemblyReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6340 <ItemGroup>
6341 <CustomAdditionalCompileInputs Include="$(IntermediateOutputPath)$(MSBuildProjectFile).CoreCompileInputs.cache" />
6342 <CoreCompileCache Include="@(Compile)" />
6343 <CoreCompileCache Include="@(ReferencePath)" />
6344 <CoreCompileCache Include="$(DefineConstants)" />
6345 </ItemGroup>
6346 <Hash ItemsToHash="@(CoreCompileCache)" IgnoreCase="$([MSBuild]::ValueOrDefault(`$(CoreCompileCacheIgnoreCase)`, `true`))">
6347 <Output TaskParameter="HashResult" PropertyName="CoreCompileDependencyHash" />
6348 </Hash>
6349 <WriteLinesToFile Lines="$(CoreCompileDependencyHash)" File="$(IntermediateOutputPath)$(MSBuildProjectFile).CoreCompileInputs.cache" Overwrite="True" WriteOnlyWhenDifferent="True" />
6350 <ItemGroup>
6351 <FileWrites Include="$(IntermediateOutputPath)$(MSBuildProjectFile).CoreCompileInputs.cache" />
6352 </ItemGroup>
6353 </Target>
6354 <!--
6355 ============================================================
6356 _TimeStampAfterCompile
6357
6358 If post-build events are set to fire "OnOutputUpdated", then take before
6359 and after timestamps so that we can compare them.
6360 ============================================================
6361 -->
6362 <Target Name="_TimeStampAfterCompile" Condition="'$(RunPostBuildEvent)'=='OnOutputUpdated' or ('$(RegisterForComInterop)'=='true' and '$(OutputType)'=='library')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6363 <PropertyGroup>
6364 <_AssemblyTimestampAfterCompile>%(IntermediateAssembly.ModifiedTime)</_AssemblyTimestampAfterCompile>
6365 </PropertyGroup>
6366 </Target>
6367 <!--
6368 ================================================================
6369 _ComputeNonExistentFileProperty
6370
6371 There are certain situations in which we want to always run the CoreCompile target (and
6372 thus the Csc task), even if the timestamps of the outputs appear to be up-to-date on disk.
6373 If we're inside the IDE during design-time, then the Csc/Vbc/Vjc task is simply being used to
6374 initialize the host compiler, so we always want to run it. Also, if we're inside the IDE, and
6375 the host compiler is responsible for doing the compilation during an actual build, we want to let
6376 the host compiler determine whether the output is up-to-date, because there may be source files
6377 in the IDE's in-memory buffers that we don't know about.
6378
6379 So, we always run the CoreCompile target if we're in the IDE, and either we're in design-time or
6380 we're delegating to the host compiler for the actual build.
6381
6382 We compare against BuildOutOfProcess != true because we cannot assume that the build process will
6383 have set BuildOutOfProcess to true or false. Therefore the default behavior should be to do the
6384 legacy behavior seen before BuildingOutOfProcess was introduced if the property is not set.
6385 ================================================================
6386 -->
6387 <Target Name="_ComputeNonExistentFileProperty" Condition="('$(BuildingInsideVisualStudio)' == 'true') and ('$(BuildingOutOfProcess)' != 'true') and (('$(BuildingProject)' == 'false') or ('$(UseHostCompilerIfAvailable)' == 'true'))" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6388 <PropertyGroup>
6389 <NonExistentFile>__NonExistentSubDir__\__NonExistentFile__</NonExistentFile>
6390 </PropertyGroup>
6391 </Target>
6392 <!--
6393 ***********************************************************************************************
6394 ***********************************************************************************************
6395 GenerateSerializationAssemblies Section
6396 ***********************************************************************************************
6397 ***********************************************************************************************
6398 -->
6399 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6400 <_SGenDllName>$(TargetName).XmlSerializers.dll</_SGenDllName>
6401 <_SGenDllCreated>false</_SGenDllCreated>
6402 <_SGenGenerateSerializationAssembliesConfig>$(GenerateSerializationAssemblies)</_SGenGenerateSerializationAssembliesConfig>
6403 <_SGenGenerateSerializationAssembliesConfig Condition="'$(GenerateSerializationAssemblies)' == ''">Auto</_SGenGenerateSerializationAssembliesConfig>
6404 <_SGenGenerateSerializationAssembliesConfig Condition="'$(ConfigurationName)'=='Debug' and '$(_SGenGenerateSerializationAssembliesConfig)' == 'Auto'">Off</_SGenGenerateSerializationAssembliesConfig>
6405 <SGenUseProxyTypes Condition="'$(SGenUseProxyTypes)' == ''">true</SGenUseProxyTypes>
6406 <SGenUseKeep Condition="'$(SGenUseKeep)'==''">false</SGenUseKeep>
6407 <SGenShouldGenerateSerializer Condition="'$(SGenShouldGenerateSerializer)' == ''">true</SGenShouldGenerateSerializer>
6408 </PropertyGroup>
6409 <!--
6410 ============================================================
6411 GenerateSerializationAssemblies
6412
6413 Run GenerateSerializationAssemblies on the assembly produced by this build.
6414
6415 [IN]
6416 @(BuildAssemblyName) - The assembly generated by this build.
6417 @(BuildAssemblyPath) - The path where the assembly resides.
6418 @(ReferencePath) - The list of references used by this assembly.
6419
6420 [OUT]
6421 @(SerializationAssembly) - The path to the serialization assembly. Maybe we'll just append to an existing list.
6422 ============================================================
6423 -->
6424 <Target Name="GenerateSerializationAssemblies" Condition="'$(_SGenGenerateSerializationAssembliesConfig)' == 'On' or ('@(WebReferenceUrl)'!='' and '$(_SGenGenerateSerializationAssembliesConfig)' == 'Auto')" DependsOnTargets="AssignTargetPaths;Compile;ResolveKeySource" Inputs="$(MSBuildAllProjects);@(IntermediateAssembly)" Outputs="$(IntermediateOutputPath)$(_SGenDllName)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6425 <PropertyGroup>
6426 <SGenMSBuildArchitecture Condition="'$(SGenMSBuildArchitecture)' == ''">$(PlatformTargetAsMSBuildArchitecture)</SGenMSBuildArchitecture>
6427 </PropertyGroup>
6428 <SGen BuildAssemblyName="$(TargetFileName)" BuildAssemblyPath="$(IntermediateOutputPath)" References="@(ReferencePath)" ShouldGenerateSerializer="$(SGenShouldGenerateSerializer)" UseProxyTypes="$(SGenUseProxyTypes)" UseKeep="$(SGenUseKeep)" KeyContainer="$(KeyContainerName)" KeyFile="$(KeyOriginatorFile)" DelaySign="$(DelaySign)" ToolPath="$(SGenToolPath)" SdkToolsPath="$(TargetFrameworkSDKToolsDirectory)" EnvironmentVariables="$(SGenEnvironment)" MSBuildArchitecture="$(SGenMSBuildArchitecture)" SerializationAssembly="$(IntermediateOutputPath)$(_SGenDllName)" Platform="$(SGenPlatformTarget)" Types="$(SGenSerializationTypes)">
6429 <Output TaskParameter="SerializationAssembly" ItemName="SerializationAssembly" />
6430 </SGen>
6431 </Target>
6432 <!--
6433 ***********************************************************************************************
6434 ***********************************************************************************************
6435 CreateSatelliteAssemblies Section
6436 ***********************************************************************************************
6437 ***********************************************************************************************
6438 -->
6439 <!--
6440 ============================================================
6441 CreateSatelliteAssemblies
6442
6443 Create one satellite assembly for every unique culture in the resources.
6444 ============================================================
6445 -->
6446 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6447 <CreateSatelliteAssembliesDependsOn>
6448 _GenerateSatelliteAssemblyInputs;
6449 ComputeIntermediateSatelliteAssemblies;
6450 GenerateSatelliteAssemblies
6451 </CreateSatelliteAssembliesDependsOn>
6452 </PropertyGroup>
6453 <Target Name="CreateSatelliteAssemblies" DependsOnTargets="$(CreateSatelliteAssembliesDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
6454 <!--
6455 ============================================================
6456 _GenerateSatelliteAssemblyInputs
6457
6458 Create the _SatelliteAssemblyResourceInputs list of inputs to the CreateSatelliteAssemblies target.
6459 ============================================================
6460 -->
6461 <Target Name="_GenerateSatelliteAssemblyInputs" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6462 <Warning Condition="'@(ManifestResourceWithCulture)'!='' and '%(ManifestResourceWithCulture.EmittedForCompatibilityOnly)'==''" Code="MSB9006" Text="ManifestResourceWithCulture item type is deprecated. Emit EmbeddedResource items instead, with metadata WithCulture='true', Type='Resx', and optional LogicalName." />
6463 <Warning Condition="'@(ManifestNonResxWithCultureOnDisk)'!='' and '%(ManifestNonResxWithCultureOnDisk.EmittedForCompatibilityOnly)'==''" Code="MSB9007" Text="ManifestNonResxWithCultureOnDisk item type is deprecated. Emit EmbeddedResource items instead, with metadata WithCulture='true', Type='Non-Resx', and optional LogicalName." />
6464 <ItemGroup>
6465 <!-- _SatelliteAssemblyResourceInputs is the list of TLDA inputs that should trigger CreateSatelliteAssemblies, so listed as inputs to that target -->
6466 <_SatelliteAssemblyResourceInputs Include="@(EmbeddedResource->'%(OutputResource)')" Condition="'%(EmbeddedResource.WithCulture)' == 'true' and '%(EmbeddedResource.Type)' == 'Resx'" />
6467 <_SatelliteAssemblyResourceInputs Include="@(EmbeddedResource)" Condition="'%(EmbeddedResource.WithCulture)' == 'true' and '%(EmbeddedResource.Type)' == 'Non-Resx'" />
6468 <!-- CONSUMED FOR COMPATIBILITY REASONS ONLY. EMIT EMBEDDEDRESOURCE INSTEAD -->
6469 <_SatelliteAssemblyResourceInputs Include="@(ManifestResourceWithCulture)" Condition="'%(ManifestResourceWithCulture.EmittedForCompatibilityOnly)'==''">
6470 <Type>Resx</Type>
6471 <WithCulture>true</WithCulture>
6472 </_SatelliteAssemblyResourceInputs>
6473 <_SatelliteAssemblyResourceInputs Include="@(ManifestNonResxWithCultureOnDisk)" Condition="'%(ManifestNonResxWithCultureOnDisk.EmittedForCompatibilityOnly)'==''">
6474 <Type>Non-Resx</Type>
6475 <WithCulture>true</WithCulture>
6476 </_SatelliteAssemblyResourceInputs>
6477 </ItemGroup>
6478 </Target>
6479 <!--
6480 ============================================================
6481 GenerateSatelliteAssemblies
6482
6483 Actually run al.exe to create the satellite assemblies.
6484 ============================================================
6485 -->
6486 <Target Name="GenerateSatelliteAssemblies" Inputs="$(MSBuildAllProjects);@(_SatelliteAssemblyResourceInputs);$(IntermediateOutputPath)$(TargetName)$(TargetExt)" Outputs="$(IntermediateOutputPath)%(Culture)\$(TargetName).resources.dll" Condition="'@(_SatelliteAssemblyResourceInputs)' != '' and '$(GenerateSatelliteAssembliesForCore)' != 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6487 <PropertyGroup>
6488 <_ALExeToolPath>$(TargetFrameworkSDKToolsDirectory)</_ALExeToolPath>
6489 <_ALExeToolPath Condition="'$(PlatformTarget)' == 'x64'">$(TargetFrameworkSDKToolsDirectory)$(PlatformTarget)\</_ALExeToolPath>
6490 </PropertyGroup>
6491 <MakeDir Directories="@(EmbeddedResource->'$(IntermediateOutputPath)%(Culture)')" />
6492 <AL AlgorithmId="$(Satellite_AlgorithmId)" BaseAddress="$(Satellite_BaseAddress)" CompanyName="$(Satellite_CompanyName)" Configuration="$(Satellite_Configuration)" Copyright="$(Satellite_Copyright)" Culture="%(Culture)" DelaySign="$(DelaySign)" Description="$(Satellite_Description)" EmbedResources="@(_SatelliteAssemblyResourceInputs)" EnvironmentVariables="$(AlEnvironment)" EvidenceFile="$(Satellite_EvidenceFile)" FileVersion="$(Satellite_FileVersion)" Flags="$(Satellite_Flags)" GenerateFullPaths="$(Satellite_GenerateFullPaths)" KeyContainer="$(KeyContainerName)" KeyFile="$(KeyOriginatorFile)" LinkResources="@(Satellite_LinkResource)" MainEntryPoint="$(Satellite_MainEntryPoint)" OutputAssembly="$(IntermediateOutputPath)%(Culture)\$(TargetName).resources.dll" Platform="$(PlatformTarget)" ProductName="$(Satellite_ProductName)" ProductVersion="$(Satellite_ProductVersion)" ResponseFiles="@(AlResponseFile)" SourceModules="@(Satellite_SourceModule)" TargetType="$(Satellite_TargetType)" TemplateFile="$(IntermediateOutputPath)$(TargetName)$(TargetExt)" Title="$(Satellite_Title)" ToolPath="$(AlToolPath)" ToolExe="$(AlToolExe)" SdkToolsPath="$(_ALExeToolPath)" Trademark="$(Satellite_Trademark)" Version="$(Satellite_Version)" Win32Icon="$(Satellite_Win32Icon)" Win32Resource="$(Satellite_Win32Resource)">
6493 <Output TaskParameter="OutputAssembly" ItemName="FileWrites" />
6494 </AL>
6495 </Target>
6496 <!--
6497 ============================================================
6498 ComputeIntermediateSatelliteAssemblies
6499
6500 Compute the paths to the intermediate satellite assemblies,
6501 with culture attributes so we can copy them to the right place.
6502 ============================================================
6503 -->
6504 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6505 <ComputeIntermediateSatelliteAssembliesDependsOn>
6506 CreateManifestResourceNames
6507 </ComputeIntermediateSatelliteAssembliesDependsOn>
6508 </PropertyGroup>
6509 <Target Name="ComputeIntermediateSatelliteAssemblies" Condition="@(EmbeddedResource->'%(WithCulture)') != ''" DependsOnTargets="$(ComputeIntermediateSatelliteAssembliesDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6510 <ItemGroup>
6511 <IntermediateSatelliteAssembliesWithTargetPath Include="$(IntermediateOutputPath)%(EmbeddedResource.Culture)\$(TargetName).resources.dll" Condition="'%(EmbeddedResource.Culture)' != ''">
6512 <Culture>%(EmbeddedResource.Culture)</Culture>
6513 <TargetPath>%(EmbeddedResource.Culture)\$(TargetName).resources.dll</TargetPath>
6514 </IntermediateSatelliteAssembliesWithTargetPath>
6515 </ItemGroup>
6516 </Target>
6517 <!--
6518 ***********************************************************************************************
6519 ***********************************************************************************************
6520 SetWin32ManifestProperties Section
6521 ***********************************************************************************************
6522 ***********************************************************************************************
6523 -->
6524 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6525 <EmbeddedWin32Manifest>$(Win32Manifest)</EmbeddedWin32Manifest>
6526 </PropertyGroup>
6527 <!--
6528 ============================================================
6529 SetWin32ManifestProperties
6530
6531 Set Win32Manifest and EmbeddedManifest properties to be used later in the build.
6532 ============================================================
6533 -->
6534 <Target Name="SetWin32ManifestProperties" Condition="'$(Win32Manifest)'==''" DependsOnTargets="ResolveComReferences;ResolveNativeReferences;_SetExternalWin32ManifestProperties;_SetEmbeddedWin32ManifestProperties" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
6535 <Target Name="_SetExternalWin32ManifestProperties" Condition="'$(GenerateClickOnceManifests)'=='true' or '@(NativeReference)'!='' or '@(ResolvedIsolatedComModules)'!=''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6536 <PropertyGroup>
6537 <!-- set _DeploymentBaseManifest property to the value of $(ApplicationManifest) if the property is set,
6538 but use _DeploymentBaseManifestWithTargetPath item-group if the property is not set to support backwards
6539 compat with earlier MSBuild versions when manifest files were determined by the item-group. If the newer
6540 property is set though, prefer that one be used to specify the manifest. -->
6541 <_DeploymentBaseManifest>$(ApplicationManifest)</_DeploymentBaseManifest>
6542 <_DeploymentBaseManifest Condition="'$(_DeploymentBaseManifest)'==''">@(_DeploymentBaseManifestWithTargetPath)</_DeploymentBaseManifest>
6543 <!-- when using external manifests, always set the NoWin32Manifest property to
6544 true if there is no value set in the incoming project file so the
6545 compilers that support manifest embedding know not to add
6546 a manifest to their built assemblies -->
6547 <NoWin32Manifest Condition="'$(NoWin32Manifest)'==''">true</NoWin32Manifest>
6548 </PropertyGroup>
6549 </Target>
6550 <Target Name="_SetEmbeddedWin32ManifestProperties" Condition="'$(GenerateClickOnceManifests)'!='true' and '@(NativeReference)'=='' and '@(ResolvedIsolatedComModules)'==''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6551 <PropertyGroup>
6552 <EmbeddedWin32Manifest>$(ApplicationManifest)</EmbeddedWin32Manifest>
6553 <Win32Manifest>$(ApplicationManifest)</Win32Manifest>
6554 </PropertyGroup>
6555 <GetFrameworkPath Condition="'$(ApplicationManifest)'=='' and '$(NoWin32Manifest)'!='true'">
6556 <Output TaskParameter="FrameworkVersion40Path" PropertyName="_FrameworkVersion40Path" />
6557 </GetFrameworkPath>
6558 <PropertyGroup>
6559 <EmbeddedWin32Manifest Condition="'$(ApplicationManifest)'=='' and '$(NoWin32Manifest)'!='true' and Exists('$(_FrameworkVersion40Path)\default.win32manifest')">$(_FrameworkVersion40Path)\default.win32manifest</EmbeddedWin32Manifest>
6560 </PropertyGroup>
6561 </Target>
6562 <!--
6563 ***********************************************************************************************
6564 ***********************************************************************************************
6565 GenerateManifests Section
6566 ***********************************************************************************************
6567 ***********************************************************************************************
6568 -->
6569 <!--
6570 ============================================================
6571 GenerateManifests
6572
6573 Generates ClickOnce application and deployment manifests or a native manifest.
6574 ============================================================
6575 -->
6576 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6577 <GenerateManifestsDependsOn>
6578 SetWin32ManifestProperties;
6579 GenerateApplicationManifest;
6580 GenerateDeploymentManifest
6581 </GenerateManifestsDependsOn>
6582 </PropertyGroup>
6583 <!--
6584 ============================================================
6585 _GenerateResolvedDeploymentManifestEntryPoint
6586
6587 Use the ResolveManifestFiles to generate the GenerateResolvedDeploymentManifestEntryPoint
6588
6589 ============================================================
6590 -->
6591 <Target Name="_GenerateResolvedDeploymentManifestEntryPoint" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6592 <ItemGroup>
6593 <_DeploymentPublishFileOfTypeManifestEntryPoint Include="@(PublishFile)" Condition="'%(FileType)'=='ManifestEntryPoint'" />
6594 </ItemGroup>
6595 <ResolveManifestFiles TargetFrameworkVersion="$(TargetFrameworkVersion)" TargetFrameworkIdentifier="$(TargetFrameworkIdentifier)" SigningManifests="$(SignManifests)" DeploymentManifestEntryPoint="@(ApplicationManifest)" PublishFiles="@(_DeploymentPublishFileOfTypeManifestEntryPoint)">
6596 <Output TaskParameter="OutputDeploymentManifestEntryPoint" ItemName="_DeploymentResolvedDeploymentManifestEntryPoint" />
6597 </ResolveManifestFiles>
6598 </Target>
6599 <Target Name="GenerateManifests" Condition="'$(GenerateClickOnceManifests)'=='true' or '@(NativeReference)'!='' or '@(ResolvedIsolatedComModules)'!='' or '$(GenerateAppxManifest)' == 'true'" DependsOnTargets="$(GenerateManifestsDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
6600 <!--
6601 ============================================================
6602 GenerateApplicationManifest
6603
6604 Generates a ClickOnce or native application manifest.
6605 An application manifest specifies declarative application identity, dependency and security information.
6606
6607 [IN]
6608 $(_DeploymentBaseManifest) - The base app.manifest from project.
6609 @(ResolvedIsolatedComModules) - The list of COM references to be isolated as reg-free COM dependencies for native assembly loader.
6610 @(_DeploymentManifestFiles) - The list of loose files (content, pdb, xml, etc.) for ClickOnce.
6611 @(_DeploymentManifestDependencies) - The list of application dependencies (typically this is the set of assembly dependencies in bin\) for ClickOnce.
6612 @(AppConfigWithTargetPath) - App config file, if present.
6613 $(_DeploymentManifestType) - Type of manifest to be generated, either "Native" or "ClickOnce".
6614
6615 [OUT]
6616 @(ApplicationManifest) - Generated native or ClickOnce application manifest, i.e. WindowsApplication1.exe.manifest
6617 ============================================================
6618 -->
6619 <Target Name="GenerateApplicationManifest" DependsOnTargets="&#xD;&#xA; _DeploymentSetClickOnceVersions;&#xD;&#xA; _DeploymentGenerateLauncher;&#xD;&#xA; _DeploymentComputeNativeManifestInfo;&#xD;&#xA; _DeploymentComputeClickOnceManifestInfo;&#xD;&#xA; ResolveComReferences;&#xD;&#xA; ResolveNativeReferences;&#xD;&#xA; _GenerateResolvedDeploymentManifestEntryPoint" Inputs="&#xD;&#xA; $(MSBuildAllProjects);&#xD;&#xA; @(AppConfigWithTargetPath);&#xD;&#xA; $(_DeploymentBaseManifest);&#xD;&#xA; @(ResolvedIsolatedComModules);&#xD;&#xA; @(_DeploymentManifestDependencies);&#xD;&#xA; @(_DeploymentResolvedManifestEntryPoint);&#xD;&#xA; @(_DeploymentManifestFiles)" Outputs="@(ApplicationManifest)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6620 <RequiresFramework35SP1Assembly ReferencedAssemblies="@(Reference)" ErrorReportUrl="$(_DeploymentFormattedErrorReportUrl)" TargetFrameworkVersion="$(TargetFrameworkVersion)" CreateDesktopShortcut="$(CreateDesktopShortcut)" SigningManifests="$(SignManifests)" Assemblies="@(_DeploymentManifestDependencies)" DeploymentManifestEntryPoint="@(_DeploymentResolvedDeploymentManifestEntryPoint)" EntryPoint="@(_DeploymentResolvedManifestEntryPoint)" Files="@(_DeploymentManifestFiles)" SuiteName="$(SuiteName)">
6621 <Output TaskParameter="RequiresMinimumFramework35SP1" PropertyName="_DeploymentRequiresMinimumFramework35SP1" />
6622 </RequiresFramework35SP1Assembly>
6623 <GenerateApplicationManifest AssemblyName="$(_DeploymentApplicationManifestIdentity)" AssemblyVersion="$(_DeploymentManifestVersion)" ConfigFile="@(AppConfigWithTargetPath)" ClrVersion="$(ClrVersion)" Dependencies="@(_DeploymentManifestDependencies)" Description="$(Description)" EntryPoint="@(_DeploymentResolvedManifestEntryPoint)" ErrorReportUrl="$(_DeploymentFormattedErrorReportUrl)" FileAssociations="@(FileAssociation)" Files="@(_DeploymentManifestFiles)" HostInBrowser="$(HostInBrowser)" IconFile="@(_DeploymentManifestIconFile)" InputManifest="$(_DeploymentBaseManifest)" IsolatedComReferences="@(ResolvedIsolatedComModules)" LauncherBasedDeployment="$(_DeploymentLauncherBased)" ManifestType="$(_DeploymentManifestType)" MaxTargetPath="$(MaxTargetPath)" OutputManifest="@(ApplicationManifest)" OSVersion="$(OSVersion)" Platform="$(_DeploymentPlatformTarget)" Product="$(ProductName)" Publisher="$(PublisherName)" RequiresMinimumFramework35SP1="$(_DeploymentRequiresMinimumFramework35SP1)" SuiteName="$(SuiteName)" SupportUrl="$(_DeploymentFormattedSupportUrl)" TargetCulture="$(TargetCulture)" TargetFrameworkSubset="$(TargetFrameworkSubset)" TargetFrameworkProfile="$(TargetFrameworkProfile)" TargetFrameworkVersion="$(_DeploymentManifestTargetFrameworkVersion)" TrustInfoFile="@(_DeploymentIntermediateTrustInfoFile)" UseApplicationTrust="$(UseApplicationTrust)">
6624 <Output TaskParameter="OutputManifest" ItemName="FileWrites" />
6625 </GenerateApplicationManifest>
6626 <PropertyGroup>
6627 <_DeploymentCopyApplicationManifest>true</_DeploymentCopyApplicationManifest>
6628 </PropertyGroup>
6629 </Target>
6630 <!--
6631 ============================================================
6632 _DeploymentSetClickOnceVersions
6633
6634 Sets ClickOnce versions
6635 ============================================================
6636 -->
6637 <Target Name="_DeploymentSetClickOnceVersions" Condition="'$(GenerateClickOnceManifests)'=='true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6638 <PropertyGroup>
6639 <_DeploymentManifestTargetFrameworkMoniker>$(TargetFrameworkMoniker)</_DeploymentManifestTargetFrameworkMoniker>
6640 <_DeploymentManifestTargetFrameworkVersion>$(TargetFrameworkVersion)</_DeploymentManifestTargetFrameworkVersion>
6641 </PropertyGroup>
6642 </Target>
6643 <!--
6644 ============================================================
6645 _DeploymentGenerateLauncher
6646
6647 Generates Launcher if needed
6648 ============================================================
6649 -->
6650 <Target Name="_DeploymentGenerateLauncher" Condition="'$(GenerateClickOnceManifests)'=='true' and '$(_DeploymentLauncherBased)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6651 <!--
6652 If apphost based built EXE is found, use that as the Launcher.exe's entry point otherwise
6653 use the built DLL as the entry point
6654 -->
6655 <ItemGroup Condition="'$(UseAppHost)' == 'true' and '$(_IsExecutable)' == 'true' and exists('$(AppHostIntermediatePath)')">
6656 <EntryPointForLauncher Include="$(AppHostIntermediatePath)" />
6657 <ContentWithTargetPath Include="@(EntryPointForLauncher)" />
6658 </ItemGroup>
6659 <ItemGroup Condition="'$(EntryPointForLauncher)'==''">
6660 <EntryPointForLauncher Include="$(_DeploymentManifestEntryPoint)" />
6661 </ItemGroup>
6662 <!-- Generates Launcher and obtains its Framework version and moniker -->
6663 <GenerateLauncher AssemblyName="$(_DeploymentApplicationManifestIdentity)" EntryPoint="@(EntryPointForLauncher)" OutputPath="$(IntermediateOutputPath)" VisualStudioVersion="$(VisualStudioVersion)">
6664 <Output TaskParameter="OutputEntryPoint" ItemName="_DeploymentManifestLauncherEntryPoint" />
6665 </GenerateLauncher>
6666 <!--
6667 .NET Core ClickOnce deployments use Launcher, which targets .NET FX 4.5 as the minimum
6668 supported ClickOnce runtime version on target user's machine.
6669
6670 TargetFramework Verion and Moniker properties are used in Deployment manifest generation
6671 task to set compatibleFrameworks element, which needs to match Launcher's target version.
6672
6673 Version can be overriden with DeploymentManifestTargetFrameworkVersionOverride property.
6674 -->
6675 <PropertyGroup>
6676 <_DeploymentManifestTargetFrameworkVersion Condition="'$(DeploymentManifestTargetFrameworkVersionOverride)' == ''">v4.5</_DeploymentManifestTargetFrameworkVersion>
6677 <_DeploymentManifestTargetFrameworkVersion Condition="'$(DeploymentManifestTargetFrameworkVersionOverride)' != ''">$(DeploymentManifestTargetFrameworkVersionOverride)</_DeploymentManifestTargetFrameworkVersion>
6678 <_DeploymentManifestTargetFrameworkMoniker>.NETFramework,Version=$(_DeploymentManifestTargetFrameworkVersion)</_DeploymentManifestTargetFrameworkMoniker>
6679 </PropertyGroup>
6680 <!-- Sign Launcher EXE -->
6681 <SignFile CertificateThumbprint="$(_DeploymentResolvedManifestCertificateThumbprint)" TimestampUrl="$(ManifestTimestampUrl)" SigningTarget="@(_DeploymentManifestLauncherEntryPoint)" TargetFrameworkVersion="$(TargetFrameworkVersion)" TargetFrameworkIdentifier="$(TargetFrameworkIdentifier)" Condition="'$(_DeploymentSignClickOnceManifests)'=='true'" />
6682 <!-- Sign the original ClickOnce entrypoint -->
6683 <SignFile CertificateThumbprint="$(_DeploymentResolvedManifestCertificateThumbprint)" TimestampUrl="$(ManifestTimestampUrl)" SigningTarget="@(_DeploymentManifestEntryPoint)" TargetFrameworkVersion="$(TargetFrameworkVersion)" TargetFrameworkIdentifier="$(TargetFrameworkIdentifier)" Condition="'$(_DeploymentSignClickOnceManifests)'=='true'" />
6684 <!-- Sign apphost.exe if it's the entrypoint for the Launcher.exe. This is the case in loose file publish -->
6685 <SignFile CertificateThumbprint="$(_DeploymentResolvedManifestCertificateThumbprint)" TimestampUrl="$(ManifestTimestampUrl)" SigningTarget="$(AppHostIntermediatePath)" TargetFrameworkVersion="$(TargetFrameworkVersion)" TargetFrameworkIdentifier="$(TargetFrameworkIdentifier)" Condition="'$(_DeploymentSignClickOnceManifests)'=='true' and '$(UseAppHost)' == 'true' and '$(PublishSingleFile)' != 'true' and '$(_IsExecutable)' == 'true' and exists('$(AppHostIntermediatePath)')" />
6686 <!--
6687 Replace entry-point with Launcher and move original project's entry-point to content group.
6688 -->
6689 <ItemGroup>
6690 <ContentWithTargetPath Include="@(_DeploymentManifestEntryPoint)" />
6691 <_DeploymentManifestEntryPoint Remove="@(_DeploymentManifestEntryPoint)" />
6692 <_DeploymentManifestEntryPoint Include="@(_DeploymentManifestLauncherEntryPoint)" />
6693 </ItemGroup>
6694 </Target>
6695 <!--
6696 ============================================================
6697 _DeploymentComputeNativeManifestInfo
6698
6699 Compute info for native manifest generation
6700 ============================================================
6701 -->
6702 <Target Name="_DeploymentComputeNativeManifestInfo" Condition="'$(GenerateClickOnceManifests)'!='true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6703 <!-- Create list of items for manifest generation -->
6704 <ResolveManifestFiles NativeAssemblies="@(NativeReferenceFile);@(_DeploymentNativePrerequisite)">
6705 <Output TaskParameter="OutputAssemblies" ItemName="_DeploymentManifestDependencies" />
6706 </ResolveManifestFiles>
6707 <PropertyGroup>
6708 <_DeploymentManifestType>Native</_DeploymentManifestType>
6709 </PropertyGroup>
6710 <!-- Obtain manifest version from the built assembly -->
6711 <GetAssemblyIdentity AssemblyFiles="@(IntermediateAssembly)">
6712 <Output TaskParameter="Assemblies" ItemName="_IntermediateAssemblyIdentity" />
6713 </GetAssemblyIdentity>
6714 <PropertyGroup>
6715 <_DeploymentManifestVersion>@(_IntermediateAssemblyIdentity->'%(Version)')</_DeploymentManifestVersion>
6716 </PropertyGroup>
6717 </Target>
6718 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6719 <DeploymentComputeClickOnceManifestInfoDependsOn>
6720 CleanPublishFolder;
6721 _DeploymentGenerateTrustInfo
6722 $(DeploymentComputeClickOnceManifestInfoDependsOn)
6723 </DeploymentComputeClickOnceManifestInfoDependsOn>
6724 </PropertyGroup>
6725 <!--
6726 ============================================================
6727 _DeploymentComputeClickOnceManifestInfo
6728
6729 Compute info for ClickOnce manifest generation
6730 ============================================================
6731 -->
6732 <Target Name="_DeploymentComputeClickOnceManifestInfo" Condition="'$(GenerateClickOnceManifests)'=='true'" DependsOnTargets="$(DeploymentComputeClickOnceManifestInfoDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6733 <!-- Grab just the serialization assemblies for a referenced assembly. There may also be a symbols file in ReferenceRelatedPaths -->
6734 <ItemGroup>
6735 <_SGenDllsRelatedToCurrentDll Include="@(_ReferenceSerializationAssemblyPaths->'%(FullPath)')" Condition="'%(Extension)' == '.dll'" />
6736 <_SGenDllsRelatedToCurrentDll Include="@(SerializationAssembly->'%(FullPath)')" Condition="'%(Extension)' == '.dll'" />
6737 </ItemGroup>
6738 <ItemGroup Condition="!exists('$(ProjectLockFile)')">
6739 <_CopyLocalFalseRefPaths Include="@(ReferencePath)" Condition="'%(CopyLocal)' == 'false'" />
6740 <_CopyLocalFalseRefPathsWithExclusion Include="@(_CopyLocalFalseRefPaths)" Exclude="@(ReferenceCopyLocalPaths);@(_NETStandardLibraryNETFrameworkLib)" />
6741 </ItemGroup>
6742 <!-- Flag primary dependencies-certain warnings emitted during application manifest generation apply only to them. -->
6743 <ItemGroup>
6744 <_SatelliteAssemblies Include="@(IntermediateSatelliteAssembliesWithTargetPath);@(ReferenceSatellitePaths)" />
6745 <_DeploymentReferencePaths Include="@(ReferenceCopyLocalPaths)" Condition="('%(Extension)' == '.dll' Or '%(Extension)' == '.exe' Or '%(Extension)' == '.md') and ('%(ReferenceCopyLocalPaths.CopyToPublishDirectory)' != 'false')">
6746 <IsPrimary>true</IsPrimary>
6747 </_DeploymentReferencePaths>
6748 <_DeploymentReferencePaths Include="@(_CopyLocalFalseRefPathsWithExclusion)" />
6749 </ItemGroup>
6750 <!-- Include managed references in clickonce manifest only if single file publish is false -->
6751 <ItemGroup Condition="'$(PublishSingleFile)' != 'true'">
6752 <_ManifestManagedReferences Include="@(_DeploymentReferencePaths);@(ReferenceDependencyPaths);@(_SGenDllsRelatedToCurrentDll);@(SerializationAssembly);@(ReferenceCOMWrappersToCopyLocal)" Exclude="@(_SatelliteAssemblies);@(_ReferenceScatterPaths);@(_ExcludedAssembliesFromManifestGeneration)" />
6753 </ItemGroup>
6754 <!-- Include the following files in clickonce manifest only if single file publish is false -->
6755 <ItemGroup Condition="'$(PublishSingleFile)' != 'true'">
6756 <!--
6757 _ClickOnceRuntimeCopyLocalItems group contains any runtimes folder assets of Nuget packages that are not included in
6758 _DeploymentReferencePaths (e.g. pdbs). They are populated from the RuntimeTargetsCopyLocalItems and NativeCopyLocalItems
6759 group that contain the RID-specific assets that go in runtimes folder on publish. They are output groups of the
6760 ResolvePackageAssets target in dotnet/sdk
6761 -->
6762 <_ClickOnceRuntimeCopyLocalItems Include="@(RuntimeTargetsCopyLocalItems)" Condition="'%(RuntimeTargetsCopyLocalItems.CopyLocal)' == 'true'" />
6763 <_ClickOnceRuntimeCopyLocalItems Include="@(NativeCopyLocalItems)" Condition="'%(NativeCopyLocalItems.CopyLocal)' == 'true'" />
6764 <_ClickOnceRuntimeCopyLocalItems Remove="@(_DeploymentReferencePaths)" />
6765 <_ClickOnceFiles Include="@(ContentWithTargetPath);@(_DeploymentManifestIconFile);@(AppConfigWithTargetPath);@(NetCoreRuntimeJsonFilesForClickOnce);@(_ClickOnceRuntimeCopyLocalItems)" />
6766 </ItemGroup>
6767 <!-- For single file publish, we need to include the SF bundle EXE and files excluded from the bundle EXE in the clickonce manifest -->
6768 <ItemGroup Condition="'$(PublishSingleFile)' == 'true'">
6769 <_ClickOnceFiles Include="$(PublishedSingleFilePath)" />
6770 <_ClickOnceFiles Include="@(_FilesExcludedFromBundle)" />
6771 </ItemGroup>
6772 <!-- For single file publish in .net core app, sign the SF EXE if signing is enabled -->
6773 <SignFile CertificateThumbprint="$(_DeploymentResolvedManifestCertificateThumbprint)" TimestampUrl="$(ManifestTimestampUrl)" SigningTarget="$(PublishedSingleFilePath)" TargetFrameworkVersion="$(TargetFrameworkVersion)" TargetFrameworkIdentifier="$(TargetFrameworkIdentifier)" Condition="'$(_DeploymentSignClickOnceManifests)'=='true' and '$(_DeploymentLauncherBased)' == 'true' and '$(PublishSingleFile)' == 'true'" />
6774 <!--
6775 If ReadyToRun is enabled in loose files scenario, we need to remove entries of the IL images that have gone through R2R
6776 compiler and replace them with the entries for their R2R images. The R2R application image also needs to be signed if necessary.
6777 -->
6778 <ItemGroup Condition="'$(PublishReadyToRun)' == 'true' and '$(PublishSingleFile)' != 'true'">
6779 <_ManifestManagedReferences Remove="@(_ReadyToRunCompileList)" />
6780 <_ClickOnceFiles Remove="@(_ReadyToRunCompileList)" />
6781 <_ClickOnceFiles Include="@(_ReadyToRunFilesToPublish)" />
6782 <_ClickOnceTargetFile Include="@(_ReadyToRunFilesToPublish)" Condition="'%(Filename)%(Extension)' == '$(TargetFileName)'" />
6783 </ItemGroup>
6784 <!-- Sign application image created by R2R -->
6785 <SignFile CertificateThumbprint="$(_DeploymentResolvedManifestCertificateThumbprint)" TimestampUrl="$(ManifestTimestampUrl)" SigningTarget="@(_ClickOnceTargetFile)" TargetFrameworkVersion="$(TargetFrameworkVersion)" TargetFrameworkIdentifier="$(TargetFrameworkIdentifier)" Condition="'$(_DeploymentSignClickOnceManifests)' == 'true' and '$(PublishReadyToRun)' == 'true' and '$(PublishSingleFile)' != 'true'" />
6786 <!-- Copy the application executable from Obj folder to app.publish folder.
6787 This is being done to avoid Windows Forms designer memory issues that can arise while operating directly on files located in Obj directory. -->
6788 <Copy SourceFiles="@(_DeploymentManifestEntryPoint)" DestinationFolder="$(PublishDir)">
6789 <Output TaskParameter="DestinationFiles" ItemName="_DeploymentClickOnceApplicationExecutable" />
6790 </Copy>
6791 <!-- Sign the application executable located in app.publish folder. Signing this file is done to comply with SmartScreen. -->
6792 <SignFile CertificateThumbprint="$(_DeploymentResolvedManifestCertificateThumbprint)" TimestampUrl="$(ManifestTimestampUrl)" SigningTarget="@(_DeploymentClickOnceApplicationExecutable)" Condition="'$(_DeploymentResolvedManifestCertificateThumbprint)'!='' and '$(_DeploymentSignClickOnceManifests)'=='true' and '$(TargetExt)' == '.exe'" />
6793 <!-- Create list of items for manifest generation -->
6794 <ResolveManifestFiles AssemblyName="$(_DeploymentApplicationManifestIdentity)" EntryPoint="@(_DeploymentClickOnceApplicationExecutable)" ExtraFiles="@(_DebugSymbolsIntermediatePath);$(IntermediateOutputPath)$(TargetName).xml;@(_ReferenceRelatedPaths)" Files="@(_ClickOnceFiles)" IsSelfContainedPublish="$(SelfContained)" IsSingleFilePublish="$(PublishSingleFile)" LauncherBasedDeployment="$(_DeploymentLauncherBased)" ManagedAssemblies="@(_ManifestManagedReferences)" NativeAssemblies="@(NativeReferenceFile);@(_DeploymentNativePrerequisite)" PublishFiles="@(PublishFile)" RuntimePackAssets="@(RuntimePackAsset)" SatelliteAssemblies="@(_SatelliteAssemblies)" SigningManifests="$(SignManifests)" TargetCulture="$(TargetCulture)" TargetFrameworkIdentifier="$(TargetFrameworkIdentifier)" TargetFrameworkVersion="$(TargetFrameworkVersion)">
6795 <Output TaskParameter="OutputAssemblies" ItemName="_DeploymentManifestDependenciesUnfiltered" />
6796 <Output TaskParameter="OutputFiles" ItemName="_DeploymentManifestFiles" />
6797 <Output TaskParameter="OutputEntryPoint" ItemName="_DeploymentResolvedManifestEntryPoint" />
6798 </ResolveManifestFiles>
6799 <!-- We have to filter items out of the dependencies that have neither CopyLocal set to true, -->
6800 <!-- nor the dependency type manually set to 'Install'. -->
6801 <ItemGroup>
6802 <_DeploymentManifestDependencies Include="@(_DeploymentManifestDependenciesUnfiltered)" Condition="!('%(_DeploymentManifestDependenciesUnfiltered.CopyLocal)' == 'false' And '%(_DeploymentManifestDependenciesUnfiltered.DependencyType)' != 'Install')" />
6803 </ItemGroup>
6804 <PropertyGroup>
6805 <_DeploymentManifestType>ClickOnce</_DeploymentManifestType>
6806 </PropertyGroup>
6807 <!--
6808 Manifest platform should always be MSIL for Launcher-based deployments, as the Launcher is MSIL.
6809 Do not set _DeploymentPlatformTarget property in Launcher case - this is interpreted as MSIL,
6810 by GenerateApplicationManifest and GenerateDeploymentManifest tasks.
6811 Otherwise, set it to PlatformTarget.
6812 -->
6813 <PropertyGroup>
6814 <_DeploymentPlatformTarget Condition="'$(_DeploymentLauncherBased)' != 'true'">$(PlatformTarget)</_DeploymentPlatformTarget>
6815 </PropertyGroup>
6816 <!-- Obtain manifest version from ApplicationVersion and ApplicationRevision properties -->
6817 <FormatVersion Version="$(ApplicationVersion)" Revision="$(ApplicationRevision)">
6818 <Output TaskParameter="OutputVersion" PropertyName="_DeploymentManifestVersion" />
6819 </FormatVersion>
6820 <FormatUrl InputUrl="$(_DeploymentUrl)">
6821 <Output TaskParameter="OutputUrl" PropertyName="_DeploymentFormattedDeploymentUrl" />
6822 </FormatUrl>
6823 <FormatUrl InputUrl="$(SupportUrl)">
6824 <Output TaskParameter="OutputUrl" PropertyName="_DeploymentFormattedSupportUrl" />
6825 </FormatUrl>
6826 <FormatUrl InputUrl="$(ErrorReportUrl)">
6827 <Output TaskParameter="OutputUrl" PropertyName="_DeploymentFormattedErrorReportUrl" />
6828 </FormatUrl>
6829 </Target>
6830 <!--
6831 ============================================================
6832 _DeploymentGenerateTrustInfo
6833
6834 Generates the application permission set for inclusion in the generated ClickOnce application manifest.
6835 ============================================================
6836 -->
6837 <Target Name="_DeploymentGenerateTrustInfo" Condition="'$(TargetZone)'!=''" Inputs="&#xD;&#xA; $(MSBuildAllProjects);&#xD;&#xA; $(_DeploymentBaseManifest);&#xD;&#xA; " Outputs="@(_DeploymentIntermediateTrustInfoFile)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6838 <GenerateTrustInfo BaseManifest="$(_DeploymentBaseManifest)" ApplicationDependencies="@(ReferencePath);@(ReferenceDependencyPaths)" ExcludedPermissions="$(ExcludedPermissions)" TargetFrameworkMoniker="$(TargetFrameworkMoniker)" TargetZone="$(TargetZone)" TrustInfoFile="@(_DeploymentIntermediateTrustInfoFile)">
6839 <Output TaskParameter="TrustInfoFile" ItemName="FileWrites" />
6840 </GenerateTrustInfo>
6841 </Target>
6842 <!--
6843 ============================================================
6844 GenerateDeploymentManifest
6845
6846 Generates a ClickOnce deployment manifest.
6847 An deployment manifest specifies declarative application identity and application update information.
6848 ============================================================
6849 -->
6850 <Target Name="GenerateDeploymentManifest" DependsOnTargets="GenerateApplicationManifest" Inputs="&#xD;&#xA; $(MSBuildAllProjects);&#xD;&#xA; @(ApplicationManifest)&#xD;&#xA; " Outputs="@(DeployManifest)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6851 <GenerateDeploymentManifest AssemblyName="$(_DeploymentDeployManifestIdentity)" AssemblyVersion="$(_DeploymentManifestVersion)" CreateDesktopShortcut="$(CreateDesktopShortcut)" DeploymentUrl="$(_DeploymentFormattedDeploymentUrl)" Description="$(Description)" DisallowUrlActivation="$(DisallowUrlActivation)" EntryPoint="@(_DeploymentResolvedDeploymentManifestEntryPoint)" ErrorReportUrl="$(_DeploymentFormattedErrorReportUrl)" Install="$(Install)" LauncherBasedDeployment="$(_DeploymentLauncherBased)" MapFileExtensions="$(MapFileExtensions)" MaxTargetPath="$(MaxTargetPath)" MinimumRequiredVersion="$(_DeploymentBuiltMinimumRequiredVersion)" OutputManifest="@(DeployManifest)" Platform="$(_DeploymentPlatformTarget)" Product="$(ProductName)" Publisher="$(PublisherName)" SuiteName="$(SuiteName)" SupportUrl="$(_DeploymentFormattedSupportUrl)" TargetCulture="$(TargetCulture)" TargetFrameworkVersion="$(_DeploymentManifestTargetFrameworkVersion)" TargetFrameworkMoniker="$(_DeploymentManifestTargetFrameworkMoniker)" TrustUrlParameters="$(TrustUrlParameters)" UpdateEnabled="$(UpdateEnabled)" UpdateInterval="$(_DeploymentBuiltUpdateInterval)" UpdateMode="$(UpdateMode)" UpdateUnit="$(_DeploymentBuiltUpdateIntervalUnits)" Condition="'$(GenerateClickOnceManifests)'=='true'">
6852 <Output TaskParameter="OutputManifest" ItemName="FileWrites" />
6853 </GenerateDeploymentManifest>
6854 </Target>
6855 <!--
6856 ***********************************************************************************************
6857 ***********************************************************************************************
6858 PrepareForRun Section
6859 ***********************************************************************************************
6860 ***********************************************************************************************
6861 -->
6862 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6863 <SkipCopyUnchangedFiles Condition="'$(SkipCopyUnchangedFiles)' == ''">true</SkipCopyUnchangedFiles>
6864 <UseCommonOutputDirectory Condition="'$(UseCommonOutputDirectory)' == ''">false</UseCommonOutputDirectory>
6865 </PropertyGroup>
6866 <!--
6867 ============================================================
6868 PrepareForRun
6869
6870 Copy the build outputs to the final directory if they have changed.
6871 ============================================================
6872 -->
6873 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6874 <PrepareForRunDependsOn>
6875 CopyFilesToOutputDirectory
6876 </PrepareForRunDependsOn>
6877 </PropertyGroup>
6878 <Target Name="PrepareForRun" DependsOnTargets="$(PrepareForRunDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
6879 <!--
6880 ============================================================
6881 CopyFilesToOutputDirectory
6882
6883 Copy all build outputs, satellites and other necessary files to the final directory.
6884 ============================================================
6885 -->
6886 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6887 <!-- By default we're not using Hard or Symbolic Links to copy to the output directory, and never when building in VS -->
6888 <CreateHardLinksForCopyAdditionalFilesIfPossible Condition="'$(BuildingInsideVisualStudio)' == 'true' or '$(CreateHardLinksForCopyAdditionalFilesIfPossible)' == ''">false</CreateHardLinksForCopyAdditionalFilesIfPossible>
6889 <CreateSymbolicLinksForCopyAdditionalFilesIfPossible Condition="'$(BuildingInsideVisualStudio)' == 'true' or '$(CreateSymbolicLinksForCopyAdditionalFilesIfPossible)' == ''">false</CreateSymbolicLinksForCopyAdditionalFilesIfPossible>
6890 </PropertyGroup>
6891 <Target Name="CopyFilesToOutputDirectory" DependsOnTargets="&#xD;&#xA; ComputeIntermediateSatelliteAssemblies;&#xD;&#xA; _CopyFilesMarkedCopyLocal;&#xD;&#xA; _CopySourceItemsToOutputDirectory;&#xD;&#xA; _CopyAppConfigFile;&#xD;&#xA; _CopyManifestFiles;&#xD;&#xA; _CheckForCompileOutputs;&#xD;&#xA; _SGenCheckForOutputs" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6892 <PropertyGroup>
6893 <!-- By default we're not using Hard Links to copy to the output directory, and never when building in VS -->
6894 <CreateHardLinksForCopyFilesToOutputDirectoryIfPossible Condition="'$(BuildingInsideVisualStudio)' == 'true' or '$(CreateHardLinksForCopyFilesToOutputDirectoryIfPossible)' == ''">false</CreateHardLinksForCopyFilesToOutputDirectoryIfPossible>
6895 <CreateSymbolicLinksForCopyFilesToOutputDirectoryIfPossible Condition="'$(BuildingInsideVisualStudio)' == 'true' or '$(CreateSymbolicLinksForCopyFilesToOutputDirectoryIfPossible)' == ''">false</CreateSymbolicLinksForCopyFilesToOutputDirectoryIfPossible>
6896 <ErrorIfLinkFailsForCopyFilesToOutputDirectory Condition="'$(BuildingInsideVisualStudio)' == 'true' or '$(ErrorIfLinkFailsForCopyFilesToOutputDirectory)' == ''">false</ErrorIfLinkFailsForCopyFilesToOutputDirectory>
6897 </PropertyGroup>
6898 <PropertyGroup>
6899 <CopyBuildOutputToOutputDirectory Condition="'$(CopyBuildOutputToOutputDirectory)'==''">true</CopyBuildOutputToOutputDirectory>
6900 <CopyOutputSymbolsToOutputDirectory Condition="'$(CopyOutputSymbolsToOutputDirectory)'==''">true</CopyOutputSymbolsToOutputDirectory>
6901 <CopyDocumentationFileToOutputDirectory Condition="'$(CopyDocumentationFileToOutputDirectory)'==''">true</CopyDocumentationFileToOutputDirectory>
6902 </PropertyGroup>
6903 <!-- Copy the build product (.dll or .exe). -->
6904 <Copy SourceFiles="@(IntermediateAssembly)" DestinationFolder="$(OutDir)" SkipUnchangedFiles="$(SkipCopyUnchangedFiles)" OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" UseHardlinksIfPossible="$(CreateHardLinksForCopyFilesToOutputDirectoryIfPossible)" UseSymboliclinksIfPossible="$(CreateSymbolicLinksForCopyFilesToOutputDirectoryIfPossible)" ErrorIfLinkFails="$(ErrorIfLinkFailsForCopyFilesToOutputDirectory)" Condition="'$(CopyBuildOutputToOutputDirectory)' == 'true' and '$(SkipCopyBuildProduct)' != 'true'">
6905 <Output TaskParameter="DestinationFiles" ItemName="MainAssembly" />
6906 <Output TaskParameter="DestinationFiles" ItemName="FileWrites" />
6907 </Copy>
6908 <!-- Copy the reference assembly build product (.dll or .exe). -->
6909 <CopyRefAssembly SourcePath="@(IntermediateRefAssembly)" DestinationPath="$(TargetRefPath)" Condition="'$(ProduceReferenceAssembly)' == 'true' and '$(CopyBuildOutputToOutputDirectory)' == 'true' and '$(SkipCopyBuildProduct)' != 'true'">
6910 <Output TaskParameter="DestinationPath" ItemName="ReferenceAssembly" />
6911 <Output TaskParameter="DestinationPath" ItemName="FileWrites" />
6912 </CopyRefAssembly>
6913 <Message Importance="High" Text="$(MSBuildProjectName) -&gt; @(MainAssembly->'%(FullPath)')" Condition="'$(CopyBuildOutputToOutputDirectory)' == 'true' and '$(SkipCopyBuildProduct)'!='true'" />
6914 <!-- Copy the additional modules. -->
6915 <Copy SourceFiles="@(AddModules)" DestinationFolder="$(OutDir)" SkipUnchangedFiles="$(SkipCopyUnchangedFiles)" OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" UseHardlinksIfPossible="$(CreateHardLinksForCopyAdditionalFilesIfPossible)" UseSymboliclinksIfPossible="$(CreateSymbolicLinksForCopyAdditionalFilesIfPossible)" Condition="'@(AddModules)' != ''">
6916 <Output TaskParameter="DestinationFiles" ItemName="FileWrites" />
6917 </Copy>
6918 <!-- Copy the serialization assembly if it exists. -->
6919 <Copy SourceFiles="$(IntermediateOutputPath)$(_SGenDllName)" DestinationFiles="$(OutDir)$(_SGenDllName)" SkipUnchangedFiles="$(SkipCopyUnchangedFiles)" OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" UseHardlinksIfPossible="$(CreateHardLinksForCopyFilesToOutputDirectoryIfPossible)" UseSymboliclinksIfPossible="$(CreateSymbolicLinksForCopyFilesToOutputDirectoryIfPossible)" ErrorIfLinkFails="$(ErrorIfLinkFailsForCopyFilesToOutputDirectory)" Condition="'$(_SGenDllCreated)'=='true'">
6920 <Output TaskParameter="DestinationFiles" ItemName="FileWrites" />
6921 </Copy>
6922 <!-- Copy the debug information file (.pdb), if any -->
6923 <Copy SourceFiles="@(_DebugSymbolsIntermediatePath)" DestinationFiles="@(_DebugSymbolsOutputPath)" SkipUnchangedFiles="$(SkipCopyUnchangedFiles)" OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" UseHardlinksIfPossible="$(CreateHardLinksForCopyFilesToOutputDirectoryIfPossible)" UseSymboliclinksIfPossible="$(CreateSymbolicLinksForCopyFilesToOutputDirectoryIfPossible)" ErrorIfLinkFails="$(ErrorIfLinkFailsForCopyFilesToOutputDirectory)" Condition="'$(_DebugSymbolsProduced)'=='true' and '$(SkipCopyingSymbolsToOutputDirectory)' != 'true' and '$(CopyOutputSymbolsToOutputDirectory)'=='true'">
6924 <Output TaskParameter="DestinationFiles" ItemName="FileWrites" />
6925 </Copy>
6926 <!-- Copy the resulting XML documentation file, if any. -->
6927 <Copy SourceFiles="@(DocFileItem)" DestinationFiles="@(FinalDocFile)" SkipUnchangedFiles="$(SkipCopyUnchangedFiles)" OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" UseHardlinksIfPossible="$(CreateHardLinksForCopyFilesToOutputDirectoryIfPossible)" UseSymboliclinksIfPossible="$(CreateSymbolicLinksForCopyFilesToOutputDirectoryIfPossible)" ErrorIfLinkFails="$(ErrorIfLinkFailsForCopyFilesToOutputDirectory)" Condition="'$(_DocumentationFileProduced)'=='true' and '$(CopyDocumentationFileToOutputDirectory)'=='true'">
6928 <Output TaskParameter="DestinationFiles" ItemName="FileWrites" />
6929 </Copy>
6930 <!-- Copy satellite assemblies. -->
6931 <Copy SourceFiles="@(IntermediateSatelliteAssembliesWithTargetPath)" DestinationFiles="@(IntermediateSatelliteAssembliesWithTargetPath->'$(OutDir)%(Culture)\$(TargetName).resources.dll')" SkipUnchangedFiles="$(SkipCopyUnchangedFiles)" OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" UseHardlinksIfPossible="$(CreateHardLinksForCopyFilesToOutputDirectoryIfPossible)" UseSymboliclinksIfPossible="$(CreateSymbolicLinksForCopyFilesToOutputDirectoryIfPossible)" ErrorIfLinkFails="$(ErrorIfLinkFailsForCopyFilesToOutputDirectory)" Condition="'@(IntermediateSatelliteAssembliesWithTargetPath)' != ''">
6932 <Output TaskParameter="DestinationFiles" ItemName="FileWrites" />
6933 </Copy>
6934 <!--
6935 Copy COM reference wrappers, isolated COM references, COM references included by
6936 native (manifest) references, native (manifest) reference files themselves.
6937 -->
6938 <Copy SourceFiles="@(ReferenceComWrappersToCopyLocal); @(ResolvedIsolatedComModules); @(_DeploymentLooseManifestFile); @(NativeReferenceFile)" DestinationFolder="$(OutDir)" SkipUnchangedFiles="$(SkipCopyUnchangedFiles)" OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" UseHardlinksIfPossible="$(CreateHardLinksForCopyAdditionalFilesIfPossible)" UseSymboliclinksIfPossible="$(CreateSymbolicLinksForCopyAdditionalFilesIfPossible)" Condition="'@(ReferenceComWrappersToCopyLocal)' != '' or '@(ResolvedIsolatedComModules)' != '' or '@(_DeploymentLooseManifestFile)' != '' or '@(NativeReferenceFile)' != '' ">
6939 <Output TaskParameter="DestinationFiles" ItemName="FileWritesShareable" />
6940 </Copy>
6941 <!-- Copy the build product of WinMDExp. -->
6942 <Copy SourceFiles="@(WinMDExpArtifacts)" DestinationFolder="$(OutDir)" SkipUnchangedFiles="$(SkipCopyUnchangedFiles)" OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" UseHardlinksIfPossible="$(CreateHardLinksForCopyFilesToOutputDirectoryIfPossible)" UseSymboliclinksIfPossible="$(CreateSymbolicLinksForCopyFilesToOutputDirectoryIfPossible)" ErrorIfLinkFails="$(ErrorIfLinkFailsForCopyFilesToOutputDirectory)" Condition="'$(SkipCopyWinMDArtifact)' != 'true' and '@(WinMDExpArtifacts)' != ''">
6943 <Output TaskParameter="DestinationFiles" ItemName="FileWrites" />
6944 <Output TaskParameter="DestinationFiles" ItemName="FinalWinmdExpArtifacts" />
6945 </Copy>
6946 <Message Importance="High" Text="$(MSBuildProjectName) -&gt; $([System.IO.Path]::GetFullPath('$(_WindowsMetadataOutputPath)'))" Condition="'$(SkipCopyWinMDArtifact)' != 'true' and '$(_WindowsMetadataOutputPath)' != ''" />
6947 </Target>
6948 <!--
6949 ============================================================
6950 _CopyFilesMarkedCopyLocal
6951
6952 Copy references that are marked as "CopyLocal" and their dependencies, including .pdbs, .xmls and satellites.
6953 ============================================================
6954 -->
6955 <Target Name="_CopyFilesMarkedCopyLocal" Condition="'@(ReferenceCopyLocalPaths)' != ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6956 <PropertyGroup>
6957 <!-- By default we're not using Hard Links to copy to the output directory, and never when building in VS -->
6958 <CreateHardLinksForCopyLocalIfPossible Condition="'$(BuildingInsideVisualStudio)' == 'true' or '$(CreateHardLinksForCopyLocalIfPossible)' == ''">false</CreateHardLinksForCopyLocalIfPossible>
6959 <CreateSymbolicLinksForCopyLocalIfPossible Condition="'$(BuildingInsideVisualStudio)' == 'true' or '$(CreateSymbolicLinksForCopyLocalIfPossible)' == ''">false</CreateSymbolicLinksForCopyLocalIfPossible>
6960 </PropertyGroup>
6961 <Copy SourceFiles="@(ReferenceCopyLocalPaths)" DestinationFiles="@(ReferenceCopyLocalPaths->'$(OutDir)%(DestinationSubDirectory)%(Filename)%(Extension)')" SkipUnchangedFiles="$(SkipCopyUnchangedFiles)" OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" UseHardlinksIfPossible="$(CreateHardLinksForCopyLocalIfPossible)" UseSymboliclinksIfPossible="$(CreateSymbolicLinksForCopyLocalIfPossible)" Condition="'$(UseCommonOutputDirectory)' != 'true'">
6962 <Output TaskParameter="DestinationFiles" ItemName="FileWritesShareable" />
6963 <Output TaskParameter="CopiedFiles" ItemName="ReferencesCopiedInThisBuild" />
6964 <Output TaskParameter="WroteAtLeastOneFile" PropertyName="WroteAtLeastOneFile" />
6965 </Copy>
6966 <!-- If this project produces reference assemblies *and* copied (possibly transitive)
6967 references on this build, subsequent builds of projects that depend on it must
6968 not be considered up to date, so touch this marker file that is considered an
6969 input to projects that reference this one. -->
6970 <Touch Files="@(CopyUpToDateMarker)" AlwaysCreate="true" Condition="'@(ReferencesCopiedInThisBuild)' != '' and '$(WroteAtLeastOneFile)' == 'true'" />
6971 <ItemGroup>
6972 <FileWrites Include="@(CopyUpToDateMarker)" />
6973 </ItemGroup>
6974 </Target>
6975 <!--
6976 ============================================================
6977 _CopySourceItemsToOutputDirectory
6978 ============================================================
6979 -->
6980 <Target Name="_CopySourceItemsToOutputDirectory" DependsOnTargets="&#xD;&#xA; GetCopyToOutputDirectoryItems;&#xD;&#xA; _CopyOutOfDateSourceItemsToOutputDirectory;&#xD;&#xA; _CopyOutOfDateSourceItemsToOutputDirectoryAlways" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
6981 <!--
6982 ============================================================
6983 GetCopyToOutputDirectoryItems
6984
6985 Get all project items that may need to be transferred to the output directory.
6986 This includes baggage items from transitively referenced projects. It would appear
6987 that this target computes full transitive closure of content items for all referenced
6988 projects; however that is not the case. It only collects the content items from its
6989 immediate children and not children of children. The reason this happens is that
6990 the ProjectReferenceWithConfiguration list that is consumed by _SplitProjectReferencesByFileExistence
6991 is only populated in the current project and is empty in the children. The empty list
6992 causes _MSBuildProjectReferenceExistent to be empty and terminates the recursion.
6993 ============================================================
6994 -->
6995 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6996 <_TargetsThatPrepareProjectReferences>_SplitProjectReferencesByFileExistence</_TargetsThatPrepareProjectReferences>
6997 <!--
6998 GetCopyToOutputDirectoryItems depends on an unspecified dependency _SplitProjectReferencesByFileExistence -> AssignProjectConfiguration (https://github.com/microsoft/msbuild/issues/4677).
6999 When the unspecified dependency does not happen by accident, content copying is only 1 level deep instead of transitive.
7000 This target enforces the dependency.
7001
7002 TODO: make transitive content copying the default when the breaking change is acceptable.
7003 -->
7004 <_TargetsThatPrepareProjectReferences Condition=" '$(MSBuildCopyContentTransitively)' == 'true' ">
7005 AssignProjectConfiguration;
7006 _SplitProjectReferencesByFileExistence
7007 </_TargetsThatPrepareProjectReferences>
7008 <GetCopyToOutputDirectoryItemsDependsOn>
7009 AssignTargetPaths;
7010 $(_TargetsThatPrepareProjectReferences);
7011 _GetProjectReferenceTargetFrameworkProperties;
7012 _PopulateCommonStateForGetCopyToOutputDirectoryItems
7013 </GetCopyToOutputDirectoryItemsDependsOn>
7014 <!--
7015 Mitigation for https://github.com/microsoft/msbuild/issues/4677
7016 When MSBuildCopyContentTransitively == true, all content copying is transitive.
7017 When MSBuildCopyContentTransitively == false, content copying is 1 level deep.
7018 When MSBuildCopyContentTransitively != {true, false}, the legacy behaviour in https://github.com/microsoft/msbuild/issues/4677 manifests.
7019 -->
7020 <_RecursiveTargetForContentCopying>GetCopyToOutputDirectoryItems</_RecursiveTargetForContentCopying>
7021 <!-- Enforce 1 level deep content copying by replacing the recursive content target with the target that retrieves the content for the current project only. -->
7022 <_RecursiveTargetForContentCopying Condition=" '$(MSBuildCopyContentTransitively)' == 'false' ">_GetCopyToOutputDirectoryItemsFromThisProject</_RecursiveTargetForContentCopying>
7023 </PropertyGroup>
7024 <Target Name="_PopulateCommonStateForGetCopyToOutputDirectoryItems" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7025 <!-- In the general case, clients need very little of the metadata which is generated by invoking this target on this project and its children. For those
7026 cases, we can immediately discard the unwanted metadata, reducing memory usage, particularly in very large and interconnected systems of projects.
7027 However, if some client does require the original functionality, it is sufficient to set MSBuildDisableGetCopyToOutputDirectoryItemsOptimization to
7028 a non-empty value and the original behavior will be restored. -->
7029 <PropertyGroup Condition=" '$(MSBuildDisableGetCopyToOutputDirectoryItemsOptimization)' == '' ">
7030 <_GCTODIKeepDuplicates>false</_GCTODIKeepDuplicates>
7031 <_GCTODIKeepMetadata>CopyToOutputDirectory;TargetPath</_GCTODIKeepMetadata>
7032 </PropertyGroup>
7033 </Target>
7034 <Target Name="_GetCopyToOutputDirectoryItemsFromTransitiveProjectReferences" DependsOnTargets="_PopulateCommonStateForGetCopyToOutputDirectoryItems;_AddOutputPathToGlobalPropertiesToRemove" Returns="@(_TransitiveItemsToCopyToOutputDirectory)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7035 <!-- Get items from child projects first. -->
7036 <MSBuild Projects="@(_MSBuildProjectReferenceExistent)" Targets="$(_RecursiveTargetForContentCopying)" BuildInParallel="$(BuildInParallel)" Properties="%(_MSBuildProjectReferenceExistent.SetConfiguration); %(_MSBuildProjectReferenceExistent.SetPlatform); %(_MSBuildProjectReferenceExistent.SetTargetFramework)" Condition="'@(_MSBuildProjectReferenceExistent)' != '' and '$(_GetChildProjectCopyToOutputDirectoryItems)' == 'true' and '%(_MSBuildProjectReferenceExistent.Private)' != 'false' and '$(UseCommonOutputDirectory)' != 'true'" ContinueOnError="$(ContinueOnError)" SkipNonexistentTargets="true" RemoveProperties="%(_MSBuildProjectReferenceExistent.GlobalPropertiesToRemove)$(_GlobalPropertiesToRemoveFromProjectReferences)">
7037 <Output TaskParameter="TargetOutputs" ItemName="_AllChildProjectItemsWithTargetPath" />
7038 </MSBuild>
7039 <!-- Target outputs must be full paths because they will be consumed by a different project. -->
7040 <ItemGroup>
7041 <_TransitiveItemsToCopyToOutputDirectory KeepDuplicates=" '$(_GCTODIKeepDuplicates)' != 'false' " KeepMetadata="$(_GCTODIKeepMetadata)" Include="@(_AllChildProjectItemsWithTargetPath->'%(FullPath)')" Condition="'%(_AllChildProjectItemsWithTargetPath.CopyToOutputDirectory)'=='Always'" />
7042 <_TransitiveItemsToCopyToOutputDirectory KeepDuplicates=" '$(_GCTODIKeepDuplicates)' != 'false' " KeepMetadata="$(_GCTODIKeepMetadata)" Include="@(_AllChildProjectItemsWithTargetPath->'%(FullPath)')" Condition="'%(_AllChildProjectItemsWithTargetPath.CopyToOutputDirectory)'=='PreserveNewest'" />
7043 </ItemGroup>
7044 <!-- Remove items which we will never again use - they just sit around taking up memory otherwise -->
7045 <ItemGroup>
7046 <_AllChildProjectItemsWithTargetPath Remove="@(_AllChildProjectItemsWithTargetPath)" />
7047 </ItemGroup>
7048 <!-- Copy paste _GetCopyToOutputDirectoryItemsFromThisProject but keep the items that came from other projects via ProjectReference's OutputItemType metadata -->
7049 <ItemGroup>
7050 <_TransitiveItemsToCopyToOutputDirectory KeepMetadata="$(_GCTODIKeepMetadata)" Include="@(ContentWithTargetPath->'%(FullPath)')" Condition="'%(ContentWithTargetPath.CopyToOutputDirectory)'=='Always' AND '%(ContentWithTargetPath.MSBuildSourceProjectFile)'!=''" />
7051 <_TransitiveItemsToCopyToOutputDirectory KeepMetadata="$(_GCTODIKeepMetadata)" Include="@(ContentWithTargetPath->'%(FullPath)')" Condition="'%(ContentWithTargetPath.CopyToOutputDirectory)'=='PreserveNewest' AND '%(ContentWithTargetPath.MSBuildSourceProjectFile)'!=''" />
7052 </ItemGroup>
7053 <ItemGroup>
7054 <_TransitiveItemsToCopyToOutputDirectory KeepMetadata="$(_GCTODIKeepMetadata)" Include="@(EmbeddedResource->'%(FullPath)')" Condition="'%(EmbeddedResource.CopyToOutputDirectory)'=='Always' AND '%(EmbeddedResource.MSBuildSourceProjectFile)'!=''" />
7055 <_TransitiveItemsToCopyToOutputDirectory KeepMetadata="$(_GCTODIKeepMetadata)" Include="@(EmbeddedResource->'%(FullPath)')" Condition="'%(EmbeddedResource.CopyToOutputDirectory)'=='PreserveNewest' AND '%(EmbeddedResource.MSBuildSourceProjectFile)'!=''" />
7056 </ItemGroup>
7057 <ItemGroup>
7058 <_CompileItemsToCopy Include="@(Compile->'%(FullPath)')" Condition="('%(Compile.CopyToOutputDirectory)'=='Always' or '%(Compile.CopyToOutputDirectory)'=='PreserveNewest') AND '%(Compile.MSBuildSourceProjectFile)'!=''" />
7059 </ItemGroup>
7060 <AssignTargetPath Files="@(_CompileItemsToCopy)" RootFolder="$(MSBuildProjectDirectory)">
7061 <Output TaskParameter="AssignedFiles" ItemName="_CompileItemsToCopyWithTargetPath" />
7062 </AssignTargetPath>
7063 <ItemGroup>
7064 <_TransitiveItemsToCopyToOutputDirectory KeepMetadata="$(_GCTODIKeepMetadata)" Include="@(_CompileItemsToCopyWithTargetPath)" Condition="'%(_CompileItemsToCopyWithTargetPath.CopyToOutputDirectory)'=='Always'" />
7065 <_TransitiveItemsToCopyToOutputDirectory KeepMetadata="$(_GCTODIKeepMetadata)" Include="@(_CompileItemsToCopyWithTargetPath)" Condition="'%(_CompileItemsToCopyWithTargetPath.CopyToOutputDirectory)'=='PreserveNewest'" />
7066 </ItemGroup>
7067 <ItemGroup>
7068 <_TransitiveItemsToCopyToOutputDirectory KeepMetadata="$(_GCTODIKeepMetadata)" Include="@(_NoneWithTargetPath->'%(FullPath)')" Condition="'%(_NoneWithTargetPath.CopyToOutputDirectory)'=='Always' AND '%(_NoneWithTargetPath.MSBuildSourceProjectFile)'!=''" />
7069 <_TransitiveItemsToCopyToOutputDirectory KeepMetadata="$(_GCTODIKeepMetadata)" Include="@(_NoneWithTargetPath->'%(FullPath)')" Condition="'%(_NoneWithTargetPath.CopyToOutputDirectory)'=='PreserveNewest' AND '%(_NoneWithTargetPath.MSBuildSourceProjectFile)'!=''" />
7070 </ItemGroup>
7071 </Target>
7072 <Target Name="_GetCopyToOutputDirectoryItemsFromThisProject" DependsOnTargets="AssignTargetPaths;_PopulateCommonStateForGetCopyToOutputDirectoryItems" Returns="@(_ThisProjectItemsToCopyToOutputDirectory)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7073 <ItemGroup>
7074 <_ThisProjectItemsToCopyToOutputDirectory KeepMetadata="$(_GCTODIKeepMetadata)" Include="@(ContentWithTargetPath->'%(FullPath)')" Condition="'%(ContentWithTargetPath.CopyToOutputDirectory)'=='Always' AND '%(ContentWithTargetPath.MSBuildSourceProjectFile)'==''" />
7075 <_ThisProjectItemsToCopyToOutputDirectory KeepMetadata="$(_GCTODIKeepMetadata)" Include="@(ContentWithTargetPath->'%(FullPath)')" Condition="'%(ContentWithTargetPath.CopyToOutputDirectory)'=='PreserveNewest' AND '%(ContentWithTargetPath.MSBuildSourceProjectFile)'==''" />
7076 </ItemGroup>
7077 <ItemGroup>
7078 <_ThisProjectItemsToCopyToOutputDirectory KeepMetadata="$(_GCTODIKeepMetadata)" Include="@(EmbeddedResource->'%(FullPath)')" Condition="'%(EmbeddedResource.CopyToOutputDirectory)'=='Always' AND '%(EmbeddedResource.MSBuildSourceProjectFile)'==''" />
7079 <_ThisProjectItemsToCopyToOutputDirectory KeepMetadata="$(_GCTODIKeepMetadata)" Include="@(EmbeddedResource->'%(FullPath)')" Condition="'%(EmbeddedResource.CopyToOutputDirectory)'=='PreserveNewest' AND '%(EmbeddedResource.MSBuildSourceProjectFile)'==''" />
7080 </ItemGroup>
7081 <ItemGroup>
7082 <_CompileItemsToCopy Include="@(Compile->'%(FullPath)')" Condition="('%(Compile.CopyToOutputDirectory)'=='Always' or '%(Compile.CopyToOutputDirectory)'=='PreserveNewest') AND '%(Compile.MSBuildSourceProjectFile)'==''" />
7083 </ItemGroup>
7084 <AssignTargetPath Files="@(_CompileItemsToCopy)" RootFolder="$(MSBuildProjectDirectory)">
7085 <Output TaskParameter="AssignedFiles" ItemName="_CompileItemsToCopyWithTargetPath" />
7086 </AssignTargetPath>
7087 <ItemGroup>
7088 <_ThisProjectItemsToCopyToOutputDirectory KeepMetadata="$(_GCTODIKeepMetadata)" Include="@(_CompileItemsToCopyWithTargetPath)" Condition="'%(_CompileItemsToCopyWithTargetPath.CopyToOutputDirectory)'=='Always'" />
7089 <_ThisProjectItemsToCopyToOutputDirectory KeepMetadata="$(_GCTODIKeepMetadata)" Include="@(_CompileItemsToCopyWithTargetPath)" Condition="'%(_CompileItemsToCopyWithTargetPath.CopyToOutputDirectory)'=='PreserveNewest'" />
7090 </ItemGroup>
7091 <ItemGroup>
7092 <_ThisProjectItemsToCopyToOutputDirectory KeepMetadata="$(_GCTODIKeepMetadata)" Include="@(_NoneWithTargetPath->'%(FullPath)')" Condition="'%(_NoneWithTargetPath.CopyToOutputDirectory)'=='Always' AND '%(_NoneWithTargetPath.MSBuildSourceProjectFile)'==''" />
7093 <_ThisProjectItemsToCopyToOutputDirectory KeepMetadata="$(_GCTODIKeepMetadata)" Include="@(_NoneWithTargetPath->'%(FullPath)')" Condition="'%(_NoneWithTargetPath.CopyToOutputDirectory)'=='PreserveNewest' AND '%(_NoneWithTargetPath.MSBuildSourceProjectFile)'==''" />
7094 </ItemGroup>
7095 </Target>
7096 <Target Name="GetCopyToOutputDirectoryItems" Returns="@(AllItemsFullPathWithTargetPath)" KeepDuplicateOutputs=" '$(MSBuildDisableGetCopyToOutputDirectoryItemsOptimization)' == '' " DependsOnTargets="$(GetCopyToOutputDirectoryItemsDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7097 <!-- Compose the content items as the union between transitive content items and content items from this project. -->
7098 <!-- Use CallTarget to avoid breaking targets that hook right before GetCopyToOutputDirectoryItems but expect to run after _GetCopyToOutputDirectoryItemsFromTransitiveProjectReferences and _GetCopyToOutputDirectoryItemsFromThisProject -->
7099 <CallTarget Targets="_GetCopyToOutputDirectoryItemsFromTransitiveProjectReferences">
7100 <Output TaskParameter="TargetOutputs" ItemName="_TransitiveItemsToCopyToOutputDirectory" />
7101 </CallTarget>
7102 <CallTarget Targets="_GetCopyToOutputDirectoryItemsFromThisProject">
7103 <Output TaskParameter="TargetOutputs" ItemName="_ThisProjectItemsToCopyToOutputDirectory" />
7104 </CallTarget>
7105 <ItemGroup Condition="'$(CopyConflictingTransitiveContent)' == 'false'">
7106 <_TransitiveItemsToCopyToOutputDirectory Remove="@(_ThisProjectItemsToCopyToOutputDirectory)" MatchOnMetadata="TargetPath" MatchOnMetadataOptions="PathLike" />
7107 </ItemGroup>
7108 <ItemGroup>
7109 <_TransitiveItemsToCopyToOutputDirectoryAlways KeepDuplicates=" '$(_GCTODIKeepDuplicates)' != 'false' " KeepMetadata="$(_GCTODIKeepMetadata)" Include="@(_TransitiveItemsToCopyToOutputDirectory->'%(FullPath)')" Condition="'%(_TransitiveItemsToCopyToOutputDirectory.CopyToOutputDirectory)'=='Always'" />
7110 <_TransitiveItemsToCopyToOutputDirectoryPreserveNewest KeepDuplicates=" '$(_GCTODIKeepDuplicates)' != 'false' " KeepMetadata="$(_GCTODIKeepMetadata)" Include="@(_TransitiveItemsToCopyToOutputDirectory->'%(FullPath)')" Condition="'%(_TransitiveItemsToCopyToOutputDirectory.CopyToOutputDirectory)'=='PreserveNewest'" />
7111 <_ThisProjectItemsToCopyToOutputDirectoryAlways KeepDuplicates=" '$(_GCTODIKeepDuplicates)' != 'false' " KeepMetadata="$(_GCTODIKeepMetadata)" Include="@(_ThisProjectItemsToCopyToOutputDirectory->'%(FullPath)')" Condition="'%(_ThisProjectItemsToCopyToOutputDirectory.CopyToOutputDirectory)'=='Always'" />
7112 <_ThisProjectItemsToCopyToOutputDirectoryPreserveNewest KeepDuplicates=" '$(_GCTODIKeepDuplicates)' != 'false' " KeepMetadata="$(_GCTODIKeepMetadata)" Include="@(_ThisProjectItemsToCopyToOutputDirectory->'%(FullPath)')" Condition="'%(_ThisProjectItemsToCopyToOutputDirectory.CopyToOutputDirectory)'=='PreserveNewest'" />
7113 <!-- Append the items from this project last so that they will be copied last. -->
7114 <_SourceItemsToCopyToOutputDirectoryAlways Include="@(_TransitiveItemsToCopyToOutputDirectoryAlways);@(_ThisProjectItemsToCopyToOutputDirectoryAlways)" />
7115 <_SourceItemsToCopyToOutputDirectory Include="@(_TransitiveItemsToCopyToOutputDirectoryPreserveNewest);@(_ThisProjectItemsToCopyToOutputDirectoryPreserveNewest)" />
7116 <AllItemsFullPathWithTargetPath Include="@(_SourceItemsToCopyToOutputDirectoryAlways->'%(FullPath)');@(_SourceItemsToCopyToOutputDirectory->'%(FullPath)')" />
7117 <!-- Empty intermediate items to release memory -->
7118 <_TransitiveItemsToCopyToOutputDirectoryAlways Remove="@(_TransitiveItemsToCopyToOutputDirectoryAlways)" />
7119 <_TransitiveItemsToCopyToOutputDirectoryPreserveNewest Remove="@(_TransitiveItemsToCopyToOutputDirectoryPreserveNewest)" />
7120 <_TransitiveItemsToCopyToOutputDirectory Remove="@(_TransitiveItemsToCopyToOutputDirectory)" />
7121 <_ThisProjectItemsToCopyToOutputDirectoryAlways Remove="@(_ThisProjectItemsToCopyToOutputDirectoryAlways)" />
7122 <_ThisProjectItemsToCopyToOutputDirectoryPreserveNewest Remove="@(_ThisProjectItemsToCopyToOutputDirectoryPreserveNewest)" />
7123 <_ThisProjectItemsToCopyToOutputDirectory Remove="@(_ThisProjectItemsToCopyToOutputDirectory)" />
7124 </ItemGroup>
7125 </Target>
7126 <!--
7127 ============================================================
7128 GetCopyToPublishDirectoryItems
7129
7130 Default implementation of GetCopyToPublishDirectoryItems for projects that do not
7131 use Microsoft.NET.Sdk. It simply returns whatever GetCopyToOutputDirectoryItems
7132 does with CopyToPublishDirectory implied by CopyToOutputDirectory, which is the
7133 same as Microsoft.NET.Sdk default when its CopyToPublishDirectory is not used.
7134
7135 Microsoft.NET.Sdk projects will override this to allow the publish output to be
7136 customized independently from the build output.
7137
7138 Having a default implementation here allows the Microsoft.NET.Sdk Publish target
7139 to work when a Microsoft.NET.Sdk-based project references a non-Microsoft.NET.Sdk-based
7140 project.
7141 ============================================================
7142 -->
7143 <Target Name="GetCopyToPublishDirectoryItems" DependsOnTargets="GetCopyToOutputDirectoryItems" Returns="@(AllPublishItemsFullPathWithTargetPath)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7144 <ItemGroup>
7145 <AllPublishItemsFullPathWithTargetPath Include="@(AllItemsFullPathWithTargetPath)">
7146 <CopyToPublishDirectory>%(CopyToOutputDirectory)</CopyToPublishDirectory>
7147 </AllPublishItemsFullPathWithTargetPath>
7148 </ItemGroup>
7149 </Target>
7150 <!--
7151 ============================================================
7152 _CopyOutOfDateSourceItemsToOutputDirectory
7153
7154 Copy files that have the CopyToOutputDirectory attribute set to 'PreserveNewest'.
7155 ============================================================
7156 -->
7157 <Target Name="_CopyOutOfDateSourceItemsToOutputDirectory" Condition=" '@(_SourceItemsToCopyToOutputDirectory)' != '' " Inputs="@(_SourceItemsToCopyToOutputDirectory)" Outputs="@(_SourceItemsToCopyToOutputDirectory->'$(OutDir)%(TargetPath)')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7158 <!--
7159 Not using SkipUnchangedFiles="true" because the application may want to change
7160 one of these files and not have an incremental build replace it.
7161 -->
7162 <Copy SourceFiles="@(_SourceItemsToCopyToOutputDirectory)" DestinationFiles="@(_SourceItemsToCopyToOutputDirectory->'$(OutDir)%(TargetPath)')" OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" UseHardlinksIfPossible="$(CreateHardLinksForAdditionalFilesIfPossible)" UseSymboliclinksIfPossible="$(CreateSymbolicLinksForAdditionalFilesIfPossible)">
7163 <Output TaskParameter="DestinationFiles" ItemName="FileWrites" />
7164 </Copy>
7165 </Target>
7166 <!--
7167 ============================================================
7168 _CopyOutOfDateSourceItemsToOutputDirectoryAlways
7169
7170 Copy files that have the CopyToOutputDirectory attribute set to 'Always'.
7171 ============================================================
7172 -->
7173 <Target Name="_CopyOutOfDateSourceItemsToOutputDirectoryAlways" Condition=" '@(_SourceItemsToCopyToOutputDirectoryAlways)' != '' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7174 <!--
7175 Not using SkipUnchangedFiles="true" because the application may want to change
7176 one of these files and not have an incremental build replace it.
7177 -->
7178 <Copy SourceFiles="@(_SourceItemsToCopyToOutputDirectoryAlways)" DestinationFiles="@(_SourceItemsToCopyToOutputDirectoryAlways->'$(OutDir)%(TargetPath)')" OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" UseHardlinksIfPossible="$(CreateHardLinksForAdditionalFilesIfPossible)" UseSymboliclinksIfPossible="$(CreateSymbolicLinksForAdditionalFilesIfPossible)">
7179 <Output TaskParameter="DestinationFiles" ItemName="FileWrites" />
7180 </Copy>
7181 </Target>
7182 <!--
7183 ============================================================
7184 _CopyAppConfigFile
7185
7186 Copy the application config file.
7187 ============================================================
7188 -->
7189 <Target Name="_CopyAppConfigFile" Condition=" '@(AppConfigWithTargetPath)' != '' " Inputs="@(AppConfigWithTargetPath)" Outputs="@(AppConfigWithTargetPath->'$(OutDir)%(TargetPath)')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7190 <!--
7191 Copy the application's .config file, if any.
7192 Not using SkipUnchangedFiles="true" because the application may want to change
7193 the app.config and not have an incremental build replace it.
7194 -->
7195 <Copy SourceFiles="@(AppConfigWithTargetPath)" DestinationFiles="@(AppConfigWithTargetPath->'$(OutDir)%(TargetPath)')" OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" UseHardlinksIfPossible="$(CreateHardLinksForAdditionalFilesIfPossible)" UseSymboliclinksIfPossible="$(CreateSymbolicLinksForAdditionalFilesIfPossible)">
7196 <Output TaskParameter="DestinationFiles" ItemName="FileWrites" />
7197 </Copy>
7198 </Target>
7199 <!--
7200 ================================================================
7201 _CopyManifestFiles
7202 ================================================================
7203
7204 Copy the built manifests (.exe.manifest, .application/.xbap) to the final directory.
7205 -->
7206 <Target Name="_CopyManifestFiles" Condition=" '$(_DeploymentCopyApplicationManifest)'=='true' or '$(GenerateClickOnceManifests)'=='true' " DependsOnTargets="PrepareForBuild" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7207 <Copy SourceFiles="@(ApplicationManifest)" DestinationFolder="$(OutDir)" SkipUnchangedFiles="$(SkipCopyUnchangedFiles)" OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" UseHardlinksIfPossible="$(CreateHardLinksForAdditionalFilesIfPossible)" UseSymboliclinksIfPossible="$(CreateSymbolicLinksForAdditionalFilesIfPossible)" Condition="'$(GenerateClickOnceManifests)'=='true' or '$(_DeploymentCopyApplicationManifest)'=='true'">
7208 <Output TaskParameter="DestinationFiles" ItemName="_DeploymentMainApplicationManifest" />
7209 <Output TaskParameter="DestinationFiles" ItemName="FileWrites" />
7210 </Copy>
7211 <Message Importance="Normal" Condition="'$(_DeploymentCopyApplicationManifest)'=='true'" Text="$(MSBuildProjectName) -&gt; @(_DeploymentMainApplicationManifest->'%(FullPath)')" />
7212 <Copy SourceFiles="@(DeployManifest)" DestinationFolder="$(OutDir)" SkipUnchangedFiles="$(SkipCopyUnchangedFiles)" OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" UseHardlinksIfPossible="$(CreateHardLinksForAdditionalFilesIfPossible)" UseSymboliclinksIfPossible="$(CreateSymbolicLinksForAdditionalFilesIfPossible)" Condition="'$(GenerateClickOnceManifests)'=='true'">
7213 <Output TaskParameter="DestinationFiles" ItemName="_DeploymentMainDeployManifest" />
7214 <Output TaskParameter="DestinationFiles" ItemName="FileWrites" />
7215 </Copy>
7216 <Message Importance="Normal" Condition="'$(GenerateClickOnceManifests)'=='true'" Text="$(MSBuildProjectName) -&gt; @(_DeploymentMainDeployManifest->'%(FullPath)')" />
7217 </Target>
7218 <!--
7219 ================================================================
7220 _CheckForCompileOutputs
7221
7222 Checks each file output from the main "Compile" target to make sure they really exist.
7223 If they do, then record them in the clean cache.
7224 ============================================================
7225 -->
7226 <Target Name="_CheckForCompileOutputs" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7227 <!--Record the main compile outputs.-->
7228 <ItemGroup>
7229 <FileWrites Include="@(IntermediateAssembly)" Condition="Exists('@(IntermediateAssembly)')" />
7230 <FileWrites Include="@(IntermediateRefAssembly)" Condition="'$(ProduceReferenceAssembly)' == 'true' and Exists('@(IntermediateRefAssembly)')" />
7231 </ItemGroup>
7232 <!-- Record the .xml if one was produced. -->
7233 <PropertyGroup>
7234 <_DocumentationFileProduced Condition="!Exists('@(DocFileItem)')">false</_DocumentationFileProduced>
7235 </PropertyGroup>
7236 <ItemGroup>
7237 <FileWrites Include="@(DocFileItem)" Condition="'$(_DocumentationFileProduced)'=='true'" />
7238 </ItemGroup>
7239 <!-- Record the .pdb if one was produced. -->
7240 <PropertyGroup>
7241 <_DebugSymbolsProduced Condition="!Exists('@(_DebugSymbolsIntermediatePath)')">false</_DebugSymbolsProduced>
7242 </PropertyGroup>
7243 <ItemGroup>
7244 <FileWrites Include="@(_DebugSymbolsIntermediatePath)" Condition="'$(_DebugSymbolsProduced)'=='true'" />
7245 </ItemGroup>
7246 </Target>
7247 <!--
7248 ============================================================
7249 _SGenCheckForOutputs
7250
7251 Checks each file output from the "GenerateSerializationAssemblies" target to make sure they really exist.
7252 If they do, then record them in the clean cache.
7253 ============================================================
7254 -->
7255 <Target Name="_SGenCheckForOutputs" Condition="'$(_SGenGenerateSerializationAssembliesConfig)' == 'On' or ('@(WebReferenceUrl)'!='' and '$(_SGenGenerateSerializationAssembliesConfig)' == 'Auto')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7256 <!-- Record the serializer .dll if one was produced.-->
7257 <PropertyGroup>
7258 <_SGenDllCreated Condition="Exists('$(IntermediateOutputPath)$(_SGenDllName)')">true</_SGenDllCreated>
7259 </PropertyGroup>
7260 <ItemGroup>
7261 <FileWrites Include="$(IntermediateOutputPath)$(_SGenDllName)" Condition="Exists('$(IntermediateOutputPath)$(_SGenDllName)')" />
7262 </ItemGroup>
7263 </Target>
7264 <!--
7265 ***********************************************************************************************
7266 ***********************************************************************************************
7267 UnmanagedRegistration Section
7268 ***********************************************************************************************
7269 ***********************************************************************************************
7270 -->
7271 <!--
7272 ============================================================
7273 UnmanagedRegistration
7274
7275 Registers the main assembly for COM interop.
7276 ============================================================
7277 -->
7278 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7279 <UnmanagedRegistrationDependsOn />
7280 </PropertyGroup>
7281 <Target Name="UnmanagedRegistration" Condition="'$(RegisterForComInterop)'=='true' and '$(OutputType)'=='library'" DependsOnTargets="$(UnmanagedRegistrationDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7282 <PropertyGroup>
7283 <RegisterAssemblyMSBuildArchitecture Condition="'$(RegisterAssemblyMSBuildArchitecture)' == ''">$(PlatformTargetAsMSBuildArchitecture)</RegisterAssemblyMSBuildArchitecture>
7284 </PropertyGroup>
7285 <PropertyGroup Condition="'$(TargetFrameworkAsMSBuildRuntime)' != '' and '$(RegisterAssemblyMSBuildArchitecture)' != ''">
7286 <!-- Falling back to the current runtime if we are targeting CLR2 and the task host doesn't exist will lead to
7287 incorrect behavior in some cases, but it's the same incorrect behavior as Visual Studio 2010, and thus better
7288 than causing build breaks on upgrade to Win8 the way not doing so would. For more details, see the
7289 corresponding comment in GenerateResource. -->
7290 <RegisterAssemblyMSBuildRuntime Condition="'$(RegisterAssemblyMSBuildRuntime)' == '' and&#xD;&#xA; $([MSBuild]::DoesTaskHostExist(`$(TargetFrameworkAsMSBuildRuntime)`, `$(RegisterAssemblyMSBuildArchitecture)`))">$(TargetFrameworkAsMSBuildRuntime)</RegisterAssemblyMSBuildRuntime>
7291 <!-- If the targeted runtime doesn't exist, fall back to current -->
7292 <RegisterAssemblyMSBuildRuntime Condition="'$(RegisterAssemblyMSBuildRuntime)' == ''">CurrentRuntime</RegisterAssemblyMSBuildRuntime>
7293 </PropertyGroup>
7294 <RegisterAssembly Assemblies="@(_OutputPathItem->'%(FullPath)$(TargetFileName)')" TypeLibFiles="@(_OutputPathItem->'%(FullPath)$(TargetName).tlb')" AssemblyListFile="@(_UnmanagedRegistrationCache)" CreateCodeBase="true" MSBuildRuntime="$(RegisterAssemblyMSBuildRuntime)" MSBuildArchitecture="$(RegisterAssemblyMSBuildArchitecture)" Condition="!Exists('@(_UnmanagedRegistrationCache)')" />
7295 <ItemGroup>
7296 <FileWrites Include="@(_OutputPathItem->'%(FullPath)$(TargetName).tlb')" />
7297 </ItemGroup>
7298 </Target>
7299 <!--
7300 ***********************************************************************************************
7301 ***********************************************************************************************
7302 IncrementalClean Section
7303 ***********************************************************************************************
7304 ***********************************************************************************************
7305 -->
7306 <!--
7307 ============================================================
7308 IncrementalClean
7309
7310 Remove files that were produced in a prior build but weren't produced in the current build.
7311 The reason is that if, for example, the name of the .exe has changed we want to delete the
7312 old copy.
7313
7314 Leave the Clean cache file containing only the files produced in the current build.
7315 ============================================================
7316 -->
7317 <Target Name="IncrementalClean" DependsOnTargets="$(IncrementalCleanDependsOn);_CleanGetCurrentAndPriorFileWrites" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7318 <!-- Subtract list of files produced in prior builds from list of files produced in this build. -->
7319 <ItemGroup>
7320 <_CleanOrphanFileWrites Include="@(_CleanPriorFileWrites)" Exclude="@(_CleanCurrentFileWrites)" />
7321 </ItemGroup>
7322 <!-- Find all files in the final output directory. -->
7323 <FindUnderPath Path="$(OutDir)" Files="@(_CleanOrphanFileWrites)">
7324 <Output TaskParameter="InPath" ItemName="_CleanOrphanFileWritesInOutput" />
7325 </FindUnderPath>
7326 <!-- Find all files in the intermediate output directory. -->
7327 <FindUnderPath Path="$(IntermediateOutputPath)" Files="@(_CleanOrphanFileWrites)">
7328 <Output TaskParameter="InPath" ItemName="_CleanOrphanFileWritesInIntermediate" />
7329 </FindUnderPath>
7330 <!-- Delete the orphaned files. -->
7331 <Delete Files="@(_CleanOrphanFileWritesInIntermediate);@(_CleanOrphanFileWritesInOutput)" TreatErrorsAsWarnings="true">
7332 <Output TaskParameter="DeletedFiles" ItemName="_CleanOrphanFilesDeleted" />
7333 </Delete>
7334 <!-- Create a list of everything that wasn't deleted or was outside
7335 the current final output and intermediate output directories. -->
7336 <ItemGroup>
7337 <_CleanRemainingFileWritesAfterIncrementalClean Include="@(_CleanPriorFileWrites);@(_CleanCurrentFileWrites)" Exclude="@(_CleanOrphanFilesDeleted)" />
7338 </ItemGroup>
7339 <!-- Remove duplicates. -->
7340 <RemoveDuplicates Inputs="@(_CleanRemainingFileWritesAfterIncrementalClean)">
7341 <Output TaskParameter="Filtered" ItemName="_CleanUniqueRemainingFileWritesAfterIncrementalClean" />
7342 </RemoveDuplicates>
7343 <!-- Write new list of current files back to disk, replacing the existing list.-->
7344 <WriteLinesToFile File="$(IntermediateOutputPath)$(CleanFile)" Lines="@(_CleanUniqueRemainingFileWritesAfterIncrementalClean)" Condition="'@(_CleanUnfilteredPriorFileWrites)'!='@(_CleanUniqueRemainingFileWritesAfterIncrementalClean)'" Overwrite="true" />
7345 </Target>
7346 <!--
7347 ============================================================
7348 _CleanGetCurrentAndPriorFileWrites
7349
7350 Get the list of files built in the current build and in prior builds.
7351 ============================================================
7352 -->
7353 <Target Name="_CleanGetCurrentAndPriorFileWrites" DependsOnTargets="_CheckForCompileOutputs;_SGenCheckForOutputs" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7354 <!-- Read the list of files produced by a prior builds from disk. -->
7355 <ReadLinesFromFile File="$(IntermediateOutputPath)$(CleanFile)">
7356 <Output TaskParameter="Lines" ItemName="_CleanUnfilteredPriorFileWrites" />
7357 </ReadLinesFromFile>
7358 <!--
7359 Convert the list of references to the absolute paths so we can make valid comparisons
7360 across two lists
7361 -->
7362 <ConvertToAbsolutePath Paths="@(_ResolveAssemblyReferenceResolvedFiles)">
7363 <Output TaskParameter="AbsolutePaths" ItemName="_ResolveAssemblyReferenceResolvedFilesAbsolute" />
7364 </ConvertToAbsolutePath>
7365 <!--
7366 Subtract any resolved assembly files from *prior* file writes because deleting
7367 these would break subsequent builds because the assemblies would be unresolvable.
7368 -->
7369 <ItemGroup>
7370 <_CleanPriorFileWrites Include="@(_CleanUnfilteredPriorFileWrites)" Exclude="@(_ResolveAssemblyReferenceResolvedFilesAbsolute)" />
7371 </ItemGroup>
7372 <!--
7373 Of shareable files, keep only those that are in the project's directory.
7374 We never clean shareable files outside of the project directory because
7375 the build may be to a common output directory and other projects may need
7376 them.
7377
7378 Only subtract the outputs from ResolveAssemblyReferences target because that's the
7379 only "Resolve" target that tries to resolve assemblies directly from the output
7380 directory.
7381 -->
7382 <FindUnderPath Path="$(MSBuildProjectDirectory)" Files="@(FileWritesShareable)" UpdateToAbsolutePaths="true">
7383 <Output TaskParameter="InPath" ItemName="FileWrites" />
7384 </FindUnderPath>
7385 <!-- Find all files in the final output directory. -->
7386 <FindUnderPath Path="$(OutDir)" Files="@(FileWrites)" UpdateToAbsolutePaths="true">
7387 <Output TaskParameter="InPath" ItemName="_CleanCurrentFileWritesInOutput" />
7388 </FindUnderPath>
7389 <!-- Find all files in the intermediate output directory. -->
7390 <FindUnderPath Path="$(IntermediateOutputPath)" Files="@(FileWrites)" UpdateToAbsolutePaths="true">
7391 <Output TaskParameter="InPath" ItemName="_CleanCurrentFileWritesInIntermediate" />
7392 </FindUnderPath>
7393 <!--
7394 Subtract any resolved assembly files from *current* file writes because deleting
7395 these would break subsequent builds because the assemblies would be unresolvable.
7396
7397 Only subtract the outputs from ResolveAssemblyReferences target because that's the
7398 only "Resolve" target that tries to resolve assemblies directly from the output
7399 directory.
7400 -->
7401 <ItemGroup>
7402 <_CleanCurrentFileWritesWithNoReferences Include="@(_CleanCurrentFileWritesInOutput);@(_CleanCurrentFileWritesInIntermediate)" Exclude="@(_ResolveAssemblyReferenceResolvedFilesAbsolute)" />
7403 </ItemGroup>
7404 <!-- Remove duplicates from files produced in this build. -->
7405 <RemoveDuplicates Inputs="@(_CleanCurrentFileWritesWithNoReferences)">
7406 <Output TaskParameter="Filtered" ItemName="_CleanCurrentFileWrites" />
7407 </RemoveDuplicates>
7408 </Target>
7409 <!--
7410 ***********************************************************************************************
7411 ***********************************************************************************************
7412 Clean Section
7413 ***********************************************************************************************
7414 ***********************************************************************************************
7415 -->
7416 <!--
7417 ============================================================
7418 Clean
7419
7420 Delete all intermediate and final build outputs.
7421 ============================================================
7422 -->
7423 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7424 <CleanDependsOn>
7425 BeforeClean;
7426 UnmanagedUnregistration;
7427 CoreClean;
7428 CleanReferencedProjects;
7429 CleanPublishFolder;
7430 AfterClean
7431 </CleanDependsOn>
7432 </PropertyGroup>
7433 <Target Name="Clean" Condition=" '$(_InvalidConfigurationWarning)' != 'true' " DependsOnTargets="$(CleanDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
7434 <!--
7435 ============================================================
7436 BeforeClean
7437
7438 Redefine this target in your project in order to run tasks just before Clean.
7439 ============================================================
7440 -->
7441 <Target Name="BeforeClean" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
7442 <!--
7443 ============================================================
7444 AfterClean
7445
7446 Redefine this target in your project in order to run tasks just after Clean.
7447 ============================================================
7448 -->
7449 <Target Name="AfterClean" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
7450 <!--
7451 ============================================================
7452 CleanReferencedProjects
7453
7454 Call Clean target on all Referenced Projects.
7455 ============================================================
7456 -->
7457 <Target Name="CleanReferencedProjects" DependsOnTargets="PrepareProjectReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7458 <!--
7459 When building the project directly from the command-line, clean those referenced projects
7460 that exist on disk. For IDE builds and command-line .SLN builds, the solution build manager
7461 takes care of this.
7462 -->
7463 <MSBuild Projects="@(_MSBuildProjectReferenceExistent)" Targets="Clean" Properties="%(_MSBuildProjectReferenceExistent.SetConfiguration); %(_MSBuildProjectReferenceExistent.SetPlatform); %(_MSBuildProjectReferenceExistent.SetTargetFramework)" BuildInParallel="$(BuildInParallel)" Condition="'$(BuildingInsideVisualStudio)' != 'true' and '$(BuildProjectReferences)' == 'true' and '@(_MSBuildProjectReferenceExistent)' != ''" ContinueOnError="$(ContinueOnError)" RemoveProperties="%(_MSBuildProjectReferenceExistent.GlobalPropertiesToRemove)$(_GlobalPropertiesToRemoveFromProjectReferences)" />
7464 </Target>
7465 <!--
7466 ============================================================
7467 CoreClean
7468 ============================================================
7469 -->
7470 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7471 <CoreCleanDependsOn />
7472 </PropertyGroup>
7473 <Target Name="CoreClean" DependsOnTargets="$(CoreCleanDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7474 <!-- First clean any explicitly specified cleanable files.
7475 Declare items of this type if you want Clean to delete them. -->
7476 <Delete Files="@(Clean)" TreatErrorsAsWarnings="true" />
7477 <!-- Read in list of files that were written to disk in past builds. -->
7478 <ReadLinesFromFile File="$(IntermediateOutputPath)$(CleanFile)">
7479 <Output TaskParameter="Lines" ItemName="_CleanPriorFileWrites" />
7480 </ReadLinesFromFile>
7481 <!-- Find all files in the final output directory. -->
7482 <FindUnderPath Path="$(OutDir)" Files="@(_CleanPriorFileWrites)">
7483 <Output TaskParameter="InPath" ItemName="_CleanPriorFileWritesInOutput" />
7484 </FindUnderPath>
7485 <!-- Find all files in the intermediate output directory. -->
7486 <FindUnderPath Path="$(IntermediateOutputPath)" Files="@(_CleanPriorFileWrites)">
7487 <Output TaskParameter="InPath" ItemName="_CleanPriorFileWritesInIntermediate" />
7488 </FindUnderPath>
7489 <!-- Delete those files. -->
7490 <Delete Files="@(_CleanPriorFileWritesInOutput);@(_CleanPriorFileWritesInIntermediate)" TreatErrorsAsWarnings="true">
7491 <Output TaskParameter="DeletedFiles" ItemName="_CleanPriorFileWritesDeleted" />
7492 </Delete>
7493 <!-- Create a list of everything that wasn't deleted. -->
7494 <ItemGroup>
7495 <_CleanRemainingFileWritesAfterClean Include="@(_CleanPriorFileWrites)" Exclude="@(_CleanPriorFileWritesDeleted)" />
7496 </ItemGroup>
7497 <!-- Remove duplicates. -->
7498 <RemoveDuplicates Inputs="@(_CleanRemainingFileWritesAfterClean)">
7499 <Output TaskParameter="Filtered" ItemName="_CleanUniqueRemainingFileWrites" />
7500 </RemoveDuplicates>
7501 <!-- Make sure the directory exists. -->
7502 <MakeDir Directories="$(IntermediateOutputPath)" />
7503 <!-- Write new list of current files back to disk. -->
7504 <WriteLinesToFile File="$(IntermediateOutputPath)$(CleanFile)" Lines="@(_CleanUniqueRemainingFileWrites)" Overwrite="true" />
7505 </Target>
7506 <!--
7507 ============================================================
7508 _CleanRecordFileWrites
7509
7510 Save the list of all files written to disk so that it can be used for "Clean" later.
7511
7512 Files written in prior builds are not removed from Clean cache.
7513 ============================================================
7514 -->
7515 <Target Name="_CleanRecordFileWrites" DependsOnTargets="_CleanGetCurrentAndPriorFileWrites" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7516 <!--
7517 Merge list of files from prior builds with the current build and then
7518 remove duplicates.
7519 -->
7520 <RemoveDuplicates Inputs="@(_CleanPriorFileWrites);@(_CleanCurrentFileWrites)">
7521 <Output TaskParameter="Filtered" ItemName="_CleanUniqueFileWrites" />
7522 </RemoveDuplicates>
7523 <!-- Make sure the directory exists. -->
7524 <MakeDir Directories="$(IntermediateOutputPath)" />
7525 <!-- Write merged file list back to disk, replacing existing contents. -->
7526 <WriteLinesToFile File="$(IntermediateOutputPath)$(CleanFile)" Lines="@(_CleanUniqueFileWrites)" Overwrite="true" />
7527 </Target>
7528 <!--
7529 ============================================================
7530 CleanPublishFolder
7531 ============================================================
7532 -->
7533 <Target Name="CleanPublishFolder" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7534 <RemoveDir Directories="$(PublishDir)" Condition="'$(PublishDir)'=='$(OutputPath)app.publish\' and Exists('$(PublishDir)')" />
7535 </Target>
7536 <!--
7537 ***********************************************************************************************
7538 ***********************************************************************************************
7539 PostBuildEvent Section
7540 ***********************************************************************************************
7541 ***********************************************************************************************
7542 -->
7543 <!--
7544 ============================================================
7545 PostBuildEvent
7546
7547 Run the post-build event. This step is driven by two parameters:
7548
7549 (1) The $(RunPostBuildEvent) property is set by the user through the IDE and can be one of four values.
7550
7551 - OnBuildSuccess: In this case, every step of the build must succeed for the post-build step to run.
7552 - <Blank>: This is the same as OnBuildSuccess.
7553 - OnOutputUpdated: In this case, the post-build step will run only if the main output assembly was
7554 actually updated.
7555 - Always: The post-build step is always run.
7556
7557 (2) The $(_AssemblyTimestampBeforeCompile) and $(_AssemblyTimestampAfterCompile) values are
7558 set by the _TimeStampBeforeCompile and _TimeStampAfterCompile targets. If the assembly was actually
7559 rebuilt during this build, then the two values will be different.
7560 ============================================================
7561 -->
7562 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7563 <PostBuildEventDependsOn />
7564 </PropertyGroup>
7565 <Target Name="PostBuildEvent" Condition="'$(PostBuildEvent)' != '' and ('$(RunPostBuildEvent)' != 'OnOutputUpdated' or '$(_AssemblyTimestampBeforeCompile)' != '$(_AssemblyTimestampAfterCompile)')" DependsOnTargets="$(PostBuildEventDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7566 <Exec WorkingDirectory="$(OutDir)" Command="$(PostBuildEvent)" />
7567 </Target>
7568 <!--
7569 ***********************************************************************************************
7570 ***********************************************************************************************
7571 Publish Section
7572 ***********************************************************************************************
7573 ***********************************************************************************************
7574 -->
7575 <!--
7576 ============================================================
7577 Publish
7578
7579 This target is only called when doing ClickOnce publishing outside the IDE, which implicitly builds before publishing.
7580 ============================================================
7581 -->
7582 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7583 <PublishDependsOn Condition="'$(PublishableProject)'=='true'">
7584 SetGenerateManifests;
7585 Build;
7586 PublishOnly
7587 </PublishDependsOn>
7588 <PublishDependsOn Condition="'$(PublishableProject)'!='true'">
7589 _DeploymentUnpublishable
7590 </PublishDependsOn>
7591 </PropertyGroup>
7592 <Target Name="Publish" DependsOnTargets="$(PublishDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
7593 <!--
7594 ============================================================
7595 _DeploymentUnpublishable
7596
7597 This target is used to block an attempt to ClickOnce publish a non-publishable project, such as a ClassLibrary, when building outside the IDE.
7598 ============================================================
7599 -->
7600 <Target Name="_DeploymentUnpublishable" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7601 <Message Text="Skipping unpublishable project." />
7602 </Target>
7603 <!--
7604 ============================================================
7605 SetGenerateManifests
7606
7607 This target simply assures the GenerateClickOnceManifests property is set whenever the publish target is invoked.
7608 ============================================================
7609 -->
7610 <Target Name="SetGenerateManifests" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7611 <Error Condition="'$(OutputType)'!='winexe' and '$(OutputType)'!='exe' and '$(OutputType)'!='appcontainerexe'" Text="Publish is only valid for 'Windows Application' or 'Console Application' project types." />
7612 <Error Condition="'$(_DeploymentSignClickOnceManifests)'=='true' and '$(ManifestCertificateThumbprint)'=='' and '$(ManifestKeyFile)'==''" Text="A signing key is required in order to publish this project. Please specify a ManifestKeyFile or ManifestCertificateThumbprint value. Publishing from Visual Studio will automatically configure a signing key for this project." />
7613 <PropertyGroup>
7614 <GenerateClickOnceManifests>true</GenerateClickOnceManifests>
7615 </PropertyGroup>
7616 </Target>
7617 <!--
7618 ============================================================
7619 PublishOnly
7620
7621 The "PublishOnly" target is intended for ClickOnce publishing inside the IDE, where the build has already been done
7622 by the BuildManager.
7623 ============================================================
7624 -->
7625 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7626 <PublishOnlyDependsOn>
7627 SetGenerateManifests;
7628 PublishBuild;
7629 BeforePublish;
7630 GenerateManifests;
7631 CopyFilesToOutputDirectory;
7632 _CopyFilesToPublishFolder;
7633 _DeploymentGenerateBootstrapper;
7634 ResolveKeySource;
7635 _DeploymentSignClickOnceDeployment;
7636 AfterPublish
7637 </PublishOnlyDependsOn>
7638 </PropertyGroup>
7639 <Target Name="PublishOnly" DependsOnTargets="$(PublishOnlyDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
7640 <!--
7641 ============================================================
7642 BeforePublish
7643
7644 Redefine this target in your project in order to run tasks just before Publish.
7645 ============================================================
7646 -->
7647 <Target Name="BeforePublish" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
7648 <!--
7649 ============================================================
7650 AfterPublish
7651
7652 Redefine this target in your project in order to run tasks just after Publish.
7653 ============================================================
7654 -->
7655 <Target Name="AfterPublish" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
7656 <!--
7657 ============================================================
7658 PublishBuild
7659
7660 Defines the set of targets that publishing is directly dependent on.
7661 ============================================================
7662 -->
7663 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7664 <PublishBuildDependsOn>
7665 BuildOnlySettings;
7666 PrepareForBuild;
7667 ResolveReferences;
7668 PrepareResources;
7669 ResolveKeySource;
7670 GenerateSerializationAssemblies;
7671 CreateSatelliteAssemblies;
7672 </PublishBuildDependsOn>
7673 </PropertyGroup>
7674 <Target Name="PublishBuild" DependsOnTargets="$(PublishBuildDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
7675 <!--
7676 ============================================================
7677 _CopyFilesToPublishFolder
7678 ============================================================
7679 -->
7680 <Target Name="_CopyFilesToPublishFolder" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7681 <!-- Compute name of application folder, which includes the assembly name plus formatted application version.
7682 The application version is formatted to use "_" in place of "." chars (i.e. "1_0_0_0" instead of "1.0.0.0").
7683 This is done because some servers misinterpret "." as a file extension. -->
7684 <FormatVersion Version="$(ApplicationVersion)" Revision="$(ApplicationRevision)" FormatType="Path">
7685 <Output TaskParameter="OutputVersion" PropertyName="_DeploymentApplicationVersionFragment" />
7686 </FormatVersion>
7687 <PropertyGroup>
7688 <_DeploymentApplicationFolderName>Application Files\$(AssemblyName)_$(_DeploymentApplicationVersionFragment)</_DeploymentApplicationFolderName>
7689 <_DeploymentApplicationDir>$(PublishDir)$(_DeploymentApplicationFolderName)\</_DeploymentApplicationDir>
7690 </PropertyGroup>
7691 <PropertyGroup>
7692 <!-- By default we're not using Hard or Symbolic Links to copy to the publish directory, and never when building in VS -->
7693 <CreateHardLinksForPublishFilesIfPossible Condition="'$(BuildingInsideVisualStudio)' == 'true' or '$(CreateHardLinksForPublishFilesIfPossible)' == ''">false</CreateHardLinksForPublishFilesIfPossible>
7694 <CreateSymbolicLinksForPublishFilesIfPossible Condition="'$(BuildingInsideVisualStudio)' == 'true' or '$(CreateSymbolicLinksForPublishFilesIfPossible)' == ''">false</CreateSymbolicLinksForPublishFilesIfPossible>
7695 </PropertyGroup>
7696 <!-- Copy files to publish folder -->
7697 <Copy Condition="'$(PublishSingleFile)' != 'true'" SourceFiles="@(_ApplicationManifestFinal);&#xD;&#xA; @(_DeploymentResolvedManifestEntryPoint);&#xD;&#xA; @(_DeploymentManifestFiles);&#xD;&#xA; @(ReferenceComWrappersToCopyLocal);&#xD;&#xA; @(ResolvedIsolatedComModules);&#xD;&#xA; @(_DeploymentLooseManifestFile)" DestinationFiles="@(_ApplicationManifestFinal->'$(_DeploymentApplicationDir)%(TargetPath)');&#xD;&#xA; @(_DeploymentManifestEntryPoint->'$(_DeploymentApplicationDir)%(TargetPath)$(_DeploymentFileMappingExtension)');&#xD;&#xA; @(_DeploymentManifestFiles->'$(_DeploymentApplicationDir)%(TargetPath)$(_DeploymentFileMappingExtension)');&#xD;&#xA; @(ReferenceComWrappersToCopyLocal->'$(_DeploymentApplicationDir)%(FileName)%(Extension)$(_DeploymentFileMappingExtension)');&#xD;&#xA; @(ResolvedIsolatedComModules->'$(_DeploymentApplicationDir)%(FileName)%(Extension)$(_DeploymentFileMappingExtension)');&#xD;&#xA; @(_DeploymentLooseManifestFile->'$(_DeploymentApplicationDir)%(FileName)%(Extension)$(_DeploymentFileMappingExtension)')" SkipUnchangedFiles="$(SkipCopyUnchangedFiles)" OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)" Retries="$(CopyRetryCount)" UseHardlinksIfPossible="$(CreateHardLinksForPublishFilesIfPossible)" UseSymboliclinksIfPossible="$(CreateSymbolicLinksForPublishFilesIfPossible)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" />
7698 <Copy SourceFiles="@(_DeploymentManifestDependencies)" DestinationFiles="@(_DeploymentManifestDependencies->'$(_DeploymentApplicationDir)%(TargetPath)$(_DeploymentFileMappingExtension)')" SkipUnchangedFiles="$(SkipCopyUnchangedFiles)" OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" UseHardlinksIfPossible="$(CreateHardLinksForPublishFilesIfPossible)" UseSymboliclinksIfPossible="$(CreateSymbolicLinksForPublishFilesIfPossible)" Condition="'$(PublishSingleFile)' != 'true' and '%(_DeploymentManifestDependencies.DependencyType)'=='Install'" />
7699 <Copy Condition="'$(PublishSingleFile)' != 'true'" SourceFiles="@(_ReferenceScatterPaths)" DestinationFiles="@(_ReferenceScatterPaths->'$(_DeploymentApplicationDir)%(Filename)%(Extension)$(_DeploymentFileMappingExtension)')" SkipUnchangedFiles="$(SkipCopyUnchangedFiles)" OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" UseHardlinksIfPossible="$(CreateHardLinksForPublishFilesIfPossible)" UseSymboliclinksIfPossible="$(CreateSymbolicLinksForPublishFilesIfPossible)" />
7700 <ItemGroup Condition="'$(PublishSingleFile)' == 'true'">
7701 <PublishedSingleFileToBeCopied Include="@(_DeploymentManifestFiles)" />
7702 </ItemGroup>
7703 <!-- For single-file publish case, we need to only copy the clickonce manifest, manifest entry point (launcher) and the SF EXE -->
7704 <Copy Condition="'$(PublishSingleFile)' == 'true'" SourceFiles="@(_ApplicationManifestFinal);&#xD;&#xA; @(_DeploymentResolvedManifestEntryPoint);&#xD;&#xA; @(PublishedSingleFileToBeCopied);" DestinationFiles="@(_ApplicationManifestFinal->'$(_DeploymentApplicationDir)%(TargetPath)');&#xD;&#xA; @(_DeploymentManifestEntryPoint->'$(_DeploymentApplicationDir)%(TargetPath)$(_DeploymentFileMappingExtension)');&#xD;&#xA; @(PublishedSingleFileToBeCopied->'$(_DeploymentApplicationDir)%(TargetPath)$(_DeploymentFileMappingExtension)')" SkipUnchangedFiles="$(SkipCopyUnchangedFiles)" OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)" Retries="$(CopyRetryCount)" UseHardlinksIfPossible="$(CreateHardLinksForPublishFilesIfPossible)" UseSymboliclinksIfPossible="$(CreateSymbolicLinksForPublishFilesIfPossible)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" />
7705 <FormatUrl InputUrl="$(_DeploymentApplicationUrl)">
7706 <Output TaskParameter="OutputUrl" PropertyName="_DeploymentFormattedApplicationUrl" />
7707 </FormatUrl>
7708 <FormatUrl InputUrl="$(_DeploymentComponentsUrl)">
7709 <Output TaskParameter="OutputUrl" PropertyName="_DeploymentFormattedComponentsUrl" />
7710 </FormatUrl>
7711 </Target>
7712 <!--
7713 ============================================================
7714 _DeploymentGenerateBootstrapper
7715 ============================================================
7716 -->
7717 <Target Name="_DeploymentGenerateBootstrapper" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7718 <!-- Build setup.exe bootstrapper and copy referenced packages -->
7719 <GenerateBootstrapper ApplicationFile="$(TargetDeployManifestFileName)" ApplicationName="$(AssemblyName)" ApplicationUrl="$(_DeploymentFormattedApplicationUrl)" BootstrapperItems="@(BootstrapperPackage)" ComponentsLocation="$(BootstrapperComponentsLocation)" ComponentsUrl="$(_DeploymentFormattedComponentsUrl)" Culture="$(TargetCulture)" FallbackCulture="$(FallbackCulture)" OutputPath="$(PublishDir)" SupportUrl="$(_DeploymentFormattedSupportUrl)" Path="$(GenerateBootstrapperSdkPath)" VisualStudioVersion="$(VisualStudioVersion)" Condition="'$(BootstrapperEnabled)'=='true'" />
7720 </Target>
7721 <!--
7722 ============================================================
7723 _DeploymentSignClickOnceDeployment
7724 ============================================================
7725 -->
7726 <Target Name="_DeploymentSignClickOnceDeployment" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7727 <!-- Sign manifests and the bootstrapper -->
7728 <SignFile CertificateThumbprint="$(_DeploymentResolvedManifestCertificateThumbprint)" TimestampUrl="$(ManifestTimestampUrl)" SigningTarget="$(_DeploymentApplicationDir)$(_DeploymentTargetApplicationManifestFileName)" TargetFrameworkIdentifier="$(TargetFrameworkIdentifier)" TargetFrameworkVersion="$(TargetFrameworkVersion)" Condition="'$(_DeploymentSignClickOnceManifests)'=='true'" />
7729 <!-- Update entry point path in deploy manifest -->
7730 <UpdateManifest ApplicationPath="$(_DeploymentApplicationFolderName)\$(_DeploymentTargetApplicationManifestFileName)" TargetFrameworkVersion="$(_DeploymentManifestTargetFrameworkVersion)" ApplicationManifest="$(_DeploymentApplicationDir)$(_DeploymentTargetApplicationManifestFileName)" InputManifest="$(OutDir)$(TargetDeployManifestFileName)" OutputManifest="$(PublishDir)$(TargetDeployManifestFileName)">
7731 <Output TaskParameter="OutputManifest" ItemName="PublishedDeployManifest" />
7732 </UpdateManifest>
7733 <SignFile CertificateThumbprint="$(_DeploymentResolvedManifestCertificateThumbprint)" TimestampUrl="$(ManifestTimestampUrl)" SigningTarget="$(PublishDir)$(TargetDeployManifestFileName)" TargetFrameworkIdentifier="$(TargetFrameworkIdentifier)" TargetFrameworkVersion="$(TargetFrameworkVersion)" Condition="'$(_DeploymentSignClickOnceManifests)'=='true'" />
7734 <SignFile CertificateThumbprint="$(_DeploymentResolvedManifestCertificateThumbprint)" TimestampUrl="$(ManifestTimestampUrl)" SigningTarget="$(PublishDir)\setup.exe" Condition="'$(BootstrapperEnabled)'=='true' and '$(_DeploymentSignClickOnceManifests)'=='true'" />
7735 </Target>
7736 <!--
7737 ***********************************************************************************************
7738 ***********************************************************************************************
7739 AllProjectOutputGroups Section
7740 ***********************************************************************************************
7741 ***********************************************************************************************
7742 -->
7743 <!--
7744 ============================================================
7745 AllProjectOutputGroups
7746
7747 The targets below drive output groups, which provide generic information about a
7748 project's inputs (e.g., content files, compilation sources, etc.) and built outputs
7749 (e.g., built EXE/DLL, PDB, XML documentation files, etc.)
7750
7751 Each target may produce two kinds of items: outputs and dependencies. Outputs are
7752 items from the current project; dependencies are items that are brought into the
7753 current project as a result of referencing other projects or components.
7754
7755 For both outputs and dependencies, the Include attribute
7756 specifies the location of the output/dependency; it must be a full path. Any number
7757 of additional attributes may be placed on an output/dependency item.
7758 ============================================================
7759 -->
7760 <Target Name="AllProjectOutputGroups" DependsOnTargets="&#xD;&#xA; BuiltProjectOutputGroup;&#xD;&#xA; DebugSymbolsProjectOutputGroup;&#xD;&#xA; DocumentationProjectOutputGroup;&#xD;&#xA; SatelliteDllsProjectOutputGroup;&#xD;&#xA; SourceFilesProjectOutputGroup;&#xD;&#xA; ContentFilesProjectOutputGroup;&#xD;&#xA; SGenFilesOutputGroup" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
7761 <!--
7762 This is the key output for the BuiltProjectOutputGroup and is meant to be read directly from the IDE.
7763 Reading an item is faster than invoking a target.
7764 -->
7765 <ItemGroup Condition=" '$(OutputType)' != 'winmdobj' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7766 <BuiltProjectOutputGroupKeyOutput Include="@(IntermediateAssembly->'%(FullPath)')">
7767 <IsKeyOutput>true</IsKeyOutput>
7768 <FinalOutputPath>$(TargetPath)</FinalOutputPath>
7769 <TargetPath>$(TargetFileName)</TargetPath>
7770 <COM2REG Condition="'$(RegisterForComInterop)'=='true' and '$(OutputType)'=='library'">true</COM2REG>
7771 </BuiltProjectOutputGroupKeyOutput>
7772 </ItemGroup>
7773 <ItemGroup Condition=" '$(OutputType)' == 'winmdobj' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7774 <WinMDExpOutputWindowsMetadataFileItem Include="$(_IntermediateWindowsMetadataPath)" Condition="'$(_IntermediateWindowsMetadataPath)' != ''" />
7775 <BuiltProjectOutputGroupKeyOutput Include="@(WinMDExpOutputWindowsMetadataFileItem->'%(FullPath)')">
7776 <IsKeyOutput>true</IsKeyOutput>
7777 <FinalOutputPath>$(TargetPath)</FinalOutputPath>
7778 <TargetPath>$(TargetFileName)</TargetPath>
7779 </BuiltProjectOutputGroupKeyOutput>
7780 </ItemGroup>
7781 <!--
7782 ============================================================
7783 BuiltProjectOutputGroup
7784 ============================================================
7785 -->
7786 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7787 <BuiltProjectOutputGroupDependsOn>PrepareForBuild</BuiltProjectOutputGroupDependsOn>
7788 <AddAppConfigToBuildOutputs Condition="('$(AddAppConfigToBuildOutputs)'=='') and ('$(OutputType)'!='library' and '$(OutputType)'!='winmdobj')">true</AddAppConfigToBuildOutputs>
7789 </PropertyGroup>
7790 <Target Name="BuiltProjectOutputGroup" Returns="@(BuiltProjectOutputGroupOutput)" DependsOnTargets="$(BuiltProjectOutputGroupDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7791 <ItemGroup>
7792 <_BuiltProjectOutputGroupOutputIntermediate Include="@(BuiltProjectOutputGroupKeyOutput)" />
7793 </ItemGroup>
7794 <!-- This item represents the app.config file -->
7795 <ItemGroup>
7796 <_BuiltProjectOutputGroupOutputIntermediate Include="$(AppConfig)" Condition="'$(AddAppConfigToBuildOutputs)'=='true'">
7797 <FinalOutputPath>$(TargetDir)$(TargetFileName).config</FinalOutputPath>
7798 <TargetPath>$(TargetFileName).config</TargetPath>
7799 <!-- For compatibility with 2.0 -->
7800 <OriginalItemSpec>$(AppConfig)</OriginalItemSpec>
7801 </_BuiltProjectOutputGroupOutputIntermediate>
7802 </ItemGroup>
7803 <ItemGroup>
7804 <_IsolatedComReference Include="@(COMReference)" Condition=" '%(COMReference.Isolated)' == 'true' " />
7805 <_IsolatedComReference Include="@(COMFileReference)" Condition=" '%(COMFileReference.Isolated)' == 'true' " />
7806 </ItemGroup>
7807 <!-- This item represents the native manifest, example: WindowsApplication1.exe.manifest or Native.ClassLibrary1.manifest -->
7808 <ItemGroup>
7809 <_BuiltProjectOutputGroupOutputIntermediate Include="$(OutDir)$(_DeploymentTargetApplicationManifestFileName)" Condition="'@(NativeReference)'!='' or '@(_IsolatedComReference)'!=''">
7810 <TargetPath>$(_DeploymentTargetApplicationManifestFileName)</TargetPath>
7811 <!-- For compatibility with 2.0 -->
7812 <OriginalItemSpec>$(OutDir)$(_DeploymentTargetApplicationManifestFileName)</OriginalItemSpec>
7813 </_BuiltProjectOutputGroupOutputIntermediate>
7814 </ItemGroup>
7815 <!-- Convert intermediate items into final items; this way we can get the full path for each item -->
7816 <ItemGroup>
7817 <BuiltProjectOutputGroupOutput Include="@(_BuiltProjectOutputGroupOutputIntermediate->'%(FullPath)')">
7818 <!-- For compatibility with 2.0 -->
7819 <OriginalItemSpec Condition="'%(_BuiltProjectOutputGroupOutputIntermediate.OriginalItemSpec)' == ''">%(_BuiltProjectOutputGroupOutputIntermediate.FullPath)</OriginalItemSpec>
7820 </BuiltProjectOutputGroupOutput>
7821 </ItemGroup>
7822 </Target>
7823 <!--
7824 ============================================================
7825 DebugSymbolsProjectOutputGroup
7826
7827 This target performs population of the Debug Symbols project output group.
7828 ============================================================
7829 -->
7830 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7831 <DebugSymbolsProjectOutputGroupDependsOn />
7832 </PropertyGroup>
7833 <ItemGroup Condition="'$(_DebugSymbolsProduced)' != 'false' and '$(OutputType)' != 'winmdobj'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7834 <DebugSymbolsProjectOutputGroupOutput Include="@(_DebugSymbolsIntermediatePath->'%(FullPath)')">
7835 <FinalOutputPath>@(_DebugSymbolsOutputPath->'%(FullPath)')</FinalOutputPath>
7836 <TargetPath>@(_DebugSymbolsIntermediatePath->'%(Filename)%(Extension)')</TargetPath>
7837 </DebugSymbolsProjectOutputGroupOutput>
7838 </ItemGroup>
7839 <ItemGroup Condition="'$(_DebugSymbolsProduced)' != 'false' and '$(OutputType)' == 'winmdobj'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7840 <WinMDExpOutputPdbItem Include="$(WinMDExpOutputPdb)" Condition="'$(WinMDExpOutputPdb)' != ''" />
7841 <WinMDExpFinalOutputPdbItem Include="$(_WinMDDebugSymbolsOutputPath)" Condition="'$(_WinMDDebugSymbolsOutputPath)' != ''" />
7842 <DebugSymbolsProjectOutputGroupOutput Include="@(WinMDExpOutputPdbItem->'%(FullPath)')">
7843 <FinalOutputPath>@(WinMDExpFinalOutputPdbItem->'%(FullPath)')</FinalOutputPath>
7844 <TargetPath>@(WinMDExpOutputPdbItem->'%(Filename)%(Extension)')</TargetPath>
7845 </DebugSymbolsProjectOutputGroupOutput>
7846 </ItemGroup>
7847 <Target Name="DebugSymbolsProjectOutputGroup" Returns="@(DebugSymbolsProjectOutputGroupOutput)" DependsOnTargets="$(DebugSymbolsProjectOutputGroupDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
7848 <!--
7849 ============================================================
7850 DocumentationProjectOutputGroup
7851
7852 This target performs population of the Documentation project output group.
7853 ============================================================
7854 -->
7855 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7856 <DocumentationProjectOutputGroupDependsOn />
7857 </PropertyGroup>
7858 <ItemGroup Condition="'$(DocumentationFile)'!='' and '$(OutputType)' != 'winmdobj'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7859 <DocumentationProjectOutputGroupOutput Include="@(DocFileItem->'%(FullPath)')">
7860 <FinalOutputPath>@(FinalDocFile->'%(FullPath)')</FinalOutputPath>
7861 <IsKeyOutput>true</IsKeyOutput>
7862 <TargetPath>@(DocFileItem->'%(Filename)%(Extension)')</TargetPath>
7863 </DocumentationProjectOutputGroupOutput>
7864 </ItemGroup>
7865 <ItemGroup Condition="'$(DocumentationFile)' != '' and '$(OutputType)' == 'winmdobj'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7866 <WinMDOutputDocumentationFileItem Include="$(WinMDOutputDocumentationFile)" Condition="'$(WinMDOutputDocumentationFile)' != ''" />
7867 <WinMDExpFinalOutputDocItem Include="$(_WinMDDocFileOutputPath)" Condition="'$(_WinMDDocFileOutputPath)' != ''" />
7868 <DocumentationProjectOutputGroupOutput Include="@(WinMDOutputDocumentationFileItem->'%(FullPath)')">
7869 <FinalOutputPath>@(WinMDExpFinalOutputDocItem->'%(FullPath)')</FinalOutputPath>
7870 <TargetPath>@(WinMDOutputDocumentationFileItem->'%(Filename)%(Extension)')</TargetPath>
7871 </DocumentationProjectOutputGroupOutput>
7872 </ItemGroup>
7873 <Target Name="DocumentationProjectOutputGroup" Returns="@(DocumentationProjectOutputGroupOutput)" DependsOnTargets="$(DocumentationProjectOutputGroupDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
7874 <!--
7875 ============================================================
7876 SatelliteDllsProjectOutputGroup
7877
7878 This target performs population of the Satellite Files project output group.
7879 ============================================================
7880 -->
7881 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7882 <SatelliteDllsProjectOutputGroupDependsOn>PrepareForBuild;PrepareResourceNames</SatelliteDllsProjectOutputGroupDependsOn>
7883 </PropertyGroup>
7884 <Target Name="SatelliteDllsProjectOutputGroup" Returns="@(SatelliteDllsProjectOutputGroupOutput)" DependsOnTargets="$(SatelliteDllsProjectOutputGroupDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7885 <ItemGroup>
7886 <SatelliteDllsProjectOutputGroupOutputIntermediate Include="$(IntermediateOutputPath)%(EmbeddedResource.Culture)\$(TargetName).resources.dll" Condition="'%(EmbeddedResource.WithCulture)' == 'true'">
7887 <TargetPath>%(EmbeddedResource.Culture)\$(TargetName).resources.dll</TargetPath>
7888 <Culture>%(EmbeddedResource.Culture)</Culture>
7889 </SatelliteDllsProjectOutputGroupOutputIntermediate>
7890 </ItemGroup>
7891 <!-- Convert intermediate items into final items; this way we can get the full path for each item. -->
7892 <ItemGroup>
7893 <SatelliteDllsProjectOutputGroupOutput Include="@(SatelliteDllsProjectOutputGroupOutputIntermediate->'%(FullPath)')">
7894 <FinalOutputPath Condition=" '%(SatelliteDllsProjectOutputGroupOutputIntermediate.FinalOutputPath)' == '' ">$(TargetDir)%(SatelliteDllsProjectOutputGroupOutputIntermediate.TargetPath)</FinalOutputPath>
7895 <!-- For compatibility with 2.0 -->
7896 <OriginalItemSpec>%(SatelliteDllsProjectOutputGroupOutputIntermediate.Identity)</OriginalItemSpec>
7897 </SatelliteDllsProjectOutputGroupOutput>
7898 </ItemGroup>
7899 </Target>
7900 <!--
7901 ============================================================
7902 SourceFilesProjectOutputGroup
7903
7904 This target performs population of the Source Files project output group.
7905 Source files are items in the project whose type is "Compile" and "EmbeddedResource".
7906 ============================================================
7907 -->
7908 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7909 <SourceFilesProjectOutputGroupDependsOn>PrepareForBuild;AssignTargetPaths</SourceFilesProjectOutputGroupDependsOn>
7910 </PropertyGroup>
7911 <Target Name="SourceFilesProjectOutputGroup" Returns="@(SourceFilesProjectOutputGroupOutput)" DependsOnTargets="$(SourceFilesProjectOutputGroupDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7912 <AssignTargetPath Files="@(Compile)" RootFolder="$(MSBuildProjectDirectory)">
7913 <Output TaskParameter="AssignedFiles" ItemName="_CompileWithTargetPath" />
7914 </AssignTargetPath>
7915 <ItemGroup>
7916 <!-- First we deal with Compile, EmbeddedResource and AppConfig -->
7917 <SourceFilesProjectOutputGroupOutput Include="@(_CompileWithTargetPath->'%(FullPath)');@(EmbeddedResource->'%(FullPath)');@(_LicxFile->'%(FullPath)');@(AppConfigWithTargetPath->'%(FullPath)')" />
7918 <!-- Include the project file -->
7919 <SourceFilesProjectOutputGroupOutput Include="$(MSBuildProjectFullPath)">
7920 <!-- For compatibility with 2.0 -->
7921 <OriginalItemSpec>$(MSBuildProjectFullPath)</OriginalItemSpec>
7922 <TargetPath>$(ProjectFileName)</TargetPath>
7923 </SourceFilesProjectOutputGroupOutput>
7924 </ItemGroup>
7925 </Target>
7926 <!-- Get just the compile items -->
7927 <Target Name="GetCompile" Returns="@(Compile)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
7928 <!--
7929 ============================================================
7930 ContentFilesProjectOutputGroup
7931
7932 This target performs population of the Content Files project output group.
7933 Content files are items in the project whose type is "Content".
7934 ============================================================
7935 -->
7936 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7937 <ContentFilesProjectOutputGroupDependsOn>PrepareForBuild;AssignTargetPaths</ContentFilesProjectOutputGroupDependsOn>
7938 </PropertyGroup>
7939 <Target Name="ContentFilesProjectOutputGroup" Returns="@(ContentFilesProjectOutputGroupOutput)" DependsOnTargets="$(ContentFilesProjectOutputGroupDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7940 <!-- Convert items into final items; this way we can get the full path for each item. -->
7941 <ItemGroup>
7942 <ContentFilesProjectOutputGroupOutput Include="@(ContentWithTargetPath->'%(FullPath)')" />
7943 </ItemGroup>
7944 </Target>
7945 <!--
7946 ============================================================
7947 SGenFilesOutputGroup
7948
7949 This target performs population of the GenerateSerializationAssemblies Files project output group.
7950 GenerateSerializationAssemblies files are those generated by the GenerateSerializationAssemblies target and task.
7951 ============================================================
7952 -->
7953 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7954 <SGenFilesOutputGroupDependsOn />
7955 </PropertyGroup>
7956 <ItemGroup Condition="'$(_SGenGenerateSerializationAssembliesConfig)' == 'On' or ('@(WebReferenceUrl)'!='' and '$(_SGenGenerateSerializationAssembliesConfig)' == 'Auto')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7957 <SGenFilesOutputGroupOutput Include="@(_OutputPathItem->'%(FullPath)$(_SGenDllName)')">
7958 <FinalOutputPath>@(_OutputPathItem->'%(FullPath)$(_SGenDllName)')</FinalOutputPath>
7959 <TargetPath>$(_SGenDllName)</TargetPath>
7960 </SGenFilesOutputGroupOutput>
7961 </ItemGroup>
7962 <Target Name="SGenFilesOutputGroup" Returns="@(SGenFilesOutputGroupOutput)" DependsOnTargets="$(SGenFilesOutputGroupDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
7963 <!--
7964 ============================================================
7965 SDKRelated Output groups
7966
7967 These targets are to gather information from the SDKs.
7968 ============================================================
7969 -->
7970 <!-- Get the resolved SDK reference items -->
7971 <Target Name="GetResolvedSDKReferences" DependsOnTargets="ResolveSDKReferences" Returns="@(ResolvedSDKReference)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
7972 <!-- Target will return no results by default but will be populated by other targets elsewhere.
7973 Needed for certain build environments that import partial sets of targets. -->
7974 <Target Name="CollectReferencedNuGetPackages" Returns="@(ReferencedNuGetPackages)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
7975 <!-- Get the TargetFrameworks that are supported for the Visual Studio TargetFramework drop down -->
7976 <Target Name="GenerateSupportedTargetFrameworkAlias" Returns="@(SupportedTargetFrameworkAlias)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
7977 <!--
7978 ============================================================
7979 PriFilesOutputGroup
7980
7981 This target performs population of the pri files output group
7982 ============================================================
7983 -->
7984 <Target Name="PriFilesOutputGroup" Condition="'@(_ReferenceRelatedPaths)' != ''" DependsOnTargets="BuildOnlySettings;PrepareForBuild;AssignTargetPaths;ResolveReferences" Returns="@(PriFilesOutputGroupOutput)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7985 <!-- This item represents dependent pri file's -->
7986 <ItemGroup>
7987 <PriFilesOutputGroupOutput Include="@(_ReferenceRelatedPaths->'%(FullPath)')" Condition="'%(Extension)' == '.pri'" />
7988 </ItemGroup>
7989 </Target>
7990 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
7991 <SDKRedistOutputGroupDependsOn>ResolveSDKReferences;ExpandSDKReferences</SDKRedistOutputGroupDependsOn>
7992 </PropertyGroup>
7993 <!--
7994 ============================================================
7995 SDKRedistOutputGroup
7996
7997 This target gathers the Redist folders from the SDKs which have been resolved.
7998 ============================================================
7999 -->
8000 <Target Name="SDKRedistOutputGroup" Returns="@(SDKRedistOutputGroupOutput)" DependsOnTargets="$(SDKRedistOutputGroupDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8001 <!-- This list starts with the least specific files to the most specific so that later files can overwrite earlier files-->
8002 <ItemGroup>
8003 <SDKRedistOutputGroupOutput Include="@(ResolvedRedistFiles)" />
8004 </ItemGroup>
8005 </Target>
8006 <!--
8007 ***********************************************************************************************
8008 ***********************************************************************************************
8009 AllProjectOutputGroupsDependencies Section
8010 ***********************************************************************************************
8011 ***********************************************************************************************
8012 -->
8013 <!--
8014 ============================================================
8015 CommonOutputGroupsDependsOn
8016
8017 Dependencies common to many of the *OutputGroupDependencies targets.
8018 ============================================================
8019 -->
8020 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8021 <CommonOutputGroupsDependsOn>
8022 $(CommonOutputGroupsDependsOn);
8023 BuildOnlySettings;
8024 PrepareForBuild;
8025 AssignTargetPaths;
8026 ResolveReferences
8027 </CommonOutputGroupsDependsOn>
8028 </PropertyGroup>
8029 <!--
8030 ============================================================
8031 AllProjectOutputGroupsDependencies
8032 ============================================================
8033 -->
8034 <Target Name="AllProjectOutputGroupsDependencies" DependsOnTargets="&#xD;&#xA; BuiltProjectOutputGroupDependencies;&#xD;&#xA; DebugSymbolsProjectOutputGroupDependencies;&#xD;&#xA; SatelliteDllsProjectOutputGroupDependencies;&#xD;&#xA; DocumentationProjectOutputGroupDependencies;&#xD;&#xA; SGenFilesOutputGroupDependencies" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
8035 <!--
8036 ============================================================
8037 BuiltProjectOutputGroupDependencies
8038
8039 This target performs population of the Built project output group dependencies.
8040 ============================================================
8041 -->
8042 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8043 <BuiltProjectOutputGroupDependenciesDependsOn>
8044 $(BuiltProjectOutputGroupDependenciesDependsOn);
8045 $(CommonOutputGroupsDependsOn)
8046 </BuiltProjectOutputGroupDependenciesDependsOn>
8047 </PropertyGroup>
8048 <Target Name="BuiltProjectOutputGroupDependencies" DependsOnTargets="$(BuiltProjectOutputGroupDependenciesDependsOn)" Returns="@(BuiltProjectOutputGroupDependency)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8049 <ItemGroup>
8050 <BuiltProjectOutputGroupDependency Include="@(ReferencePath->'%(FullPath)');&#xD;&#xA; @(ReferenceDependencyPaths->'%(FullPath)');&#xD;&#xA; @(NativeReferenceFile->'%(FullPath)');&#xD;&#xA; @(_DeploymentLooseManifestFile->'%(FullPath)');&#xD;&#xA; @(ResolvedIsolatedComModules->'%(FullPath)')" />
8051 </ItemGroup>
8052 </Target>
8053 <!--
8054 ============================================================
8055 DebugSymbolsProjectOutputGroupDependencies
8056
8057 This target performs population of the dependencies for the debug symbols project output group.
8058 ============================================================
8059 -->
8060 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8061 <DebugSymbolsProjectOutputGroupDependenciesDependsOn>
8062 $(DebugSymbolsProjectOutputGroupDependenciesDependsOn);
8063 $(CommonOutputGroupsDependsOn)
8064 </DebugSymbolsProjectOutputGroupDependenciesDependsOn>
8065 </PropertyGroup>
8066 <Target Name="DebugSymbolsProjectOutputGroupDependencies" Condition="'$(DebugSymbols)'!='false'" DependsOnTargets="$(DebugSymbolsProjectOutputGroupDependenciesDependsOn)" Returns="@(DebugSymbolsProjectOutputGroupDependency)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8067 <!-- This item represents dependent PDB's -->
8068 <ItemGroup>
8069 <DebugSymbolsProjectOutputGroupDependency Include="@(_ReferenceRelatedPaths->'%(FullPath)')" Condition="'%(Extension)' == '.pdb'" />
8070 </ItemGroup>
8071 </Target>
8072 <!--
8073 ============================================================
8074 SatelliteDllsProjectOutputGroupDependencies
8075
8076 This target performs population of the dependencies for the satellite files project output group.
8077 ============================================================
8078 -->
8079 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8080 <SatelliteDllsProjectOutputGroupDependenciesDependsOn>
8081 $(SatelliteDllsProjectOutputGroupDependenciesDependsOn);
8082 $(CommonOutputGroupsDependsOn)
8083 </SatelliteDllsProjectOutputGroupDependenciesDependsOn>
8084 </PropertyGroup>
8085 <Target Name="SatelliteDllsProjectOutputGroupDependencies" DependsOnTargets="$(SatelliteDllsProjectOutputGroupDependenciesDependsOn)" Returns="@(SatelliteDllsProjectOutputGroupDependency)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8086 <!-- This item represents dependent satellites -->
8087 <ItemGroup>
8088 <SatelliteDllsProjectOutputGroupDependency Include="@(ReferenceSatellitePaths->'%(FullPath)')" />
8089 </ItemGroup>
8090 </Target>
8091 <!--
8092 ============================================================
8093 DocumentationProjectOutputGroupDependencies
8094
8095 This target performs population of the dependencies for the documentation project output group.
8096 ============================================================
8097 -->
8098 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8099 <DocumentationProjectOutputGroupDependenciesDependsOn>
8100 $(DocumentationProjectOutputGroupDependenciesDependsOn);
8101 $(CommonOutputGroupsDependsOn)
8102 </DocumentationProjectOutputGroupDependenciesDependsOn>
8103 </PropertyGroup>
8104 <Target Name="DocumentationProjectOutputGroupDependencies" Condition="'$(DocumentationFile)'!=''" DependsOnTargets="$(DocumentationProjectOutputGroupDependenciesDependsOn)" Returns="@(DocumentationProjectOutputGroupDependency)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8105 <!-- This item represents dependent XMLs -->
8106 <ItemGroup>
8107 <DocumentationProjectOutputGroupDependency Include="@(_ReferenceRelatedPaths->'%(FullPath)')" Condition="'%(Extension)' == '.xml'" />
8108 </ItemGroup>
8109 </Target>
8110 <!--
8111 ============================================================
8112 SGenFilesOutputGroupDependencies
8113
8114 This target performs population of the dependencies for the GenerateSerializationAssemblies project output group.
8115 ============================================================
8116 -->
8117 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8118 <SGenFilesOutputGroupDependenciesDependsOn>
8119 $(SGenFilesOutputGroupDependenciesDependsOn);
8120 $(CommonOutputGroupsDependsOn)
8121 </SGenFilesOutputGroupDependenciesDependsOn>
8122 </PropertyGroup>
8123 <Target Name="SGenFilesOutputGroupDependencies" DependsOnTargets="$(SGenFilesOutputGroupDependenciesDependsOn)" Returns="@(SGenFilesOutputGroupDependency)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8124 <!-- This item represents sgen xml serializer dll's -->
8125 <ItemGroup>
8126 <SGenFilesOutputGroupDependency Include="@(_ReferenceSerializationAssemblyPaths->'%(FullPath)')" Condition="'%(Extension)' == '.dll'" />
8127 </ItemGroup>
8128 </Target>
8129 <!--
8130 ============================================================
8131 ReferenceCopyLocalPathsOutputGroup
8132
8133 Exposes the set of items that should be copied locally based on the project's references.
8134 ============================================================
8135 -->
8136 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8137 <ReferenceCopyLocalPathsOutputGroupDependsOn>
8138 $(ReferenceCopyLocalPathsOutputGroupDependsOn);
8139 $(CommonOutputGroupsDependsOn)
8140 </ReferenceCopyLocalPathsOutputGroupDependsOn>
8141 </PropertyGroup>
8142 <Target Name="ReferenceCopyLocalPathsOutputGroup" DependsOnTargets="$(ReferenceCopyLocalPathsOutputGroupDependsOn)" Returns="@(ReferenceCopyLocalPathsOutputGroupOutput)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8143 <ItemGroup>
8144 <ReferenceCopyLocalPathsOutputGroupOutput Include="@(ReferenceCopyLocalPaths)">
8145 <TargetPath>%(ReferenceCopyLocalPaths.DestinationSubDirectory)%(ReferenceCopyLocalPaths.Filename)%(ReferenceCopyLocalPaths.Extension)</TargetPath>
8146 </ReferenceCopyLocalPathsOutputGroupOutput>
8147 </ItemGroup>
8148 </Target>
8149 <!--
8150 ============================================================
8151 DesignerRuntimeImplementationProjectOutputGroup
8152
8153 Exposes build items to be used by designer. The default is empty, but
8154 SDKs can override it as appropriate. The empty stub is required so that
8155 the project system can always rely on calling it even if it is not
8156 overridden.
8157 ============================================================
8158 -->
8159 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8160 <DesignerRuntimeImplementationProjectOutputGroupDependsOn>
8161 $(DesignerRuntimeImplementationProjectOutputGroupDependsOn);
8162 $(CommonOutputGroupsDependsOn)
8163 </DesignerRuntimeImplementationProjectOutputGroupDependsOn>
8164 </PropertyGroup>
8165 <Target Name="DesignerRuntimeImplementationProjectOutputGroup" DependsOnTargets="$(DesignerRuntimeImplementationProjectOutputGroupDependsOn)" Returns="@(DesignerRuntimeImplementationProjectOutputGroupOutput)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
8166 <!--
8167 ============================================================
8168 .editorconfig support
8169 ============================================================
8170 -->
8171 <!-- Expose the set of potential .editorconfig files so the project system can
8172 retrieve them. -->
8173 <Target Name="GetPotentialEditorConfigFiles" Returns="@(PotentialEditorConfigFiles)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
8174 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8175 <CodeAnalysisTargets Condition="'$(CodeAnalysisTargets)'==''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeAnalysis\Microsoft.CodeAnalysis.targets</CodeAnalysisTargets>
8176 </PropertyGroup>
8177 <!--
8178============================================================================================================================================
8179 <Import Project="$(CodeAnalysisTargets)" Condition="Exists('$(CodeAnalysisTargets)')">
8180
8181C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\VisualStudio\v16.0\CodeAnalysis\Microsoft.CodeAnalysis.targets
8182============================================================================================================================================
8183-->
8184 <UsingTask TaskName="SetEnvironmentVariable" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8185 <ParameterGroup>
8186 <EnvKey ParameterType="System.String" Required="true" />
8187 <EnvValue ParameterType="System.String" Required="true" />
8188 </ParameterGroup>
8189 <Task>
8190 <Using Namespace="System" />
8191 <Code Type="Fragment" Language="cs"><![CDATA[
8192 try {
8193 Environment.SetEnvironmentVariable(EnvKey, EnvValue, System.EnvironmentVariableTarget.Process);
8194 }
8195 catch {
8196 }
8197 ]]></Code>
8198 </Task>
8199 </UsingTask>
8200 <!-- Global properties for all analyzers -->
8201 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8202 <CodeAnalysisStaticAnalysisDirectory Condition="'$(CodeAnalysisStaticAnalysisDirectory)'=='' and Exists('$(VsInstallRoot)\Team Tools\Static Analysis Tools\')">$(VsInstallRoot)\Team Tools\Static Analysis Tools\</CodeAnalysisStaticAnalysisDirectory>
8203 <!-- Default rule set search paths -->
8204 <CodeAnalysisRuleSetDirectories Condition="'$(CodeAnalysisIgnoreBuiltInRuleSets)'!='true' and&#xD;&#xA; '$(CodeAnalysisStaticAnalysisDirectory)'!=''">$(CodeAnalysisRuleSetDirectories);$(CodeAnalysisStaticAnalysisDirectory)\Rule Sets</CodeAnalysisRuleSetDirectories>
8205 <!--
8206 In scenario where we run CA from command-line , we don't get "CodeAnalysisVSSku" variable passed by the IDE, so in case of Express-only installation
8207 we attempt to load rule sets that are only present on Pro and above - and fail. Let's assume we're in "Express" mode if the Pro+ rule set doesn't exist.
8208 -->
8209 <CodeAnalysisVSSku Condition="'$(CodeAnalysisVSSku)'=='' and !Exists('$(CodeAnalysisStaticAnalysisDirectory)\Rule Sets\NativeRecommendedRules.ruleset')">Express</CodeAnalysisVSSku>
8210 </PropertyGroup>
8211 <PropertyGroup Condition="'$(RunCodeAnalysis)'=='true' or '$(RunCodeAnalysisOnce)'=='true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8212 <!--
8213 - Checking whether we should run Code Analysis only on specific project in the solution
8214 - Combine all variables into one "master" control variable to simplify conditions further below
8215 -->
8216 <RunCodeAnalysisOnThisProject>true</RunCodeAnalysisOnThisProject>
8217 <RunCodeAnalysisOnThisProject Condition="'$(CodeAnalysisProjectFullPath)'!='' and '$(MSBuildProjectFullPath)'!='' and '$(MSBuildProjectFullPath)'!='$(CodeAnalysisProjectFullPath)'">false</RunCodeAnalysisOnThisProject>
8218 </PropertyGroup>
8219 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8220 <IsCSharpOrVbProject Condition="'$(Language)'=='C#' or '$(Language)'=='VB'">true</IsCSharpOrVbProject>
8221 <IsLegacyCodeAnalysis Condition="'$(IsCSharpOrVbProject)'=='true'">true</IsLegacyCodeAnalysis>
8222 <SuppressLegacyCodeAnalysisDeprecatedWarning Condition="'$(SuppressLegacyCodeAnalysisDeprecatedWarning)'!='true'">false</SuppressLegacyCodeAnalysisDeprecatedWarning>
8223 <RunAnalyzersDuringLiveAnalysis Condition="'$(RunAnalyzers)' != ''">$(RunAnalyzers)</RunAnalyzersDuringLiveAnalysis>
8224 <RunAnalyzersDuringLiveAnalysis Condition="'$(RunAnalyzersDuringLiveAnalysis)' == ''">$(IsCSharpOrVbProject)</RunAnalyzersDuringLiveAnalysis>
8225 <RunAnalyzersDuringBuild Condition="'$(RunAnalyzers)' != ''">$(RunAnalyzers)</RunAnalyzersDuringBuild>
8226 <RunAnalyzersDuringBuild Condition="'$(RunAnalyzersDuringBuild)' == ''">$(IsCSharpOrVbProject)</RunAnalyzersDuringBuild>
8227 </PropertyGroup>
8228 <PropertyGroup Condition="'$(RunCodeAnalysisOnThisProject)'=='true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8229 <!-- Define the CODE_ANALYSIS constant -->
8230 <DefineConstants Condition="'$(Language)'=='C#' ">CODE_ANALYSIS;$(DefineConstants)</DefineConstants>
8231 <FinalDefineConstants Condition="'$(Language)'=='VB' ">CODE_ANALYSIS=-1,$(FinalDefineConstants)</FinalDefineConstants>
8232 </PropertyGroup>
8233 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8234 <!-- We do this check all over the place, consolidate -->
8235 <RunCppAnalysis>false</RunCppAnalysis>
8236 <RunCppAnalysis Condition="'$(Language)'=='C++' and '$(RunCodeAnalysisOnThisProject)'=='true' and '$(ApplicationType)' != 'Linux'">true</RunCppAnalysis>
8237 <RunMsvcAnalysis>$(RunCppAnalysis)</RunMsvcAnalysis>
8238 <RunMsvcAnalysis Condition="'$(EnableMicrosoftCodeAnalysis)'=='false' or '$(UseClangCl)'=='true'">false</RunMsvcAnalysis>
8239 </PropertyGroup>
8240 <!-- Global properties for all analyzers -->
8241 <!-- FxCop analyzer properties -->
8242 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8243 <!-- FxCopDir must be considered for backwards compatibility with the Visual Studio 2005 task, except within the context of a Team Build build. -->
8244 <CodeAnalysisPath Condition="'$(CodeAnalysisPath)'=='' and '$(FxCopDir)'!='' and '$(TeamBuildConstants)'==''">$(FxCopDir)</CodeAnalysisPath>
8245 <CodeAnalysisPath Condition="'$(CodeAnalysisPath)'=='' and Exists('$(VsInstallRoot)\Team Tools\Static Analysis Tools\FxCop\')">$(VsInstallRoot)\Team Tools\Static Analysis Tools\FxCop\</CodeAnalysisPath>
8246 <!-- Default FxCop settings -->
8247 <CodeAnalysisApplyLogFileXsl Condition="'$(CodeAnalysisApplyLogFileXsl)'==''">false</CodeAnalysisApplyLogFileXsl>
8248 <CodeAnalysisFailOnMissingRules Condition="'$(CodeAnalysisFailOnMissingRules)'==''">false</CodeAnalysisFailOnMissingRules>
8249 <CodeAnalysisForceOutput Condition="'$(CodeAnalysisForceOutput)'==''">true</CodeAnalysisForceOutput>
8250 <CodeAnalysisGenerateSuccessFile Condition="'$(CodeAnalysisGenerateSuccessFile)'==''">true</CodeAnalysisGenerateSuccessFile>
8251 <CodeAnalysisIgnoreGeneratedCode Condition="'$(CodeAnalysisIgnoreGeneratedCode)'==''">true</CodeAnalysisIgnoreGeneratedCode>
8252 <CodeAnalysisIgnoreInvalidTargets Condition="'$(CodeAnalysisIgnoreInvalidTargets)'==''">true</CodeAnalysisIgnoreInvalidTargets>
8253 <CodeAnalysisIgnoreMissingIndirectReferences Condition="'$(CodeAnalysisIgnoreMissingIndirectReferences)'==''">false</CodeAnalysisIgnoreMissingIndirectReferences>
8254 <CodeAnalysisInputAssembly Condition="'$(CodeAnalysisInputAssembly)'==''">$(OutDir)$(TargetFileName)</CodeAnalysisInputAssembly>
8255 <CodeAnalysisLogFile Condition="'$(CodeAnalysisLogFile)'==''">$(CodeAnalysisInputAssembly).CodeAnalysisLog.xml</CodeAnalysisLogFile>
8256 <CodeAnalysisModuleSuppressionsFile Condition="'$(CodeAnalysisModuleSuppressionsFile)'==''">GlobalSuppressions$(DefaultLanguageSourceExtension)</CodeAnalysisModuleSuppressionsFile>
8257 <CodeAnalysisOverrideRuleVisibilities Condition="'$(CodeAnalysisOverrideRuleVisibilities)'==''">false</CodeAnalysisOverrideRuleVisibilities>
8258 <CodeAnalysisOutputToConsole Condition="'$(CodeAnalysisOutputToConsole)'==''">false</CodeAnalysisOutputToConsole>
8259 <CodeAnalysisQuiet Condition="'$(CodeAnalysisQuiet)'==''">false</CodeAnalysisQuiet>
8260 <!--
8261 Do not add the built-in rule directories in any of the following conditions:
8262 1. CodeAnalysisRuleAssemblies is not empty, CodeAnalysisRuleDirectories is empty, and CodeAnalysisRuleSet is empty. (This is the case when CodeAnalysisRuleAssemblies will be used.)
8263 2. CodeAnalysisIgnoreBuiltInRules is true.
8264 3. CodeAnalysisPath is empty.
8265 4. CodeAnalysisProject is not empty (i.e., an FxCop project file is used).
8266
8267 The condition below checks ensures none of these four are true.
8268 -->
8269 <CodeAnalysisRuleDirectories Condition="('$(CodeAnalysisRuleAssemblies)'=='' or '$(CodeAnalysisRuleDirectories)'!='' or '$(CodeAnalysisRuleSet)'!='') and &#xD;&#xA; '$(CodeAnalysisIgnoreBuiltInRules)'!='true' and &#xD;&#xA; '$(CodeAnalysisPath)'!='' and &#xD;&#xA; '$(CodeAnalysisProject)'==''">$(CodeAnalysisRuleDirectories);$(CodeAnalysisPath)\Rules</CodeAnalysisRuleDirectories>
8270 <!-- We emit active and suppressed messages in the output log when running code analysis within Visual Studio.
8271 Delete the below line if you do not want to see suppressed messages within Visual Studio. -->
8272 <CodeAnalysisSaveMessagesToReport Condition="'$(CodeAnalysisSaveMessagesToReport)'=='' and '$(RunCodeAnalysisOnce)'=='true'">Active,Excluded</CodeAnalysisSaveMessagesToReport>
8273 <!-- We only emit active messages in the output log when running code analysis from the command line. -->
8274 <CodeAnalysisSaveMessagesToReport Condition="'$(CodeAnalysisSaveMessagesToReport)'==''">Active</CodeAnalysisSaveMessagesToReport>
8275 <CodeAnalysisSearchGlobalAssemblyCache Condition="'$(CodeAnalysisSearchGlobalAssemblyCache)'==''">true</CodeAnalysisSearchGlobalAssemblyCache>
8276 <CodeAnalysisSucceededFile Condition="'$(CodeAnalysisSucceededFile)'==''">$(CodeAnalysisInputAssembly).lastcodeanalysissucceeded</CodeAnalysisSucceededFile>
8277 <CodeAnalysisSummary Condition="'$(CodeAnalysisSummary)'==''">false</CodeAnalysisSummary>
8278 <CodeAnalysisTimeout Condition="'$(CodeAnalysisTimeout)'==''">120</CodeAnalysisTimeout>
8279 <!-- Use a separate property '_CodeAnalysisTreatWarningsAsErrors' to avoid overwriting user specified value for 'CodeAnalysisTreatWarningsAsErrors', which is used outside this targets file. -->
8280 <_CodeAnalysisTreatWarningsAsErrors>$(CodeAnalysisTreatWarningsAsErrors)</_CodeAnalysisTreatWarningsAsErrors>
8281 <_CodeAnalysisTreatWarningsAsErrors Condition="'$(_CodeAnalysisTreatWarningsAsErrors)'==''">false</_CodeAnalysisTreatWarningsAsErrors>
8282 <CodeAnalysisUpdateProject Condition="'$(CodeAnalysisUpdateProject)'==''">false</CodeAnalysisUpdateProject>
8283 <CodeAnalysisUseTypeNameInSuppression Condition="'$(CodeAnalysisUseTypeNameInSuppression)'==''">true</CodeAnalysisUseTypeNameInSuppression>
8284 <CodeAnalysisVerbose Condition="'$(CodeAnalysisVerbose)'==''">false</CodeAnalysisVerbose>
8285 </PropertyGroup>
8286 <!-- Select appropriate default rule set depending on project type and VS Sku-->
8287 <Choose xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8288 <When Condition="!Exists('$(CodeAnalysisRuleSet)') and ('$(CodeAnalysisVSSku)'=='Express' or ('$(CodeAnalysisRules)'=='' and '$(CodeAnalysisRuleAssemblies)'=='' and '$(CodeAnalysisRuleSet)'==''))">
8289 <Choose>
8290 <When Condition="'$(Language)'=='C++' and '$(CLRSupport)'=='true' and '$(CodeAnalysisVSSku)'=='Express'">
8291 <PropertyGroup>
8292 <CodeAnalysisRuleSet>MixedMinimumRules.ruleset</CodeAnalysisRuleSet>
8293 </PropertyGroup>
8294 </When>
8295 <When Condition="'$(Language)'=='C++' and '$(CLRSupport)'=='true'">
8296 <PropertyGroup>
8297 <CodeAnalysisRuleSet>MixedRecommendedRules.ruleset</CodeAnalysisRuleSet>
8298 </PropertyGroup>
8299 </When>
8300 <When Condition="'$(Language)'=='C++' and '$(CodeAnalysisVSSku)'=='Express'">
8301 <PropertyGroup>
8302 <CodeAnalysisRuleSet>NativeMinimumRules.ruleset</CodeAnalysisRuleSet>
8303 </PropertyGroup>
8304 </When>
8305 <When Condition="'$(Language)'=='C++'">
8306 <PropertyGroup>
8307 <CodeAnalysisRuleSet>NativeRecommendedRules.ruleset</CodeAnalysisRuleSet>
8308 </PropertyGroup>
8309 </When>
8310 <When Condition="'$(CodeAnalysisVSSku)'=='Express'">
8311 <PropertyGroup>
8312 <CodeAnalysisRuleSet>ManagedMinimumRules.ruleset</CodeAnalysisRuleSet>
8313 </PropertyGroup>
8314 </When>
8315 </Choose>
8316 </When>
8317 </Choose>
8318 <!-- C#/VB specific properties -->
8319 <PropertyGroup Condition="'$(Language)'=='C#' or '$(Language)'=='VB'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8320 <!-- Run Code Analysis after the build, but before running the application-->
8321 <PrepareForRunDependsOn>$(PrepareForRunDependsOn);RunCodeAnalysis</PrepareForRunDependsOn>
8322 <RunCodeAnalysisDependsOn>$(RunCodeAnalysisDependsOn);Compile</RunCodeAnalysisDependsOn>
8323 </PropertyGroup>
8324 <!-- C++ specific properties -->
8325 <PropertyGroup Condition="'$(RunMsvcAnalysis)'=='true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8326 <!-- Turn off /analyze:only for now since the perf gain doesn't justify the breaks -->
8327 <VCAnalyzeOnlyAllowed Condition="'$(VCAnalyzeOnlyAllowed)'==''">false</VCAnalyzeOnlyAllowed>
8328 <!-- CLR and WinRT projects don't support /analyze:only because they require metadata to be built -->
8329 <VCAnalyzeOnlyAllowed Condition="'$(VCAnalyzeOnlyAllowed)'=='' and ('$(WindowsAppContainer)'=='true' or '$(WinMDAssembly)'=='true' or '$(ManagedAssembly)'=='true')">false</VCAnalyzeOnlyAllowed>
8330 <!-- Keep track if we are doing an analyze-only build (toolset 14.0 and higher) -->
8331 <VCAnalyzeOnly>false</VCAnalyzeOnly>
8332 <VCAnalyzeOnly Condition="'$(RunCodeAnalysisOnce)'=='true' and '$(VCAnalyzeOnlyAllowed)'=='true' and '$(PlatformToolsetVersion)'&gt;='140'">true</VCAnalyzeOnly>
8333 <!-- Use the specified ruleset path if found otherwise try to determine the full path to the ruleset -->
8334 <VCAnalyzeRulesetPath Condition="Exists('$(CodeAnalysisRuleSet)')">$(CodeAnalysisRuleSet)</VCAnalyzeRulesetPath>
8335 <VCAnalyzeRulesetPath Condition="'$(VCAnalyzeRulesetPath)'==''">$(CodeAnalysisStaticAnalysisDirectory)Rule Sets\$(CodeAnalysisRuleSet)</VCAnalyzeRulesetPath>
8336 <!-- Set up localEspc plugin path -->
8337 <!-- use 32-bit version by default -->
8338 <LocalEspcPath>$(VC_ExecutablePath_x86_x86)\localespc.dll</LocalEspcPath>
8339 <ConcurrencyCheckPath>$(VC_ExecutablePath_x86_x86)\ConcurrencyCheck.dll</ConcurrencyCheckPath>
8340 <!-- use 64-bit version if 64-bit cl.exe is used -->
8341 <LocalEspcPath Condition="'$(VCToolArchitecture)'=='Native64Bit'">$(VC_ExecutablePath_x64_x64)\localespc.dll</LocalEspcPath>
8342 <ConcurrencyCheckPath Condition="'$(VCToolArchitecture)'=='Native64Bit'">$(VC_ExecutablePath_x64_x64)\ConcurrencyCheck.dll</ConcurrencyCheckPath>
8343 <RunMergeNativeCodeAnalysisDependsOn>ClCompile</RunMergeNativeCodeAnalysisDependsOn>
8344 <RunMergeNativeCodeAnalysisDependsOn Condition="'$(RunCodeAnalysisDependsOn)'!=''">$(RunCodeAnalysisDependsOn);$(RunMergeNativeCodeAnalysisDependsOn)</RunMergeNativeCodeAnalysisDependsOn>
8345 <RunCodeAnalysisDependsOn>$(RunCodeAnalysisDependsOn);ClCompile;RunMergeNativeCodeAnalysis</RunCodeAnalysisDependsOn>
8346 <ExtensionsToDeleteOnClean>$(ExtensionsToDeleteOnClean);$(CodeAnalysisLogFile);$(CodeAnalysisSucceededFile)</ExtensionsToDeleteOnClean>
8347 <CodeAnalysisTLogFile>$(IntDir)CodeAnalysis.read.1.tlog</CodeAnalysisTLogFile>
8348 <NativeCodeAnalysisTLogFile>$(IntDir)NativeCodeAnalysis.read.1.tlog</NativeCodeAnalysisTLogFile>
8349 </PropertyGroup>
8350 <!-- Analyze-only build, don't run any post-compile build steps -->
8351 <PropertyGroup Condition="'$(RunMsvcAnalysis)'=='true' and '$(VCAnalyzeOnly)'=='true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8352 <!--
8353 See Microsoft.BuildSteps.targets
8354 PrepareForBuild before ResolveReferences limits P2P rebuild
8355 -->
8356 <BuildSteps>
8357 PrepareForBuild;
8358 ResolveReferences;
8359 InitializeBuildStatus;
8360 BuildGenerateSources;
8361 BeforeClCompile;
8362 RunNativeCodeAnalysis
8363 </BuildSteps>
8364 <!-- In analyze-only, we don't generate assemblies so we can't run FxCop -->
8365 </PropertyGroup>
8366 <!-- Build with analyze, we run analysis after the assembly is linked -->
8367 <PropertyGroup Condition="'$(RunMsvcAnalysis)'=='true' and '$(VCAnalyzeOnly)'!='true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8368 <AfterBuildLinkTargets>$(AfterBuildLinkTargets);RunMergeNativeCodeAnalysis;RunNativeCodeAnalysis</AfterBuildLinkTargets>
8369 <AfterBuildLinkTargets Condition="'$(CLRSupport)'=='true'">$(AfterBuildLinkTargets);RunCodeAnalysis</AfterBuildLinkTargets>
8370 </PropertyGroup>
8371 <!-- NOTE: Back-compat support for EnablePREFast item property.
8372 It's possible to set manually set EnablePREFast in an item definition group
8373 in project, without setting RunCodeAnalysis. In this case, we want to set
8374 up CAExcludePath so headers are clean, but don't want to enable any other
8375 C++ CA features like the result ingestion tasks or /analyze:quiet. -->
8376 <PropertyGroup Condition="'$(Language)'=='C++' or '$(RunMsvcAnalysis)'=='true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8377 <!-- Set up CAExcludePath for known include paths -->
8378 <CAExcludePath Condition="'$(Console_SdkIncludeRoot)'!=''">$(Console_SdkIncludeRoot);$(CAExcludePath)</CAExcludePath>
8379 <CAExcludePath Condition="'$(WindowsSDK_IncludePath)'!=''">$(WindowsSDK_IncludePath);$(CAExcludePath)</CAExcludePath>
8380 <CAExcludePath Condition="'$(UniversalCRT_IncludePath)'!=''">$(UniversalCRT_IncludePath);$(CAExcludePath)</CAExcludePath>
8381 <CAExcludePath Condition="Exists('$(VCToolsInstallDir)include')">$(VCToolsInstallDir)include;$(CAExcludePath)</CAExcludePath>
8382 <CAExcludePath Condition="Exists('$(VCToolsInstallDir)atlmfc\include')">$(VCToolsInstallDir)atlmfc\include;$(CAExcludePath)</CAExcludePath>
8383 <!-- Make sure the target that sets CAExcludePath is run -->
8384 <PrepareForBuildDependsOn>$(PrepareForBuildDependsOn);SetCABuildNativeEnvironmentVariables</PrepareForBuildDependsOn>
8385 </PropertyGroup>
8386 <!-- Actually set CAExcludePath -->
8387 <Target Name="SetCABuildNativeEnvironmentVariables" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8388 <!-- SetEnv is defined in Microsoft.Cpp.CurrentVersion.targets and is much faster -->
8389 <SetEnv Condition="'$(CAExcludePath)'!=''" Value="$(CAExcludePath)" Name="CAExcludePath" Prefix="false" />
8390 <SetEnv Condition="'$(RunMsvcAnalysis)'=='true' and '$(VCCodeAnalysisUX)'=='true'" Value="1" Name="CAEmitSarifLog" Prefix="false" />
8391 </Target>
8392 <!-- Set up the additional cl.exe command line for each compilation unit -->
8393 <ItemDefinitionGroup Condition="'$(RunMsvcAnalysis)'=='true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8394 <ClCompile>
8395 <EnablePREFast>true</EnablePREFast>
8396 <PreprocessorDefinitions>CODE_ANALYSIS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
8397 <PREfastLog Condition="'$(PlatformToolsetVersion)'&lt;'120'">$(IntDir)%(FileName)%(Extension).nativecodeanalysis.xml</PREfastLog>
8398 <PREfastLogFile Condition="'$(PlatformToolsetVersion)'&gt;='120'">%(ObjectFileName)%(FileName).nativecodeanalysis.xml</PREfastLogFile>
8399 <!-- Add the localEspc plugin only if ConcurrencyCheck is not installed -->
8400 <PREfastAdditionalPlugins Condition="!Exists('$(ConcurrencyCheckPath)') and Exists('$(LocalEspcPath)')">$(LocalEspcPath);%(ClCompile.PREfastAdditionalPlugins)</PREfastAdditionalPlugins>
8401 <!-- After Dev11 pass /analyze:quiet because warnings are added to the error list by a post-build task. -->
8402 <PREfastAdditionalOptions Condition="'$(PlatformToolsetVersion)'&gt;='110'">quiet;%(ClCompile.PREfastAdditionalOptions)</PREfastAdditionalOptions>
8403 <!-- Disable code-gen for analyze-only build -->
8404 <AdditionalOptions Condition="'$(VCAnalyzeOnly)'=='true'">%(ClCompile.AdditionalOptions) /c</AdditionalOptions>
8405 <PREfastAdditionalOptions Condition="'$(VCAnalyzeOnly)'=='true'">only;%(ClCompile.PREfastAdditionalOptions)</PREfastAdditionalOptions>
8406 <!-- In Dev15 we added ruleset handling in PREFast, add the ruleset file path if it exists -->
8407 <PREfastAdditionalOptions Condition="'$(PlatformToolsetVersion)'&gt;='140' and '$(PlatformToolsetVersion)'&lt;'142' and Exists('$(VCAnalyzeRulesetPath)')">%(ClCompile.PREfastAdditionalOptions);ruleset$(VCAnalyzeRulesetPath)</PREfastAdditionalOptions>
8408 <!-- In v142 ClCompile supports new arguments so other tools can filter them out (clang-cl)-->
8409 <PREfastRulesetFile Condition="'$(PlatformToolsetVersion)'&gt;='142' and Exists('$(VCAnalyzeRulesetPath)')">$(VCAnalyzeRulesetPath)</PREfastRulesetFile>
8410 <PREfastProjectDirectory Condition="'$(PlatformToolsetVersion)'&gt;='142' and Exists('$(MSBuildProjectDirectory)')">$(MSBuildProjectDirectory)</PREfastProjectDirectory>
8411 <PREfastRulesetDirectories Condition="'$(PlatformToolsetVersion)'&gt;='142' and '$(CodeAnalysisRuleSetDirectories)'!=''">$(CodeAnalysisRuleSetDirectories);%(ClCompile.PREfastRulesetDirectories)</PREfastRulesetDirectories>
8412 </ClCompile>
8413 </ItemDefinitionGroup>
8414 <!-- Make AdditionalFiles and CodeAnalysisDictionary available as a Build Action in Visual Studio -->
8415 <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8416 <AvailableItemName Include="AdditionalFiles" />
8417 <AvailableItemName Include="CodeAnalysisDictionary" />
8418 </ItemGroup>
8419 <!-- FxCop analyzer properties -->
8420 <!-- Managed analyzer targets -->
8421 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8422 <RunCodeAnalysisInputs>$(CodeAnalysisInputAssembly)</RunCodeAnalysisInputs>
8423 <RunCodeAnalysisInputs Condition="'$(CodeAnalysisRuleSet)'!='' and Exists('$(CodeAnalysisRuleSet)')">$(RunCodeAnalysisInputs);$(CodeAnalysisRuleSet)</RunCodeAnalysisInputs>
8424 <RunCodeAnalysisInputs Condition="'$(CodeAnalysisRuleSet)'!='' and !Exists('$(CodeAnalysisRuleSet)') and Exists('$(ProjectDir)$(CodeAnalysisRuleSet)')">$(RunCodeAnalysisInputs);$(ProjectDir)$(CodeAnalysisRuleSet)</RunCodeAnalysisInputs>
8425 </PropertyGroup>
8426 <UsingTask TaskName="Microsoft.Build.Tasks.CodeAnalysis" AssemblyFile=".\FxCopTask.dll" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
8427 <Target Name="RunCodeAnalysis" Condition="'$(RunCodeAnalysisOnThisProject)'=='true'" Inputs="$(RunCodeAnalysisInputs)" Outputs="$(CodeAnalysisLogFile);$(CodeAnalysisSucceededFile)" DependsOnTargets="$(RunCodeAnalysisDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8428 <!-- Build CodeAnalysisReferencePath inside of the RunCodeAnalysis target to ensure that ReferencePath -->
8429 <!-- has already been populated by the ResolveReferences target prior to using it. -->
8430 <ItemGroup>
8431 <CodeAnalysisReferencePath Include="@(ReferencePath)" />
8432 <CodeAnalysisReferencePath Condition="'$(Language)'=='VB' and '$(VBRuntimePath)'!=''" Include="$(VBRuntimePath)" />
8433 </ItemGroup>
8434 <!-- Add AdditionalUsingDirectories as reference assembly paths for C++ projects -->
8435 <ItemGroup>
8436 <CodeAnalysisDependentAssemblyPaths Condition="'$(Language)'=='C++'" Include="%(ClCompile.AdditionalUsingDirectories)" />
8437 </ItemGroup>
8438 <!-- If it is winmd file than we want to analyze winmdobj instead of winmd file -->
8439 <PropertyGroup>
8440 <CodeAnalysisInputAssembly Condition="'$(OutputType)'=='winmdobj'">@(IntermediateAssembly)</CodeAnalysisInputAssembly>
8441 <CodeAnalysisInputAssembly Condition="'$(OutputType)'=='winmdobj' and '$(Language)'=='VB'">$(IntermediateOutputPath)\TempCA\$(TargetName)$(TargetExt)</CodeAnalysisInputAssembly>
8442 </PropertyGroup>
8443 <!-- VBCompiler issue: fix the name of PDB file for winmdobj assembly -->
8444 <Copy Condition="'$(OutputType)'=='winmdobj' and '$(Language)'=='VB'" DestinationFiles="$(IntermediateOutputPath)\TempCA\$(TargetName).pdb" SourceFiles="$(PdbFile)" OverwriteReadOnlyFiles="True" />
8445 <Copy Condition="'$(OutputType)'=='winmdobj' and '$(Language)'=='VB'" DestinationFolder="$(IntermediateOutputPath)\TempCA\" SourceFiles="@(IntermediateAssembly)" OverwriteReadOnlyFiles="True" />
8446 <CodeAnalysis Condition="'$(RunCodeAnalysisOnThisProject)'=='true'" AdditionalOptions="$(CodeAnalysisAdditionalOptions)" AlternativeToolName="$(CodeAnalysisAlternativeToolName)" AnalysisTimeout="$(CodeAnalysisTimeout)" ApplyLogFileXsl="$(CodeAnalysisApplyLogFileXsl)" Assemblies="$(CodeAnalysisInputAssembly)" ConsoleXsl="$(CodeAnalysisConsoleXsl)" Culture="$(CodeAnalysisCulture)" DependentAssemblyPaths="@(CodeAnalysisDependentAssemblyPaths)" Dictionaries="@(CodeAnalysisDictionary)" DisableReferenceSwitchGeneration="$(CodeAnalysisDisableReferenceSwitchGeneration)" FailOnMissingRules="$(CodeAnalysisFailOnMissingRules)" FilesWritten="$(CodeAnalysisLogFile);$(CodeAnalysisSucceededFile)" ForceOutput="$(CodeAnalysisForceOutput)" GenerateSuccessFile="$(CodeAnalysisGenerateSuccessFile)" IsLegacyCodeAnalysis="$(IsLegacyCodeAnalysis)" SuppressLegacyCodeAnalysisDeprecatedWarning="$(SuppressLegacyCodeAnalysisDeprecatedWarning)" IgnoreBuildTaskWarnings="$(CodeAnalysisIgnoreBuildTaskWarnings)" IgnoreGeneratedCode="$(CodeAnalysisIgnoreGeneratedCode)" IgnoreInvalidTargets="$(CodeAnalysisIgnoreInvalidTargets)" IgnoreMissingIndirectReferences="$(CodeAnalysisIgnoreMissingIndirectReferences)" Imports="@(CodeAnalysisImport)" LogFile="$(CodeAnalysisLogFile)" LogFileXsl="$(CodeAnalysisLogFileXsl)" MSBuildProjectDirectory="$(MSBuildProjectDirectory)" OutputToConsole="$(CodeAnalysisOutputToConsole)" OverrideRuleVisibilities="$(CodeAnalysisOverrideRuleVisibilities)" NeverReportRuleErrors="$(CodeAnalysisNeverReportRuleErrors)" PlatformPath="$(CodeAnalysisPlatformPath)" Project="$(CodeAnalysisProject)" Quiet="$(CodeAnalysisQuiet)" References="@(CodeAnalysisReferencePath)" RuleAssemblies="$(CodeAnalysisRuleAssemblies)" RuleDirectories="$(CodeAnalysisRuleDirectories)" Rules="$(CodeAnalysisRules)" RuleSet="$(CodeAnalysisRuleSet)" RuleSetDirectories="$(CodeAnalysisRuleSetDirectories)" RuleSetOverrides="$(CodeAnalysisRuleSetOverrides)" SaveMessagesToReport="$(CodeAnalysisSaveMessagesToReport)" SearchGlobalAssemblyCache="$(CodeAnalysisSearchGlobalAssemblyCache)" SuccessFile="$(CodeAnalysisSucceededFile)" Summary="$(CodeAnalysisSummary)" TargetFrameworkVersion="$(TargetFrameworkVersion)" TLogFile="$(CodeAnalysisTLogFile)" ToolPath="$(CodeAnalysisPath)" TreatWarningsAsErrors="$(_CodeAnalysisTreatWarningsAsErrors)" UpdateProject="$(CodeAnalysisUpdateProject)" Verbose="$(CodeAnalysisVerbose)">
8447 <Output TaskParameter="FilesWritten" ItemName="FileWrites" />
8448 </CodeAnalysis>
8449 </Target>
8450 <!-- Managed analyzer targets -->
8451 <!-- Native analyzer targets -->
8452 <PropertyGroup Condition="'$(RunMsvcAnalysis)'=='true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8453 <RunNativeCodeAnalysisInputs>$(OutputFile)</RunNativeCodeAnalysisInputs>
8454 <RunNativeCodeAnalysisInputs Condition="'$(CodeAnalysisRuleSet)'!='' and Exists('$(CodeAnalysisRuleSet)')">$(RunNativeCodeAnalysisInputs);$(CodeAnalysisRuleSet)</RunNativeCodeAnalysisInputs>
8455 <RunNativeCodeAnalysisInputs Condition="'$(CodeAnalysisRuleSet)'!='' and !Exists('$(CodeAnalysisRuleSet)') and Exists('$(ProjectDir)$(CodeAnalysisRuleSet)')">$(RunNativeCodeAnalysisInputs);$(ProjectDir)$(CodeAnalysisRuleSet)</RunNativeCodeAnalysisInputs>
8456 <MergedOutputCodeAnalysisFile>$(IntDir)vc.nativecodeanalysis.all.xml</MergedOutputCodeAnalysisFile>
8457 </PropertyGroup>
8458 <Choose xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8459 <When Condition="'$(RunMsvcAnalysis)'=='true'">
8460 <Choose>
8461 <When Condition="'$(PlatformToolsetVersion)'&lt;'120'">
8462 <PropertyGroup>
8463 <MergeInputCodeAnalysisFiles>@(ClCompile->'%(PREfastLog)')</MergeInputCodeAnalysisFiles>
8464 </PropertyGroup>
8465 </When>
8466 <Otherwise>
8467 <PropertyGroup>
8468 <MergeInputCodeAnalysisFiles>@(ClCompile->'%(PREfastLogFile)')</MergeInputCodeAnalysisFiles>
8469 </PropertyGroup>
8470 </Otherwise>
8471 </Choose>
8472 </When>
8473 </Choose>
8474 <UsingTask TaskName="Microsoft.Build.Tasks.NativeCodeAnalysis" AssemblyFile=".\FxCopTask.dll" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
8475 <!-- Normal case that runs analysis for a full build -->
8476 <Target Name="RunNativeCodeAnalysis" Condition="'$(RunMsvcAnalysis)'=='true'" Inputs="$(RunCodeAnalysisInputs);$(MergedOutputCodeAnalysisFile)" Outputs="$(CodeAnalysisSucceededFile);$(NativeCodeAnalysisTLogFile)" DependsOnTargets="$(RunCodeAnalysisDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8477 <NativeCodeAnalysis IgnoreBuildTaskWarnings="$(CodeAnalysisIgnoreBuildTaskWarnings)" NativeCodeAnalysisLogFiles="$(MergedOutputCodeAnalysisFile)" MSBuildProjectDirectory="$(MSBuildProjectDirectory)" NeverReportRuleErrors="$(CodeAnalysisNeverReportRuleErrors)" RuleSet="$(CodeAnalysisRuleSet)" RuleSetDirectories="$(CodeAnalysisRuleSetDirectories)" StaticAnalysisDirectory="$(CodeAnalysisStaticAnalysisDirectory)" TLogFile="$(NativeCodeAnalysisTLogFile)" TreatWarningsAsErrors="$(_CodeAnalysisTreatWarningsAsErrors)" VisualStudioSku="$(CodeAnalysisVSSku)" CodeAnalysisSucceededFile="$(CodeAnalysisSucceededFile)">
8478 <Output TaskParameter="FilesWritten" ItemName="FileWrites" />
8479 </NativeCodeAnalysis>
8480 </Target>
8481 <!-- Special case that runs analysis for selected file compile -->
8482 <Target Name="RunSelectedFileNativeCodeAnalysis" Condition="'$(RunMsvcAnalysis)'=='true' and '$(SelectedFiles)'!=''" DependsOnTargets="RunMergeNativeCodeAnalysis;RunNativeCodeAnalysis" AfterTargets="ClCompile" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8483 <Message Text="Running code analysis targets for selected files $(SelectedFiles)" />
8484 <!-- Show a warning that results may not be complete if /Gm is enabled during selective compile -->
8485 <Warning Condition="'%(ClCompile.MinimalRebuild)'!='false' and '$(VCAnalyzeOnly)'=='false'" Text="Minimal rebuild (/Gm) was passed to the compiler, analysis results may be stale." />
8486 </Target>
8487 <!-- Native analyzer targets -->
8488 <!-- Merge native results targets -->
8489 <UsingTask TaskName="Microsoft.Build.Tasks.MergeNativeCodeAnalysis" AssemblyFile=".\FxCopTask.dll" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
8490 <Target Name="RunMergeNativeCodeAnalysis" Condition="'$(RunMsvcAnalysis)'=='true'" Inputs="$(RunCodeAnalysisInputs);$(MergeInputCodeAnalysisFiles)" Outputs="$(CodeAnalysisSucceededFile);$(NativeCodeAnalysisTLogFile);$(MergedOutputCodeAnalysisFile)" DependsOnTargets="$(RunMergeNativeCodeAnalysisDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8491 <MergeNativeCodeAnalysis InputNativeResultFiles="$(MergeInputCodeAnalysisFiles)" OutputCodeAnalysisFile="$(MergedOutputCodeAnalysisFile)" />
8492 </Target>
8493 <!-- Merge native results targets -->
8494 <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8495 <Clean Include="$(IntermediateOutputPath)\TempCA\$(TargetName).pdb" />
8496 <Clean Include="$(IntermediateOutputPath)\TempCA\$(TargetName)$(TargetExt)" />
8497 </ItemGroup>
8498 <!--
8499============================================================================================================================================
8500 </Import>
8501
8502C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets
8503============================================================================================================================================
8504-->
8505 <!--<Import Project="$(ReportingServicesTargets)" Condition="Exists('$(ReportingServicesTargets)')" />-->
8506 <!--<Import Project="$(MSBuildToolsPath)\Microsoft.NETFramework.targets" Condition="('$(TargetFrameworkIdentifier)' == '' or '$(TargetFrameworkIdentifier)' == '.NETFramework') and ('$(TargetRuntime)' == 'Managed')" />-->
8507 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8508 <ImportXamlTargets Condition="'$(ImportXamlTargets)'=='' and ('$(TargetFrameworkVersion)' != 'v2.0' and '$(TargetFrameworkVersion)' != 'v3.5') and Exists('$(MSBuildToolsPath)\Microsoft.Xaml.targets')">true</ImportXamlTargets>
8509 </PropertyGroup>
8510 <!--
8511============================================================================================================================================
8512 <Import Project="$(MSBuildToolsPath)\Microsoft.Xaml.targets" Condition="('$(ImportXamlTargets)' == 'true')">
8513
8514C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.Xaml.targets
8515============================================================================================================================================
8516-->
8517 <!--
8518 With MSBuild 12, we've changed MSBuildToolsPath to for the first time point to a directory
8519 outside of the .NET Framework. As a result of this, there were several targets files, of which
8520 this was one, that were being referenced as out of MSBuildToolsPath that are now no longer there.
8521
8522 Thus, we are shimming those targets files so that they do still appear in MSBuildToolsPath, so that
8523 consumers of them are not broken, but since the targets files themselves are still part of .NET,
8524 the shim will internally simply redirect to the real copy of the targets file in the .NET Framework.
8525 -->
8526 <!-- In the original Microsoft.Xaml.targets this is mapped to MSBuildBinPath, which is no longer
8527 the .NET Framework directory and thus will no longer be the right answer. Override it to point
8528 to the correct .NET Framework location. -->
8529 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8530 <XamlBuildTaskPath Condition="'$(XamlBuildTaskPath)' == ''">$(MSBuildToolsPath64)</XamlBuildTaskPath>
8531 </PropertyGroup>
8532 <!--
8533============================================================================================================================================
8534 <Import Project="$(MSBuildFrameworkToolsPath)\Microsoft.Xaml.targets" Condition="Exists('$(MSBuildFrameworkToolsPath)\Microsoft.Xaml.targets')">
8535
8536C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Xaml.targets
8537============================================================================================================================================
8538-->
8539 <!--
8540***********************************************************************************************
8541Microsoft.Xaml.targets
8542
8543WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
8544 created a backup copy. Incorrect changes to this file will make it
8545 impossible to load or build your projects from the command-line or the IDE.
8546
8547Copyright (C) Microsoft Corporation. All rights reserved.
8548***********************************************************************************************
8549-->
8550 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8551 <LoadTimeSensitiveTargets>
8552 $(LoadTimeSensitiveTargets);
8553 XamlMarkupCompilePass1;
8554 </LoadTimeSensitiveTargets>
8555 <LoadTimeSensitiveProperties>
8556 $(LoadTimeSensitiveProperties);
8557 </LoadTimeSensitiveProperties>
8558 <TaskVersion>4.0.0.0</TaskVersion>
8559 <TaskKeyToken>31bf3856ad364e35</TaskKeyToken>
8560 <XamlBuildTaskAssemblyName Condition="'$(XamlBuildTaskAssemblyName)'==''">XamlBuildTask, Version=$(TaskVersion), Culture=neutral, PublicKeyToken=$(TaskKeyToken)</XamlBuildTaskAssemblyName>
8561 <XamlRequiresCompilationPass2 Condition="'$(XamlRequiresCompilationPass2)'==''">false</XamlRequiresCompilationPass2>
8562 <XamlTemporaryAssemblyName Condition="'$(XamlTemporaryAssemblyName)'==''">$(AssemblyName)</XamlTemporaryAssemblyName>
8563 <CompileTargetNameForTemporaryAssembly Condition="'$(CompileTargetNameForTemporaryAssembly)' == ''">CompileTemporaryAssembly</CompileTargetNameForTemporaryAssembly>
8564 <!-- Microsoft.Xaml.targets needs to be included after Microsoft.Fx.targets and Microsoft.DevDiv.targets
8565 to have a chance to add these tasks to the PrepareResources target's dependencies.
8566 Unfortunately, Microsoft.DevDiv.targets completely overwrites the PrepareResourcesDependsOnProperty
8567 (as a bug workaround-see comment there).
8568 -->
8569 <PrepareResourcesDependsOn>
8570 XamlMarkupCompilePass1;
8571 XamlMarkupCompilePass2;
8572 $(PrepareResourcesDependsOn)
8573 </PrepareResourcesDependsOn>
8574 </PropertyGroup>
8575 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8576 <XamlBuildTaskLocation Condition="'$(XamlBuildTaskPath)'==''">$(MSBuildBinPath)</XamlBuildTaskLocation>
8577 <XamlBuildTaskLocation Condition="'$(XamlBuildTaskPath)'!=''">$(XamlBuildTaskPath)</XamlBuildTaskLocation>
8578 </PropertyGroup>
8579 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8580 <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildToolsPath)\Microsoft.Xaml.targets</MSBuildAllProjects>
8581 </PropertyGroup>
8582 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8583 <XamlGenCodeFileNames Condition="'$(XamlGenCodeFileNames)'==''">$(MSBuildProjectFile).XamlGeneratedCodeFileListAbsolute.txt</XamlGenCodeFileNames>
8584 <XamlGenMarkupFileNames Condition="'$(XamlGenMarkupFileNames)'==''">$(MSBuildProjectFile).XamlGeneratedXamlFileListAbsolute.txt</XamlGenMarkupFileNames>
8585 <XamlPass2FlagFile Condition="'$(XamlPass2FlagFile)'==''">$(MSBuildProjectFile).XamlPass2Flag.txt</XamlPass2FlagFile>
8586 </PropertyGroup>
8587 <ItemGroup Condition="'$(BuildingInsideVisualStudio)'=='true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8588 <AvailableItemName Include="XamlAppDef" />
8589 </ItemGroup>
8590 <UsingTask Condition="'$(XamlBuildTaskPath)'==''" TaskName="Microsoft.Build.Tasks.Xaml.PartialClassGenerationTask" AssemblyName="$(XamlBuildTaskAssemblyName)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
8591 <UsingTask Condition="'$(XamlBuildTaskPath)'!=''" TaskName="Microsoft.Build.Tasks.Xaml.PartialClassGenerationTask" AssemblyFile="$(XamlBuildTaskPath)\XamlBuildTask.dll" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
8592 <UsingTask Condition="'$(XamlBuildTaskPath)'==''" TaskName="Microsoft.Build.Tasks.Xaml.GenerateTemporaryAssemblyTask" AssemblyName="$(XamlBuildTaskAssemblyName)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
8593 <UsingTask Condition="'$(XamlBuildTaskPath)'!=''" TaskName="Microsoft.Build.Tasks.Xaml.GenerateTemporaryAssemblyTask" AssemblyFile="$(XamlBuildTaskPath)\XamlBuildTask.dll" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
8594 <UsingTask Condition="'$(XamlBuildTaskPath)'==''" TaskName="Microsoft.Build.Tasks.Xaml.CompilationPass2Task" AssemblyName="$(XamlBuildTaskAssemblyName)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
8595 <UsingTask Condition="'$(XamlBuildTaskPath)'!=''" TaskName="Microsoft.Build.Tasks.Xaml.CompilationPass2Task" AssemblyFile="$(XamlBuildTaskPath)\XamlBuildTask.dll" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
8596 <!--
8597 ================================================================
8598 DesignTimeXamlMarkupCompilation
8599 ================================================================
8600 -->
8601 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8602 <CoreCompileDependsOn Condition="'$(BuildingInsideVisualStudio)' == 'true'">
8603 DesignTimeXamlMarkupCompilation;
8604 $(CoreCompileDependsOn)
8605 </CoreCompileDependsOn>
8606 </PropertyGroup>
8607 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8608 <DesignTimeIntermediateOutputPath Condition="'$(DesignTimeIntermediateOutputPath)' == ''">$(IntermediateOutputPath)InProcessTempFiles\</DesignTimeIntermediateOutputPath>
8609 </PropertyGroup>
8610 <Target Name="DesignTimeXamlMarkupCompilation" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8611 <!-- Make sure the directory exists. -->
8612 <MakeDir Directories="$(DesignTimeIntermediateOutputPath)" Condition="'@(XamlAppDef)' != ''" />
8613 <CallTarget Condition="'$(BuildingProject)' != 'true' and '@(XamlAppDef)' != ''" Targets="InProcessXamlMarkupCompilePass1" />
8614 </Target>
8615 <!--
8616 ================================================================
8617 InProcessXamlMarkupCompilePass1
8618 ================================================================
8619 -->
8620 <Target Name="InProcessXamlMarkupCompilePass1" Condition="'@(XamlAppDef)' != '' and '$(BuildingProject)' != 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8621 <PartialClassGenerationTask BuildTaskPath="$(XamlBuildTaskLocation)" OutputPath="$(DesignTimeIntermediateOutputPath)" Language="$(Language)" ApplicationMarkup="@(XamlAppDef)" References="@(ReferencePath)" RootNamespace="$(RootNamespace)" SourceCodeFiles="@(Compile)" AssemblyName="$(AssemblyName)" IsInProcessXamlMarkupCompile="true" MSBuildProjectDirectory="$(MSBuildProjectDirectory)" XamlBuildTypeInspectionExtensionNames="@(XamlBuildTaskTypeInspectionExtensionName)" XamlBuildTypeGenerationExtensionNames="@(XamlBuildTaskTypeGenerationExtensionName)">
8622 <Output ItemName="XamlInProcessGeneratedCodeFiles" TaskParameter="GeneratedCodeFiles" />
8623 <Output ItemName="XamlInProcessGeneratedResources" TaskParameter="GeneratedResources" />
8624 <!-- This property is not required. However we need to populate it as the output of the task. -->
8625 <Output PropertyName="XamlInProcessRequiresCompilationPass2" TaskParameter="RequiresCompilationPass2" />
8626 </PartialClassGenerationTask>
8627 <ItemGroup>
8628 <Compile Include="@(XamlInProcessGeneratedCodeFiles)" />
8629 </ItemGroup>
8630 </Target>
8631 <!--
8632 ================================================================
8633 CleanInProcessXamlGeneratedFiles
8634 ================================================================
8635 -->
8636 <Target Name="CleanInProcessXamlGeneratedFiles" Condition="'@(XamlAppDef)' != '' And '$(BuildingInsideVisualStudio)'!='true'" AfterTargets="DesignTimeXamlMarkupCompilation" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8637 <ItemGroup>
8638 <FileWrites Include="$(DesignTimeIntermediateOutputPath)\*" />
8639 </ItemGroup>
8640 </Target>
8641 <!--
8642 ================================================================
8643 XamlMarkupCompileReadGeneratedFileList
8644 ================================================================
8645 -->
8646 <Target Name="XamlMarkupCompileReadGeneratedFileList" Condition="'@(XamlPage)' != '' or '@(XamlAppDef)' != ''" BeforeTargets="XamlMarkupCompilePass1" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8647 <ReadLinesFromFile File="$(IntermediateOutputPath)$(XamlGenCodeFileNames)">
8648 <Output TaskParameter="Lines" ItemName="XamlOutputCodeFilesList" />
8649 </ReadLinesFromFile>
8650 <ReadLinesFromFile File="$(IntermediateOutputPath)$(XamlGenMarkupFileNames)">
8651 <Output TaskParameter="Lines" ItemName="XamlOutputMarkupFilesList" />
8652 </ReadLinesFromFile>
8653 </Target>
8654 <!--
8655 ================================================================
8656 XamlMarkupCompilePass1
8657 ================================================================
8658 -->
8659 <Target Name="XamlMarkupCompilePass1" Condition="'@(XamlPage)' != '' or '@(XamlAppDef)' != ''" Inputs="@(XamlAppDef);@(Compile);$(MSBuildAllProjects);@(ReferencePath)" Outputs="@(XamlOutputMarkupFilesList);&#xD;&#xA; @(XamlOutputCodeFilesList);&#xD;&#xA; $(IntermediateOutputPath)$(XamlGenCodeFileNames);&#xD;&#xA; $(IntermediateOutputPath)$(XamlGenMarkupFileNames);&#xD;&#xA; $(IntermediateOutputPath)$(XamlPass2FlagFile);" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8660 <Message Text="(in) XamlPage: '@(XamlPage)'" Condition="'$(MSBuildTargetsVerbose)'=='true'" />
8661 <Message Text="(in) XamlAppDef: '@(XamlAppDef)'" Condition="'$(MSBuildTargetsVerbose)'=='true'" />
8662 <Message Text="(in) SourceCodeFiles: '@(Compile)'" Condition="'$(MSBuildTargetsVerbose)'=='true'" />
8663 <ItemGroup>
8664 <XamlGeneratedResources Remove="@(XamlGeneratedResources)" />
8665 <XamlGeneratedCodeFiles Remove="@(XamlGeneratedCodeFiles)" />
8666 </ItemGroup>
8667 <PartialClassGenerationTask BuildTaskPath="$(XamlBuildTaskLocation)" OutputPath="$(IntermediateOutputPath)" Language="$(Language)" ApplicationMarkup="@(XamlAppDef)" References="@(ReferencePath)" RootNamespace="$(RootNamespace)" SourceCodeFiles="@(Compile)" AssemblyName="$(AssemblyName)" IsInProcessXamlMarkupCompile="false" MSBuildProjectDirectory="$(MSBuildProjectDirectory)" XamlBuildTypeGenerationExtensionNames="@(XamlBuildTaskTypeGenerationExtensionName)" XamlBuildTypeInspectionExtensionNames="@(XamlBuildTaskTypeInspectionExtensionName)">
8668 <Output ItemName="XamlGeneratedCodeFiles" TaskParameter="GeneratedCodeFiles" />
8669 <Output ItemName="XamlGeneratedResources" TaskParameter="GeneratedResources" />
8670 <Output ItemName="XamlFileNames" TaskParameter="ApplicationMarkup" />
8671 <Output PropertyName="XamlRequiresCompilationPass2" TaskParameter="RequiresCompilationPass2" />
8672 </PartialClassGenerationTask>
8673 <WriteLinesToFile File="$(IntermediateOutputPath)$(XamlGenCodeFileNames)" Lines="@(XamlGeneratedCodeFiles)" Overwrite="true" />
8674 <WriteLinesToFile File="$(IntermediateOutputPath)$(XamlGenMarkupFileNames)" Lines="@(XamlGeneratedResources)" Overwrite="true" />
8675 <WriteLinesToFile File="$(IntermediateOutputPath)$(XamlPass2FlagFile)" Lines="@(XamlRequiresCompilationPass2)" Overwrite="true" />
8676 <Message Text="(out) XamlGeneratedCodeFiles: '@(XamlGeneratedCodeFiles)'" Condition="'$(MSBuildTargetsVerbose)'=='true'" />
8677 <Message Text="(out) XamlGeneratedResources: '@(XamlGeneratedResources)'" Condition="'$(MSBuildTargetsVerbose)'=='true'" />
8678 <Message Text="(out) XamlRequiresCompilationPass2 : '$(XamlRequiresCompilationPass2)'" Condition="'$(MSBuildTargetsVerbose)'=='true'" />
8679 </Target>
8680 <!--
8681 ================================================================
8682 XamlMarkupCompileAddFilesGenerated
8683 ================================================================
8684 -->
8685 <Target Name="XamlMarkupCompileAddFilesGenerated" Condition="'@(XamlPage)' != '' or '@(XamlAppDef)' != ''" AfterTargets="XamlMarkupCompilePass1" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8686 <ItemGroup>
8687 <XamlGeneratedCodeFiles Condition="'@(XamlGeneratedCodeFiles)' == ''" Include="@(XamlOutputCodeFilesList)" />
8688 </ItemGroup>
8689 <ItemGroup>
8690 <XamlGeneratedResources Condition="'@(XamlGeneratedResources)' == ''" Include="@(XamlOutputMarkupFilesList)" />
8691 </ItemGroup>
8692 <ItemGroup>
8693 <FileWrites Include="@(XamlGeneratedResources);&#xD;&#xA; @(XamlGeneratedCodeFiles);&#xD;&#xA; $(IntermediateOutputPath)$(XamlGenCodeFileNames);&#xD;&#xA; $(IntermediateOutputPath)$(XamlGenMarkupFileNames)" />
8694 </ItemGroup>
8695 <ItemGroup>
8696 <Compile Include="@(XamlGeneratedCodeFiles)" />
8697 </ItemGroup>
8698 <ItemGroup>
8699 <EmbeddedResource Include="@(XamlGeneratedResources)">
8700 <GenerateResource>false</GenerateResource>
8701 <Type>Non-Resx</Type>
8702 <WithCulture>false</WithCulture>
8703 </EmbeddedResource>
8704 </ItemGroup>
8705 </Target>
8706 <!--
8707 ================================================================
8708 XamlMarkupCompileReadPass2Flag
8709 ================================================================
8710 -->
8711 <Target Name="XamlMarkupCompileReadPass2Flag" Condition="'@(XamlPage)' != '' or '@(XamlAppDef)' != ''" BeforeTargets="XamlMarkupCompilePass2;XamlTemporaryAssemblyGeneration" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8712 <ReadLinesFromFile File="$(IntermediateOutputPath)$(XamlPass2FlagFile)">
8713 <Output TaskParameter="Lines" ItemName="XamlRequiresCompilationPass2" />
8714 </ReadLinesFromFile>
8715 </Target>
8716 <!--
8717 ================================================================
8718 XamlTemporaryAssemblyGeneration
8719 ================================================================
8720 -->
8721 <Target Name="XamlTemporaryAssemblyGeneration" Condition="'$(XamlRequiresCompilationPass2)' == 'true' " Inputs="@(XamlAppDef);@(Compile);$(MSBuildAllProjects);@(XamlGeneratedCodeFiles);@(ReferencePath)" Outputs="$(IntermediateOutputPath)$(XamlTemporaryAssemblyName).dll;&#xD;&#xA; $(IntermediateOutputPath)$(XamlTemporaryAssemblyName).pdb" DependsOnTargets="XamlMarkupCompilePass1;MarkupCompilePass1" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8722 <Message Text="(in) MSBuildProjectFile: '$(MSBuildProjectFile)'" Condition="'$(MSBuildTargetsVerbose)' == 'true'" />
8723 <Message Text="(in) CompileTargetName: '$(CompileTargetName)'" Condition="'$(MSBuildTargetsVerbose)'=='true'" />
8724 <Message Text="(in) SourceCodeFiles: '@(XamlGeneratedCodeFiles)'" Condition="'$(MSBuildTargetsVerbose)'=='true'" />
8725 <GenerateTemporaryAssemblyTask OutputPath="$(IntermediateOutputPath)" CurrentProject="$(MSBuildProjectFullPath)" SourceCodeFiles="@(XamlGeneratedCodeFiles);@(_GeneratedCodeFiles)" AssemblyName="$(XamlTemporaryAssemblyName)" ApplicationMarkupTypeName="XamlAppDef" CompileTargetName="$(CompileTargetNameForTemporaryAssembly)" ReferencePaths="@(ReferencePath)" GeneratedResourcesFiles="@(XamlGeneratedResources)" />
8726 <PropertyGroup>
8727 <_XamlTemporaryAssemblyPath_>$(IntermediateOutputPath)$(XamlTemporaryAssemblyName).dll</_XamlTemporaryAssemblyPath_>
8728 <NonExistentFile>__NonExistentSubDir__\__NonExistentFile__</NonExistentFile>
8729 </PropertyGroup>
8730 <ItemGroup>
8731 <FileWrites Include="$(IntermediateOutputPath)$(XamlTemporaryAssemblyName).*" />
8732 </ItemGroup>
8733 </Target>
8734 <Target Name="CompileTemporaryAssembly" DependsOnTargets="BuildOnlySettings;ResolveKeySource;_GenerateCompileInputs;CoreCompile" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
8735 <!--
8736 ================================================================
8737 XamlMarkupCompilePass2
8738 ================================================================
8739 -->
8740 <Target Name="XamlMarkupCompilePass2" Condition="'$(XamlRequiresCompilationPass2)' == 'true' " Outputs="@(ExtensionGeneratedCodeFiles)" DependsOnTargets="XamlTemporaryAssemblyGeneration" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8741 <Message Text="(in) XamlPage: '@(XamlPage)'" Condition="'$(MSBuildTargetsVerbose)'=='true'" />
8742 <Message Text="(in) XamlAppDef: '@(XamlAppDef)'" Condition="'$(MSBuildTargetsVerbose)'=='true'" />
8743 <Message Text="(in) References: '@(ReferencePath);$(_XamlTemporaryAssemblyPath_)'" Condition="'$(MSBuildTargetsVerbose)'=='true'" />
8744 <CompilationPass2Task BuildTaskPath="$(XamlBuildTaskLocation)" ApplicationMarkup="@(XamlAppDef)" References="@(ReferencePath)" LocalAssemblyReference="$(_XamlTemporaryAssemblyPath_)" AssemblyName="$(AssemblyName)" RootNamespace="$(RootNamespace)" OutputPath="$(IntermediateOutputPath)" Language="$(Language)" SourceCodeFiles="@(Compile)" IsInProcessXamlMarkupCompile="false" MSBuildProjectDirectory="$(MSBuildProjectDirectory)" MSBuildArchitecture="$(PlatformTargetAsMSBuildArchitecture)" XamlBuildTypeInspectionExtensionNames="@(XamlBuildTaskTypeInspectionExtensionName)" ApplicationMarkupWithTypeName="@(XamlFileNames)">
8745 <Output ItemName="ExtensionGeneratedCodeFiles" TaskParameter="ExtensionGeneratedCodeFiles" />
8746 </CompilationPass2Task>
8747 <WriteLinesToFile File="$(IntermediateOutputPath)$(XamlPass2FlagFile)" Lines="false" Overwrite="true" />
8748 <Message Text="(out) ExtensionGeneratedCodeFiles: '@(ExtensionGeneratedCodeFiles)'" />
8749 <!-- Add extension files to the list of generated files so that they can be monitored and cleaned up -->
8750 <WriteLinesToFile File="$(IntermediateOutputPath)$(XamlGenCodeFileNames)" Lines="@(ExtensionGeneratedCodeFiles)" Overwrite="false" />
8751 </Target>
8752 <!--
8753 ================================================================
8754 XamlMarkupCompileAddFilesGenerated
8755 ================================================================
8756 -->
8757 <Target Name="XamlMarkupCompileAddExtensionFilesGenerated" Condition="'@(XamlPage)' != '' or '@(XamlAppDef)' != ''" AfterTargets="XamlMarkupCompilePass2" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8758 <ItemGroup>
8759 <FileWrites Include="@(ExtensionGeneratedCodeFiles)" />
8760 </ItemGroup>
8761 <ItemGroup>
8762 <Compile Include="@(ExtensionGeneratedCodeFiles)" />
8763 </ItemGroup>
8764 </Target>
8765 <!--
8766 ================================================================
8767 GetCopyToOutputDirectoryXamlAppDefs
8768
8769 Get all XamlAppDefs that may need to be transferred to the output directory.
8770 Compare GetCopyToOutputDirectoryItems in Microsoft.Common.targets
8771 ================================================================
8772 -->
8773 <Target Name="GetCopyToOutputDirectoryXamlAppDefs" BeforeTargets="GetCopyToOutputDirectoryItems" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8774 <ItemGroup>
8775 <_XamlAppDefItemsToCopy Include="@(XamlAppDef->'%(FullPath)')" Condition="'%(XamlAppDef.CopyToOutputDirectory)'=='Always' or '%(XamlAppDef.CopyToOutputDirectory)'=='PreserveNewest'" />
8776 </ItemGroup>
8777 <AssignTargetPath Files="@(_XamlAppDefItemsToCopy)" RootFolder="$(MSBuildProjectDirectory)">
8778 <Output TaskParameter="AssignedFiles" ItemName="_XamlAppDefItemsToCopyWithTargetPath" />
8779 </AssignTargetPath>
8780 <!-- The _SourceItems properties are internal to Microsoft.Common.targets,
8781 but necessary to use here because there is no public equivalent -->
8782 <ItemGroup>
8783 <AllItemsFullPathWithTargetPath Include="@(_XamlAppDefItemsToCopyWithTargetPath)" />
8784 <_SourceItemsToCopyToOutputDirectoryAlways Include="@(_XamlAppDefItemsToCopyWithTargetPath)" Condition="'%(_XamlAppDefItemsToCopyWithTargetPath.CopyToOutputDirectory)'=='Always'" />
8785 <_SourceItemsToCopyToOutputDirectory Include="@(_XamlAppDefItemsToCopyWithTargetPath)" Condition="'%(_XamlAppDefItemsToCopyWithTargetPath.CopyToOutputDirectory)'=='PreserveNewest'" />
8786 </ItemGroup>
8787 </Target>
8788 <!--
8789============================================================================================================================================
8790 </Import>
8791
8792C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.Xaml.targets
8793============================================================================================================================================
8794-->
8795 <!--
8796============================================================================================================================================
8797 </Import>
8798
8799C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets
8800============================================================================================================================================
8801-->
8802 <!-- imports Microsoft.WorkflowBuildExtensions.targets only if TargetFrameworkVersion is v4.5 or above or TargetFrameworkfVersion specified does not conform to the format of vX.X[.X.X] -->
8803 <!-- Underlying assumption is that there shouldn't be any other versions between v4.0.* and v4.5 -->
8804 <!--
8805============================================================================================================================================
8806 <Import Project="$(MSBuildToolsPath)\Microsoft.WorkflowBuildExtensions.targets" Condition="('$(TargetFrameworkVersion)' != 'v2.0' and '$(TargetFrameworkVersion)' != 'v3.5' and (!$([System.String]::IsNullOrEmpty('$(TargetFrameworkVersion)')) and !$(TargetFrameworkVersion.StartsWith('v4.0')))) and Exists('$(MSBuildToolsPath)\Microsoft.WorkflowBuildExtensions.targets')">
8807
8808C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.WorkflowBuildExtensions.targets
8809============================================================================================================================================
8810-->
8811 <!--
8812***********************************************************************************************
8813Microsoft.WorkflowBuildExtensions.targets
8814
8815WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
8816 created a backup copy. Incorrect changes to this file will make it
8817 impossible to load or build your projects from the command-line or the IDE.
8818
8819Copyright (C) Microsoft Corporation. All rights reserved.
8820***********************************************************************************************
8821-->
8822 <!--
8823 With MSBuild 12, we've changed MSBuildToolsPath to for the first time point to a directory
8824 outside of the .NET Framework. As a result of this, there were several targets files, of which
8825 this was one, that were being referenced as out of MSBuildToolsPath that are now no longer there.
8826
8827 Thus, we are shimming those targets files so that they do still appear in MSBuildToolsPath, so that
8828 consumers of them are not broken, but since the targets files themselves are still part of .NET,
8829 the shim will internally simply redirect to the real copy of the targets file in the .NET Framework.
8830 -->
8831 <!--
8832============================================================================================================================================
8833 <Import Project="$(MSBuildFrameworkToolsPath)\Microsoft.WorkflowBuildExtensions.targets" Condition="Exists('$(MSBuildFrameworkToolsPath)\Microsoft.WorkflowBuildExtensions.targets')">
8834
8835C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.WorkflowBuildExtensions.targets
8836============================================================================================================================================
8837-->
8838 <!--
8839***********************************************************************************************
8840Microsoft.WorkflowBuildExtensions.targets
8841
8842WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
8843 created a backup copy. Incorrect changes to this file will make it
8844 impossible to load or build your projects from the command-line or the IDE.
8845
8846Copyright (C) Microsoft Corporation. All rights reserved.
8847***********************************************************************************************
8848-->
8849 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8850 <PrepareResourcesDependsOn>
8851 ValidationExtension;
8852 ExpressionBuildExtension;
8853 $(PrepareResourcesDependsOn)
8854 </PrepareResourcesDependsOn>
8855 </PropertyGroup>
8856 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8857 <CoreCompileDependsOn Condition="'$(BuildingInsideVisualStudio)' == 'true'">
8858 GenerateCompiledExpressionsTempFile;
8859 $(CoreCompileDependsOn)
8860 </CoreCompileDependsOn>
8861 </PropertyGroup>
8862 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8863 <WorkflowBuildExtensionVersion Condition="'$(WorkflowBuildExtensionVersion)'==''">4.0.0.0</WorkflowBuildExtensionVersion>
8864 <WorkflowBuildExtensionKeyToken Condition="'$(WorkflowBuildExtensionKeyToken)'==''">31bf3856ad364e35</WorkflowBuildExtensionKeyToken>
8865 <WorkflowBuildExtensionAssemblyName Condition="'$(WorkflowBuildExtensionAssemblyName)'==''">Microsoft.Activities.Build, Version=$(WorkflowBuildExtensionVersion), Culture=neutral, PublicKeyToken=$(WorkflowBuildExtensionKeyToken)</WorkflowBuildExtensionAssemblyName>
8866 <GenerateCompiledExpressionsTempFilePathForEditing Condition="'$(MSBuildProjectExtension)' == '.csproj'">$(IntermediateOutputPath)\TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs</GenerateCompiledExpressionsTempFilePathForEditing>
8867 <GenerateCompiledExpressionsTempFilePathForValidation Condition="'$(MSBuildProjectExtension)' == '.csproj'">$(IntermediateOutputPath)\TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs</GenerateCompiledExpressionsTempFilePathForValidation>
8868 <GenerateCompiledExpressionsTempFilePathForTypeInfer Condition="'$(MSBuildProjectExtension)' == '.csproj'">$(IntermediateOutputPath)\TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs</GenerateCompiledExpressionsTempFilePathForTypeInfer>
8869 <DeferredValidationErrorsFileName>$(IntermediateOutputPath)\AC2C1ABA-CCF6-44D4-8127-588FD4D0A860-DeferredValidationErrors.xml</DeferredValidationErrorsFileName>
8870 </PropertyGroup>
8871 <UsingTask TaskName="WorkflowBuildMessageTask" AssemblyName="$(WorkflowBuildExtensionAssemblyName)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
8872 <UsingTask TaskName="ReportDeferredValidationErrorsTask" AssemblyName="$(WorkflowBuildExtensionAssemblyName)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
8873 <UsingTask TaskName="DeferredValidationTask" AssemblyName="$(WorkflowBuildExtensionAssemblyName)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
8874 <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8875 <XamlBuildTaskTypeGenerationExtensionName Include="Microsoft.Activities.Build.BeforeInitializeComponentExtension">
8876 <AssemblyName>$(WorkflowBuildExtensionAssemblyName)</AssemblyName>
8877 <Visible>false</Visible>
8878 </XamlBuildTaskTypeGenerationExtensionName>
8879 <XamlBuildTaskTypeGenerationExtensionName Include="Microsoft.Activities.Build.Debugger.DebugBuildExtension">
8880 <AssemblyName>$(WorkflowBuildExtensionAssemblyName)</AssemblyName>
8881 <Visible>false</Visible>
8882 </XamlBuildTaskTypeGenerationExtensionName>
8883 </ItemGroup>
8884 <Target Name="ExpressionBuildExtension" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8885 <WorkflowBuildMessageTask ResourceName="InvalidValueForDisableWorkflowCompiledExpressions" MessageType="Warning" Condition="'$(DisableWorkflowCompiledExpressions)'!='' and '$(DisableWorkflowCompiledExpressions)'!='true' and '$(DisableWorkflowCompiledExpressions)'!='false'" />
8886 <ItemGroup>
8887 <XamlBuildTaskTypeInspectionExtensionName Include="Microsoft.Activities.Build.Expressions.ExpressionsBuildExtension" Condition="$(DisableWorkflowCompiledExpressions)!=true">
8888 <AssemblyName>$(WorkflowBuildExtensionAssemblyName)</AssemblyName>
8889 <Visible>false</Visible>
8890 </XamlBuildTaskTypeInspectionExtensionName>
8891 </ItemGroup>
8892 </Target>
8893 <!-- XBT Validation Extension-->
8894 <Target Name="ValidationExtension" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8895 <WorkflowBuildMessageTask ResourceName="InvalidValueForSkipWorkflowValidation" MessageType="Warning" Condition="'$(SkipWorkflowValidation)'!='' and '$(SkipWorkflowValidation)'!='true' and '$(SkipWorkflowValidation)'!='false'" />
8896 <ItemGroup>
8897 <XamlBuildTaskTypeInspectionExtensionName Include="Microsoft.Activities.Build.Validation.ValidationBuildExtension" Condition="$(SkipWorkflowValidation)!=true">
8898 <AssemblyName>$(WorkflowBuildExtensionAssemblyName)</AssemblyName>
8899 <Visible>false</Visible>
8900 </XamlBuildTaskTypeInspectionExtensionName>
8901 </ItemGroup>
8902 </Target>
8903 <Target Name="GenerateCompiledExpressionsTempFile" Condition="'$(GenerateCompiledExpressionsTempFilePathForEditing)' != ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8904 <WriteLinesToFile File="$(GenerateCompiledExpressionsTempFilePathForEditing)" Condition="!Exists('$(GenerateCompiledExpressionsTempFilePathForEditing)')" />
8905 <WriteLinesToFile File="$(GenerateCompiledExpressionsTempFilePathForValidation)" Condition="!Exists('$(GenerateCompiledExpressionsTempFilePathForValidation)')" />
8906 <WriteLinesToFile File="$(GenerateCompiledExpressionsTempFilePathForTypeInfer)" Condition="!Exists('$(GenerateCompiledExpressionsTempFilePathForTypeInfer)')" />
8907 <ItemGroup>
8908 <Compile Include="$(GenerateCompiledExpressionsTempFilePathForEditing)" />
8909 <Compile Include="$(GenerateCompiledExpressionsTempFilePathForValidation)" />
8910 <Compile Include="$(GenerateCompiledExpressionsTempFilePathForTypeInfer)" />
8911 </ItemGroup>
8912 </Target>
8913 <Target Name="AddDeferredValidationErrorsFileToFileWrites" AfterTargets="XamlMarkupCompilePass2" Condition="Exists('$(DeferredValidationErrorsFileName)')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8914 <ItemGroup>
8915 <FileWrites Include="$(DeferredValidationErrorsFileName)" />
8916 </ItemGroup>
8917 </Target>
8918 <!--
8919 ================================================================
8920 ReportValidationBuildExtensionErrors
8921 Report deferred validation extension errors.
8922 ================================================================
8923 -->
8924 <Target Name="ReportValidationBuildExtensionErrors" AfterTargets="XamlMarkupCompilePass2" Condition="'$(SkipWorkflowValidation)' != 'true' and ('@(XamlPage)' != '' or '@(XamlAppDef)' != '')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8925 <ReportDeferredValidationErrorsTask DeferredValidationErrorsFilePath="$(DeferredValidationErrorsFileName)" />
8926 </Target>
8927 <!--
8928 ==================================================================
8929 DeferredValidation
8930 Fail the entire build process in case any validation errors
8931 been previously reported, but after Compile succeeded.
8932 ==================================================================
8933 -->
8934 <Target Name="DeferredValidation" AfterTargets="Compile" Condition="'$(SkipWorkflowValidation)' != 'true' and ('@(XamlPage)' != '' or '@(XamlAppDef)' != '')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8935 <DeferredValidationTask DeferredValidationErrorsFilePath="$(DeferredValidationErrorsFileName)" />
8936 </Target>
8937 <!--
8938============================================================================================================================================
8939 </Import>
8940
8941C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.WorkflowBuildExtensions.targets
8942============================================================================================================================================
8943-->
8944 <!--
8945 This target in $(MSBuildFrameworkToolsPath)\Microsoft.WorkflowBuildExtensions.targets does bad
8946 things to builds inside Visual Studio. Specifically, it generates files *only* when building from
8947 within VS, for both real and design-time builds. This leads to all kinds of build problems.
8948
8949 In Dev16 we no longer need these files to exist on disk for Workflow Designer scenarios. We can't
8950 modify $(MSBuildFrameworkToolsPath)\Microsoft.WorkflowBuildExtensions.targets because that would
8951 break the Workflow Designer for older versions of VS. Instead, we effectively turn it off by
8952 overriding it with a no-op implementation here.
8953 -->
8954 <Target Name="GenerateCompiledExpressionsTempFile" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
8955 <!--
8956============================================================================================================================================
8957 </Import>
8958
8959C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets
8960============================================================================================================================================
8961-->
8962 <!-- This import is temporary and will be removed once it is moved into the silverlight targets -->
8963 <!--<Import Project="$(MSBuildToolsPath)\Microsoft.WinFX.targets" Condition="'$(TargetFrameworkIdentifier)' == 'Silverlight' and Exists('$(MSBuildToolsPath)\Microsoft.WinFX.targets')" />-->
8964 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8965 <MsTestToolsTargets Condition="'$(MsTestToolsTargets)'==''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TeamTest\Microsoft.TeamTest.targets</MsTestToolsTargets>
8966 </PropertyGroup>
8967 <!--
8968============================================================================================================================================
8969 <Import Project="$(MsTestToolsTargets)" Condition="Exists('$(MsTestToolsTargets)')">
8970
8971C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\VisualStudio\v16.0\TeamTest\Microsoft.TeamTest.targets
8972============================================================================================================================================
8973-->
8974 <UsingTask TaskName="BuildShadowTask" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v16.0\TeamTest\Microsoft.VisualStudio.TestTools.BuildShadowsTask.dll" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
8975 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8976 <ResolveReferencesDependsOn>
8977 $(ResolveReferencesDependsOn);
8978 ResolveTestReferences
8979 </ResolveReferencesDependsOn>
8980 </PropertyGroup>
8981 <!--
8982 The condition here ensures that we aren't needlessly loaded into projects
8983 that don't actually have shadow items in them
8984 -->
8985 <Target Name="ResolveTestReferences" Condition="'@(Shadow)'!=''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
8986 <BuildShadowTask ExecuteAsTool="False" CurrentResolvedReferences="@(ReferencePath)" CurrentCopyLocalFiles="@(ReferenceCopyLocalPaths)" Shadows="@(Shadow)" ProjectPath="$(ProjectDir)" IntermediatePath="$(IntermediateOutputPath)" SignAssembly="$(SignAssembly)" KeyFile="$(AssemblyOriginatorKeyFile)" DelaySign="$(DelaySign)">
8987 <Output TaskParameter="FixedUpReferences" ItemName="ReferencePath" />
8988 <Output TaskParameter="NewCopyLocalAssemblies" ItemName="ReferenceCopyLocalPaths" />
8989 </BuildShadowTask>
8990 </Target>
8991 <!--
8992============================================================================================================================================
8993 </Import>
8994
8995C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets
8996============================================================================================================================================
8997-->
8998 <!-- App packaging support -->
8999 <!--
9000 Following two targets are needed to be present in every project being built
9001 because the app packaging targets recursively scan all projects referenced
9002 from projects that generate app packages for them.
9003 -->
9004 <Target Name="CleanAppxPackage" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
9005 <Target Name="GetPackagingOutputs" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
9006 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9007 <MsAppxPackageTargets Condition="'$(MsAppxPackageTargets)'==''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\AppxPackage\Microsoft.AppXPackage.Targets</MsAppxPackageTargets>
9008 </PropertyGroup>
9009 <!--<Import Project="$(MsAppxPackageTargets)" Condition="'$(WindowsAppContainer)' == 'true' and Exists('$(MsAppxPackageTargets)')" />-->
9010 <!-- This import is temporary and will be removed once it is moved into the silverlight targets -->
9011 <!--<Import Project="$(MSBuildToolsPath)\Microsoft.Data.Entity.targets" Condition="'$(TargetFrameworkIdentifier)' == 'Silverlight' and Exists('$(MSBuildToolsPath)\Microsoft.Data.Entity.targets')" />-->
9012 <!-- Import NuGet.targets (required for GetReferenceNearestTargetFrameworkTask and used for Restore functionality) -->
9013 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9014 <MSBuildUseVisualStudioDirectoryLayout Condition="'$(MSBuildUseVisualStudioDirectoryLayout)'==''">$([MSBuild]::IsRunningFromVisualStudio())</MSBuildUseVisualStudioDirectoryLayout>
9015 <NuGetRestoreTargets Condition="'$(NuGetRestoreTargets)'=='' and '$(MSBuildUseVisualStudioDirectoryLayout)'=='true'">$(MSBuildToolsPath32)\..\..\..\Common7\IDE\CommonExtensions\Microsoft\NuGet\NuGet.targets</NuGetRestoreTargets>
9016 <NuGetRestoreTargets Condition="'$(NuGetRestoreTargets)'==''">$(MSBuildToolsPath)\NuGet.targets</NuGetRestoreTargets>
9017 </PropertyGroup>
9018 <!--
9019============================================================================================================================================
9020 <Import Project="$(NuGetRestoreTargets)" Condition="'$(IsRestoreTargetsFileLoaded)' != 'true' and Exists('$(NuGetRestoreTargets)')">
9021
9022C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\NuGet\NuGet.targets
9023============================================================================================================================================
9024-->
9025 <!--
9026***********************************************************************************************
9027NuGet.targets
9028
9029WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
9030 created a backup copy. Incorrect changes to this file will make it
9031 impossible to load or build your projects from the command-line or the IDE.
9032
9033Copyright (c) .NET Foundation. All rights reserved.
9034***********************************************************************************************
9035
9036 This target file contains the NuGet Restore target for walking the project and reference graph
9037 and restoring dependencies from the graph.
9038
9039 Ways to use this targets file:
9040 1. Invoke it directly and provide project file paths using $(RestoreGraphProjectInput).
9041 2. With a solution this may be used as a target in the metaproj.
9042 3. Import the targets file from a project.
9043
9044 Restore flow summary:
9045 1. Top level projects (entry points) are determined.
9046 2. Each project and all of its project references are walked recursively.
9047 3. The project is evaluated for each $(TargetFramework). Items are created
9048 for project properties and dependencies. Each item is marked
9049 with the project it came from so that it can be matched up later.
9050 4. All restore items generated by the walk are grouped together by
9051 project and convert into a project spec.
9052
9053 The result file contains:
9054 1. A list of projects to restore.
9055 2. The complete closure of all projects referenced (Includes project references that are not being restored directly).
9056 3. Package and project dependencies for each project.
9057 4. DotnetCliTool references
9058 -->
9059 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9060 <!-- Mark that this target file has been loaded. -->
9061 <IsRestoreTargetsFileLoaded>true</IsRestoreTargetsFileLoaded>
9062 <!-- Load NuGet.Build.Tasks.dll, this can be overridden to use a different version with $(RestoreTaskAssemblyFile) -->
9063 <RestoreTaskAssemblyFile Condition=" '$(RestoreTaskAssemblyFile)' == '' ">NuGet.Build.Tasks.dll</RestoreTaskAssemblyFile>
9064 <!-- Do not hide errors and warnings by default -->
9065 <HideWarningsAndErrors Condition=" '$(HideWarningsAndErrors)' == '' ">false</HideWarningsAndErrors>
9066 <!-- Recurse by default -->
9067 <RestoreRecursive Condition=" '$(RestoreRecursive)' == '' ">true</RestoreRecursive>
9068 <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
9069 <RestoreUseSkipNonexistentTargets Condition=" '$(RestoreUseSkipNonexistentTargets)' == '' ">true</RestoreUseSkipNonexistentTargets>
9070 <!-- RuntimeIdentifier compatibility check -->
9071 <ValidateRuntimeIdentifierCompatibility Condition=" '$(ValidateRuntimeIdentifierCompatibility)' == '' ">false</ValidateRuntimeIdentifierCompatibility>
9072 <!-- Error handling while walking projects -->
9073 <RestoreContinueOnError Condition=" '$(RestoreContinueOnError)' == '' ">WarnAndContinue</RestoreContinueOnError>
9074 <!-- Build in parallel -->
9075 <RestoreBuildInParallel Condition=" '$(BuildInParallel)' != '' ">$(BuildInParallel)</RestoreBuildInParallel>
9076 <RestoreBuildInParallel Condition=" '$(RestoreBuildInParallel)' == '' ">true</RestoreBuildInParallel>
9077 <!-- Check if the restore target was executed on a sln file -->
9078 <_RestoreSolutionFileUsed Condition=" '$(_RestoreSolutionFileUsed)' == '' AND '$(SolutionDir)' != '' AND $(MSBuildProjectFullPath.EndsWith('.metaproj')) == 'true' ">true</_RestoreSolutionFileUsed>
9079 <!-- We default to MSBuildInteractive. -->
9080 <NuGetInteractive Condition=" '$(NuGetInteractive)' == '' ">$(MSBuildInteractive)</NuGetInteractive>
9081 <!-- Mark that this targets file supports package download. -->
9082 <PackageDownloadSupported>true</PackageDownloadSupported>
9083 <!-- Mark that this targets file GetReferenceNearestTargetFrameworkTask task supports the TargetPlatformMoniker -->
9084 <GetReferenceNearestTargetFrameworkTaskSupportsTargetPlatformParameter>true</GetReferenceNearestTargetFrameworkTaskSupportsTargetPlatformParameter>
9085 <!-- Flag if the Central package file is enabled -->
9086 <_CentralPackageVersionsEnabled Condition="'$(ManagePackageVersionsCentrally)' == 'true' AND '$(CentralPackageVersionsFileImported)' == 'true'">true</_CentralPackageVersionsEnabled>
9087 </PropertyGroup>
9088 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9089 <!-- Exclude packages from changing restore inputs. -->
9090 <_GenerateRestoreGraphProjectEntryInputProperties>ExcludeRestorePackageImports=true</_GenerateRestoreGraphProjectEntryInputProperties>
9091 <!-- Standalone mode
9092 This is used by NuGet.exe to inject targets into the project that will be
9093 walked next. In normal /t:Restore mode this causes a duplicate import
9094 since NuGet.targets it loaded as part of MSBuild, there is should be
9095 skipped. -->
9096 <_GenerateRestoreGraphProjectEntryInputProperties Condition=" '$(RestoreUseCustomAfterTargets)' == 'true' ">
9097 $(_GenerateRestoreGraphProjectEntryInputProperties);
9098 NuGetRestoreTargets=$(MSBuildThisFileFullPath);
9099 RestoreUseCustomAfterTargets=$(RestoreUseCustomAfterTargets);
9100 CustomAfterMicrosoftCommonCrossTargetingTargets=$(MSBuildThisFileFullPath);
9101 CustomAfterMicrosoftCommonTargets=$(MSBuildThisFileFullPath);
9102 </_GenerateRestoreGraphProjectEntryInputProperties>
9103 <!-- Include SolutionDir and SolutionName for solution restores and persist these properties during the walk. -->
9104 <_GenerateRestoreGraphProjectEntryInputProperties Condition=" '$(_RestoreSolutionFileUsed)' == 'true' ">
9105 $(_GenerateRestoreGraphProjectEntryInputProperties);
9106 _RestoreSolutionFileUsed=true;
9107 SolutionDir=$(SolutionDir);
9108 SolutionName=$(SolutionName);
9109 SolutionFileName=$(SolutionFileName);
9110 SolutionPath=$(SolutionPath);
9111 SolutionExt=$(SolutionExt);
9112 </_GenerateRestoreGraphProjectEntryInputProperties>
9113 </PropertyGroup>
9114 <!-- Tasks -->
9115 <UsingTask TaskName="NuGet.Build.Tasks.RestoreTask" AssemblyFile="$(RestoreTaskAssemblyFile)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
9116 <UsingTask TaskName="NuGet.Build.Tasks.WriteRestoreGraphTask" AssemblyFile="$(RestoreTaskAssemblyFile)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
9117 <UsingTask TaskName="NuGet.Build.Tasks.GetRestoreProjectJsonPathTask" AssemblyFile="$(RestoreTaskAssemblyFile)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
9118 <UsingTask TaskName="NuGet.Build.Tasks.GetRestoreProjectReferencesTask" AssemblyFile="$(RestoreTaskAssemblyFile)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
9119 <UsingTask TaskName="NuGet.Build.Tasks.GetRestorePackageReferencesTask" AssemblyFile="$(RestoreTaskAssemblyFile)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
9120 <UsingTask TaskName="NuGet.Build.Tasks.GetCentralPackageVersionsTask" AssemblyFile="$(RestoreTaskAssemblyFile)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
9121 <UsingTask TaskName="NuGet.Build.Tasks.GetRestorePackageDownloadsTask" AssemblyFile="$(RestoreTaskAssemblyFile)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
9122 <UsingTask TaskName="NuGet.Build.Tasks.GetRestoreFrameworkReferencesTask" AssemblyFile="$(RestoreTaskAssemblyFile)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
9123 <UsingTask TaskName="NuGet.Build.Tasks.GetRestoreDotnetCliToolsTask" AssemblyFile="$(RestoreTaskAssemblyFile)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
9124 <UsingTask TaskName="NuGet.Build.Tasks.GetProjectTargetFrameworksTask" AssemblyFile="$(RestoreTaskAssemblyFile)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
9125 <UsingTask TaskName="NuGet.Build.Tasks.GetRestoreSolutionProjectsTask" AssemblyFile="$(RestoreTaskAssemblyFile)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
9126 <UsingTask TaskName="NuGet.Build.Tasks.GetRestoreSettingsTask" AssemblyFile="$(RestoreTaskAssemblyFile)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
9127 <UsingTask TaskName="NuGet.Build.Tasks.WarnForInvalidProjectsTask" AssemblyFile="$(RestoreTaskAssemblyFile)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
9128 <UsingTask TaskName="NuGet.Build.Tasks.GetReferenceNearestTargetFrameworkTask" AssemblyFile="$(RestoreTaskAssemblyFile)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
9129 <UsingTask TaskName="NuGet.Build.Tasks.GetRestoreProjectStyleTask" AssemblyFile="$(RestoreTaskAssemblyFile)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
9130 <UsingTask TaskName="NuGet.Build.Tasks.NuGetMessageTask" AssemblyFile="$(RestoreTaskAssemblyFile)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
9131 <!--
9132 ============================================================
9133 Restore
9134 Main entry point for restoring packages
9135 ============================================================
9136 -->
9137 <Target Name="Restore" DependsOnTargets="_GenerateRestoreGraph" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9138 <!-- Drop any duplicate items -->
9139 <RemoveDuplicates Inputs="@(_RestoreGraphEntry)">
9140 <Output TaskParameter="Filtered" ItemName="_RestoreGraphEntryFiltered" />
9141 </RemoveDuplicates>
9142 <!-- Call restore -->
9143 <RestoreTask RestoreGraphItems="@(_RestoreGraphEntryFiltered)" RestoreDisableParallel="$(RestoreDisableParallel)" RestoreNoCache="$(RestoreNoCache)" RestoreIgnoreFailedSources="$(RestoreIgnoreFailedSources)" RestoreRecursive="$(RestoreRecursive)" RestoreForce="$(RestoreForce)" HideWarningsAndErrors="$(HideWarningsAndErrors)" Interactive="$(NuGetInteractive)" RestoreForceEvaluate="$(RestoreForceEvaluate)" RestorePackagesConfig="$(RestorePackagesConfig)" />
9144 </Target>
9145 <!--
9146 ============================================================
9147 GenerateRestoreGraphFile
9148 Writes the output of _GenerateRestoreGraph to disk
9149 ============================================================
9150 -->
9151 <Target Name="GenerateRestoreGraphFile" DependsOnTargets="_GenerateRestoreGraph" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9152 <!-- Validate -->
9153 <Error Condition="$(RestoreGraphOutputPath) == ''" Text="Missing RestoreGraphOutputPath property!" />
9154 <!-- Drop any duplicate items -->
9155 <RemoveDuplicates Inputs="@(_RestoreGraphEntry)">
9156 <Output TaskParameter="Filtered" ItemName="_RestoreGraphEntryFiltered" />
9157 </RemoveDuplicates>
9158 <!-- Write file -->
9159 <WriteRestoreGraphTask RestoreGraphItems="@(_RestoreGraphEntryFiltered)" RestoreGraphOutputPath="$(RestoreGraphOutputPath)" RestoreRecursive="$(RestoreRecursive)" />
9160 </Target>
9161 <!--
9162 ============================================================
9163 CollectPackageReferences
9164 Gathers all PackageReference items from the project.
9165 This target may be used as an extension point to modify
9166 package references before NuGet reads them.
9167 ============================================================
9168 -->
9169 <Target Name="CollectPackageReferences" Returns="@(PackageReference)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
9170 <!--
9171 ============================================================
9172 CollectCentralPackageVersions
9173 Gathers all PackageVersion items from the central package versions file.
9174 ============================================================
9175 -->
9176 <Target Name="CollectCentralPackageVersions" Returns="@(PackageVersion)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
9177 <!--
9178 ============================================================
9179 CollectPackageDownloads
9180 Gathers all PackageDownload items from the project.
9181 This target may be used as an extension point to modify
9182 package downloads before NuGet reads them.
9183 ============================================================
9184 -->
9185 <Target Name="CollectPackageDownloads" Returns="@(PackageDownload)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
9186 <!--
9187 ============================================================
9188 CollectFrameworkReferences
9189 ============================================================
9190 -->
9191 <Target Name="CollectFrameworkReferences" Returns="@(_FrameworkReferenceForRestore)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9192 <ItemGroup>
9193 <_FrameworkReferenceForRestore Include="@(FrameworkReference)" Condition="'%(FrameworkReference.IsTransitiveFrameworkReference)' != 'true'" />
9194 </ItemGroup>
9195 </Target>
9196 <!--
9197 ============================================================
9198 _LoadRestoreGraphEntryPoints
9199 Find project entry points and load them into items.
9200 ============================================================
9201 -->
9202 <Target Name="_LoadRestoreGraphEntryPoints" Returns="@(RestoreGraphProjectInputItems)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9203 <!-- Allow overriding items with RestoreGraphProjectInput -->
9204 <ItemGroup Condition=" @(RestoreGraphProjectInputItems) == '' ">
9205 <RestoreGraphProjectInputItems Include="$(RestoreGraphProjectInput)" />
9206 </ItemGroup>
9207 <!-- Project case -->
9208 <ItemGroup Condition=" $(MSBuildProjectFullPath.EndsWith('.metaproj')) != 'true' AND @(RestoreGraphProjectInputItems) == '' ">
9209 <RestoreGraphProjectInputItems Include="$(MSBuildProjectFullPath)" />
9210 </ItemGroup>
9211 <!-- Solution case -->
9212 <GetRestoreSolutionProjectsTask Condition=" $(MSBuildProjectFullPath.EndsWith('.metaproj')) == 'true' AND @(RestoreGraphProjectInputItems) == '' " ProjectReferences="@(ProjectReference)" SolutionFilePath="$(MSBuildProjectFullPath)">
9213 <Output TaskParameter="OutputProjectReferences" ItemName="RestoreGraphProjectInputItems" />
9214 </GetRestoreSolutionProjectsTask>
9215 </Target>
9216 <!--
9217 ============================================================
9218 _FilterRestoreGraphProjectInputItems
9219 Filter out unsupported project entry points.
9220 ============================================================
9221 -->
9222 <Target Name="_FilterRestoreGraphProjectInputItems" DependsOnTargets="_LoadRestoreGraphEntryPoints" Returns="@(FilteredRestoreGraphProjectInputItems)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9223 <PropertyGroup>
9224 <RestoreProjectFilterMode Condition=" '$(RestoreProjectFilterMode)' == '' ">exclusionlist</RestoreProjectFilterMode>
9225 </PropertyGroup>
9226 <!-- Filter to a list of known supported types -->
9227 <ItemGroup Condition=" '$(RestoreProjectFilterMode)' == 'inclusionlist' ">
9228 <_FilteredRestoreGraphProjectInputItemsTmp Include="@(RestoreGraphProjectInputItems)" Condition=" '%(RestoreGraphProjectInputItems.Extension)' == '.csproj' Or&#xD;&#xA; '%(RestoreGraphProjectInputItems.Extension)' == '.vbproj' Or&#xD;&#xA; '%(RestoreGraphProjectInputItems.Extension)' == '.fsproj' Or&#xD;&#xA; '%(RestoreGraphProjectInputItems.Extension)' == '.nuproj' Or&#xD;&#xA; '%(RestoreGraphProjectInputItems.Extension)' == '.proj' Or&#xD;&#xA; '%(RestoreGraphProjectInputItems.Extension)' == '.msbuildproj' Or&#xD;&#xA; '%(RestoreGraphProjectInputItems.Extension)' == '.vcxproj' " />
9229 </ItemGroup>
9230 <!-- Filter out disallowed types -->
9231 <ItemGroup Condition=" '$(RestoreProjectFilterMode)' == 'exclusionlist' ">
9232 <_FilteredRestoreGraphProjectInputItemsTmp Include="@(RestoreGraphProjectInputItems)" Condition=" '%(RestoreGraphProjectInputItems.Extension)' != '.metaproj'&#xD;&#xA; AND '%(RestoreGraphProjectInputItems.Extension)' != '.shproj'&#xD;&#xA; AND '%(RestoreGraphProjectInputItems.Extension)' != '.vcxitems'&#xD;&#xA; AND '%(RestoreGraphProjectInputItems.Extension)' != '' " />
9233 </ItemGroup>
9234 <!-- No filtering -->
9235 <ItemGroup Condition=" '$(RestoreProjectFilterMode)' != 'exclusionlist' AND '$(RestoreProjectFilterMode)' != 'inclusionlist' ">
9236 <_FilteredRestoreGraphProjectInputItemsTmp Include="@(RestoreGraphProjectInputItems)" />
9237 </ItemGroup>
9238 <!-- Remove duplicates -->
9239 <RemoveDuplicates Inputs="@(_FilteredRestoreGraphProjectInputItemsTmp)">
9240 <Output TaskParameter="Filtered" ItemName="FilteredRestoreGraphProjectInputItemsWithoutDuplicates" />
9241 </RemoveDuplicates>
9242 <!-- Remove projects that do not support restore. -->
9243 <!-- With SkipNonexistentTargets support -->
9244 <MSBuild Condition=" '$(RestoreUseSkipNonexistentTargets)' == 'true' " BuildInParallel="$(RestoreBuildInParallel)" Projects="@(FilteredRestoreGraphProjectInputItemsWithoutDuplicates)" Targets="_IsProjectRestoreSupported" SkipNonexistentTargets="true" Properties="$(_GenerateRestoreGraphProjectEntryInputProperties)">
9245 <Output TaskParameter="TargetOutputs" ItemName="FilteredRestoreGraphProjectInputItems" />
9246 </MSBuild>
9247 <!-- Without SkipNonexistentTargets support -->
9248 <MSBuild Condition=" '$(RestoreUseSkipNonexistentTargets)' != 'true' " Projects="@(FilteredRestoreGraphProjectInputItemsWithoutDuplicates)" Targets="_IsProjectRestoreSupported" ContinueOnError="$(RestoreContinueOnError)" Properties="$(_GenerateRestoreGraphProjectEntryInputProperties)">
9249 <Output TaskParameter="TargetOutputs" ItemName="FilteredRestoreGraphProjectInputItems" />
9250 </MSBuild>
9251 <!-- Warn for projects that do not support restore. -->
9252 <WarnForInvalidProjectsTask Condition=" '$(DisableWarnForInvalidRestoreProjects)' != 'true' AND '$(HideWarningsAndErrors)' != 'true' " AllProjects="@(FilteredRestoreGraphProjectInputItemsWithoutDuplicates)" ValidProjects="@(FilteredRestoreGraphProjectInputItems)" />
9253 </Target>
9254 <!--
9255 ============================================================
9256 _GenerateRestoreGraph
9257 Entry point for creating the project to project restore graph.
9258 ============================================================
9259 -->
9260 <Target Name="_GenerateRestoreGraph" DependsOnTargets="_FilterRestoreGraphProjectInputItems;_GetAllRestoreProjectPathItems" Returns="@(_RestoreGraphEntry)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9261 <Message Text="Generating dg file" Importance="low" />
9262 <Message Text="%(_RestoreProjectPathItems.Identity)" Importance="low" />
9263 <!-- Use all projects if RestoreRecursive is true. Otherwise use only the top level projects. -->
9264 <ItemGroup>
9265 <_GenerateRestoreGraphProjectEntryInput Include="@(FilteredRestoreGraphProjectInputItems)" Condition=" '$(RestoreRecursive)' != 'true' " />
9266 <_GenerateRestoreGraphProjectEntryInput Include="@(_RestoreProjectPathItems)" Condition=" '$(RestoreRecursive)' == 'true' " />
9267 </ItemGroup>
9268 <!-- Add top level entries to the direct restore list. These projects will also restore tools. -->
9269 <MSBuild BuildInParallel="$(RestoreBuildInParallel)" Projects="@(_GenerateRestoreGraphProjectEntryInput)" Targets="_GenerateRestoreGraphProjectEntry" Properties="$(_GenerateRestoreGraphProjectEntryInputProperties)">
9270 <Output TaskParameter="TargetOutputs" ItemName="_RestoreGraphEntry" />
9271 </MSBuild>
9272 <!-- Generate a spec for every project including dependencies. -->
9273 <MSBuild BuildInParallel="$(RestoreBuildInParallel)" Projects="@(_RestoreProjectPathItems)" Targets="_GenerateProjectRestoreGraph" Properties="$(_GenerateRestoreGraphProjectEntryInputProperties)">
9274 <Output TaskParameter="TargetOutputs" ItemName="_RestoreGraphEntry" />
9275 </MSBuild>
9276 </Target>
9277 <!--
9278 ============================================================
9279 _GenerateRestoreGraphProjectEntry
9280 Top level entry point within a project.
9281 ============================================================
9282 -->
9283 <Target Name="_GenerateRestoreGraphProjectEntry" DependsOnTargets="_GenerateRestoreSpecs;_GenerateDotnetCliToolReferenceSpecs" Returns="@(_RestoreGraphEntry)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9284 <!-- Returns restore graph entries for the project and all dependencies -->
9285 </Target>
9286 <!--
9287 ============================================================
9288 _GenerateRestoreSpecs
9289 Mark entry points for restore.
9290 ============================================================
9291 -->
9292 <Target Name="_GenerateRestoreSpecs" DependsOnTargets="_GetRestoreProjectStyle" Returns="@(_RestoreGraphEntry)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9293 <Message Text="Restore entry point $(MSBuildProjectFullPath)" Importance="low" />
9294 <!-- Mark entry point -->
9295 <ItemGroup Condition=" '$(RestoreProjects)' == '' OR '$(RestoreProjects)' == 'true' ">
9296 <_RestoreGraphEntry Include="$([System.Guid]::NewGuid())" Condition=" '$(RestoreProjectStyle)' != 'Unknown' ">
9297 <Type>RestoreSpec</Type>
9298 <ProjectUniqueName>$(MSBuildProjectFullPath)</ProjectUniqueName>
9299 </_RestoreGraphEntry>
9300 </ItemGroup>
9301 </Target>
9302 <!--
9303 ============================================================
9304 _GenerateDotnetCliToolReferenceSpecs
9305 Collect DotnetCliToolReferences
9306 ============================================================
9307 -->
9308 <Target Name="_GenerateDotnetCliToolReferenceSpecs" DependsOnTargets="_GetRestoreSettings" Returns="@(_RestoreGraphEntry)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9309 <PropertyGroup>
9310 <DotnetCliToolTargetFramework Condition=" '$(DotnetCliToolTargetFramework)' == '' ">netcoreapp1.0</DotnetCliToolTargetFramework>
9311 </PropertyGroup>
9312 <!-- Write out tool references -->
9313 <GetRestoreDotnetCliToolsTask Condition=" '$(RestoreDotnetCliToolReferences)' == '' OR '$(RestoreDotnetCliToolReferences)' == 'true' " ProjectPath="$(MSBuildProjectFullPath)" ToolFramework="$(DotnetCliToolTargetFramework)" RestorePackagesPath="$(_OutputPackagesPath)" RestoreFallbackFolders="$(_OutputFallbackFolders)" RestoreSources="$(_OutputSources)" RestoreConfigFilePaths="$(_OutputConfigFilePaths)" DotnetCliToolReferences="@(DotnetCliToolReference)">
9314 <Output TaskParameter="RestoreGraphItems" ItemName="_RestoreGraphEntry" />
9315 </GetRestoreDotnetCliToolsTask>
9316 </Target>
9317 <!--
9318 ============================================================
9319 _GetProjectJsonPath
9320 Discover the project.json path if one exists for the project.
9321 ============================================================
9322 -->
9323 <Target Name="_GetProjectJsonPath" Returns="$(_CurrentProjectJsonPath)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9324 <!-- Get project.json path -->
9325 <!-- Skip this if the project style is already set. -->
9326 <GetRestoreProjectJsonPathTask ProjectPath="$(MSBuildProjectFullPath)" Condition=" '$(RestoreProjectStyle)' == 'ProjectJson' OR '$(RestoreProjectStyle)' == '' ">
9327 <Output TaskParameter="ProjectJsonPath" PropertyName="_CurrentProjectJsonPath" />
9328 </GetRestoreProjectJsonPathTask>
9329 </Target>
9330 <!--
9331 ============================================================
9332 _GetRestoreProjectStyle
9333 Determine the project restore type.
9334 ============================================================
9335 -->
9336 <Target Name="_GetRestoreProjectStyle" DependsOnTargets="_GetProjectJsonPath;CollectPackageReferences" Returns="$(RestoreProjectStyle);$(PackageReferenceCompatibleProjectStyle)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9337 <!--
9338 Older versions of MSBuild do not support the Count() item function which is an optimization. Expanding the
9339 entire item list into a semicolon delimited string is slower but older versions of MSBuild don't support it so
9340 use the older logic if necessary
9341 -->
9342 <PropertyGroup Condition="'$(MSBuildAssemblyVersion)' &lt; '15.0'">
9343 <_HasPackageReferenceItems Condition="'@(PackageReference)' != ''">true</_HasPackageReferenceItems>
9344 </PropertyGroup>
9345 <PropertyGroup Condition="'$(MSBuildAssemblyVersion)' &gt;= '15.0'">
9346 <_HasPackageReferenceItems Condition="@(PackageReference-&gt;Count()) &gt; 0">true</_HasPackageReferenceItems>
9347 </PropertyGroup>
9348 <GetRestoreProjectStyleTask HasPackageReferenceItems="$(_HasPackageReferenceItems)" MSBuildProjectDirectory="$(MSBuildProjectDirectory)" MSBuildProjectName="$(MSBuildProjectName)" ProjectJsonPath="$(_CurrentProjectJsonPath)" RestoreProjectStyle="$(RestoreProjectStyle)">
9349 <Output TaskParameter="ProjectStyle" PropertyName="RestoreProjectStyle" />
9350 <Output TaskParameter="IsPackageReferenceCompatibleProjectStyle" PropertyName="PackageReferenceCompatibleProjectStyle" />
9351 </GetRestoreProjectStyleTask>
9352 <PropertyGroup>
9353 <_HasPackageReferenceItems />
9354 </PropertyGroup>
9355 </Target>
9356 <!--
9357 ============================================================
9358 EnableIntermediateOutputPathMismatchWarning
9359 If using PackageReference, enable an MSBuild warning if BaseIntermediateOutputPath is set to something different
9360 than MSBuildProjectExtensionsPath, because it may be unexpected that the assets and related files wouldn't be written
9361 to the BaseIntermediateOutputPath.
9362 ============================================================
9363 -->
9364 <Target Name="EnableIntermediateOutputPathMismatchWarning" DependsOnTargets="_GetRestoreProjectStyle" BeforeTargets="_CheckForInvalidConfigurationAndPlatform" Condition="'$(RestoreProjectStyle)' == 'PackageReference'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9365 <PropertyGroup Condition="'$(EnableBaseIntermediateOutputPathMismatchWarning)' == ''">
9366 <EnableBaseIntermediateOutputPathMismatchWarning>true</EnableBaseIntermediateOutputPathMismatchWarning>
9367 </PropertyGroup>
9368 </Target>
9369 <!--
9370 ============================================================
9371 _GetRestoreTargetFrameworksOutput
9372 Read target frameworks from the project.
9373 Non-NETCore project frameworks will be returned.
9374 ============================================================
9375 -->
9376 <Target Name="_GetRestoreTargetFrameworksOutput" DependsOnTargets="_GetRestoreProjectStyle" Returns="@(_RestoreTargetFrameworksOutputFiltered)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9377 <PropertyGroup>
9378 <_RestoreProjectFramework />
9379 </PropertyGroup>
9380 <!-- For project.json projects target frameworks will be read from project.json. -->
9381 <GetProjectTargetFrameworksTask Condition=" '$(RestoreProjectStyle)' != 'ProjectJson'" ProjectPath="$(MSBuildProjectFullPath)" TargetFrameworks="$(TargetFrameworks)" TargetFramework="$(TargetFramework)" TargetFrameworkMoniker="$(TargetFrameworkMoniker)" TargetPlatformIdentifier="$(TargetPlatformIdentifier)" TargetPlatformVersion="$(TargetPlatformVersion)" TargetPlatformMinVersion="$(TargetPlatformMinVersion)">
9382 <Output TaskParameter="ProjectTargetFrameworks" PropertyName="_RestoreProjectFramework" />
9383 </GetProjectTargetFrameworksTask>
9384 <ItemGroup Condition=" '$(_RestoreProjectFramework)' != '' ">
9385 <_RestoreTargetFrameworksOutputFiltered Include="$(_RestoreProjectFramework.Split(';'))" />
9386 </ItemGroup>
9387 </Target>
9388 <!--
9389 ============================================================
9390 _GetRestoreTargetFrameworksAsItems
9391 Read $(TargetFrameworks) from the project as items.
9392 Projects that do not have $(TargetFrameworks) will noop.
9393 ============================================================
9394 -->
9395 <Target Name="_GetRestoreTargetFrameworksAsItems" DependsOnTargets="_GetRestoreProjectStyle" Returns="@(_RestoreTargetFrameworkItems)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9396 <ItemGroup Condition=" '$(TargetFrameworks)' != '' ">
9397 <_RestoreTargetFrameworkItems Include="$(TargetFrameworks.Split(';'))" />
9398 </ItemGroup>
9399 </Target>
9400 <!--
9401 ============================================================
9402 _GetRestoreSettings
9403 ============================================================
9404 -->
9405 <Target Name="_GetRestoreSettings" Condition=" '$(RestoreProjectStyle)' == 'PackageReference' OR '$(RestoreProjectStyle)' == 'ProjectJson' OR '$(RestoreProjectStyle)' == 'DotnetToolReference' OR '$(RestoreProjectStyle)' == 'PackagesConfig'" DependsOnTargets="_GetRestoreSettingsOverrides;_GetRestoreSettingsCurrentProject;_GetRestoreSettingsAllFrameworks" Returns="$(_OutputSources);$(_OutputPackagesPath);$(_OutputRepositoryPath);$(_OutputFallbackFolders);$(_OutputConfigFilePaths)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9406 <PropertyGroup Condition=" '$(RestoreSolutionDirectory)' == '' AND '$(RestoreProjectStyle)' == 'PackagesConfig' AND '$(SolutionDir)' != '*Undefined*'">
9407 <RestoreSolutionDirectory>$(SolutionDir)</RestoreSolutionDirectory>
9408 </PropertyGroup>
9409 <!-- For transitive project styles, we rely on evaluating all the settings and including them in the dg spec to faciliate no-op restore-->
9410 <GetRestoreSettingsTask ProjectUniqueName="$(MSBuildProjectFullPath)" RestoreSources="$(RestoreSources)" RestorePackagesPath="$(RestorePackagesPath)" RestoreRepositoryPath="$(RestoreRepositoryPath)" RestoreFallbackFolders="$(RestoreFallbackFolders)" RestoreConfigFile="$(RestoreConfigFile)" RestoreRootConfigDirectory="$(RestoreRootConfigDirectory)" RestoreSolutionDirectory="$(RestoreSolutionDirectory)" RestoreSettingsPerFramework="@(_RestoreSettingsPerFramework)" RestorePackagesPathOverride="$(_RestorePackagesPathOverride)" RestoreRepositoryPathOverride="$(_RestoreRepositoryPathOverride)" RestoreSourcesOverride="$(_RestoreSourcesOverride)" RestoreFallbackFoldersOverride="$(_RestoreFallbackFoldersOverride)" RestoreProjectStyle="$(RestoreProjectStyle)" MSBuildStartupDirectory="$(MSBuildStartupDirectory)">
9411 <Output TaskParameter="OutputSources" PropertyName="_OutputSources" />
9412 <Output TaskParameter="OutputPackagesPath" PropertyName="_OutputPackagesPath" />
9413 <Output TaskParameter="OutputRepositoryPath" PropertyName="_OutputRepositoryPath" />
9414 <Output TaskParameter="OutputFallbackFolders" PropertyName="_OutputFallbackFolders" />
9415 <Output TaskParameter="OutputConfigFilePaths" PropertyName="_OutputConfigFilePaths" />
9416 </GetRestoreSettingsTask>
9417 </Target>
9418 <!--
9419 ============================================================
9420 _GetRestoreSettingsCurrentProject
9421 Generate items for a single framework.
9422 ============================================================
9423 -->
9424 <Target Name="_GetRestoreSettingsCurrentProject" Condition=" '$(TargetFrameworks)' == '' AND '$(PackageReferenceCompatibleProjectStyle)' == 'true' " DependsOnTargets="_GetRestoreSettingsPerFramework" Returns="@(_RestoreSettingsPerFramework)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
9425 <!--
9426 ============================================================
9427 _GetRestoreSettingsCurrentProject
9428 Generate items for a single framework.
9429 ============================================================
9430 -->
9431 <Target Name="_GetRestoreSettingsAllFrameworks" Condition=" '$(TargetFrameworks)' != '' AND '$(PackageReferenceCompatibleProjectStyle)' == 'true' " DependsOnTargets="_GetRestoreTargetFrameworksAsItems;_GetRestoreProjectStyle" Returns="@(_RestoreSettingsPerFramework)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9432 <!-- Read additional sources and fallback folders for each framework -->
9433 <MSBuild BuildInParallel="$(RestoreBuildInParallel)" Projects="$(MSBuildProjectFullPath)" Targets="_GetRestoreSettingsPerFramework" Properties="TargetFramework=%(_RestoreTargetFrameworkItems.Identity);&#xD;&#xA; $(_GenerateRestoreGraphProjectEntryInputProperties)">
9434 <Output TaskParameter="TargetOutputs" ItemName="_RestoreSettingsPerFramework" />
9435 </MSBuild>
9436 </Target>
9437 <!--
9438 ============================================================
9439 _GetRestoreSettingsPerFramework
9440 Generate items with framework specific settings.
9441 ============================================================
9442 -->
9443 <Target Name="_GetRestoreSettingsPerFramework" Returns="@(_RestoreSettingsPerFramework)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9444 <ItemGroup>
9445 <_RestoreSettingsPerFramework Include="$([System.Guid]::NewGuid())">
9446 <RestoreAdditionalProjectSources>$(RestoreAdditionalProjectSources)</RestoreAdditionalProjectSources>
9447 <RestoreAdditionalProjectFallbackFolders>$(RestoreAdditionalProjectFallbackFolders)</RestoreAdditionalProjectFallbackFolders>
9448 <RestoreAdditionalProjectFallbackFoldersExcludes>$(RestoreAdditionalProjectFallbackFoldersExcludes)</RestoreAdditionalProjectFallbackFoldersExcludes>
9449 </_RestoreSettingsPerFramework>
9450 </ItemGroup>
9451 </Target>
9452 <!--
9453 ============================================================
9454 _GenerateRestoreProjectSpec
9455 Generate a restore project spec for the current project.
9456 ============================================================
9457 -->
9458 <Target Name="_GenerateRestoreProjectSpec" DependsOnTargets="_GetRestoreProjectStyle;_GetRestoreTargetFrameworksOutput;_GetRestoreSettings" Returns="@(_RestoreGraphEntry)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9459 <!-- Determine the restore output path -->
9460 <PropertyGroup Condition=" '$(PackageReferenceCompatibleProjectStyle)' == 'true' OR '$(RestoreProjectStyle)' == 'ProjectJson' ">
9461 <RestoreOutputPath Condition=" '$(RestoreOutputPath)' == '' ">$(MSBuildProjectExtensionsPath)</RestoreOutputPath>
9462 </PropertyGroup>
9463 <ConvertToAbsolutePath Paths="$(RestoreOutputPath)" Condition=" '$(PackageReferenceCompatibleProjectStyle)' == 'true' OR '$(RestoreProjectStyle)' == 'ProjectJson'">
9464 <Output TaskParameter="AbsolutePaths" PropertyName="RestoreOutputAbsolutePath" />
9465 </ConvertToAbsolutePath>
9466 <!--
9467 Determine project name for the assets file.
9468 Highest priority: PackageId
9469 If PackageId does not exist use: AssemblyName
9470 If AssemblyName does not exist fallback to the project file name without the extension: $(MSBuildProjectName)
9471
9472 For non-NETCore projects use only: $(MSBuildProjectName)
9473 -->
9474 <PropertyGroup>
9475 <_RestoreProjectName>$(MSBuildProjectName)</_RestoreProjectName>
9476 <_RestoreProjectName Condition=" '$(PackageReferenceCompatibleProjectStyle)' == 'true' AND '$(AssemblyName)' != '' ">$(AssemblyName)</_RestoreProjectName>
9477 <_RestoreProjectName Condition=" '$(PackageReferenceCompatibleProjectStyle)' == 'true' AND '$(PackageId)' != '' ">$(PackageId)</_RestoreProjectName>
9478 </PropertyGroup>
9479 <!--
9480 Determine project version for .NETCore projects
9481 Default to 1.0.0
9482 Use Version if it exists
9483 Override with PackageVersion if it exists (same as pack)
9484 -->
9485 <PropertyGroup Condition=" '$(PackageReferenceCompatibleProjectStyle)' == 'true' ">
9486 <_RestoreProjectVersion>1.0.0</_RestoreProjectVersion>
9487 <_RestoreProjectVersion Condition=" '$(Version)' != '' ">$(Version)</_RestoreProjectVersion>
9488 <_RestoreProjectVersion Condition=" '$(PackageVersion)' != '' ">$(PackageVersion)</_RestoreProjectVersion>
9489 </PropertyGroup>
9490 <!-- Determine if this will use cross targeting -->
9491 <PropertyGroup Condition=" '$(PackageReferenceCompatibleProjectStyle)' == 'true' AND '$(TargetFrameworks)' != '' ">
9492 <_RestoreCrossTargeting>true</_RestoreCrossTargeting>
9493 </PropertyGroup>
9494 <!-- Determine if ContentFiles should be written by NuGet -->
9495 <PropertyGroup Condition=" '$(PackageReferenceCompatibleProjectStyle)' == 'true' AND '$(_RestoreSkipContentFileWrite)' == '' ">
9496 <_RestoreSkipContentFileWrite Condition=" '$(TargetFrameworks)' == '' AND '$(TargetFramework)' == '' ">true</_RestoreSkipContentFileWrite>
9497 </PropertyGroup>
9498 <!-- Write properties for the top level entry point -->
9499 <ItemGroup Condition=" '$(PackageReferenceCompatibleProjectStyle)' == 'true' ">
9500 <_RestoreGraphEntry Include="$([System.Guid]::NewGuid())">
9501 <Type>ProjectSpec</Type>
9502 <Version>$(_RestoreProjectVersion)</Version>
9503 <ProjectUniqueName>$(MSBuildProjectFullPath)</ProjectUniqueName>
9504 <ProjectPath>$(MSBuildProjectFullPath)</ProjectPath>
9505 <ProjectName>$(_RestoreProjectName)</ProjectName>
9506 <Sources>$(_OutputSources)</Sources>
9507 <FallbackFolders>$(_OutputFallbackFolders)</FallbackFolders>
9508 <PackagesPath>$(_OutputPackagesPath)</PackagesPath>
9509 <ProjectStyle>$(RestoreProjectStyle)</ProjectStyle>
9510 <OutputPath>$(RestoreOutputAbsolutePath)</OutputPath>
9511 <RuntimeIdentifiers>$(RuntimeIdentifiers);$(RuntimeIdentifier)</RuntimeIdentifiers>
9512 <RuntimeSupports>$(RuntimeSupports)</RuntimeSupports>
9513 <CrossTargeting>$(_RestoreCrossTargeting)</CrossTargeting>
9514 <RestoreLegacyPackagesDirectory>$(RestoreLegacyPackagesDirectory)</RestoreLegacyPackagesDirectory>
9515 <ValidateRuntimeAssets>$(ValidateRuntimeIdentifierCompatibility)</ValidateRuntimeAssets>
9516 <SkipContentFileWrite>$(_RestoreSkipContentFileWrite)</SkipContentFileWrite>
9517 <ConfigFilePaths>$(_OutputConfigFilePaths)</ConfigFilePaths>
9518 <TreatWarningsAsErrors>$(TreatWarningsAsErrors)</TreatWarningsAsErrors>
9519 <WarningsAsErrors>$(WarningsAsErrors)</WarningsAsErrors>
9520 <NoWarn>$(NoWarn)</NoWarn>
9521 <RestorePackagesWithLockFile>$(RestorePackagesWithLockFile)</RestorePackagesWithLockFile>
9522 <NuGetLockFilePath>$(NuGetLockFilePath)</NuGetLockFilePath>
9523 <RestoreLockedMode>$(RestoreLockedMode)</RestoreLockedMode>
9524 <_CentralPackageVersionsEnabled>$(_CentralPackageVersionsEnabled)</_CentralPackageVersionsEnabled>
9525 </_RestoreGraphEntry>
9526 </ItemGroup>
9527 <!-- Use project.json -->
9528 <ItemGroup Condition=" '$(RestoreProjectStyle)' == 'ProjectJson' ">
9529 <_RestoreGraphEntry Include="$([System.Guid]::NewGuid())">
9530 <Type>ProjectSpec</Type>
9531 <ProjectUniqueName>$(MSBuildProjectFullPath)</ProjectUniqueName>
9532 <ProjectPath>$(MSBuildProjectFullPath)</ProjectPath>
9533 <ProjectName>$(_RestoreProjectName)</ProjectName>
9534 <Sources>$(_OutputSources)</Sources>
9535 <OutputPath>$(RestoreOutputAbsolutePath)</OutputPath>
9536 <FallbackFolders>$(_OutputFallbackFolders)</FallbackFolders>
9537 <PackagesPath>$(_OutputPackagesPath)</PackagesPath>
9538 <ProjectJsonPath>$(_CurrentProjectJsonPath)</ProjectJsonPath>
9539 <ProjectStyle>$(RestoreProjectStyle)</ProjectStyle>
9540 <ConfigFilePaths>$(_OutputConfigFilePaths)</ConfigFilePaths>
9541 </_RestoreGraphEntry>
9542 </ItemGroup>
9543 <!-- Use packages.config -->
9544 <ItemGroup Condition=" '$(RestoreProjectStyle)' == 'PackagesConfig' ">
9545 <_RestoreGraphEntry Include="$([System.Guid]::NewGuid())">
9546 <Type>ProjectSpec</Type>
9547 <ProjectUniqueName>$(MSBuildProjectFullPath)</ProjectUniqueName>
9548 <ProjectPath>$(MSBuildProjectFullPath)</ProjectPath>
9549 <ProjectName>$(_RestoreProjectName)</ProjectName>
9550 <ProjectStyle>$(RestoreProjectStyle)</ProjectStyle>
9551 <PackagesConfigPath Condition="Exists('$(MSBuildProjectDirectory)\packages.$(MSBuildProjectName).config')">$(MSBuildProjectDirectory)\packages.$(MSBuildProjectName).config</PackagesConfigPath>
9552 <PackagesConfigPath Condition="Exists('$(MSBuildProjectDirectory)\packages.config')">$(MSBuildProjectDirectory)\packages.config</PackagesConfigPath>
9553 <RestorePackagesWithLockFile>$(RestorePackagesWithLockFile)</RestorePackagesWithLockFile>
9554 <NuGetLockFilePath>$(NuGetLockFilePath)</NuGetLockFilePath>
9555 <RestoreLockedMode>$(RestoreLockedMode)</RestoreLockedMode>
9556 <Sources>$(_OutputSources)</Sources>
9557 <SolutionDir>$(SolutionDir)</SolutionDir>
9558 <RepositoryPath>$(_OutputRepositoryPath)</RepositoryPath>
9559 <ConfigFilePaths>$(_OutputConfigFilePaths)</ConfigFilePaths>
9560 <PackagesPath>$(_OutputPackagesPath)</PackagesPath>
9561 <TargetFrameworks>@(_RestoreTargetFrameworksOutputFiltered)</TargetFrameworks>
9562 </_RestoreGraphEntry>
9563 </ItemGroup>
9564 <!-- Non-NuGet type -->
9565 <ItemGroup Condition=" '$(RestoreProjectStyle)' == 'Unknown' ">
9566 <_RestoreGraphEntry Include="$([System.Guid]::NewGuid())">
9567 <Type>ProjectSpec</Type>
9568 <ProjectUniqueName>$(MSBuildProjectFullPath)</ProjectUniqueName>
9569 <ProjectPath>$(MSBuildProjectFullPath)</ProjectPath>
9570 <ProjectName>$(_RestoreProjectName)</ProjectName>
9571 <ProjectStyle>$(RestoreProjectStyle)</ProjectStyle>
9572 <TargetFrameworks>@(_RestoreTargetFrameworksOutputFiltered)</TargetFrameworks>
9573 </_RestoreGraphEntry>
9574 </ItemGroup>
9575 </Target>
9576 <!--
9577 ============================================================
9578 _GenerateProjectRestoreGraph
9579 Recursively walk project to project references.
9580 ============================================================
9581 -->
9582 <Target Name="_GenerateProjectRestoreGraph" DependsOnTargets="&#xD;&#xA; _GetRestoreProjectStyle;&#xD;&#xA; _GenerateRestoreProjectSpec;&#xD;&#xA; _GenerateRestoreDependencies" Returns="@(_RestoreGraphEntry)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9583 <!-- Output from dependency targets -->
9584 </Target>
9585 <!--
9586 ============================================================
9587 _GenerateRestoreDependencies
9588 Generate items for package and project references.
9589 ============================================================
9590 -->
9591 <Target Name="_GenerateRestoreDependencies" DependsOnTargets="_GenerateProjectRestoreGraphAllFrameworks;_GenerateProjectRestoreGraphCurrentProject" Returns="@(_RestoreGraphEntry)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
9592 <!--
9593 ============================================================
9594 _GenerateProjectRestoreGraphAllFrameworks
9595 Walk dependencies for all frameworks.
9596 ============================================================
9597 -->
9598 <Target Name="_GenerateProjectRestoreGraphAllFrameworks" Condition=" '$(TargetFrameworks)' != '' " DependsOnTargets="_GetRestoreTargetFrameworksAsItems" Returns="@(_RestoreGraphEntry)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9599 <!-- Get project and package references -->
9600 <!-- Evaluate for each framework -->
9601 <MSBuild BuildInParallel="$(RestoreBuildInParallel)" Projects="$(MSBuildProjectFullPath)" Targets="_GenerateProjectRestoreGraphPerFramework" Properties="TargetFramework=%(_RestoreTargetFrameworkItems.Identity);&#xD;&#xA; $(_GenerateRestoreGraphProjectEntryInputProperties)">
9602 <Output TaskParameter="TargetOutputs" ItemName="_RestoreGraphEntry" />
9603 </MSBuild>
9604 </Target>
9605 <!--
9606 ============================================================
9607 _GenerateProjectRestoreGraphCurrentProject
9608 Walk dependencies with the current framework.
9609 ============================================================
9610 -->
9611 <Target Name="_GenerateProjectRestoreGraphCurrentProject" Condition=" '$(TargetFrameworks)' == '' " DependsOnTargets="_GenerateProjectRestoreGraphPerFramework" Returns="@(_RestoreGraphEntry)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
9612 <!--
9613 ============================================================
9614 _GenerateProjectRestoreGraphPerFramework
9615 Walk dependencies using $(TargetFramework)
9616 ============================================================
9617 -->
9618 <Target Name="_GenerateProjectRestoreGraphPerFramework" DependsOnTargets="_GetRestoreProjectStyle;CollectPackageReferences;CollectPackageDownloads;CollectFrameworkReferences;CollectCentralPackageVersions" Returns="@(_RestoreGraphEntry)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9619 <!-- Write out project references -->
9620 <GetRestoreProjectReferencesTask ProjectUniqueName="$(MSBuildProjectFullPath)" ProjectReferences="@(ProjectReference)" TargetFrameworks="$(TargetFramework)" ParentProjectPath="$(MSBuildProjectFullPath)">
9621 <Output TaskParameter="RestoreGraphItems" ItemName="_RestoreGraphEntry" />
9622 </GetRestoreProjectReferencesTask>
9623 <!-- Write out package references-->
9624 <GetRestorePackageReferencesTask Condition=" '$(PackageReferenceCompatibleProjectStyle)' == 'true' " ProjectUniqueName="$(MSBuildProjectFullPath)" PackageReferences="@(PackageReference)" TargetFrameworks="$(TargetFramework)">
9625 <Output TaskParameter="RestoreGraphItems" ItemName="_RestoreGraphEntry" />
9626 </GetRestorePackageReferencesTask>
9627 <!-- Write out central package versions -->
9628 <GetCentralPackageVersionsTask Condition=" '$(PackageReferenceCompatibleProjectStyle)' == 'true' AND '$(_CentralPackageVersionsEnabled)' == 'true' " ProjectUniqueName="$(MSBuildProjectFullPath)" CentralPackageVersions="@(PackageVersion)" TargetFrameworks="$(TargetFramework)">
9629 <Output TaskParameter="RestoreGraphItems" ItemName="_RestoreGraphEntry" />
9630 </GetCentralPackageVersionsTask>
9631 <!-- Write out package downloads -->
9632 <GetRestorePackageDownloadsTask Condition=" '$(PackageReferenceCompatibleProjectStyle)' == 'true' " ProjectUniqueName="$(MSBuildProjectFullPath)" PackageDownloads="@(PackageDownload)" TargetFrameworks="$(TargetFramework)">
9633 <Output TaskParameter="RestoreGraphItems" ItemName="_RestoreGraphEntry" />
9634 </GetRestorePackageDownloadsTask>
9635 <!-- Write out Framework References-->
9636 <GetRestoreFrameworkReferencesTask Condition=" '$(PackageReferenceCompatibleProjectStyle)' == 'true' " ProjectUniqueName="$(MSBuildProjectFullPath)" FrameworkReferences="@(FrameworkReference)" TargetFrameworks="$(TargetFramework)">
9637 <Output TaskParameter="RestoreGraphItems" ItemName="_RestoreGraphEntry" />
9638 </GetRestoreFrameworkReferencesTask>
9639 <!-- Write out target framework information -->
9640 <ItemGroup Condition=" '$(PackageReferenceCompatibleProjectStyle)' == 'true'">
9641 <_RestoreGraphEntry Include="$([System.Guid]::NewGuid())">
9642 <Type>TargetFrameworkInformation</Type>
9643 <ProjectUniqueName>$(MSBuildProjectFullPath)</ProjectUniqueName>
9644 <PackageTargetFallback>$(PackageTargetFallback)</PackageTargetFallback>
9645 <AssetTargetFallback>$(AssetTargetFallback)</AssetTargetFallback>
9646 <TargetFramework>$(TargetFramework)</TargetFramework>
9647 <TargetFrameworkIdentifier>$(TargetFrameworkIdentifier)</TargetFrameworkIdentifier>
9648 <TargetFrameworkVersion>$(TargetFrameworkVersion)</TargetFrameworkVersion>
9649 <TargetFrameworkMoniker>$(TargetFrameworkMoniker)</TargetFrameworkMoniker>
9650 <TargetFrameworkProfile>$(TargetFrameworkProfile)</TargetFrameworkProfile>
9651 <TargetPlatformMoniker>$(TargetPlatformMoniker)</TargetPlatformMoniker>
9652 <TargetPlatformIdentifier>$(TargetPlatformIdentifier)</TargetPlatformIdentifier>
9653 <TargetPlatformVersion>$(TargetPlatformVersion)</TargetPlatformVersion>
9654 <TargetPlatformMinVersion>$(TargetPlatformMinVersion)</TargetPlatformMinVersion>
9655 <RuntimeIdentifierGraphPath>$(RuntimeIdentifierGraphPath)</RuntimeIdentifierGraphPath>
9656 </_RestoreGraphEntry>
9657 </ItemGroup>
9658 </Target>
9659 <!--
9660 ============================================================
9661 _GenerateRestoreProjectPathItemsCurrentProject
9662 Get absolute paths for all project references.
9663 ============================================================
9664 -->
9665 <Target Name="_GenerateRestoreProjectPathItemsCurrentProject" Condition=" '$(TargetFrameworks)' == '' " DependsOnTargets="_GenerateRestoreProjectPathItemsPerFramework" Returns="@(_RestoreProjectPathItems)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
9666 <!--
9667 ============================================================
9668 _GenerateRestoreProjectPathItemsPerFramework
9669 Get absolute paths for all project references.
9670 ============================================================
9671 -->
9672 <Target Name="_GenerateRestoreProjectPathItemsPerFramework" Returns="@(_RestoreProjectPathItems)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9673 <!-- Get the absolute paths to all projects -->
9674 <ConvertToAbsolutePath Paths="@(ProjectReference)">
9675 <Output TaskParameter="AbsolutePaths" PropertyName="_RestoreGraphAbsoluteProjectPaths" />
9676 </ConvertToAbsolutePath>
9677 <ItemGroup>
9678 <_RestoreProjectPathItems Include="$(_RestoreGraphAbsoluteProjectPaths)" />
9679 </ItemGroup>
9680 </Target>
9681 <!--
9682 ============================================================
9683 _GenerateRestoreProjectPathItems
9684 Get all project references regardless of framework
9685 ============================================================
9686 -->
9687 <Target Name="_GenerateRestoreProjectPathItems" DependsOnTargets="_GenerateRestoreProjectPathItemsAllFrameworks;_GenerateRestoreProjectPathItemsCurrentProject" Returns="@(_CurrentRestoreProjectPathItems)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9688 <!-- Drop any duplicate items -->
9689 <RemoveDuplicates Inputs="@(_RestoreProjectPathItems)">
9690 <Output TaskParameter="Filtered" ItemName="_CurrentRestoreProjectPathItems" />
9691 </RemoveDuplicates>
9692 </Target>
9693 <!--
9694 ============================================================
9695 _GenerateRestoreProjectPathItemsAllFrameworks
9696 Get all project references regardless of framework
9697 ============================================================
9698 -->
9699 <Target Name="_GenerateRestoreProjectPathItemsAllFrameworks" Condition=" '$(TargetFrameworks)' != '' " DependsOnTargets="_GetRestoreTargetFrameworksAsItems" Returns="@(_RestoreProjectPathItems)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9700 <!-- Get all project references for the current project -->
9701 <!-- With SkipNonexistentTargets support -->
9702 <MSBuild Condition=" '$(RestoreUseSkipNonexistentTargets)' == 'true' " BuildInParallel="$(RestoreBuildInParallel)" Projects="$(MSBuildProjectFullPath)" Targets="_GenerateRestoreProjectPathItemsPerFramework" SkipNonexistentTargets="true" SkipNonexistentProjects="true" Properties="TargetFramework=%(_RestoreTargetFrameworkItems.Identity);&#xD;&#xA; $(_GenerateRestoreGraphProjectEntryInputProperties)">
9703 <Output TaskParameter="TargetOutputs" ItemName="_RestoreProjectPathItems" />
9704 </MSBuild>
9705 <!-- Without SkipNonexistentTargets support -->
9706 <MSBuild Condition=" '$(RestoreUseSkipNonexistentTargets)' != 'true' " Projects="$(MSBuildProjectFullPath)" Targets="_GenerateRestoreProjectPathItemsPerFramework" ContinueOnError="$(RestoreContinueOnError)" Properties="TargetFramework=%(_RestoreTargetFrameworkItems.Identity);&#xD;&#xA; $(_GenerateRestoreGraphProjectEntryInputProperties)">
9707 <Output TaskParameter="TargetOutputs" ItemName="_RestoreProjectPathItems" />
9708 </MSBuild>
9709 </Target>
9710 <!--
9711 ============================================================
9712 _GenerateRestoreProjectPathWalk
9713 Recursively walk projects
9714 ============================================================
9715 -->
9716 <Target Name="_GenerateRestoreProjectPathWalk" DependsOnTargets="_GenerateRestoreProjectPathItems" Returns="@(_RestoreProjectPathItems)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9717 <!-- Walk project references -->
9718 <!-- With SkipNonexistentTargets -->
9719 <MSBuild Condition=" '$(RestoreUseSkipNonexistentTargets)' == 'true' " BuildInParallel="$(RestoreBuildInParallel)" Projects="@(_CurrentRestoreProjectPathItems)" Targets="_GenerateRestoreProjectPathWalk" SkipNonexistentTargets="true" SkipNonexistentProjects="true" Properties="$(_GenerateRestoreGraphProjectEntryInputProperties)">
9720 <Output TaskParameter="TargetOutputs" ItemName="_GenerateRestoreProjectPathWalkOutputs" />
9721 </MSBuild>
9722 <!-- Without SkipNonexistentTargets -->
9723 <MSBuild Condition=" '$(RestoreUseSkipNonexistentTargets)' != 'true' " Projects="@(_CurrentRestoreProjectPathItems)" Targets="_GenerateRestoreProjectPathWalk" ContinueOnError="$(RestoreContinueOnError)" Properties="$(_GenerateRestoreGraphProjectEntryInputProperties)">
9724 <Output TaskParameter="TargetOutputs" ItemName="_GenerateRestoreProjectPathWalkOutputs" />
9725 </MSBuild>
9726 <!-- Include the current project in the result -->
9727 <ItemGroup>
9728 <_GenerateRestoreProjectPathWalkOutputs Include="$(MSBuildProjectFullPath)" />
9729 </ItemGroup>
9730 <!-- Remove duplicates -->
9731 <RemoveDuplicates Inputs="@(_GenerateRestoreProjectPathWalkOutputs)">
9732 <Output TaskParameter="Filtered" ItemName="_RestoreProjectPathItems" />
9733 </RemoveDuplicates>
9734 </Target>
9735 <!--
9736 ============================================================
9737 _GetAllRestoreProjectPathItems
9738 Get the full list of known projects.
9739 This includes all child projects from all target frameworks.
9740 ============================================================
9741 -->
9742 <Target Name="_GetAllRestoreProjectPathItems" DependsOnTargets="_FilterRestoreGraphProjectInputItems" Returns="@(_RestoreProjectPathItems)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9743 <NuGetMessageTask Name="DeterminingProjectsToRestore" Importance="High" />
9744 <!-- Walk projects -->
9745 <!-- With SkipNonexistentTargets -->
9746 <MSBuild Condition=" '$(RestoreUseSkipNonexistentTargets)' == 'true' " BuildInParallel="$(RestoreBuildInParallel)" Projects="@(FilteredRestoreGraphProjectInputItems)" Targets="_GenerateRestoreProjectPathWalk" SkipNonexistentTargets="true" SkipNonexistentProjects="true" Properties="$(_GenerateRestoreGraphProjectEntryInputProperties)">
9747 <Output TaskParameter="TargetOutputs" ItemName="_RestoreProjectPathItemsOutputs" />
9748 </MSBuild>
9749 <!-- Without SkipNonexistentTargets -->
9750 <MSBuild Condition=" '$(RestoreUseSkipNonexistentTargets)' != 'true' " Projects="@(FilteredRestoreGraphProjectInputItems)" Targets="_GenerateRestoreProjectPathWalk" ContinueOnError="$(RestoreContinueOnError)" Properties="$(_GenerateRestoreGraphProjectEntryInputProperties)">
9751 <Output TaskParameter="TargetOutputs" ItemName="_RestoreProjectPathItemsOutputs" />
9752 </MSBuild>
9753 <!-- Remove duplicates -->
9754 <RemoveDuplicates Inputs="@(_RestoreProjectPathItemsOutputs)">
9755 <Output TaskParameter="Filtered" ItemName="_RestoreProjectPathItemsWithoutDupes" />
9756 </RemoveDuplicates>
9757 <!-- Remove projects that do not support restore. -->
9758 <!-- With SkipNonexistentTargets -->
9759 <MSBuild Condition=" '$(RestoreUseSkipNonexistentTargets)' == 'true' " BuildInParallel="$(RestoreBuildInParallel)" Projects="@(_RestoreProjectPathItemsWithoutDupes)" Targets="_IsProjectRestoreSupported" SkipNonexistentTargets="true" SkipNonexistentProjects="true" Properties="$(_GenerateRestoreGraphProjectEntryInputProperties)">
9760 <Output TaskParameter="TargetOutputs" ItemName="_RestoreProjectPathItems" />
9761 </MSBuild>
9762 <!-- Without SkipNonexistentTargets -->
9763 <MSBuild Condition=" '$(RestoreUseSkipNonexistentTargets)' != 'true' " Projects="@(_RestoreProjectPathItemsWithoutDupes)" Targets="_IsProjectRestoreSupported" ContinueOnError="$(RestoreContinueOnError)" Properties="$(_GenerateRestoreGraphProjectEntryInputProperties)">
9764 <Output TaskParameter="TargetOutputs" ItemName="_RestoreProjectPathItems" />
9765 </MSBuild>
9766 </Target>
9767 <!--
9768 ============================================================
9769 _GetRestoreSettingsOverrides
9770 Get global property overrides that should be resolved
9771 against the current working directory instead of the project.
9772 This is done by calling into NuGet.targets in a new scope,
9773 project properties will not be returned by the calls below.
9774 ============================================================
9775 -->
9776 <Target Name="_GetRestoreSettingsOverrides" Returns="$(_RestorePackagesPathOverride);$(_RestoreRepositoryPathOverride);$(_RestoreSourcesOverride);$(_RestoreFallbackFoldersOverride)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9777 <!-- RestorePackagesPathOverride -->
9778 <MSBuild BuildInParallel="$(RestoreBuildInParallel)" Condition=" '$(RestorePackagesPath)' != '' " Projects="$(MSBuildThisFileFullPath)" Targets="_GetRestorePackagesPathOverride">
9779 <Output TaskParameter="TargetOutputs" PropertyName="_RestorePackagesPathOverride" />
9780 </MSBuild>
9781 <!-- RestoreRepositoryPathOverride -->
9782 <MSBuild BuildInParallel="$(RestoreBuildInParallel)" Condition=" '$(RestoreRepositoryPathOverride)' != '' " Projects="$(MSBuildThisFileFullPath)" Targets="_GetRestoreRepositoryPathOverride">
9783 <Output TaskParameter="TargetOutputs" PropertyName="_RestoreRepositoryPathOverride" />
9784 </MSBuild>
9785 <!-- RestoreSourcesOverride -->
9786 <MSBuild BuildInParallel="$(RestoreBuildInParallel)" Condition=" '$(RestoreSources)' != '' " Projects="$(MSBuildThisFileFullPath)" Targets="_GetRestoreSourcesOverride">
9787 <Output TaskParameter="TargetOutputs" PropertyName="_RestoreSourcesOverride" />
9788 </MSBuild>
9789 <!-- RestoreFallbackFoldersOverride -->
9790 <MSBuild BuildInParallel="$(RestoreBuildInParallel)" Condition=" '$(RestoreFallbackFolders)' != '' " Projects="$(MSBuildThisFileFullPath)" Targets="_GetRestoreFallbackFoldersOverride">
9791 <Output TaskParameter="TargetOutputs" PropertyName="_RestoreFallbackFoldersOverride" />
9792 </MSBuild>
9793 </Target>
9794 <!--
9795 ============================================================
9796 _GetRestorePackagesPathOverride
9797 ============================================================
9798 -->
9799 <Target Name="_GetRestorePackagesPathOverride" Returns="$(_RestorePackagesPathOverride)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9800 <PropertyGroup>
9801 <_RestorePackagesPathOverride>$(RestorePackagesPath)</_RestorePackagesPathOverride>
9802 </PropertyGroup>
9803 </Target>
9804 <!--
9805 ============================================================
9806 _GetRestoreRepositoryPathOverride
9807 ============================================================
9808 -->
9809 <Target Name="_GetRestoreRepositoryPathOverride" Returns="$(_RestoreRepositoryPathOverride)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9810 <PropertyGroup>
9811 <_RestorePackagesPathOverride>$(RestoreRepositoryPath)</_RestorePackagesPathOverride>
9812 </PropertyGroup>
9813 </Target>
9814 <!--
9815 ============================================================
9816 _GetRestoreSourcesOverride
9817 ============================================================
9818 -->
9819 <Target Name="_GetRestoreSourcesOverride" Returns="$(_RestoreSourcesOverride)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9820 <PropertyGroup>
9821 <_RestoreSourcesOverride>$(RestoreSources)</_RestoreSourcesOverride>
9822 </PropertyGroup>
9823 </Target>
9824 <!--
9825 ============================================================
9826 _GetRestoreFallbackFoldersOverride
9827 ============================================================
9828 -->
9829 <Target Name="_GetRestoreFallbackFoldersOverride" Returns="$(_RestoreFallbackFoldersOverride)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9830 <PropertyGroup>
9831 <_RestoreFallbackFoldersOverride>$(RestoreFallbackFolders)</_RestoreFallbackFoldersOverride>
9832 </PropertyGroup>
9833 </Target>
9834 <!--
9835 ============================================================
9836 _IsProjectRestoreSupported
9837 Verify restore targets exist in the project.
9838 ============================================================
9839 -->
9840 <Target Name="_IsProjectRestoreSupported" Returns="@(_ValidProjectsForRestore)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9841 <ItemGroup>
9842 <_ValidProjectsForRestore Include="$(MSBuildProjectFullPath)" />
9843 </ItemGroup>
9844 </Target>
9845 <!--
9846 ============================================================
9847 Import NuGet.RestoreEx.targets if the MSBuild property 'RestoreEnableStaticGraph'
9848 is 'true'. This file overrides the Restore target to use MSBuild Static Graph
9849 to load and evaluate projects which is much faster.
9850
9851 This feature is not supported for NuGet.exe scenarios and NuGet.RestoreEx.targets
9852 won't exist in that case.
9853 ============================================================
9854 -->
9855 <!--<Import Project="NuGet.RestoreEx.targets" Condition="'$(RestoreUseStaticGraphEvaluation)' == 'true' And Exists('NuGet.RestoreEx.targets')" />-->
9856 <!--
9857============================================================================================================================================
9858 </Import>
9859
9860C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets
9861============================================================================================================================================
9862-->
9863 <!--<Import Project="$(CustomAfterMicrosoftCommonTargets)" Condition="'$(CustomAfterMicrosoftCommonTargets)' != '' and Exists('$(CustomAfterMicrosoftCommonTargets)')" />-->
9864 <!--
9865============================================================================================================================================
9866 <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.targets\ImportAfter\*" Condition="'$(ImportByWildcardAfterMicrosoftCommonTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.targets\ImportAfter')">
9867
9868C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Microsoft.Common.targets\ImportAfter\Microsoft.DesktopBridge.ImportAfter.targets
9869============================================================================================================================================
9870-->
9871 <!--
9872***********************************************************************************************
9873Microsoft.DesktopBridge.ImportAfter.targets
9874
9875WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
9876 created a backup copy. Incorrect changes to this file will make it
9877 impossible to load or build your projects from the command-line or the IDE.
9878
9879Copyright (C) Microsoft Corporation. All rights reserved.
9880***********************************************************************************************
9881-->
9882 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9883 <DesktopBridgeCommonTargets Condition="'$(DesktopBridgeCommonTargets)'==''">$(MSBuildExtensionsPath)\Microsoft\DesktopBridge\Microsoft.DesktopBridge.Common.targets</DesktopBridgeCommonTargets>
9884 </PropertyGroup>
9885 <!--
9886============================================================================================================================================
9887 <Import Project="$(DesktopBridgeCommonTargets)" Condition="Exists('$(DesktopBridgeCommonTargets)') and '$(SkipImportDesktopBridgeCommonTargets)' != 'true'">
9888
9889C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\DesktopBridge\Microsoft.DesktopBridge.Common.targets
9890============================================================================================================================================
9891-->
9892 <!--
9893***********************************************************************************************
9894Microsoft.DesktopBridge.Common.targets
9895
9896WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
9897 created a backup copy. Incorrect changes to this file will make it
9898 impossible to load or build your projects from the command-line or the IDE.
9899
9900Copyright (C) Microsoft Corporation. All rights reserved.
9901***********************************************************************************************
9902-->
9903 <PropertyGroup Condition="'$(DesktopBridgeSelfContained)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9904 <SelfContained>true</SelfContained>
9905 </PropertyGroup>
9906 <PropertyGroup Condition="'$(DesktopBridgeSelfContained)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9907 <RuntimeIdentifier Condition="'$(Platform)' == 'x86'">win-x86</RuntimeIdentifier>
9908 <RuntimeIdentifier Condition="'$(Platform)' == 'Win32'">win-x86</RuntimeIdentifier>
9909 <RuntimeIdentifier Condition="'$(Platform)' == 'AnyCPU'">win-x86</RuntimeIdentifier>
9910 <RuntimeIdentifier Condition="'$(Platform)' == 'Any CPU'">win-x86</RuntimeIdentifier>
9911 <RuntimeIdentifier Condition="'$(Platform)' == 'x64'">win-x64</RuntimeIdentifier>
9912 </PropertyGroup>
9913 <PropertyGroup Condition="'$(DesktopBridgeSelfContained)' == 'true' AND '$(DesktopBridgeIdentifier)' != ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9914 <RuntimeIdentifier>$(DesktopBridgeIdentifier)</RuntimeIdentifier>
9915 </PropertyGroup>
9916 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9917 <DesktopBridgeOutputGroupsDependsOn>
9918 $(DesktopBridgeOutputGroupsDependsOn);
9919 BuildOnlySettings;
9920 PrepareForBuild;
9921 AssignTargetPaths;
9922 ResolveReferences
9923 </DesktopBridgeOutputGroupsDependsOn>
9924 </PropertyGroup>
9925 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9926 <DesktopBridgeCopyLocalOutputGroupDependsOn>
9927 $(DesktopBridgeOutputGroupsDependsOn);
9928 $(DesktopBridgeCopyLocalOutputGroupDependsOn);
9929 </DesktopBridgeCopyLocalOutputGroupDependsOn>
9930 </PropertyGroup>
9931 <Target Name="DesktopBridgeCopyLocalOutputGroup" DependsOnTargets="$(DesktopBridgeCopyLocalOutputGroupDependsOn)" Returns="@(DesktopBridgeCopyLocalOutputGroupOutput)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9932 <ItemGroup>
9933 <DesktopBridgeCopyLocalOutputGroupOutput Include="@(ReferenceCopyLocalPaths)" Condition="'%(ReferenceCopyLocalPaths.Extension)' != '.xml'">
9934 <TargetPath>%(ReferenceCopyLocalPaths.DestinationSubDirectory)%(ReferenceCopyLocalPaths.Filename)%(ReferenceCopyLocalPaths.Extension)</TargetPath>
9935 </DesktopBridgeCopyLocalOutputGroupOutput>
9936 </ItemGroup>
9937 </Target>
9938 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9939 <DesktopBridgeComFilesOutputGroupDependsOn>
9940 $(DesktopBridgeOutputGroupsDependsOn)
9941 $(DesktopBridgeComFilesOutputGroupDependsOn);
9942 </DesktopBridgeComFilesOutputGroupDependsOn>
9943 </PropertyGroup>
9944 <Target Name="DesktopBridgeComFilesOutputGroup" DependsOnTargets="$(DesktopBridgeComFilesOutputGroupDependsOn)" Returns="@(DesktopBridgeComFilesOutputGroupOutputs)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9945 <ItemGroup>
9946 <DesktopBridgeComFilesOutputGroupOutputs Include="@(ReferenceComWrappersToCopyLocal)">
9947 <TargetPath>%(ReferenceComWrappersToCopyLocal.Filename)%(ReferenceComWrappersToCopyLocal.Extension)</TargetPath>
9948 </DesktopBridgeComFilesOutputGroupOutputs>
9949 <DesktopBridgeComFilesOutputGroupOutputs Include="@(ResolvedIsolatedComModules)">
9950 <TargetPath>%(ResolvedIsolatedComModules.Filename)%(ResolvedIsolatedComModules.Extension)</TargetPath>
9951 </DesktopBridgeComFilesOutputGroupOutputs>
9952 <DesktopBridgeComFilesOutputGroupOutputs Include="@(NativeReferenceFile)">
9953 <TargetPath>%(NativeReferenceFile.Filename)%(NativeReferenceFile.Extension)</TargetPath>
9954 </DesktopBridgeComFilesOutputGroupOutputs>
9955 </ItemGroup>
9956 </Target>
9957 <PropertyGroup Condition="'$(_WapBuildingInsideVisualStudio)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9958 <CoreCompileDependsOn>
9959 $(CoreCompileDependsOn);
9960 _WapComputeNonExistentFileProperty
9961 </CoreCompileDependsOn>
9962 </PropertyGroup>
9963 <!-- When building inside VisualStudio the CoreCompile task always gets run, this target is to replicate that behavior since we set 'BuildingInsideVisualStudio' to false -->
9964 <Target Name="_WapComputeNonExistentFileProperty" Condition="('$(BuildingOutOfProcess)' != 'true') and (('$(BuildingProject)' == 'false') or ('$(UseHostCompilerIfAvailable)' == 'true'))" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9965 <PropertyGroup>
9966 <NonExistentFile>__NonExistentSubDir__\__NonExistentFile__</NonExistentFile>
9967 </PropertyGroup>
9968 </Target>
9969 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9970 <DesktopBridgePublishItemsOutputGroupDependsOn>
9971 $(DesktopBridgeOutputGroupsDependsOn);
9972 $(DesktopBridgePublishItemsOutputGroupDependsOn);
9973 PublishItemsOutputGroup
9974 </DesktopBridgePublishItemsOutputGroupDependsOn>
9975 </PropertyGroup>
9976 <Target Name="DesktopBridgePublishItemsOutputGroup" Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp'" DependsOnTargets="$(DesktopBridgePublishItemsOutputGroupDependsOn)" Returns="@(DesktopBridgePublishItemsOutputGroupOutputs)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9977 <ItemGroup>
9978 <DesktopBridgePublishItemsOutputGroupOutputs Include="@(PublishItemsOutputGroupOutputs->'%(OutputPath)')" TargetPath="%(PublishItemsOutputGroupOutputs.RelativePath)" OutputGroup="DesktopBridgePublishItemsOutputGroup" />
9979 </ItemGroup>
9980 </Target>
9981 <!-- If this project or any project that this references is a UAP project -->
9982 <Target Name="_CheckForGenerateAppxPackageOnBuild" DependsOnTargets="AssignProjectConfiguration" Returns="$(ReferencesUWPProject)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9983 <PropertyGroup>
9984 <ReferencesUWPProject Condition="'$(TargetPlatformIdentifier)' == 'UAP' AND ('$(OutputType)' == 'AppContainerExe' OR '$(OutputType)' == 'Exe')">true</ReferencesUWPProject>
9985 </PropertyGroup>
9986 <MSBuild Condition="'$(ReferencesUWPProject)' != 'true'" Projects="@(ProjectReferenceWithConfiguration)" Properties="%(ProjectReferenceWithConfiguration.SetConfiguration);%(ProjectReferenceWithConfiguration.SetPlatform)" Targets="_CheckForGenerateAppxPackageOnBuild" SkipNonexistentTargets="true">
9987 <Output TaskParameter="TargetOutputs" PropertyName="ReferencesUWPProject" />
9988 </MSBuild>
9989 </Target>
9990 <Target Name="GetDeployableContentReferenceOutputs" DependsOnTargets="AssignProjectConfiguration" Returns="@(DeployableContentReference)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9991 <ItemGroup>
9992 <DeployableContentReference Include="@(ProjectReferenceWithConfiguration)" Condition="'%(ProjectReferenceWithConfiguration.DeploymentContent)' == 'true'">
9993 <SourceDeployableProjectReference>$(ProjectName)</SourceDeployableProjectReference>
9994 </DeployableContentReference>
9995 </ItemGroup>
9996 </Target>
9997 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
9998 <DesktopBridgeFrameworkSDKRegistrationOutputGroupDependsOn>
9999 $(DesktopBridgeOutputGroupsDependsOn);
10000 $(DesktopBridgeFrameworkSDKRegistrationOutputGroupDependsOn)
10001 </DesktopBridgeFrameworkSDKRegistrationOutputGroupDependsOn>
10002 </PropertyGroup>
10003 <Target Name="DesktopBridgeFrameworkSDKRegistrationOutputGroup" DependsOnTargets="$(DesktopBridgeFrameworkSDKRegistrationOutputGroupDependsOn)" Returns="@(DesktopBridgeFrameworkSDKRegistrationOutputGroupOutputs)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10004 <ItemGroup>
10005 <DesktopBridgeFrameworkSDKRegistrationOutputGroupOutputs Include="@(FrameworkSdkReference)" />
10006 </ItemGroup>
10007 <MSBuild Projects="@(ProjectReferenceWithConfiguration)" Targets="_GenerateAdditionalFrameworkSDKReference;_GetRecursiveResolvedSDKReferences;DesktopBridgeFrameworkSDKRegistrationOutputGroup" BuildInParallel="$(BuildInParallel)" Properties="%(ProjectReferenceWithConfiguration.SetConfiguration); %(ProjectReferenceWithConfiguration.SetPlatform)" Condition="'@(ProjectReferenceWithConfiguration)' != ''&#xD;&#xA; and '%(ProjectReferenceWithConfiguration.BuildReference)' == 'true'&#xD;&#xA; and '%(ProjectReferenceWithConfiguration.ReferenceOutputAssembly)' == 'true'" SkipNonexistentTargets="true" ContinueOnError="true">
10008 <Output TaskParameter="TargetOutputs" ItemName="DesktopBridgeFrameworkSDKRegistrationOutputGroupOutputs" />
10009 </MSBuild>
10010 </Target>
10011 <!--
10012============================================================================================================================================
10013 </Import>
10014
10015C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Microsoft.Common.targets\ImportAfter\Microsoft.DesktopBridge.ImportAfter.targets
10016============================================================================================================================================
10017-->
10018 <!--
10019============================================================================================================================================
10020 </Import>
10021============================================================================================================================================
10022-->
10023 <!--
10024============================================================================================================================================
10025 <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.targets\ImportAfter\*" Condition="'$(ImportByWildcardAfterMicrosoftCommonTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.targets\ImportAfter')">
10026
10027C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Microsoft.Common.targets\ImportAfter\Microsoft.Docker.ImportAfter.targets
10028============================================================================================================================================
10029-->
10030 <!--
10031***********************************************************************************************
10032Microsoft.Docker.ImportAfter.targets
10033
10034WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
10035 created a backup copy. Incorrect changes to this file will make it
10036 impossible to load or build your projects from the command-line or the IDE.
10037
10038Copyright (C) Microsoft Corporation. All rights reserved.
10039***********************************************************************************************
10040-->
10041 <!--
10042============================================================================================================================================
10043 <Import Project="$(MSBuildExtensionsPath)\Sdks\Microsoft.Docker.Sdk\build\Microsoft.Docker.targets" Condition="Exists('$(MSBuildExtensionsPath)\Sdks\Microsoft.Docker.Sdk\build\Microsoft.Docker.targets')">
10044
10045C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Sdks\Microsoft.Docker.Sdk\build\Microsoft.Docker.targets
10046============================================================================================================================================
10047-->
10048 <!--
10049***********************************************************************************************
10050Microsoft.Docker.targets
10051
10052WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
10053 created a backup copy. Incorrect changes to this file will make it
10054 impossible to load or build your projects from the command-line or the IDE.
10055
10056Copyright (C) Microsoft Corporation. All rights reserved.
10057***********************************************************************************************
10058-->
10059 <!--
10060 ***********************************************************************************************
10061
10062 Docker Common Properties
10063
10064 ***********************************************************************************************
10065 -->
10066 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10067 <DockerBuildTasksAssembly>$(MSBuildThisFileDirectory)..\tools\Microsoft.Docker.BuildTasks.dll</DockerBuildTasksAssembly>
10068 <DockerIntermediateOutputPath>obj\Docker</DockerIntermediateOutputPath>
10069 <DockerPublishDirectory>$(DockerIntermediateOutputPath)\publish</DockerPublishDirectory>
10070 </PropertyGroup>
10071 <!--
10072 ***********************************************************************************************
10073
10074 Docker Common Targets
10075
10076 ***********************************************************************************************
10077 -->
10078 <UsingTask TaskName="ComposeBuild" AssemblyFile="$(DockerBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
10079 <UsingTask TaskName="ResolveAppType" AssemblyFile="$(DockerBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
10080 <UsingTask TaskName="UpdateComposeVsGeneratedFiles" AssemblyFile="$(DockerBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
10081 <UsingTask TaskName="ResolveTargetFramework" AssemblyFile="$(DockerBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
10082 <!--
10083 ***********************************************************************************************
10084
10085 TARGET : DockerResolveAppType
10086
10087 ***********************************************************************************************
10088 -->
10089 <Target Name="DockerResolveAppType" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10090 <ResolveAppType ProjectDirectory="$(MSBuildProjectDirectory)" ProjectCapability="@(ProjectCapability)" OutputType="$(OutputType)" ProjectTypeGuids="$(ProjectTypeGuids)">
10091 <Output TaskParameter="AppType" PropertyName="DockerAppType" />
10092 </ResolveAppType>
10093 </Target>
10094 <!--
10095 ***********************************************************************************************
10096
10097 TARGET : DockerUpdateComposeVsGeneratedFiles
10098
10099 ***********************************************************************************************
10100 -->
10101 <Target Name="DockerUpdateComposeVsGeneratedFiles" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10102 <UpdateComposeVsGeneratedFiles ProjectDirectory="$(MSBuildProjectDirectory)" DockerComposeProjectPath="$(DockerComposeProjectPath)" NuGetPackageRoot="$(NuGetPackageRoot)" NuGetPackageFolders="$(NuGetPackageFolders)" BlazorStaticWebAssetsManifest="$(_GeneratedStaticWebAssetsDevelopmentManifest)" DockerDevelopmentMode="$(DockerDevelopmentMode)" DockerTargetOS="$(DockerTargetOS)" />
10103 </Target>
10104 <!--
10105 ***********************************************************************************************
10106
10107 TARGET : DockerResolveTargetFramework
10108
10109 ***********************************************************************************************
10110 -->
10111 <Target Name="DockerResolveTargetFramework" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10112 <ResolveTargetFramework ProjectDirectory="$(MSBuildProjectDirectory)" ProjectCapability="@(ProjectCapability)">
10113 <Output TaskParameter="TargetFramework" PropertyName="DockerTargetFramework" />
10114 </ResolveTargetFramework>
10115 </Target>
10116 <!--
10117 ***********************************************************************************************
10118
10119 TARGET : DockerComposeBuild
10120
10121 ***********************************************************************************************
10122 -->
10123 <!-- DockerComposeBuild is invoked during Web publish to Docker service as a normal web project, which happens when Dockerfile is found under the same folder as project file. -->
10124 <Target Name="DockerComposeBuild" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10125 <PropertyGroup>
10126 <_DockerDevelopmentMode Condition=" '$(DockerDevelopmentMode)' != '' ">$(DockerDevelopmentMode)</_DockerDevelopmentMode>
10127 <_DockerDevelopmentMode Condition=" '$(_DockerDevelopmentMode)' == '' ">Regular</_DockerDevelopmentMode>
10128 </PropertyGroup>
10129 <!-- Since Publish operation is not on dcproj target, this task executes the gets DockerComposeBaseFilePath property from the dcproj file. -->
10130 <MSBuild Projects="$(DockerComposeProjectPath)" Targets="DockerGetComposeBaseFilePath" Condition=" '$(_DockerDevelopmentMode)' == 'Regular' And '$(DockerComposeProjectPath)' != '' And '$(DockerComposeBaseFilePath)' == '' " Properties="Configuration=$(Configuration)">
10131 <Output TaskParameter="TargetOutputs" PropertyName="DockerComposeBaseFilePathOutput" />
10132 </MSBuild>
10133 <!-- Since Publish operation is not on dcproj target, this task executes the gets AdditionalComposeFilePaths property from the dcproj file. -->
10134 <MSBuild Projects="$(DockerComposeProjectPath)" Targets="DockerGetAdditionalComposeFilePaths" Condition=" '$(_DockerDevelopmentMode)' == 'Regular' And '$(DockerComposeProjectPath)' != '' And '$(AdditionalComposeFilePaths)' == '' " Properties="Configuration=$(Configuration)">
10135 <Output TaskParameter="TargetOutputs" PropertyName="DockerComposeAdditionalFilePathsOutput" />
10136 </MSBuild>
10137 <!-- Since Publish operation is not on dcproj target, this task executes the gets DockerComposeBuildArguments property from the dcproj file. -->
10138 <MSBuild Projects="$(DockerComposeProjectPath)" Targets="DockerGetBuildArguments" Condition=" '$(_DockerDevelopmentMode)' == 'Regular' And '$(DockerComposeProjectPath)' != '' And '$(DockerComposeBuildArguments)' == '' " Properties="Configuration=$(Configuration)">
10139 <Output TaskParameter="TargetOutputs" PropertyName="DockerComposeBuildArgumentsOutput" />
10140 </MSBuild>
10141 <!-- Since Publish operation is not on dcproj target, this task executes the gets DockerComposeProjectName property from the dcproj file. -->
10142 <MSBuild Projects="$(DockerComposeProjectPath)" Targets="DockerGetDockerComposeProjectName" Condition=" '$(_DockerDevelopmentMode)' == 'Regular' And '$(DockerComposeProjectPath)' != '' And '$(DockerComposeProjectName)' == '' " Properties="Configuration=$(Configuration)">
10143 <Output TaskParameter="TargetOutputs" PropertyName="DockerComposeProjectNameOutput" />
10144 </MSBuild>
10145 <ComposeBuild DockerComposeProjectPath="$(DockerComposeProjectPath)" DockerDevelopmentMode="$(_DockerDevelopmentMode)" ProjectPath="$(MSBuildProjectFullPath)" NoCache="$(DockerComposeBuildNoCache)" Condition=" '$(_DockerDevelopmentMode)' == 'Regular' And '$(DockerComposeProjectPath)' != '' " AdditionalComposeFilePaths="$([MSBuild]::ValueOrDefault('$(DockerComposeAdditionalFilePathsOutput)', '$(AdditionalComposeFilePaths)'))" DockerComposeBaseFilePath="$([MSBuild]::ValueOrDefault('$(DockerComposeBaseFilePathOutput)', '$(DockerComposeBaseFilePath)'))" DockerComposeBuildArguments="$([MSBuild]::ValueOrDefault('$(DockerComposeBuildArgumentsOutput)', '$(DockerComposeBuildArguments)'))" DockerComposeProjectName="$([MSBuild]::ValueOrDefault('$(DockerComposeProjectNameOutput)', '$(DockerComposeProjectName)'))" />
10146 <CallTarget Targets="ContainerBuild" Condition=" '$(_DockerDevelopmentMode)' == 'Regular' And '$(DockerComposeProjectPath)' == '' " />
10147 </Target>
10148 <!--
10149 ***********************************************************************************************
10150
10151 TARGET : DockerPackageService
10152
10153 ***********************************************************************************************
10154 -->
10155 <Target Name="DockerPackageService" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10156 <CallTarget Targets="DockerResolveAppType;DockerResolveTargetFramework" />
10157 <!-- ASP.NET Core -->
10158 <MSBuild Projects="$(MSBuildProjectFullPath)" Targets="Build" Properties="Configuration=$(Configuration);&#xD;&#xA; Platform=$(Platform);&#xD;&#xA; WebPublishMethod=FileSystem;&#xD;&#xA; DeployOnBuild=True;&#xD;&#xA; PublishUrl=$(DockerPublishDirectory)" Condition=" '$(DockerAppType)' == 'AspNetCore' " />
10159 <!-- ASP.NET -->
10160 <MSBuild Projects="$(MSBuildProjectFullPath)" Targets="Build" Properties="Configuration=$(Configuration);&#xD;&#xA; Platform=$(Platform);&#xD;&#xA; BuildingInsideVisualStudio=False;&#xD;&#xA; WebPublishMethod=FileSystem;&#xD;&#xA; DeployTarget=WebPublish;&#xD;&#xA; DeployOnBuild=True;&#xD;&#xA; PublishUrl=$(DockerPublishDirectory)" Condition=" '$(DockerAppType)' == 'AspNet' " />
10161 <!-- Console on .NET Core -->
10162 <MSBuild Projects="$(MSBuildProjectFullPath)" Targets="Publish" Properties="Configuration=$(Configuration);&#xD;&#xA; Platform=$(Platform);&#xD;&#xA; PublishDir=$(DockerPublishDirectory)" Condition=" '$(DockerAppType)' == 'ConsoleCore' And '$(DockerTargetFramework)' == 'DotNetCore' " />
10163 <!-- Console on .NET Framework -->
10164 <MSBuild Projects="$(MSBuildProjectFullPath)" Targets="Build" Properties="Configuration=$(Configuration);&#xD;&#xA; Platform=$(Platform)" Condition=" '$(DockerAppType)' == 'Console' And '$(DockerTargetFramework)' == 'DotNetFramework' " />
10165 <ItemGroup>
10166 <DockerOutputFiles Include="$(OutputPath)\**\*.*" />
10167 </ItemGroup>
10168 <Copy SourceFiles="@(DockerOutputFiles)" DestinationFiles="@(DockerOutputFiles->'$(DockerPublishDirectory)\%(RecursiveDir)%(Filename)%(Extension)')" Condition=" '$(DockerAppType)' == 'Console' And '$(DockerTargetFramework)' == 'DotNetFramework' " />
10169 </Target>
10170 <!--
10171============================================================================================================================================
10172 </Import>
10173
10174C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Microsoft.Common.targets\ImportAfter\Microsoft.Docker.ImportAfter.targets
10175============================================================================================================================================
10176-->
10177 <!--
10178============================================================================================================================================
10179 </Import>
10180============================================================================================================================================
10181-->
10182 <!--
10183============================================================================================================================================
10184 <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.targets\ImportAfter\*" Condition="'$(ImportByWildcardAfterMicrosoftCommonTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.targets\ImportAfter')">
10185
10186C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Microsoft.Common.targets\ImportAfter\Microsoft.NET.Build.Extensions.targets
10187============================================================================================================================================
10188-->
10189 <!--
10190***********************************************************************************************
10191Microsoft.NET.Build.Extensions.targets
10192
10193WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
10194 created a backup copy. Incorrect changes to this file will make it
10195 impossible to load or build your projects from the command-line or the IDE.
10196
10197Copyright (c) .NET Foundation. All rights reserved.
10198***********************************************************************************************
10199-->
10200 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10201 <MicrosoftNETBuildExtensionsTargets Condition="'$(MicrosoftNETBuildExtensionsTargets)' == ''">$(MSBuildExtensionsPath)\Microsoft\Microsoft.NET.Build.Extensions\Microsoft.NET.Build.Extensions.targets</MicrosoftNETBuildExtensionsTargets>
10202 </PropertyGroup>
10203 <!--
10204============================================================================================================================================
10205 <Import Project="$(MicrosoftNETBuildExtensionsTargets)" Condition="Exists('$(MicrosoftNETBuildExtensionsTargets)')">
10206
10207C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\Microsoft.NET.Build.Extensions.targets
10208============================================================================================================================================
10209-->
10210 <!--
10211***********************************************************************************************
10212Microsoft.NET.Build.Extensions.targets
10213
10214WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
10215 created a backup copy. Incorrect changes to this file will make it
10216 impossible to load or build your projects from the command-line or the IDE.
10217
10218Copyright (c) .NET Foundation. All rights reserved.
10219***********************************************************************************************
10220-->
10221 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10222 <_TargetFrameworkVersionWithoutV>$(TargetFrameworkVersion.TrimStart('vV'))</_TargetFrameworkVersionWithoutV>
10223 <MicrosoftNETBuildExtensionsTasksAssembly Condition="'$(MicrosoftNETBuildExtensionsTasksAssembly)' == '' AND '$(MSBuildRuntimeType)' == 'Core'">$(MSBuildThisFileDirectory)\tools\net5.0\Microsoft.NET.Build.Extensions.Tasks.dll</MicrosoftNETBuildExtensionsTasksAssembly>
10224 <MicrosoftNETBuildExtensionsTasksAssembly Condition="'$(MicrosoftNETBuildExtensionsTasksAssembly)' == ''">$(MSBuildThisFileDirectory)\tools\net472\Microsoft.NET.Build.Extensions.Tasks.dll</MicrosoftNETBuildExtensionsTasksAssembly>
10225 <!-- Include conflict resolution targets for NETFramework and allow other frameworks to opt-in -->
10226 <ResolveAssemblyConflicts Condition="'$(ResolveAssemblyConflicts)' == '' AND '$(TargetFrameworkIdentifier)' == '.NETFramework'">true</ResolveAssemblyConflicts>
10227 </PropertyGroup>
10228 <!--<Import Project="Microsoft.NET.Build.Extensions.NETFramework.targets" Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework'" />-->
10229 <!-- Only import ConflictResolution targets for non-SDK projects, SDK projects have ConflictResolution built in -->
10230 <!--<Import Project="Microsoft.NET.Build.Extensions.ConflictResolution.targets" Condition="'$(ResolveAssemblyConflicts)' == 'true' AND '$(UsingMicrosoftNETSdk)' != 'true'" />-->
10231 <!--
10232============================================================================================================================================
10233 </Import>
10234
10235C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Microsoft.Common.targets\ImportAfter\Microsoft.NET.Build.Extensions.targets
10236============================================================================================================================================
10237-->
10238 <!--
10239============================================================================================================================================
10240 </Import>
10241============================================================================================================================================
10242-->
10243 <!--
10244============================================================================================================================================
10245 <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.targets\ImportAfter\*" Condition="'$(ImportByWildcardAfterMicrosoftCommonTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.targets\ImportAfter')">
10246
10247C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Microsoft.Common.targets\ImportAfter\Microsoft.Net.CoreRuntime.ImportAfter.targets
10248============================================================================================================================================
10249-->
10250 <!--
10251***********************************************************************************************
10252Microsoft.Net.CoreRuntime.ImportAfter.targets
10253
10254WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
10255 created a backup copy. Incorrect changes to this file will make it
10256 impossible to load or build your projects from the command-line or the IDE.
10257
10258Copyright (C) Microsoft Corporation. All rights reserved.
10259***********************************************************************************************
10260-->
10261 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10262 <NetfxCoreRuntimeTargets Condition="'$(NetfxCoreRuntimeTargets)'==''">$(ProgramFiles)\MSBuild\15.0\.Net\CoreRuntime\Microsoft.Net.CoreRuntime.targets</NetfxCoreRuntimeTargets>
10263 </PropertyGroup>
10264 <!--<Import Project="$(NetfxCoreRuntimeTargets)" Condition="'$(TargetPlatformIdentifier)' == 'UAP' and '$(AppxPackage)' == 'true' and exists('$(NetfxCoreRuntimeTargets)')" />-->
10265 <!--
10266============================================================================================================================================
10267 </Import>
10268============================================================================================================================================
10269-->
10270 <!--
10271============================================================================================================================================
10272 <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.targets\ImportAfter\*" Condition="'$(ImportByWildcardAfterMicrosoftCommonTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.targets\ImportAfter')">
10273
10274C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Microsoft.Common.targets\ImportAfter\Microsoft.NetNative.ImportAfter.targets
10275============================================================================================================================================
10276-->
10277 <!--
10278***********************************************************************************************
10279Microsoft.NetNative.ImportAfter.targets
10280
10281WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
10282 created a backup copy. Incorrect changes to this file will make it
10283 impossible to load or build your projects from the command-line or the IDE.
10284
10285Copyright (C) Microsoft Corporation. All rights reserved.
10286***********************************************************************************************
10287-->
10288 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10289 <UseCacheToolChain Condition="'$(DotNetNativeVersion)'!=''">true</UseCacheToolChain>
10290 <!-- In general, DotNetNativeVersion and DotNetNativeLibraryVersion should be the same, but keep some flexibility just in case -->
10291 <DotNetNativeLibraryVersion Condition="'$(DotNetNativeLibraryVersion)'==''">$(DotNetNativeVersion)</DotNetNativeLibraryVersion>
10292 </PropertyGroup>
10293 <!-- Projects that set DotNetNativeVersion get the offline package they requested -->
10294 <PropertyGroup Condition="'$(UseCacheToolChain)'=='true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10295 <DotNetNativeCompilerProps Condition="'$(DotNetNativeCompilerProps)'==''">$(ProgramFiles)\Microsoft SDKs\NuGetPackages\Microsoft.Net.Native.Compiler\$(DotNetNativeVersion)\build\Microsoft.Net.Native.Compiler.props</DotNetNativeCompilerProps>
10296 <ProjectNTargets Condition="'$(ProjectNTargets)'==''">$(ProgramFiles)\Microsoft SDKs\NuGetPackages\Microsoft.Net.Native.Compiler\$(DotNetNativeVersion)\build\Microsoft.Net.Native.Compiler.targets</ProjectNTargets>
10297 <DotNetNativeSharedLibraryarmProps Condition="'$(DotNetNativeSharedLibraryarmProps)'==''">$(ProgramFiles)\Microsoft SDKs\NuGetPackages\Microsoft.Net.Native.SharedLibrary-arm\$(DotNetNativeLibraryVersion)\build\Microsoft.Net.Native.SharedLibrary-arm.props</DotNetNativeSharedLibraryarmProps>
10298 <DotNetNativeSharedLibraryx64Props Condition="'$(DotNetNativeSharedLibraryx64Props)'==''">$(ProgramFiles)\Microsoft SDKs\NuGetPackages\Microsoft.Net.Native.SharedLibrary-x64\$(DotNetNativeLibraryVersion)\build\Microsoft.Net.Native.SharedLibrary-x64.props</DotNetNativeSharedLibraryx64Props>
10299 <DotNetNativeSharedLibraryx86Props Condition="'$(DotNetNativeSharedLibraryx86Props)'==''">$(ProgramFiles)\Microsoft SDKs\NuGetPackages\Microsoft.Net.Native.SharedLibrary-x86\$(DotNetNativeLibraryVersion)\build\Microsoft.Net.Native.SharedLibrary-x86.props</DotNetNativeSharedLibraryx86Props>
10300 <DotNetNativeSharedLibraryarmTargets Condition="'$(DotNetNativeSharedLibraryarmTargets)'==''">$(ProgramFiles)\Microsoft SDKs\NuGetPackages\Microsoft.Net.Native.SharedLibrary-arm\$(DotNetNativeLibraryVersion)\build\Microsoft.Net.Native.SharedLibrary-arm.targets</DotNetNativeSharedLibraryarmTargets>
10301 <DotNetNativeSharedLibraryx64Targets Condition="'$(DotNetNativeSharedLibraryx64Targets)'==''">$(ProgramFiles)\Microsoft SDKs\NuGetPackages\Microsoft.Net.Native.SharedLibrary-x64\$(DotNetNativeLibraryVersion)\build\Microsoft.Net.Native.SharedLibrary-x64.targets</DotNetNativeSharedLibraryx64Targets>
10302 <DotNetNativeSharedLibraryx86Targets Condition="'$(DotNetNativeSharedLibraryx86Targets)'==''">$(ProgramFiles)\Microsoft SDKs\NuGetPackages\Microsoft.Net.Native.SharedLibrary-x86\$(DotNetNativeLibraryVersion)\build\Microsoft.Net.Native.SharedLibrary-x86.targets</DotNetNativeSharedLibraryx86Targets>
10303 </PropertyGroup>
10304 <PropertyGroup Condition="'$(UseCacheToolChain)'!='true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10305 <ProjectNTargets Condition="'$(ProjectNTargets)'=='' and '$(PlatformTarget)'!='ARM64'">$(ProgramFiles)\MSBuild\15.0\.Net\.NetNative\15.0.24211\Microsoft.NetNative.targets</ProjectNTargets>
10306 </PropertyGroup>
10307 <!--<Import Project="$(DotNetNativeCompilerProps)" Condition="'$(ProjectNProfileEnabled)' == 'true' and exists('$(DotNetNativeCompilerProps)')" />-->
10308 <!--<Import Project="$(ProjectNTargets)" Condition="'$(ProjectNProfileEnabled)' == 'true' and exists('$(ProjectNTargets)')" />-->
10309 <!--<Import Project="$(DotNetNativeSharedLibraryarmProps)" Condition="'$(ProjectNProfileEnabled)' == 'true' and exists('$(DotNetNativeSharedLibraryarmProps)')" />-->
10310 <!--<Import Project="$(DotNetNativeSharedLibraryx64Props)" Condition="'$(ProjectNProfileEnabled)' == 'true' and exists('$(DotNetNativeSharedLibraryx64Props)')" />-->
10311 <!--<Import Project="$(DotNetNativeSharedLibraryx86Props)" Condition="'$(ProjectNProfileEnabled)' == 'true' and exists('$(DotNetNativeSharedLibraryx86Props)')" />-->
10312 <!--<Import Project="$(DotNetNativeSharedLibraryarmTargets)" Condition="'$(ProjectNProfileEnabled)' == 'true' and exists('$(DotNetNativeSharedLibraryarmTargets)')" />-->
10313 <!--<Import Project="$(DotNetNativeSharedLibraryx64Targets)" Condition="'$(ProjectNProfileEnabled)' == 'true' and exists('$(DotNetNativeSharedLibraryx64Targets)')" />-->
10314 <!--<Import Project="$(DotNetNativeSharedLibraryx86Targets)" Condition="'$(ProjectNProfileEnabled)' == 'true' and exists('$(DotNetNativeSharedLibraryx86Targets)')" />-->
10315 <!--
10316============================================================================================================================================
10317 </Import>
10318============================================================================================================================================
10319-->
10320 <!--
10321============================================================================================================================================
10322 <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.targets\ImportAfter\*" Condition="'$(ImportByWildcardAfterMicrosoftCommonTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.targets\ImportAfter')">
10323
10324C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Microsoft.Common.targets\ImportAfter\Microsoft.NuGet.ImportAfter.targets
10325============================================================================================================================================
10326-->
10327 <!--
10328***********************************************************************************************
10329Microsoft.NuGet.ImportAfter.targets
10330
10331WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
10332 created a backup copy. Incorrect changes to this file will make it
10333 impossible to load or build your projects from the command-line or the IDE.
10334
10335Copyright (c) .NET Foundation. All rights reserved.
10336***********************************************************************************************
10337-->
10338 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10339 <NuGetTargets Condition="'$(NuGetTargets)'==''">$(MSBuildExtensionsPath)\Microsoft\NuGet\$(VisualStudioVersion)\Microsoft.NuGet.targets</NuGetTargets>
10340 </PropertyGroup>
10341 <!--<Import Project="$(NuGetTargets)" Condition="Exists('$(NuGetTargets)') and '$(SkipImportNuGetBuildTargets)' != 'true'" />-->
10342 <!--
10343============================================================================================================================================
10344 </Import>
10345============================================================================================================================================
10346-->
10347 <!--
10348============================================================================================================================================
10349 <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.targets\ImportAfter\*" Condition="'$(ImportByWildcardAfterMicrosoftCommonTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.targets\ImportAfter')">
10350
10351C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Microsoft.Common.targets\ImportAfter\Microsoft.QualityTools.Testing.Fakes.ImportAfter.targets
10352============================================================================================================================================
10353-->
10354 <PropertyGroup Condition="$(FakesImported) != 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10355 <FakesBinPath Condition="$(FakesBinPath) == ''">$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Fakes</FakesBinPath>
10356 <FakesTargets>$(FakesBinPath)\Microsoft.QualityTools.Testing.Fakes.targets</FakesTargets>
10357 </PropertyGroup>
10358 <!--
10359============================================================================================================================================
10360 <Import Project="$(FakesTargets)" Condition="$(FakesImported) != 'true' and Exists('$(FakesTargets)')">
10361
10362C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\VisualStudio\v16.0\Fakes\Microsoft.QualityTools.Testing.Fakes.targets
10363============================================================================================================================================
10364-->
10365 <!-- Safeguard against importing this .targets file multiple times -->
10366 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10367 <FakesImported>true</FakesImported>
10368 </PropertyGroup>
10369 <!-- Build customization properties -->
10370 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10371 <FakesBinPath Condition="$(FakesBinPath) == ''">$(MSBuildProjectDirectory)</FakesBinPath>
10372 <FakesIntermediatePath>$([System.IO.Path]::Combine('$(ProjectDir)','$(IntermediateOutputPath)Fakes'))</FakesIntermediatePath>
10373 <FakesContinueOnError Condition="$(FakesContinueOnError) == ''">false</FakesContinueOnError>
10374 <FakesToolsPath Condition="$(FakesToolsPath) == ''">$(FakesBinPath)</FakesToolsPath>
10375 <FakesMSBuildPath Condition="'$(FakesMSBuildPath)' == ''">$(MSBuildToolsPath)\msbuild.exe</FakesMSBuildPath>
10376 <!-- Pass unit test project's PlatformTarget to GenerateFakes task *only if* PlatformTarget is present! -->
10377 <FakesCompilationProperties Condition="'$(PlatformTarget)' != ''">$(FakesCompilationProperties);PlatformTarget=$(PlatformTarget)</FakesCompilationProperties>
10378 <FakesCommandLineArguments Condition="'$(FakesCompilationProperties)' != ''">$(FakesCommandLineArguments) /Properties:"$(FakesCompilationProperties)"</FakesCommandLineArguments>
10379 <FakesCommandLineArguments>$(FakesCommandLineArguments) /msbuildpath:"$(FakesMSBuildPath)"</FakesCommandLineArguments>
10380 <FakesVerbosity Condition="'$(FakesVerbosity)' == ''">Critical</FakesVerbosity>
10381 <FakesTasks>$(FakesBinPath)\Microsoft.QualityTools.Testing.Fakes.Tasks.dll</FakesTasks>
10382 <!-- The following properties are exposed to the user as configurable -->
10383 <FakesRelativeOutputDir>$(FakesRelativeOutputDir)FakesAssemblies</FakesRelativeOutputDir>
10384 <FakesConfigurationDirectory Condition="$(FakesConfigurationDirectory) == ''">$(ProjectDir)Fakes</FakesConfigurationDirectory>
10385 <!-- If a user chooses to route all Fakes generation and runtime execution through Fakes V2 through an environment variable, honor that.
10386 A project's properties would take precedence over a global environment variable though. -->
10387 <FakesUseV2Generation Condition="'$(FakesUseV2Generation)' == '' AND '$(Fakes_Use_V2)' == 'true'">true</FakesUseV2Generation>
10388 <!--The default logic to choose Fakes V2 over V1.-->
10389 <FakesUseV2Generation Condition="'$(FakesUseV2Generation)' == ''">$(UsingMicrosoftNETSdk)</FakesUseV2Generation>
10390 <!-- FakesOutputPath is not allowed to be overridden in V2 generation. Instead, FakesRelativeOutputDir can be overridden.
10391 AdditionalDesignTimeBuildInput only works with relative paths, and so this change was needed.
10392 Tracking: https://devdiv.visualstudio.com/DevDiv/_workitems/edit/1150797 -->
10393 <FakesOutputPath Condition="$(FakesUseV2Generation) == 'true' OR $(FakesOutputPath) == ''">$(ProjectDir)$(FakesRelativeOutputDir)</FakesOutputPath>
10394 </PropertyGroup>
10395 <!--
10396 This item is used to indicate to the designtime build that the generated
10397 fakes assembly reference needs to be picked up to populate intellisense.
10398
10399 This property is not ideal to be used in the long run since the general
10400 recommendation is to use items generated in design time build within the
10401 design time build. But, fakes generation can take too long to run, and we
10402 choose to not run during design time build.
10403 -->
10404 <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10405 <!--
10406 ContentSensitive => contents of file matters. If this is false, only
10407 addition and removal of files would trigger designtime build.
10408 We set this to false as Roslyn monitors the referenced dlls for changes, and so we
10409 do not need to trigger redundant design time builds.
10410 -->
10411 <AdditionalDesignTimeBuildInput Condition="$(FakesUseV2Generation) == 'true'" Include="$(FakesRelativeOutputDir)\*.dll" ContentSensitive="false" />
10412 </ItemGroup>
10413 <!-- Make "Fakes" item available as a "Build Action" in the Properties window -->
10414 <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10415 <AvailableItemName Include="Fakes" />
10416 </ItemGroup>
10417 <UsingTask TaskName="Microsoft.QualityTools.Testing.Fakes.GenerateFakes" AssemblyFile="$(FakesTasks)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
10418 <UsingTask TaskName="Microsoft.QualityTools.Testing.Fakes.ReportFakesWarnings" AssemblyFile="$(FakesTasks)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
10419 <!-- This is the legacy generation of fakes that occurs before RAR in msbuild, and uses its own custom RAR -->
10420 <!-- Generate .Fakes assemblies before assembly references of the parent project are resolved -->
10421 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10422 <ResolveAssemblyReferencesDependsOn>
10423 $(ResolveAssemblyReferencesDependsOn);
10424 FakesGenerateBeforeBuild;
10425 </ResolveAssemblyReferencesDependsOn>
10426 </PropertyGroup>
10427 <!-- Define Fakes build steps -->
10428 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10429 <FakesGenerateBeforeBuildDependsOn>
10430 $(FakesGenerateBeforeBuildDependsOn);
10431 ResolveFakesReferences;
10432 BuildFakesAssemblies;
10433 </FakesGenerateBeforeBuildDependsOn>
10434 </PropertyGroup>
10435 <Target Name="FakesGenerateBeforeBuild" Condition="@(Fakes) != '' AND $(BuildingProject) AND $(FakesUseV2Generation) != 'true'" DependsOnTargets="$(FakesGenerateBeforeBuildDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
10436 <!-- Collect the references excluding Fakes assembly files. -->
10437 <Target Name="ResolveFakesReferences" Condition="@(Fakes) != '' AND $(BuildingProject) AND $(FakesUseV2Generation) != 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10438 <ItemGroup>
10439 <ReferenceWithoutFakes Include="@(Reference)" />
10440 <ReferenceWithoutFakes Remove="$(FakesOutputPath)\*.Fakes.dll" />
10441 </ItemGroup>
10442 <PropertyGroup>
10443 <FakesResolveAssemblyReferencesStateFile>$(IntermediateOutputPath)$(MSBuildProjectFile)FakesResolveAssemblyReference.cache</FakesResolveAssemblyReferencesStateFile>
10444 <FakesResolveAssemblyReferencesFindDependencies Condition="'$(FakesResolveAssemblyReferencesFindDependencies)' == ''">true</FakesResolveAssemblyReferencesFindDependencies>
10445 <FakesResolveAssemblyReferencesFindRelatedFiles Condition="'$(FakesResolveAssemblyReferencesFindRelatedFiles)' == ''">true</FakesResolveAssemblyReferencesFindRelatedFiles>
10446 </PropertyGroup>
10447 <ResolveAssemblyReference Assemblies="@(ReferenceWithoutFakes)" AssemblyFiles="@(_ResolvedProjectReferencePaths);@(_ExplicitReference)" TargetFrameworkDirectories="$(TargetFrameworkDirectory)" InstalledAssemblyTables="@(InstalledAssemblyTables);@(RedistList)" IgnoreDefaultInstalledAssemblyTables="$(IgnoreDefaultInstalledAssemblyTables)" IgnoreDefaultInstalledAssemblySubsetTables="$(IgnoreInstalledAssemblySubsetTables)" CandidateAssemblyFiles="@(Content);@(None)" SearchPaths="$(AssemblySearchPaths)" AllowedAssemblyExtensions="$(AllowedReferenceAssemblyFileExtensions)" AllowedRelatedFileExtensions="$(AllowedReferenceRelatedFileExtensions)" TargetProcessorArchitecture="$(ProcessorArchitecture)" AppConfigFile="@(_ResolveAssemblyReferencesApplicationConfigFileForExes)" AutoUnify="$(AutoUnifyAssemblyReferences)" IgnoreVersionForFrameworkReferences="$(IgnoreVersionForFrameworkReferences)" FindDependencies="$(FakesResolveAssemblyReferencesFindDependencies)" FindSatellites="false" FindSerializationAssemblies="false" FindRelatedFiles="$(FakesResolveAssemblyReferencesFindRelatedFiles)" Silent="true" TargetFrameworkVersion="$(TargetFrameworkVersion)" TargetFrameworkMoniker="$(TargetFrameworkMoniker)" TargetFrameworkMonikerDisplayName="$(TargetFrameworkMonikerDisplayName)" TargetedRuntimeVersion="$(TargetedRuntimeVersion)" StateFile="$(FakesResolveAssemblyReferencesStateFile)" InstalledAssemblySubsetTables="@(InstalledAssemblySubsetTables)" TargetFrameworkSubsets="@(_ReferenceInstalledAssemblySubsets)" FullTargetFrameworkSubsetNames="$(FullReferenceAssemblyNames)" FullFrameworkFolders="$(_FullFrameworkReferenceAssemblyPaths)" FullFrameworkAssemblyTables="@(FullFrameworkAssemblyTables)" ProfileName="" LatestTargetFrameworkDirectories="@(LatestTargetFrameworkDirectories)" CopyLocalDependenciesWhenParentReferenceInGac="$(CopyLocalDependenciesWhenParentReferenceInGac)">
10448 <Output TaskParameter="ResolvedFiles" ItemName="FakesResolvedReferencePaths" />
10449 <Output TaskParameter="ResolvedDependencyFiles" ItemName="FakesResolvedReferenceDependencyPaths" />
10450 <Output TaskParameter="RelatedFiles" ItemName="FakesRelatedPaths" />
10451 <Output TaskParameter="SatelliteFiles" ItemName="FakesSatellitePaths" />
10452 <Output TaskParameter="SuggestedRedirects" ItemName="FakesSuggestedRedirects" />
10453 <Output TaskParameter="FilesWritten" ItemName="FileWrites" />
10454 </ResolveAssemblyReference>
10455 </Target>
10456 <!-- Generate fakes assembly files, if outdated. -->
10457 <Target Name="BuildFakesAssemblies" Condition="@(Fakes) != '' AND $(BuildingProject) AND $(FakesUseV2Generation) != 'true'" Inputs="&#xD;&#xA; @(Fakes);&#xD;&#xA; @(FakesReferencePaths);&#xD;&#xA; @(FakesResolvedReferencePaths);&#xD;&#xA; @(FakesResolvedReferenceDependencyPaths);&#xD;&#xA; @(FakesRelatedPaths);&#xD;&#xA; @(FakesSatellitePaths);&#xD;&#xA; @(FakesSuggestedRedirects);&#xD;&#xA; " Outputs="@(Fakes->'$(FakesOutputPath)\%(FileName).Fakes.dll')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10458 <GenerateFakes ContinueOnError="$(FakesContinueOnError)" Verbosity="$(FakesVerbosity)" ForceX86="$(FakesForceX86)" TargetFrameworkVersion="$(TargetFrameworkVersion)" TargetFrameworkMoniker="$(TargetFrameworkMoniker)" TargetRuntimeVersion="$(TargetedRuntimeVersion)" UseFakesV2="$(FakesUseV2Generation)" ReferenceFiles="&#xD;&#xA; @(FakesReferencePaths);&#xD;&#xA; @(FakesResolvedReferencePaths);&#xD;&#xA; @(FakesResolvedReferenceDependencyPaths);" SearchPaths="@(FakesSearchPaths)" CommandLineArguments="$(FakesCommandLineArguments)" OutputPath="$(FakesOutputPath)" IntermediatePath="$(FakesIntermediatePath)" Fakes="@(Fakes)" ToolsPath="$(FakesToolsPath)">
10459 <Output TaskParameter="FakesAssemblies" ItemName="FakesAssemblies" />
10460 <Output TaskParameter="FakesConfigurations" ItemName="FakesConfigurations" />
10461 <Output TaskParameter="FakesMessages" ItemName="FakesMessageFiles" />
10462 </GenerateFakes>
10463 <ReportFakesWarnings MessageFiles="@(FakesMessageFiles)" ContinueOnError="$(FakesContinueOnError)" />
10464 <ItemGroup>
10465 <FileWrites Include="$(FakesIntermediatePath)\**" />
10466 <ReferenceCopyLocalPaths Include="@(FakesConfigurations)" />
10467 </ItemGroup>
10468 <PropertyGroup>
10469 <!-- Append directory where .Fakes assemblies are generated to the end of the assembly search path -->
10470 <AssemblySearchPaths>
10471 $(AssemblySearchPaths);
10472 $(FakesOutputPath)
10473 </AssemblySearchPaths>
10474 </PropertyGroup>
10475 </Target>
10476 <!-- Define New Fakes Generation steps -->
10477 <!-- This occurs after the original RAR, retrieving references from it, instead of using its own RAR.
10478 This solves the problem of missing references in the SDK style projects, as the custom RAR doesn't find them-->
10479 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10480 <GenerateFakesDependsOn>
10481 $(GenerateFakesDependsOn);
10482 BeforeGenerateFakesAssemblies;
10483 GenerateFakesAssemblies;
10484 CopyFakesAssembliesToOutputDir;
10485 </GenerateFakesDependsOn>
10486 </PropertyGroup>
10487 <!--This should not run during design time build, and should only run for SDK-Style projects
10488 As this uses a new Roslyn based implementation that could break behaviour in legacy projects-->
10489 <Target Name="GenerateFakes" Condition="$(BuildingProject) AND $(FakesUseV2Generation) == 'true'" DependsOnTargets="$(GenerateFakesDependsOn)" AfterTargets="ResolveAssemblyReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
10490 <Target Name="BeforeGenerateFakesAssemblies" Condition="$(BuildingProject) AND $(FakesUseV2Generation) == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10491 <ItemGroup>
10492 <!-- Add all present .Fakes files in the contained FakesConfigurationDirectory
10493 The list is appended to for compatibility reasons, and is a list of distinct items.
10494 Include and Exclude are used to deduplicate. -->
10495 <Fakes Include="$(FakesConfigurationDirectory)\*.Fakes" Exclude="@(Fakes)" />
10496 </ItemGroup>
10497 </Target>
10498 <!-- Generate fakes assembly files, if outdated. -->
10499 <Target Name="GenerateFakesAssemblies" Condition="@(Fakes) != '' AND $(BuildingProject) AND $(FakesUseV2Generation) == 'true'" Inputs="&#xD;&#xA; @(Fakes);&#xD;&#xA; @(FakesReferencePaths);&#xD;&#xA; @(_ResolveAssemblyReferenceResolvedFiles);&#xD;&#xA; @(ReferenceDependencyPaths);&#xD;&#xA; @(_ReferenceRelatedPaths);&#xD;&#xA; @(ReferenceSatellitePaths);&#xD;&#xA; @(SuggestedBindingRedirects);&#xD;&#xA; " Outputs="@(Fakes->'$(FakesOutputPath)\%(FileName).Fakes.dll')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10500 <GenerateFakes ContinueOnError="$(FakesContinueOnError)" Verbosity="$(FakesVerbosity)" ForceX86="$(FakesForceX86)" TargetFrameworkVersion="$(TargetFrameworkVersion)" TargetFramework="$(TargetFramework)" TargetFrameworkMoniker="$(TargetFrameworkMoniker)" TargetRuntimeVersion="$(TargetedRuntimeVersion)" UseFakesV2="$(FakesUseV2Generation)" ReferenceFiles="&#xD;&#xA; @(FakesReferencePaths);&#xD;&#xA; @(_ResolveAssemblyReferenceResolvedFiles);&#xD;&#xA; @(ReferenceDependencyPaths);" SearchPaths="@(FakesSearchPaths)" CommandLineArguments="$(FakesCommandLineArguments)" OutputPath="$(FakesOutputPath)" IntermediatePath="$(FakesIntermediatePath)" Fakes="@(Fakes)" ToolsPath="$(FakesToolsPath)">
10501 <Output TaskParameter="FakesAssemblies" ItemName="FakesAssemblies" />
10502 <Output TaskParameter="FakesConfigurations" ItemName="FakesConfigurations" />
10503 <Output TaskParameter="FakesMessages" ItemName="FakesMessageFiles" />
10504 </GenerateFakes>
10505 <ReportFakesWarnings MessageFiles="@(FakesMessageFiles)" ContinueOnError="$(FakesContinueOnError)" />
10506 <ItemGroup>
10507 <FileWrites Include="$(FakesIntermediatePath)\**" />
10508 <ReferenceCopyLocalPaths Include="@(FakesConfigurations)" />
10509 </ItemGroup>
10510 </Target>
10511 <!--Copy Fakes Assemblies to Output Path next to built project.dll for test runs
10512 This is necessary since Fakes V2 generation doesn't add an assembly reference to the csproj-->
10513 <Target Name="CopyFakesAssembliesToOutputDir" Condition="$(FakesUseV2Generation) == 'true' AND Exists('$(FakesOutputPath)')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10514 <ItemGroup>
10515 <!--If this list is created within the Content Include, then link doesn't work as expected
10516 which is why the list needs to be created before being creating Content items-->
10517 <FakesAssembliesToCopy Include="$(FakesOutputPath)\*.dll" />
10518 <Content Include="@(FakesAssembliesToCopy)" Condition="@(FakesAssembliesToCopy) != ''" Link="%(Filename)%(Extension)" CopyToOutputDirectory="PreserveNewest" IsAssembly="true" />
10519 </ItemGroup>
10520 </Target>
10521 <!--
10522 In the new implementation of Fakes, the task runs after RAR, and so the generated fakes assembly references
10523 are not passed on to the CSC task. This target appends to the list of references that the CSC task receives.
10524 -->
10525 <Target Name="AppendGeneratedFakesAssemblyReferences" Condition="$(FakesUseV2Generation) == 'true' AND Exists('$(FakesOutputPath)')" AfterTargets="FindReferenceAssembliesForReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10526 <ItemGroup>
10527 <!--
10528 ReferencePathWithRefAssemblies is the list of references passed into the CSC task.
10529 In cases where fakes assemblies would already exist in the FakesOutputPath, just appending the
10530 assemblies would create duplicates in the list. Include and Exclude are used to deduplicate.
10531 -->
10532 <ReferencePathWithRefAssemblies Include="$(FakesOutputPath)\*.dll" Exclude="@(ReferencePathWithRefAssemblies)" />
10533 </ItemGroup>
10534 </Target>
10535 <!--
10536============================================================================================================================================
10537 </Import>
10538
10539C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Microsoft.Common.targets\ImportAfter\Microsoft.QualityTools.Testing.Fakes.ImportAfter.targets
10540============================================================================================================================================
10541-->
10542 <!--
10543============================================================================================================================================
10544 </Import>
10545============================================================================================================================================
10546-->
10547 <!--
10548============================================================================================================================================
10549 <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.targets\ImportAfter\*" Condition="'$(ImportByWildcardAfterMicrosoftCommonTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.targets\ImportAfter')">
10550
10551C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Microsoft.Common.targets\ImportAfter\Microsoft.Web.ImportAfter.targets
10552============================================================================================================================================
10553-->
10554 <!--
10555***********************************************************************************************
10556Microsoft.Web.ImportAfter.targets
10557
10558WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
10559 created a backup copy. Incorrect changes to this file will make it
10560 impossible to load or build your projects from the command-line or the IDE.
10561
10562Copyright (C) Microsoft Corporation. All rights reserved.
10563***********************************************************************************************
10564-->
10565 <!--<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\Managed.Web\Microsoft.Web.IISSupport.targets" Condition="('$(MvcRazorCompileOnPublish)' != '' or '$(UsingMicrosoftNETSdkWeb)' != '') and Exists('$(MSBuildExtensionsPath)\Microsoft\VisualStudio\Managed.Web\Microsoft.Web.IISSupport.targets')" />-->
10566 <!--
10567============================================================================================================================================
10568 </Import>
10569
10570C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets
10571============================================================================================================================================
10572-->
10573 <!--<Import Project="$(MSBuildUserExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.targets\ImportAfter\*" Condition="'$(ImportUserLocationsByWildcardAfterMicrosoftCommonTargets)' == 'true' and exists('$(MSBuildUserExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.targets\ImportAfter')" />-->
10574 <!--
10575============================================================================================================================================
10576 </Import>
10577
10578C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.Common.targets
10579============================================================================================================================================
10580-->
10581 <!--
10582 Prepare to import project extensions which usually come from packages. Package management systems will create a file at:
10583 $(MSBuildProjectExtensionsPath)\$(MSBuildProjectFile).<SomethingUnique>.targets
10584
10585 Each package management system should use a unique moniker to avoid collisions. It is a wild-card import so the package
10586 management system can write out multiple files but the order of the import is alphabetic because MSBuild sorts the list.
10587 -->
10588 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10589 <ImportProjectExtensionTargets Condition="'$(ImportProjectExtensionTargets)' == ''">true</ImportProjectExtensionTargets>
10590 </PropertyGroup>
10591 <!--<Import Project="$(MSBuildProjectExtensionsPath)$(MSBuildProjectFile).*.targets" Condition="'$(ImportProjectExtensionTargets)' == 'true' and exists('$(MSBuildProjectExtensionsPath)')" />-->
10592 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10593 <ImportDirectoryBuildTargets Condition="'$(ImportDirectoryBuildTargets)' == ''">true</ImportDirectoryBuildTargets>
10594 </PropertyGroup>
10595 <!--
10596 Determine the path to the directory build targets file if the user did not disable $(ImportDirectoryBuildTargets) and
10597 they did not already specify an absolute path to use via $(DirectoryBuildTargetsPath)
10598 -->
10599 <PropertyGroup Condition="'$(ImportDirectoryBuildTargets)' == 'true' and '$(DirectoryBuildTargetsPath)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10600 <_DirectoryBuildTargetsFile Condition="'$(_DirectoryBuildTargetsFile)' == ''">Directory.Build.targets</_DirectoryBuildTargetsFile>
10601 <_DirectoryBuildTargetsBasePath Condition="'$(_DirectoryBuildTargetsBasePath)' == ''">$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), '$(_DirectoryBuildTargetsFile)'))</_DirectoryBuildTargetsBasePath>
10602 <DirectoryBuildTargetsPath Condition="'$(_DirectoryBuildTargetsBasePath)' != '' and '$(_DirectoryBuildTargetsFile)' != ''">$([System.IO.Path]::Combine('$(_DirectoryBuildTargetsBasePath)', '$(_DirectoryBuildTargetsFile)'))</DirectoryBuildTargetsPath>
10603 </PropertyGroup>
10604 <!--
10605============================================================================================================================================
10606 <Import Project="$(DirectoryBuildTargetsPath)" Condition="'$(ImportDirectoryBuildTargets)' == 'true' and exists('$(DirectoryBuildTargetsPath)')">
10607
10608D:\src\wix4\src\test\wix\TestProjects\Directory.Build.targets
10609============================================================================================================================================
10610-->
10611 <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
10612 <!--
10613 This file prevents the import of WiX standard Directory.Build.targets
10614 from the root src directory
10615 -->
10616 <!--
10617============================================================================================================================================
10618 </Import>
10619
10620C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.Common.targets
10621============================================================================================================================================
10622-->
10623 <!--<ImportGroup Condition="'$(MSBuildAssemblyVersion)' == ''">-->
10624 <!--<Import Project="$(MSBuildExtensionsPath)\4.0\Microsoft.NETFramework.props\ImportAfter\*" Condition="'$(ImportByWildcardAfter40MicrosoftNetFrameworkProps)' == 'true' and exists('$(MSBuildExtensionsPath)\4.0\Microsoft.NETFramework.props\ImportAfter')" />-->
10625 <!--<Import Project="$(MSBuildUserExtensionsPath)\4.0\Microsoft.NETFramework.props\ImportAfter\*" Condition="'$(ImportUserLocationsByWildcardAfter40MicrosoftNetFrameworkProps)' == 'true' and exists('$(MSBuildUserExtensionsPath)\4.0\Microsoft.NETFramework.props\ImportAfter')" />-->
10626 <!--</ImportGroup>-->
10627 <!--<ImportGroup Condition="'$(MSBuildAssemblyVersion)' == ''">-->
10628 <!--<Import Project="$(MSBuildExtensionsPath)\4.0\Microsoft.Common.targets\ImportAfter\*" Condition="'$(ImportByWildcardAfter40MicrosoftCommonTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\4.0\Microsoft.Common.targets\ImportAfter')" />-->
10629 <!--<Import Project="$(MSBuildUserExtensionsPath)\4.0\Microsoft.Common.targets\ImportAfter\*" Condition="'$(ImportUserLocationsByWildcardAfter40MicrosoftCommonTargets)' == 'true' and exists('$(MSBuildUserExtensionsPath)\4.0\Microsoft.Common.targets\ImportAfter')" />-->
10630 <!--</ImportGroup>-->
10631 <!-- Fix up FrameworkPathOverride, which is primarily used to determine the location of mscorlib.dll in the
10632 (relatively uncommon) situation where the reference assemblies, in which it's usually found, are not
10633 installed. -->
10634 <PropertyGroup Condition="'$(MSBuildAssemblyVersion)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10635 <FrameworkPathOverride Condition="!Exists('$(FrameworkPathOverride)\mscorlib.dll')">$(MSBuildFrameworkToolsPath)</FrameworkPathOverride>
10636 </PropertyGroup>
10637 <!--
10638============================================================================================================================================
10639 </Import>
10640
10641C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.CSharp.CurrentVersion.targets
10642============================================================================================================================================
10643-->
10644 <!--
10645============================================================================================================================================
10646 <Import Project="$(MSBuildToolsPath)\Microsoft.ServiceModel.targets" Condition="('$(TargetFrameworkVersion)' != 'v2.0' and '$(TargetFrameworkVersion)' != 'v3.0' and '$(TargetFrameworkVersion)' != 'v3.5') and Exists('$(MSBuildToolsPath)\Microsoft.ServiceModel.targets')">
10647
10648C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.ServiceModel.targets
10649============================================================================================================================================
10650-->
10651 <!--
10652 With MSBuild 12, we've changed MSBuildToolsPath to for the first time point to a directory
10653 outside of the .NET Framework. As a result of this, there were several targets files, of which
10654 this was one, that were being referenced as out of MSBuildToolsPath that are now no longer there.
10655
10656 Thus, we are shimming those targets files so that they do still appear in MSBuildToolsPath, so that
10657 consumers of them are not broken, but since the targets files themselves are still part of .NET,
10658 the shim will internally simply redirect to the real copy of the targets file in the .NET Framework.
10659 -->
10660 <!--
10661============================================================================================================================================
10662 <Import Project="$(MSBuildFrameworkToolsPath)\Microsoft.ServiceModel.targets" Condition="Exists('$(MSBuildFrameworkToolsPath)\Microsoft.ServiceModel.targets')">
10663
10664C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.ServiceModel.targets
10665============================================================================================================================================
10666-->
10667 <!--
10668***********************************************************************************************
10669Microsoft.ServiceModel.targets
10670
10671WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
10672 created a backup copy. Incorrect changes to this file will make it
10673 impossible to load or build your projects from the command-line or the IDE.
10674
10675Copyright (C) Microsoft Corporation. All rights reserved.
10676***********************************************************************************************
10677-->
10678 <UsingTask TaskName="Microsoft.Build.Tasks.Xsd.XsdTypeImporterTask" AssemblyName="XsdBuildTask, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
10679 <!-- sub build target, preceeding XsdCodeGen -->
10680 <Target Name="PreXsdCodeGen" BeforeTargets="CoreCompile" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10681 <ItemGroup>
10682 <XsdCodeGenInputXsdFiles Include="@(None)" Condition=" '%(None.Extension)' == '.xsd' and '%(None.Generator)' == '' " />
10683 </ItemGroup>
10684 <PropertyGroup>
10685 <XsdCodeGenPreCondition>False</XsdCodeGenPreCondition>
10686 <XsdCodeGenPreCondition Condition="'$(TargetFrameworkVersion)' != 'v2.0' and '$(TargetFrameworkVersion)' != 'v3.0' and '$(TargetFrameworkVersion)' != 'v3.5' and '$(TargetFrameworkVersion)' != 'v4.0' and ( '$(TargetFrameworkIdentifier)' == '.NETFramework' or '$(TargetFrameworkIdentifier)' == 'Silverlight' ) and '$(XsdCodeGenEnabled)' == 'True' and '@(XsdCodeGenInputXsdFiles)' != '' ">True</XsdCodeGenPreCondition>
10687 </PropertyGroup>
10688 <CallTarget Targets="CleanXsdCodeGen" Condition=" '$(XsdCodeGenPreCondition)' != 'True' " />
10689 </Target>
10690 <!-- main build target -->
10691 <Target Name="XsdCodeGen" DependsOnTargets="ResolveReferences" AfterTargets="PreXsdCodeGen" Condition=" '$(XsdCodeGenPreCondition)' == 'True' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10692 <!-- will show in VS output window, for discoverability -->
10693 <Message Importance="high" Text="Generating code from XSD: InputXsdFiles=@(XsdCodeGenInputXsdFiles)" />
10694 <PropertyGroup>
10695 <!-- assign default values -->
10696 <XsdCodeGenSerializerMode Condition=" '$(XsdCodeGenSerializerMode)' == '' ">XmlSerializer</XsdCodeGenSerializerMode>
10697 <XsdCodeGenReuseTypesFlag Condition=" '$(XsdCodeGenReuseTypesFlag)' == '' ">True</XsdCodeGenReuseTypesFlag>
10698 <XsdCodeGenReuseTypesMode Condition=" '$(XsdCodeGenReuseTypesMode)' == '' ">All</XsdCodeGenReuseTypesMode>
10699 <XsdCodeGenNamespaceMappings Condition=" '$(XsdCodeGenNamespaceMappings)' == '' and '$(Language)' == 'C#' and '$(RootNamespace)' != '' ">*, $(RootNamespace).ContractTypes</XsdCodeGenNamespaceMappings>
10700 <XsdCodeGenNamespaceMappings Condition=" '$(XsdCodeGenNamespaceMappings)' == '' ">*, ContractTypes</XsdCodeGenNamespaceMappings>
10701 <XsdCodeGenCollectionTypes Condition=" '$(XsdCodeGenCollectionTypes)' == '' ">System.Array;System.Collections.Generic.Dictionary`2</XsdCodeGenCollectionTypes>
10702 <XsdCodeGenImportXmlTypes Condition=" '$(XsdCodeGenImportXmlTypes)' == '' ">True</XsdCodeGenImportXmlTypes>
10703 <XsdCodeGenGenerateSerializableTypes Condition=" '$(XsdCodeGenGenerateSerializableTypes)' == '' ">True</XsdCodeGenGenerateSerializableTypes>
10704 <XsdCodeGenGenerateDataTypesOnly Condition=" '$(XsdCodeGenGenerateDataTypesOnly)' == '' ">False</XsdCodeGenGenerateDataTypesOnly>
10705 <XsdCodeGenGenerateInternalTypes Condition=" '$(XsdCodeGenGenerateInternalTypes)' == '' ">False</XsdCodeGenGenerateInternalTypes>
10706 <XsdCodeGenEnableDataBinding Condition=" '$(XsdCodeGenEnableDataBinding)' == '' ">False</XsdCodeGenEnableDataBinding>
10707 <!-- calc dynamic values -->
10708 <XsdCodeGenSupportFx35DataTypes Condition="'$(XsdCodeGenSupportFx35DataTypes)' == '' and '$(TargetFrameworkVersion)' == 'v2.0'">False</XsdCodeGenSupportFx35DataTypes>
10709 <XsdCodeGenSupportFx35DataTypes Condition="'$(XsdCodeGenSupportFx35DataTypes)' == '' and '$(TargetFrameworkVersion)' == 'v3.0'">False</XsdCodeGenSupportFx35DataTypes>
10710 <XsdCodeGenSupportFx35DataTypes Condition="'$(XsdCodeGenSupportFx35DataTypes)' == ''">True</XsdCodeGenSupportFx35DataTypes>
10711 </PropertyGroup>
10712 <!-- calc references for type reusing, resolve their paths from @(ReferencePath) from 'ResolveReferences' build target -->
10713 <ItemGroup>
10714 <XsdCodeGenReferencesResolved Include="@(ReferencePath)" Condition=" '$(XsdCodeGenReuseTypesFlag)' == 'True' and '$(XsdCodeGenReuseTypesMode)' == 'All' " />
10715 </ItemGroup>
10716 <CallTarget Targets="XsdResolveReferencePath" Condition=" '$(XsdCodeGenReuseTypesFlag)' == 'True' and '$(XsdCodeGenReuseTypesMode)' != 'All' ">
10717 <Output ItemName="XsdCodeGenReferencesResolved" TaskParameter="TargetOutputs" />
10718 </CallTarget>
10719 <!-- will show in VS output window, for discoverability -->
10720 <Message Importance="high" Text="Generating code from XSD: References=@(XsdCodeGenReferencesResolved)" />
10721 <!-- set property <MSBuildTargetsVerbose>True</MSBuildTargetsVerbose> to see following messages -->
10722 <Message Text="Generating code from XSD: OutputDirectory=$(IntermediateOutputPath)\XsdGeneratedCode" />
10723 <Message Text="Generating code from XSD: Language=$(Language)" />
10724 <Message Text="Generating code from XSD: NamespaceMappings=$(XsdCodeGenNamespaceMappings)" />
10725 <Message Text="Generating code from XSD: SerializerMode=$(XsdCodeGenSerializerMode)" />
10726 <Message Text="Generating code from XSD: CollectionTypes=$(XsdCodeGenCollectionTypes)" />
10727 <Message Text="Generating code from XSD: ExcludedTypes=$(XsdCodeGenExcludedTypes)" />
10728 <Message Text="Generating code from XSD: ImportXmlTypes=$(XsdCodeGenImportXmlTypes)" />
10729 <Message Text="Generating code from XSD: GenerateSerializableTypes=$(XsdCodeGenGenerateSerializableTypes)" />
10730 <Message Text="Generating code from XSD: GenerateInternalTypes=$(XsdCodeGenGenerateInternalTypes)" />
10731 <Message Text="Generating code from XSD: EnableDataBinding=$(XsdCodeGenEnableDataBinding)" />
10732 <Message Text="Generating code from XSD: SupportFx35DataTypes=$(XsdCodeGenSupportFx35DataTypes)" />
10733 <MakeDir Directories="$(IntermediateOutputPath)\XsdGeneratedCode" />
10734 <ItemGroup>
10735 <XsdCodeGenGeneratedFile Condition=" '@(XsdCodeGenGeneratedFile)' == '' And '$(Language)' == 'C#' " Include="$(IntermediateOutputPath)\XsdGeneratedCode\GeneratedXsdTypes.cs" />
10736 <XsdCodeGenGeneratedFile Condition=" '@(XsdCodeGenGeneratedFile)' == '' And '$(Language)' == 'VB' " Include="$(IntermediateOutputPath)\XsdGeneratedCode\GeneratedXsdTypes.vb" />
10737 </ItemGroup>
10738 <Touch Files="@(XsdCodeGenGeneratedFile)" AlwaysCreate="true" />
10739 <ItemGroup>
10740 <Compile Include="@(XsdCodeGenGeneratedFile)" />
10741 <FileWrites Include="@(XsdCodeGenGeneratedFile)" />
10742 </ItemGroup>
10743 <XsdTypeImporterTask InputXsdFiles="@(XsdCodeGenInputXsdFiles)" References="@(XsdCodeGenReferencesResolved)" OutputDirectory="$(IntermediateOutputPath)\XsdGeneratedCode" Language="$(Language)" NamespaceMappings="$(XsdCodeGenNamespaceMappings.Split(';'))" SerializerMode="$(XsdCodeGenSerializerMode)" CollectionTypes="$(XsdCodeGenCollectionTypes.Split(';'))" ExcludedTypes="$(XsdCodeGenExcludedTypes.Split(';'))" ImportXmlTypes="$(XsdCodeGenImportXmlTypes)" GenerateSerializableTypes="$(XsdCodeGenGenerateSerializableTypes)" GenerateInternalTypes="$(XsdCodeGenGenerateInternalTypes)" EnableDataBinding="$(XsdCodeGenEnableDataBinding)" SupportFx35DataTypes="$(XsdCodeGenSupportFx35DataTypes)" />
10744 <!-- will show in VS output window, for discoverability -->
10745 <Message Importance="high" Text="Generated code from XSD: GeneratedFile=@(XsdCodeGenGeneratedFile)" />
10746 </Target>
10747 <!-- sub build target, called by XsdCodeGen -->
10748 <Target Name="XsdResolveReferencePath" Outputs="@(XsdCodeGenReferencesResolved)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10749 <!-- filter @(ReferencePath) (full file path) by $(XsdCodeGenReferences) (file name without extension) -->
10750 <WriteLinesToFile File="$(IntermediateOutputPath)\XsdCodeGenTempA.txt" Lines="@(ReferencePath)" Overwrite="True" />
10751 <WriteLinesToFile File="$(IntermediateOutputPath)\XsdCodeGenTempB.txt" Lines="$(XsdCodeGenReferences.Split(';'))" Overwrite="True" />
10752 <Delete Files="$(IntermediateOutputPath)\XsdCodeGenTempC.txt" />
10753 <!-- for /f "tokens=*" %%a in ($(IntermediateOutputPath)\XsdCodeGenTempA.txt) do ( for /f "tokens=*" %%b in ($(IntermediateOutputPath)\XsdCodeGenTempB.txt) do ( if /i "%%~na" EQU "%%~b" ( echo %%a>>"$(IntermediateOutputPath)\XsdCodeGenTempC.txt" ) ) ) -->
10754 <Exec Command="for /f %22tokens=*%22 %%a in ($(IntermediateOutputPath)\XsdCodeGenTempA.txt) do ( for /f %22tokens=*%22 %%b in ($(IntermediateOutputPath)\XsdCodeGenTempB.txt) do ( if /i %22%%~na%22 EQU %22%%~b%22 ( echo %%a&gt;&gt;%22$(IntermediateOutputPath)\XsdCodeGenTempC.txt%22 ) ) )" />
10755 <ReadLinesFromFile File="$(IntermediateOutputPath)\XsdCodeGenTempC.txt">
10756 <Output ItemName="XsdCodeGenReferencesResolved" TaskParameter="Lines" />
10757 </ReadLinesFromFile>
10758 <Delete Files="$(IntermediateOutputPath)\XsdCodeGenTempA.txt;$(IntermediateOutputPath)\XsdCodeGenTempB.txt;$(IntermediateOutputPath)\XsdCodeGenTempC.txt" />
10759 </Target>
10760 <!-- clean build target for XsdCodeGen -->
10761 <Target Name="CleanXsdCodeGen" AfterTargets="Clean" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10762 <ItemGroup>
10763 <CleanXsdCodeGenFiles Include="$(IntermediateOutputPath)\XsdGeneratedCode\*" />
10764 </ItemGroup>
10765 <Delete Files="@(CleanXsdCodeGenFiles)" />
10766 </Target>
10767 <!--
10768============================================================================================================================================
10769 </Import>
10770
10771C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.ServiceModel.targets
10772============================================================================================================================================
10773-->
10774 <!--
10775============================================================================================================================================
10776 </Import>
10777
10778C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.CSharp.CurrentVersion.targets
10779============================================================================================================================================
10780-->
10781 <Target Name="_SetTargetFrameworkMonikerAttribute" BeforeTargets="GenerateTargetFrameworkMonikerAttribute" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10782 <PropertyGroup>
10783 <TargetFrameworkMonikerAssemblyAttributeText Condition="'$(TargetFrameworkMoniker)' != '' and '$(TargetingClr2Framework)' != 'true'">
10784// &lt;autogenerated /&gt;
10785using System%3b
10786using System.Reflection%3b
10787[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute("$(TargetFrameworkMoniker)", FrameworkDisplayName = "$(TargetFrameworkMonikerDisplayName)")]
10788 </TargetFrameworkMonikerAssemblyAttributeText>
10789 </PropertyGroup>
10790 </Target>
10791 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10792 <Utf8Output Condition="'$(Utf8Output)' == ''">true</Utf8Output>
10793 <!-- NoCompilerStandardLib maps to the compiler's /nostdlib option. By default we always
10794 want that switch to be passed to the compiler so that either we or the user
10795 provides the references
10796 NoStdLib on the other hand indicates that the user doesn't want standard references
10797 so only if NoStdLib isn't set to true, will we provide the standard references
10798 -->
10799 <NoCompilerStandardLib Condition=" '$(NoCompilerStandardLib)' == '' ">true</NoCompilerStandardLib>
10800 <ErrorEndLocation Condition="'$(BuildingInsideVisualStudio)' == 'true' and '$(ErrorEndLocation)' == ''">true</ErrorEndLocation>
10801 <!-- When building inside VS, by default use the same language for compiler messages as VS itself does. -->
10802 <PreferredUILang Condition="'$(BuildingInsideVisualStudio)' == 'true' and '$(PreferredUILang)' == ''">$([System.Globalization.CultureInfo]::CurrentUICulture.Name)</PreferredUILang>
10803 </PropertyGroup>
10804 <!-- Add any "automatic" compiler references that need to be resolved when NoCompilerStandardLib is set
10805 but the user hasn't told us to not include standard references -->
10806 <ItemGroup Condition=" '$(NoCompilerStandardLib)' == 'true' and '$(NoStdLib)' != 'true' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10807 <!-- Note that unlike VB, C# does not automatically locate System.dll as a "standard library"
10808 instead the reference is always passed from the project. Also, for mscorlib.dll
10809 we need to provide the explicit location in order to avoid resolving from, e.g.,
10810 {CandidateAssemblyFiles}.
10811 -->
10812 <_ExplicitReference Include="$(FrameworkPathOverride)\mscorlib.dll" />
10813 </ItemGroup>
10814 <!--<Import Project="$(CustomAfterMicrosoftCSharpTargets)" Condition="'$(CustomAfterMicrosoftCSharpTargets)' != '' and Exists('$(CustomAfterMicrosoftCSharpTargets)')" />-->
10815 <!--<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.CSharp.targets\ImportAfter\*" Condition="'$(ImportByWildcardAfterMicrosoftCSharpTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.CSharp.targets\ImportAfter')" />-->
10816 <!--<Import Project="$(MSBuildUserExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.CSharp.targets\ImportAfter\*" Condition="'$(ImportUserLocationsByWildcardAfterMicrosoftCSharpTargets)' == 'true' and exists('$(MSBuildUserExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.CSharp.targets\ImportAfter')" />-->
10817 <!--
10818============================================================================================================================================
10819 </Import>
10820
10821C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.CSharp.targets
10822============================================================================================================================================
10823-->
10824 <!--
10825============================================================================================================================================
10826 <Import Project="$(MSBuildToolsPath)\Microsoft.Managed.After.targets">
10827
10828C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.Managed.After.targets
10829============================================================================================================================================
10830-->
10831 <!--
10832***********************************************************************************************
10833WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
10834 created a backup copy. Incorrect changes to this file will make it
10835 impossible to load or build your projects from the command-line or the IDE.
10836
10837This file defines common build logic for all managed languaged: C#, VisualBasic, F#
10838It is imported after the common targets have been imported.
10839
10840Copyright (C) Microsoft Corporation. All rights reserved.
10841***********************************************************************************************
10842-->
10843 <!-- Define crosstargeting for static graph, so it can identify inner and outer build graph nodes -->
10844 <PropertyGroup>
10845 <InnerBuildProperty>TargetFramework</InnerBuildProperty>
10846 <InnerBuildPropertyValues>TargetFrameworks</InnerBuildPropertyValues>
10847 </PropertyGroup>
10848 <PropertyGroup Condition="'$(IsGraphBuild)' == 'true'">
10849 <AddTransitiveProjectReferencesInStaticGraph Condition="'$(AddTransitiveProjectReferencesInStaticGraph)' == '' and '$(UsingMicrosoftNETSdk)' == 'true' and '$(DisableTransitiveProjectReferences)' != 'true'">true</AddTransitiveProjectReferencesInStaticGraph>
10850 </PropertyGroup>
10851 <ItemGroup Condition="'$(IsGraphBuild)' == 'true'">
10852 <!-- WPF projects generate a project with a random name at build time and then build the project via the IBuildEngine callbacks.
10853 Detect WPF, and exclude the generated project from static graph isolation constraint checking.
10854 Escape the item to avoid eager evaluation of the wildcards.
10855 -->
10856 <GraphIsolationExemptReference Condition="'$(UseWPF)' == 'true' or '@(Page)' != '' or '@(ApplicationDefinition)' != '' or '@(XamlPage)' != '' or '@(XamlAppDef)' != ''" Include="$([MSBuild]::Escape('$(MSBuildProjectDirectory)\$(MSBuildProjectName)*_wpftmp$(MSBuildProjectExtension)'))" />
10857 </ItemGroup>
10858 <!--
10859 Properties for extension of ProjectReferenceTargets.
10860 Append any current value which may have been provided in a Directory.Build.props since the intent was likely to append, not prepend.
10861 -->
10862 <PropertyGroup Condition="'$(IsGraphBuild)' == 'true'">
10863 <!-- Empty case is for outer builds which do not import the target files that set BuildProjectReferences -->
10864 <_MainReferenceTarget Condition="'$(BuildProjectReferences)' == '' or '$(BuildProjectReferences)' == 'true'">.projectReferenceTargetsOrDefaultTargets</_MainReferenceTarget>
10865 <_MainReferenceTarget Condition="'$(_MainReferenceTarget)' == ''">GetTargetPath</_MainReferenceTarget>
10866 <ProjectReferenceTargetsForBuildInOuterBuild>GetTargetFrameworks;$(ProjectReferenceTargetsForBuildInOuterBuild)</ProjectReferenceTargetsForBuildInOuterBuild>
10867 <ProjectReferenceTargetsForBuild>$(_MainReferenceTarget);GetNativeManifest;$(_RecursiveTargetForContentCopying);GetTargetFrameworksWithPlatformForSingleTargetFramework;$(ProjectReferenceTargetsForBuild)</ProjectReferenceTargetsForBuild>
10868 <ProjectReferenceTargetsForCleanInOuterBuild>GetTargetFrameworks;$(ProjectReferenceTargetsForCleanInOuterBuild)</ProjectReferenceTargetsForCleanInOuterBuild>
10869 <ProjectReferenceTargetsForClean>Clean;GetTargetFrameworksWithPlatformForSingleTargetFramework;$(ProjectReferenceTargetsForClean)</ProjectReferenceTargetsForClean>
10870 <ProjectReferenceTargetsForRebuildInOuterBuild>$(ProjectReferenceTargetsForCleanInOuterBuild);$(ProjectReferenceTargetsForBuildInOuterBuild);$(ProjectReferenceTargetsForRebuildInOuterBuild)</ProjectReferenceTargetsForRebuildInOuterBuild>
10871 <ProjectReferenceTargetsForRebuild>$(ProjectReferenceTargetsForClean);$(ProjectReferenceTargetsForBuild);$(ProjectReferenceTargetsForRebuild)</ProjectReferenceTargetsForRebuild>
10872 <ProjectReferenceTargetsForPublish>GetCopyToPublishDirectoryItems;$(ProjectReferenceTargetsForPublish)</ProjectReferenceTargetsForPublish>
10873 <ProjectReferenceTargetsForGetCopyToPublishDirectoryItems>GetCopyToPublishDirectoryItems;$(ProjectReferenceTargetsForGetCopyToPublishDirectoryItems)</ProjectReferenceTargetsForGetCopyToPublishDirectoryItems>
10874 </PropertyGroup>
10875 <ItemGroup Condition="'$(IsGraphBuild)' == 'true'">
10876 <ProjectReferenceTargets Include="Build" Targets="$(ProjectReferenceTargetsForBuildInOuterBuild)" Condition=" '$(ProjectReferenceTargetsForBuildInOuterBuild)' != '' " OuterBuild="true" />
10877 <ProjectReferenceTargets Include="Build" Targets="$(ProjectReferenceTargetsForBuild)" Condition=" '$(ProjectReferenceTargetsForBuild)' != '' " />
10878 <ProjectReferenceTargets Include="Clean" Targets="$(ProjectReferenceTargetsForCleanInOuterBuild)" Condition=" '$(ProjectReferenceTargetsForCleanInOuterBuild)' != '' " OuterBuild="true" />
10879 <ProjectReferenceTargets Include="Clean" Targets="$(ProjectReferenceTargetsForClean)" Condition=" '$(ProjectReferenceTargetsForClean)' != '' " />
10880 <ProjectReferenceTargets Include="Rebuild" Targets="$(ProjectReferenceTargetsForRebuildInOuterBuild)" Condition=" '$(ProjectReferenceTargetsForRebuildInOuterBuild)' != '' " />
10881 <ProjectReferenceTargets Include="Rebuild" Targets="$(ProjectReferenceTargetsForRebuild)" Condition=" '$(ProjectReferenceTargetsForRebuild)' != '' " />
10882 <ProjectReferenceTargets Include="Publish" Targets="$(ProjectReferenceTargetsForPublish)" Condition=" '$(ProjectReferenceTargetsForPublish)' != '' " />
10883 <ProjectReferenceTargets Include="GetCopyToPublishDirectoryItems" Targets="$(ProjectReferenceTargetsForGetCopyToPublishDirectoryItems)" Condition=" '$(ProjectReferenceTargetsForGetCopyToPublishDirectoryItems)' != '' " />
10884 </ItemGroup>
10885 <!--
10886============================================================================================================================================
10887 </Import>
10888
10889C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.CSharp.targets
10890============================================================================================================================================
10891-->
10892 <!-- Really should be imported right after Microsoft.NETFramework.props, but because Microsoft.CSharp.targets imports
10893 Microsoft.Common.targets from the current directory rather than using MSBuildToolsPath (which would redirect to our
10894 targets), and Microsoft.Common.targets does likewise with Microsoft.NETFramework.props, we're stuck doing it this
10895 way instead. -->
10896 <!--<ImportGroup Condition="'$(MSBuildAssemblyVersion)' == ''">-->
10897 <!--<Import Project="$(MSBuildExtensionsPath)\4.0\Microsoft.NETFramework.props\ImportAfter\*" Condition="'$(ImportByWildcardAfter40MicrosoftNetFrameworkProps)' == 'true' and exists('$(MSBuildExtensionsPath)\4.0\Microsoft.NETFramework.props\ImportAfter')" />-->
10898 <!--<Import Project="$(MSBuildUserExtensionsPath)\4.0\Microsoft.NETFramework.props\ImportAfter\*" Condition="'$(ImportUserLocationsByWildcardAfter40MicrosoftNetFrameworkProps)' == 'true' and exists('$(MSBuildUserExtensionsPath)\4.0\Microsoft.NETFramework.props\ImportAfter')" />-->
10899 <!--</ImportGroup>-->
10900 <!-- Really should be imported right after Microsoft.Common.targets, but because Microsoft.CSharp.targets imports
10901 Microsoft.Common.targets from the current directory rather than using MSBuildToolsPath (which would redirect to our
10902 targets), we're stuck doing it this way instead. -->
10903 <!--<ImportGroup Condition="'$(MSBuildAssemblyVersion)' == ''">-->
10904 <!--<Import Project="$(MSBuildExtensionsPath)\4.0\Microsoft.Common.targets\ImportAfter\*" Condition="'$(ImportByWildcardAfter40MicrosoftCommonTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\4.0\Microsoft.Common.targets\ImportAfter')" />-->
10905 <!--<Import Project="$(MSBuildUserExtensionsPath)\4.0\Microsoft.Common.targets\ImportAfter\*" Condition="'$(ImportUserLocationsByWildcardAfter40MicrosoftCommonTargets)' == 'true' and exists('$(MSBuildUserExtensionsPath)\4.0\Microsoft.Common.targets\ImportAfter')" />-->
10906 <!--</ImportGroup>-->
10907 <!--<ImportGroup Condition="'$(MSBuildAssemblyVersion)' == ''">-->
10908 <!--<Import Project="$(MSBuildExtensionsPath)\4.0\Microsoft.CSharp.targets\ImportAfter\*" Condition="'$(ImportByWildcardAfter40MicrosoftCSharpTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\4.0\Microsoft.CSharp.targets\ImportAfter')" />-->
10909 <!--<Import Project="$(MSBuildUserExtensionsPath)\4.0\Microsoft.CSharp.targets\ImportAfter\*" Condition="'$(ImportUserLocationsByWildcardAfter40MicrosoftCSharpTargets)' == 'true' and exists('$(MSBuildUserExtensionsPath)\4.0\Microsoft.CSharp.targets\ImportAfter')" />-->
10910 <!--</ImportGroup>-->
10911 <!-- Fix up FrameworkPathOverride, which is primarily used to determine the location of mscorlib.dll in the
10912 (relatively uncommon) situation where the reference assemblies, in which it's usually found, are not
10913 installed. Defined here rather than in Microsoft.Common.targets because the .NET Microsoft.CSharp.targets
10914 imports Microsoft.Common.targets from the current directory. -->
10915 <PropertyGroup Condition="'$(MSBuildAssemblyVersion)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10916 <FrameworkPathOverride Condition="!Exists('$(FrameworkPathOverride)\mscorlib.dll')">$(MSBuildFrameworkToolsPath)</FrameworkPathOverride>
10917 </PropertyGroup>
10918 <!--
10919============================================================================================================================================
10920 </Import>
10921
10922C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\Sdk\Sdk.targets
10923============================================================================================================================================
10924-->
10925 <!--<Import Project="$(MSBuildThisFileDirectory)..\targets\Microsoft.NET.Sdk.CrossTargeting.targets" Condition="'$(IsCrossTargetingBuild)' == 'true'" />-->
10926 <!--
10927============================================================================================================================================
10928 <Import Project="$(MSBuildThisFileDirectory)..\targets\Microsoft.NET.Sdk.targets" Condition="'$(IsCrossTargetingBuild)' != 'true'">
10929
10930C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets
10931============================================================================================================================================
10932-->
10933 <!--
10934***********************************************************************************************
10935Microsoft.NET.Sdk.targets
10936WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
10937 created a backup copy. Incorrect changes to this file will make it
10938 impossible to load or build your projects from the command-line or the IDE.
10939Copyright (c) .NET Foundation. All rights reserved.
10940***********************************************************************************************
10941-->
10942 <!--
10943============================================================================================================================================
10944 <Import Project="Microsoft.NET.Sdk.Common.targets">
10945
10946C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.Common.targets
10947============================================================================================================================================
10948-->
10949 <!--
10950***********************************************************************************************
10951Microsoft.NET.Sdk.Common.targets
10952
10953WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
10954 created a backup copy. Incorrect changes to this file will make it
10955 impossible to load or build your projects from the command-line or the IDE.
10956
10957Copyright (c) .NET Foundation. All rights reserved.
10958***********************************************************************************************
10959-->
10960 <!-- This file is imported by both cross-targeting and inner builds. Set properties that need to be available to both here. -->
10961 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10962 <MicrosoftNETBuildTasksDirectoryRoot>$(MSBuildThisFileDirectory)..\tools\</MicrosoftNETBuildTasksDirectoryRoot>
10963 <MicrosoftNETBuildTasksTFM Condition=" '$(MSBuildRuntimeType)' == 'Core'">net6.0</MicrosoftNETBuildTasksTFM>
10964 <MicrosoftNETBuildTasksTFM Condition=" '$(MicrosoftNETBuildTasksTFM)' == ''">net472</MicrosoftNETBuildTasksTFM>
10965 <MicrosoftNETBuildTasksDirectory>$(MicrosoftNETBuildTasksDirectoryRoot)$(MicrosoftNETBuildTasksTFM)\</MicrosoftNETBuildTasksDirectory>
10966 <MicrosoftNETBuildTasksAssembly>$(MicrosoftNETBuildTasksDirectory)Microsoft.NET.Build.Tasks.dll</MicrosoftNETBuildTasksAssembly>
10967 <!--
10968 Hardcoded list of known implicit packages that are added to project from default SDK targets implicitly.
10969 Should be re-visited when multiple TFM support is added to Dependencies logic.
10970 -->
10971 <DefaultImplicitPackages>Microsoft.NETCore.App;NETStandard.Library</DefaultImplicitPackages>
10972 </PropertyGroup>
10973 <!--
10974 Some versions of Microsoft.NET.Test.Sdk.targets change the OutputType after we've set _IsExecutable and
10975 HasRuntimeOutput default in Microsoft.NET.Sdk.BeforeCommon.targets. Refresh these value here for backwards
10976 compatibilty with that.
10977 -->
10978 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10979 <_IsExecutable Condition="'$(OutputType)' == 'Exe' or '$(OutputType)'=='WinExe'">true</_IsExecutable>
10980 <HasRuntimeOutput Condition="'$(_UsingDefaultForHasRuntimeOutput)' == 'true'">$(_IsExecutable)</HasRuntimeOutput>
10981 </PropertyGroup>
10982 <PropertyGroup Condition="'$(DotnetCliToolTargetFramework)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10983 <!-- Maximum supported target framework for DotnetCliProjectTools is .NET Core 2.2 -->
10984 <DotnetCliToolTargetFramework>netcoreapp2.2</DotnetCliToolTargetFramework>
10985 </PropertyGroup>
10986 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10987 <IncludeBuildOutput Condition=" '$(PackAsTool)' == 'true' ">false</IncludeBuildOutput>
10988 <PackageType Condition=" '$(PackAsTool)' == 'true' ">DotnetTool</PackageType>
10989 <RuntimeIdentifiers Condition=" '$(PackAsTool)' == 'true' ">$(RuntimeIdentifiers);$(PackAsToolShimRuntimeIdentifiers)</RuntimeIdentifiers>
10990 </PropertyGroup>
10991 <PropertyGroup Condition="'$(EnablePreviewFeatures)' == 'true' And '$(IsNetCoreAppTargetingLatestTFM)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
10992 <LangVersion>Preview</LangVersion>
10993 </PropertyGroup>
10994 <UsingTask TaskName="NETSdkError" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
10995 <UsingTask TaskName="NETSdkWarning" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
10996 <UsingTask TaskName="NETSdkInformation" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
10997 <UsingTask TaskName="ShowPreviewMessage" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
10998 <!--
10999============================================================================================================================================
11000 </Import>
11001
11002C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets
11003============================================================================================================================================
11004-->
11005 <!--<ImportGroup>-->
11006 <!--
11007============================================================================================================================================
11008 <Import Project="$(MSBuildThisFileDirectory)Microsoft.PackageDependencyResolution.targets" Condition="Exists('$(MSBuildThisFileDirectory)Microsoft.PackageDependencyResolution.targets') and ('$(Language)' != 'C++' or '$(_EnablePackageReferencesInVCProjects)' == 'true')">
11009
11010C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets
11011============================================================================================================================================
11012-->
11013 <!--
11014***********************************************************************************************
11015Microsoft.PackageDependencyResolution.targets
11016
11017WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
11018 created a backup copy. Incorrect changes to this file will make it
11019 impossible to load or build your projects from the command-line or the IDE.
11020
11021Copyright (c) .NET Foundation. All rights reserved.
11022***********************************************************************************************
11023-->
11024 <!--
11025 *************************************
11026 1. INPUT PROPERTIES
11027 - That configure the PackageDependency targets
11028 *************************************
11029 -->
11030 <!-- General Properties -->
11031 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
11032 <ProjectAssetsFile Condition="'$(ProjectAssetsFile)' == ''">$(MSBuildProjectExtensionsPath)/project.assets.json</ProjectAssetsFile>
11033 <ProjectAssetsFile>$([MSBuild]::NormalizePath($(MSBuildProjectDirectory), $(ProjectAssetsFile)))</ProjectAssetsFile>
11034 <!-- Note that the assets.cache file has contents that are unique to the current TFM and configuration and therefore cannot
11035 be stored in a shared directory next to the assets.json file -->
11036 <ProjectAssetsCacheFile Condition="'$(ProjectAssetsCacheFile)' == ''">$(IntermediateOutputPath)$(MSBuildProjectName).assets.cache</ProjectAssetsCacheFile>
11037 <ProjectAssetsCacheFile>$([MSBuild]::NormalizePath($(MSBuildProjectDirectory), $(ProjectAssetsCacheFile)))</ProjectAssetsCacheFile>
11038 <!-- Don't copy local for netstandard projects. -->
11039 <CopyLocalLockFileAssemblies Condition="'$(CopyLocalLockFileAssemblies)' == '' and&#xD;&#xA; '$(TargetFrameworkIdentifier)' == '.NETStandard'">false</CopyLocalLockFileAssemblies>
11040 <!-- Don't copy local for netcoreapp projects before 3.0 or non-exe and non-component projects. -->
11041 <CopyLocalLockFileAssemblies Condition="'$(CopyLocalLockFileAssemblies)' == '' and&#xD;&#xA; '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and&#xD;&#xA; ('$(_TargetFrameworkVersionWithoutV)' &lt; '3.0' or&#xD;&#xA; ('$(HasRuntimeOutput)' != 'true' and '$(EnableDynamicLoading)' != 'true'))">false</CopyLocalLockFileAssemblies>
11042 <!-- All other project types should copy local. -->
11043 <CopyLocalLockFileAssemblies Condition="'$(CopyLocalLockFileAssemblies)' == ''">true</CopyLocalLockFileAssemblies>
11044 <ContentPreprocessorOutputDirectory Condition="'$(ContentPreprocessorOutputDirectory)' == ''">$(IntermediateOutputPath)NuGet\</ContentPreprocessorOutputDirectory>
11045 <UseTargetPlatformAsNuGetTargetMoniker Condition="'$(UseTargetPlatformAsNuGetTargetMoniker)' == '' AND '$(TargetFrameworkMoniker)' == '.NETCore,Version=v5.0'">true</UseTargetPlatformAsNuGetTargetMoniker>
11046 <NuGetTargetMoniker Condition="'$(NuGetTargetMoniker)' == '' AND '$(UseTargetPlatformAsNuGetTargetMoniker)' == 'true'">$(TargetPlatformIdentifier),Version=v$([System.Version]::Parse('$(TargetPlatformMinVersion)').ToString(3))</NuGetTargetMoniker>
11047 <NuGetTargetMoniker Condition="'$(NuGetTargetMoniker)' == '' AND '$(UseTargetPlatformAsNuGetTargetMoniker)' != 'true'">$(TargetFrameworkMoniker)</NuGetTargetMoniker>
11048 <EmitAssetsLogMessages Condition="'$(EmitAssetsLogMessages)' == ''">true</EmitAssetsLogMessages>
11049 <!-- Setting this property to true restores pre-16.7 behaviour of ResolvePackageDependencies to produce
11050 TargetDefinitions, FileDefinitions and FileDependencies items. -->
11051 <EmitLegacyAssetsFileItems Condition="'$(EmitLegacyAssetsFileItems)' == ''">false</EmitLegacyAssetsFileItems>
11052 <!-- A flag that NuGet packages containing multi-targeted analyzers can check to see if the NuGet package needs to do
11053 its own multi-targeting logic, or if the current SDK targets will pick the assets correctly. -->
11054 <SupportsRoslynComponentVersioning>true</SupportsRoslynComponentVersioning>
11055 </PropertyGroup>
11056 <!-- Target Moniker + RID-->
11057 <PropertyGroup Condition="'$(_NugetTargetMonikerAndRID)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
11058 <_NugetTargetMonikerAndRID Condition="'$(RuntimeIdentifier)' == ''">$(NuGetTargetMoniker)</_NugetTargetMonikerAndRID>
11059 <_NugetTargetMonikerAndRID Condition="'$(RuntimeIdentifier)' != ''">$(NuGetTargetMoniker)/$(RuntimeIdentifier)</_NugetTargetMonikerAndRID>
11060 </PropertyGroup>
11061 <!-- Embed all project.assets.json files into the binary log when building with /bl -->
11062 <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
11063 <EmbedInBinlog Include="$(ProjectAssetsFile)" Condition="$(EmbedProjectAssetsFile) != false AND Exists('$(ProjectAssetsFile)')" />
11064 </ItemGroup>
11065 <!--
11066 *************************************
11067 2. EXTERNAL PROPERTIES and ITEMS
11068 - Override or add to external targets
11069 *************************************
11070 -->
11071 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
11072 <ResolveAssemblyReferencesDependsOn>
11073 $(ResolveAssemblyReferencesDependsOn);
11074 ResolvePackageDependenciesForBuild;
11075 _HandlePackageFileConflicts;
11076 </ResolveAssemblyReferencesDependsOn>
11077 <PrepareResourcesDependsOn>
11078 ResolvePackageDependenciesForBuild;
11079 _HandlePackageFileConflicts;
11080 $(PrepareResourcesDependsOn)
11081 </PrepareResourcesDependsOn>
11082 </PropertyGroup>
11083 <!-- Common tokens used in preprocessed content files -->
11084 <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
11085 <PreprocessorValue Include="rootnamespace">
11086 <Value>$(RootNamespace)</Value>
11087 </PreprocessorValue>
11088 <PreprocessorValue Include="assemblyname">
11089 <Value>$(AssemblyName)</Value>
11090 </PreprocessorValue>
11091 <PreprocessorValue Include="fullpath">
11092 <Value>$(MSBuildProjectDirectory)</Value>
11093 </PreprocessorValue>
11094 <PreprocessorValue Include="outputfilename">
11095 <Value>$(TargetFileName)</Value>
11096 </PreprocessorValue>
11097 <PreprocessorValue Include="filename">
11098 <Value>$(MSBuildProjectFile)</Value>
11099 </PreprocessorValue>
11100 <PreprocessorValue Include="@(NuGetPreprocessorValue)" Exclude="@(PreprocessorValue)" />
11101 </ItemGroup>
11102 <!--
11103 This will prevent RAR from spending time locating dependencies and related files for assemblies
11104 that came from packages. PackageReference should already be promoted to a closure of Reference
11105 items and we are responsible for adding package relates files to CopyLocal items, not RAR. This
11106 is only configurable as a compat opt-out in case skipping the slow RAR code breaks something.
11107 -->
11108 <PropertyGroup Condition="'$(MarkPackageReferencesAsExternallyResolved)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
11109 <MarkPackageReferencesAsExternallyResolved>true</MarkPackageReferencesAsExternallyResolved>
11110 </PropertyGroup>
11111 <!--
11112 *************************************
11113 3. BUILD TARGETS
11114 - Override the Depends-On properties, or the individual targets
11115 *************************************
11116 -->
11117 <!--
11118 ============================================================
11119 ResolvePackageDependenciesForBuild
11120
11121 Populate items for build. This is triggered before target
11122 "AssignProjectConfiguration" to ensure ProjectReference items
11123 are populated before ResolveProjectReferences is run.
11124 ============================================================
11125 -->
11126 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
11127 <ResolvePackageDependenciesForBuildDependsOn>
11128 ResolveLockFileReferences;
11129 ResolveLockFileAnalyzers;
11130 ResolveLockFileCopyLocalFiles;
11131 ResolveRuntimePackAssets;
11132 RunProduceContentAssets;
11133 IncludeTransitiveProjectReferences
11134 </ResolvePackageDependenciesForBuildDependsOn>
11135 </PropertyGroup>
11136 <Target Name="ResolvePackageDependenciesForBuild" Condition=" ('$(DesignTimeBuild)' != 'true' and '$(_CleaningWithoutRebuilding)' != 'true')&#xD;&#xA; Or Exists('$(ProjectAssetsFile)')" BeforeTargets="AssignProjectConfiguration" DependsOnTargets="$(ResolvePackageDependenciesForBuildDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
11137 <!--
11138 *************************************
11139 4. Package Dependency TASK and TARGETS
11140 - Raise the lock file to MSBuild Items and create derived items
11141 *************************************
11142 -->
11143 <!--
11144 ============================================================
11145 RunResolvePackageDependencies
11146
11147 Generate Definitions and Dependencies based on ResolvePackageDependencies task
11148 ============================================================
11149 -->
11150 <UsingTask TaskName="Microsoft.NET.Build.Tasks.ResolvePackageDependencies" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
11151 <UsingTask TaskName="Microsoft.NET.Build.Tasks.CheckForTargetInAssetsFile" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
11152 <UsingTask TaskName="Microsoft.NET.Build.Tasks.JoinItems" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
11153 <UsingTask TaskName="Microsoft.NET.Build.Tasks.ResolvePackageAssets" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
11154 <!-- The condition on this target causes it to be skipped during design-time builds if
11155 the restore operation hasn't run yet. This is to avoid displaying an error in
11156 the Visual Studio error list when a project is created before NuGet restore has
11157 run and created the assets file. -->
11158 <Target Name="RunResolvePackageDependencies" Condition=" '$(DesignTimeBuild)' != 'true' Or Exists('$(ProjectAssetsFile)')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
11159 <!-- Verify that the assets file has a target for the right framework. Otherwise, if we restored for the
11160 wrong framework, we'd end up finding no references to pass to the compiler, and we'd get a ton of
11161 compile errors. -->
11162 <CheckForTargetInAssetsFile AssetsFilePath="$(ProjectAssetsFile)" TargetFramework="$(TargetFramework)" RuntimeIdentifier="$(RuntimeIdentifier)" Condition=" '$(DesignTimeBuild)' != 'true'" />
11163 <ResolvePackageDependencies ProjectPath="$(MSBuildProjectFullPath)" ProjectAssetsFile="$(ProjectAssetsFile)" ProjectLanguage="$(Language)" EmitLegacyAssetsFileItems="$(EmitLegacyAssetsFileItems)" TargetFramework="$(TargetFramework)" ContinueOnError="ErrorAndContinue">
11164 <Output TaskParameter="PackageDefinitions" ItemName="PackageDefinitions" />
11165 <Output TaskParameter="PackageDependencies" ItemName="PackageDependencies" />
11166 <!-- These outputs only produced when EmitLegacyAssetsFileItems is true -->
11167 <Output TaskParameter="TargetDefinitions" ItemName="TargetDefinitions" />
11168 <Output TaskParameter="FileDefinitions" ItemName="FileDefinitions" />
11169 <Output TaskParameter="FileDependencies" ItemName="FileDependencies" />
11170 </ResolvePackageDependencies>
11171 </Target>
11172 <!-- Reads the version of the compiler APIs that are currently being used in order to pick the correct Roslyn components. -->
11173 <Target Name="_ResolveCompilerVersion" Condition="'$(CompilerApiVersion)' == '' And&#xD;&#xA; ('$(Language)' == 'C#' Or '$(Language)' == 'VB') And&#xD;&#xA; Exists('$(RoslynTargetsPath)\Microsoft.Build.Tasks.CodeAnalysis.dll')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
11174 <GetAssemblyIdentity AssemblyFiles="$(RoslynTargetsPath)\Microsoft.Build.Tasks.CodeAnalysis.dll">
11175 <Output TaskParameter="Assemblies" ItemName="_CodeAnalysisIdentity" />
11176 </GetAssemblyIdentity>
11177 <PropertyGroup>
11178 <_RoslynApiVersion>$([System.Version]::Parse(%(_CodeAnalysisIdentity.Version)).Major).$([System.Version]::Parse(%(_CodeAnalysisIdentity.Version)).Minor)</_RoslynApiVersion>
11179 <CompilerApiVersion>roslyn$(_RoslynApiVersion)</CompilerApiVersion>
11180 </PropertyGroup>
11181 </Target>
11182 <Target Name="ResolvePackageAssets" Condition="('$(DesignTimeBuild)' != 'true' Or Exists('$(ProjectAssetsFile)')) And '$(SkipResolvePackageAssets)' != 'true'" DependsOnTargets="ProcessFrameworkReferences;_DefaultMicrosoftNETPlatformLibrary;_ComputePackageReferencePublish;_ResolveCompilerVersion" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
11183 <PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp'&#xD;&#xA; and '$(_TargetFrameworkVersionWithoutV)' &gt;= '3.0'&#xD;&#xA; and '$(UseAppHostFromAssetsFile)' == ''">
11184 <!-- For .NET Core 3.0 and higher, we'll get the apphost from an apphost pack (via ProcessFrameworkReferences) -->
11185 <UseAppHostFromAssetsFile>false</UseAppHostFromAssetsFile>
11186 </PropertyGroup>
11187 <PropertyGroup Condition="'$(UseAppHostFromAssetsFile)' == ''">
11188 <UseAppHostFromAssetsFile>true</UseAppHostFromAssetsFile>
11189 </PropertyGroup>
11190 <PropertyGroup Condition="'$(EnsureRuntimePackageDependencies)' == ''&#xD;&#xA; and '$(TargetFrameworkIdentifier)' == '.NETCoreApp'&#xD;&#xA; and '$(_TargetFrameworkVersionWithoutV)' &lt; '3.0'&#xD;&#xA; and '$(EnsureNETCoreAppRuntime)' != 'false'">
11191 <EnsureRuntimePackageDependencies>true</EnsureRuntimePackageDependencies>
11192 </PropertyGroup>
11193 <!-- Only copy local runtime target assets if targeting netcoreapp -->
11194 <PropertyGroup Condition="'$(CopyLocalRuntimeTargetAssets)' == '' and '$(TargetFrameworkIdentifier)' == '.NETCoreApp'">
11195 <CopyLocalRuntimeTargetAssets>true</CopyLocalRuntimeTargetAssets>
11196 </PropertyGroup>
11197 <ItemGroup>
11198 <_PackAsToolShimRuntimeIdentifiers Condition="@(_PackAsToolShimRuntimeIdentifiers) ==''" Include="$(PackAsToolShimRuntimeIdentifiers)" />
11199 <!-- Pass these packages into the ResolvePackageAssets task to verify that the restored versions of the packages
11200 match the expected version -->
11201 <ExpectedPlatformPackages Include="@(PackageReference)" Condition="'%(Identity)' == 'Microsoft.NETCore.App'" />
11202 <ExpectedPlatformPackages Include="@(PackageReference)" Condition="'%(Identity)' == 'Microsoft.AspNetCore.App'" />
11203 <ExpectedPlatformPackages Include="@(PackageReference)" Condition="'%(Identity)' == 'Microsoft.AspNetCore.All'" />
11204 </ItemGroup>
11205 <ResolvePackageAssets ProjectAssetsFile="$(ProjectAssetsFile)" ProjectAssetsCacheFile="$(ProjectAssetsCacheFile)" ProjectPath="$(MSBuildProjectFullPath)" ProjectLanguage="$(Language)" CompilerApiVersion="$(CompilerApiVersion)" EmitAssetsLogMessages="$(EmitAssetsLogMessages)" TargetFramework="$(TargetFramework)" RuntimeIdentifier="$(RuntimeIdentifier)" PlatformLibraryName="$(MicrosoftNETPlatformLibrary)" RuntimeFrameworks="@(RuntimeFramework)" IsSelfContained="$(SelfContained)" MarkPackageReferencesAsExternallyResolved="$(MarkPackageReferencesAsExternallyResolved)" DisablePackageAssetsCache="$(DisablePackageAssetsCache)" DisableFrameworkAssemblies="$(DisableLockFileFrameworks)" CopyLocalRuntimeTargetAssets="$(CopyLocalRuntimeTargetAssets)" DisableTransitiveProjectReferences="$(DisableTransitiveProjectReferences)" DisableTransitiveFrameworkReferences="$(DisableTransitiveFrameworkReferences)" DotNetAppHostExecutableNameWithoutExtension="$(_DotNetAppHostExecutableNameWithoutExtension)" ShimRuntimeIdentifiers="@(_PackAsToolShimRuntimeIdentifiers)" EnsureRuntimePackageDependencies="$(EnsureRuntimePackageDependencies)" VerifyMatchingImplicitPackageVersion="$(VerifyMatchingImplicitPackageVersion)" ExpectedPlatformPackages="@(ExpectedPlatformPackages)" SatelliteResourceLanguages="$(SatelliteResourceLanguages)" DesignTimeBuild="$(DesignTimeBuild)" ContinueOnError="$(ContinueOnError)" PackageReferences="@(PackageReference)">
11206 <!-- NOTE: items names here are inconsistent because they match prior implementation
11207 (that was spread across different tasks/targets) for backwards compatibility. -->
11208 <Output TaskParameter="Analyzers" ItemName="ResolvedAnalyzers" />
11209 <Output TaskParameter="ApphostsForShimRuntimeIdentifiers" ItemName="_ApphostsForShimRuntimeIdentifiersResolvePackageAssets" />
11210 <Output TaskParameter="ContentFilesToPreprocess" ItemName="_ContentFilesToPreprocess" />
11211 <Output TaskParameter="FrameworkAssemblies" ItemName="ResolvedFrameworkAssemblies" />
11212 <Output TaskParameter="FrameworkReferences" ItemName="TransitiveFrameworkReference" />
11213 <Output TaskParameter="NativeLibraries" ItemName="NativeCopyLocalItems" />
11214 <Output TaskParameter="ResourceAssemblies" ItemName="ResourceCopyLocalItems" />
11215 <Output TaskParameter="RuntimeAssemblies" ItemName="RuntimeCopyLocalItems" />
11216 <Output TaskParameter="RuntimeTargets" ItemName="RuntimeTargetsCopyLocalItems" />
11217 <Output TaskParameter="CompileTimeAssemblies" ItemName="ResolvedCompileFileDefinitions" />
11218 <Output TaskParameter="TransitiveProjectReferences" ItemName="_TransitiveProjectReferences" />
11219 <Output TaskParameter="PackageFolders" ItemName="AssetsFilePackageFolder" />
11220 <Output TaskParameter="PackageDependencies" ItemName="PackageDependencies" />
11221 </ResolvePackageAssets>
11222 <ItemGroup Condition="'$(UseAppHostFromAssetsFile)' == 'true'">
11223 <_NativeRestoredAppHostNETCore Include="@(NativeCopyLocalItems)" Condition="'%(NativeCopyLocalItems.FileName)%(NativeCopyLocalItems.Extension)' == '$(_DotNetAppHostExecutableName)'" />
11224 </ItemGroup>
11225 <ItemGroup Condition="'@(_ApphostsForShimRuntimeIdentifiers)' == ''">
11226 <_ApphostsForShimRuntimeIdentifiers Include="@(_ApphostsForShimRuntimeIdentifiersResolvePackageAssets)" />
11227 </ItemGroup>
11228 </Target>
11229 <!--
11230 ============================================================
11231 ResolvePackageDependenciesDesignTime
11232
11233 Aggregate the dependencies produced by ResolvePackageDependencies to a form
11234 that's consumable by an IDE to display package dependencies.
11235 ============================================================
11236 -->
11237 <UsingTask TaskName="Microsoft.NET.Build.Tasks.PreprocessPackageDependenciesDesignTime" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
11238 <Target Name="ResolvePackageDependenciesDesignTime" Returns="@(_PackageDependenciesDesignTime)" DependsOnTargets="RunResolvePackageDependencies;ResolveAssemblyReferencesDesignTime" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
11239 <PreprocessPackageDependenciesDesignTime PackageDefinitions="@(PackageDefinitions)" PackageDependencies="@(PackageDependencies)" DefaultImplicitPackages="$(DefaultImplicitPackages)" TargetFramework="$(TargetFramework)">
11240 <Output TaskParameter="PackageDependenciesDesignTime" ItemName="_PackageDependenciesDesignTime" />
11241 </PreprocessPackageDependenciesDesignTime>
11242 </Target>
11243 <!--
11244 ============================================================
11245 CollectSDKReferencesDesignTime
11246
11247 Aggregates the sdk specified as project items and implicit
11248 packages references.
11249 ============================================================
11250 -->
11251 <UsingTask TaskName="Microsoft.NET.Build.Tasks.CollectSDKReferencesDesignTime" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
11252 <Target Name="CollectSDKReferencesDesignTime" Returns="@(_SDKReference)" DependsOnTargets="CollectPackageReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
11253 <CollectSDKReferencesDesignTime SdkReferences="@(SdkReference)" PackageReferences="@(PackageReference)" DefaultImplicitPackages="$(DefaultImplicitPackages)">
11254 <Output TaskParameter="SDKReferencesDesignTime" ItemName="_SDKReference" />
11255 </CollectSDKReferencesDesignTime>
11256 </Target>
11257 <!--
11258 ============================================================
11259 CollectResolvedSDKReferencesDesignTime
11260
11261 Aggregates the sdk specified as project items and implicit
11262 packages produced by ResolvePackageDependencies.
11263 ============================================================
11264 -->
11265 <Target Name="CollectResolvedSDKReferencesDesignTime" Returns="@(_ResolvedSDKReference)" DependsOnTargets="ResolveSDKReferencesDesignTime;CollectPackageReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
11266 <CollectSDKReferencesDesignTime SdkReferences="@(ResolvedSdkReference)" PackageReferences="@(PackageReference)" DefaultImplicitPackages="$(DefaultImplicitPackages)">
11267 <Output TaskParameter="SDKReferencesDesignTime" ItemName="_ResolvedSDKReference" />
11268 </CollectSDKReferencesDesignTime>
11269 </Target>
11270 <!--
11271 ============================================================
11272 RunProduceContentAssets
11273
11274 Process content assets by handling preprocessing tokens where necessary, and
11275 produce copy local items, content items grouped by "build action" and file writes
11276 ============================================================
11277 -->
11278 <UsingTask TaskName="Microsoft.NET.Build.Tasks.ProduceContentAssets" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
11279 <Target Name="RunProduceContentAssets" DependsOnTargets="ResolvePackageAssets" Condition="'@(_ContentFilesToPreprocess)' != ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
11280 <ProduceContentAssets ContentFileDependencies="@(_ContentFilesToPreprocess)" ContentPreprocessorValues="@(PreprocessorValue)" ContentPreprocessorOutputDirectory="$(ContentPreprocessorOutputDirectory)" ProduceOnlyPreprocessorFiles="true" ProjectLanguage="$(Language)">
11281 <Output TaskParameter="CopyLocalItems" ItemName="_ContentCopyLocalItems" />
11282 <Output TaskParameter="ProcessedContentItems" ItemName="_ProcessedContentItems" />
11283 <Output TaskParameter="FileWrites" ItemName="FileWrites" />
11284 </ProduceContentAssets>
11285 <!-- The items in _ProcessedContentItems need to go into the appropriately-named item group,
11286 but the names depend upon the items themselves. Split it apart. -->
11287 <CreateItem Include="@(_ProcessedContentItems)" Condition="'@(_ProcessedContentItems)' != ''">
11288 <Output TaskParameter="Include" ItemName="%(_ProcessedContentItems.ProcessedItemType)" />
11289 </CreateItem>
11290 </Target>
11291 <!--
11292 ============================================================
11293 Reference Targets: For populating References based on lock file
11294 - ResolveLockFileReferences
11295 ============================================================
11296 -->
11297 <Target Name="ResolveLockFileReferences" DependsOnTargets="ResolvePackageAssets" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
11298 <ItemGroup Condition="'$(MarkPackageReferencesAsExternallyResolved)' == 'true'">
11299 <!--
11300 Update Reference items with NuGetPackageId metadata to set ExternallyResolved appropriately.
11301 NetStandard.Library adds its assets in targets this way and not in the standard way that
11302 would get ExternallyResolved set in ResolvePackageAssets.
11303 -->
11304 <Reference Condition="'%(Reference.NuGetPackageId)' != ''">
11305 <ExternallyResolved>true</ExternallyResolved>
11306 </Reference>
11307 <!-- Add framework references from NuGet packages here, so that if there is also a matching reference from a NuGet package,
11308 it will be treated the same as a reference from the project file. If there is already an explicit Reference from the
11309 project, use that, in order to preserve metadata (such as aliases). -->
11310 <Reference Include="@(ResolvedFrameworkAssemblies)" Exclude="@(Reference)" />
11311 </ItemGroup>
11312 <!-- If there are any references from a NuGet package that match a simple reference which
11313 would resolve to a framework assembly, then update the NuGet references to use the
11314 simple name as the ItemSpec. This will prevent the VS project system from marking
11315 a reference with a warning. See https://github.com/dotnet/sdk/issues/1499 -->
11316 <JoinItems Left="@(ResolvedCompileFileDefinitions)" LeftKey="FileName" LeftMetadata="*" Right="@(Reference)" RightKey="" RightMetadata="*">
11317 <Output TaskParameter="JoinResult" ItemName="_JoinedResolvedCompileFileDefinitions" />
11318 </JoinItems>
11319 <ItemGroup>
11320 <Reference Remove="@(_JoinedResolvedCompileFileDefinitions)" />
11321 <Reference Include="@(_JoinedResolvedCompileFileDefinitions)" />
11322 </ItemGroup>
11323 <ItemGroup>
11324 <ResolvedCompileFileDefinitionsToAdd Include="@(ResolvedCompileFileDefinitions)" />
11325 <ResolvedCompileFileDefinitionsToAdd Remove="%(_JoinedResolvedCompileFileDefinitions.HintPath)" />
11326 <!-- Add the references we computed -->
11327 <Reference Include="@(ResolvedCompileFileDefinitionsToAdd)" />
11328 </ItemGroup>
11329 </Target>
11330 <!--
11331 ============================================================
11332 ProjectReference Targets: Include transitive project references before
11333 ResolveProjectReferences is called
11334 - IncludeTransitiveProjectReferences
11335 ============================================================
11336 -->
11337 <Target Name="IncludeTransitiveProjectReferences" DependsOnTargets="ResolvePackageAssets" Condition="'$(DisableTransitiveProjectReferences)' != 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
11338 <ItemGroup>
11339 <ProjectReference Include="@(_TransitiveProjectReferences)" />
11340 </ItemGroup>
11341 </Target>
11342 <!--
11343 ============================================================
11344 Analyzer Targets: For populating Analyzers based on lock file
11345 - ResolveLockFileAnalyzers
11346 ============================================================
11347 -->
11348 <Target Name="ResolveLockFileAnalyzers" DependsOnTargets="ResolvePackageAssets" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
11349 <ItemGroup>
11350 <Analyzer Include="@(ResolvedAnalyzers)" />
11351 </ItemGroup>
11352 </Target>
11353 <!--
11354 ============================================================
11355 ResolveLockFileCopyLocalFiles
11356 Resolves the files from the assets file to copy for build and publish.
11357 ============================================================
11358 -->
11359 <Target Name="ResolveLockFileCopyLocalFiles" DependsOnTargets="ResolvePackageAssets;RunProduceContentAssets" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
11360 <ItemGroup>
11361 <_ResolvedCopyLocalBuildAssets Include="@(RuntimeCopyLocalItems)" Condition="'%(RuntimeCopyLocalItems.CopyLocal)' == 'true'" />
11362 <_ResolvedCopyLocalBuildAssets Include="@(ResourceCopyLocalItems)" Condition="'%(ResourceCopyLocalItems.CopyLocal)' == 'true'" />
11363 <!-- Always exclude the apphost executable from copy local assets; we will copy the generated apphost instead. -->
11364 <_ResolvedCopyLocalBuildAssets Include="@(NativeCopyLocalItems)" Exclude="@(_NativeRestoredAppHostNETCore)" Condition="'%(NativeCopyLocalItems.CopyLocal)' == 'true'" />
11365 <_ResolvedCopyLocalBuildAssets Include="@(RuntimeTargetsCopyLocalItems)" Condition="'%(RuntimeTargetsCopyLocalItems.CopyLocal)' == 'true'" />
11366 <ReferenceCopyLocalPaths Include="@(_ContentCopyLocalItems)" />
11367 <ReferenceCopyLocalPaths Include="@(_ResolvedCopyLocalBuildAssets)" Condition="'$(CopyLocalLockFileAssemblies)' == 'true'" />
11368 </ItemGroup>
11369 </Target>
11370 <!-- Override EnsureNETCoreAppRuntime target which is included in Microsoft.NETCore.App NuGet package for
11371 .NET Core 2.x. It no longer works with the .NET 5.0.100 SDK, as the ParentTarget metadata has changed format
11372 but the targets in the NuGet package still expect the old format.
11373
11374 So here we just override that target. We have logic in the SDK that covers this scenario and generates
11375 NETSDK1056. -->
11376 <Target Name="EnsureNETCoreAppRuntime" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
11377 <!--
11378============================================================================================================================================
11379 </Import>
11380
11381C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets
11382============================================================================================================================================
11383-->
11384 <!--<Import Project="$(MSBuildThisFileDirectory)Microsoft.PackageDependencyResolutionStubs.targets" Condition="Exists('$(MSBuildThisFileDirectory)Microsoft.PackageDependencyResolutionStubs.targets') and ('$(Language)' == 'C++' and '$(_EnablePackageReferencesInVCProjects)' != 'true')" />-->
11385 <!--</ImportGroup>-->
11386 <!--
11387============================================================================================================================================
11388 <Import Project="Microsoft.NET.Sdk.DefaultItems.targets">
11389
11390C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.DefaultItems.targets
11391============================================================================================================================================
11392-->
11393 <!--
11394***********************************************************************************************
11395Microsoft.NET.Sdk.DefaultItems.targets
11396
11397WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
11398 created a backup copy. Incorrect changes to this file will make it
11399 impossible to load or build your projects from the command-line or the IDE.
11400
11401Copyright (c) .NET Foundation. All rights reserved.
11402***********************************************************************************************
11403-->
11404 <!-- Don't get the default item globs by default when the flag is not set. -->
11405 <PropertyGroup Condition="'$(UsingNETSdkDefaults)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
11406 <EnableDefaultItems Condition=" '$(EnableDefaultItems)' == '' ">true</EnableDefaultItems>
11407 <EnableDefaultCompileItems Condition=" '$(EnableDefaultCompileItems)' == '' ">true</EnableDefaultCompileItems>
11408 <EnableDefaultEmbeddedResourceItems Condition=" '$(EnableDefaultEmbeddedResourceItems)' == '' ">true</EnableDefaultEmbeddedResourceItems>
11409 <EnableDefaultNoneItems Condition=" '$(EnableDefaultNoneItems)' == '' ">true</EnableDefaultNoneItems>
11410 </PropertyGroup>
11411 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
11412 <!-- Set DefaultItemExcludes property for items that should be excluded from the default Compile, etc items.
11413 This is in the .targets because it needs to come after the final BaseOutputPath has been evaluated. -->
11414 <!-- bin folder, by default -->
11415 <DefaultItemExcludes>$(DefaultItemExcludes);$(BaseOutputPath)/**</DefaultItemExcludes>
11416 <!-- obj folder, by default -->
11417 <DefaultItemExcludes>$(DefaultItemExcludes);$(BaseIntermediateOutputPath)/**</DefaultItemExcludes>
11418 <!-- Various files that should generally always be ignored -->
11419 <DefaultItemExcludes>$(DefaultItemExcludes);**/*.user</DefaultItemExcludes>
11420 <DefaultItemExcludes>$(DefaultItemExcludes);**/*.*proj</DefaultItemExcludes>
11421 <DefaultItemExcludes>$(DefaultItemExcludes);**/*.sln</DefaultItemExcludes>
11422 <DefaultItemExcludes>$(DefaultItemExcludes);**/*.vssscc</DefaultItemExcludes>
11423 <!-- WARNING: This pattern is there to ignore folders such as .git and .vs, but it will also match items included with a
11424 relative path outside the project folder (for example "..\Shared\Shared.cs"). So be sure only to apply it to items
11425 that are in the project folder. -->
11426 <DefaultExcludesInProjectFolder>$(DefaultItemExcludesInProjectFolder);**/.*/**</DefaultExcludesInProjectFolder>
11427 </PropertyGroup>
11428 <!-- Set the default versions of the NETStandard.Library or Microsoft.NETCore.App packages to reference.
11429 The implicit package references themselves are defined in Microsoft.NET.Sdk.props, so that they can be overridden
11430 in the project file. -->
11431 <PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETStandard' And '$(_TargetFrameworkVersionWithoutV)' &lt; '2.1'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
11432 <!-- If targeting .NET Standard 1.x, use version 1.6.1 of the package. This is so that when projects are packed, the dependency on the package produced won't change when
11433 updating to the 2.0 or higher SDK. When targeting .NET Standard 2.0 or higher, the NETStandard.Library reference won't show up as a dependency of the package
11434 produced, so we will roll forward to the latest version. -->
11435 <NETStandardImplicitPackageVersion Condition="'$(NETStandardImplicitPackageVersion)' =='' And '$(_TargetFrameworkVersionWithoutV)' &lt; '2.0'">1.6.1</NETStandardImplicitPackageVersion>
11436 <!-- Default to use the latest stable 2.0.x release. -->
11437 <NETStandardImplicitPackageVersion Condition="'$(NETStandardImplicitPackageVersion)' ==''">2.0.3</NETStandardImplicitPackageVersion>
11438 </PropertyGroup>
11439 <!--
11440============================================================================================================================================
11441 <Import Project="Microsoft.NET.Sdk.DefaultItems.Shared.targets">
11442
11443C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.DefaultItems.Shared.targets
11444============================================================================================================================================
11445-->
11446 <!--
11447***********************************************************************************************
11448Microsoft.NET.Sdk.DefaultItems.Shared.targets: Properties and targets pulled from Microsoft.NET.Sdk.DefaultItems.targets
11449 to be shared by the WAP project system
11450
11451
11452WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
11453 created a backup copy. Incorrect changes to this file will make it
11454 impossible to load or build your projects from the command-line or the IDE.
11455
11456Copyright (c) .NET Foundation. All rights reserved.
11457***********************************************************************************************
11458-->
11459 <!--
11460 Determine the version (including patch) of .NET Core to target.
11461
11462 When targeting .NET Core, the TargetFramework is used to specify the major and minor version of the runtime to use. By default,
11463 the patch version is inferred. The general logic is that self-contained apps will target the latest patch that the SDK
11464 knows about, while framework-dependent apps will target the ".0" patch (and roll forward to the latest patch installed at
11465 runtime).
11466
11467 When targeting .NET Core 1.0 and 1.1, framework-dependent apps use 1.0.5 and 1.1.2, respectively. This is done for compatibility
11468 with previous releases that bumped the self-contained and framework-dependent versions together.
11469
11470 The TargetLatestRuntimePatch property can be set to true or false to explicitly opt in or out of the logic to roll forward
11471 to the latest patch, regardless of whether the app is self-contained or framework-dependent.
11472
11473 The RuntimeFrameworkVersion is where the actual version of the .NET Core runtime to target can be set. If set, it will be
11474 used in the implicit PackageReference to Microsoft.NETCore.App.
11475
11476 The framework version that is written to the runtimeconfig.json file is based on the actual resolved package version
11477 of Microsoft.NETCore.App. This is to allow floating the verion number (ie the RuntimeFrameworkVersion could be set to
11478 "2.0-*".
11479
11480 -->
11481 <PropertyGroup Condition="'$(TargetLatestRuntimePatch)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
11482 <TargetLatestRuntimePatch Condition="'$(SelfContained)' == 'true' ">true</TargetLatestRuntimePatch>
11483 <TargetLatestRuntimePatch Condition="'$(SelfContained)' != 'true' ">false</TargetLatestRuntimePatch>
11484 <_TargetLatestRuntimePatchIsDefault>true</_TargetLatestRuntimePatchIsDefault>
11485 </PropertyGroup>
11486 <PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' And '$(DisableImplicitFrameworkReferences)' != 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
11487 <VerifyMatchingImplicitPackageVersion Condition="'$(VerifyMatchingImplicitPackageVersion)' == ''">true</VerifyMatchingImplicitPackageVersion>
11488 </PropertyGroup>
11489 <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
11490 <!-- Set implicit metadata on ASP.NET package references -->
11491 <PackageReference Update="Microsoft.AspNetCore.App">
11492 <PrivateAssets Condition="'%(PackageReference.Version)' == ''">all</PrivateAssets>
11493 <Publish Condition="'%(PackageReference.Version)' == ''">true</Publish>
11494 </PackageReference>
11495 <PackageReference Update="Microsoft.AspNetCore.All">
11496 <PrivateAssets Condition="'%(PackageReference.Version)' == ''">all</PrivateAssets>
11497 <Publish Condition="'%(PackageReference.Version)' == ''">true</Publish>
11498 </PackageReference>
11499 <!-- Allow RuntimeFrameworkVersion to be used to explicitly specify the version of Microsoft.NETCore.App -->
11500 <PackageReference Update="Microsoft.NETCore.App" Version="$(RuntimeFrameworkVersion)" Condition="'$(RuntimeFrameworkVersion)' != ''" AllowExplicitVersion="true" />
11501 <!-- If implicit PackageReferences are disabled, then don't warn about explicit versions at all -->
11502 <PackageReference Update="@(PackageReference)" Condition="'$(DisableImplicitFrameworkReferences)' == 'true'" AllowExplicitVersion="true" />
11503 </ItemGroup>
11504 <UsingTask TaskName="ApplyImplicitVersions" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
11505 <UsingTask TaskName="CheckIfPackageReferenceShouldBeFrameworkReference" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
11506 <Target Name="UpdateAspNetToFrameworkReference" Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' And '$(_TargetFrameworkVersionWithoutV)' &gt;= '3.0'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
11507 <CheckIfPackageReferenceShouldBeFrameworkReference PackageReferences="@(PackageReference)" FrameworkReferences="@(FrameworkReference)" PackageReferenceToReplace="Microsoft.AspNetCore.All" FrameworkReferenceToUse="Microsoft.AspNetCore.App">
11508 <Output TaskParameter="ShouldRemovePackageReference" PropertyName="_ShouldRemoveAspNetCoreAll" />
11509 </CheckIfPackageReferenceShouldBeFrameworkReference>
11510 <!-- NETSDK1079: The Microsoft.AspNetCore.All package is not supported when targeting .NET Core 3.0 or higher.
11511 A FrameworkReference to Microsoft.AspNetCore.App should be used instead, and will be implicitly included by Microsoft.NET.Sdk.Web. -->
11512 <NETSdkError Condition="'$(_ShouldRemoveAspNetCoreAll)' == 'true'" ResourceName="AspNetCoreAllNotSupported" />
11513 <CheckIfPackageReferenceShouldBeFrameworkReference PackageReferences="@(PackageReference)" FrameworkReferences="@(FrameworkReference)" PackageReferenceToReplace="Microsoft.AspNetCore.App" FrameworkReferenceToUse="Microsoft.AspNetCore.App">
11514 <Output TaskParameter="ShouldRemovePackageReference" PropertyName="_ShouldRemoveAspNetCoreApp" />
11515 <Output TaskParameter="ShouldAddFrameworkReference" PropertyName="_ShouldAddAspNetCoreAppFrameworkReference" />
11516 </CheckIfPackageReferenceShouldBeFrameworkReference>
11517 <ItemGroup>
11518 <PackageReference Remove="Microsoft.AspNetCore.App" Condition="'$(_ShouldRemoveAspNetCoreApp)' == 'true'" />
11519 <FrameworkReference Include="Microsoft.AspNetCore.App" Condition="'$(_ShouldAddAspNetCoreAppFrameworkReference)' == 'true'" />
11520 </ItemGroup>
11521 <!-- NETSDK1080: A PackageReference to Microsoft.AspNetCore.App is not necessary when targeting .NET Core 3.0 or higher.
11522 If Microsoft.NET.Sdk.Web is used, the shared framework will be referenced automatically. Otherwise, the PackageReference
11523 should be replaced with a FrameworkReference. -->
11524 <NETSdkWarning Condition="'$(_ShouldRemoveAspNetCoreApp)' == 'true'" ResourceName="AspNetCoreUsesFrameworkReference" />
11525 </Target>
11526 <Target Name="ApplyImplicitVersions" BeforeTargets="_CheckForInvalidConfigurationAndPlatform;CollectPackageReferences;ProcessFrameworkReferences" DependsOnTargets="UpdateAspNetToFrameworkReference;CheckForImplicitPackageReferenceOverrides" Condition="'@(PackageReference)' != ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
11527 <ApplyImplicitVersions TargetFrameworkVersion="$(_TargetFrameworkVersionWithoutV)" TargetLatestRuntimePatch="$(TargetLatestRuntimePatch)" PackageReferences="@(PackageReference)" ImplicitPackageReferenceVersions="@(ImplicitPackageReferenceVersion)">
11528 <Output TaskParameter="PackageReferencesToUpdate" ItemName="PackageReferenceToUpdate" />
11529 <Output TaskParameter="SdkBuildWarnings" ItemName="SdkBuildWarning" />
11530 </ApplyImplicitVersions>
11531 <ItemGroup>
11532 <PackageReference Remove="@(PackageReferenceToUpdate)" />
11533 <PackageReference Include="@(PackageReferenceToUpdate)" />
11534 </ItemGroup>
11535 <ItemGroup>
11536 <!-- Support using a patch version in the TargetFramework, ie netcoreapp1.1.1
11537 Note that this isn't officially supported, but it worked in the past so
11538 this should prevent breaking it. -->
11539 <PackageReference Condition="'%(PackageReference.Identity)' == 'Microsoft.NETCore.App'">
11540 <Version Condition="'%(PackageReference.Version)' == ''">$(_TargetFrameworkVersionWithoutV)</Version>
11541 </PackageReference>
11542 </ItemGroup>
11543 </Target>
11544 <UsingTask TaskName="CheckForImplicitPackageReferenceOverrides" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
11545 <!-- Remove package references with metadata IsImplicitlyDefined = true, if there are other PackageReference items with the same identity -->
11546 <Target Name="CheckForImplicitPackageReferenceOverrides" BeforeTargets="_CheckForInvalidConfigurationAndPlatform;CollectPackageReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
11547 <PropertyGroup>
11548 <ImplicitPackageReferenceInformationLink>https://aka.ms/sdkimplicitrefs</ImplicitPackageReferenceInformationLink>
11549 </PropertyGroup>
11550 <CheckForImplicitPackageReferenceOverrides PackageReferenceItems="@(PackageReference)" MoreInformationLink="$(ImplicitPackageReferenceInformationLink)">
11551 <Output TaskParameter="ItemsToRemove" ItemName="_PackageReferenceToRemove" />
11552 <Output TaskParameter="ItemsToAdd" ItemName="_PackageReferenceToAdd" />
11553 </CheckForImplicitPackageReferenceOverrides>
11554 <ItemGroup>
11555 <!-- Remove and add the PackageReference items according to the output from the task -->
11556 <PackageReference Remove="@(_PackageReferenceToRemove)" />
11557 <PackageReference Include="@(_PackageReferenceToAdd)" />
11558 <!-- Clear items for other targets to use -->
11559 <_PackageReferenceToAdd Remove="@(_PackageReferenceToAdd)" />
11560 </ItemGroup>
11561 <!-- If any implicit package references were overridden, then don't check that RuntimeFrameworkVersion matches the package version -->
11562 <PropertyGroup Condition="'@(_PackageReferenceToRemove)' != ''">
11563 <VerifyMatchingImplicitPackageVersion>false</VerifyMatchingImplicitPackageVersion>
11564 </PropertyGroup>
11565 </Target>
11566 <UsingTask TaskName="CheckForDuplicateItems" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
11567 <Target Name="CheckForDuplicateItems" BeforeTargets="_CheckForInvalidConfigurationAndPlatform;CoreCompile" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
11568 <PropertyGroup>
11569 <DefaultItemsMoreInformationLink>https://aka.ms/sdkimplicititems</DefaultItemsMoreInformationLink>
11570 </PropertyGroup>
11571 <!-- NOTE for design-time builds we continue on errors and remove the duplicate items.
11572 This is because otherwise there won't be any references to pass to the compiler, leading to design-time
11573 compilation errors for every API that is used in the project. Amidst all the compile errors, it would
11574 be easy to miss the duplicate items error which is the real source of the problem. -->
11575 <CheckForDuplicateItems Items="@(Compile)" ItemName="Compile" DefaultItemsEnabled="$(EnableDefaultItems)" DefaultItemsOfThisTypeEnabled="$(EnableDefaultCompileItems)" PropertyNameToDisableDefaultItems="EnableDefaultCompileItems" MoreInformationLink="$(DefaultItemsMoreInformationLink)" ContinueOnError="$(ContinueOnError)">
11576 <Output TaskParameter="DeduplicatedItems" ItemName="DeduplicatedCompileItems" />
11577 </CheckForDuplicateItems>
11578 <CheckForDuplicateItems Items="@(EmbeddedResource)" ItemName="EmbeddedResource" DefaultItemsEnabled="$(EnableDefaultItems)" DefaultItemsOfThisTypeEnabled="$(EnableDefaultEmbeddedResourceItems)" PropertyNameToDisableDefaultItems="EnableDefaultEmbeddedResourceItems" MoreInformationLink="$(DefaultItemsMoreInformationLink)" ContinueOnError="$(ContinueOnError)">
11579 <Output TaskParameter="DeduplicatedItems" ItemName="DeduplicatedEmbeddedResourceItems" />
11580 </CheckForDuplicateItems>
11581 <!-- Default content items are enabled by the Web SDK, not the .NET SDK, but we check it here for simplicity -->
11582 <CheckForDuplicateItems Items="@(Content)" ItemName="Content" DefaultItemsEnabled="$(EnableDefaultItems)" DefaultItemsOfThisTypeEnabled="$(EnableDefaultContentItems)" PropertyNameToDisableDefaultItems="EnableDefaultContentItems" MoreInformationLink="$(DefaultItemsMoreInformationLink)" ContinueOnError="$(ContinueOnError)">
11583 <Output TaskParameter="DeduplicatedItems" ItemName="DeduplicatedContentItems" />
11584 </CheckForDuplicateItems>
11585 <ItemGroup Condition="'$(DesignTimeBuild)' == 'true' And '@(DeduplicatedCompileItems)' != ''">
11586 <Compile Remove="@(Compile)" />
11587 <Compile Include="@(DeduplicatedCompileItems)" />
11588 </ItemGroup>
11589 <ItemGroup Condition="'$(DesignTimeBuild)' == 'true' And '@(DeduplicatedEmbeddedResourceItems)' != ''">
11590 <EmbeddedResource Remove="@(EmbeddedResource)" />
11591 <EmbeddedResource Include="@(DeduplicatedEmbeddedResourceItems)" />
11592 </ItemGroup>
11593 <ItemGroup Condition="'$(DesignTimeBuild)' == 'true' And '@(DeduplicatedContentItems)' != ''">
11594 <Content Remove="@(Content)" />
11595 <Content Include="@(DeduplicatedContentItems)" />
11596 </ItemGroup>
11597 </Target>
11598 <Target Name="_CheckForTransitiveWindowsDesktopDependencies" AfterTargets="ResolvePackageAssets" Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(_TargetFrameworkVersionWithoutV), '5.0')) and '$(TargetPlatformIdentifier)' != 'Windows' and '@(TransitiveFrameworkReference)' != ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
11599 <ItemGroup>
11600 <_WindowsDesktopTransitiveFrameworkReference Include="@(TransitiveFrameworkReference)" Condition="'%(Identity)' == 'Microsoft.WindowsDesktop.App' Or&#xD;&#xA; '%(Identity)' == 'Microsoft.WindowsDesktop.App.WPF' Or&#xD;&#xA; '%(Identity)' == 'Microsoft.WindowsDesktop.App.WindowsForms'" />
11601 </ItemGroup>
11602 <NetSdkError Condition="'@(_WindowsDesktopTransitiveFrameworkReference)' != ''" ResourceName="WindowsDesktopTargetPlatformMustBeWindows" />
11603 </Target>
11604 <!--
11605============================================================================================================================================
11606 </Import>
11607
11608C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.DefaultItems.targets
11609============================================================================================================================================
11610-->
11611 <!-- This target runs before build but not before restore, to avoid duplicating these warnings
11612 if building with an implicit restore. -->
11613 <Target Name="WarnForExplicitVersions" BeforeTargets="_CheckForInvalidConfigurationAndPlatform" DependsOnTargets="ApplyImplicitVersions" Condition="'@(SdkBuildWarning)' != ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
11614 <NetSdkWarning FormattedText="%(SdkBuildWarning.Identity)" />
11615 </Target>
11616 <!--
11617 Automatically add Link metadata to items of specific types if they are outside of the project folder and don't already have the Link metadata set.
11618 This will cause them to be shown in the Solution Explorer. If an item has LinkBase metadata, the automatic Link will start with that value, and
11619 the items will appear in the Solution Explorer under the folder specified by LinkBase.
11620 -->
11621 <ItemGroup Condition="'$(SetLinkMetadataAutomatically)' != 'false'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
11622 <Compile Update="@(Compile)">
11623 <!-- First, add a trailing slash to the LinkBase metadata if necessary. This allows us to use the same value
11624 for the Link metadata whether or not LinkBase metadata is set: %(LinkBase)%(RecursiveDir)%(Filename)%(Extension)
11625
11626 Note that RecursiveDir already includes the trailing slash.
11627 -->
11628 <LinkBase Condition="'%(LinkBase)' != ''">$([MSBuild]::EnsureTrailingSlash(%(LinkBase)))</LinkBase>
11629 <!-- Set the Link metadata if it's not already set, if the item wasn't defined in a shared project, and the item is outside of the project directory.
11630 Check whether the item was defined in a shared project by checking whether the extension of the defining project was .projitems.
11631 Check whether an item is inside the project directory by seeing if the FullPath starts with EnsureTrailingSlash(MSBuildProjectDirectory)
11632 The FullPath and the MSBuildProjectDirectory will both already be normalized full paths.
11633 The call to [MSBuild]::ValueOrDefault() is there in order to allow calling StartsWith on the FullPath value, since it's
11634 not possible to call a string method on a metadata item directly. The intrinsic ValueOrDefault() will be more
11635 performant than calling String.Copy(), which has been used for this in other contexts, but actually makes a copy
11636 of the string data.
11637 -->
11638 <Link Condition="'%(Link)' == '' And '%(DefiningProjectExtension)' != '.projitems' And !$([MSBuild]::ValueOrDefault('%(FullPath)', '').StartsWith($([MSBuild]::EnsureTrailingSlash($(MSBuildProjectDirectory)))))">%(LinkBase)%(RecursiveDir)%(Filename)%(Extension)</Link>
11639 </Compile>
11640 <AdditionalFiles Update="@(AdditionalFiles)">
11641 <LinkBase Condition="'%(LinkBase)' != ''">$([MSBuild]::EnsureTrailingSlash(%(LinkBase)))</LinkBase>
11642 <Link Condition="'%(Link)' == '' And '%(DefiningProjectExtension)' != '.projitems' And !$([MSBuild]::ValueOrDefault('%(FullPath)', '').StartsWith($([MSBuild]::EnsureTrailingSlash($(MSBuildProjectDirectory)))))">%(LinkBase)%(RecursiveDir)%(Filename)%(Extension)</Link>
11643 </AdditionalFiles>
11644 <None Update="@(None)">
11645 <LinkBase Condition="'%(LinkBase)' != ''">$([MSBuild]::EnsureTrailingSlash(%(LinkBase)))</LinkBase>
11646 <Link Condition="'%(Link)' == '' And '%(DefiningProjectExtension)' != '.projitems' And !$([MSBuild]::ValueOrDefault('%(FullPath)', '').StartsWith($([MSBuild]::EnsureTrailingSlash($(MSBuildProjectDirectory)))))">%(LinkBase)%(RecursiveDir)%(Filename)%(Extension)</Link>
11647 </None>
11648 <Content Update="@(Content)">
11649 <LinkBase Condition="'%(LinkBase)' != ''">$([MSBuild]::EnsureTrailingSlash(%(LinkBase)))</LinkBase>
11650 <Link Condition="'%(Link)' == '' And '%(DefiningProjectExtension)' != '.projitems' And !$([MSBuild]::ValueOrDefault('%(FullPath)', '').StartsWith($([MSBuild]::EnsureTrailingSlash($(MSBuildProjectDirectory)))))">%(LinkBase)%(RecursiveDir)%(Filename)%(Extension)</Link>
11651 </Content>
11652 <EmbeddedResource Update="@(EmbeddedResource)">
11653 <LinkBase Condition="'%(LinkBase)' != ''">$([MSBuild]::EnsureTrailingSlash(%(LinkBase)))</LinkBase>
11654 <Link Condition="'%(Link)' == '' And '%(DefiningProjectExtension)' != '.projitems' And !$([MSBuild]::ValueOrDefault('%(FullPath)', '').StartsWith($([MSBuild]::EnsureTrailingSlash($(MSBuildProjectDirectory)))))">%(LinkBase)%(RecursiveDir)%(Filename)%(Extension)</Link>
11655 </EmbeddedResource>
11656 <Page Update="@(Page)">
11657 <LinkBase Condition="'%(LinkBase)' != ''">$([MSBuild]::EnsureTrailingSlash(%(LinkBase)))</LinkBase>
11658 <Link Condition="'%(Link)' == '' And '%(DefiningProjectExtension)' != '.projitems' And !$([MSBuild]::ValueOrDefault('%(FullPath)', '').StartsWith($([MSBuild]::EnsureTrailingSlash($(MSBuildProjectDirectory)))))">%(LinkBase)%(RecursiveDir)%(Filename)%(Extension)</Link>
11659 </Page>
11660 <Resource Update="@(Resource)">
11661 <LinkBase Condition="'%(LinkBase)' != ''">$([MSBuild]::EnsureTrailingSlash(%(LinkBase)))</LinkBase>
11662 <Link Condition="'%(Link)' == '' And '%(DefiningProjectExtension)' != '.projitems' And !$([MSBuild]::ValueOrDefault('%(FullPath)', '').StartsWith($([MSBuild]::EnsureTrailingSlash($(MSBuildProjectDirectory)))))">%(LinkBase)%(RecursiveDir)%(Filename)%(Extension)</Link>
11663 </Resource>
11664 </ItemGroup>
11665 <Target Name="_CheckForFailedSDKResolution" BeforeTargets="_CheckForInvalidConfigurationAndPlatform" Condition="'$(SdkResolverHonoredGlobalJson)' == 'false'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
11666 <NetSdkError ResourceName="GlobalJsonSDKResolutionFailed" FormatArguments="$(SdkResolverGlobalJsonPath)" />
11667 </Target>
11668 <Target Name="_WarnWhenUsingNET6AndVSPriorTo17" BeforeTargets="_CheckForInvalidConfigurationAndPlatform" Condition="$([MSBuild]::VersionLessThan($(VisualStudioVersion), '17.0')) and '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(_TargetFrameworkVersionWithoutV), '6.0'))" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
11669 <NetSdkWarning ResourceName="Net6NotCompatibleWithDev16" />
11670 </Target>
11671 <Target Name="_CheckForInvalidWindowsDesktopTargetingConfiguration" BeforeTargets="_CheckForInvalidConfigurationAndPlatform" Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(_TargetFrameworkVersionWithoutV), '5.0')) and ('$(UseWindowsForms)' == 'true' or '$(UseWPF)' == 'true')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
11672 <NETSdkError Condition="'$(TargetPlatformIdentifier)' != 'Windows'" ResourceName="WindowsDesktopTargetPlatformMustBeWindows" />
11673 </Target>
11674 <Target Name="_CheckForUnnecessaryWindowsDesktopSDK" BeforeTargets="_CheckForInvalidConfigurationAndPlatform" Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(_TargetFrameworkVersionWithoutV), '5.0')) and '$(_MicrosoftWindowsDesktopSdkImported)' == 'true' and '$(TargetFrameworks)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
11675 <NETSdkWarning ResourceName="UnnecessaryWindowsDesktopSDK" />
11676 </Target>
11677 <!--
11678============================================================================================================================================
11679 </Import>
11680
11681C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets
11682============================================================================================================================================
11683-->
11684 <!--
11685============================================================================================================================================
11686 <Import Project="Microsoft.NET.Sdk.FrameworkReferenceResolution.targets">
11687
11688C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.FrameworkReferenceResolution.targets
11689============================================================================================================================================
11690-->
11691 <!--
11692***********************************************************************************************
11693Microsoft.NET.Sdk.FrameworkReferenceResolution.targets
11694
11695WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
11696 created a backup copy. Incorrect changes to this file will make it
11697 impossible to load or build your projects from the command-line or the IDE.
11698
11699Copyright (c) .NET Foundation. All rights reserved.
11700***********************************************************************************************
11701-->
11702 <PropertyGroup>
11703 <ResolveAssemblyReferencesDependsOn>
11704 $(ResolveAssemblyReferencesDependsOn);
11705 ResolveTargetingPackAssets;
11706 </ResolveAssemblyReferencesDependsOn>
11707 </PropertyGroup>
11708 <UsingTask TaskName="CreateWindowsSdkKnownFrameworkReferences" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
11709 <UsingTask TaskName="CheckForDuplicateFrameworkReferences" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
11710 <UsingTask TaskName="ProcessFrameworkReferences" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
11711 <UsingTask TaskName="ResolveAppHosts" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
11712 <Target Name="AddWindowsSdkKnownFrameworkReferences" Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' And '$(TargetPlatformIdentifier)' == 'Windows'">
11713 <!-- Remove Windows SDK KnownFrameworkReference items from BundledVersions.props (they will eventually be removed, but that is in a different repo so
11714 we can't do the change atomically -->
11715 <ItemGroup>
11716 <KnownFrameworkReference Remove="Microsoft.Windows.SDK.NET.Ref" />
11717 </ItemGroup>
11718 <!-- Generate KnownFrameworkReference items for the Windows SDK pack -->
11719 <CreateWindowsSdkKnownFrameworkReferences UseWindowsSDKPreview="$(UseWindowsSDKPreview)" WindowsSdkPackageVersion="$(WindowsSdkPackageVersion)" TargetFrameworkIdentifier="$(TargetFrameworkIdentifier)" TargetFrameworkVersion="$(_TargetFrameworkVersionWithoutV)" TargetPlatformIdentifier="$(TargetPlatformIdentifier)" TargetPlatformVersion="$(TargetPlatformVersion)" WindowsSdkSupportedTargetPlatformVersions="@(WindowsSdkSupportedTargetPlatformVersion)">
11720 <Output TaskParameter="KnownFrameworkReferences" ItemName="KnownFrameworkReference" />
11721 </CreateWindowsSdkKnownFrameworkReferences>
11722 </Target>
11723 <!--
11724 ============================================================
11725 ProcessFrameworkReferences
11726
11727 Matches FrameworkReference items with KnownFrameworkReference items to determine the corresponding
11728 targeting pack and if necessary the runtime pack. If the packs aren't available in the NetCoreTargetingPackRoot
11729 folder, then generate PackageDownload items in order to download the packs during restore.
11730
11731 Also resolves app host packs in a similar fashion, and checks for duplicate FrameworkReference items.
11732 ============================================================
11733 -->
11734 <Target Name="ProcessFrameworkReferences" BeforeTargets="_CheckForInvalidConfigurationAndPlatform;CollectPackageReferences;CollectPackageDownloads" DependsOnTargets="AddWindowsSdkKnownFrameworkReferences" Condition="'@(FrameworkReference)' != ''">
11735 <CheckForDuplicateFrameworkReferences FrameworkReferences="@(FrameworkReference)" MoreInformationLink="https://aka.ms/sdkimplicitrefs">
11736 <Output TaskParameter="ItemsToRemove" ItemName="_FrameworkReferenceToRemove" />
11737 <Output TaskParameter="ItemsToAdd" ItemName="_FrameworkReferenceToAdd" />
11738 </CheckForDuplicateFrameworkReferences>
11739 <ItemGroup>
11740 <FrameworkReference Remove="@(_FrameworkReferenceToRemove)" />
11741 <FrameworkReference Include="@(_FrameworkReferenceToAdd)" />
11742 </ItemGroup>
11743 <PropertyGroup>
11744 <EnableTargetingPackDownload Condition="'$(EnableTargetingPackDownload)' == ''">true</EnableTargetingPackDownload>
11745 <EnableRuntimePackDownload Condition="'$(EnableRuntimePackDownload)' == ''">true</EnableRuntimePackDownload>
11746 </PropertyGroup>
11747 <PropertyGroup>
11748 <_NuGetRestoreSupported Condition="('$(Language)' == 'C++' and '$(_EnablePackageReferencesInVCProjects)' != 'true')">false</_NuGetRestoreSupported>
11749 </PropertyGroup>
11750 <ItemGroup>
11751 <_PackAsToolShimRuntimeIdentifiers Condition="@(_PackAsToolShimRuntimeIdentifiers) ==''" Include="$(PackAsToolShimRuntimeIdentifiers)" />
11752 </ItemGroup>
11753 <ProcessFrameworkReferences FrameworkReferences="@(FrameworkReference)" KnownFrameworkReferences="@(KnownFrameworkReference)" KnownRuntimePacks="@(KnownRuntimePack)" TargetFrameworkIdentifier="$(TargetFrameworkIdentifier)" TargetFrameworkVersion="$(_TargetFrameworkVersionWithoutV)" TargetPlatformIdentifier="$(TargetPlatformIdentifier)" TargetPlatformVersion="$(TargetPlatformVersion)" TargetingPackRoot="$(NetCoreTargetingPackRoot)" RuntimeGraphPath="$(BundledRuntimeIdentifierGraphFile)" SelfContained="$(SelfContained)" ReadyToRunEnabled="$(PublishReadyToRun)" ReadyToRunUseCrossgen2="$(PublishReadyToRunUseCrossgen2)" RuntimeIdentifier="$(RuntimeIdentifier)" RuntimeIdentifiers="$(RuntimeIdentifiers)" RuntimeFrameworkVersion="$(RuntimeFrameworkVersion)" TargetLatestRuntimePatch="$(TargetLatestRuntimePatch)" TargetLatestRuntimePatchIsDefault="$(_TargetLatestRuntimePatchIsDefault)" EnableTargetingPackDownload="$(EnableTargetingPackDownload)" EnableRuntimePackDownload="$(EnableRuntimePackDownload)" KnownCrossgen2Packs="@(KnownCrossgen2Pack)" NETCoreSdkRuntimeIdentifier="$(NETCoreSdkRuntimeIdentifier)" NetCoreRoot="$(NetCoreRoot)" NETCoreSdkVersion="$(NETCoreSdkVersion)">
11754 <Output TaskParameter="PackagesToDownload" ItemName="_PackageToDownload" />
11755 <Output TaskParameter="RuntimeFrameworks" ItemName="RuntimeFramework" />
11756 <Output TaskParameter="TargetingPacks" ItemName="TargetingPack" />
11757 <Output TaskParameter="RuntimePacks" ItemName="RuntimePack" />
11758 <Output TaskParameter="Crossgen2Packs" ItemName="Crossgen2Pack" />
11759 <Output TaskParameter="UnavailableRuntimePacks" ItemName="UnavailableRuntimePack" />
11760 </ProcessFrameworkReferences>
11761 <PropertyGroup Condition="'$(AppHostRuntimeIdentifier)' == '' And&#xD;&#xA; ('$(UseAppHost)' == 'true' Or '$(EnableComHosting)' == 'true' Or '$(UseIJWHost)' == 'true')">
11762 <AppHostRuntimeIdentifier>$(RuntimeIdentifier)</AppHostRuntimeIdentifier>
11763 <AppHostRuntimeIdentifier Condition="'$(AppHostRuntimeIdentifier)' == ''">$(DefaultAppHostRuntimeIdentifier)</AppHostRuntimeIdentifier>
11764 </PropertyGroup>
11765 <ResolveAppHosts TargetFrameworkIdentifier="$(TargetFrameworkIdentifier)" TargetFrameworkVersion="$(_TargetFrameworkVersionWithoutV)" TargetingPackRoot="$(NetCoreTargetingPackRoot)" AppHostRuntimeIdentifier="$(AppHostRuntimeIdentifier)" OtherRuntimeIdentifiers="$(RuntimeIdentifiers)" RuntimeFrameworkVersion="$(RuntimeFrameworkVersion)" PackAsToolShimRuntimeIdentifiers="@(_PackAsToolShimRuntimeIdentifiers)" DotNetAppHostExecutableNameWithoutExtension="$(_DotNetAppHostExecutableNameWithoutExtension)" DotNetSingleFileHostExecutableNameWithoutExtension="$(_DotNetSingleFileHostExecutableNameWithoutExtension)" DotNetComHostLibraryNameWithoutExtension="$(_DotNetComHostLibraryNameWithoutExtension)" DotNetIjwHostLibraryNameWithoutExtension="$(_DotNetIjwHostLibraryNameWithoutExtension)" RuntimeGraphPath="$(BundledRuntimeIdentifierGraphFile)" KnownAppHostPacks="@(KnownAppHostPack)" NuGetRestoreSupported="$(_NuGetRestoreSupported)" NetCoreTargetingPackRoot="$(NetCoreTargetingPackRoot)">
11766 <Output TaskParameter="PackagesToDownload" ItemName="_PackageToDownload" />
11767 <Output TaskParameter="AppHost" ItemName="AppHostPack" />
11768 <Output TaskParameter="SingleFileHost" ItemName="SingleFileHostPack" />
11769 <Output TaskParameter="ComHost" ItemName="ComHostPack" />
11770 <Output TaskParameter="IjwHost" ItemName="IjwHostPack" />
11771 <Output TaskParameter="PackAsToolShimAppHostPacks" ItemName="PackAsToolShimAppHostPack" />
11772 </ResolveAppHosts>
11773 <PropertyGroup Condition="'$(UsePackageDownload)' == ''">
11774 <UsePackageDownload Condition="'$(MSBuildRuntimeType)' == 'Core'">true</UsePackageDownload>
11775 <UsePackageDownload Condition="'$(PackageDownloadSupported)' == 'true'">true</UsePackageDownload>
11776 <UsePackageDownload Condition="'$(UsePackageDownload)' == ''">false</UsePackageDownload>
11777 </PropertyGroup>
11778 <ItemGroup Condition="'$(UsePackageDownload)' == 'true'">
11779 <PackageDownload Include="@(_PackageToDownload)">
11780 <Version>[%(_PackageToDownload.Version)]</Version>
11781 </PackageDownload>
11782 </ItemGroup>
11783 <ItemGroup Condition="'$(UsePackageDownload)' != 'true'">
11784 <PackageReference Include="@(_PackageToDownload)" IsImplicitlyDefined="true" PrivateAssets="all" ExcludeAssets="all" />
11785 </ItemGroup>
11786 </Target>
11787 <!--
11788 ============================================================
11789 AddTransitiveFrameworkReferences
11790
11791 Adds FrameworkReference items for shared frameworks which weren't directly referenced,
11792 but were referenced transitively via a project or package reference. NuGet writes these
11793 to the assets file, and the ResolvePackageAssets target adds them to the TransitiveFrameworkReference
11794 item. Here, we add them to FrameworkReference if they aren't already referenced.
11795 We add a transitive attribute to the FrameworkReferences so NuGet can filter them out from CollectFrameworkReferences.
11796 ============================================================
11797 -->
11798 <Target Name="AddTransitiveFrameworkReferences" AfterTargets="ResolvePackageAssets" Condition="'@(TransitiveFrameworkReference)' != ''">
11799 <ItemGroup>
11800 <FrameworkReference Include="@(TransitiveFrameworkReference)" Exclude="@(FrameworkReference)" IsTransitiveFrameworkReference="true" />
11801 </ItemGroup>
11802 </Target>
11803 <UsingTask TaskName="ResolveFrameworkReferences" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
11804 <!--
11805 ============================================================
11806 ResolveFrameworkReferences
11807
11808 Resolves paths to various FrameworkReference-related items (targeting packs, runtime packs,
11809 app host packs). Some of these may already have had the path set if they were in the
11810 NetCoreTargetingPackRoot folder. Others which were downloaded as NuGet packages will
11811 need to have the path set here.
11812 ============================================================
11813 -->
11814 <Target Name="ResolveFrameworkReferences" DependsOnTargets="ProcessFrameworkReferences;ResolvePackageAssets" Condition="'@(FrameworkReference)' != ''" Returns="@(ResolvedFrameworkReference)">
11815 <GetPackageDirectory Items="@(TargetingPack)" PackageFolders="@(AssetsFilePackageFolder)">
11816 <Output TaskParameter="Output" ItemName="ResolvedTargetingPack" />
11817 </GetPackageDirectory>
11818 <ItemGroup>
11819 <ResolvedTargetingPack Condition="'%(ResolvedTargetingPack.Path)' == '' and '%(ResolvedTargetingPack.PackageDirectory)' != ''">
11820 <Path>%(ResolvedTargetingPack.PackageDirectory)</Path>
11821 </ResolvedTargetingPack>
11822 </ItemGroup>
11823 <GetPackageDirectory Items="@(AppHostPack)" PackageFolders="@(AssetsFilePackageFolder)">
11824 <Output TaskParameter="Output" ItemName="ResolvedAppHostPack" />
11825 </GetPackageDirectory>
11826 <GetPackageDirectory Items="@(SingleFileHostPack)" PackageFolders="@(AssetsFilePackageFolder)">
11827 <Output TaskParameter="Output" ItemName="ResolvedSingleFileHostPack" />
11828 </GetPackageDirectory>
11829 <GetPackageDirectory Items="@(Crossgen2Pack)" PackageFolders="@(AssetsFilePackageFolder)">
11830 <Output TaskParameter="Output" ItemName="ResolvedCrossgen2Pack" />
11831 </GetPackageDirectory>
11832 <GetPackageDirectory Items="@(PackAsToolShimAppHostPack)" PackageFolders="@(AssetsFilePackageFolder)">
11833 <Output TaskParameter="Output" ItemName="_ApphostsForShimRuntimeIdentifiersGetPackageDirectory" />
11834 </GetPackageDirectory>
11835 <GetPackageDirectory Items="@(ComHostPack)" PackageFolders="@(AssetsFilePackageFolder)">
11836 <Output TaskParameter="Output" ItemName="ResolvedComHostPack" />
11837 </GetPackageDirectory>
11838 <GetPackageDirectory Items="@(IjwHostPack)" PackageFolders="@(AssetsFilePackageFolder)">
11839 <Output TaskParameter="Output" ItemName="ResolvedIjwHostPack" />
11840 </GetPackageDirectory>
11841 <ItemGroup>
11842 <_ApphostsForShimRuntimeIdentifiers Include="%(_ApphostsForShimRuntimeIdentifiersGetPackageDirectory.PackageDirectory)\%(_ApphostsForShimRuntimeIdentifiersGetPackageDirectory.PathInPackage)">
11843 <RuntimeIdentifier>%(_ApphostsForShimRuntimeIdentifiersGetPackageDirectory.RuntimeIdentifier)</RuntimeIdentifier>
11844 </_ApphostsForShimRuntimeIdentifiers>
11845 </ItemGroup>
11846 <ItemGroup>
11847 <ResolvedAppHostPack Condition="'%(ResolvedAppHostPack.Path)' == '' and '%(ResolvedAppHostPack.PackageDirectory)' != ''">
11848 <Path>%(ResolvedAppHostPack.PackageDirectory)\%(ResolvedAppHostPack.PathInPackage)</Path>
11849 </ResolvedAppHostPack>
11850 </ItemGroup>
11851 <PropertyGroup Condition="'@(ResolvedAppHostPack)' != '' And '$(AppHostSourcePath)' == ''">
11852 <AppHostSourcePath>@(ResolvedAppHostPack->'%(Path)')</AppHostSourcePath>
11853 </PropertyGroup>
11854 <ItemGroup>
11855 <ResolvedSingleFileHostPack Condition="'%(ResolvedSingleFileHostPack.Path)' == '' and '%(ResolvedSingleFileHostPack.PackageDirectory)' != ''">
11856 <Path>%(ResolvedSingleFileHostPack.PackageDirectory)\%(ResolvedSingleFileHostPack.PathInPackage)</Path>
11857 </ResolvedSingleFileHostPack>
11858 </ItemGroup>
11859 <PropertyGroup Condition="'@(ResolvedSingleFileHostPack)' != '' And '$(SingleFileHostSourcePath)' == ''">
11860 <SingleFileHostSourcePath>@(ResolvedSingleFileHostPack->'%(Path)')</SingleFileHostSourcePath>
11861 </PropertyGroup>
11862 <ItemGroup>
11863 <ResolvedComHostPack Condition="'%(ResolvedComHostPack.Path)' == '' and '%(ResolvedComHostPack.PackageDirectory)' != ''">
11864 <Path>%(ResolvedComHostPack.PackageDirectory)\%(ResolvedComHostPack.PathInPackage)</Path>
11865 </ResolvedComHostPack>
11866 </ItemGroup>
11867 <PropertyGroup Condition="'@(ResolvedComHostPack)' != '' And '$(ComHostSourcePath)' == ''">
11868 <ComHostSourcePath>@(ResolvedComHostPack->'%(Path)')</ComHostSourcePath>
11869 </PropertyGroup>
11870 <ItemGroup>
11871 <ResolvedIjwHostPack Condition="'%(ResolvedIjwHostPack.Path)' == '' and '%(ResolvedIjwHostPack.PackageDirectory)' != ''">
11872 <Path>%(ResolvedIjwHostPack.PackageDirectory)\%(ResolvedIjwHostPack.PathInPackage)</Path>
11873 </ResolvedIjwHostPack>
11874 </ItemGroup>
11875 <PropertyGroup Condition="'@(ResolvedIjwHostPack)' != '' And '$(IjwHostSourcePath)' == ''">
11876 <IjwHostSourcePath>@(ResolvedIjwHostPack->'%(Path)')</IjwHostSourcePath>
11877 </PropertyGroup>
11878 <GetPackageDirectory Items="@(RuntimePack)" PackageFolders="@(AssetsFilePackageFolder)">
11879 <Output TaskParameter="Output" ItemName="ResolvedRuntimePack" />
11880 </GetPackageDirectory>
11881 <ResolveFrameworkReferences FrameworkReferences="@(FrameworkReference)" ResolvedTargetingPacks="@(ResolvedTargetingPack)" ResolvedRuntimePacks="@(ResolvedRuntimePack)">
11882 <Output TaskParameter="ResolvedFrameworkReferences" ItemName="ResolvedFrameworkReference" />
11883 </ResolveFrameworkReferences>
11884 </Target>
11885 <UsingTask TaskName="GetPackageDirectory" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
11886 <UsingTask TaskName="ResolveTargetingPackAssets" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
11887 <!--
11888 ============================================================
11889 ResolveTargetingPackAssets
11890
11891 Resolve assets (primarily references) from targeting packs.
11892 ============================================================
11893 -->
11894 <Target Name="ResolveTargetingPackAssets" DependsOnTargets="ResolveFrameworkReferences" Condition="'@(FrameworkReference)' != ''">
11895 <!-- For design-time builds, don't generate an error if a targeting pack isn't available (ie because it hasn't been restored yet) -->
11896 <PropertyGroup Condition="'$(GenerateErrorForMissingTargetingPacks)' == ''">
11897 <GenerateErrorForMissingTargetingPacks>true</GenerateErrorForMissingTargetingPacks>
11898 <GenerateErrorForMissingTargetingPacks Condition="'$(DesignTimeBuild)' == 'true'">false</GenerateErrorForMissingTargetingPacks>
11899 </PropertyGroup>
11900 <ResolveTargetingPackAssets FrameworkReferences="@(FrameworkReference)" ProjectLanguage="$(Language)" ResolvedTargetingPacks="@(ResolvedTargetingPack)" RuntimeFrameworks="@(RuntimeFramework)" GenerateErrorForMissingTargetingPacks="$(GenerateErrorForMissingTargetingPacks)" NuGetRestoreSupported="$(_NuGetRestoreSupported)" NetCoreTargetingPackRoot="$(NetCoreTargetingPackRoot)">
11901 <Output TaskParameter="ReferencesToAdd" ItemName="Reference" />
11902 <Output TaskParameter="AnalyzersToAdd" ItemName="Analyzer" />
11903 <Output TaskParameter="PlatformManifests" ItemName="PlatformManifestsFromTargetingPacks" />
11904 <Output TaskParameter="PackageConflictPreferredPackages" PropertyName="PackageConflictPreferredPackages" />
11905 <Output TaskParameter="PackageConflictOverrides" ItemName="PackageConflictOverrides" />
11906 <Output TaskParameter="UsedRuntimeFrameworks" ItemName="_UsedRuntimeFramework" />
11907 </ResolveTargetingPackAssets>
11908 <PropertyGroup>
11909 <!-- Unescape this semicolon-delimited ordered list so that it's passed as a list to targets
11910 that consume it. -->
11911 <PackageConflictPreferredPackages>$([MSBuild]::Unescape($(PackageConflictPreferredPackages)))</PackageConflictPreferredPackages>
11912 </PropertyGroup>
11913 <ItemGroup Condition="'$(RuntimeIdentifier)' == '' or '$(SelfContained)' != 'true'">
11914 <PackageConflictPlatformManifests Include="@(PlatformManifestsFromTargetingPacks)" />
11915 </ItemGroup>
11916 <ItemGroup>
11917 <RuntimeFramework Remove="@(RuntimeFramework)" />
11918 <RuntimeFramework Include="@(_UsedRuntimeFramework)" />
11919 </ItemGroup>
11920 </Target>
11921 <UsingTask TaskName="ResolveRuntimePackAssets" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
11922 <!--
11923 ============================================================
11924 IncludeTargetingPackReference
11925
11926 Add package reference for required targeting pack if necessary
11927 ============================================================
11928 -->
11929 <Target Name="IncludeTargetingPackReference" BeforeTargets="_CheckForInvalidConfigurationAndPlatform;CollectPackageReferences;CheckForImplicitPackageReferenceOverrides" Condition="'$(TargetFrameworkMoniker)' != '' and '$(TargetFrameworkIdentifier)' == '.NETFramework' and '$(AutomaticallyUseReferenceAssemblyPackages)' == 'true'">
11930 <GetReferenceAssemblyPaths TargetFrameworkMoniker="$(TargetFrameworkMoniker)" RootPath="$(TargetFrameworkRootPath)" TargetFrameworkFallbackSearchPaths="$(TargetFrameworkFallbackSearchPaths)" BypassFrameworkInstallChecks="true" SuppressNotFoundError="true">
11931 <Output TaskParameter="FullFrameworkReferenceAssemblyPaths" PropertyName="_FullFrameworkReferenceAssemblyPaths" />
11932 </GetReferenceAssemblyPaths>
11933 <ItemGroup>
11934 <_ExistingReferenceAssembliesPackageReference Include="@(PackageReference)" Condition="'%(PackageReference.Identity)' == 'Microsoft.NETFramework.ReferenceAssemblies'" />
11935 <PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="$(MicrosoftNETFrameworkReferenceAssembliesLatestPackageVersion)" IsImplicitlyDefined="true" PrivateAssets="All" Condition="'$(_FullFrameworkReferenceAssemblyPaths)' == '' and '@(_ExistingReferenceAssembliesPackageReference)' == ''" />
11936 </ItemGroup>
11937 </Target>
11938 <!--
11939 ============================================================
11940 ResolveRuntimePackAssets
11941
11942 Resolve assets from runtime packs.
11943 ============================================================
11944 -->
11945 <Target Name="ResolveRuntimePackAssets" DependsOnTargets="ResolveFrameworkReferences" Condition="'@(RuntimePack)' != ''">
11946 <ResolveRuntimePackAssets FrameworkReferences="@(FrameworkReference)" ResolvedRuntimePacks="@(ResolvedRuntimePack)" UnavailableRuntimePacks="@(UnavailableRuntimePack)" SatelliteResourceLanguages="$(SatelliteResourceLanguages)" DesignTimeBuild="$(DesignTimeBuild)">
11947 <Output TaskParameter="RuntimePackAssets" ItemName="RuntimePackAsset" />
11948 </ResolveRuntimePackAssets>
11949 <ItemGroup>
11950 <ReferenceCopyLocalPaths Include="@(RuntimePackAsset)" Condition="'$(CopyLocalLockFileAssemblies)' == 'true' and ('$(SelfContained)' == 'true' or '%(RuntimePackAsset.RuntimePackAlwaysCopyLocal)' == 'true') and '%(RuntimePackAsset.AssetType)' != 'pgodata'" />
11951 </ItemGroup>
11952 </Target>
11953 <!--
11954 Adds metadata so the SDK will generate the UserSecretsIdAttribute.
11955
11956 This is associated with ASP.NET Core, but may be used in projects that don't use the Web SDK (especially test projects).
11957 So it is in the base .NET SDK. (It used to be in the Microsoft.AspNetCore.App package, but now that that's a targeting
11958 pack we don't support importing build logic from it directly).
11959
11960 If GeneratedUserSecretsAttributeFile is set, that means Microsoft.Extensions.Configuration.UserSecrets 2.1
11961 or earlier was referenced as a package. This didn't use the AssemblyAttribute item group, so we cannot
11962 avoid duplicate AssemblyAttribute items without skipping this target altogether..
11963 -->
11964 <Target Name="_GetUserSecretsAssemblyAttribute" BeforeTargets="GetAssemblyAttributes" Condition=" '$(UserSecretsId)' != '' AND '$(GenerateUserSecretsAttribute)' != 'false' AND '$(GeneratedUserSecretsAttributeFile)' == '' ">
11965 <!--
11966 If the Microsoft.Extensions.Configuration.UserSecrets package 2.2 or higher is referenced directly,
11967 it will also add an AssemblyAttribute item. Since this attribute only allows one per assembly, do not
11968 duplicate the item.
11969
11970 Also don't add the attribute if there is neither a Microsoft.AspNetCore.App FrameworkReference nor a
11971 Microsoft.Extensions.Configuration.UserSecrets PackageReference, in order to preserve 2.x SDK behavior
11972 where projects would successfully build if they define the UserSecretsId property but don't reference
11973 the corresponding API.
11974
11975 -->
11976 <ItemGroup Condition=" @(AssemblyAttribute-&gt;WithMetadataValue('Identity', 'Microsoft.Extensions.Configuration.UserSecrets.UserSecretsIdAttribute')-&gt;Count()) == 0 And&#xD;&#xA; (@(FrameworkReference-&gt;WithMetadataValue('Identity', 'Microsoft.AspNetCore.App')-&gt;Count()) != 0 Or&#xD;&#xA; @(PackageReference-&gt;WithMetadataValue('Identity', 'Microsoft.Extensions.Configuration.UserSecrets')-&gt;Count()) != 0)">
11977 <AssemblyAttribute Include="Microsoft.Extensions.Configuration.UserSecrets.UserSecretsIdAttribute">
11978 <_Parameter1>$(UserSecretsId.Trim())</_Parameter1>
11979 </AssemblyAttribute>
11980 </ItemGroup>
11981 </Target>
11982 <!--
11983============================================================================================================================================
11984 </Import>
11985
11986C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets
11987============================================================================================================================================
11988-->
11989 <UsingTask TaskName="GenerateDepsFile" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
11990 <UsingTask TaskName="GenerateRuntimeConfigurationFiles" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
11991 <UsingTask TaskName="GetAssemblyVersion" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
11992 <UsingTask TaskName="GenerateSatelliteAssemblies" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
11993 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
11994 <DisableStandardFrameworkResolution Condition="'$(DisableStandardFrameworkResolution)' == ''">$(_IsNETCoreOrNETStandard)</DisableStandardFrameworkResolution>
11995 </PropertyGroup>
11996 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
11997 <EnableDynamicLoading Condition="'$(EnableDynamicLoading)' == '' and '$(EnableComHosting)' == 'true'">true</EnableDynamicLoading>
11998 <GenerateRuntimeConfigurationFiles Condition=" '$(GenerateRuntimeConfigurationFiles)' == '' and '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and ('$(HasRuntimeOutput)' == 'true' or '$(EnableComHosting)' == 'true' or '$(EnableDynamicLoading)' == 'true') ">true</GenerateRuntimeConfigurationFiles>
11999 <AlwaysIncludeCoreFrameworkInRuntimeConfig Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionLessThan('$(TargetFrameworkVersion)', '6.0'))">false</AlwaysIncludeCoreFrameworkInRuntimeConfig>
12000 <AlwaysIncludeCoreFrameworkInRuntimeConfig Condition="'$(AlwaysIncludeCoreFrameworkInRuntimeConfig)' == ''">true</AlwaysIncludeCoreFrameworkInRuntimeConfig>
12001 <UserRuntimeConfig Condition=" '$(UserRuntimeConfig)' == '' ">$(MSBuildProjectDirectory)/runtimeconfig.template.json</UserRuntimeConfig>
12002 <GenerateSatelliteAssembliesForCore Condition=" '$(GenerateSatelliteAssembliesForCore)' == '' and '$(MSBuildRuntimeType)' == 'Core' ">true</GenerateSatelliteAssembliesForCore>
12003 <ComputeNETCoreBuildOutputFiles Condition=" '$(ComputeNETCoreBuildOutputFiles)' == '' and '$(TargetFrameworkIdentifier)' == '.NETCoreApp'">true</ComputeNETCoreBuildOutputFiles>
12004 <_GenerateRuntimeConfigurationPropertyInputsCache Condition="'$(_GenerateRuntimeConfigurationPropertyInputsCache)' == ''">$(IntermediateOutputPath)$(MSBuildProjectName).genruntimeconfig.cache</_GenerateRuntimeConfigurationPropertyInputsCache>
12005 <_GenerateRuntimeConfigurationPropertyInputsCache>$([MSBuild]::NormalizePath($(MSBuildProjectDirectory), $(_GenerateRuntimeConfigurationPropertyInputsCache)))</_GenerateRuntimeConfigurationPropertyInputsCache>
12006 </PropertyGroup>
12007 <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12008 <GenerateRuntimeConfigurationFilesInputs Include="$(ProjectAssetsFile)" />
12009 <GenerateRuntimeConfigurationFilesInputs Include="$(ProjectAssetsCacheFile)" />
12010 <GenerateRuntimeConfigurationFilesInputs Include="$(UserRuntimeConfig)" Condition=" Exists($(UserRuntimeConfig)) " />
12011 </ItemGroup>
12012 <PropertyGroup Condition="'$(GenerateRuntimeConfigDevFile)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12013 <GenerateRuntimeConfigDevFile>true</GenerateRuntimeConfigDevFile>
12014 <!-- Post-net6.0, stop generating *.runtimeconfig.dev.json files to reduce probing paths. -->
12015 <!-- https://github.com/dotnet/sdk/issues/16818 -->
12016 <GenerateRuntimeConfigDevFile Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), '6.0'))">false</GenerateRuntimeConfigDevFile>
12017 </PropertyGroup>
12018 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12019 <ProjectDepsFileName Condition="'$(ProjectDepsFileName)' == ''">$(AssemblyName).deps.json</ProjectDepsFileName>
12020 <ProjectDepsFilePath Condition="'$(ProjectDepsFilePath)' == ''">$(TargetDir)$(ProjectDepsFileName)</ProjectDepsFilePath>
12021 <ProjectRuntimeConfigFileName Condition="'$(ProjectRuntimeConfigFileName)' == ''">$(AssemblyName).runtimeconfig.json</ProjectRuntimeConfigFileName>
12022 <ProjectRuntimeConfigFilePath Condition="'$(ProjectRuntimeConfigFilePath)' == ''">$(TargetDir)$(ProjectRuntimeConfigFileName)</ProjectRuntimeConfigFilePath>
12023 <ProjectRuntimeConfigDevFilePath Condition="'$(ProjectRuntimeConfigDevFilePath)' == '' and $(GenerateRuntimeConfigDevFile) == 'true'">$(TargetDir)$(AssemblyName).runtimeconfig.dev.json</ProjectRuntimeConfigDevFilePath>
12024 <IncludeMainProjectInDepsFile Condition=" '$(IncludeMainProjectInDepsFile)' == '' ">true</IncludeMainProjectInDepsFile>
12025 </PropertyGroup>
12026 <!--
12027============================================================================================================================================
12028 <Import Project="Microsoft.NET.Sdk.Shared.targets">
12029
12030C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.Shared.targets
12031============================================================================================================================================
12032-->
12033 <!--
12034***********************************************************************************************
12035Microsoft.NET.Sdk.Shared.targets: The properties and targets shared by the WAP project system.
12036
12037WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
12038 created a backup copy. Incorrect changes to this file will make it
12039 impossible to load or build your projects from the command-line or the IDE.
12040
12041Copyright (c) .NET Foundation. All rights reserved.
12042***********************************************************************************************
12043-->
12044 <PropertyGroup Condition="'$(UsingNETSdkDefaults)' != 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12045 <!-- Skip import of Microsoft.NuGet.props and Microsoft.NuGet.targets -->
12046 <SkipImportNuGetProps>true</SkipImportNuGetProps>
12047 <SkipImportNuGetBuildTargets>true</SkipImportNuGetBuildTargets>
12048 </PropertyGroup>
12049 <!-- Workaround: https://github.com/Microsoft/msbuild/issues/1293 -->
12050 <PropertyGroup Condition="'$(MSBuildRuntimeType)' == 'Core' Or '$(TargetFrameworkIdentifier)' != '.NETFramework'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12051 <GenerateResourceMSBuildArchitecture Condition=" '$(GenerateResourceMSBuildArchitecture)' == '' ">CurrentArchitecture</GenerateResourceMSBuildArchitecture>
12052 <GenerateResourceMSBuildRuntime Condition=" '$(GenerateResourceMSBuildRuntime)' == '' ">CurrentRuntime</GenerateResourceMSBuildRuntime>
12053 </PropertyGroup>
12054 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12055 <_NativeLibraryPrefix Condition="'$(_NativeLibraryPrefix)' == '' and !$(RuntimeIdentifier.StartsWith('win'))">lib</_NativeLibraryPrefix>
12056 <_NativeLibraryExtension Condition="'$(_NativeLibraryExtension)' == '' and $(RuntimeIdentifier.StartsWith('win'))">.dll</_NativeLibraryExtension>
12057 <_NativeLibraryExtension Condition="'$(_NativeLibraryExtension)' == '' and $(RuntimeIdentifier.StartsWith('osx'))">.dylib</_NativeLibraryExtension>
12058 <_NativeLibraryExtension Condition="'$(_NativeLibraryExtension)' == ''">.so</_NativeLibraryExtension>
12059 <_NativeExecutableExtension Condition="'$(_NativeExecutableExtension)' == '' and ($(RuntimeIdentifier.StartsWith('win')) or $(DefaultAppHostRuntimeIdentifier.StartsWith('win')))">.exe</_NativeExecutableExtension>
12060 <_ComHostLibraryExtension Condition="'$(_ComHostLibraryExtension)' == '' and ($(RuntimeIdentifier.StartsWith('win')) or $(DefaultAppHostRuntimeIdentifier.StartsWith('win')))">.dll</_ComHostLibraryExtension>
12061 <_IjwHostLibraryExtension Condition="'$(_IjwHostLibraryExtension)' == '' and ($(RuntimeIdentifier.StartsWith('win')) or $(DefaultAppHostRuntimeIdentifier.StartsWith('win')))">.dll</_IjwHostLibraryExtension>
12062 <_DotNetHostExecutableName>dotnet$(_NativeExecutableExtension)</_DotNetHostExecutableName>
12063 <_DotNetAppHostExecutableNameWithoutExtension>apphost</_DotNetAppHostExecutableNameWithoutExtension>
12064 <_DotNetAppHostExecutableName>$(_DotNetAppHostExecutableNameWithoutExtension)$(_NativeExecutableExtension)</_DotNetAppHostExecutableName>
12065 <_DotNetSingleFileHostExecutableNameWithoutExtension>singlefilehost</_DotNetSingleFileHostExecutableNameWithoutExtension>
12066 <_DotNetComHostLibraryNameWithoutExtension>comhost</_DotNetComHostLibraryNameWithoutExtension>
12067 <_DotNetComHostLibraryName>$(_DotNetComHostLibraryNameWithoutExtension)$(_ComHostLibraryExtension)</_DotNetComHostLibraryName>
12068 <_DotNetIjwHostLibraryNameWithoutExtension>Ijwhost</_DotNetIjwHostLibraryNameWithoutExtension>
12069 <_DotNetIjwHostLibraryName>$(_DotNetIjwHostLibraryNameWithoutExtension)$(_IjwHostLibraryExtension)</_DotNetIjwHostLibraryName>
12070 <_DotNetHostPolicyLibraryName>$(_NativeLibraryPrefix)hostpolicy$(_NativeLibraryExtension)</_DotNetHostPolicyLibraryName>
12071 <_DotNetHostFxrLibraryName>$(_NativeLibraryPrefix)hostfxr$(_NativeLibraryExtension)</_DotNetHostFxrLibraryName>
12072 </PropertyGroup>
12073 <Target Name="_ComputePackageReferencePublish" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12074 <ItemGroup>
12075 <!-- PrivateAssets="All" means exclude from publish, unless Publish metadata is specified separately -->
12076 <PackageReference Publish="false" Condition="('%(PackageReference.PrivateAssets)' == 'All') And ('%(PackageReference.Publish)' == '')" />
12077 <_ExcludeFromPublishPackageReference Include="@(PackageReference)" Condition="('%(PackageReference.Publish)' == 'false')" />
12078 </ItemGroup>
12079 </Target>
12080 <!--
12081 ============================================================
12082 _DefaultMicrosoftNETPlatformLibrary
12083
12084 .NET Core apps can have shared frameworks that are pre-installed on the target machine, thus the app is "portable"
12085 to any machine that already has the shared framework installed. For .NET Core 1.x and 2.x, a "platform" library
12086 is declared. The platform library and its dependencies will be excluded from the publish output.
12087
12088 For .NET Core 3 and up, targeting packs and runtime packs are used for shared framework assets instead of PackageReference
12089 ============================================================
12090 -->
12091 <Target Name="_DefaultMicrosoftNETPlatformLibrary" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12092 <PropertyGroup Condition="'$(MicrosoftNETPlatformLibrary)' == ''">
12093 <MicrosoftNETPlatformLibrary Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' And '$(_TargetFrameworkVersionWithoutV)' &lt; '3.0'">Microsoft.NETCore.App</MicrosoftNETPlatformLibrary>
12094 </PropertyGroup>
12095 </Target>
12096 <!--
12097============================================================================================================================================
12098 </Import>
12099
12100C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets
12101============================================================================================================================================
12102-->
12103 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12104 <_DefaultUserProfileRuntimeStorePath>$(HOME)</_DefaultUserProfileRuntimeStorePath>
12105 <_DefaultUserProfileRuntimeStorePath Condition="$([MSBuild]::IsOSPlatform(`Windows`))">$(USERPROFILE)</_DefaultUserProfileRuntimeStorePath>
12106 <_DefaultUserProfileRuntimeStorePath>$([System.IO.Path]::Combine($(_DefaultUserProfileRuntimeStorePath), '.dotnet', 'store'))</_DefaultUserProfileRuntimeStorePath>
12107 <UserProfileRuntimeStorePath Condition="'$(UserProfileRuntimeStorePath)' == ''">$(_DefaultUserProfileRuntimeStorePath)</UserProfileRuntimeStorePath>
12108 </PropertyGroup>
12109 <PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), '6.0'))" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12110 <PredefinedCulturesOnly Condition="'$(PredefinedCulturesOnly)' == '' and '$(InvariantGlobalization)' == 'true'">true</PredefinedCulturesOnly>
12111 </PropertyGroup>
12112 <!-- Opt into .NET Core resource-serialization strategy by default when targeting frameworks
12113 that support it by default.
12114 -->
12115 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12116 <GenerateResourceUsePreserializedResources Condition="'$(GenerateResourceUsePreserializedResources)' == '' and&#xD;&#xA; ('$(TargetFrameworkIdentifier)' == '.NETCoreApp' and '$(_TargetFrameworkVersionWithoutV)' &gt;= '3.0')">true</GenerateResourceUsePreserializedResources>
12117 </PropertyGroup>
12118 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12119 <EmbeddedResourceUseDependentUponConvention Condition="'$(EmbeddedResourceUseDependentUponConvention)' == '' and&#xD;&#xA; (('$(TargetFrameworkIdentifier)' == '.NETCoreApp' and '$(_TargetFrameworkVersionWithoutV)' &gt;= '3.0') or&#xD;&#xA; ('$(TargetFrameworkIdentifier)' == '.NETStandard' and '$(_TargetFrameworkVersionWithoutV)' &gt;= '2.1'))">true</EmbeddedResourceUseDependentUponConvention>
12120 </PropertyGroup>
12121 <PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), '2.1'))" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12122 <AvailablePlatforms>$(AvailablePlatforms),ARM32</AvailablePlatforms>
12123 </PropertyGroup>
12124 <PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), '3.1'))" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12125 <AvailablePlatforms>$(AvailablePlatforms),ARM64</AvailablePlatforms>
12126 </PropertyGroup>
12127 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12128 <!-- Turn off support for metadata updates in non-Debug builds by default. -->
12129 <MetadataUpdaterSupport Condition="'$(MetadataUpdaterSupport)' == '' and '$(Configuration)' != 'Debug'">false</MetadataUpdaterSupport>
12130 </PropertyGroup>
12131 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12132 <CoreBuildDependsOn>
12133 _CheckForBuildWithNoBuild;
12134 $(CoreBuildDependsOn);
12135 GenerateBuildDependencyFile;
12136 GenerateBuildRuntimeConfigurationFiles
12137 </CoreBuildDependsOn>
12138 </PropertyGroup>
12139 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12140 <CoreCleanDependsOn>
12141 _SdkBeforeClean;
12142 $(CoreCleanDependsOn)
12143 </CoreCleanDependsOn>
12144 </PropertyGroup>
12145 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12146 <RebuildDependsOn>
12147 _SdkBeforeRebuild;
12148 $(RebuildDependsOn)
12149 </RebuildDependsOn>
12150 </PropertyGroup>
12151 <!-- TODO: this target should not check GeneratePackageOnBuild.
12152 remove when https://github.com/NuGet/Home/issues/7801 is fixed.
12153 -->
12154 <Target Name="_CheckForBuildWithNoBuild" Condition="'$(NoBuild)' == 'true' and '$(GeneratePackageOnBuild)' != 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12155 <NETSdkError ResourceName="NoBuildRequested" />
12156 </Target>
12157 <!--
12158 ============================================================
12159 GenerateBuildDependencyFile
12160 Generates the $(project).deps.json file during Build
12161 ============================================================
12162 -->
12163 <Target Name="GenerateBuildDependencyFile" DependsOnTargets="_DefaultMicrosoftNETPlatformLibrary;&#xD;&#xA; _HandlePackageFileConflicts;&#xD;&#xA; _ComputeReferenceAssemblies;&#xD;&#xA; _ComputeUserRuntimeAssemblies;&#xD;&#xA; ResolveRuntimePackAssets;&#xD;&#xA; _ComputePackageReferencePublish" BeforeTargets="CopyFilesToOutputDirectory" Condition="'$(GenerateDependencyFile)' == 'true'" Inputs="$(ProjectAssetsFile);$(ProjectAssetsCacheFile);$(MSBuildAllProjects)" Outputs="$(ProjectDepsFilePath)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12164 <!-- Set a dummy Version if it hasn't been set by DefaultAssemblyInfo.targets -->
12165 <PropertyGroup Condition="'$(UsingNETSdkDefaults)' != 'true'">
12166 <Version Condition="'$(Version)' == ''">1.0.0</Version>
12167 </PropertyGroup>
12168 <ItemGroup>
12169 <ResolvedCompileFileDefinitions Remove="@(_ConflictPackageFiles)" Condition="'%(_ConflictPackageFiles.ConflictItemType)' == 'Reference'" />
12170 <NativeCopyLocalItems Remove="@(_ConflictPackageFiles)" Condition="'%(_ConflictPackageFiles.ConflictItemType)' != 'Reference'" />
12171 <ResourceCopyLocalItems Remove="@(_ConflictPackageFiles)" Condition="'%(_ConflictPackageFiles.ConflictItemType)' != 'Reference'" />
12172 <RuntimeCopyLocalItems Remove="@(_ConflictPackageFiles)" Condition="'%(_ConflictPackageFiles.ConflictItemType)' != 'Reference'" />
12173 <RuntimeTargetsCopyLocalItems Remove="@(_ConflictPackageFiles)" Condition="'%(_ConflictPackageFiles.ConflictItemType)' != 'Reference'" />
12174 <RuntimePackAsset Remove="@(_ConflictPackageFiles)" Condition="'%(_ConflictPackageFiles.ConflictItemType)' != 'Reference'" />
12175 </ItemGroup>
12176 <GenerateDepsFile ProjectPath="$(MSBuildProjectFullPath)" AssetsFilePath="$(ProjectAssetsFile)" DepsFilePath="$(ProjectDepsFilePath)" TargetFramework="$(TargetFramework)" AssemblyName="$(AssemblyName)" AssemblyExtension="$(TargetExt)" AssemblyVersion="$(Version)" AssemblySatelliteAssemblies="@(IntermediateSatelliteAssembliesWithTargetPath)" ReferencePaths="@(ReferencePath)" ReferenceDependencyPaths="@(ReferenceDependencyPaths)" ReferenceSatellitePaths="@(ReferenceSatellitePaths)" ReferenceAssemblies="@(_ReferenceAssemblies)" RuntimePackAssets="@(RuntimePackAsset)" IncludeMainProject="$(IncludeMainProjectInDepsFile)" RuntimeIdentifier="$(RuntimeIdentifier)" PlatformLibraryName="$(MicrosoftNETPlatformLibrary)" RuntimeFrameworks="@(RuntimeFramework)" CompilerOptions="@(DependencyFileCompilerOptions)" CompileReferences="@(ResolvedCompileFileDefinitions)" ResolvedNuGetFiles="@(NativeCopyLocalItems);@(ResourceCopyLocalItems);@(RuntimeCopyLocalItems)" UserRuntimeAssemblies="@(UserRuntimeAssembly)" ResolvedRuntimeTargetsFiles="@(RuntimeTargetsCopyLocalItems)" IsSelfContained="$(SelfContained)" IncludeRuntimeFileVersions="$(IncludeFileVersionsInDependencyFile)" RuntimeGraphPath="$(BundledRuntimeIdentifierGraphFile)" />
12177 <ItemGroup>
12178 <!-- Do this in an ItemGroup instead of as an output parameter of the GenerateDepsFile task so that it still gets added to the item set
12179 during incremental builds when the task is skipped -->
12180 <FileWrites Include="$(ProjectDepsFilePath)" Condition="Exists('$(ProjectDepsFilePath)')" />
12181 </ItemGroup>
12182 </Target>
12183 <!-- To achieve incremental build with property change. When any property changes, WriteOnlyWhenDifferent will be triggered to write cache file.
12184 And the cache file's timestamp will be later, and it then triggers the incremental build.-->
12185 <Target Name="_GenerateRuntimeConfigurationFilesInputCache" DependsOnTargets="_DefaultMicrosoftNETPlatformLibrary" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12186 <ItemGroup>
12187 <GenerateRuntimeConfigurationFilesInputs Include="$(_GenerateRuntimeConfigurationPropertyInputsCache)" />
12188 <_GenerateRuntimeConfigurationPropertyInputsCacheToHash Include="@(AdditionalProbingPath->'%(Identity)')" />
12189 <_GenerateRuntimeConfigurationPropertyInputsCacheToHash Include="$(EnableDynamicLoading)" />
12190 <_GenerateRuntimeConfigurationPropertyInputsCacheToHash Include="$(RollForward)" />
12191 <_GenerateRuntimeConfigurationPropertyInputsCacheToHash Include="@(RuntimeHostConfigurationOption->'%(Identity)%(Value)')" />
12192 <_GenerateRuntimeConfigurationPropertyInputsCacheToHash Include="$(RuntimeIdentifier)" />
12193 <_GenerateRuntimeConfigurationPropertyInputsCacheToHash Include="$(SelfContained)" />
12194 <_GenerateRuntimeConfigurationPropertyInputsCacheToHash Include="$(TargetFramework)" />
12195 <_GenerateRuntimeConfigurationPropertyInputsCacheToHash Include="$(UserRuntimeConfig)" />
12196 <_GenerateRuntimeConfigurationPropertyInputsCacheToHash Include="$(_WriteIncludedFrameworks)" />
12197 </ItemGroup>
12198 <Hash ItemsToHash="@(_GenerateRuntimeConfigurationPropertyInputsCacheToHash)">
12199 <Output TaskParameter="HashResult" PropertyName="_GenerateRuntimeConfigurationPropertyInputsCacheHash" />
12200 </Hash>
12201 <WriteLinesToFile Lines="$(_GenerateRuntimeConfigurationPropertyInputsCacheHash)" File="$(_GenerateRuntimeConfigurationPropertyInputsCache)" Overwrite="True" WriteOnlyWhenDifferent="True" />
12202 <ItemGroup>
12203 <FileWrites Include="$(_GenerateRuntimeConfigurationPropertyInputsCache)" />
12204 </ItemGroup>
12205 </Target>
12206 <!--
12207 ============================================================
12208 GenerateBuildRuntimeConfigurationFiles
12209 Generates the $(project).runtimeconfig.json and $(project).runtimeconfig.dev.json files during Build
12210 ============================================================
12211 -->
12212 <Target Name="GenerateBuildRuntimeConfigurationFiles" DependsOnTargets="_GenerateRuntimeConfigurationFilesInputCache" BeforeTargets="CopyFilesToOutputDirectory" Condition=" '$(GenerateRuntimeConfigurationFiles)' == 'true'" Inputs="@(GenerateRuntimeConfigurationFilesInputs)" Outputs="$(ProjectRuntimeConfigFilePath);$(ProjectRuntimeConfigDevFilePath)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12213 <PropertyGroup>
12214 <_IsRollForwardSupported Condition="'$(_TargetFrameworkVersionWithoutV)' &gt;= '3.0'">true</_IsRollForwardSupported>
12215 <RollForward Condition="'$(RollForward)' == '' and '$(EnableDynamicLoading)' == 'true' and '$(_IsRollForwardSupported)' == 'true'">LatestMinor</RollForward>
12216 </PropertyGroup>
12217 <!-- RollForward is only supported since .NET Core 3.0, but we should allow limited usage when the app is targeting even lower versions
12218 This is to let 2.* apps specify that they are OK to run on 3.0 and above. So explicitly allow just Major and LatestMajor
12219 other values should still keep failing as they won't have any effect when run on 2.*. -->
12220 <NETSdkError Condition="'$(RollForward)' != '' and '$(RollForward)' != 'Major' and '$(RollForward)' != 'LatestMajor' and '$(_IsRollForwardSupported)' != 'true'" ResourceName="RollForwardRequiresVersion30" />
12221 <PropertyGroup>
12222 <_WriteIncludedFrameworks Condition="'$(SelfContained)' == 'true' and '$(_TargetFrameworkVersionWithoutV)' &gt;= '3.1'">true</_WriteIncludedFrameworks>
12223 </PropertyGroup>
12224 <GenerateRuntimeConfigurationFiles AssetsFilePath="$(ProjectAssetsFile)" TargetFramework="$(TargetFramework)" TargetFrameworkMoniker="$(TargetFrameworkMoniker)" RuntimeConfigPath="$(ProjectRuntimeConfigFilePath)" RuntimeConfigDevPath="$(ProjectRuntimeConfigDevFilePath)" RuntimeIdentifier="$(RuntimeIdentifier)" PlatformLibraryName="$(MicrosoftNETPlatformLibrary)" RuntimeFrameworks="@(RuntimeFramework)" RollForward="$(RollForward)" UserRuntimeConfig="$(UserRuntimeConfig)" HostConfigurationOptions="@(RuntimeHostConfigurationOption)" AdditionalProbingPaths="@(AdditionalProbingPath)" IsSelfContained="$(SelfContained)" WriteIncludedFrameworks="$(_WriteIncludedFrameworks)" GenerateRuntimeConfigDevFile="$(GenerateRuntimeConfigDevFile)" AlwaysIncludeCoreFramework="$(AlwaysIncludeCoreFrameworkInRuntimeConfig)" />
12225 <ItemGroup>
12226 <!-- Do this in an ItemGroup instead of as an output parameter of the GenerateDepsFile task so that it still gets added to the item set
12227 during incremental builds when the task is skipped -->
12228 <FileWrites Include="$(ProjectRuntimeConfigFilePath)" Condition="Exists('$(ProjectRuntimeConfigFilePath)')" />
12229 <FileWrites Include="$(ProjectRuntimeConfigDevFilePath)" Condition="Exists('$(ProjectRuntimeConfigDevFilePath)')" />
12230 </ItemGroup>
12231 </Target>
12232 <!-- Add runtimeconfig.json file to BuiltProjectOutputGroupOutput, so that it will get included in the NuGet package by the Pack target -->
12233 <Target Name="AddRuntimeConfigFileToBuiltProjectOutputGroupOutput" Condition=" '$(GenerateRuntimeConfigurationFiles)' == 'true'" BeforeTargets="BuiltProjectOutputGroup" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12234 <ItemGroup>
12235 <BuiltProjectOutputGroupOutput Include="$(ProjectRuntimeConfigFilePath)" TargetPath="$(ProjectRuntimeConfigFileName)" FinalOutputPath="$(ProjectRuntimeConfigFilePath)" />
12236 </ItemGroup>
12237 </Target>
12238 <Target Name="AddDepsJsonAndRuntimeConfigToCopyItemsForReferencingProjects" BeforeTargets="GetCopyToOutputDirectoryItems;_GetCopyToOutputDirectoryItemsFromThisProject" Condition="'$(HasRuntimeOutput)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12239 <ItemGroup Condition="'$(GenerateDependencyFile)' == 'true'">
12240 <AllItemsFullPathWithTargetPath Include="$(ProjectDepsFilePath)" TargetPath="$([System.IO.Path]::GetFileName($(ProjectDepsFilePath)))" CopyToOutputDirectory="PreserveNewest" />
12241 </ItemGroup>
12242 <ItemGroup Condition=" '$(GenerateRuntimeConfigurationFiles)' == 'true'">
12243 <AllItemsFullPathWithTargetPath Include="$(ProjectRuntimeConfigFilePath)" TargetPath="$([System.IO.Path]::GetFileName($(ProjectRuntimeConfigFilePath)))" CopyToOutputDirectory="PreserveNewest" />
12244 <AllItemsFullPathWithTargetPath Include="$(ProjectRuntimeConfigDevFilePath)" TargetPath="$([System.IO.Path]::GetFileName($(ProjectRuntimeConfigDevFilePath)))" CopyToOutputDirectory="PreserveNewest" />
12245 </ItemGroup>
12246 </Target>
12247 <Target Name="AddDepsJsonAndRuntimeConfigToPublishItemsForReferencingProjects" DependsOnTargets="_ComputeUseBuildDependencyFile" BeforeTargets="GetCopyToPublishDirectoryItems" Condition="'$(HasRuntimeOutput)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12248 <ItemGroup Condition="'$(GenerateDependencyFile)' == 'true'">
12249 <AllPublishItemsFullPathWithTargetPath Include="$(ProjectDepsFilePath)" TargetPath="$([System.IO.Path]::GetFileName($(ProjectDepsFilePath)))" CopyToPublishDirectory="PreserveNewest" Condition="'$(_UseBuildDependencyFile)' == 'true'" />
12250 <AllPublishItemsFullPathWithTargetPath Include="$(PublishDepsFilePath)" TargetPath="$([System.IO.Path]::GetFileName($(PublishDepsFilePath)))" CopyToPublishDirectory="PreserveNewest" Condition="'$(PublishDepsFilePath)' != '' and '$(_UseBuildDependencyFile)' != 'true'" />
12251 </ItemGroup>
12252 <ItemGroup Condition=" '$(GenerateRuntimeConfigurationFiles)' == 'true'">
12253 <AllPublishItemsFullPathWithTargetPath Include="$(ProjectRuntimeConfigFilePath)" TargetPath="$([System.IO.Path]::GetFileName($(ProjectRuntimeConfigFilePath)))" CopyToPublishDirectory="PreserveNewest" />
12254 </ItemGroup>
12255 </Target>
12256 <Target Name="_SdkBeforeClean" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12257 <PropertyGroup Condition="'$(_CleaningWithoutRebuilding)' == ''">
12258 <_CleaningWithoutRebuilding>true</_CleaningWithoutRebuilding>
12259 <EmitAssetsLogMessages>false</EmitAssetsLogMessages>
12260 </PropertyGroup>
12261 </Target>
12262 <Target Name="_SdkBeforeRebuild" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12263 <PropertyGroup>
12264 <_CleaningWithoutRebuilding>false</_CleaningWithoutRebuilding>
12265 </PropertyGroup>
12266 </Target>
12267 <!--
12268 ============================================================
12269 DefaultRuntimeHostConfigurationOptions
12270 Defaults @(RuntimeHostConfigurationOption) items based on MSBuild properties.
12271 ============================================================
12272 -->
12273 <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12274 <RuntimeHostConfigurationOption Include="Microsoft.Extensions.DependencyInjection.VerifyOpenGenericServiceTrimmability" Condition="'$(VerifyDependencyInjectionOpenGenericServiceTrimmability)' != ''" Value="$(VerifyDependencyInjectionOpenGenericServiceTrimmability)" Trim="true" />
12275 <RuntimeHostConfigurationOption Include="System.AggressiveAttributeTrimming" Condition="'$(_AggressiveAttributeTrimming)' != ''" Value="$(_AggressiveAttributeTrimming)" Trim="true" />
12276 <RuntimeHostConfigurationOption Include="System.ComponentModel.TypeConverter.EnableUnsafeBinaryFormatterInDesigntimeLicenseContextSerialization" Condition="'$(EnableUnsafeBinaryFormatterInDesigntimeLicenseContextSerialization)' != ''" Value="$(EnableUnsafeBinaryFormatterInDesigntimeLicenseContextSerialization)" Trim="true" />
12277 <RuntimeHostConfigurationOption Include="System.Diagnostics.Debugger.IsSupported" Condition="'$(DebuggerSupport)' != ''" Value="$(DebuggerSupport)" Trim="true" />
12278 <RuntimeHostConfigurationOption Include="System.Diagnostics.Tracing.EventSource.IsSupported" Condition="'$(EventSourceSupport)' != ''" Value="$(EventSourceSupport)" Trim="true" />
12279 <RuntimeHostConfigurationOption Include="System.GC.Concurrent" Condition="'$(ConcurrentGarbageCollection)' != ''" Value="$(ConcurrentGarbageCollection)" />
12280 <RuntimeHostConfigurationOption Include="System.GC.Server" Condition="'$(ServerGarbageCollection)' != ''" Value="$(ServerGarbageCollection)" />
12281 <RuntimeHostConfigurationOption Include="System.GC.RetainVM" Condition="'$(RetainVMGarbageCollection)' != ''" Value="$(RetainVMGarbageCollection)" />
12282 <RuntimeHostConfigurationOption Include="System.Globalization.Invariant" Condition="'$(InvariantGlobalization)' != ''" Value="$(InvariantGlobalization)" Trim="true" />
12283 <RuntimeHostConfigurationOption Include="System.Globalization.PredefinedCulturesOnly" Condition="'$(PredefinedCulturesOnly)' != ''" Value="$(PredefinedCulturesOnly)" Trim="true" />
12284 <RuntimeHostConfigurationOption Include="System.Net.Http.EnableActivityPropagation" Condition="'$(HttpActivityPropagationSupport)' != ''" Value="$(HttpActivityPropagationSupport)" Trim="true" />
12285 <RuntimeHostConfigurationOption Include="System.Net.Http.UseNativeHttpHandler" Condition="'$(UseNativeHttpHandler)' != ''" Value="$(UseNativeHttpHandler)" Trim="true" />
12286 <RuntimeHostConfigurationOption Include="System.Reflection.Metadata.MetadataUpdater.IsSupported" Condition="'$(MetadataUpdaterSupport)' != ''" Value="$(MetadataUpdaterSupport)" Trim="true" />
12287 <RuntimeHostConfigurationOption Include="System.Reflection.NullabilityInfoContext.IsSupported" Condition="'$(NullabilityInfoContextSupport)' != ''" Value="$(NullabilityInfoContextSupport)" Trim="true" />
12288 <RuntimeHostConfigurationOption Include="System.Resources.ResourceManager.AllowCustomResourceTypes" Condition="'$(CustomResourceTypesSupport)' != ''" Value="$(CustomResourceTypesSupport)" Trim="true" />
12289 <RuntimeHostConfigurationOption Include="System.Resources.UseSystemResourceKeys" Condition="'$(UseSystemResourceKeys)' != ''" Value="$(UseSystemResourceKeys)" Trim="true" />
12290 <RuntimeHostConfigurationOption Include="System.Runtime.InteropServices.BuiltInComInterop.IsSupported" Condition="'$(BuiltInComInteropSupport)' != ''" Value="$(BuiltInComInteropSupport)" Trim="true" />
12291 <RuntimeHostConfigurationOption Include="System.Runtime.InteropServices.EnableConsumingManagedCodeFromNativeHosting" Condition="'$(_EnableConsumingManagedCodeFromNativeHosting)' != ''" Value="$(_EnableConsumingManagedCodeFromNativeHosting)" Trim="true" />
12292 <RuntimeHostConfigurationOption Include="System.Runtime.InteropServices.EnableCppCLIHostActivation" Condition="'$(EnableCppCLIHostActivation)' != ''" Value="$(EnableCppCLIHostActivation)" Trim="true" />
12293 <RuntimeHostConfigurationOption Include="System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization" Condition="'$(EnableUnsafeBinaryFormatterSerialization)' != ''" Value="$(EnableUnsafeBinaryFormatterSerialization)" Trim="true" />
12294 <RuntimeHostConfigurationOption Include="System.Runtime.TieredCompilation" Condition="'$(TieredCompilation)' != ''" Value="$(TieredCompilation)" />
12295 <RuntimeHostConfigurationOption Include="System.Runtime.TieredCompilation.QuickJit" Condition="'$(TieredCompilationQuickJit)' != ''" Value="$(TieredCompilationQuickJit)" />
12296 <RuntimeHostConfigurationOption Include="System.Runtime.TieredCompilation.QuickJitForLoops" Condition="'$(TieredCompilationQuickJitForLoops)' != ''" Value="$(TieredCompilationQuickJitForLoops)" />
12297 <RuntimeHostConfigurationOption Include="System.StartupHookProvider.IsSupported" Condition="'$(StartupHookSupport)' != ''" Value="$(StartupHookSupport)" Trim="true" />
12298 <RuntimeHostConfigurationOption Include="System.Threading.Thread.EnableAutoreleasePool" Condition="'$(AutoreleasePoolSupport)' != ''" Value="$(AutoreleasePoolSupport)" Trim="true" />
12299 <RuntimeHostConfigurationOption Include="System.Text.Encoding.EnableUnsafeUTF7Encoding" Condition="'$(EnableUnsafeUTF7Encoding)' != ''" Value="$(EnableUnsafeUTF7Encoding)" Trim="true" />
12300 <RuntimeHostConfigurationOption Include="System.Threading.ThreadPool.MinThreads" Condition="'$(ThreadPoolMinThreads)' != ''" Value="$(ThreadPoolMinThreads)" />
12301 <RuntimeHostConfigurationOption Include="System.Threading.ThreadPool.MaxThreads" Condition="'$(ThreadPoolMaxThreads)' != ''" Value="$(ThreadPoolMaxThreads)" />
12302 </ItemGroup>
12303 <!--
12304 ============================================================
12305 DefaultAdditionalProbingPaths
12306 Adds the default @(AdditionalProbingPath) items.
12307 ============================================================
12308 -->
12309 <ItemGroup Condition="'$(GenerateRuntimeConfigurationFiles)' == 'true' and '$(SkipDefaultAdditionalProbingPaths)' != 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12310 <!-- Note: can't use Path.Combine here since `|` is an illegal path character -->
12311 <AdditionalProbingPath Include="$(UserProfileRuntimeStorePath)$([System.IO.Path]::DirectorySeparatorChar)|arch|$([System.IO.Path]::DirectorySeparatorChar)|tfm|" />
12312 </ItemGroup>
12313 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12314 <CompileDependsOn>
12315 $(CompileDependsOn);
12316 _CreateAppHost;
12317 _CreateComHost;
12318 _GetIjwHostPaths;
12319 </CompileDependsOn>
12320 </PropertyGroup>
12321 <!--
12322 ============================================================
12323 _CreateAppHost
12324 If we found a restored apphost, create the modified destination apphost
12325 with options from the project.
12326 ============================================================
12327 -->
12328 <UsingTask TaskName="CreateAppHost" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
12329 <Target Name="_CreateAppHost" Inputs="@(IntermediateAssembly);$(AppHostSourcePath)" Outputs="$(AppHostIntermediatePath)" DependsOnTargets="_ChooseAppHost;CoreCompile" Condition="'$(ComputeNETCoreBuildOutputFiles)' == 'true' and&#xD;&#xA; '$(AppHostSourcePath)' != '' and&#xD;&#xA; Exists('@(IntermediateAssembly)') and&#xD;&#xA; Exists('$(AppHostSourcePath)')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12330 <PropertyGroup>
12331 <_UseWindowsGraphicalUserInterface Condition="($(RuntimeIdentifier.StartsWith('win')) or $(DefaultAppHostRuntimeIdentifier.StartsWith('win'))) and '$(OutputType)'=='WinExe'">true</_UseWindowsGraphicalUserInterface>
12332 <_EnableMacOSCodeSign Condition="'$(_EnableMacOSCodeSign)' == '' and $([MSBuild]::IsOSPlatform(`OSX`)) and Exists('/usr/bin/codesign') and&#xD;&#xA; ($(RuntimeIdentifier.StartsWith('osx')) or $(AppHostRuntimeIdentifier.StartsWith('osx')))">true</_EnableMacOSCodeSign>
12333 </PropertyGroup>
12334 <CreateAppHost AppHostSourcePath="$(AppHostSourcePath)" AppHostDestinationPath="$(AppHostIntermediatePath)" AppBinaryName="$(AssemblyName)$(TargetExt)" IntermediateAssembly="@(IntermediateAssembly->'%(FullPath)')" WindowsGraphicalUserInterface="$(_UseWindowsGraphicalUserInterface)" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" EnableMacOSCodeSign="$(_EnableMacOSCodeSign)" />
12335 </Target>
12336 <!--
12337 ============================================================
12338 _ChooseAppHost
12339 Choose the correct app-host for the build scenario:
12340 * SingleFileHost if an app being published as a self-contained single-file .net5+ app
12341 * AppHost otherwise
12342 ============================================================
12343 -->
12344 <Target Name="_ChooseAppHost" DependsOnTargets="_GetAppHostPaths" Condition="'$(UseAppHost)' == 'true' and '$(_IsExecutable)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12345 <PropertyGroup Condition="'$(PublishSingleFile)' == 'true' and&#xD;&#xA; '$(SelfContained)' == 'true' and&#xD;&#xA; '$(_TargetFrameworkVersionWithoutV)' &gt;= '5.0' and&#xD;&#xA; '$(SingleFileHostSourcePath)' != ''">
12346 <AppHostSourcePath>$(SingleFileHostSourcePath)</AppHostSourcePath>
12347 <AppHostIntermediatePath>$([System.IO.Path]::GetFullPath('$(IntermediateOutputPath)singlefilehost$(_NativeExecutableExtension)'))</AppHostIntermediatePath>
12348 </PropertyGroup>
12349 </Target>
12350 <!--
12351 ============================================================
12352 _GetAppHostPaths
12353 Gets the path to apphost (restored via packages or in an apphost pack),
12354 and computes the path for the destination apphost.
12355 ============================================================
12356 -->
12357 <Target Name="_GetAppHostPaths" DependsOnTargets="ResolvePackageAssets;ResolveFrameworkReferences" Condition="'$(UseAppHost)' == 'true' and '$(_IsExecutable)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12358 <NETSdkError Condition="'@(_NativeRestoredAppHostNETCore-&gt;Count())' &gt; 1" ResourceName="MultipleFilesResolved" FormatArguments="$(_DotNetAppHostExecutableName)" />
12359 <PropertyGroup>
12360 <!-- AppHostSourcePath will be set from ProcessFrameworkReferences if not using the apphost from the assets file -->
12361 <AppHostSourcePath Condition="'$(UseAppHostFromAssetsFile)' == 'true'">@(_NativeRestoredAppHostNETCore)</AppHostSourcePath>
12362 </PropertyGroup>
12363 <PropertyGroup Condition="'$(UseAppHostFromAssetsFile)' == 'false' Or '@(_NativeRestoredAppHostNETCore)' != ''">
12364 <AppHostIntermediatePath>$([System.IO.Path]::GetFullPath('$(IntermediateOutputPath)apphost$(_NativeExecutableExtension)'))</AppHostIntermediatePath>
12365 </PropertyGroup>
12366 </Target>
12367 <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12368 <ClsidMap Include="$(IntermediateOutputPath)$(AssemblyName).clsidmap" />
12369 <RegFreeComManifest Include="$(IntermediateOutputPath)$(AssemblyName).X.manifest" />
12370 </ItemGroup>
12371 <!--
12372 ============================================================
12373 _GenerateClsidMap
12374 Generates a *.clsidmap file from the built assembly.
12375 ============================================================
12376 -->
12377 <UsingTask TaskName="GenerateClsidMap" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
12378 <Target Name="_GenerateClsidMap" Inputs="@(IntermediateAssembly)" Outputs="@(ClsidMap)" DependsOnTargets="CoreCompile" Condition="'$(ComputeNETCoreBuildOutputFiles)' == 'true' and&#xD;&#xA; '$(EnableComHosting)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12379 <GenerateClsidMap IntermediateAssembly="@(IntermediateAssembly->'%(FullPath)')" CLsidMapDestinationPath="@(ClsidMap->'%(FullPath)')" />
12380 </Target>
12381 <UsingTask TaskName="CreateComHost" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
12382 <!--
12383 ============================================================
12384 _CreateComHost
12385 If we found a restored comhost, create the modified destination apphost
12386 with options from the project.
12387 ============================================================
12388 -->
12389 <Target Name="_CreateComHost" Inputs="@(IntermediateAssembly);$(ComHostSourcePath)" Outputs="$(ComHostIntermediatePath)" DependsOnTargets="_GetComHostPaths;CoreCompile;_GenerateClsidMap;_GenerateRegFreeComManifest" Condition="'$(ComputeNETCoreBuildOutputFiles)' == 'true' and&#xD;&#xA; '$(ComHostIntermediatePath)' != '' and&#xD;&#xA; Exists('@(IntermediateAssembly)') and&#xD;&#xA; Exists('$(ComHostSourcePath)')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12390 <CreateComHost ComHostSourcePath="$(ComHostSourcePath)" ComHostDestinationPath="$(ComHostIntermediatePath)" ClsidMapPath="@(ClsidMap)" TypeLibraries="@(ComHostTypeLibrary)" />
12391 </Target>
12392 <UsingTask TaskName="GenerateRegFreeComManifest" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
12393 <!--
12394 ============================================================
12395 _GenerateRegFreeComManifest
12396 Gets the path to the restored comhost, and if the restored comhost
12397 was present, computes the path for the destination comhost.
12398 ============================================================
12399 -->
12400 <Target Name="_GenerateRegFreeComManifest" DependsOnTargets="_GenerateClsidMap;_GetComHostPaths" Inputs="@(ClsidMap);@(IntermediateAssembly)" Outputs="@(RegFreeComManifest)" Condition="'$(ComputeNETCoreBuildOutputFiles)' == 'true' and&#xD;&#xA; '$(EnableComHosting)' == 'true' and&#xD;&#xA; '$(EnableRegFreeCom)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12401 <GenerateRegFreeComManifest IntermediateAssembly="@(IntermediateAssembly)" ComHostName="$(ComHostFileName)" ClsidMapPath="@(ClsidMap)" TypeLibraries="@(ComHostTypeLibrary)" ComManifestPath="@(RegFreeComManifest)" />
12402 </Target>
12403 <!--
12404 ============================================================
12405 _GetComHostPaths
12406 Gets the path to the restored comhost, and if the restored comhost
12407 was present, computes the path for the destination comhost.
12408 ============================================================
12409 -->
12410 <Target Name="_GetComHostPaths" DependsOnTargets="ResolvePackageAssets;ResolveFrameworkReferences" Condition="'$(EnableComHosting)' == 'true' and '$(_IsExecutable)' != 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12411 <PropertyGroup>
12412 <ComHostFileName>$(AssemblyName).comhost$(_ComHostLibraryExtension)</ComHostFileName>
12413 <ComHostIntermediatePath>$([System.IO.Path]::GetFullPath('$(IntermediateOutputPath)$(ComHostFileName)'))</ComHostIntermediatePath>
12414 </PropertyGroup>
12415 <NETSdkError Condition="'$(ComHostSourcePath)' == '' or !Exists('$(ComHostSourcePath)')" ResourceName="CannotFindComhost" />
12416 </Target>
12417 <!--
12418 ============================================================
12419 _GetIjwHostPaths
12420 Gets the path to the restored Ijwhost, and if the restored Ijwhost
12421 was present, Computes the path for the destination Ijwhost.
12422 ============================================================
12423 -->
12424 <Target Name="_GetIjwHostPaths" DependsOnTargets="ResolvePackageAssets;ResolveFrameworkReferences" Condition="'$(UseIJWHost)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12425 <NETSdkError Condition="'$(IjwHostSourcePath)' == '' or !Exists('$(IjwHostSourcePath)')" ResourceName="CannotFindIjwhost" />
12426 </Target>
12427 <!--
12428 ============================================================
12429 _ComputeNETCoreBuildOutputFiles
12430 Computes any files that need to be copied to the build output folder for .NET Core.
12431 ============================================================
12432 -->
12433 <Target Name="_ComputeNETCoreBuildOutputFiles" DependsOnTargets="_ChooseAppHost;_GetComHostPaths;_GetIjwHostPaths" BeforeTargets="AssignTargetPaths" Condition="'$(ComputeNETCoreBuildOutputFiles)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12434 <!-- Fallback to renaming the dotnet host if there is no apphost for self-contained builds. -->
12435 <PropertyGroup Condition="'$(AppHostIntermediatePath)' == '' and '$(SelfContained)' == 'true'">
12436 <_CopyAndRenameDotnetHost Condition="'$(_CopyAndRenameDotnetHost)' == ''">true</_CopyAndRenameDotnetHost>
12437 </PropertyGroup>
12438 <ItemGroup Condition="'$(_CopyAndRenameDotnetHost)' == 'true'">
12439 <None Include="@(NativeCopyLocalItems)" Condition="'%(NativeCopyLocalItems.FileName)%(NativeCopyLocalItems.Extension)' == '$(_DotNetHostExecutableName)'">
12440 <Link>$(AssemblyName)$(_NativeExecutableExtension)</Link>
12441 <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
12442 <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
12443 </None>
12444 </ItemGroup>
12445 <ItemGroup Condition="'$(AppHostIntermediatePath)' != '' or '$(_CopyAndRenameDotnetHost)' == 'true'">
12446 <!--
12447 If not copying local lock file assemblies, copy the host policy and host fxr libraries for self-contained builds.
12448 This is required to allow the host to activate in self-contained mode.
12449 -->
12450 <None Include="@(NativeCopyLocalItems)" Condition="'$(SelfContained)' == 'true' and&#xD;&#xA; '$(CopyLocalLockFileAssemblies)' != 'true' and&#xD;&#xA; ('%(NativeCopyLocalItems.FileName)%(NativeCopyLocalItems.Extension)' == '$(_DotNetHostPolicyLibraryName)' or&#xD;&#xA; '%(NativeCopyLocalItems.FileName)%(NativeCopyLocalItems.Extension)' == '$(_DotNetHostFxrLibraryName)')">
12451 <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
12452 <CopyToPublishDirectory>Never</CopyToPublishDirectory>
12453 </None>
12454 </ItemGroup>
12455 <ItemGroup Condition="'$(AppHostIntermediatePath)' != ''">
12456 <None Include="$(AppHostIntermediatePath)">
12457 <Link>$(AssemblyName)$(_NativeExecutableExtension)</Link>
12458 <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
12459 <!-- Always copy the AppHost because the contents of the apphost binary can change during the publish step (due to single-file bundling).
12460 Always copying the apphost ensures that that the sequence
12461 dotnet publish /p:PublishSingleFile=true
12462 dotnet publish /p:PublishSingleFile=false
12463 places the correct unbundled apphost in the publish directory. -->
12464 <CopyToPublishDirectory>Always</CopyToPublishDirectory>
12465 </None>
12466 </ItemGroup>
12467 <ItemGroup Condition="'$(ComHostIntermediatePath)' != ''">
12468 <None Include="$(ComHostIntermediatePath)">
12469 <Link>$(AssemblyName).$(_DotNetComHostLibraryName)</Link>
12470 <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
12471 <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
12472 </None>
12473 <None Include="@(RegFreeComManifest)" Condition="'$(EnableRegFreeCom)' == 'true'">
12474 <Link>%(FileName)%(Extension)</Link>
12475 <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
12476 <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
12477 </None>
12478 </ItemGroup>
12479 <ItemGroup Condition="'$(IjwHostSourcePath)' != '' and '$(UseIJWHost)' == 'true'">
12480 <None Include="$(IjwHostSourcePath)">
12481 <Link>$(_DotNetIjwHostLibraryName)</Link>
12482 <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
12483 <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
12484 </None>
12485 </ItemGroup>
12486 </Target>
12487 <!--
12488 ============================================================
12489 _ComputeReferenceAssemblies
12490 Computes references that are only used at compile-time.
12491 ============================================================
12492 -->
12493 <Target Name="_ComputeReferenceAssemblies" DependsOnTargets="ResolveAssemblyReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12494 <ItemGroup>
12495 <_FrameworkReferenceAssemblies Include="@(ReferencePath)" Condition="(%(ReferencePath.FrameworkFile) == 'true' or&#xD;&#xA; %(ReferencePath.ResolvedFrom) == 'ImplicitlyExpandDesignTimeFacades')&#xD;&#xA; and ('%(ReferencePath.NuGetSourceType)' == '' or&#xD;&#xA; '%(ReferencePath.NuGetIsFrameworkReference)' == 'true')" />
12496 <!--
12497 "ReferenceOnly" assemblies are assemblies that are only used at compile-time, and they can't be resolved
12498 by the normal compile-assembly resolvers at runtime:
12499 1. App local
12500 2. NuGet/Package layout
12501 3. ProgramFiles\Reference Assemblies
12502 These assemblies need to be copied to the 'refs' folder for both build and publish.
12503 -->
12504 <_ReferenceOnlyAssemblies Include="@(ReferencePath)" Exclude="@(_FrameworkReferenceAssemblies)" Condition="%(ReferencePath.CopyLocal) != 'true' and&#xD;&#xA; %(ReferencePath.NuGetSourceType) == ''" />
12505 <_ReferenceAssemblies Include="@(_FrameworkReferenceAssemblies)" />
12506 <_ReferenceAssemblies Include="@(_ReferenceOnlyAssemblies)" />
12507 </ItemGroup>
12508 </Target>
12509 <!--
12510 ============================================================
12511 _ComputeUserRuntimeAssemblies
12512 Computes references or reference dependencies that are copy local.
12513 NOTE: NuGet and framework references are never copy local so those are not included here.
12514 These will be project references and direct references and their copy local dependencies.
12515 ============================================================
12516 -->
12517 <Target Name="_ComputeUserRuntimeAssemblies" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12518 <ItemGroup>
12519 <!-- IncludeRuntimeDependency=true metadata is escape hatch to include a non-copy local reference in deps file as a runtime dependency -->
12520 <ReferencePath>
12521 <IncludeRuntimeDependency Condition="'%(ReferencePath.IncludeRuntimeDependency)' == '' and '%(ReferencePath.CopyLocal)' == 'true'">true</IncludeRuntimeDependency>
12522 </ReferencePath>
12523 <ReferenceDependencyPaths>
12524 <IncludeRuntimeDependency Condition="'%(ReferenceDependencyPaths.IncludeRuntimeDependency)' == '' and '%(ReferenceDependencyPaths.CopyLocal)' == 'true'">true</IncludeRuntimeDependency>
12525 </ReferenceDependencyPaths>
12526 <UserRuntimeAssembly Include="@(ReferencePath-&gt;WithMetadataValue('IncludeRuntimeDependency', 'true'))" />
12527 <UserRuntimeAssembly Include="@(ReferenceDependencyPaths-&gt;WithMetadataValue('IncludeRuntimeDependency', 'true'))" />
12528 </ItemGroup>
12529 </Target>
12530 <!--
12531 ============================================================
12532 Run Information
12533 The ProcessStart information that can be used to run this project.
12534 ============================================================
12535 -->
12536 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12537 <RunWorkingDirectory Condition="'$(RunWorkingDirectory)' == ''">$(StartWorkingDirectory)</RunWorkingDirectory>
12538 </PropertyGroup>
12539 <Choose xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12540 <When Condition="'$(StartAction)' == 'Program'">
12541 <PropertyGroup>
12542 <RunCommand Condition="'$(RunCommand)' == ''">$(StartProgram)</RunCommand>
12543 <RunArguments Condition="'$(RunArguments)' == ''">$(StartArguments)</RunArguments>
12544 </PropertyGroup>
12545 </When>
12546 <When Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and '$(_IsExecutable)' == 'true'">
12547 <PropertyGroup Condition="'$(UseAppHost)' != 'true'">
12548 <!-- TODO: https://github.com/dotnet/sdk/issues/20 Need to get the DotNetHost path from MSBuild -->
12549 <RunCommand Condition="'$(RunCommand)' == ''">dotnet</RunCommand>
12550 <_NetCoreRunArguments>exec "$(TargetPath)"</_NetCoreRunArguments>
12551 <RunArguments Condition="'$(RunArguments)' == '' and '$(StartArguments)' != ''">$(_NetCoreRunArguments) $(StartArguments)</RunArguments>
12552 <RunArguments Condition="'$(RunArguments)' == ''">$(_NetCoreRunArguments)</RunArguments>
12553 </PropertyGroup>
12554 <PropertyGroup Condition="'$(UseAppHost)' == 'true'">
12555 <RunCommand Condition="'$(RunCommand)' == ''">$(TargetDir)$(AssemblyName)$(_NativeExecutableExtension)</RunCommand>
12556 <RunArguments Condition="'$(RunArguments)' == ''">$(StartArguments)</RunArguments>
12557 </PropertyGroup>
12558 </When>
12559 <When Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework' and '$(_IsExecutable)' == 'true'">
12560 <PropertyGroup Condition="$([MSBuild]::IsOSPlatform(`Windows`))">
12561 <RunCommand Condition="'$(RunCommand)' == ''">$(TargetPath)</RunCommand>
12562 <RunArguments Condition="'$(RunArguments)' == ''">$(StartArguments)</RunArguments>
12563 </PropertyGroup>
12564 <PropertyGroup Condition="$([MSBuild]::IsOSUnixLike())">
12565 <RunCommand Condition="'$(RunCommand)' == ''">mono</RunCommand>
12566 <RunArguments Condition="'$(RunArguments)' == ''">"$(TargetPath)" $(StartArguments)</RunArguments>
12567 </PropertyGroup>
12568 </When>
12569 </Choose>
12570 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12571 <!-- Ensure $(RunWorkingDirectory) is a full path -->
12572 <RunWorkingDirectory Condition="'$(RunWorkingDirectory)' != '' and '$([System.IO.Path]::IsPathRooted($(RunWorkingDirectory)))' != 'true'">$([System.IO.Path]::GetFullPath($([System.IO.Path]::Combine('$(MSBuildProjectDirectory)', '$(RunWorkingDirectory)'))))</RunWorkingDirectory>
12573 </PropertyGroup>
12574 <!-- Override MSBuild Run Target -->
12575 <Target Name="Run" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12576 <Exec Command="$(RunCommand) $(RunArguments)" WorkingDirectory="$(RunWorkingDirectory)" />
12577 </Target>
12578 <!--
12579 ============================================================
12580 CoreGenerateSatelliteAssemblies
12581 ============================================================
12582 -->
12583 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12584 <CreateSatelliteAssembliesDependsOn>
12585 $(CreateSatelliteAssembliesDependsOn);
12586 CoreGenerateSatelliteAssemblies
12587 </CreateSatelliteAssembliesDependsOn>
12588 </PropertyGroup>
12589 <UsingTask TaskName="GetAssemblyAttributes" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
12590 <Target Name="CoreGenerateSatelliteAssemblies" DependsOnTargets="ResolveAssemblyReferences;_GetAssemblyInfoFromTemplateFile" Inputs="$(MSBuildAllProjects);@(_SatelliteAssemblyResourceInputs);$(IntermediateOutputPath)$(TargetName)$(TargetExt)" Outputs="$(IntermediateOutputPath)%(Culture)\$(TargetName).resources.dll" Condition="'@(_SatelliteAssemblyResourceInputs)' != '' and '$(GenerateSatelliteAssembliesForCore)' == 'true' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12591 <MakeDir Directories="@(_SatelliteAssemblyResourceInputs->'$(IntermediateOutputPath)%(Culture)')" />
12592 <PropertyGroup>
12593 <_AssemblyInfoFile>$(IntermediateOutputPath)%(_SatelliteAssemblyResourceInputs.Culture)\$(TargetName).resources.cs</_AssemblyInfoFile>
12594 <_OutputAssembly>$(IntermediateOutputPath)%(_SatelliteAssemblyResourceInputs.Culture)\$(TargetName).resources.dll</_OutputAssembly>
12595 </PropertyGroup>
12596 <ItemGroup>
12597 <SatelliteAssemblyAttribute Include="System.Reflection.AssemblyCultureAttribute" Condition="'%(_SatelliteAssemblyResourceInputs.Culture)' != ''">
12598 <_Parameter1>%(_SatelliteAssemblyResourceInputs.Culture)</_Parameter1>
12599 </SatelliteAssemblyAttribute>
12600 </ItemGroup>
12601 <WriteCodeFragment AssemblyAttributes="@(SatelliteAssemblyAttribute)" Language="C#" OutputFile="$(_AssemblyInfoFile)">
12602 <Output TaskParameter="OutputFile" ItemName="FileWrites" />
12603 </WriteCodeFragment>
12604 <PropertyGroup Condition="'$(UseSharedCompilation)' == ''">
12605 <UseSharedCompilation>true</UseSharedCompilation>
12606 </PropertyGroup>
12607 <Csc Resources="@(_SatelliteAssemblyResourceInputs)" Sources="$(_AssemblyInfoFile)" OutputAssembly="$(_OutputAssembly)" References="@(ReferencePath)" KeyContainer="$(KeyContainerName)" KeyFile="$(KeyOriginatorFile)" NoConfig="true" NoLogo="$(NoLogo)" NoStandardLib="$(NoCompilerStandardLib)" Optimize="$(Optimize)" PublicSign="$(PublicSign)" DelaySign="$(DelaySign)" Deterministic="$(Deterministic)" DisabledWarnings="$(DisabledWarnings)" WarningLevel="$(WarningLevel)" WarningsAsErrors="$(WarningsAsErrors)" WarningsNotAsErrors="$(WarningsNotAsErrors)" TargetType="Library" ToolExe="$(CscToolExe)" ToolPath="$(CscToolPath)" UseSharedCompilation="$(UseSharedCompilation)">
12608 <Output TaskParameter="OutputAssembly" ItemName="FileWrites" />
12609 </Csc>
12610 </Target>
12611 <Target Name="_GetAssemblyInfoFromTemplateFile" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12612 <GetAssemblyAttributes PathToTemplateFile="$(IntermediateOutputPath)$(TargetName)$(TargetExt)">
12613 <Output TaskParameter="AssemblyAttributes" ItemName="_AssemblyAttributesFromTemplateFile" />
12614 </GetAssemblyAttributes>
12615 <ItemGroup>
12616 <SatelliteAssemblyAttribute Include="@(_AssemblyAttributesFromTemplateFile)" />
12617 </ItemGroup>
12618 </Target>
12619 <!--
12620 ============================================================
12621 GetAllRuntimeIdentifiers
12622 ============================================================
12623 -->
12624 <Target Name="GetAllRuntimeIdentifiers" Returns="$(RuntimeIdentifiers);$(RuntimeIdentifier)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
12625 <!--
12626 ============================================================
12627 _BlockWinMDsOnUnsupportedTFMs
12628 Block referencing or producing
12629 Windows Metadata files (.winmd) for target frameworks
12630 that do not support loading winmds directly
12631 into the runtime as assemblies
12632 ============================================================
12633 -->
12634 <UsingTask TaskName="CheckForUnsupportedWinMDReferences" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
12635 <Target Name="_BlockWinMDsOnUnsupportedTFMs" AfterTargets="PreBuildEvent" DependsOnTargets="ResolveReferences" Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), '5.0'))" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12636 <CheckForUnsupportedWinMDReferences TargetFrameworkMoniker="$(TargetFrameworkMoniker)" ReferencePaths="@(ReferencePath)" />
12637 <NETSdkError Condition="'$(OutputType)' == 'winmdobj'" ResourceName="WinMDObjNotSupportedOnTargetFramework" FormatArguments="$(TargetFrameworkMoniker)" />
12638 </Target>
12639 <!--
12640 ============================================================
12641 InjectTargetPathMetadata
12642 Update TargetPathWithTargetPlatformMoniker with target framework
12643 identifier and version metadata. This is so that the
12644 ImplicitlyExpandNETStandardFacades target can determine if a
12645 referenced project needs the .NET Standard facades even if
12646 the project hasn't been compiled to disk yet.
12647 See https://github.com/dotnet/sdk/issues/1403 for more context
12648 ============================================================
12649 -->
12650 <ItemDefinitionGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12651 <TargetPathWithTargetPlatformMoniker>
12652 <TargetFrameworkIdentifier>$(TargetFrameworkIdentifier)</TargetFrameworkIdentifier>
12653 <TargetFrameworkVersion>$(_TargetFrameworkVersionWithoutV)</TargetFrameworkVersion>
12654 </TargetPathWithTargetPlatformMoniker>
12655 </ItemDefinitionGroup>
12656 <!--
12657 ============================================================
12658 GenerateSupportedTargetFrameworkAlias
12659 Generate a list of valid TargetFramework aliases for the project
12660 system to consume for the target framework properties page drop down
12661 ============================================================
12662 -->
12663 <UsingTask TaskName="GenerateSupportedTargetFrameworkAlias" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
12664 <Target Name="GenerateSupportedTargetFrameworkAlias" Returns="@(SupportedTargetFrameworkAlias)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12665 <GenerateSupportedTargetFrameworkAlias SupportedTargetFramework="@(SupportedTargetFramework)" TargetFrameworkMoniker="$(TargetFrameworkMoniker)" TargetPlatformMoniker="$(TargetPlatformMoniker)" UseWpf="$(UseWpf)" UseWindowsForms="$(UseWindowsForms)">
12666 <Output TaskParameter="SupportedTargetFrameworkAlias" ItemName="SupportedTargetFrameworkAlias" />
12667 </GenerateSupportedTargetFrameworkAlias>
12668 </Target>
12669 <!--
12670 ============================================================
12671 ValidateExecutableReferences
12672 ============================================================
12673 -->
12674 <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12675 <AdditionalTargetFrameworkInfoProperty Include="SelfContained" />
12676 <AdditionalTargetFrameworkInfoProperty Include="_IsExecutable" />
12677 <AdditionalTargetFrameworkInfoProperty Include="ShouldBeValidatedAsExecutableReference" />
12678 </ItemGroup>
12679 <PropertyGroup Condition="'$(RuntimeIdentifier)' == 'browser-wasm'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12680 <!-- Don't generate a NETSDK1151 error if a non self-contained Exe references a Blazor wasm Exe -->
12681 <ShouldBeValidatedAsExecutableReference>false</ShouldBeValidatedAsExecutableReference>
12682 </PropertyGroup>
12683 <PropertyGroup Condition="'$(IsTestProject)' == 'true' And '$(ValidateExecutableReferencesMatchSelfContained)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12684 <!-- Don't generate an error if a test project references a self-contained Exe. Test projects
12685 use an OutputType of Exe but will usually call APIs in a referenced Exe rather than try
12686 to run it. -->
12687 <ValidateExecutableReferencesMatchSelfContained>false</ValidateExecutableReferencesMatchSelfContained>
12688 </PropertyGroup>
12689 <PropertyGroup Condition="'$(IsTestProject)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12690 <!-- Don't generate an error if an Exe project references a test project. -->
12691 <ShouldBeValidatedAsExecutableReference>false</ShouldBeValidatedAsExecutableReference>
12692 </PropertyGroup>
12693 <UsingTask TaskName="ValidateExecutableReferences" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
12694 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12695 <_UseAttributeForTargetFrameworkInfoPropertyNames Condition="$([MSBuild]::VersionGreaterThanOrEquals($(MSBuildVersion), '17.0'))">true</_UseAttributeForTargetFrameworkInfoPropertyNames>
12696 </PropertyGroup>
12697 <Target Name="ValidateExecutableReferences" AfterTargets="_GetProjectReferenceTargetFrameworkProperties" Condition="'$(ValidateExecutableReferencesMatchSelfContained)' != 'false'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12698 <ValidateExecutableReferences SelfContained="$(SelfContained)" IsExecutable="$(_IsExecutable)" ReferencedProjects="@(_MSBuildProjectReferenceExistent)" UseAttributeForTargetFrameworkInfoPropertyNames="$(_UseAttributeForTargetFrameworkInfoPropertyNames)" />
12699 </Target>
12700 <!--
12701 ============================================================
12702 Command Line Configuration Validation
12703 ============================================================
12704 -->
12705 <Target Name="ValidateCommandLineProperties" AfterTargets="_CheckForInvalidConfigurationAndPlatform" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12706 <NETSdkWarning Condition="'$(_CommandLineDefinedSelfContained)' != 'true' and&#xD;&#xA; '$(_CommandLineDefinedRuntimeIdentifier)' == 'true' and&#xD;&#xA; '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and&#xD;&#xA; $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), '6.0'))" ResourceName="SelfContainedOptionShouldBeUsedWithRuntime" />
12707 </Target>
12708 <!--
12709 ============================================================
12710 Project Capabilities
12711 ============================================================
12712 -->
12713 <ItemGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and '$(_IsExecutable)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12714 <ProjectCapability Include="CrossPlatformExecutable" />
12715 </ItemGroup>
12716 <!-- Reference Manager capabilities -->
12717 <ItemGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12718 <ProjectCapability Remove="ReferenceManagerAssemblies" />
12719 </ItemGroup>
12720 <!--
12721============================================================================================================================================
12722 <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.DisableStandardFrameworkResolution.targets" Condition="'$(DisableStandardFrameworkResolution)' == 'true'">
12723
12724C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.DisableStandardFrameworkResolution.targets
12725============================================================================================================================================
12726-->
12727 <!--
12728***********************************************************************************************
12729Microsoft.NET.DisableStandardFrameworkResolution.targets
12730
12731WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
12732 created a backup copy. Incorrect changes to this file will make it
12733 impossible to load or build your projects from the command-line or the IDE.
12734
12735Copyright (c) .NET Foundation. All rights reserved.
12736***********************************************************************************************
12737-->
12738 <Target Name="GetReferenceAssemblyPaths" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
12739 <Target Name="GetFrameworkPaths" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
12740 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12741 <_TargetFrameworkDirectories />
12742 <FrameworkPathOverride />
12743 <TargetFrameworkDirectory />
12744 <!-- all references (even the StdLib) come from packages -->
12745 <NoStdLib>true</NoStdLib>
12746 </PropertyGroup>
12747 <!--
12748============================================================================================================================================
12749 </Import>
12750
12751C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets
12752============================================================================================================================================
12753-->
12754 <!--
12755============================================================================================================================================
12756 <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.DesignerSupport.targets">
12757
12758C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.DesignerSupport.targets
12759============================================================================================================================================
12760-->
12761 <!--
12762***********************************************************************************************
12763Microsoft.NET.DesignerSupport.targets
12764
12765WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
12766 created a backup copy. Incorrect changes to this file will make it
12767 impossible to load or build your projects from the command-line or the IDE.
12768
12769Copyright (c) .NET Foundation. All rights reserved.
12770***********************************************************************************************
12771-->
12772 <PropertyGroup Condition="'$(DesignerRuntimeImplementationProjectOutputGroupDependsOn)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12773 <DesignerRuntimeImplementationProjectOutputGroupDependsOn>
12774 $(CommonOutputGroupsDependsOn);
12775 </DesignerRuntimeImplementationProjectOutputGroupDependsOn>
12776 </PropertyGroup>
12777 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12778 <DesignerRuntimeImplementationProjectOutputGroupDependsOn>
12779 $(DesignerRuntimeImplementationProjectOutputGroupDependsOn);
12780 _GenerateDesignerDepsFile;
12781 _GenerateDesignerRuntimeConfigFile;
12782 _GatherDesignerShadowCopyFiles;
12783 </DesignerRuntimeImplementationProjectOutputGroupDependsOn>
12784 <_DesignerDepsFileName>$(AssemblyName).designer.deps.json</_DesignerDepsFileName>
12785 <_DesignerRuntimeConfigFileName>$(AssemblyName).designer.runtimeconfig.json</_DesignerRuntimeConfigFileName>
12786 <_DesignerDepsFilePath>$(IntermediateOutputPath)$(_DesignerDepsFileName)</_DesignerDepsFilePath>
12787 <_DesignerRuntimeConfigFilePath>$(IntermediateOutputPath)$(_DesignerRuntimeConfigFileName)</_DesignerRuntimeConfigFilePath>
12788 </PropertyGroup>
12789 <Target Name="DesignerRuntimeImplementationProjectOutputGroup" DependsOnTargets="$(DesignerRuntimeImplementationProjectOutputGroupDependsOn)" Returns="@(DesignerRuntimeImplementationProjectOutputGroupOutput)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
12790 <Target Name="_GenerateDesignerDepsFile" Inputs="$(MSBuildAllProjectFiles);$(ProjectAssetsFile)" Outputs="$(_DesignerDepsFilePath)" Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12791 <!--
12792 NOTE: We do not include the main assembly info or non-NuGet dependencies
12793 in designer deps file as these files may not be built yet at design time.
12794 Instead, we rely on SetAppPaths in runtimeconfig to allow loading of
12795 non-NuGet assets from shadow copied app base directory. This further
12796 allows loading of designer dll(s) that are not seen by the build.
12797 -->
12798 <GenerateDepsFile AssemblyName="_" AssemblyExtension="_" AssemblyVersion="_" AssetsFilePath="$(ProjectAssetsFile)" DepsFilePath="$(_DesignerDepsFilePath)" IncludeMainProject="false" IncludeRuntimeFileVersions="$(IncludeFileVersionsInDependencyFile)" IsSelfContained="false" PlatformLibraryName="$(MicrosoftNETPlatformLibrary)" ProjectPath="$(MSBuildProjectFullPath)" RuntimeFrameworks="@(RuntimeFramework)" CompileReferences="@(ResolvedCompileFileDefinitions)" ResolvedNuGetFiles="@(NativeCopyLocalItems);@(ResourceCopyLocalItems);@(RuntimeCopyLocalItems)" ResolvedRuntimeTargetsFiles="@(RuntimeTargetsCopyLocalItems)" TargetFramework="$(TargetFramework)" RuntimeGraphPath="$(BundledRuntimeIdentifierGraphFile)" />
12799 <ItemGroup>
12800 <!-- Designer will rename to <surface process name>.deps.json -->
12801 <DesignerRuntimeImplementationProjectOutputGroupOutput Include="$([MSBuild]::NormalizePath($(_DesignerDepsFilePath)))" TargetPath="$(_DesignerDepsFileName)" />
12802 <FileWrites Include="$(_DesignerDepsFilePath)" />
12803 </ItemGroup>
12804 </Target>
12805 <Target Name="_GenerateDesignerRuntimeConfigFile" Inputs="$(MSBuildAllProjectFiles);$(ProjectAssetsFile)" Outputs="$(_DesignerRuntimeConfigFilePath)" Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12806 <ItemGroup>
12807 <_DesignerHostConfigurationOption Include="Microsoft.NETCore.DotNetHostPolicy.SetAppPaths" Value="true" />
12808 </ItemGroup>
12809 <GenerateRuntimeConfigurationFiles AdditionalProbingPaths="@(AdditionalProbingPath)" AssetsFilePath="$(ProjectAssetsFile)" HostConfigurationOptions="@(RuntimeHostConfigurationOption);@(_DesignerHostConfigurationOption)" IsSelfContained="false" PlatformLibraryName="$(MicrosoftNETPlatformLibrary)" RuntimeConfigPath="$(_DesignerRuntimeConfigFilePath)" RuntimeFrameworks="@(RuntimeFramework)" TargetFramework="$(TargetFramework)" TargetFrameworkMoniker="$(TargetFrameworkMoniker)" UserRuntimeConfig="$(UserRuntimeConfig)" WriteAdditionalProbingPathsToMainConfig="true" AlwaysIncludeCoreFramework="$(AlwaysIncludeCoreFrameworkInRuntimeConfig)" />
12810 <ItemGroup>
12811 <!-- Designer will rename to <surface process name>.runtimeconfig.json -->
12812 <DesignerRuntimeImplementationProjectOutputGroupOutput Include="$([MSBuild]::NormalizePath($(_DesignerRuntimeConfigFilePath)))" TargetPath="$(_DesignerRuntimeConfigFileName)" />
12813 <FileWrites Include="$(_DesignerRuntimeConfigFilePath)" />
12814 </ItemGroup>
12815 </Target>
12816 <Target Name="_GatherDesignerShadowCopyFiles" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12817 <ItemGroup>
12818 <_DesignerShadowCopy Include="@(ReferenceCopyLocalPaths)" />
12819 <!--
12820 For .NET Core, we do not include NuGet package assets or runtime pack
12821 assets, irrespective of self-contained / copy-local settings. Designer
12822 will load these from the NuGet cache or shared framework always.
12823 -->
12824 <_DesignerShadowCopy Remove="@(_ResolvedCopyLocalBuildAssets);@(RuntimePackAsset)" Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp'" />
12825 <DesignerRuntimeImplementationProjectOutputGroupOutput Include="@(_DesignerShadowCopy->'%(FullPath)')" TargetPath="%(_DesignerShadowCopy.DestinationSubDirectory)%(_DesignerShadowCopy.Filename)%(_DesignerShadowCopy.Extension)" />
12826 </ItemGroup>
12827 </Target>
12828 <!--
12829============================================================================================================================================
12830 </Import>
12831
12832C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets
12833============================================================================================================================================
12834-->
12835 <!--
12836============================================================================================================================================
12837 <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.GenerateAssemblyInfo.targets" Condition="'$(UsingNETSdkDefaults)' == 'true'">
12838
12839C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.GenerateAssemblyInfo.targets
12840============================================================================================================================================
12841-->
12842 <!--
12843***********************************************************************************************
12844Microsoft.NET.GenerateAssemblyInfo.targets
12845
12846WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
12847 created a backup copy. Incorrect changes to this file will make it
12848 impossible to load or build your projects from the command-line or the IDE.
12849
12850Copyright (c) .NET Foundation. All rights reserved.
12851***********************************************************************************************
12852-->
12853 <!--
12854 ============================================================
12855 GenerateAssemblyInfo
12856
12857 Generates assembly info source to intermediate directory
12858 ============================================================
12859 -->
12860 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12861 <GeneratedAssemblyInfoFile Condition="'$(GeneratedAssemblyInfoFile)' ==''">$(IntermediateOutputPath)$(MSBuildProjectName).AssemblyInfo$(DefaultLanguageSourceExtension)</GeneratedAssemblyInfoFile>
12862 <GenerateAssemblyInfo Condition="'$(GenerateAssemblyInfo)' == ''">true</GenerateAssemblyInfo>
12863 </PropertyGroup>
12864 <PropertyGroup Condition="'$(GenerateAssemblyInfo)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12865 <GenerateAssemblyCompanyAttribute Condition="'$(GenerateAssemblyCompanyAttribute)' == ''">true</GenerateAssemblyCompanyAttribute>
12866 <GenerateAssemblyConfigurationAttribute Condition="'$(GenerateAssemblyConfigurationAttribute)' == ''">true</GenerateAssemblyConfigurationAttribute>
12867 <GenerateAssemblyCopyrightAttribute Condition="'$(GenerateAssemblyCopyrightAttribute)' == ''">true</GenerateAssemblyCopyrightAttribute>
12868 <GenerateAssemblyDescriptionAttribute Condition="'$(GenerateAssemblyDescriptionAttribute)' == ''">true</GenerateAssemblyDescriptionAttribute>
12869 <GenerateAssemblyFileVersionAttribute Condition="'$(GenerateAssemblyFileVersionAttribute)' == ''">true</GenerateAssemblyFileVersionAttribute>
12870 <GenerateAssemblyInformationalVersionAttribute Condition="'$(GenerateAssemblyInformationalVersionAttribute)' == ''">true</GenerateAssemblyInformationalVersionAttribute>
12871 <GenerateAssemblyProductAttribute Condition="'$(GenerateAssemblyProductAttribute)' == ''">true</GenerateAssemblyProductAttribute>
12872 <GenerateAssemblyTitleAttribute Condition="'$(GenerateAssemblyTitleAttribute)' == ''">true</GenerateAssemblyTitleAttribute>
12873 <GenerateAssemblyVersionAttribute Condition="'$(GenerateAssemblyVersionAttribute)' == ''">true</GenerateAssemblyVersionAttribute>
12874 <GenerateRepositoryUrlAttribute Condition="'$(GenerateRepositoryUrlAttribute)' == '' and !('$(TargetFrameworkIdentifier)' == '.NETFramework' and $([MSBuild]::VersionLessThan($(TargetFrameworkVersion), 4.5)))">true</GenerateRepositoryUrlAttribute>
12875 <GenerateNeutralResourcesLanguageAttribute Condition="'$(GenerateNeutralResourcesLanguageAttribute)' == ''">true</GenerateNeutralResourcesLanguageAttribute>
12876 <GenerateAssemblyMetadataAttributes Condition="'$(GenerateAssemblyMetadataAttributes)' == ''">true</GenerateAssemblyMetadataAttributes>
12877 <IncludeSourceRevisionInInformationalVersion Condition="'$(IncludeSourceRevisionInInformationalVersion)' == ''">true</IncludeSourceRevisionInInformationalVersion>
12878 <GenerateInternalsVisibleToAttributes Condition="'$(GenerateInternalsVisibleToAttributes)' == ''">true</GenerateInternalsVisibleToAttributes>
12879 <GenerateRequiresPreviewFeaturesAttribute Condition="'$(GenerateRequiresPreviewFeaturesAttribute)' == '' and '$(IsNetCoreAppTargetingLatestTFM)' == 'true'">true</GenerateRequiresPreviewFeaturesAttribute>
12880 </PropertyGroup>
12881 <!--
12882 Note that this must run before every invocation of CoreCompile to ensure that all compiler
12883 runs see the generated assembly info. There is at least one scenario involving Xaml
12884 where CoreCompile is invoked without other potential hooks such as Compile or CoreBuild,
12885 etc., so we hook directly on to CoreCompile. Furthermore, we must run *after*
12886 PrepareForBuild to ensure that the intermediate directory has been created.
12887
12888 Targets that generate Compile items are also expected to run before
12889 BeforeCompile targets (common targets convention).
12890 -->
12891 <Target Name="GenerateAssemblyInfo" BeforeTargets="BeforeCompile;CoreCompile" DependsOnTargets="PrepareForBuild;CoreGenerateAssemblyInfo" Condition="'$(GenerateAssemblyInfo)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
12892 <Target Name="AddSourceRevisionToInformationalVersion" DependsOnTargets="GetAssemblyVersion;InitializeSourceControlInformation" Condition="'$(SourceControlInformationFeatureSupported)' == 'true' and '$(IncludeSourceRevisionInInformationalVersion)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12893 <PropertyGroup Condition="'$(SourceRevisionId)' != ''">
12894 <!-- Follow SemVer 2.0 rules -->
12895 <_InformationalVersionContainsPlus>false</_InformationalVersionContainsPlus>
12896 <_InformationalVersionContainsPlus Condition="$(InformationalVersion.Contains('+'))">true</_InformationalVersionContainsPlus>
12897 <InformationalVersion Condition="!$(_InformationalVersionContainsPlus)">$(InformationalVersion)+$(SourceRevisionId)</InformationalVersion>
12898 <InformationalVersion Condition="$(_InformationalVersionContainsPlus)">$(InformationalVersion).$(SourceRevisionId)</InformationalVersion>
12899 </PropertyGroup>
12900 </Target>
12901 <Target Name="GetAssemblyAttributes" DependsOnTargets="GetAssemblyVersion;AddSourceRevisionToInformationalVersion" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12902 <ItemGroup>
12903 <AssemblyAttribute Include="System.Reflection.AssemblyCompanyAttribute" Condition="'$(Company)' != '' and '$(GenerateAssemblyCompanyAttribute)' == 'true'">
12904 <_Parameter1>$(Company)</_Parameter1>
12905 </AssemblyAttribute>
12906 <AssemblyAttribute Include="System.Reflection.AssemblyConfigurationAttribute" Condition="'$(Configuration)' != '' and '$(GenerateAssemblyConfigurationAttribute)' == 'true'">
12907 <_Parameter1>$(Configuration)</_Parameter1>
12908 </AssemblyAttribute>
12909 <AssemblyAttribute Include="System.Reflection.AssemblyCopyrightAttribute" Condition="'$(Copyright)' != '' and '$(GenerateAssemblyCopyrightAttribute)' == 'true'">
12910 <_Parameter1>$(Copyright)</_Parameter1>
12911 </AssemblyAttribute>
12912 <AssemblyAttribute Include="System.Reflection.AssemblyDescriptionAttribute" Condition="'$(Description)' != '' and '$(GenerateAssemblyDescriptionAttribute)' == 'true'">
12913 <_Parameter1>$(Description)</_Parameter1>
12914 </AssemblyAttribute>
12915 <AssemblyAttribute Include="System.Reflection.AssemblyFileVersionAttribute" Condition="'$(FileVersion)' != '' and '$(GenerateAssemblyFileVersionAttribute)' == 'true'">
12916 <_Parameter1>$(FileVersion)</_Parameter1>
12917 </AssemblyAttribute>
12918 <AssemblyAttribute Include="System.Reflection.AssemblyInformationalVersionAttribute" Condition="'$(InformationalVersion)' != '' and '$(GenerateAssemblyInformationalVersionAttribute)' == 'true'">
12919 <_Parameter1>$(InformationalVersion)</_Parameter1>
12920 </AssemblyAttribute>
12921 <AssemblyAttribute Include="System.Reflection.AssemblyProductAttribute" Condition="'$(Product)' != '' and '$(GenerateAssemblyProductAttribute)' == 'true'">
12922 <_Parameter1>$(Product)</_Parameter1>
12923 </AssemblyAttribute>
12924 <AssemblyAttribute Include="System.Reflection.AssemblyTitleAttribute" Condition="'$(AssemblyTitle)' != '' and '$(GenerateAssemblyTitleAttribute)' == 'true'">
12925 <_Parameter1>$(AssemblyTitle)</_Parameter1>
12926 </AssemblyAttribute>
12927 <AssemblyAttribute Include="System.Reflection.AssemblyVersionAttribute" Condition="'$(AssemblyVersion)' != '' and '$(GenerateAssemblyVersionAttribute)' == 'true'">
12928 <_Parameter1>$(AssemblyVersion)</_Parameter1>
12929 </AssemblyAttribute>
12930 <AssemblyAttribute Include="System.Reflection.AssemblyMetadataAttribute" Condition="'$(GenerateRepositoryUrlAttribute)' == 'true' and ('$(RepositoryUrl)' != '' or '$(PublishRepositoryUrl)' == 'true')">
12931 <_Parameter1>RepositoryUrl</_Parameter1>
12932 <_Parameter2 Condition="'$(RepositoryUrl)' != ''">$(RepositoryUrl)</_Parameter2>
12933 <_Parameter2 Condition="'$(RepositoryUrl)' == ''">$(PrivateRepositoryUrl)</_Parameter2>
12934 </AssemblyAttribute>
12935 <AssemblyAttribute Include="System.Resources.NeutralResourcesLanguageAttribute" Condition="'$(NeutralLanguage)' != '' and '$(GenerateNeutralResourcesLanguageAttribute)' == 'true'">
12936 <_Parameter1>$(NeutralLanguage)</_Parameter1>
12937 </AssemblyAttribute>
12938 <AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleTo" Condition="%(InternalsVisibleTo.Identity) != '' and '$(GenerateInternalsVisibleToAttributes)' == 'true'">
12939 <_Parameter1 Condition="'%(InternalsVisibleTo.Key)' != ''">%(InternalsVisibleTo.Identity), PublicKey=%(InternalsVisibleTo.Key)</_Parameter1>
12940 <_Parameter1 Condition="'%(InternalsVisibleTo.Key)' == '' and '$(PublicKey)' != ''">%(InternalsVisibleTo.Identity), PublicKey=$(PublicKey)</_Parameter1>
12941 <_Parameter1 Condition="'%(InternalsVisibleTo.Key)' == '' and '$(PublicKey)' == ''">%(InternalsVisibleTo.Identity)</_Parameter1>
12942 </AssemblyAttribute>
12943 <AssemblyAttribute Include="System.Reflection.AssemblyMetadata" Condition="%(AssemblyMetadata.Identity) != '' and '$(GenerateAssemblyMetadataAttributes)' == 'true'">
12944 <_Parameter1>%(AssemblyMetadata.Identity)</_Parameter1>
12945 <_Parameter2>%(AssemblyMetadata.Value)</_Parameter2>
12946 </AssemblyAttribute>
12947 <AssemblyAttribute Include="System.Runtime.Versioning.RequiresPreviewFeaturesAttribute" Condition="'$(EnablePreviewFeatures)' == 'true' and '$(GenerateRequiresPreviewFeaturesAttribute)' == 'true'" />
12948 </ItemGroup>
12949 <ItemGroup Condition="'$(TargetPlatformIdentifier)' != ''&#xD;&#xA; and '$(TargetPlatformVersion)' != ''&#xD;&#xA; and '$(TargetFrameworkIdentifier)' == '.NETCoreApp'&#xD;&#xA; and $([MSBuild]::VersionGreaterThanOrEquals($(_TargetFrameworkVersionWithoutV), '5.0'))">
12950 <AssemblyAttribute Include="System.Runtime.Versioning.TargetPlatformAttribute">
12951 <_Parameter1>$(TargetPlatformIdentifier)$(TargetPlatformVersion)</_Parameter1>
12952 </AssemblyAttribute>
12953 </ItemGroup>
12954 <ItemGroup Condition="'$(TargetPlatformIdentifier)' != ''&#xD;&#xA; and '$(SupportedOSPlatformVersion)' != ''&#xD;&#xA; and '$(TargetFrameworkIdentifier)' == '.NETCoreApp'&#xD;&#xA; and $([MSBuild]::VersionGreaterThanOrEquals($(_TargetFrameworkVersionWithoutV), '5.0'))">
12955 <AssemblyAttribute Include="System.Runtime.Versioning.SupportedOSPlatformAttribute" Condition="!$([MSBuild]::VersionEquals($(SupportedOSPlatformVersion), '0.0'))">
12956 <_Parameter1>$(TargetPlatformIdentifier)$(SupportedOSPlatformVersion)</_Parameter1>
12957 </AssemblyAttribute>
12958 <AssemblyAttribute Include="System.Runtime.Versioning.SupportedOSPlatformAttribute" Condition="$([MSBuild]::VersionEquals($(SupportedOSPlatformVersion), '0.0'))">
12959 <_Parameter1>$(TargetPlatformIdentifier)</_Parameter1>
12960 </AssemblyAttribute>
12961 </ItemGroup>
12962 </Target>
12963 <!--
12964 To allow version changes to be respected on incremental builds (e.g. through CLI parameters),
12965 create a hash of all assembly attributes so that the cache file will change with the calculated
12966 assembly attribute values and msbuild will then execute CoreGenerateAssembly to generate a new file.
12967 -->
12968 <Target Name="CreateGeneratedAssemblyInfoInputsCacheFile" DependsOnTargets="GetAssemblyAttributes" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12969 <PropertyGroup>
12970 <GeneratedAssemblyInfoInputsCacheFile>$(IntermediateOutputPath)$(MSBuildProjectName).AssemblyInfoInputs.cache</GeneratedAssemblyInfoInputsCacheFile>
12971 </PropertyGroup>
12972 <!-- We only use up to _Parameter1 for most attributes, but other targets may add additional assembly attributes with multiple parameters. -->
12973 <Hash ItemsToHash="@(AssemblyAttribute->'%(Identity)%(_Parameter1)%(_Parameter2)%(_Parameter3)%(_Parameter4)%(_Parameter5)%(_Parameter6)%(_Parameter7)%(_Parameter8)')">
12974 <Output TaskParameter="HashResult" PropertyName="_AssemblyAttributesHash" />
12975 </Hash>
12976 <WriteLinesToFile Lines="$(_AssemblyAttributesHash)" File="$(GeneratedAssemblyInfoInputsCacheFile)" Overwrite="True" WriteOnlyWhenDifferent="True" />
12977 <ItemGroup>
12978 <FileWrites Include="$(GeneratedAssemblyInfoInputsCacheFile)" />
12979 </ItemGroup>
12980 </Target>
12981 <Target Name="CoreGenerateAssemblyInfo" Condition="'$(Language)'=='VB' or '$(Language)'=='C#'" DependsOnTargets="CreateGeneratedAssemblyInfoInputsCacheFile" Inputs="$(GeneratedAssemblyInfoInputsCacheFile)" Outputs="$(GeneratedAssemblyInfoFile)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12982 <ItemGroup>
12983 <!-- Ensure the generated assemblyinfo file is not already part of the Compile sources, as a workaround for https://github.com/dotnet/sdk/issues/114 -->
12984 <Compile Remove="$(GeneratedAssemblyInfoFile)" />
12985 </ItemGroup>
12986 <WriteCodeFragment AssemblyAttributes="@(AssemblyAttribute)" Language="$(Language)" OutputFile="$(GeneratedAssemblyInfoFile)">
12987 <Output TaskParameter="OutputFile" ItemName="Compile" />
12988 <Output TaskParameter="OutputFile" ItemName="FileWrites" />
12989 </WriteCodeFragment>
12990 </Target>
12991 <!--
12992 ==================================================================
12993 GetAssemblyVersion
12994
12995 Parses the nuget package version set in $(Version) and returns
12996 the implied $(AssemblyVersion) and $(FileVersion).
12997
12998 e.g.:
12999 <Version>1.2.3-beta.4</Version>
13000
13001 implies:
13002 <AssemblyVersion>1.2.3</AssemblyVersion>
13003 <FileVersion>1.2.3</FileVersion>
13004
13005 Note that if $(AssemblyVersion) or $(FileVersion) are are already set, it
13006 is considered an override of the default inference from $(Version) and they
13007 are left unchanged by this target.
13008 ==================================================================
13009 -->
13010 <Target Name="GetAssemblyVersion" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13011 <GetAssemblyVersion Condition="'$(AssemblyVersion)' == ''" NuGetVersion="$(Version)">
13012 <Output TaskParameter="AssemblyVersion" PropertyName="AssemblyVersion" />
13013 </GetAssemblyVersion>
13014 <PropertyGroup>
13015 <FileVersion Condition="'$(FileVersion)' == ''">$(AssemblyVersion)</FileVersion>
13016 <InformationalVersion Condition="'$(InformationalVersion)' == ''">$(Version)</InformationalVersion>
13017 </PropertyGroup>
13018 </Target>
13019 <!--
13020============================================================================================================================================
13021 </Import>
13022
13023C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets
13024============================================================================================================================================
13025-->
13026 <!--
13027============================================================================================================================================
13028 <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.GenerateGlobalUsings.targets" Condition="'$(Language)' == 'C#'">
13029
13030C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.GenerateGlobalUsings.targets
13031============================================================================================================================================
13032-->
13033 <!--
13034***********************************************************************************************
13035Microsoft.NET.GenerateGlobalUsings.targets
13036
13037WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
13038 created a backup copy. Incorrect changes to this file will make it
13039 impossible to load or build your projects from the command-line or the IDE.
13040
13041Copyright (c) .NET Foundation. All rights reserved.
13042***********************************************************************************************
13043-->
13044 <!--
13045 ============================================================
13046 GenerateGlobalUsings
13047
13048 Generates implicit namespace imports source to intermediate directory for C# projects
13049 ============================================================
13050 -->
13051 <UsingTask TaskName="GenerateGlobalUsings" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
13052 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13053 <GeneratedGlobalUsingsFile Condition="'$(GeneratedGlobalUsingsFile)' ==''">$(IntermediateOutputPath)$(MSBuildProjectName).GlobalUsings.g$(DefaultLanguageSourceExtension)</GeneratedGlobalUsingsFile>
13054 </PropertyGroup>
13055 <!--
13056 Note that this must run before every invocation of CoreCompile to ensure that all compiler
13057 runs see the generated global usings. There is at least one scenario involving Xaml
13058 where CoreCompile is invoked without other potential hooks such as Compile or CoreBuild,
13059 etc., so we hook directly on to CoreCompile. Furthermore, we must run *after*
13060 PrepareForBuild to ensure that the intermediate directory has been created.
13061
13062 Targets that generate Compile items are also expected to run before
13063 BeforeCompile targets (common targets convention).
13064 -->
13065 <Target Name="GenerateGlobalUsings" BeforeTargets="BeforeCompile;CoreCompile" AfterTargets="PrepareForBuild" Condition="@(Using-&gt;Count()) != 0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13066 <GenerateGlobalUsings Usings="@(Using)">
13067 <Output TaskParameter="Lines" ItemName="_GlobalUsingLines" />
13068 </GenerateGlobalUsings>
13069 <WriteLinesToFile File="$(GeneratedGlobalUsingsFile)" Lines="@(_GlobalUsingLines)" Overwrite="true" WriteOnlyWhenDifferent="true" />
13070 <ItemGroup>
13071 <Compile Include="$(GeneratedGlobalUsingsFile)" />
13072 <!-- Performing a clean and waiting without a build results in build warnings in VS due to all the missing namespaces, so we'll avoid recording it in FileWrites -->
13073 </ItemGroup>
13074 </Target>
13075 <!--
13076============================================================================================================================================
13077 </Import>
13078
13079C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets
13080============================================================================================================================================
13081-->
13082 <!--
13083============================================================================================================================================
13084 <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.GenerateSupportedRuntime.targets">
13085
13086C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.GenerateSupportedRuntime.targets
13087============================================================================================================================================
13088-->
13089 <!--
13090***********************************************************************************************
13091Microsoft.NET.GenerateSupportedRuntime.targets
13092
13093WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
13094 created a backup copy. Incorrect changes to this file will make it
13095 impossible to load or build your projects from the command-line or the IDE.
13096
13097Copyright (c) .NET Foundation. All rights reserved.
13098***********************************************************************************************
13099-->
13100 <UsingTask TaskName="WriteAppConfigWithSupportedRuntime" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
13101 <UsingTask TaskName="SetGeneratedAppConfigMetadata" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
13102 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13103 <_GenerateSupportedRuntimeIntermediateAppConfig>$(IntermediateOutputPath)$(TargetFileName).withSupportedRuntime.config</_GenerateSupportedRuntimeIntermediateAppConfig>
13104 </PropertyGroup>
13105 <Target Name="GenerateSupportedRuntime" Condition="'$(GenerateSupportedRuntime)' != 'false' and '$(TargetFrameworkIdentifier)' == '.NETFramework' and '$(HasRuntimeOutput)' == 'true'" DependsOnTargets="_WriteAppConfigWithSupportedRuntime" BeforeTargets="GenerateBindingRedirects" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13106 <SetGeneratedAppConfigMetadata AppConfigFile="@(AppConfigWithTargetPath)" TargetName="$(TargetFileName).config" GeneratedAppConfigFile="$(_GenerateSupportedRuntimeIntermediateAppConfig)">
13107 <Output TaskParameter="OutputAppConfigFileWithMetadata" ItemName="_GenerateSupportedRuntimeAppConfigWithTargetPath" />
13108 </SetGeneratedAppConfigMetadata>
13109 <!--Override the AppConfigWithTargetPath for downstream target-->
13110 <ItemGroup>
13111 <AppConfigWithTargetPath Remove="@(AppConfigWithTargetPath)" />
13112 <AppConfigWithTargetPath Include="@(_GenerateSupportedRuntimeAppConfigWithTargetPath)" />
13113 </ItemGroup>
13114 </Target>
13115 <Target Name="_WriteAppConfigWithSupportedRuntime" Inputs="$(MSBuildAllProjects);@(AppConfigWithTargetPath)" Outputs="$(_GenerateSupportedRuntimeIntermediateAppConfig)" DependsOnTargets="PrepareForBuild" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13116 <WriteAppConfigWithSupportedRuntime AppConfigFile="@(AppConfigWithTargetPath)" TargetFrameworkIdentifier="$(TargetFrameworkIdentifier)" TargetFrameworkVersion="$(TargetFrameworkVersion)" TargetFrameworkProfile="$(TargetFrameworkProfile)" OutputAppConfigFile="$(_GenerateSupportedRuntimeIntermediateAppConfig)" />
13117 <ItemGroup>
13118 <FileWrites Include="@(_GenerateSupportedRuntimeAppConfigWithTargetPath)" />
13119 </ItemGroup>
13120 </Target>
13121 <!--
13122============================================================================================================================================
13123 </Import>
13124
13125C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets
13126============================================================================================================================================
13127-->
13128 <!--
13129============================================================================================================================================
13130 <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.ComposeStore.targets" Condition="'$(UsingNETSdkDefaults)' == 'true'">
13131
13132C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.ComposeStore.targets
13133============================================================================================================================================
13134-->
13135 <!--
13136***********************************************************************************************
13137Microsoft.NET.ComposeStore.targets
13138
13139WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
13140 created a backup copy. Incorrect changes to this file will make it
13141 impossible to load or build your projects from the command-line or the IDE.
13142
13143Copyright (c) .NET Foundation. All rights reserved.
13144***********************************************************************************************
13145-->
13146 <!--
13147 ============================================================
13148 ComposeStore
13149
13150 The main store entry point.
13151 ============================================================
13152 -->
13153 <Target Name="ComposeStore" DependsOnTargets="PrepareForComposeStore;&#xD;&#xA; PrepOptimizer;&#xD;&#xA; StoreWorkerMain;&#xD;&#xA; _CopyResolvedUnOptimizedFiles;&#xD;&#xA; StoreFinalizer;" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
13154 <!--
13155 ============================================================
13156 StoreWorkerMain
13157
13158 Processes the store project files
13159 ============================================================
13160 -->
13161 <Target Name="StoreWorkerMain" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13162 <ItemGroup>
13163 <_AllProjects Include="$(AdditionalProjects.Split('%3B'))" />
13164 <_AllProjects Include="$(MSBuildProjectFullPath)" />
13165 </ItemGroup>
13166 <MSBuild Projects="%(_AllProjects.Identity)" Targets="StoreWorkerMapper" BuildinParallel="$(BuildinParallel)" Properties="ComposeWorkingDir=$(ComposeWorkingDir);&#xD;&#xA; PublishDir=$(PublishDir);&#xD;&#xA; StoreStagingDir=$(StoreStagingDir);&#xD;&#xA; TargetFramework=$(_TFM);&#xD;&#xA; JitPath=$(JitPath);&#xD;&#xA; Crossgen=$(Crossgen);&#xD;&#xA; DisableImplicitFrameworkReferences=true;&#xD;&#xA; SkipUnchangedFiles=$(SkipUnchangedFiles);&#xD;&#xA; PreserveStoreLayout=$(PreserveStoreLayout);&#xD;&#xA; CreateProfilingSymbols=$(CreateProfilingSymbols);&#xD;&#xA; StoreSymbolsStagingDir=$(StoreSymbolsStagingDir)">
13167 <Output ItemName="AllResolvedPackagesPublished" TaskParameter="TargetOutputs" />
13168 </MSBuild>
13169 </Target>
13170 <!--
13171 ============================================================
13172 StoreWorkerMapper
13173
13174 Processes each package specified in a store project file
13175 ============================================================
13176 -->
13177 <Target Name="StoreWorkerMapper" Returns="@(ResolvedPackagesFromMapper)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13178 <ItemGroup>
13179 <PackageReferencesToStore Include="$(MSBuildProjectFullPath)">
13180 <PackageName>%(PackageReference.Identity)</PackageName>
13181 <PackageVersion>%(PackageReference.Version)</PackageVersion>
13182 <AdditionalProperties>
13183 StorePackageName=%(PackageReference.Identity);
13184 StorePackageVersion=%(PackageReference.Version);
13185 ComposeWorkingDir=$(ComposeWorkingDir);
13186 PublishDir=$(PublishDir);
13187 StoreStagingDir=$(StoreStagingDir);
13188 TargetFramework=$(TargetFramework);
13189 RuntimeIdentifier=$(RuntimeIdentifier);
13190 JitPath=$(JitPath);
13191 Crossgen=$(Crossgen);
13192 SkipUnchangedFiles=$(SkipUnchangedFiles);
13193 PreserveStoreLayout=$(PreserveStoreLayout);
13194 CreateProfilingSymbols=$(CreateProfilingSymbols);
13195 StoreSymbolsStagingDir=$(StoreSymbolsStagingDir);
13196 DisableImplicitFrameworkReferences=false;
13197 </AdditionalProperties>
13198 </PackageReferencesToStore>
13199 </ItemGroup>
13200 <!-- Restore phase -->
13201 <MSBuild Projects="@(PackageReferencesToStore)" Targets="RestoreForComposeStore" BuildInParallel="$(BuildInParallel)" />
13202 <!-- Resolve phase-->
13203 <MSBuild Projects="@(PackageReferencesToStore)" Targets="StoreResolver" Properties="SelfContained=false;UseAppHost=false;MSBuildProjectExtensionsPath=$(ComposeWorkingDir)\%(PackageReferencesToStore.PackageName)_$([System.String]::Copy('%(PackageReferencesToStore.PackageVersion)').Replace('*','-'))\;" BuildInParallel="$(BuildInParallel)">
13204 <Output ItemName="ResolvedPackagesFromMapper" TaskParameter="TargetOutputs" />
13205 </MSBuild>
13206 </Target>
13207 <Target Name="StoreResolver" Returns="@(ResolvedPackagesPublished)" DependsOnTargets="PrepforRestoreForComposeStore;&#xD;&#xA; StoreWorkerPerformWork" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
13208 <Target Name="StoreWorkerPerformWork" DependsOnTargets="ComputeAndCopyFilesToStoreDirectory;" Condition="Exists($(StoreWorkerWorkingDir))" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
13209 <!--
13210 ============================================================
13211 StoreFinalizer
13212
13213 Cleans up and produces artifacts after completion of store
13214 ============================================================
13215 -->
13216 <UsingTask TaskName="RemoveDuplicatePackageReferences" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
13217 <Target Name="StoreFinalizer" DependsOnTargets="StoreWorkerMain;&#xD;&#xA; _CopyResolvedOptimizedFiles" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13218 <RemoveDuplicatePackageReferences InputPackageReferences="@(AllResolvedPackagesPublished)">
13219 <Output TaskParameter="UniquePackageReferences" ItemName="AllResolvedPackagesPublishedAfterFilter" />
13220 </RemoveDuplicatePackageReferences>
13221 <ItemGroup>
13222 <ListOfPackageReference Include="@(AllResolvedPackagesPublishedAfterFilter -> '%20%20&lt;Package Id=&quot;%(Identity)&quot; Version=&quot;%(Version)&quot; /&gt;')" />
13223 </ItemGroup>
13224 <PropertyGroup>
13225 <_StoreArtifactContent><![CDATA[
13226<StoreArtifacts>
13227@(ListOfPackageReference)
13228</StoreArtifacts>
13229]]></_StoreArtifactContent>
13230 </PropertyGroup>
13231 <WriteLinesToFile File="$(StoreArtifactXml)" Lines="$(_StoreArtifactContent)" Overwrite="true" />
13232 <Message Text="Files were composed in $(PublishDir)" Importance="high" />
13233 <Message Text="The list of packages stored is in $(StoreArtifactXml) " Importance="high" />
13234 <RemoveDir Condition="'$(PreserveComposeWorkingDir)' != 'true'" Directories="$(ComposeWorkingDir)" />
13235 </Target>
13236 <!--
13237 ============================================================
13238 _CopyResolvedUnOptimizedFiles
13239
13240 Copy OptimizedResolvedFileToPublish items to the publish directory.
13241 ============================================================
13242 -->
13243 <Target Name="_CopyResolvedOptimizedFiles" DependsOnTargets="StoreWorkerMain;" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13244 <ItemGroup>
13245 <_OptimizedResolvedFileToPublish Include="$(StoreStagingDir)\**\*.*" />
13246 <_OptimizedSymbolFileToPublish Include="$(StoreSymbolsStagingDir)\**\*.*" />
13247 </ItemGroup>
13248 <Copy SourceFiles="@(_OptimizedResolvedFileToPublish)" DestinationFolder="$(PublishDir)%(_OptimizedResolvedFileToPublish.RecursiveDir)" OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" Condition="'@(_OptimizedResolvedFileToPublish)' != ''" SkipUnchangedFiles="$(SkipUnchangedFiles)">
13249 <Output TaskParameter="DestinationFiles" ItemName="FileWrites" />
13250 </Copy>
13251 <Copy SourceFiles="@(_OptimizedSymbolFileToPublish)" DestinationFolder="$(ProfilingSymbolsDir)%(_OptimizedSymbolFileToPublish.RecursiveDir)" OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" Condition="'@(_OptimizedSymbolFileToPublish)' != ''" SkipUnchangedFiles="$(SkipUnchangedFiles)">
13252 <Output TaskParameter="DestinationFiles" ItemName="FileWrites" />
13253 </Copy>
13254 </Target>
13255 <!--
13256 ============================================================
13257 PrepareForComposeStore
13258
13259 Prepare the prerequisites for ComposeStore.
13260 ============================================================
13261 -->
13262 <Target Name="PrepareForComposeStore" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13263 <PropertyGroup>
13264 <PreserveStoreLayout Condition="'$(PreserveStoreLayout)' == ''">true</PreserveStoreLayout>
13265 <SkipOptimization Condition="'$(RuntimeIdentifier)' == ''">true</SkipOptimization>
13266 <_TFM Condition="'$(_TFM)' == ''">$(TargetFramework)</_TFM>
13267 <SkipUnchangedFiles Condition="'$(SkipUnchangedFiles)' == ''">true</SkipUnchangedFiles>
13268 </PropertyGroup>
13269 <NETSdkError Condition="'2.0' &gt; '$(_TargetFrameworkVersionWithoutV)'" ResourceName="UnuspportedFramework" FormatArguments="$(TargetFrameworkMoniker)" />
13270 <NETSdkError Condition="'$(RuntimeIdentifier)' =='' and '$(_PureManagedAssets)' == ''" ResourceName="RuntimeIdentifierWasNotSpecified" />
13271 <NETSdkError Condition="'$(_TFM)' ==''" ResourceName="AtLeastOneTargetFrameworkMustBeSpecified" />
13272 <PropertyGroup>
13273 <DefaultComposeDir>$(UserProfileRuntimeStorePath)</DefaultComposeDir>
13274 <_ProfilingSymbolsDirectoryName>symbols</_ProfilingSymbolsDirectoryName>
13275 <DefaultProfilingSymbolsDir>$([System.IO.Path]::Combine($(DefaultComposeDir), $(_ProfilingSymbolsDirectoryName)))</DefaultProfilingSymbolsDir>
13276 <ProfilingSymbolsDir Condition="'$(ProfilingSymbolsDir)' == '' and '$(ComposeDir)' != ''">$([System.IO.Path]::Combine($(ComposeDir), $(_ProfilingSymbolsDirectoryName)))</ProfilingSymbolsDir>
13277 <ProfilingSymbolsDir Condition="'$(ProfilingSymbolsDir)' != '' and '$(DoNotDecorateComposeDir)' != 'true'">$([System.IO.Path]::Combine($(ProfilingSymbolsDir), $(PlatformTarget)))</ProfilingSymbolsDir>
13278 <ProfilingSymbolsDir Condition="'$(ProfilingSymbolsDir)' == ''">$(DefaultProfilingSymbolsDir)</ProfilingSymbolsDir>
13279 <ProfilingSymbolsDir Condition="'$(DoNotDecorateComposeDir)' != 'true'">$([System.IO.Path]::Combine($(ProfilingSymbolsDir), $(_TFM)))</ProfilingSymbolsDir>
13280 <ProfilingSymbolsDir Condition="!HasTrailingSlash('$(ProfilingSymbolsDir)')">$(ProfilingSymbolsDir)\</ProfilingSymbolsDir>
13281 <ComposeDir Condition="'$(ComposeDir)' == ''">$(DefaultComposeDir)</ComposeDir>
13282 <ComposeDir Condition="'$(DoNotDecorateComposeDir)' != 'true'">$([System.IO.Path]::Combine($(ComposeDir), $(PlatformTarget)))</ComposeDir>
13283 <ComposeDir Condition="'$(DoNotDecorateComposeDir)' != 'true'">$([System.IO.Path]::Combine($(ComposeDir), $(_TFM)))</ComposeDir>
13284 <StoreArtifactXml>$([System.IO.Path]::Combine($(ComposeDir),"artifact.xml"))</StoreArtifactXml>
13285 <PublishDir>$([System.IO.Path]::GetFullPath($(ComposeDir)))</PublishDir>
13286 <_RandomFileName>$([System.IO.Path]::GetRandomFileName())</_RandomFileName>
13287 <TEMP Condition="'$(TEMP)' == ''">$([System.IO.Path]::GetTempPath())</TEMP>
13288 <ComposeWorkingDir Condition="'$(ComposeWorkingDir)' == ''">$([System.IO.Path]::Combine($(TEMP), $(_RandomFileName)))</ComposeWorkingDir>
13289 <ComposeWorkingDir>$([System.IO.Path]::GetFullPath($(ComposeWorkingDir)))</ComposeWorkingDir>
13290 <StoreStagingDir>$([System.IO.Path]::Combine($(ComposeWorkingDir),"StagingDir"))</StoreStagingDir>
13291 <!-- Will contain optimized managed assemblies in nuget cache layout -->
13292 <StoreSymbolsStagingDir>$([System.IO.Path]::Combine($(ComposeWorkingDir),"SymbolsStagingDir"))</StoreSymbolsStagingDir>
13293 <!-- Ensure any PublishDir has a trailing slash, so it can be concatenated -->
13294 <PublishDir Condition="!HasTrailingSlash('$(PublishDir)')">$(PublishDir)\</PublishDir>
13295 </PropertyGroup>
13296 <PropertyGroup Condition="'$(CreateProfilingSymbols)' == ''">
13297 <!-- There is no support for profiling symbols on OSX -->
13298 <CreateProfilingSymbols Condition="$(RuntimeIdentifier.StartsWith('osx'))">false</CreateProfilingSymbols>
13299 <CreateProfilingSymbols Condition="'$(CreateProfilingSymbols)' == ''">true</CreateProfilingSymbols>
13300 </PropertyGroup>
13301 <NETSdkError Condition="Exists($(ComposeWorkingDir))" ResourceName="FolderAlreadyExists" FormatArguments="$(ComposeWorkingDir)" />
13302 <MakeDir Directories="$(PublishDir)" />
13303 <MakeDir Directories="$(StoreStagingDir)" />
13304 </Target>
13305 <Target Name="PrepforRestoreForComposeStore" DependsOnTargets="_DefaultMicrosoftNETPlatformLibrary" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13306 <PropertyGroup>
13307 <StorePackageVersionForFolderName>$(StorePackageVersion.Replace('*','-'))</StorePackageVersionForFolderName>
13308 <StoreWorkerWorkingDir>$([System.IO.Path]::Combine($(ComposeWorkingDir),"$(StorePackageName)_$(StorePackageVersionForFolderName)"))</StoreWorkerWorkingDir>
13309 <_PackageProjFile>$([System.IO.Path]::Combine($(StoreWorkerWorkingDir), "Restore.csproj"))</_PackageProjFile>
13310 <BaseIntermediateOutputPath>$(StoreWorkerWorkingDir)\</BaseIntermediateOutputPath>
13311 <ProjectAssetsFile>$(BaseIntermediateOutputPath)\project.assets.json</ProjectAssetsFile>
13312 </PropertyGroup>
13313 <PropertyGroup>
13314 <PackagesToPrune>$(MicrosoftNETPlatformLibrary)</PackagesToPrune>
13315 <SelfContained Condition="'$(SelfContained)' == ''">true</SelfContained>
13316 </PropertyGroup>
13317 </Target>
13318 <!--
13319 ============================================================
13320 RestoreForComposeStore
13321
13322 Restores the package
13323 ============================================================
13324 -->
13325 <Target Name="RestoreForComposeStore" DependsOnTargets="PrepforRestoreForComposeStore;" Condition="!Exists($(StoreWorkerWorkingDir))" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13326 <MakeDir Directories="$(StoreWorkerWorkingDir)" />
13327 <MSBuild Projects="$(MSBuildProjectFullPath)" Targets="Restore" Properties="RestoreGraphProjectInput=$(MSBuildProjectFullPath);&#xD;&#xA; RestoreOutputPath=$(BaseIntermediateOutputPath);&#xD;&#xA; StorePackageName=$(StorePackageName);&#xD;&#xA; StorePackageVersion=$(StorePackageVersion);&#xD;&#xA; RuntimeIdentifier=$(RuntimeIdentifier);&#xD;&#xA; TargetFramework=$(TargetFramework);" />
13328 </Target>
13329 <!--
13330 ============================================================
13331 ComputeAndCopyFilesToStoreDirectory
13332
13333 Computes the list of all files to copy to the publish directory and then publishes them.
13334 ============================================================
13335 -->
13336 <Target Name="ComputeAndCopyFilesToStoreDirectory" DependsOnTargets="ComputeFilesToStore;&#xD;&#xA; CopyFilesToStoreDirectory" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
13337 <!--
13338 ============================================================
13339 CopyFilesToStoreDirectory
13340
13341 Copy all build outputs, satellites and other necessary files to the publish directory.
13342 ============================================================
13343 -->
13344 <Target Name="CopyFilesToStoreDirectory" DependsOnTargets="_CopyResolvedUnOptimizedFiles" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
13345 <!--
13346 ============================================================
13347 _CopyResolvedUnOptimizedFiles
13348
13349 Copy _UnOptimizedResolvedFileToPublish items to the publish directory.
13350 ============================================================
13351 -->
13352 <Target Name="_CopyResolvedUnOptimizedFiles" DependsOnTargets="_ComputeResolvedFilesToStoreTypes;&#xD;&#xA; _RunOptimizer" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13353 <Copy SourceFiles="@(_UnOptimizedResolvedFileToPublish)" DestinationFiles="$(PublishDir)%(_UnOptimizedResolvedFileToPublish.DestinationSubPath)" OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" SkipUnchangedFiles="$(SkipUnchangedFiles)">
13354 <Output TaskParameter="DestinationFiles" ItemName="FileWrites" />
13355 </Copy>
13356 </Target>
13357 <!--
13358 ============================================================
13359 _ComputeResolvedFilesToStoreTypes
13360 ============================================================
13361 -->
13362 <Target Name="_ComputeResolvedFilesToStoreTypes" DependsOnTargets="_GetResolvedFilesToStore;_SplitResolvedFiles;" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
13363 <!--
13364 ============================================================
13365 _SplitResolvedFiles
13366
13367 Splits ResolvedFileToPublish items into 'managed' and 'unmanaged' buckets.
13368 ============================================================
13369 -->
13370 <Target Name="_SplitResolvedFiles" Condition="$(SkipOptimization) !='true' " DependsOnTargets="_GetResolvedFilesToStore" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13371 <ItemGroup>
13372 <_ManagedResolvedFileToPublishCandidates Include="@(ResolvedFileToPublish)" Condition="'%(ResolvedFileToPublish.AssetType)'=='runtime'" />
13373 <_UnOptimizedResolvedFileToPublish Include="@(ResolvedFileToPublish)" Condition="'%(ResolvedFileToPublish.AssetType)'!='runtime'" />
13374 </ItemGroup>
13375 <PropertyGroup>
13376 <SkipOptimization Condition="'@(_ManagedResolvedFileToPublishCandidates)'==''">true</SkipOptimization>
13377 </PropertyGroup>
13378 </Target>
13379 <!--
13380 ============================================================
13381 _GetResolvedFilesToStore
13382 ============================================================
13383 -->
13384 <Target Name="_GetResolvedFilesToStore" Condition="$(SkipOptimization) == 'true' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13385 <ItemGroup>
13386 <_UnOptimizedResolvedFileToPublish Include="@(ResolvedFileToPublish)" />
13387 </ItemGroup>
13388 </Target>
13389 <!--
13390 ============================================================
13391 ComputeFilesToStore
13392
13393 Gathers all the files that need to be copied to the publish directory.
13394 ============================================================
13395 -->
13396 <UsingTask TaskName="FilterResolvedFiles" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
13397 <Target Name="ComputeFilesToStore" DependsOnTargets="_ComputeResolvedCopyLocalPublishAssets;&#xD;&#xA; _ComputeCopyToPublishDirectoryItems" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13398 <PropertyGroup>
13399 <CopyBuildOutputToPublishDirectory Condition="'$(CopyBuildOutputToPublishDirectory)'==''">true</CopyBuildOutputToPublishDirectory>
13400 <CopyOutputSymbolsToPublishDirectory Condition="'$(CopyOutputSymbolsToPublishDirectory)'==''">true</CopyOutputSymbolsToPublishDirectory>
13401 </PropertyGroup>
13402 <FilterResolvedFiles AssetsFilePath="$(ProjectAssetsFile)" ResolvedFiles="@(_ResolvedCopyLocalPublishAssets)" PackagesToPrune="$(PackagesToPrune)" TargetFramework="$(TargetFramework)" RuntimeIdentifier="$(RuntimeIdentifier)" IsSelfContained="$(SelfContained)">
13403 <Output TaskParameter="AssembliesToPublish" ItemName="ResolvedFileToPublish" />
13404 <Output TaskParameter="PublishedPackages" ItemName="PackagesThatWereResolved" />
13405 </FilterResolvedFiles>
13406 <ItemGroup>
13407 <ResolvedPackagesPublished Include="@(PackagesThatWereResolved)" Condition="$(DoNotTrackPackageAsResolved) !='true'" />
13408 </ItemGroup>
13409 </Target>
13410 <!--
13411 ============================================================
13412 PrepRestoreForStoreProjects
13413
13414 Removes specified PackageReference for store and inserts the specified StorePackageName
13415 ============================================================
13416 -->
13417 <Target Name="PrepRestoreForStoreProjects" BeforeTargets="_GenerateProjectRestoreGraphPerFramework;" Condition="'$(StorePackageName)' != ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13418 <ItemGroup>
13419 <PackageReference Remove="@(PackageReference)" Condition="'%(PackageReference.IsImplicitlyDefined)' != 'true'" />
13420 <PackageReference Include="$(StorePackageName)" Version="$(StorePackageVersion)" />
13421 </ItemGroup>
13422 </Target>
13423 <!--
13424============================================================================================================================================
13425 </Import>
13426
13427C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets
13428============================================================================================================================================
13429-->
13430 <!--
13431============================================================================================================================================
13432 <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.CrossGen.targets">
13433
13434C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.CrossGen.targets
13435============================================================================================================================================
13436-->
13437 <!--
13438***********************************************************************************************
13439Microsoft.NET.CrossGen.targets
13440
13441WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
13442 created a backup copy. Incorrect changes to this file will make it
13443 impossible to load or build your projects from the command-line or the IDE.
13444
13445Copyright (c) .NET Foundation. All rights reserved.
13446***********************************************************************************************
13447-->
13448 <!--
13449 For ReadyToRun compilation, default to Crossgen for .NET Core 3.x and .NET 5. If PublishReadyToRunUseCrossgen2
13450 is set to true in the project or on the command line, use Crossgen2 and default to composite mode. For .NET 6
13451 and higher, always use Crossgen2 and default to non-composite mode.
13452 -->
13453 <PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and '$(_TargetFrameworkVersionWithoutV)' &gt;= '3.0'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13454 <PublishReadyToRunUseCrossgen2 Condition="'$(_TargetFrameworkVersionWithoutV)' &gt;= '6.0'">true</PublishReadyToRunUseCrossgen2>
13455 <PublishReadyToRunComposite Condition="'$(PublishReadyToRunComposite)' == '' and '$(_TargetFrameworkVersionWithoutV)' &gt;= '6.0'">false</PublishReadyToRunComposite>
13456 <PublishReadyToRunComposite Condition="'$(PublishReadyToRunComposite)' == ''">true</PublishReadyToRunComposite>
13457 <PublishReadyToRunComposite Condition="'$(PublishReadyToRunUseCrossgen2)' != 'true' or '$(SelfContained)' != 'true'">false</PublishReadyToRunComposite>
13458 <PublishReadyToRunUseRuntimePackOptimizationData Condition="'$(PublishReadyToRunUseRuntimePackOptimizationData)' == ''">true</PublishReadyToRunUseRuntimePackOptimizationData>
13459 <PublishReadyToRunPerfmapFormatVersion Condition="'$(PublishReadyToRunPerfmapFormatVersion)' == ''">1</PublishReadyToRunPerfmapFormatVersion>
13460 </PropertyGroup>
13461 <!--
13462 ============================================================
13463 PrepOptimizer
13464
13465 Sets up the common infrastructure for the optimization phase
13466 Outputs:
13467 JitPath
13468 Crossgen
13469 ============================================================
13470 -->
13471 <Target Name="PrepOptimizer" DependsOnTargets="_RestoreCrossgen;" Condition="$(SkipOptimization) != 'true' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13472 <!-- Get the coreclr path -->
13473 <ItemGroup>
13474 <_CoreclrResolvedPath Include="@(CrossgenResolvedAssembliesToPublish)" Condition="'%(CrossgenResolvedAssembliesToPublish.Filename)'=='coreclr'" />
13475 <_CoreclrResolvedPath Include="@(CrossgenResolvedAssembliesToPublish)" Condition="'%(CrossgenResolvedAssembliesToPublish.Filename)'=='libcoreclr'" />
13476 <_JitResolvedPath Include="@(CrossgenResolvedAssembliesToPublish)" Condition="'%(CrossgenResolvedAssembliesToPublish.Filename)'=='clrjit'" />
13477 <_JitResolvedPath Include="@(CrossgenResolvedAssembliesToPublish)" Condition="'%(CrossgenResolvedAssembliesToPublish.Filename)'=='libclrjit'" />
13478 </ItemGroup>
13479 <NETSdkError Condition="'@(_CoreclrResolvedPath-&gt;Count())' &gt; 1" ResourceName="MultipleFilesResolved" FormatArguments="coreclr" />
13480 <NETSdkError Condition="'@(_CoreclrResolvedPath)'== ''" ResourceName="UnableToFindResolvedPath" FormatArguments="coreclr" />
13481 <NETSdkError Condition="'@(_JitResolvedPath-&gt;Count())' &gt; 1" ResourceName="MultipleFilesResolved" FormatArguments="jit" />
13482 <NETSdkError Condition="'@(_JitResolvedPath)'== ''" ResourceName="UnableToFindResolvedPath" FormatArguments="jit" />
13483 <!-- Get the crossgen and jit path-->
13484 <PropertyGroup>
13485 <_CoreclrPath>@(_CoreclrResolvedPath)</_CoreclrPath>
13486 <JitPath>@(_JitResolvedPath)</JitPath>
13487 <_CoreclrDir>$([System.IO.Path]::GetDirectoryName($(_CoreclrPath)))</_CoreclrDir>
13488 <_CoreclrPkgDir>$([System.IO.Path]::Combine($(_CoreclrDir),"..\..\..\"))</_CoreclrPkgDir>
13489 <CrossgenDir>$([System.IO.Path]::Combine($(_CoreclrPkgDir),"tools"))</CrossgenDir>
13490 <!-- TODO override with rid specific tools path for x-arch -->
13491 <Crossgen>$([System.IO.Path]::Combine($(CrossgenDir),"crossgen"))</Crossgen>
13492 <Crossgen Condition="$([MSBuild]::IsOSPlatform(`Windows`))">$([System.IO.Path]::Combine($(CrossgenDir),"crossgen.exe"))</Crossgen>
13493 </PropertyGroup>
13494 <NETSdkError Condition="!Exists($(Crossgen))" ResourceName="UnableToFindResolvedPath" FormatArguments="$(Crossgen)" />
13495 <!-- Copy crossgen into the netcoreapp folder to ensure it can load Microsoft.DiaSymReader.Native when creating PDBs -->
13496 <Copy SourceFiles="$(Crossgen)" DestinationFolder="$(_NetCoreRefDir)" OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" UseHardlinksIfPossible="$(CreateHardLinksForPublishFilesIfPossible)" UseSymboliclinksIfPossible="$(CreateSymbolicLinksForPublishFilesIfPossible)">
13497 <Output TaskParameter="DestinationFiles" ItemName="FileWrites" />
13498 </Copy>
13499 <PropertyGroup>
13500 <Crossgen>$([System.IO.Path]::GetFullPath($([System.IO.Path]::Combine($(_NetCoreRefDir), $([System.IO.Path]::GetFileName($(Crossgen)))))))</Crossgen>
13501 </PropertyGroup>
13502 </Target>
13503 <!--
13504 ============================================================
13505 _RunOptimizer
13506
13507 Start the optimization phase
13508 ============================================================
13509 -->
13510 <Target Name="_RunOptimizer" DependsOnTargets="_InitializeBasicProps;&#xD;&#xA; _ComputeResolvedFilesToStoreTypes;&#xD;&#xA; _SetupStageForCrossgen" Condition="$(SkipOptimization) != 'true' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13511 <ItemGroup>
13512 <AssembliestoCrossgen Include="$(MSBuildProjectFullPath)">
13513 <Properties>
13514 CrossgenExe=$(Crossgen);
13515 CrossgenJit=$(JitPath);
13516 CrossgenInputAssembly=%(_ManagedResolvedFilesToOptimize.Fullpath);
13517 CrossgenOutputAssembly=$(_RuntimeOptimizedDir)$(DirectorySeparatorChar)%(_ManagedResolvedFilesToOptimize.FileName)%(_ManagedResolvedFilesToOptimize.Extension);
13518 CrossgenSubOutputPath=%(_ManagedResolvedFilesToOptimize.DestinationSubPath);
13519 _RuntimeOptimizedDir=$(_RuntimeOptimizedDir);
13520 PublishDir=$(StoreStagingDir);
13521 CrossgenPlatformAssembliesPath=$(_RuntimeRefDir)$(PathSeparator)$(_NetCoreRefDir);
13522 CreateProfilingSymbols=$(CreateProfilingSymbols);
13523 StoreSymbolsStagingDir=$(StoreSymbolsStagingDir);
13524 _RuntimeSymbolsDir=$(_RuntimeSymbolsDir)
13525 </Properties>
13526 </AssembliestoCrossgen>
13527 </ItemGroup>
13528 <!-- CrossGen the assemblies -->
13529 <MSBuild Projects="@(AssembliestoCrossgen)" Targets="RunCrossGen" BuildInParallel="$(BuildInParallel)" Condition="'@(_ManagedResolvedFilesToOptimize)' != ''" />
13530 </Target>
13531 <!--
13532 ============================================================
13533 RunCrossGen
13534 Target Encapsulating the crossgen command
13535 ============================================================
13536 -->
13537 <Target Name="RunCrossGen" DependsOnTargets="_InitializeBasicProps;" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13538 <PropertyGroup>
13539 <CrossgenProfilingSymbolsOutputDirectory>$([System.IO.Path]::GetDirectoryName($(_RuntimeSymbolsDir)\$(CrossgenSubOutputPath)))</CrossgenProfilingSymbolsOutputDirectory>
13540 <CrossgenSymbolsStagingDirectory>$([System.IO.Path]::GetDirectoryName($(StoreSymbolsStagingDir)\$(CrossgenSubOutputPath)))</CrossgenSymbolsStagingDirectory>
13541 <CrossgenCommandline>$(CrossgenExe) -nologo -readytorun -in "$(CrossgenInputAssembly)" -out "$(CrossgenOutputAssembly)" -jitpath "$(CrossgenJit)" -platform_assemblies_paths "$(CrossgenPlatformAssembliesPath)"</CrossgenCommandline>
13542 <CreateProfilingSymbolsOptionName Condition="$([MSBuild]::IsOSPlatform(`Windows`))">CreatePDB</CreateProfilingSymbolsOptionName>
13543 <CreateProfilingSymbolsOptionName Condition="'$(CreateProfilingSymbolsOptionName)' == ''">CreatePerfMap</CreateProfilingSymbolsOptionName>
13544 </PropertyGroup>
13545 <Message Text="CrossgenCommandline: $(CrossgenCommandline)" />
13546 <!--Optimization skip if the assembly is already present in the final output directory-->
13547 <Exec Command="$(CrossgenCommandline)" Condition="!Exists($([System.IO.Path]::Combine($(PublishDir),$(CrossgenSubOutputPath))))" IgnoreStandardErrorWarningFormat="true" />
13548 <Copy SourceFiles="$(CrossgenOutputAssembly)" DestinationFiles="$(PublishDir)\$(CrossgenSubOutputPath)" OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" Condition="!Exists($([System.IO.Path]::Combine($(PublishDir),$(CrossgenSubOutputPath))))">
13549 <Output TaskParameter="DestinationFiles" ItemName="FileWrites" />
13550 </Copy>
13551 <!-- Create profiling symbols if requested -->
13552 <MakeDir Directories="$(CrossgenProfilingSymbolsOutputDirectory)" Condition="'$(CreateProfilingSymbols)' == 'true' and Exists($(CrossgenOutputAssembly))" />
13553 <Exec Command="$(CrossgenExe) -nologo -readytorun -platform_assemblies_paths $(CrossgenPlatformAssembliesPath) -$(CreateProfilingSymbolsOptionName) $(CrossgenProfilingSymbolsOutputDirectory) $(CrossgenOutputAssembly)" Condition="'$(CreateProfilingSymbols)' == 'true' and Exists($(CrossgenOutputAssembly))" IgnoreStandardErrorWarningFormat="true" />
13554 <ItemGroup>
13555 <_ProfilingSymbols Include="$(CrossgenProfilingSymbolsOutputDirectory)\*" Condition="'$(CreateProfilingSymbols)' == 'true'" />
13556 </ItemGroup>
13557 <Copy SourceFiles="@(_ProfilingSymbols)" DestinationFolder="$(CrossgenSymbolsStagingDirectory)" Condition="'$(CreateProfilingSymbols)' == 'true'" OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)">
13558 <Output TaskParameter="DestinationFiles" ItemName="FileWrites" />
13559 </Copy>
13560 </Target>
13561 <Target Name="_InitializeBasicProps" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13562 <PropertyGroup>
13563 <PathSeparator>$([System.IO.Path]::PathSeparator)</PathSeparator>
13564 <DirectorySeparatorChar>$([System.IO.Path]::DirectorySeparatorChar)</DirectorySeparatorChar>
13565 </PropertyGroup>
13566 </Target>
13567 <!--
13568 ============================================================
13569 _GetCrossgenProps
13570 Generates props used by Crossgen
13571 ============================================================
13572 -->
13573 <Target Name="_GetCrossgenProps" Condition="$(SkipOptimization) != 'true' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13574 <PropertyGroup>
13575 <_CrossProjFileDir>$([System.IO.Path]::Combine($(ComposeWorkingDir),"Optimize"))</_CrossProjFileDir>
13576 <_NetCoreRefDir>$([System.IO.Path]::Combine($(_CrossProjFileDir), "netcoreapp"))</_NetCoreRefDir>
13577 <!-- flat netcore app assemblies-->
13578 </PropertyGroup>
13579 <MakeDir Directories="$(_CrossProjFileDir)" />
13580 <PropertyGroup>
13581 <_CrossProjAssetsFile>$([System.IO.Path]::Combine($(_CrossProjFileDir), project.assets.json))</_CrossProjAssetsFile>
13582 </PropertyGroup>
13583 </Target>
13584 <!--
13585 ============================================================
13586 _SetupStageForCrossgen
13587 ============================================================
13588 -->
13589 <Target Name="_SetupStageForCrossgen" DependsOnTargets="_GetCrossgenProps;" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13590 <PropertyGroup>
13591 <_RuntimeRefDir>$([System.IO.Path]::Combine($(StoreWorkerWorkingDir), "runtimeref"))</_RuntimeRefDir>
13592 <!-- flat app managed assemblies -->
13593 <_RuntimeOptimizedDir>$([System.IO.Path]::Combine($(StoreWorkerWorkingDir), "runtimopt"))</_RuntimeOptimizedDir>
13594 <!-- optimized app managed assemblies in nuget cache layout -->
13595 <_RuntimeSymbolsDir>$([System.IO.Path]::Combine($(StoreWorkerWorkingDir), "runtimesymbols"))</_RuntimeSymbolsDir>
13596 </PropertyGroup>
13597 <ItemGroup>
13598 <_ManagedResolvedFilesToOptimize Include="@(_ManagedResolvedFileToPublishCandidates)" />
13599 </ItemGroup>
13600 <MakeDir Directories="$(_RuntimeOptimizedDir)" />
13601 <MakeDir Directories="$(_RuntimeSymbolsDir)" Condition="'$(CreateProfilingSymbols)' == 'true'" />
13602 <!-- Copy managed files to a flat temp directory for passing it as ref -->
13603 <Copy SourceFiles="@(_ManagedResolvedFilesToOptimize)" DestinationFolder="$(_RuntimeRefDir)" OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" UseHardlinksIfPossible="$(CreateHardLinksForPublishFilesIfPossible)" UseSymboliclinksIfPossible="$(CreateSymbolicLinksForPublishFilesIfPossible)">
13604 <Output TaskParameter="DestinationFiles" ItemName="FileWrites" />
13605 </Copy>
13606 </Target>
13607 <!--
13608 ============================================================
13609 _RestoreCrossgen
13610 Restores netcoreapp and publishes it to a temp directory
13611 ============================================================
13612 -->
13613 <Target Name="_RestoreCrossgen" DependsOnTargets="PrepforRestoreForComposeStore;&#xD;&#xA; _SetupStageForCrossgen;&#xD;&#xA; ProcessFrameworkReferences;&#xD;&#xA; ApplyImplicitVersions;&#xD;&#xA; _ComputePackageReferencePublish" Condition="$(SkipOptimization) != 'true' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13614 <ItemGroup>
13615 <!-- Filter package references to the one for the platform library, in order to find the right version -->
13616 <PackageReferenceForCrossGen Include="@(PackageReference)" Condition="'%(Identity)' == '$(MicrosoftNETPlatformLibrary)'" />
13617 </ItemGroup>
13618 <MSBuild Projects="$(MSBuildProjectFullPath)" Targets="Restore" Properties="RuntimeIdentifiers=$(RuntimeIdentifier);&#xD;&#xA; RestoreGraphProjectInput=$(MSBuildProjectFullPath);&#xD;&#xA; RestoreOutputPath=$(_CrossProjFileDir);&#xD;&#xA; StorePackageName=$(MicrosoftNETPlatformLibrary);&#xD;&#xA; StorePackageVersion=%(PackageReferenceForCrossGen.Version);" />
13619 <!-- For future: Use ResolvePackageAssets instead of ResolveCopyLocalAssets, delete ResolveCopyLocalAssets task -->
13620 <ResolveCopyLocalAssets Condition="'$(_TargetFrameworkVersionWithoutV)' &lt; '3.0'" AssetsFilePath="$(_CrossProjAssetsFile)" TargetFramework="$(_TFM)" RuntimeIdentifier="$(RuntimeIdentifier)" PlatformLibraryName="$(MicrosoftNETPlatformLibrary)" RuntimeFrameworks="@(RuntimeFramework)" ExcludedPackageReferences="@(_ExcludeFromPublishPackageReference)" IsSelfContained="$(SelfContained)" PreserveStoreLayout="false">
13621 <Output TaskParameter="ResolvedAssets" ItemName="CrossgenResolvedAssembliesToPublish" />
13622 </ResolveCopyLocalAssets>
13623 <GetPackageDirectory Condition="'$(_TargetFrameworkVersionWithoutV)' &gt;= '3.0'" Items="@(RuntimePack)" AssetsFileWithAdditionalPackageFolders="$(_CrossProjAssetsFile)">
13624 <Output TaskParameter="Output" ItemName="_CrossgenRuntimePack" />
13625 </GetPackageDirectory>
13626 <ResolveRuntimePackAssets Condition="'$(_TargetFrameworkVersionWithoutV)' &gt;= '3.0'" FrameworkReferences="@(FrameworkReference)" ResolvedRuntimePacks="@(_CrossgenRuntimePack)">
13627 <Output TaskParameter="RuntimePackAssets" ItemName="CrossgenResolvedAssembliesToPublish" />
13628 </ResolveRuntimePackAssets>
13629 <!-- Copy managed files to a flat temp directory for passing it as ref for crossgen -->
13630 <Copy SourceFiles="@(CrossgenResolvedAssembliesToPublish)" DestinationFolder="$(_NetCoreRefDir)" OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" UseHardlinksIfPossible="$(CreateHardLinksForPublishFilesIfPossible)" UseSymboliclinksIfPossible="$(CreateSymbolicLinksForPublishFilesIfPossible)">
13631 <Output TaskParameter="DestinationFiles" ItemName="FileWrites" />
13632 </Copy>
13633 </Target>
13634 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13635 <MicrosoftNETCrossgenBuildTasksAssembly Condition="'$(MSBuildRuntimeType)' == 'Core'">$(MSBuildThisFileDirectory)..\tasks\net6.0\Microsoft.NET.Sdk.Crossgen.dll</MicrosoftNETCrossgenBuildTasksAssembly>
13636 <MicrosoftNETCrossgenBuildTasksAssembly Condition="'$(MSBuildRuntimeType)' != 'Core'">$(MSBuildThisFileDirectory)..\tasks\net472\Microsoft.NET.Sdk.Crossgen.dll</MicrosoftNETCrossgenBuildTasksAssembly>
13637 </PropertyGroup>
13638 <!--
13639 ============================================================
13640 CreateReadyToRunImages
13641
13642 Create ReadyToRun images for managed assemblies in _ResolvedFileToPublishAlways and _ResolvedFileToPublishPreserveNewest.
13643 ============================================================
13644 -->
13645 <Target Name="CreateReadyToRunImages" Condition="'$(_TargetFrameworkVersionWithoutV)' &gt;= '3.0' And '$(PublishReadyToRun)' == 'true' And '$(TargetFrameworkIdentifier)' == '.NETCoreApp'" DependsOnTargets="_PrepareForReadyToRunCompilation;&#xD;&#xA; _CreateR2RImages;&#xD;&#xA; _CreateR2RSymbols" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13646 <AllowEmptyTelemetry EventName="ReadyToRun" EventData="PublishReadyToRunUseCrossgen2=$(PublishReadyToRunUseCrossgen2);Crossgen2PackVersion=%(ResolvedCrossgen2Pack.NuGetPackageVersion);CompileListCount=@(_ReadyToRunCompileList-&gt;Count());FailedCount=@(_ReadyToRunCompilationFailures-&gt;Count())" />
13647 <NETSdkError Condition="'@(_ReadyToRunCompilationFailures)' != ''" ResourceName="ReadyToRunCompilationFailed" />
13648 <NETSdkInformation Condition="'$(_ReadyToRunCompilerHasWarnings)' != ''" ResourceName="ReadyToRunCompilationHasWarnings_Info" />
13649 <ItemGroup>
13650 <!--
13651 Note: we only remove the entries for the IL images and replace them with the entries for the R2R images.
13652 We do not do the same for PDBs, because the native PDBs created by the R2R compiler complement the IL PDBs
13653 and do not replace them. IL PDBs are still required for debugging. Native PDBs emitted by the R2R compiler are
13654 only used for profiling purposes.
13655 -->
13656 <ResolvedFileToPublish Remove="@(_ReadyToRunCompositeBuildInput)" />
13657 <ResolvedFileToPublish Remove="@(_ReadyToRunCompileList)" />
13658 <ResolvedFileToPublish Include="@(_ReadyToRunFilesToPublish)" />
13659 </ItemGroup>
13660 </Target>
13661 <!--
13662 ============================================================
13663 _PrepareForReadyToRunCompilation
13664
13665 Prepare build for ReadyToRun compilations. Builds list of assemblies to compile, and computes paths to ReadyToRun compiler bits
13666 ============================================================
13667 -->
13668 <UsingTask Condition="'$(Crossgen2TasksOverriden)' != 'true'" TaskName="PrepareForReadyToRunCompilation" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
13669 <Target Name="_PrepareForReadyToRunCompilation" DependsOnTargets="ResolveReadyToRunCompilers;_ComputeManagedRuntimePackAssemblies;_ComputeAssembliesToPostprocessOnPublish" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13670 <PropertyGroup>
13671 <_ReadyToRunOutputPath>$(IntermediateOutputPath)R2R</_ReadyToRunOutputPath>
13672 </PropertyGroup>
13673 <MakeDir Directories="$(_ReadyToRunOutputPath)" />
13674 <ItemGroup>
13675 <_ReadyToRunImplementationAssemblies Include="@(ResolvedFileToPublish-&gt;WithMetadataValue('PostprocessAssembly', 'true'))" />
13676 </ItemGroup>
13677 <!-- Even if app is not self-contained, crossgen requires closure of implementation assemblies. Resolve conflicts
13678 of the runtime pack assets as though we were copying them locally, and add them to the R2R implementation
13679 assembly list. -->
13680 <ItemGroup Condition="'$(SelfContained)' != 'true'">
13681 <_ReadyToRunImplementationAssemblies Include="@(_ManagedRuntimePackAssembly)" ReferenceOnly="true" />
13682 </ItemGroup>
13683 <ResolvePackageFileConflicts Condition="'$(SelfContained)' != 'true'" ReferenceCopyLocalPaths="@(_ReadyToRunImplementationAssemblies)">
13684 <Output TaskParameter="ReferenceCopyLocalPathsWithoutConflicts" ItemName="_ReadyToRunImplementationAssembliesWithoutConflicts" />
13685 </ResolvePackageFileConflicts>
13686 <ItemGroup Condition="'$(SelfContained)' != 'true'">
13687 <_ReadyToRunImplementationAssemblies Remove="@(_ReadyToRunImplementationAssemblies)" />
13688 <_ReadyToRunImplementationAssemblies Include="@(_ReadyToRunImplementationAssembliesWithoutConflicts)" />
13689 </ItemGroup>
13690 <ItemGroup>
13691 <_ReadyToRunPgoFiles Include="@(PublishReadyToRunPgoFiles)" />
13692 <_ReadyToRunPgoFiles Include="@(RuntimePackAsset)" Condition="'%(RuntimePackAsset.AssetType)' == 'pgodata' and '%(RuntimePackAsset.Extension)' == '.mibc' and '$(PublishReadyToRunUseRuntimePackOptimizationData)' == 'true'" />
13693 </ItemGroup>
13694 <PrepareForReadyToRunCompilation CrossgenTool="@(CrossgenTool)" Crossgen2Tool="@(Crossgen2Tool)" OutputPath="$(_ReadyToRunOutputPath)" MainAssembly="@(IntermediateAssembly)" Assemblies="@(_ReadyToRunImplementationAssemblies)" ExcludeList="@(PublishReadyToRunExclude)" EmitSymbols="$(PublishReadyToRunEmitSymbols)" IncludeSymbolsInSingleFile="$(IncludeSymbolsInSingleFile)" ReadyToRunUseCrossgen2="$(PublishReadyToRunUseCrossgen2)" Crossgen2Composite="$(PublishReadyToRunComposite)" PublishReadyToRunCompositeExclusions="@(PublishReadyToRunCompositeExclusions)">
13695 <Output TaskParameter="ReadyToRunCompileList" ItemName="_ReadyToRunCompileList" />
13696 <Output TaskParameter="ReadyToRunSymbolsCompileList" ItemName="_ReadyToRunSymbolsCompileList" />
13697 <Output TaskParameter="ReadyToRunFilesToPublish" ItemName="_ReadyToRunFilesToPublish" />
13698 <Output TaskParameter="ReadyToRunAssembliesToReference" ItemName="_ReadyToRunAssembliesToReference" />
13699 <Output TaskParameter="ReadyToRunCompositeBuildReferences" ItemName="_ReadyToRunCompositeBuildReferences" />
13700 <Output TaskParameter="ReadyToRunCompositeBuildInput" ItemName="_ReadyToRunCompositeBuildInput" />
13701 </PrepareForReadyToRunCompilation>
13702 </Target>
13703 <UsingTask Condition="'$(Crossgen2TasksOverriden)' != 'true'" TaskName="ResolveReadyToRunCompilers" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
13704 <Target Name="ResolveReadyToRunCompilers" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13705 <ResolveReadyToRunCompilers RuntimePacks="@(ResolvedRuntimePack)" Crossgen2Packs="@(ResolvedCrossgen2Pack)" TargetingPacks="@(ResolvedTargetingPack)" RuntimeGraphPath="$(BundledRuntimeIdentifierGraphFile)" NETCoreSdkRuntimeIdentifier="$(NETCoreSdkRuntimeIdentifier)" EmitSymbols="$(PublishReadyToRunEmitSymbols)" ReadyToRunUseCrossgen2="$(PublishReadyToRunUseCrossgen2)" PerfmapFormatVersion="$(PublishReadyToRunPerfmapFormatVersion)">
13706 <Output TaskParameter="CrossgenTool" ItemName="CrossgenTool" />
13707 <Output TaskParameter="Crossgen2Tool" ItemName="Crossgen2Tool" />
13708 </ResolveReadyToRunCompilers>
13709 </Target>
13710 <!--
13711 ============================================================
13712 _CreateR2RImages
13713
13714 Compiles assemblies in the _ReadyToRunCompileList list into ReadyToRun images
13715 ============================================================
13716 -->
13717 <UsingTask Condition="'$(Crossgen2TasksOverriden)' != 'true'" TaskName="RunReadyToRunCompiler" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
13718 <Target Name="_CreateR2RImages" Inputs="@(_ReadyToRunCompileList);@(_ReadyToRunCompositeBuildInput);@(_ReadyToRunPgoFiles)" Outputs="%(_ReadyToRunCompileList.OutputR2RImage);%(_ReadyToRunCompileList.OutputPDBImage)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13719 <RunReadyToRunCompiler CrossgenTool="@(CrossgenTool)" Crossgen2Tool="@(Crossgen2Tool)" UseCrossgen2="$(PublishReadyToRunUseCrossgen2)" Crossgen2PgoFiles="@(_ReadyToRunPgoFiles)" Crossgen2ExtraCommandLineArgs="$(PublishReadyToRunCrossgen2ExtraArgs)" ImplementationAssemblyReferences="@(_ReadyToRunAssembliesToReference)" ShowCompilerWarnings="$(PublishReadyToRunShowWarnings)" CompilationEntry="@(_ReadyToRunCompileList)" ContinueOnError="ErrorAndContinue" ReadyToRunCompositeBuildReferences="@(_ReadyToRunCompositeBuildReferences)" ReadyToRunCompositeBuildInput="@(_ReadyToRunCompositeBuildInput)">
13720 <Output TaskParameter="ExitCode" PropertyName="_ReadyToRunCompilerExitCode" />
13721 <Output TaskParameter="WarningsDetected" PropertyName="_ReadyToRunWarningsDetected" />
13722 </RunReadyToRunCompiler>
13723 <PropertyGroup>
13724 <!-- Use distinct property here as any of the invocations can set it -->
13725 <_ReadyToRunCompilerHasWarnings Condition="'$(_ReadyToRunWarningsDetected)' == 'true'">true</_ReadyToRunCompilerHasWarnings>
13726 </PropertyGroup>
13727 <ItemGroup>
13728 <_ReadyToRunCompilationFailures Condition="'$(_ReadyToRunCompilerExitCode)' != '' And $(_ReadyToRunCompilerExitCode) != 0" Include="@(_ReadyToRunCompileList)" />
13729 </ItemGroup>
13730 </Target>
13731 <!--
13732 ============================================================
13733 _CreateR2RSymbols
13734
13735 Emit native symbols for ReadyToRun images in the _ReadyToRunSymbolsCompileList list
13736 ============================================================
13737 -->
13738 <Target Name="_CreateR2RSymbols" Inputs="@(_ReadyToRunSymbolsCompileList)" Outputs="%(_ReadyToRunSymbolsCompileList.OutputPDBImage)" Condition="'$(PublishReadyToRunUseCrossgen2)' != 'true' or '@(Crossgen2Tool -> '%(IsVersion5)')' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13739 <RunReadyToRunCompiler CrossgenTool="@(CrossgenTool)" Crossgen2Tool="@(Crossgen2Tool)" UseCrossgen2="$(PublishReadyToRunUseCrossgen2)" Crossgen2ExtraCommandLineArgs="$(PublishReadyToRunCrossgen2ExtraArgs)" ImplementationAssemblyReferences="@(_ReadyToRunAssembliesToReference)" ShowCompilerWarnings="$(PublishReadyToRunShowWarnings)" CompilationEntry="@(_ReadyToRunSymbolsCompileList)" ContinueOnError="ErrorAndContinue">
13740 <Output TaskParameter="ExitCode" PropertyName="_ReadyToRunCompilerExitCode" />
13741 <Output TaskParameter="WarningsDetected" PropertyName="_ReadyToRunWarningsDetected" />
13742 </RunReadyToRunCompiler>
13743 <PropertyGroup>
13744 <!-- Use distinct property here as any of the invocations can set it -->
13745 <_ReadyToRunCompilerHasWarnings Condition="'$(_ReadyToRunWarningsDetected)' == 'true'">true</_ReadyToRunCompilerHasWarnings>
13746 </PropertyGroup>
13747 <ItemGroup>
13748 <_ReadyToRunCompilationFailures Condition="'$(_ReadyToRunCompilerExitCode)' != '' And $(_ReadyToRunCompilerExitCode) != 0" Include="@(_ReadyToRunSymbolsCompileList)" />
13749 </ItemGroup>
13750 </Target>
13751 <!--
13752============================================================================================================================================
13753 </Import>
13754
13755C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets
13756============================================================================================================================================
13757-->
13758 <!--
13759============================================================================================================================================
13760 <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.ObsoleteReferences.targets">
13761
13762C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.ObsoleteReferences.targets
13763============================================================================================================================================
13764-->
13765 <!--
13766***********************************************************************************************
13767Microsoft.NET.ObsoleteReferences.targets
13768
13769WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
13770 created a backup copy. Incorrect changes to this file will make it
13771 impossible to load or build your projects from the command-line or the IDE.
13772
13773Copyright (c) .NET Foundation. All rights reserved.
13774***********************************************************************************************
13775-->
13776 <PropertyGroup Condition="'$(NETCoreSdkBundledCliToolsProps)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13777 <NETCoreSdkBundledCliToolsProps>$(MSBuildThisFileDirectory)..\..\..\Microsoft.NETCoreSdk.BundledCliTools.props</NETCoreSdkBundledCliToolsProps>
13778 </PropertyGroup>
13779 <!--
13780============================================================================================================================================
13781 <Import Project="$(NETCoreSdkBundledCliToolsProps)" Condition="Exists('$(NETCoreSdkBundledCliToolsProps)')">
13782
13783C:\Program Files\dotnet\sdk\6.0.100\Microsoft.NETCoreSdk.BundledCliTools.props
13784============================================================================================================================================
13785-->
13786 <!--
13787***********************************************************************************************
13788Microsoft.NETCoreSdk.BundledCliTools.props
13789
13790WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
13791 created a backup copy. Incorrect changes to this file will make it
13792 impossible to load or build your projects from the command-line or the IDE.
13793
13794Copyright (c) .NET Foundation. All rights reserved.
13795***********************************************************************************************
13796-->
13797 <ItemGroup />
13798 <!--
13799============================================================================================================================================
13800 </Import>
13801
13802C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.ObsoleteReferences.targets
13803============================================================================================================================================
13804-->
13805 <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13806 <_ReferenceToObsoleteDotNetCliTool Include="@(DotNetCliToolReference)" />
13807 <DotNetCliToolReference Remove="@(BundledDotNetCliToolReference)" />
13808 <_ReferenceToObsoleteDotNetCliTool Remove="@(DotNetCliToolReference)" />
13809 </ItemGroup>
13810 <Target Name="_CheckForObsoleteDotNetCliToolReferences" BeforeTargets="CollectPackageReferences" Condition=" '$(SuppressObsoleteDotNetCliToolWarning)' != 'true' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13811 <NETSdkWarning Condition=" '%(_ReferenceToObsoleteDotNetCliTool.Identity)' != '' " ResourceName="ProjectContainsObsoleteDotNetCliTool" FormatArguments="%(_ReferenceToObsoleteDotNetCliTool.Identity)" />
13812 </Target>
13813 <!--
13814============================================================================================================================================
13815 </Import>
13816
13817C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets
13818============================================================================================================================================
13819-->
13820 <!--
13821============================================================================================================================================
13822 <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Publish.targets">
13823
13824C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Publish.targets
13825============================================================================================================================================
13826-->
13827 <!--
13828***********************************************************************************************
13829Microsoft.NET.Publish.targets
13830
13831WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
13832 created a backup copy. Incorrect changes to this file will make it
13833 impossible to load or build your projects from the command-line or the IDE.
13834
13835Copyright (c) .NET Foundation. All rights reserved.
13836***********************************************************************************************
13837-->
13838 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13839 <DefaultCopyToPublishDirectoryMetadata Condition="'$(DefaultCopyToPublishDirectoryMetadata)' == ''">true</DefaultCopyToPublishDirectoryMetadata>
13840 <_GetChildProjectCopyToPublishDirectoryItems Condition="'$(_GetChildProjectCopyToPublishDirectoryItems)' == ''">true</_GetChildProjectCopyToPublishDirectoryItems>
13841 <IsPublishable Condition="'$(IsPublishable)' == ''">true</IsPublishable>
13842 </PropertyGroup>
13843 <ItemDefinitionGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13844 <ResolvedFileToPublish>
13845 <CopyToPublishDirectory>Always</CopyToPublishDirectory>
13846 </ResolvedFileToPublish>
13847 </ItemDefinitionGroup>
13848 <!--
13849 ============================================================
13850 Publish
13851
13852 The main publish entry point.
13853 ============================================================
13854 -->
13855 <!--<Import Project="Microsoft.NET.ClickOnce.targets" Condition="'$(PublishProtocol)' == 'ClickOnce'" />-->
13856 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13857 <!-- We still need to resolve references even if we are not building during publish. -->
13858 <!-- BuildOnlySettings are required for RAR to find satellites and dependencies -->
13859 <_BeforePublishNoBuildTargets>
13860 BuildOnlySettings;
13861 _PreventProjectReferencesFromBuilding;
13862 ResolveReferences;
13863 PrepareResourceNames;
13864 ComputeIntermediateSatelliteAssemblies;
13865 ComputeEmbeddedApphostPaths;
13866 </_BeforePublishNoBuildTargets>
13867 <_CorePublishTargets>
13868 PrepareForPublish;
13869 ComputeAndCopyFilesToPublishDirectory;
13870 $(PublishProtocolProviderTargets);
13871 PublishItemsOutputGroup;
13872 </_CorePublishTargets>
13873 <_PublishNoBuildAlternativeDependsOn>$(_BeforePublishNoBuildTargets);$(_CorePublishTargets)</_PublishNoBuildAlternativeDependsOn>
13874 </PropertyGroup>
13875 <Target Name="_PublishBuildAlternative" Condition="'$(NoBuild)' != 'true'" DependsOnTargets="Build;$(_CorePublishTargets)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
13876 <Target Name="_PublishNoBuildAlternative" Condition="'$(NoBuild)' == 'true'" DependsOnTargets="$(_PublishNoBuildAlternativeDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
13877 <Target Name="Publish" Condition="$(IsPublishable) == 'true'" DependsOnTargets="_PublishBuildAlternative;_PublishNoBuildAlternative" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13878 <!-- Ensure there is minimal verbosity output pointing to the publish directory and not just the
13879 build step's minimal output. Otherwise there is no indication at minimal verbosity of where
13880 the published assets were copied. -->
13881 <Message Importance="High" Text="$(MSBuildProjectName) -&gt; $([System.IO.Path]::GetFullPath('$(PublishDir)'))" />
13882 <AllowEmptyTelemetry EventName="PublishProperties" EventData="PublishReadyToRun=$(PublishReadyToRun);PublishTrimmed=$(PublishTrimmed);PublishSingleFile=$(PublishSingleFile)" />
13883 </Target>
13884 <!-- Don't let project reference resolution build project references in NoBuild case. -->
13885 <Target Name="_PreventProjectReferencesFromBuilding" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13886 <PropertyGroup>
13887 <BuildProjectReferences>false</BuildProjectReferences>
13888 </PropertyGroup>
13889 </Target>
13890 <!--
13891 ============================================================
13892 PrepareForPublish
13893
13894 Prepare the prerequisites for publishing.
13895 ============================================================
13896 -->
13897 <Target Name="PrepareForPublish" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13898 <NETSdkError Condition="'$(PublishSingleFile)' == 'true' And '$(_IsExecutable)' != 'true'" ResourceName="CannotHaveSingleFileWithoutExecutable" />
13899 <NETSdkError Condition="'$(PublishSingleFile)' == 'true' And '$(_IsExecutable)' == 'true' And '$(TargetFrameworkIdentifier)' != '.NETCoreApp'" ResourceName="CanOnlyHaveSingleFileWithNetCoreApp" />
13900 <NETSdkError Condition="'$(PublishSingleFile)' == 'true' And&#xD;&#xA; '$(IncludeSymbolsInSingleFile)' == 'true' And&#xD;&#xA; '$(_TargetFrameworkVersionWithoutV)' &gt;= '5.0' And '$(TargetFrameworkIdentifier)' == '.NETCoreApp'" ResourceName="CannotIncludeSymbolsInSingleFile" />
13901 <NETSdkError Condition="'$(PublishSingleFile)' == 'true' and '$(RuntimeIdentifier)' == ''" ResourceName="CannotHaveSingleFileWithoutRuntimeIdentifier" />
13902 <NETSdkError Condition="'$(PublishSingleFile)' == 'true' and '$(UseAppHost)' != 'true'" ResourceName="CannotHaveSingleFileWithoutAppHost" />
13903 <NETSdkError Condition="'$(PublishSingleFile)' == 'true' And&#xD;&#xA; '$(EnableCompressionInSingleFile)' == 'true' And&#xD;&#xA; '$(_TargetFrameworkVersionWithoutV)' &lt; '6.0'" ResourceName="CompressionInSingleFileRequires60" />
13904 <NETSdkError Condition="'$(PublishSingleFile)' == 'true' And&#xD;&#xA; '$(EnableCompressionInSingleFile)' == 'true' And&#xD;&#xA; '$(SelfContained)' != 'true'" ResourceName="CompressionInSingleFileRequiresSelfContained" />
13905 <PropertyGroup>
13906 <!-- Ensure any PublishDir has a trailing slash, so it can be concatenated -->
13907 <PublishDir Condition="!HasTrailingSlash('$(PublishDir)')">$(PublishDir)\</PublishDir>
13908 </PropertyGroup>
13909 <MakeDir Directories="$(PublishDir)" />
13910 </Target>
13911 <!--
13912 ============================================================
13913 ComputeAndCopyFilesToPublishDirectory
13914
13915 Computes the list of all files to copy to the publish directory and then publishes them.
13916 ============================================================
13917 -->
13918 <Target Name="ComputeAndCopyFilesToPublishDirectory" DependsOnTargets="ComputeFilesToPublish;&#xD;&#xA; CopyFilesToPublishDirectory" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
13919 <!--
13920 ============================================================
13921 CopyFilesToPublishDirectory
13922
13923 Copy all build outputs, satellites and other necessary files to the publish directory.
13924 When publishing to a single file, only those files that are not bundled are copied.
13925 The remaining files are directly written to the bundle file.
13926 ============================================================
13927 -->
13928 <Target Name="CopyFilesToPublishDirectory" DependsOnTargets="_IncrementalCleanPublishDirectory;&#xD;&#xA; _CopyResolvedFilesToPublishPreserveNewest;&#xD;&#xA; _CopyResolvedFilesToPublishAlways;&#xD;&#xA; _HandleFileConflictsForPublish" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
13929 <!--
13930 ============================================================
13931 _IncrementalCleanPublishDirectory
13932
13933 Remove files that were produced in a prior publish but weren't produced in the current publish.
13934 ============================================================
13935 -->
13936 <Target Name="_IncrementalCleanPublishDirectory" DependsOnTargets="_GetCurrentAndPriorPublishFileWrites" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13937 <!-- Subtract list of files produced in the prior publish from list of files produced in this publish. -->
13938 <ItemGroup>
13939 <_OrphanPublishFileWrites Include="@(_PriorPublishFileWrites)" Exclude="@(_CurrentPublishFileWrites)" />
13940 </ItemGroup>
13941 <!-- Delete the orphaned files. -->
13942 <Delete Files="@(_OrphanPublishFileWrites)" TreatErrorsAsWarnings="true">
13943 <Output TaskParameter="DeletedFiles" ItemName="_OrphanFilesDeleted" />
13944 </Delete>
13945 <!-- Write new list of current files back to clean file. -->
13946 <WriteLinesToFile File="$(IntermediateOutputPath)$(_PublishCleanFile)" Lines="@(_CurrentPublishFileWrites)" Overwrite="true" />
13947 </Target>
13948 <!--
13949 ============================================================
13950 _GetCurrentAndPriorPublishFileWrites
13951 Get the list of files written in the previous publish and the list of files to be written in this publish.
13952 ============================================================
13953 -->
13954 <Target Name="_GetCurrentAndPriorPublishFileWrites" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13955 <PropertyGroup>
13956 <_NormalizedPublishDir>$([MSBuild]::NormalizeDirectory($(PublishDir)))</_NormalizedPublishDir>
13957 </PropertyGroup>
13958 <Hash ItemstoHash="$(_NormalizedPublishDir)">
13959 <Output TaskParameter="HashResult" PropertyName="_NormalizedPublishDirHash" />
13960 </Hash>
13961 <PropertyGroup>
13962 <_PublishCleanFile Condition="'$(PublishCleanFile)'==''">PublishOutputs.$(_NormalizedPublishDirHash.Substring(0, 10)).txt</_PublishCleanFile>
13963 </PropertyGroup>
13964 <!-- Read in writes made by prior publish. -->
13965 <ReadLinesFromFile File="$(IntermediateOutputPath)$(_PublishCleanFile)">
13966 <Output TaskParameter="Lines" ItemName="_UnfilteredPriorPublishFileWrites" />
13967 </ReadLinesFromFile>
13968 <ConvertToAbsolutePath Paths="@(_UnfilteredPriorPublishFileWrites)">
13969 <Output TaskParameter="AbsolutePaths" ItemName="_UnfilteredAbsolutePriorPublishFileWrites" />
13970 </ConvertToAbsolutePath>
13971 <!-- Find all files in the final output directory. -->
13972 <FindUnderPath Path="$(_NormalizedPublishDir)" Files="@(_UnfilteredAbsolutePriorPublishFileWrites)" UpdateToAbsolutePaths="true">
13973 <Output TaskParameter="InPath" ItemName="_PriorPublishFileWritesInOuput" />
13974 </FindUnderPath>
13975 <!-- Remove duplicates from files produced in the previous publish. -->
13976 <RemoveDuplicates Inputs="@(_PriorPublishFileWritesInOuput)">
13977 <Output TaskParameter="Filtered" ItemName="_PriorPublishFileWrites" />
13978 </RemoveDuplicates>
13979 <ItemGroup>
13980 <_CurrentPublishFileWritesUnfiltered Include="@(ResolvedFileToPublish->'$(_NormalizedPublishDir)%(RelativePath)')" />
13981 <_CurrentPublishFileWritesUnfiltered Include="$(_NormalizedPublishDir)$(AssemblyName)$(_NativeExecutableExtension)" Condition="'$(UseAppHost)' == 'true'" />
13982 </ItemGroup>
13983 <ConvertToAbsolutePath Paths="@(_CurrentPublishFileWritesUnfiltered)">
13984 <Output TaskParameter="AbsolutePaths" ItemName="_CurrentAbsolutePublishFileWritesUnfiltered" />
13985 </ConvertToAbsolutePath>
13986 <!-- Remove duplicates from the files produced in this publish-->
13987 <RemoveDuplicates Inputs="@(_CurrentAbsolutePublishFileWritesUnfiltered)">
13988 <Output TaskParameter="Filtered" ItemName="_CurrentPublishFileWrites" />
13989 </RemoveDuplicates>
13990 </Target>
13991 <!--
13992 ============================================================
13993 _CopyResolvedFilesToPublishPreserveNewest
13994
13995 Copy _ResolvedFileToPublishPreserveNewest items to the publish directory
13996 ============================================================
13997 -->
13998 <Target Name="_CopyResolvedFilesToPublishPreserveNewest" DependsOnTargets="_ComputeResolvedFilesToPublishTypes" Inputs="@(_ResolvedFileToPublishPreserveNewest)" Outputs="@(_ResolvedFileToPublishPreserveNewest->'$(PublishDir)%(RelativePath)')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13999 <!--
14000 PreserveNewest means that we will only copy the source to the destination if the source is newer.
14001 SkipUnchangedFiles is not used for that purpose because it will copy if the source and destination
14002 differ by size too. Instead, this target uses inputs and outputs to only copy when the source is newer.
14003 -->
14004 <Copy SourceFiles="@(_ResolvedFileToPublishPreserveNewest)" DestinationFiles="@(_ResolvedFileToPublishPreserveNewest->'$(PublishDir)%(RelativePath)')" OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" UseHardlinksIfPossible="$(CreateHardLinksForPublishFilesIfPossible)" UseSymboliclinksIfPossible="$(CreateSymbolicLinksForPublishFilesIfPossible)">
14005 <Output TaskParameter="DestinationFiles" ItemName="FileWrites" />
14006 </Copy>
14007 </Target>
14008 <!--
14009 ============================================================
14010 _CopyResolvedFilesToPublishAlways
14011
14012 Copy _ResolvedFileToPublishAlways items to the publish directory
14013 ============================================================
14014 -->
14015 <Target Name="_CopyResolvedFilesToPublishAlways" DependsOnTargets="_ComputeResolvedFilesToPublishTypes" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14016 <!--
14017 Use SkipUnchangedFiles to prevent unnecessary file copies. The copy will occur if the
14018 destination doesn't exist, the source is newer than the destination, or if the source and
14019 destination differ by file size.
14020 -->
14021 <Copy SourceFiles="@(_ResolvedFileToPublishAlways)" DestinationFiles="@(_ResolvedFileToPublishAlways->'$(PublishDir)%(RelativePath)')" SkipUnchangedFiles="$(SkipCopyUnchangedFiles)" OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" UseHardlinksIfPossible="$(CreateHardLinksForPublishFilesIfPossible)" UseSymboliclinksIfPossible="$(CreateSymbolicLinksForPublishFilesIfPossible)">
14022 <Output TaskParameter="DestinationFiles" ItemName="FileWrites" />
14023 </Copy>
14024 </Target>
14025 <UsingTask TaskName="ResolveReadyToRunCompilers" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
14026 <Target Name="ResolveReadyToRunCompilers" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14027 <ResolveReadyToRunCompilers RuntimePacks="@(ResolvedRuntimePack)" Crossgen2Packs="@(ResolvedCrossgen2Pack)" TargetingPacks="@(ResolvedTargetingPack)" RuntimeGraphPath="$(BundledRuntimeIdentifierGraphFile)" NETCoreSdkRuntimeIdentifier="$(NETCoreSdkRuntimeIdentifier)" EmitSymbols="$(PublishReadyToRunEmitSymbols)" ReadyToRunUseCrossgen2="$(PublishReadyToRunUseCrossgen2)" PerfmapFormatVersion="$(PublishReadyToRunPerfmapFormatVersion)">
14028 <Output TaskParameter="CrossgenTool" ItemName="CrossgenTool" />
14029 <Output TaskParameter="Crossgen2Tool" ItemName="Crossgen2Tool" />
14030 </ResolveReadyToRunCompilers>
14031 </Target>
14032 <!--
14033 ============================================================
14034 _ComputeResolvedFilesToPublishTypes
14035
14036 Splits ResolvedFileToPublish items into 'PreserveNewest' and 'Always' buckets.
14037 Then further splits those into 'Unbundled' buckets based on the single file setting.
14038 ============================================================
14039 -->
14040 <Target Name="_ComputeResolvedFilesToPublishTypes" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14041 <ItemGroup>
14042 <_ResolvedFileToPublishPreserveNewest Include="@(ResolvedFileToPublish)" Condition="'%(ResolvedFileToPublish.CopyToPublishDirectory)'=='PreserveNewest'" />
14043 <_ResolvedFileToPublishAlways Include="@(ResolvedFileToPublish)" Condition="'%(ResolvedFileToPublish.CopyToPublishDirectory)'=='Always'" />
14044 </ItemGroup>
14045 <ItemGroup>
14046 <_ResolvedUnbundledFileToPublishPreserveNewest Include="@(_ResolvedFileToPublishPreserveNewest)" Condition="'$(PublishSingleFile)' != 'true' or&#xD;&#xA; '%(_ResolvedFileToPublishPreserveNewest.ExcludeFromSingleFile)'=='true'" />
14047 <_ResolvedUnbundledFileToPublishAlways Include="@(_ResolvedFileToPublishAlways)" Condition="'$(PublishSingleFile)' != 'true' or&#xD;&#xA; '%(_ResolvedFileToPublishAlways.ExcludeFromSingleFile)'=='true'" />
14048 </ItemGroup>
14049 </Target>
14050 <!--
14051 ============================================================
14052 ComputeFilesToPublish
14053
14054 Gathers all the files that need to be copied to the publish directory, including R2R and ILLinker transformations
14055 ============================================================
14056 -->
14057 <Target Name="ComputeFilesToPublish" DependsOnTargets="PrepareForPublish;&#xD;&#xA; ComputeResolvedFilesToPublishList;&#xD;&#xA; ILLink;&#xD;&#xA; CreateReadyToRunImages;&#xD;&#xA; GeneratePublishDependencyFile;&#xD;&#xA; GenerateSingleFileBundle" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
14058 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14059 <CopyBuildOutputToPublishDirectory Condition="'$(CopyBuildOutputToPublishDirectory)'==''">true</CopyBuildOutputToPublishDirectory>
14060 <CopyOutputSymbolsToPublishDirectory Condition="'$(CopyOutputSymbolsToPublishDirectory)'==''">true</CopyOutputSymbolsToPublishDirectory>
14061 <IncludeSymbolsInSingleFile Condition="'$(IncludeSymbolsInSingleFile)' == ''">false</IncludeSymbolsInSingleFile>
14062 </PropertyGroup>
14063 <UsingTask TaskName="ResolveOverlappingItemGroupConflicts" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
14064 <!--
14065 ============================================================
14066 ComputeResolvedFilesToPublishList
14067
14068 Gathers all the files that need to be copied to the publish directory.
14069 ============================================================
14070 -->
14071 <Target Name="ComputeResolvedFilesToPublishList" DependsOnTargets="_ComputeResolvedCopyLocalPublishAssets;&#xD;&#xA; _ComputeCopyToPublishDirectoryItems;&#xD;&#xA; ComputeRefAssembliesToPublish" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14072 <ItemGroup>
14073 <!-- Copy the build product (.dll or .exe). -->
14074 <ResolvedFileToPublish Include="@(IntermediateAssembly)" Condition="'$(CopyBuildOutputToPublishDirectory)' == 'true'">
14075 <RelativePath>@(IntermediateAssembly->'%(Filename)%(Extension)')</RelativePath>
14076 <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
14077 </ResolvedFileToPublish>
14078 <!-- Copy the deps file if using the build deps file. -->
14079 <ResolvedFileToPublish Include="$(ProjectDepsFilePath)" Condition="'$(GenerateDependencyFile)' == 'true' and '$(_UseBuildDependencyFile)' == 'true'">
14080 <RelativePath>$(ProjectDepsFileName)</RelativePath>
14081 <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
14082 </ResolvedFileToPublish>
14083 <!-- Copy the runtime config file. -->
14084 <ResolvedFileToPublish Include="$(ProjectRuntimeConfigFilePath)" Condition="'$(GenerateRuntimeConfigurationFiles)' == 'true'">
14085 <RelativePath>$(ProjectRuntimeConfigFileName)</RelativePath>
14086 <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
14087 </ResolvedFileToPublish>
14088 <!-- Copy the app.config (if any) -->
14089 <ResolvedFileToPublish Include="@(AppConfigWithTargetPath)" Condition="'$(CopyBuildOutputToPublishDirectory)' == 'true'">
14090 <RelativePath>@(AppConfigWithTargetPath->'%(TargetPath)')</RelativePath>
14091 <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
14092 </ResolvedFileToPublish>
14093 <!-- Copy the debug information file (.pdb), if any -->
14094 <ResolvedFileToPublish Include="@(_DebugSymbolsIntermediatePath)" Condition="'$(_DebugSymbolsProduced)'=='true' and '$(CopyOutputSymbolsToPublishDirectory)'=='true'">
14095 <RelativePath>@(_DebugSymbolsIntermediatePath->'%(Filename)%(Extension)')</RelativePath>
14096 <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
14097 <ExcludeFromSingleFile Condition="'$(IncludeSymbolsInSingleFile)'!='true'">true</ExcludeFromSingleFile>
14098 </ResolvedFileToPublish>
14099 <!-- Copy satellite assemblies. -->
14100 <ResolvedFileToPublish Include="@(IntermediateSatelliteAssembliesWithTargetPath)">
14101 <RelativePath>%(IntermediateSatelliteAssembliesWithTargetPath.Culture)\%(Filename)%(Extension)</RelativePath>
14102 <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
14103 </ResolvedFileToPublish>
14104 <!-- Copy generated COM References. -->
14105 <ResolvedFileToPublish Include="@(ReferenceComWrappersToCopyLocal)">
14106 <RelativePath>%(Filename)%(Extension)</RelativePath>
14107 <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
14108 </ResolvedFileToPublish>
14109 </ItemGroup>
14110 <!-- Remove conflicting items that appear in both _ResolvedCopyLocalPublishAssets and ResolvedFileToPublish
14111 to ensure that we don't get duplicate files in the publish output. -->
14112 <ResolveOverlappingItemGroupConflicts ItemGroup1="@(_ResolvedCopyLocalPublishAssets-&gt;Distinct())" ItemGroup2="@(ResolvedFileToPublish-&gt;Distinct())" PreferredPackages="$(PackageConflictPreferredPackages)">
14113 <Output TaskParameter="RemovedItemGroup1" ItemName="_ResolvedCopyLocalPublishAssetsRemoved" />
14114 <Output TaskParameter="RemovedItemGroup2" ItemName="ResolvedFileToPublishRemoved" />
14115 </ResolveOverlappingItemGroupConflicts>
14116 <ItemGroup>
14117 <_ResolvedCopyLocalPublishAssets Remove="@(_ResolvedCopyLocalPublishAssetsRemoved)" />
14118 <ResolvedFileToPublish Remove="@(ResolvedFileToPublishRemoved)" />
14119 <!-- Copy the resolved copy local publish assets. -->
14120 <ResolvedFileToPublish Include="@(_ResolvedCopyLocalPublishAssets)">
14121 <RelativePath>%(_ResolvedCopyLocalPublishAssets.DestinationSubDirectory)%(Filename)%(Extension)</RelativePath>
14122 <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
14123 </ResolvedFileToPublish>
14124 <!-- Copy the xml documentation (if enabled) -->
14125 <ResolvedFileToPublish Include="@(FinalDocFile)" Condition="'$(PublishDocumentationFile)' == 'true'">
14126 <RelativePath>@(FinalDocFile->'%(Filename)%(Extension)')</RelativePath>
14127 <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
14128 </ResolvedFileToPublish>
14129 <!-- Copy all PackAsTool shims (if any) -->
14130 <ResolvedFileToPublish Include="@(_EmbeddedApphostPaths-&gt;Distinct())">
14131 <RelativePath>shims/%(_EmbeddedApphostPaths.ShimRuntimeIdentifier)/%(_EmbeddedApphostPaths.Filename)%(_EmbeddedApphostPaths.Extension)</RelativePath>
14132 <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
14133 </ResolvedFileToPublish>
14134 <!-- Filter files for PublishSingleFiles scenario -->
14135 <_FilesToDrop Include="@(ResolvedFileToPublish)" Condition="'$(PublishSingleFile)' == 'true' and&#xD;&#xA; '%(ResolvedFileToPublish.DropFromSingleFile)' == 'true'" />
14136 <ResolvedFileToPublish Remove="@(_FilesToDrop)" />
14137 </ItemGroup>
14138 </Target>
14139 <!--
14140 ============================================================
14141 _ResolveCopyLocalAssetsForPublish
14142 Resolves the assets from packages to copy locally for publish.
14143 We can just use the build's copy local assets if we can reuse the build deps file.
14144 ============================================================
14145 -->
14146 <UsingTask TaskName="ResolveCopyLocalAssets" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
14147 <Target Name="_ResolveCopyLocalAssetsForPublish" DependsOnTargets="ResolveLockFileCopyLocalFiles;&#xD;&#xA; _ComputeUseBuildDependencyFile;&#xD;&#xA; _DefaultMicrosoftNETPlatformLibrary;&#xD;&#xA; ResolveRuntimePackAssets;&#xD;&#xA; _ComputePackageReferencePublish" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14148 <!-- For future: Delete ResolveCopyLocalAssets task. Need to figure out how to get correct DestinationSubPath for
14149 PreserveStoreLayout without this task, and how to handle RuntimeStorePackages. -->
14150 <ResolveCopyLocalAssets AssetsFilePath="$(ProjectAssetsFile)" TargetFramework="$(TargetFramework)" RuntimeIdentifier="$(RuntimeIdentifier)" PlatformLibraryName="$(MicrosoftNETPlatformLibrary)" RuntimeFrameworks="@(RuntimeFramework)" ExcludedPackageReferences="@(_ExcludeFromPublishPackageReference)" RuntimeStorePackages="@(RuntimeStorePackages)" PreserveStoreLayout="$(PreserveStoreLayout)" ResolveRuntimeTargets="$(CopyLocalRuntimeTargetAssets)" IsSelfContained="$(SelfContained)" Condition="'$(PreserveStoreLayout)' == 'true' Or '@(RuntimeStorePackages)' != ''">
14151 <Output TaskParameter="ResolvedAssets" ItemName="_ResolvedCopyLocalPublishAssets" />
14152 </ResolveCopyLocalAssets>
14153 <ItemGroup>
14154 <_ResolvedCopyLocalPublishAssets Include="@(RuntimePackAsset)" Condition="('$(SelfContained)' == 'true' Or '%(RuntimePackAsset.RuntimePackAlwaysCopyLocal)' == 'true') and '%(RuntimePackAsset.AssetType)' != 'pgodata'" />
14155 </ItemGroup>
14156 <ItemGroup Condition="'$(_UseBuildDependencyFile)' != 'true'">
14157 <!-- Remove the apphost executable from publish copy local assets; we will copy the generated apphost instead -->
14158 <_ResolvedCopyLocalPublishAssets Remove="@(_NativeRestoredAppHostNETCore)" />
14159 </ItemGroup>
14160 <ItemGroup Condition="'$(PreserveStoreLayout)' != 'true' And '@(RuntimeStorePackages)' == ''">
14161 <_ResolvedCopyLocalPublishAssets Include="@(_ResolvedCopyLocalBuildAssets)" Condition="'%(_ResolvedCopyLocalBuildAssets.CopyToPublishDirectory)' != 'false' " />
14162 </ItemGroup>
14163 </Target>
14164 <!--
14165 ============================================================
14166 _ParseTargetManifestFiles
14167 Parses the $(TargetManifestFiles) which contains a list of files into @(RuntimeStorePackages) items
14168 which describes which packages should be excluded from publish since they are contained in the runtime store.
14169 ============================================================
14170 -->
14171 <UsingTask TaskName="ParseTargetManifests" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
14172 <Target Name="_ParseTargetManifestFiles" Condition="'$(TargetManifestFiles)' != ''" Returns="@(RuntimeStorePackages)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14173 <ParseTargetManifests TargetManifestFiles="$(TargetManifestFiles)">
14174 <Output TaskParameter="RuntimeStorePackages" ItemName="RuntimeStorePackages" />
14175 </ParseTargetManifests>
14176 </Target>
14177 <!--
14178 ============================================================
14179 _FilterSatelliteResourcesForPublish
14180 Filters the resolved resource assets for build to the given resource languages.
14181 ============================================================
14182 -->
14183 <Target Name="_FilterSatelliteResourcesForPublish" Condition="'$(SatelliteResourceLanguages)' != ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14184 <ItemGroup>
14185 <_PublishSatelliteResources Include="@(_ResolvedCopyLocalPublishAssets)" Condition="'%(_ResolvedCopyLocalPublishAssets.AssetType)' == 'resources'" />
14186 </ItemGroup>
14187 <JoinItems Left="@(_PublishSatelliteResources)" LeftKey="Culture" LeftMetadata="*" Right="$(SatelliteResourceLanguages)" RightKey="" RightMetadata="" ItemSpecToUse="Left">
14188 <Output TaskParameter="JoinResult" ItemName="_FilteredPublishSatelliteResources" />
14189 </JoinItems>
14190 <ItemGroup Condition="'@(_PublishSatelliteResources)' != ''">
14191 <_ResolvedCopyLocalPublishAssets Remove="@(_PublishSatelliteResources)" />
14192 <_ResolvedCopyLocalPublishAssets Include="@(_FilteredPublishSatelliteResources)" />
14193 </ItemGroup>
14194 </Target>
14195 <!--
14196 ============================================================
14197 _ComputeResolvedCopyLocalPublishAssets
14198 Computes the files from both project and package references.
14199 ============================================================
14200 -->
14201 <Target Name="_ComputeResolvedCopyLocalPublishAssets" DependsOnTargets="_ResolveCopyLocalAssetsForPublish;&#xD;&#xA; _FilterSatelliteResourcesForPublish" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14202 <ItemGroup>
14203 <_ResolvedCopyLocalPublishAssets Include="@(ReferenceCopyLocalPaths)" Exclude="@(_ResolvedCopyLocalBuildAssets);@(RuntimePackAsset)" Condition="('$(PublishReferencesDocumentationFiles)' == 'true' or '%(ReferenceCopyLocalPaths.Extension)' != '.xml') and '%(ReferenceCopyLocalPaths.Private)' != 'false'">
14204 <DestinationSubPath>%(ReferenceCopyLocalPaths.DestinationSubDirectory)%(ReferenceCopyLocalPaths.Filename)%(ReferenceCopyLocalPaths.Extension)</DestinationSubPath>
14205 </_ResolvedCopyLocalPublishAssets>
14206 </ItemGroup>
14207 </Target>
14208 <!--
14209 ============================================================
14210 _ComputeCopyToPublishDirectoryItems
14211 ============================================================
14212 -->
14213 <Target Name="_ComputeCopyToPublishDirectoryItems" DependsOnTargets="GetCopyToPublishDirectoryItems" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14214 <ItemGroup>
14215 <ResolvedFileToPublish Include="@(_SourceItemsToCopyToPublishDirectoryAlways)">
14216 <RelativePath>%(_SourceItemsToCopyToPublishDirectoryAlways.TargetPath)</RelativePath>
14217 <CopyToPublishDirectory>Always</CopyToPublishDirectory>
14218 <IsKeyOutput Condition="'%(_SourceItemsToCopyToPublishDirectoryAlways.FullPath)' == '$(AppHostIntermediatePath)'">True</IsKeyOutput>
14219 </ResolvedFileToPublish>
14220 <ResolvedFileToPublish Include="@(_SourceItemsToCopyToPublishDirectory)">
14221 <RelativePath>%(_SourceItemsToCopyToPublishDirectory.TargetPath)</RelativePath>
14222 <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
14223 <IsKeyOutput Condition="'%(_SourceItemsToCopyToPublishDirectory.FullPath)' == '$(AppHostIntermediatePath)'">True</IsKeyOutput>
14224 </ResolvedFileToPublish>
14225 </ItemGroup>
14226 </Target>
14227 <!--
14228 ============================================================
14229 GetCopyToPublishDirectoryItems
14230
14231 Get all project items that may need to be transferred to the publish directory.
14232 This includes baggage items from transitively referenced projects. It would appear
14233 that this target computes full transitive closure of content items for all referenced
14234 projects; however that is not the case. It only collects the content items from its
14235 immediate children and not children of children.
14236
14237 See comment on GetCopyToOutputDirectoryItems, from which this logic was taken.
14238 ============================================================
14239 -->
14240 <Target Name="GetCopyToPublishDirectoryItems" Returns="@(AllPublishItemsFullPathWithTargetPath)" KeepDuplicateOutputs=" '$(MSBuildDisableGetCopyToPublishDirectoryItemsOptimization)' == '' " DependsOnTargets="AssignTargetPaths;&#xD;&#xA; DefaultCopyToPublishDirectoryMetadata;&#xD;&#xA; _SplitProjectReferencesByFileExistence;&#xD;&#xA; _GetProjectReferenceTargetFrameworkProperties" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14241 <!-- In the general case, clients need very little of the metadata which is generated by invoking this target on this project and its children. For those
14242 cases, we can immediately discard the unwanted metadata, reducing memory usage, particularly in very large and interconnected systems of projects.
14243 However, if some client does require the original functionality, it is sufficient to set MSBuildDisableGetCopyToPublishDirectoryItemsOptimization to
14244 a non-empty value and the original behavior will be restored. -->
14245 <PropertyGroup Condition=" '$(MSBuildDisableGetCopyToPublishDirectoryItemsOptimization)' == '' ">
14246 <_GCTPDIKeepDuplicates>false</_GCTPDIKeepDuplicates>
14247 <_GCTPDIKeepMetadata>CopyToPublishDirectory;ExcludeFromSingleFile;TargetPath</_GCTPDIKeepMetadata>
14248 </PropertyGroup>
14249 <!-- Get items from child projects first. -->
14250 <MSBuild Projects="@(_MSBuildProjectReferenceExistent)" Targets="GetCopyToPublishDirectoryItems" BuildInParallel="$(BuildInParallel)" Properties="%(_MSBuildProjectReferenceExistent.SetConfiguration); %(_MSBuildProjectReferenceExistent.SetPlatform); %(_MSBuildProjectReferenceExistent.SetTargetFramework)" Condition="'@(_MSBuildProjectReferenceExistent)' != '' and '$(_GetChildProjectCopyToPublishDirectoryItems)' == 'true' and '%(_MSBuildProjectReferenceExistent.Private)' != 'false'" ContinueOnError="$(ContinueOnError)" RemoveProperties="%(_MSBuildProjectReferenceExistent.GlobalPropertiesToRemove)$(_GlobalPropertiesToRemoveFromProjectReferences)">
14251 <Output TaskParameter="TargetOutputs" ItemName="_AllChildProjectPublishItemsWithTargetPath" />
14252 </MSBuild>
14253 <!-- Target outputs must be full paths because they will be consumed by a different project. -->
14254 <ItemGroup>
14255 <_SourceItemsToCopyToPublishDirectoryAlways KeepDuplicates=" '$(_GCTPDIKeepDuplicates)' != 'false' " KeepMetadata="$(_GCTPDIKeepMetadata)" Include="@(_AllChildProjectPublishItemsWithTargetPath->'%(FullPath)')" Condition="'%(_AllChildProjectPublishItemsWithTargetPath.CopyToPublishDirectory)'=='Always'" />
14256 <_SourceItemsToCopyToPublishDirectory KeepDuplicates=" '$(_GCTPDIKeepDuplicates)' != 'false' " KeepMetadata="$(_GCTPDIKeepMetadata)" Include="@(_AllChildProjectPublishItemsWithTargetPath->'%(FullPath)')" Condition="'%(_AllChildProjectPublishItemsWithTargetPath.CopyToPublishDirectory)'=='PreserveNewest'" />
14257 </ItemGroup>
14258 <!-- Remove items which we will never again use - they just sit around taking up memory otherwise -->
14259 <ItemGroup>
14260 <_AllChildProjectPublishItemsWithTargetPath Remove="@(_AllChildProjectPublishItemsWithTargetPath)" />
14261 </ItemGroup>
14262 <!-- Get items from this project last so that they will be copied last. -->
14263 <ItemGroup>
14264 <_SourceItemsToCopyToPublishDirectoryAlways KeepMetadata="$(_GCTPDIKeepMetadata)" Include="@(ContentWithTargetPath->'%(FullPath)')" Condition="'%(ContentWithTargetPath.CopyToPublishDirectory)'=='Always'" />
14265 <_SourceItemsToCopyToPublishDirectory KeepMetadata="$(_GCTPDIKeepMetadata)" Include="@(ContentWithTargetPath->'%(FullPath)')" Condition="'%(ContentWithTargetPath.CopyToPublishDirectory)'=='PreserveNewest'" />
14266 </ItemGroup>
14267 <ItemGroup>
14268 <_SourceItemsToCopyToPublishDirectoryAlways KeepMetadata="$(_GCTPDIKeepMetadata)" Include="@(EmbeddedResource->'%(FullPath)')" Condition="'%(EmbeddedResource.CopyToPublishDirectory)'=='Always'" />
14269 <_SourceItemsToCopyToPublishDirectory KeepMetadata="$(_GCTPDIKeepMetadata)" Include="@(EmbeddedResource->'%(FullPath)')" Condition="'%(EmbeddedResource.CopyToPublishDirectory)'=='PreserveNewest'" />
14270 </ItemGroup>
14271 <ItemGroup>
14272 <_CompileItemsToPublish Include="@(Compile->'%(FullPath)')" Condition="'%(Compile.CopyToPublishDirectory)'=='Always' or '%(Compile.CopyToPublishDirectory)'=='PreserveNewest'" />
14273 </ItemGroup>
14274 <AssignTargetPath Files="@(_CompileItemsToPublish)" RootFolder="$(MSBuildProjectDirectory)">
14275 <Output TaskParameter="AssignedFiles" ItemName="_CompileItemsToPublishWithTargetPath" />
14276 </AssignTargetPath>
14277 <ItemGroup>
14278 <_SourceItemsToCopyToPublishDirectoryAlways KeepMetadata="$(_GCTPDIKeepMetadata)" Include="@(_CompileItemsToPublishWithTargetPath)" Condition="'%(_CompileItemsToPublishWithTargetPath.CopyToPublishDirectory)'=='Always'" />
14279 <_SourceItemsToCopyToPublishDirectory KeepMetadata="$(_GCTPDIKeepMetadata)" Include="@(_CompileItemsToPublishWithTargetPath)" Condition="'%(_CompileItemsToPublishWithTargetPath.CopyToPublishDirectory)'=='PreserveNewest'" />
14280 </ItemGroup>
14281 <ItemGroup>
14282 <_SourceItemsToCopyToPublishDirectoryAlways KeepMetadata="$(_GCTPDIKeepMetadata)" Include="@(_NoneWithTargetPath->'%(FullPath)')" Condition="'%(_NoneWithTargetPath.CopyToPublishDirectory)'=='Always'" />
14283 <_SourceItemsToCopyToPublishDirectory KeepMetadata="$(_GCTPDIKeepMetadata)" Include="@(_NoneWithTargetPath->'%(FullPath)')" Condition="'%(_NoneWithTargetPath.CopyToPublishDirectory)'=='PreserveNewest'" />
14284 </ItemGroup>
14285 <ItemGroup>
14286 <AllPublishItemsFullPathWithTargetPath Include="@(_SourceItemsToCopyToPublishDirectoryAlways->'%(FullPath)');@(_SourceItemsToCopyToPublishDirectory->'%(FullPath)')" />
14287 </ItemGroup>
14288 </Target>
14289 <!--
14290 ============================================================
14291 DefaultCopyToPublishDirectoryMetadata
14292
14293 If CopyToPublishDirectory isn't set on these items, the value should be taken from CopyToOutputDirectory.
14294 This way, projects can just set "CopyToOutputDirectory = Always/PreserveNewest" and by default the item will be copied
14295 to both the build output and publish directories.
14296 ============================================================
14297 -->
14298 <Target Name="DefaultCopyToPublishDirectoryMetadata" DependsOnTargets="AssignTargetPaths" Condition=" '$(DefaultCopyToPublishDirectoryMetadata)' == 'true' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14299 <ItemGroup>
14300 <ContentWithTargetPath Condition="'%(ContentWithTargetPath.CopyToOutputDirectory)'=='Always' and '%(ContentWithTargetPath.CopyToPublishDirectory)' == ''">
14301 <CopyToPublishDirectory>Always</CopyToPublishDirectory>
14302 </ContentWithTargetPath>
14303 <ContentWithTargetPath Condition="'%(ContentWithTargetPath.CopyToOutputDirectory)'=='PreserveNewest' and '%(ContentWithTargetPath.CopyToPublishDirectory)' == ''">
14304 <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
14305 </ContentWithTargetPath>
14306 <EmbeddedResource Condition="'%(EmbeddedResource.CopyToOutputDirectory)'=='Always' and '%(EmbeddedResource.CopyToPublishDirectory)' == ''">
14307 <CopyToPublishDirectory>Always</CopyToPublishDirectory>
14308 </EmbeddedResource>
14309 <EmbeddedResource Condition="'%(EmbeddedResource.CopyToOutputDirectory)'=='PreserveNewest' and '%(EmbeddedResource.CopyToPublishDirectory)' == ''">
14310 <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
14311 </EmbeddedResource>
14312 <Compile Condition="'%(Compile.CopyToOutputDirectory)'=='Always' and '%(Compile.CopyToPublishDirectory)' == ''">
14313 <CopyToPublishDirectory>Always</CopyToPublishDirectory>
14314 </Compile>
14315 <Compile Condition="'%(Compile.CopyToOutputDirectory)'=='PreserveNewest' and '%(Compile.CopyToPublishDirectory)' == ''">
14316 <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
14317 </Compile>
14318 <_NoneWithTargetPath Condition="'%(_NoneWithTargetPath.CopyToOutputDirectory)'=='Always' and '%(_NoneWithTargetPath.CopyToPublishDirectory)' == ''">
14319 <CopyToPublishDirectory>Always</CopyToPublishDirectory>
14320 </_NoneWithTargetPath>
14321 <_NoneWithTargetPath Condition="'%(_NoneWithTargetPath.CopyToOutputDirectory)'=='PreserveNewest' and '%(_NoneWithTargetPath.CopyToPublishDirectory)' == ''">
14322 <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
14323 </_NoneWithTargetPath>
14324 </ItemGroup>
14325 </Target>
14326 <PropertyGroup Condition="'$(SelfContained)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14327 <_ComputeManagedRuntimePackAssembliesIfSelfContained>_ComputeManagedRuntimePackAssemblies</_ComputeManagedRuntimePackAssembliesIfSelfContained>
14328 </PropertyGroup>
14329 <!-- Determine the managed assembly subset of ResolvedFileToPublish that should be post-processed by linker, and ready to run compilation -->
14330 <Target Name="_ComputeAssembliesToPostprocessOnPublish" DependsOnTargets="_ComputeUserRuntimeAssemblies;$(_ComputeManagedRuntimePackAssembliesIfSelfContained)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14331 <!--
14332 Default set of files to post-process correspond to the items that would be designated
14333 as managed runtime assemblies in .deps.json, and published to root of the application.
14334 RuntimeTargets and satellite assemblies are excluded. Currently, both linker and ready
14335 to run require a RID, so there will not be RuntimeTargets. Linker could conceptually
14336 operate without a RID, but would not know how to handle multiple assemblies with same
14337 identity.
14338 -->
14339 <ItemGroup>
14340 <!-- Assemblies from packages -->
14341 <_ManagedRuntimeAssembly Include="@(RuntimeCopyLocalItems)" />
14342 <!-- Assemblies from other references -->
14343 <_ManagedRuntimeAssembly Include="@(UserRuntimeAssembly)" />
14344 <!-- Assembly produced by this project -->
14345 <_ManagedRuntimeAssembly Include="@(IntermediateAssembly)" />
14346 </ItemGroup>
14347 <!-- Assemblies from runtime packs for self-contained apps -->
14348 <ItemGroup Condition="'$(SelfContained)' == 'true'">
14349 <_ManagedRuntimeAssembly Include="@(_ManagedRuntimePackAssembly)" />
14350 </ItemGroup>
14351 <!--
14352 Match above with ResolvedFileToPublish. Some of above would have been excluded from publish in
14353 various ways and should be excluded from the list of files to postprocess as well. Furthermore,
14354 the metadata must match ResolvedFileToPublish as the tools modify or remove these items in that
14355 list to implement their post-processing.
14356 -->
14357 <JoinItems Left="@(_ManagedRuntimeAssembly)" Right="@(ResolvedFileToPublish)" RightMetadata="*">
14358 <Output TaskParameter="JoinResult" ItemName="_AssemblyToPostprocessOnPublish" />
14359 </JoinItems>
14360 <!--
14361 Set PostprocessAssembly=true metadata on ResolvedFileToPublish, which will be honored by linker
14362 and crossgen.
14363
14364 Assemblies injected into ResolvedFileToPublish outside the set above (such as razor views) are
14365 responsible for setting this metadata to opt in to post-processing.
14366 -->
14367 <ItemGroup>
14368 <ResolvedFileToPublish Remove="@(_AssemblyToPostprocessOnPublish)" />
14369 <ResolvedFileToPublish Include="@(_AssemblyToPostprocessOnPublish)" PostprocessAssembly="true" />
14370 </ItemGroup>
14371 </Target>
14372 <Target Name="_ComputeManagedRuntimePackAssemblies" Returns="@(_ManagedRuntimePackAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14373 <ItemGroup>
14374 <!-- Special case for System.Private.Corelib due to https://github.com/dotnet/core-setup/issues/7728 -->
14375 <_ManagedRuntimePackAssembly Include="@(RuntimePackAsset)" Condition="'%(RuntimePackAsset.AssetType)' == 'runtime'&#xD;&#xA; or '%(RuntimePackAsset.Filename)' == 'System.Private.Corelib'" />
14376 </ItemGroup>
14377 </Target>
14378 <Target Name="_ComputeUseBuildDependencyFile" DependsOnTargets="_ComputePackageReferencePublish;&#xD;&#xA; _ParseTargetManifestFiles" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14379 <!-- Check to see whether we can re-use the .deps.json file from the build for publish, or whether we have to
14380 generate a different one. -->
14381 <PropertyGroup>
14382 <_TrimRuntimeAssets Condition="'$(PublishSingleFile)' == 'true' and '$(SelfContained)' == 'true'">true</_TrimRuntimeAssets>
14383 <_UseBuildDependencyFile Condition="'@(_ExcludeFromPublishPackageReference)' == '' and&#xD;&#xA; '@(RuntimeStorePackages)' == '' and&#xD;&#xA; '$(PreserveStoreLayout)' != 'true' and&#xD;&#xA; '$(PublishTrimmed)' != 'true' and&#xD;&#xA; '$(_TrimRuntimeAssets)' != 'true'">true</_UseBuildDependencyFile>
14384 </PropertyGroup>
14385 </Target>
14386 <!--
14387 ============================================================
14388 GenerateSingleFileBundle
14389
14390 Bundle the ResolvedFileToPublish items into one file in PublishDir
14391 (except those marked ExcludeFromSingleFile)
14392 ============================================================
14393 -->
14394 <Target Name="_ComputeFilesToBundle" DependsOnTargets="_HandleFileConflictsForPublish" Condition="'$(PublishSingleFile)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14395 <ItemGroup>
14396 <_FilesToBundle Include="@(ResolvedFileToPublish)" Condition="'%(ResolvedFileToPublish.ExcludeFromSingleFile)' != 'true'" />
14397 <ResolvedFileToPublish Remove="@(_FilesToBundle)" />
14398 </ItemGroup>
14399 <PropertyGroup>
14400 <PublishedSingleFileName>$(AssemblyName)$(_NativeExecutableExtension)</PublishedSingleFileName>
14401 <PublishedSingleFilePath>$(PublishDir)$(PublishedSingleFileName)</PublishedSingleFilePath>
14402 </PropertyGroup>
14403 </Target>
14404 <Target Name="PrepareForBundle" DependsOnTargets="_ComputeFilesToBundle" Condition="'$(PublishSingleFile)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14405 <ItemGroup>
14406 <FilesToBundle Include="@(_FilesToBundle)" />
14407 </ItemGroup>
14408 <PropertyGroup>
14409 <AppHostFile>$(PublishedSingleFileName)</AppHostFile>
14410 </PropertyGroup>
14411 </Target>
14412 <UsingTask TaskName="GenerateBundle" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
14413 <Target Name="GenerateSingleFileBundle" Condition="'$(PublishSingleFile)' == 'true'" DependsOnTargets="_ComputeFilesToBundle;PrepareForBundle" Inputs="@(FilesToBundle)" Outputs="$(PublishedSingleFilePath)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14414 <PropertyGroup>
14415 <TraceSingleFileBundler Condition="'$(TraceSingleFileBundler)' == ''">false</TraceSingleFileBundler>
14416 <IncludeSymbolsInSingleFile Condition="'$(IncludeSymbolsInSingleFile)' == ''">false</IncludeSymbolsInSingleFile>
14417 <IncludeAllContentForSelfExtract Condition="'$(IncludeAllContentForSelfExtract)' == ''">false</IncludeAllContentForSelfExtract>
14418 <IncludeNativeLibrariesForSelfExtract Condition="'$(IncludeNativeLibrariesForSelfExtract)' == ''">$(IncludeAllContentForSelfExtract)</IncludeNativeLibrariesForSelfExtract>
14419 <EnableCompressionInSingleFile Condition="'$(EnableCompressionInSingleFile)' == ''">false</EnableCompressionInSingleFile>
14420 </PropertyGroup>
14421 <NETSdkError Condition="'$(IncludeAllContentForSelfExtract)' == 'true' And '$(IncludeNativeLibrariesForSelfExtract)' != 'true'" ResourceName="CannotIncludeAllContentButNotNativeLibrariesInSingleFile" />
14422 <GenerateBundle FilesToBundle="@(FilesToBundle)" AppHostName="$(PublishedSingleFileName)" IncludeSymbols="$(IncludeSymbolsInSingleFile)" EnableCompressionInSingleFile="$(EnableCompressionInSingleFile)" IncludeNativeLibraries="$(IncludeNativeLibrariesForSelfExtract)" IncludeAllContent="$(IncludeAllContentForSelfExtract)" TargetFrameworkVersion="$(_TargetFrameworkVersionWithoutV)" RuntimeIdentifier="$(RuntimeIdentifier)" OutputDir="$(PublishDir)" ShowDiagnosticOutput="$(TraceSingleFileBundler)">
14423 <Output TaskParameter="ExcludedFiles" ItemName="_FilesExcludedFromBundle" />
14424 </GenerateBundle>
14425 <ItemGroup>
14426 <ResolvedFileToPublish Include="@(_FilesExcludedFromBundle)" />
14427 <!-- ResolvedFileToPublish shouldn't include PublishedSingleFilePath, since the single-file bundle is written directly to the publish directory -->
14428 </ItemGroup>
14429 </Target>
14430 <!--
14431 ============================================================
14432 _GeneratePublishDependencyFile
14433 Generates the $(project).deps.json file for a published app
14434 ============================================================
14435 -->
14436 <Target Name="GeneratePublishDependencyFile" DependsOnTargets="_ComputeUseBuildDependencyFile;&#xD;&#xA; _DefaultMicrosoftNETPlatformLibrary;&#xD;&#xA; _HandlePackageFileConflicts;&#xD;&#xA; _HandlePackageFileConflictsForPublish;&#xD;&#xA; _ComputeReferenceAssemblies;&#xD;&#xA; _ComputeUserRuntimeAssemblies;&#xD;&#xA; ResolveRuntimePackAssets;&#xD;&#xA; _ComputePackageReferencePublish" Condition="'$(GenerateDependencyFile)' == 'true' and '$(_UseBuildDependencyFile)' != 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14437 <PropertyGroup>
14438 <!-- IntermediateDepsFilePath is the location where the deps.json file is originally created
14439 PublishDepsFilePath is the location where the deps.json resides when published
14440 PublishDepsFilePath is empty (by default) for PublishSingleFile, since the deps.json file is embedde within the single-file bundle -->
14441 <IntermediateDepsFilePath Condition=" '$(PublishDepsFilePath)' != ''">$(PublishDepsFilePath)</IntermediateDepsFilePath>
14442 <IntermediateDepsFilePath Condition=" '$(PublishDepsFilePath)' == ''">$(IntermediateOutputPath)$(ProjectDepsFileName)</IntermediateDepsFilePath>
14443 <PublishDepsFilePath Condition=" '$(PublishDepsFilePath)' == '' And '$(PublishSingleFile)' != 'true'">$(PublishDir)$(ProjectDepsFileName)</PublishDepsFilePath>
14444 <_IsSingleFilePublish Condition="'$(PublishSingleFile)' == ''">false</_IsSingleFilePublish>
14445 <_IsSingleFilePublish Condition="'$(PublishSingleFile)' != ''">$(PublishSingleFile)</_IsSingleFilePublish>
14446 </PropertyGroup>
14447 <ItemGroup>
14448 <ResolvedCompileFileDefinitions Remove="@(_PublishConflictPackageFiles)" Condition="'%(_PublishConflictPackageFiles.ConflictItemType)' == 'Reference'" />
14449 <RuntimeTargetsCopyLocalItems Remove="@(_PublishConflictPackageFiles)" Condition="'%(_PublishConflictPackageFiles.ConflictItemType)' != 'Reference'" />
14450 <RuntimePackAsset Remove="@(_PublishConflictPackageFiles)" Condition="'%(_PublishConflictPackageFiles.ConflictItemType)' != 'Reference'" />
14451 <_ResolvedNuGetFilesForPublish Include="@(NativeCopyLocalItems)" Condition="'%(NativeCopyLocalItems.CopyToPublishDirectory)' != 'false'" />
14452 <_ResolvedNuGetFilesForPublish Include="@(ResourceCopyLocalItems)" Condition="'%(ResourceCopyLocalItems.CopyToPublishDirectory)' != 'false'" />
14453 <_ResolvedNuGetFilesForPublish Include="@(RuntimeCopyLocalItems)" Condition="'%(RuntimeCopyLocalItems.CopyToPublishDirectory)' != 'false'" />
14454 <_ResolvedNuGetFilesForPublish Remove="@(_PublishConflictPackageFiles)" Condition="'%(_PublishConflictPackageFiles.ConflictItemType)' != 'Reference'" />
14455 </ItemGroup>
14456 <GenerateDepsFile ProjectPath="$(MSBuildProjectFullPath)" AssetsFilePath="$(ProjectAssetsFile)" DepsFilePath="$(IntermediateDepsFilePath)" TargetFramework="$(TargetFramework)" AssemblyName="$(AssemblyName)" AssemblyExtension="$(TargetExt)" AssemblyVersion="$(Version)" AssemblySatelliteAssemblies="@(IntermediateSatelliteAssembliesWithTargetPath)" ReferencePaths="@(ReferencePath)" ReferenceDependencyPaths="@(ReferenceDependencyPaths)" ReferenceSatellitePaths="@(ReferenceSatellitePaths)" ReferenceAssemblies="@(_ReferenceAssemblies)" RuntimePackAssets="@(RuntimePackAsset)" IncludeMainProject="$(IncludeMainProjectInDepsFile)" RuntimeIdentifier="$(RuntimeIdentifier)" PlatformLibraryName="$(MicrosoftNETPlatformLibrary)" RuntimeFrameworks="@(RuntimeFramework)" CompilerOptions="@(DependencyFileCompilerOptions)" RuntimeStorePackages="@(RuntimeStorePackages)" CompileReferences="@(ResolvedCompileFileDefinitions)" ResolvedNuGetFiles="@(_ResolvedNuGetFilesForPublish)" ResolvedRuntimeTargetsFiles="@(RuntimeTargetsCopyLocalItems)" UserRuntimeAssemblies="@(UserRuntimeAssembly)" IsSelfContained="$(SelfContained)" IsSingleFile="$(_IsSingleFilePublish)" IncludeRuntimeFileVersions="$(IncludeFileVersionsInDependencyFile)" RuntimeGraphPath="$(BundledRuntimeIdentifierGraphFile)" />
14457 <ItemGroup>
14458 <ResolvedFileToPublish Include="$(IntermediateDepsFilePath)">
14459 <RelativePath>$(ProjectDepsFileName)</RelativePath>
14460 </ResolvedFileToPublish>
14461 </ItemGroup>
14462 </Target>
14463 <!--
14464 ============================================================
14465 ComputeEmbeddedApphostPaths
14466
14467 When no build flag is set, EmbeddedApphostPaths is not available. Compute EmbeddedApphostPaths is required to find build asset.
14468 ============================================================
14469 -->
14470 <UsingTask TaskName="Microsoft.NET.Build.Tasks.GetEmbeddedApphostPaths" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
14471 <Target Name="ComputeEmbeddedApphostPaths" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14472 <ItemGroup>
14473 <_PackAsToolShimRuntimeIdentifiers Condition="@(_PackAsToolShimRuntimeIdentifiers) ==''" Include="$(PackAsToolShimRuntimeIdentifiers)" />
14474 </ItemGroup>
14475 <GetEmbeddedApphostPaths PackagedShimOutputDirectory="$(PackagedShimOutputRootDirectory)/shims/$(TargetFramework)" ShimRuntimeIdentifiers="@(_PackAsToolShimRuntimeIdentifiers)" ToolCommandName="$(ToolCommandName)">
14476 <Output TaskParameter="EmbeddedApphostPaths" ItemName="_EmbeddedApphostPaths" />
14477 </GetEmbeddedApphostPaths>
14478 </Target>
14479 <!--
14480 ============================================================
14481 ComputeFilesCopiedToPublishDir
14482
14483 Gathers all the files that will be copied to the publish directory. This is used by wapproj and is required for back compat.
14484 ============================================================
14485 -->
14486 <Target Name="ComputeFilesCopiedToPublishDir" DependsOnTargets="ComputeResolvedFilesToPublishList;&#xD;&#xA; _ComputeFilesToBundle" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14487 <ItemGroup>
14488 <FilesCopiedToPublishDir Include="@(ResolvedFileToPublish)" />
14489 <FilesCopiedToPublishDir Include="$(PublishedSingleFilePath)" RelativePath="$(PublishedSingleFileName)" IsKeyOutput="true" Condition="'$(PublishSingleFile)' == 'true'" />
14490 <!-- Wapproj handles adding the correct deps.json file, so remove it here to avoid duplicates. -->
14491 <FilesCopiedToPublishDir Remove="@(FilesCopiedToPublishDir)" Condition="'%(FilesCopiedToPublishDir.Filename)%(FilesCopiedToPublishDir.Extension)' == '$(ProjectDepsFileName)'" />
14492 </ItemGroup>
14493 </Target>
14494 <!--
14495 ============================================================
14496 PublishItemsOutputGroup
14497
14498 Emit an output group containing all files that get published. This will be consumed by VS installer projects.
14499 ============================================================
14500 -->
14501 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14502 <PublishItemsOutputGroupDependsOn>
14503 $(PublishItemsOutputGroupDependsOn);
14504 ResolveReferences;
14505 ComputeResolvedFilesToPublishList;
14506 _ComputeFilesToBundle;
14507 </PublishItemsOutputGroupDependsOn>
14508 </PropertyGroup>
14509 <UsingTask TaskName="Microsoft.NET.Build.Tasks.GetPublishItemsOutputGroupOutputs" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
14510 <Target Name="PublishItemsOutputGroup" DependsOnTargets="$(PublishItemsOutputGroupDependsOn)" Returns="@(PublishItemsOutputGroupOutputs)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14511 <GetPublishItemsOutputGroupOutputs ResolvedFileToPublish="@(ResolvedFileToPublish)" PublishDir="$(PublishDir)">
14512 <Output TaskParameter="PublishItemsOutputGroupOutputs" ItemName="PublishItemsOutputGroupOutputs" />
14513 </GetPublishItemsOutputGroupOutputs>
14514 <ItemGroup>
14515 <PublishItemsOutputGroupOutputs Include="$(PublishedSingleFilePath)" TargetPath="$(PublishedSingleFileName)" IsKeyOutput="true" Condition="'$(PublishSingleFile)' == 'true'" OutputPath="$(PublishedSingleFilePath)" OutputGroup="PublishItemsOutputGroup" />
14516 </ItemGroup>
14517 </Target>
14518 <!--
14519 This target exists for back-compat with Azure Functions SDK: https://github.com/dotnet/cli/issues/10363
14520 Because build copy-local now behaves the same as publish with respect to package dependency resolution,
14521 the Azure Functions SDK doesn't need to resolve publish assets for build.
14522 TODO: Remove this target when no longer needed as a workaround.
14523 -->
14524 <Target Name="RunResolvePublishAssemblies" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
14525 <!--
14526 ============================================================
14527 _CheckForLanguageAndPublishFeatureCombinationSupport
14528
14529 Block unsupported language and feature combination.
14530 ============================================================
14531 -->
14532 <Target Name="_CheckForLanguageAndPublishFeatureCombinationSupport" BeforeTargets="Publish;PrepareForPublish" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14533 <NETSdkError Condition="('$(Language)' == 'C++' and '$(_EnablePackageReferencesInVCProjects)' != 'true') and '$(TargetFrameworkIdentifier)' == '.NETCoreApp'" ResourceName="NoSupportCppPublishDotnetCore" />
14534 </Target>
14535 <!--
14536============================================================================================================================================
14537 </Import>
14538
14539C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets
14540============================================================================================================================================
14541-->
14542 <!--<Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.PackStubs.targets" Condition="('$(Language)' == 'C++' and '$(_EnablePackageReferencesInVCProjects)' != 'true')" />-->
14543 <!--
14544============================================================================================================================================
14545 <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.PackTool.targets">
14546
14547C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.PackTool.targets
14548============================================================================================================================================
14549-->
14550 <!--
14551***********************************************************************************************
14552Microsoft.NET.PackTool.targets
14553
14554WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
14555 created a backup copy. Incorrect changes to this file will make it
14556 impossible to load or build your projects from the command-line or the IDE.
14557
14558Copyright (c) .NET Foundation. All rights reserved.
14559***********************************************************************************************
14560-->
14561 <UsingTask TaskName="Microsoft.NET.Build.Tasks.GenerateToolsSettingsFile" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
14562 <UsingTask TaskName="Microsoft.NET.Build.Tasks.GenerateShims" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
14563 <UsingTask TaskName="Microsoft.NET.Build.Tasks.ResolveToolPackagePaths" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
14564 <UsingTask TaskName="Microsoft.NET.Build.Tasks.GetEmbeddedApphostPaths" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
14565 <UsingTask TaskName="Microsoft.NET.Build.Tasks.GetNuGetShortFolderName" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
14566 <!--
14567 Mark all dependency as private assets. But keep them as Publish. So dependency DLLs will be included in NuGet package, while
14568 there is no dependency in nuspec. And add Microsoft.NETCore.Platforms, which is used to select correct RID assets.
14569 -->
14570 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14571 <_ToolsSettingsFilePath>$(BaseIntermediateOutputPath)DotnetToolSettings.xml</_ToolsSettingsFilePath>
14572 <SuppressDependenciesWhenPacking Condition=" '$(PackAsTool)' == 'true' ">true</SuppressDependenciesWhenPacking>
14573 <_PackToolPublishDependency Condition=" ('$(GeneratePackageOnBuild)' != 'true' and '$(NoBuild)' != 'true') and $(IsPublishable) == 'true' ">_PublishBuildAlternative</_PackToolPublishDependency>
14574 <_PackToolPublishDependency Condition=" ('$(GeneratePackageOnBuild)' == 'true' or '$(NoBuild)' == 'true') and $(IsPublishable) == 'true' ">$(_PublishNoBuildAlternativeDependsOn)</_PackToolPublishDependency>
14575 </PropertyGroup>
14576 <Target Name="PackTool" DependsOnTargets="GenerateToolsSettingsFileFromBuildProperty;$(_PackToolPublishDependency);_PackToolValidation" Condition=" '$(PackAsTool)' == 'true' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14577 <ItemGroup>
14578 <_GeneratedFiles Include="$(PublishDepsFilePath)" Condition="'$(GenerateDependencyFile)' != 'true' or '$(_UseBuildDependencyFile)' == 'true'" />
14579 <_GeneratedFiles Include="$(PublishRuntimeConfigFilePath)" />
14580 <_GeneratedFiles Include="$(_ToolsSettingsFilePath)" />
14581 </ItemGroup>
14582 <ResolveToolPackagePaths AppHostIntermediatePath="$(AppHostIntermediatePath)" ResolvedFileToPublish="@(ResolvedFileToPublish)" PublishDir="$(PublishDir)" TargetFrameworkMoniker="$(TargetFrameworkMoniker)" TargetPlatformMoniker="$(TargetPlatformMoniker)">
14583 <Output TaskParameter="ResolvedFileToPublishWithPackagePath" ItemName="_ResolvedFileToPublishWithPackagePath" />
14584 </ResolveToolPackagePaths>
14585 <ItemGroup>
14586 <TfmSpecificPackageFile Include="@(_GeneratedFiles)">
14587 <PackagePath>tools/$(_NuGetShortFolderName)/any/%(_GeneratedFiles.RecursiveDir)%(_GeneratedFiles.Filename)%(_GeneratedFiles.Extension)</PackagePath>
14588 </TfmSpecificPackageFile>
14589 <TfmSpecificPackageFile Include="@(_ResolvedFileToPublishWithPackagePath)">
14590 <PackagePath>%(_ResolvedFileToPublishWithPackagePath.PackagePath)</PackagePath>
14591 </TfmSpecificPackageFile>
14592 </ItemGroup>
14593 </Target>
14594 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14595 <ToolCommandName Condition=" '$(ToolCommandName)' == '' ">$(TargetName)</ToolCommandName>
14596 <ToolEntryPoint Condition=" '$(ToolEntryPoint)' == '' ">$(TargetFileName)</ToolEntryPoint>
14597 </PropertyGroup>
14598 <Target Name="GenerateToolsSettingsFileFromBuildProperty" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14599 <GenerateToolsSettingsFile EntryPointRelativePath="$(ToolEntryPoint)" CommandName="$(ToolCommandName)" ToolsSettingsFilePath="$(_ToolsSettingsFilePath)" />
14600 </Target>
14601 <Target Name="_PackToolValidation" Condition=" '$(PackAsTool)' == 'true' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14602 <GetNuGetShortFolderName TargetFrameworkMoniker="$(TargetFrameworkMoniker)" TargetPlatformMoniker="$(TargetPlatformMoniker)">
14603 <Output TaskParameter="NuGetShortFolderName" PropertyName="_NuGetShortFolderName" />
14604 </GetNuGetShortFolderName>
14605 <NETSdkError Condition=" '$(SelfContained)' == 'true' " ResourceName="PackAsToolCannotSupportSelfContained" />
14606 <NETSdkError Condition=" '$(TargetFrameworkIdentifier)' != '.NETCoreApp' " ResourceName="DotnetToolOnlySupportNetcoreapp" />
14607 <NETSdkError Condition=" '$(_TargetFrameworkVersionWithoutV)' &lt; '2.1' " ResourceName="DotnetToolDoesNotSupportTFMLowerThanNetcoreapp21" />
14608 <NETSdkError Condition=" '$(TargetPlatformIdentifier)' != '' and '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), 5.0))" ResourceName="PackAsToolCannotSupportTargetPlatformIdentifier" />
14609 </Target>
14610 <!--
14611 ============================================================
14612 GenerateShimsAssets
14613
14614 Generate packaged shims for signing when PackAsToolShimRuntimeIdentifiers is set
14615 ============================================================
14616 -->
14617 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14618 <_ShimInputCacheFile Condition="'$(_ShimInputCacheFile)' == ''">$(IntermediateOutputPath)$(MSBuildProjectName).shiminput.cache</_ShimInputCacheFile>
14619 <_ShimInputCacheFile>$([MSBuild]::NormalizePath($(MSBuildProjectDirectory), $(_ShimInputCacheFile)))</_ShimInputCacheFile>
14620 <_ShimCreatedSentinelFile Condition="'$(_ShimCreatedSentinelFile)' == ''">$(IntermediateOutputPath)$(MSBuildProjectName).shimcreated.sentinel</_ShimCreatedSentinelFile>
14621 <_ShimCreatedSentinelFile>$([MSBuild]::NormalizePath($(MSBuildProjectDirectory), $(_ShimCreatedSentinelFile)))</_ShimCreatedSentinelFile>
14622 <PackagedShimOutputRootDirectory Condition=" '$(PackagedShimOutputRootDirectory)' == '' ">$(OutDir)</PackagedShimOutputRootDirectory>
14623 </PropertyGroup>
14624 <Target Name="GenerateShimsAssets" BeforeTargets="CopyFilesToOutputDirectory" DependsOnTargets="ResolvePackageAssets;_PackToolValidation;_GenerateShimInputCache;_ComputeExpectedEmbeddedApphostPaths" Condition="'$(PackAsTool)' == 'true' and $(PackAsToolShimRuntimeIdentifiers) != '' " Inputs="@(_GenerateShimsAssetsInput)" Outputs="$(_ShimCreatedSentinelFile)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14625 <GenerateShims ApphostsForShimRuntimeIdentifiers="@(_ApphostsForShimRuntimeIdentifiers)" IntermediateAssembly="@(IntermediateAssembly->'%(FullPath)')" OutputType="$(OutputType)" PackagedShimOutputDirectory="$(PackagedShimOutputRootDirectory)/shims/$(_NuGetShortFolderName)" PackageId="$(PackageId)" PackageVersion="$(PackageVersion)" ShimRuntimeIdentifiers="@(_PackAsToolShimRuntimeIdentifiers)" TargetFrameworkMoniker="$(NuGetTargetMoniker)" ToolCommandName="$(ToolCommandName)" ToolEntryPoint="$(ToolEntryPoint)">
14626 <Output TaskParameter="EmbeddedApphostPaths" ItemName="_EmbeddedApphostPaths" />
14627 </GenerateShims>
14628 <!-- Workaround for https://github.com/dotnet/corefx/issues/31379
14629 LastWriteTime in shims are not accurate. And _ShimInputCacheFile will have later timestamp than generated shims.
14630 Use a created file to "record" LastWriteTime. And only use it in "Outputs" field for timestamp comparison.
14631
14632 Touch Task uses the same API File.SetLastWriteTime underneath. So it also cannot be used.
14633 -->
14634 <WriteLinesToFile Lines="This file's LastWriteTime is used in incremental build" File="$(_ShimCreatedSentinelFile)" Overwrite="True" />
14635 <ItemGroup>
14636 <!-- Do this in an ItemGroup instead of as an output parameter so that it still gets added to the item set
14637 during incremental builds when the task is skipped -->
14638 <FileWrites Include="@(_EmbeddedApphostPaths)" />
14639 <FileWrites Include="$(_ShimCreatedSentinelFile)" />
14640 </ItemGroup>
14641 </Target>
14642 <Target Name="_ComputeExpectedEmbeddedApphostPaths" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14643 <GetEmbeddedApphostPaths PackagedShimOutputDirectory="$(PackagedShimOutputRootDirectory)/shims/$(_NuGetShortFolderName)" ShimRuntimeIdentifiers="@(_PackAsToolShimRuntimeIdentifiers)" ToolCommandName="$(ToolCommandName)">
14644 <Output TaskParameter="EmbeddedApphostPaths" ItemName="_EmbeddedApphostPaths" />
14645 </GetEmbeddedApphostPaths>
14646 </Target>
14647 <!-- To achieve incremental build with property change. When any property changes, WriteOnlyWhenDifferent will be triggered to write cache file.
14648 And the cache file's timestamp will be later, and it then triggers the incremental build.-->
14649 <Target Name="_GenerateShimInputCache" DependsOnTargets="ResolveAssemblyReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14650 <ItemGroup>
14651 <_GenerateShimsAssetsInput Include="$(_ShimInputCacheFile)" />
14652 <_GenerateShimsAssetsInput Include="@(_ApphostsForShimRuntimeIdentifiers)" />
14653 <_GenerateShimsAssetsInput Include="$(_ShimCreatedSentinelFile)" />
14654 <_GenerateShimsAssetsInput Include="$(ProjectAssetsFile)" />
14655 <_GenerateShimsAssetsInputCacheToHash Include="$(PackageId)" />
14656 <_GenerateShimsAssetsInputCacheToHash Include="$(Version)" />
14657 <_GenerateShimsAssetsInputCacheToHash Include="$(NuGetTargetMoniker)" />
14658 <_GenerateShimsAssetsInputCacheToHash Include="$(ToolCommandName)" />
14659 <_GenerateShimsAssetsInputCacheToHash Include="$(ToolEntryPoint)" />
14660 <_GenerateShimsAssetsInputCacheToHash Include="$(PackAsToolShimRuntimeIdentifiers)" />
14661 </ItemGroup>
14662 <Hash ItemsToHash="@(_GenerateShimsAssetsInputCacheToHash)">
14663 <Output TaskParameter="HashResult" PropertyName="_GenerateShimsAssetsInputCacheHash" />
14664 </Hash>
14665 <WriteLinesToFile Lines="$(_GenerateShimsAssetsInputCacheHash)" File="$(_ShimInputCacheFile)" Overwrite="True" WriteOnlyWhenDifferent="True" />
14666 <ItemGroup>
14667 <FileWrites Include="$(_ShimInputCacheFile)" />
14668 </ItemGroup>
14669 </Target>
14670 <!--
14671============================================================================================================================================
14672 </Import>
14673
14674C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets
14675============================================================================================================================================
14676-->
14677 <!--
14678============================================================================================================================================
14679 <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.PackProjectTool.targets">
14680
14681C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.PackProjectTool.targets
14682============================================================================================================================================
14683-->
14684 <!--
14685***********************************************************************************************
14686Microsoft.NET.PackProjectTool.targets
14687
14688WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
14689 created a backup copy. Incorrect changes to this file will make it
14690 impossible to load or build your projects from the command-line or the IDE.
14691
14692Copyright (c) .NET Foundation. All rights reserved.
14693***********************************************************************************************
14694-->
14695 <Target Name="_PackProjectToolValidation" Condition=" '$(PackageType)' == 'DotnetCliTool'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14696 <NETSdkError Condition=" '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and '$(_TargetFrameworkVersionWithoutV)' &gt; '2.2' " ResourceName="ProjectToolOnlySupportTFMLowerThanNetcoreapp22" />
14697 </Target>
14698 <!--
14699============================================================================================================================================
14700 </Import>
14701
14702C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets
14703============================================================================================================================================
14704-->
14705 <!--
14706============================================================================================================================================
14707 <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.PreserveCompilationContext.targets">
14708
14709C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.PreserveCompilationContext.targets
14710============================================================================================================================================
14711-->
14712 <!--
14713***********************************************************************************************
14714Microsoft.NET.PreserveCompilationContext.targets
14715
14716WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
14717 created a backup copy. Incorrect changes to this file will make it
14718 impossible to load or build your projects from the command-line or the IDE.
14719
14720Copyright (c) .NET Foundation. All rights reserved.
14721***********************************************************************************************
14722-->
14723 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14724 <RefAssembliesFolderName Condition="'$(RefAssembliesFolderName)' == ''">refs</RefAssembliesFolderName>
14725 <PreserveCompilationReferences Condition=" '$(PreserveCompilationReferences)' == ''">$(PreserveCompilationContext)</PreserveCompilationReferences>
14726 </PropertyGroup>
14727 <Target Name="ComputeDependencyFileCompilerOptions" Condition="'$(PreserveCompilationContext)' == 'true'" BeforeTargets="GenerateBuildDependencyFile;&#xD;&#xA; GeneratePublishDependencyFile" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14728 <ItemGroup>
14729 <DependencyFileCompilerOptions Include="CompilerOptions">
14730 <DefineConstants>$(DefineConstants)</DefineConstants>
14731 <LangVersion>$(LangVersion)</LangVersion>
14732 <PlatformTarget>$(PlatformTarget)</PlatformTarget>
14733 <AllowUnsafeBlocks>$(AllowUnsafeBlocks)</AllowUnsafeBlocks>
14734 <TreatWarningsAsErrors>$(TreatWarningsAsErrors)</TreatWarningsAsErrors>
14735 <Optimize>$(Optimize)</Optimize>
14736 <AssemblyOriginatorKeyFile>$(AssemblyOriginatorKeyFile)</AssemblyOriginatorKeyFile>
14737 <DelaySign>$(DelaySign)</DelaySign>
14738 <PublicSign>$(DelaySign)</PublicSign>
14739 <DebugType>$(DebugType)</DebugType>
14740 <OutputType>$(OutputType)</OutputType>
14741 <GenerateDocumentationFile>$(GenerateDocumentationFile)</GenerateDocumentationFile>
14742 </DependencyFileCompilerOptions>
14743 </ItemGroup>
14744 </Target>
14745 <UsingTask TaskName="FindItemsFromPackages" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
14746 <Target Name="ComputeRefAssembliesToPublish" Condition="'$(PreserveCompilationReferences)' == 'true'" DependsOnTargets="ResolvePackageAssets;&#xD;&#xA; _ParseTargetManifestFiles" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14747 <FindItemsFromPackages Items="@(RuntimeCopyLocalItems)" Packages="@(RuntimeStorePackages)">
14748 <Output TaskParameter="ItemsFromPackages" ItemName="_RuntimeItemsInRuntimeStore" />
14749 </FindItemsFromPackages>
14750 <ItemGroup>
14751 <!--
14752 Don't copy a compilation assembly if it's also a runtime assembly. There is no need to copy the same
14753 assembly to the 'refs' folder, if it is already in the publish directory.
14754 -->
14755 <_RefAssembliesToExclude Include="@(_ResolvedCopyLocalPublishAssets->'%(FullPath)')" />
14756 <!--
14757 Similarly, don't copy a compilation assembly if it's also a runtime assembly that is in a runtime store.
14758 It will be resolved from the runtime store directory at runtime.
14759 -->
14760 <_RefAssembliesToExclude Include="@(_RuntimeItemsInRuntimeStore)" />
14761 <ResolvedFileToPublish Include="@(ReferencePath)" Exclude="@(_RefAssembliesToExclude)">
14762 <RelativePath>$(RefAssembliesFolderName)\%(Filename)%(Extension)</RelativePath>
14763 </ResolvedFileToPublish>
14764 </ItemGroup>
14765 </Target>
14766 <!--
14767 ============================================================
14768 _CopyReferenceOnlyAssembliesForBuild
14769
14770 Copies reference assemblies that normally can't be resolved at runtime to the 'refs' folder in the build output.
14771 This is necessary in order for the running app to resolve these reference assemblies.
14772 ============================================================
14773 -->
14774 <Target Name="_CopyReferenceOnlyAssembliesForBuild" Condition="'$(PreserveCompilationReferences)' == 'true'" DependsOnTargets="_ComputeReferenceAssemblies" AfterTargets="CopyFilesToOutputDirectory" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14775 <Copy SourceFiles="@(_ReferenceOnlyAssemblies)" DestinationFolder="$(OutDir)$(RefAssembliesFolderName)" SkipUnchangedFiles="$(SkipCopyUnchangedFiles)" OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" UseHardlinksIfPossible="$(CreateHardLinksForCopyFilesToOutputDirectoryIfPossible)" UseSymboliclinksIfPossible="$(CreateSymbolicLinksForCopyFilesToOutputDirectoryIfPossible)">
14776 <Output TaskParameter="DestinationFiles" ItemName="FileWrites" />
14777 </Copy>
14778 </Target>
14779 <!--
14780============================================================================================================================================
14781 </Import>
14782
14783C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets
14784============================================================================================================================================
14785-->
14786 <!--
14787============================================================================================================================================
14788 <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.ConflictResolution.targets">
14789
14790C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.ConflictResolution.targets
14791============================================================================================================================================
14792-->
14793 <!--
14794***********************************************************************************************
14795Microsoft.NET.ConflictResolution.targets
14796
14797WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
14798 created a backup copy. Incorrect changes to this file will make it
14799 impossible to load or build your projects from the command-line or the IDE.
14800
14801Copyright (c) .NET Foundation. All rights reserved.
14802***********************************************************************************************
14803-->
14804 <!--
14805============================================================================================================================================
14806 <Import Project="Microsoft.NET.DefaultPackageConflictOverrides.targets">
14807
14808C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.DefaultPackageConflictOverrides.targets
14809============================================================================================================================================
14810-->
14811 <!--
14812***********************************************************************************************
14813Microsoft.NET.DefaultPackageConflictOverrides.targets
14814
14815WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
14816 created a backup copy. Incorrect changes to this file will make it
14817 impossible to load or build your projects from the command-line or the IDE.
14818
14819Copyright (c) .NET Foundation. All rights reserved.
14820***********************************************************************************************
14821-->
14822 <ItemGroup Condition="'$(DisableDefaultPackageConflictOverrides)' != 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
14823 <PackageConflictOverrides Include="Microsoft.NETCore.App" Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' And ('$(_TargetFrameworkVersionWithoutV)' != '') And ('$(_TargetFrameworkVersionWithoutV)' &lt; '3.0')">
14824 <OverriddenPackages>
14825 Microsoft.CSharp|4.4.0;
14826 Microsoft.Win32.Primitives|4.3.0;
14827 Microsoft.Win32.Registry|4.4.0;
14828 runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl|4.3.0;
14829 runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl|4.3.0;
14830 runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl|4.3.0;
14831 runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl|4.3.0;
14832 runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl|4.3.0;
14833 runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple|4.3.0;
14834 runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl|4.3.0;
14835 runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl|4.3.0;
14836 runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl|4.3.0;
14837 runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl|4.3.0;
14838 runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl|4.3.0;
14839 System.AppContext|4.3.0;
14840 System.Buffers|4.4.0;
14841 System.Collections|4.3.0;
14842 System.Collections.Concurrent|4.3.0;
14843 System.Collections.Immutable|1.4.0;
14844 System.Collections.NonGeneric|4.3.0;
14845 System.Collections.Specialized|4.3.0;
14846 System.ComponentModel|4.3.0;
14847 System.ComponentModel.EventBasedAsync|4.3.0;
14848 System.ComponentModel.Primitives|4.3.0;
14849 System.ComponentModel.TypeConverter|4.3.0;
14850 System.Console|4.3.0;
14851 System.Data.Common|4.3.0;
14852 System.Diagnostics.Contracts|4.3.0;
14853 System.Diagnostics.Debug|4.3.0;
14854 System.Diagnostics.DiagnosticSource|4.4.0;
14855 System.Diagnostics.FileVersionInfo|4.3.0;
14856 System.Diagnostics.Process|4.3.0;
14857 System.Diagnostics.StackTrace|4.3.0;
14858 System.Diagnostics.TextWriterTraceListener|4.3.0;
14859 System.Diagnostics.Tools|4.3.0;
14860 System.Diagnostics.TraceSource|4.3.0;
14861 System.Diagnostics.Tracing|4.3.0;
14862 System.Dynamic.Runtime|4.3.0;
14863 System.Globalization|4.3.0;
14864 System.Globalization.Calendars|4.3.0;
14865 System.Globalization.Extensions|4.3.0;
14866 System.IO|4.3.0;
14867 System.IO.Compression|4.3.0;
14868 System.IO.Compression.ZipFile|4.3.0;
14869 System.IO.FileSystem|4.3.0;
14870 System.IO.FileSystem.AccessControl|4.4.0;
14871 System.IO.FileSystem.DriveInfo|4.3.0;
14872 System.IO.FileSystem.Primitives|4.3.0;
14873 System.IO.FileSystem.Watcher|4.3.0;
14874 System.IO.IsolatedStorage|4.3.0;
14875 System.IO.MemoryMappedFiles|4.3.0;
14876 System.IO.Pipes|4.3.0;
14877 System.IO.UnmanagedMemoryStream|4.3.0;
14878 System.Linq|4.3.0;
14879 System.Linq.Expressions|4.3.0;
14880 System.Linq.Queryable|4.3.0;
14881 System.Net.Http|4.3.0;
14882 System.Net.NameResolution|4.3.0;
14883 System.Net.Primitives|4.3.0;
14884 System.Net.Requests|4.3.0;
14885 System.Net.Security|4.3.0;
14886 System.Net.Sockets|4.3.0;
14887 System.Net.WebHeaderCollection|4.3.0;
14888 System.ObjectModel|4.3.0;
14889 System.Private.DataContractSerialization|4.3.0;
14890 System.Reflection|4.3.0;
14891 System.Reflection.Emit|4.3.0;
14892 System.Reflection.Emit.ILGeneration|4.3.0;
14893 System.Reflection.Emit.Lightweight|4.3.0;
14894 System.Reflection.Extensions|4.3.0;
14895 System.Reflection.Metadata|1.5.0;
14896 System.Reflection.Primitives|4.3.0;
14897 System.Reflection.TypeExtensions|4.3.0;
14898 System.Resources.ResourceManager|4.3.0;
14899 System.Runtime|4.3.0;
14900 System.Runtime.Extensions|4.3.0;
14901 System.Runtime.Handles|4.3.0;
14902 System.Runtime.InteropServices|4.3.0;
14903 System.Runtime.InteropServices.RuntimeInformation|4.3.0;
14904 System.Runtime.Loader|4.3.0;
14905 System.Runtime.Numerics|4.3.0;
14906 System.Runtime.Serialization.Formatters|4.3.0;
14907 System.Runtime.Serialization.Json|4.3.0;
14908 System.Runtime.Serialization.Primitives|4.3.0;
14909 System.Security.AccessControl|4.4.0;
14910 System.Security.Claims|4.3.0;
14911 System.Security.Cryptography.Algorithms|4.3.0;
14912 System.Security.Cryptography.Cng|4.4.0;
14913 System.Security.Cryptography.Csp|4.3.0;
14914 System.Security.Cryptography.Encoding|4.3.0;
14915 System.Security.Cryptography.OpenSsl|4.4.0;
14916 System.Security.Cryptography.Primitives|4.3.0;
14917 System.Security.Cryptography.X509Certificates|4.3.0;
14918 System.Security.Cryptography.Xml|4.4.0;
14919 System.Security.Principal|4.3.0;
14920 System.Security.Principal.Windows|4.4.0;
14921 System.Text.Encoding|4.3.0;
14922 System.Text.Encoding.Extensions|4.3.0;
14923 System.Text.RegularExpressions|4.3.0;
14924 System.Threading|4.3.0;
14925 System.Threading.Overlapped|4.3.0;
14926 System.Threading.Tasks|4.3.0;
14927 System.Threading.Tasks.Extensions|4.3.0;
14928 System.Threading.Tasks.Parallel|4.3.0;
14929 System.Threading.Thread|4.3.0;
14930 System.Threading.ThreadPool|4.3.0;
14931 System.Threading.Timer|4.3.0;
14932 System.ValueTuple|4.3.0;
14933 System.Xml.ReaderWriter|4.3.0;
14934 System.Xml.XDocument|4.3.0;
14935 System.Xml.XmlDocument|4.3.0;
14936 System.Xml.XmlSerializer|4.3.0;
14937 System.Xml.XPath|4.3.0;
14938 System.Xml.XPath.XDocument|4.3.0;
14939 </OverriddenPackages>
14940 </PackageConflictOverrides>
14941 <PackageConflictOverrides Include="NETStandard.Library">
14942 <OverriddenPackages>
14943 Microsoft.Win32.Primitives|4.3.0;
14944 System.AppContext|4.3.0;
14945 System.Collections|4.3.0;
14946 System.Collections.Concurrent|4.3.0;
14947 System.Collections.Immutable|1.4.0;
14948 System.Collections.NonGeneric|4.3.0;
14949 System.Collections.Specialized|4.3.0;
14950 System.ComponentModel|4.3.0;
14951 System.ComponentModel.EventBasedAsync|4.3.0;
14952 System.ComponentModel.Primitives|4.3.0;
14953 System.ComponentModel.TypeConverter|4.3.0;
14954 System.Console|4.3.0;
14955 System.Data.Common|4.3.0;
14956 System.Diagnostics.Contracts|4.3.0;
14957 System.Diagnostics.Debug|4.3.0;
14958 System.Diagnostics.FileVersionInfo|4.3.0;
14959 System.Diagnostics.Process|4.3.0;
14960 System.Diagnostics.StackTrace|4.3.0;
14961 System.Diagnostics.TextWriterTraceListener|4.3.0;
14962 System.Diagnostics.Tools|4.3.0;
14963 System.Diagnostics.TraceSource|4.3.0;
14964 System.Diagnostics.Tracing|4.3.0;
14965 System.Dynamic.Runtime|4.3.0;
14966 System.Globalization|4.3.0;
14967 System.Globalization.Calendars|4.3.0;
14968 System.Globalization.Extensions|4.3.0;
14969 System.IO|4.3.0;
14970 System.IO.Compression|4.3.0;
14971 System.IO.Compression.ZipFile|4.3.0;
14972 System.IO.FileSystem|4.3.0;
14973 System.IO.FileSystem.DriveInfo|4.3.0;
14974 System.IO.FileSystem.Primitives|4.3.0;
14975 System.IO.FileSystem.Watcher|4.3.0;
14976 System.IO.IsolatedStorage|4.3.0;
14977 System.IO.MemoryMappedFiles|4.3.0;
14978 System.IO.Pipes|4.3.0;
14979 System.IO.UnmanagedMemoryStream|4.3.0;
14980 System.Linq|4.3.0;
14981 System.Linq.Expressions|4.3.0;
14982 System.Linq.Queryable|4.3.0;
14983 System.Net.Http|4.3.0;
14984 System.Net.NameResolution|4.3.0;
14985 System.Net.Primitives|4.3.0;
14986 System.Net.Requests|4.3.0;
14987 System.Net.Security|4.3.0;
14988 System.Net.Sockets|4.3.0;
14989 System.Net.WebHeaderCollection|4.3.0;
14990 System.ObjectModel|4.3.0;
14991 System.Private.DataContractSerialization|4.3.0;
14992 System.Reflection|4.3.0;
14993 System.Reflection.Emit|4.3.0;
14994 System.Reflection.Emit.ILGeneration|4.3.0;
14995 System.Reflection.Emit.Lightweight|4.3.0;
14996 System.Reflection.Extensions|4.3.0;
14997 System.Reflection.Primitives|4.3.0;
14998 System.Reflection.TypeExtensions|4.3.0;
14999 System.Resources.ResourceManager|4.3.0;
15000 System.Runtime|4.3.0;
15001 System.Runtime.Extensions|4.3.0;
15002 System.Runtime.Handles|4.3.0;
15003 System.Runtime.InteropServices|4.3.0;
15004 System.Runtime.InteropServices.RuntimeInformation|4.3.0;
15005 System.Runtime.Loader|4.3.0;
15006 System.Runtime.Numerics|4.3.0;
15007 System.Runtime.Serialization.Formatters|4.3.0;
15008 System.Runtime.Serialization.Json|4.3.0;
15009 System.Runtime.Serialization.Primitives|4.3.0;
15010 System.Security.AccessControl|4.4.0;
15011 System.Security.Claims|4.3.0;
15012 System.Security.Cryptography.Algorithms|4.3.0;
15013 System.Security.Cryptography.Csp|4.3.0;
15014 System.Security.Cryptography.Encoding|4.3.0;
15015 System.Security.Cryptography.Primitives|4.3.0;
15016 System.Security.Cryptography.X509Certificates|4.3.0;
15017 System.Security.Cryptography.Xml|4.4.0;
15018 System.Security.Principal|4.3.0;
15019 System.Security.Principal.Windows|4.4.0;
15020 System.Text.Encoding|4.3.0;
15021 System.Text.Encoding.Extensions|4.3.0;
15022 System.Text.RegularExpressions|4.3.0;
15023 System.Threading|4.3.0;
15024 System.Threading.Overlapped|4.3.0;
15025 System.Threading.Tasks|4.3.0;
15026 System.Threading.Tasks.Extensions|4.3.0;
15027 System.Threading.Tasks.Parallel|4.3.0;
15028 System.Threading.Thread|4.3.0;
15029 System.Threading.ThreadPool|4.3.0;
15030 System.Threading.Timer|4.3.0;
15031 System.ValueTuple|4.3.0;
15032 System.Xml.ReaderWriter|4.3.0;
15033 System.Xml.XDocument|4.3.0;
15034 System.Xml.XmlDocument|4.3.0;
15035 System.Xml.XmlSerializer|4.3.0;
15036 System.Xml.XPath|4.3.0;
15037 System.Xml.XPath.XDocument|4.3.0;
15038 </OverriddenPackages>
15039 </PackageConflictOverrides>
15040 </ItemGroup>
15041 <!--
15042============================================================================================================================================
15043 </Import>
15044
15045C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.ConflictResolution.targets
15046============================================================================================================================================
15047-->
15048 <UsingTask TaskName="ResolvePackageFileConflicts" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
15049 <UsingTask TaskName="CheckForDuplicateItemMetadata" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
15050 <!--
15051 _HandlePackageFileConflicts
15052 Handles package file conflict resolution for build.
15053 This will differ from the conflict resolution at publish time if the publish assets differ from build.
15054 -->
15055 <Target Name="_HandlePackageFileConflicts" DependsOnTargets="GetFrameworkPaths;GetReferenceAssemblyPaths;ResolveTargetingPackAssets" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15056 <ItemGroup>
15057 <!--
15058 All runtime assets for conflict resolution.
15059 Exclude the copy-local items since those are passed in separately.
15060 -->
15061 <_RuntimeAssetsForConflictResolution Include="@(RuntimeCopyLocalItems);&#xD;&#xA; @(NativeCopyLocalItems);&#xD;&#xA; @(ResourceCopyLocalItems);&#xD;&#xA; @(RuntimeTargetsCopyLocalItems)" Exclude="@(ReferenceCopyLocalPaths)" />
15062 </ItemGroup>
15063 <ResolvePackageFileConflicts References="@(Reference)" Analyzers="@(Analyzer)" ReferenceCopyLocalPaths="@(ReferenceCopyLocalPaths)" OtherRuntimeItems="@(_RuntimeAssetsForConflictResolution)" PlatformManifests="@(PackageConflictPlatformManifests)" TargetFrameworkDirectories="$(TargetFrameworkDirectory)" PackageOverrides="@(PackageConflictOverrides)" PreferredPackages="$(PackageConflictPreferredPackages)">
15064 <Output TaskParameter="ReferencesWithoutConflicts" ItemName="_ReferencesWithoutConflicts" />
15065 <Output TaskParameter="AnalyzersWithoutConflicts" ItemName="_AnalyzersWithoutConflicts" />
15066 <Output TaskParameter="ReferenceCopyLocalPathsWithoutConflicts" ItemName="_ReferenceCopyLocalPathsWithoutConflicts" />
15067 <Output TaskParameter="Conflicts" ItemName="_ConflictPackageFiles" />
15068 </ResolvePackageFileConflicts>
15069 <!-- Replace Reference / ReferenceCopyLocalPaths with the filtered lists.
15070 We must remove all and include rather than just remove since removal is based
15071 only on ItemSpec and duplicate ItemSpecs may exist with different metadata
15072 (eg: HintPath) -->
15073 <ItemGroup>
15074 <Reference Remove="@(Reference)" />
15075 <Reference Include="@(_ReferencesWithoutConflicts)" />
15076 <Analyzer Remove="@(Analyzer)" />
15077 <Analyzer Include="@(_AnalyzersWithoutConflicts)" />
15078 <ReferenceCopyLocalPaths Remove="@(ReferenceCopyLocalPaths)" />
15079 <ReferenceCopyLocalPaths Include="@(_ReferenceCopyLocalPathsWithoutConflicts)" />
15080 </ItemGroup>
15081 </Target>
15082 <!--
15083 _HandlePackageFileConflictsForPublish
15084 Handles package file conflict resolution for publish.
15085 Currently, publish assets may differ due to the following reasons:
15086 * A package was marked as excluded from publishing (including PrivateAssets="all").
15087 * There are runtime store packages to publish against.
15088 * If we're preserving store layout, which alters the destination paths of files.
15089 When none of these things are true, then we can rely on the conflict resolution from build.
15090 -->
15091 <Target Name="_HandlePackageFileConflictsForPublish" AfterTargets="_ResolveCopyLocalAssetsForPublish;&#xD;&#xA; _FilterSatelliteResourcesForPublish" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15092 <ResolvePackageFileConflicts ReferenceCopyLocalPaths="@(_ResolvedCopyLocalPublishAssets)" PlatformManifests="@(PackageConflictPlatformManifests)" TargetFrameworkDirectories="$(TargetFrameworkDirectory)" PreferredPackages="$(PackageConflictPreferredPackages)">
15093 <Output TaskParameter="ReferenceCopyLocalPathsWithoutConflicts" ItemName="_ResolvedCopyLocalPublishAssetsWithoutConflicts" />
15094 <Output TaskParameter="Conflicts" ItemName="_PublishConflictPackageFiles" />
15095 </ResolvePackageFileConflicts>
15096 <ItemGroup>
15097 <_ResolvedCopyLocalPublishAssets Remove="@(_ResolvedCopyLocalPublishAssets)" />
15098 <_ResolvedCopyLocalPublishAssets Include="@(_ResolvedCopyLocalPublishAssetsWithoutConflicts)" />
15099 </ItemGroup>
15100 </Target>
15101 <!--
15102 _HandleFileConflictsForPublish
15103 Ensures there are no duplicate files being written to the publish output.
15104 -->
15105 <Target Name="_HandleFileConflictsForPublish" AfterTargets="ComputeFilesToPublish" Condition="'$(ErrorOnDuplicatePublishOutputFiles)' != 'false'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15106 <CheckForDuplicateItemMetadata Items="@(ResolvedFileToPublish-&gt;Distinct())" MetadataName="RelativePath">
15107 <Output TaskParameter="DuplicatesExist" PropertyName="_ResolvedFileToPublishContainsDuplicates" />
15108 <Output TaskParameter="DuplicateItems" ItemName="_ResolvedFileToPublishDuplicatedItems" />
15109 </CheckForDuplicateItemMetadata>
15110 <NETSdkError Condition="'$(_ResolvedFileToPublishContainsDuplicates)' == 'true'" ResourceName="DuplicatePublishOutputFiles" FormatArguments="@(_ResolvedFileToPublishDuplicatedItems, ', ')" />
15111 </Target>
15112 <!--
15113============================================================================================================================================
15114 </Import>
15115
15116C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets
15117============================================================================================================================================
15118-->
15119 <!--
15120============================================================================================================================================
15121 <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Sdk.CSharp.targets" Condition="'$(Language)' == 'C#'">
15122
15123C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.CSharp.targets
15124============================================================================================================================================
15125-->
15126 <!--
15127***********************************************************************************************
15128Microsoft.NET.Sdk.CSharp.targets
15129
15130WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
15131 created a backup copy. Incorrect changes to this file will make it
15132 impossible to load or build your projects from the command-line or the IDE.
15133
15134Copyright (c) .NET Foundation. All rights reserved.
15135***********************************************************************************************
15136-->
15137 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15138 <AppDesignerFolder Condition="'$(AppDesignerFolder)' == ''">Properties</AppDesignerFolder>
15139 </PropertyGroup>
15140 <PropertyGroup Condition="'$(DisableImplicitConfigurationDefines)' != 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15141 <ImplicitConfigurationDefine>$(Configuration.ToUpperInvariant())</ImplicitConfigurationDefine>
15142 <!-- Replace dashes and periods in the configuration with underscores. This makes it more likely that
15143 the resulting compilation constant will be a valid C# conditional compilation symbol. As the set
15144 of characters that aren't allowed is essentially open-ended, there's probably not a good way to
15145 fully sanitize the Configuration in MSBuild evaluation. If the resulting string still isn't a
15146 valid conditional combilation symbol, then the compiler will generate the following error and
15147 the define will be ignored:
15148 warning MSB3052: The parameter to the compiler is invalid, '/define:0BAD_DEFINE' will be ignored.
15149 -->
15150 <ImplicitConfigurationDefine>$(ImplicitConfigurationDefine.Replace('-', '_'))</ImplicitConfigurationDefine>
15151 <ImplicitConfigurationDefine>$(ImplicitConfigurationDefine.Replace('.', '_'))</ImplicitConfigurationDefine>
15152 <ImplicitConfigurationDefine>$(ImplicitConfigurationDefine.Replace(' ', '_'))</ImplicitConfigurationDefine>
15153 <DefineConstants>$(DefineConstants);$(ImplicitConfigurationDefine)</DefineConstants>
15154 </PropertyGroup>
15155 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15156 <DefineConstants>$(DefineConstants);$(VersionlessImplicitFrameworkDefine);$(ImplicitFrameworkDefine);$(BackwardsCompatFrameworkDefine)</DefineConstants>
15157 </PropertyGroup>
15158 <!-- Enable hot reload in 6.0 and newer C# projects -->
15159 <ItemGroup Condition="'$(SupportsHotReload)' != 'false' AND '$(TargetFrameworkIdentifier)' == '.NETCoreApp' AND $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), '6.0'))" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15160 <ProjectCapability Include="SupportsHotReload" />
15161 </ItemGroup>
15162 <!--
15163============================================================================================================================================
15164 </Import>
15165
15166C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets
15167============================================================================================================================================
15168-->
15169 <!--<Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Sdk.VisualBasic.targets" Condition="'$(Language)' == 'VB'" />-->
15170 <!--<Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Sdk.FSharp.targets" Condition="'$(Language)' == 'F#'" />-->
15171 <!--
15172============================================================================================================================================
15173 <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.ILLink.targets" Condition="'$(Language)' != 'C++'">
15174
15175C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.ILLink.targets
15176============================================================================================================================================
15177-->
15178 <!--
15179***********************************************************************************************
15180Microsoft.NET.ILLink.targets
15181
15182WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
15183 created a backup copy. Incorrect changes to this file will make it
15184 impossible to load or build your projects from the command-line or the IDE.
15185
15186Copyright (c) .NET Foundation. All rights reserved.
15187***********************************************************************************************
15188-->
15189 <!-- These properties should be set even if PublishTrimmed != true, to allow SDK components to
15190 set PublishTrimmed in targets which are imported after these targets. -->
15191 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15192 <IntermediateLinkDir Condition=" '$(IntermediateLinkDir)' == '' ">$(IntermediateOutputPath)linked\</IntermediateLinkDir>
15193 <IntermediateLinkDir Condition=" !HasTrailingSlash('$(IntermediateLinkDir)') ">$(IntermediateLinkDir)\</IntermediateLinkDir>
15194 <!-- Used to enable incremental build for the linker target. -->
15195 <_LinkSemaphore>$(IntermediateLinkDir)Link.semaphore</_LinkSemaphore>
15196 </PropertyGroup>
15197 <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15198 <AssemblyAttribute Condition="'$(IsTrimmable)' == 'true'" Include="System.Reflection.AssemblyMetadata">
15199 <_Parameter1>IsTrimmable</_Parameter1>
15200 <_Parameter2>True</_Parameter2>
15201 </AssemblyAttribute>
15202 </ItemGroup>
15203 <!-- We disable features for trimmed apps here so that the feature
15204 switches can flow to the runtimeconfig.json. Features are disabled
15205 by default since they may require assemblies, types or members that
15206 could be removed by the linker, causing a trimmed app to crash. -->
15207 <PropertyGroup Condition="'$(PublishTrimmed)' == 'true' And&#xD;&#xA; $([MSBuild]::VersionGreaterThanOrEquals($(_TargetFrameworkVersionWithoutV), '6.0'))" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15208 <StartupHookSupport Condition="'$(StartupHookSupport)' == ''">false</StartupHookSupport>
15209 <CustomResourceTypesSupport Condition="'$(CustomResourceTypesSupport)' == ''">false</CustomResourceTypesSupport>
15210 <EnableUnsafeBinaryFormatterInDesigntimeLicenseContextSerialization Condition="'$(EnableUnsafeBinaryFormatterInDesigntimeLicenseContextSerialization)' == ''">false</EnableUnsafeBinaryFormatterInDesigntimeLicenseContextSerialization>
15211 <EnableUnsafeBinaryFormatterSerialization Condition="'$(EnableUnsafeBinaryFormatterSerialization)' == ''">false</EnableUnsafeBinaryFormatterSerialization>
15212 <EnableUnsafeUTF7Encoding Condition="'$(EnableUnsafeUTF7Encoding)' == ''">false</EnableUnsafeUTF7Encoding>
15213 <BuiltInComInteropSupport Condition="'$(BuiltInComInteropSupport)' == ''">false</BuiltInComInteropSupport>
15214 <AutoreleasePoolSupport Condition="'$(AutoreleasePoolSupport)' == ''">false</AutoreleasePoolSupport>
15215 <EnableCppCLIHostActivation Condition="'$(EnableCppCLIHostActivation)' == ''">false</EnableCppCLIHostActivation>
15216 <_EnableConsumingManagedCodeFromNativeHosting Condition="'$(_EnableConsumingManagedCodeFromNativeHosting)' == ''">false</_EnableConsumingManagedCodeFromNativeHosting>
15217 <VerifyDependencyInjectionOpenGenericServiceTrimmability Condition="'$(VerifyDependencyInjectionOpenGenericServiceTrimmability)' == ''">true</VerifyDependencyInjectionOpenGenericServiceTrimmability>
15218 </PropertyGroup>
15219 <PropertyGroup Condition="'$(SuppressTrimAnalysisWarnings)' == '' And '$(PublishTrimmed)' == 'true' And '$(EnableTrimAnalyzer)' != 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15220 <!-- Trim analysis warnings are suppressed for .NET < 6. -->
15221 <SuppressTrimAnalysisWarnings Condition="$([MSBuild]::VersionLessThan('$(TargetFrameworkVersion)', '6.0'))">true</SuppressTrimAnalysisWarnings>
15222 <!-- Suppress for WPF/WinForms (unless linking everything) -->
15223 <SuppressTrimAnalysisWarnings Condition="'$(TrimmerDefaultAction)' != 'link' And ('$(UseWpf)' == 'true' Or '$(UseWindowsForms)' == 'true')">true</SuppressTrimAnalysisWarnings>
15224 <!-- Otherwise, for .NET 6+, warnings are on by default -->
15225 <SuppressTrimAnalysisWarnings Condition="'$(SuppressTrimAnalysisWarnings)' == ''">false</SuppressTrimAnalysisWarnings>
15226 </PropertyGroup>
15227 <!-- Suppress warnings produced by the linker or by the ILLink Roslyn analyzer. -->
15228 <PropertyGroup Condition="'$(SuppressTrimAnalysisWarnings)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15229 <!-- RequiresUnreferenceCodeAttribute method called -->
15230 <NoWarn>$(NoWarn);IL2026</NoWarn>
15231 <!-- Invalid use of DynamicallyAccessedMembersAttribute -->
15232 <NoWarn>$(NoWarn);IL2041;IL2042;IL2043;IL2056</NoWarn>
15233 <!-- Reference to removed attribute type -->
15234 <NoWarn>$(NoWarn);IL2045</NoWarn>
15235 <!-- RequiresUnreferencedCodeAttribute mismatch on virtual override -->
15236 <NoWarn>$(NoWarn);IL2046</NoWarn>
15237 <!-- COM marshalling warning -->
15238 <NoWarn>$(NoWarn);IL2050</NoWarn>
15239 <!-- Reflection intrinsics with unknown arguments -->
15240 <NoWarn>$(NoWarn);IL2032;IL2055;IL2057;IL2058;IL2059;IL2060;IL2061;IL2096</NoWarn>
15241 <!-- Unknown values passed to locations with DynamicallyAccessedMemberTypes -->
15242 <NoWarn>$(NoWarn);IL2062;IL2063;IL2064;IL2065;IL2066</NoWarn>
15243 <!-- Unsatisfied DynamicallyAccessedMembers requirements -->
15244 <NoWarn>$(NoWarn);IL2067;IL2068;IL2069;IL2070;IL2071;IL2072;IL2073;IL2074;IL2075;IL2076;IL2077;IL2078;IL2079;IL2080;IL2081;IL2082;IL2083;IL2084;IL2085;IL2086;IL2087;IL2088;IL2089;IL2090;IL2091</NoWarn>
15245 <!-- DynamicallyAccessedMembersAttribute mismatch on virtual override -->
15246 <NoWarn>$(NoWarn);IL2092;IL2093;IL2094;IL2095</NoWarn>
15247 <!-- DynamicallyAccessedMembersAttribute used on unsupported member -->
15248 <NoWarn>$(NoWarn);IL2097;IL2098;IL2099;IL2106</NoWarn>
15249 <!-- Unknown value passed to Expression.Property -->
15250 <NoWarn>$(NoWarn);IL2103</NoWarn>
15251 <!-- Multiple methods associated with state machine type -->
15252 <NoWarn>$(NoWarn);IL2107</NoWarn>
15253 <!-- Unannotated type derived from base type with RequiresUnreferencedCode -->
15254 <NoWarn>$(NoWarn);IL2109</NoWarn>
15255 <!-- Reflection access to members with DynamicallyAccessedMembers requirements -->
15256 <NoWarn>$(NoWarn);IL2110;IL2111;IL2114;IL2115</NoWarn>
15257 <!-- Reflection access to members with RequiresUnreferencedCode -->
15258 <NoWarn>$(NoWarn);IL2112;IL2113</NoWarn>
15259 </PropertyGroup>
15260 <!--
15261 ============================================================
15262 ILLink
15263
15264 Replace the files to be published with versions that have been
15265 passed through the linker. Also prevent removed files from being
15266 included in the generated deps.json.
15267 ============================================================
15268 -->
15269 <Target Name="ILLink" Condition=" '$(PublishTrimmed)' == 'true' And&#xD;&#xA; '$(_TargetFrameworkVersionWithoutV)' &gt;= '3.0' And '$(TargetFrameworkIdentifier)' == '.NETCoreApp' " DependsOnTargets="_RunILLink" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15270 <NETSdkInformation ResourceName="ILLink_Info" />
15271 <NETSdkError Condition="'$(_ILLinkExitCode)' != '' And '$(_ILLinkExitCode)' != '0'" ResourceName="ILLinkFailed" />
15272 <ItemGroup>
15273 <_LinkedResolvedFileToPublish Include="@(_LinkedResolvedFileToPublishCandidate)" Condition="Exists('%(Identity)')" />
15274 <ResolvedFileToPublish Remove="@(ManagedAssemblyToLink)" />
15275 <ResolvedFileToPublish Remove="@(_PDBToLink)" />
15276 <ResolvedFileToPublish Include="@(_LinkedResolvedFileToPublish)" />
15277 </ItemGroup>
15278 <!-- Remove assemblies from inputs to GenerateDepsFile. See
15279 https://github.com/dotnet/sdk/pull/3086 -->
15280 <ItemGroup>
15281 <_RemovedManagedAssembly Include="@(ManagedAssemblyToLink)" Condition="!Exists('$(IntermediateLinkDir)%(Filename)%(Extension)')" />
15282 <ResolvedCompileFileDefinitions Remove="@(_RemovedManagedAssembly)" />
15283 <RuntimeCopyLocalItems Remove="@(_RemovedManagedAssembly)" />
15284 <RuntimeTargetsCopyLocalItems Remove="@(_RemovedManagedAssembly)" />
15285 <UserRuntimeAssembly Remove="@(_RemovedManagedAssembly)" />
15286 <RuntimePackAsset Remove="@(_RemovedManagedAssembly)" />
15287 </ItemGroup>
15288 </Target>
15289 <!--
15290 ============================================================
15291 _RunILLink
15292
15293 Execute the linker. This target runs incrementally, only executing
15294 if the output semaphore file is out of date with respect to the inputs.
15295 ============================================================
15296 -->
15297 <UsingTask TaskName="ILLink" AssemblyFile="$(ILLinkTasksAssembly)" Condition="'$(ILLinkTasksAssembly)' != ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
15298 <Target Name="_RunILLink" DependsOnTargets="_ComputeManagedAssemblyToLink;PrepareForILLink" Inputs="$(MSBuildAllProjects);@(ManagedAssemblyToLink);@(TrimmerRootDescriptor);@(ReferencePath)" Outputs="$(_LinkSemaphore)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15299 <!-- When running from Desktop MSBuild, DOTNET_HOST_PATH is not set.
15300 In this case, explicitly specify the path to the dotnet host. -->
15301 <PropertyGroup Condition=" '$(DOTNET_HOST_PATH)' == '' ">
15302 <_DotNetHostDirectory>$(NetCoreRoot)</_DotNetHostDirectory>
15303 <_DotNetHostFileName>dotnet</_DotNetHostFileName>
15304 <_DotNetHostFileName Condition="$([MSBuild]::IsOSPlatform(`Windows`))">dotnet.exe</_DotNetHostFileName>
15305 </PropertyGroup>
15306 <Delete Files="@(_LinkedResolvedFileToPublishCandidate)" />
15307 <ILLink AssemblyPaths="@(ManagedAssemblyToLink)" ReferenceAssemblyPaths="@(ReferencePath)" RootAssemblyNames="@(TrimmerRootAssembly)" TrimMode="$(TrimMode)" DefaultAction="$(TrimmerDefaultAction)" RemoveSymbols="$(TrimmerRemoveSymbols)" FeatureSettings="@(_TrimmerFeatureSettings)" CustomData="@(_TrimmerCustomData)" BeforeFieldInit="$(_TrimmerBeforeFieldInit)" OverrideRemoval="$(_TrimmerOverrideRemoval)" UnreachableBodies="$(_TrimmerUnreachableBodies)" UnusedInterfaces="$(_TrimmerUnusedInterfaces)" IPConstProp="$(_TrimmerIPConstProp)" Sealer="$(_TrimmerSealer)" Warn="$(ILLinkWarningLevel)" NoWarn="$(NoWarn)" TreatWarningsAsErrors="$(ILLinkTreatWarningsAsErrors)" WarningsAsErrors="$(WarningsAsErrors)" WarningsNotAsErrors="$(WarningsNotAsErrors)" SingleWarn="$(TrimmerSingleWarn)" CustomSteps="@(_TrimmerCustomSteps)" RootDescriptorFiles="@(TrimmerRootDescriptor)" OutputDirectory="$(IntermediateLinkDir)" DumpDependencies="$(_TrimmerDumpDependencies)" ExtraArgs="$(_ExtraTrimmerArgs)" ToolExe="$(_DotNetHostFileName)" ToolPath="$(_DotNetHostDirectory)" ContinueOnError="ErrorAndContinue">
15308 <Output TaskParameter="ExitCode" PropertyName="_ILLinkExitCode" />
15309 </ILLink>
15310 <Touch Files="$(_LinkSemaphore)" AlwaysCreate="true" Condition=" '$(_ILLinkExitCode)' == '0' " />
15311 </Target>
15312 <!--
15313 ============================================================
15314 PrepareForILLink
15315
15316 Set up the default options and inputs to ILLink. Other targets are expected to hook into
15317 this extension point via BeforeTargets/AfterTargets to opt assemblies into or out of trimming
15318 using global ILLink options, or per-assembly IsTrimmable and TrimMode metadata.
15319
15320 Note that adding items to or removing items from ManagedAssemblyToLink is unsupported. To change
15321 the set of inputs to the linker, instead use a different extension point to
15322 set PostprocessAssembly metadata on ResolvedFileToPublish.
15323 -->
15324 <Target Name="PrepareForILLink" DependsOnTargets="_ComputeManagedAssemblyToLink" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15325 <!-- The defaults currently root non-framework assemblies, which
15326 is a no-op for portable apps. If we later support more ways
15327 to customize the behavior we can allow linking portable apps
15328 in some cases. -->
15329 <NETSdkError Condition="'$(SelfContained)' != 'true'" ResourceName="ILLinkNotSupportedError" />
15330 <PropertyGroup Condition=" '$(ILLinkWarningLevel)' == '' ">
15331 <ILLinkWarningLevel Condition=" '$(EffectiveAnalysisLevel)' != '' And&#xD;&#xA; $([MSBuild]::VersionGreaterThanOrEquals($(EffectiveAnalysisLevel), '5.0')) ">5</ILLinkWarningLevel>
15332 <ILLinkWarningLevel Condition=" '$(ILLinkWarningLevel)' == '' ">0</ILLinkWarningLevel>
15333 </PropertyGroup>
15334 <!-- Defaults for .NET < 6 -->
15335 <PropertyGroup Condition=" $([MSBuild]::VersionLessThan('$(TargetFrameworkVersion)', '6.0')) ">
15336 <TrimMode Condition=" '$(TrimMode)' == '' ">copyused</TrimMode>
15337 <!-- Action is the same regardless of whether the assembly has an IsTrimmable attribute. (The attribute didn't exist until .NET 6.) -->
15338 <TrimmerDefaultAction>$(TrimMode)</TrimmerDefaultAction>
15339 </PropertyGroup>
15340 <PropertyGroup>
15341 <TrimMode Condition=" '$(TrimMode)' == '' ">link</TrimMode>
15342 <!-- For .NET 6+, assemblies without IsTrimmable attribute get the "copy" action. -->
15343 <TrimmerDefaultAction Condition=" '$(TrimmerDefaultAction)' == '' ">copy</TrimmerDefaultAction>
15344 <ILLinkTreatWarningsAsErrors Condition=" '$(ILLinkTreatWarningsAsErrors)' == '' ">$(TreatWarningsAsErrors)</ILLinkTreatWarningsAsErrors>
15345 <_ExtraTrimmerArgs>--skip-unresolved true $(_ExtraTrimmerArgs)</_ExtraTrimmerArgs>
15346 <TrimmerSingleWarn Condition=" '$(TrimmerSingleWarn)' == '' ">true</TrimmerSingleWarn>
15347 </PropertyGroup>
15348 <!-- Suppressions to work around issues in previous versions of the framework. See https://github.com/dotnet/runtime/issues/40336 -->
15349 <PropertyGroup Condition="'$(SuppressTrimAnalysisWarnings)' == 'true' And $([MSBuild]::VersionLessThan('$(TargetFrameworkVersion)', '6.0'))">
15350 <!-- Framework embedded XML descriptors reference windows-only members. -->
15351 <NoWarn Condition=" !$(RuntimeIdentifier.StartsWith('win')) ">$(NoWarn);IL2008</NoWarn>
15352 <!-- Unresolved type referenced in XML. -->
15353 <NoWarn Condition=" !$(RuntimeIdentifier.StartsWith('win')) ">$(NoWarn);IL2009</NoWarn>
15354 <!-- Unresolved member on type referenced in XML. -->
15355 <!-- Framework has DynamicDependencyAttributes that reference windows-only members. -->
15356 <NoWarn Condition=" !$(RuntimeIdentifier.StartsWith('win')) ">$(NoWarn);IL2037</NoWarn>
15357 <!-- Unresolved member for DynamicDependencyAttribute -->
15358 <!-- Framework embedded XML descriptors reference 32-bit-only members. -->
15359 <NoWarn Condition=" '$(PlatformTarget)' != 'x64' AND '$(PlatformTarget)' != 'arm64'">$(NoWarn);IL2009;IL2012</NoWarn>
15360 <!-- Unresolved field referenced in XML -->
15361 </PropertyGroup>
15362 <!-- Set a default value for TrimmerRemoveSymbols unless set explicitly. -->
15363 <PropertyGroup Condition=" '$(TrimmerRemoveSymbols)' == '' ">
15364 <!-- The default is to remove symbols when debugger support is disabled, and keep them otherwise. -->
15365 <TrimmerRemoveSymbols Condition=" '$(DebuggerSupport)' == 'false' ">true</TrimmerRemoveSymbols>
15366 <TrimmerRemoveSymbols Condition=" '$(DebuggerSupport)' != 'false' ">false</TrimmerRemoveSymbols>
15367 </PropertyGroup>
15368 <PropertyGroup Condition="'$(_TrimmerUnreachableBodies)' == '' And&#xD;&#xA; '$(PublishTrimmed)' == 'true' And&#xD;&#xA; $([MSBuild]::VersionLessThan($(_TargetFrameworkVersionWithoutV), '6.0'))">
15369 <_TrimmerUnreachableBodies>false</_TrimmerUnreachableBodies>
15370 </PropertyGroup>
15371 <!-- Set IsTrimmable for any assemblies that already have customized TrimMode. -->
15372 <ItemGroup>
15373 <ManagedAssemblyToLink Condition=" '%(ManagedAssemblyToLink.TrimMode)' != '' ">
15374 <IsTrimmable>true</IsTrimmable>
15375 </ManagedAssemblyToLink>
15376 </ItemGroup>
15377 <!-- SetIsTrimmable for any assemblies listed in TrimmableAssembly. -->
15378 <JoinItems Left="@(ManagedAssemblyToLink)" LeftKey="FileName" LeftMetadata="*" Right="@(TrimmableAssembly)" ItemSpecToUse="Left">
15379 <Output TaskParameter="JoinResult" ItemName="_TrimmableManagedAssemblyToLink" />
15380 </JoinItems>
15381 <ItemGroup>
15382 <ManagedAssemblyToLink Remove="@(_TrimmableManagedAssemblyToLink)" />
15383 <ManagedAssemblyToLink Include="@(_TrimmableManagedAssemblyToLink)" IsTrimmable="true" />
15384 </ItemGroup>
15385 <!-- Root the main assembly, whether or not it has IsTrimmable set. -->
15386 <ItemGroup>
15387 <TrimmerRootAssembly Include="@(IntermediateAssembly)" />
15388 </ItemGroup>
15389 <!-- For .NET < 6, root and copy assemblies without IsTrimmable=true MSBuild metadata. -->
15390 <ItemGroup Condition=" $([MSBuild]::VersionLessThan('$(TargetFrameworkVersion)', '6.0')) ">
15391 <TrimmerRootAssembly Include="@(ManagedAssemblyToLink)" Condition=" '%(ManagedAssemblyToLink.IsTrimmable)' != 'true' " />
15392 <ManagedAssemblyToLink Condition=" '%(ManagedAssemblyToLink.IsTrimmable)' != 'true' ">
15393 <TrimMode>copy</TrimMode>
15394 </ManagedAssemblyToLink>
15395 </ItemGroup>
15396 <!-- In .NET6+, set the action explicitly for any with IsTrimmable MSBuild metadata -->
15397 <ItemGroup Condition=" $([MSBuild]::VersionGreaterThanOrEquals('$(TargetFrameworkVersion)', '6.0')) ">
15398 <ManagedAssemblyToLink Condition=" '%(ManagedAssemblyToLink.IsTrimmable)' == 'true' And '%(ManagedAssemblyToLink.TrimMode)' == '' ">
15399 <TrimMode>$(TrimMode)</TrimMode>
15400 </ManagedAssemblyToLink>
15401 <ManagedAssemblyToLink Condition=" '%(ManagedAssemblyToLink.IsTrimmable)' == 'false' And '%(ManagedAssemblyToLink.TrimMode)' == '' ">
15402 <TrimMode>$(TrimmerDefaultAction)</TrimMode>
15403 </ManagedAssemblyToLink>
15404 </ItemGroup>
15405 <ItemGroup>
15406 <!-- Don't collapse to a single warning for the intermediate assembly.
15407 This just sets metadata on the items in ManagedAssemblyToLink that came from IntermediateAssembly. -->
15408 <!-- Find ManagedAssemblyToLink _except_ IntermediateAssembly -->
15409 <__SingleWarnIntermediateAssembly Include="@(ManagedAssemblyToLink)" />
15410 <__SingleWarnIntermediateAssembly Remove="@(IntermediateAssembly)" />
15411 <!-- Subtract these from ManagedAssemblyToLink, to get the intersection. -->
15412 <_SingleWarnIntermediateAssembly Include="@(ManagedAssemblyToLink)" />
15413 <_SingleWarnIntermediateAssembly Remove="@(__SingleWarnIntermediateAssembly)" />
15414 <!-- Set metadata on the intersection. -->
15415 <_SingleWarnIntermediateAssembly>
15416 <TrimmerSingleWarn Condition=" '%(_SingleWarnIntermediateAssembly.TrimmerSingleWarn)' == '' ">false</TrimmerSingleWarn>
15417 </_SingleWarnIntermediateAssembly>
15418 <!-- Replace these items in ManagedAssemblyToLink. -->
15419 <ManagedAssemblyToLink Remove="@(_SingleWarnIntermediateAssembly)" />
15420 <ManagedAssemblyToLink Include="@(_SingleWarnIntermediateAssembly)" />
15421 <!-- Don't collapse to a single warning for project references -->
15422 <ManagedAssemblyToLink Condition=" '%(ManagedAssemblyToLink.ProjectReferenceOriginalItemSpec)' != '' ">
15423 <TrimmerSingleWarn Condition=" '%(ManagedAssemblyToLink.TrimmerSingleWarn)' == '' ">false</TrimmerSingleWarn>
15424 </ManagedAssemblyToLink>
15425 </ItemGroup>
15426 <ItemGroup>
15427 <_TrimmerFeatureSettings Include="@(RuntimeHostConfigurationOption)" Condition="'%(RuntimeHostConfigurationOption.Trim)' == 'true'" />
15428 </ItemGroup>
15429 </Target>
15430 <!--
15431 ============================================================
15432 _ComputeManagedAssemblyToLink
15433
15434 Compute the set of inputs to the linker.
15435 ============================================================
15436 -->
15437 <UsingTask TaskName="ComputeManagedAssemblies" AssemblyFile="$(ILLinkTasksAssembly)" Condition="'$(ILLinkTasksAssembly)' != ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
15438 <Target Name="_ComputeManagedAssemblyToLink" DependsOnTargets="_ComputeAssembliesToPostprocessOnPublish" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15439 <!-- NB: There should not be non-managed assemblies in this list, but we still give the linker a chance to
15440 further refine this list. It currently drops C++/CLI assemblies in ComputeManageAssemblies. -->
15441 <ComputeManagedAssemblies Assemblies="@(ResolvedFileToPublish-&gt;WithMetadataValue('PostprocessAssembly', 'true'))">
15442 <Output TaskParameter="ManagedAssemblies" ItemName="ManagedAssemblyToLink" />
15443 </ComputeManagedAssemblies>
15444 <ItemGroup>
15445 <!-- The linker implicitly picks up PDBs next to input assemblies. We will filter these out of the publish set. -->
15446 <__PDBToLink Include="@(ResolvedFileToPublish)" Exclude="@(ManagedAssemblyToLink->'%(RelativeDir)%(Filename).pdb')" />
15447 <_PDBToLink Include="@(ResolvedFileToPublish)" Exclude="@(__PDBToLink)" />
15448 </ItemGroup>
15449 <ItemGroup>
15450 <_LinkedResolvedFileToPublishCandidate Include="@(ManagedAssemblyToLink->'$(IntermediateLinkDir)%(Filename)%(Extension)')" />
15451 <_LinkedResolvedFileToPublishCandidate Include="@(_PDBToLink->'$(IntermediateLinkDir)%(Filename)%(Extension)')" />
15452 </ItemGroup>
15453 </Target>
15454 <!--
15455============================================================================================================================================
15456 </Import>
15457
15458C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets
15459============================================================================================================================================
15460-->
15461 <!--
15462============================================================================================================================================
15463 <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Sdk.Analyzers.targets" Condition="'$(Language)' == 'C#' or '$(Language)' == 'VB'">
15464
15465C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.Analyzers.targets
15466============================================================================================================================================
15467-->
15468 <!--
15469***********************************************************************************************
15470Microsoft.NET.Sdk.Analyzers.targets
15471
15472WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
15473 created a backup copy. Incorrect changes to this file will make it
15474 impossible to load or build your projects from the command-line or the IDE.
15475
15476Copyright (c) .NET Foundation. All rights reserved.
15477***********************************************************************************************
15478-->
15479 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15480 <!-- Analysis level is a single property that can be used to control both the compiler warning waves
15481 and enable .NET analyzers. Valid values are 'none', 'latest', 'preview', or a version number -->
15482 <!-- Automatically set AnalysisLevel to 5 if targeting .net 5 and nothing else specified -->
15483 <AnalysisLevel Condition="'$(AnalysisLevel)' == '' And&#xD;&#xA; '$(TargetFrameworkIdentifier)' == '.NETCoreApp' And&#xD;&#xA; $([MSBuild]::VersionEquals($(_TargetFrameworkVersionWithoutV), '5.0'))">5.0</AnalysisLevel>
15484 <!-- Automatically set AnalysisLevel if not specified -->
15485 <AnalysisLevel Condition="'$(AnalysisLevel)' == '' And&#xD;&#xA; (('$(TargetFrameworkIdentifier)' == '.NETCoreApp' And&#xD;&#xA; $([MSBuild]::VersionGreaterThanOrEquals($(_TargetFrameworkVersionWithoutV), '6.0'))) Or&#xD;&#xA; '$(AnalysisMode)' != '')">latest</AnalysisLevel>
15486 <!-- AnalysisLevel can also contain compound values with a prefix and suffix separated by a '-' character.
15487 The prefix indicates the core AnalysisLevel and the suffix indicates the bucket of
15488 rules to enable by default. For example, some valid compound values for AnalysisLevel are:
15489 1. '5-all' - Indicates core AnalysisLevel = '5' with 'all' the rules enabled by default.
15490 2. 'latest-none' - Indicates core AnalysisLevel = 'latest' with 'none' of the rules enabled by default.
15491 AnalysisLevelPrefix is used to set the EffectiveAnalysisLevel below.
15492 AnalysisLevelSuffix is processed further in Microsoft.CodeAnalysis.NetAnalyzers.targets imported below.
15493 -->
15494 <AnalysisLevelPrefix Condition="$(AnalysisLevel.Contains('-'))">$([System.Text.RegularExpressions.Regex]::Replace($(AnalysisLevel), '-(.)*', ''))</AnalysisLevelPrefix>
15495 <AnalysisLevelSuffix Condition="'$(AnalysisLevelPrefix)' != ''">$([System.Text.RegularExpressions.Regex]::Replace($(AnalysisLevel), '$(AnalysisLevelPrefix)-', ''))</AnalysisLevelSuffix>
15496 <!-- EffectiveAnalysisLevel is used to differentiate from user specified strings (such as 'none')
15497 and an implied numerical option (such as '4')-->
15498 <EffectiveAnalysisLevel Condition="'$(AnalysisLevel)' == 'none' or '$(AnalysisLevelPrefix)' == 'none'">4.0</EffectiveAnalysisLevel>
15499 <EffectiveAnalysisLevel Condition="'$(AnalysisLevel)' == 'latest' or '$(AnalysisLevelPrefix)' == 'latest'">6.0</EffectiveAnalysisLevel>
15500 <EffectiveAnalysisLevel Condition="'$(AnalysisLevel)' == 'preview' or '$(AnalysisLevelPrefix)' == 'preview'">7.0</EffectiveAnalysisLevel>
15501 <!-- Set EffectiveAnalysisLevel to the value of AnalysisLevel if it is a version number -->
15502 <EffectiveAnalysisLevel Condition="'$(EffectiveAnalysisLevel)' == '' And&#xD;&#xA; '$(AnalysisLevelPrefix)' != ''">$(AnalysisLevelPrefix)</EffectiveAnalysisLevel>
15503 <EffectiveAnalysisLevel Condition="'$(EffectiveAnalysisLevel)' == '' And&#xD;&#xA; '$(AnalysisLevel)' != ''">$(AnalysisLevel)</EffectiveAnalysisLevel>
15504 </PropertyGroup>
15505 <!-- Enable Analyzers based on EffectiveAnalysisLevel -->
15506 <PropertyGroup Condition="'$(EffectiveAnalysisLevel)' != '' And&#xD;&#xA; $([MSBuild]::VersionGreaterThanOrEquals($(EffectiveAnalysisLevel), '5.0'))" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15507 <!-- EnableNETAnalyzers Allows analyzers to be disabled in bulk via msbuild if the user wants to -->
15508 <EnableNETAnalyzers Condition="'$(EnableNETAnalyzers)' == ''">true</EnableNETAnalyzers>
15509 <!-- Intermediate step to enable ILLink.Analyzers so ILLink, Blazor, Xamarin, AOT, etc. can enable the same flags -->
15510 <EnableSingleFileAnalyzer Condition="'$(EnableSingleFileAnalyzer)' == '' And&#xD;&#xA; '$(PublishSingleFile)' == 'true'">true</EnableSingleFileAnalyzer>
15511 <!-- Enable the trim analyzer when any trimming settings are enabled. Warnings may suppressed based on other settings. -->
15512 <EnableTrimAnalyzer Condition="'$(EnableTrimAnalyzer)' == '' And ('$(PublishTrimmed)' == 'true' Or '$(IsTrimmable)' == 'true')">true</EnableTrimAnalyzer>
15513 <!-- Compiler warning level, defaulted to 4. We promote it to 5 if the user has set analysis level to 5 or higher
15514 NOTE: at this time only the C# compiler supports warning waves -->
15515 <WarningLevel Condition="'$(Language)' == 'C#'">5</WarningLevel>
15516 </PropertyGroup>
15517 <!-- Set the default WarningLevel based on EffectiveAnalysisLevel
15518 For .NET 6 we want the Warning level to be 6 -->
15519 <PropertyGroup Condition="'$(EffectiveAnalysisLevel)' != '' And&#xD;&#xA; $([MSBuild]::VersionGreaterThanOrEquals($(EffectiveAnalysisLevel), '6.0'))" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15520 <WarningLevel Condition="'$(Language)' == 'C#'">6</WarningLevel>
15521 </PropertyGroup>
15522 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15523 <EnableNETAnalyzers Condition="'$(EnableNETAnalyzers)' == ''">false</EnableNETAnalyzers>
15524 <!-- EnforceCodeStyleInBuild Allows code style analyzers to be disabled in bulk via msbuild if the user wants to -->
15525 <EnforceCodeStyleInBuild Condition="'$(EnforceCodeStyleInBuild)' == ''">false</EnforceCodeStyleInBuild>
15526 <!-- If the user specified 'preview' we want to pick a very high warning level to opt into the highest possible warning wave -->
15527 <WarningLevel Condition="'$(Language)' == 'C#' And '$(AnalysisLevel)' == 'preview'">9999</WarningLevel>
15528 </PropertyGroup>
15529 <!-- Unconditionally import 'Microsoft.CodeAnalysis.NetAnalyzers.props' for all C# and VB projects for supporting https://github.com/dotnet/roslyn-analyzers/issues/3977 -->
15530 <!--
15531============================================================================================================================================
15532 <Import Project="$(MSBuildThisFileDirectory)..\analyzers\build\Microsoft.CodeAnalysis.NetAnalyzers.props" Condition="'$(Language)' == 'C#' Or '$(Language)' == 'VB'">
15533
15534C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\analyzers\build\Microsoft.CodeAnalysis.NetAnalyzers.props
15535============================================================================================================================================
15536-->
15537 <!--
15538 This import includes an additional props file that disables built-in analyzers from .NET SDK that have the identical CA rules to those implemented in this package.
15539 This additional props file should only be present in the analyzer NuGet package, it should **not** be inserted into the .NET SDK.
15540 -->
15541 <!--<Import Project="DisableNETAnalyzersForNuGetPackage.props" Condition="Exists('DisableNETAnalyzersForNuGetPackage.props')" />-->
15542 <!--
15543 PropertyGroup to set the NetAnalyzers version installed in the SDK.
15544 We rely on the additional props file 'DisableNETAnalyzersForNuGetPackage.props' not being present in the SDK.
15545 -->
15546 <PropertyGroup Condition="!Exists('DisableNETAnalyzersForNuGetPackage.props')">
15547 <_NETAnalyzersSDKAssemblyVersion>6.0.0</_NETAnalyzersSDKAssemblyVersion>
15548 </PropertyGroup>
15549 <!--
15550 This property group prevents the rule ids implemented in this package to be bumped to errors when
15551 the 'CodeAnalysisTreatWarningsAsErrors' = 'false'.
15552 -->
15553 <PropertyGroup>
15554 <CodeAnalysisRuleIds>CA1000;CA1001;CA1002;CA1003;CA1005;CA1008;CA1010;CA1012;CA1014;CA1016;CA1017;CA1018;CA1019;CA1021;CA1024;CA1027;CA1028;CA1030;CA1031;CA1032;CA1033;CA1034;CA1036;CA1040;CA1041;CA1043;CA1044;CA1045;CA1046;CA1047;CA1050;CA1051;CA1052;CA1054;CA1055;CA1056;CA1058;CA1060;CA1061;CA1062;CA1063;CA1064;CA1065;CA1066;CA1067;CA1068;CA1069;CA1070;CA1200;CA1303;CA1304;CA1305;CA1307;CA1308;CA1309;CA1310;CA1401;CA1416;CA1417;CA1418;CA1419;CA1501;CA1502;CA1505;CA1506;CA1507;CA1508;CA1509;CA1700;CA1707;CA1708;CA1710;CA1711;CA1712;CA1713;CA1715;CA1716;CA1720;CA1721;CA1724;CA1725;CA1727;CA1802;CA1805;CA1806;CA1810;CA1812;CA1813;CA1814;CA1815;CA1816;CA1819;CA1820;CA1821;CA1822;CA1823;CA1824;CA1825;CA1826;CA1827;CA1828;CA1829;CA1830;CA1831;CA1832;CA1833;CA1834;CA1835;CA1836;CA1837;CA1838;CA1839;CA1840;CA1841;CA1842;CA1843;CA1844;CA1845;CA1846;CA1847;CA1848;CA1849;CA2000;CA2002;CA2007;CA2008;CA2009;CA2011;CA2012;CA2013;CA2014;CA2015;CA2016;CA2017;CA2018;CA2100;CA2101;CA2109;CA2119;CA2153;CA2200;CA2201;CA2207;CA2208;CA2211;CA2213;CA2214;CA2215;CA2216;CA2217;CA2218;CA2219;CA2224;CA2225;CA2226;CA2227;CA2229;CA2231;CA2234;CA2235;CA2237;CA2241;CA2242;CA2243;CA2244;CA2245;CA2246;CA2247;CA2248;CA2249;CA2250;CA2251;CA2252;CA2253;CA2254;CA2255;CA2256;CA2257;CA2258;CA2300;CA2301;CA2302;CA2305;CA2310;CA2311;CA2312;CA2315;CA2321;CA2322;CA2326;CA2327;CA2328;CA2329;CA2330;CA2350;CA2351;CA2352;CA2353;CA2354;CA2355;CA2356;CA2361;CA2362;CA3001;CA3002;CA3003;CA3004;CA3005;CA3006;CA3007;CA3008;CA3009;CA3010;CA3011;CA3012;CA3061;CA3075;CA3076;CA3077;CA3147;CA5350;CA5351;CA5358;CA5359;CA5360;CA5361;CA5362;CA5363;CA5364;CA5365;CA5366;CA5367;CA5368;CA5369;CA5370;CA5371;CA5372;CA5373;CA5374;CA5375;CA5376;CA5377;CA5378;CA5379;CA5380;CA5381;CA5382;CA5383;CA5384;CA5385;CA5386;CA5387;CA5388;CA5389;CA5390;CA5391;CA5392;CA5393;CA5394;CA5395;CA5396;CA5397;CA5398;CA5399;CA5400;CA5401;CA5402;CA5403;CA5404;CA5405</CodeAnalysisRuleIds>
15555 <WarningsNotAsErrors Condition="'$(CodeAnalysisTreatWarningsAsErrors)' == 'false'">$(WarningsNotAsErrors);$(CodeAnalysisRuleIds)</WarningsNotAsErrors>
15556 </PropertyGroup>
15557 <!--
15558============================================================================================================================================
15559 </Import>
15560
15561C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.Analyzers.targets
15562============================================================================================================================================
15563-->
15564 <!--<Import Project="$(MSBuildThisFileDirectory)..\analyzers\build\Microsoft.CodeAnalysis.NetAnalyzers.targets" Condition="$(EnableNETAnalyzers)" />-->
15565 <!--<Import Project="$(MSBuildThisFileDirectory)..\analyzers\build\Microsoft.NET.ILLink.Analyzers.props" Condition="'$(EnableSingleFileAnalyzer)' == 'true' Or '$(EnableTrimAnalyzer)' == 'true'" />-->
15566 <!-- .NET Analyzers -->
15567 <ItemGroup Condition="$(EnableNETAnalyzers)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15568 <Analyzer Condition="'$(Language)' == 'VB'" Include="$(MSBuildThisFileDirectory)..\analyzers\Microsoft.CodeAnalysis.VisualBasic.NetAnalyzers.dll" IsImplicitlyDefined="true" />
15569 <Analyzer Condition="'$(Language)' == 'C#'" Include="$(MSBuildThisFileDirectory)..\analyzers\Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll" IsImplicitlyDefined="true" />
15570 <Analyzer Include="$(MSBuildThisFileDirectory)..\analyzers\Microsoft.CodeAnalysis.NetAnalyzers.dll" IsImplicitlyDefined="true" />
15571 </ItemGroup>
15572 <!-- ILLinker Analyzers -->
15573 <ItemGroup Condition="'$(EnableSingleFileAnalyzer)' == 'true' Or '$(EnableTrimAnalyzer)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15574 <Analyzer Include="$(MSBuildThisFileDirectory)..\analyzers\ILLink.*.dll" IsImplicitlyDefined="true" />
15575 </ItemGroup>
15576 <!-- CompilerVisibleProperties for .NET -->
15577 <ItemGroup Condition="'$(Language)' == 'C#' Or '$(Language)' == 'VB'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15578 <!-- Used for analyzer to match namespace to folder structure -->
15579 <CompilerVisibleProperty Include="RootNamespace" />
15580 <CompilerVisibleProperty Include="ProjectDir" />
15581 </ItemGroup>
15582 <!-- C# Code Style Analyzers -->
15583 <ItemGroup Condition="$(EnforceCodeStyleInBuild) And '$(Language)' == 'C#'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15584 <Analyzer Include="$(MSBuildThisFileDirectory)..\codestyle\cs\Microsoft.CodeAnalysis.CodeStyle.dll" IsImplicitlyDefined="true" />
15585 <Analyzer Include="$(MSBuildThisFileDirectory)..\codestyle\cs\Microsoft.CodeAnalysis.CodeStyle.Fixes.dll" IsImplicitlyDefined="true" />
15586 <Analyzer Include="$(MSBuildThisFileDirectory)..\codestyle\cs\Microsoft.CodeAnalysis.CSharp.CodeStyle.dll" IsImplicitlyDefined="true" />
15587 <Analyzer Include="$(MSBuildThisFileDirectory)..\codestyle\cs\Microsoft.CodeAnalysis.CSharp.CodeStyle.Fixes.dll" IsImplicitlyDefined="true" />
15588 </ItemGroup>
15589 <!-- Visual Basic Code Style Analyzers -->
15590 <ItemGroup Condition="$(EnforceCodeStyleInBuild) And '$(Language)' == 'VB'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15591 <Analyzer Include="$(MSBuildThisFileDirectory)..\codestyle\vb\Microsoft.CodeAnalysis.CodeStyle.dll" IsImplicitlyDefined="true" />
15592 <Analyzer Include="$(MSBuildThisFileDirectory)..\codestyle\vb\Microsoft.CodeAnalysis.CodeStyle.Fixes.dll" IsImplicitlyDefined="true" />
15593 <Analyzer Include="$(MSBuildThisFileDirectory)..\codestyle\vb\Microsoft.CodeAnalysis.VisualBasic.CodeStyle.dll" IsImplicitlyDefined="true" />
15594 <Analyzer Include="$(MSBuildThisFileDirectory)..\codestyle\vb\Microsoft.CodeAnalysis.VisualBasic.CodeStyle.Fixes.dll" IsImplicitlyDefined="true" />
15595 </ItemGroup>
15596 <!--
15597============================================================================================================================================
15598 </Import>
15599
15600C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets
15601============================================================================================================================================
15602-->
15603 <!-- Import WindowsDesktop targets if necessary -->
15604 <PropertyGroup Condition=" '$(ImportWindowsDesktopTargets)' == ''&#xD;&#xA; and ('$(UseWpf)' == 'true' Or '$(UseWindowsForms)' == 'true') " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15605 <ImportWindowsDesktopTargets Condition=" '$(TargetFrameworkIdentifier)' == '.NETCoreApp'&#xD;&#xA; and $([MSBuild]::VersionGreaterThanOrEquals($(_TargetFrameworkVersionWithoutV), '3.0'))&#xD;&#xA; and '$(TargetPlatformIdentifier)' == 'Windows' ">true</ImportWindowsDesktopTargets>
15606 <ImportWindowsDesktopTargets Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework'">true</ImportWindowsDesktopTargets>
15607 </PropertyGroup>
15608 <PropertyGroup Condition=" '$(ImportWindowsDesktopTargets)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15609 <AfterMicrosoftNETSdkTargets>$(AfterMicrosoftNETSdkTargets);$(MSBuildThisFileDirectory)../../Microsoft.NET.Sdk.WindowsDesktop/targets/Microsoft.NET.Sdk.WindowsDesktop.targets</AfterMicrosoftNETSdkTargets>
15610 </PropertyGroup>
15611 <!-- Note: Once WindowsDesktop is a workload this will be moved to WorkloadManifest.targets -->
15612 <ItemGroup Condition="'$(MicrosoftNETWindowsWorkloadInstalled)' == 'true' and&#xD;&#xA; '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and&#xD;&#xA; $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), '5.0'))" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15613 <SdkSupportedTargetPlatformIdentifier Include="windows" DisplayName="Windows" />
15614 </ItemGroup>
15615 <!--
15616============================================================================================================================================
15617 <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Windows.targets" Condition="'$(TargetPlatformIdentifier)' == 'Windows'">
15618
15619C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Windows.targets
15620============================================================================================================================================
15621-->
15622 <!--
15623***********************************************************************************************
15624Microsoft.NET.Windows.targets
15625
15626WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
15627 created a backup copy. Incorrect changes to this file will make it
15628 impossible to load or build your projects from the command-line or the IDE.
15629
15630Copyright (c) .NET Foundation. All rights reserved.
15631***********************************************************************************************
15632-->
15633 <!--C++/CLI does not support nuget restore which is required for Windows SDK Ref. Also these are C# projections.-->
15634 <PropertyGroup Condition=" '$(DisableImplicitFrameworkReferences)' != 'true'&#xD;&#xA; and '$(TargetFrameworkIdentifier)' == '.NETCoreApp'&#xD;&#xA; and $([MSBuild]::VersionGreaterThanOrEquals($(_TargetFrameworkVersionWithoutV), '5.0'))&#xD;&#xA; and '$(TargetPlatformIdentifier)' == 'Windows'&#xD;&#xA; and '$(TargetPlatformVersion)' != ''&#xD;&#xA; and $([MSBuild]::VersionGreaterThanOrEquals($(TargetPlatformVersion), '10.0'))&#xD;&#xA; and ('$(Language)' != 'C++' or '$(_EnablePackageReferencesInVCProjects)' == 'true')&#xD;&#xA; and '$(IncludeWindowsSDKRefFrameworkReferences)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15635 <IncludeWindowsSDKRefFrameworkReferences>true</IncludeWindowsSDKRefFrameworkReferences>
15636 </PropertyGroup>
15637 <!-- If UseWindowsSDKPreview is true, then allow any target platform version, not just the ones defined by the SDK -->
15638 <PropertyGroup Condition="'$(UseWindowsSDKPreview)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15639 <TargetPlatformVersionSupported>true</TargetPlatformVersionSupported>
15640 </PropertyGroup>
15641 <!-- Set 7.0 as the TargetPlatformVersion for windows. -->
15642 <PropertyGroup Condition="'$(TargetPlatformIdentifier)' == 'windows' and '$(TargetPlatformVersion)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15643 <TargetPlatformVersion>7.0</TargetPlatformVersion>
15644 </PropertyGroup>
15645 <PropertyGroup Condition="'$(TargetPlatformIdentifier)' == 'Windows'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15646 <!-- When targeting Windows, sync the SupportedOSPlatformVersion and TargetPlatformMinVersion. If either one isn't set, set it to the
15647 other value. -->
15648 <SupportedOSPlatformVersion Condition="'$(SupportedOSPlatformVersion)' == ''">$(TargetPlatformMinVersion)</SupportedOSPlatformVersion>
15649 <TargetPlatformMinVersion Condition="'$(TargetPlatformMinVersion)' == ''">$(SupportedOSPlatformVersion)</TargetPlatformMinVersion>
15650 <!-- If neither were set, then use the TargetPlatformVersion value for both -->
15651 <SupportedOSPlatformVersion Condition="'$(SupportedOSPlatformVersion)' == ''">$(TargetPlatformVersion)</SupportedOSPlatformVersion>
15652 <TargetPlatformMinVersion Condition="'$(TargetPlatformMinVersion)' == ''">$(TargetPlatformVersion)</TargetPlatformMinVersion>
15653 </PropertyGroup>
15654 <Target Name="_ErrorOnUnresolvedWindowsSDKAssemblyConflict" AfterTargets="ResolveAssemblyReferences" Condition=" '@(ResolveAssemblyReferenceUnresolvedAssemblyConflicts)' != '' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15655 <ItemGroup>
15656 <_WindowsSDKUnresolvedRef Include="@(ResolveAssemblyReferenceUnresolvedAssemblyConflicts)" Condition="'%(Identity)' == 'Microsoft.Windows.SDK.NET' " />
15657 </ItemGroup>
15658 <NETSdkError ResourceName="WindowsSDKVersionConflicts" Condition="@(_WindowsSDKUnresolvedRef) != ''" />
15659 </Target>
15660 <Target Name="RemoveManagedWinRTComponentWinMDReferences" AfterTargets="ResolveProjectReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15661 <ItemGroup>
15662 <!-- Before we remove them from _ResolvedProjectReferencePaths, grab the implementation .dll's path -->
15663 <ManagedWinRTComponentImplementations Include="@(_ResolvedProjectReferencePaths->'%(ManagedImplementation)')" Condition="('%(_ResolvedProjectReferencePaths.Extension)' == '.winmd') And ('%(_ResolvedProjectReferencePaths.Implementation)' == 'WinRT.Host.dll')" />
15664 </ItemGroup>
15665 <!-- Managed WinRT components include both the WinMD and the .NET DLL in the result from GetTargetPath. Managed projects need to only reference the .NET DLL, not the WinMD.
15666 The WinMD in this case can be identified because the Implementation metadata value is WinRT.Host.dll. So here we remove any such WinMD references. -->
15667 <ItemGroup>
15668 <_ResolvedProjectReferencePaths Remove="@(_ResolvedProjectReferencePaths)" Condition="('%(_ResolvedProjectReferencePaths.Extension)' == '.winmd') And ('%(_ResolvedProjectReferencePaths.Implementation)' == 'WinRT.Host.dll')" />
15669 </ItemGroup>
15670 </Target>
15671 <Target Name="AddWinRTComponentImplementationReference" AfterTargets="ResolveProjectReferences" DependsOnTargets="RemoveManagedWinRTComponentWinMDReferences" Condition="'@(ManagedWinRTComponentImplementations)' != ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15672 <ItemGroup>
15673 <Reference Include="@(ManagedWinRTComponentImplementations)" />
15674 </ItemGroup>
15675 </Target>
15676 <!--
15677============================================================================================================================================
15678 </Import>
15679
15680C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets
15681============================================================================================================================================
15682-->
15683 <!-- TargetPlatformMoniker and TargetPlatformDisplayName would normally be set in Microsoft.Common.CurrentVersion.targets. However, the
15684 TargetPlatformVersion may have been set later than that in evaluation by platform-specific targets or Directory.Build.targets. So fix up those properties here -->
15685 <PropertyGroup Condition="'$(TargetPlatformMoniker)' == '' and '$(TargetPlatformIdentifier)' != ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15686 <!-- Set TargetPlatformVersion if it isn't set. This is so that we have a valid TargetPlatformMoniker for Restore.
15687 This avoids an issue where projects with multitargeted unknown platforms would fail to restore because the platforms
15688 weren't included in the TargetPlatformMoniker for restore, obscuring the errors about unknown platforms or missing
15689 workloads. -->
15690 <TargetPlatformVersion Condition="'$(TargetPlatformVersion)' == ''">0.0</TargetPlatformVersion>
15691 <TargetPlatformMoniker>$(TargetPlatformIdentifier),Version=$(TargetPlatformVersion)</TargetPlatformMoniker>
15692 <TargetPlatformDisplayName>$([Microsoft.Build.Utilities.ToolLocationHelper]::GetPlatformSDKDisplayName($(TargetPlatformIdentifier), $(TargetPlatformVersion)))</TargetPlatformDisplayName>
15693 </PropertyGroup>
15694 <!-- Default SupportedOSPlatformVersion to TargetPlatformVersion -->
15695 <PropertyGroup Condition="'$(SupportedOSPlatformVersion)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15696 <SupportedOSPlatformVersion>$(TargetPlatformVersion)</SupportedOSPlatformVersion>
15697 </PropertyGroup>
15698 <!--<Import Project="$(AfterMicrosoftNETSdkTargets)" Condition="'$(AfterMicrosoftNETSdkTargets)' != ''" />-->
15699 <!--
15700============================================================================================================================================
15701 </Import>
15702
15703C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\Sdk\Sdk.targets
15704============================================================================================================================================
15705-->
15706 <!--
15707============================================================================================================================================
15708 <Import Project="$(MSBuildThisFileDirectory)..\targets\Microsoft.NET.Compatibility.targets">
15709
15710C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Compatibility.targets
15711============================================================================================================================================
15712-->
15713 <!-- Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the MIT license. -->
15714 <ItemGroup Condition="'$(EnablePackageValidation)' == 'true' and '$(DisablePackageBaselineValidation)' != 'true' and '$(PackageValidationBaselinePath)' == '' and '$(PackageValidationBaselineVersion)' != ''">
15715 <PackageDownload Include="$([MSBuild]::ValueOrDefault('$(PackageValidationBaselineName)', '$(PackageId)'))" Version="[$(PackageValidationBaselineVersion)]" />
15716 </ItemGroup>
15717 <!--
15718============================================================================================================================================
15719 <Import Project="Microsoft.NET.Compatibility.Common.targets" Condition="'$(UseCompatibilityPackage)' != 'true'">
15720
15721C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Compatibility.Common.targets
15722============================================================================================================================================
15723-->
15724 <!-- Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the MIT license. -->
15725 <UsingTask TaskName="Microsoft.DotNet.Compatibility.ValidatePackage" AssemblyFile="$(DotNetCompatibilityAssembly)" />
15726 <PropertyGroup>
15727 <!--Add any custom targets that need to run before package validation to the following property-->
15728 <RunPackageValidationDependsOn>_GetReferencePathFromInnerProjects;$(RunPackageValidationDependsOn)</RunPackageValidationDependsOn>
15729 </PropertyGroup>
15730 <Target Name="RunPackageValidation" DependsOnTargets="$(RunPackageValidationDependsOn)" AfterTargets="Pack" Condition="'$(IsPackable)' == 'true' and '$(EnablePackageValidation)' == 'true'">
15731 <PropertyGroup Condition="'$(RoslynAssembliesPath)' == ''">
15732 <RoslynAssembliesPath>$(RoslynTargetsPath)</RoslynAssembliesPath>
15733 <_packageReferenceList>@(PackageReference)</_packageReferenceList>
15734 <RoslynAssembliesPath Condition="'$(MSBuildProjectExtension)' == '.csproj' and $(_packageReferenceList.Contains('Microsoft.Net.Compilers.Toolset'))">$([System.IO.Path]::GetDirectoryName($(CSharpCoreTargetsPath)))</RoslynAssembliesPath>
15735 <RoslynAssembliesPath Condition="'$(MSBuildProjectExtension)' == '.vbproj' and $(_packageReferenceList.Contains('Microsoft.Net.Compilers.Toolset'))">$([System.IO.Path]::GetDirectoryName($(VisualBasicCoreTargetsPath)))</RoslynAssembliesPath>
15736 <RoslynAssembliesPath Condition="'$(MSBuildRuntimeType)' == 'Core'">$([System.IO.Path]::Combine('$(RoslynAssembliesPath)', bincore))</RoslynAssembliesPath>
15737 </PropertyGroup>
15738 <PropertyGroup>
15739 <PackageValidationBaselineName Condition="'$(PackageValidationBaselineName)' == ''">$(PackageId)</PackageValidationBaselineName>
15740 <PackageValidationBaselinePath Condition="'$(PackageValidationBaselinePath)' == '' and '$(PackageValidationBaselineVersion)' != ''">$([MSBuild]::NormalizePath('$(NuGetPackageRoot)', '$(PackageValidationBaselineName.ToLower())', '$(PackageValidationBaselineVersion)', '$(PackageValidationBaselineName.ToLower()).$(PackageValidationBaselineVersion).nupkg'))</PackageValidationBaselinePath>
15741 <GenerateCompatibilitySuppressionFile Condition="'$(GenerateCompatibilitySuppressionFile)' == ''">false</GenerateCompatibilitySuppressionFile>
15742 <_compatibilitySuppressionFilePath>$([MSBuild]::NormalizePath('$(MSBuildProjectDirectory)', 'CompatibilitySuppressions.xml'))</_compatibilitySuppressionFilePath>
15743 <CompatibilitySuppressionFilePath Condition="'$(CompatibilitySuppressionFilePath)' == '' and (Exists($(_compatibilitySuppressionFilePath)) or '$(GenerateCompatibilitySuppressionFile)' == 'true')">$(_compatibilitySuppressionFilePath)</CompatibilitySuppressionFilePath>
15744 </PropertyGroup>
15745 <!-- PackageTargetPath isn't exposed by NuGet: https://github.com/NuGet/Home/issues/6671. -->
15746 <Microsoft.DotNet.Compatibility.ValidatePackage PackageTargetPath="$([MSBuild]::ValueOrDefault('$(PackageTargetPath)', '$([MSBuild]::NormalizePath('$(PackageOutputPath)', '$(PackageId).$(PackageVersion).nupkg'))'))" RuntimeGraph="$(RuntimeIdentifierGraphPath)" NoWarn="$(NoWarn)" RunApiCompat="$([MSBuild]::ValueOrDefault('$(RunApiCompat)', 'true'))" EnableStrictModeForCompatibleTfms="$([MSBuild]::ValueOrDefault('$(EnableStrictModeForCompatibleTfms)', 'true'))" EnableStrictModeForCompatibleFrameworksInPackage="$([MSBuild]::ValueOrDefault('$(EnableStrictModeForCompatibleFrameworksInPackage)', 'false'))" GenerateCompatibilitySuppressionFile="$(GenerateCompatibilitySuppressionFile)" CompatibilitySuppressionFilePath="$(CompatibilitySuppressionFilePath)" BaselinePackageTargetPath="$(PackageValidationBaselinePath)" DisablePackageBaselineValidation="$(DisablePackageBaselineValidation)" RoslynAssembliesPath="$(RoslynAssembliesPath)" ReferencePaths="@(PackageValidationReferencePath)" />
15747 </Target>
15748 <PropertyGroup>
15749 <_GetReferencePathFromInnerProjectsDependsOn Condition="'$(IsCrossTargetingBuild)' != 'true'">_GetReferencePathForPackageValidation</_GetReferencePathFromInnerProjectsDependsOn>
15750 <_GetReferencePathFromInnerProjectsDependsOn Condition="'$(IsCrossTargetingBuild)' == 'true'">_ComputeTargetFrameworkItems</_GetReferencePathFromInnerProjectsDependsOn>
15751 </PropertyGroup>
15752 <Target Name="_GetReferencePathForPackageValidation" DependsOnTargets="ResolveReferences" Returns="@(_ReferencePathWithTargetFramework)">
15753 <ItemGroup>
15754 <_ReferencePathWithTargetFramework Include="@(ReferencePath)" TargetFramework="$(TargetFramework)" />
15755 </ItemGroup>
15756 </Target>
15757 <Target Name="_GetReferencePathFromInnerProjects" DependsOnTargets="$(_GetReferencePathFromInnerProjectsDependsOn)" Condition="'$(RunPackageValidationWithoutReferences)' != 'true'">
15758 <MSBuild Projects="@(_InnerBuildProjects)" Condition="'$(IsCrossTargetingBuild)' == 'true'" Targets="_GetReferencePathForPackageValidation" Properties="BuildProjectReferences=false">
15759 <Output ItemName="PackageValidationReferencePath" TaskParameter="TargetOutputs" />
15760 </MSBuild>
15761 <ItemGroup Condition="'$(IsCrossTargetingBuild)' != 'true'">
15762 <PackageValidationReferencePath Include="@(_ReferencePathWithTargetFramework)" />
15763 </ItemGroup>
15764 </Target>
15765 <!--
15766============================================================================================================================================
15767 </Import>
15768
15769C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Compatibility.targets
15770============================================================================================================================================
15771-->
15772 <!--
15773============================================================================================================================================
15774 </Import>
15775
15776C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\Sdk\Sdk.targets
15777============================================================================================================================================
15778-->
15779 <!-- Import targets from NuGet.Build.Tasks.Pack package/Sdk -->
15780 <PropertyGroup Condition="'$(NuGetBuildTasksPackTargets)' == '' AND '$(ImportNuGetBuildTasksPackTargetsFromSdk)' != 'false'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15781 <NuGetBuildTasksPackTargets Condition="'$(IsCrossTargetingBuild)' == 'true'">$(MSBuildThisFileDirectory)..\..\NuGet.Build.Tasks.Pack\buildCrossTargeting\NuGet.Build.Tasks.Pack.targets</NuGetBuildTasksPackTargets>
15782 <NuGetBuildTasksPackTargets Condition="'$(IsCrossTargetingBuild)' != 'true'">$(MSBuildThisFileDirectory)..\..\NuGet.Build.Tasks.Pack\build\NuGet.Build.Tasks.Pack.targets</NuGetBuildTasksPackTargets>
15783 <ImportNuGetBuildTasksPackTargetsFromSdk>true</ImportNuGetBuildTasksPackTargetsFromSdk>
15784 </PropertyGroup>
15785 <!--
15786============================================================================================================================================
15787 <Import Project="$(NuGetBuildTasksPackTargets)" Condition="Exists('$(NuGetBuildTasksPackTargets)') AND '$(ImportNuGetBuildTasksPackTargetsFromSdk)' == 'true'">
15788
15789C:\Program Files\dotnet\sdk\6.0.100\Sdks\NuGet.Build.Tasks.Pack\build\NuGet.Build.Tasks.Pack.targets
15790============================================================================================================================================
15791-->
15792 <!--
15793***********************************************************************************************
15794NuGet.Build.Tasks.Pack.targets
15795
15796WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
15797 created a backup copy. Incorrect changes to this file will make it
15798 impossible to load or build your projects from the command-line or the IDE.
15799
15800Copyright (c) .NET Foundation. All rights reserved.
15801***********************************************************************************************
15802-->
15803 <!-- Load NuGet.Build.Tasks.Pack.dll, this can be overridden to use a different version with $(NuGetPackTaskAssemblyFile) -->
15804 <PropertyGroup Condition="$(NuGetPackTaskAssemblyFile) == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15805 <NuGetPackTaskAssemblyFile Condition="'$(MSBuildRuntimeType)' == 'Core'">..\CoreCLR\NuGet.Build.Tasks.Pack.dll</NuGetPackTaskAssemblyFile>
15806 <NuGetPackTaskAssemblyFile Condition="'$(MSBuildRuntimeType)' != 'Core'">..\Desktop\NuGet.Build.Tasks.Pack.dll</NuGetPackTaskAssemblyFile>
15807 </PropertyGroup>
15808 <!-- Tasks -->
15809 <UsingTask TaskName="NuGet.Build.Tasks.Pack.PackTask" AssemblyFile="$(NuGetPackTaskAssemblyFile)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
15810 <UsingTask TaskName="NuGet.Build.Tasks.Pack.GetPackOutputItemsTask" AssemblyFile="$(NuGetPackTaskAssemblyFile)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
15811 <UsingTask TaskName="NuGet.Build.Tasks.GetProjectTargetFrameworksTask" AssemblyFile="$(NuGetPackTaskAssemblyFile)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
15812 <UsingTask TaskName="NuGet.Build.Tasks.Pack.GetProjectReferencesFromAssetsFileTask" AssemblyFile="$(NuGetPackTaskAssemblyFile)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
15813 <UsingTask TaskName="NuGet.Build.Tasks.Pack.IsPackableFalseWarningTask" AssemblyFile="$(NuGetPackTaskAssemblyFile)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
15814 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15815 <PackageId Condition=" '$(PackageId)' == '' ">$(AssemblyName)</PackageId>
15816 <PackageVersion Condition=" '$(PackageVersion)' == '' ">$(Version)</PackageVersion>
15817 <IncludeContentInPack Condition="'$(IncludeContentInPack)'==''">true</IncludeContentInPack>
15818 <GenerateNuspecDependsOn>_LoadPackInputItems; _GetTargetFrameworksOutput; _WalkEachTargetPerFramework; _GetPackageFiles; $(GenerateNuspecDependsOn)</GenerateNuspecDependsOn>
15819 <PackageDescription Condition="'$(PackageDescription)'==''">$(Description)</PackageDescription>
15820 <PackageDescription Condition="'$(PackageDescription)'==''">Package Description</PackageDescription>
15821 <IsPackable Condition="'$(IsPackable)'=='' AND '$(IsTestProject)'=='true'">false</IsPackable>
15822 <IsPackable Condition="'$(IsPackable)'==''">true</IsPackable>
15823 <IncludeBuildOutput Condition="'$(IncludeBuildOutput)'==''">true</IncludeBuildOutput>
15824 <BuildOutputTargetFolder Condition="'$(BuildOutputTargetFolder)' == '' AND '$(IsTool)' == 'true'">tools</BuildOutputTargetFolder>
15825 <BuildOutputTargetFolder Condition="'$(BuildOutputTargetFolder)' == ''">lib</BuildOutputTargetFolder>
15826 <ContentTargetFolders Condition="'$(ContentTargetFolders)' == ''">content;contentFiles</ContentTargetFolders>
15827 <PackDependsOn>$(BeforePack); _IntermediatePack; GenerateNuspec; $(PackDependsOn)</PackDependsOn>
15828 <IsInnerBuild Condition="'$(TargetFramework)' != '' AND '$(TargetFrameworks)' != ''">true</IsInnerBuild>
15829 <SymbolPackageFormat Condition="'$(SymbolPackageFormat)' == ''">symbols.nupkg</SymbolPackageFormat>
15830 <AddPriFileDependsOn Condition="'$(MicrosoftPortableCurrentVersionPropsHasBeenImported)' == 'true'">DeterminePortableBuildCapabilities</AddPriFileDependsOn>
15831 <WarnOnPackingNonPackableProject Condition="'$(WarnOnPackingNonPackableProject)' == ''">false</WarnOnPackingNonPackableProject>
15832 <ImportNuGetBuildTasksPackTargetsFromSdk Condition="'$(ImportNuGetBuildTasksPackTargetsFromSdk)' == ''">false</ImportNuGetBuildTasksPackTargetsFromSdk>
15833 <DefaultAllowedOutputExtensionsInPackageBuildOutputFolder Condition="'$(DefaultAllowedOutputExtensionsInPackageBuildOutputFolder)' == ''">.dll; .exe; .winmd; .json; .pri; .xml</DefaultAllowedOutputExtensionsInPackageBuildOutputFolder>
15834 <AllowedOutputExtensionsInPackageBuildOutputFolder>$(DefaultAllowedOutputExtensionsInPackageBuildOutputFolder) ;$(AllowedOutputExtensionsInPackageBuildOutputFolder)</AllowedOutputExtensionsInPackageBuildOutputFolder>
15835 <AllowedOutputExtensionsInSymbolsPackageBuildOutputFolder Condition="'$(SymbolPackageFormat)' != 'snupkg'">.pdb; .mdb; $(AllowedOutputExtensionsInPackageBuildOutputFolder); $(AllowedOutputExtensionsInSymbolsPackageBuildOutputFolder)</AllowedOutputExtensionsInSymbolsPackageBuildOutputFolder>
15836 <AllowedOutputExtensionsInSymbolsPackageBuildOutputFolder Condition="'$(SymbolPackageFormat)' == 'snupkg'">.pdb</AllowedOutputExtensionsInSymbolsPackageBuildOutputFolder>
15837 <SuppressDependenciesWhenPacking Condition="'$(SuppressDependenciesWhenPacking)' == ''">false</SuppressDependenciesWhenPacking>
15838 </PropertyGroup>
15839 <PropertyGroup Condition="'$(NoBuild)' == 'true' or '$(GeneratePackageOnBuild)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15840 <GenerateNuspecDependsOn>$(GenerateNuspecDependsOn)</GenerateNuspecDependsOn>
15841 </PropertyGroup>
15842 <PropertyGroup Condition="'$(NoBuild)' != 'true' and '$(GeneratePackageOnBuild)' != 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15843 <GenerateNuspecDependsOn>Build;$(GenerateNuspecDependsOn)</GenerateNuspecDependsOn>
15844 </PropertyGroup>
15845 <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15846 <ProjectCapability Include="Pack" />
15847 </ItemGroup>
15848 <ItemDefinitionGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15849 <BuildOutputInPackage>
15850 <TargetFramework>$(TargetFramework)</TargetFramework>
15851 </BuildOutputInPackage>
15852 </ItemDefinitionGroup>
15853 <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15854 <RestoreOutputPath Condition="'$(RestoreOutputPath)' == ''">$(MSBuildProjectExtensionsPath)</RestoreOutputPath>
15855 <PackageOutputPath Condition="'$(PackageOutputPath)' == ''">$(BaseOutputPath)$(Configuration)\</PackageOutputPath>
15856 <NuspecOutputPath Condition="'$(NuspecOutputPath)' == ''">$(BaseIntermediateOutputPath)$(Configuration)\</NuspecOutputPath>
15857 </PropertyGroup>
15858 <!--
15859 ============================================================
15860 _GetAbsoluteOutputPathsForPack
15861 Gets the absolute output paths for Pack.
15862 ============================================================
15863 -->
15864 <Target Name="_GetAbsoluteOutputPathsForPack" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15865 <ConvertToAbsolutePath Paths="$(RestoreOutputPath)">
15866 <Output TaskParameter="AbsolutePaths" PropertyName="RestoreOutputAbsolutePath" />
15867 </ConvertToAbsolutePath>
15868 <ConvertToAbsolutePath Paths="$(PackageOutputPath)">
15869 <Output TaskParameter="AbsolutePaths" PropertyName="PackageOutputAbsolutePath" />
15870 </ConvertToAbsolutePath>
15871 <ConvertToAbsolutePath Paths="$(NuspecOutputPath)">
15872 <Output TaskParameter="AbsolutePaths" PropertyName="NuspecOutputAbsolutePath" />
15873 </ConvertToAbsolutePath>
15874 </Target>
15875 <!--
15876 ============================================================
15877 _GetOutputItemsFromPack
15878 Gets the output '.nupkg' and '.nuspec' absolute file paths.
15879 ============================================================
15880 -->
15881 <Target Name="_GetOutputItemsFromPack" DependsOnTargets="_GetAbsoluteOutputPathsForPack" Returns="@(_OutputPackItems)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15882 <!-- 'PackageOutputAbsolutePath' and 'NuspecOutputAbsolutePath' will be provided by '_GetAbsoluteOutputPathsForPack' target -->
15883 <GetPackOutputItemsTask PackageOutputPath="$(PackageOutputAbsolutePath)" NuspecOutputPath="$(NuspecOutputAbsolutePath)" PackageId="$(PackageId)" PackageVersion="$(PackageVersion)" IncludeSymbols="$(IncludeSymbols)" IncludeSource="$(IncludeSource)" SymbolPackageFormat="$(SymbolPackageFormat)">
15884 <Output TaskParameter="OutputPackItems" ItemName="_OutputPackItems" />
15885 </GetPackOutputItemsTask>
15886 </Target>
15887 <!--
15888 ============================================================
15889 _GetTargetFrameworksOutput
15890 Read target frameworks from the project.
15891 ============================================================
15892 -->
15893 <Target Name="_GetTargetFrameworksOutput" Returns="@(_TargetFrameworks)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15894 <PropertyGroup>
15895 <_ProjectFrameworks />
15896 </PropertyGroup>
15897 <GetProjectTargetFrameworksTask ProjectPath="$(MSBuildProjectFullPath)" TargetFrameworks="$(TargetFrameworks)" TargetFramework="$(TargetFramework)" TargetFrameworkMoniker="$(TargetFrameworkMoniker)" TargetPlatformIdentifier="$(TargetPlatformIdentifier)" TargetPlatformVersion="$(TargetPlatformVersion)" TargetPlatformMinVersion="$(TargetPlatformMinVersion)">
15898 <Output TaskParameter="ProjectTargetFrameworks" PropertyName="_ProjectFrameworks" />
15899 </GetProjectTargetFrameworksTask>
15900 <ItemGroup Condition=" '$(_ProjectFrameworks)' != '' ">
15901 <_TargetFrameworks Include="$(_ProjectFrameworks.Split(';'))" />
15902 </ItemGroup>
15903 </Target>
15904 <!--
15905 ============================================================
15906 Pack
15907 Post Build Target
15908 ============================================================
15909 -->
15910 <Target Name="_PackAsBuildAfterTarget" AfterTargets="Build" Condition="'$(GeneratePackageOnBuild)' == 'true' AND '$(IsInnerBuild)' != 'true'" DependsOnTargets="Pack" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
15911 <Target Name="_CleanPackageFiles" DependsOnTargets="_GetOutputItemsFromPack" AfterTargets="Clean" Condition="'$(GeneratePackageOnBuild)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15912 <ItemGroup>
15913 <_PackageFilesToDelete Include="@(_OutputPackItems)" />
15914 </ItemGroup>
15915 <Delete Files="@(_PackageFilesToDelete)" />
15916 </Target>
15917 <Target Name="_CalculateInputsOutputsForPack" DependsOnTargets="_GetOutputItemsFromPack" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15918 <PropertyGroup Condition="$(ContinuePackingAfterGeneratingNuspec) == '' ">
15919 <ContinuePackingAfterGeneratingNuspec>false</ContinuePackingAfterGeneratingNuspec>
15920 </PropertyGroup>
15921 <ItemGroup>
15922 <!--This catches changes to properties-->
15923 <NuGetPackInput Include="$(MSBuildAllProjects)" />
15924 <NuGetPackInput Include="@(_PackageFiles)" />
15925 <NuGetPackInput Include="@(_PackageFilesToExclude)" />
15926 <NuGetPackInput Include="@(_BuildOutputInPackage->'%(FinalOutputPath)')" />
15927 <NuGetPackInput Include="@(_TargetPathsToSymbols->'%(FinalOutputPath)')" />
15928 <NuGetPackInput Include="@(_SourceFiles)" />
15929 <NuGetPackInput Include="@(_References)" />
15930 <NuGetPackOutput Include="@(_OutputPackItems)" />
15931 </ItemGroup>
15932 </Target>
15933 <!--
15934 ============================================================
15935 Pack
15936 Main entry point for packing packages
15937 ============================================================
15938 -->
15939 <Target Name="Pack" DependsOnTargets="$(PackDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15940 <IsPackableFalseWarningTask Condition="'$(IsPackable)' == 'false' AND '$(WarnOnPackingNonPackableProject)' == 'true'" />
15941 </Target>
15942 <Target Name="_IntermediatePack" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15943 <PropertyGroup>
15944 <ContinuePackingAfterGeneratingNuspec>true</ContinuePackingAfterGeneratingNuspec>
15945 </PropertyGroup>
15946 </Target>
15947 <Target Name="GenerateNuspec" Condition="'$(IsPackable)' == 'true'" Inputs="@(NuGetPackInput)" Outputs="@(NuGetPackOutput)" DependsOnTargets="$(GenerateNuspecDependsOn);_CalculateInputsOutputsForPack;_GetProjectReferenceVersions;_InitializeNuspecRepositoryInformationProperties" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15948 <ConvertToAbsolutePath Condition="$(NuspecFile) != ''" Paths="$(NuspecFile)">
15949 <Output TaskParameter="AbsolutePaths" PropertyName="NuspecFileAbsolutePath" />
15950 </ConvertToAbsolutePath>
15951 <!-- Call Pack -->
15952 <PackTask PackItem="$(PackProjectInputFile)" PackageFiles="@(_PackageFiles)" PackageFilesToExclude="@(_PackageFilesToExclude)" PackageVersion="$(PackageVersion)" PackageId="$(PackageId)" Title="$(Title)" Authors="$(Authors)" Description="$(PackageDescription)" Copyright="$(Copyright)" RequireLicenseAcceptance="$(PackageRequireLicenseAcceptance)" LicenseUrl="$(PackageLicenseUrl)" ProjectUrl="$(PackageProjectUrl)" IconUrl="$(PackageIconUrl)" ReleaseNotes="$(PackageReleaseNotes)" Tags="$(PackageTags)" DevelopmentDependency="$(DevelopmentDependency)" BuildOutputInPackage="@(_BuildOutputInPackage)" ProjectReferencesWithVersions="@(_ProjectReferencesWithVersions)" TargetPathsToSymbols="@(_TargetPathsToSymbols)" TargetFrameworks="@(_TargetFrameworks)" FrameworksWithSuppressedDependencies="@(_FrameworksWithSuppressedDependencies)" AssemblyName="$(AssemblyName)" PackageOutputPath="$(PackageOutputAbsolutePath)" IncludeSymbols="$(IncludeSymbols)" IncludeSource="$(IncludeSource)" PackageTypes="$(PackageType)" IsTool="$(IsTool)" RepositoryUrl="$(RepositoryUrl)" RepositoryType="$(RepositoryType)" RepositoryBranch="$(RepositoryBranch)" RepositoryCommit="$(RepositoryCommit)" SourceFiles="@(_SourceFiles-&gt;Distinct())" NoPackageAnalysis="$(NoPackageAnalysis)" NoDefaultExcludes="$(NoDefaultExcludes)" MinClientVersion="$(MinClientVersion)" Serviceable="$(Serviceable)" FrameworkAssemblyReferences="@(_FrameworkAssemblyReferences)" ContinuePackingAfterGeneratingNuspec="$(ContinuePackingAfterGeneratingNuspec)" NuspecOutputPath="$(NuspecOutputAbsolutePath)" IncludeBuildOutput="$(IncludeBuildOutput)" BuildOutputFolders="$(BuildOutputTargetFolder)" ContentTargetFolders="$(ContentTargetFolders)" RestoreOutputPath="$(RestoreOutputAbsolutePath)" NuspecFile="$(NuspecFileAbsolutePath)" NuspecBasePath="$(NuspecBasePath)" NuspecProperties="$(NuspecProperties)" AllowedOutputExtensionsInPackageBuildOutputFolder="$(AllowedOutputExtensionsInPackageBuildOutputFolder)" AllowedOutputExtensionsInSymbolsPackageBuildOutputFolder="$(AllowedOutputExtensionsInSymbolsPackageBuildOutputFolder)" NoWarn="$(NoWarn)" WarningsAsErrors="$(WarningsAsErrors)" TreatWarningsAsErrors="$(TreatWarningsAsErrors)" OutputFileNamesWithoutVersion="$(OutputFileNamesWithoutVersion)" InstallPackageToOutputPath="$(InstallPackageToOutputPath)" SymbolPackageFormat="$(SymbolPackageFormat)" PackageLicenseFile="$(PackageLicenseFile)" PackageLicenseExpression="$(PackageLicenseExpression)" PackageLicenseExpressionVersion="$(PackageLicenseExpressionVersion)" Readme="$(PackageReadmeFile)" Deterministic="$(Deterministic)" PackageIcon="$(PackageIcon)" />
15953 </Target>
15954 <!--
15955 Initialize Repository* properties from properties set by a source control package, if available in the project.
15956 -->
15957 <Target Name="_InitializeNuspecRepositoryInformationProperties" DependsOnTargets="InitializeSourceControlInformation" Condition="'$(SourceControlInformationFeatureSupported)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15958 <PropertyGroup>
15959 <!-- The project must specify PublishRepositoryUrl=true in order to publish the URL, in order to prevent inadvertent leak of internal URL. -->
15960 <RepositoryUrl Condition="'$(RepositoryUrl)' == '' and '$(PublishRepositoryUrl)' == 'true'">$(PrivateRepositoryUrl)</RepositoryUrl>
15961 <RepositoryCommit Condition="'$(RepositoryCommit)' == ''">$(SourceRevisionId)</RepositoryCommit>
15962 </PropertyGroup>
15963 </Target>
15964 <!--
15965 ============================================================
15966 _LoadPackGraphEntryPoints
15967 Find project entry point and load them into items.
15968 ============================================================
15969 -->
15970 <Target Name="_LoadPackInputItems" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15971 <!-- Allow overriding items with PackProjectInputFile -->
15972 <PropertyGroup Condition="'$(PackProjectInputFile)' == ''">
15973 <PackProjectInputFile>$(MSBuildProjectFullPath)</PackProjectInputFile>
15974 </PropertyGroup>
15975 </Target>
15976 <Target Name="_GetProjectReferenceVersions" Condition="'$(NuspecFile)' == ''" DependsOnTargets="_GetAbsoluteOutputPathsForPack;$(GetPackageVersionDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15977 <!-- 'RestoreOutputAbsolutePath' will be provided by '_GetAbsoluteOutputPathsForPack' target -->
15978 <ConvertToAbsolutePath Condition="'$(ProjectAssetsFile)' != ''" Paths="$(ProjectAssetsFile)">
15979 <Output TaskParameter="AbsolutePaths" PropertyName="ProjectAssetsFileAbsolutePath" />
15980 </ConvertToAbsolutePath>
15981 <GetProjectReferencesFromAssetsFileTask RestoreOutputAbsolutePath="$(RestoreOutputAbsolutePath)" ProjectAssetsFileAbsolutePath="$(ProjectAssetsFileAbsolutePath)">
15982 <Output TaskParameter="ProjectReferences" ItemName="_ProjectReferencesFromAssetsFile" />
15983 </GetProjectReferencesFromAssetsFileTask>
15984 <MSBuild Projects="@(_ProjectReferencesFromAssetsFile)" Targets="_GetProjectVersion" SkipNonexistentTargets="true" SkipNonexistentProjects="true" Properties="BuildProjectReferences=false;">
15985 <Output TaskParameter="TargetOutputs" ItemName="_ProjectReferencesWithVersions" />
15986 </MSBuild>
15987 </Target>
15988 <Target Name="_GetProjectVersion" DependsOnTargets="$(GetPackageVersionDependsOn)" Returns="@(_ProjectPathWithVersion)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15989 <ItemGroup>
15990 <_ProjectPathWithVersion Include="$(MSBuildProjectFullPath)">
15991 <ProjectVersion Condition="'$(PackageVersion)' != ''">$(PackageVersion)</ProjectVersion>
15992 <ProjectVersion Condition="'$(PackageVersion)' == ''">1.0.0</ProjectVersion>
15993 </_ProjectPathWithVersion>
15994 </ItemGroup>
15995 </Target>
15996 <Target Name="_WalkEachTargetPerFramework" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
15997 <MSBuild Condition="'$(IncludeBuildOutput)' == 'true'" Projects="$(MSBuildProjectFullPath)" Targets="_GetBuildOutputFilesWithTfm" Properties="TargetFramework=%(_TargetFrameworks.Identity);">
15998 <Output TaskParameter="TargetOutputs" ItemName="_BuildOutputInPackage" />
15999 </MSBuild>
16000 <MSBuild Condition="'$(TargetsForTfmSpecificContentInPackage)' != ''" Projects="$(MSBuildProjectFullPath)" Targets="_GetTfmSpecificContentForPackage" Properties="TargetFramework=%(_TargetFrameworks.Identity);">
16001 <Output TaskParameter="TargetOutputs" ItemName="_PackageFiles" />
16002 </MSBuild>
16003 <MSBuild Condition="'$(IncludeBuildOutput)' == 'true'" Projects="$(MSBuildProjectFullPath)" Targets="_GetDebugSymbolsWithTfm" Properties="TargetFramework=%(_TargetFrameworks.Identity);">
16004 <Output TaskParameter="TargetOutputs" ItemName="_TargetPathsToSymbols" />
16005 </MSBuild>
16006 <MSBuild Condition="'$(IncludeSource)' == 'true'" Projects="$(MSBuildProjectFullPath)" Targets="SourceFilesProjectOutputGroup" Properties="TargetFramework=%(_TargetFrameworks.Identity);&#xD;&#xA; BuildProjectReferences=false;">
16007 <Output TaskParameter="TargetOutputs" ItemName="_SourceFiles" />
16008 </MSBuild>
16009 <MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_GetFrameworkAssemblyReferences" Properties="TargetFramework=%(_TargetFrameworks.Identity);&#xD;&#xA; BuildProjectReferences=false;">
16010 <Output TaskParameter="TargetOutputs" ItemName="_FrameworkAssemblyReferences" />
16011 </MSBuild>
16012 <MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_GetFrameworksWithSuppressedDependencies" Properties="TargetFramework=%(_TargetFrameworks.Identity);&#xD;&#xA; BuildProjectReferences=false;">
16013 <Output TaskParameter="TargetOutputs" ItemName="_FrameworksWithSuppressedDependencies" />
16014 </MSBuild>
16015 </Target>
16016 <Target Name="_GetFrameworksWithSuppressedDependencies" Returns="@(_TfmWithDependenciesSuppressed)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
16017 <ItemGroup>
16018 <_TfmWithDependenciesSuppressed Include="$(TargetFramework)" Condition="'$(SuppressDependenciesWhenPacking)' == 'true'" />
16019 </ItemGroup>
16020 </Target>
16021 <Target Name="_GetFrameworkAssemblyReferences" DependsOnTargets="ResolveReferences" Returns="@(TfmSpecificFrameworkAssemblyReferences)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
16022 <ItemGroup>
16023 <TfmSpecificFrameworkAssemblyReferences Include="@(ReferencePath->'%(OriginalItemSpec)')" Condition="'%(ReferencePath.Pack)' != 'false' AND '%(ReferencePath.ResolvedFrom)' == '{TargetFrameworkDirectory}'">
16024 <TargetFramework>$(TargetFramework)</TargetFramework>
16025 </TfmSpecificFrameworkAssemblyReferences>
16026 </ItemGroup>
16027 </Target>
16028 <Target Name="_GetBuildOutputFilesWithTfm" DependsOnTargets="BuiltProjectOutputGroup;DocumentationProjectOutputGroup;SatelliteDllsProjectOutputGroup;_AddPriFileToPackBuildOutput;$(TargetsForTfmSpecificBuildOutput)" Returns="@(BuildOutputInPackage)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
16029 <ItemGroup Condition="'$(IncludeBuildOutput)' == 'true'">
16030 <BuildOutputInPackage Include="@(SatelliteDllsProjectOutputGroupOutput);&#xD;&#xA; @(BuiltProjectOutputGroupOutput);&#xD;&#xA; @(DocumentationProjectOutputGroupOutput);&#xD;&#xA; @(_PathToPriFile)" />
16031 </ItemGroup>
16032 </Target>
16033 <Target Name="_GetTfmSpecificContentForPackage" DependsOnTargets="$(TargetsForTfmSpecificContentInPackage)" Returns="@(TfmSpecificPackageFileWithRecursiveDir)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
16034 <!-- The below workaround needs to be done due to msbuild bug https://github.com/Microsoft/msbuild/issues/3121 -->
16035 <ItemGroup>
16036 <TfmSpecificPackageFileWithRecursiveDir Include="@(TfmSpecificPackageFile)">
16037 <NuGetRecursiveDir>%(TfmSpecificPackageFile.RecursiveDir)</NuGetRecursiveDir>
16038 <BuildAction>%(TfmSpecificPackageFile.BuildAction)</BuildAction>
16039 </TfmSpecificPackageFileWithRecursiveDir>
16040 </ItemGroup>
16041 </Target>
16042 <Target Name="_GetDebugSymbolsWithTfm" DependsOnTargets="DebugSymbolsProjectOutputGroup;$(TargetsForTfmSpecificDebugSymbolsInPackage)" Returns="@(_TargetPathsToSymbolsWithTfm)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
16043 <ItemGroup Condition="'$(IncludeBuildOutput)' == 'true'">
16044 <_TargetPathsToSymbolsWithTfm Include="@(DebugSymbolsProjectOutputGroupOutput)">
16045 <TargetFramework>$(TargetFramework)</TargetFramework>
16046 </_TargetPathsToSymbolsWithTfm>
16047 </ItemGroup>
16048 <ItemGroup>
16049 <_TargetPathsToSymbolsWithTfm Include="@(TfmSpecificDebugSymbolsFile)" />
16050 </ItemGroup>
16051 </Target>
16052 <!--Projects with target framework like UWP, Win8, wpa81 produce a Pri file
16053 in their bin dir. This Pri file is not included in the BuiltProjectGroupOutput, and
16054 has to be added manually here.-->
16055 <Target Name="_AddPriFileToPackBuildOutput" Returns="@(_PathToPriFile)" DependsOnTargets="$(AddPriFileDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
16056 <ItemGroup Condition="'$(IncludeProjectPriFile)' == 'true'">
16057 <_PathToPriFile Include="$(ProjectPriFullPath)">
16058 <FinalOutputPath>$(ProjectPriFullPath)</FinalOutputPath>
16059 <TargetPath>$(ProjectPriFileName)</TargetPath>
16060 </_PathToPriFile>
16061 </ItemGroup>
16062 </Target>
16063 <!--
16064 ============================================================
16065 _GetPackageFiles
16066 Entry point for generating the project to project references.
16067 ============================================================
16068 -->
16069 <Target Name="_GetPackageFiles" Condition="$(IncludeContentInPack) == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
16070 <ItemGroup>
16071 <_PackageFilesToExclude Include="@(Content)" Condition="'%(Content.Pack)' == 'false'" />
16072 </ItemGroup>
16073 <!-- Include PackageFiles and Content of the project being packed -->
16074 <ItemGroup>
16075 <_PackageFiles Include="@(Content)" Condition=" %(Content.Pack) != 'false' ">
16076 <BuildAction Condition="'%(Content.BuildAction)' == ''">Content</BuildAction>
16077 </_PackageFiles>
16078 <_PackageFiles Include="@(Compile)" Condition=" %(Compile.Pack) == 'true' ">
16079 <BuildAction Condition="'%(Compile.BuildAction)' == ''">Compile</BuildAction>
16080 </_PackageFiles>
16081 <_PackageFiles Include="@(None)" Condition=" %(None.Pack) == 'true' ">
16082 <BuildAction Condition="'%(None.BuildAction)' == ''">None</BuildAction>
16083 </_PackageFiles>
16084 <_PackageFiles Include="@(EmbeddedResource)" Condition=" %(EmbeddedResource.Pack) == 'true' ">
16085 <BuildAction Condition="'%(EmbeddedResource.BuildAction)' == ''">EmbeddedResource</BuildAction>
16086 </_PackageFiles>
16087 <_PackageFiles Include="@(ApplicationDefinition)" Condition=" %(ApplicationDefinition.Pack) == 'true' ">
16088 <BuildAction Condition="'%(ApplicationDefinition.BuildAction)' == ''">ApplicationDefinition</BuildAction>
16089 </_PackageFiles>
16090 <_PackageFiles Include="@(Page)" Condition=" %(Page.Pack) == 'true' ">
16091 <BuildAction Condition="'%(Page.BuildAction)' == ''">Page</BuildAction>
16092 </_PackageFiles>
16093 <_PackageFiles Include="@(Resource)" Condition=" %(Resource.Pack) == 'true' ">
16094 <BuildAction Condition="'%(Resource.BuildAction)' == ''">Resource</BuildAction>
16095 </_PackageFiles>
16096 <_PackageFiles Include="@(SplashScreen)" Condition=" %(SplashScreen.Pack) == 'true' ">
16097 <BuildAction Condition="'%(SplashScreen.BuildAction)' == ''">SplashScreen</BuildAction>
16098 </_PackageFiles>
16099 <_PackageFiles Include="@(DesignData)" Condition=" %(DesignData.Pack) == 'true' ">
16100 <BuildAction Condition="'%(DesignData.BuildAction)' == ''">DesignData</BuildAction>
16101 </_PackageFiles>
16102 <_PackageFiles Include="@(DesignDataWithDesignTimeCreatableTypes)" Condition=" %(DesignDataWithDesignTimeCreatableTypes.Pack) == 'true' ">
16103 <BuildAction Condition="'%(DesignDataWithDesignTimeCreatableTypes.BuildAction)' == ''">DesignDataWithDesignTimeCreatableTypes</BuildAction>
16104 </_PackageFiles>
16105 <_PackageFiles Include="@(CodeAnalysisDictionary)" Condition=" %(CodeAnalysisDictionary.Pack) == 'true' ">
16106 <BuildAction Condition="'%(CodeAnalysisDictionary.BuildAction)' == ''">CodeAnalysisDictionary</BuildAction>
16107 </_PackageFiles>
16108 <_PackageFiles Include="@(AndroidAsset)" Condition=" %(AndroidAsset.Pack) == 'true' ">
16109 <BuildAction Condition="'%(AndroidAsset.BuildAction)' == ''">AndroidAsset</BuildAction>
16110 </_PackageFiles>
16111 <_PackageFiles Include="@(AndroidResource)" Condition=" %(AndroidResource.Pack) == 'true' ">
16112 <BuildAction Condition="'%(AndroidResource.BuildAction)' == ''">AndroidResource</BuildAction>
16113 </_PackageFiles>
16114 <_PackageFiles Include="@(BundleResource)" Condition=" %(BundleResource.Pack) == 'true' ">
16115 <BuildAction Condition="'%(BundleResource.BuildAction)' == ''">BundleResource</BuildAction>
16116 </_PackageFiles>
16117 </ItemGroup>
16118 </Target>
16119 <!--
16120============================================================================================================================================
16121 </Import>
16122
16123C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\Sdk\Sdk.targets
16124============================================================================================================================================
16125-->
16126 <!--
16127============================================================================================================================================
16128 </Import>
16129
16130D:\src\wix4\src\test\wix\TestProjects\CsprojConsoleNetCore\CsprojConsoleNetCore.csproj
16131============================================================================================================================================
16132-->
16133</Project> \ No newline at end of file
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetCore/CsprojWebApplicationNetCore.csproj b/src/test/wix/TestData/CsprojWebApplicationNetCore/CsprojWebApplicationNetCore.csproj
new file mode 100644
index 00000000..65d0e08b
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetCore/CsprojWebApplicationNetCore.csproj
@@ -0,0 +1,11 @@
1<Project Sdk="Microsoft.NET.Sdk.Web">
2
3 <PropertyGroup>
4 <TargetFramework>netcoreapp3.1</TargetFramework>
5 </PropertyGroup>
6
7 <ItemGroup>
8 <ProjectReference Include="..\CsprojClassLibraryNetCore\CsprojClassLibraryNetCore.csproj" />
9 </ItemGroup>
10
11</Project>
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Error.cshtml b/src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Error.cshtml
new file mode 100644
index 00000000..6f92b956
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Error.cshtml
@@ -0,0 +1,26 @@
1@page
2@model ErrorModel
3@{
4 ViewData["Title"] = "Error";
5}
6
7<h1 class="text-danger">Error.</h1>
8<h2 class="text-danger">An error occurred while processing your request.</h2>
9
10@if (Model.ShowRequestId)
11{
12 <p>
13 <strong>Request ID:</strong> <code>@Model.RequestId</code>
14 </p>
15}
16
17<h3>Development Mode</h3>
18<p>
19 Swapping to the <strong>Development</strong> environment displays detailed information about the error that occurred.
20</p>
21<p>
22 <strong>The Development environment shouldn't be enabled for deployed applications.</strong>
23 It can result in displaying sensitive information from exceptions to end users.
24 For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
25 and restarting the app.
26</p>
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Error.cshtml.cs b/src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Error.cshtml.cs
new file mode 100644
index 00000000..47a66358
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Error.cshtml.cs
@@ -0,0 +1,31 @@
1using Microsoft.AspNetCore.Mvc;
2using Microsoft.AspNetCore.Mvc.RazorPages;
3using Microsoft.Extensions.Logging;
4using System;
5using System.Collections.Generic;
6using System.Diagnostics;
7using System.Linq;
8using System.Threading.Tasks;
9
10namespace CsprojWebApplicationNetCore.Pages
11{
12 [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
13 public class ErrorModel : PageModel
14 {
15 public string RequestId { get; set; }
16
17 public bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
18
19 private readonly ILogger<ErrorModel> _logger;
20
21 public ErrorModel(ILogger<ErrorModel> logger)
22 {
23 _logger = logger;
24 }
25
26 public void OnGet()
27 {
28 RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier;
29 }
30 }
31}
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Index.cshtml b/src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Index.cshtml
new file mode 100644
index 00000000..b5f0c15f
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Index.cshtml
@@ -0,0 +1,10 @@
1@page
2@model IndexModel
3@{
4 ViewData["Title"] = "Home page";
5}
6
7<div class="text-center">
8 <h1 class="display-4">Welcome</h1>
9 <p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
10</div>
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Index.cshtml.cs b/src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Index.cshtml.cs
new file mode 100644
index 00000000..1e768b81
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Index.cshtml.cs
@@ -0,0 +1,25 @@
1using Microsoft.AspNetCore.Mvc;
2using Microsoft.AspNetCore.Mvc.RazorPages;
3using Microsoft.Extensions.Logging;
4using System;
5using System.Collections.Generic;
6using System.Linq;
7using System.Threading.Tasks;
8
9namespace CsprojWebApplicationNetCore.Pages
10{
11 public class IndexModel : PageModel
12 {
13 private readonly ILogger<IndexModel> _logger;
14
15 public IndexModel(ILogger<IndexModel> logger)
16 {
17 _logger = logger;
18 }
19
20 public void OnGet()
21 {
22
23 }
24 }
25}
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Privacy.cshtml b/src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Privacy.cshtml
new file mode 100644
index 00000000..46ba9661
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Privacy.cshtml
@@ -0,0 +1,8 @@
1@page
2@model PrivacyModel
3@{
4 ViewData["Title"] = "Privacy Policy";
5}
6<h1>@ViewData["Title"]</h1>
7
8<p>Use this page to detail your site's privacy policy.</p>
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Privacy.cshtml.cs b/src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Privacy.cshtml.cs
new file mode 100644
index 00000000..253cd7f5
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Privacy.cshtml.cs
@@ -0,0 +1,24 @@
1using Microsoft.AspNetCore.Mvc;
2using Microsoft.AspNetCore.Mvc.RazorPages;
3using Microsoft.Extensions.Logging;
4using System;
5using System.Collections.Generic;
6using System.Linq;
7using System.Threading.Tasks;
8
9namespace CsprojWebApplicationNetCore.Pages
10{
11 public class PrivacyModel : PageModel
12 {
13 private readonly ILogger<PrivacyModel> _logger;
14
15 public PrivacyModel(ILogger<PrivacyModel> logger)
16 {
17 _logger = logger;
18 }
19
20 public void OnGet()
21 {
22 }
23 }
24}
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Shared/_Layout.cshtml b/src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Shared/_Layout.cshtml
new file mode 100644
index 00000000..5cf4e910
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Shared/_Layout.cshtml
@@ -0,0 +1,50 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4 <meta charset="utf-8" />
5 <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6 <title>@ViewData["Title"] - CsprojWebApplicationNetCore</title>
7 <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
8 <link rel="stylesheet" href="~/css/site.css" />
9</head>
10<body>
11 <header>
12 <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
13 <div class="container">
14 <a class="navbar-brand" asp-area="" asp-page="/Index">CsprojWebApplicationNetCore</a>
15 <button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".navbar-collapse" aria-controls="navbarSupportedContent"
16 aria-expanded="false" aria-label="Toggle navigation">
17 <span class="navbar-toggler-icon"></span>
18 </button>
19 <div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse">
20 <ul class="navbar-nav flex-grow-1">
21 <li class="nav-item">
22 <a class="nav-link text-dark" asp-area="" asp-page="/Index">Home</a>
23 </li>
24 <li class="nav-item">
25 <a class="nav-link text-dark" asp-area="" asp-page="/Privacy">Privacy</a>
26 </li>
27 </ul>
28 </div>
29 </div>
30 </nav>
31 </header>
32 <div class="container">
33 <main role="main" class="pb-3">
34 @RenderBody()
35 </main>
36 </div>
37
38 <footer class="border-top footer text-muted">
39 <div class="container">
40 &copy; 2021 - CsprojWebApplicationNetCore - <a asp-area="" asp-page="/Privacy">Privacy</a>
41 </div>
42 </footer>
43
44 <script src="~/lib/jquery/dist/jquery.min.js"></script>
45 <script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
46 <script src="~/js/site.js" asp-append-version="true"></script>
47
48 @RenderSection("Scripts", required: false)
49</body>
50</html>
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Shared/_ValidationScriptsPartial.cshtml b/src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Shared/_ValidationScriptsPartial.cshtml
new file mode 100644
index 00000000..5a16d80a
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Shared/_ValidationScriptsPartial.cshtml
@@ -0,0 +1,2 @@
1<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
2<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/_ViewImports.cshtml b/src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/_ViewImports.cshtml
new file mode 100644
index 00000000..8202e2be
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/_ViewImports.cshtml
@@ -0,0 +1,3 @@
1@using CsprojWebApplicationNetCore
2@namespace CsprojWebApplicationNetCore.Pages
3@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/_ViewStart.cshtml b/src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/_ViewStart.cshtml
new file mode 100644
index 00000000..a5f10045
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/_ViewStart.cshtml
@@ -0,0 +1,3 @@
1@{
2 Layout = "_Layout";
3}
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetCore/Program.cs b/src/test/wix/TestData/CsprojWebApplicationNetCore/Program.cs
new file mode 100644
index 00000000..bac3a45c
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetCore/Program.cs
@@ -0,0 +1,26 @@
1using Microsoft.AspNetCore.Hosting;
2using Microsoft.Extensions.Configuration;
3using Microsoft.Extensions.Hosting;
4using Microsoft.Extensions.Logging;
5using System;
6using System.Collections.Generic;
7using System.Linq;
8using System.Threading.Tasks;
9
10namespace CsprojWebApplicationNetCore
11{
12 public class Program
13 {
14 public static void Main(string[] args)
15 {
16 CreateHostBuilder(args).Build().Run();
17 }
18
19 public static IHostBuilder CreateHostBuilder(string[] args) =>
20 Host.CreateDefaultBuilder(args)
21 .ConfigureWebHostDefaults(webBuilder =>
22 {
23 webBuilder.UseStartup<Startup>();
24 });
25 }
26}
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetCore/Properties/launchSettings.json b/src/test/wix/TestData/CsprojWebApplicationNetCore/Properties/launchSettings.json
new file mode 100644
index 00000000..4cda8e9f
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetCore/Properties/launchSettings.json
@@ -0,0 +1,27 @@
1{
2 "iisSettings": {
3 "windowsAuthentication": false,
4 "anonymousAuthentication": true,
5 "iisExpress": {
6 "applicationUrl": "http://localhost:53225",
7 "sslPort": 0
8 }
9 },
10 "profiles": {
11 "IIS Express": {
12 "commandName": "IISExpress",
13 "launchBrowser": true,
14 "environmentVariables": {
15 "ASPNETCORE_ENVIRONMENT": "Development"
16 }
17 },
18 "CsprojWebApplicationNetCore": {
19 "commandName": "Project",
20 "launchBrowser": true,
21 "applicationUrl": "http://localhost:5000",
22 "environmentVariables": {
23 "ASPNETCORE_ENVIRONMENT": "Development"
24 }
25 }
26 }
27}
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetCore/Startup.cs b/src/test/wix/TestData/CsprojWebApplicationNetCore/Startup.cs
new file mode 100644
index 00000000..37b09f25
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetCore/Startup.cs
@@ -0,0 +1,52 @@
1using Microsoft.AspNetCore.Builder;
2using Microsoft.AspNetCore.Hosting;
3using Microsoft.Extensions.Configuration;
4using Microsoft.Extensions.DependencyInjection;
5using Microsoft.Extensions.Hosting;
6using System;
7using System.Collections.Generic;
8using System.Linq;
9using System.Threading.Tasks;
10
11namespace CsprojWebApplicationNetCore
12{
13 public class Startup
14 {
15 public Startup(IConfiguration configuration)
16 {
17 Configuration = configuration;
18 }
19
20 public IConfiguration Configuration { get; }
21
22 // This method gets called by the runtime. Use this method to add services to the container.
23 public void ConfigureServices(IServiceCollection services)
24 {
25 services.AddRazorPages();
26 }
27
28 // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
29 public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
30 {
31 if (env.IsDevelopment())
32 {
33 app.UseDeveloperExceptionPage();
34 }
35 else
36 {
37 app.UseExceptionHandler("/Error");
38 }
39
40 app.UseStaticFiles();
41
42 app.UseRouting();
43
44 app.UseAuthorization();
45
46 app.UseEndpoints(endpoints =>
47 {
48 endpoints.MapRazorPages();
49 });
50 }
51 }
52}
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetCore/appsettings.Development.json b/src/test/wix/TestData/CsprojWebApplicationNetCore/appsettings.Development.json
new file mode 100644
index 00000000..8983e0fc
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetCore/appsettings.Development.json
@@ -0,0 +1,9 @@
1{
2 "Logging": {
3 "LogLevel": {
4 "Default": "Information",
5 "Microsoft": "Warning",
6 "Microsoft.Hosting.Lifetime": "Information"
7 }
8 }
9}
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetCore/appsettings.json b/src/test/wix/TestData/CsprojWebApplicationNetCore/appsettings.json
new file mode 100644
index 00000000..d9d9a9bf
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetCore/appsettings.json
@@ -0,0 +1,10 @@
1{
2 "Logging": {
3 "LogLevel": {
4 "Default": "Information",
5 "Microsoft": "Warning",
6 "Microsoft.Hosting.Lifetime": "Information"
7 }
8 },
9 "AllowedHosts": "*"
10}
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/css/site.css b/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/css/site.css
new file mode 100644
index 00000000..e679a8ea
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/css/site.css
@@ -0,0 +1,71 @@
1/* Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification
2for details on configuring this project to bundle and minify static web assets. */
3
4a.navbar-brand {
5 white-space: normal;
6 text-align: center;
7 word-break: break-all;
8}
9
10/* Provide sufficient contrast against white background */
11a {
12 color: #0366d6;
13}
14
15.btn-primary {
16 color: #fff;
17 background-color: #1b6ec2;
18 border-color: #1861ac;
19}
20
21.nav-pills .nav-link.active, .nav-pills .show > .nav-link {
22 color: #fff;
23 background-color: #1b6ec2;
24 border-color: #1861ac;
25}
26
27/* Sticky footer styles
28-------------------------------------------------- */
29html {
30 font-size: 14px;
31}
32@media (min-width: 768px) {
33 html {
34 font-size: 16px;
35 }
36}
37
38.border-top {
39 border-top: 1px solid #e5e5e5;
40}
41.border-bottom {
42 border-bottom: 1px solid #e5e5e5;
43}
44
45.box-shadow {
46 box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .05);
47}
48
49button.accept-policy {
50 font-size: 1rem;
51 line-height: inherit;
52}
53
54/* Sticky footer styles
55-------------------------------------------------- */
56html {
57 position: relative;
58 min-height: 100%;
59}
60
61body {
62 /* Margin bottom by footer height */
63 margin-bottom: 60px;
64}
65.footer {
66 position: absolute;
67 bottom: 0;
68 width: 100%;
69 white-space: nowrap;
70 line-height: 60px; /* Vertically center the text there */
71}
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/favicon.ico b/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/favicon.ico
new file mode 100644
index 00000000..a3a79998
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/favicon.ico
Binary files differ
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/js/site.js b/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/js/site.js
new file mode 100644
index 00000000..3c76e6dc
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/js/site.js
@@ -0,0 +1,4 @@
1// Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification
2// for details on configuring this project to bundle and minify static web assets.
3
4// Write your Javascript code.
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/bootstrap/LICENSE b/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/bootstrap/LICENSE
new file mode 100644
index 00000000..86f4b8ca
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/bootstrap/LICENSE
@@ -0,0 +1,22 @@
1The MIT License (MIT)
2
3Copyright (c) 2011-2018 Twitter, Inc.
4Copyright (c) 2011-2018 The Bootstrap Authors
5
6Permission is hereby granted, free of charge, to any person obtaining a copy
7of this software and associated documentation files (the "Software"), to deal
8in the Software without restriction, including without limitation the rights
9to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10copies of the Software, and to permit persons to whom the Software is
11furnished to do so, subject to the following conditions:
12
13The above copyright notice and this permission notice shall be included in
14all copies or substantial portions of the Software.
15
16THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22THE SOFTWARE.
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/bootstrap/dist/css/bootstrap.css b/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/bootstrap/dist/css/bootstrap.css
new file mode 100644
index 00000000..8f475892
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/bootstrap/dist/css/bootstrap.css
@@ -0,0 +1,10038 @@
1/*!
2 * Bootstrap v4.3.1 (https://getbootstrap.com/)
3 * Copyright 2011-2019 The Bootstrap Authors
4 * Copyright 2011-2019 Twitter, Inc.
5 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
6 */
7:root {
8 --blue: #007bff;
9 --indigo: #6610f2;
10 --purple: #6f42c1;
11 --pink: #e83e8c;
12 --red: #dc3545;
13 --orange: #fd7e14;
14 --yellow: #ffc107;
15 --green: #28a745;
16 --teal: #20c997;
17 --cyan: #17a2b8;
18 --white: #fff;
19 --gray: #6c757d;
20 --gray-dark: #343a40;
21 --primary: #007bff;
22 --secondary: #6c757d;
23 --success: #28a745;
24 --info: #17a2b8;
25 --warning: #ffc107;
26 --danger: #dc3545;
27 --light: #f8f9fa;
28 --dark: #343a40;
29 --breakpoint-xs: 0;
30 --breakpoint-sm: 576px;
31 --breakpoint-md: 768px;
32 --breakpoint-lg: 992px;
33 --breakpoint-xl: 1200px;
34 --font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
35 --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
36}
37
38*,
39*::before,
40*::after {
41 box-sizing: border-box;
42}
43
44html {
45 font-family: sans-serif;
46 line-height: 1.15;
47 -webkit-text-size-adjust: 100%;
48 -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
49}
50
51article, aside, figcaption, figure, footer, header, hgroup, main, nav, section {
52 display: block;
53}
54
55body {
56 margin: 0;
57 font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
58 font-size: 1rem;
59 font-weight: 400;
60 line-height: 1.5;
61 color: #212529;
62 text-align: left;
63 background-color: #fff;
64}
65
66[tabindex="-1"]:focus {
67 outline: 0 !important;
68}
69
70hr {
71 box-sizing: content-box;
72 height: 0;
73 overflow: visible;
74}
75
76h1, h2, h3, h4, h5, h6 {
77 margin-top: 0;
78 margin-bottom: 0.5rem;
79}
80
81p {
82 margin-top: 0;
83 margin-bottom: 1rem;
84}
85
86abbr[title],
87abbr[data-original-title] {
88 text-decoration: underline;
89 -webkit-text-decoration: underline dotted;
90 text-decoration: underline dotted;
91 cursor: help;
92 border-bottom: 0;
93 -webkit-text-decoration-skip-ink: none;
94 text-decoration-skip-ink: none;
95}
96
97address {
98 margin-bottom: 1rem;
99 font-style: normal;
100 line-height: inherit;
101}
102
103ol,
104ul,
105dl {
106 margin-top: 0;
107 margin-bottom: 1rem;
108}
109
110ol ol,
111ul ul,
112ol ul,
113ul ol {
114 margin-bottom: 0;
115}
116
117dt {
118 font-weight: 700;
119}
120
121dd {
122 margin-bottom: .5rem;
123 margin-left: 0;
124}
125
126blockquote {
127 margin: 0 0 1rem;
128}
129
130b,
131strong {
132 font-weight: bolder;
133}
134
135small {
136 font-size: 80%;
137}
138
139sub,
140sup {
141 position: relative;
142 font-size: 75%;
143 line-height: 0;
144 vertical-align: baseline;
145}
146
147sub {
148 bottom: -.25em;
149}
150
151sup {
152 top: -.5em;
153}
154
155a {
156 color: #007bff;
157 text-decoration: none;
158 background-color: transparent;
159}
160
161a:hover {
162 color: #0056b3;
163 text-decoration: underline;
164}
165
166a:not([href]):not([tabindex]) {
167 color: inherit;
168 text-decoration: none;
169}
170
171a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {
172 color: inherit;
173 text-decoration: none;
174}
175
176a:not([href]):not([tabindex]):focus {
177 outline: 0;
178}
179
180pre,
181code,
182kbd,
183samp {
184 font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
185 font-size: 1em;
186}
187
188pre {
189 margin-top: 0;
190 margin-bottom: 1rem;
191 overflow: auto;
192}
193
194figure {
195 margin: 0 0 1rem;
196}
197
198img {
199 vertical-align: middle;
200 border-style: none;
201}
202
203svg {
204 overflow: hidden;
205 vertical-align: middle;
206}
207
208table {
209 border-collapse: collapse;
210}
211
212caption {
213 padding-top: 0.75rem;
214 padding-bottom: 0.75rem;
215 color: #6c757d;
216 text-align: left;
217 caption-side: bottom;
218}
219
220th {
221 text-align: inherit;
222}
223
224label {
225 display: inline-block;
226 margin-bottom: 0.5rem;
227}
228
229button {
230 border-radius: 0;
231}
232
233button:focus {
234 outline: 1px dotted;
235 outline: 5px auto -webkit-focus-ring-color;
236}
237
238input,
239button,
240select,
241optgroup,
242textarea {
243 margin: 0;
244 font-family: inherit;
245 font-size: inherit;
246 line-height: inherit;
247}
248
249button,
250input {
251 overflow: visible;
252}
253
254button,
255select {
256 text-transform: none;
257}
258
259select {
260 word-wrap: normal;
261}
262
263button,
264[type="button"],
265[type="reset"],
266[type="submit"] {
267 -webkit-appearance: button;
268}
269
270button:not(:disabled),
271[type="button"]:not(:disabled),
272[type="reset"]:not(:disabled),
273[type="submit"]:not(:disabled) {
274 cursor: pointer;
275}
276
277button::-moz-focus-inner,
278[type="button"]::-moz-focus-inner,
279[type="reset"]::-moz-focus-inner,
280[type="submit"]::-moz-focus-inner {
281 padding: 0;
282 border-style: none;
283}
284
285input[type="radio"],
286input[type="checkbox"] {
287 box-sizing: border-box;
288 padding: 0;
289}
290
291input[type="date"],
292input[type="time"],
293input[type="datetime-local"],
294input[type="month"] {
295 -webkit-appearance: listbox;
296}
297
298textarea {
299 overflow: auto;
300 resize: vertical;
301}
302
303fieldset {
304 min-width: 0;
305 padding: 0;
306 margin: 0;
307 border: 0;
308}
309
310legend {
311 display: block;
312 width: 100%;
313 max-width: 100%;
314 padding: 0;
315 margin-bottom: .5rem;
316 font-size: 1.5rem;
317 line-height: inherit;
318 color: inherit;
319 white-space: normal;
320}
321
322progress {
323 vertical-align: baseline;
324}
325
326[type="number"]::-webkit-inner-spin-button,
327[type="number"]::-webkit-outer-spin-button {
328 height: auto;
329}
330
331[type="search"] {
332 outline-offset: -2px;
333 -webkit-appearance: none;
334}
335
336[type="search"]::-webkit-search-decoration {
337 -webkit-appearance: none;
338}
339
340::-webkit-file-upload-button {
341 font: inherit;
342 -webkit-appearance: button;
343}
344
345output {
346 display: inline-block;
347}
348
349summary {
350 display: list-item;
351 cursor: pointer;
352}
353
354template {
355 display: none;
356}
357
358[hidden] {
359 display: none !important;
360}
361
362h1, h2, h3, h4, h5, h6,
363.h1, .h2, .h3, .h4, .h5, .h6 {
364 margin-bottom: 0.5rem;
365 font-weight: 500;
366 line-height: 1.2;
367}
368
369h1, .h1 {
370 font-size: 2.5rem;
371}
372
373h2, .h2 {
374 font-size: 2rem;
375}
376
377h3, .h3 {
378 font-size: 1.75rem;
379}
380
381h4, .h4 {
382 font-size: 1.5rem;
383}
384
385h5, .h5 {
386 font-size: 1.25rem;
387}
388
389h6, .h6 {
390 font-size: 1rem;
391}
392
393.lead {
394 font-size: 1.25rem;
395 font-weight: 300;
396}
397
398.display-1 {
399 font-size: 6rem;
400 font-weight: 300;
401 line-height: 1.2;
402}
403
404.display-2 {
405 font-size: 5.5rem;
406 font-weight: 300;
407 line-height: 1.2;
408}
409
410.display-3 {
411 font-size: 4.5rem;
412 font-weight: 300;
413 line-height: 1.2;
414}
415
416.display-4 {
417 font-size: 3.5rem;
418 font-weight: 300;
419 line-height: 1.2;
420}
421
422hr {
423 margin-top: 1rem;
424 margin-bottom: 1rem;
425 border: 0;
426 border-top: 1px solid rgba(0, 0, 0, 0.1);
427}
428
429small,
430.small {
431 font-size: 80%;
432 font-weight: 400;
433}
434
435mark,
436.mark {
437 padding: 0.2em;
438 background-color: #fcf8e3;
439}
440
441.list-unstyled {
442 padding-left: 0;
443 list-style: none;
444}
445
446.list-inline {
447 padding-left: 0;
448 list-style: none;
449}
450
451.list-inline-item {
452 display: inline-block;
453}
454
455.list-inline-item:not(:last-child) {
456 margin-right: 0.5rem;
457}
458
459.initialism {
460 font-size: 90%;
461 text-transform: uppercase;
462}
463
464.blockquote {
465 margin-bottom: 1rem;
466 font-size: 1.25rem;
467}
468
469.blockquote-footer {
470 display: block;
471 font-size: 80%;
472 color: #6c757d;
473}
474
475.blockquote-footer::before {
476 content: "\2014\00A0";
477}
478
479.img-fluid {
480 max-width: 100%;
481 height: auto;
482}
483
484.img-thumbnail {
485 padding: 0.25rem;
486 background-color: #fff;
487 border: 1px solid #dee2e6;
488 border-radius: 0.25rem;
489 max-width: 100%;
490 height: auto;
491}
492
493.figure {
494 display: inline-block;
495}
496
497.figure-img {
498 margin-bottom: 0.5rem;
499 line-height: 1;
500}
501
502.figure-caption {
503 font-size: 90%;
504 color: #6c757d;
505}
506
507code {
508 font-size: 87.5%;
509 color: #e83e8c;
510 word-break: break-word;
511}
512
513a > code {
514 color: inherit;
515}
516
517kbd {
518 padding: 0.2rem 0.4rem;
519 font-size: 87.5%;
520 color: #fff;
521 background-color: #212529;
522 border-radius: 0.2rem;
523}
524
525kbd kbd {
526 padding: 0;
527 font-size: 100%;
528 font-weight: 700;
529}
530
531pre {
532 display: block;
533 font-size: 87.5%;
534 color: #212529;
535}
536
537pre code {
538 font-size: inherit;
539 color: inherit;
540 word-break: normal;
541}
542
543.pre-scrollable {
544 max-height: 340px;
545 overflow-y: scroll;
546}
547
548.container {
549 width: 100%;
550 padding-right: 15px;
551 padding-left: 15px;
552 margin-right: auto;
553 margin-left: auto;
554}
555
556@media (min-width: 576px) {
557 .container {
558 max-width: 540px;
559 }
560}
561
562@media (min-width: 768px) {
563 .container {
564 max-width: 720px;
565 }
566}
567
568@media (min-width: 992px) {
569 .container {
570 max-width: 960px;
571 }
572}
573
574@media (min-width: 1200px) {
575 .container {
576 max-width: 1140px;
577 }
578}
579
580.container-fluid {
581 width: 100%;
582 padding-right: 15px;
583 padding-left: 15px;
584 margin-right: auto;
585 margin-left: auto;
586}
587
588.row {
589 display: -ms-flexbox;
590 display: flex;
591 -ms-flex-wrap: wrap;
592 flex-wrap: wrap;
593 margin-right: -15px;
594 margin-left: -15px;
595}
596
597.no-gutters {
598 margin-right: 0;
599 margin-left: 0;
600}
601
602.no-gutters > .col,
603.no-gutters > [class*="col-"] {
604 padding-right: 0;
605 padding-left: 0;
606}
607
608.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,
609.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,
610.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,
611.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,
612.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,
613.col-xl-auto {
614 position: relative;
615 width: 100%;
616 padding-right: 15px;
617 padding-left: 15px;
618}
619
620.col {
621 -ms-flex-preferred-size: 0;
622 flex-basis: 0;
623 -ms-flex-positive: 1;
624 flex-grow: 1;
625 max-width: 100%;
626}
627
628.col-auto {
629 -ms-flex: 0 0 auto;
630 flex: 0 0 auto;
631 width: auto;
632 max-width: 100%;
633}
634
635.col-1 {
636 -ms-flex: 0 0 8.333333%;
637 flex: 0 0 8.333333%;
638 max-width: 8.333333%;
639}
640
641.col-2 {
642 -ms-flex: 0 0 16.666667%;
643 flex: 0 0 16.666667%;
644 max-width: 16.666667%;
645}
646
647.col-3 {
648 -ms-flex: 0 0 25%;
649 flex: 0 0 25%;
650 max-width: 25%;
651}
652
653.col-4 {
654 -ms-flex: 0 0 33.333333%;
655 flex: 0 0 33.333333%;
656 max-width: 33.333333%;
657}
658
659.col-5 {
660 -ms-flex: 0 0 41.666667%;
661 flex: 0 0 41.666667%;
662 max-width: 41.666667%;
663}
664
665.col-6 {
666 -ms-flex: 0 0 50%;
667 flex: 0 0 50%;
668 max-width: 50%;
669}
670
671.col-7 {
672 -ms-flex: 0 0 58.333333%;
673 flex: 0 0 58.333333%;
674 max-width: 58.333333%;
675}
676
677.col-8 {
678 -ms-flex: 0 0 66.666667%;
679 flex: 0 0 66.666667%;
680 max-width: 66.666667%;
681}
682
683.col-9 {
684 -ms-flex: 0 0 75%;
685 flex: 0 0 75%;
686 max-width: 75%;
687}
688
689.col-10 {
690 -ms-flex: 0 0 83.333333%;
691 flex: 0 0 83.333333%;
692 max-width: 83.333333%;
693}
694
695.col-11 {
696 -ms-flex: 0 0 91.666667%;
697 flex: 0 0 91.666667%;
698 max-width: 91.666667%;
699}
700
701.col-12 {
702 -ms-flex: 0 0 100%;
703 flex: 0 0 100%;
704 max-width: 100%;
705}
706
707.order-first {
708 -ms-flex-order: -1;
709 order: -1;
710}
711
712.order-last {
713 -ms-flex-order: 13;
714 order: 13;
715}
716
717.order-0 {
718 -ms-flex-order: 0;
719 order: 0;
720}
721
722.order-1 {
723 -ms-flex-order: 1;
724 order: 1;
725}
726
727.order-2 {
728 -ms-flex-order: 2;
729 order: 2;
730}
731
732.order-3 {
733 -ms-flex-order: 3;
734 order: 3;
735}
736
737.order-4 {
738 -ms-flex-order: 4;
739 order: 4;
740}
741
742.order-5 {
743 -ms-flex-order: 5;
744 order: 5;
745}
746
747.order-6 {
748 -ms-flex-order: 6;
749 order: 6;
750}
751
752.order-7 {
753 -ms-flex-order: 7;
754 order: 7;
755}
756
757.order-8 {
758 -ms-flex-order: 8;
759 order: 8;
760}
761
762.order-9 {
763 -ms-flex-order: 9;
764 order: 9;
765}
766
767.order-10 {
768 -ms-flex-order: 10;
769 order: 10;
770}
771
772.order-11 {
773 -ms-flex-order: 11;
774 order: 11;
775}
776
777.order-12 {
778 -ms-flex-order: 12;
779 order: 12;
780}
781
782.offset-1 {
783 margin-left: 8.333333%;
784}
785
786.offset-2 {
787 margin-left: 16.666667%;
788}
789
790.offset-3 {
791 margin-left: 25%;
792}
793
794.offset-4 {
795 margin-left: 33.333333%;
796}
797
798.offset-5 {
799 margin-left: 41.666667%;
800}
801
802.offset-6 {
803 margin-left: 50%;
804}
805
806.offset-7 {
807 margin-left: 58.333333%;
808}
809
810.offset-8 {
811 margin-left: 66.666667%;
812}
813
814.offset-9 {
815 margin-left: 75%;
816}
817
818.offset-10 {
819 margin-left: 83.333333%;
820}
821
822.offset-11 {
823 margin-left: 91.666667%;
824}
825
826@media (min-width: 576px) {
827 .col-sm {
828 -ms-flex-preferred-size: 0;
829 flex-basis: 0;
830 -ms-flex-positive: 1;
831 flex-grow: 1;
832 max-width: 100%;
833 }
834 .col-sm-auto {
835 -ms-flex: 0 0 auto;
836 flex: 0 0 auto;
837 width: auto;
838 max-width: 100%;
839 }
840 .col-sm-1 {
841 -ms-flex: 0 0 8.333333%;
842 flex: 0 0 8.333333%;
843 max-width: 8.333333%;
844 }
845 .col-sm-2 {
846 -ms-flex: 0 0 16.666667%;
847 flex: 0 0 16.666667%;
848 max-width: 16.666667%;
849 }
850 .col-sm-3 {
851 -ms-flex: 0 0 25%;
852 flex: 0 0 25%;
853 max-width: 25%;
854 }
855 .col-sm-4 {
856 -ms-flex: 0 0 33.333333%;
857 flex: 0 0 33.333333%;
858 max-width: 33.333333%;
859 }
860 .col-sm-5 {
861 -ms-flex: 0 0 41.666667%;
862 flex: 0 0 41.666667%;
863 max-width: 41.666667%;
864 }
865 .col-sm-6 {
866 -ms-flex: 0 0 50%;
867 flex: 0 0 50%;
868 max-width: 50%;
869 }
870 .col-sm-7 {
871 -ms-flex: 0 0 58.333333%;
872 flex: 0 0 58.333333%;
873 max-width: 58.333333%;
874 }
875 .col-sm-8 {
876 -ms-flex: 0 0 66.666667%;
877 flex: 0 0 66.666667%;
878 max-width: 66.666667%;
879 }
880 .col-sm-9 {
881 -ms-flex: 0 0 75%;
882 flex: 0 0 75%;
883 max-width: 75%;
884 }
885 .col-sm-10 {
886 -ms-flex: 0 0 83.333333%;
887 flex: 0 0 83.333333%;
888 max-width: 83.333333%;
889 }
890 .col-sm-11 {
891 -ms-flex: 0 0 91.666667%;
892 flex: 0 0 91.666667%;
893 max-width: 91.666667%;
894 }
895 .col-sm-12 {
896 -ms-flex: 0 0 100%;
897 flex: 0 0 100%;
898 max-width: 100%;
899 }
900 .order-sm-first {
901 -ms-flex-order: -1;
902 order: -1;
903 }
904 .order-sm-last {
905 -ms-flex-order: 13;
906 order: 13;
907 }
908 .order-sm-0 {
909 -ms-flex-order: 0;
910 order: 0;
911 }
912 .order-sm-1 {
913 -ms-flex-order: 1;
914 order: 1;
915 }
916 .order-sm-2 {
917 -ms-flex-order: 2;
918 order: 2;
919 }
920 .order-sm-3 {
921 -ms-flex-order: 3;
922 order: 3;
923 }
924 .order-sm-4 {
925 -ms-flex-order: 4;
926 order: 4;
927 }
928 .order-sm-5 {
929 -ms-flex-order: 5;
930 order: 5;
931 }
932 .order-sm-6 {
933 -ms-flex-order: 6;
934 order: 6;
935 }
936 .order-sm-7 {
937 -ms-flex-order: 7;
938 order: 7;
939 }
940 .order-sm-8 {
941 -ms-flex-order: 8;
942 order: 8;
943 }
944 .order-sm-9 {
945 -ms-flex-order: 9;
946 order: 9;
947 }
948 .order-sm-10 {
949 -ms-flex-order: 10;
950 order: 10;
951 }
952 .order-sm-11 {
953 -ms-flex-order: 11;
954 order: 11;
955 }
956 .order-sm-12 {
957 -ms-flex-order: 12;
958 order: 12;
959 }
960 .offset-sm-0 {
961 margin-left: 0;
962 }
963 .offset-sm-1 {
964 margin-left: 8.333333%;
965 }
966 .offset-sm-2 {
967 margin-left: 16.666667%;
968 }
969 .offset-sm-3 {
970 margin-left: 25%;
971 }
972 .offset-sm-4 {
973 margin-left: 33.333333%;
974 }
975 .offset-sm-5 {
976 margin-left: 41.666667%;
977 }
978 .offset-sm-6 {
979 margin-left: 50%;
980 }
981 .offset-sm-7 {
982 margin-left: 58.333333%;
983 }
984 .offset-sm-8 {
985 margin-left: 66.666667%;
986 }
987 .offset-sm-9 {
988 margin-left: 75%;
989 }
990 .offset-sm-10 {
991 margin-left: 83.333333%;
992 }
993 .offset-sm-11 {
994 margin-left: 91.666667%;
995 }
996}
997
998@media (min-width: 768px) {
999 .col-md {
1000 -ms-flex-preferred-size: 0;
1001 flex-basis: 0;
1002 -ms-flex-positive: 1;
1003 flex-grow: 1;
1004 max-width: 100%;
1005 }
1006 .col-md-auto {
1007 -ms-flex: 0 0 auto;
1008 flex: 0 0 auto;
1009 width: auto;
1010 max-width: 100%;
1011 }
1012 .col-md-1 {
1013 -ms-flex: 0 0 8.333333%;
1014 flex: 0 0 8.333333%;
1015 max-width: 8.333333%;
1016 }
1017 .col-md-2 {
1018 -ms-flex: 0 0 16.666667%;
1019 flex: 0 0 16.666667%;
1020 max-width: 16.666667%;
1021 }
1022 .col-md-3 {
1023 -ms-flex: 0 0 25%;
1024 flex: 0 0 25%;
1025 max-width: 25%;
1026 }
1027 .col-md-4 {
1028 -ms-flex: 0 0 33.333333%;
1029 flex: 0 0 33.333333%;
1030 max-width: 33.333333%;
1031 }
1032 .col-md-5 {
1033 -ms-flex: 0 0 41.666667%;
1034 flex: 0 0 41.666667%;
1035 max-width: 41.666667%;
1036 }
1037 .col-md-6 {
1038 -ms-flex: 0 0 50%;
1039 flex: 0 0 50%;
1040 max-width: 50%;
1041 }
1042 .col-md-7 {
1043 -ms-flex: 0 0 58.333333%;
1044 flex: 0 0 58.333333%;
1045 max-width: 58.333333%;
1046 }
1047 .col-md-8 {
1048 -ms-flex: 0 0 66.666667%;
1049 flex: 0 0 66.666667%;
1050 max-width: 66.666667%;
1051 }
1052 .col-md-9 {
1053 -ms-flex: 0 0 75%;
1054 flex: 0 0 75%;
1055 max-width: 75%;
1056 }
1057 .col-md-10 {
1058 -ms-flex: 0 0 83.333333%;
1059 flex: 0 0 83.333333%;
1060 max-width: 83.333333%;
1061 }
1062 .col-md-11 {
1063 -ms-flex: 0 0 91.666667%;
1064 flex: 0 0 91.666667%;
1065 max-width: 91.666667%;
1066 }
1067 .col-md-12 {
1068 -ms-flex: 0 0 100%;
1069 flex: 0 0 100%;
1070 max-width: 100%;
1071 }
1072 .order-md-first {
1073 -ms-flex-order: -1;
1074 order: -1;
1075 }
1076 .order-md-last {
1077 -ms-flex-order: 13;
1078 order: 13;
1079 }
1080 .order-md-0 {
1081 -ms-flex-order: 0;
1082 order: 0;
1083 }
1084 .order-md-1 {
1085 -ms-flex-order: 1;
1086 order: 1;
1087 }
1088 .order-md-2 {
1089 -ms-flex-order: 2;
1090 order: 2;
1091 }
1092 .order-md-3 {
1093 -ms-flex-order: 3;
1094 order: 3;
1095 }
1096 .order-md-4 {
1097 -ms-flex-order: 4;
1098 order: 4;
1099 }
1100 .order-md-5 {
1101 -ms-flex-order: 5;
1102 order: 5;
1103 }
1104 .order-md-6 {
1105 -ms-flex-order: 6;
1106 order: 6;
1107 }
1108 .order-md-7 {
1109 -ms-flex-order: 7;
1110 order: 7;
1111 }
1112 .order-md-8 {
1113 -ms-flex-order: 8;
1114 order: 8;
1115 }
1116 .order-md-9 {
1117 -ms-flex-order: 9;
1118 order: 9;
1119 }
1120 .order-md-10 {
1121 -ms-flex-order: 10;
1122 order: 10;
1123 }
1124 .order-md-11 {
1125 -ms-flex-order: 11;
1126 order: 11;
1127 }
1128 .order-md-12 {
1129 -ms-flex-order: 12;
1130 order: 12;
1131 }
1132 .offset-md-0 {
1133 margin-left: 0;
1134 }
1135 .offset-md-1 {
1136 margin-left: 8.333333%;
1137 }
1138 .offset-md-2 {
1139 margin-left: 16.666667%;
1140 }
1141 .offset-md-3 {
1142 margin-left: 25%;
1143 }
1144 .offset-md-4 {
1145 margin-left: 33.333333%;
1146 }
1147 .offset-md-5 {
1148 margin-left: 41.666667%;
1149 }
1150 .offset-md-6 {
1151 margin-left: 50%;
1152 }
1153 .offset-md-7 {
1154 margin-left: 58.333333%;
1155 }
1156 .offset-md-8 {
1157 margin-left: 66.666667%;
1158 }
1159 .offset-md-9 {
1160 margin-left: 75%;
1161 }
1162 .offset-md-10 {
1163 margin-left: 83.333333%;
1164 }
1165 .offset-md-11 {
1166 margin-left: 91.666667%;
1167 }
1168}
1169
1170@media (min-width: 992px) {
1171 .col-lg {
1172 -ms-flex-preferred-size: 0;
1173 flex-basis: 0;
1174 -ms-flex-positive: 1;
1175 flex-grow: 1;
1176 max-width: 100%;
1177 }
1178 .col-lg-auto {
1179 -ms-flex: 0 0 auto;
1180 flex: 0 0 auto;
1181 width: auto;
1182 max-width: 100%;
1183 }
1184 .col-lg-1 {
1185 -ms-flex: 0 0 8.333333%;
1186 flex: 0 0 8.333333%;
1187 max-width: 8.333333%;
1188 }
1189 .col-lg-2 {
1190 -ms-flex: 0 0 16.666667%;
1191 flex: 0 0 16.666667%;
1192 max-width: 16.666667%;
1193 }
1194 .col-lg-3 {
1195 -ms-flex: 0 0 25%;
1196 flex: 0 0 25%;
1197 max-width: 25%;
1198 }
1199 .col-lg-4 {
1200 -ms-flex: 0 0 33.333333%;
1201 flex: 0 0 33.333333%;
1202 max-width: 33.333333%;
1203 }
1204 .col-lg-5 {
1205 -ms-flex: 0 0 41.666667%;
1206 flex: 0 0 41.666667%;
1207 max-width: 41.666667%;
1208 }
1209 .col-lg-6 {
1210 -ms-flex: 0 0 50%;
1211 flex: 0 0 50%;
1212 max-width: 50%;
1213 }
1214 .col-lg-7 {
1215 -ms-flex: 0 0 58.333333%;
1216 flex: 0 0 58.333333%;
1217 max-width: 58.333333%;
1218 }
1219 .col-lg-8 {
1220 -ms-flex: 0 0 66.666667%;
1221 flex: 0 0 66.666667%;
1222 max-width: 66.666667%;
1223 }
1224 .col-lg-9 {
1225 -ms-flex: 0 0 75%;
1226 flex: 0 0 75%;
1227 max-width: 75%;
1228 }
1229 .col-lg-10 {
1230 -ms-flex: 0 0 83.333333%;
1231 flex: 0 0 83.333333%;
1232 max-width: 83.333333%;
1233 }
1234 .col-lg-11 {
1235 -ms-flex: 0 0 91.666667%;
1236 flex: 0 0 91.666667%;
1237 max-width: 91.666667%;
1238 }
1239 .col-lg-12 {
1240 -ms-flex: 0 0 100%;
1241 flex: 0 0 100%;
1242 max-width: 100%;
1243 }
1244 .order-lg-first {
1245 -ms-flex-order: -1;
1246 order: -1;
1247 }
1248 .order-lg-last {
1249 -ms-flex-order: 13;
1250 order: 13;
1251 }
1252 .order-lg-0 {
1253 -ms-flex-order: 0;
1254 order: 0;
1255 }
1256 .order-lg-1 {
1257 -ms-flex-order: 1;
1258 order: 1;
1259 }
1260 .order-lg-2 {
1261 -ms-flex-order: 2;
1262 order: 2;
1263 }
1264 .order-lg-3 {
1265 -ms-flex-order: 3;
1266 order: 3;
1267 }
1268 .order-lg-4 {
1269 -ms-flex-order: 4;
1270 order: 4;
1271 }
1272 .order-lg-5 {
1273 -ms-flex-order: 5;
1274 order: 5;
1275 }
1276 .order-lg-6 {
1277 -ms-flex-order: 6;
1278 order: 6;
1279 }
1280 .order-lg-7 {
1281 -ms-flex-order: 7;
1282 order: 7;
1283 }
1284 .order-lg-8 {
1285 -ms-flex-order: 8;
1286 order: 8;
1287 }
1288 .order-lg-9 {
1289 -ms-flex-order: 9;
1290 order: 9;
1291 }
1292 .order-lg-10 {
1293 -ms-flex-order: 10;
1294 order: 10;
1295 }
1296 .order-lg-11 {
1297 -ms-flex-order: 11;
1298 order: 11;
1299 }
1300 .order-lg-12 {
1301 -ms-flex-order: 12;
1302 order: 12;
1303 }
1304 .offset-lg-0 {
1305 margin-left: 0;
1306 }
1307 .offset-lg-1 {
1308 margin-left: 8.333333%;
1309 }
1310 .offset-lg-2 {
1311 margin-left: 16.666667%;
1312 }
1313 .offset-lg-3 {
1314 margin-left: 25%;
1315 }
1316 .offset-lg-4 {
1317 margin-left: 33.333333%;
1318 }
1319 .offset-lg-5 {
1320 margin-left: 41.666667%;
1321 }
1322 .offset-lg-6 {
1323 margin-left: 50%;
1324 }
1325 .offset-lg-7 {
1326 margin-left: 58.333333%;
1327 }
1328 .offset-lg-8 {
1329 margin-left: 66.666667%;
1330 }
1331 .offset-lg-9 {
1332 margin-left: 75%;
1333 }
1334 .offset-lg-10 {
1335 margin-left: 83.333333%;
1336 }
1337 .offset-lg-11 {
1338 margin-left: 91.666667%;
1339 }
1340}
1341
1342@media (min-width: 1200px) {
1343 .col-xl {
1344 -ms-flex-preferred-size: 0;
1345 flex-basis: 0;
1346 -ms-flex-positive: 1;
1347 flex-grow: 1;
1348 max-width: 100%;
1349 }
1350 .col-xl-auto {
1351 -ms-flex: 0 0 auto;
1352 flex: 0 0 auto;
1353 width: auto;
1354 max-width: 100%;
1355 }
1356 .col-xl-1 {
1357 -ms-flex: 0 0 8.333333%;
1358 flex: 0 0 8.333333%;
1359 max-width: 8.333333%;
1360 }
1361 .col-xl-2 {
1362 -ms-flex: 0 0 16.666667%;
1363 flex: 0 0 16.666667%;
1364 max-width: 16.666667%;
1365 }
1366 .col-xl-3 {
1367 -ms-flex: 0 0 25%;
1368 flex: 0 0 25%;
1369 max-width: 25%;
1370 }
1371 .col-xl-4 {
1372 -ms-flex: 0 0 33.333333%;
1373 flex: 0 0 33.333333%;
1374 max-width: 33.333333%;
1375 }
1376 .col-xl-5 {
1377 -ms-flex: 0 0 41.666667%;
1378 flex: 0 0 41.666667%;
1379 max-width: 41.666667%;
1380 }
1381 .col-xl-6 {
1382 -ms-flex: 0 0 50%;
1383 flex: 0 0 50%;
1384 max-width: 50%;
1385 }
1386 .col-xl-7 {
1387 -ms-flex: 0 0 58.333333%;
1388 flex: 0 0 58.333333%;
1389 max-width: 58.333333%;
1390 }
1391 .col-xl-8 {
1392 -ms-flex: 0 0 66.666667%;
1393 flex: 0 0 66.666667%;
1394 max-width: 66.666667%;
1395 }
1396 .col-xl-9 {
1397 -ms-flex: 0 0 75%;
1398 flex: 0 0 75%;
1399 max-width: 75%;
1400 }
1401 .col-xl-10 {
1402 -ms-flex: 0 0 83.333333%;
1403 flex: 0 0 83.333333%;
1404 max-width: 83.333333%;
1405 }
1406 .col-xl-11 {
1407 -ms-flex: 0 0 91.666667%;
1408 flex: 0 0 91.666667%;
1409 max-width: 91.666667%;
1410 }
1411 .col-xl-12 {
1412 -ms-flex: 0 0 100%;
1413 flex: 0 0 100%;
1414 max-width: 100%;
1415 }
1416 .order-xl-first {
1417 -ms-flex-order: -1;
1418 order: -1;
1419 }
1420 .order-xl-last {
1421 -ms-flex-order: 13;
1422 order: 13;
1423 }
1424 .order-xl-0 {
1425 -ms-flex-order: 0;
1426 order: 0;
1427 }
1428 .order-xl-1 {
1429 -ms-flex-order: 1;
1430 order: 1;
1431 }
1432 .order-xl-2 {
1433 -ms-flex-order: 2;
1434 order: 2;
1435 }
1436 .order-xl-3 {
1437 -ms-flex-order: 3;
1438 order: 3;
1439 }
1440 .order-xl-4 {
1441 -ms-flex-order: 4;
1442 order: 4;
1443 }
1444 .order-xl-5 {
1445 -ms-flex-order: 5;
1446 order: 5;
1447 }
1448 .order-xl-6 {
1449 -ms-flex-order: 6;
1450 order: 6;
1451 }
1452 .order-xl-7 {
1453 -ms-flex-order: 7;
1454 order: 7;
1455 }
1456 .order-xl-8 {
1457 -ms-flex-order: 8;
1458 order: 8;
1459 }
1460 .order-xl-9 {
1461 -ms-flex-order: 9;
1462 order: 9;
1463 }
1464 .order-xl-10 {
1465 -ms-flex-order: 10;
1466 order: 10;
1467 }
1468 .order-xl-11 {
1469 -ms-flex-order: 11;
1470 order: 11;
1471 }
1472 .order-xl-12 {
1473 -ms-flex-order: 12;
1474 order: 12;
1475 }
1476 .offset-xl-0 {
1477 margin-left: 0;
1478 }
1479 .offset-xl-1 {
1480 margin-left: 8.333333%;
1481 }
1482 .offset-xl-2 {
1483 margin-left: 16.666667%;
1484 }
1485 .offset-xl-3 {
1486 margin-left: 25%;
1487 }
1488 .offset-xl-4 {
1489 margin-left: 33.333333%;
1490 }
1491 .offset-xl-5 {
1492 margin-left: 41.666667%;
1493 }
1494 .offset-xl-6 {
1495 margin-left: 50%;
1496 }
1497 .offset-xl-7 {
1498 margin-left: 58.333333%;
1499 }
1500 .offset-xl-8 {
1501 margin-left: 66.666667%;
1502 }
1503 .offset-xl-9 {
1504 margin-left: 75%;
1505 }
1506 .offset-xl-10 {
1507 margin-left: 83.333333%;
1508 }
1509 .offset-xl-11 {
1510 margin-left: 91.666667%;
1511 }
1512}
1513
1514.table {
1515 width: 100%;
1516 margin-bottom: 1rem;
1517 color: #212529;
1518}
1519
1520.table th,
1521.table td {
1522 padding: 0.75rem;
1523 vertical-align: top;
1524 border-top: 1px solid #dee2e6;
1525}
1526
1527.table thead th {
1528 vertical-align: bottom;
1529 border-bottom: 2px solid #dee2e6;
1530}
1531
1532.table tbody + tbody {
1533 border-top: 2px solid #dee2e6;
1534}
1535
1536.table-sm th,
1537.table-sm td {
1538 padding: 0.3rem;
1539}
1540
1541.table-bordered {
1542 border: 1px solid #dee2e6;
1543}
1544
1545.table-bordered th,
1546.table-bordered td {
1547 border: 1px solid #dee2e6;
1548}
1549
1550.table-bordered thead th,
1551.table-bordered thead td {
1552 border-bottom-width: 2px;
1553}
1554
1555.table-borderless th,
1556.table-borderless td,
1557.table-borderless thead th,
1558.table-borderless tbody + tbody {
1559 border: 0;
1560}
1561
1562.table-striped tbody tr:nth-of-type(odd) {
1563 background-color: rgba(0, 0, 0, 0.05);
1564}
1565
1566.table-hover tbody tr:hover {
1567 color: #212529;
1568 background-color: rgba(0, 0, 0, 0.075);
1569}
1570
1571.table-primary,
1572.table-primary > th,
1573.table-primary > td {
1574 background-color: #b8daff;
1575}
1576
1577.table-primary th,
1578.table-primary td,
1579.table-primary thead th,
1580.table-primary tbody + tbody {
1581 border-color: #7abaff;
1582}
1583
1584.table-hover .table-primary:hover {
1585 background-color: #9fcdff;
1586}
1587
1588.table-hover .table-primary:hover > td,
1589.table-hover .table-primary:hover > th {
1590 background-color: #9fcdff;
1591}
1592
1593.table-secondary,
1594.table-secondary > th,
1595.table-secondary > td {
1596 background-color: #d6d8db;
1597}
1598
1599.table-secondary th,
1600.table-secondary td,
1601.table-secondary thead th,
1602.table-secondary tbody + tbody {
1603 border-color: #b3b7bb;
1604}
1605
1606.table-hover .table-secondary:hover {
1607 background-color: #c8cbcf;
1608}
1609
1610.table-hover .table-secondary:hover > td,
1611.table-hover .table-secondary:hover > th {
1612 background-color: #c8cbcf;
1613}
1614
1615.table-success,
1616.table-success > th,
1617.table-success > td {
1618 background-color: #c3e6cb;
1619}
1620
1621.table-success th,
1622.table-success td,
1623.table-success thead th,
1624.table-success tbody + tbody {
1625 border-color: #8fd19e;
1626}
1627
1628.table-hover .table-success:hover {
1629 background-color: #b1dfbb;
1630}
1631
1632.table-hover .table-success:hover > td,
1633.table-hover .table-success:hover > th {
1634 background-color: #b1dfbb;
1635}
1636
1637.table-info,
1638.table-info > th,
1639.table-info > td {
1640 background-color: #bee5eb;
1641}
1642
1643.table-info th,
1644.table-info td,
1645.table-info thead th,
1646.table-info tbody + tbody {
1647 border-color: #86cfda;
1648}
1649
1650.table-hover .table-info:hover {
1651 background-color: #abdde5;
1652}
1653
1654.table-hover .table-info:hover > td,
1655.table-hover .table-info:hover > th {
1656 background-color: #abdde5;
1657}
1658
1659.table-warning,
1660.table-warning > th,
1661.table-warning > td {
1662 background-color: #ffeeba;
1663}
1664
1665.table-warning th,
1666.table-warning td,
1667.table-warning thead th,
1668.table-warning tbody + tbody {
1669 border-color: #ffdf7e;
1670}
1671
1672.table-hover .table-warning:hover {
1673 background-color: #ffe8a1;
1674}
1675
1676.table-hover .table-warning:hover > td,
1677.table-hover .table-warning:hover > th {
1678 background-color: #ffe8a1;
1679}
1680
1681.table-danger,
1682.table-danger > th,
1683.table-danger > td {
1684 background-color: #f5c6cb;
1685}
1686
1687.table-danger th,
1688.table-danger td,
1689.table-danger thead th,
1690.table-danger tbody + tbody {
1691 border-color: #ed969e;
1692}
1693
1694.table-hover .table-danger:hover {
1695 background-color: #f1b0b7;
1696}
1697
1698.table-hover .table-danger:hover > td,
1699.table-hover .table-danger:hover > th {
1700 background-color: #f1b0b7;
1701}
1702
1703.table-light,
1704.table-light > th,
1705.table-light > td {
1706 background-color: #fdfdfe;
1707}
1708
1709.table-light th,
1710.table-light td,
1711.table-light thead th,
1712.table-light tbody + tbody {
1713 border-color: #fbfcfc;
1714}
1715
1716.table-hover .table-light:hover {
1717 background-color: #ececf6;
1718}
1719
1720.table-hover .table-light:hover > td,
1721.table-hover .table-light:hover > th {
1722 background-color: #ececf6;
1723}
1724
1725.table-dark,
1726.table-dark > th,
1727.table-dark > td {
1728 background-color: #c6c8ca;
1729}
1730
1731.table-dark th,
1732.table-dark td,
1733.table-dark thead th,
1734.table-dark tbody + tbody {
1735 border-color: #95999c;
1736}
1737
1738.table-hover .table-dark:hover {
1739 background-color: #b9bbbe;
1740}
1741
1742.table-hover .table-dark:hover > td,
1743.table-hover .table-dark:hover > th {
1744 background-color: #b9bbbe;
1745}
1746
1747.table-active,
1748.table-active > th,
1749.table-active > td {
1750 background-color: rgba(0, 0, 0, 0.075);
1751}
1752
1753.table-hover .table-active:hover {
1754 background-color: rgba(0, 0, 0, 0.075);
1755}
1756
1757.table-hover .table-active:hover > td,
1758.table-hover .table-active:hover > th {
1759 background-color: rgba(0, 0, 0, 0.075);
1760}
1761
1762.table .thead-dark th {
1763 color: #fff;
1764 background-color: #343a40;
1765 border-color: #454d55;
1766}
1767
1768.table .thead-light th {
1769 color: #495057;
1770 background-color: #e9ecef;
1771 border-color: #dee2e6;
1772}
1773
1774.table-dark {
1775 color: #fff;
1776 background-color: #343a40;
1777}
1778
1779.table-dark th,
1780.table-dark td,
1781.table-dark thead th {
1782 border-color: #454d55;
1783}
1784
1785.table-dark.table-bordered {
1786 border: 0;
1787}
1788
1789.table-dark.table-striped tbody tr:nth-of-type(odd) {
1790 background-color: rgba(255, 255, 255, 0.05);
1791}
1792
1793.table-dark.table-hover tbody tr:hover {
1794 color: #fff;
1795 background-color: rgba(255, 255, 255, 0.075);
1796}
1797
1798@media (max-width: 575.98px) {
1799 .table-responsive-sm {
1800 display: block;
1801 width: 100%;
1802 overflow-x: auto;
1803 -webkit-overflow-scrolling: touch;
1804 }
1805 .table-responsive-sm > .table-bordered {
1806 border: 0;
1807 }
1808}
1809
1810@media (max-width: 767.98px) {
1811 .table-responsive-md {
1812 display: block;
1813 width: 100%;
1814 overflow-x: auto;
1815 -webkit-overflow-scrolling: touch;
1816 }
1817 .table-responsive-md > .table-bordered {
1818 border: 0;
1819 }
1820}
1821
1822@media (max-width: 991.98px) {
1823 .table-responsive-lg {
1824 display: block;
1825 width: 100%;
1826 overflow-x: auto;
1827 -webkit-overflow-scrolling: touch;
1828 }
1829 .table-responsive-lg > .table-bordered {
1830 border: 0;
1831 }
1832}
1833
1834@media (max-width: 1199.98px) {
1835 .table-responsive-xl {
1836 display: block;
1837 width: 100%;
1838 overflow-x: auto;
1839 -webkit-overflow-scrolling: touch;
1840 }
1841 .table-responsive-xl > .table-bordered {
1842 border: 0;
1843 }
1844}
1845
1846.table-responsive {
1847 display: block;
1848 width: 100%;
1849 overflow-x: auto;
1850 -webkit-overflow-scrolling: touch;
1851}
1852
1853.table-responsive > .table-bordered {
1854 border: 0;
1855}
1856
1857.form-control {
1858 display: block;
1859 width: 100%;
1860 height: calc(1.5em + 0.75rem + 2px);
1861 padding: 0.375rem 0.75rem;
1862 font-size: 1rem;
1863 font-weight: 400;
1864 line-height: 1.5;
1865 color: #495057;
1866 background-color: #fff;
1867 background-clip: padding-box;
1868 border: 1px solid #ced4da;
1869 border-radius: 0.25rem;
1870 transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
1871}
1872
1873@media (prefers-reduced-motion: reduce) {
1874 .form-control {
1875 transition: none;
1876 }
1877}
1878
1879.form-control::-ms-expand {
1880 background-color: transparent;
1881 border: 0;
1882}
1883
1884.form-control:focus {
1885 color: #495057;
1886 background-color: #fff;
1887 border-color: #80bdff;
1888 outline: 0;
1889 box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
1890}
1891
1892.form-control::-webkit-input-placeholder {
1893 color: #6c757d;
1894 opacity: 1;
1895}
1896
1897.form-control::-moz-placeholder {
1898 color: #6c757d;
1899 opacity: 1;
1900}
1901
1902.form-control:-ms-input-placeholder {
1903 color: #6c757d;
1904 opacity: 1;
1905}
1906
1907.form-control::-ms-input-placeholder {
1908 color: #6c757d;
1909 opacity: 1;
1910}
1911
1912.form-control::placeholder {
1913 color: #6c757d;
1914 opacity: 1;
1915}
1916
1917.form-control:disabled, .form-control[readonly] {
1918 background-color: #e9ecef;
1919 opacity: 1;
1920}
1921
1922select.form-control:focus::-ms-value {
1923 color: #495057;
1924 background-color: #fff;
1925}
1926
1927.form-control-file,
1928.form-control-range {
1929 display: block;
1930 width: 100%;
1931}
1932
1933.col-form-label {
1934 padding-top: calc(0.375rem + 1px);
1935 padding-bottom: calc(0.375rem + 1px);
1936 margin-bottom: 0;
1937 font-size: inherit;
1938 line-height: 1.5;
1939}
1940
1941.col-form-label-lg {
1942 padding-top: calc(0.5rem + 1px);
1943 padding-bottom: calc(0.5rem + 1px);
1944 font-size: 1.25rem;
1945 line-height: 1.5;
1946}
1947
1948.col-form-label-sm {
1949 padding-top: calc(0.25rem + 1px);
1950 padding-bottom: calc(0.25rem + 1px);
1951 font-size: 0.875rem;
1952 line-height: 1.5;
1953}
1954
1955.form-control-plaintext {
1956 display: block;
1957 width: 100%;
1958 padding-top: 0.375rem;
1959 padding-bottom: 0.375rem;
1960 margin-bottom: 0;
1961 line-height: 1.5;
1962 color: #212529;
1963 background-color: transparent;
1964 border: solid transparent;
1965 border-width: 1px 0;
1966}
1967
1968.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {
1969 padding-right: 0;
1970 padding-left: 0;
1971}
1972
1973.form-control-sm {
1974 height: calc(1.5em + 0.5rem + 2px);
1975 padding: 0.25rem 0.5rem;
1976 font-size: 0.875rem;
1977 line-height: 1.5;
1978 border-radius: 0.2rem;
1979}
1980
1981.form-control-lg {
1982 height: calc(1.5em + 1rem + 2px);
1983 padding: 0.5rem 1rem;
1984 font-size: 1.25rem;
1985 line-height: 1.5;
1986 border-radius: 0.3rem;
1987}
1988
1989select.form-control[size], select.form-control[multiple] {
1990 height: auto;
1991}
1992
1993textarea.form-control {
1994 height: auto;
1995}
1996
1997.form-group {
1998 margin-bottom: 1rem;
1999}
2000
2001.form-text {
2002 display: block;
2003 margin-top: 0.25rem;
2004}
2005
2006.form-row {
2007 display: -ms-flexbox;
2008 display: flex;
2009 -ms-flex-wrap: wrap;
2010 flex-wrap: wrap;
2011 margin-right: -5px;
2012 margin-left: -5px;
2013}
2014
2015.form-row > .col,
2016.form-row > [class*="col-"] {
2017 padding-right: 5px;
2018 padding-left: 5px;
2019}
2020
2021.form-check {
2022 position: relative;
2023 display: block;
2024 padding-left: 1.25rem;
2025}
2026
2027.form-check-input {
2028 position: absolute;
2029 margin-top: 0.3rem;
2030 margin-left: -1.25rem;
2031}
2032
2033.form-check-input:disabled ~ .form-check-label {
2034 color: #6c757d;
2035}
2036
2037.form-check-label {
2038 margin-bottom: 0;
2039}
2040
2041.form-check-inline {
2042 display: -ms-inline-flexbox;
2043 display: inline-flex;
2044 -ms-flex-align: center;
2045 align-items: center;
2046 padding-left: 0;
2047 margin-right: 0.75rem;
2048}
2049
2050.form-check-inline .form-check-input {
2051 position: static;
2052 margin-top: 0;
2053 margin-right: 0.3125rem;
2054 margin-left: 0;
2055}
2056
2057.valid-feedback {
2058 display: none;
2059 width: 100%;
2060 margin-top: 0.25rem;
2061 font-size: 80%;
2062 color: #28a745;
2063}
2064
2065.valid-tooltip {
2066 position: absolute;
2067 top: 100%;
2068 z-index: 5;
2069 display: none;
2070 max-width: 100%;
2071 padding: 0.25rem 0.5rem;
2072 margin-top: .1rem;
2073 font-size: 0.875rem;
2074 line-height: 1.5;
2075 color: #fff;
2076 background-color: rgba(40, 167, 69, 0.9);
2077 border-radius: 0.25rem;
2078}
2079
2080.was-validated .form-control:valid, .form-control.is-valid {
2081 border-color: #28a745;
2082 padding-right: calc(1.5em + 0.75rem);
2083 background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");
2084 background-repeat: no-repeat;
2085 background-position: center right calc(0.375em + 0.1875rem);
2086 background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
2087}
2088
2089.was-validated .form-control:valid:focus, .form-control.is-valid:focus {
2090 border-color: #28a745;
2091 box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);
2092}
2093
2094.was-validated .form-control:valid ~ .valid-feedback,
2095.was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback,
2096.form-control.is-valid ~ .valid-tooltip {
2097 display: block;
2098}
2099
2100.was-validated textarea.form-control:valid, textarea.form-control.is-valid {
2101 padding-right: calc(1.5em + 0.75rem);
2102 background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);
2103}
2104
2105.was-validated .custom-select:valid, .custom-select.is-valid {
2106 border-color: #28a745;
2107 padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem);
2108 background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
2109}
2110
2111.was-validated .custom-select:valid:focus, .custom-select.is-valid:focus {
2112 border-color: #28a745;
2113 box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);
2114}
2115
2116.was-validated .custom-select:valid ~ .valid-feedback,
2117.was-validated .custom-select:valid ~ .valid-tooltip, .custom-select.is-valid ~ .valid-feedback,
2118.custom-select.is-valid ~ .valid-tooltip {
2119 display: block;
2120}
2121
2122.was-validated .form-control-file:valid ~ .valid-feedback,
2123.was-validated .form-control-file:valid ~ .valid-tooltip, .form-control-file.is-valid ~ .valid-feedback,
2124.form-control-file.is-valid ~ .valid-tooltip {
2125 display: block;
2126}
2127
2128.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {
2129 color: #28a745;
2130}
2131
2132.was-validated .form-check-input:valid ~ .valid-feedback,
2133.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback,
2134.form-check-input.is-valid ~ .valid-tooltip {
2135 display: block;
2136}
2137
2138.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label {
2139 color: #28a745;
2140}
2141
2142.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before {
2143 border-color: #28a745;
2144}
2145
2146.was-validated .custom-control-input:valid ~ .valid-feedback,
2147.was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback,
2148.custom-control-input.is-valid ~ .valid-tooltip {
2149 display: block;
2150}
2151
2152.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before {
2153 border-color: #34ce57;
2154 background-color: #34ce57;
2155}
2156
2157.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before {
2158 box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);
2159}
2160
2161.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before {
2162 border-color: #28a745;
2163}
2164
2165.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label {
2166 border-color: #28a745;
2167}
2168
2169.was-validated .custom-file-input:valid ~ .valid-feedback,
2170.was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback,
2171.custom-file-input.is-valid ~ .valid-tooltip {
2172 display: block;
2173}
2174
2175.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label {
2176 border-color: #28a745;
2177 box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);
2178}
2179
2180.invalid-feedback {
2181 display: none;
2182 width: 100%;
2183 margin-top: 0.25rem;
2184 font-size: 80%;
2185 color: #dc3545;
2186}
2187
2188.invalid-tooltip {
2189 position: absolute;
2190 top: 100%;
2191 z-index: 5;
2192 display: none;
2193 max-width: 100%;
2194 padding: 0.25rem 0.5rem;
2195 margin-top: .1rem;
2196 font-size: 0.875rem;
2197 line-height: 1.5;
2198 color: #fff;
2199 background-color: rgba(220, 53, 69, 0.9);
2200 border-radius: 0.25rem;
2201}
2202
2203.was-validated .form-control:invalid, .form-control.is-invalid {
2204 border-color: #dc3545;
2205 padding-right: calc(1.5em + 0.75rem);
2206 background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E");
2207 background-repeat: no-repeat;
2208 background-position: center right calc(0.375em + 0.1875rem);
2209 background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
2210}
2211
2212.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {
2213 border-color: #dc3545;
2214 box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
2215}
2216
2217.was-validated .form-control:invalid ~ .invalid-feedback,
2218.was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback,
2219.form-control.is-invalid ~ .invalid-tooltip {
2220 display: block;
2221}
2222
2223.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {
2224 padding-right: calc(1.5em + 0.75rem);
2225 background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);
2226}
2227
2228.was-validated .custom-select:invalid, .custom-select.is-invalid {
2229 border-color: #dc3545;
2230 padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem);
2231 background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
2232}
2233
2234.was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus {
2235 border-color: #dc3545;
2236 box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
2237}
2238
2239.was-validated .custom-select:invalid ~ .invalid-feedback,
2240.was-validated .custom-select:invalid ~ .invalid-tooltip, .custom-select.is-invalid ~ .invalid-feedback,
2241.custom-select.is-invalid ~ .invalid-tooltip {
2242 display: block;
2243}
2244
2245.was-validated .form-control-file:invalid ~ .invalid-feedback,
2246.was-validated .form-control-file:invalid ~ .invalid-tooltip, .form-control-file.is-invalid ~ .invalid-feedback,
2247.form-control-file.is-invalid ~ .invalid-tooltip {
2248 display: block;
2249}
2250
2251.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {
2252 color: #dc3545;
2253}
2254
2255.was-validated .form-check-input:invalid ~ .invalid-feedback,
2256.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback,
2257.form-check-input.is-invalid ~ .invalid-tooltip {
2258 display: block;
2259}
2260
2261.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label {
2262 color: #dc3545;
2263}
2264
2265.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before {
2266 border-color: #dc3545;
2267}
2268
2269.was-validated .custom-control-input:invalid ~ .invalid-feedback,
2270.was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback,
2271.custom-control-input.is-invalid ~ .invalid-tooltip {
2272 display: block;
2273}
2274
2275.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before {
2276 border-color: #e4606d;
2277 background-color: #e4606d;
2278}
2279
2280.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before {
2281 box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
2282}
2283
2284.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before {
2285 border-color: #dc3545;
2286}
2287
2288.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label {
2289 border-color: #dc3545;
2290}
2291
2292.was-validated .custom-file-input:invalid ~ .invalid-feedback,
2293.was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback,
2294.custom-file-input.is-invalid ~ .invalid-tooltip {
2295 display: block;
2296}
2297
2298.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label {
2299 border-color: #dc3545;
2300 box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
2301}
2302
2303.form-inline {
2304 display: -ms-flexbox;
2305 display: flex;
2306 -ms-flex-flow: row wrap;
2307 flex-flow: row wrap;
2308 -ms-flex-align: center;
2309 align-items: center;
2310}
2311
2312.form-inline .form-check {
2313 width: 100%;
2314}
2315
2316@media (min-width: 576px) {
2317 .form-inline label {
2318 display: -ms-flexbox;
2319 display: flex;
2320 -ms-flex-align: center;
2321 align-items: center;
2322 -ms-flex-pack: center;
2323 justify-content: center;
2324 margin-bottom: 0;
2325 }
2326 .form-inline .form-group {
2327 display: -ms-flexbox;
2328 display: flex;
2329 -ms-flex: 0 0 auto;
2330 flex: 0 0 auto;
2331 -ms-flex-flow: row wrap;
2332 flex-flow: row wrap;
2333 -ms-flex-align: center;
2334 align-items: center;
2335 margin-bottom: 0;
2336 }
2337 .form-inline .form-control {
2338 display: inline-block;
2339 width: auto;
2340 vertical-align: middle;
2341 }
2342 .form-inline .form-control-plaintext {
2343 display: inline-block;
2344 }
2345 .form-inline .input-group,
2346 .form-inline .custom-select {
2347 width: auto;
2348 }
2349 .form-inline .form-check {
2350 display: -ms-flexbox;
2351 display: flex;
2352 -ms-flex-align: center;
2353 align-items: center;
2354 -ms-flex-pack: center;
2355 justify-content: center;
2356 width: auto;
2357 padding-left: 0;
2358 }
2359 .form-inline .form-check-input {
2360 position: relative;
2361 -ms-flex-negative: 0;
2362 flex-shrink: 0;
2363 margin-top: 0;
2364 margin-right: 0.25rem;
2365 margin-left: 0;
2366 }
2367 .form-inline .custom-control {
2368 -ms-flex-align: center;
2369 align-items: center;
2370 -ms-flex-pack: center;
2371 justify-content: center;
2372 }
2373 .form-inline .custom-control-label {
2374 margin-bottom: 0;
2375 }
2376}
2377
2378.btn {
2379 display: inline-block;
2380 font-weight: 400;
2381 color: #212529;
2382 text-align: center;
2383 vertical-align: middle;
2384 -webkit-user-select: none;
2385 -moz-user-select: none;
2386 -ms-user-select: none;
2387 user-select: none;
2388 background-color: transparent;
2389 border: 1px solid transparent;
2390 padding: 0.375rem 0.75rem;
2391 font-size: 1rem;
2392 line-height: 1.5;
2393 border-radius: 0.25rem;
2394 transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
2395}
2396
2397@media (prefers-reduced-motion: reduce) {
2398 .btn {
2399 transition: none;
2400 }
2401}
2402
2403.btn:hover {
2404 color: #212529;
2405 text-decoration: none;
2406}
2407
2408.btn:focus, .btn.focus {
2409 outline: 0;
2410 box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
2411}
2412
2413.btn.disabled, .btn:disabled {
2414 opacity: 0.65;
2415}
2416
2417a.btn.disabled,
2418fieldset:disabled a.btn {
2419 pointer-events: none;
2420}
2421
2422.btn-primary {
2423 color: #fff;
2424 background-color: #007bff;
2425 border-color: #007bff;
2426}
2427
2428.btn-primary:hover {
2429 color: #fff;
2430 background-color: #0069d9;
2431 border-color: #0062cc;
2432}
2433
2434.btn-primary:focus, .btn-primary.focus {
2435 box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
2436}
2437
2438.btn-primary.disabled, .btn-primary:disabled {
2439 color: #fff;
2440 background-color: #007bff;
2441 border-color: #007bff;
2442}
2443
2444.btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active,
2445.show > .btn-primary.dropdown-toggle {
2446 color: #fff;
2447 background-color: #0062cc;
2448 border-color: #005cbf;
2449}
2450
2451.btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus,
2452.show > .btn-primary.dropdown-toggle:focus {
2453 box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
2454}
2455
2456.btn-secondary {
2457 color: #fff;
2458 background-color: #6c757d;
2459 border-color: #6c757d;
2460}
2461
2462.btn-secondary:hover {
2463 color: #fff;
2464 background-color: #5a6268;
2465 border-color: #545b62;
2466}
2467
2468.btn-secondary:focus, .btn-secondary.focus {
2469 box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);
2470}
2471
2472.btn-secondary.disabled, .btn-secondary:disabled {
2473 color: #fff;
2474 background-color: #6c757d;
2475 border-color: #6c757d;
2476}
2477
2478.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active,
2479.show > .btn-secondary.dropdown-toggle {
2480 color: #fff;
2481 background-color: #545b62;
2482 border-color: #4e555b;
2483}
2484
2485.btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus,
2486.show > .btn-secondary.dropdown-toggle:focus {
2487 box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);
2488}
2489
2490.btn-success {
2491 color: #fff;
2492 background-color: #28a745;
2493 border-color: #28a745;
2494}
2495
2496.btn-success:hover {
2497 color: #fff;
2498 background-color: #218838;
2499 border-color: #1e7e34;
2500}
2501
2502.btn-success:focus, .btn-success.focus {
2503 box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);
2504}
2505
2506.btn-success.disabled, .btn-success:disabled {
2507 color: #fff;
2508 background-color: #28a745;
2509 border-color: #28a745;
2510}
2511
2512.btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active,
2513.show > .btn-success.dropdown-toggle {
2514 color: #fff;
2515 background-color: #1e7e34;
2516 border-color: #1c7430;
2517}
2518
2519.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus,
2520.show > .btn-success.dropdown-toggle:focus {
2521 box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);
2522}
2523
2524.btn-info {
2525 color: #fff;
2526 background-color: #17a2b8;
2527 border-color: #17a2b8;
2528}
2529
2530.btn-info:hover {
2531 color: #fff;
2532 background-color: #138496;
2533 border-color: #117a8b;
2534}
2535
2536.btn-info:focus, .btn-info.focus {
2537 box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);
2538}
2539
2540.btn-info.disabled, .btn-info:disabled {
2541 color: #fff;
2542 background-color: #17a2b8;
2543 border-color: #17a2b8;
2544}
2545
2546.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active,
2547.show > .btn-info.dropdown-toggle {
2548 color: #fff;
2549 background-color: #117a8b;
2550 border-color: #10707f;
2551}
2552
2553.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus,
2554.show > .btn-info.dropdown-toggle:focus {
2555 box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);
2556}
2557
2558.btn-warning {
2559 color: #212529;
2560 background-color: #ffc107;
2561 border-color: #ffc107;
2562}
2563
2564.btn-warning:hover {
2565 color: #212529;
2566 background-color: #e0a800;
2567 border-color: #d39e00;
2568}
2569
2570.btn-warning:focus, .btn-warning.focus {
2571 box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);
2572}
2573
2574.btn-warning.disabled, .btn-warning:disabled {
2575 color: #212529;
2576 background-color: #ffc107;
2577 border-color: #ffc107;
2578}
2579
2580.btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active,
2581.show > .btn-warning.dropdown-toggle {
2582 color: #212529;
2583 background-color: #d39e00;
2584 border-color: #c69500;
2585}
2586
2587.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus,
2588.show > .btn-warning.dropdown-toggle:focus {
2589 box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);
2590}
2591
2592.btn-danger {
2593 color: #fff;
2594 background-color: #dc3545;
2595 border-color: #dc3545;
2596}
2597
2598.btn-danger:hover {
2599 color: #fff;
2600 background-color: #c82333;
2601 border-color: #bd2130;
2602}
2603
2604.btn-danger:focus, .btn-danger.focus {
2605 box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);
2606}
2607
2608.btn-danger.disabled, .btn-danger:disabled {
2609 color: #fff;
2610 background-color: #dc3545;
2611 border-color: #dc3545;
2612}
2613
2614.btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active,
2615.show > .btn-danger.dropdown-toggle {
2616 color: #fff;
2617 background-color: #bd2130;
2618 border-color: #b21f2d;
2619}
2620
2621.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus,
2622.show > .btn-danger.dropdown-toggle:focus {
2623 box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);
2624}
2625
2626.btn-light {
2627 color: #212529;
2628 background-color: #f8f9fa;
2629 border-color: #f8f9fa;
2630}
2631
2632.btn-light:hover {
2633 color: #212529;
2634 background-color: #e2e6ea;
2635 border-color: #dae0e5;
2636}
2637
2638.btn-light:focus, .btn-light.focus {
2639 box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5);
2640}
2641
2642.btn-light.disabled, .btn-light:disabled {
2643 color: #212529;
2644 background-color: #f8f9fa;
2645 border-color: #f8f9fa;
2646}
2647
2648.btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active,
2649.show > .btn-light.dropdown-toggle {
2650 color: #212529;
2651 background-color: #dae0e5;
2652 border-color: #d3d9df;
2653}
2654
2655.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus,
2656.show > .btn-light.dropdown-toggle:focus {
2657 box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5);
2658}
2659
2660.btn-dark {
2661 color: #fff;
2662 background-color: #343a40;
2663 border-color: #343a40;
2664}
2665
2666.btn-dark:hover {
2667 color: #fff;
2668 background-color: #23272b;
2669 border-color: #1d2124;
2670}
2671
2672.btn-dark:focus, .btn-dark.focus {
2673 box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5);
2674}
2675
2676.btn-dark.disabled, .btn-dark:disabled {
2677 color: #fff;
2678 background-color: #343a40;
2679 border-color: #343a40;
2680}
2681
2682.btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active,
2683.show > .btn-dark.dropdown-toggle {
2684 color: #fff;
2685 background-color: #1d2124;
2686 border-color: #171a1d;
2687}
2688
2689.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus,
2690.show > .btn-dark.dropdown-toggle:focus {
2691 box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5);
2692}
2693
2694.btn-outline-primary {
2695 color: #007bff;
2696 border-color: #007bff;
2697}
2698
2699.btn-outline-primary:hover {
2700 color: #fff;
2701 background-color: #007bff;
2702 border-color: #007bff;
2703}
2704
2705.btn-outline-primary:focus, .btn-outline-primary.focus {
2706 box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);
2707}
2708
2709.btn-outline-primary.disabled, .btn-outline-primary:disabled {
2710 color: #007bff;
2711 background-color: transparent;
2712}
2713
2714.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active,
2715.show > .btn-outline-primary.dropdown-toggle {
2716 color: #fff;
2717 background-color: #007bff;
2718 border-color: #007bff;
2719}
2720
2721.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus,
2722.show > .btn-outline-primary.dropdown-toggle:focus {
2723 box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);
2724}
2725
2726.btn-outline-secondary {
2727 color: #6c757d;
2728 border-color: #6c757d;
2729}
2730
2731.btn-outline-secondary:hover {
2732 color: #fff;
2733 background-color: #6c757d;
2734 border-color: #6c757d;
2735}
2736
2737.btn-outline-secondary:focus, .btn-outline-secondary.focus {
2738 box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);
2739}
2740
2741.btn-outline-secondary.disabled, .btn-outline-secondary:disabled {
2742 color: #6c757d;
2743 background-color: transparent;
2744}
2745
2746.btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active,
2747.show > .btn-outline-secondary.dropdown-toggle {
2748 color: #fff;
2749 background-color: #6c757d;
2750 border-color: #6c757d;
2751}
2752
2753.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus,
2754.show > .btn-outline-secondary.dropdown-toggle:focus {
2755 box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);
2756}
2757
2758.btn-outline-success {
2759 color: #28a745;
2760 border-color: #28a745;
2761}
2762
2763.btn-outline-success:hover {
2764 color: #fff;
2765 background-color: #28a745;
2766 border-color: #28a745;
2767}
2768
2769.btn-outline-success:focus, .btn-outline-success.focus {
2770 box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);
2771}
2772
2773.btn-outline-success.disabled, .btn-outline-success:disabled {
2774 color: #28a745;
2775 background-color: transparent;
2776}
2777
2778.btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active,
2779.show > .btn-outline-success.dropdown-toggle {
2780 color: #fff;
2781 background-color: #28a745;
2782 border-color: #28a745;
2783}
2784
2785.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus,
2786.show > .btn-outline-success.dropdown-toggle:focus {
2787 box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);
2788}
2789
2790.btn-outline-info {
2791 color: #17a2b8;
2792 border-color: #17a2b8;
2793}
2794
2795.btn-outline-info:hover {
2796 color: #fff;
2797 background-color: #17a2b8;
2798 border-color: #17a2b8;
2799}
2800
2801.btn-outline-info:focus, .btn-outline-info.focus {
2802 box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);
2803}
2804
2805.btn-outline-info.disabled, .btn-outline-info:disabled {
2806 color: #17a2b8;
2807 background-color: transparent;
2808}
2809
2810.btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active,
2811.show > .btn-outline-info.dropdown-toggle {
2812 color: #fff;
2813 background-color: #17a2b8;
2814 border-color: #17a2b8;
2815}
2816
2817.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus,
2818.show > .btn-outline-info.dropdown-toggle:focus {
2819 box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);
2820}
2821
2822.btn-outline-warning {
2823 color: #ffc107;
2824 border-color: #ffc107;
2825}
2826
2827.btn-outline-warning:hover {
2828 color: #212529;
2829 background-color: #ffc107;
2830 border-color: #ffc107;
2831}
2832
2833.btn-outline-warning:focus, .btn-outline-warning.focus {
2834 box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);
2835}
2836
2837.btn-outline-warning.disabled, .btn-outline-warning:disabled {
2838 color: #ffc107;
2839 background-color: transparent;
2840}
2841
2842.btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active,
2843.show > .btn-outline-warning.dropdown-toggle {
2844 color: #212529;
2845 background-color: #ffc107;
2846 border-color: #ffc107;
2847}
2848
2849.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus,
2850.show > .btn-outline-warning.dropdown-toggle:focus {
2851 box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);
2852}
2853
2854.btn-outline-danger {
2855 color: #dc3545;
2856 border-color: #dc3545;
2857}
2858
2859.btn-outline-danger:hover {
2860 color: #fff;
2861 background-color: #dc3545;
2862 border-color: #dc3545;
2863}
2864
2865.btn-outline-danger:focus, .btn-outline-danger.focus {
2866 box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);
2867}
2868
2869.btn-outline-danger.disabled, .btn-outline-danger:disabled {
2870 color: #dc3545;
2871 background-color: transparent;
2872}
2873
2874.btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active,
2875.show > .btn-outline-danger.dropdown-toggle {
2876 color: #fff;
2877 background-color: #dc3545;
2878 border-color: #dc3545;
2879}
2880
2881.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus,
2882.show > .btn-outline-danger.dropdown-toggle:focus {
2883 box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);
2884}
2885
2886.btn-outline-light {
2887 color: #f8f9fa;
2888 border-color: #f8f9fa;
2889}
2890
2891.btn-outline-light:hover {
2892 color: #212529;
2893 background-color: #f8f9fa;
2894 border-color: #f8f9fa;
2895}
2896
2897.btn-outline-light:focus, .btn-outline-light.focus {
2898 box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);
2899}
2900
2901.btn-outline-light.disabled, .btn-outline-light:disabled {
2902 color: #f8f9fa;
2903 background-color: transparent;
2904}
2905
2906.btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active,
2907.show > .btn-outline-light.dropdown-toggle {
2908 color: #212529;
2909 background-color: #f8f9fa;
2910 border-color: #f8f9fa;
2911}
2912
2913.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus,
2914.show > .btn-outline-light.dropdown-toggle:focus {
2915 box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);
2916}
2917
2918.btn-outline-dark {
2919 color: #343a40;
2920 border-color: #343a40;
2921}
2922
2923.btn-outline-dark:hover {
2924 color: #fff;
2925 background-color: #343a40;
2926 border-color: #343a40;
2927}
2928
2929.btn-outline-dark:focus, .btn-outline-dark.focus {
2930 box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);
2931}
2932
2933.btn-outline-dark.disabled, .btn-outline-dark:disabled {
2934 color: #343a40;
2935 background-color: transparent;
2936}
2937
2938.btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active,
2939.show > .btn-outline-dark.dropdown-toggle {
2940 color: #fff;
2941 background-color: #343a40;
2942 border-color: #343a40;
2943}
2944
2945.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus,
2946.show > .btn-outline-dark.dropdown-toggle:focus {
2947 box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);
2948}
2949
2950.btn-link {
2951 font-weight: 400;
2952 color: #007bff;
2953 text-decoration: none;
2954}
2955
2956.btn-link:hover {
2957 color: #0056b3;
2958 text-decoration: underline;
2959}
2960
2961.btn-link:focus, .btn-link.focus {
2962 text-decoration: underline;
2963 box-shadow: none;
2964}
2965
2966.btn-link:disabled, .btn-link.disabled {
2967 color: #6c757d;
2968 pointer-events: none;
2969}
2970
2971.btn-lg, .btn-group-lg > .btn {
2972 padding: 0.5rem 1rem;
2973 font-size: 1.25rem;
2974 line-height: 1.5;
2975 border-radius: 0.3rem;
2976}
2977
2978.btn-sm, .btn-group-sm > .btn {
2979 padding: 0.25rem 0.5rem;
2980 font-size: 0.875rem;
2981 line-height: 1.5;
2982 border-radius: 0.2rem;
2983}
2984
2985.btn-block {
2986 display: block;
2987 width: 100%;
2988}
2989
2990.btn-block + .btn-block {
2991 margin-top: 0.5rem;
2992}
2993
2994input[type="submit"].btn-block,
2995input[type="reset"].btn-block,
2996input[type="button"].btn-block {
2997 width: 100%;
2998}
2999
3000.fade {
3001 transition: opacity 0.15s linear;
3002}
3003
3004@media (prefers-reduced-motion: reduce) {
3005 .fade {
3006 transition: none;
3007 }
3008}
3009
3010.fade:not(.show) {
3011 opacity: 0;
3012}
3013
3014.collapse:not(.show) {
3015 display: none;
3016}
3017
3018.collapsing {
3019 position: relative;
3020 height: 0;
3021 overflow: hidden;
3022 transition: height 0.35s ease;
3023}
3024
3025@media (prefers-reduced-motion: reduce) {
3026 .collapsing {
3027 transition: none;
3028 }
3029}
3030
3031.dropup,
3032.dropright,
3033.dropdown,
3034.dropleft {
3035 position: relative;
3036}
3037
3038.dropdown-toggle {
3039 white-space: nowrap;
3040}
3041
3042.dropdown-toggle::after {
3043 display: inline-block;
3044 margin-left: 0.255em;
3045 vertical-align: 0.255em;
3046 content: "";
3047 border-top: 0.3em solid;
3048 border-right: 0.3em solid transparent;
3049 border-bottom: 0;
3050 border-left: 0.3em solid transparent;
3051}
3052
3053.dropdown-toggle:empty::after {
3054 margin-left: 0;
3055}
3056
3057.dropdown-menu {
3058 position: absolute;
3059 top: 100%;
3060 left: 0;
3061 z-index: 1000;
3062 display: none;
3063 float: left;
3064 min-width: 10rem;
3065 padding: 0.5rem 0;
3066 margin: 0.125rem 0 0;
3067 font-size: 1rem;
3068 color: #212529;
3069 text-align: left;
3070 list-style: none;
3071 background-color: #fff;
3072 background-clip: padding-box;
3073 border: 1px solid rgba(0, 0, 0, 0.15);
3074 border-radius: 0.25rem;
3075}
3076
3077.dropdown-menu-left {
3078 right: auto;
3079 left: 0;
3080}
3081
3082.dropdown-menu-right {
3083 right: 0;
3084 left: auto;
3085}
3086
3087@media (min-width: 576px) {
3088 .dropdown-menu-sm-left {
3089 right: auto;
3090 left: 0;
3091 }
3092 .dropdown-menu-sm-right {
3093 right: 0;
3094 left: auto;
3095 }
3096}
3097
3098@media (min-width: 768px) {
3099 .dropdown-menu-md-left {
3100 right: auto;
3101 left: 0;
3102 }
3103 .dropdown-menu-md-right {
3104 right: 0;
3105 left: auto;
3106 }
3107}
3108
3109@media (min-width: 992px) {
3110 .dropdown-menu-lg-left {
3111 right: auto;
3112 left: 0;
3113 }
3114 .dropdown-menu-lg-right {
3115 right: 0;
3116 left: auto;
3117 }
3118}
3119
3120@media (min-width: 1200px) {
3121 .dropdown-menu-xl-left {
3122 right: auto;
3123 left: 0;
3124 }
3125 .dropdown-menu-xl-right {
3126 right: 0;
3127 left: auto;
3128 }
3129}
3130
3131.dropup .dropdown-menu {
3132 top: auto;
3133 bottom: 100%;
3134 margin-top: 0;
3135 margin-bottom: 0.125rem;
3136}
3137
3138.dropup .dropdown-toggle::after {
3139 display: inline-block;
3140 margin-left: 0.255em;
3141 vertical-align: 0.255em;
3142 content: "";
3143 border-top: 0;
3144 border-right: 0.3em solid transparent;
3145 border-bottom: 0.3em solid;
3146 border-left: 0.3em solid transparent;
3147}
3148
3149.dropup .dropdown-toggle:empty::after {
3150 margin-left: 0;
3151}
3152
3153.dropright .dropdown-menu {
3154 top: 0;
3155 right: auto;
3156 left: 100%;
3157 margin-top: 0;
3158 margin-left: 0.125rem;
3159}
3160
3161.dropright .dropdown-toggle::after {
3162 display: inline-block;
3163 margin-left: 0.255em;
3164 vertical-align: 0.255em;
3165 content: "";
3166 border-top: 0.3em solid transparent;
3167 border-right: 0;
3168 border-bottom: 0.3em solid transparent;
3169 border-left: 0.3em solid;
3170}
3171
3172.dropright .dropdown-toggle:empty::after {
3173 margin-left: 0;
3174}
3175
3176.dropright .dropdown-toggle::after {
3177 vertical-align: 0;
3178}
3179
3180.dropleft .dropdown-menu {
3181 top: 0;
3182 right: 100%;
3183 left: auto;
3184 margin-top: 0;
3185 margin-right: 0.125rem;
3186}
3187
3188.dropleft .dropdown-toggle::after {
3189 display: inline-block;
3190 margin-left: 0.255em;
3191 vertical-align: 0.255em;
3192 content: "";
3193}
3194
3195.dropleft .dropdown-toggle::after {
3196 display: none;
3197}
3198
3199.dropleft .dropdown-toggle::before {
3200 display: inline-block;
3201 margin-right: 0.255em;
3202 vertical-align: 0.255em;
3203 content: "";
3204 border-top: 0.3em solid transparent;
3205 border-right: 0.3em solid;
3206 border-bottom: 0.3em solid transparent;
3207}
3208
3209.dropleft .dropdown-toggle:empty::after {
3210 margin-left: 0;
3211}
3212
3213.dropleft .dropdown-toggle::before {
3214 vertical-align: 0;
3215}
3216
3217.dropdown-menu[x-placement^="top"], .dropdown-menu[x-placement^="right"], .dropdown-menu[x-placement^="bottom"], .dropdown-menu[x-placement^="left"] {
3218 right: auto;
3219 bottom: auto;
3220}
3221
3222.dropdown-divider {
3223 height: 0;
3224 margin: 0.5rem 0;
3225 overflow: hidden;
3226 border-top: 1px solid #e9ecef;
3227}
3228
3229.dropdown-item {
3230 display: block;
3231 width: 100%;
3232 padding: 0.25rem 1.5rem;
3233 clear: both;
3234 font-weight: 400;
3235 color: #212529;
3236 text-align: inherit;
3237 white-space: nowrap;
3238 background-color: transparent;
3239 border: 0;
3240}
3241
3242.dropdown-item:hover, .dropdown-item:focus {
3243 color: #16181b;
3244 text-decoration: none;
3245 background-color: #f8f9fa;
3246}
3247
3248.dropdown-item.active, .dropdown-item:active {
3249 color: #fff;
3250 text-decoration: none;
3251 background-color: #007bff;
3252}
3253
3254.dropdown-item.disabled, .dropdown-item:disabled {
3255 color: #6c757d;
3256 pointer-events: none;
3257 background-color: transparent;
3258}
3259
3260.dropdown-menu.show {
3261 display: block;
3262}
3263
3264.dropdown-header {
3265 display: block;
3266 padding: 0.5rem 1.5rem;
3267 margin-bottom: 0;
3268 font-size: 0.875rem;
3269 color: #6c757d;
3270 white-space: nowrap;
3271}
3272
3273.dropdown-item-text {
3274 display: block;
3275 padding: 0.25rem 1.5rem;
3276 color: #212529;
3277}
3278
3279.btn-group,
3280.btn-group-vertical {
3281 position: relative;
3282 display: -ms-inline-flexbox;
3283 display: inline-flex;
3284 vertical-align: middle;
3285}
3286
3287.btn-group > .btn,
3288.btn-group-vertical > .btn {
3289 position: relative;
3290 -ms-flex: 1 1 auto;
3291 flex: 1 1 auto;
3292}
3293
3294.btn-group > .btn:hover,
3295.btn-group-vertical > .btn:hover {
3296 z-index: 1;
3297}
3298
3299.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,
3300.btn-group-vertical > .btn:focus,
3301.btn-group-vertical > .btn:active,
3302.btn-group-vertical > .btn.active {
3303 z-index: 1;
3304}
3305
3306.btn-toolbar {
3307 display: -ms-flexbox;
3308 display: flex;
3309 -ms-flex-wrap: wrap;
3310 flex-wrap: wrap;
3311 -ms-flex-pack: start;
3312 justify-content: flex-start;
3313}
3314
3315.btn-toolbar .input-group {
3316 width: auto;
3317}
3318
3319.btn-group > .btn:not(:first-child),
3320.btn-group > .btn-group:not(:first-child) {
3321 margin-left: -1px;
3322}
3323
3324.btn-group > .btn:not(:last-child):not(.dropdown-toggle),
3325.btn-group > .btn-group:not(:last-child) > .btn {
3326 border-top-right-radius: 0;
3327 border-bottom-right-radius: 0;
3328}
3329
3330.btn-group > .btn:not(:first-child),
3331.btn-group > .btn-group:not(:first-child) > .btn {
3332 border-top-left-radius: 0;
3333 border-bottom-left-radius: 0;
3334}
3335
3336.dropdown-toggle-split {
3337 padding-right: 0.5625rem;
3338 padding-left: 0.5625rem;
3339}
3340
3341.dropdown-toggle-split::after,
3342.dropup .dropdown-toggle-split::after,
3343.dropright .dropdown-toggle-split::after {
3344 margin-left: 0;
3345}
3346
3347.dropleft .dropdown-toggle-split::before {
3348 margin-right: 0;
3349}
3350
3351.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {
3352 padding-right: 0.375rem;
3353 padding-left: 0.375rem;
3354}
3355
3356.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {
3357 padding-right: 0.75rem;
3358 padding-left: 0.75rem;
3359}
3360
3361.btn-group-vertical {
3362 -ms-flex-direction: column;
3363 flex-direction: column;
3364 -ms-flex-align: start;
3365 align-items: flex-start;
3366 -ms-flex-pack: center;
3367 justify-content: center;
3368}
3369
3370.btn-group-vertical > .btn,
3371.btn-group-vertical > .btn-group {
3372 width: 100%;
3373}
3374
3375.btn-group-vertical > .btn:not(:first-child),
3376.btn-group-vertical > .btn-group:not(:first-child) {
3377 margin-top: -1px;
3378}
3379
3380.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),
3381.btn-group-vertical > .btn-group:not(:last-child) > .btn {
3382 border-bottom-right-radius: 0;
3383 border-bottom-left-radius: 0;
3384}
3385
3386.btn-group-vertical > .btn:not(:first-child),
3387.btn-group-vertical > .btn-group:not(:first-child) > .btn {
3388 border-top-left-radius: 0;
3389 border-top-right-radius: 0;
3390}
3391
3392.btn-group-toggle > .btn,
3393.btn-group-toggle > .btn-group > .btn {
3394 margin-bottom: 0;
3395}
3396
3397.btn-group-toggle > .btn input[type="radio"],
3398.btn-group-toggle > .btn input[type="checkbox"],
3399.btn-group-toggle > .btn-group > .btn input[type="radio"],
3400.btn-group-toggle > .btn-group > .btn input[type="checkbox"] {
3401 position: absolute;
3402 clip: rect(0, 0, 0, 0);
3403 pointer-events: none;
3404}
3405
3406.input-group {
3407 position: relative;
3408 display: -ms-flexbox;
3409 display: flex;
3410 -ms-flex-wrap: wrap;
3411 flex-wrap: wrap;
3412 -ms-flex-align: stretch;
3413 align-items: stretch;
3414 width: 100%;
3415}
3416
3417.input-group > .form-control,
3418.input-group > .form-control-plaintext,
3419.input-group > .custom-select,
3420.input-group > .custom-file {
3421 position: relative;
3422 -ms-flex: 1 1 auto;
3423 flex: 1 1 auto;
3424 width: 1%;
3425 margin-bottom: 0;
3426}
3427
3428.input-group > .form-control + .form-control,
3429.input-group > .form-control + .custom-select,
3430.input-group > .form-control + .custom-file,
3431.input-group > .form-control-plaintext + .form-control,
3432.input-group > .form-control-plaintext + .custom-select,
3433.input-group > .form-control-plaintext + .custom-file,
3434.input-group > .custom-select + .form-control,
3435.input-group > .custom-select + .custom-select,
3436.input-group > .custom-select + .custom-file,
3437.input-group > .custom-file + .form-control,
3438.input-group > .custom-file + .custom-select,
3439.input-group > .custom-file + .custom-file {
3440 margin-left: -1px;
3441}
3442
3443.input-group > .form-control:focus,
3444.input-group > .custom-select:focus,
3445.input-group > .custom-file .custom-file-input:focus ~ .custom-file-label {
3446 z-index: 3;
3447}
3448
3449.input-group > .custom-file .custom-file-input:focus {
3450 z-index: 4;
3451}
3452
3453.input-group > .form-control:not(:last-child),
3454.input-group > .custom-select:not(:last-child) {
3455 border-top-right-radius: 0;
3456 border-bottom-right-radius: 0;
3457}
3458
3459.input-group > .form-control:not(:first-child),
3460.input-group > .custom-select:not(:first-child) {
3461 border-top-left-radius: 0;
3462 border-bottom-left-radius: 0;
3463}
3464
3465.input-group > .custom-file {
3466 display: -ms-flexbox;
3467 display: flex;
3468 -ms-flex-align: center;
3469 align-items: center;
3470}
3471
3472.input-group > .custom-file:not(:last-child) .custom-file-label,
3473.input-group > .custom-file:not(:last-child) .custom-file-label::after {
3474 border-top-right-radius: 0;
3475 border-bottom-right-radius: 0;
3476}
3477
3478.input-group > .custom-file:not(:first-child) .custom-file-label {
3479 border-top-left-radius: 0;
3480 border-bottom-left-radius: 0;
3481}
3482
3483.input-group-prepend,
3484.input-group-append {
3485 display: -ms-flexbox;
3486 display: flex;
3487}
3488
3489.input-group-prepend .btn,
3490.input-group-append .btn {
3491 position: relative;
3492 z-index: 2;
3493}
3494
3495.input-group-prepend .btn:focus,
3496.input-group-append .btn:focus {
3497 z-index: 3;
3498}
3499
3500.input-group-prepend .btn + .btn,
3501.input-group-prepend .btn + .input-group-text,
3502.input-group-prepend .input-group-text + .input-group-text,
3503.input-group-prepend .input-group-text + .btn,
3504.input-group-append .btn + .btn,
3505.input-group-append .btn + .input-group-text,
3506.input-group-append .input-group-text + .input-group-text,
3507.input-group-append .input-group-text + .btn {
3508 margin-left: -1px;
3509}
3510
3511.input-group-prepend {
3512 margin-right: -1px;
3513}
3514
3515.input-group-append {
3516 margin-left: -1px;
3517}
3518
3519.input-group-text {
3520 display: -ms-flexbox;
3521 display: flex;
3522 -ms-flex-align: center;
3523 align-items: center;
3524 padding: 0.375rem 0.75rem;
3525 margin-bottom: 0;
3526 font-size: 1rem;
3527 font-weight: 400;
3528 line-height: 1.5;
3529 color: #495057;
3530 text-align: center;
3531 white-space: nowrap;
3532 background-color: #e9ecef;
3533 border: 1px solid #ced4da;
3534 border-radius: 0.25rem;
3535}
3536
3537.input-group-text input[type="radio"],
3538.input-group-text input[type="checkbox"] {
3539 margin-top: 0;
3540}
3541
3542.input-group-lg > .form-control:not(textarea),
3543.input-group-lg > .custom-select {
3544 height: calc(1.5em + 1rem + 2px);
3545}
3546
3547.input-group-lg > .form-control,
3548.input-group-lg > .custom-select,
3549.input-group-lg > .input-group-prepend > .input-group-text,
3550.input-group-lg > .input-group-append > .input-group-text,
3551.input-group-lg > .input-group-prepend > .btn,
3552.input-group-lg > .input-group-append > .btn {
3553 padding: 0.5rem 1rem;
3554 font-size: 1.25rem;
3555 line-height: 1.5;
3556 border-radius: 0.3rem;
3557}
3558
3559.input-group-sm > .form-control:not(textarea),
3560.input-group-sm > .custom-select {
3561 height: calc(1.5em + 0.5rem + 2px);
3562}
3563
3564.input-group-sm > .form-control,
3565.input-group-sm > .custom-select,
3566.input-group-sm > .input-group-prepend > .input-group-text,
3567.input-group-sm > .input-group-append > .input-group-text,
3568.input-group-sm > .input-group-prepend > .btn,
3569.input-group-sm > .input-group-append > .btn {
3570 padding: 0.25rem 0.5rem;
3571 font-size: 0.875rem;
3572 line-height: 1.5;
3573 border-radius: 0.2rem;
3574}
3575
3576.input-group-lg > .custom-select,
3577.input-group-sm > .custom-select {
3578 padding-right: 1.75rem;
3579}
3580
3581.input-group > .input-group-prepend > .btn,
3582.input-group > .input-group-prepend > .input-group-text,
3583.input-group > .input-group-append:not(:last-child) > .btn,
3584.input-group > .input-group-append:not(:last-child) > .input-group-text,
3585.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),
3586.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {
3587 border-top-right-radius: 0;
3588 border-bottom-right-radius: 0;
3589}
3590
3591.input-group > .input-group-append > .btn,
3592.input-group > .input-group-append > .input-group-text,
3593.input-group > .input-group-prepend:not(:first-child) > .btn,
3594.input-group > .input-group-prepend:not(:first-child) > .input-group-text,
3595.input-group > .input-group-prepend:first-child > .btn:not(:first-child),
3596.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {
3597 border-top-left-radius: 0;
3598 border-bottom-left-radius: 0;
3599}
3600
3601.custom-control {
3602 position: relative;
3603 display: block;
3604 min-height: 1.5rem;
3605 padding-left: 1.5rem;
3606}
3607
3608.custom-control-inline {
3609 display: -ms-inline-flexbox;
3610 display: inline-flex;
3611 margin-right: 1rem;
3612}
3613
3614.custom-control-input {
3615 position: absolute;
3616 z-index: -1;
3617 opacity: 0;
3618}
3619
3620.custom-control-input:checked ~ .custom-control-label::before {
3621 color: #fff;
3622 border-color: #007bff;
3623 background-color: #007bff;
3624}
3625
3626.custom-control-input:focus ~ .custom-control-label::before {
3627 box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
3628}
3629
3630.custom-control-input:focus:not(:checked) ~ .custom-control-label::before {
3631 border-color: #80bdff;
3632}
3633
3634.custom-control-input:not(:disabled):active ~ .custom-control-label::before {
3635 color: #fff;
3636 background-color: #b3d7ff;
3637 border-color: #b3d7ff;
3638}
3639
3640.custom-control-input:disabled ~ .custom-control-label {
3641 color: #6c757d;
3642}
3643
3644.custom-control-input:disabled ~ .custom-control-label::before {
3645 background-color: #e9ecef;
3646}
3647
3648.custom-control-label {
3649 position: relative;
3650 margin-bottom: 0;
3651 vertical-align: top;
3652}
3653
3654.custom-control-label::before {
3655 position: absolute;
3656 top: 0.25rem;
3657 left: -1.5rem;
3658 display: block;
3659 width: 1rem;
3660 height: 1rem;
3661 pointer-events: none;
3662 content: "";
3663 background-color: #fff;
3664 border: #adb5bd solid 1px;
3665}
3666
3667.custom-control-label::after {
3668 position: absolute;
3669 top: 0.25rem;
3670 left: -1.5rem;
3671 display: block;
3672 width: 1rem;
3673 height: 1rem;
3674 content: "";
3675 background: no-repeat 50% / 50% 50%;
3676}
3677
3678.custom-checkbox .custom-control-label::before {
3679 border-radius: 0.25rem;
3680}
3681
3682.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after {
3683 background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e");
3684}
3685
3686.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before {
3687 border-color: #007bff;
3688 background-color: #007bff;
3689}
3690
3691.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after {
3692 background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e");
3693}
3694
3695.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before {
3696 background-color: rgba(0, 123, 255, 0.5);
3697}
3698
3699.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before {
3700 background-color: rgba(0, 123, 255, 0.5);
3701}
3702
3703.custom-radio .custom-control-label::before {
3704 border-radius: 50%;
3705}
3706
3707.custom-radio .custom-control-input:checked ~ .custom-control-label::after {
3708 background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e");
3709}
3710
3711.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before {
3712 background-color: rgba(0, 123, 255, 0.5);
3713}
3714
3715.custom-switch {
3716 padding-left: 2.25rem;
3717}
3718
3719.custom-switch .custom-control-label::before {
3720 left: -2.25rem;
3721 width: 1.75rem;
3722 pointer-events: all;
3723 border-radius: 0.5rem;
3724}
3725
3726.custom-switch .custom-control-label::after {
3727 top: calc(0.25rem + 2px);
3728 left: calc(-2.25rem + 2px);
3729 width: calc(1rem - 4px);
3730 height: calc(1rem - 4px);
3731 background-color: #adb5bd;
3732 border-radius: 0.5rem;
3733 transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out;
3734 transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
3735 transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out;
3736}
3737
3738@media (prefers-reduced-motion: reduce) {
3739 .custom-switch .custom-control-label::after {
3740 transition: none;
3741 }
3742}
3743
3744.custom-switch .custom-control-input:checked ~ .custom-control-label::after {
3745 background-color: #fff;
3746 -webkit-transform: translateX(0.75rem);
3747 transform: translateX(0.75rem);
3748}
3749
3750.custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before {
3751 background-color: rgba(0, 123, 255, 0.5);
3752}
3753
3754.custom-select {
3755 display: inline-block;
3756 width: 100%;
3757 height: calc(1.5em + 0.75rem + 2px);
3758 padding: 0.375rem 1.75rem 0.375rem 0.75rem;
3759 font-size: 1rem;
3760 font-weight: 400;
3761 line-height: 1.5;
3762 color: #495057;
3763 vertical-align: middle;
3764 background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px;
3765 background-color: #fff;
3766 border: 1px solid #ced4da;
3767 border-radius: 0.25rem;
3768 -webkit-appearance: none;
3769 -moz-appearance: none;
3770 appearance: none;
3771}
3772
3773.custom-select:focus {
3774 border-color: #80bdff;
3775 outline: 0;
3776 box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
3777}
3778
3779.custom-select:focus::-ms-value {
3780 color: #495057;
3781 background-color: #fff;
3782}
3783
3784.custom-select[multiple], .custom-select[size]:not([size="1"]) {
3785 height: auto;
3786 padding-right: 0.75rem;
3787 background-image: none;
3788}
3789
3790.custom-select:disabled {
3791 color: #6c757d;
3792 background-color: #e9ecef;
3793}
3794
3795.custom-select::-ms-expand {
3796 display: none;
3797}
3798
3799.custom-select-sm {
3800 height: calc(1.5em + 0.5rem + 2px);
3801 padding-top: 0.25rem;
3802 padding-bottom: 0.25rem;
3803 padding-left: 0.5rem;
3804 font-size: 0.875rem;
3805}
3806
3807.custom-select-lg {
3808 height: calc(1.5em + 1rem + 2px);
3809 padding-top: 0.5rem;
3810 padding-bottom: 0.5rem;
3811 padding-left: 1rem;
3812 font-size: 1.25rem;
3813}
3814
3815.custom-file {
3816 position: relative;
3817 display: inline-block;
3818 width: 100%;
3819 height: calc(1.5em + 0.75rem + 2px);
3820 margin-bottom: 0;
3821}
3822
3823.custom-file-input {
3824 position: relative;
3825 z-index: 2;
3826 width: 100%;
3827 height: calc(1.5em + 0.75rem + 2px);
3828 margin: 0;
3829 opacity: 0;
3830}
3831
3832.custom-file-input:focus ~ .custom-file-label {
3833 border-color: #80bdff;
3834 box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
3835}
3836
3837.custom-file-input:disabled ~ .custom-file-label {
3838 background-color: #e9ecef;
3839}
3840
3841.custom-file-input:lang(en) ~ .custom-file-label::after {
3842 content: "Browse";
3843}
3844
3845.custom-file-input ~ .custom-file-label[data-browse]::after {
3846 content: attr(data-browse);
3847}
3848
3849.custom-file-label {
3850 position: absolute;
3851 top: 0;
3852 right: 0;
3853 left: 0;
3854 z-index: 1;
3855 height: calc(1.5em + 0.75rem + 2px);
3856 padding: 0.375rem 0.75rem;
3857 font-weight: 400;
3858 line-height: 1.5;
3859 color: #495057;
3860 background-color: #fff;
3861 border: 1px solid #ced4da;
3862 border-radius: 0.25rem;
3863}
3864
3865.custom-file-label::after {
3866 position: absolute;
3867 top: 0;
3868 right: 0;
3869 bottom: 0;
3870 z-index: 3;
3871 display: block;
3872 height: calc(1.5em + 0.75rem);
3873 padding: 0.375rem 0.75rem;
3874 line-height: 1.5;
3875 color: #495057;
3876 content: "Browse";
3877 background-color: #e9ecef;
3878 border-left: inherit;
3879 border-radius: 0 0.25rem 0.25rem 0;
3880}
3881
3882.custom-range {
3883 width: 100%;
3884 height: calc(1rem + 0.4rem);
3885 padding: 0;
3886 background-color: transparent;
3887 -webkit-appearance: none;
3888 -moz-appearance: none;
3889 appearance: none;
3890}
3891
3892.custom-range:focus {
3893 outline: none;
3894}
3895
3896.custom-range:focus::-webkit-slider-thumb {
3897 box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
3898}
3899
3900.custom-range:focus::-moz-range-thumb {
3901 box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
3902}
3903
3904.custom-range:focus::-ms-thumb {
3905 box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
3906}
3907
3908.custom-range::-moz-focus-outer {
3909 border: 0;
3910}
3911
3912.custom-range::-webkit-slider-thumb {
3913 width: 1rem;
3914 height: 1rem;
3915 margin-top: -0.25rem;
3916 background-color: #007bff;
3917 border: 0;
3918 border-radius: 1rem;
3919 transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
3920 -webkit-appearance: none;
3921 appearance: none;
3922}
3923
3924@media (prefers-reduced-motion: reduce) {
3925 .custom-range::-webkit-slider-thumb {
3926 transition: none;
3927 }
3928}
3929
3930.custom-range::-webkit-slider-thumb:active {
3931 background-color: #b3d7ff;
3932}
3933
3934.custom-range::-webkit-slider-runnable-track {
3935 width: 100%;
3936 height: 0.5rem;
3937 color: transparent;
3938 cursor: pointer;
3939 background-color: #dee2e6;
3940 border-color: transparent;
3941 border-radius: 1rem;
3942}
3943
3944.custom-range::-moz-range-thumb {
3945 width: 1rem;
3946 height: 1rem;
3947 background-color: #007bff;
3948 border: 0;
3949 border-radius: 1rem;
3950 transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
3951 -moz-appearance: none;
3952 appearance: none;
3953}
3954
3955@media (prefers-reduced-motion: reduce) {
3956 .custom-range::-moz-range-thumb {
3957 transition: none;
3958 }
3959}
3960
3961.custom-range::-moz-range-thumb:active {
3962 background-color: #b3d7ff;
3963}
3964
3965.custom-range::-moz-range-track {
3966 width: 100%;
3967 height: 0.5rem;
3968 color: transparent;
3969 cursor: pointer;
3970 background-color: #dee2e6;
3971 border-color: transparent;
3972 border-radius: 1rem;
3973}
3974
3975.custom-range::-ms-thumb {
3976 width: 1rem;
3977 height: 1rem;
3978 margin-top: 0;
3979 margin-right: 0.2rem;
3980 margin-left: 0.2rem;
3981 background-color: #007bff;
3982 border: 0;
3983 border-radius: 1rem;
3984 transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
3985 appearance: none;
3986}
3987
3988@media (prefers-reduced-motion: reduce) {
3989 .custom-range::-ms-thumb {
3990 transition: none;
3991 }
3992}
3993
3994.custom-range::-ms-thumb:active {
3995 background-color: #b3d7ff;
3996}
3997
3998.custom-range::-ms-track {
3999 width: 100%;
4000 height: 0.5rem;
4001 color: transparent;
4002 cursor: pointer;
4003 background-color: transparent;
4004 border-color: transparent;
4005 border-width: 0.5rem;
4006}
4007
4008.custom-range::-ms-fill-lower {
4009 background-color: #dee2e6;
4010 border-radius: 1rem;
4011}
4012
4013.custom-range::-ms-fill-upper {
4014 margin-right: 15px;
4015 background-color: #dee2e6;
4016 border-radius: 1rem;
4017}
4018
4019.custom-range:disabled::-webkit-slider-thumb {
4020 background-color: #adb5bd;
4021}
4022
4023.custom-range:disabled::-webkit-slider-runnable-track {
4024 cursor: default;
4025}
4026
4027.custom-range:disabled::-moz-range-thumb {
4028 background-color: #adb5bd;
4029}
4030
4031.custom-range:disabled::-moz-range-track {
4032 cursor: default;
4033}
4034
4035.custom-range:disabled::-ms-thumb {
4036 background-color: #adb5bd;
4037}
4038
4039.custom-control-label::before,
4040.custom-file-label,
4041.custom-select {
4042 transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
4043}
4044
4045@media (prefers-reduced-motion: reduce) {
4046 .custom-control-label::before,
4047 .custom-file-label,
4048 .custom-select {
4049 transition: none;
4050 }
4051}
4052
4053.nav {
4054 display: -ms-flexbox;
4055 display: flex;
4056 -ms-flex-wrap: wrap;
4057 flex-wrap: wrap;
4058 padding-left: 0;
4059 margin-bottom: 0;
4060 list-style: none;
4061}
4062
4063.nav-link {
4064 display: block;
4065 padding: 0.5rem 1rem;
4066}
4067
4068.nav-link:hover, .nav-link:focus {
4069 text-decoration: none;
4070}
4071
4072.nav-link.disabled {
4073 color: #6c757d;
4074 pointer-events: none;
4075 cursor: default;
4076}
4077
4078.nav-tabs {
4079 border-bottom: 1px solid #dee2e6;
4080}
4081
4082.nav-tabs .nav-item {
4083 margin-bottom: -1px;
4084}
4085
4086.nav-tabs .nav-link {
4087 border: 1px solid transparent;
4088 border-top-left-radius: 0.25rem;
4089 border-top-right-radius: 0.25rem;
4090}
4091
4092.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {
4093 border-color: #e9ecef #e9ecef #dee2e6;
4094}
4095
4096.nav-tabs .nav-link.disabled {
4097 color: #6c757d;
4098 background-color: transparent;
4099 border-color: transparent;
4100}
4101
4102.nav-tabs .nav-link.active,
4103.nav-tabs .nav-item.show .nav-link {
4104 color: #495057;
4105 background-color: #fff;
4106 border-color: #dee2e6 #dee2e6 #fff;
4107}
4108
4109.nav-tabs .dropdown-menu {
4110 margin-top: -1px;
4111 border-top-left-radius: 0;
4112 border-top-right-radius: 0;
4113}
4114
4115.nav-pills .nav-link {
4116 border-radius: 0.25rem;
4117}
4118
4119.nav-pills .nav-link.active,
4120.nav-pills .show > .nav-link {
4121 color: #fff;
4122 background-color: #007bff;
4123}
4124
4125.nav-fill .nav-item {
4126 -ms-flex: 1 1 auto;
4127 flex: 1 1 auto;
4128 text-align: center;
4129}
4130
4131.nav-justified .nav-item {
4132 -ms-flex-preferred-size: 0;
4133 flex-basis: 0;
4134 -ms-flex-positive: 1;
4135 flex-grow: 1;
4136 text-align: center;
4137}
4138
4139.tab-content > .tab-pane {
4140 display: none;
4141}
4142
4143.tab-content > .active {
4144 display: block;
4145}
4146
4147.navbar {
4148 position: relative;
4149 display: -ms-flexbox;
4150 display: flex;
4151 -ms-flex-wrap: wrap;
4152 flex-wrap: wrap;
4153 -ms-flex-align: center;
4154 align-items: center;
4155 -ms-flex-pack: justify;
4156 justify-content: space-between;
4157 padding: 0.5rem 1rem;
4158}
4159
4160.navbar > .container,
4161.navbar > .container-fluid {
4162 display: -ms-flexbox;
4163 display: flex;
4164 -ms-flex-wrap: wrap;
4165 flex-wrap: wrap;
4166 -ms-flex-align: center;
4167 align-items: center;
4168 -ms-flex-pack: justify;
4169 justify-content: space-between;
4170}
4171
4172.navbar-brand {
4173 display: inline-block;
4174 padding-top: 0.3125rem;
4175 padding-bottom: 0.3125rem;
4176 margin-right: 1rem;
4177 font-size: 1.25rem;
4178 line-height: inherit;
4179 white-space: nowrap;
4180}
4181
4182.navbar-brand:hover, .navbar-brand:focus {
4183 text-decoration: none;
4184}
4185
4186.navbar-nav {
4187 display: -ms-flexbox;
4188 display: flex;
4189 -ms-flex-direction: column;
4190 flex-direction: column;
4191 padding-left: 0;
4192 margin-bottom: 0;
4193 list-style: none;
4194}
4195
4196.navbar-nav .nav-link {
4197 padding-right: 0;
4198 padding-left: 0;
4199}
4200
4201.navbar-nav .dropdown-menu {
4202 position: static;
4203 float: none;
4204}
4205
4206.navbar-text {
4207 display: inline-block;
4208 padding-top: 0.5rem;
4209 padding-bottom: 0.5rem;
4210}
4211
4212.navbar-collapse {
4213 -ms-flex-preferred-size: 100%;
4214 flex-basis: 100%;
4215 -ms-flex-positive: 1;
4216 flex-grow: 1;
4217 -ms-flex-align: center;
4218 align-items: center;
4219}
4220
4221.navbar-toggler {
4222 padding: 0.25rem 0.75rem;
4223 font-size: 1.25rem;
4224 line-height: 1;
4225 background-color: transparent;
4226 border: 1px solid transparent;
4227 border-radius: 0.25rem;
4228}
4229
4230.navbar-toggler:hover, .navbar-toggler:focus {
4231 text-decoration: none;
4232}
4233
4234.navbar-toggler-icon {
4235 display: inline-block;
4236 width: 1.5em;
4237 height: 1.5em;
4238 vertical-align: middle;
4239 content: "";
4240 background: no-repeat center center;
4241 background-size: 100% 100%;
4242}
4243
4244@media (max-width: 575.98px) {
4245 .navbar-expand-sm > .container,
4246 .navbar-expand-sm > .container-fluid {
4247 padding-right: 0;
4248 padding-left: 0;
4249 }
4250}
4251
4252@media (min-width: 576px) {
4253 .navbar-expand-sm {
4254 -ms-flex-flow: row nowrap;
4255 flex-flow: row nowrap;
4256 -ms-flex-pack: start;
4257 justify-content: flex-start;
4258 }
4259 .navbar-expand-sm .navbar-nav {
4260 -ms-flex-direction: row;
4261 flex-direction: row;
4262 }
4263 .navbar-expand-sm .navbar-nav .dropdown-menu {
4264 position: absolute;
4265 }
4266 .navbar-expand-sm .navbar-nav .nav-link {
4267 padding-right: 0.5rem;
4268 padding-left: 0.5rem;
4269 }
4270 .navbar-expand-sm > .container,
4271 .navbar-expand-sm > .container-fluid {
4272 -ms-flex-wrap: nowrap;
4273 flex-wrap: nowrap;
4274 }
4275 .navbar-expand-sm .navbar-collapse {
4276 display: -ms-flexbox !important;
4277 display: flex !important;
4278 -ms-flex-preferred-size: auto;
4279 flex-basis: auto;
4280 }
4281 .navbar-expand-sm .navbar-toggler {
4282 display: none;
4283 }
4284}
4285
4286@media (max-width: 767.98px) {
4287 .navbar-expand-md > .container,
4288 .navbar-expand-md > .container-fluid {
4289 padding-right: 0;
4290 padding-left: 0;
4291 }
4292}
4293
4294@media (min-width: 768px) {
4295 .navbar-expand-md {
4296 -ms-flex-flow: row nowrap;
4297 flex-flow: row nowrap;
4298 -ms-flex-pack: start;
4299 justify-content: flex-start;
4300 }
4301 .navbar-expand-md .navbar-nav {
4302 -ms-flex-direction: row;
4303 flex-direction: row;
4304 }
4305 .navbar-expand-md .navbar-nav .dropdown-menu {
4306 position: absolute;
4307 }
4308 .navbar-expand-md .navbar-nav .nav-link {
4309 padding-right: 0.5rem;
4310 padding-left: 0.5rem;
4311 }
4312 .navbar-expand-md > .container,
4313 .navbar-expand-md > .container-fluid {
4314 -ms-flex-wrap: nowrap;
4315 flex-wrap: nowrap;
4316 }
4317 .navbar-expand-md .navbar-collapse {
4318 display: -ms-flexbox !important;
4319 display: flex !important;
4320 -ms-flex-preferred-size: auto;
4321 flex-basis: auto;
4322 }
4323 .navbar-expand-md .navbar-toggler {
4324 display: none;
4325 }
4326}
4327
4328@media (max-width: 991.98px) {
4329 .navbar-expand-lg > .container,
4330 .navbar-expand-lg > .container-fluid {
4331 padding-right: 0;
4332 padding-left: 0;
4333 }
4334}
4335
4336@media (min-width: 992px) {
4337 .navbar-expand-lg {
4338 -ms-flex-flow: row nowrap;
4339 flex-flow: row nowrap;
4340 -ms-flex-pack: start;
4341 justify-content: flex-start;
4342 }
4343 .navbar-expand-lg .navbar-nav {
4344 -ms-flex-direction: row;
4345 flex-direction: row;
4346 }
4347 .navbar-expand-lg .navbar-nav .dropdown-menu {
4348 position: absolute;
4349 }
4350 .navbar-expand-lg .navbar-nav .nav-link {
4351 padding-right: 0.5rem;
4352 padding-left: 0.5rem;
4353 }
4354 .navbar-expand-lg > .container,
4355 .navbar-expand-lg > .container-fluid {
4356 -ms-flex-wrap: nowrap;
4357 flex-wrap: nowrap;
4358 }
4359 .navbar-expand-lg .navbar-collapse {
4360 display: -ms-flexbox !important;
4361 display: flex !important;
4362 -ms-flex-preferred-size: auto;
4363 flex-basis: auto;
4364 }
4365 .navbar-expand-lg .navbar-toggler {
4366 display: none;
4367 }
4368}
4369
4370@media (max-width: 1199.98px) {
4371 .navbar-expand-xl > .container,
4372 .navbar-expand-xl > .container-fluid {
4373 padding-right: 0;
4374 padding-left: 0;
4375 }
4376}
4377
4378@media (min-width: 1200px) {
4379 .navbar-expand-xl {
4380 -ms-flex-flow: row nowrap;
4381 flex-flow: row nowrap;
4382 -ms-flex-pack: start;
4383 justify-content: flex-start;
4384 }
4385 .navbar-expand-xl .navbar-nav {
4386 -ms-flex-direction: row;
4387 flex-direction: row;
4388 }
4389 .navbar-expand-xl .navbar-nav .dropdown-menu {
4390 position: absolute;
4391 }
4392 .navbar-expand-xl .navbar-nav .nav-link {
4393 padding-right: 0.5rem;
4394 padding-left: 0.5rem;
4395 }
4396 .navbar-expand-xl > .container,
4397 .navbar-expand-xl > .container-fluid {
4398 -ms-flex-wrap: nowrap;
4399 flex-wrap: nowrap;
4400 }
4401 .navbar-expand-xl .navbar-collapse {
4402 display: -ms-flexbox !important;
4403 display: flex !important;
4404 -ms-flex-preferred-size: auto;
4405 flex-basis: auto;
4406 }
4407 .navbar-expand-xl .navbar-toggler {
4408 display: none;
4409 }
4410}
4411
4412.navbar-expand {
4413 -ms-flex-flow: row nowrap;
4414 flex-flow: row nowrap;
4415 -ms-flex-pack: start;
4416 justify-content: flex-start;
4417}
4418
4419.navbar-expand > .container,
4420.navbar-expand > .container-fluid {
4421 padding-right: 0;
4422 padding-left: 0;
4423}
4424
4425.navbar-expand .navbar-nav {
4426 -ms-flex-direction: row;
4427 flex-direction: row;
4428}
4429
4430.navbar-expand .navbar-nav .dropdown-menu {
4431 position: absolute;
4432}
4433
4434.navbar-expand .navbar-nav .nav-link {
4435 padding-right: 0.5rem;
4436 padding-left: 0.5rem;
4437}
4438
4439.navbar-expand > .container,
4440.navbar-expand > .container-fluid {
4441 -ms-flex-wrap: nowrap;
4442 flex-wrap: nowrap;
4443}
4444
4445.navbar-expand .navbar-collapse {
4446 display: -ms-flexbox !important;
4447 display: flex !important;
4448 -ms-flex-preferred-size: auto;
4449 flex-basis: auto;
4450}
4451
4452.navbar-expand .navbar-toggler {
4453 display: none;
4454}
4455
4456.navbar-light .navbar-brand {
4457 color: rgba(0, 0, 0, 0.9);
4458}
4459
4460.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {
4461 color: rgba(0, 0, 0, 0.9);
4462}
4463
4464.navbar-light .navbar-nav .nav-link {
4465 color: rgba(0, 0, 0, 0.5);
4466}
4467
4468.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {
4469 color: rgba(0, 0, 0, 0.7);
4470}
4471
4472.navbar-light .navbar-nav .nav-link.disabled {
4473 color: rgba(0, 0, 0, 0.3);
4474}
4475
4476.navbar-light .navbar-nav .show > .nav-link,
4477.navbar-light .navbar-nav .active > .nav-link,
4478.navbar-light .navbar-nav .nav-link.show,
4479.navbar-light .navbar-nav .nav-link.active {
4480 color: rgba(0, 0, 0, 0.9);
4481}
4482
4483.navbar-light .navbar-toggler {
4484 color: rgba(0, 0, 0, 0.5);
4485 border-color: rgba(0, 0, 0, 0.1);
4486}
4487
4488.navbar-light .navbar-toggler-icon {
4489 background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
4490}
4491
4492.navbar-light .navbar-text {
4493 color: rgba(0, 0, 0, 0.5);
4494}
4495
4496.navbar-light .navbar-text a {
4497 color: rgba(0, 0, 0, 0.9);
4498}
4499
4500.navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus {
4501 color: rgba(0, 0, 0, 0.9);
4502}
4503
4504.navbar-dark .navbar-brand {
4505 color: #fff;
4506}
4507
4508.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {
4509 color: #fff;
4510}
4511
4512.navbar-dark .navbar-nav .nav-link {
4513 color: rgba(255, 255, 255, 0.5);
4514}
4515
4516.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {
4517 color: rgba(255, 255, 255, 0.75);
4518}
4519
4520.navbar-dark .navbar-nav .nav-link.disabled {
4521 color: rgba(255, 255, 255, 0.25);
4522}
4523
4524.navbar-dark .navbar-nav .show > .nav-link,
4525.navbar-dark .navbar-nav .active > .nav-link,
4526.navbar-dark .navbar-nav .nav-link.show,
4527.navbar-dark .navbar-nav .nav-link.active {
4528 color: #fff;
4529}
4530
4531.navbar-dark .navbar-toggler {
4532 color: rgba(255, 255, 255, 0.5);
4533 border-color: rgba(255, 255, 255, 0.1);
4534}
4535
4536.navbar-dark .navbar-toggler-icon {
4537 background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
4538}
4539
4540.navbar-dark .navbar-text {
4541 color: rgba(255, 255, 255, 0.5);
4542}
4543
4544.navbar-dark .navbar-text a {
4545 color: #fff;
4546}
4547
4548.navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus {
4549 color: #fff;
4550}
4551
4552.card {
4553 position: relative;
4554 display: -ms-flexbox;
4555 display: flex;
4556 -ms-flex-direction: column;
4557 flex-direction: column;
4558 min-width: 0;
4559 word-wrap: break-word;
4560 background-color: #fff;
4561 background-clip: border-box;
4562 border: 1px solid rgba(0, 0, 0, 0.125);
4563 border-radius: 0.25rem;
4564}
4565
4566.card > hr {
4567 margin-right: 0;
4568 margin-left: 0;
4569}
4570
4571.card > .list-group:first-child .list-group-item:first-child {
4572 border-top-left-radius: 0.25rem;
4573 border-top-right-radius: 0.25rem;
4574}
4575
4576.card > .list-group:last-child .list-group-item:last-child {
4577 border-bottom-right-radius: 0.25rem;
4578 border-bottom-left-radius: 0.25rem;
4579}
4580
4581.card-body {
4582 -ms-flex: 1 1 auto;
4583 flex: 1 1 auto;
4584 padding: 1.25rem;
4585}
4586
4587.card-title {
4588 margin-bottom: 0.75rem;
4589}
4590
4591.card-subtitle {
4592 margin-top: -0.375rem;
4593 margin-bottom: 0;
4594}
4595
4596.card-text:last-child {
4597 margin-bottom: 0;
4598}
4599
4600.card-link:hover {
4601 text-decoration: none;
4602}
4603
4604.card-link + .card-link {
4605 margin-left: 1.25rem;
4606}
4607
4608.card-header {
4609 padding: 0.75rem 1.25rem;
4610 margin-bottom: 0;
4611 background-color: rgba(0, 0, 0, 0.03);
4612 border-bottom: 1px solid rgba(0, 0, 0, 0.125);
4613}
4614
4615.card-header:first-child {
4616 border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;
4617}
4618
4619.card-header + .list-group .list-group-item:first-child {
4620 border-top: 0;
4621}
4622
4623.card-footer {
4624 padding: 0.75rem 1.25rem;
4625 background-color: rgba(0, 0, 0, 0.03);
4626 border-top: 1px solid rgba(0, 0, 0, 0.125);
4627}
4628
4629.card-footer:last-child {
4630 border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);
4631}
4632
4633.card-header-tabs {
4634 margin-right: -0.625rem;
4635 margin-bottom: -0.75rem;
4636 margin-left: -0.625rem;
4637 border-bottom: 0;
4638}
4639
4640.card-header-pills {
4641 margin-right: -0.625rem;
4642 margin-left: -0.625rem;
4643}
4644
4645.card-img-overlay {
4646 position: absolute;
4647 top: 0;
4648 right: 0;
4649 bottom: 0;
4650 left: 0;
4651 padding: 1.25rem;
4652}
4653
4654.card-img {
4655 width: 100%;
4656 border-radius: calc(0.25rem - 1px);
4657}
4658
4659.card-img-top {
4660 width: 100%;
4661 border-top-left-radius: calc(0.25rem - 1px);
4662 border-top-right-radius: calc(0.25rem - 1px);
4663}
4664
4665.card-img-bottom {
4666 width: 100%;
4667 border-bottom-right-radius: calc(0.25rem - 1px);
4668 border-bottom-left-radius: calc(0.25rem - 1px);
4669}
4670
4671.card-deck {
4672 display: -ms-flexbox;
4673 display: flex;
4674 -ms-flex-direction: column;
4675 flex-direction: column;
4676}
4677
4678.card-deck .card {
4679 margin-bottom: 15px;
4680}
4681
4682@media (min-width: 576px) {
4683 .card-deck {
4684 -ms-flex-flow: row wrap;
4685 flex-flow: row wrap;
4686 margin-right: -15px;
4687 margin-left: -15px;
4688 }
4689 .card-deck .card {
4690 display: -ms-flexbox;
4691 display: flex;
4692 -ms-flex: 1 0 0%;
4693 flex: 1 0 0%;
4694 -ms-flex-direction: column;
4695 flex-direction: column;
4696 margin-right: 15px;
4697 margin-bottom: 0;
4698 margin-left: 15px;
4699 }
4700}
4701
4702.card-group {
4703 display: -ms-flexbox;
4704 display: flex;
4705 -ms-flex-direction: column;
4706 flex-direction: column;
4707}
4708
4709.card-group > .card {
4710 margin-bottom: 15px;
4711}
4712
4713@media (min-width: 576px) {
4714 .card-group {
4715 -ms-flex-flow: row wrap;
4716 flex-flow: row wrap;
4717 }
4718 .card-group > .card {
4719 -ms-flex: 1 0 0%;
4720 flex: 1 0 0%;
4721 margin-bottom: 0;
4722 }
4723 .card-group > .card + .card {
4724 margin-left: 0;
4725 border-left: 0;
4726 }
4727 .card-group > .card:not(:last-child) {
4728 border-top-right-radius: 0;
4729 border-bottom-right-radius: 0;
4730 }
4731 .card-group > .card:not(:last-child) .card-img-top,
4732 .card-group > .card:not(:last-child) .card-header {
4733 border-top-right-radius: 0;
4734 }
4735 .card-group > .card:not(:last-child) .card-img-bottom,
4736 .card-group > .card:not(:last-child) .card-footer {
4737 border-bottom-right-radius: 0;
4738 }
4739 .card-group > .card:not(:first-child) {
4740 border-top-left-radius: 0;
4741 border-bottom-left-radius: 0;
4742 }
4743 .card-group > .card:not(:first-child) .card-img-top,
4744 .card-group > .card:not(:first-child) .card-header {
4745 border-top-left-radius: 0;
4746 }
4747 .card-group > .card:not(:first-child) .card-img-bottom,
4748 .card-group > .card:not(:first-child) .card-footer {
4749 border-bottom-left-radius: 0;
4750 }
4751}
4752
4753.card-columns .card {
4754 margin-bottom: 0.75rem;
4755}
4756
4757@media (min-width: 576px) {
4758 .card-columns {
4759 -webkit-column-count: 3;
4760 -moz-column-count: 3;
4761 column-count: 3;
4762 -webkit-column-gap: 1.25rem;
4763 -moz-column-gap: 1.25rem;
4764 column-gap: 1.25rem;
4765 orphans: 1;
4766 widows: 1;
4767 }
4768 .card-columns .card {
4769 display: inline-block;
4770 width: 100%;
4771 }
4772}
4773
4774.accordion > .card {
4775 overflow: hidden;
4776}
4777
4778.accordion > .card:not(:first-of-type) .card-header:first-child {
4779 border-radius: 0;
4780}
4781
4782.accordion > .card:not(:first-of-type):not(:last-of-type) {
4783 border-bottom: 0;
4784 border-radius: 0;
4785}
4786
4787.accordion > .card:first-of-type {
4788 border-bottom: 0;
4789 border-bottom-right-radius: 0;
4790 border-bottom-left-radius: 0;
4791}
4792
4793.accordion > .card:last-of-type {
4794 border-top-left-radius: 0;
4795 border-top-right-radius: 0;
4796}
4797
4798.accordion > .card .card-header {
4799 margin-bottom: -1px;
4800}
4801
4802.breadcrumb {
4803 display: -ms-flexbox;
4804 display: flex;
4805 -ms-flex-wrap: wrap;
4806 flex-wrap: wrap;
4807 padding: 0.75rem 1rem;
4808 margin-bottom: 1rem;
4809 list-style: none;
4810 background-color: #e9ecef;
4811 border-radius: 0.25rem;
4812}
4813
4814.breadcrumb-item + .breadcrumb-item {
4815 padding-left: 0.5rem;
4816}
4817
4818.breadcrumb-item + .breadcrumb-item::before {
4819 display: inline-block;
4820 padding-right: 0.5rem;
4821 color: #6c757d;
4822 content: "/";
4823}
4824
4825.breadcrumb-item + .breadcrumb-item:hover::before {
4826 text-decoration: underline;
4827}
4828
4829.breadcrumb-item + .breadcrumb-item:hover::before {
4830 text-decoration: none;
4831}
4832
4833.breadcrumb-item.active {
4834 color: #6c757d;
4835}
4836
4837.pagination {
4838 display: -ms-flexbox;
4839 display: flex;
4840 padding-left: 0;
4841 list-style: none;
4842 border-radius: 0.25rem;
4843}
4844
4845.page-link {
4846 position: relative;
4847 display: block;
4848 padding: 0.5rem 0.75rem;
4849 margin-left: -1px;
4850 line-height: 1.25;
4851 color: #007bff;
4852 background-color: #fff;
4853 border: 1px solid #dee2e6;
4854}
4855
4856.page-link:hover {
4857 z-index: 2;
4858 color: #0056b3;
4859 text-decoration: none;
4860 background-color: #e9ecef;
4861 border-color: #dee2e6;
4862}
4863
4864.page-link:focus {
4865 z-index: 2;
4866 outline: 0;
4867 box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
4868}
4869
4870.page-item:first-child .page-link {
4871 margin-left: 0;
4872 border-top-left-radius: 0.25rem;
4873 border-bottom-left-radius: 0.25rem;
4874}
4875
4876.page-item:last-child .page-link {
4877 border-top-right-radius: 0.25rem;
4878 border-bottom-right-radius: 0.25rem;
4879}
4880
4881.page-item.active .page-link {
4882 z-index: 1;
4883 color: #fff;
4884 background-color: #007bff;
4885 border-color: #007bff;
4886}
4887
4888.page-item.disabled .page-link {
4889 color: #6c757d;
4890 pointer-events: none;
4891 cursor: auto;
4892 background-color: #fff;
4893 border-color: #dee2e6;
4894}
4895
4896.pagination-lg .page-link {
4897 padding: 0.75rem 1.5rem;
4898 font-size: 1.25rem;
4899 line-height: 1.5;
4900}
4901
4902.pagination-lg .page-item:first-child .page-link {
4903 border-top-left-radius: 0.3rem;
4904 border-bottom-left-radius: 0.3rem;
4905}
4906
4907.pagination-lg .page-item:last-child .page-link {
4908 border-top-right-radius: 0.3rem;
4909 border-bottom-right-radius: 0.3rem;
4910}
4911
4912.pagination-sm .page-link {
4913 padding: 0.25rem 0.5rem;
4914 font-size: 0.875rem;
4915 line-height: 1.5;
4916}
4917
4918.pagination-sm .page-item:first-child .page-link {
4919 border-top-left-radius: 0.2rem;
4920 border-bottom-left-radius: 0.2rem;
4921}
4922
4923.pagination-sm .page-item:last-child .page-link {
4924 border-top-right-radius: 0.2rem;
4925 border-bottom-right-radius: 0.2rem;
4926}
4927
4928.badge {
4929 display: inline-block;
4930 padding: 0.25em 0.4em;
4931 font-size: 75%;
4932 font-weight: 700;
4933 line-height: 1;
4934 text-align: center;
4935 white-space: nowrap;
4936 vertical-align: baseline;
4937 border-radius: 0.25rem;
4938 transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
4939}
4940
4941@media (prefers-reduced-motion: reduce) {
4942 .badge {
4943 transition: none;
4944 }
4945}
4946
4947a.badge:hover, a.badge:focus {
4948 text-decoration: none;
4949}
4950
4951.badge:empty {
4952 display: none;
4953}
4954
4955.btn .badge {
4956 position: relative;
4957 top: -1px;
4958}
4959
4960.badge-pill {
4961 padding-right: 0.6em;
4962 padding-left: 0.6em;
4963 border-radius: 10rem;
4964}
4965
4966.badge-primary {
4967 color: #fff;
4968 background-color: #007bff;
4969}
4970
4971a.badge-primary:hover, a.badge-primary:focus {
4972 color: #fff;
4973 background-color: #0062cc;
4974}
4975
4976a.badge-primary:focus, a.badge-primary.focus {
4977 outline: 0;
4978 box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);
4979}
4980
4981.badge-secondary {
4982 color: #fff;
4983 background-color: #6c757d;
4984}
4985
4986a.badge-secondary:hover, a.badge-secondary:focus {
4987 color: #fff;
4988 background-color: #545b62;
4989}
4990
4991a.badge-secondary:focus, a.badge-secondary.focus {
4992 outline: 0;
4993 box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);
4994}
4995
4996.badge-success {
4997 color: #fff;
4998 background-color: #28a745;
4999}
5000
5001a.badge-success:hover, a.badge-success:focus {
5002 color: #fff;
5003 background-color: #1e7e34;
5004}
5005
5006a.badge-success:focus, a.badge-success.focus {
5007 outline: 0;
5008 box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);
5009}
5010
5011.badge-info {
5012 color: #fff;
5013 background-color: #17a2b8;
5014}
5015
5016a.badge-info:hover, a.badge-info:focus {
5017 color: #fff;
5018 background-color: #117a8b;
5019}
5020
5021a.badge-info:focus, a.badge-info.focus {
5022 outline: 0;
5023 box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);
5024}
5025
5026.badge-warning {
5027 color: #212529;
5028 background-color: #ffc107;
5029}
5030
5031a.badge-warning:hover, a.badge-warning:focus {
5032 color: #212529;
5033 background-color: #d39e00;
5034}
5035
5036a.badge-warning:focus, a.badge-warning.focus {
5037 outline: 0;
5038 box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);
5039}
5040
5041.badge-danger {
5042 color: #fff;
5043 background-color: #dc3545;
5044}
5045
5046a.badge-danger:hover, a.badge-danger:focus {
5047 color: #fff;
5048 background-color: #bd2130;
5049}
5050
5051a.badge-danger:focus, a.badge-danger.focus {
5052 outline: 0;
5053 box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);
5054}
5055
5056.badge-light {
5057 color: #212529;
5058 background-color: #f8f9fa;
5059}
5060
5061a.badge-light:hover, a.badge-light:focus {
5062 color: #212529;
5063 background-color: #dae0e5;
5064}
5065
5066a.badge-light:focus, a.badge-light.focus {
5067 outline: 0;
5068 box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);
5069}
5070
5071.badge-dark {
5072 color: #fff;
5073 background-color: #343a40;
5074}
5075
5076a.badge-dark:hover, a.badge-dark:focus {
5077 color: #fff;
5078 background-color: #1d2124;
5079}
5080
5081a.badge-dark:focus, a.badge-dark.focus {
5082 outline: 0;
5083 box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);
5084}
5085
5086.jumbotron {
5087 padding: 2rem 1rem;
5088 margin-bottom: 2rem;
5089 background-color: #e9ecef;
5090 border-radius: 0.3rem;
5091}
5092
5093@media (min-width: 576px) {
5094 .jumbotron {
5095 padding: 4rem 2rem;
5096 }
5097}
5098
5099.jumbotron-fluid {
5100 padding-right: 0;
5101 padding-left: 0;
5102 border-radius: 0;
5103}
5104
5105.alert {
5106 position: relative;
5107 padding: 0.75rem 1.25rem;
5108 margin-bottom: 1rem;
5109 border: 1px solid transparent;
5110 border-radius: 0.25rem;
5111}
5112
5113.alert-heading {
5114 color: inherit;
5115}
5116
5117.alert-link {
5118 font-weight: 700;
5119}
5120
5121.alert-dismissible {
5122 padding-right: 4rem;
5123}
5124
5125.alert-dismissible .close {
5126 position: absolute;
5127 top: 0;
5128 right: 0;
5129 padding: 0.75rem 1.25rem;
5130 color: inherit;
5131}
5132
5133.alert-primary {
5134 color: #004085;
5135 background-color: #cce5ff;
5136 border-color: #b8daff;
5137}
5138
5139.alert-primary hr {
5140 border-top-color: #9fcdff;
5141}
5142
5143.alert-primary .alert-link {
5144 color: #002752;
5145}
5146
5147.alert-secondary {
5148 color: #383d41;
5149 background-color: #e2e3e5;
5150 border-color: #d6d8db;
5151}
5152
5153.alert-secondary hr {
5154 border-top-color: #c8cbcf;
5155}
5156
5157.alert-secondary .alert-link {
5158 color: #202326;
5159}
5160
5161.alert-success {
5162 color: #155724;
5163 background-color: #d4edda;
5164 border-color: #c3e6cb;
5165}
5166
5167.alert-success hr {
5168 border-top-color: #b1dfbb;
5169}
5170
5171.alert-success .alert-link {
5172 color: #0b2e13;
5173}
5174
5175.alert-info {
5176 color: #0c5460;
5177 background-color: #d1ecf1;
5178 border-color: #bee5eb;
5179}
5180
5181.alert-info hr {
5182 border-top-color: #abdde5;
5183}
5184
5185.alert-info .alert-link {
5186 color: #062c33;
5187}
5188
5189.alert-warning {
5190 color: #856404;
5191 background-color: #fff3cd;
5192 border-color: #ffeeba;
5193}
5194
5195.alert-warning hr {
5196 border-top-color: #ffe8a1;
5197}
5198
5199.alert-warning .alert-link {
5200 color: #533f03;
5201}
5202
5203.alert-danger {
5204 color: #721c24;
5205 background-color: #f8d7da;
5206 border-color: #f5c6cb;
5207}
5208
5209.alert-danger hr {
5210 border-top-color: #f1b0b7;
5211}
5212
5213.alert-danger .alert-link {
5214 color: #491217;
5215}
5216
5217.alert-light {
5218 color: #818182;
5219 background-color: #fefefe;
5220 border-color: #fdfdfe;
5221}
5222
5223.alert-light hr {
5224 border-top-color: #ececf6;
5225}
5226
5227.alert-light .alert-link {
5228 color: #686868;
5229}
5230
5231.alert-dark {
5232 color: #1b1e21;
5233 background-color: #d6d8d9;
5234 border-color: #c6c8ca;
5235}
5236
5237.alert-dark hr {
5238 border-top-color: #b9bbbe;
5239}
5240
5241.alert-dark .alert-link {
5242 color: #040505;
5243}
5244
5245@-webkit-keyframes progress-bar-stripes {
5246 from {
5247 background-position: 1rem 0;
5248 }
5249 to {
5250 background-position: 0 0;
5251 }
5252}
5253
5254@keyframes progress-bar-stripes {
5255 from {
5256 background-position: 1rem 0;
5257 }
5258 to {
5259 background-position: 0 0;
5260 }
5261}
5262
5263.progress {
5264 display: -ms-flexbox;
5265 display: flex;
5266 height: 1rem;
5267 overflow: hidden;
5268 font-size: 0.75rem;
5269 background-color: #e9ecef;
5270 border-radius: 0.25rem;
5271}
5272
5273.progress-bar {
5274 display: -ms-flexbox;
5275 display: flex;
5276 -ms-flex-direction: column;
5277 flex-direction: column;
5278 -ms-flex-pack: center;
5279 justify-content: center;
5280 color: #fff;
5281 text-align: center;
5282 white-space: nowrap;
5283 background-color: #007bff;
5284 transition: width 0.6s ease;
5285}
5286
5287@media (prefers-reduced-motion: reduce) {
5288 .progress-bar {
5289 transition: none;
5290 }
5291}
5292
5293.progress-bar-striped {
5294 background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5295 background-size: 1rem 1rem;
5296}
5297
5298.progress-bar-animated {
5299 -webkit-animation: progress-bar-stripes 1s linear infinite;
5300 animation: progress-bar-stripes 1s linear infinite;
5301}
5302
5303@media (prefers-reduced-motion: reduce) {
5304 .progress-bar-animated {
5305 -webkit-animation: none;
5306 animation: none;
5307 }
5308}
5309
5310.media {
5311 display: -ms-flexbox;
5312 display: flex;
5313 -ms-flex-align: start;
5314 align-items: flex-start;
5315}
5316
5317.media-body {
5318 -ms-flex: 1;
5319 flex: 1;
5320}
5321
5322.list-group {
5323 display: -ms-flexbox;
5324 display: flex;
5325 -ms-flex-direction: column;
5326 flex-direction: column;
5327 padding-left: 0;
5328 margin-bottom: 0;
5329}
5330
5331.list-group-item-action {
5332 width: 100%;
5333 color: #495057;
5334 text-align: inherit;
5335}
5336
5337.list-group-item-action:hover, .list-group-item-action:focus {
5338 z-index: 1;
5339 color: #495057;
5340 text-decoration: none;
5341 background-color: #f8f9fa;
5342}
5343
5344.list-group-item-action:active {
5345 color: #212529;
5346 background-color: #e9ecef;
5347}
5348
5349.list-group-item {
5350 position: relative;
5351 display: block;
5352 padding: 0.75rem 1.25rem;
5353 margin-bottom: -1px;
5354 background-color: #fff;
5355 border: 1px solid rgba(0, 0, 0, 0.125);
5356}
5357
5358.list-group-item:first-child {
5359 border-top-left-radius: 0.25rem;
5360 border-top-right-radius: 0.25rem;
5361}
5362
5363.list-group-item:last-child {
5364 margin-bottom: 0;
5365 border-bottom-right-radius: 0.25rem;
5366 border-bottom-left-radius: 0.25rem;
5367}
5368
5369.list-group-item.disabled, .list-group-item:disabled {
5370 color: #6c757d;
5371 pointer-events: none;
5372 background-color: #fff;
5373}
5374
5375.list-group-item.active {
5376 z-index: 2;
5377 color: #fff;
5378 background-color: #007bff;
5379 border-color: #007bff;
5380}
5381
5382.list-group-horizontal {
5383 -ms-flex-direction: row;
5384 flex-direction: row;
5385}
5386
5387.list-group-horizontal .list-group-item {
5388 margin-right: -1px;
5389 margin-bottom: 0;
5390}
5391
5392.list-group-horizontal .list-group-item:first-child {
5393 border-top-left-radius: 0.25rem;
5394 border-bottom-left-radius: 0.25rem;
5395 border-top-right-radius: 0;
5396}
5397
5398.list-group-horizontal .list-group-item:last-child {
5399 margin-right: 0;
5400 border-top-right-radius: 0.25rem;
5401 border-bottom-right-radius: 0.25rem;
5402 border-bottom-left-radius: 0;
5403}
5404
5405@media (min-width: 576px) {
5406 .list-group-horizontal-sm {
5407 -ms-flex-direction: row;
5408 flex-direction: row;
5409 }
5410 .list-group-horizontal-sm .list-group-item {
5411 margin-right: -1px;
5412 margin-bottom: 0;
5413 }
5414 .list-group-horizontal-sm .list-group-item:first-child {
5415 border-top-left-radius: 0.25rem;
5416 border-bottom-left-radius: 0.25rem;
5417 border-top-right-radius: 0;
5418 }
5419 .list-group-horizontal-sm .list-group-item:last-child {
5420 margin-right: 0;
5421 border-top-right-radius: 0.25rem;
5422 border-bottom-right-radius: 0.25rem;
5423 border-bottom-left-radius: 0;
5424 }
5425}
5426
5427@media (min-width: 768px) {
5428 .list-group-horizontal-md {
5429 -ms-flex-direction: row;
5430 flex-direction: row;
5431 }
5432 .list-group-horizontal-md .list-group-item {
5433 margin-right: -1px;
5434 margin-bottom: 0;
5435 }
5436 .list-group-horizontal-md .list-group-item:first-child {
5437 border-top-left-radius: 0.25rem;
5438 border-bottom-left-radius: 0.25rem;
5439 border-top-right-radius: 0;
5440 }
5441 .list-group-horizontal-md .list-group-item:last-child {
5442 margin-right: 0;
5443 border-top-right-radius: 0.25rem;
5444 border-bottom-right-radius: 0.25rem;
5445 border-bottom-left-radius: 0;
5446 }
5447}
5448
5449@media (min-width: 992px) {
5450 .list-group-horizontal-lg {
5451 -ms-flex-direction: row;
5452 flex-direction: row;
5453 }
5454 .list-group-horizontal-lg .list-group-item {
5455 margin-right: -1px;
5456 margin-bottom: 0;
5457 }
5458 .list-group-horizontal-lg .list-group-item:first-child {
5459 border-top-left-radius: 0.25rem;
5460 border-bottom-left-radius: 0.25rem;
5461 border-top-right-radius: 0;
5462 }
5463 .list-group-horizontal-lg .list-group-item:last-child {
5464 margin-right: 0;
5465 border-top-right-radius: 0.25rem;
5466 border-bottom-right-radius: 0.25rem;
5467 border-bottom-left-radius: 0;
5468 }
5469}
5470
5471@media (min-width: 1200px) {
5472 .list-group-horizontal-xl {
5473 -ms-flex-direction: row;
5474 flex-direction: row;
5475 }
5476 .list-group-horizontal-xl .list-group-item {
5477 margin-right: -1px;
5478 margin-bottom: 0;
5479 }
5480 .list-group-horizontal-xl .list-group-item:first-child {
5481 border-top-left-radius: 0.25rem;
5482 border-bottom-left-radius: 0.25rem;
5483 border-top-right-radius: 0;
5484 }
5485 .list-group-horizontal-xl .list-group-item:last-child {
5486 margin-right: 0;
5487 border-top-right-radius: 0.25rem;
5488 border-bottom-right-radius: 0.25rem;
5489 border-bottom-left-radius: 0;
5490 }
5491}
5492
5493.list-group-flush .list-group-item {
5494 border-right: 0;
5495 border-left: 0;
5496 border-radius: 0;
5497}
5498
5499.list-group-flush .list-group-item:last-child {
5500 margin-bottom: -1px;
5501}
5502
5503.list-group-flush:first-child .list-group-item:first-child {
5504 border-top: 0;
5505}
5506
5507.list-group-flush:last-child .list-group-item:last-child {
5508 margin-bottom: 0;
5509 border-bottom: 0;
5510}
5511
5512.list-group-item-primary {
5513 color: #004085;
5514 background-color: #b8daff;
5515}
5516
5517.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {
5518 color: #004085;
5519 background-color: #9fcdff;
5520}
5521
5522.list-group-item-primary.list-group-item-action.active {
5523 color: #fff;
5524 background-color: #004085;
5525 border-color: #004085;
5526}
5527
5528.list-group-item-secondary {
5529 color: #383d41;
5530 background-color: #d6d8db;
5531}
5532
5533.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {
5534 color: #383d41;
5535 background-color: #c8cbcf;
5536}
5537
5538.list-group-item-secondary.list-group-item-action.active {
5539 color: #fff;
5540 background-color: #383d41;
5541 border-color: #383d41;
5542}
5543
5544.list-group-item-success {
5545 color: #155724;
5546 background-color: #c3e6cb;
5547}
5548
5549.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {
5550 color: #155724;
5551 background-color: #b1dfbb;
5552}
5553
5554.list-group-item-success.list-group-item-action.active {
5555 color: #fff;
5556 background-color: #155724;
5557 border-color: #155724;
5558}
5559
5560.list-group-item-info {
5561 color: #0c5460;
5562 background-color: #bee5eb;
5563}
5564
5565.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {
5566 color: #0c5460;
5567 background-color: #abdde5;
5568}
5569
5570.list-group-item-info.list-group-item-action.active {
5571 color: #fff;
5572 background-color: #0c5460;
5573 border-color: #0c5460;
5574}
5575
5576.list-group-item-warning {
5577 color: #856404;
5578 background-color: #ffeeba;
5579}
5580
5581.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {
5582 color: #856404;
5583 background-color: #ffe8a1;
5584}
5585
5586.list-group-item-warning.list-group-item-action.active {
5587 color: #fff;
5588 background-color: #856404;
5589 border-color: #856404;
5590}
5591
5592.list-group-item-danger {
5593 color: #721c24;
5594 background-color: #f5c6cb;
5595}
5596
5597.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {
5598 color: #721c24;
5599 background-color: #f1b0b7;
5600}
5601
5602.list-group-item-danger.list-group-item-action.active {
5603 color: #fff;
5604 background-color: #721c24;
5605 border-color: #721c24;
5606}
5607
5608.list-group-item-light {
5609 color: #818182;
5610 background-color: #fdfdfe;
5611}
5612
5613.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {
5614 color: #818182;
5615 background-color: #ececf6;
5616}
5617
5618.list-group-item-light.list-group-item-action.active {
5619 color: #fff;
5620 background-color: #818182;
5621 border-color: #818182;
5622}
5623
5624.list-group-item-dark {
5625 color: #1b1e21;
5626 background-color: #c6c8ca;
5627}
5628
5629.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {
5630 color: #1b1e21;
5631 background-color: #b9bbbe;
5632}
5633
5634.list-group-item-dark.list-group-item-action.active {
5635 color: #fff;
5636 background-color: #1b1e21;
5637 border-color: #1b1e21;
5638}
5639
5640.close {
5641 float: right;
5642 font-size: 1.5rem;
5643 font-weight: 700;
5644 line-height: 1;
5645 color: #000;
5646 text-shadow: 0 1px 0 #fff;
5647 opacity: .5;
5648}
5649
5650.close:hover {
5651 color: #000;
5652 text-decoration: none;
5653}
5654
5655.close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus {
5656 opacity: .75;
5657}
5658
5659button.close {
5660 padding: 0;
5661 background-color: transparent;
5662 border: 0;
5663 -webkit-appearance: none;
5664 -moz-appearance: none;
5665 appearance: none;
5666}
5667
5668a.close.disabled {
5669 pointer-events: none;
5670}
5671
5672.toast {
5673 max-width: 350px;
5674 overflow: hidden;
5675 font-size: 0.875rem;
5676 background-color: rgba(255, 255, 255, 0.85);
5677 background-clip: padding-box;
5678 border: 1px solid rgba(0, 0, 0, 0.1);
5679 box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1);
5680 -webkit-backdrop-filter: blur(10px);
5681 backdrop-filter: blur(10px);
5682 opacity: 0;
5683 border-radius: 0.25rem;
5684}
5685
5686.toast:not(:last-child) {
5687 margin-bottom: 0.75rem;
5688}
5689
5690.toast.showing {
5691 opacity: 1;
5692}
5693
5694.toast.show {
5695 display: block;
5696 opacity: 1;
5697}
5698
5699.toast.hide {
5700 display: none;
5701}
5702
5703.toast-header {
5704 display: -ms-flexbox;
5705 display: flex;
5706 -ms-flex-align: center;
5707 align-items: center;
5708 padding: 0.25rem 0.75rem;
5709 color: #6c757d;
5710 background-color: rgba(255, 255, 255, 0.85);
5711 background-clip: padding-box;
5712 border-bottom: 1px solid rgba(0, 0, 0, 0.05);
5713}
5714
5715.toast-body {
5716 padding: 0.75rem;
5717}
5718
5719.modal-open {
5720 overflow: hidden;
5721}
5722
5723.modal-open .modal {
5724 overflow-x: hidden;
5725 overflow-y: auto;
5726}
5727
5728.modal {
5729 position: fixed;
5730 top: 0;
5731 left: 0;
5732 z-index: 1050;
5733 display: none;
5734 width: 100%;
5735 height: 100%;
5736 overflow: hidden;
5737 outline: 0;
5738}
5739
5740.modal-dialog {
5741 position: relative;
5742 width: auto;
5743 margin: 0.5rem;
5744 pointer-events: none;
5745}
5746
5747.modal.fade .modal-dialog {
5748 transition: -webkit-transform 0.3s ease-out;
5749 transition: transform 0.3s ease-out;
5750 transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out;
5751 -webkit-transform: translate(0, -50px);
5752 transform: translate(0, -50px);
5753}
5754
5755@media (prefers-reduced-motion: reduce) {
5756 .modal.fade .modal-dialog {
5757 transition: none;
5758 }
5759}
5760
5761.modal.show .modal-dialog {
5762 -webkit-transform: none;
5763 transform: none;
5764}
5765
5766.modal-dialog-scrollable {
5767 display: -ms-flexbox;
5768 display: flex;
5769 max-height: calc(100% - 1rem);
5770}
5771
5772.modal-dialog-scrollable .modal-content {
5773 max-height: calc(100vh - 1rem);
5774 overflow: hidden;
5775}
5776
5777.modal-dialog-scrollable .modal-header,
5778.modal-dialog-scrollable .modal-footer {
5779 -ms-flex-negative: 0;
5780 flex-shrink: 0;
5781}
5782
5783.modal-dialog-scrollable .modal-body {
5784 overflow-y: auto;
5785}
5786
5787.modal-dialog-centered {
5788 display: -ms-flexbox;
5789 display: flex;
5790 -ms-flex-align: center;
5791 align-items: center;
5792 min-height: calc(100% - 1rem);
5793}
5794
5795.modal-dialog-centered::before {
5796 display: block;
5797 height: calc(100vh - 1rem);
5798 content: "";
5799}
5800
5801.modal-dialog-centered.modal-dialog-scrollable {
5802 -ms-flex-direction: column;
5803 flex-direction: column;
5804 -ms-flex-pack: center;
5805 justify-content: center;
5806 height: 100%;
5807}
5808
5809.modal-dialog-centered.modal-dialog-scrollable .modal-content {
5810 max-height: none;
5811}
5812
5813.modal-dialog-centered.modal-dialog-scrollable::before {
5814 content: none;
5815}
5816
5817.modal-content {
5818 position: relative;
5819 display: -ms-flexbox;
5820 display: flex;
5821 -ms-flex-direction: column;
5822 flex-direction: column;
5823 width: 100%;
5824 pointer-events: auto;
5825 background-color: #fff;
5826 background-clip: padding-box;
5827 border: 1px solid rgba(0, 0, 0, 0.2);
5828 border-radius: 0.3rem;
5829 outline: 0;
5830}
5831
5832.modal-backdrop {
5833 position: fixed;
5834 top: 0;
5835 left: 0;
5836 z-index: 1040;
5837 width: 100vw;
5838 height: 100vh;
5839 background-color: #000;
5840}
5841
5842.modal-backdrop.fade {
5843 opacity: 0;
5844}
5845
5846.modal-backdrop.show {
5847 opacity: 0.5;
5848}
5849
5850.modal-header {
5851 display: -ms-flexbox;
5852 display: flex;
5853 -ms-flex-align: start;
5854 align-items: flex-start;
5855 -ms-flex-pack: justify;
5856 justify-content: space-between;
5857 padding: 1rem 1rem;
5858 border-bottom: 1px solid #dee2e6;
5859 border-top-left-radius: 0.3rem;
5860 border-top-right-radius: 0.3rem;
5861}
5862
5863.modal-header .close {
5864 padding: 1rem 1rem;
5865 margin: -1rem -1rem -1rem auto;
5866}
5867
5868.modal-title {
5869 margin-bottom: 0;
5870 line-height: 1.5;
5871}
5872
5873.modal-body {
5874 position: relative;
5875 -ms-flex: 1 1 auto;
5876 flex: 1 1 auto;
5877 padding: 1rem;
5878}
5879
5880.modal-footer {
5881 display: -ms-flexbox;
5882 display: flex;
5883 -ms-flex-align: center;
5884 align-items: center;
5885 -ms-flex-pack: end;
5886 justify-content: flex-end;
5887 padding: 1rem;
5888 border-top: 1px solid #dee2e6;
5889 border-bottom-right-radius: 0.3rem;
5890 border-bottom-left-radius: 0.3rem;
5891}
5892
5893.modal-footer > :not(:first-child) {
5894 margin-left: .25rem;
5895}
5896
5897.modal-footer > :not(:last-child) {
5898 margin-right: .25rem;
5899}
5900
5901.modal-scrollbar-measure {
5902 position: absolute;
5903 top: -9999px;
5904 width: 50px;
5905 height: 50px;
5906 overflow: scroll;
5907}
5908
5909@media (min-width: 576px) {
5910 .modal-dialog {
5911 max-width: 500px;
5912 margin: 1.75rem auto;
5913 }
5914 .modal-dialog-scrollable {
5915 max-height: calc(100% - 3.5rem);
5916 }
5917 .modal-dialog-scrollable .modal-content {
5918 max-height: calc(100vh - 3.5rem);
5919 }
5920 .modal-dialog-centered {
5921 min-height: calc(100% - 3.5rem);
5922 }
5923 .modal-dialog-centered::before {
5924 height: calc(100vh - 3.5rem);
5925 }
5926 .modal-sm {
5927 max-width: 300px;
5928 }
5929}
5930
5931@media (min-width: 992px) {
5932 .modal-lg,
5933 .modal-xl {
5934 max-width: 800px;
5935 }
5936}
5937
5938@media (min-width: 1200px) {
5939 .modal-xl {
5940 max-width: 1140px;
5941 }
5942}
5943
5944.tooltip {
5945 position: absolute;
5946 z-index: 1070;
5947 display: block;
5948 margin: 0;
5949 font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
5950 font-style: normal;
5951 font-weight: 400;
5952 line-height: 1.5;
5953 text-align: left;
5954 text-align: start;
5955 text-decoration: none;
5956 text-shadow: none;
5957 text-transform: none;
5958 letter-spacing: normal;
5959 word-break: normal;
5960 word-spacing: normal;
5961 white-space: normal;
5962 line-break: auto;
5963 font-size: 0.875rem;
5964 word-wrap: break-word;
5965 opacity: 0;
5966}
5967
5968.tooltip.show {
5969 opacity: 0.9;
5970}
5971
5972.tooltip .arrow {
5973 position: absolute;
5974 display: block;
5975 width: 0.8rem;
5976 height: 0.4rem;
5977}
5978
5979.tooltip .arrow::before {
5980 position: absolute;
5981 content: "";
5982 border-color: transparent;
5983 border-style: solid;
5984}
5985
5986.bs-tooltip-top, .bs-tooltip-auto[x-placement^="top"] {
5987 padding: 0.4rem 0;
5988}
5989
5990.bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^="top"] .arrow {
5991 bottom: 0;
5992}
5993
5994.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^="top"] .arrow::before {
5995 top: 0;
5996 border-width: 0.4rem 0.4rem 0;
5997 border-top-color: #000;
5998}
5999
6000.bs-tooltip-right, .bs-tooltip-auto[x-placement^="right"] {
6001 padding: 0 0.4rem;
6002}
6003
6004.bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^="right"] .arrow {
6005 left: 0;
6006 width: 0.4rem;
6007 height: 0.8rem;
6008}
6009
6010.bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^="right"] .arrow::before {
6011 right: 0;
6012 border-width: 0.4rem 0.4rem 0.4rem 0;
6013 border-right-color: #000;
6014}
6015
6016.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^="bottom"] {
6017 padding: 0.4rem 0;
6018}
6019
6020.bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^="bottom"] .arrow {
6021 top: 0;
6022}
6023
6024.bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^="bottom"] .arrow::before {
6025 bottom: 0;
6026 border-width: 0 0.4rem 0.4rem;
6027 border-bottom-color: #000;
6028}
6029
6030.bs-tooltip-left, .bs-tooltip-auto[x-placement^="left"] {
6031 padding: 0 0.4rem;
6032}
6033
6034.bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^="left"] .arrow {
6035 right: 0;
6036 width: 0.4rem;
6037 height: 0.8rem;
6038}
6039
6040.bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^="left"] .arrow::before {
6041 left: 0;
6042 border-width: 0.4rem 0 0.4rem 0.4rem;
6043 border-left-color: #000;
6044}
6045
6046.tooltip-inner {
6047 max-width: 200px;
6048 padding: 0.25rem 0.5rem;
6049 color: #fff;
6050 text-align: center;
6051 background-color: #000;
6052 border-radius: 0.25rem;
6053}
6054
6055.popover {
6056 position: absolute;
6057 top: 0;
6058 left: 0;
6059 z-index: 1060;
6060 display: block;
6061 max-width: 276px;
6062 font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
6063 font-style: normal;
6064 font-weight: 400;
6065 line-height: 1.5;
6066 text-align: left;
6067 text-align: start;
6068 text-decoration: none;
6069 text-shadow: none;
6070 text-transform: none;
6071 letter-spacing: normal;
6072 word-break: normal;
6073 word-spacing: normal;
6074 white-space: normal;
6075 line-break: auto;
6076 font-size: 0.875rem;
6077 word-wrap: break-word;
6078 background-color: #fff;
6079 background-clip: padding-box;
6080 border: 1px solid rgba(0, 0, 0, 0.2);
6081 border-radius: 0.3rem;
6082}
6083
6084.popover .arrow {
6085 position: absolute;
6086 display: block;
6087 width: 1rem;
6088 height: 0.5rem;
6089 margin: 0 0.3rem;
6090}
6091
6092.popover .arrow::before, .popover .arrow::after {
6093 position: absolute;
6094 display: block;
6095 content: "";
6096 border-color: transparent;
6097 border-style: solid;
6098}
6099
6100.bs-popover-top, .bs-popover-auto[x-placement^="top"] {
6101 margin-bottom: 0.5rem;
6102}
6103
6104.bs-popover-top > .arrow, .bs-popover-auto[x-placement^="top"] > .arrow {
6105 bottom: calc((0.5rem + 1px) * -1);
6106}
6107
6108.bs-popover-top > .arrow::before, .bs-popover-auto[x-placement^="top"] > .arrow::before {
6109 bottom: 0;
6110 border-width: 0.5rem 0.5rem 0;
6111 border-top-color: rgba(0, 0, 0, 0.25);
6112}
6113
6114.bs-popover-top > .arrow::after, .bs-popover-auto[x-placement^="top"] > .arrow::after {
6115 bottom: 1px;
6116 border-width: 0.5rem 0.5rem 0;
6117 border-top-color: #fff;
6118}
6119
6120.bs-popover-right, .bs-popover-auto[x-placement^="right"] {
6121 margin-left: 0.5rem;
6122}
6123
6124.bs-popover-right > .arrow, .bs-popover-auto[x-placement^="right"] > .arrow {
6125 left: calc((0.5rem + 1px) * -1);
6126 width: 0.5rem;
6127 height: 1rem;
6128 margin: 0.3rem 0;
6129}
6130
6131.bs-popover-right > .arrow::before, .bs-popover-auto[x-placement^="right"] > .arrow::before {
6132 left: 0;
6133 border-width: 0.5rem 0.5rem 0.5rem 0;
6134 border-right-color: rgba(0, 0, 0, 0.25);
6135}
6136
6137.bs-popover-right > .arrow::after, .bs-popover-auto[x-placement^="right"] > .arrow::after {
6138 left: 1px;
6139 border-width: 0.5rem 0.5rem 0.5rem 0;
6140 border-right-color: #fff;
6141}
6142
6143.bs-popover-bottom, .bs-popover-auto[x-placement^="bottom"] {
6144 margin-top: 0.5rem;
6145}
6146
6147.bs-popover-bottom > .arrow, .bs-popover-auto[x-placement^="bottom"] > .arrow {
6148 top: calc((0.5rem + 1px) * -1);
6149}
6150
6151.bs-popover-bottom > .arrow::before, .bs-popover-auto[x-placement^="bottom"] > .arrow::before {
6152 top: 0;
6153 border-width: 0 0.5rem 0.5rem 0.5rem;
6154 border-bottom-color: rgba(0, 0, 0, 0.25);
6155}
6156
6157.bs-popover-bottom > .arrow::after, .bs-popover-auto[x-placement^="bottom"] > .arrow::after {
6158 top: 1px;
6159 border-width: 0 0.5rem 0.5rem 0.5rem;
6160 border-bottom-color: #fff;
6161}
6162
6163.bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^="bottom"] .popover-header::before {
6164 position: absolute;
6165 top: 0;
6166 left: 50%;
6167 display: block;
6168 width: 1rem;
6169 margin-left: -0.5rem;
6170 content: "";
6171 border-bottom: 1px solid #f7f7f7;
6172}
6173
6174.bs-popover-left, .bs-popover-auto[x-placement^="left"] {
6175 margin-right: 0.5rem;
6176}
6177
6178.bs-popover-left > .arrow, .bs-popover-auto[x-placement^="left"] > .arrow {
6179 right: calc((0.5rem + 1px) * -1);
6180 width: 0.5rem;
6181 height: 1rem;
6182 margin: 0.3rem 0;
6183}
6184
6185.bs-popover-left > .arrow::before, .bs-popover-auto[x-placement^="left"] > .arrow::before {
6186 right: 0;
6187 border-width: 0.5rem 0 0.5rem 0.5rem;
6188 border-left-color: rgba(0, 0, 0, 0.25);
6189}
6190
6191.bs-popover-left > .arrow::after, .bs-popover-auto[x-placement^="left"] > .arrow::after {
6192 right: 1px;
6193 border-width: 0.5rem 0 0.5rem 0.5rem;
6194 border-left-color: #fff;
6195}
6196
6197.popover-header {
6198 padding: 0.5rem 0.75rem;
6199 margin-bottom: 0;
6200 font-size: 1rem;
6201 background-color: #f7f7f7;
6202 border-bottom: 1px solid #ebebeb;
6203 border-top-left-radius: calc(0.3rem - 1px);
6204 border-top-right-radius: calc(0.3rem - 1px);
6205}
6206
6207.popover-header:empty {
6208 display: none;
6209}
6210
6211.popover-body {
6212 padding: 0.5rem 0.75rem;
6213 color: #212529;
6214}
6215
6216.carousel {
6217 position: relative;
6218}
6219
6220.carousel.pointer-event {
6221 -ms-touch-action: pan-y;
6222 touch-action: pan-y;
6223}
6224
6225.carousel-inner {
6226 position: relative;
6227 width: 100%;
6228 overflow: hidden;
6229}
6230
6231.carousel-inner::after {
6232 display: block;
6233 clear: both;
6234 content: "";
6235}
6236
6237.carousel-item {
6238 position: relative;
6239 display: none;
6240 float: left;
6241 width: 100%;
6242 margin-right: -100%;
6243 -webkit-backface-visibility: hidden;
6244 backface-visibility: hidden;
6245 transition: -webkit-transform 0.6s ease-in-out;
6246 transition: transform 0.6s ease-in-out;
6247 transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out;
6248}
6249
6250@media (prefers-reduced-motion: reduce) {
6251 .carousel-item {
6252 transition: none;
6253 }
6254}
6255
6256.carousel-item.active,
6257.carousel-item-next,
6258.carousel-item-prev {
6259 display: block;
6260}
6261
6262.carousel-item-next:not(.carousel-item-left),
6263.active.carousel-item-right {
6264 -webkit-transform: translateX(100%);
6265 transform: translateX(100%);
6266}
6267
6268.carousel-item-prev:not(.carousel-item-right),
6269.active.carousel-item-left {
6270 -webkit-transform: translateX(-100%);
6271 transform: translateX(-100%);
6272}
6273
6274.carousel-fade .carousel-item {
6275 opacity: 0;
6276 transition-property: opacity;
6277 -webkit-transform: none;
6278 transform: none;
6279}
6280
6281.carousel-fade .carousel-item.active,
6282.carousel-fade .carousel-item-next.carousel-item-left,
6283.carousel-fade .carousel-item-prev.carousel-item-right {
6284 z-index: 1;
6285 opacity: 1;
6286}
6287
6288.carousel-fade .active.carousel-item-left,
6289.carousel-fade .active.carousel-item-right {
6290 z-index: 0;
6291 opacity: 0;
6292 transition: 0s 0.6s opacity;
6293}
6294
6295@media (prefers-reduced-motion: reduce) {
6296 .carousel-fade .active.carousel-item-left,
6297 .carousel-fade .active.carousel-item-right {
6298 transition: none;
6299 }
6300}
6301
6302.carousel-control-prev,
6303.carousel-control-next {
6304 position: absolute;
6305 top: 0;
6306 bottom: 0;
6307 z-index: 1;
6308 display: -ms-flexbox;
6309 display: flex;
6310 -ms-flex-align: center;
6311 align-items: center;
6312 -ms-flex-pack: center;
6313 justify-content: center;
6314 width: 15%;
6315 color: #fff;
6316 text-align: center;
6317 opacity: 0.5;
6318 transition: opacity 0.15s ease;
6319}
6320
6321@media (prefers-reduced-motion: reduce) {
6322 .carousel-control-prev,
6323 .carousel-control-next {
6324 transition: none;
6325 }
6326}
6327
6328.carousel-control-prev:hover, .carousel-control-prev:focus,
6329.carousel-control-next:hover,
6330.carousel-control-next:focus {
6331 color: #fff;
6332 text-decoration: none;
6333 outline: 0;
6334 opacity: 0.9;
6335}
6336
6337.carousel-control-prev {
6338 left: 0;
6339}
6340
6341.carousel-control-next {
6342 right: 0;
6343}
6344
6345.carousel-control-prev-icon,
6346.carousel-control-next-icon {
6347 display: inline-block;
6348 width: 20px;
6349 height: 20px;
6350 background: no-repeat 50% / 100% 100%;
6351}
6352
6353.carousel-control-prev-icon {
6354 background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e");
6355}
6356
6357.carousel-control-next-icon {
6358 background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e");
6359}
6360
6361.carousel-indicators {
6362 position: absolute;
6363 right: 0;
6364 bottom: 0;
6365 left: 0;
6366 z-index: 15;
6367 display: -ms-flexbox;
6368 display: flex;
6369 -ms-flex-pack: center;
6370 justify-content: center;
6371 padding-left: 0;
6372 margin-right: 15%;
6373 margin-left: 15%;
6374 list-style: none;
6375}
6376
6377.carousel-indicators li {
6378 box-sizing: content-box;
6379 -ms-flex: 0 1 auto;
6380 flex: 0 1 auto;
6381 width: 30px;
6382 height: 3px;
6383 margin-right: 3px;
6384 margin-left: 3px;
6385 text-indent: -999px;
6386 cursor: pointer;
6387 background-color: #fff;
6388 background-clip: padding-box;
6389 border-top: 10px solid transparent;
6390 border-bottom: 10px solid transparent;
6391 opacity: .5;
6392 transition: opacity 0.6s ease;
6393}
6394
6395@media (prefers-reduced-motion: reduce) {
6396 .carousel-indicators li {
6397 transition: none;
6398 }
6399}
6400
6401.carousel-indicators .active {
6402 opacity: 1;
6403}
6404
6405.carousel-caption {
6406 position: absolute;
6407 right: 15%;
6408 bottom: 20px;
6409 left: 15%;
6410 z-index: 10;
6411 padding-top: 20px;
6412 padding-bottom: 20px;
6413 color: #fff;
6414 text-align: center;
6415}
6416
6417@-webkit-keyframes spinner-border {
6418 to {
6419 -webkit-transform: rotate(360deg);
6420 transform: rotate(360deg);
6421 }
6422}
6423
6424@keyframes spinner-border {
6425 to {
6426 -webkit-transform: rotate(360deg);
6427 transform: rotate(360deg);
6428 }
6429}
6430
6431.spinner-border {
6432 display: inline-block;
6433 width: 2rem;
6434 height: 2rem;
6435 vertical-align: text-bottom;
6436 border: 0.25em solid currentColor;
6437 border-right-color: transparent;
6438 border-radius: 50%;
6439 -webkit-animation: spinner-border .75s linear infinite;
6440 animation: spinner-border .75s linear infinite;
6441}
6442
6443.spinner-border-sm {
6444 width: 1rem;
6445 height: 1rem;
6446 border-width: 0.2em;
6447}
6448
6449@-webkit-keyframes spinner-grow {
6450 0% {
6451 -webkit-transform: scale(0);
6452 transform: scale(0);
6453 }
6454 50% {
6455 opacity: 1;
6456 }
6457}
6458
6459@keyframes spinner-grow {
6460 0% {
6461 -webkit-transform: scale(0);
6462 transform: scale(0);
6463 }
6464 50% {
6465 opacity: 1;
6466 }
6467}
6468
6469.spinner-grow {
6470 display: inline-block;
6471 width: 2rem;
6472 height: 2rem;
6473 vertical-align: text-bottom;
6474 background-color: currentColor;
6475 border-radius: 50%;
6476 opacity: 0;
6477 -webkit-animation: spinner-grow .75s linear infinite;
6478 animation: spinner-grow .75s linear infinite;
6479}
6480
6481.spinner-grow-sm {
6482 width: 1rem;
6483 height: 1rem;
6484}
6485
6486.align-baseline {
6487 vertical-align: baseline !important;
6488}
6489
6490.align-top {
6491 vertical-align: top !important;
6492}
6493
6494.align-middle {
6495 vertical-align: middle !important;
6496}
6497
6498.align-bottom {
6499 vertical-align: bottom !important;
6500}
6501
6502.align-text-bottom {
6503 vertical-align: text-bottom !important;
6504}
6505
6506.align-text-top {
6507 vertical-align: text-top !important;
6508}
6509
6510.bg-primary {
6511 background-color: #007bff !important;
6512}
6513
6514a.bg-primary:hover, a.bg-primary:focus,
6515button.bg-primary:hover,
6516button.bg-primary:focus {
6517 background-color: #0062cc !important;
6518}
6519
6520.bg-secondary {
6521 background-color: #6c757d !important;
6522}
6523
6524a.bg-secondary:hover, a.bg-secondary:focus,
6525button.bg-secondary:hover,
6526button.bg-secondary:focus {
6527 background-color: #545b62 !important;
6528}
6529
6530.bg-success {
6531 background-color: #28a745 !important;
6532}
6533
6534a.bg-success:hover, a.bg-success:focus,
6535button.bg-success:hover,
6536button.bg-success:focus {
6537 background-color: #1e7e34 !important;
6538}
6539
6540.bg-info {
6541 background-color: #17a2b8 !important;
6542}
6543
6544a.bg-info:hover, a.bg-info:focus,
6545button.bg-info:hover,
6546button.bg-info:focus {
6547 background-color: #117a8b !important;
6548}
6549
6550.bg-warning {
6551 background-color: #ffc107 !important;
6552}
6553
6554a.bg-warning:hover, a.bg-warning:focus,
6555button.bg-warning:hover,
6556button.bg-warning:focus {
6557 background-color: #d39e00 !important;
6558}
6559
6560.bg-danger {
6561 background-color: #dc3545 !important;
6562}
6563
6564a.bg-danger:hover, a.bg-danger:focus,
6565button.bg-danger:hover,
6566button.bg-danger:focus {
6567 background-color: #bd2130 !important;
6568}
6569
6570.bg-light {
6571 background-color: #f8f9fa !important;
6572}
6573
6574a.bg-light:hover, a.bg-light:focus,
6575button.bg-light:hover,
6576button.bg-light:focus {
6577 background-color: #dae0e5 !important;
6578}
6579
6580.bg-dark {
6581 background-color: #343a40 !important;
6582}
6583
6584a.bg-dark:hover, a.bg-dark:focus,
6585button.bg-dark:hover,
6586button.bg-dark:focus {
6587 background-color: #1d2124 !important;
6588}
6589
6590.bg-white {
6591 background-color: #fff !important;
6592}
6593
6594.bg-transparent {
6595 background-color: transparent !important;
6596}
6597
6598.border {
6599 border: 1px solid #dee2e6 !important;
6600}
6601
6602.border-top {
6603 border-top: 1px solid #dee2e6 !important;
6604}
6605
6606.border-right {
6607 border-right: 1px solid #dee2e6 !important;
6608}
6609
6610.border-bottom {
6611 border-bottom: 1px solid #dee2e6 !important;
6612}
6613
6614.border-left {
6615 border-left: 1px solid #dee2e6 !important;
6616}
6617
6618.border-0 {
6619 border: 0 !important;
6620}
6621
6622.border-top-0 {
6623 border-top: 0 !important;
6624}
6625
6626.border-right-0 {
6627 border-right: 0 !important;
6628}
6629
6630.border-bottom-0 {
6631 border-bottom: 0 !important;
6632}
6633
6634.border-left-0 {
6635 border-left: 0 !important;
6636}
6637
6638.border-primary {
6639 border-color: #007bff !important;
6640}
6641
6642.border-secondary {
6643 border-color: #6c757d !important;
6644}
6645
6646.border-success {
6647 border-color: #28a745 !important;
6648}
6649
6650.border-info {
6651 border-color: #17a2b8 !important;
6652}
6653
6654.border-warning {
6655 border-color: #ffc107 !important;
6656}
6657
6658.border-danger {
6659 border-color: #dc3545 !important;
6660}
6661
6662.border-light {
6663 border-color: #f8f9fa !important;
6664}
6665
6666.border-dark {
6667 border-color: #343a40 !important;
6668}
6669
6670.border-white {
6671 border-color: #fff !important;
6672}
6673
6674.rounded-sm {
6675 border-radius: 0.2rem !important;
6676}
6677
6678.rounded {
6679 border-radius: 0.25rem !important;
6680}
6681
6682.rounded-top {
6683 border-top-left-radius: 0.25rem !important;
6684 border-top-right-radius: 0.25rem !important;
6685}
6686
6687.rounded-right {
6688 border-top-right-radius: 0.25rem !important;
6689 border-bottom-right-radius: 0.25rem !important;
6690}
6691
6692.rounded-bottom {
6693 border-bottom-right-radius: 0.25rem !important;
6694 border-bottom-left-radius: 0.25rem !important;
6695}
6696
6697.rounded-left {
6698 border-top-left-radius: 0.25rem !important;
6699 border-bottom-left-radius: 0.25rem !important;
6700}
6701
6702.rounded-lg {
6703 border-radius: 0.3rem !important;
6704}
6705
6706.rounded-circle {
6707 border-radius: 50% !important;
6708}
6709
6710.rounded-pill {
6711 border-radius: 50rem !important;
6712}
6713
6714.rounded-0 {
6715 border-radius: 0 !important;
6716}
6717
6718.clearfix::after {
6719 display: block;
6720 clear: both;
6721 content: "";
6722}
6723
6724.d-none {
6725 display: none !important;
6726}
6727
6728.d-inline {
6729 display: inline !important;
6730}
6731
6732.d-inline-block {
6733 display: inline-block !important;
6734}
6735
6736.d-block {
6737 display: block !important;
6738}
6739
6740.d-table {
6741 display: table !important;
6742}
6743
6744.d-table-row {
6745 display: table-row !important;
6746}
6747
6748.d-table-cell {
6749 display: table-cell !important;
6750}
6751
6752.d-flex {
6753 display: -ms-flexbox !important;
6754 display: flex !important;
6755}
6756
6757.d-inline-flex {
6758 display: -ms-inline-flexbox !important;
6759 display: inline-flex !important;
6760}
6761
6762@media (min-width: 576px) {
6763 .d-sm-none {
6764 display: none !important;
6765 }
6766 .d-sm-inline {
6767 display: inline !important;
6768 }
6769 .d-sm-inline-block {
6770 display: inline-block !important;
6771 }
6772 .d-sm-block {
6773 display: block !important;
6774 }
6775 .d-sm-table {
6776 display: table !important;
6777 }
6778 .d-sm-table-row {
6779 display: table-row !important;
6780 }
6781 .d-sm-table-cell {
6782 display: table-cell !important;
6783 }
6784 .d-sm-flex {
6785 display: -ms-flexbox !important;
6786 display: flex !important;
6787 }
6788 .d-sm-inline-flex {
6789 display: -ms-inline-flexbox !important;
6790 display: inline-flex !important;
6791 }
6792}
6793
6794@media (min-width: 768px) {
6795 .d-md-none {
6796 display: none !important;
6797 }
6798 .d-md-inline {
6799 display: inline !important;
6800 }
6801 .d-md-inline-block {
6802 display: inline-block !important;
6803 }
6804 .d-md-block {
6805 display: block !important;
6806 }
6807 .d-md-table {
6808 display: table !important;
6809 }
6810 .d-md-table-row {
6811 display: table-row !important;
6812 }
6813 .d-md-table-cell {
6814 display: table-cell !important;
6815 }
6816 .d-md-flex {
6817 display: -ms-flexbox !important;
6818 display: flex !important;
6819 }
6820 .d-md-inline-flex {
6821 display: -ms-inline-flexbox !important;
6822 display: inline-flex !important;
6823 }
6824}
6825
6826@media (min-width: 992px) {
6827 .d-lg-none {
6828 display: none !important;
6829 }
6830 .d-lg-inline {
6831 display: inline !important;
6832 }
6833 .d-lg-inline-block {
6834 display: inline-block !important;
6835 }
6836 .d-lg-block {
6837 display: block !important;
6838 }
6839 .d-lg-table {
6840 display: table !important;
6841 }
6842 .d-lg-table-row {
6843 display: table-row !important;
6844 }
6845 .d-lg-table-cell {
6846 display: table-cell !important;
6847 }
6848 .d-lg-flex {
6849 display: -ms-flexbox !important;
6850 display: flex !important;
6851 }
6852 .d-lg-inline-flex {
6853 display: -ms-inline-flexbox !important;
6854 display: inline-flex !important;
6855 }
6856}
6857
6858@media (min-width: 1200px) {
6859 .d-xl-none {
6860 display: none !important;
6861 }
6862 .d-xl-inline {
6863 display: inline !important;
6864 }
6865 .d-xl-inline-block {
6866 display: inline-block !important;
6867 }
6868 .d-xl-block {
6869 display: block !important;
6870 }
6871 .d-xl-table {
6872 display: table !important;
6873 }
6874 .d-xl-table-row {
6875 display: table-row !important;
6876 }
6877 .d-xl-table-cell {
6878 display: table-cell !important;
6879 }
6880 .d-xl-flex {
6881 display: -ms-flexbox !important;
6882 display: flex !important;
6883 }
6884 .d-xl-inline-flex {
6885 display: -ms-inline-flexbox !important;
6886 display: inline-flex !important;
6887 }
6888}
6889
6890@media print {
6891 .d-print-none {
6892 display: none !important;
6893 }
6894 .d-print-inline {
6895 display: inline !important;
6896 }
6897 .d-print-inline-block {
6898 display: inline-block !important;
6899 }
6900 .d-print-block {
6901 display: block !important;
6902 }
6903 .d-print-table {
6904 display: table !important;
6905 }
6906 .d-print-table-row {
6907 display: table-row !important;
6908 }
6909 .d-print-table-cell {
6910 display: table-cell !important;
6911 }
6912 .d-print-flex {
6913 display: -ms-flexbox !important;
6914 display: flex !important;
6915 }
6916 .d-print-inline-flex {
6917 display: -ms-inline-flexbox !important;
6918 display: inline-flex !important;
6919 }
6920}
6921
6922.embed-responsive {
6923 position: relative;
6924 display: block;
6925 width: 100%;
6926 padding: 0;
6927 overflow: hidden;
6928}
6929
6930.embed-responsive::before {
6931 display: block;
6932 content: "";
6933}
6934
6935.embed-responsive .embed-responsive-item,
6936.embed-responsive iframe,
6937.embed-responsive embed,
6938.embed-responsive object,
6939.embed-responsive video {
6940 position: absolute;
6941 top: 0;
6942 bottom: 0;
6943 left: 0;
6944 width: 100%;
6945 height: 100%;
6946 border: 0;
6947}
6948
6949.embed-responsive-21by9::before {
6950 padding-top: 42.857143%;
6951}
6952
6953.embed-responsive-16by9::before {
6954 padding-top: 56.25%;
6955}
6956
6957.embed-responsive-4by3::before {
6958 padding-top: 75%;
6959}
6960
6961.embed-responsive-1by1::before {
6962 padding-top: 100%;
6963}
6964
6965.flex-row {
6966 -ms-flex-direction: row !important;
6967 flex-direction: row !important;
6968}
6969
6970.flex-column {
6971 -ms-flex-direction: column !important;
6972 flex-direction: column !important;
6973}
6974
6975.flex-row-reverse {
6976 -ms-flex-direction: row-reverse !important;
6977 flex-direction: row-reverse !important;
6978}
6979
6980.flex-column-reverse {
6981 -ms-flex-direction: column-reverse !important;
6982 flex-direction: column-reverse !important;
6983}
6984
6985.flex-wrap {
6986 -ms-flex-wrap: wrap !important;
6987 flex-wrap: wrap !important;
6988}
6989
6990.flex-nowrap {
6991 -ms-flex-wrap: nowrap !important;
6992 flex-wrap: nowrap !important;
6993}
6994
6995.flex-wrap-reverse {
6996 -ms-flex-wrap: wrap-reverse !important;
6997 flex-wrap: wrap-reverse !important;
6998}
6999
7000.flex-fill {
7001 -ms-flex: 1 1 auto !important;
7002 flex: 1 1 auto !important;
7003}
7004
7005.flex-grow-0 {
7006 -ms-flex-positive: 0 !important;
7007 flex-grow: 0 !important;
7008}
7009
7010.flex-grow-1 {
7011 -ms-flex-positive: 1 !important;
7012 flex-grow: 1 !important;
7013}
7014
7015.flex-shrink-0 {
7016 -ms-flex-negative: 0 !important;
7017 flex-shrink: 0 !important;
7018}
7019
7020.flex-shrink-1 {
7021 -ms-flex-negative: 1 !important;
7022 flex-shrink: 1 !important;
7023}
7024
7025.justify-content-start {
7026 -ms-flex-pack: start !important;
7027 justify-content: flex-start !important;
7028}
7029
7030.justify-content-end {
7031 -ms-flex-pack: end !important;
7032 justify-content: flex-end !important;
7033}
7034
7035.justify-content-center {
7036 -ms-flex-pack: center !important;
7037 justify-content: center !important;
7038}
7039
7040.justify-content-between {
7041 -ms-flex-pack: justify !important;
7042 justify-content: space-between !important;
7043}
7044
7045.justify-content-around {
7046 -ms-flex-pack: distribute !important;
7047 justify-content: space-around !important;
7048}
7049
7050.align-items-start {
7051 -ms-flex-align: start !important;
7052 align-items: flex-start !important;
7053}
7054
7055.align-items-end {
7056 -ms-flex-align: end !important;
7057 align-items: flex-end !important;
7058}
7059
7060.align-items-center {
7061 -ms-flex-align: center !important;
7062 align-items: center !important;
7063}
7064
7065.align-items-baseline {
7066 -ms-flex-align: baseline !important;
7067 align-items: baseline !important;
7068}
7069
7070.align-items-stretch {
7071 -ms-flex-align: stretch !important;
7072 align-items: stretch !important;
7073}
7074
7075.align-content-start {
7076 -ms-flex-line-pack: start !important;
7077 align-content: flex-start !important;
7078}
7079
7080.align-content-end {
7081 -ms-flex-line-pack: end !important;
7082 align-content: flex-end !important;
7083}
7084
7085.align-content-center {
7086 -ms-flex-line-pack: center !important;
7087 align-content: center !important;
7088}
7089
7090.align-content-between {
7091 -ms-flex-line-pack: justify !important;
7092 align-content: space-between !important;
7093}
7094
7095.align-content-around {
7096 -ms-flex-line-pack: distribute !important;
7097 align-content: space-around !important;
7098}
7099
7100.align-content-stretch {
7101 -ms-flex-line-pack: stretch !important;
7102 align-content: stretch !important;
7103}
7104
7105.align-self-auto {
7106 -ms-flex-item-align: auto !important;
7107 align-self: auto !important;
7108}
7109
7110.align-self-start {
7111 -ms-flex-item-align: start !important;
7112 align-self: flex-start !important;
7113}
7114
7115.align-self-end {
7116 -ms-flex-item-align: end !important;
7117 align-self: flex-end !important;
7118}
7119
7120.align-self-center {
7121 -ms-flex-item-align: center !important;
7122 align-self: center !important;
7123}
7124
7125.align-self-baseline {
7126 -ms-flex-item-align: baseline !important;
7127 align-self: baseline !important;
7128}
7129
7130.align-self-stretch {
7131 -ms-flex-item-align: stretch !important;
7132 align-self: stretch !important;
7133}
7134
7135@media (min-width: 576px) {
7136 .flex-sm-row {
7137 -ms-flex-direction: row !important;
7138 flex-direction: row !important;
7139 }
7140 .flex-sm-column {
7141 -ms-flex-direction: column !important;
7142 flex-direction: column !important;
7143 }
7144 .flex-sm-row-reverse {
7145 -ms-flex-direction: row-reverse !important;
7146 flex-direction: row-reverse !important;
7147 }
7148 .flex-sm-column-reverse {
7149 -ms-flex-direction: column-reverse !important;
7150 flex-direction: column-reverse !important;
7151 }
7152 .flex-sm-wrap {
7153 -ms-flex-wrap: wrap !important;
7154 flex-wrap: wrap !important;
7155 }
7156 .flex-sm-nowrap {
7157 -ms-flex-wrap: nowrap !important;
7158 flex-wrap: nowrap !important;
7159 }
7160 .flex-sm-wrap-reverse {
7161 -ms-flex-wrap: wrap-reverse !important;
7162 flex-wrap: wrap-reverse !important;
7163 }
7164 .flex-sm-fill {
7165 -ms-flex: 1 1 auto !important;
7166 flex: 1 1 auto !important;
7167 }
7168 .flex-sm-grow-0 {
7169 -ms-flex-positive: 0 !important;
7170 flex-grow: 0 !important;
7171 }
7172 .flex-sm-grow-1 {
7173 -ms-flex-positive: 1 !important;
7174 flex-grow: 1 !important;
7175 }
7176 .flex-sm-shrink-0 {
7177 -ms-flex-negative: 0 !important;
7178 flex-shrink: 0 !important;
7179 }
7180 .flex-sm-shrink-1 {
7181 -ms-flex-negative: 1 !important;
7182 flex-shrink: 1 !important;
7183 }
7184 .justify-content-sm-start {
7185 -ms-flex-pack: start !important;
7186 justify-content: flex-start !important;
7187 }
7188 .justify-content-sm-end {
7189 -ms-flex-pack: end !important;
7190 justify-content: flex-end !important;
7191 }
7192 .justify-content-sm-center {
7193 -ms-flex-pack: center !important;
7194 justify-content: center !important;
7195 }
7196 .justify-content-sm-between {
7197 -ms-flex-pack: justify !important;
7198 justify-content: space-between !important;
7199 }
7200 .justify-content-sm-around {
7201 -ms-flex-pack: distribute !important;
7202 justify-content: space-around !important;
7203 }
7204 .align-items-sm-start {
7205 -ms-flex-align: start !important;
7206 align-items: flex-start !important;
7207 }
7208 .align-items-sm-end {
7209 -ms-flex-align: end !important;
7210 align-items: flex-end !important;
7211 }
7212 .align-items-sm-center {
7213 -ms-flex-align: center !important;
7214 align-items: center !important;
7215 }
7216 .align-items-sm-baseline {
7217 -ms-flex-align: baseline !important;
7218 align-items: baseline !important;
7219 }
7220 .align-items-sm-stretch {
7221 -ms-flex-align: stretch !important;
7222 align-items: stretch !important;
7223 }
7224 .align-content-sm-start {
7225 -ms-flex-line-pack: start !important;
7226 align-content: flex-start !important;
7227 }
7228 .align-content-sm-end {
7229 -ms-flex-line-pack: end !important;
7230 align-content: flex-end !important;
7231 }
7232 .align-content-sm-center {
7233 -ms-flex-line-pack: center !important;
7234 align-content: center !important;
7235 }
7236 .align-content-sm-between {
7237 -ms-flex-line-pack: justify !important;
7238 align-content: space-between !important;
7239 }
7240 .align-content-sm-around {
7241 -ms-flex-line-pack: distribute !important;
7242 align-content: space-around !important;
7243 }
7244 .align-content-sm-stretch {
7245 -ms-flex-line-pack: stretch !important;
7246 align-content: stretch !important;
7247 }
7248 .align-self-sm-auto {
7249 -ms-flex-item-align: auto !important;
7250 align-self: auto !important;
7251 }
7252 .align-self-sm-start {
7253 -ms-flex-item-align: start !important;
7254 align-self: flex-start !important;
7255 }
7256 .align-self-sm-end {
7257 -ms-flex-item-align: end !important;
7258 align-self: flex-end !important;
7259 }
7260 .align-self-sm-center {
7261 -ms-flex-item-align: center !important;
7262 align-self: center !important;
7263 }
7264 .align-self-sm-baseline {
7265 -ms-flex-item-align: baseline !important;
7266 align-self: baseline !important;
7267 }
7268 .align-self-sm-stretch {
7269 -ms-flex-item-align: stretch !important;
7270 align-self: stretch !important;
7271 }
7272}
7273
7274@media (min-width: 768px) {
7275 .flex-md-row {
7276 -ms-flex-direction: row !important;
7277 flex-direction: row !important;
7278 }
7279 .flex-md-column {
7280 -ms-flex-direction: column !important;
7281 flex-direction: column !important;
7282 }
7283 .flex-md-row-reverse {
7284 -ms-flex-direction: row-reverse !important;
7285 flex-direction: row-reverse !important;
7286 }
7287 .flex-md-column-reverse {
7288 -ms-flex-direction: column-reverse !important;
7289 flex-direction: column-reverse !important;
7290 }
7291 .flex-md-wrap {
7292 -ms-flex-wrap: wrap !important;
7293 flex-wrap: wrap !important;
7294 }
7295 .flex-md-nowrap {
7296 -ms-flex-wrap: nowrap !important;
7297 flex-wrap: nowrap !important;
7298 }
7299 .flex-md-wrap-reverse {
7300 -ms-flex-wrap: wrap-reverse !important;
7301 flex-wrap: wrap-reverse !important;
7302 }
7303 .flex-md-fill {
7304 -ms-flex: 1 1 auto !important;
7305 flex: 1 1 auto !important;
7306 }
7307 .flex-md-grow-0 {
7308 -ms-flex-positive: 0 !important;
7309 flex-grow: 0 !important;
7310 }
7311 .flex-md-grow-1 {
7312 -ms-flex-positive: 1 !important;
7313 flex-grow: 1 !important;
7314 }
7315 .flex-md-shrink-0 {
7316 -ms-flex-negative: 0 !important;
7317 flex-shrink: 0 !important;
7318 }
7319 .flex-md-shrink-1 {
7320 -ms-flex-negative: 1 !important;
7321 flex-shrink: 1 !important;
7322 }
7323 .justify-content-md-start {
7324 -ms-flex-pack: start !important;
7325 justify-content: flex-start !important;
7326 }
7327 .justify-content-md-end {
7328 -ms-flex-pack: end !important;
7329 justify-content: flex-end !important;
7330 }
7331 .justify-content-md-center {
7332 -ms-flex-pack: center !important;
7333 justify-content: center !important;
7334 }
7335 .justify-content-md-between {
7336 -ms-flex-pack: justify !important;
7337 justify-content: space-between !important;
7338 }
7339 .justify-content-md-around {
7340 -ms-flex-pack: distribute !important;
7341 justify-content: space-around !important;
7342 }
7343 .align-items-md-start {
7344 -ms-flex-align: start !important;
7345 align-items: flex-start !important;
7346 }
7347 .align-items-md-end {
7348 -ms-flex-align: end !important;
7349 align-items: flex-end !important;
7350 }
7351 .align-items-md-center {
7352 -ms-flex-align: center !important;
7353 align-items: center !important;
7354 }
7355 .align-items-md-baseline {
7356 -ms-flex-align: baseline !important;
7357 align-items: baseline !important;
7358 }
7359 .align-items-md-stretch {
7360 -ms-flex-align: stretch !important;
7361 align-items: stretch !important;
7362 }
7363 .align-content-md-start {
7364 -ms-flex-line-pack: start !important;
7365 align-content: flex-start !important;
7366 }
7367 .align-content-md-end {
7368 -ms-flex-line-pack: end !important;
7369 align-content: flex-end !important;
7370 }
7371 .align-content-md-center {
7372 -ms-flex-line-pack: center !important;
7373 align-content: center !important;
7374 }
7375 .align-content-md-between {
7376 -ms-flex-line-pack: justify !important;
7377 align-content: space-between !important;
7378 }
7379 .align-content-md-around {
7380 -ms-flex-line-pack: distribute !important;
7381 align-content: space-around !important;
7382 }
7383 .align-content-md-stretch {
7384 -ms-flex-line-pack: stretch !important;
7385 align-content: stretch !important;
7386 }
7387 .align-self-md-auto {
7388 -ms-flex-item-align: auto !important;
7389 align-self: auto !important;
7390 }
7391 .align-self-md-start {
7392 -ms-flex-item-align: start !important;
7393 align-self: flex-start !important;
7394 }
7395 .align-self-md-end {
7396 -ms-flex-item-align: end !important;
7397 align-self: flex-end !important;
7398 }
7399 .align-self-md-center {
7400 -ms-flex-item-align: center !important;
7401 align-self: center !important;
7402 }
7403 .align-self-md-baseline {
7404 -ms-flex-item-align: baseline !important;
7405 align-self: baseline !important;
7406 }
7407 .align-self-md-stretch {
7408 -ms-flex-item-align: stretch !important;
7409 align-self: stretch !important;
7410 }
7411}
7412
7413@media (min-width: 992px) {
7414 .flex-lg-row {
7415 -ms-flex-direction: row !important;
7416 flex-direction: row !important;
7417 }
7418 .flex-lg-column {
7419 -ms-flex-direction: column !important;
7420 flex-direction: column !important;
7421 }
7422 .flex-lg-row-reverse {
7423 -ms-flex-direction: row-reverse !important;
7424 flex-direction: row-reverse !important;
7425 }
7426 .flex-lg-column-reverse {
7427 -ms-flex-direction: column-reverse !important;
7428 flex-direction: column-reverse !important;
7429 }
7430 .flex-lg-wrap {
7431 -ms-flex-wrap: wrap !important;
7432 flex-wrap: wrap !important;
7433 }
7434 .flex-lg-nowrap {
7435 -ms-flex-wrap: nowrap !important;
7436 flex-wrap: nowrap !important;
7437 }
7438 .flex-lg-wrap-reverse {
7439 -ms-flex-wrap: wrap-reverse !important;
7440 flex-wrap: wrap-reverse !important;
7441 }
7442 .flex-lg-fill {
7443 -ms-flex: 1 1 auto !important;
7444 flex: 1 1 auto !important;
7445 }
7446 .flex-lg-grow-0 {
7447 -ms-flex-positive: 0 !important;
7448 flex-grow: 0 !important;
7449 }
7450 .flex-lg-grow-1 {
7451 -ms-flex-positive: 1 !important;
7452 flex-grow: 1 !important;
7453 }
7454 .flex-lg-shrink-0 {
7455 -ms-flex-negative: 0 !important;
7456 flex-shrink: 0 !important;
7457 }
7458 .flex-lg-shrink-1 {
7459 -ms-flex-negative: 1 !important;
7460 flex-shrink: 1 !important;
7461 }
7462 .justify-content-lg-start {
7463 -ms-flex-pack: start !important;
7464 justify-content: flex-start !important;
7465 }
7466 .justify-content-lg-end {
7467 -ms-flex-pack: end !important;
7468 justify-content: flex-end !important;
7469 }
7470 .justify-content-lg-center {
7471 -ms-flex-pack: center !important;
7472 justify-content: center !important;
7473 }
7474 .justify-content-lg-between {
7475 -ms-flex-pack: justify !important;
7476 justify-content: space-between !important;
7477 }
7478 .justify-content-lg-around {
7479 -ms-flex-pack: distribute !important;
7480 justify-content: space-around !important;
7481 }
7482 .align-items-lg-start {
7483 -ms-flex-align: start !important;
7484 align-items: flex-start !important;
7485 }
7486 .align-items-lg-end {
7487 -ms-flex-align: end !important;
7488 align-items: flex-end !important;
7489 }
7490 .align-items-lg-center {
7491 -ms-flex-align: center !important;
7492 align-items: center !important;
7493 }
7494 .align-items-lg-baseline {
7495 -ms-flex-align: baseline !important;
7496 align-items: baseline !important;
7497 }
7498 .align-items-lg-stretch {
7499 -ms-flex-align: stretch !important;
7500 align-items: stretch !important;
7501 }
7502 .align-content-lg-start {
7503 -ms-flex-line-pack: start !important;
7504 align-content: flex-start !important;
7505 }
7506 .align-content-lg-end {
7507 -ms-flex-line-pack: end !important;
7508 align-content: flex-end !important;
7509 }
7510 .align-content-lg-center {
7511 -ms-flex-line-pack: center !important;
7512 align-content: center !important;
7513 }
7514 .align-content-lg-between {
7515 -ms-flex-line-pack: justify !important;
7516 align-content: space-between !important;
7517 }
7518 .align-content-lg-around {
7519 -ms-flex-line-pack: distribute !important;
7520 align-content: space-around !important;
7521 }
7522 .align-content-lg-stretch {
7523 -ms-flex-line-pack: stretch !important;
7524 align-content: stretch !important;
7525 }
7526 .align-self-lg-auto {
7527 -ms-flex-item-align: auto !important;
7528 align-self: auto !important;
7529 }
7530 .align-self-lg-start {
7531 -ms-flex-item-align: start !important;
7532 align-self: flex-start !important;
7533 }
7534 .align-self-lg-end {
7535 -ms-flex-item-align: end !important;
7536 align-self: flex-end !important;
7537 }
7538 .align-self-lg-center {
7539 -ms-flex-item-align: center !important;
7540 align-self: center !important;
7541 }
7542 .align-self-lg-baseline {
7543 -ms-flex-item-align: baseline !important;
7544 align-self: baseline !important;
7545 }
7546 .align-self-lg-stretch {
7547 -ms-flex-item-align: stretch !important;
7548 align-self: stretch !important;
7549 }
7550}
7551
7552@media (min-width: 1200px) {
7553 .flex-xl-row {
7554 -ms-flex-direction: row !important;
7555 flex-direction: row !important;
7556 }
7557 .flex-xl-column {
7558 -ms-flex-direction: column !important;
7559 flex-direction: column !important;
7560 }
7561 .flex-xl-row-reverse {
7562 -ms-flex-direction: row-reverse !important;
7563 flex-direction: row-reverse !important;
7564 }
7565 .flex-xl-column-reverse {
7566 -ms-flex-direction: column-reverse !important;
7567 flex-direction: column-reverse !important;
7568 }
7569 .flex-xl-wrap {
7570 -ms-flex-wrap: wrap !important;
7571 flex-wrap: wrap !important;
7572 }
7573 .flex-xl-nowrap {
7574 -ms-flex-wrap: nowrap !important;
7575 flex-wrap: nowrap !important;
7576 }
7577 .flex-xl-wrap-reverse {
7578 -ms-flex-wrap: wrap-reverse !important;
7579 flex-wrap: wrap-reverse !important;
7580 }
7581 .flex-xl-fill {
7582 -ms-flex: 1 1 auto !important;
7583 flex: 1 1 auto !important;
7584 }
7585 .flex-xl-grow-0 {
7586 -ms-flex-positive: 0 !important;
7587 flex-grow: 0 !important;
7588 }
7589 .flex-xl-grow-1 {
7590 -ms-flex-positive: 1 !important;
7591 flex-grow: 1 !important;
7592 }
7593 .flex-xl-shrink-0 {
7594 -ms-flex-negative: 0 !important;
7595 flex-shrink: 0 !important;
7596 }
7597 .flex-xl-shrink-1 {
7598 -ms-flex-negative: 1 !important;
7599 flex-shrink: 1 !important;
7600 }
7601 .justify-content-xl-start {
7602 -ms-flex-pack: start !important;
7603 justify-content: flex-start !important;
7604 }
7605 .justify-content-xl-end {
7606 -ms-flex-pack: end !important;
7607 justify-content: flex-end !important;
7608 }
7609 .justify-content-xl-center {
7610 -ms-flex-pack: center !important;
7611 justify-content: center !important;
7612 }
7613 .justify-content-xl-between {
7614 -ms-flex-pack: justify !important;
7615 justify-content: space-between !important;
7616 }
7617 .justify-content-xl-around {
7618 -ms-flex-pack: distribute !important;
7619 justify-content: space-around !important;
7620 }
7621 .align-items-xl-start {
7622 -ms-flex-align: start !important;
7623 align-items: flex-start !important;
7624 }
7625 .align-items-xl-end {
7626 -ms-flex-align: end !important;
7627 align-items: flex-end !important;
7628 }
7629 .align-items-xl-center {
7630 -ms-flex-align: center !important;
7631 align-items: center !important;
7632 }
7633 .align-items-xl-baseline {
7634 -ms-flex-align: baseline !important;
7635 align-items: baseline !important;
7636 }
7637 .align-items-xl-stretch {
7638 -ms-flex-align: stretch !important;
7639 align-items: stretch !important;
7640 }
7641 .align-content-xl-start {
7642 -ms-flex-line-pack: start !important;
7643 align-content: flex-start !important;
7644 }
7645 .align-content-xl-end {
7646 -ms-flex-line-pack: end !important;
7647 align-content: flex-end !important;
7648 }
7649 .align-content-xl-center {
7650 -ms-flex-line-pack: center !important;
7651 align-content: center !important;
7652 }
7653 .align-content-xl-between {
7654 -ms-flex-line-pack: justify !important;
7655 align-content: space-between !important;
7656 }
7657 .align-content-xl-around {
7658 -ms-flex-line-pack: distribute !important;
7659 align-content: space-around !important;
7660 }
7661 .align-content-xl-stretch {
7662 -ms-flex-line-pack: stretch !important;
7663 align-content: stretch !important;
7664 }
7665 .align-self-xl-auto {
7666 -ms-flex-item-align: auto !important;
7667 align-self: auto !important;
7668 }
7669 .align-self-xl-start {
7670 -ms-flex-item-align: start !important;
7671 align-self: flex-start !important;
7672 }
7673 .align-self-xl-end {
7674 -ms-flex-item-align: end !important;
7675 align-self: flex-end !important;
7676 }
7677 .align-self-xl-center {
7678 -ms-flex-item-align: center !important;
7679 align-self: center !important;
7680 }
7681 .align-self-xl-baseline {
7682 -ms-flex-item-align: baseline !important;
7683 align-self: baseline !important;
7684 }
7685 .align-self-xl-stretch {
7686 -ms-flex-item-align: stretch !important;
7687 align-self: stretch !important;
7688 }
7689}
7690
7691.float-left {
7692 float: left !important;
7693}
7694
7695.float-right {
7696 float: right !important;
7697}
7698
7699.float-none {
7700 float: none !important;
7701}
7702
7703@media (min-width: 576px) {
7704 .float-sm-left {
7705 float: left !important;
7706 }
7707 .float-sm-right {
7708 float: right !important;
7709 }
7710 .float-sm-none {
7711 float: none !important;
7712 }
7713}
7714
7715@media (min-width: 768px) {
7716 .float-md-left {
7717 float: left !important;
7718 }
7719 .float-md-right {
7720 float: right !important;
7721 }
7722 .float-md-none {
7723 float: none !important;
7724 }
7725}
7726
7727@media (min-width: 992px) {
7728 .float-lg-left {
7729 float: left !important;
7730 }
7731 .float-lg-right {
7732 float: right !important;
7733 }
7734 .float-lg-none {
7735 float: none !important;
7736 }
7737}
7738
7739@media (min-width: 1200px) {
7740 .float-xl-left {
7741 float: left !important;
7742 }
7743 .float-xl-right {
7744 float: right !important;
7745 }
7746 .float-xl-none {
7747 float: none !important;
7748 }
7749}
7750
7751.overflow-auto {
7752 overflow: auto !important;
7753}
7754
7755.overflow-hidden {
7756 overflow: hidden !important;
7757}
7758
7759.position-static {
7760 position: static !important;
7761}
7762
7763.position-relative {
7764 position: relative !important;
7765}
7766
7767.position-absolute {
7768 position: absolute !important;
7769}
7770
7771.position-fixed {
7772 position: fixed !important;
7773}
7774
7775.position-sticky {
7776 position: -webkit-sticky !important;
7777 position: sticky !important;
7778}
7779
7780.fixed-top {
7781 position: fixed;
7782 top: 0;
7783 right: 0;
7784 left: 0;
7785 z-index: 1030;
7786}
7787
7788.fixed-bottom {
7789 position: fixed;
7790 right: 0;
7791 bottom: 0;
7792 left: 0;
7793 z-index: 1030;
7794}
7795
7796@supports ((position: -webkit-sticky) or (position: sticky)) {
7797 .sticky-top {
7798 position: -webkit-sticky;
7799 position: sticky;
7800 top: 0;
7801 z-index: 1020;
7802 }
7803}
7804
7805.sr-only {
7806 position: absolute;
7807 width: 1px;
7808 height: 1px;
7809 padding: 0;
7810 overflow: hidden;
7811 clip: rect(0, 0, 0, 0);
7812 white-space: nowrap;
7813 border: 0;
7814}
7815
7816.sr-only-focusable:active, .sr-only-focusable:focus {
7817 position: static;
7818 width: auto;
7819 height: auto;
7820 overflow: visible;
7821 clip: auto;
7822 white-space: normal;
7823}
7824
7825.shadow-sm {
7826 box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;
7827}
7828
7829.shadow {
7830 box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;
7831}
7832
7833.shadow-lg {
7834 box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;
7835}
7836
7837.shadow-none {
7838 box-shadow: none !important;
7839}
7840
7841.w-25 {
7842 width: 25% !important;
7843}
7844
7845.w-50 {
7846 width: 50% !important;
7847}
7848
7849.w-75 {
7850 width: 75% !important;
7851}
7852
7853.w-100 {
7854 width: 100% !important;
7855}
7856
7857.w-auto {
7858 width: auto !important;
7859}
7860
7861.h-25 {
7862 height: 25% !important;
7863}
7864
7865.h-50 {
7866 height: 50% !important;
7867}
7868
7869.h-75 {
7870 height: 75% !important;
7871}
7872
7873.h-100 {
7874 height: 100% !important;
7875}
7876
7877.h-auto {
7878 height: auto !important;
7879}
7880
7881.mw-100 {
7882 max-width: 100% !important;
7883}
7884
7885.mh-100 {
7886 max-height: 100% !important;
7887}
7888
7889.min-vw-100 {
7890 min-width: 100vw !important;
7891}
7892
7893.min-vh-100 {
7894 min-height: 100vh !important;
7895}
7896
7897.vw-100 {
7898 width: 100vw !important;
7899}
7900
7901.vh-100 {
7902 height: 100vh !important;
7903}
7904
7905.stretched-link::after {
7906 position: absolute;
7907 top: 0;
7908 right: 0;
7909 bottom: 0;
7910 left: 0;
7911 z-index: 1;
7912 pointer-events: auto;
7913 content: "";
7914 background-color: rgba(0, 0, 0, 0);
7915}
7916
7917.m-0 {
7918 margin: 0 !important;
7919}
7920
7921.mt-0,
7922.my-0 {
7923 margin-top: 0 !important;
7924}
7925
7926.mr-0,
7927.mx-0 {
7928 margin-right: 0 !important;
7929}
7930
7931.mb-0,
7932.my-0 {
7933 margin-bottom: 0 !important;
7934}
7935
7936.ml-0,
7937.mx-0 {
7938 margin-left: 0 !important;
7939}
7940
7941.m-1 {
7942 margin: 0.25rem !important;
7943}
7944
7945.mt-1,
7946.my-1 {
7947 margin-top: 0.25rem !important;
7948}
7949
7950.mr-1,
7951.mx-1 {
7952 margin-right: 0.25rem !important;
7953}
7954
7955.mb-1,
7956.my-1 {
7957 margin-bottom: 0.25rem !important;
7958}
7959
7960.ml-1,
7961.mx-1 {
7962 margin-left: 0.25rem !important;
7963}
7964
7965.m-2 {
7966 margin: 0.5rem !important;
7967}
7968
7969.mt-2,
7970.my-2 {
7971 margin-top: 0.5rem !important;
7972}
7973
7974.mr-2,
7975.mx-2 {
7976 margin-right: 0.5rem !important;
7977}
7978
7979.mb-2,
7980.my-2 {
7981 margin-bottom: 0.5rem !important;
7982}
7983
7984.ml-2,
7985.mx-2 {
7986 margin-left: 0.5rem !important;
7987}
7988
7989.m-3 {
7990 margin: 1rem !important;
7991}
7992
7993.mt-3,
7994.my-3 {
7995 margin-top: 1rem !important;
7996}
7997
7998.mr-3,
7999.mx-3 {
8000 margin-right: 1rem !important;
8001}
8002
8003.mb-3,
8004.my-3 {
8005 margin-bottom: 1rem !important;
8006}
8007
8008.ml-3,
8009.mx-3 {
8010 margin-left: 1rem !important;
8011}
8012
8013.m-4 {
8014 margin: 1.5rem !important;
8015}
8016
8017.mt-4,
8018.my-4 {
8019 margin-top: 1.5rem !important;
8020}
8021
8022.mr-4,
8023.mx-4 {
8024 margin-right: 1.5rem !important;
8025}
8026
8027.mb-4,
8028.my-4 {
8029 margin-bottom: 1.5rem !important;
8030}
8031
8032.ml-4,
8033.mx-4 {
8034 margin-left: 1.5rem !important;
8035}
8036
8037.m-5 {
8038 margin: 3rem !important;
8039}
8040
8041.mt-5,
8042.my-5 {
8043 margin-top: 3rem !important;
8044}
8045
8046.mr-5,
8047.mx-5 {
8048 margin-right: 3rem !important;
8049}
8050
8051.mb-5,
8052.my-5 {
8053 margin-bottom: 3rem !important;
8054}
8055
8056.ml-5,
8057.mx-5 {
8058 margin-left: 3rem !important;
8059}
8060
8061.p-0 {
8062 padding: 0 !important;
8063}
8064
8065.pt-0,
8066.py-0 {
8067 padding-top: 0 !important;
8068}
8069
8070.pr-0,
8071.px-0 {
8072 padding-right: 0 !important;
8073}
8074
8075.pb-0,
8076.py-0 {
8077 padding-bottom: 0 !important;
8078}
8079
8080.pl-0,
8081.px-0 {
8082 padding-left: 0 !important;
8083}
8084
8085.p-1 {
8086 padding: 0.25rem !important;
8087}
8088
8089.pt-1,
8090.py-1 {
8091 padding-top: 0.25rem !important;
8092}
8093
8094.pr-1,
8095.px-1 {
8096 padding-right: 0.25rem !important;
8097}
8098
8099.pb-1,
8100.py-1 {
8101 padding-bottom: 0.25rem !important;
8102}
8103
8104.pl-1,
8105.px-1 {
8106 padding-left: 0.25rem !important;
8107}
8108
8109.p-2 {
8110 padding: 0.5rem !important;
8111}
8112
8113.pt-2,
8114.py-2 {
8115 padding-top: 0.5rem !important;
8116}
8117
8118.pr-2,
8119.px-2 {
8120 padding-right: 0.5rem !important;
8121}
8122
8123.pb-2,
8124.py-2 {
8125 padding-bottom: 0.5rem !important;
8126}
8127
8128.pl-2,
8129.px-2 {
8130 padding-left: 0.5rem !important;
8131}
8132
8133.p-3 {
8134 padding: 1rem !important;
8135}
8136
8137.pt-3,
8138.py-3 {
8139 padding-top: 1rem !important;
8140}
8141
8142.pr-3,
8143.px-3 {
8144 padding-right: 1rem !important;
8145}
8146
8147.pb-3,
8148.py-3 {
8149 padding-bottom: 1rem !important;
8150}
8151
8152.pl-3,
8153.px-3 {
8154 padding-left: 1rem !important;
8155}
8156
8157.p-4 {
8158 padding: 1.5rem !important;
8159}
8160
8161.pt-4,
8162.py-4 {
8163 padding-top: 1.5rem !important;
8164}
8165
8166.pr-4,
8167.px-4 {
8168 padding-right: 1.5rem !important;
8169}
8170
8171.pb-4,
8172.py-4 {
8173 padding-bottom: 1.5rem !important;
8174}
8175
8176.pl-4,
8177.px-4 {
8178 padding-left: 1.5rem !important;
8179}
8180
8181.p-5 {
8182 padding: 3rem !important;
8183}
8184
8185.pt-5,
8186.py-5 {
8187 padding-top: 3rem !important;
8188}
8189
8190.pr-5,
8191.px-5 {
8192 padding-right: 3rem !important;
8193}
8194
8195.pb-5,
8196.py-5 {
8197 padding-bottom: 3rem !important;
8198}
8199
8200.pl-5,
8201.px-5 {
8202 padding-left: 3rem !important;
8203}
8204
8205.m-n1 {
8206 margin: -0.25rem !important;
8207}
8208
8209.mt-n1,
8210.my-n1 {
8211 margin-top: -0.25rem !important;
8212}
8213
8214.mr-n1,
8215.mx-n1 {
8216 margin-right: -0.25rem !important;
8217}
8218
8219.mb-n1,
8220.my-n1 {
8221 margin-bottom: -0.25rem !important;
8222}
8223
8224.ml-n1,
8225.mx-n1 {
8226 margin-left: -0.25rem !important;
8227}
8228
8229.m-n2 {
8230 margin: -0.5rem !important;
8231}
8232
8233.mt-n2,
8234.my-n2 {
8235 margin-top: -0.5rem !important;
8236}
8237
8238.mr-n2,
8239.mx-n2 {
8240 margin-right: -0.5rem !important;
8241}
8242
8243.mb-n2,
8244.my-n2 {
8245 margin-bottom: -0.5rem !important;
8246}
8247
8248.ml-n2,
8249.mx-n2 {
8250 margin-left: -0.5rem !important;
8251}
8252
8253.m-n3 {
8254 margin: -1rem !important;
8255}
8256
8257.mt-n3,
8258.my-n3 {
8259 margin-top: -1rem !important;
8260}
8261
8262.mr-n3,
8263.mx-n3 {
8264 margin-right: -1rem !important;
8265}
8266
8267.mb-n3,
8268.my-n3 {
8269 margin-bottom: -1rem !important;
8270}
8271
8272.ml-n3,
8273.mx-n3 {
8274 margin-left: -1rem !important;
8275}
8276
8277.m-n4 {
8278 margin: -1.5rem !important;
8279}
8280
8281.mt-n4,
8282.my-n4 {
8283 margin-top: -1.5rem !important;
8284}
8285
8286.mr-n4,
8287.mx-n4 {
8288 margin-right: -1.5rem !important;
8289}
8290
8291.mb-n4,
8292.my-n4 {
8293 margin-bottom: -1.5rem !important;
8294}
8295
8296.ml-n4,
8297.mx-n4 {
8298 margin-left: -1.5rem !important;
8299}
8300
8301.m-n5 {
8302 margin: -3rem !important;
8303}
8304
8305.mt-n5,
8306.my-n5 {
8307 margin-top: -3rem !important;
8308}
8309
8310.mr-n5,
8311.mx-n5 {
8312 margin-right: -3rem !important;
8313}
8314
8315.mb-n5,
8316.my-n5 {
8317 margin-bottom: -3rem !important;
8318}
8319
8320.ml-n5,
8321.mx-n5 {
8322 margin-left: -3rem !important;
8323}
8324
8325.m-auto {
8326 margin: auto !important;
8327}
8328
8329.mt-auto,
8330.my-auto {
8331 margin-top: auto !important;
8332}
8333
8334.mr-auto,
8335.mx-auto {
8336 margin-right: auto !important;
8337}
8338
8339.mb-auto,
8340.my-auto {
8341 margin-bottom: auto !important;
8342}
8343
8344.ml-auto,
8345.mx-auto {
8346 margin-left: auto !important;
8347}
8348
8349@media (min-width: 576px) {
8350 .m-sm-0 {
8351 margin: 0 !important;
8352 }
8353 .mt-sm-0,
8354 .my-sm-0 {
8355 margin-top: 0 !important;
8356 }
8357 .mr-sm-0,
8358 .mx-sm-0 {
8359 margin-right: 0 !important;
8360 }
8361 .mb-sm-0,
8362 .my-sm-0 {
8363 margin-bottom: 0 !important;
8364 }
8365 .ml-sm-0,
8366 .mx-sm-0 {
8367 margin-left: 0 !important;
8368 }
8369 .m-sm-1 {
8370 margin: 0.25rem !important;
8371 }
8372 .mt-sm-1,
8373 .my-sm-1 {
8374 margin-top: 0.25rem !important;
8375 }
8376 .mr-sm-1,
8377 .mx-sm-1 {
8378 margin-right: 0.25rem !important;
8379 }
8380 .mb-sm-1,
8381 .my-sm-1 {
8382 margin-bottom: 0.25rem !important;
8383 }
8384 .ml-sm-1,
8385 .mx-sm-1 {
8386 margin-left: 0.25rem !important;
8387 }
8388 .m-sm-2 {
8389 margin: 0.5rem !important;
8390 }
8391 .mt-sm-2,
8392 .my-sm-2 {
8393 margin-top: 0.5rem !important;
8394 }
8395 .mr-sm-2,
8396 .mx-sm-2 {
8397 margin-right: 0.5rem !important;
8398 }
8399 .mb-sm-2,
8400 .my-sm-2 {
8401 margin-bottom: 0.5rem !important;
8402 }
8403 .ml-sm-2,
8404 .mx-sm-2 {
8405 margin-left: 0.5rem !important;
8406 }
8407 .m-sm-3 {
8408 margin: 1rem !important;
8409 }
8410 .mt-sm-3,
8411 .my-sm-3 {
8412 margin-top: 1rem !important;
8413 }
8414 .mr-sm-3,
8415 .mx-sm-3 {
8416 margin-right: 1rem !important;
8417 }
8418 .mb-sm-3,
8419 .my-sm-3 {
8420 margin-bottom: 1rem !important;
8421 }
8422 .ml-sm-3,
8423 .mx-sm-3 {
8424 margin-left: 1rem !important;
8425 }
8426 .m-sm-4 {
8427 margin: 1.5rem !important;
8428 }
8429 .mt-sm-4,
8430 .my-sm-4 {
8431 margin-top: 1.5rem !important;
8432 }
8433 .mr-sm-4,
8434 .mx-sm-4 {
8435 margin-right: 1.5rem !important;
8436 }
8437 .mb-sm-4,
8438 .my-sm-4 {
8439 margin-bottom: 1.5rem !important;
8440 }
8441 .ml-sm-4,
8442 .mx-sm-4 {
8443 margin-left: 1.5rem !important;
8444 }
8445 .m-sm-5 {
8446 margin: 3rem !important;
8447 }
8448 .mt-sm-5,
8449 .my-sm-5 {
8450 margin-top: 3rem !important;
8451 }
8452 .mr-sm-5,
8453 .mx-sm-5 {
8454 margin-right: 3rem !important;
8455 }
8456 .mb-sm-5,
8457 .my-sm-5 {
8458 margin-bottom: 3rem !important;
8459 }
8460 .ml-sm-5,
8461 .mx-sm-5 {
8462 margin-left: 3rem !important;
8463 }
8464 .p-sm-0 {
8465 padding: 0 !important;
8466 }
8467 .pt-sm-0,
8468 .py-sm-0 {
8469 padding-top: 0 !important;
8470 }
8471 .pr-sm-0,
8472 .px-sm-0 {
8473 padding-right: 0 !important;
8474 }
8475 .pb-sm-0,
8476 .py-sm-0 {
8477 padding-bottom: 0 !important;
8478 }
8479 .pl-sm-0,
8480 .px-sm-0 {
8481 padding-left: 0 !important;
8482 }
8483 .p-sm-1 {
8484 padding: 0.25rem !important;
8485 }
8486 .pt-sm-1,
8487 .py-sm-1 {
8488 padding-top: 0.25rem !important;
8489 }
8490 .pr-sm-1,
8491 .px-sm-1 {
8492 padding-right: 0.25rem !important;
8493 }
8494 .pb-sm-1,
8495 .py-sm-1 {
8496 padding-bottom: 0.25rem !important;
8497 }
8498 .pl-sm-1,
8499 .px-sm-1 {
8500 padding-left: 0.25rem !important;
8501 }
8502 .p-sm-2 {
8503 padding: 0.5rem !important;
8504 }
8505 .pt-sm-2,
8506 .py-sm-2 {
8507 padding-top: 0.5rem !important;
8508 }
8509 .pr-sm-2,
8510 .px-sm-2 {
8511 padding-right: 0.5rem !important;
8512 }
8513 .pb-sm-2,
8514 .py-sm-2 {
8515 padding-bottom: 0.5rem !important;
8516 }
8517 .pl-sm-2,
8518 .px-sm-2 {
8519 padding-left: 0.5rem !important;
8520 }
8521 .p-sm-3 {
8522 padding: 1rem !important;
8523 }
8524 .pt-sm-3,
8525 .py-sm-3 {
8526 padding-top: 1rem !important;
8527 }
8528 .pr-sm-3,
8529 .px-sm-3 {
8530 padding-right: 1rem !important;
8531 }
8532 .pb-sm-3,
8533 .py-sm-3 {
8534 padding-bottom: 1rem !important;
8535 }
8536 .pl-sm-3,
8537 .px-sm-3 {
8538 padding-left: 1rem !important;
8539 }
8540 .p-sm-4 {
8541 padding: 1.5rem !important;
8542 }
8543 .pt-sm-4,
8544 .py-sm-4 {
8545 padding-top: 1.5rem !important;
8546 }
8547 .pr-sm-4,
8548 .px-sm-4 {
8549 padding-right: 1.5rem !important;
8550 }
8551 .pb-sm-4,
8552 .py-sm-4 {
8553 padding-bottom: 1.5rem !important;
8554 }
8555 .pl-sm-4,
8556 .px-sm-4 {
8557 padding-left: 1.5rem !important;
8558 }
8559 .p-sm-5 {
8560 padding: 3rem !important;
8561 }
8562 .pt-sm-5,
8563 .py-sm-5 {
8564 padding-top: 3rem !important;
8565 }
8566 .pr-sm-5,
8567 .px-sm-5 {
8568 padding-right: 3rem !important;
8569 }
8570 .pb-sm-5,
8571 .py-sm-5 {
8572 padding-bottom: 3rem !important;
8573 }
8574 .pl-sm-5,
8575 .px-sm-5 {
8576 padding-left: 3rem !important;
8577 }
8578 .m-sm-n1 {
8579 margin: -0.25rem !important;
8580 }
8581 .mt-sm-n1,
8582 .my-sm-n1 {
8583 margin-top: -0.25rem !important;
8584 }
8585 .mr-sm-n1,
8586 .mx-sm-n1 {
8587 margin-right: -0.25rem !important;
8588 }
8589 .mb-sm-n1,
8590 .my-sm-n1 {
8591 margin-bottom: -0.25rem !important;
8592 }
8593 .ml-sm-n1,
8594 .mx-sm-n1 {
8595 margin-left: -0.25rem !important;
8596 }
8597 .m-sm-n2 {
8598 margin: -0.5rem !important;
8599 }
8600 .mt-sm-n2,
8601 .my-sm-n2 {
8602 margin-top: -0.5rem !important;
8603 }
8604 .mr-sm-n2,
8605 .mx-sm-n2 {
8606 margin-right: -0.5rem !important;
8607 }
8608 .mb-sm-n2,
8609 .my-sm-n2 {
8610 margin-bottom: -0.5rem !important;
8611 }
8612 .ml-sm-n2,
8613 .mx-sm-n2 {
8614 margin-left: -0.5rem !important;
8615 }
8616 .m-sm-n3 {
8617 margin: -1rem !important;
8618 }
8619 .mt-sm-n3,
8620 .my-sm-n3 {
8621 margin-top: -1rem !important;
8622 }
8623 .mr-sm-n3,
8624 .mx-sm-n3 {
8625 margin-right: -1rem !important;
8626 }
8627 .mb-sm-n3,
8628 .my-sm-n3 {
8629 margin-bottom: -1rem !important;
8630 }
8631 .ml-sm-n3,
8632 .mx-sm-n3 {
8633 margin-left: -1rem !important;
8634 }
8635 .m-sm-n4 {
8636 margin: -1.5rem !important;
8637 }
8638 .mt-sm-n4,
8639 .my-sm-n4 {
8640 margin-top: -1.5rem !important;
8641 }
8642 .mr-sm-n4,
8643 .mx-sm-n4 {
8644 margin-right: -1.5rem !important;
8645 }
8646 .mb-sm-n4,
8647 .my-sm-n4 {
8648 margin-bottom: -1.5rem !important;
8649 }
8650 .ml-sm-n4,
8651 .mx-sm-n4 {
8652 margin-left: -1.5rem !important;
8653 }
8654 .m-sm-n5 {
8655 margin: -3rem !important;
8656 }
8657 .mt-sm-n5,
8658 .my-sm-n5 {
8659 margin-top: -3rem !important;
8660 }
8661 .mr-sm-n5,
8662 .mx-sm-n5 {
8663 margin-right: -3rem !important;
8664 }
8665 .mb-sm-n5,
8666 .my-sm-n5 {
8667 margin-bottom: -3rem !important;
8668 }
8669 .ml-sm-n5,
8670 .mx-sm-n5 {
8671 margin-left: -3rem !important;
8672 }
8673 .m-sm-auto {
8674 margin: auto !important;
8675 }
8676 .mt-sm-auto,
8677 .my-sm-auto {
8678 margin-top: auto !important;
8679 }
8680 .mr-sm-auto,
8681 .mx-sm-auto {
8682 margin-right: auto !important;
8683 }
8684 .mb-sm-auto,
8685 .my-sm-auto {
8686 margin-bottom: auto !important;
8687 }
8688 .ml-sm-auto,
8689 .mx-sm-auto {
8690 margin-left: auto !important;
8691 }
8692}
8693
8694@media (min-width: 768px) {
8695 .m-md-0 {
8696 margin: 0 !important;
8697 }
8698 .mt-md-0,
8699 .my-md-0 {
8700 margin-top: 0 !important;
8701 }
8702 .mr-md-0,
8703 .mx-md-0 {
8704 margin-right: 0 !important;
8705 }
8706 .mb-md-0,
8707 .my-md-0 {
8708 margin-bottom: 0 !important;
8709 }
8710 .ml-md-0,
8711 .mx-md-0 {
8712 margin-left: 0 !important;
8713 }
8714 .m-md-1 {
8715 margin: 0.25rem !important;
8716 }
8717 .mt-md-1,
8718 .my-md-1 {
8719 margin-top: 0.25rem !important;
8720 }
8721 .mr-md-1,
8722 .mx-md-1 {
8723 margin-right: 0.25rem !important;
8724 }
8725 .mb-md-1,
8726 .my-md-1 {
8727 margin-bottom: 0.25rem !important;
8728 }
8729 .ml-md-1,
8730 .mx-md-1 {
8731 margin-left: 0.25rem !important;
8732 }
8733 .m-md-2 {
8734 margin: 0.5rem !important;
8735 }
8736 .mt-md-2,
8737 .my-md-2 {
8738 margin-top: 0.5rem !important;
8739 }
8740 .mr-md-2,
8741 .mx-md-2 {
8742 margin-right: 0.5rem !important;
8743 }
8744 .mb-md-2,
8745 .my-md-2 {
8746 margin-bottom: 0.5rem !important;
8747 }
8748 .ml-md-2,
8749 .mx-md-2 {
8750 margin-left: 0.5rem !important;
8751 }
8752 .m-md-3 {
8753 margin: 1rem !important;
8754 }
8755 .mt-md-3,
8756 .my-md-3 {
8757 margin-top: 1rem !important;
8758 }
8759 .mr-md-3,
8760 .mx-md-3 {
8761 margin-right: 1rem !important;
8762 }
8763 .mb-md-3,
8764 .my-md-3 {
8765 margin-bottom: 1rem !important;
8766 }
8767 .ml-md-3,
8768 .mx-md-3 {
8769 margin-left: 1rem !important;
8770 }
8771 .m-md-4 {
8772 margin: 1.5rem !important;
8773 }
8774 .mt-md-4,
8775 .my-md-4 {
8776 margin-top: 1.5rem !important;
8777 }
8778 .mr-md-4,
8779 .mx-md-4 {
8780 margin-right: 1.5rem !important;
8781 }
8782 .mb-md-4,
8783 .my-md-4 {
8784 margin-bottom: 1.5rem !important;
8785 }
8786 .ml-md-4,
8787 .mx-md-4 {
8788 margin-left: 1.5rem !important;
8789 }
8790 .m-md-5 {
8791 margin: 3rem !important;
8792 }
8793 .mt-md-5,
8794 .my-md-5 {
8795 margin-top: 3rem !important;
8796 }
8797 .mr-md-5,
8798 .mx-md-5 {
8799 margin-right: 3rem !important;
8800 }
8801 .mb-md-5,
8802 .my-md-5 {
8803 margin-bottom: 3rem !important;
8804 }
8805 .ml-md-5,
8806 .mx-md-5 {
8807 margin-left: 3rem !important;
8808 }
8809 .p-md-0 {
8810 padding: 0 !important;
8811 }
8812 .pt-md-0,
8813 .py-md-0 {
8814 padding-top: 0 !important;
8815 }
8816 .pr-md-0,
8817 .px-md-0 {
8818 padding-right: 0 !important;
8819 }
8820 .pb-md-0,
8821 .py-md-0 {
8822 padding-bottom: 0 !important;
8823 }
8824 .pl-md-0,
8825 .px-md-0 {
8826 padding-left: 0 !important;
8827 }
8828 .p-md-1 {
8829 padding: 0.25rem !important;
8830 }
8831 .pt-md-1,
8832 .py-md-1 {
8833 padding-top: 0.25rem !important;
8834 }
8835 .pr-md-1,
8836 .px-md-1 {
8837 padding-right: 0.25rem !important;
8838 }
8839 .pb-md-1,
8840 .py-md-1 {
8841 padding-bottom: 0.25rem !important;
8842 }
8843 .pl-md-1,
8844 .px-md-1 {
8845 padding-left: 0.25rem !important;
8846 }
8847 .p-md-2 {
8848 padding: 0.5rem !important;
8849 }
8850 .pt-md-2,
8851 .py-md-2 {
8852 padding-top: 0.5rem !important;
8853 }
8854 .pr-md-2,
8855 .px-md-2 {
8856 padding-right: 0.5rem !important;
8857 }
8858 .pb-md-2,
8859 .py-md-2 {
8860 padding-bottom: 0.5rem !important;
8861 }
8862 .pl-md-2,
8863 .px-md-2 {
8864 padding-left: 0.5rem !important;
8865 }
8866 .p-md-3 {
8867 padding: 1rem !important;
8868 }
8869 .pt-md-3,
8870 .py-md-3 {
8871 padding-top: 1rem !important;
8872 }
8873 .pr-md-3,
8874 .px-md-3 {
8875 padding-right: 1rem !important;
8876 }
8877 .pb-md-3,
8878 .py-md-3 {
8879 padding-bottom: 1rem !important;
8880 }
8881 .pl-md-3,
8882 .px-md-3 {
8883 padding-left: 1rem !important;
8884 }
8885 .p-md-4 {
8886 padding: 1.5rem !important;
8887 }
8888 .pt-md-4,
8889 .py-md-4 {
8890 padding-top: 1.5rem !important;
8891 }
8892 .pr-md-4,
8893 .px-md-4 {
8894 padding-right: 1.5rem !important;
8895 }
8896 .pb-md-4,
8897 .py-md-4 {
8898 padding-bottom: 1.5rem !important;
8899 }
8900 .pl-md-4,
8901 .px-md-4 {
8902 padding-left: 1.5rem !important;
8903 }
8904 .p-md-5 {
8905 padding: 3rem !important;
8906 }
8907 .pt-md-5,
8908 .py-md-5 {
8909 padding-top: 3rem !important;
8910 }
8911 .pr-md-5,
8912 .px-md-5 {
8913 padding-right: 3rem !important;
8914 }
8915 .pb-md-5,
8916 .py-md-5 {
8917 padding-bottom: 3rem !important;
8918 }
8919 .pl-md-5,
8920 .px-md-5 {
8921 padding-left: 3rem !important;
8922 }
8923 .m-md-n1 {
8924 margin: -0.25rem !important;
8925 }
8926 .mt-md-n1,
8927 .my-md-n1 {
8928 margin-top: -0.25rem !important;
8929 }
8930 .mr-md-n1,
8931 .mx-md-n1 {
8932 margin-right: -0.25rem !important;
8933 }
8934 .mb-md-n1,
8935 .my-md-n1 {
8936 margin-bottom: -0.25rem !important;
8937 }
8938 .ml-md-n1,
8939 .mx-md-n1 {
8940 margin-left: -0.25rem !important;
8941 }
8942 .m-md-n2 {
8943 margin: -0.5rem !important;
8944 }
8945 .mt-md-n2,
8946 .my-md-n2 {
8947 margin-top: -0.5rem !important;
8948 }
8949 .mr-md-n2,
8950 .mx-md-n2 {
8951 margin-right: -0.5rem !important;
8952 }
8953 .mb-md-n2,
8954 .my-md-n2 {
8955 margin-bottom: -0.5rem !important;
8956 }
8957 .ml-md-n2,
8958 .mx-md-n2 {
8959 margin-left: -0.5rem !important;
8960 }
8961 .m-md-n3 {
8962 margin: -1rem !important;
8963 }
8964 .mt-md-n3,
8965 .my-md-n3 {
8966 margin-top: -1rem !important;
8967 }
8968 .mr-md-n3,
8969 .mx-md-n3 {
8970 margin-right: -1rem !important;
8971 }
8972 .mb-md-n3,
8973 .my-md-n3 {
8974 margin-bottom: -1rem !important;
8975 }
8976 .ml-md-n3,
8977 .mx-md-n3 {
8978 margin-left: -1rem !important;
8979 }
8980 .m-md-n4 {
8981 margin: -1.5rem !important;
8982 }
8983 .mt-md-n4,
8984 .my-md-n4 {
8985 margin-top: -1.5rem !important;
8986 }
8987 .mr-md-n4,
8988 .mx-md-n4 {
8989 margin-right: -1.5rem !important;
8990 }
8991 .mb-md-n4,
8992 .my-md-n4 {
8993 margin-bottom: -1.5rem !important;
8994 }
8995 .ml-md-n4,
8996 .mx-md-n4 {
8997 margin-left: -1.5rem !important;
8998 }
8999 .m-md-n5 {
9000 margin: -3rem !important;
9001 }
9002 .mt-md-n5,
9003 .my-md-n5 {
9004 margin-top: -3rem !important;
9005 }
9006 .mr-md-n5,
9007 .mx-md-n5 {
9008 margin-right: -3rem !important;
9009 }
9010 .mb-md-n5,
9011 .my-md-n5 {
9012 margin-bottom: -3rem !important;
9013 }
9014 .ml-md-n5,
9015 .mx-md-n5 {
9016 margin-left: -3rem !important;
9017 }
9018 .m-md-auto {
9019 margin: auto !important;
9020 }
9021 .mt-md-auto,
9022 .my-md-auto {
9023 margin-top: auto !important;
9024 }
9025 .mr-md-auto,
9026 .mx-md-auto {
9027 margin-right: auto !important;
9028 }
9029 .mb-md-auto,
9030 .my-md-auto {
9031 margin-bottom: auto !important;
9032 }
9033 .ml-md-auto,
9034 .mx-md-auto {
9035 margin-left: auto !important;
9036 }
9037}
9038
9039@media (min-width: 992px) {
9040 .m-lg-0 {
9041 margin: 0 !important;
9042 }
9043 .mt-lg-0,
9044 .my-lg-0 {
9045 margin-top: 0 !important;
9046 }
9047 .mr-lg-0,
9048 .mx-lg-0 {
9049 margin-right: 0 !important;
9050 }
9051 .mb-lg-0,
9052 .my-lg-0 {
9053 margin-bottom: 0 !important;
9054 }
9055 .ml-lg-0,
9056 .mx-lg-0 {
9057 margin-left: 0 !important;
9058 }
9059 .m-lg-1 {
9060 margin: 0.25rem !important;
9061 }
9062 .mt-lg-1,
9063 .my-lg-1 {
9064 margin-top: 0.25rem !important;
9065 }
9066 .mr-lg-1,
9067 .mx-lg-1 {
9068 margin-right: 0.25rem !important;
9069 }
9070 .mb-lg-1,
9071 .my-lg-1 {
9072 margin-bottom: 0.25rem !important;
9073 }
9074 .ml-lg-1,
9075 .mx-lg-1 {
9076 margin-left: 0.25rem !important;
9077 }
9078 .m-lg-2 {
9079 margin: 0.5rem !important;
9080 }
9081 .mt-lg-2,
9082 .my-lg-2 {
9083 margin-top: 0.5rem !important;
9084 }
9085 .mr-lg-2,
9086 .mx-lg-2 {
9087 margin-right: 0.5rem !important;
9088 }
9089 .mb-lg-2,
9090 .my-lg-2 {
9091 margin-bottom: 0.5rem !important;
9092 }
9093 .ml-lg-2,
9094 .mx-lg-2 {
9095 margin-left: 0.5rem !important;
9096 }
9097 .m-lg-3 {
9098 margin: 1rem !important;
9099 }
9100 .mt-lg-3,
9101 .my-lg-3 {
9102 margin-top: 1rem !important;
9103 }
9104 .mr-lg-3,
9105 .mx-lg-3 {
9106 margin-right: 1rem !important;
9107 }
9108 .mb-lg-3,
9109 .my-lg-3 {
9110 margin-bottom: 1rem !important;
9111 }
9112 .ml-lg-3,
9113 .mx-lg-3 {
9114 margin-left: 1rem !important;
9115 }
9116 .m-lg-4 {
9117 margin: 1.5rem !important;
9118 }
9119 .mt-lg-4,
9120 .my-lg-4 {
9121 margin-top: 1.5rem !important;
9122 }
9123 .mr-lg-4,
9124 .mx-lg-4 {
9125 margin-right: 1.5rem !important;
9126 }
9127 .mb-lg-4,
9128 .my-lg-4 {
9129 margin-bottom: 1.5rem !important;
9130 }
9131 .ml-lg-4,
9132 .mx-lg-4 {
9133 margin-left: 1.5rem !important;
9134 }
9135 .m-lg-5 {
9136 margin: 3rem !important;
9137 }
9138 .mt-lg-5,
9139 .my-lg-5 {
9140 margin-top: 3rem !important;
9141 }
9142 .mr-lg-5,
9143 .mx-lg-5 {
9144 margin-right: 3rem !important;
9145 }
9146 .mb-lg-5,
9147 .my-lg-5 {
9148 margin-bottom: 3rem !important;
9149 }
9150 .ml-lg-5,
9151 .mx-lg-5 {
9152 margin-left: 3rem !important;
9153 }
9154 .p-lg-0 {
9155 padding: 0 !important;
9156 }
9157 .pt-lg-0,
9158 .py-lg-0 {
9159 padding-top: 0 !important;
9160 }
9161 .pr-lg-0,
9162 .px-lg-0 {
9163 padding-right: 0 !important;
9164 }
9165 .pb-lg-0,
9166 .py-lg-0 {
9167 padding-bottom: 0 !important;
9168 }
9169 .pl-lg-0,
9170 .px-lg-0 {
9171 padding-left: 0 !important;
9172 }
9173 .p-lg-1 {
9174 padding: 0.25rem !important;
9175 }
9176 .pt-lg-1,
9177 .py-lg-1 {
9178 padding-top: 0.25rem !important;
9179 }
9180 .pr-lg-1,
9181 .px-lg-1 {
9182 padding-right: 0.25rem !important;
9183 }
9184 .pb-lg-1,
9185 .py-lg-1 {
9186 padding-bottom: 0.25rem !important;
9187 }
9188 .pl-lg-1,
9189 .px-lg-1 {
9190 padding-left: 0.25rem !important;
9191 }
9192 .p-lg-2 {
9193 padding: 0.5rem !important;
9194 }
9195 .pt-lg-2,
9196 .py-lg-2 {
9197 padding-top: 0.5rem !important;
9198 }
9199 .pr-lg-2,
9200 .px-lg-2 {
9201 padding-right: 0.5rem !important;
9202 }
9203 .pb-lg-2,
9204 .py-lg-2 {
9205 padding-bottom: 0.5rem !important;
9206 }
9207 .pl-lg-2,
9208 .px-lg-2 {
9209 padding-left: 0.5rem !important;
9210 }
9211 .p-lg-3 {
9212 padding: 1rem !important;
9213 }
9214 .pt-lg-3,
9215 .py-lg-3 {
9216 padding-top: 1rem !important;
9217 }
9218 .pr-lg-3,
9219 .px-lg-3 {
9220 padding-right: 1rem !important;
9221 }
9222 .pb-lg-3,
9223 .py-lg-3 {
9224 padding-bottom: 1rem !important;
9225 }
9226 .pl-lg-3,
9227 .px-lg-3 {
9228 padding-left: 1rem !important;
9229 }
9230 .p-lg-4 {
9231 padding: 1.5rem !important;
9232 }
9233 .pt-lg-4,
9234 .py-lg-4 {
9235 padding-top: 1.5rem !important;
9236 }
9237 .pr-lg-4,
9238 .px-lg-4 {
9239 padding-right: 1.5rem !important;
9240 }
9241 .pb-lg-4,
9242 .py-lg-4 {
9243 padding-bottom: 1.5rem !important;
9244 }
9245 .pl-lg-4,
9246 .px-lg-4 {
9247 padding-left: 1.5rem !important;
9248 }
9249 .p-lg-5 {
9250 padding: 3rem !important;
9251 }
9252 .pt-lg-5,
9253 .py-lg-5 {
9254 padding-top: 3rem !important;
9255 }
9256 .pr-lg-5,
9257 .px-lg-5 {
9258 padding-right: 3rem !important;
9259 }
9260 .pb-lg-5,
9261 .py-lg-5 {
9262 padding-bottom: 3rem !important;
9263 }
9264 .pl-lg-5,
9265 .px-lg-5 {
9266 padding-left: 3rem !important;
9267 }
9268 .m-lg-n1 {
9269 margin: -0.25rem !important;
9270 }
9271 .mt-lg-n1,
9272 .my-lg-n1 {
9273 margin-top: -0.25rem !important;
9274 }
9275 .mr-lg-n1,
9276 .mx-lg-n1 {
9277 margin-right: -0.25rem !important;
9278 }
9279 .mb-lg-n1,
9280 .my-lg-n1 {
9281 margin-bottom: -0.25rem !important;
9282 }
9283 .ml-lg-n1,
9284 .mx-lg-n1 {
9285 margin-left: -0.25rem !important;
9286 }
9287 .m-lg-n2 {
9288 margin: -0.5rem !important;
9289 }
9290 .mt-lg-n2,
9291 .my-lg-n2 {
9292 margin-top: -0.5rem !important;
9293 }
9294 .mr-lg-n2,
9295 .mx-lg-n2 {
9296 margin-right: -0.5rem !important;
9297 }
9298 .mb-lg-n2,
9299 .my-lg-n2 {
9300 margin-bottom: -0.5rem !important;
9301 }
9302 .ml-lg-n2,
9303 .mx-lg-n2 {
9304 margin-left: -0.5rem !important;
9305 }
9306 .m-lg-n3 {
9307 margin: -1rem !important;
9308 }
9309 .mt-lg-n3,
9310 .my-lg-n3 {
9311 margin-top: -1rem !important;
9312 }
9313 .mr-lg-n3,
9314 .mx-lg-n3 {
9315 margin-right: -1rem !important;
9316 }
9317 .mb-lg-n3,
9318 .my-lg-n3 {
9319 margin-bottom: -1rem !important;
9320 }
9321 .ml-lg-n3,
9322 .mx-lg-n3 {
9323 margin-left: -1rem !important;
9324 }
9325 .m-lg-n4 {
9326 margin: -1.5rem !important;
9327 }
9328 .mt-lg-n4,
9329 .my-lg-n4 {
9330 margin-top: -1.5rem !important;
9331 }
9332 .mr-lg-n4,
9333 .mx-lg-n4 {
9334 margin-right: -1.5rem !important;
9335 }
9336 .mb-lg-n4,
9337 .my-lg-n4 {
9338 margin-bottom: -1.5rem !important;
9339 }
9340 .ml-lg-n4,
9341 .mx-lg-n4 {
9342 margin-left: -1.5rem !important;
9343 }
9344 .m-lg-n5 {
9345 margin: -3rem !important;
9346 }
9347 .mt-lg-n5,
9348 .my-lg-n5 {
9349 margin-top: -3rem !important;
9350 }
9351 .mr-lg-n5,
9352 .mx-lg-n5 {
9353 margin-right: -3rem !important;
9354 }
9355 .mb-lg-n5,
9356 .my-lg-n5 {
9357 margin-bottom: -3rem !important;
9358 }
9359 .ml-lg-n5,
9360 .mx-lg-n5 {
9361 margin-left: -3rem !important;
9362 }
9363 .m-lg-auto {
9364 margin: auto !important;
9365 }
9366 .mt-lg-auto,
9367 .my-lg-auto {
9368 margin-top: auto !important;
9369 }
9370 .mr-lg-auto,
9371 .mx-lg-auto {
9372 margin-right: auto !important;
9373 }
9374 .mb-lg-auto,
9375 .my-lg-auto {
9376 margin-bottom: auto !important;
9377 }
9378 .ml-lg-auto,
9379 .mx-lg-auto {
9380 margin-left: auto !important;
9381 }
9382}
9383
9384@media (min-width: 1200px) {
9385 .m-xl-0 {
9386 margin: 0 !important;
9387 }
9388 .mt-xl-0,
9389 .my-xl-0 {
9390 margin-top: 0 !important;
9391 }
9392 .mr-xl-0,
9393 .mx-xl-0 {
9394 margin-right: 0 !important;
9395 }
9396 .mb-xl-0,
9397 .my-xl-0 {
9398 margin-bottom: 0 !important;
9399 }
9400 .ml-xl-0,
9401 .mx-xl-0 {
9402 margin-left: 0 !important;
9403 }
9404 .m-xl-1 {
9405 margin: 0.25rem !important;
9406 }
9407 .mt-xl-1,
9408 .my-xl-1 {
9409 margin-top: 0.25rem !important;
9410 }
9411 .mr-xl-1,
9412 .mx-xl-1 {
9413 margin-right: 0.25rem !important;
9414 }
9415 .mb-xl-1,
9416 .my-xl-1 {
9417 margin-bottom: 0.25rem !important;
9418 }
9419 .ml-xl-1,
9420 .mx-xl-1 {
9421 margin-left: 0.25rem !important;
9422 }
9423 .m-xl-2 {
9424 margin: 0.5rem !important;
9425 }
9426 .mt-xl-2,
9427 .my-xl-2 {
9428 margin-top: 0.5rem !important;
9429 }
9430 .mr-xl-2,
9431 .mx-xl-2 {
9432 margin-right: 0.5rem !important;
9433 }
9434 .mb-xl-2,
9435 .my-xl-2 {
9436 margin-bottom: 0.5rem !important;
9437 }
9438 .ml-xl-2,
9439 .mx-xl-2 {
9440 margin-left: 0.5rem !important;
9441 }
9442 .m-xl-3 {
9443 margin: 1rem !important;
9444 }
9445 .mt-xl-3,
9446 .my-xl-3 {
9447 margin-top: 1rem !important;
9448 }
9449 .mr-xl-3,
9450 .mx-xl-3 {
9451 margin-right: 1rem !important;
9452 }
9453 .mb-xl-3,
9454 .my-xl-3 {
9455 margin-bottom: 1rem !important;
9456 }
9457 .ml-xl-3,
9458 .mx-xl-3 {
9459 margin-left: 1rem !important;
9460 }
9461 .m-xl-4 {
9462 margin: 1.5rem !important;
9463 }
9464 .mt-xl-4,
9465 .my-xl-4 {
9466 margin-top: 1.5rem !important;
9467 }
9468 .mr-xl-4,
9469 .mx-xl-4 {
9470 margin-right: 1.5rem !important;
9471 }
9472 .mb-xl-4,
9473 .my-xl-4 {
9474 margin-bottom: 1.5rem !important;
9475 }
9476 .ml-xl-4,
9477 .mx-xl-4 {
9478 margin-left: 1.5rem !important;
9479 }
9480 .m-xl-5 {
9481 margin: 3rem !important;
9482 }
9483 .mt-xl-5,
9484 .my-xl-5 {
9485 margin-top: 3rem !important;
9486 }
9487 .mr-xl-5,
9488 .mx-xl-5 {
9489 margin-right: 3rem !important;
9490 }
9491 .mb-xl-5,
9492 .my-xl-5 {
9493 margin-bottom: 3rem !important;
9494 }
9495 .ml-xl-5,
9496 .mx-xl-5 {
9497 margin-left: 3rem !important;
9498 }
9499 .p-xl-0 {
9500 padding: 0 !important;
9501 }
9502 .pt-xl-0,
9503 .py-xl-0 {
9504 padding-top: 0 !important;
9505 }
9506 .pr-xl-0,
9507 .px-xl-0 {
9508 padding-right: 0 !important;
9509 }
9510 .pb-xl-0,
9511 .py-xl-0 {
9512 padding-bottom: 0 !important;
9513 }
9514 .pl-xl-0,
9515 .px-xl-0 {
9516 padding-left: 0 !important;
9517 }
9518 .p-xl-1 {
9519 padding: 0.25rem !important;
9520 }
9521 .pt-xl-1,
9522 .py-xl-1 {
9523 padding-top: 0.25rem !important;
9524 }
9525 .pr-xl-1,
9526 .px-xl-1 {
9527 padding-right: 0.25rem !important;
9528 }
9529 .pb-xl-1,
9530 .py-xl-1 {
9531 padding-bottom: 0.25rem !important;
9532 }
9533 .pl-xl-1,
9534 .px-xl-1 {
9535 padding-left: 0.25rem !important;
9536 }
9537 .p-xl-2 {
9538 padding: 0.5rem !important;
9539 }
9540 .pt-xl-2,
9541 .py-xl-2 {
9542 padding-top: 0.5rem !important;
9543 }
9544 .pr-xl-2,
9545 .px-xl-2 {
9546 padding-right: 0.5rem !important;
9547 }
9548 .pb-xl-2,
9549 .py-xl-2 {
9550 padding-bottom: 0.5rem !important;
9551 }
9552 .pl-xl-2,
9553 .px-xl-2 {
9554 padding-left: 0.5rem !important;
9555 }
9556 .p-xl-3 {
9557 padding: 1rem !important;
9558 }
9559 .pt-xl-3,
9560 .py-xl-3 {
9561 padding-top: 1rem !important;
9562 }
9563 .pr-xl-3,
9564 .px-xl-3 {
9565 padding-right: 1rem !important;
9566 }
9567 .pb-xl-3,
9568 .py-xl-3 {
9569 padding-bottom: 1rem !important;
9570 }
9571 .pl-xl-3,
9572 .px-xl-3 {
9573 padding-left: 1rem !important;
9574 }
9575 .p-xl-4 {
9576 padding: 1.5rem !important;
9577 }
9578 .pt-xl-4,
9579 .py-xl-4 {
9580 padding-top: 1.5rem !important;
9581 }
9582 .pr-xl-4,
9583 .px-xl-4 {
9584 padding-right: 1.5rem !important;
9585 }
9586 .pb-xl-4,
9587 .py-xl-4 {
9588 padding-bottom: 1.5rem !important;
9589 }
9590 .pl-xl-4,
9591 .px-xl-4 {
9592 padding-left: 1.5rem !important;
9593 }
9594 .p-xl-5 {
9595 padding: 3rem !important;
9596 }
9597 .pt-xl-5,
9598 .py-xl-5 {
9599 padding-top: 3rem !important;
9600 }
9601 .pr-xl-5,
9602 .px-xl-5 {
9603 padding-right: 3rem !important;
9604 }
9605 .pb-xl-5,
9606 .py-xl-5 {
9607 padding-bottom: 3rem !important;
9608 }
9609 .pl-xl-5,
9610 .px-xl-5 {
9611 padding-left: 3rem !important;
9612 }
9613 .m-xl-n1 {
9614 margin: -0.25rem !important;
9615 }
9616 .mt-xl-n1,
9617 .my-xl-n1 {
9618 margin-top: -0.25rem !important;
9619 }
9620 .mr-xl-n1,
9621 .mx-xl-n1 {
9622 margin-right: -0.25rem !important;
9623 }
9624 .mb-xl-n1,
9625 .my-xl-n1 {
9626 margin-bottom: -0.25rem !important;
9627 }
9628 .ml-xl-n1,
9629 .mx-xl-n1 {
9630 margin-left: -0.25rem !important;
9631 }
9632 .m-xl-n2 {
9633 margin: -0.5rem !important;
9634 }
9635 .mt-xl-n2,
9636 .my-xl-n2 {
9637 margin-top: -0.5rem !important;
9638 }
9639 .mr-xl-n2,
9640 .mx-xl-n2 {
9641 margin-right: -0.5rem !important;
9642 }
9643 .mb-xl-n2,
9644 .my-xl-n2 {
9645 margin-bottom: -0.5rem !important;
9646 }
9647 .ml-xl-n2,
9648 .mx-xl-n2 {
9649 margin-left: -0.5rem !important;
9650 }
9651 .m-xl-n3 {
9652 margin: -1rem !important;
9653 }
9654 .mt-xl-n3,
9655 .my-xl-n3 {
9656 margin-top: -1rem !important;
9657 }
9658 .mr-xl-n3,
9659 .mx-xl-n3 {
9660 margin-right: -1rem !important;
9661 }
9662 .mb-xl-n3,
9663 .my-xl-n3 {
9664 margin-bottom: -1rem !important;
9665 }
9666 .ml-xl-n3,
9667 .mx-xl-n3 {
9668 margin-left: -1rem !important;
9669 }
9670 .m-xl-n4 {
9671 margin: -1.5rem !important;
9672 }
9673 .mt-xl-n4,
9674 .my-xl-n4 {
9675 margin-top: -1.5rem !important;
9676 }
9677 .mr-xl-n4,
9678 .mx-xl-n4 {
9679 margin-right: -1.5rem !important;
9680 }
9681 .mb-xl-n4,
9682 .my-xl-n4 {
9683 margin-bottom: -1.5rem !important;
9684 }
9685 .ml-xl-n4,
9686 .mx-xl-n4 {
9687 margin-left: -1.5rem !important;
9688 }
9689 .m-xl-n5 {
9690 margin: -3rem !important;
9691 }
9692 .mt-xl-n5,
9693 .my-xl-n5 {
9694 margin-top: -3rem !important;
9695 }
9696 .mr-xl-n5,
9697 .mx-xl-n5 {
9698 margin-right: -3rem !important;
9699 }
9700 .mb-xl-n5,
9701 .my-xl-n5 {
9702 margin-bottom: -3rem !important;
9703 }
9704 .ml-xl-n5,
9705 .mx-xl-n5 {
9706 margin-left: -3rem !important;
9707 }
9708 .m-xl-auto {
9709 margin: auto !important;
9710 }
9711 .mt-xl-auto,
9712 .my-xl-auto {
9713 margin-top: auto !important;
9714 }
9715 .mr-xl-auto,
9716 .mx-xl-auto {
9717 margin-right: auto !important;
9718 }
9719 .mb-xl-auto,
9720 .my-xl-auto {
9721 margin-bottom: auto !important;
9722 }
9723 .ml-xl-auto,
9724 .mx-xl-auto {
9725 margin-left: auto !important;
9726 }
9727}
9728
9729.text-monospace {
9730 font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important;
9731}
9732
9733.text-justify {
9734 text-align: justify !important;
9735}
9736
9737.text-wrap {
9738 white-space: normal !important;
9739}
9740
9741.text-nowrap {
9742 white-space: nowrap !important;
9743}
9744
9745.text-truncate {
9746 overflow: hidden;
9747 text-overflow: ellipsis;
9748 white-space: nowrap;
9749}
9750
9751.text-left {
9752 text-align: left !important;
9753}
9754
9755.text-right {
9756 text-align: right !important;
9757}
9758
9759.text-center {
9760 text-align: center !important;
9761}
9762
9763@media (min-width: 576px) {
9764 .text-sm-left {
9765 text-align: left !important;
9766 }
9767 .text-sm-right {
9768 text-align: right !important;
9769 }
9770 .text-sm-center {
9771 text-align: center !important;
9772 }
9773}
9774
9775@media (min-width: 768px) {
9776 .text-md-left {
9777 text-align: left !important;
9778 }
9779 .text-md-right {
9780 text-align: right !important;
9781 }
9782 .text-md-center {
9783 text-align: center !important;
9784 }
9785}
9786
9787@media (min-width: 992px) {
9788 .text-lg-left {
9789 text-align: left !important;
9790 }
9791 .text-lg-right {
9792 text-align: right !important;
9793 }
9794 .text-lg-center {
9795 text-align: center !important;
9796 }
9797}
9798
9799@media (min-width: 1200px) {
9800 .text-xl-left {
9801 text-align: left !important;
9802 }
9803 .text-xl-right {
9804 text-align: right !important;
9805 }
9806 .text-xl-center {
9807 text-align: center !important;
9808 }
9809}
9810
9811.text-lowercase {
9812 text-transform: lowercase !important;
9813}
9814
9815.text-uppercase {
9816 text-transform: uppercase !important;
9817}
9818
9819.text-capitalize {
9820 text-transform: capitalize !important;
9821}
9822
9823.font-weight-light {
9824 font-weight: 300 !important;
9825}
9826
9827.font-weight-lighter {
9828 font-weight: lighter !important;
9829}
9830
9831.font-weight-normal {
9832 font-weight: 400 !important;
9833}
9834
9835.font-weight-bold {
9836 font-weight: 700 !important;
9837}
9838
9839.font-weight-bolder {
9840 font-weight: bolder !important;
9841}
9842
9843.font-italic {
9844 font-style: italic !important;
9845}
9846
9847.text-white {
9848 color: #fff !important;
9849}
9850
9851.text-primary {
9852 color: #007bff !important;
9853}
9854
9855a.text-primary:hover, a.text-primary:focus {
9856 color: #0056b3 !important;
9857}
9858
9859.text-secondary {
9860 color: #6c757d !important;
9861}
9862
9863a.text-secondary:hover, a.text-secondary:focus {
9864 color: #494f54 !important;
9865}
9866
9867.text-success {
9868 color: #28a745 !important;
9869}
9870
9871a.text-success:hover, a.text-success:focus {
9872 color: #19692c !important;
9873}
9874
9875.text-info {
9876 color: #17a2b8 !important;
9877}
9878
9879a.text-info:hover, a.text-info:focus {
9880 color: #0f6674 !important;
9881}
9882
9883.text-warning {
9884 color: #ffc107 !important;
9885}
9886
9887a.text-warning:hover, a.text-warning:focus {
9888 color: #ba8b00 !important;
9889}
9890
9891.text-danger {
9892 color: #dc3545 !important;
9893}
9894
9895a.text-danger:hover, a.text-danger:focus {
9896 color: #a71d2a !important;
9897}
9898
9899.text-light {
9900 color: #f8f9fa !important;
9901}
9902
9903a.text-light:hover, a.text-light:focus {
9904 color: #cbd3da !important;
9905}
9906
9907.text-dark {
9908 color: #343a40 !important;
9909}
9910
9911a.text-dark:hover, a.text-dark:focus {
9912 color: #121416 !important;
9913}
9914
9915.text-body {
9916 color: #212529 !important;
9917}
9918
9919.text-muted {
9920 color: #6c757d !important;
9921}
9922
9923.text-black-50 {
9924 color: rgba(0, 0, 0, 0.5) !important;
9925}
9926
9927.text-white-50 {
9928 color: rgba(255, 255, 255, 0.5) !important;
9929}
9930
9931.text-hide {
9932 font: 0/0 a;
9933 color: transparent;
9934 text-shadow: none;
9935 background-color: transparent;
9936 border: 0;
9937}
9938
9939.text-decoration-none {
9940 text-decoration: none !important;
9941}
9942
9943.text-break {
9944 word-break: break-word !important;
9945 overflow-wrap: break-word !important;
9946}
9947
9948.text-reset {
9949 color: inherit !important;
9950}
9951
9952.visible {
9953 visibility: visible !important;
9954}
9955
9956.invisible {
9957 visibility: hidden !important;
9958}
9959
9960@media print {
9961 *,
9962 *::before,
9963 *::after {
9964 text-shadow: none !important;
9965 box-shadow: none !important;
9966 }
9967 a:not(.btn) {
9968 text-decoration: underline;
9969 }
9970 abbr[title]::after {
9971 content: " (" attr(title) ")";
9972 }
9973 pre {
9974 white-space: pre-wrap !important;
9975 }
9976 pre,
9977 blockquote {
9978 border: 1px solid #adb5bd;
9979 page-break-inside: avoid;
9980 }
9981 thead {
9982 display: table-header-group;
9983 }
9984 tr,
9985 img {
9986 page-break-inside: avoid;
9987 }
9988 p,
9989 h2,
9990 h3 {
9991 orphans: 3;
9992 widows: 3;
9993 }
9994 h2,
9995 h3 {
9996 page-break-after: avoid;
9997 }
9998 @page {
9999 size: a3;
10000 }
10001 body {
10002 min-width: 992px !important;
10003 }
10004 .container {
10005 min-width: 992px !important;
10006 }
10007 .navbar {
10008 display: none;
10009 }
10010 .badge {
10011 border: 1px solid #000;
10012 }
10013 .table {
10014 border-collapse: collapse !important;
10015 }
10016 .table td,
10017 .table th {
10018 background-color: #fff !important;
10019 }
10020 .table-bordered th,
10021 .table-bordered td {
10022 border: 1px solid #dee2e6 !important;
10023 }
10024 .table-dark {
10025 color: inherit;
10026 }
10027 .table-dark th,
10028 .table-dark td,
10029 .table-dark thead th,
10030 .table-dark tbody + tbody {
10031 border-color: #dee2e6;
10032 }
10033 .table .thead-dark th {
10034 color: inherit;
10035 border-color: #dee2e6;
10036 }
10037}
10038/*# sourceMappingURL=bootstrap.css.map */ \ No newline at end of file
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/bootstrap/dist/js/bootstrap.js b/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/bootstrap/dist/js/bootstrap.js
new file mode 100644
index 00000000..da59f0e0
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/bootstrap/dist/js/bootstrap.js
@@ -0,0 +1,4435 @@
1/*!
2 * Bootstrap v4.3.1 (https://getbootstrap.com/)
3 * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 */
6(function (global, factory) {
7 typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) :
8 typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) :
9 (global = global || self, factory(global.bootstrap = {}, global.jQuery, global.Popper));
10}(this, function (exports, $, Popper) { 'use strict';
11
12 $ = $ && $.hasOwnProperty('default') ? $['default'] : $;
13 Popper = Popper && Popper.hasOwnProperty('default') ? Popper['default'] : Popper;
14
15 function _defineProperties(target, props) {
16 for (var i = 0; i < props.length; i++) {
17 var descriptor = props[i];
18 descriptor.enumerable = descriptor.enumerable || false;
19 descriptor.configurable = true;
20 if ("value" in descriptor) descriptor.writable = true;
21 Object.defineProperty(target, descriptor.key, descriptor);
22 }
23 }
24
25 function _createClass(Constructor, protoProps, staticProps) {
26 if (protoProps) _defineProperties(Constructor.prototype, protoProps);
27 if (staticProps) _defineProperties(Constructor, staticProps);
28 return Constructor;
29 }
30
31 function _defineProperty(obj, key, value) {
32 if (key in obj) {
33 Object.defineProperty(obj, key, {
34 value: value,
35 enumerable: true,
36 configurable: true,
37 writable: true
38 });
39 } else {
40 obj[key] = value;
41 }
42
43 return obj;
44 }
45
46 function _objectSpread(target) {
47 for (var i = 1; i < arguments.length; i++) {
48 var source = arguments[i] != null ? arguments[i] : {};
49 var ownKeys = Object.keys(source);
50
51 if (typeof Object.getOwnPropertySymbols === 'function') {
52 ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
53 return Object.getOwnPropertyDescriptor(source, sym).enumerable;
54 }));
55 }
56
57 ownKeys.forEach(function (key) {
58 _defineProperty(target, key, source[key]);
59 });
60 }
61
62 return target;
63 }
64
65 function _inheritsLoose(subClass, superClass) {
66 subClass.prototype = Object.create(superClass.prototype);
67 subClass.prototype.constructor = subClass;
68 subClass.__proto__ = superClass;
69 }
70
71 /**
72 * --------------------------------------------------------------------------
73 * Bootstrap (v4.3.1): util.js
74 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
75 * --------------------------------------------------------------------------
76 */
77 /**
78 * ------------------------------------------------------------------------
79 * Private TransitionEnd Helpers
80 * ------------------------------------------------------------------------
81 */
82
83 var TRANSITION_END = 'transitionend';
84 var MAX_UID = 1000000;
85 var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
86
87 function toType(obj) {
88 return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
89 }
90
91 function getSpecialTransitionEndEvent() {
92 return {
93 bindType: TRANSITION_END,
94 delegateType: TRANSITION_END,
95 handle: function handle(event) {
96 if ($(event.target).is(this)) {
97 return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params
98 }
99
100 return undefined; // eslint-disable-line no-undefined
101 }
102 };
103 }
104
105 function transitionEndEmulator(duration) {
106 var _this = this;
107
108 var called = false;
109 $(this).one(Util.TRANSITION_END, function () {
110 called = true;
111 });
112 setTimeout(function () {
113 if (!called) {
114 Util.triggerTransitionEnd(_this);
115 }
116 }, duration);
117 return this;
118 }
119
120 function setTransitionEndSupport() {
121 $.fn.emulateTransitionEnd = transitionEndEmulator;
122 $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
123 }
124 /**
125 * --------------------------------------------------------------------------
126 * Public Util Api
127 * --------------------------------------------------------------------------
128 */
129
130
131 var Util = {
132 TRANSITION_END: 'bsTransitionEnd',
133 getUID: function getUID(prefix) {
134 do {
135 // eslint-disable-next-line no-bitwise
136 prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here
137 } while (document.getElementById(prefix));
138
139 return prefix;
140 },
141 getSelectorFromElement: function getSelectorFromElement(element) {
142 var selector = element.getAttribute('data-target');
143
144 if (!selector || selector === '#') {
145 var hrefAttr = element.getAttribute('href');
146 selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';
147 }
148
149 try {
150 return document.querySelector(selector) ? selector : null;
151 } catch (err) {
152 return null;
153 }
154 },
155 getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {
156 if (!element) {
157 return 0;
158 } // Get transition-duration of the element
159
160
161 var transitionDuration = $(element).css('transition-duration');
162 var transitionDelay = $(element).css('transition-delay');
163 var floatTransitionDuration = parseFloat(transitionDuration);
164 var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found
165
166 if (!floatTransitionDuration && !floatTransitionDelay) {
167 return 0;
168 } // If multiple durations are defined, take the first
169
170
171 transitionDuration = transitionDuration.split(',')[0];
172 transitionDelay = transitionDelay.split(',')[0];
173 return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
174 },
175 reflow: function reflow(element) {
176 return element.offsetHeight;
177 },
178 triggerTransitionEnd: function triggerTransitionEnd(element) {
179 $(element).trigger(TRANSITION_END);
180 },
181 // TODO: Remove in v5
182 supportsTransitionEnd: function supportsTransitionEnd() {
183 return Boolean(TRANSITION_END);
184 },
185 isElement: function isElement(obj) {
186 return (obj[0] || obj).nodeType;
187 },
188 typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {
189 for (var property in configTypes) {
190 if (Object.prototype.hasOwnProperty.call(configTypes, property)) {
191 var expectedTypes = configTypes[property];
192 var value = config[property];
193 var valueType = value && Util.isElement(value) ? 'element' : toType(value);
194
195 if (!new RegExp(expectedTypes).test(valueType)) {
196 throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
197 }
198 }
199 }
200 },
201 findShadowRoot: function findShadowRoot(element) {
202 if (!document.documentElement.attachShadow) {
203 return null;
204 } // Can find the shadow root otherwise it'll return the document
205
206
207 if (typeof element.getRootNode === 'function') {
208 var root = element.getRootNode();
209 return root instanceof ShadowRoot ? root : null;
210 }
211
212 if (element instanceof ShadowRoot) {
213 return element;
214 } // when we don't find a shadow root
215
216
217 if (!element.parentNode) {
218 return null;
219 }
220
221 return Util.findShadowRoot(element.parentNode);
222 }
223 };
224 setTransitionEndSupport();
225
226 /**
227 * ------------------------------------------------------------------------
228 * Constants
229 * ------------------------------------------------------------------------
230 */
231
232 var NAME = 'alert';
233 var VERSION = '4.3.1';
234 var DATA_KEY = 'bs.alert';
235 var EVENT_KEY = "." + DATA_KEY;
236 var DATA_API_KEY = '.data-api';
237 var JQUERY_NO_CONFLICT = $.fn[NAME];
238 var Selector = {
239 DISMISS: '[data-dismiss="alert"]'
240 };
241 var Event = {
242 CLOSE: "close" + EVENT_KEY,
243 CLOSED: "closed" + EVENT_KEY,
244 CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
245 };
246 var ClassName = {
247 ALERT: 'alert',
248 FADE: 'fade',
249 SHOW: 'show'
250 /**
251 * ------------------------------------------------------------------------
252 * Class Definition
253 * ------------------------------------------------------------------------
254 */
255
256 };
257
258 var Alert =
259 /*#__PURE__*/
260 function () {
261 function Alert(element) {
262 this._element = element;
263 } // Getters
264
265
266 var _proto = Alert.prototype;
267
268 // Public
269 _proto.close = function close(element) {
270 var rootElement = this._element;
271
272 if (element) {
273 rootElement = this._getRootElement(element);
274 }
275
276 var customEvent = this._triggerCloseEvent(rootElement);
277
278 if (customEvent.isDefaultPrevented()) {
279 return;
280 }
281
282 this._removeElement(rootElement);
283 };
284
285 _proto.dispose = function dispose() {
286 $.removeData(this._element, DATA_KEY);
287 this._element = null;
288 } // Private
289 ;
290
291 _proto._getRootElement = function _getRootElement(element) {
292 var selector = Util.getSelectorFromElement(element);
293 var parent = false;
294
295 if (selector) {
296 parent = document.querySelector(selector);
297 }
298
299 if (!parent) {
300 parent = $(element).closest("." + ClassName.ALERT)[0];
301 }
302
303 return parent;
304 };
305
306 _proto._triggerCloseEvent = function _triggerCloseEvent(element) {
307 var closeEvent = $.Event(Event.CLOSE);
308 $(element).trigger(closeEvent);
309 return closeEvent;
310 };
311
312 _proto._removeElement = function _removeElement(element) {
313 var _this = this;
314
315 $(element).removeClass(ClassName.SHOW);
316
317 if (!$(element).hasClass(ClassName.FADE)) {
318 this._destroyElement(element);
319
320 return;
321 }
322
323 var transitionDuration = Util.getTransitionDurationFromElement(element);
324 $(element).one(Util.TRANSITION_END, function (event) {
325 return _this._destroyElement(element, event);
326 }).emulateTransitionEnd(transitionDuration);
327 };
328
329 _proto._destroyElement = function _destroyElement(element) {
330 $(element).detach().trigger(Event.CLOSED).remove();
331 } // Static
332 ;
333
334 Alert._jQueryInterface = function _jQueryInterface(config) {
335 return this.each(function () {
336 var $element = $(this);
337 var data = $element.data(DATA_KEY);
338
339 if (!data) {
340 data = new Alert(this);
341 $element.data(DATA_KEY, data);
342 }
343
344 if (config === 'close') {
345 data[config](this);
346 }
347 });
348 };
349
350 Alert._handleDismiss = function _handleDismiss(alertInstance) {
351 return function (event) {
352 if (event) {
353 event.preventDefault();
354 }
355
356 alertInstance.close(this);
357 };
358 };
359
360 _createClass(Alert, null, [{
361 key: "VERSION",
362 get: function get() {
363 return VERSION;
364 }
365 }]);
366
367 return Alert;
368 }();
369 /**
370 * ------------------------------------------------------------------------
371 * Data Api implementation
372 * ------------------------------------------------------------------------
373 */
374
375
376 $(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert()));
377 /**
378 * ------------------------------------------------------------------------
379 * jQuery
380 * ------------------------------------------------------------------------
381 */
382
383 $.fn[NAME] = Alert._jQueryInterface;
384 $.fn[NAME].Constructor = Alert;
385
386 $.fn[NAME].noConflict = function () {
387 $.fn[NAME] = JQUERY_NO_CONFLICT;
388 return Alert._jQueryInterface;
389 };
390
391 /**
392 * ------------------------------------------------------------------------
393 * Constants
394 * ------------------------------------------------------------------------
395 */
396
397 var NAME$1 = 'button';
398 var VERSION$1 = '4.3.1';
399 var DATA_KEY$1 = 'bs.button';
400 var EVENT_KEY$1 = "." + DATA_KEY$1;
401 var DATA_API_KEY$1 = '.data-api';
402 var JQUERY_NO_CONFLICT$1 = $.fn[NAME$1];
403 var ClassName$1 = {
404 ACTIVE: 'active',
405 BUTTON: 'btn',
406 FOCUS: 'focus'
407 };
408 var Selector$1 = {
409 DATA_TOGGLE_CARROT: '[data-toggle^="button"]',
410 DATA_TOGGLE: '[data-toggle="buttons"]',
411 INPUT: 'input:not([type="hidden"])',
412 ACTIVE: '.active',
413 BUTTON: '.btn'
414 };
415 var Event$1 = {
416 CLICK_DATA_API: "click" + EVENT_KEY$1 + DATA_API_KEY$1,
417 FOCUS_BLUR_DATA_API: "focus" + EVENT_KEY$1 + DATA_API_KEY$1 + " " + ("blur" + EVENT_KEY$1 + DATA_API_KEY$1)
418 /**
419 * ------------------------------------------------------------------------
420 * Class Definition
421 * ------------------------------------------------------------------------
422 */
423
424 };
425
426 var Button =
427 /*#__PURE__*/
428 function () {
429 function Button(element) {
430 this._element = element;
431 } // Getters
432
433
434 var _proto = Button.prototype;
435
436 // Public
437 _proto.toggle = function toggle() {
438 var triggerChangeEvent = true;
439 var addAriaPressed = true;
440 var rootElement = $(this._element).closest(Selector$1.DATA_TOGGLE)[0];
441
442 if (rootElement) {
443 var input = this._element.querySelector(Selector$1.INPUT);
444
445 if (input) {
446 if (input.type === 'radio') {
447 if (input.checked && this._element.classList.contains(ClassName$1.ACTIVE)) {
448 triggerChangeEvent = false;
449 } else {
450 var activeElement = rootElement.querySelector(Selector$1.ACTIVE);
451
452 if (activeElement) {
453 $(activeElement).removeClass(ClassName$1.ACTIVE);
454 }
455 }
456 }
457
458 if (triggerChangeEvent) {
459 if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) {
460 return;
461 }
462
463 input.checked = !this._element.classList.contains(ClassName$1.ACTIVE);
464 $(input).trigger('change');
465 }
466
467 input.focus();
468 addAriaPressed = false;
469 }
470 }
471
472 if (addAriaPressed) {
473 this._element.setAttribute('aria-pressed', !this._element.classList.contains(ClassName$1.ACTIVE));
474 }
475
476 if (triggerChangeEvent) {
477 $(this._element).toggleClass(ClassName$1.ACTIVE);
478 }
479 };
480
481 _proto.dispose = function dispose() {
482 $.removeData(this._element, DATA_KEY$1);
483 this._element = null;
484 } // Static
485 ;
486
487 Button._jQueryInterface = function _jQueryInterface(config) {
488 return this.each(function () {
489 var data = $(this).data(DATA_KEY$1);
490
491 if (!data) {
492 data = new Button(this);
493 $(this).data(DATA_KEY$1, data);
494 }
495
496 if (config === 'toggle') {
497 data[config]();
498 }
499 });
500 };
501
502 _createClass(Button, null, [{
503 key: "VERSION",
504 get: function get() {
505 return VERSION$1;
506 }
507 }]);
508
509 return Button;
510 }();
511 /**
512 * ------------------------------------------------------------------------
513 * Data Api implementation
514 * ------------------------------------------------------------------------
515 */
516
517
518 $(document).on(Event$1.CLICK_DATA_API, Selector$1.DATA_TOGGLE_CARROT, function (event) {
519 event.preventDefault();
520 var button = event.target;
521
522 if (!$(button).hasClass(ClassName$1.BUTTON)) {
523 button = $(button).closest(Selector$1.BUTTON);
524 }
525
526 Button._jQueryInterface.call($(button), 'toggle');
527 }).on(Event$1.FOCUS_BLUR_DATA_API, Selector$1.DATA_TOGGLE_CARROT, function (event) {
528 var button = $(event.target).closest(Selector$1.BUTTON)[0];
529 $(button).toggleClass(ClassName$1.FOCUS, /^focus(in)?$/.test(event.type));
530 });
531 /**
532 * ------------------------------------------------------------------------
533 * jQuery
534 * ------------------------------------------------------------------------
535 */
536
537 $.fn[NAME$1] = Button._jQueryInterface;
538 $.fn[NAME$1].Constructor = Button;
539
540 $.fn[NAME$1].noConflict = function () {
541 $.fn[NAME$1] = JQUERY_NO_CONFLICT$1;
542 return Button._jQueryInterface;
543 };
544
545 /**
546 * ------------------------------------------------------------------------
547 * Constants
548 * ------------------------------------------------------------------------
549 */
550
551 var NAME$2 = 'carousel';
552 var VERSION$2 = '4.3.1';
553 var DATA_KEY$2 = 'bs.carousel';
554 var EVENT_KEY$2 = "." + DATA_KEY$2;
555 var DATA_API_KEY$2 = '.data-api';
556 var JQUERY_NO_CONFLICT$2 = $.fn[NAME$2];
557 var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key
558
559 var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key
560
561 var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
562
563 var SWIPE_THRESHOLD = 40;
564 var Default = {
565 interval: 5000,
566 keyboard: true,
567 slide: false,
568 pause: 'hover',
569 wrap: true,
570 touch: true
571 };
572 var DefaultType = {
573 interval: '(number|boolean)',
574 keyboard: 'boolean',
575 slide: '(boolean|string)',
576 pause: '(string|boolean)',
577 wrap: 'boolean',
578 touch: 'boolean'
579 };
580 var Direction = {
581 NEXT: 'next',
582 PREV: 'prev',
583 LEFT: 'left',
584 RIGHT: 'right'
585 };
586 var Event$2 = {
587 SLIDE: "slide" + EVENT_KEY$2,
588 SLID: "slid" + EVENT_KEY$2,
589 KEYDOWN: "keydown" + EVENT_KEY$2,
590 MOUSEENTER: "mouseenter" + EVENT_KEY$2,
591 MOUSELEAVE: "mouseleave" + EVENT_KEY$2,
592 TOUCHSTART: "touchstart" + EVENT_KEY$2,
593 TOUCHMOVE: "touchmove" + EVENT_KEY$2,
594 TOUCHEND: "touchend" + EVENT_KEY$2,
595 POINTERDOWN: "pointerdown" + EVENT_KEY$2,
596 POINTERUP: "pointerup" + EVENT_KEY$2,
597 DRAG_START: "dragstart" + EVENT_KEY$2,
598 LOAD_DATA_API: "load" + EVENT_KEY$2 + DATA_API_KEY$2,
599 CLICK_DATA_API: "click" + EVENT_KEY$2 + DATA_API_KEY$2
600 };
601 var ClassName$2 = {
602 CAROUSEL: 'carousel',
603 ACTIVE: 'active',
604 SLIDE: 'slide',
605 RIGHT: 'carousel-item-right',
606 LEFT: 'carousel-item-left',
607 NEXT: 'carousel-item-next',
608 PREV: 'carousel-item-prev',
609 ITEM: 'carousel-item',
610 POINTER_EVENT: 'pointer-event'
611 };
612 var Selector$2 = {
613 ACTIVE: '.active',
614 ACTIVE_ITEM: '.active.carousel-item',
615 ITEM: '.carousel-item',
616 ITEM_IMG: '.carousel-item img',
617 NEXT_PREV: '.carousel-item-next, .carousel-item-prev',
618 INDICATORS: '.carousel-indicators',
619 DATA_SLIDE: '[data-slide], [data-slide-to]',
620 DATA_RIDE: '[data-ride="carousel"]'
621 };
622 var PointerType = {
623 TOUCH: 'touch',
624 PEN: 'pen'
625 /**
626 * ------------------------------------------------------------------------
627 * Class Definition
628 * ------------------------------------------------------------------------
629 */
630
631 };
632
633 var Carousel =
634 /*#__PURE__*/
635 function () {
636 function Carousel(element, config) {
637 this._items = null;
638 this._interval = null;
639 this._activeElement = null;
640 this._isPaused = false;
641 this._isSliding = false;
642 this.touchTimeout = null;
643 this.touchStartX = 0;
644 this.touchDeltaX = 0;
645 this._config = this._getConfig(config);
646 this._element = element;
647 this._indicatorsElement = this._element.querySelector(Selector$2.INDICATORS);
648 this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
649 this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);
650
651 this._addEventListeners();
652 } // Getters
653
654
655 var _proto = Carousel.prototype;
656
657 // Public
658 _proto.next = function next() {
659 if (!this._isSliding) {
660 this._slide(Direction.NEXT);
661 }
662 };
663
664 _proto.nextWhenVisible = function nextWhenVisible() {
665 // Don't call next when the page isn't visible
666 // or the carousel or its parent isn't visible
667 if (!document.hidden && $(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden') {
668 this.next();
669 }
670 };
671
672 _proto.prev = function prev() {
673 if (!this._isSliding) {
674 this._slide(Direction.PREV);
675 }
676 };
677
678 _proto.pause = function pause(event) {
679 if (!event) {
680 this._isPaused = true;
681 }
682
683 if (this._element.querySelector(Selector$2.NEXT_PREV)) {
684 Util.triggerTransitionEnd(this._element);
685 this.cycle(true);
686 }
687
688 clearInterval(this._interval);
689 this._interval = null;
690 };
691
692 _proto.cycle = function cycle(event) {
693 if (!event) {
694 this._isPaused = false;
695 }
696
697 if (this._interval) {
698 clearInterval(this._interval);
699 this._interval = null;
700 }
701
702 if (this._config.interval && !this._isPaused) {
703 this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);
704 }
705 };
706
707 _proto.to = function to(index) {
708 var _this = this;
709
710 this._activeElement = this._element.querySelector(Selector$2.ACTIVE_ITEM);
711
712 var activeIndex = this._getItemIndex(this._activeElement);
713
714 if (index > this._items.length - 1 || index < 0) {
715 return;
716 }
717
718 if (this._isSliding) {
719 $(this._element).one(Event$2.SLID, function () {
720 return _this.to(index);
721 });
722 return;
723 }
724
725 if (activeIndex === index) {
726 this.pause();
727 this.cycle();
728 return;
729 }
730
731 var direction = index > activeIndex ? Direction.NEXT : Direction.PREV;
732
733 this._slide(direction, this._items[index]);
734 };
735
736 _proto.dispose = function dispose() {
737 $(this._element).off(EVENT_KEY$2);
738 $.removeData(this._element, DATA_KEY$2);
739 this._items = null;
740 this._config = null;
741 this._element = null;
742 this._interval = null;
743 this._isPaused = null;
744 this._isSliding = null;
745 this._activeElement = null;
746 this._indicatorsElement = null;
747 } // Private
748 ;
749
750 _proto._getConfig = function _getConfig(config) {
751 config = _objectSpread({}, Default, config);
752 Util.typeCheckConfig(NAME$2, config, DefaultType);
753 return config;
754 };
755
756 _proto._handleSwipe = function _handleSwipe() {
757 var absDeltax = Math.abs(this.touchDeltaX);
758
759 if (absDeltax <= SWIPE_THRESHOLD) {
760 return;
761 }
762
763 var direction = absDeltax / this.touchDeltaX; // swipe left
764
765 if (direction > 0) {
766 this.prev();
767 } // swipe right
768
769
770 if (direction < 0) {
771 this.next();
772 }
773 };
774
775 _proto._addEventListeners = function _addEventListeners() {
776 var _this2 = this;
777
778 if (this._config.keyboard) {
779 $(this._element).on(Event$2.KEYDOWN, function (event) {
780 return _this2._keydown(event);
781 });
782 }
783
784 if (this._config.pause === 'hover') {
785 $(this._element).on(Event$2.MOUSEENTER, function (event) {
786 return _this2.pause(event);
787 }).on(Event$2.MOUSELEAVE, function (event) {
788 return _this2.cycle(event);
789 });
790 }
791
792 if (this._config.touch) {
793 this._addTouchEventListeners();
794 }
795 };
796
797 _proto._addTouchEventListeners = function _addTouchEventListeners() {
798 var _this3 = this;
799
800 if (!this._touchSupported) {
801 return;
802 }
803
804 var start = function start(event) {
805 if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {
806 _this3.touchStartX = event.originalEvent.clientX;
807 } else if (!_this3._pointerEvent) {
808 _this3.touchStartX = event.originalEvent.touches[0].clientX;
809 }
810 };
811
812 var move = function move(event) {
813 // ensure swiping with one touch and not pinching
814 if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {
815 _this3.touchDeltaX = 0;
816 } else {
817 _this3.touchDeltaX = event.originalEvent.touches[0].clientX - _this3.touchStartX;
818 }
819 };
820
821 var end = function end(event) {
822 if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {
823 _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;
824 }
825
826 _this3._handleSwipe();
827
828 if (_this3._config.pause === 'hover') {
829 // If it's a touch-enabled device, mouseenter/leave are fired as
830 // part of the mouse compatibility events on first tap - the carousel
831 // would stop cycling until user tapped out of it;
832 // here, we listen for touchend, explicitly pause the carousel
833 // (as if it's the second time we tap on it, mouseenter compat event
834 // is NOT fired) and after a timeout (to allow for mouse compatibility
835 // events to fire) we explicitly restart cycling
836 _this3.pause();
837
838 if (_this3.touchTimeout) {
839 clearTimeout(_this3.touchTimeout);
840 }
841
842 _this3.touchTimeout = setTimeout(function (event) {
843 return _this3.cycle(event);
844 }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);
845 }
846 };
847
848 $(this._element.querySelectorAll(Selector$2.ITEM_IMG)).on(Event$2.DRAG_START, function (e) {
849 return e.preventDefault();
850 });
851
852 if (this._pointerEvent) {
853 $(this._element).on(Event$2.POINTERDOWN, function (event) {
854 return start(event);
855 });
856 $(this._element).on(Event$2.POINTERUP, function (event) {
857 return end(event);
858 });
859
860 this._element.classList.add(ClassName$2.POINTER_EVENT);
861 } else {
862 $(this._element).on(Event$2.TOUCHSTART, function (event) {
863 return start(event);
864 });
865 $(this._element).on(Event$2.TOUCHMOVE, function (event) {
866 return move(event);
867 });
868 $(this._element).on(Event$2.TOUCHEND, function (event) {
869 return end(event);
870 });
871 }
872 };
873
874 _proto._keydown = function _keydown(event) {
875 if (/input|textarea/i.test(event.target.tagName)) {
876 return;
877 }
878
879 switch (event.which) {
880 case ARROW_LEFT_KEYCODE:
881 event.preventDefault();
882 this.prev();
883 break;
884
885 case ARROW_RIGHT_KEYCODE:
886 event.preventDefault();
887 this.next();
888 break;
889
890 default:
891 }
892 };
893
894 _proto._getItemIndex = function _getItemIndex(element) {
895 this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(Selector$2.ITEM)) : [];
896 return this._items.indexOf(element);
897 };
898
899 _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {
900 var isNextDirection = direction === Direction.NEXT;
901 var isPrevDirection = direction === Direction.PREV;
902
903 var activeIndex = this._getItemIndex(activeElement);
904
905 var lastItemIndex = this._items.length - 1;
906 var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;
907
908 if (isGoingToWrap && !this._config.wrap) {
909 return activeElement;
910 }
911
912 var delta = direction === Direction.PREV ? -1 : 1;
913 var itemIndex = (activeIndex + delta) % this._items.length;
914 return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];
915 };
916
917 _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {
918 var targetIndex = this._getItemIndex(relatedTarget);
919
920 var fromIndex = this._getItemIndex(this._element.querySelector(Selector$2.ACTIVE_ITEM));
921
922 var slideEvent = $.Event(Event$2.SLIDE, {
923 relatedTarget: relatedTarget,
924 direction: eventDirectionName,
925 from: fromIndex,
926 to: targetIndex
927 });
928 $(this._element).trigger(slideEvent);
929 return slideEvent;
930 };
931
932 _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {
933 if (this._indicatorsElement) {
934 var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(Selector$2.ACTIVE));
935 $(indicators).removeClass(ClassName$2.ACTIVE);
936
937 var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];
938
939 if (nextIndicator) {
940 $(nextIndicator).addClass(ClassName$2.ACTIVE);
941 }
942 }
943 };
944
945 _proto._slide = function _slide(direction, element) {
946 var _this4 = this;
947
948 var activeElement = this._element.querySelector(Selector$2.ACTIVE_ITEM);
949
950 var activeElementIndex = this._getItemIndex(activeElement);
951
952 var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);
953
954 var nextElementIndex = this._getItemIndex(nextElement);
955
956 var isCycling = Boolean(this._interval);
957 var directionalClassName;
958 var orderClassName;
959 var eventDirectionName;
960
961 if (direction === Direction.NEXT) {
962 directionalClassName = ClassName$2.LEFT;
963 orderClassName = ClassName$2.NEXT;
964 eventDirectionName = Direction.LEFT;
965 } else {
966 directionalClassName = ClassName$2.RIGHT;
967 orderClassName = ClassName$2.PREV;
968 eventDirectionName = Direction.RIGHT;
969 }
970
971 if (nextElement && $(nextElement).hasClass(ClassName$2.ACTIVE)) {
972 this._isSliding = false;
973 return;
974 }
975
976 var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);
977
978 if (slideEvent.isDefaultPrevented()) {
979 return;
980 }
981
982 if (!activeElement || !nextElement) {
983 // Some weirdness is happening, so we bail
984 return;
985 }
986
987 this._isSliding = true;
988
989 if (isCycling) {
990 this.pause();
991 }
992
993 this._setActiveIndicatorElement(nextElement);
994
995 var slidEvent = $.Event(Event$2.SLID, {
996 relatedTarget: nextElement,
997 direction: eventDirectionName,
998 from: activeElementIndex,
999 to: nextElementIndex
1000 });
1001
1002 if ($(this._element).hasClass(ClassName$2.SLIDE)) {
1003 $(nextElement).addClass(orderClassName);
1004 Util.reflow(nextElement);
1005 $(activeElement).addClass(directionalClassName);
1006 $(nextElement).addClass(directionalClassName);
1007 var nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10);
1008
1009 if (nextElementInterval) {
1010 this._config.defaultInterval = this._config.defaultInterval || this._config.interval;
1011 this._config.interval = nextElementInterval;
1012 } else {
1013 this._config.interval = this._config.defaultInterval || this._config.interval;
1014 }
1015
1016 var transitionDuration = Util.getTransitionDurationFromElement(activeElement);
1017 $(activeElement).one(Util.TRANSITION_END, function () {
1018 $(nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(ClassName$2.ACTIVE);
1019 $(activeElement).removeClass(ClassName$2.ACTIVE + " " + orderClassName + " " + directionalClassName);
1020 _this4._isSliding = false;
1021 setTimeout(function () {
1022 return $(_this4._element).trigger(slidEvent);
1023 }, 0);
1024 }).emulateTransitionEnd(transitionDuration);
1025 } else {
1026 $(activeElement).removeClass(ClassName$2.ACTIVE);
1027 $(nextElement).addClass(ClassName$2.ACTIVE);
1028 this._isSliding = false;
1029 $(this._element).trigger(slidEvent);
1030 }
1031
1032 if (isCycling) {
1033 this.cycle();
1034 }
1035 } // Static
1036 ;
1037
1038 Carousel._jQueryInterface = function _jQueryInterface(config) {
1039 return this.each(function () {
1040 var data = $(this).data(DATA_KEY$2);
1041
1042 var _config = _objectSpread({}, Default, $(this).data());
1043
1044 if (typeof config === 'object') {
1045 _config = _objectSpread({}, _config, config);
1046 }
1047
1048 var action = typeof config === 'string' ? config : _config.slide;
1049
1050 if (!data) {
1051 data = new Carousel(this, _config);
1052 $(this).data(DATA_KEY$2, data);
1053 }
1054
1055 if (typeof config === 'number') {
1056 data.to(config);
1057 } else if (typeof action === 'string') {
1058 if (typeof data[action] === 'undefined') {
1059 throw new TypeError("No method named \"" + action + "\"");
1060 }
1061
1062 data[action]();
1063 } else if (_config.interval && _config.ride) {
1064 data.pause();
1065 data.cycle();
1066 }
1067 });
1068 };
1069
1070 Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {
1071 var selector = Util.getSelectorFromElement(this);
1072
1073 if (!selector) {
1074 return;
1075 }
1076
1077 var target = $(selector)[0];
1078
1079 if (!target || !$(target).hasClass(ClassName$2.CAROUSEL)) {
1080 return;
1081 }
1082
1083 var config = _objectSpread({}, $(target).data(), $(this).data());
1084
1085 var slideIndex = this.getAttribute('data-slide-to');
1086
1087 if (slideIndex) {
1088 config.interval = false;
1089 }
1090
1091 Carousel._jQueryInterface.call($(target), config);
1092
1093 if (slideIndex) {
1094 $(target).data(DATA_KEY$2).to(slideIndex);
1095 }
1096
1097 event.preventDefault();
1098 };
1099
1100 _createClass(Carousel, null, [{
1101 key: "VERSION",
1102 get: function get() {
1103 return VERSION$2;
1104 }
1105 }, {
1106 key: "Default",
1107 get: function get() {
1108 return Default;
1109 }
1110 }]);
1111
1112 return Carousel;
1113 }();
1114 /**
1115 * ------------------------------------------------------------------------
1116 * Data Api implementation
1117 * ------------------------------------------------------------------------
1118 */
1119
1120
1121 $(document).on(Event$2.CLICK_DATA_API, Selector$2.DATA_SLIDE, Carousel._dataApiClickHandler);
1122 $(window).on(Event$2.LOAD_DATA_API, function () {
1123 var carousels = [].slice.call(document.querySelectorAll(Selector$2.DATA_RIDE));
1124
1125 for (var i = 0, len = carousels.length; i < len; i++) {
1126 var $carousel = $(carousels[i]);
1127
1128 Carousel._jQueryInterface.call($carousel, $carousel.data());
1129 }
1130 });
1131 /**
1132 * ------------------------------------------------------------------------
1133 * jQuery
1134 * ------------------------------------------------------------------------
1135 */
1136
1137 $.fn[NAME$2] = Carousel._jQueryInterface;
1138 $.fn[NAME$2].Constructor = Carousel;
1139
1140 $.fn[NAME$2].noConflict = function () {
1141 $.fn[NAME$2] = JQUERY_NO_CONFLICT$2;
1142 return Carousel._jQueryInterface;
1143 };
1144
1145 /**
1146 * ------------------------------------------------------------------------
1147 * Constants
1148 * ------------------------------------------------------------------------
1149 */
1150
1151 var NAME$3 = 'collapse';
1152 var VERSION$3 = '4.3.1';
1153 var DATA_KEY$3 = 'bs.collapse';
1154 var EVENT_KEY$3 = "." + DATA_KEY$3;
1155 var DATA_API_KEY$3 = '.data-api';
1156 var JQUERY_NO_CONFLICT$3 = $.fn[NAME$3];
1157 var Default$1 = {
1158 toggle: true,
1159 parent: ''
1160 };
1161 var DefaultType$1 = {
1162 toggle: 'boolean',
1163 parent: '(string|element)'
1164 };
1165 var Event$3 = {
1166 SHOW: "show" + EVENT_KEY$3,
1167 SHOWN: "shown" + EVENT_KEY$3,
1168 HIDE: "hide" + EVENT_KEY$3,
1169 HIDDEN: "hidden" + EVENT_KEY$3,
1170 CLICK_DATA_API: "click" + EVENT_KEY$3 + DATA_API_KEY$3
1171 };
1172 var ClassName$3 = {
1173 SHOW: 'show',
1174 COLLAPSE: 'collapse',
1175 COLLAPSING: 'collapsing',
1176 COLLAPSED: 'collapsed'
1177 };
1178 var Dimension = {
1179 WIDTH: 'width',
1180 HEIGHT: 'height'
1181 };
1182 var Selector$3 = {
1183 ACTIVES: '.show, .collapsing',
1184 DATA_TOGGLE: '[data-toggle="collapse"]'
1185 /**
1186 * ------------------------------------------------------------------------
1187 * Class Definition
1188 * ------------------------------------------------------------------------
1189 */
1190
1191 };
1192
1193 var Collapse =
1194 /*#__PURE__*/
1195 function () {
1196 function Collapse(element, config) {
1197 this._isTransitioning = false;
1198 this._element = element;
1199 this._config = this._getConfig(config);
1200 this._triggerArray = [].slice.call(document.querySelectorAll("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]")));
1201 var toggleList = [].slice.call(document.querySelectorAll(Selector$3.DATA_TOGGLE));
1202
1203 for (var i = 0, len = toggleList.length; i < len; i++) {
1204 var elem = toggleList[i];
1205 var selector = Util.getSelectorFromElement(elem);
1206 var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {
1207 return foundElem === element;
1208 });
1209
1210 if (selector !== null && filterElement.length > 0) {
1211 this._selector = selector;
1212
1213 this._triggerArray.push(elem);
1214 }
1215 }
1216
1217 this._parent = this._config.parent ? this._getParent() : null;
1218
1219 if (!this._config.parent) {
1220 this._addAriaAndCollapsedClass(this._element, this._triggerArray);
1221 }
1222
1223 if (this._config.toggle) {
1224 this.toggle();
1225 }
1226 } // Getters
1227
1228
1229 var _proto = Collapse.prototype;
1230
1231 // Public
1232 _proto.toggle = function toggle() {
1233 if ($(this._element).hasClass(ClassName$3.SHOW)) {
1234 this.hide();
1235 } else {
1236 this.show();
1237 }
1238 };
1239
1240 _proto.show = function show() {
1241 var _this = this;
1242
1243 if (this._isTransitioning || $(this._element).hasClass(ClassName$3.SHOW)) {
1244 return;
1245 }
1246
1247 var actives;
1248 var activesData;
1249
1250 if (this._parent) {
1251 actives = [].slice.call(this._parent.querySelectorAll(Selector$3.ACTIVES)).filter(function (elem) {
1252 if (typeof _this._config.parent === 'string') {
1253 return elem.getAttribute('data-parent') === _this._config.parent;
1254 }
1255
1256 return elem.classList.contains(ClassName$3.COLLAPSE);
1257 });
1258
1259 if (actives.length === 0) {
1260 actives = null;
1261 }
1262 }
1263
1264 if (actives) {
1265 activesData = $(actives).not(this._selector).data(DATA_KEY$3);
1266
1267 if (activesData && activesData._isTransitioning) {
1268 return;
1269 }
1270 }
1271
1272 var startEvent = $.Event(Event$3.SHOW);
1273 $(this._element).trigger(startEvent);
1274
1275 if (startEvent.isDefaultPrevented()) {
1276 return;
1277 }
1278
1279 if (actives) {
1280 Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide');
1281
1282 if (!activesData) {
1283 $(actives).data(DATA_KEY$3, null);
1284 }
1285 }
1286
1287 var dimension = this._getDimension();
1288
1289 $(this._element).removeClass(ClassName$3.COLLAPSE).addClass(ClassName$3.COLLAPSING);
1290 this._element.style[dimension] = 0;
1291
1292 if (this._triggerArray.length) {
1293 $(this._triggerArray).removeClass(ClassName$3.COLLAPSED).attr('aria-expanded', true);
1294 }
1295
1296 this.setTransitioning(true);
1297
1298 var complete = function complete() {
1299 $(_this._element).removeClass(ClassName$3.COLLAPSING).addClass(ClassName$3.COLLAPSE).addClass(ClassName$3.SHOW);
1300 _this._element.style[dimension] = '';
1301
1302 _this.setTransitioning(false);
1303
1304 $(_this._element).trigger(Event$3.SHOWN);
1305 };
1306
1307 var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
1308 var scrollSize = "scroll" + capitalizedDimension;
1309 var transitionDuration = Util.getTransitionDurationFromElement(this._element);
1310 $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
1311 this._element.style[dimension] = this._element[scrollSize] + "px";
1312 };
1313
1314 _proto.hide = function hide() {
1315 var _this2 = this;
1316
1317 if (this._isTransitioning || !$(this._element).hasClass(ClassName$3.SHOW)) {
1318 return;
1319 }
1320
1321 var startEvent = $.Event(Event$3.HIDE);
1322 $(this._element).trigger(startEvent);
1323
1324 if (startEvent.isDefaultPrevented()) {
1325 return;
1326 }
1327
1328 var dimension = this._getDimension();
1329
1330 this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";
1331 Util.reflow(this._element);
1332 $(this._element).addClass(ClassName$3.COLLAPSING).removeClass(ClassName$3.COLLAPSE).removeClass(ClassName$3.SHOW);
1333 var triggerArrayLength = this._triggerArray.length;
1334
1335 if (triggerArrayLength > 0) {
1336 for (var i = 0; i < triggerArrayLength; i++) {
1337 var trigger = this._triggerArray[i];
1338 var selector = Util.getSelectorFromElement(trigger);
1339
1340 if (selector !== null) {
1341 var $elem = $([].slice.call(document.querySelectorAll(selector)));
1342
1343 if (!$elem.hasClass(ClassName$3.SHOW)) {
1344 $(trigger).addClass(ClassName$3.COLLAPSED).attr('aria-expanded', false);
1345 }
1346 }
1347 }
1348 }
1349
1350 this.setTransitioning(true);
1351
1352 var complete = function complete() {
1353 _this2.setTransitioning(false);
1354
1355 $(_this2._element).removeClass(ClassName$3.COLLAPSING).addClass(ClassName$3.COLLAPSE).trigger(Event$3.HIDDEN);
1356 };
1357
1358 this._element.style[dimension] = '';
1359 var transitionDuration = Util.getTransitionDurationFromElement(this._element);
1360 $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
1361 };
1362
1363 _proto.setTransitioning = function setTransitioning(isTransitioning) {
1364 this._isTransitioning = isTransitioning;
1365 };
1366
1367 _proto.dispose = function dispose() {
1368 $.removeData(this._element, DATA_KEY$3);
1369 this._config = null;
1370 this._parent = null;
1371 this._element = null;
1372 this._triggerArray = null;
1373 this._isTransitioning = null;
1374 } // Private
1375 ;
1376
1377 _proto._getConfig = function _getConfig(config) {
1378 config = _objectSpread({}, Default$1, config);
1379 config.toggle = Boolean(config.toggle); // Coerce string values
1380
1381 Util.typeCheckConfig(NAME$3, config, DefaultType$1);
1382 return config;
1383 };
1384
1385 _proto._getDimension = function _getDimension() {
1386 var hasWidth = $(this._element).hasClass(Dimension.WIDTH);
1387 return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT;
1388 };
1389
1390 _proto._getParent = function _getParent() {
1391 var _this3 = this;
1392
1393 var parent;
1394
1395 if (Util.isElement(this._config.parent)) {
1396 parent = this._config.parent; // It's a jQuery object
1397
1398 if (typeof this._config.parent.jquery !== 'undefined') {
1399 parent = this._config.parent[0];
1400 }
1401 } else {
1402 parent = document.querySelector(this._config.parent);
1403 }
1404
1405 var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]";
1406 var children = [].slice.call(parent.querySelectorAll(selector));
1407 $(children).each(function (i, element) {
1408 _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);
1409 });
1410 return parent;
1411 };
1412
1413 _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
1414 var isOpen = $(element).hasClass(ClassName$3.SHOW);
1415
1416 if (triggerArray.length) {
1417 $(triggerArray).toggleClass(ClassName$3.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
1418 }
1419 } // Static
1420 ;
1421
1422 Collapse._getTargetFromElement = function _getTargetFromElement(element) {
1423 var selector = Util.getSelectorFromElement(element);
1424 return selector ? document.querySelector(selector) : null;
1425 };
1426
1427 Collapse._jQueryInterface = function _jQueryInterface(config) {
1428 return this.each(function () {
1429 var $this = $(this);
1430 var data = $this.data(DATA_KEY$3);
1431
1432 var _config = _objectSpread({}, Default$1, $this.data(), typeof config === 'object' && config ? config : {});
1433
1434 if (!data && _config.toggle && /show|hide/.test(config)) {
1435 _config.toggle = false;
1436 }
1437
1438 if (!data) {
1439 data = new Collapse(this, _config);
1440 $this.data(DATA_KEY$3, data);
1441 }
1442
1443 if (typeof config === 'string') {
1444 if (typeof data[config] === 'undefined') {
1445 throw new TypeError("No method named \"" + config + "\"");
1446 }
1447
1448 data[config]();
1449 }
1450 });
1451 };
1452
1453 _createClass(Collapse, null, [{
1454 key: "VERSION",
1455 get: function get() {
1456 return VERSION$3;
1457 }
1458 }, {
1459 key: "Default",
1460 get: function get() {
1461 return Default$1;
1462 }
1463 }]);
1464
1465 return Collapse;
1466 }();
1467 /**
1468 * ------------------------------------------------------------------------
1469 * Data Api implementation
1470 * ------------------------------------------------------------------------
1471 */
1472
1473
1474 $(document).on(Event$3.CLICK_DATA_API, Selector$3.DATA_TOGGLE, function (event) {
1475 // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
1476 if (event.currentTarget.tagName === 'A') {
1477 event.preventDefault();
1478 }
1479
1480 var $trigger = $(this);
1481 var selector = Util.getSelectorFromElement(this);
1482 var selectors = [].slice.call(document.querySelectorAll(selector));
1483 $(selectors).each(function () {
1484 var $target = $(this);
1485 var data = $target.data(DATA_KEY$3);
1486 var config = data ? 'toggle' : $trigger.data();
1487
1488 Collapse._jQueryInterface.call($target, config);
1489 });
1490 });
1491 /**
1492 * ------------------------------------------------------------------------
1493 * jQuery
1494 * ------------------------------------------------------------------------
1495 */
1496
1497 $.fn[NAME$3] = Collapse._jQueryInterface;
1498 $.fn[NAME$3].Constructor = Collapse;
1499
1500 $.fn[NAME$3].noConflict = function () {
1501 $.fn[NAME$3] = JQUERY_NO_CONFLICT$3;
1502 return Collapse._jQueryInterface;
1503 };
1504
1505 /**
1506 * ------------------------------------------------------------------------
1507 * Constants
1508 * ------------------------------------------------------------------------
1509 */
1510
1511 var NAME$4 = 'dropdown';
1512 var VERSION$4 = '4.3.1';
1513 var DATA_KEY$4 = 'bs.dropdown';
1514 var EVENT_KEY$4 = "." + DATA_KEY$4;
1515 var DATA_API_KEY$4 = '.data-api';
1516 var JQUERY_NO_CONFLICT$4 = $.fn[NAME$4];
1517 var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
1518
1519 var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key
1520
1521 var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key
1522
1523 var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key
1524
1525 var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key
1526
1527 var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)
1528
1529 var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE);
1530 var Event$4 = {
1531 HIDE: "hide" + EVENT_KEY$4,
1532 HIDDEN: "hidden" + EVENT_KEY$4,
1533 SHOW: "show" + EVENT_KEY$4,
1534 SHOWN: "shown" + EVENT_KEY$4,
1535 CLICK: "click" + EVENT_KEY$4,
1536 CLICK_DATA_API: "click" + EVENT_KEY$4 + DATA_API_KEY$4,
1537 KEYDOWN_DATA_API: "keydown" + EVENT_KEY$4 + DATA_API_KEY$4,
1538 KEYUP_DATA_API: "keyup" + EVENT_KEY$4 + DATA_API_KEY$4
1539 };
1540 var ClassName$4 = {
1541 DISABLED: 'disabled',
1542 SHOW: 'show',
1543 DROPUP: 'dropup',
1544 DROPRIGHT: 'dropright',
1545 DROPLEFT: 'dropleft',
1546 MENURIGHT: 'dropdown-menu-right',
1547 MENULEFT: 'dropdown-menu-left',
1548 POSITION_STATIC: 'position-static'
1549 };
1550 var Selector$4 = {
1551 DATA_TOGGLE: '[data-toggle="dropdown"]',
1552 FORM_CHILD: '.dropdown form',
1553 MENU: '.dropdown-menu',
1554 NAVBAR_NAV: '.navbar-nav',
1555 VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'
1556 };
1557 var AttachmentMap = {
1558 TOP: 'top-start',
1559 TOPEND: 'top-end',
1560 BOTTOM: 'bottom-start',
1561 BOTTOMEND: 'bottom-end',
1562 RIGHT: 'right-start',
1563 RIGHTEND: 'right-end',
1564 LEFT: 'left-start',
1565 LEFTEND: 'left-end'
1566 };
1567 var Default$2 = {
1568 offset: 0,
1569 flip: true,
1570 boundary: 'scrollParent',
1571 reference: 'toggle',
1572 display: 'dynamic'
1573 };
1574 var DefaultType$2 = {
1575 offset: '(number|string|function)',
1576 flip: 'boolean',
1577 boundary: '(string|element)',
1578 reference: '(string|element)',
1579 display: 'string'
1580 /**
1581 * ------------------------------------------------------------------------
1582 * Class Definition
1583 * ------------------------------------------------------------------------
1584 */
1585
1586 };
1587
1588 var Dropdown =
1589 /*#__PURE__*/
1590 function () {
1591 function Dropdown(element, config) {
1592 this._element = element;
1593 this._popper = null;
1594 this._config = this._getConfig(config);
1595 this._menu = this._getMenuElement();
1596 this._inNavbar = this._detectNavbar();
1597
1598 this._addEventListeners();
1599 } // Getters
1600
1601
1602 var _proto = Dropdown.prototype;
1603
1604 // Public
1605 _proto.toggle = function toggle() {
1606 if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED)) {
1607 return;
1608 }
1609
1610 var parent = Dropdown._getParentFromElement(this._element);
1611
1612 var isActive = $(this._menu).hasClass(ClassName$4.SHOW);
1613
1614 Dropdown._clearMenus();
1615
1616 if (isActive) {
1617 return;
1618 }
1619
1620 var relatedTarget = {
1621 relatedTarget: this._element
1622 };
1623 var showEvent = $.Event(Event$4.SHOW, relatedTarget);
1624 $(parent).trigger(showEvent);
1625
1626 if (showEvent.isDefaultPrevented()) {
1627 return;
1628 } // Disable totally Popper.js for Dropdown in Navbar
1629
1630
1631 if (!this._inNavbar) {
1632 /**
1633 * Check for Popper dependency
1634 * Popper - https://popper.js.org
1635 */
1636 if (typeof Popper === 'undefined') {
1637 throw new TypeError('Bootstrap\'s dropdowns require Popper.js (https://popper.js.org/)');
1638 }
1639
1640 var referenceElement = this._element;
1641
1642 if (this._config.reference === 'parent') {
1643 referenceElement = parent;
1644 } else if (Util.isElement(this._config.reference)) {
1645 referenceElement = this._config.reference; // Check if it's jQuery element
1646
1647 if (typeof this._config.reference.jquery !== 'undefined') {
1648 referenceElement = this._config.reference[0];
1649 }
1650 } // If boundary is not `scrollParent`, then set position to `static`
1651 // to allow the menu to "escape" the scroll parent's boundaries
1652 // https://github.com/twbs/bootstrap/issues/24251
1653
1654
1655 if (this._config.boundary !== 'scrollParent') {
1656 $(parent).addClass(ClassName$4.POSITION_STATIC);
1657 }
1658
1659 this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig());
1660 } // If this is a touch-enabled device we add extra
1661 // empty mouseover listeners to the body's immediate children;
1662 // only needed because of broken event delegation on iOS
1663 // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
1664
1665
1666 if ('ontouchstart' in document.documentElement && $(parent).closest(Selector$4.NAVBAR_NAV).length === 0) {
1667 $(document.body).children().on('mouseover', null, $.noop);
1668 }
1669
1670 this._element.focus();
1671
1672 this._element.setAttribute('aria-expanded', true);
1673
1674 $(this._menu).toggleClass(ClassName$4.SHOW);
1675 $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.SHOWN, relatedTarget));
1676 };
1677
1678 _proto.show = function show() {
1679 if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED) || $(this._menu).hasClass(ClassName$4.SHOW)) {
1680 return;
1681 }
1682
1683 var relatedTarget = {
1684 relatedTarget: this._element
1685 };
1686 var showEvent = $.Event(Event$4.SHOW, relatedTarget);
1687
1688 var parent = Dropdown._getParentFromElement(this._element);
1689
1690 $(parent).trigger(showEvent);
1691
1692 if (showEvent.isDefaultPrevented()) {
1693 return;
1694 }
1695
1696 $(this._menu).toggleClass(ClassName$4.SHOW);
1697 $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.SHOWN, relatedTarget));
1698 };
1699
1700 _proto.hide = function hide() {
1701 if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED) || !$(this._menu).hasClass(ClassName$4.SHOW)) {
1702 return;
1703 }
1704
1705 var relatedTarget = {
1706 relatedTarget: this._element
1707 };
1708 var hideEvent = $.Event(Event$4.HIDE, relatedTarget);
1709
1710 var parent = Dropdown._getParentFromElement(this._element);
1711
1712 $(parent).trigger(hideEvent);
1713
1714 if (hideEvent.isDefaultPrevented()) {
1715 return;
1716 }
1717
1718 $(this._menu).toggleClass(ClassName$4.SHOW);
1719 $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.HIDDEN, relatedTarget));
1720 };
1721
1722 _proto.dispose = function dispose() {
1723 $.removeData(this._element, DATA_KEY$4);
1724 $(this._element).off(EVENT_KEY$4);
1725 this._element = null;
1726 this._menu = null;
1727
1728 if (this._popper !== null) {
1729 this._popper.destroy();
1730
1731 this._popper = null;
1732 }
1733 };
1734
1735 _proto.update = function update() {
1736 this._inNavbar = this._detectNavbar();
1737
1738 if (this._popper !== null) {
1739 this._popper.scheduleUpdate();
1740 }
1741 } // Private
1742 ;
1743
1744 _proto._addEventListeners = function _addEventListeners() {
1745 var _this = this;
1746
1747 $(this._element).on(Event$4.CLICK, function (event) {
1748 event.preventDefault();
1749 event.stopPropagation();
1750
1751 _this.toggle();
1752 });
1753 };
1754
1755 _proto._getConfig = function _getConfig(config) {
1756 config = _objectSpread({}, this.constructor.Default, $(this._element).data(), config);
1757 Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType);
1758 return config;
1759 };
1760
1761 _proto._getMenuElement = function _getMenuElement() {
1762 if (!this._menu) {
1763 var parent = Dropdown._getParentFromElement(this._element);
1764
1765 if (parent) {
1766 this._menu = parent.querySelector(Selector$4.MENU);
1767 }
1768 }
1769
1770 return this._menu;
1771 };
1772
1773 _proto._getPlacement = function _getPlacement() {
1774 var $parentDropdown = $(this._element.parentNode);
1775 var placement = AttachmentMap.BOTTOM; // Handle dropup
1776
1777 if ($parentDropdown.hasClass(ClassName$4.DROPUP)) {
1778 placement = AttachmentMap.TOP;
1779
1780 if ($(this._menu).hasClass(ClassName$4.MENURIGHT)) {
1781 placement = AttachmentMap.TOPEND;
1782 }
1783 } else if ($parentDropdown.hasClass(ClassName$4.DROPRIGHT)) {
1784 placement = AttachmentMap.RIGHT;
1785 } else if ($parentDropdown.hasClass(ClassName$4.DROPLEFT)) {
1786 placement = AttachmentMap.LEFT;
1787 } else if ($(this._menu).hasClass(ClassName$4.MENURIGHT)) {
1788 placement = AttachmentMap.BOTTOMEND;
1789 }
1790
1791 return placement;
1792 };
1793
1794 _proto._detectNavbar = function _detectNavbar() {
1795 return $(this._element).closest('.navbar').length > 0;
1796 };
1797
1798 _proto._getOffset = function _getOffset() {
1799 var _this2 = this;
1800
1801 var offset = {};
1802
1803 if (typeof this._config.offset === 'function') {
1804 offset.fn = function (data) {
1805 data.offsets = _objectSpread({}, data.offsets, _this2._config.offset(data.offsets, _this2._element) || {});
1806 return data;
1807 };
1808 } else {
1809 offset.offset = this._config.offset;
1810 }
1811
1812 return offset;
1813 };
1814
1815 _proto._getPopperConfig = function _getPopperConfig() {
1816 var popperConfig = {
1817 placement: this._getPlacement(),
1818 modifiers: {
1819 offset: this._getOffset(),
1820 flip: {
1821 enabled: this._config.flip
1822 },
1823 preventOverflow: {
1824 boundariesElement: this._config.boundary
1825 }
1826 } // Disable Popper.js if we have a static display
1827
1828 };
1829
1830 if (this._config.display === 'static') {
1831 popperConfig.modifiers.applyStyle = {
1832 enabled: false
1833 };
1834 }
1835
1836 return popperConfig;
1837 } // Static
1838 ;
1839
1840 Dropdown._jQueryInterface = function _jQueryInterface(config) {
1841 return this.each(function () {
1842 var data = $(this).data(DATA_KEY$4);
1843
1844 var _config = typeof config === 'object' ? config : null;
1845
1846 if (!data) {
1847 data = new Dropdown(this, _config);
1848 $(this).data(DATA_KEY$4, data);
1849 }
1850
1851 if (typeof config === 'string') {
1852 if (typeof data[config] === 'undefined') {
1853 throw new TypeError("No method named \"" + config + "\"");
1854 }
1855
1856 data[config]();
1857 }
1858 });
1859 };
1860
1861 Dropdown._clearMenus = function _clearMenus(event) {
1862 if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {
1863 return;
1864 }
1865
1866 var toggles = [].slice.call(document.querySelectorAll(Selector$4.DATA_TOGGLE));
1867
1868 for (var i = 0, len = toggles.length; i < len; i++) {
1869 var parent = Dropdown._getParentFromElement(toggles[i]);
1870
1871 var context = $(toggles[i]).data(DATA_KEY$4);
1872 var relatedTarget = {
1873 relatedTarget: toggles[i]
1874 };
1875
1876 if (event && event.type === 'click') {
1877 relatedTarget.clickEvent = event;
1878 }
1879
1880 if (!context) {
1881 continue;
1882 }
1883
1884 var dropdownMenu = context._menu;
1885
1886 if (!$(parent).hasClass(ClassName$4.SHOW)) {
1887 continue;
1888 }
1889
1890 if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $.contains(parent, event.target)) {
1891 continue;
1892 }
1893
1894 var hideEvent = $.Event(Event$4.HIDE, relatedTarget);
1895 $(parent).trigger(hideEvent);
1896
1897 if (hideEvent.isDefaultPrevented()) {
1898 continue;
1899 } // If this is a touch-enabled device we remove the extra
1900 // empty mouseover listeners we added for iOS support
1901
1902
1903 if ('ontouchstart' in document.documentElement) {
1904 $(document.body).children().off('mouseover', null, $.noop);
1905 }
1906
1907 toggles[i].setAttribute('aria-expanded', 'false');
1908 $(dropdownMenu).removeClass(ClassName$4.SHOW);
1909 $(parent).removeClass(ClassName$4.SHOW).trigger($.Event(Event$4.HIDDEN, relatedTarget));
1910 }
1911 };
1912
1913 Dropdown._getParentFromElement = function _getParentFromElement(element) {
1914 var parent;
1915 var selector = Util.getSelectorFromElement(element);
1916
1917 if (selector) {
1918 parent = document.querySelector(selector);
1919 }
1920
1921 return parent || element.parentNode;
1922 } // eslint-disable-next-line complexity
1923 ;
1924
1925 Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
1926 // If not input/textarea:
1927 // - And not a key in REGEXP_KEYDOWN => not a dropdown command
1928 // If input/textarea:
1929 // - If space key => not a dropdown command
1930 // - If key is other than escape
1931 // - If key is not up or down => not a dropdown command
1932 // - If trigger inside the menu => not a dropdown command
1933 if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $(event.target).closest(Selector$4.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {
1934 return;
1935 }
1936
1937 event.preventDefault();
1938 event.stopPropagation();
1939
1940 if (this.disabled || $(this).hasClass(ClassName$4.DISABLED)) {
1941 return;
1942 }
1943
1944 var parent = Dropdown._getParentFromElement(this);
1945
1946 var isActive = $(parent).hasClass(ClassName$4.SHOW);
1947
1948 if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {
1949 if (event.which === ESCAPE_KEYCODE) {
1950 var toggle = parent.querySelector(Selector$4.DATA_TOGGLE);
1951 $(toggle).trigger('focus');
1952 }
1953
1954 $(this).trigger('click');
1955 return;
1956 }
1957
1958 var items = [].slice.call(parent.querySelectorAll(Selector$4.VISIBLE_ITEMS));
1959
1960 if (items.length === 0) {
1961 return;
1962 }
1963
1964 var index = items.indexOf(event.target);
1965
1966 if (event.which === ARROW_UP_KEYCODE && index > 0) {
1967 // Up
1968 index--;
1969 }
1970
1971 if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {
1972 // Down
1973 index++;
1974 }
1975
1976 if (index < 0) {
1977 index = 0;
1978 }
1979
1980 items[index].focus();
1981 };
1982
1983 _createClass(Dropdown, null, [{
1984 key: "VERSION",
1985 get: function get() {
1986 return VERSION$4;
1987 }
1988 }, {
1989 key: "Default",
1990 get: function get() {
1991 return Default$2;
1992 }
1993 }, {
1994 key: "DefaultType",
1995 get: function get() {
1996 return DefaultType$2;
1997 }
1998 }]);
1999
2000 return Dropdown;
2001 }();
2002 /**
2003 * ------------------------------------------------------------------------
2004 * Data Api implementation
2005 * ------------------------------------------------------------------------
2006 */
2007
2008
2009 $(document).on(Event$4.KEYDOWN_DATA_API, Selector$4.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event$4.KEYDOWN_DATA_API, Selector$4.MENU, Dropdown._dataApiKeydownHandler).on(Event$4.CLICK_DATA_API + " " + Event$4.KEYUP_DATA_API, Dropdown._clearMenus).on(Event$4.CLICK_DATA_API, Selector$4.DATA_TOGGLE, function (event) {
2010 event.preventDefault();
2011 event.stopPropagation();
2012
2013 Dropdown._jQueryInterface.call($(this), 'toggle');
2014 }).on(Event$4.CLICK_DATA_API, Selector$4.FORM_CHILD, function (e) {
2015 e.stopPropagation();
2016 });
2017 /**
2018 * ------------------------------------------------------------------------
2019 * jQuery
2020 * ------------------------------------------------------------------------
2021 */
2022
2023 $.fn[NAME$4] = Dropdown._jQueryInterface;
2024 $.fn[NAME$4].Constructor = Dropdown;
2025
2026 $.fn[NAME$4].noConflict = function () {
2027 $.fn[NAME$4] = JQUERY_NO_CONFLICT$4;
2028 return Dropdown._jQueryInterface;
2029 };
2030
2031 /**
2032 * ------------------------------------------------------------------------
2033 * Constants
2034 * ------------------------------------------------------------------------
2035 */
2036
2037 var NAME$5 = 'modal';
2038 var VERSION$5 = '4.3.1';
2039 var DATA_KEY$5 = 'bs.modal';
2040 var EVENT_KEY$5 = "." + DATA_KEY$5;
2041 var DATA_API_KEY$5 = '.data-api';
2042 var JQUERY_NO_CONFLICT$5 = $.fn[NAME$5];
2043 var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key
2044
2045 var Default$3 = {
2046 backdrop: true,
2047 keyboard: true,
2048 focus: true,
2049 show: true
2050 };
2051 var DefaultType$3 = {
2052 backdrop: '(boolean|string)',
2053 keyboard: 'boolean',
2054 focus: 'boolean',
2055 show: 'boolean'
2056 };
2057 var Event$5 = {
2058 HIDE: "hide" + EVENT_KEY$5,
2059 HIDDEN: "hidden" + EVENT_KEY$5,
2060 SHOW: "show" + EVENT_KEY$5,
2061 SHOWN: "shown" + EVENT_KEY$5,
2062 FOCUSIN: "focusin" + EVENT_KEY$5,
2063 RESIZE: "resize" + EVENT_KEY$5,
2064 CLICK_DISMISS: "click.dismiss" + EVENT_KEY$5,
2065 KEYDOWN_DISMISS: "keydown.dismiss" + EVENT_KEY$5,
2066 MOUSEUP_DISMISS: "mouseup.dismiss" + EVENT_KEY$5,
2067 MOUSEDOWN_DISMISS: "mousedown.dismiss" + EVENT_KEY$5,
2068 CLICK_DATA_API: "click" + EVENT_KEY$5 + DATA_API_KEY$5
2069 };
2070 var ClassName$5 = {
2071 SCROLLABLE: 'modal-dialog-scrollable',
2072 SCROLLBAR_MEASURER: 'modal-scrollbar-measure',
2073 BACKDROP: 'modal-backdrop',
2074 OPEN: 'modal-open',
2075 FADE: 'fade',
2076 SHOW: 'show'
2077 };
2078 var Selector$5 = {
2079 DIALOG: '.modal-dialog',
2080 MODAL_BODY: '.modal-body',
2081 DATA_TOGGLE: '[data-toggle="modal"]',
2082 DATA_DISMISS: '[data-dismiss="modal"]',
2083 FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',
2084 STICKY_CONTENT: '.sticky-top'
2085 /**
2086 * ------------------------------------------------------------------------
2087 * Class Definition
2088 * ------------------------------------------------------------------------
2089 */
2090
2091 };
2092
2093 var Modal =
2094 /*#__PURE__*/
2095 function () {
2096 function Modal(element, config) {
2097 this._config = this._getConfig(config);
2098 this._element = element;
2099 this._dialog = element.querySelector(Selector$5.DIALOG);
2100 this._backdrop = null;
2101 this._isShown = false;
2102 this._isBodyOverflowing = false;
2103 this._ignoreBackdropClick = false;
2104 this._isTransitioning = false;
2105 this._scrollbarWidth = 0;
2106 } // Getters
2107
2108
2109 var _proto = Modal.prototype;
2110
2111 // Public
2112 _proto.toggle = function toggle(relatedTarget) {
2113 return this._isShown ? this.hide() : this.show(relatedTarget);
2114 };
2115
2116 _proto.show = function show(relatedTarget) {
2117 var _this = this;
2118
2119 if (this._isShown || this._isTransitioning) {
2120 return;
2121 }
2122
2123 if ($(this._element).hasClass(ClassName$5.FADE)) {
2124 this._isTransitioning = true;
2125 }
2126
2127 var showEvent = $.Event(Event$5.SHOW, {
2128 relatedTarget: relatedTarget
2129 });
2130 $(this._element).trigger(showEvent);
2131
2132 if (this._isShown || showEvent.isDefaultPrevented()) {
2133 return;
2134 }
2135
2136 this._isShown = true;
2137
2138 this._checkScrollbar();
2139
2140 this._setScrollbar();
2141
2142 this._adjustDialog();
2143
2144 this._setEscapeEvent();
2145
2146 this._setResizeEvent();
2147
2148 $(this._element).on(Event$5.CLICK_DISMISS, Selector$5.DATA_DISMISS, function (event) {
2149 return _this.hide(event);
2150 });
2151 $(this._dialog).on(Event$5.MOUSEDOWN_DISMISS, function () {
2152 $(_this._element).one(Event$5.MOUSEUP_DISMISS, function (event) {
2153 if ($(event.target).is(_this._element)) {
2154 _this._ignoreBackdropClick = true;
2155 }
2156 });
2157 });
2158
2159 this._showBackdrop(function () {
2160 return _this._showElement(relatedTarget);
2161 });
2162 };
2163
2164 _proto.hide = function hide(event) {
2165 var _this2 = this;
2166
2167 if (event) {
2168 event.preventDefault();
2169 }
2170
2171 if (!this._isShown || this._isTransitioning) {
2172 return;
2173 }
2174
2175 var hideEvent = $.Event(Event$5.HIDE);
2176 $(this._element).trigger(hideEvent);
2177
2178 if (!this._isShown || hideEvent.isDefaultPrevented()) {
2179 return;
2180 }
2181
2182 this._isShown = false;
2183 var transition = $(this._element).hasClass(ClassName$5.FADE);
2184
2185 if (transition) {
2186 this._isTransitioning = true;
2187 }
2188
2189 this._setEscapeEvent();
2190
2191 this._setResizeEvent();
2192
2193 $(document).off(Event$5.FOCUSIN);
2194 $(this._element).removeClass(ClassName$5.SHOW);
2195 $(this._element).off(Event$5.CLICK_DISMISS);
2196 $(this._dialog).off(Event$5.MOUSEDOWN_DISMISS);
2197
2198 if (transition) {
2199 var transitionDuration = Util.getTransitionDurationFromElement(this._element);
2200 $(this._element).one(Util.TRANSITION_END, function (event) {
2201 return _this2._hideModal(event);
2202 }).emulateTransitionEnd(transitionDuration);
2203 } else {
2204 this._hideModal();
2205 }
2206 };
2207
2208 _proto.dispose = function dispose() {
2209 [window, this._element, this._dialog].forEach(function (htmlElement) {
2210 return $(htmlElement).off(EVENT_KEY$5);
2211 });
2212 /**
2213 * `document` has 2 events `Event.FOCUSIN` and `Event.CLICK_DATA_API`
2214 * Do not move `document` in `htmlElements` array
2215 * It will remove `Event.CLICK_DATA_API` event that should remain
2216 */
2217
2218 $(document).off(Event$5.FOCUSIN);
2219 $.removeData(this._element, DATA_KEY$5);
2220 this._config = null;
2221 this._element = null;
2222 this._dialog = null;
2223 this._backdrop = null;
2224 this._isShown = null;
2225 this._isBodyOverflowing = null;
2226 this._ignoreBackdropClick = null;
2227 this._isTransitioning = null;
2228 this._scrollbarWidth = null;
2229 };
2230
2231 _proto.handleUpdate = function handleUpdate() {
2232 this._adjustDialog();
2233 } // Private
2234 ;
2235
2236 _proto._getConfig = function _getConfig(config) {
2237 config = _objectSpread({}, Default$3, config);
2238 Util.typeCheckConfig(NAME$5, config, DefaultType$3);
2239 return config;
2240 };
2241
2242 _proto._showElement = function _showElement(relatedTarget) {
2243 var _this3 = this;
2244
2245 var transition = $(this._element).hasClass(ClassName$5.FADE);
2246
2247 if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
2248 // Don't move modal's DOM position
2249 document.body.appendChild(this._element);
2250 }
2251
2252 this._element.style.display = 'block';
2253
2254 this._element.removeAttribute('aria-hidden');
2255
2256 this._element.setAttribute('aria-modal', true);
2257
2258 if ($(this._dialog).hasClass(ClassName$5.SCROLLABLE)) {
2259 this._dialog.querySelector(Selector$5.MODAL_BODY).scrollTop = 0;
2260 } else {
2261 this._element.scrollTop = 0;
2262 }
2263
2264 if (transition) {
2265 Util.reflow(this._element);
2266 }
2267
2268 $(this._element).addClass(ClassName$5.SHOW);
2269
2270 if (this._config.focus) {
2271 this._enforceFocus();
2272 }
2273
2274 var shownEvent = $.Event(Event$5.SHOWN, {
2275 relatedTarget: relatedTarget
2276 });
2277
2278 var transitionComplete = function transitionComplete() {
2279 if (_this3._config.focus) {
2280 _this3._element.focus();
2281 }
2282
2283 _this3._isTransitioning = false;
2284 $(_this3._element).trigger(shownEvent);
2285 };
2286
2287 if (transition) {
2288 var transitionDuration = Util.getTransitionDurationFromElement(this._dialog);
2289 $(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);
2290 } else {
2291 transitionComplete();
2292 }
2293 };
2294
2295 _proto._enforceFocus = function _enforceFocus() {
2296 var _this4 = this;
2297
2298 $(document).off(Event$5.FOCUSIN) // Guard against infinite focus loop
2299 .on(Event$5.FOCUSIN, function (event) {
2300 if (document !== event.target && _this4._element !== event.target && $(_this4._element).has(event.target).length === 0) {
2301 _this4._element.focus();
2302 }
2303 });
2304 };
2305
2306 _proto._setEscapeEvent = function _setEscapeEvent() {
2307 var _this5 = this;
2308
2309 if (this._isShown && this._config.keyboard) {
2310 $(this._element).on(Event$5.KEYDOWN_DISMISS, function (event) {
2311 if (event.which === ESCAPE_KEYCODE$1) {
2312 event.preventDefault();
2313
2314 _this5.hide();
2315 }
2316 });
2317 } else if (!this._isShown) {
2318 $(this._element).off(Event$5.KEYDOWN_DISMISS);
2319 }
2320 };
2321
2322 _proto._setResizeEvent = function _setResizeEvent() {
2323 var _this6 = this;
2324
2325 if (this._isShown) {
2326 $(window).on(Event$5.RESIZE, function (event) {
2327 return _this6.handleUpdate(event);
2328 });
2329 } else {
2330 $(window).off(Event$5.RESIZE);
2331 }
2332 };
2333
2334 _proto._hideModal = function _hideModal() {
2335 var _this7 = this;
2336
2337 this._element.style.display = 'none';
2338
2339 this._element.setAttribute('aria-hidden', true);
2340
2341 this._element.removeAttribute('aria-modal');
2342
2343 this._isTransitioning = false;
2344
2345 this._showBackdrop(function () {
2346 $(document.body).removeClass(ClassName$5.OPEN);
2347
2348 _this7._resetAdjustments();
2349
2350 _this7._resetScrollbar();
2351
2352 $(_this7._element).trigger(Event$5.HIDDEN);
2353 });
2354 };
2355
2356 _proto._removeBackdrop = function _removeBackdrop() {
2357 if (this._backdrop) {
2358 $(this._backdrop).remove();
2359 this._backdrop = null;
2360 }
2361 };
2362
2363 _proto._showBackdrop = function _showBackdrop(callback) {
2364 var _this8 = this;
2365
2366 var animate = $(this._element).hasClass(ClassName$5.FADE) ? ClassName$5.FADE : '';
2367
2368 if (this._isShown && this._config.backdrop) {
2369 this._backdrop = document.createElement('div');
2370 this._backdrop.className = ClassName$5.BACKDROP;
2371
2372 if (animate) {
2373 this._backdrop.classList.add(animate);
2374 }
2375
2376 $(this._backdrop).appendTo(document.body);
2377 $(this._element).on(Event$5.CLICK_DISMISS, function (event) {
2378 if (_this8._ignoreBackdropClick) {
2379 _this8._ignoreBackdropClick = false;
2380 return;
2381 }
2382
2383 if (event.target !== event.currentTarget) {
2384 return;
2385 }
2386
2387 if (_this8._config.backdrop === 'static') {
2388 _this8._element.focus();
2389 } else {
2390 _this8.hide();
2391 }
2392 });
2393
2394 if (animate) {
2395 Util.reflow(this._backdrop);
2396 }
2397
2398 $(this._backdrop).addClass(ClassName$5.SHOW);
2399
2400 if (!callback) {
2401 return;
2402 }
2403
2404 if (!animate) {
2405 callback();
2406 return;
2407 }
2408
2409 var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);
2410 $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);
2411 } else if (!this._isShown && this._backdrop) {
2412 $(this._backdrop).removeClass(ClassName$5.SHOW);
2413
2414 var callbackRemove = function callbackRemove() {
2415 _this8._removeBackdrop();
2416
2417 if (callback) {
2418 callback();
2419 }
2420 };
2421
2422 if ($(this._element).hasClass(ClassName$5.FADE)) {
2423 var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);
2424
2425 $(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);
2426 } else {
2427 callbackRemove();
2428 }
2429 } else if (callback) {
2430 callback();
2431 }
2432 } // ----------------------------------------------------------------------
2433 // the following methods are used to handle overflowing modals
2434 // todo (fat): these should probably be refactored out of modal.js
2435 // ----------------------------------------------------------------------
2436 ;
2437
2438 _proto._adjustDialog = function _adjustDialog() {
2439 var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
2440
2441 if (!this._isBodyOverflowing && isModalOverflowing) {
2442 this._element.style.paddingLeft = this._scrollbarWidth + "px";
2443 }
2444
2445 if (this._isBodyOverflowing && !isModalOverflowing) {
2446 this._element.style.paddingRight = this._scrollbarWidth + "px";
2447 }
2448 };
2449
2450 _proto._resetAdjustments = function _resetAdjustments() {
2451 this._element.style.paddingLeft = '';
2452 this._element.style.paddingRight = '';
2453 };
2454
2455 _proto._checkScrollbar = function _checkScrollbar() {
2456 var rect = document.body.getBoundingClientRect();
2457 this._isBodyOverflowing = rect.left + rect.right < window.innerWidth;
2458 this._scrollbarWidth = this._getScrollbarWidth();
2459 };
2460
2461 _proto._setScrollbar = function _setScrollbar() {
2462 var _this9 = this;
2463
2464 if (this._isBodyOverflowing) {
2465 // Note: DOMNode.style.paddingRight returns the actual value or '' if not set
2466 // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set
2467 var fixedContent = [].slice.call(document.querySelectorAll(Selector$5.FIXED_CONTENT));
2468 var stickyContent = [].slice.call(document.querySelectorAll(Selector$5.STICKY_CONTENT)); // Adjust fixed content padding
2469
2470 $(fixedContent).each(function (index, element) {
2471 var actualPadding = element.style.paddingRight;
2472 var calculatedPadding = $(element).css('padding-right');
2473 $(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + "px");
2474 }); // Adjust sticky content margin
2475
2476 $(stickyContent).each(function (index, element) {
2477 var actualMargin = element.style.marginRight;
2478 var calculatedMargin = $(element).css('margin-right');
2479 $(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + "px");
2480 }); // Adjust body padding
2481
2482 var actualPadding = document.body.style.paddingRight;
2483 var calculatedPadding = $(document.body).css('padding-right');
2484 $(document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px");
2485 }
2486
2487 $(document.body).addClass(ClassName$5.OPEN);
2488 };
2489
2490 _proto._resetScrollbar = function _resetScrollbar() {
2491 // Restore fixed content padding
2492 var fixedContent = [].slice.call(document.querySelectorAll(Selector$5.FIXED_CONTENT));
2493 $(fixedContent).each(function (index, element) {
2494 var padding = $(element).data('padding-right');
2495 $(element).removeData('padding-right');
2496 element.style.paddingRight = padding ? padding : '';
2497 }); // Restore sticky content
2498
2499 var elements = [].slice.call(document.querySelectorAll("" + Selector$5.STICKY_CONTENT));
2500 $(elements).each(function (index, element) {
2501 var margin = $(element).data('margin-right');
2502
2503 if (typeof margin !== 'undefined') {
2504 $(element).css('margin-right', margin).removeData('margin-right');
2505 }
2506 }); // Restore body padding
2507
2508 var padding = $(document.body).data('padding-right');
2509 $(document.body).removeData('padding-right');
2510 document.body.style.paddingRight = padding ? padding : '';
2511 };
2512
2513 _proto._getScrollbarWidth = function _getScrollbarWidth() {
2514 // thx d.walsh
2515 var scrollDiv = document.createElement('div');
2516 scrollDiv.className = ClassName$5.SCROLLBAR_MEASURER;
2517 document.body.appendChild(scrollDiv);
2518 var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
2519 document.body.removeChild(scrollDiv);
2520 return scrollbarWidth;
2521 } // Static
2522 ;
2523
2524 Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {
2525 return this.each(function () {
2526 var data = $(this).data(DATA_KEY$5);
2527
2528 var _config = _objectSpread({}, Default$3, $(this).data(), typeof config === 'object' && config ? config : {});
2529
2530 if (!data) {
2531 data = new Modal(this, _config);
2532 $(this).data(DATA_KEY$5, data);
2533 }
2534
2535 if (typeof config === 'string') {
2536 if (typeof data[config] === 'undefined') {
2537 throw new TypeError("No method named \"" + config + "\"");
2538 }
2539
2540 data[config](relatedTarget);
2541 } else if (_config.show) {
2542 data.show(relatedTarget);
2543 }
2544 });
2545 };
2546
2547 _createClass(Modal, null, [{
2548 key: "VERSION",
2549 get: function get() {
2550 return VERSION$5;
2551 }
2552 }, {
2553 key: "Default",
2554 get: function get() {
2555 return Default$3;
2556 }
2557 }]);
2558
2559 return Modal;
2560 }();
2561 /**
2562 * ------------------------------------------------------------------------
2563 * Data Api implementation
2564 * ------------------------------------------------------------------------
2565 */
2566
2567
2568 $(document).on(Event$5.CLICK_DATA_API, Selector$5.DATA_TOGGLE, function (event) {
2569 var _this10 = this;
2570
2571 var target;
2572 var selector = Util.getSelectorFromElement(this);
2573
2574 if (selector) {
2575 target = document.querySelector(selector);
2576 }
2577
2578 var config = $(target).data(DATA_KEY$5) ? 'toggle' : _objectSpread({}, $(target).data(), $(this).data());
2579
2580 if (this.tagName === 'A' || this.tagName === 'AREA') {
2581 event.preventDefault();
2582 }
2583
2584 var $target = $(target).one(Event$5.SHOW, function (showEvent) {
2585 if (showEvent.isDefaultPrevented()) {
2586 // Only register focus restorer if modal will actually get shown
2587 return;
2588 }
2589
2590 $target.one(Event$5.HIDDEN, function () {
2591 if ($(_this10).is(':visible')) {
2592 _this10.focus();
2593 }
2594 });
2595 });
2596
2597 Modal._jQueryInterface.call($(target), config, this);
2598 });
2599 /**
2600 * ------------------------------------------------------------------------
2601 * jQuery
2602 * ------------------------------------------------------------------------
2603 */
2604
2605 $.fn[NAME$5] = Modal._jQueryInterface;
2606 $.fn[NAME$5].Constructor = Modal;
2607
2608 $.fn[NAME$5].noConflict = function () {
2609 $.fn[NAME$5] = JQUERY_NO_CONFLICT$5;
2610 return Modal._jQueryInterface;
2611 };
2612
2613 /**
2614 * --------------------------------------------------------------------------
2615 * Bootstrap (v4.3.1): tools/sanitizer.js
2616 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2617 * --------------------------------------------------------------------------
2618 */
2619 var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];
2620 var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
2621 var DefaultWhitelist = {
2622 // Global attributes allowed on any supplied element below.
2623 '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
2624 a: ['target', 'href', 'title', 'rel'],
2625 area: [],
2626 b: [],
2627 br: [],
2628 col: [],
2629 code: [],
2630 div: [],
2631 em: [],
2632 hr: [],
2633 h1: [],
2634 h2: [],
2635 h3: [],
2636 h4: [],
2637 h5: [],
2638 h6: [],
2639 i: [],
2640 img: ['src', 'alt', 'title', 'width', 'height'],
2641 li: [],
2642 ol: [],
2643 p: [],
2644 pre: [],
2645 s: [],
2646 small: [],
2647 span: [],
2648 sub: [],
2649 sup: [],
2650 strong: [],
2651 u: [],
2652 ul: []
2653 /**
2654 * A pattern that recognizes a commonly useful subset of URLs that are safe.
2655 *
2656 * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
2657 */
2658
2659 };
2660 var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi;
2661 /**
2662 * A pattern that matches safe data URLs. Only matches image, video and audio types.
2663 *
2664 * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
2665 */
2666
2667 var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;
2668
2669 function allowedAttribute(attr, allowedAttributeList) {
2670 var attrName = attr.nodeName.toLowerCase();
2671
2672 if (allowedAttributeList.indexOf(attrName) !== -1) {
2673 if (uriAttrs.indexOf(attrName) !== -1) {
2674 return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN));
2675 }
2676
2677 return true;
2678 }
2679
2680 var regExp = allowedAttributeList.filter(function (attrRegex) {
2681 return attrRegex instanceof RegExp;
2682 }); // Check if a regular expression validates the attribute.
2683
2684 for (var i = 0, l = regExp.length; i < l; i++) {
2685 if (attrName.match(regExp[i])) {
2686 return true;
2687 }
2688 }
2689
2690 return false;
2691 }
2692
2693 function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
2694 if (unsafeHtml.length === 0) {
2695 return unsafeHtml;
2696 }
2697
2698 if (sanitizeFn && typeof sanitizeFn === 'function') {
2699 return sanitizeFn(unsafeHtml);
2700 }
2701
2702 var domParser = new window.DOMParser();
2703 var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');
2704 var whitelistKeys = Object.keys(whiteList);
2705 var elements = [].slice.call(createdDocument.body.querySelectorAll('*'));
2706
2707 var _loop = function _loop(i, len) {
2708 var el = elements[i];
2709 var elName = el.nodeName.toLowerCase();
2710
2711 if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {
2712 el.parentNode.removeChild(el);
2713 return "continue";
2714 }
2715
2716 var attributeList = [].slice.call(el.attributes);
2717 var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);
2718 attributeList.forEach(function (attr) {
2719 if (!allowedAttribute(attr, whitelistedAttributes)) {
2720 el.removeAttribute(attr.nodeName);
2721 }
2722 });
2723 };
2724
2725 for (var i = 0, len = elements.length; i < len; i++) {
2726 var _ret = _loop(i, len);
2727
2728 if (_ret === "continue") continue;
2729 }
2730
2731 return createdDocument.body.innerHTML;
2732 }
2733
2734 /**
2735 * ------------------------------------------------------------------------
2736 * Constants
2737 * ------------------------------------------------------------------------
2738 */
2739
2740 var NAME$6 = 'tooltip';
2741 var VERSION$6 = '4.3.1';
2742 var DATA_KEY$6 = 'bs.tooltip';
2743 var EVENT_KEY$6 = "." + DATA_KEY$6;
2744 var JQUERY_NO_CONFLICT$6 = $.fn[NAME$6];
2745 var CLASS_PREFIX = 'bs-tooltip';
2746 var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
2747 var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];
2748 var DefaultType$4 = {
2749 animation: 'boolean',
2750 template: 'string',
2751 title: '(string|element|function)',
2752 trigger: 'string',
2753 delay: '(number|object)',
2754 html: 'boolean',
2755 selector: '(string|boolean)',
2756 placement: '(string|function)',
2757 offset: '(number|string|function)',
2758 container: '(string|element|boolean)',
2759 fallbackPlacement: '(string|array)',
2760 boundary: '(string|element)',
2761 sanitize: 'boolean',
2762 sanitizeFn: '(null|function)',
2763 whiteList: 'object'
2764 };
2765 var AttachmentMap$1 = {
2766 AUTO: 'auto',
2767 TOP: 'top',
2768 RIGHT: 'right',
2769 BOTTOM: 'bottom',
2770 LEFT: 'left'
2771 };
2772 var Default$4 = {
2773 animation: true,
2774 template: '<div class="tooltip" role="tooltip">' + '<div class="arrow"></div>' + '<div class="tooltip-inner"></div></div>',
2775 trigger: 'hover focus',
2776 title: '',
2777 delay: 0,
2778 html: false,
2779 selector: false,
2780 placement: 'top',
2781 offset: 0,
2782 container: false,
2783 fallbackPlacement: 'flip',
2784 boundary: 'scrollParent',
2785 sanitize: true,
2786 sanitizeFn: null,
2787 whiteList: DefaultWhitelist
2788 };
2789 var HoverState = {
2790 SHOW: 'show',
2791 OUT: 'out'
2792 };
2793 var Event$6 = {
2794 HIDE: "hide" + EVENT_KEY$6,
2795 HIDDEN: "hidden" + EVENT_KEY$6,
2796 SHOW: "show" + EVENT_KEY$6,
2797 SHOWN: "shown" + EVENT_KEY$6,
2798 INSERTED: "inserted" + EVENT_KEY$6,
2799 CLICK: "click" + EVENT_KEY$6,
2800 FOCUSIN: "focusin" + EVENT_KEY$6,
2801 FOCUSOUT: "focusout" + EVENT_KEY$6,
2802 MOUSEENTER: "mouseenter" + EVENT_KEY$6,
2803 MOUSELEAVE: "mouseleave" + EVENT_KEY$6
2804 };
2805 var ClassName$6 = {
2806 FADE: 'fade',
2807 SHOW: 'show'
2808 };
2809 var Selector$6 = {
2810 TOOLTIP: '.tooltip',
2811 TOOLTIP_INNER: '.tooltip-inner',
2812 ARROW: '.arrow'
2813 };
2814 var Trigger = {
2815 HOVER: 'hover',
2816 FOCUS: 'focus',
2817 CLICK: 'click',
2818 MANUAL: 'manual'
2819 /**
2820 * ------------------------------------------------------------------------
2821 * Class Definition
2822 * ------------------------------------------------------------------------
2823 */
2824
2825 };
2826
2827 var Tooltip =
2828 /*#__PURE__*/
2829 function () {
2830 function Tooltip(element, config) {
2831 /**
2832 * Check for Popper dependency
2833 * Popper - https://popper.js.org
2834 */
2835 if (typeof Popper === 'undefined') {
2836 throw new TypeError('Bootstrap\'s tooltips require Popper.js (https://popper.js.org/)');
2837 } // private
2838
2839
2840 this._isEnabled = true;
2841 this._timeout = 0;
2842 this._hoverState = '';
2843 this._activeTrigger = {};
2844 this._popper = null; // Protected
2845
2846 this.element = element;
2847 this.config = this._getConfig(config);
2848 this.tip = null;
2849
2850 this._setListeners();
2851 } // Getters
2852
2853
2854 var _proto = Tooltip.prototype;
2855
2856 // Public
2857 _proto.enable = function enable() {
2858 this._isEnabled = true;
2859 };
2860
2861 _proto.disable = function disable() {
2862 this._isEnabled = false;
2863 };
2864
2865 _proto.toggleEnabled = function toggleEnabled() {
2866 this._isEnabled = !this._isEnabled;
2867 };
2868
2869 _proto.toggle = function toggle(event) {
2870 if (!this._isEnabled) {
2871 return;
2872 }
2873
2874 if (event) {
2875 var dataKey = this.constructor.DATA_KEY;
2876 var context = $(event.currentTarget).data(dataKey);
2877
2878 if (!context) {
2879 context = new this.constructor(event.currentTarget, this._getDelegateConfig());
2880 $(event.currentTarget).data(dataKey, context);
2881 }
2882
2883 context._activeTrigger.click = !context._activeTrigger.click;
2884
2885 if (context._isWithActiveTrigger()) {
2886 context._enter(null, context);
2887 } else {
2888 context._leave(null, context);
2889 }
2890 } else {
2891 if ($(this.getTipElement()).hasClass(ClassName$6.SHOW)) {
2892 this._leave(null, this);
2893
2894 return;
2895 }
2896
2897 this._enter(null, this);
2898 }
2899 };
2900
2901 _proto.dispose = function dispose() {
2902 clearTimeout(this._timeout);
2903 $.removeData(this.element, this.constructor.DATA_KEY);
2904 $(this.element).off(this.constructor.EVENT_KEY);
2905 $(this.element).closest('.modal').off('hide.bs.modal');
2906
2907 if (this.tip) {
2908 $(this.tip).remove();
2909 }
2910
2911 this._isEnabled = null;
2912 this._timeout = null;
2913 this._hoverState = null;
2914 this._activeTrigger = null;
2915
2916 if (this._popper !== null) {
2917 this._popper.destroy();
2918 }
2919
2920 this._popper = null;
2921 this.element = null;
2922 this.config = null;
2923 this.tip = null;
2924 };
2925
2926 _proto.show = function show() {
2927 var _this = this;
2928
2929 if ($(this.element).css('display') === 'none') {
2930 throw new Error('Please use show on visible elements');
2931 }
2932
2933 var showEvent = $.Event(this.constructor.Event.SHOW);
2934
2935 if (this.isWithContent() && this._isEnabled) {
2936 $(this.element).trigger(showEvent);
2937 var shadowRoot = Util.findShadowRoot(this.element);
2938 var isInTheDom = $.contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);
2939
2940 if (showEvent.isDefaultPrevented() || !isInTheDom) {
2941 return;
2942 }
2943
2944 var tip = this.getTipElement();
2945 var tipId = Util.getUID(this.constructor.NAME);
2946 tip.setAttribute('id', tipId);
2947 this.element.setAttribute('aria-describedby', tipId);
2948 this.setContent();
2949
2950 if (this.config.animation) {
2951 $(tip).addClass(ClassName$6.FADE);
2952 }
2953
2954 var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;
2955
2956 var attachment = this._getAttachment(placement);
2957
2958 this.addAttachmentClass(attachment);
2959
2960 var container = this._getContainer();
2961
2962 $(tip).data(this.constructor.DATA_KEY, this);
2963
2964 if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {
2965 $(tip).appendTo(container);
2966 }
2967
2968 $(this.element).trigger(this.constructor.Event.INSERTED);
2969 this._popper = new Popper(this.element, tip, {
2970 placement: attachment,
2971 modifiers: {
2972 offset: this._getOffset(),
2973 flip: {
2974 behavior: this.config.fallbackPlacement
2975 },
2976 arrow: {
2977 element: Selector$6.ARROW
2978 },
2979 preventOverflow: {
2980 boundariesElement: this.config.boundary
2981 }
2982 },
2983 onCreate: function onCreate(data) {
2984 if (data.originalPlacement !== data.placement) {
2985 _this._handlePopperPlacementChange(data);
2986 }
2987 },
2988 onUpdate: function onUpdate(data) {
2989 return _this._handlePopperPlacementChange(data);
2990 }
2991 });
2992 $(tip).addClass(ClassName$6.SHOW); // If this is a touch-enabled device we add extra
2993 // empty mouseover listeners to the body's immediate children;
2994 // only needed because of broken event delegation on iOS
2995 // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
2996
2997 if ('ontouchstart' in document.documentElement) {
2998 $(document.body).children().on('mouseover', null, $.noop);
2999 }
3000
3001 var complete = function complete() {
3002 if (_this.config.animation) {
3003 _this._fixTransition();
3004 }
3005
3006 var prevHoverState = _this._hoverState;
3007 _this._hoverState = null;
3008 $(_this.element).trigger(_this.constructor.Event.SHOWN);
3009
3010 if (prevHoverState === HoverState.OUT) {
3011 _this._leave(null, _this);
3012 }
3013 };
3014
3015 if ($(this.tip).hasClass(ClassName$6.FADE)) {
3016 var transitionDuration = Util.getTransitionDurationFromElement(this.tip);
3017 $(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
3018 } else {
3019 complete();
3020 }
3021 }
3022 };
3023
3024 _proto.hide = function hide(callback) {
3025 var _this2 = this;
3026
3027 var tip = this.getTipElement();
3028 var hideEvent = $.Event(this.constructor.Event.HIDE);
3029
3030 var complete = function complete() {
3031 if (_this2._hoverState !== HoverState.SHOW && tip.parentNode) {
3032 tip.parentNode.removeChild(tip);
3033 }
3034
3035 _this2._cleanTipClass();
3036
3037 _this2.element.removeAttribute('aria-describedby');
3038
3039 $(_this2.element).trigger(_this2.constructor.Event.HIDDEN);
3040
3041 if (_this2._popper !== null) {
3042 _this2._popper.destroy();
3043 }
3044
3045 if (callback) {
3046 callback();
3047 }
3048 };
3049
3050 $(this.element).trigger(hideEvent);
3051
3052 if (hideEvent.isDefaultPrevented()) {
3053 return;
3054 }
3055
3056 $(tip).removeClass(ClassName$6.SHOW); // If this is a touch-enabled device we remove the extra
3057 // empty mouseover listeners we added for iOS support
3058
3059 if ('ontouchstart' in document.documentElement) {
3060 $(document.body).children().off('mouseover', null, $.noop);
3061 }
3062
3063 this._activeTrigger[Trigger.CLICK] = false;
3064 this._activeTrigger[Trigger.FOCUS] = false;
3065 this._activeTrigger[Trigger.HOVER] = false;
3066
3067 if ($(this.tip).hasClass(ClassName$6.FADE)) {
3068 var transitionDuration = Util.getTransitionDurationFromElement(tip);
3069 $(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
3070 } else {
3071 complete();
3072 }
3073
3074 this._hoverState = '';
3075 };
3076
3077 _proto.update = function update() {
3078 if (this._popper !== null) {
3079 this._popper.scheduleUpdate();
3080 }
3081 } // Protected
3082 ;
3083
3084 _proto.isWithContent = function isWithContent() {
3085 return Boolean(this.getTitle());
3086 };
3087
3088 _proto.addAttachmentClass = function addAttachmentClass(attachment) {
3089 $(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
3090 };
3091
3092 _proto.getTipElement = function getTipElement() {
3093 this.tip = this.tip || $(this.config.template)[0];
3094 return this.tip;
3095 };
3096
3097 _proto.setContent = function setContent() {
3098 var tip = this.getTipElement();
3099 this.setElementContent($(tip.querySelectorAll(Selector$6.TOOLTIP_INNER)), this.getTitle());
3100 $(tip).removeClass(ClassName$6.FADE + " " + ClassName$6.SHOW);
3101 };
3102
3103 _proto.setElementContent = function setElementContent($element, content) {
3104 if (typeof content === 'object' && (content.nodeType || content.jquery)) {
3105 // Content is a DOM node or a jQuery
3106 if (this.config.html) {
3107 if (!$(content).parent().is($element)) {
3108 $element.empty().append(content);
3109 }
3110 } else {
3111 $element.text($(content).text());
3112 }
3113
3114 return;
3115 }
3116
3117 if (this.config.html) {
3118 if (this.config.sanitize) {
3119 content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);
3120 }
3121
3122 $element.html(content);
3123 } else {
3124 $element.text(content);
3125 }
3126 };
3127
3128 _proto.getTitle = function getTitle() {
3129 var title = this.element.getAttribute('data-original-title');
3130
3131 if (!title) {
3132 title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;
3133 }
3134
3135 return title;
3136 } // Private
3137 ;
3138
3139 _proto._getOffset = function _getOffset() {
3140 var _this3 = this;
3141
3142 var offset = {};
3143
3144 if (typeof this.config.offset === 'function') {
3145 offset.fn = function (data) {
3146 data.offsets = _objectSpread({}, data.offsets, _this3.config.offset(data.offsets, _this3.element) || {});
3147 return data;
3148 };
3149 } else {
3150 offset.offset = this.config.offset;
3151 }
3152
3153 return offset;
3154 };
3155
3156 _proto._getContainer = function _getContainer() {
3157 if (this.config.container === false) {
3158 return document.body;
3159 }
3160
3161 if (Util.isElement(this.config.container)) {
3162 return $(this.config.container);
3163 }
3164
3165 return $(document).find(this.config.container);
3166 };
3167
3168 _proto._getAttachment = function _getAttachment(placement) {
3169 return AttachmentMap$1[placement.toUpperCase()];
3170 };
3171
3172 _proto._setListeners = function _setListeners() {
3173 var _this4 = this;
3174
3175 var triggers = this.config.trigger.split(' ');
3176 triggers.forEach(function (trigger) {
3177 if (trigger === 'click') {
3178 $(_this4.element).on(_this4.constructor.Event.CLICK, _this4.config.selector, function (event) {
3179 return _this4.toggle(event);
3180 });
3181 } else if (trigger !== Trigger.MANUAL) {
3182 var eventIn = trigger === Trigger.HOVER ? _this4.constructor.Event.MOUSEENTER : _this4.constructor.Event.FOCUSIN;
3183 var eventOut = trigger === Trigger.HOVER ? _this4.constructor.Event.MOUSELEAVE : _this4.constructor.Event.FOCUSOUT;
3184 $(_this4.element).on(eventIn, _this4.config.selector, function (event) {
3185 return _this4._enter(event);
3186 }).on(eventOut, _this4.config.selector, function (event) {
3187 return _this4._leave(event);
3188 });
3189 }
3190 });
3191 $(this.element).closest('.modal').on('hide.bs.modal', function () {
3192 if (_this4.element) {
3193 _this4.hide();
3194 }
3195 });
3196
3197 if (this.config.selector) {
3198 this.config = _objectSpread({}, this.config, {
3199 trigger: 'manual',
3200 selector: ''
3201 });
3202 } else {
3203 this._fixTitle();
3204 }
3205 };
3206
3207 _proto._fixTitle = function _fixTitle() {
3208 var titleType = typeof this.element.getAttribute('data-original-title');
3209
3210 if (this.element.getAttribute('title') || titleType !== 'string') {
3211 this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');
3212 this.element.setAttribute('title', '');
3213 }
3214 };
3215
3216 _proto._enter = function _enter(event, context) {
3217 var dataKey = this.constructor.DATA_KEY;
3218 context = context || $(event.currentTarget).data(dataKey);
3219
3220 if (!context) {
3221 context = new this.constructor(event.currentTarget, this._getDelegateConfig());
3222 $(event.currentTarget).data(dataKey, context);
3223 }
3224
3225 if (event) {
3226 context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true;
3227 }
3228
3229 if ($(context.getTipElement()).hasClass(ClassName$6.SHOW) || context._hoverState === HoverState.SHOW) {
3230 context._hoverState = HoverState.SHOW;
3231 return;
3232 }
3233
3234 clearTimeout(context._timeout);
3235 context._hoverState = HoverState.SHOW;
3236
3237 if (!context.config.delay || !context.config.delay.show) {
3238 context.show();
3239 return;
3240 }
3241
3242 context._timeout = setTimeout(function () {
3243 if (context._hoverState === HoverState.SHOW) {
3244 context.show();
3245 }
3246 }, context.config.delay.show);
3247 };
3248
3249 _proto._leave = function _leave(event, context) {
3250 var dataKey = this.constructor.DATA_KEY;
3251 context = context || $(event.currentTarget).data(dataKey);
3252
3253 if (!context) {
3254 context = new this.constructor(event.currentTarget, this._getDelegateConfig());
3255 $(event.currentTarget).data(dataKey, context);
3256 }
3257
3258 if (event) {
3259 context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false;
3260 }
3261
3262 if (context._isWithActiveTrigger()) {
3263 return;
3264 }
3265
3266 clearTimeout(context._timeout);
3267 context._hoverState = HoverState.OUT;
3268
3269 if (!context.config.delay || !context.config.delay.hide) {
3270 context.hide();
3271 return;
3272 }
3273
3274 context._timeout = setTimeout(function () {
3275 if (context._hoverState === HoverState.OUT) {
3276 context.hide();
3277 }
3278 }, context.config.delay.hide);
3279 };
3280
3281 _proto._isWithActiveTrigger = function _isWithActiveTrigger() {
3282 for (var trigger in this._activeTrigger) {
3283 if (this._activeTrigger[trigger]) {
3284 return true;
3285 }
3286 }
3287
3288 return false;
3289 };
3290
3291 _proto._getConfig = function _getConfig(config) {
3292 var dataAttributes = $(this.element).data();
3293 Object.keys(dataAttributes).forEach(function (dataAttr) {
3294 if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {
3295 delete dataAttributes[dataAttr];
3296 }
3297 });
3298 config = _objectSpread({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {});
3299
3300 if (typeof config.delay === 'number') {
3301 config.delay = {
3302 show: config.delay,
3303 hide: config.delay
3304 };
3305 }
3306
3307 if (typeof config.title === 'number') {
3308 config.title = config.title.toString();
3309 }
3310
3311 if (typeof config.content === 'number') {
3312 config.content = config.content.toString();
3313 }
3314
3315 Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);
3316
3317 if (config.sanitize) {
3318 config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);
3319 }
3320
3321 return config;
3322 };
3323
3324 _proto._getDelegateConfig = function _getDelegateConfig() {
3325 var config = {};
3326
3327 if (this.config) {
3328 for (var key in this.config) {
3329 if (this.constructor.Default[key] !== this.config[key]) {
3330 config[key] = this.config[key];
3331 }
3332 }
3333 }
3334
3335 return config;
3336 };
3337
3338 _proto._cleanTipClass = function _cleanTipClass() {
3339 var $tip = $(this.getTipElement());
3340 var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
3341
3342 if (tabClass !== null && tabClass.length) {
3343 $tip.removeClass(tabClass.join(''));
3344 }
3345 };
3346
3347 _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {
3348 var popperInstance = popperData.instance;
3349 this.tip = popperInstance.popper;
3350
3351 this._cleanTipClass();
3352
3353 this.addAttachmentClass(this._getAttachment(popperData.placement));
3354 };
3355
3356 _proto._fixTransition = function _fixTransition() {
3357 var tip = this.getTipElement();
3358 var initConfigAnimation = this.config.animation;
3359
3360 if (tip.getAttribute('x-placement') !== null) {
3361 return;
3362 }
3363
3364 $(tip).removeClass(ClassName$6.FADE);
3365 this.config.animation = false;
3366 this.hide();
3367 this.show();
3368 this.config.animation = initConfigAnimation;
3369 } // Static
3370 ;
3371
3372 Tooltip._jQueryInterface = function _jQueryInterface(config) {
3373 return this.each(function () {
3374 var data = $(this).data(DATA_KEY$6);
3375
3376 var _config = typeof config === 'object' && config;
3377
3378 if (!data && /dispose|hide/.test(config)) {
3379 return;
3380 }
3381
3382 if (!data) {
3383 data = new Tooltip(this, _config);
3384 $(this).data(DATA_KEY$6, data);
3385 }
3386
3387 if (typeof config === 'string') {
3388 if (typeof data[config] === 'undefined') {
3389 throw new TypeError("No method named \"" + config + "\"");
3390 }
3391
3392 data[config]();
3393 }
3394 });
3395 };
3396
3397 _createClass(Tooltip, null, [{
3398 key: "VERSION",
3399 get: function get() {
3400 return VERSION$6;
3401 }
3402 }, {
3403 key: "Default",
3404 get: function get() {
3405 return Default$4;
3406 }
3407 }, {
3408 key: "NAME",
3409 get: function get() {
3410 return NAME$6;
3411 }
3412 }, {
3413 key: "DATA_KEY",
3414 get: function get() {
3415 return DATA_KEY$6;
3416 }
3417 }, {
3418 key: "Event",
3419 get: function get() {
3420 return Event$6;
3421 }
3422 }, {
3423 key: "EVENT_KEY",
3424 get: function get() {
3425 return EVENT_KEY$6;
3426 }
3427 }, {
3428 key: "DefaultType",
3429 get: function get() {
3430 return DefaultType$4;
3431 }
3432 }]);
3433
3434 return Tooltip;
3435 }();
3436 /**
3437 * ------------------------------------------------------------------------
3438 * jQuery
3439 * ------------------------------------------------------------------------
3440 */
3441
3442
3443 $.fn[NAME$6] = Tooltip._jQueryInterface;
3444 $.fn[NAME$6].Constructor = Tooltip;
3445
3446 $.fn[NAME$6].noConflict = function () {
3447 $.fn[NAME$6] = JQUERY_NO_CONFLICT$6;
3448 return Tooltip._jQueryInterface;
3449 };
3450
3451 /**
3452 * ------------------------------------------------------------------------
3453 * Constants
3454 * ------------------------------------------------------------------------
3455 */
3456
3457 var NAME$7 = 'popover';
3458 var VERSION$7 = '4.3.1';
3459 var DATA_KEY$7 = 'bs.popover';
3460 var EVENT_KEY$7 = "." + DATA_KEY$7;
3461 var JQUERY_NO_CONFLICT$7 = $.fn[NAME$7];
3462 var CLASS_PREFIX$1 = 'bs-popover';
3463 var BSCLS_PREFIX_REGEX$1 = new RegExp("(^|\\s)" + CLASS_PREFIX$1 + "\\S+", 'g');
3464
3465 var Default$5 = _objectSpread({}, Tooltip.Default, {
3466 placement: 'right',
3467 trigger: 'click',
3468 content: '',
3469 template: '<div class="popover" role="tooltip">' + '<div class="arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div></div>'
3470 });
3471
3472 var DefaultType$5 = _objectSpread({}, Tooltip.DefaultType, {
3473 content: '(string|element|function)'
3474 });
3475
3476 var ClassName$7 = {
3477 FADE: 'fade',
3478 SHOW: 'show'
3479 };
3480 var Selector$7 = {
3481 TITLE: '.popover-header',
3482 CONTENT: '.popover-body'
3483 };
3484 var Event$7 = {
3485 HIDE: "hide" + EVENT_KEY$7,
3486 HIDDEN: "hidden" + EVENT_KEY$7,
3487 SHOW: "show" + EVENT_KEY$7,
3488 SHOWN: "shown" + EVENT_KEY$7,
3489 INSERTED: "inserted" + EVENT_KEY$7,
3490 CLICK: "click" + EVENT_KEY$7,
3491 FOCUSIN: "focusin" + EVENT_KEY$7,
3492 FOCUSOUT: "focusout" + EVENT_KEY$7,
3493 MOUSEENTER: "mouseenter" + EVENT_KEY$7,
3494 MOUSELEAVE: "mouseleave" + EVENT_KEY$7
3495 /**
3496 * ------------------------------------------------------------------------
3497 * Class Definition
3498 * ------------------------------------------------------------------------
3499 */
3500
3501 };
3502
3503 var Popover =
3504 /*#__PURE__*/
3505 function (_Tooltip) {
3506 _inheritsLoose(Popover, _Tooltip);
3507
3508 function Popover() {
3509 return _Tooltip.apply(this, arguments) || this;
3510 }
3511
3512 var _proto = Popover.prototype;
3513
3514 // Overrides
3515 _proto.isWithContent = function isWithContent() {
3516 return this.getTitle() || this._getContent();
3517 };
3518
3519 _proto.addAttachmentClass = function addAttachmentClass(attachment) {
3520 $(this.getTipElement()).addClass(CLASS_PREFIX$1 + "-" + attachment);
3521 };
3522
3523 _proto.getTipElement = function getTipElement() {
3524 this.tip = this.tip || $(this.config.template)[0];
3525 return this.tip;
3526 };
3527
3528 _proto.setContent = function setContent() {
3529 var $tip = $(this.getTipElement()); // We use append for html objects to maintain js events
3530
3531 this.setElementContent($tip.find(Selector$7.TITLE), this.getTitle());
3532
3533 var content = this._getContent();
3534
3535 if (typeof content === 'function') {
3536 content = content.call(this.element);
3537 }
3538
3539 this.setElementContent($tip.find(Selector$7.CONTENT), content);
3540 $tip.removeClass(ClassName$7.FADE + " " + ClassName$7.SHOW);
3541 } // Private
3542 ;
3543
3544 _proto._getContent = function _getContent() {
3545 return this.element.getAttribute('data-content') || this.config.content;
3546 };
3547
3548 _proto._cleanTipClass = function _cleanTipClass() {
3549 var $tip = $(this.getTipElement());
3550 var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1);
3551
3552 if (tabClass !== null && tabClass.length > 0) {
3553 $tip.removeClass(tabClass.join(''));
3554 }
3555 } // Static
3556 ;
3557
3558 Popover._jQueryInterface = function _jQueryInterface(config) {
3559 return this.each(function () {
3560 var data = $(this).data(DATA_KEY$7);
3561
3562 var _config = typeof config === 'object' ? config : null;
3563
3564 if (!data && /dispose|hide/.test(config)) {
3565 return;
3566 }
3567
3568 if (!data) {
3569 data = new Popover(this, _config);
3570 $(this).data(DATA_KEY$7, data);
3571 }
3572
3573 if (typeof config === 'string') {
3574 if (typeof data[config] === 'undefined') {
3575 throw new TypeError("No method named \"" + config + "\"");
3576 }
3577
3578 data[config]();
3579 }
3580 });
3581 };
3582
3583 _createClass(Popover, null, [{
3584 key: "VERSION",
3585 // Getters
3586 get: function get() {
3587 return VERSION$7;
3588 }
3589 }, {
3590 key: "Default",
3591 get: function get() {
3592 return Default$5;
3593 }
3594 }, {
3595 key: "NAME",
3596 get: function get() {
3597 return NAME$7;
3598 }
3599 }, {
3600 key: "DATA_KEY",
3601 get: function get() {
3602 return DATA_KEY$7;
3603 }
3604 }, {
3605 key: "Event",
3606 get: function get() {
3607 return Event$7;
3608 }
3609 }, {
3610 key: "EVENT_KEY",
3611 get: function get() {
3612 return EVENT_KEY$7;
3613 }
3614 }, {
3615 key: "DefaultType",
3616 get: function get() {
3617 return DefaultType$5;
3618 }
3619 }]);
3620
3621 return Popover;
3622 }(Tooltip);
3623 /**
3624 * ------------------------------------------------------------------------
3625 * jQuery
3626 * ------------------------------------------------------------------------
3627 */
3628
3629
3630 $.fn[NAME$7] = Popover._jQueryInterface;
3631 $.fn[NAME$7].Constructor = Popover;
3632
3633 $.fn[NAME$7].noConflict = function () {
3634 $.fn[NAME$7] = JQUERY_NO_CONFLICT$7;
3635 return Popover._jQueryInterface;
3636 };
3637
3638 /**
3639 * ------------------------------------------------------------------------
3640 * Constants
3641 * ------------------------------------------------------------------------
3642 */
3643
3644 var NAME$8 = 'scrollspy';
3645 var VERSION$8 = '4.3.1';
3646 var DATA_KEY$8 = 'bs.scrollspy';
3647 var EVENT_KEY$8 = "." + DATA_KEY$8;
3648 var DATA_API_KEY$6 = '.data-api';
3649 var JQUERY_NO_CONFLICT$8 = $.fn[NAME$8];
3650 var Default$6 = {
3651 offset: 10,
3652 method: 'auto',
3653 target: ''
3654 };
3655 var DefaultType$6 = {
3656 offset: 'number',
3657 method: 'string',
3658 target: '(string|element)'
3659 };
3660 var Event$8 = {
3661 ACTIVATE: "activate" + EVENT_KEY$8,
3662 SCROLL: "scroll" + EVENT_KEY$8,
3663 LOAD_DATA_API: "load" + EVENT_KEY$8 + DATA_API_KEY$6
3664 };
3665 var ClassName$8 = {
3666 DROPDOWN_ITEM: 'dropdown-item',
3667 DROPDOWN_MENU: 'dropdown-menu',
3668 ACTIVE: 'active'
3669 };
3670 var Selector$8 = {
3671 DATA_SPY: '[data-spy="scroll"]',
3672 ACTIVE: '.active',
3673 NAV_LIST_GROUP: '.nav, .list-group',
3674 NAV_LINKS: '.nav-link',
3675 NAV_ITEMS: '.nav-item',
3676 LIST_ITEMS: '.list-group-item',
3677 DROPDOWN: '.dropdown',
3678 DROPDOWN_ITEMS: '.dropdown-item',
3679 DROPDOWN_TOGGLE: '.dropdown-toggle'
3680 };
3681 var OffsetMethod = {
3682 OFFSET: 'offset',
3683 POSITION: 'position'
3684 /**
3685 * ------------------------------------------------------------------------
3686 * Class Definition
3687 * ------------------------------------------------------------------------
3688 */
3689
3690 };
3691
3692 var ScrollSpy =
3693 /*#__PURE__*/
3694 function () {
3695 function ScrollSpy(element, config) {
3696 var _this = this;
3697
3698 this._element = element;
3699 this._scrollElement = element.tagName === 'BODY' ? window : element;
3700 this._config = this._getConfig(config);
3701 this._selector = this._config.target + " " + Selector$8.NAV_LINKS + "," + (this._config.target + " " + Selector$8.LIST_ITEMS + ",") + (this._config.target + " " + Selector$8.DROPDOWN_ITEMS);
3702 this._offsets = [];
3703 this._targets = [];
3704 this._activeTarget = null;
3705 this._scrollHeight = 0;
3706 $(this._scrollElement).on(Event$8.SCROLL, function (event) {
3707 return _this._process(event);
3708 });
3709 this.refresh();
3710
3711 this._process();
3712 } // Getters
3713
3714
3715 var _proto = ScrollSpy.prototype;
3716
3717 // Public
3718 _proto.refresh = function refresh() {
3719 var _this2 = this;
3720
3721 var autoMethod = this._scrollElement === this._scrollElement.window ? OffsetMethod.OFFSET : OffsetMethod.POSITION;
3722 var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;
3723 var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0;
3724 this._offsets = [];
3725 this._targets = [];
3726 this._scrollHeight = this._getScrollHeight();
3727 var targets = [].slice.call(document.querySelectorAll(this._selector));
3728 targets.map(function (element) {
3729 var target;
3730 var targetSelector = Util.getSelectorFromElement(element);
3731
3732 if (targetSelector) {
3733 target = document.querySelector(targetSelector);
3734 }
3735
3736 if (target) {
3737 var targetBCR = target.getBoundingClientRect();
3738
3739 if (targetBCR.width || targetBCR.height) {
3740 // TODO (fat): remove sketch reliance on jQuery position/offset
3741 return [$(target)[offsetMethod]().top + offsetBase, targetSelector];
3742 }
3743 }
3744
3745 return null;
3746 }).filter(function (item) {
3747 return item;
3748 }).sort(function (a, b) {
3749 return a[0] - b[0];
3750 }).forEach(function (item) {
3751 _this2._offsets.push(item[0]);
3752
3753 _this2._targets.push(item[1]);
3754 });
3755 };
3756
3757 _proto.dispose = function dispose() {
3758 $.removeData(this._element, DATA_KEY$8);
3759 $(this._scrollElement).off(EVENT_KEY$8);
3760 this._element = null;
3761 this._scrollElement = null;
3762 this._config = null;
3763 this._selector = null;
3764 this._offsets = null;
3765 this._targets = null;
3766 this._activeTarget = null;
3767 this._scrollHeight = null;
3768 } // Private
3769 ;
3770
3771 _proto._getConfig = function _getConfig(config) {
3772 config = _objectSpread({}, Default$6, typeof config === 'object' && config ? config : {});
3773
3774 if (typeof config.target !== 'string') {
3775 var id = $(config.target).attr('id');
3776
3777 if (!id) {
3778 id = Util.getUID(NAME$8);
3779 $(config.target).attr('id', id);
3780 }
3781
3782 config.target = "#" + id;
3783 }
3784
3785 Util.typeCheckConfig(NAME$8, config, DefaultType$6);
3786 return config;
3787 };
3788
3789 _proto._getScrollTop = function _getScrollTop() {
3790 return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;
3791 };
3792
3793 _proto._getScrollHeight = function _getScrollHeight() {
3794 return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
3795 };
3796
3797 _proto._getOffsetHeight = function _getOffsetHeight() {
3798 return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;
3799 };
3800
3801 _proto._process = function _process() {
3802 var scrollTop = this._getScrollTop() + this._config.offset;
3803
3804 var scrollHeight = this._getScrollHeight();
3805
3806 var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();
3807
3808 if (this._scrollHeight !== scrollHeight) {
3809 this.refresh();
3810 }
3811
3812 if (scrollTop >= maxScroll) {
3813 var target = this._targets[this._targets.length - 1];
3814
3815 if (this._activeTarget !== target) {
3816 this._activate(target);
3817 }
3818
3819 return;
3820 }
3821
3822 if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {
3823 this._activeTarget = null;
3824
3825 this._clear();
3826
3827 return;
3828 }
3829
3830 var offsetLength = this._offsets.length;
3831
3832 for (var i = offsetLength; i--;) {
3833 var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);
3834
3835 if (isActiveTarget) {
3836 this._activate(this._targets[i]);
3837 }
3838 }
3839 };
3840
3841 _proto._activate = function _activate(target) {
3842 this._activeTarget = target;
3843
3844 this._clear();
3845
3846 var queries = this._selector.split(',').map(function (selector) {
3847 return selector + "[data-target=\"" + target + "\"]," + selector + "[href=\"" + target + "\"]";
3848 });
3849
3850 var $link = $([].slice.call(document.querySelectorAll(queries.join(','))));
3851
3852 if ($link.hasClass(ClassName$8.DROPDOWN_ITEM)) {
3853 $link.closest(Selector$8.DROPDOWN).find(Selector$8.DROPDOWN_TOGGLE).addClass(ClassName$8.ACTIVE);
3854 $link.addClass(ClassName$8.ACTIVE);
3855 } else {
3856 // Set triggered link as active
3857 $link.addClass(ClassName$8.ACTIVE); // Set triggered links parents as active
3858 // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
3859
3860 $link.parents(Selector$8.NAV_LIST_GROUP).prev(Selector$8.NAV_LINKS + ", " + Selector$8.LIST_ITEMS).addClass(ClassName$8.ACTIVE); // Handle special case when .nav-link is inside .nav-item
3861
3862 $link.parents(Selector$8.NAV_LIST_GROUP).prev(Selector$8.NAV_ITEMS).children(Selector$8.NAV_LINKS).addClass(ClassName$8.ACTIVE);
3863 }
3864
3865 $(this._scrollElement).trigger(Event$8.ACTIVATE, {
3866 relatedTarget: target
3867 });
3868 };
3869
3870 _proto._clear = function _clear() {
3871 [].slice.call(document.querySelectorAll(this._selector)).filter(function (node) {
3872 return node.classList.contains(ClassName$8.ACTIVE);
3873 }).forEach(function (node) {
3874 return node.classList.remove(ClassName$8.ACTIVE);
3875 });
3876 } // Static
3877 ;
3878
3879 ScrollSpy._jQueryInterface = function _jQueryInterface(config) {
3880 return this.each(function () {
3881 var data = $(this).data(DATA_KEY$8);
3882
3883 var _config = typeof config === 'object' && config;
3884
3885 if (!data) {
3886 data = new ScrollSpy(this, _config);
3887 $(this).data(DATA_KEY$8, data);
3888 }
3889
3890 if (typeof config === 'string') {
3891 if (typeof data[config] === 'undefined') {
3892 throw new TypeError("No method named \"" + config + "\"");
3893 }
3894
3895 data[config]();
3896 }
3897 });
3898 };
3899
3900 _createClass(ScrollSpy, null, [{
3901 key: "VERSION",
3902 get: function get() {
3903 return VERSION$8;
3904 }
3905 }, {
3906 key: "Default",
3907 get: function get() {
3908 return Default$6;
3909 }
3910 }]);
3911
3912 return ScrollSpy;
3913 }();
3914 /**
3915 * ------------------------------------------------------------------------
3916 * Data Api implementation
3917 * ------------------------------------------------------------------------
3918 */
3919
3920
3921 $(window).on(Event$8.LOAD_DATA_API, function () {
3922 var scrollSpys = [].slice.call(document.querySelectorAll(Selector$8.DATA_SPY));
3923 var scrollSpysLength = scrollSpys.length;
3924
3925 for (var i = scrollSpysLength; i--;) {
3926 var $spy = $(scrollSpys[i]);
3927
3928 ScrollSpy._jQueryInterface.call($spy, $spy.data());
3929 }
3930 });
3931 /**
3932 * ------------------------------------------------------------------------
3933 * jQuery
3934 * ------------------------------------------------------------------------
3935 */
3936
3937 $.fn[NAME$8] = ScrollSpy._jQueryInterface;
3938 $.fn[NAME$8].Constructor = ScrollSpy;
3939
3940 $.fn[NAME$8].noConflict = function () {
3941 $.fn[NAME$8] = JQUERY_NO_CONFLICT$8;
3942 return ScrollSpy._jQueryInterface;
3943 };
3944
3945 /**
3946 * ------------------------------------------------------------------------
3947 * Constants
3948 * ------------------------------------------------------------------------
3949 */
3950
3951 var NAME$9 = 'tab';
3952 var VERSION$9 = '4.3.1';
3953 var DATA_KEY$9 = 'bs.tab';
3954 var EVENT_KEY$9 = "." + DATA_KEY$9;
3955 var DATA_API_KEY$7 = '.data-api';
3956 var JQUERY_NO_CONFLICT$9 = $.fn[NAME$9];
3957 var Event$9 = {
3958 HIDE: "hide" + EVENT_KEY$9,
3959 HIDDEN: "hidden" + EVENT_KEY$9,
3960 SHOW: "show" + EVENT_KEY$9,
3961 SHOWN: "shown" + EVENT_KEY$9,
3962 CLICK_DATA_API: "click" + EVENT_KEY$9 + DATA_API_KEY$7
3963 };
3964 var ClassName$9 = {
3965 DROPDOWN_MENU: 'dropdown-menu',
3966 ACTIVE: 'active',
3967 DISABLED: 'disabled',
3968 FADE: 'fade',
3969 SHOW: 'show'
3970 };
3971 var Selector$9 = {
3972 DROPDOWN: '.dropdown',
3973 NAV_LIST_GROUP: '.nav, .list-group',
3974 ACTIVE: '.active',
3975 ACTIVE_UL: '> li > .active',
3976 DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',
3977 DROPDOWN_TOGGLE: '.dropdown-toggle',
3978 DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active'
3979 /**
3980 * ------------------------------------------------------------------------
3981 * Class Definition
3982 * ------------------------------------------------------------------------
3983 */
3984
3985 };
3986
3987 var Tab =
3988 /*#__PURE__*/
3989 function () {
3990 function Tab(element) {
3991 this._element = element;
3992 } // Getters
3993
3994
3995 var _proto = Tab.prototype;
3996
3997 // Public
3998 _proto.show = function show() {
3999 var _this = this;
4000
4001 if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(ClassName$9.ACTIVE) || $(this._element).hasClass(ClassName$9.DISABLED)) {
4002 return;
4003 }
4004
4005 var target;
4006 var previous;
4007 var listElement = $(this._element).closest(Selector$9.NAV_LIST_GROUP)[0];
4008 var selector = Util.getSelectorFromElement(this._element);
4009
4010 if (listElement) {
4011 var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? Selector$9.ACTIVE_UL : Selector$9.ACTIVE;
4012 previous = $.makeArray($(listElement).find(itemSelector));
4013 previous = previous[previous.length - 1];
4014 }
4015
4016 var hideEvent = $.Event(Event$9.HIDE, {
4017 relatedTarget: this._element
4018 });
4019 var showEvent = $.Event(Event$9.SHOW, {
4020 relatedTarget: previous
4021 });
4022
4023 if (previous) {
4024 $(previous).trigger(hideEvent);
4025 }
4026
4027 $(this._element).trigger(showEvent);
4028
4029 if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {
4030 return;
4031 }
4032
4033 if (selector) {
4034 target = document.querySelector(selector);
4035 }
4036
4037 this._activate(this._element, listElement);
4038
4039 var complete = function complete() {
4040 var hiddenEvent = $.Event(Event$9.HIDDEN, {
4041 relatedTarget: _this._element
4042 });
4043 var shownEvent = $.Event(Event$9.SHOWN, {
4044 relatedTarget: previous
4045 });
4046 $(previous).trigger(hiddenEvent);
4047 $(_this._element).trigger(shownEvent);
4048 };
4049
4050 if (target) {
4051 this._activate(target, target.parentNode, complete);
4052 } else {
4053 complete();
4054 }
4055 };
4056
4057 _proto.dispose = function dispose() {
4058 $.removeData(this._element, DATA_KEY$9);
4059 this._element = null;
4060 } // Private
4061 ;
4062
4063 _proto._activate = function _activate(element, container, callback) {
4064 var _this2 = this;
4065
4066 var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $(container).find(Selector$9.ACTIVE_UL) : $(container).children(Selector$9.ACTIVE);
4067 var active = activeElements[0];
4068 var isTransitioning = callback && active && $(active).hasClass(ClassName$9.FADE);
4069
4070 var complete = function complete() {
4071 return _this2._transitionComplete(element, active, callback);
4072 };
4073
4074 if (active && isTransitioning) {
4075 var transitionDuration = Util.getTransitionDurationFromElement(active);
4076 $(active).removeClass(ClassName$9.SHOW).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
4077 } else {
4078 complete();
4079 }
4080 };
4081
4082 _proto._transitionComplete = function _transitionComplete(element, active, callback) {
4083 if (active) {
4084 $(active).removeClass(ClassName$9.ACTIVE);
4085 var dropdownChild = $(active.parentNode).find(Selector$9.DROPDOWN_ACTIVE_CHILD)[0];
4086
4087 if (dropdownChild) {
4088 $(dropdownChild).removeClass(ClassName$9.ACTIVE);
4089 }
4090
4091 if (active.getAttribute('role') === 'tab') {
4092 active.setAttribute('aria-selected', false);
4093 }
4094 }
4095
4096 $(element).addClass(ClassName$9.ACTIVE);
4097
4098 if (element.getAttribute('role') === 'tab') {
4099 element.setAttribute('aria-selected', true);
4100 }
4101
4102 Util.reflow(element);
4103
4104 if (element.classList.contains(ClassName$9.FADE)) {
4105 element.classList.add(ClassName$9.SHOW);
4106 }
4107
4108 if (element.parentNode && $(element.parentNode).hasClass(ClassName$9.DROPDOWN_MENU)) {
4109 var dropdownElement = $(element).closest(Selector$9.DROPDOWN)[0];
4110
4111 if (dropdownElement) {
4112 var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(Selector$9.DROPDOWN_TOGGLE));
4113 $(dropdownToggleList).addClass(ClassName$9.ACTIVE);
4114 }
4115
4116 element.setAttribute('aria-expanded', true);
4117 }
4118
4119 if (callback) {
4120 callback();
4121 }
4122 } // Static
4123 ;
4124
4125 Tab._jQueryInterface = function _jQueryInterface(config) {
4126 return this.each(function () {
4127 var $this = $(this);
4128 var data = $this.data(DATA_KEY$9);
4129
4130 if (!data) {
4131 data = new Tab(this);
4132 $this.data(DATA_KEY$9, data);
4133 }
4134
4135 if (typeof config === 'string') {
4136 if (typeof data[config] === 'undefined') {
4137 throw new TypeError("No method named \"" + config + "\"");
4138 }
4139
4140 data[config]();
4141 }
4142 });
4143 };
4144
4145 _createClass(Tab, null, [{
4146 key: "VERSION",
4147 get: function get() {
4148 return VERSION$9;
4149 }
4150 }]);
4151
4152 return Tab;
4153 }();
4154 /**
4155 * ------------------------------------------------------------------------
4156 * Data Api implementation
4157 * ------------------------------------------------------------------------
4158 */
4159
4160
4161 $(document).on(Event$9.CLICK_DATA_API, Selector$9.DATA_TOGGLE, function (event) {
4162 event.preventDefault();
4163
4164 Tab._jQueryInterface.call($(this), 'show');
4165 });
4166 /**
4167 * ------------------------------------------------------------------------
4168 * jQuery
4169 * ------------------------------------------------------------------------
4170 */
4171
4172 $.fn[NAME$9] = Tab._jQueryInterface;
4173 $.fn[NAME$9].Constructor = Tab;
4174
4175 $.fn[NAME$9].noConflict = function () {
4176 $.fn[NAME$9] = JQUERY_NO_CONFLICT$9;
4177 return Tab._jQueryInterface;
4178 };
4179
4180 /**
4181 * ------------------------------------------------------------------------
4182 * Constants
4183 * ------------------------------------------------------------------------
4184 */
4185
4186 var NAME$a = 'toast';
4187 var VERSION$a = '4.3.1';
4188 var DATA_KEY$a = 'bs.toast';
4189 var EVENT_KEY$a = "." + DATA_KEY$a;
4190 var JQUERY_NO_CONFLICT$a = $.fn[NAME$a];
4191 var Event$a = {
4192 CLICK_DISMISS: "click.dismiss" + EVENT_KEY$a,
4193 HIDE: "hide" + EVENT_KEY$a,
4194 HIDDEN: "hidden" + EVENT_KEY$a,
4195 SHOW: "show" + EVENT_KEY$a,
4196 SHOWN: "shown" + EVENT_KEY$a
4197 };
4198 var ClassName$a = {
4199 FADE: 'fade',
4200 HIDE: 'hide',
4201 SHOW: 'show',
4202 SHOWING: 'showing'
4203 };
4204 var DefaultType$7 = {
4205 animation: 'boolean',
4206 autohide: 'boolean',
4207 delay: 'number'
4208 };
4209 var Default$7 = {
4210 animation: true,
4211 autohide: true,
4212 delay: 500
4213 };
4214 var Selector$a = {
4215 DATA_DISMISS: '[data-dismiss="toast"]'
4216 /**
4217 * ------------------------------------------------------------------------
4218 * Class Definition
4219 * ------------------------------------------------------------------------
4220 */
4221
4222 };
4223
4224 var Toast =
4225 /*#__PURE__*/
4226 function () {
4227 function Toast(element, config) {
4228 this._element = element;
4229 this._config = this._getConfig(config);
4230 this._timeout = null;
4231
4232 this._setListeners();
4233 } // Getters
4234
4235
4236 var _proto = Toast.prototype;
4237
4238 // Public
4239 _proto.show = function show() {
4240 var _this = this;
4241
4242 $(this._element).trigger(Event$a.SHOW);
4243
4244 if (this._config.animation) {
4245 this._element.classList.add(ClassName$a.FADE);
4246 }
4247
4248 var complete = function complete() {
4249 _this._element.classList.remove(ClassName$a.SHOWING);
4250
4251 _this._element.classList.add(ClassName$a.SHOW);
4252
4253 $(_this._element).trigger(Event$a.SHOWN);
4254
4255 if (_this._config.autohide) {
4256 _this.hide();
4257 }
4258 };
4259
4260 this._element.classList.remove(ClassName$a.HIDE);
4261
4262 this._element.classList.add(ClassName$a.SHOWING);
4263
4264 if (this._config.animation) {
4265 var transitionDuration = Util.getTransitionDurationFromElement(this._element);
4266 $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
4267 } else {
4268 complete();
4269 }
4270 };
4271
4272 _proto.hide = function hide(withoutTimeout) {
4273 var _this2 = this;
4274
4275 if (!this._element.classList.contains(ClassName$a.SHOW)) {
4276 return;
4277 }
4278
4279 $(this._element).trigger(Event$a.HIDE);
4280
4281 if (withoutTimeout) {
4282 this._close();
4283 } else {
4284 this._timeout = setTimeout(function () {
4285 _this2._close();
4286 }, this._config.delay);
4287 }
4288 };
4289
4290 _proto.dispose = function dispose() {
4291 clearTimeout(this._timeout);
4292 this._timeout = null;
4293
4294 if (this._element.classList.contains(ClassName$a.SHOW)) {
4295 this._element.classList.remove(ClassName$a.SHOW);
4296 }
4297
4298 $(this._element).off(Event$a.CLICK_DISMISS);
4299 $.removeData(this._element, DATA_KEY$a);
4300 this._element = null;
4301 this._config = null;
4302 } // Private
4303 ;
4304
4305 _proto._getConfig = function _getConfig(config) {
4306 config = _objectSpread({}, Default$7, $(this._element).data(), typeof config === 'object' && config ? config : {});
4307 Util.typeCheckConfig(NAME$a, config, this.constructor.DefaultType);
4308 return config;
4309 };
4310
4311 _proto._setListeners = function _setListeners() {
4312 var _this3 = this;
4313
4314 $(this._element).on(Event$a.CLICK_DISMISS, Selector$a.DATA_DISMISS, function () {
4315 return _this3.hide(true);
4316 });
4317 };
4318
4319 _proto._close = function _close() {
4320 var _this4 = this;
4321
4322 var complete = function complete() {
4323 _this4._element.classList.add(ClassName$a.HIDE);
4324
4325 $(_this4._element).trigger(Event$a.HIDDEN);
4326 };
4327
4328 this._element.classList.remove(ClassName$a.SHOW);
4329
4330 if (this._config.animation) {
4331 var transitionDuration = Util.getTransitionDurationFromElement(this._element);
4332 $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
4333 } else {
4334 complete();
4335 }
4336 } // Static
4337 ;
4338
4339 Toast._jQueryInterface = function _jQueryInterface(config) {
4340 return this.each(function () {
4341 var $element = $(this);
4342 var data = $element.data(DATA_KEY$a);
4343
4344 var _config = typeof config === 'object' && config;
4345
4346 if (!data) {
4347 data = new Toast(this, _config);
4348 $element.data(DATA_KEY$a, data);
4349 }
4350
4351 if (typeof config === 'string') {
4352 if (typeof data[config] === 'undefined') {
4353 throw new TypeError("No method named \"" + config + "\"");
4354 }
4355
4356 data[config](this);
4357 }
4358 });
4359 };
4360
4361 _createClass(Toast, null, [{
4362 key: "VERSION",
4363 get: function get() {
4364 return VERSION$a;
4365 }
4366 }, {
4367 key: "DefaultType",
4368 get: function get() {
4369 return DefaultType$7;
4370 }
4371 }, {
4372 key: "Default",
4373 get: function get() {
4374 return Default$7;
4375 }
4376 }]);
4377
4378 return Toast;
4379 }();
4380 /**
4381 * ------------------------------------------------------------------------
4382 * jQuery
4383 * ------------------------------------------------------------------------
4384 */
4385
4386
4387 $.fn[NAME$a] = Toast._jQueryInterface;
4388 $.fn[NAME$a].Constructor = Toast;
4389
4390 $.fn[NAME$a].noConflict = function () {
4391 $.fn[NAME$a] = JQUERY_NO_CONFLICT$a;
4392 return Toast._jQueryInterface;
4393 };
4394
4395 /**
4396 * --------------------------------------------------------------------------
4397 * Bootstrap (v4.3.1): index.js
4398 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
4399 * --------------------------------------------------------------------------
4400 */
4401
4402 (function () {
4403 if (typeof $ === 'undefined') {
4404 throw new TypeError('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.');
4405 }
4406
4407 var version = $.fn.jquery.split(' ')[0].split('.');
4408 var minMajor = 1;
4409 var ltMajor = 2;
4410 var minMinor = 9;
4411 var minPatch = 1;
4412 var maxMajor = 4;
4413
4414 if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {
4415 throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');
4416 }
4417 })();
4418
4419 exports.Util = Util;
4420 exports.Alert = Alert;
4421 exports.Button = Button;
4422 exports.Carousel = Carousel;
4423 exports.Collapse = Collapse;
4424 exports.Dropdown = Dropdown;
4425 exports.Modal = Modal;
4426 exports.Popover = Popover;
4427 exports.Scrollspy = ScrollSpy;
4428 exports.Tab = Tab;
4429 exports.Toast = Toast;
4430 exports.Tooltip = Tooltip;
4431
4432 Object.defineProperty(exports, '__esModule', { value: true });
4433
4434}));
4435//# sourceMappingURL=bootstrap.js.map
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt b/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt
new file mode 100644
index 00000000..0bdc1962
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt
@@ -0,0 +1,12 @@
1Copyright (c) .NET Foundation. All rights reserved.
2
3Licensed under the Apache License, Version 2.0 (the "License"); you may not use
4these files except in compliance with the License. You may obtain a copy of the
5License at
6
7http://www.apache.org/licenses/LICENSE-2.0
8
9Unless required by applicable law or agreed to in writing, software distributed
10under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
11CONDITIONS OF ANY KIND, either express or implied. See the License for the
12specific language governing permissions and limitations under the License.
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js b/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js
new file mode 100644
index 00000000..73f52983
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js
@@ -0,0 +1,432 @@
1// Unobtrusive validation support library for jQuery and jQuery Validate
2// Copyright (c) .NET Foundation. All rights reserved.
3// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
4// @version v3.2.11
5
6/*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false */
7/*global document: false, jQuery: false */
8
9(function (factory) {
10 if (typeof define === 'function' && define.amd) {
11 // AMD. Register as an anonymous module.
12 define("jquery.validate.unobtrusive", ['jquery-validation'], factory);
13 } else if (typeof module === 'object' && module.exports) {
14 // CommonJS-like environments that support module.exports
15 module.exports = factory(require('jquery-validation'));
16 } else {
17 // Browser global
18 jQuery.validator.unobtrusive = factory(jQuery);
19 }
20}(function ($) {
21 var $jQval = $.validator,
22 adapters,
23 data_validation = "unobtrusiveValidation";
24
25 function setValidationValues(options, ruleName, value) {
26 options.rules[ruleName] = value;
27 if (options.message) {
28 options.messages[ruleName] = options.message;
29 }
30 }
31
32 function splitAndTrim(value) {
33 return value.replace(/^\s+|\s+$/g, "").split(/\s*,\s*/g);
34 }
35
36 function escapeAttributeValue(value) {
37 // As mentioned on http://api.jquery.com/category/selectors/
38 return value.replace(/([!"#$%&'()*+,./:;<=>?@\[\\\]^`{|}~])/g, "\\$1");
39 }
40
41 function getModelPrefix(fieldName) {
42 return fieldName.substr(0, fieldName.lastIndexOf(".") + 1);
43 }
44
45 function appendModelPrefix(value, prefix) {
46 if (value.indexOf("*.") === 0) {
47 value = value.replace("*.", prefix);
48 }
49 return value;
50 }
51
52 function onError(error, inputElement) { // 'this' is the form element
53 var container = $(this).find("[data-valmsg-for='" + escapeAttributeValue(inputElement[0].name) + "']"),
54 replaceAttrValue = container.attr("data-valmsg-replace"),
55 replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) !== false : null;
56
57 container.removeClass("field-validation-valid").addClass("field-validation-error");
58 error.data("unobtrusiveContainer", container);
59
60 if (replace) {
61 container.empty();
62 error.removeClass("input-validation-error").appendTo(container);
63 }
64 else {
65 error.hide();
66 }
67 }
68
69 function onErrors(event, validator) { // 'this' is the form element
70 var container = $(this).find("[data-valmsg-summary=true]"),
71 list = container.find("ul");
72
73 if (list && list.length && validator.errorList.length) {
74 list.empty();
75 container.addClass("validation-summary-errors").removeClass("validation-summary-valid");
76
77 $.each(validator.errorList, function () {
78 $("<li />").html(this.message).appendTo(list);
79 });
80 }
81 }
82
83 function onSuccess(error) { // 'this' is the form element
84 var container = error.data("unobtrusiveContainer");
85
86 if (container) {
87 var replaceAttrValue = container.attr("data-valmsg-replace"),
88 replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) : null;
89
90 container.addClass("field-validation-valid").removeClass("field-validation-error");
91 error.removeData("unobtrusiveContainer");
92
93 if (replace) {
94 container.empty();
95 }
96 }
97 }
98
99 function onReset(event) { // 'this' is the form element
100 var $form = $(this),
101 key = '__jquery_unobtrusive_validation_form_reset';
102 if ($form.data(key)) {
103 return;
104 }
105 // Set a flag that indicates we're currently resetting the form.
106 $form.data(key, true);
107 try {
108 $form.data("validator").resetForm();
109 } finally {
110 $form.removeData(key);
111 }
112
113 $form.find(".validation-summary-errors")
114 .addClass("validation-summary-valid")
115 .removeClass("validation-summary-errors");
116 $form.find(".field-validation-error")
117 .addClass("field-validation-valid")
118 .removeClass("field-validation-error")
119 .removeData("unobtrusiveContainer")
120 .find(">*") // If we were using valmsg-replace, get the underlying error
121 .removeData("unobtrusiveContainer");
122 }
123
124 function validationInfo(form) {
125 var $form = $(form),
126 result = $form.data(data_validation),
127 onResetProxy = $.proxy(onReset, form),
128 defaultOptions = $jQval.unobtrusive.options || {},
129 execInContext = function (name, args) {
130 var func = defaultOptions[name];
131 func && $.isFunction(func) && func.apply(form, args);
132 };
133
134 if (!result) {
135 result = {
136 options: { // options structure passed to jQuery Validate's validate() method
137 errorClass: defaultOptions.errorClass || "input-validation-error",
138 errorElement: defaultOptions.errorElement || "span",
139 errorPlacement: function () {
140 onError.apply(form, arguments);
141 execInContext("errorPlacement", arguments);
142 },
143 invalidHandler: function () {
144 onErrors.apply(form, arguments);
145 execInContext("invalidHandler", arguments);
146 },
147 messages: {},
148 rules: {},
149 success: function () {
150 onSuccess.apply(form, arguments);
151 execInContext("success", arguments);
152 }
153 },
154 attachValidation: function () {
155 $form
156 .off("reset." + data_validation, onResetProxy)
157 .on("reset." + data_validation, onResetProxy)
158 .validate(this.options);
159 },
160 validate: function () { // a validation function that is called by unobtrusive Ajax
161 $form.validate();
162 return $form.valid();
163 }
164 };
165 $form.data(data_validation, result);
166 }
167
168 return result;
169 }
170
171 $jQval.unobtrusive = {
172 adapters: [],
173
174 parseElement: function (element, skipAttach) {
175 /// <summary>
176 /// Parses a single HTML element for unobtrusive validation attributes.
177 /// </summary>
178 /// <param name="element" domElement="true">The HTML element to be parsed.</param>
179 /// <param name="skipAttach" type="Boolean">[Optional] true to skip attaching the
180 /// validation to the form. If parsing just this single element, you should specify true.
181 /// If parsing several elements, you should specify false, and manually attach the validation
182 /// to the form when you are finished. The default is false.</param>
183 var $element = $(element),
184 form = $element.parents("form")[0],
185 valInfo, rules, messages;
186
187 if (!form) { // Cannot do client-side validation without a form
188 return;
189 }
190
191 valInfo = validationInfo(form);
192 valInfo.options.rules[element.name] = rules = {};
193 valInfo.options.messages[element.name] = messages = {};
194
195 $.each(this.adapters, function () {
196 var prefix = "data-val-" + this.name,
197 message = $element.attr(prefix),
198 paramValues = {};
199
200 if (message !== undefined) { // Compare against undefined, because an empty message is legal (and falsy)
201 prefix += "-";
202
203 $.each(this.params, function () {
204 paramValues[this] = $element.attr(prefix + this);
205 });
206
207 this.adapt({
208 element: element,
209 form: form,
210 message: message,
211 params: paramValues,
212 rules: rules,
213 messages: messages
214 });
215 }
216 });
217
218 $.extend(rules, { "__dummy__": true });
219
220 if (!skipAttach) {
221 valInfo.attachValidation();
222 }
223 },
224
225 parse: function (selector) {
226 /// <summary>
227 /// Parses all the HTML elements in the specified selector. It looks for input elements decorated
228 /// with the [data-val=true] attribute value and enables validation according to the data-val-*
229 /// attribute values.
230 /// </summary>
231 /// <param name="selector" type="String">Any valid jQuery selector.</param>
232
233 // $forms includes all forms in selector's DOM hierarchy (parent, children and self) that have at least one
234 // element with data-val=true
235 var $selector = $(selector),
236 $forms = $selector.parents()
237 .addBack()
238 .filter("form")
239 .add($selector.find("form"))
240 .has("[data-val=true]");
241
242 $selector.find("[data-val=true]").each(function () {
243 $jQval.unobtrusive.parseElement(this, true);
244 });
245
246 $forms.each(function () {
247 var info = validationInfo(this);
248 if (info) {
249 info.attachValidation();
250 }
251 });
252 }
253 };
254
255 adapters = $jQval.unobtrusive.adapters;
256
257 adapters.add = function (adapterName, params, fn) {
258 /// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation.</summary>
259 /// <param name="adapterName" type="String">The name of the adapter to be added. This matches the name used
260 /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).</param>
261 /// <param name="params" type="Array" optional="true">[Optional] An array of parameter names (strings) that will
262 /// be extracted from the data-val-nnnn-mmmm HTML attributes (where nnnn is the adapter name, and
263 /// mmmm is the parameter name).</param>
264 /// <param name="fn" type="Function">The function to call, which adapts the values from the HTML
265 /// attributes into jQuery Validate rules and/or messages.</param>
266 /// <returns type="jQuery.validator.unobtrusive.adapters" />
267 if (!fn) { // Called with no params, just a function
268 fn = params;
269 params = [];
270 }
271 this.push({ name: adapterName, params: params, adapt: fn });
272 return this;
273 };
274
275 adapters.addBool = function (adapterName, ruleName) {
276 /// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where
277 /// the jQuery Validate validation rule has no parameter values.</summary>
278 /// <param name="adapterName" type="String">The name of the adapter to be added. This matches the name used
279 /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).</param>
280 /// <param name="ruleName" type="String" optional="true">[Optional] The name of the jQuery Validate rule. If not provided, the value
281 /// of adapterName will be used instead.</param>
282 /// <returns type="jQuery.validator.unobtrusive.adapters" />
283 return this.add(adapterName, function (options) {
284 setValidationValues(options, ruleName || adapterName, true);
285 });
286 };
287
288 adapters.addMinMax = function (adapterName, minRuleName, maxRuleName, minMaxRuleName, minAttribute, maxAttribute) {
289 /// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where
290 /// the jQuery Validate validation has three potential rules (one for min-only, one for max-only, and
291 /// one for min-and-max). The HTML parameters are expected to be named -min and -max.</summary>
292 /// <param name="adapterName" type="String">The name of the adapter to be added. This matches the name used
293 /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).</param>
294 /// <param name="minRuleName" type="String">The name of the jQuery Validate rule to be used when you only
295 /// have a minimum value.</param>
296 /// <param name="maxRuleName" type="String">The name of the jQuery Validate rule to be used when you only
297 /// have a maximum value.</param>
298 /// <param name="minMaxRuleName" type="String">The name of the jQuery Validate rule to be used when you
299 /// have both a minimum and maximum value.</param>
300 /// <param name="minAttribute" type="String" optional="true">[Optional] The name of the HTML attribute that
301 /// contains the minimum value. The default is "min".</param>
302 /// <param name="maxAttribute" type="String" optional="true">[Optional] The name of the HTML attribute that
303 /// contains the maximum value. The default is "max".</param>
304 /// <returns type="jQuery.validator.unobtrusive.adapters" />
305 return this.add(adapterName, [minAttribute || "min", maxAttribute || "max"], function (options) {
306 var min = options.params.min,
307 max = options.params.max;
308
309 if (min && max) {
310 setValidationValues(options, minMaxRuleName, [min, max]);
311 }
312 else if (min) {
313 setValidationValues(options, minRuleName, min);
314 }
315 else if (max) {
316 setValidationValues(options, maxRuleName, max);
317 }
318 });
319 };
320
321 adapters.addSingleVal = function (adapterName, attribute, ruleName) {
322 /// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where
323 /// the jQuery Validate validation rule has a single value.</summary>
324 /// <param name="adapterName" type="String">The name of the adapter to be added. This matches the name used
325 /// in the data-val-nnnn HTML attribute(where nnnn is the adapter name).</param>
326 /// <param name="attribute" type="String">[Optional] The name of the HTML attribute that contains the value.
327 /// The default is "val".</param>
328 /// <param name="ruleName" type="String" optional="true">[Optional] The name of the jQuery Validate rule. If not provided, the value
329 /// of adapterName will be used instead.</param>
330 /// <returns type="jQuery.validator.unobtrusive.adapters" />
331 return this.add(adapterName, [attribute || "val"], function (options) {
332 setValidationValues(options, ruleName || adapterName, options.params[attribute]);
333 });
334 };
335
336 $jQval.addMethod("__dummy__", function (value, element, params) {
337 return true;
338 });
339
340 $jQval.addMethod("regex", function (value, element, params) {
341 var match;
342 if (this.optional(element)) {
343 return true;
344 }
345
346 match = new RegExp(params).exec(value);
347 return (match && (match.index === 0) && (match[0].length === value.length));
348 });
349
350 $jQval.addMethod("nonalphamin", function (value, element, nonalphamin) {
351 var match;
352 if (nonalphamin) {
353 match = value.match(/\W/g);
354 match = match && match.length >= nonalphamin;
355 }
356 return match;
357 });
358
359 if ($jQval.methods.extension) {
360 adapters.addSingleVal("accept", "mimtype");
361 adapters.addSingleVal("extension", "extension");
362 } else {
363 // for backward compatibility, when the 'extension' validation method does not exist, such as with versions
364 // of JQuery Validation plugin prior to 1.10, we should use the 'accept' method for
365 // validating the extension, and ignore mime-type validations as they are not supported.
366 adapters.addSingleVal("extension", "extension", "accept");
367 }
368
369 adapters.addSingleVal("regex", "pattern");
370 adapters.addBool("creditcard").addBool("date").addBool("digits").addBool("email").addBool("number").addBool("url");
371 adapters.addMinMax("length", "minlength", "maxlength", "rangelength").addMinMax("range", "min", "max", "range");
372 adapters.addMinMax("minlength", "minlength").addMinMax("maxlength", "minlength", "maxlength");
373 adapters.add("equalto", ["other"], function (options) {
374 var prefix = getModelPrefix(options.element.name),
375 other = options.params.other,
376 fullOtherName = appendModelPrefix(other, prefix),
377 element = $(options.form).find(":input").filter("[name='" + escapeAttributeValue(fullOtherName) + "']")[0];
378
379 setValidationValues(options, "equalTo", element);
380 });
381 adapters.add("required", function (options) {
382 // jQuery Validate equates "required" with "mandatory" for checkbox elements
383 if (options.element.tagName.toUpperCase() !== "INPUT" || options.element.type.toUpperCase() !== "CHECKBOX") {
384 setValidationValues(options, "required", true);
385 }
386 });
387 adapters.add("remote", ["url", "type", "additionalfields"], function (options) {
388 var value = {
389 url: options.params.url,
390 type: options.params.type || "GET",
391 data: {}
392 },
393 prefix = getModelPrefix(options.element.name);
394
395 $.each(splitAndTrim(options.params.additionalfields || options.element.name), function (i, fieldName) {
396 var paramName = appendModelPrefix(fieldName, prefix);
397 value.data[paramName] = function () {
398 var field = $(options.form).find(":input").filter("[name='" + escapeAttributeValue(paramName) + "']");
399 // For checkboxes and radio buttons, only pick up values from checked fields.
400 if (field.is(":checkbox")) {
401 return field.filter(":checked").val() || field.filter(":hidden").val() || '';
402 }
403 else if (field.is(":radio")) {
404 return field.filter(":checked").val() || '';
405 }
406 return field.val();
407 };
408 });
409
410 setValidationValues(options, "remote", value);
411 });
412 adapters.add("password", ["min", "nonalphamin", "regex"], function (options) {
413 if (options.params.min) {
414 setValidationValues(options, "minlength", options.params.min);
415 }
416 if (options.params.nonalphamin) {
417 setValidationValues(options, "nonalphamin", options.params.nonalphamin);
418 }
419 if (options.params.regex) {
420 setValidationValues(options, "regex", options.params.regex);
421 }
422 });
423 adapters.add("fileextensions", ["extensions"], function (options) {
424 setValidationValues(options, "extension", options.params.extensions);
425 });
426
427 $(function () {
428 $jQval.unobtrusive.parse(document);
429 });
430
431 return $jQval.unobtrusive;
432}));
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/jquery-validation/LICENSE.md b/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/jquery-validation/LICENSE.md
new file mode 100644
index 00000000..dc377cc0
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/jquery-validation/LICENSE.md
@@ -0,0 +1,22 @@
1The MIT License (MIT)
2=====================
3
4Copyright Jörn Zaefferer
5
6Permission is hereby granted, free of charge, to any person obtaining a copy
7of this software and associated documentation files (the "Software"), to deal
8in the Software without restriction, including without limitation the rights
9to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10copies of the Software, and to permit persons to whom the Software is
11furnished to do so, subject to the following conditions:
12
13The above copyright notice and this permission notice shall be included in
14all copies or substantial portions of the Software.
15
16THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22THE SOFTWARE.
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/jquery-validation/dist/additional-methods.js b/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/jquery-validation/dist/additional-methods.js
new file mode 100644
index 00000000..e129bc0f
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/jquery-validation/dist/additional-methods.js
@@ -0,0 +1,1158 @@
1/*!
2 * jQuery Validation Plugin v1.17.0
3 *
4 * https://jqueryvalidation.org/
5 *
6 * Copyright (c) 2017 Jörn Zaefferer
7 * Released under the MIT license
8 */
9(function( factory ) {
10 if ( typeof define === "function" && define.amd ) {
11 define( ["jquery", "./jquery.validate"], factory );
12 } else if (typeof module === "object" && module.exports) {
13 module.exports = factory( require( "jquery" ) );
14 } else {
15 factory( jQuery );
16 }
17}(function( $ ) {
18
19( function() {
20
21 function stripHtml( value ) {
22
23 // Remove html tags and space chars
24 return value.replace( /<.[^<>]*?>/g, " " ).replace( /&nbsp;|&#160;/gi, " " )
25
26 // Remove punctuation
27 .replace( /[.(),;:!?%#$'\"_+=\/\-“”’]*/g, "" );
28 }
29
30 $.validator.addMethod( "maxWords", function( value, element, params ) {
31 return this.optional( element ) || stripHtml( value ).match( /\b\w+\b/g ).length <= params;
32 }, $.validator.format( "Please enter {0} words or less." ) );
33
34 $.validator.addMethod( "minWords", function( value, element, params ) {
35 return this.optional( element ) || stripHtml( value ).match( /\b\w+\b/g ).length >= params;
36 }, $.validator.format( "Please enter at least {0} words." ) );
37
38 $.validator.addMethod( "rangeWords", function( value, element, params ) {
39 var valueStripped = stripHtml( value ),
40 regex = /\b\w+\b/g;
41 return this.optional( element ) || valueStripped.match( regex ).length >= params[ 0 ] && valueStripped.match( regex ).length <= params[ 1 ];
42 }, $.validator.format( "Please enter between {0} and {1} words." ) );
43
44}() );
45
46// Accept a value from a file input based on a required mimetype
47$.validator.addMethod( "accept", function( value, element, param ) {
48
49 // Split mime on commas in case we have multiple types we can accept
50 var typeParam = typeof param === "string" ? param.replace( /\s/g, "" ) : "image/*",
51 optionalValue = this.optional( element ),
52 i, file, regex;
53
54 // Element is optional
55 if ( optionalValue ) {
56 return optionalValue;
57 }
58
59 if ( $( element ).attr( "type" ) === "file" ) {
60
61 // Escape string to be used in the regex
62 // see: https://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex
63 // Escape also "/*" as "/.*" as a wildcard
64 typeParam = typeParam
65 .replace( /[\-\[\]\/\{\}\(\)\+\?\.\\\^\$\|]/g, "\\$&" )
66 .replace( /,/g, "|" )
67 .replace( /\/\*/g, "/.*" );
68
69 // Check if the element has a FileList before checking each file
70 if ( element.files && element.files.length ) {
71 regex = new RegExp( ".?(" + typeParam + ")$", "i" );
72 for ( i = 0; i < element.files.length; i++ ) {
73 file = element.files[ i ];
74
75 // Grab the mimetype from the loaded file, verify it matches
76 if ( !file.type.match( regex ) ) {
77 return false;
78 }
79 }
80 }
81 }
82
83 // Either return true because we've validated each file, or because the
84 // browser does not support element.files and the FileList feature
85 return true;
86}, $.validator.format( "Please enter a value with a valid mimetype." ) );
87
88$.validator.addMethod( "alphanumeric", function( value, element ) {
89 return this.optional( element ) || /^\w+$/i.test( value );
90}, "Letters, numbers, and underscores only please" );
91
92/*
93 * Dutch bank account numbers (not 'giro' numbers) have 9 digits
94 * and pass the '11 check'.
95 * We accept the notation with spaces, as that is common.
96 * acceptable: 123456789 or 12 34 56 789
97 */
98$.validator.addMethod( "bankaccountNL", function( value, element ) {
99 if ( this.optional( element ) ) {
100 return true;
101 }
102 if ( !( /^[0-9]{9}|([0-9]{2} ){3}[0-9]{3}$/.test( value ) ) ) {
103 return false;
104 }
105
106 // Now '11 check'
107 var account = value.replace( / /g, "" ), // Remove spaces
108 sum = 0,
109 len = account.length,
110 pos, factor, digit;
111 for ( pos = 0; pos < len; pos++ ) {
112 factor = len - pos;
113 digit = account.substring( pos, pos + 1 );
114 sum = sum + factor * digit;
115 }
116 return sum % 11 === 0;
117}, "Please specify a valid bank account number" );
118
119$.validator.addMethod( "bankorgiroaccountNL", function( value, element ) {
120 return this.optional( element ) ||
121 ( $.validator.methods.bankaccountNL.call( this, value, element ) ) ||
122 ( $.validator.methods.giroaccountNL.call( this, value, element ) );
123}, "Please specify a valid bank or giro account number" );
124
125/**
126 * BIC is the business identifier code (ISO 9362). This BIC check is not a guarantee for authenticity.
127 *
128 * BIC pattern: BBBBCCLLbbb (8 or 11 characters long; bbb is optional)
129 *
130 * Validation is case-insensitive. Please make sure to normalize input yourself.
131 *
132 * BIC definition in detail:
133 * - First 4 characters - bank code (only letters)
134 * - Next 2 characters - ISO 3166-1 alpha-2 country code (only letters)
135 * - Next 2 characters - location code (letters and digits)
136 * a. shall not start with '0' or '1'
137 * b. second character must be a letter ('O' is not allowed) or digit ('0' for test (therefore not allowed), '1' denoting passive participant, '2' typically reverse-billing)
138 * - Last 3 characters - branch code, optional (shall not start with 'X' except in case of 'XXX' for primary office) (letters and digits)
139 */
140$.validator.addMethod( "bic", function( value, element ) {
141 return this.optional( element ) || /^([A-Z]{6}[A-Z2-9][A-NP-Z1-9])(X{3}|[A-WY-Z0-9][A-Z0-9]{2})?$/.test( value.toUpperCase() );
142}, "Please specify a valid BIC code" );
143
144/*
145 * Código de identificación fiscal ( CIF ) is the tax identification code for Spanish legal entities
146 * Further rules can be found in Spanish on http://es.wikipedia.org/wiki/C%C3%B3digo_de_identificaci%C3%B3n_fiscal
147 *
148 * Spanish CIF structure:
149 *
150 * [ T ][ P ][ P ][ N ][ N ][ N ][ N ][ N ][ C ]
151 *
152 * Where:
153 *
154 * T: 1 character. Kind of Organization Letter: [ABCDEFGHJKLMNPQRSUVW]
155 * P: 2 characters. Province.
156 * N: 5 characters. Secuencial Number within the province.
157 * C: 1 character. Control Digit: [0-9A-J].
158 *
159 * [ T ]: Kind of Organizations. Possible values:
160 *
161 * A. Corporations
162 * B. LLCs
163 * C. General partnerships
164 * D. Companies limited partnerships
165 * E. Communities of goods
166 * F. Cooperative Societies
167 * G. Associations
168 * H. Communities of homeowners in horizontal property regime
169 * J. Civil Societies
170 * K. Old format
171 * L. Old format
172 * M. Old format
173 * N. Nonresident entities
174 * P. Local authorities
175 * Q. Autonomous bodies, state or not, and the like, and congregations and religious institutions
176 * R. Congregations and religious institutions (since 2008 ORDER EHA/451/2008)
177 * S. Organs of State Administration and regions
178 * V. Agrarian Transformation
179 * W. Permanent establishments of non-resident in Spain
180 *
181 * [ C ]: Control Digit. It can be a number or a letter depending on T value:
182 * [ T ] --> [ C ]
183 * ------ ----------
184 * A Number
185 * B Number
186 * E Number
187 * H Number
188 * K Letter
189 * P Letter
190 * Q Letter
191 * S Letter
192 *
193 */
194$.validator.addMethod( "cifES", function( value, element ) {
195 "use strict";
196
197 if ( this.optional( element ) ) {
198 return true;
199 }
200
201 var cifRegEx = new RegExp( /^([ABCDEFGHJKLMNPQRSUVW])(\d{7})([0-9A-J])$/gi );
202 var letter = value.substring( 0, 1 ), // [ T ]
203 number = value.substring( 1, 8 ), // [ P ][ P ][ N ][ N ][ N ][ N ][ N ]
204 control = value.substring( 8, 9 ), // [ C ]
205 all_sum = 0,
206 even_sum = 0,
207 odd_sum = 0,
208 i, n,
209 control_digit,
210 control_letter;
211
212 function isOdd( n ) {
213 return n % 2 === 0;
214 }
215
216 // Quick format test
217 if ( value.length !== 9 || !cifRegEx.test( value ) ) {
218 return false;
219 }
220
221 for ( i = 0; i < number.length; i++ ) {
222 n = parseInt( number[ i ], 10 );
223
224 // Odd positions
225 if ( isOdd( i ) ) {
226
227 // Odd positions are multiplied first.
228 n *= 2;
229
230 // If the multiplication is bigger than 10 we need to adjust
231 odd_sum += n < 10 ? n : n - 9;
232
233 // Even positions
234 // Just sum them
235 } else {
236 even_sum += n;
237 }
238 }
239
240 all_sum = even_sum + odd_sum;
241 control_digit = ( 10 - ( all_sum ).toString().substr( -1 ) ).toString();
242 control_digit = parseInt( control_digit, 10 ) > 9 ? "0" : control_digit;
243 control_letter = "JABCDEFGHI".substr( control_digit, 1 ).toString();
244
245 // Control must be a digit
246 if ( letter.match( /[ABEH]/ ) ) {
247 return control === control_digit;
248
249 // Control must be a letter
250 } else if ( letter.match( /[KPQS]/ ) ) {
251 return control === control_letter;
252 }
253
254 // Can be either
255 return control === control_digit || control === control_letter;
256
257}, "Please specify a valid CIF number." );
258
259/*
260 * Brazillian CPF number (Cadastrado de Pessoas Físicas) is the equivalent of a Brazilian tax registration number.
261 * CPF numbers have 11 digits in total: 9 numbers followed by 2 check numbers that are being used for validation.
262 */
263$.validator.addMethod( "cpfBR", function( value ) {
264
265 // Removing special characters from value
266 value = value.replace( /([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g, "" );
267
268 // Checking value to have 11 digits only
269 if ( value.length !== 11 ) {
270 return false;
271 }
272
273 var sum = 0,
274 firstCN, secondCN, checkResult, i;
275
276 firstCN = parseInt( value.substring( 9, 10 ), 10 );
277 secondCN = parseInt( value.substring( 10, 11 ), 10 );
278
279 checkResult = function( sum, cn ) {
280 var result = ( sum * 10 ) % 11;
281 if ( ( result === 10 ) || ( result === 11 ) ) {
282 result = 0;
283 }
284 return ( result === cn );
285 };
286
287 // Checking for dump data
288 if ( value === "" ||
289 value === "00000000000" ||
290 value === "11111111111" ||
291 value === "22222222222" ||
292 value === "33333333333" ||
293 value === "44444444444" ||
294 value === "55555555555" ||
295 value === "66666666666" ||
296 value === "77777777777" ||
297 value === "88888888888" ||
298 value === "99999999999"
299 ) {
300 return false;
301 }
302
303 // Step 1 - using first Check Number:
304 for ( i = 1; i <= 9; i++ ) {
305 sum = sum + parseInt( value.substring( i - 1, i ), 10 ) * ( 11 - i );
306 }
307
308 // If first Check Number (CN) is valid, move to Step 2 - using second Check Number:
309 if ( checkResult( sum, firstCN ) ) {
310 sum = 0;
311 for ( i = 1; i <= 10; i++ ) {
312 sum = sum + parseInt( value.substring( i - 1, i ), 10 ) * ( 12 - i );
313 }
314 return checkResult( sum, secondCN );
315 }
316 return false;
317
318}, "Please specify a valid CPF number" );
319
320// https://jqueryvalidation.org/creditcard-method/
321// based on https://en.wikipedia.org/wiki/Luhn_algorithm
322$.validator.addMethod( "creditcard", function( value, element ) {
323 if ( this.optional( element ) ) {
324 return "dependency-mismatch";
325 }
326
327 // Accept only spaces, digits and dashes
328 if ( /[^0-9 \-]+/.test( value ) ) {
329 return false;
330 }
331
332 var nCheck = 0,
333 nDigit = 0,
334 bEven = false,
335 n, cDigit;
336
337 value = value.replace( /\D/g, "" );
338
339 // Basing min and max length on
340 // https://developer.ean.com/general_info/Valid_Credit_Card_Types
341 if ( value.length < 13 || value.length > 19 ) {
342 return false;
343 }
344
345 for ( n = value.length - 1; n >= 0; n-- ) {
346 cDigit = value.charAt( n );
347 nDigit = parseInt( cDigit, 10 );
348 if ( bEven ) {
349 if ( ( nDigit *= 2 ) > 9 ) {
350 nDigit -= 9;
351 }
352 }
353
354 nCheck += nDigit;
355 bEven = !bEven;
356 }
357
358 return ( nCheck % 10 ) === 0;
359}, "Please enter a valid credit card number." );
360
361/* NOTICE: Modified version of Castle.Components.Validator.CreditCardValidator
362 * Redistributed under the the Apache License 2.0 at http://www.apache.org/licenses/LICENSE-2.0
363 * Valid Types: mastercard, visa, amex, dinersclub, enroute, discover, jcb, unknown, all (overrides all other settings)
364 */
365$.validator.addMethod( "creditcardtypes", function( value, element, param ) {
366 if ( /[^0-9\-]+/.test( value ) ) {
367 return false;
368 }
369
370 value = value.replace( /\D/g, "" );
371
372 var validTypes = 0x0000;
373
374 if ( param.mastercard ) {
375 validTypes |= 0x0001;
376 }
377 if ( param.visa ) {
378 validTypes |= 0x0002;
379 }
380 if ( param.amex ) {
381 validTypes |= 0x0004;
382 }
383 if ( param.dinersclub ) {
384 validTypes |= 0x0008;
385 }
386 if ( param.enroute ) {
387 validTypes |= 0x0010;
388 }
389 if ( param.discover ) {
390 validTypes |= 0x0020;
391 }
392 if ( param.jcb ) {
393 validTypes |= 0x0040;
394 }
395 if ( param.unknown ) {
396 validTypes |= 0x0080;
397 }
398 if ( param.all ) {
399 validTypes = 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040 | 0x0080;
400 }
401 if ( validTypes & 0x0001 && /^(5[12345])/.test( value ) ) { // Mastercard
402 return value.length === 16;
403 }
404 if ( validTypes & 0x0002 && /^(4)/.test( value ) ) { // Visa
405 return value.length === 16;
406 }
407 if ( validTypes & 0x0004 && /^(3[47])/.test( value ) ) { // Amex
408 return value.length === 15;
409 }
410 if ( validTypes & 0x0008 && /^(3(0[012345]|[68]))/.test( value ) ) { // Dinersclub
411 return value.length === 14;
412 }
413 if ( validTypes & 0x0010 && /^(2(014|149))/.test( value ) ) { // Enroute
414 return value.length === 15;
415 }
416 if ( validTypes & 0x0020 && /^(6011)/.test( value ) ) { // Discover
417 return value.length === 16;
418 }
419 if ( validTypes & 0x0040 && /^(3)/.test( value ) ) { // Jcb
420 return value.length === 16;
421 }
422 if ( validTypes & 0x0040 && /^(2131|1800)/.test( value ) ) { // Jcb
423 return value.length === 15;
424 }
425 if ( validTypes & 0x0080 ) { // Unknown
426 return true;
427 }
428 return false;
429}, "Please enter a valid credit card number." );
430
431/**
432 * Validates currencies with any given symbols by @jameslouiz
433 * Symbols can be optional or required. Symbols required by default
434 *
435 * Usage examples:
436 * currency: ["£", false] - Use false for soft currency validation
437 * currency: ["$", false]
438 * currency: ["RM", false] - also works with text based symbols such as "RM" - Malaysia Ringgit etc
439 *
440 * <input class="currencyInput" name="currencyInput">
441 *
442 * Soft symbol checking
443 * currencyInput: {
444 * currency: ["$", false]
445 * }
446 *
447 * Strict symbol checking (default)
448 * currencyInput: {
449 * currency: "$"
450 * //OR
451 * currency: ["$", true]
452 * }
453 *
454 * Multiple Symbols
455 * currencyInput: {
456 * currency: "$,£,¢"
457 * }
458 */
459$.validator.addMethod( "currency", function( value, element, param ) {
460 var isParamString = typeof param === "string",
461 symbol = isParamString ? param : param[ 0 ],
462 soft = isParamString ? true : param[ 1 ],
463 regex;
464
465 symbol = symbol.replace( /,/g, "" );
466 symbol = soft ? symbol + "]" : symbol + "]?";
467 regex = "^[" + symbol + "([1-9]{1}[0-9]{0,2}(\\,[0-9]{3})*(\\.[0-9]{0,2})?|[1-9]{1}[0-9]{0,}(\\.[0-9]{0,2})?|0(\\.[0-9]{0,2})?|(\\.[0-9]{1,2})?)$";
468 regex = new RegExp( regex );
469 return this.optional( element ) || regex.test( value );
470
471}, "Please specify a valid currency" );
472
473$.validator.addMethod( "dateFA", function( value, element ) {
474 return this.optional( element ) || /^[1-4]\d{3}\/((0?[1-6]\/((3[0-1])|([1-2][0-9])|(0?[1-9])))|((1[0-2]|(0?[7-9]))\/(30|([1-2][0-9])|(0?[1-9]))))$/.test( value );
475}, $.validator.messages.date );
476
477/**
478 * Return true, if the value is a valid date, also making this formal check dd/mm/yyyy.
479 *
480 * @example $.validator.methods.date("01/01/1900")
481 * @result true
482 *
483 * @example $.validator.methods.date("01/13/1990")
484 * @result false
485 *
486 * @example $.validator.methods.date("01.01.1900")
487 * @result false
488 *
489 * @example <input name="pippo" class="{dateITA:true}" />
490 * @desc Declares an optional input element whose value must be a valid date.
491 *
492 * @name $.validator.methods.dateITA
493 * @type Boolean
494 * @cat Plugins/Validate/Methods
495 */
496$.validator.addMethod( "dateITA", function( value, element ) {
497 var check = false,
498 re = /^\d{1,2}\/\d{1,2}\/\d{4}$/,
499 adata, gg, mm, aaaa, xdata;
500 if ( re.test( value ) ) {
501 adata = value.split( "/" );
502 gg = parseInt( adata[ 0 ], 10 );
503 mm = parseInt( adata[ 1 ], 10 );
504 aaaa = parseInt( adata[ 2 ], 10 );
505 xdata = new Date( Date.UTC( aaaa, mm - 1, gg, 12, 0, 0, 0 ) );
506 if ( ( xdata.getUTCFullYear() === aaaa ) && ( xdata.getUTCMonth() === mm - 1 ) && ( xdata.getUTCDate() === gg ) ) {
507 check = true;
508 } else {
509 check = false;
510 }
511 } else {
512 check = false;
513 }
514 return this.optional( element ) || check;
515}, $.validator.messages.date );
516
517$.validator.addMethod( "dateNL", function( value, element ) {
518 return this.optional( element ) || /^(0?[1-9]|[12]\d|3[01])[\.\/\-](0?[1-9]|1[012])[\.\/\-]([12]\d)?(\d\d)$/.test( value );
519}, $.validator.messages.date );
520
521// Older "accept" file extension method. Old docs: http://docs.jquery.com/Plugins/Validation/Methods/accept
522$.validator.addMethod( "extension", function( value, element, param ) {
523 param = typeof param === "string" ? param.replace( /,/g, "|" ) : "png|jpe?g|gif";
524 return this.optional( element ) || value.match( new RegExp( "\\.(" + param + ")$", "i" ) );
525}, $.validator.format( "Please enter a value with a valid extension." ) );
526
527/**
528 * Dutch giro account numbers (not bank numbers) have max 7 digits
529 */
530$.validator.addMethod( "giroaccountNL", function( value, element ) {
531 return this.optional( element ) || /^[0-9]{1,7}$/.test( value );
532}, "Please specify a valid giro account number" );
533
534/**
535 * IBAN is the international bank account number.
536 * It has a country - specific format, that is checked here too
537 *
538 * Validation is case-insensitive. Please make sure to normalize input yourself.
539 */
540$.validator.addMethod( "iban", function( value, element ) {
541
542 // Some quick simple tests to prevent needless work
543 if ( this.optional( element ) ) {
544 return true;
545 }
546
547 // Remove spaces and to upper case
548 var iban = value.replace( / /g, "" ).toUpperCase(),
549 ibancheckdigits = "",
550 leadingZeroes = true,
551 cRest = "",
552 cOperator = "",
553 countrycode, ibancheck, charAt, cChar, bbanpattern, bbancountrypatterns, ibanregexp, i, p;
554
555 // Check for IBAN code length.
556 // It contains:
557 // country code ISO 3166-1 - two letters,
558 // two check digits,
559 // Basic Bank Account Number (BBAN) - up to 30 chars
560 var minimalIBANlength = 5;
561 if ( iban.length < minimalIBANlength ) {
562 return false;
563 }
564
565 // Check the country code and find the country specific format
566 countrycode = iban.substring( 0, 2 );
567 bbancountrypatterns = {
568 "AL": "\\d{8}[\\dA-Z]{16}",
569 "AD": "\\d{8}[\\dA-Z]{12}",
570 "AT": "\\d{16}",
571 "AZ": "[\\dA-Z]{4}\\d{20}",
572 "BE": "\\d{12}",
573 "BH": "[A-Z]{4}[\\dA-Z]{14}",
574 "BA": "\\d{16}",
575 "BR": "\\d{23}[A-Z][\\dA-Z]",
576 "BG": "[A-Z]{4}\\d{6}[\\dA-Z]{8}",
577 "CR": "\\d{17}",
578 "HR": "\\d{17}",
579 "CY": "\\d{8}[\\dA-Z]{16}",
580 "CZ": "\\d{20}",
581 "DK": "\\d{14}",
582 "DO": "[A-Z]{4}\\d{20}",
583 "EE": "\\d{16}",
584 "FO": "\\d{14}",
585 "FI": "\\d{14}",
586 "FR": "\\d{10}[\\dA-Z]{11}\\d{2}",
587 "GE": "[\\dA-Z]{2}\\d{16}",
588 "DE": "\\d{18}",
589 "GI": "[A-Z]{4}[\\dA-Z]{15}",
590 "GR": "\\d{7}[\\dA-Z]{16}",
591 "GL": "\\d{14}",
592 "GT": "[\\dA-Z]{4}[\\dA-Z]{20}",
593 "HU": "\\d{24}",
594 "IS": "\\d{22}",
595 "IE": "[\\dA-Z]{4}\\d{14}",
596 "IL": "\\d{19}",
597 "IT": "[A-Z]\\d{10}[\\dA-Z]{12}",
598 "KZ": "\\d{3}[\\dA-Z]{13}",
599 "KW": "[A-Z]{4}[\\dA-Z]{22}",
600 "LV": "[A-Z]{4}[\\dA-Z]{13}",
601 "LB": "\\d{4}[\\dA-Z]{20}",
602 "LI": "\\d{5}[\\dA-Z]{12}",
603 "LT": "\\d{16}",
604 "LU": "\\d{3}[\\dA-Z]{13}",
605 "MK": "\\d{3}[\\dA-Z]{10}\\d{2}",
606 "MT": "[A-Z]{4}\\d{5}[\\dA-Z]{18}",
607 "MR": "\\d{23}",
608 "MU": "[A-Z]{4}\\d{19}[A-Z]{3}",
609 "MC": "\\d{10}[\\dA-Z]{11}\\d{2}",
610 "MD": "[\\dA-Z]{2}\\d{18}",
611 "ME": "\\d{18}",
612 "NL": "[A-Z]{4}\\d{10}",
613 "NO": "\\d{11}",
614 "PK": "[\\dA-Z]{4}\\d{16}",
615 "PS": "[\\dA-Z]{4}\\d{21}",
616 "PL": "\\d{24}",
617 "PT": "\\d{21}",
618 "RO": "[A-Z]{4}[\\dA-Z]{16}",
619 "SM": "[A-Z]\\d{10}[\\dA-Z]{12}",
620 "SA": "\\d{2}[\\dA-Z]{18}",
621 "RS": "\\d{18}",
622 "SK": "\\d{20}",
623 "SI": "\\d{15}",
624 "ES": "\\d{20}",
625 "SE": "\\d{20}",
626 "CH": "\\d{5}[\\dA-Z]{12}",
627 "TN": "\\d{20}",
628 "TR": "\\d{5}[\\dA-Z]{17}",
629 "AE": "\\d{3}\\d{16}",
630 "GB": "[A-Z]{4}\\d{14}",
631 "VG": "[\\dA-Z]{4}\\d{16}"
632 };
633
634 bbanpattern = bbancountrypatterns[ countrycode ];
635
636 // As new countries will start using IBAN in the
637 // future, we only check if the countrycode is known.
638 // This prevents false negatives, while almost all
639 // false positives introduced by this, will be caught
640 // by the checksum validation below anyway.
641 // Strict checking should return FALSE for unknown
642 // countries.
643 if ( typeof bbanpattern !== "undefined" ) {
644 ibanregexp = new RegExp( "^[A-Z]{2}\\d{2}" + bbanpattern + "$", "" );
645 if ( !( ibanregexp.test( iban ) ) ) {
646 return false; // Invalid country specific format
647 }
648 }
649
650 // Now check the checksum, first convert to digits
651 ibancheck = iban.substring( 4, iban.length ) + iban.substring( 0, 4 );
652 for ( i = 0; i < ibancheck.length; i++ ) {
653 charAt = ibancheck.charAt( i );
654 if ( charAt !== "0" ) {
655 leadingZeroes = false;
656 }
657 if ( !leadingZeroes ) {
658 ibancheckdigits += "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf( charAt );
659 }
660 }
661
662 // Calculate the result of: ibancheckdigits % 97
663 for ( p = 0; p < ibancheckdigits.length; p++ ) {
664 cChar = ibancheckdigits.charAt( p );
665 cOperator = "" + cRest + "" + cChar;
666 cRest = cOperator % 97;
667 }
668 return cRest === 1;
669}, "Please specify a valid IBAN" );
670
671$.validator.addMethod( "integer", function( value, element ) {
672 return this.optional( element ) || /^-?\d+$/.test( value );
673}, "A positive or negative non-decimal number please" );
674
675$.validator.addMethod( "ipv4", function( value, element ) {
676 return this.optional( element ) || /^(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)$/i.test( value );
677}, "Please enter a valid IP v4 address." );
678
679$.validator.addMethod( "ipv6", function( value, element ) {
680 return this.optional( element ) || /^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i.test( value );
681}, "Please enter a valid IP v6 address." );
682
683$.validator.addMethod( "lettersonly", function( value, element ) {
684 return this.optional( element ) || /^[a-z]+$/i.test( value );
685}, "Letters only please" );
686
687$.validator.addMethod( "letterswithbasicpunc", function( value, element ) {
688 return this.optional( element ) || /^[a-z\-.,()'"\s]+$/i.test( value );
689}, "Letters or punctuation only please" );
690
691$.validator.addMethod( "mobileNL", function( value, element ) {
692 return this.optional( element ) || /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)6((\s|\s?\-\s?)?[0-9]){8}$/.test( value );
693}, "Please specify a valid mobile number" );
694
695/* For UK phone functions, do the following server side processing:
696 * Compare original input with this RegEx pattern:
697 * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$
698 * Extract $1 and set $prefix to '+44<space>' if $1 is '44', otherwise set $prefix to '0'
699 * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.
700 * A number of very detailed GB telephone number RegEx patterns can also be found at:
701 * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers
702 */
703$.validator.addMethod( "mobileUK", function( phone_number, element ) {
704 phone_number = phone_number.replace( /\(|\)|\s+|-/g, "" );
705 return this.optional( element ) || phone_number.length > 9 &&
706 phone_number.match( /^(?:(?:(?:00\s?|\+)44\s?|0)7(?:[1345789]\d{2}|624)\s?\d{3}\s?\d{3})$/ );
707}, "Please specify a valid mobile number" );
708
709$.validator.addMethod( "netmask", function( value, element ) {
710 return this.optional( element ) || /^(254|252|248|240|224|192|128)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(254|252|248|240|224|192|128|0)/i.test( value );
711}, "Please enter a valid netmask." );
712
713/*
714 * The NIE (Número de Identificación de Extranjero) is a Spanish tax identification number assigned by the Spanish
715 * authorities to any foreigner.
716 *
717 * The NIE is the equivalent of a Spaniards Número de Identificación Fiscal (NIF) which serves as a fiscal
718 * identification number. The CIF number (Certificado de Identificación Fiscal) is equivalent to the NIF, but applies to
719 * companies rather than individuals. The NIE consists of an 'X' or 'Y' followed by 7 or 8 digits then another letter.
720 */
721$.validator.addMethod( "nieES", function( value, element ) {
722 "use strict";
723
724 if ( this.optional( element ) ) {
725 return true;
726 }
727
728 var nieRegEx = new RegExp( /^[MXYZ]{1}[0-9]{7,8}[TRWAGMYFPDXBNJZSQVHLCKET]{1}$/gi );
729 var validChars = "TRWAGMYFPDXBNJZSQVHLCKET",
730 letter = value.substr( value.length - 1 ).toUpperCase(),
731 number;
732
733 value = value.toString().toUpperCase();
734
735 // Quick format test
736 if ( value.length > 10 || value.length < 9 || !nieRegEx.test( value ) ) {
737 return false;
738 }
739
740 // X means same number
741 // Y means number + 10000000
742 // Z means number + 20000000
743 value = value.replace( /^[X]/, "0" )
744 .replace( /^[Y]/, "1" )
745 .replace( /^[Z]/, "2" );
746
747 number = value.length === 9 ? value.substr( 0, 8 ) : value.substr( 0, 9 );
748
749 return validChars.charAt( parseInt( number, 10 ) % 23 ) === letter;
750
751}, "Please specify a valid NIE number." );
752
753/*
754 * The Número de Identificación Fiscal ( NIF ) is the way tax identification used in Spain for individuals
755 */
756$.validator.addMethod( "nifES", function( value, element ) {
757 "use strict";
758
759 if ( this.optional( element ) ) {
760 return true;
761 }
762
763 value = value.toUpperCase();
764
765 // Basic format test
766 if ( !value.match( "((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)" ) ) {
767 return false;
768 }
769
770 // Test NIF
771 if ( /^[0-9]{8}[A-Z]{1}$/.test( value ) ) {
772 return ( "TRWAGMYFPDXBNJZSQVHLCKE".charAt( value.substring( 8, 0 ) % 23 ) === value.charAt( 8 ) );
773 }
774
775 // Test specials NIF (starts with K, L or M)
776 if ( /^[KLM]{1}/.test( value ) ) {
777 return ( value[ 8 ] === "TRWAGMYFPDXBNJZSQVHLCKE".charAt( value.substring( 8, 1 ) % 23 ) );
778 }
779
780 return false;
781
782}, "Please specify a valid NIF number." );
783
784/*
785 * Numer identyfikacji podatkowej ( NIP ) is the way tax identification used in Poland for companies
786 */
787$.validator.addMethod( "nipPL", function( value ) {
788 "use strict";
789
790 value = value.replace( /[^0-9]/g, "" );
791
792 if ( value.length !== 10 ) {
793 return false;
794 }
795
796 var arrSteps = [ 6, 5, 7, 2, 3, 4, 5, 6, 7 ];
797 var intSum = 0;
798 for ( var i = 0; i < 9; i++ ) {
799 intSum += arrSteps[ i ] * value[ i ];
800 }
801 var int2 = intSum % 11;
802 var intControlNr = ( int2 === 10 ) ? 0 : int2;
803
804 return ( intControlNr === parseInt( value[ 9 ], 10 ) );
805}, "Please specify a valid NIP number." );
806
807$.validator.addMethod( "notEqualTo", function( value, element, param ) {
808 return this.optional( element ) || !$.validator.methods.equalTo.call( this, value, element, param );
809}, "Please enter a different value, values must not be the same." );
810
811$.validator.addMethod( "nowhitespace", function( value, element ) {
812 return this.optional( element ) || /^\S+$/i.test( value );
813}, "No white space please" );
814
815/**
816* Return true if the field value matches the given format RegExp
817*
818* @example $.validator.methods.pattern("AR1004",element,/^AR\d{4}$/)
819* @result true
820*
821* @example $.validator.methods.pattern("BR1004",element,/^AR\d{4}$/)
822* @result false
823*
824* @name $.validator.methods.pattern
825* @type Boolean
826* @cat Plugins/Validate/Methods
827*/
828$.validator.addMethod( "pattern", function( value, element, param ) {
829 if ( this.optional( element ) ) {
830 return true;
831 }
832 if ( typeof param === "string" ) {
833 param = new RegExp( "^(?:" + param + ")$" );
834 }
835 return param.test( value );
836}, "Invalid format." );
837
838/**
839 * Dutch phone numbers have 10 digits (or 11 and start with +31).
840 */
841$.validator.addMethod( "phoneNL", function( value, element ) {
842 return this.optional( element ) || /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)[1-9]((\s|\s?\-\s?)?[0-9]){8}$/.test( value );
843}, "Please specify a valid phone number." );
844
845/* For UK phone functions, do the following server side processing:
846 * Compare original input with this RegEx pattern:
847 * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$
848 * Extract $1 and set $prefix to '+44<space>' if $1 is '44', otherwise set $prefix to '0'
849 * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.
850 * A number of very detailed GB telephone number RegEx patterns can also be found at:
851 * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers
852 */
853
854// Matches UK landline + mobile, accepting only 01-3 for landline or 07 for mobile to exclude many premium numbers
855$.validator.addMethod( "phonesUK", function( phone_number, element ) {
856 phone_number = phone_number.replace( /\(|\)|\s+|-/g, "" );
857 return this.optional( element ) || phone_number.length > 9 &&
858 phone_number.match( /^(?:(?:(?:00\s?|\+)44\s?|0)(?:1\d{8,9}|[23]\d{9}|7(?:[1345789]\d{8}|624\d{6})))$/ );
859}, "Please specify a valid uk phone number" );
860
861/* For UK phone functions, do the following server side processing:
862 * Compare original input with this RegEx pattern:
863 * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$
864 * Extract $1 and set $prefix to '+44<space>' if $1 is '44', otherwise set $prefix to '0'
865 * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.
866 * A number of very detailed GB telephone number RegEx patterns can also be found at:
867 * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers
868 */
869$.validator.addMethod( "phoneUK", function( phone_number, element ) {
870 phone_number = phone_number.replace( /\(|\)|\s+|-/g, "" );
871 return this.optional( element ) || phone_number.length > 9 &&
872 phone_number.match( /^(?:(?:(?:00\s?|\+)44\s?)|(?:\(?0))(?:\d{2}\)?\s?\d{4}\s?\d{4}|\d{3}\)?\s?\d{3}\s?\d{3,4}|\d{4}\)?\s?(?:\d{5}|\d{3}\s?\d{3})|\d{5}\)?\s?\d{4,5})$/ );
873}, "Please specify a valid phone number" );
874
875/**
876 * Matches US phone number format
877 *
878 * where the area code may not start with 1 and the prefix may not start with 1
879 * allows '-' or ' ' as a separator and allows parens around area code
880 * some people may want to put a '1' in front of their number
881 *
882 * 1(212)-999-2345 or
883 * 212 999 2344 or
884 * 212-999-0983
885 *
886 * but not
887 * 111-123-5434
888 * and not
889 * 212 123 4567
890 */
891$.validator.addMethod( "phoneUS", function( phone_number, element ) {
892 phone_number = phone_number.replace( /\s+/g, "" );
893 return this.optional( element ) || phone_number.length > 9 &&
894 phone_number.match( /^(\+?1-?)?(\([2-9]([02-9]\d|1[02-9])\)|[2-9]([02-9]\d|1[02-9]))-?[2-9]([02-9]\d|1[02-9])-?\d{4}$/ );
895}, "Please specify a valid phone number" );
896
897/*
898* Valida CEPs do brasileiros:
899*
900* Formatos aceitos:
901* 99999-999
902* 99.999-999
903* 99999999
904*/
905$.validator.addMethod( "postalcodeBR", function( cep_value, element ) {
906 return this.optional( element ) || /^\d{2}.\d{3}-\d{3}?$|^\d{5}-?\d{3}?$/.test( cep_value );
907}, "Informe um CEP válido." );
908
909/**
910 * Matches a valid Canadian Postal Code
911 *
912 * @example jQuery.validator.methods.postalCodeCA( "H0H 0H0", element )
913 * @result true
914 *
915 * @example jQuery.validator.methods.postalCodeCA( "H0H0H0", element )
916 * @result false
917 *
918 * @name jQuery.validator.methods.postalCodeCA
919 * @type Boolean
920 * @cat Plugins/Validate/Methods
921 */
922$.validator.addMethod( "postalCodeCA", function( value, element ) {
923 return this.optional( element ) || /^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ] *\d[ABCEGHJKLMNPRSTVWXYZ]\d$/i.test( value );
924}, "Please specify a valid postal code" );
925
926/* Matches Italian postcode (CAP) */
927$.validator.addMethod( "postalcodeIT", function( value, element ) {
928 return this.optional( element ) || /^\d{5}$/.test( value );
929}, "Please specify a valid postal code" );
930
931$.validator.addMethod( "postalcodeNL", function( value, element ) {
932 return this.optional( element ) || /^[1-9][0-9]{3}\s?[a-zA-Z]{2}$/.test( value );
933}, "Please specify a valid postal code" );
934
935// Matches UK postcode. Does not match to UK Channel Islands that have their own postcodes (non standard UK)
936$.validator.addMethod( "postcodeUK", function( value, element ) {
937 return this.optional( element ) || /^((([A-PR-UWYZ][0-9])|([A-PR-UWYZ][0-9][0-9])|([A-PR-UWYZ][A-HK-Y][0-9])|([A-PR-UWYZ][A-HK-Y][0-9][0-9])|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))\s?([0-9][ABD-HJLNP-UW-Z]{2})|(GIR)\s?(0AA))$/i.test( value );
938}, "Please specify a valid UK postcode" );
939
940/*
941 * Lets you say "at least X inputs that match selector Y must be filled."
942 *
943 * The end result is that neither of these inputs:
944 *
945 * <input class="productinfo" name="partnumber">
946 * <input class="productinfo" name="description">
947 *
948 * ...will validate unless at least one of them is filled.
949 *
950 * partnumber: {require_from_group: [1,".productinfo"]},
951 * description: {require_from_group: [1,".productinfo"]}
952 *
953 * options[0]: number of fields that must be filled in the group
954 * options[1]: CSS selector that defines the group of conditionally required fields
955 */
956$.validator.addMethod( "require_from_group", function( value, element, options ) {
957 var $fields = $( options[ 1 ], element.form ),
958 $fieldsFirst = $fields.eq( 0 ),
959 validator = $fieldsFirst.data( "valid_req_grp" ) ? $fieldsFirst.data( "valid_req_grp" ) : $.extend( {}, this ),
960 isValid = $fields.filter( function() {
961 return validator.elementValue( this );
962 } ).length >= options[ 0 ];
963
964 // Store the cloned validator for future validation
965 $fieldsFirst.data( "valid_req_grp", validator );
966
967 // If element isn't being validated, run each require_from_group field's validation rules
968 if ( !$( element ).data( "being_validated" ) ) {
969 $fields.data( "being_validated", true );
970 $fields.each( function() {
971 validator.element( this );
972 } );
973 $fields.data( "being_validated", false );
974 }
975 return isValid;
976}, $.validator.format( "Please fill at least {0} of these fields." ) );
977
978/*
979 * Lets you say "either at least X inputs that match selector Y must be filled,
980 * OR they must all be skipped (left blank)."
981 *
982 * The end result, is that none of these inputs:
983 *
984 * <input class="productinfo" name="partnumber">
985 * <input class="productinfo" name="description">
986 * <input class="productinfo" name="color">
987 *
988 * ...will validate unless either at least two of them are filled,
989 * OR none of them are.
990 *
991 * partnumber: {skip_or_fill_minimum: [2,".productinfo"]},
992 * description: {skip_or_fill_minimum: [2,".productinfo"]},
993 * color: {skip_or_fill_minimum: [2,".productinfo"]}
994 *
995 * options[0]: number of fields that must be filled in the group
996 * options[1]: CSS selector that defines the group of conditionally required fields
997 *
998 */
999$.validator.addMethod( "skip_or_fill_minimum", function( value, element, options ) {
1000 var $fields = $( options[ 1 ], element.form ),
1001 $fieldsFirst = $fields.eq( 0 ),
1002 validator = $fieldsFirst.data( "valid_skip" ) ? $fieldsFirst.data( "valid_skip" ) : $.extend( {}, this ),
1003 numberFilled = $fields.filter( function() {
1004 return validator.elementValue( this );
1005 } ).length,
1006 isValid = numberFilled === 0 || numberFilled >= options[ 0 ];
1007
1008 // Store the cloned validator for future validation
1009 $fieldsFirst.data( "valid_skip", validator );
1010
1011 // If element isn't being validated, run each skip_or_fill_minimum field's validation rules
1012 if ( !$( element ).data( "being_validated" ) ) {
1013 $fields.data( "being_validated", true );
1014 $fields.each( function() {
1015 validator.element( this );
1016 } );
1017 $fields.data( "being_validated", false );
1018 }
1019 return isValid;
1020}, $.validator.format( "Please either skip these fields or fill at least {0} of them." ) );
1021
1022/* Validates US States and/or Territories by @jdforsythe
1023 * Can be case insensitive or require capitalization - default is case insensitive
1024 * Can include US Territories or not - default does not
1025 * Can include US Military postal abbreviations (AA, AE, AP) - default does not
1026 *
1027 * Note: "States" always includes DC (District of Colombia)
1028 *
1029 * Usage examples:
1030 *
1031 * This is the default - case insensitive, no territories, no military zones
1032 * stateInput: {
1033 * caseSensitive: false,
1034 * includeTerritories: false,
1035 * includeMilitary: false
1036 * }
1037 *
1038 * Only allow capital letters, no territories, no military zones
1039 * stateInput: {
1040 * caseSensitive: false
1041 * }
1042 *
1043 * Case insensitive, include territories but not military zones
1044 * stateInput: {
1045 * includeTerritories: true
1046 * }
1047 *
1048 * Only allow capital letters, include territories and military zones
1049 * stateInput: {
1050 * caseSensitive: true,
1051 * includeTerritories: true,
1052 * includeMilitary: true
1053 * }
1054 *
1055 */
1056$.validator.addMethod( "stateUS", function( value, element, options ) {
1057 var isDefault = typeof options === "undefined",
1058 caseSensitive = ( isDefault || typeof options.caseSensitive === "undefined" ) ? false : options.caseSensitive,
1059 includeTerritories = ( isDefault || typeof options.includeTerritories === "undefined" ) ? false : options.includeTerritories,
1060 includeMilitary = ( isDefault || typeof options.includeMilitary === "undefined" ) ? false : options.includeMilitary,
1061 regex;
1062
1063 if ( !includeTerritories && !includeMilitary ) {
1064 regex = "^(A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$";
1065 } else if ( includeTerritories && includeMilitary ) {
1066 regex = "^(A[AEKLPRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$";
1067 } else if ( includeTerritories ) {
1068 regex = "^(A[KLRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$";
1069 } else {
1070 regex = "^(A[AEKLPRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$";
1071 }
1072
1073 regex = caseSensitive ? new RegExp( regex ) : new RegExp( regex, "i" );
1074 return this.optional( element ) || regex.test( value );
1075}, "Please specify a valid state" );
1076
1077// TODO check if value starts with <, otherwise don't try stripping anything
1078$.validator.addMethod( "strippedminlength", function( value, element, param ) {
1079 return $( value ).text().length >= param;
1080}, $.validator.format( "Please enter at least {0} characters" ) );
1081
1082$.validator.addMethod( "time", function( value, element ) {
1083 return this.optional( element ) || /^([01]\d|2[0-3]|[0-9])(:[0-5]\d){1,2}$/.test( value );
1084}, "Please enter a valid time, between 00:00 and 23:59" );
1085
1086$.validator.addMethod( "time12h", function( value, element ) {
1087 return this.optional( element ) || /^((0?[1-9]|1[012])(:[0-5]\d){1,2}(\ ?[AP]M))$/i.test( value );
1088}, "Please enter a valid time in 12-hour am/pm format" );
1089
1090// Same as url, but TLD is optional
1091$.validator.addMethod( "url2", function( value, element ) {
1092 return this.optional( element ) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test( value );
1093}, $.validator.messages.url );
1094
1095/**
1096 * Return true, if the value is a valid vehicle identification number (VIN).
1097 *
1098 * Works with all kind of text inputs.
1099 *
1100 * @example <input type="text" size="20" name="VehicleID" class="{required:true,vinUS:true}" />
1101 * @desc Declares a required input element whose value must be a valid vehicle identification number.
1102 *
1103 * @name $.validator.methods.vinUS
1104 * @type Boolean
1105 * @cat Plugins/Validate/Methods
1106 */
1107$.validator.addMethod( "vinUS", function( v ) {
1108 if ( v.length !== 17 ) {
1109 return false;
1110 }
1111
1112 var LL = [ "A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "P", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" ],
1113 VL = [ 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 7, 9, 2, 3, 4, 5, 6, 7, 8, 9 ],
1114 FL = [ 8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2 ],
1115 rs = 0,
1116 i, n, d, f, cd, cdv;
1117
1118 for ( i = 0; i < 17; i++ ) {
1119 f = FL[ i ];
1120 d = v.slice( i, i + 1 );
1121 if ( i === 8 ) {
1122 cdv = d;
1123 }
1124 if ( !isNaN( d ) ) {
1125 d *= f;
1126 } else {
1127 for ( n = 0; n < LL.length; n++ ) {
1128 if ( d.toUpperCase() === LL[ n ] ) {
1129 d = VL[ n ];
1130 d *= f;
1131 if ( isNaN( cdv ) && n === 8 ) {
1132 cdv = LL[ n ];
1133 }
1134 break;
1135 }
1136 }
1137 }
1138 rs += d;
1139 }
1140 cd = rs % 11;
1141 if ( cd === 10 ) {
1142 cd = "X";
1143 }
1144 if ( cd === cdv ) {
1145 return true;
1146 }
1147 return false;
1148}, "The specified vehicle identification number (VIN) is invalid." );
1149
1150$.validator.addMethod( "zipcodeUS", function( value, element ) {
1151 return this.optional( element ) || /^\d{5}(-\d{4})?$/.test( value );
1152}, "The specified US ZIP Code is invalid" );
1153
1154$.validator.addMethod( "ziprange", function( value, element ) {
1155 return this.optional( element ) || /^90[2-5]\d\{2\}-\d{4}$/.test( value );
1156}, "Your ZIP-code must be in the range 902xx-xxxx to 905xx-xxxx" );
1157return $;
1158})); \ No newline at end of file
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/jquery-validation/dist/jquery.validate.js b/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/jquery-validation/dist/jquery.validate.js
new file mode 100644
index 00000000..12674b08
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/jquery-validation/dist/jquery.validate.js
@@ -0,0 +1,1601 @@
1/*!
2 * jQuery Validation Plugin v1.17.0
3 *
4 * https://jqueryvalidation.org/
5 *
6 * Copyright (c) 2017 Jörn Zaefferer
7 * Released under the MIT license
8 */
9(function( factory ) {
10 if ( typeof define === "function" && define.amd ) {
11 define( ["jquery"], factory );
12 } else if (typeof module === "object" && module.exports) {
13 module.exports = factory( require( "jquery" ) );
14 } else {
15 factory( jQuery );
16 }
17}(function( $ ) {
18
19$.extend( $.fn, {
20
21 // https://jqueryvalidation.org/validate/
22 validate: function( options ) {
23
24 // If nothing is selected, return nothing; can't chain anyway
25 if ( !this.length ) {
26 if ( options && options.debug && window.console ) {
27 console.warn( "Nothing selected, can't validate, returning nothing." );
28 }
29 return;
30 }
31
32 // Check if a validator for this form was already created
33 var validator = $.data( this[ 0 ], "validator" );
34 if ( validator ) {
35 return validator;
36 }
37
38 // Add novalidate tag if HTML5.
39 this.attr( "novalidate", "novalidate" );
40
41 validator = new $.validator( options, this[ 0 ] );
42 $.data( this[ 0 ], "validator", validator );
43
44 if ( validator.settings.onsubmit ) {
45
46 this.on( "click.validate", ":submit", function( event ) {
47
48 // Track the used submit button to properly handle scripted
49 // submits later.
50 validator.submitButton = event.currentTarget;
51
52 // Allow suppressing validation by adding a cancel class to the submit button
53 if ( $( this ).hasClass( "cancel" ) ) {
54 validator.cancelSubmit = true;
55 }
56
57 // Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button
58 if ( $( this ).attr( "formnovalidate" ) !== undefined ) {
59 validator.cancelSubmit = true;
60 }
61 } );
62
63 // Validate the form on submit
64 this.on( "submit.validate", function( event ) {
65 if ( validator.settings.debug ) {
66
67 // Prevent form submit to be able to see console output
68 event.preventDefault();
69 }
70 function handle() {
71 var hidden, result;
72
73 // Insert a hidden input as a replacement for the missing submit button
74 // The hidden input is inserted in two cases:
75 // - A user defined a `submitHandler`
76 // - There was a pending request due to `remote` method and `stopRequest()`
77 // was called to submit the form in case it's valid
78 if ( validator.submitButton && ( validator.settings.submitHandler || validator.formSubmitted ) ) {
79 hidden = $( "<input type='hidden'/>" )
80 .attr( "name", validator.submitButton.name )
81 .val( $( validator.submitButton ).val() )
82 .appendTo( validator.currentForm );
83 }
84
85 if ( validator.settings.submitHandler ) {
86 result = validator.settings.submitHandler.call( validator, validator.currentForm, event );
87 if ( hidden ) {
88
89 // And clean up afterwards; thanks to no-block-scope, hidden can be referenced
90 hidden.remove();
91 }
92 if ( result !== undefined ) {
93 return result;
94 }
95 return false;
96 }
97 return true;
98 }
99
100 // Prevent submit for invalid forms or custom submit handlers
101 if ( validator.cancelSubmit ) {
102 validator.cancelSubmit = false;
103 return handle();
104 }
105 if ( validator.form() ) {
106 if ( validator.pendingRequest ) {
107 validator.formSubmitted = true;
108 return false;
109 }
110 return handle();
111 } else {
112 validator.focusInvalid();
113 return false;
114 }
115 } );
116 }
117
118 return validator;
119 },
120
121 // https://jqueryvalidation.org/valid/
122 valid: function() {
123 var valid, validator, errorList;
124
125 if ( $( this[ 0 ] ).is( "form" ) ) {
126 valid = this.validate().form();
127 } else {
128 errorList = [];
129 valid = true;
130 validator = $( this[ 0 ].form ).validate();
131 this.each( function() {
132 valid = validator.element( this ) && valid;
133 if ( !valid ) {
134 errorList = errorList.concat( validator.errorList );
135 }
136 } );
137 validator.errorList = errorList;
138 }
139 return valid;
140 },
141
142 // https://jqueryvalidation.org/rules/
143 rules: function( command, argument ) {
144 var element = this[ 0 ],
145 settings, staticRules, existingRules, data, param, filtered;
146
147 // If nothing is selected, return empty object; can't chain anyway
148 if ( element == null ) {
149 return;
150 }
151
152 if ( !element.form && element.hasAttribute( "contenteditable" ) ) {
153 element.form = this.closest( "form" )[ 0 ];
154 element.name = this.attr( "name" );
155 }
156
157 if ( element.form == null ) {
158 return;
159 }
160
161 if ( command ) {
162 settings = $.data( element.form, "validator" ).settings;
163 staticRules = settings.rules;
164 existingRules = $.validator.staticRules( element );
165 switch ( command ) {
166 case "add":
167 $.extend( existingRules, $.validator.normalizeRule( argument ) );
168
169 // Remove messages from rules, but allow them to be set separately
170 delete existingRules.messages;
171 staticRules[ element.name ] = existingRules;
172 if ( argument.messages ) {
173 settings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );
174 }
175 break;
176 case "remove":
177 if ( !argument ) {
178 delete staticRules[ element.name ];
179 return existingRules;
180 }
181 filtered = {};
182 $.each( argument.split( /\s/ ), function( index, method ) {
183 filtered[ method ] = existingRules[ method ];
184 delete existingRules[ method ];
185 } );
186 return filtered;
187 }
188 }
189
190 data = $.validator.normalizeRules(
191 $.extend(
192 {},
193 $.validator.classRules( element ),
194 $.validator.attributeRules( element ),
195 $.validator.dataRules( element ),
196 $.validator.staticRules( element )
197 ), element );
198
199 // Make sure required is at front
200 if ( data.required ) {
201 param = data.required;
202 delete data.required;
203 data = $.extend( { required: param }, data );
204 }
205
206 // Make sure remote is at back
207 if ( data.remote ) {
208 param = data.remote;
209 delete data.remote;
210 data = $.extend( data, { remote: param } );
211 }
212
213 return data;
214 }
215} );
216
217// Custom selectors
218$.extend( $.expr.pseudos || $.expr[ ":" ], { // '|| $.expr[ ":" ]' here enables backwards compatibility to jQuery 1.7. Can be removed when dropping jQ 1.7.x support
219
220 // https://jqueryvalidation.org/blank-selector/
221 blank: function( a ) {
222 return !$.trim( "" + $( a ).val() );
223 },
224
225 // https://jqueryvalidation.org/filled-selector/
226 filled: function( a ) {
227 var val = $( a ).val();
228 return val !== null && !!$.trim( "" + val );
229 },
230
231 // https://jqueryvalidation.org/unchecked-selector/
232 unchecked: function( a ) {
233 return !$( a ).prop( "checked" );
234 }
235} );
236
237// Constructor for validator
238$.validator = function( options, form ) {
239 this.settings = $.extend( true, {}, $.validator.defaults, options );
240 this.currentForm = form;
241 this.init();
242};
243
244// https://jqueryvalidation.org/jQuery.validator.format/
245$.validator.format = function( source, params ) {
246 if ( arguments.length === 1 ) {
247 return function() {
248 var args = $.makeArray( arguments );
249 args.unshift( source );
250 return $.validator.format.apply( this, args );
251 };
252 }
253 if ( params === undefined ) {
254 return source;
255 }
256 if ( arguments.length > 2 && params.constructor !== Array ) {
257 params = $.makeArray( arguments ).slice( 1 );
258 }
259 if ( params.constructor !== Array ) {
260 params = [ params ];
261 }
262 $.each( params, function( i, n ) {
263 source = source.replace( new RegExp( "\\{" + i + "\\}", "g" ), function() {
264 return n;
265 } );
266 } );
267 return source;
268};
269
270$.extend( $.validator, {
271
272 defaults: {
273 messages: {},
274 groups: {},
275 rules: {},
276 errorClass: "error",
277 pendingClass: "pending",
278 validClass: "valid",
279 errorElement: "label",
280 focusCleanup: false,
281 focusInvalid: true,
282 errorContainer: $( [] ),
283 errorLabelContainer: $( [] ),
284 onsubmit: true,
285 ignore: ":hidden",
286 ignoreTitle: false,
287 onfocusin: function( element ) {
288 this.lastActive = element;
289
290 // Hide error label and remove error class on focus if enabled
291 if ( this.settings.focusCleanup ) {
292 if ( this.settings.unhighlight ) {
293 this.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );
294 }
295 this.hideThese( this.errorsFor( element ) );
296 }
297 },
298 onfocusout: function( element ) {
299 if ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {
300 this.element( element );
301 }
302 },
303 onkeyup: function( element, event ) {
304
305 // Avoid revalidate the field when pressing one of the following keys
306 // Shift => 16
307 // Ctrl => 17
308 // Alt => 18
309 // Caps lock => 20
310 // End => 35
311 // Home => 36
312 // Left arrow => 37
313 // Up arrow => 38
314 // Right arrow => 39
315 // Down arrow => 40
316 // Insert => 45
317 // Num lock => 144
318 // AltGr key => 225
319 var excludedKeys = [
320 16, 17, 18, 20, 35, 36, 37,
321 38, 39, 40, 45, 144, 225
322 ];
323
324 if ( event.which === 9 && this.elementValue( element ) === "" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {
325 return;
326 } else if ( element.name in this.submitted || element.name in this.invalid ) {
327 this.element( element );
328 }
329 },
330 onclick: function( element ) {
331
332 // Click on selects, radiobuttons and checkboxes
333 if ( element.name in this.submitted ) {
334 this.element( element );
335
336 // Or option elements, check parent select in that case
337 } else if ( element.parentNode.name in this.submitted ) {
338 this.element( element.parentNode );
339 }
340 },
341 highlight: function( element, errorClass, validClass ) {
342 if ( element.type === "radio" ) {
343 this.findByName( element.name ).addClass( errorClass ).removeClass( validClass );
344 } else {
345 $( element ).addClass( errorClass ).removeClass( validClass );
346 }
347 },
348 unhighlight: function( element, errorClass, validClass ) {
349 if ( element.type === "radio" ) {
350 this.findByName( element.name ).removeClass( errorClass ).addClass( validClass );
351 } else {
352 $( element ).removeClass( errorClass ).addClass( validClass );
353 }
354 }
355 },
356
357 // https://jqueryvalidation.org/jQuery.validator.setDefaults/
358 setDefaults: function( settings ) {
359 $.extend( $.validator.defaults, settings );
360 },
361
362 messages: {
363 required: "This field is required.",
364 remote: "Please fix this field.",
365 email: "Please enter a valid email address.",
366 url: "Please enter a valid URL.",
367 date: "Please enter a valid date.",
368 dateISO: "Please enter a valid date (ISO).",
369 number: "Please enter a valid number.",
370 digits: "Please enter only digits.",
371 equalTo: "Please enter the same value again.",
372 maxlength: $.validator.format( "Please enter no more than {0} characters." ),
373 minlength: $.validator.format( "Please enter at least {0} characters." ),
374 rangelength: $.validator.format( "Please enter a value between {0} and {1} characters long." ),
375 range: $.validator.format( "Please enter a value between {0} and {1}." ),
376 max: $.validator.format( "Please enter a value less than or equal to {0}." ),
377 min: $.validator.format( "Please enter a value greater than or equal to {0}." ),
378 step: $.validator.format( "Please enter a multiple of {0}." )
379 },
380
381 autoCreateRanges: false,
382
383 prototype: {
384
385 init: function() {
386 this.labelContainer = $( this.settings.errorLabelContainer );
387 this.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );
388 this.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );
389 this.submitted = {};
390 this.valueCache = {};
391 this.pendingRequest = 0;
392 this.pending = {};
393 this.invalid = {};
394 this.reset();
395
396 var groups = ( this.groups = {} ),
397 rules;
398 $.each( this.settings.groups, function( key, value ) {
399 if ( typeof value === "string" ) {
400 value = value.split( /\s/ );
401 }
402 $.each( value, function( index, name ) {
403 groups[ name ] = key;
404 } );
405 } );
406 rules = this.settings.rules;
407 $.each( rules, function( key, value ) {
408 rules[ key ] = $.validator.normalizeRule( value );
409 } );
410
411 function delegate( event ) {
412
413 // Set form expando on contenteditable
414 if ( !this.form && this.hasAttribute( "contenteditable" ) ) {
415 this.form = $( this ).closest( "form" )[ 0 ];
416 this.name = $( this ).attr( "name" );
417 }
418
419 var validator = $.data( this.form, "validator" ),
420 eventType = "on" + event.type.replace( /^validate/, "" ),
421 settings = validator.settings;
422 if ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {
423 settings[ eventType ].call( validator, this, event );
424 }
425 }
426
427 $( this.currentForm )
428 .on( "focusin.validate focusout.validate keyup.validate",
429 ":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], " +
430 "[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], " +
431 "[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], " +
432 "[type='radio'], [type='checkbox'], [contenteditable], [type='button']", delegate )
433
434 // Support: Chrome, oldIE
435 // "select" is provided as event.target when clicking a option
436 .on( "click.validate", "select, option, [type='radio'], [type='checkbox']", delegate );
437
438 if ( this.settings.invalidHandler ) {
439 $( this.currentForm ).on( "invalid-form.validate", this.settings.invalidHandler );
440 }
441 },
442
443 // https://jqueryvalidation.org/Validator.form/
444 form: function() {
445 this.checkForm();
446 $.extend( this.submitted, this.errorMap );
447 this.invalid = $.extend( {}, this.errorMap );
448 if ( !this.valid() ) {
449 $( this.currentForm ).triggerHandler( "invalid-form", [ this ] );
450 }
451 this.showErrors();
452 return this.valid();
453 },
454
455 checkForm: function() {
456 this.prepareForm();
457 for ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {
458 this.check( elements[ i ] );
459 }
460 return this.valid();
461 },
462
463 // https://jqueryvalidation.org/Validator.element/
464 element: function( element ) {
465 var cleanElement = this.clean( element ),
466 checkElement = this.validationTargetFor( cleanElement ),
467 v = this,
468 result = true,
469 rs, group;
470
471 if ( checkElement === undefined ) {
472 delete this.invalid[ cleanElement.name ];
473 } else {
474 this.prepareElement( checkElement );
475 this.currentElements = $( checkElement );
476
477 // If this element is grouped, then validate all group elements already
478 // containing a value
479 group = this.groups[ checkElement.name ];
480 if ( group ) {
481 $.each( this.groups, function( name, testgroup ) {
482 if ( testgroup === group && name !== checkElement.name ) {
483 cleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );
484 if ( cleanElement && cleanElement.name in v.invalid ) {
485 v.currentElements.push( cleanElement );
486 result = v.check( cleanElement ) && result;
487 }
488 }
489 } );
490 }
491
492 rs = this.check( checkElement ) !== false;
493 result = result && rs;
494 if ( rs ) {
495 this.invalid[ checkElement.name ] = false;
496 } else {
497 this.invalid[ checkElement.name ] = true;
498 }
499
500 if ( !this.numberOfInvalids() ) {
501
502 // Hide error containers on last error
503 this.toHide = this.toHide.add( this.containers );
504 }
505 this.showErrors();
506
507 // Add aria-invalid status for screen readers
508 $( element ).attr( "aria-invalid", !rs );
509 }
510
511 return result;
512 },
513
514 // https://jqueryvalidation.org/Validator.showErrors/
515 showErrors: function( errors ) {
516 if ( errors ) {
517 var validator = this;
518
519 // Add items to error list and map
520 $.extend( this.errorMap, errors );
521 this.errorList = $.map( this.errorMap, function( message, name ) {
522 return {
523 message: message,
524 element: validator.findByName( name )[ 0 ]
525 };
526 } );
527
528 // Remove items from success list
529 this.successList = $.grep( this.successList, function( element ) {
530 return !( element.name in errors );
531 } );
532 }
533 if ( this.settings.showErrors ) {
534 this.settings.showErrors.call( this, this.errorMap, this.errorList );
535 } else {
536 this.defaultShowErrors();
537 }
538 },
539
540 // https://jqueryvalidation.org/Validator.resetForm/
541 resetForm: function() {
542 if ( $.fn.resetForm ) {
543 $( this.currentForm ).resetForm();
544 }
545 this.invalid = {};
546 this.submitted = {};
547 this.prepareForm();
548 this.hideErrors();
549 var elements = this.elements()
550 .removeData( "previousValue" )
551 .removeAttr( "aria-invalid" );
552
553 this.resetElements( elements );
554 },
555
556 resetElements: function( elements ) {
557 var i;
558
559 if ( this.settings.unhighlight ) {
560 for ( i = 0; elements[ i ]; i++ ) {
561 this.settings.unhighlight.call( this, elements[ i ],
562 this.settings.errorClass, "" );
563 this.findByName( elements[ i ].name ).removeClass( this.settings.validClass );
564 }
565 } else {
566 elements
567 .removeClass( this.settings.errorClass )
568 .removeClass( this.settings.validClass );
569 }
570 },
571
572 numberOfInvalids: function() {
573 return this.objectLength( this.invalid );
574 },
575
576 objectLength: function( obj ) {
577 /* jshint unused: false */
578 var count = 0,
579 i;
580 for ( i in obj ) {
581
582 // This check allows counting elements with empty error
583 // message as invalid elements
584 if ( obj[ i ] !== undefined && obj[ i ] !== null && obj[ i ] !== false ) {
585 count++;
586 }
587 }
588 return count;
589 },
590
591 hideErrors: function() {
592 this.hideThese( this.toHide );
593 },
594
595 hideThese: function( errors ) {
596 errors.not( this.containers ).text( "" );
597 this.addWrapper( errors ).hide();
598 },
599
600 valid: function() {
601 return this.size() === 0;
602 },
603
604 size: function() {
605 return this.errorList.length;
606 },
607
608 focusInvalid: function() {
609 if ( this.settings.focusInvalid ) {
610 try {
611 $( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [] )
612 .filter( ":visible" )
613 .focus()
614
615 // Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find
616 .trigger( "focusin" );
617 } catch ( e ) {
618
619 // Ignore IE throwing errors when focusing hidden elements
620 }
621 }
622 },
623
624 findLastActive: function() {
625 var lastActive = this.lastActive;
626 return lastActive && $.grep( this.errorList, function( n ) {
627 return n.element.name === lastActive.name;
628 } ).length === 1 && lastActive;
629 },
630
631 elements: function() {
632 var validator = this,
633 rulesCache = {};
634
635 // Select all valid inputs inside the form (no submit or reset buttons)
636 return $( this.currentForm )
637 .find( "input, select, textarea, [contenteditable]" )
638 .not( ":submit, :reset, :image, :disabled" )
639 .not( this.settings.ignore )
640 .filter( function() {
641 var name = this.name || $( this ).attr( "name" ); // For contenteditable
642 if ( !name && validator.settings.debug && window.console ) {
643 console.error( "%o has no name assigned", this );
644 }
645
646 // Set form expando on contenteditable
647 if ( this.hasAttribute( "contenteditable" ) ) {
648 this.form = $( this ).closest( "form" )[ 0 ];
649 this.name = name;
650 }
651
652 // Select only the first element for each name, and only those with rules specified
653 if ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {
654 return false;
655 }
656
657 rulesCache[ name ] = true;
658 return true;
659 } );
660 },
661
662 clean: function( selector ) {
663 return $( selector )[ 0 ];
664 },
665
666 errors: function() {
667 var errorClass = this.settings.errorClass.split( " " ).join( "." );
668 return $( this.settings.errorElement + "." + errorClass, this.errorContext );
669 },
670
671 resetInternals: function() {
672 this.successList = [];
673 this.errorList = [];
674 this.errorMap = {};
675 this.toShow = $( [] );
676 this.toHide = $( [] );
677 },
678
679 reset: function() {
680 this.resetInternals();
681 this.currentElements = $( [] );
682 },
683
684 prepareForm: function() {
685 this.reset();
686 this.toHide = this.errors().add( this.containers );
687 },
688
689 prepareElement: function( element ) {
690 this.reset();
691 this.toHide = this.errorsFor( element );
692 },
693
694 elementValue: function( element ) {
695 var $element = $( element ),
696 type = element.type,
697 val, idx;
698
699 if ( type === "radio" || type === "checkbox" ) {
700 return this.findByName( element.name ).filter( ":checked" ).val();
701 } else if ( type === "number" && typeof element.validity !== "undefined" ) {
702 return element.validity.badInput ? "NaN" : $element.val();
703 }
704
705 if ( element.hasAttribute( "contenteditable" ) ) {
706 val = $element.text();
707 } else {
708 val = $element.val();
709 }
710
711 if ( type === "file" ) {
712
713 // Modern browser (chrome & safari)
714 if ( val.substr( 0, 12 ) === "C:\\fakepath\\" ) {
715 return val.substr( 12 );
716 }
717
718 // Legacy browsers
719 // Unix-based path
720 idx = val.lastIndexOf( "/" );
721 if ( idx >= 0 ) {
722 return val.substr( idx + 1 );
723 }
724
725 // Windows-based path
726 idx = val.lastIndexOf( "\\" );
727 if ( idx >= 0 ) {
728 return val.substr( idx + 1 );
729 }
730
731 // Just the file name
732 return val;
733 }
734
735 if ( typeof val === "string" ) {
736 return val.replace( /\r/g, "" );
737 }
738 return val;
739 },
740
741 check: function( element ) {
742 element = this.validationTargetFor( this.clean( element ) );
743
744 var rules = $( element ).rules(),
745 rulesCount = $.map( rules, function( n, i ) {
746 return i;
747 } ).length,
748 dependencyMismatch = false,
749 val = this.elementValue( element ),
750 result, method, rule, normalizer;
751
752 // Prioritize the local normalizer defined for this element over the global one
753 // if the former exists, otherwise user the global one in case it exists.
754 if ( typeof rules.normalizer === "function" ) {
755 normalizer = rules.normalizer;
756 } else if ( typeof this.settings.normalizer === "function" ) {
757 normalizer = this.settings.normalizer;
758 }
759
760 // If normalizer is defined, then call it to retreive the changed value instead
761 // of using the real one.
762 // Note that `this` in the normalizer is `element`.
763 if ( normalizer ) {
764 val = normalizer.call( element, val );
765
766 if ( typeof val !== "string" ) {
767 throw new TypeError( "The normalizer should return a string value." );
768 }
769
770 // Delete the normalizer from rules to avoid treating it as a pre-defined method.
771 delete rules.normalizer;
772 }
773
774 for ( method in rules ) {
775 rule = { method: method, parameters: rules[ method ] };
776 try {
777 result = $.validator.methods[ method ].call( this, val, element, rule.parameters );
778
779 // If a method indicates that the field is optional and therefore valid,
780 // don't mark it as valid when there are no other rules
781 if ( result === "dependency-mismatch" && rulesCount === 1 ) {
782 dependencyMismatch = true;
783 continue;
784 }
785 dependencyMismatch = false;
786
787 if ( result === "pending" ) {
788 this.toHide = this.toHide.not( this.errorsFor( element ) );
789 return;
790 }
791
792 if ( !result ) {
793 this.formatAndAdd( element, rule );
794 return false;
795 }
796 } catch ( e ) {
797 if ( this.settings.debug && window.console ) {
798 console.log( "Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.", e );
799 }
800 if ( e instanceof TypeError ) {
801 e.message += ". Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.";
802 }
803
804 throw e;
805 }
806 }
807 if ( dependencyMismatch ) {
808 return;
809 }
810 if ( this.objectLength( rules ) ) {
811 this.successList.push( element );
812 }
813 return true;
814 },
815
816 // Return the custom message for the given element and validation method
817 // specified in the element's HTML5 data attribute
818 // return the generic message if present and no method specific message is present
819 customDataMessage: function( element, method ) {
820 return $( element ).data( "msg" + method.charAt( 0 ).toUpperCase() +
821 method.substring( 1 ).toLowerCase() ) || $( element ).data( "msg" );
822 },
823
824 // Return the custom message for the given element name and validation method
825 customMessage: function( name, method ) {
826 var m = this.settings.messages[ name ];
827 return m && ( m.constructor === String ? m : m[ method ] );
828 },
829
830 // Return the first defined argument, allowing empty strings
831 findDefined: function() {
832 for ( var i = 0; i < arguments.length; i++ ) {
833 if ( arguments[ i ] !== undefined ) {
834 return arguments[ i ];
835 }
836 }
837 return undefined;
838 },
839
840 // The second parameter 'rule' used to be a string, and extended to an object literal
841 // of the following form:
842 // rule = {
843 // method: "method name",
844 // parameters: "the given method parameters"
845 // }
846 //
847 // The old behavior still supported, kept to maintain backward compatibility with
848 // old code, and will be removed in the next major release.
849 defaultMessage: function( element, rule ) {
850 if ( typeof rule === "string" ) {
851 rule = { method: rule };
852 }
853
854 var message = this.findDefined(
855 this.customMessage( element.name, rule.method ),
856 this.customDataMessage( element, rule.method ),
857
858 // 'title' is never undefined, so handle empty string as undefined
859 !this.settings.ignoreTitle && element.title || undefined,
860 $.validator.messages[ rule.method ],
861 "<strong>Warning: No message defined for " + element.name + "</strong>"
862 ),
863 theregex = /\$?\{(\d+)\}/g;
864 if ( typeof message === "function" ) {
865 message = message.call( this, rule.parameters, element );
866 } else if ( theregex.test( message ) ) {
867 message = $.validator.format( message.replace( theregex, "{$1}" ), rule.parameters );
868 }
869
870 return message;
871 },
872
873 formatAndAdd: function( element, rule ) {
874 var message = this.defaultMessage( element, rule );
875
876 this.errorList.push( {
877 message: message,
878 element: element,
879 method: rule.method
880 } );
881
882 this.errorMap[ element.name ] = message;
883 this.submitted[ element.name ] = message;
884 },
885
886 addWrapper: function( toToggle ) {
887 if ( this.settings.wrapper ) {
888 toToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );
889 }
890 return toToggle;
891 },
892
893 defaultShowErrors: function() {
894 var i, elements, error;
895 for ( i = 0; this.errorList[ i ]; i++ ) {
896 error = this.errorList[ i ];
897 if ( this.settings.highlight ) {
898 this.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );
899 }
900 this.showLabel( error.element, error.message );
901 }
902 if ( this.errorList.length ) {
903 this.toShow = this.toShow.add( this.containers );
904 }
905 if ( this.settings.success ) {
906 for ( i = 0; this.successList[ i ]; i++ ) {
907 this.showLabel( this.successList[ i ] );
908 }
909 }
910 if ( this.settings.unhighlight ) {
911 for ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {
912 this.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );
913 }
914 }
915 this.toHide = this.toHide.not( this.toShow );
916 this.hideErrors();
917 this.addWrapper( this.toShow ).show();
918 },
919
920 validElements: function() {
921 return this.currentElements.not( this.invalidElements() );
922 },
923
924 invalidElements: function() {
925 return $( this.errorList ).map( function() {
926 return this.element;
927 } );
928 },
929
930 showLabel: function( element, message ) {
931 var place, group, errorID, v,
932 error = this.errorsFor( element ),
933 elementID = this.idOrName( element ),
934 describedBy = $( element ).attr( "aria-describedby" );
935
936 if ( error.length ) {
937
938 // Refresh error/success class
939 error.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );
940
941 // Replace message on existing label
942 error.html( message );
943 } else {
944
945 // Create error element
946 error = $( "<" + this.settings.errorElement + ">" )
947 .attr( "id", elementID + "-error" )
948 .addClass( this.settings.errorClass )
949 .html( message || "" );
950
951 // Maintain reference to the element to be placed into the DOM
952 place = error;
953 if ( this.settings.wrapper ) {
954
955 // Make sure the element is visible, even in IE
956 // actually showing the wrapped element is handled elsewhere
957 place = error.hide().show().wrap( "<" + this.settings.wrapper + "/>" ).parent();
958 }
959 if ( this.labelContainer.length ) {
960 this.labelContainer.append( place );
961 } else if ( this.settings.errorPlacement ) {
962 this.settings.errorPlacement.call( this, place, $( element ) );
963 } else {
964 place.insertAfter( element );
965 }
966
967 // Link error back to the element
968 if ( error.is( "label" ) ) {
969
970 // If the error is a label, then associate using 'for'
971 error.attr( "for", elementID );
972
973 // If the element is not a child of an associated label, then it's necessary
974 // to explicitly apply aria-describedby
975 } else if ( error.parents( "label[for='" + this.escapeCssMeta( elementID ) + "']" ).length === 0 ) {
976 errorID = error.attr( "id" );
977
978 // Respect existing non-error aria-describedby
979 if ( !describedBy ) {
980 describedBy = errorID;
981 } else if ( !describedBy.match( new RegExp( "\\b" + this.escapeCssMeta( errorID ) + "\\b" ) ) ) {
982
983 // Add to end of list if not already present
984 describedBy += " " + errorID;
985 }
986 $( element ).attr( "aria-describedby", describedBy );
987
988 // If this element is grouped, then assign to all elements in the same group
989 group = this.groups[ element.name ];
990 if ( group ) {
991 v = this;
992 $.each( v.groups, function( name, testgroup ) {
993 if ( testgroup === group ) {
994 $( "[name='" + v.escapeCssMeta( name ) + "']", v.currentForm )
995 .attr( "aria-describedby", error.attr( "id" ) );
996 }
997 } );
998 }
999 }
1000 }
1001 if ( !message && this.settings.success ) {
1002 error.text( "" );
1003 if ( typeof this.settings.success === "string" ) {
1004 error.addClass( this.settings.success );
1005 } else {
1006 this.settings.success( error, element );
1007 }
1008 }
1009 this.toShow = this.toShow.add( error );
1010 },
1011
1012 errorsFor: function( element ) {
1013 var name = this.escapeCssMeta( this.idOrName( element ) ),
1014 describer = $( element ).attr( "aria-describedby" ),
1015 selector = "label[for='" + name + "'], label[for='" + name + "'] *";
1016
1017 // 'aria-describedby' should directly reference the error element
1018 if ( describer ) {
1019 selector = selector + ", #" + this.escapeCssMeta( describer )
1020 .replace( /\s+/g, ", #" );
1021 }
1022
1023 return this
1024 .errors()
1025 .filter( selector );
1026 },
1027
1028 // See https://api.jquery.com/category/selectors/, for CSS
1029 // meta-characters that should be escaped in order to be used with JQuery
1030 // as a literal part of a name/id or any selector.
1031 escapeCssMeta: function( string ) {
1032 return string.replace( /([\\!"#$%&'()*+,./:;<=>?@\[\]^`{|}~])/g, "\\$1" );
1033 },
1034
1035 idOrName: function( element ) {
1036 return this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );
1037 },
1038
1039 validationTargetFor: function( element ) {
1040
1041 // If radio/checkbox, validate first element in group instead
1042 if ( this.checkable( element ) ) {
1043 element = this.findByName( element.name );
1044 }
1045
1046 // Always apply ignore filter
1047 return $( element ).not( this.settings.ignore )[ 0 ];
1048 },
1049
1050 checkable: function( element ) {
1051 return ( /radio|checkbox/i ).test( element.type );
1052 },
1053
1054 findByName: function( name ) {
1055 return $( this.currentForm ).find( "[name='" + this.escapeCssMeta( name ) + "']" );
1056 },
1057
1058 getLength: function( value, element ) {
1059 switch ( element.nodeName.toLowerCase() ) {
1060 case "select":
1061 return $( "option:selected", element ).length;
1062 case "input":
1063 if ( this.checkable( element ) ) {
1064 return this.findByName( element.name ).filter( ":checked" ).length;
1065 }
1066 }
1067 return value.length;
1068 },
1069
1070 depend: function( param, element ) {
1071 return this.dependTypes[ typeof param ] ? this.dependTypes[ typeof param ]( param, element ) : true;
1072 },
1073
1074 dependTypes: {
1075 "boolean": function( param ) {
1076 return param;
1077 },
1078 "string": function( param, element ) {
1079 return !!$( param, element.form ).length;
1080 },
1081 "function": function( param, element ) {
1082 return param( element );
1083 }
1084 },
1085
1086 optional: function( element ) {
1087 var val = this.elementValue( element );
1088 return !$.validator.methods.required.call( this, val, element ) && "dependency-mismatch";
1089 },
1090
1091 startRequest: function( element ) {
1092 if ( !this.pending[ element.name ] ) {
1093 this.pendingRequest++;
1094 $( element ).addClass( this.settings.pendingClass );
1095 this.pending[ element.name ] = true;
1096 }
1097 },
1098
1099 stopRequest: function( element, valid ) {
1100 this.pendingRequest--;
1101
1102 // Sometimes synchronization fails, make sure pendingRequest is never < 0
1103 if ( this.pendingRequest < 0 ) {
1104 this.pendingRequest = 0;
1105 }
1106 delete this.pending[ element.name ];
1107 $( element ).removeClass( this.settings.pendingClass );
1108 if ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) {
1109 $( this.currentForm ).submit();
1110
1111 // Remove the hidden input that was used as a replacement for the
1112 // missing submit button. The hidden input is added by `handle()`
1113 // to ensure that the value of the used submit button is passed on
1114 // for scripted submits triggered by this method
1115 if ( this.submitButton ) {
1116 $( "input:hidden[name='" + this.submitButton.name + "']", this.currentForm ).remove();
1117 }
1118
1119 this.formSubmitted = false;
1120 } else if ( !valid && this.pendingRequest === 0 && this.formSubmitted ) {
1121 $( this.currentForm ).triggerHandler( "invalid-form", [ this ] );
1122 this.formSubmitted = false;
1123 }
1124 },
1125
1126 previousValue: function( element, method ) {
1127 method = typeof method === "string" && method || "remote";
1128
1129 return $.data( element, "previousValue" ) || $.data( element, "previousValue", {
1130 old: null,
1131 valid: true,
1132 message: this.defaultMessage( element, { method: method } )
1133 } );
1134 },
1135
1136 // Cleans up all forms and elements, removes validator-specific events
1137 destroy: function() {
1138 this.resetForm();
1139
1140 $( this.currentForm )
1141 .off( ".validate" )
1142 .removeData( "validator" )
1143 .find( ".validate-equalTo-blur" )
1144 .off( ".validate-equalTo" )
1145 .removeClass( "validate-equalTo-blur" );
1146 }
1147
1148 },
1149
1150 classRuleSettings: {
1151 required: { required: true },
1152 email: { email: true },
1153 url: { url: true },
1154 date: { date: true },
1155 dateISO: { dateISO: true },
1156 number: { number: true },
1157 digits: { digits: true },
1158 creditcard: { creditcard: true }
1159 },
1160
1161 addClassRules: function( className, rules ) {
1162 if ( className.constructor === String ) {
1163 this.classRuleSettings[ className ] = rules;
1164 } else {
1165 $.extend( this.classRuleSettings, className );
1166 }
1167 },
1168
1169 classRules: function( element ) {
1170 var rules = {},
1171 classes = $( element ).attr( "class" );
1172
1173 if ( classes ) {
1174 $.each( classes.split( " " ), function() {
1175 if ( this in $.validator.classRuleSettings ) {
1176 $.extend( rules, $.validator.classRuleSettings[ this ] );
1177 }
1178 } );
1179 }
1180 return rules;
1181 },
1182
1183 normalizeAttributeRule: function( rules, type, method, value ) {
1184
1185 // Convert the value to a number for number inputs, and for text for backwards compability
1186 // allows type="date" and others to be compared as strings
1187 if ( /min|max|step/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {
1188 value = Number( value );
1189
1190 // Support Opera Mini, which returns NaN for undefined minlength
1191 if ( isNaN( value ) ) {
1192 value = undefined;
1193 }
1194 }
1195
1196 if ( value || value === 0 ) {
1197 rules[ method ] = value;
1198 } else if ( type === method && type !== "range" ) {
1199
1200 // Exception: the jquery validate 'range' method
1201 // does not test for the html5 'range' type
1202 rules[ method ] = true;
1203 }
1204 },
1205
1206 attributeRules: function( element ) {
1207 var rules = {},
1208 $element = $( element ),
1209 type = element.getAttribute( "type" ),
1210 method, value;
1211
1212 for ( method in $.validator.methods ) {
1213
1214 // Support for <input required> in both html5 and older browsers
1215 if ( method === "required" ) {
1216 value = element.getAttribute( method );
1217
1218 // Some browsers return an empty string for the required attribute
1219 // and non-HTML5 browsers might have required="" markup
1220 if ( value === "" ) {
1221 value = true;
1222 }
1223
1224 // Force non-HTML5 browsers to return bool
1225 value = !!value;
1226 } else {
1227 value = $element.attr( method );
1228 }
1229
1230 this.normalizeAttributeRule( rules, type, method, value );
1231 }
1232
1233 // 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs
1234 if ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {
1235 delete rules.maxlength;
1236 }
1237
1238 return rules;
1239 },
1240
1241 dataRules: function( element ) {
1242 var rules = {},
1243 $element = $( element ),
1244 type = element.getAttribute( "type" ),
1245 method, value;
1246
1247 for ( method in $.validator.methods ) {
1248 value = $element.data( "rule" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );
1249 this.normalizeAttributeRule( rules, type, method, value );
1250 }
1251 return rules;
1252 },
1253
1254 staticRules: function( element ) {
1255 var rules = {},
1256 validator = $.data( element.form, "validator" );
1257
1258 if ( validator.settings.rules ) {
1259 rules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};
1260 }
1261 return rules;
1262 },
1263
1264 normalizeRules: function( rules, element ) {
1265
1266 // Handle dependency check
1267 $.each( rules, function( prop, val ) {
1268
1269 // Ignore rule when param is explicitly false, eg. required:false
1270 if ( val === false ) {
1271 delete rules[ prop ];
1272 return;
1273 }
1274 if ( val.param || val.depends ) {
1275 var keepRule = true;
1276 switch ( typeof val.depends ) {
1277 case "string":
1278 keepRule = !!$( val.depends, element.form ).length;
1279 break;
1280 case "function":
1281 keepRule = val.depends.call( element, element );
1282 break;
1283 }
1284 if ( keepRule ) {
1285 rules[ prop ] = val.param !== undefined ? val.param : true;
1286 } else {
1287 $.data( element.form, "validator" ).resetElements( $( element ) );
1288 delete rules[ prop ];
1289 }
1290 }
1291 } );
1292
1293 // Evaluate parameters
1294 $.each( rules, function( rule, parameter ) {
1295 rules[ rule ] = $.isFunction( parameter ) && rule !== "normalizer" ? parameter( element ) : parameter;
1296 } );
1297
1298 // Clean number parameters
1299 $.each( [ "minlength", "maxlength" ], function() {
1300 if ( rules[ this ] ) {
1301 rules[ this ] = Number( rules[ this ] );
1302 }
1303 } );
1304 $.each( [ "rangelength", "range" ], function() {
1305 var parts;
1306 if ( rules[ this ] ) {
1307 if ( $.isArray( rules[ this ] ) ) {
1308 rules[ this ] = [ Number( rules[ this ][ 0 ] ), Number( rules[ this ][ 1 ] ) ];
1309 } else if ( typeof rules[ this ] === "string" ) {
1310 parts = rules[ this ].replace( /[\[\]]/g, "" ).split( /[\s,]+/ );
1311 rules[ this ] = [ Number( parts[ 0 ] ), Number( parts[ 1 ] ) ];
1312 }
1313 }
1314 } );
1315
1316 if ( $.validator.autoCreateRanges ) {
1317
1318 // Auto-create ranges
1319 if ( rules.min != null && rules.max != null ) {
1320 rules.range = [ rules.min, rules.max ];
1321 delete rules.min;
1322 delete rules.max;
1323 }
1324 if ( rules.minlength != null && rules.maxlength != null ) {
1325 rules.rangelength = [ rules.minlength, rules.maxlength ];
1326 delete rules.minlength;
1327 delete rules.maxlength;
1328 }
1329 }
1330
1331 return rules;
1332 },
1333
1334 // Converts a simple string to a {string: true} rule, e.g., "required" to {required:true}
1335 normalizeRule: function( data ) {
1336 if ( typeof data === "string" ) {
1337 var transformed = {};
1338 $.each( data.split( /\s/ ), function() {
1339 transformed[ this ] = true;
1340 } );
1341 data = transformed;
1342 }
1343 return data;
1344 },
1345
1346 // https://jqueryvalidation.org/jQuery.validator.addMethod/
1347 addMethod: function( name, method, message ) {
1348 $.validator.methods[ name ] = method;
1349 $.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];
1350 if ( method.length < 3 ) {
1351 $.validator.addClassRules( name, $.validator.normalizeRule( name ) );
1352 }
1353 },
1354
1355 // https://jqueryvalidation.org/jQuery.validator.methods/
1356 methods: {
1357
1358 // https://jqueryvalidation.org/required-method/
1359 required: function( value, element, param ) {
1360
1361 // Check if dependency is met
1362 if ( !this.depend( param, element ) ) {
1363 return "dependency-mismatch";
1364 }
1365 if ( element.nodeName.toLowerCase() === "select" ) {
1366
1367 // Could be an array for select-multiple or a string, both are fine this way
1368 var val = $( element ).val();
1369 return val && val.length > 0;
1370 }
1371 if ( this.checkable( element ) ) {
1372 return this.getLength( value, element ) > 0;
1373 }
1374 return value.length > 0;
1375 },
1376
1377 // https://jqueryvalidation.org/email-method/
1378 email: function( value, element ) {
1379
1380 // From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address
1381 // Retrieved 2014-01-14
1382 // If you have a problem with this implementation, report a bug against the above spec
1383 // Or use custom methods to implement your own email validation
1384 return this.optional( element ) || /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value );
1385 },
1386
1387 // https://jqueryvalidation.org/url-method/
1388 url: function( value, element ) {
1389
1390 // Copyright (c) 2010-2013 Diego Perini, MIT licensed
1391 // https://gist.github.com/dperini/729294
1392 // see also https://mathiasbynens.be/demo/url-regex
1393 // modified to allow protocol-relative URLs
1394 return this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/i.test( value );
1395 },
1396
1397 // https://jqueryvalidation.org/date-method/
1398 date: function( value, element ) {
1399 return this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );
1400 },
1401
1402 // https://jqueryvalidation.org/dateISO-method/
1403 dateISO: function( value, element ) {
1404 return this.optional( element ) || /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );
1405 },
1406
1407 // https://jqueryvalidation.org/number-method/
1408 number: function( value, element ) {
1409 return this.optional( element ) || /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test( value );
1410 },
1411
1412 // https://jqueryvalidation.org/digits-method/
1413 digits: function( value, element ) {
1414 return this.optional( element ) || /^\d+$/.test( value );
1415 },
1416
1417 // https://jqueryvalidation.org/minlength-method/
1418 minlength: function( value, element, param ) {
1419 var length = $.isArray( value ) ? value.length : this.getLength( value, element );
1420 return this.optional( element ) || length >= param;
1421 },
1422
1423 // https://jqueryvalidation.org/maxlength-method/
1424 maxlength: function( value, element, param ) {
1425 var length = $.isArray( value ) ? value.length : this.getLength( value, element );
1426 return this.optional( element ) || length <= param;
1427 },
1428
1429 // https://jqueryvalidation.org/rangelength-method/
1430 rangelength: function( value, element, param ) {
1431 var length = $.isArray( value ) ? value.length : this.getLength( value, element );
1432 return this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );
1433 },
1434
1435 // https://jqueryvalidation.org/min-method/
1436 min: function( value, element, param ) {
1437 return this.optional( element ) || value >= param;
1438 },
1439
1440 // https://jqueryvalidation.org/max-method/
1441 max: function( value, element, param ) {
1442 return this.optional( element ) || value <= param;
1443 },
1444
1445 // https://jqueryvalidation.org/range-method/
1446 range: function( value, element, param ) {
1447 return this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );
1448 },
1449
1450 // https://jqueryvalidation.org/step-method/
1451 step: function( value, element, param ) {
1452 var type = $( element ).attr( "type" ),
1453 errorMessage = "Step attribute on input type " + type + " is not supported.",
1454 supportedTypes = [ "text", "number", "range" ],
1455 re = new RegExp( "\\b" + type + "\\b" ),
1456 notSupported = type && !re.test( supportedTypes.join() ),
1457 decimalPlaces = function( num ) {
1458 var match = ( "" + num ).match( /(?:\.(\d+))?$/ );
1459 if ( !match ) {
1460 return 0;
1461 }
1462
1463 // Number of digits right of decimal point.
1464 return match[ 1 ] ? match[ 1 ].length : 0;
1465 },
1466 toInt = function( num ) {
1467 return Math.round( num * Math.pow( 10, decimals ) );
1468 },
1469 valid = true,
1470 decimals;
1471
1472 // Works only for text, number and range input types
1473 // TODO find a way to support input types date, datetime, datetime-local, month, time and week
1474 if ( notSupported ) {
1475 throw new Error( errorMessage );
1476 }
1477
1478 decimals = decimalPlaces( param );
1479
1480 // Value can't have too many decimals
1481 if ( decimalPlaces( value ) > decimals || toInt( value ) % toInt( param ) !== 0 ) {
1482 valid = false;
1483 }
1484
1485 return this.optional( element ) || valid;
1486 },
1487
1488 // https://jqueryvalidation.org/equalTo-method/
1489 equalTo: function( value, element, param ) {
1490
1491 // Bind to the blur event of the target in order to revalidate whenever the target field is updated
1492 var target = $( param );
1493 if ( this.settings.onfocusout && target.not( ".validate-equalTo-blur" ).length ) {
1494 target.addClass( "validate-equalTo-blur" ).on( "blur.validate-equalTo", function() {
1495 $( element ).valid();
1496 } );
1497 }
1498 return value === target.val();
1499 },
1500
1501 // https://jqueryvalidation.org/remote-method/
1502 remote: function( value, element, param, method ) {
1503 if ( this.optional( element ) ) {
1504 return "dependency-mismatch";
1505 }
1506
1507 method = typeof method === "string" && method || "remote";
1508
1509 var previous = this.previousValue( element, method ),
1510 validator, data, optionDataString;
1511
1512 if ( !this.settings.messages[ element.name ] ) {
1513 this.settings.messages[ element.name ] = {};
1514 }
1515 previous.originalMessage = previous.originalMessage || this.settings.messages[ element.name ][ method ];
1516 this.settings.messages[ element.name ][ method ] = previous.message;
1517
1518 param = typeof param === "string" && { url: param } || param;
1519 optionDataString = $.param( $.extend( { data: value }, param.data ) );
1520 if ( previous.old === optionDataString ) {
1521 return previous.valid;
1522 }
1523
1524 previous.old = optionDataString;
1525 validator = this;
1526 this.startRequest( element );
1527 data = {};
1528 data[ element.name ] = value;
1529 $.ajax( $.extend( true, {
1530 mode: "abort",
1531 port: "validate" + element.name,
1532 dataType: "json",
1533 data: data,
1534 context: validator.currentForm,
1535 success: function( response ) {
1536 var valid = response === true || response === "true",
1537 errors, message, submitted;
1538
1539 validator.settings.messages[ element.name ][ method ] = previous.originalMessage;
1540 if ( valid ) {
1541 submitted = validator.formSubmitted;
1542 validator.resetInternals();
1543 validator.toHide = validator.errorsFor( element );
1544 validator.formSubmitted = submitted;
1545 validator.successList.push( element );
1546 validator.invalid[ element.name ] = false;
1547 validator.showErrors();
1548 } else {
1549 errors = {};
1550 message = response || validator.defaultMessage( element, { method: method, parameters: value } );
1551 errors[ element.name ] = previous.message = message;
1552 validator.invalid[ element.name ] = true;
1553 validator.showErrors( errors );
1554 }
1555 previous.valid = valid;
1556 validator.stopRequest( element, valid );
1557 }
1558 }, param ) );
1559 return "pending";
1560 }
1561 }
1562
1563} );
1564
1565// Ajax mode: abort
1566// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
1567// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
1568
1569var pendingRequests = {},
1570 ajax;
1571
1572// Use a prefilter if available (1.5+)
1573if ( $.ajaxPrefilter ) {
1574 $.ajaxPrefilter( function( settings, _, xhr ) {
1575 var port = settings.port;
1576 if ( settings.mode === "abort" ) {
1577 if ( pendingRequests[ port ] ) {
1578 pendingRequests[ port ].abort();
1579 }
1580 pendingRequests[ port ] = xhr;
1581 }
1582 } );
1583} else {
1584
1585 // Proxy ajax
1586 ajax = $.ajax;
1587 $.ajax = function( settings ) {
1588 var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode,
1589 port = ( "port" in settings ? settings : $.ajaxSettings ).port;
1590 if ( mode === "abort" ) {
1591 if ( pendingRequests[ port ] ) {
1592 pendingRequests[ port ].abort();
1593 }
1594 pendingRequests[ port ] = ajax.apply( this, arguments );
1595 return pendingRequests[ port ];
1596 }
1597 return ajax.apply( this, arguments );
1598 };
1599}
1600return $;
1601})); \ No newline at end of file
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/jquery/LICENSE.txt b/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/jquery/LICENSE.txt
new file mode 100644
index 00000000..e4e5e00e
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/jquery/LICENSE.txt
@@ -0,0 +1,36 @@
1Copyright JS Foundation and other contributors, https://js.foundation/
2
3This software consists of voluntary contributions made by many
4individuals. For exact contribution history, see the revision history
5available at https://github.com/jquery/jquery
6
7The following license applies to all parts of this software except as
8documented below:
9
10====
11
12Permission is hereby granted, free of charge, to any person obtaining
13a copy of this software and associated documentation files (the
14"Software"), to deal in the Software without restriction, including
15without limitation the rights to use, copy, modify, merge, publish,
16distribute, sublicense, and/or sell copies of the Software, and to
17permit persons to whom the Software is furnished to do so, subject to
18the following conditions:
19
20The above copyright notice and this permission notice shall be
21included in all copies or substantial portions of the Software.
22
23THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
27LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
28OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
29WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30
31====
32
33All files located in the node_modules and external directories are
34externally maintained libraries used by this software which have their
35own licenses; we recommend you read them, as their terms may differ from
36the terms above.
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/jquery/dist/jquery.js b/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/jquery/dist/jquery.js
new file mode 100644
index 00000000..50937333
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/jquery/dist/jquery.js
@@ -0,0 +1,10872 @@
1/*!
2 * jQuery JavaScript Library v3.5.1
3 * https://jquery.com/
4 *
5 * Includes Sizzle.js
6 * https://sizzlejs.com/
7 *
8 * Copyright JS Foundation and other contributors
9 * Released under the MIT license
10 * https://jquery.org/license
11 *
12 * Date: 2020-05-04T22:49Z
13 */
14( function( global, factory ) {
15
16 "use strict";
17
18 if ( typeof module === "object" && typeof module.exports === "object" ) {
19
20 // For CommonJS and CommonJS-like environments where a proper `window`
21 // is present, execute the factory and get jQuery.
22 // For environments that do not have a `window` with a `document`
23 // (such as Node.js), expose a factory as module.exports.
24 // This accentuates the need for the creation of a real `window`.
25 // e.g. var jQuery = require("jquery")(window);
26 // See ticket #14549 for more info.
27 module.exports = global.document ?
28 factory( global, true ) :
29 function( w ) {
30 if ( !w.document ) {
31 throw new Error( "jQuery requires a window with a document" );
32 }
33 return factory( w );
34 };
35 } else {
36 factory( global );
37 }
38
39// Pass this if window is not defined yet
40} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
41
42// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
43// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
44// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
45// enough that all such attempts are guarded in a try block.
46"use strict";
47
48var arr = [];
49
50var getProto = Object.getPrototypeOf;
51
52var slice = arr.slice;
53
54var flat = arr.flat ? function( array ) {
55 return arr.flat.call( array );
56} : function( array ) {
57 return arr.concat.apply( [], array );
58};
59
60
61var push = arr.push;
62
63var indexOf = arr.indexOf;
64
65var class2type = {};
66
67var toString = class2type.toString;
68
69var hasOwn = class2type.hasOwnProperty;
70
71var fnToString = hasOwn.toString;
72
73var ObjectFunctionString = fnToString.call( Object );
74
75var support = {};
76
77var isFunction = function isFunction( obj ) {
78
79 // Support: Chrome <=57, Firefox <=52
80 // In some browsers, typeof returns "function" for HTML <object> elements
81 // (i.e., `typeof document.createElement( "object" ) === "function"`).
82 // We don't want to classify *any* DOM node as a function.
83 return typeof obj === "function" && typeof obj.nodeType !== "number";
84 };
85
86
87var isWindow = function isWindow( obj ) {
88 return obj != null && obj === obj.window;
89 };
90
91
92var document = window.document;
93
94
95
96 var preservedScriptAttributes = {
97 type: true,
98 src: true,
99 nonce: true,
100 noModule: true
101 };
102
103 function DOMEval( code, node, doc ) {
104 doc = doc || document;
105
106 var i, val,
107 script = doc.createElement( "script" );
108
109 script.text = code;
110 if ( node ) {
111 for ( i in preservedScriptAttributes ) {
112
113 // Support: Firefox 64+, Edge 18+
114 // Some browsers don't support the "nonce" property on scripts.
115 // On the other hand, just using `getAttribute` is not enough as
116 // the `nonce` attribute is reset to an empty string whenever it
117 // becomes browsing-context connected.
118 // See https://github.com/whatwg/html/issues/2369
119 // See https://html.spec.whatwg.org/#nonce-attributes
120 // The `node.getAttribute` check was added for the sake of
121 // `jQuery.globalEval` so that it can fake a nonce-containing node
122 // via an object.
123 val = node[ i ] || node.getAttribute && node.getAttribute( i );
124 if ( val ) {
125 script.setAttribute( i, val );
126 }
127 }
128 }
129 doc.head.appendChild( script ).parentNode.removeChild( script );
130 }
131
132
133function toType( obj ) {
134 if ( obj == null ) {
135 return obj + "";
136 }
137
138 // Support: Android <=2.3 only (functionish RegExp)
139 return typeof obj === "object" || typeof obj === "function" ?
140 class2type[ toString.call( obj ) ] || "object" :
141 typeof obj;
142}
143/* global Symbol */
144// Defining this global in .eslintrc.json would create a danger of using the global
145// unguarded in another place, it seems safer to define global only for this module
146
147
148
149var
150 version = "3.5.1",
151
152 // Define a local copy of jQuery
153 jQuery = function( selector, context ) {
154
155 // The jQuery object is actually just the init constructor 'enhanced'
156 // Need init if jQuery is called (just allow error to be thrown if not included)
157 return new jQuery.fn.init( selector, context );
158 };
159
160jQuery.fn = jQuery.prototype = {
161
162 // The current version of jQuery being used
163 jquery: version,
164
165 constructor: jQuery,
166
167 // The default length of a jQuery object is 0
168 length: 0,
169
170 toArray: function() {
171 return slice.call( this );
172 },
173
174 // Get the Nth element in the matched element set OR
175 // Get the whole matched element set as a clean array
176 get: function( num ) {
177
178 // Return all the elements in a clean array
179 if ( num == null ) {
180 return slice.call( this );
181 }
182
183 // Return just the one element from the set
184 return num < 0 ? this[ num + this.length ] : this[ num ];
185 },
186
187 // Take an array of elements and push it onto the stack
188 // (returning the new matched element set)
189 pushStack: function( elems ) {
190
191 // Build a new jQuery matched element set
192 var ret = jQuery.merge( this.constructor(), elems );
193
194 // Add the old object onto the stack (as a reference)
195 ret.prevObject = this;
196
197 // Return the newly-formed element set
198 return ret;
199 },
200
201 // Execute a callback for every element in the matched set.
202 each: function( callback ) {
203 return jQuery.each( this, callback );
204 },
205
206 map: function( callback ) {
207 return this.pushStack( jQuery.map( this, function( elem, i ) {
208 return callback.call( elem, i, elem );
209 } ) );
210 },
211
212 slice: function() {
213 return this.pushStack( slice.apply( this, arguments ) );
214 },
215
216 first: function() {
217 return this.eq( 0 );
218 },
219
220 last: function() {
221 return this.eq( -1 );
222 },
223
224 even: function() {
225 return this.pushStack( jQuery.grep( this, function( _elem, i ) {
226 return ( i + 1 ) % 2;
227 } ) );
228 },
229
230 odd: function() {
231 return this.pushStack( jQuery.grep( this, function( _elem, i ) {
232 return i % 2;
233 } ) );
234 },
235
236 eq: function( i ) {
237 var len = this.length,
238 j = +i + ( i < 0 ? len : 0 );
239 return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
240 },
241
242 end: function() {
243 return this.prevObject || this.constructor();
244 },
245
246 // For internal use only.
247 // Behaves like an Array's method, not like a jQuery method.
248 push: push,
249 sort: arr.sort,
250 splice: arr.splice
251};
252
253jQuery.extend = jQuery.fn.extend = function() {
254 var options, name, src, copy, copyIsArray, clone,
255 target = arguments[ 0 ] || {},
256 i = 1,
257 length = arguments.length,
258 deep = false;
259
260 // Handle a deep copy situation
261 if ( typeof target === "boolean" ) {
262 deep = target;
263
264 // Skip the boolean and the target
265 target = arguments[ i ] || {};
266 i++;
267 }
268
269 // Handle case when target is a string or something (possible in deep copy)
270 if ( typeof target !== "object" && !isFunction( target ) ) {
271 target = {};
272 }
273
274 // Extend jQuery itself if only one argument is passed
275 if ( i === length ) {
276 target = this;
277 i--;
278 }
279
280 for ( ; i < length; i++ ) {
281
282 // Only deal with non-null/undefined values
283 if ( ( options = arguments[ i ] ) != null ) {
284
285 // Extend the base object
286 for ( name in options ) {
287 copy = options[ name ];
288
289 // Prevent Object.prototype pollution
290 // Prevent never-ending loop
291 if ( name === "__proto__" || target === copy ) {
292 continue;
293 }
294
295 // Recurse if we're merging plain objects or arrays
296 if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
297 ( copyIsArray = Array.isArray( copy ) ) ) ) {
298 src = target[ name ];
299
300 // Ensure proper type for the source value
301 if ( copyIsArray && !Array.isArray( src ) ) {
302 clone = [];
303 } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {
304 clone = {};
305 } else {
306 clone = src;
307 }
308 copyIsArray = false;
309
310 // Never move original objects, clone them
311 target[ name ] = jQuery.extend( deep, clone, copy );
312
313 // Don't bring in undefined values
314 } else if ( copy !== undefined ) {
315 target[ name ] = copy;
316 }
317 }
318 }
319 }
320
321 // Return the modified object
322 return target;
323};
324
325jQuery.extend( {
326
327 // Unique for each copy of jQuery on the page
328 expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
329
330 // Assume jQuery is ready without the ready module
331 isReady: true,
332
333 error: function( msg ) {
334 throw new Error( msg );
335 },
336
337 noop: function() {},
338
339 isPlainObject: function( obj ) {
340 var proto, Ctor;
341
342 // Detect obvious negatives
343 // Use toString instead of jQuery.type to catch host objects
344 if ( !obj || toString.call( obj ) !== "[object Object]" ) {
345 return false;
346 }
347
348 proto = getProto( obj );
349
350 // Objects with no prototype (e.g., `Object.create( null )`) are plain
351 if ( !proto ) {
352 return true;
353 }
354
355 // Objects with prototype are plain iff they were constructed by a global Object function
356 Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
357 return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
358 },
359
360 isEmptyObject: function( obj ) {
361 var name;
362
363 for ( name in obj ) {
364 return false;
365 }
366 return true;
367 },
368
369 // Evaluates a script in a provided context; falls back to the global one
370 // if not specified.
371 globalEval: function( code, options, doc ) {
372 DOMEval( code, { nonce: options && options.nonce }, doc );
373 },
374
375 each: function( obj, callback ) {
376 var length, i = 0;
377
378 if ( isArrayLike( obj ) ) {
379 length = obj.length;
380 for ( ; i < length; i++ ) {
381 if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
382 break;
383 }
384 }
385 } else {
386 for ( i in obj ) {
387 if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
388 break;
389 }
390 }
391 }
392
393 return obj;
394 },
395
396 // results is for internal usage only
397 makeArray: function( arr, results ) {
398 var ret = results || [];
399
400 if ( arr != null ) {
401 if ( isArrayLike( Object( arr ) ) ) {
402 jQuery.merge( ret,
403 typeof arr === "string" ?
404 [ arr ] : arr
405 );
406 } else {
407 push.call( ret, arr );
408 }
409 }
410
411 return ret;
412 },
413
414 inArray: function( elem, arr, i ) {
415 return arr == null ? -1 : indexOf.call( arr, elem, i );
416 },
417
418 // Support: Android <=4.0 only, PhantomJS 1 only
419 // push.apply(_, arraylike) throws on ancient WebKit
420 merge: function( first, second ) {
421 var len = +second.length,
422 j = 0,
423 i = first.length;
424
425 for ( ; j < len; j++ ) {
426 first[ i++ ] = second[ j ];
427 }
428
429 first.length = i;
430
431 return first;
432 },
433
434 grep: function( elems, callback, invert ) {
435 var callbackInverse,
436 matches = [],
437 i = 0,
438 length = elems.length,
439 callbackExpect = !invert;
440
441 // Go through the array, only saving the items
442 // that pass the validator function
443 for ( ; i < length; i++ ) {
444 callbackInverse = !callback( elems[ i ], i );
445 if ( callbackInverse !== callbackExpect ) {
446 matches.push( elems[ i ] );
447 }
448 }
449
450 return matches;
451 },
452
453 // arg is for internal usage only
454 map: function( elems, callback, arg ) {
455 var length, value,
456 i = 0,
457 ret = [];
458
459 // Go through the array, translating each of the items to their new values
460 if ( isArrayLike( elems ) ) {
461 length = elems.length;
462 for ( ; i < length; i++ ) {
463 value = callback( elems[ i ], i, arg );
464
465 if ( value != null ) {
466 ret.push( value );
467 }
468 }
469
470 // Go through every key on the object,
471 } else {
472 for ( i in elems ) {
473 value = callback( elems[ i ], i, arg );
474
475 if ( value != null ) {
476 ret.push( value );
477 }
478 }
479 }
480
481 // Flatten any nested arrays
482 return flat( ret );
483 },
484
485 // A global GUID counter for objects
486 guid: 1,
487
488 // jQuery.support is not used in Core but other projects attach their
489 // properties to it so it needs to exist.
490 support: support
491} );
492
493if ( typeof Symbol === "function" ) {
494 jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
495}
496
497// Populate the class2type map
498jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
499function( _i, name ) {
500 class2type[ "[object " + name + "]" ] = name.toLowerCase();
501} );
502
503function isArrayLike( obj ) {
504
505 // Support: real iOS 8.2 only (not reproducible in simulator)
506 // `in` check used to prevent JIT error (gh-2145)
507 // hasOwn isn't used here due to false negatives
508 // regarding Nodelist length in IE
509 var length = !!obj && "length" in obj && obj.length,
510 type = toType( obj );
511
512 if ( isFunction( obj ) || isWindow( obj ) ) {
513 return false;
514 }
515
516 return type === "array" || length === 0 ||
517 typeof length === "number" && length > 0 && ( length - 1 ) in obj;
518}
519var Sizzle =
520/*!
521 * Sizzle CSS Selector Engine v2.3.5
522 * https://sizzlejs.com/
523 *
524 * Copyright JS Foundation and other contributors
525 * Released under the MIT license
526 * https://js.foundation/
527 *
528 * Date: 2020-03-14
529 */
530( function( window ) {
531var i,
532 support,
533 Expr,
534 getText,
535 isXML,
536 tokenize,
537 compile,
538 select,
539 outermostContext,
540 sortInput,
541 hasDuplicate,
542
543 // Local document vars
544 setDocument,
545 document,
546 docElem,
547 documentIsHTML,
548 rbuggyQSA,
549 rbuggyMatches,
550 matches,
551 contains,
552
553 // Instance-specific data
554 expando = "sizzle" + 1 * new Date(),
555 preferredDoc = window.document,
556 dirruns = 0,
557 done = 0,
558 classCache = createCache(),
559 tokenCache = createCache(),
560 compilerCache = createCache(),
561 nonnativeSelectorCache = createCache(),
562 sortOrder = function( a, b ) {
563 if ( a === b ) {
564 hasDuplicate = true;
565 }
566 return 0;
567 },
568
569 // Instance methods
570 hasOwn = ( {} ).hasOwnProperty,
571 arr = [],
572 pop = arr.pop,
573 pushNative = arr.push,
574 push = arr.push,
575 slice = arr.slice,
576
577 // Use a stripped-down indexOf as it's faster than native
578 // https://jsperf.com/thor-indexof-vs-for/5
579 indexOf = function( list, elem ) {
580 var i = 0,
581 len = list.length;
582 for ( ; i < len; i++ ) {
583 if ( list[ i ] === elem ) {
584 return i;
585 }
586 }
587 return -1;
588 },
589
590 booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" +
591 "ismap|loop|multiple|open|readonly|required|scoped",
592
593 // Regular expressions
594
595 // http://www.w3.org/TR/css3-selectors/#whitespace
596 whitespace = "[\\x20\\t\\r\\n\\f]",
597
598 // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram
599 identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace +
600 "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",
601
602 // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
603 attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
604
605 // Operator (capture 2)
606 "*([*^$|!~]?=)" + whitespace +
607
608 // "Attribute values must be CSS identifiers [capture 5]
609 // or strings [capture 3 or capture 4]"
610 "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" +
611 whitespace + "*\\]",
612
613 pseudos = ":(" + identifier + ")(?:\\((" +
614
615 // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
616 // 1. quoted (capture 3; capture 4 or capture 5)
617 "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
618
619 // 2. simple (capture 6)
620 "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
621
622 // 3. anything else (capture 2)
623 ".*" +
624 ")\\)|)",
625
626 // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
627 rwhitespace = new RegExp( whitespace + "+", "g" ),
628 rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" +
629 whitespace + "+$", "g" ),
630
631 rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
632 rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace +
633 "*" ),
634 rdescend = new RegExp( whitespace + "|>" ),
635
636 rpseudo = new RegExp( pseudos ),
637 ridentifier = new RegExp( "^" + identifier + "$" ),
638
639 matchExpr = {
640 "ID": new RegExp( "^#(" + identifier + ")" ),
641 "CLASS": new RegExp( "^\\.(" + identifier + ")" ),
642 "TAG": new RegExp( "^(" + identifier + "|[*])" ),
643 "ATTR": new RegExp( "^" + attributes ),
644 "PSEUDO": new RegExp( "^" + pseudos ),
645 "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" +
646 whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" +
647 whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
648 "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
649
650 // For use in libraries implementing .is()
651 // We use this for POS matching in `select`
652 "needsContext": new RegExp( "^" + whitespace +
653 "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace +
654 "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
655 },
656
657 rhtml = /HTML$/i,
658 rinputs = /^(?:input|select|textarea|button)$/i,
659 rheader = /^h\d$/i,
660
661 rnative = /^[^{]+\{\s*\[native \w/,
662
663 // Easily-parseable/retrievable ID or TAG or CLASS selectors
664 rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
665
666 rsibling = /[+~]/,
667
668 // CSS escapes
669 // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
670 runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ),
671 funescape = function( escape, nonHex ) {
672 var high = "0x" + escape.slice( 1 ) - 0x10000;
673
674 return nonHex ?
675
676 // Strip the backslash prefix from a non-hex escape sequence
677 nonHex :
678
679 // Replace a hexadecimal escape sequence with the encoded Unicode code point
680 // Support: IE <=11+
681 // For values outside the Basic Multilingual Plane (BMP), manually construct a
682 // surrogate pair
683 high < 0 ?
684 String.fromCharCode( high + 0x10000 ) :
685 String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
686 },
687
688 // CSS string/identifier serialization
689 // https://drafts.csswg.org/cssom/#common-serializing-idioms
690 rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
691 fcssescape = function( ch, asCodePoint ) {
692 if ( asCodePoint ) {
693
694 // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
695 if ( ch === "\0" ) {
696 return "\uFFFD";
697 }
698
699 // Control characters and (dependent upon position) numbers get escaped as code points
700 return ch.slice( 0, -1 ) + "\\" +
701 ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
702 }
703
704 // Other potentially-special ASCII characters get backslash-escaped
705 return "\\" + ch;
706 },
707
708 // Used for iframes
709 // See setDocument()
710 // Removing the function wrapper causes a "Permission Denied"
711 // error in IE
712 unloadHandler = function() {
713 setDocument();
714 },
715
716 inDisabledFieldset = addCombinator(
717 function( elem ) {
718 return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset";
719 },
720 { dir: "parentNode", next: "legend" }
721 );
722
723// Optimize for push.apply( _, NodeList )
724try {
725 push.apply(
726 ( arr = slice.call( preferredDoc.childNodes ) ),
727 preferredDoc.childNodes
728 );
729
730 // Support: Android<4.0
731 // Detect silently failing push.apply
732 // eslint-disable-next-line no-unused-expressions
733 arr[ preferredDoc.childNodes.length ].nodeType;
734} catch ( e ) {
735 push = { apply: arr.length ?
736
737 // Leverage slice if possible
738 function( target, els ) {
739 pushNative.apply( target, slice.call( els ) );
740 } :
741
742 // Support: IE<9
743 // Otherwise append directly
744 function( target, els ) {
745 var j = target.length,
746 i = 0;
747
748 // Can't trust NodeList.length
749 while ( ( target[ j++ ] = els[ i++ ] ) ) {}
750 target.length = j - 1;
751 }
752 };
753}
754
755function Sizzle( selector, context, results, seed ) {
756 var m, i, elem, nid, match, groups, newSelector,
757 newContext = context && context.ownerDocument,
758
759 // nodeType defaults to 9, since context defaults to document
760 nodeType = context ? context.nodeType : 9;
761
762 results = results || [];
763
764 // Return early from calls with invalid selector or context
765 if ( typeof selector !== "string" || !selector ||
766 nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
767
768 return results;
769 }
770
771 // Try to shortcut find operations (as opposed to filters) in HTML documents
772 if ( !seed ) {
773 setDocument( context );
774 context = context || document;
775
776 if ( documentIsHTML ) {
777
778 // If the selector is sufficiently simple, try using a "get*By*" DOM method
779 // (excepting DocumentFragment context, where the methods don't exist)
780 if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {
781
782 // ID selector
783 if ( ( m = match[ 1 ] ) ) {
784
785 // Document context
786 if ( nodeType === 9 ) {
787 if ( ( elem = context.getElementById( m ) ) ) {
788
789 // Support: IE, Opera, Webkit
790 // TODO: identify versions
791 // getElementById can match elements by name instead of ID
792 if ( elem.id === m ) {
793 results.push( elem );
794 return results;
795 }
796 } else {
797 return results;
798 }
799
800 // Element context
801 } else {
802
803 // Support: IE, Opera, Webkit
804 // TODO: identify versions
805 // getElementById can match elements by name instead of ID
806 if ( newContext && ( elem = newContext.getElementById( m ) ) &&
807 contains( context, elem ) &&
808 elem.id === m ) {
809
810 results.push( elem );
811 return results;
812 }
813 }
814
815 // Type selector
816 } else if ( match[ 2 ] ) {
817 push.apply( results, context.getElementsByTagName( selector ) );
818 return results;
819
820 // Class selector
821 } else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&
822 context.getElementsByClassName ) {
823
824 push.apply( results, context.getElementsByClassName( m ) );
825 return results;
826 }
827 }
828
829 // Take advantage of querySelectorAll
830 if ( support.qsa &&
831 !nonnativeSelectorCache[ selector + " " ] &&
832 ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&
833
834 // Support: IE 8 only
835 // Exclude object elements
836 ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) {
837
838 newSelector = selector;
839 newContext = context;
840
841 // qSA considers elements outside a scoping root when evaluating child or
842 // descendant combinators, which is not what we want.
843 // In such cases, we work around the behavior by prefixing every selector in the
844 // list with an ID selector referencing the scope context.
845 // The technique has to be used as well when a leading combinator is used
846 // as such selectors are not recognized by querySelectorAll.
847 // Thanks to Andrew Dupont for this technique.
848 if ( nodeType === 1 &&
849 ( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {
850
851 // Expand context for sibling selectors
852 newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
853 context;
854
855 // We can use :scope instead of the ID hack if the browser
856 // supports it & if we're not changing the context.
857 if ( newContext !== context || !support.scope ) {
858
859 // Capture the context ID, setting it first if necessary
860 if ( ( nid = context.getAttribute( "id" ) ) ) {
861 nid = nid.replace( rcssescape, fcssescape );
862 } else {
863 context.setAttribute( "id", ( nid = expando ) );
864 }
865 }
866
867 // Prefix every selector in the list
868 groups = tokenize( selector );
869 i = groups.length;
870 while ( i-- ) {
871 groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " +
872 toSelector( groups[ i ] );
873 }
874 newSelector = groups.join( "," );
875 }
876
877 try {
878 push.apply( results,
879 newContext.querySelectorAll( newSelector )
880 );
881 return results;
882 } catch ( qsaError ) {
883 nonnativeSelectorCache( selector, true );
884 } finally {
885 if ( nid === expando ) {
886 context.removeAttribute( "id" );
887 }
888 }
889 }
890 }
891 }
892
893 // All others
894 return select( selector.replace( rtrim, "$1" ), context, results, seed );
895}
896
897/**
898 * Create key-value caches of limited size
899 * @returns {function(string, object)} Returns the Object data after storing it on itself with
900 * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
901 * deleting the oldest entry
902 */
903function createCache() {
904 var keys = [];
905
906 function cache( key, value ) {
907
908 // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
909 if ( keys.push( key + " " ) > Expr.cacheLength ) {
910
911 // Only keep the most recent entries
912 delete cache[ keys.shift() ];
913 }
914 return ( cache[ key + " " ] = value );
915 }
916 return cache;
917}
918
919/**
920 * Mark a function for special use by Sizzle
921 * @param {Function} fn The function to mark
922 */
923function markFunction( fn ) {
924 fn[ expando ] = true;
925 return fn;
926}
927
928/**
929 * Support testing using an element
930 * @param {Function} fn Passed the created element and returns a boolean result
931 */
932function assert( fn ) {
933 var el = document.createElement( "fieldset" );
934
935 try {
936 return !!fn( el );
937 } catch ( e ) {
938 return false;
939 } finally {
940
941 // Remove from its parent by default
942 if ( el.parentNode ) {
943 el.parentNode.removeChild( el );
944 }
945
946 // release memory in IE
947 el = null;
948 }
949}
950
951/**
952 * Adds the same handler for all of the specified attrs
953 * @param {String} attrs Pipe-separated list of attributes
954 * @param {Function} handler The method that will be applied
955 */
956function addHandle( attrs, handler ) {
957 var arr = attrs.split( "|" ),
958 i = arr.length;
959
960 while ( i-- ) {
961 Expr.attrHandle[ arr[ i ] ] = handler;
962 }
963}
964
965/**
966 * Checks document order of two siblings
967 * @param {Element} a
968 * @param {Element} b
969 * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
970 */
971function siblingCheck( a, b ) {
972 var cur = b && a,
973 diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
974 a.sourceIndex - b.sourceIndex;
975
976 // Use IE sourceIndex if available on both nodes
977 if ( diff ) {
978 return diff;
979 }
980
981 // Check if b follows a
982 if ( cur ) {
983 while ( ( cur = cur.nextSibling ) ) {
984 if ( cur === b ) {
985 return -1;
986 }
987 }
988 }
989
990 return a ? 1 : -1;
991}
992
993/**
994 * Returns a function to use in pseudos for input types
995 * @param {String} type
996 */
997function createInputPseudo( type ) {
998 return function( elem ) {
999 var name = elem.nodeName.toLowerCase();
1000 return name === "input" && elem.type === type;
1001 };
1002}
1003
1004/**
1005 * Returns a function to use in pseudos for buttons
1006 * @param {String} type
1007 */
1008function createButtonPseudo( type ) {
1009 return function( elem ) {
1010 var name = elem.nodeName.toLowerCase();
1011 return ( name === "input" || name === "button" ) && elem.type === type;
1012 };
1013}
1014
1015/**
1016 * Returns a function to use in pseudos for :enabled/:disabled
1017 * @param {Boolean} disabled true for :disabled; false for :enabled
1018 */
1019function createDisabledPseudo( disabled ) {
1020
1021 // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
1022 return function( elem ) {
1023
1024 // Only certain elements can match :enabled or :disabled
1025 // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
1026 // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
1027 if ( "form" in elem ) {
1028
1029 // Check for inherited disabledness on relevant non-disabled elements:
1030 // * listed form-associated elements in a disabled fieldset
1031 // https://html.spec.whatwg.org/multipage/forms.html#category-listed
1032 // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
1033 // * option elements in a disabled optgroup
1034 // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
1035 // All such elements have a "form" property.
1036 if ( elem.parentNode && elem.disabled === false ) {
1037
1038 // Option elements defer to a parent optgroup if present
1039 if ( "label" in elem ) {
1040 if ( "label" in elem.parentNode ) {
1041 return elem.parentNode.disabled === disabled;
1042 } else {
1043 return elem.disabled === disabled;
1044 }
1045 }
1046
1047 // Support: IE 6 - 11
1048 // Use the isDisabled shortcut property to check for disabled fieldset ancestors
1049 return elem.isDisabled === disabled ||
1050
1051 // Where there is no isDisabled, check manually
1052 /* jshint -W018 */
1053 elem.isDisabled !== !disabled &&
1054 inDisabledFieldset( elem ) === disabled;
1055 }
1056
1057 return elem.disabled === disabled;
1058
1059 // Try to winnow out elements that can't be disabled before trusting the disabled property.
1060 // Some victims get caught in our net (label, legend, menu, track), but it shouldn't
1061 // even exist on them, let alone have a boolean value.
1062 } else if ( "label" in elem ) {
1063 return elem.disabled === disabled;
1064 }
1065
1066 // Remaining elements are neither :enabled nor :disabled
1067 return false;
1068 };
1069}
1070
1071/**
1072 * Returns a function to use in pseudos for positionals
1073 * @param {Function} fn
1074 */
1075function createPositionalPseudo( fn ) {
1076 return markFunction( function( argument ) {
1077 argument = +argument;
1078 return markFunction( function( seed, matches ) {
1079 var j,
1080 matchIndexes = fn( [], seed.length, argument ),
1081 i = matchIndexes.length;
1082
1083 // Match elements found at the specified indexes
1084 while ( i-- ) {
1085 if ( seed[ ( j = matchIndexes[ i ] ) ] ) {
1086 seed[ j ] = !( matches[ j ] = seed[ j ] );
1087 }
1088 }
1089 } );
1090 } );
1091}
1092
1093/**
1094 * Checks a node for validity as a Sizzle context
1095 * @param {Element|Object=} context
1096 * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
1097 */
1098function testContext( context ) {
1099 return context && typeof context.getElementsByTagName !== "undefined" && context;
1100}
1101
1102// Expose support vars for convenience
1103support = Sizzle.support = {};
1104
1105/**
1106 * Detects XML nodes
1107 * @param {Element|Object} elem An element or a document
1108 * @returns {Boolean} True iff elem is a non-HTML XML node
1109 */
1110isXML = Sizzle.isXML = function( elem ) {
1111 var namespace = elem.namespaceURI,
1112 docElem = ( elem.ownerDocument || elem ).documentElement;
1113
1114 // Support: IE <=8
1115 // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes
1116 // https://bugs.jquery.com/ticket/4833
1117 return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" );
1118};
1119
1120/**
1121 * Sets document-related variables once based on the current document
1122 * @param {Element|Object} [doc] An element or document object to use to set the document
1123 * @returns {Object} Returns the current document
1124 */
1125setDocument = Sizzle.setDocument = function( node ) {
1126 var hasCompare, subWindow,
1127 doc = node ? node.ownerDocument || node : preferredDoc;
1128
1129 // Return early if doc is invalid or already selected
1130 // Support: IE 11+, Edge 17 - 18+
1131 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1132 // two documents; shallow comparisons work.
1133 // eslint-disable-next-line eqeqeq
1134 if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {
1135 return document;
1136 }
1137
1138 // Update global variables
1139 document = doc;
1140 docElem = document.documentElement;
1141 documentIsHTML = !isXML( document );
1142
1143 // Support: IE 9 - 11+, Edge 12 - 18+
1144 // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
1145 // Support: IE 11+, Edge 17 - 18+
1146 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1147 // two documents; shallow comparisons work.
1148 // eslint-disable-next-line eqeqeq
1149 if ( preferredDoc != document &&
1150 ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {
1151
1152 // Support: IE 11, Edge
1153 if ( subWindow.addEventListener ) {
1154 subWindow.addEventListener( "unload", unloadHandler, false );
1155
1156 // Support: IE 9 - 10 only
1157 } else if ( subWindow.attachEvent ) {
1158 subWindow.attachEvent( "onunload", unloadHandler );
1159 }
1160 }
1161
1162 // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,
1163 // Safari 4 - 5 only, Opera <=11.6 - 12.x only
1164 // IE/Edge & older browsers don't support the :scope pseudo-class.
1165 // Support: Safari 6.0 only
1166 // Safari 6.0 supports :scope but it's an alias of :root there.
1167 support.scope = assert( function( el ) {
1168 docElem.appendChild( el ).appendChild( document.createElement( "div" ) );
1169 return typeof el.querySelectorAll !== "undefined" &&
1170 !el.querySelectorAll( ":scope fieldset div" ).length;
1171 } );
1172
1173 /* Attributes
1174 ---------------------------------------------------------------------- */
1175
1176 // Support: IE<8
1177 // Verify that getAttribute really returns attributes and not properties
1178 // (excepting IE8 booleans)
1179 support.attributes = assert( function( el ) {
1180 el.className = "i";
1181 return !el.getAttribute( "className" );
1182 } );
1183
1184 /* getElement(s)By*
1185 ---------------------------------------------------------------------- */
1186
1187 // Check if getElementsByTagName("*") returns only elements
1188 support.getElementsByTagName = assert( function( el ) {
1189 el.appendChild( document.createComment( "" ) );
1190 return !el.getElementsByTagName( "*" ).length;
1191 } );
1192
1193 // Support: IE<9
1194 support.getElementsByClassName = rnative.test( document.getElementsByClassName );
1195
1196 // Support: IE<10
1197 // Check if getElementById returns elements by name
1198 // The broken getElementById methods don't pick up programmatically-set names,
1199 // so use a roundabout getElementsByName test
1200 support.getById = assert( function( el ) {
1201 docElem.appendChild( el ).id = expando;
1202 return !document.getElementsByName || !document.getElementsByName( expando ).length;
1203 } );
1204
1205 // ID filter and find
1206 if ( support.getById ) {
1207 Expr.filter[ "ID" ] = function( id ) {
1208 var attrId = id.replace( runescape, funescape );
1209 return function( elem ) {
1210 return elem.getAttribute( "id" ) === attrId;
1211 };
1212 };
1213 Expr.find[ "ID" ] = function( id, context ) {
1214 if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
1215 var elem = context.getElementById( id );
1216 return elem ? [ elem ] : [];
1217 }
1218 };
1219 } else {
1220 Expr.filter[ "ID" ] = function( id ) {
1221 var attrId = id.replace( runescape, funescape );
1222 return function( elem ) {
1223 var node = typeof elem.getAttributeNode !== "undefined" &&
1224 elem.getAttributeNode( "id" );
1225 return node && node.value === attrId;
1226 };
1227 };
1228
1229 // Support: IE 6 - 7 only
1230 // getElementById is not reliable as a find shortcut
1231 Expr.find[ "ID" ] = function( id, context ) {
1232 if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
1233 var node, i, elems,
1234 elem = context.getElementById( id );
1235
1236 if ( elem ) {
1237
1238 // Verify the id attribute
1239 node = elem.getAttributeNode( "id" );
1240 if ( node && node.value === id ) {
1241 return [ elem ];
1242 }
1243
1244 // Fall back on getElementsByName
1245 elems = context.getElementsByName( id );
1246 i = 0;
1247 while ( ( elem = elems[ i++ ] ) ) {
1248 node = elem.getAttributeNode( "id" );
1249 if ( node && node.value === id ) {
1250 return [ elem ];
1251 }
1252 }
1253 }
1254
1255 return [];
1256 }
1257 };
1258 }
1259
1260 // Tag
1261 Expr.find[ "TAG" ] = support.getElementsByTagName ?
1262 function( tag, context ) {
1263 if ( typeof context.getElementsByTagName !== "undefined" ) {
1264 return context.getElementsByTagName( tag );
1265
1266 // DocumentFragment nodes don't have gEBTN
1267 } else if ( support.qsa ) {
1268 return context.querySelectorAll( tag );
1269 }
1270 } :
1271
1272 function( tag, context ) {
1273 var elem,
1274 tmp = [],
1275 i = 0,
1276
1277 // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
1278 results = context.getElementsByTagName( tag );
1279
1280 // Filter out possible comments
1281 if ( tag === "*" ) {
1282 while ( ( elem = results[ i++ ] ) ) {
1283 if ( elem.nodeType === 1 ) {
1284 tmp.push( elem );
1285 }
1286 }
1287
1288 return tmp;
1289 }
1290 return results;
1291 };
1292
1293 // Class
1294 Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) {
1295 if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
1296 return context.getElementsByClassName( className );
1297 }
1298 };
1299
1300 /* QSA/matchesSelector
1301 ---------------------------------------------------------------------- */
1302
1303 // QSA and matchesSelector support
1304
1305 // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
1306 rbuggyMatches = [];
1307
1308 // qSa(:focus) reports false when true (Chrome 21)
1309 // We allow this because of a bug in IE8/9 that throws an error
1310 // whenever `document.activeElement` is accessed on an iframe
1311 // So, we allow :focus to pass through QSA all the time to avoid the IE error
1312 // See https://bugs.jquery.com/ticket/13378
1313 rbuggyQSA = [];
1314
1315 if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {
1316
1317 // Build QSA regex
1318 // Regex strategy adopted from Diego Perini
1319 assert( function( el ) {
1320
1321 var input;
1322
1323 // Select is set to empty string on purpose
1324 // This is to test IE's treatment of not explicitly
1325 // setting a boolean content attribute,
1326 // since its presence should be enough
1327 // https://bugs.jquery.com/ticket/12359
1328 docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +
1329 "<select id='" + expando + "-\r\\' msallowcapture=''>" +
1330 "<option selected=''></option></select>";
1331
1332 // Support: IE8, Opera 11-12.16
1333 // Nothing should be selected when empty strings follow ^= or $= or *=
1334 // The test attribute must be unknown in Opera but "safe" for WinRT
1335 // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
1336 if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) {
1337 rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
1338 }
1339
1340 // Support: IE8
1341 // Boolean attributes and "value" are not treated correctly
1342 if ( !el.querySelectorAll( "[selected]" ).length ) {
1343 rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
1344 }
1345
1346 // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
1347 if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
1348 rbuggyQSA.push( "~=" );
1349 }
1350
1351 // Support: IE 11+, Edge 15 - 18+
1352 // IE 11/Edge don't find elements on a `[name='']` query in some cases.
1353 // Adding a temporary attribute to the document before the selection works
1354 // around the issue.
1355 // Interestingly, IE 10 & older don't seem to have the issue.
1356 input = document.createElement( "input" );
1357 input.setAttribute( "name", "" );
1358 el.appendChild( input );
1359 if ( !el.querySelectorAll( "[name='']" ).length ) {
1360 rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" +
1361 whitespace + "*(?:''|\"\")" );
1362 }
1363
1364 // Webkit/Opera - :checked should return selected option elements
1365 // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
1366 // IE8 throws error here and will not see later tests
1367 if ( !el.querySelectorAll( ":checked" ).length ) {
1368 rbuggyQSA.push( ":checked" );
1369 }
1370
1371 // Support: Safari 8+, iOS 8+
1372 // https://bugs.webkit.org/show_bug.cgi?id=136851
1373 // In-page `selector#id sibling-combinator selector` fails
1374 if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
1375 rbuggyQSA.push( ".#.+[+~]" );
1376 }
1377
1378 // Support: Firefox <=3.6 - 5 only
1379 // Old Firefox doesn't throw on a badly-escaped identifier.
1380 el.querySelectorAll( "\\\f" );
1381 rbuggyQSA.push( "[\\r\\n\\f]" );
1382 } );
1383
1384 assert( function( el ) {
1385 el.innerHTML = "<a href='' disabled='disabled'></a>" +
1386 "<select disabled='disabled'><option/></select>";
1387
1388 // Support: Windows 8 Native Apps
1389 // The type and name attributes are restricted during .innerHTML assignment
1390 var input = document.createElement( "input" );
1391 input.setAttribute( "type", "hidden" );
1392 el.appendChild( input ).setAttribute( "name", "D" );
1393
1394 // Support: IE8
1395 // Enforce case-sensitivity of name attribute
1396 if ( el.querySelectorAll( "[name=d]" ).length ) {
1397 rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
1398 }
1399
1400 // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
1401 // IE8 throws error here and will not see later tests
1402 if ( el.querySelectorAll( ":enabled" ).length !== 2 ) {
1403 rbuggyQSA.push( ":enabled", ":disabled" );
1404 }
1405
1406 // Support: IE9-11+
1407 // IE's :disabled selector does not pick up the children of disabled fieldsets
1408 docElem.appendChild( el ).disabled = true;
1409 if ( el.querySelectorAll( ":disabled" ).length !== 2 ) {
1410 rbuggyQSA.push( ":enabled", ":disabled" );
1411 }
1412
1413 // Support: Opera 10 - 11 only
1414 // Opera 10-11 does not throw on post-comma invalid pseudos
1415 el.querySelectorAll( "*,:x" );
1416 rbuggyQSA.push( ",.*:" );
1417 } );
1418 }
1419
1420 if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||
1421 docElem.webkitMatchesSelector ||
1422 docElem.mozMatchesSelector ||
1423 docElem.oMatchesSelector ||
1424 docElem.msMatchesSelector ) ) ) ) {
1425
1426 assert( function( el ) {
1427
1428 // Check to see if it's possible to do matchesSelector
1429 // on a disconnected node (IE 9)
1430 support.disconnectedMatch = matches.call( el, "*" );
1431
1432 // This should fail with an exception
1433 // Gecko does not error, returns false instead
1434 matches.call( el, "[s!='']:x" );
1435 rbuggyMatches.push( "!=", pseudos );
1436 } );
1437 }
1438
1439 rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) );
1440 rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) );
1441
1442 /* Contains
1443 ---------------------------------------------------------------------- */
1444 hasCompare = rnative.test( docElem.compareDocumentPosition );
1445
1446 // Element contains another
1447 // Purposefully self-exclusive
1448 // As in, an element does not contain itself
1449 contains = hasCompare || rnative.test( docElem.contains ) ?
1450 function( a, b ) {
1451 var adown = a.nodeType === 9 ? a.documentElement : a,
1452 bup = b && b.parentNode;
1453 return a === bup || !!( bup && bup.nodeType === 1 && (
1454 adown.contains ?
1455 adown.contains( bup ) :
1456 a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
1457 ) );
1458 } :
1459 function( a, b ) {
1460 if ( b ) {
1461 while ( ( b = b.parentNode ) ) {
1462 if ( b === a ) {
1463 return true;
1464 }
1465 }
1466 }
1467 return false;
1468 };
1469
1470 /* Sorting
1471 ---------------------------------------------------------------------- */
1472
1473 // Document order sorting
1474 sortOrder = hasCompare ?
1475 function( a, b ) {
1476
1477 // Flag for duplicate removal
1478 if ( a === b ) {
1479 hasDuplicate = true;
1480 return 0;
1481 }
1482
1483 // Sort on method existence if only one input has compareDocumentPosition
1484 var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
1485 if ( compare ) {
1486 return compare;
1487 }
1488
1489 // Calculate position if both inputs belong to the same document
1490 // Support: IE 11+, Edge 17 - 18+
1491 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1492 // two documents; shallow comparisons work.
1493 // eslint-disable-next-line eqeqeq
1494 compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?
1495 a.compareDocumentPosition( b ) :
1496
1497 // Otherwise we know they are disconnected
1498 1;
1499
1500 // Disconnected nodes
1501 if ( compare & 1 ||
1502 ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {
1503
1504 // Choose the first element that is related to our preferred document
1505 // Support: IE 11+, Edge 17 - 18+
1506 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1507 // two documents; shallow comparisons work.
1508 // eslint-disable-next-line eqeqeq
1509 if ( a == document || a.ownerDocument == preferredDoc &&
1510 contains( preferredDoc, a ) ) {
1511 return -1;
1512 }
1513
1514 // Support: IE 11+, Edge 17 - 18+
1515 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1516 // two documents; shallow comparisons work.
1517 // eslint-disable-next-line eqeqeq
1518 if ( b == document || b.ownerDocument == preferredDoc &&
1519 contains( preferredDoc, b ) ) {
1520 return 1;
1521 }
1522
1523 // Maintain original order
1524 return sortInput ?
1525 ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
1526 0;
1527 }
1528
1529 return compare & 4 ? -1 : 1;
1530 } :
1531 function( a, b ) {
1532
1533 // Exit early if the nodes are identical
1534 if ( a === b ) {
1535 hasDuplicate = true;
1536 return 0;
1537 }
1538
1539 var cur,
1540 i = 0,
1541 aup = a.parentNode,
1542 bup = b.parentNode,
1543 ap = [ a ],
1544 bp = [ b ];
1545
1546 // Parentless nodes are either documents or disconnected
1547 if ( !aup || !bup ) {
1548
1549 // Support: IE 11+, Edge 17 - 18+
1550 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1551 // two documents; shallow comparisons work.
1552 /* eslint-disable eqeqeq */
1553 return a == document ? -1 :
1554 b == document ? 1 :
1555 /* eslint-enable eqeqeq */
1556 aup ? -1 :
1557 bup ? 1 :
1558 sortInput ?
1559 ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
1560 0;
1561
1562 // If the nodes are siblings, we can do a quick check
1563 } else if ( aup === bup ) {
1564 return siblingCheck( a, b );
1565 }
1566
1567 // Otherwise we need full lists of their ancestors for comparison
1568 cur = a;
1569 while ( ( cur = cur.parentNode ) ) {
1570 ap.unshift( cur );
1571 }
1572 cur = b;
1573 while ( ( cur = cur.parentNode ) ) {
1574 bp.unshift( cur );
1575 }
1576
1577 // Walk down the tree looking for a discrepancy
1578 while ( ap[ i ] === bp[ i ] ) {
1579 i++;
1580 }
1581
1582 return i ?
1583
1584 // Do a sibling check if the nodes have a common ancestor
1585 siblingCheck( ap[ i ], bp[ i ] ) :
1586
1587 // Otherwise nodes in our document sort first
1588 // Support: IE 11+, Edge 17 - 18+
1589 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1590 // two documents; shallow comparisons work.
1591 /* eslint-disable eqeqeq */
1592 ap[ i ] == preferredDoc ? -1 :
1593 bp[ i ] == preferredDoc ? 1 :
1594 /* eslint-enable eqeqeq */
1595 0;
1596 };
1597
1598 return document;
1599};
1600
1601Sizzle.matches = function( expr, elements ) {
1602 return Sizzle( expr, null, null, elements );
1603};
1604
1605Sizzle.matchesSelector = function( elem, expr ) {
1606 setDocument( elem );
1607
1608 if ( support.matchesSelector && documentIsHTML &&
1609 !nonnativeSelectorCache[ expr + " " ] &&
1610 ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
1611 ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
1612
1613 try {
1614 var ret = matches.call( elem, expr );
1615
1616 // IE 9's matchesSelector returns false on disconnected nodes
1617 if ( ret || support.disconnectedMatch ||
1618
1619 // As well, disconnected nodes are said to be in a document
1620 // fragment in IE 9
1621 elem.document && elem.document.nodeType !== 11 ) {
1622 return ret;
1623 }
1624 } catch ( e ) {
1625 nonnativeSelectorCache( expr, true );
1626 }
1627 }
1628
1629 return Sizzle( expr, document, null, [ elem ] ).length > 0;
1630};
1631
1632Sizzle.contains = function( context, elem ) {
1633
1634 // Set document vars if needed
1635 // Support: IE 11+, Edge 17 - 18+
1636 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1637 // two documents; shallow comparisons work.
1638 // eslint-disable-next-line eqeqeq
1639 if ( ( context.ownerDocument || context ) != document ) {
1640 setDocument( context );
1641 }
1642 return contains( context, elem );
1643};
1644
1645Sizzle.attr = function( elem, name ) {
1646
1647 // Set document vars if needed
1648 // Support: IE 11+, Edge 17 - 18+
1649 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1650 // two documents; shallow comparisons work.
1651 // eslint-disable-next-line eqeqeq
1652 if ( ( elem.ownerDocument || elem ) != document ) {
1653 setDocument( elem );
1654 }
1655
1656 var fn = Expr.attrHandle[ name.toLowerCase() ],
1657
1658 // Don't get fooled by Object.prototype properties (jQuery #13807)
1659 val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
1660 fn( elem, name, !documentIsHTML ) :
1661 undefined;
1662
1663 return val !== undefined ?
1664 val :
1665 support.attributes || !documentIsHTML ?
1666 elem.getAttribute( name ) :
1667 ( val = elem.getAttributeNode( name ) ) && val.specified ?
1668 val.value :
1669 null;
1670};
1671
1672Sizzle.escape = function( sel ) {
1673 return ( sel + "" ).replace( rcssescape, fcssescape );
1674};
1675
1676Sizzle.error = function( msg ) {
1677 throw new Error( "Syntax error, unrecognized expression: " + msg );
1678};
1679
1680/**
1681 * Document sorting and removing duplicates
1682 * @param {ArrayLike} results
1683 */
1684Sizzle.uniqueSort = function( results ) {
1685 var elem,
1686 duplicates = [],
1687 j = 0,
1688 i = 0;
1689
1690 // Unless we *know* we can detect duplicates, assume their presence
1691 hasDuplicate = !support.detectDuplicates;
1692 sortInput = !support.sortStable && results.slice( 0 );
1693 results.sort( sortOrder );
1694
1695 if ( hasDuplicate ) {
1696 while ( ( elem = results[ i++ ] ) ) {
1697 if ( elem === results[ i ] ) {
1698 j = duplicates.push( i );
1699 }
1700 }
1701 while ( j-- ) {
1702 results.splice( duplicates[ j ], 1 );
1703 }
1704 }
1705
1706 // Clear input after sorting to release objects
1707 // See https://github.com/jquery/sizzle/pull/225
1708 sortInput = null;
1709
1710 return results;
1711};
1712
1713/**
1714 * Utility function for retrieving the text value of an array of DOM nodes
1715 * @param {Array|Element} elem
1716 */
1717getText = Sizzle.getText = function( elem ) {
1718 var node,
1719 ret = "",
1720 i = 0,
1721 nodeType = elem.nodeType;
1722
1723 if ( !nodeType ) {
1724
1725 // If no nodeType, this is expected to be an array
1726 while ( ( node = elem[ i++ ] ) ) {
1727
1728 // Do not traverse comment nodes
1729 ret += getText( node );
1730 }
1731 } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
1732
1733 // Use textContent for elements
1734 // innerText usage removed for consistency of new lines (jQuery #11153)
1735 if ( typeof elem.textContent === "string" ) {
1736 return elem.textContent;
1737 } else {
1738
1739 // Traverse its children
1740 for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
1741 ret += getText( elem );
1742 }
1743 }
1744 } else if ( nodeType === 3 || nodeType === 4 ) {
1745 return elem.nodeValue;
1746 }
1747
1748 // Do not include comment or processing instruction nodes
1749
1750 return ret;
1751};
1752
1753Expr = Sizzle.selectors = {
1754
1755 // Can be adjusted by the user
1756 cacheLength: 50,
1757
1758 createPseudo: markFunction,
1759
1760 match: matchExpr,
1761
1762 attrHandle: {},
1763
1764 find: {},
1765
1766 relative: {
1767 ">": { dir: "parentNode", first: true },
1768 " ": { dir: "parentNode" },
1769 "+": { dir: "previousSibling", first: true },
1770 "~": { dir: "previousSibling" }
1771 },
1772
1773 preFilter: {
1774 "ATTR": function( match ) {
1775 match[ 1 ] = match[ 1 ].replace( runescape, funescape );
1776
1777 // Move the given value to match[3] whether quoted or unquoted
1778 match[ 3 ] = ( match[ 3 ] || match[ 4 ] ||
1779 match[ 5 ] || "" ).replace( runescape, funescape );
1780
1781 if ( match[ 2 ] === "~=" ) {
1782 match[ 3 ] = " " + match[ 3 ] + " ";
1783 }
1784
1785 return match.slice( 0, 4 );
1786 },
1787
1788 "CHILD": function( match ) {
1789
1790 /* matches from matchExpr["CHILD"]
1791 1 type (only|nth|...)
1792 2 what (child|of-type)
1793 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
1794 4 xn-component of xn+y argument ([+-]?\d*n|)
1795 5 sign of xn-component
1796 6 x of xn-component
1797 7 sign of y-component
1798 8 y of y-component
1799 */
1800 match[ 1 ] = match[ 1 ].toLowerCase();
1801
1802 if ( match[ 1 ].slice( 0, 3 ) === "nth" ) {
1803
1804 // nth-* requires argument
1805 if ( !match[ 3 ] ) {
1806 Sizzle.error( match[ 0 ] );
1807 }
1808
1809 // numeric x and y parameters for Expr.filter.CHILD
1810 // remember that false/true cast respectively to 0/1
1811 match[ 4 ] = +( match[ 4 ] ?
1812 match[ 5 ] + ( match[ 6 ] || 1 ) :
1813 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) );
1814 match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" );
1815
1816 // other types prohibit arguments
1817 } else if ( match[ 3 ] ) {
1818 Sizzle.error( match[ 0 ] );
1819 }
1820
1821 return match;
1822 },
1823
1824 "PSEUDO": function( match ) {
1825 var excess,
1826 unquoted = !match[ 6 ] && match[ 2 ];
1827
1828 if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) {
1829 return null;
1830 }
1831
1832 // Accept quoted arguments as-is
1833 if ( match[ 3 ] ) {
1834 match[ 2 ] = match[ 4 ] || match[ 5 ] || "";
1835
1836 // Strip excess characters from unquoted arguments
1837 } else if ( unquoted && rpseudo.test( unquoted ) &&
1838
1839 // Get excess from tokenize (recursively)
1840 ( excess = tokenize( unquoted, true ) ) &&
1841
1842 // advance to the next closing parenthesis
1843 ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) {
1844
1845 // excess is a negative index
1846 match[ 0 ] = match[ 0 ].slice( 0, excess );
1847 match[ 2 ] = unquoted.slice( 0, excess );
1848 }
1849
1850 // Return only captures needed by the pseudo filter method (type and argument)
1851 return match.slice( 0, 3 );
1852 }
1853 },
1854
1855 filter: {
1856
1857 "TAG": function( nodeNameSelector ) {
1858 var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
1859 return nodeNameSelector === "*" ?
1860 function() {
1861 return true;
1862 } :
1863 function( elem ) {
1864 return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
1865 };
1866 },
1867
1868 "CLASS": function( className ) {
1869 var pattern = classCache[ className + " " ];
1870
1871 return pattern ||
1872 ( pattern = new RegExp( "(^|" + whitespace +
1873 ")" + className + "(" + whitespace + "|$)" ) ) && classCache(
1874 className, function( elem ) {
1875 return pattern.test(
1876 typeof elem.className === "string" && elem.className ||
1877 typeof elem.getAttribute !== "undefined" &&
1878 elem.getAttribute( "class" ) ||
1879 ""
1880 );
1881 } );
1882 },
1883
1884 "ATTR": function( name, operator, check ) {
1885 return function( elem ) {
1886 var result = Sizzle.attr( elem, name );
1887
1888 if ( result == null ) {
1889 return operator === "!=";
1890 }
1891 if ( !operator ) {
1892 return true;
1893 }
1894
1895 result += "";
1896
1897 /* eslint-disable max-len */
1898
1899 return operator === "=" ? result === check :
1900 operator === "!=" ? result !== check :
1901 operator === "^=" ? check && result.indexOf( check ) === 0 :
1902 operator === "*=" ? check && result.indexOf( check ) > -1 :
1903 operator === "$=" ? check && result.slice( -check.length ) === check :
1904 operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
1905 operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
1906 false;
1907 /* eslint-enable max-len */
1908
1909 };
1910 },
1911
1912 "CHILD": function( type, what, _argument, first, last ) {
1913 var simple = type.slice( 0, 3 ) !== "nth",
1914 forward = type.slice( -4 ) !== "last",
1915 ofType = what === "of-type";
1916
1917 return first === 1 && last === 0 ?
1918
1919 // Shortcut for :nth-*(n)
1920 function( elem ) {
1921 return !!elem.parentNode;
1922 } :
1923
1924 function( elem, _context, xml ) {
1925 var cache, uniqueCache, outerCache, node, nodeIndex, start,
1926 dir = simple !== forward ? "nextSibling" : "previousSibling",
1927 parent = elem.parentNode,
1928 name = ofType && elem.nodeName.toLowerCase(),
1929 useCache = !xml && !ofType,
1930 diff = false;
1931
1932 if ( parent ) {
1933
1934 // :(first|last|only)-(child|of-type)
1935 if ( simple ) {
1936 while ( dir ) {
1937 node = elem;
1938 while ( ( node = node[ dir ] ) ) {
1939 if ( ofType ?
1940 node.nodeName.toLowerCase() === name :
1941 node.nodeType === 1 ) {
1942
1943 return false;
1944 }
1945 }
1946
1947 // Reverse direction for :only-* (if we haven't yet done so)
1948 start = dir = type === "only" && !start && "nextSibling";
1949 }
1950 return true;
1951 }
1952
1953 start = [ forward ? parent.firstChild : parent.lastChild ];
1954
1955 // non-xml :nth-child(...) stores cache data on `parent`
1956 if ( forward && useCache ) {
1957
1958 // Seek `elem` from a previously-cached index
1959
1960 // ...in a gzip-friendly way
1961 node = parent;
1962 outerCache = node[ expando ] || ( node[ expando ] = {} );
1963
1964 // Support: IE <9 only
1965 // Defend against cloned attroperties (jQuery gh-1709)
1966 uniqueCache = outerCache[ node.uniqueID ] ||
1967 ( outerCache[ node.uniqueID ] = {} );
1968
1969 cache = uniqueCache[ type ] || [];
1970 nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
1971 diff = nodeIndex && cache[ 2 ];
1972 node = nodeIndex && parent.childNodes[ nodeIndex ];
1973
1974 while ( ( node = ++nodeIndex && node && node[ dir ] ||
1975
1976 // Fallback to seeking `elem` from the start
1977 ( diff = nodeIndex = 0 ) || start.pop() ) ) {
1978
1979 // When found, cache indexes on `parent` and break
1980 if ( node.nodeType === 1 && ++diff && node === elem ) {
1981 uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
1982 break;
1983 }
1984 }
1985
1986 } else {
1987
1988 // Use previously-cached element index if available
1989 if ( useCache ) {
1990
1991 // ...in a gzip-friendly way
1992 node = elem;
1993 outerCache = node[ expando ] || ( node[ expando ] = {} );
1994
1995 // Support: IE <9 only
1996 // Defend against cloned attroperties (jQuery gh-1709)
1997 uniqueCache = outerCache[ node.uniqueID ] ||
1998 ( outerCache[ node.uniqueID ] = {} );
1999
2000 cache = uniqueCache[ type ] || [];
2001 nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
2002 diff = nodeIndex;
2003 }
2004
2005 // xml :nth-child(...)
2006 // or :nth-last-child(...) or :nth(-last)?-of-type(...)
2007 if ( diff === false ) {
2008
2009 // Use the same loop as above to seek `elem` from the start
2010 while ( ( node = ++nodeIndex && node && node[ dir ] ||
2011 ( diff = nodeIndex = 0 ) || start.pop() ) ) {
2012
2013 if ( ( ofType ?
2014 node.nodeName.toLowerCase() === name :
2015 node.nodeType === 1 ) &&
2016 ++diff ) {
2017
2018 // Cache the index of each encountered element
2019 if ( useCache ) {
2020 outerCache = node[ expando ] ||
2021 ( node[ expando ] = {} );
2022
2023 // Support: IE <9 only
2024 // Defend against cloned attroperties (jQuery gh-1709)
2025 uniqueCache = outerCache[ node.uniqueID ] ||
2026 ( outerCache[ node.uniqueID ] = {} );
2027
2028 uniqueCache[ type ] = [ dirruns, diff ];
2029 }
2030
2031 if ( node === elem ) {
2032 break;
2033 }
2034 }
2035 }
2036 }
2037 }
2038
2039 // Incorporate the offset, then check against cycle size
2040 diff -= last;
2041 return diff === first || ( diff % first === 0 && diff / first >= 0 );
2042 }
2043 };
2044 },
2045
2046 "PSEUDO": function( pseudo, argument ) {
2047
2048 // pseudo-class names are case-insensitive
2049 // http://www.w3.org/TR/selectors/#pseudo-classes
2050 // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
2051 // Remember that setFilters inherits from pseudos
2052 var args,
2053 fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
2054 Sizzle.error( "unsupported pseudo: " + pseudo );
2055
2056 // The user may use createPseudo to indicate that
2057 // arguments are needed to create the filter function
2058 // just as Sizzle does
2059 if ( fn[ expando ] ) {
2060 return fn( argument );
2061 }
2062
2063 // But maintain support for old signatures
2064 if ( fn.length > 1 ) {
2065 args = [ pseudo, pseudo, "", argument ];
2066 return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
2067 markFunction( function( seed, matches ) {
2068 var idx,
2069 matched = fn( seed, argument ),
2070 i = matched.length;
2071 while ( i-- ) {
2072 idx = indexOf( seed, matched[ i ] );
2073 seed[ idx ] = !( matches[ idx ] = matched[ i ] );
2074 }
2075 } ) :
2076 function( elem ) {
2077 return fn( elem, 0, args );
2078 };
2079 }
2080
2081 return fn;
2082 }
2083 },
2084
2085 pseudos: {
2086
2087 // Potentially complex pseudos
2088 "not": markFunction( function( selector ) {
2089
2090 // Trim the selector passed to compile
2091 // to avoid treating leading and trailing
2092 // spaces as combinators
2093 var input = [],
2094 results = [],
2095 matcher = compile( selector.replace( rtrim, "$1" ) );
2096
2097 return matcher[ expando ] ?
2098 markFunction( function( seed, matches, _context, xml ) {
2099 var elem,
2100 unmatched = matcher( seed, null, xml, [] ),
2101 i = seed.length;
2102
2103 // Match elements unmatched by `matcher`
2104 while ( i-- ) {
2105 if ( ( elem = unmatched[ i ] ) ) {
2106 seed[ i ] = !( matches[ i ] = elem );
2107 }
2108 }
2109 } ) :
2110 function( elem, _context, xml ) {
2111 input[ 0 ] = elem;
2112 matcher( input, null, xml, results );
2113
2114 // Don't keep the element (issue #299)
2115 input[ 0 ] = null;
2116 return !results.pop();
2117 };
2118 } ),
2119
2120 "has": markFunction( function( selector ) {
2121 return function( elem ) {
2122 return Sizzle( selector, elem ).length > 0;
2123 };
2124 } ),
2125
2126 "contains": markFunction( function( text ) {
2127 text = text.replace( runescape, funescape );
2128 return function( elem ) {
2129 return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;
2130 };
2131 } ),
2132
2133 // "Whether an element is represented by a :lang() selector
2134 // is based solely on the element's language value
2135 // being equal to the identifier C,
2136 // or beginning with the identifier C immediately followed by "-".
2137 // The matching of C against the element's language value is performed case-insensitively.
2138 // The identifier C does not have to be a valid language name."
2139 // http://www.w3.org/TR/selectors/#lang-pseudo
2140 "lang": markFunction( function( lang ) {
2141
2142 // lang value must be a valid identifier
2143 if ( !ridentifier.test( lang || "" ) ) {
2144 Sizzle.error( "unsupported lang: " + lang );
2145 }
2146 lang = lang.replace( runescape, funescape ).toLowerCase();
2147 return function( elem ) {
2148 var elemLang;
2149 do {
2150 if ( ( elemLang = documentIsHTML ?
2151 elem.lang :
2152 elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) {
2153
2154 elemLang = elemLang.toLowerCase();
2155 return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
2156 }
2157 } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );
2158 return false;
2159 };
2160 } ),
2161
2162 // Miscellaneous
2163 "target": function( elem ) {
2164 var hash = window.location && window.location.hash;
2165 return hash && hash.slice( 1 ) === elem.id;
2166 },
2167
2168 "root": function( elem ) {
2169 return elem === docElem;
2170 },
2171
2172 "focus": function( elem ) {
2173 return elem === document.activeElement &&
2174 ( !document.hasFocus || document.hasFocus() ) &&
2175 !!( elem.type || elem.href || ~elem.tabIndex );
2176 },
2177
2178 // Boolean properties
2179 "enabled": createDisabledPseudo( false ),
2180 "disabled": createDisabledPseudo( true ),
2181
2182 "checked": function( elem ) {
2183
2184 // In CSS3, :checked should return both checked and selected elements
2185 // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
2186 var nodeName = elem.nodeName.toLowerCase();
2187 return ( nodeName === "input" && !!elem.checked ) ||
2188 ( nodeName === "option" && !!elem.selected );
2189 },
2190
2191 "selected": function( elem ) {
2192
2193 // Accessing this property makes selected-by-default
2194 // options in Safari work properly
2195 if ( elem.parentNode ) {
2196 // eslint-disable-next-line no-unused-expressions
2197 elem.parentNode.selectedIndex;
2198 }
2199
2200 return elem.selected === true;
2201 },
2202
2203 // Contents
2204 "empty": function( elem ) {
2205
2206 // http://www.w3.org/TR/selectors/#empty-pseudo
2207 // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
2208 // but not by others (comment: 8; processing instruction: 7; etc.)
2209 // nodeType < 6 works because attributes (2) do not appear as children
2210 for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
2211 if ( elem.nodeType < 6 ) {
2212 return false;
2213 }
2214 }
2215 return true;
2216 },
2217
2218 "parent": function( elem ) {
2219 return !Expr.pseudos[ "empty" ]( elem );
2220 },
2221
2222 // Element/input types
2223 "header": function( elem ) {
2224 return rheader.test( elem.nodeName );
2225 },
2226
2227 "input": function( elem ) {
2228 return rinputs.test( elem.nodeName );
2229 },
2230
2231 "button": function( elem ) {
2232 var name = elem.nodeName.toLowerCase();
2233 return name === "input" && elem.type === "button" || name === "button";
2234 },
2235
2236 "text": function( elem ) {
2237 var attr;
2238 return elem.nodeName.toLowerCase() === "input" &&
2239 elem.type === "text" &&
2240
2241 // Support: IE<8
2242 // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
2243 ( ( attr = elem.getAttribute( "type" ) ) == null ||
2244 attr.toLowerCase() === "text" );
2245 },
2246
2247 // Position-in-collection
2248 "first": createPositionalPseudo( function() {
2249 return [ 0 ];
2250 } ),
2251
2252 "last": createPositionalPseudo( function( _matchIndexes, length ) {
2253 return [ length - 1 ];
2254 } ),
2255
2256 "eq": createPositionalPseudo( function( _matchIndexes, length, argument ) {
2257 return [ argument < 0 ? argument + length : argument ];
2258 } ),
2259
2260 "even": createPositionalPseudo( function( matchIndexes, length ) {
2261 var i = 0;
2262 for ( ; i < length; i += 2 ) {
2263 matchIndexes.push( i );
2264 }
2265 return matchIndexes;
2266 } ),
2267
2268 "odd": createPositionalPseudo( function( matchIndexes, length ) {
2269 var i = 1;
2270 for ( ; i < length; i += 2 ) {
2271 matchIndexes.push( i );
2272 }
2273 return matchIndexes;
2274 } ),
2275
2276 "lt": createPositionalPseudo( function( matchIndexes, length, argument ) {
2277 var i = argument < 0 ?
2278 argument + length :
2279 argument > length ?
2280 length :
2281 argument;
2282 for ( ; --i >= 0; ) {
2283 matchIndexes.push( i );
2284 }
2285 return matchIndexes;
2286 } ),
2287
2288 "gt": createPositionalPseudo( function( matchIndexes, length, argument ) {
2289 var i = argument < 0 ? argument + length : argument;
2290 for ( ; ++i < length; ) {
2291 matchIndexes.push( i );
2292 }
2293 return matchIndexes;
2294 } )
2295 }
2296};
2297
2298Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ];
2299
2300// Add button/input type pseudos
2301for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
2302 Expr.pseudos[ i ] = createInputPseudo( i );
2303}
2304for ( i in { submit: true, reset: true } ) {
2305 Expr.pseudos[ i ] = createButtonPseudo( i );
2306}
2307
2308// Easy API for creating new setFilters
2309function setFilters() {}
2310setFilters.prototype = Expr.filters = Expr.pseudos;
2311Expr.setFilters = new setFilters();
2312
2313tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
2314 var matched, match, tokens, type,
2315 soFar, groups, preFilters,
2316 cached = tokenCache[ selector + " " ];
2317
2318 if ( cached ) {
2319 return parseOnly ? 0 : cached.slice( 0 );
2320 }
2321
2322 soFar = selector;
2323 groups = [];
2324 preFilters = Expr.preFilter;
2325
2326 while ( soFar ) {
2327
2328 // Comma and first run
2329 if ( !matched || ( match = rcomma.exec( soFar ) ) ) {
2330 if ( match ) {
2331
2332 // Don't consume trailing commas as valid
2333 soFar = soFar.slice( match[ 0 ].length ) || soFar;
2334 }
2335 groups.push( ( tokens = [] ) );
2336 }
2337
2338 matched = false;
2339
2340 // Combinators
2341 if ( ( match = rcombinators.exec( soFar ) ) ) {
2342 matched = match.shift();
2343 tokens.push( {
2344 value: matched,
2345
2346 // Cast descendant combinators to space
2347 type: match[ 0 ].replace( rtrim, " " )
2348 } );
2349 soFar = soFar.slice( matched.length );
2350 }
2351
2352 // Filters
2353 for ( type in Expr.filter ) {
2354 if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||
2355 ( match = preFilters[ type ]( match ) ) ) ) {
2356 matched = match.shift();
2357 tokens.push( {
2358 value: matched,
2359 type: type,
2360 matches: match
2361 } );
2362 soFar = soFar.slice( matched.length );
2363 }
2364 }
2365
2366 if ( !matched ) {
2367 break;
2368 }
2369 }
2370
2371 // Return the length of the invalid excess
2372 // if we're just parsing
2373 // Otherwise, throw an error or return tokens
2374 return parseOnly ?
2375 soFar.length :
2376 soFar ?
2377 Sizzle.error( selector ) :
2378
2379 // Cache the tokens
2380 tokenCache( selector, groups ).slice( 0 );
2381};
2382
2383function toSelector( tokens ) {
2384 var i = 0,
2385 len = tokens.length,
2386 selector = "";
2387 for ( ; i < len; i++ ) {
2388 selector += tokens[ i ].value;
2389 }
2390 return selector;
2391}
2392
2393function addCombinator( matcher, combinator, base ) {
2394 var dir = combinator.dir,
2395 skip = combinator.next,
2396 key = skip || dir,
2397 checkNonElements = base && key === "parentNode",
2398 doneName = done++;
2399
2400 return combinator.first ?
2401
2402 // Check against closest ancestor/preceding element
2403 function( elem, context, xml ) {
2404 while ( ( elem = elem[ dir ] ) ) {
2405 if ( elem.nodeType === 1 || checkNonElements ) {
2406 return matcher( elem, context, xml );
2407 }
2408 }
2409 return false;
2410 } :
2411
2412 // Check against all ancestor/preceding elements
2413 function( elem, context, xml ) {
2414 var oldCache, uniqueCache, outerCache,
2415 newCache = [ dirruns, doneName ];
2416
2417 // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
2418 if ( xml ) {
2419 while ( ( elem = elem[ dir ] ) ) {
2420 if ( elem.nodeType === 1 || checkNonElements ) {
2421 if ( matcher( elem, context, xml ) ) {
2422 return true;
2423 }
2424 }
2425 }
2426 } else {
2427 while ( ( elem = elem[ dir ] ) ) {
2428 if ( elem.nodeType === 1 || checkNonElements ) {
2429 outerCache = elem[ expando ] || ( elem[ expando ] = {} );
2430
2431 // Support: IE <9 only
2432 // Defend against cloned attroperties (jQuery gh-1709)
2433 uniqueCache = outerCache[ elem.uniqueID ] ||
2434 ( outerCache[ elem.uniqueID ] = {} );
2435
2436 if ( skip && skip === elem.nodeName.toLowerCase() ) {
2437 elem = elem[ dir ] || elem;
2438 } else if ( ( oldCache = uniqueCache[ key ] ) &&
2439 oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
2440
2441 // Assign to newCache so results back-propagate to previous elements
2442 return ( newCache[ 2 ] = oldCache[ 2 ] );
2443 } else {
2444
2445 // Reuse newcache so results back-propagate to previous elements
2446 uniqueCache[ key ] = newCache;
2447
2448 // A match means we're done; a fail means we have to keep checking
2449 if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {
2450 return true;
2451 }
2452 }
2453 }
2454 }
2455 }
2456 return false;
2457 };
2458}
2459
2460function elementMatcher( matchers ) {
2461 return matchers.length > 1 ?
2462 function( elem, context, xml ) {
2463 var i = matchers.length;
2464 while ( i-- ) {
2465 if ( !matchers[ i ]( elem, context, xml ) ) {
2466 return false;
2467 }
2468 }
2469 return true;
2470 } :
2471 matchers[ 0 ];
2472}
2473
2474function multipleContexts( selector, contexts, results ) {
2475 var i = 0,
2476 len = contexts.length;
2477 for ( ; i < len; i++ ) {
2478 Sizzle( selector, contexts[ i ], results );
2479 }
2480 return results;
2481}
2482
2483function condense( unmatched, map, filter, context, xml ) {
2484 var elem,
2485 newUnmatched = [],
2486 i = 0,
2487 len = unmatched.length,
2488 mapped = map != null;
2489
2490 for ( ; i < len; i++ ) {
2491 if ( ( elem = unmatched[ i ] ) ) {
2492 if ( !filter || filter( elem, context, xml ) ) {
2493 newUnmatched.push( elem );
2494 if ( mapped ) {
2495 map.push( i );
2496 }
2497 }
2498 }
2499 }
2500
2501 return newUnmatched;
2502}
2503
2504function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
2505 if ( postFilter && !postFilter[ expando ] ) {
2506 postFilter = setMatcher( postFilter );
2507 }
2508 if ( postFinder && !postFinder[ expando ] ) {
2509 postFinder = setMatcher( postFinder, postSelector );
2510 }
2511 return markFunction( function( seed, results, context, xml ) {
2512 var temp, i, elem,
2513 preMap = [],
2514 postMap = [],
2515 preexisting = results.length,
2516
2517 // Get initial elements from seed or context
2518 elems = seed || multipleContexts(
2519 selector || "*",
2520 context.nodeType ? [ context ] : context,
2521 []
2522 ),
2523
2524 // Prefilter to get matcher input, preserving a map for seed-results synchronization
2525 matcherIn = preFilter && ( seed || !selector ) ?
2526 condense( elems, preMap, preFilter, context, xml ) :
2527 elems,
2528
2529 matcherOut = matcher ?
2530
2531 // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
2532 postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
2533
2534 // ...intermediate processing is necessary
2535 [] :
2536
2537 // ...otherwise use results directly
2538 results :
2539 matcherIn;
2540
2541 // Find primary matches
2542 if ( matcher ) {
2543 matcher( matcherIn, matcherOut, context, xml );
2544 }
2545
2546 // Apply postFilter
2547 if ( postFilter ) {
2548 temp = condense( matcherOut, postMap );
2549 postFilter( temp, [], context, xml );
2550
2551 // Un-match failing elements by moving them back to matcherIn
2552 i = temp.length;
2553 while ( i-- ) {
2554 if ( ( elem = temp[ i ] ) ) {
2555 matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );
2556 }
2557 }
2558 }
2559
2560 if ( seed ) {
2561 if ( postFinder || preFilter ) {
2562 if ( postFinder ) {
2563
2564 // Get the final matcherOut by condensing this intermediate into postFinder contexts
2565 temp = [];
2566 i = matcherOut.length;
2567 while ( i-- ) {
2568 if ( ( elem = matcherOut[ i ] ) ) {
2569
2570 // Restore matcherIn since elem is not yet a final match
2571 temp.push( ( matcherIn[ i ] = elem ) );
2572 }
2573 }
2574 postFinder( null, ( matcherOut = [] ), temp, xml );
2575 }
2576
2577 // Move matched elements from seed to results to keep them synchronized
2578 i = matcherOut.length;
2579 while ( i-- ) {
2580 if ( ( elem = matcherOut[ i ] ) &&
2581 ( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {
2582
2583 seed[ temp ] = !( results[ temp ] = elem );
2584 }
2585 }
2586 }
2587
2588 // Add elements to results, through postFinder if defined
2589 } else {
2590 matcherOut = condense(
2591 matcherOut === results ?
2592 matcherOut.splice( preexisting, matcherOut.length ) :
2593 matcherOut
2594 );
2595 if ( postFinder ) {
2596 postFinder( null, results, matcherOut, xml );
2597 } else {
2598 push.apply( results, matcherOut );
2599 }
2600 }
2601 } );
2602}
2603
2604function matcherFromTokens( tokens ) {
2605 var checkContext, matcher, j,
2606 len = tokens.length,
2607 leadingRelative = Expr.relative[ tokens[ 0 ].type ],
2608 implicitRelative = leadingRelative || Expr.relative[ " " ],
2609 i = leadingRelative ? 1 : 0,
2610
2611 // The foundational matcher ensures that elements are reachable from top-level context(s)
2612 matchContext = addCombinator( function( elem ) {
2613 return elem === checkContext;
2614 }, implicitRelative, true ),
2615 matchAnyContext = addCombinator( function( elem ) {
2616 return indexOf( checkContext, elem ) > -1;
2617 }, implicitRelative, true ),
2618 matchers = [ function( elem, context, xml ) {
2619 var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
2620 ( checkContext = context ).nodeType ?
2621 matchContext( elem, context, xml ) :
2622 matchAnyContext( elem, context, xml ) );
2623
2624 // Avoid hanging onto element (issue #299)
2625 checkContext = null;
2626 return ret;
2627 } ];
2628
2629 for ( ; i < len; i++ ) {
2630 if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {
2631 matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];
2632 } else {
2633 matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );
2634
2635 // Return special upon seeing a positional matcher
2636 if ( matcher[ expando ] ) {
2637
2638 // Find the next relative operator (if any) for proper handling
2639 j = ++i;
2640 for ( ; j < len; j++ ) {
2641 if ( Expr.relative[ tokens[ j ].type ] ) {
2642 break;
2643 }
2644 }
2645 return setMatcher(
2646 i > 1 && elementMatcher( matchers ),
2647 i > 1 && toSelector(
2648
2649 // If the preceding token was a descendant combinator, insert an implicit any-element `*`
2650 tokens
2651 .slice( 0, i - 1 )
2652 .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } )
2653 ).replace( rtrim, "$1" ),
2654 matcher,
2655 i < j && matcherFromTokens( tokens.slice( i, j ) ),
2656 j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),
2657 j < len && toSelector( tokens )
2658 );
2659 }
2660 matchers.push( matcher );
2661 }
2662 }
2663
2664 return elementMatcher( matchers );
2665}
2666
2667function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
2668 var bySet = setMatchers.length > 0,
2669 byElement = elementMatchers.length > 0,
2670 superMatcher = function( seed, context, xml, results, outermost ) {
2671 var elem, j, matcher,
2672 matchedCount = 0,
2673 i = "0",
2674 unmatched = seed && [],
2675 setMatched = [],
2676 contextBackup = outermostContext,
2677
2678 // We must always have either seed elements or outermost context
2679 elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ),
2680
2681 // Use integer dirruns iff this is the outermost matcher
2682 dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),
2683 len = elems.length;
2684
2685 if ( outermost ) {
2686
2687 // Support: IE 11+, Edge 17 - 18+
2688 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
2689 // two documents; shallow comparisons work.
2690 // eslint-disable-next-line eqeqeq
2691 outermostContext = context == document || context || outermost;
2692 }
2693
2694 // Add elements passing elementMatchers directly to results
2695 // Support: IE<9, Safari
2696 // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
2697 for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {
2698 if ( byElement && elem ) {
2699 j = 0;
2700
2701 // Support: IE 11+, Edge 17 - 18+
2702 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
2703 // two documents; shallow comparisons work.
2704 // eslint-disable-next-line eqeqeq
2705 if ( !context && elem.ownerDocument != document ) {
2706 setDocument( elem );
2707 xml = !documentIsHTML;
2708 }
2709 while ( ( matcher = elementMatchers[ j++ ] ) ) {
2710 if ( matcher( elem, context || document, xml ) ) {
2711 results.push( elem );
2712 break;
2713 }
2714 }
2715 if ( outermost ) {
2716 dirruns = dirrunsUnique;
2717 }
2718 }
2719
2720 // Track unmatched elements for set filters
2721 if ( bySet ) {
2722
2723 // They will have gone through all possible matchers
2724 if ( ( elem = !matcher && elem ) ) {
2725 matchedCount--;
2726 }
2727
2728 // Lengthen the array for every element, matched or not
2729 if ( seed ) {
2730 unmatched.push( elem );
2731 }
2732 }
2733 }
2734
2735 // `i` is now the count of elements visited above, and adding it to `matchedCount`
2736 // makes the latter nonnegative.
2737 matchedCount += i;
2738
2739 // Apply set filters to unmatched elements
2740 // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
2741 // equals `i`), unless we didn't visit _any_ elements in the above loop because we have
2742 // no element matchers and no seed.
2743 // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
2744 // case, which will result in a "00" `matchedCount` that differs from `i` but is also
2745 // numerically zero.
2746 if ( bySet && i !== matchedCount ) {
2747 j = 0;
2748 while ( ( matcher = setMatchers[ j++ ] ) ) {
2749 matcher( unmatched, setMatched, context, xml );
2750 }
2751
2752 if ( seed ) {
2753
2754 // Reintegrate element matches to eliminate the need for sorting
2755 if ( matchedCount > 0 ) {
2756 while ( i-- ) {
2757 if ( !( unmatched[ i ] || setMatched[ i ] ) ) {
2758 setMatched[ i ] = pop.call( results );
2759 }
2760 }
2761 }
2762
2763 // Discard index placeholder values to get only actual matches
2764 setMatched = condense( setMatched );
2765 }
2766
2767 // Add matches to results
2768 push.apply( results, setMatched );
2769
2770 // Seedless set matches succeeding multiple successful matchers stipulate sorting
2771 if ( outermost && !seed && setMatched.length > 0 &&
2772 ( matchedCount + setMatchers.length ) > 1 ) {
2773
2774 Sizzle.uniqueSort( results );
2775 }
2776 }
2777
2778 // Override manipulation of globals by nested matchers
2779 if ( outermost ) {
2780 dirruns = dirrunsUnique;
2781 outermostContext = contextBackup;
2782 }
2783
2784 return unmatched;
2785 };
2786
2787 return bySet ?
2788 markFunction( superMatcher ) :
2789 superMatcher;
2790}
2791
2792compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
2793 var i,
2794 setMatchers = [],
2795 elementMatchers = [],
2796 cached = compilerCache[ selector + " " ];
2797
2798 if ( !cached ) {
2799
2800 // Generate a function of recursive functions that can be used to check each element
2801 if ( !match ) {
2802 match = tokenize( selector );
2803 }
2804 i = match.length;
2805 while ( i-- ) {
2806 cached = matcherFromTokens( match[ i ] );
2807 if ( cached[ expando ] ) {
2808 setMatchers.push( cached );
2809 } else {
2810 elementMatchers.push( cached );
2811 }
2812 }
2813
2814 // Cache the compiled function
2815 cached = compilerCache(
2816 selector,
2817 matcherFromGroupMatchers( elementMatchers, setMatchers )
2818 );
2819
2820 // Save selector and tokenization
2821 cached.selector = selector;
2822 }
2823 return cached;
2824};
2825
2826/**
2827 * A low-level selection function that works with Sizzle's compiled
2828 * selector functions
2829 * @param {String|Function} selector A selector or a pre-compiled
2830 * selector function built with Sizzle.compile
2831 * @param {Element} context
2832 * @param {Array} [results]
2833 * @param {Array} [seed] A set of elements to match against
2834 */
2835select = Sizzle.select = function( selector, context, results, seed ) {
2836 var i, tokens, token, type, find,
2837 compiled = typeof selector === "function" && selector,
2838 match = !seed && tokenize( ( selector = compiled.selector || selector ) );
2839
2840 results = results || [];
2841
2842 // Try to minimize operations if there is only one selector in the list and no seed
2843 // (the latter of which guarantees us context)
2844 if ( match.length === 1 ) {
2845
2846 // Reduce context if the leading compound selector is an ID
2847 tokens = match[ 0 ] = match[ 0 ].slice( 0 );
2848 if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" &&
2849 context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {
2850
2851 context = ( Expr.find[ "ID" ]( token.matches[ 0 ]
2852 .replace( runescape, funescape ), context ) || [] )[ 0 ];
2853 if ( !context ) {
2854 return results;
2855
2856 // Precompiled matchers will still verify ancestry, so step up a level
2857 } else if ( compiled ) {
2858 context = context.parentNode;
2859 }
2860
2861 selector = selector.slice( tokens.shift().value.length );
2862 }
2863
2864 // Fetch a seed set for right-to-left matching
2865 i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length;
2866 while ( i-- ) {
2867 token = tokens[ i ];
2868
2869 // Abort if we hit a combinator
2870 if ( Expr.relative[ ( type = token.type ) ] ) {
2871 break;
2872 }
2873 if ( ( find = Expr.find[ type ] ) ) {
2874
2875 // Search, expanding context for leading sibling combinators
2876 if ( ( seed = find(
2877 token.matches[ 0 ].replace( runescape, funescape ),
2878 rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||
2879 context
2880 ) ) ) {
2881
2882 // If seed is empty or no tokens remain, we can return early
2883 tokens.splice( i, 1 );
2884 selector = seed.length && toSelector( tokens );
2885 if ( !selector ) {
2886 push.apply( results, seed );
2887 return results;
2888 }
2889
2890 break;
2891 }
2892 }
2893 }
2894 }
2895
2896 // Compile and execute a filtering function if one is not provided
2897 // Provide `match` to avoid retokenization if we modified the selector above
2898 ( compiled || compile( selector, match ) )(
2899 seed,
2900 context,
2901 !documentIsHTML,
2902 results,
2903 !context || rsibling.test( selector ) && testContext( context.parentNode ) || context
2904 );
2905 return results;
2906};
2907
2908// One-time assignments
2909
2910// Sort stability
2911support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando;
2912
2913// Support: Chrome 14-35+
2914// Always assume duplicates if they aren't passed to the comparison function
2915support.detectDuplicates = !!hasDuplicate;
2916
2917// Initialize against the default document
2918setDocument();
2919
2920// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
2921// Detached nodes confoundingly follow *each other*
2922support.sortDetached = assert( function( el ) {
2923
2924 // Should return 1, but returns 4 (following)
2925 return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1;
2926} );
2927
2928// Support: IE<8
2929// Prevent attribute/property "interpolation"
2930// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
2931if ( !assert( function( el ) {
2932 el.innerHTML = "<a href='#'></a>";
2933 return el.firstChild.getAttribute( "href" ) === "#";
2934} ) ) {
2935 addHandle( "type|href|height|width", function( elem, name, isXML ) {
2936 if ( !isXML ) {
2937 return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
2938 }
2939 } );
2940}
2941
2942// Support: IE<9
2943// Use defaultValue in place of getAttribute("value")
2944if ( !support.attributes || !assert( function( el ) {
2945 el.innerHTML = "<input/>";
2946 el.firstChild.setAttribute( "value", "" );
2947 return el.firstChild.getAttribute( "value" ) === "";
2948} ) ) {
2949 addHandle( "value", function( elem, _name, isXML ) {
2950 if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
2951 return elem.defaultValue;
2952 }
2953 } );
2954}
2955
2956// Support: IE<9
2957// Use getAttributeNode to fetch booleans when getAttribute lies
2958if ( !assert( function( el ) {
2959 return el.getAttribute( "disabled" ) == null;
2960} ) ) {
2961 addHandle( booleans, function( elem, name, isXML ) {
2962 var val;
2963 if ( !isXML ) {
2964 return elem[ name ] === true ? name.toLowerCase() :
2965 ( val = elem.getAttributeNode( name ) ) && val.specified ?
2966 val.value :
2967 null;
2968 }
2969 } );
2970}
2971
2972return Sizzle;
2973
2974} )( window );
2975
2976
2977
2978jQuery.find = Sizzle;
2979jQuery.expr = Sizzle.selectors;
2980
2981// Deprecated
2982jQuery.expr[ ":" ] = jQuery.expr.pseudos;
2983jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
2984jQuery.text = Sizzle.getText;
2985jQuery.isXMLDoc = Sizzle.isXML;
2986jQuery.contains = Sizzle.contains;
2987jQuery.escapeSelector = Sizzle.escape;
2988
2989
2990
2991
2992var dir = function( elem, dir, until ) {
2993 var matched = [],
2994 truncate = until !== undefined;
2995
2996 while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
2997 if ( elem.nodeType === 1 ) {
2998 if ( truncate && jQuery( elem ).is( until ) ) {
2999 break;
3000 }
3001 matched.push( elem );
3002 }
3003 }
3004 return matched;
3005};
3006
3007
3008var siblings = function( n, elem ) {
3009 var matched = [];
3010
3011 for ( ; n; n = n.nextSibling ) {
3012 if ( n.nodeType === 1 && n !== elem ) {
3013 matched.push( n );
3014 }
3015 }
3016
3017 return matched;
3018};
3019
3020
3021var rneedsContext = jQuery.expr.match.needsContext;
3022
3023
3024
3025function nodeName( elem, name ) {
3026
3027 return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
3028
3029};
3030var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
3031
3032
3033
3034// Implement the identical functionality for filter and not
3035function winnow( elements, qualifier, not ) {
3036 if ( isFunction( qualifier ) ) {
3037 return jQuery.grep( elements, function( elem, i ) {
3038 return !!qualifier.call( elem, i, elem ) !== not;
3039 } );
3040 }
3041
3042 // Single element
3043 if ( qualifier.nodeType ) {
3044 return jQuery.grep( elements, function( elem ) {
3045 return ( elem === qualifier ) !== not;
3046 } );
3047 }
3048
3049 // Arraylike of elements (jQuery, arguments, Array)
3050 if ( typeof qualifier !== "string" ) {
3051 return jQuery.grep( elements, function( elem ) {
3052 return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
3053 } );
3054 }
3055
3056 // Filtered directly for both simple and complex selectors
3057 return jQuery.filter( qualifier, elements, not );
3058}
3059
3060jQuery.filter = function( expr, elems, not ) {
3061 var elem = elems[ 0 ];
3062
3063 if ( not ) {
3064 expr = ":not(" + expr + ")";
3065 }
3066
3067 if ( elems.length === 1 && elem.nodeType === 1 ) {
3068 return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
3069 }
3070
3071 return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
3072 return elem.nodeType === 1;
3073 } ) );
3074};
3075
3076jQuery.fn.extend( {
3077 find: function( selector ) {
3078 var i, ret,
3079 len = this.length,
3080 self = this;
3081
3082 if ( typeof selector !== "string" ) {
3083 return this.pushStack( jQuery( selector ).filter( function() {
3084 for ( i = 0; i < len; i++ ) {
3085 if ( jQuery.contains( self[ i ], this ) ) {
3086 return true;
3087 }
3088 }
3089 } ) );
3090 }
3091
3092 ret = this.pushStack( [] );
3093
3094 for ( i = 0; i < len; i++ ) {
3095 jQuery.find( selector, self[ i ], ret );
3096 }
3097
3098 return len > 1 ? jQuery.uniqueSort( ret ) : ret;
3099 },
3100 filter: function( selector ) {
3101 return this.pushStack( winnow( this, selector || [], false ) );
3102 },
3103 not: function( selector ) {
3104 return this.pushStack( winnow( this, selector || [], true ) );
3105 },
3106 is: function( selector ) {
3107 return !!winnow(
3108 this,
3109
3110 // If this is a positional/relative selector, check membership in the returned set
3111 // so $("p:first").is("p:last") won't return true for a doc with two "p".
3112 typeof selector === "string" && rneedsContext.test( selector ) ?
3113 jQuery( selector ) :
3114 selector || [],
3115 false
3116 ).length;
3117 }
3118} );
3119
3120
3121// Initialize a jQuery object
3122
3123
3124// A central reference to the root jQuery(document)
3125var rootjQuery,
3126
3127 // A simple way to check for HTML strings
3128 // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
3129 // Strict HTML recognition (#11290: must start with <)
3130 // Shortcut simple #id case for speed
3131 rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
3132
3133 init = jQuery.fn.init = function( selector, context, root ) {
3134 var match, elem;
3135
3136 // HANDLE: $(""), $(null), $(undefined), $(false)
3137 if ( !selector ) {
3138 return this;
3139 }
3140
3141 // Method init() accepts an alternate rootjQuery
3142 // so migrate can support jQuery.sub (gh-2101)
3143 root = root || rootjQuery;
3144
3145 // Handle HTML strings
3146 if ( typeof selector === "string" ) {
3147 if ( selector[ 0 ] === "<" &&
3148 selector[ selector.length - 1 ] === ">" &&
3149 selector.length >= 3 ) {
3150
3151 // Assume that strings that start and end with <> are HTML and skip the regex check
3152 match = [ null, selector, null ];
3153
3154 } else {
3155 match = rquickExpr.exec( selector );
3156 }
3157
3158 // Match html or make sure no context is specified for #id
3159 if ( match && ( match[ 1 ] || !context ) ) {
3160
3161 // HANDLE: $(html) -> $(array)
3162 if ( match[ 1 ] ) {
3163 context = context instanceof jQuery ? context[ 0 ] : context;
3164
3165 // Option to run scripts is true for back-compat
3166 // Intentionally let the error be thrown if parseHTML is not present
3167 jQuery.merge( this, jQuery.parseHTML(
3168 match[ 1 ],
3169 context && context.nodeType ? context.ownerDocument || context : document,
3170 true
3171 ) );
3172
3173 // HANDLE: $(html, props)
3174 if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
3175 for ( match in context ) {
3176
3177 // Properties of context are called as methods if possible
3178 if ( isFunction( this[ match ] ) ) {
3179 this[ match ]( context[ match ] );
3180
3181 // ...and otherwise set as attributes
3182 } else {
3183 this.attr( match, context[ match ] );
3184 }
3185 }
3186 }
3187
3188 return this;
3189
3190 // HANDLE: $(#id)
3191 } else {
3192 elem = document.getElementById( match[ 2 ] );
3193
3194 if ( elem ) {
3195
3196 // Inject the element directly into the jQuery object
3197 this[ 0 ] = elem;
3198 this.length = 1;
3199 }
3200 return this;
3201 }
3202
3203 // HANDLE: $(expr, $(...))
3204 } else if ( !context || context.jquery ) {
3205 return ( context || root ).find( selector );
3206
3207 // HANDLE: $(expr, context)
3208 // (which is just equivalent to: $(context).find(expr)
3209 } else {
3210 return this.constructor( context ).find( selector );
3211 }
3212
3213 // HANDLE: $(DOMElement)
3214 } else if ( selector.nodeType ) {
3215 this[ 0 ] = selector;
3216 this.length = 1;
3217 return this;
3218
3219 // HANDLE: $(function)
3220 // Shortcut for document ready
3221 } else if ( isFunction( selector ) ) {
3222 return root.ready !== undefined ?
3223 root.ready( selector ) :
3224
3225 // Execute immediately if ready is not present
3226 selector( jQuery );
3227 }
3228
3229 return jQuery.makeArray( selector, this );
3230 };
3231
3232// Give the init function the jQuery prototype for later instantiation
3233init.prototype = jQuery.fn;
3234
3235// Initialize central reference
3236rootjQuery = jQuery( document );
3237
3238
3239var rparentsprev = /^(?:parents|prev(?:Until|All))/,
3240
3241 // Methods guaranteed to produce a unique set when starting from a unique set
3242 guaranteedUnique = {
3243 children: true,
3244 contents: true,
3245 next: true,
3246 prev: true
3247 };
3248
3249jQuery.fn.extend( {
3250 has: function( target ) {
3251 var targets = jQuery( target, this ),
3252 l = targets.length;
3253
3254 return this.filter( function() {
3255 var i = 0;
3256 for ( ; i < l; i++ ) {
3257 if ( jQuery.contains( this, targets[ i ] ) ) {
3258 return true;
3259 }
3260 }
3261 } );
3262 },
3263
3264 closest: function( selectors, context ) {
3265 var cur,
3266 i = 0,
3267 l = this.length,
3268 matched = [],
3269 targets = typeof selectors !== "string" && jQuery( selectors );
3270
3271 // Positional selectors never match, since there's no _selection_ context
3272 if ( !rneedsContext.test( selectors ) ) {
3273 for ( ; i < l; i++ ) {
3274 for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
3275
3276 // Always skip document fragments
3277 if ( cur.nodeType < 11 && ( targets ?
3278 targets.index( cur ) > -1 :
3279
3280 // Don't pass non-elements to Sizzle
3281 cur.nodeType === 1 &&
3282 jQuery.find.matchesSelector( cur, selectors ) ) ) {
3283
3284 matched.push( cur );
3285 break;
3286 }
3287 }
3288 }
3289 }
3290
3291 return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
3292 },
3293
3294 // Determine the position of an element within the set
3295 index: function( elem ) {
3296
3297 // No argument, return index in parent
3298 if ( !elem ) {
3299 return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
3300 }
3301
3302 // Index in selector
3303 if ( typeof elem === "string" ) {
3304 return indexOf.call( jQuery( elem ), this[ 0 ] );
3305 }
3306
3307 // Locate the position of the desired element
3308 return indexOf.call( this,
3309
3310 // If it receives a jQuery object, the first element is used
3311 elem.jquery ? elem[ 0 ] : elem
3312 );
3313 },
3314
3315 add: function( selector, context ) {
3316 return this.pushStack(
3317 jQuery.uniqueSort(
3318 jQuery.merge( this.get(), jQuery( selector, context ) )
3319 )
3320 );
3321 },
3322
3323 addBack: function( selector ) {
3324 return this.add( selector == null ?
3325 this.prevObject : this.prevObject.filter( selector )
3326 );
3327 }
3328} );
3329
3330function sibling( cur, dir ) {
3331 while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
3332 return cur;
3333}
3334
3335jQuery.each( {
3336 parent: function( elem ) {
3337 var parent = elem.parentNode;
3338 return parent && parent.nodeType !== 11 ? parent : null;
3339 },
3340 parents: function( elem ) {
3341 return dir( elem, "parentNode" );
3342 },
3343 parentsUntil: function( elem, _i, until ) {
3344 return dir( elem, "parentNode", until );
3345 },
3346 next: function( elem ) {
3347 return sibling( elem, "nextSibling" );
3348 },
3349 prev: function( elem ) {
3350 return sibling( elem, "previousSibling" );
3351 },
3352 nextAll: function( elem ) {
3353 return dir( elem, "nextSibling" );
3354 },
3355 prevAll: function( elem ) {
3356 return dir( elem, "previousSibling" );
3357 },
3358 nextUntil: function( elem, _i, until ) {
3359 return dir( elem, "nextSibling", until );
3360 },
3361 prevUntil: function( elem, _i, until ) {
3362 return dir( elem, "previousSibling", until );
3363 },
3364 siblings: function( elem ) {
3365 return siblings( ( elem.parentNode || {} ).firstChild, elem );
3366 },
3367 children: function( elem ) {
3368 return siblings( elem.firstChild );
3369 },
3370 contents: function( elem ) {
3371 if ( elem.contentDocument != null &&
3372
3373 // Support: IE 11+
3374 // <object> elements with no `data` attribute has an object
3375 // `contentDocument` with a `null` prototype.
3376 getProto( elem.contentDocument ) ) {
3377
3378 return elem.contentDocument;
3379 }
3380
3381 // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
3382 // Treat the template element as a regular one in browsers that
3383 // don't support it.
3384 if ( nodeName( elem, "template" ) ) {
3385 elem = elem.content || elem;
3386 }
3387
3388 return jQuery.merge( [], elem.childNodes );
3389 }
3390}, function( name, fn ) {
3391 jQuery.fn[ name ] = function( until, selector ) {
3392 var matched = jQuery.map( this, fn, until );
3393
3394 if ( name.slice( -5 ) !== "Until" ) {
3395 selector = until;
3396 }
3397
3398 if ( selector && typeof selector === "string" ) {
3399 matched = jQuery.filter( selector, matched );
3400 }
3401
3402 if ( this.length > 1 ) {
3403
3404 // Remove duplicates
3405 if ( !guaranteedUnique[ name ] ) {
3406 jQuery.uniqueSort( matched );
3407 }
3408
3409 // Reverse order for parents* and prev-derivatives
3410 if ( rparentsprev.test( name ) ) {
3411 matched.reverse();
3412 }
3413 }
3414
3415 return this.pushStack( matched );
3416 };
3417} );
3418var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g );
3419
3420
3421
3422// Convert String-formatted options into Object-formatted ones
3423function createOptions( options ) {
3424 var object = {};
3425 jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
3426 object[ flag ] = true;
3427 } );
3428 return object;
3429}
3430
3431/*
3432 * Create a callback list using the following parameters:
3433 *
3434 * options: an optional list of space-separated options that will change how
3435 * the callback list behaves or a more traditional option object
3436 *
3437 * By default a callback list will act like an event callback list and can be
3438 * "fired" multiple times.
3439 *
3440 * Possible options:
3441 *
3442 * once: will ensure the callback list can only be fired once (like a Deferred)
3443 *
3444 * memory: will keep track of previous values and will call any callback added
3445 * after the list has been fired right away with the latest "memorized"
3446 * values (like a Deferred)
3447 *
3448 * unique: will ensure a callback can only be added once (no duplicate in the list)
3449 *
3450 * stopOnFalse: interrupt callings when a callback returns false
3451 *
3452 */
3453jQuery.Callbacks = function( options ) {
3454
3455 // Convert options from String-formatted to Object-formatted if needed
3456 // (we check in cache first)
3457 options = typeof options === "string" ?
3458 createOptions( options ) :
3459 jQuery.extend( {}, options );
3460
3461 var // Flag to know if list is currently firing
3462 firing,
3463
3464 // Last fire value for non-forgettable lists
3465 memory,
3466
3467 // Flag to know if list was already fired
3468 fired,
3469
3470 // Flag to prevent firing
3471 locked,
3472
3473 // Actual callback list
3474 list = [],
3475
3476 // Queue of execution data for repeatable lists
3477 queue = [],
3478
3479 // Index of currently firing callback (modified by add/remove as needed)
3480 firingIndex = -1,
3481
3482 // Fire callbacks
3483 fire = function() {
3484
3485 // Enforce single-firing
3486 locked = locked || options.once;
3487
3488 // Execute callbacks for all pending executions,
3489 // respecting firingIndex overrides and runtime changes
3490 fired = firing = true;
3491 for ( ; queue.length; firingIndex = -1 ) {
3492 memory = queue.shift();
3493 while ( ++firingIndex < list.length ) {
3494
3495 // Run callback and check for early termination
3496 if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
3497 options.stopOnFalse ) {
3498
3499 // Jump to end and forget the data so .add doesn't re-fire
3500 firingIndex = list.length;
3501 memory = false;
3502 }
3503 }
3504 }
3505
3506 // Forget the data if we're done with it
3507 if ( !options.memory ) {
3508 memory = false;
3509 }
3510
3511 firing = false;
3512
3513 // Clean up if we're done firing for good
3514 if ( locked ) {
3515
3516 // Keep an empty list if we have data for future add calls
3517 if ( memory ) {
3518 list = [];
3519
3520 // Otherwise, this object is spent
3521 } else {
3522 list = "";
3523 }
3524 }
3525 },
3526
3527 // Actual Callbacks object
3528 self = {
3529
3530 // Add a callback or a collection of callbacks to the list
3531 add: function() {
3532 if ( list ) {
3533
3534 // If we have memory from a past run, we should fire after adding
3535 if ( memory && !firing ) {
3536 firingIndex = list.length - 1;
3537 queue.push( memory );
3538 }
3539
3540 ( function add( args ) {
3541 jQuery.each( args, function( _, arg ) {
3542 if ( isFunction( arg ) ) {
3543 if ( !options.unique || !self.has( arg ) ) {
3544 list.push( arg );
3545 }
3546 } else if ( arg && arg.length && toType( arg ) !== "string" ) {
3547
3548 // Inspect recursively
3549 add( arg );
3550 }
3551 } );
3552 } )( arguments );
3553
3554 if ( memory && !firing ) {
3555 fire();
3556 }
3557 }
3558 return this;
3559 },
3560
3561 // Remove a callback from the list
3562 remove: function() {
3563 jQuery.each( arguments, function( _, arg ) {
3564 var index;
3565 while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
3566 list.splice( index, 1 );
3567
3568 // Handle firing indexes
3569 if ( index <= firingIndex ) {
3570 firingIndex--;
3571 }
3572 }
3573 } );
3574 return this;
3575 },
3576
3577 // Check if a given callback is in the list.
3578 // If no argument is given, return whether or not list has callbacks attached.
3579 has: function( fn ) {
3580 return fn ?
3581 jQuery.inArray( fn, list ) > -1 :
3582 list.length > 0;
3583 },
3584
3585 // Remove all callbacks from the list
3586 empty: function() {
3587 if ( list ) {
3588 list = [];
3589 }
3590 return this;
3591 },
3592
3593 // Disable .fire and .add
3594 // Abort any current/pending executions
3595 // Clear all callbacks and values
3596 disable: function() {
3597 locked = queue = [];
3598 list = memory = "";
3599 return this;
3600 },
3601 disabled: function() {
3602 return !list;
3603 },
3604
3605 // Disable .fire
3606 // Also disable .add unless we have memory (since it would have no effect)
3607 // Abort any pending executions
3608 lock: function() {
3609 locked = queue = [];
3610 if ( !memory && !firing ) {
3611 list = memory = "";
3612 }
3613 return this;
3614 },
3615 locked: function() {
3616 return !!locked;
3617 },
3618
3619 // Call all callbacks with the given context and arguments
3620 fireWith: function( context, args ) {
3621 if ( !locked ) {
3622 args = args || [];
3623 args = [ context, args.slice ? args.slice() : args ];
3624 queue.push( args );
3625 if ( !firing ) {
3626 fire();
3627 }
3628 }
3629 return this;
3630 },
3631
3632 // Call all the callbacks with the given arguments
3633 fire: function() {
3634 self.fireWith( this, arguments );
3635 return this;
3636 },
3637
3638 // To know if the callbacks have already been called at least once
3639 fired: function() {
3640 return !!fired;
3641 }
3642 };
3643
3644 return self;
3645};
3646
3647
3648function Identity( v ) {
3649 return v;
3650}
3651function Thrower( ex ) {
3652 throw ex;
3653}
3654
3655function adoptValue( value, resolve, reject, noValue ) {
3656 var method;
3657
3658 try {
3659
3660 // Check for promise aspect first to privilege synchronous behavior
3661 if ( value && isFunction( ( method = value.promise ) ) ) {
3662 method.call( value ).done( resolve ).fail( reject );
3663
3664 // Other thenables
3665 } else if ( value && isFunction( ( method = value.then ) ) ) {
3666 method.call( value, resolve, reject );
3667
3668 // Other non-thenables
3669 } else {
3670
3671 // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:
3672 // * false: [ value ].slice( 0 ) => resolve( value )
3673 // * true: [ value ].slice( 1 ) => resolve()
3674 resolve.apply( undefined, [ value ].slice( noValue ) );
3675 }
3676
3677 // For Promises/A+, convert exceptions into rejections
3678 // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
3679 // Deferred#then to conditionally suppress rejection.
3680 } catch ( value ) {
3681
3682 // Support: Android 4.0 only
3683 // Strict mode functions invoked without .call/.apply get global-object context
3684 reject.apply( undefined, [ value ] );
3685 }
3686}
3687
3688jQuery.extend( {
3689
3690 Deferred: function( func ) {
3691 var tuples = [
3692
3693 // action, add listener, callbacks,
3694 // ... .then handlers, argument index, [final state]
3695 [ "notify", "progress", jQuery.Callbacks( "memory" ),
3696 jQuery.Callbacks( "memory" ), 2 ],
3697 [ "resolve", "done", jQuery.Callbacks( "once memory" ),
3698 jQuery.Callbacks( "once memory" ), 0, "resolved" ],
3699 [ "reject", "fail", jQuery.Callbacks( "once memory" ),
3700 jQuery.Callbacks( "once memory" ), 1, "rejected" ]
3701 ],
3702 state = "pending",
3703 promise = {
3704 state: function() {
3705 return state;
3706 },
3707 always: function() {
3708 deferred.done( arguments ).fail( arguments );
3709 return this;
3710 },
3711 "catch": function( fn ) {
3712 return promise.then( null, fn );
3713 },
3714
3715 // Keep pipe for back-compat
3716 pipe: function( /* fnDone, fnFail, fnProgress */ ) {
3717 var fns = arguments;
3718
3719 return jQuery.Deferred( function( newDefer ) {
3720 jQuery.each( tuples, function( _i, tuple ) {
3721
3722 // Map tuples (progress, done, fail) to arguments (done, fail, progress)
3723 var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
3724
3725 // deferred.progress(function() { bind to newDefer or newDefer.notify })
3726 // deferred.done(function() { bind to newDefer or newDefer.resolve })
3727 // deferred.fail(function() { bind to newDefer or newDefer.reject })
3728 deferred[ tuple[ 1 ] ]( function() {
3729 var returned = fn && fn.apply( this, arguments );
3730 if ( returned && isFunction( returned.promise ) ) {
3731 returned.promise()
3732 .progress( newDefer.notify )
3733 .done( newDefer.resolve )
3734 .fail( newDefer.reject );
3735 } else {
3736 newDefer[ tuple[ 0 ] + "With" ](
3737 this,
3738 fn ? [ returned ] : arguments
3739 );
3740 }
3741 } );
3742 } );
3743 fns = null;
3744 } ).promise();
3745 },
3746 then: function( onFulfilled, onRejected, onProgress ) {
3747 var maxDepth = 0;
3748 function resolve( depth, deferred, handler, special ) {
3749 return function() {
3750 var that = this,
3751 args = arguments,
3752 mightThrow = function() {
3753 var returned, then;
3754
3755 // Support: Promises/A+ section 2.3.3.3.3
3756 // https://promisesaplus.com/#point-59
3757 // Ignore double-resolution attempts
3758 if ( depth < maxDepth ) {
3759 return;
3760 }
3761
3762 returned = handler.apply( that, args );
3763
3764 // Support: Promises/A+ section 2.3.1
3765 // https://promisesaplus.com/#point-48
3766 if ( returned === deferred.promise() ) {
3767 throw new TypeError( "Thenable self-resolution" );
3768 }
3769
3770 // Support: Promises/A+ sections 2.3.3.1, 3.5
3771 // https://promisesaplus.com/#point-54
3772 // https://promisesaplus.com/#point-75
3773 // Retrieve `then` only once
3774 then = returned &&
3775
3776 // Support: Promises/A+ section 2.3.4
3777 // https://promisesaplus.com/#point-64
3778 // Only check objects and functions for thenability
3779 ( typeof returned === "object" ||
3780 typeof returned === "function" ) &&
3781 returned.then;
3782
3783 // Handle a returned thenable
3784 if ( isFunction( then ) ) {
3785
3786 // Special processors (notify) just wait for resolution
3787 if ( special ) {
3788 then.call(
3789 returned,
3790 resolve( maxDepth, deferred, Identity, special ),
3791 resolve( maxDepth, deferred, Thrower, special )
3792 );
3793
3794 // Normal processors (resolve) also hook into progress
3795 } else {
3796
3797 // ...and disregard older resolution values
3798 maxDepth++;
3799
3800 then.call(
3801 returned,
3802 resolve( maxDepth, deferred, Identity, special ),
3803 resolve( maxDepth, deferred, Thrower, special ),
3804 resolve( maxDepth, deferred, Identity,
3805 deferred.notifyWith )
3806 );
3807 }
3808
3809 // Handle all other returned values
3810 } else {
3811
3812 // Only substitute handlers pass on context
3813 // and multiple values (non-spec behavior)
3814 if ( handler !== Identity ) {
3815 that = undefined;
3816 args = [ returned ];
3817 }
3818
3819 // Process the value(s)
3820 // Default process is resolve
3821 ( special || deferred.resolveWith )( that, args );
3822 }
3823 },
3824
3825 // Only normal processors (resolve) catch and reject exceptions
3826 process = special ?
3827 mightThrow :
3828 function() {
3829 try {
3830 mightThrow();
3831 } catch ( e ) {
3832
3833 if ( jQuery.Deferred.exceptionHook ) {
3834 jQuery.Deferred.exceptionHook( e,
3835 process.stackTrace );
3836 }
3837
3838 // Support: Promises/A+ section 2.3.3.3.4.1
3839 // https://promisesaplus.com/#point-61
3840 // Ignore post-resolution exceptions
3841 if ( depth + 1 >= maxDepth ) {
3842
3843 // Only substitute handlers pass on context
3844 // and multiple values (non-spec behavior)
3845 if ( handler !== Thrower ) {
3846 that = undefined;
3847 args = [ e ];
3848 }
3849
3850 deferred.rejectWith( that, args );
3851 }
3852 }
3853 };
3854
3855 // Support: Promises/A+ section 2.3.3.3.1
3856 // https://promisesaplus.com/#point-57
3857 // Re-resolve promises immediately to dodge false rejection from
3858 // subsequent errors
3859 if ( depth ) {
3860 process();
3861 } else {
3862
3863 // Call an optional hook to record the stack, in case of exception
3864 // since it's otherwise lost when execution goes async
3865 if ( jQuery.Deferred.getStackHook ) {
3866 process.stackTrace = jQuery.Deferred.getStackHook();
3867 }
3868 window.setTimeout( process );
3869 }
3870 };
3871 }
3872
3873 return jQuery.Deferred( function( newDefer ) {
3874
3875 // progress_handlers.add( ... )
3876 tuples[ 0 ][ 3 ].add(
3877 resolve(
3878 0,
3879 newDefer,
3880 isFunction( onProgress ) ?
3881 onProgress :
3882 Identity,
3883 newDefer.notifyWith
3884 )
3885 );
3886
3887 // fulfilled_handlers.add( ... )
3888 tuples[ 1 ][ 3 ].add(
3889 resolve(
3890 0,
3891 newDefer,
3892 isFunction( onFulfilled ) ?
3893 onFulfilled :
3894 Identity
3895 )
3896 );
3897
3898 // rejected_handlers.add( ... )
3899 tuples[ 2 ][ 3 ].add(
3900 resolve(
3901 0,
3902 newDefer,
3903 isFunction( onRejected ) ?
3904 onRejected :
3905 Thrower
3906 )
3907 );
3908 } ).promise();
3909 },
3910
3911 // Get a promise for this deferred
3912 // If obj is provided, the promise aspect is added to the object
3913 promise: function( obj ) {
3914 return obj != null ? jQuery.extend( obj, promise ) : promise;
3915 }
3916 },
3917 deferred = {};
3918
3919 // Add list-specific methods
3920 jQuery.each( tuples, function( i, tuple ) {
3921 var list = tuple[ 2 ],
3922 stateString = tuple[ 5 ];
3923
3924 // promise.progress = list.add
3925 // promise.done = list.add
3926 // promise.fail = list.add
3927 promise[ tuple[ 1 ] ] = list.add;
3928
3929 // Handle state
3930 if ( stateString ) {
3931 list.add(
3932 function() {
3933
3934 // state = "resolved" (i.e., fulfilled)
3935 // state = "rejected"
3936 state = stateString;
3937 },
3938
3939 // rejected_callbacks.disable
3940 // fulfilled_callbacks.disable
3941 tuples[ 3 - i ][ 2 ].disable,
3942
3943 // rejected_handlers.disable
3944 // fulfilled_handlers.disable
3945 tuples[ 3 - i ][ 3 ].disable,
3946
3947 // progress_callbacks.lock
3948 tuples[ 0 ][ 2 ].lock,
3949
3950 // progress_handlers.lock
3951 tuples[ 0 ][ 3 ].lock
3952 );
3953 }
3954
3955 // progress_handlers.fire
3956 // fulfilled_handlers.fire
3957 // rejected_handlers.fire
3958 list.add( tuple[ 3 ].fire );
3959
3960 // deferred.notify = function() { deferred.notifyWith(...) }
3961 // deferred.resolve = function() { deferred.resolveWith(...) }
3962 // deferred.reject = function() { deferred.rejectWith(...) }
3963 deferred[ tuple[ 0 ] ] = function() {
3964 deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
3965 return this;
3966 };
3967
3968 // deferred.notifyWith = list.fireWith
3969 // deferred.resolveWith = list.fireWith
3970 // deferred.rejectWith = list.fireWith
3971 deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
3972 } );
3973
3974 // Make the deferred a promise
3975 promise.promise( deferred );
3976
3977 // Call given func if any
3978 if ( func ) {
3979 func.call( deferred, deferred );
3980 }
3981
3982 // All done!
3983 return deferred;
3984 },
3985
3986 // Deferred helper
3987 when: function( singleValue ) {
3988 var
3989
3990 // count of uncompleted subordinates
3991 remaining = arguments.length,
3992
3993 // count of unprocessed arguments
3994 i = remaining,
3995
3996 // subordinate fulfillment data
3997 resolveContexts = Array( i ),
3998 resolveValues = slice.call( arguments ),
3999
4000 // the master Deferred
4001 master = jQuery.Deferred(),
4002
4003 // subordinate callback factory
4004 updateFunc = function( i ) {
4005 return function( value ) {
4006 resolveContexts[ i ] = this;
4007 resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
4008 if ( !( --remaining ) ) {
4009 master.resolveWith( resolveContexts, resolveValues );
4010 }
4011 };
4012 };
4013
4014 // Single- and empty arguments are adopted like Promise.resolve
4015 if ( remaining <= 1 ) {
4016 adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,
4017 !remaining );
4018
4019 // Use .then() to unwrap secondary thenables (cf. gh-3000)
4020 if ( master.state() === "pending" ||
4021 isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
4022
4023 return master.then();
4024 }
4025 }
4026
4027 // Multiple arguments are aggregated like Promise.all array elements
4028 while ( i-- ) {
4029 adoptValue( resolveValues[ i ], updateFunc( i ), master.reject );
4030 }
4031
4032 return master.promise();
4033 }
4034} );
4035
4036
4037// These usually indicate a programmer mistake during development,
4038// warn about them ASAP rather than swallowing them by default.
4039var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
4040
4041jQuery.Deferred.exceptionHook = function( error, stack ) {
4042
4043 // Support: IE 8 - 9 only
4044 // Console exists when dev tools are open, which can happen at any time
4045 if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
4046 window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
4047 }
4048};
4049
4050
4051
4052
4053jQuery.readyException = function( error ) {
4054 window.setTimeout( function() {
4055 throw error;
4056 } );
4057};
4058
4059
4060
4061
4062// The deferred used on DOM ready
4063var readyList = jQuery.Deferred();
4064
4065jQuery.fn.ready = function( fn ) {
4066
4067 readyList
4068 .then( fn )
4069
4070 // Wrap jQuery.readyException in a function so that the lookup
4071 // happens at the time of error handling instead of callback
4072 // registration.
4073 .catch( function( error ) {
4074 jQuery.readyException( error );
4075 } );
4076
4077 return this;
4078};
4079
4080jQuery.extend( {
4081
4082 // Is the DOM ready to be used? Set to true once it occurs.
4083 isReady: false,
4084
4085 // A counter to track how many items to wait for before
4086 // the ready event fires. See #6781
4087 readyWait: 1,
4088
4089 // Handle when the DOM is ready
4090 ready: function( wait ) {
4091
4092 // Abort if there are pending holds or we're already ready
4093 if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
4094 return;
4095 }
4096
4097 // Remember that the DOM is ready
4098 jQuery.isReady = true;
4099
4100 // If a normal DOM Ready event fired, decrement, and wait if need be
4101 if ( wait !== true && --jQuery.readyWait > 0 ) {
4102 return;
4103 }
4104
4105 // If there are functions bound, to execute
4106 readyList.resolveWith( document, [ jQuery ] );
4107 }
4108} );
4109
4110jQuery.ready.then = readyList.then;
4111
4112// The ready event handler and self cleanup method
4113function completed() {
4114 document.removeEventListener( "DOMContentLoaded", completed );
4115 window.removeEventListener( "load", completed );
4116 jQuery.ready();
4117}
4118
4119// Catch cases where $(document).ready() is called
4120// after the browser event has already occurred.
4121// Support: IE <=9 - 10 only
4122// Older IE sometimes signals "interactive" too soon
4123if ( document.readyState === "complete" ||
4124 ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
4125
4126 // Handle it asynchronously to allow scripts the opportunity to delay ready
4127 window.setTimeout( jQuery.ready );
4128
4129} else {
4130
4131 // Use the handy event callback
4132 document.addEventListener( "DOMContentLoaded", completed );
4133
4134 // A fallback to window.onload, that will always work
4135 window.addEventListener( "load", completed );
4136}
4137
4138
4139
4140
4141// Multifunctional method to get and set values of a collection
4142// The value/s can optionally be executed if it's a function
4143var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
4144 var i = 0,
4145 len = elems.length,
4146 bulk = key == null;
4147
4148 // Sets many values
4149 if ( toType( key ) === "object" ) {
4150 chainable = true;
4151 for ( i in key ) {
4152 access( elems, fn, i, key[ i ], true, emptyGet, raw );
4153 }
4154
4155 // Sets one value
4156 } else if ( value !== undefined ) {
4157 chainable = true;
4158
4159 if ( !isFunction( value ) ) {
4160 raw = true;
4161 }
4162
4163 if ( bulk ) {
4164
4165 // Bulk operations run against the entire set
4166 if ( raw ) {
4167 fn.call( elems, value );
4168 fn = null;
4169
4170 // ...except when executing function values
4171 } else {
4172 bulk = fn;
4173 fn = function( elem, _key, value ) {
4174 return bulk.call( jQuery( elem ), value );
4175 };
4176 }
4177 }
4178
4179 if ( fn ) {
4180 for ( ; i < len; i++ ) {
4181 fn(
4182 elems[ i ], key, raw ?
4183 value :
4184 value.call( elems[ i ], i, fn( elems[ i ], key ) )
4185 );
4186 }
4187 }
4188 }
4189
4190 if ( chainable ) {
4191 return elems;
4192 }
4193
4194 // Gets
4195 if ( bulk ) {
4196 return fn.call( elems );
4197 }
4198
4199 return len ? fn( elems[ 0 ], key ) : emptyGet;
4200};
4201
4202
4203// Matches dashed string for camelizing
4204var rmsPrefix = /^-ms-/,
4205 rdashAlpha = /-([a-z])/g;
4206
4207// Used by camelCase as callback to replace()
4208function fcamelCase( _all, letter ) {
4209 return letter.toUpperCase();
4210}
4211
4212// Convert dashed to camelCase; used by the css and data modules
4213// Support: IE <=9 - 11, Edge 12 - 15
4214// Microsoft forgot to hump their vendor prefix (#9572)
4215function camelCase( string ) {
4216 return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
4217}
4218var acceptData = function( owner ) {
4219
4220 // Accepts only:
4221 // - Node
4222 // - Node.ELEMENT_NODE
4223 // - Node.DOCUMENT_NODE
4224 // - Object
4225 // - Any
4226 return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
4227};
4228
4229
4230
4231
4232function Data() {
4233 this.expando = jQuery.expando + Data.uid++;
4234}
4235
4236Data.uid = 1;
4237
4238Data.prototype = {
4239
4240 cache: function( owner ) {
4241
4242 // Check if the owner object already has a cache
4243 var value = owner[ this.expando ];
4244
4245 // If not, create one
4246 if ( !value ) {
4247 value = {};
4248
4249 // We can accept data for non-element nodes in modern browsers,
4250 // but we should not, see #8335.
4251 // Always return an empty object.
4252 if ( acceptData( owner ) ) {
4253
4254 // If it is a node unlikely to be stringify-ed or looped over
4255 // use plain assignment
4256 if ( owner.nodeType ) {
4257 owner[ this.expando ] = value;
4258
4259 // Otherwise secure it in a non-enumerable property
4260 // configurable must be true to allow the property to be
4261 // deleted when data is removed
4262 } else {
4263 Object.defineProperty( owner, this.expando, {
4264 value: value,
4265 configurable: true
4266 } );
4267 }
4268 }
4269 }
4270
4271 return value;
4272 },
4273 set: function( owner, data, value ) {
4274 var prop,
4275 cache = this.cache( owner );
4276
4277 // Handle: [ owner, key, value ] args
4278 // Always use camelCase key (gh-2257)
4279 if ( typeof data === "string" ) {
4280 cache[ camelCase( data ) ] = value;
4281
4282 // Handle: [ owner, { properties } ] args
4283 } else {
4284
4285 // Copy the properties one-by-one to the cache object
4286 for ( prop in data ) {
4287 cache[ camelCase( prop ) ] = data[ prop ];
4288 }
4289 }
4290 return cache;
4291 },
4292 get: function( owner, key ) {
4293 return key === undefined ?
4294 this.cache( owner ) :
4295
4296 // Always use camelCase key (gh-2257)
4297 owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];
4298 },
4299 access: function( owner, key, value ) {
4300
4301 // In cases where either:
4302 //
4303 // 1. No key was specified
4304 // 2. A string key was specified, but no value provided
4305 //
4306 // Take the "read" path and allow the get method to determine
4307 // which value to return, respectively either:
4308 //
4309 // 1. The entire cache object
4310 // 2. The data stored at the key
4311 //
4312 if ( key === undefined ||
4313 ( ( key && typeof key === "string" ) && value === undefined ) ) {
4314
4315 return this.get( owner, key );
4316 }
4317
4318 // When the key is not a string, or both a key and value
4319 // are specified, set or extend (existing objects) with either:
4320 //
4321 // 1. An object of properties
4322 // 2. A key and value
4323 //
4324 this.set( owner, key, value );
4325
4326 // Since the "set" path can have two possible entry points
4327 // return the expected data based on which path was taken[*]
4328 return value !== undefined ? value : key;
4329 },
4330 remove: function( owner, key ) {
4331 var i,
4332 cache = owner[ this.expando ];
4333
4334 if ( cache === undefined ) {
4335 return;
4336 }
4337
4338 if ( key !== undefined ) {
4339
4340 // Support array or space separated string of keys
4341 if ( Array.isArray( key ) ) {
4342
4343 // If key is an array of keys...
4344 // We always set camelCase keys, so remove that.
4345 key = key.map( camelCase );
4346 } else {
4347 key = camelCase( key );
4348
4349 // If a key with the spaces exists, use it.
4350 // Otherwise, create an array by matching non-whitespace
4351 key = key in cache ?
4352 [ key ] :
4353 ( key.match( rnothtmlwhite ) || [] );
4354 }
4355
4356 i = key.length;
4357
4358 while ( i-- ) {
4359 delete cache[ key[ i ] ];
4360 }
4361 }
4362
4363 // Remove the expando if there's no more data
4364 if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
4365
4366 // Support: Chrome <=35 - 45
4367 // Webkit & Blink performance suffers when deleting properties
4368 // from DOM nodes, so set to undefined instead
4369 // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
4370 if ( owner.nodeType ) {
4371 owner[ this.expando ] = undefined;
4372 } else {
4373 delete owner[ this.expando ];
4374 }
4375 }
4376 },
4377 hasData: function( owner ) {
4378 var cache = owner[ this.expando ];
4379 return cache !== undefined && !jQuery.isEmptyObject( cache );
4380 }
4381};
4382var dataPriv = new Data();
4383
4384var dataUser = new Data();
4385
4386
4387
4388// Implementation Summary
4389//
4390// 1. Enforce API surface and semantic compatibility with 1.9.x branch
4391// 2. Improve the module's maintainability by reducing the storage
4392// paths to a single mechanism.
4393// 3. Use the same single mechanism to support "private" and "user" data.
4394// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
4395// 5. Avoid exposing implementation details on user objects (eg. expando properties)
4396// 6. Provide a clear path for implementation upgrade to WeakMap in 2014
4397
4398var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
4399 rmultiDash = /[A-Z]/g;
4400
4401function getData( data ) {
4402 if ( data === "true" ) {
4403 return true;
4404 }
4405
4406 if ( data === "false" ) {
4407 return false;
4408 }
4409
4410 if ( data === "null" ) {
4411 return null;
4412 }
4413
4414 // Only convert to a number if it doesn't change the string
4415 if ( data === +data + "" ) {
4416 return +data;
4417 }
4418
4419 if ( rbrace.test( data ) ) {
4420 return JSON.parse( data );
4421 }
4422
4423 return data;
4424}
4425
4426function dataAttr( elem, key, data ) {
4427 var name;
4428
4429 // If nothing was found internally, try to fetch any
4430 // data from the HTML5 data-* attribute
4431 if ( data === undefined && elem.nodeType === 1 ) {
4432 name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
4433 data = elem.getAttribute( name );
4434
4435 if ( typeof data === "string" ) {
4436 try {
4437 data = getData( data );
4438 } catch ( e ) {}
4439
4440 // Make sure we set the data so it isn't changed later
4441 dataUser.set( elem, key, data );
4442 } else {
4443 data = undefined;
4444 }
4445 }
4446 return data;
4447}
4448
4449jQuery.extend( {
4450 hasData: function( elem ) {
4451 return dataUser.hasData( elem ) || dataPriv.hasData( elem );
4452 },
4453
4454 data: function( elem, name, data ) {
4455 return dataUser.access( elem, name, data );
4456 },
4457
4458 removeData: function( elem, name ) {
4459 dataUser.remove( elem, name );
4460 },
4461
4462 // TODO: Now that all calls to _data and _removeData have been replaced
4463 // with direct calls to dataPriv methods, these can be deprecated.
4464 _data: function( elem, name, data ) {
4465 return dataPriv.access( elem, name, data );
4466 },
4467
4468 _removeData: function( elem, name ) {
4469 dataPriv.remove( elem, name );
4470 }
4471} );
4472
4473jQuery.fn.extend( {
4474 data: function( key, value ) {
4475 var i, name, data,
4476 elem = this[ 0 ],
4477 attrs = elem && elem.attributes;
4478
4479 // Gets all values
4480 if ( key === undefined ) {
4481 if ( this.length ) {
4482 data = dataUser.get( elem );
4483
4484 if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
4485 i = attrs.length;
4486 while ( i-- ) {
4487
4488 // Support: IE 11 only
4489 // The attrs elements can be null (#14894)
4490 if ( attrs[ i ] ) {
4491 name = attrs[ i ].name;
4492 if ( name.indexOf( "data-" ) === 0 ) {
4493 name = camelCase( name.slice( 5 ) );
4494 dataAttr( elem, name, data[ name ] );
4495 }
4496 }
4497 }
4498 dataPriv.set( elem, "hasDataAttrs", true );
4499 }
4500 }
4501
4502 return data;
4503 }
4504
4505 // Sets multiple values
4506 if ( typeof key === "object" ) {
4507 return this.each( function() {
4508 dataUser.set( this, key );
4509 } );
4510 }
4511
4512 return access( this, function( value ) {
4513 var data;
4514
4515 // The calling jQuery object (element matches) is not empty
4516 // (and therefore has an element appears at this[ 0 ]) and the
4517 // `value` parameter was not undefined. An empty jQuery object
4518 // will result in `undefined` for elem = this[ 0 ] which will
4519 // throw an exception if an attempt to read a data cache is made.
4520 if ( elem && value === undefined ) {
4521
4522 // Attempt to get data from the cache
4523 // The key will always be camelCased in Data
4524 data = dataUser.get( elem, key );
4525 if ( data !== undefined ) {
4526 return data;
4527 }
4528
4529 // Attempt to "discover" the data in
4530 // HTML5 custom data-* attrs
4531 data = dataAttr( elem, key );
4532 if ( data !== undefined ) {
4533 return data;
4534 }
4535
4536 // We tried really hard, but the data doesn't exist.
4537 return;
4538 }
4539
4540 // Set the data...
4541 this.each( function() {
4542
4543 // We always store the camelCased key
4544 dataUser.set( this, key, value );
4545 } );
4546 }, null, value, arguments.length > 1, null, true );
4547 },
4548
4549 removeData: function( key ) {
4550 return this.each( function() {
4551 dataUser.remove( this, key );
4552 } );
4553 }
4554} );
4555
4556
4557jQuery.extend( {
4558 queue: function( elem, type, data ) {
4559 var queue;
4560
4561 if ( elem ) {
4562 type = ( type || "fx" ) + "queue";
4563 queue = dataPriv.get( elem, type );
4564
4565 // Speed up dequeue by getting out quickly if this is just a lookup
4566 if ( data ) {
4567 if ( !queue || Array.isArray( data ) ) {
4568 queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
4569 } else {
4570 queue.push( data );
4571 }
4572 }
4573 return queue || [];
4574 }
4575 },
4576
4577 dequeue: function( elem, type ) {
4578 type = type || "fx";
4579
4580 var queue = jQuery.queue( elem, type ),
4581 startLength = queue.length,
4582 fn = queue.shift(),
4583 hooks = jQuery._queueHooks( elem, type ),
4584 next = function() {
4585 jQuery.dequeue( elem, type );
4586 };
4587
4588 // If the fx queue is dequeued, always remove the progress sentinel
4589 if ( fn === "inprogress" ) {
4590 fn = queue.shift();
4591 startLength--;
4592 }
4593
4594 if ( fn ) {
4595
4596 // Add a progress sentinel to prevent the fx queue from being
4597 // automatically dequeued
4598 if ( type === "fx" ) {
4599 queue.unshift( "inprogress" );
4600 }
4601
4602 // Clear up the last queue stop function
4603 delete hooks.stop;
4604 fn.call( elem, next, hooks );
4605 }
4606
4607 if ( !startLength && hooks ) {
4608 hooks.empty.fire();
4609 }
4610 },
4611
4612 // Not public - generate a queueHooks object, or return the current one
4613 _queueHooks: function( elem, type ) {
4614 var key = type + "queueHooks";
4615 return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
4616 empty: jQuery.Callbacks( "once memory" ).add( function() {
4617 dataPriv.remove( elem, [ type + "queue", key ] );
4618 } )
4619 } );
4620 }
4621} );
4622
4623jQuery.fn.extend( {
4624 queue: function( type, data ) {
4625 var setter = 2;
4626
4627 if ( typeof type !== "string" ) {
4628 data = type;
4629 type = "fx";
4630 setter--;
4631 }
4632
4633 if ( arguments.length < setter ) {
4634 return jQuery.queue( this[ 0 ], type );
4635 }
4636
4637 return data === undefined ?
4638 this :
4639 this.each( function() {
4640 var queue = jQuery.queue( this, type, data );
4641
4642 // Ensure a hooks for this queue
4643 jQuery._queueHooks( this, type );
4644
4645 if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
4646 jQuery.dequeue( this, type );
4647 }
4648 } );
4649 },
4650 dequeue: function( type ) {
4651 return this.each( function() {
4652 jQuery.dequeue( this, type );
4653 } );
4654 },
4655 clearQueue: function( type ) {
4656 return this.queue( type || "fx", [] );
4657 },
4658
4659 // Get a promise resolved when queues of a certain type
4660 // are emptied (fx is the type by default)
4661 promise: function( type, obj ) {
4662 var tmp,
4663 count = 1,
4664 defer = jQuery.Deferred(),
4665 elements = this,
4666 i = this.length,
4667 resolve = function() {
4668 if ( !( --count ) ) {
4669 defer.resolveWith( elements, [ elements ] );
4670 }
4671 };
4672
4673 if ( typeof type !== "string" ) {
4674 obj = type;
4675 type = undefined;
4676 }
4677 type = type || "fx";
4678
4679 while ( i-- ) {
4680 tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
4681 if ( tmp && tmp.empty ) {
4682 count++;
4683 tmp.empty.add( resolve );
4684 }
4685 }
4686 resolve();
4687 return defer.promise( obj );
4688 }
4689} );
4690var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
4691
4692var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
4693
4694
4695var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
4696
4697var documentElement = document.documentElement;
4698
4699
4700
4701 var isAttached = function( elem ) {
4702 return jQuery.contains( elem.ownerDocument, elem );
4703 },
4704 composed = { composed: true };
4705
4706 // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only
4707 // Check attachment across shadow DOM boundaries when possible (gh-3504)
4708 // Support: iOS 10.0-10.2 only
4709 // Early iOS 10 versions support `attachShadow` but not `getRootNode`,
4710 // leading to errors. We need to check for `getRootNode`.
4711 if ( documentElement.getRootNode ) {
4712 isAttached = function( elem ) {
4713 return jQuery.contains( elem.ownerDocument, elem ) ||
4714 elem.getRootNode( composed ) === elem.ownerDocument;
4715 };
4716 }
4717var isHiddenWithinTree = function( elem, el ) {
4718
4719 // isHiddenWithinTree might be called from jQuery#filter function;
4720 // in that case, element will be second argument
4721 elem = el || elem;
4722
4723 // Inline style trumps all
4724 return elem.style.display === "none" ||
4725 elem.style.display === "" &&
4726
4727 // Otherwise, check computed style
4728 // Support: Firefox <=43 - 45
4729 // Disconnected elements can have computed display: none, so first confirm that elem is
4730 // in the document.
4731 isAttached( elem ) &&
4732
4733 jQuery.css( elem, "display" ) === "none";
4734 };
4735
4736
4737
4738function adjustCSS( elem, prop, valueParts, tween ) {
4739 var adjusted, scale,
4740 maxIterations = 20,
4741 currentValue = tween ?
4742 function() {
4743 return tween.cur();
4744 } :
4745 function() {
4746 return jQuery.css( elem, prop, "" );
4747 },
4748 initial = currentValue(),
4749 unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
4750
4751 // Starting value computation is required for potential unit mismatches
4752 initialInUnit = elem.nodeType &&
4753 ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
4754 rcssNum.exec( jQuery.css( elem, prop ) );
4755
4756 if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
4757
4758 // Support: Firefox <=54
4759 // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)
4760 initial = initial / 2;
4761
4762 // Trust units reported by jQuery.css
4763 unit = unit || initialInUnit[ 3 ];
4764
4765 // Iteratively approximate from a nonzero starting point
4766 initialInUnit = +initial || 1;
4767
4768 while ( maxIterations-- ) {
4769
4770 // Evaluate and update our best guess (doubling guesses that zero out).
4771 // Finish if the scale equals or crosses 1 (making the old*new product non-positive).
4772 jQuery.style( elem, prop, initialInUnit + unit );
4773 if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {
4774 maxIterations = 0;
4775 }
4776 initialInUnit = initialInUnit / scale;
4777
4778 }
4779
4780 initialInUnit = initialInUnit * 2;
4781 jQuery.style( elem, prop, initialInUnit + unit );
4782
4783 // Make sure we update the tween properties later on
4784 valueParts = valueParts || [];
4785 }
4786
4787 if ( valueParts ) {
4788 initialInUnit = +initialInUnit || +initial || 0;
4789
4790 // Apply relative offset (+=/-=) if specified
4791 adjusted = valueParts[ 1 ] ?
4792 initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
4793 +valueParts[ 2 ];
4794 if ( tween ) {
4795 tween.unit = unit;
4796 tween.start = initialInUnit;
4797 tween.end = adjusted;
4798 }
4799 }
4800 return adjusted;
4801}
4802
4803
4804var defaultDisplayMap = {};
4805
4806function getDefaultDisplay( elem ) {
4807 var temp,
4808 doc = elem.ownerDocument,
4809 nodeName = elem.nodeName,
4810 display = defaultDisplayMap[ nodeName ];
4811
4812 if ( display ) {
4813 return display;
4814 }
4815
4816 temp = doc.body.appendChild( doc.createElement( nodeName ) );
4817 display = jQuery.css( temp, "display" );
4818
4819 temp.parentNode.removeChild( temp );
4820
4821 if ( display === "none" ) {
4822 display = "block";
4823 }
4824 defaultDisplayMap[ nodeName ] = display;
4825
4826 return display;
4827}
4828
4829function showHide( elements, show ) {
4830 var display, elem,
4831 values = [],
4832 index = 0,
4833 length = elements.length;
4834
4835 // Determine new display value for elements that need to change
4836 for ( ; index < length; index++ ) {
4837 elem = elements[ index ];
4838 if ( !elem.style ) {
4839 continue;
4840 }
4841
4842 display = elem.style.display;
4843 if ( show ) {
4844
4845 // Since we force visibility upon cascade-hidden elements, an immediate (and slow)
4846 // check is required in this first loop unless we have a nonempty display value (either
4847 // inline or about-to-be-restored)
4848 if ( display === "none" ) {
4849 values[ index ] = dataPriv.get( elem, "display" ) || null;
4850 if ( !values[ index ] ) {
4851 elem.style.display = "";
4852 }
4853 }
4854 if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
4855 values[ index ] = getDefaultDisplay( elem );
4856 }
4857 } else {
4858 if ( display !== "none" ) {
4859 values[ index ] = "none";
4860
4861 // Remember what we're overwriting
4862 dataPriv.set( elem, "display", display );
4863 }
4864 }
4865 }
4866
4867 // Set the display of the elements in a second loop to avoid constant reflow
4868 for ( index = 0; index < length; index++ ) {
4869 if ( values[ index ] != null ) {
4870 elements[ index ].style.display = values[ index ];
4871 }
4872 }
4873
4874 return elements;
4875}
4876
4877jQuery.fn.extend( {
4878 show: function() {
4879 return showHide( this, true );
4880 },
4881 hide: function() {
4882 return showHide( this );
4883 },
4884 toggle: function( state ) {
4885 if ( typeof state === "boolean" ) {
4886 return state ? this.show() : this.hide();
4887 }
4888
4889 return this.each( function() {
4890 if ( isHiddenWithinTree( this ) ) {
4891 jQuery( this ).show();
4892 } else {
4893 jQuery( this ).hide();
4894 }
4895 } );
4896 }
4897} );
4898var rcheckableType = ( /^(?:checkbox|radio)$/i );
4899
4900var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i );
4901
4902var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );
4903
4904
4905
4906( function() {
4907 var fragment = document.createDocumentFragment(),
4908 div = fragment.appendChild( document.createElement( "div" ) ),
4909 input = document.createElement( "input" );
4910
4911 // Support: Android 4.0 - 4.3 only
4912 // Check state lost if the name is set (#11217)
4913 // Support: Windows Web Apps (WWA)
4914 // `name` and `type` must use .setAttribute for WWA (#14901)
4915 input.setAttribute( "type", "radio" );
4916 input.setAttribute( "checked", "checked" );
4917 input.setAttribute( "name", "t" );
4918
4919 div.appendChild( input );
4920
4921 // Support: Android <=4.1 only
4922 // Older WebKit doesn't clone checked state correctly in fragments
4923 support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
4924
4925 // Support: IE <=11 only
4926 // Make sure textarea (and checkbox) defaultValue is properly cloned
4927 div.innerHTML = "<textarea>x</textarea>";
4928 support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
4929
4930 // Support: IE <=9 only
4931 // IE <=9 replaces <option> tags with their contents when inserted outside of
4932 // the select element.
4933 div.innerHTML = "<option></option>";
4934 support.option = !!div.lastChild;
4935} )();
4936
4937
4938// We have to close these tags to support XHTML (#13200)
4939var wrapMap = {
4940
4941 // XHTML parsers do not magically insert elements in the
4942 // same way that tag soup parsers do. So we cannot shorten
4943 // this by omitting <tbody> or other required elements.
4944 thead: [ 1, "<table>", "</table>" ],
4945 col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
4946 tr: [ 2, "<table><tbody>", "</tbody></table>" ],
4947 td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
4948
4949 _default: [ 0, "", "" ]
4950};
4951
4952wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
4953wrapMap.th = wrapMap.td;
4954
4955// Support: IE <=9 only
4956if ( !support.option ) {
4957 wrapMap.optgroup = wrapMap.option = [ 1, "<select multiple='multiple'>", "</select>" ];
4958}
4959
4960
4961function getAll( context, tag ) {
4962
4963 // Support: IE <=9 - 11 only
4964 // Use typeof to avoid zero-argument method invocation on host objects (#15151)
4965 var ret;
4966
4967 if ( typeof context.getElementsByTagName !== "undefined" ) {
4968 ret = context.getElementsByTagName( tag || "*" );
4969
4970 } else if ( typeof context.querySelectorAll !== "undefined" ) {
4971 ret = context.querySelectorAll( tag || "*" );
4972
4973 } else {
4974 ret = [];
4975 }
4976
4977 if ( tag === undefined || tag && nodeName( context, tag ) ) {
4978 return jQuery.merge( [ context ], ret );
4979 }
4980
4981 return ret;
4982}
4983
4984
4985// Mark scripts as having already been evaluated
4986function setGlobalEval( elems, refElements ) {
4987 var i = 0,
4988 l = elems.length;
4989
4990 for ( ; i < l; i++ ) {
4991 dataPriv.set(
4992 elems[ i ],
4993 "globalEval",
4994 !refElements || dataPriv.get( refElements[ i ], "globalEval" )
4995 );
4996 }
4997}
4998
4999
5000var rhtml = /<|&#?\w+;/;
5001
5002function buildFragment( elems, context, scripts, selection, ignored ) {
5003 var elem, tmp, tag, wrap, attached, j,
5004 fragment = context.createDocumentFragment(),
5005 nodes = [],
5006 i = 0,
5007 l = elems.length;
5008
5009 for ( ; i < l; i++ ) {
5010 elem = elems[ i ];
5011
5012 if ( elem || elem === 0 ) {
5013
5014 // Add nodes directly
5015 if ( toType( elem ) === "object" ) {
5016
5017 // Support: Android <=4.0 only, PhantomJS 1 only
5018 // push.apply(_, arraylike) throws on ancient WebKit
5019 jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
5020
5021 // Convert non-html into a text node
5022 } else if ( !rhtml.test( elem ) ) {
5023 nodes.push( context.createTextNode( elem ) );
5024
5025 // Convert html into DOM nodes
5026 } else {
5027 tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
5028
5029 // Deserialize a standard representation
5030 tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
5031 wrap = wrapMap[ tag ] || wrapMap._default;
5032 tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
5033
5034 // Descend through wrappers to the right content
5035 j = wrap[ 0 ];
5036 while ( j-- ) {
5037 tmp = tmp.lastChild;
5038 }
5039
5040 // Support: Android <=4.0 only, PhantomJS 1 only
5041 // push.apply(_, arraylike) throws on ancient WebKit
5042 jQuery.merge( nodes, tmp.childNodes );
5043
5044 // Remember the top-level container
5045 tmp = fragment.firstChild;
5046
5047 // Ensure the created nodes are orphaned (#12392)
5048 tmp.textContent = "";
5049 }
5050 }
5051 }
5052
5053 // Remove wrapper from fragment
5054 fragment.textContent = "";
5055
5056 i = 0;
5057 while ( ( elem = nodes[ i++ ] ) ) {
5058
5059 // Skip elements already in the context collection (trac-4087)
5060 if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
5061 if ( ignored ) {
5062 ignored.push( elem );
5063 }
5064 continue;
5065 }
5066
5067 attached = isAttached( elem );
5068
5069 // Append to fragment
5070 tmp = getAll( fragment.appendChild( elem ), "script" );
5071
5072 // Preserve script evaluation history
5073 if ( attached ) {
5074 setGlobalEval( tmp );
5075 }
5076
5077 // Capture executables
5078 if ( scripts ) {
5079 j = 0;
5080 while ( ( elem = tmp[ j++ ] ) ) {
5081 if ( rscriptType.test( elem.type || "" ) ) {
5082 scripts.push( elem );
5083 }
5084 }
5085 }
5086 }
5087
5088 return fragment;
5089}
5090
5091
5092var
5093 rkeyEvent = /^key/,
5094 rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
5095 rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
5096
5097function returnTrue() {
5098 return true;
5099}
5100
5101function returnFalse() {
5102 return false;
5103}
5104
5105// Support: IE <=9 - 11+
5106// focus() and blur() are asynchronous, except when they are no-op.
5107// So expect focus to be synchronous when the element is already active,
5108// and blur to be synchronous when the element is not already active.
5109// (focus and blur are always synchronous in other supported browsers,
5110// this just defines when we can count on it).
5111function expectSync( elem, type ) {
5112 return ( elem === safeActiveElement() ) === ( type === "focus" );
5113}
5114
5115// Support: IE <=9 only
5116// Accessing document.activeElement can throw unexpectedly
5117// https://bugs.jquery.com/ticket/13393
5118function safeActiveElement() {
5119 try {
5120 return document.activeElement;
5121 } catch ( err ) { }
5122}
5123
5124function on( elem, types, selector, data, fn, one ) {
5125 var origFn, type;
5126
5127 // Types can be a map of types/handlers
5128 if ( typeof types === "object" ) {
5129
5130 // ( types-Object, selector, data )
5131 if ( typeof selector !== "string" ) {
5132
5133 // ( types-Object, data )
5134 data = data || selector;
5135 selector = undefined;
5136 }
5137 for ( type in types ) {
5138 on( elem, type, selector, data, types[ type ], one );
5139 }
5140 return elem;
5141 }
5142
5143 if ( data == null && fn == null ) {
5144
5145 // ( types, fn )
5146 fn = selector;
5147 data = selector = undefined;
5148 } else if ( fn == null ) {
5149 if ( typeof selector === "string" ) {
5150
5151 // ( types, selector, fn )
5152 fn = data;
5153 data = undefined;
5154 } else {
5155
5156 // ( types, data, fn )
5157 fn = data;
5158 data = selector;
5159 selector = undefined;
5160 }
5161 }
5162 if ( fn === false ) {
5163 fn = returnFalse;
5164 } else if ( !fn ) {
5165 return elem;
5166 }
5167
5168 if ( one === 1 ) {
5169 origFn = fn;
5170 fn = function( event ) {
5171
5172 // Can use an empty set, since event contains the info
5173 jQuery().off( event );
5174 return origFn.apply( this, arguments );
5175 };
5176
5177 // Use same guid so caller can remove using origFn
5178 fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
5179 }
5180 return elem.each( function() {
5181 jQuery.event.add( this, types, fn, data, selector );
5182 } );
5183}
5184
5185/*
5186 * Helper functions for managing events -- not part of the public interface.
5187 * Props to Dean Edwards' addEvent library for many of the ideas.
5188 */
5189jQuery.event = {
5190
5191 global: {},
5192
5193 add: function( elem, types, handler, data, selector ) {
5194
5195 var handleObjIn, eventHandle, tmp,
5196 events, t, handleObj,
5197 special, handlers, type, namespaces, origType,
5198 elemData = dataPriv.get( elem );
5199
5200 // Only attach events to objects that accept data
5201 if ( !acceptData( elem ) ) {
5202 return;
5203 }
5204
5205 // Caller can pass in an object of custom data in lieu of the handler
5206 if ( handler.handler ) {
5207 handleObjIn = handler;
5208 handler = handleObjIn.handler;
5209 selector = handleObjIn.selector;
5210 }
5211
5212 // Ensure that invalid selectors throw exceptions at attach time
5213 // Evaluate against documentElement in case elem is a non-element node (e.g., document)
5214 if ( selector ) {
5215 jQuery.find.matchesSelector( documentElement, selector );
5216 }
5217
5218 // Make sure that the handler has a unique ID, used to find/remove it later
5219 if ( !handler.guid ) {
5220 handler.guid = jQuery.guid++;
5221 }
5222
5223 // Init the element's event structure and main handler, if this is the first
5224 if ( !( events = elemData.events ) ) {
5225 events = elemData.events = Object.create( null );
5226 }
5227 if ( !( eventHandle = elemData.handle ) ) {
5228 eventHandle = elemData.handle = function( e ) {
5229
5230 // Discard the second event of a jQuery.event.trigger() and
5231 // when an event is called after a page has unloaded
5232 return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
5233 jQuery.event.dispatch.apply( elem, arguments ) : undefined;
5234 };
5235 }
5236
5237 // Handle multiple events separated by a space
5238 types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
5239 t = types.length;
5240 while ( t-- ) {
5241 tmp = rtypenamespace.exec( types[ t ] ) || [];
5242 type = origType = tmp[ 1 ];
5243 namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
5244
5245 // There *must* be a type, no attaching namespace-only handlers
5246 if ( !type ) {
5247 continue;
5248 }
5249
5250 // If event changes its type, use the special event handlers for the changed type
5251 special = jQuery.event.special[ type ] || {};
5252
5253 // If selector defined, determine special event api type, otherwise given type
5254 type = ( selector ? special.delegateType : special.bindType ) || type;
5255
5256 // Update special based on newly reset type
5257 special = jQuery.event.special[ type ] || {};
5258
5259 // handleObj is passed to all event handlers
5260 handleObj = jQuery.extend( {
5261 type: type,
5262 origType: origType,
5263 data: data,
5264 handler: handler,
5265 guid: handler.guid,
5266 selector: selector,
5267 needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
5268 namespace: namespaces.join( "." )
5269 }, handleObjIn );
5270
5271 // Init the event handler queue if we're the first
5272 if ( !( handlers = events[ type ] ) ) {
5273 handlers = events[ type ] = [];
5274 handlers.delegateCount = 0;
5275
5276 // Only use addEventListener if the special events handler returns false
5277 if ( !special.setup ||
5278 special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
5279
5280 if ( elem.addEventListener ) {
5281 elem.addEventListener( type, eventHandle );
5282 }
5283 }
5284 }
5285
5286 if ( special.add ) {
5287 special.add.call( elem, handleObj );
5288
5289 if ( !handleObj.handler.guid ) {
5290 handleObj.handler.guid = handler.guid;
5291 }
5292 }
5293
5294 // Add to the element's handler list, delegates in front
5295 if ( selector ) {
5296 handlers.splice( handlers.delegateCount++, 0, handleObj );
5297 } else {
5298 handlers.push( handleObj );
5299 }
5300
5301 // Keep track of which events have ever been used, for event optimization
5302 jQuery.event.global[ type ] = true;
5303 }
5304
5305 },
5306
5307 // Detach an event or set of events from an element
5308 remove: function( elem, types, handler, selector, mappedTypes ) {
5309
5310 var j, origCount, tmp,
5311 events, t, handleObj,
5312 special, handlers, type, namespaces, origType,
5313 elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
5314
5315 if ( !elemData || !( events = elemData.events ) ) {
5316 return;
5317 }
5318
5319 // Once for each type.namespace in types; type may be omitted
5320 types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
5321 t = types.length;
5322 while ( t-- ) {
5323 tmp = rtypenamespace.exec( types[ t ] ) || [];
5324 type = origType = tmp[ 1 ];
5325 namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
5326
5327 // Unbind all events (on this namespace, if provided) for the element
5328 if ( !type ) {
5329 for ( type in events ) {
5330 jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
5331 }
5332 continue;
5333 }
5334
5335 special = jQuery.event.special[ type ] || {};
5336 type = ( selector ? special.delegateType : special.bindType ) || type;
5337 handlers = events[ type ] || [];
5338 tmp = tmp[ 2 ] &&
5339 new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
5340
5341 // Remove matching events
5342 origCount = j = handlers.length;
5343 while ( j-- ) {
5344 handleObj = handlers[ j ];
5345
5346 if ( ( mappedTypes || origType === handleObj.origType ) &&
5347 ( !handler || handler.guid === handleObj.guid ) &&
5348 ( !tmp || tmp.test( handleObj.namespace ) ) &&
5349 ( !selector || selector === handleObj.selector ||
5350 selector === "**" && handleObj.selector ) ) {
5351 handlers.splice( j, 1 );
5352
5353 if ( handleObj.selector ) {
5354 handlers.delegateCount--;
5355 }
5356 if ( special.remove ) {
5357 special.remove.call( elem, handleObj );
5358 }
5359 }
5360 }
5361
5362 // Remove generic event handler if we removed something and no more handlers exist
5363 // (avoids potential for endless recursion during removal of special event handlers)
5364 if ( origCount && !handlers.length ) {
5365 if ( !special.teardown ||
5366 special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
5367
5368 jQuery.removeEvent( elem, type, elemData.handle );
5369 }
5370
5371 delete events[ type ];
5372 }
5373 }
5374
5375 // Remove data and the expando if it's no longer used
5376 if ( jQuery.isEmptyObject( events ) ) {
5377 dataPriv.remove( elem, "handle events" );
5378 }
5379 },
5380
5381 dispatch: function( nativeEvent ) {
5382
5383 var i, j, ret, matched, handleObj, handlerQueue,
5384 args = new Array( arguments.length ),
5385
5386 // Make a writable jQuery.Event from the native event object
5387 event = jQuery.event.fix( nativeEvent ),
5388
5389 handlers = (
5390 dataPriv.get( this, "events" ) || Object.create( null )
5391 )[ event.type ] || [],
5392 special = jQuery.event.special[ event.type ] || {};
5393
5394 // Use the fix-ed jQuery.Event rather than the (read-only) native event
5395 args[ 0 ] = event;
5396
5397 for ( i = 1; i < arguments.length; i++ ) {
5398 args[ i ] = arguments[ i ];
5399 }
5400
5401 event.delegateTarget = this;
5402
5403 // Call the preDispatch hook for the mapped type, and let it bail if desired
5404 if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
5405 return;
5406 }
5407
5408 // Determine handlers
5409 handlerQueue = jQuery.event.handlers.call( this, event, handlers );
5410
5411 // Run delegates first; they may want to stop propagation beneath us
5412 i = 0;
5413 while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
5414 event.currentTarget = matched.elem;
5415
5416 j = 0;
5417 while ( ( handleObj = matched.handlers[ j++ ] ) &&
5418 !event.isImmediatePropagationStopped() ) {
5419
5420 // If the event is namespaced, then each handler is only invoked if it is
5421 // specially universal or its namespaces are a superset of the event's.
5422 if ( !event.rnamespace || handleObj.namespace === false ||
5423 event.rnamespace.test( handleObj.namespace ) ) {
5424
5425 event.handleObj = handleObj;
5426 event.data = handleObj.data;
5427
5428 ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
5429 handleObj.handler ).apply( matched.elem, args );
5430
5431 if ( ret !== undefined ) {
5432 if ( ( event.result = ret ) === false ) {
5433 event.preventDefault();
5434 event.stopPropagation();
5435 }
5436 }
5437 }
5438 }
5439 }
5440
5441 // Call the postDispatch hook for the mapped type
5442 if ( special.postDispatch ) {
5443 special.postDispatch.call( this, event );
5444 }
5445
5446 return event.result;
5447 },
5448
5449 handlers: function( event, handlers ) {
5450 var i, handleObj, sel, matchedHandlers, matchedSelectors,
5451 handlerQueue = [],
5452 delegateCount = handlers.delegateCount,
5453 cur = event.target;
5454
5455 // Find delegate handlers
5456 if ( delegateCount &&
5457
5458 // Support: IE <=9
5459 // Black-hole SVG <use> instance trees (trac-13180)
5460 cur.nodeType &&
5461
5462 // Support: Firefox <=42
5463 // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
5464 // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
5465 // Support: IE 11 only
5466 // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
5467 !( event.type === "click" && event.button >= 1 ) ) {
5468
5469 for ( ; cur !== this; cur = cur.parentNode || this ) {
5470
5471 // Don't check non-elements (#13208)
5472 // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
5473 if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
5474 matchedHandlers = [];
5475 matchedSelectors = {};
5476 for ( i = 0; i < delegateCount; i++ ) {
5477 handleObj = handlers[ i ];
5478
5479 // Don't conflict with Object.prototype properties (#13203)
5480 sel = handleObj.selector + " ";
5481
5482 if ( matchedSelectors[ sel ] === undefined ) {
5483 matchedSelectors[ sel ] = handleObj.needsContext ?
5484 jQuery( sel, this ).index( cur ) > -1 :
5485 jQuery.find( sel, this, null, [ cur ] ).length;
5486 }
5487 if ( matchedSelectors[ sel ] ) {
5488 matchedHandlers.push( handleObj );
5489 }
5490 }
5491 if ( matchedHandlers.length ) {
5492 handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
5493 }
5494 }
5495 }
5496 }
5497
5498 // Add the remaining (directly-bound) handlers
5499 cur = this;
5500 if ( delegateCount < handlers.length ) {
5501 handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
5502 }
5503
5504 return handlerQueue;
5505 },
5506
5507 addProp: function( name, hook ) {
5508 Object.defineProperty( jQuery.Event.prototype, name, {
5509 enumerable: true,
5510 configurable: true,
5511
5512 get: isFunction( hook ) ?
5513 function() {
5514 if ( this.originalEvent ) {
5515 return hook( this.originalEvent );
5516 }
5517 } :
5518 function() {
5519 if ( this.originalEvent ) {
5520 return this.originalEvent[ name ];
5521 }
5522 },
5523
5524 set: function( value ) {
5525 Object.defineProperty( this, name, {
5526 enumerable: true,
5527 configurable: true,
5528 writable: true,
5529 value: value
5530 } );
5531 }
5532 } );
5533 },
5534
5535 fix: function( originalEvent ) {
5536 return originalEvent[ jQuery.expando ] ?
5537 originalEvent :
5538 new jQuery.Event( originalEvent );
5539 },
5540
5541 special: {
5542 load: {
5543
5544 // Prevent triggered image.load events from bubbling to window.load
5545 noBubble: true
5546 },
5547 click: {
5548
5549 // Utilize native event to ensure correct state for checkable inputs
5550 setup: function( data ) {
5551
5552 // For mutual compressibility with _default, replace `this` access with a local var.
5553 // `|| data` is dead code meant only to preserve the variable through minification.
5554 var el = this || data;
5555
5556 // Claim the first handler
5557 if ( rcheckableType.test( el.type ) &&
5558 el.click && nodeName( el, "input" ) ) {
5559
5560 // dataPriv.set( el, "click", ... )
5561 leverageNative( el, "click", returnTrue );
5562 }
5563
5564 // Return false to allow normal processing in the caller
5565 return false;
5566 },
5567 trigger: function( data ) {
5568
5569 // For mutual compressibility with _default, replace `this` access with a local var.
5570 // `|| data` is dead code meant only to preserve the variable through minification.
5571 var el = this || data;
5572
5573 // Force setup before triggering a click
5574 if ( rcheckableType.test( el.type ) &&
5575 el.click && nodeName( el, "input" ) ) {
5576
5577 leverageNative( el, "click" );
5578 }
5579
5580 // Return non-false to allow normal event-path propagation
5581 return true;
5582 },
5583
5584 // For cross-browser consistency, suppress native .click() on links
5585 // Also prevent it if we're currently inside a leveraged native-event stack
5586 _default: function( event ) {
5587 var target = event.target;
5588 return rcheckableType.test( target.type ) &&
5589 target.click && nodeName( target, "input" ) &&
5590 dataPriv.get( target, "click" ) ||
5591 nodeName( target, "a" );
5592 }
5593 },
5594
5595 beforeunload: {
5596 postDispatch: function( event ) {
5597
5598 // Support: Firefox 20+
5599 // Firefox doesn't alert if the returnValue field is not set.
5600 if ( event.result !== undefined && event.originalEvent ) {
5601 event.originalEvent.returnValue = event.result;
5602 }
5603 }
5604 }
5605 }
5606};
5607
5608// Ensure the presence of an event listener that handles manually-triggered
5609// synthetic events by interrupting progress until reinvoked in response to
5610// *native* events that it fires directly, ensuring that state changes have
5611// already occurred before other listeners are invoked.
5612function leverageNative( el, type, expectSync ) {
5613
5614 // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add
5615 if ( !expectSync ) {
5616 if ( dataPriv.get( el, type ) === undefined ) {
5617 jQuery.event.add( el, type, returnTrue );
5618 }
5619 return;
5620 }
5621
5622 // Register the controller as a special universal handler for all event namespaces
5623 dataPriv.set( el, type, false );
5624 jQuery.event.add( el, type, {
5625 namespace: false,
5626 handler: function( event ) {
5627 var notAsync, result,
5628 saved = dataPriv.get( this, type );
5629
5630 if ( ( event.isTrigger & 1 ) && this[ type ] ) {
5631
5632 // Interrupt processing of the outer synthetic .trigger()ed event
5633 // Saved data should be false in such cases, but might be a leftover capture object
5634 // from an async native handler (gh-4350)
5635 if ( !saved.length ) {
5636
5637 // Store arguments for use when handling the inner native event
5638 // There will always be at least one argument (an event object), so this array
5639 // will not be confused with a leftover capture object.
5640 saved = slice.call( arguments );
5641 dataPriv.set( this, type, saved );
5642
5643 // Trigger the native event and capture its result
5644 // Support: IE <=9 - 11+
5645 // focus() and blur() are asynchronous
5646 notAsync = expectSync( this, type );
5647 this[ type ]();
5648 result = dataPriv.get( this, type );
5649 if ( saved !== result || notAsync ) {
5650 dataPriv.set( this, type, false );
5651 } else {
5652 result = {};
5653 }
5654 if ( saved !== result ) {
5655
5656 // Cancel the outer synthetic event
5657 event.stopImmediatePropagation();
5658 event.preventDefault();
5659 return result.value;
5660 }
5661
5662 // If this is an inner synthetic event for an event with a bubbling surrogate
5663 // (focus or blur), assume that the surrogate already propagated from triggering the
5664 // native event and prevent that from happening again here.
5665 // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the
5666 // bubbling surrogate propagates *after* the non-bubbling base), but that seems
5667 // less bad than duplication.
5668 } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {
5669 event.stopPropagation();
5670 }
5671
5672 // If this is a native event triggered above, everything is now in order
5673 // Fire an inner synthetic event with the original arguments
5674 } else if ( saved.length ) {
5675
5676 // ...and capture the result
5677 dataPriv.set( this, type, {
5678 value: jQuery.event.trigger(
5679
5680 // Support: IE <=9 - 11+
5681 // Extend with the prototype to reset the above stopImmediatePropagation()
5682 jQuery.extend( saved[ 0 ], jQuery.Event.prototype ),
5683 saved.slice( 1 ),
5684 this
5685 )
5686 } );
5687
5688 // Abort handling of the native event
5689 event.stopImmediatePropagation();
5690 }
5691 }
5692 } );
5693}
5694
5695jQuery.removeEvent = function( elem, type, handle ) {
5696
5697 // This "if" is needed for plain objects
5698 if ( elem.removeEventListener ) {
5699 elem.removeEventListener( type, handle );
5700 }
5701};
5702
5703jQuery.Event = function( src, props ) {
5704
5705 // Allow instantiation without the 'new' keyword
5706 if ( !( this instanceof jQuery.Event ) ) {
5707 return new jQuery.Event( src, props );
5708 }
5709
5710 // Event object
5711 if ( src && src.type ) {
5712 this.originalEvent = src;
5713 this.type = src.type;
5714
5715 // Events bubbling up the document may have been marked as prevented
5716 // by a handler lower down the tree; reflect the correct value.
5717 this.isDefaultPrevented = src.defaultPrevented ||
5718 src.defaultPrevented === undefined &&
5719
5720 // Support: Android <=2.3 only
5721 src.returnValue === false ?
5722 returnTrue :
5723 returnFalse;
5724
5725 // Create target properties
5726 // Support: Safari <=6 - 7 only
5727 // Target should not be a text node (#504, #13143)
5728 this.target = ( src.target && src.target.nodeType === 3 ) ?
5729 src.target.parentNode :
5730 src.target;
5731
5732 this.currentTarget = src.currentTarget;
5733 this.relatedTarget = src.relatedTarget;
5734
5735 // Event type
5736 } else {
5737 this.type = src;
5738 }
5739
5740 // Put explicitly provided properties onto the event object
5741 if ( props ) {
5742 jQuery.extend( this, props );
5743 }
5744
5745 // Create a timestamp if incoming event doesn't have one
5746 this.timeStamp = src && src.timeStamp || Date.now();
5747
5748 // Mark it as fixed
5749 this[ jQuery.expando ] = true;
5750};
5751
5752// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
5753// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
5754jQuery.Event.prototype = {
5755 constructor: jQuery.Event,
5756 isDefaultPrevented: returnFalse,
5757 isPropagationStopped: returnFalse,
5758 isImmediatePropagationStopped: returnFalse,
5759 isSimulated: false,
5760
5761 preventDefault: function() {
5762 var e = this.originalEvent;
5763
5764 this.isDefaultPrevented = returnTrue;
5765
5766 if ( e && !this.isSimulated ) {
5767 e.preventDefault();
5768 }
5769 },
5770 stopPropagation: function() {
5771 var e = this.originalEvent;
5772
5773 this.isPropagationStopped = returnTrue;
5774
5775 if ( e && !this.isSimulated ) {
5776 e.stopPropagation();
5777 }
5778 },
5779 stopImmediatePropagation: function() {
5780 var e = this.originalEvent;
5781
5782 this.isImmediatePropagationStopped = returnTrue;
5783
5784 if ( e && !this.isSimulated ) {
5785 e.stopImmediatePropagation();
5786 }
5787
5788 this.stopPropagation();
5789 }
5790};
5791
5792// Includes all common event props including KeyEvent and MouseEvent specific props
5793jQuery.each( {
5794 altKey: true,
5795 bubbles: true,
5796 cancelable: true,
5797 changedTouches: true,
5798 ctrlKey: true,
5799 detail: true,
5800 eventPhase: true,
5801 metaKey: true,
5802 pageX: true,
5803 pageY: true,
5804 shiftKey: true,
5805 view: true,
5806 "char": true,
5807 code: true,
5808 charCode: true,
5809 key: true,
5810 keyCode: true,
5811 button: true,
5812 buttons: true,
5813 clientX: true,
5814 clientY: true,
5815 offsetX: true,
5816 offsetY: true,
5817 pointerId: true,
5818 pointerType: true,
5819 screenX: true,
5820 screenY: true,
5821 targetTouches: true,
5822 toElement: true,
5823 touches: true,
5824
5825 which: function( event ) {
5826 var button = event.button;
5827
5828 // Add which for key events
5829 if ( event.which == null && rkeyEvent.test( event.type ) ) {
5830 return event.charCode != null ? event.charCode : event.keyCode;
5831 }
5832
5833 // Add which for click: 1 === left; 2 === middle; 3 === right
5834 if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {
5835 if ( button & 1 ) {
5836 return 1;
5837 }
5838
5839 if ( button & 2 ) {
5840 return 3;
5841 }
5842
5843 if ( button & 4 ) {
5844 return 2;
5845 }
5846
5847 return 0;
5848 }
5849
5850 return event.which;
5851 }
5852}, jQuery.event.addProp );
5853
5854jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) {
5855 jQuery.event.special[ type ] = {
5856
5857 // Utilize native event if possible so blur/focus sequence is correct
5858 setup: function() {
5859
5860 // Claim the first handler
5861 // dataPriv.set( this, "focus", ... )
5862 // dataPriv.set( this, "blur", ... )
5863 leverageNative( this, type, expectSync );
5864
5865 // Return false to allow normal processing in the caller
5866 return false;
5867 },
5868 trigger: function() {
5869
5870 // Force setup before trigger
5871 leverageNative( this, type );
5872
5873 // Return non-false to allow normal event-path propagation
5874 return true;
5875 },
5876
5877 delegateType: delegateType
5878 };
5879} );
5880
5881// Create mouseenter/leave events using mouseover/out and event-time checks
5882// so that event delegation works in jQuery.
5883// Do the same for pointerenter/pointerleave and pointerover/pointerout
5884//
5885// Support: Safari 7 only
5886// Safari sends mouseenter too often; see:
5887// https://bugs.chromium.org/p/chromium/issues/detail?id=470258
5888// for the description of the bug (it existed in older Chrome versions as well).
5889jQuery.each( {
5890 mouseenter: "mouseover",
5891 mouseleave: "mouseout",
5892 pointerenter: "pointerover",
5893 pointerleave: "pointerout"
5894}, function( orig, fix ) {
5895 jQuery.event.special[ orig ] = {
5896 delegateType: fix,
5897 bindType: fix,
5898
5899 handle: function( event ) {
5900 var ret,
5901 target = this,
5902 related = event.relatedTarget,
5903 handleObj = event.handleObj;
5904
5905 // For mouseenter/leave call the handler if related is outside the target.
5906 // NB: No relatedTarget if the mouse left/entered the browser window
5907 if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
5908 event.type = handleObj.origType;
5909 ret = handleObj.handler.apply( this, arguments );
5910 event.type = fix;
5911 }
5912 return ret;
5913 }
5914 };
5915} );
5916
5917jQuery.fn.extend( {
5918
5919 on: function( types, selector, data, fn ) {
5920 return on( this, types, selector, data, fn );
5921 },
5922 one: function( types, selector, data, fn ) {
5923 return on( this, types, selector, data, fn, 1 );
5924 },
5925 off: function( types, selector, fn ) {
5926 var handleObj, type;
5927 if ( types && types.preventDefault && types.handleObj ) {
5928
5929 // ( event ) dispatched jQuery.Event
5930 handleObj = types.handleObj;
5931 jQuery( types.delegateTarget ).off(
5932 handleObj.namespace ?
5933 handleObj.origType + "." + handleObj.namespace :
5934 handleObj.origType,
5935 handleObj.selector,
5936 handleObj.handler
5937 );
5938 return this;
5939 }
5940 if ( typeof types === "object" ) {
5941
5942 // ( types-object [, selector] )
5943 for ( type in types ) {
5944 this.off( type, selector, types[ type ] );
5945 }
5946 return this;
5947 }
5948 if ( selector === false || typeof selector === "function" ) {
5949
5950 // ( types [, fn] )
5951 fn = selector;
5952 selector = undefined;
5953 }
5954 if ( fn === false ) {
5955 fn = returnFalse;
5956 }
5957 return this.each( function() {
5958 jQuery.event.remove( this, types, fn, selector );
5959 } );
5960 }
5961} );
5962
5963
5964var
5965
5966 // Support: IE <=10 - 11, Edge 12 - 13 only
5967 // In IE/Edge using regex groups here causes severe slowdowns.
5968 // See https://connect.microsoft.com/IE/feedback/details/1736512/
5969 rnoInnerhtml = /<script|<style|<link/i,
5970
5971 // checked="checked" or checked
5972 rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
5973 rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
5974
5975// Prefer a tbody over its parent table for containing new rows
5976function manipulationTarget( elem, content ) {
5977 if ( nodeName( elem, "table" ) &&
5978 nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
5979
5980 return jQuery( elem ).children( "tbody" )[ 0 ] || elem;
5981 }
5982
5983 return elem;
5984}
5985
5986// Replace/restore the type attribute of script elements for safe DOM manipulation
5987function disableScript( elem ) {
5988 elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;
5989 return elem;
5990}
5991function restoreScript( elem ) {
5992 if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) {
5993 elem.type = elem.type.slice( 5 );
5994 } else {
5995 elem.removeAttribute( "type" );
5996 }
5997
5998 return elem;
5999}
6000
6001function cloneCopyEvent( src, dest ) {
6002 var i, l, type, pdataOld, udataOld, udataCur, events;
6003
6004 if ( dest.nodeType !== 1 ) {
6005 return;
6006 }
6007
6008 // 1. Copy private data: events, handlers, etc.
6009 if ( dataPriv.hasData( src ) ) {
6010 pdataOld = dataPriv.get( src );
6011 events = pdataOld.events;
6012
6013 if ( events ) {
6014 dataPriv.remove( dest, "handle events" );
6015
6016 for ( type in events ) {
6017 for ( i = 0, l = events[ type ].length; i < l; i++ ) {
6018 jQuery.event.add( dest, type, events[ type ][ i ] );
6019 }
6020 }
6021 }
6022 }
6023
6024 // 2. Copy user data
6025 if ( dataUser.hasData( src ) ) {
6026 udataOld = dataUser.access( src );
6027 udataCur = jQuery.extend( {}, udataOld );
6028
6029 dataUser.set( dest, udataCur );
6030 }
6031}
6032
6033// Fix IE bugs, see support tests
6034function fixInput( src, dest ) {
6035 var nodeName = dest.nodeName.toLowerCase();
6036
6037 // Fails to persist the checked state of a cloned checkbox or radio button.
6038 if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
6039 dest.checked = src.checked;
6040
6041 // Fails to return the selected option to the default selected state when cloning options
6042 } else if ( nodeName === "input" || nodeName === "textarea" ) {
6043 dest.defaultValue = src.defaultValue;
6044 }
6045}
6046
6047function domManip( collection, args, callback, ignored ) {
6048
6049 // Flatten any nested arrays
6050 args = flat( args );
6051
6052 var fragment, first, scripts, hasScripts, node, doc,
6053 i = 0,
6054 l = collection.length,
6055 iNoClone = l - 1,
6056 value = args[ 0 ],
6057 valueIsFunction = isFunction( value );
6058
6059 // We can't cloneNode fragments that contain checked, in WebKit
6060 if ( valueIsFunction ||
6061 ( l > 1 && typeof value === "string" &&
6062 !support.checkClone && rchecked.test( value ) ) ) {
6063 return collection.each( function( index ) {
6064 var self = collection.eq( index );
6065 if ( valueIsFunction ) {
6066 args[ 0 ] = value.call( this, index, self.html() );
6067 }
6068 domManip( self, args, callback, ignored );
6069 } );
6070 }
6071
6072 if ( l ) {
6073 fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );
6074 first = fragment.firstChild;
6075
6076 if ( fragment.childNodes.length === 1 ) {
6077 fragment = first;
6078 }
6079
6080 // Require either new content or an interest in ignored elements to invoke the callback
6081 if ( first || ignored ) {
6082 scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
6083 hasScripts = scripts.length;
6084
6085 // Use the original fragment for the last item
6086 // instead of the first because it can end up
6087 // being emptied incorrectly in certain situations (#8070).
6088 for ( ; i < l; i++ ) {
6089 node = fragment;
6090
6091 if ( i !== iNoClone ) {
6092 node = jQuery.clone( node, true, true );
6093
6094 // Keep references to cloned scripts for later restoration
6095 if ( hasScripts ) {
6096
6097 // Support: Android <=4.0 only, PhantomJS 1 only
6098 // push.apply(_, arraylike) throws on ancient WebKit
6099 jQuery.merge( scripts, getAll( node, "script" ) );
6100 }
6101 }
6102
6103 callback.call( collection[ i ], node, i );
6104 }
6105
6106 if ( hasScripts ) {
6107 doc = scripts[ scripts.length - 1 ].ownerDocument;
6108
6109 // Reenable scripts
6110 jQuery.map( scripts, restoreScript );
6111
6112 // Evaluate executable scripts on first document insertion
6113 for ( i = 0; i < hasScripts; i++ ) {
6114 node = scripts[ i ];
6115 if ( rscriptType.test( node.type || "" ) &&
6116 !dataPriv.access( node, "globalEval" ) &&
6117 jQuery.contains( doc, node ) ) {
6118
6119 if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) {
6120
6121 // Optional AJAX dependency, but won't run scripts if not present
6122 if ( jQuery._evalUrl && !node.noModule ) {
6123 jQuery._evalUrl( node.src, {
6124 nonce: node.nonce || node.getAttribute( "nonce" )
6125 }, doc );
6126 }
6127 } else {
6128 DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc );
6129 }
6130 }
6131 }
6132 }
6133 }
6134 }
6135
6136 return collection;
6137}
6138
6139function remove( elem, selector, keepData ) {
6140 var node,
6141 nodes = selector ? jQuery.filter( selector, elem ) : elem,
6142 i = 0;
6143
6144 for ( ; ( node = nodes[ i ] ) != null; i++ ) {
6145 if ( !keepData && node.nodeType === 1 ) {
6146 jQuery.cleanData( getAll( node ) );
6147 }
6148
6149 if ( node.parentNode ) {
6150 if ( keepData && isAttached( node ) ) {
6151 setGlobalEval( getAll( node, "script" ) );
6152 }
6153 node.parentNode.removeChild( node );
6154 }
6155 }
6156
6157 return elem;
6158}
6159
6160jQuery.extend( {
6161 htmlPrefilter: function( html ) {
6162 return html;
6163 },
6164
6165 clone: function( elem, dataAndEvents, deepDataAndEvents ) {
6166 var i, l, srcElements, destElements,
6167 clone = elem.cloneNode( true ),
6168 inPage = isAttached( elem );
6169
6170 // Fix IE cloning issues
6171 if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
6172 !jQuery.isXMLDoc( elem ) ) {
6173
6174 // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2
6175 destElements = getAll( clone );
6176 srcElements = getAll( elem );
6177
6178 for ( i = 0, l = srcElements.length; i < l; i++ ) {
6179 fixInput( srcElements[ i ], destElements[ i ] );
6180 }
6181 }
6182
6183 // Copy the events from the original to the clone
6184 if ( dataAndEvents ) {
6185 if ( deepDataAndEvents ) {
6186 srcElements = srcElements || getAll( elem );
6187 destElements = destElements || getAll( clone );
6188
6189 for ( i = 0, l = srcElements.length; i < l; i++ ) {
6190 cloneCopyEvent( srcElements[ i ], destElements[ i ] );
6191 }
6192 } else {
6193 cloneCopyEvent( elem, clone );
6194 }
6195 }
6196
6197 // Preserve script evaluation history
6198 destElements = getAll( clone, "script" );
6199 if ( destElements.length > 0 ) {
6200 setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
6201 }
6202
6203 // Return the cloned set
6204 return clone;
6205 },
6206
6207 cleanData: function( elems ) {
6208 var data, elem, type,
6209 special = jQuery.event.special,
6210 i = 0;
6211
6212 for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {
6213 if ( acceptData( elem ) ) {
6214 if ( ( data = elem[ dataPriv.expando ] ) ) {
6215 if ( data.events ) {
6216 for ( type in data.events ) {
6217 if ( special[ type ] ) {
6218 jQuery.event.remove( elem, type );
6219
6220 // This is a shortcut to avoid jQuery.event.remove's overhead
6221 } else {
6222 jQuery.removeEvent( elem, type, data.handle );
6223 }
6224 }
6225 }
6226
6227 // Support: Chrome <=35 - 45+
6228 // Assign undefined instead of using delete, see Data#remove
6229 elem[ dataPriv.expando ] = undefined;
6230 }
6231 if ( elem[ dataUser.expando ] ) {
6232
6233 // Support: Chrome <=35 - 45+
6234 // Assign undefined instead of using delete, see Data#remove
6235 elem[ dataUser.expando ] = undefined;
6236 }
6237 }
6238 }
6239 }
6240} );
6241
6242jQuery.fn.extend( {
6243 detach: function( selector ) {
6244 return remove( this, selector, true );
6245 },
6246
6247 remove: function( selector ) {
6248 return remove( this, selector );
6249 },
6250
6251 text: function( value ) {
6252 return access( this, function( value ) {
6253 return value === undefined ?
6254 jQuery.text( this ) :
6255 this.empty().each( function() {
6256 if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
6257 this.textContent = value;
6258 }
6259 } );
6260 }, null, value, arguments.length );
6261 },
6262
6263 append: function() {
6264 return domManip( this, arguments, function( elem ) {
6265 if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
6266 var target = manipulationTarget( this, elem );
6267 target.appendChild( elem );
6268 }
6269 } );
6270 },
6271
6272 prepend: function() {
6273 return domManip( this, arguments, function( elem ) {
6274 if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
6275 var target = manipulationTarget( this, elem );
6276 target.insertBefore( elem, target.firstChild );
6277 }
6278 } );
6279 },
6280
6281 before: function() {
6282 return domManip( this, arguments, function( elem ) {
6283 if ( this.parentNode ) {
6284 this.parentNode.insertBefore( elem, this );
6285 }
6286 } );
6287 },
6288
6289 after: function() {
6290 return domManip( this, arguments, function( elem ) {
6291 if ( this.parentNode ) {
6292 this.parentNode.insertBefore( elem, this.nextSibling );
6293 }
6294 } );
6295 },
6296
6297 empty: function() {
6298 var elem,
6299 i = 0;
6300
6301 for ( ; ( elem = this[ i ] ) != null; i++ ) {
6302 if ( elem.nodeType === 1 ) {
6303
6304 // Prevent memory leaks
6305 jQuery.cleanData( getAll( elem, false ) );
6306
6307 // Remove any remaining nodes
6308 elem.textContent = "";
6309 }
6310 }
6311
6312 return this;
6313 },
6314
6315 clone: function( dataAndEvents, deepDataAndEvents ) {
6316 dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
6317 deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
6318
6319 return this.map( function() {
6320 return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
6321 } );
6322 },
6323
6324 html: function( value ) {
6325 return access( this, function( value ) {
6326 var elem = this[ 0 ] || {},
6327 i = 0,
6328 l = this.length;
6329
6330 if ( value === undefined && elem.nodeType === 1 ) {
6331 return elem.innerHTML;
6332 }
6333
6334 // See if we can take a shortcut and just use innerHTML
6335 if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
6336 !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
6337
6338 value = jQuery.htmlPrefilter( value );
6339
6340 try {
6341 for ( ; i < l; i++ ) {
6342 elem = this[ i ] || {};
6343
6344 // Remove element nodes and prevent memory leaks
6345 if ( elem.nodeType === 1 ) {
6346 jQuery.cleanData( getAll( elem, false ) );
6347 elem.innerHTML = value;
6348 }
6349 }
6350
6351 elem = 0;
6352
6353 // If using innerHTML throws an exception, use the fallback method
6354 } catch ( e ) {}
6355 }
6356
6357 if ( elem ) {
6358 this.empty().append( value );
6359 }
6360 }, null, value, arguments.length );
6361 },
6362
6363 replaceWith: function() {
6364 var ignored = [];
6365
6366 // Make the changes, replacing each non-ignored context element with the new content
6367 return domManip( this, arguments, function( elem ) {
6368 var parent = this.parentNode;
6369
6370 if ( jQuery.inArray( this, ignored ) < 0 ) {
6371 jQuery.cleanData( getAll( this ) );
6372 if ( parent ) {
6373 parent.replaceChild( elem, this );
6374 }
6375 }
6376
6377 // Force callback invocation
6378 }, ignored );
6379 }
6380} );
6381
6382jQuery.each( {
6383 appendTo: "append",
6384 prependTo: "prepend",
6385 insertBefore: "before",
6386 insertAfter: "after",
6387 replaceAll: "replaceWith"
6388}, function( name, original ) {
6389 jQuery.fn[ name ] = function( selector ) {
6390 var elems,
6391 ret = [],
6392 insert = jQuery( selector ),
6393 last = insert.length - 1,
6394 i = 0;
6395
6396 for ( ; i <= last; i++ ) {
6397 elems = i === last ? this : this.clone( true );
6398 jQuery( insert[ i ] )[ original ]( elems );
6399
6400 // Support: Android <=4.0 only, PhantomJS 1 only
6401 // .get() because push.apply(_, arraylike) throws on ancient WebKit
6402 push.apply( ret, elems.get() );
6403 }
6404
6405 return this.pushStack( ret );
6406 };
6407} );
6408var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
6409
6410var getStyles = function( elem ) {
6411
6412 // Support: IE <=11 only, Firefox <=30 (#15098, #14150)
6413 // IE throws on elements created in popups
6414 // FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
6415 var view = elem.ownerDocument.defaultView;
6416
6417 if ( !view || !view.opener ) {
6418 view = window;
6419 }
6420
6421 return view.getComputedStyle( elem );
6422 };
6423
6424var swap = function( elem, options, callback ) {
6425 var ret, name,
6426 old = {};
6427
6428 // Remember the old values, and insert the new ones
6429 for ( name in options ) {
6430 old[ name ] = elem.style[ name ];
6431 elem.style[ name ] = options[ name ];
6432 }
6433
6434 ret = callback.call( elem );
6435
6436 // Revert the old values
6437 for ( name in options ) {
6438 elem.style[ name ] = old[ name ];
6439 }
6440
6441 return ret;
6442};
6443
6444
6445var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
6446
6447
6448
6449( function() {
6450
6451 // Executing both pixelPosition & boxSizingReliable tests require only one layout
6452 // so they're executed at the same time to save the second computation.
6453 function computeStyleTests() {
6454
6455 // This is a singleton, we need to execute it only once
6456 if ( !div ) {
6457 return;
6458 }
6459
6460 container.style.cssText = "position:absolute;left:-11111px;width:60px;" +
6461 "margin-top:1px;padding:0;border:0";
6462 div.style.cssText =
6463 "position:relative;display:block;box-sizing:border-box;overflow:scroll;" +
6464 "margin:auto;border:1px;padding:1px;" +
6465 "width:60%;top:1%";
6466 documentElement.appendChild( container ).appendChild( div );
6467
6468 var divStyle = window.getComputedStyle( div );
6469 pixelPositionVal = divStyle.top !== "1%";
6470
6471 // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
6472 reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;
6473
6474 // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3
6475 // Some styles come back with percentage values, even though they shouldn't
6476 div.style.right = "60%";
6477 pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;
6478
6479 // Support: IE 9 - 11 only
6480 // Detect misreporting of content dimensions for box-sizing:border-box elements
6481 boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;
6482
6483 // Support: IE 9 only
6484 // Detect overflow:scroll screwiness (gh-3699)
6485 // Support: Chrome <=64
6486 // Don't get tricked when zoom affects offsetWidth (gh-4029)
6487 div.style.position = "absolute";
6488 scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;
6489
6490 documentElement.removeChild( container );
6491
6492 // Nullify the div so it wouldn't be stored in the memory and
6493 // it will also be a sign that checks already performed
6494 div = null;
6495 }
6496
6497 function roundPixelMeasures( measure ) {
6498 return Math.round( parseFloat( measure ) );
6499 }
6500
6501 var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,
6502 reliableTrDimensionsVal, reliableMarginLeftVal,
6503 container = document.createElement( "div" ),
6504 div = document.createElement( "div" );
6505
6506 // Finish early in limited (non-browser) environments
6507 if ( !div.style ) {
6508 return;
6509 }
6510
6511 // Support: IE <=9 - 11 only
6512 // Style of cloned element affects source element cloned (#8908)
6513 div.style.backgroundClip = "content-box";
6514 div.cloneNode( true ).style.backgroundClip = "";
6515 support.clearCloneStyle = div.style.backgroundClip === "content-box";
6516
6517 jQuery.extend( support, {
6518 boxSizingReliable: function() {
6519 computeStyleTests();
6520 return boxSizingReliableVal;
6521 },
6522 pixelBoxStyles: function() {
6523 computeStyleTests();
6524 return pixelBoxStylesVal;
6525 },
6526 pixelPosition: function() {
6527 computeStyleTests();
6528 return pixelPositionVal;
6529 },
6530 reliableMarginLeft: function() {
6531 computeStyleTests();
6532 return reliableMarginLeftVal;
6533 },
6534 scrollboxSize: function() {
6535 computeStyleTests();
6536 return scrollboxSizeVal;
6537 },
6538
6539 // Support: IE 9 - 11+, Edge 15 - 18+
6540 // IE/Edge misreport `getComputedStyle` of table rows with width/height
6541 // set in CSS while `offset*` properties report correct values.
6542 // Behavior in IE 9 is more subtle than in newer versions & it passes
6543 // some versions of this test; make sure not to make it pass there!
6544 reliableTrDimensions: function() {
6545 var table, tr, trChild, trStyle;
6546 if ( reliableTrDimensionsVal == null ) {
6547 table = document.createElement( "table" );
6548 tr = document.createElement( "tr" );
6549 trChild = document.createElement( "div" );
6550
6551 table.style.cssText = "position:absolute;left:-11111px";
6552 tr.style.height = "1px";
6553 trChild.style.height = "9px";
6554
6555 documentElement
6556 .appendChild( table )
6557 .appendChild( tr )
6558 .appendChild( trChild );
6559
6560 trStyle = window.getComputedStyle( tr );
6561 reliableTrDimensionsVal = parseInt( trStyle.height ) > 3;
6562
6563 documentElement.removeChild( table );
6564 }
6565 return reliableTrDimensionsVal;
6566 }
6567 } );
6568} )();
6569
6570
6571function curCSS( elem, name, computed ) {
6572 var width, minWidth, maxWidth, ret,
6573
6574 // Support: Firefox 51+
6575 // Retrieving style before computed somehow
6576 // fixes an issue with getting wrong values
6577 // on detached elements
6578 style = elem.style;
6579
6580 computed = computed || getStyles( elem );
6581
6582 // getPropertyValue is needed for:
6583 // .css('filter') (IE 9 only, #12537)
6584 // .css('--customProperty) (#3144)
6585 if ( computed ) {
6586 ret = computed.getPropertyValue( name ) || computed[ name ];
6587
6588 if ( ret === "" && !isAttached( elem ) ) {
6589 ret = jQuery.style( elem, name );
6590 }
6591
6592 // A tribute to the "awesome hack by Dean Edwards"
6593 // Android Browser returns percentage for some values,
6594 // but width seems to be reliably pixels.
6595 // This is against the CSSOM draft spec:
6596 // https://drafts.csswg.org/cssom/#resolved-values
6597 if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {
6598
6599 // Remember the original values
6600 width = style.width;
6601 minWidth = style.minWidth;
6602 maxWidth = style.maxWidth;
6603
6604 // Put in the new values to get a computed value out
6605 style.minWidth = style.maxWidth = style.width = ret;
6606 ret = computed.width;
6607
6608 // Revert the changed values
6609 style.width = width;
6610 style.minWidth = minWidth;
6611 style.maxWidth = maxWidth;
6612 }
6613 }
6614
6615 return ret !== undefined ?
6616
6617 // Support: IE <=9 - 11 only
6618 // IE returns zIndex value as an integer.
6619 ret + "" :
6620 ret;
6621}
6622
6623
6624function addGetHookIf( conditionFn, hookFn ) {
6625
6626 // Define the hook, we'll check on the first run if it's really needed.
6627 return {
6628 get: function() {
6629 if ( conditionFn() ) {
6630
6631 // Hook not needed (or it's not possible to use it due
6632 // to missing dependency), remove it.
6633 delete this.get;
6634 return;
6635 }
6636
6637 // Hook needed; redefine it so that the support test is not executed again.
6638 return ( this.get = hookFn ).apply( this, arguments );
6639 }
6640 };
6641}
6642
6643
6644var cssPrefixes = [ "Webkit", "Moz", "ms" ],
6645 emptyStyle = document.createElement( "div" ).style,
6646 vendorProps = {};
6647
6648// Return a vendor-prefixed property or undefined
6649function vendorPropName( name ) {
6650
6651 // Check for vendor prefixed names
6652 var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
6653 i = cssPrefixes.length;
6654
6655 while ( i-- ) {
6656 name = cssPrefixes[ i ] + capName;
6657 if ( name in emptyStyle ) {
6658 return name;
6659 }
6660 }
6661}
6662
6663// Return a potentially-mapped jQuery.cssProps or vendor prefixed property
6664function finalPropName( name ) {
6665 var final = jQuery.cssProps[ name ] || vendorProps[ name ];
6666
6667 if ( final ) {
6668 return final;
6669 }
6670 if ( name in emptyStyle ) {
6671 return name;
6672 }
6673 return vendorProps[ name ] = vendorPropName( name ) || name;
6674}
6675
6676
6677var
6678
6679 // Swappable if display is none or starts with table
6680 // except "table", "table-cell", or "table-caption"
6681 // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
6682 rdisplayswap = /^(none|table(?!-c[ea]).+)/,
6683 rcustomProp = /^--/,
6684 cssShow = { position: "absolute", visibility: "hidden", display: "block" },
6685 cssNormalTransform = {
6686 letterSpacing: "0",
6687 fontWeight: "400"
6688 };
6689
6690function setPositiveNumber( _elem, value, subtract ) {
6691
6692 // Any relative (+/-) values have already been
6693 // normalized at this point
6694 var matches = rcssNum.exec( value );
6695 return matches ?
6696
6697 // Guard against undefined "subtract", e.g., when used as in cssHooks
6698 Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
6699 value;
6700}
6701
6702function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {
6703 var i = dimension === "width" ? 1 : 0,
6704 extra = 0,
6705 delta = 0;
6706
6707 // Adjustment may not be necessary
6708 if ( box === ( isBorderBox ? "border" : "content" ) ) {
6709 return 0;
6710 }
6711
6712 for ( ; i < 4; i += 2 ) {
6713
6714 // Both box models exclude margin
6715 if ( box === "margin" ) {
6716 delta += jQuery.css( elem, box + cssExpand[ i ], true, styles );
6717 }
6718
6719 // If we get here with a content-box, we're seeking "padding" or "border" or "margin"
6720 if ( !isBorderBox ) {
6721
6722 // Add padding
6723 delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
6724
6725 // For "border" or "margin", add border
6726 if ( box !== "padding" ) {
6727 delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
6728
6729 // But still keep track of it otherwise
6730 } else {
6731 extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
6732 }
6733
6734 // If we get here with a border-box (content + padding + border), we're seeking "content" or
6735 // "padding" or "margin"
6736 } else {
6737
6738 // For "content", subtract padding
6739 if ( box === "content" ) {
6740 delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
6741 }
6742
6743 // For "content" or "padding", subtract border
6744 if ( box !== "margin" ) {
6745 delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
6746 }
6747 }
6748 }
6749
6750 // Account for positive content-box scroll gutter when requested by providing computedVal
6751 if ( !isBorderBox && computedVal >= 0 ) {
6752
6753 // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border
6754 // Assuming integer scroll gutter, subtract the rest and round down
6755 delta += Math.max( 0, Math.ceil(
6756 elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
6757 computedVal -
6758 delta -
6759 extra -
6760 0.5
6761
6762 // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter
6763 // Use an explicit zero to avoid NaN (gh-3964)
6764 ) ) || 0;
6765 }
6766
6767 return delta;
6768}
6769
6770function getWidthOrHeight( elem, dimension, extra ) {
6771
6772 // Start with computed style
6773 var styles = getStyles( elem ),
6774
6775 // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).
6776 // Fake content-box until we know it's needed to know the true value.
6777 boxSizingNeeded = !support.boxSizingReliable() || extra,
6778 isBorderBox = boxSizingNeeded &&
6779 jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
6780 valueIsBorderBox = isBorderBox,
6781
6782 val = curCSS( elem, dimension, styles ),
6783 offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );
6784
6785 // Support: Firefox <=54
6786 // Return a confounding non-pixel value or feign ignorance, as appropriate.
6787 if ( rnumnonpx.test( val ) ) {
6788 if ( !extra ) {
6789 return val;
6790 }
6791 val = "auto";
6792 }
6793
6794
6795 // Support: IE 9 - 11 only
6796 // Use offsetWidth/offsetHeight for when box sizing is unreliable.
6797 // In those cases, the computed value can be trusted to be border-box.
6798 if ( ( !support.boxSizingReliable() && isBorderBox ||
6799
6800 // Support: IE 10 - 11+, Edge 15 - 18+
6801 // IE/Edge misreport `getComputedStyle` of table rows with width/height
6802 // set in CSS while `offset*` properties report correct values.
6803 // Interestingly, in some cases IE 9 doesn't suffer from this issue.
6804 !support.reliableTrDimensions() && nodeName( elem, "tr" ) ||
6805
6806 // Fall back to offsetWidth/offsetHeight when value is "auto"
6807 // This happens for inline elements with no explicit setting (gh-3571)
6808 val === "auto" ||
6809
6810 // Support: Android <=4.1 - 4.3 only
6811 // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)
6812 !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) &&
6813
6814 // Make sure the element is visible & connected
6815 elem.getClientRects().length ) {
6816
6817 isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
6818
6819 // Where available, offsetWidth/offsetHeight approximate border box dimensions.
6820 // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the
6821 // retrieved value as a content box dimension.
6822 valueIsBorderBox = offsetProp in elem;
6823 if ( valueIsBorderBox ) {
6824 val = elem[ offsetProp ];
6825 }
6826 }
6827
6828 // Normalize "" and auto
6829 val = parseFloat( val ) || 0;
6830
6831 // Adjust for the element's box model
6832 return ( val +
6833 boxModelAdjustment(
6834 elem,
6835 dimension,
6836 extra || ( isBorderBox ? "border" : "content" ),
6837 valueIsBorderBox,
6838 styles,
6839
6840 // Provide the current computed size to request scroll gutter calculation (gh-3589)
6841 val
6842 )
6843 ) + "px";
6844}
6845
6846jQuery.extend( {
6847
6848 // Add in style property hooks for overriding the default
6849 // behavior of getting and setting a style property
6850 cssHooks: {
6851 opacity: {
6852 get: function( elem, computed ) {
6853 if ( computed ) {
6854
6855 // We should always get a number back from opacity
6856 var ret = curCSS( elem, "opacity" );
6857 return ret === "" ? "1" : ret;
6858 }
6859 }
6860 }
6861 },
6862
6863 // Don't automatically add "px" to these possibly-unitless properties
6864 cssNumber: {
6865 "animationIterationCount": true,
6866 "columnCount": true,
6867 "fillOpacity": true,
6868 "flexGrow": true,
6869 "flexShrink": true,
6870 "fontWeight": true,
6871 "gridArea": true,
6872 "gridColumn": true,
6873 "gridColumnEnd": true,
6874 "gridColumnStart": true,
6875 "gridRow": true,
6876 "gridRowEnd": true,
6877 "gridRowStart": true,
6878 "lineHeight": true,
6879 "opacity": true,
6880 "order": true,
6881 "orphans": true,
6882 "widows": true,
6883 "zIndex": true,
6884 "zoom": true
6885 },
6886
6887 // Add in properties whose names you wish to fix before
6888 // setting or getting the value
6889 cssProps: {},
6890
6891 // Get and set the style property on a DOM Node
6892 style: function( elem, name, value, extra ) {
6893
6894 // Don't set styles on text and comment nodes
6895 if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
6896 return;
6897 }
6898
6899 // Make sure that we're working with the right name
6900 var ret, type, hooks,
6901 origName = camelCase( name ),
6902 isCustomProp = rcustomProp.test( name ),
6903 style = elem.style;
6904
6905 // Make sure that we're working with the right name. We don't
6906 // want to query the value if it is a CSS custom property
6907 // since they are user-defined.
6908 if ( !isCustomProp ) {
6909 name = finalPropName( origName );
6910 }
6911
6912 // Gets hook for the prefixed version, then unprefixed version
6913 hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
6914
6915 // Check if we're setting a value
6916 if ( value !== undefined ) {
6917 type = typeof value;
6918
6919 // Convert "+=" or "-=" to relative numbers (#7345)
6920 if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
6921 value = adjustCSS( elem, name, ret );
6922
6923 // Fixes bug #9237
6924 type = "number";
6925 }
6926
6927 // Make sure that null and NaN values aren't set (#7116)
6928 if ( value == null || value !== value ) {
6929 return;
6930 }
6931
6932 // If a number was passed in, add the unit (except for certain CSS properties)
6933 // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append
6934 // "px" to a few hardcoded values.
6935 if ( type === "number" && !isCustomProp ) {
6936 value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
6937 }
6938
6939 // background-* props affect original clone's values
6940 if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
6941 style[ name ] = "inherit";
6942 }
6943
6944 // If a hook was provided, use that value, otherwise just set the specified value
6945 if ( !hooks || !( "set" in hooks ) ||
6946 ( value = hooks.set( elem, value, extra ) ) !== undefined ) {
6947
6948 if ( isCustomProp ) {
6949 style.setProperty( name, value );
6950 } else {
6951 style[ name ] = value;
6952 }
6953 }
6954
6955 } else {
6956
6957 // If a hook was provided get the non-computed value from there
6958 if ( hooks && "get" in hooks &&
6959 ( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
6960
6961 return ret;
6962 }
6963
6964 // Otherwise just get the value from the style object
6965 return style[ name ];
6966 }
6967 },
6968
6969 css: function( elem, name, extra, styles ) {
6970 var val, num, hooks,
6971 origName = camelCase( name ),
6972 isCustomProp = rcustomProp.test( name );
6973
6974 // Make sure that we're working with the right name. We don't
6975 // want to modify the value if it is a CSS custom property
6976 // since they are user-defined.
6977 if ( !isCustomProp ) {
6978 name = finalPropName( origName );
6979 }
6980
6981 // Try prefixed name followed by the unprefixed name
6982 hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
6983
6984 // If a hook was provided get the computed value from there
6985 if ( hooks && "get" in hooks ) {
6986 val = hooks.get( elem, true, extra );
6987 }
6988
6989 // Otherwise, if a way to get the computed value exists, use that
6990 if ( val === undefined ) {
6991 val = curCSS( elem, name, styles );
6992 }
6993
6994 // Convert "normal" to computed value
6995 if ( val === "normal" && name in cssNormalTransform ) {
6996 val = cssNormalTransform[ name ];
6997 }
6998
6999 // Make numeric if forced or a qualifier was provided and val looks numeric
7000 if ( extra === "" || extra ) {
7001 num = parseFloat( val );
7002 return extra === true || isFinite( num ) ? num || 0 : val;
7003 }
7004
7005 return val;
7006 }
7007} );
7008
7009jQuery.each( [ "height", "width" ], function( _i, dimension ) {
7010 jQuery.cssHooks[ dimension ] = {
7011 get: function( elem, computed, extra ) {
7012 if ( computed ) {
7013
7014 // Certain elements can have dimension info if we invisibly show them
7015 // but it must have a current display style that would benefit
7016 return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
7017
7018 // Support: Safari 8+
7019 // Table columns in Safari have non-zero offsetWidth & zero
7020 // getBoundingClientRect().width unless display is changed.
7021 // Support: IE <=11 only
7022 // Running getBoundingClientRect on a disconnected node
7023 // in IE throws an error.
7024 ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
7025 swap( elem, cssShow, function() {
7026 return getWidthOrHeight( elem, dimension, extra );
7027 } ) :
7028 getWidthOrHeight( elem, dimension, extra );
7029 }
7030 },
7031
7032 set: function( elem, value, extra ) {
7033 var matches,
7034 styles = getStyles( elem ),
7035
7036 // Only read styles.position if the test has a chance to fail
7037 // to avoid forcing a reflow.
7038 scrollboxSizeBuggy = !support.scrollboxSize() &&
7039 styles.position === "absolute",
7040
7041 // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)
7042 boxSizingNeeded = scrollboxSizeBuggy || extra,
7043 isBorderBox = boxSizingNeeded &&
7044 jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
7045 subtract = extra ?
7046 boxModelAdjustment(
7047 elem,
7048 dimension,
7049 extra,
7050 isBorderBox,
7051 styles
7052 ) :
7053 0;
7054
7055 // Account for unreliable border-box dimensions by comparing offset* to computed and
7056 // faking a content-box to get border and padding (gh-3699)
7057 if ( isBorderBox && scrollboxSizeBuggy ) {
7058 subtract -= Math.ceil(
7059 elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
7060 parseFloat( styles[ dimension ] ) -
7061 boxModelAdjustment( elem, dimension, "border", false, styles ) -
7062 0.5
7063 );
7064 }
7065
7066 // Convert to pixels if value adjustment is needed
7067 if ( subtract && ( matches = rcssNum.exec( value ) ) &&
7068 ( matches[ 3 ] || "px" ) !== "px" ) {
7069
7070 elem.style[ dimension ] = value;
7071 value = jQuery.css( elem, dimension );
7072 }
7073
7074 return setPositiveNumber( elem, value, subtract );
7075 }
7076 };
7077} );
7078
7079jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
7080 function( elem, computed ) {
7081 if ( computed ) {
7082 return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
7083 elem.getBoundingClientRect().left -
7084 swap( elem, { marginLeft: 0 }, function() {
7085 return elem.getBoundingClientRect().left;
7086 } )
7087 ) + "px";
7088 }
7089 }
7090);
7091
7092// These hooks are used by animate to expand properties
7093jQuery.each( {
7094 margin: "",
7095 padding: "",
7096 border: "Width"
7097}, function( prefix, suffix ) {
7098 jQuery.cssHooks[ prefix + suffix ] = {
7099 expand: function( value ) {
7100 var i = 0,
7101 expanded = {},
7102
7103 // Assumes a single number if not a string
7104 parts = typeof value === "string" ? value.split( " " ) : [ value ];
7105
7106 for ( ; i < 4; i++ ) {
7107 expanded[ prefix + cssExpand[ i ] + suffix ] =
7108 parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
7109 }
7110
7111 return expanded;
7112 }
7113 };
7114
7115 if ( prefix !== "margin" ) {
7116 jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
7117 }
7118} );
7119
7120jQuery.fn.extend( {
7121 css: function( name, value ) {
7122 return access( this, function( elem, name, value ) {
7123 var styles, len,
7124 map = {},
7125 i = 0;
7126
7127 if ( Array.isArray( name ) ) {
7128 styles = getStyles( elem );
7129 len = name.length;
7130
7131 for ( ; i < len; i++ ) {
7132 map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
7133 }
7134
7135 return map;
7136 }
7137
7138 return value !== undefined ?
7139 jQuery.style( elem, name, value ) :
7140 jQuery.css( elem, name );
7141 }, name, value, arguments.length > 1 );
7142 }
7143} );
7144
7145
7146function Tween( elem, options, prop, end, easing ) {
7147 return new Tween.prototype.init( elem, options, prop, end, easing );
7148}
7149jQuery.Tween = Tween;
7150
7151Tween.prototype = {
7152 constructor: Tween,
7153 init: function( elem, options, prop, end, easing, unit ) {
7154 this.elem = elem;
7155 this.prop = prop;
7156 this.easing = easing || jQuery.easing._default;
7157 this.options = options;
7158 this.start = this.now = this.cur();
7159 this.end = end;
7160 this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
7161 },
7162 cur: function() {
7163 var hooks = Tween.propHooks[ this.prop ];
7164
7165 return hooks && hooks.get ?
7166 hooks.get( this ) :
7167 Tween.propHooks._default.get( this );
7168 },
7169 run: function( percent ) {
7170 var eased,
7171 hooks = Tween.propHooks[ this.prop ];
7172
7173 if ( this.options.duration ) {
7174 this.pos = eased = jQuery.easing[ this.easing ](
7175 percent, this.options.duration * percent, 0, 1, this.options.duration
7176 );
7177 } else {
7178 this.pos = eased = percent;
7179 }
7180 this.now = ( this.end - this.start ) * eased + this.start;
7181
7182 if ( this.options.step ) {
7183 this.options.step.call( this.elem, this.now, this );
7184 }
7185
7186 if ( hooks && hooks.set ) {
7187 hooks.set( this );
7188 } else {
7189 Tween.propHooks._default.set( this );
7190 }
7191 return this;
7192 }
7193};
7194
7195Tween.prototype.init.prototype = Tween.prototype;
7196
7197Tween.propHooks = {
7198 _default: {
7199 get: function( tween ) {
7200 var result;
7201
7202 // Use a property on the element directly when it is not a DOM element,
7203 // or when there is no matching style property that exists.
7204 if ( tween.elem.nodeType !== 1 ||
7205 tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {
7206 return tween.elem[ tween.prop ];
7207 }
7208
7209 // Passing an empty string as a 3rd parameter to .css will automatically
7210 // attempt a parseFloat and fallback to a string if the parse fails.
7211 // Simple values such as "10px" are parsed to Float;
7212 // complex values such as "rotate(1rad)" are returned as-is.
7213 result = jQuery.css( tween.elem, tween.prop, "" );
7214
7215 // Empty strings, null, undefined and "auto" are converted to 0.
7216 return !result || result === "auto" ? 0 : result;
7217 },
7218 set: function( tween ) {
7219
7220 // Use step hook for back compat.
7221 // Use cssHook if its there.
7222 // Use .style if available and use plain properties where available.
7223 if ( jQuery.fx.step[ tween.prop ] ) {
7224 jQuery.fx.step[ tween.prop ]( tween );
7225 } else if ( tween.elem.nodeType === 1 && (
7226 jQuery.cssHooks[ tween.prop ] ||
7227 tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {
7228 jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
7229 } else {
7230 tween.elem[ tween.prop ] = tween.now;
7231 }
7232 }
7233 }
7234};
7235
7236// Support: IE <=9 only
7237// Panic based approach to setting things on disconnected nodes
7238Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
7239 set: function( tween ) {
7240 if ( tween.elem.nodeType && tween.elem.parentNode ) {
7241 tween.elem[ tween.prop ] = tween.now;
7242 }
7243 }
7244};
7245
7246jQuery.easing = {
7247 linear: function( p ) {
7248 return p;
7249 },
7250 swing: function( p ) {
7251 return 0.5 - Math.cos( p * Math.PI ) / 2;
7252 },
7253 _default: "swing"
7254};
7255
7256jQuery.fx = Tween.prototype.init;
7257
7258// Back compat <1.8 extension point
7259jQuery.fx.step = {};
7260
7261
7262
7263
7264var
7265 fxNow, inProgress,
7266 rfxtypes = /^(?:toggle|show|hide)$/,
7267 rrun = /queueHooks$/;
7268
7269function schedule() {
7270 if ( inProgress ) {
7271 if ( document.hidden === false && window.requestAnimationFrame ) {
7272 window.requestAnimationFrame( schedule );
7273 } else {
7274 window.setTimeout( schedule, jQuery.fx.interval );
7275 }
7276
7277 jQuery.fx.tick();
7278 }
7279}
7280
7281// Animations created synchronously will run synchronously
7282function createFxNow() {
7283 window.setTimeout( function() {
7284 fxNow = undefined;
7285 } );
7286 return ( fxNow = Date.now() );
7287}
7288
7289// Generate parameters to create a standard animation
7290function genFx( type, includeWidth ) {
7291 var which,
7292 i = 0,
7293 attrs = { height: type };
7294
7295 // If we include width, step value is 1 to do all cssExpand values,
7296 // otherwise step value is 2 to skip over Left and Right
7297 includeWidth = includeWidth ? 1 : 0;
7298 for ( ; i < 4; i += 2 - includeWidth ) {
7299 which = cssExpand[ i ];
7300 attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
7301 }
7302
7303 if ( includeWidth ) {
7304 attrs.opacity = attrs.width = type;
7305 }
7306
7307 return attrs;
7308}
7309
7310function createTween( value, prop, animation ) {
7311 var tween,
7312 collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ),
7313 index = 0,
7314 length = collection.length;
7315 for ( ; index < length; index++ ) {
7316 if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {
7317
7318 // We're done with this property
7319 return tween;
7320 }
7321 }
7322}
7323
7324function defaultPrefilter( elem, props, opts ) {
7325 var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,
7326 isBox = "width" in props || "height" in props,
7327 anim = this,
7328 orig = {},
7329 style = elem.style,
7330 hidden = elem.nodeType && isHiddenWithinTree( elem ),
7331 dataShow = dataPriv.get( elem, "fxshow" );
7332
7333 // Queue-skipping animations hijack the fx hooks
7334 if ( !opts.queue ) {
7335 hooks = jQuery._queueHooks( elem, "fx" );
7336 if ( hooks.unqueued == null ) {
7337 hooks.unqueued = 0;
7338 oldfire = hooks.empty.fire;
7339 hooks.empty.fire = function() {
7340 if ( !hooks.unqueued ) {
7341 oldfire();
7342 }
7343 };
7344 }
7345 hooks.unqueued++;
7346
7347 anim.always( function() {
7348
7349 // Ensure the complete handler is called before this completes
7350 anim.always( function() {
7351 hooks.unqueued--;
7352 if ( !jQuery.queue( elem, "fx" ).length ) {
7353 hooks.empty.fire();
7354 }
7355 } );
7356 } );
7357 }
7358
7359 // Detect show/hide animations
7360 for ( prop in props ) {
7361 value = props[ prop ];
7362 if ( rfxtypes.test( value ) ) {
7363 delete props[ prop ];
7364 toggle = toggle || value === "toggle";
7365 if ( value === ( hidden ? "hide" : "show" ) ) {
7366
7367 // Pretend to be hidden if this is a "show" and
7368 // there is still data from a stopped show/hide
7369 if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
7370 hidden = true;
7371
7372 // Ignore all other no-op show/hide data
7373 } else {
7374 continue;
7375 }
7376 }
7377 orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
7378 }
7379 }
7380
7381 // Bail out if this is a no-op like .hide().hide()
7382 propTween = !jQuery.isEmptyObject( props );
7383 if ( !propTween && jQuery.isEmptyObject( orig ) ) {
7384 return;
7385 }
7386
7387 // Restrict "overflow" and "display" styles during box animations
7388 if ( isBox && elem.nodeType === 1 ) {
7389
7390 // Support: IE <=9 - 11, Edge 12 - 15
7391 // Record all 3 overflow attributes because IE does not infer the shorthand
7392 // from identically-valued overflowX and overflowY and Edge just mirrors
7393 // the overflowX value there.
7394 opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
7395
7396 // Identify a display type, preferring old show/hide data over the CSS cascade
7397 restoreDisplay = dataShow && dataShow.display;
7398 if ( restoreDisplay == null ) {
7399 restoreDisplay = dataPriv.get( elem, "display" );
7400 }
7401 display = jQuery.css( elem, "display" );
7402 if ( display === "none" ) {
7403 if ( restoreDisplay ) {
7404 display = restoreDisplay;
7405 } else {
7406
7407 // Get nonempty value(s) by temporarily forcing visibility
7408 showHide( [ elem ], true );
7409 restoreDisplay = elem.style.display || restoreDisplay;
7410 display = jQuery.css( elem, "display" );
7411 showHide( [ elem ] );
7412 }
7413 }
7414
7415 // Animate inline elements as inline-block
7416 if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) {
7417 if ( jQuery.css( elem, "float" ) === "none" ) {
7418
7419 // Restore the original display value at the end of pure show/hide animations
7420 if ( !propTween ) {
7421 anim.done( function() {
7422 style.display = restoreDisplay;
7423 } );
7424 if ( restoreDisplay == null ) {
7425 display = style.display;
7426 restoreDisplay = display === "none" ? "" : display;
7427 }
7428 }
7429 style.display = "inline-block";
7430 }
7431 }
7432 }
7433
7434 if ( opts.overflow ) {
7435 style.overflow = "hidden";
7436 anim.always( function() {
7437 style.overflow = opts.overflow[ 0 ];
7438 style.overflowX = opts.overflow[ 1 ];
7439 style.overflowY = opts.overflow[ 2 ];
7440 } );
7441 }
7442
7443 // Implement show/hide animations
7444 propTween = false;
7445 for ( prop in orig ) {
7446
7447 // General show/hide setup for this element animation
7448 if ( !propTween ) {
7449 if ( dataShow ) {
7450 if ( "hidden" in dataShow ) {
7451 hidden = dataShow.hidden;
7452 }
7453 } else {
7454 dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } );
7455 }
7456
7457 // Store hidden/visible for toggle so `.stop().toggle()` "reverses"
7458 if ( toggle ) {
7459 dataShow.hidden = !hidden;
7460 }
7461
7462 // Show elements before animating them
7463 if ( hidden ) {
7464 showHide( [ elem ], true );
7465 }
7466
7467 /* eslint-disable no-loop-func */
7468
7469 anim.done( function() {
7470
7471 /* eslint-enable no-loop-func */
7472
7473 // The final step of a "hide" animation is actually hiding the element
7474 if ( !hidden ) {
7475 showHide( [ elem ] );
7476 }
7477 dataPriv.remove( elem, "fxshow" );
7478 for ( prop in orig ) {
7479 jQuery.style( elem, prop, orig[ prop ] );
7480 }
7481 } );
7482 }
7483
7484 // Per-property setup
7485 propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
7486 if ( !( prop in dataShow ) ) {
7487 dataShow[ prop ] = propTween.start;
7488 if ( hidden ) {
7489 propTween.end = propTween.start;
7490 propTween.start = 0;
7491 }
7492 }
7493 }
7494}
7495
7496function propFilter( props, specialEasing ) {
7497 var index, name, easing, value, hooks;
7498
7499 // camelCase, specialEasing and expand cssHook pass
7500 for ( index in props ) {
7501 name = camelCase( index );
7502 easing = specialEasing[ name ];
7503 value = props[ index ];
7504 if ( Array.isArray( value ) ) {
7505 easing = value[ 1 ];
7506 value = props[ index ] = value[ 0 ];
7507 }
7508
7509 if ( index !== name ) {
7510 props[ name ] = value;
7511 delete props[ index ];
7512 }
7513
7514 hooks = jQuery.cssHooks[ name ];
7515 if ( hooks && "expand" in hooks ) {
7516 value = hooks.expand( value );
7517 delete props[ name ];
7518
7519 // Not quite $.extend, this won't overwrite existing keys.
7520 // Reusing 'index' because we have the correct "name"
7521 for ( index in value ) {
7522 if ( !( index in props ) ) {
7523 props[ index ] = value[ index ];
7524 specialEasing[ index ] = easing;
7525 }
7526 }
7527 } else {
7528 specialEasing[ name ] = easing;
7529 }
7530 }
7531}
7532
7533function Animation( elem, properties, options ) {
7534 var result,
7535 stopped,
7536 index = 0,
7537 length = Animation.prefilters.length,
7538 deferred = jQuery.Deferred().always( function() {
7539
7540 // Don't match elem in the :animated selector
7541 delete tick.elem;
7542 } ),
7543 tick = function() {
7544 if ( stopped ) {
7545 return false;
7546 }
7547 var currentTime = fxNow || createFxNow(),
7548 remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
7549
7550 // Support: Android 2.3 only
7551 // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
7552 temp = remaining / animation.duration || 0,
7553 percent = 1 - temp,
7554 index = 0,
7555 length = animation.tweens.length;
7556
7557 for ( ; index < length; index++ ) {
7558 animation.tweens[ index ].run( percent );
7559 }
7560
7561 deferred.notifyWith( elem, [ animation, percent, remaining ] );
7562
7563 // If there's more to do, yield
7564 if ( percent < 1 && length ) {
7565 return remaining;
7566 }
7567
7568 // If this was an empty animation, synthesize a final progress notification
7569 if ( !length ) {
7570 deferred.notifyWith( elem, [ animation, 1, 0 ] );
7571 }
7572
7573 // Resolve the animation and report its conclusion
7574 deferred.resolveWith( elem, [ animation ] );
7575 return false;
7576 },
7577 animation = deferred.promise( {
7578 elem: elem,
7579 props: jQuery.extend( {}, properties ),
7580 opts: jQuery.extend( true, {
7581 specialEasing: {},
7582 easing: jQuery.easing._default
7583 }, options ),
7584 originalProperties: properties,
7585 originalOptions: options,
7586 startTime: fxNow || createFxNow(),
7587 duration: options.duration,
7588 tweens: [],
7589 createTween: function( prop, end ) {
7590 var tween = jQuery.Tween( elem, animation.opts, prop, end,
7591 animation.opts.specialEasing[ prop ] || animation.opts.easing );
7592 animation.tweens.push( tween );
7593 return tween;
7594 },
7595 stop: function( gotoEnd ) {
7596 var index = 0,
7597
7598 // If we are going to the end, we want to run all the tweens
7599 // otherwise we skip this part
7600 length = gotoEnd ? animation.tweens.length : 0;
7601 if ( stopped ) {
7602 return this;
7603 }
7604 stopped = true;
7605 for ( ; index < length; index++ ) {
7606 animation.tweens[ index ].run( 1 );
7607 }
7608
7609 // Resolve when we played the last frame; otherwise, reject
7610 if ( gotoEnd ) {
7611 deferred.notifyWith( elem, [ animation, 1, 0 ] );
7612 deferred.resolveWith( elem, [ animation, gotoEnd ] );
7613 } else {
7614 deferred.rejectWith( elem, [ animation, gotoEnd ] );
7615 }
7616 return this;
7617 }
7618 } ),
7619 props = animation.props;
7620
7621 propFilter( props, animation.opts.specialEasing );
7622
7623 for ( ; index < length; index++ ) {
7624 result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );
7625 if ( result ) {
7626 if ( isFunction( result.stop ) ) {
7627 jQuery._queueHooks( animation.elem, animation.opts.queue ).stop =
7628 result.stop.bind( result );
7629 }
7630 return result;
7631 }
7632 }
7633
7634 jQuery.map( props, createTween, animation );
7635
7636 if ( isFunction( animation.opts.start ) ) {
7637 animation.opts.start.call( elem, animation );
7638 }
7639
7640 // Attach callbacks from options
7641 animation
7642 .progress( animation.opts.progress )
7643 .done( animation.opts.done, animation.opts.complete )
7644 .fail( animation.opts.fail )
7645 .always( animation.opts.always );
7646
7647 jQuery.fx.timer(
7648 jQuery.extend( tick, {
7649 elem: elem,
7650 anim: animation,
7651 queue: animation.opts.queue
7652 } )
7653 );
7654
7655 return animation;
7656}
7657
7658jQuery.Animation = jQuery.extend( Animation, {
7659
7660 tweeners: {
7661 "*": [ function( prop, value ) {
7662 var tween = this.createTween( prop, value );
7663 adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );
7664 return tween;
7665 } ]
7666 },
7667
7668 tweener: function( props, callback ) {
7669 if ( isFunction( props ) ) {
7670 callback = props;
7671 props = [ "*" ];
7672 } else {
7673 props = props.match( rnothtmlwhite );
7674 }
7675
7676 var prop,
7677 index = 0,
7678 length = props.length;
7679
7680 for ( ; index < length; index++ ) {
7681 prop = props[ index ];
7682 Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];
7683 Animation.tweeners[ prop ].unshift( callback );
7684 }
7685 },
7686
7687 prefilters: [ defaultPrefilter ],
7688
7689 prefilter: function( callback, prepend ) {
7690 if ( prepend ) {
7691 Animation.prefilters.unshift( callback );
7692 } else {
7693 Animation.prefilters.push( callback );
7694 }
7695 }
7696} );
7697
7698jQuery.speed = function( speed, easing, fn ) {
7699 var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
7700 complete: fn || !fn && easing ||
7701 isFunction( speed ) && speed,
7702 duration: speed,
7703 easing: fn && easing || easing && !isFunction( easing ) && easing
7704 };
7705
7706 // Go to the end state if fx are off
7707 if ( jQuery.fx.off ) {
7708 opt.duration = 0;
7709
7710 } else {
7711 if ( typeof opt.duration !== "number" ) {
7712 if ( opt.duration in jQuery.fx.speeds ) {
7713 opt.duration = jQuery.fx.speeds[ opt.duration ];
7714
7715 } else {
7716 opt.duration = jQuery.fx.speeds._default;
7717 }
7718 }
7719 }
7720
7721 // Normalize opt.queue - true/undefined/null -> "fx"
7722 if ( opt.queue == null || opt.queue === true ) {
7723 opt.queue = "fx";
7724 }
7725
7726 // Queueing
7727 opt.old = opt.complete;
7728
7729 opt.complete = function() {
7730 if ( isFunction( opt.old ) ) {
7731 opt.old.call( this );
7732 }
7733
7734 if ( opt.queue ) {
7735 jQuery.dequeue( this, opt.queue );
7736 }
7737 };
7738
7739 return opt;
7740};
7741
7742jQuery.fn.extend( {
7743 fadeTo: function( speed, to, easing, callback ) {
7744
7745 // Show any hidden elements after setting opacity to 0
7746 return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show()
7747
7748 // Animate to the value specified
7749 .end().animate( { opacity: to }, speed, easing, callback );
7750 },
7751 animate: function( prop, speed, easing, callback ) {
7752 var empty = jQuery.isEmptyObject( prop ),
7753 optall = jQuery.speed( speed, easing, callback ),
7754 doAnimation = function() {
7755
7756 // Operate on a copy of prop so per-property easing won't be lost
7757 var anim = Animation( this, jQuery.extend( {}, prop ), optall );
7758
7759 // Empty animations, or finishing resolves immediately
7760 if ( empty || dataPriv.get( this, "finish" ) ) {
7761 anim.stop( true );
7762 }
7763 };
7764 doAnimation.finish = doAnimation;
7765
7766 return empty || optall.queue === false ?
7767 this.each( doAnimation ) :
7768 this.queue( optall.queue, doAnimation );
7769 },
7770 stop: function( type, clearQueue, gotoEnd ) {
7771 var stopQueue = function( hooks ) {
7772 var stop = hooks.stop;
7773 delete hooks.stop;
7774 stop( gotoEnd );
7775 };
7776
7777 if ( typeof type !== "string" ) {
7778 gotoEnd = clearQueue;
7779 clearQueue = type;
7780 type = undefined;
7781 }
7782 if ( clearQueue ) {
7783 this.queue( type || "fx", [] );
7784 }
7785
7786 return this.each( function() {
7787 var dequeue = true,
7788 index = type != null && type + "queueHooks",
7789 timers = jQuery.timers,
7790 data = dataPriv.get( this );
7791
7792 if ( index ) {
7793 if ( data[ index ] && data[ index ].stop ) {
7794 stopQueue( data[ index ] );
7795 }
7796 } else {
7797 for ( index in data ) {
7798 if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
7799 stopQueue( data[ index ] );
7800 }
7801 }
7802 }
7803
7804 for ( index = timers.length; index--; ) {
7805 if ( timers[ index ].elem === this &&
7806 ( type == null || timers[ index ].queue === type ) ) {
7807
7808 timers[ index ].anim.stop( gotoEnd );
7809 dequeue = false;
7810 timers.splice( index, 1 );
7811 }
7812 }
7813
7814 // Start the next in the queue if the last step wasn't forced.
7815 // Timers currently will call their complete callbacks, which
7816 // will dequeue but only if they were gotoEnd.
7817 if ( dequeue || !gotoEnd ) {
7818 jQuery.dequeue( this, type );
7819 }
7820 } );
7821 },
7822 finish: function( type ) {
7823 if ( type !== false ) {
7824 type = type || "fx";
7825 }
7826 return this.each( function() {
7827 var index,
7828 data = dataPriv.get( this ),
7829 queue = data[ type + "queue" ],
7830 hooks = data[ type + "queueHooks" ],
7831 timers = jQuery.timers,
7832 length = queue ? queue.length : 0;
7833
7834 // Enable finishing flag on private data
7835 data.finish = true;
7836
7837 // Empty the queue first
7838 jQuery.queue( this, type, [] );
7839
7840 if ( hooks && hooks.stop ) {
7841 hooks.stop.call( this, true );
7842 }
7843
7844 // Look for any active animations, and finish them
7845 for ( index = timers.length; index--; ) {
7846 if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
7847 timers[ index ].anim.stop( true );
7848 timers.splice( index, 1 );
7849 }
7850 }
7851
7852 // Look for any animations in the old queue and finish them
7853 for ( index = 0; index < length; index++ ) {
7854 if ( queue[ index ] && queue[ index ].finish ) {
7855 queue[ index ].finish.call( this );
7856 }
7857 }
7858
7859 // Turn off finishing flag
7860 delete data.finish;
7861 } );
7862 }
7863} );
7864
7865jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) {
7866 var cssFn = jQuery.fn[ name ];
7867 jQuery.fn[ name ] = function( speed, easing, callback ) {
7868 return speed == null || typeof speed === "boolean" ?
7869 cssFn.apply( this, arguments ) :
7870 this.animate( genFx( name, true ), speed, easing, callback );
7871 };
7872} );
7873
7874// Generate shortcuts for custom animations
7875jQuery.each( {
7876 slideDown: genFx( "show" ),
7877 slideUp: genFx( "hide" ),
7878 slideToggle: genFx( "toggle" ),
7879 fadeIn: { opacity: "show" },
7880 fadeOut: { opacity: "hide" },
7881 fadeToggle: { opacity: "toggle" }
7882}, function( name, props ) {
7883 jQuery.fn[ name ] = function( speed, easing, callback ) {
7884 return this.animate( props, speed, easing, callback );
7885 };
7886} );
7887
7888jQuery.timers = [];
7889jQuery.fx.tick = function() {
7890 var timer,
7891 i = 0,
7892 timers = jQuery.timers;
7893
7894 fxNow = Date.now();
7895
7896 for ( ; i < timers.length; i++ ) {
7897 timer = timers[ i ];
7898
7899 // Run the timer and safely remove it when done (allowing for external removal)
7900 if ( !timer() && timers[ i ] === timer ) {
7901 timers.splice( i--, 1 );
7902 }
7903 }
7904
7905 if ( !timers.length ) {
7906 jQuery.fx.stop();
7907 }
7908 fxNow = undefined;
7909};
7910
7911jQuery.fx.timer = function( timer ) {
7912 jQuery.timers.push( timer );
7913 jQuery.fx.start();
7914};
7915
7916jQuery.fx.interval = 13;
7917jQuery.fx.start = function() {
7918 if ( inProgress ) {
7919 return;
7920 }
7921
7922 inProgress = true;
7923 schedule();
7924};
7925
7926jQuery.fx.stop = function() {
7927 inProgress = null;
7928};
7929
7930jQuery.fx.speeds = {
7931 slow: 600,
7932 fast: 200,
7933
7934 // Default speed
7935 _default: 400
7936};
7937
7938
7939// Based off of the plugin by Clint Helfers, with permission.
7940// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
7941jQuery.fn.delay = function( time, type ) {
7942 time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
7943 type = type || "fx";
7944
7945 return this.queue( type, function( next, hooks ) {
7946 var timeout = window.setTimeout( next, time );
7947 hooks.stop = function() {
7948 window.clearTimeout( timeout );
7949 };
7950 } );
7951};
7952
7953
7954( function() {
7955 var input = document.createElement( "input" ),
7956 select = document.createElement( "select" ),
7957 opt = select.appendChild( document.createElement( "option" ) );
7958
7959 input.type = "checkbox";
7960
7961 // Support: Android <=4.3 only
7962 // Default value for a checkbox should be "on"
7963 support.checkOn = input.value !== "";
7964
7965 // Support: IE <=11 only
7966 // Must access selectedIndex to make default options select
7967 support.optSelected = opt.selected;
7968
7969 // Support: IE <=11 only
7970 // An input loses its value after becoming a radio
7971 input = document.createElement( "input" );
7972 input.value = "t";
7973 input.type = "radio";
7974 support.radioValue = input.value === "t";
7975} )();
7976
7977
7978var boolHook,
7979 attrHandle = jQuery.expr.attrHandle;
7980
7981jQuery.fn.extend( {
7982 attr: function( name, value ) {
7983 return access( this, jQuery.attr, name, value, arguments.length > 1 );
7984 },
7985
7986 removeAttr: function( name ) {
7987 return this.each( function() {
7988 jQuery.removeAttr( this, name );
7989 } );
7990 }
7991} );
7992
7993jQuery.extend( {
7994 attr: function( elem, name, value ) {
7995 var ret, hooks,
7996 nType = elem.nodeType;
7997
7998 // Don't get/set attributes on text, comment and attribute nodes
7999 if ( nType === 3 || nType === 8 || nType === 2 ) {
8000 return;
8001 }
8002
8003 // Fallback to prop when attributes are not supported
8004 if ( typeof elem.getAttribute === "undefined" ) {
8005 return jQuery.prop( elem, name, value );
8006 }
8007
8008 // Attribute hooks are determined by the lowercase version
8009 // Grab necessary hook if one is defined
8010 if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
8011 hooks = jQuery.attrHooks[ name.toLowerCase() ] ||
8012 ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
8013 }
8014
8015 if ( value !== undefined ) {
8016 if ( value === null ) {
8017 jQuery.removeAttr( elem, name );
8018 return;
8019 }
8020
8021 if ( hooks && "set" in hooks &&
8022 ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
8023 return ret;
8024 }
8025
8026 elem.setAttribute( name, value + "" );
8027 return value;
8028 }
8029
8030 if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
8031 return ret;
8032 }
8033
8034 ret = jQuery.find.attr( elem, name );
8035
8036 // Non-existent attributes return null, we normalize to undefined
8037 return ret == null ? undefined : ret;
8038 },
8039
8040 attrHooks: {
8041 type: {
8042 set: function( elem, value ) {
8043 if ( !support.radioValue && value === "radio" &&
8044 nodeName( elem, "input" ) ) {
8045 var val = elem.value;
8046 elem.setAttribute( "type", value );
8047 if ( val ) {
8048 elem.value = val;
8049 }
8050 return value;
8051 }
8052 }
8053 }
8054 },
8055
8056 removeAttr: function( elem, value ) {
8057 var name,
8058 i = 0,
8059
8060 // Attribute names can contain non-HTML whitespace characters
8061 // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
8062 attrNames = value && value.match( rnothtmlwhite );
8063
8064 if ( attrNames && elem.nodeType === 1 ) {
8065 while ( ( name = attrNames[ i++ ] ) ) {
8066 elem.removeAttribute( name );
8067 }
8068 }
8069 }
8070} );
8071
8072// Hooks for boolean attributes
8073boolHook = {
8074 set: function( elem, value, name ) {
8075 if ( value === false ) {
8076
8077 // Remove boolean attributes when set to false
8078 jQuery.removeAttr( elem, name );
8079 } else {
8080 elem.setAttribute( name, name );
8081 }
8082 return name;
8083 }
8084};
8085
8086jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) {
8087 var getter = attrHandle[ name ] || jQuery.find.attr;
8088
8089 attrHandle[ name ] = function( elem, name, isXML ) {
8090 var ret, handle,
8091 lowercaseName = name.toLowerCase();
8092
8093 if ( !isXML ) {
8094
8095 // Avoid an infinite loop by temporarily removing this function from the getter
8096 handle = attrHandle[ lowercaseName ];
8097 attrHandle[ lowercaseName ] = ret;
8098 ret = getter( elem, name, isXML ) != null ?
8099 lowercaseName :
8100 null;
8101 attrHandle[ lowercaseName ] = handle;
8102 }
8103 return ret;
8104 };
8105} );
8106
8107
8108
8109
8110var rfocusable = /^(?:input|select|textarea|button)$/i,
8111 rclickable = /^(?:a|area)$/i;
8112
8113jQuery.fn.extend( {
8114 prop: function( name, value ) {
8115 return access( this, jQuery.prop, name, value, arguments.length > 1 );
8116 },
8117
8118 removeProp: function( name ) {
8119 return this.each( function() {
8120 delete this[ jQuery.propFix[ name ] || name ];
8121 } );
8122 }
8123} );
8124
8125jQuery.extend( {
8126 prop: function( elem, name, value ) {
8127 var ret, hooks,
8128 nType = elem.nodeType;
8129
8130 // Don't get/set properties on text, comment and attribute nodes
8131 if ( nType === 3 || nType === 8 || nType === 2 ) {
8132 return;
8133 }
8134
8135 if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
8136
8137 // Fix name and attach hooks
8138 name = jQuery.propFix[ name ] || name;
8139 hooks = jQuery.propHooks[ name ];
8140 }
8141
8142 if ( value !== undefined ) {
8143 if ( hooks && "set" in hooks &&
8144 ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
8145 return ret;
8146 }
8147
8148 return ( elem[ name ] = value );
8149 }
8150
8151 if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
8152 return ret;
8153 }
8154
8155 return elem[ name ];
8156 },
8157
8158 propHooks: {
8159 tabIndex: {
8160 get: function( elem ) {
8161
8162 // Support: IE <=9 - 11 only
8163 // elem.tabIndex doesn't always return the
8164 // correct value when it hasn't been explicitly set
8165 // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
8166 // Use proper attribute retrieval(#12072)
8167 var tabindex = jQuery.find.attr( elem, "tabindex" );
8168
8169 if ( tabindex ) {
8170 return parseInt( tabindex, 10 );
8171 }
8172
8173 if (
8174 rfocusable.test( elem.nodeName ) ||
8175 rclickable.test( elem.nodeName ) &&
8176 elem.href
8177 ) {
8178 return 0;
8179 }
8180
8181 return -1;
8182 }
8183 }
8184 },
8185
8186 propFix: {
8187 "for": "htmlFor",
8188 "class": "className"
8189 }
8190} );
8191
8192// Support: IE <=11 only
8193// Accessing the selectedIndex property
8194// forces the browser to respect setting selected
8195// on the option
8196// The getter ensures a default option is selected
8197// when in an optgroup
8198// eslint rule "no-unused-expressions" is disabled for this code
8199// since it considers such accessions noop
8200if ( !support.optSelected ) {
8201 jQuery.propHooks.selected = {
8202 get: function( elem ) {
8203
8204 /* eslint no-unused-expressions: "off" */
8205
8206 var parent = elem.parentNode;
8207 if ( parent && parent.parentNode ) {
8208 parent.parentNode.selectedIndex;
8209 }
8210 return null;
8211 },
8212 set: function( elem ) {
8213
8214 /* eslint no-unused-expressions: "off" */
8215
8216 var parent = elem.parentNode;
8217 if ( parent ) {
8218 parent.selectedIndex;
8219
8220 if ( parent.parentNode ) {
8221 parent.parentNode.selectedIndex;
8222 }
8223 }
8224 }
8225 };
8226}
8227
8228jQuery.each( [
8229 "tabIndex",
8230 "readOnly",
8231 "maxLength",
8232 "cellSpacing",
8233 "cellPadding",
8234 "rowSpan",
8235 "colSpan",
8236 "useMap",
8237 "frameBorder",
8238 "contentEditable"
8239], function() {
8240 jQuery.propFix[ this.toLowerCase() ] = this;
8241} );
8242
8243
8244
8245
8246 // Strip and collapse whitespace according to HTML spec
8247 // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace
8248 function stripAndCollapse( value ) {
8249 var tokens = value.match( rnothtmlwhite ) || [];
8250 return tokens.join( " " );
8251 }
8252
8253
8254function getClass( elem ) {
8255 return elem.getAttribute && elem.getAttribute( "class" ) || "";
8256}
8257
8258function classesToArray( value ) {
8259 if ( Array.isArray( value ) ) {
8260 return value;
8261 }
8262 if ( typeof value === "string" ) {
8263 return value.match( rnothtmlwhite ) || [];
8264 }
8265 return [];
8266}
8267
8268jQuery.fn.extend( {
8269 addClass: function( value ) {
8270 var classes, elem, cur, curValue, clazz, j, finalValue,
8271 i = 0;
8272
8273 if ( isFunction( value ) ) {
8274 return this.each( function( j ) {
8275 jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
8276 } );
8277 }
8278
8279 classes = classesToArray( value );
8280
8281 if ( classes.length ) {
8282 while ( ( elem = this[ i++ ] ) ) {
8283 curValue = getClass( elem );
8284 cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
8285
8286 if ( cur ) {
8287 j = 0;
8288 while ( ( clazz = classes[ j++ ] ) ) {
8289 if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
8290 cur += clazz + " ";
8291 }
8292 }
8293
8294 // Only assign if different to avoid unneeded rendering.
8295 finalValue = stripAndCollapse( cur );
8296 if ( curValue !== finalValue ) {
8297 elem.setAttribute( "class", finalValue );
8298 }
8299 }
8300 }
8301 }
8302
8303 return this;
8304 },
8305
8306 removeClass: function( value ) {
8307 var classes, elem, cur, curValue, clazz, j, finalValue,
8308 i = 0;
8309
8310 if ( isFunction( value ) ) {
8311 return this.each( function( j ) {
8312 jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
8313 } );
8314 }
8315
8316 if ( !arguments.length ) {
8317 return this.attr( "class", "" );
8318 }
8319
8320 classes = classesToArray( value );
8321
8322 if ( classes.length ) {
8323 while ( ( elem = this[ i++ ] ) ) {
8324 curValue = getClass( elem );
8325
8326 // This expression is here for better compressibility (see addClass)
8327 cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
8328
8329 if ( cur ) {
8330 j = 0;
8331 while ( ( clazz = classes[ j++ ] ) ) {
8332
8333 // Remove *all* instances
8334 while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
8335 cur = cur.replace( " " + clazz + " ", " " );
8336 }
8337 }
8338
8339 // Only assign if different to avoid unneeded rendering.
8340 finalValue = stripAndCollapse( cur );
8341 if ( curValue !== finalValue ) {
8342 elem.setAttribute( "class", finalValue );
8343 }
8344 }
8345 }
8346 }
8347
8348 return this;
8349 },
8350
8351 toggleClass: function( value, stateVal ) {
8352 var type = typeof value,
8353 isValidValue = type === "string" || Array.isArray( value );
8354
8355 if ( typeof stateVal === "boolean" && isValidValue ) {
8356 return stateVal ? this.addClass( value ) : this.removeClass( value );
8357 }
8358
8359 if ( isFunction( value ) ) {
8360 return this.each( function( i ) {
8361 jQuery( this ).toggleClass(
8362 value.call( this, i, getClass( this ), stateVal ),
8363 stateVal
8364 );
8365 } );
8366 }
8367
8368 return this.each( function() {
8369 var className, i, self, classNames;
8370
8371 if ( isValidValue ) {
8372
8373 // Toggle individual class names
8374 i = 0;
8375 self = jQuery( this );
8376 classNames = classesToArray( value );
8377
8378 while ( ( className = classNames[ i++ ] ) ) {
8379
8380 // Check each className given, space separated list
8381 if ( self.hasClass( className ) ) {
8382 self.removeClass( className );
8383 } else {
8384 self.addClass( className );
8385 }
8386 }
8387
8388 // Toggle whole class name
8389 } else if ( value === undefined || type === "boolean" ) {
8390 className = getClass( this );
8391 if ( className ) {
8392
8393 // Store className if set
8394 dataPriv.set( this, "__className__", className );
8395 }
8396
8397 // If the element has a class name or if we're passed `false`,
8398 // then remove the whole classname (if there was one, the above saved it).
8399 // Otherwise bring back whatever was previously saved (if anything),
8400 // falling back to the empty string if nothing was stored.
8401 if ( this.setAttribute ) {
8402 this.setAttribute( "class",
8403 className || value === false ?
8404 "" :
8405 dataPriv.get( this, "__className__" ) || ""
8406 );
8407 }
8408 }
8409 } );
8410 },
8411
8412 hasClass: function( selector ) {
8413 var className, elem,
8414 i = 0;
8415
8416 className = " " + selector + " ";
8417 while ( ( elem = this[ i++ ] ) ) {
8418 if ( elem.nodeType === 1 &&
8419 ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
8420 return true;
8421 }
8422 }
8423
8424 return false;
8425 }
8426} );
8427
8428
8429
8430
8431var rreturn = /\r/g;
8432
8433jQuery.fn.extend( {
8434 val: function( value ) {
8435 var hooks, ret, valueIsFunction,
8436 elem = this[ 0 ];
8437
8438 if ( !arguments.length ) {
8439 if ( elem ) {
8440 hooks = jQuery.valHooks[ elem.type ] ||
8441 jQuery.valHooks[ elem.nodeName.toLowerCase() ];
8442
8443 if ( hooks &&
8444 "get" in hooks &&
8445 ( ret = hooks.get( elem, "value" ) ) !== undefined
8446 ) {
8447 return ret;
8448 }
8449
8450 ret = elem.value;
8451
8452 // Handle most common string cases
8453 if ( typeof ret === "string" ) {
8454 return ret.replace( rreturn, "" );
8455 }
8456
8457 // Handle cases where value is null/undef or number
8458 return ret == null ? "" : ret;
8459 }
8460
8461 return;
8462 }
8463
8464 valueIsFunction = isFunction( value );
8465
8466 return this.each( function( i ) {
8467 var val;
8468
8469 if ( this.nodeType !== 1 ) {
8470 return;
8471 }
8472
8473 if ( valueIsFunction ) {
8474 val = value.call( this, i, jQuery( this ).val() );
8475 } else {
8476 val = value;
8477 }
8478
8479 // Treat null/undefined as ""; convert numbers to string
8480 if ( val == null ) {
8481 val = "";
8482
8483 } else if ( typeof val === "number" ) {
8484 val += "";
8485
8486 } else if ( Array.isArray( val ) ) {
8487 val = jQuery.map( val, function( value ) {
8488 return value == null ? "" : value + "";
8489 } );
8490 }
8491
8492 hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
8493
8494 // If set returns undefined, fall back to normal setting
8495 if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
8496 this.value = val;
8497 }
8498 } );
8499 }
8500} );
8501
8502jQuery.extend( {
8503 valHooks: {
8504 option: {
8505 get: function( elem ) {
8506
8507 var val = jQuery.find.attr( elem, "value" );
8508 return val != null ?
8509 val :
8510
8511 // Support: IE <=10 - 11 only
8512 // option.text throws exceptions (#14686, #14858)
8513 // Strip and collapse whitespace
8514 // https://html.spec.whatwg.org/#strip-and-collapse-whitespace
8515 stripAndCollapse( jQuery.text( elem ) );
8516 }
8517 },
8518 select: {
8519 get: function( elem ) {
8520 var value, option, i,
8521 options = elem.options,
8522 index = elem.selectedIndex,
8523 one = elem.type === "select-one",
8524 values = one ? null : [],
8525 max = one ? index + 1 : options.length;
8526
8527 if ( index < 0 ) {
8528 i = max;
8529
8530 } else {
8531 i = one ? index : 0;
8532 }
8533
8534 // Loop through all the selected options
8535 for ( ; i < max; i++ ) {
8536 option = options[ i ];
8537
8538 // Support: IE <=9 only
8539 // IE8-9 doesn't update selected after form reset (#2551)
8540 if ( ( option.selected || i === index ) &&
8541
8542 // Don't return options that are disabled or in a disabled optgroup
8543 !option.disabled &&
8544 ( !option.parentNode.disabled ||
8545 !nodeName( option.parentNode, "optgroup" ) ) ) {
8546
8547 // Get the specific value for the option
8548 value = jQuery( option ).val();
8549
8550 // We don't need an array for one selects
8551 if ( one ) {
8552 return value;
8553 }
8554
8555 // Multi-Selects return an array
8556 values.push( value );
8557 }
8558 }
8559
8560 return values;
8561 },
8562
8563 set: function( elem, value ) {
8564 var optionSet, option,
8565 options = elem.options,
8566 values = jQuery.makeArray( value ),
8567 i = options.length;
8568
8569 while ( i-- ) {
8570 option = options[ i ];
8571
8572 /* eslint-disable no-cond-assign */
8573
8574 if ( option.selected =
8575 jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
8576 ) {
8577 optionSet = true;
8578 }
8579
8580 /* eslint-enable no-cond-assign */
8581 }
8582
8583 // Force browsers to behave consistently when non-matching value is set
8584 if ( !optionSet ) {
8585 elem.selectedIndex = -1;
8586 }
8587 return values;
8588 }
8589 }
8590 }
8591} );
8592
8593// Radios and checkboxes getter/setter
8594jQuery.each( [ "radio", "checkbox" ], function() {
8595 jQuery.valHooks[ this ] = {
8596 set: function( elem, value ) {
8597 if ( Array.isArray( value ) ) {
8598 return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
8599 }
8600 }
8601 };
8602 if ( !support.checkOn ) {
8603 jQuery.valHooks[ this ].get = function( elem ) {
8604 return elem.getAttribute( "value" ) === null ? "on" : elem.value;
8605 };
8606 }
8607} );
8608
8609
8610
8611
8612// Return jQuery for attributes-only inclusion
8613
8614
8615support.focusin = "onfocusin" in window;
8616
8617
8618var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
8619 stopPropagationCallback = function( e ) {
8620 e.stopPropagation();
8621 };
8622
8623jQuery.extend( jQuery.event, {
8624
8625 trigger: function( event, data, elem, onlyHandlers ) {
8626
8627 var i, cur, tmp, bubbleType, ontype, handle, special, lastElement,
8628 eventPath = [ elem || document ],
8629 type = hasOwn.call( event, "type" ) ? event.type : event,
8630 namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
8631
8632 cur = lastElement = tmp = elem = elem || document;
8633
8634 // Don't do events on text and comment nodes
8635 if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
8636 return;
8637 }
8638
8639 // focus/blur morphs to focusin/out; ensure we're not firing them right now
8640 if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
8641 return;
8642 }
8643
8644 if ( type.indexOf( "." ) > -1 ) {
8645
8646 // Namespaced trigger; create a regexp to match event type in handle()
8647 namespaces = type.split( "." );
8648 type = namespaces.shift();
8649 namespaces.sort();
8650 }
8651 ontype = type.indexOf( ":" ) < 0 && "on" + type;
8652
8653 // Caller can pass in a jQuery.Event object, Object, or just an event type string
8654 event = event[ jQuery.expando ] ?
8655 event :
8656 new jQuery.Event( type, typeof event === "object" && event );
8657
8658 // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
8659 event.isTrigger = onlyHandlers ? 2 : 3;
8660 event.namespace = namespaces.join( "." );
8661 event.rnamespace = event.namespace ?
8662 new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
8663 null;
8664
8665 // Clean up the event in case it is being reused
8666 event.result = undefined;
8667 if ( !event.target ) {
8668 event.target = elem;
8669 }
8670
8671 // Clone any incoming data and prepend the event, creating the handler arg list
8672 data = data == null ?
8673 [ event ] :
8674 jQuery.makeArray( data, [ event ] );
8675
8676 // Allow special events to draw outside the lines
8677 special = jQuery.event.special[ type ] || {};
8678 if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
8679 return;
8680 }
8681
8682 // Determine event propagation path in advance, per W3C events spec (#9951)
8683 // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
8684 if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {
8685
8686 bubbleType = special.delegateType || type;
8687 if ( !rfocusMorph.test( bubbleType + type ) ) {
8688 cur = cur.parentNode;
8689 }
8690 for ( ; cur; cur = cur.parentNode ) {
8691 eventPath.push( cur );
8692 tmp = cur;
8693 }
8694
8695 // Only add window if we got to document (e.g., not plain obj or detached DOM)
8696 if ( tmp === ( elem.ownerDocument || document ) ) {
8697 eventPath.push( tmp.defaultView || tmp.parentWindow || window );
8698 }
8699 }
8700
8701 // Fire handlers on the event path
8702 i = 0;
8703 while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
8704 lastElement = cur;
8705 event.type = i > 1 ?
8706 bubbleType :
8707 special.bindType || type;
8708
8709 // jQuery handler
8710 handle = (
8711 dataPriv.get( cur, "events" ) || Object.create( null )
8712 )[ event.type ] &&
8713 dataPriv.get( cur, "handle" );
8714 if ( handle ) {
8715 handle.apply( cur, data );
8716 }
8717
8718 // Native handler
8719 handle = ontype && cur[ ontype ];
8720 if ( handle && handle.apply && acceptData( cur ) ) {
8721 event.result = handle.apply( cur, data );
8722 if ( event.result === false ) {
8723 event.preventDefault();
8724 }
8725 }
8726 }
8727 event.type = type;
8728
8729 // If nobody prevented the default action, do it now
8730 if ( !onlyHandlers && !event.isDefaultPrevented() ) {
8731
8732 if ( ( !special._default ||
8733 special._default.apply( eventPath.pop(), data ) === false ) &&
8734 acceptData( elem ) ) {
8735
8736 // Call a native DOM method on the target with the same name as the event.
8737 // Don't do default actions on window, that's where global variables be (#6170)
8738 if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {
8739
8740 // Don't re-trigger an onFOO event when we call its FOO() method
8741 tmp = elem[ ontype ];
8742
8743 if ( tmp ) {
8744 elem[ ontype ] = null;
8745 }
8746
8747 // Prevent re-triggering of the same event, since we already bubbled it above
8748 jQuery.event.triggered = type;
8749
8750 if ( event.isPropagationStopped() ) {
8751 lastElement.addEventListener( type, stopPropagationCallback );
8752 }
8753
8754 elem[ type ]();
8755
8756 if ( event.isPropagationStopped() ) {
8757 lastElement.removeEventListener( type, stopPropagationCallback );
8758 }
8759
8760 jQuery.event.triggered = undefined;
8761
8762 if ( tmp ) {
8763 elem[ ontype ] = tmp;
8764 }
8765 }
8766 }
8767 }
8768
8769 return event.result;
8770 },
8771
8772 // Piggyback on a donor event to simulate a different one
8773 // Used only for `focus(in | out)` events
8774 simulate: function( type, elem, event ) {
8775 var e = jQuery.extend(
8776 new jQuery.Event(),
8777 event,
8778 {
8779 type: type,
8780 isSimulated: true
8781 }
8782 );
8783
8784 jQuery.event.trigger( e, null, elem );
8785 }
8786
8787} );
8788
8789jQuery.fn.extend( {
8790
8791 trigger: function( type, data ) {
8792 return this.each( function() {
8793 jQuery.event.trigger( type, data, this );
8794 } );
8795 },
8796 triggerHandler: function( type, data ) {
8797 var elem = this[ 0 ];
8798 if ( elem ) {
8799 return jQuery.event.trigger( type, data, elem, true );
8800 }
8801 }
8802} );
8803
8804
8805// Support: Firefox <=44
8806// Firefox doesn't have focus(in | out) events
8807// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
8808//
8809// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
8810// focus(in | out) events fire after focus & blur events,
8811// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
8812// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
8813if ( !support.focusin ) {
8814 jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
8815
8816 // Attach a single capturing handler on the document while someone wants focusin/focusout
8817 var handler = function( event ) {
8818 jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );
8819 };
8820
8821 jQuery.event.special[ fix ] = {
8822 setup: function() {
8823
8824 // Handle: regular nodes (via `this.ownerDocument`), window
8825 // (via `this.document`) & document (via `this`).
8826 var doc = this.ownerDocument || this.document || this,
8827 attaches = dataPriv.access( doc, fix );
8828
8829 if ( !attaches ) {
8830 doc.addEventListener( orig, handler, true );
8831 }
8832 dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
8833 },
8834 teardown: function() {
8835 var doc = this.ownerDocument || this.document || this,
8836 attaches = dataPriv.access( doc, fix ) - 1;
8837
8838 if ( !attaches ) {
8839 doc.removeEventListener( orig, handler, true );
8840 dataPriv.remove( doc, fix );
8841
8842 } else {
8843 dataPriv.access( doc, fix, attaches );
8844 }
8845 }
8846 };
8847 } );
8848}
8849var location = window.location;
8850
8851var nonce = { guid: Date.now() };
8852
8853var rquery = ( /\?/ );
8854
8855
8856
8857// Cross-browser xml parsing
8858jQuery.parseXML = function( data ) {
8859 var xml;
8860 if ( !data || typeof data !== "string" ) {
8861 return null;
8862 }
8863
8864 // Support: IE 9 - 11 only
8865 // IE throws on parseFromString with invalid input.
8866 try {
8867 xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
8868 } catch ( e ) {
8869 xml = undefined;
8870 }
8871
8872 if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
8873 jQuery.error( "Invalid XML: " + data );
8874 }
8875 return xml;
8876};
8877
8878
8879var
8880 rbracket = /\[\]$/,
8881 rCRLF = /\r?\n/g,
8882 rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
8883 rsubmittable = /^(?:input|select|textarea|keygen)/i;
8884
8885function buildParams( prefix, obj, traditional, add ) {
8886 var name;
8887
8888 if ( Array.isArray( obj ) ) {
8889
8890 // Serialize array item.
8891 jQuery.each( obj, function( i, v ) {
8892 if ( traditional || rbracket.test( prefix ) ) {
8893
8894 // Treat each array item as a scalar.
8895 add( prefix, v );
8896
8897 } else {
8898
8899 // Item is non-scalar (array or object), encode its numeric index.
8900 buildParams(
8901 prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
8902 v,
8903 traditional,
8904 add
8905 );
8906 }
8907 } );
8908
8909 } else if ( !traditional && toType( obj ) === "object" ) {
8910
8911 // Serialize object item.
8912 for ( name in obj ) {
8913 buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
8914 }
8915
8916 } else {
8917
8918 // Serialize scalar item.
8919 add( prefix, obj );
8920 }
8921}
8922
8923// Serialize an array of form elements or a set of
8924// key/values into a query string
8925jQuery.param = function( a, traditional ) {
8926 var prefix,
8927 s = [],
8928 add = function( key, valueOrFunction ) {
8929
8930 // If value is a function, invoke it and use its return value
8931 var value = isFunction( valueOrFunction ) ?
8932 valueOrFunction() :
8933 valueOrFunction;
8934
8935 s[ s.length ] = encodeURIComponent( key ) + "=" +
8936 encodeURIComponent( value == null ? "" : value );
8937 };
8938
8939 if ( a == null ) {
8940 return "";
8941 }
8942
8943 // If an array was passed in, assume that it is an array of form elements.
8944 if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
8945
8946 // Serialize the form elements
8947 jQuery.each( a, function() {
8948 add( this.name, this.value );
8949 } );
8950
8951 } else {
8952
8953 // If traditional, encode the "old" way (the way 1.3.2 or older
8954 // did it), otherwise encode params recursively.
8955 for ( prefix in a ) {
8956 buildParams( prefix, a[ prefix ], traditional, add );
8957 }
8958 }
8959
8960 // Return the resulting serialization
8961 return s.join( "&" );
8962};
8963
8964jQuery.fn.extend( {
8965 serialize: function() {
8966 return jQuery.param( this.serializeArray() );
8967 },
8968 serializeArray: function() {
8969 return this.map( function() {
8970
8971 // Can add propHook for "elements" to filter or add form elements
8972 var elements = jQuery.prop( this, "elements" );
8973 return elements ? jQuery.makeArray( elements ) : this;
8974 } )
8975 .filter( function() {
8976 var type = this.type;
8977
8978 // Use .is( ":disabled" ) so that fieldset[disabled] works
8979 return this.name && !jQuery( this ).is( ":disabled" ) &&
8980 rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
8981 ( this.checked || !rcheckableType.test( type ) );
8982 } )
8983 .map( function( _i, elem ) {
8984 var val = jQuery( this ).val();
8985
8986 if ( val == null ) {
8987 return null;
8988 }
8989
8990 if ( Array.isArray( val ) ) {
8991 return jQuery.map( val, function( val ) {
8992 return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
8993 } );
8994 }
8995
8996 return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
8997 } ).get();
8998 }
8999} );
9000
9001
9002var
9003 r20 = /%20/g,
9004 rhash = /#.*$/,
9005 rantiCache = /([?&])_=[^&]*/,
9006 rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
9007
9008 // #7653, #8125, #8152: local protocol detection
9009 rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
9010 rnoContent = /^(?:GET|HEAD)$/,
9011 rprotocol = /^\/\//,
9012
9013 /* Prefilters
9014 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
9015 * 2) These are called:
9016 * - BEFORE asking for a transport
9017 * - AFTER param serialization (s.data is a string if s.processData is true)
9018 * 3) key is the dataType
9019 * 4) the catchall symbol "*" can be used
9020 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
9021 */
9022 prefilters = {},
9023
9024 /* Transports bindings
9025 * 1) key is the dataType
9026 * 2) the catchall symbol "*" can be used
9027 * 3) selection will start with transport dataType and THEN go to "*" if needed
9028 */
9029 transports = {},
9030
9031 // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
9032 allTypes = "*/".concat( "*" ),
9033
9034 // Anchor tag for parsing the document origin
9035 originAnchor = document.createElement( "a" );
9036 originAnchor.href = location.href;
9037
9038// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
9039function addToPrefiltersOrTransports( structure ) {
9040
9041 // dataTypeExpression is optional and defaults to "*"
9042 return function( dataTypeExpression, func ) {
9043
9044 if ( typeof dataTypeExpression !== "string" ) {
9045 func = dataTypeExpression;
9046 dataTypeExpression = "*";
9047 }
9048
9049 var dataType,
9050 i = 0,
9051 dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];
9052
9053 if ( isFunction( func ) ) {
9054
9055 // For each dataType in the dataTypeExpression
9056 while ( ( dataType = dataTypes[ i++ ] ) ) {
9057
9058 // Prepend if requested
9059 if ( dataType[ 0 ] === "+" ) {
9060 dataType = dataType.slice( 1 ) || "*";
9061 ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );
9062
9063 // Otherwise append
9064 } else {
9065 ( structure[ dataType ] = structure[ dataType ] || [] ).push( func );
9066 }
9067 }
9068 }
9069 };
9070}
9071
9072// Base inspection function for prefilters and transports
9073function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
9074
9075 var inspected = {},
9076 seekingTransport = ( structure === transports );
9077
9078 function inspect( dataType ) {
9079 var selected;
9080 inspected[ dataType ] = true;
9081 jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
9082 var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
9083 if ( typeof dataTypeOrTransport === "string" &&
9084 !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
9085
9086 options.dataTypes.unshift( dataTypeOrTransport );
9087 inspect( dataTypeOrTransport );
9088 return false;
9089 } else if ( seekingTransport ) {
9090 return !( selected = dataTypeOrTransport );
9091 }
9092 } );
9093 return selected;
9094 }
9095
9096 return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
9097}
9098
9099// A special extend for ajax options
9100// that takes "flat" options (not to be deep extended)
9101// Fixes #9887
9102function ajaxExtend( target, src ) {
9103 var key, deep,
9104 flatOptions = jQuery.ajaxSettings.flatOptions || {};
9105
9106 for ( key in src ) {
9107 if ( src[ key ] !== undefined ) {
9108 ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
9109 }
9110 }
9111 if ( deep ) {
9112 jQuery.extend( true, target, deep );
9113 }
9114
9115 return target;
9116}
9117
9118/* Handles responses to an ajax request:
9119 * - finds the right dataType (mediates between content-type and expected dataType)
9120 * - returns the corresponding response
9121 */
9122function ajaxHandleResponses( s, jqXHR, responses ) {
9123
9124 var ct, type, finalDataType, firstDataType,
9125 contents = s.contents,
9126 dataTypes = s.dataTypes;
9127
9128 // Remove auto dataType and get content-type in the process
9129 while ( dataTypes[ 0 ] === "*" ) {
9130 dataTypes.shift();
9131 if ( ct === undefined ) {
9132 ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" );
9133 }
9134 }
9135
9136 // Check if we're dealing with a known content-type
9137 if ( ct ) {
9138 for ( type in contents ) {
9139 if ( contents[ type ] && contents[ type ].test( ct ) ) {
9140 dataTypes.unshift( type );
9141 break;
9142 }
9143 }
9144 }
9145
9146 // Check to see if we have a response for the expected dataType
9147 if ( dataTypes[ 0 ] in responses ) {
9148 finalDataType = dataTypes[ 0 ];
9149 } else {
9150
9151 // Try convertible dataTypes
9152 for ( type in responses ) {
9153 if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) {
9154 finalDataType = type;
9155 break;
9156 }
9157 if ( !firstDataType ) {
9158 firstDataType = type;
9159 }
9160 }
9161
9162 // Or just use first one
9163 finalDataType = finalDataType || firstDataType;
9164 }
9165
9166 // If we found a dataType
9167 // We add the dataType to the list if needed
9168 // and return the corresponding response
9169 if ( finalDataType ) {
9170 if ( finalDataType !== dataTypes[ 0 ] ) {
9171 dataTypes.unshift( finalDataType );
9172 }
9173 return responses[ finalDataType ];
9174 }
9175}
9176
9177/* Chain conversions given the request and the original response
9178 * Also sets the responseXXX fields on the jqXHR instance
9179 */
9180function ajaxConvert( s, response, jqXHR, isSuccess ) {
9181 var conv2, current, conv, tmp, prev,
9182 converters = {},
9183
9184 // Work with a copy of dataTypes in case we need to modify it for conversion
9185 dataTypes = s.dataTypes.slice();
9186
9187 // Create converters map with lowercased keys
9188 if ( dataTypes[ 1 ] ) {
9189 for ( conv in s.converters ) {
9190 converters[ conv.toLowerCase() ] = s.converters[ conv ];
9191 }
9192 }
9193
9194 current = dataTypes.shift();
9195
9196 // Convert to each sequential dataType
9197 while ( current ) {
9198
9199 if ( s.responseFields[ current ] ) {
9200 jqXHR[ s.responseFields[ current ] ] = response;
9201 }
9202
9203 // Apply the dataFilter if provided
9204 if ( !prev && isSuccess && s.dataFilter ) {
9205 response = s.dataFilter( response, s.dataType );
9206 }
9207
9208 prev = current;
9209 current = dataTypes.shift();
9210
9211 if ( current ) {
9212
9213 // There's only work to do if current dataType is non-auto
9214 if ( current === "*" ) {
9215
9216 current = prev;
9217
9218 // Convert response if prev dataType is non-auto and differs from current
9219 } else if ( prev !== "*" && prev !== current ) {
9220
9221 // Seek a direct converter
9222 conv = converters[ prev + " " + current ] || converters[ "* " + current ];
9223
9224 // If none found, seek a pair
9225 if ( !conv ) {
9226 for ( conv2 in converters ) {
9227
9228 // If conv2 outputs current
9229 tmp = conv2.split( " " );
9230 if ( tmp[ 1 ] === current ) {
9231
9232 // If prev can be converted to accepted input
9233 conv = converters[ prev + " " + tmp[ 0 ] ] ||
9234 converters[ "* " + tmp[ 0 ] ];
9235 if ( conv ) {
9236
9237 // Condense equivalence converters
9238 if ( conv === true ) {
9239 conv = converters[ conv2 ];
9240
9241 // Otherwise, insert the intermediate dataType
9242 } else if ( converters[ conv2 ] !== true ) {
9243 current = tmp[ 0 ];
9244 dataTypes.unshift( tmp[ 1 ] );
9245 }
9246 break;
9247 }
9248 }
9249 }
9250 }
9251
9252 // Apply converter (if not an equivalence)
9253 if ( conv !== true ) {
9254
9255 // Unless errors are allowed to bubble, catch and return them
9256 if ( conv && s.throws ) {
9257 response = conv( response );
9258 } else {
9259 try {
9260 response = conv( response );
9261 } catch ( e ) {
9262 return {
9263 state: "parsererror",
9264 error: conv ? e : "No conversion from " + prev + " to " + current
9265 };
9266 }
9267 }
9268 }
9269 }
9270 }
9271 }
9272
9273 return { state: "success", data: response };
9274}
9275
9276jQuery.extend( {
9277
9278 // Counter for holding the number of active queries
9279 active: 0,
9280
9281 // Last-Modified header cache for next request
9282 lastModified: {},
9283 etag: {},
9284
9285 ajaxSettings: {
9286 url: location.href,
9287 type: "GET",
9288 isLocal: rlocalProtocol.test( location.protocol ),
9289 global: true,
9290 processData: true,
9291 async: true,
9292 contentType: "application/x-www-form-urlencoded; charset=UTF-8",
9293
9294 /*
9295 timeout: 0,
9296 data: null,
9297 dataType: null,
9298 username: null,
9299 password: null,
9300 cache: null,
9301 throws: false,
9302 traditional: false,
9303 headers: {},
9304 */
9305
9306 accepts: {
9307 "*": allTypes,
9308 text: "text/plain",
9309 html: "text/html",
9310 xml: "application/xml, text/xml",
9311 json: "application/json, text/javascript"
9312 },
9313
9314 contents: {
9315 xml: /\bxml\b/,
9316 html: /\bhtml/,
9317 json: /\bjson\b/
9318 },
9319
9320 responseFields: {
9321 xml: "responseXML",
9322 text: "responseText",
9323 json: "responseJSON"
9324 },
9325
9326 // Data converters
9327 // Keys separate source (or catchall "*") and destination types with a single space
9328 converters: {
9329
9330 // Convert anything to text
9331 "* text": String,
9332
9333 // Text to html (true = no transformation)
9334 "text html": true,
9335
9336 // Evaluate text as a json expression
9337 "text json": JSON.parse,
9338
9339 // Parse text as xml
9340 "text xml": jQuery.parseXML
9341 },
9342
9343 // For options that shouldn't be deep extended:
9344 // you can add your own custom options here if
9345 // and when you create one that shouldn't be
9346 // deep extended (see ajaxExtend)
9347 flatOptions: {
9348 url: true,
9349 context: true
9350 }
9351 },
9352
9353 // Creates a full fledged settings object into target
9354 // with both ajaxSettings and settings fields.
9355 // If target is omitted, writes into ajaxSettings.
9356 ajaxSetup: function( target, settings ) {
9357 return settings ?
9358
9359 // Building a settings object
9360 ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
9361
9362 // Extending ajaxSettings
9363 ajaxExtend( jQuery.ajaxSettings, target );
9364 },
9365
9366 ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
9367 ajaxTransport: addToPrefiltersOrTransports( transports ),
9368
9369 // Main method
9370 ajax: function( url, options ) {
9371
9372 // If url is an object, simulate pre-1.5 signature
9373 if ( typeof url === "object" ) {
9374 options = url;
9375 url = undefined;
9376 }
9377
9378 // Force options to be an object
9379 options = options || {};
9380
9381 var transport,
9382
9383 // URL without anti-cache param
9384 cacheURL,
9385
9386 // Response headers
9387 responseHeadersString,
9388 responseHeaders,
9389
9390 // timeout handle
9391 timeoutTimer,
9392
9393 // Url cleanup var
9394 urlAnchor,
9395
9396 // Request state (becomes false upon send and true upon completion)
9397 completed,
9398
9399 // To know if global events are to be dispatched
9400 fireGlobals,
9401
9402 // Loop variable
9403 i,
9404
9405 // uncached part of the url
9406 uncached,
9407
9408 // Create the final options object
9409 s = jQuery.ajaxSetup( {}, options ),
9410
9411 // Callbacks context
9412 callbackContext = s.context || s,
9413
9414 // Context for global events is callbackContext if it is a DOM node or jQuery collection
9415 globalEventContext = s.context &&
9416 ( callbackContext.nodeType || callbackContext.jquery ) ?
9417 jQuery( callbackContext ) :
9418 jQuery.event,
9419
9420 // Deferreds
9421 deferred = jQuery.Deferred(),
9422 completeDeferred = jQuery.Callbacks( "once memory" ),
9423
9424 // Status-dependent callbacks
9425 statusCode = s.statusCode || {},
9426
9427 // Headers (they are sent all at once)
9428 requestHeaders = {},
9429 requestHeadersNames = {},
9430
9431 // Default abort message
9432 strAbort = "canceled",
9433
9434 // Fake xhr
9435 jqXHR = {
9436 readyState: 0,
9437
9438 // Builds headers hashtable if needed
9439 getResponseHeader: function( key ) {
9440 var match;
9441 if ( completed ) {
9442 if ( !responseHeaders ) {
9443 responseHeaders = {};
9444 while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
9445 responseHeaders[ match[ 1 ].toLowerCase() + " " ] =
9446 ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] )
9447 .concat( match[ 2 ] );
9448 }
9449 }
9450 match = responseHeaders[ key.toLowerCase() + " " ];
9451 }
9452 return match == null ? null : match.join( ", " );
9453 },
9454
9455 // Raw string
9456 getAllResponseHeaders: function() {
9457 return completed ? responseHeadersString : null;
9458 },
9459
9460 // Caches the header
9461 setRequestHeader: function( name, value ) {
9462 if ( completed == null ) {
9463 name = requestHeadersNames[ name.toLowerCase() ] =
9464 requestHeadersNames[ name.toLowerCase() ] || name;
9465 requestHeaders[ name ] = value;
9466 }
9467 return this;
9468 },
9469
9470 // Overrides response content-type header
9471 overrideMimeType: function( type ) {
9472 if ( completed == null ) {
9473 s.mimeType = type;
9474 }
9475 return this;
9476 },
9477
9478 // Status-dependent callbacks
9479 statusCode: function( map ) {
9480 var code;
9481 if ( map ) {
9482 if ( completed ) {
9483
9484 // Execute the appropriate callbacks
9485 jqXHR.always( map[ jqXHR.status ] );
9486 } else {
9487
9488 // Lazy-add the new callbacks in a way that preserves old ones
9489 for ( code in map ) {
9490 statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
9491 }
9492 }
9493 }
9494 return this;
9495 },
9496
9497 // Cancel the request
9498 abort: function( statusText ) {
9499 var finalText = statusText || strAbort;
9500 if ( transport ) {
9501 transport.abort( finalText );
9502 }
9503 done( 0, finalText );
9504 return this;
9505 }
9506 };
9507
9508 // Attach deferreds
9509 deferred.promise( jqXHR );
9510
9511 // Add protocol if not provided (prefilters might expect it)
9512 // Handle falsy url in the settings object (#10093: consistency with old signature)
9513 // We also use the url parameter if available
9514 s.url = ( ( url || s.url || location.href ) + "" )
9515 .replace( rprotocol, location.protocol + "//" );
9516
9517 // Alias method option to type as per ticket #12004
9518 s.type = options.method || options.type || s.method || s.type;
9519
9520 // Extract dataTypes list
9521 s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ];
9522
9523 // A cross-domain request is in order when the origin doesn't match the current origin.
9524 if ( s.crossDomain == null ) {
9525 urlAnchor = document.createElement( "a" );
9526
9527 // Support: IE <=8 - 11, Edge 12 - 15
9528 // IE throws exception on accessing the href property if url is malformed,
9529 // e.g. http://example.com:80x/
9530 try {
9531 urlAnchor.href = s.url;
9532
9533 // Support: IE <=8 - 11 only
9534 // Anchor's host property isn't correctly set when s.url is relative
9535 urlAnchor.href = urlAnchor.href;
9536 s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==
9537 urlAnchor.protocol + "//" + urlAnchor.host;
9538 } catch ( e ) {
9539
9540 // If there is an error parsing the URL, assume it is crossDomain,
9541 // it can be rejected by the transport if it is invalid
9542 s.crossDomain = true;
9543 }
9544 }
9545
9546 // Convert data if not already a string
9547 if ( s.data && s.processData && typeof s.data !== "string" ) {
9548 s.data = jQuery.param( s.data, s.traditional );
9549 }
9550
9551 // Apply prefilters
9552 inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
9553
9554 // If request was aborted inside a prefilter, stop there
9555 if ( completed ) {
9556 return jqXHR;
9557 }
9558
9559 // We can fire global events as of now if asked to
9560 // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
9561 fireGlobals = jQuery.event && s.global;
9562
9563 // Watch for a new set of requests
9564 if ( fireGlobals && jQuery.active++ === 0 ) {
9565 jQuery.event.trigger( "ajaxStart" );
9566 }
9567
9568 // Uppercase the type
9569 s.type = s.type.toUpperCase();
9570
9571 // Determine if request has content
9572 s.hasContent = !rnoContent.test( s.type );
9573
9574 // Save the URL in case we're toying with the If-Modified-Since
9575 // and/or If-None-Match header later on
9576 // Remove hash to simplify url manipulation
9577 cacheURL = s.url.replace( rhash, "" );
9578
9579 // More options handling for requests with no content
9580 if ( !s.hasContent ) {
9581
9582 // Remember the hash so we can put it back
9583 uncached = s.url.slice( cacheURL.length );
9584
9585 // If data is available and should be processed, append data to url
9586 if ( s.data && ( s.processData || typeof s.data === "string" ) ) {
9587 cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data;
9588
9589 // #9682: remove data so that it's not used in an eventual retry
9590 delete s.data;
9591 }
9592
9593 // Add or update anti-cache param if needed
9594 if ( s.cache === false ) {
9595 cacheURL = cacheURL.replace( rantiCache, "$1" );
9596 uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) +
9597 uncached;
9598 }
9599
9600 // Put hash and anti-cache on the URL that will be requested (gh-1732)
9601 s.url = cacheURL + uncached;
9602
9603 // Change '%20' to '+' if this is encoded form body content (gh-2658)
9604 } else if ( s.data && s.processData &&
9605 ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) {
9606 s.data = s.data.replace( r20, "+" );
9607 }
9608
9609 // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
9610 if ( s.ifModified ) {
9611 if ( jQuery.lastModified[ cacheURL ] ) {
9612 jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
9613 }
9614 if ( jQuery.etag[ cacheURL ] ) {
9615 jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
9616 }
9617 }
9618
9619 // Set the correct header, if data is being sent
9620 if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
9621 jqXHR.setRequestHeader( "Content-Type", s.contentType );
9622 }
9623
9624 // Set the Accepts header for the server, depending on the dataType
9625 jqXHR.setRequestHeader(
9626 "Accept",
9627 s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?
9628 s.accepts[ s.dataTypes[ 0 ] ] +
9629 ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
9630 s.accepts[ "*" ]
9631 );
9632
9633 // Check for headers option
9634 for ( i in s.headers ) {
9635 jqXHR.setRequestHeader( i, s.headers[ i ] );
9636 }
9637
9638 // Allow custom headers/mimetypes and early abort
9639 if ( s.beforeSend &&
9640 ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {
9641
9642 // Abort if not done already and return
9643 return jqXHR.abort();
9644 }
9645
9646 // Aborting is no longer a cancellation
9647 strAbort = "abort";
9648
9649 // Install callbacks on deferreds
9650 completeDeferred.add( s.complete );
9651 jqXHR.done( s.success );
9652 jqXHR.fail( s.error );
9653
9654 // Get transport
9655 transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
9656
9657 // If no transport, we auto-abort
9658 if ( !transport ) {
9659 done( -1, "No Transport" );
9660 } else {
9661 jqXHR.readyState = 1;
9662
9663 // Send global event
9664 if ( fireGlobals ) {
9665 globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
9666 }
9667
9668 // If request was aborted inside ajaxSend, stop there
9669 if ( completed ) {
9670 return jqXHR;
9671 }
9672
9673 // Timeout
9674 if ( s.async && s.timeout > 0 ) {
9675 timeoutTimer = window.setTimeout( function() {
9676 jqXHR.abort( "timeout" );
9677 }, s.timeout );
9678 }
9679
9680 try {
9681 completed = false;
9682 transport.send( requestHeaders, done );
9683 } catch ( e ) {
9684
9685 // Rethrow post-completion exceptions
9686 if ( completed ) {
9687 throw e;
9688 }
9689
9690 // Propagate others as results
9691 done( -1, e );
9692 }
9693 }
9694
9695 // Callback for when everything is done
9696 function done( status, nativeStatusText, responses, headers ) {
9697 var isSuccess, success, error, response, modified,
9698 statusText = nativeStatusText;
9699
9700 // Ignore repeat invocations
9701 if ( completed ) {
9702 return;
9703 }
9704
9705 completed = true;
9706
9707 // Clear timeout if it exists
9708 if ( timeoutTimer ) {
9709 window.clearTimeout( timeoutTimer );
9710 }
9711
9712 // Dereference transport for early garbage collection
9713 // (no matter how long the jqXHR object will be used)
9714 transport = undefined;
9715
9716 // Cache response headers
9717 responseHeadersString = headers || "";
9718
9719 // Set readyState
9720 jqXHR.readyState = status > 0 ? 4 : 0;
9721
9722 // Determine if successful
9723 isSuccess = status >= 200 && status < 300 || status === 304;
9724
9725 // Get response data
9726 if ( responses ) {
9727 response = ajaxHandleResponses( s, jqXHR, responses );
9728 }
9729
9730 // Use a noop converter for missing script
9731 if ( !isSuccess && jQuery.inArray( "script", s.dataTypes ) > -1 ) {
9732 s.converters[ "text script" ] = function() {};
9733 }
9734
9735 // Convert no matter what (that way responseXXX fields are always set)
9736 response = ajaxConvert( s, response, jqXHR, isSuccess );
9737
9738 // If successful, handle type chaining
9739 if ( isSuccess ) {
9740
9741 // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
9742 if ( s.ifModified ) {
9743 modified = jqXHR.getResponseHeader( "Last-Modified" );
9744 if ( modified ) {
9745 jQuery.lastModified[ cacheURL ] = modified;
9746 }
9747 modified = jqXHR.getResponseHeader( "etag" );
9748 if ( modified ) {
9749 jQuery.etag[ cacheURL ] = modified;
9750 }
9751 }
9752
9753 // if no content
9754 if ( status === 204 || s.type === "HEAD" ) {
9755 statusText = "nocontent";
9756
9757 // if not modified
9758 } else if ( status === 304 ) {
9759 statusText = "notmodified";
9760
9761 // If we have data, let's convert it
9762 } else {
9763 statusText = response.state;
9764 success = response.data;
9765 error = response.error;
9766 isSuccess = !error;
9767 }
9768 } else {
9769
9770 // Extract error from statusText and normalize for non-aborts
9771 error = statusText;
9772 if ( status || !statusText ) {
9773 statusText = "error";
9774 if ( status < 0 ) {
9775 status = 0;
9776 }
9777 }
9778 }
9779
9780 // Set data for the fake xhr object
9781 jqXHR.status = status;
9782 jqXHR.statusText = ( nativeStatusText || statusText ) + "";
9783
9784 // Success/Error
9785 if ( isSuccess ) {
9786 deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
9787 } else {
9788 deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
9789 }
9790
9791 // Status-dependent callbacks
9792 jqXHR.statusCode( statusCode );
9793 statusCode = undefined;
9794
9795 if ( fireGlobals ) {
9796 globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
9797 [ jqXHR, s, isSuccess ? success : error ] );
9798 }
9799
9800 // Complete
9801 completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
9802
9803 if ( fireGlobals ) {
9804 globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
9805
9806 // Handle the global AJAX counter
9807 if ( !( --jQuery.active ) ) {
9808 jQuery.event.trigger( "ajaxStop" );
9809 }
9810 }
9811 }
9812
9813 return jqXHR;
9814 },
9815
9816 getJSON: function( url, data, callback ) {
9817 return jQuery.get( url, data, callback, "json" );
9818 },
9819
9820 getScript: function( url, callback ) {
9821 return jQuery.get( url, undefined, callback, "script" );
9822 }
9823} );
9824
9825jQuery.each( [ "get", "post" ], function( _i, method ) {
9826 jQuery[ method ] = function( url, data, callback, type ) {
9827
9828 // Shift arguments if data argument was omitted
9829 if ( isFunction( data ) ) {
9830 type = type || callback;
9831 callback = data;
9832 data = undefined;
9833 }
9834
9835 // The url can be an options object (which then must have .url)
9836 return jQuery.ajax( jQuery.extend( {
9837 url: url,
9838 type: method,
9839 dataType: type,
9840 data: data,
9841 success: callback
9842 }, jQuery.isPlainObject( url ) && url ) );
9843 };
9844} );
9845
9846jQuery.ajaxPrefilter( function( s ) {
9847 var i;
9848 for ( i in s.headers ) {
9849 if ( i.toLowerCase() === "content-type" ) {
9850 s.contentType = s.headers[ i ] || "";
9851 }
9852 }
9853} );
9854
9855
9856jQuery._evalUrl = function( url, options, doc ) {
9857 return jQuery.ajax( {
9858 url: url,
9859
9860 // Make this explicit, since user can override this through ajaxSetup (#11264)
9861 type: "GET",
9862 dataType: "script",
9863 cache: true,
9864 async: false,
9865 global: false,
9866
9867 // Only evaluate the response if it is successful (gh-4126)
9868 // dataFilter is not invoked for failure responses, so using it instead
9869 // of the default converter is kludgy but it works.
9870 converters: {
9871 "text script": function() {}
9872 },
9873 dataFilter: function( response ) {
9874 jQuery.globalEval( response, options, doc );
9875 }
9876 } );
9877};
9878
9879
9880jQuery.fn.extend( {
9881 wrapAll: function( html ) {
9882 var wrap;
9883
9884 if ( this[ 0 ] ) {
9885 if ( isFunction( html ) ) {
9886 html = html.call( this[ 0 ] );
9887 }
9888
9889 // The elements to wrap the target around
9890 wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
9891
9892 if ( this[ 0 ].parentNode ) {
9893 wrap.insertBefore( this[ 0 ] );
9894 }
9895
9896 wrap.map( function() {
9897 var elem = this;
9898
9899 while ( elem.firstElementChild ) {
9900 elem = elem.firstElementChild;
9901 }
9902
9903 return elem;
9904 } ).append( this );
9905 }
9906
9907 return this;
9908 },
9909
9910 wrapInner: function( html ) {
9911 if ( isFunction( html ) ) {
9912 return this.each( function( i ) {
9913 jQuery( this ).wrapInner( html.call( this, i ) );
9914 } );
9915 }
9916
9917 return this.each( function() {
9918 var self = jQuery( this ),
9919 contents = self.contents();
9920
9921 if ( contents.length ) {
9922 contents.wrapAll( html );
9923
9924 } else {
9925 self.append( html );
9926 }
9927 } );
9928 },
9929
9930 wrap: function( html ) {
9931 var htmlIsFunction = isFunction( html );
9932
9933 return this.each( function( i ) {
9934 jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );
9935 } );
9936 },
9937
9938 unwrap: function( selector ) {
9939 this.parent( selector ).not( "body" ).each( function() {
9940 jQuery( this ).replaceWith( this.childNodes );
9941 } );
9942 return this;
9943 }
9944} );
9945
9946
9947jQuery.expr.pseudos.hidden = function( elem ) {
9948 return !jQuery.expr.pseudos.visible( elem );
9949};
9950jQuery.expr.pseudos.visible = function( elem ) {
9951 return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
9952};
9953
9954
9955
9956
9957jQuery.ajaxSettings.xhr = function() {
9958 try {
9959 return new window.XMLHttpRequest();
9960 } catch ( e ) {}
9961};
9962
9963var xhrSuccessStatus = {
9964
9965 // File protocol always yields status code 0, assume 200
9966 0: 200,
9967
9968 // Support: IE <=9 only
9969 // #1450: sometimes IE returns 1223 when it should be 204
9970 1223: 204
9971 },
9972 xhrSupported = jQuery.ajaxSettings.xhr();
9973
9974support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
9975support.ajax = xhrSupported = !!xhrSupported;
9976
9977jQuery.ajaxTransport( function( options ) {
9978 var callback, errorCallback;
9979
9980 // Cross domain only allowed if supported through XMLHttpRequest
9981 if ( support.cors || xhrSupported && !options.crossDomain ) {
9982 return {
9983 send: function( headers, complete ) {
9984 var i,
9985 xhr = options.xhr();
9986
9987 xhr.open(
9988 options.type,
9989 options.url,
9990 options.async,
9991 options.username,
9992 options.password
9993 );
9994
9995 // Apply custom fields if provided
9996 if ( options.xhrFields ) {
9997 for ( i in options.xhrFields ) {
9998 xhr[ i ] = options.xhrFields[ i ];
9999 }
10000 }
10001
10002 // Override mime type if needed
10003 if ( options.mimeType && xhr.overrideMimeType ) {
10004 xhr.overrideMimeType( options.mimeType );
10005 }
10006
10007 // X-Requested-With header
10008 // For cross-domain requests, seeing as conditions for a preflight are
10009 // akin to a jigsaw puzzle, we simply never set it to be sure.
10010 // (it can always be set on a per-request basis or even using ajaxSetup)
10011 // For same-domain requests, won't change header if already provided.
10012 if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) {
10013 headers[ "X-Requested-With" ] = "XMLHttpRequest";
10014 }
10015
10016 // Set headers
10017 for ( i in headers ) {
10018 xhr.setRequestHeader( i, headers[ i ] );
10019 }
10020
10021 // Callback
10022 callback = function( type ) {
10023 return function() {
10024 if ( callback ) {
10025 callback = errorCallback = xhr.onload =
10026 xhr.onerror = xhr.onabort = xhr.ontimeout =
10027 xhr.onreadystatechange = null;
10028
10029 if ( type === "abort" ) {
10030 xhr.abort();
10031 } else if ( type === "error" ) {
10032
10033 // Support: IE <=9 only
10034 // On a manual native abort, IE9 throws
10035 // errors on any property access that is not readyState
10036 if ( typeof xhr.status !== "number" ) {
10037 complete( 0, "error" );
10038 } else {
10039 complete(
10040
10041 // File: protocol always yields status 0; see #8605, #14207
10042 xhr.status,
10043 xhr.statusText
10044 );
10045 }
10046 } else {
10047 complete(
10048 xhrSuccessStatus[ xhr.status ] || xhr.status,
10049 xhr.statusText,
10050
10051 // Support: IE <=9 only
10052 // IE9 has no XHR2 but throws on binary (trac-11426)
10053 // For XHR2 non-text, let the caller handle it (gh-2498)
10054 ( xhr.responseType || "text" ) !== "text" ||
10055 typeof xhr.responseText !== "string" ?
10056 { binary: xhr.response } :
10057 { text: xhr.responseText },
10058 xhr.getAllResponseHeaders()
10059 );
10060 }
10061 }
10062 };
10063 };
10064
10065 // Listen to events
10066 xhr.onload = callback();
10067 errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" );
10068
10069 // Support: IE 9 only
10070 // Use onreadystatechange to replace onabort
10071 // to handle uncaught aborts
10072 if ( xhr.onabort !== undefined ) {
10073 xhr.onabort = errorCallback;
10074 } else {
10075 xhr.onreadystatechange = function() {
10076
10077 // Check readyState before timeout as it changes
10078 if ( xhr.readyState === 4 ) {
10079
10080 // Allow onerror to be called first,
10081 // but that will not handle a native abort
10082 // Also, save errorCallback to a variable
10083 // as xhr.onerror cannot be accessed
10084 window.setTimeout( function() {
10085 if ( callback ) {
10086 errorCallback();
10087 }
10088 } );
10089 }
10090 };
10091 }
10092
10093 // Create the abort callback
10094 callback = callback( "abort" );
10095
10096 try {
10097
10098 // Do send the request (this may raise an exception)
10099 xhr.send( options.hasContent && options.data || null );
10100 } catch ( e ) {
10101
10102 // #14683: Only rethrow if this hasn't been notified as an error yet
10103 if ( callback ) {
10104 throw e;
10105 }
10106 }
10107 },
10108
10109 abort: function() {
10110 if ( callback ) {
10111 callback();
10112 }
10113 }
10114 };
10115 }
10116} );
10117
10118
10119
10120
10121// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)
10122jQuery.ajaxPrefilter( function( s ) {
10123 if ( s.crossDomain ) {
10124 s.contents.script = false;
10125 }
10126} );
10127
10128// Install script dataType
10129jQuery.ajaxSetup( {
10130 accepts: {
10131 script: "text/javascript, application/javascript, " +
10132 "application/ecmascript, application/x-ecmascript"
10133 },
10134 contents: {
10135 script: /\b(?:java|ecma)script\b/
10136 },
10137 converters: {
10138 "text script": function( text ) {
10139 jQuery.globalEval( text );
10140 return text;
10141 }
10142 }
10143} );
10144
10145// Handle cache's special case and crossDomain
10146jQuery.ajaxPrefilter( "script", function( s ) {
10147 if ( s.cache === undefined ) {
10148 s.cache = false;
10149 }
10150 if ( s.crossDomain ) {
10151 s.type = "GET";
10152 }
10153} );
10154
10155// Bind script tag hack transport
10156jQuery.ajaxTransport( "script", function( s ) {
10157
10158 // This transport only deals with cross domain or forced-by-attrs requests
10159 if ( s.crossDomain || s.scriptAttrs ) {
10160 var script, callback;
10161 return {
10162 send: function( _, complete ) {
10163 script = jQuery( "<script>" )
10164 .attr( s.scriptAttrs || {} )
10165 .prop( { charset: s.scriptCharset, src: s.url } )
10166 .on( "load error", callback = function( evt ) {
10167 script.remove();
10168 callback = null;
10169 if ( evt ) {
10170 complete( evt.type === "error" ? 404 : 200, evt.type );
10171 }
10172 } );
10173
10174 // Use native DOM manipulation to avoid our domManip AJAX trickery
10175 document.head.appendChild( script[ 0 ] );
10176 },
10177 abort: function() {
10178 if ( callback ) {
10179 callback();
10180 }
10181 }
10182 };
10183 }
10184} );
10185
10186
10187
10188
10189var oldCallbacks = [],
10190 rjsonp = /(=)\?(?=&|$)|\?\?/;
10191
10192// Default jsonp settings
10193jQuery.ajaxSetup( {
10194 jsonp: "callback",
10195 jsonpCallback: function() {
10196 var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce.guid++ ) );
10197 this[ callback ] = true;
10198 return callback;
10199 }
10200} );
10201
10202// Detect, normalize options and install callbacks for jsonp requests
10203jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
10204
10205 var callbackName, overwritten, responseContainer,
10206 jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
10207 "url" :
10208 typeof s.data === "string" &&
10209 ( s.contentType || "" )
10210 .indexOf( "application/x-www-form-urlencoded" ) === 0 &&
10211 rjsonp.test( s.data ) && "data"
10212 );
10213
10214 // Handle iff the expected data type is "jsonp" or we have a parameter to set
10215 if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
10216
10217 // Get callback name, remembering preexisting value associated with it
10218 callbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?
10219 s.jsonpCallback() :
10220 s.jsonpCallback;
10221
10222 // Insert callback into url or form data
10223 if ( jsonProp ) {
10224 s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
10225 } else if ( s.jsonp !== false ) {
10226 s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
10227 }
10228
10229 // Use data converter to retrieve json after script execution
10230 s.converters[ "script json" ] = function() {
10231 if ( !responseContainer ) {
10232 jQuery.error( callbackName + " was not called" );
10233 }
10234 return responseContainer[ 0 ];
10235 };
10236
10237 // Force json dataType
10238 s.dataTypes[ 0 ] = "json";
10239
10240 // Install callback
10241 overwritten = window[ callbackName ];
10242 window[ callbackName ] = function() {
10243 responseContainer = arguments;
10244 };
10245
10246 // Clean-up function (fires after converters)
10247 jqXHR.always( function() {
10248
10249 // If previous value didn't exist - remove it
10250 if ( overwritten === undefined ) {
10251 jQuery( window ).removeProp( callbackName );
10252
10253 // Otherwise restore preexisting value
10254 } else {
10255 window[ callbackName ] = overwritten;
10256 }
10257
10258 // Save back as free
10259 if ( s[ callbackName ] ) {
10260
10261 // Make sure that re-using the options doesn't screw things around
10262 s.jsonpCallback = originalSettings.jsonpCallback;
10263
10264 // Save the callback name for future use
10265 oldCallbacks.push( callbackName );
10266 }
10267
10268 // Call if it was a function and we have a response
10269 if ( responseContainer && isFunction( overwritten ) ) {
10270 overwritten( responseContainer[ 0 ] );
10271 }
10272
10273 responseContainer = overwritten = undefined;
10274 } );
10275
10276 // Delegate to script
10277 return "script";
10278 }
10279} );
10280
10281
10282
10283
10284// Support: Safari 8 only
10285// In Safari 8 documents created via document.implementation.createHTMLDocument
10286// collapse sibling forms: the second one becomes a child of the first one.
10287// Because of that, this security measure has to be disabled in Safari 8.
10288// https://bugs.webkit.org/show_bug.cgi?id=137337
10289support.createHTMLDocument = ( function() {
10290 var body = document.implementation.createHTMLDocument( "" ).body;
10291 body.innerHTML = "<form></form><form></form>";
10292 return body.childNodes.length === 2;
10293} )();
10294
10295
10296// Argument "data" should be string of html
10297// context (optional): If specified, the fragment will be created in this context,
10298// defaults to document
10299// keepScripts (optional): If true, will include scripts passed in the html string
10300jQuery.parseHTML = function( data, context, keepScripts ) {
10301 if ( typeof data !== "string" ) {
10302 return [];
10303 }
10304 if ( typeof context === "boolean" ) {
10305 keepScripts = context;
10306 context = false;
10307 }
10308
10309 var base, parsed, scripts;
10310
10311 if ( !context ) {
10312
10313 // Stop scripts or inline event handlers from being executed immediately
10314 // by using document.implementation
10315 if ( support.createHTMLDocument ) {
10316 context = document.implementation.createHTMLDocument( "" );
10317
10318 // Set the base href for the created document
10319 // so any parsed elements with URLs
10320 // are based on the document's URL (gh-2965)
10321 base = context.createElement( "base" );
10322 base.href = document.location.href;
10323 context.head.appendChild( base );
10324 } else {
10325 context = document;
10326 }
10327 }
10328
10329 parsed = rsingleTag.exec( data );
10330 scripts = !keepScripts && [];
10331
10332 // Single tag
10333 if ( parsed ) {
10334 return [ context.createElement( parsed[ 1 ] ) ];
10335 }
10336
10337 parsed = buildFragment( [ data ], context, scripts );
10338
10339 if ( scripts && scripts.length ) {
10340 jQuery( scripts ).remove();
10341 }
10342
10343 return jQuery.merge( [], parsed.childNodes );
10344};
10345
10346
10347/**
10348 * Load a url into a page
10349 */
10350jQuery.fn.load = function( url, params, callback ) {
10351 var selector, type, response,
10352 self = this,
10353 off = url.indexOf( " " );
10354
10355 if ( off > -1 ) {
10356 selector = stripAndCollapse( url.slice( off ) );
10357 url = url.slice( 0, off );
10358 }
10359
10360 // If it's a function
10361 if ( isFunction( params ) ) {
10362
10363 // We assume that it's the callback
10364 callback = params;
10365 params = undefined;
10366
10367 // Otherwise, build a param string
10368 } else if ( params && typeof params === "object" ) {
10369 type = "POST";
10370 }
10371
10372 // If we have elements to modify, make the request
10373 if ( self.length > 0 ) {
10374 jQuery.ajax( {
10375 url: url,
10376
10377 // If "type" variable is undefined, then "GET" method will be used.
10378 // Make value of this field explicit since
10379 // user can override it through ajaxSetup method
10380 type: type || "GET",
10381 dataType: "html",
10382 data: params
10383 } ).done( function( responseText ) {
10384
10385 // Save response for use in complete callback
10386 response = arguments;
10387
10388 self.html( selector ?
10389
10390 // If a selector was specified, locate the right elements in a dummy div
10391 // Exclude scripts to avoid IE 'Permission Denied' errors
10392 jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :
10393
10394 // Otherwise use the full result
10395 responseText );
10396
10397 // If the request succeeds, this function gets "data", "status", "jqXHR"
10398 // but they are ignored because response was set above.
10399 // If it fails, this function gets "jqXHR", "status", "error"
10400 } ).always( callback && function( jqXHR, status ) {
10401 self.each( function() {
10402 callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );
10403 } );
10404 } );
10405 }
10406
10407 return this;
10408};
10409
10410
10411
10412
10413jQuery.expr.pseudos.animated = function( elem ) {
10414 return jQuery.grep( jQuery.timers, function( fn ) {
10415 return elem === fn.elem;
10416 } ).length;
10417};
10418
10419
10420
10421
10422jQuery.offset = {
10423 setOffset: function( elem, options, i ) {
10424 var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
10425 position = jQuery.css( elem, "position" ),
10426 curElem = jQuery( elem ),
10427 props = {};
10428
10429 // Set position first, in-case top/left are set even on static elem
10430 if ( position === "static" ) {
10431 elem.style.position = "relative";
10432 }
10433
10434 curOffset = curElem.offset();
10435 curCSSTop = jQuery.css( elem, "top" );
10436 curCSSLeft = jQuery.css( elem, "left" );
10437 calculatePosition = ( position === "absolute" || position === "fixed" ) &&
10438 ( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;
10439
10440 // Need to be able to calculate position if either
10441 // top or left is auto and position is either absolute or fixed
10442 if ( calculatePosition ) {
10443 curPosition = curElem.position();
10444 curTop = curPosition.top;
10445 curLeft = curPosition.left;
10446
10447 } else {
10448 curTop = parseFloat( curCSSTop ) || 0;
10449 curLeft = parseFloat( curCSSLeft ) || 0;
10450 }
10451
10452 if ( isFunction( options ) ) {
10453
10454 // Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
10455 options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
10456 }
10457
10458 if ( options.top != null ) {
10459 props.top = ( options.top - curOffset.top ) + curTop;
10460 }
10461 if ( options.left != null ) {
10462 props.left = ( options.left - curOffset.left ) + curLeft;
10463 }
10464
10465 if ( "using" in options ) {
10466 options.using.call( elem, props );
10467
10468 } else {
10469 if ( typeof props.top === "number" ) {
10470 props.top += "px";
10471 }
10472 if ( typeof props.left === "number" ) {
10473 props.left += "px";
10474 }
10475 curElem.css( props );
10476 }
10477 }
10478};
10479
10480jQuery.fn.extend( {
10481
10482 // offset() relates an element's border box to the document origin
10483 offset: function( options ) {
10484
10485 // Preserve chaining for setter
10486 if ( arguments.length ) {
10487 return options === undefined ?
10488 this :
10489 this.each( function( i ) {
10490 jQuery.offset.setOffset( this, options, i );
10491 } );
10492 }
10493
10494 var rect, win,
10495 elem = this[ 0 ];
10496
10497 if ( !elem ) {
10498 return;
10499 }
10500
10501 // Return zeros for disconnected and hidden (display: none) elements (gh-2310)
10502 // Support: IE <=11 only
10503 // Running getBoundingClientRect on a
10504 // disconnected node in IE throws an error
10505 if ( !elem.getClientRects().length ) {
10506 return { top: 0, left: 0 };
10507 }
10508
10509 // Get document-relative position by adding viewport scroll to viewport-relative gBCR
10510 rect = elem.getBoundingClientRect();
10511 win = elem.ownerDocument.defaultView;
10512 return {
10513 top: rect.top + win.pageYOffset,
10514 left: rect.left + win.pageXOffset
10515 };
10516 },
10517
10518 // position() relates an element's margin box to its offset parent's padding box
10519 // This corresponds to the behavior of CSS absolute positioning
10520 position: function() {
10521 if ( !this[ 0 ] ) {
10522 return;
10523 }
10524
10525 var offsetParent, offset, doc,
10526 elem = this[ 0 ],
10527 parentOffset = { top: 0, left: 0 };
10528
10529 // position:fixed elements are offset from the viewport, which itself always has zero offset
10530 if ( jQuery.css( elem, "position" ) === "fixed" ) {
10531
10532 // Assume position:fixed implies availability of getBoundingClientRect
10533 offset = elem.getBoundingClientRect();
10534
10535 } else {
10536 offset = this.offset();
10537
10538 // Account for the *real* offset parent, which can be the document or its root element
10539 // when a statically positioned element is identified
10540 doc = elem.ownerDocument;
10541 offsetParent = elem.offsetParent || doc.documentElement;
10542 while ( offsetParent &&
10543 ( offsetParent === doc.body || offsetParent === doc.documentElement ) &&
10544 jQuery.css( offsetParent, "position" ) === "static" ) {
10545
10546 offsetParent = offsetParent.parentNode;
10547 }
10548 if ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {
10549
10550 // Incorporate borders into its offset, since they are outside its content origin
10551 parentOffset = jQuery( offsetParent ).offset();
10552 parentOffset.top += jQuery.css( offsetParent, "borderTopWidth", true );
10553 parentOffset.left += jQuery.css( offsetParent, "borderLeftWidth", true );
10554 }
10555 }
10556
10557 // Subtract parent offsets and element margins
10558 return {
10559 top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
10560 left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
10561 };
10562 },
10563
10564 // This method will return documentElement in the following cases:
10565 // 1) For the element inside the iframe without offsetParent, this method will return
10566 // documentElement of the parent window
10567 // 2) For the hidden or detached element
10568 // 3) For body or html element, i.e. in case of the html node - it will return itself
10569 //
10570 // but those exceptions were never presented as a real life use-cases
10571 // and might be considered as more preferable results.
10572 //
10573 // This logic, however, is not guaranteed and can change at any point in the future
10574 offsetParent: function() {
10575 return this.map( function() {
10576 var offsetParent = this.offsetParent;
10577
10578 while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {
10579 offsetParent = offsetParent.offsetParent;
10580 }
10581
10582 return offsetParent || documentElement;
10583 } );
10584 }
10585} );
10586
10587// Create scrollLeft and scrollTop methods
10588jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
10589 var top = "pageYOffset" === prop;
10590
10591 jQuery.fn[ method ] = function( val ) {
10592 return access( this, function( elem, method, val ) {
10593
10594 // Coalesce documents and windows
10595 var win;
10596 if ( isWindow( elem ) ) {
10597 win = elem;
10598 } else if ( elem.nodeType === 9 ) {
10599 win = elem.defaultView;
10600 }
10601
10602 if ( val === undefined ) {
10603 return win ? win[ prop ] : elem[ method ];
10604 }
10605
10606 if ( win ) {
10607 win.scrollTo(
10608 !top ? val : win.pageXOffset,
10609 top ? val : win.pageYOffset
10610 );
10611
10612 } else {
10613 elem[ method ] = val;
10614 }
10615 }, method, val, arguments.length );
10616 };
10617} );
10618
10619// Support: Safari <=7 - 9.1, Chrome <=37 - 49
10620// Add the top/left cssHooks using jQuery.fn.position
10621// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
10622// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
10623// getComputedStyle returns percent when specified for top/left/bottom/right;
10624// rather than make the css module depend on the offset module, just check for it here
10625jQuery.each( [ "top", "left" ], function( _i, prop ) {
10626 jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
10627 function( elem, computed ) {
10628 if ( computed ) {
10629 computed = curCSS( elem, prop );
10630
10631 // If curCSS returns percentage, fallback to offset
10632 return rnumnonpx.test( computed ) ?
10633 jQuery( elem ).position()[ prop ] + "px" :
10634 computed;
10635 }
10636 }
10637 );
10638} );
10639
10640
10641// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
10642jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
10643 jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name },
10644 function( defaultExtra, funcName ) {
10645
10646 // Margin is only for outerHeight, outerWidth
10647 jQuery.fn[ funcName ] = function( margin, value ) {
10648 var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
10649 extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
10650
10651 return access( this, function( elem, type, value ) {
10652 var doc;
10653
10654 if ( isWindow( elem ) ) {
10655
10656 // $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
10657 return funcName.indexOf( "outer" ) === 0 ?
10658 elem[ "inner" + name ] :
10659 elem.document.documentElement[ "client" + name ];
10660 }
10661
10662 // Get document width or height
10663 if ( elem.nodeType === 9 ) {
10664 doc = elem.documentElement;
10665
10666 // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
10667 // whichever is greatest
10668 return Math.max(
10669 elem.body[ "scroll" + name ], doc[ "scroll" + name ],
10670 elem.body[ "offset" + name ], doc[ "offset" + name ],
10671 doc[ "client" + name ]
10672 );
10673 }
10674
10675 return value === undefined ?
10676
10677 // Get width or height on the element, requesting but not forcing parseFloat
10678 jQuery.css( elem, type, extra ) :
10679
10680 // Set width or height on the element
10681 jQuery.style( elem, type, value, extra );
10682 }, type, chainable ? margin : undefined, chainable );
10683 };
10684 } );
10685} );
10686
10687
10688jQuery.each( [
10689 "ajaxStart",
10690 "ajaxStop",
10691 "ajaxComplete",
10692 "ajaxError",
10693 "ajaxSuccess",
10694 "ajaxSend"
10695], function( _i, type ) {
10696 jQuery.fn[ type ] = function( fn ) {
10697 return this.on( type, fn );
10698 };
10699} );
10700
10701
10702
10703
10704jQuery.fn.extend( {
10705
10706 bind: function( types, data, fn ) {
10707 return this.on( types, null, data, fn );
10708 },
10709 unbind: function( types, fn ) {
10710 return this.off( types, null, fn );
10711 },
10712
10713 delegate: function( selector, types, data, fn ) {
10714 return this.on( types, selector, data, fn );
10715 },
10716 undelegate: function( selector, types, fn ) {
10717
10718 // ( namespace ) or ( selector, types [, fn] )
10719 return arguments.length === 1 ?
10720 this.off( selector, "**" ) :
10721 this.off( types, selector || "**", fn );
10722 },
10723
10724 hover: function( fnOver, fnOut ) {
10725 return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
10726 }
10727} );
10728
10729jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
10730 "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
10731 "change select submit keydown keypress keyup contextmenu" ).split( " " ),
10732 function( _i, name ) {
10733
10734 // Handle event binding
10735 jQuery.fn[ name ] = function( data, fn ) {
10736 return arguments.length > 0 ?
10737 this.on( name, null, data, fn ) :
10738 this.trigger( name );
10739 };
10740 } );
10741
10742
10743
10744
10745// Support: Android <=4.0 only
10746// Make sure we trim BOM and NBSP
10747var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
10748
10749// Bind a function to a context, optionally partially applying any
10750// arguments.
10751// jQuery.proxy is deprecated to promote standards (specifically Function#bind)
10752// However, it is not slated for removal any time soon
10753jQuery.proxy = function( fn, context ) {
10754 var tmp, args, proxy;
10755
10756 if ( typeof context === "string" ) {
10757 tmp = fn[ context ];
10758 context = fn;
10759 fn = tmp;
10760 }
10761
10762 // Quick check to determine if target is callable, in the spec
10763 // this throws a TypeError, but we will just return undefined.
10764 if ( !isFunction( fn ) ) {
10765 return undefined;
10766 }
10767
10768 // Simulated bind
10769 args = slice.call( arguments, 2 );
10770 proxy = function() {
10771 return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
10772 };
10773
10774 // Set the guid of unique handler to the same of original handler, so it can be removed
10775 proxy.guid = fn.guid = fn.guid || jQuery.guid++;
10776
10777 return proxy;
10778};
10779
10780jQuery.holdReady = function( hold ) {
10781 if ( hold ) {
10782 jQuery.readyWait++;
10783 } else {
10784 jQuery.ready( true );
10785 }
10786};
10787jQuery.isArray = Array.isArray;
10788jQuery.parseJSON = JSON.parse;
10789jQuery.nodeName = nodeName;
10790jQuery.isFunction = isFunction;
10791jQuery.isWindow = isWindow;
10792jQuery.camelCase = camelCase;
10793jQuery.type = toType;
10794
10795jQuery.now = Date.now;
10796
10797jQuery.isNumeric = function( obj ) {
10798
10799 // As of jQuery 3.0, isNumeric is limited to
10800 // strings and numbers (primitives or objects)
10801 // that can be coerced to finite numbers (gh-2662)
10802 var type = jQuery.type( obj );
10803 return ( type === "number" || type === "string" ) &&
10804
10805 // parseFloat NaNs numeric-cast false positives ("")
10806 // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
10807 // subtraction forces infinities to NaN
10808 !isNaN( obj - parseFloat( obj ) );
10809};
10810
10811jQuery.trim = function( text ) {
10812 return text == null ?
10813 "" :
10814 ( text + "" ).replace( rtrim, "" );
10815};
10816
10817
10818
10819// Register as a named AMD module, since jQuery can be concatenated with other
10820// files that may use define, but not via a proper concatenation script that
10821// understands anonymous AMD modules. A named AMD is safest and most robust
10822// way to register. Lowercase jquery is used because AMD module names are
10823// derived from file names, and jQuery is normally delivered in a lowercase
10824// file name. Do this after creating the global so that if an AMD module wants
10825// to call noConflict to hide this version of jQuery, it will work.
10826
10827// Note that for maximum portability, libraries that are not jQuery should
10828// declare themselves as anonymous modules, and avoid setting a global if an
10829// AMD loader is present. jQuery is a special case. For more information, see
10830// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
10831
10832if ( typeof define === "function" && define.amd ) {
10833 define( "jquery", [], function() {
10834 return jQuery;
10835 } );
10836}
10837
10838
10839
10840
10841var
10842
10843 // Map over jQuery in case of overwrite
10844 _jQuery = window.jQuery,
10845
10846 // Map over the $ in case of overwrite
10847 _$ = window.$;
10848
10849jQuery.noConflict = function( deep ) {
10850 if ( window.$ === jQuery ) {
10851 window.$ = _$;
10852 }
10853
10854 if ( deep && window.jQuery === jQuery ) {
10855 window.jQuery = _jQuery;
10856 }
10857
10858 return jQuery;
10859};
10860
10861// Expose jQuery and $ identifiers, even in AMD
10862// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
10863// and CommonJS for browser emulators (#13566)
10864if ( typeof noGlobal === "undefined" ) {
10865 window.jQuery = window.$ = jQuery;
10866}
10867
10868
10869
10870
10871return jQuery;
10872} );
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/App_Start/BundleConfig.cs b/src/test/wix/TestData/CsprojWebApplicationNetFx/App_Start/BundleConfig.cs
new file mode 100644
index 00000000..f62d0611
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/App_Start/BundleConfig.cs
@@ -0,0 +1,30 @@
1using System.Web;
2using System.Web.Optimization;
3
4namespace CsprojWebApplicationNetFx
5{
6 public class BundleConfig
7 {
8 // For more information on bundling, visit https://go.microsoft.com/fwlink/?LinkId=301862
9 public static void RegisterBundles(BundleCollection bundles)
10 {
11 bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
12 "~/Scripts/jquery-{version}.js"));
13
14 bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
15 "~/Scripts/jquery.validate*"));
16
17 // Use the development version of Modernizr to develop with and learn from. Then, when you're
18 // ready for production, use the build tool at https://modernizr.com to pick only the tests you need.
19 bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
20 "~/Scripts/modernizr-*"));
21
22 bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include(
23 "~/Scripts/bootstrap.js"));
24
25 bundles.Add(new StyleBundle("~/Content/css").Include(
26 "~/Content/bootstrap.css",
27 "~/Content/site.css"));
28 }
29 }
30}
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/App_Start/FilterConfig.cs b/src/test/wix/TestData/CsprojWebApplicationNetFx/App_Start/FilterConfig.cs
new file mode 100644
index 00000000..24362545
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/App_Start/FilterConfig.cs
@@ -0,0 +1,13 @@
1using System.Web;
2using System.Web.Mvc;
3
4namespace CsprojWebApplicationNetFx
5{
6 public class FilterConfig
7 {
8 public static void RegisterGlobalFilters(GlobalFilterCollection filters)
9 {
10 filters.Add(new HandleErrorAttribute());
11 }
12 }
13}
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/App_Start/RouteConfig.cs b/src/test/wix/TestData/CsprojWebApplicationNetFx/App_Start/RouteConfig.cs
new file mode 100644
index 00000000..6650eed6
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/App_Start/RouteConfig.cs
@@ -0,0 +1,23 @@
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Web;
5using System.Web.Mvc;
6using System.Web.Routing;
7
8namespace CsprojWebApplicationNetFx
9{
10 public class RouteConfig
11 {
12 public static void RegisterRoutes(RouteCollection routes)
13 {
14 routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
15
16 routes.MapRoute(
17 name: "Default",
18 url: "{controller}/{action}/{id}",
19 defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
20 );
21 }
22 }
23}
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/Content/Site.css b/src/test/wix/TestData/CsprojWebApplicationNetFx/Content/Site.css
new file mode 100644
index 00000000..6ea5d8f6
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/Content/Site.css
@@ -0,0 +1,24 @@
1body {
2 padding-top: 50px;
3 padding-bottom: 20px;
4}
5
6/* Set padding to keep content from hitting the edges */
7.body-content {
8 padding-left: 15px;
9 padding-right: 15px;
10}
11
12/* Override the default bootstrap behavior where horizontal description lists
13 will truncate terms that are too long to fit in the left column
14*/
15.dl-horizontal dt {
16 white-space: normal;
17}
18
19/* Set width on the form input elements since they're 100% wide by default */
20input,
21select,
22textarea {
23 max-width: 280px;
24}
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/Content/bootstrap-theme.css b/src/test/wix/TestData/CsprojWebApplicationNetFx/Content/bootstrap-theme.css
new file mode 100644
index 00000000..ea33f76a
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/Content/bootstrap-theme.css
@@ -0,0 +1,587 @@
1/*!
2 * Bootstrap v3.4.1 (https://getbootstrap.com/)
3 * Copyright 2011-2019 Twitter, Inc.
4 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 */
6.btn-default,
7.btn-primary,
8.btn-success,
9.btn-info,
10.btn-warning,
11.btn-danger {
12 text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
13 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);
14 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);
15}
16.btn-default:active,
17.btn-primary:active,
18.btn-success:active,
19.btn-info:active,
20.btn-warning:active,
21.btn-danger:active,
22.btn-default.active,
23.btn-primary.active,
24.btn-success.active,
25.btn-info.active,
26.btn-warning.active,
27.btn-danger.active {
28 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
29 box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
30}
31.btn-default.disabled,
32.btn-primary.disabled,
33.btn-success.disabled,
34.btn-info.disabled,
35.btn-warning.disabled,
36.btn-danger.disabled,
37.btn-default[disabled],
38.btn-primary[disabled],
39.btn-success[disabled],
40.btn-info[disabled],
41.btn-warning[disabled],
42.btn-danger[disabled],
43fieldset[disabled] .btn-default,
44fieldset[disabled] .btn-primary,
45fieldset[disabled] .btn-success,
46fieldset[disabled] .btn-info,
47fieldset[disabled] .btn-warning,
48fieldset[disabled] .btn-danger {
49 -webkit-box-shadow: none;
50 box-shadow: none;
51}
52.btn-default .badge,
53.btn-primary .badge,
54.btn-success .badge,
55.btn-info .badge,
56.btn-warning .badge,
57.btn-danger .badge {
58 text-shadow: none;
59}
60.btn:active,
61.btn.active {
62 background-image: none;
63}
64.btn-default {
65 background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);
66 background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);
67 background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0));
68 background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
69 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);
70 filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
71 background-repeat: repeat-x;
72 border-color: #dbdbdb;
73 text-shadow: 0 1px 0 #fff;
74 border-color: #ccc;
75}
76.btn-default:hover,
77.btn-default:focus {
78 background-color: #e0e0e0;
79 background-position: 0 -15px;
80}
81.btn-default:active,
82.btn-default.active {
83 background-color: #e0e0e0;
84 border-color: #dbdbdb;
85}
86.btn-default.disabled,
87.btn-default[disabled],
88fieldset[disabled] .btn-default,
89.btn-default.disabled:hover,
90.btn-default[disabled]:hover,
91fieldset[disabled] .btn-default:hover,
92.btn-default.disabled:focus,
93.btn-default[disabled]:focus,
94fieldset[disabled] .btn-default:focus,
95.btn-default.disabled.focus,
96.btn-default[disabled].focus,
97fieldset[disabled] .btn-default.focus,
98.btn-default.disabled:active,
99.btn-default[disabled]:active,
100fieldset[disabled] .btn-default:active,
101.btn-default.disabled.active,
102.btn-default[disabled].active,
103fieldset[disabled] .btn-default.active {
104 background-color: #e0e0e0;
105 background-image: none;
106}
107.btn-primary {
108 background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);
109 background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);
110 background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88));
111 background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);
112 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);
113 filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
114 background-repeat: repeat-x;
115 border-color: #245580;
116}
117.btn-primary:hover,
118.btn-primary:focus {
119 background-color: #265a88;
120 background-position: 0 -15px;
121}
122.btn-primary:active,
123.btn-primary.active {
124 background-color: #265a88;
125 border-color: #245580;
126}
127.btn-primary.disabled,
128.btn-primary[disabled],
129fieldset[disabled] .btn-primary,
130.btn-primary.disabled:hover,
131.btn-primary[disabled]:hover,
132fieldset[disabled] .btn-primary:hover,
133.btn-primary.disabled:focus,
134.btn-primary[disabled]:focus,
135fieldset[disabled] .btn-primary:focus,
136.btn-primary.disabled.focus,
137.btn-primary[disabled].focus,
138fieldset[disabled] .btn-primary.focus,
139.btn-primary.disabled:active,
140.btn-primary[disabled]:active,
141fieldset[disabled] .btn-primary:active,
142.btn-primary.disabled.active,
143.btn-primary[disabled].active,
144fieldset[disabled] .btn-primary.active {
145 background-color: #265a88;
146 background-image: none;
147}
148.btn-success {
149 background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
150 background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);
151 background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641));
152 background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
153 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
154 filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
155 background-repeat: repeat-x;
156 border-color: #3e8f3e;
157}
158.btn-success:hover,
159.btn-success:focus {
160 background-color: #419641;
161 background-position: 0 -15px;
162}
163.btn-success:active,
164.btn-success.active {
165 background-color: #419641;
166 border-color: #3e8f3e;
167}
168.btn-success.disabled,
169.btn-success[disabled],
170fieldset[disabled] .btn-success,
171.btn-success.disabled:hover,
172.btn-success[disabled]:hover,
173fieldset[disabled] .btn-success:hover,
174.btn-success.disabled:focus,
175.btn-success[disabled]:focus,
176fieldset[disabled] .btn-success:focus,
177.btn-success.disabled.focus,
178.btn-success[disabled].focus,
179fieldset[disabled] .btn-success.focus,
180.btn-success.disabled:active,
181.btn-success[disabled]:active,
182fieldset[disabled] .btn-success:active,
183.btn-success.disabled.active,
184.btn-success[disabled].active,
185fieldset[disabled] .btn-success.active {
186 background-color: #419641;
187 background-image: none;
188}
189.btn-info {
190 background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
191 background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
192 background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2));
193 background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
194 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
195 filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
196 background-repeat: repeat-x;
197 border-color: #28a4c9;
198}
199.btn-info:hover,
200.btn-info:focus {
201 background-color: #2aabd2;
202 background-position: 0 -15px;
203}
204.btn-info:active,
205.btn-info.active {
206 background-color: #2aabd2;
207 border-color: #28a4c9;
208}
209.btn-info.disabled,
210.btn-info[disabled],
211fieldset[disabled] .btn-info,
212.btn-info.disabled:hover,
213.btn-info[disabled]:hover,
214fieldset[disabled] .btn-info:hover,
215.btn-info.disabled:focus,
216.btn-info[disabled]:focus,
217fieldset[disabled] .btn-info:focus,
218.btn-info.disabled.focus,
219.btn-info[disabled].focus,
220fieldset[disabled] .btn-info.focus,
221.btn-info.disabled:active,
222.btn-info[disabled]:active,
223fieldset[disabled] .btn-info:active,
224.btn-info.disabled.active,
225.btn-info[disabled].active,
226fieldset[disabled] .btn-info.active {
227 background-color: #2aabd2;
228 background-image: none;
229}
230.btn-warning {
231 background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
232 background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
233 background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316));
234 background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
235 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
236 filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
237 background-repeat: repeat-x;
238 border-color: #e38d13;
239}
240.btn-warning:hover,
241.btn-warning:focus {
242 background-color: #eb9316;
243 background-position: 0 -15px;
244}
245.btn-warning:active,
246.btn-warning.active {
247 background-color: #eb9316;
248 border-color: #e38d13;
249}
250.btn-warning.disabled,
251.btn-warning[disabled],
252fieldset[disabled] .btn-warning,
253.btn-warning.disabled:hover,
254.btn-warning[disabled]:hover,
255fieldset[disabled] .btn-warning:hover,
256.btn-warning.disabled:focus,
257.btn-warning[disabled]:focus,
258fieldset[disabled] .btn-warning:focus,
259.btn-warning.disabled.focus,
260.btn-warning[disabled].focus,
261fieldset[disabled] .btn-warning.focus,
262.btn-warning.disabled:active,
263.btn-warning[disabled]:active,
264fieldset[disabled] .btn-warning:active,
265.btn-warning.disabled.active,
266.btn-warning[disabled].active,
267fieldset[disabled] .btn-warning.active {
268 background-color: #eb9316;
269 background-image: none;
270}
271.btn-danger {
272 background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
273 background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
274 background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a));
275 background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
276 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);
277 filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
278 background-repeat: repeat-x;
279 border-color: #b92c28;
280}
281.btn-danger:hover,
282.btn-danger:focus {
283 background-color: #c12e2a;
284 background-position: 0 -15px;
285}
286.btn-danger:active,
287.btn-danger.active {
288 background-color: #c12e2a;
289 border-color: #b92c28;
290}
291.btn-danger.disabled,
292.btn-danger[disabled],
293fieldset[disabled] .btn-danger,
294.btn-danger.disabled:hover,
295.btn-danger[disabled]:hover,
296fieldset[disabled] .btn-danger:hover,
297.btn-danger.disabled:focus,
298.btn-danger[disabled]:focus,
299fieldset[disabled] .btn-danger:focus,
300.btn-danger.disabled.focus,
301.btn-danger[disabled].focus,
302fieldset[disabled] .btn-danger.focus,
303.btn-danger.disabled:active,
304.btn-danger[disabled]:active,
305fieldset[disabled] .btn-danger:active,
306.btn-danger.disabled.active,
307.btn-danger[disabled].active,
308fieldset[disabled] .btn-danger.active {
309 background-color: #c12e2a;
310 background-image: none;
311}
312.thumbnail,
313.img-thumbnail {
314 -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
315 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
316}
317.dropdown-menu > li > a:hover,
318.dropdown-menu > li > a:focus {
319 background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
320 background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
321 background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
322 background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
323 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
324 background-repeat: repeat-x;
325 background-color: #e8e8e8;
326}
327.dropdown-menu > .active > a,
328.dropdown-menu > .active > a:hover,
329.dropdown-menu > .active > a:focus {
330 background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
331 background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
332 background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
333 background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
334 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
335 background-repeat: repeat-x;
336 background-color: #2e6da4;
337}
338.navbar-default {
339 background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);
340 background-image: -o-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);
341 background-image: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#f8f8f8));
342 background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);
343 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
344 background-repeat: repeat-x;
345 filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
346 border-radius: 4px;
347 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);
348 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);
349}
350.navbar-default .navbar-nav > .open > a,
351.navbar-default .navbar-nav > .active > a {
352 background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
353 background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
354 background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2));
355 background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);
356 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);
357 background-repeat: repeat-x;
358 -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);
359 box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);
360}
361.navbar-brand,
362.navbar-nav > li > a {
363 text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);
364}
365.navbar-inverse {
366 background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);
367 background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);
368 background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222));
369 background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);
370 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
371 background-repeat: repeat-x;
372 filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
373 border-radius: 4px;
374}
375.navbar-inverse .navbar-nav > .open > a,
376.navbar-inverse .navbar-nav > .active > a {
377 background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);
378 background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);
379 background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f));
380 background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);
381 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);
382 background-repeat: repeat-x;
383 -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);
384 box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);
385}
386.navbar-inverse .navbar-brand,
387.navbar-inverse .navbar-nav > li > a {
388 text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
389}
390.navbar-static-top,
391.navbar-fixed-top,
392.navbar-fixed-bottom {
393 border-radius: 0;
394}
395@media (max-width: 767px) {
396 .navbar .navbar-nav .open .dropdown-menu > .active > a,
397 .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,
398 .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {
399 color: #fff;
400 background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
401 background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
402 background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
403 background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
404 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
405 background-repeat: repeat-x;
406 }
407}
408.alert {
409 text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);
410 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);
411 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);
412}
413.alert-success {
414 background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
415 background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
416 background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc));
417 background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
418 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
419 background-repeat: repeat-x;
420 border-color: #b2dba1;
421}
422.alert-info {
423 background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
424 background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
425 background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0));
426 background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
427 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
428 background-repeat: repeat-x;
429 border-color: #9acfea;
430}
431.alert-warning {
432 background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
433 background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
434 background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0));
435 background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
436 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
437 background-repeat: repeat-x;
438 border-color: #f5e79e;
439}
440.alert-danger {
441 background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
442 background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
443 background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3));
444 background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
445 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
446 background-repeat: repeat-x;
447 border-color: #dca7a7;
448}
449.progress {
450 background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
451 background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
452 background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5));
453 background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
454 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
455 background-repeat: repeat-x;
456}
457.progress-bar {
458 background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);
459 background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);
460 background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090));
461 background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);
462 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);
463 background-repeat: repeat-x;
464}
465.progress-bar-success {
466 background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
467 background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);
468 background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44));
469 background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
470 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
471 background-repeat: repeat-x;
472}
473.progress-bar-info {
474 background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
475 background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
476 background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5));
477 background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
478 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
479 background-repeat: repeat-x;
480}
481.progress-bar-warning {
482 background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
483 background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
484 background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f));
485 background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
486 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
487 background-repeat: repeat-x;
488}
489.progress-bar-danger {
490 background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
491 background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);
492 background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c));
493 background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
494 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
495 background-repeat: repeat-x;
496}
497.progress-bar-striped {
498 background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
499 background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
500 background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
501}
502.list-group {
503 border-radius: 4px;
504 -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
505 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
506}
507.list-group-item.active,
508.list-group-item.active:hover,
509.list-group-item.active:focus {
510 text-shadow: 0 -1px 0 #286090;
511 background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);
512 background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);
513 background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a));
514 background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);
515 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);
516 background-repeat: repeat-x;
517 border-color: #2b669a;
518}
519.list-group-item.active .badge,
520.list-group-item.active:hover .badge,
521.list-group-item.active:focus .badge {
522 text-shadow: none;
523}
524.panel {
525 -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
526 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
527}
528.panel-default > .panel-heading {
529 background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
530 background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
531 background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
532 background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
533 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
534 background-repeat: repeat-x;
535}
536.panel-primary > .panel-heading {
537 background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
538 background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
539 background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
540 background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
541 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
542 background-repeat: repeat-x;
543}
544.panel-success > .panel-heading {
545 background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
546 background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
547 background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6));
548 background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
549 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
550 background-repeat: repeat-x;
551}
552.panel-info > .panel-heading {
553 background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
554 background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
555 background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3));
556 background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
557 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
558 background-repeat: repeat-x;
559}
560.panel-warning > .panel-heading {
561 background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
562 background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
563 background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc));
564 background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
565 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
566 background-repeat: repeat-x;
567}
568.panel-danger > .panel-heading {
569 background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
570 background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
571 background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc));
572 background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
573 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
574 background-repeat: repeat-x;
575}
576.well {
577 background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
578 background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
579 background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5));
580 background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
581 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
582 background-repeat: repeat-x;
583 border-color: #dcdcdc;
584 -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);
585 box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);
586}
587/*# sourceMappingURL=bootstrap-theme.css.map */ \ No newline at end of file
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/Content/bootstrap.css b/src/test/wix/TestData/CsprojWebApplicationNetFx/Content/bootstrap.css
new file mode 100644
index 00000000..fcab4155
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/Content/bootstrap.css
@@ -0,0 +1,6834 @@
1/*!
2 * Bootstrap v3.4.1 (https://getbootstrap.com/)
3 * Copyright 2011-2019 Twitter, Inc.
4 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 */
6/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
7html {
8 font-family: sans-serif;
9 -ms-text-size-adjust: 100%;
10 -webkit-text-size-adjust: 100%;
11}
12body {
13 margin: 0;
14}
15article,
16aside,
17details,
18figcaption,
19figure,
20footer,
21header,
22hgroup,
23main,
24menu,
25nav,
26section,
27summary {
28 display: block;
29}
30audio,
31canvas,
32progress,
33video {
34 display: inline-block;
35 vertical-align: baseline;
36}
37audio:not([controls]) {
38 display: none;
39 height: 0;
40}
41[hidden],
42template {
43 display: none;
44}
45a {
46 background-color: transparent;
47}
48a:active,
49a:hover {
50 outline: 0;
51}
52abbr[title] {
53 border-bottom: none;
54 text-decoration: underline;
55 -webkit-text-decoration: underline dotted;
56 -moz-text-decoration: underline dotted;
57 text-decoration: underline dotted;
58}
59b,
60strong {
61 font-weight: bold;
62}
63dfn {
64 font-style: italic;
65}
66h1 {
67 font-size: 2em;
68 margin: 0.67em 0;
69}
70mark {
71 background: #ff0;
72 color: #000;
73}
74small {
75 font-size: 80%;
76}
77sub,
78sup {
79 font-size: 75%;
80 line-height: 0;
81 position: relative;
82 vertical-align: baseline;
83}
84sup {
85 top: -0.5em;
86}
87sub {
88 bottom: -0.25em;
89}
90img {
91 border: 0;
92}
93svg:not(:root) {
94 overflow: hidden;
95}
96figure {
97 margin: 1em 40px;
98}
99hr {
100 -webkit-box-sizing: content-box;
101 -moz-box-sizing: content-box;
102 box-sizing: content-box;
103 height: 0;
104}
105pre {
106 overflow: auto;
107}
108code,
109kbd,
110pre,
111samp {
112 font-family: monospace, monospace;
113 font-size: 1em;
114}
115button,
116input,
117optgroup,
118select,
119textarea {
120 color: inherit;
121 font: inherit;
122 margin: 0;
123}
124button {
125 overflow: visible;
126}
127button,
128select {
129 text-transform: none;
130}
131button,
132html input[type="button"],
133input[type="reset"],
134input[type="submit"] {
135 -webkit-appearance: button;
136 cursor: pointer;
137}
138button[disabled],
139html input[disabled] {
140 cursor: default;
141}
142button::-moz-focus-inner,
143input::-moz-focus-inner {
144 border: 0;
145 padding: 0;
146}
147input {
148 line-height: normal;
149}
150input[type="checkbox"],
151input[type="radio"] {
152 -webkit-box-sizing: border-box;
153 -moz-box-sizing: border-box;
154 box-sizing: border-box;
155 padding: 0;
156}
157input[type="number"]::-webkit-inner-spin-button,
158input[type="number"]::-webkit-outer-spin-button {
159 height: auto;
160}
161input[type="search"] {
162 -webkit-appearance: textfield;
163 -webkit-box-sizing: content-box;
164 -moz-box-sizing: content-box;
165 box-sizing: content-box;
166}
167input[type="search"]::-webkit-search-cancel-button,
168input[type="search"]::-webkit-search-decoration {
169 -webkit-appearance: none;
170}
171fieldset {
172 border: 1px solid #c0c0c0;
173 margin: 0 2px;
174 padding: 0.35em 0.625em 0.75em;
175}
176legend {
177 border: 0;
178 padding: 0;
179}
180textarea {
181 overflow: auto;
182}
183optgroup {
184 font-weight: bold;
185}
186table {
187 border-collapse: collapse;
188 border-spacing: 0;
189}
190td,
191th {
192 padding: 0;
193}
194/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
195@media print {
196 *,
197 *:before,
198 *:after {
199 color: #000 !important;
200 text-shadow: none !important;
201 background: transparent !important;
202 -webkit-box-shadow: none !important;
203 box-shadow: none !important;
204 }
205 a,
206 a:visited {
207 text-decoration: underline;
208 }
209 a[href]:after {
210 content: " (" attr(href) ")";
211 }
212 abbr[title]:after {
213 content: " (" attr(title) ")";
214 }
215 a[href^="#"]:after,
216 a[href^="javascript:"]:after {
217 content: "";
218 }
219 pre,
220 blockquote {
221 border: 1px solid #999;
222 page-break-inside: avoid;
223 }
224 thead {
225 display: table-header-group;
226 }
227 tr,
228 img {
229 page-break-inside: avoid;
230 }
231 img {
232 max-width: 100% !important;
233 }
234 p,
235 h2,
236 h3 {
237 orphans: 3;
238 widows: 3;
239 }
240 h2,
241 h3 {
242 page-break-after: avoid;
243 }
244 .navbar {
245 display: none;
246 }
247 .btn > .caret,
248 .dropup > .btn > .caret {
249 border-top-color: #000 !important;
250 }
251 .label {
252 border: 1px solid #000;
253 }
254 .table {
255 border-collapse: collapse !important;
256 }
257 .table td,
258 .table th {
259 background-color: #fff !important;
260 }
261 .table-bordered th,
262 .table-bordered td {
263 border: 1px solid #ddd !important;
264 }
265}
266@font-face {
267 font-family: "Glyphicons Halflings";
268 src: url("../fonts/glyphicons-halflings-regular.eot");
269 src: url("../fonts/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"), url("../fonts/glyphicons-halflings-regular.woff2") format("woff2"), url("../fonts/glyphicons-halflings-regular.woff") format("woff"), url("../fonts/glyphicons-halflings-regular.ttf") format("truetype"), url("../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg");
270}
271.glyphicon {
272 position: relative;
273 top: 1px;
274 display: inline-block;
275 font-family: "Glyphicons Halflings";
276 font-style: normal;
277 font-weight: 400;
278 line-height: 1;
279 -webkit-font-smoothing: antialiased;
280 -moz-osx-font-smoothing: grayscale;
281}
282.glyphicon-asterisk:before {
283 content: "\002a";
284}
285.glyphicon-plus:before {
286 content: "\002b";
287}
288.glyphicon-euro:before,
289.glyphicon-eur:before {
290 content: "\20ac";
291}
292.glyphicon-minus:before {
293 content: "\2212";
294}
295.glyphicon-cloud:before {
296 content: "\2601";
297}
298.glyphicon-envelope:before {
299 content: "\2709";
300}
301.glyphicon-pencil:before {
302 content: "\270f";
303}
304.glyphicon-glass:before {
305 content: "\e001";
306}
307.glyphicon-music:before {
308 content: "\e002";
309}
310.glyphicon-search:before {
311 content: "\e003";
312}
313.glyphicon-heart:before {
314 content: "\e005";
315}
316.glyphicon-star:before {
317 content: "\e006";
318}
319.glyphicon-star-empty:before {
320 content: "\e007";
321}
322.glyphicon-user:before {
323 content: "\e008";
324}
325.glyphicon-film:before {
326 content: "\e009";
327}
328.glyphicon-th-large:before {
329 content: "\e010";
330}
331.glyphicon-th:before {
332 content: "\e011";
333}
334.glyphicon-th-list:before {
335 content: "\e012";
336}
337.glyphicon-ok:before {
338 content: "\e013";
339}
340.glyphicon-remove:before {
341 content: "\e014";
342}
343.glyphicon-zoom-in:before {
344 content: "\e015";
345}
346.glyphicon-zoom-out:before {
347 content: "\e016";
348}
349.glyphicon-off:before {
350 content: "\e017";
351}
352.glyphicon-signal:before {
353 content: "\e018";
354}
355.glyphicon-cog:before {
356 content: "\e019";
357}
358.glyphicon-trash:before {
359 content: "\e020";
360}
361.glyphicon-home:before {
362 content: "\e021";
363}
364.glyphicon-file:before {
365 content: "\e022";
366}
367.glyphicon-time:before {
368 content: "\e023";
369}
370.glyphicon-road:before {
371 content: "\e024";
372}
373.glyphicon-download-alt:before {
374 content: "\e025";
375}
376.glyphicon-download:before {
377 content: "\e026";
378}
379.glyphicon-upload:before {
380 content: "\e027";
381}
382.glyphicon-inbox:before {
383 content: "\e028";
384}
385.glyphicon-play-circle:before {
386 content: "\e029";
387}
388.glyphicon-repeat:before {
389 content: "\e030";
390}
391.glyphicon-refresh:before {
392 content: "\e031";
393}
394.glyphicon-list-alt:before {
395 content: "\e032";
396}
397.glyphicon-lock:before {
398 content: "\e033";
399}
400.glyphicon-flag:before {
401 content: "\e034";
402}
403.glyphicon-headphones:before {
404 content: "\e035";
405}
406.glyphicon-volume-off:before {
407 content: "\e036";
408}
409.glyphicon-volume-down:before {
410 content: "\e037";
411}
412.glyphicon-volume-up:before {
413 content: "\e038";
414}
415.glyphicon-qrcode:before {
416 content: "\e039";
417}
418.glyphicon-barcode:before {
419 content: "\e040";
420}
421.glyphicon-tag:before {
422 content: "\e041";
423}
424.glyphicon-tags:before {
425 content: "\e042";
426}
427.glyphicon-book:before {
428 content: "\e043";
429}
430.glyphicon-bookmark:before {
431 content: "\e044";
432}
433.glyphicon-print:before {
434 content: "\e045";
435}
436.glyphicon-camera:before {
437 content: "\e046";
438}
439.glyphicon-font:before {
440 content: "\e047";
441}
442.glyphicon-bold:before {
443 content: "\e048";
444}
445.glyphicon-italic:before {
446 content: "\e049";
447}
448.glyphicon-text-height:before {
449 content: "\e050";
450}
451.glyphicon-text-width:before {
452 content: "\e051";
453}
454.glyphicon-align-left:before {
455 content: "\e052";
456}
457.glyphicon-align-center:before {
458 content: "\e053";
459}
460.glyphicon-align-right:before {
461 content: "\e054";
462}
463.glyphicon-align-justify:before {
464 content: "\e055";
465}
466.glyphicon-list:before {
467 content: "\e056";
468}
469.glyphicon-indent-left:before {
470 content: "\e057";
471}
472.glyphicon-indent-right:before {
473 content: "\e058";
474}
475.glyphicon-facetime-video:before {
476 content: "\e059";
477}
478.glyphicon-picture:before {
479 content: "\e060";
480}
481.glyphicon-map-marker:before {
482 content: "\e062";
483}
484.glyphicon-adjust:before {
485 content: "\e063";
486}
487.glyphicon-tint:before {
488 content: "\e064";
489}
490.glyphicon-edit:before {
491 content: "\e065";
492}
493.glyphicon-share:before {
494 content: "\e066";
495}
496.glyphicon-check:before {
497 content: "\e067";
498}
499.glyphicon-move:before {
500 content: "\e068";
501}
502.glyphicon-step-backward:before {
503 content: "\e069";
504}
505.glyphicon-fast-backward:before {
506 content: "\e070";
507}
508.glyphicon-backward:before {
509 content: "\e071";
510}
511.glyphicon-play:before {
512 content: "\e072";
513}
514.glyphicon-pause:before {
515 content: "\e073";
516}
517.glyphicon-stop:before {
518 content: "\e074";
519}
520.glyphicon-forward:before {
521 content: "\e075";
522}
523.glyphicon-fast-forward:before {
524 content: "\e076";
525}
526.glyphicon-step-forward:before {
527 content: "\e077";
528}
529.glyphicon-eject:before {
530 content: "\e078";
531}
532.glyphicon-chevron-left:before {
533 content: "\e079";
534}
535.glyphicon-chevron-right:before {
536 content: "\e080";
537}
538.glyphicon-plus-sign:before {
539 content: "\e081";
540}
541.glyphicon-minus-sign:before {
542 content: "\e082";
543}
544.glyphicon-remove-sign:before {
545 content: "\e083";
546}
547.glyphicon-ok-sign:before {
548 content: "\e084";
549}
550.glyphicon-question-sign:before {
551 content: "\e085";
552}
553.glyphicon-info-sign:before {
554 content: "\e086";
555}
556.glyphicon-screenshot:before {
557 content: "\e087";
558}
559.glyphicon-remove-circle:before {
560 content: "\e088";
561}
562.glyphicon-ok-circle:before {
563 content: "\e089";
564}
565.glyphicon-ban-circle:before {
566 content: "\e090";
567}
568.glyphicon-arrow-left:before {
569 content: "\e091";
570}
571.glyphicon-arrow-right:before {
572 content: "\e092";
573}
574.glyphicon-arrow-up:before {
575 content: "\e093";
576}
577.glyphicon-arrow-down:before {
578 content: "\e094";
579}
580.glyphicon-share-alt:before {
581 content: "\e095";
582}
583.glyphicon-resize-full:before {
584 content: "\e096";
585}
586.glyphicon-resize-small:before {
587 content: "\e097";
588}
589.glyphicon-exclamation-sign:before {
590 content: "\e101";
591}
592.glyphicon-gift:before {
593 content: "\e102";
594}
595.glyphicon-leaf:before {
596 content: "\e103";
597}
598.glyphicon-fire:before {
599 content: "\e104";
600}
601.glyphicon-eye-open:before {
602 content: "\e105";
603}
604.glyphicon-eye-close:before {
605 content: "\e106";
606}
607.glyphicon-warning-sign:before {
608 content: "\e107";
609}
610.glyphicon-plane:before {
611 content: "\e108";
612}
613.glyphicon-calendar:before {
614 content: "\e109";
615}
616.glyphicon-random:before {
617 content: "\e110";
618}
619.glyphicon-comment:before {
620 content: "\e111";
621}
622.glyphicon-magnet:before {
623 content: "\e112";
624}
625.glyphicon-chevron-up:before {
626 content: "\e113";
627}
628.glyphicon-chevron-down:before {
629 content: "\e114";
630}
631.glyphicon-retweet:before {
632 content: "\e115";
633}
634.glyphicon-shopping-cart:before {
635 content: "\e116";
636}
637.glyphicon-folder-close:before {
638 content: "\e117";
639}
640.glyphicon-folder-open:before {
641 content: "\e118";
642}
643.glyphicon-resize-vertical:before {
644 content: "\e119";
645}
646.glyphicon-resize-horizontal:before {
647 content: "\e120";
648}
649.glyphicon-hdd:before {
650 content: "\e121";
651}
652.glyphicon-bullhorn:before {
653 content: "\e122";
654}
655.glyphicon-bell:before {
656 content: "\e123";
657}
658.glyphicon-certificate:before {
659 content: "\e124";
660}
661.glyphicon-thumbs-up:before {
662 content: "\e125";
663}
664.glyphicon-thumbs-down:before {
665 content: "\e126";
666}
667.glyphicon-hand-right:before {
668 content: "\e127";
669}
670.glyphicon-hand-left:before {
671 content: "\e128";
672}
673.glyphicon-hand-up:before {
674 content: "\e129";
675}
676.glyphicon-hand-down:before {
677 content: "\e130";
678}
679.glyphicon-circle-arrow-right:before {
680 content: "\e131";
681}
682.glyphicon-circle-arrow-left:before {
683 content: "\e132";
684}
685.glyphicon-circle-arrow-up:before {
686 content: "\e133";
687}
688.glyphicon-circle-arrow-down:before {
689 content: "\e134";
690}
691.glyphicon-globe:before {
692 content: "\e135";
693}
694.glyphicon-wrench:before {
695 content: "\e136";
696}
697.glyphicon-tasks:before {
698 content: "\e137";
699}
700.glyphicon-filter:before {
701 content: "\e138";
702}
703.glyphicon-briefcase:before {
704 content: "\e139";
705}
706.glyphicon-fullscreen:before {
707 content: "\e140";
708}
709.glyphicon-dashboard:before {
710 content: "\e141";
711}
712.glyphicon-paperclip:before {
713 content: "\e142";
714}
715.glyphicon-heart-empty:before {
716 content: "\e143";
717}
718.glyphicon-link:before {
719 content: "\e144";
720}
721.glyphicon-phone:before {
722 content: "\e145";
723}
724.glyphicon-pushpin:before {
725 content: "\e146";
726}
727.glyphicon-usd:before {
728 content: "\e148";
729}
730.glyphicon-gbp:before {
731 content: "\e149";
732}
733.glyphicon-sort:before {
734 content: "\e150";
735}
736.glyphicon-sort-by-alphabet:before {
737 content: "\e151";
738}
739.glyphicon-sort-by-alphabet-alt:before {
740 content: "\e152";
741}
742.glyphicon-sort-by-order:before {
743 content: "\e153";
744}
745.glyphicon-sort-by-order-alt:before {
746 content: "\e154";
747}
748.glyphicon-sort-by-attributes:before {
749 content: "\e155";
750}
751.glyphicon-sort-by-attributes-alt:before {
752 content: "\e156";
753}
754.glyphicon-unchecked:before {
755 content: "\e157";
756}
757.glyphicon-expand:before {
758 content: "\e158";
759}
760.glyphicon-collapse-down:before {
761 content: "\e159";
762}
763.glyphicon-collapse-up:before {
764 content: "\e160";
765}
766.glyphicon-log-in:before {
767 content: "\e161";
768}
769.glyphicon-flash:before {
770 content: "\e162";
771}
772.glyphicon-log-out:before {
773 content: "\e163";
774}
775.glyphicon-new-window:before {
776 content: "\e164";
777}
778.glyphicon-record:before {
779 content: "\e165";
780}
781.glyphicon-save:before {
782 content: "\e166";
783}
784.glyphicon-open:before {
785 content: "\e167";
786}
787.glyphicon-saved:before {
788 content: "\e168";
789}
790.glyphicon-import:before {
791 content: "\e169";
792}
793.glyphicon-export:before {
794 content: "\e170";
795}
796.glyphicon-send:before {
797 content: "\e171";
798}
799.glyphicon-floppy-disk:before {
800 content: "\e172";
801}
802.glyphicon-floppy-saved:before {
803 content: "\e173";
804}
805.glyphicon-floppy-remove:before {
806 content: "\e174";
807}
808.glyphicon-floppy-save:before {
809 content: "\e175";
810}
811.glyphicon-floppy-open:before {
812 content: "\e176";
813}
814.glyphicon-credit-card:before {
815 content: "\e177";
816}
817.glyphicon-transfer:before {
818 content: "\e178";
819}
820.glyphicon-cutlery:before {
821 content: "\e179";
822}
823.glyphicon-header:before {
824 content: "\e180";
825}
826.glyphicon-compressed:before {
827 content: "\e181";
828}
829.glyphicon-earphone:before {
830 content: "\e182";
831}
832.glyphicon-phone-alt:before {
833 content: "\e183";
834}
835.glyphicon-tower:before {
836 content: "\e184";
837}
838.glyphicon-stats:before {
839 content: "\e185";
840}
841.glyphicon-sd-video:before {
842 content: "\e186";
843}
844.glyphicon-hd-video:before {
845 content: "\e187";
846}
847.glyphicon-subtitles:before {
848 content: "\e188";
849}
850.glyphicon-sound-stereo:before {
851 content: "\e189";
852}
853.glyphicon-sound-dolby:before {
854 content: "\e190";
855}
856.glyphicon-sound-5-1:before {
857 content: "\e191";
858}
859.glyphicon-sound-6-1:before {
860 content: "\e192";
861}
862.glyphicon-sound-7-1:before {
863 content: "\e193";
864}
865.glyphicon-copyright-mark:before {
866 content: "\e194";
867}
868.glyphicon-registration-mark:before {
869 content: "\e195";
870}
871.glyphicon-cloud-download:before {
872 content: "\e197";
873}
874.glyphicon-cloud-upload:before {
875 content: "\e198";
876}
877.glyphicon-tree-conifer:before {
878 content: "\e199";
879}
880.glyphicon-tree-deciduous:before {
881 content: "\e200";
882}
883.glyphicon-cd:before {
884 content: "\e201";
885}
886.glyphicon-save-file:before {
887 content: "\e202";
888}
889.glyphicon-open-file:before {
890 content: "\e203";
891}
892.glyphicon-level-up:before {
893 content: "\e204";
894}
895.glyphicon-copy:before {
896 content: "\e205";
897}
898.glyphicon-paste:before {
899 content: "\e206";
900}
901.glyphicon-alert:before {
902 content: "\e209";
903}
904.glyphicon-equalizer:before {
905 content: "\e210";
906}
907.glyphicon-king:before {
908 content: "\e211";
909}
910.glyphicon-queen:before {
911 content: "\e212";
912}
913.glyphicon-pawn:before {
914 content: "\e213";
915}
916.glyphicon-bishop:before {
917 content: "\e214";
918}
919.glyphicon-knight:before {
920 content: "\e215";
921}
922.glyphicon-baby-formula:before {
923 content: "\e216";
924}
925.glyphicon-tent:before {
926 content: "\26fa";
927}
928.glyphicon-blackboard:before {
929 content: "\e218";
930}
931.glyphicon-bed:before {
932 content: "\e219";
933}
934.glyphicon-apple:before {
935 content: "\f8ff";
936}
937.glyphicon-erase:before {
938 content: "\e221";
939}
940.glyphicon-hourglass:before {
941 content: "\231b";
942}
943.glyphicon-lamp:before {
944 content: "\e223";
945}
946.glyphicon-duplicate:before {
947 content: "\e224";
948}
949.glyphicon-piggy-bank:before {
950 content: "\e225";
951}
952.glyphicon-scissors:before {
953 content: "\e226";
954}
955.glyphicon-bitcoin:before {
956 content: "\e227";
957}
958.glyphicon-btc:before {
959 content: "\e227";
960}
961.glyphicon-xbt:before {
962 content: "\e227";
963}
964.glyphicon-yen:before {
965 content: "\00a5";
966}
967.glyphicon-jpy:before {
968 content: "\00a5";
969}
970.glyphicon-ruble:before {
971 content: "\20bd";
972}
973.glyphicon-rub:before {
974 content: "\20bd";
975}
976.glyphicon-scale:before {
977 content: "\e230";
978}
979.glyphicon-ice-lolly:before {
980 content: "\e231";
981}
982.glyphicon-ice-lolly-tasted:before {
983 content: "\e232";
984}
985.glyphicon-education:before {
986 content: "\e233";
987}
988.glyphicon-option-horizontal:before {
989 content: "\e234";
990}
991.glyphicon-option-vertical:before {
992 content: "\e235";
993}
994.glyphicon-menu-hamburger:before {
995 content: "\e236";
996}
997.glyphicon-modal-window:before {
998 content: "\e237";
999}
1000.glyphicon-oil:before {
1001 content: "\e238";
1002}
1003.glyphicon-grain:before {
1004 content: "\e239";
1005}
1006.glyphicon-sunglasses:before {
1007 content: "\e240";
1008}
1009.glyphicon-text-size:before {
1010 content: "\e241";
1011}
1012.glyphicon-text-color:before {
1013 content: "\e242";
1014}
1015.glyphicon-text-background:before {
1016 content: "\e243";
1017}
1018.glyphicon-object-align-top:before {
1019 content: "\e244";
1020}
1021.glyphicon-object-align-bottom:before {
1022 content: "\e245";
1023}
1024.glyphicon-object-align-horizontal:before {
1025 content: "\e246";
1026}
1027.glyphicon-object-align-left:before {
1028 content: "\e247";
1029}
1030.glyphicon-object-align-vertical:before {
1031 content: "\e248";
1032}
1033.glyphicon-object-align-right:before {
1034 content: "\e249";
1035}
1036.glyphicon-triangle-right:before {
1037 content: "\e250";
1038}
1039.glyphicon-triangle-left:before {
1040 content: "\e251";
1041}
1042.glyphicon-triangle-bottom:before {
1043 content: "\e252";
1044}
1045.glyphicon-triangle-top:before {
1046 content: "\e253";
1047}
1048.glyphicon-console:before {
1049 content: "\e254";
1050}
1051.glyphicon-superscript:before {
1052 content: "\e255";
1053}
1054.glyphicon-subscript:before {
1055 content: "\e256";
1056}
1057.glyphicon-menu-left:before {
1058 content: "\e257";
1059}
1060.glyphicon-menu-right:before {
1061 content: "\e258";
1062}
1063.glyphicon-menu-down:before {
1064 content: "\e259";
1065}
1066.glyphicon-menu-up:before {
1067 content: "\e260";
1068}
1069* {
1070 -webkit-box-sizing: border-box;
1071 -moz-box-sizing: border-box;
1072 box-sizing: border-box;
1073}
1074*:before,
1075*:after {
1076 -webkit-box-sizing: border-box;
1077 -moz-box-sizing: border-box;
1078 box-sizing: border-box;
1079}
1080html {
1081 font-size: 10px;
1082 -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
1083}
1084body {
1085 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
1086 font-size: 14px;
1087 line-height: 1.42857143;
1088 color: #333333;
1089 background-color: #fff;
1090}
1091input,
1092button,
1093select,
1094textarea {
1095 font-family: inherit;
1096 font-size: inherit;
1097 line-height: inherit;
1098}
1099a {
1100 color: #337ab7;
1101 text-decoration: none;
1102}
1103a:hover,
1104a:focus {
1105 color: #23527c;
1106 text-decoration: underline;
1107}
1108a:focus {
1109 outline: 5px auto -webkit-focus-ring-color;
1110 outline-offset: -2px;
1111}
1112figure {
1113 margin: 0;
1114}
1115img {
1116 vertical-align: middle;
1117}
1118.img-responsive,
1119.thumbnail > img,
1120.thumbnail a > img,
1121.carousel-inner > .item > img,
1122.carousel-inner > .item > a > img {
1123 display: block;
1124 max-width: 100%;
1125 height: auto;
1126}
1127.img-rounded {
1128 border-radius: 6px;
1129}
1130.img-thumbnail {
1131 padding: 4px;
1132 line-height: 1.42857143;
1133 background-color: #fff;
1134 border: 1px solid #ddd;
1135 border-radius: 4px;
1136 -webkit-transition: all 0.2s ease-in-out;
1137 -o-transition: all 0.2s ease-in-out;
1138 transition: all 0.2s ease-in-out;
1139 display: inline-block;
1140 max-width: 100%;
1141 height: auto;
1142}
1143.img-circle {
1144 border-radius: 50%;
1145}
1146hr {
1147 margin-top: 20px;
1148 margin-bottom: 20px;
1149 border: 0;
1150 border-top: 1px solid #eeeeee;
1151}
1152.sr-only {
1153 position: absolute;
1154 width: 1px;
1155 height: 1px;
1156 padding: 0;
1157 margin: -1px;
1158 overflow: hidden;
1159 clip: rect(0, 0, 0, 0);
1160 border: 0;
1161}
1162.sr-only-focusable:active,
1163.sr-only-focusable:focus {
1164 position: static;
1165 width: auto;
1166 height: auto;
1167 margin: 0;
1168 overflow: visible;
1169 clip: auto;
1170}
1171[role="button"] {
1172 cursor: pointer;
1173}
1174h1,
1175h2,
1176h3,
1177h4,
1178h5,
1179h6,
1180.h1,
1181.h2,
1182.h3,
1183.h4,
1184.h5,
1185.h6 {
1186 font-family: inherit;
1187 font-weight: 500;
1188 line-height: 1.1;
1189 color: inherit;
1190}
1191h1 small,
1192h2 small,
1193h3 small,
1194h4 small,
1195h5 small,
1196h6 small,
1197.h1 small,
1198.h2 small,
1199.h3 small,
1200.h4 small,
1201.h5 small,
1202.h6 small,
1203h1 .small,
1204h2 .small,
1205h3 .small,
1206h4 .small,
1207h5 .small,
1208h6 .small,
1209.h1 .small,
1210.h2 .small,
1211.h3 .small,
1212.h4 .small,
1213.h5 .small,
1214.h6 .small {
1215 font-weight: 400;
1216 line-height: 1;
1217 color: #777777;
1218}
1219h1,
1220.h1,
1221h2,
1222.h2,
1223h3,
1224.h3 {
1225 margin-top: 20px;
1226 margin-bottom: 10px;
1227}
1228h1 small,
1229.h1 small,
1230h2 small,
1231.h2 small,
1232h3 small,
1233.h3 small,
1234h1 .small,
1235.h1 .small,
1236h2 .small,
1237.h2 .small,
1238h3 .small,
1239.h3 .small {
1240 font-size: 65%;
1241}
1242h4,
1243.h4,
1244h5,
1245.h5,
1246h6,
1247.h6 {
1248 margin-top: 10px;
1249 margin-bottom: 10px;
1250}
1251h4 small,
1252.h4 small,
1253h5 small,
1254.h5 small,
1255h6 small,
1256.h6 small,
1257h4 .small,
1258.h4 .small,
1259h5 .small,
1260.h5 .small,
1261h6 .small,
1262.h6 .small {
1263 font-size: 75%;
1264}
1265h1,
1266.h1 {
1267 font-size: 36px;
1268}
1269h2,
1270.h2 {
1271 font-size: 30px;
1272}
1273h3,
1274.h3 {
1275 font-size: 24px;
1276}
1277h4,
1278.h4 {
1279 font-size: 18px;
1280}
1281h5,
1282.h5 {
1283 font-size: 14px;
1284}
1285h6,
1286.h6 {
1287 font-size: 12px;
1288}
1289p {
1290 margin: 0 0 10px;
1291}
1292.lead {
1293 margin-bottom: 20px;
1294 font-size: 16px;
1295 font-weight: 300;
1296 line-height: 1.4;
1297}
1298@media (min-width: 768px) {
1299 .lead {
1300 font-size: 21px;
1301 }
1302}
1303small,
1304.small {
1305 font-size: 85%;
1306}
1307mark,
1308.mark {
1309 padding: 0.2em;
1310 background-color: #fcf8e3;
1311}
1312.text-left {
1313 text-align: left;
1314}
1315.text-right {
1316 text-align: right;
1317}
1318.text-center {
1319 text-align: center;
1320}
1321.text-justify {
1322 text-align: justify;
1323}
1324.text-nowrap {
1325 white-space: nowrap;
1326}
1327.text-lowercase {
1328 text-transform: lowercase;
1329}
1330.text-uppercase {
1331 text-transform: uppercase;
1332}
1333.text-capitalize {
1334 text-transform: capitalize;
1335}
1336.text-muted {
1337 color: #777777;
1338}
1339.text-primary {
1340 color: #337ab7;
1341}
1342a.text-primary:hover,
1343a.text-primary:focus {
1344 color: #286090;
1345}
1346.text-success {
1347 color: #3c763d;
1348}
1349a.text-success:hover,
1350a.text-success:focus {
1351 color: #2b542c;
1352}
1353.text-info {
1354 color: #31708f;
1355}
1356a.text-info:hover,
1357a.text-info:focus {
1358 color: #245269;
1359}
1360.text-warning {
1361 color: #8a6d3b;
1362}
1363a.text-warning:hover,
1364a.text-warning:focus {
1365 color: #66512c;
1366}
1367.text-danger {
1368 color: #a94442;
1369}
1370a.text-danger:hover,
1371a.text-danger:focus {
1372 color: #843534;
1373}
1374.bg-primary {
1375 color: #fff;
1376 background-color: #337ab7;
1377}
1378a.bg-primary:hover,
1379a.bg-primary:focus {
1380 background-color: #286090;
1381}
1382.bg-success {
1383 background-color: #dff0d8;
1384}
1385a.bg-success:hover,
1386a.bg-success:focus {
1387 background-color: #c1e2b3;
1388}
1389.bg-info {
1390 background-color: #d9edf7;
1391}
1392a.bg-info:hover,
1393a.bg-info:focus {
1394 background-color: #afd9ee;
1395}
1396.bg-warning {
1397 background-color: #fcf8e3;
1398}
1399a.bg-warning:hover,
1400a.bg-warning:focus {
1401 background-color: #f7ecb5;
1402}
1403.bg-danger {
1404 background-color: #f2dede;
1405}
1406a.bg-danger:hover,
1407a.bg-danger:focus {
1408 background-color: #e4b9b9;
1409}
1410.page-header {
1411 padding-bottom: 9px;
1412 margin: 40px 0 20px;
1413 border-bottom: 1px solid #eeeeee;
1414}
1415ul,
1416ol {
1417 margin-top: 0;
1418 margin-bottom: 10px;
1419}
1420ul ul,
1421ol ul,
1422ul ol,
1423ol ol {
1424 margin-bottom: 0;
1425}
1426.list-unstyled {
1427 padding-left: 0;
1428 list-style: none;
1429}
1430.list-inline {
1431 padding-left: 0;
1432 list-style: none;
1433 margin-left: -5px;
1434}
1435.list-inline > li {
1436 display: inline-block;
1437 padding-right: 5px;
1438 padding-left: 5px;
1439}
1440dl {
1441 margin-top: 0;
1442 margin-bottom: 20px;
1443}
1444dt,
1445dd {
1446 line-height: 1.42857143;
1447}
1448dt {
1449 font-weight: 700;
1450}
1451dd {
1452 margin-left: 0;
1453}
1454@media (min-width: 768px) {
1455 .dl-horizontal dt {
1456 float: left;
1457 width: 160px;
1458 clear: left;
1459 text-align: right;
1460 overflow: hidden;
1461 text-overflow: ellipsis;
1462 white-space: nowrap;
1463 }
1464 .dl-horizontal dd {
1465 margin-left: 180px;
1466 }
1467}
1468abbr[title],
1469abbr[data-original-title] {
1470 cursor: help;
1471}
1472.initialism {
1473 font-size: 90%;
1474 text-transform: uppercase;
1475}
1476blockquote {
1477 padding: 10px 20px;
1478 margin: 0 0 20px;
1479 font-size: 17.5px;
1480 border-left: 5px solid #eeeeee;
1481}
1482blockquote p:last-child,
1483blockquote ul:last-child,
1484blockquote ol:last-child {
1485 margin-bottom: 0;
1486}
1487blockquote footer,
1488blockquote small,
1489blockquote .small {
1490 display: block;
1491 font-size: 80%;
1492 line-height: 1.42857143;
1493 color: #777777;
1494}
1495blockquote footer:before,
1496blockquote small:before,
1497blockquote .small:before {
1498 content: "\2014 \00A0";
1499}
1500.blockquote-reverse,
1501blockquote.pull-right {
1502 padding-right: 15px;
1503 padding-left: 0;
1504 text-align: right;
1505 border-right: 5px solid #eeeeee;
1506 border-left: 0;
1507}
1508.blockquote-reverse footer:before,
1509blockquote.pull-right footer:before,
1510.blockquote-reverse small:before,
1511blockquote.pull-right small:before,
1512.blockquote-reverse .small:before,
1513blockquote.pull-right .small:before {
1514 content: "";
1515}
1516.blockquote-reverse footer:after,
1517blockquote.pull-right footer:after,
1518.blockquote-reverse small:after,
1519blockquote.pull-right small:after,
1520.blockquote-reverse .small:after,
1521blockquote.pull-right .small:after {
1522 content: "\00A0 \2014";
1523}
1524address {
1525 margin-bottom: 20px;
1526 font-style: normal;
1527 line-height: 1.42857143;
1528}
1529code,
1530kbd,
1531pre,
1532samp {
1533 font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
1534}
1535code {
1536 padding: 2px 4px;
1537 font-size: 90%;
1538 color: #c7254e;
1539 background-color: #f9f2f4;
1540 border-radius: 4px;
1541}
1542kbd {
1543 padding: 2px 4px;
1544 font-size: 90%;
1545 color: #fff;
1546 background-color: #333;
1547 border-radius: 3px;
1548 -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
1549 box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
1550}
1551kbd kbd {
1552 padding: 0;
1553 font-size: 100%;
1554 font-weight: 700;
1555 -webkit-box-shadow: none;
1556 box-shadow: none;
1557}
1558pre {
1559 display: block;
1560 padding: 9.5px;
1561 margin: 0 0 10px;
1562 font-size: 13px;
1563 line-height: 1.42857143;
1564 color: #333333;
1565 word-break: break-all;
1566 word-wrap: break-word;
1567 background-color: #f5f5f5;
1568 border: 1px solid #ccc;
1569 border-radius: 4px;
1570}
1571pre code {
1572 padding: 0;
1573 font-size: inherit;
1574 color: inherit;
1575 white-space: pre-wrap;
1576 background-color: transparent;
1577 border-radius: 0;
1578}
1579.pre-scrollable {
1580 max-height: 340px;
1581 overflow-y: scroll;
1582}
1583.container {
1584 padding-right: 15px;
1585 padding-left: 15px;
1586 margin-right: auto;
1587 margin-left: auto;
1588}
1589@media (min-width: 768px) {
1590 .container {
1591 width: 750px;
1592 }
1593}
1594@media (min-width: 992px) {
1595 .container {
1596 width: 970px;
1597 }
1598}
1599@media (min-width: 1200px) {
1600 .container {
1601 width: 1170px;
1602 }
1603}
1604.container-fluid {
1605 padding-right: 15px;
1606 padding-left: 15px;
1607 margin-right: auto;
1608 margin-left: auto;
1609}
1610.row {
1611 margin-right: -15px;
1612 margin-left: -15px;
1613}
1614.row-no-gutters {
1615 margin-right: 0;
1616 margin-left: 0;
1617}
1618.row-no-gutters [class*="col-"] {
1619 padding-right: 0;
1620 padding-left: 0;
1621}
1622.col-xs-1,
1623.col-sm-1,
1624.col-md-1,
1625.col-lg-1,
1626.col-xs-2,
1627.col-sm-2,
1628.col-md-2,
1629.col-lg-2,
1630.col-xs-3,
1631.col-sm-3,
1632.col-md-3,
1633.col-lg-3,
1634.col-xs-4,
1635.col-sm-4,
1636.col-md-4,
1637.col-lg-4,
1638.col-xs-5,
1639.col-sm-5,
1640.col-md-5,
1641.col-lg-5,
1642.col-xs-6,
1643.col-sm-6,
1644.col-md-6,
1645.col-lg-6,
1646.col-xs-7,
1647.col-sm-7,
1648.col-md-7,
1649.col-lg-7,
1650.col-xs-8,
1651.col-sm-8,
1652.col-md-8,
1653.col-lg-8,
1654.col-xs-9,
1655.col-sm-9,
1656.col-md-9,
1657.col-lg-9,
1658.col-xs-10,
1659.col-sm-10,
1660.col-md-10,
1661.col-lg-10,
1662.col-xs-11,
1663.col-sm-11,
1664.col-md-11,
1665.col-lg-11,
1666.col-xs-12,
1667.col-sm-12,
1668.col-md-12,
1669.col-lg-12 {
1670 position: relative;
1671 min-height: 1px;
1672 padding-right: 15px;
1673 padding-left: 15px;
1674}
1675.col-xs-1,
1676.col-xs-2,
1677.col-xs-3,
1678.col-xs-4,
1679.col-xs-5,
1680.col-xs-6,
1681.col-xs-7,
1682.col-xs-8,
1683.col-xs-9,
1684.col-xs-10,
1685.col-xs-11,
1686.col-xs-12 {
1687 float: left;
1688}
1689.col-xs-12 {
1690 width: 100%;
1691}
1692.col-xs-11 {
1693 width: 91.66666667%;
1694}
1695.col-xs-10 {
1696 width: 83.33333333%;
1697}
1698.col-xs-9 {
1699 width: 75%;
1700}
1701.col-xs-8 {
1702 width: 66.66666667%;
1703}
1704.col-xs-7 {
1705 width: 58.33333333%;
1706}
1707.col-xs-6 {
1708 width: 50%;
1709}
1710.col-xs-5 {
1711 width: 41.66666667%;
1712}
1713.col-xs-4 {
1714 width: 33.33333333%;
1715}
1716.col-xs-3 {
1717 width: 25%;
1718}
1719.col-xs-2 {
1720 width: 16.66666667%;
1721}
1722.col-xs-1 {
1723 width: 8.33333333%;
1724}
1725.col-xs-pull-12 {
1726 right: 100%;
1727}
1728.col-xs-pull-11 {
1729 right: 91.66666667%;
1730}
1731.col-xs-pull-10 {
1732 right: 83.33333333%;
1733}
1734.col-xs-pull-9 {
1735 right: 75%;
1736}
1737.col-xs-pull-8 {
1738 right: 66.66666667%;
1739}
1740.col-xs-pull-7 {
1741 right: 58.33333333%;
1742}
1743.col-xs-pull-6 {
1744 right: 50%;
1745}
1746.col-xs-pull-5 {
1747 right: 41.66666667%;
1748}
1749.col-xs-pull-4 {
1750 right: 33.33333333%;
1751}
1752.col-xs-pull-3 {
1753 right: 25%;
1754}
1755.col-xs-pull-2 {
1756 right: 16.66666667%;
1757}
1758.col-xs-pull-1 {
1759 right: 8.33333333%;
1760}
1761.col-xs-pull-0 {
1762 right: auto;
1763}
1764.col-xs-push-12 {
1765 left: 100%;
1766}
1767.col-xs-push-11 {
1768 left: 91.66666667%;
1769}
1770.col-xs-push-10 {
1771 left: 83.33333333%;
1772}
1773.col-xs-push-9 {
1774 left: 75%;
1775}
1776.col-xs-push-8 {
1777 left: 66.66666667%;
1778}
1779.col-xs-push-7 {
1780 left: 58.33333333%;
1781}
1782.col-xs-push-6 {
1783 left: 50%;
1784}
1785.col-xs-push-5 {
1786 left: 41.66666667%;
1787}
1788.col-xs-push-4 {
1789 left: 33.33333333%;
1790}
1791.col-xs-push-3 {
1792 left: 25%;
1793}
1794.col-xs-push-2 {
1795 left: 16.66666667%;
1796}
1797.col-xs-push-1 {
1798 left: 8.33333333%;
1799}
1800.col-xs-push-0 {
1801 left: auto;
1802}
1803.col-xs-offset-12 {
1804 margin-left: 100%;
1805}
1806.col-xs-offset-11 {
1807 margin-left: 91.66666667%;
1808}
1809.col-xs-offset-10 {
1810 margin-left: 83.33333333%;
1811}
1812.col-xs-offset-9 {
1813 margin-left: 75%;
1814}
1815.col-xs-offset-8 {
1816 margin-left: 66.66666667%;
1817}
1818.col-xs-offset-7 {
1819 margin-left: 58.33333333%;
1820}
1821.col-xs-offset-6 {
1822 margin-left: 50%;
1823}
1824.col-xs-offset-5 {
1825 margin-left: 41.66666667%;
1826}
1827.col-xs-offset-4 {
1828 margin-left: 33.33333333%;
1829}
1830.col-xs-offset-3 {
1831 margin-left: 25%;
1832}
1833.col-xs-offset-2 {
1834 margin-left: 16.66666667%;
1835}
1836.col-xs-offset-1 {
1837 margin-left: 8.33333333%;
1838}
1839.col-xs-offset-0 {
1840 margin-left: 0%;
1841}
1842@media (min-width: 768px) {
1843 .col-sm-1,
1844 .col-sm-2,
1845 .col-sm-3,
1846 .col-sm-4,
1847 .col-sm-5,
1848 .col-sm-6,
1849 .col-sm-7,
1850 .col-sm-8,
1851 .col-sm-9,
1852 .col-sm-10,
1853 .col-sm-11,
1854 .col-sm-12 {
1855 float: left;
1856 }
1857 .col-sm-12 {
1858 width: 100%;
1859 }
1860 .col-sm-11 {
1861 width: 91.66666667%;
1862 }
1863 .col-sm-10 {
1864 width: 83.33333333%;
1865 }
1866 .col-sm-9 {
1867 width: 75%;
1868 }
1869 .col-sm-8 {
1870 width: 66.66666667%;
1871 }
1872 .col-sm-7 {
1873 width: 58.33333333%;
1874 }
1875 .col-sm-6 {
1876 width: 50%;
1877 }
1878 .col-sm-5 {
1879 width: 41.66666667%;
1880 }
1881 .col-sm-4 {
1882 width: 33.33333333%;
1883 }
1884 .col-sm-3 {
1885 width: 25%;
1886 }
1887 .col-sm-2 {
1888 width: 16.66666667%;
1889 }
1890 .col-sm-1 {
1891 width: 8.33333333%;
1892 }
1893 .col-sm-pull-12 {
1894 right: 100%;
1895 }
1896 .col-sm-pull-11 {
1897 right: 91.66666667%;
1898 }
1899 .col-sm-pull-10 {
1900 right: 83.33333333%;
1901 }
1902 .col-sm-pull-9 {
1903 right: 75%;
1904 }
1905 .col-sm-pull-8 {
1906 right: 66.66666667%;
1907 }
1908 .col-sm-pull-7 {
1909 right: 58.33333333%;
1910 }
1911 .col-sm-pull-6 {
1912 right: 50%;
1913 }
1914 .col-sm-pull-5 {
1915 right: 41.66666667%;
1916 }
1917 .col-sm-pull-4 {
1918 right: 33.33333333%;
1919 }
1920 .col-sm-pull-3 {
1921 right: 25%;
1922 }
1923 .col-sm-pull-2 {
1924 right: 16.66666667%;
1925 }
1926 .col-sm-pull-1 {
1927 right: 8.33333333%;
1928 }
1929 .col-sm-pull-0 {
1930 right: auto;
1931 }
1932 .col-sm-push-12 {
1933 left: 100%;
1934 }
1935 .col-sm-push-11 {
1936 left: 91.66666667%;
1937 }
1938 .col-sm-push-10 {
1939 left: 83.33333333%;
1940 }
1941 .col-sm-push-9 {
1942 left: 75%;
1943 }
1944 .col-sm-push-8 {
1945 left: 66.66666667%;
1946 }
1947 .col-sm-push-7 {
1948 left: 58.33333333%;
1949 }
1950 .col-sm-push-6 {
1951 left: 50%;
1952 }
1953 .col-sm-push-5 {
1954 left: 41.66666667%;
1955 }
1956 .col-sm-push-4 {
1957 left: 33.33333333%;
1958 }
1959 .col-sm-push-3 {
1960 left: 25%;
1961 }
1962 .col-sm-push-2 {
1963 left: 16.66666667%;
1964 }
1965 .col-sm-push-1 {
1966 left: 8.33333333%;
1967 }
1968 .col-sm-push-0 {
1969 left: auto;
1970 }
1971 .col-sm-offset-12 {
1972 margin-left: 100%;
1973 }
1974 .col-sm-offset-11 {
1975 margin-left: 91.66666667%;
1976 }
1977 .col-sm-offset-10 {
1978 margin-left: 83.33333333%;
1979 }
1980 .col-sm-offset-9 {
1981 margin-left: 75%;
1982 }
1983 .col-sm-offset-8 {
1984 margin-left: 66.66666667%;
1985 }
1986 .col-sm-offset-7 {
1987 margin-left: 58.33333333%;
1988 }
1989 .col-sm-offset-6 {
1990 margin-left: 50%;
1991 }
1992 .col-sm-offset-5 {
1993 margin-left: 41.66666667%;
1994 }
1995 .col-sm-offset-4 {
1996 margin-left: 33.33333333%;
1997 }
1998 .col-sm-offset-3 {
1999 margin-left: 25%;
2000 }
2001 .col-sm-offset-2 {
2002 margin-left: 16.66666667%;
2003 }
2004 .col-sm-offset-1 {
2005 margin-left: 8.33333333%;
2006 }
2007 .col-sm-offset-0 {
2008 margin-left: 0%;
2009 }
2010}
2011@media (min-width: 992px) {
2012 .col-md-1,
2013 .col-md-2,
2014 .col-md-3,
2015 .col-md-4,
2016 .col-md-5,
2017 .col-md-6,
2018 .col-md-7,
2019 .col-md-8,
2020 .col-md-9,
2021 .col-md-10,
2022 .col-md-11,
2023 .col-md-12 {
2024 float: left;
2025 }
2026 .col-md-12 {
2027 width: 100%;
2028 }
2029 .col-md-11 {
2030 width: 91.66666667%;
2031 }
2032 .col-md-10 {
2033 width: 83.33333333%;
2034 }
2035 .col-md-9 {
2036 width: 75%;
2037 }
2038 .col-md-8 {
2039 width: 66.66666667%;
2040 }
2041 .col-md-7 {
2042 width: 58.33333333%;
2043 }
2044 .col-md-6 {
2045 width: 50%;
2046 }
2047 .col-md-5 {
2048 width: 41.66666667%;
2049 }
2050 .col-md-4 {
2051 width: 33.33333333%;
2052 }
2053 .col-md-3 {
2054 width: 25%;
2055 }
2056 .col-md-2 {
2057 width: 16.66666667%;
2058 }
2059 .col-md-1 {
2060 width: 8.33333333%;
2061 }
2062 .col-md-pull-12 {
2063 right: 100%;
2064 }
2065 .col-md-pull-11 {
2066 right: 91.66666667%;
2067 }
2068 .col-md-pull-10 {
2069 right: 83.33333333%;
2070 }
2071 .col-md-pull-9 {
2072 right: 75%;
2073 }
2074 .col-md-pull-8 {
2075 right: 66.66666667%;
2076 }
2077 .col-md-pull-7 {
2078 right: 58.33333333%;
2079 }
2080 .col-md-pull-6 {
2081 right: 50%;
2082 }
2083 .col-md-pull-5 {
2084 right: 41.66666667%;
2085 }
2086 .col-md-pull-4 {
2087 right: 33.33333333%;
2088 }
2089 .col-md-pull-3 {
2090 right: 25%;
2091 }
2092 .col-md-pull-2 {
2093 right: 16.66666667%;
2094 }
2095 .col-md-pull-1 {
2096 right: 8.33333333%;
2097 }
2098 .col-md-pull-0 {
2099 right: auto;
2100 }
2101 .col-md-push-12 {
2102 left: 100%;
2103 }
2104 .col-md-push-11 {
2105 left: 91.66666667%;
2106 }
2107 .col-md-push-10 {
2108 left: 83.33333333%;
2109 }
2110 .col-md-push-9 {
2111 left: 75%;
2112 }
2113 .col-md-push-8 {
2114 left: 66.66666667%;
2115 }
2116 .col-md-push-7 {
2117 left: 58.33333333%;
2118 }
2119 .col-md-push-6 {
2120 left: 50%;
2121 }
2122 .col-md-push-5 {
2123 left: 41.66666667%;
2124 }
2125 .col-md-push-4 {
2126 left: 33.33333333%;
2127 }
2128 .col-md-push-3 {
2129 left: 25%;
2130 }
2131 .col-md-push-2 {
2132 left: 16.66666667%;
2133 }
2134 .col-md-push-1 {
2135 left: 8.33333333%;
2136 }
2137 .col-md-push-0 {
2138 left: auto;
2139 }
2140 .col-md-offset-12 {
2141 margin-left: 100%;
2142 }
2143 .col-md-offset-11 {
2144 margin-left: 91.66666667%;
2145 }
2146 .col-md-offset-10 {
2147 margin-left: 83.33333333%;
2148 }
2149 .col-md-offset-9 {
2150 margin-left: 75%;
2151 }
2152 .col-md-offset-8 {
2153 margin-left: 66.66666667%;
2154 }
2155 .col-md-offset-7 {
2156 margin-left: 58.33333333%;
2157 }
2158 .col-md-offset-6 {
2159 margin-left: 50%;
2160 }
2161 .col-md-offset-5 {
2162 margin-left: 41.66666667%;
2163 }
2164 .col-md-offset-4 {
2165 margin-left: 33.33333333%;
2166 }
2167 .col-md-offset-3 {
2168 margin-left: 25%;
2169 }
2170 .col-md-offset-2 {
2171 margin-left: 16.66666667%;
2172 }
2173 .col-md-offset-1 {
2174 margin-left: 8.33333333%;
2175 }
2176 .col-md-offset-0 {
2177 margin-left: 0%;
2178 }
2179}
2180@media (min-width: 1200px) {
2181 .col-lg-1,
2182 .col-lg-2,
2183 .col-lg-3,
2184 .col-lg-4,
2185 .col-lg-5,
2186 .col-lg-6,
2187 .col-lg-7,
2188 .col-lg-8,
2189 .col-lg-9,
2190 .col-lg-10,
2191 .col-lg-11,
2192 .col-lg-12 {
2193 float: left;
2194 }
2195 .col-lg-12 {
2196 width: 100%;
2197 }
2198 .col-lg-11 {
2199 width: 91.66666667%;
2200 }
2201 .col-lg-10 {
2202 width: 83.33333333%;
2203 }
2204 .col-lg-9 {
2205 width: 75%;
2206 }
2207 .col-lg-8 {
2208 width: 66.66666667%;
2209 }
2210 .col-lg-7 {
2211 width: 58.33333333%;
2212 }
2213 .col-lg-6 {
2214 width: 50%;
2215 }
2216 .col-lg-5 {
2217 width: 41.66666667%;
2218 }
2219 .col-lg-4 {
2220 width: 33.33333333%;
2221 }
2222 .col-lg-3 {
2223 width: 25%;
2224 }
2225 .col-lg-2 {
2226 width: 16.66666667%;
2227 }
2228 .col-lg-1 {
2229 width: 8.33333333%;
2230 }
2231 .col-lg-pull-12 {
2232 right: 100%;
2233 }
2234 .col-lg-pull-11 {
2235 right: 91.66666667%;
2236 }
2237 .col-lg-pull-10 {
2238 right: 83.33333333%;
2239 }
2240 .col-lg-pull-9 {
2241 right: 75%;
2242 }
2243 .col-lg-pull-8 {
2244 right: 66.66666667%;
2245 }
2246 .col-lg-pull-7 {
2247 right: 58.33333333%;
2248 }
2249 .col-lg-pull-6 {
2250 right: 50%;
2251 }
2252 .col-lg-pull-5 {
2253 right: 41.66666667%;
2254 }
2255 .col-lg-pull-4 {
2256 right: 33.33333333%;
2257 }
2258 .col-lg-pull-3 {
2259 right: 25%;
2260 }
2261 .col-lg-pull-2 {
2262 right: 16.66666667%;
2263 }
2264 .col-lg-pull-1 {
2265 right: 8.33333333%;
2266 }
2267 .col-lg-pull-0 {
2268 right: auto;
2269 }
2270 .col-lg-push-12 {
2271 left: 100%;
2272 }
2273 .col-lg-push-11 {
2274 left: 91.66666667%;
2275 }
2276 .col-lg-push-10 {
2277 left: 83.33333333%;
2278 }
2279 .col-lg-push-9 {
2280 left: 75%;
2281 }
2282 .col-lg-push-8 {
2283 left: 66.66666667%;
2284 }
2285 .col-lg-push-7 {
2286 left: 58.33333333%;
2287 }
2288 .col-lg-push-6 {
2289 left: 50%;
2290 }
2291 .col-lg-push-5 {
2292 left: 41.66666667%;
2293 }
2294 .col-lg-push-4 {
2295 left: 33.33333333%;
2296 }
2297 .col-lg-push-3 {
2298 left: 25%;
2299 }
2300 .col-lg-push-2 {
2301 left: 16.66666667%;
2302 }
2303 .col-lg-push-1 {
2304 left: 8.33333333%;
2305 }
2306 .col-lg-push-0 {
2307 left: auto;
2308 }
2309 .col-lg-offset-12 {
2310 margin-left: 100%;
2311 }
2312 .col-lg-offset-11 {
2313 margin-left: 91.66666667%;
2314 }
2315 .col-lg-offset-10 {
2316 margin-left: 83.33333333%;
2317 }
2318 .col-lg-offset-9 {
2319 margin-left: 75%;
2320 }
2321 .col-lg-offset-8 {
2322 margin-left: 66.66666667%;
2323 }
2324 .col-lg-offset-7 {
2325 margin-left: 58.33333333%;
2326 }
2327 .col-lg-offset-6 {
2328 margin-left: 50%;
2329 }
2330 .col-lg-offset-5 {
2331 margin-left: 41.66666667%;
2332 }
2333 .col-lg-offset-4 {
2334 margin-left: 33.33333333%;
2335 }
2336 .col-lg-offset-3 {
2337 margin-left: 25%;
2338 }
2339 .col-lg-offset-2 {
2340 margin-left: 16.66666667%;
2341 }
2342 .col-lg-offset-1 {
2343 margin-left: 8.33333333%;
2344 }
2345 .col-lg-offset-0 {
2346 margin-left: 0%;
2347 }
2348}
2349table {
2350 background-color: transparent;
2351}
2352table col[class*="col-"] {
2353 position: static;
2354 display: table-column;
2355 float: none;
2356}
2357table td[class*="col-"],
2358table th[class*="col-"] {
2359 position: static;
2360 display: table-cell;
2361 float: none;
2362}
2363caption {
2364 padding-top: 8px;
2365 padding-bottom: 8px;
2366 color: #777777;
2367 text-align: left;
2368}
2369th {
2370 text-align: left;
2371}
2372.table {
2373 width: 100%;
2374 max-width: 100%;
2375 margin-bottom: 20px;
2376}
2377.table > thead > tr > th,
2378.table > tbody > tr > th,
2379.table > tfoot > tr > th,
2380.table > thead > tr > td,
2381.table > tbody > tr > td,
2382.table > tfoot > tr > td {
2383 padding: 8px;
2384 line-height: 1.42857143;
2385 vertical-align: top;
2386 border-top: 1px solid #ddd;
2387}
2388.table > thead > tr > th {
2389 vertical-align: bottom;
2390 border-bottom: 2px solid #ddd;
2391}
2392.table > caption + thead > tr:first-child > th,
2393.table > colgroup + thead > tr:first-child > th,
2394.table > thead:first-child > tr:first-child > th,
2395.table > caption + thead > tr:first-child > td,
2396.table > colgroup + thead > tr:first-child > td,
2397.table > thead:first-child > tr:first-child > td {
2398 border-top: 0;
2399}
2400.table > tbody + tbody {
2401 border-top: 2px solid #ddd;
2402}
2403.table .table {
2404 background-color: #fff;
2405}
2406.table-condensed > thead > tr > th,
2407.table-condensed > tbody > tr > th,
2408.table-condensed > tfoot > tr > th,
2409.table-condensed > thead > tr > td,
2410.table-condensed > tbody > tr > td,
2411.table-condensed > tfoot > tr > td {
2412 padding: 5px;
2413}
2414.table-bordered {
2415 border: 1px solid #ddd;
2416}
2417.table-bordered > thead > tr > th,
2418.table-bordered > tbody > tr > th,
2419.table-bordered > tfoot > tr > th,
2420.table-bordered > thead > tr > td,
2421.table-bordered > tbody > tr > td,
2422.table-bordered > tfoot > tr > td {
2423 border: 1px solid #ddd;
2424}
2425.table-bordered > thead > tr > th,
2426.table-bordered > thead > tr > td {
2427 border-bottom-width: 2px;
2428}
2429.table-striped > tbody > tr:nth-of-type(odd) {
2430 background-color: #f9f9f9;
2431}
2432.table-hover > tbody > tr:hover {
2433 background-color: #f5f5f5;
2434}
2435.table > thead > tr > td.active,
2436.table > tbody > tr > td.active,
2437.table > tfoot > tr > td.active,
2438.table > thead > tr > th.active,
2439.table > tbody > tr > th.active,
2440.table > tfoot > tr > th.active,
2441.table > thead > tr.active > td,
2442.table > tbody > tr.active > td,
2443.table > tfoot > tr.active > td,
2444.table > thead > tr.active > th,
2445.table > tbody > tr.active > th,
2446.table > tfoot > tr.active > th {
2447 background-color: #f5f5f5;
2448}
2449.table-hover > tbody > tr > td.active:hover,
2450.table-hover > tbody > tr > th.active:hover,
2451.table-hover > tbody > tr.active:hover > td,
2452.table-hover > tbody > tr:hover > .active,
2453.table-hover > tbody > tr.active:hover > th {
2454 background-color: #e8e8e8;
2455}
2456.table > thead > tr > td.success,
2457.table > tbody > tr > td.success,
2458.table > tfoot > tr > td.success,
2459.table > thead > tr > th.success,
2460.table > tbody > tr > th.success,
2461.table > tfoot > tr > th.success,
2462.table > thead > tr.success > td,
2463.table > tbody > tr.success > td,
2464.table > tfoot > tr.success > td,
2465.table > thead > tr.success > th,
2466.table > tbody > tr.success > th,
2467.table > tfoot > tr.success > th {
2468 background-color: #dff0d8;
2469}
2470.table-hover > tbody > tr > td.success:hover,
2471.table-hover > tbody > tr > th.success:hover,
2472.table-hover > tbody > tr.success:hover > td,
2473.table-hover > tbody > tr:hover > .success,
2474.table-hover > tbody > tr.success:hover > th {
2475 background-color: #d0e9c6;
2476}
2477.table > thead > tr > td.info,
2478.table > tbody > tr > td.info,
2479.table > tfoot > tr > td.info,
2480.table > thead > tr > th.info,
2481.table > tbody > tr > th.info,
2482.table > tfoot > tr > th.info,
2483.table > thead > tr.info > td,
2484.table > tbody > tr.info > td,
2485.table > tfoot > tr.info > td,
2486.table > thead > tr.info > th,
2487.table > tbody > tr.info > th,
2488.table > tfoot > tr.info > th {
2489 background-color: #d9edf7;
2490}
2491.table-hover > tbody > tr > td.info:hover,
2492.table-hover > tbody > tr > th.info:hover,
2493.table-hover > tbody > tr.info:hover > td,
2494.table-hover > tbody > tr:hover > .info,
2495.table-hover > tbody > tr.info:hover > th {
2496 background-color: #c4e3f3;
2497}
2498.table > thead > tr > td.warning,
2499.table > tbody > tr > td.warning,
2500.table > tfoot > tr > td.warning,
2501.table > thead > tr > th.warning,
2502.table > tbody > tr > th.warning,
2503.table > tfoot > tr > th.warning,
2504.table > thead > tr.warning > td,
2505.table > tbody > tr.warning > td,
2506.table > tfoot > tr.warning > td,
2507.table > thead > tr.warning > th,
2508.table > tbody > tr.warning > th,
2509.table > tfoot > tr.warning > th {
2510 background-color: #fcf8e3;
2511}
2512.table-hover > tbody > tr > td.warning:hover,
2513.table-hover > tbody > tr > th.warning:hover,
2514.table-hover > tbody > tr.warning:hover > td,
2515.table-hover > tbody > tr:hover > .warning,
2516.table-hover > tbody > tr.warning:hover > th {
2517 background-color: #faf2cc;
2518}
2519.table > thead > tr > td.danger,
2520.table > tbody > tr > td.danger,
2521.table > tfoot > tr > td.danger,
2522.table > thead > tr > th.danger,
2523.table > tbody > tr > th.danger,
2524.table > tfoot > tr > th.danger,
2525.table > thead > tr.danger > td,
2526.table > tbody > tr.danger > td,
2527.table > tfoot > tr.danger > td,
2528.table > thead > tr.danger > th,
2529.table > tbody > tr.danger > th,
2530.table > tfoot > tr.danger > th {
2531 background-color: #f2dede;
2532}
2533.table-hover > tbody > tr > td.danger:hover,
2534.table-hover > tbody > tr > th.danger:hover,
2535.table-hover > tbody > tr.danger:hover > td,
2536.table-hover > tbody > tr:hover > .danger,
2537.table-hover > tbody > tr.danger:hover > th {
2538 background-color: #ebcccc;
2539}
2540.table-responsive {
2541 min-height: 0.01%;
2542 overflow-x: auto;
2543}
2544@media screen and (max-width: 767px) {
2545 .table-responsive {
2546 width: 100%;
2547 margin-bottom: 15px;
2548 overflow-y: hidden;
2549 -ms-overflow-style: -ms-autohiding-scrollbar;
2550 border: 1px solid #ddd;
2551 }
2552 .table-responsive > .table {
2553 margin-bottom: 0;
2554 }
2555 .table-responsive > .table > thead > tr > th,
2556 .table-responsive > .table > tbody > tr > th,
2557 .table-responsive > .table > tfoot > tr > th,
2558 .table-responsive > .table > thead > tr > td,
2559 .table-responsive > .table > tbody > tr > td,
2560 .table-responsive > .table > tfoot > tr > td {
2561 white-space: nowrap;
2562 }
2563 .table-responsive > .table-bordered {
2564 border: 0;
2565 }
2566 .table-responsive > .table-bordered > thead > tr > th:first-child,
2567 .table-responsive > .table-bordered > tbody > tr > th:first-child,
2568 .table-responsive > .table-bordered > tfoot > tr > th:first-child,
2569 .table-responsive > .table-bordered > thead > tr > td:first-child,
2570 .table-responsive > .table-bordered > tbody > tr > td:first-child,
2571 .table-responsive > .table-bordered > tfoot > tr > td:first-child {
2572 border-left: 0;
2573 }
2574 .table-responsive > .table-bordered > thead > tr > th:last-child,
2575 .table-responsive > .table-bordered > tbody > tr > th:last-child,
2576 .table-responsive > .table-bordered > tfoot > tr > th:last-child,
2577 .table-responsive > .table-bordered > thead > tr > td:last-child,
2578 .table-responsive > .table-bordered > tbody > tr > td:last-child,
2579 .table-responsive > .table-bordered > tfoot > tr > td:last-child {
2580 border-right: 0;
2581 }
2582 .table-responsive > .table-bordered > tbody > tr:last-child > th,
2583 .table-responsive > .table-bordered > tfoot > tr:last-child > th,
2584 .table-responsive > .table-bordered > tbody > tr:last-child > td,
2585 .table-responsive > .table-bordered > tfoot > tr:last-child > td {
2586 border-bottom: 0;
2587 }
2588}
2589fieldset {
2590 min-width: 0;
2591 padding: 0;
2592 margin: 0;
2593 border: 0;
2594}
2595legend {
2596 display: block;
2597 width: 100%;
2598 padding: 0;
2599 margin-bottom: 20px;
2600 font-size: 21px;
2601 line-height: inherit;
2602 color: #333333;
2603 border: 0;
2604 border-bottom: 1px solid #e5e5e5;
2605}
2606label {
2607 display: inline-block;
2608 max-width: 100%;
2609 margin-bottom: 5px;
2610 font-weight: 700;
2611}
2612input[type="search"] {
2613 -webkit-box-sizing: border-box;
2614 -moz-box-sizing: border-box;
2615 box-sizing: border-box;
2616 -webkit-appearance: none;
2617 -moz-appearance: none;
2618 appearance: none;
2619}
2620input[type="radio"],
2621input[type="checkbox"] {
2622 margin: 4px 0 0;
2623 margin-top: 1px \9;
2624 line-height: normal;
2625}
2626input[type="radio"][disabled],
2627input[type="checkbox"][disabled],
2628input[type="radio"].disabled,
2629input[type="checkbox"].disabled,
2630fieldset[disabled] input[type="radio"],
2631fieldset[disabled] input[type="checkbox"] {
2632 cursor: not-allowed;
2633}
2634input[type="file"] {
2635 display: block;
2636}
2637input[type="range"] {
2638 display: block;
2639 width: 100%;
2640}
2641select[multiple],
2642select[size] {
2643 height: auto;
2644}
2645input[type="file"]:focus,
2646input[type="radio"]:focus,
2647input[type="checkbox"]:focus {
2648 outline: 5px auto -webkit-focus-ring-color;
2649 outline-offset: -2px;
2650}
2651output {
2652 display: block;
2653 padding-top: 7px;
2654 font-size: 14px;
2655 line-height: 1.42857143;
2656 color: #555555;
2657}
2658.form-control {
2659 display: block;
2660 width: 100%;
2661 height: 34px;
2662 padding: 6px 12px;
2663 font-size: 14px;
2664 line-height: 1.42857143;
2665 color: #555555;
2666 background-color: #fff;
2667 background-image: none;
2668 border: 1px solid #ccc;
2669 border-radius: 4px;
2670 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2671 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2672 -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
2673 -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
2674 -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
2675 transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
2676 transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
2677 transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
2678}
2679.form-control:focus {
2680 border-color: #66afe9;
2681 outline: 0;
2682 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, 0.6);
2683 box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, 0.6);
2684}
2685.form-control::-moz-placeholder {
2686 color: #999;
2687 opacity: 1;
2688}
2689.form-control:-ms-input-placeholder {
2690 color: #999;
2691}
2692.form-control::-webkit-input-placeholder {
2693 color: #999;
2694}
2695.form-control::-ms-expand {
2696 background-color: transparent;
2697 border: 0;
2698}
2699.form-control[disabled],
2700.form-control[readonly],
2701fieldset[disabled] .form-control {
2702 background-color: #eeeeee;
2703 opacity: 1;
2704}
2705.form-control[disabled],
2706fieldset[disabled] .form-control {
2707 cursor: not-allowed;
2708}
2709textarea.form-control {
2710 height: auto;
2711}
2712@media screen and (-webkit-min-device-pixel-ratio: 0) {
2713 input[type="date"].form-control,
2714 input[type="time"].form-control,
2715 input[type="datetime-local"].form-control,
2716 input[type="month"].form-control {
2717 line-height: 34px;
2718 }
2719 input[type="date"].input-sm,
2720 input[type="time"].input-sm,
2721 input[type="datetime-local"].input-sm,
2722 input[type="month"].input-sm,
2723 .input-group-sm input[type="date"],
2724 .input-group-sm input[type="time"],
2725 .input-group-sm input[type="datetime-local"],
2726 .input-group-sm input[type="month"] {
2727 line-height: 30px;
2728 }
2729 input[type="date"].input-lg,
2730 input[type="time"].input-lg,
2731 input[type="datetime-local"].input-lg,
2732 input[type="month"].input-lg,
2733 .input-group-lg input[type="date"],
2734 .input-group-lg input[type="time"],
2735 .input-group-lg input[type="datetime-local"],
2736 .input-group-lg input[type="month"] {
2737 line-height: 46px;
2738 }
2739}
2740.form-group {
2741 margin-bottom: 15px;
2742}
2743.radio,
2744.checkbox {
2745 position: relative;
2746 display: block;
2747 margin-top: 10px;
2748 margin-bottom: 10px;
2749}
2750.radio.disabled label,
2751.checkbox.disabled label,
2752fieldset[disabled] .radio label,
2753fieldset[disabled] .checkbox label {
2754 cursor: not-allowed;
2755}
2756.radio label,
2757.checkbox label {
2758 min-height: 20px;
2759 padding-left: 20px;
2760 margin-bottom: 0;
2761 font-weight: 400;
2762 cursor: pointer;
2763}
2764.radio input[type="radio"],
2765.radio-inline input[type="radio"],
2766.checkbox input[type="checkbox"],
2767.checkbox-inline input[type="checkbox"] {
2768 position: absolute;
2769 margin-top: 4px \9;
2770 margin-left: -20px;
2771}
2772.radio + .radio,
2773.checkbox + .checkbox {
2774 margin-top: -5px;
2775}
2776.radio-inline,
2777.checkbox-inline {
2778 position: relative;
2779 display: inline-block;
2780 padding-left: 20px;
2781 margin-bottom: 0;
2782 font-weight: 400;
2783 vertical-align: middle;
2784 cursor: pointer;
2785}
2786.radio-inline.disabled,
2787.checkbox-inline.disabled,
2788fieldset[disabled] .radio-inline,
2789fieldset[disabled] .checkbox-inline {
2790 cursor: not-allowed;
2791}
2792.radio-inline + .radio-inline,
2793.checkbox-inline + .checkbox-inline {
2794 margin-top: 0;
2795 margin-left: 10px;
2796}
2797.form-control-static {
2798 min-height: 34px;
2799 padding-top: 7px;
2800 padding-bottom: 7px;
2801 margin-bottom: 0;
2802}
2803.form-control-static.input-lg,
2804.form-control-static.input-sm {
2805 padding-right: 0;
2806 padding-left: 0;
2807}
2808.input-sm {
2809 height: 30px;
2810 padding: 5px 10px;
2811 font-size: 12px;
2812 line-height: 1.5;
2813 border-radius: 3px;
2814}
2815select.input-sm {
2816 height: 30px;
2817 line-height: 30px;
2818}
2819textarea.input-sm,
2820select[multiple].input-sm {
2821 height: auto;
2822}
2823.form-group-sm .form-control {
2824 height: 30px;
2825 padding: 5px 10px;
2826 font-size: 12px;
2827 line-height: 1.5;
2828 border-radius: 3px;
2829}
2830.form-group-sm select.form-control {
2831 height: 30px;
2832 line-height: 30px;
2833}
2834.form-group-sm textarea.form-control,
2835.form-group-sm select[multiple].form-control {
2836 height: auto;
2837}
2838.form-group-sm .form-control-static {
2839 height: 30px;
2840 min-height: 32px;
2841 padding: 6px 10px;
2842 font-size: 12px;
2843 line-height: 1.5;
2844}
2845.input-lg {
2846 height: 46px;
2847 padding: 10px 16px;
2848 font-size: 18px;
2849 line-height: 1.3333333;
2850 border-radius: 6px;
2851}
2852select.input-lg {
2853 height: 46px;
2854 line-height: 46px;
2855}
2856textarea.input-lg,
2857select[multiple].input-lg {
2858 height: auto;
2859}
2860.form-group-lg .form-control {
2861 height: 46px;
2862 padding: 10px 16px;
2863 font-size: 18px;
2864 line-height: 1.3333333;
2865 border-radius: 6px;
2866}
2867.form-group-lg select.form-control {
2868 height: 46px;
2869 line-height: 46px;
2870}
2871.form-group-lg textarea.form-control,
2872.form-group-lg select[multiple].form-control {
2873 height: auto;
2874}
2875.form-group-lg .form-control-static {
2876 height: 46px;
2877 min-height: 38px;
2878 padding: 11px 16px;
2879 font-size: 18px;
2880 line-height: 1.3333333;
2881}
2882.has-feedback {
2883 position: relative;
2884}
2885.has-feedback .form-control {
2886 padding-right: 42.5px;
2887}
2888.form-control-feedback {
2889 position: absolute;
2890 top: 0;
2891 right: 0;
2892 z-index: 2;
2893 display: block;
2894 width: 34px;
2895 height: 34px;
2896 line-height: 34px;
2897 text-align: center;
2898 pointer-events: none;
2899}
2900.input-lg + .form-control-feedback,
2901.input-group-lg + .form-control-feedback,
2902.form-group-lg .form-control + .form-control-feedback {
2903 width: 46px;
2904 height: 46px;
2905 line-height: 46px;
2906}
2907.input-sm + .form-control-feedback,
2908.input-group-sm + .form-control-feedback,
2909.form-group-sm .form-control + .form-control-feedback {
2910 width: 30px;
2911 height: 30px;
2912 line-height: 30px;
2913}
2914.has-success .help-block,
2915.has-success .control-label,
2916.has-success .radio,
2917.has-success .checkbox,
2918.has-success .radio-inline,
2919.has-success .checkbox-inline,
2920.has-success.radio label,
2921.has-success.checkbox label,
2922.has-success.radio-inline label,
2923.has-success.checkbox-inline label {
2924 color: #3c763d;
2925}
2926.has-success .form-control {
2927 border-color: #3c763d;
2928 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2929 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2930}
2931.has-success .form-control:focus {
2932 border-color: #2b542c;
2933 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
2934 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
2935}
2936.has-success .input-group-addon {
2937 color: #3c763d;
2938 background-color: #dff0d8;
2939 border-color: #3c763d;
2940}
2941.has-success .form-control-feedback {
2942 color: #3c763d;
2943}
2944.has-warning .help-block,
2945.has-warning .control-label,
2946.has-warning .radio,
2947.has-warning .checkbox,
2948.has-warning .radio-inline,
2949.has-warning .checkbox-inline,
2950.has-warning.radio label,
2951.has-warning.checkbox label,
2952.has-warning.radio-inline label,
2953.has-warning.checkbox-inline label {
2954 color: #8a6d3b;
2955}
2956.has-warning .form-control {
2957 border-color: #8a6d3b;
2958 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2959 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2960}
2961.has-warning .form-control:focus {
2962 border-color: #66512c;
2963 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
2964 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
2965}
2966.has-warning .input-group-addon {
2967 color: #8a6d3b;
2968 background-color: #fcf8e3;
2969 border-color: #8a6d3b;
2970}
2971.has-warning .form-control-feedback {
2972 color: #8a6d3b;
2973}
2974.has-error .help-block,
2975.has-error .control-label,
2976.has-error .radio,
2977.has-error .checkbox,
2978.has-error .radio-inline,
2979.has-error .checkbox-inline,
2980.has-error.radio label,
2981.has-error.checkbox label,
2982.has-error.radio-inline label,
2983.has-error.checkbox-inline label {
2984 color: #a94442;
2985}
2986.has-error .form-control {
2987 border-color: #a94442;
2988 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2989 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2990}
2991.has-error .form-control:focus {
2992 border-color: #843534;
2993 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
2994 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
2995}
2996.has-error .input-group-addon {
2997 color: #a94442;
2998 background-color: #f2dede;
2999 border-color: #a94442;
3000}
3001.has-error .form-control-feedback {
3002 color: #a94442;
3003}
3004.has-feedback label ~ .form-control-feedback {
3005 top: 25px;
3006}
3007.has-feedback label.sr-only ~ .form-control-feedback {
3008 top: 0;
3009}
3010.help-block {
3011 display: block;
3012 margin-top: 5px;
3013 margin-bottom: 10px;
3014 color: #737373;
3015}
3016@media (min-width: 768px) {
3017 .form-inline .form-group {
3018 display: inline-block;
3019 margin-bottom: 0;
3020 vertical-align: middle;
3021 }
3022 .form-inline .form-control {
3023 display: inline-block;
3024 width: auto;
3025 vertical-align: middle;
3026 }
3027 .form-inline .form-control-static {
3028 display: inline-block;
3029 }
3030 .form-inline .input-group {
3031 display: inline-table;
3032 vertical-align: middle;
3033 }
3034 .form-inline .input-group .input-group-addon,
3035 .form-inline .input-group .input-group-btn,
3036 .form-inline .input-group .form-control {
3037 width: auto;
3038 }
3039 .form-inline .input-group > .form-control {
3040 width: 100%;
3041 }
3042 .form-inline .control-label {
3043 margin-bottom: 0;
3044 vertical-align: middle;
3045 }
3046 .form-inline .radio,
3047 .form-inline .checkbox {
3048 display: inline-block;
3049 margin-top: 0;
3050 margin-bottom: 0;
3051 vertical-align: middle;
3052 }
3053 .form-inline .radio label,
3054 .form-inline .checkbox label {
3055 padding-left: 0;
3056 }
3057 .form-inline .radio input[type="radio"],
3058 .form-inline .checkbox input[type="checkbox"] {
3059 position: relative;
3060 margin-left: 0;
3061 }
3062 .form-inline .has-feedback .form-control-feedback {
3063 top: 0;
3064 }
3065}
3066.form-horizontal .radio,
3067.form-horizontal .checkbox,
3068.form-horizontal .radio-inline,
3069.form-horizontal .checkbox-inline {
3070 padding-top: 7px;
3071 margin-top: 0;
3072 margin-bottom: 0;
3073}
3074.form-horizontal .radio,
3075.form-horizontal .checkbox {
3076 min-height: 27px;
3077}
3078.form-horizontal .form-group {
3079 margin-right: -15px;
3080 margin-left: -15px;
3081}
3082@media (min-width: 768px) {
3083 .form-horizontal .control-label {
3084 padding-top: 7px;
3085 margin-bottom: 0;
3086 text-align: right;
3087 }
3088}
3089.form-horizontal .has-feedback .form-control-feedback {
3090 right: 15px;
3091}
3092@media (min-width: 768px) {
3093 .form-horizontal .form-group-lg .control-label {
3094 padding-top: 11px;
3095 font-size: 18px;
3096 }
3097}
3098@media (min-width: 768px) {
3099 .form-horizontal .form-group-sm .control-label {
3100 padding-top: 6px;
3101 font-size: 12px;
3102 }
3103}
3104.btn {
3105 display: inline-block;
3106 margin-bottom: 0;
3107 font-weight: normal;
3108 text-align: center;
3109 white-space: nowrap;
3110 vertical-align: middle;
3111 -ms-touch-action: manipulation;
3112 touch-action: manipulation;
3113 cursor: pointer;
3114 background-image: none;
3115 border: 1px solid transparent;
3116 padding: 6px 12px;
3117 font-size: 14px;
3118 line-height: 1.42857143;
3119 border-radius: 4px;
3120 -webkit-user-select: none;
3121 -moz-user-select: none;
3122 -ms-user-select: none;
3123 user-select: none;
3124}
3125.btn:focus,
3126.btn:active:focus,
3127.btn.active:focus,
3128.btn.focus,
3129.btn:active.focus,
3130.btn.active.focus {
3131 outline: 5px auto -webkit-focus-ring-color;
3132 outline-offset: -2px;
3133}
3134.btn:hover,
3135.btn:focus,
3136.btn.focus {
3137 color: #333;
3138 text-decoration: none;
3139}
3140.btn:active,
3141.btn.active {
3142 background-image: none;
3143 outline: 0;
3144 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3145 box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3146}
3147.btn.disabled,
3148.btn[disabled],
3149fieldset[disabled] .btn {
3150 cursor: not-allowed;
3151 filter: alpha(opacity=65);
3152 opacity: 0.65;
3153 -webkit-box-shadow: none;
3154 box-shadow: none;
3155}
3156a.btn.disabled,
3157fieldset[disabled] a.btn {
3158 pointer-events: none;
3159}
3160.btn-default {
3161 color: #333;
3162 background-color: #fff;
3163 border-color: #ccc;
3164}
3165.btn-default:focus,
3166.btn-default.focus {
3167 color: #333;
3168 background-color: #e6e6e6;
3169 border-color: #8c8c8c;
3170}
3171.btn-default:hover {
3172 color: #333;
3173 background-color: #e6e6e6;
3174 border-color: #adadad;
3175}
3176.btn-default:active,
3177.btn-default.active,
3178.open > .dropdown-toggle.btn-default {
3179 color: #333;
3180 background-color: #e6e6e6;
3181 background-image: none;
3182 border-color: #adadad;
3183}
3184.btn-default:active:hover,
3185.btn-default.active:hover,
3186.open > .dropdown-toggle.btn-default:hover,
3187.btn-default:active:focus,
3188.btn-default.active:focus,
3189.open > .dropdown-toggle.btn-default:focus,
3190.btn-default:active.focus,
3191.btn-default.active.focus,
3192.open > .dropdown-toggle.btn-default.focus {
3193 color: #333;
3194 background-color: #d4d4d4;
3195 border-color: #8c8c8c;
3196}
3197.btn-default.disabled:hover,
3198.btn-default[disabled]:hover,
3199fieldset[disabled] .btn-default:hover,
3200.btn-default.disabled:focus,
3201.btn-default[disabled]:focus,
3202fieldset[disabled] .btn-default:focus,
3203.btn-default.disabled.focus,
3204.btn-default[disabled].focus,
3205fieldset[disabled] .btn-default.focus {
3206 background-color: #fff;
3207 border-color: #ccc;
3208}
3209.btn-default .badge {
3210 color: #fff;
3211 background-color: #333;
3212}
3213.btn-primary {
3214 color: #fff;
3215 background-color: #337ab7;
3216 border-color: #2e6da4;
3217}
3218.btn-primary:focus,
3219.btn-primary.focus {
3220 color: #fff;
3221 background-color: #286090;
3222 border-color: #122b40;
3223}
3224.btn-primary:hover {
3225 color: #fff;
3226 background-color: #286090;
3227 border-color: #204d74;
3228}
3229.btn-primary:active,
3230.btn-primary.active,
3231.open > .dropdown-toggle.btn-primary {
3232 color: #fff;
3233 background-color: #286090;
3234 background-image: none;
3235 border-color: #204d74;
3236}
3237.btn-primary:active:hover,
3238.btn-primary.active:hover,
3239.open > .dropdown-toggle.btn-primary:hover,
3240.btn-primary:active:focus,
3241.btn-primary.active:focus,
3242.open > .dropdown-toggle.btn-primary:focus,
3243.btn-primary:active.focus,
3244.btn-primary.active.focus,
3245.open > .dropdown-toggle.btn-primary.focus {
3246 color: #fff;
3247 background-color: #204d74;
3248 border-color: #122b40;
3249}
3250.btn-primary.disabled:hover,
3251.btn-primary[disabled]:hover,
3252fieldset[disabled] .btn-primary:hover,
3253.btn-primary.disabled:focus,
3254.btn-primary[disabled]:focus,
3255fieldset[disabled] .btn-primary:focus,
3256.btn-primary.disabled.focus,
3257.btn-primary[disabled].focus,
3258fieldset[disabled] .btn-primary.focus {
3259 background-color: #337ab7;
3260 border-color: #2e6da4;
3261}
3262.btn-primary .badge {
3263 color: #337ab7;
3264 background-color: #fff;
3265}
3266.btn-success {
3267 color: #fff;
3268 background-color: #5cb85c;
3269 border-color: #4cae4c;
3270}
3271.btn-success:focus,
3272.btn-success.focus {
3273 color: #fff;
3274 background-color: #449d44;
3275 border-color: #255625;
3276}
3277.btn-success:hover {
3278 color: #fff;
3279 background-color: #449d44;
3280 border-color: #398439;
3281}
3282.btn-success:active,
3283.btn-success.active,
3284.open > .dropdown-toggle.btn-success {
3285 color: #fff;
3286 background-color: #449d44;
3287 background-image: none;
3288 border-color: #398439;
3289}
3290.btn-success:active:hover,
3291.btn-success.active:hover,
3292.open > .dropdown-toggle.btn-success:hover,
3293.btn-success:active:focus,
3294.btn-success.active:focus,
3295.open > .dropdown-toggle.btn-success:focus,
3296.btn-success:active.focus,
3297.btn-success.active.focus,
3298.open > .dropdown-toggle.btn-success.focus {
3299 color: #fff;
3300 background-color: #398439;
3301 border-color: #255625;
3302}
3303.btn-success.disabled:hover,
3304.btn-success[disabled]:hover,
3305fieldset[disabled] .btn-success:hover,
3306.btn-success.disabled:focus,
3307.btn-success[disabled]:focus,
3308fieldset[disabled] .btn-success:focus,
3309.btn-success.disabled.focus,
3310.btn-success[disabled].focus,
3311fieldset[disabled] .btn-success.focus {
3312 background-color: #5cb85c;
3313 border-color: #4cae4c;
3314}
3315.btn-success .badge {
3316 color: #5cb85c;
3317 background-color: #fff;
3318}
3319.btn-info {
3320 color: #fff;
3321 background-color: #5bc0de;
3322 border-color: #46b8da;
3323}
3324.btn-info:focus,
3325.btn-info.focus {
3326 color: #fff;
3327 background-color: #31b0d5;
3328 border-color: #1b6d85;
3329}
3330.btn-info:hover {
3331 color: #fff;
3332 background-color: #31b0d5;
3333 border-color: #269abc;
3334}
3335.btn-info:active,
3336.btn-info.active,
3337.open > .dropdown-toggle.btn-info {
3338 color: #fff;
3339 background-color: #31b0d5;
3340 background-image: none;
3341 border-color: #269abc;
3342}
3343.btn-info:active:hover,
3344.btn-info.active:hover,
3345.open > .dropdown-toggle.btn-info:hover,
3346.btn-info:active:focus,
3347.btn-info.active:focus,
3348.open > .dropdown-toggle.btn-info:focus,
3349.btn-info:active.focus,
3350.btn-info.active.focus,
3351.open > .dropdown-toggle.btn-info.focus {
3352 color: #fff;
3353 background-color: #269abc;
3354 border-color: #1b6d85;
3355}
3356.btn-info.disabled:hover,
3357.btn-info[disabled]:hover,
3358fieldset[disabled] .btn-info:hover,
3359.btn-info.disabled:focus,
3360.btn-info[disabled]:focus,
3361fieldset[disabled] .btn-info:focus,
3362.btn-info.disabled.focus,
3363.btn-info[disabled].focus,
3364fieldset[disabled] .btn-info.focus {
3365 background-color: #5bc0de;
3366 border-color: #46b8da;
3367}
3368.btn-info .badge {
3369 color: #5bc0de;
3370 background-color: #fff;
3371}
3372.btn-warning {
3373 color: #fff;
3374 background-color: #f0ad4e;
3375 border-color: #eea236;
3376}
3377.btn-warning:focus,
3378.btn-warning.focus {
3379 color: #fff;
3380 background-color: #ec971f;
3381 border-color: #985f0d;
3382}
3383.btn-warning:hover {
3384 color: #fff;
3385 background-color: #ec971f;
3386 border-color: #d58512;
3387}
3388.btn-warning:active,
3389.btn-warning.active,
3390.open > .dropdown-toggle.btn-warning {
3391 color: #fff;
3392 background-color: #ec971f;
3393 background-image: none;
3394 border-color: #d58512;
3395}
3396.btn-warning:active:hover,
3397.btn-warning.active:hover,
3398.open > .dropdown-toggle.btn-warning:hover,
3399.btn-warning:active:focus,
3400.btn-warning.active:focus,
3401.open > .dropdown-toggle.btn-warning:focus,
3402.btn-warning:active.focus,
3403.btn-warning.active.focus,
3404.open > .dropdown-toggle.btn-warning.focus {
3405 color: #fff;
3406 background-color: #d58512;
3407 border-color: #985f0d;
3408}
3409.btn-warning.disabled:hover,
3410.btn-warning[disabled]:hover,
3411fieldset[disabled] .btn-warning:hover,
3412.btn-warning.disabled:focus,
3413.btn-warning[disabled]:focus,
3414fieldset[disabled] .btn-warning:focus,
3415.btn-warning.disabled.focus,
3416.btn-warning[disabled].focus,
3417fieldset[disabled] .btn-warning.focus {
3418 background-color: #f0ad4e;
3419 border-color: #eea236;
3420}
3421.btn-warning .badge {
3422 color: #f0ad4e;
3423 background-color: #fff;
3424}
3425.btn-danger {
3426 color: #fff;
3427 background-color: #d9534f;
3428 border-color: #d43f3a;
3429}
3430.btn-danger:focus,
3431.btn-danger.focus {
3432 color: #fff;
3433 background-color: #c9302c;
3434 border-color: #761c19;
3435}
3436.btn-danger:hover {
3437 color: #fff;
3438 background-color: #c9302c;
3439 border-color: #ac2925;
3440}
3441.btn-danger:active,
3442.btn-danger.active,
3443.open > .dropdown-toggle.btn-danger {
3444 color: #fff;
3445 background-color: #c9302c;
3446 background-image: none;
3447 border-color: #ac2925;
3448}
3449.btn-danger:active:hover,
3450.btn-danger.active:hover,
3451.open > .dropdown-toggle.btn-danger:hover,
3452.btn-danger:active:focus,
3453.btn-danger.active:focus,
3454.open > .dropdown-toggle.btn-danger:focus,
3455.btn-danger:active.focus,
3456.btn-danger.active.focus,
3457.open > .dropdown-toggle.btn-danger.focus {
3458 color: #fff;
3459 background-color: #ac2925;
3460 border-color: #761c19;
3461}
3462.btn-danger.disabled:hover,
3463.btn-danger[disabled]:hover,
3464fieldset[disabled] .btn-danger:hover,
3465.btn-danger.disabled:focus,
3466.btn-danger[disabled]:focus,
3467fieldset[disabled] .btn-danger:focus,
3468.btn-danger.disabled.focus,
3469.btn-danger[disabled].focus,
3470fieldset[disabled] .btn-danger.focus {
3471 background-color: #d9534f;
3472 border-color: #d43f3a;
3473}
3474.btn-danger .badge {
3475 color: #d9534f;
3476 background-color: #fff;
3477}
3478.btn-link {
3479 font-weight: 400;
3480 color: #337ab7;
3481 border-radius: 0;
3482}
3483.btn-link,
3484.btn-link:active,
3485.btn-link.active,
3486.btn-link[disabled],
3487fieldset[disabled] .btn-link {
3488 background-color: transparent;
3489 -webkit-box-shadow: none;
3490 box-shadow: none;
3491}
3492.btn-link,
3493.btn-link:hover,
3494.btn-link:focus,
3495.btn-link:active {
3496 border-color: transparent;
3497}
3498.btn-link:hover,
3499.btn-link:focus {
3500 color: #23527c;
3501 text-decoration: underline;
3502 background-color: transparent;
3503}
3504.btn-link[disabled]:hover,
3505fieldset[disabled] .btn-link:hover,
3506.btn-link[disabled]:focus,
3507fieldset[disabled] .btn-link:focus {
3508 color: #777777;
3509 text-decoration: none;
3510}
3511.btn-lg,
3512.btn-group-lg > .btn {
3513 padding: 10px 16px;
3514 font-size: 18px;
3515 line-height: 1.3333333;
3516 border-radius: 6px;
3517}
3518.btn-sm,
3519.btn-group-sm > .btn {
3520 padding: 5px 10px;
3521 font-size: 12px;
3522 line-height: 1.5;
3523 border-radius: 3px;
3524}
3525.btn-xs,
3526.btn-group-xs > .btn {
3527 padding: 1px 5px;
3528 font-size: 12px;
3529 line-height: 1.5;
3530 border-radius: 3px;
3531}
3532.btn-block {
3533 display: block;
3534 width: 100%;
3535}
3536.btn-block + .btn-block {
3537 margin-top: 5px;
3538}
3539input[type="submit"].btn-block,
3540input[type="reset"].btn-block,
3541input[type="button"].btn-block {
3542 width: 100%;
3543}
3544.fade {
3545 opacity: 0;
3546 -webkit-transition: opacity 0.15s linear;
3547 -o-transition: opacity 0.15s linear;
3548 transition: opacity 0.15s linear;
3549}
3550.fade.in {
3551 opacity: 1;
3552}
3553.collapse {
3554 display: none;
3555}
3556.collapse.in {
3557 display: block;
3558}
3559tr.collapse.in {
3560 display: table-row;
3561}
3562tbody.collapse.in {
3563 display: table-row-group;
3564}
3565.collapsing {
3566 position: relative;
3567 height: 0;
3568 overflow: hidden;
3569 -webkit-transition-property: height, visibility;
3570 -o-transition-property: height, visibility;
3571 transition-property: height, visibility;
3572 -webkit-transition-duration: 0.35s;
3573 -o-transition-duration: 0.35s;
3574 transition-duration: 0.35s;
3575 -webkit-transition-timing-function: ease;
3576 -o-transition-timing-function: ease;
3577 transition-timing-function: ease;
3578}
3579.caret {
3580 display: inline-block;
3581 width: 0;
3582 height: 0;
3583 margin-left: 2px;
3584 vertical-align: middle;
3585 border-top: 4px dashed;
3586 border-top: 4px solid \9;
3587 border-right: 4px solid transparent;
3588 border-left: 4px solid transparent;
3589}
3590.dropup,
3591.dropdown {
3592 position: relative;
3593}
3594.dropdown-toggle:focus {
3595 outline: 0;
3596}
3597.dropdown-menu {
3598 position: absolute;
3599 top: 100%;
3600 left: 0;
3601 z-index: 1000;
3602 display: none;
3603 float: left;
3604 min-width: 160px;
3605 padding: 5px 0;
3606 margin: 2px 0 0;
3607 font-size: 14px;
3608 text-align: left;
3609 list-style: none;
3610 background-color: #fff;
3611 background-clip: padding-box;
3612 border: 1px solid #ccc;
3613 border: 1px solid rgba(0, 0, 0, 0.15);
3614 border-radius: 4px;
3615 -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
3616 box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
3617}
3618.dropdown-menu.pull-right {
3619 right: 0;
3620 left: auto;
3621}
3622.dropdown-menu .divider {
3623 height: 1px;
3624 margin: 9px 0;
3625 overflow: hidden;
3626 background-color: #e5e5e5;
3627}
3628.dropdown-menu > li > a {
3629 display: block;
3630 padding: 3px 20px;
3631 clear: both;
3632 font-weight: 400;
3633 line-height: 1.42857143;
3634 color: #333333;
3635 white-space: nowrap;
3636}
3637.dropdown-menu > li > a:hover,
3638.dropdown-menu > li > a:focus {
3639 color: #262626;
3640 text-decoration: none;
3641 background-color: #f5f5f5;
3642}
3643.dropdown-menu > .active > a,
3644.dropdown-menu > .active > a:hover,
3645.dropdown-menu > .active > a:focus {
3646 color: #fff;
3647 text-decoration: none;
3648 background-color: #337ab7;
3649 outline: 0;
3650}
3651.dropdown-menu > .disabled > a,
3652.dropdown-menu > .disabled > a:hover,
3653.dropdown-menu > .disabled > a:focus {
3654 color: #777777;
3655}
3656.dropdown-menu > .disabled > a:hover,
3657.dropdown-menu > .disabled > a:focus {
3658 text-decoration: none;
3659 cursor: not-allowed;
3660 background-color: transparent;
3661 background-image: none;
3662 filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
3663}
3664.open > .dropdown-menu {
3665 display: block;
3666}
3667.open > a {
3668 outline: 0;
3669}
3670.dropdown-menu-right {
3671 right: 0;
3672 left: auto;
3673}
3674.dropdown-menu-left {
3675 right: auto;
3676 left: 0;
3677}
3678.dropdown-header {
3679 display: block;
3680 padding: 3px 20px;
3681 font-size: 12px;
3682 line-height: 1.42857143;
3683 color: #777777;
3684 white-space: nowrap;
3685}
3686.dropdown-backdrop {
3687 position: fixed;
3688 top: 0;
3689 right: 0;
3690 bottom: 0;
3691 left: 0;
3692 z-index: 990;
3693}
3694.pull-right > .dropdown-menu {
3695 right: 0;
3696 left: auto;
3697}
3698.dropup .caret,
3699.navbar-fixed-bottom .dropdown .caret {
3700 content: "";
3701 border-top: 0;
3702 border-bottom: 4px dashed;
3703 border-bottom: 4px solid \9;
3704}
3705.dropup .dropdown-menu,
3706.navbar-fixed-bottom .dropdown .dropdown-menu {
3707 top: auto;
3708 bottom: 100%;
3709 margin-bottom: 2px;
3710}
3711@media (min-width: 768px) {
3712 .navbar-right .dropdown-menu {
3713 right: 0;
3714 left: auto;
3715 }
3716 .navbar-right .dropdown-menu-left {
3717 right: auto;
3718 left: 0;
3719 }
3720}
3721.btn-group,
3722.btn-group-vertical {
3723 position: relative;
3724 display: inline-block;
3725 vertical-align: middle;
3726}
3727.btn-group > .btn,
3728.btn-group-vertical > .btn {
3729 position: relative;
3730 float: left;
3731}
3732.btn-group > .btn:hover,
3733.btn-group-vertical > .btn:hover,
3734.btn-group > .btn:focus,
3735.btn-group-vertical > .btn:focus,
3736.btn-group > .btn:active,
3737.btn-group-vertical > .btn:active,
3738.btn-group > .btn.active,
3739.btn-group-vertical > .btn.active {
3740 z-index: 2;
3741}
3742.btn-group .btn + .btn,
3743.btn-group .btn + .btn-group,
3744.btn-group .btn-group + .btn,
3745.btn-group .btn-group + .btn-group {
3746 margin-left: -1px;
3747}
3748.btn-toolbar {
3749 margin-left: -5px;
3750}
3751.btn-toolbar .btn,
3752.btn-toolbar .btn-group,
3753.btn-toolbar .input-group {
3754 float: left;
3755}
3756.btn-toolbar > .btn,
3757.btn-toolbar > .btn-group,
3758.btn-toolbar > .input-group {
3759 margin-left: 5px;
3760}
3761.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
3762 border-radius: 0;
3763}
3764.btn-group > .btn:first-child {
3765 margin-left: 0;
3766}
3767.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
3768 border-top-right-radius: 0;
3769 border-bottom-right-radius: 0;
3770}
3771.btn-group > .btn:last-child:not(:first-child),
3772.btn-group > .dropdown-toggle:not(:first-child) {
3773 border-top-left-radius: 0;
3774 border-bottom-left-radius: 0;
3775}
3776.btn-group > .btn-group {
3777 float: left;
3778}
3779.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
3780 border-radius: 0;
3781}
3782.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
3783.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
3784 border-top-right-radius: 0;
3785 border-bottom-right-radius: 0;
3786}
3787.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
3788 border-top-left-radius: 0;
3789 border-bottom-left-radius: 0;
3790}
3791.btn-group .dropdown-toggle:active,
3792.btn-group.open .dropdown-toggle {
3793 outline: 0;
3794}
3795.btn-group > .btn + .dropdown-toggle {
3796 padding-right: 8px;
3797 padding-left: 8px;
3798}
3799.btn-group > .btn-lg + .dropdown-toggle {
3800 padding-right: 12px;
3801 padding-left: 12px;
3802}
3803.btn-group.open .dropdown-toggle {
3804 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3805 box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3806}
3807.btn-group.open .dropdown-toggle.btn-link {
3808 -webkit-box-shadow: none;
3809 box-shadow: none;
3810}
3811.btn .caret {
3812 margin-left: 0;
3813}
3814.btn-lg .caret {
3815 border-width: 5px 5px 0;
3816 border-bottom-width: 0;
3817}
3818.dropup .btn-lg .caret {
3819 border-width: 0 5px 5px;
3820}
3821.btn-group-vertical > .btn,
3822.btn-group-vertical > .btn-group,
3823.btn-group-vertical > .btn-group > .btn {
3824 display: block;
3825 float: none;
3826 width: 100%;
3827 max-width: 100%;
3828}
3829.btn-group-vertical > .btn-group > .btn {
3830 float: none;
3831}
3832.btn-group-vertical > .btn + .btn,
3833.btn-group-vertical > .btn + .btn-group,
3834.btn-group-vertical > .btn-group + .btn,
3835.btn-group-vertical > .btn-group + .btn-group {
3836 margin-top: -1px;
3837 margin-left: 0;
3838}
3839.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
3840 border-radius: 0;
3841}
3842.btn-group-vertical > .btn:first-child:not(:last-child) {
3843 border-top-left-radius: 4px;
3844 border-top-right-radius: 4px;
3845 border-bottom-right-radius: 0;
3846 border-bottom-left-radius: 0;
3847}
3848.btn-group-vertical > .btn:last-child:not(:first-child) {
3849 border-top-left-radius: 0;
3850 border-top-right-radius: 0;
3851 border-bottom-right-radius: 4px;
3852 border-bottom-left-radius: 4px;
3853}
3854.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
3855 border-radius: 0;
3856}
3857.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
3858.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
3859 border-bottom-right-radius: 0;
3860 border-bottom-left-radius: 0;
3861}
3862.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
3863 border-top-left-radius: 0;
3864 border-top-right-radius: 0;
3865}
3866.btn-group-justified {
3867 display: table;
3868 width: 100%;
3869 table-layout: fixed;
3870 border-collapse: separate;
3871}
3872.btn-group-justified > .btn,
3873.btn-group-justified > .btn-group {
3874 display: table-cell;
3875 float: none;
3876 width: 1%;
3877}
3878.btn-group-justified > .btn-group .btn {
3879 width: 100%;
3880}
3881.btn-group-justified > .btn-group .dropdown-menu {
3882 left: auto;
3883}
3884[data-toggle="buttons"] > .btn input[type="radio"],
3885[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
3886[data-toggle="buttons"] > .btn input[type="checkbox"],
3887[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
3888 position: absolute;
3889 clip: rect(0, 0, 0, 0);
3890 pointer-events: none;
3891}
3892.input-group {
3893 position: relative;
3894 display: table;
3895 border-collapse: separate;
3896}
3897.input-group[class*="col-"] {
3898 float: none;
3899 padding-right: 0;
3900 padding-left: 0;
3901}
3902.input-group .form-control {
3903 position: relative;
3904 z-index: 2;
3905 float: left;
3906 width: 100%;
3907 margin-bottom: 0;
3908}
3909.input-group .form-control:focus {
3910 z-index: 3;
3911}
3912.input-group-lg > .form-control,
3913.input-group-lg > .input-group-addon,
3914.input-group-lg > .input-group-btn > .btn {
3915 height: 46px;
3916 padding: 10px 16px;
3917 font-size: 18px;
3918 line-height: 1.3333333;
3919 border-radius: 6px;
3920}
3921select.input-group-lg > .form-control,
3922select.input-group-lg > .input-group-addon,
3923select.input-group-lg > .input-group-btn > .btn {
3924 height: 46px;
3925 line-height: 46px;
3926}
3927textarea.input-group-lg > .form-control,
3928textarea.input-group-lg > .input-group-addon,
3929textarea.input-group-lg > .input-group-btn > .btn,
3930select[multiple].input-group-lg > .form-control,
3931select[multiple].input-group-lg > .input-group-addon,
3932select[multiple].input-group-lg > .input-group-btn > .btn {
3933 height: auto;
3934}
3935.input-group-sm > .form-control,
3936.input-group-sm > .input-group-addon,
3937.input-group-sm > .input-group-btn > .btn {
3938 height: 30px;
3939 padding: 5px 10px;
3940 font-size: 12px;
3941 line-height: 1.5;
3942 border-radius: 3px;
3943}
3944select.input-group-sm > .form-control,
3945select.input-group-sm > .input-group-addon,
3946select.input-group-sm > .input-group-btn > .btn {
3947 height: 30px;
3948 line-height: 30px;
3949}
3950textarea.input-group-sm > .form-control,
3951textarea.input-group-sm > .input-group-addon,
3952textarea.input-group-sm > .input-group-btn > .btn,
3953select[multiple].input-group-sm > .form-control,
3954select[multiple].input-group-sm > .input-group-addon,
3955select[multiple].input-group-sm > .input-group-btn > .btn {
3956 height: auto;
3957}
3958.input-group-addon,
3959.input-group-btn,
3960.input-group .form-control {
3961 display: table-cell;
3962}
3963.input-group-addon:not(:first-child):not(:last-child),
3964.input-group-btn:not(:first-child):not(:last-child),
3965.input-group .form-control:not(:first-child):not(:last-child) {
3966 border-radius: 0;
3967}
3968.input-group-addon,
3969.input-group-btn {
3970 width: 1%;
3971 white-space: nowrap;
3972 vertical-align: middle;
3973}
3974.input-group-addon {
3975 padding: 6px 12px;
3976 font-size: 14px;
3977 font-weight: 400;
3978 line-height: 1;
3979 color: #555555;
3980 text-align: center;
3981 background-color: #eeeeee;
3982 border: 1px solid #ccc;
3983 border-radius: 4px;
3984}
3985.input-group-addon.input-sm {
3986 padding: 5px 10px;
3987 font-size: 12px;
3988 border-radius: 3px;
3989}
3990.input-group-addon.input-lg {
3991 padding: 10px 16px;
3992 font-size: 18px;
3993 border-radius: 6px;
3994}
3995.input-group-addon input[type="radio"],
3996.input-group-addon input[type="checkbox"] {
3997 margin-top: 0;
3998}
3999.input-group .form-control:first-child,
4000.input-group-addon:first-child,
4001.input-group-btn:first-child > .btn,
4002.input-group-btn:first-child > .btn-group > .btn,
4003.input-group-btn:first-child > .dropdown-toggle,
4004.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
4005.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
4006 border-top-right-radius: 0;
4007 border-bottom-right-radius: 0;
4008}
4009.input-group-addon:first-child {
4010 border-right: 0;
4011}
4012.input-group .form-control:last-child,
4013.input-group-addon:last-child,
4014.input-group-btn:last-child > .btn,
4015.input-group-btn:last-child > .btn-group > .btn,
4016.input-group-btn:last-child > .dropdown-toggle,
4017.input-group-btn:first-child > .btn:not(:first-child),
4018.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
4019 border-top-left-radius: 0;
4020 border-bottom-left-radius: 0;
4021}
4022.input-group-addon:last-child {
4023 border-left: 0;
4024}
4025.input-group-btn {
4026 position: relative;
4027 font-size: 0;
4028 white-space: nowrap;
4029}
4030.input-group-btn > .btn {
4031 position: relative;
4032}
4033.input-group-btn > .btn + .btn {
4034 margin-left: -1px;
4035}
4036.input-group-btn > .btn:hover,
4037.input-group-btn > .btn:focus,
4038.input-group-btn > .btn:active {
4039 z-index: 2;
4040}
4041.input-group-btn:first-child > .btn,
4042.input-group-btn:first-child > .btn-group {
4043 margin-right: -1px;
4044}
4045.input-group-btn:last-child > .btn,
4046.input-group-btn:last-child > .btn-group {
4047 z-index: 2;
4048 margin-left: -1px;
4049}
4050.nav {
4051 padding-left: 0;
4052 margin-bottom: 0;
4053 list-style: none;
4054}
4055.nav > li {
4056 position: relative;
4057 display: block;
4058}
4059.nav > li > a {
4060 position: relative;
4061 display: block;
4062 padding: 10px 15px;
4063}
4064.nav > li > a:hover,
4065.nav > li > a:focus {
4066 text-decoration: none;
4067 background-color: #eeeeee;
4068}
4069.nav > li.disabled > a {
4070 color: #777777;
4071}
4072.nav > li.disabled > a:hover,
4073.nav > li.disabled > a:focus {
4074 color: #777777;
4075 text-decoration: none;
4076 cursor: not-allowed;
4077 background-color: transparent;
4078}
4079.nav .open > a,
4080.nav .open > a:hover,
4081.nav .open > a:focus {
4082 background-color: #eeeeee;
4083 border-color: #337ab7;
4084}
4085.nav .nav-divider {
4086 height: 1px;
4087 margin: 9px 0;
4088 overflow: hidden;
4089 background-color: #e5e5e5;
4090}
4091.nav > li > a > img {
4092 max-width: none;
4093}
4094.nav-tabs {
4095 border-bottom: 1px solid #ddd;
4096}
4097.nav-tabs > li {
4098 float: left;
4099 margin-bottom: -1px;
4100}
4101.nav-tabs > li > a {
4102 margin-right: 2px;
4103 line-height: 1.42857143;
4104 border: 1px solid transparent;
4105 border-radius: 4px 4px 0 0;
4106}
4107.nav-tabs > li > a:hover {
4108 border-color: #eeeeee #eeeeee #ddd;
4109}
4110.nav-tabs > li.active > a,
4111.nav-tabs > li.active > a:hover,
4112.nav-tabs > li.active > a:focus {
4113 color: #555555;
4114 cursor: default;
4115 background-color: #fff;
4116 border: 1px solid #ddd;
4117 border-bottom-color: transparent;
4118}
4119.nav-tabs.nav-justified {
4120 width: 100%;
4121 border-bottom: 0;
4122}
4123.nav-tabs.nav-justified > li {
4124 float: none;
4125}
4126.nav-tabs.nav-justified > li > a {
4127 margin-bottom: 5px;
4128 text-align: center;
4129}
4130.nav-tabs.nav-justified > .dropdown .dropdown-menu {
4131 top: auto;
4132 left: auto;
4133}
4134@media (min-width: 768px) {
4135 .nav-tabs.nav-justified > li {
4136 display: table-cell;
4137 width: 1%;
4138 }
4139 .nav-tabs.nav-justified > li > a {
4140 margin-bottom: 0;
4141 }
4142}
4143.nav-tabs.nav-justified > li > a {
4144 margin-right: 0;
4145 border-radius: 4px;
4146}
4147.nav-tabs.nav-justified > .active > a,
4148.nav-tabs.nav-justified > .active > a:hover,
4149.nav-tabs.nav-justified > .active > a:focus {
4150 border: 1px solid #ddd;
4151}
4152@media (min-width: 768px) {
4153 .nav-tabs.nav-justified > li > a {
4154 border-bottom: 1px solid #ddd;
4155 border-radius: 4px 4px 0 0;
4156 }
4157 .nav-tabs.nav-justified > .active > a,
4158 .nav-tabs.nav-justified > .active > a:hover,
4159 .nav-tabs.nav-justified > .active > a:focus {
4160 border-bottom-color: #fff;
4161 }
4162}
4163.nav-pills > li {
4164 float: left;
4165}
4166.nav-pills > li > a {
4167 border-radius: 4px;
4168}
4169.nav-pills > li + li {
4170 margin-left: 2px;
4171}
4172.nav-pills > li.active > a,
4173.nav-pills > li.active > a:hover,
4174.nav-pills > li.active > a:focus {
4175 color: #fff;
4176 background-color: #337ab7;
4177}
4178.nav-stacked > li {
4179 float: none;
4180}
4181.nav-stacked > li + li {
4182 margin-top: 2px;
4183 margin-left: 0;
4184}
4185.nav-justified {
4186 width: 100%;
4187}
4188.nav-justified > li {
4189 float: none;
4190}
4191.nav-justified > li > a {
4192 margin-bottom: 5px;
4193 text-align: center;
4194}
4195.nav-justified > .dropdown .dropdown-menu {
4196 top: auto;
4197 left: auto;
4198}
4199@media (min-width: 768px) {
4200 .nav-justified > li {
4201 display: table-cell;
4202 width: 1%;
4203 }
4204 .nav-justified > li > a {
4205 margin-bottom: 0;
4206 }
4207}
4208.nav-tabs-justified {
4209 border-bottom: 0;
4210}
4211.nav-tabs-justified > li > a {
4212 margin-right: 0;
4213 border-radius: 4px;
4214}
4215.nav-tabs-justified > .active > a,
4216.nav-tabs-justified > .active > a:hover,
4217.nav-tabs-justified > .active > a:focus {
4218 border: 1px solid #ddd;
4219}
4220@media (min-width: 768px) {
4221 .nav-tabs-justified > li > a {
4222 border-bottom: 1px solid #ddd;
4223 border-radius: 4px 4px 0 0;
4224 }
4225 .nav-tabs-justified > .active > a,
4226 .nav-tabs-justified > .active > a:hover,
4227 .nav-tabs-justified > .active > a:focus {
4228 border-bottom-color: #fff;
4229 }
4230}
4231.tab-content > .tab-pane {
4232 display: none;
4233}
4234.tab-content > .active {
4235 display: block;
4236}
4237.nav-tabs .dropdown-menu {
4238 margin-top: -1px;
4239 border-top-left-radius: 0;
4240 border-top-right-radius: 0;
4241}
4242.navbar {
4243 position: relative;
4244 min-height: 50px;
4245 margin-bottom: 20px;
4246 border: 1px solid transparent;
4247}
4248@media (min-width: 768px) {
4249 .navbar {
4250 border-radius: 4px;
4251 }
4252}
4253@media (min-width: 768px) {
4254 .navbar-header {
4255 float: left;
4256 }
4257}
4258.navbar-collapse {
4259 padding-right: 15px;
4260 padding-left: 15px;
4261 overflow-x: visible;
4262 border-top: 1px solid transparent;
4263 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
4264 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
4265 -webkit-overflow-scrolling: touch;
4266}
4267.navbar-collapse.in {
4268 overflow-y: auto;
4269}
4270@media (min-width: 768px) {
4271 .navbar-collapse {
4272 width: auto;
4273 border-top: 0;
4274 -webkit-box-shadow: none;
4275 box-shadow: none;
4276 }
4277 .navbar-collapse.collapse {
4278 display: block !important;
4279 height: auto !important;
4280 padding-bottom: 0;
4281 overflow: visible !important;
4282 }
4283 .navbar-collapse.in {
4284 overflow-y: visible;
4285 }
4286 .navbar-fixed-top .navbar-collapse,
4287 .navbar-static-top .navbar-collapse,
4288 .navbar-fixed-bottom .navbar-collapse {
4289 padding-right: 0;
4290 padding-left: 0;
4291 }
4292}
4293.navbar-fixed-top,
4294.navbar-fixed-bottom {
4295 position: fixed;
4296 right: 0;
4297 left: 0;
4298 z-index: 1030;
4299}
4300.navbar-fixed-top .navbar-collapse,
4301.navbar-fixed-bottom .navbar-collapse {
4302 max-height: 340px;
4303}
4304@media (max-device-width: 480px) and (orientation: landscape) {
4305 .navbar-fixed-top .navbar-collapse,
4306 .navbar-fixed-bottom .navbar-collapse {
4307 max-height: 200px;
4308 }
4309}
4310@media (min-width: 768px) {
4311 .navbar-fixed-top,
4312 .navbar-fixed-bottom {
4313 border-radius: 0;
4314 }
4315}
4316.navbar-fixed-top {
4317 top: 0;
4318 border-width: 0 0 1px;
4319}
4320.navbar-fixed-bottom {
4321 bottom: 0;
4322 margin-bottom: 0;
4323 border-width: 1px 0 0;
4324}
4325.container > .navbar-header,
4326.container-fluid > .navbar-header,
4327.container > .navbar-collapse,
4328.container-fluid > .navbar-collapse {
4329 margin-right: -15px;
4330 margin-left: -15px;
4331}
4332@media (min-width: 768px) {
4333 .container > .navbar-header,
4334 .container-fluid > .navbar-header,
4335 .container > .navbar-collapse,
4336 .container-fluid > .navbar-collapse {
4337 margin-right: 0;
4338 margin-left: 0;
4339 }
4340}
4341.navbar-static-top {
4342 z-index: 1000;
4343 border-width: 0 0 1px;
4344}
4345@media (min-width: 768px) {
4346 .navbar-static-top {
4347 border-radius: 0;
4348 }
4349}
4350.navbar-brand {
4351 float: left;
4352 height: 50px;
4353 padding: 15px 15px;
4354 font-size: 18px;
4355 line-height: 20px;
4356}
4357.navbar-brand:hover,
4358.navbar-brand:focus {
4359 text-decoration: none;
4360}
4361.navbar-brand > img {
4362 display: block;
4363}
4364@media (min-width: 768px) {
4365 .navbar > .container .navbar-brand,
4366 .navbar > .container-fluid .navbar-brand {
4367 margin-left: -15px;
4368 }
4369}
4370.navbar-toggle {
4371 position: relative;
4372 float: right;
4373 padding: 9px 10px;
4374 margin-right: 15px;
4375 margin-top: 8px;
4376 margin-bottom: 8px;
4377 background-color: transparent;
4378 background-image: none;
4379 border: 1px solid transparent;
4380 border-radius: 4px;
4381}
4382.navbar-toggle:focus {
4383 outline: 0;
4384}
4385.navbar-toggle .icon-bar {
4386 display: block;
4387 width: 22px;
4388 height: 2px;
4389 border-radius: 1px;
4390}
4391.navbar-toggle .icon-bar + .icon-bar {
4392 margin-top: 4px;
4393}
4394@media (min-width: 768px) {
4395 .navbar-toggle {
4396 display: none;
4397 }
4398}
4399.navbar-nav {
4400 margin: 7.5px -15px;
4401}
4402.navbar-nav > li > a {
4403 padding-top: 10px;
4404 padding-bottom: 10px;
4405 line-height: 20px;
4406}
4407@media (max-width: 767px) {
4408 .navbar-nav .open .dropdown-menu {
4409 position: static;
4410 float: none;
4411 width: auto;
4412 margin-top: 0;
4413 background-color: transparent;
4414 border: 0;
4415 -webkit-box-shadow: none;
4416 box-shadow: none;
4417 }
4418 .navbar-nav .open .dropdown-menu > li > a,
4419 .navbar-nav .open .dropdown-menu .dropdown-header {
4420 padding: 5px 15px 5px 25px;
4421 }
4422 .navbar-nav .open .dropdown-menu > li > a {
4423 line-height: 20px;
4424 }
4425 .navbar-nav .open .dropdown-menu > li > a:hover,
4426 .navbar-nav .open .dropdown-menu > li > a:focus {
4427 background-image: none;
4428 }
4429}
4430@media (min-width: 768px) {
4431 .navbar-nav {
4432 float: left;
4433 margin: 0;
4434 }
4435 .navbar-nav > li {
4436 float: left;
4437 }
4438 .navbar-nav > li > a {
4439 padding-top: 15px;
4440 padding-bottom: 15px;
4441 }
4442}
4443.navbar-form {
4444 padding: 10px 15px;
4445 margin-right: -15px;
4446 margin-left: -15px;
4447 border-top: 1px solid transparent;
4448 border-bottom: 1px solid transparent;
4449 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
4450 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
4451 margin-top: 8px;
4452 margin-bottom: 8px;
4453}
4454@media (min-width: 768px) {
4455 .navbar-form .form-group {
4456 display: inline-block;
4457 margin-bottom: 0;
4458 vertical-align: middle;
4459 }
4460 .navbar-form .form-control {
4461 display: inline-block;
4462 width: auto;
4463 vertical-align: middle;
4464 }
4465 .navbar-form .form-control-static {
4466 display: inline-block;
4467 }
4468 .navbar-form .input-group {
4469 display: inline-table;
4470 vertical-align: middle;
4471 }
4472 .navbar-form .input-group .input-group-addon,
4473 .navbar-form .input-group .input-group-btn,
4474 .navbar-form .input-group .form-control {
4475 width: auto;
4476 }
4477 .navbar-form .input-group > .form-control {
4478 width: 100%;
4479 }
4480 .navbar-form .control-label {
4481 margin-bottom: 0;
4482 vertical-align: middle;
4483 }
4484 .navbar-form .radio,
4485 .navbar-form .checkbox {
4486 display: inline-block;
4487 margin-top: 0;
4488 margin-bottom: 0;
4489 vertical-align: middle;
4490 }
4491 .navbar-form .radio label,
4492 .navbar-form .checkbox label {
4493 padding-left: 0;
4494 }
4495 .navbar-form .radio input[type="radio"],
4496 .navbar-form .checkbox input[type="checkbox"] {
4497 position: relative;
4498 margin-left: 0;
4499 }
4500 .navbar-form .has-feedback .form-control-feedback {
4501 top: 0;
4502 }
4503}
4504@media (max-width: 767px) {
4505 .navbar-form .form-group {
4506 margin-bottom: 5px;
4507 }
4508 .navbar-form .form-group:last-child {
4509 margin-bottom: 0;
4510 }
4511}
4512@media (min-width: 768px) {
4513 .navbar-form {
4514 width: auto;
4515 padding-top: 0;
4516 padding-bottom: 0;
4517 margin-right: 0;
4518 margin-left: 0;
4519 border: 0;
4520 -webkit-box-shadow: none;
4521 box-shadow: none;
4522 }
4523}
4524.navbar-nav > li > .dropdown-menu {
4525 margin-top: 0;
4526 border-top-left-radius: 0;
4527 border-top-right-radius: 0;
4528}
4529.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
4530 margin-bottom: 0;
4531 border-top-left-radius: 4px;
4532 border-top-right-radius: 4px;
4533 border-bottom-right-radius: 0;
4534 border-bottom-left-radius: 0;
4535}
4536.navbar-btn {
4537 margin-top: 8px;
4538 margin-bottom: 8px;
4539}
4540.navbar-btn.btn-sm {
4541 margin-top: 10px;
4542 margin-bottom: 10px;
4543}
4544.navbar-btn.btn-xs {
4545 margin-top: 14px;
4546 margin-bottom: 14px;
4547}
4548.navbar-text {
4549 margin-top: 15px;
4550 margin-bottom: 15px;
4551}
4552@media (min-width: 768px) {
4553 .navbar-text {
4554 float: left;
4555 margin-right: 15px;
4556 margin-left: 15px;
4557 }
4558}
4559@media (min-width: 768px) {
4560 .navbar-left {
4561 float: left !important;
4562 }
4563 .navbar-right {
4564 float: right !important;
4565 margin-right: -15px;
4566 }
4567 .navbar-right ~ .navbar-right {
4568 margin-right: 0;
4569 }
4570}
4571.navbar-default {
4572 background-color: #f8f8f8;
4573 border-color: #e7e7e7;
4574}
4575.navbar-default .navbar-brand {
4576 color: #777;
4577}
4578.navbar-default .navbar-brand:hover,
4579.navbar-default .navbar-brand:focus {
4580 color: #5e5e5e;
4581 background-color: transparent;
4582}
4583.navbar-default .navbar-text {
4584 color: #777;
4585}
4586.navbar-default .navbar-nav > li > a {
4587 color: #777;
4588}
4589.navbar-default .navbar-nav > li > a:hover,
4590.navbar-default .navbar-nav > li > a:focus {
4591 color: #333;
4592 background-color: transparent;
4593}
4594.navbar-default .navbar-nav > .active > a,
4595.navbar-default .navbar-nav > .active > a:hover,
4596.navbar-default .navbar-nav > .active > a:focus {
4597 color: #555;
4598 background-color: #e7e7e7;
4599}
4600.navbar-default .navbar-nav > .disabled > a,
4601.navbar-default .navbar-nav > .disabled > a:hover,
4602.navbar-default .navbar-nav > .disabled > a:focus {
4603 color: #ccc;
4604 background-color: transparent;
4605}
4606.navbar-default .navbar-nav > .open > a,
4607.navbar-default .navbar-nav > .open > a:hover,
4608.navbar-default .navbar-nav > .open > a:focus {
4609 color: #555;
4610 background-color: #e7e7e7;
4611}
4612@media (max-width: 767px) {
4613 .navbar-default .navbar-nav .open .dropdown-menu > li > a {
4614 color: #777;
4615 }
4616 .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
4617 .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
4618 color: #333;
4619 background-color: transparent;
4620 }
4621 .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
4622 .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
4623 .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
4624 color: #555;
4625 background-color: #e7e7e7;
4626 }
4627 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
4628 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
4629 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4630 color: #ccc;
4631 background-color: transparent;
4632 }
4633}
4634.navbar-default .navbar-toggle {
4635 border-color: #ddd;
4636}
4637.navbar-default .navbar-toggle:hover,
4638.navbar-default .navbar-toggle:focus {
4639 background-color: #ddd;
4640}
4641.navbar-default .navbar-toggle .icon-bar {
4642 background-color: #888;
4643}
4644.navbar-default .navbar-collapse,
4645.navbar-default .navbar-form {
4646 border-color: #e7e7e7;
4647}
4648.navbar-default .navbar-link {
4649 color: #777;
4650}
4651.navbar-default .navbar-link:hover {
4652 color: #333;
4653}
4654.navbar-default .btn-link {
4655 color: #777;
4656}
4657.navbar-default .btn-link:hover,
4658.navbar-default .btn-link:focus {
4659 color: #333;
4660}
4661.navbar-default .btn-link[disabled]:hover,
4662fieldset[disabled] .navbar-default .btn-link:hover,
4663.navbar-default .btn-link[disabled]:focus,
4664fieldset[disabled] .navbar-default .btn-link:focus {
4665 color: #ccc;
4666}
4667.navbar-inverse {
4668 background-color: #222;
4669 border-color: #080808;
4670}
4671.navbar-inverse .navbar-brand {
4672 color: #9d9d9d;
4673}
4674.navbar-inverse .navbar-brand:hover,
4675.navbar-inverse .navbar-brand:focus {
4676 color: #fff;
4677 background-color: transparent;
4678}
4679.navbar-inverse .navbar-text {
4680 color: #9d9d9d;
4681}
4682.navbar-inverse .navbar-nav > li > a {
4683 color: #9d9d9d;
4684}
4685.navbar-inverse .navbar-nav > li > a:hover,
4686.navbar-inverse .navbar-nav > li > a:focus {
4687 color: #fff;
4688 background-color: transparent;
4689}
4690.navbar-inverse .navbar-nav > .active > a,
4691.navbar-inverse .navbar-nav > .active > a:hover,
4692.navbar-inverse .navbar-nav > .active > a:focus {
4693 color: #fff;
4694 background-color: #080808;
4695}
4696.navbar-inverse .navbar-nav > .disabled > a,
4697.navbar-inverse .navbar-nav > .disabled > a:hover,
4698.navbar-inverse .navbar-nav > .disabled > a:focus {
4699 color: #444;
4700 background-color: transparent;
4701}
4702.navbar-inverse .navbar-nav > .open > a,
4703.navbar-inverse .navbar-nav > .open > a:hover,
4704.navbar-inverse .navbar-nav > .open > a:focus {
4705 color: #fff;
4706 background-color: #080808;
4707}
4708@media (max-width: 767px) {
4709 .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
4710 border-color: #080808;
4711 }
4712 .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
4713 background-color: #080808;
4714 }
4715 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
4716 color: #9d9d9d;
4717 }
4718 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
4719 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
4720 color: #fff;
4721 background-color: transparent;
4722 }
4723 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
4724 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
4725 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
4726 color: #fff;
4727 background-color: #080808;
4728 }
4729 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
4730 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
4731 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4732 color: #444;
4733 background-color: transparent;
4734 }
4735}
4736.navbar-inverse .navbar-toggle {
4737 border-color: #333;
4738}
4739.navbar-inverse .navbar-toggle:hover,
4740.navbar-inverse .navbar-toggle:focus {
4741 background-color: #333;
4742}
4743.navbar-inverse .navbar-toggle .icon-bar {
4744 background-color: #fff;
4745}
4746.navbar-inverse .navbar-collapse,
4747.navbar-inverse .navbar-form {
4748 border-color: #101010;
4749}
4750.navbar-inverse .navbar-link {
4751 color: #9d9d9d;
4752}
4753.navbar-inverse .navbar-link:hover {
4754 color: #fff;
4755}
4756.navbar-inverse .btn-link {
4757 color: #9d9d9d;
4758}
4759.navbar-inverse .btn-link:hover,
4760.navbar-inverse .btn-link:focus {
4761 color: #fff;
4762}
4763.navbar-inverse .btn-link[disabled]:hover,
4764fieldset[disabled] .navbar-inverse .btn-link:hover,
4765.navbar-inverse .btn-link[disabled]:focus,
4766fieldset[disabled] .navbar-inverse .btn-link:focus {
4767 color: #444;
4768}
4769.breadcrumb {
4770 padding: 8px 15px;
4771 margin-bottom: 20px;
4772 list-style: none;
4773 background-color: #f5f5f5;
4774 border-radius: 4px;
4775}
4776.breadcrumb > li {
4777 display: inline-block;
4778}
4779.breadcrumb > li + li:before {
4780 padding: 0 5px;
4781 color: #ccc;
4782 content: "/\00a0";
4783}
4784.breadcrumb > .active {
4785 color: #777777;
4786}
4787.pagination {
4788 display: inline-block;
4789 padding-left: 0;
4790 margin: 20px 0;
4791 border-radius: 4px;
4792}
4793.pagination > li {
4794 display: inline;
4795}
4796.pagination > li > a,
4797.pagination > li > span {
4798 position: relative;
4799 float: left;
4800 padding: 6px 12px;
4801 margin-left: -1px;
4802 line-height: 1.42857143;
4803 color: #337ab7;
4804 text-decoration: none;
4805 background-color: #fff;
4806 border: 1px solid #ddd;
4807}
4808.pagination > li > a:hover,
4809.pagination > li > span:hover,
4810.pagination > li > a:focus,
4811.pagination > li > span:focus {
4812 z-index: 2;
4813 color: #23527c;
4814 background-color: #eeeeee;
4815 border-color: #ddd;
4816}
4817.pagination > li:first-child > a,
4818.pagination > li:first-child > span {
4819 margin-left: 0;
4820 border-top-left-radius: 4px;
4821 border-bottom-left-radius: 4px;
4822}
4823.pagination > li:last-child > a,
4824.pagination > li:last-child > span {
4825 border-top-right-radius: 4px;
4826 border-bottom-right-radius: 4px;
4827}
4828.pagination > .active > a,
4829.pagination > .active > span,
4830.pagination > .active > a:hover,
4831.pagination > .active > span:hover,
4832.pagination > .active > a:focus,
4833.pagination > .active > span:focus {
4834 z-index: 3;
4835 color: #fff;
4836 cursor: default;
4837 background-color: #337ab7;
4838 border-color: #337ab7;
4839}
4840.pagination > .disabled > span,
4841.pagination > .disabled > span:hover,
4842.pagination > .disabled > span:focus,
4843.pagination > .disabled > a,
4844.pagination > .disabled > a:hover,
4845.pagination > .disabled > a:focus {
4846 color: #777777;
4847 cursor: not-allowed;
4848 background-color: #fff;
4849 border-color: #ddd;
4850}
4851.pagination-lg > li > a,
4852.pagination-lg > li > span {
4853 padding: 10px 16px;
4854 font-size: 18px;
4855 line-height: 1.3333333;
4856}
4857.pagination-lg > li:first-child > a,
4858.pagination-lg > li:first-child > span {
4859 border-top-left-radius: 6px;
4860 border-bottom-left-radius: 6px;
4861}
4862.pagination-lg > li:last-child > a,
4863.pagination-lg > li:last-child > span {
4864 border-top-right-radius: 6px;
4865 border-bottom-right-radius: 6px;
4866}
4867.pagination-sm > li > a,
4868.pagination-sm > li > span {
4869 padding: 5px 10px;
4870 font-size: 12px;
4871 line-height: 1.5;
4872}
4873.pagination-sm > li:first-child > a,
4874.pagination-sm > li:first-child > span {
4875 border-top-left-radius: 3px;
4876 border-bottom-left-radius: 3px;
4877}
4878.pagination-sm > li:last-child > a,
4879.pagination-sm > li:last-child > span {
4880 border-top-right-radius: 3px;
4881 border-bottom-right-radius: 3px;
4882}
4883.pager {
4884 padding-left: 0;
4885 margin: 20px 0;
4886 text-align: center;
4887 list-style: none;
4888}
4889.pager li {
4890 display: inline;
4891}
4892.pager li > a,
4893.pager li > span {
4894 display: inline-block;
4895 padding: 5px 14px;
4896 background-color: #fff;
4897 border: 1px solid #ddd;
4898 border-radius: 15px;
4899}
4900.pager li > a:hover,
4901.pager li > a:focus {
4902 text-decoration: none;
4903 background-color: #eeeeee;
4904}
4905.pager .next > a,
4906.pager .next > span {
4907 float: right;
4908}
4909.pager .previous > a,
4910.pager .previous > span {
4911 float: left;
4912}
4913.pager .disabled > a,
4914.pager .disabled > a:hover,
4915.pager .disabled > a:focus,
4916.pager .disabled > span {
4917 color: #777777;
4918 cursor: not-allowed;
4919 background-color: #fff;
4920}
4921.label {
4922 display: inline;
4923 padding: 0.2em 0.6em 0.3em;
4924 font-size: 75%;
4925 font-weight: 700;
4926 line-height: 1;
4927 color: #fff;
4928 text-align: center;
4929 white-space: nowrap;
4930 vertical-align: baseline;
4931 border-radius: 0.25em;
4932}
4933a.label:hover,
4934a.label:focus {
4935 color: #fff;
4936 text-decoration: none;
4937 cursor: pointer;
4938}
4939.label:empty {
4940 display: none;
4941}
4942.btn .label {
4943 position: relative;
4944 top: -1px;
4945}
4946.label-default {
4947 background-color: #777777;
4948}
4949.label-default[href]:hover,
4950.label-default[href]:focus {
4951 background-color: #5e5e5e;
4952}
4953.label-primary {
4954 background-color: #337ab7;
4955}
4956.label-primary[href]:hover,
4957.label-primary[href]:focus {
4958 background-color: #286090;
4959}
4960.label-success {
4961 background-color: #5cb85c;
4962}
4963.label-success[href]:hover,
4964.label-success[href]:focus {
4965 background-color: #449d44;
4966}
4967.label-info {
4968 background-color: #5bc0de;
4969}
4970.label-info[href]:hover,
4971.label-info[href]:focus {
4972 background-color: #31b0d5;
4973}
4974.label-warning {
4975 background-color: #f0ad4e;
4976}
4977.label-warning[href]:hover,
4978.label-warning[href]:focus {
4979 background-color: #ec971f;
4980}
4981.label-danger {
4982 background-color: #d9534f;
4983}
4984.label-danger[href]:hover,
4985.label-danger[href]:focus {
4986 background-color: #c9302c;
4987}
4988.badge {
4989 display: inline-block;
4990 min-width: 10px;
4991 padding: 3px 7px;
4992 font-size: 12px;
4993 font-weight: bold;
4994 line-height: 1;
4995 color: #fff;
4996 text-align: center;
4997 white-space: nowrap;
4998 vertical-align: middle;
4999 background-color: #777777;
5000 border-radius: 10px;
5001}
5002.badge:empty {
5003 display: none;
5004}
5005.btn .badge {
5006 position: relative;
5007 top: -1px;
5008}
5009.btn-xs .badge,
5010.btn-group-xs > .btn .badge {
5011 top: 0;
5012 padding: 1px 5px;
5013}
5014a.badge:hover,
5015a.badge:focus {
5016 color: #fff;
5017 text-decoration: none;
5018 cursor: pointer;
5019}
5020.list-group-item.active > .badge,
5021.nav-pills > .active > a > .badge {
5022 color: #337ab7;
5023 background-color: #fff;
5024}
5025.list-group-item > .badge {
5026 float: right;
5027}
5028.list-group-item > .badge + .badge {
5029 margin-right: 5px;
5030}
5031.nav-pills > li > a > .badge {
5032 margin-left: 3px;
5033}
5034.jumbotron {
5035 padding-top: 30px;
5036 padding-bottom: 30px;
5037 margin-bottom: 30px;
5038 color: inherit;
5039 background-color: #eeeeee;
5040}
5041.jumbotron h1,
5042.jumbotron .h1 {
5043 color: inherit;
5044}
5045.jumbotron p {
5046 margin-bottom: 15px;
5047 font-size: 21px;
5048 font-weight: 200;
5049}
5050.jumbotron > hr {
5051 border-top-color: #d5d5d5;
5052}
5053.container .jumbotron,
5054.container-fluid .jumbotron {
5055 padding-right: 15px;
5056 padding-left: 15px;
5057 border-radius: 6px;
5058}
5059.jumbotron .container {
5060 max-width: 100%;
5061}
5062@media screen and (min-width: 768px) {
5063 .jumbotron {
5064 padding-top: 48px;
5065 padding-bottom: 48px;
5066 }
5067 .container .jumbotron,
5068 .container-fluid .jumbotron {
5069 padding-right: 60px;
5070 padding-left: 60px;
5071 }
5072 .jumbotron h1,
5073 .jumbotron .h1 {
5074 font-size: 63px;
5075 }
5076}
5077.thumbnail {
5078 display: block;
5079 padding: 4px;
5080 margin-bottom: 20px;
5081 line-height: 1.42857143;
5082 background-color: #fff;
5083 border: 1px solid #ddd;
5084 border-radius: 4px;
5085 -webkit-transition: border 0.2s ease-in-out;
5086 -o-transition: border 0.2s ease-in-out;
5087 transition: border 0.2s ease-in-out;
5088}
5089.thumbnail > img,
5090.thumbnail a > img {
5091 margin-right: auto;
5092 margin-left: auto;
5093}
5094a.thumbnail:hover,
5095a.thumbnail:focus,
5096a.thumbnail.active {
5097 border-color: #337ab7;
5098}
5099.thumbnail .caption {
5100 padding: 9px;
5101 color: #333333;
5102}
5103.alert {
5104 padding: 15px;
5105 margin-bottom: 20px;
5106 border: 1px solid transparent;
5107 border-radius: 4px;
5108}
5109.alert h4 {
5110 margin-top: 0;
5111 color: inherit;
5112}
5113.alert .alert-link {
5114 font-weight: bold;
5115}
5116.alert > p,
5117.alert > ul {
5118 margin-bottom: 0;
5119}
5120.alert > p + p {
5121 margin-top: 5px;
5122}
5123.alert-dismissable,
5124.alert-dismissible {
5125 padding-right: 35px;
5126}
5127.alert-dismissable .close,
5128.alert-dismissible .close {
5129 position: relative;
5130 top: -2px;
5131 right: -21px;
5132 color: inherit;
5133}
5134.alert-success {
5135 color: #3c763d;
5136 background-color: #dff0d8;
5137 border-color: #d6e9c6;
5138}
5139.alert-success hr {
5140 border-top-color: #c9e2b3;
5141}
5142.alert-success .alert-link {
5143 color: #2b542c;
5144}
5145.alert-info {
5146 color: #31708f;
5147 background-color: #d9edf7;
5148 border-color: #bce8f1;
5149}
5150.alert-info hr {
5151 border-top-color: #a6e1ec;
5152}
5153.alert-info .alert-link {
5154 color: #245269;
5155}
5156.alert-warning {
5157 color: #8a6d3b;
5158 background-color: #fcf8e3;
5159 border-color: #faebcc;
5160}
5161.alert-warning hr {
5162 border-top-color: #f7e1b5;
5163}
5164.alert-warning .alert-link {
5165 color: #66512c;
5166}
5167.alert-danger {
5168 color: #a94442;
5169 background-color: #f2dede;
5170 border-color: #ebccd1;
5171}
5172.alert-danger hr {
5173 border-top-color: #e4b9c0;
5174}
5175.alert-danger .alert-link {
5176 color: #843534;
5177}
5178@-webkit-keyframes progress-bar-stripes {
5179 from {
5180 background-position: 40px 0;
5181 }
5182 to {
5183 background-position: 0 0;
5184 }
5185}
5186@-o-keyframes progress-bar-stripes {
5187 from {
5188 background-position: 40px 0;
5189 }
5190 to {
5191 background-position: 0 0;
5192 }
5193}
5194@keyframes progress-bar-stripes {
5195 from {
5196 background-position: 40px 0;
5197 }
5198 to {
5199 background-position: 0 0;
5200 }
5201}
5202.progress {
5203 height: 20px;
5204 margin-bottom: 20px;
5205 overflow: hidden;
5206 background-color: #f5f5f5;
5207 border-radius: 4px;
5208 -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
5209 box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
5210}
5211.progress-bar {
5212 float: left;
5213 width: 0%;
5214 height: 100%;
5215 font-size: 12px;
5216 line-height: 20px;
5217 color: #fff;
5218 text-align: center;
5219 background-color: #337ab7;
5220 -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
5221 box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
5222 -webkit-transition: width 0.6s ease;
5223 -o-transition: width 0.6s ease;
5224 transition: width 0.6s ease;
5225}
5226.progress-striped .progress-bar,
5227.progress-bar-striped {
5228 background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5229 background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5230 background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5231 -webkit-background-size: 40px 40px;
5232 background-size: 40px 40px;
5233}
5234.progress.active .progress-bar,
5235.progress-bar.active {
5236 -webkit-animation: progress-bar-stripes 2s linear infinite;
5237 -o-animation: progress-bar-stripes 2s linear infinite;
5238 animation: progress-bar-stripes 2s linear infinite;
5239}
5240.progress-bar-success {
5241 background-color: #5cb85c;
5242}
5243.progress-striped .progress-bar-success {
5244 background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5245 background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5246 background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5247}
5248.progress-bar-info {
5249 background-color: #5bc0de;
5250}
5251.progress-striped .progress-bar-info {
5252 background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5253 background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5254 background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5255}
5256.progress-bar-warning {
5257 background-color: #f0ad4e;
5258}
5259.progress-striped .progress-bar-warning {
5260 background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5261 background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5262 background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5263}
5264.progress-bar-danger {
5265 background-color: #d9534f;
5266}
5267.progress-striped .progress-bar-danger {
5268 background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5269 background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5270 background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5271}
5272.media {
5273 margin-top: 15px;
5274}
5275.media:first-child {
5276 margin-top: 0;
5277}
5278.media,
5279.media-body {
5280 overflow: hidden;
5281 zoom: 1;
5282}
5283.media-body {
5284 width: 10000px;
5285}
5286.media-object {
5287 display: block;
5288}
5289.media-object.img-thumbnail {
5290 max-width: none;
5291}
5292.media-right,
5293.media > .pull-right {
5294 padding-left: 10px;
5295}
5296.media-left,
5297.media > .pull-left {
5298 padding-right: 10px;
5299}
5300.media-left,
5301.media-right,
5302.media-body {
5303 display: table-cell;
5304 vertical-align: top;
5305}
5306.media-middle {
5307 vertical-align: middle;
5308}
5309.media-bottom {
5310 vertical-align: bottom;
5311}
5312.media-heading {
5313 margin-top: 0;
5314 margin-bottom: 5px;
5315}
5316.media-list {
5317 padding-left: 0;
5318 list-style: none;
5319}
5320.list-group {
5321 padding-left: 0;
5322 margin-bottom: 20px;
5323}
5324.list-group-item {
5325 position: relative;
5326 display: block;
5327 padding: 10px 15px;
5328 margin-bottom: -1px;
5329 background-color: #fff;
5330 border: 1px solid #ddd;
5331}
5332.list-group-item:first-child {
5333 border-top-left-radius: 4px;
5334 border-top-right-radius: 4px;
5335}
5336.list-group-item:last-child {
5337 margin-bottom: 0;
5338 border-bottom-right-radius: 4px;
5339 border-bottom-left-radius: 4px;
5340}
5341.list-group-item.disabled,
5342.list-group-item.disabled:hover,
5343.list-group-item.disabled:focus {
5344 color: #777777;
5345 cursor: not-allowed;
5346 background-color: #eeeeee;
5347}
5348.list-group-item.disabled .list-group-item-heading,
5349.list-group-item.disabled:hover .list-group-item-heading,
5350.list-group-item.disabled:focus .list-group-item-heading {
5351 color: inherit;
5352}
5353.list-group-item.disabled .list-group-item-text,
5354.list-group-item.disabled:hover .list-group-item-text,
5355.list-group-item.disabled:focus .list-group-item-text {
5356 color: #777777;
5357}
5358.list-group-item.active,
5359.list-group-item.active:hover,
5360.list-group-item.active:focus {
5361 z-index: 2;
5362 color: #fff;
5363 background-color: #337ab7;
5364 border-color: #337ab7;
5365}
5366.list-group-item.active .list-group-item-heading,
5367.list-group-item.active:hover .list-group-item-heading,
5368.list-group-item.active:focus .list-group-item-heading,
5369.list-group-item.active .list-group-item-heading > small,
5370.list-group-item.active:hover .list-group-item-heading > small,
5371.list-group-item.active:focus .list-group-item-heading > small,
5372.list-group-item.active .list-group-item-heading > .small,
5373.list-group-item.active:hover .list-group-item-heading > .small,
5374.list-group-item.active:focus .list-group-item-heading > .small {
5375 color: inherit;
5376}
5377.list-group-item.active .list-group-item-text,
5378.list-group-item.active:hover .list-group-item-text,
5379.list-group-item.active:focus .list-group-item-text {
5380 color: #c7ddef;
5381}
5382a.list-group-item,
5383button.list-group-item {
5384 color: #555;
5385}
5386a.list-group-item .list-group-item-heading,
5387button.list-group-item .list-group-item-heading {
5388 color: #333;
5389}
5390a.list-group-item:hover,
5391button.list-group-item:hover,
5392a.list-group-item:focus,
5393button.list-group-item:focus {
5394 color: #555;
5395 text-decoration: none;
5396 background-color: #f5f5f5;
5397}
5398button.list-group-item {
5399 width: 100%;
5400 text-align: left;
5401}
5402.list-group-item-success {
5403 color: #3c763d;
5404 background-color: #dff0d8;
5405}
5406a.list-group-item-success,
5407button.list-group-item-success {
5408 color: #3c763d;
5409}
5410a.list-group-item-success .list-group-item-heading,
5411button.list-group-item-success .list-group-item-heading {
5412 color: inherit;
5413}
5414a.list-group-item-success:hover,
5415button.list-group-item-success:hover,
5416a.list-group-item-success:focus,
5417button.list-group-item-success:focus {
5418 color: #3c763d;
5419 background-color: #d0e9c6;
5420}
5421a.list-group-item-success.active,
5422button.list-group-item-success.active,
5423a.list-group-item-success.active:hover,
5424button.list-group-item-success.active:hover,
5425a.list-group-item-success.active:focus,
5426button.list-group-item-success.active:focus {
5427 color: #fff;
5428 background-color: #3c763d;
5429 border-color: #3c763d;
5430}
5431.list-group-item-info {
5432 color: #31708f;
5433 background-color: #d9edf7;
5434}
5435a.list-group-item-info,
5436button.list-group-item-info {
5437 color: #31708f;
5438}
5439a.list-group-item-info .list-group-item-heading,
5440button.list-group-item-info .list-group-item-heading {
5441 color: inherit;
5442}
5443a.list-group-item-info:hover,
5444button.list-group-item-info:hover,
5445a.list-group-item-info:focus,
5446button.list-group-item-info:focus {
5447 color: #31708f;
5448 background-color: #c4e3f3;
5449}
5450a.list-group-item-info.active,
5451button.list-group-item-info.active,
5452a.list-group-item-info.active:hover,
5453button.list-group-item-info.active:hover,
5454a.list-group-item-info.active:focus,
5455button.list-group-item-info.active:focus {
5456 color: #fff;
5457 background-color: #31708f;
5458 border-color: #31708f;
5459}
5460.list-group-item-warning {
5461 color: #8a6d3b;
5462 background-color: #fcf8e3;
5463}
5464a.list-group-item-warning,
5465button.list-group-item-warning {
5466 color: #8a6d3b;
5467}
5468a.list-group-item-warning .list-group-item-heading,
5469button.list-group-item-warning .list-group-item-heading {
5470 color: inherit;
5471}
5472a.list-group-item-warning:hover,
5473button.list-group-item-warning:hover,
5474a.list-group-item-warning:focus,
5475button.list-group-item-warning:focus {
5476 color: #8a6d3b;
5477 background-color: #faf2cc;
5478}
5479a.list-group-item-warning.active,
5480button.list-group-item-warning.active,
5481a.list-group-item-warning.active:hover,
5482button.list-group-item-warning.active:hover,
5483a.list-group-item-warning.active:focus,
5484button.list-group-item-warning.active:focus {
5485 color: #fff;
5486 background-color: #8a6d3b;
5487 border-color: #8a6d3b;
5488}
5489.list-group-item-danger {
5490 color: #a94442;
5491 background-color: #f2dede;
5492}
5493a.list-group-item-danger,
5494button.list-group-item-danger {
5495 color: #a94442;
5496}
5497a.list-group-item-danger .list-group-item-heading,
5498button.list-group-item-danger .list-group-item-heading {
5499 color: inherit;
5500}
5501a.list-group-item-danger:hover,
5502button.list-group-item-danger:hover,
5503a.list-group-item-danger:focus,
5504button.list-group-item-danger:focus {
5505 color: #a94442;
5506 background-color: #ebcccc;
5507}
5508a.list-group-item-danger.active,
5509button.list-group-item-danger.active,
5510a.list-group-item-danger.active:hover,
5511button.list-group-item-danger.active:hover,
5512a.list-group-item-danger.active:focus,
5513button.list-group-item-danger.active:focus {
5514 color: #fff;
5515 background-color: #a94442;
5516 border-color: #a94442;
5517}
5518.list-group-item-heading {
5519 margin-top: 0;
5520 margin-bottom: 5px;
5521}
5522.list-group-item-text {
5523 margin-bottom: 0;
5524 line-height: 1.3;
5525}
5526.panel {
5527 margin-bottom: 20px;
5528 background-color: #fff;
5529 border: 1px solid transparent;
5530 border-radius: 4px;
5531 -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
5532 box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
5533}
5534.panel-body {
5535 padding: 15px;
5536}
5537.panel-heading {
5538 padding: 10px 15px;
5539 border-bottom: 1px solid transparent;
5540 border-top-left-radius: 3px;
5541 border-top-right-radius: 3px;
5542}
5543.panel-heading > .dropdown .dropdown-toggle {
5544 color: inherit;
5545}
5546.panel-title {
5547 margin-top: 0;
5548 margin-bottom: 0;
5549 font-size: 16px;
5550 color: inherit;
5551}
5552.panel-title > a,
5553.panel-title > small,
5554.panel-title > .small,
5555.panel-title > small > a,
5556.panel-title > .small > a {
5557 color: inherit;
5558}
5559.panel-footer {
5560 padding: 10px 15px;
5561 background-color: #f5f5f5;
5562 border-top: 1px solid #ddd;
5563 border-bottom-right-radius: 3px;
5564 border-bottom-left-radius: 3px;
5565}
5566.panel > .list-group,
5567.panel > .panel-collapse > .list-group {
5568 margin-bottom: 0;
5569}
5570.panel > .list-group .list-group-item,
5571.panel > .panel-collapse > .list-group .list-group-item {
5572 border-width: 1px 0;
5573 border-radius: 0;
5574}
5575.panel > .list-group:first-child .list-group-item:first-child,
5576.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
5577 border-top: 0;
5578 border-top-left-radius: 3px;
5579 border-top-right-radius: 3px;
5580}
5581.panel > .list-group:last-child .list-group-item:last-child,
5582.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
5583 border-bottom: 0;
5584 border-bottom-right-radius: 3px;
5585 border-bottom-left-radius: 3px;
5586}
5587.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
5588 border-top-left-radius: 0;
5589 border-top-right-radius: 0;
5590}
5591.panel-heading + .list-group .list-group-item:first-child {
5592 border-top-width: 0;
5593}
5594.list-group + .panel-footer {
5595 border-top-width: 0;
5596}
5597.panel > .table,
5598.panel > .table-responsive > .table,
5599.panel > .panel-collapse > .table {
5600 margin-bottom: 0;
5601}
5602.panel > .table caption,
5603.panel > .table-responsive > .table caption,
5604.panel > .panel-collapse > .table caption {
5605 padding-right: 15px;
5606 padding-left: 15px;
5607}
5608.panel > .table:first-child,
5609.panel > .table-responsive:first-child > .table:first-child {
5610 border-top-left-radius: 3px;
5611 border-top-right-radius: 3px;
5612}
5613.panel > .table:first-child > thead:first-child > tr:first-child,
5614.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
5615.panel > .table:first-child > tbody:first-child > tr:first-child,
5616.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
5617 border-top-left-radius: 3px;
5618 border-top-right-radius: 3px;
5619}
5620.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
5621.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
5622.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
5623.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
5624.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
5625.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
5626.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
5627.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
5628 border-top-left-radius: 3px;
5629}
5630.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
5631.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
5632.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
5633.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
5634.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
5635.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
5636.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
5637.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
5638 border-top-right-radius: 3px;
5639}
5640.panel > .table:last-child,
5641.panel > .table-responsive:last-child > .table:last-child {
5642 border-bottom-right-radius: 3px;
5643 border-bottom-left-radius: 3px;
5644}
5645.panel > .table:last-child > tbody:last-child > tr:last-child,
5646.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
5647.panel > .table:last-child > tfoot:last-child > tr:last-child,
5648.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
5649 border-bottom-right-radius: 3px;
5650 border-bottom-left-radius: 3px;
5651}
5652.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
5653.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
5654.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
5655.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
5656.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
5657.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
5658.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
5659.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
5660 border-bottom-left-radius: 3px;
5661}
5662.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
5663.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
5664.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
5665.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
5666.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
5667.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
5668.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
5669.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
5670 border-bottom-right-radius: 3px;
5671}
5672.panel > .panel-body + .table,
5673.panel > .panel-body + .table-responsive,
5674.panel > .table + .panel-body,
5675.panel > .table-responsive + .panel-body {
5676 border-top: 1px solid #ddd;
5677}
5678.panel > .table > tbody:first-child > tr:first-child th,
5679.panel > .table > tbody:first-child > tr:first-child td {
5680 border-top: 0;
5681}
5682.panel > .table-bordered,
5683.panel > .table-responsive > .table-bordered {
5684 border: 0;
5685}
5686.panel > .table-bordered > thead > tr > th:first-child,
5687.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
5688.panel > .table-bordered > tbody > tr > th:first-child,
5689.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
5690.panel > .table-bordered > tfoot > tr > th:first-child,
5691.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
5692.panel > .table-bordered > thead > tr > td:first-child,
5693.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
5694.panel > .table-bordered > tbody > tr > td:first-child,
5695.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
5696.panel > .table-bordered > tfoot > tr > td:first-child,
5697.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
5698 border-left: 0;
5699}
5700.panel > .table-bordered > thead > tr > th:last-child,
5701.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
5702.panel > .table-bordered > tbody > tr > th:last-child,
5703.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
5704.panel > .table-bordered > tfoot > tr > th:last-child,
5705.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
5706.panel > .table-bordered > thead > tr > td:last-child,
5707.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
5708.panel > .table-bordered > tbody > tr > td:last-child,
5709.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
5710.panel > .table-bordered > tfoot > tr > td:last-child,
5711.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
5712 border-right: 0;
5713}
5714.panel > .table-bordered > thead > tr:first-child > td,
5715.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
5716.panel > .table-bordered > tbody > tr:first-child > td,
5717.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
5718.panel > .table-bordered > thead > tr:first-child > th,
5719.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
5720.panel > .table-bordered > tbody > tr:first-child > th,
5721.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
5722 border-bottom: 0;
5723}
5724.panel > .table-bordered > tbody > tr:last-child > td,
5725.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
5726.panel > .table-bordered > tfoot > tr:last-child > td,
5727.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
5728.panel > .table-bordered > tbody > tr:last-child > th,
5729.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
5730.panel > .table-bordered > tfoot > tr:last-child > th,
5731.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
5732 border-bottom: 0;
5733}
5734.panel > .table-responsive {
5735 margin-bottom: 0;
5736 border: 0;
5737}
5738.panel-group {
5739 margin-bottom: 20px;
5740}
5741.panel-group .panel {
5742 margin-bottom: 0;
5743 border-radius: 4px;
5744}
5745.panel-group .panel + .panel {
5746 margin-top: 5px;
5747}
5748.panel-group .panel-heading {
5749 border-bottom: 0;
5750}
5751.panel-group .panel-heading + .panel-collapse > .panel-body,
5752.panel-group .panel-heading + .panel-collapse > .list-group {
5753 border-top: 1px solid #ddd;
5754}
5755.panel-group .panel-footer {
5756 border-top: 0;
5757}
5758.panel-group .panel-footer + .panel-collapse .panel-body {
5759 border-bottom: 1px solid #ddd;
5760}
5761.panel-default {
5762 border-color: #ddd;
5763}
5764.panel-default > .panel-heading {
5765 color: #333333;
5766 background-color: #f5f5f5;
5767 border-color: #ddd;
5768}
5769.panel-default > .panel-heading + .panel-collapse > .panel-body {
5770 border-top-color: #ddd;
5771}
5772.panel-default > .panel-heading .badge {
5773 color: #f5f5f5;
5774 background-color: #333333;
5775}
5776.panel-default > .panel-footer + .panel-collapse > .panel-body {
5777 border-bottom-color: #ddd;
5778}
5779.panel-primary {
5780 border-color: #337ab7;
5781}
5782.panel-primary > .panel-heading {
5783 color: #fff;
5784 background-color: #337ab7;
5785 border-color: #337ab7;
5786}
5787.panel-primary > .panel-heading + .panel-collapse > .panel-body {
5788 border-top-color: #337ab7;
5789}
5790.panel-primary > .panel-heading .badge {
5791 color: #337ab7;
5792 background-color: #fff;
5793}
5794.panel-primary > .panel-footer + .panel-collapse > .panel-body {
5795 border-bottom-color: #337ab7;
5796}
5797.panel-success {
5798 border-color: #d6e9c6;
5799}
5800.panel-success > .panel-heading {
5801 color: #3c763d;
5802 background-color: #dff0d8;
5803 border-color: #d6e9c6;
5804}
5805.panel-success > .panel-heading + .panel-collapse > .panel-body {
5806 border-top-color: #d6e9c6;
5807}
5808.panel-success > .panel-heading .badge {
5809 color: #dff0d8;
5810 background-color: #3c763d;
5811}
5812.panel-success > .panel-footer + .panel-collapse > .panel-body {
5813 border-bottom-color: #d6e9c6;
5814}
5815.panel-info {
5816 border-color: #bce8f1;
5817}
5818.panel-info > .panel-heading {
5819 color: #31708f;
5820 background-color: #d9edf7;
5821 border-color: #bce8f1;
5822}
5823.panel-info > .panel-heading + .panel-collapse > .panel-body {
5824 border-top-color: #bce8f1;
5825}
5826.panel-info > .panel-heading .badge {
5827 color: #d9edf7;
5828 background-color: #31708f;
5829}
5830.panel-info > .panel-footer + .panel-collapse > .panel-body {
5831 border-bottom-color: #bce8f1;
5832}
5833.panel-warning {
5834 border-color: #faebcc;
5835}
5836.panel-warning > .panel-heading {
5837 color: #8a6d3b;
5838 background-color: #fcf8e3;
5839 border-color: #faebcc;
5840}
5841.panel-warning > .panel-heading + .panel-collapse > .panel-body {
5842 border-top-color: #faebcc;
5843}
5844.panel-warning > .panel-heading .badge {
5845 color: #fcf8e3;
5846 background-color: #8a6d3b;
5847}
5848.panel-warning > .panel-footer + .panel-collapse > .panel-body {
5849 border-bottom-color: #faebcc;
5850}
5851.panel-danger {
5852 border-color: #ebccd1;
5853}
5854.panel-danger > .panel-heading {
5855 color: #a94442;
5856 background-color: #f2dede;
5857 border-color: #ebccd1;
5858}
5859.panel-danger > .panel-heading + .panel-collapse > .panel-body {
5860 border-top-color: #ebccd1;
5861}
5862.panel-danger > .panel-heading .badge {
5863 color: #f2dede;
5864 background-color: #a94442;
5865}
5866.panel-danger > .panel-footer + .panel-collapse > .panel-body {
5867 border-bottom-color: #ebccd1;
5868}
5869.embed-responsive {
5870 position: relative;
5871 display: block;
5872 height: 0;
5873 padding: 0;
5874 overflow: hidden;
5875}
5876.embed-responsive .embed-responsive-item,
5877.embed-responsive iframe,
5878.embed-responsive embed,
5879.embed-responsive object,
5880.embed-responsive video {
5881 position: absolute;
5882 top: 0;
5883 bottom: 0;
5884 left: 0;
5885 width: 100%;
5886 height: 100%;
5887 border: 0;
5888}
5889.embed-responsive-16by9 {
5890 padding-bottom: 56.25%;
5891}
5892.embed-responsive-4by3 {
5893 padding-bottom: 75%;
5894}
5895.well {
5896 min-height: 20px;
5897 padding: 19px;
5898 margin-bottom: 20px;
5899 background-color: #f5f5f5;
5900 border: 1px solid #e3e3e3;
5901 border-radius: 4px;
5902 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
5903 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
5904}
5905.well blockquote {
5906 border-color: #ddd;
5907 border-color: rgba(0, 0, 0, 0.15);
5908}
5909.well-lg {
5910 padding: 24px;
5911 border-radius: 6px;
5912}
5913.well-sm {
5914 padding: 9px;
5915 border-radius: 3px;
5916}
5917.close {
5918 float: right;
5919 font-size: 21px;
5920 font-weight: bold;
5921 line-height: 1;
5922 color: #000;
5923 text-shadow: 0 1px 0 #fff;
5924 filter: alpha(opacity=20);
5925 opacity: 0.2;
5926}
5927.close:hover,
5928.close:focus {
5929 color: #000;
5930 text-decoration: none;
5931 cursor: pointer;
5932 filter: alpha(opacity=50);
5933 opacity: 0.5;
5934}
5935button.close {
5936 padding: 0;
5937 cursor: pointer;
5938 background: transparent;
5939 border: 0;
5940 -webkit-appearance: none;
5941 -moz-appearance: none;
5942 appearance: none;
5943}
5944.modal-open {
5945 overflow: hidden;
5946}
5947.modal {
5948 position: fixed;
5949 top: 0;
5950 right: 0;
5951 bottom: 0;
5952 left: 0;
5953 z-index: 1050;
5954 display: none;
5955 overflow: hidden;
5956 -webkit-overflow-scrolling: touch;
5957 outline: 0;
5958}
5959.modal.fade .modal-dialog {
5960 -webkit-transform: translate(0, -25%);
5961 -ms-transform: translate(0, -25%);
5962 -o-transform: translate(0, -25%);
5963 transform: translate(0, -25%);
5964 -webkit-transition: -webkit-transform 0.3s ease-out;
5965 -o-transition: -o-transform 0.3s ease-out;
5966 transition: -webkit-transform 0.3s ease-out;
5967 transition: transform 0.3s ease-out;
5968 transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out, -o-transform 0.3s ease-out;
5969}
5970.modal.in .modal-dialog {
5971 -webkit-transform: translate(0, 0);
5972 -ms-transform: translate(0, 0);
5973 -o-transform: translate(0, 0);
5974 transform: translate(0, 0);
5975}
5976.modal-open .modal {
5977 overflow-x: hidden;
5978 overflow-y: auto;
5979}
5980.modal-dialog {
5981 position: relative;
5982 width: auto;
5983 margin: 10px;
5984}
5985.modal-content {
5986 position: relative;
5987 background-color: #fff;
5988 background-clip: padding-box;
5989 border: 1px solid #999;
5990 border: 1px solid rgba(0, 0, 0, 0.2);
5991 border-radius: 6px;
5992 -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
5993 box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
5994 outline: 0;
5995}
5996.modal-backdrop {
5997 position: fixed;
5998 top: 0;
5999 right: 0;
6000 bottom: 0;
6001 left: 0;
6002 z-index: 1040;
6003 background-color: #000;
6004}
6005.modal-backdrop.fade {
6006 filter: alpha(opacity=0);
6007 opacity: 0;
6008}
6009.modal-backdrop.in {
6010 filter: alpha(opacity=50);
6011 opacity: 0.5;
6012}
6013.modal-header {
6014 padding: 15px;
6015 border-bottom: 1px solid #e5e5e5;
6016}
6017.modal-header .close {
6018 margin-top: -2px;
6019}
6020.modal-title {
6021 margin: 0;
6022 line-height: 1.42857143;
6023}
6024.modal-body {
6025 position: relative;
6026 padding: 15px;
6027}
6028.modal-footer {
6029 padding: 15px;
6030 text-align: right;
6031 border-top: 1px solid #e5e5e5;
6032}
6033.modal-footer .btn + .btn {
6034 margin-bottom: 0;
6035 margin-left: 5px;
6036}
6037.modal-footer .btn-group .btn + .btn {
6038 margin-left: -1px;
6039}
6040.modal-footer .btn-block + .btn-block {
6041 margin-left: 0;
6042}
6043.modal-scrollbar-measure {
6044 position: absolute;
6045 top: -9999px;
6046 width: 50px;
6047 height: 50px;
6048 overflow: scroll;
6049}
6050@media (min-width: 768px) {
6051 .modal-dialog {
6052 width: 600px;
6053 margin: 30px auto;
6054 }
6055 .modal-content {
6056 -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
6057 box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
6058 }
6059 .modal-sm {
6060 width: 300px;
6061 }
6062}
6063@media (min-width: 992px) {
6064 .modal-lg {
6065 width: 900px;
6066 }
6067}
6068.tooltip {
6069 position: absolute;
6070 z-index: 1070;
6071 display: block;
6072 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
6073 font-style: normal;
6074 font-weight: 400;
6075 line-height: 1.42857143;
6076 line-break: auto;
6077 text-align: left;
6078 text-align: start;
6079 text-decoration: none;
6080 text-shadow: none;
6081 text-transform: none;
6082 letter-spacing: normal;
6083 word-break: normal;
6084 word-spacing: normal;
6085 word-wrap: normal;
6086 white-space: normal;
6087 font-size: 12px;
6088 filter: alpha(opacity=0);
6089 opacity: 0;
6090}
6091.tooltip.in {
6092 filter: alpha(opacity=90);
6093 opacity: 0.9;
6094}
6095.tooltip.top {
6096 padding: 5px 0;
6097 margin-top: -3px;
6098}
6099.tooltip.right {
6100 padding: 0 5px;
6101 margin-left: 3px;
6102}
6103.tooltip.bottom {
6104 padding: 5px 0;
6105 margin-top: 3px;
6106}
6107.tooltip.left {
6108 padding: 0 5px;
6109 margin-left: -3px;
6110}
6111.tooltip.top .tooltip-arrow {
6112 bottom: 0;
6113 left: 50%;
6114 margin-left: -5px;
6115 border-width: 5px 5px 0;
6116 border-top-color: #000;
6117}
6118.tooltip.top-left .tooltip-arrow {
6119 right: 5px;
6120 bottom: 0;
6121 margin-bottom: -5px;
6122 border-width: 5px 5px 0;
6123 border-top-color: #000;
6124}
6125.tooltip.top-right .tooltip-arrow {
6126 bottom: 0;
6127 left: 5px;
6128 margin-bottom: -5px;
6129 border-width: 5px 5px 0;
6130 border-top-color: #000;
6131}
6132.tooltip.right .tooltip-arrow {
6133 top: 50%;
6134 left: 0;
6135 margin-top: -5px;
6136 border-width: 5px 5px 5px 0;
6137 border-right-color: #000;
6138}
6139.tooltip.left .tooltip-arrow {
6140 top: 50%;
6141 right: 0;
6142 margin-top: -5px;
6143 border-width: 5px 0 5px 5px;
6144 border-left-color: #000;
6145}
6146.tooltip.bottom .tooltip-arrow {
6147 top: 0;
6148 left: 50%;
6149 margin-left: -5px;
6150 border-width: 0 5px 5px;
6151 border-bottom-color: #000;
6152}
6153.tooltip.bottom-left .tooltip-arrow {
6154 top: 0;
6155 right: 5px;
6156 margin-top: -5px;
6157 border-width: 0 5px 5px;
6158 border-bottom-color: #000;
6159}
6160.tooltip.bottom-right .tooltip-arrow {
6161 top: 0;
6162 left: 5px;
6163 margin-top: -5px;
6164 border-width: 0 5px 5px;
6165 border-bottom-color: #000;
6166}
6167.tooltip-inner {
6168 max-width: 200px;
6169 padding: 3px 8px;
6170 color: #fff;
6171 text-align: center;
6172 background-color: #000;
6173 border-radius: 4px;
6174}
6175.tooltip-arrow {
6176 position: absolute;
6177 width: 0;
6178 height: 0;
6179 border-color: transparent;
6180 border-style: solid;
6181}
6182.popover {
6183 position: absolute;
6184 top: 0;
6185 left: 0;
6186 z-index: 1060;
6187 display: none;
6188 max-width: 276px;
6189 padding: 1px;
6190 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
6191 font-style: normal;
6192 font-weight: 400;
6193 line-height: 1.42857143;
6194 line-break: auto;
6195 text-align: left;
6196 text-align: start;
6197 text-decoration: none;
6198 text-shadow: none;
6199 text-transform: none;
6200 letter-spacing: normal;
6201 word-break: normal;
6202 word-spacing: normal;
6203 word-wrap: normal;
6204 white-space: normal;
6205 font-size: 14px;
6206 background-color: #fff;
6207 background-clip: padding-box;
6208 border: 1px solid #ccc;
6209 border: 1px solid rgba(0, 0, 0, 0.2);
6210 border-radius: 6px;
6211 -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
6212 box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
6213}
6214.popover.top {
6215 margin-top: -10px;
6216}
6217.popover.right {
6218 margin-left: 10px;
6219}
6220.popover.bottom {
6221 margin-top: 10px;
6222}
6223.popover.left {
6224 margin-left: -10px;
6225}
6226.popover > .arrow {
6227 border-width: 11px;
6228}
6229.popover > .arrow,
6230.popover > .arrow:after {
6231 position: absolute;
6232 display: block;
6233 width: 0;
6234 height: 0;
6235 border-color: transparent;
6236 border-style: solid;
6237}
6238.popover > .arrow:after {
6239 content: "";
6240 border-width: 10px;
6241}
6242.popover.top > .arrow {
6243 bottom: -11px;
6244 left: 50%;
6245 margin-left: -11px;
6246 border-top-color: #999999;
6247 border-top-color: rgba(0, 0, 0, 0.25);
6248 border-bottom-width: 0;
6249}
6250.popover.top > .arrow:after {
6251 bottom: 1px;
6252 margin-left: -10px;
6253 content: " ";
6254 border-top-color: #fff;
6255 border-bottom-width: 0;
6256}
6257.popover.right > .arrow {
6258 top: 50%;
6259 left: -11px;
6260 margin-top: -11px;
6261 border-right-color: #999999;
6262 border-right-color: rgba(0, 0, 0, 0.25);
6263 border-left-width: 0;
6264}
6265.popover.right > .arrow:after {
6266 bottom: -10px;
6267 left: 1px;
6268 content: " ";
6269 border-right-color: #fff;
6270 border-left-width: 0;
6271}
6272.popover.bottom > .arrow {
6273 top: -11px;
6274 left: 50%;
6275 margin-left: -11px;
6276 border-top-width: 0;
6277 border-bottom-color: #999999;
6278 border-bottom-color: rgba(0, 0, 0, 0.25);
6279}
6280.popover.bottom > .arrow:after {
6281 top: 1px;
6282 margin-left: -10px;
6283 content: " ";
6284 border-top-width: 0;
6285 border-bottom-color: #fff;
6286}
6287.popover.left > .arrow {
6288 top: 50%;
6289 right: -11px;
6290 margin-top: -11px;
6291 border-right-width: 0;
6292 border-left-color: #999999;
6293 border-left-color: rgba(0, 0, 0, 0.25);
6294}
6295.popover.left > .arrow:after {
6296 right: 1px;
6297 bottom: -10px;
6298 content: " ";
6299 border-right-width: 0;
6300 border-left-color: #fff;
6301}
6302.popover-title {
6303 padding: 8px 14px;
6304 margin: 0;
6305 font-size: 14px;
6306 background-color: #f7f7f7;
6307 border-bottom: 1px solid #ebebeb;
6308 border-radius: 5px 5px 0 0;
6309}
6310.popover-content {
6311 padding: 9px 14px;
6312}
6313.carousel {
6314 position: relative;
6315}
6316.carousel-inner {
6317 position: relative;
6318 width: 100%;
6319 overflow: hidden;
6320}
6321.carousel-inner > .item {
6322 position: relative;
6323 display: none;
6324 -webkit-transition: 0.6s ease-in-out left;
6325 -o-transition: 0.6s ease-in-out left;
6326 transition: 0.6s ease-in-out left;
6327}
6328.carousel-inner > .item > img,
6329.carousel-inner > .item > a > img {
6330 line-height: 1;
6331}
6332@media all and (transform-3d), (-webkit-transform-3d) {
6333 .carousel-inner > .item {
6334 -webkit-transition: -webkit-transform 0.6s ease-in-out;
6335 -o-transition: -o-transform 0.6s ease-in-out;
6336 transition: -webkit-transform 0.6s ease-in-out;
6337 transition: transform 0.6s ease-in-out;
6338 transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out, -o-transform 0.6s ease-in-out;
6339 -webkit-backface-visibility: hidden;
6340 backface-visibility: hidden;
6341 -webkit-perspective: 1000px;
6342 perspective: 1000px;
6343 }
6344 .carousel-inner > .item.next,
6345 .carousel-inner > .item.active.right {
6346 -webkit-transform: translate3d(100%, 0, 0);
6347 transform: translate3d(100%, 0, 0);
6348 left: 0;
6349 }
6350 .carousel-inner > .item.prev,
6351 .carousel-inner > .item.active.left {
6352 -webkit-transform: translate3d(-100%, 0, 0);
6353 transform: translate3d(-100%, 0, 0);
6354 left: 0;
6355 }
6356 .carousel-inner > .item.next.left,
6357 .carousel-inner > .item.prev.right,
6358 .carousel-inner > .item.active {
6359 -webkit-transform: translate3d(0, 0, 0);
6360 transform: translate3d(0, 0, 0);
6361 left: 0;
6362 }
6363}
6364.carousel-inner > .active,
6365.carousel-inner > .next,
6366.carousel-inner > .prev {
6367 display: block;
6368}
6369.carousel-inner > .active {
6370 left: 0;
6371}
6372.carousel-inner > .next,
6373.carousel-inner > .prev {
6374 position: absolute;
6375 top: 0;
6376 width: 100%;
6377}
6378.carousel-inner > .next {
6379 left: 100%;
6380}
6381.carousel-inner > .prev {
6382 left: -100%;
6383}
6384.carousel-inner > .next.left,
6385.carousel-inner > .prev.right {
6386 left: 0;
6387}
6388.carousel-inner > .active.left {
6389 left: -100%;
6390}
6391.carousel-inner > .active.right {
6392 left: 100%;
6393}
6394.carousel-control {
6395 position: absolute;
6396 top: 0;
6397 bottom: 0;
6398 left: 0;
6399 width: 15%;
6400 font-size: 20px;
6401 color: #fff;
6402 text-align: center;
6403 text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
6404 background-color: rgba(0, 0, 0, 0);
6405 filter: alpha(opacity=50);
6406 opacity: 0.5;
6407}
6408.carousel-control.left {
6409 background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
6410 background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
6411 background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0.0001)));
6412 background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
6413 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
6414 background-repeat: repeat-x;
6415}
6416.carousel-control.right {
6417 right: 0;
6418 left: auto;
6419 background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
6420 background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
6421 background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.0001)), to(rgba(0, 0, 0, 0.5)));
6422 background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
6423 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
6424 background-repeat: repeat-x;
6425}
6426.carousel-control:hover,
6427.carousel-control:focus {
6428 color: #fff;
6429 text-decoration: none;
6430 outline: 0;
6431 filter: alpha(opacity=90);
6432 opacity: 0.9;
6433}
6434.carousel-control .icon-prev,
6435.carousel-control .icon-next,
6436.carousel-control .glyphicon-chevron-left,
6437.carousel-control .glyphicon-chevron-right {
6438 position: absolute;
6439 top: 50%;
6440 z-index: 5;
6441 display: inline-block;
6442 margin-top: -10px;
6443}
6444.carousel-control .icon-prev,
6445.carousel-control .glyphicon-chevron-left {
6446 left: 50%;
6447 margin-left: -10px;
6448}
6449.carousel-control .icon-next,
6450.carousel-control .glyphicon-chevron-right {
6451 right: 50%;
6452 margin-right: -10px;
6453}
6454.carousel-control .icon-prev,
6455.carousel-control .icon-next {
6456 width: 20px;
6457 height: 20px;
6458 font-family: serif;
6459 line-height: 1;
6460}
6461.carousel-control .icon-prev:before {
6462 content: "\2039";
6463}
6464.carousel-control .icon-next:before {
6465 content: "\203a";
6466}
6467.carousel-indicators {
6468 position: absolute;
6469 bottom: 10px;
6470 left: 50%;
6471 z-index: 15;
6472 width: 60%;
6473 padding-left: 0;
6474 margin-left: -30%;
6475 text-align: center;
6476 list-style: none;
6477}
6478.carousel-indicators li {
6479 display: inline-block;
6480 width: 10px;
6481 height: 10px;
6482 margin: 1px;
6483 text-indent: -999px;
6484 cursor: pointer;
6485 background-color: #000 \9;
6486 background-color: rgba(0, 0, 0, 0);
6487 border: 1px solid #fff;
6488 border-radius: 10px;
6489}
6490.carousel-indicators .active {
6491 width: 12px;
6492 height: 12px;
6493 margin: 0;
6494 background-color: #fff;
6495}
6496.carousel-caption {
6497 position: absolute;
6498 right: 15%;
6499 bottom: 20px;
6500 left: 15%;
6501 z-index: 10;
6502 padding-top: 20px;
6503 padding-bottom: 20px;
6504 color: #fff;
6505 text-align: center;
6506 text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
6507}
6508.carousel-caption .btn {
6509 text-shadow: none;
6510}
6511@media screen and (min-width: 768px) {
6512 .carousel-control .glyphicon-chevron-left,
6513 .carousel-control .glyphicon-chevron-right,
6514 .carousel-control .icon-prev,
6515 .carousel-control .icon-next {
6516 width: 30px;
6517 height: 30px;
6518 margin-top: -10px;
6519 font-size: 30px;
6520 }
6521 .carousel-control .glyphicon-chevron-left,
6522 .carousel-control .icon-prev {
6523 margin-left: -10px;
6524 }
6525 .carousel-control .glyphicon-chevron-right,
6526 .carousel-control .icon-next {
6527 margin-right: -10px;
6528 }
6529 .carousel-caption {
6530 right: 20%;
6531 left: 20%;
6532 padding-bottom: 30px;
6533 }
6534 .carousel-indicators {
6535 bottom: 20px;
6536 }
6537}
6538.clearfix:before,
6539.clearfix:after,
6540.dl-horizontal dd:before,
6541.dl-horizontal dd:after,
6542.container:before,
6543.container:after,
6544.container-fluid:before,
6545.container-fluid:after,
6546.row:before,
6547.row:after,
6548.form-horizontal .form-group:before,
6549.form-horizontal .form-group:after,
6550.btn-toolbar:before,
6551.btn-toolbar:after,
6552.btn-group-vertical > .btn-group:before,
6553.btn-group-vertical > .btn-group:after,
6554.nav:before,
6555.nav:after,
6556.navbar:before,
6557.navbar:after,
6558.navbar-header:before,
6559.navbar-header:after,
6560.navbar-collapse:before,
6561.navbar-collapse:after,
6562.pager:before,
6563.pager:after,
6564.panel-body:before,
6565.panel-body:after,
6566.modal-header:before,
6567.modal-header:after,
6568.modal-footer:before,
6569.modal-footer:after {
6570 display: table;
6571 content: " ";
6572}
6573.clearfix:after,
6574.dl-horizontal dd:after,
6575.container:after,
6576.container-fluid:after,
6577.row:after,
6578.form-horizontal .form-group:after,
6579.btn-toolbar:after,
6580.btn-group-vertical > .btn-group:after,
6581.nav:after,
6582.navbar:after,
6583.navbar-header:after,
6584.navbar-collapse:after,
6585.pager:after,
6586.panel-body:after,
6587.modal-header:after,
6588.modal-footer:after {
6589 clear: both;
6590}
6591.center-block {
6592 display: block;
6593 margin-right: auto;
6594 margin-left: auto;
6595}
6596.pull-right {
6597 float: right !important;
6598}
6599.pull-left {
6600 float: left !important;
6601}
6602.hide {
6603 display: none !important;
6604}
6605.show {
6606 display: block !important;
6607}
6608.invisible {
6609 visibility: hidden;
6610}
6611.text-hide {
6612 font: 0/0 a;
6613 color: transparent;
6614 text-shadow: none;
6615 background-color: transparent;
6616 border: 0;
6617}
6618.hidden {
6619 display: none !important;
6620}
6621.affix {
6622 position: fixed;
6623}
6624@-ms-viewport {
6625 width: device-width;
6626}
6627.visible-xs,
6628.visible-sm,
6629.visible-md,
6630.visible-lg {
6631 display: none !important;
6632}
6633.visible-xs-block,
6634.visible-xs-inline,
6635.visible-xs-inline-block,
6636.visible-sm-block,
6637.visible-sm-inline,
6638.visible-sm-inline-block,
6639.visible-md-block,
6640.visible-md-inline,
6641.visible-md-inline-block,
6642.visible-lg-block,
6643.visible-lg-inline,
6644.visible-lg-inline-block {
6645 display: none !important;
6646}
6647@media (max-width: 767px) {
6648 .visible-xs {
6649 display: block !important;
6650 }
6651 table.visible-xs {
6652 display: table !important;
6653 }
6654 tr.visible-xs {
6655 display: table-row !important;
6656 }
6657 th.visible-xs,
6658 td.visible-xs {
6659 display: table-cell !important;
6660 }
6661}
6662@media (max-width: 767px) {
6663 .visible-xs-block {
6664 display: block !important;
6665 }
6666}
6667@media (max-width: 767px) {
6668 .visible-xs-inline {
6669 display: inline !important;
6670 }
6671}
6672@media (max-width: 767px) {
6673 .visible-xs-inline-block {
6674 display: inline-block !important;
6675 }
6676}
6677@media (min-width: 768px) and (max-width: 991px) {
6678 .visible-sm {
6679 display: block !important;
6680 }
6681 table.visible-sm {
6682 display: table !important;
6683 }
6684 tr.visible-sm {
6685 display: table-row !important;
6686 }
6687 th.visible-sm,
6688 td.visible-sm {
6689 display: table-cell !important;
6690 }
6691}
6692@media (min-width: 768px) and (max-width: 991px) {
6693 .visible-sm-block {
6694 display: block !important;
6695 }
6696}
6697@media (min-width: 768px) and (max-width: 991px) {
6698 .visible-sm-inline {
6699 display: inline !important;
6700 }
6701}
6702@media (min-width: 768px) and (max-width: 991px) {
6703 .visible-sm-inline-block {
6704 display: inline-block !important;
6705 }
6706}
6707@media (min-width: 992px) and (max-width: 1199px) {
6708 .visible-md {
6709 display: block !important;
6710 }
6711 table.visible-md {
6712 display: table !important;
6713 }
6714 tr.visible-md {
6715 display: table-row !important;
6716 }
6717 th.visible-md,
6718 td.visible-md {
6719 display: table-cell !important;
6720 }
6721}
6722@media (min-width: 992px) and (max-width: 1199px) {
6723 .visible-md-block {
6724 display: block !important;
6725 }
6726}
6727@media (min-width: 992px) and (max-width: 1199px) {
6728 .visible-md-inline {
6729 display: inline !important;
6730 }
6731}
6732@media (min-width: 992px) and (max-width: 1199px) {
6733 .visible-md-inline-block {
6734 display: inline-block !important;
6735 }
6736}
6737@media (min-width: 1200px) {
6738 .visible-lg {
6739 display: block !important;
6740 }
6741 table.visible-lg {
6742 display: table !important;
6743 }
6744 tr.visible-lg {
6745 display: table-row !important;
6746 }
6747 th.visible-lg,
6748 td.visible-lg {
6749 display: table-cell !important;
6750 }
6751}
6752@media (min-width: 1200px) {
6753 .visible-lg-block {
6754 display: block !important;
6755 }
6756}
6757@media (min-width: 1200px) {
6758 .visible-lg-inline {
6759 display: inline !important;
6760 }
6761}
6762@media (min-width: 1200px) {
6763 .visible-lg-inline-block {
6764 display: inline-block !important;
6765 }
6766}
6767@media (max-width: 767px) {
6768 .hidden-xs {
6769 display: none !important;
6770 }
6771}
6772@media (min-width: 768px) and (max-width: 991px) {
6773 .hidden-sm {
6774 display: none !important;
6775 }
6776}
6777@media (min-width: 992px) and (max-width: 1199px) {
6778 .hidden-md {
6779 display: none !important;
6780 }
6781}
6782@media (min-width: 1200px) {
6783 .hidden-lg {
6784 display: none !important;
6785 }
6786}
6787.visible-print {
6788 display: none !important;
6789}
6790@media print {
6791 .visible-print {
6792 display: block !important;
6793 }
6794 table.visible-print {
6795 display: table !important;
6796 }
6797 tr.visible-print {
6798 display: table-row !important;
6799 }
6800 th.visible-print,
6801 td.visible-print {
6802 display: table-cell !important;
6803 }
6804}
6805.visible-print-block {
6806 display: none !important;
6807}
6808@media print {
6809 .visible-print-block {
6810 display: block !important;
6811 }
6812}
6813.visible-print-inline {
6814 display: none !important;
6815}
6816@media print {
6817 .visible-print-inline {
6818 display: inline !important;
6819 }
6820}
6821.visible-print-inline-block {
6822 display: none !important;
6823}
6824@media print {
6825 .visible-print-inline-block {
6826 display: inline-block !important;
6827 }
6828}
6829@media print {
6830 .hidden-print {
6831 display: none !important;
6832 }
6833}
6834/*# sourceMappingURL=bootstrap.css.map */ \ No newline at end of file
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/Controllers/HomeController.cs b/src/test/wix/TestData/CsprojWebApplicationNetFx/Controllers/HomeController.cs
new file mode 100644
index 00000000..3e77d6fa
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/Controllers/HomeController.cs
@@ -0,0 +1,30 @@
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Web;
5using System.Web.Mvc;
6
7namespace CsprojWebApplicationNetFx.Controllers
8{
9 public class HomeController : Controller
10 {
11 public ActionResult Index()
12 {
13 return View();
14 }
15
16 public ActionResult About()
17 {
18 ViewBag.Message = "Your application description page.";
19
20 return View();
21 }
22
23 public ActionResult Contact()
24 {
25 ViewBag.Message = "Your contact page.";
26
27 return View();
28 }
29 }
30} \ No newline at end of file
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/CsprojWebApplicationNetFx.csproj b/src/test/wix/TestData/CsprojWebApplicationNetFx/CsprojWebApplicationNetFx.csproj
new file mode 100644
index 00000000..28322fe1
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/CsprojWebApplicationNetFx.csproj
@@ -0,0 +1,219 @@
1<?xml version="1.0" encoding="utf-8"?>
2<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3 <Import Project="..\..\..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\..\..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
4 <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
5 <PropertyGroup>
6 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
7 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
8 <ProductVersion>
9 </ProductVersion>
10 <SchemaVersion>2.0</SchemaVersion>
11 <ProjectGuid>{3DDD967D-2E14-44A3-AFE1-1ED4C25033BC}</ProjectGuid>
12 <ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
13 <OutputType>Library</OutputType>
14 <AppDesignerFolder>Properties</AppDesignerFolder>
15 <RootNamespace>CsprojWebApplicationNetFx</RootNamespace>
16 <AssemblyName>CsprojWebApplicationNetFx</AssemblyName>
17 <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
18 <MvcBuildViews>false</MvcBuildViews>
19 <UseIISExpress>true</UseIISExpress>
20 <Use64BitIISExpress />
21 <IISExpressSSLPort />
22 <IISExpressAnonymousAuthentication />
23 <IISExpressWindowsAuthentication />
24 <IISExpressUseClassicPipelineMode />
25 <UseGlobalApplicationHostFile />
26 <NuGetPackageImportStamp>
27 </NuGetPackageImportStamp>
28 </PropertyGroup>
29 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
30 <DebugSymbols>true</DebugSymbols>
31 <DebugType>full</DebugType>
32 <Optimize>false</Optimize>
33 <OutputPath>bin\</OutputPath>
34 <DefineConstants>DEBUG;TRACE</DefineConstants>
35 <ErrorReport>prompt</ErrorReport>
36 <WarningLevel>4</WarningLevel>
37 </PropertyGroup>
38 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
39 <DebugSymbols>true</DebugSymbols>
40 <DebugType>pdbonly</DebugType>
41 <Optimize>true</Optimize>
42 <OutputPath>bin\</OutputPath>
43 <DefineConstants>TRACE</DefineConstants>
44 <ErrorReport>prompt</ErrorReport>
45 <WarningLevel>4</WarningLevel>
46 </PropertyGroup>
47 <ItemGroup>
48 <Reference Include="Microsoft.CSharp" />
49 <Reference Include="System" />
50 <Reference Include="System.Data" />
51 <Reference Include="System.Drawing" />
52 <Reference Include="System.Web.DynamicData" />
53 <Reference Include="System.Web.Entity" />
54 <Reference Include="System.Web.ApplicationServices" />
55 <Reference Include="System.ComponentModel.DataAnnotations" />
56 <Reference Include="System.Core" />
57 <Reference Include="System.Data.DataSetExtensions" />
58 <Reference Include="System.Xml.Linq" />
59 <Reference Include="System.Web" />
60 <Reference Include="System.Web.Extensions" />
61 <Reference Include="System.Web.Abstractions" />
62 <Reference Include="System.Web.Routing" />
63 <Reference Include="System.Xml" />
64 <Reference Include="System.Configuration" />
65 <Reference Include="System.Web.Services" />
66 <Reference Include="System.EnterpriseServices" />
67 <Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
68 <Private>True</Private>
69 <HintPath>..\..\..\..\..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
70 </Reference>
71 <Reference Include="System.Net.Http">
72 </Reference>
73 <Reference Include="System.Net.Http.WebRequest">
74 </Reference>
75 <Reference Include="System.Web.Helpers, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
76 <Private>True</Private>
77 <HintPath>..\..\..\..\..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.Helpers.dll</HintPath>
78 </Reference>
79 <Reference Include="System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
80 <Private>True</Private>
81 <HintPath>..\..\..\..\..\packages\Microsoft.AspNet.Mvc.5.2.7\lib\net45\System.Web.Mvc.dll</HintPath>
82 </Reference>
83 <Reference Include="System.Web.Optimization">
84 <HintPath>..\..\..\..\..\packages\Microsoft.AspNet.Web.Optimization.1.1.3\lib\net40\System.Web.Optimization.dll</HintPath>
85 </Reference>
86 <Reference Include="System.Web.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
87 <Private>True</Private>
88 <HintPath>..\..\..\..\..\packages\Microsoft.AspNet.Razor.3.2.7\lib\net45\System.Web.Razor.dll</HintPath>
89 </Reference>
90 <Reference Include="System.Web.WebPages, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
91 <Private>True</Private>
92 <HintPath>..\..\..\..\..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.dll</HintPath>
93 </Reference>
94 <Reference Include="System.Web.WebPages.Deployment, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
95 <Private>True</Private>
96 <HintPath>..\..\..\..\..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.Deployment.dll</HintPath>
97 </Reference>
98 <Reference Include="System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
99 <Private>True</Private>
100 <HintPath>..\..\..\..\..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.Razor.dll</HintPath>
101 </Reference>
102 <Reference Include="Newtonsoft.Json">
103 <HintPath>..\..\..\..\..\packages\Newtonsoft.Json.12.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
104 </Reference>
105 <Reference Include="WebGrease">
106 <Private>True</Private>
107 <HintPath>..\..\..\..\..\packages\WebGrease.1.6.0\lib\WebGrease.dll</HintPath>
108 </Reference>
109 <Reference Include="Antlr3.Runtime">
110 <Private>True</Private>
111 <HintPath>..\..\..\..\..\packages\Antlr.3.5.0.2\lib\Antlr3.Runtime.dll</HintPath>
112 </Reference>
113 </ItemGroup>
114 <ItemGroup>
115 <Reference Include="Microsoft.CodeDom.Providers.DotNetCompilerPlatform">
116 <HintPath>..\..\..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll</HintPath>
117 </Reference>
118 </ItemGroup>
119 <ItemGroup>
120 <Compile Include="App_Start\BundleConfig.cs" />
121 <Compile Include="App_Start\FilterConfig.cs" />
122 <Compile Include="App_Start\RouteConfig.cs" />
123 <Compile Include="Controllers\HomeController.cs" />
124 <Compile Include="Global.asax.cs">
125 <DependentUpon>Global.asax</DependentUpon>
126 </Compile>
127 <Compile Include="Properties\AssemblyInfo.cs" />
128 </ItemGroup>
129 <ItemGroup>
130 <Content Include="Content\bootstrap-theme.css" />
131 <Content Include="Content\bootstrap.css" />
132 <Content Include="favicon.ico" />
133 <Content Include="fonts\glyphicons-halflings-regular.svg" />
134 <Content Include="Global.asax" />
135 <Content Include="Content\Site.css" />
136 <Content Include="Scripts\bootstrap.js" />
137 <Content Include="Scripts\bootstrap.min.js" />
138 <None Include="Scripts\jquery-3.4.1.intellisense.js" />
139 <Content Include="Scripts\jquery-3.4.1.js" />
140 <Content Include="Scripts\jquery-3.4.1.min.js" />
141 <Content Include="Scripts\jquery-3.4.1.slim.js" />
142 <Content Include="Scripts\jquery-3.4.1.slim.min.js" />
143 <None Include="Scripts\jquery.validate-vsdoc.js" />
144 <Content Include="Scripts\jquery.validate.js" />
145 <Content Include="Scripts\jquery.validate.min.js" />
146 <Content Include="Scripts\jquery.validate.unobtrusive.js" />
147 <Content Include="Scripts\jquery.validate.unobtrusive.min.js" />
148 <Content Include="Scripts\modernizr-2.8.3.js" />
149 <Content Include="Web.config" />
150 <Content Include="Web.Debug.config">
151 <DependentUpon>Web.config</DependentUpon>
152 </Content>
153 <Content Include="Web.Release.config">
154 <DependentUpon>Web.config</DependentUpon>
155 </Content>
156 <Content Include="Views\Web.config" />
157 <Content Include="Views\_ViewStart.cshtml" />
158 <Content Include="Views\Shared\Error.cshtml" />
159 <Content Include="Views\Shared\_Layout.cshtml" />
160 <Content Include="Views\Home\About.cshtml" />
161 <Content Include="Views\Home\Contact.cshtml" />
162 <Content Include="Views\Home\Index.cshtml" />
163 </ItemGroup>
164 <ItemGroup>
165 <Folder Include="App_Data\" />
166 <Folder Include="Models\" />
167 </ItemGroup>
168 <ItemGroup>
169 <None Include="packages.config" />
170 <Content Include="Scripts\jquery-3.4.1.slim.min.map" />
171 <Content Include="Scripts\jquery-3.4.1.min.map" />
172 </ItemGroup>
173 <ItemGroup>
174 <ProjectReference Include="..\CsprojClassLibraryNetFx\CsprojClassLibraryNetFx.csproj">
175 <Project>{984d615d-adb1-49b4-ae0b-4496ed963881}</Project>
176 <Name>CsprojClassLibraryNetFx</Name>
177 </ProjectReference>
178 </ItemGroup>
179 <PropertyGroup>
180 <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
181 <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
182 </PropertyGroup>
183 <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
184 <Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
185 <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
186 <Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
187 <AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
188 </Target>
189 <ProjectExtensions>
190 <VisualStudio>
191 <FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
192 <WebProjectProperties>
193 <UseIIS>True</UseIIS>
194 <AutoAssignPort>True</AutoAssignPort>
195 <DevelopmentServerPort>62308</DevelopmentServerPort>
196 <DevelopmentServerVPath>/</DevelopmentServerVPath>
197 <IISUrl>http://localhost:62308/</IISUrl>
198 <NTLMAuthentication>False</NTLMAuthentication>
199 <UseCustomServer>False</UseCustomServer>
200 <CustomServerUrl>
201 </CustomServerUrl>
202 <SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
203 </WebProjectProperties>
204 </FlavorProperties>
205 </VisualStudio>
206 </ProjectExtensions>
207 <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
208 <PropertyGroup>
209 <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
210 </PropertyGroup>
211 <Error Condition="!Exists('..\..\..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />
212 </Target>
213 <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
214 Other similar extension points exist, see Microsoft.Common.targets.
215 <Target Name="BeforeBuild">
216 </Target>
217 <Target Name="AfterBuild">
218 </Target> -->
219</Project> \ No newline at end of file
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/Global.asax b/src/test/wix/TestData/CsprojWebApplicationNetFx/Global.asax
new file mode 100644
index 00000000..ae7f922e
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/Global.asax
@@ -0,0 +1 @@
<%@ Application Codebehind="Global.asax.cs" Inherits="CsprojWebApplicationNetFx.MvcApplication" Language="C#" %>
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/Global.asax.cs b/src/test/wix/TestData/CsprojWebApplicationNetFx/Global.asax.cs
new file mode 100644
index 00000000..a420b363
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/Global.asax.cs
@@ -0,0 +1,21 @@
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Web;
5using System.Web.Mvc;
6using System.Web.Optimization;
7using System.Web.Routing;
8
9namespace CsprojWebApplicationNetFx
10{
11 public class MvcApplication : System.Web.HttpApplication
12 {
13 protected void Application_Start()
14 {
15 AreaRegistration.RegisterAllAreas();
16 FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
17 RouteConfig.RegisterRoutes(RouteTable.Routes);
18 BundleConfig.RegisterBundles(BundleTable.Bundles);
19 }
20 }
21}
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/Properties/AssemblyInfo.cs b/src/test/wix/TestData/CsprojWebApplicationNetFx/Properties/AssemblyInfo.cs
new file mode 100644
index 00000000..f7c0734e
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/Properties/AssemblyInfo.cs
@@ -0,0 +1,35 @@
1using System.Reflection;
2using System.Runtime.CompilerServices;
3using System.Runtime.InteropServices;
4
5// General Information about an assembly is controlled through the following
6// set of attributes. Change these attribute values to modify the information
7// associated with an assembly.
8[assembly: AssemblyTitle("CsprojWebApplicationNetFx")]
9[assembly: AssemblyDescription("")]
10[assembly: AssemblyConfiguration("")]
11[assembly: AssemblyCompany("")]
12[assembly: AssemblyProduct("CsprojWebApplicationNetFx")]
13[assembly: AssemblyCopyright("Copyright © 2021")]
14[assembly: AssemblyTrademark("")]
15[assembly: AssemblyCulture("")]
16
17// Setting ComVisible to false makes the types in this assembly not visible
18// to COM components. If you need to access a type in this assembly from
19// COM, set the ComVisible attribute to true on that type.
20[assembly: ComVisible(false)]
21
22// The following GUID is for the ID of the typelib if this project is exposed to COM
23[assembly: Guid("2de793d7-a95c-4194-abff-df050a941817")]
24
25// Version information for an assembly consists of the following four values:
26//
27// Major Version
28// Minor Version
29// Build Number
30// Revision
31//
32// You can specify all the values or you can default the Revision and Build Numbers
33// by using the '*' as shown below:
34[assembly: AssemblyVersion("1.0.0.0")]
35[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/bootstrap.js b/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/bootstrap.js
new file mode 100644
index 00000000..170bd608
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/bootstrap.js
@@ -0,0 +1,2580 @@
1/*!
2 * Bootstrap v3.4.1 (https://getbootstrap.com/)
3 * Copyright 2011-2019 Twitter, Inc.
4 * Licensed under the MIT license
5 */
6
7if (typeof jQuery === 'undefined') {
8 throw new Error('Bootstrap\'s JavaScript requires jQuery')
9}
10
11+function ($) {
12 'use strict';
13 var version = $.fn.jquery.split(' ')[0].split('.')
14 if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) {
15 throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4')
16 }
17}(jQuery);
18
19/* ========================================================================
20 * Bootstrap: transition.js v3.4.1
21 * https://getbootstrap.com/docs/3.4/javascript/#transitions
22 * ========================================================================
23 * Copyright 2011-2019 Twitter, Inc.
24 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
25 * ======================================================================== */
26
27
28+function ($) {
29 'use strict';
30
31 // CSS TRANSITION SUPPORT (Shoutout: https://modernizr.com/)
32 // ============================================================
33
34 function transitionEnd() {
35 var el = document.createElement('bootstrap')
36
37 var transEndEventNames = {
38 WebkitTransition : 'webkitTransitionEnd',
39 MozTransition : 'transitionend',
40 OTransition : 'oTransitionEnd otransitionend',
41 transition : 'transitionend'
42 }
43
44 for (var name in transEndEventNames) {
45 if (el.style[name] !== undefined) {
46 return { end: transEndEventNames[name] }
47 }
48 }
49
50 return false // explicit for ie8 ( ._.)
51 }
52
53 // https://blog.alexmaccaw.com/css-transitions
54 $.fn.emulateTransitionEnd = function (duration) {
55 var called = false
56 var $el = this
57 $(this).one('bsTransitionEnd', function () { called = true })
58 var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
59 setTimeout(callback, duration)
60 return this
61 }
62
63 $(function () {
64 $.support.transition = transitionEnd()
65
66 if (!$.support.transition) return
67
68 $.event.special.bsTransitionEnd = {
69 bindType: $.support.transition.end,
70 delegateType: $.support.transition.end,
71 handle: function (e) {
72 if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
73 }
74 }
75 })
76
77}(jQuery);
78
79/* ========================================================================
80 * Bootstrap: alert.js v3.4.1
81 * https://getbootstrap.com/docs/3.4/javascript/#alerts
82 * ========================================================================
83 * Copyright 2011-2019 Twitter, Inc.
84 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
85 * ======================================================================== */
86
87
88+function ($) {
89 'use strict';
90
91 // ALERT CLASS DEFINITION
92 // ======================
93
94 var dismiss = '[data-dismiss="alert"]'
95 var Alert = function (el) {
96 $(el).on('click', dismiss, this.close)
97 }
98
99 Alert.VERSION = '3.4.1'
100
101 Alert.TRANSITION_DURATION = 150
102
103 Alert.prototype.close = function (e) {
104 var $this = $(this)
105 var selector = $this.attr('data-target')
106
107 if (!selector) {
108 selector = $this.attr('href')
109 selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
110 }
111
112 selector = selector === '#' ? [] : selector
113 var $parent = $(document).find(selector)
114
115 if (e) e.preventDefault()
116
117 if (!$parent.length) {
118 $parent = $this.closest('.alert')
119 }
120
121 $parent.trigger(e = $.Event('close.bs.alert'))
122
123 if (e.isDefaultPrevented()) return
124
125 $parent.removeClass('in')
126
127 function removeElement() {
128 // detach from parent, fire event then clean up data
129 $parent.detach().trigger('closed.bs.alert').remove()
130 }
131
132 $.support.transition && $parent.hasClass('fade') ?
133 $parent
134 .one('bsTransitionEnd', removeElement)
135 .emulateTransitionEnd(Alert.TRANSITION_DURATION) :
136 removeElement()
137 }
138
139
140 // ALERT PLUGIN DEFINITION
141 // =======================
142
143 function Plugin(option) {
144 return this.each(function () {
145 var $this = $(this)
146 var data = $this.data('bs.alert')
147
148 if (!data) $this.data('bs.alert', (data = new Alert(this)))
149 if (typeof option == 'string') data[option].call($this)
150 })
151 }
152
153 var old = $.fn.alert
154
155 $.fn.alert = Plugin
156 $.fn.alert.Constructor = Alert
157
158
159 // ALERT NO CONFLICT
160 // =================
161
162 $.fn.alert.noConflict = function () {
163 $.fn.alert = old
164 return this
165 }
166
167
168 // ALERT DATA-API
169 // ==============
170
171 $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
172
173}(jQuery);
174
175/* ========================================================================
176 * Bootstrap: button.js v3.4.1
177 * https://getbootstrap.com/docs/3.4/javascript/#buttons
178 * ========================================================================
179 * Copyright 2011-2019 Twitter, Inc.
180 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
181 * ======================================================================== */
182
183
184+function ($) {
185 'use strict';
186
187 // BUTTON PUBLIC CLASS DEFINITION
188 // ==============================
189
190 var Button = function (element, options) {
191 this.$element = $(element)
192 this.options = $.extend({}, Button.DEFAULTS, options)
193 this.isLoading = false
194 }
195
196 Button.VERSION = '3.4.1'
197
198 Button.DEFAULTS = {
199 loadingText: 'loading...'
200 }
201
202 Button.prototype.setState = function (state) {
203 var d = 'disabled'
204 var $el = this.$element
205 var val = $el.is('input') ? 'val' : 'html'
206 var data = $el.data()
207
208 state += 'Text'
209
210 if (data.resetText == null) $el.data('resetText', $el[val]())
211
212 // push to event loop to allow forms to submit
213 setTimeout($.proxy(function () {
214 $el[val](data[state] == null ? this.options[state] : data[state])
215
216 if (state == 'loadingText') {
217 this.isLoading = true
218 $el.addClass(d).attr(d, d).prop(d, true)
219 } else if (this.isLoading) {
220 this.isLoading = false
221 $el.removeClass(d).removeAttr(d).prop(d, false)
222 }
223 }, this), 0)
224 }
225
226 Button.prototype.toggle = function () {
227 var changed = true
228 var $parent = this.$element.closest('[data-toggle="buttons"]')
229
230 if ($parent.length) {
231 var $input = this.$element.find('input')
232 if ($input.prop('type') == 'radio') {
233 if ($input.prop('checked')) changed = false
234 $parent.find('.active').removeClass('active')
235 this.$element.addClass('active')
236 } else if ($input.prop('type') == 'checkbox') {
237 if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false
238 this.$element.toggleClass('active')
239 }
240 $input.prop('checked', this.$element.hasClass('active'))
241 if (changed) $input.trigger('change')
242 } else {
243 this.$element.attr('aria-pressed', !this.$element.hasClass('active'))
244 this.$element.toggleClass('active')
245 }
246 }
247
248
249 // BUTTON PLUGIN DEFINITION
250 // ========================
251
252 function Plugin(option) {
253 return this.each(function () {
254 var $this = $(this)
255 var data = $this.data('bs.button')
256 var options = typeof option == 'object' && option
257
258 if (!data) $this.data('bs.button', (data = new Button(this, options)))
259
260 if (option == 'toggle') data.toggle()
261 else if (option) data.setState(option)
262 })
263 }
264
265 var old = $.fn.button
266
267 $.fn.button = Plugin
268 $.fn.button.Constructor = Button
269
270
271 // BUTTON NO CONFLICT
272 // ==================
273
274 $.fn.button.noConflict = function () {
275 $.fn.button = old
276 return this
277 }
278
279
280 // BUTTON DATA-API
281 // ===============
282
283 $(document)
284 .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
285 var $btn = $(e.target).closest('.btn')
286 Plugin.call($btn, 'toggle')
287 if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) {
288 // Prevent double click on radios, and the double selections (so cancellation) on checkboxes
289 e.preventDefault()
290 // The target component still receive the focus
291 if ($btn.is('input,button')) $btn.trigger('focus')
292 else $btn.find('input:visible,button:visible').first().trigger('focus')
293 }
294 })
295 .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
296 $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
297 })
298
299}(jQuery);
300
301/* ========================================================================
302 * Bootstrap: carousel.js v3.4.1
303 * https://getbootstrap.com/docs/3.4/javascript/#carousel
304 * ========================================================================
305 * Copyright 2011-2019 Twitter, Inc.
306 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
307 * ======================================================================== */
308
309
310+function ($) {
311 'use strict';
312
313 // CAROUSEL CLASS DEFINITION
314 // =========================
315
316 var Carousel = function (element, options) {
317 this.$element = $(element)
318 this.$indicators = this.$element.find('.carousel-indicators')
319 this.options = options
320 this.paused = null
321 this.sliding = null
322 this.interval = null
323 this.$active = null
324 this.$items = null
325
326 this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))
327
328 this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element
329 .on('mouseenter.bs.carousel', $.proxy(this.pause, this))
330 .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
331 }
332
333 Carousel.VERSION = '3.4.1'
334
335 Carousel.TRANSITION_DURATION = 600
336
337 Carousel.DEFAULTS = {
338 interval: 5000,
339 pause: 'hover',
340 wrap: true,
341 keyboard: true
342 }
343
344 Carousel.prototype.keydown = function (e) {
345 if (/input|textarea/i.test(e.target.tagName)) return
346 switch (e.which) {
347 case 37: this.prev(); break
348 case 39: this.next(); break
349 default: return
350 }
351
352 e.preventDefault()
353 }
354
355 Carousel.prototype.cycle = function (e) {
356 e || (this.paused = false)
357
358 this.interval && clearInterval(this.interval)
359
360 this.options.interval
361 && !this.paused
362 && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
363
364 return this
365 }
366
367 Carousel.prototype.getItemIndex = function (item) {
368 this.$items = item.parent().children('.item')
369 return this.$items.index(item || this.$active)
370 }
371
372 Carousel.prototype.getItemForDirection = function (direction, active) {
373 var activeIndex = this.getItemIndex(active)
374 var willWrap = (direction == 'prev' && activeIndex === 0)
375 || (direction == 'next' && activeIndex == (this.$items.length - 1))
376 if (willWrap && !this.options.wrap) return active
377 var delta = direction == 'prev' ? -1 : 1
378 var itemIndex = (activeIndex + delta) % this.$items.length
379 return this.$items.eq(itemIndex)
380 }
381
382 Carousel.prototype.to = function (pos) {
383 var that = this
384 var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))
385
386 if (pos > (this.$items.length - 1) || pos < 0) return
387
388 if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid"
389 if (activeIndex == pos) return this.pause().cycle()
390
391 return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))
392 }
393
394 Carousel.prototype.pause = function (e) {
395 e || (this.paused = true)
396
397 if (this.$element.find('.next, .prev').length && $.support.transition) {
398 this.$element.trigger($.support.transition.end)
399 this.cycle(true)
400 }
401
402 this.interval = clearInterval(this.interval)
403
404 return this
405 }
406
407 Carousel.prototype.next = function () {
408 if (this.sliding) return
409 return this.slide('next')
410 }
411
412 Carousel.prototype.prev = function () {
413 if (this.sliding) return
414 return this.slide('prev')
415 }
416
417 Carousel.prototype.slide = function (type, next) {
418 var $active = this.$element.find('.item.active')
419 var $next = next || this.getItemForDirection(type, $active)
420 var isCycling = this.interval
421 var direction = type == 'next' ? 'left' : 'right'
422 var that = this
423
424 if ($next.hasClass('active')) return (this.sliding = false)
425
426 var relatedTarget = $next[0]
427 var slideEvent = $.Event('slide.bs.carousel', {
428 relatedTarget: relatedTarget,
429 direction: direction
430 })
431 this.$element.trigger(slideEvent)
432 if (slideEvent.isDefaultPrevented()) return
433
434 this.sliding = true
435
436 isCycling && this.pause()
437
438 if (this.$indicators.length) {
439 this.$indicators.find('.active').removeClass('active')
440 var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])
441 $nextIndicator && $nextIndicator.addClass('active')
442 }
443
444 var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
445 if ($.support.transition && this.$element.hasClass('slide')) {
446 $next.addClass(type)
447 if (typeof $next === 'object' && $next.length) {
448 $next[0].offsetWidth // force reflow
449 }
450 $active.addClass(direction)
451 $next.addClass(direction)
452 $active
453 .one('bsTransitionEnd', function () {
454 $next.removeClass([type, direction].join(' ')).addClass('active')
455 $active.removeClass(['active', direction].join(' '))
456 that.sliding = false
457 setTimeout(function () {
458 that.$element.trigger(slidEvent)
459 }, 0)
460 })
461 .emulateTransitionEnd(Carousel.TRANSITION_DURATION)
462 } else {
463 $active.removeClass('active')
464 $next.addClass('active')
465 this.sliding = false
466 this.$element.trigger(slidEvent)
467 }
468
469 isCycling && this.cycle()
470
471 return this
472 }
473
474
475 // CAROUSEL PLUGIN DEFINITION
476 // ==========================
477
478 function Plugin(option) {
479 return this.each(function () {
480 var $this = $(this)
481 var data = $this.data('bs.carousel')
482 var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
483 var action = typeof option == 'string' ? option : options.slide
484
485 if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
486 if (typeof option == 'number') data.to(option)
487 else if (action) data[action]()
488 else if (options.interval) data.pause().cycle()
489 })
490 }
491
492 var old = $.fn.carousel
493
494 $.fn.carousel = Plugin
495 $.fn.carousel.Constructor = Carousel
496
497
498 // CAROUSEL NO CONFLICT
499 // ====================
500
501 $.fn.carousel.noConflict = function () {
502 $.fn.carousel = old
503 return this
504 }
505
506
507 // CAROUSEL DATA-API
508 // =================
509
510 var clickHandler = function (e) {
511 var $this = $(this)
512 var href = $this.attr('href')
513 if (href) {
514 href = href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
515 }
516
517 var target = $this.attr('data-target') || href
518 var $target = $(document).find(target)
519
520 if (!$target.hasClass('carousel')) return
521
522 var options = $.extend({}, $target.data(), $this.data())
523 var slideIndex = $this.attr('data-slide-to')
524 if (slideIndex) options.interval = false
525
526 Plugin.call($target, options)
527
528 if (slideIndex) {
529 $target.data('bs.carousel').to(slideIndex)
530 }
531
532 e.preventDefault()
533 }
534
535 $(document)
536 .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)
537 .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)
538
539 $(window).on('load', function () {
540 $('[data-ride="carousel"]').each(function () {
541 var $carousel = $(this)
542 Plugin.call($carousel, $carousel.data())
543 })
544 })
545
546}(jQuery);
547
548/* ========================================================================
549 * Bootstrap: collapse.js v3.4.1
550 * https://getbootstrap.com/docs/3.4/javascript/#collapse
551 * ========================================================================
552 * Copyright 2011-2019 Twitter, Inc.
553 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
554 * ======================================================================== */
555
556/* jshint latedef: false */
557
558+function ($) {
559 'use strict';
560
561 // COLLAPSE PUBLIC CLASS DEFINITION
562 // ================================
563
564 var Collapse = function (element, options) {
565 this.$element = $(element)
566 this.options = $.extend({}, Collapse.DEFAULTS, options)
567 this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' +
568 '[data-toggle="collapse"][data-target="#' + element.id + '"]')
569 this.transitioning = null
570
571 if (this.options.parent) {
572 this.$parent = this.getParent()
573 } else {
574 this.addAriaAndCollapsedClass(this.$element, this.$trigger)
575 }
576
577 if (this.options.toggle) this.toggle()
578 }
579
580 Collapse.VERSION = '3.4.1'
581
582 Collapse.TRANSITION_DURATION = 350
583
584 Collapse.DEFAULTS = {
585 toggle: true
586 }
587
588 Collapse.prototype.dimension = function () {
589 var hasWidth = this.$element.hasClass('width')
590 return hasWidth ? 'width' : 'height'
591 }
592
593 Collapse.prototype.show = function () {
594 if (this.transitioning || this.$element.hasClass('in')) return
595
596 var activesData
597 var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')
598
599 if (actives && actives.length) {
600 activesData = actives.data('bs.collapse')
601 if (activesData && activesData.transitioning) return
602 }
603
604 var startEvent = $.Event('show.bs.collapse')
605 this.$element.trigger(startEvent)
606 if (startEvent.isDefaultPrevented()) return
607
608 if (actives && actives.length) {
609 Plugin.call(actives, 'hide')
610 activesData || actives.data('bs.collapse', null)
611 }
612
613 var dimension = this.dimension()
614
615 this.$element
616 .removeClass('collapse')
617 .addClass('collapsing')[dimension](0)
618 .attr('aria-expanded', true)
619
620 this.$trigger
621 .removeClass('collapsed')
622 .attr('aria-expanded', true)
623
624 this.transitioning = 1
625
626 var complete = function () {
627 this.$element
628 .removeClass('collapsing')
629 .addClass('collapse in')[dimension]('')
630 this.transitioning = 0
631 this.$element
632 .trigger('shown.bs.collapse')
633 }
634
635 if (!$.support.transition) return complete.call(this)
636
637 var scrollSize = $.camelCase(['scroll', dimension].join('-'))
638
639 this.$element
640 .one('bsTransitionEnd', $.proxy(complete, this))
641 .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])
642 }
643
644 Collapse.prototype.hide = function () {
645 if (this.transitioning || !this.$element.hasClass('in')) return
646
647 var startEvent = $.Event('hide.bs.collapse')
648 this.$element.trigger(startEvent)
649 if (startEvent.isDefaultPrevented()) return
650
651 var dimension = this.dimension()
652
653 this.$element[dimension](this.$element[dimension]())[0].offsetHeight
654
655 this.$element
656 .addClass('collapsing')
657 .removeClass('collapse in')
658 .attr('aria-expanded', false)
659
660 this.$trigger
661 .addClass('collapsed')
662 .attr('aria-expanded', false)
663
664 this.transitioning = 1
665
666 var complete = function () {
667 this.transitioning = 0
668 this.$element
669 .removeClass('collapsing')
670 .addClass('collapse')
671 .trigger('hidden.bs.collapse')
672 }
673
674 if (!$.support.transition) return complete.call(this)
675
676 this.$element
677 [dimension](0)
678 .one('bsTransitionEnd', $.proxy(complete, this))
679 .emulateTransitionEnd(Collapse.TRANSITION_DURATION)
680 }
681
682 Collapse.prototype.toggle = function () {
683 this[this.$element.hasClass('in') ? 'hide' : 'show']()
684 }
685
686 Collapse.prototype.getParent = function () {
687 return $(document).find(this.options.parent)
688 .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
689 .each($.proxy(function (i, element) {
690 var $element = $(element)
691 this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)
692 }, this))
693 .end()
694 }
695
696 Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {
697 var isOpen = $element.hasClass('in')
698
699 $element.attr('aria-expanded', isOpen)
700 $trigger
701 .toggleClass('collapsed', !isOpen)
702 .attr('aria-expanded', isOpen)
703 }
704
705 function getTargetFromTrigger($trigger) {
706 var href
707 var target = $trigger.attr('data-target')
708 || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
709
710 return $(document).find(target)
711 }
712
713
714 // COLLAPSE PLUGIN DEFINITION
715 // ==========================
716
717 function Plugin(option) {
718 return this.each(function () {
719 var $this = $(this)
720 var data = $this.data('bs.collapse')
721 var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
722
723 if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false
724 if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
725 if (typeof option == 'string') data[option]()
726 })
727 }
728
729 var old = $.fn.collapse
730
731 $.fn.collapse = Plugin
732 $.fn.collapse.Constructor = Collapse
733
734
735 // COLLAPSE NO CONFLICT
736 // ====================
737
738 $.fn.collapse.noConflict = function () {
739 $.fn.collapse = old
740 return this
741 }
742
743
744 // COLLAPSE DATA-API
745 // =================
746
747 $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
748 var $this = $(this)
749
750 if (!$this.attr('data-target')) e.preventDefault()
751
752 var $target = getTargetFromTrigger($this)
753 var data = $target.data('bs.collapse')
754 var option = data ? 'toggle' : $this.data()
755
756 Plugin.call($target, option)
757 })
758
759}(jQuery);
760
761/* ========================================================================
762 * Bootstrap: dropdown.js v3.4.1
763 * https://getbootstrap.com/docs/3.4/javascript/#dropdowns
764 * ========================================================================
765 * Copyright 2011-2019 Twitter, Inc.
766 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
767 * ======================================================================== */
768
769
770+function ($) {
771 'use strict';
772
773 // DROPDOWN CLASS DEFINITION
774 // =========================
775
776 var backdrop = '.dropdown-backdrop'
777 var toggle = '[data-toggle="dropdown"]'
778 var Dropdown = function (element) {
779 $(element).on('click.bs.dropdown', this.toggle)
780 }
781
782 Dropdown.VERSION = '3.4.1'
783
784 function getParent($this) {
785 var selector = $this.attr('data-target')
786
787 if (!selector) {
788 selector = $this.attr('href')
789 selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
790 }
791
792 var $parent = selector !== '#' ? $(document).find(selector) : null
793
794 return $parent && $parent.length ? $parent : $this.parent()
795 }
796
797 function clearMenus(e) {
798 if (e && e.which === 3) return
799 $(backdrop).remove()
800 $(toggle).each(function () {
801 var $this = $(this)
802 var $parent = getParent($this)
803 var relatedTarget = { relatedTarget: this }
804
805 if (!$parent.hasClass('open')) return
806
807 if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return
808
809 $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
810
811 if (e.isDefaultPrevented()) return
812
813 $this.attr('aria-expanded', 'false')
814 $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))
815 })
816 }
817
818 Dropdown.prototype.toggle = function (e) {
819 var $this = $(this)
820
821 if ($this.is('.disabled, :disabled')) return
822
823 var $parent = getParent($this)
824 var isActive = $parent.hasClass('open')
825
826 clearMenus()
827
828 if (!isActive) {
829 if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
830 // if mobile we use a backdrop because click events don't delegate
831 $(document.createElement('div'))
832 .addClass('dropdown-backdrop')
833 .insertAfter($(this))
834 .on('click', clearMenus)
835 }
836
837 var relatedTarget = { relatedTarget: this }
838 $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
839
840 if (e.isDefaultPrevented()) return
841
842 $this
843 .trigger('focus')
844 .attr('aria-expanded', 'true')
845
846 $parent
847 .toggleClass('open')
848 .trigger($.Event('shown.bs.dropdown', relatedTarget))
849 }
850
851 return false
852 }
853
854 Dropdown.prototype.keydown = function (e) {
855 if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return
856
857 var $this = $(this)
858
859 e.preventDefault()
860 e.stopPropagation()
861
862 if ($this.is('.disabled, :disabled')) return
863
864 var $parent = getParent($this)
865 var isActive = $parent.hasClass('open')
866
867 if (!isActive && e.which != 27 || isActive && e.which == 27) {
868 if (e.which == 27) $parent.find(toggle).trigger('focus')
869 return $this.trigger('click')
870 }
871
872 var desc = ' li:not(.disabled):visible a'
873 var $items = $parent.find('.dropdown-menu' + desc)
874
875 if (!$items.length) return
876
877 var index = $items.index(e.target)
878
879 if (e.which == 38 && index > 0) index-- // up
880 if (e.which == 40 && index < $items.length - 1) index++ // down
881 if (!~index) index = 0
882
883 $items.eq(index).trigger('focus')
884 }
885
886
887 // DROPDOWN PLUGIN DEFINITION
888 // ==========================
889
890 function Plugin(option) {
891 return this.each(function () {
892 var $this = $(this)
893 var data = $this.data('bs.dropdown')
894
895 if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
896 if (typeof option == 'string') data[option].call($this)
897 })
898 }
899
900 var old = $.fn.dropdown
901
902 $.fn.dropdown = Plugin
903 $.fn.dropdown.Constructor = Dropdown
904
905
906 // DROPDOWN NO CONFLICT
907 // ====================
908
909 $.fn.dropdown.noConflict = function () {
910 $.fn.dropdown = old
911 return this
912 }
913
914
915 // APPLY TO STANDARD DROPDOWN ELEMENTS
916 // ===================================
917
918 $(document)
919 .on('click.bs.dropdown.data-api', clearMenus)
920 .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
921 .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
922 .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
923 .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)
924
925}(jQuery);
926
927/* ========================================================================
928 * Bootstrap: modal.js v3.4.1
929 * https://getbootstrap.com/docs/3.4/javascript/#modals
930 * ========================================================================
931 * Copyright 2011-2019 Twitter, Inc.
932 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
933 * ======================================================================== */
934
935
936+function ($) {
937 'use strict';
938
939 // MODAL CLASS DEFINITION
940 // ======================
941
942 var Modal = function (element, options) {
943 this.options = options
944 this.$body = $(document.body)
945 this.$element = $(element)
946 this.$dialog = this.$element.find('.modal-dialog')
947 this.$backdrop = null
948 this.isShown = null
949 this.originalBodyPad = null
950 this.scrollbarWidth = 0
951 this.ignoreBackdropClick = false
952 this.fixedContent = '.navbar-fixed-top, .navbar-fixed-bottom'
953
954 if (this.options.remote) {
955 this.$element
956 .find('.modal-content')
957 .load(this.options.remote, $.proxy(function () {
958 this.$element.trigger('loaded.bs.modal')
959 }, this))
960 }
961 }
962
963 Modal.VERSION = '3.4.1'
964
965 Modal.TRANSITION_DURATION = 300
966 Modal.BACKDROP_TRANSITION_DURATION = 150
967
968 Modal.DEFAULTS = {
969 backdrop: true,
970 keyboard: true,
971 show: true
972 }
973
974 Modal.prototype.toggle = function (_relatedTarget) {
975 return this.isShown ? this.hide() : this.show(_relatedTarget)
976 }
977
978 Modal.prototype.show = function (_relatedTarget) {
979 var that = this
980 var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
981
982 this.$element.trigger(e)
983
984 if (this.isShown || e.isDefaultPrevented()) return
985
986 this.isShown = true
987
988 this.checkScrollbar()
989 this.setScrollbar()
990 this.$body.addClass('modal-open')
991
992 this.escape()
993 this.resize()
994
995 this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
996
997 this.$dialog.on('mousedown.dismiss.bs.modal', function () {
998 that.$element.one('mouseup.dismiss.bs.modal', function (e) {
999 if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true
1000 })
1001 })
1002
1003 this.backdrop(function () {
1004 var transition = $.support.transition && that.$element.hasClass('fade')
1005
1006 if (!that.$element.parent().length) {
1007 that.$element.appendTo(that.$body) // don't move modals dom position
1008 }
1009
1010 that.$element
1011 .show()
1012 .scrollTop(0)
1013
1014 that.adjustDialog()
1015
1016 if (transition) {
1017 that.$element[0].offsetWidth // force reflow
1018 }
1019
1020 that.$element.addClass('in')
1021
1022 that.enforceFocus()
1023
1024 var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
1025
1026 transition ?
1027 that.$dialog // wait for modal to slide in
1028 .one('bsTransitionEnd', function () {
1029 that.$element.trigger('focus').trigger(e)
1030 })
1031 .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
1032 that.$element.trigger('focus').trigger(e)
1033 })
1034 }
1035
1036 Modal.prototype.hide = function (e) {
1037 if (e) e.preventDefault()
1038
1039 e = $.Event('hide.bs.modal')
1040
1041 this.$element.trigger(e)
1042
1043 if (!this.isShown || e.isDefaultPrevented()) return
1044
1045 this.isShown = false
1046
1047 this.escape()
1048 this.resize()
1049
1050 $(document).off('focusin.bs.modal')
1051
1052 this.$element
1053 .removeClass('in')
1054 .off('click.dismiss.bs.modal')
1055 .off('mouseup.dismiss.bs.modal')
1056
1057 this.$dialog.off('mousedown.dismiss.bs.modal')
1058
1059 $.support.transition && this.$element.hasClass('fade') ?
1060 this.$element
1061 .one('bsTransitionEnd', $.proxy(this.hideModal, this))
1062 .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
1063 this.hideModal()
1064 }
1065
1066 Modal.prototype.enforceFocus = function () {
1067 $(document)
1068 .off('focusin.bs.modal') // guard against infinite focus loop
1069 .on('focusin.bs.modal', $.proxy(function (e) {
1070 if (document !== e.target &&
1071 this.$element[0] !== e.target &&
1072 !this.$element.has(e.target).length) {
1073 this.$element.trigger('focus')
1074 }
1075 }, this))
1076 }
1077
1078 Modal.prototype.escape = function () {
1079 if (this.isShown && this.options.keyboard) {
1080 this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {
1081 e.which == 27 && this.hide()
1082 }, this))
1083 } else if (!this.isShown) {
1084 this.$element.off('keydown.dismiss.bs.modal')
1085 }
1086 }
1087
1088 Modal.prototype.resize = function () {
1089 if (this.isShown) {
1090 $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))
1091 } else {
1092 $(window).off('resize.bs.modal')
1093 }
1094 }
1095
1096 Modal.prototype.hideModal = function () {
1097 var that = this
1098 this.$element.hide()
1099 this.backdrop(function () {
1100 that.$body.removeClass('modal-open')
1101 that.resetAdjustments()
1102 that.resetScrollbar()
1103 that.$element.trigger('hidden.bs.modal')
1104 })
1105 }
1106
1107 Modal.prototype.removeBackdrop = function () {
1108 this.$backdrop && this.$backdrop.remove()
1109 this.$backdrop = null
1110 }
1111
1112 Modal.prototype.backdrop = function (callback) {
1113 var that = this
1114 var animate = this.$element.hasClass('fade') ? 'fade' : ''
1115
1116 if (this.isShown && this.options.backdrop) {
1117 var doAnimate = $.support.transition && animate
1118
1119 this.$backdrop = $(document.createElement('div'))
1120 .addClass('modal-backdrop ' + animate)
1121 .appendTo(this.$body)
1122
1123 this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
1124 if (this.ignoreBackdropClick) {
1125 this.ignoreBackdropClick = false
1126 return
1127 }
1128 if (e.target !== e.currentTarget) return
1129 this.options.backdrop == 'static'
1130 ? this.$element[0].focus()
1131 : this.hide()
1132 }, this))
1133
1134 if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
1135
1136 this.$backdrop.addClass('in')
1137
1138 if (!callback) return
1139
1140 doAnimate ?
1141 this.$backdrop
1142 .one('bsTransitionEnd', callback)
1143 .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
1144 callback()
1145
1146 } else if (!this.isShown && this.$backdrop) {
1147 this.$backdrop.removeClass('in')
1148
1149 var callbackRemove = function () {
1150 that.removeBackdrop()
1151 callback && callback()
1152 }
1153 $.support.transition && this.$element.hasClass('fade') ?
1154 this.$backdrop
1155 .one('bsTransitionEnd', callbackRemove)
1156 .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
1157 callbackRemove()
1158
1159 } else if (callback) {
1160 callback()
1161 }
1162 }
1163
1164 // these following methods are used to handle overflowing modals
1165
1166 Modal.prototype.handleUpdate = function () {
1167 this.adjustDialog()
1168 }
1169
1170 Modal.prototype.adjustDialog = function () {
1171 var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight
1172
1173 this.$element.css({
1174 paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
1175 paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
1176 })
1177 }
1178
1179 Modal.prototype.resetAdjustments = function () {
1180 this.$element.css({
1181 paddingLeft: '',
1182 paddingRight: ''
1183 })
1184 }
1185
1186 Modal.prototype.checkScrollbar = function () {
1187 var fullWindowWidth = window.innerWidth
1188 if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8
1189 var documentElementRect = document.documentElement.getBoundingClientRect()
1190 fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)
1191 }
1192 this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth
1193 this.scrollbarWidth = this.measureScrollbar()
1194 }
1195
1196 Modal.prototype.setScrollbar = function () {
1197 var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
1198 this.originalBodyPad = document.body.style.paddingRight || ''
1199 var scrollbarWidth = this.scrollbarWidth
1200 if (this.bodyIsOverflowing) {
1201 this.$body.css('padding-right', bodyPad + scrollbarWidth)
1202 $(this.fixedContent).each(function (index, element) {
1203 var actualPadding = element.style.paddingRight
1204 var calculatedPadding = $(element).css('padding-right')
1205 $(element)
1206 .data('padding-right', actualPadding)
1207 .css('padding-right', parseFloat(calculatedPadding) + scrollbarWidth + 'px')
1208 })
1209 }
1210 }
1211
1212 Modal.prototype.resetScrollbar = function () {
1213 this.$body.css('padding-right', this.originalBodyPad)
1214 $(this.fixedContent).each(function (index, element) {
1215 var padding = $(element).data('padding-right')
1216 $(element).removeData('padding-right')
1217 element.style.paddingRight = padding ? padding : ''
1218 })
1219 }
1220
1221 Modal.prototype.measureScrollbar = function () { // thx walsh
1222 var scrollDiv = document.createElement('div')
1223 scrollDiv.className = 'modal-scrollbar-measure'
1224 this.$body.append(scrollDiv)
1225 var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth
1226 this.$body[0].removeChild(scrollDiv)
1227 return scrollbarWidth
1228 }
1229
1230
1231 // MODAL PLUGIN DEFINITION
1232 // =======================
1233
1234 function Plugin(option, _relatedTarget) {
1235 return this.each(function () {
1236 var $this = $(this)
1237 var data = $this.data('bs.modal')
1238 var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
1239
1240 if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
1241 if (typeof option == 'string') data[option](_relatedTarget)
1242 else if (options.show) data.show(_relatedTarget)
1243 })
1244 }
1245
1246 var old = $.fn.modal
1247
1248 $.fn.modal = Plugin
1249 $.fn.modal.Constructor = Modal
1250
1251
1252 // MODAL NO CONFLICT
1253 // =================
1254
1255 $.fn.modal.noConflict = function () {
1256 $.fn.modal = old
1257 return this
1258 }
1259
1260
1261 // MODAL DATA-API
1262 // ==============
1263
1264 $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
1265 var $this = $(this)
1266 var href = $this.attr('href')
1267 var target = $this.attr('data-target') ||
1268 (href && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
1269
1270 var $target = $(document).find(target)
1271 var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
1272
1273 if ($this.is('a')) e.preventDefault()
1274
1275 $target.one('show.bs.modal', function (showEvent) {
1276 if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown
1277 $target.one('hidden.bs.modal', function () {
1278 $this.is(':visible') && $this.trigger('focus')
1279 })
1280 })
1281 Plugin.call($target, option, this)
1282 })
1283
1284}(jQuery);
1285
1286/* ========================================================================
1287 * Bootstrap: tooltip.js v3.4.1
1288 * https://getbootstrap.com/docs/3.4/javascript/#tooltip
1289 * Inspired by the original jQuery.tipsy by Jason Frame
1290 * ========================================================================
1291 * Copyright 2011-2019 Twitter, Inc.
1292 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1293 * ======================================================================== */
1294
1295+function ($) {
1296 'use strict';
1297
1298 var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']
1299
1300 var uriAttrs = [
1301 'background',
1302 'cite',
1303 'href',
1304 'itemtype',
1305 'longdesc',
1306 'poster',
1307 'src',
1308 'xlink:href'
1309 ]
1310
1311 var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i
1312
1313 var DefaultWhitelist = {
1314 // Global attributes allowed on any supplied element below.
1315 '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
1316 a: ['target', 'href', 'title', 'rel'],
1317 area: [],
1318 b: [],
1319 br: [],
1320 col: [],
1321 code: [],
1322 div: [],
1323 em: [],
1324 hr: [],
1325 h1: [],
1326 h2: [],
1327 h3: [],
1328 h4: [],
1329 h5: [],
1330 h6: [],
1331 i: [],
1332 img: ['src', 'alt', 'title', 'width', 'height'],
1333 li: [],
1334 ol: [],
1335 p: [],
1336 pre: [],
1337 s: [],
1338 small: [],
1339 span: [],
1340 sub: [],
1341 sup: [],
1342 strong: [],
1343 u: [],
1344 ul: []
1345 }
1346
1347 /**
1348 * A pattern that recognizes a commonly useful subset of URLs that are safe.
1349 *
1350 * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
1351 */
1352 var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi
1353
1354 /**
1355 * A pattern that matches safe data URLs. Only matches image, video and audio types.
1356 *
1357 * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
1358 */
1359 var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i
1360
1361 function allowedAttribute(attr, allowedAttributeList) {
1362 var attrName = attr.nodeName.toLowerCase()
1363
1364 if ($.inArray(attrName, allowedAttributeList) !== -1) {
1365 if ($.inArray(attrName, uriAttrs) !== -1) {
1366 return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))
1367 }
1368
1369 return true
1370 }
1371
1372 var regExp = $(allowedAttributeList).filter(function (index, value) {
1373 return value instanceof RegExp
1374 })
1375
1376 // Check if a regular expression validates the attribute.
1377 for (var i = 0, l = regExp.length; i < l; i++) {
1378 if (attrName.match(regExp[i])) {
1379 return true
1380 }
1381 }
1382
1383 return false
1384 }
1385
1386 function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
1387 if (unsafeHtml.length === 0) {
1388 return unsafeHtml
1389 }
1390
1391 if (sanitizeFn && typeof sanitizeFn === 'function') {
1392 return sanitizeFn(unsafeHtml)
1393 }
1394
1395 // IE 8 and below don't support createHTMLDocument
1396 if (!document.implementation || !document.implementation.createHTMLDocument) {
1397 return unsafeHtml
1398 }
1399
1400 var createdDocument = document.implementation.createHTMLDocument('sanitization')
1401 createdDocument.body.innerHTML = unsafeHtml
1402
1403 var whitelistKeys = $.map(whiteList, function (el, i) { return i })
1404 var elements = $(createdDocument.body).find('*')
1405
1406 for (var i = 0, len = elements.length; i < len; i++) {
1407 var el = elements[i]
1408 var elName = el.nodeName.toLowerCase()
1409
1410 if ($.inArray(elName, whitelistKeys) === -1) {
1411 el.parentNode.removeChild(el)
1412
1413 continue
1414 }
1415
1416 var attributeList = $.map(el.attributes, function (el) { return el })
1417 var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])
1418
1419 for (var j = 0, len2 = attributeList.length; j < len2; j++) {
1420 if (!allowedAttribute(attributeList[j], whitelistedAttributes)) {
1421 el.removeAttribute(attributeList[j].nodeName)
1422 }
1423 }
1424 }
1425
1426 return createdDocument.body.innerHTML
1427 }
1428
1429 // TOOLTIP PUBLIC CLASS DEFINITION
1430 // ===============================
1431
1432 var Tooltip = function (element, options) {
1433 this.type = null
1434 this.options = null
1435 this.enabled = null
1436 this.timeout = null
1437 this.hoverState = null
1438 this.$element = null
1439 this.inState = null
1440
1441 this.init('tooltip', element, options)
1442 }
1443
1444 Tooltip.VERSION = '3.4.1'
1445
1446 Tooltip.TRANSITION_DURATION = 150
1447
1448 Tooltip.DEFAULTS = {
1449 animation: true,
1450 placement: 'top',
1451 selector: false,
1452 template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
1453 trigger: 'hover focus',
1454 title: '',
1455 delay: 0,
1456 html: false,
1457 container: false,
1458 viewport: {
1459 selector: 'body',
1460 padding: 0
1461 },
1462 sanitize : true,
1463 sanitizeFn : null,
1464 whiteList : DefaultWhitelist
1465 }
1466
1467 Tooltip.prototype.init = function (type, element, options) {
1468 this.enabled = true
1469 this.type = type
1470 this.$element = $(element)
1471 this.options = this.getOptions(options)
1472 this.$viewport = this.options.viewport && $(document).find($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))
1473 this.inState = { click: false, hover: false, focus: false }
1474
1475 if (this.$element[0] instanceof document.constructor && !this.options.selector) {
1476 throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')
1477 }
1478
1479 var triggers = this.options.trigger.split(' ')
1480
1481 for (var i = triggers.length; i--;) {
1482 var trigger = triggers[i]
1483
1484 if (trigger == 'click') {
1485 this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
1486 } else if (trigger != 'manual') {
1487 var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'
1488 var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'
1489
1490 this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
1491 this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
1492 }
1493 }
1494
1495 this.options.selector ?
1496 (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
1497 this.fixTitle()
1498 }
1499
1500 Tooltip.prototype.getDefaults = function () {
1501 return Tooltip.DEFAULTS
1502 }
1503
1504 Tooltip.prototype.getOptions = function (options) {
1505 var dataAttributes = this.$element.data()
1506
1507 for (var dataAttr in dataAttributes) {
1508 if (dataAttributes.hasOwnProperty(dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) {
1509 delete dataAttributes[dataAttr]
1510 }
1511 }
1512
1513 options = $.extend({}, this.getDefaults(), dataAttributes, options)
1514
1515 if (options.delay && typeof options.delay == 'number') {
1516 options.delay = {
1517 show: options.delay,
1518 hide: options.delay
1519 }
1520 }
1521
1522 if (options.sanitize) {
1523 options.template = sanitizeHtml(options.template, options.whiteList, options.sanitizeFn)
1524 }
1525
1526 return options
1527 }
1528
1529 Tooltip.prototype.getDelegateOptions = function () {
1530 var options = {}
1531 var defaults = this.getDefaults()
1532
1533 this._options && $.each(this._options, function (key, value) {
1534 if (defaults[key] != value) options[key] = value
1535 })
1536
1537 return options
1538 }
1539
1540 Tooltip.prototype.enter = function (obj) {
1541 var self = obj instanceof this.constructor ?
1542 obj : $(obj.currentTarget).data('bs.' + this.type)
1543
1544 if (!self) {
1545 self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
1546 $(obj.currentTarget).data('bs.' + this.type, self)
1547 }
1548
1549 if (obj instanceof $.Event) {
1550 self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true
1551 }
1552
1553 if (self.tip().hasClass('in') || self.hoverState == 'in') {
1554 self.hoverState = 'in'
1555 return
1556 }
1557
1558 clearTimeout(self.timeout)
1559
1560 self.hoverState = 'in'
1561
1562 if (!self.options.delay || !self.options.delay.show) return self.show()
1563
1564 self.timeout = setTimeout(function () {
1565 if (self.hoverState == 'in') self.show()
1566 }, self.options.delay.show)
1567 }
1568
1569 Tooltip.prototype.isInStateTrue = function () {
1570 for (var key in this.inState) {
1571 if (this.inState[key]) return true
1572 }
1573
1574 return false
1575 }
1576
1577 Tooltip.prototype.leave = function (obj) {
1578 var self = obj instanceof this.constructor ?
1579 obj : $(obj.currentTarget).data('bs.' + this.type)
1580
1581 if (!self) {
1582 self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
1583 $(obj.currentTarget).data('bs.' + this.type, self)
1584 }
1585
1586 if (obj instanceof $.Event) {
1587 self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false
1588 }
1589
1590 if (self.isInStateTrue()) return
1591
1592 clearTimeout(self.timeout)
1593
1594 self.hoverState = 'out'
1595
1596 if (!self.options.delay || !self.options.delay.hide) return self.hide()
1597
1598 self.timeout = setTimeout(function () {
1599 if (self.hoverState == 'out') self.hide()
1600 }, self.options.delay.hide)
1601 }
1602
1603 Tooltip.prototype.show = function () {
1604 var e = $.Event('show.bs.' + this.type)
1605
1606 if (this.hasContent() && this.enabled) {
1607 this.$element.trigger(e)
1608
1609 var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])
1610 if (e.isDefaultPrevented() || !inDom) return
1611 var that = this
1612
1613 var $tip = this.tip()
1614
1615 var tipId = this.getUID(this.type)
1616
1617 this.setContent()
1618 $tip.attr('id', tipId)
1619 this.$element.attr('aria-describedby', tipId)
1620
1621 if (this.options.animation) $tip.addClass('fade')
1622
1623 var placement = typeof this.options.placement == 'function' ?
1624 this.options.placement.call(this, $tip[0], this.$element[0]) :
1625 this.options.placement
1626
1627 var autoToken = /\s?auto?\s?/i
1628 var autoPlace = autoToken.test(placement)
1629 if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
1630
1631 $tip
1632 .detach()
1633 .css({ top: 0, left: 0, display: 'block' })
1634 .addClass(placement)
1635 .data('bs.' + this.type, this)
1636
1637 this.options.container ? $tip.appendTo($(document).find(this.options.container)) : $tip.insertAfter(this.$element)
1638 this.$element.trigger('inserted.bs.' + this.type)
1639
1640 var pos = this.getPosition()
1641 var actualWidth = $tip[0].offsetWidth
1642 var actualHeight = $tip[0].offsetHeight
1643
1644 if (autoPlace) {
1645 var orgPlacement = placement
1646 var viewportDim = this.getPosition(this.$viewport)
1647
1648 placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :
1649 placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :
1650 placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :
1651 placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :
1652 placement
1653
1654 $tip
1655 .removeClass(orgPlacement)
1656 .addClass(placement)
1657 }
1658
1659 var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
1660
1661 this.applyPlacement(calculatedOffset, placement)
1662
1663 var complete = function () {
1664 var prevHoverState = that.hoverState
1665 that.$element.trigger('shown.bs.' + that.type)
1666 that.hoverState = null
1667
1668 if (prevHoverState == 'out') that.leave(that)
1669 }
1670
1671 $.support.transition && this.$tip.hasClass('fade') ?
1672 $tip
1673 .one('bsTransitionEnd', complete)
1674 .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
1675 complete()
1676 }
1677 }
1678
1679 Tooltip.prototype.applyPlacement = function (offset, placement) {
1680 var $tip = this.tip()
1681 var width = $tip[0].offsetWidth
1682 var height = $tip[0].offsetHeight
1683
1684 // manually read margins because getBoundingClientRect includes difference
1685 var marginTop = parseInt($tip.css('margin-top'), 10)
1686 var marginLeft = parseInt($tip.css('margin-left'), 10)
1687
1688 // we must check for NaN for ie 8/9
1689 if (isNaN(marginTop)) marginTop = 0
1690 if (isNaN(marginLeft)) marginLeft = 0
1691
1692 offset.top += marginTop
1693 offset.left += marginLeft
1694
1695 // $.fn.offset doesn't round pixel values
1696 // so we use setOffset directly with our own function B-0
1697 $.offset.setOffset($tip[0], $.extend({
1698 using: function (props) {
1699 $tip.css({
1700 top: Math.round(props.top),
1701 left: Math.round(props.left)
1702 })
1703 }
1704 }, offset), 0)
1705
1706 $tip.addClass('in')
1707
1708 // check to see if placing tip in new offset caused the tip to resize itself
1709 var actualWidth = $tip[0].offsetWidth
1710 var actualHeight = $tip[0].offsetHeight
1711
1712 if (placement == 'top' && actualHeight != height) {
1713 offset.top = offset.top + height - actualHeight
1714 }
1715
1716 var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)
1717
1718 if (delta.left) offset.left += delta.left
1719 else offset.top += delta.top
1720
1721 var isVertical = /top|bottom/.test(placement)
1722 var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight
1723 var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'
1724
1725 $tip.offset(offset)
1726 this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)
1727 }
1728
1729 Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {
1730 this.arrow()
1731 .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')
1732 .css(isVertical ? 'top' : 'left', '')
1733 }
1734
1735 Tooltip.prototype.setContent = function () {
1736 var $tip = this.tip()
1737 var title = this.getTitle()
1738
1739 if (this.options.html) {
1740 if (this.options.sanitize) {
1741 title = sanitizeHtml(title, this.options.whiteList, this.options.sanitizeFn)
1742 }
1743
1744 $tip.find('.tooltip-inner').html(title)
1745 } else {
1746 $tip.find('.tooltip-inner').text(title)
1747 }
1748
1749 $tip.removeClass('fade in top bottom left right')
1750 }
1751
1752 Tooltip.prototype.hide = function (callback) {
1753 var that = this
1754 var $tip = $(this.$tip)
1755 var e = $.Event('hide.bs.' + this.type)
1756
1757 function complete() {
1758 if (that.hoverState != 'in') $tip.detach()
1759 if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.
1760 that.$element
1761 .removeAttr('aria-describedby')
1762 .trigger('hidden.bs.' + that.type)
1763 }
1764 callback && callback()
1765 }
1766
1767 this.$element.trigger(e)
1768
1769 if (e.isDefaultPrevented()) return
1770
1771 $tip.removeClass('in')
1772
1773 $.support.transition && $tip.hasClass('fade') ?
1774 $tip
1775 .one('bsTransitionEnd', complete)
1776 .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
1777 complete()
1778
1779 this.hoverState = null
1780
1781 return this
1782 }
1783
1784 Tooltip.prototype.fixTitle = function () {
1785 var $e = this.$element
1786 if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {
1787 $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
1788 }
1789 }
1790
1791 Tooltip.prototype.hasContent = function () {
1792 return this.getTitle()
1793 }
1794
1795 Tooltip.prototype.getPosition = function ($element) {
1796 $element = $element || this.$element
1797
1798 var el = $element[0]
1799 var isBody = el.tagName == 'BODY'
1800
1801 var elRect = el.getBoundingClientRect()
1802 if (elRect.width == null) {
1803 // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
1804 elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
1805 }
1806 var isSvg = window.SVGElement && el instanceof window.SVGElement
1807 // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.
1808 // See https://github.com/twbs/bootstrap/issues/20280
1809 var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())
1810 var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
1811 var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null
1812
1813 return $.extend({}, elRect, scroll, outerDims, elOffset)
1814 }
1815
1816 Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
1817 return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :
1818 placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
1819 placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
1820 /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
1821
1822 }
1823
1824 Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {
1825 var delta = { top: 0, left: 0 }
1826 if (!this.$viewport) return delta
1827
1828 var viewportPadding = this.options.viewport && this.options.viewport.padding || 0
1829 var viewportDimensions = this.getPosition(this.$viewport)
1830
1831 if (/right|left/.test(placement)) {
1832 var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll
1833 var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight
1834 if (topEdgeOffset < viewportDimensions.top) { // top overflow
1835 delta.top = viewportDimensions.top - topEdgeOffset
1836 } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow
1837 delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset
1838 }
1839 } else {
1840 var leftEdgeOffset = pos.left - viewportPadding
1841 var rightEdgeOffset = pos.left + viewportPadding + actualWidth
1842 if (leftEdgeOffset < viewportDimensions.left) { // left overflow
1843 delta.left = viewportDimensions.left - leftEdgeOffset
1844 } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow
1845 delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
1846 }
1847 }
1848
1849 return delta
1850 }
1851
1852 Tooltip.prototype.getTitle = function () {
1853 var title
1854 var $e = this.$element
1855 var o = this.options
1856
1857 title = $e.attr('data-original-title')
1858 || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
1859
1860 return title
1861 }
1862
1863 Tooltip.prototype.getUID = function (prefix) {
1864 do prefix += ~~(Math.random() * 1000000)
1865 while (document.getElementById(prefix))
1866 return prefix
1867 }
1868
1869 Tooltip.prototype.tip = function () {
1870 if (!this.$tip) {
1871 this.$tip = $(this.options.template)
1872 if (this.$tip.length != 1) {
1873 throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')
1874 }
1875 }
1876 return this.$tip
1877 }
1878
1879 Tooltip.prototype.arrow = function () {
1880 return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))
1881 }
1882
1883 Tooltip.prototype.enable = function () {
1884 this.enabled = true
1885 }
1886
1887 Tooltip.prototype.disable = function () {
1888 this.enabled = false
1889 }
1890
1891 Tooltip.prototype.toggleEnabled = function () {
1892 this.enabled = !this.enabled
1893 }
1894
1895 Tooltip.prototype.toggle = function (e) {
1896 var self = this
1897 if (e) {
1898 self = $(e.currentTarget).data('bs.' + this.type)
1899 if (!self) {
1900 self = new this.constructor(e.currentTarget, this.getDelegateOptions())
1901 $(e.currentTarget).data('bs.' + this.type, self)
1902 }
1903 }
1904
1905 if (e) {
1906 self.inState.click = !self.inState.click
1907 if (self.isInStateTrue()) self.enter(self)
1908 else self.leave(self)
1909 } else {
1910 self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
1911 }
1912 }
1913
1914 Tooltip.prototype.destroy = function () {
1915 var that = this
1916 clearTimeout(this.timeout)
1917 this.hide(function () {
1918 that.$element.off('.' + that.type).removeData('bs.' + that.type)
1919 if (that.$tip) {
1920 that.$tip.detach()
1921 }
1922 that.$tip = null
1923 that.$arrow = null
1924 that.$viewport = null
1925 that.$element = null
1926 })
1927 }
1928
1929 Tooltip.prototype.sanitizeHtml = function (unsafeHtml) {
1930 return sanitizeHtml(unsafeHtml, this.options.whiteList, this.options.sanitizeFn)
1931 }
1932
1933 // TOOLTIP PLUGIN DEFINITION
1934 // =========================
1935
1936 function Plugin(option) {
1937 return this.each(function () {
1938 var $this = $(this)
1939 var data = $this.data('bs.tooltip')
1940 var options = typeof option == 'object' && option
1941
1942 if (!data && /destroy|hide/.test(option)) return
1943 if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
1944 if (typeof option == 'string') data[option]()
1945 })
1946 }
1947
1948 var old = $.fn.tooltip
1949
1950 $.fn.tooltip = Plugin
1951 $.fn.tooltip.Constructor = Tooltip
1952
1953
1954 // TOOLTIP NO CONFLICT
1955 // ===================
1956
1957 $.fn.tooltip.noConflict = function () {
1958 $.fn.tooltip = old
1959 return this
1960 }
1961
1962}(jQuery);
1963
1964/* ========================================================================
1965 * Bootstrap: popover.js v3.4.1
1966 * https://getbootstrap.com/docs/3.4/javascript/#popovers
1967 * ========================================================================
1968 * Copyright 2011-2019 Twitter, Inc.
1969 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1970 * ======================================================================== */
1971
1972
1973+function ($) {
1974 'use strict';
1975
1976 // POPOVER PUBLIC CLASS DEFINITION
1977 // ===============================
1978
1979 var Popover = function (element, options) {
1980 this.init('popover', element, options)
1981 }
1982
1983 if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
1984
1985 Popover.VERSION = '3.4.1'
1986
1987 Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
1988 placement: 'right',
1989 trigger: 'click',
1990 content: '',
1991 template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
1992 })
1993
1994
1995 // NOTE: POPOVER EXTENDS tooltip.js
1996 // ================================
1997
1998 Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
1999
2000 Popover.prototype.constructor = Popover
2001
2002 Popover.prototype.getDefaults = function () {
2003 return Popover.DEFAULTS
2004 }
2005
2006 Popover.prototype.setContent = function () {
2007 var $tip = this.tip()
2008 var title = this.getTitle()
2009 var content = this.getContent()
2010
2011 if (this.options.html) {
2012 var typeContent = typeof content
2013
2014 if (this.options.sanitize) {
2015 title = this.sanitizeHtml(title)
2016
2017 if (typeContent === 'string') {
2018 content = this.sanitizeHtml(content)
2019 }
2020 }
2021
2022 $tip.find('.popover-title').html(title)
2023 $tip.find('.popover-content').children().detach().end()[
2024 typeContent === 'string' ? 'html' : 'append'
2025 ](content)
2026 } else {
2027 $tip.find('.popover-title').text(title)
2028 $tip.find('.popover-content').children().detach().end().text(content)
2029 }
2030
2031 $tip.removeClass('fade top bottom left right in')
2032
2033 // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
2034 // this manually by checking the contents.
2035 if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
2036 }
2037
2038 Popover.prototype.hasContent = function () {
2039 return this.getTitle() || this.getContent()
2040 }
2041
2042 Popover.prototype.getContent = function () {
2043 var $e = this.$element
2044 var o = this.options
2045
2046 return $e.attr('data-content')
2047 || (typeof o.content == 'function' ?
2048 o.content.call($e[0]) :
2049 o.content)
2050 }
2051
2052 Popover.prototype.arrow = function () {
2053 return (this.$arrow = this.$arrow || this.tip().find('.arrow'))
2054 }
2055
2056
2057 // POPOVER PLUGIN DEFINITION
2058 // =========================
2059
2060 function Plugin(option) {
2061 return this.each(function () {
2062 var $this = $(this)
2063 var data = $this.data('bs.popover')
2064 var options = typeof option == 'object' && option
2065
2066 if (!data && /destroy|hide/.test(option)) return
2067 if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
2068 if (typeof option == 'string') data[option]()
2069 })
2070 }
2071
2072 var old = $.fn.popover
2073
2074 $.fn.popover = Plugin
2075 $.fn.popover.Constructor = Popover
2076
2077
2078 // POPOVER NO CONFLICT
2079 // ===================
2080
2081 $.fn.popover.noConflict = function () {
2082 $.fn.popover = old
2083 return this
2084 }
2085
2086}(jQuery);
2087
2088/* ========================================================================
2089 * Bootstrap: scrollspy.js v3.4.1
2090 * https://getbootstrap.com/docs/3.4/javascript/#scrollspy
2091 * ========================================================================
2092 * Copyright 2011-2019 Twitter, Inc.
2093 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2094 * ======================================================================== */
2095
2096
2097+function ($) {
2098 'use strict';
2099
2100 // SCROLLSPY CLASS DEFINITION
2101 // ==========================
2102
2103 function ScrollSpy(element, options) {
2104 this.$body = $(document.body)
2105 this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)
2106 this.options = $.extend({}, ScrollSpy.DEFAULTS, options)
2107 this.selector = (this.options.target || '') + ' .nav li > a'
2108 this.offsets = []
2109 this.targets = []
2110 this.activeTarget = null
2111 this.scrollHeight = 0
2112
2113 this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))
2114 this.refresh()
2115 this.process()
2116 }
2117
2118 ScrollSpy.VERSION = '3.4.1'
2119
2120 ScrollSpy.DEFAULTS = {
2121 offset: 10
2122 }
2123
2124 ScrollSpy.prototype.getScrollHeight = function () {
2125 return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
2126 }
2127
2128 ScrollSpy.prototype.refresh = function () {
2129 var that = this
2130 var offsetMethod = 'offset'
2131 var offsetBase = 0
2132
2133 this.offsets = []
2134 this.targets = []
2135 this.scrollHeight = this.getScrollHeight()
2136
2137 if (!$.isWindow(this.$scrollElement[0])) {
2138 offsetMethod = 'position'
2139 offsetBase = this.$scrollElement.scrollTop()
2140 }
2141
2142 this.$body
2143 .find(this.selector)
2144 .map(function () {
2145 var $el = $(this)
2146 var href = $el.data('target') || $el.attr('href')
2147 var $href = /^#./.test(href) && $(href)
2148
2149 return ($href
2150 && $href.length
2151 && $href.is(':visible')
2152 && [[$href[offsetMethod]().top + offsetBase, href]]) || null
2153 })
2154 .sort(function (a, b) { return a[0] - b[0] })
2155 .each(function () {
2156 that.offsets.push(this[0])
2157 that.targets.push(this[1])
2158 })
2159 }
2160
2161 ScrollSpy.prototype.process = function () {
2162 var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
2163 var scrollHeight = this.getScrollHeight()
2164 var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()
2165 var offsets = this.offsets
2166 var targets = this.targets
2167 var activeTarget = this.activeTarget
2168 var i
2169
2170 if (this.scrollHeight != scrollHeight) {
2171 this.refresh()
2172 }
2173
2174 if (scrollTop >= maxScroll) {
2175 return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)
2176 }
2177
2178 if (activeTarget && scrollTop < offsets[0]) {
2179 this.activeTarget = null
2180 return this.clear()
2181 }
2182
2183 for (i = offsets.length; i--;) {
2184 activeTarget != targets[i]
2185 && scrollTop >= offsets[i]
2186 && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])
2187 && this.activate(targets[i])
2188 }
2189 }
2190
2191 ScrollSpy.prototype.activate = function (target) {
2192 this.activeTarget = target
2193
2194 this.clear()
2195
2196 var selector = this.selector +
2197 '[data-target="' + target + '"],' +
2198 this.selector + '[href="' + target + '"]'
2199
2200 var active = $(selector)
2201 .parents('li')
2202 .addClass('active')
2203
2204 if (active.parent('.dropdown-menu').length) {
2205 active = active
2206 .closest('li.dropdown')
2207 .addClass('active')
2208 }
2209
2210 active.trigger('activate.bs.scrollspy')
2211 }
2212
2213 ScrollSpy.prototype.clear = function () {
2214 $(this.selector)
2215 .parentsUntil(this.options.target, '.active')
2216 .removeClass('active')
2217 }
2218
2219
2220 // SCROLLSPY PLUGIN DEFINITION
2221 // ===========================
2222
2223 function Plugin(option) {
2224 return this.each(function () {
2225 var $this = $(this)
2226 var data = $this.data('bs.scrollspy')
2227 var options = typeof option == 'object' && option
2228
2229 if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
2230 if (typeof option == 'string') data[option]()
2231 })
2232 }
2233
2234 var old = $.fn.scrollspy
2235
2236 $.fn.scrollspy = Plugin
2237 $.fn.scrollspy.Constructor = ScrollSpy
2238
2239
2240 // SCROLLSPY NO CONFLICT
2241 // =====================
2242
2243 $.fn.scrollspy.noConflict = function () {
2244 $.fn.scrollspy = old
2245 return this
2246 }
2247
2248
2249 // SCROLLSPY DATA-API
2250 // ==================
2251
2252 $(window).on('load.bs.scrollspy.data-api', function () {
2253 $('[data-spy="scroll"]').each(function () {
2254 var $spy = $(this)
2255 Plugin.call($spy, $spy.data())
2256 })
2257 })
2258
2259}(jQuery);
2260
2261/* ========================================================================
2262 * Bootstrap: tab.js v3.4.1
2263 * https://getbootstrap.com/docs/3.4/javascript/#tabs
2264 * ========================================================================
2265 * Copyright 2011-2019 Twitter, Inc.
2266 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2267 * ======================================================================== */
2268
2269
2270+function ($) {
2271 'use strict';
2272
2273 // TAB CLASS DEFINITION
2274 // ====================
2275
2276 var Tab = function (element) {
2277 // jscs:disable requireDollarBeforejQueryAssignment
2278 this.element = $(element)
2279 // jscs:enable requireDollarBeforejQueryAssignment
2280 }
2281
2282 Tab.VERSION = '3.4.1'
2283
2284 Tab.TRANSITION_DURATION = 150
2285
2286 Tab.prototype.show = function () {
2287 var $this = this.element
2288 var $ul = $this.closest('ul:not(.dropdown-menu)')
2289 var selector = $this.data('target')
2290
2291 if (!selector) {
2292 selector = $this.attr('href')
2293 selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
2294 }
2295
2296 if ($this.parent('li').hasClass('active')) return
2297
2298 var $previous = $ul.find('.active:last a')
2299 var hideEvent = $.Event('hide.bs.tab', {
2300 relatedTarget: $this[0]
2301 })
2302 var showEvent = $.Event('show.bs.tab', {
2303 relatedTarget: $previous[0]
2304 })
2305
2306 $previous.trigger(hideEvent)
2307 $this.trigger(showEvent)
2308
2309 if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return
2310
2311 var $target = $(document).find(selector)
2312
2313 this.activate($this.closest('li'), $ul)
2314 this.activate($target, $target.parent(), function () {
2315 $previous.trigger({
2316 type: 'hidden.bs.tab',
2317 relatedTarget: $this[0]
2318 })
2319 $this.trigger({
2320 type: 'shown.bs.tab',
2321 relatedTarget: $previous[0]
2322 })
2323 })
2324 }
2325
2326 Tab.prototype.activate = function (element, container, callback) {
2327 var $active = container.find('> .active')
2328 var transition = callback
2329 && $.support.transition
2330 && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)
2331
2332 function next() {
2333 $active
2334 .removeClass('active')
2335 .find('> .dropdown-menu > .active')
2336 .removeClass('active')
2337 .end()
2338 .find('[data-toggle="tab"]')
2339 .attr('aria-expanded', false)
2340
2341 element
2342 .addClass('active')
2343 .find('[data-toggle="tab"]')
2344 .attr('aria-expanded', true)
2345
2346 if (transition) {
2347 element[0].offsetWidth // reflow for transition
2348 element.addClass('in')
2349 } else {
2350 element.removeClass('fade')
2351 }
2352
2353 if (element.parent('.dropdown-menu').length) {
2354 element
2355 .closest('li.dropdown')
2356 .addClass('active')
2357 .end()
2358 .find('[data-toggle="tab"]')
2359 .attr('aria-expanded', true)
2360 }
2361
2362 callback && callback()
2363 }
2364
2365 $active.length && transition ?
2366 $active
2367 .one('bsTransitionEnd', next)
2368 .emulateTransitionEnd(Tab.TRANSITION_DURATION) :
2369 next()
2370
2371 $active.removeClass('in')
2372 }
2373
2374
2375 // TAB PLUGIN DEFINITION
2376 // =====================
2377
2378 function Plugin(option) {
2379 return this.each(function () {
2380 var $this = $(this)
2381 var data = $this.data('bs.tab')
2382
2383 if (!data) $this.data('bs.tab', (data = new Tab(this)))
2384 if (typeof option == 'string') data[option]()
2385 })
2386 }
2387
2388 var old = $.fn.tab
2389
2390 $.fn.tab = Plugin
2391 $.fn.tab.Constructor = Tab
2392
2393
2394 // TAB NO CONFLICT
2395 // ===============
2396
2397 $.fn.tab.noConflict = function () {
2398 $.fn.tab = old
2399 return this
2400 }
2401
2402
2403 // TAB DATA-API
2404 // ============
2405
2406 var clickHandler = function (e) {
2407 e.preventDefault()
2408 Plugin.call($(this), 'show')
2409 }
2410
2411 $(document)
2412 .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler)
2413 .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler)
2414
2415}(jQuery);
2416
2417/* ========================================================================
2418 * Bootstrap: affix.js v3.4.1
2419 * https://getbootstrap.com/docs/3.4/javascript/#affix
2420 * ========================================================================
2421 * Copyright 2011-2019 Twitter, Inc.
2422 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2423 * ======================================================================== */
2424
2425
2426+function ($) {
2427 'use strict';
2428
2429 // AFFIX CLASS DEFINITION
2430 // ======================
2431
2432 var Affix = function (element, options) {
2433 this.options = $.extend({}, Affix.DEFAULTS, options)
2434
2435 var target = this.options.target === Affix.DEFAULTS.target ? $(this.options.target) : $(document).find(this.options.target)
2436
2437 this.$target = target
2438 .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
2439 .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))
2440
2441 this.$element = $(element)
2442 this.affixed = null
2443 this.unpin = null
2444 this.pinnedOffset = null
2445
2446 this.checkPosition()
2447 }
2448
2449 Affix.VERSION = '3.4.1'
2450
2451 Affix.RESET = 'affix affix-top affix-bottom'
2452
2453 Affix.DEFAULTS = {
2454 offset: 0,
2455 target: window
2456 }
2457
2458 Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {
2459 var scrollTop = this.$target.scrollTop()
2460 var position = this.$element.offset()
2461 var targetHeight = this.$target.height()
2462
2463 if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false
2464
2465 if (this.affixed == 'bottom') {
2466 if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'
2467 return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'
2468 }
2469
2470 var initializing = this.affixed == null
2471 var colliderTop = initializing ? scrollTop : position.top
2472 var colliderHeight = initializing ? targetHeight : height
2473
2474 if (offsetTop != null && scrollTop <= offsetTop) return 'top'
2475 if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'
2476
2477 return false
2478 }
2479
2480 Affix.prototype.getPinnedOffset = function () {
2481 if (this.pinnedOffset) return this.pinnedOffset
2482 this.$element.removeClass(Affix.RESET).addClass('affix')
2483 var scrollTop = this.$target.scrollTop()
2484 var position = this.$element.offset()
2485 return (this.pinnedOffset = position.top - scrollTop)
2486 }
2487
2488 Affix.prototype.checkPositionWithEventLoop = function () {
2489 setTimeout($.proxy(this.checkPosition, this), 1)
2490 }
2491
2492 Affix.prototype.checkPosition = function () {
2493 if (!this.$element.is(':visible')) return
2494
2495 var height = this.$element.height()
2496 var offset = this.options.offset
2497 var offsetTop = offset.top
2498 var offsetBottom = offset.bottom
2499 var scrollHeight = Math.max($(document).height(), $(document.body).height())
2500
2501 if (typeof offset != 'object') offsetBottom = offsetTop = offset
2502 if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)
2503 if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)
2504
2505 var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)
2506
2507 if (this.affixed != affix) {
2508 if (this.unpin != null) this.$element.css('top', '')
2509
2510 var affixType = 'affix' + (affix ? '-' + affix : '')
2511 var e = $.Event(affixType + '.bs.affix')
2512
2513 this.$element.trigger(e)
2514
2515 if (e.isDefaultPrevented()) return
2516
2517 this.affixed = affix
2518 this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null
2519
2520 this.$element
2521 .removeClass(Affix.RESET)
2522 .addClass(affixType)
2523 .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')
2524 }
2525
2526 if (affix == 'bottom') {
2527 this.$element.offset({
2528 top: scrollHeight - height - offsetBottom
2529 })
2530 }
2531 }
2532
2533
2534 // AFFIX PLUGIN DEFINITION
2535 // =======================
2536
2537 function Plugin(option) {
2538 return this.each(function () {
2539 var $this = $(this)
2540 var data = $this.data('bs.affix')
2541 var options = typeof option == 'object' && option
2542
2543 if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
2544 if (typeof option == 'string') data[option]()
2545 })
2546 }
2547
2548 var old = $.fn.affix
2549
2550 $.fn.affix = Plugin
2551 $.fn.affix.Constructor = Affix
2552
2553
2554 // AFFIX NO CONFLICT
2555 // =================
2556
2557 $.fn.affix.noConflict = function () {
2558 $.fn.affix = old
2559 return this
2560 }
2561
2562
2563 // AFFIX DATA-API
2564 // ==============
2565
2566 $(window).on('load', function () {
2567 $('[data-spy="affix"]').each(function () {
2568 var $spy = $(this)
2569 var data = $spy.data()
2570
2571 data.offset = data.offset || {}
2572
2573 if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom
2574 if (data.offsetTop != null) data.offset.top = data.offsetTop
2575
2576 Plugin.call($spy, data)
2577 })
2578 })
2579
2580}(jQuery);
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/bootstrap.min.js b/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/bootstrap.min.js
new file mode 100644
index 00000000..eb0a8b41
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/bootstrap.min.js
@@ -0,0 +1,6 @@
1/*!
2 * Bootstrap v3.4.1 (https://getbootstrap.com/)
3 * Copyright 2011-2019 Twitter, Inc.
4 * Licensed under the MIT license
5 */
6if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");!function(t){"use strict";var e=jQuery.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1==e[0]&&9==e[1]&&e[2]<1||3<e[0])throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(),function(n){"use strict";n.fn.emulateTransitionEnd=function(t){var e=!1,i=this;n(this).one("bsTransitionEnd",function(){e=!0});return setTimeout(function(){e||n(i).trigger(n.support.transition.end)},t),this},n(function(){n.support.transition=function o(){var t=document.createElement("bootstrap"),e={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var i in e)if(t.style[i]!==undefined)return{end:e[i]};return!1}(),n.support.transition&&(n.event.special.bsTransitionEnd={bindType:n.support.transition.end,delegateType:n.support.transition.end,handle:function(t){if(n(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}})})}(jQuery),function(s){"use strict";var e='[data-dismiss="alert"]',a=function(t){s(t).on("click",e,this.close)};a.VERSION="3.4.1",a.TRANSITION_DURATION=150,a.prototype.close=function(t){var e=s(this),i=e.attr("data-target");i||(i=(i=e.attr("href"))&&i.replace(/.*(?=#[^\s]*$)/,"")),i="#"===i?[]:i;var o=s(document).find(i);function n(){o.detach().trigger("closed.bs.alert").remove()}t&&t.preventDefault(),o.length||(o=e.closest(".alert")),o.trigger(t=s.Event("close.bs.alert")),t.isDefaultPrevented()||(o.removeClass("in"),s.support.transition&&o.hasClass("fade")?o.one("bsTransitionEnd",n).emulateTransitionEnd(a.TRANSITION_DURATION):n())};var t=s.fn.alert;s.fn.alert=function o(i){return this.each(function(){var t=s(this),e=t.data("bs.alert");e||t.data("bs.alert",e=new a(this)),"string"==typeof i&&e[i].call(t)})},s.fn.alert.Constructor=a,s.fn.alert.noConflict=function(){return s.fn.alert=t,this},s(document).on("click.bs.alert.data-api",e,a.prototype.close)}(jQuery),function(s){"use strict";var n=function(t,e){this.$element=s(t),this.options=s.extend({},n.DEFAULTS,e),this.isLoading=!1};function i(o){return this.each(function(){var t=s(this),e=t.data("bs.button"),i="object"==typeof o&&o;e||t.data("bs.button",e=new n(this,i)),"toggle"==o?e.toggle():o&&e.setState(o)})}n.VERSION="3.4.1",n.DEFAULTS={loadingText:"loading..."},n.prototype.setState=function(t){var e="disabled",i=this.$element,o=i.is("input")?"val":"html",n=i.data();t+="Text",null==n.resetText&&i.data("resetText",i[o]()),setTimeout(s.proxy(function(){i[o](null==n[t]?this.options[t]:n[t]),"loadingText"==t?(this.isLoading=!0,i.addClass(e).attr(e,e).prop(e,!0)):this.isLoading&&(this.isLoading=!1,i.removeClass(e).removeAttr(e).prop(e,!1))},this),0)},n.prototype.toggle=function(){var t=!0,e=this.$element.closest('[data-toggle="buttons"]');if(e.length){var i=this.$element.find("input");"radio"==i.prop("type")?(i.prop("checked")&&(t=!1),e.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==i.prop("type")&&(i.prop("checked")!==this.$element.hasClass("active")&&(t=!1),this.$element.toggleClass("active")),i.prop("checked",this.$element.hasClass("active")),t&&i.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var t=s.fn.button;s.fn.button=i,s.fn.button.Constructor=n,s.fn.button.noConflict=function(){return s.fn.button=t,this},s(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(t){var e=s(t.target).closest(".btn");i.call(e,"toggle"),s(t.target).is('input[type="radio"], input[type="checkbox"]')||(t.preventDefault(),e.is("input,button")?e.trigger("focus"):e.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(t){s(t.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(t.type))})}(jQuery),function(p){"use strict";var c=function(t,e){this.$element=p(t),this.$indicators=this.$element.find(".carousel-indicators"),this.options=e,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",p.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",p.proxy(this.pause,this)).on("mouseleave.bs.carousel",p.proxy(this.cycle,this))};function r(n){return this.each(function(){var t=p(this),e=t.data("bs.carousel"),i=p.extend({},c.DEFAULTS,t.data(),"object"==typeof n&&n),o="string"==typeof n?n:i.slide;e||t.data("bs.carousel",e=new c(this,i)),"number"==typeof n?e.to(n):o?e[o]():i.interval&&e.pause().cycle()})}c.VERSION="3.4.1",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(t){if(!/input|textarea/i.test(t.target.tagName)){switch(t.which){case 37:this.prev();break;case 39:this.next();break;default:return}t.preventDefault()}},c.prototype.cycle=function(t){return t||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(p.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(t){return this.$items=t.parent().children(".item"),this.$items.index(t||this.$active)},c.prototype.getItemForDirection=function(t,e){var i=this.getItemIndex(e);if(("prev"==t&&0===i||"next"==t&&i==this.$items.length-1)&&!this.options.wrap)return e;var o=(i+("prev"==t?-1:1))%this.$items.length;return this.$items.eq(o)},c.prototype.to=function(t){var e=this,i=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(t>this.$items.length-1||t<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){e.to(t)}):i==t?this.pause().cycle():this.slide(i<t?"next":"prev",this.$items.eq(t))},c.prototype.pause=function(t){return t||(this.paused=!0),this.$element.find(".next, .prev").length&&p.support.transition&&(this.$element.trigger(p.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide("next")},c.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},c.prototype.slide=function(t,e){var i=this.$element.find(".item.active"),o=e||this.getItemForDirection(t,i),n=this.interval,s="next"==t?"left":"right",a=this;if(o.hasClass("active"))return this.sliding=!1;var r=o[0],l=p.Event("slide.bs.carousel",{relatedTarget:r,direction:s});if(this.$element.trigger(l),!l.isDefaultPrevented()){if(this.sliding=!0,n&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var h=p(this.$indicators.children()[this.getItemIndex(o)]);h&&h.addClass("active")}var d=p.Event("slid.bs.carousel",{relatedTarget:r,direction:s});return p.support.transition&&this.$element.hasClass("slide")?(o.addClass(t),"object"==typeof o&&o.length&&o[0].offsetWidth,i.addClass(s),o.addClass(s),i.one("bsTransitionEnd",function(){o.removeClass([t,s].join(" ")).addClass("active"),i.removeClass(["active",s].join(" ")),a.sliding=!1,setTimeout(function(){a.$element.trigger(d)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(i.removeClass("active"),o.addClass("active"),this.sliding=!1,this.$element.trigger(d)),n&&this.cycle(),this}};var t=p.fn.carousel;p.fn.carousel=r,p.fn.carousel.Constructor=c,p.fn.carousel.noConflict=function(){return p.fn.carousel=t,this};var e=function(t){var e=p(this),i=e.attr("href");i&&(i=i.replace(/.*(?=#[^\s]+$)/,""));var o=e.attr("data-target")||i,n=p(document).find(o);if(n.hasClass("carousel")){var s=p.extend({},n.data(),e.data()),a=e.attr("data-slide-to");a&&(s.interval=!1),r.call(n,s),a&&n.data("bs.carousel").to(a),t.preventDefault()}};p(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),p(window).on("load",function(){p('[data-ride="carousel"]').each(function(){var t=p(this);r.call(t,t.data())})})}(jQuery),function(a){"use strict";var r=function(t,e){this.$element=a(t),this.options=a.extend({},r.DEFAULTS,e),this.$trigger=a('[data-toggle="collapse"][href="#'+t.id+'"],[data-toggle="collapse"][data-target="#'+t.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};function n(t){var e,i=t.attr("data-target")||(e=t.attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"");return a(document).find(i)}function l(o){return this.each(function(){var t=a(this),e=t.data("bs.collapse"),i=a.extend({},r.DEFAULTS,t.data(),"object"==typeof o&&o);!e&&i.toggle&&/show|hide/.test(o)&&(i.toggle=!1),e||t.data("bs.collapse",e=new r(this,i)),"string"==typeof o&&e[o]()})}r.VERSION="3.4.1",r.TRANSITION_DURATION=350,r.DEFAULTS={toggle:!0},r.prototype.dimension=function(){return this.$element.hasClass("width")?"width":"height"},r.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var t,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(t=e.data("bs.collapse"))&&t.transitioning)){var i=a.Event("show.bs.collapse");if(this.$element.trigger(i),!i.isDefaultPrevented()){e&&e.length&&(l.call(e,"hide"),t||e.data("bs.collapse",null));var o=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[o](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var n=function(){this.$element.removeClass("collapsing").addClass("collapse in")[o](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return n.call(this);var s=a.camelCase(["scroll",o].join("-"));this.$element.one("bsTransitionEnd",a.proxy(n,this)).emulateTransitionEnd(r.TRANSITION_DURATION)[o](this.$element[0][s])}}}},r.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var t=a.Event("hide.bs.collapse");if(this.$element.trigger(t),!t.isDefaultPrevented()){var e=this.dimension();this.$element[e](this.$element[e]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var i=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};if(!a.support.transition)return i.call(this);this.$element[e](0).one("bsTransitionEnd",a.proxy(i,this)).emulateTransitionEnd(r.TRANSITION_DURATION)}}},r.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},r.prototype.getParent=function(){return a(document).find(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(t,e){var i=a(e);this.addAriaAndCollapsedClass(n(i),i)},this)).end()},r.prototype.addAriaAndCollapsedClass=function(t,e){var i=t.hasClass("in");t.attr("aria-expanded",i),e.toggleClass("collapsed",!i).attr("aria-expanded",i)};var t=a.fn.collapse;a.fn.collapse=l,a.fn.collapse.Constructor=r,a.fn.collapse.noConflict=function(){return a.fn.collapse=t,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(t){var e=a(this);e.attr("data-target")||t.preventDefault();var i=n(e),o=i.data("bs.collapse")?"toggle":e.data();l.call(i,o)})}(jQuery),function(a){"use strict";var r='[data-toggle="dropdown"]',o=function(t){a(t).on("click.bs.dropdown",this.toggle)};function l(t){var e=t.attr("data-target");e||(e=(e=t.attr("href"))&&/#[A-Za-z]/.test(e)&&e.replace(/.*(?=#[^\s]*$)/,""));var i="#"!==e?a(document).find(e):null;return i&&i.length?i:t.parent()}function s(o){o&&3===o.which||(a(".dropdown-backdrop").remove(),a(r).each(function(){var t=a(this),e=l(t),i={relatedTarget:this};e.hasClass("open")&&(o&&"click"==o.type&&/input|textarea/i.test(o.target.tagName)&&a.contains(e[0],o.target)||(e.trigger(o=a.Event("hide.bs.dropdown",i)),o.isDefaultPrevented()||(t.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",i)))))}))}o.VERSION="3.4.1",o.prototype.toggle=function(t){var e=a(this);if(!e.is(".disabled, :disabled")){var i=l(e),o=i.hasClass("open");if(s(),!o){"ontouchstart"in document.documentElement&&!i.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",s);var n={relatedTarget:this};if(i.trigger(t=a.Event("show.bs.dropdown",n)),t.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),i.toggleClass("open").trigger(a.Event("shown.bs.dropdown",n))}return!1}},o.prototype.keydown=function(t){if(/(38|40|27|32)/.test(t.which)&&!/input|textarea/i.test(t.target.tagName)){var e=a(this);if(t.preventDefault(),t.stopPropagation(),!e.is(".disabled, :disabled")){var i=l(e),o=i.hasClass("open");if(!o&&27!=t.which||o&&27==t.which)return 27==t.which&&i.find(r).trigger("focus"),e.trigger("click");var n=i.find(".dropdown-menu li:not(.disabled):visible a");if(n.length){var s=n.index(t.target);38==t.which&&0<s&&s--,40==t.which&&s<n.length-1&&s++,~s||(s=0),n.eq(s).trigger("focus")}}}};var t=a.fn.dropdown;a.fn.dropdown=function e(i){return this.each(function(){var t=a(this),e=t.data("bs.dropdown");e||t.data("bs.dropdown",e=new o(this)),"string"==typeof i&&e[i].call(t)})},a.fn.dropdown.Constructor=o,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=t,this},a(document).on("click.bs.dropdown.data-api",s).on("click.bs.dropdown.data-api",".dropdown form",function(t){t.stopPropagation()}).on("click.bs.dropdown.data-api",r,o.prototype.toggle).on("keydown.bs.dropdown.data-api",r,o.prototype.keydown).on("keydown.bs.dropdown.data-api",".dropdown-menu",o.prototype.keydown)}(jQuery),function(a){"use strict";var s=function(t,e){this.options=e,this.$body=a(document.body),this.$element=a(t),this.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.fixedContent=".navbar-fixed-top, .navbar-fixed-bottom",this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};function r(o,n){return this.each(function(){var t=a(this),e=t.data("bs.modal"),i=a.extend({},s.DEFAULTS,t.data(),"object"==typeof o&&o);e||t.data("bs.modal",e=new s(this,i)),"string"==typeof o?e[o](n):i.show&&e.show(n)})}s.VERSION="3.4.1",s.TRANSITION_DURATION=300,s.BACKDROP_TRANSITION_DURATION=150,s.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},s.prototype.toggle=function(t){return this.isShown?this.hide():this.show(t)},s.prototype.show=function(i){var o=this,t=a.Event("show.bs.modal",{relatedTarget:i});this.$element.trigger(t),this.isShown||t.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){o.$element.one("mouseup.dismiss.bs.modal",function(t){a(t.target).is(o.$element)&&(o.ignoreBackdropClick=!0)})}),this.backdrop(function(){var t=a.support.transition&&o.$element.hasClass("fade");o.$element.parent().length||o.$element.appendTo(o.$body),o.$element.show().scrollTop(0),o.adjustDialog(),t&&o.$element[0].offsetWidth,o.$element.addClass("in"),o.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:i});t?o.$dialog.one("bsTransitionEnd",function(){o.$element.trigger("focus").trigger(e)}).emulateTransitionEnd(s.TRANSITION_DURATION):o.$element.trigger("focus").trigger(e)}))},s.prototype.hide=function(t){t&&t.preventDefault(),t=a.Event("hide.bs.modal"),this.$element.trigger(t),this.isShown&&!t.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(s.TRANSITION_DURATION):this.hideModal())},s.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(t){document===t.target||this.$element[0]===t.target||this.$element.has(t.target).length||this.$element.trigger("focus")},this))},s.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(t){27==t.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},s.prototype.resize=function(){this.isShown?a(window).on("resize.bs.modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.modal")},s.prototype.hideModal=function(){var t=this;this.$element.hide(),this.backdrop(function(){t.$body.removeClass("modal-open"),t.resetAdjustments(),t.resetScrollbar(),t.$element.trigger("hidden.bs.modal")})},s.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},s.prototype.backdrop=function(t){var e=this,i=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var o=a.support.transition&&i;if(this.$backdrop=a(document.createElement("div")).addClass("modal-backdrop "+i).appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(t){this.ignoreBackdropClick?this.ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide())},this)),o&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!t)return;o?this.$backdrop.one("bsTransitionEnd",t).emulateTransitionEnd(s.BACKDROP_TRANSITION_DURATION):t()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var n=function(){e.removeBackdrop(),t&&t()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",n).emulateTransitionEnd(s.BACKDROP_TRANSITION_DURATION):n()}else t&&t()},s.prototype.handleUpdate=function(){this.adjustDialog()},s.prototype.adjustDialog=function(){var t=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&t?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!t?this.scrollbarWidth:""})},s.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},s.prototype.checkScrollbar=function(){var t=window.innerWidth;if(!t){var e=document.documentElement.getBoundingClientRect();t=e.right-Math.abs(e.left)}this.bodyIsOverflowing=document.body.clientWidth<t,this.scrollbarWidth=this.measureScrollbar()},s.prototype.setScrollbar=function(){var t=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"";var n=this.scrollbarWidth;this.bodyIsOverflowing&&(this.$body.css("padding-right",t+n),a(this.fixedContent).each(function(t,e){var i=e.style.paddingRight,o=a(e).css("padding-right");a(e).data("padding-right",i).css("padding-right",parseFloat(o)+n+"px")}))},s.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad),a(this.fixedContent).each(function(t,e){var i=a(e).data("padding-right");a(e).removeData("padding-right"),e.style.paddingRight=i||""})},s.prototype.measureScrollbar=function(){var t=document.createElement("div");t.className="modal-scrollbar-measure",this.$body.append(t);var e=t.offsetWidth-t.clientWidth;return this.$body[0].removeChild(t),e};var t=a.fn.modal;a.fn.modal=r,a.fn.modal.Constructor=s,a.fn.modal.noConflict=function(){return a.fn.modal=t,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(t){var e=a(this),i=e.attr("href"),o=e.attr("data-target")||i&&i.replace(/.*(?=#[^\s]+$)/,""),n=a(document).find(o),s=n.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(i)&&i},n.data(),e.data());e.is("a")&&t.preventDefault(),n.one("show.bs.modal",function(t){t.isDefaultPrevented()||n.one("hidden.bs.modal",function(){e.is(":visible")&&e.trigger("focus")})}),r.call(n,s,this)})}(jQuery),function(g){"use strict";var o=["sanitize","whiteList","sanitizeFn"],a=["background","cite","href","itemtype","longdesc","poster","src","xlink:href"],t={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},r=/^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi,l=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;function u(t,e){var i=t.nodeName.toLowerCase();if(-1!==g.inArray(i,e))return-1===g.inArray(i,a)||Boolean(t.nodeValue.match(r)||t.nodeValue.match(l));for(var o=g(e).filter(function(t,e){return e instanceof RegExp}),n=0,s=o.length;n<s;n++)if(i.match(o[n]))return!0;return!1}function n(t,e,i){if(0===t.length)return t;if(i&&"function"==typeof i)return i(t);if(!document.implementation||!document.implementation.createHTMLDocument)return t;var o=document.implementation.createHTMLDocument("sanitization");o.body.innerHTML=t;for(var n=g.map(e,function(t,e){return e}),s=g(o.body).find("*"),a=0,r=s.length;a<r;a++){var l=s[a],h=l.nodeName.toLowerCase();if(-1!==g.inArray(h,n))for(var d=g.map(l.attributes,function(t){return t}),p=[].concat(e["*"]||[],e[h]||[]),c=0,f=d.length;c<f;c++)u(d[c],p)||l.removeAttribute(d[c].nodeName);else l.parentNode.removeChild(l)}return o.body.innerHTML}var m=function(t,e){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init("tooltip",t,e)};m.VERSION="3.4.1",m.TRANSITION_DURATION=150,m.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0},sanitize:!0,sanitizeFn:null,whiteList:t},m.prototype.init=function(t,e,i){if(this.enabled=!0,this.type=t,this.$element=g(e),this.options=this.getOptions(i),this.$viewport=this.options.viewport&&g(document).find(g.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var o=this.options.trigger.split(" "),n=o.length;n--;){var s=o[n];if("click"==s)this.$element.on("click."+this.type,this.options.selector,g.proxy(this.toggle,this));else if("manual"!=s){var a="hover"==s?"mouseenter":"focusin",r="hover"==s?"mouseleave":"focusout";this.$element.on(a+"."+this.type,this.options.selector,g.proxy(this.enter,this)),this.$element.on(r+"."+this.type,this.options.selector,g.proxy(this.leave,this))}}this.options.selector?this._options=g.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},m.prototype.getDefaults=function(){return m.DEFAULTS},m.prototype.getOptions=function(t){var e=this.$element.data();for(var i in e)e.hasOwnProperty(i)&&-1!==g.inArray(i,o)&&delete e[i];return(t=g.extend({},this.getDefaults(),e,t)).delay&&"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),t.sanitize&&(t.template=n(t.template,t.whiteList,t.sanitizeFn)),t},m.prototype.getDelegateOptions=function(){var i={},o=this.getDefaults();return this._options&&g.each(this._options,function(t,e){o[t]!=e&&(i[t]=e)}),i},m.prototype.enter=function(t){var e=t instanceof this.constructor?t:g(t.currentTarget).data("bs."+this.type);if(e||(e=new this.constructor(t.currentTarget,this.getDelegateOptions()),g(t.currentTarget).data("bs."+this.type,e)),t instanceof g.Event&&(e.inState["focusin"==t.type?"focus":"hover"]=!0),e.tip().hasClass("in")||"in"==e.hoverState)e.hoverState="in";else{if(clearTimeout(e.timeout),e.hoverState="in",!e.options.delay||!e.options.delay.show)return e.show();e.timeout=setTimeout(function(){"in"==e.hoverState&&e.show()},e.options.delay.show)}},m.prototype.isInStateTrue=function(){for(var t in this.inState)if(this.inState[t])return!0;return!1},m.prototype.leave=function(t){var e=t instanceof this.constructor?t:g(t.currentTarget).data("bs."+this.type);if(e||(e=new this.constructor(t.currentTarget,this.getDelegateOptions()),g(t.currentTarget).data("bs."+this.type,e)),t instanceof g.Event&&(e.inState["focusout"==t.type?"focus":"hover"]=!1),!e.isInStateTrue()){if(clearTimeout(e.timeout),e.hoverState="out",!e.options.delay||!e.options.delay.hide)return e.hide();e.timeout=setTimeout(function(){"out"==e.hoverState&&e.hide()},e.options.delay.hide)}},m.prototype.show=function(){var t=g.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(t);var e=g.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(t.isDefaultPrevented()||!e)return;var i=this,o=this.tip(),n=this.getUID(this.type);this.setContent(),o.attr("id",n),this.$element.attr("aria-describedby",n),this.options.animation&&o.addClass("fade");var s="function"==typeof this.options.placement?this.options.placement.call(this,o[0],this.$element[0]):this.options.placement,a=/\s?auto?\s?/i,r=a.test(s);r&&(s=s.replace(a,"")||"top"),o.detach().css({top:0,left:0,display:"block"}).addClass(s).data("bs."+this.type,this),this.options.container?o.appendTo(g(document).find(this.options.container)):o.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var l=this.getPosition(),h=o[0].offsetWidth,d=o[0].offsetHeight;if(r){var p=s,c=this.getPosition(this.$viewport);s="bottom"==s&&l.bottom+d>c.bottom?"top":"top"==s&&l.top-d<c.top?"bottom":"right"==s&&l.right+h>c.width?"left":"left"==s&&l.left-h<c.left?"right":s,o.removeClass(p).addClass(s)}var f=this.getCalculatedOffset(s,l,h,d);this.applyPlacement(f,s);var u=function(){var t=i.hoverState;i.$element.trigger("shown.bs."+i.type),i.hoverState=null,"out"==t&&i.leave(i)};g.support.transition&&this.$tip.hasClass("fade")?o.one("bsTransitionEnd",u).emulateTransitionEnd(m.TRANSITION_DURATION):u()}},m.prototype.applyPlacement=function(t,e){var i=this.tip(),o=i[0].offsetWidth,n=i[0].offsetHeight,s=parseInt(i.css("margin-top"),10),a=parseInt(i.css("margin-left"),10);isNaN(s)&&(s=0),isNaN(a)&&(a=0),t.top+=s,t.left+=a,g.offset.setOffset(i[0],g.extend({using:function(t){i.css({top:Math.round(t.top),left:Math.round(t.left)})}},t),0),i.addClass("in");var r=i[0].offsetWidth,l=i[0].offsetHeight;"top"==e&&l!=n&&(t.top=t.top+n-l);var h=this.getViewportAdjustedDelta(e,t,r,l);h.left?t.left+=h.left:t.top+=h.top;var d=/top|bottom/.test(e),p=d?2*h.left-o+r:2*h.top-n+l,c=d?"offsetWidth":"offsetHeight";i.offset(t),this.replaceArrow(p,i[0][c],d)},m.prototype.replaceArrow=function(t,e,i){this.arrow().css(i?"left":"top",50*(1-t/e)+"%").css(i?"top":"left","")},m.prototype.setContent=function(){var t=this.tip(),e=this.getTitle();this.options.html?(this.options.sanitize&&(e=n(e,this.options.whiteList,this.options.sanitizeFn)),t.find(".tooltip-inner").html(e)):t.find(".tooltip-inner").text(e),t.removeClass("fade in top bottom left right")},m.prototype.hide=function(t){var e=this,i=g(this.$tip),o=g.Event("hide.bs."+this.type);function n(){"in"!=e.hoverState&&i.detach(),e.$element&&e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),t&&t()}if(this.$element.trigger(o),!o.isDefaultPrevented())return i.removeClass("in"),g.support.transition&&i.hasClass("fade")?i.one("bsTransitionEnd",n).emulateTransitionEnd(m.TRANSITION_DURATION):n(),this.hoverState=null,this},m.prototype.fixTitle=function(){var t=this.$element;(t.attr("title")||"string"!=typeof t.attr("data-original-title"))&&t.attr("data-original-title",t.attr("title")||"").attr("title","")},m.prototype.hasContent=function(){return this.getTitle()},m.prototype.getPosition=function(t){var e=(t=t||this.$element)[0],i="BODY"==e.tagName,o=e.getBoundingClientRect();null==o.width&&(o=g.extend({},o,{width:o.right-o.left,height:o.bottom-o.top}));var n=window.SVGElement&&e instanceof window.SVGElement,s=i?{top:0,left:0}:n?null:t.offset(),a={scroll:i?document.documentElement.scrollTop||document.body.scrollTop:t.scrollTop()},r=i?{width:g(window).width(),height:g(window).height()}:null;return g.extend({},o,a,r,s)},m.prototype.getCalculatedOffset=function(t,e,i,o){return"bottom"==t?{top:e.top+e.height,left:e.left+e.width/2-i/2}:"top"==t?{top:e.top-o,left:e.left+e.width/2-i/2}:"left"==t?{top:e.top+e.height/2-o/2,left:e.left-i}:{top:e.top+e.height/2-o/2,left:e.left+e.width}},m.prototype.getViewportAdjustedDelta=function(t,e,i,o){var n={top:0,left:0};if(!this.$viewport)return n;var s=this.options.viewport&&this.options.viewport.padding||0,a=this.getPosition(this.$viewport);if(/right|left/.test(t)){var r=e.top-s-a.scroll,l=e.top+s-a.scroll+o;r<a.top?n.top=a.top-r:l>a.top+a.height&&(n.top=a.top+a.height-l)}else{var h=e.left-s,d=e.left+s+i;h<a.left?n.left=a.left-h:d>a.right&&(n.left=a.left+a.width-d)}return n},m.prototype.getTitle=function(){var t=this.$element,e=this.options;return t.attr("data-original-title")||("function"==typeof e.title?e.title.call(t[0]):e.title)},m.prototype.getUID=function(t){for(;t+=~~(1e6*Math.random()),document.getElementById(t););return t},m.prototype.tip=function(){if(!this.$tip&&(this.$tip=g(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},m.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},m.prototype.enable=function(){this.enabled=!0},m.prototype.disable=function(){this.enabled=!1},m.prototype.toggleEnabled=function(){this.enabled=!this.enabled},m.prototype.toggle=function(t){var e=this;t&&((e=g(t.currentTarget).data("bs."+this.type))||(e=new this.constructor(t.currentTarget,this.getDelegateOptions()),g(t.currentTarget).data("bs."+this.type,e))),t?(e.inState.click=!e.inState.click,e.isInStateTrue()?e.enter(e):e.leave(e)):e.tip().hasClass("in")?e.leave(e):e.enter(e)},m.prototype.destroy=function(){var t=this;clearTimeout(this.timeout),this.hide(function(){t.$element.off("."+t.type).removeData("bs."+t.type),t.$tip&&t.$tip.detach(),t.$tip=null,t.$arrow=null,t.$viewport=null,t.$element=null})},m.prototype.sanitizeHtml=function(t){return n(t,this.options.whiteList,this.options.sanitizeFn)};var e=g.fn.tooltip;g.fn.tooltip=function i(o){return this.each(function(){var t=g(this),e=t.data("bs.tooltip"),i="object"==typeof o&&o;!e&&/destroy|hide/.test(o)||(e||t.data("bs.tooltip",e=new m(this,i)),"string"==typeof o&&e[o]())})},g.fn.tooltip.Constructor=m,g.fn.tooltip.noConflict=function(){return g.fn.tooltip=e,this}}(jQuery),function(n){"use strict";var s=function(t,e){this.init("popover",t,e)};if(!n.fn.tooltip)throw new Error("Popover requires tooltip.js");s.VERSION="3.4.1",s.DEFAULTS=n.extend({},n.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),((s.prototype=n.extend({},n.fn.tooltip.Constructor.prototype)).constructor=s).prototype.getDefaults=function(){return s.DEFAULTS},s.prototype.setContent=function(){var t=this.tip(),e=this.getTitle(),i=this.getContent();if(this.options.html){var o=typeof i;this.options.sanitize&&(e=this.sanitizeHtml(e),"string"===o&&(i=this.sanitizeHtml(i))),t.find(".popover-title").html(e),t.find(".popover-content").children().detach().end()["string"===o?"html":"append"](i)}else t.find(".popover-title").text(e),t.find(".popover-content").children().detach().end().text(i);t.removeClass("fade top bottom left right in"),t.find(".popover-title").html()||t.find(".popover-title").hide()},s.prototype.hasContent=function(){return this.getTitle()||this.getContent()},s.prototype.getContent=function(){var t=this.$element,e=this.options;return t.attr("data-content")||("function"==typeof e.content?e.content.call(t[0]):e.content)},s.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var t=n.fn.popover;n.fn.popover=function e(o){return this.each(function(){var t=n(this),e=t.data("bs.popover"),i="object"==typeof o&&o;!e&&/destroy|hide/.test(o)||(e||t.data("bs.popover",e=new s(this,i)),"string"==typeof o&&e[o]())})},n.fn.popover.Constructor=s,n.fn.popover.noConflict=function(){return n.fn.popover=t,this}}(jQuery),function(s){"use strict";function n(t,e){this.$body=s(document.body),this.$scrollElement=s(t).is(document.body)?s(window):s(t),this.options=s.extend({},n.DEFAULTS,e),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",s.proxy(this.process,this)),this.refresh(),this.process()}function e(o){return this.each(function(){var t=s(this),e=t.data("bs.scrollspy"),i="object"==typeof o&&o;e||t.data("bs.scrollspy",e=new n(this,i)),"string"==typeof o&&e[o]()})}n.VERSION="3.4.1",n.DEFAULTS={offset:10},n.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},n.prototype.refresh=function(){var t=this,o="offset",n=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),s.isWindow(this.$scrollElement[0])||(o="position",n=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var t=s(this),e=t.data("target")||t.attr("href"),i=/^#./.test(e)&&s(e);return i&&i.length&&i.is(":visible")&&[[i[o]().top+n,e]]||null}).sort(function(t,e){return t[0]-e[0]}).each(function(){t.offsets.push(this[0]),t.targets.push(this[1])})},n.prototype.process=function(){var t,e=this.$scrollElement.scrollTop()+this.options.offset,i=this.getScrollHeight(),o=this.options.offset+i-this.$scrollElement.height(),n=this.offsets,s=this.targets,a=this.activeTarget;if(this.scrollHeight!=i&&this.refresh(),o<=e)return a!=(t=s[s.length-1])&&this.activate(t);if(a&&e<n[0])return this.activeTarget=null,this.clear();for(t=n.length;t--;)a!=s[t]&&e>=n[t]&&(n[t+1]===undefined||e<n[t+1])&&this.activate(s[t])},n.prototype.activate=function(t){this.activeTarget=t,this.clear();var e=this.selector+'[data-target="'+t+'"],'+this.selector+'[href="'+t+'"]',i=s(e).parents("li").addClass("active");i.parent(".dropdown-menu").length&&(i=i.closest("li.dropdown").addClass("active")),i.trigger("activate.bs.scrollspy")},n.prototype.clear=function(){s(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var t=s.fn.scrollspy;s.fn.scrollspy=e,s.fn.scrollspy.Constructor=n,s.fn.scrollspy.noConflict=function(){return s.fn.scrollspy=t,this},s(window).on("load.bs.scrollspy.data-api",function(){s('[data-spy="scroll"]').each(function(){var t=s(this);e.call(t,t.data())})})}(jQuery),function(r){"use strict";var a=function(t){this.element=r(t)};function e(i){return this.each(function(){var t=r(this),e=t.data("bs.tab");e||t.data("bs.tab",e=new a(this)),"string"==typeof i&&e[i]()})}a.VERSION="3.4.1",a.TRANSITION_DURATION=150,a.prototype.show=function(){var t=this.element,e=t.closest("ul:not(.dropdown-menu)"),i=t.data("target");if(i||(i=(i=t.attr("href"))&&i.replace(/.*(?=#[^\s]*$)/,"")),!t.parent("li").hasClass("active")){var o=e.find(".active:last a"),n=r.Event("hide.bs.tab",{relatedTarget:t[0]}),s=r.Event("show.bs.tab",{relatedTarget:o[0]});if(o.trigger(n),t.trigger(s),!s.isDefaultPrevented()&&!n.isDefaultPrevented()){var a=r(document).find(i);this.activate(t.closest("li"),e),this.activate(a,a.parent(),function(){o.trigger({type:"hidden.bs.tab",relatedTarget:t[0]}),t.trigger({type:"shown.bs.tab",relatedTarget:o[0]})})}}},a.prototype.activate=function(t,e,i){var o=e.find("> .active"),n=i&&r.support.transition&&(o.length&&o.hasClass("fade")||!!e.find("> .fade").length);function s(){o.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),t.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),n?(t[0].offsetWidth,t.addClass("in")):t.removeClass("fade"),t.parent(".dropdown-menu").length&&t.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),i&&i()}o.length&&n?o.one("bsTransitionEnd",s).emulateTransitionEnd(a.TRANSITION_DURATION):s(),o.removeClass("in")};var t=r.fn.tab;r.fn.tab=e,r.fn.tab.Constructor=a,r.fn.tab.noConflict=function(){return r.fn.tab=t,this};var i=function(t){t.preventDefault(),e.call(r(this),"show")};r(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',i).on("click.bs.tab.data-api",'[data-toggle="pill"]',i)}(jQuery),function(l){"use strict";var h=function(t,e){this.options=l.extend({},h.DEFAULTS,e);var i=this.options.target===h.DEFAULTS.target?l(this.options.target):l(document).find(this.options.target);this.$target=i.on("scroll.bs.affix.data-api",l.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",l.proxy(this.checkPositionWithEventLoop,this)),this.$element=l(t),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};function i(o){return this.each(function(){var t=l(this),e=t.data("bs.affix"),i="object"==typeof o&&o;e||t.data("bs.affix",e=new h(this,i)),"string"==typeof o&&e[o]()})}h.VERSION="3.4.1",h.RESET="affix affix-top affix-bottom",h.DEFAULTS={offset:0,target:window},h.prototype.getState=function(t,e,i,o){var n=this.$target.scrollTop(),s=this.$element.offset(),a=this.$target.height();if(null!=i&&"top"==this.affixed)return n<i&&"top";if("bottom"==this.affixed)return null!=i?!(n+this.unpin<=s.top)&&"bottom":!(n+a<=t-o)&&"bottom";var r=null==this.affixed,l=r?n:s.top;return null!=i&&n<=i?"top":null!=o&&t-o<=l+(r?a:e)&&"bottom"},h.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(h.RESET).addClass("affix");var t=this.$target.scrollTop(),e=this.$element.offset();return this.pinnedOffset=e.top-t},h.prototype.checkPositionWithEventLoop=function(){setTimeout(l.proxy(this.checkPosition,this),1)},h.prototype.checkPosition=function(){if(this.$element.is(":visible")){var t=this.$element.height(),e=this.options.offset,i=e.top,o=e.bottom,n=Math.max(l(document).height(),l(document.body).height());"object"!=typeof e&&(o=i=e),"function"==typeof i&&(i=e.top(this.$element)),"function"==typeof o&&(o=e.bottom(this.$element));var s=this.getState(n,t,i,o);if(this.affixed!=s){null!=this.unpin&&this.$element.css("top","");var a="affix"+(s?"-"+s:""),r=l.Event(a+".bs.affix");if(this.$element.trigger(r),r.isDefaultPrevented())return;this.affixed=s,this.unpin="bottom"==s?this.getPinnedOffset():null,this.$element.removeClass(h.RESET).addClass(a).trigger(a.replace("affix","affixed")+".bs.affix")}"bottom"==s&&this.$element.offset({top:n-t-o})}};var t=l.fn.affix;l.fn.affix=i,l.fn.affix.Constructor=h,l.fn.affix.noConflict=function(){return l.fn.affix=t,this},l(window).on("load",function(){l('[data-spy="affix"]').each(function(){var t=l(this),e=t.data();e.offset=e.offset||{},null!=e.offsetBottom&&(e.offset.bottom=e.offsetBottom),null!=e.offsetTop&&(e.offset.top=e.offsetTop),i.call(t,e)})})}(jQuery); \ No newline at end of file
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery-3.4.1.intellisense.js b/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery-3.4.1.intellisense.js
new file mode 100644
index 00000000..a88b6c6e
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery-3.4.1.intellisense.js
@@ -0,0 +1,2670 @@
1intellisense.annotate(jQuery, {
2 'ajax': function() {
3 /// <signature>
4 /// <summary>Perform an asynchronous HTTP (Ajax) request.</summary>
5 /// <param name="url" type="String">A string containing the URL to which the request is sent.</param>
6 /// <param name="settings" type="PlainObject">A set of key/value pairs that configure the Ajax request. All settings are optional. A default can be set for any option with $.ajaxSetup(). See jQuery.ajax( settings ) below for a complete list of all settings.</param>
7 /// <returns type="jqXHR" />
8 /// </signature>
9 /// <signature>
10 /// <summary>Perform an asynchronous HTTP (Ajax) request.</summary>
11 /// <param name="settings" type="PlainObject">A set of key/value pairs that configure the Ajax request. All settings are optional. A default can be set for any option with $.ajaxSetup().</param>
12 /// <returns type="jqXHR" />
13 /// </signature>
14 },
15 'ajaxPrefilter': function() {
16 /// <signature>
17 /// <summary>Handle custom Ajax options or modify existing options before each request is sent and before they are processed by $.ajax().</summary>
18 /// <param name="dataTypes" type="String">An optional string containing one or more space-separated dataTypes</param>
19 /// <param name="handler(options, originalOptions, jqXHR)" type="Function">A handler to set default values for future Ajax requests.</param>
20 /// </signature>
21 },
22 'ajaxSetup': function() {
23 /// <signature>
24 /// <summary>Set default values for future Ajax requests. Its use is not recommended.</summary>
25 /// <param name="options" type="PlainObject">A set of key/value pairs that configure the default Ajax request. All options are optional.</param>
26 /// </signature>
27 },
28 'ajaxTransport': function() {
29 /// <signature>
30 /// <summary>Creates an object that handles the actual transmission of Ajax data.</summary>
31 /// <param name="dataType" type="String">A string identifying the data type to use</param>
32 /// <param name="handler(options, originalOptions, jqXHR)" type="Function">A handler to return the new transport object to use with the data type provided in the first argument.</param>
33 /// </signature>
34 },
35 'boxModel': function() {
36 /// <summary>Deprecated in jQuery 1.3 (see jQuery.support). States if the current page, in the user's browser, is being rendered using the W3C CSS Box Model.</summary>
37 /// <returns type="Boolean" />
38 },
39 'browser': function() {
40 /// <summary>Contains flags for the useragent, read from navigator.userAgent. This property was removed in jQuery 1.9 and is available only through the jQuery.migrate plugin. Please try to use feature detection instead.</summary>
41 /// <returns type="PlainObject" />
42 },
43 'browser.version': function() {
44 /// <summary>The version number of the rendering engine for the user's browser. This property was removed in jQuery 1.9 and is available only through the jQuery.migrate plugin.</summary>
45 /// <returns type="String" />
46 },
47 'Callbacks': function() {
48 /// <signature>
49 /// <summary>A multi-purpose callbacks list object that provides a powerful way to manage callback lists.</summary>
50 /// <param name="flags" type="String">An optional list of space-separated flags that change how the callback list behaves.</param>
51 /// <returns type="Callbacks" />
52 /// </signature>
53 },
54 'contains': function() {
55 /// <signature>
56 /// <summary>Check to see if a DOM element is a descendant of another DOM element.</summary>
57 /// <param name="container" type="Element">The DOM element that may contain the other element.</param>
58 /// <param name="contained" type="Element">The DOM element that may be contained by (a descendant of) the other element.</param>
59 /// <returns type="Boolean" />
60 /// </signature>
61 },
62 'cssHooks': function() {
63 /// <summary>Hook directly into jQuery to override how particular CSS properties are retrieved or set, normalize CSS property naming, or create custom properties.</summary>
64 /// <returns type="Object" />
65 },
66 'data': function() {
67 /// <signature>
68 /// <summary>Returns value at named data store for the element, as set by jQuery.data(element, name, value), or the full data store for the element.</summary>
69 /// <param name="element" type="Element">The DOM element to query for the data.</param>
70 /// <param name="key" type="String">Name of the data stored.</param>
71 /// <returns type="Object" />
72 /// </signature>
73 /// <signature>
74 /// <summary>Returns value at named data store for the element, as set by jQuery.data(element, name, value), or the full data store for the element.</summary>
75 /// <param name="element" type="Element">The DOM element to query for the data.</param>
76 /// <returns type="Object" />
77 /// </signature>
78 },
79 'Deferred': function() {
80 /// <signature>
81 /// <summary>A constructor function that returns a chainable utility object with methods to register multiple callbacks into callback queues, invoke callback queues, and relay the success or failure state of any synchronous or asynchronous function.</summary>
82 /// <param name="beforeStart" type="Function">A function that is called just before the constructor returns.</param>
83 /// <returns type="Deferred" />
84 /// </signature>
85 },
86 'dequeue': function() {
87 /// <signature>
88 /// <summary>Execute the next function on the queue for the matched element.</summary>
89 /// <param name="element" type="Element">A DOM element from which to remove and execute a queued function.</param>
90 /// <param name="queueName" type="String">A string containing the name of the queue. Defaults to fx, the standard effects queue.</param>
91 /// </signature>
92 },
93 'each': function() {
94 /// <signature>
95 /// <summary>A generic iterator function, which can be used to seamlessly iterate over both objects and arrays. Arrays and array-like objects with a length property (such as a function's arguments object) are iterated by numeric index, from 0 to length-1. Other objects are iterated via their named properties.</summary>
96 /// <param name="collection" type="Object">The object or array to iterate over.</param>
97 /// <param name="callback(indexInArray, valueOfElement)" type="Function">The function that will be executed on every object.</param>
98 /// <returns type="Object" />
99 /// </signature>
100 },
101 'error': function() {
102 /// <signature>
103 /// <summary>Takes a string and throws an exception containing it.</summary>
104 /// <param name="message" type="String">The message to send out.</param>
105 /// </signature>
106 },
107 'extend': function() {
108 /// <signature>
109 /// <summary>Merge the contents of two or more objects together into the first object.</summary>
110 /// <param name="target" type="Object">An object that will receive the new properties if additional objects are passed in or that will extend the jQuery namespace if it is the sole argument.</param>
111 /// <param name="object1" type="Object">An object containing additional properties to merge in.</param>
112 /// <param name="objectN" type="Object">Additional objects containing properties to merge in.</param>
113 /// <returns type="Object" />
114 /// </signature>
115 /// <signature>
116 /// <summary>Merge the contents of two or more objects together into the first object.</summary>
117 /// <param name="deep" type="Boolean">If true, the merge becomes recursive (aka. deep copy).</param>
118 /// <param name="target" type="Object">The object to extend. It will receive the new properties.</param>
119 /// <param name="object1" type="Object">An object containing additional properties to merge in.</param>
120 /// <param name="objectN" type="Object">Additional objects containing properties to merge in.</param>
121 /// <returns type="Object" />
122 /// </signature>
123 },
124 'fn.extend': function() {
125 /// <signature>
126 /// <summary>Merge the contents of an object onto the jQuery prototype to provide new jQuery instance methods.</summary>
127 /// <param name="object" type="Object">An object to merge onto the jQuery prototype.</param>
128 /// <returns type="Object" />
129 /// </signature>
130 },
131 'get': function() {
132 /// <signature>
133 /// <summary>Load data from the server using a HTTP GET request.</summary>
134 /// <param name="url" type="String">A string containing the URL to which the request is sent.</param>
135 /// <param name="data" type="">A plain object or string that is sent to the server with the request.</param>
136 /// <param name="success(data, textStatus, jqXHR)" type="Function">A callback function that is executed if the request succeeds.</param>
137 /// <param name="dataType" type="String">The type of data expected from the server. Default: Intelligent Guess (xml, json, script, or html).</param>
138 /// <returns type="jqXHR" />
139 /// </signature>
140 },
141 'getJSON': function() {
142 /// <signature>
143 /// <summary>Load JSON-encoded data from the server using a GET HTTP request.</summary>
144 /// <param name="url" type="String">A string containing the URL to which the request is sent.</param>
145 /// <param name="data" type="PlainObject">A plain object or string that is sent to the server with the request.</param>
146 /// <param name="success(data, textStatus, jqXHR)" type="Function">A callback function that is executed if the request succeeds.</param>
147 /// <returns type="jqXHR" />
148 /// </signature>
149 },
150 'getScript': function() {
151 /// <signature>
152 /// <summary>Load a JavaScript file from the server using a GET HTTP request, then execute it.</summary>
153 /// <param name="url" type="String">A string containing the URL to which the request is sent.</param>
154 /// <param name="success(script, textStatus, jqXHR)" type="Function">A callback function that is executed if the request succeeds.</param>
155 /// <returns type="jqXHR" />
156 /// </signature>
157 },
158 'globalEval': function() {
159 /// <signature>
160 /// <summary>Execute some JavaScript code globally.</summary>
161 /// <param name="code" type="String">The JavaScript code to execute.</param>
162 /// </signature>
163 },
164 'grep': function() {
165 /// <signature>
166 /// <summary>Finds the elements of an array which satisfy a filter function. The original array is not affected.</summary>
167 /// <param name="array" type="Array">The array to search through.</param>
168 /// <param name="function(elementOfArray, indexInArray)" type="Function">The function to process each item against. The first argument to the function is the item, and the second argument is the index. The function should return a Boolean value. this will be the global window object.</param>
169 /// <param name="invert" type="Boolean">If "invert" is false, or not provided, then the function returns an array consisting of all elements for which "callback" returns true. If "invert" is true, then the function returns an array consisting of all elements for which "callback" returns false.</param>
170 /// <returns type="Array" />
171 /// </signature>
172 },
173 'hasData': function() {
174 /// <signature>
175 /// <summary>Determine whether an element has any jQuery data associated with it.</summary>
176 /// <param name="element" type="Element">A DOM element to be checked for data.</param>
177 /// <returns type="Boolean" />
178 /// </signature>
179 },
180 'holdReady': function() {
181 /// <signature>
182 /// <summary>Holds or releases the execution of jQuery's ready event.</summary>
183 /// <param name="hold" type="Boolean">Indicates whether the ready hold is being requested or released</param>
184 /// </signature>
185 },
186 'inArray': function() {
187 /// <signature>
188 /// <summary>Search for a specified value within an array and return its index (or -1 if not found).</summary>
189 /// <param name="value" type="Anything">The value to search for.</param>
190 /// <param name="array" type="Array">An array through which to search.</param>
191 /// <param name="fromIndex" type="Number">The index of the array at which to begin the search. The default is 0, which will search the whole array.</param>
192 /// <returns type="Number" />
193 /// </signature>
194 },
195 'isArray': function() {
196 /// <signature>
197 /// <summary>Determine whether the argument is an array.</summary>
198 /// <param name="obj" type="Object">Object to test whether or not it is an array.</param>
199 /// <returns type="Boolean" />
200 /// </signature>
201 },
202 'isEmptyObject': function() {
203 /// <signature>
204 /// <summary>Check to see if an object is empty (contains no enumerable properties).</summary>
205 /// <param name="object" type="Object">The object that will be checked to see if it's empty.</param>
206 /// <returns type="Boolean" />
207 /// </signature>
208 },
209 'isFunction': function() {
210 /// <signature>
211 /// <summary>Determine if the argument passed is a Javascript function object.</summary>
212 /// <param name="obj" type="PlainObject">Object to test whether or not it is a function.</param>
213 /// <returns type="Boolean" />
214 /// </signature>
215 },
216 'isNumeric': function() {
217 /// <signature>
218 /// <summary>Determines whether its argument is a number.</summary>
219 /// <param name="value" type="PlainObject">The value to be tested.</param>
220 /// <returns type="Boolean" />
221 /// </signature>
222 },
223 'isPlainObject': function() {
224 /// <signature>
225 /// <summary>Check to see if an object is a plain object (created using "{}" or "new Object").</summary>
226 /// <param name="object" type="PlainObject">The object that will be checked to see if it's a plain object.</param>
227 /// <returns type="Boolean" />
228 /// </signature>
229 },
230 'isWindow': function() {
231 /// <signature>
232 /// <summary>Determine whether the argument is a window.</summary>
233 /// <param name="obj" type="PlainObject">Object to test whether or not it is a window.</param>
234 /// <returns type="Boolean" />
235 /// </signature>
236 },
237 'isXMLDoc': function() {
238 /// <signature>
239 /// <summary>Check to see if a DOM node is within an XML document (or is an XML document).</summary>
240 /// <param name="node" type="Element">The DOM node that will be checked to see if it's in an XML document.</param>
241 /// <returns type="Boolean" />
242 /// </signature>
243 },
244 'makeArray': function() {
245 /// <signature>
246 /// <summary>Convert an array-like object into a true JavaScript array.</summary>
247 /// <param name="obj" type="PlainObject">Any object to turn into a native Array.</param>
248 /// <returns type="Array" />
249 /// </signature>
250 },
251 'map': function() {
252 /// <signature>
253 /// <summary>Translate all items in an array or object to new array of items.</summary>
254 /// <param name="array" type="Array">The Array to translate.</param>
255 /// <param name="callback(elementOfArray, indexInArray)" type="Function">The function to process each item against. The first argument to the function is the array item, the second argument is the index in array The function can return any value. Within the function, this refers to the global (window) object.</param>
256 /// <returns type="Array" />
257 /// </signature>
258 /// <signature>
259 /// <summary>Translate all items in an array or object to new array of items.</summary>
260 /// <param name="arrayOrObject" type="">The Array or Object to translate.</param>
261 /// <param name="callback( value, indexOrKey )" type="Function">The function to process each item against. The first argument to the function is the value; the second argument is the index or key of the array or object property. The function can return any value to add to the array. A returned array will be flattened into the resulting array. Within the function, this refers to the global (window) object.</param>
262 /// <returns type="Array" />
263 /// </signature>
264 },
265 'merge': function() {
266 /// <signature>
267 /// <summary>Merge the contents of two arrays together into the first array.</summary>
268 /// <param name="first" type="Array">The first array to merge, the elements of second added.</param>
269 /// <param name="second" type="Array">The second array to merge into the first, unaltered.</param>
270 /// <returns type="Array" />
271 /// </signature>
272 },
273 'noConflict': function() {
274 /// <signature>
275 /// <summary>Relinquish jQuery's control of the $ variable.</summary>
276 /// <param name="removeAll" type="Boolean">A Boolean indicating whether to remove all jQuery variables from the global scope (including jQuery itself).</param>
277 /// <returns type="Object" />
278 /// </signature>
279 },
280 'noop': function() {
281 /// <summary>An empty function.</summary>
282 },
283 'now': function() {
284 /// <summary>Return a number representing the current time.</summary>
285 /// <returns type="Number" />
286 },
287 'param': function() {
288 /// <signature>
289 /// <summary>Create a serialized representation of an array or object, suitable for use in a URL query string or Ajax request.</summary>
290 /// <param name="obj" type="">An array or object to serialize.</param>
291 /// <returns type="String" />
292 /// </signature>
293 /// <signature>
294 /// <summary>Create a serialized representation of an array or object, suitable for use in a URL query string or Ajax request.</summary>
295 /// <param name="obj" type="">An array or object to serialize.</param>
296 /// <param name="traditional" type="Boolean">A Boolean indicating whether to perform a traditional "shallow" serialization.</param>
297 /// <returns type="String" />
298 /// </signature>
299 },
300 'parseHTML': function() {
301 /// <signature>
302 /// <summary>Parses a string into an array of DOM nodes.</summary>
303 /// <param name="data" type="String">HTML string to be parsed</param>
304 /// <param name="context" type="Element">Document element to serve as the context in which the HTML fragment will be created</param>
305 /// <param name="keepScripts" type="Boolean">A Boolean indicating whether to include scripts passed in the HTML string</param>
306 /// <returns type="Array" />
307 /// </signature>
308 },
309 'parseJSON': function() {
310 /// <signature>
311 /// <summary>Takes a well-formed JSON string and returns the resulting JavaScript object.</summary>
312 /// <param name="json" type="String">The JSON string to parse.</param>
313 /// <returns type="Object" />
314 /// </signature>
315 },
316 'parseXML': function() {
317 /// <signature>
318 /// <summary>Parses a string into an XML document.</summary>
319 /// <param name="data" type="String">a well-formed XML string to be parsed</param>
320 /// <returns type="XMLDocument" />
321 /// </signature>
322 },
323 'post': function() {
324 /// <signature>
325 /// <summary>Load data from the server using a HTTP POST request.</summary>
326 /// <param name="url" type="String">A string containing the URL to which the request is sent.</param>
327 /// <param name="data" type="">A plain object or string that is sent to the server with the request.</param>
328 /// <param name="success(data, textStatus, jqXHR)" type="Function">A callback function that is executed if the request succeeds. Required if dataType is provided, but can be null in that case.</param>
329 /// <param name="dataType" type="String">The type of data expected from the server. Default: Intelligent Guess (xml, json, script, text, html).</param>
330 /// <returns type="jqXHR" />
331 /// </signature>
332 },
333 'proxy': function() {
334 /// <signature>
335 /// <summary>Takes a function and returns a new one that will always have a particular context.</summary>
336 /// <param name="function" type="Function">The function whose context will be changed.</param>
337 /// <param name="context" type="PlainObject">The object to which the context (this) of the function should be set.</param>
338 /// <returns type="Function" />
339 /// </signature>
340 /// <signature>
341 /// <summary>Takes a function and returns a new one that will always have a particular context.</summary>
342 /// <param name="context" type="PlainObject">The object to which the context of the function should be set.</param>
343 /// <param name="name" type="String">The name of the function whose context will be changed (should be a property of the context object).</param>
344 /// <returns type="Function" />
345 /// </signature>
346 /// <signature>
347 /// <summary>Takes a function and returns a new one that will always have a particular context.</summary>
348 /// <param name="function" type="Function">The function whose context will be changed.</param>
349 /// <param name="context" type="PlainObject">The object to which the context (this) of the function should be set.</param>
350 /// <param name="additionalArguments" type="Anything">Any number of arguments to be passed to the function referenced in the function argument.</param>
351 /// <returns type="Function" />
352 /// </signature>
353 /// <signature>
354 /// <summary>Takes a function and returns a new one that will always have a particular context.</summary>
355 /// <param name="context" type="PlainObject">The object to which the context of the function should be set.</param>
356 /// <param name="name" type="String">The name of the function whose context will be changed (should be a property of the context object).</param>
357 /// <param name="additionalArguments" type="Anything">Any number of arguments to be passed to the function named in the name argument.</param>
358 /// <returns type="Function" />
359 /// </signature>
360 },
361 'queue': function() {
362 /// <signature>
363 /// <summary>Manipulate the queue of functions to be executed on the matched element.</summary>
364 /// <param name="element" type="Element">A DOM element where the array of queued functions is attached.</param>
365 /// <param name="queueName" type="String">A string containing the name of the queue. Defaults to fx, the standard effects queue.</param>
366 /// <param name="newQueue" type="Array">An array of functions to replace the current queue contents.</param>
367 /// <returns type="jQuery" />
368 /// </signature>
369 /// <signature>
370 /// <summary>Manipulate the queue of functions to be executed on the matched element.</summary>
371 /// <param name="element" type="Element">A DOM element on which to add a queued function.</param>
372 /// <param name="queueName" type="String">A string containing the name of the queue. Defaults to fx, the standard effects queue.</param>
373 /// <param name="callback()" type="Function">The new function to add to the queue.</param>
374 /// <returns type="jQuery" />
375 /// </signature>
376 },
377 'removeData': function() {
378 /// <signature>
379 /// <summary>Remove a previously-stored piece of data.</summary>
380 /// <param name="element" type="Element">A DOM element from which to remove data.</param>
381 /// <param name="name" type="String">A string naming the piece of data to remove.</param>
382 /// <returns type="jQuery" />
383 /// </signature>
384 },
385 'sub': function() {
386 /// <summary>Creates a new copy of jQuery whose properties and methods can be modified without affecting the original jQuery object.</summary>
387 /// <returns type="jQuery" />
388 },
389 'support': function() {
390 /// <summary>A collection of properties that represent the presence of different browser features or bugs. Primarily intended for jQuery's internal use; specific properties may be removed when they are no longer needed internally to improve page startup performance.</summary>
391 /// <returns type="Object" />
392 },
393 'trim': function() {
394 /// <signature>
395 /// <summary>Remove the whitespace from the beginning and end of a string.</summary>
396 /// <param name="str" type="String">The string to trim.</param>
397 /// <returns type="String" />
398 /// </signature>
399 },
400 'type': function() {
401 /// <signature>
402 /// <summary>Determine the internal JavaScript [[Class]] of an object.</summary>
403 /// <param name="obj" type="PlainObject">Object to get the internal JavaScript [[Class]] of.</param>
404 /// <returns type="String" />
405 /// </signature>
406 },
407 'unique': function() {
408 /// <signature>
409 /// <summary>Sorts an array of DOM elements, in place, with the duplicates removed. Note that this only works on arrays of DOM elements, not strings or numbers.</summary>
410 /// <param name="array" type="Array">The Array of DOM elements.</param>
411 /// <returns type="Array" />
412 /// </signature>
413 },
414 'when': function() {
415 /// <signature>
416 /// <summary>Provides a way to execute callback functions based on one or more objects, usually Deferred objects that represent asynchronous events.</summary>
417 /// <param name="deferreds" type="Deferred">One or more Deferred objects, or plain JavaScript objects.</param>
418 /// <returns type="Promise" />
419 /// </signature>
420 },
421});
422
423var _1228819969 = jQuery.Callbacks;
424jQuery.Callbacks = function(flags) {
425var _object = _1228819969(flags);
426intellisense.annotate(_object, {
427 'add': function() {
428 /// <signature>
429 /// <summary>Add a callback or a collection of callbacks to a callback list.</summary>
430 /// <param name="callbacks" type="">A function, or array of functions, that are to be added to the callback list.</param>
431 /// <returns type="Callbacks" />
432 /// </signature>
433 },
434 'disable': function() {
435 /// <summary>Disable a callback list from doing anything more.</summary>
436 /// <returns type="Callbacks" />
437 },
438 'disabled': function() {
439 /// <summary>Determine if the callbacks list has been disabled.</summary>
440 /// <returns type="Boolean" />
441 },
442 'empty': function() {
443 /// <summary>Remove all of the callbacks from a list.</summary>
444 /// <returns type="Callbacks" />
445 },
446 'fire': function() {
447 /// <signature>
448 /// <summary>Call all of the callbacks with the given arguments</summary>
449 /// <param name="arguments" type="Anything">The argument or list of arguments to pass back to the callback list.</param>
450 /// <returns type="Callbacks" />
451 /// </signature>
452 },
453 'fired': function() {
454 /// <summary>Determine if the callbacks have already been called at least once.</summary>
455 /// <returns type="Boolean" />
456 },
457 'fireWith': function() {
458 /// <signature>
459 /// <summary>Call all callbacks in a list with the given context and arguments.</summary>
460 /// <param name="context" type="">A reference to the context in which the callbacks in the list should be fired.</param>
461 /// <param name="args" type="">An argument, or array of arguments, to pass to the callbacks in the list.</param>
462 /// <returns type="Callbacks" />
463 /// </signature>
464 },
465 'has': function() {
466 /// <signature>
467 /// <summary>Determine whether a supplied callback is in a list</summary>
468 /// <param name="callback" type="Function">The callback to search for.</param>
469 /// <returns type="Boolean" />
470 /// </signature>
471 },
472 'lock': function() {
473 /// <summary>Lock a callback list in its current state.</summary>
474 /// <returns type="Callbacks" />
475 },
476 'locked': function() {
477 /// <summary>Determine if the callbacks list has been locked.</summary>
478 /// <returns type="Boolean" />
479 },
480 'remove': function() {
481 /// <signature>
482 /// <summary>Remove a callback or a collection of callbacks from a callback list.</summary>
483 /// <param name="callbacks" type="">A function, or array of functions, that are to be removed from the callback list.</param>
484 /// <returns type="Callbacks" />
485 /// </signature>
486 },
487});
488
489return _object;
490};
491intellisense.redirectDefinition(jQuery.Callbacks, _1228819969);
492
493var _731531622 = jQuery.Deferred;
494jQuery.Deferred = function(func) {
495var _object = _731531622(func);
496intellisense.annotate(_object, {
497 'always': function() {
498 /// <signature>
499 /// <summary>Add handlers to be called when the Deferred object is either resolved or rejected.</summary>
500 /// <param name="alwaysCallbacks" type="Function">A function, or array of functions, that is called when the Deferred is resolved or rejected.</param>
501 /// <param name="alwaysCallbacks" type="Function">Optional additional functions, or arrays of functions, that are called when the Deferred is resolved or rejected.</param>
502 /// <returns type="Deferred" />
503 /// </signature>
504 },
505 'done': function() {
506 /// <signature>
507 /// <summary>Add handlers to be called when the Deferred object is resolved.</summary>
508 /// <param name="doneCallbacks" type="Function">A function, or array of functions, that are called when the Deferred is resolved.</param>
509 /// <param name="doneCallbacks" type="Function">Optional additional functions, or arrays of functions, that are called when the Deferred is resolved.</param>
510 /// <returns type="Deferred" />
511 /// </signature>
512 },
513 'fail': function() {
514 /// <signature>
515 /// <summary>Add handlers to be called when the Deferred object is rejected.</summary>
516 /// <param name="failCallbacks" type="Function">A function, or array of functions, that are called when the Deferred is rejected.</param>
517 /// <param name="failCallbacks" type="Function">Optional additional functions, or arrays of functions, that are called when the Deferred is rejected.</param>
518 /// <returns type="Deferred" />
519 /// </signature>
520 },
521 'isRejected': function() {
522 /// <summary>Determine whether a Deferred object has been rejected.</summary>
523 /// <returns type="Boolean" />
524 },
525 'isResolved': function() {
526 /// <summary>Determine whether a Deferred object has been resolved.</summary>
527 /// <returns type="Boolean" />
528 },
529 'notify': function() {
530 /// <signature>
531 /// <summary>Call the progressCallbacks on a Deferred object with the given args.</summary>
532 /// <param name="args" type="Object">Optional arguments that are passed to the progressCallbacks.</param>
533 /// <returns type="Deferred" />
534 /// </signature>
535 },
536 'notifyWith': function() {
537 /// <signature>
538 /// <summary>Call the progressCallbacks on a Deferred object with the given context and args.</summary>
539 /// <param name="context" type="Object">Context passed to the progressCallbacks as the this object.</param>
540 /// <param name="args" type="Object">Optional arguments that are passed to the progressCallbacks.</param>
541 /// <returns type="Deferred" />
542 /// </signature>
543 },
544 'pipe': function() {
545 /// <signature>
546 /// <summary>Utility method to filter and/or chain Deferreds.</summary>
547 /// <param name="doneFilter" type="Function">An optional function that is called when the Deferred is resolved.</param>
548 /// <param name="failFilter" type="Function">An optional function that is called when the Deferred is rejected.</param>
549 /// <returns type="Promise" />
550 /// </signature>
551 /// <signature>
552 /// <summary>Utility method to filter and/or chain Deferreds.</summary>
553 /// <param name="doneFilter" type="Function">An optional function that is called when the Deferred is resolved.</param>
554 /// <param name="failFilter" type="Function">An optional function that is called when the Deferred is rejected.</param>
555 /// <param name="progressFilter" type="Function">An optional function that is called when progress notifications are sent to the Deferred.</param>
556 /// <returns type="Promise" />
557 /// </signature>
558 },
559 'progress': function() {
560 /// <signature>
561 /// <summary>Add handlers to be called when the Deferred object generates progress notifications.</summary>
562 /// <param name="progressCallbacks" type="">A function, or array of functions, to be called when the Deferred generates progress notifications.</param>
563 /// <returns type="Deferred" />
564 /// </signature>
565 },
566 'promise': function() {
567 /// <signature>
568 /// <summary>Return a Deferred's Promise object.</summary>
569 /// <param name="target" type="Object">Object onto which the promise methods have to be attached</param>
570 /// <returns type="Promise" />
571 /// </signature>
572 },
573 'reject': function() {
574 /// <signature>
575 /// <summary>Reject a Deferred object and call any failCallbacks with the given args.</summary>
576 /// <param name="args" type="Anything">Optional arguments that are passed to the failCallbacks.</param>
577 /// <returns type="Deferred" />
578 /// </signature>
579 },
580 'rejectWith': function() {
581 /// <signature>
582 /// <summary>Reject a Deferred object and call any failCallbacks with the given context and args.</summary>
583 /// <param name="context" type="Object">Context passed to the failCallbacks as the this object.</param>
584 /// <param name="args" type="Array">An optional array of arguments that are passed to the failCallbacks.</param>
585 /// <returns type="Deferred" />
586 /// </signature>
587 },
588 'resolve': function() {
589 /// <signature>
590 /// <summary>Resolve a Deferred object and call any doneCallbacks with the given args.</summary>
591 /// <param name="args" type="Anything">Optional arguments that are passed to the doneCallbacks.</param>
592 /// <returns type="Deferred" />
593 /// </signature>
594 },
595 'resolveWith': function() {
596 /// <signature>
597 /// <summary>Resolve a Deferred object and call any doneCallbacks with the given context and args.</summary>
598 /// <param name="context" type="Object">Context passed to the doneCallbacks as the this object.</param>
599 /// <param name="args" type="Array">An optional array of arguments that are passed to the doneCallbacks.</param>
600 /// <returns type="Deferred" />
601 /// </signature>
602 },
603 'state': function() {
604 /// <summary>Determine the current state of a Deferred object.</summary>
605 /// <returns type="String" />
606 },
607 'then': function() {
608 /// <signature>
609 /// <summary>Add handlers to be called when the Deferred object is resolved, rejected, or still in progress.</summary>
610 /// <param name="doneFilter" type="Function">A function that is called when the Deferred is resolved.</param>
611 /// <param name="failFilter" type="Function">An optional function that is called when the Deferred is rejected.</param>
612 /// <param name="progressFilter" type="Function">An optional function that is called when progress notifications are sent to the Deferred.</param>
613 /// <returns type="Promise" />
614 /// </signature>
615 /// <signature>
616 /// <summary>Add handlers to be called when the Deferred object is resolved, rejected, or still in progress.</summary>
617 /// <param name="doneCallbacks" type="Function">A function, or array of functions, called when the Deferred is resolved.</param>
618 /// <param name="failCallbacks" type="Function">A function, or array of functions, called when the Deferred is rejected.</param>
619 /// <returns type="Promise" />
620 /// </signature>
621 /// <signature>
622 /// <summary>Add handlers to be called when the Deferred object is resolved, rejected, or still in progress.</summary>
623 /// <param name="doneCallbacks" type="Function">A function, or array of functions, called when the Deferred is resolved.</param>
624 /// <param name="failCallbacks" type="Function">A function, or array of functions, called when the Deferred is rejected.</param>
625 /// <param name="progressCallbacks" type="Function">A function, or array of functions, called when the Deferred notifies progress.</param>
626 /// <returns type="Promise" />
627 /// </signature>
628 },
629});
630
631return _object;
632};
633intellisense.redirectDefinition(jQuery.Callbacks, _731531622);
634
635intellisense.annotate(jQuery.Event.prototype, {
636 'currentTarget': function() {
637 /// <summary>The current DOM element within the event bubbling phase.</summary>
638 /// <returns type="Element" />
639 },
640 'data': function() {
641 /// <summary>An optional object of data passed to an event method when the current executing handler is bound.</summary>
642 /// <returns type="Object" />
643 },
644 'delegateTarget': function() {
645 /// <summary>The element where the currently-called jQuery event handler was attached.</summary>
646 /// <returns type="Element" />
647 },
648 'isDefaultPrevented': function() {
649 /// <summary>Returns whether event.preventDefault() was ever called on this event object.</summary>
650 /// <returns type="Boolean" />
651 },
652 'isImmediatePropagationStopped': function() {
653 /// <summary>Returns whether event.stopImmediatePropagation() was ever called on this event object.</summary>
654 /// <returns type="Boolean" />
655 },
656 'isPropagationStopped': function() {
657 /// <summary>Returns whether event.stopPropagation() was ever called on this event object.</summary>
658 /// <returns type="Boolean" />
659 },
660 'metaKey': function() {
661 /// <summary>Indicates whether the META key was pressed when the event fired.</summary>
662 /// <returns type="Boolean" />
663 },
664 'namespace': function() {
665 /// <summary>The namespace specified when the event was triggered.</summary>
666 /// <returns type="String" />
667 },
668 'pageX': function() {
669 /// <summary>The mouse position relative to the left edge of the document.</summary>
670 /// <returns type="Number" />
671 },
672 'pageY': function() {
673 /// <summary>The mouse position relative to the top edge of the document.</summary>
674 /// <returns type="Number" />
675 },
676 'preventDefault': function() {
677 /// <summary>If this method is called, the default action of the event will not be triggered.</summary>
678 },
679 'relatedTarget': function() {
680 /// <summary>The other DOM element involved in the event, if any.</summary>
681 /// <returns type="Element" />
682 },
683 'result': function() {
684 /// <summary>The last value returned by an event handler that was triggered by this event, unless the value was undefined.</summary>
685 /// <returns type="Object" />
686 },
687 'stopImmediatePropagation': function() {
688 /// <summary>Keeps the rest of the handlers from being executed and prevents the event from bubbling up the DOM tree.</summary>
689 },
690 'stopPropagation': function() {
691 /// <summary>Prevents the event from bubbling up the DOM tree, preventing any parent handlers from being notified of the event.</summary>
692 },
693 'target': function() {
694 /// <summary>The DOM element that initiated the event.</summary>
695 /// <returns type="Element" />
696 },
697 'timeStamp': function() {
698 /// <summary>The difference in milliseconds between the time the browser created the event and January 1, 1970.</summary>
699 /// <returns type="Number" />
700 },
701 'type': function() {
702 /// <summary>Describes the nature of the event.</summary>
703 /// <returns type="String" />
704 },
705 'which': function() {
706 /// <summary>For key or mouse events, this property indicates the specific key or button that was pressed.</summary>
707 /// <returns type="Number" />
708 },
709});
710
711intellisense.annotate(jQuery.fn, {
712 'add': function() {
713 /// <signature>
714 /// <summary>Add elements to the set of matched elements.</summary>
715 /// <param name="selector" type="String">A string representing a selector expression to find additional elements to add to the set of matched elements.</param>
716 /// <returns type="jQuery" />
717 /// </signature>
718 /// <signature>
719 /// <summary>Add elements to the set of matched elements.</summary>
720 /// <param name="elements" type="Array">One or more elements to add to the set of matched elements.</param>
721 /// <returns type="jQuery" />
722 /// </signature>
723 /// <signature>
724 /// <summary>Add elements to the set of matched elements.</summary>
725 /// <param name="html" type="htmlString">An HTML fragment to add to the set of matched elements.</param>
726 /// <returns type="jQuery" />
727 /// </signature>
728 /// <signature>
729 /// <summary>Add elements to the set of matched elements.</summary>
730 /// <param name="jQuery object" type="jQuery object ">An existing jQuery object to add to the set of matched elements.</param>
731 /// <returns type="jQuery" />
732 /// </signature>
733 /// <signature>
734 /// <summary>Add elements to the set of matched elements.</summary>
735 /// <param name="selector" type="String">A string representing a selector expression to find additional elements to add to the set of matched elements.</param>
736 /// <param name="context" type="Element">The point in the document at which the selector should begin matching; similar to the context argument of the $(selector, context) method.</param>
737 /// <returns type="jQuery" />
738 /// </signature>
739 },
740 'addBack': function() {
741 /// <signature>
742 /// <summary>Add the previous set of elements on the stack to the current set, optionally filtered by a selector.</summary>
743 /// <param name="selector" type="String">A string containing a selector expression to match the current set of elements against.</param>
744 /// <returns type="jQuery" />
745 /// </signature>
746 },
747 'addClass': function() {
748 /// <signature>
749 /// <summary>Adds the specified class(es) to each of the set of matched elements.</summary>
750 /// <param name="className" type="String">One or more space-separated classes to be added to the class attribute of each matched element.</param>
751 /// <returns type="jQuery" />
752 /// </signature>
753 /// <signature>
754 /// <summary>Adds the specified class(es) to each of the set of matched elements.</summary>
755 /// <param name="function(index, currentClass)" type="Function">A function returning one or more space-separated class names to be added to the existing class name(s). Receives the index position of the element in the set and the existing class name(s) as arguments. Within the function, this refers to the current element in the set.</param>
756 /// <returns type="jQuery" />
757 /// </signature>
758 },
759 'after': function() {
760 /// <signature>
761 /// <summary>Insert content, specified by the parameter, after each element in the set of matched elements.</summary>
762 /// <param name="content" type="">HTML string, DOM element, or jQuery object to insert after each element in the set of matched elements.</param>
763 /// <param name="content" type="">One or more additional DOM elements, arrays of elements, HTML strings, or jQuery objects to insert after each element in the set of matched elements.</param>
764 /// <returns type="jQuery" />
765 /// </signature>
766 /// <signature>
767 /// <summary>Insert content, specified by the parameter, after each element in the set of matched elements.</summary>
768 /// <param name="function(index)" type="Function">A function that returns an HTML string, DOM element(s), or jQuery object to insert after each element in the set of matched elements. Receives the index position of the element in the set as an argument. Within the function, this refers to the current element in the set.</param>
769 /// <returns type="jQuery" />
770 /// </signature>
771 },
772 'ajaxComplete': function() {
773 /// <signature>
774 /// <summary>Register a handler to be called when Ajax requests complete. This is an AjaxEvent.</summary>
775 /// <param name="handler(event, XMLHttpRequest, ajaxOptions)" type="Function">The function to be invoked.</param>
776 /// <returns type="jQuery" />
777 /// </signature>
778 },
779 'ajaxError': function() {
780 /// <signature>
781 /// <summary>Register a handler to be called when Ajax requests complete with an error. This is an Ajax Event.</summary>
782 /// <param name="handler(event, jqXHR, ajaxSettings, thrownError)" type="Function">The function to be invoked.</param>
783 /// <returns type="jQuery" />
784 /// </signature>
785 },
786 'ajaxSend': function() {
787 /// <signature>
788 /// <summary>Attach a function to be executed before an Ajax request is sent. This is an Ajax Event.</summary>
789 /// <param name="handler(event, jqXHR, ajaxOptions)" type="Function">The function to be invoked.</param>
790 /// <returns type="jQuery" />
791 /// </signature>
792 },
793 'ajaxStart': function() {
794 /// <signature>
795 /// <summary>Register a handler to be called when the first Ajax request begins. This is an Ajax Event.</summary>
796 /// <param name="handler()" type="Function">The function to be invoked.</param>
797 /// <returns type="jQuery" />
798 /// </signature>
799 },
800 'ajaxStop': function() {
801 /// <signature>
802 /// <summary>Register a handler to be called when all Ajax requests have completed. This is an Ajax Event.</summary>
803 /// <param name="handler()" type="Function">The function to be invoked.</param>
804 /// <returns type="jQuery" />
805 /// </signature>
806 },
807 'ajaxSuccess': function() {
808 /// <signature>
809 /// <summary>Attach a function to be executed whenever an Ajax request completes successfully. This is an Ajax Event.</summary>
810 /// <param name="handler(event, XMLHttpRequest, ajaxOptions)" type="Function">The function to be invoked.</param>
811 /// <returns type="jQuery" />
812 /// </signature>
813 },
814 'all': function() {
815 /// <summary>Selects all elements.</summary>
816 },
817 'andSelf': function() {
818 /// <summary>Add the previous set of elements on the stack to the current set.</summary>
819 /// <returns type="jQuery" />
820 },
821 'animate': function() {
822 /// <signature>
823 /// <summary>Perform a custom animation of a set of CSS properties.</summary>
824 /// <param name="properties" type="PlainObject">An object of CSS properties and values that the animation will move toward.</param>
825 /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
826 /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param>
827 /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
828 /// <returns type="jQuery" />
829 /// </signature>
830 /// <signature>
831 /// <summary>Perform a custom animation of a set of CSS properties.</summary>
832 /// <param name="properties" type="PlainObject">An object of CSS properties and values that the animation will move toward.</param>
833 /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param>
834 /// <returns type="jQuery" />
835 /// </signature>
836 },
837 'animated': function() {
838 /// <summary>Select all elements that are in the progress of an animation at the time the selector is run.</summary>
839 },
840 'append': function() {
841 /// <signature>
842 /// <summary>Insert content, specified by the parameter, to the end of each element in the set of matched elements.</summary>
843 /// <param name="content" type="">DOM element, HTML string, or jQuery object to insert at the end of each element in the set of matched elements.</param>
844 /// <param name="content" type="">One or more additional DOM elements, arrays of elements, HTML strings, or jQuery objects to insert at the end of each element in the set of matched elements.</param>
845 /// <returns type="jQuery" />
846 /// </signature>
847 /// <signature>
848 /// <summary>Insert content, specified by the parameter, to the end of each element in the set of matched elements.</summary>
849 /// <param name="function(index, html)" type="Function">A function that returns an HTML string, DOM element(s), or jQuery object to insert at the end of each element in the set of matched elements. Receives the index position of the element in the set and the old HTML value of the element as arguments. Within the function, this refers to the current element in the set.</param>
850 /// <returns type="jQuery" />
851 /// </signature>
852 },
853 'appendTo': function() {
854 /// <signature>
855 /// <summary>Insert every element in the set of matched elements to the end of the target.</summary>
856 /// <param name="target" type="">A selector, element, HTML string, or jQuery object; the matched set of elements will be inserted at the end of the element(s) specified by this parameter.</param>
857 /// <returns type="jQuery" />
858 /// </signature>
859 },
860 'attr': function() {
861 /// <signature>
862 /// <summary>Set one or more attributes for the set of matched elements.</summary>
863 /// <param name="attributeName" type="String">The name of the attribute to set.</param>
864 /// <param name="value" type="">A value to set for the attribute.</param>
865 /// <returns type="jQuery" />
866 /// </signature>
867 /// <signature>
868 /// <summary>Set one or more attributes for the set of matched elements.</summary>
869 /// <param name="attributes" type="PlainObject">An object of attribute-value pairs to set.</param>
870 /// <returns type="jQuery" />
871 /// </signature>
872 /// <signature>
873 /// <summary>Set one or more attributes for the set of matched elements.</summary>
874 /// <param name="attributeName" type="String">The name of the attribute to set.</param>
875 /// <param name="function(index, attr)" type="Function">A function returning the value to set. this is the current element. Receives the index position of the element in the set and the old attribute value as arguments.</param>
876 /// <returns type="jQuery" />
877 /// </signature>
878 },
879 'attributeContains': function() {
880 /// <signature>
881 /// <summary>Selects elements that have the specified attribute with a value containing the a given substring.</summary>
882 /// <param name="attribute" type="String">An attribute name.</param>
883 /// <param name="value" type="String">An attribute value. Can be either an unquoted single word or a quoted string.</param>
884 /// </signature>
885 },
886 'attributeContainsPrefix': function() {
887 /// <signature>
888 /// <summary>Selects elements that have the specified attribute with a value either equal to a given string or starting with that string followed by a hyphen (-).</summary>
889 /// <param name="attribute" type="String">An attribute name.</param>
890 /// <param name="value" type="String">An attribute value. Can be either an unquoted single word or a quoted string.</param>
891 /// </signature>
892 },
893 'attributeContainsWord': function() {
894 /// <signature>
895 /// <summary>Selects elements that have the specified attribute with a value containing a given word, delimited by spaces.</summary>
896 /// <param name="attribute" type="String">An attribute name.</param>
897 /// <param name="value" type="String">An attribute value. Can be either an unquoted single word or a quoted string.</param>
898 /// </signature>
899 },
900 'attributeEndsWith': function() {
901 /// <signature>
902 /// <summary>Selects elements that have the specified attribute with a value ending exactly with a given string. The comparison is case sensitive.</summary>
903 /// <param name="attribute" type="String">An attribute name.</param>
904 /// <param name="value" type="String">An attribute value. Can be either an unquoted single word or a quoted string.</param>
905 /// </signature>
906 },
907 'attributeEquals': function() {
908 /// <signature>
909 /// <summary>Selects elements that have the specified attribute with a value exactly equal to a certain value.</summary>
910 /// <param name="attribute" type="String">An attribute name.</param>
911 /// <param name="value" type="String">An attribute value. Can be either an unquoted single word or a quoted string.</param>
912 /// </signature>
913 },
914 'attributeHas': function() {
915 /// <signature>
916 /// <summary>Selects elements that have the specified attribute, with any value.</summary>
917 /// <param name="attribute" type="String">An attribute name.</param>
918 /// </signature>
919 },
920 'attributeMultiple': function() {
921 /// <signature>
922 /// <summary>Matches elements that match all of the specified attribute filters.</summary>
923 /// <param name="attributeFilter1" type="String">An attribute filter.</param>
924 /// <param name="attributeFilter2" type="String">Another attribute filter, reducing the selection even more</param>
925 /// <param name="attributeFilterN" type="String">As many more attribute filters as necessary</param>
926 /// </signature>
927 },
928 'attributeNotEqual': function() {
929 /// <signature>
930 /// <summary>Select elements that either don't have the specified attribute, or do have the specified attribute but not with a certain value.</summary>
931 /// <param name="attribute" type="String">An attribute name.</param>
932 /// <param name="value" type="String">An attribute value. Can be either an unquoted single word or a quoted string.</param>
933 /// </signature>
934 },
935 'attributeStartsWith': function() {
936 /// <signature>
937 /// <summary>Selects elements that have the specified attribute with a value beginning exactly with a given string.</summary>
938 /// <param name="attribute" type="String">An attribute name.</param>
939 /// <param name="value" type="String">An attribute value. Can be either an unquoted single word or a quoted string.</param>
940 /// </signature>
941 },
942 'before': function() {
943 /// <signature>
944 /// <summary>Insert content, specified by the parameter, before each element in the set of matched elements.</summary>
945 /// <param name="content" type="">HTML string, DOM element, or jQuery object to insert before each element in the set of matched elements.</param>
946 /// <param name="content" type="">One or more additional DOM elements, arrays of elements, HTML strings, or jQuery objects to insert before each element in the set of matched elements.</param>
947 /// <returns type="jQuery" />
948 /// </signature>
949 /// <signature>
950 /// <summary>Insert content, specified by the parameter, before each element in the set of matched elements.</summary>
951 /// <param name="function" type="Function">A function that returns an HTML string, DOM element(s), or jQuery object to insert before each element in the set of matched elements. Receives the index position of the element in the set as an argument. Within the function, this refers to the current element in the set.</param>
952 /// <returns type="jQuery" />
953 /// </signature>
954 },
955 'bind': function() {
956 /// <signature>
957 /// <summary>Attach a handler to an event for the elements.</summary>
958 /// <param name="eventType" type="String">A string containing one or more DOM event types, such as "click" or "submit," or custom event names.</param>
959 /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param>
960 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
961 /// <returns type="jQuery" />
962 /// </signature>
963 /// <signature>
964 /// <summary>Attach a handler to an event for the elements.</summary>
965 /// <param name="eventType" type="String">A string containing one or more DOM event types, such as "click" or "submit," or custom event names.</param>
966 /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param>
967 /// <param name="preventBubble" type="Boolean">Setting the third argument to false will attach a function that prevents the default action from occurring and stops the event from bubbling. The default is true.</param>
968 /// <returns type="jQuery" />
969 /// </signature>
970 /// <signature>
971 /// <summary>Attach a handler to an event for the elements.</summary>
972 /// <param name="events" type="Object">An object containing one or more DOM event types and functions to execute for them.</param>
973 /// <returns type="jQuery" />
974 /// </signature>
975 },
976 'blur': function() {
977 /// <signature>
978 /// <summary>Bind an event handler to the "blur" JavaScript event, or trigger that event on an element.</summary>
979 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
980 /// <returns type="jQuery" />
981 /// </signature>
982 /// <signature>
983 /// <summary>Bind an event handler to the "blur" JavaScript event, or trigger that event on an element.</summary>
984 /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param>
985 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
986 /// <returns type="jQuery" />
987 /// </signature>
988 },
989 'button': function() {
990 /// <summary>Selects all button elements and elements of type button.</summary>
991 },
992 'change': function() {
993 /// <signature>
994 /// <summary>Bind an event handler to the "change" JavaScript event, or trigger that event on an element.</summary>
995 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
996 /// <returns type="jQuery" />
997 /// </signature>
998 /// <signature>
999 /// <summary>Bind an event handler to the "change" JavaScript event, or trigger that event on an element.</summary>
1000 /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param>
1001 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1002 /// <returns type="jQuery" />
1003 /// </signature>
1004 },
1005 'checkbox': function() {
1006 /// <summary>Selects all elements of type checkbox.</summary>
1007 },
1008 'checked': function() {
1009 /// <summary>Matches all elements that are checked or selected.</summary>
1010 },
1011 'child': function() {
1012 /// <signature>
1013 /// <summary>Selects all direct child elements specified by "child" of elements specified by "parent".</summary>
1014 /// <param name="parent" type="String">Any valid selector.</param>
1015 /// <param name="child" type="String">A selector to filter the child elements.</param>
1016 /// </signature>
1017 },
1018 'children': function() {
1019 /// <signature>
1020 /// <summary>Get the children of each element in the set of matched elements, optionally filtered by a selector.</summary>
1021 /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
1022 /// <returns type="jQuery" />
1023 /// </signature>
1024 },
1025 'class': function() {
1026 /// <signature>
1027 /// <summary>Selects all elements with the given class.</summary>
1028 /// <param name="class" type="String">A class to search for. An element can have multiple classes; only one of them must match.</param>
1029 /// </signature>
1030 },
1031 'clearQueue': function() {
1032 /// <signature>
1033 /// <summary>Remove from the queue all items that have not yet been run.</summary>
1034 /// <param name="queueName" type="String">A string containing the name of the queue. Defaults to fx, the standard effects queue.</param>
1035 /// <returns type="jQuery" />
1036 /// </signature>
1037 },
1038 'click': function() {
1039 /// <signature>
1040 /// <summary>Bind an event handler to the "click" JavaScript event, or trigger that event on an element.</summary>
1041 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1042 /// <returns type="jQuery" />
1043 /// </signature>
1044 /// <signature>
1045 /// <summary>Bind an event handler to the "click" JavaScript event, or trigger that event on an element.</summary>
1046 /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param>
1047 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1048 /// <returns type="jQuery" />
1049 /// </signature>
1050 },
1051 'clone': function() {
1052 /// <signature>
1053 /// <summary>Create a deep copy of the set of matched elements.</summary>
1054 /// <param name="withDataAndEvents" type="Boolean">A Boolean indicating whether event handlers should be copied along with the elements. As of jQuery 1.4, element data will be copied as well.</param>
1055 /// <returns type="jQuery" />
1056 /// </signature>
1057 /// <signature>
1058 /// <summary>Create a deep copy of the set of matched elements.</summary>
1059 /// <param name="withDataAndEvents" type="Boolean">A Boolean indicating whether event handlers and data should be copied along with the elements. The default value is false. *In jQuery 1.5.0 the default value was incorrectly true; it was changed back to false in 1.5.1 and up.</param>
1060 /// <param name="deepWithDataAndEvents" type="Boolean">A Boolean indicating whether event handlers and data for all children of the cloned element should be copied. By default its value matches the first argument's value (which defaults to false).</param>
1061 /// <returns type="jQuery" />
1062 /// </signature>
1063 },
1064 'closest': function() {
1065 /// <signature>
1066 /// <summary>For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.</summary>
1067 /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
1068 /// <returns type="jQuery" />
1069 /// </signature>
1070 /// <signature>
1071 /// <summary>For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.</summary>
1072 /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
1073 /// <param name="context" type="Element">A DOM element within which a matching element may be found. If no context is passed in then the context of the jQuery set will be used instead.</param>
1074 /// <returns type="jQuery" />
1075 /// </signature>
1076 /// <signature>
1077 /// <summary>For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.</summary>
1078 /// <param name="jQuery object" type="jQuery">A jQuery object to match elements against.</param>
1079 /// <returns type="jQuery" />
1080 /// </signature>
1081 /// <signature>
1082 /// <summary>For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.</summary>
1083 /// <param name="element" type="Element">An element to match elements against.</param>
1084 /// <returns type="jQuery" />
1085 /// </signature>
1086 },
1087 'contains': function() {
1088 /// <signature>
1089 /// <summary>Select all elements that contain the specified text.</summary>
1090 /// <param name="text" type="String">A string of text to look for. It's case sensitive.</param>
1091 /// </signature>
1092 },
1093 'contents': function() {
1094 /// <summary>Get the children of each element in the set of matched elements, including text and comment nodes.</summary>
1095 /// <returns type="jQuery" />
1096 },
1097 'context': function() {
1098 /// <summary>The DOM node context originally passed to jQuery(); if none was passed then context will likely be the document.</summary>
1099 /// <returns type="Element" />
1100 },
1101 'css': function() {
1102 /// <signature>
1103 /// <summary>Set one or more CSS properties for the set of matched elements.</summary>
1104 /// <param name="propertyName" type="String">A CSS property name.</param>
1105 /// <param name="value" type="">A value to set for the property.</param>
1106 /// <returns type="jQuery" />
1107 /// </signature>
1108 /// <signature>
1109 /// <summary>Set one or more CSS properties for the set of matched elements.</summary>
1110 /// <param name="propertyName" type="String">A CSS property name.</param>
1111 /// <param name="function(index, value)" type="Function">A function returning the value to set. this is the current element. Receives the index position of the element in the set and the old value as arguments.</param>
1112 /// <returns type="jQuery" />
1113 /// </signature>
1114 /// <signature>
1115 /// <summary>Set one or more CSS properties for the set of matched elements.</summary>
1116 /// <param name="properties" type="PlainObject">An object of property-value pairs to set.</param>
1117 /// <returns type="jQuery" />
1118 /// </signature>
1119 },
1120 'data': function() {
1121 /// <signature>
1122 /// <summary>Store arbitrary data associated with the matched elements.</summary>
1123 /// <param name="key" type="String">A string naming the piece of data to set.</param>
1124 /// <param name="value" type="Object">The new data value; it can be any Javascript type including Array or Object.</param>
1125 /// <returns type="jQuery" />
1126 /// </signature>
1127 /// <signature>
1128 /// <summary>Store arbitrary data associated with the matched elements.</summary>
1129 /// <param name="obj" type="Object">An object of key-value pairs of data to update.</param>
1130 /// <returns type="jQuery" />
1131 /// </signature>
1132 },
1133 'dblclick': function() {
1134 /// <signature>
1135 /// <summary>Bind an event handler to the "dblclick" JavaScript event, or trigger that event on an element.</summary>
1136 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1137 /// <returns type="jQuery" />
1138 /// </signature>
1139 /// <signature>
1140 /// <summary>Bind an event handler to the "dblclick" JavaScript event, or trigger that event on an element.</summary>
1141 /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param>
1142 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1143 /// <returns type="jQuery" />
1144 /// </signature>
1145 },
1146 'delay': function() {
1147 /// <signature>
1148 /// <summary>Set a timer to delay execution of subsequent items in the queue.</summary>
1149 /// <param name="duration" type="Number">An integer indicating the number of milliseconds to delay execution of the next item in the queue.</param>
1150 /// <param name="queueName" type="String">A string containing the name of the queue. Defaults to fx, the standard effects queue.</param>
1151 /// <returns type="jQuery" />
1152 /// </signature>
1153 },
1154 'delegate': function() {
1155 /// <signature>
1156 /// <summary>Attach a handler to one or more events for all elements that match the selector, now or in the future, based on a specific set of root elements.</summary>
1157 /// <param name="selector" type="String">A selector to filter the elements that trigger the event.</param>
1158 /// <param name="eventType" type="String">A string containing one or more space-separated JavaScript event types, such as "click" or "keydown," or custom event names.</param>
1159 /// <param name="handler(eventObject)" type="Function">A function to execute at the time the event is triggered.</param>
1160 /// <returns type="jQuery" />
1161 /// </signature>
1162 /// <signature>
1163 /// <summary>Attach a handler to one or more events for all elements that match the selector, now or in the future, based on a specific set of root elements.</summary>
1164 /// <param name="selector" type="String">A selector to filter the elements that trigger the event.</param>
1165 /// <param name="eventType" type="String">A string containing one or more space-separated JavaScript event types, such as "click" or "keydown," or custom event names.</param>
1166 /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param>
1167 /// <param name="handler(eventObject)" type="Function">A function to execute at the time the event is triggered.</param>
1168 /// <returns type="jQuery" />
1169 /// </signature>
1170 /// <signature>
1171 /// <summary>Attach a handler to one or more events for all elements that match the selector, now or in the future, based on a specific set of root elements.</summary>
1172 /// <param name="selector" type="String">A selector to filter the elements that trigger the event.</param>
1173 /// <param name="events" type="PlainObject">A plain object of one or more event types and functions to execute for them.</param>
1174 /// <returns type="jQuery" />
1175 /// </signature>
1176 },
1177 'dequeue': function() {
1178 /// <signature>
1179 /// <summary>Execute the next function on the queue for the matched elements.</summary>
1180 /// <param name="queueName" type="String">A string containing the name of the queue. Defaults to fx, the standard effects queue.</param>
1181 /// <returns type="jQuery" />
1182 /// </signature>
1183 },
1184 'descendant': function() {
1185 /// <signature>
1186 /// <summary>Selects all elements that are descendants of a given ancestor.</summary>
1187 /// <param name="ancestor" type="String">Any valid selector.</param>
1188 /// <param name="descendant" type="String">A selector to filter the descendant elements.</param>
1189 /// </signature>
1190 },
1191 'detach': function() {
1192 /// <signature>
1193 /// <summary>Remove the set of matched elements from the DOM.</summary>
1194 /// <param name="selector" type="String">A selector expression that filters the set of matched elements to be removed.</param>
1195 /// <returns type="jQuery" />
1196 /// </signature>
1197 },
1198 'die': function() {
1199 /// <signature>
1200 /// <summary>Remove event handlers previously attached using .live() from the elements.</summary>
1201 /// <param name="eventType" type="String">A string containing a JavaScript event type, such as click or keydown.</param>
1202 /// <param name="handler" type="String">The function that is no longer to be executed.</param>
1203 /// <returns type="jQuery" />
1204 /// </signature>
1205 /// <signature>
1206 /// <summary>Remove event handlers previously attached using .live() from the elements.</summary>
1207 /// <param name="events" type="PlainObject">A plain object of one or more event types, such as click or keydown and their corresponding functions that are no longer to be executed.</param>
1208 /// <returns type="jQuery" />
1209 /// </signature>
1210 },
1211 'disabled': function() {
1212 /// <summary>Selects all elements that are disabled.</summary>
1213 },
1214 'each': function() {
1215 /// <signature>
1216 /// <summary>Iterate over a jQuery object, executing a function for each matched element.</summary>
1217 /// <param name="function(index, Element)" type="Function">A function to execute for each matched element.</param>
1218 /// <returns type="jQuery" />
1219 /// </signature>
1220 },
1221 'element': function() {
1222 /// <signature>
1223 /// <summary>Selects all elements with the given tag name.</summary>
1224 /// <param name="element" type="String">An element to search for. Refers to the tagName of DOM nodes.</param>
1225 /// </signature>
1226 },
1227 'empty': function() {
1228 /// <summary>Select all elements that have no children (including text nodes).</summary>
1229 },
1230 'enabled': function() {
1231 /// <summary>Selects all elements that are enabled.</summary>
1232 },
1233 'end': function() {
1234 /// <summary>End the most recent filtering operation in the current chain and return the set of matched elements to its previous state.</summary>
1235 /// <returns type="jQuery" />
1236 },
1237 'eq': function() {
1238 /// <signature>
1239 /// <summary>Select the element at index n within the matched set.</summary>
1240 /// <param name="index" type="Number">Zero-based index of the element to match.</param>
1241 /// </signature>
1242 /// <signature>
1243 /// <summary>Select the element at index n within the matched set.</summary>
1244 /// <param name="-index" type="Number">Zero-based index of the element to match, counting backwards from the last element.</param>
1245 /// </signature>
1246 },
1247 'error': function() {
1248 /// <signature>
1249 /// <summary>Bind an event handler to the "error" JavaScript event.</summary>
1250 /// <param name="handler(eventObject)" type="Function">A function to execute when the event is triggered.</param>
1251 /// <returns type="jQuery" />
1252 /// </signature>
1253 /// <signature>
1254 /// <summary>Bind an event handler to the "error" JavaScript event.</summary>
1255 /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param>
1256 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1257 /// <returns type="jQuery" />
1258 /// </signature>
1259 },
1260 'even': function() {
1261 /// <summary>Selects even elements, zero-indexed. See also odd.</summary>
1262 },
1263 'fadeIn': function() {
1264 /// <signature>
1265 /// <summary>Display the matched elements by fading them to opaque.</summary>
1266 /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
1267 /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
1268 /// <returns type="jQuery" />
1269 /// </signature>
1270 /// <signature>
1271 /// <summary>Display the matched elements by fading them to opaque.</summary>
1272 /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param>
1273 /// <returns type="jQuery" />
1274 /// </signature>
1275 /// <signature>
1276 /// <summary>Display the matched elements by fading them to opaque.</summary>
1277 /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
1278 /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param>
1279 /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
1280 /// <returns type="jQuery" />
1281 /// </signature>
1282 },
1283 'fadeOut': function() {
1284 /// <signature>
1285 /// <summary>Hide the matched elements by fading them to transparent.</summary>
1286 /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
1287 /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
1288 /// <returns type="jQuery" />
1289 /// </signature>
1290 /// <signature>
1291 /// <summary>Hide the matched elements by fading them to transparent.</summary>
1292 /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param>
1293 /// <returns type="jQuery" />
1294 /// </signature>
1295 /// <signature>
1296 /// <summary>Hide the matched elements by fading them to transparent.</summary>
1297 /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
1298 /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param>
1299 /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
1300 /// <returns type="jQuery" />
1301 /// </signature>
1302 },
1303 'fadeTo': function() {
1304 /// <signature>
1305 /// <summary>Adjust the opacity of the matched elements.</summary>
1306 /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
1307 /// <param name="opacity" type="Number">A number between 0 and 1 denoting the target opacity.</param>
1308 /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
1309 /// <returns type="jQuery" />
1310 /// </signature>
1311 /// <signature>
1312 /// <summary>Adjust the opacity of the matched elements.</summary>
1313 /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
1314 /// <param name="opacity" type="Number">A number between 0 and 1 denoting the target opacity.</param>
1315 /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param>
1316 /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
1317 /// <returns type="jQuery" />
1318 /// </signature>
1319 },
1320 'fadeToggle': function() {
1321 /// <signature>
1322 /// <summary>Display or hide the matched elements by animating their opacity.</summary>
1323 /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
1324 /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param>
1325 /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
1326 /// <returns type="jQuery" />
1327 /// </signature>
1328 /// <signature>
1329 /// <summary>Display or hide the matched elements by animating their opacity.</summary>
1330 /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param>
1331 /// <returns type="jQuery" />
1332 /// </signature>
1333 },
1334 'file': function() {
1335 /// <summary>Selects all elements of type file.</summary>
1336 },
1337 'filter': function() {
1338 /// <signature>
1339 /// <summary>Reduce the set of matched elements to those that match the selector or pass the function's test.</summary>
1340 /// <param name="selector" type="String">A string containing a selector expression to match the current set of elements against.</param>
1341 /// <returns type="jQuery" />
1342 /// </signature>
1343 /// <signature>
1344 /// <summary>Reduce the set of matched elements to those that match the selector or pass the function's test.</summary>
1345 /// <param name="function(index)" type="Function">A function used as a test for each element in the set. this is the current DOM element.</param>
1346 /// <returns type="jQuery" />
1347 /// </signature>
1348 /// <signature>
1349 /// <summary>Reduce the set of matched elements to those that match the selector or pass the function's test.</summary>
1350 /// <param name="element" type="Element">An element to match the current set of elements against.</param>
1351 /// <returns type="jQuery" />
1352 /// </signature>
1353 /// <signature>
1354 /// <summary>Reduce the set of matched elements to those that match the selector or pass the function's test.</summary>
1355 /// <param name="jQuery object" type="Object">An existing jQuery object to match the current set of elements against.</param>
1356 /// <returns type="jQuery" />
1357 /// </signature>
1358 },
1359 'find': function() {
1360 /// <signature>
1361 /// <summary>Get the descendants of each element in the current set of matched elements, filtered by a selector, jQuery object, or element.</summary>
1362 /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
1363 /// <returns type="jQuery" />
1364 /// </signature>
1365 /// <signature>
1366 /// <summary>Get the descendants of each element in the current set of matched elements, filtered by a selector, jQuery object, or element.</summary>
1367 /// <param name="jQuery object" type="Object">A jQuery object to match elements against.</param>
1368 /// <returns type="jQuery" />
1369 /// </signature>
1370 /// <signature>
1371 /// <summary>Get the descendants of each element in the current set of matched elements, filtered by a selector, jQuery object, or element.</summary>
1372 /// <param name="element" type="Element">An element to match elements against.</param>
1373 /// <returns type="jQuery" />
1374 /// </signature>
1375 },
1376 'finish': function() {
1377 /// <signature>
1378 /// <summary>Stop the currently-running animation, remove all queued animations, and complete all animations for the matched elements.</summary>
1379 /// <param name="queue" type="String">The name of the queue in which to stop animations.</param>
1380 /// <returns type="jQuery" />
1381 /// </signature>
1382 },
1383 'first': function() {
1384 /// <summary>Selects the first matched element.</summary>
1385 },
1386 'first-child': function() {
1387 /// <summary>Selects all elements that are the first child of their parent.</summary>
1388 },
1389 'first-of-type': function() {
1390 /// <summary>Selects all elements that are the first among siblings of the same element name.</summary>
1391 },
1392 'focus': function() {
1393 /// <signature>
1394 /// <summary>Bind an event handler to the "focus" JavaScript event, or trigger that event on an element.</summary>
1395 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1396 /// <returns type="jQuery" />
1397 /// </signature>
1398 /// <signature>
1399 /// <summary>Bind an event handler to the "focus" JavaScript event, or trigger that event on an element.</summary>
1400 /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param>
1401 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1402 /// <returns type="jQuery" />
1403 /// </signature>
1404 },
1405 'focusin': function() {
1406 /// <signature>
1407 /// <summary>Bind an event handler to the "focusin" event.</summary>
1408 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1409 /// <returns type="jQuery" />
1410 /// </signature>
1411 /// <signature>
1412 /// <summary>Bind an event handler to the "focusin" event.</summary>
1413 /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param>
1414 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1415 /// <returns type="jQuery" />
1416 /// </signature>
1417 },
1418 'focusout': function() {
1419 /// <signature>
1420 /// <summary>Bind an event handler to the "focusout" JavaScript event.</summary>
1421 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1422 /// <returns type="jQuery" />
1423 /// </signature>
1424 /// <signature>
1425 /// <summary>Bind an event handler to the "focusout" JavaScript event.</summary>
1426 /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param>
1427 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1428 /// <returns type="jQuery" />
1429 /// </signature>
1430 },
1431 'get': function() {
1432 /// <signature>
1433 /// <summary>Retrieve one of the DOM elements matched by the jQuery object.</summary>
1434 /// <param name="index" type="Number">A zero-based integer indicating which element to retrieve.</param>
1435 /// <returns type="Element" />
1436 /// </signature>
1437 },
1438 'gt': function() {
1439 /// <signature>
1440 /// <summary>Select all elements at an index greater than index within the matched set.</summary>
1441 /// <param name="index" type="Number">Zero-based index.</param>
1442 /// </signature>
1443 /// <signature>
1444 /// <summary>Select all elements at an index greater than index within the matched set.</summary>
1445 /// <param name="-index" type="Number">Zero-based index, counting backwards from the last element.</param>
1446 /// </signature>
1447 },
1448 'has': function() {
1449 /// <signature>
1450 /// <summary>Reduce the set of matched elements to those that have a descendant that matches the selector or DOM element.</summary>
1451 /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
1452 /// <returns type="jQuery" />
1453 /// </signature>
1454 /// <signature>
1455 /// <summary>Reduce the set of matched elements to those that have a descendant that matches the selector or DOM element.</summary>
1456 /// <param name="contained" type="Element">A DOM element to match elements against.</param>
1457 /// <returns type="jQuery" />
1458 /// </signature>
1459 },
1460 'hasClass': function() {
1461 /// <signature>
1462 /// <summary>Determine whether any of the matched elements are assigned the given class.</summary>
1463 /// <param name="className" type="String">The class name to search for.</param>
1464 /// <returns type="Boolean" />
1465 /// </signature>
1466 },
1467 'header': function() {
1468 /// <summary>Selects all elements that are headers, like h1, h2, h3 and so on.</summary>
1469 },
1470 'height': function() {
1471 /// <signature>
1472 /// <summary>Set the CSS height of every matched element.</summary>
1473 /// <param name="value" type="">An integer representing the number of pixels, or an integer with an optional unit of measure appended (as a string).</param>
1474 /// <returns type="jQuery" />
1475 /// </signature>
1476 /// <signature>
1477 /// <summary>Set the CSS height of every matched element.</summary>
1478 /// <param name="function(index, height)" type="Function">A function returning the height to set. Receives the index position of the element in the set and the old height as arguments. Within the function, this refers to the current element in the set.</param>
1479 /// <returns type="jQuery" />
1480 /// </signature>
1481 },
1482 'hidden': function() {
1483 /// <summary>Selects all elements that are hidden.</summary>
1484 },
1485 'hide': function() {
1486 /// <signature>
1487 /// <summary>Hide the matched elements.</summary>
1488 /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
1489 /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
1490 /// <returns type="jQuery" />
1491 /// </signature>
1492 /// <signature>
1493 /// <summary>Hide the matched elements.</summary>
1494 /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param>
1495 /// <returns type="jQuery" />
1496 /// </signature>
1497 /// <signature>
1498 /// <summary>Hide the matched elements.</summary>
1499 /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
1500 /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param>
1501 /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
1502 /// <returns type="jQuery" />
1503 /// </signature>
1504 },
1505 'hover': function() {
1506 /// <signature>
1507 /// <summary>Bind two handlers to the matched elements, to be executed when the mouse pointer enters and leaves the elements.</summary>
1508 /// <param name="handlerIn(eventObject)" type="Function">A function to execute when the mouse pointer enters the element.</param>
1509 /// <param name="handlerOut(eventObject)" type="Function">A function to execute when the mouse pointer leaves the element.</param>
1510 /// <returns type="jQuery" />
1511 /// </signature>
1512 },
1513 'html': function() {
1514 /// <signature>
1515 /// <summary>Set the HTML contents of each element in the set of matched elements.</summary>
1516 /// <param name="htmlString" type="htmlString">A string of HTML to set as the content of each matched element.</param>
1517 /// <returns type="jQuery" />
1518 /// </signature>
1519 /// <signature>
1520 /// <summary>Set the HTML contents of each element in the set of matched elements.</summary>
1521 /// <param name="function(index, oldhtml)" type="Function">A function returning the HTML content to set. Receives the index position of the element in the set and the old HTML value as arguments. jQuery empties the element before calling the function; use the oldhtml argument to reference the previous content. Within the function, this refers to the current element in the set.</param>
1522 /// <returns type="jQuery" />
1523 /// </signature>
1524 },
1525 'id': function() {
1526 /// <signature>
1527 /// <summary>Selects a single element with the given id attribute.</summary>
1528 /// <param name="id" type="String">An ID to search for, specified via the id attribute of an element.</param>
1529 /// </signature>
1530 },
1531 'image': function() {
1532 /// <summary>Selects all elements of type image.</summary>
1533 },
1534 'index': function() {
1535 /// <signature>
1536 /// <summary>Search for a given element from among the matched elements.</summary>
1537 /// <param name="selector" type="String">A selector representing a jQuery collection in which to look for an element.</param>
1538 /// <returns type="Number" />
1539 /// </signature>
1540 /// <signature>
1541 /// <summary>Search for a given element from among the matched elements.</summary>
1542 /// <param name="element" type="">The DOM element or first element within the jQuery object to look for.</param>
1543 /// <returns type="Number" />
1544 /// </signature>
1545 },
1546 'init': function() {
1547 /// <signature>
1548 /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary>
1549 /// <param name="selector" type="String">A string containing a selector expression</param>
1550 /// <param name="context" type="">A DOM Element, Document, or jQuery to use as context</param>
1551 /// <returns type="jQuery" />
1552 /// </signature>
1553 /// <signature>
1554 /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary>
1555 /// <param name="element" type="Element">A DOM element to wrap in a jQuery object.</param>
1556 /// <returns type="jQuery" />
1557 /// </signature>
1558 /// <signature>
1559 /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary>
1560 /// <param name="elementArray" type="Array">An array containing a set of DOM elements to wrap in a jQuery object.</param>
1561 /// <returns type="jQuery" />
1562 /// </signature>
1563 /// <signature>
1564 /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary>
1565 /// <param name="object" type="PlainObject">A plain object to wrap in a jQuery object.</param>
1566 /// <returns type="jQuery" />
1567 /// </signature>
1568 /// <signature>
1569 /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary>
1570 /// <param name="jQuery object" type="PlainObject">An existing jQuery object to clone.</param>
1571 /// <returns type="jQuery" />
1572 /// </signature>
1573 },
1574 'innerHeight': function() {
1575 /// <summary>Get the current computed height for the first element in the set of matched elements, including padding but not border.</summary>
1576 /// <returns type="Number" />
1577 },
1578 'innerWidth': function() {
1579 /// <summary>Get the current computed width for the first element in the set of matched elements, including padding but not border.</summary>
1580 /// <returns type="Number" />
1581 },
1582 'input': function() {
1583 /// <summary>Selects all input, textarea, select and button elements.</summary>
1584 },
1585 'insertAfter': function() {
1586 /// <signature>
1587 /// <summary>Insert every element in the set of matched elements after the target.</summary>
1588 /// <param name="target" type="">A selector, element, HTML string, or jQuery object; the matched set of elements will be inserted after the element(s) specified by this parameter.</param>
1589 /// <returns type="jQuery" />
1590 /// </signature>
1591 },
1592 'insertBefore': function() {
1593 /// <signature>
1594 /// <summary>Insert every element in the set of matched elements before the target.</summary>
1595 /// <param name="target" type="">A selector, element, HTML string, or jQuery object; the matched set of elements will be inserted before the element(s) specified by this parameter.</param>
1596 /// <returns type="jQuery" />
1597 /// </signature>
1598 },
1599 'is': function() {
1600 /// <signature>
1601 /// <summary>Check the current matched set of elements against a selector, element, or jQuery object and return true if at least one of these elements matches the given arguments.</summary>
1602 /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
1603 /// <returns type="Boolean" />
1604 /// </signature>
1605 /// <signature>
1606 /// <summary>Check the current matched set of elements against a selector, element, or jQuery object and return true if at least one of these elements matches the given arguments.</summary>
1607 /// <param name="function(index)" type="Function">A function used as a test for the set of elements. It accepts one argument, index, which is the element's index in the jQuery collection.Within the function, this refers to the current DOM element.</param>
1608 /// <returns type="Boolean" />
1609 /// </signature>
1610 /// <signature>
1611 /// <summary>Check the current matched set of elements against a selector, element, or jQuery object and return true if at least one of these elements matches the given arguments.</summary>
1612 /// <param name="jQuery object" type="Object">An existing jQuery object to match the current set of elements against.</param>
1613 /// <returns type="Boolean" />
1614 /// </signature>
1615 /// <signature>
1616 /// <summary>Check the current matched set of elements against a selector, element, or jQuery object and return true if at least one of these elements matches the given arguments.</summary>
1617 /// <param name="element" type="Element">An element to match the current set of elements against.</param>
1618 /// <returns type="Boolean" />
1619 /// </signature>
1620 },
1621 'jquery': function() {
1622 /// <summary>A string containing the jQuery version number.</summary>
1623 /// <returns type="String" />
1624 },
1625 'keydown': function() {
1626 /// <signature>
1627 /// <summary>Bind an event handler to the "keydown" JavaScript event, or trigger that event on an element.</summary>
1628 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1629 /// <returns type="jQuery" />
1630 /// </signature>
1631 /// <signature>
1632 /// <summary>Bind an event handler to the "keydown" JavaScript event, or trigger that event on an element.</summary>
1633 /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
1634 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1635 /// <returns type="jQuery" />
1636 /// </signature>
1637 },
1638 'keypress': function() {
1639 /// <signature>
1640 /// <summary>Bind an event handler to the "keypress" JavaScript event, or trigger that event on an element.</summary>
1641 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1642 /// <returns type="jQuery" />
1643 /// </signature>
1644 /// <signature>
1645 /// <summary>Bind an event handler to the "keypress" JavaScript event, or trigger that event on an element.</summary>
1646 /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
1647 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1648 /// <returns type="jQuery" />
1649 /// </signature>
1650 },
1651 'keyup': function() {
1652 /// <signature>
1653 /// <summary>Bind an event handler to the "keyup" JavaScript event, or trigger that event on an element.</summary>
1654 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1655 /// <returns type="jQuery" />
1656 /// </signature>
1657 /// <signature>
1658 /// <summary>Bind an event handler to the "keyup" JavaScript event, or trigger that event on an element.</summary>
1659 /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
1660 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1661 /// <returns type="jQuery" />
1662 /// </signature>
1663 },
1664 'lang': function() {
1665 /// <signature>
1666 /// <summary>Selects all elements of the specified language.</summary>
1667 /// <param name="language" type="String">A language code.</param>
1668 /// </signature>
1669 },
1670 'last': function() {
1671 /// <summary>Selects the last matched element.</summary>
1672 },
1673 'last-child': function() {
1674 /// <summary>Selects all elements that are the last child of their parent.</summary>
1675 },
1676 'last-of-type': function() {
1677 /// <summary>Selects all elements that are the last among siblings of the same element name.</summary>
1678 },
1679 'length': function() {
1680 /// <summary>The number of elements in the jQuery object.</summary>
1681 /// <returns type="Number" />
1682 },
1683 'live': function() {
1684 /// <signature>
1685 /// <summary>Attach an event handler for all elements which match the current selector, now and in the future.</summary>
1686 /// <param name="events" type="String">A string containing a JavaScript event type, such as "click" or "keydown." As of jQuery 1.4 the string can contain multiple, space-separated event types or custom event names.</param>
1687 /// <param name="handler(eventObject)" type="Function">A function to execute at the time the event is triggered.</param>
1688 /// <returns type="jQuery" />
1689 /// </signature>
1690 /// <signature>
1691 /// <summary>Attach an event handler for all elements which match the current selector, now and in the future.</summary>
1692 /// <param name="events" type="String">A string containing a JavaScript event type, such as "click" or "keydown." As of jQuery 1.4 the string can contain multiple, space-separated event types or custom event names.</param>
1693 /// <param name="data" type="PlainObject">An object containing data that will be passed to the event handler.</param>
1694 /// <param name="handler(eventObject)" type="Function">A function to execute at the time the event is triggered.</param>
1695 /// <returns type="jQuery" />
1696 /// </signature>
1697 /// <signature>
1698 /// <summary>Attach an event handler for all elements which match the current selector, now and in the future.</summary>
1699 /// <param name="events" type="PlainObject">A plain object of one or more JavaScript event types and functions to execute for them.</param>
1700 /// <returns type="jQuery" />
1701 /// </signature>
1702 },
1703 'load': function() {
1704 /// <signature>
1705 /// <summary>Bind an event handler to the "load" JavaScript event.</summary>
1706 /// <param name="handler(eventObject)" type="Function">A function to execute when the event is triggered.</param>
1707 /// <returns type="jQuery" />
1708 /// </signature>
1709 /// <signature>
1710 /// <summary>Bind an event handler to the "load" JavaScript event.</summary>
1711 /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
1712 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1713 /// <returns type="jQuery" />
1714 /// </signature>
1715 },
1716 'lt': function() {
1717 /// <signature>
1718 /// <summary>Select all elements at an index less than index within the matched set.</summary>
1719 /// <param name="index" type="Number">Zero-based index.</param>
1720 /// </signature>
1721 /// <signature>
1722 /// <summary>Select all elements at an index less than index within the matched set.</summary>
1723 /// <param name="-index" type="Number">Zero-based index, counting backwards from the last element.</param>
1724 /// </signature>
1725 },
1726 'map': function() {
1727 /// <signature>
1728 /// <summary>Pass each element in the current matched set through a function, producing a new jQuery object containing the return values.</summary>
1729 /// <param name="callback(index, domElement)" type="Function">A function object that will be invoked for each element in the current set.</param>
1730 /// <returns type="jQuery" />
1731 /// </signature>
1732 },
1733 'mousedown': function() {
1734 /// <signature>
1735 /// <summary>Bind an event handler to the "mousedown" JavaScript event, or trigger that event on an element.</summary>
1736 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1737 /// <returns type="jQuery" />
1738 /// </signature>
1739 /// <signature>
1740 /// <summary>Bind an event handler to the "mousedown" JavaScript event, or trigger that event on an element.</summary>
1741 /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
1742 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1743 /// <returns type="jQuery" />
1744 /// </signature>
1745 },
1746 'mouseenter': function() {
1747 /// <signature>
1748 /// <summary>Bind an event handler to be fired when the mouse enters an element, or trigger that handler on an element.</summary>
1749 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1750 /// <returns type="jQuery" />
1751 /// </signature>
1752 /// <signature>
1753 /// <summary>Bind an event handler to be fired when the mouse enters an element, or trigger that handler on an element.</summary>
1754 /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
1755 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1756 /// <returns type="jQuery" />
1757 /// </signature>
1758 },
1759 'mouseleave': function() {
1760 /// <signature>
1761 /// <summary>Bind an event handler to be fired when the mouse leaves an element, or trigger that handler on an element.</summary>
1762 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1763 /// <returns type="jQuery" />
1764 /// </signature>
1765 /// <signature>
1766 /// <summary>Bind an event handler to be fired when the mouse leaves an element, or trigger that handler on an element.</summary>
1767 /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
1768 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1769 /// <returns type="jQuery" />
1770 /// </signature>
1771 },
1772 'mousemove': function() {
1773 /// <signature>
1774 /// <summary>Bind an event handler to the "mousemove" JavaScript event, or trigger that event on an element.</summary>
1775 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1776 /// <returns type="jQuery" />
1777 /// </signature>
1778 /// <signature>
1779 /// <summary>Bind an event handler to the "mousemove" JavaScript event, or trigger that event on an element.</summary>
1780 /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
1781 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1782 /// <returns type="jQuery" />
1783 /// </signature>
1784 },
1785 'mouseout': function() {
1786 /// <signature>
1787 /// <summary>Bind an event handler to the "mouseout" JavaScript event, or trigger that event on an element.</summary>
1788 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1789 /// <returns type="jQuery" />
1790 /// </signature>
1791 /// <signature>
1792 /// <summary>Bind an event handler to the "mouseout" JavaScript event, or trigger that event on an element.</summary>
1793 /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
1794 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1795 /// <returns type="jQuery" />
1796 /// </signature>
1797 },
1798 'mouseover': function() {
1799 /// <signature>
1800 /// <summary>Bind an event handler to the "mouseover" JavaScript event, or trigger that event on an element.</summary>
1801 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1802 /// <returns type="jQuery" />
1803 /// </signature>
1804 /// <signature>
1805 /// <summary>Bind an event handler to the "mouseover" JavaScript event, or trigger that event on an element.</summary>
1806 /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
1807 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1808 /// <returns type="jQuery" />
1809 /// </signature>
1810 },
1811 'mouseup': function() {
1812 /// <signature>
1813 /// <summary>Bind an event handler to the "mouseup" JavaScript event, or trigger that event on an element.</summary>
1814 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1815 /// <returns type="jQuery" />
1816 /// </signature>
1817 /// <signature>
1818 /// <summary>Bind an event handler to the "mouseup" JavaScript event, or trigger that event on an element.</summary>
1819 /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
1820 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1821 /// <returns type="jQuery" />
1822 /// </signature>
1823 },
1824 'multiple': function() {
1825 /// <signature>
1826 /// <summary>Selects the combined results of all the specified selectors.</summary>
1827 /// <param name="selector1" type="String">Any valid selector.</param>
1828 /// <param name="selector2" type="String">Another valid selector.</param>
1829 /// <param name="selectorN" type="String">As many more valid selectors as you like.</param>
1830 /// </signature>
1831 },
1832 'next': function() {
1833 /// <signature>
1834 /// <summary>Get the immediately following sibling of each element in the set of matched elements. If a selector is provided, it retrieves the next sibling only if it matches that selector.</summary>
1835 /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
1836 /// <returns type="jQuery" />
1837 /// </signature>
1838 },
1839 'next adjacent': function() {
1840 /// <signature>
1841 /// <summary>Selects all next elements matching "next" that are immediately preceded by a sibling "prev".</summary>
1842 /// <param name="prev" type="String">Any valid selector.</param>
1843 /// <param name="next" type="String">A selector to match the element that is next to the first selector.</param>
1844 /// </signature>
1845 },
1846 'next siblings': function() {
1847 /// <signature>
1848 /// <summary>Selects all sibling elements that follow after the "prev" element, have the same parent, and match the filtering "siblings" selector.</summary>
1849 /// <param name="prev" type="String">Any valid selector.</param>
1850 /// <param name="siblings" type="String">A selector to filter elements that are the following siblings of the first selector.</param>
1851 /// </signature>
1852 },
1853 'nextAll': function() {
1854 /// <signature>
1855 /// <summary>Get all following siblings of each element in the set of matched elements, optionally filtered by a selector.</summary>
1856 /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
1857 /// <returns type="jQuery" />
1858 /// </signature>
1859 },
1860 'nextUntil': function() {
1861 /// <signature>
1862 /// <summary>Get all following siblings of each element up to but not including the element matched by the selector, DOM node, or jQuery object passed.</summary>
1863 /// <param name="selector" type="String">A string containing a selector expression to indicate where to stop matching following sibling elements.</param>
1864 /// <param name="filter" type="String">A string containing a selector expression to match elements against.</param>
1865 /// <returns type="jQuery" />
1866 /// </signature>
1867 /// <signature>
1868 /// <summary>Get all following siblings of each element up to but not including the element matched by the selector, DOM node, or jQuery object passed.</summary>
1869 /// <param name="element" type="Element">A DOM node or jQuery object indicating where to stop matching following sibling elements.</param>
1870 /// <param name="filter" type="String">A string containing a selector expression to match elements against.</param>
1871 /// <returns type="jQuery" />
1872 /// </signature>
1873 },
1874 'not': function() {
1875 /// <signature>
1876 /// <summary>Remove elements from the set of matched elements.</summary>
1877 /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
1878 /// <returns type="jQuery" />
1879 /// </signature>
1880 /// <signature>
1881 /// <summary>Remove elements from the set of matched elements.</summary>
1882 /// <param name="elements" type="Array">One or more DOM elements to remove from the matched set.</param>
1883 /// <returns type="jQuery" />
1884 /// </signature>
1885 /// <signature>
1886 /// <summary>Remove elements from the set of matched elements.</summary>
1887 /// <param name="function(index)" type="Function">A function used as a test for each element in the set. this is the current DOM element.</param>
1888 /// <returns type="jQuery" />
1889 /// </signature>
1890 /// <signature>
1891 /// <summary>Remove elements from the set of matched elements.</summary>
1892 /// <param name="jQuery object" type="PlainObject">An existing jQuery object to match the current set of elements against.</param>
1893 /// <returns type="jQuery" />
1894 /// </signature>
1895 },
1896 'nth-child': function() {
1897 /// <signature>
1898 /// <summary>Selects all elements that are the nth-child of their parent.</summary>
1899 /// <param name="index" type="String">The index of each child to match, starting with 1, the string even or odd, or an equation ( eg. :nth-child(even), :nth-child(4n) )</param>
1900 /// </signature>
1901 },
1902 'nth-last-child': function() {
1903 /// <signature>
1904 /// <summary>Selects all elements that are the nth-child of their parent, counting from the last element to the first.</summary>
1905 /// <param name="index" type="String">The index of each child to match, starting with the last one (1), the string even or odd, or an equation ( eg. :nth-last-child(even), :nth-last-child(4n) )</param>
1906 /// </signature>
1907 },
1908 'nth-last-of-type': function() {
1909 /// <signature>
1910 /// <summary>Selects all elements that are the nth-child of their parent, counting from the last element to the first.</summary>
1911 /// <param name="index" type="String">The index of each child to match, starting with the last one (1), the string even or odd, or an equation ( eg. :nth-last-of-type(even), :nth-last-of-type(4n) )</param>
1912 /// </signature>
1913 },
1914 'nth-of-type': function() {
1915 /// <signature>
1916 /// <summary>Selects all elements that are the nth child of their parent in relation to siblings with the same element name.</summary>
1917 /// <param name="index" type="String">The index of each child to match, starting with 1, the string even or odd, or an equation ( eg. :nth-of-type(even), :nth-of-type(4n) )</param>
1918 /// </signature>
1919 },
1920 'odd': function() {
1921 /// <summary>Selects odd elements, zero-indexed. See also even.</summary>
1922 },
1923 'off': function() {
1924 /// <signature>
1925 /// <summary>Remove an event handler.</summary>
1926 /// <param name="events" type="String">One or more space-separated event types and optional namespaces, or just namespaces, such as "click", "keydown.myPlugin", or ".myPlugin".</param>
1927 /// <param name="selector" type="String">A selector which should match the one originally passed to .on() when attaching event handlers.</param>
1928 /// <param name="handler(eventObject)" type="Function">A handler function previously attached for the event(s), or the special value false.</param>
1929 /// <returns type="jQuery" />
1930 /// </signature>
1931 /// <signature>
1932 /// <summary>Remove an event handler.</summary>
1933 /// <param name="events" type="PlainObject">An object where the string keys represent one or more space-separated event types and optional namespaces, and the values represent handler functions previously attached for the event(s).</param>
1934 /// <param name="selector" type="String">A selector which should match the one originally passed to .on() when attaching event handlers.</param>
1935 /// <returns type="jQuery" />
1936 /// </signature>
1937 },
1938 'offset': function() {
1939 /// <signature>
1940 /// <summary>Set the current coordinates of every element in the set of matched elements, relative to the document.</summary>
1941 /// <param name="coordinates" type="PlainObject">An object containing the properties top and left, which are integers indicating the new top and left coordinates for the elements.</param>
1942 /// <returns type="jQuery" />
1943 /// </signature>
1944 /// <signature>
1945 /// <summary>Set the current coordinates of every element in the set of matched elements, relative to the document.</summary>
1946 /// <param name="function(index, coords)" type="Function">A function to return the coordinates to set. Receives the index of the element in the collection as the first argument and the current coordinates as the second argument. The function should return an object with the new top and left properties.</param>
1947 /// <returns type="jQuery" />
1948 /// </signature>
1949 },
1950 'offsetParent': function() {
1951 /// <summary>Get the closest ancestor element that is positioned.</summary>
1952 /// <returns type="jQuery" />
1953 },
1954 'on': function() {
1955 /// <signature>
1956 /// <summary>Attach an event handler function for one or more events to the selected elements.</summary>
1957 /// <param name="events" type="String">One or more space-separated event types and optional namespaces, such as "click" or "keydown.myPlugin".</param>
1958 /// <param name="selector" type="String">A selector string to filter the descendants of the selected elements that trigger the event. If the selector is null or omitted, the event is always triggered when it reaches the selected element.</param>
1959 /// <param name="data" type="Anything">Data to be passed to the handler in event.data when an event is triggered.</param>
1960 /// <param name="handler(eventObject)" type="Function">A function to execute when the event is triggered. The value false is also allowed as a shorthand for a function that simply does return false.</param>
1961 /// <returns type="jQuery" />
1962 /// </signature>
1963 /// <signature>
1964 /// <summary>Attach an event handler function for one or more events to the selected elements.</summary>
1965 /// <param name="events" type="PlainObject">An object in which the string keys represent one or more space-separated event types and optional namespaces, and the values represent a handler function to be called for the event(s).</param>
1966 /// <param name="selector" type="String">A selector string to filter the descendants of the selected elements that will call the handler. If the selector is null or omitted, the handler is always called when it reaches the selected element.</param>
1967 /// <param name="data" type="Anything">Data to be passed to the handler in event.data when an event occurs.</param>
1968 /// <returns type="jQuery" />
1969 /// </signature>
1970 },
1971 'one': function() {
1972 /// <signature>
1973 /// <summary>Attach a handler to an event for the elements. The handler is executed at most once per element.</summary>
1974 /// <param name="events" type="String">A string containing one or more JavaScript event types, such as "click" or "submit," or custom event names.</param>
1975 /// <param name="data" type="PlainObject">An object containing data that will be passed to the event handler.</param>
1976 /// <param name="handler(eventObject)" type="Function">A function to execute at the time the event is triggered.</param>
1977 /// <returns type="jQuery" />
1978 /// </signature>
1979 /// <signature>
1980 /// <summary>Attach a handler to an event for the elements. The handler is executed at most once per element.</summary>
1981 /// <param name="events" type="String">One or more space-separated event types and optional namespaces, such as "click" or "keydown.myPlugin".</param>
1982 /// <param name="selector" type="String">A selector string to filter the descendants of the selected elements that trigger the event. If the selector is null or omitted, the event is always triggered when it reaches the selected element.</param>
1983 /// <param name="data" type="Anything">Data to be passed to the handler in event.data when an event is triggered.</param>
1984 /// <param name="handler(eventObject)" type="Function">A function to execute when the event is triggered. The value false is also allowed as a shorthand for a function that simply does return false.</param>
1985 /// <returns type="jQuery" />
1986 /// </signature>
1987 /// <signature>
1988 /// <summary>Attach a handler to an event for the elements. The handler is executed at most once per element.</summary>
1989 /// <param name="events" type="PlainObject">An object in which the string keys represent one or more space-separated event types and optional namespaces, and the values represent a handler function to be called for the event(s).</param>
1990 /// <param name="selector" type="String">A selector string to filter the descendants of the selected elements that will call the handler. If the selector is null or omitted, the handler is always called when it reaches the selected element.</param>
1991 /// <param name="data" type="Anything">Data to be passed to the handler in event.data when an event occurs.</param>
1992 /// <returns type="jQuery" />
1993 /// </signature>
1994 },
1995 'only-child': function() {
1996 /// <summary>Selects all elements that are the only child of their parent.</summary>
1997 },
1998 'only-of-type': function() {
1999 /// <summary>Selects all elements that have no siblings with the same element name.</summary>
2000 },
2001 'outerHeight': function() {
2002 /// <signature>
2003 /// <summary>Get the current computed height for the first element in the set of matched elements, including padding, border, and optionally margin. Returns an integer (without "px") representation of the value or null if called on an empty set of elements.</summary>
2004 /// <param name="includeMargin" type="Boolean">A Boolean indicating whether to include the element's margin in the calculation.</param>
2005 /// <returns type="Number" />
2006 /// </signature>
2007 },
2008 'outerWidth': function() {
2009 /// <signature>
2010 /// <summary>Get the current computed width for the first element in the set of matched elements, including padding and border.</summary>
2011 /// <param name="includeMargin" type="Boolean">A Boolean indicating whether to include the element's margin in the calculation.</param>
2012 /// <returns type="Number" />
2013 /// </signature>
2014 },
2015 'parent': function() {
2016 /// <signature>
2017 /// <summary>Get the parent of each element in the current set of matched elements, optionally filtered by a selector.</summary>
2018 /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
2019 /// <returns type="jQuery" />
2020 /// </signature>
2021 },
2022 'parents': function() {
2023 /// <signature>
2024 /// <summary>Get the ancestors of each element in the current set of matched elements, optionally filtered by a selector.</summary>
2025 /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
2026 /// <returns type="jQuery" />
2027 /// </signature>
2028 },
2029 'parentsUntil': function() {
2030 /// <signature>
2031 /// <summary>Get the ancestors of each element in the current set of matched elements, up to but not including the element matched by the selector, DOM node, or jQuery object.</summary>
2032 /// <param name="selector" type="String">A string containing a selector expression to indicate where to stop matching ancestor elements.</param>
2033 /// <param name="filter" type="String">A string containing a selector expression to match elements against.</param>
2034 /// <returns type="jQuery" />
2035 /// </signature>
2036 /// <signature>
2037 /// <summary>Get the ancestors of each element in the current set of matched elements, up to but not including the element matched by the selector, DOM node, or jQuery object.</summary>
2038 /// <param name="element" type="Element">A DOM node or jQuery object indicating where to stop matching ancestor elements.</param>
2039 /// <param name="filter" type="String">A string containing a selector expression to match elements against.</param>
2040 /// <returns type="jQuery" />
2041 /// </signature>
2042 },
2043 'password': function() {
2044 /// <summary>Selects all elements of type password.</summary>
2045 },
2046 'position': function() {
2047 /// <summary>Get the current coordinates of the first element in the set of matched elements, relative to the offset parent.</summary>
2048 /// <returns type="Object" />
2049 },
2050 'prepend': function() {
2051 /// <signature>
2052 /// <summary>Insert content, specified by the parameter, to the beginning of each element in the set of matched elements.</summary>
2053 /// <param name="content" type="">DOM element, array of elements, HTML string, or jQuery object to insert at the beginning of each element in the set of matched elements.</param>
2054 /// <param name="content" type="">One or more additional DOM elements, arrays of elements, HTML strings, or jQuery objects to insert at the beginning of each element in the set of matched elements.</param>
2055 /// <returns type="jQuery" />
2056 /// </signature>
2057 /// <signature>
2058 /// <summary>Insert content, specified by the parameter, to the beginning of each element in the set of matched elements.</summary>
2059 /// <param name="function(index, html)" type="Function">A function that returns an HTML string, DOM element(s), or jQuery object to insert at the beginning of each element in the set of matched elements. Receives the index position of the element in the set and the old HTML value of the element as arguments. Within the function, this refers to the current element in the set.</param>
2060 /// <returns type="jQuery" />
2061 /// </signature>
2062 },
2063 'prependTo': function() {
2064 /// <signature>
2065 /// <summary>Insert every element in the set of matched elements to the beginning of the target.</summary>
2066 /// <param name="target" type="">A selector, element, HTML string, or jQuery object; the matched set of elements will be inserted at the beginning of the element(s) specified by this parameter.</param>
2067 /// <returns type="jQuery" />
2068 /// </signature>
2069 },
2070 'prev': function() {
2071 /// <signature>
2072 /// <summary>Get the immediately preceding sibling of each element in the set of matched elements, optionally filtered by a selector.</summary>
2073 /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
2074 /// <returns type="jQuery" />
2075 /// </signature>
2076 },
2077 'prevAll': function() {
2078 /// <signature>
2079 /// <summary>Get all preceding siblings of each element in the set of matched elements, optionally filtered by a selector.</summary>
2080 /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
2081 /// <returns type="jQuery" />
2082 /// </signature>
2083 },
2084 'prevUntil': function() {
2085 /// <signature>
2086 /// <summary>Get all preceding siblings of each element up to but not including the element matched by the selector, DOM node, or jQuery object.</summary>
2087 /// <param name="selector" type="String">A string containing a selector expression to indicate where to stop matching preceding sibling elements.</param>
2088 /// <param name="filter" type="String">A string containing a selector expression to match elements against.</param>
2089 /// <returns type="jQuery" />
2090 /// </signature>
2091 /// <signature>
2092 /// <summary>Get all preceding siblings of each element up to but not including the element matched by the selector, DOM node, or jQuery object.</summary>
2093 /// <param name="element" type="Element">A DOM node or jQuery object indicating where to stop matching preceding sibling elements.</param>
2094 /// <param name="filter" type="String">A string containing a selector expression to match elements against.</param>
2095 /// <returns type="jQuery" />
2096 /// </signature>
2097 },
2098 'promise': function() {
2099 /// <signature>
2100 /// <summary>Return a Promise object to observe when all actions of a certain type bound to the collection, queued or not, have finished.</summary>
2101 /// <param name="type" type="String">The type of queue that needs to be observed.</param>
2102 /// <param name="target" type="PlainObject">Object onto which the promise methods have to be attached</param>
2103 /// <returns type="Promise" />
2104 /// </signature>
2105 },
2106 'prop': function() {
2107 /// <signature>
2108 /// <summary>Set one or more properties for the set of matched elements.</summary>
2109 /// <param name="propertyName" type="String">The name of the property to set.</param>
2110 /// <param name="value" type="">A value to set for the property.</param>
2111 /// <returns type="jQuery" />
2112 /// </signature>
2113 /// <signature>
2114 /// <summary>Set one or more properties for the set of matched elements.</summary>
2115 /// <param name="properties" type="PlainObject">An object of property-value pairs to set.</param>
2116 /// <returns type="jQuery" />
2117 /// </signature>
2118 /// <signature>
2119 /// <summary>Set one or more properties for the set of matched elements.</summary>
2120 /// <param name="propertyName" type="String">The name of the property to set.</param>
2121 /// <param name="function(index, oldPropertyValue)" type="Function">A function returning the value to set. Receives the index position of the element in the set and the old property value as arguments. Within the function, the keyword this refers to the current element.</param>
2122 /// <returns type="jQuery" />
2123 /// </signature>
2124 },
2125 'pushStack': function() {
2126 /// <signature>
2127 /// <summary>Add a collection of DOM elements onto the jQuery stack.</summary>
2128 /// <param name="elements" type="Array">An array of elements to push onto the stack and make into a new jQuery object.</param>
2129 /// <returns type="jQuery" />
2130 /// </signature>
2131 /// <signature>
2132 /// <summary>Add a collection of DOM elements onto the jQuery stack.</summary>
2133 /// <param name="elements" type="Array">An array of elements to push onto the stack and make into a new jQuery object.</param>
2134 /// <param name="name" type="String">The name of a jQuery method that generated the array of elements.</param>
2135 /// <param name="arguments" type="Array">The arguments that were passed in to the jQuery method (for serialization).</param>
2136 /// <returns type="jQuery" />
2137 /// </signature>
2138 },
2139 'queue': function() {
2140 /// <signature>
2141 /// <summary>Manipulate the queue of functions to be executed, once for each matched element.</summary>
2142 /// <param name="queueName" type="String">A string containing the name of the queue. Defaults to fx, the standard effects queue.</param>
2143 /// <param name="newQueue" type="Array">An array of functions to replace the current queue contents.</param>
2144 /// <returns type="jQuery" />
2145 /// </signature>
2146 /// <signature>
2147 /// <summary>Manipulate the queue of functions to be executed, once for each matched element.</summary>
2148 /// <param name="queueName" type="String">A string containing the name of the queue. Defaults to fx, the standard effects queue.</param>
2149 /// <param name="callback( next )" type="Function">The new function to add to the queue, with a function to call that will dequeue the next item.</param>
2150 /// <returns type="jQuery" />
2151 /// </signature>
2152 },
2153 'radio': function() {
2154 /// <summary>Selects all elements of type radio.</summary>
2155 },
2156 'ready': function() {
2157 /// <signature>
2158 /// <summary>Specify a function to execute when the DOM is fully loaded.</summary>
2159 /// <param name="handler" type="Function">A function to execute after the DOM is ready.</param>
2160 /// <returns type="jQuery" />
2161 /// </signature>
2162 },
2163 'remove': function() {
2164 /// <signature>
2165 /// <summary>Remove the set of matched elements from the DOM.</summary>
2166 /// <param name="selector" type="String">A selector expression that filters the set of matched elements to be removed.</param>
2167 /// <returns type="jQuery" />
2168 /// </signature>
2169 },
2170 'removeAttr': function() {
2171 /// <signature>
2172 /// <summary>Remove an attribute from each element in the set of matched elements.</summary>
2173 /// <param name="attributeName" type="String">An attribute to remove; as of version 1.7, it can be a space-separated list of attributes.</param>
2174 /// <returns type="jQuery" />
2175 /// </signature>
2176 },
2177 'removeClass': function() {
2178 /// <signature>
2179 /// <summary>Remove a single class, multiple classes, or all classes from each element in the set of matched elements.</summary>
2180 /// <param name="className" type="String">One or more space-separated classes to be removed from the class attribute of each matched element.</param>
2181 /// <returns type="jQuery" />
2182 /// </signature>
2183 /// <signature>
2184 /// <summary>Remove a single class, multiple classes, or all classes from each element in the set of matched elements.</summary>
2185 /// <param name="function(index, class)" type="Function">A function returning one or more space-separated class names to be removed. Receives the index position of the element in the set and the old class value as arguments.</param>
2186 /// <returns type="jQuery" />
2187 /// </signature>
2188 },
2189 'removeData': function() {
2190 /// <signature>
2191 /// <summary>Remove a previously-stored piece of data.</summary>
2192 /// <param name="name" type="String">A string naming the piece of data to delete.</param>
2193 /// <returns type="jQuery" />
2194 /// </signature>
2195 /// <signature>
2196 /// <summary>Remove a previously-stored piece of data.</summary>
2197 /// <param name="list" type="">An array or space-separated string naming the pieces of data to delete.</param>
2198 /// <returns type="jQuery" />
2199 /// </signature>
2200 },
2201 'removeProp': function() {
2202 /// <signature>
2203 /// <summary>Remove a property for the set of matched elements.</summary>
2204 /// <param name="propertyName" type="String">The name of the property to remove.</param>
2205 /// <returns type="jQuery" />
2206 /// </signature>
2207 },
2208 'replaceAll': function() {
2209 /// <signature>
2210 /// <summary>Replace each target element with the set of matched elements.</summary>
2211 /// <param name="target" type="">A selector string, jQuery object, or DOM element reference indicating which element(s) to replace.</param>
2212 /// <returns type="jQuery" />
2213 /// </signature>
2214 },
2215 'replaceWith': function() {
2216 /// <signature>
2217 /// <summary>Replace each element in the set of matched elements with the provided new content and return the set of elements that was removed.</summary>
2218 /// <param name="newContent" type="">The content to insert. May be an HTML string, DOM element, or jQuery object.</param>
2219 /// <returns type="jQuery" />
2220 /// </signature>
2221 /// <signature>
2222 /// <summary>Replace each element in the set of matched elements with the provided new content and return the set of elements that was removed.</summary>
2223 /// <param name="function" type="Function">A function that returns content with which to replace the set of matched elements.</param>
2224 /// <returns type="jQuery" />
2225 /// </signature>
2226 },
2227 'reset': function() {
2228 /// <summary>Selects all elements of type reset.</summary>
2229 },
2230 'resize': function() {
2231 /// <signature>
2232 /// <summary>Bind an event handler to the "resize" JavaScript event, or trigger that event on an element.</summary>
2233 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
2234 /// <returns type="jQuery" />
2235 /// </signature>
2236 /// <signature>
2237 /// <summary>Bind an event handler to the "resize" JavaScript event, or trigger that event on an element.</summary>
2238 /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
2239 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
2240 /// <returns type="jQuery" />
2241 /// </signature>
2242 },
2243 'root': function() {
2244 /// <summary>Selects the element that is the root of the document.</summary>
2245 },
2246 'scroll': function() {
2247 /// <signature>
2248 /// <summary>Bind an event handler to the "scroll" JavaScript event, or trigger that event on an element.</summary>
2249 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
2250 /// <returns type="jQuery" />
2251 /// </signature>
2252 /// <signature>
2253 /// <summary>Bind an event handler to the "scroll" JavaScript event, or trigger that event on an element.</summary>
2254 /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
2255 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
2256 /// <returns type="jQuery" />
2257 /// </signature>
2258 },
2259 'scrollLeft': function() {
2260 /// <signature>
2261 /// <summary>Set the current horizontal position of the scroll bar for each of the set of matched elements.</summary>
2262 /// <param name="value" type="Number">An integer indicating the new position to set the scroll bar to.</param>
2263 /// <returns type="jQuery" />
2264 /// </signature>
2265 },
2266 'scrollTop': function() {
2267 /// <signature>
2268 /// <summary>Set the current vertical position of the scroll bar for each of the set of matched elements.</summary>
2269 /// <param name="value" type="Number">An integer indicating the new position to set the scroll bar to.</param>
2270 /// <returns type="jQuery" />
2271 /// </signature>
2272 },
2273 'select': function() {
2274 /// <signature>
2275 /// <summary>Bind an event handler to the "select" JavaScript event, or trigger that event on an element.</summary>
2276 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
2277 /// <returns type="jQuery" />
2278 /// </signature>
2279 /// <signature>
2280 /// <summary>Bind an event handler to the "select" JavaScript event, or trigger that event on an element.</summary>
2281 /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
2282 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
2283 /// <returns type="jQuery" />
2284 /// </signature>
2285 },
2286 'selected': function() {
2287 /// <summary>Selects all elements that are selected.</summary>
2288 },
2289 'selector': function() {
2290 /// <summary>A selector representing selector passed to jQuery(), if any, when creating the original set.</summary>
2291 /// <returns type="String" />
2292 },
2293 'serialize': function() {
2294 /// <summary>Encode a set of form elements as a string for submission.</summary>
2295 /// <returns type="String" />
2296 },
2297 'serializeArray': function() {
2298 /// <summary>Encode a set of form elements as an array of names and values.</summary>
2299 /// <returns type="Array" />
2300 },
2301 'show': function() {
2302 /// <signature>
2303 /// <summary>Display the matched elements.</summary>
2304 /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
2305 /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
2306 /// <returns type="jQuery" />
2307 /// </signature>
2308 /// <signature>
2309 /// <summary>Display the matched elements.</summary>
2310 /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param>
2311 /// <returns type="jQuery" />
2312 /// </signature>
2313 /// <signature>
2314 /// <summary>Display the matched elements.</summary>
2315 /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
2316 /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param>
2317 /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
2318 /// <returns type="jQuery" />
2319 /// </signature>
2320 },
2321 'siblings': function() {
2322 /// <signature>
2323 /// <summary>Get the siblings of each element in the set of matched elements, optionally filtered by a selector.</summary>
2324 /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
2325 /// <returns type="jQuery" />
2326 /// </signature>
2327 },
2328 'size': function() {
2329 /// <summary>Return the number of elements in the jQuery object.</summary>
2330 /// <returns type="Number" />
2331 },
2332 'slice': function() {
2333 /// <signature>
2334 /// <summary>Reduce the set of matched elements to a subset specified by a range of indices.</summary>
2335 /// <param name="start" type="Number">An integer indicating the 0-based position at which the elements begin to be selected. If negative, it indicates an offset from the end of the set.</param>
2336 /// <param name="end" type="Number">An integer indicating the 0-based position at which the elements stop being selected. If negative, it indicates an offset from the end of the set. If omitted, the range continues until the end of the set.</param>
2337 /// <returns type="jQuery" />
2338 /// </signature>
2339 },
2340 'slideDown': function() {
2341 /// <signature>
2342 /// <summary>Display the matched elements with a sliding motion.</summary>
2343 /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
2344 /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
2345 /// <returns type="jQuery" />
2346 /// </signature>
2347 /// <signature>
2348 /// <summary>Display the matched elements with a sliding motion.</summary>
2349 /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param>
2350 /// <returns type="jQuery" />
2351 /// </signature>
2352 /// <signature>
2353 /// <summary>Display the matched elements with a sliding motion.</summary>
2354 /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
2355 /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param>
2356 /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
2357 /// <returns type="jQuery" />
2358 /// </signature>
2359 },
2360 'slideToggle': function() {
2361 /// <signature>
2362 /// <summary>Display or hide the matched elements with a sliding motion.</summary>
2363 /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
2364 /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
2365 /// <returns type="jQuery" />
2366 /// </signature>
2367 /// <signature>
2368 /// <summary>Display or hide the matched elements with a sliding motion.</summary>
2369 /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param>
2370 /// <returns type="jQuery" />
2371 /// </signature>
2372 /// <signature>
2373 /// <summary>Display or hide the matched elements with a sliding motion.</summary>
2374 /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
2375 /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param>
2376 /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
2377 /// <returns type="jQuery" />
2378 /// </signature>
2379 },
2380 'slideUp': function() {
2381 /// <signature>
2382 /// <summary>Hide the matched elements with a sliding motion.</summary>
2383 /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
2384 /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
2385 /// <returns type="jQuery" />
2386 /// </signature>
2387 /// <signature>
2388 /// <summary>Hide the matched elements with a sliding motion.</summary>
2389 /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param>
2390 /// <returns type="jQuery" />
2391 /// </signature>
2392 /// <signature>
2393 /// <summary>Hide the matched elements with a sliding motion.</summary>
2394 /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
2395 /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param>
2396 /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
2397 /// <returns type="jQuery" />
2398 /// </signature>
2399 },
2400 'stop': function() {
2401 /// <signature>
2402 /// <summary>Stop the currently-running animation on the matched elements.</summary>
2403 /// <param name="clearQueue" type="Boolean">A Boolean indicating whether to remove queued animation as well. Defaults to false.</param>
2404 /// <param name="jumpToEnd" type="Boolean">A Boolean indicating whether to complete the current animation immediately. Defaults to false.</param>
2405 /// <returns type="jQuery" />
2406 /// </signature>
2407 /// <signature>
2408 /// <summary>Stop the currently-running animation on the matched elements.</summary>
2409 /// <param name="queue" type="String">The name of the queue in which to stop animations.</param>
2410 /// <param name="clearQueue" type="Boolean">A Boolean indicating whether to remove queued animation as well. Defaults to false.</param>
2411 /// <param name="jumpToEnd" type="Boolean">A Boolean indicating whether to complete the current animation immediately. Defaults to false.</param>
2412 /// <returns type="jQuery" />
2413 /// </signature>
2414 },
2415 'submit': function() {
2416 /// <signature>
2417 /// <summary>Bind an event handler to the "submit" JavaScript event, or trigger that event on an element.</summary>
2418 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
2419 /// <returns type="jQuery" />
2420 /// </signature>
2421 /// <signature>
2422 /// <summary>Bind an event handler to the "submit" JavaScript event, or trigger that event on an element.</summary>
2423 /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
2424 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
2425 /// <returns type="jQuery" />
2426 /// </signature>
2427 },
2428 'target': function() {
2429 /// <summary>Selects the target element indicated by the fragment identifier of the document's URI.</summary>
2430 },
2431 'text': function() {
2432 /// <signature>
2433 /// <summary>Set the content of each element in the set of matched elements to the specified text.</summary>
2434 /// <param name="textString" type="String">A string of text to set as the content of each matched element.</param>
2435 /// <returns type="jQuery" />
2436 /// </signature>
2437 /// <signature>
2438 /// <summary>Set the content of each element in the set of matched elements to the specified text.</summary>
2439 /// <param name="function(index, text)" type="Function">A function returning the text content to set. Receives the index position of the element in the set and the old text value as arguments.</param>
2440 /// <returns type="jQuery" />
2441 /// </signature>
2442 },
2443 'toArray': function() {
2444 /// <summary>Retrieve all the DOM elements contained in the jQuery set, as an array.</summary>
2445 /// <returns type="Array" />
2446 },
2447 'toggle': function() {
2448 /// <signature>
2449 /// <summary>Display or hide the matched elements.</summary>
2450 /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
2451 /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
2452 /// <returns type="jQuery" />
2453 /// </signature>
2454 /// <signature>
2455 /// <summary>Display or hide the matched elements.</summary>
2456 /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param>
2457 /// <returns type="jQuery" />
2458 /// </signature>
2459 /// <signature>
2460 /// <summary>Display or hide the matched elements.</summary>
2461 /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
2462 /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param>
2463 /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
2464 /// <returns type="jQuery" />
2465 /// </signature>
2466 /// <signature>
2467 /// <summary>Display or hide the matched elements.</summary>
2468 /// <param name="showOrHide" type="Boolean">A Boolean indicating whether to show or hide the elements.</param>
2469 /// <returns type="jQuery" />
2470 /// </signature>
2471 },
2472 'toggleClass': function() {
2473 /// <signature>
2474 /// <summary>Add or remove one or more classes from each element in the set of matched elements, depending on either the class's presence or the value of the switch argument.</summary>
2475 /// <param name="className" type="String">One or more class names (separated by spaces) to be toggled for each element in the matched set.</param>
2476 /// <returns type="jQuery" />
2477 /// </signature>
2478 /// <signature>
2479 /// <summary>Add or remove one or more classes from each element in the set of matched elements, depending on either the class's presence or the value of the switch argument.</summary>
2480 /// <param name="className" type="String">One or more class names (separated by spaces) to be toggled for each element in the matched set.</param>
2481 /// <param name="switch" type="Boolean">A Boolean (not just truthy/falsy) value to determine whether the class should be added or removed.</param>
2482 /// <returns type="jQuery" />
2483 /// </signature>
2484 /// <signature>
2485 /// <summary>Add or remove one or more classes from each element in the set of matched elements, depending on either the class's presence or the value of the switch argument.</summary>
2486 /// <param name="switch" type="Boolean">A boolean value to determine whether the class should be added or removed.</param>
2487 /// <returns type="jQuery" />
2488 /// </signature>
2489 /// <signature>
2490 /// <summary>Add or remove one or more classes from each element in the set of matched elements, depending on either the class's presence or the value of the switch argument.</summary>
2491 /// <param name="function(index, class, switch)" type="Function">A function that returns class names to be toggled in the class attribute of each element in the matched set. Receives the index position of the element in the set, the old class value, and the switch as arguments.</param>
2492 /// <param name="switch" type="Boolean">A boolean value to determine whether the class should be added or removed.</param>
2493 /// <returns type="jQuery" />
2494 /// </signature>
2495 },
2496 'trigger': function() {
2497 /// <signature>
2498 /// <summary>Execute all handlers and behaviors attached to the matched elements for the given event type.</summary>
2499 /// <param name="eventType" type="String">A string containing a JavaScript event type, such as click or submit.</param>
2500 /// <param name="extraParameters" type="">Additional parameters to pass along to the event handler.</param>
2501 /// <returns type="jQuery" />
2502 /// </signature>
2503 /// <signature>
2504 /// <summary>Execute all handlers and behaviors attached to the matched elements for the given event type.</summary>
2505 /// <param name="event" type="Event">A jQuery.Event object.</param>
2506 /// <param name="extraParameters" type="">Additional parameters to pass along to the event handler.</param>
2507 /// <returns type="jQuery" />
2508 /// </signature>
2509 },
2510 'triggerHandler': function() {
2511 /// <signature>
2512 /// <summary>Execute all handlers attached to an element for an event.</summary>
2513 /// <param name="eventType" type="String">A string containing a JavaScript event type, such as click or submit.</param>
2514 /// <param name="extraParameters" type="Array">An array of additional parameters to pass along to the event handler.</param>
2515 /// <returns type="Object" />
2516 /// </signature>
2517 },
2518 'unbind': function() {
2519 /// <signature>
2520 /// <summary>Remove a previously-attached event handler from the elements.</summary>
2521 /// <param name="eventType" type="String">A string containing a JavaScript event type, such as click or submit.</param>
2522 /// <param name="handler(eventObject)" type="Function">The function that is to be no longer executed.</param>
2523 /// <returns type="jQuery" />
2524 /// </signature>
2525 /// <signature>
2526 /// <summary>Remove a previously-attached event handler from the elements.</summary>
2527 /// <param name="eventType" type="String">A string containing a JavaScript event type, such as click or submit.</param>
2528 /// <param name="false" type="Boolean">Unbinds the corresponding 'return false' function that was bound using .bind( eventType, false ).</param>
2529 /// <returns type="jQuery" />
2530 /// </signature>
2531 /// <signature>
2532 /// <summary>Remove a previously-attached event handler from the elements.</summary>
2533 /// <param name="event" type="Object">A JavaScript event object as passed to an event handler.</param>
2534 /// <returns type="jQuery" />
2535 /// </signature>
2536 },
2537 'undelegate': function() {
2538 /// <signature>
2539 /// <summary>Remove a handler from the event for all elements which match the current selector, based upon a specific set of root elements.</summary>
2540 /// <param name="selector" type="String">A selector which will be used to filter the event results.</param>
2541 /// <param name="eventType" type="String">A string containing a JavaScript event type, such as "click" or "keydown"</param>
2542 /// <returns type="jQuery" />
2543 /// </signature>
2544 /// <signature>
2545 /// <summary>Remove a handler from the event for all elements which match the current selector, based upon a specific set of root elements.</summary>
2546 /// <param name="selector" type="String">A selector which will be used to filter the event results.</param>
2547 /// <param name="eventType" type="String">A string containing a JavaScript event type, such as "click" or "keydown"</param>
2548 /// <param name="handler(eventObject)" type="Function">A function to execute at the time the event is triggered.</param>
2549 /// <returns type="jQuery" />
2550 /// </signature>
2551 /// <signature>
2552 /// <summary>Remove a handler from the event for all elements which match the current selector, based upon a specific set of root elements.</summary>
2553 /// <param name="selector" type="String">A selector which will be used to filter the event results.</param>
2554 /// <param name="events" type="PlainObject">An object of one or more event types and previously bound functions to unbind from them.</param>
2555 /// <returns type="jQuery" />
2556 /// </signature>
2557 /// <signature>
2558 /// <summary>Remove a handler from the event for all elements which match the current selector, based upon a specific set of root elements.</summary>
2559 /// <param name="namespace" type="String">A string containing a namespace to unbind all events from.</param>
2560 /// <returns type="jQuery" />
2561 /// </signature>
2562 },
2563 'unload': function() {
2564 /// <signature>
2565 /// <summary>Bind an event handler to the "unload" JavaScript event.</summary>
2566 /// <param name="handler(eventObject)" type="Function">A function to execute when the event is triggered.</param>
2567 /// <returns type="jQuery" />
2568 /// </signature>
2569 /// <signature>
2570 /// <summary>Bind an event handler to the "unload" JavaScript event.</summary>
2571 /// <param name="eventData" type="Object">A plain object of data that will be passed to the event handler.</param>
2572 /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
2573 /// <returns type="jQuery" />
2574 /// </signature>
2575 },
2576 'unwrap': function() {
2577 /// <summary>Remove the parents of the set of matched elements from the DOM, leaving the matched elements in their place.</summary>
2578 /// <returns type="jQuery" />
2579 },
2580 'val': function() {
2581 /// <signature>
2582 /// <summary>Set the value of each element in the set of matched elements.</summary>
2583 /// <param name="value" type="">A string of text or an array of strings corresponding to the value of each matched element to set as selected/checked.</param>
2584 /// <returns type="jQuery" />
2585 /// </signature>
2586 /// <signature>
2587 /// <summary>Set the value of each element in the set of matched elements.</summary>
2588 /// <param name="function(index, value)" type="Function">A function returning the value to set. this is the current element. Receives the index position of the element in the set and the old value as arguments.</param>
2589 /// <returns type="jQuery" />
2590 /// </signature>
2591 },
2592 'visible': function() {
2593 /// <summary>Selects all elements that are visible.</summary>
2594 },
2595 'width': function() {
2596 /// <signature>
2597 /// <summary>Set the CSS width of each element in the set of matched elements.</summary>
2598 /// <param name="value" type="">An integer representing the number of pixels, or an integer along with an optional unit of measure appended (as a string).</param>
2599 /// <returns type="jQuery" />
2600 /// </signature>
2601 /// <signature>
2602 /// <summary>Set the CSS width of each element in the set of matched elements.</summary>
2603 /// <param name="function(index, width)" type="Function">A function returning the width to set. Receives the index position of the element in the set and the old width as arguments. Within the function, this refers to the current element in the set.</param>
2604 /// <returns type="jQuery" />
2605 /// </signature>
2606 },
2607 'wrap': function() {
2608 /// <signature>
2609 /// <summary>Wrap an HTML structure around each element in the set of matched elements.</summary>
2610 /// <param name="wrappingElement" type="">A selector, element, HTML string, or jQuery object specifying the structure to wrap around the matched elements.</param>
2611 /// <returns type="jQuery" />
2612 /// </signature>
2613 /// <signature>
2614 /// <summary>Wrap an HTML structure around each element in the set of matched elements.</summary>
2615 /// <param name="function(index)" type="Function">A callback function returning the HTML content or jQuery object to wrap around the matched elements. Receives the index position of the element in the set as an argument. Within the function, this refers to the current element in the set.</param>
2616 /// <returns type="jQuery" />
2617 /// </signature>
2618 },
2619 'wrapAll': function() {
2620 /// <signature>
2621 /// <summary>Wrap an HTML structure around all elements in the set of matched elements.</summary>
2622 /// <param name="wrappingElement" type="">A selector, element, HTML string, or jQuery object specifying the structure to wrap around the matched elements.</param>
2623 /// <returns type="jQuery" />
2624 /// </signature>
2625 },
2626 'wrapInner': function() {
2627 /// <signature>
2628 /// <summary>Wrap an HTML structure around the content of each element in the set of matched elements.</summary>
2629 /// <param name="wrappingElement" type="String">An HTML snippet, selector expression, jQuery object, or DOM element specifying the structure to wrap around the content of the matched elements.</param>
2630 /// <returns type="jQuery" />
2631 /// </signature>
2632 /// <signature>
2633 /// <summary>Wrap an HTML structure around the content of each element in the set of matched elements.</summary>
2634 /// <param name="function(index)" type="Function">A callback function which generates a structure to wrap around the content of the matched elements. Receives the index position of the element in the set as an argument. Within the function, this refers to the current element in the set.</param>
2635 /// <returns type="jQuery" />
2636 /// </signature>
2637 },
2638});
2639
2640intellisense.annotate(window, {
2641 '$': function() {
2642 /// <signature>
2643 /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary>
2644 /// <param name="selector" type="String">A string containing a selector expression</param>
2645 /// <param name="context" type="">A DOM Element, Document, or jQuery to use as context</param>
2646 /// <returns type="jQuery" />
2647 /// </signature>
2648 /// <signature>
2649 /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary>
2650 /// <param name="element" type="Element">A DOM element to wrap in a jQuery object.</param>
2651 /// <returns type="jQuery" />
2652 /// </signature>
2653 /// <signature>
2654 /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary>
2655 /// <param name="elementArray" type="Array">An array containing a set of DOM elements to wrap in a jQuery object.</param>
2656 /// <returns type="jQuery" />
2657 /// </signature>
2658 /// <signature>
2659 /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary>
2660 /// <param name="object" type="PlainObject">A plain object to wrap in a jQuery object.</param>
2661 /// <returns type="jQuery" />
2662 /// </signature>
2663 /// <signature>
2664 /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary>
2665 /// <param name="jQuery object" type="PlainObject">An existing jQuery object to clone.</param>
2666 /// <returns type="jQuery" />
2667 /// </signature>
2668 },
2669});
2670
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery-3.4.1.js b/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery-3.4.1.js
new file mode 100644
index 00000000..773ad95c
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery-3.4.1.js
@@ -0,0 +1,10598 @@
1/*!
2 * jQuery JavaScript Library v3.4.1
3 * https://jquery.com/
4 *
5 * Includes Sizzle.js
6 * https://sizzlejs.com/
7 *
8 * Copyright JS Foundation and other contributors
9 * Released under the MIT license
10 * https://jquery.org/license
11 *
12 * Date: 2019-05-01T21:04Z
13 */
14( function( global, factory ) {
15
16 "use strict";
17
18 if ( typeof module === "object" && typeof module.exports === "object" ) {
19
20 // For CommonJS and CommonJS-like environments where a proper `window`
21 // is present, execute the factory and get jQuery.
22 // For environments that do not have a `window` with a `document`
23 // (such as Node.js), expose a factory as module.exports.
24 // This accentuates the need for the creation of a real `window`.
25 // e.g. var jQuery = require("jquery")(window);
26 // See ticket #14549 for more info.
27 module.exports = global.document ?
28 factory( global, true ) :
29 function( w ) {
30 if ( !w.document ) {
31 throw new Error( "jQuery requires a window with a document" );
32 }
33 return factory( w );
34 };
35 } else {
36 factory( global );
37 }
38
39// Pass this if window is not defined yet
40} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
41
42// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
43// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
44// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
45// enough that all such attempts are guarded in a try block.
46"use strict";
47
48var arr = [];
49
50var document = window.document;
51
52var getProto = Object.getPrototypeOf;
53
54var slice = arr.slice;
55
56var concat = arr.concat;
57
58var push = arr.push;
59
60var indexOf = arr.indexOf;
61
62var class2type = {};
63
64var toString = class2type.toString;
65
66var hasOwn = class2type.hasOwnProperty;
67
68var fnToString = hasOwn.toString;
69
70var ObjectFunctionString = fnToString.call( Object );
71
72var support = {};
73
74var isFunction = function isFunction( obj ) {
75
76 // Support: Chrome <=57, Firefox <=52
77 // In some browsers, typeof returns "function" for HTML <object> elements
78 // (i.e., `typeof document.createElement( "object" ) === "function"`).
79 // We don't want to classify *any* DOM node as a function.
80 return typeof obj === "function" && typeof obj.nodeType !== "number";
81 };
82
83
84var isWindow = function isWindow( obj ) {
85 return obj != null && obj === obj.window;
86 };
87
88
89
90
91 var preservedScriptAttributes = {
92 type: true,
93 src: true,
94 nonce: true,
95 noModule: true
96 };
97
98 function DOMEval( code, node, doc ) {
99 doc = doc || document;
100
101 var i, val,
102 script = doc.createElement( "script" );
103
104 script.text = code;
105 if ( node ) {
106 for ( i in preservedScriptAttributes ) {
107
108 // Support: Firefox 64+, Edge 18+
109 // Some browsers don't support the "nonce" property on scripts.
110 // On the other hand, just using `getAttribute` is not enough as
111 // the `nonce` attribute is reset to an empty string whenever it
112 // becomes browsing-context connected.
113 // See https://github.com/whatwg/html/issues/2369
114 // See https://html.spec.whatwg.org/#nonce-attributes
115 // The `node.getAttribute` check was added for the sake of
116 // `jQuery.globalEval` so that it can fake a nonce-containing node
117 // via an object.
118 val = node[ i ] || node.getAttribute && node.getAttribute( i );
119 if ( val ) {
120 script.setAttribute( i, val );
121 }
122 }
123 }
124 doc.head.appendChild( script ).parentNode.removeChild( script );
125 }
126
127
128function toType( obj ) {
129 if ( obj == null ) {
130 return obj + "";
131 }
132
133 // Support: Android <=2.3 only (functionish RegExp)
134 return typeof obj === "object" || typeof obj === "function" ?
135 class2type[ toString.call( obj ) ] || "object" :
136 typeof obj;
137}
138/* global Symbol */
139// Defining this global in .eslintrc.json would create a danger of using the global
140// unguarded in another place, it seems safer to define global only for this module
141
142
143
144var
145 version = "3.4.1",
146
147 // Define a local copy of jQuery
148 jQuery = function( selector, context ) {
149
150 // The jQuery object is actually just the init constructor 'enhanced'
151 // Need init if jQuery is called (just allow error to be thrown if not included)
152 return new jQuery.fn.init( selector, context );
153 },
154
155 // Support: Android <=4.0 only
156 // Make sure we trim BOM and NBSP
157 rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
158
159jQuery.fn = jQuery.prototype = {
160
161 // The current version of jQuery being used
162 jquery: version,
163
164 constructor: jQuery,
165
166 // The default length of a jQuery object is 0
167 length: 0,
168
169 toArray: function() {
170 return slice.call( this );
171 },
172
173 // Get the Nth element in the matched element set OR
174 // Get the whole matched element set as a clean array
175 get: function( num ) {
176
177 // Return all the elements in a clean array
178 if ( num == null ) {
179 return slice.call( this );
180 }
181
182 // Return just the one element from the set
183 return num < 0 ? this[ num + this.length ] : this[ num ];
184 },
185
186 // Take an array of elements and push it onto the stack
187 // (returning the new matched element set)
188 pushStack: function( elems ) {
189
190 // Build a new jQuery matched element set
191 var ret = jQuery.merge( this.constructor(), elems );
192
193 // Add the old object onto the stack (as a reference)
194 ret.prevObject = this;
195
196 // Return the newly-formed element set
197 return ret;
198 },
199
200 // Execute a callback for every element in the matched set.
201 each: function( callback ) {
202 return jQuery.each( this, callback );
203 },
204
205 map: function( callback ) {
206 return this.pushStack( jQuery.map( this, function( elem, i ) {
207 return callback.call( elem, i, elem );
208 } ) );
209 },
210
211 slice: function() {
212 return this.pushStack( slice.apply( this, arguments ) );
213 },
214
215 first: function() {
216 return this.eq( 0 );
217 },
218
219 last: function() {
220 return this.eq( -1 );
221 },
222
223 eq: function( i ) {
224 var len = this.length,
225 j = +i + ( i < 0 ? len : 0 );
226 return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
227 },
228
229 end: function() {
230 return this.prevObject || this.constructor();
231 },
232
233 // For internal use only.
234 // Behaves like an Array's method, not like a jQuery method.
235 push: push,
236 sort: arr.sort,
237 splice: arr.splice
238};
239
240jQuery.extend = jQuery.fn.extend = function() {
241 var options, name, src, copy, copyIsArray, clone,
242 target = arguments[ 0 ] || {},
243 i = 1,
244 length = arguments.length,
245 deep = false;
246
247 // Handle a deep copy situation
248 if ( typeof target === "boolean" ) {
249 deep = target;
250
251 // Skip the boolean and the target
252 target = arguments[ i ] || {};
253 i++;
254 }
255
256 // Handle case when target is a string or something (possible in deep copy)
257 if ( typeof target !== "object" && !isFunction( target ) ) {
258 target = {};
259 }
260
261 // Extend jQuery itself if only one argument is passed
262 if ( i === length ) {
263 target = this;
264 i--;
265 }
266
267 for ( ; i < length; i++ ) {
268
269 // Only deal with non-null/undefined values
270 if ( ( options = arguments[ i ] ) != null ) {
271
272 // Extend the base object
273 for ( name in options ) {
274 copy = options[ name ];
275
276 // Prevent Object.prototype pollution
277 // Prevent never-ending loop
278 if ( name === "__proto__" || target === copy ) {
279 continue;
280 }
281
282 // Recurse if we're merging plain objects or arrays
283 if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
284 ( copyIsArray = Array.isArray( copy ) ) ) ) {
285 src = target[ name ];
286
287 // Ensure proper type for the source value
288 if ( copyIsArray && !Array.isArray( src ) ) {
289 clone = [];
290 } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {
291 clone = {};
292 } else {
293 clone = src;
294 }
295 copyIsArray = false;
296
297 // Never move original objects, clone them
298 target[ name ] = jQuery.extend( deep, clone, copy );
299
300 // Don't bring in undefined values
301 } else if ( copy !== undefined ) {
302 target[ name ] = copy;
303 }
304 }
305 }
306 }
307
308 // Return the modified object
309 return target;
310};
311
312jQuery.extend( {
313
314 // Unique for each copy of jQuery on the page
315 expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
316
317 // Assume jQuery is ready without the ready module
318 isReady: true,
319
320 error: function( msg ) {
321 throw new Error( msg );
322 },
323
324 noop: function() {},
325
326 isPlainObject: function( obj ) {
327 var proto, Ctor;
328
329 // Detect obvious negatives
330 // Use toString instead of jQuery.type to catch host objects
331 if ( !obj || toString.call( obj ) !== "[object Object]" ) {
332 return false;
333 }
334
335 proto = getProto( obj );
336
337 // Objects with no prototype (e.g., `Object.create( null )`) are plain
338 if ( !proto ) {
339 return true;
340 }
341
342 // Objects with prototype are plain iff they were constructed by a global Object function
343 Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
344 return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
345 },
346
347 isEmptyObject: function( obj ) {
348 var name;
349
350 for ( name in obj ) {
351 return false;
352 }
353 return true;
354 },
355
356 // Evaluates a script in a global context
357 globalEval: function( code, options ) {
358 DOMEval( code, { nonce: options && options.nonce } );
359 },
360
361 each: function( obj, callback ) {
362 var length, i = 0;
363
364 if ( isArrayLike( obj ) ) {
365 length = obj.length;
366 for ( ; i < length; i++ ) {
367 if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
368 break;
369 }
370 }
371 } else {
372 for ( i in obj ) {
373 if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
374 break;
375 }
376 }
377 }
378
379 return obj;
380 },
381
382 // Support: Android <=4.0 only
383 trim: function( text ) {
384 return text == null ?
385 "" :
386 ( text + "" ).replace( rtrim, "" );
387 },
388
389 // results is for internal usage only
390 makeArray: function( arr, results ) {
391 var ret = results || [];
392
393 if ( arr != null ) {
394 if ( isArrayLike( Object( arr ) ) ) {
395 jQuery.merge( ret,
396 typeof arr === "string" ?
397 [ arr ] : arr
398 );
399 } else {
400 push.call( ret, arr );
401 }
402 }
403
404 return ret;
405 },
406
407 inArray: function( elem, arr, i ) {
408 return arr == null ? -1 : indexOf.call( arr, elem, i );
409 },
410
411 // Support: Android <=4.0 only, PhantomJS 1 only
412 // push.apply(_, arraylike) throws on ancient WebKit
413 merge: function( first, second ) {
414 var len = +second.length,
415 j = 0,
416 i = first.length;
417
418 for ( ; j < len; j++ ) {
419 first[ i++ ] = second[ j ];
420 }
421
422 first.length = i;
423
424 return first;
425 },
426
427 grep: function( elems, callback, invert ) {
428 var callbackInverse,
429 matches = [],
430 i = 0,
431 length = elems.length,
432 callbackExpect = !invert;
433
434 // Go through the array, only saving the items
435 // that pass the validator function
436 for ( ; i < length; i++ ) {
437 callbackInverse = !callback( elems[ i ], i );
438 if ( callbackInverse !== callbackExpect ) {
439 matches.push( elems[ i ] );
440 }
441 }
442
443 return matches;
444 },
445
446 // arg is for internal usage only
447 map: function( elems, callback, arg ) {
448 var length, value,
449 i = 0,
450 ret = [];
451
452 // Go through the array, translating each of the items to their new values
453 if ( isArrayLike( elems ) ) {
454 length = elems.length;
455 for ( ; i < length; i++ ) {
456 value = callback( elems[ i ], i, arg );
457
458 if ( value != null ) {
459 ret.push( value );
460 }
461 }
462
463 // Go through every key on the object,
464 } else {
465 for ( i in elems ) {
466 value = callback( elems[ i ], i, arg );
467
468 if ( value != null ) {
469 ret.push( value );
470 }
471 }
472 }
473
474 // Flatten any nested arrays
475 return concat.apply( [], ret );
476 },
477
478 // A global GUID counter for objects
479 guid: 1,
480
481 // jQuery.support is not used in Core but other projects attach their
482 // properties to it so it needs to exist.
483 support: support
484} );
485
486if ( typeof Symbol === "function" ) {
487 jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
488}
489
490// Populate the class2type map
491jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
492function( i, name ) {
493 class2type[ "[object " + name + "]" ] = name.toLowerCase();
494} );
495
496function isArrayLike( obj ) {
497
498 // Support: real iOS 8.2 only (not reproducible in simulator)
499 // `in` check used to prevent JIT error (gh-2145)
500 // hasOwn isn't used here due to false negatives
501 // regarding Nodelist length in IE
502 var length = !!obj && "length" in obj && obj.length,
503 type = toType( obj );
504
505 if ( isFunction( obj ) || isWindow( obj ) ) {
506 return false;
507 }
508
509 return type === "array" || length === 0 ||
510 typeof length === "number" && length > 0 && ( length - 1 ) in obj;
511}
512var Sizzle =
513/*!
514 * Sizzle CSS Selector Engine v2.3.4
515 * https://sizzlejs.com/
516 *
517 * Copyright JS Foundation and other contributors
518 * Released under the MIT license
519 * https://js.foundation/
520 *
521 * Date: 2019-04-08
522 */
523(function( window ) {
524
525var i,
526 support,
527 Expr,
528 getText,
529 isXML,
530 tokenize,
531 compile,
532 select,
533 outermostContext,
534 sortInput,
535 hasDuplicate,
536
537 // Local document vars
538 setDocument,
539 document,
540 docElem,
541 documentIsHTML,
542 rbuggyQSA,
543 rbuggyMatches,
544 matches,
545 contains,
546
547 // Instance-specific data
548 expando = "sizzle" + 1 * new Date(),
549 preferredDoc = window.document,
550 dirruns = 0,
551 done = 0,
552 classCache = createCache(),
553 tokenCache = createCache(),
554 compilerCache = createCache(),
555 nonnativeSelectorCache = createCache(),
556 sortOrder = function( a, b ) {
557 if ( a === b ) {
558 hasDuplicate = true;
559 }
560 return 0;
561 },
562
563 // Instance methods
564 hasOwn = ({}).hasOwnProperty,
565 arr = [],
566 pop = arr.pop,
567 push_native = arr.push,
568 push = arr.push,
569 slice = arr.slice,
570 // Use a stripped-down indexOf as it's faster than native
571 // https://jsperf.com/thor-indexof-vs-for/5
572 indexOf = function( list, elem ) {
573 var i = 0,
574 len = list.length;
575 for ( ; i < len; i++ ) {
576 if ( list[i] === elem ) {
577 return i;
578 }
579 }
580 return -1;
581 },
582
583 booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
584
585 // Regular expressions
586
587 // http://www.w3.org/TR/css3-selectors/#whitespace
588 whitespace = "[\\x20\\t\\r\\n\\f]",
589
590 // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
591 identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
592
593 // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
594 attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
595 // Operator (capture 2)
596 "*([*^$|!~]?=)" + whitespace +
597 // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
598 "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
599 "*\\]",
600
601 pseudos = ":(" + identifier + ")(?:\\((" +
602 // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
603 // 1. quoted (capture 3; capture 4 or capture 5)
604 "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
605 // 2. simple (capture 6)
606 "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
607 // 3. anything else (capture 2)
608 ".*" +
609 ")\\)|)",
610
611 // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
612 rwhitespace = new RegExp( whitespace + "+", "g" ),
613 rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
614
615 rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
616 rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
617 rdescend = new RegExp( whitespace + "|>" ),
618
619 rpseudo = new RegExp( pseudos ),
620 ridentifier = new RegExp( "^" + identifier + "$" ),
621
622 matchExpr = {
623 "ID": new RegExp( "^#(" + identifier + ")" ),
624 "CLASS": new RegExp( "^\\.(" + identifier + ")" ),
625 "TAG": new RegExp( "^(" + identifier + "|[*])" ),
626 "ATTR": new RegExp( "^" + attributes ),
627 "PSEUDO": new RegExp( "^" + pseudos ),
628 "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
629 "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
630 "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
631 "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
632 // For use in libraries implementing .is()
633 // We use this for POS matching in `select`
634 "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
635 whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
636 },
637
638 rhtml = /HTML$/i,
639 rinputs = /^(?:input|select|textarea|button)$/i,
640 rheader = /^h\d$/i,
641
642 rnative = /^[^{]+\{\s*\[native \w/,
643
644 // Easily-parseable/retrievable ID or TAG or CLASS selectors
645 rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
646
647 rsibling = /[+~]/,
648
649 // CSS escapes
650 // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
651 runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
652 funescape = function( _, escaped, escapedWhitespace ) {
653 var high = "0x" + escaped - 0x10000;
654 // NaN means non-codepoint
655 // Support: Firefox<24
656 // Workaround erroneous numeric interpretation of +"0x"
657 return high !== high || escapedWhitespace ?
658 escaped :
659 high < 0 ?
660 // BMP codepoint
661 String.fromCharCode( high + 0x10000 ) :
662 // Supplemental Plane codepoint (surrogate pair)
663 String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
664 },
665
666 // CSS string/identifier serialization
667 // https://drafts.csswg.org/cssom/#common-serializing-idioms
668 rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
669 fcssescape = function( ch, asCodePoint ) {
670 if ( asCodePoint ) {
671
672 // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
673 if ( ch === "\0" ) {
674 return "\uFFFD";
675 }
676
677 // Control characters and (dependent upon position) numbers get escaped as code points
678 return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
679 }
680
681 // Other potentially-special ASCII characters get backslash-escaped
682 return "\\" + ch;
683 },
684
685 // Used for iframes
686 // See setDocument()
687 // Removing the function wrapper causes a "Permission Denied"
688 // error in IE
689 unloadHandler = function() {
690 setDocument();
691 },
692
693 inDisabledFieldset = addCombinator(
694 function( elem ) {
695 return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset";
696 },
697 { dir: "parentNode", next: "legend" }
698 );
699
700// Optimize for push.apply( _, NodeList )
701try {
702 push.apply(
703 (arr = slice.call( preferredDoc.childNodes )),
704 preferredDoc.childNodes
705 );
706 // Support: Android<4.0
707 // Detect silently failing push.apply
708 arr[ preferredDoc.childNodes.length ].nodeType;
709} catch ( e ) {
710 push = { apply: arr.length ?
711
712 // Leverage slice if possible
713 function( target, els ) {
714 push_native.apply( target, slice.call(els) );
715 } :
716
717 // Support: IE<9
718 // Otherwise append directly
719 function( target, els ) {
720 var j = target.length,
721 i = 0;
722 // Can't trust NodeList.length
723 while ( (target[j++] = els[i++]) ) {}
724 target.length = j - 1;
725 }
726 };
727}
728
729function Sizzle( selector, context, results, seed ) {
730 var m, i, elem, nid, match, groups, newSelector,
731 newContext = context && context.ownerDocument,
732
733 // nodeType defaults to 9, since context defaults to document
734 nodeType = context ? context.nodeType : 9;
735
736 results = results || [];
737
738 // Return early from calls with invalid selector or context
739 if ( typeof selector !== "string" || !selector ||
740 nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
741
742 return results;
743 }
744
745 // Try to shortcut find operations (as opposed to filters) in HTML documents
746 if ( !seed ) {
747
748 if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
749 setDocument( context );
750 }
751 context = context || document;
752
753 if ( documentIsHTML ) {
754
755 // If the selector is sufficiently simple, try using a "get*By*" DOM method
756 // (excepting DocumentFragment context, where the methods don't exist)
757 if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
758
759 // ID selector
760 if ( (m = match[1]) ) {
761
762 // Document context
763 if ( nodeType === 9 ) {
764 if ( (elem = context.getElementById( m )) ) {
765
766 // Support: IE, Opera, Webkit
767 // TODO: identify versions
768 // getElementById can match elements by name instead of ID
769 if ( elem.id === m ) {
770 results.push( elem );
771 return results;
772 }
773 } else {
774 return results;
775 }
776
777 // Element context
778 } else {
779
780 // Support: IE, Opera, Webkit
781 // TODO: identify versions
782 // getElementById can match elements by name instead of ID
783 if ( newContext && (elem = newContext.getElementById( m )) &&
784 contains( context, elem ) &&
785 elem.id === m ) {
786
787 results.push( elem );
788 return results;
789 }
790 }
791
792 // Type selector
793 } else if ( match[2] ) {
794 push.apply( results, context.getElementsByTagName( selector ) );
795 return results;
796
797 // Class selector
798 } else if ( (m = match[3]) && support.getElementsByClassName &&
799 context.getElementsByClassName ) {
800
801 push.apply( results, context.getElementsByClassName( m ) );
802 return results;
803 }
804 }
805
806 // Take advantage of querySelectorAll
807 if ( support.qsa &&
808 !nonnativeSelectorCache[ selector + " " ] &&
809 (!rbuggyQSA || !rbuggyQSA.test( selector )) &&
810
811 // Support: IE 8 only
812 // Exclude object elements
813 (nodeType !== 1 || context.nodeName.toLowerCase() !== "object") ) {
814
815 newSelector = selector;
816 newContext = context;
817
818 // qSA considers elements outside a scoping root when evaluating child or
819 // descendant combinators, which is not what we want.
820 // In such cases, we work around the behavior by prefixing every selector in the
821 // list with an ID selector referencing the scope context.
822 // Thanks to Andrew Dupont for this technique.
823 if ( nodeType === 1 && rdescend.test( selector ) ) {
824
825 // Capture the context ID, setting it first if necessary
826 if ( (nid = context.getAttribute( "id" )) ) {
827 nid = nid.replace( rcssescape, fcssescape );
828 } else {
829 context.setAttribute( "id", (nid = expando) );
830 }
831
832 // Prefix every selector in the list
833 groups = tokenize( selector );
834 i = groups.length;
835 while ( i-- ) {
836 groups[i] = "#" + nid + " " + toSelector( groups[i] );
837 }
838 newSelector = groups.join( "," );
839
840 // Expand context for sibling selectors
841 newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
842 context;
843 }
844
845 try {
846 push.apply( results,
847 newContext.querySelectorAll( newSelector )
848 );
849 return results;
850 } catch ( qsaError ) {
851 nonnativeSelectorCache( selector, true );
852 } finally {
853 if ( nid === expando ) {
854 context.removeAttribute( "id" );
855 }
856 }
857 }
858 }
859 }
860
861 // All others
862 return select( selector.replace( rtrim, "$1" ), context, results, seed );
863}
864
865/**
866 * Create key-value caches of limited size
867 * @returns {function(string, object)} Returns the Object data after storing it on itself with
868 * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
869 * deleting the oldest entry
870 */
871function createCache() {
872 var keys = [];
873
874 function cache( key, value ) {
875 // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
876 if ( keys.push( key + " " ) > Expr.cacheLength ) {
877 // Only keep the most recent entries
878 delete cache[ keys.shift() ];
879 }
880 return (cache[ key + " " ] = value);
881 }
882 return cache;
883}
884
885/**
886 * Mark a function for special use by Sizzle
887 * @param {Function} fn The function to mark
888 */
889function markFunction( fn ) {
890 fn[ expando ] = true;
891 return fn;
892}
893
894/**
895 * Support testing using an element
896 * @param {Function} fn Passed the created element and returns a boolean result
897 */
898function assert( fn ) {
899 var el = document.createElement("fieldset");
900
901 try {
902 return !!fn( el );
903 } catch (e) {
904 return false;
905 } finally {
906 // Remove from its parent by default
907 if ( el.parentNode ) {
908 el.parentNode.removeChild( el );
909 }
910 // release memory in IE
911 el = null;
912 }
913}
914
915/**
916 * Adds the same handler for all of the specified attrs
917 * @param {String} attrs Pipe-separated list of attributes
918 * @param {Function} handler The method that will be applied
919 */
920function addHandle( attrs, handler ) {
921 var arr = attrs.split("|"),
922 i = arr.length;
923
924 while ( i-- ) {
925 Expr.attrHandle[ arr[i] ] = handler;
926 }
927}
928
929/**
930 * Checks document order of two siblings
931 * @param {Element} a
932 * @param {Element} b
933 * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
934 */
935function siblingCheck( a, b ) {
936 var cur = b && a,
937 diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
938 a.sourceIndex - b.sourceIndex;
939
940 // Use IE sourceIndex if available on both nodes
941 if ( diff ) {
942 return diff;
943 }
944
945 // Check if b follows a
946 if ( cur ) {
947 while ( (cur = cur.nextSibling) ) {
948 if ( cur === b ) {
949 return -1;
950 }
951 }
952 }
953
954 return a ? 1 : -1;
955}
956
957/**
958 * Returns a function to use in pseudos for input types
959 * @param {String} type
960 */
961function createInputPseudo( type ) {
962 return function( elem ) {
963 var name = elem.nodeName.toLowerCase();
964 return name === "input" && elem.type === type;
965 };
966}
967
968/**
969 * Returns a function to use in pseudos for buttons
970 * @param {String} type
971 */
972function createButtonPseudo( type ) {
973 return function( elem ) {
974 var name = elem.nodeName.toLowerCase();
975 return (name === "input" || name === "button") && elem.type === type;
976 };
977}
978
979/**
980 * Returns a function to use in pseudos for :enabled/:disabled
981 * @param {Boolean} disabled true for :disabled; false for :enabled
982 */
983function createDisabledPseudo( disabled ) {
984
985 // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
986 return function( elem ) {
987
988 // Only certain elements can match :enabled or :disabled
989 // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
990 // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
991 if ( "form" in elem ) {
992
993 // Check for inherited disabledness on relevant non-disabled elements:
994 // * listed form-associated elements in a disabled fieldset
995 // https://html.spec.whatwg.org/multipage/forms.html#category-listed
996 // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
997 // * option elements in a disabled optgroup
998 // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
999 // All such elements have a "form" property.
1000 if ( elem.parentNode && elem.disabled === false ) {
1001
1002 // Option elements defer to a parent optgroup if present
1003 if ( "label" in elem ) {
1004 if ( "label" in elem.parentNode ) {
1005 return elem.parentNode.disabled === disabled;
1006 } else {
1007 return elem.disabled === disabled;
1008 }
1009 }
1010
1011 // Support: IE 6 - 11
1012 // Use the isDisabled shortcut property to check for disabled fieldset ancestors
1013 return elem.isDisabled === disabled ||
1014
1015 // Where there is no isDisabled, check manually
1016 /* jshint -W018 */
1017 elem.isDisabled !== !disabled &&
1018 inDisabledFieldset( elem ) === disabled;
1019 }
1020
1021 return elem.disabled === disabled;
1022
1023 // Try to winnow out elements that can't be disabled before trusting the disabled property.
1024 // Some victims get caught in our net (label, legend, menu, track), but it shouldn't
1025 // even exist on them, let alone have a boolean value.
1026 } else if ( "label" in elem ) {
1027 return elem.disabled === disabled;
1028 }
1029
1030 // Remaining elements are neither :enabled nor :disabled
1031 return false;
1032 };
1033}
1034
1035/**
1036 * Returns a function to use in pseudos for positionals
1037 * @param {Function} fn
1038 */
1039function createPositionalPseudo( fn ) {
1040 return markFunction(function( argument ) {
1041 argument = +argument;
1042 return markFunction(function( seed, matches ) {
1043 var j,
1044 matchIndexes = fn( [], seed.length, argument ),
1045 i = matchIndexes.length;
1046
1047 // Match elements found at the specified indexes
1048 while ( i-- ) {
1049 if ( seed[ (j = matchIndexes[i]) ] ) {
1050 seed[j] = !(matches[j] = seed[j]);
1051 }
1052 }
1053 });
1054 });
1055}
1056
1057/**
1058 * Checks a node for validity as a Sizzle context
1059 * @param {Element|Object=} context
1060 * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
1061 */
1062function testContext( context ) {
1063 return context && typeof context.getElementsByTagName !== "undefined" && context;
1064}
1065
1066// Expose support vars for convenience
1067support = Sizzle.support = {};
1068
1069/**
1070 * Detects XML nodes
1071 * @param {Element|Object} elem An element or a document
1072 * @returns {Boolean} True iff elem is a non-HTML XML node
1073 */
1074isXML = Sizzle.isXML = function( elem ) {
1075 var namespace = elem.namespaceURI,
1076 docElem = (elem.ownerDocument || elem).documentElement;
1077
1078 // Support: IE <=8
1079 // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes
1080 // https://bugs.jquery.com/ticket/4833
1081 return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" );
1082};
1083
1084/**
1085 * Sets document-related variables once based on the current document
1086 * @param {Element|Object} [doc] An element or document object to use to set the document
1087 * @returns {Object} Returns the current document
1088 */
1089setDocument = Sizzle.setDocument = function( node ) {
1090 var hasCompare, subWindow,
1091 doc = node ? node.ownerDocument || node : preferredDoc;
1092
1093 // Return early if doc is invalid or already selected
1094 if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
1095 return document;
1096 }
1097
1098 // Update global variables
1099 document = doc;
1100 docElem = document.documentElement;
1101 documentIsHTML = !isXML( document );
1102
1103 // Support: IE 9-11, Edge
1104 // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
1105 if ( preferredDoc !== document &&
1106 (subWindow = document.defaultView) && subWindow.top !== subWindow ) {
1107
1108 // Support: IE 11, Edge
1109 if ( subWindow.addEventListener ) {
1110 subWindow.addEventListener( "unload", unloadHandler, false );
1111
1112 // Support: IE 9 - 10 only
1113 } else if ( subWindow.attachEvent ) {
1114 subWindow.attachEvent( "onunload", unloadHandler );
1115 }
1116 }
1117
1118 /* Attributes
1119 ---------------------------------------------------------------------- */
1120
1121 // Support: IE<8
1122 // Verify that getAttribute really returns attributes and not properties
1123 // (excepting IE8 booleans)
1124 support.attributes = assert(function( el ) {
1125 el.className = "i";
1126 return !el.getAttribute("className");
1127 });
1128
1129 /* getElement(s)By*
1130 ---------------------------------------------------------------------- */
1131
1132 // Check if getElementsByTagName("*") returns only elements
1133 support.getElementsByTagName = assert(function( el ) {
1134 el.appendChild( document.createComment("") );
1135 return !el.getElementsByTagName("*").length;
1136 });
1137
1138 // Support: IE<9
1139 support.getElementsByClassName = rnative.test( document.getElementsByClassName );
1140
1141 // Support: IE<10
1142 // Check if getElementById returns elements by name
1143 // The broken getElementById methods don't pick up programmatically-set names,
1144 // so use a roundabout getElementsByName test
1145 support.getById = assert(function( el ) {
1146 docElem.appendChild( el ).id = expando;
1147 return !document.getElementsByName || !document.getElementsByName( expando ).length;
1148 });
1149
1150 // ID filter and find
1151 if ( support.getById ) {
1152 Expr.filter["ID"] = function( id ) {
1153 var attrId = id.replace( runescape, funescape );
1154 return function( elem ) {
1155 return elem.getAttribute("id") === attrId;
1156 };
1157 };
1158 Expr.find["ID"] = function( id, context ) {
1159 if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
1160 var elem = context.getElementById( id );
1161 return elem ? [ elem ] : [];
1162 }
1163 };
1164 } else {
1165 Expr.filter["ID"] = function( id ) {
1166 var attrId = id.replace( runescape, funescape );
1167 return function( elem ) {
1168 var node = typeof elem.getAttributeNode !== "undefined" &&
1169 elem.getAttributeNode("id");
1170 return node && node.value === attrId;
1171 };
1172 };
1173
1174 // Support: IE 6 - 7 only
1175 // getElementById is not reliable as a find shortcut
1176 Expr.find["ID"] = function( id, context ) {
1177 if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
1178 var node, i, elems,
1179 elem = context.getElementById( id );
1180
1181 if ( elem ) {
1182
1183 // Verify the id attribute
1184 node = elem.getAttributeNode("id");
1185 if ( node && node.value === id ) {
1186 return [ elem ];
1187 }
1188
1189 // Fall back on getElementsByName
1190 elems = context.getElementsByName( id );
1191 i = 0;
1192 while ( (elem = elems[i++]) ) {
1193 node = elem.getAttributeNode("id");
1194 if ( node && node.value === id ) {
1195 return [ elem ];
1196 }
1197 }
1198 }
1199
1200 return [];
1201 }
1202 };
1203 }
1204
1205 // Tag
1206 Expr.find["TAG"] = support.getElementsByTagName ?
1207 function( tag, context ) {
1208 if ( typeof context.getElementsByTagName !== "undefined" ) {
1209 return context.getElementsByTagName( tag );
1210
1211 // DocumentFragment nodes don't have gEBTN
1212 } else if ( support.qsa ) {
1213 return context.querySelectorAll( tag );
1214 }
1215 } :
1216
1217 function( tag, context ) {
1218 var elem,
1219 tmp = [],
1220 i = 0,
1221 // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
1222 results = context.getElementsByTagName( tag );
1223
1224 // Filter out possible comments
1225 if ( tag === "*" ) {
1226 while ( (elem = results[i++]) ) {
1227 if ( elem.nodeType === 1 ) {
1228 tmp.push( elem );
1229 }
1230 }
1231
1232 return tmp;
1233 }
1234 return results;
1235 };
1236
1237 // Class
1238 Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
1239 if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
1240 return context.getElementsByClassName( className );
1241 }
1242 };
1243
1244 /* QSA/matchesSelector
1245 ---------------------------------------------------------------------- */
1246
1247 // QSA and matchesSelector support
1248
1249 // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
1250 rbuggyMatches = [];
1251
1252 // qSa(:focus) reports false when true (Chrome 21)
1253 // We allow this because of a bug in IE8/9 that throws an error
1254 // whenever `document.activeElement` is accessed on an iframe
1255 // So, we allow :focus to pass through QSA all the time to avoid the IE error
1256 // See https://bugs.jquery.com/ticket/13378
1257 rbuggyQSA = [];
1258
1259 if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
1260 // Build QSA regex
1261 // Regex strategy adopted from Diego Perini
1262 assert(function( el ) {
1263 // Select is set to empty string on purpose
1264 // This is to test IE's treatment of not explicitly
1265 // setting a boolean content attribute,
1266 // since its presence should be enough
1267 // https://bugs.jquery.com/ticket/12359
1268 docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +
1269 "<select id='" + expando + "-\r\\' msallowcapture=''>" +
1270 "<option selected=''></option></select>";
1271
1272 // Support: IE8, Opera 11-12.16
1273 // Nothing should be selected when empty strings follow ^= or $= or *=
1274 // The test attribute must be unknown in Opera but "safe" for WinRT
1275 // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
1276 if ( el.querySelectorAll("[msallowcapture^='']").length ) {
1277 rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
1278 }
1279
1280 // Support: IE8
1281 // Boolean attributes and "value" are not treated correctly
1282 if ( !el.querySelectorAll("[selected]").length ) {
1283 rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
1284 }
1285
1286 // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
1287 if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
1288 rbuggyQSA.push("~=");
1289 }
1290
1291 // Webkit/Opera - :checked should return selected option elements
1292 // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
1293 // IE8 throws error here and will not see later tests
1294 if ( !el.querySelectorAll(":checked").length ) {
1295 rbuggyQSA.push(":checked");
1296 }
1297
1298 // Support: Safari 8+, iOS 8+
1299 // https://bugs.webkit.org/show_bug.cgi?id=136851
1300 // In-page `selector#id sibling-combinator selector` fails
1301 if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
1302 rbuggyQSA.push(".#.+[+~]");
1303 }
1304 });
1305
1306 assert(function( el ) {
1307 el.innerHTML = "<a href='' disabled='disabled'></a>" +
1308 "<select disabled='disabled'><option/></select>";
1309
1310 // Support: Windows 8 Native Apps
1311 // The type and name attributes are restricted during .innerHTML assignment
1312 var input = document.createElement("input");
1313 input.setAttribute( "type", "hidden" );
1314 el.appendChild( input ).setAttribute( "name", "D" );
1315
1316 // Support: IE8
1317 // Enforce case-sensitivity of name attribute
1318 if ( el.querySelectorAll("[name=d]").length ) {
1319 rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
1320 }
1321
1322 // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
1323 // IE8 throws error here and will not see later tests
1324 if ( el.querySelectorAll(":enabled").length !== 2 ) {
1325 rbuggyQSA.push( ":enabled", ":disabled" );
1326 }
1327
1328 // Support: IE9-11+
1329 // IE's :disabled selector does not pick up the children of disabled fieldsets
1330 docElem.appendChild( el ).disabled = true;
1331 if ( el.querySelectorAll(":disabled").length !== 2 ) {
1332 rbuggyQSA.push( ":enabled", ":disabled" );
1333 }
1334
1335 // Opera 10-11 does not throw on post-comma invalid pseudos
1336 el.querySelectorAll("*,:x");
1337 rbuggyQSA.push(",.*:");
1338 });
1339 }
1340
1341 if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
1342 docElem.webkitMatchesSelector ||
1343 docElem.mozMatchesSelector ||
1344 docElem.oMatchesSelector ||
1345 docElem.msMatchesSelector) )) ) {
1346
1347 assert(function( el ) {
1348 // Check to see if it's possible to do matchesSelector
1349 // on a disconnected node (IE 9)
1350 support.disconnectedMatch = matches.call( el, "*" );
1351
1352 // This should fail with an exception
1353 // Gecko does not error, returns false instead
1354 matches.call( el, "[s!='']:x" );
1355 rbuggyMatches.push( "!=", pseudos );
1356 });
1357 }
1358
1359 rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
1360 rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
1361
1362 /* Contains
1363 ---------------------------------------------------------------------- */
1364 hasCompare = rnative.test( docElem.compareDocumentPosition );
1365
1366 // Element contains another
1367 // Purposefully self-exclusive
1368 // As in, an element does not contain itself
1369 contains = hasCompare || rnative.test( docElem.contains ) ?
1370 function( a, b ) {
1371 var adown = a.nodeType === 9 ? a.documentElement : a,
1372 bup = b && b.parentNode;
1373 return a === bup || !!( bup && bup.nodeType === 1 && (
1374 adown.contains ?
1375 adown.contains( bup ) :
1376 a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
1377 ));
1378 } :
1379 function( a, b ) {
1380 if ( b ) {
1381 while ( (b = b.parentNode) ) {
1382 if ( b === a ) {
1383 return true;
1384 }
1385 }
1386 }
1387 return false;
1388 };
1389
1390 /* Sorting
1391 ---------------------------------------------------------------------- */
1392
1393 // Document order sorting
1394 sortOrder = hasCompare ?
1395 function( a, b ) {
1396
1397 // Flag for duplicate removal
1398 if ( a === b ) {
1399 hasDuplicate = true;
1400 return 0;
1401 }
1402
1403 // Sort on method existence if only one input has compareDocumentPosition
1404 var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
1405 if ( compare ) {
1406 return compare;
1407 }
1408
1409 // Calculate position if both inputs belong to the same document
1410 compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
1411 a.compareDocumentPosition( b ) :
1412
1413 // Otherwise we know they are disconnected
1414 1;
1415
1416 // Disconnected nodes
1417 if ( compare & 1 ||
1418 (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
1419
1420 // Choose the first element that is related to our preferred document
1421 if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
1422 return -1;
1423 }
1424 if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
1425 return 1;
1426 }
1427
1428 // Maintain original order
1429 return sortInput ?
1430 ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
1431 0;
1432 }
1433
1434 return compare & 4 ? -1 : 1;
1435 } :
1436 function( a, b ) {
1437 // Exit early if the nodes are identical
1438 if ( a === b ) {
1439 hasDuplicate = true;
1440 return 0;
1441 }
1442
1443 var cur,
1444 i = 0,
1445 aup = a.parentNode,
1446 bup = b.parentNode,
1447 ap = [ a ],
1448 bp = [ b ];
1449
1450 // Parentless nodes are either documents or disconnected
1451 if ( !aup || !bup ) {
1452 return a === document ? -1 :
1453 b === document ? 1 :
1454 aup ? -1 :
1455 bup ? 1 :
1456 sortInput ?
1457 ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
1458 0;
1459
1460 // If the nodes are siblings, we can do a quick check
1461 } else if ( aup === bup ) {
1462 return siblingCheck( a, b );
1463 }
1464
1465 // Otherwise we need full lists of their ancestors for comparison
1466 cur = a;
1467 while ( (cur = cur.parentNode) ) {
1468 ap.unshift( cur );
1469 }
1470 cur = b;
1471 while ( (cur = cur.parentNode) ) {
1472 bp.unshift( cur );
1473 }
1474
1475 // Walk down the tree looking for a discrepancy
1476 while ( ap[i] === bp[i] ) {
1477 i++;
1478 }
1479
1480 return i ?
1481 // Do a sibling check if the nodes have a common ancestor
1482 siblingCheck( ap[i], bp[i] ) :
1483
1484 // Otherwise nodes in our document sort first
1485 ap[i] === preferredDoc ? -1 :
1486 bp[i] === preferredDoc ? 1 :
1487 0;
1488 };
1489
1490 return document;
1491};
1492
1493Sizzle.matches = function( expr, elements ) {
1494 return Sizzle( expr, null, null, elements );
1495};
1496
1497Sizzle.matchesSelector = function( elem, expr ) {
1498 // Set document vars if needed
1499 if ( ( elem.ownerDocument || elem ) !== document ) {
1500 setDocument( elem );
1501 }
1502
1503 if ( support.matchesSelector && documentIsHTML &&
1504 !nonnativeSelectorCache[ expr + " " ] &&
1505 ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
1506 ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
1507
1508 try {
1509 var ret = matches.call( elem, expr );
1510
1511 // IE 9's matchesSelector returns false on disconnected nodes
1512 if ( ret || support.disconnectedMatch ||
1513 // As well, disconnected nodes are said to be in a document
1514 // fragment in IE 9
1515 elem.document && elem.document.nodeType !== 11 ) {
1516 return ret;
1517 }
1518 } catch (e) {
1519 nonnativeSelectorCache( expr, true );
1520 }
1521 }
1522
1523 return Sizzle( expr, document, null, [ elem ] ).length > 0;
1524};
1525
1526Sizzle.contains = function( context, elem ) {
1527 // Set document vars if needed
1528 if ( ( context.ownerDocument || context ) !== document ) {
1529 setDocument( context );
1530 }
1531 return contains( context, elem );
1532};
1533
1534Sizzle.attr = function( elem, name ) {
1535 // Set document vars if needed
1536 if ( ( elem.ownerDocument || elem ) !== document ) {
1537 setDocument( elem );
1538 }
1539
1540 var fn = Expr.attrHandle[ name.toLowerCase() ],
1541 // Don't get fooled by Object.prototype properties (jQuery #13807)
1542 val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
1543 fn( elem, name, !documentIsHTML ) :
1544 undefined;
1545
1546 return val !== undefined ?
1547 val :
1548 support.attributes || !documentIsHTML ?
1549 elem.getAttribute( name ) :
1550 (val = elem.getAttributeNode(name)) && val.specified ?
1551 val.value :
1552 null;
1553};
1554
1555Sizzle.escape = function( sel ) {
1556 return (sel + "").replace( rcssescape, fcssescape );
1557};
1558
1559Sizzle.error = function( msg ) {
1560 throw new Error( "Syntax error, unrecognized expression: " + msg );
1561};
1562
1563/**
1564 * Document sorting and removing duplicates
1565 * @param {ArrayLike} results
1566 */
1567Sizzle.uniqueSort = function( results ) {
1568 var elem,
1569 duplicates = [],
1570 j = 0,
1571 i = 0;
1572
1573 // Unless we *know* we can detect duplicates, assume their presence
1574 hasDuplicate = !support.detectDuplicates;
1575 sortInput = !support.sortStable && results.slice( 0 );
1576 results.sort( sortOrder );
1577
1578 if ( hasDuplicate ) {
1579 while ( (elem = results[i++]) ) {
1580 if ( elem === results[ i ] ) {
1581 j = duplicates.push( i );
1582 }
1583 }
1584 while ( j-- ) {
1585 results.splice( duplicates[ j ], 1 );
1586 }
1587 }
1588
1589 // Clear input after sorting to release objects
1590 // See https://github.com/jquery/sizzle/pull/225
1591 sortInput = null;
1592
1593 return results;
1594};
1595
1596/**
1597 * Utility function for retrieving the text value of an array of DOM nodes
1598 * @param {Array|Element} elem
1599 */
1600getText = Sizzle.getText = function( elem ) {
1601 var node,
1602 ret = "",
1603 i = 0,
1604 nodeType = elem.nodeType;
1605
1606 if ( !nodeType ) {
1607 // If no nodeType, this is expected to be an array
1608 while ( (node = elem[i++]) ) {
1609 // Do not traverse comment nodes
1610 ret += getText( node );
1611 }
1612 } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
1613 // Use textContent for elements
1614 // innerText usage removed for consistency of new lines (jQuery #11153)
1615 if ( typeof elem.textContent === "string" ) {
1616 return elem.textContent;
1617 } else {
1618 // Traverse its children
1619 for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
1620 ret += getText( elem );
1621 }
1622 }
1623 } else if ( nodeType === 3 || nodeType === 4 ) {
1624 return elem.nodeValue;
1625 }
1626 // Do not include comment or processing instruction nodes
1627
1628 return ret;
1629};
1630
1631Expr = Sizzle.selectors = {
1632
1633 // Can be adjusted by the user
1634 cacheLength: 50,
1635
1636 createPseudo: markFunction,
1637
1638 match: matchExpr,
1639
1640 attrHandle: {},
1641
1642 find: {},
1643
1644 relative: {
1645 ">": { dir: "parentNode", first: true },
1646 " ": { dir: "parentNode" },
1647 "+": { dir: "previousSibling", first: true },
1648 "~": { dir: "previousSibling" }
1649 },
1650
1651 preFilter: {
1652 "ATTR": function( match ) {
1653 match[1] = match[1].replace( runescape, funescape );
1654
1655 // Move the given value to match[3] whether quoted or unquoted
1656 match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
1657
1658 if ( match[2] === "~=" ) {
1659 match[3] = " " + match[3] + " ";
1660 }
1661
1662 return match.slice( 0, 4 );
1663 },
1664
1665 "CHILD": function( match ) {
1666 /* matches from matchExpr["CHILD"]
1667 1 type (only|nth|...)
1668 2 what (child|of-type)
1669 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
1670 4 xn-component of xn+y argument ([+-]?\d*n|)
1671 5 sign of xn-component
1672 6 x of xn-component
1673 7 sign of y-component
1674 8 y of y-component
1675 */
1676 match[1] = match[1].toLowerCase();
1677
1678 if ( match[1].slice( 0, 3 ) === "nth" ) {
1679 // nth-* requires argument
1680 if ( !match[3] ) {
1681 Sizzle.error( match[0] );
1682 }
1683
1684 // numeric x and y parameters for Expr.filter.CHILD
1685 // remember that false/true cast respectively to 0/1
1686 match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
1687 match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
1688
1689 // other types prohibit arguments
1690 } else if ( match[3] ) {
1691 Sizzle.error( match[0] );
1692 }
1693
1694 return match;
1695 },
1696
1697 "PSEUDO": function( match ) {
1698 var excess,
1699 unquoted = !match[6] && match[2];
1700
1701 if ( matchExpr["CHILD"].test( match[0] ) ) {
1702 return null;
1703 }
1704
1705 // Accept quoted arguments as-is
1706 if ( match[3] ) {
1707 match[2] = match[4] || match[5] || "";
1708
1709 // Strip excess characters from unquoted arguments
1710 } else if ( unquoted && rpseudo.test( unquoted ) &&
1711 // Get excess from tokenize (recursively)
1712 (excess = tokenize( unquoted, true )) &&
1713 // advance to the next closing parenthesis
1714 (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
1715
1716 // excess is a negative index
1717 match[0] = match[0].slice( 0, excess );
1718 match[2] = unquoted.slice( 0, excess );
1719 }
1720
1721 // Return only captures needed by the pseudo filter method (type and argument)
1722 return match.slice( 0, 3 );
1723 }
1724 },
1725
1726 filter: {
1727
1728 "TAG": function( nodeNameSelector ) {
1729 var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
1730 return nodeNameSelector === "*" ?
1731 function() { return true; } :
1732 function( elem ) {
1733 return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
1734 };
1735 },
1736
1737 "CLASS": function( className ) {
1738 var pattern = classCache[ className + " " ];
1739
1740 return pattern ||
1741 (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
1742 classCache( className, function( elem ) {
1743 return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
1744 });
1745 },
1746
1747 "ATTR": function( name, operator, check ) {
1748 return function( elem ) {
1749 var result = Sizzle.attr( elem, name );
1750
1751 if ( result == null ) {
1752 return operator === "!=";
1753 }
1754 if ( !operator ) {
1755 return true;
1756 }
1757
1758 result += "";
1759
1760 return operator === "=" ? result === check :
1761 operator === "!=" ? result !== check :
1762 operator === "^=" ? check && result.indexOf( check ) === 0 :
1763 operator === "*=" ? check && result.indexOf( check ) > -1 :
1764 operator === "$=" ? check && result.slice( -check.length ) === check :
1765 operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
1766 operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
1767 false;
1768 };
1769 },
1770
1771 "CHILD": function( type, what, argument, first, last ) {
1772 var simple = type.slice( 0, 3 ) !== "nth",
1773 forward = type.slice( -4 ) !== "last",
1774 ofType = what === "of-type";
1775
1776 return first === 1 && last === 0 ?
1777
1778 // Shortcut for :nth-*(n)
1779 function( elem ) {
1780 return !!elem.parentNode;
1781 } :
1782
1783 function( elem, context, xml ) {
1784 var cache, uniqueCache, outerCache, node, nodeIndex, start,
1785 dir = simple !== forward ? "nextSibling" : "previousSibling",
1786 parent = elem.parentNode,
1787 name = ofType && elem.nodeName.toLowerCase(),
1788 useCache = !xml && !ofType,
1789 diff = false;
1790
1791 if ( parent ) {
1792
1793 // :(first|last|only)-(child|of-type)
1794 if ( simple ) {
1795 while ( dir ) {
1796 node = elem;
1797 while ( (node = node[ dir ]) ) {
1798 if ( ofType ?
1799 node.nodeName.toLowerCase() === name :
1800 node.nodeType === 1 ) {
1801
1802 return false;
1803 }
1804 }
1805 // Reverse direction for :only-* (if we haven't yet done so)
1806 start = dir = type === "only" && !start && "nextSibling";
1807 }
1808 return true;
1809 }
1810
1811 start = [ forward ? parent.firstChild : parent.lastChild ];
1812
1813 // non-xml :nth-child(...) stores cache data on `parent`
1814 if ( forward && useCache ) {
1815
1816 // Seek `elem` from a previously-cached index
1817
1818 // ...in a gzip-friendly way
1819 node = parent;
1820 outerCache = node[ expando ] || (node[ expando ] = {});
1821
1822 // Support: IE <9 only
1823 // Defend against cloned attroperties (jQuery gh-1709)
1824 uniqueCache = outerCache[ node.uniqueID ] ||
1825 (outerCache[ node.uniqueID ] = {});
1826
1827 cache = uniqueCache[ type ] || [];
1828 nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
1829 diff = nodeIndex && cache[ 2 ];
1830 node = nodeIndex && parent.childNodes[ nodeIndex ];
1831
1832 while ( (node = ++nodeIndex && node && node[ dir ] ||
1833
1834 // Fallback to seeking `elem` from the start
1835 (diff = nodeIndex = 0) || start.pop()) ) {
1836
1837 // When found, cache indexes on `parent` and break
1838 if ( node.nodeType === 1 && ++diff && node === elem ) {
1839 uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
1840 break;
1841 }
1842 }
1843
1844 } else {
1845 // Use previously-cached element index if available
1846 if ( useCache ) {
1847 // ...in a gzip-friendly way
1848 node = elem;
1849 outerCache = node[ expando ] || (node[ expando ] = {});
1850
1851 // Support: IE <9 only
1852 // Defend against cloned attroperties (jQuery gh-1709)
1853 uniqueCache = outerCache[ node.uniqueID ] ||
1854 (outerCache[ node.uniqueID ] = {});
1855
1856 cache = uniqueCache[ type ] || [];
1857 nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
1858 diff = nodeIndex;
1859 }
1860
1861 // xml :nth-child(...)
1862 // or :nth-last-child(...) or :nth(-last)?-of-type(...)
1863 if ( diff === false ) {
1864 // Use the same loop as above to seek `elem` from the start
1865 while ( (node = ++nodeIndex && node && node[ dir ] ||
1866 (diff = nodeIndex = 0) || start.pop()) ) {
1867
1868 if ( ( ofType ?
1869 node.nodeName.toLowerCase() === name :
1870 node.nodeType === 1 ) &&
1871 ++diff ) {
1872
1873 // Cache the index of each encountered element
1874 if ( useCache ) {
1875 outerCache = node[ expando ] || (node[ expando ] = {});
1876
1877 // Support: IE <9 only
1878 // Defend against cloned attroperties (jQuery gh-1709)
1879 uniqueCache = outerCache[ node.uniqueID ] ||
1880 (outerCache[ node.uniqueID ] = {});
1881
1882 uniqueCache[ type ] = [ dirruns, diff ];
1883 }
1884
1885 if ( node === elem ) {
1886 break;
1887 }
1888 }
1889 }
1890 }
1891 }
1892
1893 // Incorporate the offset, then check against cycle size
1894 diff -= last;
1895 return diff === first || ( diff % first === 0 && diff / first >= 0 );
1896 }
1897 };
1898 },
1899
1900 "PSEUDO": function( pseudo, argument ) {
1901 // pseudo-class names are case-insensitive
1902 // http://www.w3.org/TR/selectors/#pseudo-classes
1903 // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
1904 // Remember that setFilters inherits from pseudos
1905 var args,
1906 fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
1907 Sizzle.error( "unsupported pseudo: " + pseudo );
1908
1909 // The user may use createPseudo to indicate that
1910 // arguments are needed to create the filter function
1911 // just as Sizzle does
1912 if ( fn[ expando ] ) {
1913 return fn( argument );
1914 }
1915
1916 // But maintain support for old signatures
1917 if ( fn.length > 1 ) {
1918 args = [ pseudo, pseudo, "", argument ];
1919 return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
1920 markFunction(function( seed, matches ) {
1921 var idx,
1922 matched = fn( seed, argument ),
1923 i = matched.length;
1924 while ( i-- ) {
1925 idx = indexOf( seed, matched[i] );
1926 seed[ idx ] = !( matches[ idx ] = matched[i] );
1927 }
1928 }) :
1929 function( elem ) {
1930 return fn( elem, 0, args );
1931 };
1932 }
1933
1934 return fn;
1935 }
1936 },
1937
1938 pseudos: {
1939 // Potentially complex pseudos
1940 "not": markFunction(function( selector ) {
1941 // Trim the selector passed to compile
1942 // to avoid treating leading and trailing
1943 // spaces as combinators
1944 var input = [],
1945 results = [],
1946 matcher = compile( selector.replace( rtrim, "$1" ) );
1947
1948 return matcher[ expando ] ?
1949 markFunction(function( seed, matches, context, xml ) {
1950 var elem,
1951 unmatched = matcher( seed, null, xml, [] ),
1952 i = seed.length;
1953
1954 // Match elements unmatched by `matcher`
1955 while ( i-- ) {
1956 if ( (elem = unmatched[i]) ) {
1957 seed[i] = !(matches[i] = elem);
1958 }
1959 }
1960 }) :
1961 function( elem, context, xml ) {
1962 input[0] = elem;
1963 matcher( input, null, xml, results );
1964 // Don't keep the element (issue #299)
1965 input[0] = null;
1966 return !results.pop();
1967 };
1968 }),
1969
1970 "has": markFunction(function( selector ) {
1971 return function( elem ) {
1972 return Sizzle( selector, elem ).length > 0;
1973 };
1974 }),
1975
1976 "contains": markFunction(function( text ) {
1977 text = text.replace( runescape, funescape );
1978 return function( elem ) {
1979 return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;
1980 };
1981 }),
1982
1983 // "Whether an element is represented by a :lang() selector
1984 // is based solely on the element's language value
1985 // being equal to the identifier C,
1986 // or beginning with the identifier C immediately followed by "-".
1987 // The matching of C against the element's language value is performed case-insensitively.
1988 // The identifier C does not have to be a valid language name."
1989 // http://www.w3.org/TR/selectors/#lang-pseudo
1990 "lang": markFunction( function( lang ) {
1991 // lang value must be a valid identifier
1992 if ( !ridentifier.test(lang || "") ) {
1993 Sizzle.error( "unsupported lang: " + lang );
1994 }
1995 lang = lang.replace( runescape, funescape ).toLowerCase();
1996 return function( elem ) {
1997 var elemLang;
1998 do {
1999 if ( (elemLang = documentIsHTML ?
2000 elem.lang :
2001 elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
2002
2003 elemLang = elemLang.toLowerCase();
2004 return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
2005 }
2006 } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
2007 return false;
2008 };
2009 }),
2010
2011 // Miscellaneous
2012 "target": function( elem ) {
2013 var hash = window.location && window.location.hash;
2014 return hash && hash.slice( 1 ) === elem.id;
2015 },
2016
2017 "root": function( elem ) {
2018 return elem === docElem;
2019 },
2020
2021 "focus": function( elem ) {
2022 return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
2023 },
2024
2025 // Boolean properties
2026 "enabled": createDisabledPseudo( false ),
2027 "disabled": createDisabledPseudo( true ),
2028
2029 "checked": function( elem ) {
2030 // In CSS3, :checked should return both checked and selected elements
2031 // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
2032 var nodeName = elem.nodeName.toLowerCase();
2033 return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
2034 },
2035
2036 "selected": function( elem ) {
2037 // Accessing this property makes selected-by-default
2038 // options in Safari work properly
2039 if ( elem.parentNode ) {
2040 elem.parentNode.selectedIndex;
2041 }
2042
2043 return elem.selected === true;
2044 },
2045
2046 // Contents
2047 "empty": function( elem ) {
2048 // http://www.w3.org/TR/selectors/#empty-pseudo
2049 // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
2050 // but not by others (comment: 8; processing instruction: 7; etc.)
2051 // nodeType < 6 works because attributes (2) do not appear as children
2052 for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
2053 if ( elem.nodeType < 6 ) {
2054 return false;
2055 }
2056 }
2057 return true;
2058 },
2059
2060 "parent": function( elem ) {
2061 return !Expr.pseudos["empty"]( elem );
2062 },
2063
2064 // Element/input types
2065 "header": function( elem ) {
2066 return rheader.test( elem.nodeName );
2067 },
2068
2069 "input": function( elem ) {
2070 return rinputs.test( elem.nodeName );
2071 },
2072
2073 "button": function( elem ) {
2074 var name = elem.nodeName.toLowerCase();
2075 return name === "input" && elem.type === "button" || name === "button";
2076 },
2077
2078 "text": function( elem ) {
2079 var attr;
2080 return elem.nodeName.toLowerCase() === "input" &&
2081 elem.type === "text" &&
2082
2083 // Support: IE<8
2084 // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
2085 ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
2086 },
2087
2088 // Position-in-collection
2089 "first": createPositionalPseudo(function() {
2090 return [ 0 ];
2091 }),
2092
2093 "last": createPositionalPseudo(function( matchIndexes, length ) {
2094 return [ length - 1 ];
2095 }),
2096
2097 "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
2098 return [ argument < 0 ? argument + length : argument ];
2099 }),
2100
2101 "even": createPositionalPseudo(function( matchIndexes, length ) {
2102 var i = 0;
2103 for ( ; i < length; i += 2 ) {
2104 matchIndexes.push( i );
2105 }
2106 return matchIndexes;
2107 }),
2108
2109 "odd": createPositionalPseudo(function( matchIndexes, length ) {
2110 var i = 1;
2111 for ( ; i < length; i += 2 ) {
2112 matchIndexes.push( i );
2113 }
2114 return matchIndexes;
2115 }),
2116
2117 "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
2118 var i = argument < 0 ?
2119 argument + length :
2120 argument > length ?
2121 length :
2122 argument;
2123 for ( ; --i >= 0; ) {
2124 matchIndexes.push( i );
2125 }
2126 return matchIndexes;
2127 }),
2128
2129 "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
2130 var i = argument < 0 ? argument + length : argument;
2131 for ( ; ++i < length; ) {
2132 matchIndexes.push( i );
2133 }
2134 return matchIndexes;
2135 })
2136 }
2137};
2138
2139Expr.pseudos["nth"] = Expr.pseudos["eq"];
2140
2141// Add button/input type pseudos
2142for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
2143 Expr.pseudos[ i ] = createInputPseudo( i );
2144}
2145for ( i in { submit: true, reset: true } ) {
2146 Expr.pseudos[ i ] = createButtonPseudo( i );
2147}
2148
2149// Easy API for creating new setFilters
2150function setFilters() {}
2151setFilters.prototype = Expr.filters = Expr.pseudos;
2152Expr.setFilters = new setFilters();
2153
2154tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
2155 var matched, match, tokens, type,
2156 soFar, groups, preFilters,
2157 cached = tokenCache[ selector + " " ];
2158
2159 if ( cached ) {
2160 return parseOnly ? 0 : cached.slice( 0 );
2161 }
2162
2163 soFar = selector;
2164 groups = [];
2165 preFilters = Expr.preFilter;
2166
2167 while ( soFar ) {
2168
2169 // Comma and first run
2170 if ( !matched || (match = rcomma.exec( soFar )) ) {
2171 if ( match ) {
2172 // Don't consume trailing commas as valid
2173 soFar = soFar.slice( match[0].length ) || soFar;
2174 }
2175 groups.push( (tokens = []) );
2176 }
2177
2178 matched = false;
2179
2180 // Combinators
2181 if ( (match = rcombinators.exec( soFar )) ) {
2182 matched = match.shift();
2183 tokens.push({
2184 value: matched,
2185 // Cast descendant combinators to space
2186 type: match[0].replace( rtrim, " " )
2187 });
2188 soFar = soFar.slice( matched.length );
2189 }
2190
2191 // Filters
2192 for ( type in Expr.filter ) {
2193 if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
2194 (match = preFilters[ type ]( match ))) ) {
2195 matched = match.shift();
2196 tokens.push({
2197 value: matched,
2198 type: type,
2199 matches: match
2200 });
2201 soFar = soFar.slice( matched.length );
2202 }
2203 }
2204
2205 if ( !matched ) {
2206 break;
2207 }
2208 }
2209
2210 // Return the length of the invalid excess
2211 // if we're just parsing
2212 // Otherwise, throw an error or return tokens
2213 return parseOnly ?
2214 soFar.length :
2215 soFar ?
2216 Sizzle.error( selector ) :
2217 // Cache the tokens
2218 tokenCache( selector, groups ).slice( 0 );
2219};
2220
2221function toSelector( tokens ) {
2222 var i = 0,
2223 len = tokens.length,
2224 selector = "";
2225 for ( ; i < len; i++ ) {
2226 selector += tokens[i].value;
2227 }
2228 return selector;
2229}
2230
2231function addCombinator( matcher, combinator, base ) {
2232 var dir = combinator.dir,
2233 skip = combinator.next,
2234 key = skip || dir,
2235 checkNonElements = base && key === "parentNode",
2236 doneName = done++;
2237
2238 return combinator.first ?
2239 // Check against closest ancestor/preceding element
2240 function( elem, context, xml ) {
2241 while ( (elem = elem[ dir ]) ) {
2242 if ( elem.nodeType === 1 || checkNonElements ) {
2243 return matcher( elem, context, xml );
2244 }
2245 }
2246 return false;
2247 } :
2248
2249 // Check against all ancestor/preceding elements
2250 function( elem, context, xml ) {
2251 var oldCache, uniqueCache, outerCache,
2252 newCache = [ dirruns, doneName ];
2253
2254 // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
2255 if ( xml ) {
2256 while ( (elem = elem[ dir ]) ) {
2257 if ( elem.nodeType === 1 || checkNonElements ) {
2258 if ( matcher( elem, context, xml ) ) {
2259 return true;
2260 }
2261 }
2262 }
2263 } else {
2264 while ( (elem = elem[ dir ]) ) {
2265 if ( elem.nodeType === 1 || checkNonElements ) {
2266 outerCache = elem[ expando ] || (elem[ expando ] = {});
2267
2268 // Support: IE <9 only
2269 // Defend against cloned attroperties (jQuery gh-1709)
2270 uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
2271
2272 if ( skip && skip === elem.nodeName.toLowerCase() ) {
2273 elem = elem[ dir ] || elem;
2274 } else if ( (oldCache = uniqueCache[ key ]) &&
2275 oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
2276
2277 // Assign to newCache so results back-propagate to previous elements
2278 return (newCache[ 2 ] = oldCache[ 2 ]);
2279 } else {
2280 // Reuse newcache so results back-propagate to previous elements
2281 uniqueCache[ key ] = newCache;
2282
2283 // A match means we're done; a fail means we have to keep checking
2284 if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
2285 return true;
2286 }
2287 }
2288 }
2289 }
2290 }
2291 return false;
2292 };
2293}
2294
2295function elementMatcher( matchers ) {
2296 return matchers.length > 1 ?
2297 function( elem, context, xml ) {
2298 var i = matchers.length;
2299 while ( i-- ) {
2300 if ( !matchers[i]( elem, context, xml ) ) {
2301 return false;
2302 }
2303 }
2304 return true;
2305 } :
2306 matchers[0];
2307}
2308
2309function multipleContexts( selector, contexts, results ) {
2310 var i = 0,
2311 len = contexts.length;
2312 for ( ; i < len; i++ ) {
2313 Sizzle( selector, contexts[i], results );
2314 }
2315 return results;
2316}
2317
2318function condense( unmatched, map, filter, context, xml ) {
2319 var elem,
2320 newUnmatched = [],
2321 i = 0,
2322 len = unmatched.length,
2323 mapped = map != null;
2324
2325 for ( ; i < len; i++ ) {
2326 if ( (elem = unmatched[i]) ) {
2327 if ( !filter || filter( elem, context, xml ) ) {
2328 newUnmatched.push( elem );
2329 if ( mapped ) {
2330 map.push( i );
2331 }
2332 }
2333 }
2334 }
2335
2336 return newUnmatched;
2337}
2338
2339function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
2340 if ( postFilter && !postFilter[ expando ] ) {
2341 postFilter = setMatcher( postFilter );
2342 }
2343 if ( postFinder && !postFinder[ expando ] ) {
2344 postFinder = setMatcher( postFinder, postSelector );
2345 }
2346 return markFunction(function( seed, results, context, xml ) {
2347 var temp, i, elem,
2348 preMap = [],
2349 postMap = [],
2350 preexisting = results.length,
2351
2352 // Get initial elements from seed or context
2353 elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
2354
2355 // Prefilter to get matcher input, preserving a map for seed-results synchronization
2356 matcherIn = preFilter && ( seed || !selector ) ?
2357 condense( elems, preMap, preFilter, context, xml ) :
2358 elems,
2359
2360 matcherOut = matcher ?
2361 // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
2362 postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
2363
2364 // ...intermediate processing is necessary
2365 [] :
2366
2367 // ...otherwise use results directly
2368 results :
2369 matcherIn;
2370
2371 // Find primary matches
2372 if ( matcher ) {
2373 matcher( matcherIn, matcherOut, context, xml );
2374 }
2375
2376 // Apply postFilter
2377 if ( postFilter ) {
2378 temp = condense( matcherOut, postMap );
2379 postFilter( temp, [], context, xml );
2380
2381 // Un-match failing elements by moving them back to matcherIn
2382 i = temp.length;
2383 while ( i-- ) {
2384 if ( (elem = temp[i]) ) {
2385 matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
2386 }
2387 }
2388 }
2389
2390 if ( seed ) {
2391 if ( postFinder || preFilter ) {
2392 if ( postFinder ) {
2393 // Get the final matcherOut by condensing this intermediate into postFinder contexts
2394 temp = [];
2395 i = matcherOut.length;
2396 while ( i-- ) {
2397 if ( (elem = matcherOut[i]) ) {
2398 // Restore matcherIn since elem is not yet a final match
2399 temp.push( (matcherIn[i] = elem) );
2400 }
2401 }
2402 postFinder( null, (matcherOut = []), temp, xml );
2403 }
2404
2405 // Move matched elements from seed to results to keep them synchronized
2406 i = matcherOut.length;
2407 while ( i-- ) {
2408 if ( (elem = matcherOut[i]) &&
2409 (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
2410
2411 seed[temp] = !(results[temp] = elem);
2412 }
2413 }
2414 }
2415
2416 // Add elements to results, through postFinder if defined
2417 } else {
2418 matcherOut = condense(
2419 matcherOut === results ?
2420 matcherOut.splice( preexisting, matcherOut.length ) :
2421 matcherOut
2422 );
2423 if ( postFinder ) {
2424 postFinder( null, results, matcherOut, xml );
2425 } else {
2426 push.apply( results, matcherOut );
2427 }
2428 }
2429 });
2430}
2431
2432function matcherFromTokens( tokens ) {
2433 var checkContext, matcher, j,
2434 len = tokens.length,
2435 leadingRelative = Expr.relative[ tokens[0].type ],
2436 implicitRelative = leadingRelative || Expr.relative[" "],
2437 i = leadingRelative ? 1 : 0,
2438
2439 // The foundational matcher ensures that elements are reachable from top-level context(s)
2440 matchContext = addCombinator( function( elem ) {
2441 return elem === checkContext;
2442 }, implicitRelative, true ),
2443 matchAnyContext = addCombinator( function( elem ) {
2444 return indexOf( checkContext, elem ) > -1;
2445 }, implicitRelative, true ),
2446 matchers = [ function( elem, context, xml ) {
2447 var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
2448 (checkContext = context).nodeType ?
2449 matchContext( elem, context, xml ) :
2450 matchAnyContext( elem, context, xml ) );
2451 // Avoid hanging onto element (issue #299)
2452 checkContext = null;
2453 return ret;
2454 } ];
2455
2456 for ( ; i < len; i++ ) {
2457 if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
2458 matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
2459 } else {
2460 matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
2461
2462 // Return special upon seeing a positional matcher
2463 if ( matcher[ expando ] ) {
2464 // Find the next relative operator (if any) for proper handling
2465 j = ++i;
2466 for ( ; j < len; j++ ) {
2467 if ( Expr.relative[ tokens[j].type ] ) {
2468 break;
2469 }
2470 }
2471 return setMatcher(
2472 i > 1 && elementMatcher( matchers ),
2473 i > 1 && toSelector(
2474 // If the preceding token was a descendant combinator, insert an implicit any-element `*`
2475 tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
2476 ).replace( rtrim, "$1" ),
2477 matcher,
2478 i < j && matcherFromTokens( tokens.slice( i, j ) ),
2479 j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
2480 j < len && toSelector( tokens )
2481 );
2482 }
2483 matchers.push( matcher );
2484 }
2485 }
2486
2487 return elementMatcher( matchers );
2488}
2489
2490function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
2491 var bySet = setMatchers.length > 0,
2492 byElement = elementMatchers.length > 0,
2493 superMatcher = function( seed, context, xml, results, outermost ) {
2494 var elem, j, matcher,
2495 matchedCount = 0,
2496 i = "0",
2497 unmatched = seed && [],
2498 setMatched = [],
2499 contextBackup = outermostContext,
2500 // We must always have either seed elements or outermost context
2501 elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
2502 // Use integer dirruns iff this is the outermost matcher
2503 dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
2504 len = elems.length;
2505
2506 if ( outermost ) {
2507 outermostContext = context === document || context || outermost;
2508 }
2509
2510 // Add elements passing elementMatchers directly to results
2511 // Support: IE<9, Safari
2512 // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
2513 for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
2514 if ( byElement && elem ) {
2515 j = 0;
2516 if ( !context && elem.ownerDocument !== document ) {
2517 setDocument( elem );
2518 xml = !documentIsHTML;
2519 }
2520 while ( (matcher = elementMatchers[j++]) ) {
2521 if ( matcher( elem, context || document, xml) ) {
2522 results.push( elem );
2523 break;
2524 }
2525 }
2526 if ( outermost ) {
2527 dirruns = dirrunsUnique;
2528 }
2529 }
2530
2531 // Track unmatched elements for set filters
2532 if ( bySet ) {
2533 // They will have gone through all possible matchers
2534 if ( (elem = !matcher && elem) ) {
2535 matchedCount--;
2536 }
2537
2538 // Lengthen the array for every element, matched or not
2539 if ( seed ) {
2540 unmatched.push( elem );
2541 }
2542 }
2543 }
2544
2545 // `i` is now the count of elements visited above, and adding it to `matchedCount`
2546 // makes the latter nonnegative.
2547 matchedCount += i;
2548
2549 // Apply set filters to unmatched elements
2550 // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
2551 // equals `i`), unless we didn't visit _any_ elements in the above loop because we have
2552 // no element matchers and no seed.
2553 // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
2554 // case, which will result in a "00" `matchedCount` that differs from `i` but is also
2555 // numerically zero.
2556 if ( bySet && i !== matchedCount ) {
2557 j = 0;
2558 while ( (matcher = setMatchers[j++]) ) {
2559 matcher( unmatched, setMatched, context, xml );
2560 }
2561
2562 if ( seed ) {
2563 // Reintegrate element matches to eliminate the need for sorting
2564 if ( matchedCount > 0 ) {
2565 while ( i-- ) {
2566 if ( !(unmatched[i] || setMatched[i]) ) {
2567 setMatched[i] = pop.call( results );
2568 }
2569 }
2570 }
2571
2572 // Discard index placeholder values to get only actual matches
2573 setMatched = condense( setMatched );
2574 }
2575
2576 // Add matches to results
2577 push.apply( results, setMatched );
2578
2579 // Seedless set matches succeeding multiple successful matchers stipulate sorting
2580 if ( outermost && !seed && setMatched.length > 0 &&
2581 ( matchedCount + setMatchers.length ) > 1 ) {
2582
2583 Sizzle.uniqueSort( results );
2584 }
2585 }
2586
2587 // Override manipulation of globals by nested matchers
2588 if ( outermost ) {
2589 dirruns = dirrunsUnique;
2590 outermostContext = contextBackup;
2591 }
2592
2593 return unmatched;
2594 };
2595
2596 return bySet ?
2597 markFunction( superMatcher ) :
2598 superMatcher;
2599}
2600
2601compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
2602 var i,
2603 setMatchers = [],
2604 elementMatchers = [],
2605 cached = compilerCache[ selector + " " ];
2606
2607 if ( !cached ) {
2608 // Generate a function of recursive functions that can be used to check each element
2609 if ( !match ) {
2610 match = tokenize( selector );
2611 }
2612 i = match.length;
2613 while ( i-- ) {
2614 cached = matcherFromTokens( match[i] );
2615 if ( cached[ expando ] ) {
2616 setMatchers.push( cached );
2617 } else {
2618 elementMatchers.push( cached );
2619 }
2620 }
2621
2622 // Cache the compiled function
2623 cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
2624
2625 // Save selector and tokenization
2626 cached.selector = selector;
2627 }
2628 return cached;
2629};
2630
2631/**
2632 * A low-level selection function that works with Sizzle's compiled
2633 * selector functions
2634 * @param {String|Function} selector A selector or a pre-compiled
2635 * selector function built with Sizzle.compile
2636 * @param {Element} context
2637 * @param {Array} [results]
2638 * @param {Array} [seed] A set of elements to match against
2639 */
2640select = Sizzle.select = function( selector, context, results, seed ) {
2641 var i, tokens, token, type, find,
2642 compiled = typeof selector === "function" && selector,
2643 match = !seed && tokenize( (selector = compiled.selector || selector) );
2644
2645 results = results || [];
2646
2647 // Try to minimize operations if there is only one selector in the list and no seed
2648 // (the latter of which guarantees us context)
2649 if ( match.length === 1 ) {
2650
2651 // Reduce context if the leading compound selector is an ID
2652 tokens = match[0] = match[0].slice( 0 );
2653 if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
2654 context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {
2655
2656 context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
2657 if ( !context ) {
2658 return results;
2659
2660 // Precompiled matchers will still verify ancestry, so step up a level
2661 } else if ( compiled ) {
2662 context = context.parentNode;
2663 }
2664
2665 selector = selector.slice( tokens.shift().value.length );
2666 }
2667
2668 // Fetch a seed set for right-to-left matching
2669 i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
2670 while ( i-- ) {
2671 token = tokens[i];
2672
2673 // Abort if we hit a combinator
2674 if ( Expr.relative[ (type = token.type) ] ) {
2675 break;
2676 }
2677 if ( (find = Expr.find[ type ]) ) {
2678 // Search, expanding context for leading sibling combinators
2679 if ( (seed = find(
2680 token.matches[0].replace( runescape, funescape ),
2681 rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
2682 )) ) {
2683
2684 // If seed is empty or no tokens remain, we can return early
2685 tokens.splice( i, 1 );
2686 selector = seed.length && toSelector( tokens );
2687 if ( !selector ) {
2688 push.apply( results, seed );
2689 return results;
2690 }
2691
2692 break;
2693 }
2694 }
2695 }
2696 }
2697
2698 // Compile and execute a filtering function if one is not provided
2699 // Provide `match` to avoid retokenization if we modified the selector above
2700 ( compiled || compile( selector, match ) )(
2701 seed,
2702 context,
2703 !documentIsHTML,
2704 results,
2705 !context || rsibling.test( selector ) && testContext( context.parentNode ) || context
2706 );
2707 return results;
2708};
2709
2710// One-time assignments
2711
2712// Sort stability
2713support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
2714
2715// Support: Chrome 14-35+
2716// Always assume duplicates if they aren't passed to the comparison function
2717support.detectDuplicates = !!hasDuplicate;
2718
2719// Initialize against the default document
2720setDocument();
2721
2722// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
2723// Detached nodes confoundingly follow *each other*
2724support.sortDetached = assert(function( el ) {
2725 // Should return 1, but returns 4 (following)
2726 return el.compareDocumentPosition( document.createElement("fieldset") ) & 1;
2727});
2728
2729// Support: IE<8
2730// Prevent attribute/property "interpolation"
2731// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
2732if ( !assert(function( el ) {
2733 el.innerHTML = "<a href='#'></a>";
2734 return el.firstChild.getAttribute("href") === "#" ;
2735}) ) {
2736 addHandle( "type|href|height|width", function( elem, name, isXML ) {
2737 if ( !isXML ) {
2738 return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
2739 }
2740 });
2741}
2742
2743// Support: IE<9
2744// Use defaultValue in place of getAttribute("value")
2745if ( !support.attributes || !assert(function( el ) {
2746 el.innerHTML = "<input/>";
2747 el.firstChild.setAttribute( "value", "" );
2748 return el.firstChild.getAttribute( "value" ) === "";
2749}) ) {
2750 addHandle( "value", function( elem, name, isXML ) {
2751 if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
2752 return elem.defaultValue;
2753 }
2754 });
2755}
2756
2757// Support: IE<9
2758// Use getAttributeNode to fetch booleans when getAttribute lies
2759if ( !assert(function( el ) {
2760 return el.getAttribute("disabled") == null;
2761}) ) {
2762 addHandle( booleans, function( elem, name, isXML ) {
2763 var val;
2764 if ( !isXML ) {
2765 return elem[ name ] === true ? name.toLowerCase() :
2766 (val = elem.getAttributeNode( name )) && val.specified ?
2767 val.value :
2768 null;
2769 }
2770 });
2771}
2772
2773return Sizzle;
2774
2775})( window );
2776
2777
2778
2779jQuery.find = Sizzle;
2780jQuery.expr = Sizzle.selectors;
2781
2782// Deprecated
2783jQuery.expr[ ":" ] = jQuery.expr.pseudos;
2784jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
2785jQuery.text = Sizzle.getText;
2786jQuery.isXMLDoc = Sizzle.isXML;
2787jQuery.contains = Sizzle.contains;
2788jQuery.escapeSelector = Sizzle.escape;
2789
2790
2791
2792
2793var dir = function( elem, dir, until ) {
2794 var matched = [],
2795 truncate = until !== undefined;
2796
2797 while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
2798 if ( elem.nodeType === 1 ) {
2799 if ( truncate && jQuery( elem ).is( until ) ) {
2800 break;
2801 }
2802 matched.push( elem );
2803 }
2804 }
2805 return matched;
2806};
2807
2808
2809var siblings = function( n, elem ) {
2810 var matched = [];
2811
2812 for ( ; n; n = n.nextSibling ) {
2813 if ( n.nodeType === 1 && n !== elem ) {
2814 matched.push( n );
2815 }
2816 }
2817
2818 return matched;
2819};
2820
2821
2822var rneedsContext = jQuery.expr.match.needsContext;
2823
2824
2825
2826function nodeName( elem, name ) {
2827
2828 return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
2829
2830};
2831var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
2832
2833
2834
2835// Implement the identical functionality for filter and not
2836function winnow( elements, qualifier, not ) {
2837 if ( isFunction( qualifier ) ) {
2838 return jQuery.grep( elements, function( elem, i ) {
2839 return !!qualifier.call( elem, i, elem ) !== not;
2840 } );
2841 }
2842
2843 // Single element
2844 if ( qualifier.nodeType ) {
2845 return jQuery.grep( elements, function( elem ) {
2846 return ( elem === qualifier ) !== not;
2847 } );
2848 }
2849
2850 // Arraylike of elements (jQuery, arguments, Array)
2851 if ( typeof qualifier !== "string" ) {
2852 return jQuery.grep( elements, function( elem ) {
2853 return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
2854 } );
2855 }
2856
2857 // Filtered directly for both simple and complex selectors
2858 return jQuery.filter( qualifier, elements, not );
2859}
2860
2861jQuery.filter = function( expr, elems, not ) {
2862 var elem = elems[ 0 ];
2863
2864 if ( not ) {
2865 expr = ":not(" + expr + ")";
2866 }
2867
2868 if ( elems.length === 1 && elem.nodeType === 1 ) {
2869 return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
2870 }
2871
2872 return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
2873 return elem.nodeType === 1;
2874 } ) );
2875};
2876
2877jQuery.fn.extend( {
2878 find: function( selector ) {
2879 var i, ret,
2880 len = this.length,
2881 self = this;
2882
2883 if ( typeof selector !== "string" ) {
2884 return this.pushStack( jQuery( selector ).filter( function() {
2885 for ( i = 0; i < len; i++ ) {
2886 if ( jQuery.contains( self[ i ], this ) ) {
2887 return true;
2888 }
2889 }
2890 } ) );
2891 }
2892
2893 ret = this.pushStack( [] );
2894
2895 for ( i = 0; i < len; i++ ) {
2896 jQuery.find( selector, self[ i ], ret );
2897 }
2898
2899 return len > 1 ? jQuery.uniqueSort( ret ) : ret;
2900 },
2901 filter: function( selector ) {
2902 return this.pushStack( winnow( this, selector || [], false ) );
2903 },
2904 not: function( selector ) {
2905 return this.pushStack( winnow( this, selector || [], true ) );
2906 },
2907 is: function( selector ) {
2908 return !!winnow(
2909 this,
2910
2911 // If this is a positional/relative selector, check membership in the returned set
2912 // so $("p:first").is("p:last") won't return true for a doc with two "p".
2913 typeof selector === "string" && rneedsContext.test( selector ) ?
2914 jQuery( selector ) :
2915 selector || [],
2916 false
2917 ).length;
2918 }
2919} );
2920
2921
2922// Initialize a jQuery object
2923
2924
2925// A central reference to the root jQuery(document)
2926var rootjQuery,
2927
2928 // A simple way to check for HTML strings
2929 // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
2930 // Strict HTML recognition (#11290: must start with <)
2931 // Shortcut simple #id case for speed
2932 rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
2933
2934 init = jQuery.fn.init = function( selector, context, root ) {
2935 var match, elem;
2936
2937 // HANDLE: $(""), $(null), $(undefined), $(false)
2938 if ( !selector ) {
2939 return this;
2940 }
2941
2942 // Method init() accepts an alternate rootjQuery
2943 // so migrate can support jQuery.sub (gh-2101)
2944 root = root || rootjQuery;
2945
2946 // Handle HTML strings
2947 if ( typeof selector === "string" ) {
2948 if ( selector[ 0 ] === "<" &&
2949 selector[ selector.length - 1 ] === ">" &&
2950 selector.length >= 3 ) {
2951
2952 // Assume that strings that start and end with <> are HTML and skip the regex check
2953 match = [ null, selector, null ];
2954
2955 } else {
2956 match = rquickExpr.exec( selector );
2957 }
2958
2959 // Match html or make sure no context is specified for #id
2960 if ( match && ( match[ 1 ] || !context ) ) {
2961
2962 // HANDLE: $(html) -> $(array)
2963 if ( match[ 1 ] ) {
2964 context = context instanceof jQuery ? context[ 0 ] : context;
2965
2966 // Option to run scripts is true for back-compat
2967 // Intentionally let the error be thrown if parseHTML is not present
2968 jQuery.merge( this, jQuery.parseHTML(
2969 match[ 1 ],
2970 context && context.nodeType ? context.ownerDocument || context : document,
2971 true
2972 ) );
2973
2974 // HANDLE: $(html, props)
2975 if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
2976 for ( match in context ) {
2977
2978 // Properties of context are called as methods if possible
2979 if ( isFunction( this[ match ] ) ) {
2980 this[ match ]( context[ match ] );
2981
2982 // ...and otherwise set as attributes
2983 } else {
2984 this.attr( match, context[ match ] );
2985 }
2986 }
2987 }
2988
2989 return this;
2990
2991 // HANDLE: $(#id)
2992 } else {
2993 elem = document.getElementById( match[ 2 ] );
2994
2995 if ( elem ) {
2996
2997 // Inject the element directly into the jQuery object
2998 this[ 0 ] = elem;
2999 this.length = 1;
3000 }
3001 return this;
3002 }
3003
3004 // HANDLE: $(expr, $(...))
3005 } else if ( !context || context.jquery ) {
3006 return ( context || root ).find( selector );
3007
3008 // HANDLE: $(expr, context)
3009 // (which is just equivalent to: $(context).find(expr)
3010 } else {
3011 return this.constructor( context ).find( selector );
3012 }
3013
3014 // HANDLE: $(DOMElement)
3015 } else if ( selector.nodeType ) {
3016 this[ 0 ] = selector;
3017 this.length = 1;
3018 return this;
3019
3020 // HANDLE: $(function)
3021 // Shortcut for document ready
3022 } else if ( isFunction( selector ) ) {
3023 return root.ready !== undefined ?
3024 root.ready( selector ) :
3025
3026 // Execute immediately if ready is not present
3027 selector( jQuery );
3028 }
3029
3030 return jQuery.makeArray( selector, this );
3031 };
3032
3033// Give the init function the jQuery prototype for later instantiation
3034init.prototype = jQuery.fn;
3035
3036// Initialize central reference
3037rootjQuery = jQuery( document );
3038
3039
3040var rparentsprev = /^(?:parents|prev(?:Until|All))/,
3041
3042 // Methods guaranteed to produce a unique set when starting from a unique set
3043 guaranteedUnique = {
3044 children: true,
3045 contents: true,
3046 next: true,
3047 prev: true
3048 };
3049
3050jQuery.fn.extend( {
3051 has: function( target ) {
3052 var targets = jQuery( target, this ),
3053 l = targets.length;
3054
3055 return this.filter( function() {
3056 var i = 0;
3057 for ( ; i < l; i++ ) {
3058 if ( jQuery.contains( this, targets[ i ] ) ) {
3059 return true;
3060 }
3061 }
3062 } );
3063 },
3064
3065 closest: function( selectors, context ) {
3066 var cur,
3067 i = 0,
3068 l = this.length,
3069 matched = [],
3070 targets = typeof selectors !== "string" && jQuery( selectors );
3071
3072 // Positional selectors never match, since there's no _selection_ context
3073 if ( !rneedsContext.test( selectors ) ) {
3074 for ( ; i < l; i++ ) {
3075 for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
3076
3077 // Always skip document fragments
3078 if ( cur.nodeType < 11 && ( targets ?
3079 targets.index( cur ) > -1 :
3080
3081 // Don't pass non-elements to Sizzle
3082 cur.nodeType === 1 &&
3083 jQuery.find.matchesSelector( cur, selectors ) ) ) {
3084
3085 matched.push( cur );
3086 break;
3087 }
3088 }
3089 }
3090 }
3091
3092 return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
3093 },
3094
3095 // Determine the position of an element within the set
3096 index: function( elem ) {
3097
3098 // No argument, return index in parent
3099 if ( !elem ) {
3100 return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
3101 }
3102
3103 // Index in selector
3104 if ( typeof elem === "string" ) {
3105 return indexOf.call( jQuery( elem ), this[ 0 ] );
3106 }
3107
3108 // Locate the position of the desired element
3109 return indexOf.call( this,
3110
3111 // If it receives a jQuery object, the first element is used
3112 elem.jquery ? elem[ 0 ] : elem
3113 );
3114 },
3115
3116 add: function( selector, context ) {
3117 return this.pushStack(
3118 jQuery.uniqueSort(
3119 jQuery.merge( this.get(), jQuery( selector, context ) )
3120 )
3121 );
3122 },
3123
3124 addBack: function( selector ) {
3125 return this.add( selector == null ?
3126 this.prevObject : this.prevObject.filter( selector )
3127 );
3128 }
3129} );
3130
3131function sibling( cur, dir ) {
3132 while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
3133 return cur;
3134}
3135
3136jQuery.each( {
3137 parent: function( elem ) {
3138 var parent = elem.parentNode;
3139 return parent && parent.nodeType !== 11 ? parent : null;
3140 },
3141 parents: function( elem ) {
3142 return dir( elem, "parentNode" );
3143 },
3144 parentsUntil: function( elem, i, until ) {
3145 return dir( elem, "parentNode", until );
3146 },
3147 next: function( elem ) {
3148 return sibling( elem, "nextSibling" );
3149 },
3150 prev: function( elem ) {
3151 return sibling( elem, "previousSibling" );
3152 },
3153 nextAll: function( elem ) {
3154 return dir( elem, "nextSibling" );
3155 },
3156 prevAll: function( elem ) {
3157 return dir( elem, "previousSibling" );
3158 },
3159 nextUntil: function( elem, i, until ) {
3160 return dir( elem, "nextSibling", until );
3161 },
3162 prevUntil: function( elem, i, until ) {
3163 return dir( elem, "previousSibling", until );
3164 },
3165 siblings: function( elem ) {
3166 return siblings( ( elem.parentNode || {} ).firstChild, elem );
3167 },
3168 children: function( elem ) {
3169 return siblings( elem.firstChild );
3170 },
3171 contents: function( elem ) {
3172 if ( typeof elem.contentDocument !== "undefined" ) {
3173 return elem.contentDocument;
3174 }
3175
3176 // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
3177 // Treat the template element as a regular one in browsers that
3178 // don't support it.
3179 if ( nodeName( elem, "template" ) ) {
3180 elem = elem.content || elem;
3181 }
3182
3183 return jQuery.merge( [], elem.childNodes );
3184 }
3185}, function( name, fn ) {
3186 jQuery.fn[ name ] = function( until, selector ) {
3187 var matched = jQuery.map( this, fn, until );
3188
3189 if ( name.slice( -5 ) !== "Until" ) {
3190 selector = until;
3191 }
3192
3193 if ( selector && typeof selector === "string" ) {
3194 matched = jQuery.filter( selector, matched );
3195 }
3196
3197 if ( this.length > 1 ) {
3198
3199 // Remove duplicates
3200 if ( !guaranteedUnique[ name ] ) {
3201 jQuery.uniqueSort( matched );
3202 }
3203
3204 // Reverse order for parents* and prev-derivatives
3205 if ( rparentsprev.test( name ) ) {
3206 matched.reverse();
3207 }
3208 }
3209
3210 return this.pushStack( matched );
3211 };
3212} );
3213var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g );
3214
3215
3216
3217// Convert String-formatted options into Object-formatted ones
3218function createOptions( options ) {
3219 var object = {};
3220 jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
3221 object[ flag ] = true;
3222 } );
3223 return object;
3224}
3225
3226/*
3227 * Create a callback list using the following parameters:
3228 *
3229 * options: an optional list of space-separated options that will change how
3230 * the callback list behaves or a more traditional option object
3231 *
3232 * By default a callback list will act like an event callback list and can be
3233 * "fired" multiple times.
3234 *
3235 * Possible options:
3236 *
3237 * once: will ensure the callback list can only be fired once (like a Deferred)
3238 *
3239 * memory: will keep track of previous values and will call any callback added
3240 * after the list has been fired right away with the latest "memorized"
3241 * values (like a Deferred)
3242 *
3243 * unique: will ensure a callback can only be added once (no duplicate in the list)
3244 *
3245 * stopOnFalse: interrupt callings when a callback returns false
3246 *
3247 */
3248jQuery.Callbacks = function( options ) {
3249
3250 // Convert options from String-formatted to Object-formatted if needed
3251 // (we check in cache first)
3252 options = typeof options === "string" ?
3253 createOptions( options ) :
3254 jQuery.extend( {}, options );
3255
3256 var // Flag to know if list is currently firing
3257 firing,
3258
3259 // Last fire value for non-forgettable lists
3260 memory,
3261
3262 // Flag to know if list was already fired
3263 fired,
3264
3265 // Flag to prevent firing
3266 locked,
3267
3268 // Actual callback list
3269 list = [],
3270
3271 // Queue of execution data for repeatable lists
3272 queue = [],
3273
3274 // Index of currently firing callback (modified by add/remove as needed)
3275 firingIndex = -1,
3276
3277 // Fire callbacks
3278 fire = function() {
3279
3280 // Enforce single-firing
3281 locked = locked || options.once;
3282
3283 // Execute callbacks for all pending executions,
3284 // respecting firingIndex overrides and runtime changes
3285 fired = firing = true;
3286 for ( ; queue.length; firingIndex = -1 ) {
3287 memory = queue.shift();
3288 while ( ++firingIndex < list.length ) {
3289
3290 // Run callback and check for early termination
3291 if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
3292 options.stopOnFalse ) {
3293
3294 // Jump to end and forget the data so .add doesn't re-fire
3295 firingIndex = list.length;
3296 memory = false;
3297 }
3298 }
3299 }
3300
3301 // Forget the data if we're done with it
3302 if ( !options.memory ) {
3303 memory = false;
3304 }
3305
3306 firing = false;
3307
3308 // Clean up if we're done firing for good
3309 if ( locked ) {
3310
3311 // Keep an empty list if we have data for future add calls
3312 if ( memory ) {
3313 list = [];
3314
3315 // Otherwise, this object is spent
3316 } else {
3317 list = "";
3318 }
3319 }
3320 },
3321
3322 // Actual Callbacks object
3323 self = {
3324
3325 // Add a callback or a collection of callbacks to the list
3326 add: function() {
3327 if ( list ) {
3328
3329 // If we have memory from a past run, we should fire after adding
3330 if ( memory && !firing ) {
3331 firingIndex = list.length - 1;
3332 queue.push( memory );
3333 }
3334
3335 ( function add( args ) {
3336 jQuery.each( args, function( _, arg ) {
3337 if ( isFunction( arg ) ) {
3338 if ( !options.unique || !self.has( arg ) ) {
3339 list.push( arg );
3340 }
3341 } else if ( arg && arg.length && toType( arg ) !== "string" ) {
3342
3343 // Inspect recursively
3344 add( arg );
3345 }
3346 } );
3347 } )( arguments );
3348
3349 if ( memory && !firing ) {
3350 fire();
3351 }
3352 }
3353 return this;
3354 },
3355
3356 // Remove a callback from the list
3357 remove: function() {
3358 jQuery.each( arguments, function( _, arg ) {
3359 var index;
3360 while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
3361 list.splice( index, 1 );
3362
3363 // Handle firing indexes
3364 if ( index <= firingIndex ) {
3365 firingIndex--;
3366 }
3367 }
3368 } );
3369 return this;
3370 },
3371
3372 // Check if a given callback is in the list.
3373 // If no argument is given, return whether or not list has callbacks attached.
3374 has: function( fn ) {
3375 return fn ?
3376 jQuery.inArray( fn, list ) > -1 :
3377 list.length > 0;
3378 },
3379
3380 // Remove all callbacks from the list
3381 empty: function() {
3382 if ( list ) {
3383 list = [];
3384 }
3385 return this;
3386 },
3387
3388 // Disable .fire and .add
3389 // Abort any current/pending executions
3390 // Clear all callbacks and values
3391 disable: function() {
3392 locked = queue = [];
3393 list = memory = "";
3394 return this;
3395 },
3396 disabled: function() {
3397 return !list;
3398 },
3399
3400 // Disable .fire
3401 // Also disable .add unless we have memory (since it would have no effect)
3402 // Abort any pending executions
3403 lock: function() {
3404 locked = queue = [];
3405 if ( !memory && !firing ) {
3406 list = memory = "";
3407 }
3408 return this;
3409 },
3410 locked: function() {
3411 return !!locked;
3412 },
3413
3414 // Call all callbacks with the given context and arguments
3415 fireWith: function( context, args ) {
3416 if ( !locked ) {
3417 args = args || [];
3418 args = [ context, args.slice ? args.slice() : args ];
3419 queue.push( args );
3420 if ( !firing ) {
3421 fire();
3422 }
3423 }
3424 return this;
3425 },
3426
3427 // Call all the callbacks with the given arguments
3428 fire: function() {
3429 self.fireWith( this, arguments );
3430 return this;
3431 },
3432
3433 // To know if the callbacks have already been called at least once
3434 fired: function() {
3435 return !!fired;
3436 }
3437 };
3438
3439 return self;
3440};
3441
3442
3443function Identity( v ) {
3444 return v;
3445}
3446function Thrower( ex ) {
3447 throw ex;
3448}
3449
3450function adoptValue( value, resolve, reject, noValue ) {
3451 var method;
3452
3453 try {
3454
3455 // Check for promise aspect first to privilege synchronous behavior
3456 if ( value && isFunction( ( method = value.promise ) ) ) {
3457 method.call( value ).done( resolve ).fail( reject );
3458
3459 // Other thenables
3460 } else if ( value && isFunction( ( method = value.then ) ) ) {
3461 method.call( value, resolve, reject );
3462
3463 // Other non-thenables
3464 } else {
3465
3466 // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:
3467 // * false: [ value ].slice( 0 ) => resolve( value )
3468 // * true: [ value ].slice( 1 ) => resolve()
3469 resolve.apply( undefined, [ value ].slice( noValue ) );
3470 }
3471
3472 // For Promises/A+, convert exceptions into rejections
3473 // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
3474 // Deferred#then to conditionally suppress rejection.
3475 } catch ( value ) {
3476
3477 // Support: Android 4.0 only
3478 // Strict mode functions invoked without .call/.apply get global-object context
3479 reject.apply( undefined, [ value ] );
3480 }
3481}
3482
3483jQuery.extend( {
3484
3485 Deferred: function( func ) {
3486 var tuples = [
3487
3488 // action, add listener, callbacks,
3489 // ... .then handlers, argument index, [final state]
3490 [ "notify", "progress", jQuery.Callbacks( "memory" ),
3491 jQuery.Callbacks( "memory" ), 2 ],
3492 [ "resolve", "done", jQuery.Callbacks( "once memory" ),
3493 jQuery.Callbacks( "once memory" ), 0, "resolved" ],
3494 [ "reject", "fail", jQuery.Callbacks( "once memory" ),
3495 jQuery.Callbacks( "once memory" ), 1, "rejected" ]
3496 ],
3497 state = "pending",
3498 promise = {
3499 state: function() {
3500 return state;
3501 },
3502 always: function() {
3503 deferred.done( arguments ).fail( arguments );
3504 return this;
3505 },
3506 "catch": function( fn ) {
3507 return promise.then( null, fn );
3508 },
3509
3510 // Keep pipe for back-compat
3511 pipe: function( /* fnDone, fnFail, fnProgress */ ) {
3512 var fns = arguments;
3513
3514 return jQuery.Deferred( function( newDefer ) {
3515 jQuery.each( tuples, function( i, tuple ) {
3516
3517 // Map tuples (progress, done, fail) to arguments (done, fail, progress)
3518 var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
3519
3520 // deferred.progress(function() { bind to newDefer or newDefer.notify })
3521 // deferred.done(function() { bind to newDefer or newDefer.resolve })
3522 // deferred.fail(function() { bind to newDefer or newDefer.reject })
3523 deferred[ tuple[ 1 ] ]( function() {
3524 var returned = fn && fn.apply( this, arguments );
3525 if ( returned && isFunction( returned.promise ) ) {
3526 returned.promise()
3527 .progress( newDefer.notify )
3528 .done( newDefer.resolve )
3529 .fail( newDefer.reject );
3530 } else {
3531 newDefer[ tuple[ 0 ] + "With" ](
3532 this,
3533 fn ? [ returned ] : arguments
3534 );
3535 }
3536 } );
3537 } );
3538 fns = null;
3539 } ).promise();
3540 },
3541 then: function( onFulfilled, onRejected, onProgress ) {
3542 var maxDepth = 0;
3543 function resolve( depth, deferred, handler, special ) {
3544 return function() {
3545 var that = this,
3546 args = arguments,
3547 mightThrow = function() {
3548 var returned, then;
3549
3550 // Support: Promises/A+ section 2.3.3.3.3
3551 // https://promisesaplus.com/#point-59
3552 // Ignore double-resolution attempts
3553 if ( depth < maxDepth ) {
3554 return;
3555 }
3556
3557 returned = handler.apply( that, args );
3558
3559 // Support: Promises/A+ section 2.3.1
3560 // https://promisesaplus.com/#point-48
3561 if ( returned === deferred.promise() ) {
3562 throw new TypeError( "Thenable self-resolution" );
3563 }
3564
3565 // Support: Promises/A+ sections 2.3.3.1, 3.5
3566 // https://promisesaplus.com/#point-54
3567 // https://promisesaplus.com/#point-75
3568 // Retrieve `then` only once
3569 then = returned &&
3570
3571 // Support: Promises/A+ section 2.3.4
3572 // https://promisesaplus.com/#point-64
3573 // Only check objects and functions for thenability
3574 ( typeof returned === "object" ||
3575 typeof returned === "function" ) &&
3576 returned.then;
3577
3578 // Handle a returned thenable
3579 if ( isFunction( then ) ) {
3580
3581 // Special processors (notify) just wait for resolution
3582 if ( special ) {
3583 then.call(
3584 returned,
3585 resolve( maxDepth, deferred, Identity, special ),
3586 resolve( maxDepth, deferred, Thrower, special )
3587 );
3588
3589 // Normal processors (resolve) also hook into progress
3590 } else {
3591
3592 // ...and disregard older resolution values
3593 maxDepth++;
3594
3595 then.call(
3596 returned,
3597 resolve( maxDepth, deferred, Identity, special ),
3598 resolve( maxDepth, deferred, Thrower, special ),
3599 resolve( maxDepth, deferred, Identity,
3600 deferred.notifyWith )
3601 );
3602 }
3603
3604 // Handle all other returned values
3605 } else {
3606
3607 // Only substitute handlers pass on context
3608 // and multiple values (non-spec behavior)
3609 if ( handler !== Identity ) {
3610 that = undefined;
3611 args = [ returned ];
3612 }
3613
3614 // Process the value(s)
3615 // Default process is resolve
3616 ( special || deferred.resolveWith )( that, args );
3617 }
3618 },
3619
3620 // Only normal processors (resolve) catch and reject exceptions
3621 process = special ?
3622 mightThrow :
3623 function() {
3624 try {
3625 mightThrow();
3626 } catch ( e ) {
3627
3628 if ( jQuery.Deferred.exceptionHook ) {
3629 jQuery.Deferred.exceptionHook( e,
3630 process.stackTrace );
3631 }
3632
3633 // Support: Promises/A+ section 2.3.3.3.4.1
3634 // https://promisesaplus.com/#point-61
3635 // Ignore post-resolution exceptions
3636 if ( depth + 1 >= maxDepth ) {
3637
3638 // Only substitute handlers pass on context
3639 // and multiple values (non-spec behavior)
3640 if ( handler !== Thrower ) {
3641 that = undefined;
3642 args = [ e ];
3643 }
3644
3645 deferred.rejectWith( that, args );
3646 }
3647 }
3648 };
3649
3650 // Support: Promises/A+ section 2.3.3.3.1
3651 // https://promisesaplus.com/#point-57
3652 // Re-resolve promises immediately to dodge false rejection from
3653 // subsequent errors
3654 if ( depth ) {
3655 process();
3656 } else {
3657
3658 // Call an optional hook to record the stack, in case of exception
3659 // since it's otherwise lost when execution goes async
3660 if ( jQuery.Deferred.getStackHook ) {
3661 process.stackTrace = jQuery.Deferred.getStackHook();
3662 }
3663 window.setTimeout( process );
3664 }
3665 };
3666 }
3667
3668 return jQuery.Deferred( function( newDefer ) {
3669
3670 // progress_handlers.add( ... )
3671 tuples[ 0 ][ 3 ].add(
3672 resolve(
3673 0,
3674 newDefer,
3675 isFunction( onProgress ) ?
3676 onProgress :
3677 Identity,
3678 newDefer.notifyWith
3679 )
3680 );
3681
3682 // fulfilled_handlers.add( ... )
3683 tuples[ 1 ][ 3 ].add(
3684 resolve(
3685 0,
3686 newDefer,
3687 isFunction( onFulfilled ) ?
3688 onFulfilled :
3689 Identity
3690 )
3691 );
3692
3693 // rejected_handlers.add( ... )
3694 tuples[ 2 ][ 3 ].add(
3695 resolve(
3696 0,
3697 newDefer,
3698 isFunction( onRejected ) ?
3699 onRejected :
3700 Thrower
3701 )
3702 );
3703 } ).promise();
3704 },
3705
3706 // Get a promise for this deferred
3707 // If obj is provided, the promise aspect is added to the object
3708 promise: function( obj ) {
3709 return obj != null ? jQuery.extend( obj, promise ) : promise;
3710 }
3711 },
3712 deferred = {};
3713
3714 // Add list-specific methods
3715 jQuery.each( tuples, function( i, tuple ) {
3716 var list = tuple[ 2 ],
3717 stateString = tuple[ 5 ];
3718
3719 // promise.progress = list.add
3720 // promise.done = list.add
3721 // promise.fail = list.add
3722 promise[ tuple[ 1 ] ] = list.add;
3723
3724 // Handle state
3725 if ( stateString ) {
3726 list.add(
3727 function() {
3728
3729 // state = "resolved" (i.e., fulfilled)
3730 // state = "rejected"
3731 state = stateString;
3732 },
3733
3734 // rejected_callbacks.disable
3735 // fulfilled_callbacks.disable
3736 tuples[ 3 - i ][ 2 ].disable,
3737
3738 // rejected_handlers.disable
3739 // fulfilled_handlers.disable
3740 tuples[ 3 - i ][ 3 ].disable,
3741
3742 // progress_callbacks.lock
3743 tuples[ 0 ][ 2 ].lock,
3744
3745 // progress_handlers.lock
3746 tuples[ 0 ][ 3 ].lock
3747 );
3748 }
3749
3750 // progress_handlers.fire
3751 // fulfilled_handlers.fire
3752 // rejected_handlers.fire
3753 list.add( tuple[ 3 ].fire );
3754
3755 // deferred.notify = function() { deferred.notifyWith(...) }
3756 // deferred.resolve = function() { deferred.resolveWith(...) }
3757 // deferred.reject = function() { deferred.rejectWith(...) }
3758 deferred[ tuple[ 0 ] ] = function() {
3759 deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
3760 return this;
3761 };
3762
3763 // deferred.notifyWith = list.fireWith
3764 // deferred.resolveWith = list.fireWith
3765 // deferred.rejectWith = list.fireWith
3766 deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
3767 } );
3768
3769 // Make the deferred a promise
3770 promise.promise( deferred );
3771
3772 // Call given func if any
3773 if ( func ) {
3774 func.call( deferred, deferred );
3775 }
3776
3777 // All done!
3778 return deferred;
3779 },
3780
3781 // Deferred helper
3782 when: function( singleValue ) {
3783 var
3784
3785 // count of uncompleted subordinates
3786 remaining = arguments.length,
3787
3788 // count of unprocessed arguments
3789 i = remaining,
3790
3791 // subordinate fulfillment data
3792 resolveContexts = Array( i ),
3793 resolveValues = slice.call( arguments ),
3794
3795 // the master Deferred
3796 master = jQuery.Deferred(),
3797
3798 // subordinate callback factory
3799 updateFunc = function( i ) {
3800 return function( value ) {
3801 resolveContexts[ i ] = this;
3802 resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
3803 if ( !( --remaining ) ) {
3804 master.resolveWith( resolveContexts, resolveValues );
3805 }
3806 };
3807 };
3808
3809 // Single- and empty arguments are adopted like Promise.resolve
3810 if ( remaining <= 1 ) {
3811 adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,
3812 !remaining );
3813
3814 // Use .then() to unwrap secondary thenables (cf. gh-3000)
3815 if ( master.state() === "pending" ||
3816 isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
3817
3818 return master.then();
3819 }
3820 }
3821
3822 // Multiple arguments are aggregated like Promise.all array elements
3823 while ( i-- ) {
3824 adoptValue( resolveValues[ i ], updateFunc( i ), master.reject );
3825 }
3826
3827 return master.promise();
3828 }
3829} );
3830
3831
3832// These usually indicate a programmer mistake during development,
3833// warn about them ASAP rather than swallowing them by default.
3834var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
3835
3836jQuery.Deferred.exceptionHook = function( error, stack ) {
3837
3838 // Support: IE 8 - 9 only
3839 // Console exists when dev tools are open, which can happen at any time
3840 if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
3841 window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
3842 }
3843};
3844
3845
3846
3847
3848jQuery.readyException = function( error ) {
3849 window.setTimeout( function() {
3850 throw error;
3851 } );
3852};
3853
3854
3855
3856
3857// The deferred used on DOM ready
3858var readyList = jQuery.Deferred();
3859
3860jQuery.fn.ready = function( fn ) {
3861
3862 readyList
3863 .then( fn )
3864
3865 // Wrap jQuery.readyException in a function so that the lookup
3866 // happens at the time of error handling instead of callback
3867 // registration.
3868 .catch( function( error ) {
3869 jQuery.readyException( error );
3870 } );
3871
3872 return this;
3873};
3874
3875jQuery.extend( {
3876
3877 // Is the DOM ready to be used? Set to true once it occurs.
3878 isReady: false,
3879
3880 // A counter to track how many items to wait for before
3881 // the ready event fires. See #6781
3882 readyWait: 1,
3883
3884 // Handle when the DOM is ready
3885 ready: function( wait ) {
3886
3887 // Abort if there are pending holds or we're already ready
3888 if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
3889 return;
3890 }
3891
3892 // Remember that the DOM is ready
3893 jQuery.isReady = true;
3894
3895 // If a normal DOM Ready event fired, decrement, and wait if need be
3896 if ( wait !== true && --jQuery.readyWait > 0 ) {
3897 return;
3898 }
3899
3900 // If there are functions bound, to execute
3901 readyList.resolveWith( document, [ jQuery ] );
3902 }
3903} );
3904
3905jQuery.ready.then = readyList.then;
3906
3907// The ready event handler and self cleanup method
3908function completed() {
3909 document.removeEventListener( "DOMContentLoaded", completed );
3910 window.removeEventListener( "load", completed );
3911 jQuery.ready();
3912}
3913
3914// Catch cases where $(document).ready() is called
3915// after the browser event has already occurred.
3916// Support: IE <=9 - 10 only
3917// Older IE sometimes signals "interactive" too soon
3918if ( document.readyState === "complete" ||
3919 ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
3920
3921 // Handle it asynchronously to allow scripts the opportunity to delay ready
3922 window.setTimeout( jQuery.ready );
3923
3924} else {
3925
3926 // Use the handy event callback
3927 document.addEventListener( "DOMContentLoaded", completed );
3928
3929 // A fallback to window.onload, that will always work
3930 window.addEventListener( "load", completed );
3931}
3932
3933
3934
3935
3936// Multifunctional method to get and set values of a collection
3937// The value/s can optionally be executed if it's a function
3938var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
3939 var i = 0,
3940 len = elems.length,
3941 bulk = key == null;
3942
3943 // Sets many values
3944 if ( toType( key ) === "object" ) {
3945 chainable = true;
3946 for ( i in key ) {
3947 access( elems, fn, i, key[ i ], true, emptyGet, raw );
3948 }
3949
3950 // Sets one value
3951 } else if ( value !== undefined ) {
3952 chainable = true;
3953
3954 if ( !isFunction( value ) ) {
3955 raw = true;
3956 }
3957
3958 if ( bulk ) {
3959
3960 // Bulk operations run against the entire set
3961 if ( raw ) {
3962 fn.call( elems, value );
3963 fn = null;
3964
3965 // ...except when executing function values
3966 } else {
3967 bulk = fn;
3968 fn = function( elem, key, value ) {
3969 return bulk.call( jQuery( elem ), value );
3970 };
3971 }
3972 }
3973
3974 if ( fn ) {
3975 for ( ; i < len; i++ ) {
3976 fn(
3977 elems[ i ], key, raw ?
3978 value :
3979 value.call( elems[ i ], i, fn( elems[ i ], key ) )
3980 );
3981 }
3982 }
3983 }
3984
3985 if ( chainable ) {
3986 return elems;
3987 }
3988
3989 // Gets
3990 if ( bulk ) {
3991 return fn.call( elems );
3992 }
3993
3994 return len ? fn( elems[ 0 ], key ) : emptyGet;
3995};
3996
3997
3998// Matches dashed string for camelizing
3999var rmsPrefix = /^-ms-/,
4000 rdashAlpha = /-([a-z])/g;
4001
4002// Used by camelCase as callback to replace()
4003function fcamelCase( all, letter ) {
4004 return letter.toUpperCase();
4005}
4006
4007// Convert dashed to camelCase; used by the css and data modules
4008// Support: IE <=9 - 11, Edge 12 - 15
4009// Microsoft forgot to hump their vendor prefix (#9572)
4010function camelCase( string ) {
4011 return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
4012}
4013var acceptData = function( owner ) {
4014
4015 // Accepts only:
4016 // - Node
4017 // - Node.ELEMENT_NODE
4018 // - Node.DOCUMENT_NODE
4019 // - Object
4020 // - Any
4021 return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
4022};
4023
4024
4025
4026
4027function Data() {
4028 this.expando = jQuery.expando + Data.uid++;
4029}
4030
4031Data.uid = 1;
4032
4033Data.prototype = {
4034
4035 cache: function( owner ) {
4036
4037 // Check if the owner object already has a cache
4038 var value = owner[ this.expando ];
4039
4040 // If not, create one
4041 if ( !value ) {
4042 value = {};
4043
4044 // We can accept data for non-element nodes in modern browsers,
4045 // but we should not, see #8335.
4046 // Always return an empty object.
4047 if ( acceptData( owner ) ) {
4048
4049 // If it is a node unlikely to be stringify-ed or looped over
4050 // use plain assignment
4051 if ( owner.nodeType ) {
4052 owner[ this.expando ] = value;
4053
4054 // Otherwise secure it in a non-enumerable property
4055 // configurable must be true to allow the property to be
4056 // deleted when data is removed
4057 } else {
4058 Object.defineProperty( owner, this.expando, {
4059 value: value,
4060 configurable: true
4061 } );
4062 }
4063 }
4064 }
4065
4066 return value;
4067 },
4068 set: function( owner, data, value ) {
4069 var prop,
4070 cache = this.cache( owner );
4071
4072 // Handle: [ owner, key, value ] args
4073 // Always use camelCase key (gh-2257)
4074 if ( typeof data === "string" ) {
4075 cache[ camelCase( data ) ] = value;
4076
4077 // Handle: [ owner, { properties } ] args
4078 } else {
4079
4080 // Copy the properties one-by-one to the cache object
4081 for ( prop in data ) {
4082 cache[ camelCase( prop ) ] = data[ prop ];
4083 }
4084 }
4085 return cache;
4086 },
4087 get: function( owner, key ) {
4088 return key === undefined ?
4089 this.cache( owner ) :
4090
4091 // Always use camelCase key (gh-2257)
4092 owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];
4093 },
4094 access: function( owner, key, value ) {
4095
4096 // In cases where either:
4097 //
4098 // 1. No key was specified
4099 // 2. A string key was specified, but no value provided
4100 //
4101 // Take the "read" path and allow the get method to determine
4102 // which value to return, respectively either:
4103 //
4104 // 1. The entire cache object
4105 // 2. The data stored at the key
4106 //
4107 if ( key === undefined ||
4108 ( ( key && typeof key === "string" ) && value === undefined ) ) {
4109
4110 return this.get( owner, key );
4111 }
4112
4113 // When the key is not a string, or both a key and value
4114 // are specified, set or extend (existing objects) with either:
4115 //
4116 // 1. An object of properties
4117 // 2. A key and value
4118 //
4119 this.set( owner, key, value );
4120
4121 // Since the "set" path can have two possible entry points
4122 // return the expected data based on which path was taken[*]
4123 return value !== undefined ? value : key;
4124 },
4125 remove: function( owner, key ) {
4126 var i,
4127 cache = owner[ this.expando ];
4128
4129 if ( cache === undefined ) {
4130 return;
4131 }
4132
4133 if ( key !== undefined ) {
4134
4135 // Support array or space separated string of keys
4136 if ( Array.isArray( key ) ) {
4137
4138 // If key is an array of keys...
4139 // We always set camelCase keys, so remove that.
4140 key = key.map( camelCase );
4141 } else {
4142 key = camelCase( key );
4143
4144 // If a key with the spaces exists, use it.
4145 // Otherwise, create an array by matching non-whitespace
4146 key = key in cache ?
4147 [ key ] :
4148 ( key.match( rnothtmlwhite ) || [] );
4149 }
4150
4151 i = key.length;
4152
4153 while ( i-- ) {
4154 delete cache[ key[ i ] ];
4155 }
4156 }
4157
4158 // Remove the expando if there's no more data
4159 if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
4160
4161 // Support: Chrome <=35 - 45
4162 // Webkit & Blink performance suffers when deleting properties
4163 // from DOM nodes, so set to undefined instead
4164 // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
4165 if ( owner.nodeType ) {
4166 owner[ this.expando ] = undefined;
4167 } else {
4168 delete owner[ this.expando ];
4169 }
4170 }
4171 },
4172 hasData: function( owner ) {
4173 var cache = owner[ this.expando ];
4174 return cache !== undefined && !jQuery.isEmptyObject( cache );
4175 }
4176};
4177var dataPriv = new Data();
4178
4179var dataUser = new Data();
4180
4181
4182
4183// Implementation Summary
4184//
4185// 1. Enforce API surface and semantic compatibility with 1.9.x branch
4186// 2. Improve the module's maintainability by reducing the storage
4187// paths to a single mechanism.
4188// 3. Use the same single mechanism to support "private" and "user" data.
4189// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
4190// 5. Avoid exposing implementation details on user objects (eg. expando properties)
4191// 6. Provide a clear path for implementation upgrade to WeakMap in 2014
4192
4193var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
4194 rmultiDash = /[A-Z]/g;
4195
4196function getData( data ) {
4197 if ( data === "true" ) {
4198 return true;
4199 }
4200
4201 if ( data === "false" ) {
4202 return false;
4203 }
4204
4205 if ( data === "null" ) {
4206 return null;
4207 }
4208
4209 // Only convert to a number if it doesn't change the string
4210 if ( data === +data + "" ) {
4211 return +data;
4212 }
4213
4214 if ( rbrace.test( data ) ) {
4215 return JSON.parse( data );
4216 }
4217
4218 return data;
4219}
4220
4221function dataAttr( elem, key, data ) {
4222 var name;
4223
4224 // If nothing was found internally, try to fetch any
4225 // data from the HTML5 data-* attribute
4226 if ( data === undefined && elem.nodeType === 1 ) {
4227 name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
4228 data = elem.getAttribute( name );
4229
4230 if ( typeof data === "string" ) {
4231 try {
4232 data = getData( data );
4233 } catch ( e ) {}
4234
4235 // Make sure we set the data so it isn't changed later
4236 dataUser.set( elem, key, data );
4237 } else {
4238 data = undefined;
4239 }
4240 }
4241 return data;
4242}
4243
4244jQuery.extend( {
4245 hasData: function( elem ) {
4246 return dataUser.hasData( elem ) || dataPriv.hasData( elem );
4247 },
4248
4249 data: function( elem, name, data ) {
4250 return dataUser.access( elem, name, data );
4251 },
4252
4253 removeData: function( elem, name ) {
4254 dataUser.remove( elem, name );
4255 },
4256
4257 // TODO: Now that all calls to _data and _removeData have been replaced
4258 // with direct calls to dataPriv methods, these can be deprecated.
4259 _data: function( elem, name, data ) {
4260 return dataPriv.access( elem, name, data );
4261 },
4262
4263 _removeData: function( elem, name ) {
4264 dataPriv.remove( elem, name );
4265 }
4266} );
4267
4268jQuery.fn.extend( {
4269 data: function( key, value ) {
4270 var i, name, data,
4271 elem = this[ 0 ],
4272 attrs = elem && elem.attributes;
4273
4274 // Gets all values
4275 if ( key === undefined ) {
4276 if ( this.length ) {
4277 data = dataUser.get( elem );
4278
4279 if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
4280 i = attrs.length;
4281 while ( i-- ) {
4282
4283 // Support: IE 11 only
4284 // The attrs elements can be null (#14894)
4285 if ( attrs[ i ] ) {
4286 name = attrs[ i ].name;
4287 if ( name.indexOf( "data-" ) === 0 ) {
4288 name = camelCase( name.slice( 5 ) );
4289 dataAttr( elem, name, data[ name ] );
4290 }
4291 }
4292 }
4293 dataPriv.set( elem, "hasDataAttrs", true );
4294 }
4295 }
4296
4297 return data;
4298 }
4299
4300 // Sets multiple values
4301 if ( typeof key === "object" ) {
4302 return this.each( function() {
4303 dataUser.set( this, key );
4304 } );
4305 }
4306
4307 return access( this, function( value ) {
4308 var data;
4309
4310 // The calling jQuery object (element matches) is not empty
4311 // (and therefore has an element appears at this[ 0 ]) and the
4312 // `value` parameter was not undefined. An empty jQuery object
4313 // will result in `undefined` for elem = this[ 0 ] which will
4314 // throw an exception if an attempt to read a data cache is made.
4315 if ( elem && value === undefined ) {
4316
4317 // Attempt to get data from the cache
4318 // The key will always be camelCased in Data
4319 data = dataUser.get( elem, key );
4320 if ( data !== undefined ) {
4321 return data;
4322 }
4323
4324 // Attempt to "discover" the data in
4325 // HTML5 custom data-* attrs
4326 data = dataAttr( elem, key );
4327 if ( data !== undefined ) {
4328 return data;
4329 }
4330
4331 // We tried really hard, but the data doesn't exist.
4332 return;
4333 }
4334
4335 // Set the data...
4336 this.each( function() {
4337
4338 // We always store the camelCased key
4339 dataUser.set( this, key, value );
4340 } );
4341 }, null, value, arguments.length > 1, null, true );
4342 },
4343
4344 removeData: function( key ) {
4345 return this.each( function() {
4346 dataUser.remove( this, key );
4347 } );
4348 }
4349} );
4350
4351
4352jQuery.extend( {
4353 queue: function( elem, type, data ) {
4354 var queue;
4355
4356 if ( elem ) {
4357 type = ( type || "fx" ) + "queue";
4358 queue = dataPriv.get( elem, type );
4359
4360 // Speed up dequeue by getting out quickly if this is just a lookup
4361 if ( data ) {
4362 if ( !queue || Array.isArray( data ) ) {
4363 queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
4364 } else {
4365 queue.push( data );
4366 }
4367 }
4368 return queue || [];
4369 }
4370 },
4371
4372 dequeue: function( elem, type ) {
4373 type = type || "fx";
4374
4375 var queue = jQuery.queue( elem, type ),
4376 startLength = queue.length,
4377 fn = queue.shift(),
4378 hooks = jQuery._queueHooks( elem, type ),
4379 next = function() {
4380 jQuery.dequeue( elem, type );
4381 };
4382
4383 // If the fx queue is dequeued, always remove the progress sentinel
4384 if ( fn === "inprogress" ) {
4385 fn = queue.shift();
4386 startLength--;
4387 }
4388
4389 if ( fn ) {
4390
4391 // Add a progress sentinel to prevent the fx queue from being
4392 // automatically dequeued
4393 if ( type === "fx" ) {
4394 queue.unshift( "inprogress" );
4395 }
4396
4397 // Clear up the last queue stop function
4398 delete hooks.stop;
4399 fn.call( elem, next, hooks );
4400 }
4401
4402 if ( !startLength && hooks ) {
4403 hooks.empty.fire();
4404 }
4405 },
4406
4407 // Not public - generate a queueHooks object, or return the current one
4408 _queueHooks: function( elem, type ) {
4409 var key = type + "queueHooks";
4410 return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
4411 empty: jQuery.Callbacks( "once memory" ).add( function() {
4412 dataPriv.remove( elem, [ type + "queue", key ] );
4413 } )
4414 } );
4415 }
4416} );
4417
4418jQuery.fn.extend( {
4419 queue: function( type, data ) {
4420 var setter = 2;
4421
4422 if ( typeof type !== "string" ) {
4423 data = type;
4424 type = "fx";
4425 setter--;
4426 }
4427
4428 if ( arguments.length < setter ) {
4429 return jQuery.queue( this[ 0 ], type );
4430 }
4431
4432 return data === undefined ?
4433 this :
4434 this.each( function() {
4435 var queue = jQuery.queue( this, type, data );
4436
4437 // Ensure a hooks for this queue
4438 jQuery._queueHooks( this, type );
4439
4440 if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
4441 jQuery.dequeue( this, type );
4442 }
4443 } );
4444 },
4445 dequeue: function( type ) {
4446 return this.each( function() {
4447 jQuery.dequeue( this, type );
4448 } );
4449 },
4450 clearQueue: function( type ) {
4451 return this.queue( type || "fx", [] );
4452 },
4453
4454 // Get a promise resolved when queues of a certain type
4455 // are emptied (fx is the type by default)
4456 promise: function( type, obj ) {
4457 var tmp,
4458 count = 1,
4459 defer = jQuery.Deferred(),
4460 elements = this,
4461 i = this.length,
4462 resolve = function() {
4463 if ( !( --count ) ) {
4464 defer.resolveWith( elements, [ elements ] );
4465 }
4466 };
4467
4468 if ( typeof type !== "string" ) {
4469 obj = type;
4470 type = undefined;
4471 }
4472 type = type || "fx";
4473
4474 while ( i-- ) {
4475 tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
4476 if ( tmp && tmp.empty ) {
4477 count++;
4478 tmp.empty.add( resolve );
4479 }
4480 }
4481 resolve();
4482 return defer.promise( obj );
4483 }
4484} );
4485var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
4486
4487var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
4488
4489
4490var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
4491
4492var documentElement = document.documentElement;
4493
4494
4495
4496 var isAttached = function( elem ) {
4497 return jQuery.contains( elem.ownerDocument, elem );
4498 },
4499 composed = { composed: true };
4500
4501 // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only
4502 // Check attachment across shadow DOM boundaries when possible (gh-3504)
4503 // Support: iOS 10.0-10.2 only
4504 // Early iOS 10 versions support `attachShadow` but not `getRootNode`,
4505 // leading to errors. We need to check for `getRootNode`.
4506 if ( documentElement.getRootNode ) {
4507 isAttached = function( elem ) {
4508 return jQuery.contains( elem.ownerDocument, elem ) ||
4509 elem.getRootNode( composed ) === elem.ownerDocument;
4510 };
4511 }
4512var isHiddenWithinTree = function( elem, el ) {
4513
4514 // isHiddenWithinTree might be called from jQuery#filter function;
4515 // in that case, element will be second argument
4516 elem = el || elem;
4517
4518 // Inline style trumps all
4519 return elem.style.display === "none" ||
4520 elem.style.display === "" &&
4521
4522 // Otherwise, check computed style
4523 // Support: Firefox <=43 - 45
4524 // Disconnected elements can have computed display: none, so first confirm that elem is
4525 // in the document.
4526 isAttached( elem ) &&
4527
4528 jQuery.css( elem, "display" ) === "none";
4529 };
4530
4531var swap = function( elem, options, callback, args ) {
4532 var ret, name,
4533 old = {};
4534
4535 // Remember the old values, and insert the new ones
4536 for ( name in options ) {
4537 old[ name ] = elem.style[ name ];
4538 elem.style[ name ] = options[ name ];
4539 }
4540
4541 ret = callback.apply( elem, args || [] );
4542
4543 // Revert the old values
4544 for ( name in options ) {
4545 elem.style[ name ] = old[ name ];
4546 }
4547
4548 return ret;
4549};
4550
4551
4552
4553
4554function adjustCSS( elem, prop, valueParts, tween ) {
4555 var adjusted, scale,
4556 maxIterations = 20,
4557 currentValue = tween ?
4558 function() {
4559 return tween.cur();
4560 } :
4561 function() {
4562 return jQuery.css( elem, prop, "" );
4563 },
4564 initial = currentValue(),
4565 unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
4566
4567 // Starting value computation is required for potential unit mismatches
4568 initialInUnit = elem.nodeType &&
4569 ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
4570 rcssNum.exec( jQuery.css( elem, prop ) );
4571
4572 if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
4573
4574 // Support: Firefox <=54
4575 // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)
4576 initial = initial / 2;
4577
4578 // Trust units reported by jQuery.css
4579 unit = unit || initialInUnit[ 3 ];
4580
4581 // Iteratively approximate from a nonzero starting point
4582 initialInUnit = +initial || 1;
4583
4584 while ( maxIterations-- ) {
4585
4586 // Evaluate and update our best guess (doubling guesses that zero out).
4587 // Finish if the scale equals or crosses 1 (making the old*new product non-positive).
4588 jQuery.style( elem, prop, initialInUnit + unit );
4589 if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {
4590 maxIterations = 0;
4591 }
4592 initialInUnit = initialInUnit / scale;
4593
4594 }
4595
4596 initialInUnit = initialInUnit * 2;
4597 jQuery.style( elem, prop, initialInUnit + unit );
4598
4599 // Make sure we update the tween properties later on
4600 valueParts = valueParts || [];
4601 }
4602
4603 if ( valueParts ) {
4604 initialInUnit = +initialInUnit || +initial || 0;
4605
4606 // Apply relative offset (+=/-=) if specified
4607 adjusted = valueParts[ 1 ] ?
4608 initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
4609 +valueParts[ 2 ];
4610 if ( tween ) {
4611 tween.unit = unit;
4612 tween.start = initialInUnit;
4613 tween.end = adjusted;
4614 }
4615 }
4616 return adjusted;
4617}
4618
4619
4620var defaultDisplayMap = {};
4621
4622function getDefaultDisplay( elem ) {
4623 var temp,
4624 doc = elem.ownerDocument,
4625 nodeName = elem.nodeName,
4626 display = defaultDisplayMap[ nodeName ];
4627
4628 if ( display ) {
4629 return display;
4630 }
4631
4632 temp = doc.body.appendChild( doc.createElement( nodeName ) );
4633 display = jQuery.css( temp, "display" );
4634
4635 temp.parentNode.removeChild( temp );
4636
4637 if ( display === "none" ) {
4638 display = "block";
4639 }
4640 defaultDisplayMap[ nodeName ] = display;
4641
4642 return display;
4643}
4644
4645function showHide( elements, show ) {
4646 var display, elem,
4647 values = [],
4648 index = 0,
4649 length = elements.length;
4650
4651 // Determine new display value for elements that need to change
4652 for ( ; index < length; index++ ) {
4653 elem = elements[ index ];
4654 if ( !elem.style ) {
4655 continue;
4656 }
4657
4658 display = elem.style.display;
4659 if ( show ) {
4660
4661 // Since we force visibility upon cascade-hidden elements, an immediate (and slow)
4662 // check is required in this first loop unless we have a nonempty display value (either
4663 // inline or about-to-be-restored)
4664 if ( display === "none" ) {
4665 values[ index ] = dataPriv.get( elem, "display" ) || null;
4666 if ( !values[ index ] ) {
4667 elem.style.display = "";
4668 }
4669 }
4670 if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
4671 values[ index ] = getDefaultDisplay( elem );
4672 }
4673 } else {
4674 if ( display !== "none" ) {
4675 values[ index ] = "none";
4676
4677 // Remember what we're overwriting
4678 dataPriv.set( elem, "display", display );
4679 }
4680 }
4681 }
4682
4683 // Set the display of the elements in a second loop to avoid constant reflow
4684 for ( index = 0; index < length; index++ ) {
4685 if ( values[ index ] != null ) {
4686 elements[ index ].style.display = values[ index ];
4687 }
4688 }
4689
4690 return elements;
4691}
4692
4693jQuery.fn.extend( {
4694 show: function() {
4695 return showHide( this, true );
4696 },
4697 hide: function() {
4698 return showHide( this );
4699 },
4700 toggle: function( state ) {
4701 if ( typeof state === "boolean" ) {
4702 return state ? this.show() : this.hide();
4703 }
4704
4705 return this.each( function() {
4706 if ( isHiddenWithinTree( this ) ) {
4707 jQuery( this ).show();
4708 } else {
4709 jQuery( this ).hide();
4710 }
4711 } );
4712 }
4713} );
4714var rcheckableType = ( /^(?:checkbox|radio)$/i );
4715
4716var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i );
4717
4718var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );
4719
4720
4721
4722// We have to close these tags to support XHTML (#13200)
4723var wrapMap = {
4724
4725 // Support: IE <=9 only
4726 option: [ 1, "<select multiple='multiple'>", "</select>" ],
4727
4728 // XHTML parsers do not magically insert elements in the
4729 // same way that tag soup parsers do. So we cannot shorten
4730 // this by omitting <tbody> or other required elements.
4731 thead: [ 1, "<table>", "</table>" ],
4732 col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
4733 tr: [ 2, "<table><tbody>", "</tbody></table>" ],
4734 td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
4735
4736 _default: [ 0, "", "" ]
4737};
4738
4739// Support: IE <=9 only
4740wrapMap.optgroup = wrapMap.option;
4741
4742wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
4743wrapMap.th = wrapMap.td;
4744
4745
4746function getAll( context, tag ) {
4747
4748 // Support: IE <=9 - 11 only
4749 // Use typeof to avoid zero-argument method invocation on host objects (#15151)
4750 var ret;
4751
4752 if ( typeof context.getElementsByTagName !== "undefined" ) {
4753 ret = context.getElementsByTagName( tag || "*" );
4754
4755 } else if ( typeof context.querySelectorAll !== "undefined" ) {
4756 ret = context.querySelectorAll( tag || "*" );
4757
4758 } else {
4759 ret = [];
4760 }
4761
4762 if ( tag === undefined || tag && nodeName( context, tag ) ) {
4763 return jQuery.merge( [ context ], ret );
4764 }
4765
4766 return ret;
4767}
4768
4769
4770// Mark scripts as having already been evaluated
4771function setGlobalEval( elems, refElements ) {
4772 var i = 0,
4773 l = elems.length;
4774
4775 for ( ; i < l; i++ ) {
4776 dataPriv.set(
4777 elems[ i ],
4778 "globalEval",
4779 !refElements || dataPriv.get( refElements[ i ], "globalEval" )
4780 );
4781 }
4782}
4783
4784
4785var rhtml = /<|&#?\w+;/;
4786
4787function buildFragment( elems, context, scripts, selection, ignored ) {
4788 var elem, tmp, tag, wrap, attached, j,
4789 fragment = context.createDocumentFragment(),
4790 nodes = [],
4791 i = 0,
4792 l = elems.length;
4793
4794 for ( ; i < l; i++ ) {
4795 elem = elems[ i ];
4796
4797 if ( elem || elem === 0 ) {
4798
4799 // Add nodes directly
4800 if ( toType( elem ) === "object" ) {
4801
4802 // Support: Android <=4.0 only, PhantomJS 1 only
4803 // push.apply(_, arraylike) throws on ancient WebKit
4804 jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
4805
4806 // Convert non-html into a text node
4807 } else if ( !rhtml.test( elem ) ) {
4808 nodes.push( context.createTextNode( elem ) );
4809
4810 // Convert html into DOM nodes
4811 } else {
4812 tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
4813
4814 // Deserialize a standard representation
4815 tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
4816 wrap = wrapMap[ tag ] || wrapMap._default;
4817 tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
4818
4819 // Descend through wrappers to the right content
4820 j = wrap[ 0 ];
4821 while ( j-- ) {
4822 tmp = tmp.lastChild;
4823 }
4824
4825 // Support: Android <=4.0 only, PhantomJS 1 only
4826 // push.apply(_, arraylike) throws on ancient WebKit
4827 jQuery.merge( nodes, tmp.childNodes );
4828
4829 // Remember the top-level container
4830 tmp = fragment.firstChild;
4831
4832 // Ensure the created nodes are orphaned (#12392)
4833 tmp.textContent = "";
4834 }
4835 }
4836 }
4837
4838 // Remove wrapper from fragment
4839 fragment.textContent = "";
4840
4841 i = 0;
4842 while ( ( elem = nodes[ i++ ] ) ) {
4843
4844 // Skip elements already in the context collection (trac-4087)
4845 if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
4846 if ( ignored ) {
4847 ignored.push( elem );
4848 }
4849 continue;
4850 }
4851
4852 attached = isAttached( elem );
4853
4854 // Append to fragment
4855 tmp = getAll( fragment.appendChild( elem ), "script" );
4856
4857 // Preserve script evaluation history
4858 if ( attached ) {
4859 setGlobalEval( tmp );
4860 }
4861
4862 // Capture executables
4863 if ( scripts ) {
4864 j = 0;
4865 while ( ( elem = tmp[ j++ ] ) ) {
4866 if ( rscriptType.test( elem.type || "" ) ) {
4867 scripts.push( elem );
4868 }
4869 }
4870 }
4871 }
4872
4873 return fragment;
4874}
4875
4876
4877( function() {
4878 var fragment = document.createDocumentFragment(),
4879 div = fragment.appendChild( document.createElement( "div" ) ),
4880 input = document.createElement( "input" );
4881
4882 // Support: Android 4.0 - 4.3 only
4883 // Check state lost if the name is set (#11217)
4884 // Support: Windows Web Apps (WWA)
4885 // `name` and `type` must use .setAttribute for WWA (#14901)
4886 input.setAttribute( "type", "radio" );
4887 input.setAttribute( "checked", "checked" );
4888 input.setAttribute( "name", "t" );
4889
4890 div.appendChild( input );
4891
4892 // Support: Android <=4.1 only
4893 // Older WebKit doesn't clone checked state correctly in fragments
4894 support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
4895
4896 // Support: IE <=11 only
4897 // Make sure textarea (and checkbox) defaultValue is properly cloned
4898 div.innerHTML = "<textarea>x</textarea>";
4899 support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
4900} )();
4901
4902
4903var
4904 rkeyEvent = /^key/,
4905 rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
4906 rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
4907
4908function returnTrue() {
4909 return true;
4910}
4911
4912function returnFalse() {
4913 return false;
4914}
4915
4916// Support: IE <=9 - 11+
4917// focus() and blur() are asynchronous, except when they are no-op.
4918// So expect focus to be synchronous when the element is already active,
4919// and blur to be synchronous when the element is not already active.
4920// (focus and blur are always synchronous in other supported browsers,
4921// this just defines when we can count on it).
4922function expectSync( elem, type ) {
4923 return ( elem === safeActiveElement() ) === ( type === "focus" );
4924}
4925
4926// Support: IE <=9 only
4927// Accessing document.activeElement can throw unexpectedly
4928// https://bugs.jquery.com/ticket/13393
4929function safeActiveElement() {
4930 try {
4931 return document.activeElement;
4932 } catch ( err ) { }
4933}
4934
4935function on( elem, types, selector, data, fn, one ) {
4936 var origFn, type;
4937
4938 // Types can be a map of types/handlers
4939 if ( typeof types === "object" ) {
4940
4941 // ( types-Object, selector, data )
4942 if ( typeof selector !== "string" ) {
4943
4944 // ( types-Object, data )
4945 data = data || selector;
4946 selector = undefined;
4947 }
4948 for ( type in types ) {
4949 on( elem, type, selector, data, types[ type ], one );
4950 }
4951 return elem;
4952 }
4953
4954 if ( data == null && fn == null ) {
4955
4956 // ( types, fn )
4957 fn = selector;
4958 data = selector = undefined;
4959 } else if ( fn == null ) {
4960 if ( typeof selector === "string" ) {
4961
4962 // ( types, selector, fn )
4963 fn = data;
4964 data = undefined;
4965 } else {
4966
4967 // ( types, data, fn )
4968 fn = data;
4969 data = selector;
4970 selector = undefined;
4971 }
4972 }
4973 if ( fn === false ) {
4974 fn = returnFalse;
4975 } else if ( !fn ) {
4976 return elem;
4977 }
4978
4979 if ( one === 1 ) {
4980 origFn = fn;
4981 fn = function( event ) {
4982
4983 // Can use an empty set, since event contains the info
4984 jQuery().off( event );
4985 return origFn.apply( this, arguments );
4986 };
4987
4988 // Use same guid so caller can remove using origFn
4989 fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
4990 }
4991 return elem.each( function() {
4992 jQuery.event.add( this, types, fn, data, selector );
4993 } );
4994}
4995
4996/*
4997 * Helper functions for managing events -- not part of the public interface.
4998 * Props to Dean Edwards' addEvent library for many of the ideas.
4999 */
5000jQuery.event = {
5001
5002 global: {},
5003
5004 add: function( elem, types, handler, data, selector ) {
5005
5006 var handleObjIn, eventHandle, tmp,
5007 events, t, handleObj,
5008 special, handlers, type, namespaces, origType,
5009 elemData = dataPriv.get( elem );
5010
5011 // Don't attach events to noData or text/comment nodes (but allow plain objects)
5012 if ( !elemData ) {
5013 return;
5014 }
5015
5016 // Caller can pass in an object of custom data in lieu of the handler
5017 if ( handler.handler ) {
5018 handleObjIn = handler;
5019 handler = handleObjIn.handler;
5020 selector = handleObjIn.selector;
5021 }
5022
5023 // Ensure that invalid selectors throw exceptions at attach time
5024 // Evaluate against documentElement in case elem is a non-element node (e.g., document)
5025 if ( selector ) {
5026 jQuery.find.matchesSelector( documentElement, selector );
5027 }
5028
5029 // Make sure that the handler has a unique ID, used to find/remove it later
5030 if ( !handler.guid ) {
5031 handler.guid = jQuery.guid++;
5032 }
5033
5034 // Init the element's event structure and main handler, if this is the first
5035 if ( !( events = elemData.events ) ) {
5036 events = elemData.events = {};
5037 }
5038 if ( !( eventHandle = elemData.handle ) ) {
5039 eventHandle = elemData.handle = function( e ) {
5040
5041 // Discard the second event of a jQuery.event.trigger() and
5042 // when an event is called after a page has unloaded
5043 return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
5044 jQuery.event.dispatch.apply( elem, arguments ) : undefined;
5045 };
5046 }
5047
5048 // Handle multiple events separated by a space
5049 types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
5050 t = types.length;
5051 while ( t-- ) {
5052 tmp = rtypenamespace.exec( types[ t ] ) || [];
5053 type = origType = tmp[ 1 ];
5054 namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
5055
5056 // There *must* be a type, no attaching namespace-only handlers
5057 if ( !type ) {
5058 continue;
5059 }
5060
5061 // If event changes its type, use the special event handlers for the changed type
5062 special = jQuery.event.special[ type ] || {};
5063
5064 // If selector defined, determine special event api type, otherwise given type
5065 type = ( selector ? special.delegateType : special.bindType ) || type;
5066
5067 // Update special based on newly reset type
5068 special = jQuery.event.special[ type ] || {};
5069
5070 // handleObj is passed to all event handlers
5071 handleObj = jQuery.extend( {
5072 type: type,
5073 origType: origType,
5074 data: data,
5075 handler: handler,
5076 guid: handler.guid,
5077 selector: selector,
5078 needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
5079 namespace: namespaces.join( "." )
5080 }, handleObjIn );
5081
5082 // Init the event handler queue if we're the first
5083 if ( !( handlers = events[ type ] ) ) {
5084 handlers = events[ type ] = [];
5085 handlers.delegateCount = 0;
5086
5087 // Only use addEventListener if the special events handler returns false
5088 if ( !special.setup ||
5089 special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
5090
5091 if ( elem.addEventListener ) {
5092 elem.addEventListener( type, eventHandle );
5093 }
5094 }
5095 }
5096
5097 if ( special.add ) {
5098 special.add.call( elem, handleObj );
5099
5100 if ( !handleObj.handler.guid ) {
5101 handleObj.handler.guid = handler.guid;
5102 }
5103 }
5104
5105 // Add to the element's handler list, delegates in front
5106 if ( selector ) {
5107 handlers.splice( handlers.delegateCount++, 0, handleObj );
5108 } else {
5109 handlers.push( handleObj );
5110 }
5111
5112 // Keep track of which events have ever been used, for event optimization
5113 jQuery.event.global[ type ] = true;
5114 }
5115
5116 },
5117
5118 // Detach an event or set of events from an element
5119 remove: function( elem, types, handler, selector, mappedTypes ) {
5120
5121 var j, origCount, tmp,
5122 events, t, handleObj,
5123 special, handlers, type, namespaces, origType,
5124 elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
5125
5126 if ( !elemData || !( events = elemData.events ) ) {
5127 return;
5128 }
5129
5130 // Once for each type.namespace in types; type may be omitted
5131 types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
5132 t = types.length;
5133 while ( t-- ) {
5134 tmp = rtypenamespace.exec( types[ t ] ) || [];
5135 type = origType = tmp[ 1 ];
5136 namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
5137
5138 // Unbind all events (on this namespace, if provided) for the element
5139 if ( !type ) {
5140 for ( type in events ) {
5141 jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
5142 }
5143 continue;
5144 }
5145
5146 special = jQuery.event.special[ type ] || {};
5147 type = ( selector ? special.delegateType : special.bindType ) || type;
5148 handlers = events[ type ] || [];
5149 tmp = tmp[ 2 ] &&
5150 new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
5151
5152 // Remove matching events
5153 origCount = j = handlers.length;
5154 while ( j-- ) {
5155 handleObj = handlers[ j ];
5156
5157 if ( ( mappedTypes || origType === handleObj.origType ) &&
5158 ( !handler || handler.guid === handleObj.guid ) &&
5159 ( !tmp || tmp.test( handleObj.namespace ) ) &&
5160 ( !selector || selector === handleObj.selector ||
5161 selector === "**" && handleObj.selector ) ) {
5162 handlers.splice( j, 1 );
5163
5164 if ( handleObj.selector ) {
5165 handlers.delegateCount--;
5166 }
5167 if ( special.remove ) {
5168 special.remove.call( elem, handleObj );
5169 }
5170 }
5171 }
5172
5173 // Remove generic event handler if we removed something and no more handlers exist
5174 // (avoids potential for endless recursion during removal of special event handlers)
5175 if ( origCount && !handlers.length ) {
5176 if ( !special.teardown ||
5177 special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
5178
5179 jQuery.removeEvent( elem, type, elemData.handle );
5180 }
5181
5182 delete events[ type ];
5183 }
5184 }
5185
5186 // Remove data and the expando if it's no longer used
5187 if ( jQuery.isEmptyObject( events ) ) {
5188 dataPriv.remove( elem, "handle events" );
5189 }
5190 },
5191
5192 dispatch: function( nativeEvent ) {
5193
5194 // Make a writable jQuery.Event from the native event object
5195 var event = jQuery.event.fix( nativeEvent );
5196
5197 var i, j, ret, matched, handleObj, handlerQueue,
5198 args = new Array( arguments.length ),
5199 handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],
5200 special = jQuery.event.special[ event.type ] || {};
5201
5202 // Use the fix-ed jQuery.Event rather than the (read-only) native event
5203 args[ 0 ] = event;
5204
5205 for ( i = 1; i < arguments.length; i++ ) {
5206 args[ i ] = arguments[ i ];
5207 }
5208
5209 event.delegateTarget = this;
5210
5211 // Call the preDispatch hook for the mapped type, and let it bail if desired
5212 if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
5213 return;
5214 }
5215
5216 // Determine handlers
5217 handlerQueue = jQuery.event.handlers.call( this, event, handlers );
5218
5219 // Run delegates first; they may want to stop propagation beneath us
5220 i = 0;
5221 while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
5222 event.currentTarget = matched.elem;
5223
5224 j = 0;
5225 while ( ( handleObj = matched.handlers[ j++ ] ) &&
5226 !event.isImmediatePropagationStopped() ) {
5227
5228 // If the event is namespaced, then each handler is only invoked if it is
5229 // specially universal or its namespaces are a superset of the event's.
5230 if ( !event.rnamespace || handleObj.namespace === false ||
5231 event.rnamespace.test( handleObj.namespace ) ) {
5232
5233 event.handleObj = handleObj;
5234 event.data = handleObj.data;
5235
5236 ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
5237 handleObj.handler ).apply( matched.elem, args );
5238
5239 if ( ret !== undefined ) {
5240 if ( ( event.result = ret ) === false ) {
5241 event.preventDefault();
5242 event.stopPropagation();
5243 }
5244 }
5245 }
5246 }
5247 }
5248
5249 // Call the postDispatch hook for the mapped type
5250 if ( special.postDispatch ) {
5251 special.postDispatch.call( this, event );
5252 }
5253
5254 return event.result;
5255 },
5256
5257 handlers: function( event, handlers ) {
5258 var i, handleObj, sel, matchedHandlers, matchedSelectors,
5259 handlerQueue = [],
5260 delegateCount = handlers.delegateCount,
5261 cur = event.target;
5262
5263 // Find delegate handlers
5264 if ( delegateCount &&
5265
5266 // Support: IE <=9
5267 // Black-hole SVG <use> instance trees (trac-13180)
5268 cur.nodeType &&
5269
5270 // Support: Firefox <=42
5271 // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
5272 // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
5273 // Support: IE 11 only
5274 // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
5275 !( event.type === "click" && event.button >= 1 ) ) {
5276
5277 for ( ; cur !== this; cur = cur.parentNode || this ) {
5278
5279 // Don't check non-elements (#13208)
5280 // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
5281 if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
5282 matchedHandlers = [];
5283 matchedSelectors = {};
5284 for ( i = 0; i < delegateCount; i++ ) {
5285 handleObj = handlers[ i ];
5286
5287 // Don't conflict with Object.prototype properties (#13203)
5288 sel = handleObj.selector + " ";
5289
5290 if ( matchedSelectors[ sel ] === undefined ) {
5291 matchedSelectors[ sel ] = handleObj.needsContext ?
5292 jQuery( sel, this ).index( cur ) > -1 :
5293 jQuery.find( sel, this, null, [ cur ] ).length;
5294 }
5295 if ( matchedSelectors[ sel ] ) {
5296 matchedHandlers.push( handleObj );
5297 }
5298 }
5299 if ( matchedHandlers.length ) {
5300 handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
5301 }
5302 }
5303 }
5304 }
5305
5306 // Add the remaining (directly-bound) handlers
5307 cur = this;
5308 if ( delegateCount < handlers.length ) {
5309 handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
5310 }
5311
5312 return handlerQueue;
5313 },
5314
5315 addProp: function( name, hook ) {
5316 Object.defineProperty( jQuery.Event.prototype, name, {
5317 enumerable: true,
5318 configurable: true,
5319
5320 get: isFunction( hook ) ?
5321 function() {
5322 if ( this.originalEvent ) {
5323 return hook( this.originalEvent );
5324 }
5325 } :
5326 function() {
5327 if ( this.originalEvent ) {
5328 return this.originalEvent[ name ];
5329 }
5330 },
5331
5332 set: function( value ) {
5333 Object.defineProperty( this, name, {
5334 enumerable: true,
5335 configurable: true,
5336 writable: true,
5337 value: value
5338 } );
5339 }
5340 } );
5341 },
5342
5343 fix: function( originalEvent ) {
5344 return originalEvent[ jQuery.expando ] ?
5345 originalEvent :
5346 new jQuery.Event( originalEvent );
5347 },
5348
5349 special: {
5350 load: {
5351
5352 // Prevent triggered image.load events from bubbling to window.load
5353 noBubble: true
5354 },
5355 click: {
5356
5357 // Utilize native event to ensure correct state for checkable inputs
5358 setup: function( data ) {
5359
5360 // For mutual compressibility with _default, replace `this` access with a local var.
5361 // `|| data` is dead code meant only to preserve the variable through minification.
5362 var el = this || data;
5363
5364 // Claim the first handler
5365 if ( rcheckableType.test( el.type ) &&
5366 el.click && nodeName( el, "input" ) ) {
5367
5368 // dataPriv.set( el, "click", ... )
5369 leverageNative( el, "click", returnTrue );
5370 }
5371
5372 // Return false to allow normal processing in the caller
5373 return false;
5374 },
5375 trigger: function( data ) {
5376
5377 // For mutual compressibility with _default, replace `this` access with a local var.
5378 // `|| data` is dead code meant only to preserve the variable through minification.
5379 var el = this || data;
5380
5381 // Force setup before triggering a click
5382 if ( rcheckableType.test( el.type ) &&
5383 el.click && nodeName( el, "input" ) ) {
5384
5385 leverageNative( el, "click" );
5386 }
5387
5388 // Return non-false to allow normal event-path propagation
5389 return true;
5390 },
5391
5392 // For cross-browser consistency, suppress native .click() on links
5393 // Also prevent it if we're currently inside a leveraged native-event stack
5394 _default: function( event ) {
5395 var target = event.target;
5396 return rcheckableType.test( target.type ) &&
5397 target.click && nodeName( target, "input" ) &&
5398 dataPriv.get( target, "click" ) ||
5399 nodeName( target, "a" );
5400 }
5401 },
5402
5403 beforeunload: {
5404 postDispatch: function( event ) {
5405
5406 // Support: Firefox 20+
5407 // Firefox doesn't alert if the returnValue field is not set.
5408 if ( event.result !== undefined && event.originalEvent ) {
5409 event.originalEvent.returnValue = event.result;
5410 }
5411 }
5412 }
5413 }
5414};
5415
5416// Ensure the presence of an event listener that handles manually-triggered
5417// synthetic events by interrupting progress until reinvoked in response to
5418// *native* events that it fires directly, ensuring that state changes have
5419// already occurred before other listeners are invoked.
5420function leverageNative( el, type, expectSync ) {
5421
5422 // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add
5423 if ( !expectSync ) {
5424 if ( dataPriv.get( el, type ) === undefined ) {
5425 jQuery.event.add( el, type, returnTrue );
5426 }
5427 return;
5428 }
5429
5430 // Register the controller as a special universal handler for all event namespaces
5431 dataPriv.set( el, type, false );
5432 jQuery.event.add( el, type, {
5433 namespace: false,
5434 handler: function( event ) {
5435 var notAsync, result,
5436 saved = dataPriv.get( this, type );
5437
5438 if ( ( event.isTrigger & 1 ) && this[ type ] ) {
5439
5440 // Interrupt processing of the outer synthetic .trigger()ed event
5441 // Saved data should be false in such cases, but might be a leftover capture object
5442 // from an async native handler (gh-4350)
5443 if ( !saved.length ) {
5444
5445 // Store arguments for use when handling the inner native event
5446 // There will always be at least one argument (an event object), so this array
5447 // will not be confused with a leftover capture object.
5448 saved = slice.call( arguments );
5449 dataPriv.set( this, type, saved );
5450
5451 // Trigger the native event and capture its result
5452 // Support: IE <=9 - 11+
5453 // focus() and blur() are asynchronous
5454 notAsync = expectSync( this, type );
5455 this[ type ]();
5456 result = dataPriv.get( this, type );
5457 if ( saved !== result || notAsync ) {
5458 dataPriv.set( this, type, false );
5459 } else {
5460 result = {};
5461 }
5462 if ( saved !== result ) {
5463
5464 // Cancel the outer synthetic event
5465 event.stopImmediatePropagation();
5466 event.preventDefault();
5467 return result.value;
5468 }
5469
5470 // If this is an inner synthetic event for an event with a bubbling surrogate
5471 // (focus or blur), assume that the surrogate already propagated from triggering the
5472 // native event and prevent that from happening again here.
5473 // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the
5474 // bubbling surrogate propagates *after* the non-bubbling base), but that seems
5475 // less bad than duplication.
5476 } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {
5477 event.stopPropagation();
5478 }
5479
5480 // If this is a native event triggered above, everything is now in order
5481 // Fire an inner synthetic event with the original arguments
5482 } else if ( saved.length ) {
5483
5484 // ...and capture the result
5485 dataPriv.set( this, type, {
5486 value: jQuery.event.trigger(
5487
5488 // Support: IE <=9 - 11+
5489 // Extend with the prototype to reset the above stopImmediatePropagation()
5490 jQuery.extend( saved[ 0 ], jQuery.Event.prototype ),
5491 saved.slice( 1 ),
5492 this
5493 )
5494 } );
5495
5496 // Abort handling of the native event
5497 event.stopImmediatePropagation();
5498 }
5499 }
5500 } );
5501}
5502
5503jQuery.removeEvent = function( elem, type, handle ) {
5504
5505 // This "if" is needed for plain objects
5506 if ( elem.removeEventListener ) {
5507 elem.removeEventListener( type, handle );
5508 }
5509};
5510
5511jQuery.Event = function( src, props ) {
5512
5513 // Allow instantiation without the 'new' keyword
5514 if ( !( this instanceof jQuery.Event ) ) {
5515 return new jQuery.Event( src, props );
5516 }
5517
5518 // Event object
5519 if ( src && src.type ) {
5520 this.originalEvent = src;
5521 this.type = src.type;
5522
5523 // Events bubbling up the document may have been marked as prevented
5524 // by a handler lower down the tree; reflect the correct value.
5525 this.isDefaultPrevented = src.defaultPrevented ||
5526 src.defaultPrevented === undefined &&
5527
5528 // Support: Android <=2.3 only
5529 src.returnValue === false ?
5530 returnTrue :
5531 returnFalse;
5532
5533 // Create target properties
5534 // Support: Safari <=6 - 7 only
5535 // Target should not be a text node (#504, #13143)
5536 this.target = ( src.target && src.target.nodeType === 3 ) ?
5537 src.target.parentNode :
5538 src.target;
5539
5540 this.currentTarget = src.currentTarget;
5541 this.relatedTarget = src.relatedTarget;
5542
5543 // Event type
5544 } else {
5545 this.type = src;
5546 }
5547
5548 // Put explicitly provided properties onto the event object
5549 if ( props ) {
5550 jQuery.extend( this, props );
5551 }
5552
5553 // Create a timestamp if incoming event doesn't have one
5554 this.timeStamp = src && src.timeStamp || Date.now();
5555
5556 // Mark it as fixed
5557 this[ jQuery.expando ] = true;
5558};
5559
5560// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
5561// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
5562jQuery.Event.prototype = {
5563 constructor: jQuery.Event,
5564 isDefaultPrevented: returnFalse,
5565 isPropagationStopped: returnFalse,
5566 isImmediatePropagationStopped: returnFalse,
5567 isSimulated: false,
5568
5569 preventDefault: function() {
5570 var e = this.originalEvent;
5571
5572 this.isDefaultPrevented = returnTrue;
5573
5574 if ( e && !this.isSimulated ) {
5575 e.preventDefault();
5576 }
5577 },
5578 stopPropagation: function() {
5579 var e = this.originalEvent;
5580
5581 this.isPropagationStopped = returnTrue;
5582
5583 if ( e && !this.isSimulated ) {
5584 e.stopPropagation();
5585 }
5586 },
5587 stopImmediatePropagation: function() {
5588 var e = this.originalEvent;
5589
5590 this.isImmediatePropagationStopped = returnTrue;
5591
5592 if ( e && !this.isSimulated ) {
5593 e.stopImmediatePropagation();
5594 }
5595
5596 this.stopPropagation();
5597 }
5598};
5599
5600// Includes all common event props including KeyEvent and MouseEvent specific props
5601jQuery.each( {
5602 altKey: true,
5603 bubbles: true,
5604 cancelable: true,
5605 changedTouches: true,
5606 ctrlKey: true,
5607 detail: true,
5608 eventPhase: true,
5609 metaKey: true,
5610 pageX: true,
5611 pageY: true,
5612 shiftKey: true,
5613 view: true,
5614 "char": true,
5615 code: true,
5616 charCode: true,
5617 key: true,
5618 keyCode: true,
5619 button: true,
5620 buttons: true,
5621 clientX: true,
5622 clientY: true,
5623 offsetX: true,
5624 offsetY: true,
5625 pointerId: true,
5626 pointerType: true,
5627 screenX: true,
5628 screenY: true,
5629 targetTouches: true,
5630 toElement: true,
5631 touches: true,
5632
5633 which: function( event ) {
5634 var button = event.button;
5635
5636 // Add which for key events
5637 if ( event.which == null && rkeyEvent.test( event.type ) ) {
5638 return event.charCode != null ? event.charCode : event.keyCode;
5639 }
5640
5641 // Add which for click: 1 === left; 2 === middle; 3 === right
5642 if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {
5643 if ( button & 1 ) {
5644 return 1;
5645 }
5646
5647 if ( button & 2 ) {
5648 return 3;
5649 }
5650
5651 if ( button & 4 ) {
5652 return 2;
5653 }
5654
5655 return 0;
5656 }
5657
5658 return event.which;
5659 }
5660}, jQuery.event.addProp );
5661
5662jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) {
5663 jQuery.event.special[ type ] = {
5664
5665 // Utilize native event if possible so blur/focus sequence is correct
5666 setup: function() {
5667
5668 // Claim the first handler
5669 // dataPriv.set( this, "focus", ... )
5670 // dataPriv.set( this, "blur", ... )
5671 leverageNative( this, type, expectSync );
5672
5673 // Return false to allow normal processing in the caller
5674 return false;
5675 },
5676 trigger: function() {
5677
5678 // Force setup before trigger
5679 leverageNative( this, type );
5680
5681 // Return non-false to allow normal event-path propagation
5682 return true;
5683 },
5684
5685 delegateType: delegateType
5686 };
5687} );
5688
5689// Create mouseenter/leave events using mouseover/out and event-time checks
5690// so that event delegation works in jQuery.
5691// Do the same for pointerenter/pointerleave and pointerover/pointerout
5692//
5693// Support: Safari 7 only
5694// Safari sends mouseenter too often; see:
5695// https://bugs.chromium.org/p/chromium/issues/detail?id=470258
5696// for the description of the bug (it existed in older Chrome versions as well).
5697jQuery.each( {
5698 mouseenter: "mouseover",
5699 mouseleave: "mouseout",
5700 pointerenter: "pointerover",
5701 pointerleave: "pointerout"
5702}, function( orig, fix ) {
5703 jQuery.event.special[ orig ] = {
5704 delegateType: fix,
5705 bindType: fix,
5706
5707 handle: function( event ) {
5708 var ret,
5709 target = this,
5710 related = event.relatedTarget,
5711 handleObj = event.handleObj;
5712
5713 // For mouseenter/leave call the handler if related is outside the target.
5714 // NB: No relatedTarget if the mouse left/entered the browser window
5715 if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
5716 event.type = handleObj.origType;
5717 ret = handleObj.handler.apply( this, arguments );
5718 event.type = fix;
5719 }
5720 return ret;
5721 }
5722 };
5723} );
5724
5725jQuery.fn.extend( {
5726
5727 on: function( types, selector, data, fn ) {
5728 return on( this, types, selector, data, fn );
5729 },
5730 one: function( types, selector, data, fn ) {
5731 return on( this, types, selector, data, fn, 1 );
5732 },
5733 off: function( types, selector, fn ) {
5734 var handleObj, type;
5735 if ( types && types.preventDefault && types.handleObj ) {
5736
5737 // ( event ) dispatched jQuery.Event
5738 handleObj = types.handleObj;
5739 jQuery( types.delegateTarget ).off(
5740 handleObj.namespace ?
5741 handleObj.origType + "." + handleObj.namespace :
5742 handleObj.origType,
5743 handleObj.selector,
5744 handleObj.handler
5745 );
5746 return this;
5747 }
5748 if ( typeof types === "object" ) {
5749
5750 // ( types-object [, selector] )
5751 for ( type in types ) {
5752 this.off( type, selector, types[ type ] );
5753 }
5754 return this;
5755 }
5756 if ( selector === false || typeof selector === "function" ) {
5757
5758 // ( types [, fn] )
5759 fn = selector;
5760 selector = undefined;
5761 }
5762 if ( fn === false ) {
5763 fn = returnFalse;
5764 }
5765 return this.each( function() {
5766 jQuery.event.remove( this, types, fn, selector );
5767 } );
5768 }
5769} );
5770
5771
5772var
5773
5774 /* eslint-disable max-len */
5775
5776 // See https://github.com/eslint/eslint/issues/3229
5777 rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
5778
5779 /* eslint-enable */
5780
5781 // Support: IE <=10 - 11, Edge 12 - 13 only
5782 // In IE/Edge using regex groups here causes severe slowdowns.
5783 // See https://connect.microsoft.com/IE/feedback/details/1736512/
5784 rnoInnerhtml = /<script|<style|<link/i,
5785
5786 // checked="checked" or checked
5787 rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
5788 rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
5789
5790// Prefer a tbody over its parent table for containing new rows
5791function manipulationTarget( elem, content ) {
5792 if ( nodeName( elem, "table" ) &&
5793 nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
5794
5795 return jQuery( elem ).children( "tbody" )[ 0 ] || elem;
5796 }
5797
5798 return elem;
5799}
5800
5801// Replace/restore the type attribute of script elements for safe DOM manipulation
5802function disableScript( elem ) {
5803 elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;
5804 return elem;
5805}
5806function restoreScript( elem ) {
5807 if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) {
5808 elem.type = elem.type.slice( 5 );
5809 } else {
5810 elem.removeAttribute( "type" );
5811 }
5812
5813 return elem;
5814}
5815
5816function cloneCopyEvent( src, dest ) {
5817 var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
5818
5819 if ( dest.nodeType !== 1 ) {
5820 return;
5821 }
5822
5823 // 1. Copy private data: events, handlers, etc.
5824 if ( dataPriv.hasData( src ) ) {
5825 pdataOld = dataPriv.access( src );
5826 pdataCur = dataPriv.set( dest, pdataOld );
5827 events = pdataOld.events;
5828
5829 if ( events ) {
5830 delete pdataCur.handle;
5831 pdataCur.events = {};
5832
5833 for ( type in events ) {
5834 for ( i = 0, l = events[ type ].length; i < l; i++ ) {
5835 jQuery.event.add( dest, type, events[ type ][ i ] );
5836 }
5837 }
5838 }
5839 }
5840
5841 // 2. Copy user data
5842 if ( dataUser.hasData( src ) ) {
5843 udataOld = dataUser.access( src );
5844 udataCur = jQuery.extend( {}, udataOld );
5845
5846 dataUser.set( dest, udataCur );
5847 }
5848}
5849
5850// Fix IE bugs, see support tests
5851function fixInput( src, dest ) {
5852 var nodeName = dest.nodeName.toLowerCase();
5853
5854 // Fails to persist the checked state of a cloned checkbox or radio button.
5855 if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
5856 dest.checked = src.checked;
5857
5858 // Fails to return the selected option to the default selected state when cloning options
5859 } else if ( nodeName === "input" || nodeName === "textarea" ) {
5860 dest.defaultValue = src.defaultValue;
5861 }
5862}
5863
5864function domManip( collection, args, callback, ignored ) {
5865
5866 // Flatten any nested arrays
5867 args = concat.apply( [], args );
5868
5869 var fragment, first, scripts, hasScripts, node, doc,
5870 i = 0,
5871 l = collection.length,
5872 iNoClone = l - 1,
5873 value = args[ 0 ],
5874 valueIsFunction = isFunction( value );
5875
5876 // We can't cloneNode fragments that contain checked, in WebKit
5877 if ( valueIsFunction ||
5878 ( l > 1 && typeof value === "string" &&
5879 !support.checkClone && rchecked.test( value ) ) ) {
5880 return collection.each( function( index ) {
5881 var self = collection.eq( index );
5882 if ( valueIsFunction ) {
5883 args[ 0 ] = value.call( this, index, self.html() );
5884 }
5885 domManip( self, args, callback, ignored );
5886 } );
5887 }
5888
5889 if ( l ) {
5890 fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );
5891 first = fragment.firstChild;
5892
5893 if ( fragment.childNodes.length === 1 ) {
5894 fragment = first;
5895 }
5896
5897 // Require either new content or an interest in ignored elements to invoke the callback
5898 if ( first || ignored ) {
5899 scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
5900 hasScripts = scripts.length;
5901
5902 // Use the original fragment for the last item
5903 // instead of the first because it can end up
5904 // being emptied incorrectly in certain situations (#8070).
5905 for ( ; i < l; i++ ) {
5906 node = fragment;
5907
5908 if ( i !== iNoClone ) {
5909 node = jQuery.clone( node, true, true );
5910
5911 // Keep references to cloned scripts for later restoration
5912 if ( hasScripts ) {
5913
5914 // Support: Android <=4.0 only, PhantomJS 1 only
5915 // push.apply(_, arraylike) throws on ancient WebKit
5916 jQuery.merge( scripts, getAll( node, "script" ) );
5917 }
5918 }
5919
5920 callback.call( collection[ i ], node, i );
5921 }
5922
5923 if ( hasScripts ) {
5924 doc = scripts[ scripts.length - 1 ].ownerDocument;
5925
5926 // Reenable scripts
5927 jQuery.map( scripts, restoreScript );
5928
5929 // Evaluate executable scripts on first document insertion
5930 for ( i = 0; i < hasScripts; i++ ) {
5931 node = scripts[ i ];
5932 if ( rscriptType.test( node.type || "" ) &&
5933 !dataPriv.access( node, "globalEval" ) &&
5934 jQuery.contains( doc, node ) ) {
5935
5936 if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) {
5937
5938 // Optional AJAX dependency, but won't run scripts if not present
5939 if ( jQuery._evalUrl && !node.noModule ) {
5940 jQuery._evalUrl( node.src, {
5941 nonce: node.nonce || node.getAttribute( "nonce" )
5942 } );
5943 }
5944 } else {
5945 DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc );
5946 }
5947 }
5948 }
5949 }
5950 }
5951 }
5952
5953 return collection;
5954}
5955
5956function remove( elem, selector, keepData ) {
5957 var node,
5958 nodes = selector ? jQuery.filter( selector, elem ) : elem,
5959 i = 0;
5960
5961 for ( ; ( node = nodes[ i ] ) != null; i++ ) {
5962 if ( !keepData && node.nodeType === 1 ) {
5963 jQuery.cleanData( getAll( node ) );
5964 }
5965
5966 if ( node.parentNode ) {
5967 if ( keepData && isAttached( node ) ) {
5968 setGlobalEval( getAll( node, "script" ) );
5969 }
5970 node.parentNode.removeChild( node );
5971 }
5972 }
5973
5974 return elem;
5975}
5976
5977jQuery.extend( {
5978 htmlPrefilter: function( html ) {
5979 return html.replace( rxhtmlTag, "<$1></$2>" );
5980 },
5981
5982 clone: function( elem, dataAndEvents, deepDataAndEvents ) {
5983 var i, l, srcElements, destElements,
5984 clone = elem.cloneNode( true ),
5985 inPage = isAttached( elem );
5986
5987 // Fix IE cloning issues
5988 if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
5989 !jQuery.isXMLDoc( elem ) ) {
5990
5991 // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2
5992 destElements = getAll( clone );
5993 srcElements = getAll( elem );
5994
5995 for ( i = 0, l = srcElements.length; i < l; i++ ) {
5996 fixInput( srcElements[ i ], destElements[ i ] );
5997 }
5998 }
5999
6000 // Copy the events from the original to the clone
6001 if ( dataAndEvents ) {
6002 if ( deepDataAndEvents ) {
6003 srcElements = srcElements || getAll( elem );
6004 destElements = destElements || getAll( clone );
6005
6006 for ( i = 0, l = srcElements.length; i < l; i++ ) {
6007 cloneCopyEvent( srcElements[ i ], destElements[ i ] );
6008 }
6009 } else {
6010 cloneCopyEvent( elem, clone );
6011 }
6012 }
6013
6014 // Preserve script evaluation history
6015 destElements = getAll( clone, "script" );
6016 if ( destElements.length > 0 ) {
6017 setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
6018 }
6019
6020 // Return the cloned set
6021 return clone;
6022 },
6023
6024 cleanData: function( elems ) {
6025 var data, elem, type,
6026 special = jQuery.event.special,
6027 i = 0;
6028
6029 for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {
6030 if ( acceptData( elem ) ) {
6031 if ( ( data = elem[ dataPriv.expando ] ) ) {
6032 if ( data.events ) {
6033 for ( type in data.events ) {
6034 if ( special[ type ] ) {
6035 jQuery.event.remove( elem, type );
6036
6037 // This is a shortcut to avoid jQuery.event.remove's overhead
6038 } else {
6039 jQuery.removeEvent( elem, type, data.handle );
6040 }
6041 }
6042 }
6043
6044 // Support: Chrome <=35 - 45+
6045 // Assign undefined instead of using delete, see Data#remove
6046 elem[ dataPriv.expando ] = undefined;
6047 }
6048 if ( elem[ dataUser.expando ] ) {
6049
6050 // Support: Chrome <=35 - 45+
6051 // Assign undefined instead of using delete, see Data#remove
6052 elem[ dataUser.expando ] = undefined;
6053 }
6054 }
6055 }
6056 }
6057} );
6058
6059jQuery.fn.extend( {
6060 detach: function( selector ) {
6061 return remove( this, selector, true );
6062 },
6063
6064 remove: function( selector ) {
6065 return remove( this, selector );
6066 },
6067
6068 text: function( value ) {
6069 return access( this, function( value ) {
6070 return value === undefined ?
6071 jQuery.text( this ) :
6072 this.empty().each( function() {
6073 if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
6074 this.textContent = value;
6075 }
6076 } );
6077 }, null, value, arguments.length );
6078 },
6079
6080 append: function() {
6081 return domManip( this, arguments, function( elem ) {
6082 if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
6083 var target = manipulationTarget( this, elem );
6084 target.appendChild( elem );
6085 }
6086 } );
6087 },
6088
6089 prepend: function() {
6090 return domManip( this, arguments, function( elem ) {
6091 if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
6092 var target = manipulationTarget( this, elem );
6093 target.insertBefore( elem, target.firstChild );
6094 }
6095 } );
6096 },
6097
6098 before: function() {
6099 return domManip( this, arguments, function( elem ) {
6100 if ( this.parentNode ) {
6101 this.parentNode.insertBefore( elem, this );
6102 }
6103 } );
6104 },
6105
6106 after: function() {
6107 return domManip( this, arguments, function( elem ) {
6108 if ( this.parentNode ) {
6109 this.parentNode.insertBefore( elem, this.nextSibling );
6110 }
6111 } );
6112 },
6113
6114 empty: function() {
6115 var elem,
6116 i = 0;
6117
6118 for ( ; ( elem = this[ i ] ) != null; i++ ) {
6119 if ( elem.nodeType === 1 ) {
6120
6121 // Prevent memory leaks
6122 jQuery.cleanData( getAll( elem, false ) );
6123
6124 // Remove any remaining nodes
6125 elem.textContent = "";
6126 }
6127 }
6128
6129 return this;
6130 },
6131
6132 clone: function( dataAndEvents, deepDataAndEvents ) {
6133 dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
6134 deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
6135
6136 return this.map( function() {
6137 return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
6138 } );
6139 },
6140
6141 html: function( value ) {
6142 return access( this, function( value ) {
6143 var elem = this[ 0 ] || {},
6144 i = 0,
6145 l = this.length;
6146
6147 if ( value === undefined && elem.nodeType === 1 ) {
6148 return elem.innerHTML;
6149 }
6150
6151 // See if we can take a shortcut and just use innerHTML
6152 if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
6153 !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
6154
6155 value = jQuery.htmlPrefilter( value );
6156
6157 try {
6158 for ( ; i < l; i++ ) {
6159 elem = this[ i ] || {};
6160
6161 // Remove element nodes and prevent memory leaks
6162 if ( elem.nodeType === 1 ) {
6163 jQuery.cleanData( getAll( elem, false ) );
6164 elem.innerHTML = value;
6165 }
6166 }
6167
6168 elem = 0;
6169
6170 // If using innerHTML throws an exception, use the fallback method
6171 } catch ( e ) {}
6172 }
6173
6174 if ( elem ) {
6175 this.empty().append( value );
6176 }
6177 }, null, value, arguments.length );
6178 },
6179
6180 replaceWith: function() {
6181 var ignored = [];
6182
6183 // Make the changes, replacing each non-ignored context element with the new content
6184 return domManip( this, arguments, function( elem ) {
6185 var parent = this.parentNode;
6186
6187 if ( jQuery.inArray( this, ignored ) < 0 ) {
6188 jQuery.cleanData( getAll( this ) );
6189 if ( parent ) {
6190 parent.replaceChild( elem, this );
6191 }
6192 }
6193
6194 // Force callback invocation
6195 }, ignored );
6196 }
6197} );
6198
6199jQuery.each( {
6200 appendTo: "append",
6201 prependTo: "prepend",
6202 insertBefore: "before",
6203 insertAfter: "after",
6204 replaceAll: "replaceWith"
6205}, function( name, original ) {
6206 jQuery.fn[ name ] = function( selector ) {
6207 var elems,
6208 ret = [],
6209 insert = jQuery( selector ),
6210 last = insert.length - 1,
6211 i = 0;
6212
6213 for ( ; i <= last; i++ ) {
6214 elems = i === last ? this : this.clone( true );
6215 jQuery( insert[ i ] )[ original ]( elems );
6216
6217 // Support: Android <=4.0 only, PhantomJS 1 only
6218 // .get() because push.apply(_, arraylike) throws on ancient WebKit
6219 push.apply( ret, elems.get() );
6220 }
6221
6222 return this.pushStack( ret );
6223 };
6224} );
6225var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
6226
6227var getStyles = function( elem ) {
6228
6229 // Support: IE <=11 only, Firefox <=30 (#15098, #14150)
6230 // IE throws on elements created in popups
6231 // FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
6232 var view = elem.ownerDocument.defaultView;
6233
6234 if ( !view || !view.opener ) {
6235 view = window;
6236 }
6237
6238 return view.getComputedStyle( elem );
6239 };
6240
6241var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
6242
6243
6244
6245( function() {
6246
6247 // Executing both pixelPosition & boxSizingReliable tests require only one layout
6248 // so they're executed at the same time to save the second computation.
6249 function computeStyleTests() {
6250
6251 // This is a singleton, we need to execute it only once
6252 if ( !div ) {
6253 return;
6254 }
6255
6256 container.style.cssText = "position:absolute;left:-11111px;width:60px;" +
6257 "margin-top:1px;padding:0;border:0";
6258 div.style.cssText =
6259 "position:relative;display:block;box-sizing:border-box;overflow:scroll;" +
6260 "margin:auto;border:1px;padding:1px;" +
6261 "width:60%;top:1%";
6262 documentElement.appendChild( container ).appendChild( div );
6263
6264 var divStyle = window.getComputedStyle( div );
6265 pixelPositionVal = divStyle.top !== "1%";
6266
6267 // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
6268 reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;
6269
6270 // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3
6271 // Some styles come back with percentage values, even though they shouldn't
6272 div.style.right = "60%";
6273 pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;
6274
6275 // Support: IE 9 - 11 only
6276 // Detect misreporting of content dimensions for box-sizing:border-box elements
6277 boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;
6278
6279 // Support: IE 9 only
6280 // Detect overflow:scroll screwiness (gh-3699)
6281 // Support: Chrome <=64
6282 // Don't get tricked when zoom affects offsetWidth (gh-4029)
6283 div.style.position = "absolute";
6284 scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;
6285
6286 documentElement.removeChild( container );
6287
6288 // Nullify the div so it wouldn't be stored in the memory and
6289 // it will also be a sign that checks already performed
6290 div = null;
6291 }
6292
6293 function roundPixelMeasures( measure ) {
6294 return Math.round( parseFloat( measure ) );
6295 }
6296
6297 var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,
6298 reliableMarginLeftVal,
6299 container = document.createElement( "div" ),
6300 div = document.createElement( "div" );
6301
6302 // Finish early in limited (non-browser) environments
6303 if ( !div.style ) {
6304 return;
6305 }
6306
6307 // Support: IE <=9 - 11 only
6308 // Style of cloned element affects source element cloned (#8908)
6309 div.style.backgroundClip = "content-box";
6310 div.cloneNode( true ).style.backgroundClip = "";
6311 support.clearCloneStyle = div.style.backgroundClip === "content-box";
6312
6313 jQuery.extend( support, {
6314 boxSizingReliable: function() {
6315 computeStyleTests();
6316 return boxSizingReliableVal;
6317 },
6318 pixelBoxStyles: function() {
6319 computeStyleTests();
6320 return pixelBoxStylesVal;
6321 },
6322 pixelPosition: function() {
6323 computeStyleTests();
6324 return pixelPositionVal;
6325 },
6326 reliableMarginLeft: function() {
6327 computeStyleTests();
6328 return reliableMarginLeftVal;
6329 },
6330 scrollboxSize: function() {
6331 computeStyleTests();
6332 return scrollboxSizeVal;
6333 }
6334 } );
6335} )();
6336
6337
6338function curCSS( elem, name, computed ) {
6339 var width, minWidth, maxWidth, ret,
6340
6341 // Support: Firefox 51+
6342 // Retrieving style before computed somehow
6343 // fixes an issue with getting wrong values
6344 // on detached elements
6345 style = elem.style;
6346
6347 computed = computed || getStyles( elem );
6348
6349 // getPropertyValue is needed for:
6350 // .css('filter') (IE 9 only, #12537)
6351 // .css('--customProperty) (#3144)
6352 if ( computed ) {
6353 ret = computed.getPropertyValue( name ) || computed[ name ];
6354
6355 if ( ret === "" && !isAttached( elem ) ) {
6356 ret = jQuery.style( elem, name );
6357 }
6358
6359 // A tribute to the "awesome hack by Dean Edwards"
6360 // Android Browser returns percentage for some values,
6361 // but width seems to be reliably pixels.
6362 // This is against the CSSOM draft spec:
6363 // https://drafts.csswg.org/cssom/#resolved-values
6364 if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {
6365
6366 // Remember the original values
6367 width = style.width;
6368 minWidth = style.minWidth;
6369 maxWidth = style.maxWidth;
6370
6371 // Put in the new values to get a computed value out
6372 style.minWidth = style.maxWidth = style.width = ret;
6373 ret = computed.width;
6374
6375 // Revert the changed values
6376 style.width = width;
6377 style.minWidth = minWidth;
6378 style.maxWidth = maxWidth;
6379 }
6380 }
6381
6382 return ret !== undefined ?
6383
6384 // Support: IE <=9 - 11 only
6385 // IE returns zIndex value as an integer.
6386 ret + "" :
6387 ret;
6388}
6389
6390
6391function addGetHookIf( conditionFn, hookFn ) {
6392
6393 // Define the hook, we'll check on the first run if it's really needed.
6394 return {
6395 get: function() {
6396 if ( conditionFn() ) {
6397
6398 // Hook not needed (or it's not possible to use it due
6399 // to missing dependency), remove it.
6400 delete this.get;
6401 return;
6402 }
6403
6404 // Hook needed; redefine it so that the support test is not executed again.
6405 return ( this.get = hookFn ).apply( this, arguments );
6406 }
6407 };
6408}
6409
6410
6411var cssPrefixes = [ "Webkit", "Moz", "ms" ],
6412 emptyStyle = document.createElement( "div" ).style,
6413 vendorProps = {};
6414
6415// Return a vendor-prefixed property or undefined
6416function vendorPropName( name ) {
6417
6418 // Check for vendor prefixed names
6419 var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
6420 i = cssPrefixes.length;
6421
6422 while ( i-- ) {
6423 name = cssPrefixes[ i ] + capName;
6424 if ( name in emptyStyle ) {
6425 return name;
6426 }
6427 }
6428}
6429
6430// Return a potentially-mapped jQuery.cssProps or vendor prefixed property
6431function finalPropName( name ) {
6432 var final = jQuery.cssProps[ name ] || vendorProps[ name ];
6433
6434 if ( final ) {
6435 return final;
6436 }
6437 if ( name in emptyStyle ) {
6438 return name;
6439 }
6440 return vendorProps[ name ] = vendorPropName( name ) || name;
6441}
6442
6443
6444var
6445
6446 // Swappable if display is none or starts with table
6447 // except "table", "table-cell", or "table-caption"
6448 // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
6449 rdisplayswap = /^(none|table(?!-c[ea]).+)/,
6450 rcustomProp = /^--/,
6451 cssShow = { position: "absolute", visibility: "hidden", display: "block" },
6452 cssNormalTransform = {
6453 letterSpacing: "0",
6454 fontWeight: "400"
6455 };
6456
6457function setPositiveNumber( elem, value, subtract ) {
6458
6459 // Any relative (+/-) values have already been
6460 // normalized at this point
6461 var matches = rcssNum.exec( value );
6462 return matches ?
6463
6464 // Guard against undefined "subtract", e.g., when used as in cssHooks
6465 Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
6466 value;
6467}
6468
6469function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {
6470 var i = dimension === "width" ? 1 : 0,
6471 extra = 0,
6472 delta = 0;
6473
6474 // Adjustment may not be necessary
6475 if ( box === ( isBorderBox ? "border" : "content" ) ) {
6476 return 0;
6477 }
6478
6479 for ( ; i < 4; i += 2 ) {
6480
6481 // Both box models exclude margin
6482 if ( box === "margin" ) {
6483 delta += jQuery.css( elem, box + cssExpand[ i ], true, styles );
6484 }
6485
6486 // If we get here with a content-box, we're seeking "padding" or "border" or "margin"
6487 if ( !isBorderBox ) {
6488
6489 // Add padding
6490 delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
6491
6492 // For "border" or "margin", add border
6493 if ( box !== "padding" ) {
6494 delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
6495
6496 // But still keep track of it otherwise
6497 } else {
6498 extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
6499 }
6500
6501 // If we get here with a border-box (content + padding + border), we're seeking "content" or
6502 // "padding" or "margin"
6503 } else {
6504
6505 // For "content", subtract padding
6506 if ( box === "content" ) {
6507 delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
6508 }
6509
6510 // For "content" or "padding", subtract border
6511 if ( box !== "margin" ) {
6512 delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
6513 }
6514 }
6515 }
6516
6517 // Account for positive content-box scroll gutter when requested by providing computedVal
6518 if ( !isBorderBox && computedVal >= 0 ) {
6519
6520 // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border
6521 // Assuming integer scroll gutter, subtract the rest and round down
6522 delta += Math.max( 0, Math.ceil(
6523 elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
6524 computedVal -
6525 delta -
6526 extra -
6527 0.5
6528
6529 // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter
6530 // Use an explicit zero to avoid NaN (gh-3964)
6531 ) ) || 0;
6532 }
6533
6534 return delta;
6535}
6536
6537function getWidthOrHeight( elem, dimension, extra ) {
6538
6539 // Start with computed style
6540 var styles = getStyles( elem ),
6541
6542 // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).
6543 // Fake content-box until we know it's needed to know the true value.
6544 boxSizingNeeded = !support.boxSizingReliable() || extra,
6545 isBorderBox = boxSizingNeeded &&
6546 jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
6547 valueIsBorderBox = isBorderBox,
6548
6549 val = curCSS( elem, dimension, styles ),
6550 offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );
6551
6552 // Support: Firefox <=54
6553 // Return a confounding non-pixel value or feign ignorance, as appropriate.
6554 if ( rnumnonpx.test( val ) ) {
6555 if ( !extra ) {
6556 return val;
6557 }
6558 val = "auto";
6559 }
6560
6561
6562 // Fall back to offsetWidth/offsetHeight when value is "auto"
6563 // This happens for inline elements with no explicit setting (gh-3571)
6564 // Support: Android <=4.1 - 4.3 only
6565 // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)
6566 // Support: IE 9-11 only
6567 // Also use offsetWidth/offsetHeight for when box sizing is unreliable
6568 // We use getClientRects() to check for hidden/disconnected.
6569 // In those cases, the computed value can be trusted to be border-box
6570 if ( ( !support.boxSizingReliable() && isBorderBox ||
6571 val === "auto" ||
6572 !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) &&
6573 elem.getClientRects().length ) {
6574
6575 isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
6576
6577 // Where available, offsetWidth/offsetHeight approximate border box dimensions.
6578 // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the
6579 // retrieved value as a content box dimension.
6580 valueIsBorderBox = offsetProp in elem;
6581 if ( valueIsBorderBox ) {
6582 val = elem[ offsetProp ];
6583 }
6584 }
6585
6586 // Normalize "" and auto
6587 val = parseFloat( val ) || 0;
6588
6589 // Adjust for the element's box model
6590 return ( val +
6591 boxModelAdjustment(
6592 elem,
6593 dimension,
6594 extra || ( isBorderBox ? "border" : "content" ),
6595 valueIsBorderBox,
6596 styles,
6597
6598 // Provide the current computed size to request scroll gutter calculation (gh-3589)
6599 val
6600 )
6601 ) + "px";
6602}
6603
6604jQuery.extend( {
6605
6606 // Add in style property hooks for overriding the default
6607 // behavior of getting and setting a style property
6608 cssHooks: {
6609 opacity: {
6610 get: function( elem, computed ) {
6611 if ( computed ) {
6612
6613 // We should always get a number back from opacity
6614 var ret = curCSS( elem, "opacity" );
6615 return ret === "" ? "1" : ret;
6616 }
6617 }
6618 }
6619 },
6620
6621 // Don't automatically add "px" to these possibly-unitless properties
6622 cssNumber: {
6623 "animationIterationCount": true,
6624 "columnCount": true,
6625 "fillOpacity": true,
6626 "flexGrow": true,
6627 "flexShrink": true,
6628 "fontWeight": true,
6629 "gridArea": true,
6630 "gridColumn": true,
6631 "gridColumnEnd": true,
6632 "gridColumnStart": true,
6633 "gridRow": true,
6634 "gridRowEnd": true,
6635 "gridRowStart": true,
6636 "lineHeight": true,
6637 "opacity": true,
6638 "order": true,
6639 "orphans": true,
6640 "widows": true,
6641 "zIndex": true,
6642 "zoom": true
6643 },
6644
6645 // Add in properties whose names you wish to fix before
6646 // setting or getting the value
6647 cssProps: {},
6648
6649 // Get and set the style property on a DOM Node
6650 style: function( elem, name, value, extra ) {
6651
6652 // Don't set styles on text and comment nodes
6653 if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
6654 return;
6655 }
6656
6657 // Make sure that we're working with the right name
6658 var ret, type, hooks,
6659 origName = camelCase( name ),
6660 isCustomProp = rcustomProp.test( name ),
6661 style = elem.style;
6662
6663 // Make sure that we're working with the right name. We don't
6664 // want to query the value if it is a CSS custom property
6665 // since they are user-defined.
6666 if ( !isCustomProp ) {
6667 name = finalPropName( origName );
6668 }
6669
6670 // Gets hook for the prefixed version, then unprefixed version
6671 hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
6672
6673 // Check if we're setting a value
6674 if ( value !== undefined ) {
6675 type = typeof value;
6676
6677 // Convert "+=" or "-=" to relative numbers (#7345)
6678 if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
6679 value = adjustCSS( elem, name, ret );
6680
6681 // Fixes bug #9237
6682 type = "number";
6683 }
6684
6685 // Make sure that null and NaN values aren't set (#7116)
6686 if ( value == null || value !== value ) {
6687 return;
6688 }
6689
6690 // If a number was passed in, add the unit (except for certain CSS properties)
6691 // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append
6692 // "px" to a few hardcoded values.
6693 if ( type === "number" && !isCustomProp ) {
6694 value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
6695 }
6696
6697 // background-* props affect original clone's values
6698 if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
6699 style[ name ] = "inherit";
6700 }
6701
6702 // If a hook was provided, use that value, otherwise just set the specified value
6703 if ( !hooks || !( "set" in hooks ) ||
6704 ( value = hooks.set( elem, value, extra ) ) !== undefined ) {
6705
6706 if ( isCustomProp ) {
6707 style.setProperty( name, value );
6708 } else {
6709 style[ name ] = value;
6710 }
6711 }
6712
6713 } else {
6714
6715 // If a hook was provided get the non-computed value from there
6716 if ( hooks && "get" in hooks &&
6717 ( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
6718
6719 return ret;
6720 }
6721
6722 // Otherwise just get the value from the style object
6723 return style[ name ];
6724 }
6725 },
6726
6727 css: function( elem, name, extra, styles ) {
6728 var val, num, hooks,
6729 origName = camelCase( name ),
6730 isCustomProp = rcustomProp.test( name );
6731
6732 // Make sure that we're working with the right name. We don't
6733 // want to modify the value if it is a CSS custom property
6734 // since they are user-defined.
6735 if ( !isCustomProp ) {
6736 name = finalPropName( origName );
6737 }
6738
6739 // Try prefixed name followed by the unprefixed name
6740 hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
6741
6742 // If a hook was provided get the computed value from there
6743 if ( hooks && "get" in hooks ) {
6744 val = hooks.get( elem, true, extra );
6745 }
6746
6747 // Otherwise, if a way to get the computed value exists, use that
6748 if ( val === undefined ) {
6749 val = curCSS( elem, name, styles );
6750 }
6751
6752 // Convert "normal" to computed value
6753 if ( val === "normal" && name in cssNormalTransform ) {
6754 val = cssNormalTransform[ name ];
6755 }
6756
6757 // Make numeric if forced or a qualifier was provided and val looks numeric
6758 if ( extra === "" || extra ) {
6759 num = parseFloat( val );
6760 return extra === true || isFinite( num ) ? num || 0 : val;
6761 }
6762
6763 return val;
6764 }
6765} );
6766
6767jQuery.each( [ "height", "width" ], function( i, dimension ) {
6768 jQuery.cssHooks[ dimension ] = {
6769 get: function( elem, computed, extra ) {
6770 if ( computed ) {
6771
6772 // Certain elements can have dimension info if we invisibly show them
6773 // but it must have a current display style that would benefit
6774 return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
6775
6776 // Support: Safari 8+
6777 // Table columns in Safari have non-zero offsetWidth & zero
6778 // getBoundingClientRect().width unless display is changed.
6779 // Support: IE <=11 only
6780 // Running getBoundingClientRect on a disconnected node
6781 // in IE throws an error.
6782 ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
6783 swap( elem, cssShow, function() {
6784 return getWidthOrHeight( elem, dimension, extra );
6785 } ) :
6786 getWidthOrHeight( elem, dimension, extra );
6787 }
6788 },
6789
6790 set: function( elem, value, extra ) {
6791 var matches,
6792 styles = getStyles( elem ),
6793
6794 // Only read styles.position if the test has a chance to fail
6795 // to avoid forcing a reflow.
6796 scrollboxSizeBuggy = !support.scrollboxSize() &&
6797 styles.position === "absolute",
6798
6799 // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)
6800 boxSizingNeeded = scrollboxSizeBuggy || extra,
6801 isBorderBox = boxSizingNeeded &&
6802 jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
6803 subtract = extra ?
6804 boxModelAdjustment(
6805 elem,
6806 dimension,
6807 extra,
6808 isBorderBox,
6809 styles
6810 ) :
6811 0;
6812
6813 // Account for unreliable border-box dimensions by comparing offset* to computed and
6814 // faking a content-box to get border and padding (gh-3699)
6815 if ( isBorderBox && scrollboxSizeBuggy ) {
6816 subtract -= Math.ceil(
6817 elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
6818 parseFloat( styles[ dimension ] ) -
6819 boxModelAdjustment( elem, dimension, "border", false, styles ) -
6820 0.5
6821 );
6822 }
6823
6824 // Convert to pixels if value adjustment is needed
6825 if ( subtract && ( matches = rcssNum.exec( value ) ) &&
6826 ( matches[ 3 ] || "px" ) !== "px" ) {
6827
6828 elem.style[ dimension ] = value;
6829 value = jQuery.css( elem, dimension );
6830 }
6831
6832 return setPositiveNumber( elem, value, subtract );
6833 }
6834 };
6835} );
6836
6837jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
6838 function( elem, computed ) {
6839 if ( computed ) {
6840 return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
6841 elem.getBoundingClientRect().left -
6842 swap( elem, { marginLeft: 0 }, function() {
6843 return elem.getBoundingClientRect().left;
6844 } )
6845 ) + "px";
6846 }
6847 }
6848);
6849
6850// These hooks are used by animate to expand properties
6851jQuery.each( {
6852 margin: "",
6853 padding: "",
6854 border: "Width"
6855}, function( prefix, suffix ) {
6856 jQuery.cssHooks[ prefix + suffix ] = {
6857 expand: function( value ) {
6858 var i = 0,
6859 expanded = {},
6860
6861 // Assumes a single number if not a string
6862 parts = typeof value === "string" ? value.split( " " ) : [ value ];
6863
6864 for ( ; i < 4; i++ ) {
6865 expanded[ prefix + cssExpand[ i ] + suffix ] =
6866 parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
6867 }
6868
6869 return expanded;
6870 }
6871 };
6872
6873 if ( prefix !== "margin" ) {
6874 jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
6875 }
6876} );
6877
6878jQuery.fn.extend( {
6879 css: function( name, value ) {
6880 return access( this, function( elem, name, value ) {
6881 var styles, len,
6882 map = {},
6883 i = 0;
6884
6885 if ( Array.isArray( name ) ) {
6886 styles = getStyles( elem );
6887 len = name.length;
6888
6889 for ( ; i < len; i++ ) {
6890 map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
6891 }
6892
6893 return map;
6894 }
6895
6896 return value !== undefined ?
6897 jQuery.style( elem, name, value ) :
6898 jQuery.css( elem, name );
6899 }, name, value, arguments.length > 1 );
6900 }
6901} );
6902
6903
6904function Tween( elem, options, prop, end, easing ) {
6905 return new Tween.prototype.init( elem, options, prop, end, easing );
6906}
6907jQuery.Tween = Tween;
6908
6909Tween.prototype = {
6910 constructor: Tween,
6911 init: function( elem, options, prop, end, easing, unit ) {
6912 this.elem = elem;
6913 this.prop = prop;
6914 this.easing = easing || jQuery.easing._default;
6915 this.options = options;
6916 this.start = this.now = this.cur();
6917 this.end = end;
6918 this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
6919 },
6920 cur: function() {
6921 var hooks = Tween.propHooks[ this.prop ];
6922
6923 return hooks && hooks.get ?
6924 hooks.get( this ) :
6925 Tween.propHooks._default.get( this );
6926 },
6927 run: function( percent ) {
6928 var eased,
6929 hooks = Tween.propHooks[ this.prop ];
6930
6931 if ( this.options.duration ) {
6932 this.pos = eased = jQuery.easing[ this.easing ](
6933 percent, this.options.duration * percent, 0, 1, this.options.duration
6934 );
6935 } else {
6936 this.pos = eased = percent;
6937 }
6938 this.now = ( this.end - this.start ) * eased + this.start;
6939
6940 if ( this.options.step ) {
6941 this.options.step.call( this.elem, this.now, this );
6942 }
6943
6944 if ( hooks && hooks.set ) {
6945 hooks.set( this );
6946 } else {
6947 Tween.propHooks._default.set( this );
6948 }
6949 return this;
6950 }
6951};
6952
6953Tween.prototype.init.prototype = Tween.prototype;
6954
6955Tween.propHooks = {
6956 _default: {
6957 get: function( tween ) {
6958 var result;
6959
6960 // Use a property on the element directly when it is not a DOM element,
6961 // or when there is no matching style property that exists.
6962 if ( tween.elem.nodeType !== 1 ||
6963 tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {
6964 return tween.elem[ tween.prop ];
6965 }
6966
6967 // Passing an empty string as a 3rd parameter to .css will automatically
6968 // attempt a parseFloat and fallback to a string if the parse fails.
6969 // Simple values such as "10px" are parsed to Float;
6970 // complex values such as "rotate(1rad)" are returned as-is.
6971 result = jQuery.css( tween.elem, tween.prop, "" );
6972
6973 // Empty strings, null, undefined and "auto" are converted to 0.
6974 return !result || result === "auto" ? 0 : result;
6975 },
6976 set: function( tween ) {
6977
6978 // Use step hook for back compat.
6979 // Use cssHook if its there.
6980 // Use .style if available and use plain properties where available.
6981 if ( jQuery.fx.step[ tween.prop ] ) {
6982 jQuery.fx.step[ tween.prop ]( tween );
6983 } else if ( tween.elem.nodeType === 1 && (
6984 jQuery.cssHooks[ tween.prop ] ||
6985 tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {
6986 jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
6987 } else {
6988 tween.elem[ tween.prop ] = tween.now;
6989 }
6990 }
6991 }
6992};
6993
6994// Support: IE <=9 only
6995// Panic based approach to setting things on disconnected nodes
6996Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
6997 set: function( tween ) {
6998 if ( tween.elem.nodeType && tween.elem.parentNode ) {
6999 tween.elem[ tween.prop ] = tween.now;
7000 }
7001 }
7002};
7003
7004jQuery.easing = {
7005 linear: function( p ) {
7006 return p;
7007 },
7008 swing: function( p ) {
7009 return 0.5 - Math.cos( p * Math.PI ) / 2;
7010 },
7011 _default: "swing"
7012};
7013
7014jQuery.fx = Tween.prototype.init;
7015
7016// Back compat <1.8 extension point
7017jQuery.fx.step = {};
7018
7019
7020
7021
7022var
7023 fxNow, inProgress,
7024 rfxtypes = /^(?:toggle|show|hide)$/,
7025 rrun = /queueHooks$/;
7026
7027function schedule() {
7028 if ( inProgress ) {
7029 if ( document.hidden === false && window.requestAnimationFrame ) {
7030 window.requestAnimationFrame( schedule );
7031 } else {
7032 window.setTimeout( schedule, jQuery.fx.interval );
7033 }
7034
7035 jQuery.fx.tick();
7036 }
7037}
7038
7039// Animations created synchronously will run synchronously
7040function createFxNow() {
7041 window.setTimeout( function() {
7042 fxNow = undefined;
7043 } );
7044 return ( fxNow = Date.now() );
7045}
7046
7047// Generate parameters to create a standard animation
7048function genFx( type, includeWidth ) {
7049 var which,
7050 i = 0,
7051 attrs = { height: type };
7052
7053 // If we include width, step value is 1 to do all cssExpand values,
7054 // otherwise step value is 2 to skip over Left and Right
7055 includeWidth = includeWidth ? 1 : 0;
7056 for ( ; i < 4; i += 2 - includeWidth ) {
7057 which = cssExpand[ i ];
7058 attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
7059 }
7060
7061 if ( includeWidth ) {
7062 attrs.opacity = attrs.width = type;
7063 }
7064
7065 return attrs;
7066}
7067
7068function createTween( value, prop, animation ) {
7069 var tween,
7070 collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ),
7071 index = 0,
7072 length = collection.length;
7073 for ( ; index < length; index++ ) {
7074 if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {
7075
7076 // We're done with this property
7077 return tween;
7078 }
7079 }
7080}
7081
7082function defaultPrefilter( elem, props, opts ) {
7083 var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,
7084 isBox = "width" in props || "height" in props,
7085 anim = this,
7086 orig = {},
7087 style = elem.style,
7088 hidden = elem.nodeType && isHiddenWithinTree( elem ),
7089 dataShow = dataPriv.get( elem, "fxshow" );
7090
7091 // Queue-skipping animations hijack the fx hooks
7092 if ( !opts.queue ) {
7093 hooks = jQuery._queueHooks( elem, "fx" );
7094 if ( hooks.unqueued == null ) {
7095 hooks.unqueued = 0;
7096 oldfire = hooks.empty.fire;
7097 hooks.empty.fire = function() {
7098 if ( !hooks.unqueued ) {
7099 oldfire();
7100 }
7101 };
7102 }
7103 hooks.unqueued++;
7104
7105 anim.always( function() {
7106
7107 // Ensure the complete handler is called before this completes
7108 anim.always( function() {
7109 hooks.unqueued--;
7110 if ( !jQuery.queue( elem, "fx" ).length ) {
7111 hooks.empty.fire();
7112 }
7113 } );
7114 } );
7115 }
7116
7117 // Detect show/hide animations
7118 for ( prop in props ) {
7119 value = props[ prop ];
7120 if ( rfxtypes.test( value ) ) {
7121 delete props[ prop ];
7122 toggle = toggle || value === "toggle";
7123 if ( value === ( hidden ? "hide" : "show" ) ) {
7124
7125 // Pretend to be hidden if this is a "show" and
7126 // there is still data from a stopped show/hide
7127 if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
7128 hidden = true;
7129
7130 // Ignore all other no-op show/hide data
7131 } else {
7132 continue;
7133 }
7134 }
7135 orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
7136 }
7137 }
7138
7139 // Bail out if this is a no-op like .hide().hide()
7140 propTween = !jQuery.isEmptyObject( props );
7141 if ( !propTween && jQuery.isEmptyObject( orig ) ) {
7142 return;
7143 }
7144
7145 // Restrict "overflow" and "display" styles during box animations
7146 if ( isBox && elem.nodeType === 1 ) {
7147
7148 // Support: IE <=9 - 11, Edge 12 - 15
7149 // Record all 3 overflow attributes because IE does not infer the shorthand
7150 // from identically-valued overflowX and overflowY and Edge just mirrors
7151 // the overflowX value there.
7152 opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
7153
7154 // Identify a display type, preferring old show/hide data over the CSS cascade
7155 restoreDisplay = dataShow && dataShow.display;
7156 if ( restoreDisplay == null ) {
7157 restoreDisplay = dataPriv.get( elem, "display" );
7158 }
7159 display = jQuery.css( elem, "display" );
7160 if ( display === "none" ) {
7161 if ( restoreDisplay ) {
7162 display = restoreDisplay;
7163 } else {
7164
7165 // Get nonempty value(s) by temporarily forcing visibility
7166 showHide( [ elem ], true );
7167 restoreDisplay = elem.style.display || restoreDisplay;
7168 display = jQuery.css( elem, "display" );
7169 showHide( [ elem ] );
7170 }
7171 }
7172
7173 // Animate inline elements as inline-block
7174 if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) {
7175 if ( jQuery.css( elem, "float" ) === "none" ) {
7176
7177 // Restore the original display value at the end of pure show/hide animations
7178 if ( !propTween ) {
7179 anim.done( function() {
7180 style.display = restoreDisplay;
7181 } );
7182 if ( restoreDisplay == null ) {
7183 display = style.display;
7184 restoreDisplay = display === "none" ? "" : display;
7185 }
7186 }
7187 style.display = "inline-block";
7188 }
7189 }
7190 }
7191
7192 if ( opts.overflow ) {
7193 style.overflow = "hidden";
7194 anim.always( function() {
7195 style.overflow = opts.overflow[ 0 ];
7196 style.overflowX = opts.overflow[ 1 ];
7197 style.overflowY = opts.overflow[ 2 ];
7198 } );
7199 }
7200
7201 // Implement show/hide animations
7202 propTween = false;
7203 for ( prop in orig ) {
7204
7205 // General show/hide setup for this element animation
7206 if ( !propTween ) {
7207 if ( dataShow ) {
7208 if ( "hidden" in dataShow ) {
7209 hidden = dataShow.hidden;
7210 }
7211 } else {
7212 dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } );
7213 }
7214
7215 // Store hidden/visible for toggle so `.stop().toggle()` "reverses"
7216 if ( toggle ) {
7217 dataShow.hidden = !hidden;
7218 }
7219
7220 // Show elements before animating them
7221 if ( hidden ) {
7222 showHide( [ elem ], true );
7223 }
7224
7225 /* eslint-disable no-loop-func */
7226
7227 anim.done( function() {
7228
7229 /* eslint-enable no-loop-func */
7230
7231 // The final step of a "hide" animation is actually hiding the element
7232 if ( !hidden ) {
7233 showHide( [ elem ] );
7234 }
7235 dataPriv.remove( elem, "fxshow" );
7236 for ( prop in orig ) {
7237 jQuery.style( elem, prop, orig[ prop ] );
7238 }
7239 } );
7240 }
7241
7242 // Per-property setup
7243 propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
7244 if ( !( prop in dataShow ) ) {
7245 dataShow[ prop ] = propTween.start;
7246 if ( hidden ) {
7247 propTween.end = propTween.start;
7248 propTween.start = 0;
7249 }
7250 }
7251 }
7252}
7253
7254function propFilter( props, specialEasing ) {
7255 var index, name, easing, value, hooks;
7256
7257 // camelCase, specialEasing and expand cssHook pass
7258 for ( index in props ) {
7259 name = camelCase( index );
7260 easing = specialEasing[ name ];
7261 value = props[ index ];
7262 if ( Array.isArray( value ) ) {
7263 easing = value[ 1 ];
7264 value = props[ index ] = value[ 0 ];
7265 }
7266
7267 if ( index !== name ) {
7268 props[ name ] = value;
7269 delete props[ index ];
7270 }
7271
7272 hooks = jQuery.cssHooks[ name ];
7273 if ( hooks && "expand" in hooks ) {
7274 value = hooks.expand( value );
7275 delete props[ name ];
7276
7277 // Not quite $.extend, this won't overwrite existing keys.
7278 // Reusing 'index' because we have the correct "name"
7279 for ( index in value ) {
7280 if ( !( index in props ) ) {
7281 props[ index ] = value[ index ];
7282 specialEasing[ index ] = easing;
7283 }
7284 }
7285 } else {
7286 specialEasing[ name ] = easing;
7287 }
7288 }
7289}
7290
7291function Animation( elem, properties, options ) {
7292 var result,
7293 stopped,
7294 index = 0,
7295 length = Animation.prefilters.length,
7296 deferred = jQuery.Deferred().always( function() {
7297
7298 // Don't match elem in the :animated selector
7299 delete tick.elem;
7300 } ),
7301 tick = function() {
7302 if ( stopped ) {
7303 return false;
7304 }
7305 var currentTime = fxNow || createFxNow(),
7306 remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
7307
7308 // Support: Android 2.3 only
7309 // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
7310 temp = remaining / animation.duration || 0,
7311 percent = 1 - temp,
7312 index = 0,
7313 length = animation.tweens.length;
7314
7315 for ( ; index < length; index++ ) {
7316 animation.tweens[ index ].run( percent );
7317 }
7318
7319 deferred.notifyWith( elem, [ animation, percent, remaining ] );
7320
7321 // If there's more to do, yield
7322 if ( percent < 1 && length ) {
7323 return remaining;
7324 }
7325
7326 // If this was an empty animation, synthesize a final progress notification
7327 if ( !length ) {
7328 deferred.notifyWith( elem, [ animation, 1, 0 ] );
7329 }
7330
7331 // Resolve the animation and report its conclusion
7332 deferred.resolveWith( elem, [ animation ] );
7333 return false;
7334 },
7335 animation = deferred.promise( {
7336 elem: elem,
7337 props: jQuery.extend( {}, properties ),
7338 opts: jQuery.extend( true, {
7339 specialEasing: {},
7340 easing: jQuery.easing._default
7341 }, options ),
7342 originalProperties: properties,
7343 originalOptions: options,
7344 startTime: fxNow || createFxNow(),
7345 duration: options.duration,
7346 tweens: [],
7347 createTween: function( prop, end ) {
7348 var tween = jQuery.Tween( elem, animation.opts, prop, end,
7349 animation.opts.specialEasing[ prop ] || animation.opts.easing );
7350 animation.tweens.push( tween );
7351 return tween;
7352 },
7353 stop: function( gotoEnd ) {
7354 var index = 0,
7355
7356 // If we are going to the end, we want to run all the tweens
7357 // otherwise we skip this part
7358 length = gotoEnd ? animation.tweens.length : 0;
7359 if ( stopped ) {
7360 return this;
7361 }
7362 stopped = true;
7363 for ( ; index < length; index++ ) {
7364 animation.tweens[ index ].run( 1 );
7365 }
7366
7367 // Resolve when we played the last frame; otherwise, reject
7368 if ( gotoEnd ) {
7369 deferred.notifyWith( elem, [ animation, 1, 0 ] );
7370 deferred.resolveWith( elem, [ animation, gotoEnd ] );
7371 } else {
7372 deferred.rejectWith( elem, [ animation, gotoEnd ] );
7373 }
7374 return this;
7375 }
7376 } ),
7377 props = animation.props;
7378
7379 propFilter( props, animation.opts.specialEasing );
7380
7381 for ( ; index < length; index++ ) {
7382 result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );
7383 if ( result ) {
7384 if ( isFunction( result.stop ) ) {
7385 jQuery._queueHooks( animation.elem, animation.opts.queue ).stop =
7386 result.stop.bind( result );
7387 }
7388 return result;
7389 }
7390 }
7391
7392 jQuery.map( props, createTween, animation );
7393
7394 if ( isFunction( animation.opts.start ) ) {
7395 animation.opts.start.call( elem, animation );
7396 }
7397
7398 // Attach callbacks from options
7399 animation
7400 .progress( animation.opts.progress )
7401 .done( animation.opts.done, animation.opts.complete )
7402 .fail( animation.opts.fail )
7403 .always( animation.opts.always );
7404
7405 jQuery.fx.timer(
7406 jQuery.extend( tick, {
7407 elem: elem,
7408 anim: animation,
7409 queue: animation.opts.queue
7410 } )
7411 );
7412
7413 return animation;
7414}
7415
7416jQuery.Animation = jQuery.extend( Animation, {
7417
7418 tweeners: {
7419 "*": [ function( prop, value ) {
7420 var tween = this.createTween( prop, value );
7421 adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );
7422 return tween;
7423 } ]
7424 },
7425
7426 tweener: function( props, callback ) {
7427 if ( isFunction( props ) ) {
7428 callback = props;
7429 props = [ "*" ];
7430 } else {
7431 props = props.match( rnothtmlwhite );
7432 }
7433
7434 var prop,
7435 index = 0,
7436 length = props.length;
7437
7438 for ( ; index < length; index++ ) {
7439 prop = props[ index ];
7440 Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];
7441 Animation.tweeners[ prop ].unshift( callback );
7442 }
7443 },
7444
7445 prefilters: [ defaultPrefilter ],
7446
7447 prefilter: function( callback, prepend ) {
7448 if ( prepend ) {
7449 Animation.prefilters.unshift( callback );
7450 } else {
7451 Animation.prefilters.push( callback );
7452 }
7453 }
7454} );
7455
7456jQuery.speed = function( speed, easing, fn ) {
7457 var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
7458 complete: fn || !fn && easing ||
7459 isFunction( speed ) && speed,
7460 duration: speed,
7461 easing: fn && easing || easing && !isFunction( easing ) && easing
7462 };
7463
7464 // Go to the end state if fx are off
7465 if ( jQuery.fx.off ) {
7466 opt.duration = 0;
7467
7468 } else {
7469 if ( typeof opt.duration !== "number" ) {
7470 if ( opt.duration in jQuery.fx.speeds ) {
7471 opt.duration = jQuery.fx.speeds[ opt.duration ];
7472
7473 } else {
7474 opt.duration = jQuery.fx.speeds._default;
7475 }
7476 }
7477 }
7478
7479 // Normalize opt.queue - true/undefined/null -> "fx"
7480 if ( opt.queue == null || opt.queue === true ) {
7481 opt.queue = "fx";
7482 }
7483
7484 // Queueing
7485 opt.old = opt.complete;
7486
7487 opt.complete = function() {
7488 if ( isFunction( opt.old ) ) {
7489 opt.old.call( this );
7490 }
7491
7492 if ( opt.queue ) {
7493 jQuery.dequeue( this, opt.queue );
7494 }
7495 };
7496
7497 return opt;
7498};
7499
7500jQuery.fn.extend( {
7501 fadeTo: function( speed, to, easing, callback ) {
7502
7503 // Show any hidden elements after setting opacity to 0
7504 return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show()
7505
7506 // Animate to the value specified
7507 .end().animate( { opacity: to }, speed, easing, callback );
7508 },
7509 animate: function( prop, speed, easing, callback ) {
7510 var empty = jQuery.isEmptyObject( prop ),
7511 optall = jQuery.speed( speed, easing, callback ),
7512 doAnimation = function() {
7513
7514 // Operate on a copy of prop so per-property easing won't be lost
7515 var anim = Animation( this, jQuery.extend( {}, prop ), optall );
7516
7517 // Empty animations, or finishing resolves immediately
7518 if ( empty || dataPriv.get( this, "finish" ) ) {
7519 anim.stop( true );
7520 }
7521 };
7522 doAnimation.finish = doAnimation;
7523
7524 return empty || optall.queue === false ?
7525 this.each( doAnimation ) :
7526 this.queue( optall.queue, doAnimation );
7527 },
7528 stop: function( type, clearQueue, gotoEnd ) {
7529 var stopQueue = function( hooks ) {
7530 var stop = hooks.stop;
7531 delete hooks.stop;
7532 stop( gotoEnd );
7533 };
7534
7535 if ( typeof type !== "string" ) {
7536 gotoEnd = clearQueue;
7537 clearQueue = type;
7538 type = undefined;
7539 }
7540 if ( clearQueue && type !== false ) {
7541 this.queue( type || "fx", [] );
7542 }
7543
7544 return this.each( function() {
7545 var dequeue = true,
7546 index = type != null && type + "queueHooks",
7547 timers = jQuery.timers,
7548 data = dataPriv.get( this );
7549
7550 if ( index ) {
7551 if ( data[ index ] && data[ index ].stop ) {
7552 stopQueue( data[ index ] );
7553 }
7554 } else {
7555 for ( index in data ) {
7556 if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
7557 stopQueue( data[ index ] );
7558 }
7559 }
7560 }
7561
7562 for ( index = timers.length; index--; ) {
7563 if ( timers[ index ].elem === this &&
7564 ( type == null || timers[ index ].queue === type ) ) {
7565
7566 timers[ index ].anim.stop( gotoEnd );
7567 dequeue = false;
7568 timers.splice( index, 1 );
7569 }
7570 }
7571
7572 // Start the next in the queue if the last step wasn't forced.
7573 // Timers currently will call their complete callbacks, which
7574 // will dequeue but only if they were gotoEnd.
7575 if ( dequeue || !gotoEnd ) {
7576 jQuery.dequeue( this, type );
7577 }
7578 } );
7579 },
7580 finish: function( type ) {
7581 if ( type !== false ) {
7582 type = type || "fx";
7583 }
7584 return this.each( function() {
7585 var index,
7586 data = dataPriv.get( this ),
7587 queue = data[ type + "queue" ],
7588 hooks = data[ type + "queueHooks" ],
7589 timers = jQuery.timers,
7590 length = queue ? queue.length : 0;
7591
7592 // Enable finishing flag on private data
7593 data.finish = true;
7594
7595 // Empty the queue first
7596 jQuery.queue( this, type, [] );
7597
7598 if ( hooks && hooks.stop ) {
7599 hooks.stop.call( this, true );
7600 }
7601
7602 // Look for any active animations, and finish them
7603 for ( index = timers.length; index--; ) {
7604 if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
7605 timers[ index ].anim.stop( true );
7606 timers.splice( index, 1 );
7607 }
7608 }
7609
7610 // Look for any animations in the old queue and finish them
7611 for ( index = 0; index < length; index++ ) {
7612 if ( queue[ index ] && queue[ index ].finish ) {
7613 queue[ index ].finish.call( this );
7614 }
7615 }
7616
7617 // Turn off finishing flag
7618 delete data.finish;
7619 } );
7620 }
7621} );
7622
7623jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) {
7624 var cssFn = jQuery.fn[ name ];
7625 jQuery.fn[ name ] = function( speed, easing, callback ) {
7626 return speed == null || typeof speed === "boolean" ?
7627 cssFn.apply( this, arguments ) :
7628 this.animate( genFx( name, true ), speed, easing, callback );
7629 };
7630} );
7631
7632// Generate shortcuts for custom animations
7633jQuery.each( {
7634 slideDown: genFx( "show" ),
7635 slideUp: genFx( "hide" ),
7636 slideToggle: genFx( "toggle" ),
7637 fadeIn: { opacity: "show" },
7638 fadeOut: { opacity: "hide" },
7639 fadeToggle: { opacity: "toggle" }
7640}, function( name, props ) {
7641 jQuery.fn[ name ] = function( speed, easing, callback ) {
7642 return this.animate( props, speed, easing, callback );
7643 };
7644} );
7645
7646jQuery.timers = [];
7647jQuery.fx.tick = function() {
7648 var timer,
7649 i = 0,
7650 timers = jQuery.timers;
7651
7652 fxNow = Date.now();
7653
7654 for ( ; i < timers.length; i++ ) {
7655 timer = timers[ i ];
7656
7657 // Run the timer and safely remove it when done (allowing for external removal)
7658 if ( !timer() && timers[ i ] === timer ) {
7659 timers.splice( i--, 1 );
7660 }
7661 }
7662
7663 if ( !timers.length ) {
7664 jQuery.fx.stop();
7665 }
7666 fxNow = undefined;
7667};
7668
7669jQuery.fx.timer = function( timer ) {
7670 jQuery.timers.push( timer );
7671 jQuery.fx.start();
7672};
7673
7674jQuery.fx.interval = 13;
7675jQuery.fx.start = function() {
7676 if ( inProgress ) {
7677 return;
7678 }
7679
7680 inProgress = true;
7681 schedule();
7682};
7683
7684jQuery.fx.stop = function() {
7685 inProgress = null;
7686};
7687
7688jQuery.fx.speeds = {
7689 slow: 600,
7690 fast: 200,
7691
7692 // Default speed
7693 _default: 400
7694};
7695
7696
7697// Based off of the plugin by Clint Helfers, with permission.
7698// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
7699jQuery.fn.delay = function( time, type ) {
7700 time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
7701 type = type || "fx";
7702
7703 return this.queue( type, function( next, hooks ) {
7704 var timeout = window.setTimeout( next, time );
7705 hooks.stop = function() {
7706 window.clearTimeout( timeout );
7707 };
7708 } );
7709};
7710
7711
7712( function() {
7713 var input = document.createElement( "input" ),
7714 select = document.createElement( "select" ),
7715 opt = select.appendChild( document.createElement( "option" ) );
7716
7717 input.type = "checkbox";
7718
7719 // Support: Android <=4.3 only
7720 // Default value for a checkbox should be "on"
7721 support.checkOn = input.value !== "";
7722
7723 // Support: IE <=11 only
7724 // Must access selectedIndex to make default options select
7725 support.optSelected = opt.selected;
7726
7727 // Support: IE <=11 only
7728 // An input loses its value after becoming a radio
7729 input = document.createElement( "input" );
7730 input.value = "t";
7731 input.type = "radio";
7732 support.radioValue = input.value === "t";
7733} )();
7734
7735
7736var boolHook,
7737 attrHandle = jQuery.expr.attrHandle;
7738
7739jQuery.fn.extend( {
7740 attr: function( name, value ) {
7741 return access( this, jQuery.attr, name, value, arguments.length > 1 );
7742 },
7743
7744 removeAttr: function( name ) {
7745 return this.each( function() {
7746 jQuery.removeAttr( this, name );
7747 } );
7748 }
7749} );
7750
7751jQuery.extend( {
7752 attr: function( elem, name, value ) {
7753 var ret, hooks,
7754 nType = elem.nodeType;
7755
7756 // Don't get/set attributes on text, comment and attribute nodes
7757 if ( nType === 3 || nType === 8 || nType === 2 ) {
7758 return;
7759 }
7760
7761 // Fallback to prop when attributes are not supported
7762 if ( typeof elem.getAttribute === "undefined" ) {
7763 return jQuery.prop( elem, name, value );
7764 }
7765
7766 // Attribute hooks are determined by the lowercase version
7767 // Grab necessary hook if one is defined
7768 if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
7769 hooks = jQuery.attrHooks[ name.toLowerCase() ] ||
7770 ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
7771 }
7772
7773 if ( value !== undefined ) {
7774 if ( value === null ) {
7775 jQuery.removeAttr( elem, name );
7776 return;
7777 }
7778
7779 if ( hooks && "set" in hooks &&
7780 ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
7781 return ret;
7782 }
7783
7784 elem.setAttribute( name, value + "" );
7785 return value;
7786 }
7787
7788 if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
7789 return ret;
7790 }
7791
7792 ret = jQuery.find.attr( elem, name );
7793
7794 // Non-existent attributes return null, we normalize to undefined
7795 return ret == null ? undefined : ret;
7796 },
7797
7798 attrHooks: {
7799 type: {
7800 set: function( elem, value ) {
7801 if ( !support.radioValue && value === "radio" &&
7802 nodeName( elem, "input" ) ) {
7803 var val = elem.value;
7804 elem.setAttribute( "type", value );
7805 if ( val ) {
7806 elem.value = val;
7807 }
7808 return value;
7809 }
7810 }
7811 }
7812 },
7813
7814 removeAttr: function( elem, value ) {
7815 var name,
7816 i = 0,
7817
7818 // Attribute names can contain non-HTML whitespace characters
7819 // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
7820 attrNames = value && value.match( rnothtmlwhite );
7821
7822 if ( attrNames && elem.nodeType === 1 ) {
7823 while ( ( name = attrNames[ i++ ] ) ) {
7824 elem.removeAttribute( name );
7825 }
7826 }
7827 }
7828} );
7829
7830// Hooks for boolean attributes
7831boolHook = {
7832 set: function( elem, value, name ) {
7833 if ( value === false ) {
7834
7835 // Remove boolean attributes when set to false
7836 jQuery.removeAttr( elem, name );
7837 } else {
7838 elem.setAttribute( name, name );
7839 }
7840 return name;
7841 }
7842};
7843
7844jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
7845 var getter = attrHandle[ name ] || jQuery.find.attr;
7846
7847 attrHandle[ name ] = function( elem, name, isXML ) {
7848 var ret, handle,
7849 lowercaseName = name.toLowerCase();
7850
7851 if ( !isXML ) {
7852
7853 // Avoid an infinite loop by temporarily removing this function from the getter
7854 handle = attrHandle[ lowercaseName ];
7855 attrHandle[ lowercaseName ] = ret;
7856 ret = getter( elem, name, isXML ) != null ?
7857 lowercaseName :
7858 null;
7859 attrHandle[ lowercaseName ] = handle;
7860 }
7861 return ret;
7862 };
7863} );
7864
7865
7866
7867
7868var rfocusable = /^(?:input|select|textarea|button)$/i,
7869 rclickable = /^(?:a|area)$/i;
7870
7871jQuery.fn.extend( {
7872 prop: function( name, value ) {
7873 return access( this, jQuery.prop, name, value, arguments.length > 1 );
7874 },
7875
7876 removeProp: function( name ) {
7877 return this.each( function() {
7878 delete this[ jQuery.propFix[ name ] || name ];
7879 } );
7880 }
7881} );
7882
7883jQuery.extend( {
7884 prop: function( elem, name, value ) {
7885 var ret, hooks,
7886 nType = elem.nodeType;
7887
7888 // Don't get/set properties on text, comment and attribute nodes
7889 if ( nType === 3 || nType === 8 || nType === 2 ) {
7890 return;
7891 }
7892
7893 if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
7894
7895 // Fix name and attach hooks
7896 name = jQuery.propFix[ name ] || name;
7897 hooks = jQuery.propHooks[ name ];
7898 }
7899
7900 if ( value !== undefined ) {
7901 if ( hooks && "set" in hooks &&
7902 ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
7903 return ret;
7904 }
7905
7906 return ( elem[ name ] = value );
7907 }
7908
7909 if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
7910 return ret;
7911 }
7912
7913 return elem[ name ];
7914 },
7915
7916 propHooks: {
7917 tabIndex: {
7918 get: function( elem ) {
7919
7920 // Support: IE <=9 - 11 only
7921 // elem.tabIndex doesn't always return the
7922 // correct value when it hasn't been explicitly set
7923 // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
7924 // Use proper attribute retrieval(#12072)
7925 var tabindex = jQuery.find.attr( elem, "tabindex" );
7926
7927 if ( tabindex ) {
7928 return parseInt( tabindex, 10 );
7929 }
7930
7931 if (
7932 rfocusable.test( elem.nodeName ) ||
7933 rclickable.test( elem.nodeName ) &&
7934 elem.href
7935 ) {
7936 return 0;
7937 }
7938
7939 return -1;
7940 }
7941 }
7942 },
7943
7944 propFix: {
7945 "for": "htmlFor",
7946 "class": "className"
7947 }
7948} );
7949
7950// Support: IE <=11 only
7951// Accessing the selectedIndex property
7952// forces the browser to respect setting selected
7953// on the option
7954// The getter ensures a default option is selected
7955// when in an optgroup
7956// eslint rule "no-unused-expressions" is disabled for this code
7957// since it considers such accessions noop
7958if ( !support.optSelected ) {
7959 jQuery.propHooks.selected = {
7960 get: function( elem ) {
7961
7962 /* eslint no-unused-expressions: "off" */
7963
7964 var parent = elem.parentNode;
7965 if ( parent && parent.parentNode ) {
7966 parent.parentNode.selectedIndex;
7967 }
7968 return null;
7969 },
7970 set: function( elem ) {
7971
7972 /* eslint no-unused-expressions: "off" */
7973
7974 var parent = elem.parentNode;
7975 if ( parent ) {
7976 parent.selectedIndex;
7977
7978 if ( parent.parentNode ) {
7979 parent.parentNode.selectedIndex;
7980 }
7981 }
7982 }
7983 };
7984}
7985
7986jQuery.each( [
7987 "tabIndex",
7988 "readOnly",
7989 "maxLength",
7990 "cellSpacing",
7991 "cellPadding",
7992 "rowSpan",
7993 "colSpan",
7994 "useMap",
7995 "frameBorder",
7996 "contentEditable"
7997], function() {
7998 jQuery.propFix[ this.toLowerCase() ] = this;
7999} );
8000
8001
8002
8003
8004 // Strip and collapse whitespace according to HTML spec
8005 // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace
8006 function stripAndCollapse( value ) {
8007 var tokens = value.match( rnothtmlwhite ) || [];
8008 return tokens.join( " " );
8009 }
8010
8011
8012function getClass( elem ) {
8013 return elem.getAttribute && elem.getAttribute( "class" ) || "";
8014}
8015
8016function classesToArray( value ) {
8017 if ( Array.isArray( value ) ) {
8018 return value;
8019 }
8020 if ( typeof value === "string" ) {
8021 return value.match( rnothtmlwhite ) || [];
8022 }
8023 return [];
8024}
8025
8026jQuery.fn.extend( {
8027 addClass: function( value ) {
8028 var classes, elem, cur, curValue, clazz, j, finalValue,
8029 i = 0;
8030
8031 if ( isFunction( value ) ) {
8032 return this.each( function( j ) {
8033 jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
8034 } );
8035 }
8036
8037 classes = classesToArray( value );
8038
8039 if ( classes.length ) {
8040 while ( ( elem = this[ i++ ] ) ) {
8041 curValue = getClass( elem );
8042 cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
8043
8044 if ( cur ) {
8045 j = 0;
8046 while ( ( clazz = classes[ j++ ] ) ) {
8047 if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
8048 cur += clazz + " ";
8049 }
8050 }
8051
8052 // Only assign if different to avoid unneeded rendering.
8053 finalValue = stripAndCollapse( cur );
8054 if ( curValue !== finalValue ) {
8055 elem.setAttribute( "class", finalValue );
8056 }
8057 }
8058 }
8059 }
8060
8061 return this;
8062 },
8063
8064 removeClass: function( value ) {
8065 var classes, elem, cur, curValue, clazz, j, finalValue,
8066 i = 0;
8067
8068 if ( isFunction( value ) ) {
8069 return this.each( function( j ) {
8070 jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
8071 } );
8072 }
8073
8074 if ( !arguments.length ) {
8075 return this.attr( "class", "" );
8076 }
8077
8078 classes = classesToArray( value );
8079
8080 if ( classes.length ) {
8081 while ( ( elem = this[ i++ ] ) ) {
8082 curValue = getClass( elem );
8083
8084 // This expression is here for better compressibility (see addClass)
8085 cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
8086
8087 if ( cur ) {
8088 j = 0;
8089 while ( ( clazz = classes[ j++ ] ) ) {
8090
8091 // Remove *all* instances
8092 while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
8093 cur = cur.replace( " " + clazz + " ", " " );
8094 }
8095 }
8096
8097 // Only assign if different to avoid unneeded rendering.
8098 finalValue = stripAndCollapse( cur );
8099 if ( curValue !== finalValue ) {
8100 elem.setAttribute( "class", finalValue );
8101 }
8102 }
8103 }
8104 }
8105
8106 return this;
8107 },
8108
8109 toggleClass: function( value, stateVal ) {
8110 var type = typeof value,
8111 isValidValue = type === "string" || Array.isArray( value );
8112
8113 if ( typeof stateVal === "boolean" && isValidValue ) {
8114 return stateVal ? this.addClass( value ) : this.removeClass( value );
8115 }
8116
8117 if ( isFunction( value ) ) {
8118 return this.each( function( i ) {
8119 jQuery( this ).toggleClass(
8120 value.call( this, i, getClass( this ), stateVal ),
8121 stateVal
8122 );
8123 } );
8124 }
8125
8126 return this.each( function() {
8127 var className, i, self, classNames;
8128
8129 if ( isValidValue ) {
8130
8131 // Toggle individual class names
8132 i = 0;
8133 self = jQuery( this );
8134 classNames = classesToArray( value );
8135
8136 while ( ( className = classNames[ i++ ] ) ) {
8137
8138 // Check each className given, space separated list
8139 if ( self.hasClass( className ) ) {
8140 self.removeClass( className );
8141 } else {
8142 self.addClass( className );
8143 }
8144 }
8145
8146 // Toggle whole class name
8147 } else if ( value === undefined || type === "boolean" ) {
8148 className = getClass( this );
8149 if ( className ) {
8150
8151 // Store className if set
8152 dataPriv.set( this, "__className__", className );
8153 }
8154
8155 // If the element has a class name or if we're passed `false`,
8156 // then remove the whole classname (if there was one, the above saved it).
8157 // Otherwise bring back whatever was previously saved (if anything),
8158 // falling back to the empty string if nothing was stored.
8159 if ( this.setAttribute ) {
8160 this.setAttribute( "class",
8161 className || value === false ?
8162 "" :
8163 dataPriv.get( this, "__className__" ) || ""
8164 );
8165 }
8166 }
8167 } );
8168 },
8169
8170 hasClass: function( selector ) {
8171 var className, elem,
8172 i = 0;
8173
8174 className = " " + selector + " ";
8175 while ( ( elem = this[ i++ ] ) ) {
8176 if ( elem.nodeType === 1 &&
8177 ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
8178 return true;
8179 }
8180 }
8181
8182 return false;
8183 }
8184} );
8185
8186
8187
8188
8189var rreturn = /\r/g;
8190
8191jQuery.fn.extend( {
8192 val: function( value ) {
8193 var hooks, ret, valueIsFunction,
8194 elem = this[ 0 ];
8195
8196 if ( !arguments.length ) {
8197 if ( elem ) {
8198 hooks = jQuery.valHooks[ elem.type ] ||
8199 jQuery.valHooks[ elem.nodeName.toLowerCase() ];
8200
8201 if ( hooks &&
8202 "get" in hooks &&
8203 ( ret = hooks.get( elem, "value" ) ) !== undefined
8204 ) {
8205 return ret;
8206 }
8207
8208 ret = elem.value;
8209
8210 // Handle most common string cases
8211 if ( typeof ret === "string" ) {
8212 return ret.replace( rreturn, "" );
8213 }
8214
8215 // Handle cases where value is null/undef or number
8216 return ret == null ? "" : ret;
8217 }
8218
8219 return;
8220 }
8221
8222 valueIsFunction = isFunction( value );
8223
8224 return this.each( function( i ) {
8225 var val;
8226
8227 if ( this.nodeType !== 1 ) {
8228 return;
8229 }
8230
8231 if ( valueIsFunction ) {
8232 val = value.call( this, i, jQuery( this ).val() );
8233 } else {
8234 val = value;
8235 }
8236
8237 // Treat null/undefined as ""; convert numbers to string
8238 if ( val == null ) {
8239 val = "";
8240
8241 } else if ( typeof val === "number" ) {
8242 val += "";
8243
8244 } else if ( Array.isArray( val ) ) {
8245 val = jQuery.map( val, function( value ) {
8246 return value == null ? "" : value + "";
8247 } );
8248 }
8249
8250 hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
8251
8252 // If set returns undefined, fall back to normal setting
8253 if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
8254 this.value = val;
8255 }
8256 } );
8257 }
8258} );
8259
8260jQuery.extend( {
8261 valHooks: {
8262 option: {
8263 get: function( elem ) {
8264
8265 var val = jQuery.find.attr( elem, "value" );
8266 return val != null ?
8267 val :
8268
8269 // Support: IE <=10 - 11 only
8270 // option.text throws exceptions (#14686, #14858)
8271 // Strip and collapse whitespace
8272 // https://html.spec.whatwg.org/#strip-and-collapse-whitespace
8273 stripAndCollapse( jQuery.text( elem ) );
8274 }
8275 },
8276 select: {
8277 get: function( elem ) {
8278 var value, option, i,
8279 options = elem.options,
8280 index = elem.selectedIndex,
8281 one = elem.type === "select-one",
8282 values = one ? null : [],
8283 max = one ? index + 1 : options.length;
8284
8285 if ( index < 0 ) {
8286 i = max;
8287
8288 } else {
8289 i = one ? index : 0;
8290 }
8291
8292 // Loop through all the selected options
8293 for ( ; i < max; i++ ) {
8294 option = options[ i ];
8295
8296 // Support: IE <=9 only
8297 // IE8-9 doesn't update selected after form reset (#2551)
8298 if ( ( option.selected || i === index ) &&
8299
8300 // Don't return options that are disabled or in a disabled optgroup
8301 !option.disabled &&
8302 ( !option.parentNode.disabled ||
8303 !nodeName( option.parentNode, "optgroup" ) ) ) {
8304
8305 // Get the specific value for the option
8306 value = jQuery( option ).val();
8307
8308 // We don't need an array for one selects
8309 if ( one ) {
8310 return value;
8311 }
8312
8313 // Multi-Selects return an array
8314 values.push( value );
8315 }
8316 }
8317
8318 return values;
8319 },
8320
8321 set: function( elem, value ) {
8322 var optionSet, option,
8323 options = elem.options,
8324 values = jQuery.makeArray( value ),
8325 i = options.length;
8326
8327 while ( i-- ) {
8328 option = options[ i ];
8329
8330 /* eslint-disable no-cond-assign */
8331
8332 if ( option.selected =
8333 jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
8334 ) {
8335 optionSet = true;
8336 }
8337
8338 /* eslint-enable no-cond-assign */
8339 }
8340
8341 // Force browsers to behave consistently when non-matching value is set
8342 if ( !optionSet ) {
8343 elem.selectedIndex = -1;
8344 }
8345 return values;
8346 }
8347 }
8348 }
8349} );
8350
8351// Radios and checkboxes getter/setter
8352jQuery.each( [ "radio", "checkbox" ], function() {
8353 jQuery.valHooks[ this ] = {
8354 set: function( elem, value ) {
8355 if ( Array.isArray( value ) ) {
8356 return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
8357 }
8358 }
8359 };
8360 if ( !support.checkOn ) {
8361 jQuery.valHooks[ this ].get = function( elem ) {
8362 return elem.getAttribute( "value" ) === null ? "on" : elem.value;
8363 };
8364 }
8365} );
8366
8367
8368
8369
8370// Return jQuery for attributes-only inclusion
8371
8372
8373support.focusin = "onfocusin" in window;
8374
8375
8376var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
8377 stopPropagationCallback = function( e ) {
8378 e.stopPropagation();
8379 };
8380
8381jQuery.extend( jQuery.event, {
8382
8383 trigger: function( event, data, elem, onlyHandlers ) {
8384
8385 var i, cur, tmp, bubbleType, ontype, handle, special, lastElement,
8386 eventPath = [ elem || document ],
8387 type = hasOwn.call( event, "type" ) ? event.type : event,
8388 namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
8389
8390 cur = lastElement = tmp = elem = elem || document;
8391
8392 // Don't do events on text and comment nodes
8393 if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
8394 return;
8395 }
8396
8397 // focus/blur morphs to focusin/out; ensure we're not firing them right now
8398 if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
8399 return;
8400 }
8401
8402 if ( type.indexOf( "." ) > -1 ) {
8403
8404 // Namespaced trigger; create a regexp to match event type in handle()
8405 namespaces = type.split( "." );
8406 type = namespaces.shift();
8407 namespaces.sort();
8408 }
8409 ontype = type.indexOf( ":" ) < 0 && "on" + type;
8410
8411 // Caller can pass in a jQuery.Event object, Object, or just an event type string
8412 event = event[ jQuery.expando ] ?
8413 event :
8414 new jQuery.Event( type, typeof event === "object" && event );
8415
8416 // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
8417 event.isTrigger = onlyHandlers ? 2 : 3;
8418 event.namespace = namespaces.join( "." );
8419 event.rnamespace = event.namespace ?
8420 new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
8421 null;
8422
8423 // Clean up the event in case it is being reused
8424 event.result = undefined;
8425 if ( !event.target ) {
8426 event.target = elem;
8427 }
8428
8429 // Clone any incoming data and prepend the event, creating the handler arg list
8430 data = data == null ?
8431 [ event ] :
8432 jQuery.makeArray( data, [ event ] );
8433
8434 // Allow special events to draw outside the lines
8435 special = jQuery.event.special[ type ] || {};
8436 if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
8437 return;
8438 }
8439
8440 // Determine event propagation path in advance, per W3C events spec (#9951)
8441 // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
8442 if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {
8443
8444 bubbleType = special.delegateType || type;
8445 if ( !rfocusMorph.test( bubbleType + type ) ) {
8446 cur = cur.parentNode;
8447 }
8448 for ( ; cur; cur = cur.parentNode ) {
8449 eventPath.push( cur );
8450 tmp = cur;
8451 }
8452
8453 // Only add window if we got to document (e.g., not plain obj or detached DOM)
8454 if ( tmp === ( elem.ownerDocument || document ) ) {
8455 eventPath.push( tmp.defaultView || tmp.parentWindow || window );
8456 }
8457 }
8458
8459 // Fire handlers on the event path
8460 i = 0;
8461 while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
8462 lastElement = cur;
8463 event.type = i > 1 ?
8464 bubbleType :
8465 special.bindType || type;
8466
8467 // jQuery handler
8468 handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] &&
8469 dataPriv.get( cur, "handle" );
8470 if ( handle ) {
8471 handle.apply( cur, data );
8472 }
8473
8474 // Native handler
8475 handle = ontype && cur[ ontype ];
8476 if ( handle && handle.apply && acceptData( cur ) ) {
8477 event.result = handle.apply( cur, data );
8478 if ( event.result === false ) {
8479 event.preventDefault();
8480 }
8481 }
8482 }
8483 event.type = type;
8484
8485 // If nobody prevented the default action, do it now
8486 if ( !onlyHandlers && !event.isDefaultPrevented() ) {
8487
8488 if ( ( !special._default ||
8489 special._default.apply( eventPath.pop(), data ) === false ) &&
8490 acceptData( elem ) ) {
8491
8492 // Call a native DOM method on the target with the same name as the event.
8493 // Don't do default actions on window, that's where global variables be (#6170)
8494 if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {
8495
8496 // Don't re-trigger an onFOO event when we call its FOO() method
8497 tmp = elem[ ontype ];
8498
8499 if ( tmp ) {
8500 elem[ ontype ] = null;
8501 }
8502
8503 // Prevent re-triggering of the same event, since we already bubbled it above
8504 jQuery.event.triggered = type;
8505
8506 if ( event.isPropagationStopped() ) {
8507 lastElement.addEventListener( type, stopPropagationCallback );
8508 }
8509
8510 elem[ type ]();
8511
8512 if ( event.isPropagationStopped() ) {
8513 lastElement.removeEventListener( type, stopPropagationCallback );
8514 }
8515
8516 jQuery.event.triggered = undefined;
8517
8518 if ( tmp ) {
8519 elem[ ontype ] = tmp;
8520 }
8521 }
8522 }
8523 }
8524
8525 return event.result;
8526 },
8527
8528 // Piggyback on a donor event to simulate a different one
8529 // Used only for `focus(in | out)` events
8530 simulate: function( type, elem, event ) {
8531 var e = jQuery.extend(
8532 new jQuery.Event(),
8533 event,
8534 {
8535 type: type,
8536 isSimulated: true
8537 }
8538 );
8539
8540 jQuery.event.trigger( e, null, elem );
8541 }
8542
8543} );
8544
8545jQuery.fn.extend( {
8546
8547 trigger: function( type, data ) {
8548 return this.each( function() {
8549 jQuery.event.trigger( type, data, this );
8550 } );
8551 },
8552 triggerHandler: function( type, data ) {
8553 var elem = this[ 0 ];
8554 if ( elem ) {
8555 return jQuery.event.trigger( type, data, elem, true );
8556 }
8557 }
8558} );
8559
8560
8561// Support: Firefox <=44
8562// Firefox doesn't have focus(in | out) events
8563// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
8564//
8565// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
8566// focus(in | out) events fire after focus & blur events,
8567// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
8568// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
8569if ( !support.focusin ) {
8570 jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
8571
8572 // Attach a single capturing handler on the document while someone wants focusin/focusout
8573 var handler = function( event ) {
8574 jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );
8575 };
8576
8577 jQuery.event.special[ fix ] = {
8578 setup: function() {
8579 var doc = this.ownerDocument || this,
8580 attaches = dataPriv.access( doc, fix );
8581
8582 if ( !attaches ) {
8583 doc.addEventListener( orig, handler, true );
8584 }
8585 dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
8586 },
8587 teardown: function() {
8588 var doc = this.ownerDocument || this,
8589 attaches = dataPriv.access( doc, fix ) - 1;
8590
8591 if ( !attaches ) {
8592 doc.removeEventListener( orig, handler, true );
8593 dataPriv.remove( doc, fix );
8594
8595 } else {
8596 dataPriv.access( doc, fix, attaches );
8597 }
8598 }
8599 };
8600 } );
8601}
8602var location = window.location;
8603
8604var nonce = Date.now();
8605
8606var rquery = ( /\?/ );
8607
8608
8609
8610// Cross-browser xml parsing
8611jQuery.parseXML = function( data ) {
8612 var xml;
8613 if ( !data || typeof data !== "string" ) {
8614 return null;
8615 }
8616
8617 // Support: IE 9 - 11 only
8618 // IE throws on parseFromString with invalid input.
8619 try {
8620 xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
8621 } catch ( e ) {
8622 xml = undefined;
8623 }
8624
8625 if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
8626 jQuery.error( "Invalid XML: " + data );
8627 }
8628 return xml;
8629};
8630
8631
8632var
8633 rbracket = /\[\]$/,
8634 rCRLF = /\r?\n/g,
8635 rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
8636 rsubmittable = /^(?:input|select|textarea|keygen)/i;
8637
8638function buildParams( prefix, obj, traditional, add ) {
8639 var name;
8640
8641 if ( Array.isArray( obj ) ) {
8642
8643 // Serialize array item.
8644 jQuery.each( obj, function( i, v ) {
8645 if ( traditional || rbracket.test( prefix ) ) {
8646
8647 // Treat each array item as a scalar.
8648 add( prefix, v );
8649
8650 } else {
8651
8652 // Item is non-scalar (array or object), encode its numeric index.
8653 buildParams(
8654 prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
8655 v,
8656 traditional,
8657 add
8658 );
8659 }
8660 } );
8661
8662 } else if ( !traditional && toType( obj ) === "object" ) {
8663
8664 // Serialize object item.
8665 for ( name in obj ) {
8666 buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
8667 }
8668
8669 } else {
8670
8671 // Serialize scalar item.
8672 add( prefix, obj );
8673 }
8674}
8675
8676// Serialize an array of form elements or a set of
8677// key/values into a query string
8678jQuery.param = function( a, traditional ) {
8679 var prefix,
8680 s = [],
8681 add = function( key, valueOrFunction ) {
8682
8683 // If value is a function, invoke it and use its return value
8684 var value = isFunction( valueOrFunction ) ?
8685 valueOrFunction() :
8686 valueOrFunction;
8687
8688 s[ s.length ] = encodeURIComponent( key ) + "=" +
8689 encodeURIComponent( value == null ? "" : value );
8690 };
8691
8692 if ( a == null ) {
8693 return "";
8694 }
8695
8696 // If an array was passed in, assume that it is an array of form elements.
8697 if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
8698
8699 // Serialize the form elements
8700 jQuery.each( a, function() {
8701 add( this.name, this.value );
8702 } );
8703
8704 } else {
8705
8706 // If traditional, encode the "old" way (the way 1.3.2 or older
8707 // did it), otherwise encode params recursively.
8708 for ( prefix in a ) {
8709 buildParams( prefix, a[ prefix ], traditional, add );
8710 }
8711 }
8712
8713 // Return the resulting serialization
8714 return s.join( "&" );
8715};
8716
8717jQuery.fn.extend( {
8718 serialize: function() {
8719 return jQuery.param( this.serializeArray() );
8720 },
8721 serializeArray: function() {
8722 return this.map( function() {
8723
8724 // Can add propHook for "elements" to filter or add form elements
8725 var elements = jQuery.prop( this, "elements" );
8726 return elements ? jQuery.makeArray( elements ) : this;
8727 } )
8728 .filter( function() {
8729 var type = this.type;
8730
8731 // Use .is( ":disabled" ) so that fieldset[disabled] works
8732 return this.name && !jQuery( this ).is( ":disabled" ) &&
8733 rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
8734 ( this.checked || !rcheckableType.test( type ) );
8735 } )
8736 .map( function( i, elem ) {
8737 var val = jQuery( this ).val();
8738
8739 if ( val == null ) {
8740 return null;
8741 }
8742
8743 if ( Array.isArray( val ) ) {
8744 return jQuery.map( val, function( val ) {
8745 return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
8746 } );
8747 }
8748
8749 return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
8750 } ).get();
8751 }
8752} );
8753
8754
8755var
8756 r20 = /%20/g,
8757 rhash = /#.*$/,
8758 rantiCache = /([?&])_=[^&]*/,
8759 rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
8760
8761 // #7653, #8125, #8152: local protocol detection
8762 rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
8763 rnoContent = /^(?:GET|HEAD)$/,
8764 rprotocol = /^\/\//,
8765
8766 /* Prefilters
8767 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
8768 * 2) These are called:
8769 * - BEFORE asking for a transport
8770 * - AFTER param serialization (s.data is a string if s.processData is true)
8771 * 3) key is the dataType
8772 * 4) the catchall symbol "*" can be used
8773 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
8774 */
8775 prefilters = {},
8776
8777 /* Transports bindings
8778 * 1) key is the dataType
8779 * 2) the catchall symbol "*" can be used
8780 * 3) selection will start with transport dataType and THEN go to "*" if needed
8781 */
8782 transports = {},
8783
8784 // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
8785 allTypes = "*/".concat( "*" ),
8786
8787 // Anchor tag for parsing the document origin
8788 originAnchor = document.createElement( "a" );
8789 originAnchor.href = location.href;
8790
8791// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
8792function addToPrefiltersOrTransports( structure ) {
8793
8794 // dataTypeExpression is optional and defaults to "*"
8795 return function( dataTypeExpression, func ) {
8796
8797 if ( typeof dataTypeExpression !== "string" ) {
8798 func = dataTypeExpression;
8799 dataTypeExpression = "*";
8800 }
8801
8802 var dataType,
8803 i = 0,
8804 dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];
8805
8806 if ( isFunction( func ) ) {
8807
8808 // For each dataType in the dataTypeExpression
8809 while ( ( dataType = dataTypes[ i++ ] ) ) {
8810
8811 // Prepend if requested
8812 if ( dataType[ 0 ] === "+" ) {
8813 dataType = dataType.slice( 1 ) || "*";
8814 ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );
8815
8816 // Otherwise append
8817 } else {
8818 ( structure[ dataType ] = structure[ dataType ] || [] ).push( func );
8819 }
8820 }
8821 }
8822 };
8823}
8824
8825// Base inspection function for prefilters and transports
8826function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
8827
8828 var inspected = {},
8829 seekingTransport = ( structure === transports );
8830
8831 function inspect( dataType ) {
8832 var selected;
8833 inspected[ dataType ] = true;
8834 jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
8835 var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
8836 if ( typeof dataTypeOrTransport === "string" &&
8837 !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
8838
8839 options.dataTypes.unshift( dataTypeOrTransport );
8840 inspect( dataTypeOrTransport );
8841 return false;
8842 } else if ( seekingTransport ) {
8843 return !( selected = dataTypeOrTransport );
8844 }
8845 } );
8846 return selected;
8847 }
8848
8849 return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
8850}
8851
8852// A special extend for ajax options
8853// that takes "flat" options (not to be deep extended)
8854// Fixes #9887
8855function ajaxExtend( target, src ) {
8856 var key, deep,
8857 flatOptions = jQuery.ajaxSettings.flatOptions || {};
8858
8859 for ( key in src ) {
8860 if ( src[ key ] !== undefined ) {
8861 ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
8862 }
8863 }
8864 if ( deep ) {
8865 jQuery.extend( true, target, deep );
8866 }
8867
8868 return target;
8869}
8870
8871/* Handles responses to an ajax request:
8872 * - finds the right dataType (mediates between content-type and expected dataType)
8873 * - returns the corresponding response
8874 */
8875function ajaxHandleResponses( s, jqXHR, responses ) {
8876
8877 var ct, type, finalDataType, firstDataType,
8878 contents = s.contents,
8879 dataTypes = s.dataTypes;
8880
8881 // Remove auto dataType and get content-type in the process
8882 while ( dataTypes[ 0 ] === "*" ) {
8883 dataTypes.shift();
8884 if ( ct === undefined ) {
8885 ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" );
8886 }
8887 }
8888
8889 // Check if we're dealing with a known content-type
8890 if ( ct ) {
8891 for ( type in contents ) {
8892 if ( contents[ type ] && contents[ type ].test( ct ) ) {
8893 dataTypes.unshift( type );
8894 break;
8895 }
8896 }
8897 }
8898
8899 // Check to see if we have a response for the expected dataType
8900 if ( dataTypes[ 0 ] in responses ) {
8901 finalDataType = dataTypes[ 0 ];
8902 } else {
8903
8904 // Try convertible dataTypes
8905 for ( type in responses ) {
8906 if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) {
8907 finalDataType = type;
8908 break;
8909 }
8910 if ( !firstDataType ) {
8911 firstDataType = type;
8912 }
8913 }
8914
8915 // Or just use first one
8916 finalDataType = finalDataType || firstDataType;
8917 }
8918
8919 // If we found a dataType
8920 // We add the dataType to the list if needed
8921 // and return the corresponding response
8922 if ( finalDataType ) {
8923 if ( finalDataType !== dataTypes[ 0 ] ) {
8924 dataTypes.unshift( finalDataType );
8925 }
8926 return responses[ finalDataType ];
8927 }
8928}
8929
8930/* Chain conversions given the request and the original response
8931 * Also sets the responseXXX fields on the jqXHR instance
8932 */
8933function ajaxConvert( s, response, jqXHR, isSuccess ) {
8934 var conv2, current, conv, tmp, prev,
8935 converters = {},
8936
8937 // Work with a copy of dataTypes in case we need to modify it for conversion
8938 dataTypes = s.dataTypes.slice();
8939
8940 // Create converters map with lowercased keys
8941 if ( dataTypes[ 1 ] ) {
8942 for ( conv in s.converters ) {
8943 converters[ conv.toLowerCase() ] = s.converters[ conv ];
8944 }
8945 }
8946
8947 current = dataTypes.shift();
8948
8949 // Convert to each sequential dataType
8950 while ( current ) {
8951
8952 if ( s.responseFields[ current ] ) {
8953 jqXHR[ s.responseFields[ current ] ] = response;
8954 }
8955
8956 // Apply the dataFilter if provided
8957 if ( !prev && isSuccess && s.dataFilter ) {
8958 response = s.dataFilter( response, s.dataType );
8959 }
8960
8961 prev = current;
8962 current = dataTypes.shift();
8963
8964 if ( current ) {
8965
8966 // There's only work to do if current dataType is non-auto
8967 if ( current === "*" ) {
8968
8969 current = prev;
8970
8971 // Convert response if prev dataType is non-auto and differs from current
8972 } else if ( prev !== "*" && prev !== current ) {
8973
8974 // Seek a direct converter
8975 conv = converters[ prev + " " + current ] || converters[ "* " + current ];
8976
8977 // If none found, seek a pair
8978 if ( !conv ) {
8979 for ( conv2 in converters ) {
8980
8981 // If conv2 outputs current
8982 tmp = conv2.split( " " );
8983 if ( tmp[ 1 ] === current ) {
8984
8985 // If prev can be converted to accepted input
8986 conv = converters[ prev + " " + tmp[ 0 ] ] ||
8987 converters[ "* " + tmp[ 0 ] ];
8988 if ( conv ) {
8989
8990 // Condense equivalence converters
8991 if ( conv === true ) {
8992 conv = converters[ conv2 ];
8993
8994 // Otherwise, insert the intermediate dataType
8995 } else if ( converters[ conv2 ] !== true ) {
8996 current = tmp[ 0 ];
8997 dataTypes.unshift( tmp[ 1 ] );
8998 }
8999 break;
9000 }
9001 }
9002 }
9003 }
9004
9005 // Apply converter (if not an equivalence)
9006 if ( conv !== true ) {
9007
9008 // Unless errors are allowed to bubble, catch and return them
9009 if ( conv && s.throws ) {
9010 response = conv( response );
9011 } else {
9012 try {
9013 response = conv( response );
9014 } catch ( e ) {
9015 return {
9016 state: "parsererror",
9017 error: conv ? e : "No conversion from " + prev + " to " + current
9018 };
9019 }
9020 }
9021 }
9022 }
9023 }
9024 }
9025
9026 return { state: "success", data: response };
9027}
9028
9029jQuery.extend( {
9030
9031 // Counter for holding the number of active queries
9032 active: 0,
9033
9034 // Last-Modified header cache for next request
9035 lastModified: {},
9036 etag: {},
9037
9038 ajaxSettings: {
9039 url: location.href,
9040 type: "GET",
9041 isLocal: rlocalProtocol.test( location.protocol ),
9042 global: true,
9043 processData: true,
9044 async: true,
9045 contentType: "application/x-www-form-urlencoded; charset=UTF-8",
9046
9047 /*
9048 timeout: 0,
9049 data: null,
9050 dataType: null,
9051 username: null,
9052 password: null,
9053 cache: null,
9054 throws: false,
9055 traditional: false,
9056 headers: {},
9057 */
9058
9059 accepts: {
9060 "*": allTypes,
9061 text: "text/plain",
9062 html: "text/html",
9063 xml: "application/xml, text/xml",
9064 json: "application/json, text/javascript"
9065 },
9066
9067 contents: {
9068 xml: /\bxml\b/,
9069 html: /\bhtml/,
9070 json: /\bjson\b/
9071 },
9072
9073 responseFields: {
9074 xml: "responseXML",
9075 text: "responseText",
9076 json: "responseJSON"
9077 },
9078
9079 // Data converters
9080 // Keys separate source (or catchall "*") and destination types with a single space
9081 converters: {
9082
9083 // Convert anything to text
9084 "* text": String,
9085
9086 // Text to html (true = no transformation)
9087 "text html": true,
9088
9089 // Evaluate text as a json expression
9090 "text json": JSON.parse,
9091
9092 // Parse text as xml
9093 "text xml": jQuery.parseXML
9094 },
9095
9096 // For options that shouldn't be deep extended:
9097 // you can add your own custom options here if
9098 // and when you create one that shouldn't be
9099 // deep extended (see ajaxExtend)
9100 flatOptions: {
9101 url: true,
9102 context: true
9103 }
9104 },
9105
9106 // Creates a full fledged settings object into target
9107 // with both ajaxSettings and settings fields.
9108 // If target is omitted, writes into ajaxSettings.
9109 ajaxSetup: function( target, settings ) {
9110 return settings ?
9111
9112 // Building a settings object
9113 ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
9114
9115 // Extending ajaxSettings
9116 ajaxExtend( jQuery.ajaxSettings, target );
9117 },
9118
9119 ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
9120 ajaxTransport: addToPrefiltersOrTransports( transports ),
9121
9122 // Main method
9123 ajax: function( url, options ) {
9124
9125 // If url is an object, simulate pre-1.5 signature
9126 if ( typeof url === "object" ) {
9127 options = url;
9128 url = undefined;
9129 }
9130
9131 // Force options to be an object
9132 options = options || {};
9133
9134 var transport,
9135
9136 // URL without anti-cache param
9137 cacheURL,
9138
9139 // Response headers
9140 responseHeadersString,
9141 responseHeaders,
9142
9143 // timeout handle
9144 timeoutTimer,
9145
9146 // Url cleanup var
9147 urlAnchor,
9148
9149 // Request state (becomes false upon send and true upon completion)
9150 completed,
9151
9152 // To know if global events are to be dispatched
9153 fireGlobals,
9154
9155 // Loop variable
9156 i,
9157
9158 // uncached part of the url
9159 uncached,
9160
9161 // Create the final options object
9162 s = jQuery.ajaxSetup( {}, options ),
9163
9164 // Callbacks context
9165 callbackContext = s.context || s,
9166
9167 // Context for global events is callbackContext if it is a DOM node or jQuery collection
9168 globalEventContext = s.context &&
9169 ( callbackContext.nodeType || callbackContext.jquery ) ?
9170 jQuery( callbackContext ) :
9171 jQuery.event,
9172
9173 // Deferreds
9174 deferred = jQuery.Deferred(),
9175 completeDeferred = jQuery.Callbacks( "once memory" ),
9176
9177 // Status-dependent callbacks
9178 statusCode = s.statusCode || {},
9179
9180 // Headers (they are sent all at once)
9181 requestHeaders = {},
9182 requestHeadersNames = {},
9183
9184 // Default abort message
9185 strAbort = "canceled",
9186
9187 // Fake xhr
9188 jqXHR = {
9189 readyState: 0,
9190
9191 // Builds headers hashtable if needed
9192 getResponseHeader: function( key ) {
9193 var match;
9194 if ( completed ) {
9195 if ( !responseHeaders ) {
9196 responseHeaders = {};
9197 while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
9198 responseHeaders[ match[ 1 ].toLowerCase() + " " ] =
9199 ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] )
9200 .concat( match[ 2 ] );
9201 }
9202 }
9203 match = responseHeaders[ key.toLowerCase() + " " ];
9204 }
9205 return match == null ? null : match.join( ", " );
9206 },
9207
9208 // Raw string
9209 getAllResponseHeaders: function() {
9210 return completed ? responseHeadersString : null;
9211 },
9212
9213 // Caches the header
9214 setRequestHeader: function( name, value ) {
9215 if ( completed == null ) {
9216 name = requestHeadersNames[ name.toLowerCase() ] =
9217 requestHeadersNames[ name.toLowerCase() ] || name;
9218 requestHeaders[ name ] = value;
9219 }
9220 return this;
9221 },
9222
9223 // Overrides response content-type header
9224 overrideMimeType: function( type ) {
9225 if ( completed == null ) {
9226 s.mimeType = type;
9227 }
9228 return this;
9229 },
9230
9231 // Status-dependent callbacks
9232 statusCode: function( map ) {
9233 var code;
9234 if ( map ) {
9235 if ( completed ) {
9236
9237 // Execute the appropriate callbacks
9238 jqXHR.always( map[ jqXHR.status ] );
9239 } else {
9240
9241 // Lazy-add the new callbacks in a way that preserves old ones
9242 for ( code in map ) {
9243 statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
9244 }
9245 }
9246 }
9247 return this;
9248 },
9249
9250 // Cancel the request
9251 abort: function( statusText ) {
9252 var finalText = statusText || strAbort;
9253 if ( transport ) {
9254 transport.abort( finalText );
9255 }
9256 done( 0, finalText );
9257 return this;
9258 }
9259 };
9260
9261 // Attach deferreds
9262 deferred.promise( jqXHR );
9263
9264 // Add protocol if not provided (prefilters might expect it)
9265 // Handle falsy url in the settings object (#10093: consistency with old signature)
9266 // We also use the url parameter if available
9267 s.url = ( ( url || s.url || location.href ) + "" )
9268 .replace( rprotocol, location.protocol + "//" );
9269
9270 // Alias method option to type as per ticket #12004
9271 s.type = options.method || options.type || s.method || s.type;
9272
9273 // Extract dataTypes list
9274 s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ];
9275
9276 // A cross-domain request is in order when the origin doesn't match the current origin.
9277 if ( s.crossDomain == null ) {
9278 urlAnchor = document.createElement( "a" );
9279
9280 // Support: IE <=8 - 11, Edge 12 - 15
9281 // IE throws exception on accessing the href property if url is malformed,
9282 // e.g. http://example.com:80x/
9283 try {
9284 urlAnchor.href = s.url;
9285
9286 // Support: IE <=8 - 11 only
9287 // Anchor's host property isn't correctly set when s.url is relative
9288 urlAnchor.href = urlAnchor.href;
9289 s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==
9290 urlAnchor.protocol + "//" + urlAnchor.host;
9291 } catch ( e ) {
9292
9293 // If there is an error parsing the URL, assume it is crossDomain,
9294 // it can be rejected by the transport if it is invalid
9295 s.crossDomain = true;
9296 }
9297 }
9298
9299 // Convert data if not already a string
9300 if ( s.data && s.processData && typeof s.data !== "string" ) {
9301 s.data = jQuery.param( s.data, s.traditional );
9302 }
9303
9304 // Apply prefilters
9305 inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
9306
9307 // If request was aborted inside a prefilter, stop there
9308 if ( completed ) {
9309 return jqXHR;
9310 }
9311
9312 // We can fire global events as of now if asked to
9313 // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
9314 fireGlobals = jQuery.event && s.global;
9315
9316 // Watch for a new set of requests
9317 if ( fireGlobals && jQuery.active++ === 0 ) {
9318 jQuery.event.trigger( "ajaxStart" );
9319 }
9320
9321 // Uppercase the type
9322 s.type = s.type.toUpperCase();
9323
9324 // Determine if request has content
9325 s.hasContent = !rnoContent.test( s.type );
9326
9327 // Save the URL in case we're toying with the If-Modified-Since
9328 // and/or If-None-Match header later on
9329 // Remove hash to simplify url manipulation
9330 cacheURL = s.url.replace( rhash, "" );
9331
9332 // More options handling for requests with no content
9333 if ( !s.hasContent ) {
9334
9335 // Remember the hash so we can put it back
9336 uncached = s.url.slice( cacheURL.length );
9337
9338 // If data is available and should be processed, append data to url
9339 if ( s.data && ( s.processData || typeof s.data === "string" ) ) {
9340 cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data;
9341
9342 // #9682: remove data so that it's not used in an eventual retry
9343 delete s.data;
9344 }
9345
9346 // Add or update anti-cache param if needed
9347 if ( s.cache === false ) {
9348 cacheURL = cacheURL.replace( rantiCache, "$1" );
9349 uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached;
9350 }
9351
9352 // Put hash and anti-cache on the URL that will be requested (gh-1732)
9353 s.url = cacheURL + uncached;
9354
9355 // Change '%20' to '+' if this is encoded form body content (gh-2658)
9356 } else if ( s.data && s.processData &&
9357 ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) {
9358 s.data = s.data.replace( r20, "+" );
9359 }
9360
9361 // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
9362 if ( s.ifModified ) {
9363 if ( jQuery.lastModified[ cacheURL ] ) {
9364 jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
9365 }
9366 if ( jQuery.etag[ cacheURL ] ) {
9367 jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
9368 }
9369 }
9370
9371 // Set the correct header, if data is being sent
9372 if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
9373 jqXHR.setRequestHeader( "Content-Type", s.contentType );
9374 }
9375
9376 // Set the Accepts header for the server, depending on the dataType
9377 jqXHR.setRequestHeader(
9378 "Accept",
9379 s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?
9380 s.accepts[ s.dataTypes[ 0 ] ] +
9381 ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
9382 s.accepts[ "*" ]
9383 );
9384
9385 // Check for headers option
9386 for ( i in s.headers ) {
9387 jqXHR.setRequestHeader( i, s.headers[ i ] );
9388 }
9389
9390 // Allow custom headers/mimetypes and early abort
9391 if ( s.beforeSend &&
9392 ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {
9393
9394 // Abort if not done already and return
9395 return jqXHR.abort();
9396 }
9397
9398 // Aborting is no longer a cancellation
9399 strAbort = "abort";
9400
9401 // Install callbacks on deferreds
9402 completeDeferred.add( s.complete );
9403 jqXHR.done( s.success );
9404 jqXHR.fail( s.error );
9405
9406 // Get transport
9407 transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
9408
9409 // If no transport, we auto-abort
9410 if ( !transport ) {
9411 done( -1, "No Transport" );
9412 } else {
9413 jqXHR.readyState = 1;
9414
9415 // Send global event
9416 if ( fireGlobals ) {
9417 globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
9418 }
9419
9420 // If request was aborted inside ajaxSend, stop there
9421 if ( completed ) {
9422 return jqXHR;
9423 }
9424
9425 // Timeout
9426 if ( s.async && s.timeout > 0 ) {
9427 timeoutTimer = window.setTimeout( function() {
9428 jqXHR.abort( "timeout" );
9429 }, s.timeout );
9430 }
9431
9432 try {
9433 completed = false;
9434 transport.send( requestHeaders, done );
9435 } catch ( e ) {
9436
9437 // Rethrow post-completion exceptions
9438 if ( completed ) {
9439 throw e;
9440 }
9441
9442 // Propagate others as results
9443 done( -1, e );
9444 }
9445 }
9446
9447 // Callback for when everything is done
9448 function done( status, nativeStatusText, responses, headers ) {
9449 var isSuccess, success, error, response, modified,
9450 statusText = nativeStatusText;
9451
9452 // Ignore repeat invocations
9453 if ( completed ) {
9454 return;
9455 }
9456
9457 completed = true;
9458
9459 // Clear timeout if it exists
9460 if ( timeoutTimer ) {
9461 window.clearTimeout( timeoutTimer );
9462 }
9463
9464 // Dereference transport for early garbage collection
9465 // (no matter how long the jqXHR object will be used)
9466 transport = undefined;
9467
9468 // Cache response headers
9469 responseHeadersString = headers || "";
9470
9471 // Set readyState
9472 jqXHR.readyState = status > 0 ? 4 : 0;
9473
9474 // Determine if successful
9475 isSuccess = status >= 200 && status < 300 || status === 304;
9476
9477 // Get response data
9478 if ( responses ) {
9479 response = ajaxHandleResponses( s, jqXHR, responses );
9480 }
9481
9482 // Convert no matter what (that way responseXXX fields are always set)
9483 response = ajaxConvert( s, response, jqXHR, isSuccess );
9484
9485 // If successful, handle type chaining
9486 if ( isSuccess ) {
9487
9488 // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
9489 if ( s.ifModified ) {
9490 modified = jqXHR.getResponseHeader( "Last-Modified" );
9491 if ( modified ) {
9492 jQuery.lastModified[ cacheURL ] = modified;
9493 }
9494 modified = jqXHR.getResponseHeader( "etag" );
9495 if ( modified ) {
9496 jQuery.etag[ cacheURL ] = modified;
9497 }
9498 }
9499
9500 // if no content
9501 if ( status === 204 || s.type === "HEAD" ) {
9502 statusText = "nocontent";
9503
9504 // if not modified
9505 } else if ( status === 304 ) {
9506 statusText = "notmodified";
9507
9508 // If we have data, let's convert it
9509 } else {
9510 statusText = response.state;
9511 success = response.data;
9512 error = response.error;
9513 isSuccess = !error;
9514 }
9515 } else {
9516
9517 // Extract error from statusText and normalize for non-aborts
9518 error = statusText;
9519 if ( status || !statusText ) {
9520 statusText = "error";
9521 if ( status < 0 ) {
9522 status = 0;
9523 }
9524 }
9525 }
9526
9527 // Set data for the fake xhr object
9528 jqXHR.status = status;
9529 jqXHR.statusText = ( nativeStatusText || statusText ) + "";
9530
9531 // Success/Error
9532 if ( isSuccess ) {
9533 deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
9534 } else {
9535 deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
9536 }
9537
9538 // Status-dependent callbacks
9539 jqXHR.statusCode( statusCode );
9540 statusCode = undefined;
9541
9542 if ( fireGlobals ) {
9543 globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
9544 [ jqXHR, s, isSuccess ? success : error ] );
9545 }
9546
9547 // Complete
9548 completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
9549
9550 if ( fireGlobals ) {
9551 globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
9552
9553 // Handle the global AJAX counter
9554 if ( !( --jQuery.active ) ) {
9555 jQuery.event.trigger( "ajaxStop" );
9556 }
9557 }
9558 }
9559
9560 return jqXHR;
9561 },
9562
9563 getJSON: function( url, data, callback ) {
9564 return jQuery.get( url, data, callback, "json" );
9565 },
9566
9567 getScript: function( url, callback ) {
9568 return jQuery.get( url, undefined, callback, "script" );
9569 }
9570} );
9571
9572jQuery.each( [ "get", "post" ], function( i, method ) {
9573 jQuery[ method ] = function( url, data, callback, type ) {
9574
9575 // Shift arguments if data argument was omitted
9576 if ( isFunction( data ) ) {
9577 type = type || callback;
9578 callback = data;
9579 data = undefined;
9580 }
9581
9582 // The url can be an options object (which then must have .url)
9583 return jQuery.ajax( jQuery.extend( {
9584 url: url,
9585 type: method,
9586 dataType: type,
9587 data: data,
9588 success: callback
9589 }, jQuery.isPlainObject( url ) && url ) );
9590 };
9591} );
9592
9593
9594jQuery._evalUrl = function( url, options ) {
9595 return jQuery.ajax( {
9596 url: url,
9597
9598 // Make this explicit, since user can override this through ajaxSetup (#11264)
9599 type: "GET",
9600 dataType: "script",
9601 cache: true,
9602 async: false,
9603 global: false,
9604
9605 // Only evaluate the response if it is successful (gh-4126)
9606 // dataFilter is not invoked for failure responses, so using it instead
9607 // of the default converter is kludgy but it works.
9608 converters: {
9609 "text script": function() {}
9610 },
9611 dataFilter: function( response ) {
9612 jQuery.globalEval( response, options );
9613 }
9614 } );
9615};
9616
9617
9618jQuery.fn.extend( {
9619 wrapAll: function( html ) {
9620 var wrap;
9621
9622 if ( this[ 0 ] ) {
9623 if ( isFunction( html ) ) {
9624 html = html.call( this[ 0 ] );
9625 }
9626
9627 // The elements to wrap the target around
9628 wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
9629
9630 if ( this[ 0 ].parentNode ) {
9631 wrap.insertBefore( this[ 0 ] );
9632 }
9633
9634 wrap.map( function() {
9635 var elem = this;
9636
9637 while ( elem.firstElementChild ) {
9638 elem = elem.firstElementChild;
9639 }
9640
9641 return elem;
9642 } ).append( this );
9643 }
9644
9645 return this;
9646 },
9647
9648 wrapInner: function( html ) {
9649 if ( isFunction( html ) ) {
9650 return this.each( function( i ) {
9651 jQuery( this ).wrapInner( html.call( this, i ) );
9652 } );
9653 }
9654
9655 return this.each( function() {
9656 var self = jQuery( this ),
9657 contents = self.contents();
9658
9659 if ( contents.length ) {
9660 contents.wrapAll( html );
9661
9662 } else {
9663 self.append( html );
9664 }
9665 } );
9666 },
9667
9668 wrap: function( html ) {
9669 var htmlIsFunction = isFunction( html );
9670
9671 return this.each( function( i ) {
9672 jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );
9673 } );
9674 },
9675
9676 unwrap: function( selector ) {
9677 this.parent( selector ).not( "body" ).each( function() {
9678 jQuery( this ).replaceWith( this.childNodes );
9679 } );
9680 return this;
9681 }
9682} );
9683
9684
9685jQuery.expr.pseudos.hidden = function( elem ) {
9686 return !jQuery.expr.pseudos.visible( elem );
9687};
9688jQuery.expr.pseudos.visible = function( elem ) {
9689 return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
9690};
9691
9692
9693
9694
9695jQuery.ajaxSettings.xhr = function() {
9696 try {
9697 return new window.XMLHttpRequest();
9698 } catch ( e ) {}
9699};
9700
9701var xhrSuccessStatus = {
9702
9703 // File protocol always yields status code 0, assume 200
9704 0: 200,
9705
9706 // Support: IE <=9 only
9707 // #1450: sometimes IE returns 1223 when it should be 204
9708 1223: 204
9709 },
9710 xhrSupported = jQuery.ajaxSettings.xhr();
9711
9712support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
9713support.ajax = xhrSupported = !!xhrSupported;
9714
9715jQuery.ajaxTransport( function( options ) {
9716 var callback, errorCallback;
9717
9718 // Cross domain only allowed if supported through XMLHttpRequest
9719 if ( support.cors || xhrSupported && !options.crossDomain ) {
9720 return {
9721 send: function( headers, complete ) {
9722 var i,
9723 xhr = options.xhr();
9724
9725 xhr.open(
9726 options.type,
9727 options.url,
9728 options.async,
9729 options.username,
9730 options.password
9731 );
9732
9733 // Apply custom fields if provided
9734 if ( options.xhrFields ) {
9735 for ( i in options.xhrFields ) {
9736 xhr[ i ] = options.xhrFields[ i ];
9737 }
9738 }
9739
9740 // Override mime type if needed
9741 if ( options.mimeType && xhr.overrideMimeType ) {
9742 xhr.overrideMimeType( options.mimeType );
9743 }
9744
9745 // X-Requested-With header
9746 // For cross-domain requests, seeing as conditions for a preflight are
9747 // akin to a jigsaw puzzle, we simply never set it to be sure.
9748 // (it can always be set on a per-request basis or even using ajaxSetup)
9749 // For same-domain requests, won't change header if already provided.
9750 if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) {
9751 headers[ "X-Requested-With" ] = "XMLHttpRequest";
9752 }
9753
9754 // Set headers
9755 for ( i in headers ) {
9756 xhr.setRequestHeader( i, headers[ i ] );
9757 }
9758
9759 // Callback
9760 callback = function( type ) {
9761 return function() {
9762 if ( callback ) {
9763 callback = errorCallback = xhr.onload =
9764 xhr.onerror = xhr.onabort = xhr.ontimeout =
9765 xhr.onreadystatechange = null;
9766
9767 if ( type === "abort" ) {
9768 xhr.abort();
9769 } else if ( type === "error" ) {
9770
9771 // Support: IE <=9 only
9772 // On a manual native abort, IE9 throws
9773 // errors on any property access that is not readyState
9774 if ( typeof xhr.status !== "number" ) {
9775 complete( 0, "error" );
9776 } else {
9777 complete(
9778
9779 // File: protocol always yields status 0; see #8605, #14207
9780 xhr.status,
9781 xhr.statusText
9782 );
9783 }
9784 } else {
9785 complete(
9786 xhrSuccessStatus[ xhr.status ] || xhr.status,
9787 xhr.statusText,
9788
9789 // Support: IE <=9 only
9790 // IE9 has no XHR2 but throws on binary (trac-11426)
9791 // For XHR2 non-text, let the caller handle it (gh-2498)
9792 ( xhr.responseType || "text" ) !== "text" ||
9793 typeof xhr.responseText !== "string" ?
9794 { binary: xhr.response } :
9795 { text: xhr.responseText },
9796 xhr.getAllResponseHeaders()
9797 );
9798 }
9799 }
9800 };
9801 };
9802
9803 // Listen to events
9804 xhr.onload = callback();
9805 errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" );
9806
9807 // Support: IE 9 only
9808 // Use onreadystatechange to replace onabort
9809 // to handle uncaught aborts
9810 if ( xhr.onabort !== undefined ) {
9811 xhr.onabort = errorCallback;
9812 } else {
9813 xhr.onreadystatechange = function() {
9814
9815 // Check readyState before timeout as it changes
9816 if ( xhr.readyState === 4 ) {
9817
9818 // Allow onerror to be called first,
9819 // but that will not handle a native abort
9820 // Also, save errorCallback to a variable
9821 // as xhr.onerror cannot be accessed
9822 window.setTimeout( function() {
9823 if ( callback ) {
9824 errorCallback();
9825 }
9826 } );
9827 }
9828 };
9829 }
9830
9831 // Create the abort callback
9832 callback = callback( "abort" );
9833
9834 try {
9835
9836 // Do send the request (this may raise an exception)
9837 xhr.send( options.hasContent && options.data || null );
9838 } catch ( e ) {
9839
9840 // #14683: Only rethrow if this hasn't been notified as an error yet
9841 if ( callback ) {
9842 throw e;
9843 }
9844 }
9845 },
9846
9847 abort: function() {
9848 if ( callback ) {
9849 callback();
9850 }
9851 }
9852 };
9853 }
9854} );
9855
9856
9857
9858
9859// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)
9860jQuery.ajaxPrefilter( function( s ) {
9861 if ( s.crossDomain ) {
9862 s.contents.script = false;
9863 }
9864} );
9865
9866// Install script dataType
9867jQuery.ajaxSetup( {
9868 accepts: {
9869 script: "text/javascript, application/javascript, " +
9870 "application/ecmascript, application/x-ecmascript"
9871 },
9872 contents: {
9873 script: /\b(?:java|ecma)script\b/
9874 },
9875 converters: {
9876 "text script": function( text ) {
9877 jQuery.globalEval( text );
9878 return text;
9879 }
9880 }
9881} );
9882
9883// Handle cache's special case and crossDomain
9884jQuery.ajaxPrefilter( "script", function( s ) {
9885 if ( s.cache === undefined ) {
9886 s.cache = false;
9887 }
9888 if ( s.crossDomain ) {
9889 s.type = "GET";
9890 }
9891} );
9892
9893// Bind script tag hack transport
9894jQuery.ajaxTransport( "script", function( s ) {
9895
9896 // This transport only deals with cross domain or forced-by-attrs requests
9897 if ( s.crossDomain || s.scriptAttrs ) {
9898 var script, callback;
9899 return {
9900 send: function( _, complete ) {
9901 script = jQuery( "<script>" )
9902 .attr( s.scriptAttrs || {} )
9903 .prop( { charset: s.scriptCharset, src: s.url } )
9904 .on( "load error", callback = function( evt ) {
9905 script.remove();
9906 callback = null;
9907 if ( evt ) {
9908 complete( evt.type === "error" ? 404 : 200, evt.type );
9909 }
9910 } );
9911
9912 // Use native DOM manipulation to avoid our domManip AJAX trickery
9913 document.head.appendChild( script[ 0 ] );
9914 },
9915 abort: function() {
9916 if ( callback ) {
9917 callback();
9918 }
9919 }
9920 };
9921 }
9922} );
9923
9924
9925
9926
9927var oldCallbacks = [],
9928 rjsonp = /(=)\?(?=&|$)|\?\?/;
9929
9930// Default jsonp settings
9931jQuery.ajaxSetup( {
9932 jsonp: "callback",
9933 jsonpCallback: function() {
9934 var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
9935 this[ callback ] = true;
9936 return callback;
9937 }
9938} );
9939
9940// Detect, normalize options and install callbacks for jsonp requests
9941jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
9942
9943 var callbackName, overwritten, responseContainer,
9944 jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
9945 "url" :
9946 typeof s.data === "string" &&
9947 ( s.contentType || "" )
9948 .indexOf( "application/x-www-form-urlencoded" ) === 0 &&
9949 rjsonp.test( s.data ) && "data"
9950 );
9951
9952 // Handle iff the expected data type is "jsonp" or we have a parameter to set
9953 if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
9954
9955 // Get callback name, remembering preexisting value associated with it
9956 callbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?
9957 s.jsonpCallback() :
9958 s.jsonpCallback;
9959
9960 // Insert callback into url or form data
9961 if ( jsonProp ) {
9962 s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
9963 } else if ( s.jsonp !== false ) {
9964 s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
9965 }
9966
9967 // Use data converter to retrieve json after script execution
9968 s.converters[ "script json" ] = function() {
9969 if ( !responseContainer ) {
9970 jQuery.error( callbackName + " was not called" );
9971 }
9972 return responseContainer[ 0 ];
9973 };
9974
9975 // Force json dataType
9976 s.dataTypes[ 0 ] = "json";
9977
9978 // Install callback
9979 overwritten = window[ callbackName ];
9980 window[ callbackName ] = function() {
9981 responseContainer = arguments;
9982 };
9983
9984 // Clean-up function (fires after converters)
9985 jqXHR.always( function() {
9986
9987 // If previous value didn't exist - remove it
9988 if ( overwritten === undefined ) {
9989 jQuery( window ).removeProp( callbackName );
9990
9991 // Otherwise restore preexisting value
9992 } else {
9993 window[ callbackName ] = overwritten;
9994 }
9995
9996 // Save back as free
9997 if ( s[ callbackName ] ) {
9998
9999 // Make sure that re-using the options doesn't screw things around
10000 s.jsonpCallback = originalSettings.jsonpCallback;
10001
10002 // Save the callback name for future use
10003 oldCallbacks.push( callbackName );
10004 }
10005
10006 // Call if it was a function and we have a response
10007 if ( responseContainer && isFunction( overwritten ) ) {
10008 overwritten( responseContainer[ 0 ] );
10009 }
10010
10011 responseContainer = overwritten = undefined;
10012 } );
10013
10014 // Delegate to script
10015 return "script";
10016 }
10017} );
10018
10019
10020
10021
10022// Support: Safari 8 only
10023// In Safari 8 documents created via document.implementation.createHTMLDocument
10024// collapse sibling forms: the second one becomes a child of the first one.
10025// Because of that, this security measure has to be disabled in Safari 8.
10026// https://bugs.webkit.org/show_bug.cgi?id=137337
10027support.createHTMLDocument = ( function() {
10028 var body = document.implementation.createHTMLDocument( "" ).body;
10029 body.innerHTML = "<form></form><form></form>";
10030 return body.childNodes.length === 2;
10031} )();
10032
10033
10034// Argument "data" should be string of html
10035// context (optional): If specified, the fragment will be created in this context,
10036// defaults to document
10037// keepScripts (optional): If true, will include scripts passed in the html string
10038jQuery.parseHTML = function( data, context, keepScripts ) {
10039 if ( typeof data !== "string" ) {
10040 return [];
10041 }
10042 if ( typeof context === "boolean" ) {
10043 keepScripts = context;
10044 context = false;
10045 }
10046
10047 var base, parsed, scripts;
10048
10049 if ( !context ) {
10050
10051 // Stop scripts or inline event handlers from being executed immediately
10052 // by using document.implementation
10053 if ( support.createHTMLDocument ) {
10054 context = document.implementation.createHTMLDocument( "" );
10055
10056 // Set the base href for the created document
10057 // so any parsed elements with URLs
10058 // are based on the document's URL (gh-2965)
10059 base = context.createElement( "base" );
10060 base.href = document.location.href;
10061 context.head.appendChild( base );
10062 } else {
10063 context = document;
10064 }
10065 }
10066
10067 parsed = rsingleTag.exec( data );
10068 scripts = !keepScripts && [];
10069
10070 // Single tag
10071 if ( parsed ) {
10072 return [ context.createElement( parsed[ 1 ] ) ];
10073 }
10074
10075 parsed = buildFragment( [ data ], context, scripts );
10076
10077 if ( scripts && scripts.length ) {
10078 jQuery( scripts ).remove();
10079 }
10080
10081 return jQuery.merge( [], parsed.childNodes );
10082};
10083
10084
10085/**
10086 * Load a url into a page
10087 */
10088jQuery.fn.load = function( url, params, callback ) {
10089 var selector, type, response,
10090 self = this,
10091 off = url.indexOf( " " );
10092
10093 if ( off > -1 ) {
10094 selector = stripAndCollapse( url.slice( off ) );
10095 url = url.slice( 0, off );
10096 }
10097
10098 // If it's a function
10099 if ( isFunction( params ) ) {
10100
10101 // We assume that it's the callback
10102 callback = params;
10103 params = undefined;
10104
10105 // Otherwise, build a param string
10106 } else if ( params && typeof params === "object" ) {
10107 type = "POST";
10108 }
10109
10110 // If we have elements to modify, make the request
10111 if ( self.length > 0 ) {
10112 jQuery.ajax( {
10113 url: url,
10114
10115 // If "type" variable is undefined, then "GET" method will be used.
10116 // Make value of this field explicit since
10117 // user can override it through ajaxSetup method
10118 type: type || "GET",
10119 dataType: "html",
10120 data: params
10121 } ).done( function( responseText ) {
10122
10123 // Save response for use in complete callback
10124 response = arguments;
10125
10126 self.html( selector ?
10127
10128 // If a selector was specified, locate the right elements in a dummy div
10129 // Exclude scripts to avoid IE 'Permission Denied' errors
10130 jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :
10131
10132 // Otherwise use the full result
10133 responseText );
10134
10135 // If the request succeeds, this function gets "data", "status", "jqXHR"
10136 // but they are ignored because response was set above.
10137 // If it fails, this function gets "jqXHR", "status", "error"
10138 } ).always( callback && function( jqXHR, status ) {
10139 self.each( function() {
10140 callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );
10141 } );
10142 } );
10143 }
10144
10145 return this;
10146};
10147
10148
10149
10150
10151// Attach a bunch of functions for handling common AJAX events
10152jQuery.each( [
10153 "ajaxStart",
10154 "ajaxStop",
10155 "ajaxComplete",
10156 "ajaxError",
10157 "ajaxSuccess",
10158 "ajaxSend"
10159], function( i, type ) {
10160 jQuery.fn[ type ] = function( fn ) {
10161 return this.on( type, fn );
10162 };
10163} );
10164
10165
10166
10167
10168jQuery.expr.pseudos.animated = function( elem ) {
10169 return jQuery.grep( jQuery.timers, function( fn ) {
10170 return elem === fn.elem;
10171 } ).length;
10172};
10173
10174
10175
10176
10177jQuery.offset = {
10178 setOffset: function( elem, options, i ) {
10179 var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
10180 position = jQuery.css( elem, "position" ),
10181 curElem = jQuery( elem ),
10182 props = {};
10183
10184 // Set position first, in-case top/left are set even on static elem
10185 if ( position === "static" ) {
10186 elem.style.position = "relative";
10187 }
10188
10189 curOffset = curElem.offset();
10190 curCSSTop = jQuery.css( elem, "top" );
10191 curCSSLeft = jQuery.css( elem, "left" );
10192 calculatePosition = ( position === "absolute" || position === "fixed" ) &&
10193 ( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;
10194
10195 // Need to be able to calculate position if either
10196 // top or left is auto and position is either absolute or fixed
10197 if ( calculatePosition ) {
10198 curPosition = curElem.position();
10199 curTop = curPosition.top;
10200 curLeft = curPosition.left;
10201
10202 } else {
10203 curTop = parseFloat( curCSSTop ) || 0;
10204 curLeft = parseFloat( curCSSLeft ) || 0;
10205 }
10206
10207 if ( isFunction( options ) ) {
10208
10209 // Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
10210 options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
10211 }
10212
10213 if ( options.top != null ) {
10214 props.top = ( options.top - curOffset.top ) + curTop;
10215 }
10216 if ( options.left != null ) {
10217 props.left = ( options.left - curOffset.left ) + curLeft;
10218 }
10219
10220 if ( "using" in options ) {
10221 options.using.call( elem, props );
10222
10223 } else {
10224 curElem.css( props );
10225 }
10226 }
10227};
10228
10229jQuery.fn.extend( {
10230
10231 // offset() relates an element's border box to the document origin
10232 offset: function( options ) {
10233
10234 // Preserve chaining for setter
10235 if ( arguments.length ) {
10236 return options === undefined ?
10237 this :
10238 this.each( function( i ) {
10239 jQuery.offset.setOffset( this, options, i );
10240 } );
10241 }
10242
10243 var rect, win,
10244 elem = this[ 0 ];
10245
10246 if ( !elem ) {
10247 return;
10248 }
10249
10250 // Return zeros for disconnected and hidden (display: none) elements (gh-2310)
10251 // Support: IE <=11 only
10252 // Running getBoundingClientRect on a
10253 // disconnected node in IE throws an error
10254 if ( !elem.getClientRects().length ) {
10255 return { top: 0, left: 0 };
10256 }
10257
10258 // Get document-relative position by adding viewport scroll to viewport-relative gBCR
10259 rect = elem.getBoundingClientRect();
10260 win = elem.ownerDocument.defaultView;
10261 return {
10262 top: rect.top + win.pageYOffset,
10263 left: rect.left + win.pageXOffset
10264 };
10265 },
10266
10267 // position() relates an element's margin box to its offset parent's padding box
10268 // This corresponds to the behavior of CSS absolute positioning
10269 position: function() {
10270 if ( !this[ 0 ] ) {
10271 return;
10272 }
10273
10274 var offsetParent, offset, doc,
10275 elem = this[ 0 ],
10276 parentOffset = { top: 0, left: 0 };
10277
10278 // position:fixed elements are offset from the viewport, which itself always has zero offset
10279 if ( jQuery.css( elem, "position" ) === "fixed" ) {
10280
10281 // Assume position:fixed implies availability of getBoundingClientRect
10282 offset = elem.getBoundingClientRect();
10283
10284 } else {
10285 offset = this.offset();
10286
10287 // Account for the *real* offset parent, which can be the document or its root element
10288 // when a statically positioned element is identified
10289 doc = elem.ownerDocument;
10290 offsetParent = elem.offsetParent || doc.documentElement;
10291 while ( offsetParent &&
10292 ( offsetParent === doc.body || offsetParent === doc.documentElement ) &&
10293 jQuery.css( offsetParent, "position" ) === "static" ) {
10294
10295 offsetParent = offsetParent.parentNode;
10296 }
10297 if ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {
10298
10299 // Incorporate borders into its offset, since they are outside its content origin
10300 parentOffset = jQuery( offsetParent ).offset();
10301 parentOffset.top += jQuery.css( offsetParent, "borderTopWidth", true );
10302 parentOffset.left += jQuery.css( offsetParent, "borderLeftWidth", true );
10303 }
10304 }
10305
10306 // Subtract parent offsets and element margins
10307 return {
10308 top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
10309 left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
10310 };
10311 },
10312
10313 // This method will return documentElement in the following cases:
10314 // 1) For the element inside the iframe without offsetParent, this method will return
10315 // documentElement of the parent window
10316 // 2) For the hidden or detached element
10317 // 3) For body or html element, i.e. in case of the html node - it will return itself
10318 //
10319 // but those exceptions were never presented as a real life use-cases
10320 // and might be considered as more preferable results.
10321 //
10322 // This logic, however, is not guaranteed and can change at any point in the future
10323 offsetParent: function() {
10324 return this.map( function() {
10325 var offsetParent = this.offsetParent;
10326
10327 while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {
10328 offsetParent = offsetParent.offsetParent;
10329 }
10330
10331 return offsetParent || documentElement;
10332 } );
10333 }
10334} );
10335
10336// Create scrollLeft and scrollTop methods
10337jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
10338 var top = "pageYOffset" === prop;
10339
10340 jQuery.fn[ method ] = function( val ) {
10341 return access( this, function( elem, method, val ) {
10342
10343 // Coalesce documents and windows
10344 var win;
10345 if ( isWindow( elem ) ) {
10346 win = elem;
10347 } else if ( elem.nodeType === 9 ) {
10348 win = elem.defaultView;
10349 }
10350
10351 if ( val === undefined ) {
10352 return win ? win[ prop ] : elem[ method ];
10353 }
10354
10355 if ( win ) {
10356 win.scrollTo(
10357 !top ? val : win.pageXOffset,
10358 top ? val : win.pageYOffset
10359 );
10360
10361 } else {
10362 elem[ method ] = val;
10363 }
10364 }, method, val, arguments.length );
10365 };
10366} );
10367
10368// Support: Safari <=7 - 9.1, Chrome <=37 - 49
10369// Add the top/left cssHooks using jQuery.fn.position
10370// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
10371// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
10372// getComputedStyle returns percent when specified for top/left/bottom/right;
10373// rather than make the css module depend on the offset module, just check for it here
10374jQuery.each( [ "top", "left" ], function( i, prop ) {
10375 jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
10376 function( elem, computed ) {
10377 if ( computed ) {
10378 computed = curCSS( elem, prop );
10379
10380 // If curCSS returns percentage, fallback to offset
10381 return rnumnonpx.test( computed ) ?
10382 jQuery( elem ).position()[ prop ] + "px" :
10383 computed;
10384 }
10385 }
10386 );
10387} );
10388
10389
10390// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
10391jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
10392 jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name },
10393 function( defaultExtra, funcName ) {
10394
10395 // Margin is only for outerHeight, outerWidth
10396 jQuery.fn[ funcName ] = function( margin, value ) {
10397 var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
10398 extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
10399
10400 return access( this, function( elem, type, value ) {
10401 var doc;
10402
10403 if ( isWindow( elem ) ) {
10404
10405 // $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
10406 return funcName.indexOf( "outer" ) === 0 ?
10407 elem[ "inner" + name ] :
10408 elem.document.documentElement[ "client" + name ];
10409 }
10410
10411 // Get document width or height
10412 if ( elem.nodeType === 9 ) {
10413 doc = elem.documentElement;
10414
10415 // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
10416 // whichever is greatest
10417 return Math.max(
10418 elem.body[ "scroll" + name ], doc[ "scroll" + name ],
10419 elem.body[ "offset" + name ], doc[ "offset" + name ],
10420 doc[ "client" + name ]
10421 );
10422 }
10423
10424 return value === undefined ?
10425
10426 // Get width or height on the element, requesting but not forcing parseFloat
10427 jQuery.css( elem, type, extra ) :
10428
10429 // Set width or height on the element
10430 jQuery.style( elem, type, value, extra );
10431 }, type, chainable ? margin : undefined, chainable );
10432 };
10433 } );
10434} );
10435
10436
10437jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
10438 "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
10439 "change select submit keydown keypress keyup contextmenu" ).split( " " ),
10440 function( i, name ) {
10441
10442 // Handle event binding
10443 jQuery.fn[ name ] = function( data, fn ) {
10444 return arguments.length > 0 ?
10445 this.on( name, null, data, fn ) :
10446 this.trigger( name );
10447 };
10448} );
10449
10450jQuery.fn.extend( {
10451 hover: function( fnOver, fnOut ) {
10452 return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
10453 }
10454} );
10455
10456
10457
10458
10459jQuery.fn.extend( {
10460
10461 bind: function( types, data, fn ) {
10462 return this.on( types, null, data, fn );
10463 },
10464 unbind: function( types, fn ) {
10465 return this.off( types, null, fn );
10466 },
10467
10468 delegate: function( selector, types, data, fn ) {
10469 return this.on( types, selector, data, fn );
10470 },
10471 undelegate: function( selector, types, fn ) {
10472
10473 // ( namespace ) or ( selector, types [, fn] )
10474 return arguments.length === 1 ?
10475 this.off( selector, "**" ) :
10476 this.off( types, selector || "**", fn );
10477 }
10478} );
10479
10480// Bind a function to a context, optionally partially applying any
10481// arguments.
10482// jQuery.proxy is deprecated to promote standards (specifically Function#bind)
10483// However, it is not slated for removal any time soon
10484jQuery.proxy = function( fn, context ) {
10485 var tmp, args, proxy;
10486
10487 if ( typeof context === "string" ) {
10488 tmp = fn[ context ];
10489 context = fn;
10490 fn = tmp;
10491 }
10492
10493 // Quick check to determine if target is callable, in the spec
10494 // this throws a TypeError, but we will just return undefined.
10495 if ( !isFunction( fn ) ) {
10496 return undefined;
10497 }
10498
10499 // Simulated bind
10500 args = slice.call( arguments, 2 );
10501 proxy = function() {
10502 return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
10503 };
10504
10505 // Set the guid of unique handler to the same of original handler, so it can be removed
10506 proxy.guid = fn.guid = fn.guid || jQuery.guid++;
10507
10508 return proxy;
10509};
10510
10511jQuery.holdReady = function( hold ) {
10512 if ( hold ) {
10513 jQuery.readyWait++;
10514 } else {
10515 jQuery.ready( true );
10516 }
10517};
10518jQuery.isArray = Array.isArray;
10519jQuery.parseJSON = JSON.parse;
10520jQuery.nodeName = nodeName;
10521jQuery.isFunction = isFunction;
10522jQuery.isWindow = isWindow;
10523jQuery.camelCase = camelCase;
10524jQuery.type = toType;
10525
10526jQuery.now = Date.now;
10527
10528jQuery.isNumeric = function( obj ) {
10529
10530 // As of jQuery 3.0, isNumeric is limited to
10531 // strings and numbers (primitives or objects)
10532 // that can be coerced to finite numbers (gh-2662)
10533 var type = jQuery.type( obj );
10534 return ( type === "number" || type === "string" ) &&
10535
10536 // parseFloat NaNs numeric-cast false positives ("")
10537 // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
10538 // subtraction forces infinities to NaN
10539 !isNaN( obj - parseFloat( obj ) );
10540};
10541
10542
10543
10544
10545// Register as a named AMD module, since jQuery can be concatenated with other
10546// files that may use define, but not via a proper concatenation script that
10547// understands anonymous AMD modules. A named AMD is safest and most robust
10548// way to register. Lowercase jquery is used because AMD module names are
10549// derived from file names, and jQuery is normally delivered in a lowercase
10550// file name. Do this after creating the global so that if an AMD module wants
10551// to call noConflict to hide this version of jQuery, it will work.
10552
10553// Note that for maximum portability, libraries that are not jQuery should
10554// declare themselves as anonymous modules, and avoid setting a global if an
10555// AMD loader is present. jQuery is a special case. For more information, see
10556// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
10557
10558if ( typeof define === "function" && define.amd ) {
10559 define( "jquery", [], function() {
10560 return jQuery;
10561 } );
10562}
10563
10564
10565
10566
10567var
10568
10569 // Map over jQuery in case of overwrite
10570 _jQuery = window.jQuery,
10571
10572 // Map over the $ in case of overwrite
10573 _$ = window.$;
10574
10575jQuery.noConflict = function( deep ) {
10576 if ( window.$ === jQuery ) {
10577 window.$ = _$;
10578 }
10579
10580 if ( deep && window.jQuery === jQuery ) {
10581 window.jQuery = _jQuery;
10582 }
10583
10584 return jQuery;
10585};
10586
10587// Expose jQuery and $ identifiers, even in AMD
10588// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
10589// and CommonJS for browser emulators (#13566)
10590if ( !noGlobal ) {
10591 window.jQuery = window.$ = jQuery;
10592}
10593
10594
10595
10596
10597return jQuery;
10598} );
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery-3.4.1.min.js b/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery-3.4.1.min.js
new file mode 100644
index 00000000..a1c07fd8
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery-3.4.1.min.js
@@ -0,0 +1,2 @@
1/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
2!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[k]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[S,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=N[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=N(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=S+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument===C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(S=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&N.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=k.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)_(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ce={};function fe(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<k(i,this).index(l):k.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Q.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?ke:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Nt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function _t(t,i,o,a){var s={},u=t===Wt;function l(e){var r;return s[e]=!0,k.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Ut[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),k.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=A,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k});
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery-3.4.1.min.map b/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery-3.4.1.min.map
new file mode 100644
index 00000000..e15edef2
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery-3.4.1.min.map
@@ -0,0 +1 @@
{"version":3,"sources":["jquery-3.4.1.js"],"names":["global","factory","module","exports","document","w","Error","window","this","noGlobal","arr","getProto","Object","getPrototypeOf","slice","concat","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","fnToString","ObjectFunctionString","call","support","isFunction","obj","nodeType","isWindow","preservedScriptAttributes","type","src","nonce","noModule","DOMEval","code","node","doc","i","val","script","createElement","text","getAttribute","setAttribute","head","appendChild","parentNode","removeChild","toType","version","jQuery","selector","context","fn","init","rtrim","isArrayLike","length","prototype","jquery","constructor","toArray","get","num","pushStack","elems","ret","merge","prevObject","each","callback","map","elem","apply","arguments","first","eq","last","len","j","end","sort","splice","extend","options","name","copy","copyIsArray","clone","target","deep","isPlainObject","Array","isArray","undefined","expando","Math","random","replace","isReady","error","msg","noop","proto","Ctor","isEmptyObject","globalEval","trim","makeArray","results","inArray","second","grep","invert","matches","callbackExpect","arg","value","guid","Symbol","iterator","split","toLowerCase","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","Date","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","a","b","pop","push_native","list","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","inDisabledFieldset","addCombinator","disabled","nodeName","dir","next","childNodes","e","els","seed","m","nid","match","groups","newSelector","newContext","ownerDocument","exec","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","toSelector","join","testContext","querySelectorAll","qsaError","removeAttribute","keys","cache","key","cacheLength","shift","markFunction","assert","el","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","documentElement","hasCompare","subWindow","defaultView","top","addEventListener","attachEvent","className","createComment","getById","getElementsByName","filter","attrId","find","getAttributeNode","tag","tmp","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","attr","specified","escape","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","start","parent","useCache","lastChild","uniqueID","pseudo","args","setFilters","idx","matched","not","matcher","unmatched","has","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","checked","selected","selectedIndex","empty","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","tokens","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","is","siblings","n","rneedsContext","rsingleTag","winnow","qualifier","self","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","prev","sibling","targets","l","closest","index","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","Identity","v","Thrower","ex","adoptValue","resolve","reject","noValue","method","promise","fail","then","Callbacks","object","flag","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","remove","disable","lock","fireWith","Deferred","func","tuples","state","always","deferred","catch","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","that","mightThrow","TypeError","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","setTimeout","stateString","when","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","stack","console","warn","message","readyException","readyList","completed","removeEventListener","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","rmsPrefix","rdashAlpha","fcamelCase","all","letter","toUpperCase","camelCase","string","acceptData","owner","Data","uid","defineProperty","configurable","set","data","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","JSON","parse","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","style","display","css","swap","old","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","showHide","show","values","body","hide","toggle","rcheckableType","rtagName","rscriptType","wrapMap","option","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","optgroup","tbody","tfoot","colgroup","caption","th","div","buildFragment","scripts","selection","ignored","wrap","attached","fragment","createDocumentFragment","nodes","htmlPrefilter","createTextNode","checkClone","cloneNode","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","expectSync","err","safeActiveElement","on","types","one","origFn","event","off","leverageNative","notAsync","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","preventDefault","trigger","Event","handleObjIn","eventHandle","events","t","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","enumerable","originalEvent","writable","load","noBubble","click","beforeunload","returnValue","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","now","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","char","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","blur","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rxhtmlTag","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","domManip","collection","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","getStyles","opener","getComputedStyle","rboxStyle","curCSS","computed","width","minWidth","maxWidth","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","position","scrollboxSizeVal","offsetWidth","measure","round","parseFloat","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","max","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","ceil","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","opacity","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","order","orphans","widows","zIndex","zoom","origName","isCustomProp","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","left","margin","padding","border","prefix","suffix","expand","expanded","parts","propHooks","run","percent","eased","duration","pos","step","fx","scrollTop","scrollLeft","linear","p","swing","cos","PI","fxNow","inProgress","opt","rfxtypes","rrun","schedule","hidden","requestAnimationFrame","interval","tick","createFxNow","genFx","includeWidth","height","createTween","animation","Animation","tweeners","properties","stopped","prefilters","currentTime","startTime","tweens","opts","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","bind","complete","timer","anim","*","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","prefilter","speed","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","time","timeout","clearTimeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","getter","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","parseInt","for","class","addClass","classes","curValue","clazz","finalValue","removeClass","toggleClass","stateVal","isValidValue","classNames","hasClass","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rquery","parseXML","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","s","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","url","isLocal","protocol","processData","async","contentType","accepts","json","responseFields","converters","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","status","abort","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","responses","isSuccess","response","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","text script","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","offsetHeight","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","params","animated","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","","defaultExtra","funcName","hover","fnOver","fnOut","unbind","delegate","undelegate","proxy","holdReady","hold","parseJSON","isNumeric","isNaN","define","amd","_jQuery","_$","$","noConflict"],"mappings":"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","file":"jquery-3.4.1.min.js"} \ No newline at end of file
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery-3.4.1.slim.js b/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery-3.4.1.slim.js
new file mode 100644
index 00000000..aaabce83
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery-3.4.1.slim.js
@@ -0,0 +1,8495 @@
1/*!
2 * jQuery JavaScript Library v3.4.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector
3 * https://jquery.com/
4 *
5 * Includes Sizzle.js
6 * https://sizzlejs.com/
7 *
8 * Copyright JS Foundation and other contributors
9 * Released under the MIT license
10 * https://jquery.org/license
11 *
12 * Date: 2019-05-01T21:04Z
13 */
14( function( global, factory ) {
15
16 "use strict";
17
18 if ( typeof module === "object" && typeof module.exports === "object" ) {
19
20 // For CommonJS and CommonJS-like environments where a proper `window`
21 // is present, execute the factory and get jQuery.
22 // For environments that do not have a `window` with a `document`
23 // (such as Node.js), expose a factory as module.exports.
24 // This accentuates the need for the creation of a real `window`.
25 // e.g. var jQuery = require("jquery")(window);
26 // See ticket #14549 for more info.
27 module.exports = global.document ?
28 factory( global, true ) :
29 function( w ) {
30 if ( !w.document ) {
31 throw new Error( "jQuery requires a window with a document" );
32 }
33 return factory( w );
34 };
35 } else {
36 factory( global );
37 }
38
39// Pass this if window is not defined yet
40} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
41
42// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
43// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
44// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
45// enough that all such attempts are guarded in a try block.
46"use strict";
47
48var arr = [];
49
50var document = window.document;
51
52var getProto = Object.getPrototypeOf;
53
54var slice = arr.slice;
55
56var concat = arr.concat;
57
58var push = arr.push;
59
60var indexOf = arr.indexOf;
61
62var class2type = {};
63
64var toString = class2type.toString;
65
66var hasOwn = class2type.hasOwnProperty;
67
68var fnToString = hasOwn.toString;
69
70var ObjectFunctionString = fnToString.call( Object );
71
72var support = {};
73
74var isFunction = function isFunction( obj ) {
75
76 // Support: Chrome <=57, Firefox <=52
77 // In some browsers, typeof returns "function" for HTML <object> elements
78 // (i.e., `typeof document.createElement( "object" ) === "function"`).
79 // We don't want to classify *any* DOM node as a function.
80 return typeof obj === "function" && typeof obj.nodeType !== "number";
81 };
82
83
84var isWindow = function isWindow( obj ) {
85 return obj != null && obj === obj.window;
86 };
87
88
89
90
91 var preservedScriptAttributes = {
92 type: true,
93 src: true,
94 nonce: true,
95 noModule: true
96 };
97
98 function DOMEval( code, node, doc ) {
99 doc = doc || document;
100
101 var i, val,
102 script = doc.createElement( "script" );
103
104 script.text = code;
105 if ( node ) {
106 for ( i in preservedScriptAttributes ) {
107
108 // Support: Firefox 64+, Edge 18+
109 // Some browsers don't support the "nonce" property on scripts.
110 // On the other hand, just using `getAttribute` is not enough as
111 // the `nonce` attribute is reset to an empty string whenever it
112 // becomes browsing-context connected.
113 // See https://github.com/whatwg/html/issues/2369
114 // See https://html.spec.whatwg.org/#nonce-attributes
115 // The `node.getAttribute` check was added for the sake of
116 // `jQuery.globalEval` so that it can fake a nonce-containing node
117 // via an object.
118 val = node[ i ] || node.getAttribute && node.getAttribute( i );
119 if ( val ) {
120 script.setAttribute( i, val );
121 }
122 }
123 }
124 doc.head.appendChild( script ).parentNode.removeChild( script );
125 }
126
127
128function toType( obj ) {
129 if ( obj == null ) {
130 return obj + "";
131 }
132
133 // Support: Android <=2.3 only (functionish RegExp)
134 return typeof obj === "object" || typeof obj === "function" ?
135 class2type[ toString.call( obj ) ] || "object" :
136 typeof obj;
137}
138/* global Symbol */
139// Defining this global in .eslintrc.json would create a danger of using the global
140// unguarded in another place, it seems safer to define global only for this module
141
142
143
144var
145 version = "3.4.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector",
146
147 // Define a local copy of jQuery
148 jQuery = function( selector, context ) {
149
150 // The jQuery object is actually just the init constructor 'enhanced'
151 // Need init if jQuery is called (just allow error to be thrown if not included)
152 return new jQuery.fn.init( selector, context );
153 },
154
155 // Support: Android <=4.0 only
156 // Make sure we trim BOM and NBSP
157 rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
158
159jQuery.fn = jQuery.prototype = {
160
161 // The current version of jQuery being used
162 jquery: version,
163
164 constructor: jQuery,
165
166 // The default length of a jQuery object is 0
167 length: 0,
168
169 toArray: function() {
170 return slice.call( this );
171 },
172
173 // Get the Nth element in the matched element set OR
174 // Get the whole matched element set as a clean array
175 get: function( num ) {
176
177 // Return all the elements in a clean array
178 if ( num == null ) {
179 return slice.call( this );
180 }
181
182 // Return just the one element from the set
183 return num < 0 ? this[ num + this.length ] : this[ num ];
184 },
185
186 // Take an array of elements and push it onto the stack
187 // (returning the new matched element set)
188 pushStack: function( elems ) {
189
190 // Build a new jQuery matched element set
191 var ret = jQuery.merge( this.constructor(), elems );
192
193 // Add the old object onto the stack (as a reference)
194 ret.prevObject = this;
195
196 // Return the newly-formed element set
197 return ret;
198 },
199
200 // Execute a callback for every element in the matched set.
201 each: function( callback ) {
202 return jQuery.each( this, callback );
203 },
204
205 map: function( callback ) {
206 return this.pushStack( jQuery.map( this, function( elem, i ) {
207 return callback.call( elem, i, elem );
208 } ) );
209 },
210
211 slice: function() {
212 return this.pushStack( slice.apply( this, arguments ) );
213 },
214
215 first: function() {
216 return this.eq( 0 );
217 },
218
219 last: function() {
220 return this.eq( -1 );
221 },
222
223 eq: function( i ) {
224 var len = this.length,
225 j = +i + ( i < 0 ? len : 0 );
226 return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
227 },
228
229 end: function() {
230 return this.prevObject || this.constructor();
231 },
232
233 // For internal use only.
234 // Behaves like an Array's method, not like a jQuery method.
235 push: push,
236 sort: arr.sort,
237 splice: arr.splice
238};
239
240jQuery.extend = jQuery.fn.extend = function() {
241 var options, name, src, copy, copyIsArray, clone,
242 target = arguments[ 0 ] || {},
243 i = 1,
244 length = arguments.length,
245 deep = false;
246
247 // Handle a deep copy situation
248 if ( typeof target === "boolean" ) {
249 deep = target;
250
251 // Skip the boolean and the target
252 target = arguments[ i ] || {};
253 i++;
254 }
255
256 // Handle case when target is a string or something (possible in deep copy)
257 if ( typeof target !== "object" && !isFunction( target ) ) {
258 target = {};
259 }
260
261 // Extend jQuery itself if only one argument is passed
262 if ( i === length ) {
263 target = this;
264 i--;
265 }
266
267 for ( ; i < length; i++ ) {
268
269 // Only deal with non-null/undefined values
270 if ( ( options = arguments[ i ] ) != null ) {
271
272 // Extend the base object
273 for ( name in options ) {
274 copy = options[ name ];
275
276 // Prevent Object.prototype pollution
277 // Prevent never-ending loop
278 if ( name === "__proto__" || target === copy ) {
279 continue;
280 }
281
282 // Recurse if we're merging plain objects or arrays
283 if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
284 ( copyIsArray = Array.isArray( copy ) ) ) ) {
285 src = target[ name ];
286
287 // Ensure proper type for the source value
288 if ( copyIsArray && !Array.isArray( src ) ) {
289 clone = [];
290 } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {
291 clone = {};
292 } else {
293 clone = src;
294 }
295 copyIsArray = false;
296
297 // Never move original objects, clone them
298 target[ name ] = jQuery.extend( deep, clone, copy );
299
300 // Don't bring in undefined values
301 } else if ( copy !== undefined ) {
302 target[ name ] = copy;
303 }
304 }
305 }
306 }
307
308 // Return the modified object
309 return target;
310};
311
312jQuery.extend( {
313
314 // Unique for each copy of jQuery on the page
315 expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
316
317 // Assume jQuery is ready without the ready module
318 isReady: true,
319
320 error: function( msg ) {
321 throw new Error( msg );
322 },
323
324 noop: function() {},
325
326 isPlainObject: function( obj ) {
327 var proto, Ctor;
328
329 // Detect obvious negatives
330 // Use toString instead of jQuery.type to catch host objects
331 if ( !obj || toString.call( obj ) !== "[object Object]" ) {
332 return false;
333 }
334
335 proto = getProto( obj );
336
337 // Objects with no prototype (e.g., `Object.create( null )`) are plain
338 if ( !proto ) {
339 return true;
340 }
341
342 // Objects with prototype are plain iff they were constructed by a global Object function
343 Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
344 return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
345 },
346
347 isEmptyObject: function( obj ) {
348 var name;
349
350 for ( name in obj ) {
351 return false;
352 }
353 return true;
354 },
355
356 // Evaluates a script in a global context
357 globalEval: function( code, options ) {
358 DOMEval( code, { nonce: options && options.nonce } );
359 },
360
361 each: function( obj, callback ) {
362 var length, i = 0;
363
364 if ( isArrayLike( obj ) ) {
365 length = obj.length;
366 for ( ; i < length; i++ ) {
367 if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
368 break;
369 }
370 }
371 } else {
372 for ( i in obj ) {
373 if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
374 break;
375 }
376 }
377 }
378
379 return obj;
380 },
381
382 // Support: Android <=4.0 only
383 trim: function( text ) {
384 return text == null ?
385 "" :
386 ( text + "" ).replace( rtrim, "" );
387 },
388
389 // results is for internal usage only
390 makeArray: function( arr, results ) {
391 var ret = results || [];
392
393 if ( arr != null ) {
394 if ( isArrayLike( Object( arr ) ) ) {
395 jQuery.merge( ret,
396 typeof arr === "string" ?
397 [ arr ] : arr
398 );
399 } else {
400 push.call( ret, arr );
401 }
402 }
403
404 return ret;
405 },
406
407 inArray: function( elem, arr, i ) {
408 return arr == null ? -1 : indexOf.call( arr, elem, i );
409 },
410
411 // Support: Android <=4.0 only, PhantomJS 1 only
412 // push.apply(_, arraylike) throws on ancient WebKit
413 merge: function( first, second ) {
414 var len = +second.length,
415 j = 0,
416 i = first.length;
417
418 for ( ; j < len; j++ ) {
419 first[ i++ ] = second[ j ];
420 }
421
422 first.length = i;
423
424 return first;
425 },
426
427 grep: function( elems, callback, invert ) {
428 var callbackInverse,
429 matches = [],
430 i = 0,
431 length = elems.length,
432 callbackExpect = !invert;
433
434 // Go through the array, only saving the items
435 // that pass the validator function
436 for ( ; i < length; i++ ) {
437 callbackInverse = !callback( elems[ i ], i );
438 if ( callbackInverse !== callbackExpect ) {
439 matches.push( elems[ i ] );
440 }
441 }
442
443 return matches;
444 },
445
446 // arg is for internal usage only
447 map: function( elems, callback, arg ) {
448 var length, value,
449 i = 0,
450 ret = [];
451
452 // Go through the array, translating each of the items to their new values
453 if ( isArrayLike( elems ) ) {
454 length = elems.length;
455 for ( ; i < length; i++ ) {
456 value = callback( elems[ i ], i, arg );
457
458 if ( value != null ) {
459 ret.push( value );
460 }
461 }
462
463 // Go through every key on the object,
464 } else {
465 for ( i in elems ) {
466 value = callback( elems[ i ], i, arg );
467
468 if ( value != null ) {
469 ret.push( value );
470 }
471 }
472 }
473
474 // Flatten any nested arrays
475 return concat.apply( [], ret );
476 },
477
478 // A global GUID counter for objects
479 guid: 1,
480
481 // jQuery.support is not used in Core but other projects attach their
482 // properties to it so it needs to exist.
483 support: support
484} );
485
486if ( typeof Symbol === "function" ) {
487 jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
488}
489
490// Populate the class2type map
491jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
492function( i, name ) {
493 class2type[ "[object " + name + "]" ] = name.toLowerCase();
494} );
495
496function isArrayLike( obj ) {
497
498 // Support: real iOS 8.2 only (not reproducible in simulator)
499 // `in` check used to prevent JIT error (gh-2145)
500 // hasOwn isn't used here due to false negatives
501 // regarding Nodelist length in IE
502 var length = !!obj && "length" in obj && obj.length,
503 type = toType( obj );
504
505 if ( isFunction( obj ) || isWindow( obj ) ) {
506 return false;
507 }
508
509 return type === "array" || length === 0 ||
510 typeof length === "number" && length > 0 && ( length - 1 ) in obj;
511}
512var Sizzle =
513/*!
514 * Sizzle CSS Selector Engine v2.3.4
515 * https://sizzlejs.com/
516 *
517 * Copyright JS Foundation and other contributors
518 * Released under the MIT license
519 * https://js.foundation/
520 *
521 * Date: 2019-04-08
522 */
523(function( window ) {
524
525var i,
526 support,
527 Expr,
528 getText,
529 isXML,
530 tokenize,
531 compile,
532 select,
533 outermostContext,
534 sortInput,
535 hasDuplicate,
536
537 // Local document vars
538 setDocument,
539 document,
540 docElem,
541 documentIsHTML,
542 rbuggyQSA,
543 rbuggyMatches,
544 matches,
545 contains,
546
547 // Instance-specific data
548 expando = "sizzle" + 1 * new Date(),
549 preferredDoc = window.document,
550 dirruns = 0,
551 done = 0,
552 classCache = createCache(),
553 tokenCache = createCache(),
554 compilerCache = createCache(),
555 nonnativeSelectorCache = createCache(),
556 sortOrder = function( a, b ) {
557 if ( a === b ) {
558 hasDuplicate = true;
559 }
560 return 0;
561 },
562
563 // Instance methods
564 hasOwn = ({}).hasOwnProperty,
565 arr = [],
566 pop = arr.pop,
567 push_native = arr.push,
568 push = arr.push,
569 slice = arr.slice,
570 // Use a stripped-down indexOf as it's faster than native
571 // https://jsperf.com/thor-indexof-vs-for/5
572 indexOf = function( list, elem ) {
573 var i = 0,
574 len = list.length;
575 for ( ; i < len; i++ ) {
576 if ( list[i] === elem ) {
577 return i;
578 }
579 }
580 return -1;
581 },
582
583 booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
584
585 // Regular expressions
586
587 // http://www.w3.org/TR/css3-selectors/#whitespace
588 whitespace = "[\\x20\\t\\r\\n\\f]",
589
590 // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
591 identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
592
593 // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
594 attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
595 // Operator (capture 2)
596 "*([*^$|!~]?=)" + whitespace +
597 // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
598 "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
599 "*\\]",
600
601 pseudos = ":(" + identifier + ")(?:\\((" +
602 // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
603 // 1. quoted (capture 3; capture 4 or capture 5)
604 "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
605 // 2. simple (capture 6)
606 "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
607 // 3. anything else (capture 2)
608 ".*" +
609 ")\\)|)",
610
611 // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
612 rwhitespace = new RegExp( whitespace + "+", "g" ),
613 rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
614
615 rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
616 rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
617 rdescend = new RegExp( whitespace + "|>" ),
618
619 rpseudo = new RegExp( pseudos ),
620 ridentifier = new RegExp( "^" + identifier + "$" ),
621
622 matchExpr = {
623 "ID": new RegExp( "^#(" + identifier + ")" ),
624 "CLASS": new RegExp( "^\\.(" + identifier + ")" ),
625 "TAG": new RegExp( "^(" + identifier + "|[*])" ),
626 "ATTR": new RegExp( "^" + attributes ),
627 "PSEUDO": new RegExp( "^" + pseudos ),
628 "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
629 "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
630 "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
631 "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
632 // For use in libraries implementing .is()
633 // We use this for POS matching in `select`
634 "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
635 whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
636 },
637
638 rhtml = /HTML$/i,
639 rinputs = /^(?:input|select|textarea|button)$/i,
640 rheader = /^h\d$/i,
641
642 rnative = /^[^{]+\{\s*\[native \w/,
643
644 // Easily-parseable/retrievable ID or TAG or CLASS selectors
645 rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
646
647 rsibling = /[+~]/,
648
649 // CSS escapes
650 // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
651 runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
652 funescape = function( _, escaped, escapedWhitespace ) {
653 var high = "0x" + escaped - 0x10000;
654 // NaN means non-codepoint
655 // Support: Firefox<24
656 // Workaround erroneous numeric interpretation of +"0x"
657 return high !== high || escapedWhitespace ?
658 escaped :
659 high < 0 ?
660 // BMP codepoint
661 String.fromCharCode( high + 0x10000 ) :
662 // Supplemental Plane codepoint (surrogate pair)
663 String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
664 },
665
666 // CSS string/identifier serialization
667 // https://drafts.csswg.org/cssom/#common-serializing-idioms
668 rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
669 fcssescape = function( ch, asCodePoint ) {
670 if ( asCodePoint ) {
671
672 // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
673 if ( ch === "\0" ) {
674 return "\uFFFD";
675 }
676
677 // Control characters and (dependent upon position) numbers get escaped as code points
678 return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
679 }
680
681 // Other potentially-special ASCII characters get backslash-escaped
682 return "\\" + ch;
683 },
684
685 // Used for iframes
686 // See setDocument()
687 // Removing the function wrapper causes a "Permission Denied"
688 // error in IE
689 unloadHandler = function() {
690 setDocument();
691 },
692
693 inDisabledFieldset = addCombinator(
694 function( elem ) {
695 return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset";
696 },
697 { dir: "parentNode", next: "legend" }
698 );
699
700// Optimize for push.apply( _, NodeList )
701try {
702 push.apply(
703 (arr = slice.call( preferredDoc.childNodes )),
704 preferredDoc.childNodes
705 );
706 // Support: Android<4.0
707 // Detect silently failing push.apply
708 arr[ preferredDoc.childNodes.length ].nodeType;
709} catch ( e ) {
710 push = { apply: arr.length ?
711
712 // Leverage slice if possible
713 function( target, els ) {
714 push_native.apply( target, slice.call(els) );
715 } :
716
717 // Support: IE<9
718 // Otherwise append directly
719 function( target, els ) {
720 var j = target.length,
721 i = 0;
722 // Can't trust NodeList.length
723 while ( (target[j++] = els[i++]) ) {}
724 target.length = j - 1;
725 }
726 };
727}
728
729function Sizzle( selector, context, results, seed ) {
730 var m, i, elem, nid, match, groups, newSelector,
731 newContext = context && context.ownerDocument,
732
733 // nodeType defaults to 9, since context defaults to document
734 nodeType = context ? context.nodeType : 9;
735
736 results = results || [];
737
738 // Return early from calls with invalid selector or context
739 if ( typeof selector !== "string" || !selector ||
740 nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
741
742 return results;
743 }
744
745 // Try to shortcut find operations (as opposed to filters) in HTML documents
746 if ( !seed ) {
747
748 if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
749 setDocument( context );
750 }
751 context = context || document;
752
753 if ( documentIsHTML ) {
754
755 // If the selector is sufficiently simple, try using a "get*By*" DOM method
756 // (excepting DocumentFragment context, where the methods don't exist)
757 if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
758
759 // ID selector
760 if ( (m = match[1]) ) {
761
762 // Document context
763 if ( nodeType === 9 ) {
764 if ( (elem = context.getElementById( m )) ) {
765
766 // Support: IE, Opera, Webkit
767 // TODO: identify versions
768 // getElementById can match elements by name instead of ID
769 if ( elem.id === m ) {
770 results.push( elem );
771 return results;
772 }
773 } else {
774 return results;
775 }
776
777 // Element context
778 } else {
779
780 // Support: IE, Opera, Webkit
781 // TODO: identify versions
782 // getElementById can match elements by name instead of ID
783 if ( newContext && (elem = newContext.getElementById( m )) &&
784 contains( context, elem ) &&
785 elem.id === m ) {
786
787 results.push( elem );
788 return results;
789 }
790 }
791
792 // Type selector
793 } else if ( match[2] ) {
794 push.apply( results, context.getElementsByTagName( selector ) );
795 return results;
796
797 // Class selector
798 } else if ( (m = match[3]) && support.getElementsByClassName &&
799 context.getElementsByClassName ) {
800
801 push.apply( results, context.getElementsByClassName( m ) );
802 return results;
803 }
804 }
805
806 // Take advantage of querySelectorAll
807 if ( support.qsa &&
808 !nonnativeSelectorCache[ selector + " " ] &&
809 (!rbuggyQSA || !rbuggyQSA.test( selector )) &&
810
811 // Support: IE 8 only
812 // Exclude object elements
813 (nodeType !== 1 || context.nodeName.toLowerCase() !== "object") ) {
814
815 newSelector = selector;
816 newContext = context;
817
818 // qSA considers elements outside a scoping root when evaluating child or
819 // descendant combinators, which is not what we want.
820 // In such cases, we work around the behavior by prefixing every selector in the
821 // list with an ID selector referencing the scope context.
822 // Thanks to Andrew Dupont for this technique.
823 if ( nodeType === 1 && rdescend.test( selector ) ) {
824
825 // Capture the context ID, setting it first if necessary
826 if ( (nid = context.getAttribute( "id" )) ) {
827 nid = nid.replace( rcssescape, fcssescape );
828 } else {
829 context.setAttribute( "id", (nid = expando) );
830 }
831
832 // Prefix every selector in the list
833 groups = tokenize( selector );
834 i = groups.length;
835 while ( i-- ) {
836 groups[i] = "#" + nid + " " + toSelector( groups[i] );
837 }
838 newSelector = groups.join( "," );
839
840 // Expand context for sibling selectors
841 newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
842 context;
843 }
844
845 try {
846 push.apply( results,
847 newContext.querySelectorAll( newSelector )
848 );
849 return results;
850 } catch ( qsaError ) {
851 nonnativeSelectorCache( selector, true );
852 } finally {
853 if ( nid === expando ) {
854 context.removeAttribute( "id" );
855 }
856 }
857 }
858 }
859 }
860
861 // All others
862 return select( selector.replace( rtrim, "$1" ), context, results, seed );
863}
864
865/**
866 * Create key-value caches of limited size
867 * @returns {function(string, object)} Returns the Object data after storing it on itself with
868 * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
869 * deleting the oldest entry
870 */
871function createCache() {
872 var keys = [];
873
874 function cache( key, value ) {
875 // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
876 if ( keys.push( key + " " ) > Expr.cacheLength ) {
877 // Only keep the most recent entries
878 delete cache[ keys.shift() ];
879 }
880 return (cache[ key + " " ] = value);
881 }
882 return cache;
883}
884
885/**
886 * Mark a function for special use by Sizzle
887 * @param {Function} fn The function to mark
888 */
889function markFunction( fn ) {
890 fn[ expando ] = true;
891 return fn;
892}
893
894/**
895 * Support testing using an element
896 * @param {Function} fn Passed the created element and returns a boolean result
897 */
898function assert( fn ) {
899 var el = document.createElement("fieldset");
900
901 try {
902 return !!fn( el );
903 } catch (e) {
904 return false;
905 } finally {
906 // Remove from its parent by default
907 if ( el.parentNode ) {
908 el.parentNode.removeChild( el );
909 }
910 // release memory in IE
911 el = null;
912 }
913}
914
915/**
916 * Adds the same handler for all of the specified attrs
917 * @param {String} attrs Pipe-separated list of attributes
918 * @param {Function} handler The method that will be applied
919 */
920function addHandle( attrs, handler ) {
921 var arr = attrs.split("|"),
922 i = arr.length;
923
924 while ( i-- ) {
925 Expr.attrHandle[ arr[i] ] = handler;
926 }
927}
928
929/**
930 * Checks document order of two siblings
931 * @param {Element} a
932 * @param {Element} b
933 * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
934 */
935function siblingCheck( a, b ) {
936 var cur = b && a,
937 diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
938 a.sourceIndex - b.sourceIndex;
939
940 // Use IE sourceIndex if available on both nodes
941 if ( diff ) {
942 return diff;
943 }
944
945 // Check if b follows a
946 if ( cur ) {
947 while ( (cur = cur.nextSibling) ) {
948 if ( cur === b ) {
949 return -1;
950 }
951 }
952 }
953
954 return a ? 1 : -1;
955}
956
957/**
958 * Returns a function to use in pseudos for input types
959 * @param {String} type
960 */
961function createInputPseudo( type ) {
962 return function( elem ) {
963 var name = elem.nodeName.toLowerCase();
964 return name === "input" && elem.type === type;
965 };
966}
967
968/**
969 * Returns a function to use in pseudos for buttons
970 * @param {String} type
971 */
972function createButtonPseudo( type ) {
973 return function( elem ) {
974 var name = elem.nodeName.toLowerCase();
975 return (name === "input" || name === "button") && elem.type === type;
976 };
977}
978
979/**
980 * Returns a function to use in pseudos for :enabled/:disabled
981 * @param {Boolean} disabled true for :disabled; false for :enabled
982 */
983function createDisabledPseudo( disabled ) {
984
985 // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
986 return function( elem ) {
987
988 // Only certain elements can match :enabled or :disabled
989 // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
990 // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
991 if ( "form" in elem ) {
992
993 // Check for inherited disabledness on relevant non-disabled elements:
994 // * listed form-associated elements in a disabled fieldset
995 // https://html.spec.whatwg.org/multipage/forms.html#category-listed
996 // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
997 // * option elements in a disabled optgroup
998 // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
999 // All such elements have a "form" property.
1000 if ( elem.parentNode && elem.disabled === false ) {
1001
1002 // Option elements defer to a parent optgroup if present
1003 if ( "label" in elem ) {
1004 if ( "label" in elem.parentNode ) {
1005 return elem.parentNode.disabled === disabled;
1006 } else {
1007 return elem.disabled === disabled;
1008 }
1009 }
1010
1011 // Support: IE 6 - 11
1012 // Use the isDisabled shortcut property to check for disabled fieldset ancestors
1013 return elem.isDisabled === disabled ||
1014
1015 // Where there is no isDisabled, check manually
1016 /* jshint -W018 */
1017 elem.isDisabled !== !disabled &&
1018 inDisabledFieldset( elem ) === disabled;
1019 }
1020
1021 return elem.disabled === disabled;
1022
1023 // Try to winnow out elements that can't be disabled before trusting the disabled property.
1024 // Some victims get caught in our net (label, legend, menu, track), but it shouldn't
1025 // even exist on them, let alone have a boolean value.
1026 } else if ( "label" in elem ) {
1027 return elem.disabled === disabled;
1028 }
1029
1030 // Remaining elements are neither :enabled nor :disabled
1031 return false;
1032 };
1033}
1034
1035/**
1036 * Returns a function to use in pseudos for positionals
1037 * @param {Function} fn
1038 */
1039function createPositionalPseudo( fn ) {
1040 return markFunction(function( argument ) {
1041 argument = +argument;
1042 return markFunction(function( seed, matches ) {
1043 var j,
1044 matchIndexes = fn( [], seed.length, argument ),
1045 i = matchIndexes.length;
1046
1047 // Match elements found at the specified indexes
1048 while ( i-- ) {
1049 if ( seed[ (j = matchIndexes[i]) ] ) {
1050 seed[j] = !(matches[j] = seed[j]);
1051 }
1052 }
1053 });
1054 });
1055}
1056
1057/**
1058 * Checks a node for validity as a Sizzle context
1059 * @param {Element|Object=} context
1060 * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
1061 */
1062function testContext( context ) {
1063 return context && typeof context.getElementsByTagName !== "undefined" && context;
1064}
1065
1066// Expose support vars for convenience
1067support = Sizzle.support = {};
1068
1069/**
1070 * Detects XML nodes
1071 * @param {Element|Object} elem An element or a document
1072 * @returns {Boolean} True iff elem is a non-HTML XML node
1073 */
1074isXML = Sizzle.isXML = function( elem ) {
1075 var namespace = elem.namespaceURI,
1076 docElem = (elem.ownerDocument || elem).documentElement;
1077
1078 // Support: IE <=8
1079 // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes
1080 // https://bugs.jquery.com/ticket/4833
1081 return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" );
1082};
1083
1084/**
1085 * Sets document-related variables once based on the current document
1086 * @param {Element|Object} [doc] An element or document object to use to set the document
1087 * @returns {Object} Returns the current document
1088 */
1089setDocument = Sizzle.setDocument = function( node ) {
1090 var hasCompare, subWindow,
1091 doc = node ? node.ownerDocument || node : preferredDoc;
1092
1093 // Return early if doc is invalid or already selected
1094 if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
1095 return document;
1096 }
1097
1098 // Update global variables
1099 document = doc;
1100 docElem = document.documentElement;
1101 documentIsHTML = !isXML( document );
1102
1103 // Support: IE 9-11, Edge
1104 // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
1105 if ( preferredDoc !== document &&
1106 (subWindow = document.defaultView) && subWindow.top !== subWindow ) {
1107
1108 // Support: IE 11, Edge
1109 if ( subWindow.addEventListener ) {
1110 subWindow.addEventListener( "unload", unloadHandler, false );
1111
1112 // Support: IE 9 - 10 only
1113 } else if ( subWindow.attachEvent ) {
1114 subWindow.attachEvent( "onunload", unloadHandler );
1115 }
1116 }
1117
1118 /* Attributes
1119 ---------------------------------------------------------------------- */
1120
1121 // Support: IE<8
1122 // Verify that getAttribute really returns attributes and not properties
1123 // (excepting IE8 booleans)
1124 support.attributes = assert(function( el ) {
1125 el.className = "i";
1126 return !el.getAttribute("className");
1127 });
1128
1129 /* getElement(s)By*
1130 ---------------------------------------------------------------------- */
1131
1132 // Check if getElementsByTagName("*") returns only elements
1133 support.getElementsByTagName = assert(function( el ) {
1134 el.appendChild( document.createComment("") );
1135 return !el.getElementsByTagName("*").length;
1136 });
1137
1138 // Support: IE<9
1139 support.getElementsByClassName = rnative.test( document.getElementsByClassName );
1140
1141 // Support: IE<10
1142 // Check if getElementById returns elements by name
1143 // The broken getElementById methods don't pick up programmatically-set names,
1144 // so use a roundabout getElementsByName test
1145 support.getById = assert(function( el ) {
1146 docElem.appendChild( el ).id = expando;
1147 return !document.getElementsByName || !document.getElementsByName( expando ).length;
1148 });
1149
1150 // ID filter and find
1151 if ( support.getById ) {
1152 Expr.filter["ID"] = function( id ) {
1153 var attrId = id.replace( runescape, funescape );
1154 return function( elem ) {
1155 return elem.getAttribute("id") === attrId;
1156 };
1157 };
1158 Expr.find["ID"] = function( id, context ) {
1159 if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
1160 var elem = context.getElementById( id );
1161 return elem ? [ elem ] : [];
1162 }
1163 };
1164 } else {
1165 Expr.filter["ID"] = function( id ) {
1166 var attrId = id.replace( runescape, funescape );
1167 return function( elem ) {
1168 var node = typeof elem.getAttributeNode !== "undefined" &&
1169 elem.getAttributeNode("id");
1170 return node && node.value === attrId;
1171 };
1172 };
1173
1174 // Support: IE 6 - 7 only
1175 // getElementById is not reliable as a find shortcut
1176 Expr.find["ID"] = function( id, context ) {
1177 if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
1178 var node, i, elems,
1179 elem = context.getElementById( id );
1180
1181 if ( elem ) {
1182
1183 // Verify the id attribute
1184 node = elem.getAttributeNode("id");
1185 if ( node && node.value === id ) {
1186 return [ elem ];
1187 }
1188
1189 // Fall back on getElementsByName
1190 elems = context.getElementsByName( id );
1191 i = 0;
1192 while ( (elem = elems[i++]) ) {
1193 node = elem.getAttributeNode("id");
1194 if ( node && node.value === id ) {
1195 return [ elem ];
1196 }
1197 }
1198 }
1199
1200 return [];
1201 }
1202 };
1203 }
1204
1205 // Tag
1206 Expr.find["TAG"] = support.getElementsByTagName ?
1207 function( tag, context ) {
1208 if ( typeof context.getElementsByTagName !== "undefined" ) {
1209 return context.getElementsByTagName( tag );
1210
1211 // DocumentFragment nodes don't have gEBTN
1212 } else if ( support.qsa ) {
1213 return context.querySelectorAll( tag );
1214 }
1215 } :
1216
1217 function( tag, context ) {
1218 var elem,
1219 tmp = [],
1220 i = 0,
1221 // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
1222 results = context.getElementsByTagName( tag );
1223
1224 // Filter out possible comments
1225 if ( tag === "*" ) {
1226 while ( (elem = results[i++]) ) {
1227 if ( elem.nodeType === 1 ) {
1228 tmp.push( elem );
1229 }
1230 }
1231
1232 return tmp;
1233 }
1234 return results;
1235 };
1236
1237 // Class
1238 Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
1239 if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
1240 return context.getElementsByClassName( className );
1241 }
1242 };
1243
1244 /* QSA/matchesSelector
1245 ---------------------------------------------------------------------- */
1246
1247 // QSA and matchesSelector support
1248
1249 // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
1250 rbuggyMatches = [];
1251
1252 // qSa(:focus) reports false when true (Chrome 21)
1253 // We allow this because of a bug in IE8/9 that throws an error
1254 // whenever `document.activeElement` is accessed on an iframe
1255 // So, we allow :focus to pass through QSA all the time to avoid the IE error
1256 // See https://bugs.jquery.com/ticket/13378
1257 rbuggyQSA = [];
1258
1259 if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
1260 // Build QSA regex
1261 // Regex strategy adopted from Diego Perini
1262 assert(function( el ) {
1263 // Select is set to empty string on purpose
1264 // This is to test IE's treatment of not explicitly
1265 // setting a boolean content attribute,
1266 // since its presence should be enough
1267 // https://bugs.jquery.com/ticket/12359
1268 docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +
1269 "<select id='" + expando + "-\r\\' msallowcapture=''>" +
1270 "<option selected=''></option></select>";
1271
1272 // Support: IE8, Opera 11-12.16
1273 // Nothing should be selected when empty strings follow ^= or $= or *=
1274 // The test attribute must be unknown in Opera but "safe" for WinRT
1275 // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
1276 if ( el.querySelectorAll("[msallowcapture^='']").length ) {
1277 rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
1278 }
1279
1280 // Support: IE8
1281 // Boolean attributes and "value" are not treated correctly
1282 if ( !el.querySelectorAll("[selected]").length ) {
1283 rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
1284 }
1285
1286 // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
1287 if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
1288 rbuggyQSA.push("~=");
1289 }
1290
1291 // Webkit/Opera - :checked should return selected option elements
1292 // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
1293 // IE8 throws error here and will not see later tests
1294 if ( !el.querySelectorAll(":checked").length ) {
1295 rbuggyQSA.push(":checked");
1296 }
1297
1298 // Support: Safari 8+, iOS 8+
1299 // https://bugs.webkit.org/show_bug.cgi?id=136851
1300 // In-page `selector#id sibling-combinator selector` fails
1301 if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
1302 rbuggyQSA.push(".#.+[+~]");
1303 }
1304 });
1305
1306 assert(function( el ) {
1307 el.innerHTML = "<a href='' disabled='disabled'></a>" +
1308 "<select disabled='disabled'><option/></select>";
1309
1310 // Support: Windows 8 Native Apps
1311 // The type and name attributes are restricted during .innerHTML assignment
1312 var input = document.createElement("input");
1313 input.setAttribute( "type", "hidden" );
1314 el.appendChild( input ).setAttribute( "name", "D" );
1315
1316 // Support: IE8
1317 // Enforce case-sensitivity of name attribute
1318 if ( el.querySelectorAll("[name=d]").length ) {
1319 rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
1320 }
1321
1322 // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
1323 // IE8 throws error here and will not see later tests
1324 if ( el.querySelectorAll(":enabled").length !== 2 ) {
1325 rbuggyQSA.push( ":enabled", ":disabled" );
1326 }
1327
1328 // Support: IE9-11+
1329 // IE's :disabled selector does not pick up the children of disabled fieldsets
1330 docElem.appendChild( el ).disabled = true;
1331 if ( el.querySelectorAll(":disabled").length !== 2 ) {
1332 rbuggyQSA.push( ":enabled", ":disabled" );
1333 }
1334
1335 // Opera 10-11 does not throw on post-comma invalid pseudos
1336 el.querySelectorAll("*,:x");
1337 rbuggyQSA.push(",.*:");
1338 });
1339 }
1340
1341 if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
1342 docElem.webkitMatchesSelector ||
1343 docElem.mozMatchesSelector ||
1344 docElem.oMatchesSelector ||
1345 docElem.msMatchesSelector) )) ) {
1346
1347 assert(function( el ) {
1348 // Check to see if it's possible to do matchesSelector
1349 // on a disconnected node (IE 9)
1350 support.disconnectedMatch = matches.call( el, "*" );
1351
1352 // This should fail with an exception
1353 // Gecko does not error, returns false instead
1354 matches.call( el, "[s!='']:x" );
1355 rbuggyMatches.push( "!=", pseudos );
1356 });
1357 }
1358
1359 rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
1360 rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
1361
1362 /* Contains
1363 ---------------------------------------------------------------------- */
1364 hasCompare = rnative.test( docElem.compareDocumentPosition );
1365
1366 // Element contains another
1367 // Purposefully self-exclusive
1368 // As in, an element does not contain itself
1369 contains = hasCompare || rnative.test( docElem.contains ) ?
1370 function( a, b ) {
1371 var adown = a.nodeType === 9 ? a.documentElement : a,
1372 bup = b && b.parentNode;
1373 return a === bup || !!( bup && bup.nodeType === 1 && (
1374 adown.contains ?
1375 adown.contains( bup ) :
1376 a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
1377 ));
1378 } :
1379 function( a, b ) {
1380 if ( b ) {
1381 while ( (b = b.parentNode) ) {
1382 if ( b === a ) {
1383 return true;
1384 }
1385 }
1386 }
1387 return false;
1388 };
1389
1390 /* Sorting
1391 ---------------------------------------------------------------------- */
1392
1393 // Document order sorting
1394 sortOrder = hasCompare ?
1395 function( a, b ) {
1396
1397 // Flag for duplicate removal
1398 if ( a === b ) {
1399 hasDuplicate = true;
1400 return 0;
1401 }
1402
1403 // Sort on method existence if only one input has compareDocumentPosition
1404 var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
1405 if ( compare ) {
1406 return compare;
1407 }
1408
1409 // Calculate position if both inputs belong to the same document
1410 compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
1411 a.compareDocumentPosition( b ) :
1412
1413 // Otherwise we know they are disconnected
1414 1;
1415
1416 // Disconnected nodes
1417 if ( compare & 1 ||
1418 (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
1419
1420 // Choose the first element that is related to our preferred document
1421 if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
1422 return -1;
1423 }
1424 if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
1425 return 1;
1426 }
1427
1428 // Maintain original order
1429 return sortInput ?
1430 ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
1431 0;
1432 }
1433
1434 return compare & 4 ? -1 : 1;
1435 } :
1436 function( a, b ) {
1437 // Exit early if the nodes are identical
1438 if ( a === b ) {
1439 hasDuplicate = true;
1440 return 0;
1441 }
1442
1443 var cur,
1444 i = 0,
1445 aup = a.parentNode,
1446 bup = b.parentNode,
1447 ap = [ a ],
1448 bp = [ b ];
1449
1450 // Parentless nodes are either documents or disconnected
1451 if ( !aup || !bup ) {
1452 return a === document ? -1 :
1453 b === document ? 1 :
1454 aup ? -1 :
1455 bup ? 1 :
1456 sortInput ?
1457 ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
1458 0;
1459
1460 // If the nodes are siblings, we can do a quick check
1461 } else if ( aup === bup ) {
1462 return siblingCheck( a, b );
1463 }
1464
1465 // Otherwise we need full lists of their ancestors for comparison
1466 cur = a;
1467 while ( (cur = cur.parentNode) ) {
1468 ap.unshift( cur );
1469 }
1470 cur = b;
1471 while ( (cur = cur.parentNode) ) {
1472 bp.unshift( cur );
1473 }
1474
1475 // Walk down the tree looking for a discrepancy
1476 while ( ap[i] === bp[i] ) {
1477 i++;
1478 }
1479
1480 return i ?
1481 // Do a sibling check if the nodes have a common ancestor
1482 siblingCheck( ap[i], bp[i] ) :
1483
1484 // Otherwise nodes in our document sort first
1485 ap[i] === preferredDoc ? -1 :
1486 bp[i] === preferredDoc ? 1 :
1487 0;
1488 };
1489
1490 return document;
1491};
1492
1493Sizzle.matches = function( expr, elements ) {
1494 return Sizzle( expr, null, null, elements );
1495};
1496
1497Sizzle.matchesSelector = function( elem, expr ) {
1498 // Set document vars if needed
1499 if ( ( elem.ownerDocument || elem ) !== document ) {
1500 setDocument( elem );
1501 }
1502
1503 if ( support.matchesSelector && documentIsHTML &&
1504 !nonnativeSelectorCache[ expr + " " ] &&
1505 ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
1506 ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
1507
1508 try {
1509 var ret = matches.call( elem, expr );
1510
1511 // IE 9's matchesSelector returns false on disconnected nodes
1512 if ( ret || support.disconnectedMatch ||
1513 // As well, disconnected nodes are said to be in a document
1514 // fragment in IE 9
1515 elem.document && elem.document.nodeType !== 11 ) {
1516 return ret;
1517 }
1518 } catch (e) {
1519 nonnativeSelectorCache( expr, true );
1520 }
1521 }
1522
1523 return Sizzle( expr, document, null, [ elem ] ).length > 0;
1524};
1525
1526Sizzle.contains = function( context, elem ) {
1527 // Set document vars if needed
1528 if ( ( context.ownerDocument || context ) !== document ) {
1529 setDocument( context );
1530 }
1531 return contains( context, elem );
1532};
1533
1534Sizzle.attr = function( elem, name ) {
1535 // Set document vars if needed
1536 if ( ( elem.ownerDocument || elem ) !== document ) {
1537 setDocument( elem );
1538 }
1539
1540 var fn = Expr.attrHandle[ name.toLowerCase() ],
1541 // Don't get fooled by Object.prototype properties (jQuery #13807)
1542 val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
1543 fn( elem, name, !documentIsHTML ) :
1544 undefined;
1545
1546 return val !== undefined ?
1547 val :
1548 support.attributes || !documentIsHTML ?
1549 elem.getAttribute( name ) :
1550 (val = elem.getAttributeNode(name)) && val.specified ?
1551 val.value :
1552 null;
1553};
1554
1555Sizzle.escape = function( sel ) {
1556 return (sel + "").replace( rcssescape, fcssescape );
1557};
1558
1559Sizzle.error = function( msg ) {
1560 throw new Error( "Syntax error, unrecognized expression: " + msg );
1561};
1562
1563/**
1564 * Document sorting and removing duplicates
1565 * @param {ArrayLike} results
1566 */
1567Sizzle.uniqueSort = function( results ) {
1568 var elem,
1569 duplicates = [],
1570 j = 0,
1571 i = 0;
1572
1573 // Unless we *know* we can detect duplicates, assume their presence
1574 hasDuplicate = !support.detectDuplicates;
1575 sortInput = !support.sortStable && results.slice( 0 );
1576 results.sort( sortOrder );
1577
1578 if ( hasDuplicate ) {
1579 while ( (elem = results[i++]) ) {
1580 if ( elem === results[ i ] ) {
1581 j = duplicates.push( i );
1582 }
1583 }
1584 while ( j-- ) {
1585 results.splice( duplicates[ j ], 1 );
1586 }
1587 }
1588
1589 // Clear input after sorting to release objects
1590 // See https://github.com/jquery/sizzle/pull/225
1591 sortInput = null;
1592
1593 return results;
1594};
1595
1596/**
1597 * Utility function for retrieving the text value of an array of DOM nodes
1598 * @param {Array|Element} elem
1599 */
1600getText = Sizzle.getText = function( elem ) {
1601 var node,
1602 ret = "",
1603 i = 0,
1604 nodeType = elem.nodeType;
1605
1606 if ( !nodeType ) {
1607 // If no nodeType, this is expected to be an array
1608 while ( (node = elem[i++]) ) {
1609 // Do not traverse comment nodes
1610 ret += getText( node );
1611 }
1612 } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
1613 // Use textContent for elements
1614 // innerText usage removed for consistency of new lines (jQuery #11153)
1615 if ( typeof elem.textContent === "string" ) {
1616 return elem.textContent;
1617 } else {
1618 // Traverse its children
1619 for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
1620 ret += getText( elem );
1621 }
1622 }
1623 } else if ( nodeType === 3 || nodeType === 4 ) {
1624 return elem.nodeValue;
1625 }
1626 // Do not include comment or processing instruction nodes
1627
1628 return ret;
1629};
1630
1631Expr = Sizzle.selectors = {
1632
1633 // Can be adjusted by the user
1634 cacheLength: 50,
1635
1636 createPseudo: markFunction,
1637
1638 match: matchExpr,
1639
1640 attrHandle: {},
1641
1642 find: {},
1643
1644 relative: {
1645 ">": { dir: "parentNode", first: true },
1646 " ": { dir: "parentNode" },
1647 "+": { dir: "previousSibling", first: true },
1648 "~": { dir: "previousSibling" }
1649 },
1650
1651 preFilter: {
1652 "ATTR": function( match ) {
1653 match[1] = match[1].replace( runescape, funescape );
1654
1655 // Move the given value to match[3] whether quoted or unquoted
1656 match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
1657
1658 if ( match[2] === "~=" ) {
1659 match[3] = " " + match[3] + " ";
1660 }
1661
1662 return match.slice( 0, 4 );
1663 },
1664
1665 "CHILD": function( match ) {
1666 /* matches from matchExpr["CHILD"]
1667 1 type (only|nth|...)
1668 2 what (child|of-type)
1669 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
1670 4 xn-component of xn+y argument ([+-]?\d*n|)
1671 5 sign of xn-component
1672 6 x of xn-component
1673 7 sign of y-component
1674 8 y of y-component
1675 */
1676 match[1] = match[1].toLowerCase();
1677
1678 if ( match[1].slice( 0, 3 ) === "nth" ) {
1679 // nth-* requires argument
1680 if ( !match[3] ) {
1681 Sizzle.error( match[0] );
1682 }
1683
1684 // numeric x and y parameters for Expr.filter.CHILD
1685 // remember that false/true cast respectively to 0/1
1686 match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
1687 match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
1688
1689 // other types prohibit arguments
1690 } else if ( match[3] ) {
1691 Sizzle.error( match[0] );
1692 }
1693
1694 return match;
1695 },
1696
1697 "PSEUDO": function( match ) {
1698 var excess,
1699 unquoted = !match[6] && match[2];
1700
1701 if ( matchExpr["CHILD"].test( match[0] ) ) {
1702 return null;
1703 }
1704
1705 // Accept quoted arguments as-is
1706 if ( match[3] ) {
1707 match[2] = match[4] || match[5] || "";
1708
1709 // Strip excess characters from unquoted arguments
1710 } else if ( unquoted && rpseudo.test( unquoted ) &&
1711 // Get excess from tokenize (recursively)
1712 (excess = tokenize( unquoted, true )) &&
1713 // advance to the next closing parenthesis
1714 (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
1715
1716 // excess is a negative index
1717 match[0] = match[0].slice( 0, excess );
1718 match[2] = unquoted.slice( 0, excess );
1719 }
1720
1721 // Return only captures needed by the pseudo filter method (type and argument)
1722 return match.slice( 0, 3 );
1723 }
1724 },
1725
1726 filter: {
1727
1728 "TAG": function( nodeNameSelector ) {
1729 var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
1730 return nodeNameSelector === "*" ?
1731 function() { return true; } :
1732 function( elem ) {
1733 return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
1734 };
1735 },
1736
1737 "CLASS": function( className ) {
1738 var pattern = classCache[ className + " " ];
1739
1740 return pattern ||
1741 (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
1742 classCache( className, function( elem ) {
1743 return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
1744 });
1745 },
1746
1747 "ATTR": function( name, operator, check ) {
1748 return function( elem ) {
1749 var result = Sizzle.attr( elem, name );
1750
1751 if ( result == null ) {
1752 return operator === "!=";
1753 }
1754 if ( !operator ) {
1755 return true;
1756 }
1757
1758 result += "";
1759
1760 return operator === "=" ? result === check :
1761 operator === "!=" ? result !== check :
1762 operator === "^=" ? check && result.indexOf( check ) === 0 :
1763 operator === "*=" ? check && result.indexOf( check ) > -1 :
1764 operator === "$=" ? check && result.slice( -check.length ) === check :
1765 operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
1766 operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
1767 false;
1768 };
1769 },
1770
1771 "CHILD": function( type, what, argument, first, last ) {
1772 var simple = type.slice( 0, 3 ) !== "nth",
1773 forward = type.slice( -4 ) !== "last",
1774 ofType = what === "of-type";
1775
1776 return first === 1 && last === 0 ?
1777
1778 // Shortcut for :nth-*(n)
1779 function( elem ) {
1780 return !!elem.parentNode;
1781 } :
1782
1783 function( elem, context, xml ) {
1784 var cache, uniqueCache, outerCache, node, nodeIndex, start,
1785 dir = simple !== forward ? "nextSibling" : "previousSibling",
1786 parent = elem.parentNode,
1787 name = ofType && elem.nodeName.toLowerCase(),
1788 useCache = !xml && !ofType,
1789 diff = false;
1790
1791 if ( parent ) {
1792
1793 // :(first|last|only)-(child|of-type)
1794 if ( simple ) {
1795 while ( dir ) {
1796 node = elem;
1797 while ( (node = node[ dir ]) ) {
1798 if ( ofType ?
1799 node.nodeName.toLowerCase() === name :
1800 node.nodeType === 1 ) {
1801
1802 return false;
1803 }
1804 }
1805 // Reverse direction for :only-* (if we haven't yet done so)
1806 start = dir = type === "only" && !start && "nextSibling";
1807 }
1808 return true;
1809 }
1810
1811 start = [ forward ? parent.firstChild : parent.lastChild ];
1812
1813 // non-xml :nth-child(...) stores cache data on `parent`
1814 if ( forward && useCache ) {
1815
1816 // Seek `elem` from a previously-cached index
1817
1818 // ...in a gzip-friendly way
1819 node = parent;
1820 outerCache = node[ expando ] || (node[ expando ] = {});
1821
1822 // Support: IE <9 only
1823 // Defend against cloned attroperties (jQuery gh-1709)
1824 uniqueCache = outerCache[ node.uniqueID ] ||
1825 (outerCache[ node.uniqueID ] = {});
1826
1827 cache = uniqueCache[ type ] || [];
1828 nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
1829 diff = nodeIndex && cache[ 2 ];
1830 node = nodeIndex && parent.childNodes[ nodeIndex ];
1831
1832 while ( (node = ++nodeIndex && node && node[ dir ] ||
1833
1834 // Fallback to seeking `elem` from the start
1835 (diff = nodeIndex = 0) || start.pop()) ) {
1836
1837 // When found, cache indexes on `parent` and break
1838 if ( node.nodeType === 1 && ++diff && node === elem ) {
1839 uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
1840 break;
1841 }
1842 }
1843
1844 } else {
1845 // Use previously-cached element index if available
1846 if ( useCache ) {
1847 // ...in a gzip-friendly way
1848 node = elem;
1849 outerCache = node[ expando ] || (node[ expando ] = {});
1850
1851 // Support: IE <9 only
1852 // Defend against cloned attroperties (jQuery gh-1709)
1853 uniqueCache = outerCache[ node.uniqueID ] ||
1854 (outerCache[ node.uniqueID ] = {});
1855
1856 cache = uniqueCache[ type ] || [];
1857 nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
1858 diff = nodeIndex;
1859 }
1860
1861 // xml :nth-child(...)
1862 // or :nth-last-child(...) or :nth(-last)?-of-type(...)
1863 if ( diff === false ) {
1864 // Use the same loop as above to seek `elem` from the start
1865 while ( (node = ++nodeIndex && node && node[ dir ] ||
1866 (diff = nodeIndex = 0) || start.pop()) ) {
1867
1868 if ( ( ofType ?
1869 node.nodeName.toLowerCase() === name :
1870 node.nodeType === 1 ) &&
1871 ++diff ) {
1872
1873 // Cache the index of each encountered element
1874 if ( useCache ) {
1875 outerCache = node[ expando ] || (node[ expando ] = {});
1876
1877 // Support: IE <9 only
1878 // Defend against cloned attroperties (jQuery gh-1709)
1879 uniqueCache = outerCache[ node.uniqueID ] ||
1880 (outerCache[ node.uniqueID ] = {});
1881
1882 uniqueCache[ type ] = [ dirruns, diff ];
1883 }
1884
1885 if ( node === elem ) {
1886 break;
1887 }
1888 }
1889 }
1890 }
1891 }
1892
1893 // Incorporate the offset, then check against cycle size
1894 diff -= last;
1895 return diff === first || ( diff % first === 0 && diff / first >= 0 );
1896 }
1897 };
1898 },
1899
1900 "PSEUDO": function( pseudo, argument ) {
1901 // pseudo-class names are case-insensitive
1902 // http://www.w3.org/TR/selectors/#pseudo-classes
1903 // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
1904 // Remember that setFilters inherits from pseudos
1905 var args,
1906 fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
1907 Sizzle.error( "unsupported pseudo: " + pseudo );
1908
1909 // The user may use createPseudo to indicate that
1910 // arguments are needed to create the filter function
1911 // just as Sizzle does
1912 if ( fn[ expando ] ) {
1913 return fn( argument );
1914 }
1915
1916 // But maintain support for old signatures
1917 if ( fn.length > 1 ) {
1918 args = [ pseudo, pseudo, "", argument ];
1919 return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
1920 markFunction(function( seed, matches ) {
1921 var idx,
1922 matched = fn( seed, argument ),
1923 i = matched.length;
1924 while ( i-- ) {
1925 idx = indexOf( seed, matched[i] );
1926 seed[ idx ] = !( matches[ idx ] = matched[i] );
1927 }
1928 }) :
1929 function( elem ) {
1930 return fn( elem, 0, args );
1931 };
1932 }
1933
1934 return fn;
1935 }
1936 },
1937
1938 pseudos: {
1939 // Potentially complex pseudos
1940 "not": markFunction(function( selector ) {
1941 // Trim the selector passed to compile
1942 // to avoid treating leading and trailing
1943 // spaces as combinators
1944 var input = [],
1945 results = [],
1946 matcher = compile( selector.replace( rtrim, "$1" ) );
1947
1948 return matcher[ expando ] ?
1949 markFunction(function( seed, matches, context, xml ) {
1950 var elem,
1951 unmatched = matcher( seed, null, xml, [] ),
1952 i = seed.length;
1953
1954 // Match elements unmatched by `matcher`
1955 while ( i-- ) {
1956 if ( (elem = unmatched[i]) ) {
1957 seed[i] = !(matches[i] = elem);
1958 }
1959 }
1960 }) :
1961 function( elem, context, xml ) {
1962 input[0] = elem;
1963 matcher( input, null, xml, results );
1964 // Don't keep the element (issue #299)
1965 input[0] = null;
1966 return !results.pop();
1967 };
1968 }),
1969
1970 "has": markFunction(function( selector ) {
1971 return function( elem ) {
1972 return Sizzle( selector, elem ).length > 0;
1973 };
1974 }),
1975
1976 "contains": markFunction(function( text ) {
1977 text = text.replace( runescape, funescape );
1978 return function( elem ) {
1979 return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;
1980 };
1981 }),
1982
1983 // "Whether an element is represented by a :lang() selector
1984 // is based solely on the element's language value
1985 // being equal to the identifier C,
1986 // or beginning with the identifier C immediately followed by "-".
1987 // The matching of C against the element's language value is performed case-insensitively.
1988 // The identifier C does not have to be a valid language name."
1989 // http://www.w3.org/TR/selectors/#lang-pseudo
1990 "lang": markFunction( function( lang ) {
1991 // lang value must be a valid identifier
1992 if ( !ridentifier.test(lang || "") ) {
1993 Sizzle.error( "unsupported lang: " + lang );
1994 }
1995 lang = lang.replace( runescape, funescape ).toLowerCase();
1996 return function( elem ) {
1997 var elemLang;
1998 do {
1999 if ( (elemLang = documentIsHTML ?
2000 elem.lang :
2001 elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
2002
2003 elemLang = elemLang.toLowerCase();
2004 return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
2005 }
2006 } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
2007 return false;
2008 };
2009 }),
2010
2011 // Miscellaneous
2012 "target": function( elem ) {
2013 var hash = window.location && window.location.hash;
2014 return hash && hash.slice( 1 ) === elem.id;
2015 },
2016
2017 "root": function( elem ) {
2018 return elem === docElem;
2019 },
2020
2021 "focus": function( elem ) {
2022 return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
2023 },
2024
2025 // Boolean properties
2026 "enabled": createDisabledPseudo( false ),
2027 "disabled": createDisabledPseudo( true ),
2028
2029 "checked": function( elem ) {
2030 // In CSS3, :checked should return both checked and selected elements
2031 // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
2032 var nodeName = elem.nodeName.toLowerCase();
2033 return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
2034 },
2035
2036 "selected": function( elem ) {
2037 // Accessing this property makes selected-by-default
2038 // options in Safari work properly
2039 if ( elem.parentNode ) {
2040 elem.parentNode.selectedIndex;
2041 }
2042
2043 return elem.selected === true;
2044 },
2045
2046 // Contents
2047 "empty": function( elem ) {
2048 // http://www.w3.org/TR/selectors/#empty-pseudo
2049 // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
2050 // but not by others (comment: 8; processing instruction: 7; etc.)
2051 // nodeType < 6 works because attributes (2) do not appear as children
2052 for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
2053 if ( elem.nodeType < 6 ) {
2054 return false;
2055 }
2056 }
2057 return true;
2058 },
2059
2060 "parent": function( elem ) {
2061 return !Expr.pseudos["empty"]( elem );
2062 },
2063
2064 // Element/input types
2065 "header": function( elem ) {
2066 return rheader.test( elem.nodeName );
2067 },
2068
2069 "input": function( elem ) {
2070 return rinputs.test( elem.nodeName );
2071 },
2072
2073 "button": function( elem ) {
2074 var name = elem.nodeName.toLowerCase();
2075 return name === "input" && elem.type === "button" || name === "button";
2076 },
2077
2078 "text": function( elem ) {
2079 var attr;
2080 return elem.nodeName.toLowerCase() === "input" &&
2081 elem.type === "text" &&
2082
2083 // Support: IE<8
2084 // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
2085 ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
2086 },
2087
2088 // Position-in-collection
2089 "first": createPositionalPseudo(function() {
2090 return [ 0 ];
2091 }),
2092
2093 "last": createPositionalPseudo(function( matchIndexes, length ) {
2094 return [ length - 1 ];
2095 }),
2096
2097 "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
2098 return [ argument < 0 ? argument + length : argument ];
2099 }),
2100
2101 "even": createPositionalPseudo(function( matchIndexes, length ) {
2102 var i = 0;
2103 for ( ; i < length; i += 2 ) {
2104 matchIndexes.push( i );
2105 }
2106 return matchIndexes;
2107 }),
2108
2109 "odd": createPositionalPseudo(function( matchIndexes, length ) {
2110 var i = 1;
2111 for ( ; i < length; i += 2 ) {
2112 matchIndexes.push( i );
2113 }
2114 return matchIndexes;
2115 }),
2116
2117 "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
2118 var i = argument < 0 ?
2119 argument + length :
2120 argument > length ?
2121 length :
2122 argument;
2123 for ( ; --i >= 0; ) {
2124 matchIndexes.push( i );
2125 }
2126 return matchIndexes;
2127 }),
2128
2129 "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
2130 var i = argument < 0 ? argument + length : argument;
2131 for ( ; ++i < length; ) {
2132 matchIndexes.push( i );
2133 }
2134 return matchIndexes;
2135 })
2136 }
2137};
2138
2139Expr.pseudos["nth"] = Expr.pseudos["eq"];
2140
2141// Add button/input type pseudos
2142for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
2143 Expr.pseudos[ i ] = createInputPseudo( i );
2144}
2145for ( i in { submit: true, reset: true } ) {
2146 Expr.pseudos[ i ] = createButtonPseudo( i );
2147}
2148
2149// Easy API for creating new setFilters
2150function setFilters() {}
2151setFilters.prototype = Expr.filters = Expr.pseudos;
2152Expr.setFilters = new setFilters();
2153
2154tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
2155 var matched, match, tokens, type,
2156 soFar, groups, preFilters,
2157 cached = tokenCache[ selector + " " ];
2158
2159 if ( cached ) {
2160 return parseOnly ? 0 : cached.slice( 0 );
2161 }
2162
2163 soFar = selector;
2164 groups = [];
2165 preFilters = Expr.preFilter;
2166
2167 while ( soFar ) {
2168
2169 // Comma and first run
2170 if ( !matched || (match = rcomma.exec( soFar )) ) {
2171 if ( match ) {
2172 // Don't consume trailing commas as valid
2173 soFar = soFar.slice( match[0].length ) || soFar;
2174 }
2175 groups.push( (tokens = []) );
2176 }
2177
2178 matched = false;
2179
2180 // Combinators
2181 if ( (match = rcombinators.exec( soFar )) ) {
2182 matched = match.shift();
2183 tokens.push({
2184 value: matched,
2185 // Cast descendant combinators to space
2186 type: match[0].replace( rtrim, " " )
2187 });
2188 soFar = soFar.slice( matched.length );
2189 }
2190
2191 // Filters
2192 for ( type in Expr.filter ) {
2193 if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
2194 (match = preFilters[ type ]( match ))) ) {
2195 matched = match.shift();
2196 tokens.push({
2197 value: matched,
2198 type: type,
2199 matches: match
2200 });
2201 soFar = soFar.slice( matched.length );
2202 }
2203 }
2204
2205 if ( !matched ) {
2206 break;
2207 }
2208 }
2209
2210 // Return the length of the invalid excess
2211 // if we're just parsing
2212 // Otherwise, throw an error or return tokens
2213 return parseOnly ?
2214 soFar.length :
2215 soFar ?
2216 Sizzle.error( selector ) :
2217 // Cache the tokens
2218 tokenCache( selector, groups ).slice( 0 );
2219};
2220
2221function toSelector( tokens ) {
2222 var i = 0,
2223 len = tokens.length,
2224 selector = "";
2225 for ( ; i < len; i++ ) {
2226 selector += tokens[i].value;
2227 }
2228 return selector;
2229}
2230
2231function addCombinator( matcher, combinator, base ) {
2232 var dir = combinator.dir,
2233 skip = combinator.next,
2234 key = skip || dir,
2235 checkNonElements = base && key === "parentNode",
2236 doneName = done++;
2237
2238 return combinator.first ?
2239 // Check against closest ancestor/preceding element
2240 function( elem, context, xml ) {
2241 while ( (elem = elem[ dir ]) ) {
2242 if ( elem.nodeType === 1 || checkNonElements ) {
2243 return matcher( elem, context, xml );
2244 }
2245 }
2246 return false;
2247 } :
2248
2249 // Check against all ancestor/preceding elements
2250 function( elem, context, xml ) {
2251 var oldCache, uniqueCache, outerCache,
2252 newCache = [ dirruns, doneName ];
2253
2254 // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
2255 if ( xml ) {
2256 while ( (elem = elem[ dir ]) ) {
2257 if ( elem.nodeType === 1 || checkNonElements ) {
2258 if ( matcher( elem, context, xml ) ) {
2259 return true;
2260 }
2261 }
2262 }
2263 } else {
2264 while ( (elem = elem[ dir ]) ) {
2265 if ( elem.nodeType === 1 || checkNonElements ) {
2266 outerCache = elem[ expando ] || (elem[ expando ] = {});
2267
2268 // Support: IE <9 only
2269 // Defend against cloned attroperties (jQuery gh-1709)
2270 uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
2271
2272 if ( skip && skip === elem.nodeName.toLowerCase() ) {
2273 elem = elem[ dir ] || elem;
2274 } else if ( (oldCache = uniqueCache[ key ]) &&
2275 oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
2276
2277 // Assign to newCache so results back-propagate to previous elements
2278 return (newCache[ 2 ] = oldCache[ 2 ]);
2279 } else {
2280 // Reuse newcache so results back-propagate to previous elements
2281 uniqueCache[ key ] = newCache;
2282
2283 // A match means we're done; a fail means we have to keep checking
2284 if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
2285 return true;
2286 }
2287 }
2288 }
2289 }
2290 }
2291 return false;
2292 };
2293}
2294
2295function elementMatcher( matchers ) {
2296 return matchers.length > 1 ?
2297 function( elem, context, xml ) {
2298 var i = matchers.length;
2299 while ( i-- ) {
2300 if ( !matchers[i]( elem, context, xml ) ) {
2301 return false;
2302 }
2303 }
2304 return true;
2305 } :
2306 matchers[0];
2307}
2308
2309function multipleContexts( selector, contexts, results ) {
2310 var i = 0,
2311 len = contexts.length;
2312 for ( ; i < len; i++ ) {
2313 Sizzle( selector, contexts[i], results );
2314 }
2315 return results;
2316}
2317
2318function condense( unmatched, map, filter, context, xml ) {
2319 var elem,
2320 newUnmatched = [],
2321 i = 0,
2322 len = unmatched.length,
2323 mapped = map != null;
2324
2325 for ( ; i < len; i++ ) {
2326 if ( (elem = unmatched[i]) ) {
2327 if ( !filter || filter( elem, context, xml ) ) {
2328 newUnmatched.push( elem );
2329 if ( mapped ) {
2330 map.push( i );
2331 }
2332 }
2333 }
2334 }
2335
2336 return newUnmatched;
2337}
2338
2339function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
2340 if ( postFilter && !postFilter[ expando ] ) {
2341 postFilter = setMatcher( postFilter );
2342 }
2343 if ( postFinder && !postFinder[ expando ] ) {
2344 postFinder = setMatcher( postFinder, postSelector );
2345 }
2346 return markFunction(function( seed, results, context, xml ) {
2347 var temp, i, elem,
2348 preMap = [],
2349 postMap = [],
2350 preexisting = results.length,
2351
2352 // Get initial elements from seed or context
2353 elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
2354
2355 // Prefilter to get matcher input, preserving a map for seed-results synchronization
2356 matcherIn = preFilter && ( seed || !selector ) ?
2357 condense( elems, preMap, preFilter, context, xml ) :
2358 elems,
2359
2360 matcherOut = matcher ?
2361 // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
2362 postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
2363
2364 // ...intermediate processing is necessary
2365 [] :
2366
2367 // ...otherwise use results directly
2368 results :
2369 matcherIn;
2370
2371 // Find primary matches
2372 if ( matcher ) {
2373 matcher( matcherIn, matcherOut, context, xml );
2374 }
2375
2376 // Apply postFilter
2377 if ( postFilter ) {
2378 temp = condense( matcherOut, postMap );
2379 postFilter( temp, [], context, xml );
2380
2381 // Un-match failing elements by moving them back to matcherIn
2382 i = temp.length;
2383 while ( i-- ) {
2384 if ( (elem = temp[i]) ) {
2385 matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
2386 }
2387 }
2388 }
2389
2390 if ( seed ) {
2391 if ( postFinder || preFilter ) {
2392 if ( postFinder ) {
2393 // Get the final matcherOut by condensing this intermediate into postFinder contexts
2394 temp = [];
2395 i = matcherOut.length;
2396 while ( i-- ) {
2397 if ( (elem = matcherOut[i]) ) {
2398 // Restore matcherIn since elem is not yet a final match
2399 temp.push( (matcherIn[i] = elem) );
2400 }
2401 }
2402 postFinder( null, (matcherOut = []), temp, xml );
2403 }
2404
2405 // Move matched elements from seed to results to keep them synchronized
2406 i = matcherOut.length;
2407 while ( i-- ) {
2408 if ( (elem = matcherOut[i]) &&
2409 (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
2410
2411 seed[temp] = !(results[temp] = elem);
2412 }
2413 }
2414 }
2415
2416 // Add elements to results, through postFinder if defined
2417 } else {
2418 matcherOut = condense(
2419 matcherOut === results ?
2420 matcherOut.splice( preexisting, matcherOut.length ) :
2421 matcherOut
2422 );
2423 if ( postFinder ) {
2424 postFinder( null, results, matcherOut, xml );
2425 } else {
2426 push.apply( results, matcherOut );
2427 }
2428 }
2429 });
2430}
2431
2432function matcherFromTokens( tokens ) {
2433 var checkContext, matcher, j,
2434 len = tokens.length,
2435 leadingRelative = Expr.relative[ tokens[0].type ],
2436 implicitRelative = leadingRelative || Expr.relative[" "],
2437 i = leadingRelative ? 1 : 0,
2438
2439 // The foundational matcher ensures that elements are reachable from top-level context(s)
2440 matchContext = addCombinator( function( elem ) {
2441 return elem === checkContext;
2442 }, implicitRelative, true ),
2443 matchAnyContext = addCombinator( function( elem ) {
2444 return indexOf( checkContext, elem ) > -1;
2445 }, implicitRelative, true ),
2446 matchers = [ function( elem, context, xml ) {
2447 var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
2448 (checkContext = context).nodeType ?
2449 matchContext( elem, context, xml ) :
2450 matchAnyContext( elem, context, xml ) );
2451 // Avoid hanging onto element (issue #299)
2452 checkContext = null;
2453 return ret;
2454 } ];
2455
2456 for ( ; i < len; i++ ) {
2457 if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
2458 matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
2459 } else {
2460 matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
2461
2462 // Return special upon seeing a positional matcher
2463 if ( matcher[ expando ] ) {
2464 // Find the next relative operator (if any) for proper handling
2465 j = ++i;
2466 for ( ; j < len; j++ ) {
2467 if ( Expr.relative[ tokens[j].type ] ) {
2468 break;
2469 }
2470 }
2471 return setMatcher(
2472 i > 1 && elementMatcher( matchers ),
2473 i > 1 && toSelector(
2474 // If the preceding token was a descendant combinator, insert an implicit any-element `*`
2475 tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
2476 ).replace( rtrim, "$1" ),
2477 matcher,
2478 i < j && matcherFromTokens( tokens.slice( i, j ) ),
2479 j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
2480 j < len && toSelector( tokens )
2481 );
2482 }
2483 matchers.push( matcher );
2484 }
2485 }
2486
2487 return elementMatcher( matchers );
2488}
2489
2490function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
2491 var bySet = setMatchers.length > 0,
2492 byElement = elementMatchers.length > 0,
2493 superMatcher = function( seed, context, xml, results, outermost ) {
2494 var elem, j, matcher,
2495 matchedCount = 0,
2496 i = "0",
2497 unmatched = seed && [],
2498 setMatched = [],
2499 contextBackup = outermostContext,
2500 // We must always have either seed elements or outermost context
2501 elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
2502 // Use integer dirruns iff this is the outermost matcher
2503 dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
2504 len = elems.length;
2505
2506 if ( outermost ) {
2507 outermostContext = context === document || context || outermost;
2508 }
2509
2510 // Add elements passing elementMatchers directly to results
2511 // Support: IE<9, Safari
2512 // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
2513 for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
2514 if ( byElement && elem ) {
2515 j = 0;
2516 if ( !context && elem.ownerDocument !== document ) {
2517 setDocument( elem );
2518 xml = !documentIsHTML;
2519 }
2520 while ( (matcher = elementMatchers[j++]) ) {
2521 if ( matcher( elem, context || document, xml) ) {
2522 results.push( elem );
2523 break;
2524 }
2525 }
2526 if ( outermost ) {
2527 dirruns = dirrunsUnique;
2528 }
2529 }
2530
2531 // Track unmatched elements for set filters
2532 if ( bySet ) {
2533 // They will have gone through all possible matchers
2534 if ( (elem = !matcher && elem) ) {
2535 matchedCount--;
2536 }
2537
2538 // Lengthen the array for every element, matched or not
2539 if ( seed ) {
2540 unmatched.push( elem );
2541 }
2542 }
2543 }
2544
2545 // `i` is now the count of elements visited above, and adding it to `matchedCount`
2546 // makes the latter nonnegative.
2547 matchedCount += i;
2548
2549 // Apply set filters to unmatched elements
2550 // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
2551 // equals `i`), unless we didn't visit _any_ elements in the above loop because we have
2552 // no element matchers and no seed.
2553 // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
2554 // case, which will result in a "00" `matchedCount` that differs from `i` but is also
2555 // numerically zero.
2556 if ( bySet && i !== matchedCount ) {
2557 j = 0;
2558 while ( (matcher = setMatchers[j++]) ) {
2559 matcher( unmatched, setMatched, context, xml );
2560 }
2561
2562 if ( seed ) {
2563 // Reintegrate element matches to eliminate the need for sorting
2564 if ( matchedCount > 0 ) {
2565 while ( i-- ) {
2566 if ( !(unmatched[i] || setMatched[i]) ) {
2567 setMatched[i] = pop.call( results );
2568 }
2569 }
2570 }
2571
2572 // Discard index placeholder values to get only actual matches
2573 setMatched = condense( setMatched );
2574 }
2575
2576 // Add matches to results
2577 push.apply( results, setMatched );
2578
2579 // Seedless set matches succeeding multiple successful matchers stipulate sorting
2580 if ( outermost && !seed && setMatched.length > 0 &&
2581 ( matchedCount + setMatchers.length ) > 1 ) {
2582
2583 Sizzle.uniqueSort( results );
2584 }
2585 }
2586
2587 // Override manipulation of globals by nested matchers
2588 if ( outermost ) {
2589 dirruns = dirrunsUnique;
2590 outermostContext = contextBackup;
2591 }
2592
2593 return unmatched;
2594 };
2595
2596 return bySet ?
2597 markFunction( superMatcher ) :
2598 superMatcher;
2599}
2600
2601compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
2602 var i,
2603 setMatchers = [],
2604 elementMatchers = [],
2605 cached = compilerCache[ selector + " " ];
2606
2607 if ( !cached ) {
2608 // Generate a function of recursive functions that can be used to check each element
2609 if ( !match ) {
2610 match = tokenize( selector );
2611 }
2612 i = match.length;
2613 while ( i-- ) {
2614 cached = matcherFromTokens( match[i] );
2615 if ( cached[ expando ] ) {
2616 setMatchers.push( cached );
2617 } else {
2618 elementMatchers.push( cached );
2619 }
2620 }
2621
2622 // Cache the compiled function
2623 cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
2624
2625 // Save selector and tokenization
2626 cached.selector = selector;
2627 }
2628 return cached;
2629};
2630
2631/**
2632 * A low-level selection function that works with Sizzle's compiled
2633 * selector functions
2634 * @param {String|Function} selector A selector or a pre-compiled
2635 * selector function built with Sizzle.compile
2636 * @param {Element} context
2637 * @param {Array} [results]
2638 * @param {Array} [seed] A set of elements to match against
2639 */
2640select = Sizzle.select = function( selector, context, results, seed ) {
2641 var i, tokens, token, type, find,
2642 compiled = typeof selector === "function" && selector,
2643 match = !seed && tokenize( (selector = compiled.selector || selector) );
2644
2645 results = results || [];
2646
2647 // Try to minimize operations if there is only one selector in the list and no seed
2648 // (the latter of which guarantees us context)
2649 if ( match.length === 1 ) {
2650
2651 // Reduce context if the leading compound selector is an ID
2652 tokens = match[0] = match[0].slice( 0 );
2653 if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
2654 context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {
2655
2656 context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
2657 if ( !context ) {
2658 return results;
2659
2660 // Precompiled matchers will still verify ancestry, so step up a level
2661 } else if ( compiled ) {
2662 context = context.parentNode;
2663 }
2664
2665 selector = selector.slice( tokens.shift().value.length );
2666 }
2667
2668 // Fetch a seed set for right-to-left matching
2669 i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
2670 while ( i-- ) {
2671 token = tokens[i];
2672
2673 // Abort if we hit a combinator
2674 if ( Expr.relative[ (type = token.type) ] ) {
2675 break;
2676 }
2677 if ( (find = Expr.find[ type ]) ) {
2678 // Search, expanding context for leading sibling combinators
2679 if ( (seed = find(
2680 token.matches[0].replace( runescape, funescape ),
2681 rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
2682 )) ) {
2683
2684 // If seed is empty or no tokens remain, we can return early
2685 tokens.splice( i, 1 );
2686 selector = seed.length && toSelector( tokens );
2687 if ( !selector ) {
2688 push.apply( results, seed );
2689 return results;
2690 }
2691
2692 break;
2693 }
2694 }
2695 }
2696 }
2697
2698 // Compile and execute a filtering function if one is not provided
2699 // Provide `match` to avoid retokenization if we modified the selector above
2700 ( compiled || compile( selector, match ) )(
2701 seed,
2702 context,
2703 !documentIsHTML,
2704 results,
2705 !context || rsibling.test( selector ) && testContext( context.parentNode ) || context
2706 );
2707 return results;
2708};
2709
2710// One-time assignments
2711
2712// Sort stability
2713support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
2714
2715// Support: Chrome 14-35+
2716// Always assume duplicates if they aren't passed to the comparison function
2717support.detectDuplicates = !!hasDuplicate;
2718
2719// Initialize against the default document
2720setDocument();
2721
2722// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
2723// Detached nodes confoundingly follow *each other*
2724support.sortDetached = assert(function( el ) {
2725 // Should return 1, but returns 4 (following)
2726 return el.compareDocumentPosition( document.createElement("fieldset") ) & 1;
2727});
2728
2729// Support: IE<8
2730// Prevent attribute/property "interpolation"
2731// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
2732if ( !assert(function( el ) {
2733 el.innerHTML = "<a href='#'></a>";
2734 return el.firstChild.getAttribute("href") === "#" ;
2735}) ) {
2736 addHandle( "type|href|height|width", function( elem, name, isXML ) {
2737 if ( !isXML ) {
2738 return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
2739 }
2740 });
2741}
2742
2743// Support: IE<9
2744// Use defaultValue in place of getAttribute("value")
2745if ( !support.attributes || !assert(function( el ) {
2746 el.innerHTML = "<input/>";
2747 el.firstChild.setAttribute( "value", "" );
2748 return el.firstChild.getAttribute( "value" ) === "";
2749}) ) {
2750 addHandle( "value", function( elem, name, isXML ) {
2751 if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
2752 return elem.defaultValue;
2753 }
2754 });
2755}
2756
2757// Support: IE<9
2758// Use getAttributeNode to fetch booleans when getAttribute lies
2759if ( !assert(function( el ) {
2760 return el.getAttribute("disabled") == null;
2761}) ) {
2762 addHandle( booleans, function( elem, name, isXML ) {
2763 var val;
2764 if ( !isXML ) {
2765 return elem[ name ] === true ? name.toLowerCase() :
2766 (val = elem.getAttributeNode( name )) && val.specified ?
2767 val.value :
2768 null;
2769 }
2770 });
2771}
2772
2773return Sizzle;
2774
2775})( window );
2776
2777
2778
2779jQuery.find = Sizzle;
2780jQuery.expr = Sizzle.selectors;
2781
2782// Deprecated
2783jQuery.expr[ ":" ] = jQuery.expr.pseudos;
2784jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
2785jQuery.text = Sizzle.getText;
2786jQuery.isXMLDoc = Sizzle.isXML;
2787jQuery.contains = Sizzle.contains;
2788jQuery.escapeSelector = Sizzle.escape;
2789
2790
2791
2792
2793var dir = function( elem, dir, until ) {
2794 var matched = [],
2795 truncate = until !== undefined;
2796
2797 while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
2798 if ( elem.nodeType === 1 ) {
2799 if ( truncate && jQuery( elem ).is( until ) ) {
2800 break;
2801 }
2802 matched.push( elem );
2803 }
2804 }
2805 return matched;
2806};
2807
2808
2809var siblings = function( n, elem ) {
2810 var matched = [];
2811
2812 for ( ; n; n = n.nextSibling ) {
2813 if ( n.nodeType === 1 && n !== elem ) {
2814 matched.push( n );
2815 }
2816 }
2817
2818 return matched;
2819};
2820
2821
2822var rneedsContext = jQuery.expr.match.needsContext;
2823
2824
2825
2826function nodeName( elem, name ) {
2827
2828 return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
2829
2830};
2831var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
2832
2833
2834
2835// Implement the identical functionality for filter and not
2836function winnow( elements, qualifier, not ) {
2837 if ( isFunction( qualifier ) ) {
2838 return jQuery.grep( elements, function( elem, i ) {
2839 return !!qualifier.call( elem, i, elem ) !== not;
2840 } );
2841 }
2842
2843 // Single element
2844 if ( qualifier.nodeType ) {
2845 return jQuery.grep( elements, function( elem ) {
2846 return ( elem === qualifier ) !== not;
2847 } );
2848 }
2849
2850 // Arraylike of elements (jQuery, arguments, Array)
2851 if ( typeof qualifier !== "string" ) {
2852 return jQuery.grep( elements, function( elem ) {
2853 return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
2854 } );
2855 }
2856
2857 // Filtered directly for both simple and complex selectors
2858 return jQuery.filter( qualifier, elements, not );
2859}
2860
2861jQuery.filter = function( expr, elems, not ) {
2862 var elem = elems[ 0 ];
2863
2864 if ( not ) {
2865 expr = ":not(" + expr + ")";
2866 }
2867
2868 if ( elems.length === 1 && elem.nodeType === 1 ) {
2869 return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
2870 }
2871
2872 return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
2873 return elem.nodeType === 1;
2874 } ) );
2875};
2876
2877jQuery.fn.extend( {
2878 find: function( selector ) {
2879 var i, ret,
2880 len = this.length,
2881 self = this;
2882
2883 if ( typeof selector !== "string" ) {
2884 return this.pushStack( jQuery( selector ).filter( function() {
2885 for ( i = 0; i < len; i++ ) {
2886 if ( jQuery.contains( self[ i ], this ) ) {
2887 return true;
2888 }
2889 }
2890 } ) );
2891 }
2892
2893 ret = this.pushStack( [] );
2894
2895 for ( i = 0; i < len; i++ ) {
2896 jQuery.find( selector, self[ i ], ret );
2897 }
2898
2899 return len > 1 ? jQuery.uniqueSort( ret ) : ret;
2900 },
2901 filter: function( selector ) {
2902 return this.pushStack( winnow( this, selector || [], false ) );
2903 },
2904 not: function( selector ) {
2905 return this.pushStack( winnow( this, selector || [], true ) );
2906 },
2907 is: function( selector ) {
2908 return !!winnow(
2909 this,
2910
2911 // If this is a positional/relative selector, check membership in the returned set
2912 // so $("p:first").is("p:last") won't return true for a doc with two "p".
2913 typeof selector === "string" && rneedsContext.test( selector ) ?
2914 jQuery( selector ) :
2915 selector || [],
2916 false
2917 ).length;
2918 }
2919} );
2920
2921
2922// Initialize a jQuery object
2923
2924
2925// A central reference to the root jQuery(document)
2926var rootjQuery,
2927
2928 // A simple way to check for HTML strings
2929 // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
2930 // Strict HTML recognition (#11290: must start with <)
2931 // Shortcut simple #id case for speed
2932 rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
2933
2934 init = jQuery.fn.init = function( selector, context, root ) {
2935 var match, elem;
2936
2937 // HANDLE: $(""), $(null), $(undefined), $(false)
2938 if ( !selector ) {
2939 return this;
2940 }
2941
2942 // Method init() accepts an alternate rootjQuery
2943 // so migrate can support jQuery.sub (gh-2101)
2944 root = root || rootjQuery;
2945
2946 // Handle HTML strings
2947 if ( typeof selector === "string" ) {
2948 if ( selector[ 0 ] === "<" &&
2949 selector[ selector.length - 1 ] === ">" &&
2950 selector.length >= 3 ) {
2951
2952 // Assume that strings that start and end with <> are HTML and skip the regex check
2953 match = [ null, selector, null ];
2954
2955 } else {
2956 match = rquickExpr.exec( selector );
2957 }
2958
2959 // Match html or make sure no context is specified for #id
2960 if ( match && ( match[ 1 ] || !context ) ) {
2961
2962 // HANDLE: $(html) -> $(array)
2963 if ( match[ 1 ] ) {
2964 context = context instanceof jQuery ? context[ 0 ] : context;
2965
2966 // Option to run scripts is true for back-compat
2967 // Intentionally let the error be thrown if parseHTML is not present
2968 jQuery.merge( this, jQuery.parseHTML(
2969 match[ 1 ],
2970 context && context.nodeType ? context.ownerDocument || context : document,
2971 true
2972 ) );
2973
2974 // HANDLE: $(html, props)
2975 if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
2976 for ( match in context ) {
2977
2978 // Properties of context are called as methods if possible
2979 if ( isFunction( this[ match ] ) ) {
2980 this[ match ]( context[ match ] );
2981
2982 // ...and otherwise set as attributes
2983 } else {
2984 this.attr( match, context[ match ] );
2985 }
2986 }
2987 }
2988
2989 return this;
2990
2991 // HANDLE: $(#id)
2992 } else {
2993 elem = document.getElementById( match[ 2 ] );
2994
2995 if ( elem ) {
2996
2997 // Inject the element directly into the jQuery object
2998 this[ 0 ] = elem;
2999 this.length = 1;
3000 }
3001 return this;
3002 }
3003
3004 // HANDLE: $(expr, $(...))
3005 } else if ( !context || context.jquery ) {
3006 return ( context || root ).find( selector );
3007
3008 // HANDLE: $(expr, context)
3009 // (which is just equivalent to: $(context).find(expr)
3010 } else {
3011 return this.constructor( context ).find( selector );
3012 }
3013
3014 // HANDLE: $(DOMElement)
3015 } else if ( selector.nodeType ) {
3016 this[ 0 ] = selector;
3017 this.length = 1;
3018 return this;
3019
3020 // HANDLE: $(function)
3021 // Shortcut for document ready
3022 } else if ( isFunction( selector ) ) {
3023 return root.ready !== undefined ?
3024 root.ready( selector ) :
3025
3026 // Execute immediately if ready is not present
3027 selector( jQuery );
3028 }
3029
3030 return jQuery.makeArray( selector, this );
3031 };
3032
3033// Give the init function the jQuery prototype for later instantiation
3034init.prototype = jQuery.fn;
3035
3036// Initialize central reference
3037rootjQuery = jQuery( document );
3038
3039
3040var rparentsprev = /^(?:parents|prev(?:Until|All))/,
3041
3042 // Methods guaranteed to produce a unique set when starting from a unique set
3043 guaranteedUnique = {
3044 children: true,
3045 contents: true,
3046 next: true,
3047 prev: true
3048 };
3049
3050jQuery.fn.extend( {
3051 has: function( target ) {
3052 var targets = jQuery( target, this ),
3053 l = targets.length;
3054
3055 return this.filter( function() {
3056 var i = 0;
3057 for ( ; i < l; i++ ) {
3058 if ( jQuery.contains( this, targets[ i ] ) ) {
3059 return true;
3060 }
3061 }
3062 } );
3063 },
3064
3065 closest: function( selectors, context ) {
3066 var cur,
3067 i = 0,
3068 l = this.length,
3069 matched = [],
3070 targets = typeof selectors !== "string" && jQuery( selectors );
3071
3072 // Positional selectors never match, since there's no _selection_ context
3073 if ( !rneedsContext.test( selectors ) ) {
3074 for ( ; i < l; i++ ) {
3075 for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
3076
3077 // Always skip document fragments
3078 if ( cur.nodeType < 11 && ( targets ?
3079 targets.index( cur ) > -1 :
3080
3081 // Don't pass non-elements to Sizzle
3082 cur.nodeType === 1 &&
3083 jQuery.find.matchesSelector( cur, selectors ) ) ) {
3084
3085 matched.push( cur );
3086 break;
3087 }
3088 }
3089 }
3090 }
3091
3092 return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
3093 },
3094
3095 // Determine the position of an element within the set
3096 index: function( elem ) {
3097
3098 // No argument, return index in parent
3099 if ( !elem ) {
3100 return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
3101 }
3102
3103 // Index in selector
3104 if ( typeof elem === "string" ) {
3105 return indexOf.call( jQuery( elem ), this[ 0 ] );
3106 }
3107
3108 // Locate the position of the desired element
3109 return indexOf.call( this,
3110
3111 // If it receives a jQuery object, the first element is used
3112 elem.jquery ? elem[ 0 ] : elem
3113 );
3114 },
3115
3116 add: function( selector, context ) {
3117 return this.pushStack(
3118 jQuery.uniqueSort(
3119 jQuery.merge( this.get(), jQuery( selector, context ) )
3120 )
3121 );
3122 },
3123
3124 addBack: function( selector ) {
3125 return this.add( selector == null ?
3126 this.prevObject : this.prevObject.filter( selector )
3127 );
3128 }
3129} );
3130
3131function sibling( cur, dir ) {
3132 while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
3133 return cur;
3134}
3135
3136jQuery.each( {
3137 parent: function( elem ) {
3138 var parent = elem.parentNode;
3139 return parent && parent.nodeType !== 11 ? parent : null;
3140 },
3141 parents: function( elem ) {
3142 return dir( elem, "parentNode" );
3143 },
3144 parentsUntil: function( elem, i, until ) {
3145 return dir( elem, "parentNode", until );
3146 },
3147 next: function( elem ) {
3148 return sibling( elem, "nextSibling" );
3149 },
3150 prev: function( elem ) {
3151 return sibling( elem, "previousSibling" );
3152 },
3153 nextAll: function( elem ) {
3154 return dir( elem, "nextSibling" );
3155 },
3156 prevAll: function( elem ) {
3157 return dir( elem, "previousSibling" );
3158 },
3159 nextUntil: function( elem, i, until ) {
3160 return dir( elem, "nextSibling", until );
3161 },
3162 prevUntil: function( elem, i, until ) {
3163 return dir( elem, "previousSibling", until );
3164 },
3165 siblings: function( elem ) {
3166 return siblings( ( elem.parentNode || {} ).firstChild, elem );
3167 },
3168 children: function( elem ) {
3169 return siblings( elem.firstChild );
3170 },
3171 contents: function( elem ) {
3172 if ( typeof elem.contentDocument !== "undefined" ) {
3173 return elem.contentDocument;
3174 }
3175
3176 // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
3177 // Treat the template element as a regular one in browsers that
3178 // don't support it.
3179 if ( nodeName( elem, "template" ) ) {
3180 elem = elem.content || elem;
3181 }
3182
3183 return jQuery.merge( [], elem.childNodes );
3184 }
3185}, function( name, fn ) {
3186 jQuery.fn[ name ] = function( until, selector ) {
3187 var matched = jQuery.map( this, fn, until );
3188
3189 if ( name.slice( -5 ) !== "Until" ) {
3190 selector = until;
3191 }
3192
3193 if ( selector && typeof selector === "string" ) {
3194 matched = jQuery.filter( selector, matched );
3195 }
3196
3197 if ( this.length > 1 ) {
3198
3199 // Remove duplicates
3200 if ( !guaranteedUnique[ name ] ) {
3201 jQuery.uniqueSort( matched );
3202 }
3203
3204 // Reverse order for parents* and prev-derivatives
3205 if ( rparentsprev.test( name ) ) {
3206 matched.reverse();
3207 }
3208 }
3209
3210 return this.pushStack( matched );
3211 };
3212} );
3213var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g );
3214
3215
3216
3217// Convert String-formatted options into Object-formatted ones
3218function createOptions( options ) {
3219 var object = {};
3220 jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
3221 object[ flag ] = true;
3222 } );
3223 return object;
3224}
3225
3226/*
3227 * Create a callback list using the following parameters:
3228 *
3229 * options: an optional list of space-separated options that will change how
3230 * the callback list behaves or a more traditional option object
3231 *
3232 * By default a callback list will act like an event callback list and can be
3233 * "fired" multiple times.
3234 *
3235 * Possible options:
3236 *
3237 * once: will ensure the callback list can only be fired once (like a Deferred)
3238 *
3239 * memory: will keep track of previous values and will call any callback added
3240 * after the list has been fired right away with the latest "memorized"
3241 * values (like a Deferred)
3242 *
3243 * unique: will ensure a callback can only be added once (no duplicate in the list)
3244 *
3245 * stopOnFalse: interrupt callings when a callback returns false
3246 *
3247 */
3248jQuery.Callbacks = function( options ) {
3249
3250 // Convert options from String-formatted to Object-formatted if needed
3251 // (we check in cache first)
3252 options = typeof options === "string" ?
3253 createOptions( options ) :
3254 jQuery.extend( {}, options );
3255
3256 var // Flag to know if list is currently firing
3257 firing,
3258
3259 // Last fire value for non-forgettable lists
3260 memory,
3261
3262 // Flag to know if list was already fired
3263 fired,
3264
3265 // Flag to prevent firing
3266 locked,
3267
3268 // Actual callback list
3269 list = [],
3270
3271 // Queue of execution data for repeatable lists
3272 queue = [],
3273
3274 // Index of currently firing callback (modified by add/remove as needed)
3275 firingIndex = -1,
3276
3277 // Fire callbacks
3278 fire = function() {
3279
3280 // Enforce single-firing
3281 locked = locked || options.once;
3282
3283 // Execute callbacks for all pending executions,
3284 // respecting firingIndex overrides and runtime changes
3285 fired = firing = true;
3286 for ( ; queue.length; firingIndex = -1 ) {
3287 memory = queue.shift();
3288 while ( ++firingIndex < list.length ) {
3289
3290 // Run callback and check for early termination
3291 if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
3292 options.stopOnFalse ) {
3293
3294 // Jump to end and forget the data so .add doesn't re-fire
3295 firingIndex = list.length;
3296 memory = false;
3297 }
3298 }
3299 }
3300
3301 // Forget the data if we're done with it
3302 if ( !options.memory ) {
3303 memory = false;
3304 }
3305
3306 firing = false;
3307
3308 // Clean up if we're done firing for good
3309 if ( locked ) {
3310
3311 // Keep an empty list if we have data for future add calls
3312 if ( memory ) {
3313 list = [];
3314
3315 // Otherwise, this object is spent
3316 } else {
3317 list = "";
3318 }
3319 }
3320 },
3321
3322 // Actual Callbacks object
3323 self = {
3324
3325 // Add a callback or a collection of callbacks to the list
3326 add: function() {
3327 if ( list ) {
3328
3329 // If we have memory from a past run, we should fire after adding
3330 if ( memory && !firing ) {
3331 firingIndex = list.length - 1;
3332 queue.push( memory );
3333 }
3334
3335 ( function add( args ) {
3336 jQuery.each( args, function( _, arg ) {
3337 if ( isFunction( arg ) ) {
3338 if ( !options.unique || !self.has( arg ) ) {
3339 list.push( arg );
3340 }
3341 } else if ( arg && arg.length && toType( arg ) !== "string" ) {
3342
3343 // Inspect recursively
3344 add( arg );
3345 }
3346 } );
3347 } )( arguments );
3348
3349 if ( memory && !firing ) {
3350 fire();
3351 }
3352 }
3353 return this;
3354 },
3355
3356 // Remove a callback from the list
3357 remove: function() {
3358 jQuery.each( arguments, function( _, arg ) {
3359 var index;
3360 while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
3361 list.splice( index, 1 );
3362
3363 // Handle firing indexes
3364 if ( index <= firingIndex ) {
3365 firingIndex--;
3366 }
3367 }
3368 } );
3369 return this;
3370 },
3371
3372 // Check if a given callback is in the list.
3373 // If no argument is given, return whether or not list has callbacks attached.
3374 has: function( fn ) {
3375 return fn ?
3376 jQuery.inArray( fn, list ) > -1 :
3377 list.length > 0;
3378 },
3379
3380 // Remove all callbacks from the list
3381 empty: function() {
3382 if ( list ) {
3383 list = [];
3384 }
3385 return this;
3386 },
3387
3388 // Disable .fire and .add
3389 // Abort any current/pending executions
3390 // Clear all callbacks and values
3391 disable: function() {
3392 locked = queue = [];
3393 list = memory = "";
3394 return this;
3395 },
3396 disabled: function() {
3397 return !list;
3398 },
3399
3400 // Disable .fire
3401 // Also disable .add unless we have memory (since it would have no effect)
3402 // Abort any pending executions
3403 lock: function() {
3404 locked = queue = [];
3405 if ( !memory && !firing ) {
3406 list = memory = "";
3407 }
3408 return this;
3409 },
3410 locked: function() {
3411 return !!locked;
3412 },
3413
3414 // Call all callbacks with the given context and arguments
3415 fireWith: function( context, args ) {
3416 if ( !locked ) {
3417 args = args || [];
3418 args = [ context, args.slice ? args.slice() : args ];
3419 queue.push( args );
3420 if ( !firing ) {
3421 fire();
3422 }
3423 }
3424 return this;
3425 },
3426
3427 // Call all the callbacks with the given arguments
3428 fire: function() {
3429 self.fireWith( this, arguments );
3430 return this;
3431 },
3432
3433 // To know if the callbacks have already been called at least once
3434 fired: function() {
3435 return !!fired;
3436 }
3437 };
3438
3439 return self;
3440};
3441
3442
3443function Identity( v ) {
3444 return v;
3445}
3446function Thrower( ex ) {
3447 throw ex;
3448}
3449
3450function adoptValue( value, resolve, reject, noValue ) {
3451 var method;
3452
3453 try {
3454
3455 // Check for promise aspect first to privilege synchronous behavior
3456 if ( value && isFunction( ( method = value.promise ) ) ) {
3457 method.call( value ).done( resolve ).fail( reject );
3458
3459 // Other thenables
3460 } else if ( value && isFunction( ( method = value.then ) ) ) {
3461 method.call( value, resolve, reject );
3462
3463 // Other non-thenables
3464 } else {
3465
3466 // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:
3467 // * false: [ value ].slice( 0 ) => resolve( value )
3468 // * true: [ value ].slice( 1 ) => resolve()
3469 resolve.apply( undefined, [ value ].slice( noValue ) );
3470 }
3471
3472 // For Promises/A+, convert exceptions into rejections
3473 // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
3474 // Deferred#then to conditionally suppress rejection.
3475 } catch ( value ) {
3476
3477 // Support: Android 4.0 only
3478 // Strict mode functions invoked without .call/.apply get global-object context
3479 reject.apply( undefined, [ value ] );
3480 }
3481}
3482
3483jQuery.extend( {
3484
3485 Deferred: function( func ) {
3486 var tuples = [
3487
3488 // action, add listener, callbacks,
3489 // ... .then handlers, argument index, [final state]
3490 [ "notify", "progress", jQuery.Callbacks( "memory" ),
3491 jQuery.Callbacks( "memory" ), 2 ],
3492 [ "resolve", "done", jQuery.Callbacks( "once memory" ),
3493 jQuery.Callbacks( "once memory" ), 0, "resolved" ],
3494 [ "reject", "fail", jQuery.Callbacks( "once memory" ),
3495 jQuery.Callbacks( "once memory" ), 1, "rejected" ]
3496 ],
3497 state = "pending",
3498 promise = {
3499 state: function() {
3500 return state;
3501 },
3502 always: function() {
3503 deferred.done( arguments ).fail( arguments );
3504 return this;
3505 },
3506 "catch": function( fn ) {
3507 return promise.then( null, fn );
3508 },
3509
3510 // Keep pipe for back-compat
3511 pipe: function( /* fnDone, fnFail, fnProgress */ ) {
3512 var fns = arguments;
3513
3514 return jQuery.Deferred( function( newDefer ) {
3515 jQuery.each( tuples, function( i, tuple ) {
3516
3517 // Map tuples (progress, done, fail) to arguments (done, fail, progress)
3518 var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
3519
3520 // deferred.progress(function() { bind to newDefer or newDefer.notify })
3521 // deferred.done(function() { bind to newDefer or newDefer.resolve })
3522 // deferred.fail(function() { bind to newDefer or newDefer.reject })
3523 deferred[ tuple[ 1 ] ]( function() {
3524 var returned = fn && fn.apply( this, arguments );
3525 if ( returned && isFunction( returned.promise ) ) {
3526 returned.promise()
3527 .progress( newDefer.notify )
3528 .done( newDefer.resolve )
3529 .fail( newDefer.reject );
3530 } else {
3531 newDefer[ tuple[ 0 ] + "With" ](
3532 this,
3533 fn ? [ returned ] : arguments
3534 );
3535 }
3536 } );
3537 } );
3538 fns = null;
3539 } ).promise();
3540 },
3541 then: function( onFulfilled, onRejected, onProgress ) {
3542 var maxDepth = 0;
3543 function resolve( depth, deferred, handler, special ) {
3544 return function() {
3545 var that = this,
3546 args = arguments,
3547 mightThrow = function() {
3548 var returned, then;
3549
3550 // Support: Promises/A+ section 2.3.3.3.3
3551 // https://promisesaplus.com/#point-59
3552 // Ignore double-resolution attempts
3553 if ( depth < maxDepth ) {
3554 return;
3555 }
3556
3557 returned = handler.apply( that, args );
3558
3559 // Support: Promises/A+ section 2.3.1
3560 // https://promisesaplus.com/#point-48
3561 if ( returned === deferred.promise() ) {
3562 throw new TypeError( "Thenable self-resolution" );
3563 }
3564
3565 // Support: Promises/A+ sections 2.3.3.1, 3.5
3566 // https://promisesaplus.com/#point-54
3567 // https://promisesaplus.com/#point-75
3568 // Retrieve `then` only once
3569 then = returned &&
3570
3571 // Support: Promises/A+ section 2.3.4
3572 // https://promisesaplus.com/#point-64
3573 // Only check objects and functions for thenability
3574 ( typeof returned === "object" ||
3575 typeof returned === "function" ) &&
3576 returned.then;
3577
3578 // Handle a returned thenable
3579 if ( isFunction( then ) ) {
3580
3581 // Special processors (notify) just wait for resolution
3582 if ( special ) {
3583 then.call(
3584 returned,
3585 resolve( maxDepth, deferred, Identity, special ),
3586 resolve( maxDepth, deferred, Thrower, special )
3587 );
3588
3589 // Normal processors (resolve) also hook into progress
3590 } else {
3591
3592 // ...and disregard older resolution values
3593 maxDepth++;
3594
3595 then.call(
3596 returned,
3597 resolve( maxDepth, deferred, Identity, special ),
3598 resolve( maxDepth, deferred, Thrower, special ),
3599 resolve( maxDepth, deferred, Identity,
3600 deferred.notifyWith )
3601 );
3602 }
3603
3604 // Handle all other returned values
3605 } else {
3606
3607 // Only substitute handlers pass on context
3608 // and multiple values (non-spec behavior)
3609 if ( handler !== Identity ) {
3610 that = undefined;
3611 args = [ returned ];
3612 }
3613
3614 // Process the value(s)
3615 // Default process is resolve
3616 ( special || deferred.resolveWith )( that, args );
3617 }
3618 },
3619
3620 // Only normal processors (resolve) catch and reject exceptions
3621 process = special ?
3622 mightThrow :
3623 function() {
3624 try {
3625 mightThrow();
3626 } catch ( e ) {
3627
3628 if ( jQuery.Deferred.exceptionHook ) {
3629 jQuery.Deferred.exceptionHook( e,
3630 process.stackTrace );
3631 }
3632
3633 // Support: Promises/A+ section 2.3.3.3.4.1
3634 // https://promisesaplus.com/#point-61
3635 // Ignore post-resolution exceptions
3636 if ( depth + 1 >= maxDepth ) {
3637
3638 // Only substitute handlers pass on context
3639 // and multiple values (non-spec behavior)
3640 if ( handler !== Thrower ) {
3641 that = undefined;
3642 args = [ e ];
3643 }
3644
3645 deferred.rejectWith( that, args );
3646 }
3647 }
3648 };
3649
3650 // Support: Promises/A+ section 2.3.3.3.1
3651 // https://promisesaplus.com/#point-57
3652 // Re-resolve promises immediately to dodge false rejection from
3653 // subsequent errors
3654 if ( depth ) {
3655 process();
3656 } else {
3657
3658 // Call an optional hook to record the stack, in case of exception
3659 // since it's otherwise lost when execution goes async
3660 if ( jQuery.Deferred.getStackHook ) {
3661 process.stackTrace = jQuery.Deferred.getStackHook();
3662 }
3663 window.setTimeout( process );
3664 }
3665 };
3666 }
3667
3668 return jQuery.Deferred( function( newDefer ) {
3669
3670 // progress_handlers.add( ... )
3671 tuples[ 0 ][ 3 ].add(
3672 resolve(
3673 0,
3674 newDefer,
3675 isFunction( onProgress ) ?
3676 onProgress :
3677 Identity,
3678 newDefer.notifyWith
3679 )
3680 );
3681
3682 // fulfilled_handlers.add( ... )
3683 tuples[ 1 ][ 3 ].add(
3684 resolve(
3685 0,
3686 newDefer,
3687 isFunction( onFulfilled ) ?
3688 onFulfilled :
3689 Identity
3690 )
3691 );
3692
3693 // rejected_handlers.add( ... )
3694 tuples[ 2 ][ 3 ].add(
3695 resolve(
3696 0,
3697 newDefer,
3698 isFunction( onRejected ) ?
3699 onRejected :
3700 Thrower
3701 )
3702 );
3703 } ).promise();
3704 },
3705
3706 // Get a promise for this deferred
3707 // If obj is provided, the promise aspect is added to the object
3708 promise: function( obj ) {
3709 return obj != null ? jQuery.extend( obj, promise ) : promise;
3710 }
3711 },
3712 deferred = {};
3713
3714 // Add list-specific methods
3715 jQuery.each( tuples, function( i, tuple ) {
3716 var list = tuple[ 2 ],
3717 stateString = tuple[ 5 ];
3718
3719 // promise.progress = list.add
3720 // promise.done = list.add
3721 // promise.fail = list.add
3722 promise[ tuple[ 1 ] ] = list.add;
3723
3724 // Handle state
3725 if ( stateString ) {
3726 list.add(
3727 function() {
3728
3729 // state = "resolved" (i.e., fulfilled)
3730 // state = "rejected"
3731 state = stateString;
3732 },
3733
3734 // rejected_callbacks.disable
3735 // fulfilled_callbacks.disable
3736 tuples[ 3 - i ][ 2 ].disable,
3737
3738 // rejected_handlers.disable
3739 // fulfilled_handlers.disable
3740 tuples[ 3 - i ][ 3 ].disable,
3741
3742 // progress_callbacks.lock
3743 tuples[ 0 ][ 2 ].lock,
3744
3745 // progress_handlers.lock
3746 tuples[ 0 ][ 3 ].lock
3747 );
3748 }
3749
3750 // progress_handlers.fire
3751 // fulfilled_handlers.fire
3752 // rejected_handlers.fire
3753 list.add( tuple[ 3 ].fire );
3754
3755 // deferred.notify = function() { deferred.notifyWith(...) }
3756 // deferred.resolve = function() { deferred.resolveWith(...) }
3757 // deferred.reject = function() { deferred.rejectWith(...) }
3758 deferred[ tuple[ 0 ] ] = function() {
3759 deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
3760 return this;
3761 };
3762
3763 // deferred.notifyWith = list.fireWith
3764 // deferred.resolveWith = list.fireWith
3765 // deferred.rejectWith = list.fireWith
3766 deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
3767 } );
3768
3769 // Make the deferred a promise
3770 promise.promise( deferred );
3771
3772 // Call given func if any
3773 if ( func ) {
3774 func.call( deferred, deferred );
3775 }
3776
3777 // All done!
3778 return deferred;
3779 },
3780
3781 // Deferred helper
3782 when: function( singleValue ) {
3783 var
3784
3785 // count of uncompleted subordinates
3786 remaining = arguments.length,
3787
3788 // count of unprocessed arguments
3789 i = remaining,
3790
3791 // subordinate fulfillment data
3792 resolveContexts = Array( i ),
3793 resolveValues = slice.call( arguments ),
3794
3795 // the master Deferred
3796 master = jQuery.Deferred(),
3797
3798 // subordinate callback factory
3799 updateFunc = function( i ) {
3800 return function( value ) {
3801 resolveContexts[ i ] = this;
3802 resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
3803 if ( !( --remaining ) ) {
3804 master.resolveWith( resolveContexts, resolveValues );
3805 }
3806 };
3807 };
3808
3809 // Single- and empty arguments are adopted like Promise.resolve
3810 if ( remaining <= 1 ) {
3811 adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,
3812 !remaining );
3813
3814 // Use .then() to unwrap secondary thenables (cf. gh-3000)
3815 if ( master.state() === "pending" ||
3816 isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
3817
3818 return master.then();
3819 }
3820 }
3821
3822 // Multiple arguments are aggregated like Promise.all array elements
3823 while ( i-- ) {
3824 adoptValue( resolveValues[ i ], updateFunc( i ), master.reject );
3825 }
3826
3827 return master.promise();
3828 }
3829} );
3830
3831
3832// These usually indicate a programmer mistake during development,
3833// warn about them ASAP rather than swallowing them by default.
3834var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
3835
3836jQuery.Deferred.exceptionHook = function( error, stack ) {
3837
3838 // Support: IE 8 - 9 only
3839 // Console exists when dev tools are open, which can happen at any time
3840 if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
3841 window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
3842 }
3843};
3844
3845
3846
3847
3848jQuery.readyException = function( error ) {
3849 window.setTimeout( function() {
3850 throw error;
3851 } );
3852};
3853
3854
3855
3856
3857// The deferred used on DOM ready
3858var readyList = jQuery.Deferred();
3859
3860jQuery.fn.ready = function( fn ) {
3861
3862 readyList
3863 .then( fn )
3864
3865 // Wrap jQuery.readyException in a function so that the lookup
3866 // happens at the time of error handling instead of callback
3867 // registration.
3868 .catch( function( error ) {
3869 jQuery.readyException( error );
3870 } );
3871
3872 return this;
3873};
3874
3875jQuery.extend( {
3876
3877 // Is the DOM ready to be used? Set to true once it occurs.
3878 isReady: false,
3879
3880 // A counter to track how many items to wait for before
3881 // the ready event fires. See #6781
3882 readyWait: 1,
3883
3884 // Handle when the DOM is ready
3885 ready: function( wait ) {
3886
3887 // Abort if there are pending holds or we're already ready
3888 if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
3889 return;
3890 }
3891
3892 // Remember that the DOM is ready
3893 jQuery.isReady = true;
3894
3895 // If a normal DOM Ready event fired, decrement, and wait if need be
3896 if ( wait !== true && --jQuery.readyWait > 0 ) {
3897 return;
3898 }
3899
3900 // If there are functions bound, to execute
3901 readyList.resolveWith( document, [ jQuery ] );
3902 }
3903} );
3904
3905jQuery.ready.then = readyList.then;
3906
3907// The ready event handler and self cleanup method
3908function completed() {
3909 document.removeEventListener( "DOMContentLoaded", completed );
3910 window.removeEventListener( "load", completed );
3911 jQuery.ready();
3912}
3913
3914// Catch cases where $(document).ready() is called
3915// after the browser event has already occurred.
3916// Support: IE <=9 - 10 only
3917// Older IE sometimes signals "interactive" too soon
3918if ( document.readyState === "complete" ||
3919 ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
3920
3921 // Handle it asynchronously to allow scripts the opportunity to delay ready
3922 window.setTimeout( jQuery.ready );
3923
3924} else {
3925
3926 // Use the handy event callback
3927 document.addEventListener( "DOMContentLoaded", completed );
3928
3929 // A fallback to window.onload, that will always work
3930 window.addEventListener( "load", completed );
3931}
3932
3933
3934
3935
3936// Multifunctional method to get and set values of a collection
3937// The value/s can optionally be executed if it's a function
3938var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
3939 var i = 0,
3940 len = elems.length,
3941 bulk = key == null;
3942
3943 // Sets many values
3944 if ( toType( key ) === "object" ) {
3945 chainable = true;
3946 for ( i in key ) {
3947 access( elems, fn, i, key[ i ], true, emptyGet, raw );
3948 }
3949
3950 // Sets one value
3951 } else if ( value !== undefined ) {
3952 chainable = true;
3953
3954 if ( !isFunction( value ) ) {
3955 raw = true;
3956 }
3957
3958 if ( bulk ) {
3959
3960 // Bulk operations run against the entire set
3961 if ( raw ) {
3962 fn.call( elems, value );
3963 fn = null;
3964
3965 // ...except when executing function values
3966 } else {
3967 bulk = fn;
3968 fn = function( elem, key, value ) {
3969 return bulk.call( jQuery( elem ), value );
3970 };
3971 }
3972 }
3973
3974 if ( fn ) {
3975 for ( ; i < len; i++ ) {
3976 fn(
3977 elems[ i ], key, raw ?
3978 value :
3979 value.call( elems[ i ], i, fn( elems[ i ], key ) )
3980 );
3981 }
3982 }
3983 }
3984
3985 if ( chainable ) {
3986 return elems;
3987 }
3988
3989 // Gets
3990 if ( bulk ) {
3991 return fn.call( elems );
3992 }
3993
3994 return len ? fn( elems[ 0 ], key ) : emptyGet;
3995};
3996
3997
3998// Matches dashed string for camelizing
3999var rmsPrefix = /^-ms-/,
4000 rdashAlpha = /-([a-z])/g;
4001
4002// Used by camelCase as callback to replace()
4003function fcamelCase( all, letter ) {
4004 return letter.toUpperCase();
4005}
4006
4007// Convert dashed to camelCase; used by the css and data modules
4008// Support: IE <=9 - 11, Edge 12 - 15
4009// Microsoft forgot to hump their vendor prefix (#9572)
4010function camelCase( string ) {
4011 return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
4012}
4013var acceptData = function( owner ) {
4014
4015 // Accepts only:
4016 // - Node
4017 // - Node.ELEMENT_NODE
4018 // - Node.DOCUMENT_NODE
4019 // - Object
4020 // - Any
4021 return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
4022};
4023
4024
4025
4026
4027function Data() {
4028 this.expando = jQuery.expando + Data.uid++;
4029}
4030
4031Data.uid = 1;
4032
4033Data.prototype = {
4034
4035 cache: function( owner ) {
4036
4037 // Check if the owner object already has a cache
4038 var value = owner[ this.expando ];
4039
4040 // If not, create one
4041 if ( !value ) {
4042 value = {};
4043
4044 // We can accept data for non-element nodes in modern browsers,
4045 // but we should not, see #8335.
4046 // Always return an empty object.
4047 if ( acceptData( owner ) ) {
4048
4049 // If it is a node unlikely to be stringify-ed or looped over
4050 // use plain assignment
4051 if ( owner.nodeType ) {
4052 owner[ this.expando ] = value;
4053
4054 // Otherwise secure it in a non-enumerable property
4055 // configurable must be true to allow the property to be
4056 // deleted when data is removed
4057 } else {
4058 Object.defineProperty( owner, this.expando, {
4059 value: value,
4060 configurable: true
4061 } );
4062 }
4063 }
4064 }
4065
4066 return value;
4067 },
4068 set: function( owner, data, value ) {
4069 var prop,
4070 cache = this.cache( owner );
4071
4072 // Handle: [ owner, key, value ] args
4073 // Always use camelCase key (gh-2257)
4074 if ( typeof data === "string" ) {
4075 cache[ camelCase( data ) ] = value;
4076
4077 // Handle: [ owner, { properties } ] args
4078 } else {
4079
4080 // Copy the properties one-by-one to the cache object
4081 for ( prop in data ) {
4082 cache[ camelCase( prop ) ] = data[ prop ];
4083 }
4084 }
4085 return cache;
4086 },
4087 get: function( owner, key ) {
4088 return key === undefined ?
4089 this.cache( owner ) :
4090
4091 // Always use camelCase key (gh-2257)
4092 owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];
4093 },
4094 access: function( owner, key, value ) {
4095
4096 // In cases where either:
4097 //
4098 // 1. No key was specified
4099 // 2. A string key was specified, but no value provided
4100 //
4101 // Take the "read" path and allow the get method to determine
4102 // which value to return, respectively either:
4103 //
4104 // 1. The entire cache object
4105 // 2. The data stored at the key
4106 //
4107 if ( key === undefined ||
4108 ( ( key && typeof key === "string" ) && value === undefined ) ) {
4109
4110 return this.get( owner, key );
4111 }
4112
4113 // When the key is not a string, or both a key and value
4114 // are specified, set or extend (existing objects) with either:
4115 //
4116 // 1. An object of properties
4117 // 2. A key and value
4118 //
4119 this.set( owner, key, value );
4120
4121 // Since the "set" path can have two possible entry points
4122 // return the expected data based on which path was taken[*]
4123 return value !== undefined ? value : key;
4124 },
4125 remove: function( owner, key ) {
4126 var i,
4127 cache = owner[ this.expando ];
4128
4129 if ( cache === undefined ) {
4130 return;
4131 }
4132
4133 if ( key !== undefined ) {
4134
4135 // Support array or space separated string of keys
4136 if ( Array.isArray( key ) ) {
4137
4138 // If key is an array of keys...
4139 // We always set camelCase keys, so remove that.
4140 key = key.map( camelCase );
4141 } else {
4142 key = camelCase( key );
4143
4144 // If a key with the spaces exists, use it.
4145 // Otherwise, create an array by matching non-whitespace
4146 key = key in cache ?
4147 [ key ] :
4148 ( key.match( rnothtmlwhite ) || [] );
4149 }
4150
4151 i = key.length;
4152
4153 while ( i-- ) {
4154 delete cache[ key[ i ] ];
4155 }
4156 }
4157
4158 // Remove the expando if there's no more data
4159 if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
4160
4161 // Support: Chrome <=35 - 45
4162 // Webkit & Blink performance suffers when deleting properties
4163 // from DOM nodes, so set to undefined instead
4164 // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
4165 if ( owner.nodeType ) {
4166 owner[ this.expando ] = undefined;
4167 } else {
4168 delete owner[ this.expando ];
4169 }
4170 }
4171 },
4172 hasData: function( owner ) {
4173 var cache = owner[ this.expando ];
4174 return cache !== undefined && !jQuery.isEmptyObject( cache );
4175 }
4176};
4177var dataPriv = new Data();
4178
4179var dataUser = new Data();
4180
4181
4182
4183// Implementation Summary
4184//
4185// 1. Enforce API surface and semantic compatibility with 1.9.x branch
4186// 2. Improve the module's maintainability by reducing the storage
4187// paths to a single mechanism.
4188// 3. Use the same single mechanism to support "private" and "user" data.
4189// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
4190// 5. Avoid exposing implementation details on user objects (eg. expando properties)
4191// 6. Provide a clear path for implementation upgrade to WeakMap in 2014
4192
4193var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
4194 rmultiDash = /[A-Z]/g;
4195
4196function getData( data ) {
4197 if ( data === "true" ) {
4198 return true;
4199 }
4200
4201 if ( data === "false" ) {
4202 return false;
4203 }
4204
4205 if ( data === "null" ) {
4206 return null;
4207 }
4208
4209 // Only convert to a number if it doesn't change the string
4210 if ( data === +data + "" ) {
4211 return +data;
4212 }
4213
4214 if ( rbrace.test( data ) ) {
4215 return JSON.parse( data );
4216 }
4217
4218 return data;
4219}
4220
4221function dataAttr( elem, key, data ) {
4222 var name;
4223
4224 // If nothing was found internally, try to fetch any
4225 // data from the HTML5 data-* attribute
4226 if ( data === undefined && elem.nodeType === 1 ) {
4227 name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
4228 data = elem.getAttribute( name );
4229
4230 if ( typeof data === "string" ) {
4231 try {
4232 data = getData( data );
4233 } catch ( e ) {}
4234
4235 // Make sure we set the data so it isn't changed later
4236 dataUser.set( elem, key, data );
4237 } else {
4238 data = undefined;
4239 }
4240 }
4241 return data;
4242}
4243
4244jQuery.extend( {
4245 hasData: function( elem ) {
4246 return dataUser.hasData( elem ) || dataPriv.hasData( elem );
4247 },
4248
4249 data: function( elem, name, data ) {
4250 return dataUser.access( elem, name, data );
4251 },
4252
4253 removeData: function( elem, name ) {
4254 dataUser.remove( elem, name );
4255 },
4256
4257 // TODO: Now that all calls to _data and _removeData have been replaced
4258 // with direct calls to dataPriv methods, these can be deprecated.
4259 _data: function( elem, name, data ) {
4260 return dataPriv.access( elem, name, data );
4261 },
4262
4263 _removeData: function( elem, name ) {
4264 dataPriv.remove( elem, name );
4265 }
4266} );
4267
4268jQuery.fn.extend( {
4269 data: function( key, value ) {
4270 var i, name, data,
4271 elem = this[ 0 ],
4272 attrs = elem && elem.attributes;
4273
4274 // Gets all values
4275 if ( key === undefined ) {
4276 if ( this.length ) {
4277 data = dataUser.get( elem );
4278
4279 if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
4280 i = attrs.length;
4281 while ( i-- ) {
4282
4283 // Support: IE 11 only
4284 // The attrs elements can be null (#14894)
4285 if ( attrs[ i ] ) {
4286 name = attrs[ i ].name;
4287 if ( name.indexOf( "data-" ) === 0 ) {
4288 name = camelCase( name.slice( 5 ) );
4289 dataAttr( elem, name, data[ name ] );
4290 }
4291 }
4292 }
4293 dataPriv.set( elem, "hasDataAttrs", true );
4294 }
4295 }
4296
4297 return data;
4298 }
4299
4300 // Sets multiple values
4301 if ( typeof key === "object" ) {
4302 return this.each( function() {
4303 dataUser.set( this, key );
4304 } );
4305 }
4306
4307 return access( this, function( value ) {
4308 var data;
4309
4310 // The calling jQuery object (element matches) is not empty
4311 // (and therefore has an element appears at this[ 0 ]) and the
4312 // `value` parameter was not undefined. An empty jQuery object
4313 // will result in `undefined` for elem = this[ 0 ] which will
4314 // throw an exception if an attempt to read a data cache is made.
4315 if ( elem && value === undefined ) {
4316
4317 // Attempt to get data from the cache
4318 // The key will always be camelCased in Data
4319 data = dataUser.get( elem, key );
4320 if ( data !== undefined ) {
4321 return data;
4322 }
4323
4324 // Attempt to "discover" the data in
4325 // HTML5 custom data-* attrs
4326 data = dataAttr( elem, key );
4327 if ( data !== undefined ) {
4328 return data;
4329 }
4330
4331 // We tried really hard, but the data doesn't exist.
4332 return;
4333 }
4334
4335 // Set the data...
4336 this.each( function() {
4337
4338 // We always store the camelCased key
4339 dataUser.set( this, key, value );
4340 } );
4341 }, null, value, arguments.length > 1, null, true );
4342 },
4343
4344 removeData: function( key ) {
4345 return this.each( function() {
4346 dataUser.remove( this, key );
4347 } );
4348 }
4349} );
4350
4351
4352jQuery.extend( {
4353 queue: function( elem, type, data ) {
4354 var queue;
4355
4356 if ( elem ) {
4357 type = ( type || "fx" ) + "queue";
4358 queue = dataPriv.get( elem, type );
4359
4360 // Speed up dequeue by getting out quickly if this is just a lookup
4361 if ( data ) {
4362 if ( !queue || Array.isArray( data ) ) {
4363 queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
4364 } else {
4365 queue.push( data );
4366 }
4367 }
4368 return queue || [];
4369 }
4370 },
4371
4372 dequeue: function( elem, type ) {
4373 type = type || "fx";
4374
4375 var queue = jQuery.queue( elem, type ),
4376 startLength = queue.length,
4377 fn = queue.shift(),
4378 hooks = jQuery._queueHooks( elem, type ),
4379 next = function() {
4380 jQuery.dequeue( elem, type );
4381 };
4382
4383 // If the fx queue is dequeued, always remove the progress sentinel
4384 if ( fn === "inprogress" ) {
4385 fn = queue.shift();
4386 startLength--;
4387 }
4388
4389 if ( fn ) {
4390
4391 // Add a progress sentinel to prevent the fx queue from being
4392 // automatically dequeued
4393 if ( type === "fx" ) {
4394 queue.unshift( "inprogress" );
4395 }
4396
4397 // Clear up the last queue stop function
4398 delete hooks.stop;
4399 fn.call( elem, next, hooks );
4400 }
4401
4402 if ( !startLength && hooks ) {
4403 hooks.empty.fire();
4404 }
4405 },
4406
4407 // Not public - generate a queueHooks object, or return the current one
4408 _queueHooks: function( elem, type ) {
4409 var key = type + "queueHooks";
4410 return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
4411 empty: jQuery.Callbacks( "once memory" ).add( function() {
4412 dataPriv.remove( elem, [ type + "queue", key ] );
4413 } )
4414 } );
4415 }
4416} );
4417
4418jQuery.fn.extend( {
4419 queue: function( type, data ) {
4420 var setter = 2;
4421
4422 if ( typeof type !== "string" ) {
4423 data = type;
4424 type = "fx";
4425 setter--;
4426 }
4427
4428 if ( arguments.length < setter ) {
4429 return jQuery.queue( this[ 0 ], type );
4430 }
4431
4432 return data === undefined ?
4433 this :
4434 this.each( function() {
4435 var queue = jQuery.queue( this, type, data );
4436
4437 // Ensure a hooks for this queue
4438 jQuery._queueHooks( this, type );
4439
4440 if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
4441 jQuery.dequeue( this, type );
4442 }
4443 } );
4444 },
4445 dequeue: function( type ) {
4446 return this.each( function() {
4447 jQuery.dequeue( this, type );
4448 } );
4449 },
4450 clearQueue: function( type ) {
4451 return this.queue( type || "fx", [] );
4452 },
4453
4454 // Get a promise resolved when queues of a certain type
4455 // are emptied (fx is the type by default)
4456 promise: function( type, obj ) {
4457 var tmp,
4458 count = 1,
4459 defer = jQuery.Deferred(),
4460 elements = this,
4461 i = this.length,
4462 resolve = function() {
4463 if ( !( --count ) ) {
4464 defer.resolveWith( elements, [ elements ] );
4465 }
4466 };
4467
4468 if ( typeof type !== "string" ) {
4469 obj = type;
4470 type = undefined;
4471 }
4472 type = type || "fx";
4473
4474 while ( i-- ) {
4475 tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
4476 if ( tmp && tmp.empty ) {
4477 count++;
4478 tmp.empty.add( resolve );
4479 }
4480 }
4481 resolve();
4482 return defer.promise( obj );
4483 }
4484} );
4485var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
4486
4487var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
4488
4489
4490var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
4491
4492var documentElement = document.documentElement;
4493
4494
4495
4496 var isAttached = function( elem ) {
4497 return jQuery.contains( elem.ownerDocument, elem );
4498 },
4499 composed = { composed: true };
4500
4501 // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only
4502 // Check attachment across shadow DOM boundaries when possible (gh-3504)
4503 // Support: iOS 10.0-10.2 only
4504 // Early iOS 10 versions support `attachShadow` but not `getRootNode`,
4505 // leading to errors. We need to check for `getRootNode`.
4506 if ( documentElement.getRootNode ) {
4507 isAttached = function( elem ) {
4508 return jQuery.contains( elem.ownerDocument, elem ) ||
4509 elem.getRootNode( composed ) === elem.ownerDocument;
4510 };
4511 }
4512var isHiddenWithinTree = function( elem, el ) {
4513
4514 // isHiddenWithinTree might be called from jQuery#filter function;
4515 // in that case, element will be second argument
4516 elem = el || elem;
4517
4518 // Inline style trumps all
4519 return elem.style.display === "none" ||
4520 elem.style.display === "" &&
4521
4522 // Otherwise, check computed style
4523 // Support: Firefox <=43 - 45
4524 // Disconnected elements can have computed display: none, so first confirm that elem is
4525 // in the document.
4526 isAttached( elem ) &&
4527
4528 jQuery.css( elem, "display" ) === "none";
4529 };
4530
4531var swap = function( elem, options, callback, args ) {
4532 var ret, name,
4533 old = {};
4534
4535 // Remember the old values, and insert the new ones
4536 for ( name in options ) {
4537 old[ name ] = elem.style[ name ];
4538 elem.style[ name ] = options[ name ];
4539 }
4540
4541 ret = callback.apply( elem, args || [] );
4542
4543 // Revert the old values
4544 for ( name in options ) {
4545 elem.style[ name ] = old[ name ];
4546 }
4547
4548 return ret;
4549};
4550
4551
4552
4553
4554function adjustCSS( elem, prop, valueParts, tween ) {
4555 var adjusted, scale,
4556 maxIterations = 20,
4557 currentValue = tween ?
4558 function() {
4559 return tween.cur();
4560 } :
4561 function() {
4562 return jQuery.css( elem, prop, "" );
4563 },
4564 initial = currentValue(),
4565 unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
4566
4567 // Starting value computation is required for potential unit mismatches
4568 initialInUnit = elem.nodeType &&
4569 ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
4570 rcssNum.exec( jQuery.css( elem, prop ) );
4571
4572 if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
4573
4574 // Support: Firefox <=54
4575 // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)
4576 initial = initial / 2;
4577
4578 // Trust units reported by jQuery.css
4579 unit = unit || initialInUnit[ 3 ];
4580
4581 // Iteratively approximate from a nonzero starting point
4582 initialInUnit = +initial || 1;
4583
4584 while ( maxIterations-- ) {
4585
4586 // Evaluate and update our best guess (doubling guesses that zero out).
4587 // Finish if the scale equals or crosses 1 (making the old*new product non-positive).
4588 jQuery.style( elem, prop, initialInUnit + unit );
4589 if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {
4590 maxIterations = 0;
4591 }
4592 initialInUnit = initialInUnit / scale;
4593
4594 }
4595
4596 initialInUnit = initialInUnit * 2;
4597 jQuery.style( elem, prop, initialInUnit + unit );
4598
4599 // Make sure we update the tween properties later on
4600 valueParts = valueParts || [];
4601 }
4602
4603 if ( valueParts ) {
4604 initialInUnit = +initialInUnit || +initial || 0;
4605
4606 // Apply relative offset (+=/-=) if specified
4607 adjusted = valueParts[ 1 ] ?
4608 initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
4609 +valueParts[ 2 ];
4610 if ( tween ) {
4611 tween.unit = unit;
4612 tween.start = initialInUnit;
4613 tween.end = adjusted;
4614 }
4615 }
4616 return adjusted;
4617}
4618
4619
4620var defaultDisplayMap = {};
4621
4622function getDefaultDisplay( elem ) {
4623 var temp,
4624 doc = elem.ownerDocument,
4625 nodeName = elem.nodeName,
4626 display = defaultDisplayMap[ nodeName ];
4627
4628 if ( display ) {
4629 return display;
4630 }
4631
4632 temp = doc.body.appendChild( doc.createElement( nodeName ) );
4633 display = jQuery.css( temp, "display" );
4634
4635 temp.parentNode.removeChild( temp );
4636
4637 if ( display === "none" ) {
4638 display = "block";
4639 }
4640 defaultDisplayMap[ nodeName ] = display;
4641
4642 return display;
4643}
4644
4645function showHide( elements, show ) {
4646 var display, elem,
4647 values = [],
4648 index = 0,
4649 length = elements.length;
4650
4651 // Determine new display value for elements that need to change
4652 for ( ; index < length; index++ ) {
4653 elem = elements[ index ];
4654 if ( !elem.style ) {
4655 continue;
4656 }
4657
4658 display = elem.style.display;
4659 if ( show ) {
4660
4661 // Since we force visibility upon cascade-hidden elements, an immediate (and slow)
4662 // check is required in this first loop unless we have a nonempty display value (either
4663 // inline or about-to-be-restored)
4664 if ( display === "none" ) {
4665 values[ index ] = dataPriv.get( elem, "display" ) || null;
4666 if ( !values[ index ] ) {
4667 elem.style.display = "";
4668 }
4669 }
4670 if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
4671 values[ index ] = getDefaultDisplay( elem );
4672 }
4673 } else {
4674 if ( display !== "none" ) {
4675 values[ index ] = "none";
4676
4677 // Remember what we're overwriting
4678 dataPriv.set( elem, "display", display );
4679 }
4680 }
4681 }
4682
4683 // Set the display of the elements in a second loop to avoid constant reflow
4684 for ( index = 0; index < length; index++ ) {
4685 if ( values[ index ] != null ) {
4686 elements[ index ].style.display = values[ index ];
4687 }
4688 }
4689
4690 return elements;
4691}
4692
4693jQuery.fn.extend( {
4694 show: function() {
4695 return showHide( this, true );
4696 },
4697 hide: function() {
4698 return showHide( this );
4699 },
4700 toggle: function( state ) {
4701 if ( typeof state === "boolean" ) {
4702 return state ? this.show() : this.hide();
4703 }
4704
4705 return this.each( function() {
4706 if ( isHiddenWithinTree( this ) ) {
4707 jQuery( this ).show();
4708 } else {
4709 jQuery( this ).hide();
4710 }
4711 } );
4712 }
4713} );
4714var rcheckableType = ( /^(?:checkbox|radio)$/i );
4715
4716var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i );
4717
4718var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );
4719
4720
4721
4722// We have to close these tags to support XHTML (#13200)
4723var wrapMap = {
4724
4725 // Support: IE <=9 only
4726 option: [ 1, "<select multiple='multiple'>", "</select>" ],
4727
4728 // XHTML parsers do not magically insert elements in the
4729 // same way that tag soup parsers do. So we cannot shorten
4730 // this by omitting <tbody> or other required elements.
4731 thead: [ 1, "<table>", "</table>" ],
4732 col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
4733 tr: [ 2, "<table><tbody>", "</tbody></table>" ],
4734 td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
4735
4736 _default: [ 0, "", "" ]
4737};
4738
4739// Support: IE <=9 only
4740wrapMap.optgroup = wrapMap.option;
4741
4742wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
4743wrapMap.th = wrapMap.td;
4744
4745
4746function getAll( context, tag ) {
4747
4748 // Support: IE <=9 - 11 only
4749 // Use typeof to avoid zero-argument method invocation on host objects (#15151)
4750 var ret;
4751
4752 if ( typeof context.getElementsByTagName !== "undefined" ) {
4753 ret = context.getElementsByTagName( tag || "*" );
4754
4755 } else if ( typeof context.querySelectorAll !== "undefined" ) {
4756 ret = context.querySelectorAll( tag || "*" );
4757
4758 } else {
4759 ret = [];
4760 }
4761
4762 if ( tag === undefined || tag && nodeName( context, tag ) ) {
4763 return jQuery.merge( [ context ], ret );
4764 }
4765
4766 return ret;
4767}
4768
4769
4770// Mark scripts as having already been evaluated
4771function setGlobalEval( elems, refElements ) {
4772 var i = 0,
4773 l = elems.length;
4774
4775 for ( ; i < l; i++ ) {
4776 dataPriv.set(
4777 elems[ i ],
4778 "globalEval",
4779 !refElements || dataPriv.get( refElements[ i ], "globalEval" )
4780 );
4781 }
4782}
4783
4784
4785var rhtml = /<|&#?\w+;/;
4786
4787function buildFragment( elems, context, scripts, selection, ignored ) {
4788 var elem, tmp, tag, wrap, attached, j,
4789 fragment = context.createDocumentFragment(),
4790 nodes = [],
4791 i = 0,
4792 l = elems.length;
4793
4794 for ( ; i < l; i++ ) {
4795 elem = elems[ i ];
4796
4797 if ( elem || elem === 0 ) {
4798
4799 // Add nodes directly
4800 if ( toType( elem ) === "object" ) {
4801
4802 // Support: Android <=4.0 only, PhantomJS 1 only
4803 // push.apply(_, arraylike) throws on ancient WebKit
4804 jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
4805
4806 // Convert non-html into a text node
4807 } else if ( !rhtml.test( elem ) ) {
4808 nodes.push( context.createTextNode( elem ) );
4809
4810 // Convert html into DOM nodes
4811 } else {
4812 tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
4813
4814 // Deserialize a standard representation
4815 tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
4816 wrap = wrapMap[ tag ] || wrapMap._default;
4817 tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
4818
4819 // Descend through wrappers to the right content
4820 j = wrap[ 0 ];
4821 while ( j-- ) {
4822 tmp = tmp.lastChild;
4823 }
4824
4825 // Support: Android <=4.0 only, PhantomJS 1 only
4826 // push.apply(_, arraylike) throws on ancient WebKit
4827 jQuery.merge( nodes, tmp.childNodes );
4828
4829 // Remember the top-level container
4830 tmp = fragment.firstChild;
4831
4832 // Ensure the created nodes are orphaned (#12392)
4833 tmp.textContent = "";
4834 }
4835 }
4836 }
4837
4838 // Remove wrapper from fragment
4839 fragment.textContent = "";
4840
4841 i = 0;
4842 while ( ( elem = nodes[ i++ ] ) ) {
4843
4844 // Skip elements already in the context collection (trac-4087)
4845 if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
4846 if ( ignored ) {
4847 ignored.push( elem );
4848 }
4849 continue;
4850 }
4851
4852 attached = isAttached( elem );
4853
4854 // Append to fragment
4855 tmp = getAll( fragment.appendChild( elem ), "script" );
4856
4857 // Preserve script evaluation history
4858 if ( attached ) {
4859 setGlobalEval( tmp );
4860 }
4861
4862 // Capture executables
4863 if ( scripts ) {
4864 j = 0;
4865 while ( ( elem = tmp[ j++ ] ) ) {
4866 if ( rscriptType.test( elem.type || "" ) ) {
4867 scripts.push( elem );
4868 }
4869 }
4870 }
4871 }
4872
4873 return fragment;
4874}
4875
4876
4877( function() {
4878 var fragment = document.createDocumentFragment(),
4879 div = fragment.appendChild( document.createElement( "div" ) ),
4880 input = document.createElement( "input" );
4881
4882 // Support: Android 4.0 - 4.3 only
4883 // Check state lost if the name is set (#11217)
4884 // Support: Windows Web Apps (WWA)
4885 // `name` and `type` must use .setAttribute for WWA (#14901)
4886 input.setAttribute( "type", "radio" );
4887 input.setAttribute( "checked", "checked" );
4888 input.setAttribute( "name", "t" );
4889
4890 div.appendChild( input );
4891
4892 // Support: Android <=4.1 only
4893 // Older WebKit doesn't clone checked state correctly in fragments
4894 support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
4895
4896 // Support: IE <=11 only
4897 // Make sure textarea (and checkbox) defaultValue is properly cloned
4898 div.innerHTML = "<textarea>x</textarea>";
4899 support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
4900} )();
4901
4902
4903var
4904 rkeyEvent = /^key/,
4905 rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
4906 rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
4907
4908function returnTrue() {
4909 return true;
4910}
4911
4912function returnFalse() {
4913 return false;
4914}
4915
4916// Support: IE <=9 - 11+
4917// focus() and blur() are asynchronous, except when they are no-op.
4918// So expect focus to be synchronous when the element is already active,
4919// and blur to be synchronous when the element is not already active.
4920// (focus and blur are always synchronous in other supported browsers,
4921// this just defines when we can count on it).
4922function expectSync( elem, type ) {
4923 return ( elem === safeActiveElement() ) === ( type === "focus" );
4924}
4925
4926// Support: IE <=9 only
4927// Accessing document.activeElement can throw unexpectedly
4928// https://bugs.jquery.com/ticket/13393
4929function safeActiveElement() {
4930 try {
4931 return document.activeElement;
4932 } catch ( err ) { }
4933}
4934
4935function on( elem, types, selector, data, fn, one ) {
4936 var origFn, type;
4937
4938 // Types can be a map of types/handlers
4939 if ( typeof types === "object" ) {
4940
4941 // ( types-Object, selector, data )
4942 if ( typeof selector !== "string" ) {
4943
4944 // ( types-Object, data )
4945 data = data || selector;
4946 selector = undefined;
4947 }
4948 for ( type in types ) {
4949 on( elem, type, selector, data, types[ type ], one );
4950 }
4951 return elem;
4952 }
4953
4954 if ( data == null && fn == null ) {
4955
4956 // ( types, fn )
4957 fn = selector;
4958 data = selector = undefined;
4959 } else if ( fn == null ) {
4960 if ( typeof selector === "string" ) {
4961
4962 // ( types, selector, fn )
4963 fn = data;
4964 data = undefined;
4965 } else {
4966
4967 // ( types, data, fn )
4968 fn = data;
4969 data = selector;
4970 selector = undefined;
4971 }
4972 }
4973 if ( fn === false ) {
4974 fn = returnFalse;
4975 } else if ( !fn ) {
4976 return elem;
4977 }
4978
4979 if ( one === 1 ) {
4980 origFn = fn;
4981 fn = function( event ) {
4982
4983 // Can use an empty set, since event contains the info
4984 jQuery().off( event );
4985 return origFn.apply( this, arguments );
4986 };
4987
4988 // Use same guid so caller can remove using origFn
4989 fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
4990 }
4991 return elem.each( function() {
4992 jQuery.event.add( this, types, fn, data, selector );
4993 } );
4994}
4995
4996/*
4997 * Helper functions for managing events -- not part of the public interface.
4998 * Props to Dean Edwards' addEvent library for many of the ideas.
4999 */
5000jQuery.event = {
5001
5002 global: {},
5003
5004 add: function( elem, types, handler, data, selector ) {
5005
5006 var handleObjIn, eventHandle, tmp,
5007 events, t, handleObj,
5008 special, handlers, type, namespaces, origType,
5009 elemData = dataPriv.get( elem );
5010
5011 // Don't attach events to noData or text/comment nodes (but allow plain objects)
5012 if ( !elemData ) {
5013 return;
5014 }
5015
5016 // Caller can pass in an object of custom data in lieu of the handler
5017 if ( handler.handler ) {
5018 handleObjIn = handler;
5019 handler = handleObjIn.handler;
5020 selector = handleObjIn.selector;
5021 }
5022
5023 // Ensure that invalid selectors throw exceptions at attach time
5024 // Evaluate against documentElement in case elem is a non-element node (e.g., document)
5025 if ( selector ) {
5026 jQuery.find.matchesSelector( documentElement, selector );
5027 }
5028
5029 // Make sure that the handler has a unique ID, used to find/remove it later
5030 if ( !handler.guid ) {
5031 handler.guid = jQuery.guid++;
5032 }
5033
5034 // Init the element's event structure and main handler, if this is the first
5035 if ( !( events = elemData.events ) ) {
5036 events = elemData.events = {};
5037 }
5038 if ( !( eventHandle = elemData.handle ) ) {
5039 eventHandle = elemData.handle = function( e ) {
5040
5041 // Discard the second event of a jQuery.event.trigger() and
5042 // when an event is called after a page has unloaded
5043 return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
5044 jQuery.event.dispatch.apply( elem, arguments ) : undefined;
5045 };
5046 }
5047
5048 // Handle multiple events separated by a space
5049 types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
5050 t = types.length;
5051 while ( t-- ) {
5052 tmp = rtypenamespace.exec( types[ t ] ) || [];
5053 type = origType = tmp[ 1 ];
5054 namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
5055
5056 // There *must* be a type, no attaching namespace-only handlers
5057 if ( !type ) {
5058 continue;
5059 }
5060
5061 // If event changes its type, use the special event handlers for the changed type
5062 special = jQuery.event.special[ type ] || {};
5063
5064 // If selector defined, determine special event api type, otherwise given type
5065 type = ( selector ? special.delegateType : special.bindType ) || type;
5066
5067 // Update special based on newly reset type
5068 special = jQuery.event.special[ type ] || {};
5069
5070 // handleObj is passed to all event handlers
5071 handleObj = jQuery.extend( {
5072 type: type,
5073 origType: origType,
5074 data: data,
5075 handler: handler,
5076 guid: handler.guid,
5077 selector: selector,
5078 needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
5079 namespace: namespaces.join( "." )
5080 }, handleObjIn );
5081
5082 // Init the event handler queue if we're the first
5083 if ( !( handlers = events[ type ] ) ) {
5084 handlers = events[ type ] = [];
5085 handlers.delegateCount = 0;
5086
5087 // Only use addEventListener if the special events handler returns false
5088 if ( !special.setup ||
5089 special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
5090
5091 if ( elem.addEventListener ) {
5092 elem.addEventListener( type, eventHandle );
5093 }
5094 }
5095 }
5096
5097 if ( special.add ) {
5098 special.add.call( elem, handleObj );
5099
5100 if ( !handleObj.handler.guid ) {
5101 handleObj.handler.guid = handler.guid;
5102 }
5103 }
5104
5105 // Add to the element's handler list, delegates in front
5106 if ( selector ) {
5107 handlers.splice( handlers.delegateCount++, 0, handleObj );
5108 } else {
5109 handlers.push( handleObj );
5110 }
5111
5112 // Keep track of which events have ever been used, for event optimization
5113 jQuery.event.global[ type ] = true;
5114 }
5115
5116 },
5117
5118 // Detach an event or set of events from an element
5119 remove: function( elem, types, handler, selector, mappedTypes ) {
5120
5121 var j, origCount, tmp,
5122 events, t, handleObj,
5123 special, handlers, type, namespaces, origType,
5124 elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
5125
5126 if ( !elemData || !( events = elemData.events ) ) {
5127 return;
5128 }
5129
5130 // Once for each type.namespace in types; type may be omitted
5131 types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
5132 t = types.length;
5133 while ( t-- ) {
5134 tmp = rtypenamespace.exec( types[ t ] ) || [];
5135 type = origType = tmp[ 1 ];
5136 namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
5137
5138 // Unbind all events (on this namespace, if provided) for the element
5139 if ( !type ) {
5140 for ( type in events ) {
5141 jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
5142 }
5143 continue;
5144 }
5145
5146 special = jQuery.event.special[ type ] || {};
5147 type = ( selector ? special.delegateType : special.bindType ) || type;
5148 handlers = events[ type ] || [];
5149 tmp = tmp[ 2 ] &&
5150 new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
5151
5152 // Remove matching events
5153 origCount = j = handlers.length;
5154 while ( j-- ) {
5155 handleObj = handlers[ j ];
5156
5157 if ( ( mappedTypes || origType === handleObj.origType ) &&
5158 ( !handler || handler.guid === handleObj.guid ) &&
5159 ( !tmp || tmp.test( handleObj.namespace ) ) &&
5160 ( !selector || selector === handleObj.selector ||
5161 selector === "**" && handleObj.selector ) ) {
5162 handlers.splice( j, 1 );
5163
5164 if ( handleObj.selector ) {
5165 handlers.delegateCount--;
5166 }
5167 if ( special.remove ) {
5168 special.remove.call( elem, handleObj );
5169 }
5170 }
5171 }
5172
5173 // Remove generic event handler if we removed something and no more handlers exist
5174 // (avoids potential for endless recursion during removal of special event handlers)
5175 if ( origCount && !handlers.length ) {
5176 if ( !special.teardown ||
5177 special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
5178
5179 jQuery.removeEvent( elem, type, elemData.handle );
5180 }
5181
5182 delete events[ type ];
5183 }
5184 }
5185
5186 // Remove data and the expando if it's no longer used
5187 if ( jQuery.isEmptyObject( events ) ) {
5188 dataPriv.remove( elem, "handle events" );
5189 }
5190 },
5191
5192 dispatch: function( nativeEvent ) {
5193
5194 // Make a writable jQuery.Event from the native event object
5195 var event = jQuery.event.fix( nativeEvent );
5196
5197 var i, j, ret, matched, handleObj, handlerQueue,
5198 args = new Array( arguments.length ),
5199 handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],
5200 special = jQuery.event.special[ event.type ] || {};
5201
5202 // Use the fix-ed jQuery.Event rather than the (read-only) native event
5203 args[ 0 ] = event;
5204
5205 for ( i = 1; i < arguments.length; i++ ) {
5206 args[ i ] = arguments[ i ];
5207 }
5208
5209 event.delegateTarget = this;
5210
5211 // Call the preDispatch hook for the mapped type, and let it bail if desired
5212 if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
5213 return;
5214 }
5215
5216 // Determine handlers
5217 handlerQueue = jQuery.event.handlers.call( this, event, handlers );
5218
5219 // Run delegates first; they may want to stop propagation beneath us
5220 i = 0;
5221 while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
5222 event.currentTarget = matched.elem;
5223
5224 j = 0;
5225 while ( ( handleObj = matched.handlers[ j++ ] ) &&
5226 !event.isImmediatePropagationStopped() ) {
5227
5228 // If the event is namespaced, then each handler is only invoked if it is
5229 // specially universal or its namespaces are a superset of the event's.
5230 if ( !event.rnamespace || handleObj.namespace === false ||
5231 event.rnamespace.test( handleObj.namespace ) ) {
5232
5233 event.handleObj = handleObj;
5234 event.data = handleObj.data;
5235
5236 ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
5237 handleObj.handler ).apply( matched.elem, args );
5238
5239 if ( ret !== undefined ) {
5240 if ( ( event.result = ret ) === false ) {
5241 event.preventDefault();
5242 event.stopPropagation();
5243 }
5244 }
5245 }
5246 }
5247 }
5248
5249 // Call the postDispatch hook for the mapped type
5250 if ( special.postDispatch ) {
5251 special.postDispatch.call( this, event );
5252 }
5253
5254 return event.result;
5255 },
5256
5257 handlers: function( event, handlers ) {
5258 var i, handleObj, sel, matchedHandlers, matchedSelectors,
5259 handlerQueue = [],
5260 delegateCount = handlers.delegateCount,
5261 cur = event.target;
5262
5263 // Find delegate handlers
5264 if ( delegateCount &&
5265
5266 // Support: IE <=9
5267 // Black-hole SVG <use> instance trees (trac-13180)
5268 cur.nodeType &&
5269
5270 // Support: Firefox <=42
5271 // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
5272 // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
5273 // Support: IE 11 only
5274 // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
5275 !( event.type === "click" && event.button >= 1 ) ) {
5276
5277 for ( ; cur !== this; cur = cur.parentNode || this ) {
5278
5279 // Don't check non-elements (#13208)
5280 // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
5281 if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
5282 matchedHandlers = [];
5283 matchedSelectors = {};
5284 for ( i = 0; i < delegateCount; i++ ) {
5285 handleObj = handlers[ i ];
5286
5287 // Don't conflict with Object.prototype properties (#13203)
5288 sel = handleObj.selector + " ";
5289
5290 if ( matchedSelectors[ sel ] === undefined ) {
5291 matchedSelectors[ sel ] = handleObj.needsContext ?
5292 jQuery( sel, this ).index( cur ) > -1 :
5293 jQuery.find( sel, this, null, [ cur ] ).length;
5294 }
5295 if ( matchedSelectors[ sel ] ) {
5296 matchedHandlers.push( handleObj );
5297 }
5298 }
5299 if ( matchedHandlers.length ) {
5300 handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
5301 }
5302 }
5303 }
5304 }
5305
5306 // Add the remaining (directly-bound) handlers
5307 cur = this;
5308 if ( delegateCount < handlers.length ) {
5309 handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
5310 }
5311
5312 return handlerQueue;
5313 },
5314
5315 addProp: function( name, hook ) {
5316 Object.defineProperty( jQuery.Event.prototype, name, {
5317 enumerable: true,
5318 configurable: true,
5319
5320 get: isFunction( hook ) ?
5321 function() {
5322 if ( this.originalEvent ) {
5323 return hook( this.originalEvent );
5324 }
5325 } :
5326 function() {
5327 if ( this.originalEvent ) {
5328 return this.originalEvent[ name ];
5329 }
5330 },
5331
5332 set: function( value ) {
5333 Object.defineProperty( this, name, {
5334 enumerable: true,
5335 configurable: true,
5336 writable: true,
5337 value: value
5338 } );
5339 }
5340 } );
5341 },
5342
5343 fix: function( originalEvent ) {
5344 return originalEvent[ jQuery.expando ] ?
5345 originalEvent :
5346 new jQuery.Event( originalEvent );
5347 },
5348
5349 special: {
5350 load: {
5351
5352 // Prevent triggered image.load events from bubbling to window.load
5353 noBubble: true
5354 },
5355 click: {
5356
5357 // Utilize native event to ensure correct state for checkable inputs
5358 setup: function( data ) {
5359
5360 // For mutual compressibility with _default, replace `this` access with a local var.
5361 // `|| data` is dead code meant only to preserve the variable through minification.
5362 var el = this || data;
5363
5364 // Claim the first handler
5365 if ( rcheckableType.test( el.type ) &&
5366 el.click && nodeName( el, "input" ) ) {
5367
5368 // dataPriv.set( el, "click", ... )
5369 leverageNative( el, "click", returnTrue );
5370 }
5371
5372 // Return false to allow normal processing in the caller
5373 return false;
5374 },
5375 trigger: function( data ) {
5376
5377 // For mutual compressibility with _default, replace `this` access with a local var.
5378 // `|| data` is dead code meant only to preserve the variable through minification.
5379 var el = this || data;
5380
5381 // Force setup before triggering a click
5382 if ( rcheckableType.test( el.type ) &&
5383 el.click && nodeName( el, "input" ) ) {
5384
5385 leverageNative( el, "click" );
5386 }
5387
5388 // Return non-false to allow normal event-path propagation
5389 return true;
5390 },
5391
5392 // For cross-browser consistency, suppress native .click() on links
5393 // Also prevent it if we're currently inside a leveraged native-event stack
5394 _default: function( event ) {
5395 var target = event.target;
5396 return rcheckableType.test( target.type ) &&
5397 target.click && nodeName( target, "input" ) &&
5398 dataPriv.get( target, "click" ) ||
5399 nodeName( target, "a" );
5400 }
5401 },
5402
5403 beforeunload: {
5404 postDispatch: function( event ) {
5405
5406 // Support: Firefox 20+
5407 // Firefox doesn't alert if the returnValue field is not set.
5408 if ( event.result !== undefined && event.originalEvent ) {
5409 event.originalEvent.returnValue = event.result;
5410 }
5411 }
5412 }
5413 }
5414};
5415
5416// Ensure the presence of an event listener that handles manually-triggered
5417// synthetic events by interrupting progress until reinvoked in response to
5418// *native* events that it fires directly, ensuring that state changes have
5419// already occurred before other listeners are invoked.
5420function leverageNative( el, type, expectSync ) {
5421
5422 // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add
5423 if ( !expectSync ) {
5424 if ( dataPriv.get( el, type ) === undefined ) {
5425 jQuery.event.add( el, type, returnTrue );
5426 }
5427 return;
5428 }
5429
5430 // Register the controller as a special universal handler for all event namespaces
5431 dataPriv.set( el, type, false );
5432 jQuery.event.add( el, type, {
5433 namespace: false,
5434 handler: function( event ) {
5435 var notAsync, result,
5436 saved = dataPriv.get( this, type );
5437
5438 if ( ( event.isTrigger & 1 ) && this[ type ] ) {
5439
5440 // Interrupt processing of the outer synthetic .trigger()ed event
5441 // Saved data should be false in such cases, but might be a leftover capture object
5442 // from an async native handler (gh-4350)
5443 if ( !saved.length ) {
5444
5445 // Store arguments for use when handling the inner native event
5446 // There will always be at least one argument (an event object), so this array
5447 // will not be confused with a leftover capture object.
5448 saved = slice.call( arguments );
5449 dataPriv.set( this, type, saved );
5450
5451 // Trigger the native event and capture its result
5452 // Support: IE <=9 - 11+
5453 // focus() and blur() are asynchronous
5454 notAsync = expectSync( this, type );
5455 this[ type ]();
5456 result = dataPriv.get( this, type );
5457 if ( saved !== result || notAsync ) {
5458 dataPriv.set( this, type, false );
5459 } else {
5460 result = {};
5461 }
5462 if ( saved !== result ) {
5463
5464 // Cancel the outer synthetic event
5465 event.stopImmediatePropagation();
5466 event.preventDefault();
5467 return result.value;
5468 }
5469
5470 // If this is an inner synthetic event for an event with a bubbling surrogate
5471 // (focus or blur), assume that the surrogate already propagated from triggering the
5472 // native event and prevent that from happening again here.
5473 // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the
5474 // bubbling surrogate propagates *after* the non-bubbling base), but that seems
5475 // less bad than duplication.
5476 } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {
5477 event.stopPropagation();
5478 }
5479
5480 // If this is a native event triggered above, everything is now in order
5481 // Fire an inner synthetic event with the original arguments
5482 } else if ( saved.length ) {
5483
5484 // ...and capture the result
5485 dataPriv.set( this, type, {
5486 value: jQuery.event.trigger(
5487
5488 // Support: IE <=9 - 11+
5489 // Extend with the prototype to reset the above stopImmediatePropagation()
5490 jQuery.extend( saved[ 0 ], jQuery.Event.prototype ),
5491 saved.slice( 1 ),
5492 this
5493 )
5494 } );
5495
5496 // Abort handling of the native event
5497 event.stopImmediatePropagation();
5498 }
5499 }
5500 } );
5501}
5502
5503jQuery.removeEvent = function( elem, type, handle ) {
5504
5505 // This "if" is needed for plain objects
5506 if ( elem.removeEventListener ) {
5507 elem.removeEventListener( type, handle );
5508 }
5509};
5510
5511jQuery.Event = function( src, props ) {
5512
5513 // Allow instantiation without the 'new' keyword
5514 if ( !( this instanceof jQuery.Event ) ) {
5515 return new jQuery.Event( src, props );
5516 }
5517
5518 // Event object
5519 if ( src && src.type ) {
5520 this.originalEvent = src;
5521 this.type = src.type;
5522
5523 // Events bubbling up the document may have been marked as prevented
5524 // by a handler lower down the tree; reflect the correct value.
5525 this.isDefaultPrevented = src.defaultPrevented ||
5526 src.defaultPrevented === undefined &&
5527
5528 // Support: Android <=2.3 only
5529 src.returnValue === false ?
5530 returnTrue :
5531 returnFalse;
5532
5533 // Create target properties
5534 // Support: Safari <=6 - 7 only
5535 // Target should not be a text node (#504, #13143)
5536 this.target = ( src.target && src.target.nodeType === 3 ) ?
5537 src.target.parentNode :
5538 src.target;
5539
5540 this.currentTarget = src.currentTarget;
5541 this.relatedTarget = src.relatedTarget;
5542
5543 // Event type
5544 } else {
5545 this.type = src;
5546 }
5547
5548 // Put explicitly provided properties onto the event object
5549 if ( props ) {
5550 jQuery.extend( this, props );
5551 }
5552
5553 // Create a timestamp if incoming event doesn't have one
5554 this.timeStamp = src && src.timeStamp || Date.now();
5555
5556 // Mark it as fixed
5557 this[ jQuery.expando ] = true;
5558};
5559
5560// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
5561// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
5562jQuery.Event.prototype = {
5563 constructor: jQuery.Event,
5564 isDefaultPrevented: returnFalse,
5565 isPropagationStopped: returnFalse,
5566 isImmediatePropagationStopped: returnFalse,
5567 isSimulated: false,
5568
5569 preventDefault: function() {
5570 var e = this.originalEvent;
5571
5572 this.isDefaultPrevented = returnTrue;
5573
5574 if ( e && !this.isSimulated ) {
5575 e.preventDefault();
5576 }
5577 },
5578 stopPropagation: function() {
5579 var e = this.originalEvent;
5580
5581 this.isPropagationStopped = returnTrue;
5582
5583 if ( e && !this.isSimulated ) {
5584 e.stopPropagation();
5585 }
5586 },
5587 stopImmediatePropagation: function() {
5588 var e = this.originalEvent;
5589
5590 this.isImmediatePropagationStopped = returnTrue;
5591
5592 if ( e && !this.isSimulated ) {
5593 e.stopImmediatePropagation();
5594 }
5595
5596 this.stopPropagation();
5597 }
5598};
5599
5600// Includes all common event props including KeyEvent and MouseEvent specific props
5601jQuery.each( {
5602 altKey: true,
5603 bubbles: true,
5604 cancelable: true,
5605 changedTouches: true,
5606 ctrlKey: true,
5607 detail: true,
5608 eventPhase: true,
5609 metaKey: true,
5610 pageX: true,
5611 pageY: true,
5612 shiftKey: true,
5613 view: true,
5614 "char": true,
5615 code: true,
5616 charCode: true,
5617 key: true,
5618 keyCode: true,
5619 button: true,
5620 buttons: true,
5621 clientX: true,
5622 clientY: true,
5623 offsetX: true,
5624 offsetY: true,
5625 pointerId: true,
5626 pointerType: true,
5627 screenX: true,
5628 screenY: true,
5629 targetTouches: true,
5630 toElement: true,
5631 touches: true,
5632
5633 which: function( event ) {
5634 var button = event.button;
5635
5636 // Add which for key events
5637 if ( event.which == null && rkeyEvent.test( event.type ) ) {
5638 return event.charCode != null ? event.charCode : event.keyCode;
5639 }
5640
5641 // Add which for click: 1 === left; 2 === middle; 3 === right
5642 if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {
5643 if ( button & 1 ) {
5644 return 1;
5645 }
5646
5647 if ( button & 2 ) {
5648 return 3;
5649 }
5650
5651 if ( button & 4 ) {
5652 return 2;
5653 }
5654
5655 return 0;
5656 }
5657
5658 return event.which;
5659 }
5660}, jQuery.event.addProp );
5661
5662jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) {
5663 jQuery.event.special[ type ] = {
5664
5665 // Utilize native event if possible so blur/focus sequence is correct
5666 setup: function() {
5667
5668 // Claim the first handler
5669 // dataPriv.set( this, "focus", ... )
5670 // dataPriv.set( this, "blur", ... )
5671 leverageNative( this, type, expectSync );
5672
5673 // Return false to allow normal processing in the caller
5674 return false;
5675 },
5676 trigger: function() {
5677
5678 // Force setup before trigger
5679 leverageNative( this, type );
5680
5681 // Return non-false to allow normal event-path propagation
5682 return true;
5683 },
5684
5685 delegateType: delegateType
5686 };
5687} );
5688
5689// Create mouseenter/leave events using mouseover/out and event-time checks
5690// so that event delegation works in jQuery.
5691// Do the same for pointerenter/pointerleave and pointerover/pointerout
5692//
5693// Support: Safari 7 only
5694// Safari sends mouseenter too often; see:
5695// https://bugs.chromium.org/p/chromium/issues/detail?id=470258
5696// for the description of the bug (it existed in older Chrome versions as well).
5697jQuery.each( {
5698 mouseenter: "mouseover",
5699 mouseleave: "mouseout",
5700 pointerenter: "pointerover",
5701 pointerleave: "pointerout"
5702}, function( orig, fix ) {
5703 jQuery.event.special[ orig ] = {
5704 delegateType: fix,
5705 bindType: fix,
5706
5707 handle: function( event ) {
5708 var ret,
5709 target = this,
5710 related = event.relatedTarget,
5711 handleObj = event.handleObj;
5712
5713 // For mouseenter/leave call the handler if related is outside the target.
5714 // NB: No relatedTarget if the mouse left/entered the browser window
5715 if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
5716 event.type = handleObj.origType;
5717 ret = handleObj.handler.apply( this, arguments );
5718 event.type = fix;
5719 }
5720 return ret;
5721 }
5722 };
5723} );
5724
5725jQuery.fn.extend( {
5726
5727 on: function( types, selector, data, fn ) {
5728 return on( this, types, selector, data, fn );
5729 },
5730 one: function( types, selector, data, fn ) {
5731 return on( this, types, selector, data, fn, 1 );
5732 },
5733 off: function( types, selector, fn ) {
5734 var handleObj, type;
5735 if ( types && types.preventDefault && types.handleObj ) {
5736
5737 // ( event ) dispatched jQuery.Event
5738 handleObj = types.handleObj;
5739 jQuery( types.delegateTarget ).off(
5740 handleObj.namespace ?
5741 handleObj.origType + "." + handleObj.namespace :
5742 handleObj.origType,
5743 handleObj.selector,
5744 handleObj.handler
5745 );
5746 return this;
5747 }
5748 if ( typeof types === "object" ) {
5749
5750 // ( types-object [, selector] )
5751 for ( type in types ) {
5752 this.off( type, selector, types[ type ] );
5753 }
5754 return this;
5755 }
5756 if ( selector === false || typeof selector === "function" ) {
5757
5758 // ( types [, fn] )
5759 fn = selector;
5760 selector = undefined;
5761 }
5762 if ( fn === false ) {
5763 fn = returnFalse;
5764 }
5765 return this.each( function() {
5766 jQuery.event.remove( this, types, fn, selector );
5767 } );
5768 }
5769} );
5770
5771
5772var
5773
5774 /* eslint-disable max-len */
5775
5776 // See https://github.com/eslint/eslint/issues/3229
5777 rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
5778
5779 /* eslint-enable */
5780
5781 // Support: IE <=10 - 11, Edge 12 - 13 only
5782 // In IE/Edge using regex groups here causes severe slowdowns.
5783 // See https://connect.microsoft.com/IE/feedback/details/1736512/
5784 rnoInnerhtml = /<script|<style|<link/i,
5785
5786 // checked="checked" or checked
5787 rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
5788 rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
5789
5790// Prefer a tbody over its parent table for containing new rows
5791function manipulationTarget( elem, content ) {
5792 if ( nodeName( elem, "table" ) &&
5793 nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
5794
5795 return jQuery( elem ).children( "tbody" )[ 0 ] || elem;
5796 }
5797
5798 return elem;
5799}
5800
5801// Replace/restore the type attribute of script elements for safe DOM manipulation
5802function disableScript( elem ) {
5803 elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;
5804 return elem;
5805}
5806function restoreScript( elem ) {
5807 if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) {
5808 elem.type = elem.type.slice( 5 );
5809 } else {
5810 elem.removeAttribute( "type" );
5811 }
5812
5813 return elem;
5814}
5815
5816function cloneCopyEvent( src, dest ) {
5817 var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
5818
5819 if ( dest.nodeType !== 1 ) {
5820 return;
5821 }
5822
5823 // 1. Copy private data: events, handlers, etc.
5824 if ( dataPriv.hasData( src ) ) {
5825 pdataOld = dataPriv.access( src );
5826 pdataCur = dataPriv.set( dest, pdataOld );
5827 events = pdataOld.events;
5828
5829 if ( events ) {
5830 delete pdataCur.handle;
5831 pdataCur.events = {};
5832
5833 for ( type in events ) {
5834 for ( i = 0, l = events[ type ].length; i < l; i++ ) {
5835 jQuery.event.add( dest, type, events[ type ][ i ] );
5836 }
5837 }
5838 }
5839 }
5840
5841 // 2. Copy user data
5842 if ( dataUser.hasData( src ) ) {
5843 udataOld = dataUser.access( src );
5844 udataCur = jQuery.extend( {}, udataOld );
5845
5846 dataUser.set( dest, udataCur );
5847 }
5848}
5849
5850// Fix IE bugs, see support tests
5851function fixInput( src, dest ) {
5852 var nodeName = dest.nodeName.toLowerCase();
5853
5854 // Fails to persist the checked state of a cloned checkbox or radio button.
5855 if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
5856 dest.checked = src.checked;
5857
5858 // Fails to return the selected option to the default selected state when cloning options
5859 } else if ( nodeName === "input" || nodeName === "textarea" ) {
5860 dest.defaultValue = src.defaultValue;
5861 }
5862}
5863
5864function domManip( collection, args, callback, ignored ) {
5865
5866 // Flatten any nested arrays
5867 args = concat.apply( [], args );
5868
5869 var fragment, first, scripts, hasScripts, node, doc,
5870 i = 0,
5871 l = collection.length,
5872 iNoClone = l - 1,
5873 value = args[ 0 ],
5874 valueIsFunction = isFunction( value );
5875
5876 // We can't cloneNode fragments that contain checked, in WebKit
5877 if ( valueIsFunction ||
5878 ( l > 1 && typeof value === "string" &&
5879 !support.checkClone && rchecked.test( value ) ) ) {
5880 return collection.each( function( index ) {
5881 var self = collection.eq( index );
5882 if ( valueIsFunction ) {
5883 args[ 0 ] = value.call( this, index, self.html() );
5884 }
5885 domManip( self, args, callback, ignored );
5886 } );
5887 }
5888
5889 if ( l ) {
5890 fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );
5891 first = fragment.firstChild;
5892
5893 if ( fragment.childNodes.length === 1 ) {
5894 fragment = first;
5895 }
5896
5897 // Require either new content or an interest in ignored elements to invoke the callback
5898 if ( first || ignored ) {
5899 scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
5900 hasScripts = scripts.length;
5901
5902 // Use the original fragment for the last item
5903 // instead of the first because it can end up
5904 // being emptied incorrectly in certain situations (#8070).
5905 for ( ; i < l; i++ ) {
5906 node = fragment;
5907
5908 if ( i !== iNoClone ) {
5909 node = jQuery.clone( node, true, true );
5910
5911 // Keep references to cloned scripts for later restoration
5912 if ( hasScripts ) {
5913
5914 // Support: Android <=4.0 only, PhantomJS 1 only
5915 // push.apply(_, arraylike) throws on ancient WebKit
5916 jQuery.merge( scripts, getAll( node, "script" ) );
5917 }
5918 }
5919
5920 callback.call( collection[ i ], node, i );
5921 }
5922
5923 if ( hasScripts ) {
5924 doc = scripts[ scripts.length - 1 ].ownerDocument;
5925
5926 // Reenable scripts
5927 jQuery.map( scripts, restoreScript );
5928
5929 // Evaluate executable scripts on first document insertion
5930 for ( i = 0; i < hasScripts; i++ ) {
5931 node = scripts[ i ];
5932 if ( rscriptType.test( node.type || "" ) &&
5933 !dataPriv.access( node, "globalEval" ) &&
5934 jQuery.contains( doc, node ) ) {
5935
5936 if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) {
5937
5938 // Optional AJAX dependency, but won't run scripts if not present
5939 if ( jQuery._evalUrl && !node.noModule ) {
5940 jQuery._evalUrl( node.src, {
5941 nonce: node.nonce || node.getAttribute( "nonce" )
5942 } );
5943 }
5944 } else {
5945 DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc );
5946 }
5947 }
5948 }
5949 }
5950 }
5951 }
5952
5953 return collection;
5954}
5955
5956function remove( elem, selector, keepData ) {
5957 var node,
5958 nodes = selector ? jQuery.filter( selector, elem ) : elem,
5959 i = 0;
5960
5961 for ( ; ( node = nodes[ i ] ) != null; i++ ) {
5962 if ( !keepData && node.nodeType === 1 ) {
5963 jQuery.cleanData( getAll( node ) );
5964 }
5965
5966 if ( node.parentNode ) {
5967 if ( keepData && isAttached( node ) ) {
5968 setGlobalEval( getAll( node, "script" ) );
5969 }
5970 node.parentNode.removeChild( node );
5971 }
5972 }
5973
5974 return elem;
5975}
5976
5977jQuery.extend( {
5978 htmlPrefilter: function( html ) {
5979 return html.replace( rxhtmlTag, "<$1></$2>" );
5980 },
5981
5982 clone: function( elem, dataAndEvents, deepDataAndEvents ) {
5983 var i, l, srcElements, destElements,
5984 clone = elem.cloneNode( true ),
5985 inPage = isAttached( elem );
5986
5987 // Fix IE cloning issues
5988 if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
5989 !jQuery.isXMLDoc( elem ) ) {
5990
5991 // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2
5992 destElements = getAll( clone );
5993 srcElements = getAll( elem );
5994
5995 for ( i = 0, l = srcElements.length; i < l; i++ ) {
5996 fixInput( srcElements[ i ], destElements[ i ] );
5997 }
5998 }
5999
6000 // Copy the events from the original to the clone
6001 if ( dataAndEvents ) {
6002 if ( deepDataAndEvents ) {
6003 srcElements = srcElements || getAll( elem );
6004 destElements = destElements || getAll( clone );
6005
6006 for ( i = 0, l = srcElements.length; i < l; i++ ) {
6007 cloneCopyEvent( srcElements[ i ], destElements[ i ] );
6008 }
6009 } else {
6010 cloneCopyEvent( elem, clone );
6011 }
6012 }
6013
6014 // Preserve script evaluation history
6015 destElements = getAll( clone, "script" );
6016 if ( destElements.length > 0 ) {
6017 setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
6018 }
6019
6020 // Return the cloned set
6021 return clone;
6022 },
6023
6024 cleanData: function( elems ) {
6025 var data, elem, type,
6026 special = jQuery.event.special,
6027 i = 0;
6028
6029 for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {
6030 if ( acceptData( elem ) ) {
6031 if ( ( data = elem[ dataPriv.expando ] ) ) {
6032 if ( data.events ) {
6033 for ( type in data.events ) {
6034 if ( special[ type ] ) {
6035 jQuery.event.remove( elem, type );
6036
6037 // This is a shortcut to avoid jQuery.event.remove's overhead
6038 } else {
6039 jQuery.removeEvent( elem, type, data.handle );
6040 }
6041 }
6042 }
6043
6044 // Support: Chrome <=35 - 45+
6045 // Assign undefined instead of using delete, see Data#remove
6046 elem[ dataPriv.expando ] = undefined;
6047 }
6048 if ( elem[ dataUser.expando ] ) {
6049
6050 // Support: Chrome <=35 - 45+
6051 // Assign undefined instead of using delete, see Data#remove
6052 elem[ dataUser.expando ] = undefined;
6053 }
6054 }
6055 }
6056 }
6057} );
6058
6059jQuery.fn.extend( {
6060 detach: function( selector ) {
6061 return remove( this, selector, true );
6062 },
6063
6064 remove: function( selector ) {
6065 return remove( this, selector );
6066 },
6067
6068 text: function( value ) {
6069 return access( this, function( value ) {
6070 return value === undefined ?
6071 jQuery.text( this ) :
6072 this.empty().each( function() {
6073 if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
6074 this.textContent = value;
6075 }
6076 } );
6077 }, null, value, arguments.length );
6078 },
6079
6080 append: function() {
6081 return domManip( this, arguments, function( elem ) {
6082 if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
6083 var target = manipulationTarget( this, elem );
6084 target.appendChild( elem );
6085 }
6086 } );
6087 },
6088
6089 prepend: function() {
6090 return domManip( this, arguments, function( elem ) {
6091 if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
6092 var target = manipulationTarget( this, elem );
6093 target.insertBefore( elem, target.firstChild );
6094 }
6095 } );
6096 },
6097
6098 before: function() {
6099 return domManip( this, arguments, function( elem ) {
6100 if ( this.parentNode ) {
6101 this.parentNode.insertBefore( elem, this );
6102 }
6103 } );
6104 },
6105
6106 after: function() {
6107 return domManip( this, arguments, function( elem ) {
6108 if ( this.parentNode ) {
6109 this.parentNode.insertBefore( elem, this.nextSibling );
6110 }
6111 } );
6112 },
6113
6114 empty: function() {
6115 var elem,
6116 i = 0;
6117
6118 for ( ; ( elem = this[ i ] ) != null; i++ ) {
6119 if ( elem.nodeType === 1 ) {
6120
6121 // Prevent memory leaks
6122 jQuery.cleanData( getAll( elem, false ) );
6123
6124 // Remove any remaining nodes
6125 elem.textContent = "";
6126 }
6127 }
6128
6129 return this;
6130 },
6131
6132 clone: function( dataAndEvents, deepDataAndEvents ) {
6133 dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
6134 deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
6135
6136 return this.map( function() {
6137 return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
6138 } );
6139 },
6140
6141 html: function( value ) {
6142 return access( this, function( value ) {
6143 var elem = this[ 0 ] || {},
6144 i = 0,
6145 l = this.length;
6146
6147 if ( value === undefined && elem.nodeType === 1 ) {
6148 return elem.innerHTML;
6149 }
6150
6151 // See if we can take a shortcut and just use innerHTML
6152 if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
6153 !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
6154
6155 value = jQuery.htmlPrefilter( value );
6156
6157 try {
6158 for ( ; i < l; i++ ) {
6159 elem = this[ i ] || {};
6160
6161 // Remove element nodes and prevent memory leaks
6162 if ( elem.nodeType === 1 ) {
6163 jQuery.cleanData( getAll( elem, false ) );
6164 elem.innerHTML = value;
6165 }
6166 }
6167
6168 elem = 0;
6169
6170 // If using innerHTML throws an exception, use the fallback method
6171 } catch ( e ) {}
6172 }
6173
6174 if ( elem ) {
6175 this.empty().append( value );
6176 }
6177 }, null, value, arguments.length );
6178 },
6179
6180 replaceWith: function() {
6181 var ignored = [];
6182
6183 // Make the changes, replacing each non-ignored context element with the new content
6184 return domManip( this, arguments, function( elem ) {
6185 var parent = this.parentNode;
6186
6187 if ( jQuery.inArray( this, ignored ) < 0 ) {
6188 jQuery.cleanData( getAll( this ) );
6189 if ( parent ) {
6190 parent.replaceChild( elem, this );
6191 }
6192 }
6193
6194 // Force callback invocation
6195 }, ignored );
6196 }
6197} );
6198
6199jQuery.each( {
6200 appendTo: "append",
6201 prependTo: "prepend",
6202 insertBefore: "before",
6203 insertAfter: "after",
6204 replaceAll: "replaceWith"
6205}, function( name, original ) {
6206 jQuery.fn[ name ] = function( selector ) {
6207 var elems,
6208 ret = [],
6209 insert = jQuery( selector ),
6210 last = insert.length - 1,
6211 i = 0;
6212
6213 for ( ; i <= last; i++ ) {
6214 elems = i === last ? this : this.clone( true );
6215 jQuery( insert[ i ] )[ original ]( elems );
6216
6217 // Support: Android <=4.0 only, PhantomJS 1 only
6218 // .get() because push.apply(_, arraylike) throws on ancient WebKit
6219 push.apply( ret, elems.get() );
6220 }
6221
6222 return this.pushStack( ret );
6223 };
6224} );
6225var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
6226
6227var getStyles = function( elem ) {
6228
6229 // Support: IE <=11 only, Firefox <=30 (#15098, #14150)
6230 // IE throws on elements created in popups
6231 // FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
6232 var view = elem.ownerDocument.defaultView;
6233
6234 if ( !view || !view.opener ) {
6235 view = window;
6236 }
6237
6238 return view.getComputedStyle( elem );
6239 };
6240
6241var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
6242
6243
6244
6245( function() {
6246
6247 // Executing both pixelPosition & boxSizingReliable tests require only one layout
6248 // so they're executed at the same time to save the second computation.
6249 function computeStyleTests() {
6250
6251 // This is a singleton, we need to execute it only once
6252 if ( !div ) {
6253 return;
6254 }
6255
6256 container.style.cssText = "position:absolute;left:-11111px;width:60px;" +
6257 "margin-top:1px;padding:0;border:0";
6258 div.style.cssText =
6259 "position:relative;display:block;box-sizing:border-box;overflow:scroll;" +
6260 "margin:auto;border:1px;padding:1px;" +
6261 "width:60%;top:1%";
6262 documentElement.appendChild( container ).appendChild( div );
6263
6264 var divStyle = window.getComputedStyle( div );
6265 pixelPositionVal = divStyle.top !== "1%";
6266
6267 // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
6268 reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;
6269
6270 // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3
6271 // Some styles come back with percentage values, even though they shouldn't
6272 div.style.right = "60%";
6273 pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;
6274
6275 // Support: IE 9 - 11 only
6276 // Detect misreporting of content dimensions for box-sizing:border-box elements
6277 boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;
6278
6279 // Support: IE 9 only
6280 // Detect overflow:scroll screwiness (gh-3699)
6281 // Support: Chrome <=64
6282 // Don't get tricked when zoom affects offsetWidth (gh-4029)
6283 div.style.position = "absolute";
6284 scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;
6285
6286 documentElement.removeChild( container );
6287
6288 // Nullify the div so it wouldn't be stored in the memory and
6289 // it will also be a sign that checks already performed
6290 div = null;
6291 }
6292
6293 function roundPixelMeasures( measure ) {
6294 return Math.round( parseFloat( measure ) );
6295 }
6296
6297 var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,
6298 reliableMarginLeftVal,
6299 container = document.createElement( "div" ),
6300 div = document.createElement( "div" );
6301
6302 // Finish early in limited (non-browser) environments
6303 if ( !div.style ) {
6304 return;
6305 }
6306
6307 // Support: IE <=9 - 11 only
6308 // Style of cloned element affects source element cloned (#8908)
6309 div.style.backgroundClip = "content-box";
6310 div.cloneNode( true ).style.backgroundClip = "";
6311 support.clearCloneStyle = div.style.backgroundClip === "content-box";
6312
6313 jQuery.extend( support, {
6314 boxSizingReliable: function() {
6315 computeStyleTests();
6316 return boxSizingReliableVal;
6317 },
6318 pixelBoxStyles: function() {
6319 computeStyleTests();
6320 return pixelBoxStylesVal;
6321 },
6322 pixelPosition: function() {
6323 computeStyleTests();
6324 return pixelPositionVal;
6325 },
6326 reliableMarginLeft: function() {
6327 computeStyleTests();
6328 return reliableMarginLeftVal;
6329 },
6330 scrollboxSize: function() {
6331 computeStyleTests();
6332 return scrollboxSizeVal;
6333 }
6334 } );
6335} )();
6336
6337
6338function curCSS( elem, name, computed ) {
6339 var width, minWidth, maxWidth, ret,
6340
6341 // Support: Firefox 51+
6342 // Retrieving style before computed somehow
6343 // fixes an issue with getting wrong values
6344 // on detached elements
6345 style = elem.style;
6346
6347 computed = computed || getStyles( elem );
6348
6349 // getPropertyValue is needed for:
6350 // .css('filter') (IE 9 only, #12537)
6351 // .css('--customProperty) (#3144)
6352 if ( computed ) {
6353 ret = computed.getPropertyValue( name ) || computed[ name ];
6354
6355 if ( ret === "" && !isAttached( elem ) ) {
6356 ret = jQuery.style( elem, name );
6357 }
6358
6359 // A tribute to the "awesome hack by Dean Edwards"
6360 // Android Browser returns percentage for some values,
6361 // but width seems to be reliably pixels.
6362 // This is against the CSSOM draft spec:
6363 // https://drafts.csswg.org/cssom/#resolved-values
6364 if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {
6365
6366 // Remember the original values
6367 width = style.width;
6368 minWidth = style.minWidth;
6369 maxWidth = style.maxWidth;
6370
6371 // Put in the new values to get a computed value out
6372 style.minWidth = style.maxWidth = style.width = ret;
6373 ret = computed.width;
6374
6375 // Revert the changed values
6376 style.width = width;
6377 style.minWidth = minWidth;
6378 style.maxWidth = maxWidth;
6379 }
6380 }
6381
6382 return ret !== undefined ?
6383
6384 // Support: IE <=9 - 11 only
6385 // IE returns zIndex value as an integer.
6386 ret + "" :
6387 ret;
6388}
6389
6390
6391function addGetHookIf( conditionFn, hookFn ) {
6392
6393 // Define the hook, we'll check on the first run if it's really needed.
6394 return {
6395 get: function() {
6396 if ( conditionFn() ) {
6397
6398 // Hook not needed (or it's not possible to use it due
6399 // to missing dependency), remove it.
6400 delete this.get;
6401 return;
6402 }
6403
6404 // Hook needed; redefine it so that the support test is not executed again.
6405 return ( this.get = hookFn ).apply( this, arguments );
6406 }
6407 };
6408}
6409
6410
6411var cssPrefixes = [ "Webkit", "Moz", "ms" ],
6412 emptyStyle = document.createElement( "div" ).style,
6413 vendorProps = {};
6414
6415// Return a vendor-prefixed property or undefined
6416function vendorPropName( name ) {
6417
6418 // Check for vendor prefixed names
6419 var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
6420 i = cssPrefixes.length;
6421
6422 while ( i-- ) {
6423 name = cssPrefixes[ i ] + capName;
6424 if ( name in emptyStyle ) {
6425 return name;
6426 }
6427 }
6428}
6429
6430// Return a potentially-mapped jQuery.cssProps or vendor prefixed property
6431function finalPropName( name ) {
6432 var final = jQuery.cssProps[ name ] || vendorProps[ name ];
6433
6434 if ( final ) {
6435 return final;
6436 }
6437 if ( name in emptyStyle ) {
6438 return name;
6439 }
6440 return vendorProps[ name ] = vendorPropName( name ) || name;
6441}
6442
6443
6444var
6445
6446 // Swappable if display is none or starts with table
6447 // except "table", "table-cell", or "table-caption"
6448 // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
6449 rdisplayswap = /^(none|table(?!-c[ea]).+)/,
6450 rcustomProp = /^--/,
6451 cssShow = { position: "absolute", visibility: "hidden", display: "block" },
6452 cssNormalTransform = {
6453 letterSpacing: "0",
6454 fontWeight: "400"
6455 };
6456
6457function setPositiveNumber( elem, value, subtract ) {
6458
6459 // Any relative (+/-) values have already been
6460 // normalized at this point
6461 var matches = rcssNum.exec( value );
6462 return matches ?
6463
6464 // Guard against undefined "subtract", e.g., when used as in cssHooks
6465 Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
6466 value;
6467}
6468
6469function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {
6470 var i = dimension === "width" ? 1 : 0,
6471 extra = 0,
6472 delta = 0;
6473
6474 // Adjustment may not be necessary
6475 if ( box === ( isBorderBox ? "border" : "content" ) ) {
6476 return 0;
6477 }
6478
6479 for ( ; i < 4; i += 2 ) {
6480
6481 // Both box models exclude margin
6482 if ( box === "margin" ) {
6483 delta += jQuery.css( elem, box + cssExpand[ i ], true, styles );
6484 }
6485
6486 // If we get here with a content-box, we're seeking "padding" or "border" or "margin"
6487 if ( !isBorderBox ) {
6488
6489 // Add padding
6490 delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
6491
6492 // For "border" or "margin", add border
6493 if ( box !== "padding" ) {
6494 delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
6495
6496 // But still keep track of it otherwise
6497 } else {
6498 extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
6499 }
6500
6501 // If we get here with a border-box (content + padding + border), we're seeking "content" or
6502 // "padding" or "margin"
6503 } else {
6504
6505 // For "content", subtract padding
6506 if ( box === "content" ) {
6507 delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
6508 }
6509
6510 // For "content" or "padding", subtract border
6511 if ( box !== "margin" ) {
6512 delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
6513 }
6514 }
6515 }
6516
6517 // Account for positive content-box scroll gutter when requested by providing computedVal
6518 if ( !isBorderBox && computedVal >= 0 ) {
6519
6520 // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border
6521 // Assuming integer scroll gutter, subtract the rest and round down
6522 delta += Math.max( 0, Math.ceil(
6523 elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
6524 computedVal -
6525 delta -
6526 extra -
6527 0.5
6528
6529 // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter
6530 // Use an explicit zero to avoid NaN (gh-3964)
6531 ) ) || 0;
6532 }
6533
6534 return delta;
6535}
6536
6537function getWidthOrHeight( elem, dimension, extra ) {
6538
6539 // Start with computed style
6540 var styles = getStyles( elem ),
6541
6542 // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).
6543 // Fake content-box until we know it's needed to know the true value.
6544 boxSizingNeeded = !support.boxSizingReliable() || extra,
6545 isBorderBox = boxSizingNeeded &&
6546 jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
6547 valueIsBorderBox = isBorderBox,
6548
6549 val = curCSS( elem, dimension, styles ),
6550 offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );
6551
6552 // Support: Firefox <=54
6553 // Return a confounding non-pixel value or feign ignorance, as appropriate.
6554 if ( rnumnonpx.test( val ) ) {
6555 if ( !extra ) {
6556 return val;
6557 }
6558 val = "auto";
6559 }
6560
6561
6562 // Fall back to offsetWidth/offsetHeight when value is "auto"
6563 // This happens for inline elements with no explicit setting (gh-3571)
6564 // Support: Android <=4.1 - 4.3 only
6565 // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)
6566 // Support: IE 9-11 only
6567 // Also use offsetWidth/offsetHeight for when box sizing is unreliable
6568 // We use getClientRects() to check for hidden/disconnected.
6569 // In those cases, the computed value can be trusted to be border-box
6570 if ( ( !support.boxSizingReliable() && isBorderBox ||
6571 val === "auto" ||
6572 !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) &&
6573 elem.getClientRects().length ) {
6574
6575 isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
6576
6577 // Where available, offsetWidth/offsetHeight approximate border box dimensions.
6578 // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the
6579 // retrieved value as a content box dimension.
6580 valueIsBorderBox = offsetProp in elem;
6581 if ( valueIsBorderBox ) {
6582 val = elem[ offsetProp ];
6583 }
6584 }
6585
6586 // Normalize "" and auto
6587 val = parseFloat( val ) || 0;
6588
6589 // Adjust for the element's box model
6590 return ( val +
6591 boxModelAdjustment(
6592 elem,
6593 dimension,
6594 extra || ( isBorderBox ? "border" : "content" ),
6595 valueIsBorderBox,
6596 styles,
6597
6598 // Provide the current computed size to request scroll gutter calculation (gh-3589)
6599 val
6600 )
6601 ) + "px";
6602}
6603
6604jQuery.extend( {
6605
6606 // Add in style property hooks for overriding the default
6607 // behavior of getting and setting a style property
6608 cssHooks: {
6609 opacity: {
6610 get: function( elem, computed ) {
6611 if ( computed ) {
6612
6613 // We should always get a number back from opacity
6614 var ret = curCSS( elem, "opacity" );
6615 return ret === "" ? "1" : ret;
6616 }
6617 }
6618 }
6619 },
6620
6621 // Don't automatically add "px" to these possibly-unitless properties
6622 cssNumber: {
6623 "animationIterationCount": true,
6624 "columnCount": true,
6625 "fillOpacity": true,
6626 "flexGrow": true,
6627 "flexShrink": true,
6628 "fontWeight": true,
6629 "gridArea": true,
6630 "gridColumn": true,
6631 "gridColumnEnd": true,
6632 "gridColumnStart": true,
6633 "gridRow": true,
6634 "gridRowEnd": true,
6635 "gridRowStart": true,
6636 "lineHeight": true,
6637 "opacity": true,
6638 "order": true,
6639 "orphans": true,
6640 "widows": true,
6641 "zIndex": true,
6642 "zoom": true
6643 },
6644
6645 // Add in properties whose names you wish to fix before
6646 // setting or getting the value
6647 cssProps: {},
6648
6649 // Get and set the style property on a DOM Node
6650 style: function( elem, name, value, extra ) {
6651
6652 // Don't set styles on text and comment nodes
6653 if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
6654 return;
6655 }
6656
6657 // Make sure that we're working with the right name
6658 var ret, type, hooks,
6659 origName = camelCase( name ),
6660 isCustomProp = rcustomProp.test( name ),
6661 style = elem.style;
6662
6663 // Make sure that we're working with the right name. We don't
6664 // want to query the value if it is a CSS custom property
6665 // since they are user-defined.
6666 if ( !isCustomProp ) {
6667 name = finalPropName( origName );
6668 }
6669
6670 // Gets hook for the prefixed version, then unprefixed version
6671 hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
6672
6673 // Check if we're setting a value
6674 if ( value !== undefined ) {
6675 type = typeof value;
6676
6677 // Convert "+=" or "-=" to relative numbers (#7345)
6678 if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
6679 value = adjustCSS( elem, name, ret );
6680
6681 // Fixes bug #9237
6682 type = "number";
6683 }
6684
6685 // Make sure that null and NaN values aren't set (#7116)
6686 if ( value == null || value !== value ) {
6687 return;
6688 }
6689
6690 // If a number was passed in, add the unit (except for certain CSS properties)
6691 // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append
6692 // "px" to a few hardcoded values.
6693 if ( type === "number" && !isCustomProp ) {
6694 value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
6695 }
6696
6697 // background-* props affect original clone's values
6698 if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
6699 style[ name ] = "inherit";
6700 }
6701
6702 // If a hook was provided, use that value, otherwise just set the specified value
6703 if ( !hooks || !( "set" in hooks ) ||
6704 ( value = hooks.set( elem, value, extra ) ) !== undefined ) {
6705
6706 if ( isCustomProp ) {
6707 style.setProperty( name, value );
6708 } else {
6709 style[ name ] = value;
6710 }
6711 }
6712
6713 } else {
6714
6715 // If a hook was provided get the non-computed value from there
6716 if ( hooks && "get" in hooks &&
6717 ( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
6718
6719 return ret;
6720 }
6721
6722 // Otherwise just get the value from the style object
6723 return style[ name ];
6724 }
6725 },
6726
6727 css: function( elem, name, extra, styles ) {
6728 var val, num, hooks,
6729 origName = camelCase( name ),
6730 isCustomProp = rcustomProp.test( name );
6731
6732 // Make sure that we're working with the right name. We don't
6733 // want to modify the value if it is a CSS custom property
6734 // since they are user-defined.
6735 if ( !isCustomProp ) {
6736 name = finalPropName( origName );
6737 }
6738
6739 // Try prefixed name followed by the unprefixed name
6740 hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
6741
6742 // If a hook was provided get the computed value from there
6743 if ( hooks && "get" in hooks ) {
6744 val = hooks.get( elem, true, extra );
6745 }
6746
6747 // Otherwise, if a way to get the computed value exists, use that
6748 if ( val === undefined ) {
6749 val = curCSS( elem, name, styles );
6750 }
6751
6752 // Convert "normal" to computed value
6753 if ( val === "normal" && name in cssNormalTransform ) {
6754 val = cssNormalTransform[ name ];
6755 }
6756
6757 // Make numeric if forced or a qualifier was provided and val looks numeric
6758 if ( extra === "" || extra ) {
6759 num = parseFloat( val );
6760 return extra === true || isFinite( num ) ? num || 0 : val;
6761 }
6762
6763 return val;
6764 }
6765} );
6766
6767jQuery.each( [ "height", "width" ], function( i, dimension ) {
6768 jQuery.cssHooks[ dimension ] = {
6769 get: function( elem, computed, extra ) {
6770 if ( computed ) {
6771
6772 // Certain elements can have dimension info if we invisibly show them
6773 // but it must have a current display style that would benefit
6774 return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
6775
6776 // Support: Safari 8+
6777 // Table columns in Safari have non-zero offsetWidth & zero
6778 // getBoundingClientRect().width unless display is changed.
6779 // Support: IE <=11 only
6780 // Running getBoundingClientRect on a disconnected node
6781 // in IE throws an error.
6782 ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
6783 swap( elem, cssShow, function() {
6784 return getWidthOrHeight( elem, dimension, extra );
6785 } ) :
6786 getWidthOrHeight( elem, dimension, extra );
6787 }
6788 },
6789
6790 set: function( elem, value, extra ) {
6791 var matches,
6792 styles = getStyles( elem ),
6793
6794 // Only read styles.position if the test has a chance to fail
6795 // to avoid forcing a reflow.
6796 scrollboxSizeBuggy = !support.scrollboxSize() &&
6797 styles.position === "absolute",
6798
6799 // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)
6800 boxSizingNeeded = scrollboxSizeBuggy || extra,
6801 isBorderBox = boxSizingNeeded &&
6802 jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
6803 subtract = extra ?
6804 boxModelAdjustment(
6805 elem,
6806 dimension,
6807 extra,
6808 isBorderBox,
6809 styles
6810 ) :
6811 0;
6812
6813 // Account for unreliable border-box dimensions by comparing offset* to computed and
6814 // faking a content-box to get border and padding (gh-3699)
6815 if ( isBorderBox && scrollboxSizeBuggy ) {
6816 subtract -= Math.ceil(
6817 elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
6818 parseFloat( styles[ dimension ] ) -
6819 boxModelAdjustment( elem, dimension, "border", false, styles ) -
6820 0.5
6821 );
6822 }
6823
6824 // Convert to pixels if value adjustment is needed
6825 if ( subtract && ( matches = rcssNum.exec( value ) ) &&
6826 ( matches[ 3 ] || "px" ) !== "px" ) {
6827
6828 elem.style[ dimension ] = value;
6829 value = jQuery.css( elem, dimension );
6830 }
6831
6832 return setPositiveNumber( elem, value, subtract );
6833 }
6834 };
6835} );
6836
6837jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
6838 function( elem, computed ) {
6839 if ( computed ) {
6840 return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
6841 elem.getBoundingClientRect().left -
6842 swap( elem, { marginLeft: 0 }, function() {
6843 return elem.getBoundingClientRect().left;
6844 } )
6845 ) + "px";
6846 }
6847 }
6848);
6849
6850// These hooks are used by animate to expand properties
6851jQuery.each( {
6852 margin: "",
6853 padding: "",
6854 border: "Width"
6855}, function( prefix, suffix ) {
6856 jQuery.cssHooks[ prefix + suffix ] = {
6857 expand: function( value ) {
6858 var i = 0,
6859 expanded = {},
6860
6861 // Assumes a single number if not a string
6862 parts = typeof value === "string" ? value.split( " " ) : [ value ];
6863
6864 for ( ; i < 4; i++ ) {
6865 expanded[ prefix + cssExpand[ i ] + suffix ] =
6866 parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
6867 }
6868
6869 return expanded;
6870 }
6871 };
6872
6873 if ( prefix !== "margin" ) {
6874 jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
6875 }
6876} );
6877
6878jQuery.fn.extend( {
6879 css: function( name, value ) {
6880 return access( this, function( elem, name, value ) {
6881 var styles, len,
6882 map = {},
6883 i = 0;
6884
6885 if ( Array.isArray( name ) ) {
6886 styles = getStyles( elem );
6887 len = name.length;
6888
6889 for ( ; i < len; i++ ) {
6890 map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
6891 }
6892
6893 return map;
6894 }
6895
6896 return value !== undefined ?
6897 jQuery.style( elem, name, value ) :
6898 jQuery.css( elem, name );
6899 }, name, value, arguments.length > 1 );
6900 }
6901} );
6902
6903
6904// Based off of the plugin by Clint Helfers, with permission.
6905// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
6906jQuery.fn.delay = function( time, type ) {
6907 time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
6908 type = type || "fx";
6909
6910 return this.queue( type, function( next, hooks ) {
6911 var timeout = window.setTimeout( next, time );
6912 hooks.stop = function() {
6913 window.clearTimeout( timeout );
6914 };
6915 } );
6916};
6917
6918
6919( function() {
6920 var input = document.createElement( "input" ),
6921 select = document.createElement( "select" ),
6922 opt = select.appendChild( document.createElement( "option" ) );
6923
6924 input.type = "checkbox";
6925
6926 // Support: Android <=4.3 only
6927 // Default value for a checkbox should be "on"
6928 support.checkOn = input.value !== "";
6929
6930 // Support: IE <=11 only
6931 // Must access selectedIndex to make default options select
6932 support.optSelected = opt.selected;
6933
6934 // Support: IE <=11 only
6935 // An input loses its value after becoming a radio
6936 input = document.createElement( "input" );
6937 input.value = "t";
6938 input.type = "radio";
6939 support.radioValue = input.value === "t";
6940} )();
6941
6942
6943var boolHook,
6944 attrHandle = jQuery.expr.attrHandle;
6945
6946jQuery.fn.extend( {
6947 attr: function( name, value ) {
6948 return access( this, jQuery.attr, name, value, arguments.length > 1 );
6949 },
6950
6951 removeAttr: function( name ) {
6952 return this.each( function() {
6953 jQuery.removeAttr( this, name );
6954 } );
6955 }
6956} );
6957
6958jQuery.extend( {
6959 attr: function( elem, name, value ) {
6960 var ret, hooks,
6961 nType = elem.nodeType;
6962
6963 // Don't get/set attributes on text, comment and attribute nodes
6964 if ( nType === 3 || nType === 8 || nType === 2 ) {
6965 return;
6966 }
6967
6968 // Fallback to prop when attributes are not supported
6969 if ( typeof elem.getAttribute === "undefined" ) {
6970 return jQuery.prop( elem, name, value );
6971 }
6972
6973 // Attribute hooks are determined by the lowercase version
6974 // Grab necessary hook if one is defined
6975 if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
6976 hooks = jQuery.attrHooks[ name.toLowerCase() ] ||
6977 ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
6978 }
6979
6980 if ( value !== undefined ) {
6981 if ( value === null ) {
6982 jQuery.removeAttr( elem, name );
6983 return;
6984 }
6985
6986 if ( hooks && "set" in hooks &&
6987 ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
6988 return ret;
6989 }
6990
6991 elem.setAttribute( name, value + "" );
6992 return value;
6993 }
6994
6995 if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
6996 return ret;
6997 }
6998
6999 ret = jQuery.find.attr( elem, name );
7000
7001 // Non-existent attributes return null, we normalize to undefined
7002 return ret == null ? undefined : ret;
7003 },
7004
7005 attrHooks: {
7006 type: {
7007 set: function( elem, value ) {
7008 if ( !support.radioValue && value === "radio" &&
7009 nodeName( elem, "input" ) ) {
7010 var val = elem.value;
7011 elem.setAttribute( "type", value );
7012 if ( val ) {
7013 elem.value = val;
7014 }
7015 return value;
7016 }
7017 }
7018 }
7019 },
7020
7021 removeAttr: function( elem, value ) {
7022 var name,
7023 i = 0,
7024
7025 // Attribute names can contain non-HTML whitespace characters
7026 // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
7027 attrNames = value && value.match( rnothtmlwhite );
7028
7029 if ( attrNames && elem.nodeType === 1 ) {
7030 while ( ( name = attrNames[ i++ ] ) ) {
7031 elem.removeAttribute( name );
7032 }
7033 }
7034 }
7035} );
7036
7037// Hooks for boolean attributes
7038boolHook = {
7039 set: function( elem, value, name ) {
7040 if ( value === false ) {
7041
7042 // Remove boolean attributes when set to false
7043 jQuery.removeAttr( elem, name );
7044 } else {
7045 elem.setAttribute( name, name );
7046 }
7047 return name;
7048 }
7049};
7050
7051jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
7052 var getter = attrHandle[ name ] || jQuery.find.attr;
7053
7054 attrHandle[ name ] = function( elem, name, isXML ) {
7055 var ret, handle,
7056 lowercaseName = name.toLowerCase();
7057
7058 if ( !isXML ) {
7059
7060 // Avoid an infinite loop by temporarily removing this function from the getter
7061 handle = attrHandle[ lowercaseName ];
7062 attrHandle[ lowercaseName ] = ret;
7063 ret = getter( elem, name, isXML ) != null ?
7064 lowercaseName :
7065 null;
7066 attrHandle[ lowercaseName ] = handle;
7067 }
7068 return ret;
7069 };
7070} );
7071
7072
7073
7074
7075var rfocusable = /^(?:input|select|textarea|button)$/i,
7076 rclickable = /^(?:a|area)$/i;
7077
7078jQuery.fn.extend( {
7079 prop: function( name, value ) {
7080 return access( this, jQuery.prop, name, value, arguments.length > 1 );
7081 },
7082
7083 removeProp: function( name ) {
7084 return this.each( function() {
7085 delete this[ jQuery.propFix[ name ] || name ];
7086 } );
7087 }
7088} );
7089
7090jQuery.extend( {
7091 prop: function( elem, name, value ) {
7092 var ret, hooks,
7093 nType = elem.nodeType;
7094
7095 // Don't get/set properties on text, comment and attribute nodes
7096 if ( nType === 3 || nType === 8 || nType === 2 ) {
7097 return;
7098 }
7099
7100 if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
7101
7102 // Fix name and attach hooks
7103 name = jQuery.propFix[ name ] || name;
7104 hooks = jQuery.propHooks[ name ];
7105 }
7106
7107 if ( value !== undefined ) {
7108 if ( hooks && "set" in hooks &&
7109 ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
7110 return ret;
7111 }
7112
7113 return ( elem[ name ] = value );
7114 }
7115
7116 if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
7117 return ret;
7118 }
7119
7120 return elem[ name ];
7121 },
7122
7123 propHooks: {
7124 tabIndex: {
7125 get: function( elem ) {
7126
7127 // Support: IE <=9 - 11 only
7128 // elem.tabIndex doesn't always return the
7129 // correct value when it hasn't been explicitly set
7130 // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
7131 // Use proper attribute retrieval(#12072)
7132 var tabindex = jQuery.find.attr( elem, "tabindex" );
7133
7134 if ( tabindex ) {
7135 return parseInt( tabindex, 10 );
7136 }
7137
7138 if (
7139 rfocusable.test( elem.nodeName ) ||
7140 rclickable.test( elem.nodeName ) &&
7141 elem.href
7142 ) {
7143 return 0;
7144 }
7145
7146 return -1;
7147 }
7148 }
7149 },
7150
7151 propFix: {
7152 "for": "htmlFor",
7153 "class": "className"
7154 }
7155} );
7156
7157// Support: IE <=11 only
7158// Accessing the selectedIndex property
7159// forces the browser to respect setting selected
7160// on the option
7161// The getter ensures a default option is selected
7162// when in an optgroup
7163// eslint rule "no-unused-expressions" is disabled for this code
7164// since it considers such accessions noop
7165if ( !support.optSelected ) {
7166 jQuery.propHooks.selected = {
7167 get: function( elem ) {
7168
7169 /* eslint no-unused-expressions: "off" */
7170
7171 var parent = elem.parentNode;
7172 if ( parent && parent.parentNode ) {
7173 parent.parentNode.selectedIndex;
7174 }
7175 return null;
7176 },
7177 set: function( elem ) {
7178
7179 /* eslint no-unused-expressions: "off" */
7180
7181 var parent = elem.parentNode;
7182 if ( parent ) {
7183 parent.selectedIndex;
7184
7185 if ( parent.parentNode ) {
7186 parent.parentNode.selectedIndex;
7187 }
7188 }
7189 }
7190 };
7191}
7192
7193jQuery.each( [
7194 "tabIndex",
7195 "readOnly",
7196 "maxLength",
7197 "cellSpacing",
7198 "cellPadding",
7199 "rowSpan",
7200 "colSpan",
7201 "useMap",
7202 "frameBorder",
7203 "contentEditable"
7204], function() {
7205 jQuery.propFix[ this.toLowerCase() ] = this;
7206} );
7207
7208
7209
7210
7211 // Strip and collapse whitespace according to HTML spec
7212 // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace
7213 function stripAndCollapse( value ) {
7214 var tokens = value.match( rnothtmlwhite ) || [];
7215 return tokens.join( " " );
7216 }
7217
7218
7219function getClass( elem ) {
7220 return elem.getAttribute && elem.getAttribute( "class" ) || "";
7221}
7222
7223function classesToArray( value ) {
7224 if ( Array.isArray( value ) ) {
7225 return value;
7226 }
7227 if ( typeof value === "string" ) {
7228 return value.match( rnothtmlwhite ) || [];
7229 }
7230 return [];
7231}
7232
7233jQuery.fn.extend( {
7234 addClass: function( value ) {
7235 var classes, elem, cur, curValue, clazz, j, finalValue,
7236 i = 0;
7237
7238 if ( isFunction( value ) ) {
7239 return this.each( function( j ) {
7240 jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
7241 } );
7242 }
7243
7244 classes = classesToArray( value );
7245
7246 if ( classes.length ) {
7247 while ( ( elem = this[ i++ ] ) ) {
7248 curValue = getClass( elem );
7249 cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
7250
7251 if ( cur ) {
7252 j = 0;
7253 while ( ( clazz = classes[ j++ ] ) ) {
7254 if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
7255 cur += clazz + " ";
7256 }
7257 }
7258
7259 // Only assign if different to avoid unneeded rendering.
7260 finalValue = stripAndCollapse( cur );
7261 if ( curValue !== finalValue ) {
7262 elem.setAttribute( "class", finalValue );
7263 }
7264 }
7265 }
7266 }
7267
7268 return this;
7269 },
7270
7271 removeClass: function( value ) {
7272 var classes, elem, cur, curValue, clazz, j, finalValue,
7273 i = 0;
7274
7275 if ( isFunction( value ) ) {
7276 return this.each( function( j ) {
7277 jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
7278 } );
7279 }
7280
7281 if ( !arguments.length ) {
7282 return this.attr( "class", "" );
7283 }
7284
7285 classes = classesToArray( value );
7286
7287 if ( classes.length ) {
7288 while ( ( elem = this[ i++ ] ) ) {
7289 curValue = getClass( elem );
7290
7291 // This expression is here for better compressibility (see addClass)
7292 cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
7293
7294 if ( cur ) {
7295 j = 0;
7296 while ( ( clazz = classes[ j++ ] ) ) {
7297
7298 // Remove *all* instances
7299 while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
7300 cur = cur.replace( " " + clazz + " ", " " );
7301 }
7302 }
7303
7304 // Only assign if different to avoid unneeded rendering.
7305 finalValue = stripAndCollapse( cur );
7306 if ( curValue !== finalValue ) {
7307 elem.setAttribute( "class", finalValue );
7308 }
7309 }
7310 }
7311 }
7312
7313 return this;
7314 },
7315
7316 toggleClass: function( value, stateVal ) {
7317 var type = typeof value,
7318 isValidValue = type === "string" || Array.isArray( value );
7319
7320 if ( typeof stateVal === "boolean" && isValidValue ) {
7321 return stateVal ? this.addClass( value ) : this.removeClass( value );
7322 }
7323
7324 if ( isFunction( value ) ) {
7325 return this.each( function( i ) {
7326 jQuery( this ).toggleClass(
7327 value.call( this, i, getClass( this ), stateVal ),
7328 stateVal
7329 );
7330 } );
7331 }
7332
7333 return this.each( function() {
7334 var className, i, self, classNames;
7335
7336 if ( isValidValue ) {
7337
7338 // Toggle individual class names
7339 i = 0;
7340 self = jQuery( this );
7341 classNames = classesToArray( value );
7342
7343 while ( ( className = classNames[ i++ ] ) ) {
7344
7345 // Check each className given, space separated list
7346 if ( self.hasClass( className ) ) {
7347 self.removeClass( className );
7348 } else {
7349 self.addClass( className );
7350 }
7351 }
7352
7353 // Toggle whole class name
7354 } else if ( value === undefined || type === "boolean" ) {
7355 className = getClass( this );
7356 if ( className ) {
7357
7358 // Store className if set
7359 dataPriv.set( this, "__className__", className );
7360 }
7361
7362 // If the element has a class name or if we're passed `false`,
7363 // then remove the whole classname (if there was one, the above saved it).
7364 // Otherwise bring back whatever was previously saved (if anything),
7365 // falling back to the empty string if nothing was stored.
7366 if ( this.setAttribute ) {
7367 this.setAttribute( "class",
7368 className || value === false ?
7369 "" :
7370 dataPriv.get( this, "__className__" ) || ""
7371 );
7372 }
7373 }
7374 } );
7375 },
7376
7377 hasClass: function( selector ) {
7378 var className, elem,
7379 i = 0;
7380
7381 className = " " + selector + " ";
7382 while ( ( elem = this[ i++ ] ) ) {
7383 if ( elem.nodeType === 1 &&
7384 ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
7385 return true;
7386 }
7387 }
7388
7389 return false;
7390 }
7391} );
7392
7393
7394
7395
7396var rreturn = /\r/g;
7397
7398jQuery.fn.extend( {
7399 val: function( value ) {
7400 var hooks, ret, valueIsFunction,
7401 elem = this[ 0 ];
7402
7403 if ( !arguments.length ) {
7404 if ( elem ) {
7405 hooks = jQuery.valHooks[ elem.type ] ||
7406 jQuery.valHooks[ elem.nodeName.toLowerCase() ];
7407
7408 if ( hooks &&
7409 "get" in hooks &&
7410 ( ret = hooks.get( elem, "value" ) ) !== undefined
7411 ) {
7412 return ret;
7413 }
7414
7415 ret = elem.value;
7416
7417 // Handle most common string cases
7418 if ( typeof ret === "string" ) {
7419 return ret.replace( rreturn, "" );
7420 }
7421
7422 // Handle cases where value is null/undef or number
7423 return ret == null ? "" : ret;
7424 }
7425
7426 return;
7427 }
7428
7429 valueIsFunction = isFunction( value );
7430
7431 return this.each( function( i ) {
7432 var val;
7433
7434 if ( this.nodeType !== 1 ) {
7435 return;
7436 }
7437
7438 if ( valueIsFunction ) {
7439 val = value.call( this, i, jQuery( this ).val() );
7440 } else {
7441 val = value;
7442 }
7443
7444 // Treat null/undefined as ""; convert numbers to string
7445 if ( val == null ) {
7446 val = "";
7447
7448 } else if ( typeof val === "number" ) {
7449 val += "";
7450
7451 } else if ( Array.isArray( val ) ) {
7452 val = jQuery.map( val, function( value ) {
7453 return value == null ? "" : value + "";
7454 } );
7455 }
7456
7457 hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
7458
7459 // If set returns undefined, fall back to normal setting
7460 if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
7461 this.value = val;
7462 }
7463 } );
7464 }
7465} );
7466
7467jQuery.extend( {
7468 valHooks: {
7469 option: {
7470 get: function( elem ) {
7471
7472 var val = jQuery.find.attr( elem, "value" );
7473 return val != null ?
7474 val :
7475
7476 // Support: IE <=10 - 11 only
7477 // option.text throws exceptions (#14686, #14858)
7478 // Strip and collapse whitespace
7479 // https://html.spec.whatwg.org/#strip-and-collapse-whitespace
7480 stripAndCollapse( jQuery.text( elem ) );
7481 }
7482 },
7483 select: {
7484 get: function( elem ) {
7485 var value, option, i,
7486 options = elem.options,
7487 index = elem.selectedIndex,
7488 one = elem.type === "select-one",
7489 values = one ? null : [],
7490 max = one ? index + 1 : options.length;
7491
7492 if ( index < 0 ) {
7493 i = max;
7494
7495 } else {
7496 i = one ? index : 0;
7497 }
7498
7499 // Loop through all the selected options
7500 for ( ; i < max; i++ ) {
7501 option = options[ i ];
7502
7503 // Support: IE <=9 only
7504 // IE8-9 doesn't update selected after form reset (#2551)
7505 if ( ( option.selected || i === index ) &&
7506
7507 // Don't return options that are disabled or in a disabled optgroup
7508 !option.disabled &&
7509 ( !option.parentNode.disabled ||
7510 !nodeName( option.parentNode, "optgroup" ) ) ) {
7511
7512 // Get the specific value for the option
7513 value = jQuery( option ).val();
7514
7515 // We don't need an array for one selects
7516 if ( one ) {
7517 return value;
7518 }
7519
7520 // Multi-Selects return an array
7521 values.push( value );
7522 }
7523 }
7524
7525 return values;
7526 },
7527
7528 set: function( elem, value ) {
7529 var optionSet, option,
7530 options = elem.options,
7531 values = jQuery.makeArray( value ),
7532 i = options.length;
7533
7534 while ( i-- ) {
7535 option = options[ i ];
7536
7537 /* eslint-disable no-cond-assign */
7538
7539 if ( option.selected =
7540 jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
7541 ) {
7542 optionSet = true;
7543 }
7544
7545 /* eslint-enable no-cond-assign */
7546 }
7547
7548 // Force browsers to behave consistently when non-matching value is set
7549 if ( !optionSet ) {
7550 elem.selectedIndex = -1;
7551 }
7552 return values;
7553 }
7554 }
7555 }
7556} );
7557
7558// Radios and checkboxes getter/setter
7559jQuery.each( [ "radio", "checkbox" ], function() {
7560 jQuery.valHooks[ this ] = {
7561 set: function( elem, value ) {
7562 if ( Array.isArray( value ) ) {
7563 return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
7564 }
7565 }
7566 };
7567 if ( !support.checkOn ) {
7568 jQuery.valHooks[ this ].get = function( elem ) {
7569 return elem.getAttribute( "value" ) === null ? "on" : elem.value;
7570 };
7571 }
7572} );
7573
7574
7575
7576
7577// Return jQuery for attributes-only inclusion
7578
7579
7580support.focusin = "onfocusin" in window;
7581
7582
7583var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
7584 stopPropagationCallback = function( e ) {
7585 e.stopPropagation();
7586 };
7587
7588jQuery.extend( jQuery.event, {
7589
7590 trigger: function( event, data, elem, onlyHandlers ) {
7591
7592 var i, cur, tmp, bubbleType, ontype, handle, special, lastElement,
7593 eventPath = [ elem || document ],
7594 type = hasOwn.call( event, "type" ) ? event.type : event,
7595 namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
7596
7597 cur = lastElement = tmp = elem = elem || document;
7598
7599 // Don't do events on text and comment nodes
7600 if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
7601 return;
7602 }
7603
7604 // focus/blur morphs to focusin/out; ensure we're not firing them right now
7605 if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
7606 return;
7607 }
7608
7609 if ( type.indexOf( "." ) > -1 ) {
7610
7611 // Namespaced trigger; create a regexp to match event type in handle()
7612 namespaces = type.split( "." );
7613 type = namespaces.shift();
7614 namespaces.sort();
7615 }
7616 ontype = type.indexOf( ":" ) < 0 && "on" + type;
7617
7618 // Caller can pass in a jQuery.Event object, Object, or just an event type string
7619 event = event[ jQuery.expando ] ?
7620 event :
7621 new jQuery.Event( type, typeof event === "object" && event );
7622
7623 // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
7624 event.isTrigger = onlyHandlers ? 2 : 3;
7625 event.namespace = namespaces.join( "." );
7626 event.rnamespace = event.namespace ?
7627 new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
7628 null;
7629
7630 // Clean up the event in case it is being reused
7631 event.result = undefined;
7632 if ( !event.target ) {
7633 event.target = elem;
7634 }
7635
7636 // Clone any incoming data and prepend the event, creating the handler arg list
7637 data = data == null ?
7638 [ event ] :
7639 jQuery.makeArray( data, [ event ] );
7640
7641 // Allow special events to draw outside the lines
7642 special = jQuery.event.special[ type ] || {};
7643 if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
7644 return;
7645 }
7646
7647 // Determine event propagation path in advance, per W3C events spec (#9951)
7648 // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
7649 if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {
7650
7651 bubbleType = special.delegateType || type;
7652 if ( !rfocusMorph.test( bubbleType + type ) ) {
7653 cur = cur.parentNode;
7654 }
7655 for ( ; cur; cur = cur.parentNode ) {
7656 eventPath.push( cur );
7657 tmp = cur;
7658 }
7659
7660 // Only add window if we got to document (e.g., not plain obj or detached DOM)
7661 if ( tmp === ( elem.ownerDocument || document ) ) {
7662 eventPath.push( tmp.defaultView || tmp.parentWindow || window );
7663 }
7664 }
7665
7666 // Fire handlers on the event path
7667 i = 0;
7668 while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
7669 lastElement = cur;
7670 event.type = i > 1 ?
7671 bubbleType :
7672 special.bindType || type;
7673
7674 // jQuery handler
7675 handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] &&
7676 dataPriv.get( cur, "handle" );
7677 if ( handle ) {
7678 handle.apply( cur, data );
7679 }
7680
7681 // Native handler
7682 handle = ontype && cur[ ontype ];
7683 if ( handle && handle.apply && acceptData( cur ) ) {
7684 event.result = handle.apply( cur, data );
7685 if ( event.result === false ) {
7686 event.preventDefault();
7687 }
7688 }
7689 }
7690 event.type = type;
7691
7692 // If nobody prevented the default action, do it now
7693 if ( !onlyHandlers && !event.isDefaultPrevented() ) {
7694
7695 if ( ( !special._default ||
7696 special._default.apply( eventPath.pop(), data ) === false ) &&
7697 acceptData( elem ) ) {
7698
7699 // Call a native DOM method on the target with the same name as the event.
7700 // Don't do default actions on window, that's where global variables be (#6170)
7701 if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {
7702
7703 // Don't re-trigger an onFOO event when we call its FOO() method
7704 tmp = elem[ ontype ];
7705
7706 if ( tmp ) {
7707 elem[ ontype ] = null;
7708 }
7709
7710 // Prevent re-triggering of the same event, since we already bubbled it above
7711 jQuery.event.triggered = type;
7712
7713 if ( event.isPropagationStopped() ) {
7714 lastElement.addEventListener( type, stopPropagationCallback );
7715 }
7716
7717 elem[ type ]();
7718
7719 if ( event.isPropagationStopped() ) {
7720 lastElement.removeEventListener( type, stopPropagationCallback );
7721 }
7722
7723 jQuery.event.triggered = undefined;
7724
7725 if ( tmp ) {
7726 elem[ ontype ] = tmp;
7727 }
7728 }
7729 }
7730 }
7731
7732 return event.result;
7733 },
7734
7735 // Piggyback on a donor event to simulate a different one
7736 // Used only for `focus(in | out)` events
7737 simulate: function( type, elem, event ) {
7738 var e = jQuery.extend(
7739 new jQuery.Event(),
7740 event,
7741 {
7742 type: type,
7743 isSimulated: true
7744 }
7745 );
7746
7747 jQuery.event.trigger( e, null, elem );
7748 }
7749
7750} );
7751
7752jQuery.fn.extend( {
7753
7754 trigger: function( type, data ) {
7755 return this.each( function() {
7756 jQuery.event.trigger( type, data, this );
7757 } );
7758 },
7759 triggerHandler: function( type, data ) {
7760 var elem = this[ 0 ];
7761 if ( elem ) {
7762 return jQuery.event.trigger( type, data, elem, true );
7763 }
7764 }
7765} );
7766
7767
7768// Support: Firefox <=44
7769// Firefox doesn't have focus(in | out) events
7770// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
7771//
7772// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
7773// focus(in | out) events fire after focus & blur events,
7774// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
7775// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
7776if ( !support.focusin ) {
7777 jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
7778
7779 // Attach a single capturing handler on the document while someone wants focusin/focusout
7780 var handler = function( event ) {
7781 jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );
7782 };
7783
7784 jQuery.event.special[ fix ] = {
7785 setup: function() {
7786 var doc = this.ownerDocument || this,
7787 attaches = dataPriv.access( doc, fix );
7788
7789 if ( !attaches ) {
7790 doc.addEventListener( orig, handler, true );
7791 }
7792 dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
7793 },
7794 teardown: function() {
7795 var doc = this.ownerDocument || this,
7796 attaches = dataPriv.access( doc, fix ) - 1;
7797
7798 if ( !attaches ) {
7799 doc.removeEventListener( orig, handler, true );
7800 dataPriv.remove( doc, fix );
7801
7802 } else {
7803 dataPriv.access( doc, fix, attaches );
7804 }
7805 }
7806 };
7807 } );
7808}
7809
7810
7811var
7812 rbracket = /\[\]$/,
7813 rCRLF = /\r?\n/g,
7814 rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
7815 rsubmittable = /^(?:input|select|textarea|keygen)/i;
7816
7817function buildParams( prefix, obj, traditional, add ) {
7818 var name;
7819
7820 if ( Array.isArray( obj ) ) {
7821
7822 // Serialize array item.
7823 jQuery.each( obj, function( i, v ) {
7824 if ( traditional || rbracket.test( prefix ) ) {
7825
7826 // Treat each array item as a scalar.
7827 add( prefix, v );
7828
7829 } else {
7830
7831 // Item is non-scalar (array or object), encode its numeric index.
7832 buildParams(
7833 prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
7834 v,
7835 traditional,
7836 add
7837 );
7838 }
7839 } );
7840
7841 } else if ( !traditional && toType( obj ) === "object" ) {
7842
7843 // Serialize object item.
7844 for ( name in obj ) {
7845 buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
7846 }
7847
7848 } else {
7849
7850 // Serialize scalar item.
7851 add( prefix, obj );
7852 }
7853}
7854
7855// Serialize an array of form elements or a set of
7856// key/values into a query string
7857jQuery.param = function( a, traditional ) {
7858 var prefix,
7859 s = [],
7860 add = function( key, valueOrFunction ) {
7861
7862 // If value is a function, invoke it and use its return value
7863 var value = isFunction( valueOrFunction ) ?
7864 valueOrFunction() :
7865 valueOrFunction;
7866
7867 s[ s.length ] = encodeURIComponent( key ) + "=" +
7868 encodeURIComponent( value == null ? "" : value );
7869 };
7870
7871 if ( a == null ) {
7872 return "";
7873 }
7874
7875 // If an array was passed in, assume that it is an array of form elements.
7876 if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
7877
7878 // Serialize the form elements
7879 jQuery.each( a, function() {
7880 add( this.name, this.value );
7881 } );
7882
7883 } else {
7884
7885 // If traditional, encode the "old" way (the way 1.3.2 or older
7886 // did it), otherwise encode params recursively.
7887 for ( prefix in a ) {
7888 buildParams( prefix, a[ prefix ], traditional, add );
7889 }
7890 }
7891
7892 // Return the resulting serialization
7893 return s.join( "&" );
7894};
7895
7896jQuery.fn.extend( {
7897 serialize: function() {
7898 return jQuery.param( this.serializeArray() );
7899 },
7900 serializeArray: function() {
7901 return this.map( function() {
7902
7903 // Can add propHook for "elements" to filter or add form elements
7904 var elements = jQuery.prop( this, "elements" );
7905 return elements ? jQuery.makeArray( elements ) : this;
7906 } )
7907 .filter( function() {
7908 var type = this.type;
7909
7910 // Use .is( ":disabled" ) so that fieldset[disabled] works
7911 return this.name && !jQuery( this ).is( ":disabled" ) &&
7912 rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
7913 ( this.checked || !rcheckableType.test( type ) );
7914 } )
7915 .map( function( i, elem ) {
7916 var val = jQuery( this ).val();
7917
7918 if ( val == null ) {
7919 return null;
7920 }
7921
7922 if ( Array.isArray( val ) ) {
7923 return jQuery.map( val, function( val ) {
7924 return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
7925 } );
7926 }
7927
7928 return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
7929 } ).get();
7930 }
7931} );
7932
7933
7934jQuery.fn.extend( {
7935 wrapAll: function( html ) {
7936 var wrap;
7937
7938 if ( this[ 0 ] ) {
7939 if ( isFunction( html ) ) {
7940 html = html.call( this[ 0 ] );
7941 }
7942
7943 // The elements to wrap the target around
7944 wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
7945
7946 if ( this[ 0 ].parentNode ) {
7947 wrap.insertBefore( this[ 0 ] );
7948 }
7949
7950 wrap.map( function() {
7951 var elem = this;
7952
7953 while ( elem.firstElementChild ) {
7954 elem = elem.firstElementChild;
7955 }
7956
7957 return elem;
7958 } ).append( this );
7959 }
7960
7961 return this;
7962 },
7963
7964 wrapInner: function( html ) {
7965 if ( isFunction( html ) ) {
7966 return this.each( function( i ) {
7967 jQuery( this ).wrapInner( html.call( this, i ) );
7968 } );
7969 }
7970
7971 return this.each( function() {
7972 var self = jQuery( this ),
7973 contents = self.contents();
7974
7975 if ( contents.length ) {
7976 contents.wrapAll( html );
7977
7978 } else {
7979 self.append( html );
7980 }
7981 } );
7982 },
7983
7984 wrap: function( html ) {
7985 var htmlIsFunction = isFunction( html );
7986
7987 return this.each( function( i ) {
7988 jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );
7989 } );
7990 },
7991
7992 unwrap: function( selector ) {
7993 this.parent( selector ).not( "body" ).each( function() {
7994 jQuery( this ).replaceWith( this.childNodes );
7995 } );
7996 return this;
7997 }
7998} );
7999
8000
8001jQuery.expr.pseudos.hidden = function( elem ) {
8002 return !jQuery.expr.pseudos.visible( elem );
8003};
8004jQuery.expr.pseudos.visible = function( elem ) {
8005 return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
8006};
8007
8008
8009
8010
8011// Support: Safari 8 only
8012// In Safari 8 documents created via document.implementation.createHTMLDocument
8013// collapse sibling forms: the second one becomes a child of the first one.
8014// Because of that, this security measure has to be disabled in Safari 8.
8015// https://bugs.webkit.org/show_bug.cgi?id=137337
8016support.createHTMLDocument = ( function() {
8017 var body = document.implementation.createHTMLDocument( "" ).body;
8018 body.innerHTML = "<form></form><form></form>";
8019 return body.childNodes.length === 2;
8020} )();
8021
8022
8023// Argument "data" should be string of html
8024// context (optional): If specified, the fragment will be created in this context,
8025// defaults to document
8026// keepScripts (optional): If true, will include scripts passed in the html string
8027jQuery.parseHTML = function( data, context, keepScripts ) {
8028 if ( typeof data !== "string" ) {
8029 return [];
8030 }
8031 if ( typeof context === "boolean" ) {
8032 keepScripts = context;
8033 context = false;
8034 }
8035
8036 var base, parsed, scripts;
8037
8038 if ( !context ) {
8039
8040 // Stop scripts or inline event handlers from being executed immediately
8041 // by using document.implementation
8042 if ( support.createHTMLDocument ) {
8043 context = document.implementation.createHTMLDocument( "" );
8044
8045 // Set the base href for the created document
8046 // so any parsed elements with URLs
8047 // are based on the document's URL (gh-2965)
8048 base = context.createElement( "base" );
8049 base.href = document.location.href;
8050 context.head.appendChild( base );
8051 } else {
8052 context = document;
8053 }
8054 }
8055
8056 parsed = rsingleTag.exec( data );
8057 scripts = !keepScripts && [];
8058
8059 // Single tag
8060 if ( parsed ) {
8061 return [ context.createElement( parsed[ 1 ] ) ];
8062 }
8063
8064 parsed = buildFragment( [ data ], context, scripts );
8065
8066 if ( scripts && scripts.length ) {
8067 jQuery( scripts ).remove();
8068 }
8069
8070 return jQuery.merge( [], parsed.childNodes );
8071};
8072
8073
8074jQuery.offset = {
8075 setOffset: function( elem, options, i ) {
8076 var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
8077 position = jQuery.css( elem, "position" ),
8078 curElem = jQuery( elem ),
8079 props = {};
8080
8081 // Set position first, in-case top/left are set even on static elem
8082 if ( position === "static" ) {
8083 elem.style.position = "relative";
8084 }
8085
8086 curOffset = curElem.offset();
8087 curCSSTop = jQuery.css( elem, "top" );
8088 curCSSLeft = jQuery.css( elem, "left" );
8089 calculatePosition = ( position === "absolute" || position === "fixed" ) &&
8090 ( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;
8091
8092 // Need to be able to calculate position if either
8093 // top or left is auto and position is either absolute or fixed
8094 if ( calculatePosition ) {
8095 curPosition = curElem.position();
8096 curTop = curPosition.top;
8097 curLeft = curPosition.left;
8098
8099 } else {
8100 curTop = parseFloat( curCSSTop ) || 0;
8101 curLeft = parseFloat( curCSSLeft ) || 0;
8102 }
8103
8104 if ( isFunction( options ) ) {
8105
8106 // Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
8107 options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
8108 }
8109
8110 if ( options.top != null ) {
8111 props.top = ( options.top - curOffset.top ) + curTop;
8112 }
8113 if ( options.left != null ) {
8114 props.left = ( options.left - curOffset.left ) + curLeft;
8115 }
8116
8117 if ( "using" in options ) {
8118 options.using.call( elem, props );
8119
8120 } else {
8121 curElem.css( props );
8122 }
8123 }
8124};
8125
8126jQuery.fn.extend( {
8127
8128 // offset() relates an element's border box to the document origin
8129 offset: function( options ) {
8130
8131 // Preserve chaining for setter
8132 if ( arguments.length ) {
8133 return options === undefined ?
8134 this :
8135 this.each( function( i ) {
8136 jQuery.offset.setOffset( this, options, i );
8137 } );
8138 }
8139
8140 var rect, win,
8141 elem = this[ 0 ];
8142
8143 if ( !elem ) {
8144 return;
8145 }
8146
8147 // Return zeros for disconnected and hidden (display: none) elements (gh-2310)
8148 // Support: IE <=11 only
8149 // Running getBoundingClientRect on a
8150 // disconnected node in IE throws an error
8151 if ( !elem.getClientRects().length ) {
8152 return { top: 0, left: 0 };
8153 }
8154
8155 // Get document-relative position by adding viewport scroll to viewport-relative gBCR
8156 rect = elem.getBoundingClientRect();
8157 win = elem.ownerDocument.defaultView;
8158 return {
8159 top: rect.top + win.pageYOffset,
8160 left: rect.left + win.pageXOffset
8161 };
8162 },
8163
8164 // position() relates an element's margin box to its offset parent's padding box
8165 // This corresponds to the behavior of CSS absolute positioning
8166 position: function() {
8167 if ( !this[ 0 ] ) {
8168 return;
8169 }
8170
8171 var offsetParent, offset, doc,
8172 elem = this[ 0 ],
8173 parentOffset = { top: 0, left: 0 };
8174
8175 // position:fixed elements are offset from the viewport, which itself always has zero offset
8176 if ( jQuery.css( elem, "position" ) === "fixed" ) {
8177
8178 // Assume position:fixed implies availability of getBoundingClientRect
8179 offset = elem.getBoundingClientRect();
8180
8181 } else {
8182 offset = this.offset();
8183
8184 // Account for the *real* offset parent, which can be the document or its root element
8185 // when a statically positioned element is identified
8186 doc = elem.ownerDocument;
8187 offsetParent = elem.offsetParent || doc.documentElement;
8188 while ( offsetParent &&
8189 ( offsetParent === doc.body || offsetParent === doc.documentElement ) &&
8190 jQuery.css( offsetParent, "position" ) === "static" ) {
8191
8192 offsetParent = offsetParent.parentNode;
8193 }
8194 if ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {
8195
8196 // Incorporate borders into its offset, since they are outside its content origin
8197 parentOffset = jQuery( offsetParent ).offset();
8198 parentOffset.top += jQuery.css( offsetParent, "borderTopWidth", true );
8199 parentOffset.left += jQuery.css( offsetParent, "borderLeftWidth", true );
8200 }
8201 }
8202
8203 // Subtract parent offsets and element margins
8204 return {
8205 top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
8206 left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
8207 };
8208 },
8209
8210 // This method will return documentElement in the following cases:
8211 // 1) For the element inside the iframe without offsetParent, this method will return
8212 // documentElement of the parent window
8213 // 2) For the hidden or detached element
8214 // 3) For body or html element, i.e. in case of the html node - it will return itself
8215 //
8216 // but those exceptions were never presented as a real life use-cases
8217 // and might be considered as more preferable results.
8218 //
8219 // This logic, however, is not guaranteed and can change at any point in the future
8220 offsetParent: function() {
8221 return this.map( function() {
8222 var offsetParent = this.offsetParent;
8223
8224 while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {
8225 offsetParent = offsetParent.offsetParent;
8226 }
8227
8228 return offsetParent || documentElement;
8229 } );
8230 }
8231} );
8232
8233// Create scrollLeft and scrollTop methods
8234jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
8235 var top = "pageYOffset" === prop;
8236
8237 jQuery.fn[ method ] = function( val ) {
8238 return access( this, function( elem, method, val ) {
8239
8240 // Coalesce documents and windows
8241 var win;
8242 if ( isWindow( elem ) ) {
8243 win = elem;
8244 } else if ( elem.nodeType === 9 ) {
8245 win = elem.defaultView;
8246 }
8247
8248 if ( val === undefined ) {
8249 return win ? win[ prop ] : elem[ method ];
8250 }
8251
8252 if ( win ) {
8253 win.scrollTo(
8254 !top ? val : win.pageXOffset,
8255 top ? val : win.pageYOffset
8256 );
8257
8258 } else {
8259 elem[ method ] = val;
8260 }
8261 }, method, val, arguments.length );
8262 };
8263} );
8264
8265// Support: Safari <=7 - 9.1, Chrome <=37 - 49
8266// Add the top/left cssHooks using jQuery.fn.position
8267// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
8268// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
8269// getComputedStyle returns percent when specified for top/left/bottom/right;
8270// rather than make the css module depend on the offset module, just check for it here
8271jQuery.each( [ "top", "left" ], function( i, prop ) {
8272 jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
8273 function( elem, computed ) {
8274 if ( computed ) {
8275 computed = curCSS( elem, prop );
8276
8277 // If curCSS returns percentage, fallback to offset
8278 return rnumnonpx.test( computed ) ?
8279 jQuery( elem ).position()[ prop ] + "px" :
8280 computed;
8281 }
8282 }
8283 );
8284} );
8285
8286
8287// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
8288jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
8289 jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name },
8290 function( defaultExtra, funcName ) {
8291
8292 // Margin is only for outerHeight, outerWidth
8293 jQuery.fn[ funcName ] = function( margin, value ) {
8294 var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
8295 extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
8296
8297 return access( this, function( elem, type, value ) {
8298 var doc;
8299
8300 if ( isWindow( elem ) ) {
8301
8302 // $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
8303 return funcName.indexOf( "outer" ) === 0 ?
8304 elem[ "inner" + name ] :
8305 elem.document.documentElement[ "client" + name ];
8306 }
8307
8308 // Get document width or height
8309 if ( elem.nodeType === 9 ) {
8310 doc = elem.documentElement;
8311
8312 // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
8313 // whichever is greatest
8314 return Math.max(
8315 elem.body[ "scroll" + name ], doc[ "scroll" + name ],
8316 elem.body[ "offset" + name ], doc[ "offset" + name ],
8317 doc[ "client" + name ]
8318 );
8319 }
8320
8321 return value === undefined ?
8322
8323 // Get width or height on the element, requesting but not forcing parseFloat
8324 jQuery.css( elem, type, extra ) :
8325
8326 // Set width or height on the element
8327 jQuery.style( elem, type, value, extra );
8328 }, type, chainable ? margin : undefined, chainable );
8329 };
8330 } );
8331} );
8332
8333
8334jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
8335 "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
8336 "change select submit keydown keypress keyup contextmenu" ).split( " " ),
8337 function( i, name ) {
8338
8339 // Handle event binding
8340 jQuery.fn[ name ] = function( data, fn ) {
8341 return arguments.length > 0 ?
8342 this.on( name, null, data, fn ) :
8343 this.trigger( name );
8344 };
8345} );
8346
8347jQuery.fn.extend( {
8348 hover: function( fnOver, fnOut ) {
8349 return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
8350 }
8351} );
8352
8353
8354
8355
8356jQuery.fn.extend( {
8357
8358 bind: function( types, data, fn ) {
8359 return this.on( types, null, data, fn );
8360 },
8361 unbind: function( types, fn ) {
8362 return this.off( types, null, fn );
8363 },
8364
8365 delegate: function( selector, types, data, fn ) {
8366 return this.on( types, selector, data, fn );
8367 },
8368 undelegate: function( selector, types, fn ) {
8369
8370 // ( namespace ) or ( selector, types [, fn] )
8371 return arguments.length === 1 ?
8372 this.off( selector, "**" ) :
8373 this.off( types, selector || "**", fn );
8374 }
8375} );
8376
8377// Bind a function to a context, optionally partially applying any
8378// arguments.
8379// jQuery.proxy is deprecated to promote standards (specifically Function#bind)
8380// However, it is not slated for removal any time soon
8381jQuery.proxy = function( fn, context ) {
8382 var tmp, args, proxy;
8383
8384 if ( typeof context === "string" ) {
8385 tmp = fn[ context ];
8386 context = fn;
8387 fn = tmp;
8388 }
8389
8390 // Quick check to determine if target is callable, in the spec
8391 // this throws a TypeError, but we will just return undefined.
8392 if ( !isFunction( fn ) ) {
8393 return undefined;
8394 }
8395
8396 // Simulated bind
8397 args = slice.call( arguments, 2 );
8398 proxy = function() {
8399 return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
8400 };
8401
8402 // Set the guid of unique handler to the same of original handler, so it can be removed
8403 proxy.guid = fn.guid = fn.guid || jQuery.guid++;
8404
8405 return proxy;
8406};
8407
8408jQuery.holdReady = function( hold ) {
8409 if ( hold ) {
8410 jQuery.readyWait++;
8411 } else {
8412 jQuery.ready( true );
8413 }
8414};
8415jQuery.isArray = Array.isArray;
8416jQuery.parseJSON = JSON.parse;
8417jQuery.nodeName = nodeName;
8418jQuery.isFunction = isFunction;
8419jQuery.isWindow = isWindow;
8420jQuery.camelCase = camelCase;
8421jQuery.type = toType;
8422
8423jQuery.now = Date.now;
8424
8425jQuery.isNumeric = function( obj ) {
8426
8427 // As of jQuery 3.0, isNumeric is limited to
8428 // strings and numbers (primitives or objects)
8429 // that can be coerced to finite numbers (gh-2662)
8430 var type = jQuery.type( obj );
8431 return ( type === "number" || type === "string" ) &&
8432
8433 // parseFloat NaNs numeric-cast false positives ("")
8434 // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
8435 // subtraction forces infinities to NaN
8436 !isNaN( obj - parseFloat( obj ) );
8437};
8438
8439
8440
8441
8442// Register as a named AMD module, since jQuery can be concatenated with other
8443// files that may use define, but not via a proper concatenation script that
8444// understands anonymous AMD modules. A named AMD is safest and most robust
8445// way to register. Lowercase jquery is used because AMD module names are
8446// derived from file names, and jQuery is normally delivered in a lowercase
8447// file name. Do this after creating the global so that if an AMD module wants
8448// to call noConflict to hide this version of jQuery, it will work.
8449
8450// Note that for maximum portability, libraries that are not jQuery should
8451// declare themselves as anonymous modules, and avoid setting a global if an
8452// AMD loader is present. jQuery is a special case. For more information, see
8453// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
8454
8455if ( typeof define === "function" && define.amd ) {
8456 define( "jquery", [], function() {
8457 return jQuery;
8458 } );
8459}
8460
8461
8462
8463
8464var
8465
8466 // Map over jQuery in case of overwrite
8467 _jQuery = window.jQuery,
8468
8469 // Map over the $ in case of overwrite
8470 _$ = window.$;
8471
8472jQuery.noConflict = function( deep ) {
8473 if ( window.$ === jQuery ) {
8474 window.$ = _$;
8475 }
8476
8477 if ( deep && window.jQuery === jQuery ) {
8478 window.jQuery = _jQuery;
8479 }
8480
8481 return jQuery;
8482};
8483
8484// Expose jQuery and $ identifiers, even in AMD
8485// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
8486// and CommonJS for browser emulators (#13566)
8487if ( !noGlobal ) {
8488 window.jQuery = window.$ = jQuery;
8489}
8490
8491
8492
8493
8494return jQuery;
8495} );
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery-3.4.1.slim.min.js b/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery-3.4.1.slim.min.js
new file mode 100644
index 00000000..af151cfe
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery-3.4.1.slim.min.js
@@ -0,0 +1,2 @@
1/*! jQuery v3.4.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector | (c) JS Foundation and other contributors | jquery.org/license */
2!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(g,e){"use strict";var t=[],v=g.document,r=Object.getPrototypeOf,s=t.slice,y=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,m=n.hasOwnProperty,a=m.toString,l=a.call(Object),b={},x=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},w=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function C(e,t,n){var r,i,o=(n=n||v).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function T(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector",E=function(e,t){return new E.fn.init(e,t)},d=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function p(e){var t=!!e&&"length"in e&&e.length,n=T(e);return!x(e)&&!w(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}E.fn=E.prototype={jquery:f,constructor:E,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=E.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return E.each(this,e)},map:function(n){return this.pushStack(E.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},E.extend=E.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||x(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(E.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||E.isPlainObject(n)?n:{},i=!1,a[t]=E.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},E.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=m.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){C(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(d,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?E.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return y.apply([],a)},guid:1,support:b}),"function"==typeof Symbol&&(E.fn[Symbol.iterator]=t[Symbol.iterator]),E.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,p,x,o,i,h,f,g,w,u,l,C,T,a,E,v,s,c,y,N="sizzle"+1*new Date,m=n.document,A=0,r=0,d=ue(),b=ue(),k=ue(),S=ue(),D=function(e,t){return e===t&&(l=!0),0},L={}.hasOwnProperty,t=[],j=t.pop,q=t.push,O=t.push,P=t.slice,H=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},I="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",R="[\\x20\\t\\r\\n\\f]",B="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",M="\\["+R+"*("+B+")(?:"+R+"*([*^$|!~]?=)"+R+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+B+"))|)"+R+"*\\]",W=":("+B+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+M+")*)|.*)\\)|)",$=new RegExp(R+"+","g"),F=new RegExp("^"+R+"+|((?:^|[^\\\\])(?:\\\\.)*)"+R+"+$","g"),z=new RegExp("^"+R+"*,"+R+"*"),_=new RegExp("^"+R+"*([>+~]|"+R+")"+R+"*"),U=new RegExp(R+"|>"),V=new RegExp(W),X=new RegExp("^"+B+"$"),Q={ID:new RegExp("^#("+B+")"),CLASS:new RegExp("^\\.("+B+")"),TAG:new RegExp("^("+B+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+R+"*(even|odd|(([+-]|)(\\d*)n|)"+R+"*(?:([+-]|)"+R+"*(\\d+)|))"+R+"*\\)|)","i"),bool:new RegExp("^(?:"+I+")$","i"),needsContext:new RegExp("^"+R+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+R+"*((?:-\\d)?\\d*)"+R+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,G=/^(?:input|select|textarea|button)$/i,K=/^h\d$/i,J=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+R+"?|("+R+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){C()},ae=xe(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{O.apply(t=P.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){O={apply:t.length?function(e,t){q.apply(e,P.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,d=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==d&&9!==d&&11!==d)return n;if(!r&&((e?e.ownerDocument||e:m)!==T&&C(e),e=e||T,E)){if(11!==d&&(u=Z.exec(t)))if(i=u[1]){if(9===d){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return O.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&p.getElementsByClassName&&e.getElementsByClassName)return O.apply(n,e.getElementsByClassName(i)),n}if(p.qsa&&!S[t+" "]&&(!v||!v.test(t))&&(1!==d||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===d&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=N),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+be(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return O.apply(n,f.querySelectorAll(c)),n}catch(e){S(t,!0)}finally{s===N&&e.removeAttribute("id")}}}return g(t.replace(F,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>x.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[N]=!0,e}function ce(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)x.attrHandle[n[r]]=t}function de(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function pe(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in p=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},C=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==T&&9===r.nodeType&&r.documentElement&&(a=(T=r).documentElement,E=!i(T),m!==T&&(n=T.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),p.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),p.getElementsByTagName=ce(function(e){return e.appendChild(T.createComment("")),!e.getElementsByTagName("*").length}),p.getElementsByClassName=J.test(T.getElementsByClassName),p.getById=ce(function(e){return a.appendChild(e).id=N,!T.getElementsByName||!T.getElementsByName(N).length}),p.getById?(x.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},x.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(x.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},x.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),x.find.TAG=p.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):p.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},x.find.CLASS=p.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(p.qsa=J.test(T.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+N+"'></a><select id='"+N+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+R+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+R+"*(?:value|"+I+")"),e.querySelectorAll("[id~="+N+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+N+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=T.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+R+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(p.matchesSelector=J.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){p.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",W)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=J.test(a.compareDocumentPosition),y=t||J.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!p.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument===m&&y(m,e)?-1:t===T||t.ownerDocument===m&&y(m,t)?1:u?H(u,e)-H(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===T?-1:t===T?1:i?-1:o?1:u?H(u,e)-H(u,t):0;if(i===o)return de(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?de(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),T},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==T&&C(e),p.matchesSelector&&E&&!S[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||p.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){S(t,!0)}return 0<se(t,T,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==T&&C(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==T&&C(e);var n=x.attrHandle[t.toLowerCase()],r=n&&L.call(x.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:p.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!p.detectDuplicates,u=!p.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(x=se.selectors={cacheLength:50,createPseudo:le,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&V.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=d[e+" "];return t||(t=new RegExp("(^|"+R+")"+e+"("+R+"|$)"))&&d(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace($," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),b="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=b&&e.nodeName.toLowerCase(),d=!n&&!b,p=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(b?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&d){p=(s=(r=(i=(o=(a=c)[N]||(a[N]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===A&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(p=s=0)||u.pop())if(1===a.nodeType&&++p&&a===e){i[h]=[A,s,p];break}}else if(d&&(p=s=(r=(i=(o=(a=e)[N]||(a[N]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===A&&r[1]),!1===p)while(a=++s&&a&&a[l]||(p=s=0)||u.pop())if((b?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++p&&(d&&((i=(o=a[N]||(a[N]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[A,p]),a===e))break;return(p-=v)===g||p%g==0&&0<=p/g}}},PSEUDO:function(e,o){var t,a=x.pseudos[e]||x.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[N]?a(o):1<a.length?(t=[e,e,"",o],x.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=H(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(F,"$1"));return s[N]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return X.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===T.activeElement&&(!T.hasFocus||T.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!x.pseudos.empty(e)},header:function(e){return K.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=x.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})x.pseudos[e]=pe(e);for(e in{submit:!0,reset:!0})x.pseudos[e]=he(e);function me(){}function be(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function xe(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,d=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[A,d];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[N]||(e[N]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===A&&r[1]===d)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Ce(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Te(p,h,g,v,y,e){return v&&!v[N]&&(v=Te(v)),y&&!y[N]&&(y=Te(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!p||!e&&h?c:Ce(c,s,p,n,r),d=g?y||(e?p:l||v)?[]:t:f;if(g&&g(f,d,n,r),v){i=Ce(d,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(d[u[o]]=!(f[u[o]]=a))}if(e){if(y||p){if(y){i=[],o=d.length;while(o--)(a=d[o])&&i.push(f[o]=a);y(null,d=[],i,r)}o=d.length;while(o--)(a=d[o])&&-1<(i=y?H(e,a):s[o])&&(e[i]=!(t[i]=a))}}else d=Ce(d===t?d.splice(l,d.length):d),y?y(null,t,d,r):O.apply(t,d)})}function Ee(e){for(var i,t,n,r=e.length,o=x.relative[e[0].type],a=o||x.relative[" "],s=o?1:0,u=xe(function(e){return e===i},a,!0),l=xe(function(e){return-1<H(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=x.relative[e[s].type])c=[xe(we(c),t)];else{if((t=x.filter[e[s].type].apply(null,e[s].matches))[N]){for(n=++s;n<r;n++)if(x.relative[e[n].type])break;return Te(1<s&&we(c),1<s&&be(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(F,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&be(e))}c.push(t)}return we(c)}return me.prototype=x.filters=x.pseudos,x.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=b[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=x.preFilter;while(a){for(o in n&&!(r=z.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=_.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(F," ")}),a=a.slice(n.length)),x.filter)!(r=Q[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):b(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,b,r,i=[],o=[],a=k[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[N]?i.push(a):o.push(a);(a=k(e,(v=o,m=0<(y=i).length,b=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],d=w,p=e||b&&x.find.TAG("*",i),h=A+=null==d?1:Math.random()||.1,g=p.length;for(i&&(w=t===T||t||i);l!==g&&null!=(o=p[l]);l++){if(b&&o){a=0,t||o.ownerDocument===T||(C(o),n=!E);while(s=v[a++])if(s(o,t||T,n)){r.push(o);break}i&&(A=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=j.call(r));f=Ce(f)}O.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(A=h,w=d),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&x.relative[o[1].type]){if(!(t=(x.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=Q.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],x.relative[s=a.type])break;if((u=x.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&be(o)))return O.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},p.sortStable=N.split("").sort(D).join("")===N,p.detectDuplicates=!!l,C(),p.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(T.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),p.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(I,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(g);E.find=h,E.expr=h.selectors,E.expr[":"]=E.expr.pseudos,E.uniqueSort=E.unique=h.uniqueSort,E.text=h.getText,E.isXMLDoc=h.isXML,E.contains=h.contains,E.escapeSelector=h.escape;var N=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&E(e).is(n))break;r.push(e)}return r},A=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=E.expr.match.needsContext;function S(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function L(e,n,r){return x(n)?E.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?E.grep(e,function(e){return e===n!==r}):"string"!=typeof n?E.grep(e,function(e){return-1<i.call(n,e)!==r}):E.filter(n,e,r)}E.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?E.find.matchesSelector(r,e)?[r]:[]:E.find.matches(e,E.grep(t,function(e){return 1===e.nodeType}))},E.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(E(e).filter(function(){for(t=0;t<r;t++)if(E.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)E.find(e,i[t],n);return 1<r?E.uniqueSort(n):n},filter:function(e){return this.pushStack(L(this,e||[],!1))},not:function(e){return this.pushStack(L(this,e||[],!0))},is:function(e){return!!L(this,"string"==typeof e&&k.test(e)?E(e):e||[],!1).length}});var j,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(E.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof E?t[0]:t,E.merge(this,E.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:v,!0)),D.test(r[1])&&E.isPlainObject(t))for(r in t)x(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=v.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):x(e)?void 0!==n.ready?n.ready(e):e(E):E.makeArray(e,this)}).prototype=E.fn,j=E(v);var O=/^(?:parents|prev(?:Until|All))/,P={children:!0,contents:!0,next:!0,prev:!0};function H(e,t){while((e=e[t])&&1!==e.nodeType);return e}E.fn.extend({has:function(e){var t=E(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(E.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&E(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&E.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?E.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(E(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(E.uniqueSort(E.merge(this.get(),E(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),E.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return N(e,"parentNode")},parentsUntil:function(e,t,n){return N(e,"parentNode",n)},next:function(e){return H(e,"nextSibling")},prev:function(e){return H(e,"previousSibling")},nextAll:function(e){return N(e,"nextSibling")},prevAll:function(e){return N(e,"previousSibling")},nextUntil:function(e,t,n){return N(e,"nextSibling",n)},prevUntil:function(e,t,n){return N(e,"previousSibling",n)},siblings:function(e){return A((e.parentNode||{}).firstChild,e)},children:function(e){return A(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(S(e,"template")&&(e=e.content||e),E.merge([],e.childNodes))}},function(r,i){E.fn[r]=function(e,t){var n=E.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=E.filter(t,n)),1<this.length&&(P[r]||E.uniqueSort(n),O.test(r)&&n.reverse()),this.pushStack(n)}});var I=/[^\x20\t\r\n\f]+/g;function R(e){return e}function B(e){throw e}function M(e,t,n,r){var i;try{e&&x(i=e.promise)?i.call(e).done(t).fail(n):e&&x(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}E.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},E.each(e.match(I)||[],function(e,t){n[t]=!0}),n):E.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){E.each(e,function(e,t){x(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==T(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return E.each(arguments,function(e,t){var n;while(-1<(n=E.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<E.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},E.extend({Deferred:function(e){var o=[["notify","progress",E.Callbacks("memory"),E.Callbacks("memory"),2],["resolve","done",E.Callbacks("once memory"),E.Callbacks("once memory"),0,"resolved"],["reject","fail",E.Callbacks("once memory"),E.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return E.Deferred(function(r){E.each(o,function(e,t){var n=x(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&x(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,x(t)?s?t.call(e,l(u,o,R,s),l(u,o,B,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,B,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){E.Deferred.exceptionHook&&E.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==B&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(E.Deferred.getStackHook&&(t.stackTrace=E.Deferred.getStackHook()),g.setTimeout(t))}}return E.Deferred(function(e){o[0][3].add(l(0,e,x(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,x(t)?t:R)),o[2][3].add(l(0,e,x(n)?n:B))}).promise()},promise:function(e){return null!=e?E.extend(e,a):a}},s={};return E.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=E.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(M(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||x(i[t]&&i[t].then)))return o.then();while(t--)M(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;E.Deferred.exceptionHook=function(e,t){g.console&&g.console.warn&&e&&W.test(e.name)&&g.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},E.readyException=function(e){g.setTimeout(function(){throw e})};var $=E.Deferred();function F(){v.removeEventListener("DOMContentLoaded",F),g.removeEventListener("load",F),E.ready()}E.fn.ready=function(e){return $.then(e)["catch"](function(e){E.readyException(e)}),this},E.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--E.readyWait:E.isReady)||(E.isReady=!0)!==e&&0<--E.readyWait||$.resolveWith(v,[E])}}),E.ready.then=$.then,"complete"===v.readyState||"loading"!==v.readyState&&!v.documentElement.doScroll?g.setTimeout(E.ready):(v.addEventListener("DOMContentLoaded",F),g.addEventListener("load",F));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===T(n))for(s in i=!0,n)z(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,x(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(E(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,U=/-([a-z])/g;function V(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(U,V)}var Q=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=E.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},Q(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(I)||[]).length;while(n--)delete r[t[n]]}(void 0===t||E.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!E.isEmptyObject(t)}};var G=new Y,K=new Y,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}K.set(e,t,n)}else n=void 0;return n}E.extend({hasData:function(e){return K.hasData(e)||G.hasData(e)},data:function(e,t,n){return K.access(e,t,n)},removeData:function(e,t){K.remove(e,t)},_data:function(e,t,n){return G.access(e,t,n)},_removeData:function(e,t){G.remove(e,t)}}),E.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=K.get(o),1===o.nodeType&&!G.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),ee(o,r,i[r]));G.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){K.set(this,n)}):z(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=K.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){K.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),E.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=G.get(e,t),n&&(!r||Array.isArray(n)?r=G.access(e,t,E.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=E.queue(e,t),r=n.length,i=n.shift(),o=E._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){E.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return G.get(e,n)||G.access(e,n,{empty:E.Callbacks("once memory").add(function(){G.remove(e,[t+"queue",n])})})}}),E.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?E.queue(this[0],t):void 0===n?this:this.each(function(){var e=E.queue(this,t,n);E._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&E.dequeue(this,t)})},dequeue:function(e){return this.each(function(){E.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=E.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=G.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=v.documentElement,oe=function(e){return E.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return E.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===E.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};var le={};function ce(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=G.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=le[s])||(o=a.body.appendChild(a.createElement(s)),u=E.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),le[s]=u)))):"none"!==n&&(l[c]="none",G.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}E.fn.extend({show:function(){return ce(this,!0)},hide:function(){return ce(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?E(this).show():E(this).hide()})}});var fe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,pe=/^$|^module$|\/(?:java|ecma)script/i,he={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ge(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&S(e,t)?E.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n<r;n++)G.set(e[n],"globalEval",!t||G.get(t[n],"globalEval"))}he.optgroup=he.option,he.tbody=he.tfoot=he.colgroup=he.caption=he.thead,he.th=he.td;var ye,me,be=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),d=[],p=0,h=e.length;p<h;p++)if((o=e[p])||0===o)if("object"===T(o))E.merge(d,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=he[s]||he._default,a.innerHTML=u[1]+E.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;E.merge(d,a.childNodes),(a=f.firstChild).textContent=""}else d.push(t.createTextNode(o));f.textContent="",p=0;while(o=d[p++])if(r&&-1<E.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ge(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])pe.test(o.type||"")&&n.push(o)}return f}ye=v.createDocumentFragment().appendChild(v.createElement("div")),(me=v.createElement("input")).setAttribute("type","radio"),me.setAttribute("checked","checked"),me.setAttribute("name","t"),ye.appendChild(me),b.checkClone=ye.cloneNode(!0).cloneNode(!0).lastChild.checked,ye.innerHTML="<textarea>x</textarea>",b.noCloneChecked=!!ye.cloneNode(!0).lastChild.defaultValue;var we=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Te=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function Ne(){return!1}function Ae(e,t){return e===function(){try{return v.activeElement}catch(e){}}()==("focus"===t)}function ke(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)ke(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Ne;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return E().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=E.guid++)),e.each(function(){E.event.add(this,t,i,r,n)})}function Se(e,i,o){o?(G.set(e,i,!1),E.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=G.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(E.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),G.set(this,i,r),t=o(this,i),this[i](),r!==(n=G.get(this,i))||t?G.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(G.set(this,i,{value:E.event.trigger(E.extend(r[0],E.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===G.get(e,i)&&E.event.add(e,i,Ee)}E.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,d,p,h,g,v=G.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&E.find.matchesSelector(ie,i),n.guid||(n.guid=E.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof E&&E.event.triggered!==e.type?E.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(I)||[""]).length;while(l--)p=g=(s=Te.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),p&&(f=E.event.special[p]||{},p=(i?f.delegateType:f.bindType)||p,f=E.event.special[p]||{},c=E.extend({type:p,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&E.expr.match.needsContext.test(i),namespace:h.join(".")},o),(d=u[p])||((d=u[p]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(p,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?d.splice(d.delegateCount++,0,c):d.push(c),E.event.global[p]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,d,p,h,g,v=G.hasData(e)&&G.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(I)||[""]).length;while(l--)if(p=g=(s=Te.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),p){f=E.event.special[p]||{},d=u[p=(r?f.delegateType:f.bindType)||p]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=d.length;while(o--)c=d[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(d.splice(o,1),c.selector&&d.delegateCount--,f.remove&&f.remove.call(e,c));a&&!d.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||E.removeEvent(e,p,v.handle),delete u[p])}else for(p in u)E.event.remove(e,p+t[l],n,r,!0);E.isEmptyObject(u)&&G.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=E.event.fix(e),u=new Array(arguments.length),l=(G.get(this,"events")||{})[s.type]||[],c=E.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=E.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((E.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<E(i,this).index(l):E.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(E.Event.prototype,t,{enumerable:!0,configurable:!0,get:x(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[E.expando]?e:new E.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return fe.test(t.type)&&t.click&&S(t,"input")&&Se(t,"click",Ee),!1},trigger:function(e){var t=this||e;return fe.test(t.type)&&t.click&&S(t,"input")&&Se(t,"click"),!0},_default:function(e){var t=e.target;return fe.test(t.type)&&t.click&&S(t,"input")&&G.get(t,"click")||S(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},E.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},E.Event=function(e,t){if(!(this instanceof E.Event))return new E.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ee:Ne,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&E.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[E.expando]=!0},E.Event.prototype={constructor:E.Event,isDefaultPrevented:Ne,isPropagationStopped:Ne,isImmediatePropagationStopped:Ne,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ee,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ee,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ee,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},E.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&we.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},E.event.addProp),E.each({focus:"focusin",blur:"focusout"},function(e,t){E.event.special[e]={setup:function(){return Se(this,e,Ae),!1},trigger:function(){return Se(this,e),!0},delegateType:t}}),E.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){E.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||E.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),E.fn.extend({on:function(e,t,n,r){return ke(this,e,t,n,r)},one:function(e,t,n,r){return ke(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,E(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Ne),this.each(function(){E.event.remove(this,e,n,t)})}});var De=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Le=/<script|<style|<link/i,je=/checked\s*(?:[^=]|=\s*.checked.)/i,qe=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return S(e,"table")&&S(11!==t.nodeType?t:t.firstChild,"tr")&&E(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Ie(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(G.hasData(e)&&(o=G.access(e),a=G.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)E.event.add(t,i,l[i][n]);K.hasData(e)&&(s=K.access(e),u=E.extend({},s),K.set(t,u))}}function Re(n,r,i,o){r=y.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,d=f-1,p=r[0],h=x(p);if(h||1<f&&"string"==typeof p&&!b.checkClone&&je.test(p))return n.each(function(e){var t=n.eq(e);h&&(r[0]=p.call(this,e,t.html())),Re(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=E.map(ge(e,"script"),Pe)).length;c<f;c++)u=e,c!==d&&(u=E.clone(u,!0,!0),s&&E.merge(a,ge(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,E.map(a,He),c=0;c<s;c++)u=a[c],pe.test(u.type||"")&&!G.access(u,"globalEval")&&E.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?E._evalUrl&&!u.noModule&&E._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):C(u.textContent.replace(qe,""),u,l))}return n}function Be(e,t,n){for(var r,i=t?E.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||E.cleanData(ge(r)),r.parentNode&&(n&&oe(r)&&ve(ge(r,"script")),r.parentNode.removeChild(r));return e}E.extend({htmlPrefilter:function(e){return e.replace(De,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(b.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||E.isXMLDoc(e)))for(a=ge(c),r=0,i=(o=ge(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&fe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ge(e),a=a||ge(c),r=0,i=o.length;r<i;r++)Ie(o[r],a[r]);else Ie(e,c);return 0<(a=ge(c,"script")).length&&ve(a,!f&&ge(e,"script")),c},cleanData:function(e){for(var t,n,r,i=E.event.special,o=0;void 0!==(n=e[o]);o++)if(Q(n)){if(t=n[G.expando]){if(t.events)for(r in t.events)i[r]?E.event.remove(n,r):E.removeEvent(n,r,t.handle);n[G.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),E.fn.extend({detach:function(e){return Be(this,e,!0)},remove:function(e){return Be(this,e)},text:function(e){return z(this,function(e){return void 0===e?E.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(E.cleanData(ge(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return E.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Le.test(e)&&!he[(de.exec(e)||["",""])[1].toLowerCase()]){e=E.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(E.cleanData(ge(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Re(this,arguments,function(e){var t=this.parentNode;E.inArray(this,n)<0&&(E.cleanData(ge(this)),t&&t.replaceChild(e,this))},n)}}),E.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){E.fn[e]=function(e){for(var t,n=[],r=E(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),E(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Me=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),We=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=g),t.getComputedStyle(e)},$e=new RegExp(re.join("|"),"i");function Fe(e,t,n){var r,i,o,a,s=e.style;return(n=n||We(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=E.style(e,t)),!b.pixelBoxStyles()&&Me.test(a)&&$e.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=g.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=v.createElement("div"),u=v.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",b.clearCloneStyle="content-box"===u.style.backgroundClip,E.extend(b,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var _e=["Webkit","Moz","ms"],Ue=v.createElement("div").style,Ve={};function Xe(e){var t=E.cssProps[e]||Ve[e];return t||(e in Ue?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=_e.length;while(n--)if((e=_e[n]+t)in Ue)return e}(e)||e)}var Qe,Ye,Ge=/^(none|table(?!-c[ea]).+)/,Ke=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ze={letterSpacing:"0",fontWeight:"400"};function et(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function tt(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=E.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=E.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=E.css(e,"border"+re[a]+"Width",!0,i))):(u+=E.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=E.css(e,"border"+re[a]+"Width",!0,i):s+=E.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function nt(e,t,n){var r=We(e),i=(!b.boxSizingReliable()||n)&&"border-box"===E.css(e,"boxSizing",!1,r),o=i,a=Fe(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Me.test(a)){if(!n)return a;a="auto"}return(!b.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===E.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===E.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+tt(e,t,n||(i?"border":"content"),o,r,a)+"px"}E.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Ke.test(t),l=e.style;if(u||(t=Xe(s)),a=E.cssHooks[t]||E.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=function(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return E.css(e,t,"")},u=s(),l=n&&n[3]||(E.cssNumber[t]?"":"px"),c=e.nodeType&&(E.cssNumber[t]||"px"!==l&&+u)&&ne.exec(E.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)E.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,E.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(E.cssNumber[s]?"":"px")),b.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Ke.test(t)||(t=Xe(s)),(a=E.cssHooks[t]||E.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ze&&(i=Ze[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),E.each(["height","width"],function(e,u){E.cssHooks[u]={get:function(e,t,n){if(t)return!Ge.test(E.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?nt(e,u,n):ue(e,Je,function(){return nt(e,u,n)})},set:function(e,t,n){var r,i=We(e),o=!b.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===E.css(e,"boxSizing",!1,i),s=n?tt(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-tt(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=E.css(e,u)),et(0,t,s)}}}),E.cssHooks.marginLeft=ze(b.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),E.each({margin:"",padding:"",border:"Width"},function(i,o){E.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(E.cssHooks[i+o].set=et)}),E.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=We(e),i=t.length;a<i;a++)o[t[a]]=E.css(e,t[a],!1,r);return o}return void 0!==n?E.style(e,t,n):E.css(e,t)},e,t,1<arguments.length)}}),E.fn.delay=function(r,e){return r=E.fx&&E.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=g.setTimeout(e,r);t.stop=function(){g.clearTimeout(n)}})},Qe=v.createElement("input"),Ye=v.createElement("select").appendChild(v.createElement("option")),Qe.type="checkbox",b.checkOn=""!==Qe.value,b.optSelected=Ye.selected,(Qe=v.createElement("input")).value="t",Qe.type="radio",b.radioValue="t"===Qe.value;var rt,it=E.expr.attrHandle;E.fn.extend({attr:function(e,t){return z(this,E.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){E.removeAttr(this,e)})}}),E.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?E.prop(e,t,n):(1===o&&E.isXMLDoc(e)||(i=E.attrHooks[t.toLowerCase()]||(E.expr.match.bool.test(t)?rt:void 0)),void 0!==n?null===n?void E.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=E.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!b.radioValue&&"radio"===t&&S(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(I);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),rt={set:function(e,t,n){return!1===t?E.removeAttr(e,n):e.setAttribute(n,n),n}},E.each(E.expr.match.bool.source.match(/\w+/g),function(e,t){var a=it[t]||E.find.attr;it[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=it[o],it[o]=r,r=null!=a(e,t,n)?o:null,it[o]=i),r}});var ot=/^(?:input|select|textarea|button)$/i,at=/^(?:a|area)$/i;function st(e){return(e.match(I)||[]).join(" ")}function ut(e){return e.getAttribute&&e.getAttribute("class")||""}function lt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(I)||[]}E.fn.extend({prop:function(e,t){return z(this,E.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[E.propFix[e]||e]})}}),E.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&E.isXMLDoc(e)||(t=E.propFix[t]||t,i=E.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=E.find.attr(e,"tabindex");return t?parseInt(t,10):ot.test(e.nodeName)||at.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),b.optSelected||(E.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),E.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){E.propFix[this.toLowerCase()]=this}),E.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(x(t))return this.each(function(e){E(this).addClass(t.call(this,e,ut(this)))});if((e=lt(t)).length)while(n=this[u++])if(i=ut(n),r=1===n.nodeType&&" "+st(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=st(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(x(t))return this.each(function(e){E(this).removeClass(t.call(this,e,ut(this)))});if(!arguments.length)return this.attr("class","");if((e=lt(t)).length)while(n=this[u++])if(i=ut(n),r=1===n.nodeType&&" "+st(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=st(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):x(i)?this.each(function(e){E(this).toggleClass(i.call(this,e,ut(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=E(this),r=lt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=ut(this))&&G.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":G.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+st(ut(n))+" ").indexOf(t))return!0;return!1}});var ct=/\r/g;E.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=x(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,E(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=E.map(t,function(e){return null==e?"":e+""})),(r=E.valHooks[this.type]||E.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=E.valHooks[t.type]||E.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(ct,""):null==e?"":e:void 0}}),E.extend({valHooks:{option:{get:function(e){var t=E.find.attr(e,"value");return null!=t?t:st(E.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!S(n.parentNode,"optgroup"))){if(t=E(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=E.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<E.inArray(E.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),E.each(["radio","checkbox"],function(){E.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<E.inArray(E(e).val(),t)}},b.checkOn||(E.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),b.focusin="onfocusin"in g;var ft=/^(?:focusinfocus|focusoutblur)$/,dt=function(e){e.stopPropagation()};E.extend(E.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,d=[n||v],p=m.call(e,"type")?e.type:e,h=m.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||v,3!==n.nodeType&&8!==n.nodeType&&!ft.test(p+E.event.triggered)&&(-1<p.indexOf(".")&&(p=(h=p.split(".")).shift(),h.sort()),u=p.indexOf(":")<0&&"on"+p,(e=e[E.expando]?e:new E.Event(p,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:E.makeArray(t,[e]),c=E.event.special[p]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!w(n)){for(s=c.delegateType||p,ft.test(s+p)||(o=o.parentNode);o;o=o.parentNode)d.push(o),a=o;a===(n.ownerDocument||v)&&d.push(a.defaultView||a.parentWindow||g)}i=0;while((o=d[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||p,(l=(G.get(o,"events")||{})[e.type]&&G.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&Q(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=p,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(d.pop(),t)||!Q(n)||u&&x(n[p])&&!w(n)&&((a=n[u])&&(n[u]=null),E.event.triggered=p,e.isPropagationStopped()&&f.addEventListener(p,dt),n[p](),e.isPropagationStopped()&&f.removeEventListener(p,dt),E.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=E.extend(new E.Event,n,{type:e,isSimulated:!0});E.event.trigger(r,null,t)}}),E.fn.extend({trigger:function(e,t){return this.each(function(){E.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return E.event.trigger(e,t,n,!0)}}),b.focusin||E.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){E.event.simulate(r,e.target,E.event.fix(e))};E.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=G.access(e,r);t||e.addEventListener(n,i,!0),G.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=G.access(e,r)-1;t?G.access(e,r,t):(e.removeEventListener(n,i,!0),G.remove(e,r))}}});var pt,ht=/\[\]$/,gt=/\r?\n/g,vt=/^(?:submit|button|image|reset|file)$/i,yt=/^(?:input|select|textarea|keygen)/i;function mt(n,e,r,i){var t;if(Array.isArray(e))E.each(e,function(e,t){r||ht.test(n)?i(n,t):mt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==T(e))i(n,e);else for(t in e)mt(n+"["+t+"]",e[t],r,i)}E.param=function(e,t){var n,r=[],i=function(e,t){var n=x(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!E.isPlainObject(e))E.each(e,function(){i(this.name,this.value)});else for(n in e)mt(n,e[n],t,i);return r.join("&")},E.fn.extend({serialize:function(){return E.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=E.prop(this,"elements");return e?E.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!E(this).is(":disabled")&&yt.test(this.nodeName)&&!vt.test(e)&&(this.checked||!fe.test(e))}).map(function(e,t){var n=E(this).val();return null==n?null:Array.isArray(n)?E.map(n,function(e){return{name:t.name,value:e.replace(gt,"\r\n")}}):{name:t.name,value:n.replace(gt,"\r\n")}}).get()}}),E.fn.extend({wrapAll:function(e){var t;return this[0]&&(x(e)&&(e=e.call(this[0])),t=E(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return x(n)?this.each(function(e){E(this).wrapInner(n.call(this,e))}):this.each(function(){var e=E(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=x(t);return this.each(function(e){E(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){E(this).replaceWith(this.childNodes)}),this}}),E.expr.pseudos.hidden=function(e){return!E.expr.pseudos.visible(e)},E.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},b.createHTMLDocument=((pt=v.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===pt.childNodes.length),E.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(b.createHTMLDocument?((r=(t=v.implementation.createHTMLDocument("")).createElement("base")).href=v.location.href,t.head.appendChild(r)):t=v),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&E(o).remove(),E.merge([],i.childNodes)));var r,i,o},E.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=E.css(e,"position"),c=E(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=E.css(e,"top"),u=E.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),x(t)&&(t=t.call(e,n,E.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},E.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){E.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===E.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===E.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=E(e).offset()).top+=E.css(e,"borderTopWidth",!0),i.left+=E.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-E.css(r,"marginTop",!0),left:t.left-i.left-E.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===E.css(e,"position"))e=e.offsetParent;return e||ie})}}),E.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;E.fn[t]=function(e){return z(this,function(e,t,n){var r;if(w(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),E.each(["top","left"],function(e,n){E.cssHooks[n]=ze(b.pixelPosition,function(e,t){if(t)return t=Fe(e,n),Me.test(t)?E(e).position()[n]+"px":t})}),E.each({Height:"height",Width:"width"},function(a,s){E.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){E.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return z(this,function(e,t,n){var r;return w(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?E.css(e,t,i):E.style(e,t,n,i)},s,n?e:void 0,n)}})}),E.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){E.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),E.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),E.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),E.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),x(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||E.guid++,i},E.holdReady=function(e){e?E.readyWait++:E.ready(!0)},E.isArray=Array.isArray,E.parseJSON=JSON.parse,E.nodeName=S,E.isFunction=x,E.isWindow=w,E.camelCase=X,E.type=T,E.now=Date.now,E.isNumeric=function(e){var t=E.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return E});var bt=g.jQuery,xt=g.$;return E.noConflict=function(e){return g.$===E&&(g.$=xt),e&&g.jQuery===E&&(g.jQuery=bt),E},e||(g.jQuery=g.$=E),E});
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery-3.4.1.slim.min.map b/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery-3.4.1.slim.min.map
new file mode 100644
index 00000000..55ccb0fe
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery-3.4.1.slim.min.map
@@ -0,0 +1 @@
{"version":3,"sources":["jquery-3.4.1.slim.js"],"names":["global","factory","module","exports","document","w","Error","window","this","noGlobal","arr","getProto","Object","getPrototypeOf","slice","concat","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","fnToString","ObjectFunctionString","call","support","isFunction","obj","nodeType","isWindow","preservedScriptAttributes","type","src","nonce","noModule","DOMEval","code","node","doc","i","val","script","createElement","text","getAttribute","setAttribute","head","appendChild","parentNode","removeChild","toType","version","jQuery","selector","context","fn","init","rtrim","isArrayLike","length","prototype","jquery","constructor","toArray","get","num","pushStack","elems","ret","merge","prevObject","each","callback","map","elem","apply","arguments","first","eq","last","len","j","end","sort","splice","extend","options","name","copy","copyIsArray","clone","target","deep","isPlainObject","Array","isArray","undefined","expando","Math","random","replace","isReady","error","msg","noop","proto","Ctor","isEmptyObject","globalEval","trim","makeArray","results","inArray","second","grep","invert","matches","callbackExpect","arg","value","guid","Symbol","iterator","split","toLowerCase","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","Date","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","a","b","pop","push_native","list","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","inDisabledFieldset","addCombinator","disabled","nodeName","dir","next","childNodes","e","els","seed","m","nid","match","groups","newSelector","newContext","ownerDocument","exec","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","toSelector","join","testContext","querySelectorAll","qsaError","removeAttribute","keys","cache","key","cacheLength","shift","markFunction","assert","el","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","documentElement","hasCompare","subWindow","defaultView","top","addEventListener","attachEvent","className","createComment","getById","getElementsByName","filter","attrId","find","getAttributeNode","tag","tmp","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","attr","specified","escape","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","start","parent","useCache","lastChild","uniqueID","pseudo","args","setFilters","idx","matched","not","matcher","unmatched","has","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","checked","selected","selectedIndex","empty","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","tokens","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","is","siblings","n","rneedsContext","rsingleTag","winnow","qualifier","self","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","prev","sibling","targets","l","closest","index","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","Identity","v","Thrower","ex","adoptValue","resolve","reject","noValue","method","promise","fail","then","Callbacks","object","flag","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","remove","disable","lock","fireWith","Deferred","func","tuples","state","always","deferred","catch","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","that","mightThrow","TypeError","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","setTimeout","stateString","when","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","stack","console","warn","message","readyException","readyList","completed","removeEventListener","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","rmsPrefix","rdashAlpha","fcamelCase","all","letter","toUpperCase","camelCase","string","acceptData","owner","Data","uid","defineProperty","configurable","set","data","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","JSON","parse","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","style","display","css","swap","old","defaultDisplayMap","showHide","show","values","body","hide","toggle","rcheckableType","rtagName","rscriptType","wrapMap","option","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","optgroup","tbody","tfoot","colgroup","caption","th","div","buildFragment","scripts","selection","ignored","wrap","attached","fragment","createDocumentFragment","nodes","htmlPrefilter","createTextNode","checkClone","cloneNode","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","expectSync","err","safeActiveElement","on","types","one","origFn","event","off","leverageNative","notAsync","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","preventDefault","trigger","Event","handleObjIn","eventHandle","events","t","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","enumerable","originalEvent","writable","load","noBubble","click","beforeunload","returnValue","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","now","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","char","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","blur","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rxhtmlTag","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","domManip","collection","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","getStyles","opener","getComputedStyle","rboxStyle","curCSS","computed","width","minWidth","maxWidth","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","position","scrollboxSizeVal","offsetWidth","measure","round","parseFloat","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","opt","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","max","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","ceil","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","cssHooks","opacity","cssNumber","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","order","orphans","widows","zIndex","zoom","origName","isCustomProp","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","initialInUnit","adjustCSS","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","left","margin","padding","border","prefix","suffix","expand","expanded","parts","delay","time","fx","speeds","timeout","clearTimeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","getter","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","propHooks","tabindex","parseInt","for","class","addClass","classes","curValue","clazz","finalValue","removeClass","toggleClass","stateVal","isValidValue","classNames","hasClass","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","s","valueOrFunction","encodeURIComponent","serialize","serializeArray","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","hidden","visible","offsetHeight","createHTMLDocument","implementation","keepScripts","parsed","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollLeft","scrollTop","scrollTo","Height","Width","","defaultExtra","funcName","hover","fnOver","fnOut","bind","unbind","delegate","undelegate","proxy","holdReady","hold","parseJSON","isNumeric","isNaN","define","amd","_jQuery","_$","$","noConflict"],"mappings":"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","file":"jquery-3.4.1.slim.min.js"} \ No newline at end of file
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery.validate-vsdoc.js b/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery.validate-vsdoc.js
new file mode 100644
index 00000000..aa8b91be
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery.validate-vsdoc.js
@@ -0,0 +1,1288 @@
1/*
2* This file has been commented to support Visual Studio Intellisense.
3* You should not use this file at runtime inside the browser--it is only
4* intended to be used only for design-time IntelliSense. Please use the
5* standard jQuery library for all production use.
6*
7* Comment version: 1.17.0
8*/
9
10/*
11* Note: While Microsoft is not the author of this file, Microsoft is
12* offering you a license subject to the terms of the Microsoft Software
13* License Terms for Microsoft ASP.NET Model View Controller 3.
14* Microsoft reserves all other rights. The notices below are provided
15* for informational purposes only and are not the license terms under
16* which Microsoft distributed this file.
17*
18* jQuery Validation Plugin - v1.17.0 - 12/5/2016
19* https://github.com/jzaefferer/jquery-validation
20* Copyright (c) 2013 Jörn Zaefferer; Licensed MIT
21*
22*/
23
24(function($) {
25
26$.extend($.fn, {
27 // http://docs.jquery.com/Plugins/Validation/validate
28 validate: function( options ) {
29 /// <summary>
30 /// Validates the selected form. This method sets up event handlers for submit, focus,
31 /// keyup, blur and click to trigger validation of the entire form or individual
32 /// elements. Each one can be disabled, see the onxxx options (onsubmit, onfocusout,
33 /// onkeyup, onclick). focusInvalid focuses elements when submitting a invalid form.
34 /// </summary>
35 /// <param name="options" type="Object">
36 /// A set of key/value pairs that configure the validate. All options are optional.
37 /// </param>
38
39 // if nothing is selected, return nothing; can't chain anyway
40 if (!this.length) {
41 options && options.debug && window.console && console.warn( "nothing selected, can't validate, returning nothing" );
42 return;
43 }
44
45 // check if a validator for this form was already created
46 var validator = $.data(this[0], 'validator');
47 if ( validator ) {
48 return validator;
49 }
50
51 validator = new $.validator( options, this[0] );
52 $.data(this[0], 'validator', validator);
53
54 if ( validator.settings.onsubmit ) {
55
56 // allow suppresing validation by adding a cancel class to the submit button
57 this.find("input, button").filter(".cancel").click(function() {
58 validator.cancelSubmit = true;
59 });
60
61 // when a submitHandler is used, capture the submitting button
62 if (validator.settings.submitHandler) {
63 this.find("input, button").filter(":submit").click(function() {
64 validator.submitButton = this;
65 });
66 }
67
68 // validate the form on submit
69 this.submit( function( event ) {
70 if ( validator.settings.debug )
71 // prevent form submit to be able to see console output
72 event.preventDefault();
73
74 function handle() {
75 if ( validator.settings.submitHandler ) {
76 if (validator.submitButton) {
77 // insert a hidden input as a replacement for the missing submit button
78 var hidden = $("<input type='hidden'/>").attr("name", validator.submitButton.name).val(validator.submitButton.value).appendTo(validator.currentForm);
79 }
80 validator.settings.submitHandler.call( validator, validator.currentForm );
81 if (validator.submitButton) {
82 // and clean up afterwards; thanks to no-block-scope, hidden can be referenced
83 hidden.remove();
84 }
85 return false;
86 }
87 return true;
88 }
89
90 // prevent submit for invalid forms or custom submit handlers
91 if ( validator.cancelSubmit ) {
92 validator.cancelSubmit = false;
93 return handle();
94 }
95 if ( validator.form() ) {
96 if ( validator.pendingRequest ) {
97 validator.formSubmitted = true;
98 return false;
99 }
100 return handle();
101 } else {
102 validator.focusInvalid();
103 return false;
104 }
105 });
106 }
107
108 return validator;
109 },
110 // http://docs.jquery.com/Plugins/Validation/valid
111 valid: function() {
112 /// <summary>
113 /// Checks if the selected form is valid or if all selected elements are valid.
114 /// validate() needs to be called on the form before checking it using this method.
115 /// </summary>
116 /// <returns type="Boolean" />
117
118 if ( $(this[0]).is('form')) {
119 return this.validate().form();
120 } else {
121 var valid = true;
122 var validator = $(this[0].form).validate();
123 this.each(function() {
124 valid &= validator.element(this);
125 });
126 return valid;
127 }
128 },
129 // attributes: space seperated list of attributes to retrieve and remove
130 removeAttrs: function(attributes) {
131 /// <summary>
132 /// Remove the specified attributes from the first matched element and return them.
133 /// </summary>
134 /// <param name="attributes" type="String">
135 /// A space-seperated list of attribute names to remove.
136 /// </param>
137
138 var result = {},
139 $element = this;
140 $.each(attributes.split(/\s/), function(index, value) {
141 result[value] = $element.attr(value);
142 $element.removeAttr(value);
143 });
144 return result;
145 },
146 // http://docs.jquery.com/Plugins/Validation/rules
147 rules: function(command, argument) {
148 /// <summary>
149 /// Return the validations rules for the first selected element.
150 /// </summary>
151 /// <param name="command" type="String">
152 /// Can be either "add" or "remove".
153 /// </param>
154 /// <param name="argument" type="">
155 /// A list of rules to add or remove.
156 /// </param>
157
158 var element = this[0];
159
160 if (command) {
161 var settings = $.data(element.form, 'validator').settings;
162 var staticRules = settings.rules;
163 var existingRules = $.validator.staticRules(element);
164 switch(command) {
165 case "add":
166 $.extend(existingRules, $.validator.normalizeRule(argument));
167 staticRules[element.name] = existingRules;
168 if (argument.messages)
169 settings.messages[element.name] = $.extend( settings.messages[element.name], argument.messages );
170 break;
171 case "remove":
172 if (!argument) {
173 delete staticRules[element.name];
174 return existingRules;
175 }
176 var filtered = {};
177 $.each(argument.split(/\s/), function(index, method) {
178 filtered[method] = existingRules[method];
179 delete existingRules[method];
180 });
181 return filtered;
182 }
183 }
184
185 var data = $.validator.normalizeRules(
186 $.extend(
187 {},
188 $.validator.metadataRules(element),
189 $.validator.classRules(element),
190 $.validator.attributeRules(element),
191 $.validator.staticRules(element)
192 ), element);
193
194 // make sure required is at front
195 if (data.required) {
196 var param = data.required;
197 delete data.required;
198 data = $.extend({required: param}, data);
199 }
200
201 return data;
202 }
203});
204
205// Custom selectors
206$.extend($.expr[":"], {
207 // http://docs.jquery.com/Plugins/Validation/blank
208 blank: function(a) {return !$.trim("" + a.value);},
209 // http://docs.jquery.com/Plugins/Validation/filled
210 filled: function(a) {return !!$.trim("" + a.value);},
211 // http://docs.jquery.com/Plugins/Validation/unchecked
212 unchecked: function(a) {return !a.checked;}
213});
214
215// constructor for validator
216$.validator = function( options, form ) {
217 this.settings = $.extend( true, {}, $.validator.defaults, options );
218 this.currentForm = form;
219 this.init();
220};
221
222$.validator.format = function(source, params) {
223 /// <summary>
224 /// Replaces {n} placeholders with arguments.
225 /// One or more arguments can be passed, in addition to the string template itself, to insert
226 /// into the string.
227 /// </summary>
228 /// <param name="source" type="String">
229 /// The string to format.
230 /// </param>
231 /// <param name="params" type="String">
232 /// The first argument to insert, or an array of Strings to insert
233 /// </param>
234 /// <returns type="String" />
235
236 if ( arguments.length == 1 )
237 return function() {
238 var args = $.makeArray(arguments);
239 args.unshift(source);
240 return $.validator.format.apply( this, args );
241 };
242 if ( arguments.length > 2 && params.constructor != Array ) {
243 params = $.makeArray(arguments).slice(1);
244 }
245 if ( params.constructor != Array ) {
246 params = [ params ];
247 }
248 $.each(params, function(i, n) {
249 source = source.replace(new RegExp("\\{" + i + "\\}", "g"), n);
250 });
251 return source;
252};
253
254$.extend($.validator, {
255
256 defaults: {
257 messages: {},
258 groups: {},
259 rules: {},
260 errorClass: "error",
261 validClass: "valid",
262 errorElement: "label",
263 focusInvalid: true,
264 errorContainer: $( [] ),
265 errorLabelContainer: $( [] ),
266 onsubmit: true,
267 ignore: [],
268 ignoreTitle: false,
269 onfocusin: function(element) {
270 this.lastActive = element;
271
272 // hide error label and remove error class on focus if enabled
273 if ( this.settings.focusCleanup && !this.blockFocusCleanup ) {
274 this.settings.unhighlight && this.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );
275 this.addWrapper(this.errorsFor(element)).hide();
276 }
277 },
278 onfocusout: function(element) {
279 if ( !this.checkable(element) && (element.name in this.submitted || !this.optional(element)) ) {
280 this.element(element);
281 }
282 },
283 onkeyup: function(element) {
284 if ( element.name in this.submitted || element == this.lastElement ) {
285 this.element(element);
286 }
287 },
288 onclick: function(element) {
289 // click on selects, radiobuttons and checkboxes
290 if ( element.name in this.submitted )
291 this.element(element);
292 // or option elements, check parent select in that case
293 else if (element.parentNode.name in this.submitted)
294 this.element(element.parentNode);
295 },
296 highlight: function( element, errorClass, validClass ) {
297 $(element).addClass(errorClass).removeClass(validClass);
298 },
299 unhighlight: function( element, errorClass, validClass ) {
300 $(element).removeClass(errorClass).addClass(validClass);
301 }
302 },
303
304 // http://docs.jquery.com/Plugins/Validation/Validator/setDefaults
305 setDefaults: function(settings) {
306 /// <summary>
307 /// Modify default settings for validation.
308 /// Accepts everything that Plugins/Validation/validate accepts.
309 /// </summary>
310 /// <param name="settings" type="Options">
311 /// Options to set as default.
312 /// </param>
313
314 $.extend( $.validator.defaults, settings );
315 },
316
317 messages: {
318 required: "This field is required.",
319 remote: "Please fix this field.",
320 email: "Please enter a valid email address.",
321 url: "Please enter a valid URL.",
322 date: "Please enter a valid date.",
323 dateISO: "Please enter a valid date (ISO).",
324 number: "Please enter a valid number.",
325 digits: "Please enter only digits.",
326 creditcard: "Please enter a valid credit card number.",
327 equalTo: "Please enter the same value again.",
328 accept: "Please enter a value with a valid extension.",
329 maxlength: $.validator.format("Please enter no more than {0} characters."),
330 minlength: $.validator.format("Please enter at least {0} characters."),
331 rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."),
332 range: $.validator.format("Please enter a value between {0} and {1}."),
333 max: $.validator.format("Please enter a value less than or equal to {0}."),
334 min: $.validator.format("Please enter a value greater than or equal to {0}.")
335 },
336
337 autoCreateRanges: false,
338
339 prototype: {
340
341 init: function() {
342 this.labelContainer = $(this.settings.errorLabelContainer);
343 this.errorContext = this.labelContainer.length && this.labelContainer || $(this.currentForm);
344 this.containers = $(this.settings.errorContainer).add( this.settings.errorLabelContainer );
345 this.submitted = {};
346 this.valueCache = {};
347 this.pendingRequest = 0;
348 this.pending = {};
349 this.invalid = {};
350 this.reset();
351
352 var groups = (this.groups = {});
353 $.each(this.settings.groups, function(key, value) {
354 $.each(value.split(/\s/), function(index, name) {
355 groups[name] = key;
356 });
357 });
358 var rules = this.settings.rules;
359 $.each(rules, function(key, value) {
360 rules[key] = $.validator.normalizeRule(value);
361 });
362
363 function delegate(event) {
364 var validator = $.data(this[0].form, "validator"),
365 eventType = "on" + event.type.replace(/^validate/, "");
366 validator.settings[eventType] && validator.settings[eventType].call(validator, this[0] );
367 }
368 $(this.currentForm)
369 .validateDelegate(":text, :password, :file, select, textarea", "focusin focusout keyup", delegate)
370 .validateDelegate(":radio, :checkbox, select, option", "click", delegate);
371
372 if (this.settings.invalidHandler)
373 $(this.currentForm).bind("invalid-form.validate", this.settings.invalidHandler);
374 },
375
376 // http://docs.jquery.com/Plugins/Validation/Validator/form
377 form: function() {
378 /// <summary>
379 /// Validates the form, returns true if it is valid, false otherwise.
380 /// This behaves as a normal submit event, but returns the result.
381 /// </summary>
382 /// <returns type="Boolean" />
383
384 this.checkForm();
385 $.extend(this.submitted, this.errorMap);
386 this.invalid = $.extend({}, this.errorMap);
387 if (!this.valid())
388 $(this.currentForm).triggerHandler("invalid-form", [this]);
389 this.showErrors();
390 return this.valid();
391 },
392
393 checkForm: function() {
394 this.prepareForm();
395 for ( var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++ ) {
396 this.check( elements[i] );
397 }
398 return this.valid();
399 },
400
401 // http://docs.jquery.com/Plugins/Validation/Validator/element
402 element: function( element ) {
403 /// <summary>
404 /// Validates a single element, returns true if it is valid, false otherwise.
405 /// This behaves as validation on blur or keyup, but returns the result.
406 /// </summary>
407 /// <param name="element" type="Selector">
408 /// An element to validate, must be inside the validated form.
409 /// </param>
410 /// <returns type="Boolean" />
411
412 element = this.clean( element );
413 this.lastElement = element;
414 this.prepareElement( element );
415 this.currentElements = $(element);
416 var result = this.check( element );
417 if ( result ) {
418 delete this.invalid[element.name];
419 } else {
420 this.invalid[element.name] = true;
421 }
422 if ( !this.numberOfInvalids() ) {
423 // Hide error containers on last error
424 this.toHide = this.toHide.add( this.containers );
425 }
426 this.showErrors();
427 return result;
428 },
429
430 // http://docs.jquery.com/Plugins/Validation/Validator/showErrors
431 showErrors: function(errors) {
432 /// <summary>
433 /// Show the specified messages.
434 /// Keys have to refer to the names of elements, values are displayed for those elements, using the configured error placement.
435 /// </summary>
436 /// <param name="errors" type="Object">
437 /// One or more key/value pairs of input names and messages.
438 /// </param>
439
440 if(errors) {
441 // add items to error list and map
442 $.extend( this.errorMap, errors );
443 this.errorList = [];
444 for ( var name in errors ) {
445 this.errorList.push({
446 message: errors[name],
447 element: this.findByName(name)[0]
448 });
449 }
450 // remove items from success list
451 this.successList = $.grep( this.successList, function(element) {
452 return !(element.name in errors);
453 });
454 }
455 this.settings.showErrors
456 ? this.settings.showErrors.call( this, this.errorMap, this.errorList )
457 : this.defaultShowErrors();
458 },
459
460 // http://docs.jquery.com/Plugins/Validation/Validator/resetForm
461 resetForm: function() {
462 /// <summary>
463 /// Resets the controlled form.
464 /// Resets input fields to their original value (requires form plugin), removes classes
465 /// indicating invalid elements and hides error messages.
466 /// </summary>
467
468 if ( $.fn.resetForm )
469 $( this.currentForm ).resetForm();
470 this.submitted = {};
471 this.prepareForm();
472 this.hideErrors();
473 this.elements().removeClass( this.settings.errorClass );
474 },
475
476 numberOfInvalids: function() {
477 /// <summary>
478 /// Returns the number of invalid fields.
479 /// This depends on the internal validator state. It covers all fields only after
480 /// validating the complete form (on submit or via $("form").valid()). After validating
481 /// a single element, only that element is counted. Most useful in combination with the
482 /// invalidHandler-option.
483 /// </summary>
484 /// <returns type="Number" />
485
486 return this.objectLength(this.invalid);
487 },
488
489 objectLength: function( obj ) {
490 var count = 0;
491 for ( var i in obj )
492 count++;
493 return count;
494 },
495
496 hideErrors: function() {
497 this.addWrapper( this.toHide ).hide();
498 },
499
500 valid: function() {
501 return this.size() == 0;
502 },
503
504 size: function() {
505 return this.errorList.length;
506 },
507
508 focusInvalid: function() {
509 if( this.settings.focusInvalid ) {
510 try {
511 $(this.findLastActive() || this.errorList.length && this.errorList[0].element || [])
512 .filter(":visible")
513 .focus()
514 // manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find
515 .trigger("focusin");
516 } catch(e) {
517 // ignore IE throwing errors when focusing hidden elements
518 }
519 }
520 },
521
522 findLastActive: function() {
523 var lastActive = this.lastActive;
524 return lastActive && $.grep(this.errorList, function(n) {
525 return n.element.name == lastActive.name;
526 }).length == 1 && lastActive;
527 },
528
529 elements: function() {
530 var validator = this,
531 rulesCache = {};
532
533 // select all valid inputs inside the form (no submit or reset buttons)
534 // workaround $Query([]).add until http://dev.jquery.com/ticket/2114 is solved
535 return $([]).add(this.currentForm.elements)
536 .filter(":input")
537 .not(":submit, :reset, :image, [disabled]")
538 .not( this.settings.ignore )
539 .filter(function() {
540 !this.name && validator.settings.debug && window.console && console.error( "%o has no name assigned", this);
541
542 // select only the first element for each name, and only those with rules specified
543 if ( this.name in rulesCache || !validator.objectLength($(this).rules()) )
544 return false;
545
546 rulesCache[this.name] = true;
547 return true;
548 });
549 },
550
551 clean: function( selector ) {
552 return $( selector )[0];
553 },
554
555 errors: function() {
556 return $( this.settings.errorElement + "." + this.settings.errorClass, this.errorContext );
557 },
558
559 reset: function() {
560 this.successList = [];
561 this.errorList = [];
562 this.errorMap = {};
563 this.toShow = $([]);
564 this.toHide = $([]);
565 this.currentElements = $([]);
566 },
567
568 prepareForm: function() {
569 this.reset();
570 this.toHide = this.errors().add( this.containers );
571 },
572
573 prepareElement: function( element ) {
574 this.reset();
575 this.toHide = this.errorsFor(element);
576 },
577
578 check: function( element ) {
579 element = this.clean( element );
580
581 // if radio/checkbox, validate first element in group instead
582 if (this.checkable(element)) {
583 element = this.findByName(element.name).not(this.settings.ignore)[0];
584 }
585
586 var rules = $(element).rules();
587 var dependencyMismatch = false;
588 for (var method in rules) {
589 var rule = { method: method, parameters: rules[method] };
590 try {
591 var result = $.validator.methods[method].call( this, element.value.replace(/\r/g, ""), element, rule.parameters );
592
593 // if a method indicates that the field is optional and therefore valid,
594 // don't mark it as valid when there are no other rules
595 if ( result == "dependency-mismatch" ) {
596 dependencyMismatch = true;
597 continue;
598 }
599 dependencyMismatch = false;
600
601 if ( result == "pending" ) {
602 this.toHide = this.toHide.not( this.errorsFor(element) );
603 return;
604 }
605
606 if( !result ) {
607 this.formatAndAdd( element, rule );
608 return false;
609 }
610 } catch(e) {
611 this.settings.debug && window.console && console.log("exception occured when checking element " + element.id
612 + ", check the '" + rule.method + "' method", e);
613 throw e;
614 }
615 }
616 if (dependencyMismatch)
617 return;
618 if ( this.objectLength(rules) )
619 this.successList.push(element);
620 return true;
621 },
622
623 // return the custom message for the given element and validation method
624 // specified in the element's "messages" metadata
625 customMetaMessage: function(element, method) {
626 if (!$.metadata)
627 return;
628
629 var meta = this.settings.meta
630 ? $(element).metadata()[this.settings.meta]
631 : $(element).metadata();
632
633 return meta && meta.messages && meta.messages[method];
634 },
635
636 // return the custom message for the given element name and validation method
637 customMessage: function( name, method ) {
638 var m = this.settings.messages[name];
639 return m && (m.constructor == String
640 ? m
641 : m[method]);
642 },
643
644 // return the first defined argument, allowing empty strings
645 findDefined: function() {
646 for(var i = 0; i < arguments.length; i++) {
647 if (arguments[i] !== undefined)
648 return arguments[i];
649 }
650 return undefined;
651 },
652
653 defaultMessage: function( element, method) {
654 return this.findDefined(
655 this.customMessage( element.name, method ),
656 this.customMetaMessage( element, method ),
657 // title is never undefined, so handle empty string as undefined
658 !this.settings.ignoreTitle && element.title || undefined,
659 $.validator.messages[method],
660 "<strong>Warning: No message defined for " + element.name + "</strong>"
661 );
662 },
663
664 formatAndAdd: function( element, rule ) {
665 var message = this.defaultMessage( element, rule.method ),
666 theregex = /\$?\{(\d+)\}/g;
667 if ( typeof message == "function" ) {
668 message = message.call(this, rule.parameters, element);
669 } else if (theregex.test(message)) {
670 message = jQuery.format(message.replace(theregex, '{$1}'), rule.parameters);
671 }
672 this.errorList.push({
673 message: message,
674 element: element
675 });
676
677 this.errorMap[element.name] = message;
678 this.submitted[element.name] = message;
679 },
680
681 addWrapper: function(toToggle) {
682 if ( this.settings.wrapper )
683 toToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );
684 return toToggle;
685 },
686
687 defaultShowErrors: function() {
688 for ( var i = 0; this.errorList[i]; i++ ) {
689 var error = this.errorList[i];
690 this.settings.highlight && this.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );
691 this.showLabel( error.element, error.message );
692 }
693 if( this.errorList.length ) {
694 this.toShow = this.toShow.add( this.containers );
695 }
696 if (this.settings.success) {
697 for ( var i = 0; this.successList[i]; i++ ) {
698 this.showLabel( this.successList[i] );
699 }
700 }
701 if (this.settings.unhighlight) {
702 for ( var i = 0, elements = this.validElements(); elements[i]; i++ ) {
703 this.settings.unhighlight.call( this, elements[i], this.settings.errorClass, this.settings.validClass );
704 }
705 }
706 this.toHide = this.toHide.not( this.toShow );
707 this.hideErrors();
708 this.addWrapper( this.toShow ).show();
709 },
710
711 validElements: function() {
712 return this.currentElements.not(this.invalidElements());
713 },
714
715 invalidElements: function() {
716 return $(this.errorList).map(function() {
717 return this.element;
718 });
719 },
720
721 showLabel: function(element, message) {
722 var label = this.errorsFor( element );
723 if ( label.length ) {
724 // refresh error/success class
725 label.removeClass().addClass( this.settings.errorClass );
726
727 // check if we have a generated label, replace the message then
728 label.attr("generated") && label.html(message);
729 } else {
730 // create label
731 label = $("<" + this.settings.errorElement + "/>")
732 .attr({"for": this.idOrName(element), generated: true})
733 .addClass(this.settings.errorClass)
734 .html(message || "");
735 if ( this.settings.wrapper ) {
736 // make sure the element is visible, even in IE
737 // actually showing the wrapped element is handled elsewhere
738 label = label.hide().show().wrap("<" + this.settings.wrapper + "/>").parent();
739 }
740 if ( !this.labelContainer.append(label).length )
741 this.settings.errorPlacement
742 ? this.settings.errorPlacement(label, $(element) )
743 : label.insertAfter(element);
744 }
745 if ( !message && this.settings.success ) {
746 label.text("");
747 typeof this.settings.success == "string"
748 ? label.addClass( this.settings.success )
749 : this.settings.success( label );
750 }
751 this.toShow = this.toShow.add(label);
752 },
753
754 errorsFor: function(element) {
755 var name = this.idOrName(element);
756 return this.errors().filter(function() {
757 return $(this).attr('for') == name;
758 });
759 },
760
761 idOrName: function(element) {
762 return this.groups[element.name] || (this.checkable(element) ? element.name : element.id || element.name);
763 },
764
765 checkable: function( element ) {
766 return /radio|checkbox/i.test(element.type);
767 },
768
769 findByName: function( name ) {
770 // select by name and filter by form for performance over form.find("[name=...]")
771 var form = this.currentForm;
772 return $(document.getElementsByName(name)).map(function(index, element) {
773 return element.form == form && element.name == name && element || null;
774 });
775 },
776
777 getLength: function(value, element) {
778 switch( element.nodeName.toLowerCase() ) {
779 case 'select':
780 return $("option:selected", element).length;
781 case 'input':
782 if( this.checkable( element) )
783 return this.findByName(element.name).filter(':checked').length;
784 }
785 return value.length;
786 },
787
788 depend: function(param, element) {
789 return this.dependTypes[typeof param]
790 ? this.dependTypes[typeof param](param, element)
791 : true;
792 },
793
794 dependTypes: {
795 "boolean": function(param, element) {
796 return param;
797 },
798 "string": function(param, element) {
799 return !!$(param, element.form).length;
800 },
801 "function": function(param, element) {
802 return param(element);
803 }
804 },
805
806 optional: function(element) {
807 return !$.validator.methods.required.call(this, $.trim(element.value), element) && "dependency-mismatch";
808 },
809
810 startRequest: function(element) {
811 if (!this.pending[element.name]) {
812 this.pendingRequest++;
813 this.pending[element.name] = true;
814 }
815 },
816
817 stopRequest: function(element, valid) {
818 this.pendingRequest--;
819 // sometimes synchronization fails, make sure pendingRequest is never < 0
820 if (this.pendingRequest < 0)
821 this.pendingRequest = 0;
822 delete this.pending[element.name];
823 if ( valid && this.pendingRequest == 0 && this.formSubmitted && this.form() ) {
824 $(this.currentForm).submit();
825 this.formSubmitted = false;
826 } else if (!valid && this.pendingRequest == 0 && this.formSubmitted) {
827 $(this.currentForm).triggerHandler("invalid-form", [this]);
828 this.formSubmitted = false;
829 }
830 },
831
832 previousValue: function(element) {
833 return $.data(element, "previousValue") || $.data(element, "previousValue", {
834 old: null,
835 valid: true,
836 message: this.defaultMessage( element, "remote" )
837 });
838 }
839
840 },
841
842 classRuleSettings: {
843 required: {required: true},
844 email: {email: true},
845 url: {url: true},
846 date: {date: true},
847 dateISO: {dateISO: true},
848 dateDE: {dateDE: true},
849 number: {number: true},
850 numberDE: {numberDE: true},
851 digits: {digits: true},
852 creditcard: {creditcard: true}
853 },
854
855 addClassRules: function(className, rules) {
856 /// <summary>
857 /// Add a compound class method - useful to refactor common combinations of rules into a single
858 /// class.
859 /// </summary>
860 /// <param name="name" type="String">
861 /// The name of the class rule to add
862 /// </param>
863 /// <param name="rules" type="Options">
864 /// The compound rules
865 /// </param>
866
867 className.constructor == String ?
868 this.classRuleSettings[className] = rules :
869 $.extend(this.classRuleSettings, className);
870 },
871
872 classRules: function(element) {
873 var rules = {};
874 var classes = $(element).attr('class');
875 classes && $.each(classes.split(' '), function() {
876 if (this in $.validator.classRuleSettings) {
877 $.extend(rules, $.validator.classRuleSettings[this]);
878 }
879 });
880 return rules;
881 },
882
883 attributeRules: function(element) {
884 var rules = {};
885 var $element = $(element);
886
887 for (var method in $.validator.methods) {
888 var value = $element.attr(method);
889 if (value) {
890 rules[method] = value;
891 }
892 }
893
894 // maxlength may be returned as -1, 2147483647 (IE) and 524288 (safari) for text inputs
895 if (rules.maxlength && /-1|2147483647|524288/.test(rules.maxlength)) {
896 delete rules.maxlength;
897 }
898
899 return rules;
900 },
901
902 metadataRules: function(element) {
903 if (!$.metadata) return {};
904
905 var meta = $.data(element.form, 'validator').settings.meta;
906 return meta ?
907 $(element).metadata()[meta] :
908 $(element).metadata();
909 },
910
911 staticRules: function(element) {
912 var rules = {};
913 var validator = $.data(element.form, 'validator');
914 if (validator.settings.rules) {
915 rules = $.validator.normalizeRule(validator.settings.rules[element.name]) || {};
916 }
917 return rules;
918 },
919
920 normalizeRules: function(rules, element) {
921 // handle dependency check
922 $.each(rules, function(prop, val) {
923 // ignore rule when param is explicitly false, eg. required:false
924 if (val === false) {
925 delete rules[prop];
926 return;
927 }
928 if (val.param || val.depends) {
929 var keepRule = true;
930 switch (typeof val.depends) {
931 case "string":
932 keepRule = !!$(val.depends, element.form).length;
933 break;
934 case "function":
935 keepRule = val.depends.call(element, element);
936 break;
937 }
938 if (keepRule) {
939 rules[prop] = val.param !== undefined ? val.param : true;
940 } else {
941 delete rules[prop];
942 }
943 }
944 });
945
946 // evaluate parameters
947 $.each(rules, function(rule, parameter) {
948 rules[rule] = $.isFunction(parameter) ? parameter(element) : parameter;
949 });
950
951 // clean number parameters
952 $.each(['minlength', 'maxlength', 'min', 'max'], function() {
953 if (rules[this]) {
954 rules[this] = Number(rules[this]);
955 }
956 });
957 $.each(['rangelength', 'range'], function() {
958 if (rules[this]) {
959 rules[this] = [Number(rules[this][0]), Number(rules[this][1])];
960 }
961 });
962
963 if ($.validator.autoCreateRanges) {
964 // auto-create ranges
965 if (rules.min && rules.max) {
966 rules.range = [rules.min, rules.max];
967 delete rules.min;
968 delete rules.max;
969 }
970 if (rules.minlength && rules.maxlength) {
971 rules.rangelength = [rules.minlength, rules.maxlength];
972 delete rules.minlength;
973 delete rules.maxlength;
974 }
975 }
976
977 // To support custom messages in metadata ignore rule methods titled "messages"
978 if (rules.messages) {
979 delete rules.messages;
980 }
981
982 return rules;
983 },
984
985 // Converts a simple string to a {string: true} rule, e.g., "required" to {required:true}
986 normalizeRule: function(data) {
987 if( typeof data == "string" ) {
988 var transformed = {};
989 $.each(data.split(/\s/), function() {
990 transformed[this] = true;
991 });
992 data = transformed;
993 }
994 return data;
995 },
996
997 // http://docs.jquery.com/Plugins/Validation/Validator/addMethod
998 addMethod: function(name, method, message) {
999 /// <summary>
1000 /// Add a custom validation method. It must consist of a name (must be a legal javascript
1001 /// identifier), a javascript based function and a default string message.
1002 /// </summary>
1003 /// <param name="name" type="String">
1004 /// The name of the method, used to identify and referencing it, must be a valid javascript
1005 /// identifier
1006 /// </param>
1007 /// <param name="method" type="Function">
1008 /// The actual method implementation, returning true if an element is valid
1009 /// </param>
1010 /// <param name="message" type="String" optional="true">
1011 /// (Optional) The default message to display for this method. Can be a function created by
1012 /// jQuery.validator.format(value). When undefined, an already existing message is used
1013 /// (handy for localization), otherwise the field-specific messages have to be defined.
1014 /// </param>
1015
1016 $.validator.methods[name] = method;
1017 $.validator.messages[name] = message != undefined ? message : $.validator.messages[name];
1018 if (method.length < 3) {
1019 $.validator.addClassRules(name, $.validator.normalizeRule(name));
1020 }
1021 },
1022
1023 methods: {
1024
1025 // http://docs.jquery.com/Plugins/Validation/Methods/required
1026 required: function(value, element, param) {
1027 // check if dependency is met
1028 if ( !this.depend(param, element) )
1029 return "dependency-mismatch";
1030 switch( element.nodeName.toLowerCase() ) {
1031 case 'select':
1032 // could be an array for select-multiple or a string, both are fine this way
1033 var val = $(element).val();
1034 return val && val.length > 0;
1035 case 'input':
1036 if ( this.checkable(element) )
1037 return this.getLength(value, element) > 0;
1038 default:
1039 return $.trim(value).length > 0;
1040 }
1041 },
1042
1043 // http://docs.jquery.com/Plugins/Validation/Methods/remote
1044 remote: function(value, element, param) {
1045 if ( this.optional(element) )
1046 return "dependency-mismatch";
1047
1048 var previous = this.previousValue(element);
1049 if (!this.settings.messages[element.name] )
1050 this.settings.messages[element.name] = {};
1051 previous.originalMessage = this.settings.messages[element.name].remote;
1052 this.settings.messages[element.name].remote = previous.message;
1053
1054 param = typeof param == "string" && {url:param} || param;
1055
1056 if ( this.pending[element.name] ) {
1057 return "pending";
1058 }
1059 if ( previous.old === value ) {
1060 return previous.valid;
1061 }
1062
1063 previous.old = value;
1064 var validator = this;
1065 this.startRequest(element);
1066 var data = {};
1067 data[element.name] = value;
1068 $.ajax($.extend(true, {
1069 url: param,
1070 mode: "abort",
1071 port: "validate" + element.name,
1072 dataType: "json",
1073 data: data,
1074 success: function(response) {
1075 validator.settings.messages[element.name].remote = previous.originalMessage;
1076 var valid = response === true;
1077 if ( valid ) {
1078 var submitted = validator.formSubmitted;
1079 validator.prepareElement(element);
1080 validator.formSubmitted = submitted;
1081 validator.successList.push(element);
1082 validator.showErrors();
1083 } else {
1084 var errors = {};
1085 var message = response || validator.defaultMessage(element, "remote");
1086 errors[element.name] = previous.message = $.isFunction(message) ? message(value) : message;
1087 validator.showErrors(errors);
1088 }
1089 previous.valid = valid;
1090 validator.stopRequest(element, valid);
1091 }
1092 }, param));
1093 return "pending";
1094 },
1095
1096 // http://docs.jquery.com/Plugins/Validation/Methods/minlength
1097 minlength: function(value, element, param) {
1098 return this.optional(element) || this.getLength($.trim(value), element) >= param;
1099 },
1100
1101 // http://docs.jquery.com/Plugins/Validation/Methods/maxlength
1102 maxlength: function(value, element, param) {
1103 return this.optional(element) || this.getLength($.trim(value), element) <= param;
1104 },
1105
1106 // http://docs.jquery.com/Plugins/Validation/Methods/rangelength
1107 rangelength: function(value, element, param) {
1108 var length = this.getLength($.trim(value), element);
1109 return this.optional(element) || ( length >= param[0] && length <= param[1] );
1110 },
1111
1112 // http://docs.jquery.com/Plugins/Validation/Methods/min
1113 min: function( value, element, param ) {
1114 return this.optional(element) || value >= param;
1115 },
1116
1117 // http://docs.jquery.com/Plugins/Validation/Methods/max
1118 max: function( value, element, param ) {
1119 return this.optional(element) || value <= param;
1120 },
1121
1122 // http://docs.jquery.com/Plugins/Validation/Methods/range
1123 range: function( value, element, param ) {
1124 return this.optional(element) || ( value >= param[0] && value <= param[1] );
1125 },
1126
1127 // http://docs.jquery.com/Plugins/Validation/Methods/email
1128 email: function(value, element) {
1129 // contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/
1130 return this.optional(element) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value);
1131 },
1132
1133 // http://docs.jquery.com/Plugins/Validation/Methods/url
1134 url: function(value, element) {
1135 // contributed by Scott Gonzalez: http://projects.scottsplayground.com/iri/
1136 return this.optional(element) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value);
1137 },
1138
1139 // http://docs.jquery.com/Plugins/Validation/Methods/date
1140 date: function(value, element) {
1141 return this.optional(element) || !/Invalid|NaN/.test(new Date(value));
1142 },
1143
1144 // http://docs.jquery.com/Plugins/Validation/Methods/dateISO
1145 dateISO: function(value, element) {
1146 return this.optional(element) || /^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(value);
1147 },
1148
1149 // http://docs.jquery.com/Plugins/Validation/Methods/number
1150 number: function(value, element) {
1151 return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value);
1152 },
1153
1154 // http://docs.jquery.com/Plugins/Validation/Methods/digits
1155 digits: function(value, element) {
1156 return this.optional(element) || /^\d+$/.test(value);
1157 },
1158
1159 // http://docs.jquery.com/Plugins/Validation/Methods/creditcard
1160 // based on http://en.wikipedia.org/wiki/Luhn
1161 creditcard: function(value, element) {
1162 if ( this.optional(element) )
1163 return "dependency-mismatch";
1164 // accept only digits and dashes
1165 if (/[^0-9-]+/.test(value))
1166 return false;
1167 var nCheck = 0,
1168 nDigit = 0,
1169 bEven = false;
1170
1171 value = value.replace(/\D/g, "");
1172
1173 for (var n = value.length - 1; n >= 0; n--) {
1174 var cDigit = value.charAt(n);
1175 var nDigit = parseInt(cDigit, 10);
1176 if (bEven) {
1177 if ((nDigit *= 2) > 9)
1178 nDigit -= 9;
1179 }
1180 nCheck += nDigit;
1181 bEven = !bEven;
1182 }
1183
1184 return (nCheck % 10) == 0;
1185 },
1186
1187 // http://docs.jquery.com/Plugins/Validation/Methods/accept
1188 accept: function(value, element, param) {
1189 param = typeof param == "string" ? param.replace(/,/g, '|') : "png|jpe?g|gif";
1190 return this.optional(element) || value.match(new RegExp(".(" + param + ")$", "i"));
1191 },
1192
1193 // http://docs.jquery.com/Plugins/Validation/Methods/equalTo
1194 equalTo: function(value, element, param) {
1195 // bind to the blur event of the target in order to revalidate whenever the target field is updated
1196 // TODO find a way to bind the event just once, avoiding the unbind-rebind overhead
1197 var target = $(param).unbind(".validate-equalTo").bind("blur.validate-equalTo", function() {
1198 $(element).valid();
1199 });
1200 return value == target.val();
1201 }
1202
1203 }
1204
1205});
1206
1207// deprecated, use $.validator.format instead
1208$.format = $.validator.format;
1209
1210})(jQuery);
1211
1212// ajax mode: abort
1213// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
1214// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
1215;(function($) {
1216 var pendingRequests = {};
1217 // Use a prefilter if available (1.5+)
1218 if ( $.ajaxPrefilter ) {
1219 $.ajaxPrefilter(function(settings, _, xhr) {
1220 var port = settings.port;
1221 if (settings.mode == "abort") {
1222 if ( pendingRequests[port] ) {
1223 pendingRequests[port].abort();
1224 } pendingRequests[port] = xhr;
1225 }
1226 });
1227 } else {
1228 // Proxy ajax
1229 var ajax = $.ajax;
1230 $.ajax = function(settings) {
1231 var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode,
1232 port = ( "port" in settings ? settings : $.ajaxSettings ).port;
1233 if (mode == "abort") {
1234 if ( pendingRequests[port] ) {
1235 pendingRequests[port].abort();
1236 }
1237
1238 return (pendingRequests[port] = ajax.apply(this, arguments));
1239 }
1240 return ajax.apply(this, arguments);
1241 };
1242 }
1243})(jQuery);
1244
1245// provides cross-browser focusin and focusout events
1246// IE has native support, in other browsers, use event caputuring (neither bubbles)
1247
1248// provides delegate(type: String, delegate: Selector, handler: Callback) plugin for easier event delegation
1249// handler is only called when $(event.target).is(delegate), in the scope of the jquery-object for event.target
1250;(function($) {
1251 // only implement if not provided by jQuery core (since 1.4)
1252 // TODO verify if jQuery 1.4's implementation is compatible with older jQuery special-event APIs
1253 if (!jQuery.event.special.focusin && !jQuery.event.special.focusout && document.addEventListener) {
1254 $.each({
1255 focus: 'focusin',
1256 blur: 'focusout'
1257 }, function( original, fix ){
1258 $.event.special[fix] = {
1259 setup:function() {
1260 this.addEventListener( original, handler, true );
1261 },
1262 teardown:function() {
1263 this.removeEventListener( original, handler, true );
1264 },
1265 handler: function(e) {
1266 arguments[0] = $.event.fix(e);
1267 arguments[0].type = fix;
1268 return $.event.handle.apply(this, arguments);
1269 }
1270 };
1271 function handler(e) {
1272 e = $.event.fix(e);
1273 e.type = fix;
1274 return $.event.handle.call(this, e);
1275 }
1276 });
1277 };
1278 $.extend($.fn, {
1279 validateDelegate: function(delegate, type, handler) {
1280 return this.bind(type, function(event) {
1281 var target = $(event.target);
1282 if (target.is(delegate)) {
1283 return handler.apply(target, arguments);
1284 }
1285 });
1286 }
1287 });
1288})(jQuery);
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery.validate.js b/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery.validate.js
new file mode 100644
index 00000000..12674b08
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery.validate.js
@@ -0,0 +1,1601 @@
1/*!
2 * jQuery Validation Plugin v1.17.0
3 *
4 * https://jqueryvalidation.org/
5 *
6 * Copyright (c) 2017 Jörn Zaefferer
7 * Released under the MIT license
8 */
9(function( factory ) {
10 if ( typeof define === "function" && define.amd ) {
11 define( ["jquery"], factory );
12 } else if (typeof module === "object" && module.exports) {
13 module.exports = factory( require( "jquery" ) );
14 } else {
15 factory( jQuery );
16 }
17}(function( $ ) {
18
19$.extend( $.fn, {
20
21 // https://jqueryvalidation.org/validate/
22 validate: function( options ) {
23
24 // If nothing is selected, return nothing; can't chain anyway
25 if ( !this.length ) {
26 if ( options && options.debug && window.console ) {
27 console.warn( "Nothing selected, can't validate, returning nothing." );
28 }
29 return;
30 }
31
32 // Check if a validator for this form was already created
33 var validator = $.data( this[ 0 ], "validator" );
34 if ( validator ) {
35 return validator;
36 }
37
38 // Add novalidate tag if HTML5.
39 this.attr( "novalidate", "novalidate" );
40
41 validator = new $.validator( options, this[ 0 ] );
42 $.data( this[ 0 ], "validator", validator );
43
44 if ( validator.settings.onsubmit ) {
45
46 this.on( "click.validate", ":submit", function( event ) {
47
48 // Track the used submit button to properly handle scripted
49 // submits later.
50 validator.submitButton = event.currentTarget;
51
52 // Allow suppressing validation by adding a cancel class to the submit button
53 if ( $( this ).hasClass( "cancel" ) ) {
54 validator.cancelSubmit = true;
55 }
56
57 // Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button
58 if ( $( this ).attr( "formnovalidate" ) !== undefined ) {
59 validator.cancelSubmit = true;
60 }
61 } );
62
63 // Validate the form on submit
64 this.on( "submit.validate", function( event ) {
65 if ( validator.settings.debug ) {
66
67 // Prevent form submit to be able to see console output
68 event.preventDefault();
69 }
70 function handle() {
71 var hidden, result;
72
73 // Insert a hidden input as a replacement for the missing submit button
74 // The hidden input is inserted in two cases:
75 // - A user defined a `submitHandler`
76 // - There was a pending request due to `remote` method and `stopRequest()`
77 // was called to submit the form in case it's valid
78 if ( validator.submitButton && ( validator.settings.submitHandler || validator.formSubmitted ) ) {
79 hidden = $( "<input type='hidden'/>" )
80 .attr( "name", validator.submitButton.name )
81 .val( $( validator.submitButton ).val() )
82 .appendTo( validator.currentForm );
83 }
84
85 if ( validator.settings.submitHandler ) {
86 result = validator.settings.submitHandler.call( validator, validator.currentForm, event );
87 if ( hidden ) {
88
89 // And clean up afterwards; thanks to no-block-scope, hidden can be referenced
90 hidden.remove();
91 }
92 if ( result !== undefined ) {
93 return result;
94 }
95 return false;
96 }
97 return true;
98 }
99
100 // Prevent submit for invalid forms or custom submit handlers
101 if ( validator.cancelSubmit ) {
102 validator.cancelSubmit = false;
103 return handle();
104 }
105 if ( validator.form() ) {
106 if ( validator.pendingRequest ) {
107 validator.formSubmitted = true;
108 return false;
109 }
110 return handle();
111 } else {
112 validator.focusInvalid();
113 return false;
114 }
115 } );
116 }
117
118 return validator;
119 },
120
121 // https://jqueryvalidation.org/valid/
122 valid: function() {
123 var valid, validator, errorList;
124
125 if ( $( this[ 0 ] ).is( "form" ) ) {
126 valid = this.validate().form();
127 } else {
128 errorList = [];
129 valid = true;
130 validator = $( this[ 0 ].form ).validate();
131 this.each( function() {
132 valid = validator.element( this ) && valid;
133 if ( !valid ) {
134 errorList = errorList.concat( validator.errorList );
135 }
136 } );
137 validator.errorList = errorList;
138 }
139 return valid;
140 },
141
142 // https://jqueryvalidation.org/rules/
143 rules: function( command, argument ) {
144 var element = this[ 0 ],
145 settings, staticRules, existingRules, data, param, filtered;
146
147 // If nothing is selected, return empty object; can't chain anyway
148 if ( element == null ) {
149 return;
150 }
151
152 if ( !element.form && element.hasAttribute( "contenteditable" ) ) {
153 element.form = this.closest( "form" )[ 0 ];
154 element.name = this.attr( "name" );
155 }
156
157 if ( element.form == null ) {
158 return;
159 }
160
161 if ( command ) {
162 settings = $.data( element.form, "validator" ).settings;
163 staticRules = settings.rules;
164 existingRules = $.validator.staticRules( element );
165 switch ( command ) {
166 case "add":
167 $.extend( existingRules, $.validator.normalizeRule( argument ) );
168
169 // Remove messages from rules, but allow them to be set separately
170 delete existingRules.messages;
171 staticRules[ element.name ] = existingRules;
172 if ( argument.messages ) {
173 settings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );
174 }
175 break;
176 case "remove":
177 if ( !argument ) {
178 delete staticRules[ element.name ];
179 return existingRules;
180 }
181 filtered = {};
182 $.each( argument.split( /\s/ ), function( index, method ) {
183 filtered[ method ] = existingRules[ method ];
184 delete existingRules[ method ];
185 } );
186 return filtered;
187 }
188 }
189
190 data = $.validator.normalizeRules(
191 $.extend(
192 {},
193 $.validator.classRules( element ),
194 $.validator.attributeRules( element ),
195 $.validator.dataRules( element ),
196 $.validator.staticRules( element )
197 ), element );
198
199 // Make sure required is at front
200 if ( data.required ) {
201 param = data.required;
202 delete data.required;
203 data = $.extend( { required: param }, data );
204 }
205
206 // Make sure remote is at back
207 if ( data.remote ) {
208 param = data.remote;
209 delete data.remote;
210 data = $.extend( data, { remote: param } );
211 }
212
213 return data;
214 }
215} );
216
217// Custom selectors
218$.extend( $.expr.pseudos || $.expr[ ":" ], { // '|| $.expr[ ":" ]' here enables backwards compatibility to jQuery 1.7. Can be removed when dropping jQ 1.7.x support
219
220 // https://jqueryvalidation.org/blank-selector/
221 blank: function( a ) {
222 return !$.trim( "" + $( a ).val() );
223 },
224
225 // https://jqueryvalidation.org/filled-selector/
226 filled: function( a ) {
227 var val = $( a ).val();
228 return val !== null && !!$.trim( "" + val );
229 },
230
231 // https://jqueryvalidation.org/unchecked-selector/
232 unchecked: function( a ) {
233 return !$( a ).prop( "checked" );
234 }
235} );
236
237// Constructor for validator
238$.validator = function( options, form ) {
239 this.settings = $.extend( true, {}, $.validator.defaults, options );
240 this.currentForm = form;
241 this.init();
242};
243
244// https://jqueryvalidation.org/jQuery.validator.format/
245$.validator.format = function( source, params ) {
246 if ( arguments.length === 1 ) {
247 return function() {
248 var args = $.makeArray( arguments );
249 args.unshift( source );
250 return $.validator.format.apply( this, args );
251 };
252 }
253 if ( params === undefined ) {
254 return source;
255 }
256 if ( arguments.length > 2 && params.constructor !== Array ) {
257 params = $.makeArray( arguments ).slice( 1 );
258 }
259 if ( params.constructor !== Array ) {
260 params = [ params ];
261 }
262 $.each( params, function( i, n ) {
263 source = source.replace( new RegExp( "\\{" + i + "\\}", "g" ), function() {
264 return n;
265 } );
266 } );
267 return source;
268};
269
270$.extend( $.validator, {
271
272 defaults: {
273 messages: {},
274 groups: {},
275 rules: {},
276 errorClass: "error",
277 pendingClass: "pending",
278 validClass: "valid",
279 errorElement: "label",
280 focusCleanup: false,
281 focusInvalid: true,
282 errorContainer: $( [] ),
283 errorLabelContainer: $( [] ),
284 onsubmit: true,
285 ignore: ":hidden",
286 ignoreTitle: false,
287 onfocusin: function( element ) {
288 this.lastActive = element;
289
290 // Hide error label and remove error class on focus if enabled
291 if ( this.settings.focusCleanup ) {
292 if ( this.settings.unhighlight ) {
293 this.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );
294 }
295 this.hideThese( this.errorsFor( element ) );
296 }
297 },
298 onfocusout: function( element ) {
299 if ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {
300 this.element( element );
301 }
302 },
303 onkeyup: function( element, event ) {
304
305 // Avoid revalidate the field when pressing one of the following keys
306 // Shift => 16
307 // Ctrl => 17
308 // Alt => 18
309 // Caps lock => 20
310 // End => 35
311 // Home => 36
312 // Left arrow => 37
313 // Up arrow => 38
314 // Right arrow => 39
315 // Down arrow => 40
316 // Insert => 45
317 // Num lock => 144
318 // AltGr key => 225
319 var excludedKeys = [
320 16, 17, 18, 20, 35, 36, 37,
321 38, 39, 40, 45, 144, 225
322 ];
323
324 if ( event.which === 9 && this.elementValue( element ) === "" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {
325 return;
326 } else if ( element.name in this.submitted || element.name in this.invalid ) {
327 this.element( element );
328 }
329 },
330 onclick: function( element ) {
331
332 // Click on selects, radiobuttons and checkboxes
333 if ( element.name in this.submitted ) {
334 this.element( element );
335
336 // Or option elements, check parent select in that case
337 } else if ( element.parentNode.name in this.submitted ) {
338 this.element( element.parentNode );
339 }
340 },
341 highlight: function( element, errorClass, validClass ) {
342 if ( element.type === "radio" ) {
343 this.findByName( element.name ).addClass( errorClass ).removeClass( validClass );
344 } else {
345 $( element ).addClass( errorClass ).removeClass( validClass );
346 }
347 },
348 unhighlight: function( element, errorClass, validClass ) {
349 if ( element.type === "radio" ) {
350 this.findByName( element.name ).removeClass( errorClass ).addClass( validClass );
351 } else {
352 $( element ).removeClass( errorClass ).addClass( validClass );
353 }
354 }
355 },
356
357 // https://jqueryvalidation.org/jQuery.validator.setDefaults/
358 setDefaults: function( settings ) {
359 $.extend( $.validator.defaults, settings );
360 },
361
362 messages: {
363 required: "This field is required.",
364 remote: "Please fix this field.",
365 email: "Please enter a valid email address.",
366 url: "Please enter a valid URL.",
367 date: "Please enter a valid date.",
368 dateISO: "Please enter a valid date (ISO).",
369 number: "Please enter a valid number.",
370 digits: "Please enter only digits.",
371 equalTo: "Please enter the same value again.",
372 maxlength: $.validator.format( "Please enter no more than {0} characters." ),
373 minlength: $.validator.format( "Please enter at least {0} characters." ),
374 rangelength: $.validator.format( "Please enter a value between {0} and {1} characters long." ),
375 range: $.validator.format( "Please enter a value between {0} and {1}." ),
376 max: $.validator.format( "Please enter a value less than or equal to {0}." ),
377 min: $.validator.format( "Please enter a value greater than or equal to {0}." ),
378 step: $.validator.format( "Please enter a multiple of {0}." )
379 },
380
381 autoCreateRanges: false,
382
383 prototype: {
384
385 init: function() {
386 this.labelContainer = $( this.settings.errorLabelContainer );
387 this.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );
388 this.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );
389 this.submitted = {};
390 this.valueCache = {};
391 this.pendingRequest = 0;
392 this.pending = {};
393 this.invalid = {};
394 this.reset();
395
396 var groups = ( this.groups = {} ),
397 rules;
398 $.each( this.settings.groups, function( key, value ) {
399 if ( typeof value === "string" ) {
400 value = value.split( /\s/ );
401 }
402 $.each( value, function( index, name ) {
403 groups[ name ] = key;
404 } );
405 } );
406 rules = this.settings.rules;
407 $.each( rules, function( key, value ) {
408 rules[ key ] = $.validator.normalizeRule( value );
409 } );
410
411 function delegate( event ) {
412
413 // Set form expando on contenteditable
414 if ( !this.form && this.hasAttribute( "contenteditable" ) ) {
415 this.form = $( this ).closest( "form" )[ 0 ];
416 this.name = $( this ).attr( "name" );
417 }
418
419 var validator = $.data( this.form, "validator" ),
420 eventType = "on" + event.type.replace( /^validate/, "" ),
421 settings = validator.settings;
422 if ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {
423 settings[ eventType ].call( validator, this, event );
424 }
425 }
426
427 $( this.currentForm )
428 .on( "focusin.validate focusout.validate keyup.validate",
429 ":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], " +
430 "[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], " +
431 "[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], " +
432 "[type='radio'], [type='checkbox'], [contenteditable], [type='button']", delegate )
433
434 // Support: Chrome, oldIE
435 // "select" is provided as event.target when clicking a option
436 .on( "click.validate", "select, option, [type='radio'], [type='checkbox']", delegate );
437
438 if ( this.settings.invalidHandler ) {
439 $( this.currentForm ).on( "invalid-form.validate", this.settings.invalidHandler );
440 }
441 },
442
443 // https://jqueryvalidation.org/Validator.form/
444 form: function() {
445 this.checkForm();
446 $.extend( this.submitted, this.errorMap );
447 this.invalid = $.extend( {}, this.errorMap );
448 if ( !this.valid() ) {
449 $( this.currentForm ).triggerHandler( "invalid-form", [ this ] );
450 }
451 this.showErrors();
452 return this.valid();
453 },
454
455 checkForm: function() {
456 this.prepareForm();
457 for ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {
458 this.check( elements[ i ] );
459 }
460 return this.valid();
461 },
462
463 // https://jqueryvalidation.org/Validator.element/
464 element: function( element ) {
465 var cleanElement = this.clean( element ),
466 checkElement = this.validationTargetFor( cleanElement ),
467 v = this,
468 result = true,
469 rs, group;
470
471 if ( checkElement === undefined ) {
472 delete this.invalid[ cleanElement.name ];
473 } else {
474 this.prepareElement( checkElement );
475 this.currentElements = $( checkElement );
476
477 // If this element is grouped, then validate all group elements already
478 // containing a value
479 group = this.groups[ checkElement.name ];
480 if ( group ) {
481 $.each( this.groups, function( name, testgroup ) {
482 if ( testgroup === group && name !== checkElement.name ) {
483 cleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );
484 if ( cleanElement && cleanElement.name in v.invalid ) {
485 v.currentElements.push( cleanElement );
486 result = v.check( cleanElement ) && result;
487 }
488 }
489 } );
490 }
491
492 rs = this.check( checkElement ) !== false;
493 result = result && rs;
494 if ( rs ) {
495 this.invalid[ checkElement.name ] = false;
496 } else {
497 this.invalid[ checkElement.name ] = true;
498 }
499
500 if ( !this.numberOfInvalids() ) {
501
502 // Hide error containers on last error
503 this.toHide = this.toHide.add( this.containers );
504 }
505 this.showErrors();
506
507 // Add aria-invalid status for screen readers
508 $( element ).attr( "aria-invalid", !rs );
509 }
510
511 return result;
512 },
513
514 // https://jqueryvalidation.org/Validator.showErrors/
515 showErrors: function( errors ) {
516 if ( errors ) {
517 var validator = this;
518
519 // Add items to error list and map
520 $.extend( this.errorMap, errors );
521 this.errorList = $.map( this.errorMap, function( message, name ) {
522 return {
523 message: message,
524 element: validator.findByName( name )[ 0 ]
525 };
526 } );
527
528 // Remove items from success list
529 this.successList = $.grep( this.successList, function( element ) {
530 return !( element.name in errors );
531 } );
532 }
533 if ( this.settings.showErrors ) {
534 this.settings.showErrors.call( this, this.errorMap, this.errorList );
535 } else {
536 this.defaultShowErrors();
537 }
538 },
539
540 // https://jqueryvalidation.org/Validator.resetForm/
541 resetForm: function() {
542 if ( $.fn.resetForm ) {
543 $( this.currentForm ).resetForm();
544 }
545 this.invalid = {};
546 this.submitted = {};
547 this.prepareForm();
548 this.hideErrors();
549 var elements = this.elements()
550 .removeData( "previousValue" )
551 .removeAttr( "aria-invalid" );
552
553 this.resetElements( elements );
554 },
555
556 resetElements: function( elements ) {
557 var i;
558
559 if ( this.settings.unhighlight ) {
560 for ( i = 0; elements[ i ]; i++ ) {
561 this.settings.unhighlight.call( this, elements[ i ],
562 this.settings.errorClass, "" );
563 this.findByName( elements[ i ].name ).removeClass( this.settings.validClass );
564 }
565 } else {
566 elements
567 .removeClass( this.settings.errorClass )
568 .removeClass( this.settings.validClass );
569 }
570 },
571
572 numberOfInvalids: function() {
573 return this.objectLength( this.invalid );
574 },
575
576 objectLength: function( obj ) {
577 /* jshint unused: false */
578 var count = 0,
579 i;
580 for ( i in obj ) {
581
582 // This check allows counting elements with empty error
583 // message as invalid elements
584 if ( obj[ i ] !== undefined && obj[ i ] !== null && obj[ i ] !== false ) {
585 count++;
586 }
587 }
588 return count;
589 },
590
591 hideErrors: function() {
592 this.hideThese( this.toHide );
593 },
594
595 hideThese: function( errors ) {
596 errors.not( this.containers ).text( "" );
597 this.addWrapper( errors ).hide();
598 },
599
600 valid: function() {
601 return this.size() === 0;
602 },
603
604 size: function() {
605 return this.errorList.length;
606 },
607
608 focusInvalid: function() {
609 if ( this.settings.focusInvalid ) {
610 try {
611 $( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [] )
612 .filter( ":visible" )
613 .focus()
614
615 // Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find
616 .trigger( "focusin" );
617 } catch ( e ) {
618
619 // Ignore IE throwing errors when focusing hidden elements
620 }
621 }
622 },
623
624 findLastActive: function() {
625 var lastActive = this.lastActive;
626 return lastActive && $.grep( this.errorList, function( n ) {
627 return n.element.name === lastActive.name;
628 } ).length === 1 && lastActive;
629 },
630
631 elements: function() {
632 var validator = this,
633 rulesCache = {};
634
635 // Select all valid inputs inside the form (no submit or reset buttons)
636 return $( this.currentForm )
637 .find( "input, select, textarea, [contenteditable]" )
638 .not( ":submit, :reset, :image, :disabled" )
639 .not( this.settings.ignore )
640 .filter( function() {
641 var name = this.name || $( this ).attr( "name" ); // For contenteditable
642 if ( !name && validator.settings.debug && window.console ) {
643 console.error( "%o has no name assigned", this );
644 }
645
646 // Set form expando on contenteditable
647 if ( this.hasAttribute( "contenteditable" ) ) {
648 this.form = $( this ).closest( "form" )[ 0 ];
649 this.name = name;
650 }
651
652 // Select only the first element for each name, and only those with rules specified
653 if ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {
654 return false;
655 }
656
657 rulesCache[ name ] = true;
658 return true;
659 } );
660 },
661
662 clean: function( selector ) {
663 return $( selector )[ 0 ];
664 },
665
666 errors: function() {
667 var errorClass = this.settings.errorClass.split( " " ).join( "." );
668 return $( this.settings.errorElement + "." + errorClass, this.errorContext );
669 },
670
671 resetInternals: function() {
672 this.successList = [];
673 this.errorList = [];
674 this.errorMap = {};
675 this.toShow = $( [] );
676 this.toHide = $( [] );
677 },
678
679 reset: function() {
680 this.resetInternals();
681 this.currentElements = $( [] );
682 },
683
684 prepareForm: function() {
685 this.reset();
686 this.toHide = this.errors().add( this.containers );
687 },
688
689 prepareElement: function( element ) {
690 this.reset();
691 this.toHide = this.errorsFor( element );
692 },
693
694 elementValue: function( element ) {
695 var $element = $( element ),
696 type = element.type,
697 val, idx;
698
699 if ( type === "radio" || type === "checkbox" ) {
700 return this.findByName( element.name ).filter( ":checked" ).val();
701 } else if ( type === "number" && typeof element.validity !== "undefined" ) {
702 return element.validity.badInput ? "NaN" : $element.val();
703 }
704
705 if ( element.hasAttribute( "contenteditable" ) ) {
706 val = $element.text();
707 } else {
708 val = $element.val();
709 }
710
711 if ( type === "file" ) {
712
713 // Modern browser (chrome & safari)
714 if ( val.substr( 0, 12 ) === "C:\\fakepath\\" ) {
715 return val.substr( 12 );
716 }
717
718 // Legacy browsers
719 // Unix-based path
720 idx = val.lastIndexOf( "/" );
721 if ( idx >= 0 ) {
722 return val.substr( idx + 1 );
723 }
724
725 // Windows-based path
726 idx = val.lastIndexOf( "\\" );
727 if ( idx >= 0 ) {
728 return val.substr( idx + 1 );
729 }
730
731 // Just the file name
732 return val;
733 }
734
735 if ( typeof val === "string" ) {
736 return val.replace( /\r/g, "" );
737 }
738 return val;
739 },
740
741 check: function( element ) {
742 element = this.validationTargetFor( this.clean( element ) );
743
744 var rules = $( element ).rules(),
745 rulesCount = $.map( rules, function( n, i ) {
746 return i;
747 } ).length,
748 dependencyMismatch = false,
749 val = this.elementValue( element ),
750 result, method, rule, normalizer;
751
752 // Prioritize the local normalizer defined for this element over the global one
753 // if the former exists, otherwise user the global one in case it exists.
754 if ( typeof rules.normalizer === "function" ) {
755 normalizer = rules.normalizer;
756 } else if ( typeof this.settings.normalizer === "function" ) {
757 normalizer = this.settings.normalizer;
758 }
759
760 // If normalizer is defined, then call it to retreive the changed value instead
761 // of using the real one.
762 // Note that `this` in the normalizer is `element`.
763 if ( normalizer ) {
764 val = normalizer.call( element, val );
765
766 if ( typeof val !== "string" ) {
767 throw new TypeError( "The normalizer should return a string value." );
768 }
769
770 // Delete the normalizer from rules to avoid treating it as a pre-defined method.
771 delete rules.normalizer;
772 }
773
774 for ( method in rules ) {
775 rule = { method: method, parameters: rules[ method ] };
776 try {
777 result = $.validator.methods[ method ].call( this, val, element, rule.parameters );
778
779 // If a method indicates that the field is optional and therefore valid,
780 // don't mark it as valid when there are no other rules
781 if ( result === "dependency-mismatch" && rulesCount === 1 ) {
782 dependencyMismatch = true;
783 continue;
784 }
785 dependencyMismatch = false;
786
787 if ( result === "pending" ) {
788 this.toHide = this.toHide.not( this.errorsFor( element ) );
789 return;
790 }
791
792 if ( !result ) {
793 this.formatAndAdd( element, rule );
794 return false;
795 }
796 } catch ( e ) {
797 if ( this.settings.debug && window.console ) {
798 console.log( "Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.", e );
799 }
800 if ( e instanceof TypeError ) {
801 e.message += ". Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.";
802 }
803
804 throw e;
805 }
806 }
807 if ( dependencyMismatch ) {
808 return;
809 }
810 if ( this.objectLength( rules ) ) {
811 this.successList.push( element );
812 }
813 return true;
814 },
815
816 // Return the custom message for the given element and validation method
817 // specified in the element's HTML5 data attribute
818 // return the generic message if present and no method specific message is present
819 customDataMessage: function( element, method ) {
820 return $( element ).data( "msg" + method.charAt( 0 ).toUpperCase() +
821 method.substring( 1 ).toLowerCase() ) || $( element ).data( "msg" );
822 },
823
824 // Return the custom message for the given element name and validation method
825 customMessage: function( name, method ) {
826 var m = this.settings.messages[ name ];
827 return m && ( m.constructor === String ? m : m[ method ] );
828 },
829
830 // Return the first defined argument, allowing empty strings
831 findDefined: function() {
832 for ( var i = 0; i < arguments.length; i++ ) {
833 if ( arguments[ i ] !== undefined ) {
834 return arguments[ i ];
835 }
836 }
837 return undefined;
838 },
839
840 // The second parameter 'rule' used to be a string, and extended to an object literal
841 // of the following form:
842 // rule = {
843 // method: "method name",
844 // parameters: "the given method parameters"
845 // }
846 //
847 // The old behavior still supported, kept to maintain backward compatibility with
848 // old code, and will be removed in the next major release.
849 defaultMessage: function( element, rule ) {
850 if ( typeof rule === "string" ) {
851 rule = { method: rule };
852 }
853
854 var message = this.findDefined(
855 this.customMessage( element.name, rule.method ),
856 this.customDataMessage( element, rule.method ),
857
858 // 'title' is never undefined, so handle empty string as undefined
859 !this.settings.ignoreTitle && element.title || undefined,
860 $.validator.messages[ rule.method ],
861 "<strong>Warning: No message defined for " + element.name + "</strong>"
862 ),
863 theregex = /\$?\{(\d+)\}/g;
864 if ( typeof message === "function" ) {
865 message = message.call( this, rule.parameters, element );
866 } else if ( theregex.test( message ) ) {
867 message = $.validator.format( message.replace( theregex, "{$1}" ), rule.parameters );
868 }
869
870 return message;
871 },
872
873 formatAndAdd: function( element, rule ) {
874 var message = this.defaultMessage( element, rule );
875
876 this.errorList.push( {
877 message: message,
878 element: element,
879 method: rule.method
880 } );
881
882 this.errorMap[ element.name ] = message;
883 this.submitted[ element.name ] = message;
884 },
885
886 addWrapper: function( toToggle ) {
887 if ( this.settings.wrapper ) {
888 toToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );
889 }
890 return toToggle;
891 },
892
893 defaultShowErrors: function() {
894 var i, elements, error;
895 for ( i = 0; this.errorList[ i ]; i++ ) {
896 error = this.errorList[ i ];
897 if ( this.settings.highlight ) {
898 this.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );
899 }
900 this.showLabel( error.element, error.message );
901 }
902 if ( this.errorList.length ) {
903 this.toShow = this.toShow.add( this.containers );
904 }
905 if ( this.settings.success ) {
906 for ( i = 0; this.successList[ i ]; i++ ) {
907 this.showLabel( this.successList[ i ] );
908 }
909 }
910 if ( this.settings.unhighlight ) {
911 for ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {
912 this.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );
913 }
914 }
915 this.toHide = this.toHide.not( this.toShow );
916 this.hideErrors();
917 this.addWrapper( this.toShow ).show();
918 },
919
920 validElements: function() {
921 return this.currentElements.not( this.invalidElements() );
922 },
923
924 invalidElements: function() {
925 return $( this.errorList ).map( function() {
926 return this.element;
927 } );
928 },
929
930 showLabel: function( element, message ) {
931 var place, group, errorID, v,
932 error = this.errorsFor( element ),
933 elementID = this.idOrName( element ),
934 describedBy = $( element ).attr( "aria-describedby" );
935
936 if ( error.length ) {
937
938 // Refresh error/success class
939 error.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );
940
941 // Replace message on existing label
942 error.html( message );
943 } else {
944
945 // Create error element
946 error = $( "<" + this.settings.errorElement + ">" )
947 .attr( "id", elementID + "-error" )
948 .addClass( this.settings.errorClass )
949 .html( message || "" );
950
951 // Maintain reference to the element to be placed into the DOM
952 place = error;
953 if ( this.settings.wrapper ) {
954
955 // Make sure the element is visible, even in IE
956 // actually showing the wrapped element is handled elsewhere
957 place = error.hide().show().wrap( "<" + this.settings.wrapper + "/>" ).parent();
958 }
959 if ( this.labelContainer.length ) {
960 this.labelContainer.append( place );
961 } else if ( this.settings.errorPlacement ) {
962 this.settings.errorPlacement.call( this, place, $( element ) );
963 } else {
964 place.insertAfter( element );
965 }
966
967 // Link error back to the element
968 if ( error.is( "label" ) ) {
969
970 // If the error is a label, then associate using 'for'
971 error.attr( "for", elementID );
972
973 // If the element is not a child of an associated label, then it's necessary
974 // to explicitly apply aria-describedby
975 } else if ( error.parents( "label[for='" + this.escapeCssMeta( elementID ) + "']" ).length === 0 ) {
976 errorID = error.attr( "id" );
977
978 // Respect existing non-error aria-describedby
979 if ( !describedBy ) {
980 describedBy = errorID;
981 } else if ( !describedBy.match( new RegExp( "\\b" + this.escapeCssMeta( errorID ) + "\\b" ) ) ) {
982
983 // Add to end of list if not already present
984 describedBy += " " + errorID;
985 }
986 $( element ).attr( "aria-describedby", describedBy );
987
988 // If this element is grouped, then assign to all elements in the same group
989 group = this.groups[ element.name ];
990 if ( group ) {
991 v = this;
992 $.each( v.groups, function( name, testgroup ) {
993 if ( testgroup === group ) {
994 $( "[name='" + v.escapeCssMeta( name ) + "']", v.currentForm )
995 .attr( "aria-describedby", error.attr( "id" ) );
996 }
997 } );
998 }
999 }
1000 }
1001 if ( !message && this.settings.success ) {
1002 error.text( "" );
1003 if ( typeof this.settings.success === "string" ) {
1004 error.addClass( this.settings.success );
1005 } else {
1006 this.settings.success( error, element );
1007 }
1008 }
1009 this.toShow = this.toShow.add( error );
1010 },
1011
1012 errorsFor: function( element ) {
1013 var name = this.escapeCssMeta( this.idOrName( element ) ),
1014 describer = $( element ).attr( "aria-describedby" ),
1015 selector = "label[for='" + name + "'], label[for='" + name + "'] *";
1016
1017 // 'aria-describedby' should directly reference the error element
1018 if ( describer ) {
1019 selector = selector + ", #" + this.escapeCssMeta( describer )
1020 .replace( /\s+/g, ", #" );
1021 }
1022
1023 return this
1024 .errors()
1025 .filter( selector );
1026 },
1027
1028 // See https://api.jquery.com/category/selectors/, for CSS
1029 // meta-characters that should be escaped in order to be used with JQuery
1030 // as a literal part of a name/id or any selector.
1031 escapeCssMeta: function( string ) {
1032 return string.replace( /([\\!"#$%&'()*+,./:;<=>?@\[\]^`{|}~])/g, "\\$1" );
1033 },
1034
1035 idOrName: function( element ) {
1036 return this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );
1037 },
1038
1039 validationTargetFor: function( element ) {
1040
1041 // If radio/checkbox, validate first element in group instead
1042 if ( this.checkable( element ) ) {
1043 element = this.findByName( element.name );
1044 }
1045
1046 // Always apply ignore filter
1047 return $( element ).not( this.settings.ignore )[ 0 ];
1048 },
1049
1050 checkable: function( element ) {
1051 return ( /radio|checkbox/i ).test( element.type );
1052 },
1053
1054 findByName: function( name ) {
1055 return $( this.currentForm ).find( "[name='" + this.escapeCssMeta( name ) + "']" );
1056 },
1057
1058 getLength: function( value, element ) {
1059 switch ( element.nodeName.toLowerCase() ) {
1060 case "select":
1061 return $( "option:selected", element ).length;
1062 case "input":
1063 if ( this.checkable( element ) ) {
1064 return this.findByName( element.name ).filter( ":checked" ).length;
1065 }
1066 }
1067 return value.length;
1068 },
1069
1070 depend: function( param, element ) {
1071 return this.dependTypes[ typeof param ] ? this.dependTypes[ typeof param ]( param, element ) : true;
1072 },
1073
1074 dependTypes: {
1075 "boolean": function( param ) {
1076 return param;
1077 },
1078 "string": function( param, element ) {
1079 return !!$( param, element.form ).length;
1080 },
1081 "function": function( param, element ) {
1082 return param( element );
1083 }
1084 },
1085
1086 optional: function( element ) {
1087 var val = this.elementValue( element );
1088 return !$.validator.methods.required.call( this, val, element ) && "dependency-mismatch";
1089 },
1090
1091 startRequest: function( element ) {
1092 if ( !this.pending[ element.name ] ) {
1093 this.pendingRequest++;
1094 $( element ).addClass( this.settings.pendingClass );
1095 this.pending[ element.name ] = true;
1096 }
1097 },
1098
1099 stopRequest: function( element, valid ) {
1100 this.pendingRequest--;
1101
1102 // Sometimes synchronization fails, make sure pendingRequest is never < 0
1103 if ( this.pendingRequest < 0 ) {
1104 this.pendingRequest = 0;
1105 }
1106 delete this.pending[ element.name ];
1107 $( element ).removeClass( this.settings.pendingClass );
1108 if ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) {
1109 $( this.currentForm ).submit();
1110
1111 // Remove the hidden input that was used as a replacement for the
1112 // missing submit button. The hidden input is added by `handle()`
1113 // to ensure that the value of the used submit button is passed on
1114 // for scripted submits triggered by this method
1115 if ( this.submitButton ) {
1116 $( "input:hidden[name='" + this.submitButton.name + "']", this.currentForm ).remove();
1117 }
1118
1119 this.formSubmitted = false;
1120 } else if ( !valid && this.pendingRequest === 0 && this.formSubmitted ) {
1121 $( this.currentForm ).triggerHandler( "invalid-form", [ this ] );
1122 this.formSubmitted = false;
1123 }
1124 },
1125
1126 previousValue: function( element, method ) {
1127 method = typeof method === "string" && method || "remote";
1128
1129 return $.data( element, "previousValue" ) || $.data( element, "previousValue", {
1130 old: null,
1131 valid: true,
1132 message: this.defaultMessage( element, { method: method } )
1133 } );
1134 },
1135
1136 // Cleans up all forms and elements, removes validator-specific events
1137 destroy: function() {
1138 this.resetForm();
1139
1140 $( this.currentForm )
1141 .off( ".validate" )
1142 .removeData( "validator" )
1143 .find( ".validate-equalTo-blur" )
1144 .off( ".validate-equalTo" )
1145 .removeClass( "validate-equalTo-blur" );
1146 }
1147
1148 },
1149
1150 classRuleSettings: {
1151 required: { required: true },
1152 email: { email: true },
1153 url: { url: true },
1154 date: { date: true },
1155 dateISO: { dateISO: true },
1156 number: { number: true },
1157 digits: { digits: true },
1158 creditcard: { creditcard: true }
1159 },
1160
1161 addClassRules: function( className, rules ) {
1162 if ( className.constructor === String ) {
1163 this.classRuleSettings[ className ] = rules;
1164 } else {
1165 $.extend( this.classRuleSettings, className );
1166 }
1167 },
1168
1169 classRules: function( element ) {
1170 var rules = {},
1171 classes = $( element ).attr( "class" );
1172
1173 if ( classes ) {
1174 $.each( classes.split( " " ), function() {
1175 if ( this in $.validator.classRuleSettings ) {
1176 $.extend( rules, $.validator.classRuleSettings[ this ] );
1177 }
1178 } );
1179 }
1180 return rules;
1181 },
1182
1183 normalizeAttributeRule: function( rules, type, method, value ) {
1184
1185 // Convert the value to a number for number inputs, and for text for backwards compability
1186 // allows type="date" and others to be compared as strings
1187 if ( /min|max|step/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {
1188 value = Number( value );
1189
1190 // Support Opera Mini, which returns NaN for undefined minlength
1191 if ( isNaN( value ) ) {
1192 value = undefined;
1193 }
1194 }
1195
1196 if ( value || value === 0 ) {
1197 rules[ method ] = value;
1198 } else if ( type === method && type !== "range" ) {
1199
1200 // Exception: the jquery validate 'range' method
1201 // does not test for the html5 'range' type
1202 rules[ method ] = true;
1203 }
1204 },
1205
1206 attributeRules: function( element ) {
1207 var rules = {},
1208 $element = $( element ),
1209 type = element.getAttribute( "type" ),
1210 method, value;
1211
1212 for ( method in $.validator.methods ) {
1213
1214 // Support for <input required> in both html5 and older browsers
1215 if ( method === "required" ) {
1216 value = element.getAttribute( method );
1217
1218 // Some browsers return an empty string for the required attribute
1219 // and non-HTML5 browsers might have required="" markup
1220 if ( value === "" ) {
1221 value = true;
1222 }
1223
1224 // Force non-HTML5 browsers to return bool
1225 value = !!value;
1226 } else {
1227 value = $element.attr( method );
1228 }
1229
1230 this.normalizeAttributeRule( rules, type, method, value );
1231 }
1232
1233 // 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs
1234 if ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {
1235 delete rules.maxlength;
1236 }
1237
1238 return rules;
1239 },
1240
1241 dataRules: function( element ) {
1242 var rules = {},
1243 $element = $( element ),
1244 type = element.getAttribute( "type" ),
1245 method, value;
1246
1247 for ( method in $.validator.methods ) {
1248 value = $element.data( "rule" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );
1249 this.normalizeAttributeRule( rules, type, method, value );
1250 }
1251 return rules;
1252 },
1253
1254 staticRules: function( element ) {
1255 var rules = {},
1256 validator = $.data( element.form, "validator" );
1257
1258 if ( validator.settings.rules ) {
1259 rules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};
1260 }
1261 return rules;
1262 },
1263
1264 normalizeRules: function( rules, element ) {
1265
1266 // Handle dependency check
1267 $.each( rules, function( prop, val ) {
1268
1269 // Ignore rule when param is explicitly false, eg. required:false
1270 if ( val === false ) {
1271 delete rules[ prop ];
1272 return;
1273 }
1274 if ( val.param || val.depends ) {
1275 var keepRule = true;
1276 switch ( typeof val.depends ) {
1277 case "string":
1278 keepRule = !!$( val.depends, element.form ).length;
1279 break;
1280 case "function":
1281 keepRule = val.depends.call( element, element );
1282 break;
1283 }
1284 if ( keepRule ) {
1285 rules[ prop ] = val.param !== undefined ? val.param : true;
1286 } else {
1287 $.data( element.form, "validator" ).resetElements( $( element ) );
1288 delete rules[ prop ];
1289 }
1290 }
1291 } );
1292
1293 // Evaluate parameters
1294 $.each( rules, function( rule, parameter ) {
1295 rules[ rule ] = $.isFunction( parameter ) && rule !== "normalizer" ? parameter( element ) : parameter;
1296 } );
1297
1298 // Clean number parameters
1299 $.each( [ "minlength", "maxlength" ], function() {
1300 if ( rules[ this ] ) {
1301 rules[ this ] = Number( rules[ this ] );
1302 }
1303 } );
1304 $.each( [ "rangelength", "range" ], function() {
1305 var parts;
1306 if ( rules[ this ] ) {
1307 if ( $.isArray( rules[ this ] ) ) {
1308 rules[ this ] = [ Number( rules[ this ][ 0 ] ), Number( rules[ this ][ 1 ] ) ];
1309 } else if ( typeof rules[ this ] === "string" ) {
1310 parts = rules[ this ].replace( /[\[\]]/g, "" ).split( /[\s,]+/ );
1311 rules[ this ] = [ Number( parts[ 0 ] ), Number( parts[ 1 ] ) ];
1312 }
1313 }
1314 } );
1315
1316 if ( $.validator.autoCreateRanges ) {
1317
1318 // Auto-create ranges
1319 if ( rules.min != null && rules.max != null ) {
1320 rules.range = [ rules.min, rules.max ];
1321 delete rules.min;
1322 delete rules.max;
1323 }
1324 if ( rules.minlength != null && rules.maxlength != null ) {
1325 rules.rangelength = [ rules.minlength, rules.maxlength ];
1326 delete rules.minlength;
1327 delete rules.maxlength;
1328 }
1329 }
1330
1331 return rules;
1332 },
1333
1334 // Converts a simple string to a {string: true} rule, e.g., "required" to {required:true}
1335 normalizeRule: function( data ) {
1336 if ( typeof data === "string" ) {
1337 var transformed = {};
1338 $.each( data.split( /\s/ ), function() {
1339 transformed[ this ] = true;
1340 } );
1341 data = transformed;
1342 }
1343 return data;
1344 },
1345
1346 // https://jqueryvalidation.org/jQuery.validator.addMethod/
1347 addMethod: function( name, method, message ) {
1348 $.validator.methods[ name ] = method;
1349 $.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];
1350 if ( method.length < 3 ) {
1351 $.validator.addClassRules( name, $.validator.normalizeRule( name ) );
1352 }
1353 },
1354
1355 // https://jqueryvalidation.org/jQuery.validator.methods/
1356 methods: {
1357
1358 // https://jqueryvalidation.org/required-method/
1359 required: function( value, element, param ) {
1360
1361 // Check if dependency is met
1362 if ( !this.depend( param, element ) ) {
1363 return "dependency-mismatch";
1364 }
1365 if ( element.nodeName.toLowerCase() === "select" ) {
1366
1367 // Could be an array for select-multiple or a string, both are fine this way
1368 var val = $( element ).val();
1369 return val && val.length > 0;
1370 }
1371 if ( this.checkable( element ) ) {
1372 return this.getLength( value, element ) > 0;
1373 }
1374 return value.length > 0;
1375 },
1376
1377 // https://jqueryvalidation.org/email-method/
1378 email: function( value, element ) {
1379
1380 // From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address
1381 // Retrieved 2014-01-14
1382 // If you have a problem with this implementation, report a bug against the above spec
1383 // Or use custom methods to implement your own email validation
1384 return this.optional( element ) || /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value );
1385 },
1386
1387 // https://jqueryvalidation.org/url-method/
1388 url: function( value, element ) {
1389
1390 // Copyright (c) 2010-2013 Diego Perini, MIT licensed
1391 // https://gist.github.com/dperini/729294
1392 // see also https://mathiasbynens.be/demo/url-regex
1393 // modified to allow protocol-relative URLs
1394 return this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/i.test( value );
1395 },
1396
1397 // https://jqueryvalidation.org/date-method/
1398 date: function( value, element ) {
1399 return this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );
1400 },
1401
1402 // https://jqueryvalidation.org/dateISO-method/
1403 dateISO: function( value, element ) {
1404 return this.optional( element ) || /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );
1405 },
1406
1407 // https://jqueryvalidation.org/number-method/
1408 number: function( value, element ) {
1409 return this.optional( element ) || /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test( value );
1410 },
1411
1412 // https://jqueryvalidation.org/digits-method/
1413 digits: function( value, element ) {
1414 return this.optional( element ) || /^\d+$/.test( value );
1415 },
1416
1417 // https://jqueryvalidation.org/minlength-method/
1418 minlength: function( value, element, param ) {
1419 var length = $.isArray( value ) ? value.length : this.getLength( value, element );
1420 return this.optional( element ) || length >= param;
1421 },
1422
1423 // https://jqueryvalidation.org/maxlength-method/
1424 maxlength: function( value, element, param ) {
1425 var length = $.isArray( value ) ? value.length : this.getLength( value, element );
1426 return this.optional( element ) || length <= param;
1427 },
1428
1429 // https://jqueryvalidation.org/rangelength-method/
1430 rangelength: function( value, element, param ) {
1431 var length = $.isArray( value ) ? value.length : this.getLength( value, element );
1432 return this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );
1433 },
1434
1435 // https://jqueryvalidation.org/min-method/
1436 min: function( value, element, param ) {
1437 return this.optional( element ) || value >= param;
1438 },
1439
1440 // https://jqueryvalidation.org/max-method/
1441 max: function( value, element, param ) {
1442 return this.optional( element ) || value <= param;
1443 },
1444
1445 // https://jqueryvalidation.org/range-method/
1446 range: function( value, element, param ) {
1447 return this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );
1448 },
1449
1450 // https://jqueryvalidation.org/step-method/
1451 step: function( value, element, param ) {
1452 var type = $( element ).attr( "type" ),
1453 errorMessage = "Step attribute on input type " + type + " is not supported.",
1454 supportedTypes = [ "text", "number", "range" ],
1455 re = new RegExp( "\\b" + type + "\\b" ),
1456 notSupported = type && !re.test( supportedTypes.join() ),
1457 decimalPlaces = function( num ) {
1458 var match = ( "" + num ).match( /(?:\.(\d+))?$/ );
1459 if ( !match ) {
1460 return 0;
1461 }
1462
1463 // Number of digits right of decimal point.
1464 return match[ 1 ] ? match[ 1 ].length : 0;
1465 },
1466 toInt = function( num ) {
1467 return Math.round( num * Math.pow( 10, decimals ) );
1468 },
1469 valid = true,
1470 decimals;
1471
1472 // Works only for text, number and range input types
1473 // TODO find a way to support input types date, datetime, datetime-local, month, time and week
1474 if ( notSupported ) {
1475 throw new Error( errorMessage );
1476 }
1477
1478 decimals = decimalPlaces( param );
1479
1480 // Value can't have too many decimals
1481 if ( decimalPlaces( value ) > decimals || toInt( value ) % toInt( param ) !== 0 ) {
1482 valid = false;
1483 }
1484
1485 return this.optional( element ) || valid;
1486 },
1487
1488 // https://jqueryvalidation.org/equalTo-method/
1489 equalTo: function( value, element, param ) {
1490
1491 // Bind to the blur event of the target in order to revalidate whenever the target field is updated
1492 var target = $( param );
1493 if ( this.settings.onfocusout && target.not( ".validate-equalTo-blur" ).length ) {
1494 target.addClass( "validate-equalTo-blur" ).on( "blur.validate-equalTo", function() {
1495 $( element ).valid();
1496 } );
1497 }
1498 return value === target.val();
1499 },
1500
1501 // https://jqueryvalidation.org/remote-method/
1502 remote: function( value, element, param, method ) {
1503 if ( this.optional( element ) ) {
1504 return "dependency-mismatch";
1505 }
1506
1507 method = typeof method === "string" && method || "remote";
1508
1509 var previous = this.previousValue( element, method ),
1510 validator, data, optionDataString;
1511
1512 if ( !this.settings.messages[ element.name ] ) {
1513 this.settings.messages[ element.name ] = {};
1514 }
1515 previous.originalMessage = previous.originalMessage || this.settings.messages[ element.name ][ method ];
1516 this.settings.messages[ element.name ][ method ] = previous.message;
1517
1518 param = typeof param === "string" && { url: param } || param;
1519 optionDataString = $.param( $.extend( { data: value }, param.data ) );
1520 if ( previous.old === optionDataString ) {
1521 return previous.valid;
1522 }
1523
1524 previous.old = optionDataString;
1525 validator = this;
1526 this.startRequest( element );
1527 data = {};
1528 data[ element.name ] = value;
1529 $.ajax( $.extend( true, {
1530 mode: "abort",
1531 port: "validate" + element.name,
1532 dataType: "json",
1533 data: data,
1534 context: validator.currentForm,
1535 success: function( response ) {
1536 var valid = response === true || response === "true",
1537 errors, message, submitted;
1538
1539 validator.settings.messages[ element.name ][ method ] = previous.originalMessage;
1540 if ( valid ) {
1541 submitted = validator.formSubmitted;
1542 validator.resetInternals();
1543 validator.toHide = validator.errorsFor( element );
1544 validator.formSubmitted = submitted;
1545 validator.successList.push( element );
1546 validator.invalid[ element.name ] = false;
1547 validator.showErrors();
1548 } else {
1549 errors = {};
1550 message = response || validator.defaultMessage( element, { method: method, parameters: value } );
1551 errors[ element.name ] = previous.message = message;
1552 validator.invalid[ element.name ] = true;
1553 validator.showErrors( errors );
1554 }
1555 previous.valid = valid;
1556 validator.stopRequest( element, valid );
1557 }
1558 }, param ) );
1559 return "pending";
1560 }
1561 }
1562
1563} );
1564
1565// Ajax mode: abort
1566// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
1567// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
1568
1569var pendingRequests = {},
1570 ajax;
1571
1572// Use a prefilter if available (1.5+)
1573if ( $.ajaxPrefilter ) {
1574 $.ajaxPrefilter( function( settings, _, xhr ) {
1575 var port = settings.port;
1576 if ( settings.mode === "abort" ) {
1577 if ( pendingRequests[ port ] ) {
1578 pendingRequests[ port ].abort();
1579 }
1580 pendingRequests[ port ] = xhr;
1581 }
1582 } );
1583} else {
1584
1585 // Proxy ajax
1586 ajax = $.ajax;
1587 $.ajax = function( settings ) {
1588 var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode,
1589 port = ( "port" in settings ? settings : $.ajaxSettings ).port;
1590 if ( mode === "abort" ) {
1591 if ( pendingRequests[ port ] ) {
1592 pendingRequests[ port ].abort();
1593 }
1594 pendingRequests[ port ] = ajax.apply( this, arguments );
1595 return pendingRequests[ port ];
1596 }
1597 return ajax.apply( this, arguments );
1598 };
1599}
1600return $;
1601})); \ No newline at end of file
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery.validate.min.js b/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery.validate.min.js
new file mode 100644
index 00000000..20402da5
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery.validate.min.js
@@ -0,0 +1,4 @@
1/*! jQuery Validation Plugin - v1.17.0 - 7/29/2017
2 * https://jqueryvalidation.org/
3 * Copyright (c) 2017 Jörn Zaefferer; Licensed MIT */
4!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){a.extend(a.fn,{validate:function(b){if(!this.length)return void(b&&b.debug&&window.console&&console.warn("Nothing selected, can't validate, returning nothing."));var c=a.data(this[0],"validator");return c?c:(this.attr("novalidate","novalidate"),c=new a.validator(b,this[0]),a.data(this[0],"validator",c),c.settings.onsubmit&&(this.on("click.validate",":submit",function(b){c.submitButton=b.currentTarget,a(this).hasClass("cancel")&&(c.cancelSubmit=!0),void 0!==a(this).attr("formnovalidate")&&(c.cancelSubmit=!0)}),this.on("submit.validate",function(b){function d(){var d,e;return c.submitButton&&(c.settings.submitHandler||c.formSubmitted)&&(d=a("<input type='hidden'/>").attr("name",c.submitButton.name).val(a(c.submitButton).val()).appendTo(c.currentForm)),!c.settings.submitHandler||(e=c.settings.submitHandler.call(c,c.currentForm,b),d&&d.remove(),void 0!==e&&e)}return c.settings.debug&&b.preventDefault(),c.cancelSubmit?(c.cancelSubmit=!1,d()):c.form()?c.pendingRequest?(c.formSubmitted=!0,!1):d():(c.focusInvalid(),!1)})),c)},valid:function(){var b,c,d;return a(this[0]).is("form")?b=this.validate().form():(d=[],b=!0,c=a(this[0].form).validate(),this.each(function(){b=c.element(this)&&b,b||(d=d.concat(c.errorList))}),c.errorList=d),b},rules:function(b,c){var d,e,f,g,h,i,j=this[0];if(null!=j&&(!j.form&&j.hasAttribute("contenteditable")&&(j.form=this.closest("form")[0],j.name=this.attr("name")),null!=j.form)){if(b)switch(d=a.data(j.form,"validator").settings,e=d.rules,f=a.validator.staticRules(j),b){case"add":a.extend(f,a.validator.normalizeRule(c)),delete f.messages,e[j.name]=f,c.messages&&(d.messages[j.name]=a.extend(d.messages[j.name],c.messages));break;case"remove":return c?(i={},a.each(c.split(/\s/),function(a,b){i[b]=f[b],delete f[b]}),i):(delete e[j.name],f)}return g=a.validator.normalizeRules(a.extend({},a.validator.classRules(j),a.validator.attributeRules(j),a.validator.dataRules(j),a.validator.staticRules(j)),j),g.required&&(h=g.required,delete g.required,g=a.extend({required:h},g)),g.remote&&(h=g.remote,delete g.remote,g=a.extend(g,{remote:h})),g}}}),a.extend(a.expr.pseudos||a.expr[":"],{blank:function(b){return!a.trim(""+a(b).val())},filled:function(b){var c=a(b).val();return null!==c&&!!a.trim(""+c)},unchecked:function(b){return!a(b).prop("checked")}}),a.validator=function(b,c){this.settings=a.extend(!0,{},a.validator.defaults,b),this.currentForm=c,this.init()},a.validator.format=function(b,c){return 1===arguments.length?function(){var c=a.makeArray(arguments);return c.unshift(b),a.validator.format.apply(this,c)}:void 0===c?b:(arguments.length>2&&c.constructor!==Array&&(c=a.makeArray(arguments).slice(1)),c.constructor!==Array&&(c=[c]),a.each(c,function(a,c){b=b.replace(new RegExp("\\{"+a+"\\}","g"),function(){return c})}),b)},a.extend(a.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",pendingClass:"pending",validClass:"valid",errorElement:"label",focusCleanup:!1,focusInvalid:!0,errorContainer:a([]),errorLabelContainer:a([]),onsubmit:!0,ignore:":hidden",ignoreTitle:!1,onfocusin:function(a){this.lastActive=a,this.settings.focusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,a,this.settings.errorClass,this.settings.validClass),this.hideThese(this.errorsFor(a)))},onfocusout:function(a){this.checkable(a)||!(a.name in this.submitted)&&this.optional(a)||this.element(a)},onkeyup:function(b,c){var d=[16,17,18,20,35,36,37,38,39,40,45,144,225];9===c.which&&""===this.elementValue(b)||a.inArray(c.keyCode,d)!==-1||(b.name in this.submitted||b.name in this.invalid)&&this.element(b)},onclick:function(a){a.name in this.submitted?this.element(a):a.parentNode.name in this.submitted&&this.element(a.parentNode)},highlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).addClass(c).removeClass(d):a(b).addClass(c).removeClass(d)},unhighlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).removeClass(c).addClass(d):a(b).removeClass(c).addClass(d)}},setDefaults:function(b){a.extend(a.validator.defaults,b)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",number:"Please enter a valid number.",digits:"Please enter only digits.",equalTo:"Please enter the same value again.",maxlength:a.validator.format("Please enter no more than {0} characters."),minlength:a.validator.format("Please enter at least {0} characters."),rangelength:a.validator.format("Please enter a value between {0} and {1} characters long."),range:a.validator.format("Please enter a value between {0} and {1}."),max:a.validator.format("Please enter a value less than or equal to {0}."),min:a.validator.format("Please enter a value greater than or equal to {0}."),step:a.validator.format("Please enter a multiple of {0}.")},autoCreateRanges:!1,prototype:{init:function(){function b(b){!this.form&&this.hasAttribute("contenteditable")&&(this.form=a(this).closest("form")[0],this.name=a(this).attr("name"));var c=a.data(this.form,"validator"),d="on"+b.type.replace(/^validate/,""),e=c.settings;e[d]&&!a(this).is(e.ignore)&&e[d].call(c,this,b)}this.labelContainer=a(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||a(this.currentForm),this.containers=a(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var c,d=this.groups={};a.each(this.settings.groups,function(b,c){"string"==typeof c&&(c=c.split(/\s/)),a.each(c,function(a,c){d[c]=b})}),c=this.settings.rules,a.each(c,function(b,d){c[b]=a.validator.normalizeRule(d)}),a(this.currentForm).on("focusin.validate focusout.validate keyup.validate",":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], [type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], [type='radio'], [type='checkbox'], [contenteditable], [type='button']",b).on("click.validate","select, option, [type='radio'], [type='checkbox']",b),this.settings.invalidHandler&&a(this.currentForm).on("invalid-form.validate",this.settings.invalidHandler)},form:function(){return this.checkForm(),a.extend(this.submitted,this.errorMap),this.invalid=a.extend({},this.errorMap),this.valid()||a(this.currentForm).triggerHandler("invalid-form",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var a=0,b=this.currentElements=this.elements();b[a];a++)this.check(b[a]);return this.valid()},element:function(b){var c,d,e=this.clean(b),f=this.validationTargetFor(e),g=this,h=!0;return void 0===f?delete this.invalid[e.name]:(this.prepareElement(f),this.currentElements=a(f),d=this.groups[f.name],d&&a.each(this.groups,function(a,b){b===d&&a!==f.name&&(e=g.validationTargetFor(g.clean(g.findByName(a))),e&&e.name in g.invalid&&(g.currentElements.push(e),h=g.check(e)&&h))}),c=this.check(f)!==!1,h=h&&c,c?this.invalid[f.name]=!1:this.invalid[f.name]=!0,this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),a(b).attr("aria-invalid",!c)),h},showErrors:function(b){if(b){var c=this;a.extend(this.errorMap,b),this.errorList=a.map(this.errorMap,function(a,b){return{message:a,element:c.findByName(b)[0]}}),this.successList=a.grep(this.successList,function(a){return!(a.name in b)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){a.fn.resetForm&&a(this.currentForm).resetForm(),this.invalid={},this.submitted={},this.prepareForm(),this.hideErrors();var b=this.elements().removeData("previousValue").removeAttr("aria-invalid");this.resetElements(b)},resetElements:function(a){var b;if(this.settings.unhighlight)for(b=0;a[b];b++)this.settings.unhighlight.call(this,a[b],this.settings.errorClass,""),this.findByName(a[b].name).removeClass(this.settings.validClass);else a.removeClass(this.settings.errorClass).removeClass(this.settings.validClass)},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(a){var b,c=0;for(b in a)void 0!==a[b]&&null!==a[b]&&a[b]!==!1&&c++;return c},hideErrors:function(){this.hideThese(this.toHide)},hideThese:function(a){a.not(this.containers).text(""),this.addWrapper(a).hide()},valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{a(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus().trigger("focusin")}catch(b){}},findLastActive:function(){var b=this.lastActive;return b&&1===a.grep(this.errorList,function(a){return a.element.name===b.name}).length&&b},elements:function(){var b=this,c={};return a(this.currentForm).find("input, select, textarea, [contenteditable]").not(":submit, :reset, :image, :disabled").not(this.settings.ignore).filter(function(){var d=this.name||a(this).attr("name");return!d&&b.settings.debug&&window.console&&console.error("%o has no name assigned",this),this.hasAttribute("contenteditable")&&(this.form=a(this).closest("form")[0],this.name=d),!(d in c||!b.objectLength(a(this).rules()))&&(c[d]=!0,!0)})},clean:function(b){return a(b)[0]},errors:function(){var b=this.settings.errorClass.split(" ").join(".");return a(this.settings.errorElement+"."+b,this.errorContext)},resetInternals:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=a([]),this.toHide=a([])},reset:function(){this.resetInternals(),this.currentElements=a([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(a){this.reset(),this.toHide=this.errorsFor(a)},elementValue:function(b){var c,d,e=a(b),f=b.type;return"radio"===f||"checkbox"===f?this.findByName(b.name).filter(":checked").val():"number"===f&&"undefined"!=typeof b.validity?b.validity.badInput?"NaN":e.val():(c=b.hasAttribute("contenteditable")?e.text():e.val(),"file"===f?"C:\\fakepath\\"===c.substr(0,12)?c.substr(12):(d=c.lastIndexOf("/"),d>=0?c.substr(d+1):(d=c.lastIndexOf("\\"),d>=0?c.substr(d+1):c)):"string"==typeof c?c.replace(/\r/g,""):c)},check:function(b){b=this.validationTargetFor(this.clean(b));var c,d,e,f,g=a(b).rules(),h=a.map(g,function(a,b){return b}).length,i=!1,j=this.elementValue(b);if("function"==typeof g.normalizer?f=g.normalizer:"function"==typeof this.settings.normalizer&&(f=this.settings.normalizer),f){if(j=f.call(b,j),"string"!=typeof j)throw new TypeError("The normalizer should return a string value.");delete g.normalizer}for(d in g){e={method:d,parameters:g[d]};try{if(c=a.validator.methods[d].call(this,j,b,e.parameters),"dependency-mismatch"===c&&1===h){i=!0;continue}if(i=!1,"pending"===c)return void(this.toHide=this.toHide.not(this.errorsFor(b)));if(!c)return this.formatAndAdd(b,e),!1}catch(k){throw this.settings.debug&&window.console&&console.log("Exception occurred when checking element "+b.id+", check the '"+e.method+"' method.",k),k instanceof TypeError&&(k.message+=". Exception occurred when checking element "+b.id+", check the '"+e.method+"' method."),k}}if(!i)return this.objectLength(g)&&this.successList.push(b),!0},customDataMessage:function(b,c){return a(b).data("msg"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase())||a(b).data("msg")},customMessage:function(a,b){var c=this.settings.messages[a];return c&&(c.constructor===String?c:c[b])},findDefined:function(){for(var a=0;a<arguments.length;a++)if(void 0!==arguments[a])return arguments[a]},defaultMessage:function(b,c){"string"==typeof c&&(c={method:c});var d=this.findDefined(this.customMessage(b.name,c.method),this.customDataMessage(b,c.method),!this.settings.ignoreTitle&&b.title||void 0,a.validator.messages[c.method],"<strong>Warning: No message defined for "+b.name+"</strong>"),e=/\$?\{(\d+)\}/g;return"function"==typeof d?d=d.call(this,c.parameters,b):e.test(d)&&(d=a.validator.format(d.replace(e,"{$1}"),c.parameters)),d},formatAndAdd:function(a,b){var c=this.defaultMessage(a,b);this.errorList.push({message:c,element:a,method:b.method}),this.errorMap[a.name]=c,this.submitted[a.name]=c},addWrapper:function(a){return this.settings.wrapper&&(a=a.add(a.parent(this.settings.wrapper))),a},defaultShowErrors:function(){var a,b,c;for(a=0;this.errorList[a];a++)c=this.errorList[a],this.settings.highlight&&this.settings.highlight.call(this,c.element,this.settings.errorClass,this.settings.validClass),this.showLabel(c.element,c.message);if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(a=0;this.successList[a];a++)this.showLabel(this.successList[a]);if(this.settings.unhighlight)for(a=0,b=this.validElements();b[a];a++)this.settings.unhighlight.call(this,b[a],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return a(this.errorList).map(function(){return this.element})},showLabel:function(b,c){var d,e,f,g,h=this.errorsFor(b),i=this.idOrName(b),j=a(b).attr("aria-describedby");h.length?(h.removeClass(this.settings.validClass).addClass(this.settings.errorClass),h.html(c)):(h=a("<"+this.settings.errorElement+">").attr("id",i+"-error").addClass(this.settings.errorClass).html(c||""),d=h,this.settings.wrapper&&(d=h.hide().show().wrap("<"+this.settings.wrapper+"/>").parent()),this.labelContainer.length?this.labelContainer.append(d):this.settings.errorPlacement?this.settings.errorPlacement.call(this,d,a(b)):d.insertAfter(b),h.is("label")?h.attr("for",i):0===h.parents("label[for='"+this.escapeCssMeta(i)+"']").length&&(f=h.attr("id"),j?j.match(new RegExp("\\b"+this.escapeCssMeta(f)+"\\b"))||(j+=" "+f):j=f,a(b).attr("aria-describedby",j),e=this.groups[b.name],e&&(g=this,a.each(g.groups,function(b,c){c===e&&a("[name='"+g.escapeCssMeta(b)+"']",g.currentForm).attr("aria-describedby",h.attr("id"))})))),!c&&this.settings.success&&(h.text(""),"string"==typeof this.settings.success?h.addClass(this.settings.success):this.settings.success(h,b)),this.toShow=this.toShow.add(h)},errorsFor:function(b){var c=this.escapeCssMeta(this.idOrName(b)),d=a(b).attr("aria-describedby"),e="label[for='"+c+"'], label[for='"+c+"'] *";return d&&(e=e+", #"+this.escapeCssMeta(d).replace(/\s+/g,", #")),this.errors().filter(e)},escapeCssMeta:function(a){return a.replace(/([\\!"#$%&'()*+,.\/:;<=>?@\[\]^`{|}~])/g,"\\$1")},idOrName:function(a){return this.groups[a.name]||(this.checkable(a)?a.name:a.id||a.name)},validationTargetFor:function(b){return this.checkable(b)&&(b=this.findByName(b.name)),a(b).not(this.settings.ignore)[0]},checkable:function(a){return/radio|checkbox/i.test(a.type)},findByName:function(b){return a(this.currentForm).find("[name='"+this.escapeCssMeta(b)+"']")},getLength:function(b,c){switch(c.nodeName.toLowerCase()){case"select":return a("option:selected",c).length;case"input":if(this.checkable(c))return this.findByName(c.name).filter(":checked").length}return b.length},depend:function(a,b){return!this.dependTypes[typeof a]||this.dependTypes[typeof a](a,b)},dependTypes:{"boolean":function(a){return a},string:function(b,c){return!!a(b,c.form).length},"function":function(a,b){return a(b)}},optional:function(b){var c=this.elementValue(b);return!a.validator.methods.required.call(this,c,b)&&"dependency-mismatch"},startRequest:function(b){this.pending[b.name]||(this.pendingRequest++,a(b).addClass(this.settings.pendingClass),this.pending[b.name]=!0)},stopRequest:function(b,c){this.pendingRequest--,this.pendingRequest<0&&(this.pendingRequest=0),delete this.pending[b.name],a(b).removeClass(this.settings.pendingClass),c&&0===this.pendingRequest&&this.formSubmitted&&this.form()?(a(this.currentForm).submit(),this.submitButton&&a("input:hidden[name='"+this.submitButton.name+"']",this.currentForm).remove(),this.formSubmitted=!1):!c&&0===this.pendingRequest&&this.formSubmitted&&(a(this.currentForm).triggerHandler("invalid-form",[this]),this.formSubmitted=!1)},previousValue:function(b,c){return c="string"==typeof c&&c||"remote",a.data(b,"previousValue")||a.data(b,"previousValue",{old:null,valid:!0,message:this.defaultMessage(b,{method:c})})},destroy:function(){this.resetForm(),a(this.currentForm).off(".validate").removeData("validator").find(".validate-equalTo-blur").off(".validate-equalTo").removeClass("validate-equalTo-blur")}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(b,c){b.constructor===String?this.classRuleSettings[b]=c:a.extend(this.classRuleSettings,b)},classRules:function(b){var c={},d=a(b).attr("class");return d&&a.each(d.split(" "),function(){this in a.validator.classRuleSettings&&a.extend(c,a.validator.classRuleSettings[this])}),c},normalizeAttributeRule:function(a,b,c,d){/min|max|step/.test(c)&&(null===b||/number|range|text/.test(b))&&(d=Number(d),isNaN(d)&&(d=void 0)),d||0===d?a[c]=d:b===c&&"range"!==b&&(a[c]=!0)},attributeRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)"required"===c?(d=b.getAttribute(c),""===d&&(d=!0),d=!!d):d=f.attr(c),this.normalizeAttributeRule(e,g,c,d);return e.maxlength&&/-1|2147483647|524288/.test(e.maxlength)&&delete e.maxlength,e},dataRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)d=f.data("rule"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase()),this.normalizeAttributeRule(e,g,c,d);return e},staticRules:function(b){var c={},d=a.data(b.form,"validator");return d.settings.rules&&(c=a.validator.normalizeRule(d.settings.rules[b.name])||{}),c},normalizeRules:function(b,c){return a.each(b,function(d,e){if(e===!1)return void delete b[d];if(e.param||e.depends){var f=!0;switch(typeof e.depends){case"string":f=!!a(e.depends,c.form).length;break;case"function":f=e.depends.call(c,c)}f?b[d]=void 0===e.param||e.param:(a.data(c.form,"validator").resetElements(a(c)),delete b[d])}}),a.each(b,function(d,e){b[d]=a.isFunction(e)&&"normalizer"!==d?e(c):e}),a.each(["minlength","maxlength"],function(){b[this]&&(b[this]=Number(b[this]))}),a.each(["rangelength","range"],function(){var c;b[this]&&(a.isArray(b[this])?b[this]=[Number(b[this][0]),Number(b[this][1])]:"string"==typeof b[this]&&(c=b[this].replace(/[\[\]]/g,"").split(/[\s,]+/),b[this]=[Number(c[0]),Number(c[1])]))}),a.validator.autoCreateRanges&&(null!=b.min&&null!=b.max&&(b.range=[b.min,b.max],delete b.min,delete b.max),null!=b.minlength&&null!=b.maxlength&&(b.rangelength=[b.minlength,b.maxlength],delete b.minlength,delete b.maxlength)),b},normalizeRule:function(b){if("string"==typeof b){var c={};a.each(b.split(/\s/),function(){c[this]=!0}),b=c}return b},addMethod:function(b,c,d){a.validator.methods[b]=c,a.validator.messages[b]=void 0!==d?d:a.validator.messages[b],c.length<3&&a.validator.addClassRules(b,a.validator.normalizeRule(b))},methods:{required:function(b,c,d){if(!this.depend(d,c))return"dependency-mismatch";if("select"===c.nodeName.toLowerCase()){var e=a(c).val();return e&&e.length>0}return this.checkable(c)?this.getLength(b,c)>0:b.length>0},email:function(a,b){return this.optional(b)||/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(a)},url:function(a,b){return this.optional(b)||/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[\/?#]\S*)?$/i.test(a)},date:function(a,b){return this.optional(b)||!/Invalid|NaN/.test(new Date(a).toString())},dateISO:function(a,b){return this.optional(b)||/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(a)},number:function(a,b){return this.optional(b)||/^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(a)},digits:function(a,b){return this.optional(b)||/^\d+$/.test(a)},minlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||e>=d},maxlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||e<=d},rangelength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||e>=d[0]&&e<=d[1]},min:function(a,b,c){return this.optional(b)||a>=c},max:function(a,b,c){return this.optional(b)||a<=c},range:function(a,b,c){return this.optional(b)||a>=c[0]&&a<=c[1]},step:function(b,c,d){var e,f=a(c).attr("type"),g="Step attribute on input type "+f+" is not supported.",h=["text","number","range"],i=new RegExp("\\b"+f+"\\b"),j=f&&!i.test(h.join()),k=function(a){var b=(""+a).match(/(?:\.(\d+))?$/);return b&&b[1]?b[1].length:0},l=function(a){return Math.round(a*Math.pow(10,e))},m=!0;if(j)throw new Error(g);return e=k(d),(k(b)>e||l(b)%l(d)!==0)&&(m=!1),this.optional(c)||m},equalTo:function(b,c,d){var e=a(d);return this.settings.onfocusout&&e.not(".validate-equalTo-blur").length&&e.addClass("validate-equalTo-blur").on("blur.validate-equalTo",function(){a(c).valid()}),b===e.val()},remote:function(b,c,d,e){if(this.optional(c))return"dependency-mismatch";e="string"==typeof e&&e||"remote";var f,g,h,i=this.previousValue(c,e);return this.settings.messages[c.name]||(this.settings.messages[c.name]={}),i.originalMessage=i.originalMessage||this.settings.messages[c.name][e],this.settings.messages[c.name][e]=i.message,d="string"==typeof d&&{url:d}||d,h=a.param(a.extend({data:b},d.data)),i.old===h?i.valid:(i.old=h,f=this,this.startRequest(c),g={},g[c.name]=b,a.ajax(a.extend(!0,{mode:"abort",port:"validate"+c.name,dataType:"json",data:g,context:f.currentForm,success:function(a){var d,g,h,j=a===!0||"true"===a;f.settings.messages[c.name][e]=i.originalMessage,j?(h=f.formSubmitted,f.resetInternals(),f.toHide=f.errorsFor(c),f.formSubmitted=h,f.successList.push(c),f.invalid[c.name]=!1,f.showErrors()):(d={},g=a||f.defaultMessage(c,{method:e,parameters:b}),d[c.name]=i.message=g,f.invalid[c.name]=!0,f.showErrors(d)),i.valid=j,f.stopRequest(c,j)}},d)),"pending")}}});var b,c={};return a.ajaxPrefilter?a.ajaxPrefilter(function(a,b,d){var e=a.port;"abort"===a.mode&&(c[e]&&c[e].abort(),c[e]=d)}):(b=a.ajax,a.ajax=function(d){var e=("mode"in d?d:a.ajaxSettings).mode,f=("port"in d?d:a.ajaxSettings).port;return"abort"===e?(c[f]&&c[f].abort(),c[f]=b.apply(this,arguments),c[f]):b.apply(this,arguments)}),a}); \ No newline at end of file
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery.validate.unobtrusive.js b/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery.validate.unobtrusive.js
new file mode 100644
index 00000000..73f52983
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery.validate.unobtrusive.js
@@ -0,0 +1,432 @@
1// Unobtrusive validation support library for jQuery and jQuery Validate
2// Copyright (c) .NET Foundation. All rights reserved.
3// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
4// @version v3.2.11
5
6/*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false */
7/*global document: false, jQuery: false */
8
9(function (factory) {
10 if (typeof define === 'function' && define.amd) {
11 // AMD. Register as an anonymous module.
12 define("jquery.validate.unobtrusive", ['jquery-validation'], factory);
13 } else if (typeof module === 'object' && module.exports) {
14 // CommonJS-like environments that support module.exports
15 module.exports = factory(require('jquery-validation'));
16 } else {
17 // Browser global
18 jQuery.validator.unobtrusive = factory(jQuery);
19 }
20}(function ($) {
21 var $jQval = $.validator,
22 adapters,
23 data_validation = "unobtrusiveValidation";
24
25 function setValidationValues(options, ruleName, value) {
26 options.rules[ruleName] = value;
27 if (options.message) {
28 options.messages[ruleName] = options.message;
29 }
30 }
31
32 function splitAndTrim(value) {
33 return value.replace(/^\s+|\s+$/g, "").split(/\s*,\s*/g);
34 }
35
36 function escapeAttributeValue(value) {
37 // As mentioned on http://api.jquery.com/category/selectors/
38 return value.replace(/([!"#$%&'()*+,./:;<=>?@\[\\\]^`{|}~])/g, "\\$1");
39 }
40
41 function getModelPrefix(fieldName) {
42 return fieldName.substr(0, fieldName.lastIndexOf(".") + 1);
43 }
44
45 function appendModelPrefix(value, prefix) {
46 if (value.indexOf("*.") === 0) {
47 value = value.replace("*.", prefix);
48 }
49 return value;
50 }
51
52 function onError(error, inputElement) { // 'this' is the form element
53 var container = $(this).find("[data-valmsg-for='" + escapeAttributeValue(inputElement[0].name) + "']"),
54 replaceAttrValue = container.attr("data-valmsg-replace"),
55 replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) !== false : null;
56
57 container.removeClass("field-validation-valid").addClass("field-validation-error");
58 error.data("unobtrusiveContainer", container);
59
60 if (replace) {
61 container.empty();
62 error.removeClass("input-validation-error").appendTo(container);
63 }
64 else {
65 error.hide();
66 }
67 }
68
69 function onErrors(event, validator) { // 'this' is the form element
70 var container = $(this).find("[data-valmsg-summary=true]"),
71 list = container.find("ul");
72
73 if (list && list.length && validator.errorList.length) {
74 list.empty();
75 container.addClass("validation-summary-errors").removeClass("validation-summary-valid");
76
77 $.each(validator.errorList, function () {
78 $("<li />").html(this.message).appendTo(list);
79 });
80 }
81 }
82
83 function onSuccess(error) { // 'this' is the form element
84 var container = error.data("unobtrusiveContainer");
85
86 if (container) {
87 var replaceAttrValue = container.attr("data-valmsg-replace"),
88 replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) : null;
89
90 container.addClass("field-validation-valid").removeClass("field-validation-error");
91 error.removeData("unobtrusiveContainer");
92
93 if (replace) {
94 container.empty();
95 }
96 }
97 }
98
99 function onReset(event) { // 'this' is the form element
100 var $form = $(this),
101 key = '__jquery_unobtrusive_validation_form_reset';
102 if ($form.data(key)) {
103 return;
104 }
105 // Set a flag that indicates we're currently resetting the form.
106 $form.data(key, true);
107 try {
108 $form.data("validator").resetForm();
109 } finally {
110 $form.removeData(key);
111 }
112
113 $form.find(".validation-summary-errors")
114 .addClass("validation-summary-valid")
115 .removeClass("validation-summary-errors");
116 $form.find(".field-validation-error")
117 .addClass("field-validation-valid")
118 .removeClass("field-validation-error")
119 .removeData("unobtrusiveContainer")
120 .find(">*") // If we were using valmsg-replace, get the underlying error
121 .removeData("unobtrusiveContainer");
122 }
123
124 function validationInfo(form) {
125 var $form = $(form),
126 result = $form.data(data_validation),
127 onResetProxy = $.proxy(onReset, form),
128 defaultOptions = $jQval.unobtrusive.options || {},
129 execInContext = function (name, args) {
130 var func = defaultOptions[name];
131 func && $.isFunction(func) && func.apply(form, args);
132 };
133
134 if (!result) {
135 result = {
136 options: { // options structure passed to jQuery Validate's validate() method
137 errorClass: defaultOptions.errorClass || "input-validation-error",
138 errorElement: defaultOptions.errorElement || "span",
139 errorPlacement: function () {
140 onError.apply(form, arguments);
141 execInContext("errorPlacement", arguments);
142 },
143 invalidHandler: function () {
144 onErrors.apply(form, arguments);
145 execInContext("invalidHandler", arguments);
146 },
147 messages: {},
148 rules: {},
149 success: function () {
150 onSuccess.apply(form, arguments);
151 execInContext("success", arguments);
152 }
153 },
154 attachValidation: function () {
155 $form
156 .off("reset." + data_validation, onResetProxy)
157 .on("reset." + data_validation, onResetProxy)
158 .validate(this.options);
159 },
160 validate: function () { // a validation function that is called by unobtrusive Ajax
161 $form.validate();
162 return $form.valid();
163 }
164 };
165 $form.data(data_validation, result);
166 }
167
168 return result;
169 }
170
171 $jQval.unobtrusive = {
172 adapters: [],
173
174 parseElement: function (element, skipAttach) {
175 /// <summary>
176 /// Parses a single HTML element for unobtrusive validation attributes.
177 /// </summary>
178 /// <param name="element" domElement="true">The HTML element to be parsed.</param>
179 /// <param name="skipAttach" type="Boolean">[Optional] true to skip attaching the
180 /// validation to the form. If parsing just this single element, you should specify true.
181 /// If parsing several elements, you should specify false, and manually attach the validation
182 /// to the form when you are finished. The default is false.</param>
183 var $element = $(element),
184 form = $element.parents("form")[0],
185 valInfo, rules, messages;
186
187 if (!form) { // Cannot do client-side validation without a form
188 return;
189 }
190
191 valInfo = validationInfo(form);
192 valInfo.options.rules[element.name] = rules = {};
193 valInfo.options.messages[element.name] = messages = {};
194
195 $.each(this.adapters, function () {
196 var prefix = "data-val-" + this.name,
197 message = $element.attr(prefix),
198 paramValues = {};
199
200 if (message !== undefined) { // Compare against undefined, because an empty message is legal (and falsy)
201 prefix += "-";
202
203 $.each(this.params, function () {
204 paramValues[this] = $element.attr(prefix + this);
205 });
206
207 this.adapt({
208 element: element,
209 form: form,
210 message: message,
211 params: paramValues,
212 rules: rules,
213 messages: messages
214 });
215 }
216 });
217
218 $.extend(rules, { "__dummy__": true });
219
220 if (!skipAttach) {
221 valInfo.attachValidation();
222 }
223 },
224
225 parse: function (selector) {
226 /// <summary>
227 /// Parses all the HTML elements in the specified selector. It looks for input elements decorated
228 /// with the [data-val=true] attribute value and enables validation according to the data-val-*
229 /// attribute values.
230 /// </summary>
231 /// <param name="selector" type="String">Any valid jQuery selector.</param>
232
233 // $forms includes all forms in selector's DOM hierarchy (parent, children and self) that have at least one
234 // element with data-val=true
235 var $selector = $(selector),
236 $forms = $selector.parents()
237 .addBack()
238 .filter("form")
239 .add($selector.find("form"))
240 .has("[data-val=true]");
241
242 $selector.find("[data-val=true]").each(function () {
243 $jQval.unobtrusive.parseElement(this, true);
244 });
245
246 $forms.each(function () {
247 var info = validationInfo(this);
248 if (info) {
249 info.attachValidation();
250 }
251 });
252 }
253 };
254
255 adapters = $jQval.unobtrusive.adapters;
256
257 adapters.add = function (adapterName, params, fn) {
258 /// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation.</summary>
259 /// <param name="adapterName" type="String">The name of the adapter to be added. This matches the name used
260 /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).</param>
261 /// <param name="params" type="Array" optional="true">[Optional] An array of parameter names (strings) that will
262 /// be extracted from the data-val-nnnn-mmmm HTML attributes (where nnnn is the adapter name, and
263 /// mmmm is the parameter name).</param>
264 /// <param name="fn" type="Function">The function to call, which adapts the values from the HTML
265 /// attributes into jQuery Validate rules and/or messages.</param>
266 /// <returns type="jQuery.validator.unobtrusive.adapters" />
267 if (!fn) { // Called with no params, just a function
268 fn = params;
269 params = [];
270 }
271 this.push({ name: adapterName, params: params, adapt: fn });
272 return this;
273 };
274
275 adapters.addBool = function (adapterName, ruleName) {
276 /// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where
277 /// the jQuery Validate validation rule has no parameter values.</summary>
278 /// <param name="adapterName" type="String">The name of the adapter to be added. This matches the name used
279 /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).</param>
280 /// <param name="ruleName" type="String" optional="true">[Optional] The name of the jQuery Validate rule. If not provided, the value
281 /// of adapterName will be used instead.</param>
282 /// <returns type="jQuery.validator.unobtrusive.adapters" />
283 return this.add(adapterName, function (options) {
284 setValidationValues(options, ruleName || adapterName, true);
285 });
286 };
287
288 adapters.addMinMax = function (adapterName, minRuleName, maxRuleName, minMaxRuleName, minAttribute, maxAttribute) {
289 /// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where
290 /// the jQuery Validate validation has three potential rules (one for min-only, one for max-only, and
291 /// one for min-and-max). The HTML parameters are expected to be named -min and -max.</summary>
292 /// <param name="adapterName" type="String">The name of the adapter to be added. This matches the name used
293 /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).</param>
294 /// <param name="minRuleName" type="String">The name of the jQuery Validate rule to be used when you only
295 /// have a minimum value.</param>
296 /// <param name="maxRuleName" type="String">The name of the jQuery Validate rule to be used when you only
297 /// have a maximum value.</param>
298 /// <param name="minMaxRuleName" type="String">The name of the jQuery Validate rule to be used when you
299 /// have both a minimum and maximum value.</param>
300 /// <param name="minAttribute" type="String" optional="true">[Optional] The name of the HTML attribute that
301 /// contains the minimum value. The default is "min".</param>
302 /// <param name="maxAttribute" type="String" optional="true">[Optional] The name of the HTML attribute that
303 /// contains the maximum value. The default is "max".</param>
304 /// <returns type="jQuery.validator.unobtrusive.adapters" />
305 return this.add(adapterName, [minAttribute || "min", maxAttribute || "max"], function (options) {
306 var min = options.params.min,
307 max = options.params.max;
308
309 if (min && max) {
310 setValidationValues(options, minMaxRuleName, [min, max]);
311 }
312 else if (min) {
313 setValidationValues(options, minRuleName, min);
314 }
315 else if (max) {
316 setValidationValues(options, maxRuleName, max);
317 }
318 });
319 };
320
321 adapters.addSingleVal = function (adapterName, attribute, ruleName) {
322 /// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where
323 /// the jQuery Validate validation rule has a single value.</summary>
324 /// <param name="adapterName" type="String">The name of the adapter to be added. This matches the name used
325 /// in the data-val-nnnn HTML attribute(where nnnn is the adapter name).</param>
326 /// <param name="attribute" type="String">[Optional] The name of the HTML attribute that contains the value.
327 /// The default is "val".</param>
328 /// <param name="ruleName" type="String" optional="true">[Optional] The name of the jQuery Validate rule. If not provided, the value
329 /// of adapterName will be used instead.</param>
330 /// <returns type="jQuery.validator.unobtrusive.adapters" />
331 return this.add(adapterName, [attribute || "val"], function (options) {
332 setValidationValues(options, ruleName || adapterName, options.params[attribute]);
333 });
334 };
335
336 $jQval.addMethod("__dummy__", function (value, element, params) {
337 return true;
338 });
339
340 $jQval.addMethod("regex", function (value, element, params) {
341 var match;
342 if (this.optional(element)) {
343 return true;
344 }
345
346 match = new RegExp(params).exec(value);
347 return (match && (match.index === 0) && (match[0].length === value.length));
348 });
349
350 $jQval.addMethod("nonalphamin", function (value, element, nonalphamin) {
351 var match;
352 if (nonalphamin) {
353 match = value.match(/\W/g);
354 match = match && match.length >= nonalphamin;
355 }
356 return match;
357 });
358
359 if ($jQval.methods.extension) {
360 adapters.addSingleVal("accept", "mimtype");
361 adapters.addSingleVal("extension", "extension");
362 } else {
363 // for backward compatibility, when the 'extension' validation method does not exist, such as with versions
364 // of JQuery Validation plugin prior to 1.10, we should use the 'accept' method for
365 // validating the extension, and ignore mime-type validations as they are not supported.
366 adapters.addSingleVal("extension", "extension", "accept");
367 }
368
369 adapters.addSingleVal("regex", "pattern");
370 adapters.addBool("creditcard").addBool("date").addBool("digits").addBool("email").addBool("number").addBool("url");
371 adapters.addMinMax("length", "minlength", "maxlength", "rangelength").addMinMax("range", "min", "max", "range");
372 adapters.addMinMax("minlength", "minlength").addMinMax("maxlength", "minlength", "maxlength");
373 adapters.add("equalto", ["other"], function (options) {
374 var prefix = getModelPrefix(options.element.name),
375 other = options.params.other,
376 fullOtherName = appendModelPrefix(other, prefix),
377 element = $(options.form).find(":input").filter("[name='" + escapeAttributeValue(fullOtherName) + "']")[0];
378
379 setValidationValues(options, "equalTo", element);
380 });
381 adapters.add("required", function (options) {
382 // jQuery Validate equates "required" with "mandatory" for checkbox elements
383 if (options.element.tagName.toUpperCase() !== "INPUT" || options.element.type.toUpperCase() !== "CHECKBOX") {
384 setValidationValues(options, "required", true);
385 }
386 });
387 adapters.add("remote", ["url", "type", "additionalfields"], function (options) {
388 var value = {
389 url: options.params.url,
390 type: options.params.type || "GET",
391 data: {}
392 },
393 prefix = getModelPrefix(options.element.name);
394
395 $.each(splitAndTrim(options.params.additionalfields || options.element.name), function (i, fieldName) {
396 var paramName = appendModelPrefix(fieldName, prefix);
397 value.data[paramName] = function () {
398 var field = $(options.form).find(":input").filter("[name='" + escapeAttributeValue(paramName) + "']");
399 // For checkboxes and radio buttons, only pick up values from checked fields.
400 if (field.is(":checkbox")) {
401 return field.filter(":checked").val() || field.filter(":hidden").val() || '';
402 }
403 else if (field.is(":radio")) {
404 return field.filter(":checked").val() || '';
405 }
406 return field.val();
407 };
408 });
409
410 setValidationValues(options, "remote", value);
411 });
412 adapters.add("password", ["min", "nonalphamin", "regex"], function (options) {
413 if (options.params.min) {
414 setValidationValues(options, "minlength", options.params.min);
415 }
416 if (options.params.nonalphamin) {
417 setValidationValues(options, "nonalphamin", options.params.nonalphamin);
418 }
419 if (options.params.regex) {
420 setValidationValues(options, "regex", options.params.regex);
421 }
422 });
423 adapters.add("fileextensions", ["extensions"], function (options) {
424 setValidationValues(options, "extension", options.params.extensions);
425 });
426
427 $(function () {
428 $jQval.unobtrusive.parse(document);
429 });
430
431 return $jQval.unobtrusive;
432}));
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery.validate.unobtrusive.min.js b/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery.validate.unobtrusive.min.js
new file mode 100644
index 00000000..57e8b2e4
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery.validate.unobtrusive.min.js
@@ -0,0 +1,5 @@
1// Unobtrusive validation support library for jQuery and jQuery Validate
2// Copyright (c) .NET Foundation. All rights reserved.
3// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
4// @version v3.2.11
5!function(a){"function"==typeof define&&define.amd?define("jquery.validate.unobtrusive",["jquery-validation"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery-validation")):jQuery.validator.unobtrusive=a(jQuery)}(function(a){function e(a,e,n){a.rules[e]=n,a.message&&(a.messages[e]=a.message)}function n(a){return a.replace(/^\s+|\s+$/g,"").split(/\s*,\s*/g)}function t(a){return a.replace(/([!"#$%&'()*+,.\/:;<=>?@\[\\\]^`{|}~])/g,"\\$1")}function r(a){return a.substr(0,a.lastIndexOf(".")+1)}function i(a,e){return 0===a.indexOf("*.")&&(a=a.replace("*.",e)),a}function o(e,n){var r=a(this).find("[data-valmsg-for='"+t(n[0].name)+"']"),i=r.attr("data-valmsg-replace"),o=i?a.parseJSON(i)!==!1:null;r.removeClass("field-validation-valid").addClass("field-validation-error"),e.data("unobtrusiveContainer",r),o?(r.empty(),e.removeClass("input-validation-error").appendTo(r)):e.hide()}function d(e,n){var t=a(this).find("[data-valmsg-summary=true]"),r=t.find("ul");r&&r.length&&n.errorList.length&&(r.empty(),t.addClass("validation-summary-errors").removeClass("validation-summary-valid"),a.each(n.errorList,function(){a("<li />").html(this.message).appendTo(r)}))}function s(e){var n=e.data("unobtrusiveContainer");if(n){var t=n.attr("data-valmsg-replace"),r=t?a.parseJSON(t):null;n.addClass("field-validation-valid").removeClass("field-validation-error"),e.removeData("unobtrusiveContainer"),r&&n.empty()}}function l(e){var n=a(this),t="__jquery_unobtrusive_validation_form_reset";if(!n.data(t)){n.data(t,!0);try{n.data("validator").resetForm()}finally{n.removeData(t)}n.find(".validation-summary-errors").addClass("validation-summary-valid").removeClass("validation-summary-errors"),n.find(".field-validation-error").addClass("field-validation-valid").removeClass("field-validation-error").removeData("unobtrusiveContainer").find(">*").removeData("unobtrusiveContainer")}}function u(e){var n=a(e),t=n.data(v),r=a.proxy(l,e),i=f.unobtrusive.options||{},u=function(n,t){var r=i[n];r&&a.isFunction(r)&&r.apply(e,t)};return t||(t={options:{errorClass:i.errorClass||"input-validation-error",errorElement:i.errorElement||"span",errorPlacement:function(){o.apply(e,arguments),u("errorPlacement",arguments)},invalidHandler:function(){d.apply(e,arguments),u("invalidHandler",arguments)},messages:{},rules:{},success:function(){s.apply(e,arguments),u("success",arguments)}},attachValidation:function(){n.off("reset."+v,r).on("reset."+v,r).validate(this.options)},validate:function(){return n.validate(),n.valid()}},n.data(v,t)),t}var m,f=a.validator,v="unobtrusiveValidation";return f.unobtrusive={adapters:[],parseElement:function(e,n){var t,r,i,o=a(e),d=o.parents("form")[0];d&&(t=u(d),t.options.rules[e.name]=r={},t.options.messages[e.name]=i={},a.each(this.adapters,function(){var n="data-val-"+this.name,t=o.attr(n),s={};void 0!==t&&(n+="-",a.each(this.params,function(){s[this]=o.attr(n+this)}),this.adapt({element:e,form:d,message:t,params:s,rules:r,messages:i}))}),a.extend(r,{__dummy__:!0}),n||t.attachValidation())},parse:function(e){var n=a(e),t=n.parents().addBack().filter("form").add(n.find("form")).has("[data-val=true]");n.find("[data-val=true]").each(function(){f.unobtrusive.parseElement(this,!0)}),t.each(function(){var a=u(this);a&&a.attachValidation()})}},m=f.unobtrusive.adapters,m.add=function(a,e,n){return n||(n=e,e=[]),this.push({name:a,params:e,adapt:n}),this},m.addBool=function(a,n){return this.add(a,function(t){e(t,n||a,!0)})},m.addMinMax=function(a,n,t,r,i,o){return this.add(a,[i||"min",o||"max"],function(a){var i=a.params.min,o=a.params.max;i&&o?e(a,r,[i,o]):i?e(a,n,i):o&&e(a,t,o)})},m.addSingleVal=function(a,n,t){return this.add(a,[n||"val"],function(r){e(r,t||a,r.params[n])})},f.addMethod("__dummy__",function(a,e,n){return!0}),f.addMethod("regex",function(a,e,n){var t;return!!this.optional(e)||(t=new RegExp(n).exec(a),t&&0===t.index&&t[0].length===a.length)}),f.addMethod("nonalphamin",function(a,e,n){var t;return n&&(t=a.match(/\W/g),t=t&&t.length>=n),t}),f.methods.extension?(m.addSingleVal("accept","mimtype"),m.addSingleVal("extension","extension")):m.addSingleVal("extension","extension","accept"),m.addSingleVal("regex","pattern"),m.addBool("creditcard").addBool("date").addBool("digits").addBool("email").addBool("number").addBool("url"),m.addMinMax("length","minlength","maxlength","rangelength").addMinMax("range","min","max","range"),m.addMinMax("minlength","minlength").addMinMax("maxlength","minlength","maxlength"),m.add("equalto",["other"],function(n){var o=r(n.element.name),d=n.params.other,s=i(d,o),l=a(n.form).find(":input").filter("[name='"+t(s)+"']")[0];e(n,"equalTo",l)}),m.add("required",function(a){"INPUT"===a.element.tagName.toUpperCase()&&"CHECKBOX"===a.element.type.toUpperCase()||e(a,"required",!0)}),m.add("remote",["url","type","additionalfields"],function(o){var d={url:o.params.url,type:o.params.type||"GET",data:{}},s=r(o.element.name);a.each(n(o.params.additionalfields||o.element.name),function(e,n){var r=i(n,s);d.data[r]=function(){var e=a(o.form).find(":input").filter("[name='"+t(r)+"']");return e.is(":checkbox")?e.filter(":checked").val()||e.filter(":hidden").val()||"":e.is(":radio")?e.filter(":checked").val()||"":e.val()}}),e(o,"remote",d)}),m.add("password",["min","nonalphamin","regex"],function(a){a.params.min&&e(a,"minlength",a.params.min),a.params.nonalphamin&&e(a,"nonalphamin",a.params.nonalphamin),a.params.regex&&e(a,"regex",a.params.regex)}),m.add("fileextensions",["extensions"],function(a){e(a,"extension",a.params.extensions)}),a(function(){f.unobtrusive.parse(document)}),f.unobtrusive}); \ No newline at end of file
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/modernizr-2.8.3.js b/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/modernizr-2.8.3.js
new file mode 100644
index 00000000..33653390
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/modernizr-2.8.3.js
@@ -0,0 +1,1406 @@
1/*!
2 * Modernizr v2.8.3
3 * www.modernizr.com
4 *
5 * Copyright (c) Faruk Ates, Paul Irish, Alex Sexton
6 * Available under the BSD and MIT licenses: www.modernizr.com/license/
7 */
8
9/*
10 * Modernizr tests which native CSS3 and HTML5 features are available in
11 * the current UA and makes the results available to you in two ways:
12 * as properties on a global Modernizr object, and as classes on the
13 * <html> element. This information allows you to progressively enhance
14 * your pages with a granular level of control over the experience.
15 *
16 * Modernizr has an optional (not included) conditional resource loader
17 * called Modernizr.load(), based on Yepnope.js (yepnopejs.com).
18 * To get a build that includes Modernizr.load(), as well as choosing
19 * which tests to include, go to www.modernizr.com/download/
20 *
21 * Authors Faruk Ates, Paul Irish, Alex Sexton
22 * Contributors Ryan Seddon, Ben Alman
23 */
24
25window.Modernizr = (function( window, document, undefined ) {
26
27 var version = '2.8.3',
28
29 Modernizr = {},
30
31 /*>>cssclasses*/
32 // option for enabling the HTML classes to be added
33 enableClasses = true,
34 /*>>cssclasses*/
35
36 docElement = document.documentElement,
37
38 /**
39 * Create our "modernizr" element that we do most feature tests on.
40 */
41 mod = 'modernizr',
42 modElem = document.createElement(mod),
43 mStyle = modElem.style,
44
45 /**
46 * Create the input element for various Web Forms feature tests.
47 */
48 inputElem /*>>inputelem*/ = document.createElement('input') /*>>inputelem*/ ,
49
50 /*>>smile*/
51 smile = ':)',
52 /*>>smile*/
53
54 toString = {}.toString,
55
56 // TODO :: make the prefixes more granular
57 /*>>prefixes*/
58 // List of property values to set for css tests. See ticket #21
59 prefixes = ' -webkit- -moz- -o- -ms- '.split(' '),
60 /*>>prefixes*/
61
62 /*>>domprefixes*/
63 // Following spec is to expose vendor-specific style properties as:
64 // elem.style.WebkitBorderRadius
65 // and the following would be incorrect:
66 // elem.style.webkitBorderRadius
67
68 // Webkit ghosts their properties in lowercase but Opera & Moz do not.
69 // Microsoft uses a lowercase `ms` instead of the correct `Ms` in IE8+
70 // erik.eae.net/archives/2008/03/10/21.48.10/
71
72 // More here: github.com/Modernizr/Modernizr/issues/issue/21
73 omPrefixes = 'Webkit Moz O ms',
74
75 cssomPrefixes = omPrefixes.split(' '),
76
77 domPrefixes = omPrefixes.toLowerCase().split(' '),
78 /*>>domprefixes*/
79
80 /*>>ns*/
81 ns = {'svg': 'http://www.w3.org/2000/svg'},
82 /*>>ns*/
83
84 tests = {},
85 inputs = {},
86 attrs = {},
87
88 classes = [],
89
90 slice = classes.slice,
91
92 featureName, // used in testing loop
93
94
95 /*>>teststyles*/
96 // Inject element with style element and some CSS rules
97 injectElementWithStyles = function( rule, callback, nodes, testnames ) {
98
99 var style, ret, node, docOverflow,
100 div = document.createElement('div'),
101 // After page load injecting a fake body doesn't work so check if body exists
102 body = document.body,
103 // IE6 and 7 won't return offsetWidth or offsetHeight unless it's in the body element, so we fake it.
104 fakeBody = body || document.createElement('body');
105
106 if ( parseInt(nodes, 10) ) {
107 // In order not to give false positives we create a node for each test
108 // This also allows the method to scale for unspecified uses
109 while ( nodes-- ) {
110 node = document.createElement('div');
111 node.id = testnames ? testnames[nodes] : mod + (nodes + 1);
112 div.appendChild(node);
113 }
114 }
115
116 // <style> elements in IE6-9 are considered 'NoScope' elements and therefore will be removed
117 // when injected with innerHTML. To get around this you need to prepend the 'NoScope' element
118 // with a 'scoped' element, in our case the soft-hyphen entity as it won't mess with our measurements.
119 // msdn.microsoft.com/en-us/library/ms533897%28VS.85%29.aspx
120 // Documents served as xml will throw if using &shy; so use xml friendly encoded version. See issue #277
121 style = ['&#173;','<style id="s', mod, '">', rule, '</style>'].join('');
122 div.id = mod;
123 // IE6 will false positive on some tests due to the style element inside the test div somehow interfering offsetHeight, so insert it into body or fakebody.
124 // Opera will act all quirky when injecting elements in documentElement when page is served as xml, needs fakebody too. #270
125 (body ? div : fakeBody).innerHTML += style;
126 fakeBody.appendChild(div);
127 if ( !body ) {
128 //avoid crashing IE8, if background image is used
129 fakeBody.style.background = '';
130 //Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible
131 fakeBody.style.overflow = 'hidden';
132 docOverflow = docElement.style.overflow;
133 docElement.style.overflow = 'hidden';
134 docElement.appendChild(fakeBody);
135 }
136
137 ret = callback(div, rule);
138 // If this is done after page load we don't want to remove the body so check if body exists
139 if ( !body ) {
140 fakeBody.parentNode.removeChild(fakeBody);
141 docElement.style.overflow = docOverflow;
142 } else {
143 div.parentNode.removeChild(div);
144 }
145
146 return !!ret;
147
148 },
149 /*>>teststyles*/
150
151 /*>>mq*/
152 // adapted from matchMedia polyfill
153 // by Scott Jehl and Paul Irish
154 // gist.github.com/786768
155 testMediaQuery = function( mq ) {
156
157 var matchMedia = window.matchMedia || window.msMatchMedia;
158 if ( matchMedia ) {
159 return matchMedia(mq) && matchMedia(mq).matches || false;
160 }
161
162 var bool;
163
164 injectElementWithStyles('@media ' + mq + ' { #' + mod + ' { position: absolute; } }', function( node ) {
165 bool = (window.getComputedStyle ?
166 getComputedStyle(node, null) :
167 node.currentStyle)['position'] == 'absolute';
168 });
169
170 return bool;
171
172 },
173 /*>>mq*/
174
175
176 /*>>hasevent*/
177 //
178 // isEventSupported determines if a given element supports the given event
179 // kangax.github.com/iseventsupported/
180 //
181 // The following results are known incorrects:
182 // Modernizr.hasEvent("webkitTransitionEnd", elem) // false negative
183 // Modernizr.hasEvent("textInput") // in Webkit. github.com/Modernizr/Modernizr/issues/333
184 // ...
185 isEventSupported = (function() {
186
187 var TAGNAMES = {
188 'select': 'input', 'change': 'input',
189 'submit': 'form', 'reset': 'form',
190 'error': 'img', 'load': 'img', 'abort': 'img'
191 };
192
193 function isEventSupported( eventName, element ) {
194
195 element = element || document.createElement(TAGNAMES[eventName] || 'div');
196 eventName = 'on' + eventName;
197
198 // When using `setAttribute`, IE skips "unload", WebKit skips "unload" and "resize", whereas `in` "catches" those
199 var isSupported = eventName in element;
200
201 if ( !isSupported ) {
202 // If it has no `setAttribute` (i.e. doesn't implement Node interface), try generic element
203 if ( !element.setAttribute ) {
204 element = document.createElement('div');
205 }
206 if ( element.setAttribute && element.removeAttribute ) {
207 element.setAttribute(eventName, '');
208 isSupported = is(element[eventName], 'function');
209
210 // If property was created, "remove it" (by setting value to `undefined`)
211 if ( !is(element[eventName], 'undefined') ) {
212 element[eventName] = undefined;
213 }
214 element.removeAttribute(eventName);
215 }
216 }
217
218 element = null;
219 return isSupported;
220 }
221 return isEventSupported;
222 })(),
223 /*>>hasevent*/
224
225 // TODO :: Add flag for hasownprop ? didn't last time
226
227 // hasOwnProperty shim by kangax needed for Safari 2.0 support
228 _hasOwnProperty = ({}).hasOwnProperty, hasOwnProp;
229
230 if ( !is(_hasOwnProperty, 'undefined') && !is(_hasOwnProperty.call, 'undefined') ) {
231 hasOwnProp = function (object, property) {
232 return _hasOwnProperty.call(object, property);
233 };
234 }
235 else {
236 hasOwnProp = function (object, property) { /* yes, this can give false positives/negatives, but most of the time we don't care about those */
237 return ((property in object) && is(object.constructor.prototype[property], 'undefined'));
238 };
239 }
240
241 // Adapted from ES5-shim https://github.com/kriskowal/es5-shim/blob/master/es5-shim.js
242 // es5.github.com/#x15.3.4.5
243
244 if (!Function.prototype.bind) {
245 Function.prototype.bind = function bind(that) {
246
247 var target = this;
248
249 if (typeof target != "function") {
250 throw new TypeError();
251 }
252
253 var args = slice.call(arguments, 1),
254 bound = function () {
255
256 if (this instanceof bound) {
257
258 var F = function(){};
259 F.prototype = target.prototype;
260 var self = new F();
261
262 var result = target.apply(
263 self,
264 args.concat(slice.call(arguments))
265 );
266 if (Object(result) === result) {
267 return result;
268 }
269 return self;
270
271 } else {
272
273 return target.apply(
274 that,
275 args.concat(slice.call(arguments))
276 );
277
278 }
279
280 };
281
282 return bound;
283 };
284 }
285
286 /**
287 * setCss applies given styles to the Modernizr DOM node.
288 */
289 function setCss( str ) {
290 mStyle.cssText = str;
291 }
292
293 /**
294 * setCssAll extrapolates all vendor-specific css strings.
295 */
296 function setCssAll( str1, str2 ) {
297 return setCss(prefixes.join(str1 + ';') + ( str2 || '' ));
298 }
299
300 /**
301 * is returns a boolean for if typeof obj is exactly type.
302 */
303 function is( obj, type ) {
304 return typeof obj === type;
305 }
306
307 /**
308 * contains returns a boolean for if substr is found within str.
309 */
310 function contains( str, substr ) {
311 return !!~('' + str).indexOf(substr);
312 }
313
314 /*>>testprop*/
315
316 // testProps is a generic CSS / DOM property test.
317
318 // In testing support for a given CSS property, it's legit to test:
319 // `elem.style[styleName] !== undefined`
320 // If the property is supported it will return an empty string,
321 // if unsupported it will return undefined.
322
323 // We'll take advantage of this quick test and skip setting a style
324 // on our modernizr element, but instead just testing undefined vs
325 // empty string.
326
327 // Because the testing of the CSS property names (with "-", as
328 // opposed to the camelCase DOM properties) is non-portable and
329 // non-standard but works in WebKit and IE (but not Gecko or Opera),
330 // we explicitly reject properties with dashes so that authors
331 // developing in WebKit or IE first don't end up with
332 // browser-specific content by accident.
333
334 function testProps( props, prefixed ) {
335 for ( var i in props ) {
336 var prop = props[i];
337 if ( !contains(prop, "-") && mStyle[prop] !== undefined ) {
338 return prefixed == 'pfx' ? prop : true;
339 }
340 }
341 return false;
342 }
343 /*>>testprop*/
344
345 // TODO :: add testDOMProps
346 /**
347 * testDOMProps is a generic DOM property test; if a browser supports
348 * a certain property, it won't return undefined for it.
349 */
350 function testDOMProps( props, obj, elem ) {
351 for ( var i in props ) {
352 var item = obj[props[i]];
353 if ( item !== undefined) {
354
355 // return the property name as a string
356 if (elem === false) return props[i];
357
358 // let's bind a function
359 if (is(item, 'function')){
360 // default to autobind unless override
361 return item.bind(elem || obj);
362 }
363
364 // return the unbound function or obj or value
365 return item;
366 }
367 }
368 return false;
369 }
370
371 /*>>testallprops*/
372 /**
373 * testPropsAll tests a list of DOM properties we want to check against.
374 * We specify literally ALL possible (known and/or likely) properties on
375 * the element including the non-vendor prefixed one, for forward-
376 * compatibility.
377 */
378 function testPropsAll( prop, prefixed, elem ) {
379
380 var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1),
381 props = (prop + ' ' + cssomPrefixes.join(ucProp + ' ') + ucProp).split(' ');
382
383 // did they call .prefixed('boxSizing') or are we just testing a prop?
384 if(is(prefixed, "string") || is(prefixed, "undefined")) {
385 return testProps(props, prefixed);
386
387 // otherwise, they called .prefixed('requestAnimationFrame', window[, elem])
388 } else {
389 props = (prop + ' ' + (domPrefixes).join(ucProp + ' ') + ucProp).split(' ');
390 return testDOMProps(props, prefixed, elem);
391 }
392 }
393 /*>>testallprops*/
394
395
396 /**
397 * Tests
398 * -----
399 */
400
401 // The *new* flexbox
402 // dev.w3.org/csswg/css3-flexbox
403
404 tests['flexbox'] = function() {
405 return testPropsAll('flexWrap');
406 };
407
408 // The *old* flexbox
409 // www.w3.org/TR/2009/WD-css3-flexbox-20090723/
410
411 tests['flexboxlegacy'] = function() {
412 return testPropsAll('boxDirection');
413 };
414
415 // On the S60 and BB Storm, getContext exists, but always returns undefined
416 // so we actually have to call getContext() to verify
417 // github.com/Modernizr/Modernizr/issues/issue/97/
418
419 tests['canvas'] = function() {
420 var elem = document.createElement('canvas');
421 return !!(elem.getContext && elem.getContext('2d'));
422 };
423
424 tests['canvastext'] = function() {
425 return !!(Modernizr['canvas'] && is(document.createElement('canvas').getContext('2d').fillText, 'function'));
426 };
427
428 // webk.it/70117 is tracking a legit WebGL feature detect proposal
429
430 // We do a soft detect which may false positive in order to avoid
431 // an expensive context creation: bugzil.la/732441
432
433 tests['webgl'] = function() {
434 return !!window.WebGLRenderingContext;
435 };
436
437 /*
438 * The Modernizr.touch test only indicates if the browser supports
439 * touch events, which does not necessarily reflect a touchscreen
440 * device, as evidenced by tablets running Windows 7 or, alas,
441 * the Palm Pre / WebOS (touch) phones.
442 *
443 * Additionally, Chrome (desktop) used to lie about its support on this,
444 * but that has since been rectified: crbug.com/36415
445 *
446 * We also test for Firefox 4 Multitouch Support.
447 *
448 * For more info, see: modernizr.github.com/Modernizr/touch.html
449 */
450
451 tests['touch'] = function() {
452 var bool;
453
454 if(('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) {
455 bool = true;
456 } else {
457 injectElementWithStyles(['@media (',prefixes.join('touch-enabled),('),mod,')','{#modernizr{top:9px;position:absolute}}'].join(''), function( node ) {
458 bool = node.offsetTop === 9;
459 });
460 }
461
462 return bool;
463 };
464
465
466 // geolocation is often considered a trivial feature detect...
467 // Turns out, it's quite tricky to get right:
468 //
469 // Using !!navigator.geolocation does two things we don't want. It:
470 // 1. Leaks memory in IE9: github.com/Modernizr/Modernizr/issues/513
471 // 2. Disables page caching in WebKit: webk.it/43956
472 //
473 // Meanwhile, in Firefox < 8, an about:config setting could expose
474 // a false positive that would throw an exception: bugzil.la/688158
475
476 tests['geolocation'] = function() {
477 return 'geolocation' in navigator;
478 };
479
480
481 tests['postmessage'] = function() {
482 return !!window.postMessage;
483 };
484
485
486 // Chrome incognito mode used to throw an exception when using openDatabase
487 // It doesn't anymore.
488 tests['websqldatabase'] = function() {
489 return !!window.openDatabase;
490 };
491
492 // Vendors had inconsistent prefixing with the experimental Indexed DB:
493 // - Webkit's implementation is accessible through webkitIndexedDB
494 // - Firefox shipped moz_indexedDB before FF4b9, but since then has been mozIndexedDB
495 // For speed, we don't test the legacy (and beta-only) indexedDB
496 tests['indexedDB'] = function() {
497 return !!testPropsAll("indexedDB", window);
498 };
499
500 // documentMode logic from YUI to filter out IE8 Compat Mode
501 // which false positives.
502 tests['hashchange'] = function() {
503 return isEventSupported('hashchange', window) && (document.documentMode === undefined || document.documentMode > 7);
504 };
505
506 // Per 1.6:
507 // This used to be Modernizr.historymanagement but the longer
508 // name has been deprecated in favor of a shorter and property-matching one.
509 // The old API is still available in 1.6, but as of 2.0 will throw a warning,
510 // and in the first release thereafter disappear entirely.
511 tests['history'] = function() {
512 return !!(window.history && history.pushState);
513 };
514
515 tests['draganddrop'] = function() {
516 var div = document.createElement('div');
517 return ('draggable' in div) || ('ondragstart' in div && 'ondrop' in div);
518 };
519
520 // FF3.6 was EOL'ed on 4/24/12, but the ESR version of FF10
521 // will be supported until FF19 (2/12/13), at which time, ESR becomes FF17.
522 // FF10 still uses prefixes, so check for it until then.
523 // for more ESR info, see: mozilla.org/en-US/firefox/organizations/faq/
524 tests['websockets'] = function() {
525 return 'WebSocket' in window || 'MozWebSocket' in window;
526 };
527
528
529 // css-tricks.com/rgba-browser-support/
530 tests['rgba'] = function() {
531 // Set an rgba() color and check the returned value
532
533 setCss('background-color:rgba(150,255,150,.5)');
534
535 return contains(mStyle.backgroundColor, 'rgba');
536 };
537
538 tests['hsla'] = function() {
539 // Same as rgba(), in fact, browsers re-map hsla() to rgba() internally,
540 // except IE9 who retains it as hsla
541
542 setCss('background-color:hsla(120,40%,100%,.5)');
543
544 return contains(mStyle.backgroundColor, 'rgba') || contains(mStyle.backgroundColor, 'hsla');
545 };
546
547 tests['multiplebgs'] = function() {
548 // Setting multiple images AND a color on the background shorthand property
549 // and then querying the style.background property value for the number of
550 // occurrences of "url(" is a reliable method for detecting ACTUAL support for this!
551
552 setCss('background:url(https://),url(https://),red url(https://)');
553
554 // If the UA supports multiple backgrounds, there should be three occurrences
555 // of the string "url(" in the return value for elemStyle.background
556
557 return (/(url\s*\(.*?){3}/).test(mStyle.background);
558 };
559
560
561
562 // this will false positive in Opera Mini
563 // github.com/Modernizr/Modernizr/issues/396
564
565 tests['backgroundsize'] = function() {
566 return testPropsAll('backgroundSize');
567 };
568
569 tests['borderimage'] = function() {
570 return testPropsAll('borderImage');
571 };
572
573
574 // Super comprehensive table about all the unique implementations of
575 // border-radius: muddledramblings.com/table-of-css3-border-radius-compliance
576
577 tests['borderradius'] = function() {
578 return testPropsAll('borderRadius');
579 };
580
581 // WebOS unfortunately false positives on this test.
582 tests['boxshadow'] = function() {
583 return testPropsAll('boxShadow');
584 };
585
586 // FF3.0 will false positive on this test
587 tests['textshadow'] = function() {
588 return document.createElement('div').style.textShadow === '';
589 };
590
591
592 tests['opacity'] = function() {
593 // Browsers that actually have CSS Opacity implemented have done so
594 // according to spec, which means their return values are within the
595 // range of [0.0,1.0] - including the leading zero.
596
597 setCssAll('opacity:.55');
598
599 // The non-literal . in this regex is intentional:
600 // German Chrome returns this value as 0,55
601 // github.com/Modernizr/Modernizr/issues/#issue/59/comment/516632
602 return (/^0.55$/).test(mStyle.opacity);
603 };
604
605
606 // Note, Android < 4 will pass this test, but can only animate
607 // a single property at a time
608 // goo.gl/v3V4Gp
609 tests['cssanimations'] = function() {
610 return testPropsAll('animationName');
611 };
612
613
614 tests['csscolumns'] = function() {
615 return testPropsAll('columnCount');
616 };
617
618
619 tests['cssgradients'] = function() {
620 /**
621 * For CSS Gradients syntax, please see:
622 * webkit.org/blog/175/introducing-css-gradients/
623 * developer.mozilla.org/en/CSS/-moz-linear-gradient
624 * developer.mozilla.org/en/CSS/-moz-radial-gradient
625 * dev.w3.org/csswg/css3-images/#gradients-
626 */
627
628 var str1 = 'background-image:',
629 str2 = 'gradient(linear,left top,right bottom,from(#9f9),to(white));',
630 str3 = 'linear-gradient(left top,#9f9, white);';
631
632 setCss(
633 // legacy webkit syntax (FIXME: remove when syntax not in use anymore)
634 (str1 + '-webkit- '.split(' ').join(str2 + str1) +
635 // standard syntax // trailing 'background-image:'
636 prefixes.join(str3 + str1)).slice(0, -str1.length)
637 );
638
639 return contains(mStyle.backgroundImage, 'gradient');
640 };
641
642
643 tests['cssreflections'] = function() {
644 return testPropsAll('boxReflect');
645 };
646
647
648 tests['csstransforms'] = function() {
649 return !!testPropsAll('transform');
650 };
651
652
653 tests['csstransforms3d'] = function() {
654
655 var ret = !!testPropsAll('perspective');
656
657 // Webkit's 3D transforms are passed off to the browser's own graphics renderer.
658 // It works fine in Safari on Leopard and Snow Leopard, but not in Chrome in
659 // some conditions. As a result, Webkit typically recognizes the syntax but
660 // will sometimes throw a false positive, thus we must do a more thorough check:
661 if ( ret && 'webkitPerspective' in docElement.style ) {
662
663 // Webkit allows this media query to succeed only if the feature is enabled.
664 // `@media (transform-3d),(-webkit-transform-3d){ ... }`
665 injectElementWithStyles('@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}', function( node, rule ) {
666 ret = node.offsetLeft === 9 && node.offsetHeight === 3;
667 });
668 }
669 return ret;
670 };
671
672
673 tests['csstransitions'] = function() {
674 return testPropsAll('transition');
675 };
676
677
678 /*>>fontface*/
679 // @font-face detection routine by Diego Perini
680 // javascript.nwbox.com/CSSSupport/
681
682 // false positives:
683 // WebOS github.com/Modernizr/Modernizr/issues/342
684 // WP7 github.com/Modernizr/Modernizr/issues/538
685 tests['fontface'] = function() {
686 var bool;
687
688 injectElementWithStyles('@font-face {font-family:"font";src:url("https://")}', function( node, rule ) {
689 var style = document.getElementById('smodernizr'),
690 sheet = style.sheet || style.styleSheet,
691 cssText = sheet ? (sheet.cssRules && sheet.cssRules[0] ? sheet.cssRules[0].cssText : sheet.cssText || '') : '';
692
693 bool = /src/i.test(cssText) && cssText.indexOf(rule.split(' ')[0]) === 0;
694 });
695
696 return bool;
697 };
698 /*>>fontface*/
699
700 // CSS generated content detection
701 tests['generatedcontent'] = function() {
702 var bool;
703
704 injectElementWithStyles(['#',mod,'{font:0/0 a}#',mod,':after{content:"',smile,'";visibility:hidden;font:3px/1 a}'].join(''), function( node ) {
705 bool = node.offsetHeight >= 3;
706 });
707
708 return bool;
709 };
710
711
712
713 // These tests evaluate support of the video/audio elements, as well as
714 // testing what types of content they support.
715 //
716 // We're using the Boolean constructor here, so that we can extend the value
717 // e.g. Modernizr.video // true
718 // Modernizr.video.ogg // 'probably'
719 //
720 // Codec values from : github.com/NielsLeenheer/html5test/blob/9106a8/index.html#L845
721 // thx to NielsLeenheer and zcorpan
722
723 // Note: in some older browsers, "no" was a return value instead of empty string.
724 // It was live in FF3.5.0 and 3.5.1, but fixed in 3.5.2
725 // It was also live in Safari 4.0.0 - 4.0.4, but fixed in 4.0.5
726
727 tests['video'] = function() {
728 var elem = document.createElement('video'),
729 bool = false;
730
731 // IE9 Running on Windows Server SKU can cause an exception to be thrown, bug #224
732 try {
733 if ( bool = !!elem.canPlayType ) {
734 bool = new Boolean(bool);
735 bool.ogg = elem.canPlayType('video/ogg; codecs="theora"') .replace(/^no$/,'');
736
737 // Without QuickTime, this value will be `undefined`. github.com/Modernizr/Modernizr/issues/546
738 bool.h264 = elem.canPlayType('video/mp4; codecs="avc1.42E01E"') .replace(/^no$/,'');
739
740 bool.webm = elem.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,'');
741 }
742
743 } catch(e) { }
744
745 return bool;
746 };
747
748 tests['audio'] = function() {
749 var elem = document.createElement('audio'),
750 bool = false;
751
752 try {
753 if ( bool = !!elem.canPlayType ) {
754 bool = new Boolean(bool);
755 bool.ogg = elem.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,'');
756 bool.mp3 = elem.canPlayType('audio/mpeg;') .replace(/^no$/,'');
757
758 // Mimetypes accepted:
759 // developer.mozilla.org/En/Media_formats_supported_by_the_audio_and_video_elements
760 // bit.ly/iphoneoscodecs
761 bool.wav = elem.canPlayType('audio/wav; codecs="1"') .replace(/^no$/,'');
762 bool.m4a = ( elem.canPlayType('audio/x-m4a;') ||
763 elem.canPlayType('audio/aac;')) .replace(/^no$/,'');
764 }
765 } catch(e) { }
766
767 return bool;
768 };
769
770
771 // In FF4, if disabled, window.localStorage should === null.
772
773 // Normally, we could not test that directly and need to do a
774 // `('localStorage' in window) && ` test first because otherwise Firefox will
775 // throw bugzil.la/365772 if cookies are disabled
776
777 // Also in iOS5 Private Browsing mode, attempting to use localStorage.setItem
778 // will throw the exception:
779 // QUOTA_EXCEEDED_ERRROR DOM Exception 22.
780 // Peculiarly, getItem and removeItem calls do not throw.
781
782 // Because we are forced to try/catch this, we'll go aggressive.
783
784 // Just FWIW: IE8 Compat mode supports these features completely:
785 // www.quirksmode.org/dom/html5.html
786 // But IE8 doesn't support either with local files
787
788 tests['localstorage'] = function() {
789 try {
790 localStorage.setItem(mod, mod);
791 localStorage.removeItem(mod);
792 return true;
793 } catch(e) {
794 return false;
795 }
796 };
797
798 tests['sessionstorage'] = function() {
799 try {
800 sessionStorage.setItem(mod, mod);
801 sessionStorage.removeItem(mod);
802 return true;
803 } catch(e) {
804 return false;
805 }
806 };
807
808
809 tests['webworkers'] = function() {
810 return !!window.Worker;
811 };
812
813
814 tests['applicationcache'] = function() {
815 return !!window.applicationCache;
816 };
817
818
819 // Thanks to Erik Dahlstrom
820 tests['svg'] = function() {
821 return !!document.createElementNS && !!document.createElementNS(ns.svg, 'svg').createSVGRect;
822 };
823
824 // specifically for SVG inline in HTML, not within XHTML
825 // test page: paulirish.com/demo/inline-svg
826 tests['inlinesvg'] = function() {
827 var div = document.createElement('div');
828 div.innerHTML = '<svg/>';
829 return (div.firstChild && div.firstChild.namespaceURI) == ns.svg;
830 };
831
832 // SVG SMIL animation
833 tests['smil'] = function() {
834 return !!document.createElementNS && /SVGAnimate/.test(toString.call(document.createElementNS(ns.svg, 'animate')));
835 };
836
837 // This test is only for clip paths in SVG proper, not clip paths on HTML content
838 // demo: srufaculty.sru.edu/david.dailey/svg/newstuff/clipPath4.svg
839
840 // However read the comments to dig into applying SVG clippaths to HTML content here:
841 // github.com/Modernizr/Modernizr/issues/213#issuecomment-1149491
842 tests['svgclippaths'] = function() {
843 return !!document.createElementNS && /SVGClipPath/.test(toString.call(document.createElementNS(ns.svg, 'clipPath')));
844 };
845
846 /*>>webforms*/
847 // input features and input types go directly onto the ret object, bypassing the tests loop.
848 // Hold this guy to execute in a moment.
849 function webforms() {
850 /*>>input*/
851 // Run through HTML5's new input attributes to see if the UA understands any.
852 // We're using f which is the <input> element created early on
853 // Mike Taylr has created a comprehensive resource for testing these attributes
854 // when applied to all input types:
855 // miketaylr.com/code/input-type-attr.html
856 // spec: www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary
857
858 // Only input placeholder is tested while textarea's placeholder is not.
859 // Currently Safari 4 and Opera 11 have support only for the input placeholder
860 // Both tests are available in feature-detects/forms-placeholder.js
861 Modernizr['input'] = (function( props ) {
862 for ( var i = 0, len = props.length; i < len; i++ ) {
863 attrs[ props[i] ] = !!(props[i] in inputElem);
864 }
865 if (attrs.list){
866 // safari false positive's on datalist: webk.it/74252
867 // see also github.com/Modernizr/Modernizr/issues/146
868 attrs.list = !!(document.createElement('datalist') && window.HTMLDataListElement);
869 }
870 return attrs;
871 })('autocomplete autofocus list placeholder max min multiple pattern required step'.split(' '));
872 /*>>input*/
873
874 /*>>inputtypes*/
875 // Run through HTML5's new input types to see if the UA understands any.
876 // This is put behind the tests runloop because it doesn't return a
877 // true/false like all the other tests; instead, it returns an object
878 // containing each input type with its corresponding true/false value
879
880 // Big thanks to @miketaylr for the html5 forms expertise. miketaylr.com/
881 Modernizr['inputtypes'] = (function(props) {
882
883 for ( var i = 0, bool, inputElemType, defaultView, len = props.length; i < len; i++ ) {
884
885 inputElem.setAttribute('type', inputElemType = props[i]);
886 bool = inputElem.type !== 'text';
887
888 // We first check to see if the type we give it sticks..
889 // If the type does, we feed it a textual value, which shouldn't be valid.
890 // If the value doesn't stick, we know there's input sanitization which infers a custom UI
891 if ( bool ) {
892
893 inputElem.value = smile;
894 inputElem.style.cssText = 'position:absolute;visibility:hidden;';
895
896 if ( /^range$/.test(inputElemType) && inputElem.style.WebkitAppearance !== undefined ) {
897
898 docElement.appendChild(inputElem);
899 defaultView = document.defaultView;
900
901 // Safari 2-4 allows the smiley as a value, despite making a slider
902 bool = defaultView.getComputedStyle &&
903 defaultView.getComputedStyle(inputElem, null).WebkitAppearance !== 'textfield' &&
904 // Mobile android web browser has false positive, so must
905 // check the height to see if the widget is actually there.
906 (inputElem.offsetHeight !== 0);
907
908 docElement.removeChild(inputElem);
909
910 } else if ( /^(search|tel)$/.test(inputElemType) ){
911 // Spec doesn't define any special parsing or detectable UI
912 // behaviors so we pass these through as true
913
914 // Interestingly, opera fails the earlier test, so it doesn't
915 // even make it here.
916
917 } else if ( /^(url|email)$/.test(inputElemType) ) {
918 // Real url and email support comes with prebaked validation.
919 bool = inputElem.checkValidity && inputElem.checkValidity() === false;
920
921 } else {
922 // If the upgraded input compontent rejects the :) text, we got a winner
923 bool = inputElem.value != smile;
924 }
925 }
926
927 inputs[ props[i] ] = !!bool;
928 }
929 return inputs;
930 })('search tel url email datetime date month week time datetime-local number range color'.split(' '));
931 /*>>inputtypes*/
932 }
933 /*>>webforms*/
934
935
936 // End of test definitions
937 // -----------------------
938
939
940
941 // Run through all tests and detect their support in the current UA.
942 // todo: hypothetically we could be doing an array of tests and use a basic loop here.
943 for ( var feature in tests ) {
944 if ( hasOwnProp(tests, feature) ) {
945 // run the test, throw the return value into the Modernizr,
946 // then based on that boolean, define an appropriate className
947 // and push it into an array of classes we'll join later.
948 featureName = feature.toLowerCase();
949 Modernizr[featureName] = tests[feature]();
950
951 classes.push((Modernizr[featureName] ? '' : 'no-') + featureName);
952 }
953 }
954
955 /*>>webforms*/
956 // input tests need to run.
957 Modernizr.input || webforms();
958 /*>>webforms*/
959
960
961 /**
962 * addTest allows the user to define their own feature tests
963 * the result will be added onto the Modernizr object,
964 * as well as an appropriate className set on the html element
965 *
966 * @param feature - String naming the feature
967 * @param test - Function returning true if feature is supported, false if not
968 */
969 Modernizr.addTest = function ( feature, test ) {
970 if ( typeof feature == 'object' ) {
971 for ( var key in feature ) {
972 if ( hasOwnProp( feature, key ) ) {
973 Modernizr.addTest( key, feature[ key ] );
974 }
975 }
976 } else {
977
978 feature = feature.toLowerCase();
979
980 if ( Modernizr[feature] !== undefined ) {
981 // we're going to quit if you're trying to overwrite an existing test
982 // if we were to allow it, we'd do this:
983 // var re = new RegExp("\\b(no-)?" + feature + "\\b");
984 // docElement.className = docElement.className.replace( re, '' );
985 // but, no rly, stuff 'em.
986 return Modernizr;
987 }
988
989 test = typeof test == 'function' ? test() : test;
990
991 if (typeof enableClasses !== "undefined" && enableClasses) {
992 docElement.className += ' ' + (test ? '' : 'no-') + feature;
993 }
994 Modernizr[feature] = test;
995
996 }
997
998 return Modernizr; // allow chaining.
999 };
1000
1001
1002 // Reset modElem.cssText to nothing to reduce memory footprint.
1003 setCss('');
1004 modElem = inputElem = null;
1005
1006 /*>>shiv*/
1007 /**
1008 * @preserve HTML5 Shiv prev3.7.1 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
1009 */
1010 ;(function(window, document) {
1011 /*jshint evil:true */
1012 /** version */
1013 var version = '3.7.0';
1014
1015 /** Preset options */
1016 var options = window.html5 || {};
1017
1018 /** Used to skip problem elements */
1019 var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;
1020
1021 /** Not all elements can be cloned in IE **/
1022 var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i;
1023
1024 /** Detect whether the browser supports default html5 styles */
1025 var supportsHtml5Styles;
1026
1027 /** Name of the expando, to work with multiple documents or to re-shiv one document */
1028 var expando = '_html5shiv';
1029
1030 /** The id for the the documents expando */
1031 var expanID = 0;
1032
1033 /** Cached data for each document */
1034 var expandoData = {};
1035
1036 /** Detect whether the browser supports unknown elements */
1037 var supportsUnknownElements;
1038
1039 (function() {
1040 try {
1041 var a = document.createElement('a');
1042 a.innerHTML = '<xyz></xyz>';
1043 //if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles
1044 supportsHtml5Styles = ('hidden' in a);
1045
1046 supportsUnknownElements = a.childNodes.length == 1 || (function() {
1047 // assign a false positive if unable to shiv
1048 (document.createElement)('a');
1049 var frag = document.createDocumentFragment();
1050 return (
1051 typeof frag.cloneNode == 'undefined' ||
1052 typeof frag.createDocumentFragment == 'undefined' ||
1053 typeof frag.createElement == 'undefined'
1054 );
1055 }());
1056 } catch(e) {
1057 // assign a false positive if detection fails => unable to shiv
1058 supportsHtml5Styles = true;
1059 supportsUnknownElements = true;
1060 }
1061
1062 }());
1063
1064 /*--------------------------------------------------------------------------*/
1065
1066 /**
1067 * Creates a style sheet with the given CSS text and adds it to the document.
1068 * @private
1069 * @param {Document} ownerDocument The document.
1070 * @param {String} cssText The CSS text.
1071 * @returns {StyleSheet} The style element.
1072 */
1073 function addStyleSheet(ownerDocument, cssText) {
1074 var p = ownerDocument.createElement('p'),
1075 parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement;
1076
1077 p.innerHTML = 'x<style>' + cssText + '</style>';
1078 return parent.insertBefore(p.lastChild, parent.firstChild);
1079 }
1080
1081 /**
1082 * Returns the value of `html5.elements` as an array.
1083 * @private
1084 * @returns {Array} An array of shived element node names.
1085 */
1086 function getElements() {
1087 var elements = html5.elements;
1088 return typeof elements == 'string' ? elements.split(' ') : elements;
1089 }
1090
1091 /**
1092 * Returns the data associated to the given document
1093 * @private
1094 * @param {Document} ownerDocument The document.
1095 * @returns {Object} An object of data.
1096 */
1097 function getExpandoData(ownerDocument) {
1098 var data = expandoData[ownerDocument[expando]];
1099 if (!data) {
1100 data = {};
1101 expanID++;
1102 ownerDocument[expando] = expanID;
1103 expandoData[expanID] = data;
1104 }
1105 return data;
1106 }
1107
1108 /**
1109 * returns a shived element for the given nodeName and document
1110 * @memberOf html5
1111 * @param {String} nodeName name of the element
1112 * @param {Document} ownerDocument The context document.
1113 * @returns {Object} The shived element.
1114 */
1115 function createElement(nodeName, ownerDocument, data){
1116 if (!ownerDocument) {
1117 ownerDocument = document;
1118 }
1119 if(supportsUnknownElements){
1120 return ownerDocument.createElement(nodeName);
1121 }
1122 if (!data) {
1123 data = getExpandoData(ownerDocument);
1124 }
1125 var node;
1126
1127 if (data.cache[nodeName]) {
1128 node = data.cache[nodeName].cloneNode();
1129 } else if (saveClones.test(nodeName)) {
1130 node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();
1131 } else {
1132 node = data.createElem(nodeName);
1133 }
1134
1135 // Avoid adding some elements to fragments in IE < 9 because
1136 // * Attributes like `name` or `type` cannot be set/changed once an element
1137 // is inserted into a document/fragment
1138 // * Link elements with `src` attributes that are inaccessible, as with
1139 // a 403 response, will cause the tab/window to crash
1140 // * Script elements appended to fragments will execute when their `src`
1141 // or `text` property is set
1142 return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node;
1143 }
1144
1145 /**
1146 * returns a shived DocumentFragment for the given document
1147 * @memberOf html5
1148 * @param {Document} ownerDocument The context document.
1149 * @returns {Object} The shived DocumentFragment.
1150 */
1151 function createDocumentFragment(ownerDocument, data){
1152 if (!ownerDocument) {
1153 ownerDocument = document;
1154 }
1155 if(supportsUnknownElements){
1156 return ownerDocument.createDocumentFragment();
1157 }
1158 data = data || getExpandoData(ownerDocument);
1159 var clone = data.frag.cloneNode(),
1160 i = 0,
1161 elems = getElements(),
1162 l = elems.length;
1163 for(;i<l;i++){
1164 clone.createElement(elems[i]);
1165 }
1166 return clone;
1167 }
1168
1169 /**
1170 * Shivs the `createElement` and `createDocumentFragment` methods of the document.
1171 * @private
1172 * @param {Document|DocumentFragment} ownerDocument The document.
1173 * @param {Object} data of the document.
1174 */
1175 function shivMethods(ownerDocument, data) {
1176 if (!data.cache) {
1177 data.cache = {};
1178 data.createElem = ownerDocument.createElement;
1179 data.createFrag = ownerDocument.createDocumentFragment;
1180 data.frag = data.createFrag();
1181 }
1182
1183
1184 ownerDocument.createElement = function(nodeName) {
1185 //abort shiv
1186 if (!html5.shivMethods) {
1187 return data.createElem(nodeName);
1188 }
1189 return createElement(nodeName, ownerDocument, data);
1190 };
1191
1192 ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' +
1193 'var n=f.cloneNode(),c=n.createElement;' +
1194 'h.shivMethods&&(' +
1195 // unroll the `createElement` calls
1196 getElements().join().replace(/[\w\-]+/g, function(nodeName) {
1197 data.createElem(nodeName);
1198 data.frag.createElement(nodeName);
1199 return 'c("' + nodeName + '")';
1200 }) +
1201 ');return n}'
1202 )(html5, data.frag);
1203 }
1204
1205 /*--------------------------------------------------------------------------*/
1206
1207 /**
1208 * Shivs the given document.
1209 * @memberOf html5
1210 * @param {Document} ownerDocument The document to shiv.
1211 * @returns {Document} The shived document.
1212 */
1213 function shivDocument(ownerDocument) {
1214 if (!ownerDocument) {
1215 ownerDocument = document;
1216 }
1217 var data = getExpandoData(ownerDocument);
1218
1219 if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) {
1220 data.hasCSS = !!addStyleSheet(ownerDocument,
1221 // corrects block display not defined in IE6/7/8/9
1222 'article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}' +
1223 // adds styling not present in IE6/7/8/9
1224 'mark{background:#FF0;color:#000}' +
1225 // hides non-rendered elements
1226 'template{display:none}'
1227 );
1228 }
1229 if (!supportsUnknownElements) {
1230 shivMethods(ownerDocument, data);
1231 }
1232 return ownerDocument;
1233 }
1234
1235 /*--------------------------------------------------------------------------*/
1236
1237 /**
1238 * The `html5` object is exposed so that more elements can be shived and
1239 * existing shiving can be detected on iframes.
1240 * @type Object
1241 * @example
1242 *
1243 * // options can be changed before the script is included
1244 * html5 = { 'elements': 'mark section', 'shivCSS': false, 'shivMethods': false };
1245 */
1246 var html5 = {
1247
1248 /**
1249 * An array or space separated string of node names of the elements to shiv.
1250 * @memberOf html5
1251 * @type Array|String
1252 */
1253 'elements': options.elements || 'abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video',
1254
1255 /**
1256 * current version of html5shiv
1257 */
1258 'version': version,
1259
1260 /**
1261 * A flag to indicate that the HTML5 style sheet should be inserted.
1262 * @memberOf html5
1263 * @type Boolean
1264 */
1265 'shivCSS': (options.shivCSS !== false),
1266
1267 /**
1268 * Is equal to true if a browser supports creating unknown/HTML5 elements
1269 * @memberOf html5
1270 * @type boolean
1271 */
1272 'supportsUnknownElements': supportsUnknownElements,
1273
1274 /**
1275 * A flag to indicate that the document's `createElement` and `createDocumentFragment`
1276 * methods should be overwritten.
1277 * @memberOf html5
1278 * @type Boolean
1279 */
1280 'shivMethods': (options.shivMethods !== false),
1281
1282 /**
1283 * A string to describe the type of `html5` object ("default" or "default print").
1284 * @memberOf html5
1285 * @type String
1286 */
1287 'type': 'default',
1288
1289 // shivs the document according to the specified `html5` object options
1290 'shivDocument': shivDocument,
1291
1292 //creates a shived element
1293 createElement: createElement,
1294
1295 //creates a shived documentFragment
1296 createDocumentFragment: createDocumentFragment
1297 };
1298
1299 /*--------------------------------------------------------------------------*/
1300
1301 // expose html5
1302 window.html5 = html5;
1303
1304 // shiv the document
1305 shivDocument(document);
1306
1307 }(this, document));
1308 /*>>shiv*/
1309
1310 // Assign private properties to the return object with prefix
1311 Modernizr._version = version;
1312
1313 // expose these for the plugin API. Look in the source for how to join() them against your input
1314 /*>>prefixes*/
1315 Modernizr._prefixes = prefixes;
1316 /*>>prefixes*/
1317 /*>>domprefixes*/
1318 Modernizr._domPrefixes = domPrefixes;
1319 Modernizr._cssomPrefixes = cssomPrefixes;
1320 /*>>domprefixes*/
1321
1322 /*>>mq*/
1323 // Modernizr.mq tests a given media query, live against the current state of the window
1324 // A few important notes:
1325 // * If a browser does not support media queries at all (eg. oldIE) the mq() will always return false
1326 // * A max-width or orientation query will be evaluated against the current state, which may change later.
1327 // * You must specify values. Eg. If you are testing support for the min-width media query use:
1328 // Modernizr.mq('(min-width:0)')
1329 // usage:
1330 // Modernizr.mq('only screen and (max-width:768)')
1331 Modernizr.mq = testMediaQuery;
1332 /*>>mq*/
1333
1334 /*>>hasevent*/
1335 // Modernizr.hasEvent() detects support for a given event, with an optional element to test on
1336 // Modernizr.hasEvent('gesturestart', elem)
1337 Modernizr.hasEvent = isEventSupported;
1338 /*>>hasevent*/
1339
1340 /*>>testprop*/
1341 // Modernizr.testProp() investigates whether a given style property is recognized
1342 // Note that the property names must be provided in the camelCase variant.
1343 // Modernizr.testProp('pointerEvents')
1344 Modernizr.testProp = function(prop){
1345 return testProps([prop]);
1346 };
1347 /*>>testprop*/
1348
1349 /*>>testallprops*/
1350 // Modernizr.testAllProps() investigates whether a given style property,
1351 // or any of its vendor-prefixed variants, is recognized
1352 // Note that the property names must be provided in the camelCase variant.
1353 // Modernizr.testAllProps('boxSizing')
1354 Modernizr.testAllProps = testPropsAll;
1355 /*>>testallprops*/
1356
1357
1358 /*>>teststyles*/
1359 // Modernizr.testStyles() allows you to add custom styles to the document and test an element afterwards
1360 // Modernizr.testStyles('#modernizr { position:absolute }', function(elem, rule){ ... })
1361 Modernizr.testStyles = injectElementWithStyles;
1362 /*>>teststyles*/
1363
1364
1365 /*>>prefixed*/
1366 // Modernizr.prefixed() returns the prefixed or nonprefixed property name variant of your input
1367 // Modernizr.prefixed('boxSizing') // 'MozBoxSizing'
1368
1369 // Properties must be passed as dom-style camelcase, rather than `box-sizing` hypentated style.
1370 // Return values will also be the camelCase variant, if you need to translate that to hypenated style use:
1371 //
1372 // str.replace(/([A-Z])/g, function(str,m1){ return '-' + m1.toLowerCase(); }).replace(/^ms-/,'-ms-');
1373
1374 // If you're trying to ascertain which transition end event to bind to, you might do something like...
1375 //
1376 // var transEndEventNames = {
1377 // 'WebkitTransition' : 'webkitTransitionEnd',
1378 // 'MozTransition' : 'transitionend',
1379 // 'OTransition' : 'oTransitionEnd',
1380 // 'msTransition' : 'MSTransitionEnd',
1381 // 'transition' : 'transitionend'
1382 // },
1383 // transEndEventName = transEndEventNames[ Modernizr.prefixed('transition') ];
1384
1385 Modernizr.prefixed = function(prop, obj, elem){
1386 if(!obj) {
1387 return testPropsAll(prop, 'pfx');
1388 } else {
1389 // Testing DOM property e.g. Modernizr.prefixed('requestAnimationFrame', window) // 'mozRequestAnimationFrame'
1390 return testPropsAll(prop, obj, elem);
1391 }
1392 };
1393 /*>>prefixed*/
1394
1395
1396 /*>>cssclasses*/
1397 // Remove "no-js" class from <html> element, if it exists:
1398 docElement.className = docElement.className.replace(/(^|\s)no-js(\s|$)/, '$1$2') +
1399
1400 // Add the new classes to the <html> element.
1401 (enableClasses ? ' js ' + classes.join(' ') : '');
1402 /*>>cssclasses*/
1403
1404 return Modernizr;
1405
1406})(this, this.document);
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/Views/Home/About.cshtml b/src/test/wix/TestData/CsprojWebApplicationNetFx/Views/Home/About.cshtml
new file mode 100644
index 00000000..4b2d9e84
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/Views/Home/About.cshtml
@@ -0,0 +1,7 @@
1@{
2 ViewBag.Title = "About";
3}
4<h2>@ViewBag.Title.</h2>
5<h3>@ViewBag.Message</h3>
6
7<p>Use this area to provide additional information.</p>
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/Views/Home/Contact.cshtml b/src/test/wix/TestData/CsprojWebApplicationNetFx/Views/Home/Contact.cshtml
new file mode 100644
index 00000000..0f4327e7
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/Views/Home/Contact.cshtml
@@ -0,0 +1,17 @@
1@{
2 ViewBag.Title = "Contact";
3}
4<h2>@ViewBag.Title.</h2>
5<h3>@ViewBag.Message</h3>
6
7<address>
8 One Microsoft Way<br />
9 Redmond, WA 98052-6399<br />
10 <abbr title="Phone">P:</abbr>
11 425.555.0100
12</address>
13
14<address>
15 <strong>Support:</strong> <a href="mailto:Support@example.com">Support@example.com</a><br />
16 <strong>Marketing:</strong> <a href="mailto:Marketing@example.com">Marketing@example.com</a>
17</address> \ No newline at end of file
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/Views/Home/Index.cshtml b/src/test/wix/TestData/CsprojWebApplicationNetFx/Views/Home/Index.cshtml
new file mode 100644
index 00000000..32e1dd94
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/Views/Home/Index.cshtml
@@ -0,0 +1,31 @@
1@{
2 ViewBag.Title = "Home Page";
3}
4
5<div class="jumbotron">
6 <h1>ASP.NET</h1>
7 <p class="lead">ASP.NET is a free web framework for building great Web sites and Web applications using HTML, CSS and JavaScript.</p>
8 <p><a href="https://asp.net" class="btn btn-primary btn-lg">Learn more &raquo;</a></p>
9</div>
10
11<div class="row">
12 <div class="col-md-4">
13 <h2>Getting started</h2>
14 <p>
15 ASP.NET MVC gives you a powerful, patterns-based way to build dynamic websites that
16 enables a clean separation of concerns and gives you full control over markup
17 for enjoyable, agile development.
18 </p>
19 <p><a class="btn btn-default" href="https://go.microsoft.com/fwlink/?LinkId=301865">Learn more &raquo;</a></p>
20 </div>
21 <div class="col-md-4">
22 <h2>Get more libraries</h2>
23 <p>NuGet is a free Visual Studio extension that makes it easy to add, remove, and update libraries and tools in Visual Studio projects.</p>
24 <p><a class="btn btn-default" href="https://go.microsoft.com/fwlink/?LinkId=301866">Learn more &raquo;</a></p>
25 </div>
26 <div class="col-md-4">
27 <h2>Web Hosting</h2>
28 <p>You can easily find a web hosting company that offers the right mix of features and price for your applications.</p>
29 <p><a class="btn btn-default" href="https://go.microsoft.com/fwlink/?LinkId=301867">Learn more &raquo;</a></p>
30 </div>
31</div> \ No newline at end of file
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/Views/Shared/Error.cshtml b/src/test/wix/TestData/CsprojWebApplicationNetFx/Views/Shared/Error.cshtml
new file mode 100644
index 00000000..4c9a28a2
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/Views/Shared/Error.cshtml
@@ -0,0 +1,13 @@
1<!DOCTYPE html>
2<html>
3<head>
4 <meta name="viewport" content="width=device-width" />
5 <title>Error</title>
6</head>
7<body>
8 <hgroup>
9 <h1>Error.</h1>
10 <h2>An error occurred while processing your request.</h2>
11 </hgroup>
12</body>
13</html>
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/Views/Shared/_Layout.cshtml b/src/test/wix/TestData/CsprojWebApplicationNetFx/Views/Shared/_Layout.cshtml
new file mode 100644
index 00000000..ec8183cf
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/Views/Shared/_Layout.cshtml
@@ -0,0 +1,42 @@
1<!DOCTYPE html>
2<html>
3<head>
4 <meta charset="utf-8" />
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>@ViewBag.Title - My ASP.NET Application</title>
7 @Styles.Render("~/Content/css")
8 @Scripts.Render("~/bundles/modernizr")
9</head>
10<body>
11 <div class="navbar navbar-inverse navbar-fixed-top">
12 <div class="container">
13 <div class="navbar-header">
14 <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
15 <span class="icon-bar"></span>
16 <span class="icon-bar"></span>
17 <span class="icon-bar"></span>
18 </button>
19 @Html.ActionLink("Application name", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" })
20 </div>
21 <div class="navbar-collapse collapse">
22 <ul class="nav navbar-nav">
23 <li>@Html.ActionLink("Home", "Index", "Home")</li>
24 <li>@Html.ActionLink("About", "About", "Home")</li>
25 <li>@Html.ActionLink("Contact", "Contact", "Home")</li>
26 </ul>
27 </div>
28 </div>
29 </div>
30 <div class="container body-content">
31 @RenderBody()
32 <hr />
33 <footer>
34 <p>&copy; @DateTime.Now.Year - My ASP.NET Application</p>
35 </footer>
36 </div>
37
38 @Scripts.Render("~/bundles/jquery")
39 @Scripts.Render("~/bundles/bootstrap")
40 @RenderSection("scripts", required: false)
41</body>
42</html>
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/Views/Web.config b/src/test/wix/TestData/CsprojWebApplicationNetFx/Views/Web.config
new file mode 100644
index 00000000..f850b291
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/Views/Web.config
@@ -0,0 +1,43 @@
1<?xml version="1.0"?>
2
3<configuration>
4 <configSections>
5 <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
6 <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
7 <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
8 </sectionGroup>
9 </configSections>
10
11 <system.web.webPages.razor>
12 <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
13 <pages pageBaseType="System.Web.Mvc.WebViewPage">
14 <namespaces>
15 <add namespace="System.Web.Mvc" />
16 <add namespace="System.Web.Mvc.Ajax" />
17 <add namespace="System.Web.Mvc.Html" />
18 <add namespace="System.Web.Optimization"/>
19 <add namespace="System.Web.Routing" />
20 <add namespace="CsprojWebApplicationNetFx" />
21 </namespaces>
22 </pages>
23 </system.web.webPages.razor>
24
25 <appSettings>
26 <add key="webpages:Enabled" value="false" />
27 </appSettings>
28
29 <system.webServer>
30 <handlers>
31 <remove name="BlockViewHandler"/>
32 <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
33 </handlers>
34 </system.webServer>
35
36 <system.web>
37 <compilation>
38 <assemblies>
39 <add assembly="System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
40 </assemblies>
41 </compilation>
42 </system.web>
43</configuration>
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/Views/_ViewStart.cshtml b/src/test/wix/TestData/CsprojWebApplicationNetFx/Views/_ViewStart.cshtml
new file mode 100644
index 00000000..2de62418
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/Views/_ViewStart.cshtml
@@ -0,0 +1,3 @@
1@{
2 Layout = "~/Views/Shared/_Layout.cshtml";
3}
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/Web.Debug.config b/src/test/wix/TestData/CsprojWebApplicationNetFx/Web.Debug.config
new file mode 100644
index 00000000..d7712aaf
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/Web.Debug.config
@@ -0,0 +1,30 @@
1<?xml version="1.0"?>
2
3<!-- For more information on using Web.config transformation visit https://go.microsoft.com/fwlink/?LinkId=301874 -->
4
5<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
6 <!--
7 In the example below, the "SetAttributes" transform will change the value of
8 "connectionString" to use "ReleaseSQLServer" only when the "Match" locator
9 finds an attribute "name" that has a value of "MyDB".
10
11 <connectionStrings>
12 <add name="MyDB"
13 connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True"
14 xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
15 </connectionStrings>
16 -->
17 <system.web>
18 <!--
19 In the example below, the "Replace" transform will replace the entire
20 <customErrors> section of your Web.config file.
21 Note that because there is only one customErrors section under the
22 <system.web> node, there is no need to use the "xdt:Locator" attribute.
23
24 <customErrors defaultRedirect="GenericError.htm"
25 mode="RemoteOnly" xdt:Transform="Replace">
26 <error statusCode="500" redirect="InternalError.htm"/>
27 </customErrors>
28 -->
29 </system.web>
30</configuration>
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/Web.Release.config b/src/test/wix/TestData/CsprojWebApplicationNetFx/Web.Release.config
new file mode 100644
index 00000000..28a4d5fc
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/Web.Release.config
@@ -0,0 +1,31 @@
1<?xml version="1.0"?>
2
3<!-- For more information on using Web.config transformation visit https://go.microsoft.com/fwlink/?LinkId=301874 -->
4
5<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
6 <!--
7 In the example below, the "SetAttributes" transform will change the value of
8 "connectionString" to use "ReleaseSQLServer" only when the "Match" locator
9 finds an attribute "name" that has a value of "MyDB".
10
11 <connectionStrings>
12 <add name="MyDB"
13 connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True"
14 xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
15 </connectionStrings>
16 -->
17 <system.web>
18 <compilation xdt:Transform="RemoveAttributes(debug)" />
19 <!--
20 In the example below, the "Replace" transform will replace the entire
21 <customErrors> section of your Web.config file.
22 Note that because there is only one customErrors section under the
23 <system.web> node, there is no need to use the "xdt:Locator" attribute.
24
25 <customErrors defaultRedirect="GenericError.htm"
26 mode="RemoteOnly" xdt:Transform="Replace">
27 <error statusCode="500" redirect="InternalError.htm"/>
28 </customErrors>
29 -->
30 </system.web>
31</configuration>
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/Web.config b/src/test/wix/TestData/CsprojWebApplicationNetFx/Web.config
new file mode 100644
index 00000000..d246aab1
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/Web.config
@@ -0,0 +1,55 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!--
3 For more information on how to configure your ASP.NET application, please visit
4 https://go.microsoft.com/fwlink/?LinkId=301880
5 -->
6<configuration>
7 <appSettings>
8 <add key="webpages:Version" value="3.0.0.0" />
9 <add key="webpages:Enabled" value="false" />
10 <add key="ClientValidationEnabled" value="true" />
11 <add key="UnobtrusiveJavaScriptEnabled" value="true" />
12 </appSettings>
13 <system.web>
14 <compilation debug="true" targetFramework="4.7.2" />
15 <httpRuntime targetFramework="4.7.2" />
16 </system.web>
17 <runtime>
18 <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
19 <dependentAssembly>
20 <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" />
21 <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2" />
22 </dependentAssembly>
23 <dependentAssembly>
24 <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
25 <bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
26 </dependentAssembly>
27 <dependentAssembly>
28 <assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35" />
29 <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0" />
30 </dependentAssembly>
31 <dependentAssembly>
32 <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
33 <bindingRedirect oldVersion="1.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930" />
34 </dependentAssembly>
35 <dependentAssembly>
36 <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
37 <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
38 </dependentAssembly>
39 <dependentAssembly>
40 <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
41 <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
42 </dependentAssembly>
43 <dependentAssembly>
44 <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
45 <bindingRedirect oldVersion="1.0.0.0-5.2.7.0" newVersion="5.2.7.0" />
46 </dependentAssembly>
47 </assemblyBinding>
48 </runtime>
49 <system.codedom>
50 <compilers>
51 <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" />
52 <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
53 </compilers>
54 </system.codedom>
55</configuration> \ No newline at end of file
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/favicon.ico b/src/test/wix/TestData/CsprojWebApplicationNetFx/favicon.ico
new file mode 100644
index 00000000..a3a79998
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/favicon.ico
Binary files differ
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/fonts/glyphicons-halflings-regular.svg b/src/test/wix/TestData/CsprojWebApplicationNetFx/fonts/glyphicons-halflings-regular.svg
new file mode 100644
index 00000000..94fb5490
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/fonts/glyphicons-halflings-regular.svg
@@ -0,0 +1,288 @@
1<?xml version="1.0" standalone="no"?>
2<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3<svg xmlns="http://www.w3.org/2000/svg">
4<metadata></metadata>
5<defs>
6<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
7<font-face units-per-em="1200" ascent="960" descent="-240" />
8<missing-glyph horiz-adv-x="500" />
9<glyph horiz-adv-x="0" />
10<glyph horiz-adv-x="400" />
11<glyph unicode=" " />
12<glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" />
13<glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" />
14<glyph unicode="&#xa0;" />
15<glyph unicode="&#xa5;" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" />
16<glyph unicode="&#x2000;" horiz-adv-x="650" />
17<glyph unicode="&#x2001;" horiz-adv-x="1300" />
18<glyph unicode="&#x2002;" horiz-adv-x="650" />
19<glyph unicode="&#x2003;" horiz-adv-x="1300" />
20<glyph unicode="&#x2004;" horiz-adv-x="433" />
21<glyph unicode="&#x2005;" horiz-adv-x="325" />
22<glyph unicode="&#x2006;" horiz-adv-x="216" />
23<glyph unicode="&#x2007;" horiz-adv-x="216" />
24<glyph unicode="&#x2008;" horiz-adv-x="162" />
25<glyph unicode="&#x2009;" horiz-adv-x="260" />
26<glyph unicode="&#x200a;" horiz-adv-x="72" />
27<glyph unicode="&#x202f;" horiz-adv-x="260" />
28<glyph unicode="&#x205f;" horiz-adv-x="325" />
29<glyph unicode="&#x20ac;" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" />
30<glyph unicode="&#x20bd;" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" />
31<glyph unicode="&#x2212;" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
32<glyph unicode="&#x231b;" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" />
33<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
34<glyph unicode="&#x2601;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" />
35<glyph unicode="&#x26fa;" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " />
36<glyph unicode="&#x2709;" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" />
37<glyph unicode="&#x270f;" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" />
38<glyph unicode="&#xe001;" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" />
39<glyph unicode="&#xe002;" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" />
40<glyph unicode="&#xe003;" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" />
41<glyph unicode="&#xe005;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" />
42<glyph unicode="&#xe006;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" />
43<glyph unicode="&#xe007;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" />
44<glyph unicode="&#xe008;" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" />
45<glyph unicode="&#xe009;" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" />
46<glyph unicode="&#xe010;" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
47<glyph unicode="&#xe011;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" />
48<glyph unicode="&#xe012;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
49<glyph unicode="&#xe013;" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" />
50<glyph unicode="&#xe014;" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" />
51<glyph unicode="&#xe015;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" />
52<glyph unicode="&#xe016;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
53<glyph unicode="&#xe017;" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" />
54<glyph unicode="&#xe018;" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" />
55<glyph unicode="&#xe019;" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" />
56<glyph unicode="&#xe020;" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" />
57<glyph unicode="&#xe021;" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" />
58<glyph unicode="&#xe022;" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" />
59<glyph unicode="&#xe023;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" />
60<glyph unicode="&#xe024;" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" />
61<glyph unicode="&#xe025;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" />
62<glyph unicode="&#xe026;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " />
63<glyph unicode="&#xe027;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" />
64<glyph unicode="&#xe028;" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" />
65<glyph unicode="&#xe029;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
66<glyph unicode="&#xe030;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" />
67<glyph unicode="&#xe031;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" />
68<glyph unicode="&#xe032;" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" />
69<glyph unicode="&#xe033;" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" />
70<glyph unicode="&#xe034;" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" />
71<glyph unicode="&#xe035;" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" />
72<glyph unicode="&#xe036;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" />
73<glyph unicode="&#xe037;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" />
74<glyph unicode="&#xe038;" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" />
75<glyph unicode="&#xe039;" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" />
76<glyph unicode="&#xe040;" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" />
77<glyph unicode="&#xe041;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
78<glyph unicode="&#xe042;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
79<glyph unicode="&#xe043;" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" />
80<glyph unicode="&#xe044;" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" />
81<glyph unicode="&#xe045;" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" />
82<glyph unicode="&#xe046;" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" />
83<glyph unicode="&#xe047;" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" />
84<glyph unicode="&#xe048;" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" />
85<glyph unicode="&#xe049;" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" />
86<glyph unicode="&#xe050;" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" />
87<glyph unicode="&#xe051;" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" />
88<glyph unicode="&#xe052;" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
89<glyph unicode="&#xe053;" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
90<glyph unicode="&#xe054;" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" />
91<glyph unicode="&#xe055;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
92<glyph unicode="&#xe056;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
93<glyph unicode="&#xe057;" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
94<glyph unicode="&#xe058;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
95<glyph unicode="&#xe059;" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" />
96<glyph unicode="&#xe060;" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" />
97<glyph unicode="&#xe062;" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" />
98<glyph unicode="&#xe063;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" />
99<glyph unicode="&#xe064;" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" />
100<glyph unicode="&#xe065;" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" />
101<glyph unicode="&#xe066;" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" />
102<glyph unicode="&#xe067;" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" />
103<glyph unicode="&#xe068;" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" />
104<glyph unicode="&#xe069;" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
105<glyph unicode="&#xe070;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
106<glyph unicode="&#xe071;" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" />
107<glyph unicode="&#xe072;" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" />
108<glyph unicode="&#xe073;" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" />
109<glyph unicode="&#xe074;" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" />
110<glyph unicode="&#xe075;" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" />
111<glyph unicode="&#xe076;" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" />
112<glyph unicode="&#xe077;" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" />
113<glyph unicode="&#xe078;" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
114<glyph unicode="&#xe079;" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" />
115<glyph unicode="&#xe080;" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" />
116<glyph unicode="&#xe081;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" />
117<glyph unicode="&#xe082;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" />
118<glyph unicode="&#xe083;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" />
119<glyph unicode="&#xe084;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" />
120<glyph unicode="&#xe085;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
121<glyph unicode="&#xe086;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" />
122<glyph unicode="&#xe087;" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" />
123<glyph unicode="&#xe088;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" />
124<glyph unicode="&#xe089;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" />
125<glyph unicode="&#xe090;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" />
126<glyph unicode="&#xe091;" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" />
127<glyph unicode="&#xe092;" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" />
128<glyph unicode="&#xe093;" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" />
129<glyph unicode="&#xe094;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" />
130<glyph unicode="&#xe095;" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" />
131<glyph unicode="&#xe096;" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" />
132<glyph unicode="&#xe097;" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" />
133<glyph unicode="&#xe101;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
134<glyph unicode="&#xe102;" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" />
135<glyph unicode="&#xe103;" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" />
136<glyph unicode="&#xe104;" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" />
137<glyph unicode="&#xe105;" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
138<glyph unicode="&#xe106;" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
139<glyph unicode="&#xe107;" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" />
140<glyph unicode="&#xe108;" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" />
141<glyph unicode="&#xe109;" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" />
142<glyph unicode="&#xe110;" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" />
143<glyph unicode="&#xe111;" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" />
144<glyph unicode="&#xe112;" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" />
145<glyph unicode="&#xe113;" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" />
146<glyph unicode="&#xe114;" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" />
147<glyph unicode="&#xe115;" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
148<glyph unicode="&#xe116;" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" />
149<glyph unicode="&#xe117;" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" />
150<glyph unicode="&#xe118;" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" />
151<glyph unicode="&#xe119;" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
152<glyph unicode="&#xe120;" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" />
153<glyph unicode="&#xe121;" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" />
154<glyph unicode="&#xe122;" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" />
155<glyph unicode="&#xe123;" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" />
156<glyph unicode="&#xe124;" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" />
157<glyph unicode="&#xe125;" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" />
158<glyph unicode="&#xe126;" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" />
159<glyph unicode="&#xe127;" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" />
160<glyph unicode="&#xe128;" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" />
161<glyph unicode="&#xe129;" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
162<glyph unicode="&#xe130;" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" />
163<glyph unicode="&#xe131;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" />
164<glyph unicode="&#xe132;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" />
165<glyph unicode="&#xe133;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" />
166<glyph unicode="&#xe134;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" />
167<glyph unicode="&#xe135;" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" />
168<glyph unicode="&#xe136;" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" />
169<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " />
170<glyph unicode="&#xe138;" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" />
171<glyph unicode="&#xe139;" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" />
172<glyph unicode="&#xe140;" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" />
173<glyph unicode="&#xe141;" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" />
174<glyph unicode="&#xe142;" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" />
175<glyph unicode="&#xe143;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" />
176<glyph unicode="&#xe144;" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" />
177<glyph unicode="&#xe145;" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" />
178<glyph unicode="&#xe146;" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" />
179<glyph unicode="&#xe148;" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" />
180<glyph unicode="&#xe149;" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" />
181<glyph unicode="&#xe150;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
182<glyph unicode="&#xe151;" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " />
183<glyph unicode="&#xe152;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " />
184<glyph unicode="&#xe153;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" />
185<glyph unicode="&#xe154;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" />
186<glyph unicode="&#xe155;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" />
187<glyph unicode="&#xe156;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" />
188<glyph unicode="&#xe157;" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" />
189<glyph unicode="&#xe158;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
190<glyph unicode="&#xe159;" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" />
191<glyph unicode="&#xe160;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" />
192<glyph unicode="&#xe161;" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
193<glyph unicode="&#xe162;" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" />
194<glyph unicode="&#xe163;" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
195<glyph unicode="&#xe164;" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" />
196<glyph unicode="&#xe165;" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" />
197<glyph unicode="&#xe166;" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
198<glyph unicode="&#xe167;" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
199<glyph unicode="&#xe168;" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" />
200<glyph unicode="&#xe169;" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
201<glyph unicode="&#xe170;" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
202<glyph unicode="&#xe171;" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" />
203<glyph unicode="&#xe172;" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" />
204<glyph unicode="&#xe173;" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" />
205<glyph unicode="&#xe174;" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" />
206<glyph unicode="&#xe175;" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" />
207<glyph unicode="&#xe176;" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" />
208<glyph unicode="&#xe177;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" />
209<glyph unicode="&#xe178;" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" />
210<glyph unicode="&#xe179;" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" />
211<glyph unicode="&#xe180;" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" />
212<glyph unicode="&#xe181;" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" />
213<glyph unicode="&#xe182;" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" />
214<glyph unicode="&#xe183;" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" />
215<glyph unicode="&#xe184;" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
216<glyph unicode="&#xe185;" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " />
217<glyph unicode="&#xe186;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
218<glyph unicode="&#xe187;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
219<glyph unicode="&#xe188;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" />
220<glyph unicode="&#xe189;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" />
221<glyph unicode="&#xe190;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" />
222<glyph unicode="&#xe191;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" />
223<glyph unicode="&#xe192;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" />
224<glyph unicode="&#xe193;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" />
225<glyph unicode="&#xe194;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" />
226<glyph unicode="&#xe195;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" />
227<glyph unicode="&#xe197;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" />
228<glyph unicode="&#xe198;" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" />
229<glyph unicode="&#xe199;" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" />
230<glyph unicode="&#xe200;" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" />
231<glyph unicode="&#xe201;" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" />
232<glyph unicode="&#xe202;" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" />
233<glyph unicode="&#xe203;" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" />
234<glyph unicode="&#xe204;" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" />
235<glyph unicode="&#xe205;" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" />
236<glyph unicode="&#xe206;" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" />
237<glyph unicode="&#xe209;" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" />
238<glyph unicode="&#xe210;" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
239<glyph unicode="&#xe211;" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
240<glyph unicode="&#xe212;" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
241<glyph unicode="&#xe213;" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
242<glyph unicode="&#xe214;" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
243<glyph unicode="&#xe215;" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
244<glyph unicode="&#xe216;" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" />
245<glyph unicode="&#xe218;" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" />
246<glyph unicode="&#xe219;" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" />
247<glyph unicode="&#xe221;" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" />
248<glyph unicode="&#xe223;" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" />
249<glyph unicode="&#xe224;" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " />
250<glyph unicode="&#xe225;" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" />
251<glyph unicode="&#xe226;" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" />
252<glyph unicode="&#xe227;" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" />
253<glyph unicode="&#xe230;" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" />
254<glyph unicode="&#xe231;" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
255<glyph unicode="&#xe232;" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
256<glyph unicode="&#xe233;" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" />
257<glyph unicode="&#xe234;" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
258<glyph unicode="&#xe235;" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
259<glyph unicode="&#xe236;" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
260<glyph unicode="&#xe237;" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" />
261<glyph unicode="&#xe238;" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" />
262<glyph unicode="&#xe239;" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" />
263<glyph unicode="&#xe240;" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" />
264<glyph unicode="&#xe241;" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" />
265<glyph unicode="&#xe242;" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" />
266<glyph unicode="&#xe243;" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" />
267<glyph unicode="&#xe244;" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" />
268<glyph unicode="&#xe245;" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" />
269<glyph unicode="&#xe246;" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" />
270<glyph unicode="&#xe247;" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
271<glyph unicode="&#xe248;" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" />
272<glyph unicode="&#xe249;" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
273<glyph unicode="&#xe250;" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" />
274<glyph unicode="&#xe251;" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" />
275<glyph unicode="&#xe252;" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" />
276<glyph unicode="&#xe253;" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" />
277<glyph unicode="&#xe254;" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" />
278<glyph unicode="&#xe255;" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" />
279<glyph unicode="&#xe256;" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" />
280<glyph unicode="&#xe257;" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" />
281<glyph unicode="&#xe258;" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" />
282<glyph unicode="&#xe259;" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" />
283<glyph unicode="&#xe260;" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" />
284<glyph unicode="&#xf8ff;" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" />
285<glyph unicode="&#x1f511;" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
286<glyph unicode="&#x1f6aa;" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
287</font>
288</defs></svg> \ No newline at end of file
diff --git a/src/test/wix/TestData/CsprojWebApplicationNetFx/packages.config b/src/test/wix/TestData/CsprojWebApplicationNetFx/packages.config
new file mode 100644
index 00000000..40f85c9e
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWebApplicationNetFx/packages.config
@@ -0,0 +1,17 @@
1<?xml version="1.0" encoding="utf-8"?>
2<packages>
3 <package id="Antlr" version="3.5.0.2" targetFramework="net472" />
4 <package id="bootstrap" version="3.4.1" targetFramework="net472" />
5 <package id="jQuery" version="3.4.1" targetFramework="net472" />
6 <package id="jQuery.Validation" version="1.17.0" targetFramework="net472" />
7 <package id="Microsoft.AspNet.Mvc" version="5.2.7" targetFramework="net472" />
8 <package id="Microsoft.AspNet.Razor" version="3.2.7" targetFramework="net472" />
9 <package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net472" />
10 <package id="Microsoft.AspNet.WebPages" version="3.2.7" targetFramework="net472" />
11 <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="2.0.1" targetFramework="net472" />
12 <package id="Microsoft.jQuery.Unobtrusive.Validation" version="3.2.11" targetFramework="net472" />
13 <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net472" />
14 <package id="Modernizr" version="2.8.3" targetFramework="net472" />
15 <package id="Newtonsoft.Json" version="12.0.2" targetFramework="net472" />
16 <package id="WebGrease" version="1.6.0" targetFramework="net472" />
17</packages> \ No newline at end of file
diff --git a/src/test/wix/TestData/CsprojWindowsFormsNetFx/App.config b/src/test/wix/TestData/CsprojWindowsFormsNetFx/App.config
new file mode 100644
index 00000000..56efbc7b
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWindowsFormsNetFx/App.config
@@ -0,0 +1,6 @@
1<?xml version="1.0" encoding="utf-8" ?>
2<configuration>
3 <startup>
4 <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
5 </startup>
6</configuration> \ No newline at end of file
diff --git a/src/test/wix/TestData/CsprojWindowsFormsNetFx/CsprojWindowsFormsNetFx.csproj b/src/test/wix/TestData/CsprojWindowsFormsNetFx/CsprojWindowsFormsNetFx.csproj
new file mode 100644
index 00000000..3b044194
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWindowsFormsNetFx/CsprojWindowsFormsNetFx.csproj
@@ -0,0 +1,86 @@
1<?xml version="1.0" encoding="utf-8"?>
2<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3 <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
4 <PropertyGroup>
5 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
6 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
7 <ProjectGuid>{3B5570AD-4191-4A66-A81D-8CBD14496340}</ProjectGuid>
8 <OutputType>WinExe</OutputType>
9 <RootNamespace>CsprojWindowsFormsNetFx</RootNamespace>
10 <AssemblyName>CsprojWindowsFormsNetFx</AssemblyName>
11 <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
12 <FileAlignment>512</FileAlignment>
13 <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
14 <Deterministic>true</Deterministic>
15 </PropertyGroup>
16 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
17 <PlatformTarget>AnyCPU</PlatformTarget>
18 <DebugSymbols>true</DebugSymbols>
19 <DebugType>full</DebugType>
20 <Optimize>false</Optimize>
21 <OutputPath>bin\Debug\</OutputPath>
22 <DefineConstants>DEBUG;TRACE</DefineConstants>
23 <ErrorReport>prompt</ErrorReport>
24 <WarningLevel>4</WarningLevel>
25 </PropertyGroup>
26 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
27 <PlatformTarget>AnyCPU</PlatformTarget>
28 <DebugType>pdbonly</DebugType>
29 <Optimize>true</Optimize>
30 <OutputPath>bin\Release\</OutputPath>
31 <DefineConstants>TRACE</DefineConstants>
32 <ErrorReport>prompt</ErrorReport>
33 <WarningLevel>4</WarningLevel>
34 </PropertyGroup>
35 <ItemGroup>
36 <Reference Include="System" />
37 <Reference Include="System.Core" />
38 <Reference Include="System.Xml.Linq" />
39 <Reference Include="System.Data.DataSetExtensions" />
40 <Reference Include="Microsoft.CSharp" />
41 <Reference Include="System.Data" />
42 <Reference Include="System.Deployment" />
43 <Reference Include="System.Drawing" />
44 <Reference Include="System.Net.Http" />
45 <Reference Include="System.Windows.Forms" />
46 <Reference Include="System.Xml" />
47 </ItemGroup>
48 <ItemGroup>
49 <Compile Include="Form1.cs">
50 <SubType>Form</SubType>
51 </Compile>
52 <Compile Include="Form1.Designer.cs">
53 <DependentUpon>Form1.cs</DependentUpon>
54 </Compile>
55 <Compile Include="Program.cs" />
56 <Compile Include="Properties\AssemblyInfo.cs" />
57 <EmbeddedResource Include="Properties\Resources.resx">
58 <Generator>ResXFileCodeGenerator</Generator>
59 <LastGenOutput>Resources.Designer.cs</LastGenOutput>
60 <SubType>Designer</SubType>
61 </EmbeddedResource>
62 <Compile Include="Properties\Resources.Designer.cs">
63 <AutoGen>True</AutoGen>
64 <DependentUpon>Resources.resx</DependentUpon>
65 </Compile>
66 <None Include="Properties\Settings.settings">
67 <Generator>SettingsSingleFileGenerator</Generator>
68 <LastGenOutput>Settings.Designer.cs</LastGenOutput>
69 </None>
70 <Compile Include="Properties\Settings.Designer.cs">
71 <AutoGen>True</AutoGen>
72 <DependentUpon>Settings.settings</DependentUpon>
73 <DesignTimeSharedInput>True</DesignTimeSharedInput>
74 </Compile>
75 </ItemGroup>
76 <ItemGroup>
77 <None Include="App.config" />
78 </ItemGroup>
79 <ItemGroup>
80 <ProjectReference Include="..\CsprojClassLibraryNetFx\CsprojClassLibraryNetFx.csproj">
81 <Project>{984d615d-adb1-49b4-ae0b-4496ed963881}</Project>
82 <Name>CsprojClassLibraryNetFx</Name>
83 </ProjectReference>
84 </ItemGroup>
85 <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
86</Project> \ No newline at end of file
diff --git a/src/test/wix/TestData/CsprojWindowsFormsNetFx/Form1.Designer.cs b/src/test/wix/TestData/CsprojWindowsFormsNetFx/Form1.Designer.cs
new file mode 100644
index 00000000..615d0826
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWindowsFormsNetFx/Form1.Designer.cs
@@ -0,0 +1,41 @@
1
2namespace CsprojWindowsFormsNetFx
3{
4 partial class Form1
5 {
6 /// <summary>
7 /// Required designer variable.
8 /// </summary>
9 private System.ComponentModel.IContainer components = null;
10
11 /// <summary>
12 /// Clean up any resources being used.
13 /// </summary>
14 /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
15 protected override void Dispose(bool disposing)
16 {
17 if (disposing && (components != null))
18 {
19 components.Dispose();
20 }
21 base.Dispose(disposing);
22 }
23
24 #region Windows Form Designer generated code
25
26 /// <summary>
27 /// Required method for Designer support - do not modify
28 /// the contents of this method with the code editor.
29 /// </summary>
30 private void InitializeComponent()
31 {
32 this.components = new System.ComponentModel.Container();
33 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
34 this.ClientSize = new System.Drawing.Size(800, 450);
35 this.Text = "Form1";
36 }
37
38 #endregion
39 }
40}
41
diff --git a/src/test/wix/TestData/CsprojWindowsFormsNetFx/Form1.cs b/src/test/wix/TestData/CsprojWindowsFormsNetFx/Form1.cs
new file mode 100644
index 00000000..b8456a20
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWindowsFormsNetFx/Form1.cs
@@ -0,0 +1,20 @@
1using System;
2using System.Collections.Generic;
3using System.ComponentModel;
4using System.Data;
5using System.Drawing;
6using System.Linq;
7using System.Text;
8using System.Threading.Tasks;
9using System.Windows.Forms;
10
11namespace CsprojWindowsFormsNetFx
12{
13 public partial class Form1 : Form
14 {
15 public Form1()
16 {
17 InitializeComponent();
18 }
19 }
20}
diff --git a/src/test/wix/TestData/CsprojWindowsFormsNetFx/Program.cs b/src/test/wix/TestData/CsprojWindowsFormsNetFx/Program.cs
new file mode 100644
index 00000000..84340d70
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWindowsFormsNetFx/Program.cs
@@ -0,0 +1,22 @@
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Threading.Tasks;
5using System.Windows.Forms;
6
7namespace CsprojWindowsFormsNetFx
8{
9 static class Program
10 {
11 /// <summary>
12 /// The main entry point for the application.
13 /// </summary>
14 [STAThread]
15 static void Main()
16 {
17 Application.EnableVisualStyles();
18 Application.SetCompatibleTextRenderingDefault(false);
19 Application.Run(new Form1());
20 }
21 }
22}
diff --git a/src/test/wix/TestData/CsprojWindowsFormsNetFx/Properties/AssemblyInfo.cs b/src/test/wix/TestData/CsprojWindowsFormsNetFx/Properties/AssemblyInfo.cs
new file mode 100644
index 00000000..a64f9556
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWindowsFormsNetFx/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
1using System.Reflection;
2using System.Runtime.CompilerServices;
3using System.Runtime.InteropServices;
4
5// General Information about an assembly is controlled through the following
6// set of attributes. Change these attribute values to modify the information
7// associated with an assembly.
8[assembly: AssemblyTitle("CsprojWindowsFormsNetFx")]
9[assembly: AssemblyDescription("")]
10[assembly: AssemblyConfiguration("")]
11[assembly: AssemblyCompany("")]
12[assembly: AssemblyProduct("CsprojWindowsFormsNetFx")]
13[assembly: AssemblyCopyright("Copyright © 2021")]
14[assembly: AssemblyTrademark("")]
15[assembly: AssemblyCulture("")]
16
17// Setting ComVisible to false makes the types in this assembly not visible
18// to COM components. If you need to access a type in this assembly from
19// COM, set the ComVisible attribute to true on that type.
20[assembly: ComVisible(false)]
21
22// The following GUID is for the ID of the typelib if this project is exposed to COM
23[assembly: Guid("3b5570ad-4191-4a66-a81d-8cbd14496340")]
24
25// Version information for an assembly consists of the following four values:
26//
27// Major Version
28// Minor Version
29// Build Number
30// Revision
31//
32// You can specify all the values or you can default the Build and Revision Numbers
33// by using the '*' as shown below:
34// [assembly: AssemblyVersion("1.0.*")]
35[assembly: AssemblyVersion("1.0.0.0")]
36[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/src/test/wix/TestData/CsprojWindowsFormsNetFx/Properties/Resources.Designer.cs b/src/test/wix/TestData/CsprojWindowsFormsNetFx/Properties/Resources.Designer.cs
new file mode 100644
index 00000000..c450b36d
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWindowsFormsNetFx/Properties/Resources.Designer.cs
@@ -0,0 +1,70 @@
1//------------------------------------------------------------------------------
2// <auto-generated>
3// This code was generated by a tool.
4// Runtime Version:4.0.30319.42000
5//
6// Changes to this file may cause incorrect behavior and will be lost if
7// the code is regenerated.
8// </auto-generated>
9//------------------------------------------------------------------------------
10
11
12namespace CsprojWindowsFormsNetFx.Properties
13{
14 /// <summary>
15 /// A strongly-typed resource class, for looking up localized strings, etc.
16 /// </summary>
17 // This class was auto-generated by the StronglyTypedResourceBuilder
18 // class via a tool like ResGen or Visual Studio.
19 // To add or remove a member, edit your .ResX file then rerun ResGen
20 // with the /str option, or rebuild your VS project.
21 [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
22 [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
23 [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
24 internal class Resources
25 {
26
27 private static global::System.Resources.ResourceManager resourceMan;
28
29 private static global::System.Globalization.CultureInfo resourceCulture;
30
31 [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 internal Resources()
33 {
34 }
35
36 /// <summary>
37 /// Returns the cached ResourceManager instance used by this class.
38 /// </summary>
39 [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
40 internal static global::System.Resources.ResourceManager ResourceManager
41 {
42 get
43 {
44 if ((resourceMan == null))
45 {
46 global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CsprojWindowsFormsNetFx.Properties.Resources", typeof(Resources).Assembly);
47 resourceMan = temp;
48 }
49 return resourceMan;
50 }
51 }
52
53 /// <summary>
54 /// Overrides the current thread's CurrentUICulture property for all
55 /// resource lookups using this strongly typed resource class.
56 /// </summary>
57 [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
58 internal static global::System.Globalization.CultureInfo Culture
59 {
60 get
61 {
62 return resourceCulture;
63 }
64 set
65 {
66 resourceCulture = value;
67 }
68 }
69 }
70}
diff --git a/src/test/wix/TestData/CsprojWindowsFormsNetFx/Properties/Resources.resx b/src/test/wix/TestData/CsprojWindowsFormsNetFx/Properties/Resources.resx
new file mode 100644
index 00000000..af7dbebb
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWindowsFormsNetFx/Properties/Resources.resx
@@ -0,0 +1,117 @@
1<?xml version="1.0" encoding="utf-8"?>
2<root>
3 <!--
4 Microsoft ResX Schema
5
6 Version 2.0
7
8 The primary goals of this format is to allow a simple XML format
9 that is mostly human readable. The generation and parsing of the
10 various data types are done through the TypeConverter classes
11 associated with the data types.
12
13 Example:
14
15 ... ado.net/XML headers & schema ...
16 <resheader name="resmimetype">text/microsoft-resx</resheader>
17 <resheader name="version">2.0</resheader>
18 <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19 <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20 <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21 <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22 <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23 <value>[base64 mime encoded serialized .NET Framework object]</value>
24 </data>
25 <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26 <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27 <comment>This is a comment</comment>
28 </data>
29
30 There are any number of "resheader" rows that contain simple
31 name/value pairs.
32
33 Each data row contains a name, and value. The row also contains a
34 type or mimetype. Type corresponds to a .NET class that support
35 text/value conversion through the TypeConverter architecture.
36 Classes that don't support this are serialized and stored with the
37 mimetype set.
38
39 The mimetype is used for serialized objects, and tells the
40 ResXResourceReader how to depersist the object. This is currently not
41 extensible. For a given mimetype the value must be set accordingly:
42
43 Note - application/x-microsoft.net.object.binary.base64 is the format
44 that the ResXResourceWriter will generate, however the reader can
45 read any of the formats listed below.
46
47 mimetype: application/x-microsoft.net.object.binary.base64
48 value : The object must be serialized with
49 : System.Serialization.Formatters.Binary.BinaryFormatter
50 : and then encoded with base64 encoding.
51
52 mimetype: application/x-microsoft.net.object.soap.base64
53 value : The object must be serialized with
54 : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55 : and then encoded with base64 encoding.
56
57 mimetype: application/x-microsoft.net.object.bytearray.base64
58 value : The object must be serialized into a byte array
59 : using a System.ComponentModel.TypeConverter
60 : and then encoded with base64 encoding.
61 -->
62 <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63 <xsd:element name="root" msdata:IsDataSet="true">
64 <xsd:complexType>
65 <xsd:choice maxOccurs="unbounded">
66 <xsd:element name="metadata">
67 <xsd:complexType>
68 <xsd:sequence>
69 <xsd:element name="value" type="xsd:string" minOccurs="0" />
70 </xsd:sequence>
71 <xsd:attribute name="name" type="xsd:string" />
72 <xsd:attribute name="type" type="xsd:string" />
73 <xsd:attribute name="mimetype" type="xsd:string" />
74 </xsd:complexType>
75 </xsd:element>
76 <xsd:element name="assembly">
77 <xsd:complexType>
78 <xsd:attribute name="alias" type="xsd:string" />
79 <xsd:attribute name="name" type="xsd:string" />
80 </xsd:complexType>
81 </xsd:element>
82 <xsd:element name="data">
83 <xsd:complexType>
84 <xsd:sequence>
85 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
86 <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
87 </xsd:sequence>
88 <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
89 <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
90 <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
91 </xsd:complexType>
92 </xsd:element>
93 <xsd:element name="resheader">
94 <xsd:complexType>
95 <xsd:sequence>
96 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
97 </xsd:sequence>
98 <xsd:attribute name="name" type="xsd:string" use="required" />
99 </xsd:complexType>
100 </xsd:element>
101 </xsd:choice>
102 </xsd:complexType>
103 </xsd:element>
104 </xsd:schema>
105 <resheader name="resmimetype">
106 <value>text/microsoft-resx</value>
107 </resheader>
108 <resheader name="version">
109 <value>2.0</value>
110 </resheader>
111 <resheader name="reader">
112 <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
113 </resheader>
114 <resheader name="writer">
115 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116 </resheader>
117</root> \ No newline at end of file
diff --git a/src/test/wix/TestData/CsprojWindowsFormsNetFx/Properties/Settings.Designer.cs b/src/test/wix/TestData/CsprojWindowsFormsNetFx/Properties/Settings.Designer.cs
new file mode 100644
index 00000000..2ad6fcfd
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWindowsFormsNetFx/Properties/Settings.Designer.cs
@@ -0,0 +1,29 @@
1//------------------------------------------------------------------------------
2// <auto-generated>
3// This code was generated by a tool.
4// Runtime Version:4.0.30319.42000
5//
6// Changes to this file may cause incorrect behavior and will be lost if
7// the code is regenerated.
8// </auto-generated>
9//------------------------------------------------------------------------------
10
11
12namespace CsprojWindowsFormsNetFx.Properties
13{
14 [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
16 internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
17 {
18
19 private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
20
21 public static Settings Default
22 {
23 get
24 {
25 return defaultInstance;
26 }
27 }
28 }
29}
diff --git a/src/test/wix/TestData/CsprojWindowsFormsNetFx/Properties/Settings.settings b/src/test/wix/TestData/CsprojWindowsFormsNetFx/Properties/Settings.settings
new file mode 100644
index 00000000..39645652
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWindowsFormsNetFx/Properties/Settings.settings
@@ -0,0 +1,7 @@
1<?xml version='1.0' encoding='utf-8'?>
2<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
3 <Profiles>
4 <Profile Name="(Default)" />
5 </Profiles>
6 <Settings />
7</SettingsFile>
diff --git a/src/test/wix/TestData/CsprojWpfNetCore/App.xaml b/src/test/wix/TestData/CsprojWpfNetCore/App.xaml
new file mode 100644
index 00000000..bcc53488
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWpfNetCore/App.xaml
@@ -0,0 +1,9 @@
1<Application x:Class="CsprojWpfNetCore.App"
2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4 xmlns:local="clr-namespace:CsprojWpfNetCore"
5 StartupUri="MainWindow.xaml">
6 <Application.Resources>
7
8 </Application.Resources>
9</Application>
diff --git a/src/test/wix/TestData/CsprojWpfNetCore/App.xaml.cs b/src/test/wix/TestData/CsprojWpfNetCore/App.xaml.cs
new file mode 100644
index 00000000..e73e2ac3
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWpfNetCore/App.xaml.cs
@@ -0,0 +1,17 @@
1using System;
2using System.Collections.Generic;
3using System.Configuration;
4using System.Data;
5using System.Linq;
6using System.Threading.Tasks;
7using System.Windows;
8
9namespace CsprojWpfNetCore
10{
11 /// <summary>
12 /// Interaction logic for App.xaml
13 /// </summary>
14 public partial class App : Application
15 {
16 }
17}
diff --git a/src/test/wix/TestData/CsprojWpfNetCore/AssemblyInfo.cs b/src/test/wix/TestData/CsprojWpfNetCore/AssemblyInfo.cs
new file mode 100644
index 00000000..8b5504ec
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWpfNetCore/AssemblyInfo.cs
@@ -0,0 +1,10 @@
1using System.Windows;
2
3[assembly: ThemeInfo(
4 ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
5 //(used if a resource is not found in the page,
6 // or application resource dictionaries)
7 ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
8 //(used if a resource is not found in the page,
9 // app, or any theme specific resource dictionaries)
10)]
diff --git a/src/test/wix/TestData/CsprojWpfNetCore/CsprojWpfNetCore.csproj b/src/test/wix/TestData/CsprojWpfNetCore/CsprojWpfNetCore.csproj
new file mode 100644
index 00000000..0b23f41e
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWpfNetCore/CsprojWpfNetCore.csproj
@@ -0,0 +1,14 @@
1<Project Sdk="Microsoft.NET.Sdk">
2
3 <PropertyGroup>
4 <OutputType>WinExe</OutputType>
5 <TargetFramework>net5.0-windows</TargetFramework>
6 <Nullable>enable</Nullable>
7 <UseWPF>true</UseWPF>
8 </PropertyGroup>
9
10 <ItemGroup>
11 <ProjectReference Include="..\CsprojClassLibraryMultiTarget\CsprojClassLibraryMultiTarget.csproj" />
12 </ItemGroup>
13
14</Project>
diff --git a/src/test/wix/TestData/CsprojWpfNetCore/MainWindow.xaml b/src/test/wix/TestData/CsprojWpfNetCore/MainWindow.xaml
new file mode 100644
index 00000000..375e19ca
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWpfNetCore/MainWindow.xaml
@@ -0,0 +1,12 @@
1<Window x:Class="CsprojWpfNetCore.MainWindow"
2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4 xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
5 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
6 xmlns:local="clr-namespace:CsprojWpfNetCore"
7 mc:Ignorable="d"
8 Title="MainWindow" Height="450" Width="800">
9 <Grid>
10
11 </Grid>
12</Window>
diff --git a/src/test/wix/TestData/CsprojWpfNetCore/MainWindow.xaml.cs b/src/test/wix/TestData/CsprojWpfNetCore/MainWindow.xaml.cs
new file mode 100644
index 00000000..c9410f51
--- /dev/null
+++ b/src/test/wix/TestData/CsprojWpfNetCore/MainWindow.xaml.cs
@@ -0,0 +1,28 @@
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using System.Threading.Tasks;
6using System.Windows;
7using System.Windows.Controls;
8using System.Windows.Data;
9using System.Windows.Documents;
10using System.Windows.Input;
11using System.Windows.Media;
12using System.Windows.Media.Imaging;
13using System.Windows.Navigation;
14using System.Windows.Shapes;
15
16namespace CsprojWpfNetCore
17{
18 /// <summary>
19 /// Interaction logic for MainWindow.xaml
20 /// </summary>
21 public partial class MainWindow : Window
22 {
23 public MainWindow()
24 {
25 InitializeComponent();
26 }
27 }
28}
diff --git a/src/test/wix/TestData/Directory.Build.props b/src/test/wix/TestData/Directory.Build.props
new file mode 100644
index 00000000..f5d388d1
--- /dev/null
+++ b/src/test/wix/TestData/Directory.Build.props
@@ -0,0 +1,9 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
4<Project>
5 <!--
6 This file prevents the import of WiX standard Directory.Build.props
7 from the root src directory
8 -->
9</Project>
diff --git a/src/test/wix/TestData/Directory.Build.targets b/src/test/wix/TestData/Directory.Build.targets
new file mode 100644
index 00000000..3dafd340
--- /dev/null
+++ b/src/test/wix/TestData/Directory.Build.targets
@@ -0,0 +1,9 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
4<Project>
5 <!--
6 This file prevents the import of WiX standard Directory.Build.targets
7 from the root src directory
8 -->
9</Project>
diff --git a/src/test/wix/TestData/Directory.Packages.props b/src/test/wix/TestData/Directory.Packages.props
new file mode 100644
index 00000000..5a625aca
--- /dev/null
+++ b/src/test/wix/TestData/Directory.Packages.props
@@ -0,0 +1,9 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
4<Project>
5 <!--
6 This file prevents the import of WiX standard Directory.Packages.props
7 from the root src directory
8 -->
9</Project>
diff --git a/src/test/wix/TestData/TestProjects.sln b/src/test/wix/TestData/TestProjects.sln
new file mode 100644
index 00000000..5f2cf2c7
--- /dev/null
+++ b/src/test/wix/TestData/TestProjects.sln
@@ -0,0 +1,191 @@
1
2Microsoft Visual Studio Solution File, Format Version 12.00
3# Visual Studio Version 17
4VisualStudioVersion = 17.0.31912.275
5MinimumVisualStudioVersion = 10.0.40219.1
6Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CsprojClassLibraryNetCore", "CsprojClassLibraryNetCore\CsprojClassLibraryNetCore.csproj", "{0613F696-7DAD-41AE-ACD5-38949021C534}"
7EndProject
8Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CsprojClassLibraryNetFx", "CsprojClassLibraryNetFx\CsprojClassLibraryNetFx.csproj", "{984D615D-ADB1-49B4-AE0B-4496ED963881}"
9EndProject
10Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CsprojConsoleNetCore", "CsprojConsoleNetCore\CsprojConsoleNetCore.csproj", "{D7555F37-31DA-4678-8E0B-4BD0D392F136}"
11EndProject
12Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CsprojWebApplicationNetCore", "CsprojWebApplicationNetCore\CsprojWebApplicationNetCore.csproj", "{AE8FC882-54CC-45C6-9489-8C98CAE31268}"
13EndProject
14Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CsprojWebApplicationNetFx", "CsprojWebApplicationNetFx\CsprojWebApplicationNetFx.csproj", "{3DDD967D-2E14-44A3-AFE1-1ED4C25033BC}"
15EndProject
16Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CsprojWindowsFormsNetFx", "CsprojWindowsFormsNetFx\CsprojWindowsFormsNetFx.csproj", "{3B5570AD-4191-4A66-A81D-8CBD14496340}"
17EndProject
18Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VcxprojConsoleApplication", "VcxprojConsoleApplication\VcxprojConsoleApplication.vcxproj", "{7EDF70C5-DEC2-417D-82E3-F354BE59E3A7}"
19EndProject
20Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VcxprojDll", "VcxprojDll\VcxprojDll.vcxproj", "{2B70C248-1090-4D04-BDA0-BF0E48716E5B}"
21EndProject
22Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VcxprojStaticLib", "VcxprojStaticLib\VcxprojStaticLib.vcxproj", "{C4BBEB93-E40F-4F91-9A9D-DB9656DB04F0}"
23EndProject
24Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VcxprojWindowsApp", "VcxprojWindowsApp\VcxprojWindowsApp.vcxproj", "{8F2A12CD-6D3B-4648-81A9-2A852A63EA90}"
25EndProject
26Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CsprojClassLibraryMultiTarget", "CsprojClassLibraryMultiTarget\CsprojClassLibraryMultiTarget.csproj", "{B1F59F27-6AA6-4228-A3DF-B21B32AEEB7B}"
27EndProject
28Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CsprojWpfNetCore", "CsprojWpfNetCore\CsprojWpfNetCore.csproj", "{F467E3CF-2107-44B0-B45B-0FCA4A04613B}"
29EndProject
30Global
31 GlobalSection(SolutionConfigurationPlatforms) = preSolution
32 Debug|Any CPU = Debug|Any CPU
33 Debug|x64 = Debug|x64
34 Debug|x86 = Debug|x86
35 Release|Any CPU = Release|Any CPU
36 Release|x64 = Release|x64
37 Release|x86 = Release|x86
38 EndGlobalSection
39 GlobalSection(ProjectConfigurationPlatforms) = postSolution
40 {0613F696-7DAD-41AE-ACD5-38949021C534}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
41 {0613F696-7DAD-41AE-ACD5-38949021C534}.Debug|Any CPU.Build.0 = Debug|Any CPU
42 {0613F696-7DAD-41AE-ACD5-38949021C534}.Debug|x64.ActiveCfg = Debug|Any CPU
43 {0613F696-7DAD-41AE-ACD5-38949021C534}.Debug|x64.Build.0 = Debug|Any CPU
44 {0613F696-7DAD-41AE-ACD5-38949021C534}.Debug|x86.ActiveCfg = Debug|Any CPU
45 {0613F696-7DAD-41AE-ACD5-38949021C534}.Debug|x86.Build.0 = Debug|Any CPU
46 {0613F696-7DAD-41AE-ACD5-38949021C534}.Release|Any CPU.ActiveCfg = Release|Any CPU
47 {0613F696-7DAD-41AE-ACD5-38949021C534}.Release|Any CPU.Build.0 = Release|Any CPU
48 {0613F696-7DAD-41AE-ACD5-38949021C534}.Release|x64.ActiveCfg = Release|Any CPU
49 {0613F696-7DAD-41AE-ACD5-38949021C534}.Release|x64.Build.0 = Release|Any CPU
50 {0613F696-7DAD-41AE-ACD5-38949021C534}.Release|x86.ActiveCfg = Release|Any CPU
51 {0613F696-7DAD-41AE-ACD5-38949021C534}.Release|x86.Build.0 = Release|Any CPU
52 {984D615D-ADB1-49B4-AE0B-4496ED963881}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
53 {984D615D-ADB1-49B4-AE0B-4496ED963881}.Debug|Any CPU.Build.0 = Debug|Any CPU
54 {984D615D-ADB1-49B4-AE0B-4496ED963881}.Debug|x64.ActiveCfg = Debug|Any CPU
55 {984D615D-ADB1-49B4-AE0B-4496ED963881}.Debug|x64.Build.0 = Debug|Any CPU
56 {984D615D-ADB1-49B4-AE0B-4496ED963881}.Debug|x86.ActiveCfg = Debug|Any CPU
57 {984D615D-ADB1-49B4-AE0B-4496ED963881}.Debug|x86.Build.0 = Debug|Any CPU
58 {984D615D-ADB1-49B4-AE0B-4496ED963881}.Release|Any CPU.ActiveCfg = Release|Any CPU
59 {984D615D-ADB1-49B4-AE0B-4496ED963881}.Release|Any CPU.Build.0 = Release|Any CPU
60 {984D615D-ADB1-49B4-AE0B-4496ED963881}.Release|x64.ActiveCfg = Release|Any CPU
61 {984D615D-ADB1-49B4-AE0B-4496ED963881}.Release|x64.Build.0 = Release|Any CPU
62 {984D615D-ADB1-49B4-AE0B-4496ED963881}.Release|x86.ActiveCfg = Release|Any CPU
63 {984D615D-ADB1-49B4-AE0B-4496ED963881}.Release|x86.Build.0 = Release|Any CPU
64 {D7555F37-31DA-4678-8E0B-4BD0D392F136}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
65 {D7555F37-31DA-4678-8E0B-4BD0D392F136}.Debug|Any CPU.Build.0 = Debug|Any CPU
66 {D7555F37-31DA-4678-8E0B-4BD0D392F136}.Debug|x64.ActiveCfg = Debug|Any CPU
67 {D7555F37-31DA-4678-8E0B-4BD0D392F136}.Debug|x64.Build.0 = Debug|Any CPU
68 {D7555F37-31DA-4678-8E0B-4BD0D392F136}.Debug|x86.ActiveCfg = Debug|Any CPU
69 {D7555F37-31DA-4678-8E0B-4BD0D392F136}.Debug|x86.Build.0 = Debug|Any CPU
70 {D7555F37-31DA-4678-8E0B-4BD0D392F136}.Release|Any CPU.ActiveCfg = Release|Any CPU
71 {D7555F37-31DA-4678-8E0B-4BD0D392F136}.Release|Any CPU.Build.0 = Release|Any CPU
72 {D7555F37-31DA-4678-8E0B-4BD0D392F136}.Release|x64.ActiveCfg = Release|Any CPU
73 {D7555F37-31DA-4678-8E0B-4BD0D392F136}.Release|x64.Build.0 = Release|Any CPU
74 {D7555F37-31DA-4678-8E0B-4BD0D392F136}.Release|x86.ActiveCfg = Release|Any CPU
75 {D7555F37-31DA-4678-8E0B-4BD0D392F136}.Release|x86.Build.0 = Release|Any CPU
76 {AE8FC882-54CC-45C6-9489-8C98CAE31268}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
77 {AE8FC882-54CC-45C6-9489-8C98CAE31268}.Debug|Any CPU.Build.0 = Debug|Any CPU
78 {AE8FC882-54CC-45C6-9489-8C98CAE31268}.Debug|x64.ActiveCfg = Debug|Any CPU
79 {AE8FC882-54CC-45C6-9489-8C98CAE31268}.Debug|x64.Build.0 = Debug|Any CPU
80 {AE8FC882-54CC-45C6-9489-8C98CAE31268}.Debug|x86.ActiveCfg = Debug|Any CPU
81 {AE8FC882-54CC-45C6-9489-8C98CAE31268}.Debug|x86.Build.0 = Debug|Any CPU
82 {AE8FC882-54CC-45C6-9489-8C98CAE31268}.Release|Any CPU.ActiveCfg = Release|Any CPU
83 {AE8FC882-54CC-45C6-9489-8C98CAE31268}.Release|Any CPU.Build.0 = Release|Any CPU
84 {AE8FC882-54CC-45C6-9489-8C98CAE31268}.Release|x64.ActiveCfg = Release|Any CPU
85 {AE8FC882-54CC-45C6-9489-8C98CAE31268}.Release|x64.Build.0 = Release|Any CPU
86 {AE8FC882-54CC-45C6-9489-8C98CAE31268}.Release|x86.ActiveCfg = Release|Any CPU
87 {AE8FC882-54CC-45C6-9489-8C98CAE31268}.Release|x86.Build.0 = Release|Any CPU
88 {3DDD967D-2E14-44A3-AFE1-1ED4C25033BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
89 {3DDD967D-2E14-44A3-AFE1-1ED4C25033BC}.Debug|Any CPU.Build.0 = Debug|Any CPU
90 {3DDD967D-2E14-44A3-AFE1-1ED4C25033BC}.Debug|x64.ActiveCfg = Debug|Any CPU
91 {3DDD967D-2E14-44A3-AFE1-1ED4C25033BC}.Debug|x64.Build.0 = Debug|Any CPU
92 {3DDD967D-2E14-44A3-AFE1-1ED4C25033BC}.Debug|x86.ActiveCfg = Debug|Any CPU
93 {3DDD967D-2E14-44A3-AFE1-1ED4C25033BC}.Debug|x86.Build.0 = Debug|Any CPU
94 {3DDD967D-2E14-44A3-AFE1-1ED4C25033BC}.Release|Any CPU.ActiveCfg = Release|Any CPU
95 {3DDD967D-2E14-44A3-AFE1-1ED4C25033BC}.Release|Any CPU.Build.0 = Release|Any CPU
96 {3DDD967D-2E14-44A3-AFE1-1ED4C25033BC}.Release|x64.ActiveCfg = Release|Any CPU
97 {3DDD967D-2E14-44A3-AFE1-1ED4C25033BC}.Release|x64.Build.0 = Release|Any CPU
98 {3DDD967D-2E14-44A3-AFE1-1ED4C25033BC}.Release|x86.ActiveCfg = Release|Any CPU
99 {3DDD967D-2E14-44A3-AFE1-1ED4C25033BC}.Release|x86.Build.0 = Release|Any CPU
100 {3B5570AD-4191-4A66-A81D-8CBD14496340}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
101 {3B5570AD-4191-4A66-A81D-8CBD14496340}.Debug|Any CPU.Build.0 = Debug|Any CPU
102 {3B5570AD-4191-4A66-A81D-8CBD14496340}.Debug|x64.ActiveCfg = Debug|Any CPU
103 {3B5570AD-4191-4A66-A81D-8CBD14496340}.Debug|x64.Build.0 = Debug|Any CPU
104 {3B5570AD-4191-4A66-A81D-8CBD14496340}.Debug|x86.ActiveCfg = Debug|Any CPU
105 {3B5570AD-4191-4A66-A81D-8CBD14496340}.Debug|x86.Build.0 = Debug|Any CPU
106 {3B5570AD-4191-4A66-A81D-8CBD14496340}.Release|Any CPU.ActiveCfg = Release|Any CPU
107 {3B5570AD-4191-4A66-A81D-8CBD14496340}.Release|Any CPU.Build.0 = Release|Any CPU
108 {3B5570AD-4191-4A66-A81D-8CBD14496340}.Release|x64.ActiveCfg = Release|Any CPU
109 {3B5570AD-4191-4A66-A81D-8CBD14496340}.Release|x64.Build.0 = Release|Any CPU
110 {3B5570AD-4191-4A66-A81D-8CBD14496340}.Release|x86.ActiveCfg = Release|Any CPU
111 {3B5570AD-4191-4A66-A81D-8CBD14496340}.Release|x86.Build.0 = Release|Any CPU
112 {7EDF70C5-DEC2-417D-82E3-F354BE59E3A7}.Debug|Any CPU.ActiveCfg = Debug|x64
113 {7EDF70C5-DEC2-417D-82E3-F354BE59E3A7}.Debug|Any CPU.Build.0 = Debug|x64
114 {7EDF70C5-DEC2-417D-82E3-F354BE59E3A7}.Debug|x64.ActiveCfg = Debug|x64
115 {7EDF70C5-DEC2-417D-82E3-F354BE59E3A7}.Debug|x64.Build.0 = Debug|x64
116 {7EDF70C5-DEC2-417D-82E3-F354BE59E3A7}.Debug|x86.ActiveCfg = Debug|Win32
117 {7EDF70C5-DEC2-417D-82E3-F354BE59E3A7}.Debug|x86.Build.0 = Debug|Win32
118 {7EDF70C5-DEC2-417D-82E3-F354BE59E3A7}.Release|Any CPU.ActiveCfg = Release|x64
119 {7EDF70C5-DEC2-417D-82E3-F354BE59E3A7}.Release|Any CPU.Build.0 = Release|x64
120 {7EDF70C5-DEC2-417D-82E3-F354BE59E3A7}.Release|x64.ActiveCfg = Release|x64
121 {7EDF70C5-DEC2-417D-82E3-F354BE59E3A7}.Release|x64.Build.0 = Release|x64
122 {7EDF70C5-DEC2-417D-82E3-F354BE59E3A7}.Release|x86.ActiveCfg = Release|Win32
123 {7EDF70C5-DEC2-417D-82E3-F354BE59E3A7}.Release|x86.Build.0 = Release|Win32
124 {2B70C248-1090-4D04-BDA0-BF0E48716E5B}.Debug|Any CPU.ActiveCfg = Debug|x64
125 {2B70C248-1090-4D04-BDA0-BF0E48716E5B}.Debug|Any CPU.Build.0 = Debug|x64
126 {2B70C248-1090-4D04-BDA0-BF0E48716E5B}.Debug|x64.ActiveCfg = Debug|x64
127 {2B70C248-1090-4D04-BDA0-BF0E48716E5B}.Debug|x64.Build.0 = Debug|x64
128 {2B70C248-1090-4D04-BDA0-BF0E48716E5B}.Debug|x86.ActiveCfg = Debug|Win32
129 {2B70C248-1090-4D04-BDA0-BF0E48716E5B}.Debug|x86.Build.0 = Debug|Win32
130 {2B70C248-1090-4D04-BDA0-BF0E48716E5B}.Release|Any CPU.ActiveCfg = Release|x64
131 {2B70C248-1090-4D04-BDA0-BF0E48716E5B}.Release|Any CPU.Build.0 = Release|x64
132 {2B70C248-1090-4D04-BDA0-BF0E48716E5B}.Release|x64.ActiveCfg = Release|x64
133 {2B70C248-1090-4D04-BDA0-BF0E48716E5B}.Release|x64.Build.0 = Release|x64
134 {2B70C248-1090-4D04-BDA0-BF0E48716E5B}.Release|x86.ActiveCfg = Release|Win32
135 {2B70C248-1090-4D04-BDA0-BF0E48716E5B}.Release|x86.Build.0 = Release|Win32
136 {C4BBEB93-E40F-4F91-9A9D-DB9656DB04F0}.Debug|Any CPU.ActiveCfg = Debug|x64
137 {C4BBEB93-E40F-4F91-9A9D-DB9656DB04F0}.Debug|Any CPU.Build.0 = Debug|x64
138 {C4BBEB93-E40F-4F91-9A9D-DB9656DB04F0}.Debug|x64.ActiveCfg = Debug|x64
139 {C4BBEB93-E40F-4F91-9A9D-DB9656DB04F0}.Debug|x64.Build.0 = Debug|x64
140 {C4BBEB93-E40F-4F91-9A9D-DB9656DB04F0}.Debug|x86.ActiveCfg = Debug|Win32
141 {C4BBEB93-E40F-4F91-9A9D-DB9656DB04F0}.Debug|x86.Build.0 = Debug|Win32
142 {C4BBEB93-E40F-4F91-9A9D-DB9656DB04F0}.Release|Any CPU.ActiveCfg = Release|x64
143 {C4BBEB93-E40F-4F91-9A9D-DB9656DB04F0}.Release|Any CPU.Build.0 = Release|x64
144 {C4BBEB93-E40F-4F91-9A9D-DB9656DB04F0}.Release|x64.ActiveCfg = Release|x64
145 {C4BBEB93-E40F-4F91-9A9D-DB9656DB04F0}.Release|x64.Build.0 = Release|x64
146 {C4BBEB93-E40F-4F91-9A9D-DB9656DB04F0}.Release|x86.ActiveCfg = Release|Win32
147 {C4BBEB93-E40F-4F91-9A9D-DB9656DB04F0}.Release|x86.Build.0 = Release|Win32
148 {8F2A12CD-6D3B-4648-81A9-2A852A63EA90}.Debug|Any CPU.ActiveCfg = Debug|x64
149 {8F2A12CD-6D3B-4648-81A9-2A852A63EA90}.Debug|Any CPU.Build.0 = Debug|x64
150 {8F2A12CD-6D3B-4648-81A9-2A852A63EA90}.Debug|x64.ActiveCfg = Debug|x64
151 {8F2A12CD-6D3B-4648-81A9-2A852A63EA90}.Debug|x64.Build.0 = Debug|x64
152 {8F2A12CD-6D3B-4648-81A9-2A852A63EA90}.Debug|x86.ActiveCfg = Debug|Win32
153 {8F2A12CD-6D3B-4648-81A9-2A852A63EA90}.Debug|x86.Build.0 = Debug|Win32
154 {8F2A12CD-6D3B-4648-81A9-2A852A63EA90}.Release|Any CPU.ActiveCfg = Release|x64
155 {8F2A12CD-6D3B-4648-81A9-2A852A63EA90}.Release|Any CPU.Build.0 = Release|x64
156 {8F2A12CD-6D3B-4648-81A9-2A852A63EA90}.Release|x64.ActiveCfg = Release|x64
157 {8F2A12CD-6D3B-4648-81A9-2A852A63EA90}.Release|x64.Build.0 = Release|x64
158 {8F2A12CD-6D3B-4648-81A9-2A852A63EA90}.Release|x86.ActiveCfg = Release|Win32
159 {8F2A12CD-6D3B-4648-81A9-2A852A63EA90}.Release|x86.Build.0 = Release|Win32
160 {B1F59F27-6AA6-4228-A3DF-B21B32AEEB7B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
161 {B1F59F27-6AA6-4228-A3DF-B21B32AEEB7B}.Debug|Any CPU.Build.0 = Debug|Any CPU
162 {B1F59F27-6AA6-4228-A3DF-B21B32AEEB7B}.Debug|x64.ActiveCfg = Debug|Any CPU
163 {B1F59F27-6AA6-4228-A3DF-B21B32AEEB7B}.Debug|x64.Build.0 = Debug|Any CPU
164 {B1F59F27-6AA6-4228-A3DF-B21B32AEEB7B}.Debug|x86.ActiveCfg = Debug|Any CPU
165 {B1F59F27-6AA6-4228-A3DF-B21B32AEEB7B}.Debug|x86.Build.0 = Debug|Any CPU
166 {B1F59F27-6AA6-4228-A3DF-B21B32AEEB7B}.Release|Any CPU.ActiveCfg = Release|Any CPU
167 {B1F59F27-6AA6-4228-A3DF-B21B32AEEB7B}.Release|Any CPU.Build.0 = Release|Any CPU
168 {B1F59F27-6AA6-4228-A3DF-B21B32AEEB7B}.Release|x64.ActiveCfg = Release|Any CPU
169 {B1F59F27-6AA6-4228-A3DF-B21B32AEEB7B}.Release|x64.Build.0 = Release|Any CPU
170 {B1F59F27-6AA6-4228-A3DF-B21B32AEEB7B}.Release|x86.ActiveCfg = Release|Any CPU
171 {B1F59F27-6AA6-4228-A3DF-B21B32AEEB7B}.Release|x86.Build.0 = Release|Any CPU
172 {F467E3CF-2107-44B0-B45B-0FCA4A04613B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
173 {F467E3CF-2107-44B0-B45B-0FCA4A04613B}.Debug|Any CPU.Build.0 = Debug|Any CPU
174 {F467E3CF-2107-44B0-B45B-0FCA4A04613B}.Debug|x64.ActiveCfg = Debug|Any CPU
175 {F467E3CF-2107-44B0-B45B-0FCA4A04613B}.Debug|x64.Build.0 = Debug|Any CPU
176 {F467E3CF-2107-44B0-B45B-0FCA4A04613B}.Debug|x86.ActiveCfg = Debug|Any CPU
177 {F467E3CF-2107-44B0-B45B-0FCA4A04613B}.Debug|x86.Build.0 = Debug|Any CPU
178 {F467E3CF-2107-44B0-B45B-0FCA4A04613B}.Release|Any CPU.ActiveCfg = Release|Any CPU
179 {F467E3CF-2107-44B0-B45B-0FCA4A04613B}.Release|Any CPU.Build.0 = Release|Any CPU
180 {F467E3CF-2107-44B0-B45B-0FCA4A04613B}.Release|x64.ActiveCfg = Release|Any CPU
181 {F467E3CF-2107-44B0-B45B-0FCA4A04613B}.Release|x64.Build.0 = Release|Any CPU
182 {F467E3CF-2107-44B0-B45B-0FCA4A04613B}.Release|x86.ActiveCfg = Release|Any CPU
183 {F467E3CF-2107-44B0-B45B-0FCA4A04613B}.Release|x86.Build.0 = Release|Any CPU
184 EndGlobalSection
185 GlobalSection(SolutionProperties) = preSolution
186 HideSolutionNode = FALSE
187 EndGlobalSection
188 GlobalSection(ExtensibilityGlobals) = postSolution
189 SolutionGuid = {690AEDD5-EBD0-4F2F-98AC-2D2821E1D228}
190 EndGlobalSection
191EndGlobal
diff --git a/src/test/wix/TestData/VcxprojConsoleApplication/VcxprojConsoleApplication.cpp b/src/test/wix/TestData/VcxprojConsoleApplication/VcxprojConsoleApplication.cpp
new file mode 100644
index 00000000..0fa42890
--- /dev/null
+++ b/src/test/wix/TestData/VcxprojConsoleApplication/VcxprojConsoleApplication.cpp
@@ -0,0 +1,20 @@
1// VcxprojConsoleApplication.cpp : This file contains the 'main' function. Program execution begins and ends there.
2//
3
4#include <iostream>
5
6int main()
7{
8 std::cout << "Hello World!\n";
9}
10
11// Run program: Ctrl + F5 or Debug > Start Without Debugging menu
12// Debug program: F5 or Debug > Start Debugging menu
13
14// Tips for Getting Started:
15// 1. Use the Solution Explorer window to add/manage files
16// 2. Use the Team Explorer window to connect to source control
17// 3. Use the Output window to see build output and other messages
18// 4. Use the Error List window to view errors
19// 5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project
20// 6. In the future, to open this project again, go to File > Open > Project and select the .sln file
diff --git a/src/test/wix/TestData/VcxprojConsoleApplication/VcxprojConsoleApplication.vcxproj b/src/test/wix/TestData/VcxprojConsoleApplication/VcxprojConsoleApplication.vcxproj
new file mode 100644
index 00000000..cb107049
--- /dev/null
+++ b/src/test/wix/TestData/VcxprojConsoleApplication/VcxprojConsoleApplication.vcxproj
@@ -0,0 +1,147 @@
1<?xml version="1.0" encoding="utf-8"?>
2<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3 <ItemGroup Label="ProjectConfigurations">
4 <ProjectConfiguration Include="Debug|Win32">
5 <Configuration>Debug</Configuration>
6 <Platform>Win32</Platform>
7 </ProjectConfiguration>
8 <ProjectConfiguration Include="Release|Win32">
9 <Configuration>Release</Configuration>
10 <Platform>Win32</Platform>
11 </ProjectConfiguration>
12 <ProjectConfiguration Include="Debug|x64">
13 <Configuration>Debug</Configuration>
14 <Platform>x64</Platform>
15 </ProjectConfiguration>
16 <ProjectConfiguration Include="Release|x64">
17 <Configuration>Release</Configuration>
18 <Platform>x64</Platform>
19 </ProjectConfiguration>
20 </ItemGroup>
21 <PropertyGroup Label="Globals">
22 <VCProjectVersion>16.0</VCProjectVersion>
23 <Keyword>Win32Proj</Keyword>
24 <ProjectGuid>{7edf70c5-dec2-417d-82e3-f354be59e3a7}</ProjectGuid>
25 <RootNamespace>VcxprojConsoleApplication</RootNamespace>
26 <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
27 </PropertyGroup>
28 <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
29 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
30 <ConfigurationType>Application</ConfigurationType>
31 <UseDebugLibraries>true</UseDebugLibraries>
32 <PlatformToolset>v142</PlatformToolset>
33 <CharacterSet>Unicode</CharacterSet>
34 </PropertyGroup>
35 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
36 <ConfigurationType>Application</ConfigurationType>
37 <UseDebugLibraries>false</UseDebugLibraries>
38 <PlatformToolset>v142</PlatformToolset>
39 <WholeProgramOptimization>true</WholeProgramOptimization>
40 <CharacterSet>Unicode</CharacterSet>
41 </PropertyGroup>
42 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
43 <ConfigurationType>Application</ConfigurationType>
44 <UseDebugLibraries>true</UseDebugLibraries>
45 <PlatformToolset>v142</PlatformToolset>
46 <CharacterSet>Unicode</CharacterSet>
47 </PropertyGroup>
48 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
49 <ConfigurationType>Application</ConfigurationType>
50 <UseDebugLibraries>false</UseDebugLibraries>
51 <PlatformToolset>v142</PlatformToolset>
52 <WholeProgramOptimization>true</WholeProgramOptimization>
53 <CharacterSet>Unicode</CharacterSet>
54 </PropertyGroup>
55 <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
56 <ImportGroup Label="ExtensionSettings">
57 </ImportGroup>
58 <ImportGroup Label="Shared">
59 </ImportGroup>
60 <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
61 <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
62 </ImportGroup>
63 <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
64 <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
65 </ImportGroup>
66 <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
67 <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
68 </ImportGroup>
69 <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
70 <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
71 </ImportGroup>
72 <PropertyGroup Label="UserMacros" />
73 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
74 <LinkIncremental>true</LinkIncremental>
75 </PropertyGroup>
76 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
77 <LinkIncremental>false</LinkIncremental>
78 </PropertyGroup>
79 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
80 <LinkIncremental>true</LinkIncremental>
81 </PropertyGroup>
82 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
83 <LinkIncremental>false</LinkIncremental>
84 </PropertyGroup>
85 <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
86 <ClCompile>
87 <WarningLevel>Level3</WarningLevel>
88 <SDLCheck>true</SDLCheck>
89 <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
90 <ConformanceMode>true</ConformanceMode>
91 </ClCompile>
92 <Link>
93 <SubSystem>Console</SubSystem>
94 <GenerateDebugInformation>true</GenerateDebugInformation>
95 </Link>
96 </ItemDefinitionGroup>
97 <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
98 <ClCompile>
99 <WarningLevel>Level3</WarningLevel>
100 <FunctionLevelLinking>true</FunctionLevelLinking>
101 <IntrinsicFunctions>true</IntrinsicFunctions>
102 <SDLCheck>true</SDLCheck>
103 <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
104 <ConformanceMode>true</ConformanceMode>
105 </ClCompile>
106 <Link>
107 <SubSystem>Console</SubSystem>
108 <EnableCOMDATFolding>true</EnableCOMDATFolding>
109 <OptimizeReferences>true</OptimizeReferences>
110 <GenerateDebugInformation>true</GenerateDebugInformation>
111 </Link>
112 </ItemDefinitionGroup>
113 <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
114 <ClCompile>
115 <WarningLevel>Level3</WarningLevel>
116 <SDLCheck>true</SDLCheck>
117 <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
118 <ConformanceMode>true</ConformanceMode>
119 </ClCompile>
120 <Link>
121 <SubSystem>Console</SubSystem>
122 <GenerateDebugInformation>true</GenerateDebugInformation>
123 </Link>
124 </ItemDefinitionGroup>
125 <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
126 <ClCompile>
127 <WarningLevel>Level3</WarningLevel>
128 <FunctionLevelLinking>true</FunctionLevelLinking>
129 <IntrinsicFunctions>true</IntrinsicFunctions>
130 <SDLCheck>true</SDLCheck>
131 <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
132 <ConformanceMode>true</ConformanceMode>
133 </ClCompile>
134 <Link>
135 <SubSystem>Console</SubSystem>
136 <EnableCOMDATFolding>true</EnableCOMDATFolding>
137 <OptimizeReferences>true</OptimizeReferences>
138 <GenerateDebugInformation>true</GenerateDebugInformation>
139 </Link>
140 </ItemDefinitionGroup>
141 <ItemGroup>
142 <ClCompile Include="VcxprojConsoleApplication.cpp" />
143 </ItemGroup>
144 <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
145 <ImportGroup Label="ExtensionTargets">
146 </ImportGroup>
147</Project> \ No newline at end of file
diff --git a/src/test/wix/TestData/VcxprojConsoleApplication/VcxprojConsoleApplication.vcxproj.filters b/src/test/wix/TestData/VcxprojConsoleApplication/VcxprojConsoleApplication.vcxproj.filters
new file mode 100644
index 00000000..6fc74f46
--- /dev/null
+++ b/src/test/wix/TestData/VcxprojConsoleApplication/VcxprojConsoleApplication.vcxproj.filters
@@ -0,0 +1,22 @@
1<?xml version="1.0" encoding="utf-8"?>
2<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3 <ItemGroup>
4 <Filter Include="Source Files">
5 <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
6 <Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
7 </Filter>
8 <Filter Include="Header Files">
9 <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
10 <Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
11 </Filter>
12 <Filter Include="Resource Files">
13 <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
14 <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
15 </Filter>
16 </ItemGroup>
17 <ItemGroup>
18 <ClCompile Include="VcxprojConsoleApplication.cpp">
19 <Filter>Source Files</Filter>
20 </ClCompile>
21 </ItemGroup>
22</Project> \ No newline at end of file
diff --git a/src/test/wix/TestData/VcxprojDll/VcxprojDll.vcxproj b/src/test/wix/TestData/VcxprojDll/VcxprojDll.vcxproj
new file mode 100644
index 00000000..f5c77bb6
--- /dev/null
+++ b/src/test/wix/TestData/VcxprojDll/VcxprojDll.vcxproj
@@ -0,0 +1,174 @@
1<?xml version="1.0" encoding="utf-8"?>
2<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3 <ItemGroup Label="ProjectConfigurations">
4 <ProjectConfiguration Include="Debug|Win32">
5 <Configuration>Debug</Configuration>
6 <Platform>Win32</Platform>
7 </ProjectConfiguration>
8 <ProjectConfiguration Include="Release|Win32">
9 <Configuration>Release</Configuration>
10 <Platform>Win32</Platform>
11 </ProjectConfiguration>
12 <ProjectConfiguration Include="Debug|x64">
13 <Configuration>Debug</Configuration>
14 <Platform>x64</Platform>
15 </ProjectConfiguration>
16 <ProjectConfiguration Include="Release|x64">
17 <Configuration>Release</Configuration>
18 <Platform>x64</Platform>
19 </ProjectConfiguration>
20 </ItemGroup>
21 <PropertyGroup Label="Globals">
22 <VCProjectVersion>16.0</VCProjectVersion>
23 <Keyword>Win32Proj</Keyword>
24 <ProjectGuid>{2b70c248-1090-4d04-bda0-bf0e48716e5b}</ProjectGuid>
25 <RootNamespace>VcxprojDll</RootNamespace>
26 <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
27 </PropertyGroup>
28 <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
29 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
30 <ConfigurationType>DynamicLibrary</ConfigurationType>
31 <UseDebugLibraries>true</UseDebugLibraries>
32 <PlatformToolset>v142</PlatformToolset>
33 <CharacterSet>Unicode</CharacterSet>
34 </PropertyGroup>
35 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
36 <ConfigurationType>DynamicLibrary</ConfigurationType>
37 <UseDebugLibraries>false</UseDebugLibraries>
38 <PlatformToolset>v142</PlatformToolset>
39 <WholeProgramOptimization>true</WholeProgramOptimization>
40 <CharacterSet>Unicode</CharacterSet>
41 </PropertyGroup>
42 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
43 <ConfigurationType>DynamicLibrary</ConfigurationType>
44 <UseDebugLibraries>true</UseDebugLibraries>
45 <PlatformToolset>v142</PlatformToolset>
46 <CharacterSet>Unicode</CharacterSet>
47 </PropertyGroup>
48 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
49 <ConfigurationType>DynamicLibrary</ConfigurationType>
50 <UseDebugLibraries>false</UseDebugLibraries>
51 <PlatformToolset>v142</PlatformToolset>
52 <WholeProgramOptimization>true</WholeProgramOptimization>
53 <CharacterSet>Unicode</CharacterSet>
54 </PropertyGroup>
55 <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
56 <ImportGroup Label="ExtensionSettings">
57 </ImportGroup>
58 <ImportGroup Label="Shared">
59 </ImportGroup>
60 <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
61 <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
62 </ImportGroup>
63 <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
64 <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
65 </ImportGroup>
66 <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
67 <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
68 </ImportGroup>
69 <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
70 <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
71 </ImportGroup>
72 <PropertyGroup Label="UserMacros" />
73 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
74 <LinkIncremental>true</LinkIncremental>
75 </PropertyGroup>
76 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
77 <LinkIncremental>false</LinkIncremental>
78 </PropertyGroup>
79 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
80 <LinkIncremental>true</LinkIncremental>
81 </PropertyGroup>
82 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
83 <LinkIncremental>false</LinkIncremental>
84 </PropertyGroup>
85 <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
86 <ClCompile>
87 <WarningLevel>Level3</WarningLevel>
88 <SDLCheck>true</SDLCheck>
89 <PreprocessorDefinitions>WIN32;_DEBUG;VCXPROJDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
90 <ConformanceMode>true</ConformanceMode>
91 <PrecompiledHeader>Use</PrecompiledHeader>
92 <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
93 </ClCompile>
94 <Link>
95 <SubSystem>Windows</SubSystem>
96 <GenerateDebugInformation>true</GenerateDebugInformation>
97 <EnableUAC>false</EnableUAC>
98 </Link>
99 </ItemDefinitionGroup>
100 <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
101 <ClCompile>
102 <WarningLevel>Level3</WarningLevel>
103 <FunctionLevelLinking>true</FunctionLevelLinking>
104 <IntrinsicFunctions>true</IntrinsicFunctions>
105 <SDLCheck>true</SDLCheck>
106 <PreprocessorDefinitions>WIN32;NDEBUG;VCXPROJDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
107 <ConformanceMode>true</ConformanceMode>
108 <PrecompiledHeader>Use</PrecompiledHeader>
109 <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
110 </ClCompile>
111 <Link>
112 <SubSystem>Windows</SubSystem>
113 <EnableCOMDATFolding>true</EnableCOMDATFolding>
114 <OptimizeReferences>true</OptimizeReferences>
115 <GenerateDebugInformation>true</GenerateDebugInformation>
116 <EnableUAC>false</EnableUAC>
117 </Link>
118 </ItemDefinitionGroup>
119 <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
120 <ClCompile>
121 <WarningLevel>Level3</WarningLevel>
122 <SDLCheck>true</SDLCheck>
123 <PreprocessorDefinitions>_DEBUG;VCXPROJDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
124 <ConformanceMode>true</ConformanceMode>
125 <PrecompiledHeader>Use</PrecompiledHeader>
126 <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
127 </ClCompile>
128 <Link>
129 <SubSystem>Windows</SubSystem>
130 <GenerateDebugInformation>true</GenerateDebugInformation>
131 <EnableUAC>false</EnableUAC>
132 </Link>
133 </ItemDefinitionGroup>
134 <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
135 <ClCompile>
136 <WarningLevel>Level3</WarningLevel>
137 <FunctionLevelLinking>true</FunctionLevelLinking>
138 <IntrinsicFunctions>true</IntrinsicFunctions>
139 <SDLCheck>true</SDLCheck>
140 <PreprocessorDefinitions>NDEBUG;VCXPROJDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
141 <ConformanceMode>true</ConformanceMode>
142 <PrecompiledHeader>Use</PrecompiledHeader>
143 <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
144 </ClCompile>
145 <Link>
146 <SubSystem>Windows</SubSystem>
147 <EnableCOMDATFolding>true</EnableCOMDATFolding>
148 <OptimizeReferences>true</OptimizeReferences>
149 <GenerateDebugInformation>true</GenerateDebugInformation>
150 <EnableUAC>false</EnableUAC>
151 </Link>
152 </ItemDefinitionGroup>
153 <ItemGroup>
154 <ClInclude Include="framework.h" />
155 <ClInclude Include="pch.h" />
156 </ItemGroup>
157 <ItemGroup>
158 <ClCompile Include="dllmain.cpp" />
159 <ClCompile Include="pch.cpp">
160 <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
161 <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
162 <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
163 <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
164 </ClCompile>
165 </ItemGroup>
166 <ItemGroup>
167 <ProjectReference Include="..\VcxprojStaticLib\VcxprojStaticLib.vcxproj">
168 <Project>{c4bbeb93-e40f-4f91-9a9d-db9656db04f0}</Project>
169 </ProjectReference>
170 </ItemGroup>
171 <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
172 <ImportGroup Label="ExtensionTargets">
173 </ImportGroup>
174</Project> \ No newline at end of file
diff --git a/src/test/wix/TestData/VcxprojDll/VcxprojDll.vcxproj.filters b/src/test/wix/TestData/VcxprojDll/VcxprojDll.vcxproj.filters
new file mode 100644
index 00000000..1e57c7b1
--- /dev/null
+++ b/src/test/wix/TestData/VcxprojDll/VcxprojDll.vcxproj.filters
@@ -0,0 +1,33 @@
1<?xml version="1.0" encoding="utf-8"?>
2<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3 <ItemGroup>
4 <Filter Include="Source Files">
5 <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
6 <Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
7 </Filter>
8 <Filter Include="Header Files">
9 <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
10 <Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
11 </Filter>
12 <Filter Include="Resource Files">
13 <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
14 <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
15 </Filter>
16 </ItemGroup>
17 <ItemGroup>
18 <ClInclude Include="framework.h">
19 <Filter>Header Files</Filter>
20 </ClInclude>
21 <ClInclude Include="pch.h">
22 <Filter>Header Files</Filter>
23 </ClInclude>
24 </ItemGroup>
25 <ItemGroup>
26 <ClCompile Include="dllmain.cpp">
27 <Filter>Source Files</Filter>
28 </ClCompile>
29 <ClCompile Include="pch.cpp">
30 <Filter>Source Files</Filter>
31 </ClCompile>
32 </ItemGroup>
33</Project> \ No newline at end of file
diff --git a/src/test/wix/TestData/VcxprojDll/dllmain.cpp b/src/test/wix/TestData/VcxprojDll/dllmain.cpp
new file mode 100644
index 00000000..f2665971
--- /dev/null
+++ b/src/test/wix/TestData/VcxprojDll/dllmain.cpp
@@ -0,0 +1,19 @@
1// dllmain.cpp : Defines the entry point for the DLL application.
2#include "pch.h"
3
4BOOL APIENTRY DllMain( HMODULE hModule,
5 DWORD ul_reason_for_call,
6 LPVOID lpReserved
7 )
8{
9 switch (ul_reason_for_call)
10 {
11 case DLL_PROCESS_ATTACH:
12 case DLL_THREAD_ATTACH:
13 case DLL_THREAD_DETACH:
14 case DLL_PROCESS_DETACH:
15 break;
16 }
17 return TRUE;
18}
19
diff --git a/src/test/wix/TestData/VcxprojDll/framework.h b/src/test/wix/TestData/VcxprojDll/framework.h
new file mode 100644
index 00000000..54b83e94
--- /dev/null
+++ b/src/test/wix/TestData/VcxprojDll/framework.h
@@ -0,0 +1,5 @@
1#pragma once
2
3#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
4// Windows Header Files
5#include <windows.h>
diff --git a/src/test/wix/TestData/VcxprojDll/pch.cpp b/src/test/wix/TestData/VcxprojDll/pch.cpp
new file mode 100644
index 00000000..64b7eef6
--- /dev/null
+++ b/src/test/wix/TestData/VcxprojDll/pch.cpp
@@ -0,0 +1,5 @@
1// pch.cpp: source file corresponding to the pre-compiled header
2
3#include "pch.h"
4
5// When you are using pre-compiled headers, this source file is necessary for compilation to succeed.
diff --git a/src/test/wix/TestData/VcxprojDll/pch.h b/src/test/wix/TestData/VcxprojDll/pch.h
new file mode 100644
index 00000000..885d5d62
--- /dev/null
+++ b/src/test/wix/TestData/VcxprojDll/pch.h
@@ -0,0 +1,13 @@
1// pch.h: This is a precompiled header file.
2// Files listed below are compiled only once, improving build performance for future builds.
3// This also affects IntelliSense performance, including code completion and many code browsing features.
4// However, files listed here are ALL re-compiled if any one of them is updated between builds.
5// Do not add files here that you will be updating frequently as this negates the performance advantage.
6
7#ifndef PCH_H
8#define PCH_H
9
10// add headers that you want to pre-compile here
11#include "framework.h"
12
13#endif //PCH_H
diff --git a/src/test/wix/TestData/VcxprojStaticLib/VcxprojStaticLib.cpp b/src/test/wix/TestData/VcxprojStaticLib/VcxprojStaticLib.cpp
new file mode 100644
index 00000000..69a65dc3
--- /dev/null
+++ b/src/test/wix/TestData/VcxprojStaticLib/VcxprojStaticLib.cpp
@@ -0,0 +1,10 @@
1// VcxprojStaticLib.cpp : Defines the functions for the static library.
2//
3
4#include "pch.h"
5#include "framework.h"
6
7// TODO: This is an example of a library function
8void fnVcxprojStaticLib()
9{
10}
diff --git a/src/test/wix/TestData/VcxprojStaticLib/VcxprojStaticLib.vcxproj b/src/test/wix/TestData/VcxprojStaticLib/VcxprojStaticLib.vcxproj
new file mode 100644
index 00000000..24bdb1b5
--- /dev/null
+++ b/src/test/wix/TestData/VcxprojStaticLib/VcxprojStaticLib.vcxproj
@@ -0,0 +1,169 @@
1<?xml version="1.0" encoding="utf-8"?>
2<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3 <ItemGroup Label="ProjectConfigurations">
4 <ProjectConfiguration Include="Debug|Win32">
5 <Configuration>Debug</Configuration>
6 <Platform>Win32</Platform>
7 </ProjectConfiguration>
8 <ProjectConfiguration Include="Release|Win32">
9 <Configuration>Release</Configuration>
10 <Platform>Win32</Platform>
11 </ProjectConfiguration>
12 <ProjectConfiguration Include="Debug|x64">
13 <Configuration>Debug</Configuration>
14 <Platform>x64</Platform>
15 </ProjectConfiguration>
16 <ProjectConfiguration Include="Release|x64">
17 <Configuration>Release</Configuration>
18 <Platform>x64</Platform>
19 </ProjectConfiguration>
20 </ItemGroup>
21 <PropertyGroup Label="Globals">
22 <VCProjectVersion>16.0</VCProjectVersion>
23 <Keyword>Win32Proj</Keyword>
24 <ProjectGuid>{c4bbeb93-e40f-4f91-9a9d-db9656db04f0}</ProjectGuid>
25 <RootNamespace>VcxprojStaticLib</RootNamespace>
26 <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
27 </PropertyGroup>
28 <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
29 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
30 <ConfigurationType>StaticLibrary</ConfigurationType>
31 <UseDebugLibraries>true</UseDebugLibraries>
32 <PlatformToolset>v142</PlatformToolset>
33 <CharacterSet>Unicode</CharacterSet>
34 </PropertyGroup>
35 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
36 <ConfigurationType>StaticLibrary</ConfigurationType>
37 <UseDebugLibraries>false</UseDebugLibraries>
38 <PlatformToolset>v142</PlatformToolset>
39 <WholeProgramOptimization>true</WholeProgramOptimization>
40 <CharacterSet>Unicode</CharacterSet>
41 </PropertyGroup>
42 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
43 <ConfigurationType>StaticLibrary</ConfigurationType>
44 <UseDebugLibraries>true</UseDebugLibraries>
45 <PlatformToolset>v142</PlatformToolset>
46 <CharacterSet>Unicode</CharacterSet>
47 </PropertyGroup>
48 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
49 <ConfigurationType>StaticLibrary</ConfigurationType>
50 <UseDebugLibraries>false</UseDebugLibraries>
51 <PlatformToolset>v142</PlatformToolset>
52 <WholeProgramOptimization>true</WholeProgramOptimization>
53 <CharacterSet>Unicode</CharacterSet>
54 </PropertyGroup>
55 <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
56 <ImportGroup Label="ExtensionSettings">
57 </ImportGroup>
58 <ImportGroup Label="Shared">
59 </ImportGroup>
60 <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
61 <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
62 </ImportGroup>
63 <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
64 <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
65 </ImportGroup>
66 <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
67 <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
68 </ImportGroup>
69 <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
70 <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
71 </ImportGroup>
72 <PropertyGroup Label="UserMacros" />
73 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
74 <LinkIncremental>true</LinkIncremental>
75 </PropertyGroup>
76 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
77 <LinkIncremental>false</LinkIncremental>
78 </PropertyGroup>
79 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
80 <LinkIncremental>true</LinkIncremental>
81 </PropertyGroup>
82 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
83 <LinkIncremental>false</LinkIncremental>
84 </PropertyGroup>
85 <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
86 <ClCompile>
87 <WarningLevel>Level3</WarningLevel>
88 <SDLCheck>true</SDLCheck>
89 <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
90 <ConformanceMode>true</ConformanceMode>
91 <PrecompiledHeader>Use</PrecompiledHeader>
92 <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
93 </ClCompile>
94 <Link>
95 <SubSystem>
96 </SubSystem>
97 <GenerateDebugInformation>true</GenerateDebugInformation>
98 </Link>
99 </ItemDefinitionGroup>
100 <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
101 <ClCompile>
102 <WarningLevel>Level3</WarningLevel>
103 <FunctionLevelLinking>true</FunctionLevelLinking>
104 <IntrinsicFunctions>true</IntrinsicFunctions>
105 <SDLCheck>true</SDLCheck>
106 <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
107 <ConformanceMode>true</ConformanceMode>
108 <PrecompiledHeader>Use</PrecompiledHeader>
109 <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
110 </ClCompile>
111 <Link>
112 <SubSystem>
113 </SubSystem>
114 <EnableCOMDATFolding>true</EnableCOMDATFolding>
115 <OptimizeReferences>true</OptimizeReferences>
116 <GenerateDebugInformation>true</GenerateDebugInformation>
117 </Link>
118 </ItemDefinitionGroup>
119 <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
120 <ClCompile>
121 <WarningLevel>Level3</WarningLevel>
122 <SDLCheck>true</SDLCheck>
123 <PreprocessorDefinitions>_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
124 <ConformanceMode>true</ConformanceMode>
125 <PrecompiledHeader>Use</PrecompiledHeader>
126 <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
127 </ClCompile>
128 <Link>
129 <SubSystem>
130 </SubSystem>
131 <GenerateDebugInformation>true</GenerateDebugInformation>
132 </Link>
133 </ItemDefinitionGroup>
134 <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
135 <ClCompile>
136 <WarningLevel>Level3</WarningLevel>
137 <FunctionLevelLinking>true</FunctionLevelLinking>
138 <IntrinsicFunctions>true</IntrinsicFunctions>
139 <SDLCheck>true</SDLCheck>
140 <PreprocessorDefinitions>NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
141 <ConformanceMode>true</ConformanceMode>
142 <PrecompiledHeader>Use</PrecompiledHeader>
143 <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
144 </ClCompile>
145 <Link>
146 <SubSystem>
147 </SubSystem>
148 <EnableCOMDATFolding>true</EnableCOMDATFolding>
149 <OptimizeReferences>true</OptimizeReferences>
150 <GenerateDebugInformation>true</GenerateDebugInformation>
151 </Link>
152 </ItemDefinitionGroup>
153 <ItemGroup>
154 <ClInclude Include="framework.h" />
155 <ClInclude Include="pch.h" />
156 </ItemGroup>
157 <ItemGroup>
158 <ClCompile Include="pch.cpp">
159 <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
160 <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
161 <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
162 <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
163 </ClCompile>
164 <ClCompile Include="VcxprojStaticLib.cpp" />
165 </ItemGroup>
166 <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
167 <ImportGroup Label="ExtensionTargets">
168 </ImportGroup>
169</Project> \ No newline at end of file
diff --git a/src/test/wix/TestData/VcxprojStaticLib/VcxprojStaticLib.vcxproj.filters b/src/test/wix/TestData/VcxprojStaticLib/VcxprojStaticLib.vcxproj.filters
new file mode 100644
index 00000000..dbc69054
--- /dev/null
+++ b/src/test/wix/TestData/VcxprojStaticLib/VcxprojStaticLib.vcxproj.filters
@@ -0,0 +1,33 @@
1<?xml version="1.0" encoding="utf-8"?>
2<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3 <ItemGroup>
4 <Filter Include="Source Files">
5 <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
6 <Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
7 </Filter>
8 <Filter Include="Header Files">
9 <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
10 <Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
11 </Filter>
12 <Filter Include="Resource Files">
13 <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
14 <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
15 </Filter>
16 </ItemGroup>
17 <ItemGroup>
18 <ClInclude Include="framework.h">
19 <Filter>Header Files</Filter>
20 </ClInclude>
21 <ClInclude Include="pch.h">
22 <Filter>Header Files</Filter>
23 </ClInclude>
24 </ItemGroup>
25 <ItemGroup>
26 <ClCompile Include="VcxprojStaticLib.cpp">
27 <Filter>Source Files</Filter>
28 </ClCompile>
29 <ClCompile Include="pch.cpp">
30 <Filter>Source Files</Filter>
31 </ClCompile>
32 </ItemGroup>
33</Project> \ No newline at end of file
diff --git a/src/test/wix/TestData/VcxprojStaticLib/framework.h b/src/test/wix/TestData/VcxprojStaticLib/framework.h
new file mode 100644
index 00000000..3209b4ab
--- /dev/null
+++ b/src/test/wix/TestData/VcxprojStaticLib/framework.h
@@ -0,0 +1,3 @@
1#pragma once
2
3#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
diff --git a/src/test/wix/TestData/VcxprojStaticLib/pch.cpp b/src/test/wix/TestData/VcxprojStaticLib/pch.cpp
new file mode 100644
index 00000000..64b7eef6
--- /dev/null
+++ b/src/test/wix/TestData/VcxprojStaticLib/pch.cpp
@@ -0,0 +1,5 @@
1// pch.cpp: source file corresponding to the pre-compiled header
2
3#include "pch.h"
4
5// When you are using pre-compiled headers, this source file is necessary for compilation to succeed.
diff --git a/src/test/wix/TestData/VcxprojStaticLib/pch.h b/src/test/wix/TestData/VcxprojStaticLib/pch.h
new file mode 100644
index 00000000..885d5d62
--- /dev/null
+++ b/src/test/wix/TestData/VcxprojStaticLib/pch.h
@@ -0,0 +1,13 @@
1// pch.h: This is a precompiled header file.
2// Files listed below are compiled only once, improving build performance for future builds.
3// This also affects IntelliSense performance, including code completion and many code browsing features.
4// However, files listed here are ALL re-compiled if any one of them is updated between builds.
5// Do not add files here that you will be updating frequently as this negates the performance advantage.
6
7#ifndef PCH_H
8#define PCH_H
9
10// add headers that you want to pre-compile here
11#include "framework.h"
12
13#endif //PCH_H
diff --git a/src/test/wix/TestData/VcxprojWindowsApp/Resource.h b/src/test/wix/TestData/VcxprojWindowsApp/Resource.h
new file mode 100644
index 00000000..2bd1d146
--- /dev/null
+++ b/src/test/wix/TestData/VcxprojWindowsApp/Resource.h
@@ -0,0 +1,30 @@
1//{{NO_DEPENDENCIES}}
2// Microsoft Visual C++ generated include file.
3// Used by VcxprojWindowsApp.rc
4
5#define IDS_APP_TITLE 103
6
7#define IDR_MAINFRAME 128
8#define IDD_VCXPROJWINDOWSAPP_DIALOG 102
9#define IDD_ABOUTBOX 103
10#define IDM_ABOUT 104
11#define IDM_EXIT 105
12#define IDI_VCXPROJWINDOWSAPP 107
13#define IDI_SMALL 108
14#define IDC_VCXPROJWINDOWSAPP 109
15#define IDC_MYICON 2
16#ifndef IDC_STATIC
17#define IDC_STATIC -1
18#endif
19// Next default values for new objects
20//
21#ifdef APSTUDIO_INVOKED
22#ifndef APSTUDIO_READONLY_SYMBOLS
23
24#define _APS_NO_MFC 130
25#define _APS_NEXT_RESOURCE_VALUE 129
26#define _APS_NEXT_COMMAND_VALUE 32771
27#define _APS_NEXT_CONTROL_VALUE 1000
28#define _APS_NEXT_SYMED_VALUE 110
29#endif
30#endif
diff --git a/src/test/wix/TestData/VcxprojWindowsApp/VcxprojWindowsApp.cpp b/src/test/wix/TestData/VcxprojWindowsApp/VcxprojWindowsApp.cpp
new file mode 100644
index 00000000..4b14d3f5
--- /dev/null
+++ b/src/test/wix/TestData/VcxprojWindowsApp/VcxprojWindowsApp.cpp
@@ -0,0 +1,180 @@
1// VcxprojWindowsApp.cpp : Defines the entry point for the application.
2//
3
4#include "framework.h"
5#include "VcxprojWindowsApp.h"
6
7#define MAX_LOADSTRING 100
8
9// Global Variables:
10HINSTANCE hInst; // current instance
11WCHAR szTitle[MAX_LOADSTRING]; // The title bar text
12WCHAR szWindowClass[MAX_LOADSTRING]; // the main window class name
13
14// Forward declarations of functions included in this code module:
15ATOM MyRegisterClass(HINSTANCE hInstance);
16BOOL InitInstance(HINSTANCE, int);
17LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
18INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM);
19
20int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
21 _In_opt_ HINSTANCE hPrevInstance,
22 _In_ LPWSTR lpCmdLine,
23 _In_ int nCmdShow)
24{
25 UNREFERENCED_PARAMETER(hPrevInstance);
26 UNREFERENCED_PARAMETER(lpCmdLine);
27
28 // TODO: Place code here.
29
30 // Initialize global strings
31 LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
32 LoadStringW(hInstance, IDC_VCXPROJWINDOWSAPP, szWindowClass, MAX_LOADSTRING);
33 MyRegisterClass(hInstance);
34
35 // Perform application initialization:
36 if (!InitInstance (hInstance, nCmdShow))
37 {
38 return FALSE;
39 }
40
41 HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_VCXPROJWINDOWSAPP));
42
43 MSG msg;
44
45 // Main message loop:
46 while (GetMessage(&msg, nullptr, 0, 0))
47 {
48 if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
49 {
50 TranslateMessage(&msg);
51 DispatchMessage(&msg);
52 }
53 }
54
55 return (int) msg.wParam;
56}
57
58
59
60//
61// FUNCTION: MyRegisterClass()
62//
63// PURPOSE: Registers the window class.
64//
65ATOM MyRegisterClass(HINSTANCE hInstance)
66{
67 WNDCLASSEXW wcex;
68
69 wcex.cbSize = sizeof(WNDCLASSEX);
70
71 wcex.style = CS_HREDRAW | CS_VREDRAW;
72 wcex.lpfnWndProc = WndProc;
73 wcex.cbClsExtra = 0;
74 wcex.cbWndExtra = 0;
75 wcex.hInstance = hInstance;
76 wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_VCXPROJWINDOWSAPP));
77 wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
78 wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
79 wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_VCXPROJWINDOWSAPP);
80 wcex.lpszClassName = szWindowClass;
81 wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
82
83 return RegisterClassExW(&wcex);
84}
85
86//
87// FUNCTION: InitInstance(HINSTANCE, int)
88//
89// PURPOSE: Saves instance handle and creates main window
90//
91// COMMENTS:
92//
93// In this function, we save the instance handle in a global variable and
94// create and display the main program window.
95//
96BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
97{
98 hInst = hInstance; // Store instance handle in our global variable
99
100 HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
101 CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);
102
103 if (!hWnd)
104 {
105 return FALSE;
106 }
107
108 ShowWindow(hWnd, nCmdShow);
109 UpdateWindow(hWnd);
110
111 return TRUE;
112}
113
114//
115// FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM)
116//
117// PURPOSE: Processes messages for the main window.
118//
119// WM_COMMAND - process the application menu
120// WM_PAINT - Paint the main window
121// WM_DESTROY - post a quit message and return
122//
123//
124LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
125{
126 switch (message)
127 {
128 case WM_COMMAND:
129 {
130 int wmId = LOWORD(wParam);
131 // Parse the menu selections:
132 switch (wmId)
133 {
134 case IDM_ABOUT:
135 DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
136 break;
137 case IDM_EXIT:
138 DestroyWindow(hWnd);
139 break;
140 default:
141 return DefWindowProc(hWnd, message, wParam, lParam);
142 }
143 }
144 break;
145 case WM_PAINT:
146 {
147 PAINTSTRUCT ps;
148 HDC hdc = BeginPaint(hWnd, &ps);
149 // TODO: Add any drawing code that uses hdc here...
150 EndPaint(hWnd, &ps);
151 }
152 break;
153 case WM_DESTROY:
154 PostQuitMessage(0);
155 break;
156 default:
157 return DefWindowProc(hWnd, message, wParam, lParam);
158 }
159 return 0;
160}
161
162// Message handler for about box.
163INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
164{
165 UNREFERENCED_PARAMETER(lParam);
166 switch (message)
167 {
168 case WM_INITDIALOG:
169 return (INT_PTR)TRUE;
170
171 case WM_COMMAND:
172 if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
173 {
174 EndDialog(hDlg, LOWORD(wParam));
175 return (INT_PTR)TRUE;
176 }
177 break;
178 }
179 return (INT_PTR)FALSE;
180}
diff --git a/src/test/wix/TestData/VcxprojWindowsApp/VcxprojWindowsApp.h b/src/test/wix/TestData/VcxprojWindowsApp/VcxprojWindowsApp.h
new file mode 100644
index 00000000..d00d47e7
--- /dev/null
+++ b/src/test/wix/TestData/VcxprojWindowsApp/VcxprojWindowsApp.h
@@ -0,0 +1,3 @@
1#pragma once
2
3#include "resource.h"
diff --git a/src/test/wix/TestData/VcxprojWindowsApp/VcxprojWindowsApp.ico b/src/test/wix/TestData/VcxprojWindowsApp/VcxprojWindowsApp.ico
new file mode 100644
index 00000000..b3ec03bd
--- /dev/null
+++ b/src/test/wix/TestData/VcxprojWindowsApp/VcxprojWindowsApp.ico
Binary files differ
diff --git a/src/test/wix/TestData/VcxprojWindowsApp/VcxprojWindowsApp.rc b/src/test/wix/TestData/VcxprojWindowsApp/VcxprojWindowsApp.rc
new file mode 100644
index 00000000..af7dc516
--- /dev/null
+++ b/src/test/wix/TestData/VcxprojWindowsApp/VcxprojWindowsApp.rc
Binary files differ
diff --git a/src/test/wix/TestData/VcxprojWindowsApp/VcxprojWindowsApp.vcxproj b/src/test/wix/TestData/VcxprojWindowsApp/VcxprojWindowsApp.vcxproj
new file mode 100644
index 00000000..25e748a6
--- /dev/null
+++ b/src/test/wix/TestData/VcxprojWindowsApp/VcxprojWindowsApp.vcxproj
@@ -0,0 +1,160 @@
1<?xml version="1.0" encoding="utf-8"?>
2<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3 <ItemGroup Label="ProjectConfigurations">
4 <ProjectConfiguration Include="Debug|Win32">
5 <Configuration>Debug</Configuration>
6 <Platform>Win32</Platform>
7 </ProjectConfiguration>
8 <ProjectConfiguration Include="Release|Win32">
9 <Configuration>Release</Configuration>
10 <Platform>Win32</Platform>
11 </ProjectConfiguration>
12 <ProjectConfiguration Include="Debug|x64">
13 <Configuration>Debug</Configuration>
14 <Platform>x64</Platform>
15 </ProjectConfiguration>
16 <ProjectConfiguration Include="Release|x64">
17 <Configuration>Release</Configuration>
18 <Platform>x64</Platform>
19 </ProjectConfiguration>
20 </ItemGroup>
21 <PropertyGroup Label="Globals">
22 <VCProjectVersion>16.0</VCProjectVersion>
23 <Keyword>Win32Proj</Keyword>
24 <ProjectGuid>{8f2a12cd-6d3b-4648-81a9-2a852a63ea90}</ProjectGuid>
25 <RootNamespace>VcxprojWindowsApp</RootNamespace>
26 <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
27 </PropertyGroup>
28 <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
29 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
30 <ConfigurationType>Application</ConfigurationType>
31 <UseDebugLibraries>true</UseDebugLibraries>
32 <PlatformToolset>v142</PlatformToolset>
33 <CharacterSet>Unicode</CharacterSet>
34 </PropertyGroup>
35 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
36 <ConfigurationType>Application</ConfigurationType>
37 <UseDebugLibraries>false</UseDebugLibraries>
38 <PlatformToolset>v142</PlatformToolset>
39 <WholeProgramOptimization>true</WholeProgramOptimization>
40 <CharacterSet>Unicode</CharacterSet>
41 </PropertyGroup>
42 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
43 <ConfigurationType>Application</ConfigurationType>
44 <UseDebugLibraries>true</UseDebugLibraries>
45 <PlatformToolset>v142</PlatformToolset>
46 <CharacterSet>Unicode</CharacterSet>
47 </PropertyGroup>
48 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
49 <ConfigurationType>Application</ConfigurationType>
50 <UseDebugLibraries>false</UseDebugLibraries>
51 <PlatformToolset>v142</PlatformToolset>
52 <WholeProgramOptimization>true</WholeProgramOptimization>
53 <CharacterSet>Unicode</CharacterSet>
54 </PropertyGroup>
55 <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
56 <ImportGroup Label="ExtensionSettings">
57 </ImportGroup>
58 <ImportGroup Label="Shared">
59 </ImportGroup>
60 <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
61 <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
62 </ImportGroup>
63 <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
64 <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
65 </ImportGroup>
66 <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
67 <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
68 </ImportGroup>
69 <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
70 <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
71 </ImportGroup>
72 <PropertyGroup Label="UserMacros" />
73 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
74 <LinkIncremental>true</LinkIncremental>
75 </PropertyGroup>
76 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
77 <LinkIncremental>false</LinkIncremental>
78 </PropertyGroup>
79 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
80 <LinkIncremental>true</LinkIncremental>
81 </PropertyGroup>
82 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
83 <LinkIncremental>false</LinkIncremental>
84 </PropertyGroup>
85 <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
86 <ClCompile>
87 <WarningLevel>Level3</WarningLevel>
88 <SDLCheck>true</SDLCheck>
89 <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
90 <ConformanceMode>true</ConformanceMode>
91 </ClCompile>
92 <Link>
93 <SubSystem>Windows</SubSystem>
94 <GenerateDebugInformation>true</GenerateDebugInformation>
95 </Link>
96 </ItemDefinitionGroup>
97 <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
98 <ClCompile>
99 <WarningLevel>Level3</WarningLevel>
100 <FunctionLevelLinking>true</FunctionLevelLinking>
101 <IntrinsicFunctions>true</IntrinsicFunctions>
102 <SDLCheck>true</SDLCheck>
103 <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
104 <ConformanceMode>true</ConformanceMode>
105 </ClCompile>
106 <Link>
107 <SubSystem>Windows</SubSystem>
108 <EnableCOMDATFolding>true</EnableCOMDATFolding>
109 <OptimizeReferences>true</OptimizeReferences>
110 <GenerateDebugInformation>true</GenerateDebugInformation>
111 </Link>
112 </ItemDefinitionGroup>
113 <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
114 <ClCompile>
115 <WarningLevel>Level3</WarningLevel>
116 <SDLCheck>true</SDLCheck>
117 <PreprocessorDefinitions>_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
118 <ConformanceMode>true</ConformanceMode>
119 </ClCompile>
120 <Link>
121 <SubSystem>Windows</SubSystem>
122 <GenerateDebugInformation>true</GenerateDebugInformation>
123 </Link>
124 </ItemDefinitionGroup>
125 <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
126 <ClCompile>
127 <WarningLevel>Level3</WarningLevel>
128 <FunctionLevelLinking>true</FunctionLevelLinking>
129 <IntrinsicFunctions>true</IntrinsicFunctions>
130 <SDLCheck>true</SDLCheck>
131 <PreprocessorDefinitions>NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
132 <ConformanceMode>true</ConformanceMode>
133 </ClCompile>
134 <Link>
135 <SubSystem>Windows</SubSystem>
136 <EnableCOMDATFolding>true</EnableCOMDATFolding>
137 <OptimizeReferences>true</OptimizeReferences>
138 <GenerateDebugInformation>true</GenerateDebugInformation>
139 </Link>
140 </ItemDefinitionGroup>
141 <ItemGroup>
142 <ClInclude Include="framework.h" />
143 <ClInclude Include="Resource.h" />
144 <ClInclude Include="targetver.h" />
145 <ClInclude Include="VcxprojWindowsApp.h" />
146 </ItemGroup>
147 <ItemGroup>
148 <ClCompile Include="VcxprojWindowsApp.cpp" />
149 </ItemGroup>
150 <ItemGroup>
151 <ResourceCompile Include="VcxprojWindowsApp.rc" />
152 </ItemGroup>
153 <ItemGroup>
154 <Image Include="small.ico" />
155 <Image Include="VcxprojWindowsApp.ico" />
156 </ItemGroup>
157 <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
158 <ImportGroup Label="ExtensionTargets">
159 </ImportGroup>
160</Project> \ No newline at end of file
diff --git a/src/test/wix/TestData/VcxprojWindowsApp/VcxprojWindowsApp.vcxproj.filters b/src/test/wix/TestData/VcxprojWindowsApp/VcxprojWindowsApp.vcxproj.filters
new file mode 100644
index 00000000..6221dbea
--- /dev/null
+++ b/src/test/wix/TestData/VcxprojWindowsApp/VcxprojWindowsApp.vcxproj.filters
@@ -0,0 +1,49 @@
1<?xml version="1.0" encoding="utf-8"?>
2<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3 <ItemGroup>
4 <Filter Include="Source Files">
5 <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
6 <Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
7 </Filter>
8 <Filter Include="Header Files">
9 <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
10 <Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
11 </Filter>
12 <Filter Include="Resource Files">
13 <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
14 <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
15 </Filter>
16 </ItemGroup>
17 <ItemGroup>
18 <ClInclude Include="framework.h">
19 <Filter>Header Files</Filter>
20 </ClInclude>
21 <ClInclude Include="targetver.h">
22 <Filter>Header Files</Filter>
23 </ClInclude>
24 <ClInclude Include="Resource.h">
25 <Filter>Header Files</Filter>
26 </ClInclude>
27 <ClInclude Include="VcxprojWindowsApp.h">
28 <Filter>Header Files</Filter>
29 </ClInclude>
30 </ItemGroup>
31 <ItemGroup>
32 <ClCompile Include="VcxprojWindowsApp.cpp">
33 <Filter>Source Files</Filter>
34 </ClCompile>
35 </ItemGroup>
36 <ItemGroup>
37 <ResourceCompile Include="VcxprojWindowsApp.rc">
38 <Filter>Resource Files</Filter>
39 </ResourceCompile>
40 </ItemGroup>
41 <ItemGroup>
42 <Image Include="small.ico">
43 <Filter>Resource Files</Filter>
44 </Image>
45 <Image Include="VcxprojWindowsApp.ico">
46 <Filter>Resource Files</Filter>
47 </Image>
48 </ItemGroup>
49</Project> \ No newline at end of file
diff --git a/src/test/wix/TestData/VcxprojWindowsApp/framework.h b/src/test/wix/TestData/VcxprojWindowsApp/framework.h
new file mode 100644
index 00000000..33a6be64
--- /dev/null
+++ b/src/test/wix/TestData/VcxprojWindowsApp/framework.h
@@ -0,0 +1,15 @@
1// header.h : include file for standard system include files,
2// or project specific include files
3//
4
5#pragma once
6
7#include "targetver.h"
8#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
9// Windows Header Files
10#include <windows.h>
11// C RunTime Header Files
12#include <stdlib.h>
13#include <malloc.h>
14#include <memory.h>
15#include <tchar.h>
diff --git a/src/test/wix/TestData/VcxprojWindowsApp/small.ico b/src/test/wix/TestData/VcxprojWindowsApp/small.ico
new file mode 100644
index 00000000..b3ec03bd
--- /dev/null
+++ b/src/test/wix/TestData/VcxprojWindowsApp/small.ico
Binary files differ
diff --git a/src/test/wix/TestData/VcxprojWindowsApp/targetver.h b/src/test/wix/TestData/VcxprojWindowsApp/targetver.h
new file mode 100644
index 00000000..bf75e089
--- /dev/null
+++ b/src/test/wix/TestData/VcxprojWindowsApp/targetver.h
@@ -0,0 +1,6 @@
1#pragma once
2
3// // Including SDKDDKVer.h defines the highest available Windows platform.
4// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
5// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
6#include <SDKDDKVer.h>
diff --git a/src/test/wix/TestData/WixprojLibraryVcxprojDll/Library.wxs b/src/test/wix/TestData/WixprojLibraryVcxprojDll/Library.wxs
new file mode 100644
index 00000000..eed46112
--- /dev/null
+++ b/src/test/wix/TestData/WixprojLibraryVcxprojDll/Library.wxs
@@ -0,0 +1,11 @@
1<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
2 <Fragment>
3 <ComponentGroup Id='VcxprojDllComponentGroup' Directory='ApplicationFolder'>
4 <Component>
5 <File Source='VcxprojDll.dll' />
6 </Component>
7 </ComponentGroup>
8
9 <UIRef Id="WixUI_Minimal" />
10 </Fragment>
11</Wix>
diff --git a/src/test/wix/TestData/WixprojLibraryVcxprojDll/WixprojLibraryVcxprojDll.wixproj b/src/test/wix/TestData/WixprojLibraryVcxprojDll/WixprojLibraryVcxprojDll.wixproj
new file mode 100644
index 00000000..9470546f
--- /dev/null
+++ b/src/test/wix/TestData/WixprojLibraryVcxprojDll/WixprojLibraryVcxprojDll.wixproj
@@ -0,0 +1,11 @@
1<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
2<Project Sdk='WixToolset.Sdk'>
3 <PropertyGroup>
4 <OutputType>Library</OutputType>
5 <BindFiles>true</BindFiles>
6 </PropertyGroup>
7
8 <ItemGroup>
9 <ProjectReference Include="..\VcxprojDll\VcxprojDll.vcxproj" />
10 </ItemGroup>
11</Project>
diff --git a/src/test/wix/TestData/WixprojLibraryVcxprojDll/go.cmd b/src/test/wix/TestData/WixprojLibraryVcxprojDll/go.cmd
new file mode 100644
index 00000000..205fb749
--- /dev/null
+++ b/src/test/wix/TestData/WixprojLibraryVcxprojDll/go.cmd
@@ -0,0 +1,27 @@
1@setlocal
2cls
3cd %~dp0
4rd /s/q obj bin
5
6pushd D:\src\wix4\src\wix\WixToolset.Sdk
7msbuild
8popd
9
10pushd D:\src\wix4\src\test\wix\TestProjects\VcxprojStaticLib
11rd /s/q Debug x64
12popd
13
14pushd D:\src\wix4\src\test\wix\TestProjects\VcxprojDll
15rd /s/q Debug
16popd
17
18pushd D:\src\wix4\src\test\wix\TestProjects\CsprojClassLibraryNetCore
19rd /s/q obj bin
20popd
21
22pushd D:\src\wix4\src\test\wix\TestProjects\CsprojConsoleNetCore
23rd /s/q obj bin
24popd
25
26msbuild -Restore -bl
27@endlocal
diff --git a/src/test/wix/TestData/WixprojModuleCsprojWinFormsNetFx/Module.wxs b/src/test/wix/TestData/WixprojModuleCsprojWinFormsNetFx/Module.wxs
new file mode 100644
index 00000000..a0c32d25
--- /dev/null
+++ b/src/test/wix/TestData/WixprojModuleCsprojWinFormsNetFx/Module.wxs
@@ -0,0 +1,8 @@
1<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
2 <Module Id='CsprojWindowsFormsNetFxModule' Guid='00000001-0000-0000-0000-000000000000' Language='0' Version='0.0.1'>
3
4 <Component Guid='00000001-0000-0000-0000-000000000000' Directory='TARGETDIR'>
5 <File Source='CsprojWindowsFormsNetFx.exe' />
6 </Component>
7 </Module>
8</Wix>
diff --git a/src/test/wix/TestData/WixprojModuleCsprojWinFormsNetFx/WixprojModuleCsprojWinFormsNetFx.wixproj b/src/test/wix/TestData/WixprojModuleCsprojWinFormsNetFx/WixprojModuleCsprojWinFormsNetFx.wixproj
new file mode 100644
index 00000000..07e42b08
--- /dev/null
+++ b/src/test/wix/TestData/WixprojModuleCsprojWinFormsNetFx/WixprojModuleCsprojWinFormsNetFx.wixproj
@@ -0,0 +1,19 @@
1<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
2 <Project Sdk='WixToolset.Sdk'>
3<!--<Project>
4 <Import Sdk="WixToolset.Sdk" Project='D:\src\wix4\build\wix\Debug\netcoreapp3.1\Sdk\Sdk.props' />-->
5 <PropertyGroup>
6 <OutputType>Module</OutputType>
7 </PropertyGroup>
8
9 <!--<PropertyGroup>
10 <WixBinDir>D:\src\wix4\build\wix\Debug\publish\WixToolset.Sdk\tools\net461\x86\</WixBinDir>
11 <WixBinDir64>D:\src\wix4\build\wix\Debug\publish\WixToolset.Sdk\tools\net461\x64\</WixBinDir64>
12 </PropertyGroup>-->
13
14 <ItemGroup>
15 <ProjectReference Include="..\CsprojWindowsFormsNetFx\CsprojWindowsFormsNetFx.csproj" />
16 </ItemGroup>
17
18 <!--<Import Sdk="WixToolset.Sdk" Project='D:\src\wix4\build\wix\Debug\netcoreapp3.1\Sdk\Sdk.targets' />-->
19</Project>
diff --git a/src/test/wix/TestData/WixprojModuleCsprojWinFormsNetFx/go.cmd b/src/test/wix/TestData/WixprojModuleCsprojWinFormsNetFx/go.cmd
new file mode 100644
index 00000000..18ffaf8e
--- /dev/null
+++ b/src/test/wix/TestData/WixprojModuleCsprojWinFormsNetFx/go.cmd
@@ -0,0 +1,36 @@
1@setlocal
2cls
3cd %~dp0
4rd /s/q obj bin
5
6pushd D:\src\wix4\src\wix\WixToolset.Sdk
7msbuild
8popd
9
10pushd D:\src\wix4\src\test\wix\TestProjects\VcxprojStaticLib
11rd /s/q Debug x64
12popd
13
14pushd D:\src\wix4\src\test\wix\TestProjects\VcxprojDll
15rd /s/q Debug
16popd
17
18pushd D:\src\wix4\src\test\wix\TestProjects\CsprojClassLibraryNetCore
19rd /s/q obj bin
20popd
21
22pushd D:\src\wix4\src\test\wix\TestProjects\CsprojConsoleNetCore
23rd /s/q obj bin
24popd
25
26pushd D:\src\wix4\src\test\wix\TestProjects\WixprojLibraryVcxprojDll
27rd /s/q obj bin
28popd
29
30pushd D:\src\wix4\src\test\wix\TestProjects\WixprojPackageVcxprojWindowsApp
31rd /s/q obj bin
32popd
33
34rem msbuild.exe -Restore -bl -t:Rebuild
35msbuild.exe -Restore -bl
36@endlocal
diff --git a/src/test/wix/TestData/WixprojPackageCsprojWebApplicationNetCore/Package.wxs b/src/test/wix/TestData/WixprojPackageCsprojWebApplicationNetCore/Package.wxs
new file mode 100644
index 00000000..17a5b29b
--- /dev/null
+++ b/src/test/wix/TestData/WixprojPackageCsprojWebApplicationNetCore/Package.wxs
@@ -0,0 +1,18 @@
1<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
2 <Package Name='~WebApp' Manufacturer='WiX Toolset' Version='0.0.1' UpgradeCode='00000000-0000-0000-0000-000000000000'>
3
4 <StandardDirectory Id='ProgramFiles6432Folder'>
5 <Directory Id='ApplicationFolder' Name='~Web App'>
6 </Directory>
7 </StandardDirectory>
8
9 <Feature Id='Main' Title='WebApp'>
10 <Component Directory='ApplicationFolder'>
11 <File Source='CsprojWebApplicationNetCore.exe' />
12 <File Source='web.config' />
13 </Component>
14 </Feature>
15
16 <UIRef Id="WixUI_Minimal" />
17 </Package>
18</Wix>
diff --git a/src/test/wix/TestData/WixprojPackageCsprojWebApplicationNetCore/WixprojPackageCsprojWebApplicationNetCore.wixproj b/src/test/wix/TestData/WixprojPackageCsprojWebApplicationNetCore/WixprojPackageCsprojWebApplicationNetCore.wixproj
new file mode 100644
index 00000000..f9852465
--- /dev/null
+++ b/src/test/wix/TestData/WixprojPackageCsprojWebApplicationNetCore/WixprojPackageCsprojWebApplicationNetCore.wixproj
@@ -0,0 +1,18 @@
1<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
2<Project Sdk='WixToolset.Sdk'>
3<!-- <Project> -->
4 <!-- <Import Sdk="WixToolset.Sdk" Project='D:\src\wix4\build\wix\Debug\netcoreapp3.1\Sdk\Sdk.props' /> -->
5
6 <PropertyGroup>
7 <!-- <WixBinDir>D:\src\wix4\build\wix\Debug\net472\</WixBinDir> -->
8 <!-- <WixBinDir64>D:\src\wix4\build\wix\Debug\publish\WixToolset.Sdk\tools\net472\x64\</WixBinDir64> -->
9 </PropertyGroup>
10
11 <ItemGroup>
12 <!-- SkipPublish="true" BindPath="$(MSBuildProjectDirectory)\does\not\exist" BindName="Xxx" Publish="true" -->
13 <ProjectReference Include="..\CsprojWebApplicationNetCore\CsprojWebApplicationNetCore.csproj" Publish="true" />
14 <PackageReference Include="WixToolset.UI.wixext" Version="4.0.0-preview.0" />
15 </ItemGroup>
16
17 <!-- <Import Sdk="WixToolset.Sdk" Project='D:\src\wix4\build\wix\Debug\netcoreapp3.1\Sdk\Sdk.targets' /> -->
18</Project>
diff --git a/src/test/wix/TestData/WixprojPackageCsprojWebApplicationNetCore/go.cmd b/src/test/wix/TestData/WixprojPackageCsprojWebApplicationNetCore/go.cmd
new file mode 100644
index 00000000..95d48432
--- /dev/null
+++ b/src/test/wix/TestData/WixprojPackageCsprojWebApplicationNetCore/go.cmd
@@ -0,0 +1,23 @@
1@setlocal
2cls
3cd %~dp0
4rd /s/q obj bin
5
6pushd ..\CsprojWebApplicationNetCore
7rd /s/q obj bin
8popd
9
10pushd D:\src\wix4\src\wix\WixToolset.BuildTasks
11msbuild
12popd
13
14pushd D:\src\wix4\src\wix\WixToolset.Sdk
15msbuild -t:Publish -p:PublishDir=D:\src\wix4\build\wix\Debug\publish\WixToolset.Sdk\
16msbuild -t:Pack
17
18copy D:\src\wix4\build\artifacts\WixToolset.Sdk.*.nupkg D:\NugetLocal
19rd /s/q C:\Users\Rob\.nuget\packages\wixtoolset.sdk
20popd
21
22msbuild.exe -Restore -bl
23@endlocal
diff --git a/src/test/wix/TestData/WixprojPackageVcxprojWindowsApp/Package.en-us.wxl b/src/test/wix/TestData/WixprojPackageVcxprojWindowsApp/Package.en-us.wxl
new file mode 100644
index 00000000..6a53859c
--- /dev/null
+++ b/src/test/wix/TestData/WixprojPackageVcxprojWindowsApp/Package.en-us.wxl
@@ -0,0 +1,11 @@
1<?xml version="1.0" encoding="utf-8"?>
2
3<!--
4This file contains the declaration of all the localizable strings.
5-->
6<WixLocalization xmlns="http://wixtoolset.org/schemas/v4/wxl" Culture="en-US">
7
8 <String Id="PackageName">WixprojPackageVcxprojWindowsApp</String>
9 <String Id="FeatureTitle">The First Feature in my Product</String>
10
11</WixLocalization>
diff --git a/src/test/wix/TestData/WixprojPackageVcxprojWindowsApp/Package.ja-jp.wxl b/src/test/wix/TestData/WixprojPackageVcxprojWindowsApp/Package.ja-jp.wxl
new file mode 100644
index 00000000..52e1871e
--- /dev/null
+++ b/src/test/wix/TestData/WixprojPackageVcxprojWindowsApp/Package.ja-jp.wxl
@@ -0,0 +1,11 @@
1<?xml version="1.0" encoding="utf-8"?>
2
3<!--
4This file contains the declaration of all the localizable strings.
5-->
6<WixLocalization xmlns="http://wixtoolset.org/schemas/v4/wxl" Culture="ja-JP">
7
8 <String Id="PackageName">WixprojPackageVcxprojWindowsApp, eh?</String>
9 <String Id="FeatureTitle">The First Feature in my Prooooduct, eh?</String>
10
11</WixLocalization>
diff --git a/src/test/wix/TestData/WixprojPackageVcxprojWindowsApp/Package.wxs b/src/test/wix/TestData/WixprojPackageVcxprojWindowsApp/Package.wxs
new file mode 100644
index 00000000..00ef4d05
--- /dev/null
+++ b/src/test/wix/TestData/WixprojPackageVcxprojWindowsApp/Package.wxs
@@ -0,0 +1,22 @@
1<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
2 <Package Name='!(loc.PackageName)' Manufacturer='WiX Toolset' Version='0.0.1' UpgradeCode='00000000-0000-0000-0000-000000000000'>
3
4 <StandardDirectory Id='ProgramFiles6432Folder'>
5 <Directory Id='ApplicationFolder' Name='Test App'>
6 <Merge Id='WinFormsModule' Language='0' SourceFile='WixprojModuleCsprojWinFormsNetFx.msm' />
7 </Directory>
8 </StandardDirectory>
9
10 <Feature Id='Main' Title='!(loc.FeatureTitle)'>
11 <Component Directory='ApplicationFolder'>
12 <File Id='VcxprojWindowsApp' Source='VcxprojWindowsApp.exe' />
13 </Component>
14
15 <ComponentGroupRef Id='VcxprojDllComponentGroup' />
16
17 <MergeRef Id='WinFormsModule' />
18 </Feature>
19
20 <UIRef Id="WixUI_Minimal" />
21 </Package>
22</Wix>
diff --git a/src/test/wix/TestData/WixprojPackageVcxprojWindowsApp/WixprojPackageVcxprojWindowsApp.wixproj b/src/test/wix/TestData/WixprojPackageVcxprojWindowsApp/WixprojPackageVcxprojWindowsApp.wixproj
new file mode 100644
index 00000000..84deecb6
--- /dev/null
+++ b/src/test/wix/TestData/WixprojPackageVcxprojWindowsApp/WixprojPackageVcxprojWindowsApp.wixproj
@@ -0,0 +1,11 @@
1<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
2
3<Project Sdk='WixToolset.Sdk'>
4 <ItemGroup>
5 <ProjectReference Include="..\VcxprojWindowsApp\VcxprojWindowsApp.vcxproj" />
6 <ProjectReference Include="..\WixprojLibraryVcxprojDll\WixprojLibraryVcxprojDll.wixproj" />
7 <ProjectReference Include="..\WixprojModuleCsprojWinFormsNetFx\WixprojModuleCsprojWinFormsNetFx.wixproj" />
8
9 <PackageReference Include="WixToolset.UI.wixext" Version="4.0.0-preview.0" />
10 </ItemGroup>
11</Project>
diff --git a/src/test/wix/TestData/WixprojPackageVcxprojWindowsApp/go.cmd b/src/test/wix/TestData/WixprojPackageVcxprojWindowsApp/go.cmd
new file mode 100644
index 00000000..77aeefb9
--- /dev/null
+++ b/src/test/wix/TestData/WixprojPackageVcxprojWindowsApp/go.cmd
@@ -0,0 +1,44 @@
1@setlocal
2cls
3cd %~dp0
4rd /s/q obj bin
5
6pushd D:\src\wix4\src\wix\WixToolset.Sdk
7msbuild
8rem msbuild -t:Publish -p:PublishDir=D:\src\wix4\build\wix\Debug\publish\WixToolset.Sdk\
9rem msbuild -t:Pack
10rem copy D:\src\wix4\build\artifacts\WixToolset.Sdk.*.nupkg D:\NugetLocal
11rd /s/q C:\Users\Rob\.nuget\packages\wixtoolset.sdk
12popd
13
14pushd D:\src\wix4\src\test\wix\TestProjects\VcxprojStaticLib
15rd /s/q Debug x64
16popd
17
18pushd D:\src\wix4\src\test\wix\TestProjects\VcxprojDll
19rd /s/q Debug
20popd
21
22pushd D:\src\wix4\src\test\wix\TestProjects\CsprojClassLibraryNetCore
23rd /s/q obj bin
24popd
25
26pushd D:\src\wix4\src\test\wix\TestProjects\CsprojConsoleNetCore
27rd /s/q obj bin
28popd
29
30pushd D:\src\wix4\src\test\wix\TestProjects\WixprojLibraryVcxprojDll
31rd /s/q obj bin
32popd
33
34pushd D:\src\wix4\src\test\wix\TestProjects\WixprojModuleCsprojWinFormsNetFx
35rd /s/q obj bin
36popd
37
38pushd D:\src\wix4\src\test\wix\TestProjects\WixprojPackageVcxprojWindowsApp
39rd /s/q obj bin
40popd
41
42rem msbuild.exe -Restore -bl -t:Rebuild
43msbuild.exe -Restore -bl
44@endlocal
diff --git a/src/test/wix/TestData/WixprojPackageVcxprojWindowsAppMultiArch/Package.wxs b/src/test/wix/TestData/WixprojPackageVcxprojWindowsAppMultiArch/Package.wxs
new file mode 100644
index 00000000..9d3df756
--- /dev/null
+++ b/src/test/wix/TestData/WixprojPackageVcxprojWindowsAppMultiArch/Package.wxs
@@ -0,0 +1,23 @@
1<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
2 <Package Name='WixprojPackageVcxprojWindowsApp' Manufacturer='WiX Toolset' Version='0.0.1' UpgradeCode='00000000-0000-0000-0000-000000000000'>
3
4 <StandardDirectory Id='ProgramFilesFolder'>
5 <Directory Id='Application32Folder' Name='Test App (32-bit)' />
6 </StandardDirectory>
7
8 <StandardDirectory Id='ProgramFiles64Folder'>
9 <Directory Id='Application64Folder' Name='Test App (64-bit)' />
10 </StandardDirectory>
11
12 <Feature Id='Main'>
13 <Component Directory='Application32Folder'>
14 <File Source='..\VcxprojWindowsApp\Debug\VcxprojWindowsApp.exe' />
15 </Component>
16 <Component Directory='Application64Folder'>
17 <File Source='..\VcxprojWindowsApp\x64\Debug\VcxprojWindowsApp.exe' />
18 </Component>
19
20 <!-- <ComponentGroupRef Id='VcxprojDllComponentGroup' /> -->
21 </Feature>
22 </Package>
23</Wix>
diff --git a/src/test/wix/TestData/WixprojPackageVcxprojWindowsAppMultiArch/WixprojPackageVcxprojWindowsAppMultiArch.wixproj b/src/test/wix/TestData/WixprojPackageVcxprojWindowsAppMultiArch/WixprojPackageVcxprojWindowsAppMultiArch.wixproj
new file mode 100644
index 00000000..735b029d
--- /dev/null
+++ b/src/test/wix/TestData/WixprojPackageVcxprojWindowsAppMultiArch/WixprojPackageVcxprojWindowsAppMultiArch.wixproj
@@ -0,0 +1,10 @@
1<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
2<Project Sdk="WixToolset.Sdk">
3 <ItemGroup>
4 <ProjectReference Include="..\VcxprojDll\VcxprojDll.vcxproj" Properties="Platform=Win32" />
5 <ProjectReference Include="..\VcxprojDll\VcxprojDll.vcxproj" Properties="Platform=x64" />
6 <ProjectReference Include="..\VcxprojWindowsApp\VcxprojWindowsApp.vcxproj" Properties="Platform=Win32" />
7 <ProjectReference Include="..\VcxprojWindowsApp\VcxprojWindowsApp.vcxproj" Properties="Platform=x64" />
8 <!-- <ProjectReference Include="..\WixprojLibraryVcxprojDll\WixprojLibraryVcxprojDll.wixproj" /> -->
9 </ItemGroup>
10</Project>
diff --git a/src/test/wix/WixE2E/WixE2E.csproj b/src/test/wix/WixE2E/WixE2E.csproj
new file mode 100644
index 00000000..21e1f9f2
--- /dev/null
+++ b/src/test/wix/WixE2E/WixE2E.csproj
@@ -0,0 +1,26 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
4<Project Sdk="Microsoft.NET.Sdk">
5 <PropertyGroup>
6 <TargetFramework>net472</TargetFramework>
7 <IsPackable>false</IsPackable>
8 <DebugType>embedded</DebugType>
9 <SignOutput>false</SignOutput>
10 </PropertyGroup>
11
12 <ItemGroup>
13 <Content Include="..\..\..\global.json" CopyToOutputDirectory="PreserveNewest" />
14 <Content Include="..\TestData\**" CopyToOutputDirectory="PreserveNewest" Link="TestData\%(RecursiveDir)%(Filename)%(Extension)" />
15 </ItemGroup>
16
17 <ItemGroup>
18 <PackageReference Include="WixBuildTools.TestSupport" />
19 </ItemGroup>
20
21 <ItemGroup>
22 <PackageReference Include="Microsoft.NET.Test.Sdk" />
23 <PackageReference Include="xunit" />
24 <PackageReference Include="xunit.runner.visualstudio" PrivateAssets="all" />
25 </ItemGroup>
26</Project>
diff --git a/src/test/wix/WixE2E/WixE2EFixture.cs b/src/test/wix/WixE2E/WixE2EFixture.cs
new file mode 100644
index 00000000..89762f72
--- /dev/null
+++ b/src/test/wix/WixE2E/WixE2EFixture.cs
@@ -0,0 +1,79 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3namespace WixE2E
4{
5 using System.IO;
6 using WixBuildTools.TestSupport;
7 using Xunit;
8
9 public class WixE2EFixture
10 {
11 [Fact]
12 public void CanBuildWixlibWithNativeDll()
13 {
14 var projectPath = TestData.Get("TestData", "WixprojLibraryVcxprojDll", "WixprojLibraryVcxprojDll.wixproj");
15
16 CleanEverything();
17
18 var result = RestoreAndBuild(projectPath);
19 result.AssertSuccess();
20 }
21
22 [Fact]
23 public void CanBuildModuleWithWinFormsApp()
24 {
25 var projectPath = TestData.Get("TestData", "WixprojModuleCsprojWinFormsNetFx", "WixprojModuleCsprojWinFormsNetFx.wixproj");
26
27 CleanEverything();
28
29 var result = RestoreAndBuild(projectPath);
30 result.AssertSuccess();
31 }
32
33 [Fact]
34 public void CanBuildPackageWithWebApp()
35 {
36 var projectPath = TestData.Get("TestData", "WixprojPackageCsprojWebApplicationNetCore", "WixprojPackageCsprojWebApplicationNetCore.wixproj");
37
38 CleanEverything();
39
40 var result = RestoreAndBuild(projectPath);
41 result.AssertSuccess();
42 }
43
44 [Fact]
45 public void CanBuildPackageWithNativeWindowsApp()
46 {
47 var projectPath = TestData.Get("TestData", "WixprojPackageVcxprojWindowsApp", "WixprojPackageVcxprojWindowsApp.wixproj");
48
49 CleanEverything();
50
51 var result = RestoreAndBuild(projectPath);
52 result.AssertSuccess();
53 }
54
55 private static void CleanEverything()
56 {
57 var rootFolder = TestData.Get("TestData");
58 var deleteFolders = new[] { "Debug", "bin", "obj" };
59
60 foreach (var projectFolder in Directory.GetDirectories(rootFolder))
61 {
62 foreach (var deleteFolder in deleteFolders)
63 {
64 var folder = Path.Combine(projectFolder, deleteFolder);
65
66 if (Directory.Exists(folder))
67 {
68 Directory.Delete(folder, true);
69 }
70 }
71 }
72 }
73
74 private static MsbuildRunnerResult RestoreAndBuild(string projectPath, bool x64 = true)
75 {
76 return MsbuildRunner.Execute(projectPath, new[] { "-Restore", "-v:m", "-bl" }, x64);
77 }
78 }
79}
diff --git a/src/test/wix/WixE2ETests.sln b/src/test/wix/WixE2ETests.sln
new file mode 100644
index 00000000..3e5a2d1d
--- /dev/null
+++ b/src/test/wix/WixE2ETests.sln
@@ -0,0 +1,22 @@
1
2Microsoft Visual Studio Solution File, Format Version 12.00
3# Visual Studio Version 16
4VisualStudioVersion = 16.0.30114.105
5MinimumVisualStudioVersion = 10.0.40219.1
6Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixE2E", "WixE2E\WixE2E.csproj", "{6575BF70-BF0F-4477-8A22-1B2D50FDE2BA}"
7EndProject
8Global
9 GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 Debug|Any CPU = Debug|Any CPU
11 Release|Any CPU = Release|Any CPU
12 EndGlobalSection
13 GlobalSection(SolutionProperties) = preSolution
14 HideSolutionNode = FALSE
15 EndGlobalSection
16 GlobalSection(ProjectConfigurationPlatforms) = postSolution
17 {6575BF70-BF0F-4477-8A22-1B2D50FDE2BA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
18 {6575BF70-BF0F-4477-8A22-1B2D50FDE2BA}.Debug|Any CPU.Build.0 = Debug|Any CPU
19 {6575BF70-BF0F-4477-8A22-1B2D50FDE2BA}.Release|Any CPU.ActiveCfg = Release|Any CPU
20 {6575BF70-BF0F-4477-8A22-1B2D50FDE2BA}.Release|Any CPU.Build.0 = Release|Any CPU
21 EndGlobalSection
22EndGlobal
diff --git a/src/test/wix/WixE2ETests.v3.ncrunchsolution b/src/test/wix/WixE2ETests.v3.ncrunchsolution
new file mode 100644
index 00000000..10420ac9
--- /dev/null
+++ b/src/test/wix/WixE2ETests.v3.ncrunchsolution
@@ -0,0 +1,6 @@
1<SolutionConfiguration>
2 <Settings>
3 <AllowParallelTestExecution>True</AllowParallelTestExecution>
4 <SolutionConfigured>True</SolutionConfigured>
5 </Settings>
6</SolutionConfiguration> \ No newline at end of file